summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--FILES.byname636
-rw-r--r--FILES.byname.gzbin2663912 -> 2663902 bytes
-rw-r--r--FILES.last07days445
-rw-r--r--biblio/ctan-bibdata/ctan.bib54
-rw-r--r--graphics/pgf/contrib/lie-hasse/README4
-rw-r--r--graphics/pgf/contrib/lie-hasse/lie-hasse.pdfbin573306 -> 631928 bytes
-rw-r--r--graphics/pgf/contrib/lie-hasse/lie-hasse.sty976
-rw-r--r--graphics/pgf/contrib/lie-hasse/lie-hasse.tex123
-rw-r--r--graphics/pstricks/base/Changes4
-rw-r--r--graphics/pstricks/base/doc/pst-news24.pdfbin98554 -> 99744 bytes
-rw-r--r--graphics/pstricks/base/doc/pst-news24.tex6
-rw-r--r--graphics/pstricks/base/doc/pstricks-bug.tex6
-rw-r--r--graphics/pstricks/base/generic/pstricks.tex27
-rw-r--r--info/knuth-hint/README.md2
-rw-r--r--info/knuth-hint/bibtex/bibtex-changes.hntbin620033 -> 620020 bytes
-rw-r--r--info/knuth-hint/bibtex/bibtex.hntbin745156 -> 745144 bytes
-rw-r--r--info/knuth-hint/ctie/ctie-changes.hntbin444875 -> 444867 bytes
-rw-r--r--info/knuth-hint/ctie/ctie.hntbin453729 -> 453833 bytes
-rw-r--r--info/knuth-hint/cweb/common-changes.hntbin476803 -> 476784 bytes
-rw-r--r--info/knuth-hint/cweb/common.hntbin548944 -> 549042 bytes
-rw-r--r--info/knuth-hint/cweb/ctangle-changes.hntbin470999 -> 470989 bytes
-rw-r--r--info/knuth-hint/cweb/ctangle.hntbin487685 -> 487785 bytes
-rw-r--r--info/knuth-hint/cweb/ctwill.hntbin828138 -> 828110 bytes
-rw-r--r--info/knuth-hint/cweb/cweave-changes.hntbin568460 -> 568458 bytes
-rw-r--r--info/knuth-hint/cweb/cweave.hntbin712329 -> 712514 bytes
-rw-r--r--info/knuth-hint/cweb/cwebman.hntbin730712 -> 731032 bytes
-rw-r--r--info/knuth-hint/cweb/refsort-changes.hntbin383065 -> 383053 bytes
-rw-r--r--info/knuth-hint/cweb/refsort.hntbin418778 -> 418765 bytes
-rw-r--r--info/knuth-hint/cweb/twinx-changes.hntbin393447 -> 393438 bytes
-rw-r--r--info/knuth-hint/cweb/twinx.hntbin394218 -> 394206 bytes
-rw-r--r--info/knuth-hint/errata/errata.eight.hntbin806109 -> 806105 bytes
-rw-r--r--info/knuth-hint/errata/errata.eleven.hntbin824010 -> 824007 bytes
-rw-r--r--info/knuth-hint/errata/errata.five.hntbin789118 -> 789103 bytes
-rw-r--r--info/knuth-hint/errata/errata.four.hntbin948482 -> 948479 bytes
-rw-r--r--info/knuth-hint/errata/errata.hntbin904968 -> 904965 bytes
-rw-r--r--info/knuth-hint/errata/errata.nine.hntbin407769 -> 407766 bytes
-rw-r--r--info/knuth-hint/errata/errata.one.hntbin733434 -> 733431 bytes
-rw-r--r--info/knuth-hint/errata/errata.seven.hntbin741537 -> 741534 bytes
-rw-r--r--info/knuth-hint/errata/errata.six.hntbin909790 -> 909786 bytes
-rw-r--r--info/knuth-hint/errata/errata.ten.hntbin1057100 -> 1057095 bytes
-rw-r--r--info/knuth-hint/errata/errata.three.hntbin1158528 -> 1158523 bytes
-rw-r--r--info/knuth-hint/errata/errata.twelve.hntbin1107169 -> 1107166 bytes
-rw-r--r--info/knuth-hint/errata/errata.two.hntbin728931 -> 728926 bytes
-rw-r--r--info/knuth-hint/errata/errorlog.hntbin601780 -> 601777 bytes
-rw-r--r--info/knuth-hint/etc/vftovp-changes.hntbin402219 -> 402211 bytes
-rw-r--r--info/knuth-hint/etc/vftovp.hntbin519890 -> 519878 bytes
-rw-r--r--info/knuth-hint/etc/vptovf-changes.hntbin391100 -> 391090 bytes
-rw-r--r--info/knuth-hint/etc/vptovf.hntbin588039 -> 588023 bytes
-rw-r--r--info/knuth-hint/hitex/hitex.hntbin2128389 -> 2128059 bytes
-rw-r--r--info/knuth-hint/index.html5
-rw-r--r--info/knuth-hint/index.pdfbin151691 -> 151802 bytes
-rw-r--r--info/knuth-hint/mf/mf-changes.hntbin817887 -> 817883 bytes
-rw-r--r--info/knuth-hint/mf/mf.hntbin1568620 -> 1568599 bytes
-rw-r--r--info/knuth-hint/mf/trapman.hntbin466177 -> 466175 bytes
-rw-r--r--info/knuth-hint/mfware/gftodvi-changes.hntbin510418 -> 510409 bytes
-rw-r--r--info/knuth-hint/mfware/gftodvi.hntbin696337 -> 696325 bytes
-rw-r--r--info/knuth-hint/mfware/gftopk-changes.hntbin411335 -> 411326 bytes
-rw-r--r--info/knuth-hint/mfware/gftopk.hntbin492269 -> 492258 bytes
-rw-r--r--info/knuth-hint/mfware/gftype-changes.hntbin406835 -> 406825 bytes
-rw-r--r--info/knuth-hint/mfware/gftype.hntbin503532 -> 503518 bytes
-rw-r--r--info/knuth-hint/mfware/mft-changes.hntbin444602 -> 444596 bytes
-rw-r--r--info/knuth-hint/mfware/mft.hntbin523657 -> 523645 bytes
-rw-r--r--info/knuth-hint/mp/mp.hntbin0 -> 1818565 bytes
-rw-r--r--info/knuth-hint/mp/mpost.hntbin0 -> 497733 bytes
-rw-r--r--info/knuth-hint/other/dvicopy-changes.hntbin480022 -> 480015 bytes
-rw-r--r--info/knuth-hint/other/dvicopy.hntbin703127 -> 703121 bytes
-rw-r--r--info/knuth-hint/other/patgen-changes.hntbin346863 -> 346856 bytes
-rw-r--r--info/knuth-hint/other/patgen.hntbin502636 -> 502625 bytes
-rw-r--r--info/knuth-hint/other/pktogf-changes.hntbin376130 -> 376122 bytes
-rw-r--r--info/knuth-hint/other/pktogf.hntbin451072 -> 451060 bytes
-rw-r--r--info/knuth-hint/other/pktype-changes.hntbin368462 -> 368455 bytes
-rw-r--r--info/knuth-hint/other/pktype.hntbin397416 -> 397404 bytes
-rw-r--r--info/knuth-hint/pdftex/pdftex-changes.hntbin1284930 -> 1286651 bytes
-rw-r--r--info/knuth-hint/pdftex/pdftex.hntbin2182753 -> 2182740 bytes
-rw-r--r--info/knuth-hint/tex/glue.hntbin437655 -> 437653 bytes
-rw-r--r--info/knuth-hint/tex/tex-changes.hntbin1028614 -> 1029743 bytes
-rw-r--r--info/knuth-hint/tex/tex.hntbin1625083 -> 1625074 bytes
-rw-r--r--info/knuth-hint/tex/tripman.hntbin450716 -> 450713 bytes
-rw-r--r--info/knuth-hint/texware/dvitype-changes.hntbin429290 -> 429279 bytes
-rw-r--r--info/knuth-hint/texware/dvitype.hntbin590280 -> 590266 bytes
-rw-r--r--info/knuth-hint/texware/pltotf-changes.hntbin386789 -> 386777 bytes
-rw-r--r--info/knuth-hint/texware/pltotf.hntbin561630 -> 561616 bytes
-rw-r--r--info/knuth-hint/texware/pooltype-changes.hntbin400734 -> 400727 bytes
-rw-r--r--info/knuth-hint/texware/pooltype.hntbin403360 -> 403340 bytes
-rw-r--r--info/knuth-hint/texware/tftopl-changes.hntbin385420 -> 385411 bytes
-rw-r--r--info/knuth-hint/texware/tftopl.hntbin487820 -> 487806 bytes
-rw-r--r--info/knuth-hint/tie/tie-changes.hntbin444039 -> 444032 bytes
-rw-r--r--info/knuth-hint/tie/tie.hntbin522787 -> 522888 bytes
-rw-r--r--info/knuth-hint/web/tangle-changes.hntbin453293 -> 453283 bytes
-rw-r--r--info/knuth-hint/web/tangle.hntbin591508 -> 591493 bytes
-rw-r--r--info/knuth-hint/web/twill.hntbin675792 -> 675856 bytes
-rw-r--r--info/knuth-hint/web/weave-changes.hntbin488700 -> 488689 bytes
-rw-r--r--info/knuth-hint/web/weave.hntbin654048 -> 654030 bytes
-rw-r--r--info/knuth-hint/web/webman.hntbin584924 -> 585159 bytes
-rw-r--r--info/knuth-hint/xetex/xetex-changes.pdfbin2340413 -> 2344346 bytes
-rw-r--r--info/knuth-hint/xetex/xetex.pdfbin4249910 -> 4251718 bytes
-rw-r--r--info/knuth-pdf/README.md55
-rw-r--r--info/knuth-pdf/bibtex/bibtex-changes.pdfbin623160 -> 629416 bytes
-rw-r--r--info/knuth-pdf/bibtex/bibtex.pdfbin1328094 -> 1327941 bytes
-rw-r--r--info/knuth-pdf/ctie/ctie-changes.pdfbin141590 -> 145326 bytes
-rw-r--r--info/knuth-pdf/ctie/ctie.pdfbin283447 -> 283980 bytes
-rw-r--r--info/knuth-pdf/cweb/common-changes.pdfbin226908 -> 231562 bytes
-rw-r--r--info/knuth-pdf/cweb/common.pdfbin363918 -> 364470 bytes
-rw-r--r--info/knuth-pdf/cweb/ctangle-changes.pdfbin221560 -> 225044 bytes
-rw-r--r--info/knuth-pdf/cweb/ctangle.pdfbin381223 -> 381756 bytes
-rw-r--r--info/knuth-pdf/cweb/ctwill.pdfbin1147605 -> 1147761 bytes
-rw-r--r--info/knuth-pdf/cweb/cweave-changes.pdfbin412398 -> 417800 bytes
-rw-r--r--info/knuth-pdf/cweb/cweave.pdfbin838251 -> 838763 bytes
-rw-r--r--info/knuth-pdf/cweb/cwebman.pdfbin357558 -> 357792 bytes
-rw-r--r--info/knuth-pdf/cweb/refsort-changes.pdfbin50755 -> 52986 bytes
-rw-r--r--info/knuth-pdf/cweb/refsort.pdfbin162580 -> 162976 bytes
-rw-r--r--info/knuth-pdf/cweb/twinx-changes.pdfbin84828 -> 86829 bytes
-rw-r--r--info/knuth-pdf/cweb/twinx.pdfbin193924 -> 194209 bytes
-rw-r--r--info/knuth-pdf/errata/errata.eight.pdfbin275286 -> 275286 bytes
-rw-r--r--info/knuth-pdf/errata/errata.eleven.pdfbin250940 -> 250940 bytes
-rw-r--r--info/knuth-pdf/errata/errata.five.pdfbin306863 -> 306863 bytes
-rw-r--r--info/knuth-pdf/errata/errata.four.pdfbin334571 -> 334571 bytes
-rw-r--r--info/knuth-pdf/errata/errata.nine.pdfbin156353 -> 156353 bytes
-rw-r--r--info/knuth-pdf/errata/errata.one.pdfbin270067 -> 270067 bytes
-rw-r--r--info/knuth-pdf/errata/errata.pdfbin368828 -> 368795 bytes
-rw-r--r--info/knuth-pdf/errata/errata.seven.pdfbin267573 -> 267573 bytes
-rw-r--r--info/knuth-pdf/errata/errata.six.pdfbin303640 -> 303640 bytes
-rw-r--r--info/knuth-pdf/errata/errata.ten.pdfbin378717 -> 378717 bytes
-rw-r--r--info/knuth-pdf/errata/errata.three.pdfbin443746 -> 443746 bytes
-rw-r--r--info/knuth-pdf/errata/errata.twelve.pdfbin413937 -> 413920 bytes
-rw-r--r--info/knuth-pdf/errata/errata.two.pdfbin247190 -> 247190 bytes
-rw-r--r--info/knuth-pdf/errata/errorlog.pdfbin404270 -> 404270 bytes
-rw-r--r--info/knuth-pdf/etc/vftovp-changes.pdfbin213056 -> 216902 bytes
-rw-r--r--info/knuth-pdf/etc/vftovp.pdfbin461117 -> 461387 bytes
-rw-r--r--info/knuth-pdf/etc/vptovf-changes.pdfbin199563 -> 202774 bytes
-rw-r--r--info/knuth-pdf/etc/vptovf.pdfbin555750 -> 556019 bytes
-rw-r--r--info/knuth-pdf/hitex/hitex.pdfbin4392415 -> 4392280 bytes
-rw-r--r--info/knuth-pdf/index.html5
-rw-r--r--info/knuth-pdf/index.pdfbin151150 -> 151266 bytes
-rw-r--r--info/knuth-pdf/mf/mf-changes.pdfbin1212142 -> 1216755 bytes
-rw-r--r--info/knuth-pdf/mf/mf.pdfbin3230882 -> 3231757 bytes
-rw-r--r--info/knuth-pdf/mf/trapman.pdfbin266243 -> 266243 bytes
-rw-r--r--info/knuth-pdf/mfware/gftodvi-changes.pdfbin277099 -> 280945 bytes
-rw-r--r--info/knuth-pdf/mfware/gftodvi.pdfbin704913 -> 705180 bytes
-rw-r--r--info/knuth-pdf/mfware/gftopk-changes.pdfbin145028 -> 148214 bytes
-rw-r--r--info/knuth-pdf/mfware/gftopk.pdfbin370482 -> 370755 bytes
-rw-r--r--info/knuth-pdf/mfware/gftype-changes.pdfbin134208 -> 137496 bytes
-rw-r--r--info/knuth-pdf/mfware/gftype.pdfbin327391 -> 327409 bytes
-rw-r--r--info/knuth-pdf/mfware/mft-changes.pdfbin203350 -> 206765 bytes
-rw-r--r--info/knuth-pdf/mfware/mft.pdfbin389071 -> 389351 bytes
-rw-r--r--info/knuth-pdf/mp/mp.pdfbin0 -> 4179204 bytes
-rw-r--r--info/knuth-pdf/mp/mpost.pdfbin0 -> 300726 bytes
-rw-r--r--info/knuth-pdf/other/dvicopy-changes.pdfbin314420 -> 318016 bytes
-rw-r--r--info/knuth-pdf/other/dvicopy.pdfbin789931 -> 789955 bytes
-rw-r--r--info/knuth-pdf/other/patgen-changes.pdfbin156200 -> 158662 bytes
-rw-r--r--info/knuth-pdf/other/patgen.pdfbin402193 -> 402456 bytes
-rw-r--r--info/knuth-pdf/other/pktogf-changes.pdfbin121083 -> 124016 bytes
-rw-r--r--info/knuth-pdf/other/pktogf.pdfbin317801 -> 318062 bytes
-rw-r--r--info/knuth-pdf/other/pktype-changes.pdfbin94494 -> 96842 bytes
-rw-r--r--info/knuth-pdf/other/pktype.pdfbin258988 -> 259019 bytes
-rw-r--r--info/knuth-pdf/pdftex/pdftex-changes.pdfbin3381944 -> 2723866 bytes
-rw-r--r--info/knuth-pdf/pdftex/pdftex.pdfbin5401461 -> 5402637 bytes
-rw-r--r--info/knuth-pdf/tex/glue.pdfbin197838 -> 198043 bytes
-rw-r--r--info/knuth-pdf/tex/tex-changes.pdfbin1855165 -> 1869694 bytes
-rw-r--r--info/knuth-pdf/tex/tex.pdfbin3613707 -> 3614612 bytes
-rw-r--r--info/knuth-pdf/tex/tripman.pdfbin325778 -> 325778 bytes
-rw-r--r--info/knuth-pdf/texware/dvitype-changes.pdfbin190726 -> 194586 bytes
-rw-r--r--info/knuth-pdf/texware/dvitype.pdfbin469694 -> 469704 bytes
-rw-r--r--info/knuth-pdf/texware/pltotf-changes.pdfbin175756 -> 179394 bytes
-rw-r--r--info/knuth-pdf/texware/pltotf.pdfbin473927 -> 474185 bytes
-rw-r--r--info/knuth-pdf/texware/pooltype-changes.pdfbin76451 -> 78866 bytes
-rw-r--r--info/knuth-pdf/texware/pooltype.pdfbin191691 -> 191709 bytes
-rw-r--r--info/knuth-pdf/texware/tftopl-changes.pdfbin157546 -> 160857 bytes
-rw-r--r--info/knuth-pdf/texware/tftopl.pdfbin360549 -> 360811 bytes
-rw-r--r--info/knuth-pdf/tie/tie-changes.pdfbin127618 -> 130255 bytes
-rw-r--r--info/knuth-pdf/tie/tie.pdfbin311153 -> 311712 bytes
-rw-r--r--info/knuth-pdf/web/tangle-changes.pdfbin257973 -> 262160 bytes
-rw-r--r--info/knuth-pdf/web/tangle.pdfbin580493 -> 580773 bytes
-rw-r--r--info/knuth-pdf/web/twill.pdfbin839309 -> 839862 bytes
-rw-r--r--info/knuth-pdf/web/weave-changes.pdfbin461212 -> 289149 bytes
-rw-r--r--info/knuth-pdf/web/weave.pdfbin764839 -> 765097 bytes
-rw-r--r--info/knuth-pdf/web/webman.pdfbin316118 -> 316276 bytes
-rw-r--r--info/knuth-pdf/xetex/xetex-changes.pdfbin2339296 -> 2353558 bytes
-rw-r--r--info/knuth-pdf/xetex/xetex.pdfbin4246841 -> 4248217 bytes
-rw-r--r--macros/latex/contrib/beamer-contrib/themes/moloch/CHANGELOG.md15
-rw-r--r--macros/latex/contrib/beamer-contrib/themes/moloch/README.md8
-rw-r--r--macros/latex/contrib/beamer-contrib/themes/moloch/beamercolorthememoloch.dtx2
-rw-r--r--macros/latex/contrib/beamer-contrib/themes/moloch/beamerfontthememoloch.dtx187
-rw-r--r--macros/latex/contrib/beamer-contrib/themes/moloch/beamerinnerthememoloch.dtx19
-rw-r--r--macros/latex/contrib/beamer-contrib/themes/moloch/beamerouterthememoloch.dtx42
-rw-r--r--macros/latex/contrib/beamer-contrib/themes/moloch/beamerthememoloch.dtx58
-rw-r--r--macros/latex/contrib/beamer-contrib/themes/moloch/moloch.pdfbin276169 -> 295500 bytes
-rw-r--r--macros/latex/contrib/beamer-contrib/themes/moloch/moloch.tex58
-rw-r--r--macros/latex/contrib/easybook/README.md2
-rw-r--r--macros/latex/contrib/easybook/easybook.dtx9
-rw-r--r--macros/latex/contrib/easybook/easybook.pdfbin624868 -> 625902 bytes
-rw-r--r--macros/latex/contrib/easybook/easybook.tex15
-rw-r--r--macros/latex/contrib/jnuexam/examfc-a-answer.pdfbin112749 -> 113078 bytes
-rw-r--r--macros/latex/contrib/jnuexam/examfc-a-blank.pdfbin98857 -> 99214 bytes
-rw-r--r--macros/latex/contrib/jnuexam/examfc-b-answer.pdfbin112707 -> 112978 bytes
-rw-r--r--macros/latex/contrib/jnuexam/examfc-b-blank.pdfbin98922 -> 99233 bytes
-rw-r--r--macros/latex/contrib/jnuexam/examfe-a-answer.pdfbin69901 -> 69509 bytes
-rw-r--r--macros/latex/contrib/jnuexam/examfe-a-blank.pdfbin66139 -> 65749 bytes
-rw-r--r--macros/latex/contrib/jnuexam/examfe-b-answer.pdfbin69943 -> 69556 bytes
-rw-r--r--macros/latex/contrib/jnuexam/examfe-b-blank.pdfbin66167 -> 65775 bytes
-rw-r--r--macros/latex/contrib/jnuexam/jnuexam.cls8
-rw-r--r--macros/latex/contrib/jnuexam/jnuexam.pdfbin85122 -> 85441 bytes
-rw-r--r--macros/latex/contrib/randexam/randexam-a-answer.pdfbin49886 -> 49579 bytes
-rw-r--r--macros/latex/contrib/randexam/randexam-a-blank.pdfbin41751 -> 41376 bytes
-rw-r--r--macros/latex/contrib/randexam/randexam-b-answer.pdfbin49948 -> 49565 bytes
-rw-r--r--macros/latex/contrib/randexam/randexam-b-blank.pdfbin41687 -> 41319 bytes
-rw-r--r--macros/latex/contrib/randexam/randexam.cls13
-rw-r--r--macros/latex/contrib/randexam/randexam.pdfbin63636 -> 63481 bytes
-rw-r--r--macros/latex/contrib/randexam/randexam.tex2
-rw-r--r--macros/latex/contrib/synthslant/LICENSE6
-rw-r--r--macros/latex/contrib/synthslant/Makefile133
-rw-r--r--macros/latex/contrib/synthslant/README.md3
-rw-r--r--macros/latex/contrib/synthslant/RELEASE-HOWTO.md51
-rw-r--r--macros/latex/contrib/synthslant/docs/index.md4
-rw-r--r--macros/latex/contrib/synthslant/docs/synthslant-gauge.pdfbin181403 -> 181403 bytes
-rw-r--r--macros/latex/contrib/synthslant/docs/synthslant.pdfbin796407 -> 840480 bytes
-rw-r--r--macros/latex/contrib/synthslant/synthslant.dtx752
-rw-r--r--macros/latex/contrib/synthslant/synthslant.ins21
-rw-r--r--macros/latex/contrib/typog/LICENSE415
-rw-r--r--macros/latex/contrib/typog/Makefile183
-rw-r--r--macros/latex/contrib/typog/README.md4
-rw-r--r--macros/latex/contrib/typog/RELEASE-HOWTO.md51
-rw-r--r--macros/latex/contrib/typog/docs/index.md5
-rw-r--r--macros/latex/contrib/typog/docs/typog-example.pdfbin392419 -> 402037 bytes
-rw-r--r--macros/latex/contrib/typog/docs/typog-grep.1428
-rw-r--r--macros/latex/contrib/typog/docs/typog-grep.1.pdfbin511632 -> 514141 bytes
-rw-r--r--macros/latex/contrib/typog/docs/typog.pdfbin902362 -> 996908 bytes
-rw-r--r--macros/latex/contrib/typog/typog.dtx3217
-rw-r--r--macros/latex/contrib/typog/typog.ins30
-rw-r--r--systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl2
-rw-r--r--systems/texlive/tlnet/tlpkg/texlive.tlpdb111
-rw-r--r--systems/texlive/tlnet/tlpkg/texlive.tlpdb.md52
-rw-r--r--systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha5122
-rw-r--r--systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc16
-rw-r--r--systems/texlive/tlnet/tlpkg/texlive.tlpdb.xzbin2581020 -> 2577752 bytes
-rw-r--r--timestamp2
236 files changed, 5504 insertions, 2720 deletions
diff --git a/FILES.byname b/FILES.byname
index 2acdc990eb..330620df3b 100644
--- a/FILES.byname
+++ b/FILES.byname
@@ -2078,12 +2078,12 @@
2024/06/09 | 1837 | biblio/citation-style-language/README.md
2024/06/09 | 12878 | biblio/citation-style-language/vancouver.csl
2024/06/09 | 4562284 | biblio/citation-style-language.zip
-2024/07/08 | 1678 | biblio/ctan-bibdata/biblatex-ctan/ctan.bbx
+2024/07/09 | 1678 | biblio/ctan-bibdata/biblatex-ctan/ctan.bbx
2022/10/08 | 127 | biblio/ctan-bibdata/biblatex-ctan/ctan.cbx
-2024/07/08 | 2874532 | biblio/ctan-bibdata/ctan.bib
-2024/07/08 | 3708800 | biblio/ctan-bibdata/ctan.pdf
+2024/07/09 | 2874889 | biblio/ctan-bibdata/ctan.bib
+2024/07/09 | 3708800 | biblio/ctan-bibdata/ctan.pdf
2023/01/16 | 1489 | biblio/ctan-bibdata/README
-2024/07/08 | 4122820 | biblio/ctan-bibdata.zip
+2024/07/09 | 4122861 | biblio/ctan-bibdata.zip
2023/02/23 | 3126 | biblio/pbibtex/pbibtex-base/cpp.awk
2023/02/23 | 1009 | biblio/pbibtex/pbibtex-base/generate.sh
2023/02/23 | 22362 | biblio/pbibtex/pbibtex-base/jabbrv.bst
@@ -5445,7 +5445,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
-2024/07/08 | 86357 | FILES.last07days
+2024/07/09 | 82245 | 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
@@ -172605,11 +172605,11 @@
2017/05/17 | 832 | graphics/pgf/contrib/ladder/README.md
2017/05/17 | 213962 | graphics/pgf/contrib/ladder.zip
2020/01/30 | 20606 | graphics/pgf/contrib/lie-hasse/lie-hasse.bib
-2020/02/03 | 573306 | graphics/pgf/contrib/lie-hasse/lie-hasse.pdf
-2020/02/02 | 58728 | graphics/pgf/contrib/lie-hasse/lie-hasse.sty
-2020/02/03 | 17373 | graphics/pgf/contrib/lie-hasse/lie-hasse.tex
-2020/02/03 | 590 | graphics/pgf/contrib/lie-hasse/README
-2020/02/03 | 586616 | graphics/pgf/contrib/lie-hasse.zip
+2024/07/09 | 631928 | graphics/pgf/contrib/lie-hasse/lie-hasse.pdf
+2024/07/09 | 58937 | graphics/pgf/contrib/lie-hasse/lie-hasse.sty
+2024/07/09 | 17407 | graphics/pgf/contrib/lie-hasse/lie-hasse.tex
+2024/07/09 | 587 | graphics/pgf/contrib/lie-hasse/README
+2024/07/09 | 639939 | graphics/pgf/contrib/lie-hasse.zip
2024/05/20 | 2192283 | graphics/pgf/contrib/liftarm/liftarm.pdf
2024/05/20 | 44094 | graphics/pgf/contrib/liftarm/liftarm.sty
2024/05/20 | 29394 | graphics/pgf/contrib/liftarm/liftarm.tex
@@ -176612,7 +176612,7 @@
1995/04/26 | 830 | graphics/pstex/readme.dos
1995/04/26 | 1436 | graphics/pstex/std.h
2006/05/21 | 60272 | graphics/pstex.zip
-2024/02/02 | 4693 | graphics/pstricks/base/Changes
+2024/07/09 | 4826 | graphics/pstricks/base/Changes
2021/08/26 | 2081 | graphics/pstricks/base/config/distiller.cfg
2021/08/26 | 14970 | graphics/pstricks/base/config/dvips.cfg
2021/08/26 | 4938 | graphics/pstricks/base/config/dvipsone.cfg
@@ -176665,12 +176665,12 @@
2022/10/23 | 2331 | graphics/pstricks/base/doc/pst-news22.tex
2023/10/30 | 98838 | graphics/pstricks/base/doc/pst-news23.pdf
2023/10/30 | 4531 | graphics/pstricks/base/doc/pst-news23.tex
-2024/02/02 | 98554 | graphics/pstricks/base/doc/pst-news24.pdf
-2024/02/02 | 4471 | graphics/pstricks/base/doc/pst-news24.tex
+2024/07/09 | 99744 | graphics/pstricks/base/doc/pst-news24.pdf
+2024/07/09 | 4591 | graphics/pstricks/base/doc/pst-news24.tex
2021/08/26 | 3459 | graphics/pstricks/base/doc/pst-news.sty
2021/08/26 | 9735 | graphics/pstricks/base/doc/pst-news.tex
2021/08/26 | 3978 | graphics/pstricks/base/doc/PSTricks.bib
-2021/08/26 | 17221 | graphics/pstricks/base/doc/pstricks-bug.tex
+2024/07/09 | 17233 | graphics/pstricks/base/doc/pstricks-bug.tex
2021/08/26 | 5367012 | graphics/pstricks/base/doc/pstricks-doc.pdf
2018/02/08 | 898183 | graphics/pstricks/base/doc/pst-user.pdf
2018/02/08 | 76080 | graphics/pstricks/base/doc/pst-user.tgz
@@ -176686,7 +176686,7 @@
2021/09/23 | 4629 | graphics/pstricks/base/generic/pstricks-color.tex
2021/09/15 | 15065 | graphics/pstricks/base/generic/pstricks.con
2022/08/30 | 10017 | graphics/pstricks/base/generic/pstricks-dots.tex
-2024/02/02 | 125903 | graphics/pstricks/base/generic/pstricks.tex
+2024/07/09 | 126145 | graphics/pstricks/base/generic/pstricks.tex
2023/04/29 | 3362 | graphics/pstricks/base/generic/pstricks-tex.def
2021/08/26 | 1004 | graphics/pstricks/base/generic/pstricks-xetex.def
2022/08/30 | 26127 | graphics/pstricks/base/History
@@ -176696,7 +176696,7 @@
2021/09/25 | 5261 | graphics/pstricks/base/latex/pstricks-pdf.sty
2024/02/02 | 8163 | graphics/pstricks/base/latex/pstricks.sty
2024/02/02 | 4818 | graphics/pstricks/base/README
-2024/02/02 | 8105595 | graphics/pstricks/base.zip
+2024/07/09 | 8106412 | graphics/pstricks/base.zip
2023/11/08 | 4089 | graphics/pstricks/contrib/dsptricks/dspblocks.sty
2023/11/08 | 10796 | graphics/pstricks/contrib/dsptricks/dspfunctions.sty
2023/11/08 | 202907 | graphics/pstricks/contrib/dsptricks/dspTricksManual.pdf
@@ -203880,170 +203880,174 @@
2024/02/12 | 29 | info/kaytannollista-latexia/versio.tex
2024/02/12 | 1078435 | info/kaytannollista-latexia.zip
2017/08/18 | 333896 | info/knuth/cwebman.pdf
-2024/03/14 | 620033 | info/knuth-hint/bibtex/bibtex-changes.hnt
-2024/03/14 | 745156 | info/knuth-hint/bibtex/bibtex.hnt
-2024/03/14 | 444875 | info/knuth-hint/ctie/ctie-changes.hnt
-2024/03/14 | 453729 | info/knuth-hint/ctie/ctie.hnt
-2024/03/14 | 476803 | info/knuth-hint/cweb/common-changes.hnt
-2024/03/14 | 548944 | info/knuth-hint/cweb/common.hnt
-2024/03/14 | 470999 | info/knuth-hint/cweb/ctangle-changes.hnt
-2024/03/14 | 487685 | info/knuth-hint/cweb/ctangle.hnt
-2024/03/14 | 828138 | info/knuth-hint/cweb/ctwill.hnt
-2024/03/14 | 568460 | info/knuth-hint/cweb/cweave-changes.hnt
-2024/03/14 | 712329 | info/knuth-hint/cweb/cweave.hnt
-2024/03/14 | 730712 | info/knuth-hint/cweb/cwebman.hnt
-2024/03/14 | 383065 | info/knuth-hint/cweb/refsort-changes.hnt
-2024/03/14 | 418778 | info/knuth-hint/cweb/refsort.hnt
-2024/03/14 | 393447 | info/knuth-hint/cweb/twinx-changes.hnt
-2024/03/14 | 394218 | info/knuth-hint/cweb/twinx.hnt
-2024/03/14 | 806109 | info/knuth-hint/errata/errata.eight.hnt
-2024/03/14 | 824010 | info/knuth-hint/errata/errata.eleven.hnt
-2024/03/14 | 789118 | info/knuth-hint/errata/errata.five.hnt
-2024/03/14 | 948482 | info/knuth-hint/errata/errata.four.hnt
-2024/03/14 | 904968 | info/knuth-hint/errata/errata.hnt
-2024/03/14 | 407769 | info/knuth-hint/errata/errata.nine.hnt
-2024/03/14 | 733434 | info/knuth-hint/errata/errata.one.hnt
-2024/03/14 | 741537 | info/knuth-hint/errata/errata.seven.hnt
-2024/03/14 | 909790 | info/knuth-hint/errata/errata.six.hnt
-2024/03/14 | 1057100 | info/knuth-hint/errata/errata.ten.hnt
-2024/03/14 | 1158528 | info/knuth-hint/errata/errata.three.hnt
-2024/03/14 | 1107169 | info/knuth-hint/errata/errata.twelve.hnt
-2024/03/14 | 728931 | info/knuth-hint/errata/errata.two.hnt
-2024/03/14 | 601780 | info/knuth-hint/errata/errorlog.hnt
-2024/03/14 | 402219 | info/knuth-hint/etc/vftovp-changes.hnt
-2024/03/14 | 519890 | info/knuth-hint/etc/vftovp.hnt
-2024/03/14 | 391100 | info/knuth-hint/etc/vptovf-changes.hnt
-2024/03/14 | 588039 | info/knuth-hint/etc/vptovf.hnt
-2024/03/14 | 2128389 | info/knuth-hint/hitex/hitex.hnt
-2024/03/16 | 11848 | info/knuth-hint/index.html
-2024/03/16 | 151691 | info/knuth-hint/index.pdf
-2024/03/14 | 817887 | info/knuth-hint/mf/mf-changes.hnt
-2024/03/14 | 1568620 | info/knuth-hint/mf/mf.hnt
-2024/03/14 | 466177 | info/knuth-hint/mf/trapman.hnt
-2024/03/14 | 510418 | info/knuth-hint/mfware/gftodvi-changes.hnt
-2024/03/14 | 696337 | info/knuth-hint/mfware/gftodvi.hnt
-2024/03/14 | 411335 | info/knuth-hint/mfware/gftopk-changes.hnt
-2024/03/14 | 492269 | info/knuth-hint/mfware/gftopk.hnt
-2024/03/14 | 406835 | info/knuth-hint/mfware/gftype-changes.hnt
-2024/03/14 | 503532 | info/knuth-hint/mfware/gftype.hnt
-2024/03/14 | 444602 | info/knuth-hint/mfware/mft-changes.hnt
-2024/03/14 | 523657 | info/knuth-hint/mfware/mft.hnt
-2024/03/14 | 480022 | info/knuth-hint/other/dvicopy-changes.hnt
-2024/03/14 | 703127 | info/knuth-hint/other/dvicopy.hnt
-2024/03/14 | 346863 | info/knuth-hint/other/patgen-changes.hnt
-2024/03/14 | 502636 | info/knuth-hint/other/patgen.hnt
-2024/03/14 | 376130 | info/knuth-hint/other/pktogf-changes.hnt
-2024/03/14 | 451072 | info/knuth-hint/other/pktogf.hnt
-2024/03/14 | 368462 | info/knuth-hint/other/pktype-changes.hnt
-2024/03/14 | 397416 | info/knuth-hint/other/pktype.hnt
-2024/03/16 | 1284930 | info/knuth-hint/pdftex/pdftex-changes.hnt
-2024/03/16 | 2182753 | info/knuth-hint/pdftex/pdftex.hnt
-2024/03/16 | 1408 | info/knuth-hint/README.md
-2024/03/14 | 437655 | info/knuth-hint/tex/glue.hnt
-2024/03/14 | 1028614 | info/knuth-hint/tex/tex-changes.hnt
-2024/03/14 | 1625083 | info/knuth-hint/tex/tex.hnt
-2024/03/14 | 450716 | info/knuth-hint/tex/tripman.hnt
-2024/03/14 | 429290 | info/knuth-hint/texware/dvitype-changes.hnt
-2024/03/14 | 590280 | info/knuth-hint/texware/dvitype.hnt
-2024/03/14 | 386789 | info/knuth-hint/texware/pltotf-changes.hnt
-2024/03/14 | 561630 | info/knuth-hint/texware/pltotf.hnt
-2024/03/14 | 400734 | info/knuth-hint/texware/pooltype-changes.hnt
-2024/03/14 | 403360 | info/knuth-hint/texware/pooltype.hnt
-2024/03/14 | 385420 | info/knuth-hint/texware/tftopl-changes.hnt
-2024/03/14 | 487820 | info/knuth-hint/texware/tftopl.hnt
-2024/03/14 | 444039 | info/knuth-hint/tie/tie-changes.hnt
-2024/03/14 | 522787 | info/knuth-hint/tie/tie.hnt
-2024/03/14 | 453293 | info/knuth-hint/web/tangle-changes.hnt
-2024/03/14 | 591508 | info/knuth-hint/web/tangle.hnt
-2024/03/16 | 675792 | info/knuth-hint/web/twill.hnt
-2024/03/16 | 488700 | info/knuth-hint/web/weave-changes.hnt
-2024/03/16 | 654048 | info/knuth-hint/web/weave.hnt
-2024/03/14 | 584924 | info/knuth-hint/web/webman.hnt
-2024/03/14 | 2340413 | info/knuth-hint/xetex/xetex-changes.pdf
-2024/03/14 | 4249910 | info/knuth-hint/xetex/xetex.pdf
-2024/03/16 | 52738069 | info/knuth-hint.zip
-2024/03/14 | 623160 | info/knuth-pdf/bibtex/bibtex-changes.pdf
-2024/03/14 | 1328094 | info/knuth-pdf/bibtex/bibtex.pdf
-2024/03/14 | 141590 | info/knuth-pdf/ctie/ctie-changes.pdf
-2024/03/14 | 283447 | info/knuth-pdf/ctie/ctie.pdf
-2024/03/14 | 226908 | info/knuth-pdf/cweb/common-changes.pdf
-2024/03/14 | 363918 | info/knuth-pdf/cweb/common.pdf
-2024/03/14 | 221560 | info/knuth-pdf/cweb/ctangle-changes.pdf
-2024/03/14 | 381223 | info/knuth-pdf/cweb/ctangle.pdf
-2024/03/14 | 1147605 | info/knuth-pdf/cweb/ctwill.pdf
-2024/03/14 | 412398 | info/knuth-pdf/cweb/cweave-changes.pdf
-2024/03/14 | 838251 | info/knuth-pdf/cweb/cweave.pdf
-2024/03/14 | 357558 | info/knuth-pdf/cweb/cwebman.pdf
-2024/03/14 | 50755 | info/knuth-pdf/cweb/refsort-changes.pdf
-2024/03/14 | 162580 | info/knuth-pdf/cweb/refsort.pdf
-2024/03/14 | 84828 | info/knuth-pdf/cweb/twinx-changes.pdf
-2024/03/14 | 193924 | info/knuth-pdf/cweb/twinx.pdf
-2024/03/14 | 275286 | info/knuth-pdf/errata/errata.eight.pdf
-2024/03/14 | 250940 | info/knuth-pdf/errata/errata.eleven.pdf
-2024/03/14 | 306863 | info/knuth-pdf/errata/errata.five.pdf
-2024/03/14 | 334571 | info/knuth-pdf/errata/errata.four.pdf
-2024/03/14 | 156353 | info/knuth-pdf/errata/errata.nine.pdf
-2024/03/14 | 270067 | info/knuth-pdf/errata/errata.one.pdf
-2024/03/14 | 368828 | info/knuth-pdf/errata/errata.pdf
-2024/03/14 | 267573 | info/knuth-pdf/errata/errata.seven.pdf
-2024/03/14 | 303640 | info/knuth-pdf/errata/errata.six.pdf
-2024/03/14 | 378717 | info/knuth-pdf/errata/errata.ten.pdf
-2024/03/14 | 443746 | info/knuth-pdf/errata/errata.three.pdf
-2024/03/14 | 413937 | info/knuth-pdf/errata/errata.twelve.pdf
-2024/03/14 | 247190 | info/knuth-pdf/errata/errata.two.pdf
-2024/03/14 | 404270 | info/knuth-pdf/errata/errorlog.pdf
-2024/03/14 | 213056 | info/knuth-pdf/etc/vftovp-changes.pdf
-2024/03/14 | 461117 | info/knuth-pdf/etc/vftovp.pdf
-2024/03/14 | 199563 | info/knuth-pdf/etc/vptovf-changes.pdf
-2024/03/14 | 555750 | info/knuth-pdf/etc/vptovf.pdf
-2024/03/14 | 4392415 | info/knuth-pdf/hitex/hitex.pdf
-2024/03/16 | 11598 | info/knuth-pdf/index.html
-2024/03/16 | 151150 | info/knuth-pdf/index.pdf
-2024/03/14 | 1212142 | info/knuth-pdf/mf/mf-changes.pdf
-2024/03/14 | 3230882 | info/knuth-pdf/mf/mf.pdf
-2024/03/14 | 266243 | info/knuth-pdf/mf/trapman.pdf
-2024/03/14 | 277099 | info/knuth-pdf/mfware/gftodvi-changes.pdf
-2024/03/14 | 704913 | info/knuth-pdf/mfware/gftodvi.pdf
-2024/03/14 | 145028 | info/knuth-pdf/mfware/gftopk-changes.pdf
-2024/03/14 | 370482 | info/knuth-pdf/mfware/gftopk.pdf
-2024/03/14 | 134208 | info/knuth-pdf/mfware/gftype-changes.pdf
-2024/03/14 | 327391 | info/knuth-pdf/mfware/gftype.pdf
-2024/03/14 | 203350 | info/knuth-pdf/mfware/mft-changes.pdf
-2024/03/14 | 389071 | info/knuth-pdf/mfware/mft.pdf
-2024/03/14 | 314420 | info/knuth-pdf/other/dvicopy-changes.pdf
-2024/03/14 | 789931 | info/knuth-pdf/other/dvicopy.pdf
-2024/03/14 | 156200 | info/knuth-pdf/other/patgen-changes.pdf
-2024/03/14 | 402193 | info/knuth-pdf/other/patgen.pdf
-2024/03/14 | 121083 | info/knuth-pdf/other/pktogf-changes.pdf
-2024/03/14 | 317801 | info/knuth-pdf/other/pktogf.pdf
-2024/03/14 | 94494 | info/knuth-pdf/other/pktype-changes.pdf
-2024/03/14 | 258988 | info/knuth-pdf/other/pktype.pdf
-2024/03/16 | 3381944 | info/knuth-pdf/pdftex/pdftex-changes.pdf
-2024/03/16 | 5401461 | info/knuth-pdf/pdftex/pdftex.pdf
-2024/03/16 | 1477 | info/knuth-pdf/README.md
-2024/03/14 | 197838 | info/knuth-pdf/tex/glue.pdf
-2024/03/14 | 1855165 | info/knuth-pdf/tex/tex-changes.pdf
-2024/03/14 | 3613707 | info/knuth-pdf/tex/tex.pdf
-2024/03/14 | 325778 | info/knuth-pdf/tex/tripman.pdf
-2024/03/14 | 190726 | info/knuth-pdf/texware/dvitype-changes.pdf
-2024/03/14 | 469694 | info/knuth-pdf/texware/dvitype.pdf
-2024/03/14 | 175756 | info/knuth-pdf/texware/pltotf-changes.pdf
-2024/03/14 | 473927 | info/knuth-pdf/texware/pltotf.pdf
-2024/03/14 | 76451 | info/knuth-pdf/texware/pooltype-changes.pdf
-2024/03/14 | 191691 | info/knuth-pdf/texware/pooltype.pdf
-2024/03/14 | 157546 | info/knuth-pdf/texware/tftopl-changes.pdf
-2024/03/14 | 360549 | info/knuth-pdf/texware/tftopl.pdf
-2024/03/14 | 127618 | info/knuth-pdf/tie/tie-changes.pdf
-2024/03/14 | 311153 | info/knuth-pdf/tie/tie.pdf
-2024/03/14 | 257973 | info/knuth-pdf/web/tangle-changes.pdf
-2024/03/14 | 580493 | info/knuth-pdf/web/tangle.pdf
-2024/03/16 | 839309 | info/knuth-pdf/web/twill.pdf
-2024/03/16 | 461212 | info/knuth-pdf/web/weave-changes.pdf
-2024/03/16 | 764839 | info/knuth-pdf/web/weave.pdf
-2024/03/14 | 316118 | info/knuth-pdf/web/webman.pdf
-2024/03/14 | 2339296 | info/knuth-pdf/xetex/xetex-changes.pdf
-2024/03/14 | 4246841 | info/knuth-pdf/xetex/xetex.pdf
-2024/03/16 | 51728507 | info/knuth-pdf.zip
+2024/07/09 | 620020 | info/knuth-hint/bibtex/bibtex-changes.hnt
+2024/07/09 | 745144 | info/knuth-hint/bibtex/bibtex.hnt
+2024/07/09 | 444867 | info/knuth-hint/ctie/ctie-changes.hnt
+2024/07/09 | 453833 | info/knuth-hint/ctie/ctie.hnt
+2024/07/09 | 476784 | info/knuth-hint/cweb/common-changes.hnt
+2024/07/09 | 549042 | info/knuth-hint/cweb/common.hnt
+2024/07/09 | 470989 | info/knuth-hint/cweb/ctangle-changes.hnt
+2024/07/09 | 487785 | info/knuth-hint/cweb/ctangle.hnt
+2024/07/09 | 828110 | info/knuth-hint/cweb/ctwill.hnt
+2024/07/09 | 568458 | info/knuth-hint/cweb/cweave-changes.hnt
+2024/07/09 | 712514 | info/knuth-hint/cweb/cweave.hnt
+2024/07/09 | 731032 | info/knuth-hint/cweb/cwebman.hnt
+2024/07/09 | 383053 | info/knuth-hint/cweb/refsort-changes.hnt
+2024/07/09 | 418765 | info/knuth-hint/cweb/refsort.hnt
+2024/07/09 | 393438 | info/knuth-hint/cweb/twinx-changes.hnt
+2024/07/09 | 394206 | info/knuth-hint/cweb/twinx.hnt
+2024/07/09 | 806105 | info/knuth-hint/errata/errata.eight.hnt
+2024/07/09 | 824007 | info/knuth-hint/errata/errata.eleven.hnt
+2024/07/09 | 789103 | info/knuth-hint/errata/errata.five.hnt
+2024/07/09 | 948479 | info/knuth-hint/errata/errata.four.hnt
+2024/07/09 | 904965 | info/knuth-hint/errata/errata.hnt
+2024/07/09 | 407766 | info/knuth-hint/errata/errata.nine.hnt
+2024/07/09 | 733431 | info/knuth-hint/errata/errata.one.hnt
+2024/07/09 | 741534 | info/knuth-hint/errata/errata.seven.hnt
+2024/07/09 | 909786 | info/knuth-hint/errata/errata.six.hnt
+2024/07/09 | 1057095 | info/knuth-hint/errata/errata.ten.hnt
+2024/07/09 | 1158523 | info/knuth-hint/errata/errata.three.hnt
+2024/07/09 | 1107166 | info/knuth-hint/errata/errata.twelve.hnt
+2024/07/09 | 728926 | info/knuth-hint/errata/errata.two.hnt
+2024/07/09 | 601777 | info/knuth-hint/errata/errorlog.hnt
+2024/07/09 | 402211 | info/knuth-hint/etc/vftovp-changes.hnt
+2024/07/09 | 519878 | info/knuth-hint/etc/vftovp.hnt
+2024/07/09 | 391090 | info/knuth-hint/etc/vptovf-changes.hnt
+2024/07/09 | 588023 | info/knuth-hint/etc/vptovf.hnt
+2024/07/09 | 2128059 | info/knuth-hint/hitex/hitex.hnt
+2024/07/09 | 11997 | info/knuth-hint/index.html
+2024/07/09 | 151802 | info/knuth-hint/index.pdf
+2024/07/09 | 817883 | info/knuth-hint/mf/mf-changes.hnt
+2024/07/09 | 1568599 | info/knuth-hint/mf/mf.hnt
+2024/07/09 | 466175 | info/knuth-hint/mf/trapman.hnt
+2024/07/09 | 510409 | info/knuth-hint/mfware/gftodvi-changes.hnt
+2024/07/09 | 696325 | info/knuth-hint/mfware/gftodvi.hnt
+2024/07/09 | 411326 | info/knuth-hint/mfware/gftopk-changes.hnt
+2024/07/09 | 492258 | info/knuth-hint/mfware/gftopk.hnt
+2024/07/09 | 406825 | info/knuth-hint/mfware/gftype-changes.hnt
+2024/07/09 | 503518 | info/knuth-hint/mfware/gftype.hnt
+2024/07/09 | 444596 | info/knuth-hint/mfware/mft-changes.hnt
+2024/07/09 | 523645 | info/knuth-hint/mfware/mft.hnt
+2024/07/09 | 1818565 | info/knuth-hint/mp/mp.hnt
+2024/07/09 | 497733 | info/knuth-hint/mp/mpost.hnt
+2024/07/09 | 480015 | info/knuth-hint/other/dvicopy-changes.hnt
+2024/07/09 | 703121 | info/knuth-hint/other/dvicopy.hnt
+2024/07/09 | 346856 | info/knuth-hint/other/patgen-changes.hnt
+2024/07/09 | 502625 | info/knuth-hint/other/patgen.hnt
+2024/07/09 | 376122 | info/knuth-hint/other/pktogf-changes.hnt
+2024/07/09 | 451060 | info/knuth-hint/other/pktogf.hnt
+2024/07/09 | 368455 | info/knuth-hint/other/pktype-changes.hnt
+2024/07/09 | 397404 | info/knuth-hint/other/pktype.hnt
+2024/07/09 | 1286651 | info/knuth-hint/pdftex/pdftex-changes.hnt
+2024/07/09 | 2182740 | info/knuth-hint/pdftex/pdftex.hnt
+2024/05/20 | 1408 | info/knuth-hint/README.md
+2024/07/09 | 437653 | info/knuth-hint/tex/glue.hnt
+2024/07/09 | 1029743 | info/knuth-hint/tex/tex-changes.hnt
+2024/07/09 | 1625074 | info/knuth-hint/tex/tex.hnt
+2024/07/09 | 450713 | info/knuth-hint/tex/tripman.hnt
+2024/07/09 | 429279 | info/knuth-hint/texware/dvitype-changes.hnt
+2024/07/09 | 590266 | info/knuth-hint/texware/dvitype.hnt
+2024/07/09 | 386777 | info/knuth-hint/texware/pltotf-changes.hnt
+2024/07/09 | 561616 | info/knuth-hint/texware/pltotf.hnt
+2024/07/09 | 400727 | info/knuth-hint/texware/pooltype-changes.hnt
+2024/07/09 | 403340 | info/knuth-hint/texware/pooltype.hnt
+2024/07/09 | 385411 | info/knuth-hint/texware/tftopl-changes.hnt
+2024/07/09 | 487806 | info/knuth-hint/texware/tftopl.hnt
+2024/07/09 | 444032 | info/knuth-hint/tie/tie-changes.hnt
+2024/07/09 | 522888 | info/knuth-hint/tie/tie.hnt
+2024/07/09 | 453283 | info/knuth-hint/web/tangle-changes.hnt
+2024/07/09 | 591493 | info/knuth-hint/web/tangle.hnt
+2024/07/09 | 675856 | info/knuth-hint/web/twill.hnt
+2024/07/09 | 488689 | info/knuth-hint/web/weave-changes.hnt
+2024/07/09 | 654030 | info/knuth-hint/web/weave.hnt
+2024/07/09 | 585159 | info/knuth-hint/web/webman.hnt
+2024/07/09 | 2344346 | info/knuth-hint/xetex/xetex-changes.pdf
+2024/07/09 | 4251718 | info/knuth-hint/xetex/xetex.pdf
+2024/07/09 | 54960646 | info/knuth-hint.zip
+2024/07/09 | 629416 | info/knuth-pdf/bibtex/bibtex-changes.pdf
+2024/07/09 | 1327941 | info/knuth-pdf/bibtex/bibtex.pdf
+2024/07/09 | 145326 | info/knuth-pdf/ctie/ctie-changes.pdf
+2024/07/09 | 283980 | info/knuth-pdf/ctie/ctie.pdf
+2024/07/09 | 231562 | info/knuth-pdf/cweb/common-changes.pdf
+2024/07/09 | 364470 | info/knuth-pdf/cweb/common.pdf
+2024/07/09 | 225044 | info/knuth-pdf/cweb/ctangle-changes.pdf
+2024/07/09 | 381756 | info/knuth-pdf/cweb/ctangle.pdf
+2024/07/09 | 1147761 | info/knuth-pdf/cweb/ctwill.pdf
+2024/07/09 | 417800 | info/knuth-pdf/cweb/cweave-changes.pdf
+2024/07/09 | 838763 | info/knuth-pdf/cweb/cweave.pdf
+2024/07/09 | 357792 | info/knuth-pdf/cweb/cwebman.pdf
+2024/07/09 | 52986 | info/knuth-pdf/cweb/refsort-changes.pdf
+2024/07/09 | 162976 | info/knuth-pdf/cweb/refsort.pdf
+2024/07/09 | 86829 | info/knuth-pdf/cweb/twinx-changes.pdf
+2024/07/09 | 194209 | info/knuth-pdf/cweb/twinx.pdf
+2024/07/09 | 275286 | info/knuth-pdf/errata/errata.eight.pdf
+2024/07/09 | 250940 | info/knuth-pdf/errata/errata.eleven.pdf
+2024/07/09 | 306863 | info/knuth-pdf/errata/errata.five.pdf
+2024/07/09 | 334571 | info/knuth-pdf/errata/errata.four.pdf
+2024/07/09 | 156353 | info/knuth-pdf/errata/errata.nine.pdf
+2024/07/09 | 270067 | info/knuth-pdf/errata/errata.one.pdf
+2024/07/09 | 368795 | info/knuth-pdf/errata/errata.pdf
+2024/07/09 | 267573 | info/knuth-pdf/errata/errata.seven.pdf
+2024/07/09 | 303640 | info/knuth-pdf/errata/errata.six.pdf
+2024/07/09 | 378717 | info/knuth-pdf/errata/errata.ten.pdf
+2024/07/09 | 443746 | info/knuth-pdf/errata/errata.three.pdf
+2024/07/09 | 413920 | info/knuth-pdf/errata/errata.twelve.pdf
+2024/07/09 | 247190 | info/knuth-pdf/errata/errata.two.pdf
+2024/07/09 | 404270 | info/knuth-pdf/errata/errorlog.pdf
+2024/07/09 | 216902 | info/knuth-pdf/etc/vftovp-changes.pdf
+2024/07/09 | 461387 | info/knuth-pdf/etc/vftovp.pdf
+2024/07/09 | 202774 | info/knuth-pdf/etc/vptovf-changes.pdf
+2024/07/09 | 556019 | info/knuth-pdf/etc/vptovf.pdf
+2024/07/09 | 4392280 | info/knuth-pdf/hitex/hitex.pdf
+2024/07/09 | 11747 | info/knuth-pdf/index.html
+2024/07/09 | 151266 | info/knuth-pdf/index.pdf
+2024/07/09 | 1216755 | info/knuth-pdf/mf/mf-changes.pdf
+2024/07/09 | 3231757 | info/knuth-pdf/mf/mf.pdf
+2024/07/09 | 266243 | info/knuth-pdf/mf/trapman.pdf
+2024/07/09 | 280945 | info/knuth-pdf/mfware/gftodvi-changes.pdf
+2024/07/09 | 705180 | info/knuth-pdf/mfware/gftodvi.pdf
+2024/07/09 | 148214 | info/knuth-pdf/mfware/gftopk-changes.pdf
+2024/07/09 | 370755 | info/knuth-pdf/mfware/gftopk.pdf
+2024/07/09 | 137496 | info/knuth-pdf/mfware/gftype-changes.pdf
+2024/07/09 | 327409 | info/knuth-pdf/mfware/gftype.pdf
+2024/07/09 | 206765 | info/knuth-pdf/mfware/mft-changes.pdf
+2024/07/09 | 389351 | info/knuth-pdf/mfware/mft.pdf
+2024/07/09 | 300726 | info/knuth-pdf/mp/mpost.pdf
+2024/07/09 | 4179204 | info/knuth-pdf/mp/mp.pdf
+2024/07/09 | 318016 | info/knuth-pdf/other/dvicopy-changes.pdf
+2024/07/09 | 789955 | info/knuth-pdf/other/dvicopy.pdf
+2024/07/09 | 158662 | info/knuth-pdf/other/patgen-changes.pdf
+2024/07/09 | 402456 | info/knuth-pdf/other/patgen.pdf
+2024/07/09 | 124016 | info/knuth-pdf/other/pktogf-changes.pdf
+2024/07/09 | 318062 | info/knuth-pdf/other/pktogf.pdf
+2024/07/09 | 96842 | info/knuth-pdf/other/pktype-changes.pdf
+2024/07/09 | 259019 | info/knuth-pdf/other/pktype.pdf
+2024/07/09 | 2723866 | info/knuth-pdf/pdftex/pdftex-changes.pdf
+2024/07/09 | 5402637 | info/knuth-pdf/pdftex/pdftex.pdf
+2024/06/09 | 2538 | info/knuth-pdf/README.md
+2024/07/09 | 198043 | info/knuth-pdf/tex/glue.pdf
+2024/07/09 | 1869694 | info/knuth-pdf/tex/tex-changes.pdf
+2024/07/09 | 3614612 | info/knuth-pdf/tex/tex.pdf
+2024/07/09 | 325778 | info/knuth-pdf/tex/tripman.pdf
+2024/07/09 | 194586 | info/knuth-pdf/texware/dvitype-changes.pdf
+2024/07/09 | 469704 | info/knuth-pdf/texware/dvitype.pdf
+2024/07/09 | 179394 | info/knuth-pdf/texware/pltotf-changes.pdf
+2024/07/09 | 474185 | info/knuth-pdf/texware/pltotf.pdf
+2024/07/09 | 78866 | info/knuth-pdf/texware/pooltype-changes.pdf
+2024/07/09 | 191709 | info/knuth-pdf/texware/pooltype.pdf
+2024/07/09 | 160857 | info/knuth-pdf/texware/tftopl-changes.pdf
+2024/07/09 | 360811 | info/knuth-pdf/texware/tftopl.pdf
+2024/07/09 | 130255 | info/knuth-pdf/tie/tie-changes.pdf
+2024/07/09 | 311712 | info/knuth-pdf/tie/tie.pdf
+2024/07/09 | 262160 | info/knuth-pdf/web/tangle-changes.pdf
+2024/07/09 | 580773 | info/knuth-pdf/web/tangle.pdf
+2024/07/09 | 839862 | info/knuth-pdf/web/twill.pdf
+2024/07/09 | 289149 | info/knuth-pdf/web/weave-changes.pdf
+2024/07/09 | 765097 | info/knuth-pdf/web/weave.pdf
+2024/07/09 | 316276 | info/knuth-pdf/web/webman.pdf
+2024/07/09 | 2353558 | info/knuth-pdf/xetex/xetex-changes.pdf
+2024/07/09 | 4248217 | info/knuth-pdf/xetex/xetex.pdf
+2024/07/09 | 55345557 | info/knuth-pdf.zip
1994/06/08 | 32446 | info/knuth/virtual-fonts
2005/07/12 | 236945 | info/knuth/webman.pdf
2008/09/07 | 139538 | info/l2picfaq/german/ctanlion.pdf
@@ -226335,18 +226339,18 @@
2017/01/23 | 3314 | macros/latex/contrib/beamer-contrib/themes/metropolis/source/beamerthememetropolis.ins
2017/01/23 | 5631 | macros/latex/contrib/beamer-contrib/themes/metropolis/source/pgfplotsthemetol.dtx
2017/01/23 | 205139 | macros/latex/contrib/beamer-contrib/themes/metropolis.zip
-2024/03/06 | 7052 | macros/latex/contrib/beamer-contrib/themes/moloch/beamercolorthememoloch.dtx
-2024/03/06 | 2015 | macros/latex/contrib/beamer-contrib/themes/moloch/beamerfontthememoloch.dtx
-2024/03/06 | 13551 | macros/latex/contrib/beamer-contrib/themes/moloch/beamerinnerthememoloch.dtx
-2024/03/06 | 6767 | macros/latex/contrib/beamer-contrib/themes/moloch/beamerouterthememoloch.dtx
-2024/03/06 | 2891 | macros/latex/contrib/beamer-contrib/themes/moloch/beamerthememoloch.dtx
-2024/03/06 | 1296 | macros/latex/contrib/beamer-contrib/themes/moloch/beamerthememoloch.ins
-2024/03/06 | 5590 | macros/latex/contrib/beamer-contrib/themes/moloch/CHANGELOG.md
-2024/03/06 | 20139 | macros/latex/contrib/beamer-contrib/themes/moloch/LICENSE
-2024/03/06 | 276169 | macros/latex/contrib/beamer-contrib/themes/moloch/moloch.pdf
-2024/03/06 | 14112 | macros/latex/contrib/beamer-contrib/themes/moloch/moloch.tex
-2024/03/06 | 2897 | macros/latex/contrib/beamer-contrib/themes/moloch/README.md
-2024/03/07 | 294772 | macros/latex/contrib/beamer-contrib/themes/moloch.zip
+2024/07/09 | 7052 | macros/latex/contrib/beamer-contrib/themes/moloch/beamercolorthememoloch.dtx
+2024/07/09 | 7433 | macros/latex/contrib/beamer-contrib/themes/moloch/beamerfontthememoloch.dtx
+2024/07/09 | 13717 | macros/latex/contrib/beamer-contrib/themes/moloch/beamerinnerthememoloch.dtx
+2024/07/09 | 7281 | macros/latex/contrib/beamer-contrib/themes/moloch/beamerouterthememoloch.dtx
+2024/07/09 | 4408 | macros/latex/contrib/beamer-contrib/themes/moloch/beamerthememoloch.dtx
+2024/07/09 | 1296 | macros/latex/contrib/beamer-contrib/themes/moloch/beamerthememoloch.ins
+2024/07/09 | 6481 | macros/latex/contrib/beamer-contrib/themes/moloch/CHANGELOG.md
+2024/07/09 | 20139 | macros/latex/contrib/beamer-contrib/themes/moloch/LICENSE
+2024/07/09 | 295500 | macros/latex/contrib/beamer-contrib/themes/moloch/moloch.pdf
+2024/07/09 | 15661 | macros/latex/contrib/beamer-contrib/themes/moloch/moloch.tex
+2024/07/09 | 3159 | macros/latex/contrib/beamer-contrib/themes/moloch/README.md
+2024/07/09 | 315714 | macros/latex/contrib/beamer-contrib/themes/moloch.zip
2010/12/15 | 8093 | macros/latex/contrib/beamer-contrib/themes/nirma/beamerthemenirma.sty
2010/12/14 | 96 | macros/latex/contrib/beamer-contrib/themes/nirma/README
2010/12/16 | 2661 | macros/latex/contrib/beamer-contrib/themes/nirma.zip
@@ -232806,12 +232810,12 @@
2008/02/10 | 19110 | macros/latex/contrib/ean13isbn/License.txt
2021/01/24 | 422 | macros/latex/contrib/ean13isbn/README
2021/01/24 | 322624 | macros/latex/contrib/ean13isbn.zip
-2024/07/07 | 86241 | macros/latex/contrib/easybook/easybook.dtx
+2024/07/09 | 86255 | macros/latex/contrib/easybook/easybook.dtx
2024/01/04 | 2081 | macros/latex/contrib/easybook/easybook.ins
-2024/07/07 | 624868 | macros/latex/contrib/easybook/easybook.pdf
-2024/07/07 | 103704 | macros/latex/contrib/easybook/easybook.tex
-2024/07/07 | 912 | macros/latex/contrib/easybook/README.md
-2024/07/07 | 674974 | macros/latex/contrib/easybook.zip
+2024/07/09 | 625902 | macros/latex/contrib/easybook/easybook.pdf
+2024/07/09 | 104028 | macros/latex/contrib/easybook/easybook.tex
+2024/07/09 | 912 | macros/latex/contrib/easybook/README.md
+2024/07/09 | 676231 | macros/latex/contrib/easybook.zip
2009/06/17 | 82589 | macros/latex/contrib/easy/doc/docbib.pdf
2009/06/17 | 78378 | macros/latex/contrib/easy/doc/docbmat.pdf
2009/06/17 | 99132 | macros/latex/contrib/easy/doc/doceqn.pdf
@@ -240509,27 +240513,27 @@
2022/03/11 | 1032 | macros/latex/contrib/jmsdelim/README.md
2022/03/11 | 380 | macros/latex/contrib/jmsdelim/refs.bib
2022/03/11 | 407050 | macros/latex/contrib/jmsdelim.zip
-2024/02/18 | 112749 | macros/latex/contrib/jnuexam/examfc-a-answer.pdf
-2024/02/18 | 10423 | macros/latex/contrib/jnuexam/examfc-a-answer.tex
-2024/02/18 | 98857 | macros/latex/contrib/jnuexam/examfc-a-blank.pdf
-2024/02/18 | 165 | macros/latex/contrib/jnuexam/examfc-a-blank.tex
-2024/02/18 | 112707 | macros/latex/contrib/jnuexam/examfc-b-answer.pdf
-2024/02/18 | 165 | macros/latex/contrib/jnuexam/examfc-b-answer.tex
-2024/02/18 | 98922 | macros/latex/contrib/jnuexam/examfc-b-blank.pdf
-2024/02/18 | 165 | macros/latex/contrib/jnuexam/examfc-b-blank.tex
-2024/02/18 | 69901 | macros/latex/contrib/jnuexam/examfe-a-answer.pdf
-2024/02/18 | 11287 | macros/latex/contrib/jnuexam/examfe-a-answer.tex
-2024/02/18 | 66139 | macros/latex/contrib/jnuexam/examfe-a-blank.pdf
-2024/02/18 | 153 | macros/latex/contrib/jnuexam/examfe-a-blank.tex
-2024/02/18 | 69943 | macros/latex/contrib/jnuexam/examfe-b-answer.pdf
-2024/02/18 | 168 | macros/latex/contrib/jnuexam/examfe-b-answer.tex
-2024/02/18 | 66167 | macros/latex/contrib/jnuexam/examfe-b-blank.pdf
-2024/02/18 | 153 | macros/latex/contrib/jnuexam/examfe-b-blank.tex
-2024/02/18 | 19373 | macros/latex/contrib/jnuexam/jnuexam.cls
-2024/02/18 | 85122 | macros/latex/contrib/jnuexam/jnuexam.pdf
-2024/02/18 | 14196 | macros/latex/contrib/jnuexam/jnuexam.tex
-2023/12/18 | 176 | macros/latex/contrib/jnuexam/README
-2024/03/14 | 767733 | macros/latex/contrib/jnuexam.zip
+2024/07/09 | 113078 | macros/latex/contrib/jnuexam/examfc-a-answer.pdf
+2024/02/27 | 10423 | macros/latex/contrib/jnuexam/examfc-a-answer.tex
+2024/07/09 | 99214 | macros/latex/contrib/jnuexam/examfc-a-blank.pdf
+2024/02/27 | 165 | macros/latex/contrib/jnuexam/examfc-a-blank.tex
+2024/07/09 | 112978 | macros/latex/contrib/jnuexam/examfc-b-answer.pdf
+2024/02/27 | 165 | macros/latex/contrib/jnuexam/examfc-b-answer.tex
+2024/07/09 | 99233 | macros/latex/contrib/jnuexam/examfc-b-blank.pdf
+2024/02/27 | 165 | macros/latex/contrib/jnuexam/examfc-b-blank.tex
+2024/07/09 | 69509 | macros/latex/contrib/jnuexam/examfe-a-answer.pdf
+2024/02/27 | 11287 | macros/latex/contrib/jnuexam/examfe-a-answer.tex
+2024/07/09 | 65749 | macros/latex/contrib/jnuexam/examfe-a-blank.pdf
+2024/02/27 | 153 | macros/latex/contrib/jnuexam/examfe-a-blank.tex
+2024/07/09 | 69556 | macros/latex/contrib/jnuexam/examfe-b-answer.pdf
+2024/02/27 | 168 | macros/latex/contrib/jnuexam/examfe-b-answer.tex
+2024/07/09 | 65775 | macros/latex/contrib/jnuexam/examfe-b-blank.pdf
+2024/02/27 | 153 | macros/latex/contrib/jnuexam/examfe-b-blank.tex
+2024/07/09 | 19441 | macros/latex/contrib/jnuexam/jnuexam.cls
+2024/07/09 | 85441 | macros/latex/contrib/jnuexam/jnuexam.pdf
+2024/02/27 | 14196 | macros/latex/contrib/jnuexam/jnuexam.tex
+2023/12/19 | 176 | macros/latex/contrib/jnuexam/README
+2024/07/09 | 767606 | macros/latex/contrib/jnuexam.zip
2022/09/24 | 437856 | macros/latex/contrib/jobname-suffix/jobname-suffix.pdf
2022/09/24 | 3170 | macros/latex/contrib/jobname-suffix/jobname-suffix.sty
2022/09/24 | 7142 | macros/latex/contrib/jobname-suffix/jobname-suffix.tex
@@ -248456,19 +248460,19 @@
2007/05/16 | 179602 | macros/latex/contrib/randbild/randbild.pdf
2007/05/16 | 4038 | macros/latex/contrib/randbild/README
2007/05/16 | 80648 | macros/latex/contrib/randbild.zip
-2024/02/17 | 49886 | macros/latex/contrib/randexam/randexam-a-answer.pdf
-2024/02/17 | 10524 | macros/latex/contrib/randexam/randexam-a-answer.tex
-2024/02/17 | 41751 | macros/latex/contrib/randexam/randexam-a-blank.pdf
+2024/07/09 | 49579 | macros/latex/contrib/randexam/randexam-a-answer.pdf
+2024/05/10 | 10524 | macros/latex/contrib/randexam/randexam-a-answer.tex
+2024/07/09 | 41376 | macros/latex/contrib/randexam/randexam-a-blank.pdf
2024/02/17 | 156 | macros/latex/contrib/randexam/randexam-a-blank.tex
-2024/02/17 | 49948 | macros/latex/contrib/randexam/randexam-b-answer.pdf
+2024/07/09 | 49565 | macros/latex/contrib/randexam/randexam-b-answer.pdf
2024/02/17 | 171 | macros/latex/contrib/randexam/randexam-b-answer.tex
-2024/02/17 | 41687 | macros/latex/contrib/randexam/randexam-b-blank.pdf
+2024/07/09 | 41319 | macros/latex/contrib/randexam/randexam-b-blank.pdf
2024/02/17 | 156 | macros/latex/contrib/randexam/randexam-b-blank.tex
-2024/02/18 | 49156 | macros/latex/contrib/randexam/randexam.cls
-2024/02/18 | 63636 | macros/latex/contrib/randexam/randexam.pdf
-2024/02/18 | 24801 | macros/latex/contrib/randexam/randexam.tex
-2024/01/27 | 140 | macros/latex/contrib/randexam/README
-2024/02/18 | 257400 | macros/latex/contrib/randexam.zip
+2024/07/09 | 49552 | macros/latex/contrib/randexam/randexam.cls
+2024/07/09 | 63481 | macros/latex/contrib/randexam/randexam.pdf
+2024/07/09 | 24801 | macros/latex/contrib/randexam/randexam.tex
+2024/01/19 | 140 | macros/latex/contrib/randexam/README
+2024/07/09 | 255898 | macros/latex/contrib/randexam.zip
2018/12/28 | 15719 | macros/latex/contrib/randomwalk/randomwalk.dtx
2018/12/28 | 409 | macros/latex/contrib/randomwalk/randomwalk.ins
2018/12/28 | 478962 | macros/latex/contrib/randomwalk/randomwalk.pdf
@@ -253201,16 +253205,14 @@
2000/01/27 | 1263 | macros/latex/contrib/syntax/syntaxtest.tex
2000/01/27 | 11129 | macros/latex/contrib/syntax/syntax.tex
2005/07/13 | 87748 | macros/latex/contrib/syntax.zip
-2024/05/07 | 260 | macros/latex/contrib/synthslant/docs/index.md
-2024/05/07 | 181403 | macros/latex/contrib/synthslant/docs/synthslant-gauge.pdf
-2024/05/07 | 796407 | macros/latex/contrib/synthslant/docs/synthslant.pdf
-2024/05/07 | 19039 | macros/latex/contrib/synthslant/LICENSE
-2024/05/07 | 6990 | macros/latex/contrib/synthslant/Makefile
-2024/05/07 | 1837 | macros/latex/contrib/synthslant/README.md
-2024/05/07 | 908 | macros/latex/contrib/synthslant/RELEASE-HOWTO.md
-2024/05/07 | 281894 | macros/latex/contrib/synthslant/synthslant.dtx
-2024/05/07 | 1750 | macros/latex/contrib/synthslant/synthslant.ins
-2024/05/07 | 1131965 | macros/latex/contrib/synthslant.zip
+2024/07/09 | 181403 | macros/latex/contrib/synthslant/docs/synthslant-gauge.pdf
+2024/07/09 | 840480 | macros/latex/contrib/synthslant/docs/synthslant.pdf
+2024/07/09 | 19042 | macros/latex/contrib/synthslant/LICENSE
+2024/07/09 | 7957 | macros/latex/contrib/synthslant/Makefile
+2024/07/09 | 1939 | macros/latex/contrib/synthslant/README.md
+2024/07/09 | 293618 | macros/latex/contrib/synthslant/synthslant.dtx
+2024/07/09 | 1894 | macros/latex/contrib/synthslant/synthslant.ins
+2024/07/09 | 1177093 | macros/latex/contrib/synthslant.zip
2007/03/13 | 157 | macros/latex/contrib/syntrace/README
2006/09/28 | 8118 | macros/latex/contrib/syntrace/syntrace.dtx
2006/09/28 | 2009 | macros/latex/contrib/syntrace/syntrace.ins
@@ -255921,14 +255923,12 @@
2017/05/07 | 24652 | macros/latex/contrib/typoaid/typoaid.sty
2017/05/07 | 16528 | macros/latex/contrib/typoaid/typoaid.tex
2017/05/07 | 337408 | macros/latex/contrib/typoaid.zip
-2024/05/07 | 390 | macros/latex/contrib/typog/docs/index.md
-2024/05/07 | 392419 | macros/latex/contrib/typog/docs/typog-example.pdf
-2024/05/07 | 16915 | macros/latex/contrib/typog/docs/typog-grep.1
-2024/05/07 | 511632 | macros/latex/contrib/typog/docs/typog-grep.1.pdf
-2024/05/07 | 902362 | macros/latex/contrib/typog/docs/typog.pdf
-2024/05/07 | 7527 | macros/latex/contrib/typog/Makefile
-2024/05/07 | 2314 | macros/latex/contrib/typog/README.md
-2024/05/07 | 908 | macros/latex/contrib/typog/RELEASE-HOWTO.md
+2024/07/09 | 402037 | macros/latex/contrib/typog/docs/typog-example.pdf
+2024/07/09 | 514141 | macros/latex/contrib/typog/docs/typog-grep.1.pdf
+2024/07/09 | 996908 | macros/latex/contrib/typog/docs/typog.pdf
+2024/07/09 | 19042 | macros/latex/contrib/typog/LICENSE
+2024/07/09 | 9199 | macros/latex/contrib/typog/Makefile
+2024/07/09 | 2467 | macros/latex/contrib/typog/README.md
2011/12/31 | 397 | macros/latex/contrib/typogrid/ChangeLog
2003/11/09 | 153 | macros/latex/contrib/typogrid/getversion.tex
2011/12/31 | 1786 | macros/latex/contrib/typogrid/Makefile
@@ -255938,9 +255938,9 @@
2011/12/31 | 543 | macros/latex/contrib/typogrid/typogrid.ins
2011/12/31 | 293839 | macros/latex/contrib/typogrid/typogrid.pdf
2012/01/01 | 299152 | macros/latex/contrib/typogrid.zip
-2024/05/07 | 350188 | macros/latex/contrib/typog/typog.dtx
-2024/05/07 | 2127 | macros/latex/contrib/typog/typog.ins
-2024/05/07 | 1868436 | macros/latex/contrib/typog.zip
+2024/07/09 | 421763 | macros/latex/contrib/typog/typog.dtx
+2024/07/09 | 2347 | macros/latex/contrib/typog/typog.ins
+2024/07/09 | 1989124 | macros/latex/contrib/typog.zip
2008/12/09 | 131932 | macros/latex/contrib/uaclasses/my-example.pdf
2009/01/05 | 2366 | macros/latex/contrib/uaclasses/README
2009/01/05 | 47551 | macros/latex/contrib/uaclasses/ua-classes.dtx
@@ -308586,7 +308586,7 @@
2024/06/15 | 7224 | systems/texlive/tlnet/archive/collection-latexextra.r71526.tar.xz
2023/12/14 | 704 | systems/texlive/tlnet/archive/collection-latex.r69131.tar.xz
2024/06/15 | 740 | systems/texlive/tlnet/archive/collection-latexrecommended.r71527.tar.xz
-2024/05/20 | 1044 | systems/texlive/tlnet/archive/collection-luatex.r71305.tar.xz
+2024/07/09 | 1048 | systems/texlive/tlnet/archive/collection-luatex.r71743.tar.xz
2024/06/11 | 1764 | systems/texlive/tlnet/archive/collection-mathscience.r71466.tar.xz
2024/05/23 | 572 | systems/texlive/tlnet/archive/collection-metapost.r71319.tar.xz
2024/01/28 | 508 | systems/texlive/tlnet/archive/collection-music.r69613.tar.xz
@@ -309871,23 +309871,23 @@
2024/03/01 | 76408 | systems/texlive/tlnet/archive/dviout-util.x86_64-linux.r70276.tar.xz
2024/03/01 | 81960 | systems/texlive/tlnet/archive/dviout-util.x86_64-solaris.r70276.tar.xz
2023/03/24 | 2735736 | systems/texlive/tlnet/archive/dviout.windows.r66655.tar.xz
-2024/07/01 | 413556 | systems/texlive/tlnet/archive/dvipdfmx.aarch64-linux.r71671.tar.xz
-2024/07/01 | 397904 | systems/texlive/tlnet/archive/dvipdfmx.amd64-freebsd.r71671.tar.xz
-2024/07/01 | 395800 | systems/texlive/tlnet/archive/dvipdfmx.amd64-netbsd.r71671.tar.xz
-2024/07/01 | 381460 | systems/texlive/tlnet/archive/dvipdfmx.armhf-linux.r71671.tar.xz
-2024/07/01 | 3125132 | systems/texlive/tlnet/archive/dvipdfmx.doc.r71675.tar.xz
-2024/07/01 | 398180 | systems/texlive/tlnet/archive/dvipdfmx.i386-freebsd.r71671.tar.xz
-2024/07/01 | 469900 | systems/texlive/tlnet/archive/dvipdfmx.i386-linux.r71671.tar.xz
-2024/07/01 | 368144 | systems/texlive/tlnet/archive/dvipdfmx.i386-netbsd.r71671.tar.xz
-2024/07/01 | 427856 | systems/texlive/tlnet/archive/dvipdfmx.i386-solaris.r71671.tar.xz
-2024/07/01 | 26712 | systems/texlive/tlnet/archive/dvipdfmx.r71675.tar.xz
-2024/07/01 | 805764 | systems/texlive/tlnet/archive/dvipdfmx.universal-darwin.r71671.tar.xz
-2024/07/01 | 353616 | systems/texlive/tlnet/archive/dvipdfmx.windows.r71671.tar.xz
-2024/07/01 | 410716 | systems/texlive/tlnet/archive/dvipdfmx.x86_64-cygwin.r71671.tar.xz
-2024/07/01 | 412868 | systems/texlive/tlnet/archive/dvipdfmx.x86_64-darwinlegacy.r71671.tar.xz
-2024/07/01 | 460492 | systems/texlive/tlnet/archive/dvipdfmx.x86_64-linuxmusl.r71671.tar.xz
-2024/07/01 | 438592 | systems/texlive/tlnet/archive/dvipdfmx.x86_64-linux.r71671.tar.xz
-2024/07/01 | 464972 | systems/texlive/tlnet/archive/dvipdfmx.x86_64-solaris.r71671.tar.xz
+2024/07/09 | 413008 | systems/texlive/tlnet/archive/dvipdfmx.aarch64-linux.r71749.tar.xz
+2024/07/09 | 398532 | systems/texlive/tlnet/archive/dvipdfmx.amd64-freebsd.r71749.tar.xz
+2024/07/09 | 395988 | systems/texlive/tlnet/archive/dvipdfmx.amd64-netbsd.r71749.tar.xz
+2024/07/09 | 381492 | systems/texlive/tlnet/archive/dvipdfmx.armhf-linux.r71749.tar.xz
+2024/07/09 | 3125132 | systems/texlive/tlnet/archive/dvipdfmx.doc.r71746.tar.xz
+2024/07/09 | 398264 | systems/texlive/tlnet/archive/dvipdfmx.i386-freebsd.r71749.tar.xz
+2024/07/09 | 470108 | systems/texlive/tlnet/archive/dvipdfmx.i386-linux.r71749.tar.xz
+2024/07/09 | 368088 | systems/texlive/tlnet/archive/dvipdfmx.i386-netbsd.r71749.tar.xz
+2024/07/09 | 427936 | systems/texlive/tlnet/archive/dvipdfmx.i386-solaris.r71749.tar.xz
+2024/07/09 | 29028 | systems/texlive/tlnet/archive/dvipdfmx.r71746.tar.xz
+2024/07/09 | 805264 | systems/texlive/tlnet/archive/dvipdfmx.universal-darwin.r71749.tar.xz
+2024/07/09 | 354208 | systems/texlive/tlnet/archive/dvipdfmx.windows.r71749.tar.xz
+2024/07/09 | 410744 | systems/texlive/tlnet/archive/dvipdfmx.x86_64-cygwin.r71749.tar.xz
+2024/07/09 | 412896 | systems/texlive/tlnet/archive/dvipdfmx.x86_64-darwinlegacy.r71749.tar.xz
+2024/07/09 | 460532 | systems/texlive/tlnet/archive/dvipdfmx.x86_64-linuxmusl.r71749.tar.xz
+2024/07/09 | 438664 | systems/texlive/tlnet/archive/dvipdfmx.x86_64-linux.r71749.tar.xz
+2024/07/09 | 465076 | systems/texlive/tlnet/archive/dvipdfmx.x86_64-solaris.r71749.tar.xz
2024/03/01 | 463612 | systems/texlive/tlnet/archive/dvipng.aarch64-linux.r70276.tar.xz
2024/03/01 | 440424 | systems/texlive/tlnet/archive/dvipng.amd64-freebsd.r70276.tar.xz
2024/03/01 | 437212 | systems/texlive/tlnet/archive/dvipng.amd64-netbsd.r70286.tar.xz
@@ -312766,9 +312766,9 @@
2019/02/28 | 254872 | systems/texlive/tlnet/archive/lastpackage.doc.r34481.tar.xz
2019/02/28 | 980 | systems/texlive/tlnet/archive/lastpackage.r34481.tar.xz
2019/02/28 | 2580 | systems/texlive/tlnet/archive/lastpackage.source.r34481.tar.xz
-2024/07/04 | 579528 | systems/texlive/tlnet/archive/lastpage.doc.r71694.tar.xz
-2024/07/04 | 4412 | systems/texlive/tlnet/archive/lastpage.r71694.tar.xz
-2024/07/04 | 22424 | systems/texlive/tlnet/archive/lastpage.source.r71694.tar.xz
+2024/07/09 | 579980 | systems/texlive/tlnet/archive/lastpage.doc.r71740.tar.xz
+2024/07/09 | 4524 | systems/texlive/tlnet/archive/lastpage.r71740.tar.xz
+2024/07/09 | 22676 | systems/texlive/tlnet/archive/lastpage.source.r71740.tar.xz
2024/05/15 | 2181440 | systems/texlive/tlnet/archive/latex2e-help-texinfo.doc.r71252.tar.xz
2022/08/30 | 2221448 | systems/texlive/tlnet/archive/latex2e-help-texinfo-fr.doc.r64228.tar.xz
2022/08/30 | 444 | systems/texlive/tlnet/archive/latex2e-help-texinfo-fr.r64228.tar.xz
@@ -313662,9 +313662,9 @@
2022/07/12 | 12872 | systems/texlive/tlnet/archive/luamesh.r63875.tar.xz
2023/11/19 | 205824 | systems/texlive/tlnet/archive/luamodulartables.doc.r68893.tar.xz
2023/11/19 | 1384 | systems/texlive/tlnet/archive/luamodulartables.r68893.tar.xz
-2024/07/04 | 219272 | systems/texlive/tlnet/archive/luamplib.doc.r71698.tar.xz
-2024/07/04 | 21244 | systems/texlive/tlnet/archive/luamplib.r71698.tar.xz
-2024/07/04 | 40380 | systems/texlive/tlnet/archive/luamplib.source.r71698.tar.xz
+2024/07/09 | 226976 | systems/texlive/tlnet/archive/luamplib.doc.r71745.tar.xz
+2024/07/09 | 22052 | systems/texlive/tlnet/archive/luamplib.r71745.tar.xz
+2024/07/09 | 41972 | systems/texlive/tlnet/archive/luamplib.source.r71745.tar.xz
2023/11/21 | 137048 | systems/texlive/tlnet/archive/luanumint.doc.r68918.tar.xz
2023/11/21 | 2332 | systems/texlive/tlnet/archive/luanumint.r68918.tar.xz
2022/10/31 | 32152 | systems/texlive/tlnet/archive/luaoptions.doc.r64870.tar.xz
@@ -314609,8 +314609,8 @@
2019/02/28 | 18688 | systems/texlive/tlnet/archive/msg.source.r49578.tar.xz
2020/03/04 | 277424 | systems/texlive/tlnet/archive/mslapa.doc.r54080.tar.xz
2020/03/04 | 8972 | systems/texlive/tlnet/archive/mslapa.r54080.tar.xz
-2024/06/11 | 540456 | systems/texlive/tlnet/archive/msu-thesis.doc.r71472.tar.xz
-2024/06/11 | 13744 | systems/texlive/tlnet/archive/msu-thesis.r71472.tar.xz
+2024/07/09 | 540588 | systems/texlive/tlnet/archive/msu-thesis.doc.r71741.tar.xz
+2024/07/09 | 13796 | systems/texlive/tlnet/archive/msu-thesis.r71741.tar.xz
2019/02/28 | 160144 | systems/texlive/tlnet/archive/mtgreek.doc.r17967.tar.xz
2019/02/28 | 1744 | systems/texlive/tlnet/archive/mtgreek.r17967.tar.xz
2019/02/28 | 2800 | systems/texlive/tlnet/archive/mtgreek.source.r17967.tar.xz
@@ -315753,8 +315753,8 @@
2023/10/31 | 1350376 | systems/texlive/tlnet/archive/pgfornament-han.doc.r68704.tar.xz
2023/10/31 | 96368 | systems/texlive/tlnet/archive/pgfornament-han.r68704.tar.xz
2020/05/29 | 616692 | systems/texlive/tlnet/archive/pgfornament.r55326.tar.xz
-2024/04/04 | 5567308 | systems/texlive/tlnet/archive/pgf-periodictable.doc.r70840.tar.xz
-2024/04/04 | 515796 | systems/texlive/tlnet/archive/pgf-periodictable.r70840.tar.xz
+2024/07/09 | 5694088 | systems/texlive/tlnet/archive/pgf-periodictable.doc.r71739.tar.xz
+2024/07/09 | 516572 | systems/texlive/tlnet/archive/pgf-periodictable.r71739.tar.xz
2022/06/16 | 222616 | systems/texlive/tlnet/archive/pgf-pie.doc.r63603.tar.xz
2022/06/16 | 3744 | systems/texlive/tlnet/archive/pgf-pie.r63603.tar.xz
2022/01/24 | 13086868 | systems/texlive/tlnet/archive/pgfplots.doc.r61719.tar.xz
@@ -316172,8 +316172,8 @@
2019/02/28 | 324704 | systems/texlive/tlnet/archive/protocol.doc.r25562.tar.xz
2019/02/28 | 2796 | systems/texlive/tlnet/archive/protocol.r25562.tar.xz
2019/02/28 | 6556 | systems/texlive/tlnet/archive/protocol.source.r25562.tar.xz
-2019/08/21 | 360784 | systems/texlive/tlnet/archive/prtec.doc.r51919.tar.xz
-2019/08/21 | 12056 | systems/texlive/tlnet/archive/prtec.r51919.tar.xz
+2024/07/09 | 385968 | systems/texlive/tlnet/archive/prtec.doc.r71742.tar.xz
+2024/07/09 | 11620 | systems/texlive/tlnet/archive/prtec.r71742.tar.xz
2019/02/28 | 289780 | systems/texlive/tlnet/archive/przechlewski-book.doc.r23552.tar.xz
2019/02/28 | 9680 | systems/texlive/tlnet/archive/przechlewski-book.r23552.tar.xz
2023/02/20 | 3956 | systems/texlive/tlnet/archive/ps2eps.aarch64-linux.r65927.tar.xz
@@ -318017,6 +318017,8 @@
2023/04/02 | 119648 | systems/texlive/tlnet/archive/tangocolors.doc.r66733.tar.xz
2023/04/02 | 1688 | systems/texlive/tlnet/archive/tangocolors.r66733.tar.xz
2023/04/02 | 3020 | systems/texlive/tlnet/archive/tangocolors.source.r66733.tar.xz
+2024/07/09 | 433208 | systems/texlive/tlnet/archive/tango.doc.r71743.tar.xz
+2024/07/09 | 9344 | systems/texlive/tlnet/archive/tango.r71743.tar.xz
2023/02/27 | 744776 | systems/texlive/tlnet/archive/tangramtikz.doc.r66183.tar.xz
2023/02/27 | 5848 | systems/texlive/tlnet/archive/tangramtikz.r66183.tar.xz
2019/02/28 | 27740 | systems/texlive/tlnet/archive/tap.doc.r31731.tar.xz
@@ -318396,29 +318398,29 @@
2022/09/13 | 600 | systems/texlive/tlnet/archive/texlive-scripts.amd64-freebsd.r64356.tar.xz
2022/09/13 | 596 | systems/texlive/tlnet/archive/texlive-scripts.amd64-netbsd.r64356.tar.xz
2022/09/13 | 596 | systems/texlive/tlnet/archive/texlive-scripts.armhf-linux.r64356.tar.xz
-2024/07/08 | 436456 | systems/texlive/tlnet/archive/texlive-scripts.doc.r71736.tar.xz
-2024/07/01 | 940 | systems/texlive/tlnet/archive/texlive-scripts-extra.aarch64-linux.r71664.tar.xz
-2024/07/01 | 952 | systems/texlive/tlnet/archive/texlive-scripts-extra.amd64-freebsd.r71664.tar.xz
-2024/07/01 | 936 | systems/texlive/tlnet/archive/texlive-scripts-extra.amd64-netbsd.r71664.tar.xz
-2024/07/01 | 936 | systems/texlive/tlnet/archive/texlive-scripts-extra.armhf-linux.r71664.tar.xz
-2024/07/03 | 197200 | systems/texlive/tlnet/archive/texlive-scripts-extra.doc.r71685.tar.xz
-2024/07/01 | 948 | systems/texlive/tlnet/archive/texlive-scripts-extra.i386-freebsd.r71664.tar.xz
-2024/07/01 | 948 | systems/texlive/tlnet/archive/texlive-scripts-extra.i386-linux.r71664.tar.xz
-2024/07/01 | 936 | systems/texlive/tlnet/archive/texlive-scripts-extra.i386-netbsd.r71664.tar.xz
-2024/07/01 | 936 | systems/texlive/tlnet/archive/texlive-scripts-extra.i386-solaris.r71664.tar.xz
-2024/07/03 | 24180 | systems/texlive/tlnet/archive/texlive-scripts-extra.r71685.tar.xz
-2024/07/01 | 940 | systems/texlive/tlnet/archive/texlive-scripts-extra.universal-darwin.r71664.tar.xz
-2024/07/01 | 5112 | systems/texlive/tlnet/archive/texlive-scripts-extra.windows.r71669.tar.xz
-2024/07/01 | 940 | systems/texlive/tlnet/archive/texlive-scripts-extra.x86_64-cygwin.r71664.tar.xz
-2024/07/01 | 956 | systems/texlive/tlnet/archive/texlive-scripts-extra.x86_64-darwinlegacy.r71664.tar.xz
-2024/07/01 | 944 | systems/texlive/tlnet/archive/texlive-scripts-extra.x86_64-linuxmusl.r71664.tar.xz
-2024/07/01 | 952 | systems/texlive/tlnet/archive/texlive-scripts-extra.x86_64-linux.r71664.tar.xz
-2024/07/01 | 952 | systems/texlive/tlnet/archive/texlive-scripts-extra.x86_64-solaris.r71664.tar.xz
+2024/07/09 | 436428 | systems/texlive/tlnet/archive/texlive-scripts.doc.r71748.tar.xz
+2024/07/09 | 908 | systems/texlive/tlnet/archive/texlive-scripts-extra.aarch64-linux.r71749.tar.xz
+2024/07/09 | 920 | systems/texlive/tlnet/archive/texlive-scripts-extra.amd64-freebsd.r71749.tar.xz
+2024/07/09 | 908 | systems/texlive/tlnet/archive/texlive-scripts-extra.amd64-netbsd.r71749.tar.xz
+2024/07/09 | 904 | systems/texlive/tlnet/archive/texlive-scripts-extra.armhf-linux.r71749.tar.xz
+2024/07/09 | 197200 | systems/texlive/tlnet/archive/texlive-scripts-extra.doc.r71746.tar.xz
+2024/07/09 | 916 | systems/texlive/tlnet/archive/texlive-scripts-extra.i386-freebsd.r71749.tar.xz
+2024/07/09 | 916 | systems/texlive/tlnet/archive/texlive-scripts-extra.i386-linux.r71749.tar.xz
+2024/07/09 | 904 | systems/texlive/tlnet/archive/texlive-scripts-extra.i386-netbsd.r71749.tar.xz
+2024/07/09 | 908 | systems/texlive/tlnet/archive/texlive-scripts-extra.i386-solaris.r71749.tar.xz
+2024/07/09 | 22016 | systems/texlive/tlnet/archive/texlive-scripts-extra.r71746.tar.xz
+2024/07/09 | 912 | systems/texlive/tlnet/archive/texlive-scripts-extra.universal-darwin.r71749.tar.xz
+2024/07/09 | 5076 | systems/texlive/tlnet/archive/texlive-scripts-extra.windows.r71749.tar.xz
+2024/07/09 | 908 | systems/texlive/tlnet/archive/texlive-scripts-extra.x86_64-cygwin.r71749.tar.xz
+2024/07/09 | 924 | systems/texlive/tlnet/archive/texlive-scripts-extra.x86_64-darwinlegacy.r71749.tar.xz
+2024/07/09 | 912 | systems/texlive/tlnet/archive/texlive-scripts-extra.x86_64-linuxmusl.r71749.tar.xz
+2024/07/09 | 920 | systems/texlive/tlnet/archive/texlive-scripts-extra.x86_64-linux.r71749.tar.xz
+2024/07/09 | 920 | systems/texlive/tlnet/archive/texlive-scripts-extra.x86_64-solaris.r71749.tar.xz
2022/09/13 | 596 | systems/texlive/tlnet/archive/texlive-scripts.i386-freebsd.r64356.tar.xz
2022/09/13 | 592 | systems/texlive/tlnet/archive/texlive-scripts.i386-linux.r64356.tar.xz
2022/09/13 | 596 | systems/texlive/tlnet/archive/texlive-scripts.i386-netbsd.r64356.tar.xz
2022/09/13 | 596 | systems/texlive/tlnet/archive/texlive-scripts.i386-solaris.r64356.tar.xz
-2024/07/08 | 114384 | systems/texlive/tlnet/archive/texlive-scripts.r71736.tar.xz
+2024/07/09 | 114372 | systems/texlive/tlnet/archive/texlive-scripts.r71748.tar.xz
2022/09/13 | 580 | systems/texlive/tlnet/archive/texlive-scripts.universal-darwin.r64356.tar.xz
2024/05/10 | 60592 | systems/texlive/tlnet/archive/texlive-scripts.windows.r71215.tar.xz
2022/09/13 | 596 | systems/texlive/tlnet/archive/texlive-scripts.x86_64-cygwin.r64356.tar.xz
@@ -318597,9 +318599,9 @@
2023/05/24 | 1988 | systems/texlive/tlnet/archive/textualicomma.r67201.tar.xz
2023/05/24 | 5352 | systems/texlive/tlnet/archive/textualicomma.source.r67201.tar.xz
2024/03/01 | 437472 | systems/texlive/tlnet/archive/tex.universal-darwin.r70274.tar.xz
-2019/02/28 | 252440 | systems/texlive/tlnet/archive/texvc.doc.r46844.tar.xz
-2019/02/28 | 1544 | systems/texlive/tlnet/archive/texvc.r46844.tar.xz
-2019/02/28 | 4016 | systems/texlive/tlnet/archive/texvc.source.r46844.tar.xz
+2024/07/09 | 305176 | systems/texlive/tlnet/archive/texvc.doc.r71744.tar.xz
+2024/07/09 | 1528 | systems/texlive/tlnet/archive/texvc.r71744.tar.xz
+2024/07/09 | 4428 | systems/texlive/tlnet/archive/texvc.source.r71744.tar.xz
2023/07/24 | 1080060 | systems/texlive/tlnet/archive/tex-virtual-academy-pl.doc.r67718.tar.xz
2023/07/24 | 492 | systems/texlive/tlnet/archive/tex-virtual-academy-pl.r67718.tar.xz
2023/04/05 | 142172 | systems/texlive/tlnet/archive/tex-vpat.doc.r66758.tar.xz
@@ -320369,16 +320371,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
2024/05/02 | 125808 | systems/texlive/tlnet/install-tl
-2024/07/08 | 5754716 | systems/texlive/tlnet/install-tl-unx.tar.gz
-2024/07/08 | 152 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512
-2024/07/08 | 488 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512.asc
+2024/07/09 | 5752835 | systems/texlive/tlnet/install-tl-unx.tar.gz
+2024/07/09 | 152 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512
+2024/07/09 | 488 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512.asc
2024/04/13 | 5743 | systems/texlive/tlnet/install-tl-windows.bat
-2024/07/08 | 27715879 | systems/texlive/tlnet/install-tl-windows.exe
-2024/07/08 | 153 | systems/texlive/tlnet/install-tl-windows.exe.sha512
-2024/07/08 | 488 | systems/texlive/tlnet/install-tl-windows.exe.sha512.asc
-2024/07/08 | 34425887 | systems/texlive/tlnet/install-tl.zip
-2024/07/08 | 145 | systems/texlive/tlnet/install-tl.zip.sha512
-2024/07/08 | 488 | systems/texlive/tlnet/install-tl.zip.sha512.asc
+2024/07/09 | 27716796 | systems/texlive/tlnet/install-tl-windows.exe
+2024/07/09 | 153 | systems/texlive/tlnet/install-tl-windows.exe.sha512
+2024/07/09 | 488 | systems/texlive/tlnet/install-tl-windows.exe.sha512.asc
+2024/07/09 | 34425877 | systems/texlive/tlnet/install-tl.zip
+2024/07/09 | 145 | systems/texlive/tlnet/install-tl.zip.sha512
+2024/07/09 | 488 | systems/texlive/tlnet/install-tl.zip.sha512.asc
2024/03/13 | 1229 | systems/texlive/tlnet/README.md
2024/03/13 | 0 | systems/texlive/tlnet/TEXLIVE_2024
2024/01/02 | 9011 | systems/texlive/tlnet/tlpkg/gpg/pubring.gpg
@@ -320388,7 +320390,7 @@
2024/01/02 | 1280 | systems/texlive/tlnet/tlpkg/gpg/trustdb.gpg
2024/01/16 | 50726 | systems/texlive/tlnet/tlpkg/installer/config.guess
2010/11/11 | 11651 | systems/texlive/tlnet/tlpkg/installer/COPYING.MinGW-runtime.txt
-2024/07/08 | 7267 | systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl
+2024/07/09 | 7246 | systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl
2024/07/03 | 228633 | 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
@@ -320430,12 +320432,12 @@
2023/02/21 | 20371 | systems/texlive/tlnet/tlpkg/TeXLive/TLCrypto.pm
2024/05/02 | 5898 | systems/texlive/tlnet/tlpkg/TeXLive/TLDownload.pm
2023/04/08 | 28167 | systems/texlive/tlnet/tlpkg/TeXLive/TLPaper.pm
-2024/07/08 | 19519730 | systems/texlive/tlnet/tlpkg/texlive.tlpdb
-2024/07/08 | 48 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5
+2024/07/09 | 19521066 | systems/texlive/tlnet/tlpkg/texlive.tlpdb
+2024/07/09 | 48 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5
2024/06/22 | 87725 | systems/texlive/tlnet/tlpkg/TeXLive/TLPDB.pm
-2024/07/08 | 144 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512
-2024/07/08 | 488 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc
-2024/07/08 | 2578852 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz
+2024/07/09 | 144 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512
+2024/07/09 | 488 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc
+2024/07/09 | 2581020 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz
2023/02/20 | 58928 | systems/texlive/tlnet/tlpkg/TeXLive/TLPOBJ.pm
2023/06/11 | 42749 | systems/texlive/tlnet/tlpkg/TeXLive/TLPSRC.pm
2023/02/21 | 16138 | systems/texlive/tlnet/tlpkg/TeXLive/TLTREE.pm
@@ -332021,7 +332023,7 @@
2014/07/05 | 611 | systems/win32/yandy/README
2014/07/05 | 1004628 | systems/win32/yandy/yandy-src.tar.xz
2014/07/05 | 1012416 | systems/win32/yandy.zip
-2024/07/09 | 186 | timestamp
+2024/07/10 | 186 | timestamp
2002/08/26 | 61898 | usergrps/dante/antrag.pdf
2002/08/26 | 118217 | usergrps/dante/antrag.ps
2021/11/11 | 917 | usergrps/dante/dtk/doc/beispiel.bib
diff --git a/FILES.byname.gz b/FILES.byname.gz
index 2af9a5e987..d5c1ea58d2 100644
--- a/FILES.byname.gz
+++ b/FILES.byname.gz
Binary files differ
diff --git a/FILES.last07days b/FILES.last07days
index 4e04f5e380..a69297cb93 100644
--- a/FILES.last07days
+++ b/FILES.last07days
@@ -1,3 +1,306 @@
+2024/07/09 | 99744 | graphics/pstricks/base/doc/pst-news24.pdf
+2024/07/09 | 996908 | macros/latex/contrib/typog/docs/typog.pdf
+2024/07/09 | 99233 | macros/latex/contrib/jnuexam/examfc-b-blank.pdf
+2024/07/09 | 99214 | macros/latex/contrib/jnuexam/examfc-a-blank.pdf
+2024/07/09 | 96842 | info/knuth-pdf/other/pktype-changes.pdf
+2024/07/09 | 948479 | info/knuth-hint/errata/errata.four.hnt
+2024/07/09 | 9344 | systems/texlive/tlnet/archive/tango.r71743.tar.xz
+2024/07/09 | 924 | systems/texlive/tlnet/archive/texlive-scripts-extra.x86_64-darwinlegacy.r71749.tar.xz
+2024/07/09 | 920 | systems/texlive/tlnet/archive/texlive-scripts-extra.x86_64-solaris.r71749.tar.xz
+2024/07/09 | 920 | systems/texlive/tlnet/archive/texlive-scripts-extra.x86_64-linux.r71749.tar.xz
+2024/07/09 | 920 | systems/texlive/tlnet/archive/texlive-scripts-extra.amd64-freebsd.r71749.tar.xz
+2024/07/09 | 9199 | macros/latex/contrib/typog/Makefile
+2024/07/09 | 916 | systems/texlive/tlnet/archive/texlive-scripts-extra.i386-linux.r71749.tar.xz
+2024/07/09 | 916 | systems/texlive/tlnet/archive/texlive-scripts-extra.i386-freebsd.r71749.tar.xz
+2024/07/09 | 912 | systems/texlive/tlnet/archive/texlive-scripts-extra.x86_64-linuxmusl.r71749.tar.xz
+2024/07/09 | 912 | systems/texlive/tlnet/archive/texlive-scripts-extra.universal-darwin.r71749.tar.xz
+2024/07/09 | 912 | macros/latex/contrib/easybook/README.md
+2024/07/09 | 909786 | info/knuth-hint/errata/errata.six.hnt
+2024/07/09 | 908 | systems/texlive/tlnet/archive/texlive-scripts-extra.x86_64-cygwin.r71749.tar.xz
+2024/07/09 | 908 | systems/texlive/tlnet/archive/texlive-scripts-extra.i386-solaris.r71749.tar.xz
+2024/07/09 | 908 | systems/texlive/tlnet/archive/texlive-scripts-extra.amd64-netbsd.r71749.tar.xz
+2024/07/09 | 908 | systems/texlive/tlnet/archive/texlive-scripts-extra.aarch64-linux.r71749.tar.xz
+2024/07/09 | 904 | systems/texlive/tlnet/archive/texlive-scripts-extra.i386-netbsd.r71749.tar.xz
+2024/07/09 | 904 | systems/texlive/tlnet/archive/texlive-scripts-extra.armhf-linux.r71749.tar.xz
+2024/07/09 | 904965 | info/knuth-hint/errata/errata.hnt
+2024/07/09 | 86829 | info/knuth-pdf/cweb/twinx-changes.pdf
+2024/07/09 | 86255 | macros/latex/contrib/easybook/easybook.dtx
+2024/07/09 | 85441 | macros/latex/contrib/jnuexam/jnuexam.pdf
+2024/07/09 | 840480 | macros/latex/contrib/synthslant/docs/synthslant.pdf
+2024/07/09 | 839862 | info/knuth-pdf/web/twill.pdf
+2024/07/09 | 838763 | info/knuth-pdf/cweb/cweave.pdf
+2024/07/09 | 828110 | info/knuth-hint/cweb/ctwill.hnt
+2024/07/09 | 824007 | info/knuth-hint/errata/errata.eleven.hnt
+2024/07/09 | 817883 | info/knuth-hint/mf/mf-changes.hnt
+2024/07/09 | 8106412 | graphics/pstricks/base.zip
+2024/07/09 | 806105 | info/knuth-hint/errata/errata.eight.hnt
+2024/07/09 | 805264 | systems/texlive/tlnet/archive/dvipdfmx.universal-darwin.r71749.tar.xz
+2024/07/09 | 7957 | macros/latex/contrib/synthslant/Makefile
+2024/07/09 | 789955 | info/knuth-pdf/other/dvicopy.pdf
+2024/07/09 | 789103 | info/knuth-hint/errata/errata.five.hnt
+2024/07/09 | 78866 | info/knuth-pdf/texware/pooltype-changes.pdf
+2024/07/09 | 767606 | macros/latex/contrib/jnuexam.zip
+2024/07/09 | 765097 | info/knuth-pdf/web/weave.pdf
+2024/07/09 | 745144 | info/knuth-hint/bibtex/bibtex.hnt
+2024/07/09 | 7433 | macros/latex/contrib/beamer-contrib/themes/moloch/beamerfontthememoloch.dtx
+2024/07/09 | 741534 | info/knuth-hint/errata/errata.seven.hnt
+2024/07/09 | 733431 | info/knuth-hint/errata/errata.one.hnt
+2024/07/09 | 731032 | info/knuth-hint/cweb/cwebman.hnt
+2024/07/09 | 728926 | info/knuth-hint/errata/errata.two.hnt
+2024/07/09 | 7281 | macros/latex/contrib/beamer-contrib/themes/moloch/beamerouterthememoloch.dtx
+2024/07/09 | 7246 | systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl
+2024/07/09 | 712514 | info/knuth-hint/cweb/cweave.hnt
+2024/07/09 | 7052 | macros/latex/contrib/beamer-contrib/themes/moloch/beamercolorthememoloch.dtx
+2024/07/09 | 705180 | info/knuth-pdf/mfware/gftodvi.pdf
+2024/07/09 | 703121 | info/knuth-hint/other/dvicopy.hnt
+2024/07/09 | 696325 | info/knuth-hint/mfware/gftodvi.hnt
+2024/07/09 | 69556 | macros/latex/contrib/jnuexam/examfe-b-answer.pdf
+2024/07/09 | 69509 | macros/latex/contrib/jnuexam/examfe-a-answer.pdf
+2024/07/09 | 676231 | macros/latex/contrib/easybook.zip
+2024/07/09 | 675856 | info/knuth-hint/web/twill.hnt
+2024/07/09 | 65775 | macros/latex/contrib/jnuexam/examfe-b-blank.pdf
+2024/07/09 | 65749 | macros/latex/contrib/jnuexam/examfe-a-blank.pdf
+2024/07/09 | 654030 | info/knuth-hint/web/weave.hnt
+2024/07/09 | 6481 | macros/latex/contrib/beamer-contrib/themes/moloch/CHANGELOG.md
+2024/07/09 | 639939 | graphics/pgf/contrib/lie-hasse.zip
+2024/07/09 | 63481 | macros/latex/contrib/randexam/randexam.pdf
+2024/07/09 | 631928 | graphics/pgf/contrib/lie-hasse/lie-hasse.pdf
+2024/07/09 | 629416 | info/knuth-pdf/bibtex/bibtex-changes.pdf
+2024/07/09 | 625902 | macros/latex/contrib/easybook/easybook.pdf
+2024/07/09 | 620020 | info/knuth-hint/bibtex/bibtex-changes.hnt
+2024/07/09 | 601777 | info/knuth-hint/errata/errorlog.hnt
+2024/07/09 | 591493 | info/knuth-hint/web/tangle.hnt
+2024/07/09 | 590266 | info/knuth-hint/texware/dvitype.hnt
+2024/07/09 | 58937 | graphics/pgf/contrib/lie-hasse/lie-hasse.sty
+2024/07/09 | 588023 | info/knuth-hint/etc/vptovf.hnt
+2024/07/09 | 587 | graphics/pgf/contrib/lie-hasse/README
+2024/07/09 | 585159 | info/knuth-hint/web/webman.hnt
+2024/07/09 | 580773 | info/knuth-pdf/web/tangle.pdf
+2024/07/09 | 579980 | systems/texlive/tlnet/archive/lastpage.doc.r71740.tar.xz
+2024/07/09 | 5752835 | systems/texlive/tlnet/install-tl-unx.tar.gz
+2024/07/09 | 5694088 | systems/texlive/tlnet/archive/pgf-periodictable.doc.r71739.tar.xz
+2024/07/09 | 568458 | info/knuth-hint/cweb/cweave-changes.hnt
+2024/07/09 | 561616 | info/knuth-hint/texware/pltotf.hnt
+2024/07/09 | 556019 | info/knuth-pdf/etc/vptovf.pdf
+2024/07/09 | 55345557 | info/knuth-pdf.zip
+2024/07/09 | 54960646 | info/knuth-hint.zip
+2024/07/09 | 549042 | info/knuth-hint/cweb/common.hnt
+2024/07/09 | 540588 | systems/texlive/tlnet/archive/msu-thesis.doc.r71741.tar.xz
+2024/07/09 | 5402637 | info/knuth-pdf/pdftex/pdftex.pdf
+2024/07/09 | 52986 | info/knuth-pdf/cweb/refsort-changes.pdf
+2024/07/09 | 523645 | info/knuth-hint/mfware/mft.hnt
+2024/07/09 | 522888 | info/knuth-hint/tie/tie.hnt
+2024/07/09 | 519878 | info/knuth-hint/etc/vftovp.hnt
+2024/07/09 | 516572 | systems/texlive/tlnet/archive/pgf-periodictable.r71739.tar.xz
+2024/07/09 | 514141 | macros/latex/contrib/typog/docs/typog-grep.1.pdf
+2024/07/09 | 510409 | info/knuth-hint/mfware/gftodvi-changes.hnt
+2024/07/09 | 5076 | systems/texlive/tlnet/archive/texlive-scripts-extra.windows.r71749.tar.xz
+2024/07/09 | 503518 | info/knuth-hint/mfware/gftype.hnt
+2024/07/09 | 502625 | info/knuth-hint/other/patgen.hnt
+2024/07/09 | 497733 | info/knuth-hint/mp/mpost.hnt
+2024/07/09 | 49579 | macros/latex/contrib/randexam/randexam-a-answer.pdf
+2024/07/09 | 49565 | macros/latex/contrib/randexam/randexam-b-answer.pdf
+2024/07/09 | 49552 | macros/latex/contrib/randexam/randexam.cls
+2024/07/09 | 492258 | info/knuth-hint/mfware/gftopk.hnt
+2024/07/09 | 48 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5
+2024/07/09 | 488 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc
+2024/07/09 | 488 | systems/texlive/tlnet/install-tl.zip.sha512.asc
+2024/07/09 | 488 | systems/texlive/tlnet/install-tl-windows.exe.sha512.asc
+2024/07/09 | 488 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512.asc
+2024/07/09 | 488689 | info/knuth-hint/web/weave-changes.hnt
+2024/07/09 | 487806 | info/knuth-hint/texware/tftopl.hnt
+2024/07/09 | 487785 | info/knuth-hint/cweb/ctangle.hnt
+2024/07/09 | 4826 | graphics/pstricks/base/Changes
+2024/07/09 | 480015 | info/knuth-hint/other/dvicopy-changes.hnt
+2024/07/09 | 476784 | info/knuth-hint/cweb/common-changes.hnt
+2024/07/09 | 474185 | info/knuth-pdf/texware/pltotf.pdf
+2024/07/09 | 470989 | info/knuth-hint/cweb/ctangle-changes.hnt
+2024/07/09 | 470108 | systems/texlive/tlnet/archive/dvipdfmx.i386-linux.r71749.tar.xz
+2024/07/09 | 469704 | info/knuth-pdf/texware/dvitype.pdf
+2024/07/09 | 466175 | info/knuth-hint/mf/trapman.hnt
+2024/07/09 | 465076 | systems/texlive/tlnet/archive/dvipdfmx.x86_64-solaris.r71749.tar.xz
+2024/07/09 | 461387 | info/knuth-pdf/etc/vftovp.pdf
+2024/07/09 | 460532 | systems/texlive/tlnet/archive/dvipdfmx.x86_64-linuxmusl.r71749.tar.xz
+2024/07/09 | 4591 | graphics/pstricks/base/doc/pst-news24.tex
+2024/07/09 | 453833 | info/knuth-hint/ctie/ctie.hnt
+2024/07/09 | 453283 | info/knuth-hint/web/tangle-changes.hnt
+2024/07/09 | 4524 | systems/texlive/tlnet/archive/lastpage.r71740.tar.xz
+2024/07/09 | 451060 | info/knuth-hint/other/pktogf.hnt
+2024/07/09 | 450713 | info/knuth-hint/tex/tripman.hnt
+2024/07/09 | 444867 | info/knuth-hint/ctie/ctie-changes.hnt
+2024/07/09 | 444596 | info/knuth-hint/mfware/mft-changes.hnt
+2024/07/09 | 444032 | info/knuth-hint/tie/tie-changes.hnt
+2024/07/09 | 443746 | info/knuth-pdf/errata/errata.three.pdf
+2024/07/09 | 4428 | systems/texlive/tlnet/archive/texvc.source.r71744.tar.xz
+2024/07/09 | 4408 | macros/latex/contrib/beamer-contrib/themes/moloch/beamerthememoloch.dtx
+2024/07/09 | 4392280 | info/knuth-pdf/hitex/hitex.pdf
+2024/07/09 | 438664 | systems/texlive/tlnet/archive/dvipdfmx.x86_64-linux.r71749.tar.xz
+2024/07/09 | 437653 | info/knuth-hint/tex/glue.hnt
+2024/07/09 | 436428 | systems/texlive/tlnet/archive/texlive-scripts.doc.r71748.tar.xz
+2024/07/09 | 433208 | systems/texlive/tlnet/archive/tango.doc.r71743.tar.xz
+2024/07/09 | 429279 | info/knuth-hint/texware/dvitype-changes.hnt
+2024/07/09 | 427936 | systems/texlive/tlnet/archive/dvipdfmx.i386-solaris.r71749.tar.xz
+2024/07/09 | 4251718 | info/knuth-hint/xetex/xetex.pdf
+2024/07/09 | 4248217 | info/knuth-pdf/xetex/xetex.pdf
+2024/07/09 | 421763 | macros/latex/contrib/typog/typog.dtx
+2024/07/09 | 41972 | systems/texlive/tlnet/archive/luamplib.source.r71745.tar.xz
+2024/07/09 | 418765 | info/knuth-hint/cweb/refsort.hnt
+2024/07/09 | 4179204 | info/knuth-pdf/mp/mp.pdf
+2024/07/09 | 417800 | info/knuth-pdf/cweb/cweave-changes.pdf
+2024/07/09 | 413920 | info/knuth-pdf/errata/errata.twelve.pdf
+2024/07/09 | 41376 | macros/latex/contrib/randexam/randexam-a-blank.pdf
+2024/07/09 | 41319 | macros/latex/contrib/randexam/randexam-b-blank.pdf
+2024/07/09 | 413008 | systems/texlive/tlnet/archive/dvipdfmx.aarch64-linux.r71749.tar.xz
+2024/07/09 | 412896 | systems/texlive/tlnet/archive/dvipdfmx.x86_64-darwinlegacy.r71749.tar.xz
+2024/07/09 | 4122861 | biblio/ctan-bibdata.zip
+2024/07/09 | 411326 | info/knuth-hint/mfware/gftopk-changes.hnt
+2024/07/09 | 410744 | systems/texlive/tlnet/archive/dvipdfmx.x86_64-cygwin.r71749.tar.xz
+2024/07/09 | 407766 | info/knuth-hint/errata/errata.nine.hnt
+2024/07/09 | 406825 | info/knuth-hint/mfware/gftype-changes.hnt
+2024/07/09 | 404270 | info/knuth-pdf/errata/errorlog.pdf
+2024/07/09 | 403340 | info/knuth-hint/texware/pooltype.hnt
+2024/07/09 | 402456 | info/knuth-pdf/other/patgen.pdf
+2024/07/09 | 402211 | info/knuth-hint/etc/vftovp-changes.hnt
+2024/07/09 | 402037 | macros/latex/contrib/typog/docs/typog-example.pdf
+2024/07/09 | 400727 | info/knuth-hint/texware/pooltype-changes.hnt
+2024/07/09 | 398532 | systems/texlive/tlnet/archive/dvipdfmx.amd64-freebsd.r71749.tar.xz
+2024/07/09 | 398264 | systems/texlive/tlnet/archive/dvipdfmx.i386-freebsd.r71749.tar.xz
+2024/07/09 | 397404 | info/knuth-hint/other/pktype.hnt
+2024/07/09 | 395988 | systems/texlive/tlnet/archive/dvipdfmx.amd64-netbsd.r71749.tar.xz
+2024/07/09 | 394206 | info/knuth-hint/cweb/twinx.hnt
+2024/07/09 | 393438 | info/knuth-hint/cweb/twinx-changes.hnt
+2024/07/09 | 391090 | info/knuth-hint/etc/vptovf-changes.hnt
+2024/07/09 | 389351 | info/knuth-pdf/mfware/mft.pdf
+2024/07/09 | 386777 | info/knuth-hint/texware/pltotf-changes.hnt
+2024/07/09 | 385968 | systems/texlive/tlnet/archive/prtec.doc.r71742.tar.xz
+2024/07/09 | 385411 | info/knuth-hint/texware/tftopl-changes.hnt
+2024/07/09 | 383053 | info/knuth-hint/cweb/refsort-changes.hnt
+2024/07/09 | 381756 | info/knuth-pdf/cweb/ctangle.pdf
+2024/07/09 | 381492 | systems/texlive/tlnet/archive/dvipdfmx.armhf-linux.r71749.tar.xz
+2024/07/09 | 378717 | info/knuth-pdf/errata/errata.ten.pdf
+2024/07/09 | 376122 | info/knuth-hint/other/pktogf-changes.hnt
+2024/07/09 | 3708800 | biblio/ctan-bibdata/ctan.pdf
+2024/07/09 | 370755 | info/knuth-pdf/mfware/gftopk.pdf
+2024/07/09 | 368795 | info/knuth-pdf/errata/errata.pdf
+2024/07/09 | 368455 | info/knuth-hint/other/pktype-changes.hnt
+2024/07/09 | 368088 | systems/texlive/tlnet/archive/dvipdfmx.i386-netbsd.r71749.tar.xz
+2024/07/09 | 364470 | info/knuth-pdf/cweb/common.pdf
+2024/07/09 | 3614612 | info/knuth-pdf/tex/tex.pdf
+2024/07/09 | 360811 | info/knuth-pdf/texware/tftopl.pdf
+2024/07/09 | 357792 | info/knuth-pdf/cweb/cwebman.pdf
+2024/07/09 | 354208 | systems/texlive/tlnet/archive/dvipdfmx.windows.r71749.tar.xz
+2024/07/09 | 346856 | info/knuth-hint/other/patgen-changes.hnt
+2024/07/09 | 34425877 | systems/texlive/tlnet/install-tl.zip
+2024/07/09 | 334571 | info/knuth-pdf/errata/errata.four.pdf
+2024/07/09 | 327409 | info/knuth-pdf/mfware/gftype.pdf
+2024/07/09 | 325778 | info/knuth-pdf/tex/tripman.pdf
+2024/07/09 | 3231757 | info/knuth-pdf/mf/mf.pdf
+2024/07/09 | 318062 | info/knuth-pdf/other/pktogf.pdf
+2024/07/09 | 318016 | info/knuth-pdf/other/dvicopy-changes.pdf
+2024/07/09 | 316276 | info/knuth-pdf/web/webman.pdf
+2024/07/09 | 3159 | macros/latex/contrib/beamer-contrib/themes/moloch/README.md
+2024/07/09 | 315714 | macros/latex/contrib/beamer-contrib/themes/moloch.zip
+2024/07/09 | 3125132 | systems/texlive/tlnet/archive/dvipdfmx.doc.r71746.tar.xz
+2024/07/09 | 311712 | info/knuth-pdf/tie/tie.pdf
+2024/07/09 | 306863 | info/knuth-pdf/errata/errata.five.pdf
+2024/07/09 | 305176 | systems/texlive/tlnet/archive/texvc.doc.r71744.tar.xz
+2024/07/09 | 303640 | info/knuth-pdf/errata/errata.six.pdf
+2024/07/09 | 300726 | info/knuth-pdf/mp/mpost.pdf
+2024/07/09 | 295500 | macros/latex/contrib/beamer-contrib/themes/moloch/moloch.pdf
+2024/07/09 | 293618 | macros/latex/contrib/synthslant/synthslant.dtx
+2024/07/09 | 29028 | systems/texlive/tlnet/archive/dvipdfmx.r71746.tar.xz
+2024/07/09 | 289149 | info/knuth-pdf/web/weave-changes.pdf
+2024/07/09 | 2874889 | biblio/ctan-bibdata/ctan.bib
+2024/07/09 | 283980 | info/knuth-pdf/ctie/ctie.pdf
+2024/07/09 | 280945 | info/knuth-pdf/mfware/gftodvi-changes.pdf
+2024/07/09 | 27716796 | systems/texlive/tlnet/install-tl-windows.exe
+2024/07/09 | 275286 | info/knuth-pdf/errata/errata.eight.pdf
+2024/07/09 | 2723866 | info/knuth-pdf/pdftex/pdftex-changes.pdf
+2024/07/09 | 270067 | info/knuth-pdf/errata/errata.one.pdf
+2024/07/09 | 267573 | info/knuth-pdf/errata/errata.seven.pdf
+2024/07/09 | 266243 | info/knuth-pdf/mf/trapman.pdf
+2024/07/09 | 262160 | info/knuth-pdf/web/tangle-changes.pdf
+2024/07/09 | 259019 | info/knuth-pdf/other/pktype.pdf
+2024/07/09 | 2581020 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz
+2024/07/09 | 255898 | macros/latex/contrib/randexam.zip
+2024/07/09 | 250940 | info/knuth-pdf/errata/errata.eleven.pdf
+2024/07/09 | 24801 | macros/latex/contrib/randexam/randexam.tex
+2024/07/09 | 247190 | info/knuth-pdf/errata/errata.two.pdf
+2024/07/09 | 2467 | macros/latex/contrib/typog/README.md
+2024/07/09 | 2353558 | info/knuth-pdf/xetex/xetex-changes.pdf
+2024/07/09 | 2347 | macros/latex/contrib/typog/typog.ins
+2024/07/09 | 2344346 | info/knuth-hint/xetex/xetex-changes.pdf
+2024/07/09 | 231562 | info/knuth-pdf/cweb/common-changes.pdf
+2024/07/09 | 226976 | systems/texlive/tlnet/archive/luamplib.doc.r71745.tar.xz
+2024/07/09 | 22676 | systems/texlive/tlnet/archive/lastpage.source.r71740.tar.xz
+2024/07/09 | 225044 | info/knuth-pdf/cweb/ctangle-changes.pdf
+2024/07/09 | 22052 | systems/texlive/tlnet/archive/luamplib.r71745.tar.xz
+2024/07/09 | 22016 | systems/texlive/tlnet/archive/texlive-scripts-extra.r71746.tar.xz
+2024/07/09 | 2182740 | info/knuth-hint/pdftex/pdftex.hnt
+2024/07/09 | 216902 | info/knuth-pdf/etc/vftovp-changes.pdf
+2024/07/09 | 2128059 | info/knuth-hint/hitex/hitex.hnt
+2024/07/09 | 206765 | info/knuth-pdf/mfware/mft-changes.pdf
+2024/07/09 | 202774 | info/knuth-pdf/etc/vptovf-changes.pdf
+2024/07/09 | 20139 | macros/latex/contrib/beamer-contrib/themes/moloch/LICENSE
+2024/07/09 | 1989124 | macros/latex/contrib/typog.zip
+2024/07/09 | 198043 | info/knuth-pdf/tex/glue.pdf
+2024/07/09 | 197200 | systems/texlive/tlnet/archive/texlive-scripts-extra.doc.r71746.tar.xz
+2024/07/09 | 19521066 | systems/texlive/tlnet/tlpkg/texlive.tlpdb
+2024/07/09 | 194586 | info/knuth-pdf/texware/dvitype-changes.pdf
+2024/07/09 | 19441 | macros/latex/contrib/jnuexam/jnuexam.cls
+2024/07/09 | 194209 | info/knuth-pdf/cweb/twinx.pdf
+2024/07/09 | 1939 | macros/latex/contrib/synthslant/README.md
+2024/07/09 | 191709 | info/knuth-pdf/texware/pooltype.pdf
+2024/07/09 | 19042 | macros/latex/contrib/typog/LICENSE
+2024/07/09 | 19042 | macros/latex/contrib/synthslant/LICENSE
+2024/07/09 | 1894 | macros/latex/contrib/synthslant/synthslant.ins
+2024/07/09 | 1869694 | info/knuth-pdf/tex/tex-changes.pdf
+2024/07/09 | 1818565 | info/knuth-hint/mp/mp.hnt
+2024/07/09 | 181403 | macros/latex/contrib/synthslant/docs/synthslant-gauge.pdf
+2024/07/09 | 179394 | info/knuth-pdf/texware/pltotf-changes.pdf
+2024/07/09 | 17407 | graphics/pgf/contrib/lie-hasse/lie-hasse.tex
+2024/07/09 | 17233 | graphics/pstricks/base/doc/pstricks-bug.tex
+2024/07/09 | 1678 | biblio/ctan-bibdata/biblatex-ctan/ctan.bbx
+2024/07/09 | 162976 | info/knuth-pdf/cweb/refsort.pdf
+2024/07/09 | 1625074 | info/knuth-hint/tex/tex.hnt
+2024/07/09 | 160857 | info/knuth-pdf/texware/tftopl-changes.pdf
+2024/07/09 | 158662 | info/knuth-pdf/other/patgen-changes.pdf
+2024/07/09 | 1568599 | info/knuth-hint/mf/mf.hnt
+2024/07/09 | 15661 | macros/latex/contrib/beamer-contrib/themes/moloch/moloch.tex
+2024/07/09 | 156353 | info/knuth-pdf/errata/errata.nine.pdf
+2024/07/09 | 153 | systems/texlive/tlnet/install-tl-windows.exe.sha512
+2024/07/09 | 152 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512
+2024/07/09 | 1528 | systems/texlive/tlnet/archive/texvc.r71744.tar.xz
+2024/07/09 | 151802 | info/knuth-hint/index.pdf
+2024/07/09 | 151266 | info/knuth-pdf/index.pdf
+2024/07/09 | 148214 | info/knuth-pdf/mfware/gftopk-changes.pdf
+2024/07/09 | 145 | systems/texlive/tlnet/install-tl.zip.sha512
+2024/07/09 | 145326 | info/knuth-pdf/ctie/ctie-changes.pdf
+2024/07/09 | 144 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512
+2024/07/09 | 13796 | systems/texlive/tlnet/archive/msu-thesis.r71741.tar.xz
+2024/07/09 | 137496 | info/knuth-pdf/mfware/gftype-changes.pdf
+2024/07/09 | 13717 | macros/latex/contrib/beamer-contrib/themes/moloch/beamerinnerthememoloch.dtx
+2024/07/09 | 1327941 | info/knuth-pdf/bibtex/bibtex.pdf
+2024/07/09 | 130255 | info/knuth-pdf/tie/tie-changes.pdf
+2024/07/09 | 1296 | macros/latex/contrib/beamer-contrib/themes/moloch/beamerthememoloch.ins
+2024/07/09 | 1286651 | info/knuth-hint/pdftex/pdftex-changes.hnt
+2024/07/09 | 126145 | graphics/pstricks/base/generic/pstricks.tex
+2024/07/09 | 124016 | info/knuth-pdf/other/pktogf-changes.pdf
+2024/07/09 | 1216755 | info/knuth-pdf/mf/mf-changes.pdf
+2024/07/09 | 11997 | info/knuth-hint/index.html
+2024/07/09 | 1177093 | macros/latex/contrib/synthslant.zip
+2024/07/09 | 11747 | info/knuth-pdf/index.html
+2024/07/09 | 11620 | systems/texlive/tlnet/archive/prtec.r71742.tar.xz
+2024/07/09 | 1158523 | info/knuth-hint/errata/errata.three.hnt
+2024/07/09 | 1147761 | info/knuth-pdf/cweb/ctwill.pdf
+2024/07/09 | 114372 | systems/texlive/tlnet/archive/texlive-scripts.r71748.tar.xz
+2024/07/09 | 113078 | macros/latex/contrib/jnuexam/examfc-a-answer.pdf
+2024/07/09 | 112978 | macros/latex/contrib/jnuexam/examfc-b-answer.pdf
+2024/07/09 | 1107166 | info/knuth-hint/errata/errata.twelve.hnt
+2024/07/09 | 1057095 | info/knuth-hint/errata/errata.ten.hnt
+2024/07/09 | 1048 | systems/texlive/tlnet/archive/collection-luatex.r71743.tar.xz
+2024/07/09 | 104028 | macros/latex/contrib/easybook/easybook.tex
+2024/07/09 | 1029743 | info/knuth-hint/tex/tex-changes.hnt
2024/07/08 | 9955 | macros/latex/contrib/msu-thesis/samples/MSU-thesis-testfile.tex
2024/07/08 | 987 | support/texlab/crates/references/src/label.rs
2024/07/08 | 987 | support/texlab/crates/commands/src/change_env.rs
@@ -27,7 +330,6 @@
2024/07/08 | 7601172 | support/texlab.zip
2024/07/08 | 759 | support/texlab/crates/texlab/src/features/rename.rs
2024/07/08 | 7563 | macros/latex/contrib/msu-thesis/samples/MSU-thesis-template.tex
-2024/07/08 | 7267 | systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl
2024/07/08 | 725 | support/texlab/crates/hover/src/package.rs
2024/07/08 | 724 | support/texlab/crates/completion/Cargo.toml
2024/07/08 | 710 | support/texlab/crates/distro/src/kpsewhich.rs
@@ -53,7 +355,6 @@
2024/07/08 | 58486 | support/texlab/crates/base-db/src/data.rs
2024/07/08 | 5799 | support/texlab/crates/diagnostics/src/tests.rs
2024/07/08 | 576 | support/texlab/crates/diagnostics/Cargo.toml
-2024/07/08 | 5754716 | systems/texlive/tlnet/install-tl-unx.tar.gz
2024/07/08 | 565 | support/texlab/crates/texlab/src/features/folding.rs
2024/07/08 | 5655 | support/texlab/crates/symbols/src/workspace/sort.rs
2024/07/08 | 564613 | macros/latex/contrib/msu-thesis.zip
@@ -77,11 +378,6 @@
2024/07/08 | 50267 | macros/latex/contrib/tango/doc/tango-fr.tex
2024/07/08 | 499 | support/texlab/crates/symbols/Cargo.toml
2024/07/08 | 492 | support/texlab/crates/bibtex-utils/Cargo.toml
-2024/07/08 | 48 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5
-2024/07/08 | 488 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc
-2024/07/08 | 488 | systems/texlive/tlnet/install-tl.zip.sha512.asc
-2024/07/08 | 488 | systems/texlive/tlnet/install-tl-windows.exe.sha512.asc
-2024/07/08 | 488 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512.asc
2024/07/08 | 4863 | support/texlab/crates/completion/src/providers/include.rs
2024/07/08 | 483 | support/texlab/crates/hover/Cargo.toml
2024/07/08 | 4820 | support/texlab/crates/parser/src/config.rs
@@ -98,11 +394,9 @@
2024/07/08 | 444 | support/texlab/crates/texlab/benches/bench_main.rs
2024/07/08 | 44454 | support/texlab/crates/parser/src/build_log/tests.rs
2024/07/08 | 4431 | support/texlab/crates/completion/src/providers/label_ref.rs
-2024/07/08 | 436456 | systems/texlive/tlnet/archive/texlive-scripts.doc.r71736.tar.xz
2024/07/08 | 429 | support/texlab/crates/parser/Cargo.toml
2024/07/08 | 4290 | support/texlab/crates/completion/src/providers/environment.rs
2024/07/08 | 42017 | support/texlab/crates/texlab/src/server.rs
-2024/07/08 | 4122820 | biblio/ctan-bibdata.zip
2024/07/08 | 409 | support/texlab/crates/texlab/src/features/reference.rs
2024/07/08 | 39858 | support/texlab/CHANGELOG.md
2024/07/08 | 3972 | support/texlab/crates/diagnostics/src/manager.rs
@@ -118,7 +412,6 @@
2024/07/08 | 380190 | support/texlab/images/demo.gif
2024/07/08 | 378 | support/texlab/crates/definition/Cargo.toml
2024/07/08 | 3740 | systems/texlive/tlnet/archive/colortbl.r71734.tar.xz
-2024/07/08 | 3708800 | biblio/ctan-bibdata/ctan.pdf
2024/07/08 | 366 | support/texlab/crates/ipc/Cargo.toml
2024/07/08 | 3660 | systems/texlive/tlnet/archive/fge.source.r71737.tar.xz
2024/07/08 | 3636 | support/texlab/crates/diagnostics/src/grammar/tex.rs
@@ -137,7 +430,6 @@
2024/07/08 | 3457 | support/texlab/crates/texlab/src/client.rs
2024/07/08 | 3453 | support/texlab/crates/base-db/src/deps/discover.rs
2024/07/08 | 3444 | support/texlab/crates/texlab/src/main.rs
-2024/07/08 | 34425887 | systems/texlive/tlnet/install-tl.zip
2024/07/08 | 334 | support/texlab/crates/texlab/src/features/hover.rs
2024/07/08 | 3342 | support/texlab/crates/base-db/src/config.rs
2024/07/08 | 3337 | support/texlab/crates/references/src/tests.rs
@@ -155,10 +447,8 @@
2024/07/08 | 301487 | install/macros/luatex/generic/luamplib.tds.zip
2024/07/08 | 2975 | macros/luatex/generic/luamplib/Makefile
2024/07/08 | 2940 | macros/latex/contrib/prtec/README.md
-2024/07/08 | 2874532 | biblio/ctan-bibdata/ctan.bib
2024/07/08 | 2781 | support/texlab/crates/base-db/src/semantics/bib.rs
2024/07/08 | 277 | macros/latex/contrib/msu-thesis/samples/chap1bib.tex
-2024/07/08 | 27715879 | systems/texlive/tlnet/install-tl-windows.exe
2024/07/08 | 275839 | macros/luatex/generic/luamplib.zip
2024/07/08 | 2736 | support/texlab/crates/definition/src/tests.rs
2024/07/08 | 2716 | support/texlab/crates/bibtex-utils/src/field/date.rs
@@ -171,7 +461,6 @@
2024/07/08 | 2609 | support/texlab/crates/texlab/src/server/extensions.rs
2024/07/08 | 2600 | support/texlab/crates/completion/src/providers/glossary.rs
2024/07/08 | 2586 | support/texlab/texlab.tex
-2024/07/08 | 2578852 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz
2024/07/08 | 255224 | systems/texlive/tlnet/archive/pgf-spectra.r71735.tar.xz
2024/07/08 | 2543 | support/texlab/crates/distro/src/lib.rs
2024/07/08 | 2504 | support/texlab/crates/diagnostics/src/labels.rs
@@ -211,7 +500,6 @@
2024/07/08 | 197 | support/texlab/crates/texlab/src/features.rs
2024/07/08 | 1974 | support/texlab/crates/symbols/src/document/bib.rs
2024/07/08 | 196 | support/texlab/crates/bibtex-utils/src/field.rs
-2024/07/08 | 19519730 | systems/texlive/tlnet/tlpkg/texlive.tlpdb
2024/07/08 | 18868 | support/texlab/crates/syntax/src/latex/cst.rs
2024/07/08 | 18632 | systems/texlive/tlnet/archive/easybook.r71733.tar.xz
2024/07/08 | 18628 | macros/luatex/generic/luamplib/NEWS
@@ -233,7 +521,6 @@
2024/07/08 | 170120 | macros/latex/contrib/tango/doc/tango-fr.pdf
2024/07/08 | 1698 | support/texlab/crates/folding/src/tests.rs
2024/07/08 | 169854 | support/texlab/crates/parser/src/bibtex/tests.rs
-2024/07/08 | 1678 | biblio/ctan-bibdata/biblatex-ctan/ctan.bbx
2024/07/08 | 1677 | support/texlab/crates/bibtex-utils/src/field/number.rs
2024/07/08 | 165 | support/texlab/crates/diagnostics/src/lib.rs
2024/07/08 | 1636 | support/texlab/crates/completion/src/providers/label_def.rs
@@ -248,18 +535,14 @@
2024/07/08 | 1569 | support/texlab/crates/commands/src/placeholders.rs
2024/07/08 | 15638 | macros/latex/contrib/prtec/prtec.cls
2024/07/08 | 1552 | support/texlab/crates/completion/src/providers/color_model.rs
-2024/07/08 | 153 | systems/texlive/tlnet/install-tl-windows.exe.sha512
-2024/07/08 | 152 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512
2024/07/08 | 15164 | systems/texlive/tlnet/archive/mf2pt1.r71731.tar.xz
2024/07/08 | 1513 | support/texlab/crates/rename/src/entry.rs
2024/07/08 | 1496 | support/texlab/crates/references/src/entry.rs
2024/07/08 | 1493548 | systems/texlive/tlnet/archive/tex4ht.source.r71730.tar.xz
2024/07/08 | 149248 | macros/latex/contrib/prtec/sample-figure.pdf
2024/07/08 | 1465868 | systems/texlive/tlnet/archive/esami.doc.r71732.tar.xz
-2024/07/08 | 145 | systems/texlive/tlnet/install-tl.zip.sha512
2024/07/08 | 1459 | support/texlab/crates/completion/src/util/builder.rs
2024/07/08 | 1456 | support/texlab/crates/rename/src/lib.rs
-2024/07/08 | 144 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512
2024/07/08 | 1439 | support/texlab/crates/base-db/src/semantics.rs
2024/07/08 | 14338 | support/texlab/crates/symbols/src/document/tests.rs
2024/07/08 | 1412 | support/texlab/crates/texlab/src/server/progress.rs
@@ -289,7 +572,6 @@
2024/07/08 | 1175 | support/texlab/crates/definition/src/label.rs
2024/07/08 | 1148 | support/texlab/crates/texlab/src/features/formatting.rs
2024/07/08 | 1146 | support/texlab/crates/links/src/tests.rs
-2024/07/08 | 114384 | systems/texlive/tlnet/archive/texlive-scripts.r71736.tar.xz
2024/07/08 | 11374 | support/texlab/crates/parser/src/bibtex.rs
2024/07/08 | 1127760 | systems/texlive/tlnet/archive/tex4ht.r71730.tar.xz
2024/07/08 | 1125 | support/texlab/crates/definition/src/lib.rs
@@ -312,7 +594,6 @@
2024/07/07 | 92285 | graphics/pgf/contrib/pgf-spectra/pgf-spectra.sty
2024/07/07 | 92025 | systems/win32/miktex/tm/packages/spbmark__doc.tar.lzma
2024/07/07 | 91381 | systems/win32/miktex/tm/packages/pdfx.tar.lzma
-2024/07/07 | 912 | macros/latex/contrib/easybook/README.md
2024/07/07 | 906 | systems/win32/miktex/tm/packages/pr.ini
2024/07/07 | 906332 | systems/texlive/tlnet/archive/dynkin-diagrams.doc.r71723.tar.xz
2024/07/07 | 8961 | systems/win32/miktex/tm/packages/resolsysteme__source.tar.lzma
@@ -320,7 +601,6 @@
2024/07/07 | 8886 | systems/win32/miktex/tm/packages/next/miktex-md5-bin-x64-2.9.tar.lzma
2024/07/07 | 887225 | systems/win32/miktex/tm/packages/dynkin-diagrams__doc.tar.lzma
2024/07/07 | 88620 | systems/win32/miktex/tm/packages/next/miktex-png-bin-x64-2.9.tar.lzma
-2024/07/07 | 86241 | macros/latex/contrib/easybook/easybook.dtx
2024/07/07 | 8545 | systems/win32/miktex/tm/packages/resolsysteme.tar.lzma
2024/07/07 | 829866 | systems/win32/miktex/tm/packages/next/miktex-pdftex-bin-x64-2.9.tar.lzma
2024/07/07 | 822198 | systems/win32/miktex/tm/packages/next/files.csv.lzma
@@ -346,7 +626,6 @@
2024/07/07 | 69652 | systems/win32/miktex/tm/packages/next/miktex-texify-bin-x64-2.9.tar.lzma
2024/07/07 | 6874851 | systems/win32/miktex/tm/packages/beautybook__doc.tar.lzma
2024/07/07 | 6825 | systems/win32/miktex/tm/packages/preview.tar.lzma
-2024/07/07 | 674974 | macros/latex/contrib/easybook.zip
2024/07/07 | 67458 | systems/win32/miktex/tm/packages/next/miktex-bibarts-bin-x64-2.9.tar.lzma
2024/07/07 | 6645 | systems/win32/miktex/tm/packages/lt3luabridge__source.tar.lzma
2024/07/07 | 6575 | graphics/pgf/contrib/pgf-spectra/README
@@ -359,7 +638,6 @@
2024/07/07 | 627576 | systems/texlive/tlnet/archive/pst-node.doc.r71724.tar.xz
2024/07/07 | 625 | macros/latex/contrib/esami/doc/examples/test11.tex
2024/07/07 | 625219 | systems/win32/miktex/tm/packages/easybook__doc.tar.lzma
-2024/07/07 | 624868 | macros/latex/contrib/easybook/easybook.pdf
2024/07/07 | 622862 | install/macros/latex/contrib/lastpage.tds.zip
2024/07/07 | 6201 | systems/win32/miktex/tm/packages/spbmark__source.tar.lzma
2024/07/07 | 6110425 | systems/win32/miktex/tm/packages/newtx.tar.lzma
@@ -554,7 +832,6 @@
2024/07/07 | 1056600 | systems/win32/miktex/tm/packages/babel__doc.tar.lzma
2024/07/07 | 104432 | systems/win32/miktex/tm/packages/next/miktex-epstopdf-bin-x64-2.9.tar.lzma
2024/07/07 | 104176 | systems/win32/miktex/tm/packages/next/miktex-lua53-bin-x64-2.9.tar.lzma
-2024/07/07 | 103704 | macros/latex/contrib/easybook/easybook.tex
2024/07/07 | 103586 | systems/win32/miktex/tm/packages/next/miktex-bibtex8bit-bin-x64-2.9.tar.lzma
2024/07/07 | 1026 | macros/latex/contrib/esami/doc/examples/test2.tex
2024/07/07 | 1023 | macros/latex/contrib/esami/doc/examples/test12.tex
@@ -687,7 +964,6 @@
2024/07/04 | 59784 | systems/texlive/tlnet/archive/ulthese.r71697.tar.xz
2024/07/04 | 59703 | macros/latex/contrib/unbtex/unbtexcite/unbtex-num-pt.bst
2024/07/04 | 592915 | macros/latex/contrib/unbtex/unbtex-example.pdf
-2024/07/04 | 579528 | systems/texlive/tlnet/archive/lastpage.doc.r71694.tar.xz
2024/07/04 | 5757 | macros/latex/contrib/unbtex/unbtex-example/anexo-a.tex
2024/07/04 | 54137 | macros/luatex/latex/longmath/longmath-doc.tex
2024/07/04 | 5346 | macros/luatex/latex/longmath/longmath-doc.cls
@@ -696,11 +972,9 @@
2024/07/04 | 503936 | macros/generic/lt3luabridge.zip
2024/07/04 | 497144 | macros/latex/contrib/resolsysteme.zip
2024/07/04 | 49164 | systems/texlive/tlnet/archive/tuda-ci.r71696.tar.xz
-2024/07/04 | 4412 | systems/texlive/tlnet/archive/lastpage.r71694.tar.xz
2024/07/04 | 4372 | macros/latex/contrib/unbtex/unbtex-example/capitulo4.tex
2024/07/04 | 43500 | macros/latex/contrib/resolsysteme/doc/ResolSysteme-doc.tex
2024/07/04 | 42602 | macros/latex/contrib/unbtex/unbtex-example/figuras/bodediagram.pdf
-2024/07/04 | 40380 | systems/texlive/tlnet/archive/luamplib.source.r71698.tar.xz
2024/07/04 | 373 | macros/latex/contrib/unbtex/unbtex-example/codigos/controle.m
2024/07/04 | 3559 | graphics/pstricks/contrib/pst-node/Changes
2024/07/04 | 34461 | macros/latex/contrib/unbtex/unbtex.cls
@@ -709,13 +983,10 @@
2024/07/04 | 253 | macros/generic/lt3luabridge/lt3luabridge.ins
2024/07/04 | 24772 | systems/texlive/tlnet/archive/ulthese.source.r71697.tar.xz
2024/07/04 | 2346076 | systems/texlive/tlnet/archive/mitthesis.doc.r71695.tar.xz
-2024/07/04 | 22424 | systems/texlive/tlnet/archive/lastpage.source.r71694.tar.xz
-2024/07/04 | 219272 | systems/texlive/tlnet/archive/luamplib.doc.r71698.tar.xz
2024/07/04 | 21898 | macros/latex/contrib/unbtex/unbtex-example/figuras/circuito.pdf
2024/07/04 | 217 | macros/generic/lt3luabridge/example.latex
2024/07/04 | 215 | macros/latex/contrib/unbtex/unbtex-example/capitulo5.tex
2024/07/04 | 21537 | macros/latex/contrib/unbtex/unbtex-example/figuras/diodocurva.pdf
-2024/07/04 | 21244 | systems/texlive/tlnet/archive/luamplib.r71698.tar.xz
2024/07/04 | 20598 | macros/latex/contrib/spbmark/spbmark.tex
2024/07/04 | 20498 | macros/latex/contrib/unbtex/unbtex-example/capitulo2.tex
2024/07/04 | 200069 | macros/latex/contrib/resolsysteme/doc/ResolSysteme-doc.pdf
@@ -752,16 +1023,12 @@
2024/07/03 | 9951 | macros/latex/contrib/profcollege/latex/PfCTriominos.tex
2024/07/03 | 9902 | macros/latex/contrib/profcollege/latex/PfCDecDeci.tex
2024/07/03 | 987 | macros/latex/contrib/profcollege/latex/PfCAllumettes.tex
-2024/07/03 | 9702 | macros/latex/contrib/tuda-ci/tex/tudamecheng.cfg
-2024/07/03 | 9523 | macros/latex/contrib/tuda-ci/tex/beamerinnerthemeTUDa2023.sty
2024/07/03 | 9501 | macros/latex/contrib/profcollege/latex/PfCLabyrintheJeu.tex
2024/07/03 | 94595 | macros/latex/contrib/profcollege/latex/PfCTableauxUnites.tex
2024/07/03 | 9435 | macros/latex/contrib/profcollege/latex/PfCReseauxSociaux.tex
2024/07/03 | 9404 | macros/latex/contrib/profcollege/latex/PfCPyramideCalculs.tex
-2024/07/03 | 9316 | macros/latex/contrib/tuda-ci/tex/beamerouterthemeTUDa2008.sty
2024/07/03 | 9078 | macros/latex/contrib/profcollege/latex/PfCCalisson.tex
2024/07/03 | 8956 | macros/latex/contrib/profcollege/latex/PfCBillard.tex
-2024/07/03 | 8839 | macros/latex/contrib/tuda-ci/example/DEMO-TUDaSciPoster.tex
2024/07/03 | 88088 | macros/latex/contrib/profcollege/metapost/PfCObjets.mp
2024/07/03 | 8711 | macros/latex/contrib/profcollege/latex/PfCShikaku.tex
2024/07/03 | 8676 | macros/latex/contrib/profcollege/latex/PfCYohaku.tex
@@ -770,21 +1037,17 @@
2024/07/03 | 8364 | macros/latex/contrib/profcollege/latex/PfCPixelArt.tex
2024/07/03 | 831 | macros/latex/contrib/profcollege/latex/PfCDobble.tex
2024/07/03 | 8166 | macros/latex/contrib/profcollege/latex/PfCPourcentage.tex
-2024/07/03 | 8130 | macros/latex/contrib/tuda-ci/tex/tudabeamer.cls
2024/07/03 | 809 | support/TeX4ht/source/tex4ht-cpright.tex
-2024/07/03 | 8042 | macros/latex/contrib/tuda-ci/example/DEMO-TUDaBeamer.tex
2024/07/03 | 7998 | macros/latex/contrib/profcollege/latex/PfCCalculsFractions.tex
2024/07/03 | 7962 | macros/latex/contrib/profcollege/latex/PfCDessinGradue.tex
2024/07/03 | 7906 | macros/latex/contrib/profcollege/latex/PfCMulJap.tex
2024/07/03 | 78780 | macros/latex/contrib/profcollege/latex/PfCReperage.tex
2024/07/03 | 7805 | macros/latex/contrib/profcollege/latex/PfCRepresenterTableur.tex
-2024/07/03 | 7769 | macros/latex/contrib/mitthesis/README.md
2024/07/03 | 7733 | macros/latex/contrib/profcollege/latex/PfCProbabilites.tex
2024/07/03 | 7696 | macros/latex/contrib/profcollege/latex/PfCTicketCaisse.tex
2024/07/03 | 7650 | macros/latex/contrib/profcollege/latex/PfCRangementNombres.tex
2024/07/03 | 7538 | macros/latex/contrib/profcollege/latex/PfCCible.tex
2024/07/03 | 7422 | macros/latex/contrib/profcollege/latex/PfCNumerationsAnciennes.tex
-2024/07/03 | 7315 | macros/latex/contrib/tuda-ci/tex/beamerouterthemeTUDa.sty
2024/07/03 | 7305 | macros/latex/contrib/profcollege/latex/PfCNombreAstral.tex
2024/07/03 | 7244 | macros/latex/contrib/profcollege/latex/PfCFrise.tex
2024/07/03 | 7142 | macros/latex/contrib/profcollege/latex/PfCPuissanceQuatre.tex
@@ -793,35 +1056,20 @@
2024/07/03 | 7088 | macros/latex/contrib/profcollege/latex/PfCColorilude.tex
2024/07/03 | 7016592 | macros/latex/contrib/tuda-ci.zip
2024/07/03 | 6941 | macros/latex/contrib/profcollege/latex/PfCGrimuku.tex
-2024/07/03 | 6834 | macros/latex/contrib/tuda-ci/example/DEMO-TUDaLeaflet.tex
2024/07/03 | 6616 | macros/latex/contrib/profcollege/latex/PfCMulJal.tex
2024/07/03 | 6570 | macros/latex/contrib/profcollege/latex/PfCRepresenterEntier.tex
-2024/07/03 | 655625 | macros/latex/contrib/tuda-ci/doc/DEMO-TUDaPub.pdf
2024/07/03 | 6525 | macros/latex/contrib/profcollege/latex/PfCMentalo.tex
-2024/07/03 | 6461 | macros/latex/contrib/tuda-ci/tex/beamerinnerthemeTUDa.sty
-2024/07/03 | 6375 | macros/latex/contrib/tuda-ci/example/DEMO-TUDaBeamer2023.tex
-2024/07/03 | 6365 | macros/latex/contrib/tuda-ci/tex/tudarules.sty
-2024/07/03 | 622755 | macros/latex/contrib/tuda-ci/doc/DEMO-TUDaPhD.pdf
-2024/07/03 | 621493 | macros/latex/contrib/tuda-ci/doc/DEMO-TUDaThesis.pdf
2024/07/03 | 6154021 | macros/latex/contrib/beautybook/beautybook-cn.pdf
2024/07/03 | 6120 | macros/latex/contrib/profcollege/latex/PfCDontCountDots.tex
2024/07/03 | 6030 | macros/latex/contrib/profcollege/latex/PfCTectonic.tex
2024/07/03 | 60167 | macros/latex/contrib/profcollege/latex/PfCDistributivite.tex
-2024/07/03 | 6014 | macros/latex/contrib/tuda-ci/tex/tudacolors.sty
2024/07/03 | 59614 | macros/latex/contrib/profcollege/latex/PfCNotionFonction.tex
-2024/07/03 | 5810 | macros/latex/contrib/tuda-ci/example/DEMO-TUDaPoster.tex
2024/07/03 | 57262 | macros/latex/contrib/profcollege/latex/PfCThales.tex
2024/07/03 | 5704195 | macros/latex/contrib/profcollege/doc/profcollege-doc.zip
2024/07/03 | 5680 | macros/latex/contrib/profcollege/latex/PfCConversion.tex
2024/07/03 | 56426481 | macros/latex/contrib/beautybook.zip
-2024/07/03 | 563701 | macros/latex/contrib/tuda-ci/doc/DEMO-TUDaSciPoster.pdf
-2024/07/03 | 5523 | macros/latex/contrib/tuda-ci/example/DEMO-TUDaLetter.tex
-2024/07/03 | 5497 | macros/latex/contrib/tuda-ci/tex/tudalettersize10pt.clo
-2024/07/03 | 5384 | macros/latex/contrib/tuda-ci/tex/tudasize9pt.clo
2024/07/03 | 5365 | macros/latex/contrib/profcollege/latex/PfCMidpoint.tex
-2024/07/03 | 536366 | macros/latex/contrib/tuda-ci/doc/DEMO-TUDaPoster.pdf
2024/07/03 | 5312 | macros/latex/contrib/profcollege/latex/PfCTablesOperations.tex
-2024/07/03 | 527804 | macros/latex/contrib/tuda-ci/doc/DEMO-TUDaReport.pdf
2024/07/03 | 5254 | macros/latex/contrib/profcollege/latex/PfCArbreChiffre.tex
2024/07/03 | 5079 | macros/latex/contrib/profcollege/latex/PfCProbaFrequence.tex
2024/07/03 | 4968 | macros/latex/contrib/profcollege/latex/PfCGeometrie.tex
@@ -830,19 +1078,14 @@
2024/07/03 | 4749 | macros/latex/contrib/profcollege/latex/PfCCryptarithme.tex
2024/07/03 | 4692 | macros/latex/contrib/profcollege/latex/PfCFutoshiki.tex
2024/07/03 | 4690 | macros/latex/contrib/profcollege/latex/PfCCritere.tex
-2024/07/03 | 46654 | macros/latex/contrib/mitthesis/mitthesis.cls
2024/07/03 | 4664 | macros/latex/contrib/profcollege/latex/PfCDiagrammeRadar.tex
2024/07/03 | 46638 | macros/latex/contrib/beautybook/beautybook-cn.tex
-2024/07/03 | 46505 | macros/latex/contrib/tuda-ci/tex/tudapub.cls
2024/07/03 | 45505 | macros/latex/contrib/profcollege/metapost/PfCMonde.mp
2024/07/03 | 4548 | macros/latex/contrib/profcollege/latex/PfCMosaique.tex
-2024/07/03 | 4392 | macros/latex/contrib/tuda-ci/tex/tudacolors.def
2024/07/03 | 4369 | macros/latex/contrib/profcollege/latex/PfCJeuRangement.tex
2024/07/03 | 436888 | systems/texlive/tlnet/archive/biblatex-publist.doc.r71686.tar.xz
2024/07/03 | 4329 | macros/latex/contrib/profcollege/latex/PfCLego.tex
2024/07/03 | 4316 | macros/latex/contrib/profcollege/latex/PfCQuestionsRelier.tex
-2024/07/03 | 4279 | macros/latex/contrib/tuda-ci/tex/tuda-pgfplots.sty
-2024/07/03 | 4240 | macros/latex/contrib/tuda-ci/tex/beamerinnerthemeTUDa2008.sty
2024/07/03 | 4231 | macros/latex/contrib/profcollege/latex/PfCMulPiecesPuzzle.tex
2024/07/03 | 4178 | macros/latex/contrib/profcollege/latex/PfCFractionAireCarre.tex
2024/07/03 | 4166 | macros/latex/contrib/profcollege/latex/PfCDomino.tex
@@ -850,60 +1093,46 @@
2024/07/03 | 3884 | macros/latex/contrib/profcollege/latex/PfCKenKen.tex
2024/07/03 | 3852170 | macros/latex/contrib/mitthesis.zip
2024/07/03 | 382944 | systems/texlive/tlnet/archive/lni.doc.r71687.tar.xz
-2024/07/03 | 3821 | macros/latex/contrib/tuda-ci/example/DEMO-TUDaFromaddress.lco
2024/07/03 | 3808 | macros/latex/contrib/profcollege/latex/PfCEratosthene.tex
2024/07/03 | 3765 | macros/latex/contrib/profcollege/latex/PfCEnquete.tex
-2024/07/03 | 3762 | macros/latex/contrib/tuda-ci/tex/beamercolorthemeTUDa2008.sty
2024/07/03 | 3652 | macros/latex/contrib/profcollege/latex/PfCDefiCalc.tex
2024/07/03 | 3618 | macros/latex/contrib/profcollege/latex/PfCDecompFracDeci.tex
2024/07/03 | 3608208 | macros/latex/contrib/beautybook/beautybook-en.pdf
2024/07/03 | 35829 | macros/latex/contrib/profcollege/latex/PfCPavage.tex
-2024/07/03 | 3555 | macros/latex/contrib/tuda-ci/tex/tudafonts.sty
2024/07/03 | 3466 | macros/latex/contrib/profcollege/latex/PfCFubuki.tex
2024/07/03 | 34647 | macros/latex/contrib/mitthesis/mitthesis-doc/mitthesis-doc.tex
2024/07/03 | 3431 | macros/latex/contrib/profcollege/latex/PfCBarresCalculs.tex
2024/07/03 | 33984 | macros/latex/contrib/profcollege/latex/PfCSolides.tex
-2024/07/03 | 33596 | macros/latex/contrib/tuda-ci/tex/tudaexercise.cls
-2024/07/03 | 3323 | macros/latex/contrib/tuda-ci/tex/beamercolorthemeTUDa.sty
2024/07/03 | 3280 | macros/latex/contrib/profcollege/latex/PfCFicheMemo.tex
2024/07/03 | 3280 | fonts/gelasiomath/tfm/zgelbmi.tfm
-2024/07/03 | 32698 | macros/latex/contrib/tuda-ci/tex/tudathesis.cfg
2024/07/03 | 3228 | fonts/gelasiomath/tfm/zgelmi.tfm
2024/07/03 | 31831 | macros/latex/contrib/profcollege/latex/PfCCartesJeux.tex
-2024/07/03 | 3126 | macros/latex/contrib/tuda-ci/example/DEMO-TUDaAnnouncement.tex
2024/07/03 | 3049 | macros/latex/contrib/profcollege/latex/PfCRLE.tex
2024/07/03 | 29992 | macros/latex/contrib/profcollege/latex/PfCUrneProba.tex
2024/07/03 | 2975 | macros/latex/contrib/profcollege/latex/PfCMotsCodes.tex
-2024/07/03 | 29449 | macros/latex/contrib/tuda-ci/example/DEMO-TUDaPub.tex
2024/07/03 | 2939 | macros/latex/contrib/profcollege/latex/PfCBarreNiveaux.tex
2024/07/03 | 29363 | macros/latex/contrib/profcollege/latex/PfCLabyrintheNombre.tex
-2024/07/03 | 29284 | macros/latex/contrib/tuda-ci/example/DEMO-TUDaThesis.tex
2024/07/03 | 2846 | info/biblio/typeset.ltx
2024/07/03 | 28129 | macros/latex/contrib/profcollege/latex/PfCRappelsFormules.tex
2024/07/03 | 2760 | macros/latex/contrib/profcollege/latex/PfCEngrenagesBase.tex
2024/07/03 | 27371 | macros/latex/contrib/profcollege/latex/PfCPythagore.tex
-2024/07/03 | 26722 | macros/latex/contrib/tuda-ci/example/DEMO-TUDaPhD.tex
2024/07/03 | 2617 | macros/latex/contrib/profcollege/latex/PfCQuiSuisJe.tex
2024/07/03 | 2605 | macros/latex/contrib/profcollege/latex/PfCKakurasu.tex
-2024/07/03 | 2595 | macros/latex/contrib/tuda-ci/example/DEMO-TUDaBibliography.bib
2024/07/03 | 25828 | systems/texlive/tlnet/archive/lni.source.r71687.tar.xz
2024/07/03 | 25681 | macros/latex/contrib/profcollege/latex/PfCPavageAvecMotifImage.tex
2024/07/03 | 25516 | macros/latex/contrib/profcollege/latex/PfCDecomposerNombrePremier.tex
2024/07/03 | 25321 | macros/latex/contrib/profcollege/latex/PfCQuestionsFlash.tex
2024/07/03 | 25313 | macros/latex/contrib/profcollege/latex/ProfCollege.sty
-2024/07/03 | 2513 | macros/latex/contrib/tuda-ci/tex/beamerfontthemeTUDa.sty
2024/07/03 | 2508 | fonts/gelasiomath/tfm/zgelmia.tfm
2024/07/03 | 2499 | macros/latex/contrib/profcollege/latex/PfCSquaro.tex
2024/07/03 | 24804 | macros/latex/contrib/profcollege/latex/PfCTrigonometrie.tex
2024/07/03 | 2477 | macros/latex/contrib/profcollege/latex/PfCEcritureLettres.tex
2024/07/03 | 2456 | fonts/gelasiomath/vf/zgelbmi.vf
2024/07/03 | 2452 | fonts/gelasiomath/vf/zgelmi.vf
-2024/07/03 | 24180 | systems/texlive/tlnet/archive/texlive-scripts-extra.r71685.tar.xz
2024/07/03 | 24172 | macros/latex/contrib/profcollege/latex/PfCPatronPaves.tex
2024/07/03 | 2396 | fonts/gelasiomath/tfm/zgelbmia.tfm
2024/07/03 | 2322 | macros/latex/contrib/profcollege/latex/PfCKakuro.tex
2024/07/03 | 2320 | fonts/gelasiomath/vf/zgelmia.vf
-2024/07/03 | 2301 | macros/latex/contrib/tuda-ci/example/DEMO-TUDaReport.tex
2024/07/03 | 228633 | systems/texlive/tlnet/tlpkg/installer/curl/curl-ca-bundle.crt
2024/07/03 | 2285 | macros/latex/contrib/profcollege/latex/PfCGrades.tex
2024/07/03 | 224346 | macros/latex/contrib/ulthese.zip
@@ -912,35 +1141,19 @@
2024/07/03 | 22067 | macros/latex/contrib/profcollege/latex/PfCTrio.tex
2024/07/03 | 2173 | macros/latex/contrib/profcollege/latex/PfCGaram.tex
2024/07/03 | 21452 | macros/latex/contrib/profcollege/latex/PfCFactorisation.tex
-2024/07/03 | 2130 | macros/latex/contrib/tuda-ci/tex/beamerthemeTUDa2008.sty
-2024/07/03 | 2086 | macros/latex/contrib/tuda-ci/tex/beamerthemeTUDa2023.sty
2024/07/03 | 2076 | fonts/gelasiomath/vf/zgelbmia.vf
2024/07/03 | 2072 | macros/latex/contrib/profcollege/latex/PfCBonSortie.tex
-2024/07/03 | 2068 | macros/latex/contrib/tuda-ci/tex/beamerfontthemeTUDa2008.sty
-2024/07/03 | 20521 | macros/latex/contrib/tuda-ci/tex/tudaletter.cls
2024/07/03 | 20355 | macros/latex/contrib/profcollege/latex/PfCRose.tex
-2024/07/03 | 19768 | macros/latex/contrib/tuda-ci/tex/tudasciposter.cls
-2024/07/03 | 19760 | macros/latex/contrib/tuda-ci/README.md
-2024/07/03 | 197200 | systems/texlive/tlnet/archive/texlive-scripts-extra.doc.r71685.tar.xz
-2024/07/03 | 19677 | macros/latex/contrib/tuda-ci/tex/tudaposter.cls
2024/07/03 | 19160 | macros/latex/contrib/profcollege/latex/PfCPattern.tex
-2024/07/03 | 1861 | macros/latex/contrib/tuda-ci/tex/beamerthemeTUDa.sty
2024/07/03 | 1856 | macros/latex/contrib/profcollege/latex/PfCMotsEmpiles.tex
2024/07/03 | 1793 | macros/latex/contrib/profcollege/latex/PfCRapido.tex
2024/07/03 | 17835 | macros/latex/contrib/profcollege/latex/PfCOperationsTrou.tex
2024/07/03 | 17795 | macros/latex/contrib/profcollege/latex/PfCRondeInfernale.tex
2024/07/03 | 1767 | macros/latex/contrib/profcollege/latex/PfCScratch.tex
2024/07/03 | 17055 | macros/latex/contrib/profcollege/latex/PfCFonctionAffine.tex
-2024/07/03 | 16564 | macros/latex/contrib/tuda-ci/example/DEMO-TUDaExercise.tex
2024/07/03 | 16401 | macros/latex/contrib/profcollege/latex/PfCResoudreEquation.tex
2024/07/03 | 16319 | macros/latex/contrib/profcollege/latex/PfCRepresenterFraction.tex
2024/07/03 | 16207 | macros/latex/contrib/profcollege/latex/PfCArbreCalcul.tex
-2024/07/03 | 1619 | macros/latex/contrib/tuda-ci/tex/tuda-a5paper.clo
-2024/07/03 | 1617 | macros/latex/contrib/tuda-ci/tex/tuda-a4paper.clo
-2024/07/03 | 1617 | macros/latex/contrib/tuda-ci/tex/tuda-a0paper.clo
-2024/07/03 | 1616 | macros/latex/contrib/tuda-ci/tex/tuda-a1paper.clo
-2024/07/03 | 1615 | macros/latex/contrib/tuda-ci/tex/tuda-a3paper.clo
-2024/07/03 | 1615 | macros/latex/contrib/tuda-ci/tex/tuda-a2paper.clo
2024/07/03 | 16033 | macros/latex/contrib/profcollege/latex/PfCModeleBarre.tex
2024/07/03 | 15947 | macros/latex/contrib/profcollege/latex/PfCPropor.tex
2024/07/03 | 1586 | macros/latex/contrib/profcollege/latex/PfCCartesMentales.tex
@@ -952,8 +1165,6 @@
2024/07/03 | 14304 | macros/latex/contrib/profcollege/latex/PfCCAN.tex
2024/07/03 | 14269 | macros/latex/contrib/profcollege/latex/PfCDessinerRatio.tex
2024/07/03 | 14120 | macros/latex/contrib/profcollege/latex/PfCNonogramme.tex
-2024/07/03 | 14054 | macros/latex/contrib/tuda-ci/tex/tudaleaflet.cls
-2024/07/03 | 13482 | macros/latex/contrib/mitthesis/MIT-thesis-template/MIT-Thesis.tex
2024/07/03 | 13445 | macros/latex/contrib/profcollege/latex/PfCEcrireunQCM.tex
2024/07/03 | 13259 | macros/latex/contrib/profcollege/latex/PfCInfixRPN.sty
2024/07/03 | 1319 | macros/latex/contrib/tango/examples/book-mathematics.tex
@@ -985,53 +1196,3 @@
2024/07/03 | 10168 | macros/latex/contrib/profcollege/latex/PfCPapiers.tex
2024/07/03 | 1013 | macros/latex/contrib/beautybook/README.md
2024/07/03 | 1000 | macros/latex/contrib/profcollege/latex/PfCJeton.tex
-2024/07/03 | 10007 | macros/latex/contrib/tuda-ci/tex/beamerthemeTUDa-mecheng.sty
-2024/07/02 | 999 | macros/latex/contrib/biblatex-contrib/biblatex-publist/publist.dbx
-2024/07/02 | 9983 | macros/latex/contrib/biblatex-contrib/biblatex-publist/README
-2024/07/02 | 97705 | macros/latex/contrib/ulthese/ulthese.dtx
-2024/07/02 | 90796 | systems/texlive/tlnet/archive/pdfx.r71681.tar.xz
-2024/07/02 | 786577 | macros/latex/contrib/lni.zip
-2024/07/02 | 70126 | macros/latex/contrib/beautybook/beautybook.cls
-2024/07/02 | 69774 | macros/latex/contrib/biblatex-contrib/biblatex-publist/biblatex-publist.tex
-2024/07/02 | 68124 | macros/latex/contrib/biblatex-contrib/biblatex-publist/publist.bbx
-2024/07/02 | 67200 | systems/texlive/tlnet/archive/pdfx.source.r71681.tar.xz
-2024/07/02 | 601729 | macros/latex/contrib/tuda-ci/doc/DEMO-TUDaBeamer.pdf
-2024/07/02 | 571306 | macros/latex/contrib/tuda-ci/doc/DEMO-TUDaLetter.pdf
-2024/07/02 | 570469 | macros/latex/contrib/tuda-ci/doc/DEMO-TUDaExercise.pdf
-2024/07/02 | 561720 | macros/latex/contrib/tuda-ci/doc/DEMO-TUDaBeamer2023.pdf
-2024/07/02 | 559903 | macros/latex/contrib/tuda-ci/doc/DEMO-TUDaLeaflet.pdf
-2024/07/02 | 551956 | macros/latex/contrib/tuda-ci/doc/DEMO-TUDaAnnouncement.pdf
-2024/07/02 | 54541 | help/ctan/CTAN-upload-addendum.html
-2024/07/02 | 5162724 | systems/texlive/tlnet/archive/pdfx.doc.r71681.tar.xz
-2024/07/02 | 49232 | systems/texlive/tlnet/archive/thuthesis.source.r71680.tar.xz
-2024/07/02 | 484515 | macros/latex/contrib/mitthesis/MIT-Thesis.pdf
-2024/07/02 | 482879 | macros/latex/contrib/mitthesis/examples/font_samples/Defaultfonts.pdf
-2024/07/02 | 462305 | macros/latex/contrib/mitthesis/examples/font_samples/Libertine.pdf
-2024/07/02 | 454032 | macros/latex/contrib/biblatex-contrib/biblatex-publist.zip
-2024/07/02 | 44664 | systems/texlive/tlnet/archive/thuthesis.r71680.tar.xz
-2024/07/02 | 4441 | macros/latex/contrib/biblatex-contrib/biblatex-publist/publist.cbx
-2024/07/02 | 417904 | macros/latex/contrib/biblatex-contrib/biblatex-publist/biblatex-publist.pdf
-2024/07/02 | 3834 | macros/latex/contrib/ulthese/README.md
-2024/07/02 | 365 | macros/latex/contrib/mitthesis/examples/font_samples/latex_sources/README_font_sample_sources.txt
-2024/07/02 | 3654 | macros/latex/contrib/ulthese/ulthese.ins
-2024/07/02 | 350734 | macros/latex/contrib/mitthesis/examples/font_samples/Fira_Newtxsf.pdf
-2024/07/02 | 320853 | macros/latex/contrib/mitthesis/examples/font_samples/Newtx.pdf
-2024/07/02 | 279552 | macros/latex/contrib/mitthesis/examples/font_samples/Newtx-sans-text.pdf
-2024/07/02 | 245414 | install/macros/latex/contrib/ulthese.tds.zip
-2024/07/02 | 173819 | macros/latex/contrib/mitthesis/examples/font_samples/Lucida.pdf
-2024/07/02 | 165290 | macros/latex/contrib/mitthesis/examples/font_samples/Termes-stix2.pdf
-2024/07/02 | 163413 | macros/latex/contrib/mitthesis/examples/font_samples/Stix2.pdf
-2024/07/02 | 1621664 | systems/texlive/tlnet/archive/thuthesis.doc.r71680.tar.xz
-2024/07/02 | 161633 | macros/latex/contrib/mitthesis/examples/font_samples/Termes.pdf
-2024/07/02 | 153678 | macros/latex/contrib/mitthesis/examples/font_samples/Heros-Stix2.pdf
-2024/07/02 | 132685 | macros/latex/contrib/ulthese/ulthese.pdf
-2024/07/02 | 11830 | macros/latex/contrib/mitthesis/examples/font_samples/latex_sources/Heros-Stix2.tex
-2024/07/02 | 11724 | macros/latex/contrib/mitthesis/examples/font_samples/latex_sources/Termes-stix2.tex
-2024/07/02 | 11721 | macros/latex/contrib/mitthesis/examples/font_samples/latex_sources/Libertine.tex
-2024/07/02 | 11718 | macros/latex/contrib/mitthesis/examples/font_samples/latex_sources/Termes.tex
-2024/07/02 | 11718 | macros/latex/contrib/mitthesis/examples/font_samples/latex_sources/Lucida.tex
-2024/07/02 | 11717 | macros/latex/contrib/mitthesis/examples/font_samples/latex_sources/Stix2.tex
-2024/07/02 | 11717 | macros/latex/contrib/mitthesis/examples/font_samples/latex_sources/Newtx.tex
-2024/07/02 | 11704 | macros/latex/contrib/mitthesis/examples/font_samples/latex_sources/Defaultfonts.tex
-2024/07/02 | 11580 | macros/latex/contrib/mitthesis/examples/font_samples/latex_sources/Newtx-sans-text.tex
-2024/07/02 | 11577 | macros/latex/contrib/mitthesis/examples/font_samples/latex_sources/Fira_Newtxsf.tex
diff --git a/biblio/ctan-bibdata/ctan.bib b/biblio/ctan-bibdata/ctan.bib
index 65534cf1c6..3eb50c6733 100644
--- a/biblio/ctan-bibdata/ctan.bib
+++ b/biblio/ctan-bibdata/ctan.bib
@@ -1,7 +1,7 @@
%% bib file of all CTAN packages
%% (C) Herbert Voß
%%
-%% created at 09-07-2024, 02:00:04
+%% created at 10-07-2024, 02:00:03
%%
%% This file is provided under the terms of the LPPL v1.3 or
@@ -5872,7 +5872,7 @@
title = {The \texttt{bbold} package},
subtitle = {Sans serif blackboard bold},
author = {Alan Jeffrey},
- date = {2016-06-24},
+ date = {2024-07-09},
version = {1.01},
license = {bsd},
mirror = {https://mirror.ctan.org/fonts/bbold},
@@ -20886,8 +20886,8 @@
title = {The \texttt{easybook} package},
subtitle = {Easily typesetting Chinese theses or books},
author = {Qu Yi},
- date = {2024-07-07},
- version = {2024co},
+ date = {2024-07-09},
+ version = {2024cp},
license = {lppl1.3c},
mirror = {https://mirror.ctan.org/macros/latex/contrib/easybook},
url = {https://ctan.org/pkg/easybook},
@@ -27307,8 +27307,8 @@
@manual{ctan-fontsmpl,
title = {The \texttt{fontsmpl} package},
subtitle = {Print a sample of a font},
- author = {Alan Jeffrey},
- date = {2021-01-03},
+ author = {{The LaTeX Project Team} and Alan Jeffrey},
+ date = {2024-07-09},
version = {0.11},
license = {lppl1.3c},
mirror = {https://mirror.ctan.org/macros/latex/required/tools},
@@ -36018,8 +36018,8 @@
title = {The \texttt{jnuexam} package},
subtitle = {Exam class for Jinan University},
author = {Jianrui Lyu},
- date = {2024-03-14},
- version = {2024E},
+ date = {2024-07-09},
+ version = {2024F},
license = {lppl1.3c},
mirror = {https://mirror.ctan.org/macros/latex/contrib/jnuexam},
url = {https://ctan.org/pkg/jnuexam},
@@ -36967,8 +36967,8 @@
title = {The \texttt{knuth-hint} package},
subtitle = {HINT collection of typeset C/WEB sources in \TeX{} Live},
author = {Andreas Scherer},
- date = {2024-03-16},
- version = {2.2},
+ date = {2024-07-09},
+ version = {2.3},
license = {pd,knuth},
mirror = {https://mirror.ctan.org/info/knuth-hint},
url = {https://ctan.org/pkg/knuth-hint},
@@ -37017,8 +37017,8 @@
title = {The \texttt{knuth-pdf} package},
subtitle = {PDF collection of typeset C/WEB sources in \TeX{} Live},
author = {Andreas Scherer},
- date = {2024-03-16},
- version = {2.2},
+ date = {2024-07-09},
+ version = {2.3},
license = {pd},
mirror = {https://mirror.ctan.org/info/knuth-pdf},
url = {https://ctan.org/pkg/knuth-pdf},
@@ -37855,7 +37855,7 @@
title = {The \texttt{lambda-lists} package},
subtitle = {Lists in \TeX{}'s mouth},
author = {Alan Jeffrey},
- date = {2016-06-24},
+ date = {2024-07-09},
version = {},
license = {lppl},
mirror = {https://mirror.ctan.org/macros/generic/lambda-lists},
@@ -39314,7 +39314,7 @@
title = {The \texttt{lazylist} package},
subtitle = {Lists in \TeX{}’s “mouth”},
author = {Alan Jeffrey},
- date = {2016-06-24},
+ date = {2024-07-09},
version = {1.0a},
license = {lppl1.2},
mirror = {https://mirror.ctan.org/macros/latex/contrib/lazylist},
@@ -40177,8 +40177,8 @@
title = {The \texttt{lie-hasse} package},
subtitle = {Draw Hasse diagrams},
author = {Benjamin McKay},
- date = {2021-03-24},
- version = {1.0},
+ date = {2024-07-09},
+ version = {1.01},
license = {lppl1.3c},
mirror = {https://mirror.ctan.org/graphics/pgf/contrib/lie-hasse},
url = {https://ctan.org/pkg/lie-hasse},
@@ -47166,8 +47166,8 @@
title = {The \texttt{moloch} package},
subtitle = {Beamer based on Metropolis theme},
author = {Johan Larsson},
- date = {2024-04-05},
- version = {0.3.0},
+ date = {2024-07-09},
+ version = {0.4.0},
license = {cc-by-sa-4},
mirror = {https://mirror.ctan.org/macros/latex/contrib/beamer-contrib/themes/moloch},
url = {https://ctan.org/pkg/moloch},
@@ -58074,8 +58074,8 @@
title = {The \texttt{pstricks-base} package},
subtitle = {PostScript macros for \TeX{}},
author = {Herbert Voß and Denis Girou and Timothy Van Zandt},
- date = {2024-02-02},
- version = {3.19c},
+ date = {2024-07-09},
+ version = {3.20},
license = {lppl1.3},
mirror = {https://mirror.ctan.org/graphics/pstricks/base},
url = {https://ctan.org/pkg/pstricks-base},
@@ -59328,8 +59328,8 @@
title = {The \texttt{randexam} package},
subtitle = {Make an exam paper and its randomized variants},
author = {Jianrui Lyu},
- date = {2024-02-18},
- version = {2024E},
+ date = {2024-07-09},
+ version = {2024F},
license = {lppl1.3c},
mirror = {https://mirror.ctan.org/macros/latex/contrib/randexam},
url = {https://ctan.org/pkg/randexam},
@@ -67148,8 +67148,8 @@
title = {The \texttt{synthslant} package},
subtitle = {Synthetically slant text},
author = {Chris Spiel},
- date = {2024-05-11},
- version = {0.1},
+ date = {2024-07-09},
+ version = {0.1a},
license = {lppl1.3c},
mirror = {https://mirror.ctan.org/macros/latex/contrib/synthslant},
url = {https://ctan.org/pkg/synthslant},
@@ -67855,7 +67855,7 @@
title = {The \texttt{tango} package},
subtitle = {A \LaTeX{} document class for math teachers},
author = {Michel Bovani},
- date = {2024-07-08},
+ date = {2024-07-09},
version = {0.7.1},
license = {lppl1.3c},
mirror = {https://mirror.ctan.org/macros/latex/contrib/tango},
@@ -74194,8 +74194,8 @@
title = {The \texttt{typog} package},
subtitle = {Typographic fine-tuning and micro-typographic enhancements},
author = {Chris Spiel},
- date = {2024-05-11},
- version = {0.3},
+ date = {2024-07-09},
+ version = {0.4},
license = {lppl1.3c},
mirror = {https://mirror.ctan.org/macros/latex/contrib/typog},
url = {https://ctan.org/pkg/typog},
diff --git a/graphics/pgf/contrib/lie-hasse/README b/graphics/pgf/contrib/lie-hasse/README
index e63a82cc60..1bd63c4cba 100644
--- a/graphics/pgf/contrib/lie-hasse/README
+++ b/graphics/pgf/contrib/lie-hasse/README
@@ -2,9 +2,9 @@ ___________________________________
Lie Hasse
- v1.0
+ v1.01
- 3 February 2020
+ 9 July 2024
___________________________________
Authors : Ben McKay
diff --git a/graphics/pgf/contrib/lie-hasse/lie-hasse.pdf b/graphics/pgf/contrib/lie-hasse/lie-hasse.pdf
index 5be5791e7f..ed444cc7d1 100644
--- a/graphics/pgf/contrib/lie-hasse/lie-hasse.pdf
+++ b/graphics/pgf/contrib/lie-hasse/lie-hasse.pdf
Binary files differ
diff --git a/graphics/pgf/contrib/lie-hasse/lie-hasse.sty b/graphics/pgf/contrib/lie-hasse/lie-hasse.sty
index d1050d8839..6d727c841c 100644
--- a/graphics/pgf/contrib/lie-hasse/lie-hasse.sty
+++ b/graphics/pgf/contrib/lie-hasse/lie-hasse.sty
@@ -1,24 +1,20 @@
-% The Lie Hasse package.
+% The Lie Hasse package.
+% Version 1.01
%
-% Version 1.0
%
+% This package draws Hasse diagrams of root system posets of simple
+% Lie algebraS, in LaTeX documents, using the TikZ package.
%
-% This package draws Hasse diagrams of root system posets of simple
-% Lie algebraS, in LaTeX documents, using the TikZ package.
+% Benjamin McKay
+% b.mckay@ucc.ie
%
-% Benjamin McKay
-% b.mckay@ucc.ie
-%
-% Released under the LaTeX Project Public License v1.3c or later, see
+% Released under the LaTeX Project Public License v1.3c or later, see
% http://www.latex-project.org/lppl.txt
-%
-%
-%
-%
\NeedsTeXFormat{LaTeX2e}[1994/06/01]
-\ProvidesPackage{lie-hasse}[2020/02/02 Lie Hasse]
+\ProvidesPackage{lie-hasse}[2024/07/09 Lie Hasse]
\RequirePackage[rgb]{xcolor}
\RequirePackage{dynkin-diagrams}
+\RequirePackage[outline]{contour}
\usetikzlibrary{
positioning,
fadings,
@@ -26,7 +22,7 @@
%%%
%%% Application programming interface:
%%%
-
+\NewDocumentCommand\edgeQuote{m}{\contour{white}{\(#1\)}}
\newif\iflie@hasse@threeD
\lie@hasse@threeDtrue
\xdef\lie@hasse@three@D@shift{.3}%
@@ -40,14 +36,27 @@
\lie@hasse@show@heightfalse
\newif\iflie@hasse@attach@dynkin@diagram
\lie@hasse@attach@dynkin@diagramfalse
-
+\newif\iflie@hasse@show@levi
+\lie@hasse@show@levitrue
+\newif\iflie@hasse@show@unipotent@radical
+\lie@hasse@show@unipotent@radicaltrue
\pgfkeys{
/Lie Hasse diagram/.is family,
/Lie Hasse diagram,
- attach Dynkin diagram/.is if = lie@hasse@attach@dynkin@diagram,
+ attach Dynkin diagram/.is if
+ = lie@hasse@attach@dynkin@diagram,
attach Dynkin diagram/.default = false,
- edge/.style={ultra thick},
- edge quotes/.style={/Dynkin diagram/text style,auto,inner sep=2pt},
+ edge/.style = {
+ ultra thick
+ },
+ edge length/.estore in
+ = \lie@hasse@edge@length,
+ edge length = 1cm,
+ edge quotes/.style={
+ /Dynkin diagram/text style,
+ auto,
+ inner sep=2pt
+ },
compact edge/.style={},
noncompact edge/.style={opacity=0},
compact root/.code={\dynkinDrawSolidRootMark{#1}},
@@ -67,7 +76,13 @@
show widths/.default = false,
show height/.is if = lie@hasse@show@height,
show height/.default = false,
- z shift/.estore in = \lie@hasse@three@D@shift,
+ show Levi/.is if = lie@hasse@show@levi,
+ show Levi/.default = true,
+ show unipotent radical/.is if
+ = lie@hasse@show@unipotent@radical,
+ show unipotent radical/.default = true,
+ z shift/.estore in
+ = \lie@hasse@three@D@shift,
z shift/.default = .3,
top/.style={black!20,opacity=.4},
left/.style={black!20,opacity=.9},
@@ -90,13 +105,17 @@
\dynkin@integer@rank%
}%
{%
- % Turn Satake codes into Dynkin diagram expressions in \dynkin@string.
+ % Turn Satake codes into Dynkin diagram
+ % expressions in \dynkin@string.
\dynkin@grok@Satake@codes%
}%
- % Expand out any digits in \dynkin@string into multiples of the various root marks.
+ % Expand out any digits in \dynkin@string
+ % into multiples of the various root marks.
\expand@Dynkin@Roots@Digits%
- % Assign to \dynkin@roots the input string \dynkin@string with all . symbols removed,
- % so we only get the symbols representing the marks for the various roots.
+ % Assign to \dynkin@roots the input string
+ % \dynkin@string with all . symbols removed,
+ % so we only get the symbols representing
+ % the marks for the various roots.
\StrDel{\dynkin@string}{.}[\temp]%
\xdef\dynkin@roots{\temp}%
\StrLen{\dynkin@roots}[\temp]%
@@ -115,58 +134,33 @@
{%
\pgfkeys{/Lie Hasse diagram/for all roots={#1}{#2}}%
}%
+\newif\iflie@hasse@B
+\newcount\dynkin@rank@plus@one%
\NewDocumentCommand\hasse{O{}mm}%
{%
\ifdefined\filldraw%
- \IfStrEq{#1}{}%
- {%
+ \ifx#1\empty\relax%
\studyHasseDiagramOfRootSystem{#2}{#3}%
- }%
- {%
+ \else%
\studyHasseDiagramOfRootSystem[#1]{#2}{#3}%
- }%
+ \fi%
\label@item@count 0\relax%
\expandafter\forcsvlist%
- \expandafter\add@label%
+ \expandafter\lie@hasse@add@label%
\expandafter{\dynkin@label@list}%
\ifnum\dynkin@rank=1%
\dynkin{A}{1}%
\else%
+ \global\dynkin@rank@plus@one\the\dynkin@rank\relax%
+ \global\advance\dynkin@rank@plus@one by 1\relax%
\add@compact@simple@roots@to@compact@roots{}%
\IfStrEqCase{#2}%
{%%
{A}{\hasse@A}%
- {B}{\hasse@BC}%
- {C}{\hasse@BC*}%
+ {B}{\global\lie@hasse@Btrue\hasse@BC}%
+ {C}{\global\lie@hasse@Bfalse\hasse@BC}%
{D}{\hasse@D}%
- {E}%
- {%
- \ifnum\dynkin@rank=6%
- \hasse@E@six%
- \else%
- \ifnum\dynkin@rank=7%
- \hasse@E@seven%
- \else%
- \ifnum\dynkin@rank=8%
- \hasse@E@eight%
- \else
- \ifnum\dynkin@rank>8%
- \ClassError%
- {Lie Hasse}%
- {Rank of E series Hasse diagram: #3{}%
- exceeds 8; not defined yet}%
- {}%
- \fi%
- \ifnum\dynkin@rank<6%
- \ClassError%
- {Lie Hasse}%
- {Rank of E series Hasse diagram: #3{} less than 6}%
- {}%
- \fi%
- \fi%
- \fi%
- \fi%
- }%
+ {E}{\hasse@E@series}%
{F}%
{%
\ifnum\dynkin@rank=4%
@@ -194,10 +188,11 @@
{Lie Hasse}%
{Lie algebra series #2{} not A,B,C,D,E,F or G}%
{}]%
+ \forAllPositiveRoots{\draw@lie@hasse@root}%
\draw@simple@root@labels%
\fi%
\lie@hasse@write@widths{}%
- \forAllPositiveRootsInHasseDiagram{\doRootThing}%
+ \forAllPositiveRoots{\doRootThing}%
\iflie@hasse@attach@dynkin@diagram%
\attachDynkin%
\fi%
@@ -205,13 +200,42 @@
\begin{tikzpicture}\hasse[#1]{#2}{#3}\end{tikzpicture}%
\fi%
}%
+\NewDocumentCommand\hasse@E@series{}%
+{%
+ \ifnum\dynkin@rank=6%
+ \hasse@E@six%
+ \else%
+ \ifnum\dynkin@rank=7%
+ \hasse@E@seven%
+ \else%
+ \ifnum\dynkin@rank=8%
+ \hasse@E@eight%
+ \else%
+ \ifnum\dynkin@rank>8%
+ \ClassError%
+ {Lie Hasse}%
+ {Rank of E series Hasse diagram: \the\dynkin@rank{}%
+ exceeds 8; not defined yet}%
+ {}%
+ \fi%
+ \ifnum\dynkin@rank<6%
+ \ClassError%
+ {Lie Hasse}%
+ {Rank of E series Hasse diagram: \the\dynkin@rank{}%
+ less than 6; not define yet}%
+ {}%
+ \fi%
+ \fi%
+ \fi%
+ \fi%
+}%
\NewDocumentCommand\drawRootAsDynkinSum{mm}%
{%
\rootSum{#1}{#2}{\rs}%
\node at (#1;#2)
{%
\dynkin[%
- labels=\rs,%
+ expand labels=\rs,%
/Lie Hasse diagram/embedded Dynkin diagram]%
{\dynkin@series}{\the\dynkin@rank}%
};%
@@ -239,25 +263,38 @@
}%
\fi%
}%
-
-\NewDocumentCommand\backwardsGtwo{}%
+\NewDocumentCommand\hasseAttachGtwo{}%
{%
- \dynkin[label,backwards,x shift in edge lengths=-1]{G}{\dynkin@roots}%
+ \dynkin[vertical shift=0,%
+ edge length=\lie@hasse@edge@length,%
+% label,%
+% backwards,%
+% x shift in edge lengths=-1
+]{G}{\dynkin@roots}%
}%
-
\newcount\lie@hasse@E@shift%
\NewDocumentCommand\attachDynkin{}%
{%
\IfStrEqCase{\dynkin@series}{%
- {A}{\dynkin{A}{\dynkin@roots}}%
- {B}{\dynkin{B}{\dynkin@roots}}%
- {C}{\dynkin{C}{\dynkin@roots}}%
- {D}{\dynkin[y shift in edge lengths=-1.5,label]%
- {D}{\dynkin@roots}}%
+ {A}{\dynkin[vertical shift=0,%
+ edge length=\lie@hasse@edge@length]%
+ {A}{\dynkin@roots}}%
+ {B}{\dynkin[vertical shift=0,%
+ edge length=\lie@hasse@edge@length]%
+ {B}{\dynkin@roots}}%
+ {C}{\dynkin[vertical shift=0,%
+ edge length=\lie@hasse@edge@length]%
+ {C}{\dynkin@roots}}%
+ {D}{\dynkin[vertical shift=0,%
+ edge length=\lie@hasse@edge@length,%
+ y shift in edge lengths=-1.5,label]%
+ {D}{\dynkin@roots}}%
{E}%
{%%
\ifnum\dynkin@rank=6%
\dynkin[%
+ vertical shift=0,%
+ edge length=\lie@hasse@edge@length,%
upsidedown,%
labels*={1,...,6},%
y shift in edge lengths=.5]%
@@ -266,6 +303,8 @@
\lie@hasse@E@shift\the\dynkin@rank\relax%
\advance\lie@hasse@E@shift by -2\relax%
\dynkin[%
+ vertical shift=0,%
+ edge length=\lie@hasse@edge@length,%
backwards,%
upsidedown,%
label,%
@@ -274,16 +313,17 @@
{E}{\dynkin@roots}%
\fi%
}%%
- {F}{\dynkin{F}{\dynkin@roots}}%
- {G}{\backwardsGtwo{}}%
+ {F}{\dynkin[vertical shift=0,%
+ edge length=\lie@hasse@edge@length]%
+ {F}{\dynkin@roots}}%
+ {G}{\hasseAttachGtwo}%
}%
[\ClassError%
{Lie Hasse}%
- {Lie algebra series \dynkin@series{} not A,B,C,D,E,F or G when attaching Dynkin diagram}%
+ {Lie algebra series \dynkin@series{} %
+ not A,B,C,D,E,F or G when attaching Dynkin diagram}%
{}]%
}%
-
-
\newif\iflie@hasse@multiple@diagrams
\newcommand\doHasseDiagram[1]%%
{%
@@ -291,8 +331,7 @@
\ %
\fi%
\begin{tikzpicture}%
- [show background rectangle,%
- baseline=(current bounding box.east)]]%
+ [show background rectangle,baseline=(current bounding box.east)]%
\hasse#1%
\iflie@hasse@show@height%
\rootSystemHeight{\lie@hasse@height}%
@@ -327,33 +366,25 @@
}%
\begin{center}%
\expandafter\forscsvlist%
- \expandafter\doHasseDiagram%
- \expandafter{#1}%
+ \expandafter\doHasseDiagram\expandafter{#1}%
\end{center}%
}%
-
-
%%%
%%% Package internals:
%%%
-
-
\pgfdeclarelayer{Dynkin middle}
\pgfdeclarelayer{Dynkin above}
\pgfsetlayers{background,Dynkin behind,Dynkin middle,Dynkin above,main}
-
-
\newcommand*\label@list@at[1]{\csname FOOBAR-#1\endcsname}
\newcommand*\defn@label@list@entry[1]{\expandafter\def\csname FOOBAR-#1\endcsname}
\def\add@to@label@list#1#2{\global\defn@label@list@entry{#1}{#2}}%
\newcount\label@item@count%
\label@item@count 0\relax%
-\newcommand\add@label[1]%
+\newcommand\lie@hasse@add@label[1]%
{%
- \advance\label@item@count by 1\relax%
+ \global\advance\label@item@count by 1\relax%
\global\add@to@label@list{\the\label@item@count}{#1}%
}%
-
\xdef\lie@hasse@compact@roots{}%
\NewDocumentCommand\if@compact@root{mmm}%
{%
@@ -369,9 +400,8 @@
\dynkinOrder{\dynkin@series}{\the\dynkin@rank}.Carter::#1->\dynkin@ordering.%
{\current@simple@root}%
\StrChar{\dynkin@roots}{\current@simple@root}[\lie@hasse@root@marker]%
-\IfStrEq{*}{\lie@hasse@root@marker}{#2}{#3}%
+\IfStrEq{x}{\lie@hasse@root@marker}{#3}{#2}%
}%
-
\NewDocumentCommand\add@compact@root{m}%
{%
\if@compact@root{#1}%
@@ -382,53 +412,65 @@
\xdef\lie@hasse@compact@roots{\temp@lie@hasse@compact@roots{ }(#1)}%
}%
}%
-
\newcount\lie@hasse@sr%
-\newcount\drpo%
\NewDocumentCommand\add@compact@simple@roots@to@compact@roots{}%
{%
-\lie@hasse@sr 1\relax%
-\drpo\the\dynkin@rank\relax%
-\advance\drpo by 1\relax%
-\loop%
- \if@compact@simple@root{\the\lie@hasse@sr}%
- {%%
- \add@compact@root{1;\the\lie@hasse@sr}%
- }%%
- {%%
- }%%
- \advance\lie@hasse@sr by 1\relax%
-\ifnum\lie@hasse@sr<\the\drpo%
-\repeat%
+ \lie@hasse@sr 1\relax%
+ \loop%
+ \if@compact@simple@root{\the\lie@hasse@sr}%
+ {%%
+ \add@compact@root{1;\the\lie@hasse@sr}%
+ }%%
+ {%%
+ }%%
+ \advance\lie@hasse@sr by 1\relax%
+ \ifnum\lie@hasse@sr<\the\dynkin@rank@plus@one%
+ \repeat%
}%
-
-\newcount\drmo%
\newcount\lie@hasse@root@count%
\newcount\lie@hasse@root@count@b%
\newcount\max@lie@hasse@root@count%
\newcount\lie@hasse@reorder
-
\NewDocumentCommand\lie@hasse@fix@order{mm}%
{%
\dynkinOrder{\dynkin@series}{\dynkin@rank}.Carter::{#1}->\dynkin@ordering.{#2}%
}%
-
\NewDocumentCommand\draw@one@simple@root@label{mm}%
%% \draw@one@simple@root@label{r}{s}, draw at Carter number r
%% the root with text s.
{%
- \node[below,%
- label=%
- {%
- [below,%
- lie@hasse@color,%
- /Lie Hasse diagram/edge quotes]%
- \(\pgfkeys{/Dynkin diagram/label macro=#2}\)%
- }%
- ]%
- at%
- (1;#1)%
- {};%
+ \if@compact@simple@root{#1}%
+ {%
+ \iflie@hasse@show@levi%
+ \global\lie@hasse@ok@roottrue%
+ \else%
+ \global\lie@hasse@ok@rootfalse%
+ \fi%
+ }%
+ {%
+ \iflie@hasse@show@unipotent@radical%
+ \global\lie@hasse@ok@roottrue%
+ \else%
+ \global\lie@hasse@ok@rootfalse%
+ \fi%
+ }%
+ \iflie@hasse@ok@root%
+ \node[%
+ below,%
+ label=%
+ {%
+ [%
+ below,%
+ lie@hasse@color,%
+ /Lie Hasse diagram/edge quotes%
+ ]%
+ \(\pgfkeys{/Dynkin diagram/label macro={\edgeQuote{#2}}}\)%
+ }%
+ ]%
+ at%
+ (1;#1)%
+ {};%
+ \fi%
}%
\NewDocumentCommand\draw@simple@root@labels{}%
{%
@@ -471,27 +513,56 @@
\pgfmathsetmacro{\lie@hasse@huenum}{#1/\the\dynkin@rank}%
\global\definecolor{lie@hasse@color}{hsb}{\lie@hasse@huenum,1,.6}%
}%
-\NewDocumentCommand\draw@lie@hasse@root{m}%
+\NewDocumentCommand\draw@lie@hasse@root{mm}%
{%
-\if@compact@root{#1}%
-{%%
-\pgfkeys{/Lie Hasse diagram/compact root=#1}%
-}%%
-{%%
-\pgfkeys{/Lie Hasse diagram/noncompact root=#1}%
-}%%
+ \if@compact@root{#1;#2}%
+ {%%
+ \iflie@hasse@show@levi%
+ \pgfkeys{/Lie Hasse diagram/compact root={#1;#2}}%
+ \fi%
+ }%%
+ {%%
+ \iflie@hasse@show@unipotent@radical%
+ \pgfkeys{/Lie Hasse diagram/noncompact root={#1;#2}}%
+ \fi%
+ }%%
}%
-\xdef\lie@hasse@grade@a{}
-\xdef\lie@hasse@grade@b{}
-\xdef\lie@hasse@index@a{}
-\xdef\lie@hasse@index@b{}
\newcount\root@gpo%
\xdef\label@text{}%
+\newif\iflie@hasse@is@levi
+\newif\iflie@hasse@ok@root
\NewDocumentCommand\draw@lie@hasse@edge{O{}mmmm}%
%[edge label options]{from grade}{from index}{to index}{simple root}
{%
\root@gpo #2\relax%
\advance\root@gpo by 1\relax%
+ \if@compact@root{#2;#3}%
+ {%
+ \if@compact@simple@root{#5}%
+ {%
+ \global\lie@hasse@is@levitrue%
+ \add@compact@root{\the\root@gpo;#4}%
+ }%
+ {%
+ \global\lie@hasse@is@levifalse%
+ }%
+ }%
+ {%
+ \global\lie@hasse@is@levifalse%
+ }%
+ \iflie@hasse@is@levi%
+ \iflie@hasse@show@levi%
+ \global\lie@hasse@ok@roottrue%
+ \else%
+ \global\lie@hasse@ok@rootfalse%
+ \fi%
+ \else%
+ \iflie@hasse@show@unipotent@radical%
+ \global\lie@hasse@ok@roottrue%
+ \else%
+ \global\lie@hasse@ok@rootfalse%
+ \fi%
+ \fi%
\set@lie@hasse@color{#5}%
\lie@hasse@fix@order{#5}{\lie@hasse@root@count@b}%
\IfStrEq{\dynkin@label@list}{}%
@@ -505,31 +576,33 @@
}%
}%
\if@compact@simple@root{#5}%
- {%%% Compact
- \draw[%
- lie@hasse@color,%
- /Lie Hasse diagram/edge,%
- /Lie Hasse diagram/compact edge]%
- (#2;#3) --%
- node[lie@hasse@color,/Lie Hasse diagram/edge quotes,#1]%
- {\(\pgfkeys{/Dynkin diagram/label macro=\label@text}\)}%
- (\the\root@gpo;#4);%
- \IfSubStr{\lie@hasse@compact@roots}{#2;#3}%
- {%% adding to a compact
- \add@compact@root{\the\root@gpo;#4}%
- }%%
- {%%
- }%%
+ {%%% Compact simple root, i.e. edge
+ \iflie@hasse@ok@root%
+ \draw[%
+ lie@hasse@color,%
+ /Lie Hasse diagram/edge,%
+ /Lie Hasse diagram/compact edge]%
+ (#2;#3)--%
+ node[lie@hasse@color,/Lie Hasse diagram/edge quotes,#1]%
+ {\(\pgfkeys{/Dynkin diagram/label macro={\edgeQuote{\label@text}}}\)}%
+ (\the\root@gpo;#4);%
+ \fi%
+ \iflie@hasse@is@levi%
+ \fi%
}%%%
{%%% Noncompact
- \draw[%
- lie@hasse@color,%
- /Lie Hasse diagram/edge,%
- /Lie Hasse diagram/noncompact edge]%
- (#2;#3) --%
+ \iflie@hasse@ok@root%
+ \draw
+ [%
+ lie@hasse@color,%
+ /Lie Hasse diagram/edge,%
+ /Lie Hasse diagram/noncompact edge%
+ ]%
+ (#2;#3)--%
node[lie@hasse@color,/Lie Hasse diagram/edge quotes,#1]%
- {\(\pgfkeys{/Dynkin diagram/label macro=\label@text}\)}%
+ {\(\pgfkeys{/Dynkin diagram/label macro={\edgeQuote{\label@text}}}\)}%
(\the\root@gpo;#4);%
+ \fi%
}%%%
}%
\newcount\A@series@grade%
@@ -555,8 +628,8 @@
\coordinate
(\the\A@series@grade;\the\A@series@j)
at
- ({.5*\the\A@series@x*\dynkin@edge@length},
- {.25*\the\A@series@y*\dynkin@edge@length})
+ ({.5*\the\A@series@x*\lie@hasse@edge@length},
+ {.25*\the\A@series@y*\lie@hasse@edge@length})
{};%
\advance\A@series@j by 1\relax%
\advance\A@series@x by 2\relax%
@@ -569,59 +642,35 @@
\ifnum\A@series@grade<\the\max@A@series@grade%
\repeat%
}%
-\newcount\A@series@grade%
-\newcount\max@A@series@grade%
-\NewDocumentCommand\draw@A@roots{}%
-{%
- \A@series@grade 1\relax%
- \max@A@series@grade \the\dynkin@rank\relax%
- \advance\max@A@series@grade by 1\relax%
- \loop%
- \max@A@series@j\the\dynkin@rank\relax%
- \advance\max@A@series@j by -\the\A@series@grade\relax%
- \advance\max@A@series@j by 2\relax%
- \A@series@j 1\relax%
- {%
- \loop%
- \draw@lie@hasse@root%
- {\the\A@series@grade;\the\A@series@j}%
- \advance\A@series@j by 1\relax%
- \ifnum\A@series@j<\the\max@A@series@j%
- \repeat%
- }%
- \advance\A@series@grade by 1\relax%
- \ifnum\A@series@grade<\the\max@A@series@grade%
- \repeat%
-}%
\newcount\maxA@i%
\newcount\maxA@j%
\newcount\A@lbl%
-\newcount\A@i%
-\newcount\A@j%
-\newcount\A@ipo%
+\newcount\lie@hasse@i%
+\newcount\lie@hasse@j%
+\newcount\lie@hasse@ipo%
\newcount\A@rj%
\newcount\A@rjmo%
\NewDocumentCommand\draw@A@edges{}%
{%
\maxA@i\the\dynkin@rank\relax%
- \A@i 1\relax%
+ \lie@hasse@i 1\relax%
\loop%
\maxA@j \the\dynkin@rank\relax%
- \advance\maxA@j by -\the\A@i\relax%
+ \advance\maxA@j by -\the\lie@hasse@i\relax%
\advance\maxA@j by 1\relax%
\ifnum\maxA@j>-1%
- \A@j 1\relax%
+ \lie@hasse@j 1\relax%
{%
\loop%
- \A@lbl\the\A@i\relax%
- \advance\A@lbl by \the\A@j\relax%
- \A@ipo \A@i\relax%
- \advance\A@ipo by 1\relax%
+ \A@lbl\the\lie@hasse@i\relax%
+ \advance\A@lbl by \the\lie@hasse@j\relax%
+ \lie@hasse@ipo \lie@hasse@i\relax%
+ \advance\lie@hasse@ipo by 1\relax%
\draw@lie@hasse@edge[left]%
- {\the\A@i}{\the\A@j}%
- {\the\A@j}{\the\A@lbl}%
+ {\the\lie@hasse@i}{\the\lie@hasse@j}%
+ {\the\lie@hasse@j}{\the\A@lbl}%
\A@rj\the\maxA@j\relax%
- \advance\A@rj by -\the\A@j\relax%
+ \advance\A@rj by -\the\lie@hasse@j\relax%
\advance\A@rj by 1\relax%
\A@rjmo\the\A@rj\relax%
\advance\A@rjmo by -1\relax%
@@ -629,15 +678,15 @@
\advance\A@lbl by \the\dynkin@rank%
\advance\A@lbl by 1%
\draw@lie@hasse@edge[right]%
- {\the\A@i}{\the\A@rj}%
+ {\the\lie@hasse@i}{\the\A@rj}%
{\the\A@rjmo}{\the\A@lbl}%
- \advance\A@j by 1\relax%
- \ifnum\A@j<\the\maxA@j%
+ \advance\lie@hasse@j by 1\relax%
+ \ifnum\lie@hasse@j<\the\maxA@j%
\repeat%
}%
\fi%
- \advance\A@i by 1\relax%
- \ifnum\A@i<\the\maxA@i%
+ \advance\lie@hasse@i by 1\relax%
+ \ifnum\lie@hasse@i<\the\maxA@i%
\repeat%
}%
%% \hasse@A@width@at@grade{g}{\w} sets the counter \w to
@@ -653,7 +702,6 @@
{%
\place@A@roots%
\draw@A@edges%
- \draw@A@roots%
}%
%% \hasse@BC@width@at@grade{g}{\w} sets the counter \w to
%% the value of the width (number of roots) at grade g of
@@ -666,138 +714,116 @@
\global\advance#2 by 1\relax%
\global\divide#2 by 2\relax%
}%
-\newcount\tdrmt%
-\newcount\tdrmo%
+\newcount\twice@dynkin@rank@minus@one%
\newcount\max@BC@r%
\newcount\BC@r%
\newcount\BC@series@x%
\newcount\BC@series@y%
\NewDocumentCommand\place@BC@roots{}%
{%
-\drmo \the\dynkin@rank\relax%
-\advance\drmo by -1\relax%
-\tdrmt \the\drmo\relax%
-\advance\tdrmt by \the\drmo\relax%
-\tdrmo \the\tdrmt\relax%
-\advance\tdrmo 1\relax%
-\max@BC@r \the\dynkin@rank\relax%
-\advance\max@BC@r by 1\relax%
-\BC@r 1\relax%
-\loop%
- \BC@series@x \the\BC@r\relax%
- \advance\BC@series@x by -1\relax%
- \advance\BC@series@x by \the\BC@series@x\relax%
- \BC@series@y 1\relax%
- {%%
+ \twice@dynkin@rank@minus@one \the\dynkin@rank\relax%
+ \advance\twice@dynkin@rank@minus@one by \the\dynkin@rank\relax%
+ \advance\twice@dynkin@rank@minus@one by -1\relax%
+ \max@BC@r \the\dynkin@rank\relax%
+ \advance\max@BC@r by 1\relax%
+ \BC@r 1\relax%
\loop%
- \coordinate
- (\the\BC@series@y;\the\BC@r)
- at
- ({.5*\the\BC@series@x*\dynkin@edge@length},
- {.5*(\the\BC@series@y-1)*\dynkin@edge@length})
- {};%
- \advance\BC@series@y by 1\relax%
- \advance\BC@series@x by 1\relax%
- \ifnum\BC@series@x<\the\tdrmo\repeat%
- }%%
- \advance\BC@r by 1\relax%
- \ifnum\BC@r<\the\max@BC@r%
-\repeat%
+ \BC@series@x \the\BC@r\relax%
+ \advance\BC@series@x by -1\relax%
+ \advance\BC@series@x by \the\BC@series@x\relax%
+ \BC@series@y 1\relax%
+ {%%
+ \loop%
+ \coordinate
+ (\the\BC@series@y;\the\BC@r)
+ at
+ ({.5*\the\BC@series@x*\lie@hasse@edge@length},
+ {.5*(\the\BC@series@y-1)*\lie@hasse@edge@length})
+ {};%
+ \advance\BC@series@y by 1\relax%
+ \advance\BC@series@x by 1\relax%
+ \ifnum\BC@series@x<\the\twice@dynkin@rank@minus@one\repeat%
+ }%%
+ \advance\BC@r by 1\relax%
+ \ifnum\BC@r<\the\max@BC@r%
+ \repeat%
+}%
+\newcount\BC@height%
+\newcount\BC@g%
+\NewDocumentCommand\draw@BC@edges{}%
+{%
+ \rootSystemHeight{\BC@height}%
+ \ifnum\BC@height>1%
+ \BC@g 1\relax%
+ \loop%
+ \draw@BC@edges@at@grade{\the\BC@g}%
+ \global\advance\BC@g by 1\relax%
+ \ifnum\BC@g<\BC@height%
+ \repeat%
+ \fi%
}%
-\newcount\max@BC@i%
\newcount\BC@i%
-\newcount\BC@series@x%
-\newcount\BC@series@y%
+\newcount\BC@width%
+\newcount\BC@width@plus@one%
+\NewDocumentCommand\draw@BC@edges@at@grade{m}%
+{%
+ \rootSystemWidthAtGrade{#1}{\BC@width}%
+ \BC@width@plus@one \BC@width\relax%
+ \advance \BC@width@plus@one by 1\relax%
+ \BC@i 1\relax%
+ {%
+ \loop%
+ \draw@BC@edges@at@root{#1}{\the\BC@i}%
+ \global\advance\BC@i by 1\relax%
+ \ifnum\BC@i<\BC@width@plus@one\repeat%
+ }%
+}%
+\newcount\BC@height%
\newcount\BC@ii%
-\newcount\BC@series@yy%
-\newcount\BC@series@yy%
-\newcount\lbl%
+\newif\ifBC@draw%
+\newcount\lie@hasse@lbl%
\newcount\temp@lbl%
-\NewDocumentCommand\draw@BC@edges{s}%
-{%
-\tdrmo \the\dynkin@rank\relax%
-\advance\tdrmo by \the\dynkin@rank\relax%
-\advance\tdrmo by -1\relax%
-\max@BC@i \the\dynkin@rank\relax%
-\advance\max@BC@i by 1\relax%
-\BC@i 1\relax%
-\loop%
- \BC@series@x \the\BC@i\relax%
- \advance\BC@series@x by \the\BC@i\relax%
- \advance\BC@series@x by -2\relax%
- \BC@series@y 1\relax%
- {%%
- \loop%
- \ifnum\BC@i>1%
- % draw an edge upward to the left
- \BC@ii \the\BC@i\relax%
- \advance\BC@ii by -1\relax%
- \BC@series@yy \the\BC@series@y\relax%
- \advance\BC@series@yy by 1\relax%
- \draw@lie@hasse@edge[right]%
- {\the\BC@series@y}{\the\BC@i}%
- {\the\BC@ii}%
- {\the\BC@ii}%
+\NewDocumentCommand\draw@BC@edges@at@root{mm}%
+{%
+ \ifnum#2>1%
+ % draw an edge upward to the left
+ \BC@ii #2\relax%
+ \advance\BC@ii by -1\relax%
+ \draw@lie@hasse@edge[right]%
+ {#1}{#2}%
+ {\the\BC@ii}
+ {\the\BC@ii}%
+ \fi%
+ \BC@drawtrue%
+ \ifodd#1
+ \ifnum#2=\the\BC@width%
+ \global\BC@drawfalse%
\fi%
- \ifnum\BC@series@y>1%
- % draw an edge downward to the left
- \BC@series@yy \the\BC@series@y\relax%
- \advance\BC@series@yy by -1\relax%
- \lbl \the\BC@i\relax%
- \advance\lbl by \the\BC@series@y\relax%
- \advance\lbl by -1\relax%
- \ifnum\dynkin@rank<\the\lbl%
- \temp@lbl \the\lbl\relax%
- \lbl \the\dynkin@rank\relax%
- \advance\lbl by \the\dynkin@rank%
- \advance\lbl by -\the\temp@lbl%
+ \fi%
+ \ifBC@draw%
+ % draw an edge upward to the right
+ \lie@hasse@lbl #2\relax%
+ \advance\lie@hasse@lbl by #1\relax%
+ \ifnum\dynkin@rank<\the\lie@hasse@lbl%
+ \temp@lbl \the\lie@hasse@lbl\relax%
+ \lie@hasse@lbl \the\dynkin@rank\relax%
+ \advance\lie@hasse@lbl by \the\dynkin@rank%
+ \advance\lie@hasse@lbl by -\the\temp@lbl%
%% For the B series:
- \IfBooleanF{#1}{\global\advance\lbl by 1\relax}%
- \draw@lie@hasse@edge[left]%
- {\the\BC@series@yy}{\the\BC@i}%
- {\the\BC@i}%
- {\the\lbl}%
- \else%
- \draw@lie@hasse@edge[left]%
- {\the\BC@series@yy}{\the\BC@i}%
- {\the\BC@i}%
- {\the\lbl}%
+ \iflie@hasse@B%
+ \global\advance\lie@hasse@lbl by 1\relax%
\fi%
+ \draw@lie@hasse@edge[left]%
+ {#1}{#2}%
+ {#2}%
+ {\the\lie@hasse@lbl}%
+ \else%
+ \draw@lie@hasse@edge[left]%
+ {#1}{#2}%
+ {#2}%
+ {\the\lie@hasse@lbl}%
\fi%
- \advance\BC@series@y by 1\relax%
- \advance\BC@series@x by 1\relax%
- \ifnum\BC@series@x<\the\tdrmo\repeat%
- }%%
- \advance\BC@i by 1\relax%
- \ifnum\BC@i<\the\max@BC@i%
-\repeat%
-}%
-\newcount\tdrpt%
-\newcount\BC@r%
-\newcount\BC@series@y%
-\newcount\maxy%
-\NewDocumentCommand\draw@BC@roots{}%
-{%
-\tdrpt \the\dynkin@rank\relax%
-\advance\tdrpt by \the\dynkin@rank\relax%
-\advance\tdrpt by 2\relax%
-\max@BC@r \the\dynkin@rank\relax%
-\advance\max@BC@r by 1\relax%
-\BC@r 1\relax%
-\loop%
- \BC@series@y 1\relax%
- \maxy \tdrpt\relax%
- \advance\maxy -\the\BC@r\relax%
- \advance\maxy -\the\BC@r\relax%
- {%%
- \loop%
- \draw@lie@hasse@root{\the\BC@series@y;\the\BC@r}%
- \advance\BC@series@y by 1\relax%
- \ifnum\BC@series@y<\the\maxy\repeat%
- }%%
- \advance\BC@r by 1\relax%
- \ifnum\BC@r<\the\max@BC@r%
-\repeat%
+ \fi%
}%
\NewDocumentCommand\hasse@BC{s}% star for C:
{%
@@ -809,7 +835,6 @@
{%
\draw@BC@edges%
}%
- \draw@BC@roots%
}%
\NewDocumentCommand\hasse@D{}%
{%
@@ -818,51 +843,45 @@
\iflie@hasse@threeD%
\draw@D@hasse@three@D%
\fi%
- \draw@D@roots%
}%
-\newcount\drmt%
\NewDocumentCommand\draw@D@hasse@three@D{}%
{%
- \drmo \the\dynkin@rank\relax%
- \advance\drmo by -1\relax%
- \drmt \the\dynkin@rank\relax%
- \advance\drmt by -2\relax%
\begin{pgfonlayer}{Dynkin middle}%
\fill[/Lie Hasse diagram/left]
- (\the\drmt;1) --
- (\the\drmo;1) --
+ (\the\dynkin@rank@minus@two;1) --
+ (\the\dynkin@rank@minus@one;1) --
(\the\dynkin@rank;1) --
- (\the\drmo;2) --
+ (\the\dynkin@rank@minus@one;2) --
cycle;%
\fill[/Lie Hasse diagram/top]
- (\the\drmt;1) --
- (1;\the\drmt) --
- (2;\the\drmo) --
- (\the\drmo;2) --
+ (\the\dynkin@rank@minus@two;1) --
+ (1;\the\dynkin@rank@minus@two) --
+ (2;\the\dynkin@rank@minus@one) --
+ (\the\dynkin@rank@minus@one;2) --
cycle;%
\fill[/Lie Hasse diagram/top]
- (\the\drmo;2) --
+ (\the\dynkin@rank@minus@one;2) --
(\the\dynkin@rank;1) --
- (3;\the\drmo) --
- (2;\the\drmo) --
+ (3;\the\dynkin@rank@minus@one) --
+ (2;\the\dynkin@rank@minus@one) --
cycle;%
\fill[/Lie Hasse diagram/top]
- (\the\drmo;1) --
+ (\the\dynkin@rank@minus@one;1) --
(\the\dynkin@rank;1) --
- (3;\the\drmo) --
- (2;\the\drmt) --
+ (3;\the\dynkin@rank@minus@one) --
+ (2;\the\dynkin@rank@minus@two) --
cycle;%
\fill[/Lie Hasse diagram/top]
- (\the\drmt;1) --
- (\the\drmo;1) --
- (2;\the\drmt) --
- (1;\the\drmt) --
+ (\the\dynkin@rank@minus@two;1) --
+ (\the\dynkin@rank@minus@one;1) --
+ (2;\the\dynkin@rank@minus@two) --
+ (1;\the\dynkin@rank@minus@two) --
cycle;%
\fill[/Lie Hasse diagram/left]
- (1;\the\drmt) --
- (2;\the\drmt) --
- (3;\the\drmo) --
- (2;\the\drmo) --
+ (1;\the\dynkin@rank@minus@two) --
+ (2;\the\dynkin@rank@minus@two) --
+ (3;\the\dynkin@rank@minus@one) --
+ (2;\the\dynkin@rank@minus@one) --
cycle;%
\end{pgfonlayer}%
}%
@@ -883,9 +902,7 @@
\newcount\D@g%
\newcount\maxD@grd%
\newcount\D@grd%
-\newcount\maxxD%
-\newcount\iD%
-\newcount\xxD%
+\newcount\lie@hasse@D@x%
\newcount\sum@D%
\NewDocumentCommand\place@D@roots{}%
{%
@@ -918,37 +935,34 @@
\repeat%
}%
}%
-\newcount\drpo%
\NewDocumentCommand\place@D@root@at{mm}%
{%
- \xxD #1\relax%
- \advance\xxD by #2\relax%
- \advance\xxD by #2\relax%
- \advance\xxD by -3\relax%
- \drpo \the\dynkin@rank\relax%
- \advance\drpo by 1\relax%
+ \lie@hasse@D@x #1\relax%
+ \advance\lie@hasse@D@x by #2\relax%
+ \advance\lie@hasse@D@x by #2\relax%
+ \advance\lie@hasse@D@x by -3\relax%
\sum@D #1\relax%
\advance\sum@D by #2\relax%
\ifnum\sum@D=\the\dynkin@rank%
\global\def\D@root@x%
- {\the\xxD-\lie@hasse@three@D@shift}%
+ {\the\lie@hasse@D@x-\lie@hasse@three@D@shift}%
\else%
- \ifnum\sum@D=\the\drpo%
+ \ifnum\sum@D=\the\dynkin@rank@plus@one%
\ifnum#1<\the\dynkin@rank%
\global\def\D@root@x%
- {\the\xxD-2+\lie@hasse@three@D@shift}%
+ {\the\lie@hasse@D@x-2+\lie@hasse@three@D@shift}%
\else%
- \global\def\D@root@x{\the\xxD}%
+ \global\def\D@root@x{\the\lie@hasse@D@x}%
\fi%
\else%
\ifnum\sum@D<\the\dynkin@rank%
- \global\def\D@root@x{\the\xxD}%
+ \global\def\D@root@x{\the\lie@hasse@D@x}%
\else%
% if \sum@D exceeds rank+1
\ifnum#1<\the\dynkin@rank%
- \global\def\D@root@x{\the\xxD-2}%
+ \global\def\D@root@x{\the\lie@hasse@D@x-2}%
\else%
- \global\def\D@root@x{\the\xxD}%
+ \global\def\D@root@x{\the\lie@hasse@D@x}%
\fi%
\fi%
\fi%
@@ -956,7 +970,7 @@
\coordinate
(#1;#2)
at
- ({(\D@root@x)*\dynkin@edge@length/2},{(#1-1)*\dynkin@edge@length/2})
+ ({(\D@root@x)*\lie@hasse@edge@length/2},{(#1-1)*\lie@hasse@edge@length/2})
{};%
}%
\NewDocumentCommand\draw@D@edges{}%
@@ -983,7 +997,8 @@
\D@r 1\relax%
{%
\loop%
- \draw@D@edges@at{#1}{\the\D@r}{\the\max@D@roots}%
+%%% \draw@D@edges@at{#1}{\the\D@r}{\the\max@D@roots}%
+ \draw@D@edges@at{#1}{\the\D@r}%
\advance\D@r by 1\relax%
\ifnum\D@r<\the\max@D@roots@plus@one%
\repeat%
@@ -1000,10 +1015,6 @@
\newcount\hasse@D@label%
\NewDocumentCommand\draw@D@edges@at{mm}%
{%
- \drmo\the\dynkin@rank\relax%
- \advance\drmo by -1\relax%
- \drpo \the\dynkin@rank\relax%
- \advance\drpo by 1\relax%
\hasse@D@gpo#1\relax%
\advance\hasse@D@gpo by 1\relax%
\hasse@D@gpi#1\relax%
@@ -1035,7 +1046,7 @@
\xdef\hasse@D@layer{Dynkin above}%
\else%
% below or middle.
- \ifnum\hasse@D@gpi=\the\drpo%
+ \ifnum\hasse@D@gpi=\the\dynkin@rank@plus@one%
\xdef\hasse@D@layer{Dynkin behind}%
\fi%
\fi%
@@ -1045,7 +1056,7 @@
\fi%
\fi%
\ifnum\dynkin@rank>#1%
- \ifnum\hasse@D@gpi<\the\drpo%
+ \ifnum\hasse@D@gpi<\the\dynkin@rank@plus@one%
\else%
\global\advance\hasse@D@label -1\relax%
\fi%
@@ -1069,7 +1080,7 @@
\fi%
\fi%
\ifnum#1=1%
- \ifnum\drmo=#2%
+ \ifnum\dynkin@rank@minus@one=#2%
\global\hasse@Dfalse\relax%
\else%
\xdef\hasse@D@LR{right}%
@@ -1080,13 +1091,13 @@
\ifnum\hasse@D@label>\the\dynkin@rank%
\hasse@D@label -\hasse@D@label\relax%
\advance\hasse@D@label \the\dynkin@rank\relax%
- \advance\hasse@D@label \the\drmo\relax%
+ \advance\hasse@D@label \the\dynkin@rank@minus@one\relax%
\fi%
- \ifnum\drmo<#1%
+ \ifnum\dynkin@rank@minus@one<#1%
\else%
\ifnum#2=1%
\else%
- \ifnum\hasse@D@gpi<\the\drpo%
+ \ifnum\hasse@D@gpi<\the\dynkin@rank@plus@one%
\else%
\advance\hasse@D@label 1\relax%
\fi%
@@ -1099,11 +1110,11 @@
\global\advance\hasse@D@target by 1\relax%
\fi%
\else%
- \ifnum\drmo=#1%
+ \ifnum\dynkin@rank@minus@one=#1%
\global\advance\hasse@D@target by -1\relax%
\fi%
\fi%
- \ifnum\hasse@D@gpi=\the\drpo%
+ \ifnum\hasse@D@gpi=\the\dynkin@rank@plus@one%
\ifnum#2>1%
\xdef\hasse@D@layer{Dynkin behind}%
\xdef\hasse@D@LR{right}%
@@ -1112,7 +1123,7 @@
\ifnum\hasse@D@gpi=\the\dynkin@rank%
\xdef\hasse@D@layer{Dynkin above}%
\else%
- \ifnum\hasse@D@gpi=\the\drmo%
+ \ifnum\hasse@D@gpi=\the\dynkin@rank@minus@one%
\xdef\hasse@D@layer{Dynkin above}%
\else%
\xdef\hasse@D@layer{Dynkin middle}%
@@ -1129,7 +1140,7 @@
\end{pgfonlayer}%
\fi%
% % Draw any other edges.
- \ifnum\hasse@D@gpi=\the\drmo%
+ \ifnum\hasse@D@gpi=\the\dynkin@rank@minus@one%
\hasse@D@target#2\relax%
\advance\hasse@D@target by 1\relax%
\begin{pgfonlayer}{Dynkin behind}
@@ -1142,38 +1153,7 @@
}%
\newcount\maxD@grd%
\newcount\D@grd%
-\newcount\maxxD%
\newcount\sum@D%
-\NewDocumentCommand\draw@D@roots{}%
-{%
- \drmo \the\dynkin@rank\relax%
- \advance\drmo by -1\relax%
- \maxD@grd \the\dynkin@rank\relax%
- \advance\maxD@grd by \the\dynkin@rank\relax%
- \advance\maxD@grd by -2\relax%
- \D@grd 1\relax%
- \loop%
- % Construct the roots at grade \D@grd.
- \draw@D@roots@at@grade{\D@grd}%
- \advance\D@grd by 1\relax%
- \ifnum\D@grd<\the\maxD@grd%
- \repeat%
-}%
-\NewDocumentCommand\draw@D@roots@at@grade{m}%
-{%
- \hasse@D@width@at@grade{#1}{\max@D@roots}%
- \max@D@roots@plus@one \the\max@D@roots\relax%
- \advance\max@D@roots@plus@one 1\relax%
- \D@r 1\relax%
- {%
- \loop%
- \draw@lie@hasse@root{\the\D@grd;\the\D@r}%
- \advance\D@r by 1\relax%
- \ifnum\D@r<\the\max@D@roots@plus@one%
- \repeat%
- }%
-}%
-%}%
\newcount\lie@hasse@grade@no
\newcount\lie@hasse@root@no
\def\lie@hasse@XX{}
@@ -1205,14 +1185,14 @@
\coordinate
(\the\lie@hasse@grade@no;\the\lie@hasse@root@no)
at
- ({\lie@hasse@XX*\dynkin@edge@length/2},
- {(\the\lie@hasse@grade@no-1)*\dynkin@edge@length/2}) {};%
+ ({\lie@hasse@XX*\lie@hasse@edge@length/2},
+ {(\the\lie@hasse@grade@no-1)*\lie@hasse@edge@length/2}) {};%
\global\advance\lie@hasse@root@no by 1%
}%
\NewDocumentCommand\lie@hasse@place@root@list{m}%
{%
\global\lie@hasse@root@no 1\relax%
- \expandafter\forcsvlist\expandafter{\lie@hasse@place@root}{#1}%
+ \expandafter\forcsvlist\expandafter\lie@hasse@place@root{#1}%
\global\advance\lie@hasse@grade@no by 1%
}%
\NewDocumentCommand\lie@hasse@place@roots{m}%
@@ -1224,26 +1204,6 @@
}%
\expandafter\docsvlist\expandafter{#1}%
}%
-\NewDocumentCommand\lie@hasse@draw@root{m}%
-{%
- \draw@lie@hasse@root{\the\lie@hasse@grade@no;\the\lie@hasse@root@no}%
- \global\advance\lie@hasse@root@no by 1%
-}%
-\NewDocumentCommand\lie@hasse@root@draw@list{m}%
-{%
- \global\lie@hasse@root@no 1\relax%
- \expandafter\forcsvlist\expandafter{\lie@hasse@draw@root}{#1}%
- \global\advance\lie@hasse@grade@no by 1%
-}%
-\NewDocumentCommand\lie@hasse@draw@roots{m}%
-{%
- \global\lie@hasse@grade@no 1\relax%
- \renewcommand*{\do}[1]%
- {%
- \lie@hasse@root@draw@list{##1}%
- }%
- \expandafter\docsvlist\expandafter{#1}%
-}%
\newcount\lie@hasse@grade@no@plus@one%
\newcount\lie@hasse@edge@count%
\def\lie@hasse@edge@go{%
@@ -1256,7 +1216,8 @@
{%
\global\advance\lie@hasse@edge@count by 1\relax%
\begin{pgfonlayer}{Dynkin above}%
- \lie@hasse@finish@edge#1!%
+%%? \lie@hasse@finish@edge#1!%
+ \lie@hasse@finish@edge#1\relax%
\end{pgfonlayer}%
}%
\def\lie@hasse@process@edge@behind#1!%
@@ -1289,13 +1250,12 @@
\NewDocumentCommand\lie@hasse@process@edge@lists{m}%
{%
\global\lie@hasse@grade@no 1\relax%
- \expandafter\forcsvlist\expandafter{\lie@hasse@process@edge@list}{#1}%
+ \expandafter\forcsvlist\expandafter\lie@hasse@process@edge@list{#1}%
}%
\NewDocumentCommand\hasse@X{mm}%
{%
\lie@hasse@place@roots{#1}%
\lie@hasse@process@edge@lists{#2}%
- \lie@hasse@draw@roots{#1}%
}%
\NewDocumentCommand\hasse@E@six@width@at@grade{mm}%
{%
@@ -1323,7 +1283,11 @@
#2 1%
\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi%
}%
-% In the following code, edges are described by grade: in grade g, the expression i+r<j. means an edge from g;i to (g+1);j labelled by root r, with a label on the left; use > instead of < to get the right. Use a star in front to get this edge on the higher layer.
+% In the following code, edges are described by grade:
+% in grade g, the expression i+r<j. means an edge from
+% g;i to (g+1);j labelled by root r, with a label on
+% the left; use > instead of < to get the right. Use a
+% star in front to get this edge on the higher layer.
\NewDocumentCommand\hasse@E@six{}%
{%
\hasse@X%
@@ -1353,13 +1317,45 @@
}%%%
\iflie@hasse@threeD%
\begin{pgfonlayer}{Dynkin middle}%
-\fill[/Lie Hasse diagram/top] (2;1) -- (5;3) -- (2;5) -- (1;5) -- (2;4) -- (1;3) -- (2;2) -- (1;2) -- cycle;%
-\fill[/Lie Hasse diagram/top] (2;3) -- (4;1) -- (6;2) -- (4;5) -- cycle;%
-\fill[/Lie Hasse diagram/right] (1;3) -- (2;3) -- (4;5) -- (3;5) -- cycle;%
-\fill[/Lie Hasse diagram/left] (3;1) -- (4;1) -- (2;3) -- (1;3) -- cycle;%
-\fill[/Lie Hasse diagram/left] (4;3) -- (5;1) -- (6;1) -- (5;2) -- cycle;%
-\fill[/Lie Hasse diagram/right] (4;3) -- (5;2) -- (6;3) -- (5;4) -- cycle;%
-\fill[/Lie Hasse diagram/top] (5;2) -- (7;1) -- (9;1) -- (7;3) -- cycle;%
+ \fill[/Lie Hasse diagram/top]
+ (2;1) --
+ (5;3) --
+ (2;5) --
+ (1;5) --
+ (2;4) --
+ (1;3) --
+ (2;2) --
+ (1;2) -- cycle;%
+ \fill[/Lie Hasse diagram/top]
+ (2;3) --
+ (4;1) --
+ (6;2) --
+ (4;5) -- cycle;%
+ \fill[/Lie Hasse diagram/right]
+ (1;3) --
+ (2;3) --
+ (4;5) --
+ (3;5) -- cycle;%
+ \fill[/Lie Hasse diagram/left]
+ (3;1) --
+ (4;1) --
+ (2;3) --
+ (1;3) -- cycle;%
+ \fill[/Lie Hasse diagram/left]
+ (4;3) --
+ (5;1) --
+ (6;1) --
+ (5;2) -- cycle;%
+ \fill[/Lie Hasse diagram/right]
+ (4;3) --
+ (5;2) --
+ (6;3) --
+ (5;4) -- cycle;%
+ \fill[/Lie Hasse diagram/top]
+ (5;2) --
+ (7;1) --
+ (9;1) --
+ (7;3) -- cycle;%
\end{pgfonlayer}%
\fi%
}%
@@ -1399,7 +1395,6 @@
#2 1%
\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi%
}%
-
\NewDocumentCommand\hasse@E@seven{}%
{%
\hasse@X%
@@ -1457,20 +1452,64 @@
}%%%
\iflie@hasse@threeD%
\begin{pgfonlayer}{Dynkin middle}%
-\fill[/Lie Hasse diagram/top] (2;1) -- (6;3) -- (2;6) -- (1;6) -- (2;5) -- (1;4) -- (2;3) -- (1;3) --
- (2;2) -- (1;2) -- cycle;%
-\fill[/Lie Hasse diagram/top] (5;1) -- (7;3) -- (4;6) -- (2;4) -- cycle;%
-\fill[/Lie Hasse diagram/top] (7;1) -- (9;3) -- (7;5) -- (5;4) -- cycle;%
-\fill[/Lie Hasse diagram/top] (9;1) -- (12;1) -- (13;1) -- (14;1) -- (11;3) -- (7;2) -- cycle;%
-\fill[/Lie Hasse diagram/right] (1;4) -- (2;4) -- (4;6) -- (3;6) -- cycle;%
-\fill[/Lie Hasse diagram/left] (4;1) -- (5;1) -- (2;4) -- (1;4) -- cycle;%
-\fill[/Lie Hasse diagram/left] (4;4) -- (6;1) -- (8;1) -- (7;2) -- (6;2) -- (5;4) -- cycle;%
-\fill[/Lie Hasse diagram/right] (4;4) -- (5;4) -- (6;5) -- (5;6) -- cycle;%
-\fill[/Lie Hasse diagram/right] (6;2) -- (7;2) -- (9;4) -- (8;4) -- cycle;%
+ \fill[/Lie Hasse diagram/top]
+ (2;1) --
+ (6;3) --
+ (2;6) --
+ (1;6) --
+ (2;5) --
+ (1;4) --
+ (2;3) --
+ (1;3) --
+ (2;2) --
+ (1;2) -- cycle;%
+ \fill[/Lie Hasse diagram/top]
+ (5;1) --
+ (7;3) --
+ (4;6) --
+ (2;4) -- cycle;%
+ \fill[/Lie Hasse diagram/top]
+ (7;1) --
+ (9;3) --
+ (7;5) --
+ (5;4) -- cycle;%
+ \fill[/Lie Hasse diagram/top]
+ (9;1) --
+ (12;1) --
+ (13;1) --
+ (14;1) --
+ (11;3) --
+ (7;2) -- cycle;%
+ \fill[/Lie Hasse diagram/right]
+ (1;4) --
+ (2;4) --
+ (4;6) --
+ (3;6) -- cycle;%
+ \fill[/Lie Hasse diagram/left]
+ (4;1) --
+ (5;1) --
+ (2;4) --
+ (1;4) -- cycle;%
+ \fill[/Lie Hasse diagram/left]
+ (4;4) --
+ (6;1) --
+ (8;1) --
+ (7;2) --
+ (6;2) --
+ (5;4) -- cycle;%
+ \fill[/Lie Hasse diagram/right]
+ (4;4) --
+ (5;4) --
+ (6;5) --
+ (5;6) -- cycle;%
+ \fill[/Lie Hasse diagram/right]
+ (6;2) --
+ (7;2) --
+ (9;4) --
+ (8;4) -- cycle;%
\end{pgfonlayer}%
\fi%
}%
-
\NewDocumentCommand\hasse@E@eight@width@at@grade{mm}%
{%
\ifnum#1=1%
@@ -1527,7 +1566,6 @@
#2 1%
\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi%
}%
-
\NewDocumentCommand\hasse@E@eight{}%
{%
\hasse@X{%
@@ -1754,11 +1792,11 @@
{{0,2,4,6},{1,3,5},{2,3:1,4},{2:1,3,4:1},{1:1,3:1,5:1},{2:1,4:1},{1:1,3:1},{2:1},{2:2},{2:3},{2:4}}%
{% grades:
{% 1
-1+2<1,*2+3<2,*3+4<3,*2+1>1,*3+2>2,4+3>3},
+1+2<1,*2+3>2,*3+4>3,*2+1<1,*3+2<2,4+3>3},
{% 2
-*1+3<1,*2+4<3,*2+3<2,*2+1<1,3+2>3},
+*1+3<1,*2+4>3,*2+1<1,*2+3>2,3+2>3},
{% 3
-*1+3<1,1+4<2,*2+4<3,*2+1<1,3+1>2,*3+3>3},
+*1+3<1,1+4>2,*2+4>3,*2+1<1,3+1>2,*3+3>3},
{% 4
*1+2<1,*1+4<2,2+3<2,*3+1>2,*3+4>3},
{% 5
@@ -2026,8 +2064,8 @@
}%
\global\root@sum@resetfalse%
}%
-\xdef\my@root@sum{}%
-\xdef\my@fixed@root@sum{}%
+\xdef\lie@hasse@root@sum{}%
+\xdef\lie@hasse@fixed@root@sum{}%
\NewDocumentCommand\rootSum{oommm}%
{%
\IfValueT{#1}%
@@ -2053,15 +2091,15 @@
\fi%
\IfStrEqCase{\dynkin@series}%
{%
- {A}{\hasse@A@root@sum{#3}{#4}{\my@root@sum}}%
- {B}{\hasse@B@root@sum{#3}{#4}{\my@root@sum}}%
- {C}{\hasse@C@root@sum{#3}{#4}{\my@root@sum}}%
- {D}{\hasse@D@root@sum{#3}{#4}{\my@root@sum}}%
- {E}{\xdef\my@root@sum{\exceptional@root@sum{#3;#4}}}%
- {F}{\xdef\my@root@sum{\exceptional@root@sum{#3;#4}}}%
- {G}{\xdef\my@root@sum{\exceptional@root@sum{#3;#4}}}%
+ {A}{\hasse@A@root@sum{#3}{#4}{\lie@hasse@root@sum}}%
+ {B}{\hasse@B@root@sum{#3}{#4}{\lie@hasse@root@sum}}%
+ {C}{\hasse@C@root@sum{#3}{#4}{\lie@hasse@root@sum}}%
+ {D}{\hasse@D@root@sum{#3}{#4}{\lie@hasse@root@sum}}%
+ {E}{\xdef\lie@hasse@root@sum{\exceptional@root@sum{#3;#4}}}%
+ {F}{\xdef\lie@hasse@root@sum{\exceptional@root@sum{#3;#4}}}%
+ {G}{\xdef\lie@hasse@root@sum{\exceptional@root@sum{#3;#4}}}%
}%
- \StrSubstitute{\my@root@sum}{.}{,}[#5]%
+ \StrSubstitute{\lie@hasse@root@sum}{.}{,}[#5]%
}%
%% \rootSystemHeight[G][2]{\h} sets the counter \h to the height of the poset
%% of the root system G2. \rootSystemHeight{\h} uses the current root system.
@@ -2451,7 +2489,7 @@
4;1=3.1,%
5;1=3.2}%
}%
-\NewDocumentCommand\forAllPositiveRootsInHasseDiagram{m}%
+\NewDocumentCommand\forAllPositiveRoots{m}%
{%
\rootSystemHeight{\lie@hasse@height}%
\foreach \root@grady in {1,...,\the\lie@hasse@height}%
diff --git a/graphics/pgf/contrib/lie-hasse/lie-hasse.tex b/graphics/pgf/contrib/lie-hasse/lie-hasse.tex
index 82643fee14..762639c603 100644
--- a/graphics/pgf/contrib/lie-hasse/lie-hasse.tex
+++ b/graphics/pgf/contrib/lie-hasse/lie-hasse.tex
@@ -1,5 +1,5 @@
\documentclass{amsart}
-\title[The Lie Hasse package]{The Lie Hasse package \\ Version 1.0}
+\title[The Lie Hasse package]{The Lie Hasse package \\ Version 1.01}
%% My name:
\makeatletter
\DeclareRobustCommand{\scotsMc}{\scotsMcx{c}}
@@ -19,8 +19,7 @@
\author{\authorsname}
\address{School of Mathematical Sciences, University College Cork, Cork, Ireland}
\email{b.mckay@ucc.ie}
-\date{3 February 2020}
-\usepackage{etex}
+\date{9 July 2024}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenx}
\usepackage{etoolbox}
@@ -87,7 +86,7 @@
root radius=.02cm,
edge length=.5cm,
edge quotes/.style={opacity=0}%
- ]{E}{8}%
+ ]E8%
\end{tikzpicture}%
\end{center}%
\begin{center}
@@ -106,26 +105,26 @@ This package draws the Hasse diagram of the poset of the positive simple roots o
\begin{document}
The Hasse diagram of \(F_4\) is
\begin{center}
-\hasse[edge length=1cm]{F}{4}
+\hasse F4
\end{center}
\end{document}
\end{Verbatim}
\end{tcolorbox}
\par\noindent{}The Hasse diagram of \(F_4\) is
\begin{center}
-\hasse[edge length=1cm]{F}{4}
+\hasse[edge length=1cm]F4
\end{center}
Each edge is labelled with the simple root by which vertices differ.
\begin{tcblisting}{title={Inside a \TikZ statement}}
-\(B_4\) has Dynkin diagram \tikz \dynkin[edge length=.35cm]{B}{4};, Hasse diagram
+\(B_4\) has Dynkin diagram \tikz \dynkin{B}{4};, Hasse diagram
\begin{center}
-\hasse[edge length=1cm]{B}{4}
+\hasse[edge length=1cm]B4
\end{center}
\end{tcblisting}
\begin{tcblisting}{title={Inside a Dynkin diagram environment, diagrams fit together}}
The Hasse diagram of \(B_4\) is
\begin{dynkinDiagram}[vertical shift=0,edge length=1cm]{B}{4}
-\hasse{B}{4}
+\hasse[edge length=1cm]B4
\end{dynkinDiagram}
\end{tcblisting}
We shut off the default vertical shift of the Dynkin diagram, so that it starts at the origin.
@@ -133,35 +132,26 @@ There is an option to \verb!\hasse! for this:
\begin{tcblisting}{title={Attaching the Dynkin diagram}}
The Hasse diagram of \(B_4\) is
\begin{center}
-\hasse[attach Dynkin diagram=true]{B}{4}
+\hasse[attach Dynkin diagram=true]B4
\end{center}
\end{tcblisting}
Unfortunately, attaching a Dynkin diagram looks terrible for \(D\) or \(E\) series, so a Dynkin diagram appears below.
\begin{tcblisting}{title={Attaching the Dynkin diagram}}
The Hasse diagram of \(D_5\) is
\begin{center}
-\hasse[attach Dynkin diagram=true]{D}{5}
+\hasse[attach Dynkin diagram=true]D5
\end{center}
\end{tcblisting}
\begin{tcblisting}{title={Inside a \TikZ environment}}
\begin{tikzpicture}
-\hasse{A}{4}
+\hasse A4
\draw (4;1) circle (5pt);
\draw[red] (2;3) circle (5pt);
\end{tikzpicture}
\end{tcblisting}
In this example, we see that the roots of the Hasse diagram are \TikZ{} nodes labelled \(g;i\) for grade \(g\) (i.e. \(g\) units up the page) and index \(i\) (i.e. \(i^{\text{th}}\) root of grade \(g\) drawn on the page, starting from the left).
-\section{Inherited options}
-The Lie Hasse package inherits options from the Dynkin diagrams package: the edge lengths are set with
-\begin{Verbatim}
-\tikzset{/Dynkin diagram/edge lengths=1.2cm}
-\end{Verbatim}
-and similarly the ordering of roots with
-\begin{Verbatim}
-\tikzset{/Dynkin diagram/ordering=Bourbaki}
-\end{Verbatim}
-
+\newpage
\section{Prettier}
The package includes a more elaborate \verb!\hasseDiagrams! command, taking a list of semicolon separated Dynkin diagram identfiers.
\begin{tcolorbox}[title={With some global options to make prettier diagrams}]
@@ -198,11 +188,20 @@ The package includes a more elaborate \verb!\hasseDiagrams! command, taking a li
\endgroup
Global options:
\begin{verbatim}
- edge/.style={ultra thick},
- edge quotes/.style={/Dynkin diagram/text style,auto,inner sep=2pt},
+\tikzset{/Lie Hasse,
+ edge/.style={ultra thick},
+ edge quotes/.style={
+ /Dynkin diagram/text style,
+ auto,
+ inner sep=2pt},
\end{verbatim}
allow to change the edges, and to change the way that labels are printed, and how close labels are to the edges.
-
+To give even greater control, the user can define a command \verb!\edgeQuote! of one argument, which is applied to the label placed on every edge of the Hasse diagram.
+The default is
+\begin{verbatim}
+\NewDocumentCommand\edgeQuote{m}{\contour{white}{#1}}
+\end{verbatim}
+which ensures that every label, which is black text by default, has a slight white outline to make it easier to read against a coloured background.
\section{Root order}
@@ -222,6 +221,10 @@ We can use this like:
\hasseDiagrams{[ordering=Carter]E6;[ordering=Dynkin]E6}
\hasseDiagrams{[ordering=Kac]E6}
\endgroup
+The Lie Hasse package inherits the ordering of roots from the Dynkin diagrams package, so we can set it with
+\begin{Verbatim}
+\tikzset{/Dynkin diagram/ordering=Bourbaki}
+\end{Verbatim}
\section{Graph height and width}
The \emph{height} of a Hasse diagram is the number of grades.
@@ -238,7 +241,7 @@ to store the height of \(G_2\) in a counter called \verb!\h!, and
\end{Verbatim}
to store the width of \(G_2\) at grade \(3\) in a counter called \verb!\w!.
-Once you use \verb!\dynkin{G}{2}! or \verb!\hasse{G}{2}! or the other commands, like
+Once you use \verb!\dynkin G2! or \verb!\hasse G2! or the other commands, like
\begin{Verbatim}
\rootSystemHeight[G][2]{\h}
\end{Verbatim}
@@ -260,7 +263,8 @@ The \verb!show height! option:
\hasseDiagrams{G2}
\end{Verbatim}
\tikzset{/Lie Hasse diagram,show name=true,show height=true}
-\hasseDiagrams{G2}
+\hasse G2
+
The \verb!show widths! option:
\begin{Verbatim}
\tikzset{/Lie Hasse diagram/show widths=true}
@@ -293,11 +297,11 @@ Here is the Dynkin diagram of \(E_8\), indicating the order of the roots in Cart
Here is the same Dynkin diagram, except showing, at each simple root, the coefficient of that simple root in the highest root.
\begin{Verbatim}
\rootSum[E][8]{29}{1}{\rs}
-\dynkin[labels=\rs,ordering=Carter,edge length=.35cm]{E}{8}
+\dynkin[expand labels=\rs,ordering=Carter,edge length=.35cm]{E}{8}
\end{Verbatim}
\rootSum[E][8]{29}{1}{\rs}
\begin{center}
-\dynkin[labels=\rs,ordering=Carter,edge length=.35cm]{E}{8}
+\dynkin[expand labels=\rs,ordering=Carter,edge length=.35cm]{E}{8}
\end{center}
The option \verb!for all roots! allows execution of code once on every root.
@@ -312,7 +316,7 @@ The option \verb!for all roots! allows execution of code once on every root.
root radius=.05cm
},
for all roots/.code 2 args={\drawRootAsDynkinSum{#1}{#2}}}
-\hasseDiagrams{D5}
+\hasse D5
\end{Verbatim}
\begingroup
\tikzset{/Lie Hasse diagram,
@@ -341,23 +345,23 @@ A simple example:
\end{Verbatim}
\newcommand{\foo}[2]%
{%
- \node[below,scale=.75] at (#1;#2) {\(#1,#2\)};%
+ \node[below,scale=.5] at (#1;#2) {\(#1,#2\)};%
}%
Inside a \TikZ{} or \verb!dynkinDiagram! environment:
\begin{Verbatim}
\tikzset{/Lie Hasse diagram/edge quotes/.style={opacity=0},
/Dynkin diagram/edge length=1.5cm}
\begin{tikzpicture}
- \hasse{D}{6}%
- \forAllPositiveRootsInHasseDiagram{\foo}%
+ \hasse D6%
+ \forAllPositiveRoots{\foo}%
\end{tikzpicture}
\end{Verbatim}
\begingroup
\tikzset{/Lie Hasse diagram/edge quotes/.style={opacity=0},
/Dynkin diagram/edge length=1.5cm}
\begin{tikzpicture}
- \hasse{D}{6}%
- \forAllPositiveRootsInHasseDiagram{\foo}%
+ \hasse D6%
+ \forAllPositiveRoots{\foo}%
\end{tikzpicture}
If you put this into the \verb!for all roots! option, it executes on its own:
@@ -378,19 +382,19 @@ Opposite sides of any square have the same edge label, by commutativity of addit
Hence we don't need to see every edge perfectly.
The three dimensional effect is the default:
\begin{Verbatim}
-\hasse{D}{4}\hasse{E}{6}
+\hasse D4\hasse E6
\end{Verbatim}
\begin{center}
-\hasse{D}{4}\hasse{E}{6}
+\hasse D4\hasse E6
\end{center}
We can turn it off:
\begin{Verbatim}
-\hasse[three D=false]{D}{4}
-\hasse[three D=false]{E}{6}
+\hasse[three D=false] D4
+\hasse[three D=false] E6
\end{Verbatim}
\begin{center}
-\hasse[three D=false]{D}{4}
-\hasse[three D=false]{E}{6}
+\hasse[three D=false] D4
+\hasse[three D=false] E6
\end{center}
or globally with \verb!\tikzset{/Lie Hasse diagram/three D=false}!.
@@ -430,9 +434,9 @@ You can change these:
\section{Label the simple roots}
Ringel \cite{Ringel:2013} labels his edges like
\begin{Verbatim}
-\hasseDiagrams{[labels={f,e,d,c,u,b,a}]E7}
+\hasse[labels={f,e,d,c,u,b,a}]E7
\end{Verbatim}
-\hasseDiagrams{[labels={f,e,d,c,u,b,a}]E7}
+\hasse[labels={f,e,d,c,u,b,a}]E7
\section{Parabolic subgroups}
This package offers nothing over Ringel's original pictures, except that the user can pick some simple roots whose associated edges are drawn differently.
@@ -440,47 +444,48 @@ The chosen simple roots are called \emph{compact}, following terminology from th
We let the reader explore the notation for parabolic subgroups in the Dynkin diagrams package, and use this to declare various roots compact.
\begin{Verbatim}
\tikzset{/Lie Hasse diagram,attach Dynkin diagram=true,three D=false}
-\hasseDiagrams{D{**x*x*x*}}
+\hasse D{**x*x*x*}
\end{Verbatim}
\begingroup
\tikzset{/Lie Hasse diagram,attach Dynkin diagram=true,three D=false}
-\hasseDiagrams{D{**x*x*x*}}
+\hasse D{**x*x*x*}
\endgroup
+
Our motivation comes from trying to identify the invariant vector subbundles of the tangent bundle of a rational homogeneous variety \cite{MathOverflow:123801}.
Such diagrams are often unreadable if we don't turn off the three dimensional graphics.
By default, noncompact root edges are not drawn.
\begingroup
\tikzset{/Lie Hasse diagram,attach Dynkin diagram=true,show name=false,three D=false}
\begin{Verbatim}
-\hasseDiagrams{E{*xx*x*}}
+\hasse E{*xx*x*}
\end{Verbatim}
-\hasseDiagrams{E{*xx*x*}}
+\hasse E{*xx*x*}
\begin{Verbatim}
-\hasseDiagrams{A{x*x*}}
+\hasse A{x*x*}
\end{Verbatim}
-\hasseDiagrams{A{x*x*}}
+\hasse A{x*x*}
\begin{Verbatim}
-\hasseDiagrams{[parabolic=113]B8}
+\hasse[parabolic=113]B8
\end{Verbatim}
-\hasseDiagrams{[parabolic=113]B8}
+\hasse[parabolic=113]B8
\begin{Verbatim}
-\hasseDiagrams{C{**xx*x**}}
+\hasse C{**xx*x**}
\end{Verbatim}
-\hasseDiagrams{C{**xx*x**}}
+\hasse C{**xx*x**}
\newpage
\begin{Verbatim}
-\hasseDiagrams{E{*x*x*x**}}
+\hasse E{*x*x*x**}
\end{Verbatim}
-\hasseDiagrams{E{*x*x*x**}}
+\hasse E{*x*x*x**}
\newpage
\begin{Verbatim}
-\hasseDiagrams{F{**xx}}
+\hasse F{**xx}
\end{Verbatim}
-\hasseDiagrams{F{**xx}}
+\hasse F{**xx}
\begin{Verbatim}
-\hasseDiagrams{G{*x}}
+\hasse G{*x}
\end{Verbatim}
-\hasseDiagrams{G{*x}}
+\hasse G{*x}
\endgroup
\section{Examples}
diff --git a/graphics/pstricks/base/Changes b/graphics/pstricks/base/Changes
index 887654e5b9..5871e81cb9 100644
--- a/graphics/pstricks/base/Changes
+++ b/graphics/pstricks/base/Changes
@@ -1,4 +1,4 @@
-% $Id: Changes 805 2023-11-06 20:31:22Z herbert $
+% $Id: Changes 913 2024-07-09 16:27:10Z herbert $
For all changes see file History! Here are only the last one changes
listed.
@@ -11,6 +11,8 @@ pstricks.tex --------
versions like 2.47a have only changes in other files, but not
in this main package.
+3.20 2024-07-09 - changed \clipbox to \psclipbox to prevent clash with
+ other package which also uses \clipbox
3.19c 2024-02-02 - fix for check of wrong docname "pstricks.tex" in pstricks.sty (RN)
3.19b 2023-11-06 - Revert Code for \DocumentMetadata in pstricks.sty
3.19a 2023-10-30 - Try to suppress the warning with lualatex and a
diff --git a/graphics/pstricks/base/doc/pst-news24.pdf b/graphics/pstricks/base/doc/pst-news24.pdf
index bbc7bf404d..e102b8a602 100644
--- a/graphics/pstricks/base/doc/pst-news24.pdf
+++ b/graphics/pstricks/base/doc/pst-news24.pdf
Binary files differ
diff --git a/graphics/pstricks/base/doc/pst-news24.tex b/graphics/pstricks/base/doc/pst-news24.tex
index 3fb53580ab..bf357b88d4 100644
--- a/graphics/pstricks/base/doc/pst-news24.tex
+++ b/graphics/pstricks/base/doc/pst-news24.tex
@@ -41,6 +41,12 @@ broken.
Added a test for \verb|lualatex| before the default linewidth and color are set.
See last line in \verb|pstricks.tex|
+Moved macro \Lcs{clipbox} to \Lcs{psclipbox} to prevent a clash with package
+\LPack{adjustbox}
+from Martin Scharrer.
+
+
+
\section{\LuaLaTeX}\label{lua}
This version has a stable basic support for the lua package
\LPack{luapstricks.lua}, available from \url{https://github.com/zauguin/luapstricks}.
diff --git a/graphics/pstricks/base/doc/pstricks-bug.tex b/graphics/pstricks/base/doc/pstricks-bug.tex
index b5f9ba2c32..d4e0329dd3 100644
--- a/graphics/pstricks/base/doc/pstricks-bug.tex
+++ b/graphics/pstricks/base/doc/pstricks-bug.tex
@@ -97,7 +97,7 @@
% 15. When lines are very short, linestyle=dash may cause an error.
% PATCH: Input this file.
%
-% 16. \clipbox does not work.
+% 16. \psclipbox does not work.
% PATCH: Input this file.
%
% 17. Various nodes are missing \leavevmode, which can cause irregularities
@@ -509,8 +509,8 @@
stroke>
% 16.
-\def\clipbox{\@ifnextchar[{\clipbox@}{\clipbox@[\z@]}}
-\def\clipbox@[#1]{\pst@makebox\clipbox@@{#1}}
+\def\psclipbox{\@ifnextchar[{\psclipbox@}{\psclipbox@[\z@]}}
+\def\psclipbox@[#1]{\pst@makebox\psclipbox@@{#1}}
% 20.
\def\mixed@coor#1#2{%
diff --git a/graphics/pstricks/base/generic/pstricks.tex b/graphics/pstricks/base/generic/pstricks.tex
index 2f87e9895e..66b00657b9 100644
--- a/graphics/pstricks/base/generic/pstricks.tex
+++ b/graphics/pstricks/base/generic/pstricks.tex
@@ -88,8 +88,8 @@
\let\pgfforeach\foreach
%
-\def\fileversion{3.19c}
-\def\filedate{2024/02/02}
+\def\fileversion{3.20}
+\def\filedate{2024/07/09}
\pst@addfams{pstricks}
%
%\define@boolkey[psset]{pstricks}[Pst@]{useURWfonts}[true]{}
@@ -2609,13 +2609,13 @@
\AltClipMode
\fi
-\def\clipbox{\@ifnextchar[{\clipbox@}{\clipbox@[\z@]}}
+\def\psclipbox{\@ifnextchar[{\psclipbox@}{\psclipbox@[\z@]}}
% DG modification begin - Apr. 3, 1997
% From paulus@immd5.informatik.uni-erlangen.de (Dietrich Paulus)
%\def\clipbox@[#1]{\pst@makebox\clipbox@@{#1}}
-\def\clipbox@[#1]{\pst@makebox{\clipbox@@{#1}}}
+\def\psclipbox@[#1]{\pst@makebox{\psclipbox@@{#1}}}
% DG modification end
-\def\clipbox@@#1{%
+\def\psclipbox@@#1{%
\pssetlength\pst@dimg{#1}%
\leavevmode\hbox{%
\begin@psclip%
@@ -4119,10 +4119,19 @@ pop
\def\pst@picture{\@ifnextchar[{\pst@@picture}{\pst@@picture[]}}
\def\pst@@picture[#1]{\@ifnextchar({\pst@@picture@i[#1]}{\pst@@picture@@i[#1]}}%
\def\pst@@picture@@i[#1]{%
- \gdef\pscoor{(10,10)}%
+ \def\pic@coor{(0,0)(0,0)}%
+% \gdef\pscoor{(10,10)}%
\ifPst@calcframe
\typeout{>>>Check for file \jobname-\the\numexpr\ps@imagectr+1.psaux}%
- \IfFileExists{\jobname-\the\numexpr\ps@imagectr+1.psaux}{\input{\jobname-\the\numexpr\ps@imagectr+1.psaux}}{}%
+ \IfFileExists{\jobname-\the\numexpr\ps@imagectr+1.psaux}
+ {\input{\jobname-\the\numexpr\ps@imagectr+1.psaux}%
+ \xdef\pic@coor{(0,0)\pscoor}%
+ \typeout{----->>\pic@coor}%
+ \typeout{----->>\pscoor}%
+ }
+ {%\gdef\pscoor{(10,10)}
+ %\def\pic@coor{(0,0)(0,0)(10,10)}
+ }%
% \typeout{>>>\pscoor}%
\fi
\edef\@temp{[\noexpand#1]\pscoor}%
@@ -4168,7 +4177,7 @@ pop
\ifPst@pgffunctions\pstVerb{ pgffunctions }\fi% hv 2013-04-17
}
-\def\pic@coor{(0,0)(0,0)(10,10)}
+%\def\pic@coor{(0,0)(0,0)(10,10)}
\def\endpspicture{%
\ifPst@calcframe
\ifPSTlualatex
@@ -4236,7 +4245,7 @@ pop
\advance\pst@dimd\pst@dimb
\lower\pst@dimd\box\pst@hbox
\kern\pst@dimc}%
- \if@star\setbox\pst@hbox=\hbox{\clipbox@@\z@}\fi
+ \if@star\setbox\pst@hbox=\hbox{\psclipbox@@\z@}\fi
\leavevmode
\ifPst@draft
\expandafter\ifx\csname @latexerr\endcsname\relax
diff --git a/info/knuth-hint/README.md b/info/knuth-hint/README.md
index ee62dccaa2..1e8091d597 100644
--- a/info/knuth-hint/README.md
+++ b/info/knuth-hint/README.md
@@ -21,4 +21,4 @@ The “License” of the `knuth-hint` package is “Public Domain” and it cove
the contents of this package, _not_ the various (and varying) “free software”
licenses of the presented software codes.
-This is version “2.2” of the `knuth-hint` package — 2024-03-16, Andreas Scherer.
+This is version “2.3” of the `knuth-hint` package — 2024-05-20, Andreas Scherer.
diff --git a/info/knuth-hint/bibtex/bibtex-changes.hnt b/info/knuth-hint/bibtex/bibtex-changes.hnt
index e5c76be4b7..af386a05bd 100644
--- a/info/knuth-hint/bibtex/bibtex-changes.hnt
+++ b/info/knuth-hint/bibtex/bibtex-changes.hnt
Binary files differ
diff --git a/info/knuth-hint/bibtex/bibtex.hnt b/info/knuth-hint/bibtex/bibtex.hnt
index 2e69c2120e..5ab7689272 100644
--- a/info/knuth-hint/bibtex/bibtex.hnt
+++ b/info/knuth-hint/bibtex/bibtex.hnt
Binary files differ
diff --git a/info/knuth-hint/ctie/ctie-changes.hnt b/info/knuth-hint/ctie/ctie-changes.hnt
index 8a06169352..f2d9da7747 100644
--- a/info/knuth-hint/ctie/ctie-changes.hnt
+++ b/info/knuth-hint/ctie/ctie-changes.hnt
Binary files differ
diff --git a/info/knuth-hint/ctie/ctie.hnt b/info/knuth-hint/ctie/ctie.hnt
index dc2e646487..24ba1efaff 100644
--- a/info/knuth-hint/ctie/ctie.hnt
+++ b/info/knuth-hint/ctie/ctie.hnt
Binary files differ
diff --git a/info/knuth-hint/cweb/common-changes.hnt b/info/knuth-hint/cweb/common-changes.hnt
index e12b8a3366..de95e4b943 100644
--- a/info/knuth-hint/cweb/common-changes.hnt
+++ b/info/knuth-hint/cweb/common-changes.hnt
Binary files differ
diff --git a/info/knuth-hint/cweb/common.hnt b/info/knuth-hint/cweb/common.hnt
index 2d516e598c..9a96197992 100644
--- a/info/knuth-hint/cweb/common.hnt
+++ b/info/knuth-hint/cweb/common.hnt
Binary files differ
diff --git a/info/knuth-hint/cweb/ctangle-changes.hnt b/info/knuth-hint/cweb/ctangle-changes.hnt
index 6048e78517..e6287e16af 100644
--- a/info/knuth-hint/cweb/ctangle-changes.hnt
+++ b/info/knuth-hint/cweb/ctangle-changes.hnt
Binary files differ
diff --git a/info/knuth-hint/cweb/ctangle.hnt b/info/knuth-hint/cweb/ctangle.hnt
index 5e824be267..bf9129299a 100644
--- a/info/knuth-hint/cweb/ctangle.hnt
+++ b/info/knuth-hint/cweb/ctangle.hnt
Binary files differ
diff --git a/info/knuth-hint/cweb/ctwill.hnt b/info/knuth-hint/cweb/ctwill.hnt
index 8f413813a2..204772d939 100644
--- a/info/knuth-hint/cweb/ctwill.hnt
+++ b/info/knuth-hint/cweb/ctwill.hnt
Binary files differ
diff --git a/info/knuth-hint/cweb/cweave-changes.hnt b/info/knuth-hint/cweb/cweave-changes.hnt
index d652309301..cbc875f35e 100644
--- a/info/knuth-hint/cweb/cweave-changes.hnt
+++ b/info/knuth-hint/cweb/cweave-changes.hnt
Binary files differ
diff --git a/info/knuth-hint/cweb/cweave.hnt b/info/knuth-hint/cweb/cweave.hnt
index 2461ca986b..0d86f94947 100644
--- a/info/knuth-hint/cweb/cweave.hnt
+++ b/info/knuth-hint/cweb/cweave.hnt
Binary files differ
diff --git a/info/knuth-hint/cweb/cwebman.hnt b/info/knuth-hint/cweb/cwebman.hnt
index 53b2217e48..2ec505001e 100644
--- a/info/knuth-hint/cweb/cwebman.hnt
+++ b/info/knuth-hint/cweb/cwebman.hnt
Binary files differ
diff --git a/info/knuth-hint/cweb/refsort-changes.hnt b/info/knuth-hint/cweb/refsort-changes.hnt
index b8cbae7dca..0f6e69a63a 100644
--- a/info/knuth-hint/cweb/refsort-changes.hnt
+++ b/info/knuth-hint/cweb/refsort-changes.hnt
Binary files differ
diff --git a/info/knuth-hint/cweb/refsort.hnt b/info/knuth-hint/cweb/refsort.hnt
index aaf28e60e4..a1c52bc602 100644
--- a/info/knuth-hint/cweb/refsort.hnt
+++ b/info/knuth-hint/cweb/refsort.hnt
Binary files differ
diff --git a/info/knuth-hint/cweb/twinx-changes.hnt b/info/knuth-hint/cweb/twinx-changes.hnt
index 42a979c0f3..5c749f7622 100644
--- a/info/knuth-hint/cweb/twinx-changes.hnt
+++ b/info/knuth-hint/cweb/twinx-changes.hnt
Binary files differ
diff --git a/info/knuth-hint/cweb/twinx.hnt b/info/knuth-hint/cweb/twinx.hnt
index b1def8c2be..d56b7dc7c9 100644
--- a/info/knuth-hint/cweb/twinx.hnt
+++ b/info/knuth-hint/cweb/twinx.hnt
Binary files differ
diff --git a/info/knuth-hint/errata/errata.eight.hnt b/info/knuth-hint/errata/errata.eight.hnt
index e854b5cac6..25d99a8313 100644
--- a/info/knuth-hint/errata/errata.eight.hnt
+++ b/info/knuth-hint/errata/errata.eight.hnt
Binary files differ
diff --git a/info/knuth-hint/errata/errata.eleven.hnt b/info/knuth-hint/errata/errata.eleven.hnt
index 6bea192135..3dbbcf25e9 100644
--- a/info/knuth-hint/errata/errata.eleven.hnt
+++ b/info/knuth-hint/errata/errata.eleven.hnt
Binary files differ
diff --git a/info/knuth-hint/errata/errata.five.hnt b/info/knuth-hint/errata/errata.five.hnt
index 70bc65040c..36c678088c 100644
--- a/info/knuth-hint/errata/errata.five.hnt
+++ b/info/knuth-hint/errata/errata.five.hnt
Binary files differ
diff --git a/info/knuth-hint/errata/errata.four.hnt b/info/knuth-hint/errata/errata.four.hnt
index 4affc611d3..995f7ee94c 100644
--- a/info/knuth-hint/errata/errata.four.hnt
+++ b/info/knuth-hint/errata/errata.four.hnt
Binary files differ
diff --git a/info/knuth-hint/errata/errata.hnt b/info/knuth-hint/errata/errata.hnt
index 69b0a6190a..49cd9b214c 100644
--- a/info/knuth-hint/errata/errata.hnt
+++ b/info/knuth-hint/errata/errata.hnt
Binary files differ
diff --git a/info/knuth-hint/errata/errata.nine.hnt b/info/knuth-hint/errata/errata.nine.hnt
index 575b99bee2..10923cbe63 100644
--- a/info/knuth-hint/errata/errata.nine.hnt
+++ b/info/knuth-hint/errata/errata.nine.hnt
Binary files differ
diff --git a/info/knuth-hint/errata/errata.one.hnt b/info/knuth-hint/errata/errata.one.hnt
index cb68aa0fd1..ebc91808cc 100644
--- a/info/knuth-hint/errata/errata.one.hnt
+++ b/info/knuth-hint/errata/errata.one.hnt
Binary files differ
diff --git a/info/knuth-hint/errata/errata.seven.hnt b/info/knuth-hint/errata/errata.seven.hnt
index 9fec56f15b..9cc71b8316 100644
--- a/info/knuth-hint/errata/errata.seven.hnt
+++ b/info/knuth-hint/errata/errata.seven.hnt
Binary files differ
diff --git a/info/knuth-hint/errata/errata.six.hnt b/info/knuth-hint/errata/errata.six.hnt
index 2208a5908d..fcbafe804d 100644
--- a/info/knuth-hint/errata/errata.six.hnt
+++ b/info/knuth-hint/errata/errata.six.hnt
Binary files differ
diff --git a/info/knuth-hint/errata/errata.ten.hnt b/info/knuth-hint/errata/errata.ten.hnt
index 66a9491861..9b5a1a2d9f 100644
--- a/info/knuth-hint/errata/errata.ten.hnt
+++ b/info/knuth-hint/errata/errata.ten.hnt
Binary files differ
diff --git a/info/knuth-hint/errata/errata.three.hnt b/info/knuth-hint/errata/errata.three.hnt
index f0d476ae60..8a080af0fe 100644
--- a/info/knuth-hint/errata/errata.three.hnt
+++ b/info/knuth-hint/errata/errata.three.hnt
Binary files differ
diff --git a/info/knuth-hint/errata/errata.twelve.hnt b/info/knuth-hint/errata/errata.twelve.hnt
index 2d23f2e6a6..dcd90d5318 100644
--- a/info/knuth-hint/errata/errata.twelve.hnt
+++ b/info/knuth-hint/errata/errata.twelve.hnt
Binary files differ
diff --git a/info/knuth-hint/errata/errata.two.hnt b/info/knuth-hint/errata/errata.two.hnt
index 423b12ccc2..e250acf6d3 100644
--- a/info/knuth-hint/errata/errata.two.hnt
+++ b/info/knuth-hint/errata/errata.two.hnt
Binary files differ
diff --git a/info/knuth-hint/errata/errorlog.hnt b/info/knuth-hint/errata/errorlog.hnt
index b1a301b57c..448a2d0592 100644
--- a/info/knuth-hint/errata/errorlog.hnt
+++ b/info/knuth-hint/errata/errorlog.hnt
Binary files differ
diff --git a/info/knuth-hint/etc/vftovp-changes.hnt b/info/knuth-hint/etc/vftovp-changes.hnt
index a873a4fd3f..91535effb9 100644
--- a/info/knuth-hint/etc/vftovp-changes.hnt
+++ b/info/knuth-hint/etc/vftovp-changes.hnt
Binary files differ
diff --git a/info/knuth-hint/etc/vftovp.hnt b/info/knuth-hint/etc/vftovp.hnt
index d4143c4281..09354d32f7 100644
--- a/info/knuth-hint/etc/vftovp.hnt
+++ b/info/knuth-hint/etc/vftovp.hnt
Binary files differ
diff --git a/info/knuth-hint/etc/vptovf-changes.hnt b/info/knuth-hint/etc/vptovf-changes.hnt
index fcdf539b8b..96bcc0d073 100644
--- a/info/knuth-hint/etc/vptovf-changes.hnt
+++ b/info/knuth-hint/etc/vptovf-changes.hnt
Binary files differ
diff --git a/info/knuth-hint/etc/vptovf.hnt b/info/knuth-hint/etc/vptovf.hnt
index 5998ed5aef..c3557f3750 100644
--- a/info/knuth-hint/etc/vptovf.hnt
+++ b/info/knuth-hint/etc/vptovf.hnt
Binary files differ
diff --git a/info/knuth-hint/hitex/hitex.hnt b/info/knuth-hint/hitex/hitex.hnt
index 8a5cb8d4cc..05ff4ca503 100644
--- a/info/knuth-hint/hitex/hitex.hnt
+++ b/info/knuth-hint/hitex/hitex.hnt
Binary files differ
diff --git a/info/knuth-hint/index.html b/info/knuth-hint/index.html
index 78b58c2d12..729f2c83c9 100644
--- a/info/knuth-hint/index.html
+++ b/info/knuth-hint/index.html
@@ -301,6 +301,9 @@ href="tie/tie.hnt"><code>TIE</code></a>+<a
href="tie/tie-changes.hnt"><code>chg</code></a> <span>]</span></p></li>
<li><p><code>hitex/</code> <span>[</span> <a
href="hitex/hitex.hnt"><code>HiTeX</code></a> <span>]</span></p></li>
+<li><p><code>mp/</code> <span>[</span> <a
+href="mp/mp.hnt"><code>MP</code></a> <a
+href="mp/mpost.hnt"><code>MPOST</code></a> <span>]</span></p></li>
</ul>
<h2 id="errata-for-computers-typesetting-by-donald-e.-knuth">Errata for
“Computers &amp; Typesetting” by Donald E. Knuth</h2>
@@ -337,6 +340,6 @@ early 2014</a></p></li>
</ul></li>
</ul>
<h2 id="happy-cweb-programming">Happy C/WEB Programming!</h2>
-<p>2024-03-16 Andreas Scherer</p>
+<p>2024-07-09 Andreas Scherer</p>
</body>
</html>
diff --git a/info/knuth-hint/index.pdf b/info/knuth-hint/index.pdf
index 63f7fe051d..69a8c3e14d 100644
--- a/info/knuth-hint/index.pdf
+++ b/info/knuth-hint/index.pdf
Binary files differ
diff --git a/info/knuth-hint/mf/mf-changes.hnt b/info/knuth-hint/mf/mf-changes.hnt
index 4417e9901c..e6c956616d 100644
--- a/info/knuth-hint/mf/mf-changes.hnt
+++ b/info/knuth-hint/mf/mf-changes.hnt
Binary files differ
diff --git a/info/knuth-hint/mf/mf.hnt b/info/knuth-hint/mf/mf.hnt
index 1afd231b71..c96e0613ff 100644
--- a/info/knuth-hint/mf/mf.hnt
+++ b/info/knuth-hint/mf/mf.hnt
Binary files differ
diff --git a/info/knuth-hint/mf/trapman.hnt b/info/knuth-hint/mf/trapman.hnt
index ce8cf0e61e..3382522847 100644
--- a/info/knuth-hint/mf/trapman.hnt
+++ b/info/knuth-hint/mf/trapman.hnt
Binary files differ
diff --git a/info/knuth-hint/mfware/gftodvi-changes.hnt b/info/knuth-hint/mfware/gftodvi-changes.hnt
index 9acebf05e5..458affe998 100644
--- a/info/knuth-hint/mfware/gftodvi-changes.hnt
+++ b/info/knuth-hint/mfware/gftodvi-changes.hnt
Binary files differ
diff --git a/info/knuth-hint/mfware/gftodvi.hnt b/info/knuth-hint/mfware/gftodvi.hnt
index d7cf17f9d5..dcaba4f516 100644
--- a/info/knuth-hint/mfware/gftodvi.hnt
+++ b/info/knuth-hint/mfware/gftodvi.hnt
Binary files differ
diff --git a/info/knuth-hint/mfware/gftopk-changes.hnt b/info/knuth-hint/mfware/gftopk-changes.hnt
index ea1defaf64..ffb6384832 100644
--- a/info/knuth-hint/mfware/gftopk-changes.hnt
+++ b/info/knuth-hint/mfware/gftopk-changes.hnt
Binary files differ
diff --git a/info/knuth-hint/mfware/gftopk.hnt b/info/knuth-hint/mfware/gftopk.hnt
index b6f60cbaa1..1879e40b85 100644
--- a/info/knuth-hint/mfware/gftopk.hnt
+++ b/info/knuth-hint/mfware/gftopk.hnt
Binary files differ
diff --git a/info/knuth-hint/mfware/gftype-changes.hnt b/info/knuth-hint/mfware/gftype-changes.hnt
index 437ba9fe60..324740fd5d 100644
--- a/info/knuth-hint/mfware/gftype-changes.hnt
+++ b/info/knuth-hint/mfware/gftype-changes.hnt
Binary files differ
diff --git a/info/knuth-hint/mfware/gftype.hnt b/info/knuth-hint/mfware/gftype.hnt
index 1c2df72eec..5e3e38dd72 100644
--- a/info/knuth-hint/mfware/gftype.hnt
+++ b/info/knuth-hint/mfware/gftype.hnt
Binary files differ
diff --git a/info/knuth-hint/mfware/mft-changes.hnt b/info/knuth-hint/mfware/mft-changes.hnt
index 6b76611eca..7babd18f2a 100644
--- a/info/knuth-hint/mfware/mft-changes.hnt
+++ b/info/knuth-hint/mfware/mft-changes.hnt
Binary files differ
diff --git a/info/knuth-hint/mfware/mft.hnt b/info/knuth-hint/mfware/mft.hnt
index fb513a2a13..b70f1314ab 100644
--- a/info/knuth-hint/mfware/mft.hnt
+++ b/info/knuth-hint/mfware/mft.hnt
Binary files differ
diff --git a/info/knuth-hint/mp/mp.hnt b/info/knuth-hint/mp/mp.hnt
new file mode 100644
index 0000000000..052014216f
--- /dev/null
+++ b/info/knuth-hint/mp/mp.hnt
Binary files differ
diff --git a/info/knuth-hint/mp/mpost.hnt b/info/knuth-hint/mp/mpost.hnt
new file mode 100644
index 0000000000..b9e969072d
--- /dev/null
+++ b/info/knuth-hint/mp/mpost.hnt
Binary files differ
diff --git a/info/knuth-hint/other/dvicopy-changes.hnt b/info/knuth-hint/other/dvicopy-changes.hnt
index 057ed90238..94a39fd26f 100644
--- a/info/knuth-hint/other/dvicopy-changes.hnt
+++ b/info/knuth-hint/other/dvicopy-changes.hnt
Binary files differ
diff --git a/info/knuth-hint/other/dvicopy.hnt b/info/knuth-hint/other/dvicopy.hnt
index d200c6c073..ca6b059492 100644
--- a/info/knuth-hint/other/dvicopy.hnt
+++ b/info/knuth-hint/other/dvicopy.hnt
Binary files differ
diff --git a/info/knuth-hint/other/patgen-changes.hnt b/info/knuth-hint/other/patgen-changes.hnt
index 523add9b50..77950a826b 100644
--- a/info/knuth-hint/other/patgen-changes.hnt
+++ b/info/knuth-hint/other/patgen-changes.hnt
Binary files differ
diff --git a/info/knuth-hint/other/patgen.hnt b/info/knuth-hint/other/patgen.hnt
index a451e836d2..f3ca7c8ab8 100644
--- a/info/knuth-hint/other/patgen.hnt
+++ b/info/knuth-hint/other/patgen.hnt
Binary files differ
diff --git a/info/knuth-hint/other/pktogf-changes.hnt b/info/knuth-hint/other/pktogf-changes.hnt
index 95cdb945b3..237e6a210e 100644
--- a/info/knuth-hint/other/pktogf-changes.hnt
+++ b/info/knuth-hint/other/pktogf-changes.hnt
Binary files differ
diff --git a/info/knuth-hint/other/pktogf.hnt b/info/knuth-hint/other/pktogf.hnt
index c4d4ba7890..39f8c4601c 100644
--- a/info/knuth-hint/other/pktogf.hnt
+++ b/info/knuth-hint/other/pktogf.hnt
Binary files differ
diff --git a/info/knuth-hint/other/pktype-changes.hnt b/info/knuth-hint/other/pktype-changes.hnt
index 382d09362d..f086f5a9fc 100644
--- a/info/knuth-hint/other/pktype-changes.hnt
+++ b/info/knuth-hint/other/pktype-changes.hnt
Binary files differ
diff --git a/info/knuth-hint/other/pktype.hnt b/info/knuth-hint/other/pktype.hnt
index b1430e1d38..e407be0090 100644
--- a/info/knuth-hint/other/pktype.hnt
+++ b/info/knuth-hint/other/pktype.hnt
Binary files differ
diff --git a/info/knuth-hint/pdftex/pdftex-changes.hnt b/info/knuth-hint/pdftex/pdftex-changes.hnt
index 3b43c58d95..1440f73a23 100644
--- a/info/knuth-hint/pdftex/pdftex-changes.hnt
+++ b/info/knuth-hint/pdftex/pdftex-changes.hnt
Binary files differ
diff --git a/info/knuth-hint/pdftex/pdftex.hnt b/info/knuth-hint/pdftex/pdftex.hnt
index e29767f7be..666c4d4a28 100644
--- a/info/knuth-hint/pdftex/pdftex.hnt
+++ b/info/knuth-hint/pdftex/pdftex.hnt
Binary files differ
diff --git a/info/knuth-hint/tex/glue.hnt b/info/knuth-hint/tex/glue.hnt
index 79b62fc2b7..7b1a87f185 100644
--- a/info/knuth-hint/tex/glue.hnt
+++ b/info/knuth-hint/tex/glue.hnt
Binary files differ
diff --git a/info/knuth-hint/tex/tex-changes.hnt b/info/knuth-hint/tex/tex-changes.hnt
index 14c5b76456..4192d154c7 100644
--- a/info/knuth-hint/tex/tex-changes.hnt
+++ b/info/knuth-hint/tex/tex-changes.hnt
Binary files differ
diff --git a/info/knuth-hint/tex/tex.hnt b/info/knuth-hint/tex/tex.hnt
index f95932650d..b3f89d8de4 100644
--- a/info/knuth-hint/tex/tex.hnt
+++ b/info/knuth-hint/tex/tex.hnt
Binary files differ
diff --git a/info/knuth-hint/tex/tripman.hnt b/info/knuth-hint/tex/tripman.hnt
index 45a15b2435..c8bf5c45b2 100644
--- a/info/knuth-hint/tex/tripman.hnt
+++ b/info/knuth-hint/tex/tripman.hnt
Binary files differ
diff --git a/info/knuth-hint/texware/dvitype-changes.hnt b/info/knuth-hint/texware/dvitype-changes.hnt
index 7ca0d271c7..f7e1e4d709 100644
--- a/info/knuth-hint/texware/dvitype-changes.hnt
+++ b/info/knuth-hint/texware/dvitype-changes.hnt
Binary files differ
diff --git a/info/knuth-hint/texware/dvitype.hnt b/info/knuth-hint/texware/dvitype.hnt
index 9d0a2a1345..e8c992161a 100644
--- a/info/knuth-hint/texware/dvitype.hnt
+++ b/info/knuth-hint/texware/dvitype.hnt
Binary files differ
diff --git a/info/knuth-hint/texware/pltotf-changes.hnt b/info/knuth-hint/texware/pltotf-changes.hnt
index f8e3a2194f..4124eb55b7 100644
--- a/info/knuth-hint/texware/pltotf-changes.hnt
+++ b/info/knuth-hint/texware/pltotf-changes.hnt
Binary files differ
diff --git a/info/knuth-hint/texware/pltotf.hnt b/info/knuth-hint/texware/pltotf.hnt
index 8599fd7c23..ae31e25182 100644
--- a/info/knuth-hint/texware/pltotf.hnt
+++ b/info/knuth-hint/texware/pltotf.hnt
Binary files differ
diff --git a/info/knuth-hint/texware/pooltype-changes.hnt b/info/knuth-hint/texware/pooltype-changes.hnt
index 1a71d83523..f9eb390caf 100644
--- a/info/knuth-hint/texware/pooltype-changes.hnt
+++ b/info/knuth-hint/texware/pooltype-changes.hnt
Binary files differ
diff --git a/info/knuth-hint/texware/pooltype.hnt b/info/knuth-hint/texware/pooltype.hnt
index f4f59ab19f..88faa6ec97 100644
--- a/info/knuth-hint/texware/pooltype.hnt
+++ b/info/knuth-hint/texware/pooltype.hnt
Binary files differ
diff --git a/info/knuth-hint/texware/tftopl-changes.hnt b/info/knuth-hint/texware/tftopl-changes.hnt
index 6007c4f759..3c63decdd8 100644
--- a/info/knuth-hint/texware/tftopl-changes.hnt
+++ b/info/knuth-hint/texware/tftopl-changes.hnt
Binary files differ
diff --git a/info/knuth-hint/texware/tftopl.hnt b/info/knuth-hint/texware/tftopl.hnt
index 24c22cd311..e44c9e2dc9 100644
--- a/info/knuth-hint/texware/tftopl.hnt
+++ b/info/knuth-hint/texware/tftopl.hnt
Binary files differ
diff --git a/info/knuth-hint/tie/tie-changes.hnt b/info/knuth-hint/tie/tie-changes.hnt
index 2c5e9d43c8..04b16f22f8 100644
--- a/info/knuth-hint/tie/tie-changes.hnt
+++ b/info/knuth-hint/tie/tie-changes.hnt
Binary files differ
diff --git a/info/knuth-hint/tie/tie.hnt b/info/knuth-hint/tie/tie.hnt
index 3bdfa2d76a..ebfc9397a0 100644
--- a/info/knuth-hint/tie/tie.hnt
+++ b/info/knuth-hint/tie/tie.hnt
Binary files differ
diff --git a/info/knuth-hint/web/tangle-changes.hnt b/info/knuth-hint/web/tangle-changes.hnt
index 26ff176658..505d064363 100644
--- a/info/knuth-hint/web/tangle-changes.hnt
+++ b/info/knuth-hint/web/tangle-changes.hnt
Binary files differ
diff --git a/info/knuth-hint/web/tangle.hnt b/info/knuth-hint/web/tangle.hnt
index dcbfa4d184..e75bbac292 100644
--- a/info/knuth-hint/web/tangle.hnt
+++ b/info/knuth-hint/web/tangle.hnt
Binary files differ
diff --git a/info/knuth-hint/web/twill.hnt b/info/knuth-hint/web/twill.hnt
index b95532ae38..a7d0373095 100644
--- a/info/knuth-hint/web/twill.hnt
+++ b/info/knuth-hint/web/twill.hnt
Binary files differ
diff --git a/info/knuth-hint/web/weave-changes.hnt b/info/knuth-hint/web/weave-changes.hnt
index bd8987be5a..633989f236 100644
--- a/info/knuth-hint/web/weave-changes.hnt
+++ b/info/knuth-hint/web/weave-changes.hnt
Binary files differ
diff --git a/info/knuth-hint/web/weave.hnt b/info/knuth-hint/web/weave.hnt
index 60273e2dec..7549cf9f8f 100644
--- a/info/knuth-hint/web/weave.hnt
+++ b/info/knuth-hint/web/weave.hnt
Binary files differ
diff --git a/info/knuth-hint/web/webman.hnt b/info/knuth-hint/web/webman.hnt
index 02b010539a..eec4f9a535 100644
--- a/info/knuth-hint/web/webman.hnt
+++ b/info/knuth-hint/web/webman.hnt
Binary files differ
diff --git a/info/knuth-hint/xetex/xetex-changes.pdf b/info/knuth-hint/xetex/xetex-changes.pdf
index addc6ca074..b9cbe8f8c7 100644
--- a/info/knuth-hint/xetex/xetex-changes.pdf
+++ b/info/knuth-hint/xetex/xetex-changes.pdf
Binary files differ
diff --git a/info/knuth-hint/xetex/xetex.pdf b/info/knuth-hint/xetex/xetex.pdf
index 5c2a1baa05..5c47d2464c 100644
--- a/info/knuth-hint/xetex/xetex.pdf
+++ b/info/knuth-hint/xetex/xetex.pdf
Binary files differ
diff --git a/info/knuth-pdf/README.md b/info/knuth-pdf/README.md
index 05c4af5d83..f2554f6fb9 100644
--- a/info/knuth-pdf/README.md
+++ b/info/knuth-pdf/README.md
@@ -1,26 +1,41 @@
-# knuth-pdf – PDF collection of typeset C/WEB sources in TeX Live
+# pwebmac – Consolidated WEB macros for DVI, PDF, and HINT output
-Here you find a large collection of PDF documents for many C/WEB programs in
-TeX\ Live, both in their original form as written by their respective authors,
-and in the changed form as they are actually used in the TeX Live system. Care
-has been taken to keep the section numbering intact, so that you can study the
-sources and their changes in parallel. Also included is the collection of
-‘errata’ for Donald Knuth's “Computers & Typesetting” series.
+The original [WEB](https://ctan.org/pkg/web) system by Donald Knuth has the
+macros `webmac.tex` that produce DVI output only; for historic reasons, they
+will never be modified (apart from catastrophic errors).
+Hàn Thế Thành has extended these macros in his (outdated?) `pdfwebmac.tex` for
+PDF output (only) with [pdfTeX](https://ctan.org/pkg/pdftex).
+Jonathan Kew's [XeTeX](https://ctan.org/pkg/xetex) has similar macros
+`xewebmac.tex` by Khaled Hosny that include and _modify_ `webmac.tex` for PDF
+output; all these macros can only be used with a specific “TeX engine” each.
-Although not all the texts here are written or maintained by Donald Knuth, it
-is more convenient for everything to be collected in one place for reading and
-searching. They all stem from the system that Knuth created. The central
-entry point is the ‘index’ file, with links to the individual documents, either
-in HTML or in PDF format.
+The present `pwebmac` package integrates these three WEB macro files similar
+to `cwebmac.tex` in Silvio Levy's and Don Knuth's
+[CWEB](https://ctan.org/pkg/cweb) system, so `pwebmac.tex` can be used with
+“plain TeX,” “pdfTeX,” “LuaTeX,” and “XeTeX” alike. And it adds full support
+for Martin Ruckert's “[HiTeX](https://ctan.org/pkg/hitex)” engine and its
+[`HINT`](https://hint.userweb.mwn.de/hint/format.html) output format.
-If you believe to have found anything that remains technically, historically,
-typographically, or politically incorrect in any of these files, please feel
-free to [report bugs in \TeX\ and friends](https://tug.org/texmfbug/).
+Its initial application is the production of PDF and HINT files for all major
+WEB programs for “TeX and friends” as distributed in
+[TeX Live](https://www.tug.org/texlive). For this purpose, the shell script
+`makeall` was whipped together; it provides various command-line options and
+works around several “quirks” in the WEB sources. The resulting collections
+of PDF and HINT documents can be browsed in the
+[`knuth-pdf`](https://ctan.org/pkg/knuth-pdf) and
+[`knuth-hint`](https://ctan.org/pkg/knuth-hint) packages.
-The “License” of the `knuth-pdf` package is “Public Domain” and it covers only
-the contents of this package, _not_ the various (and varying) “free software”
-licenses of the presented software codes.
+WEB programmers who want to use `pwebmac.tex` instead of the default
+`webmac.tex` in their programs have to change the first line in the TeX file
+created by `WEAVE` (try `weave -p`). From there, all depends on the “TeX
+engine” you use: “plain TeX” by default creates DVI output, “plain TeX” with
+the invocation `tex "\let\pdf+\input…"`, as well as `pdftex`, `luatex`, and
+`xetex` create PDF output with clickable links and bookmarks (with `pdftex`
+and `luatex` you are advised to apply the “`--shell-escape`” command-line
+option in order to avoid an internal miscalculation in the resulting PDF
+file), and `hitex` creates HINT output that can be viewed with the
+[`hintview`](https://hint.userweb.mwn.de/hint/hintview.html) program.
-In part `knuth-pdf` is an update and replacement for the `latex-tds` package.
+The `pwebmac` package is free software and may be used without constraints.
-This is version “2.2” of the `knuth-pdf` package — 2024-03-16, Andreas Scherer.
+This is version **4.12** of the `pwebmac` package — 2024-05-24, Andreas Scherer.
diff --git a/info/knuth-pdf/bibtex/bibtex-changes.pdf b/info/knuth-pdf/bibtex/bibtex-changes.pdf
index eb132c7969..51afb72828 100644
--- a/info/knuth-pdf/bibtex/bibtex-changes.pdf
+++ b/info/knuth-pdf/bibtex/bibtex-changes.pdf
Binary files differ
diff --git a/info/knuth-pdf/bibtex/bibtex.pdf b/info/knuth-pdf/bibtex/bibtex.pdf
index 8f7b06ef65..e925af9e09 100644
--- a/info/knuth-pdf/bibtex/bibtex.pdf
+++ b/info/knuth-pdf/bibtex/bibtex.pdf
Binary files differ
diff --git a/info/knuth-pdf/ctie/ctie-changes.pdf b/info/knuth-pdf/ctie/ctie-changes.pdf
index cd3043bcf0..b5d24bfff0 100644
--- a/info/knuth-pdf/ctie/ctie-changes.pdf
+++ b/info/knuth-pdf/ctie/ctie-changes.pdf
Binary files differ
diff --git a/info/knuth-pdf/ctie/ctie.pdf b/info/knuth-pdf/ctie/ctie.pdf
index 74d9de8921..c00112ba6a 100644
--- a/info/knuth-pdf/ctie/ctie.pdf
+++ b/info/knuth-pdf/ctie/ctie.pdf
Binary files differ
diff --git a/info/knuth-pdf/cweb/common-changes.pdf b/info/knuth-pdf/cweb/common-changes.pdf
index 4c8bab8fbe..8294d6721a 100644
--- a/info/knuth-pdf/cweb/common-changes.pdf
+++ b/info/knuth-pdf/cweb/common-changes.pdf
Binary files differ
diff --git a/info/knuth-pdf/cweb/common.pdf b/info/knuth-pdf/cweb/common.pdf
index 96d5beff59..fe92cb1537 100644
--- a/info/knuth-pdf/cweb/common.pdf
+++ b/info/knuth-pdf/cweb/common.pdf
Binary files differ
diff --git a/info/knuth-pdf/cweb/ctangle-changes.pdf b/info/knuth-pdf/cweb/ctangle-changes.pdf
index 4fe552304b..3fa90674ff 100644
--- a/info/knuth-pdf/cweb/ctangle-changes.pdf
+++ b/info/knuth-pdf/cweb/ctangle-changes.pdf
Binary files differ
diff --git a/info/knuth-pdf/cweb/ctangle.pdf b/info/knuth-pdf/cweb/ctangle.pdf
index 5586b05baf..2321c56c31 100644
--- a/info/knuth-pdf/cweb/ctangle.pdf
+++ b/info/knuth-pdf/cweb/ctangle.pdf
Binary files differ
diff --git a/info/knuth-pdf/cweb/ctwill.pdf b/info/knuth-pdf/cweb/ctwill.pdf
index 34333c5509..b4ec76b58b 100644
--- a/info/knuth-pdf/cweb/ctwill.pdf
+++ b/info/knuth-pdf/cweb/ctwill.pdf
Binary files differ
diff --git a/info/knuth-pdf/cweb/cweave-changes.pdf b/info/knuth-pdf/cweb/cweave-changes.pdf
index 1e5780a624..0f78fcf762 100644
--- a/info/knuth-pdf/cweb/cweave-changes.pdf
+++ b/info/knuth-pdf/cweb/cweave-changes.pdf
Binary files differ
diff --git a/info/knuth-pdf/cweb/cweave.pdf b/info/knuth-pdf/cweb/cweave.pdf
index 3fecb996d3..228381d60d 100644
--- a/info/knuth-pdf/cweb/cweave.pdf
+++ b/info/knuth-pdf/cweb/cweave.pdf
Binary files differ
diff --git a/info/knuth-pdf/cweb/cwebman.pdf b/info/knuth-pdf/cweb/cwebman.pdf
index d4b27fda3c..b6f051dfed 100644
--- a/info/knuth-pdf/cweb/cwebman.pdf
+++ b/info/knuth-pdf/cweb/cwebman.pdf
Binary files differ
diff --git a/info/knuth-pdf/cweb/refsort-changes.pdf b/info/knuth-pdf/cweb/refsort-changes.pdf
index 5d3578c333..a81f0164ed 100644
--- a/info/knuth-pdf/cweb/refsort-changes.pdf
+++ b/info/knuth-pdf/cweb/refsort-changes.pdf
Binary files differ
diff --git a/info/knuth-pdf/cweb/refsort.pdf b/info/knuth-pdf/cweb/refsort.pdf
index 06282bcbc0..1aed4d9b98 100644
--- a/info/knuth-pdf/cweb/refsort.pdf
+++ b/info/knuth-pdf/cweb/refsort.pdf
Binary files differ
diff --git a/info/knuth-pdf/cweb/twinx-changes.pdf b/info/knuth-pdf/cweb/twinx-changes.pdf
index 919204b148..42fe0976eb 100644
--- a/info/knuth-pdf/cweb/twinx-changes.pdf
+++ b/info/knuth-pdf/cweb/twinx-changes.pdf
Binary files differ
diff --git a/info/knuth-pdf/cweb/twinx.pdf b/info/knuth-pdf/cweb/twinx.pdf
index 7f6fb035b7..bff5092b2b 100644
--- a/info/knuth-pdf/cweb/twinx.pdf
+++ b/info/knuth-pdf/cweb/twinx.pdf
Binary files differ
diff --git a/info/knuth-pdf/errata/errata.eight.pdf b/info/knuth-pdf/errata/errata.eight.pdf
index daa449f436..91e9da3570 100644
--- a/info/knuth-pdf/errata/errata.eight.pdf
+++ b/info/knuth-pdf/errata/errata.eight.pdf
Binary files differ
diff --git a/info/knuth-pdf/errata/errata.eleven.pdf b/info/knuth-pdf/errata/errata.eleven.pdf
index 8706ec864c..844cead11f 100644
--- a/info/knuth-pdf/errata/errata.eleven.pdf
+++ b/info/knuth-pdf/errata/errata.eleven.pdf
Binary files differ
diff --git a/info/knuth-pdf/errata/errata.five.pdf b/info/knuth-pdf/errata/errata.five.pdf
index 1a879bd82a..d8235bb8b2 100644
--- a/info/knuth-pdf/errata/errata.five.pdf
+++ b/info/knuth-pdf/errata/errata.five.pdf
Binary files differ
diff --git a/info/knuth-pdf/errata/errata.four.pdf b/info/knuth-pdf/errata/errata.four.pdf
index bf53a97e6a..5d4601997b 100644
--- a/info/knuth-pdf/errata/errata.four.pdf
+++ b/info/knuth-pdf/errata/errata.four.pdf
Binary files differ
diff --git a/info/knuth-pdf/errata/errata.nine.pdf b/info/knuth-pdf/errata/errata.nine.pdf
index 107192205a..56ee96c487 100644
--- a/info/knuth-pdf/errata/errata.nine.pdf
+++ b/info/knuth-pdf/errata/errata.nine.pdf
Binary files differ
diff --git a/info/knuth-pdf/errata/errata.one.pdf b/info/knuth-pdf/errata/errata.one.pdf
index 8567ea2dea..cced6e6261 100644
--- a/info/knuth-pdf/errata/errata.one.pdf
+++ b/info/knuth-pdf/errata/errata.one.pdf
Binary files differ
diff --git a/info/knuth-pdf/errata/errata.pdf b/info/knuth-pdf/errata/errata.pdf
index fad47d4c42..3b55012174 100644
--- a/info/knuth-pdf/errata/errata.pdf
+++ b/info/knuth-pdf/errata/errata.pdf
Binary files differ
diff --git a/info/knuth-pdf/errata/errata.seven.pdf b/info/knuth-pdf/errata/errata.seven.pdf
index 1c24b632d3..7c579e8629 100644
--- a/info/knuth-pdf/errata/errata.seven.pdf
+++ b/info/knuth-pdf/errata/errata.seven.pdf
Binary files differ
diff --git a/info/knuth-pdf/errata/errata.six.pdf b/info/knuth-pdf/errata/errata.six.pdf
index 0cbfd71d50..85c84182b3 100644
--- a/info/knuth-pdf/errata/errata.six.pdf
+++ b/info/knuth-pdf/errata/errata.six.pdf
Binary files differ
diff --git a/info/knuth-pdf/errata/errata.ten.pdf b/info/knuth-pdf/errata/errata.ten.pdf
index e992c1533e..2e787bc2e1 100644
--- a/info/knuth-pdf/errata/errata.ten.pdf
+++ b/info/knuth-pdf/errata/errata.ten.pdf
Binary files differ
diff --git a/info/knuth-pdf/errata/errata.three.pdf b/info/knuth-pdf/errata/errata.three.pdf
index 93f2d1db94..2b220d18bf 100644
--- a/info/knuth-pdf/errata/errata.three.pdf
+++ b/info/knuth-pdf/errata/errata.three.pdf
Binary files differ
diff --git a/info/knuth-pdf/errata/errata.twelve.pdf b/info/knuth-pdf/errata/errata.twelve.pdf
index 3629094049..4cf60accb7 100644
--- a/info/knuth-pdf/errata/errata.twelve.pdf
+++ b/info/knuth-pdf/errata/errata.twelve.pdf
Binary files differ
diff --git a/info/knuth-pdf/errata/errata.two.pdf b/info/knuth-pdf/errata/errata.two.pdf
index 2fb55e82f9..780eef7564 100644
--- a/info/knuth-pdf/errata/errata.two.pdf
+++ b/info/knuth-pdf/errata/errata.two.pdf
Binary files differ
diff --git a/info/knuth-pdf/errata/errorlog.pdf b/info/knuth-pdf/errata/errorlog.pdf
index 3d229cb1b8..7e67495e26 100644
--- a/info/knuth-pdf/errata/errorlog.pdf
+++ b/info/knuth-pdf/errata/errorlog.pdf
Binary files differ
diff --git a/info/knuth-pdf/etc/vftovp-changes.pdf b/info/knuth-pdf/etc/vftovp-changes.pdf
index 9bcefb9f5d..62e8779bb5 100644
--- a/info/knuth-pdf/etc/vftovp-changes.pdf
+++ b/info/knuth-pdf/etc/vftovp-changes.pdf
Binary files differ
diff --git a/info/knuth-pdf/etc/vftovp.pdf b/info/knuth-pdf/etc/vftovp.pdf
index 98b32e1821..7f42019be4 100644
--- a/info/knuth-pdf/etc/vftovp.pdf
+++ b/info/knuth-pdf/etc/vftovp.pdf
Binary files differ
diff --git a/info/knuth-pdf/etc/vptovf-changes.pdf b/info/knuth-pdf/etc/vptovf-changes.pdf
index 82a6ac09cb..3a3d94965c 100644
--- a/info/knuth-pdf/etc/vptovf-changes.pdf
+++ b/info/knuth-pdf/etc/vptovf-changes.pdf
Binary files differ
diff --git a/info/knuth-pdf/etc/vptovf.pdf b/info/knuth-pdf/etc/vptovf.pdf
index 81941dc1f6..544bf76c1e 100644
--- a/info/knuth-pdf/etc/vptovf.pdf
+++ b/info/knuth-pdf/etc/vptovf.pdf
Binary files differ
diff --git a/info/knuth-pdf/hitex/hitex.pdf b/info/knuth-pdf/hitex/hitex.pdf
index b3abb29f28..7b82c521de 100644
--- a/info/knuth-pdf/hitex/hitex.pdf
+++ b/info/knuth-pdf/hitex/hitex.pdf
Binary files differ
diff --git a/info/knuth-pdf/index.html b/info/knuth-pdf/index.html
index 6670304e64..2dc82d621b 100644
--- a/info/knuth-pdf/index.html
+++ b/info/knuth-pdf/index.html
@@ -295,6 +295,9 @@ href="tie/tie.pdf"><code>TIE</code></a>+<a
href="tie/tie-changes.pdf"><code>chg</code></a> <span>]</span></p></li>
<li><p><code>hitex/</code> <span>[</span> <a
href="hitex/hitex.pdf"><code>HiTeX</code></a> <span>]</span></p></li>
+<li><p><code>mp/</code> <span>[</span> <a
+href="mp/mp.pdf"><code>MP</code></a> <a
+href="mp/mpost.pdf"><code>MPOST</code></a> <span>]</span></p></li>
</ul>
<h2 id="errata-for-computers-typesetting-by-donald-e.-knuth">Errata for
“Computers &amp; Typesetting” by Donald E. Knuth</h2>
@@ -331,6 +334,6 @@ early 2014</a></p></li>
</ul></li>
</ul>
<h2 id="happy-cweb-programming">Happy C/WEB Programming!</h2>
-<p>2024-03-16 Andreas Scherer</p>
+<p>2024-07-09 Andreas Scherer</p>
</body>
</html>
diff --git a/info/knuth-pdf/index.pdf b/info/knuth-pdf/index.pdf
index 0debc24009..cdad14512e 100644
--- a/info/knuth-pdf/index.pdf
+++ b/info/knuth-pdf/index.pdf
Binary files differ
diff --git a/info/knuth-pdf/mf/mf-changes.pdf b/info/knuth-pdf/mf/mf-changes.pdf
index 980465451f..a16ecb16e3 100644
--- a/info/knuth-pdf/mf/mf-changes.pdf
+++ b/info/knuth-pdf/mf/mf-changes.pdf
Binary files differ
diff --git a/info/knuth-pdf/mf/mf.pdf b/info/knuth-pdf/mf/mf.pdf
index a4981be56b..1fd069cfcd 100644
--- a/info/knuth-pdf/mf/mf.pdf
+++ b/info/knuth-pdf/mf/mf.pdf
Binary files differ
diff --git a/info/knuth-pdf/mf/trapman.pdf b/info/knuth-pdf/mf/trapman.pdf
index d6fa8cde57..b97414ec23 100644
--- a/info/knuth-pdf/mf/trapman.pdf
+++ b/info/knuth-pdf/mf/trapman.pdf
Binary files differ
diff --git a/info/knuth-pdf/mfware/gftodvi-changes.pdf b/info/knuth-pdf/mfware/gftodvi-changes.pdf
index a42e872a81..8d300e9b3a 100644
--- a/info/knuth-pdf/mfware/gftodvi-changes.pdf
+++ b/info/knuth-pdf/mfware/gftodvi-changes.pdf
Binary files differ
diff --git a/info/knuth-pdf/mfware/gftodvi.pdf b/info/knuth-pdf/mfware/gftodvi.pdf
index 6ec2f1b39e..b3b2dbc463 100644
--- a/info/knuth-pdf/mfware/gftodvi.pdf
+++ b/info/knuth-pdf/mfware/gftodvi.pdf
Binary files differ
diff --git a/info/knuth-pdf/mfware/gftopk-changes.pdf b/info/knuth-pdf/mfware/gftopk-changes.pdf
index d31608e082..cfa2061971 100644
--- a/info/knuth-pdf/mfware/gftopk-changes.pdf
+++ b/info/knuth-pdf/mfware/gftopk-changes.pdf
Binary files differ
diff --git a/info/knuth-pdf/mfware/gftopk.pdf b/info/knuth-pdf/mfware/gftopk.pdf
index 658de054d5..358babf99e 100644
--- a/info/knuth-pdf/mfware/gftopk.pdf
+++ b/info/knuth-pdf/mfware/gftopk.pdf
Binary files differ
diff --git a/info/knuth-pdf/mfware/gftype-changes.pdf b/info/knuth-pdf/mfware/gftype-changes.pdf
index 3044a6dfd6..bd3a31448c 100644
--- a/info/knuth-pdf/mfware/gftype-changes.pdf
+++ b/info/knuth-pdf/mfware/gftype-changes.pdf
Binary files differ
diff --git a/info/knuth-pdf/mfware/gftype.pdf b/info/knuth-pdf/mfware/gftype.pdf
index 946e7d93d3..99c425e27e 100644
--- a/info/knuth-pdf/mfware/gftype.pdf
+++ b/info/knuth-pdf/mfware/gftype.pdf
Binary files differ
diff --git a/info/knuth-pdf/mfware/mft-changes.pdf b/info/knuth-pdf/mfware/mft-changes.pdf
index 2787bde5ed..741f1d3b41 100644
--- a/info/knuth-pdf/mfware/mft-changes.pdf
+++ b/info/knuth-pdf/mfware/mft-changes.pdf
Binary files differ
diff --git a/info/knuth-pdf/mfware/mft.pdf b/info/knuth-pdf/mfware/mft.pdf
index bfb53791ae..456b435219 100644
--- a/info/knuth-pdf/mfware/mft.pdf
+++ b/info/knuth-pdf/mfware/mft.pdf
Binary files differ
diff --git a/info/knuth-pdf/mp/mp.pdf b/info/knuth-pdf/mp/mp.pdf
new file mode 100644
index 0000000000..8db59988ef
--- /dev/null
+++ b/info/knuth-pdf/mp/mp.pdf
Binary files differ
diff --git a/info/knuth-pdf/mp/mpost.pdf b/info/knuth-pdf/mp/mpost.pdf
new file mode 100644
index 0000000000..7dc8cc7838
--- /dev/null
+++ b/info/knuth-pdf/mp/mpost.pdf
Binary files differ
diff --git a/info/knuth-pdf/other/dvicopy-changes.pdf b/info/knuth-pdf/other/dvicopy-changes.pdf
index 175b9d3825..059c71b9f1 100644
--- a/info/knuth-pdf/other/dvicopy-changes.pdf
+++ b/info/knuth-pdf/other/dvicopy-changes.pdf
Binary files differ
diff --git a/info/knuth-pdf/other/dvicopy.pdf b/info/knuth-pdf/other/dvicopy.pdf
index cb23c2abdc..d5e6a7de1a 100644
--- a/info/knuth-pdf/other/dvicopy.pdf
+++ b/info/knuth-pdf/other/dvicopy.pdf
Binary files differ
diff --git a/info/knuth-pdf/other/patgen-changes.pdf b/info/knuth-pdf/other/patgen-changes.pdf
index c0ac24a5bc..9b24696e4e 100644
--- a/info/knuth-pdf/other/patgen-changes.pdf
+++ b/info/knuth-pdf/other/patgen-changes.pdf
Binary files differ
diff --git a/info/knuth-pdf/other/patgen.pdf b/info/knuth-pdf/other/patgen.pdf
index 32cdc74562..b4aa6ebad8 100644
--- a/info/knuth-pdf/other/patgen.pdf
+++ b/info/knuth-pdf/other/patgen.pdf
Binary files differ
diff --git a/info/knuth-pdf/other/pktogf-changes.pdf b/info/knuth-pdf/other/pktogf-changes.pdf
index fdd897165f..0874fc69ea 100644
--- a/info/knuth-pdf/other/pktogf-changes.pdf
+++ b/info/knuth-pdf/other/pktogf-changes.pdf
Binary files differ
diff --git a/info/knuth-pdf/other/pktogf.pdf b/info/knuth-pdf/other/pktogf.pdf
index 7246a18bc2..7898be1405 100644
--- a/info/knuth-pdf/other/pktogf.pdf
+++ b/info/knuth-pdf/other/pktogf.pdf
Binary files differ
diff --git a/info/knuth-pdf/other/pktype-changes.pdf b/info/knuth-pdf/other/pktype-changes.pdf
index b7422ecf9e..86078c7dee 100644
--- a/info/knuth-pdf/other/pktype-changes.pdf
+++ b/info/knuth-pdf/other/pktype-changes.pdf
Binary files differ
diff --git a/info/knuth-pdf/other/pktype.pdf b/info/knuth-pdf/other/pktype.pdf
index fd70bc33c4..9d3e282221 100644
--- a/info/knuth-pdf/other/pktype.pdf
+++ b/info/knuth-pdf/other/pktype.pdf
Binary files differ
diff --git a/info/knuth-pdf/pdftex/pdftex-changes.pdf b/info/knuth-pdf/pdftex/pdftex-changes.pdf
index 941a3ff409..e0d8340ff4 100644
--- a/info/knuth-pdf/pdftex/pdftex-changes.pdf
+++ b/info/knuth-pdf/pdftex/pdftex-changes.pdf
Binary files differ
diff --git a/info/knuth-pdf/pdftex/pdftex.pdf b/info/knuth-pdf/pdftex/pdftex.pdf
index a77fbf388b..42bf275b72 100644
--- a/info/knuth-pdf/pdftex/pdftex.pdf
+++ b/info/knuth-pdf/pdftex/pdftex.pdf
Binary files differ
diff --git a/info/knuth-pdf/tex/glue.pdf b/info/knuth-pdf/tex/glue.pdf
index 742cd78b22..d698e78629 100644
--- a/info/knuth-pdf/tex/glue.pdf
+++ b/info/knuth-pdf/tex/glue.pdf
Binary files differ
diff --git a/info/knuth-pdf/tex/tex-changes.pdf b/info/knuth-pdf/tex/tex-changes.pdf
index 5047b9f720..f4e81bf4d6 100644
--- a/info/knuth-pdf/tex/tex-changes.pdf
+++ b/info/knuth-pdf/tex/tex-changes.pdf
Binary files differ
diff --git a/info/knuth-pdf/tex/tex.pdf b/info/knuth-pdf/tex/tex.pdf
index e82e47aea1..3068cc9edc 100644
--- a/info/knuth-pdf/tex/tex.pdf
+++ b/info/knuth-pdf/tex/tex.pdf
Binary files differ
diff --git a/info/knuth-pdf/tex/tripman.pdf b/info/knuth-pdf/tex/tripman.pdf
index 70bd03683e..ac9f4eaa92 100644
--- a/info/knuth-pdf/tex/tripman.pdf
+++ b/info/knuth-pdf/tex/tripman.pdf
Binary files differ
diff --git a/info/knuth-pdf/texware/dvitype-changes.pdf b/info/knuth-pdf/texware/dvitype-changes.pdf
index 0119a3b71b..fbcedb9bde 100644
--- a/info/knuth-pdf/texware/dvitype-changes.pdf
+++ b/info/knuth-pdf/texware/dvitype-changes.pdf
Binary files differ
diff --git a/info/knuth-pdf/texware/dvitype.pdf b/info/knuth-pdf/texware/dvitype.pdf
index 610eb15cf6..a8a3cfc2d2 100644
--- a/info/knuth-pdf/texware/dvitype.pdf
+++ b/info/knuth-pdf/texware/dvitype.pdf
Binary files differ
diff --git a/info/knuth-pdf/texware/pltotf-changes.pdf b/info/knuth-pdf/texware/pltotf-changes.pdf
index 79b906d3bf..6528a5c5b3 100644
--- a/info/knuth-pdf/texware/pltotf-changes.pdf
+++ b/info/knuth-pdf/texware/pltotf-changes.pdf
Binary files differ
diff --git a/info/knuth-pdf/texware/pltotf.pdf b/info/knuth-pdf/texware/pltotf.pdf
index dfc083ae72..3ca3b977e7 100644
--- a/info/knuth-pdf/texware/pltotf.pdf
+++ b/info/knuth-pdf/texware/pltotf.pdf
Binary files differ
diff --git a/info/knuth-pdf/texware/pooltype-changes.pdf b/info/knuth-pdf/texware/pooltype-changes.pdf
index 1a3c866638..922d39d91a 100644
--- a/info/knuth-pdf/texware/pooltype-changes.pdf
+++ b/info/knuth-pdf/texware/pooltype-changes.pdf
Binary files differ
diff --git a/info/knuth-pdf/texware/pooltype.pdf b/info/knuth-pdf/texware/pooltype.pdf
index 9c4e5df12a..d2d46a3204 100644
--- a/info/knuth-pdf/texware/pooltype.pdf
+++ b/info/knuth-pdf/texware/pooltype.pdf
Binary files differ
diff --git a/info/knuth-pdf/texware/tftopl-changes.pdf b/info/knuth-pdf/texware/tftopl-changes.pdf
index d46b9521dc..9b0c58f22c 100644
--- a/info/knuth-pdf/texware/tftopl-changes.pdf
+++ b/info/knuth-pdf/texware/tftopl-changes.pdf
Binary files differ
diff --git a/info/knuth-pdf/texware/tftopl.pdf b/info/knuth-pdf/texware/tftopl.pdf
index 067b684a1a..980ce9472c 100644
--- a/info/knuth-pdf/texware/tftopl.pdf
+++ b/info/knuth-pdf/texware/tftopl.pdf
Binary files differ
diff --git a/info/knuth-pdf/tie/tie-changes.pdf b/info/knuth-pdf/tie/tie-changes.pdf
index 8e8b95ef63..563d5788f5 100644
--- a/info/knuth-pdf/tie/tie-changes.pdf
+++ b/info/knuth-pdf/tie/tie-changes.pdf
Binary files differ
diff --git a/info/knuth-pdf/tie/tie.pdf b/info/knuth-pdf/tie/tie.pdf
index 641ee72547..db3830b544 100644
--- a/info/knuth-pdf/tie/tie.pdf
+++ b/info/knuth-pdf/tie/tie.pdf
Binary files differ
diff --git a/info/knuth-pdf/web/tangle-changes.pdf b/info/knuth-pdf/web/tangle-changes.pdf
index dac870d44d..6f9ad6d812 100644
--- a/info/knuth-pdf/web/tangle-changes.pdf
+++ b/info/knuth-pdf/web/tangle-changes.pdf
Binary files differ
diff --git a/info/knuth-pdf/web/tangle.pdf b/info/knuth-pdf/web/tangle.pdf
index 27741dac9b..0e6a77f36c 100644
--- a/info/knuth-pdf/web/tangle.pdf
+++ b/info/knuth-pdf/web/tangle.pdf
Binary files differ
diff --git a/info/knuth-pdf/web/twill.pdf b/info/knuth-pdf/web/twill.pdf
index 80d61da453..e360148f2d 100644
--- a/info/knuth-pdf/web/twill.pdf
+++ b/info/knuth-pdf/web/twill.pdf
Binary files differ
diff --git a/info/knuth-pdf/web/weave-changes.pdf b/info/knuth-pdf/web/weave-changes.pdf
index 3d97d108ff..85ee36841f 100644
--- a/info/knuth-pdf/web/weave-changes.pdf
+++ b/info/knuth-pdf/web/weave-changes.pdf
Binary files differ
diff --git a/info/knuth-pdf/web/weave.pdf b/info/knuth-pdf/web/weave.pdf
index 3095ba9b79..ce2315c2ae 100644
--- a/info/knuth-pdf/web/weave.pdf
+++ b/info/knuth-pdf/web/weave.pdf
Binary files differ
diff --git a/info/knuth-pdf/web/webman.pdf b/info/knuth-pdf/web/webman.pdf
index de6d6c1ecb..eda4824bd9 100644
--- a/info/knuth-pdf/web/webman.pdf
+++ b/info/knuth-pdf/web/webman.pdf
Binary files differ
diff --git a/info/knuth-pdf/xetex/xetex-changes.pdf b/info/knuth-pdf/xetex/xetex-changes.pdf
index 02504c7faa..32dd78f050 100644
--- a/info/knuth-pdf/xetex/xetex-changes.pdf
+++ b/info/knuth-pdf/xetex/xetex-changes.pdf
Binary files differ
diff --git a/info/knuth-pdf/xetex/xetex.pdf b/info/knuth-pdf/xetex/xetex.pdf
index f351e2931d..9ad6e9d383 100644
--- a/info/knuth-pdf/xetex/xetex.pdf
+++ b/info/knuth-pdf/xetex/xetex.pdf
Binary files differ
diff --git a/macros/latex/contrib/beamer-contrib/themes/moloch/CHANGELOG.md b/macros/latex/contrib/beamer-contrib/themes/moloch/CHANGELOG.md
index 1d90d7617c..d1e8bc4d60 100644
--- a/macros/latex/contrib/beamer-contrib/themes/moloch/CHANGELOG.md
+++ b/macros/latex/contrib/beamer-contrib/themes/moloch/CHANGELOG.md
@@ -1,5 +1,20 @@
# Changelog
+## [0.4.0](https://github.com/jolars/moloch/compare/v0.3.0...v0.4.0) (2024-07-09)
+
+
+### Features
+
+* add a small amount of vertical space before subtitle ([b224a9b](https://github.com/jolars/moloch/commit/b224a9b5067187e64a7669b61aee029447535729))
+* support memoize package (closes [#16](https://github.com/jolars/moloch/issues/16)) ([1ca26e8](https://github.com/jolars/moloch/commit/1ca26e857a331fcb29296c4987b69aea0db90fae))
+* support title format modifications ([#18](https://github.com/jolars/moloch/issues/18)) ([46a4f49](https://github.com/jolars/moloch/commit/46a4f49e8bb95798c2d6f3b69a1b96128d95cb8b))
+
+
+### Bug Fixes
+
+* add % at the end of some commands ([33b9833](https://github.com/jolars/moloch/commit/33b9833f21d3e0654fe2452d0b8ac8e8eb3a47bb))
+* convert raw command in manual to text ([ac305e9](https://github.com/jolars/moloch/commit/ac305e9b547ce44e0573f333adc4e6684eb88b68))
+
## [0.3.0](https://github.com/jolars/moloch/compare/v0.2.0...v0.3.0) (2024-03-06)
diff --git a/macros/latex/contrib/beamer-contrib/themes/moloch/README.md b/macros/latex/contrib/beamer-contrib/themes/moloch/README.md
index f3b7971303..c8d9b78f15 100644
--- a/macros/latex/contrib/beamer-contrib/themes/moloch/README.md
+++ b/macros/latex/contrib/beamer-contrib/themes/moloch/README.md
@@ -12,19 +12,23 @@ The fork was created for the following reasons:
- To remove some of the more opinionated design choices, such as special handling of the Fira family of fonts.
- To strip away some features that added complexity to the code base without achieving valuable functionality for the majority of users, such as special code block designs and the pgfplots theme.
+[Here's a blog post](https://jolars.co/blog/2024-05-30-moloch/) in which I introduce the theme and write in more detail about the changes with respect to Metropolis.
+
Do not expect this theme to be backwards compatible with the Metropolis theme.
+![Screenshot](https://raw.githubusercontent.com/jolars/moloch/main/assets/screenshot.svg)
+
## Installation
Moloch is on [CTAN](https://ctan.org/pkg/moloch), so you can install it using your favorite LaTeX package manager. For example, with `tlmgr`:
-```sh
+```bash
tlmgr install moloch
```
You can also install the theme from source, in which case you need a working LaTeX installation with `l3build` installed. Then just follow these steps:
-```sh
+```bash
git clone https://github.com/jolars/moloch.git
cd moloch
l3build install
diff --git a/macros/latex/contrib/beamer-contrib/themes/moloch/beamercolorthememoloch.dtx b/macros/latex/contrib/beamer-contrib/themes/moloch/beamercolorthememoloch.dtx
index d6a14105ca..f0f644acbd 100644
--- a/macros/latex/contrib/beamer-contrib/themes/moloch/beamercolorthememoloch.dtx
+++ b/macros/latex/contrib/beamer-contrib/themes/moloch/beamercolorthememoloch.dtx
@@ -14,7 +14,7 @@
% \iffalse
%<*package>
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{beamercolorthememoloch}[2024-03-06 v0.3.0 Moloch color theme] % x-release-please-version
+\ProvidesPackage{beamercolorthememoloch}[2024-07-09 v0.4.0 Moloch color theme] % x-release-please-version
%</package>
% \fi
% \CheckSum{0}
diff --git a/macros/latex/contrib/beamer-contrib/themes/moloch/beamerfontthememoloch.dtx b/macros/latex/contrib/beamer-contrib/themes/moloch/beamerfontthememoloch.dtx
index 4748387c3c..cc3396fe47 100644
--- a/macros/latex/contrib/beamer-contrib/themes/moloch/beamerfontthememoloch.dtx
+++ b/macros/latex/contrib/beamer-contrib/themes/moloch/beamerfontthememoloch.dtx
@@ -14,7 +14,7 @@
% \iffalse
%<*package>
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{beamerfontthememoloch}[2024-03-06 v0.3.0 Moloch font theme] % x-release-please-version
+\ProvidesPackage{beamerfontthememoloch}[2024-07-09 v0.4.0 Moloch font theme] % x-release-please-version
%</package>
% \fi
% \CheckSum{0}
@@ -27,9 +27,12 @@
%
% A |beamer| font theme sets the style of the font used in the document.
%
+%
+%
% \subsubsection{Package dependencies}
%
% \begin{macrocode}
+\RequirePackage{etoolbox}
\RequirePackage{pgfopts}
% \end{macrocode}
%
@@ -51,6 +54,188 @@
\setbeamerfont{standout}{size=\Large, series=\bfseries}
% \end{macrocode}
%
+%
+%
+% \subsubsection{Title format options}
+%
+% \begin{macro}{titleformat title}
+% Controls the format of the title.
+% \begin{macrocode}
+\pgfkeys{
+ /moloch/font/titleformat title/.cd,
+ .is choice,
+ regular/.code={%
+ \let\moloch@titleformat\@empty%
+ \setbeamerfont{title}{shape=\normalfont}%
+ },
+ smallcaps/.code={%
+ \let\moloch@titleformat\@empty%
+ \setbeamerfont{title}{shape=\scshape}%
+ },
+ allsmallcaps/.code={%
+ \let\moloch@titleformat\lowercase%
+ \setbeamerfont{title}{shape=\scshape}%
+ \PackageNote{beamerthememoloch}{%
+ Be aware that titleformat title=allsmallcaps can lead to problems%
+ }
+ },
+ allcaps/.code={%
+ \let\moloch@titleformat\uppercase%
+ \setbeamerfont{title}{shape=\normalfont}
+ \PackageNote{beamerthememoloch}{%
+ Be aware that titleformat title=allcaps can lead to problems%
+ }
+ },
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{titleformat subtitle}
+% Control the format of the subtitle.
+% \begin{macrocode}
+\pgfkeys{
+ /moloch/font/titleformat subtitle/.cd,
+ .is choice,
+ regular/.code={%
+ \let\moloch@subtitleformat\@empty%
+ \setbeamerfont{subtitle}{shape=\normalfont}%
+ },
+ smallcaps/.code={%
+ \let\moloch@subtitleformat\@empty%
+ \setbeamerfont{subtitle}{shape=\scshape}%
+ },
+ allsmallcaps/.code={%
+ \let\moloch@subtitleformat\MakeLowercase%
+ \setbeamerfont{subtitle}{shape=\scshape}%
+ \PackageNote{beamerthememoloch}{%
+ Be aware that titleformat subtitle=allsmallcaps can lead to problems%
+ }
+ },
+ allcaps/.code={%
+ \let\moloch@subtitleformat\MakeUppercase%
+ \setbeamerfont{subtitle}{shape=\normalfont}%
+ \PackageNote{beamerthememoloch}{%
+ Be aware that titleformat subtitle=allcaps can lead to problems%
+ }
+ },
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{titleformat section}
+% Controls the format of the section title.
+% \begin{macrocode}
+\pgfkeys{
+ /moloch/font/titleformat section/.cd,
+ .is choice,
+ regular/.code={%
+ \let\moloch@sectiontitleformat\@empty%
+ \setbeamerfont{section title}{shape=\normalfont}%
+ },
+ smallcaps/.code={%
+ \let\moloch@sectiontitleformat\@empty%
+ \setbeamerfont{section title}{shape=\scshape}%
+ },
+ allsmallcaps/.code={%
+ \let\moloch@sectiontitleformat\MakeLowercase%
+ \setbeamerfont{section title}{shape=\scshape}%
+ \PackageNote{beamerthememoloch}{%
+ Be aware that titleformat section=allsmallcaps can lead to problems%
+ }
+ },
+ allcaps/.code={%
+ \let\moloch@sectiontitleformat\MakeUppercase%
+ \setbeamerfont{section title}{shape=\normalfont}%
+ \PackageNote{beamerthememoloch}{%
+ Be aware that titleformat section=allcaps can lead to problems%
+ }
+ },
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{frametitleformat}
+% Control the format of the frame title.
+% \begin{macrocode}
+\pgfkeys{
+ /moloch/font/titleformat frame/.cd,
+ .is choice,
+ regular/.code={%
+ \let\moloch@frametitleformat\@empty%
+ \setbeamerfont{frametitle}{shape=\normalfont}%
+ },
+ smallcaps/.code={%
+ \let\moloch@frametitleformat\@empty%
+ \setbeamerfont{frametitle}{shape=\scshape}%
+ },
+ allsmallcaps/.code={%
+ \let\moloch@frametitleformat\MakeLowercase%
+ \setbeamerfont{frametitle}{shape=\scshape}%
+ \PackageNote{beamerthememoloch}{%
+ Be aware that titleformat frame=allsmallcaps can lead to problems%
+ }
+ },
+ allcaps/.code={%
+ \let\moloch@frametitleformat\MakeUppercase%
+ \setbeamerfont{frametitle}{shape=\normalfont}
+ \PackageNote{beamerthememoloch}{%
+ Be aware that titleformat frame=allcaps can lead to problems%
+ }
+ },
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{titleformat aliases}
+% Allows |titleformat title| et al. to be used in the |\usetheme|
+% declaration, where \LaTeX{} automatically removes all spaces.
+% \begin{macrocode}
+\pgfkeys{
+ /moloch/font/.cd,
+ titleformattitle/.code=\pgfkeysalso{titleformat title=#1},
+ titleformatsubtitle/.code=\pgfkeysalso{titleformat subtitle=#1},
+ titleformatsection/.code=\pgfkeysalso{titleformat section=#1},
+ titleformatframe/.code=\pgfkeysalso{titleformat frame=#1},
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\moloch@font@setdefaults}
+% Sets default values for font theme options.
+% \begin{macrocode}
+\newcommand{\moloch@font@setdefaults}{
+ \pgfkeys{/moloch/font/.cd,
+ titleformat title=regular,
+ titleformat subtitle=regular,
+ titleformat section=regular,
+ titleformat frame=regular,
+ }
+}
+% \end{macrocode}
+% \end{macro}
+%
+% We first define hooks to change the case format of the titles.
+%
+% \begin{macrocode}
+\def\moloch@titleformat#1{#1}
+\def\moloch@subtitleformat#1{#1}
+\def\moloch@sectiontitleformat#1{#1}
+\def\moloch@frametitleformat#1{#1}
+% \end{macrocode}
+%
+% To make the uppercase and lowercase macros work in the title, subtitle, etc.,
+% we have to patch the appropriate |beamer| commands that set their values.
+% This solution was suggested by Enrico Gregorio in an answer to
+% \href{http://tex.stackexchange.com/questions/112526/}{this StackExchange
+% question}.
+%
+%
+% \subsubsection{Process package options}
+%
+% \begin{macrocode}
+\moloch@font@setdefaults
+\ProcessPgfPackageOptions{/moloch/font}
+% \end{macrocode}
% \iffalse
%</package>
% \fi
diff --git a/macros/latex/contrib/beamer-contrib/themes/moloch/beamerinnerthememoloch.dtx b/macros/latex/contrib/beamer-contrib/themes/moloch/beamerinnerthememoloch.dtx
index 2b626d526d..9815a0995f 100644
--- a/macros/latex/contrib/beamer-contrib/themes/moloch/beamerinnerthememoloch.dtx
+++ b/macros/latex/contrib/beamer-contrib/themes/moloch/beamerinnerthememoloch.dtx
@@ -14,7 +14,7 @@
% \iffalse
%<*package>
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{beamerinnerthememoloch}[2024-03-06 v0.3.0 Moloch inner theme] % x-release-please-version
+\ProvidesPackage{beamerinnerthememoloch}[2024-07-09 v0.4.0 Moloch inner theme] % x-release-please-version
%</package>
% \fi
% \CheckSum{0}
@@ -173,7 +173,7 @@
% \begin{macrocode}
\setbeamertemplate{title}{
\raggedright%
- \inserttitle%
+ \moloch@titleformat{\inserttitle}%
\par%
\vspace*{0.2em}
}
@@ -184,8 +184,9 @@
% Set the subtitle on the title page.
% \begin{macrocode}
\setbeamertemplate{subtitle}{
+ \vspace*{0.1em}
\raggedright%
- \insertsubtitle%
+ \moloch@subtitleformat{\insertsubtitle}%
\par%
\vspace*{0.2em}
}
@@ -201,6 +202,7 @@
\setbeamertemplate{title separator}{
\tikzexternaldisable%
\begin{tikzpicture}
+ \mmzUnmemoizable%
\fill[fg] (0,0) rectangle (\textwidth, \moloch@titleseparator@linewidth);
\end{tikzpicture}%
\tikzexternalenable%
@@ -256,7 +258,7 @@
\begin{center}
\usebeamercolor[fg]{section title}
\usebeamerfont{section title}
- \insertsectionhead\par
+ \moloch@sectiontitleformat{\insertsectionhead}\par
\ifx\insertsubsectionhead\@empty\else
\usebeamercolor[fg]{subsection title}
\usebeamerfont{subsection title}
@@ -270,7 +272,7 @@
\raggedright
\usebeamercolor[fg]{section title}
\usebeamerfont{section title}
- \insertsectionhead\\[-1ex]
+ \moloch@sectiontitleformat{\insertsectionhead}\\[-1ex]
\usebeamertemplate*{progress bar in section page}
\par
\ifx\insertsubsectionhead\@empty\else%
@@ -338,9 +340,10 @@
\setbeamertemplate{progress bar in section page}{
\pgfmathsetlength{\moloch@progressonsectionpage}{
\textwidth * min(1,\insertframenumber/\inserttotalframenumber)
- }
- \tikzexternaldisable
+ }%
+ \tikzexternaldisable%
\begin{tikzpicture}
+ \mmzUnmemoizable%
\fill[bg]
(0,0)
rectangle
@@ -350,7 +353,7 @@
rectangle
(\moloch@progressonsectionpage, \moloch@progressonsectionpage@linewidth);
\end{tikzpicture}
- \tikzexternalenable
+ \tikzexternalenable%
}
% \end{macrocode}
%
diff --git a/macros/latex/contrib/beamer-contrib/themes/moloch/beamerouterthememoloch.dtx b/macros/latex/contrib/beamer-contrib/themes/moloch/beamerouterthememoloch.dtx
index a5d5910831..a0ce0af580 100644
--- a/macros/latex/contrib/beamer-contrib/themes/moloch/beamerouterthememoloch.dtx
+++ b/macros/latex/contrib/beamer-contrib/themes/moloch/beamerouterthememoloch.dtx
@@ -14,7 +14,7 @@
% \iffalse
%<*package>
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{beamerouterthememoloch}[2024-03-06 v0.3.0 Moloch outer theme] % x-release-please-version
+\ProvidesPackage{beamerouterthememoloch}[2024-07-09 v0.4.0 Moloch outer theme] % x-release-please-version
%</package>
% \fi
% \CheckSum{0}
@@ -160,23 +160,42 @@
% Templates for the frame title, which is optionally underlined with a
% progress bar.
% \begin{macrocode}
+\newlength{\moloch@frametitle@padding}
+\setlength{\moloch@frametitle@padding}{2.2ex}
+\newcommand{\moloch@frametitlestrut@start}{%
+ \rule{0pt}{\moloch@frametitle@padding +%
+ \totalheightof{%
+ \ifcsdef{moloch@frametitleformat}{\moloch@frametitleformat X}{X}%
+ }%
+}%
+}
+
+\newcommand{\moloch@frametitlestrut@end}{%
+ \vphantom{\rule[-\moloch@frametitle@padding]{0pt}{\moloch@frametitle@padding}}
+}
\defbeamertemplate{frametitle}{plain}{%
\nointerlineskip%
\begin{beamercolorbox}[%
wd=\paperwidth,%
- sep=1.1ex,%
- leftskip=0.5ex,%
- rightskip=\the\glueexpr 0.5ex plus 1fill\relax,%
+ leftskip=1.6ex,%
+ rightskip=\the\glueexpr 1.6ex plus 1fill\relax,%
]{frametitle}%
\usebeamerfont{frametitle}%
- \vbox{}\vskip-0.4ex%
- \strut\insertframetitle\nolinebreak\strut\par%
+ \moloch@frametitlestrut@start%
+ \moloch@frametitleformat{\insertframetitle}%
{%
\ifx\insertframesubtitle\@empty%
\else%
- {\usebeamerfont{framesubtitle}\vspace{-0.8ex}\usebeamercolor[fg]{framesubtitle}\strut\insertframesubtitle\strut\par}%
+ {%
+ \par%
+ \usebeamerfont{framesubtitle}%
+ \vspace{-0.8ex}%
+ \usebeamercolor[fg]{framesubtitle}%
+ \insertframesubtitle%
+ }%
\fi
}%
+ \moloch@frametitlestrut@end%
\end{beamercolorbox}%
}
\setbeamertemplate{frametitle continuation}{\romannumeral\insertcontinuationcount}
@@ -192,13 +211,14 @@
\newlength{\moloch@progressinheadfoot@linewidth}
\setlength{\moloch@progressinheadfoot@linewidth}{0.4pt}
\setbeamertemplate{progress bar in head/foot}{
- \nointerlineskip
+ \nointerlineskip%
\pgfmathsetlength{\moloch@progressinheadfoot}{%
\paperwidth * min(1,\insertframenumber/\inserttotalframenumber)%
- }
+ }%
\begin{beamercolorbox}[wd=\paperwidth]{progress bar in head/foot}
- \tikzexternaldisable
+ \tikzexternaldisable%
\begin{tikzpicture}
+ \mmzUnmemoizable%
\fill[bg]
(0,0)
rectangle
@@ -208,7 +228,7 @@
rectangle
(\moloch@progressinheadfoot, \moloch@progressinheadfoot@linewidth);
\end{tikzpicture}
- \tikzexternalenable
+ \tikzexternalenable%
\end{beamercolorbox}
}
% \end{macrocode}
diff --git a/macros/latex/contrib/beamer-contrib/themes/moloch/beamerthememoloch.dtx b/macros/latex/contrib/beamer-contrib/themes/moloch/beamerthememoloch.dtx
index fcebef5a81..e6447ec791 100644
--- a/macros/latex/contrib/beamer-contrib/themes/moloch/beamerthememoloch.dtx
+++ b/macros/latex/contrib/beamer-contrib/themes/moloch/beamerthememoloch.dtx
@@ -12,7 +12,7 @@
% \iffalse
%<*package>
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{beamerthememoloch}[2024-03-06 v0.3.0 Moloch Beamer theme] % x-release-please-version
+\ProvidesPackage{beamerthememoloch}[2024-07-09 v0.4.0 Moloch Beamer theme] % x-release-please-version
%</package>
% \fi
% \CheckSum{0}
@@ -52,14 +52,69 @@
}
% \end{macrocode}
%
+% \begin{macro}{titleformat plain}
+% Controls the formatting of the text on standout ``plain'' frames.
+% \begin{macrocode}
+\pgfkeys{
+ /moloch/titleformat plain/.cd,
+ .is choice,
+ regular/.code={%
+ \let\moloch@plaintitleformat\@empty%
+ \setbeamerfont{standout}{shape=\normalfont}%
+ },
+ smallcaps/.code={%
+ \let\moloch@plaintitleformat\@empty%
+ \setbeamerfont{standout}{shape=\scshape}%
+ },
+ allsmallcaps/.code={%
+ \let\moloch@plaintitleformat\MakeLowercase%
+ \setbeamerfont{standout}{shape=\scshape}%
+ },
+ allcaps/.code={%
+ \let\moloch@plaintitleformat\MakeUppercase%
+ \setbeamerfont{standout}{shape=\normalfont}%
+ },
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{titleformat}
+% Sets a standard format for titles, subtitles, section titles, frame
+% titles, and the text on standout ``plain'' frames.
+% \begin{macrocode}
+\pgfkeys{
+ /moloch/titleformat/.code=\pgfkeysalso{
+ font/titleformat title=#1,
+ font/titleformat subtitle=#1,
+ font/titleformat section=#1,
+ font/titleformat frame=#1,
+ titleformat plain=#1,
+ }
+}
+% \end{macrocode}
+% \end{macro}
+%
+% Set default values for options.
+%
+% \begin{macrocode}
+\newcommand{\moloch@setdefaults}{
+ \pgfkeys{/moloch/.cd,
+ titleformat plain=regular,
+ }
+}
+% \end{macrocode}
+%
% To avoid generating externalized figures of the progressbar we have to disable
% them with ``tikzexternalenable'' and ``tikzexternaldisable''. However, if the
% ``external'' libray is not loaded we would get undefined control sequence
% problems, hence we define them as no-ops if they are not defined yet.
+% We do the same for the ``mmzUnmemoizable'' command from the memoize package, in
+% order to avoid memoization of the progress bars.
%
% \begin{macrocode}
\providecommand{\tikzexternalenable}{}
\providecommand{\tikzexternaldisable}{}
+\providecommand{\mmzUnmemoizable}{}
% \end{macrocode}
%
% \subsubsection{Component sub-packages}
@@ -98,6 +153,7 @@
% \subsubsection{Process package options}
%
% \begin{macrocode}
+\moloch@setdefaults
\ProcessPgfOptions{/moloch}
% \end{macrocode}
%
diff --git a/macros/latex/contrib/beamer-contrib/themes/moloch/moloch.pdf b/macros/latex/contrib/beamer-contrib/themes/moloch/moloch.pdf
index 3607149cef..15f0652a6a 100644
--- a/macros/latex/contrib/beamer-contrib/themes/moloch/moloch.pdf
+++ b/macros/latex/contrib/beamer-contrib/themes/moloch/moloch.pdf
Binary files differ
diff --git a/macros/latex/contrib/beamer-contrib/themes/moloch/moloch.tex b/macros/latex/contrib/beamer-contrib/themes/moloch/moloch.tex
index a9eb326933..c8300607be 100644
--- a/macros/latex/contrib/beamer-contrib/themes/moloch/moloch.tex
+++ b/macros/latex/contrib/beamer-contrib/themes/moloch/moloch.tex
@@ -58,7 +58,7 @@
xrightmargin=0em,
aboveskip=1em,
belowskip=1em,
- morekeywords={usetheme,institute,maketitle,%
+ morekeywords={usetheme,institute,maketitle,@moloch@titleformat,%
plain,setbeamercolor,molochset,setsansfont,setmonofont},
}
\lstMakeShortInline|
@@ -82,7 +82,7 @@
\newcommand{\themename}{\textsf{moloch}\xspace}
-\def\molochversion{0.3.0} % x-release-please-version
+\def\molochversion{0.4.0} % x-release-please-version
\usepackage{readprov}
% \ReadPackageInfos{beamerthememoloch}
@@ -166,10 +166,10 @@ The following code shows a minimal example of a Beamer presentation using
\begin{lstlisting}
\documentclass{beamer}
\usetheme{moloch}
-\title{A minimal example}
+\title{A Minimal Example}
\date{\today}
\author{Johan Larsson}
-\institute{Centre for Modern Beamer Themes}
+\institute{Some University}
\begin{document}
\maketitle
\section{First Section}
@@ -187,6 +187,7 @@ The following code shows a minimal example of a Beamer presentation using
\begin{itemize}
\item |tikz|
\item |pgfopts|
+ \item |etoolbox|
\item |calc|
\end{itemize}
\end{multicols}
@@ -224,6 +225,27 @@ The list of options is structured as shown in the following example.
A short description of the option.
}
+
+\subsubsection{Main theme}
+
+\DescribeOption{titleformat}%
+{regular, smallcaps, allsmallcaps, allcaps}
+{regular}{
+ Changes the format of titles, subtitles, section titles, frame titles, and
+ the text on ``standout'' frames. The available options produce
+ Regular, \textsc{SmallCaps}, \textsc{\MakeLowercase{AllSmallCaps}}, or
+ \MakeUppercase{AllCaps} titles. Note that these commands do not
+ affect math and numbers, so may not work as you expect if your titles
+ contain these.
+}
+
+\DescribeOption{titleformat plain}%
+{regular, smallcaps, allsmallcaps, allcaps}%
+{regular}{
+ Changes the format of ``standout'' frames (see |titleformat|, above).
+}
+
+
\subsubsection{Inner theme}
\DescribeOption{sectionpage}{none, simple, progressbar}{progressbar}{
@@ -270,6 +292,20 @@ The list of options is structured as shown in the following example.
of the reverse.
}
+
+\subsubsection{Font theme}
+
+\DescribeMacro{titleformat title}
+\DescribeMacro{titleformat subtitle}
+\DescribeMacro{titleformat section}
+\DescribeOption{titleformat frame}%
+{regular, smallcaps, allsmallcaps, allcaps}%
+{regular}{
+ Individually controls the format of titles, subtitles, section titles, and
+ frame titles (see |titleformat|, above).
+}
+
+
\subsection{Color Customization}
The included \themename color theme is used by default, but its colors can be
@@ -321,6 +357,18 @@ single sentence or image. To use it, add the key |standout| to the frame:
\section{Known Issues}
+\subsection{Title Formats}
+
+Be aware that not every font supports small caps, so the |smallcaps| or
+|allsmallcaps| options may not work for all fonts.
+In particular, the Computer Modern sans-serif typeface, which is used
+by default when \themename is compiled with pdf\LaTeX, does not have a
+small-caps variant.
+
+Note that title format options |allsmallcaps| and |allcaps| do not
+affect the sizes of numerals, punctuation, and math symbol, and are
+probably best avoided if your titles contain these characters.
+
\subsection{Interactions with other color themes}
\themename can be used along with any other Beamer color theme, such as
@@ -412,7 +460,7 @@ solution for Org mode users, using |org-set-property|.
\subsection{Standout frames with Pandoc}
-With Pandoc versions prior 1.17.2 it was not possible to create standout frames
+With Pandoc versions prior to 1.17.2 it was not possible to create standout frames
because Pandoc only supported a specific list of frame attributes thus ignoring
additional attributes such as |{.standout}|.
diff --git a/macros/latex/contrib/easybook/README.md b/macros/latex/contrib/easybook/README.md
index c0d87f5b74..b0b9fb9ac9 100644
--- a/macros/latex/contrib/easybook/README.md
+++ b/macros/latex/contrib/easybook/README.md
@@ -1,5 +1,5 @@
# The `easybook` document class
-Easily typesetting Chinese theses or books (v2024co)
+Easily typesetting Chinese theses or books (v2024cp)
## Abstract
`easybook` is a pure academic template created based on the `ctexbook` book document class. It also has the functions of `book` and `article` document class. Combined with the general framework design of the theses of many universities in China, providing multiple commands and interfaces allows users to easily customize the theses templates. Its basic macro package `easybase` can also be used with `ctex` and standard document classes.
diff --git a/macros/latex/contrib/easybook/easybook.dtx b/macros/latex/contrib/easybook/easybook.dtx
index 4f7a85fc70..0436584b62 100644
--- a/macros/latex/contrib/easybook/easybook.dtx
+++ b/macros/latex/contrib/easybook/easybook.dtx
@@ -14,7 +14,7 @@
% This work has the LPPL maintenance status `maintained'.
%<class|package>\NeedsTeXFormat{LaTeX2e}[2021/11/15]
%<*class>
-\ProvidesExplClass{easybook}{2024/07/06}{2024co}
+\ProvidesExplClass{easybook}{2024/07/09}{2024cp}
{Easily typesetting Chinese theses or books}
\bool_new:N \l__eb_compile_draft_bool
@@ -301,7 +301,7 @@
%</class>
%<*package>
\RequirePackage{etoolbox}
-\ProvidesExplPackage{easybase}{2024/07/06}{2024co}
+\ProvidesExplPackage{easybase}{2024/07/09}{2024cp}
{Easily typesetting Chinese theses or books}
\cs_generate_variant:Nn \dim_set:Nn { NV }
@@ -1316,7 +1316,7 @@
{
\IfBooleanTF{##1}
{
- \use:c {#1}*{\phantomsection ##3}
+ \use:c {#1}*{##3}
\CTEX@addtocline{#1}{##2}
\tl_if_empty:oF {##4} { \CTEX@addbitocline{#1}{##4} }
\use:c { #1mark }{##2}
@@ -1384,6 +1384,7 @@
\bool_if:cTF { CTEX@#2@numbering }
{ \CTEX@ifnametrue }
{ \CTEX@ifnamefalse }
+ \CTEX@makeanchor{#2*}
\addcontentsline{#1}{#2}{\use:c { CTEX@#2@tocline }{#2}{##1}}
}
}
@@ -2664,7 +2665,7 @@
}
%</package>
%<*tcolorbox>
-\ProvidesExplFile{eb-tcolorbox.cfg}{2024/07/06}{2024co}
+\ProvidesExplFile{eb-tcolorbox.cfg}{2024/07/09}{2024cp}
{Customization of tcolorbox for easybook}
\cs_set_protected:Npn \addtotcbstyle #1#2
diff --git a/macros/latex/contrib/easybook/easybook.pdf b/macros/latex/contrib/easybook/easybook.pdf
index 6c907b1be5..063fb7cd4c 100644
--- a/macros/latex/contrib/easybook/easybook.pdf
+++ b/macros/latex/contrib/easybook/easybook.pdf
Binary files differ
diff --git a/macros/latex/contrib/easybook/easybook.tex b/macros/latex/contrib/easybook/easybook.tex
index fbc6cc7562..78a2bf0f49 100644
--- a/macros/latex/contrib/easybook/easybook.tex
+++ b/macros/latex/contrib/easybook/easybook.tex
@@ -23,8 +23,8 @@
name = easybook,
color-scheme = blue,
title = EASYBOOK使用手册,
- version = v2024co,
- date = 2024/07/06,
+ version = v2024cp,
+ date = 2024/07/09,
authors = 瞿毅,
info = 简便地排版中文学位论文或书籍,
email = toquyi@163.com,
@@ -57,10 +57,8 @@
\setlist[cnltxlist]
{
leftmargin = 0pt,
- labelwidth = 2em,
itemindent = -1em,
- labelsep = 0pt,
- listparindent = 2em,
+ listparindent = \parindent,
topsep = \smallskipamount,
itemsep = \smallskipamount,
partopsep = 0ex,
@@ -1445,6 +1443,13 @@ $\blacktriangleright$需要注意正确\textbf{编译索引}要增加 \code{-she
\item 新增统一设置所有目录格式时的条目类型排除命令 \cs{ExcludeEveryTocName}。
\end{version}
\shortversion{v = 2024cd,date = 2024/06/14,changes = 修复全局选项 \option{class} 无法正确切换单双面排版的问题。}
+ \begin{version}[v = 2024cf,date = 2024/06/16]
+ \fixed
+ \item 修复和改进新建章节/图表标题时目录层次深度的问题。
+ \changed
+ \item \module*{tools} 模块的图片路径选项 \option{figurepath} 可在正文中使用。
+ \end{version}
+ \shortversion{v = 2024ci,date = 2024/06/22,changes = 修复使用 \code{flush} 类型脚注报错。}
\shortversion{v = 2024co,date = 2024/07/06,changes = 目录命令的可选参数支持 \CTeX 键值列表所有路径的章节标题样式选项。}
\end{changelog}
\nocite{*}
diff --git a/macros/latex/contrib/jnuexam/examfc-a-answer.pdf b/macros/latex/contrib/jnuexam/examfc-a-answer.pdf
index f6f0a50649..e12e04e047 100644
--- a/macros/latex/contrib/jnuexam/examfc-a-answer.pdf
+++ b/macros/latex/contrib/jnuexam/examfc-a-answer.pdf
Binary files differ
diff --git a/macros/latex/contrib/jnuexam/examfc-a-blank.pdf b/macros/latex/contrib/jnuexam/examfc-a-blank.pdf
index 09d8a14b15..d033fe6d75 100644
--- a/macros/latex/contrib/jnuexam/examfc-a-blank.pdf
+++ b/macros/latex/contrib/jnuexam/examfc-a-blank.pdf
Binary files differ
diff --git a/macros/latex/contrib/jnuexam/examfc-b-answer.pdf b/macros/latex/contrib/jnuexam/examfc-b-answer.pdf
index 2356b53690..6497883408 100644
--- a/macros/latex/contrib/jnuexam/examfc-b-answer.pdf
+++ b/macros/latex/contrib/jnuexam/examfc-b-answer.pdf
Binary files differ
diff --git a/macros/latex/contrib/jnuexam/examfc-b-blank.pdf b/macros/latex/contrib/jnuexam/examfc-b-blank.pdf
index d9160a13ed..5682c2d24b 100644
--- a/macros/latex/contrib/jnuexam/examfc-b-blank.pdf
+++ b/macros/latex/contrib/jnuexam/examfc-b-blank.pdf
Binary files differ
diff --git a/macros/latex/contrib/jnuexam/examfe-a-answer.pdf b/macros/latex/contrib/jnuexam/examfe-a-answer.pdf
index 6ac1d17806..c029ef99ea 100644
--- a/macros/latex/contrib/jnuexam/examfe-a-answer.pdf
+++ b/macros/latex/contrib/jnuexam/examfe-a-answer.pdf
Binary files differ
diff --git a/macros/latex/contrib/jnuexam/examfe-a-blank.pdf b/macros/latex/contrib/jnuexam/examfe-a-blank.pdf
index 4192ead99f..e2f4dac7e2 100644
--- a/macros/latex/contrib/jnuexam/examfe-a-blank.pdf
+++ b/macros/latex/contrib/jnuexam/examfe-a-blank.pdf
Binary files differ
diff --git a/macros/latex/contrib/jnuexam/examfe-b-answer.pdf b/macros/latex/contrib/jnuexam/examfe-b-answer.pdf
index bf5e9342ee..8e60df9eac 100644
--- a/macros/latex/contrib/jnuexam/examfe-b-answer.pdf
+++ b/macros/latex/contrib/jnuexam/examfe-b-answer.pdf
Binary files differ
diff --git a/macros/latex/contrib/jnuexam/examfe-b-blank.pdf b/macros/latex/contrib/jnuexam/examfe-b-blank.pdf
index c37242241f..03bcefee49 100644
--- a/macros/latex/contrib/jnuexam/examfe-b-blank.pdf
+++ b/macros/latex/contrib/jnuexam/examfe-b-blank.pdf
Binary files differ
diff --git a/macros/latex/contrib/jnuexam/jnuexam.cls b/macros/latex/contrib/jnuexam/jnuexam.cls
index f5df920469..086c55f2b0 100644
--- a/macros/latex/contrib/jnuexam/jnuexam.cls
+++ b/macros/latex/contrib/jnuexam/jnuexam.cls
@@ -6,7 +6,7 @@
% ----------------------------------------------------------------------------
\NeedsTeXFormat{LaTeX2e}
-\ProvidesClass{jnuexam}[2024-02-18 v2024E An exam class for Jinan University]
+\ProvidesClass{jnuexam}[2024-07-09 v2024F An exam class for Jinan University]
%% 旧版本的 LaTeX 不能识别 2022-11-01 这种日期格式
%\@ifl@t@r\fmtversion{2022-11-01}{}{
@@ -521,9 +521,10 @@
\let\doscratchpaper=\doscratchpaperone
}
-% 在旧版本 ctex 宏包中不能用 \AtEndDocument 添加含中文的内容,即不能用 \appto 而要用 \preto
+%% 此时 \AtEndDocument{...} 等价于 \AddToHook{enddocument}[jnuexam]{...}
+%% 而且默认会在 \AddToHook{enddocument}[randexam]{...} 所加的代码之后执行
\newcommand{\addscratchpaper}{
- \preto{\@enddocumenthook}{\doscratchpaper}
+ \AtEndDocument{\doscratchpaper}
}
\IfExamBoolF{plain}{\IfExamBoolF{answer}{\addscratchpaper}}
@@ -534,6 +535,7 @@
\DeclareExamTheme{final-chinese}{
\SetExamOption{chinese}
+ \SetExamBoolTrue{evaluator}
\SelectExamTranslation{chinese}
\SetExamValue{exampart}{number=\Chinese}
\SelectExamTemplate{examtitle}{final-chinese}
diff --git a/macros/latex/contrib/jnuexam/jnuexam.pdf b/macros/latex/contrib/jnuexam/jnuexam.pdf
index 0cc01cc3f1..c0a756123c 100644
--- a/macros/latex/contrib/jnuexam/jnuexam.pdf
+++ b/macros/latex/contrib/jnuexam/jnuexam.pdf
Binary files differ
diff --git a/macros/latex/contrib/randexam/randexam-a-answer.pdf b/macros/latex/contrib/randexam/randexam-a-answer.pdf
index d961cd9cb5..686d3f696c 100644
--- a/macros/latex/contrib/randexam/randexam-a-answer.pdf
+++ b/macros/latex/contrib/randexam/randexam-a-answer.pdf
Binary files differ
diff --git a/macros/latex/contrib/randexam/randexam-a-blank.pdf b/macros/latex/contrib/randexam/randexam-a-blank.pdf
index 9656be370d..d6ea0b132c 100644
--- a/macros/latex/contrib/randexam/randexam-a-blank.pdf
+++ b/macros/latex/contrib/randexam/randexam-a-blank.pdf
Binary files differ
diff --git a/macros/latex/contrib/randexam/randexam-b-answer.pdf b/macros/latex/contrib/randexam/randexam-b-answer.pdf
index fe0867038c..ec97459092 100644
--- a/macros/latex/contrib/randexam/randexam-b-answer.pdf
+++ b/macros/latex/contrib/randexam/randexam-b-answer.pdf
Binary files differ
diff --git a/macros/latex/contrib/randexam/randexam-b-blank.pdf b/macros/latex/contrib/randexam/randexam-b-blank.pdf
index c059b6e615..459ad1f116 100644
--- a/macros/latex/contrib/randexam/randexam-b-blank.pdf
+++ b/macros/latex/contrib/randexam/randexam-b-blank.pdf
Binary files differ
diff --git a/macros/latex/contrib/randexam/randexam.cls b/macros/latex/contrib/randexam/randexam.cls
index ec5d1c43c2..dacc079cb0 100644
--- a/macros/latex/contrib/randexam/randexam.cls
+++ b/macros/latex/contrib/randexam/randexam.cls
@@ -6,7 +6,7 @@
% ----------------------------------------------------------------------------
\NeedsTeXFormat{LaTeX2e}
-\ProvidesClass{randexam}[2024-02-18 v2024E Make an exam paper and its randomized variants]
+\ProvidesClass{randexam}[2024-07-09 v2024F Make an exam paper and its randomized variants]
%% Old LaTeX release could not recognize date format like 2022-11-01
%\@ifl@t@r\fmtversion{2022-11-01}{}{
@@ -786,7 +786,8 @@
\UseExamTemplate{examdata}{default}
}
-\preto{\@enddocumenthook}{\printquestions\rdxm@stop@random}
+%% this equals to \AddToHook{enddocument}[randexam]{...}
+\AtEndDocument{\printquestions\rdxm@stop@random}
\newcommand\ignorepars{\@ifnextchar\par{\expandafter\ignorepars\@gobble}{}}
@@ -1228,6 +1229,11 @@
\mbox{}\nobreak\hfill$\cdots\cdots$\solutionpointstext{#1}
\par\noindent\ignorespaces
}
+
+%% \eqno would cause extra space after a $$...$$ equation
+%% this bug was fixed in latex release 2023-06-01
+%% see https://github.com/latex3/latex2e/issues/1059
+%% \tag is used in a \[...\] equation hence no problem with it
\newcommand{\pointseqno}[1]{\eqno{\cdots\cdots\text{\solutionpointstext{#1}}}}
\newcommand{\pointstag}[1]{\tag*{$\cdots\cdots$\solutionpointstext{#1}}}
@@ -1374,6 +1380,9 @@
\RequirePackage{extarrows}
\newcommand{\e}{\mathrm{e}}
\newcommand{\R}{\mathbb{R}}
+ \newcommand{\jacobi}[2]{{\left(\frac{##1}{##2}\right)}}
+ \newcommand{\ii}{\mathrm{i}}
+ \newcommand{\Zi}{\mathbb{Z}[\ii]}
\DeclareMathOperator{\arccot}{arccot}
\DeclareMathOperator{\Corr}{\rho}
\DeclareMathOperator{\Cov}{Cov}
diff --git a/macros/latex/contrib/randexam/randexam.pdf b/macros/latex/contrib/randexam/randexam.pdf
index 68c0e5925d..1ef3fcc5ad 100644
--- a/macros/latex/contrib/randexam/randexam.pdf
+++ b/macros/latex/contrib/randexam/randexam.pdf
Binary files differ
diff --git a/macros/latex/contrib/randexam/randexam.tex b/macros/latex/contrib/randexam/randexam.tex
index 74e57318df..ff7d951a15 100644
--- a/macros/latex/contrib/randexam/randexam.tex
+++ b/macros/latex/contrib/randexam/randexam.tex
@@ -3,7 +3,7 @@
\documentclass[12pt,plain,math=most]{randexam}
\geometry{b5paper,margin=2cm}
-\newcommand*{\myversion}{2024E}
+\newcommand*{\myversion}{2024F}
\newcommand*{\mydate}{\the\year-\mylpad\month-\mylpad\day}
\newcommand*{\mylpad}[1]{\ifnum#1<10 0\the#1\else\the#1\fi}
diff --git a/macros/latex/contrib/synthslant/LICENSE b/macros/latex/contrib/synthslant/LICENSE
index f8b699e6eb..888d9e68e7 100644
--- a/macros/latex/contrib/synthslant/LICENSE
+++ b/macros/latex/contrib/synthslant/LICENSE
@@ -355,11 +355,11 @@ Here is an example of such a notice and statement:
%% Copyright 2005 M. Y. Name
%
% This work may be distributed and/or modified under the
- % conditions of the LaTeX Project Public License, either version 1.3
+ % conditions of the LaTeX Project Public License, either version 1.3c
% of this license or (at your option) any later version.
% The latest version of this license is in
- % http://www.latex-project.org/lppl.txt
- % and version 1.3 or later is part of all distributions of LaTeX
+ % https://www.latex-project.org/lppl.txt
+ % and version 1.3c or later is part of all distributions of LaTeX
% version 2005/12/01 or later.
%
% This work has the LPPL maintenance status `maintained'.
diff --git a/macros/latex/contrib/synthslant/Makefile b/macros/latex/contrib/synthslant/Makefile
index d8de419230..8ef77a6982 100644
--- a/macros/latex/contrib/synthslant/Makefile
+++ b/macros/latex/contrib/synthslant/Makefile
@@ -19,8 +19,9 @@ DVIPS := dvips
DVIPS_FLAGS := -d1 # debug \special{}
-LATEX := /usr/bin/env max_print_line=2147483647 pdflatex
-LATEX_FLAGS := -file-line-error -halt-on-error -interaction=nonstopmode
+LATEX_PROPER := pdflatex
+LATEX := /usr/bin/env max_print_line=2147483647 $(LATEX_PROPER)
+LATEX_FLAGS := -file-line-error -halt-on-error -interaction=nonstopmode -output-directory=.
LATEX_RERUN_TRIGGER := '^Package rerunfilecheck Warning: File [^ ]* has changed'
LATEX_WARNING := '^LaTeX (|[A-Za-z0-9_]* )Warning:'
@@ -33,18 +34,9 @@ METAPOST := mpost
METAPOST_FLAGS := -file-line-error -interaction=nonstopmode -tex=latex
-SPELLCHECK := aspell
-SPELLCHECK_FLAGS := \
- --add-tex-command='citenum p' --add-tex-command='code p' \
- --add-tex-command='Cref p' --add-tex-command='cref p' \
- --add-tex-command='cs p' \
- --add-tex-command='DescribeEnv p' --add-tex-command='DescribeMacro p' \
- --add-tex-command='marg p' --add-tex-command='meta p' \
- --add-tex-command='oarg p' \
- --lang=en_US --mode=tex
-
-
-SOURCE_FILES := LICENSE Makefile synthslant.dtx synthslant.ins
+PROJECT_NAME := synthslant
+SOURCE_FILES := LICENSE Makefile README.md synthslant.dtx synthslant.ins
+DOCUMENTATION_FILES := synthslant-gauge.pdf synthslant.pdf
@@ -57,7 +49,7 @@ sty: synthslant.sty
.PHONY: pdf
-pdf: doc gauge
+pdf: doc gauge test
.PHONY: doc
@@ -68,19 +60,42 @@ doc: synthslant.pdf
gauge: synthslant-gauge.pdf
-.PHONY: cpio
-cpio:
- cd ..; \
- echo $(addprefix synthslant/,$(SOURCE_FILES)) | \
- cpio -o | \
- gzip > "synthslant-$$(date +%Y-%m-%d).cpio.gz"
+.PHONY: test
+test: synthslant-minimal-test.pdf
+
+
+export TEMPORARY_DIRECTORY
+
+
+.PHONY: dist
+dist:
+ $(eval TEMPORARY_DIRECTORY := $(shell mktemp -d))
+ trap '$(RM) -r $(TEMPORARY_DIRECTORY); exit 1' HUP INT QUIT TERM; $(MAKE) __dist
+ $(RM) -r $(TEMPORARY_DIRECTORY)
+
+
+.PHONY: __dist
+__dist: LATEX_FLAGS += -interaction=batchmode
+__dist: $(DOCUMENTATION_FILES)
+ test -d '$(TEMPORARY_DIRECTORY)'
+ test -w '$(TEMPORARY_DIRECTORY)'
+ mkdir $(TEMPORARY_DIRECTORY)/$(PROJECT_NAME)
+ cp $(SOURCE_FILES) $(TEMPORARY_DIRECTORY)/$(PROJECT_NAME)
+ mkdir $(TEMPORARY_DIRECTORY)/$(PROJECT_NAME)/docs
+ cp $(DOCUMENTATION_FILES) $(TEMPORARY_DIRECTORY)/$(PROJECT_NAME)/docs
+ tar czf $(PROJECT_NAME).tar.gz -C $(TEMPORARY_DIRECTORY) $(PROJECT_NAME)
-.PHONY: tar
-tar:
- cd ..; \
- tar czf "synthslant-$$(date +%Y-%m-%d).tar.gz" \
- $(addprefix synthslant/,$(SOURCE_FILES))
+.PHONY: distcheck
+distcheck: LATEX_FLAGS += -interaction=batchmode
+distcheck: dist
+ $(eval TEMPORARY_DIRECTORY := $(shell mktemp -d))
+ test -d '$(TEMPORARY_DIRECTORY)'
+ test -w '$(TEMPORARY_DIRECTORY)'
+ tar xzf $(PROJECT_NAME).tar.gz -C $(TEMPORARY_DIRECTORY)
+ $(MAKE) --directory=$(TEMPORARY_DIRECTORY)/$(PROJECT_NAME) LATEX_FLAGS='$(LATEX_FLAGS)' all
+ $(RM) -r $(TEMPORARY_DIRECTORY)
+ @printf '\n\ndistcheck passed.\n'
.PHONY: clean
@@ -91,6 +106,7 @@ clean:
$(RM) mptextmp.* mpxerr.tex
$(RM) README README.html RELEASE-HOWTO RELEASE-HOWTO.html
$(RM) compare-with-the-gimp.eps compare-with-the-gimp.png
+ $(RM) $(PROJECT_NAME).tar.gz
.PHONY: mostlyclean
@@ -99,35 +115,27 @@ mostlyclean: clean
.PHONY: maintainer-clean
maintainer-clean: mostlyclean
- $(RM) ./*.base64 ./*.ist ./*.mp ./*.sty ./*.tex
+ $(RM) ./*.base64 ./*.gst ./*.ist ./*.mp ./*.sty ./*.tex
.PHONY: perf
perf: synthslant-gauge.tex synthslant.sty
- perf stat --repeat=10 -- $(LATEX) $(LATEX_FLAGS) -interaction batchmode -draftmode $<
+ perf stat --repeat=10 -- $(LATEX) $(LATEX_FLAGS) -interaction=batchmode -draftmode $<
.PHONY: tool-check
tool-check:
- @printf '*** LATEX = "%s"\n' '$(LATEX)'
- $(LATEX) --version
+ @printf '*** LATEX_PROPER = "%s"\n' '$(LATEX_PROPER)'
+ $(LATEX_PROPER) --version
+ @printf '\n\n*** BibTeX\n'
+ bibtex --version
@printf '\n\n*** MAKEINDEX = "%s"\n' '$(MAKEINDEX)'
- $(MAKEINDEX) < /dev/null
+ $(MAKEINDEX) < /dev/null
@printf '\n\n*** METAPOST = "%s"\n' '$(METAPOST)'
$(METAPOST) --version
@printf '\n*** BASE64 = "%s"\n' '$(BASE64)'
$(BASE64) --version
- @printf '\n\nTool check passed.\n'
-
-
-.PHONY: spell-check
-spell-check:
- @sed -e '\#<DISABLE-SPELL-CHECK/>#d' \
- -e '\#<DISABLE-SPELL-CHECK>#,\#</DISABLE-SPELL-CHECK>#d' < synthslant.dtx | \
- sed -e 's/^ *%%*//' | \
- sed -e 's/\\-//g' -e 's/|[^|]*|/ /g' | \
- $(SPELLCHECK) $(SPELLCHECK_FLAGS) list | \
- sort | uniq | fmt | sed -e 's/ / /g'
+ @printf '\n\ntool check passed.\n'
.PHONY: update-docs
@@ -142,8 +150,12 @@ all: Make everything there is to make. This is the .DEFAULT_GOAL.
clean: Remove some products.
-cpio: In the parent directory create a cpio(1) archive of the
- project source files whose name is time-stamped.
+dist: Create a tar file of the project source files and the PDF
+ documentation files. The archive is in the form and has a
+ name that CTAN prefers.
+
+distcheck: Create a tar file of the project source files, unpack it in
+ a different location and build all targets.
doc: Build "synthslant.pdf" the Syntslant documentation.
@@ -160,15 +172,22 @@ pdf: Build doc: and gauge:.
sty: Only extract "synthslant.sty" from "synthslant.dtx". This
operation requires LaTeX (-> $(LATEX)) and nothing else.
-tar: In the parent directory create a tar(1) file of the project
- source files whose name is time-stamped.
+test: Run some tests. Currently only compiles a minimal document
+ to check whether "synthslant.sty" contains all the necessary
+ \RequirePackage directives.
tool-check: Check whether some of the required tools to build the
project are available.
+update-docs: Copy the documentation files into the "docs"
+ sub-directory.
+
Selected Implicit Rules
-----------------------
+%: %.html
+ Convert HTML to plain text. Requires w3m(1).
+
%.dvi %.pdf: %.dtx
Run LaTeX or pdfLaTeX (-> $(LATEX)) on dtx source until a
fix-point is reached.
@@ -177,6 +196,9 @@ Selected Implicit Rules
Run LaTeX or pdfLaTeX (-> $(LATEX)) on tex file until a
fix-point is reached.
+%.html: %.md
+ Convert markdown to HTML. Requires markdown(1).
+
%.mx.pdf: %.dvi
Convert dvi to pdf via dvipdfmx (-> $(DVIPDFMX)).
@@ -187,9 +209,9 @@ Selected Implicit Rules
Some Explicit Rules
-------------------
README.html:
- Convert "README.md" to html. Requires markdown(1).
+ Convert "README.md" to html.
-README: Convert "README.html" to plain text. Requires w3m(1).
+README: Convert "README.html" to plain text.
endef
@@ -205,8 +227,8 @@ help:
define MAKE_INDEX_AND_GLOSSARY
sed -e '/@/d' < $*.idx > ,$*.idx; mv ,$*.idx $*.idx; \
-$(MAKEINDEX) $(MAKEINDEX_FLAGS) -s synthslant.ist -t $*.ilg -o $*.ind $*.idx; \
-$(MAKEINDEX) $(MAKEINDEX_FLAGS) -s gglo.ist -t $*.glg -o $*.gls $*.glo
+$(MAKEINDEX) $(MAKEINDEX_FLAGS) -s $*.ist -t $*.ilg -o $*.ind $*.idx; \
+$(MAKEINDEX) $(MAKEINDEX_FLAGS) -s $*.gst -t $*.glg -o $*.gls $*.glo
endef
define GREP_LATEX_WARNINGS
@@ -250,7 +272,13 @@ endef
%.mps: %.mp
- $(METAPOST) -s 'outputtemplate="%j.mps"' $(METAPOST_FLAGS) $<
+ $(METAPOST) -s 'outputtemplate="%j.mps"' $(METAPOST_FLAGS) $< || { \
+ printf '=== $*.log ===\n'; \
+ cat $*.log; \
+ printf '\n\n=== mpxerr.log ===\n'; \
+ cat mpxerr.log; \
+ false; \
+ } 1>&2
%.eps: %.png
@@ -265,7 +293,8 @@ endef
-synthslant.sty synthslant.ist synthslant-gauge.tex \
+synthslant.sty synthslant.ist \
+synthslant-gauge.tex synthslant-minimal-test.tex \
compare-with-the-gimp.png.base64 shear-transform.mp title.mp: \
synthslant.ins synthslant.dtx
$(LATEX) $(LATEX_FLAGS) $<
diff --git a/macros/latex/contrib/synthslant/README.md b/macros/latex/contrib/synthslant/README.md
index 1b1c719189..efc20fd37e 100644
--- a/macros/latex/contrib/synthslant/README.md
+++ b/macros/latex/contrib/synthslant/README.md
@@ -1,3 +1,6 @@
+![distcheck status](https://github.com/cspiel/synthslant/actions/workflows/distcheck.yml/badge.svg)
+
+
# SynthSlant &ndash; Synthetic slanting of glyphs
LaTeX package `synthslant` slants short pieces of text to the right or to the left.
diff --git a/macros/latex/contrib/synthslant/RELEASE-HOWTO.md b/macros/latex/contrib/synthslant/RELEASE-HOWTO.md
deleted file mode 100644
index 13435ef66d..0000000000
--- a/macros/latex/contrib/synthslant/RELEASE-HOWTO.md
+++ /dev/null
@@ -1,51 +0,0 @@
-# How to prepare a new release
-
-... and not make too many mistakes.
-
-
-1. Check that the work-area is clean with respect to **git**-tracked
- files.
-
- ``` git status ```
-
-1. Update the date stamp of `\ProvidesPackage`.
-
-1. (Temporarily) Zero the `\overfullrule`s of the documentation and
- the example files.
-
-1. Thoroughly clean the work-area:
-
- ```make maintainer-clean```
-
-1. Rebuild:
-
- ```make```
-
-1. Check that all _*.sty_ and _*.pdf_ files are in good shape.
-
-1. Push the documentation files created in the previous step down into
- the *docs* directory:
-
- ```make update-docs```
-
-1. Undo the `\overfullrule` change.
-
-1. Commit the changes:
-
- ```
- git add .
- ```
-
- and finally
-
- ```
- git commit
- ```
-
-1. Tag the commit with the version string of `\ProvidesPackage`:
-
- ```git tag v1.23```
-
-1. Push the changes to the public repository:
-
- ```git push origin master --tags```
diff --git a/macros/latex/contrib/synthslant/docs/index.md b/macros/latex/contrib/synthslant/docs/index.md
deleted file mode 100644
index c8c312f388..0000000000
--- a/macros/latex/contrib/synthslant/docs/index.md
+++ /dev/null
@@ -1,4 +0,0 @@
-### Package Documentation
-
-- Comprehensive `synthslant` documentation: [synthslant.pdf](https://cspiel.github.io/synthslant/synthslant.pdf)
-- `synthslant` test and demonstration: [synthslant-gauge.pdf](https://cspiel.github.io/synthslant/synthslant-gauge.pdf)
diff --git a/macros/latex/contrib/synthslant/docs/synthslant-gauge.pdf b/macros/latex/contrib/synthslant/docs/synthslant-gauge.pdf
index 425e7944ef..762c1e00a0 100644
--- a/macros/latex/contrib/synthslant/docs/synthslant-gauge.pdf
+++ b/macros/latex/contrib/synthslant/docs/synthslant-gauge.pdf
Binary files differ
diff --git a/macros/latex/contrib/synthslant/docs/synthslant.pdf b/macros/latex/contrib/synthslant/docs/synthslant.pdf
index 9b034b86c3..555101ee3c 100644
--- a/macros/latex/contrib/synthslant/docs/synthslant.pdf
+++ b/macros/latex/contrib/synthslant/docs/synthslant.pdf
Binary files differ
diff --git a/macros/latex/contrib/synthslant/synthslant.dtx b/macros/latex/contrib/synthslant/synthslant.dtx
index f5424cf7fa..6c052c64a7 100644
--- a/macros/latex/contrib/synthslant/synthslant.dtx
+++ b/macros/latex/contrib/synthslant/synthslant.dtx
@@ -3,11 +3,11 @@
% Copyright (C) 2024 by Ch. L. Spiel
%
% This work may be distributed and/or modified under the conditions
-% of the LaTeX Project Public License, either version 1.3 of this
+% of the LaTeX Project Public License, either version 1.3c of this
% license or (at your option) any later version. The latest version
% of this license is in
-% http://www.latex-project.org/lppl.txt
-% and version 1.3 or later is part of all distributions of LaTeX
+% httpc://www.latex-project.org/lppl.txt
+% and version 1.3c or later is part of all distributions of LaTeX
% version 2003/12/01 or later.
%
% \fi
@@ -26,7 +26,6 @@
\PassOptionsToClass{a4paper}{article}
\PassOptionsToPackage{hyperfootnotes=false}{hyperref}
-\PassOptionsToPackage{charter, scale=1.06}{newtxmath}
\PassOptionsToPackage{dvipsnames}{xcolor}
\usepackage{amsmath}
@@ -52,6 +51,7 @@
\newcommand*{\textls}[2][]{#2}
\fi
\usepackage{needspace}
+\usepackage[section]{placeins}
\usepackage{ragged2e}
\usepackage{setspace}
\usepackage[slant=.18, negslant=-.16]{synthslant}
@@ -65,7 +65,7 @@
\usepackage[default, lining, proportional, regular, semibold]{sourceserifpro}
\usepackage[lining, proportional, regular, semibold]{sourcesanspro}
\usepackage[lining, regular]{sourcecodepro}
-\usepackage[xcharter]{newtxmath}
+\usepackage[scaled=1.08, uprightscript, xcharter]{newtxmath}
\setstretch{1.04166}% \baselineskip: 12.5pt
@@ -74,15 +74,15 @@
\newcommand*{\fontclan}{\expandafter\@get@fontclan\f@family\relax}
\makeatother
-\newcommand*{\proportionalliningfigures}{\fontfamily{\fontclan-LF}\selectfont}
-\newcommand*{\proportionaloldstylefigures}{\fontfamily{\fontclan-OsF}\selectfont}
-\newcommand*{\tabularliningfigures}{\fontfamily{\fontclan-TLF}\selectfont}
-\newcommand*{\tabularoldstylefigures}{\fontfamily{\fontclan-TOsF}\selectfont}
+\DeclareRobustCommand{\proportionalliningfigures}{\fontfamily{\fontclan-LF}\selectfont}
+\DeclareRobustCommand{\proportionaloldstylefigures}{\fontfamily{\fontclan-OsF}\selectfont}
+\DeclareRobustCommand{\tabularliningfigures}{\fontfamily{\fontclan-TLF}\selectfont}
+\DeclareRobustCommand{\tabularoldstylefigures}{\fontfamily{\fontclan-TOsF}\selectfont}
-\newcommand*{\textdenominator}[1]{{\fontfamily{\fontclan-Dnom}\selectfont #1}}
-\newcommand*{\textinferior}[1]{{\fontfamily{\fontclan-Inf}\selectfont #1}}
-\newcommand*{\textnumerator}[1]{{\fontfamily{\fontclan-Numr}\selectfont #1}}
-\newcommand*{\textsuperior}[1]{{\fontfamily{\fontclan-Sup}\selectfont #1}}
+\DeclareRobustCommand{\textdenominator}[1]{{\fontfamily{\fontclan-Dnom}\selectfont #1}}
+\DeclareRobustCommand{\textinferior}[1]{{\fontfamily{\fontclan-Inf}\selectfont #1}}
+\DeclareRobustCommand{\textnumerator}[1]{{\fontfamily{\fontclan-Numr}\selectfont #1}}
+\DeclareRobustCommand{\textsuperior}[1]{{\fontfamily{\fontclan-Sup}\selectfont #1}}
\newcommand*{\nativetextfraction}[2]
{\mbox{\textnumerator{#1}\textfractionsolidus\textdenominator{#2}}}
@@ -92,21 +92,23 @@
\newenvironment*{tabfigures}
{\edef\rmdefault{\fontclan-T\sourceserifpro@figurestyle}\rm\ignorespaces}
{\ignorespacesafterend}
-
-\newcommand*{\elseries}{\def\mdseries@rm{el}\def\mdseries@sf{el}\def\mdseries@tt{el}}
-\newcommand*{\textel}[1]{{\elseries\textmd{#1}}}
-\newcommand*{\lseries}{\def\mdseries@rm{l}\def\mdseries@sf{l}\def\mdseries@tt{l}}
-\newcommand*{\textl}[1]{{\lseries\textmd{#1}}}
-%%--\newcommand*{\mdseries}{\def\mdseries@rm{m}\def\mdseries@sf{m}\def\mdseries@tt{m}}
-%%--\newcommand*{\textmd}[1]{{\mdseries\textmd{#1}}}
-\newcommand*{\sbseries}{\def\bfseries@rm{sb}\def\bfseries@sf{sb}\def\bfseries@tt{sb}}
-\newcommand*{\textsb}[1]{{\sbseries\textbf{#1}}}
-\newcommand*{\bseries}{\def\bfseries@rm{b}\def\bfseries@sf{b}\def\bfseries@tt{b}}
-\newcommand*{\textb}[1]{{\bseries\textbf{#1}}}
-\newcommand*{\ebseries}{\def\bfseries@rm{k}\def\bfseries@sf{eb}\def\bfseries@tt{k}}
-\newcommand*{\texteb}[1]{{\ebseries\textbf{#1}}}
\makeatother
+\DeclareRobustCommand{\elseries}{\fontseries{el}\selectfont}
+\DeclareTextFontCommand{\textel}{\elseries}
+\DeclareRobustCommand{\lseries}{\fontseries{l}\selectfont}
+\DeclareTextFontCommand{\textl}{\lseries}
+%%--\DeclareRobustCommand{\mdseries}{\fontseries{m}\selectfont}
+%%--\DeclareTextFontCommand{\textmd}{\mdseries}
+\DeclareRobustCommand{\sbseries}{\fontseries{sb}\selectfont}
+\DeclareTextFontCommand{\textsb}{\sbseries}
+\DeclareRobustCommand{\bseries}{\fontseries{b}\selectfont}
+\DeclareTextFontCommand{\textb}{\bseries}
+\DeclareRobustCommand{\ebseries}{\fontseries{eb}\selectfont}
+\DeclareTextFontCommand{\texteb}{\ebseries}
+\DeclareRobustCommand{\ubseries}{\fontseries{k}\selectfont}
+\DeclareTextFontCommand{\textub}{\ubseries}
+
\usepackage{cleveref}
@@ -119,7 +121,7 @@
citecolor = blue,
colorlinks = true,
linkcolor = blue,
- linktocpage = false,
+ linktocpage = true,
pdfauthor={Dr. Christoph L. Spiel},
pdfcreationdate={\pdffiledate},
pdfkeywords={LaTeX, font, italic, oblique, slant, upright},
@@ -131,9 +133,94 @@
}
+\SetExtraKerning[context=drop-left-sidebearing, name=source-code-normal, unit=space]
+ {font={T1/SourceCodePro-LF/m/n/44, T1/SourceCodePro-TLF/m/n/44}}
+ {
+ 1={-150,},
+ 2={-120,},
+ 3={-120,},
+ 4={-40,},
+ A={-100,},
+ B={-170,}
+ }
+
+\newlength{\sectiontocindent}
+\newlength{\sectionnumberwidth}
+\newlength{\subsectiontocindent}
+\newlength{\subsectionnumberwidth}
+\newlength{\subsubsectiontocindent}
+\newlength{\subsubsectionnumberwidth}
+
+\setlength{\sectiontocindent}{0pt}
+\setlength{\sectionnumberwidth}{40pt}
+\setlength{\subsectiontocindent}{40pt}
+\setlength{\subsectionnumberwidth}{25pt}
+\setlength{\subsubsectiontocindent}{65pt}
+\setlength{\subsubsectionnumberwidth}{30pt}
+
\makeatletter
-\renewcommand*{\@dotsep}{10000} % suppress leaders
-\patchcmd{\@dottedtocline}{\normalfont}{\bfseries}{\relax}{\PatchingFailed}
+\renewcommand*{\l@section}[2]
+ {\ifnum \c@tocdepth >\z@
+ \addpenalty\@secpenalty
+ \addvspace{1.0em \@plus\p@}%
+ \setlength{\@tempdima}{\sectionnumberwidth}%
+ \begingroup
+ \def\numberline##1{\hb@xt@\@tempdima{%
+ \tt\lseries
+ \fontsize{44}{0}\selectfont
+ \microtypecontext{kerning=drop-left-sidebearing}%
+ \iffalse\raisebox{-30pt}[0pt][0pt]{\rule{0.1pt}{40pt}}\fi
+ \textcolor{customred3}{##1}%
+ \hfil}}%
+ \parindent \z@
+ \rightskip \@pnumwidth
+ \parfillskip -\@pnumwidth
+ \leavevmode
+ \advance\leftskip\@tempdima
+ \hskip -\leftskip
+ \bfseries
+ \iffalse
+ \nobreak\hfil
+ \nobreak\hb@xt@\@pnumwidth{\hss #2\kern-\p@\kern\p@}%
+ \else
+ {\sffamily\large #1}\quad
+ {#2}\hfil\hbox{}
+ \fi
+ \par
+ \endgroup
+ \fi}
+
+\renewcommand*{\@dottedtocline}[5]
+ {\ifnum #1>\c@tocdepth
+ \else
+ \vskip \z@ \@plus.2\p@
+ \begingroup
+ \leftskip #2\relax
+ \rightskip \@tocrmarg
+ \parfillskip -\rightskip
+ \parindent #2\relax\@afterindenttrue
+ \interlinepenalty\@M
+ \leavevmode
+ \@tempdima #3\relax
+ \advance\leftskip \@tempdima
+ \null\nobreak
+ \hskip -\leftskip
+ {#4}\nobreak
+ \iffalse
+ \leaders\hbox{$\m@th \mkern \@dotsep mu\hbox{.}\mkern \@dotsep mu$}\hfill
+ \nobreak\hb@xt@\@pnumwidth{\hfil\normalfont \normalcolor #5\kern-\p@\kern\p@}%
+ \else
+ \hbox{\quad\normalfont\bfseries #5}\nobreak\hfill\hbox{}%
+ \fi
+ \par
+ \endgroup
+ \fi}
+
+\renewcommand*{\l@subsection}{\@dottedtocline{2}{\subsectiontocindent}{\subsectionnumberwidth}}
+\renewcommand*{\l@subsubsection}{\@dottedtocline{3}{\subsubsectiontocindent}{\subsubsectionnumberwidth}}
+\newrobustcmd*{\tocsquashedsubsections}
+ {\def\l@subsection{\@dottedtocline{2}{0pt}{\subsubsectionnumberwidth}}%
+ \def\l@subsubsection{\@dottedtocline{3}{0pt}{\subsubsectionnumberwidth}}}
\makeatother
@@ -156,8 +243,10 @@
\newcommand*{\floatcaptionwidth}{.79\textwidth}
-\captionsetup[figure]{font=small, justification=centerlast, labelfont=sc, width=\floatcaptionwidth}
-\captionsetup[table]{font=small, justification=centerlast, labelfont=sc, width=\floatcaptionwidth}
+\captionsetup[figure]{font=small, justification=centerlast,
+ labelfont=sc, width=\floatcaptionwidth}
+\captionsetup[table]{font=small, justification=centerlast,
+ labelfont=sc, width=\floatcaptionwidth}
\newsavebox{\listlabelbox}
@@ -188,13 +277,15 @@
\fancypagestyle{pagenumberonly}{
+ \fancyhf{}
\fancyhead[L]{}
\fancyhead[R]{\thepage}
}
-\pagestyle{fancy}
-\fancyhf{}
-\fancyhead[L]{\rightmark}
-\fancyhead[R]{\textsf{\thepage}}
+\fancypagestyle{fancy}{
+ \fancyhf{}
+ \fancyhead[L]{\rightmark}
+ \fancyhead[R]{\thepage}
+}
\newcommand*{\resetfancyhead}
{\fancyhead[L]{\textsf{\textsc{\textls[20]{\nouppercase\rightmark}}}}}
@@ -236,12 +327,9 @@
\pretocmd{\DescribeMacro}{\needspace{25pt}}{\relax}{\PrependingFailed}
-\setcounter{IndexColumns}{2}
-
-
\setlength{\columnsep}{20pt}
\setlength{\skip\footins}{25pt}
-\setlength{\overfullrule}{3pt}
+\setlength{\overfullrule}{0pt}
@@ -273,15 +361,19 @@
\newcommand*{\citenum}[1]{\@nameuse{b@#1}}
\makeatother
-\def\code#1{\texttt{#1}}
+\renewcommand*{\code}[1]{\texttt{#1}}
+
+\newcommand*{\codelineindicator}{\mbox{\small$\mathscr{l}$}}
\newrobustcmd*{\command}[1]{\mbox{\textbf{#1}}}
\newcommand*{\degree}{{}^\circ}
+\newcommand*{\detoxindex}[1]{\index{\detokenize{#1}}}
+
\newcommand*{\doublequotes}[1]{\guillemetright\kern-.03333em #1\guillemetleft}
-\newcommand*{\dumpmacro}[1]{\texttt{\detokenize\expandafter{#1}}}
+\newcommand*{\dumpmacro}[1]{\texttt{\detokenize\expandafter{#1}\unskip}}
\newcommand*{\filesystem}[1]{\mbox{\textit{#1\/}}}
@@ -295,12 +387,48 @@
\renewcommand*{\fps@table}{htbp}
\makeatother
+\apptocmd{\GlossaryParms}
+ {\RaggedRight\normalsize}
+ {\relax}
+ {\AppendingFailed}
+
+\let\oldhdclindex=\hdclindex
+\renewcommand*{\hdclindex}[2]
+ {\ifstrequal{#2}{code}
+ {\oldhdclindex{#1}{codeidx}}
+ {\oldhdclindex{#1}{#2}}}
+
+\let\oldhdpindex=\hdpindex
+\renewcommand*{\hdpindex}[2]{\textbf{\oldhdpindex{#1}{#2}}}
+
\newcommand*{\hollowrectangle}[2]
{\setlength{\fboxrule}{.5pt}%
\setlength{\fboxsep}{0pt}%
\framebox{\rule{#1}{0pt}\rule{0pt}{#2}}}
\newcommand*{\hollowsquare}[1]{\hollowrectangle{#1}{#1}}
+\apptocmd{\IndexParms}
+ {\RaggedRight\small}
+ {\relax}
+ {\AppendingFailed}
+
+\makeatletter
+\ExplSyntaxOn
+\apptocmd{\index@prologue}
+ {\legacy_if:nTF {codeline@index}
+ {We\space prefix\space all\space references\space
+ to\space code\space lines\space with~\singlequotes{\codelineindicator}.}
+ {}}
+ {\relax}
+ {\AppendingFailed}
+
+\newcommand*{\linenumberdecoration}
+ {\legacy_if:nTF {codeline@index}
+ {\codelineindicator}
+ {}}
+\ExplSyntaxOff
+\makeatother
+
\newcommand*{\logmacro}[1]
{\ifdef{#1}
{\message{^^JDump of macro \string#1 follows.^^J}
@@ -314,6 +442,24 @@
\begin{fullwidth}}
{\end{fullwidth}}
+
+\let\originalmulticols=\multicols
+\let\endoriginalmulticols=\endmulticols
+\RenewDocumentEnvironment{multicols}{m o o}
+ {\ifnum #1=1
+ \IfNoValueTF{#2}{\relax}{#2}%
+ \else
+ \IfNoValueTF{#2}
+ {\originalmulticols{#1}}
+ {\originalmulticols{#1}[#2]}%
+ \fi}
+ {\ifnum #1=1
+ \relax
+ \else
+ \endoriginalmulticols
+ \fi}
+
+
\newenvironment*{multilinecodeexample}
{\begin{quote}\tt
\def\indent{\mbox{}\hspace{25pt}}%
@@ -409,7 +555,7 @@
\newenvironment*{specialcodesection}[1]
{\Needspace{4\baselineskip}%
\begin{tcolorbox}[colback=white, colframe=\markercolor,
- bottomrule=0pt, leftrule=5pt, rightrule=0pt, toprule=0pt]
+ bottomrule=.5pt, leftrule=5pt, rightrule=.5pt, toprule=.5pt]
\sffamily
\begin{list}
{\specialcodesectionheading{#1}}
@@ -464,6 +610,12 @@
\newcommand*{\tikzlogo}{\textrm{Ti\textit{k\/}Z}}
+\newcommand*{\toccontinuesonnextpage}
+ {\addtocontents{toc}{\par
+ \bigskip
+ \hfill\textit{Table of Contents continued on next page.}\par
+ \clearpage}}
+
\newcommand*{\topstrut}{\rule{0pt}{1.3em}}
\newcommand*{\transpose}[1]{{#1}^{\text{T}}}
@@ -477,6 +629,12 @@
\copy0\kern\ttellipsisgap
\box0\kern\ttellipsisgap}
+\newcommand*{\unmarkedfntext}[1]
+ {{\def\thefootnote{}\footnote{#1}%
+ \addtocounter{footnote}{-1}}}
+
+\newcommand*{\userman}[1]{\textbf{\hyperpage{#1}}}
+
\newcommand*{\visualpar}{\textcolor{\markercolor}{\P}\linebreak[1]\enspace}
\newenvironment*{widecodeexample}
@@ -491,6 +649,15 @@
\hyphenation{% https://hyphenateit.com/en-us
+ neg-slant-context
+ neg-slant-environment
+ slant-context
+ slant-environment
+ synth-neg-slant
+ synth-slant
+ synth-slant-box
+ text-synth-slant
+ text-synth-upright-italic
}
@@ -515,12 +682,33 @@
%</driver>
%<*index-style>
actual '='
+delim_0 "\\nobreak\\enspace"
+delim_1 "\\nobreak\\enspace"
+delim_2 "\\nobreak\\enspace"
heading_prefix "\\pagebreak[3]\\smallskip\n\n{\\sffamily\\bfseries\\large "
heading_suffix "}\\nopagebreak\n"
headings_flag 1
level '>'
+line_max 65536
quote '!'
%</index-style>
+%<*changes-style>
+actual '='
+delim_0 "\\nobreak\\enspace"
+delim_1 "\\nobreak\\enspace"
+delim_2 "\\nobreak\\enspace"
+heading_prefix "\\pagebreak[3]\\smallskip\n\n{\\sffamily\\bfseries\\large "
+heading_suffix "}\\nopagebreak\n"
+headings_flag 0
+item_x1 "\\efill\n\\subitem "
+item_x2 "\\ "
+keyword "\\glossaryentry"
+level '>'
+line_max 65536
+postamble "\n\\end{theglossary}\n"
+preamble "\\begin{theglossary}\n \\makeatletter\\scan@allowedfalse"
+quote '!'
+%</changes-style>
% \fi
%
%
@@ -530,7 +718,7 @@ quote '!'
% \DoNotIndex{\edef,\else}
% \DoNotIndex{\endgroup,\endmicrotypecontext,\endnegslantenvironment,\endslantenvironment}
% \DoNotIndex{\expandafter,\ExplSyntaxOff,\ExplSyntaxOn}
-% \DoNotIndex{\fi,\font,\fontdimen,\fontspec,\fp}
+% \DoNotIndex{\fi,\font,\fontdimen,\fontspec,\fp,\fpeval}
% \DoNotIndex{\hbox,\hskip}
% \DoNotIndex{\ifcase,\ifcsdef,\ifdefined,\ifluatex,\ifmmode,\ifnum,\ifpdftex,\ifx,\itshape}
% \DoNotIndex{\kern}
@@ -540,16 +728,17 @@ quote '!'
% \DoNotIndex{\newbox,\newcommand,\NewDocumentCommand,\NewDocumentEnvironment,\newenvironment,\newrobustcmd}
% \DoNotIndex{\node,\nolinebreak}
% \DoNotIndex{\or}
-% \DoNotIndex{\PackageInfo,\PackageWarning,\ProcessOptionsX,\providecommand,\ProvidesPackage}
+% \DoNotIndex{\PackageError,\PackageInfo,\PackageWarning,\ProcessOptionsX,\providecommand,\ProvidesPackage}
% \DoNotIndex{\pdfoutput,\pdfrestore,\pdfsave,\pdfsetmatrix,\pstilt}
% \DoNotIndex{\relax,\RequirePackage}
-% \DoNotIndex{\sbox,\skip,\space}
+% \DoNotIndex{\sbox,\skip,\space,\string}
% \DoNotIndex{\tikz}
% \DoNotIndex{\upshape,\usebox}
% \DoNotIndex{\wd}
+% \DoNotIndex{\xdef}
%
%
-% \changes{v0.1}{2024-2-12}{Initial version}
+% \changes{v0.1}{2024-2-12}{Initial version.}
%
%
% \pagenumbering{roman}
@@ -636,39 +825,83 @@ end
% \footnotesize
% \noindent
% This package is copyright \textcopyright~2024 Ch.~L.~Spiel. It may be distributed and/or
-% modified under the conditions of the \LaTeX{} Project Public License \acronym{(LPPL)},
-% either version~1.3c of this license or --~at your option~-- any later version. This work
-% has the \acronym{LPPL} maintenance status \doublequotes{author-maintained}.\par
+% modified under the conditions of the \href{https://www.latex-project.org/lppl.txt}{\LaTeX{}
+% Project Public License} \acronym{(LPPL)}, either version~1.3c of this license or --~at your
+% option~-- any later version. This work has the \acronym{LPPL} maintenance status
+% \doublequotes{author-maintained}.\par
% \endgroup
%
%
% \clearpage
-% \thispagestyle{pagenumberonly}
-% \tableofcontents
+% \pagestyle{pagenumberonly}
%
-% \vspace{\fill}
-%
-% \begingroup
-% \footnotesize
-% \singlespacing
-% \noindent
-% The font samples~\singlequotes{fga} on the title page
-% were generated with the help of \MP{} using \doublequotes{\acronym{URW} Palladio~L}
-% in styles~\singlequotes{roman} and~\singlequotes{italic}.
-% The affine transformations were \code{slanted .2} for the slanted roman and
-% \code{slanted -.2} for the upright italics.\par
-% \endgroup
+% \unmarkedfntext{The font samples~\singlequotes{fga} on the title page were generated with the
+% help of \MP{} using \doublequotes{\acronym{URW} Palladio} in styles~\singlequotes{roman}
+% and~\singlequotes{italic}. The affine transformations were\enspace \code{slanted
+% .2}\enspace for the slanted roman and\enspace \code{slanted -.2}\enspace for the upright
+% italics.}
+% \tableofcontents
%
%
% \clearpage
-% \thispagestyle{pagenumberonly}
% \listoftables
% \bigskip
% \listoffigures
%
%
% \clearpage
+% \phantomsection
+% \addcontentsline{toc}{section}{\numberline{}Quick Reference}
+% \addtocontents{toc}{\medskip}
+% \section*{Quick Reference}
+%
+% Alphabetically sorted list of all user macros and environments defined by
+% package~\packagename{synthslant}. The list of all package options can be found on
+% \cpageref{sec:package-options} and \pageref{secend:package-options}. The
+% \hyperref[sec:index]{Index} on pages~\pageref{sec:index} to~\pageref{secend:index} may
+% provide some more detailed insights.
+%
+% \begin{list}{}{\itemindent=-\leftmargin \itemsep=4.5pt plus 2pt minus 1pt}
+% \NewDocumentCommand{\qritem}{m m O{}}
+% {\item
+% \hyperref[#1]{#2}#3\relax
+% \def\qrref{\cpageref{#1}}\par\ignorespaces}
+% \qritem{syn:negslantcontext}{\cs{negslantcontext}}
+% Name of the \packagename{microtype} context used when typesetting backward slanted
+% text~(\qrref)
+%
+% \qritem{syn:negslantenvironment}{\code{negslantenvironment}}
+% Wrapper around \cs{synthslantbox} when slanting backward with
+% \cs{textsynthuprightitalic}~(\qrref)
+%
+% \qritem{syn:slantcontext}{\cs{slantcontext}}
+% Name of the \packagename{microtype} context used when typesetting forward slanted
+% text~(\cpageref{syn:slantcontext})
+%
+% \qritem{syn:slantenvironment}{\code{slantenvironment}}
+% Wrapper around \cs{synthslantbox} when slanting forward with
+% \cs{textsynthslant}~(\qrref)
+%
+% \qritem{syn:synthnegslant}{\cs{synthnegslant}}
+% Slant value used by \cs{textsynthuprightitalic}~(\qrref)
+%
+% \qritem{syn:synthslantbox}{\cs{synthslantbox}}[\marg{slant}\marg{text}]
+% Slant \meta{text} (forward or backward) with \meta{slant}~(\qrref)
+%
+% \qritem{syn:synthslant}{\cs{synthslant}}
+% Slant value used by \cs{textsynthslant}~(\qrref)
+%
+% \qritem{syn:textsynthslant}{\cs{textsynthslant}}[\marg{text}]
+% Forward slant upright glyphs~(\qrref)
+%
+% \qritem{syn:textsynthuprightitalic}{\cs{textsynthuprightitalic}}[\marg{text}]
+% Backward slant italics or oblique glyphs~(\qrref)
+% \end{list}
+%
+%
+% \clearpage
% \pagenumbering{arabic}
+% \pagestyle{fancy}
% \section{Introduction}\label{sec:introduction}
%
% The \packagename{synthslant} package provides a translator (e.\,g.~\LaTeX, \pdfLaTeX, or
@@ -688,8 +921,8 @@ end
%
% \subsection{Appeal for Artificially Slanted Type}\label{sec:appleal-for-artificially-slanted}
%
-% Artificially slanted type have a bad reputation. Whenever there is an order to round up the
-% usual font suspects synthetically slanted, bolded\footnote{Package~\packagename{amsbsy}
+% Artificially slanted type have a lousy reputation. Whenever there is an order to round up
+% the usual font suspects synthetically slanted, bolded\footnote{Package~\packagename{amsbsy}
% defines a \doublequotes{Poor Man's Bold} macro~\cs{pmb} that works by
% \singlequotes{overprinting}. The authors of \packagename{amsbsy} recommend to prefer
% package~\packagename{bm} for bold mathematical symbols, though.}, and condensed type along
@@ -699,8 +932,9 @@ end
% condescension for synthetic bold and condensed variants. They spoil the glyphs' outline
% because they do not (and cannot) conserve the necessary proportions. For small-caps the
% problems are somewhat minor and I wonder how far one could get with an
-% \propername{OpenType}~font that supports a \code{size}~axis\index{font>axis>size=\code{size}}
-% as well as an \code{opsz}~axis\index{font>axis>opsz=\code{opsz}} in the necessary ranges to
+% \propername{OpenType}~font that supports a
+% \code{size}~axis\index{font>axis>size=\code{size}|userman} as well as an
+% \code{opsz}~axis\index{font>axis>opsz=\code{opsz}|userman} in the necessary ranges to
% construct convincing small-caps out of the multiple-master font.
%
% In my view artificial slanting keeps much of the font's character intact. In fact one
@@ -741,13 +975,14 @@ end
%
% Some fonts in current \LaTeX{} distributions offer slanted series right out of the box.
% \foreignphrase{Eureka!} In particular the oldest (and once upon a time the only) font family
-% shipping with \TeX, \href{https://tug.org/FontCatalogue/cmrfonts.html}{Computer Modern
-% Roman}\index{font>Computer Modern Roman} --~nowadays member of the \acronym{CM}-Super
-% family~-- is available in a deluge of almost thirty shapes. It covers not just slanted roman
-% or slanted smallcaps but also slanted typewriter and somewhat surprisingly upright italics.
-% Furthermore, the \LaTeXe{} font selection scheme provisions \singlequotes{\code{sl}} for
-% slanted shapes and \singlequotes{\code{ui}} for upright italics~\cite{fntguide}. The former
-% is accompanied by the macros~\cs{slshape} and~\cs{textsl}.
+% shipping with \TeX, \href{https://tug.org/FontCatalogue/cmrfonts.html}{\acronym{CM}
+% Roman}\index{font>typeface>CM Roman=\acronym{CM} Roman|userman} --~nowadays member of the
+% \acronym{CM}-Super family~-- is available in a deluge of almost thirty shapes. It covers not
+% just slanted roman or slanted smallcaps but also slanted typewriter and somewhat surprisingly
+% upright italics. Furthermore, the \LaTeXe{} font selection scheme provisions
+% \singlequotes{\code{sl}} for slanted shapes and \singlequotes{\code{ui}} for upright
+% italics~\cite{fntguide}. The former is accompanied by the macros~\cs{slshape}
+% and~\cs{textsl}.
%
% \begin{wraptable}{r}{.382\textwidth}
% \renewcommand*{\floatcaptionwidth}{\textwidth}
@@ -759,15 +994,15 @@ end
%
% \begin{tabular}{@{}l@{}}
% \toprule
-% Font Name \\
+% Font \\
% \midrule
-% Cairo\index{font>Cairo} \\
-% Commissioner\index{font>Commissioner} \\
-% Geologica\index{font>Geologica} \\
-% Gluten\index{font>Gluten} \\
-% Inter\index{font>Inter} \\
-% Recursive\index{font>Recursive} \\
-% Roboto Flex\index{font>Roboto Flex} \\
+% Cairo\index{font>typeface>Cairo|userman} \\
+% Commissioner\index{font>typeface>Commissioner|userman} \\
+% Geologica\index{font>typeface>Geologica|userman} \\
+% Gluten\index{font>typeface>Gluten|userman} \\
+% Inter\index{font>typeface>Inter|userman} \\
+% Recursive\index{font>typeface>Recursive|userman} \\
+% Roboto Flex\index{font>typeface>Roboto Flex|userman} \\
% \bottomrule
% \end{tabular}
% \end{wraptable}
@@ -781,8 +1016,9 @@ end
% \code{slnt}-axis} or fonts with an \href{https://v-fonts.com/tags/C5}{unusual variation} at
% \href{https://v-fonts.com/}{Variable Fonts}.} that offer a slant-axis\footnote{The
% registered axis is called \code{slnt} and it is not to be confused with the
-% \code{ital}~axis.}\index{font>axis>slant=\code{slant}}\index{font>axis>ital=\code{ital}} that
-% can be controlled with \packagename{fontspec}'s\index{package>\packagename{fontspec}}
+% \code{ital}~axis.}\index{font>axis>slant=\code{slant}|userman}\index{font>axis>ital=\code{ital}|userman}
+% that can be controlled with
+% \packagename{fontspec}'s\index{package>fontspec=\packagename{fontspec}|userman}
% \code{Slant}\footnote{Since \packagename{fontspec} version~2.9a as of 2024/2/13.}~key and
% \cref{tab:slanted-series-fonts} for a rather incomplete list of fonts that are shipped with
% slanted shapes. For these fonts \packagename{synthslant} is largely superfluous unless
@@ -801,35 +1037,35 @@ end
%
% \begin{tabular}[t]{@{}p{12em}@{}}
% \toprule
-% Font Name \\
+% Font \\
% \midrule
-% Arvo\index{font>Arvo} \\
-% Computer Modern Roman\index{font>Computer Modern Roman} \\
-% Domitian\index{font>Domitian} \\
-% Droid Serif\index{font>Droid Serif} \\
-% Erewhon\index{font>Erewhon} \\
-% Extended Charter\index{font>Extended Charter} \\
-% \acronym{GFS} Artemisia\index{font>GFS Artemisia=\acronym{GFS} Artemisia} \\
-% \acronym{GFS} Bodoni\index{font>GFS Bodoni=\acronym{GFS} Bodoni} \\
-% \acronym{GFS} Didot\index{font>GFSDidot=\acronym{GFS} Didot} \\
+% Arvo\index{font>typeface>Arvo|userman} \\
+% \acronym{CM} Roman\index{font>typeface>CM Roman=\acronym{CM} Roman|userman} \\
+% Domitian\index{font>typeface>Domitian|userman} \\
+% Droid Serif\index{font>typeface>Droid Serif|userman} \\
+% Erewhon\index{font>typeface>Erewhon|userman} \\
+% Extended Charter\index{font>typeface>Extended Charter|userman} \\
+% \acronym{GFS} Artemisia\index{font>typeface>GFS Artemisia=\acronym{GFS} Artemisia|userman} \\
+% \acronym{GFS} Bodoni\index{font>typeface>GFS Bodoni=\acronym{GFS} Bodoni|userman} \\
+% \acronym{GFS} Didot\index{font>typeface>GFS Didot=\acronym{GFS} Didot|userman} \\
% \\
% \bottomrule
% \end{tabular}
% \qquad
% \begin{tabular}[t]{@{}p{12em}@{}}
% \toprule
-% Font Name \\
+% Font \\
% \midrule
-% Cabin\index{font>Cabin} \\
-% Clear Sans\index{font>Clear Sans} \\
-% Cuprum\index{font>Cuprum} \\
-% Fira Sans\index{font>Fira Sans} \\
-% Gandhi Sans\index{font>Gandhi Sans} \\
-% \acronym{Inria} Sans\index{font>Inria Sans=\acronym{Inria} Sans} \\
-% Lato\index{font>Lato}\itshapemark \\
-% Montserrat\index{font>Montserrat} \\
-% \acronym{PT} Sans\index{font>PT Sans=\acronym{PT} Sans} \\
-% Source Sans Pro\index{font>Source Sans Pro} \\
+% Cabin\index{font>typeface>Cabin|userman} \\
+% Clear Sans\index{font>typeface>Clear Sans|userman} \\
+% Cuprum\index{font>typeface>Cuprum|userman} \\
+% Fira Sans\index{font>typeface>Fira Sans|userman} \\
+% Gandhi Sans\index{font>typeface>Gandhi Sans|userman} \\
+% \acronym{Inria} Sans\index{font>typeface>Inria Sans=\acronym{Inria} Sans|userman} \\
+% Lato\itshapemark\index{font>typeface>Lato|userman} \\
+% Montserrat\index{font>typeface>Montserrat|userman} \\
+% \acronym{PT} Sans\index{font>typeface>PT Sans=\acronym{PT} Sans|userman} \\
+% Source Sans Pro\index{font>typeface>Source Sans Pro|userman} \\
% \bottomrule
% \end{tabular}
%
@@ -852,15 +1088,16 @@ end
% \pdfTeX~version~1.40.0~\cite{schroeder:2007}.} With the help of the latter affine
% transformations of arbitrary content can be coded directly by setting the transformation
% matrix. A slight variant of his code is used in this package for the \acronym{PDF}- and
-% \packagename{l3draw}\index{package>\packagename{l3draw}}-slant~engines. The implementations
-% for \pstrickslogo, \tikzlogo{}, and \packagename{fontspec}\packagename{fontspec} are trivial
-% as they build upon shear~functions supplied by the respective packages.
+% \packagename{l3draw}\index{package>l3draw=\packagename{l3draw}|userman}-slant~engines. The
+% implementations for \pstrickslogo, \tikzlogo{}, and
+% \packagename{fontspec}\packagename{fontspec} are trivial as they build upon shear~functions
+% supplied by the respective packages.
%
%
% \subsection{Shear Transformation, Slant, and Angle}\label{sec:shear-transformation}
%
-% \index{slant>operation}
-% \index{shear>transformation}
+% \index{slant>operation|userman}
+% \index{shear>transformation|userman}
% Mathematically the slant operation is a shear transformation, which can be expressed with the
% equation
% \begin{equation}\label{equ:shear-transformation}
@@ -1018,7 +1255,7 @@ end
% For \(\alpha = 0\) the shear matrix becomes the identity matrix. Throughout of
% \packagename{synthslant} we work with the \meta{slant} which is \(\sin \alpha\) in
% \cref{equ:shear-transformation} and avoid converting back and forth to the
-% \index{shear>angle}shear angle~\(\alpha\).\footnote{At least one slant engine currently
+% \index{shear>angle|userman}shear angle~\(\alpha\).\footnote{At least one slant engine currently
% requires such a conversion, namely~\pstrickslogo. The math is hidden from the user, though.}
% Some values for orientation: \mbox{\(\sin 5.74\degree \approx .1\)}, \mbox{\(\sin 11.5\degree
% \approx .2\)}, and \mbox{\(\sin 17.5\degree \approx .3\)}.\footnote{For small
@@ -1038,8 +1275,8 @@ end
% \begin{enumerate}
% \item\label{it:no-italics}
% Generate a slanted serif in the unfortunate situation when a serif font comes without
-% italics such as \singlequotes{\acronym{URW}~Antiqua}\index{font>URW Antiqua=\acronym{URW}
-% Antiqua}.
+% italics such as
+% \singlequotes{\acronym{URW}~Antiqua}\index{font>typeface>URW Antiqua=\acronym{URW} Antiqua|userman}.
%
% Here, the user is relatively free to choose a \meta{slant}, for there are no italics whose
% angle must be matched. \packagename{Synthslant}'s default of~.2 should be a good starting
@@ -1053,8 +1290,8 @@ end
%
% \item\label{it:correct-italics-angle}
% An italics shape that has an excessive slant angle, as
-% e.\,g.~\singlequotes{Libre~Caslon}\index{font>Libre Caslon} may be corrected, i.\,e.,
-% partially un-slanted.
+% e.\,g.~\singlequotes{Libre~Caslon}\index{font>typeface>Libre Caslon|userman} may be corrected,
+% i.\,e., partially un-slanted.
%
% In this case, and generally if a font as a whole needs to be corrected, an alternative
% approach like the one sketched in \cref{sec:alternative} on \cpageref{sec:alternative} may
@@ -1062,16 +1299,16 @@ end
%
% \item\label{it:generate-sole-obliques}
% Generate an oblique sans-serif if a sans-serif font comes without an oblique shape as,
-% e.\,g., \singlequotes{\acronym{URW}~Grotesk}.\index{font>URW Grotesk=\acronym{URW} Grotesk}
+% e.\,g., \singlequotes{\acronym{URW}~Grotesk}.\index{font>typeface>URW Grotesk=\acronym{URW} Grotesk|userman}
%
% \item\label{it:generate-extra-obliques}
% Supply a slanted sans-serif shape for sans-serif fonts with designed, this is \emph{true}
-% obliques as e.\,g.~\singlequotes{Open Sans}.\index{font>Open Sans}
+% obliques as e.\,g.~\singlequotes{Open Sans}.\index{font>typeface>Open Sans|userman}
%
% \item\label{it:slant-typewriter}
% Fixed-width --~also called \singlequotes{typewriter} or \singlequotes{teletype}~-- fonts
-% without obliques (Yes, I am looking at you, Inconsolata!)\index{font>Inconsolata} finally
-% get an oblique shape.
+% without obliques (Yes, I am looking at you, Inconsolata!)\index{font>typeface>Inconsolata|userman}
+% finally get an oblique shape.
%
% \item\label{it:slanted-small-caps}
% Small caps without accompanying italics can be slanted, too.
@@ -1109,7 +1346,9 @@ end
%
% \begingroup
% \newcommand*{\indexpackageoption}[1]
-% {\index{package option>#1=\code{#1}}\index{#1=\code{#1}~(option)}\ignorespaces}
+% {\detoxindex{package option>#1=\code{#1}|userman}%
+% \detoxindex{#1=\code{#1}~(option)|userman}%
+% \ignorespaces}
% \begin{description}
% [before={\let\oldmakelabel=\makelabel
% \renewcommand{\makelabel}[1]
@@ -1130,13 +1369,14 @@ end
%
% \item[|fontspec|]\label{item:fontspec}
% \indexpackageoption{fontspec}
-% Use \packagename{fontspec}\index{package>\packagename{fontspec}} as slanting
-% back-end.\footnote{Requires \filesystem{fontspec.sty.}}
+% Use \packagename{fontspec}\index{package>fontspec=\packagename{fontspec}|userman} as
+% slanting back-end.\footnote{Requires \filesystem{fontspec.sty.}}
%
% \item[|l3draw|]\label{item:l3draw}
% \indexpackageoption{l3draw}
-% Select the \singlequotes{draw} layer\index{package>\packagename{l3draw}} of \LaTeXIII{} as
-% base for the slanting engine.\footnote{This option requires \filesystem{l3draw.sty.}}
+% Select the \singlequotes{draw} layer\index{package>l3draw=\packagename{l3draw}|userman} of
+% \LaTeXIII{} as base for the slanting engine.\footnote{This option requires
+% \filesystem{l3draw.sty.}}
%
% \begin{caution}
% This engine is experimental and the \singlequotes{draw} layer of \LaTeXIII{} itself is
@@ -1148,7 +1388,7 @@ end
% \indexpackageoption{negslant}
% Set the default value for \hyperref[syn:synthnegslant]{\cs{synthnegslant}} \emph{only.}
% The argument \meta{slant-expr} is a floating-point expression. Note that for this option
-% \meta{slant-expr} must evaluate to a non-positive value.
+% \meta{slant-expr} must evaluate to a nonpositive value.
%
% \item[|PDF|, |pdf|]\label{item:pdf}
% \indexpackageoption{pdf}
@@ -1159,14 +1399,14 @@ end
% \indexpackageoption{posslant}
% Set the default value for \hyperref[syn:synthslant]{\cs{synthslant}} \emph{only.} The
% argument \meta{slant-expr} is a floating-point expression. Note that for this option
-% \meta{slant-expr} must evaluate to a non-negative value.
+% \meta{slant-expr} must evaluate to a nonnegative value.
%
% \item[|PS|, |ps|]\label{item:postscript}
-% \index{ps}
-% Use \pstrickslogo\index{package>\packagename{pstricks}} to delegate slanting to the
-% PostScript\index{PostScript} interpreter. Obviously requires \pstrickslogo\footnote{The
-% package actually required is \filesystem{pst-3d.sty.}} and \acronym{DVI}-to-PostScript
-% translation.
+% \index{ps|userman}
+% Use \pstrickslogo\index{package>pstricks=\packagename{pstricks}|userman} to delegate
+% slanting to the PostScript\index{PostScript|userman} interpreter. Obviously requires
+% \pstrickslogo\footnote{The package actually required is \filesystem{pst-3d.sty.}} and
+% \acronym{DVI}-to-PostScript translation.
%
% \begin{caution}
% This engine is still experimental and produces low-quality output! See
@@ -1176,7 +1416,7 @@ end
% \item[|slant=|\meta{slant-expr}]\label{item:slant}
% \indexpackageoption{slant}
% Set the default values for both \hyperref[syn:synthslant]{\cs{synthslant}} and
-% \hyperref[syn:synthnegslant]{\cs{synthnegslant}}, this is, behave as if the two package
+% \hyperref[syn:synthnegslant]{\cs{synthnegslant}}, this is, act as if the two package
% options \(\code{posslant} = \meta{slant-expr}\) and \(\code{negslant} =
% -(\meta{slant-expr})\) have been given. The argument \meta{slant-expr} is a floating-point
% expression.
@@ -1185,8 +1425,8 @@ end
%
% \item[|TikZ|, |tikz|]\label{item:tikz}
% \indexpackageoption{tikz}
-% Use \packagename{TikZ}\index{package>\packagename{TikZ}} for slanting.\footnote{Requires
-% \filesystem{tikz.sty.}}
+% Use \packagename{TikZ}\index{package>tikz=\packagename{tikz}|userman} for
+% slanting.\footnote{Requires \filesystem{tikz.sty.}}
%
% \begin{caution}
% This engine is still experimental and produces low-quality output! See
@@ -1199,7 +1439,7 @@ end
% floating-point \emph{expressions} as their arguments not just plain floating-point literals.
% See Ref.~\citenum{latex3-interfaces}, Ch.~29, \doublequotes{The \textsf{l3fp}~module~--
% Floating points} for a description of the floating-point expression syntax and the available
-% functions.
+% functions.\label{secend:package-options}
%
%
% \clearpage
@@ -1218,7 +1458,7 @@ end
%
% \DescribeMacro{\synthslant}
% Control the slant applied by \hyperref[syn:textsynthslant]{\cs{textsynthslant}}.
-% This value is non-negative.
+% This value is nonnegative.
%
% \begin{synopsis}\label{syn:synthslant}
% \cs{synthslant}
@@ -1248,43 +1488,43 @@ end
% \begin{tabfigures}
% \begin{tabular}[t]{@{}p{9.5em}l@{}}
% \toprule
-% Font Name & Slant \\
+% Font & Slant \\
% \midrule
-% \acronym{ADF} Accanthis\index{font>ADF Accanthis=\acronym{ADF} Accanthis} & .26 \\
-% \acronym{ADF} Baskervald\index{font>ADF Baskervald=\acronym{ADF} Baskervald} & .32 \\
-% \acronym{ADF} Berenis\index{font>ADF Berenis=\acronym{ADF} Berenis} & .2 \\
-% \acronym{ADF} Venturis\index{font>ADF Venturis=\acronym{ADF} Venturis} & .2 \\
-% Alegreya\index{font>Alegreya} & .2 \\
-% Arvo\index{font>Arvo} & .2 \\
-% BaskervilleF\index{font>BaskervilleF} & .2 \\
-% Bera Serif\index{font>Bera Serif} & .2 \\
-% Bitter\index{font>Bitter} & .16 \\
-% Caladea\index{font>Caladea} & .14 \\
-% Clara\index{font>Clara} & .24 \\
-% Cochineal\index{font>Cochineal} & .2 \\
-% Coelacanth\index{font>Coelacanth} & .2 \\
-% Crimson Pro\index{font>Crimson Pro} & .2 \\
-% Crimson Text\index{font>Crimson Text} & .2 \\
+% \acronym{ADF} Accanthis\index{font>typeface>ADF Accanthis=\acronym{ADF} Accanthis|userman} & .26 \\
+% \acronym{ADF} Baskervald\index{font>typeface>ADF Baskervald=\acronym{ADF} Baskervald|userman} & .32 \\
+% \acronym{ADF} Berenis\index{font>typeface>ADF Berenis=\acronym{ADF} Berenis|userman} & .2 \\
+% \acronym{ADF} Venturis\index{font>typeface>ADF Venturis=\acronym{ADF} Venturis|userman} & .2 \\
+% Alegreya\index{font>typeface>Alegreya|userman} & .2 \\
+% Arvo\index{font>typeface>Arvo|userman} & .2 \\
+% BaskervilleF\index{font>typeface>BaskervilleF|userman} & .2 \\
+% Bera Serif\index{font>typeface>Bera Serif|userman} & .2 \\
+% Bitter\index{font>typeface>Bitter|userman} & .16 \\
+% Caladea\index{font>typeface>Caladea|userman} & .14 \\
+% Clara\index{font>typeface>Clara|userman} & .24 \\
+% Cochineal\index{font>typeface>Cochineal|userman} & .2 \\
+% Coelacanth\index{font>typeface>Coelacanth|userman} & .2 \\
+% Crimson Pro\index{font>typeface>Crimson Pro|userman} & .2 \\
+% Crimson Text\index{font>typeface>Crimson Text|userman} & .2 \\
% \bottomrule
% \end{tabular}%
% \qquad
% \begin{tabular}[t]{@{}p{9.5em}l@{}}
% \toprule
-% Font Name & Slant \\
+% Font & Slant \\
% \midrule
-% Day Roman\index{font>Day Roman} & .2 \\
-% \acronym{EB} Garamond\index{font>EB Garamond=\acronym{EB} Garamond} & .3 \\
-% etbb\index{font>etbb} & .2 \\
-% fbb\index{font>fbb} & .2 \\
-% Garamond Expert\index{font>Garamond Expert} & .2 \\
-% Gandhi Serif\index{font>Gandhi Serif} & .2 \\
-% Gentium\index{font>Gentium} & .2 \\
-% Ibarra Real Nova\index{font>Ibarra Real Nova} & .2 \\
-% \acronym{IBM} Plex Serif\index{font>IBM Plex Serif=\acronym{IBM} Plex Serif} & .24 \\
-% \acronym{Inria} Serif\index{font>Inria Serif=\acronym{Inria} Serif} & .2 \\
-% Libertinus Serif\index{font>Libertinus Serif} & .2 \\
-% Libre Baskerville\index{font>Libre Baskerville} & .3 \\
-% Libre Caslon\index{font>Libre Caslon} & .38 \\
+% Day Roman\index{font>typeface>Day Roman|userman} & .2 \\
+% \acronym{EB} Garamond\index{font>typeface>EB Garamond=\acronym{EB} Garamond|userman} & .3 \\
+% etbb\index{font>typeface>etbb|userman} & .2 \\
+% fbb\index{font>typeface>fbb|userman} & .2 \\
+% Garamond Expert\index{font>typeface>Garamond Expert|userman} & .2 \\
+% Gandhi Serif\index{font>typeface>Gandhi Serif|userman} & .2 \\
+% Gentium\index{font>typeface>Gentium|userman} & .2 \\
+% Ibarra Real Nova\index{font>typeface>Ibarra Real Nova|userman} & .2 \\
+% \acronym{IBM} Plex Serif\index{font>typeface>IBM Plex Serif=\acronym{IBM} Plex Serif|userman} & .24 \\
+% \acronym{Inria} Serif\index{font>typeface>Inria Serif=\acronym{Inria} Serif|userman} & .2 \\
+% Libertinus Serif\index{font>typeface>Libertinus Serif|userman} & .2 \\
+% Libre Baskerville\index{font>typeface>Libre Baskerville|userman} & .3 \\
+% Libre Caslon\index{font>typeface>Libre Caslon|userman} & .38 \\
% & \\
% & \\
% \bottomrule
@@ -1292,22 +1532,22 @@ end
% \qquad
% \begin{tabular}[t]{@{}p{9.5em}l@{}}
% \toprule
-% Font Name & Slant \\
+% Font & Slant \\
% \midrule
-% Merriweather\index{font>Merriweather} & .14 \\
-% MLModern\index{font>MLModern} & .23 \\
-% Noto Serif\index{font>Noto Serif} & .22 \\
-% \acronym{PT} Serif\index{font>PT Serif=\acronym{PT} Serif} & .2 \\
-% Roboto Slab\index{font>Roboto Slab} & .2 \\
-% Quattrocento\index{font>Quattrocento} & .2 \\
-% Source Serif Pro\index{font>Source Serif Pro} & .18 \\
-% Spectral\index{font>Spectral} & .18 \\
-% \acronym{STIX}\index{font>STIX=\acronym{STIX}} & .2 \\
-% \TeX{} Gyre Pagella\index{font>TeX Gyre Pagella=\TeX{} Gyre Pagella} & .16 \\
-% \acronym{TX} Fonts Serif\index{font>TX Fonts Serif=\acronym{TX} Fonts Serif} & .2 \\
-% \acronym{URW} Antiqua\index{font>URW Antiqua=\acronym{URW} Antiqua} & .2 \\
-% \acronym{URW} Nimbus Roman\index{font>URW Nimbus Roman=\acronym{URW} Nimbus Roman} & .2 \\
-% Utopia\index{font>Utopia} & .2 \\
+% Merriweather\index{font>typeface>Merriweather|userman} & .14 \\
+% \acronym{ML} Modern\index{font>typeface>ML Modern=\acronym{ML} Modern|userman} & .23 \\
+% Noto Serif\index{font>typeface>Noto Serif|userman} & .22 \\
+% \acronym{PT} Serif\index{font>typeface>PT Serif=\acronym{PT} Serif|userman} & .2 \\
+% Roboto Slab\index{font>typeface>Roboto Slab|userman} & .2 \\
+% Quattrocento\index{font>typeface>Quattrocento|userman} & .2 \\
+% Source Serif Pro\index{font>typeface>Source Serif Pro|userman} & .18 \\
+% Spectral\index{font>typeface>Spectral|userman} & .18 \\
+% \acronym{STIX}\index{font>typeface>STIX=\acronym{STIX}|userman} & .2 \\
+% \TeX{} Gyre Pagella\index{font>typeface>TeX Gyre Pagella=\TeX{} Gyre Pagella|userman} & .16 \\
+% \acronym{TX} Fonts Serif\index{font>typeface>TX Fonts Serif=\acronym{TX} Fonts Serif|userman} & .2 \\
+% \acronym{URW} Antiqua\index{font>typeface>URW Antiqua=\acronym{URW} Antiqua|userman} & .2 \\
+% \acronym{URW} Nimbus Roman\index{font>typeface>URW Nimbus Roman=\acronym{URW} Nimbus Roman|userman} & .2 \\
+% Utopia\index{font>typeface>Utopia|userman} & .2 \\
% & \\
% \bottomrule
% \end{tabular}
@@ -1319,7 +1559,7 @@ end
% \DescribeMacro{\synthnegslant}
% Control the slant applied by
% \hyperref[syn:textsynthuprightitalic]{\cs{textsynthuprightitalic}}. This value is
-% non-positive.
+% nonpositive.
%
% \begin{synopsis}\label{syn:synthnegslant}
% \cs{synthnegslant}
@@ -1332,9 +1572,9 @@ end
% more flexible and powerful interface, see~\cref{sec:advanced-interface}.
%
% \begin{note}
-% The following restrictions and workarounds to get line-breaking and automatic hyphenation
-% working again do \emph{not} apply to the
-% \packagename{fontspec}\index{package>\packagename{fontspec}} back-end.
+% The following restrictions and workarounds to get line-breaking and \TeX's automatic
+% hyphenation working again do \emph{not} apply to the
+% \packagename{fontspec}\index{package>fontspec=\packagename{fontspec}|userman} back-end.
% \end{note}
%
% \noindent
@@ -1344,7 +1584,7 @@ end
% provisions to re-enable at least some breakability.
%
% \begin{enumerate}
-% \item Spaces introduce breakpoint,\index{breakpoint at space} e.\,g.
+% \item Spaces introduce breakpoint,\index{breakpoint at space|userman} e.\,g.
% \begin{codeexample}
% \cs{textsynthslant}\{topological dual space\}
% \end{codeexample}
@@ -1352,8 +1592,8 @@ end
% second word (producing another horizontal box). \TeX{} sees two (unbreakable) boxes and a
% discardable space when it comes to linebreaking.
%
-% \item Discretionary hyphens\index{discretionary hyphen} in the form of \singlequotes{\cs{-}}
-% get propagated. So, we could improve on our above example by saying
+% \item Discretionary hyphens\index{discretionary hyphen|userman} in the form of
+% \singlequotes{\cs{-}} get propagated. So, we could improve on our above example by saying
% \begin{codeexample}
% \cs{textsynthslant}\{topo\cs{-}log\cs{-}i\cs{-}cal dual space\}
% \end{codeexample}
@@ -1374,7 +1614,7 @@ end
%
% In horizontal mode switch to an upright shape, slant \meta{text} with the slant value stored
% in \hyperref[syn:synthslant]{\cs{synthslant}} and apply \doublequotes{slant
-% correction}\index{slant>correction} --~the equivalent of italics correction~-- at the
+% correction}\index{slant>correction|userman} --~the equivalent of italics correction~-- at the
% right-hand side of~\meta{text}.
%
% In math mode just slant \meta{text} with the slant value stored in
@@ -1391,7 +1631,7 @@ end
%
% \noindent
% where we show the font modification in conjunction with the
-% \packagename{babel}~macro\index{package>\packagename{babel}}
+% \packagename{babel}~macro\index{package>babel=\packagename{babel}|userman}
% \cs{foreignlanguage}~\cite{package:babel}.~\visualpar
%
% In math-mode you cannot have enough fonts, symbols, and most of the gizmos over there! I
@@ -1485,7 +1725,7 @@ end
% \end{synopsis}
%
% Switch to an upright font shape and --~if
-% package~\packagename{microtype}~\cite{package:microtype}\index{package>\packagename{microtype}}
+% package~\packagename{microtype}~\cite{package:microtype}\index{package>microtype=\packagename{microtype}|userman}
% has been loaded~-- enter the Microtype-context defined by
% macro~\hyperref[syn:slantcontext]{\cs{slantcontext}}. At the end add some slant correction,
% which is the equivalent of italics correction.
@@ -1511,7 +1751,7 @@ end
% Microtype-context defined by macro~\hyperref[syn:negslantcontext]{\cs{negslantcontext}}.
%
% \DescribeMacro{\slantcontext}
-% Microtype context used when typesetting slanted text.
+% Name of the \packagename{microtype} context used when typesetting slanted text.
%
% \begin{synopsis}\label{syn:slantcontext}
% \cs{slantcontext}
@@ -1530,7 +1770,7 @@ end
% \end{note}
%
% \DescribeMacro{\negslantcontext}
-% Microtype context used when typesetting un-slanted text.
+% Name of the \packagename{microtype} context used when typesetting backward slanted text.
%
% \begin{synopsis}\label{syn:negslantcontext}
% \cs{negslantcontext}
@@ -1667,13 +1907,13 @@ end
% and --~after recompiling with the appropriate \LaTeX-engine~-- used to examine the details of
% the slant operations.
%
-% Page~2, Sec.~3.1, \singlequotes{Copy}, shows wild mixes of different font shapes, native al
-% well as synthesized ones. Here, the slanted glyphs as well as the upright italics should
-% blend well with the native italics/obliques and the normal font, respectively.
+% Page~2, Sec.~3.1, \singlequotes{Copy}, shows wild mixes of different font shapes, native and
+% synthesized ones. Here, the slanted glyphs as well as the upright italics should blend well
+% with the native italics/obliques and with the normal font, respectively.
%
-% Page~3, Sec.~3.2 and following sub-sections, examines the coupling of
-% \packagename{synthslant} with the \TeX-system and some of its extensions. If a slant engine
-% malfunctions, it will become evident on this page.
+% Page~3, Sec.~3.2 and following sub-sections, examine the coupling of \packagename{synthslant}
+% with the \TeX-system and some of its extensions. If a slant engine malfunctions, it will
+% become evident on this page.
%
%
% \clearpage
@@ -1687,7 +1927,7 @@ end
% \packagename{Syntslant}~manipulations may not survive
% (pre-)\discretionary{}{}{}processing by \MP.
%
-% \item[\packagename{l3draw} engine.]\index{package>\packagename{l3draw}}\mbox{}
+% \item[\packagename{l3draw} engine.]\index{package>l3draw=\packagename{l3draw}|userman}\mbox{}
% \begin{itemize}
% \item Depending of the shear direction the \packagename{l3draw} engine may generate some
% extra positive or negative space at the ends of the text.
@@ -1697,10 +1937,10 @@ end
% \item Markedly slower than the \acronym{PDF}-implementation!
% \end{itemize}
%
-% \item[\pstrickslogo{} engine.]\index{package>\packagename{pstricks}}
+% \item[\pstrickslogo{} engine.]\index{package>pstricks=\packagename{pstricks}|userman}
% The \pstrickslogo{} engine produces some extra space at the ends of the text.
%
-% \item[\tikzlogo{} engine.]\index{package>\packagename{tikz}}
+% \item[\tikzlogo{} engine.]\index{package>tikz=\packagename{tikz}|userman}
% The \tikzlogo{} engine produces some extra space at the ends of the text.
% \end{description}
%
@@ -1753,7 +1993,7 @@ end
%
% I want to elaborate the example given in \cref{sec:usage-ideas},
% \cref{it:correct-italics-angle} and generate less-angled italics for
-% Libre~Caslon.\index{font>Libre Caslon} Here is a suitable map line taken from
+% Libre~Caslon.\index{font>typeface>Libre Caslon|userman} Here is a suitable map line taken from
% \filesystem{pdftex.map} on my system:
%
% \begin{multilinecodeexample}
@@ -1824,7 +2064,8 @@ end
% \end{example}
%
%
-% \subsection{Combining \LaTeX{} and \command{dvipdfmx}}\label{sec:alternative-latex}
+% \subsection{Combining \LaTeX{} and
+% \texorpdfstring{\command{dvipdfmx}}{dvipdfmx}}\label{sec:alternative-latex}
%
% The alternative when using \LaTeX{} is similar the one elaborated in the previous section.
% The font mapline gets modified by \cs{special} primitive
@@ -1872,14 +2113,20 @@ end
%
% \MaybeStop{
% \clearpage
-% \phantomsection
-% \resetfancyhead
-% \addcontentsline{toc}{section}{Change History}
-% \PrintChanges
+% \begingroup
+% \setcounter{GlossaryColumns}{1}
+% \phantomsection
+% \label{sec:changes}
+% \resetfancyhead
+% \addtocontents{toc}{\bigskip}
+% \addcontentsline{toc}{section}{\numberline{}Change History}
+% \PrintChanges
+% \endgroup
%
% \clearpage
% \phantomsection
-% \addcontentsline{toc}{section}{References}
+% \addtocontents{toc}{\medskip}
+% \addcontentsline{toc}{section}{\numberline{}References}
% \begin{RaggedRight}
% \begin{thebibliography}{88}
% \bibitem{package:relsize}
@@ -1986,20 +2233,31 @@ end
%
%
% \clearpage
-% \begin{RaggedRight}
+% \begingroup
% \setcounter{IndexColumns}{2}
% \setlength{\columnsep}{30pt}
-% \label{sec:index}
% \phantomsection
-% \addcontentsline{toc}{section}{Index}
+% \label{sec:index}
+% \addtocontents{toc}{\medskip}
+% \addcontentsline{toc}{section}{\numberline{}Index}
+% \raggedcolumns
+% \def\codeidx##1{\linenumberdecoration\textbf{##1}}
+% \def\main##1{\linenumberdecoration\underbar{\textbf{##1}}}
+% \def\usage##1{\textit{\textbf{##1}}}
% \PrintIndex
-% \end{RaggedRight}
+% \label{secend:index}
+% \endgroup
% }
%
%
% \clearpage
+% \toccontinuesonnextpage
% \section{Package Code}\label{sec:package-code}
-% \addtocontents{toc}{\begingroup\small}
+% \addtocontents{toc}{\protect\begin{list}{}{\leftmargin=\subsectiontocindent\parsep=0pt}}
+% \addtocontents{toc}{\protect\item}
+% \addtocontents{toc}{\RaggedRight}
+% \addtocontents{toc}{\small}
+% \addtocontents{toc}{\tocsquashedsubsections}
% \addtocontents{toc}{\protect\begin{multicols}{2}}
% \addtocontents{toc}{\protect\raggedcolumns}
%
@@ -2008,12 +2266,15 @@ end
% and explain its implementation details.
%
%
+% \changes{v0.1a}{2024-6-2}{Add missing dependency on \packagename{etoolbox}.
+% Fix suggested by \code{mbertucci47}.}
% \begin{macrocode}
%<*package>
\NeedsTeXFormat{LaTeX2e}[2005/12/01]
\ProvidesPackage{synthslant}
- [2024/05/07 v0.1 Synthetically Slant glyphs]
+ [2024/07/08 v0.1a Synthetically Slant glyphs]
+\RequirePackage{etoolbox}
\RequirePackage{iftex}
\RequirePackage{xkeyval}
@@ -2094,12 +2355,16 @@ end
% \begin{macrocode}
\ExplSyntaxOn
\fp_compare:nNnTF {\synthslant} < {.0}
- {\PackageError{synthslant}{\string\synthslant\space <\space 0}
- {Pass\space a\space value\space that\space is\space non-negative.}}
+ {\PackageError{synthslant}
+ {\string\synthslant\space <\space 0}
+ {Pass\space a\space value\space that\space
+ is\space nonnegative.}}
{}
\fp_compare:nNnTF {\synthnegslant} > {.0}
- {\PackageError{synthslant}{\string\synthnegslant\space >\space 0}
- {Pass\space a\space value\space that\space is\space non-positive.}}
+ {\PackageError{synthslant}
+ {\string\synthnegslant\space >\space 0}
+ {Pass\space a\space value\space that\space
+ is\space nonpositive.}}
{}
\ExplSyntaxOff
@@ -2176,7 +2441,7 @@ end
% \end{macro}
%
%
-% \subsubsection{\acronym{PDF} Slant Engine}
+% \subsubsection{\texorpdfstring{\acronym{PDF}}{PDF} Slant Engine}
%
% The \acronym{PDF}-engine works well and it is the best tested alternative.
%
@@ -2251,13 +2516,15 @@ end
% \begin{macrocode}
\fp_compare:nNnTF {#1} >= {.0}
{
- \box_set_wd:Nn \l_tmpa_box {\l_tmpa_dim - #1\l_tmpb_dim}
+ \box_set_wd:Nn \l_tmpa_box
+ {\l_tmpa_dim - #1\l_tmpb_dim}
}
{
\draw_suspend_begin:
\kern#1\l_tmpb_dim
\draw_suspend_end:
- \box_set_wd:Nn \l_tmpa_box {\l_tmpa_dim + #1\l_tmpb_dim}
+ \box_set_wd:Nn \l_tmpa_box
+ {\l_tmpa_dim + #1\l_tmpb_dim}
}
% \end{macrocode}
%
@@ -2348,7 +2615,8 @@ end
% \begin{macrocode}
\newcommand*{\synthslantbox@fontspect@shear@box}[2]{
\begingroup
- \expandafter\fontspec[FakeSlant = #1]{\l_fontspec_family_tl}
+ \expandafter
+ \fontspec[FakeSlant=#1]{\l_fontspec_family_tl}
#2
\endgroup
}
@@ -2473,8 +2741,12 @@ end
% \begin{macrocode}
\ifnum\synthslant@engine=4% fontspec
\newrobustcmd*{\synthslantbox}[2]{%
- \edef\synthslant@slant@value{#1}% definition for compatibility of both branches
- \synthslantbox@fontspect@shear@box{\synthslant@slant@value}{#2}%
+% \end{macrocode}
+% The following (expanding) definition is only here for the compatibility of both branches.
+% \begin{macrocode}
+ \edef\synthslant@slant@value{#1}
+ \synthslantbox@fontspect@shear@box{\synthslant@slant@value}
+ {#2}%
}
% \end{macrocode}
%
@@ -2530,7 +2802,8 @@ end
\NewDocumentEnvironment{slantenvironment}{}
{\upshape
\ifcsdef{microtypecontext}
- {\expandafter\microtypecontext\expandafter{\slantcontext}}
+ {\expandafter\microtypecontext
+ \expandafter{\slantcontext}}
{}}
{\ifcsdef{endmicrotypecontext}
{\endmicrotypecontext}
@@ -2557,8 +2830,8 @@ end
% \end{macro}
%
% \begin{macro}{\synthslantbox@right@negslant@correction}
-% We could play the same trick here as in \cs{synthslantbox@right@slant@correction} and use
-% \cs{synthnegslant} instead of \cs{synthslant}. But my experiments show no need for a
+% We could play the same trick here as in \cs{synthslantbox@\-right@\-slant@\-correction} and
+% use \cs{synthnegslant} instead of \cs{synthslant}. But my experiments show no need for a
% correction. Anyhow, this macro may be convenient to override someday.
%
% \begin{macrocode}
@@ -2588,7 +2861,8 @@ end
\NewDocumentEnvironment{negslantenvironment}{}
{\itshape
\ifcsdef{microtypecontext}
- {\expandafter\microtypecontext\expandafter{\negslantcontext}}
+ {\expandafter\microtypecontext
+ \expandafter{\negslantcontext}}
{}}
{\ifcsdef{endmicrotypecontext}
{\endmicrotypecontext}
@@ -2622,7 +2896,7 @@ end
%
%
% \addtocontents{toc}{\protect\end{multicols}}
-% \addtocontents{toc}{\endgroup}
+% \addtocontents{toc}{\protect\end{list}}
%
%
% \Finale
@@ -4889,7 +5163,7 @@ KJ8AAAAASUVORK5CYII=
\setlength{\headheight}{0pt}
\setlength{\headsep}{0pt}
-\setlength{\overfullrule}{3pt}
+\setlength{\overfullrule}{0pt}
\pagestyle{plain}
@@ -5254,6 +5528,20 @@ right: \code{\cs{textsynthslant}\{Show line-break\cs{-}ing in a sen\cs{-}tence.\
%
%
%
+% \iffalse
+%<*minimal-test>
+\documentclass{minimal}
+
+\usepackage{synthslant}
+
+\begin{document}
+\textsynthslant{abc}
+\end{document}
+%</minimal-test>
+% \fi
+%
+%
+%
\endinput
%
%
diff --git a/macros/latex/contrib/synthslant/synthslant.ins b/macros/latex/contrib/synthslant/synthslant.ins
index 845b4378b1..f7027fe6f5 100644
--- a/macros/latex/contrib/synthslant/synthslant.ins
+++ b/macros/latex/contrib/synthslant/synthslant.ins
@@ -1,11 +1,11 @@
%% Copyright (C) 2024 by Ch. L. Spiel
%%
%% This work may be distributed and/or modified under the conditions
-%% of the LaTeX Project Public License, either version 1.3 of this
+%% of the LaTeX Project Public License, either version 1.3c of this
%% license or (at your option) any later version. The latest version
%% of this license is in
-%% http://www.latex-project.org/lppl.txt
-%% and version 1.3 or later is part of all distributions of LaTeX
+%% https://www.latex-project.org/lppl.txt
+%% and version 1.3c or later is part of all distributions of LaTeX
%% version 2003/12/01 or later.
@@ -23,11 +23,11 @@ This is a generated file.
Copyright (C) 2024 by Ch. L. Spiel
This work may be distributed and/or modified under the conditions
-of the LaTeX Project Public License, either version 1.3 of this
+of the LaTeX Project Public License, either version 1.3c of this
license or (at your option) any later version. The latest version
of this license is in
- http://www.latex-project.org/lppl.txt
-and version 1.3 or later is part of all distributions of LaTeX
+ https://www.latex-project.org/lppl.txt
+and version 1.3c or later is part of all distributions of LaTeX
version 2003/12/01 or later.
This work has the LPPL maintenance status `maintained'.
@@ -46,12 +46,15 @@ shear-transform.mp, and title.mp.
\generate{\file{synthslant.sty}{\from{\source}{package}}
\file{synthslant-gauge.tex}{\from{\source}{gauge}}
- \file{synthslant.ist}{\from{\source}{index-style}}}
+ \file{synthslant-minimal-test.tex}{\from{\source}{minimal-test}}}
\nopostamble
-\generate{\file{title.mp}{\from{\source}{title}}}
-\generate{\file{shear-transform.mp}{\from{\source}{shear-transform}}}
+\generate{\file{shear-transform.mp}{\from{\source}{shear-transform}}
+ \file{synthslant.gst}{\from{\source}{changes-style}}
+ \file{synthslant.ist}{\from{\source}{index-style}}
+ \file{title.mp}{\from{\source}{title}}}
+
\nopreamble
diff --git a/macros/latex/contrib/typog/LICENSE b/macros/latex/contrib/typog/LICENSE
new file mode 100644
index 0000000000..888d9e68e7
--- /dev/null
+++ b/macros/latex/contrib/typog/LICENSE
@@ -0,0 +1,415 @@
+The LaTeX Project Public License
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
+
+LPPL Version 1.3c 2008-05-04
+
+Copyright 1999 2002-2008 LaTeX3 Project
+ Everyone is allowed to distribute verbatim copies of this
+ license document, but modification of it is not allowed.
+
+
+PREAMBLE
+========
+
+The LaTeX Project Public License (LPPL) is the primary license under
+which the LaTeX kernel and the base LaTeX packages are distributed.
+
+You may use this license for any work of which you hold the copyright
+and which you wish to distribute. This license may be particularly
+suitable if your work is TeX-related (such as a LaTeX package), but
+it is written in such a way that you can use it even if your work is
+unrelated to TeX.
+
+The section `WHETHER AND HOW TO DISTRIBUTE WORKS UNDER THIS LICENSE',
+below, gives instructions, examples, and recommendations for authors
+who are considering distributing their works under this license.
+
+This license gives conditions under which a work may be distributed
+and modified, as well as conditions under which modified versions of
+that work may be distributed.
+
+We, the LaTeX3 Project, believe that the conditions below give you
+the freedom to make and distribute modified versions of your work
+that conform with whatever technical specifications you wish while
+maintaining the availability, integrity, and reliability of
+that work. If you do not see how to achieve your goal while
+meeting these conditions, then read the document `cfgguide.tex'
+and `modguide.tex' in the base LaTeX distribution for suggestions.
+
+
+DEFINITIONS
+===========
+
+In this license document the following terms are used:
+
+ `Work'
+ Any work being distributed under this License.
+
+ `Derived Work'
+ Any work that under any applicable law is derived from the Work.
+
+ `Modification'
+ Any procedure that produces a Derived Work under any applicable
+ law -- for example, the production of a file containing an
+ original file associated with the Work or a significant portion of
+ such a file, either verbatim or with modifications and/or
+ translated into another language.
+
+ `Modify'
+ To apply any procedure that produces a Derived Work under any
+ applicable law.
+
+ `Distribution'
+ Making copies of the Work available from one person to another, in
+ whole or in part. Distribution includes (but is not limited to)
+ making any electronic components of the Work accessible by
+ file transfer protocols such as FTP or HTTP or by shared file
+ systems such as Sun's Network File System (NFS).
+
+ `Compiled Work'
+ A version of the Work that has been processed into a form where it
+ is directly usable on a computer system. This processing may
+ include using installation facilities provided by the Work,
+ transformations of the Work, copying of components of the Work, or
+ other activities. Note that modification of any installation
+ facilities provided by the Work constitutes modification of the Work.
+
+ `Current Maintainer'
+ A person or persons nominated as such within the Work. If there is
+ no such explicit nomination then it is the `Copyright Holder' under
+ any applicable law.
+
+ `Base Interpreter'
+ A program or process that is normally needed for running or
+ interpreting a part or the whole of the Work.
+
+ A Base Interpreter may depend on external components but these
+ are not considered part of the Base Interpreter provided that each
+ external component clearly identifies itself whenever it is used
+ interactively. Unless explicitly specified when applying the
+ license to the Work, the only applicable Base Interpreter is a
+ `LaTeX-Format' or in the case of files belonging to the
+ `LaTeX-format' a program implementing the `TeX language'.
+
+
+
+CONDITIONS ON DISTRIBUTION AND MODIFICATION
+===========================================
+
+1. Activities other than distribution and/or modification of the Work
+are not covered by this license; they are outside its scope. In
+particular, the act of running the Work is not restricted and no
+requirements are made concerning any offers of support for the Work.
+
+2. You may distribute a complete, unmodified copy of the Work as you
+received it. Distribution of only part of the Work is considered
+modification of the Work, and no right to distribute such a Derived
+Work may be assumed under the terms of this clause.
+
+3. You may distribute a Compiled Work that has been generated from a
+complete, unmodified copy of the Work as distributed under Clause 2
+above, as long as that Compiled Work is distributed in such a way that
+the recipients may install the Compiled Work on their system exactly
+as it would have been installed if they generated a Compiled Work
+directly from the Work.
+
+4. If you are the Current Maintainer of the Work, you may, without
+restriction, modify the Work, thus creating a Derived Work. You may
+also distribute the Derived Work without restriction, including
+Compiled Works generated from the Derived Work. Derived Works
+distributed in this manner by the Current Maintainer are considered to
+be updated versions of the Work.
+
+5. If you are not the Current Maintainer of the Work, you may modify
+your copy of the Work, thus creating a Derived Work based on the Work,
+and compile this Derived Work, thus creating a Compiled Work based on
+the Derived Work.
+
+6. If you are not the Current Maintainer of the Work, you may
+distribute a Derived Work provided the following conditions are met
+for every component of the Work unless that component clearly states
+in the copyright notice that it is exempt from that condition. Only
+the Current Maintainer is allowed to add such statements of exemption
+to a component of the Work.
+
+ a. If a component of this Derived Work can be a direct replacement
+ for a component of the Work when that component is used with the
+ Base Interpreter, then, wherever this component of the Work
+ identifies itself to the user when used interactively with that
+ Base Interpreter, the replacement component of this Derived Work
+ clearly and unambiguously identifies itself as a modified version
+ of this component to the user when used interactively with that
+ Base Interpreter.
+
+ b. Every component of the Derived Work contains prominent notices
+ detailing the nature of the changes to that component, or a
+ prominent reference to another file that is distributed as part
+ of the Derived Work and that contains a complete and accurate log
+ of the changes.
+
+ c. No information in the Derived Work implies that any persons,
+ including (but not limited to) the authors of the original version
+ of the Work, provide any support, including (but not limited to)
+ the reporting and handling of errors, to recipients of the
+ Derived Work unless those persons have stated explicitly that
+ they do provide such support for the Derived Work.
+
+ d. You distribute at least one of the following with the Derived Work:
+
+ 1. A complete, unmodified copy of the Work;
+ if your distribution of a modified component is made by
+ offering access to copy the modified component from a
+ designated place, then offering equivalent access to copy
+ the Work from the same or some similar place meets this
+ condition, even though third parties are not compelled to
+ copy the Work along with the modified component;
+
+ 2. Information that is sufficient to obtain a complete,
+ unmodified copy of the Work.
+
+7. If you are not the Current Maintainer of the Work, you may
+distribute a Compiled Work generated from a Derived Work, as long as
+the Derived Work is distributed to all recipients of the Compiled
+Work, and as long as the conditions of Clause 6, above, are met with
+regard to the Derived Work.
+
+8. The conditions above are not intended to prohibit, and hence do not
+apply to, the modification, by any method, of any component so that it
+becomes identical to an updated version of that component of the Work as
+it is distributed by the Current Maintainer under Clause 4, above.
+
+9. Distribution of the Work or any Derived Work in an alternative
+format, where the Work or that Derived Work (in whole or in part) is
+then produced by applying some process to that format, does not relax or
+nullify any sections of this license as they pertain to the results of
+applying that process.
+
+10. a. A Derived Work may be distributed under a different license
+ provided that license itself honors the conditions listed in
+ Clause 6 above, in regard to the Work, though it does not have
+ to honor the rest of the conditions in this license.
+
+ b. If a Derived Work is distributed under a different license, that
+ Derived Work must provide sufficient documentation as part of
+ itself to allow each recipient of that Derived Work to honor the
+ restrictions in Clause 6 above, concerning changes from the Work.
+
+11. This license places no restrictions on works that are unrelated to
+the Work, nor does this license place any restrictions on aggregating
+such works with the Work by any means.
+
+12. Nothing in this license is intended to, or may be used to, prevent
+complete compliance by all parties with all applicable laws.
+
+
+NO WARRANTY
+===========
+
+There is no warranty for the Work. Except when otherwise stated in
+writing, the Copyright Holder provides the Work `as is', without
+warranty of any kind, either expressed or implied, including, but not
+limited to, the implied warranties of merchantability and fitness for a
+particular purpose. The entire risk as to the quality and performance
+of the Work is with you. Should the Work prove defective, you assume
+the cost of all necessary servicing, repair, or correction.
+
+In no event unless required by applicable law or agreed to in writing
+will The Copyright Holder, or any author named in the components of the
+Work, or any other party who may distribute and/or modify the Work as
+permitted above, be liable to you for damages, including any general,
+special, incidental or consequential damages arising out of any use of
+the Work or out of inability to use the Work (including, but not limited
+to, loss of data, data being rendered inaccurate, or losses sustained by
+anyone as a result of any failure of the Work to operate with any other
+programs), even if the Copyright Holder or said author or said other
+party has been advised of the possibility of such damages.
+
+
+MAINTENANCE OF THE WORK
+=======================
+
+The Work has the status `author-maintained' if the Copyright Holder
+explicitly and prominently states near the primary copyright notice in
+the Work that the Work can only be maintained by the Copyright Holder
+or simply that it is `author-maintained'.
+
+The Work has the status `maintained' if there is a Current Maintainer
+who has indicated in the Work that they are willing to receive error
+reports for the Work (for example, by supplying a valid e-mail
+address). It is not required for the Current Maintainer to acknowledge
+or act upon these error reports.
+
+The Work changes from status `maintained' to `unmaintained' if there
+is no Current Maintainer, or the person stated to be Current
+Maintainer of the work cannot be reached through the indicated means
+of communication for a period of six months, and there are no other
+significant signs of active maintenance.
+
+You can become the Current Maintainer of the Work by agreement with
+any existing Current Maintainer to take over this role.
+
+If the Work is unmaintained, you can become the Current Maintainer of
+the Work through the following steps:
+
+ 1. Make a reasonable attempt to trace the Current Maintainer (and
+ the Copyright Holder, if the two differ) through the means of
+ an Internet or similar search.
+
+ 2. If this search is successful, then enquire whether the Work
+ is still maintained.
+
+ a. If it is being maintained, then ask the Current Maintainer
+ to update their communication data within one month.
+
+ b. If the search is unsuccessful or no action to resume active
+ maintenance is taken by the Current Maintainer, then announce
+ within the pertinent community your intention to take over
+ maintenance. (If the Work is a LaTeX work, this could be
+ done, for example, by posting to comp.text.tex.)
+
+ 3a. If the Current Maintainer is reachable and agrees to pass
+ maintenance of the Work to you, then this takes effect
+ immediately upon announcement.
+
+ b. If the Current Maintainer is not reachable and the Copyright
+ Holder agrees that maintenance of the Work be passed to you,
+ then this takes effect immediately upon announcement.
+
+ 4. If you make an `intention announcement' as described in 2b. above
+ and after three months your intention is challenged neither by
+ the Current Maintainer nor by the Copyright Holder nor by other
+ people, then you may arrange for the Work to be changed so as
+ to name you as the (new) Current Maintainer.
+
+ 5. If the previously unreachable Current Maintainer becomes
+ reachable once more within three months of a change completed
+ under the terms of 3b) or 4), then that Current Maintainer must
+ become or remain the Current Maintainer upon request provided
+ they then update their communication data within one month.
+
+A change in the Current Maintainer does not, of itself, alter the fact
+that the Work is distributed under the LPPL license.
+
+If you become the Current Maintainer of the Work, you should
+immediately provide, within the Work, a prominent and unambiguous
+statement of your status as Current Maintainer. You should also
+announce your new status to the same pertinent community as
+in 2b) above.
+
+
+WHETHER AND HOW TO DISTRIBUTE WORKS UNDER THIS LICENSE
+======================================================
+
+This section contains important instructions, examples, and
+recommendations for authors who are considering distributing their
+works under this license. These authors are addressed as `you' in
+this section.
+
+Choosing This License or Another License
+----------------------------------------
+
+If for any part of your work you want or need to use *distribution*
+conditions that differ significantly from those in this license, then
+do not refer to this license anywhere in your work but, instead,
+distribute your work under a different license. You may use the text
+of this license as a model for your own license, but your license
+should not refer to the LPPL or otherwise give the impression that
+your work is distributed under the LPPL.
+
+The document `modguide.tex' in the base LaTeX distribution explains
+the motivation behind the conditions of this license. It explains,
+for example, why distributing LaTeX under the GNU General Public
+License (GPL) was considered inappropriate. Even if your work is
+unrelated to LaTeX, the discussion in `modguide.tex' may still be
+relevant, and authors intending to distribute their works under any
+license are encouraged to read it.
+
+A Recommendation on Modification Without Distribution
+-----------------------------------------------------
+
+It is wise never to modify a component of the Work, even for your own
+personal use, without also meeting the above conditions for
+distributing the modified component. While you might intend that such
+modifications will never be distributed, often this will happen by
+accident -- you may forget that you have modified that component; or
+it may not occur to you when allowing others to access the modified
+version that you are thus distributing it and violating the conditions
+of this license in ways that could have legal implications and, worse,
+cause problems for the community. It is therefore usually in your
+best interest to keep your copy of the Work identical with the public
+one. Many works provide ways to control the behavior of that work
+without altering any of its licensed components.
+
+How to Use This License
+-----------------------
+
+To use this license, place in each of the components of your work both
+an explicit copyright notice including your name and the year the work
+was authored and/or last substantially modified. Include also a
+statement that the distribution and/or modification of that
+component is constrained by the conditions in this license.
+
+Here is an example of such a notice and statement:
+
+ %% pig.dtx
+ %% Copyright 2005 M. Y. Name
+ %
+ % This work may be distributed and/or modified under the
+ % conditions of the LaTeX Project Public License, either version 1.3c
+ % of this license or (at your option) any later version.
+ % The latest version of this license is in
+ % https://www.latex-project.org/lppl.txt
+ % and version 1.3c or later is part of all distributions of LaTeX
+ % version 2005/12/01 or later.
+ %
+ % This work has the LPPL maintenance status `maintained'.
+ %
+ % The Current Maintainer of this work is M. Y. Name.
+ %
+ % This work consists of the files pig.dtx and pig.ins
+ % and the derived file pig.sty.
+
+Given such a notice and statement in a file, the conditions
+given in this license document would apply, with the `Work' referring
+to the three files `pig.dtx', `pig.ins', and `pig.sty' (the last being
+generated from `pig.dtx' using `pig.ins'), the `Base Interpreter'
+referring to any `LaTeX-Format', and both `Copyright Holder' and
+`Current Maintainer' referring to the person `M. Y. Name'.
+
+If you do not want the Maintenance section of LPPL to apply to your
+Work, change `maintained' above into `author-maintained'.
+However, we recommend that you use `maintained', as the Maintenance
+section was added in order to ensure that your Work remains useful to
+the community even when you can no longer maintain and support it
+yourself.
+
+Derived Works That Are Not Replacements
+---------------------------------------
+
+Several clauses of the LPPL specify means to provide reliability and
+stability for the user community. They therefore concern themselves
+with the case that a Derived Work is intended to be used as a
+(compatible or incompatible) replacement of the original Work. If
+this is not the case (e.g., if a few lines of code are reused for a
+completely different task), then clauses 6b and 6d shall not apply.
+
+
+Important Recommendations
+-------------------------
+
+ Defining What Constitutes the Work
+
+ The LPPL requires that distributions of the Work contain all the
+ files of the Work. It is therefore important that you provide a
+ way for the licensee to determine which files constitute the Work.
+ This could, for example, be achieved by explicitly listing all the
+ files of the Work near the copyright notice of each file or by
+ using a line such as:
+
+ % This work consists of all files listed in manifest.txt.
+
+ in that place. In the absence of an unequivocal list it might be
+ impossible for the licensee to determine what is considered by you
+ to comprise the Work and, in such a case, the licensee would be
+ entitled to make reasonable conjectures as to which files comprise
+ the Work.
diff --git a/macros/latex/contrib/typog/Makefile b/macros/latex/contrib/typog/Makefile
index bb3c83ab24..1b7e0b21a3 100644
--- a/macros/latex/contrib/typog/Makefile
+++ b/macros/latex/contrib/typog/Makefile
@@ -7,8 +7,9 @@
SHELL := /bin/sh
-LATEX := /usr/bin/env max_print_line=2147483647 pdflatex
-LATEX_FLAGS := -file-line-error -halt-on-error -interaction=nonstopmode
+LATEX_PROPER := pdflatex
+LATEX := /usr/bin/env max_print_line=2147483647 $(LATEX_PROPER)
+LATEX_FLAGS := -file-line-error -halt-on-error -interaction=nonstopmode -output-directory=.
LATEX_RERUN_TRIGGER := '^Package rerunfilecheck Warning: File [^ ]* has changed'
LATEX_WARNING := '^LaTeX (|[A-Za-z0-9_]* )Warning:'
@@ -16,6 +17,10 @@ MAKEINDEX := makeindex
MAKEINDEX_FLAGS := -q
+MAKEINFO := makeinfo
+MAKEINFO_FLAGS := --no-split
+
+
METAPOST := mpost
METAPOST_FLAGS := -file-line-error -interaction=nonstopmode -tex=latex
@@ -24,8 +29,12 @@ PODCHECKER := podchecker
PODCHECKER_FLAGS := -warnings
+define SED_VERSION_REGEXP
+^\( *\|\\ProvidesPackage{[^}]*} *\)\[\([0-9][0-9]*/[0-9][0-9]*/[0-9][0-9]*\) *v\([^ ]*\) *\([^]]*\)].*$$
+endef
+
POD2MAN := pod2man
-POD2MAN_FLAGS := $$(sed -ne 's,\\ProvidesPackage{typog}\[\([0-9][0-9]*/[0-9][0-9]*/[0-9][0-9]*\) *v\([^ ]*\) .*$$,--date=\1 --release=\2,p' < typog.sty)
+POD2MAN_FLAGS := $$(sed -ne 's,$(SED_VERSION_REGEXP),--date=\2 --release=\3,p' < typog.sty)
POD2TEXI := pod2texi
@@ -33,31 +42,32 @@ POD2TEXI_FLAGS :=
GROFF := groff
-## Codes of serif fonts that work for PDF output
+## Codes of fonts that work for PDF output as by the contents
+## of "/usr/share/groff/current/font/devpdf".
+##
+## Serif
## BM: URW Bookman L
## N: URW Century Schoolbook L
## P: URW Palladio L
## T: URW Nimbus Roman No9 L
+##
+## Sans Serif
+## A: Avantgarde
+## H: Helvetica
+##
+## Monospace
+## C: Courier
GROFF_FLAGS := -Tpdf -dpaper=a4 -fP -man -wall
-SPELLCHECK := aspell
-SPELLCHECK_FLAGS := \
- --add-tex-command='citenum p' --add-tex-command='code p' \
- --add-tex-command='Cref p' --add-tex-command='cref p' \
- --add-tex-command='cs p' \
- --add-tex-command='DescribeEnv p' --add-tex-command='DescribeMacro p' \
- --add-tex-command='marg p' --add-tex-command='meta p' \
- --add-tex-command='oarg p' \
- --lang=en_US --mode=tex
-
-
-SOURCE_FILES := LICENSE Makefile typog.dtx typog.ins
+PROJECT_NAME := typog
+SOURCE_FILES := LICENSE Makefile README.md typog.dtx typog.ins
+DOCUMENTATION_FILES := typog-example.pdf typog-grep.1.pdf typog.pdf
.PHONY: all
-all: sty pdf man
+all: sty pdf bin man
.PHONY: sty
@@ -65,7 +75,7 @@ sty: typog.sty
.PHONY: pdf
-pdf: doc ex nomt
+pdf: doc ex test
.PHONY: doc
@@ -76,69 +86,88 @@ doc: typog.pdf
ex: typog-example.pdf
-.PHONY: nomt
-nomt: typog-nomt.pdf
+.PHONY: test
+test: typog-minimal-test.pdf typog-without-microtype-test.pdf
+
+
+.PHONY: bin
+bin: typog-grep
.PHONY: man
man: typog-grep.1
-.PHONY: cpio
-cpio:
- cd ..; \
- echo $(addprefix typog/,$(SOURCE_FILES)) | \
- cpio -o | \
- gzip > "typog-$$(date +%Y-%m-%d).cpio.gz"
+export TEMPORARY_DIRECTORY
+
+
+.PHONY: dist
+dist:
+ $(eval TEMPORARY_DIRECTORY := $(shell mktemp -d))
+ trap '$(RM) -r $(TEMPORARY_DIRECTORY); exit 1' HUP INT QUIT TERM; $(MAKE) __dist
+ $(RM) -r $(TEMPORARY_DIRECTORY)
+
+
+.PHONY: __dist
+__dist: LATEX_FLAGS += -interaction=batchmode
+__dist: $(DOCUMENTATION_FILES)
+ test -d '$(TEMPORARY_DIRECTORY)'
+ test -w '$(TEMPORARY_DIRECTORY)'
+ mkdir $(TEMPORARY_DIRECTORY)/$(PROJECT_NAME)
+ cp $(SOURCE_FILES) $(TEMPORARY_DIRECTORY)/$(PROJECT_NAME)
+ mkdir $(TEMPORARY_DIRECTORY)/$(PROJECT_NAME)/docs
+ cp $(DOCUMENTATION_FILES) $(TEMPORARY_DIRECTORY)/$(PROJECT_NAME)/docs
+ tar czf $(PROJECT_NAME).tar.gz -C $(TEMPORARY_DIRECTORY) $(PROJECT_NAME)
-.PHONY: tar
-tar:
- cd ..; \
- tar czf "typog-$$(date +%Y-%m-%d).tar.gz" $(addprefix typog/,$(SOURCE_FILES))
+.PHONY: distcheck
+distcheck: LATEX_FLAGS += -interaction=batchmode
+distcheck: dist
+ $(eval TEMPORARY_DIRECTORY := $(shell mktemp -d))
+ test -d '$(TEMPORARY_DIRECTORY)'
+ test -w '$(TEMPORARY_DIRECTORY)'
+ tar xzf $(PROJECT_NAME).tar.gz -C $(TEMPORARY_DIRECTORY)
+ $(MAKE) --directory=$(TEMPORARY_DIRECTORY)/$(PROJECT_NAME) LATEX_FLAGS='$(LATEX_FLAGS)' all
+ $(RM) -r $(TEMPORARY_DIRECTORY)
+ @printf '\n\ndistcheck passed.\n'
.PHONY: clean
clean:
- $(RM) ./*.1 ./*.aux ./*.brf ./*.glg ./*.glo ./*.gls
- $(RM) ./*.hd ./*.idx ./*.ilg ./*.ind ./*.loe ./*.lof ./*.log ./*.lot
- $(RM) ./*.mps ./*.mpx ./*.out ./*.pdf ./*.toc
+ $(RM) ./*.1 ./*.aux ./*.brf ./*.dvi ./*.glg ./*.glo ./*.gls
+ $(RM) ./*.hd ./*.idx ./*.ilg ./*.ind ./*.info ./*.loe ./*.lof ./*.log ./*.lot
+ $(RM) ./*.mps ./*.mpx ./*.out ./*.pdf ./*.pl.in ./*.toc
$(RM) mptextmp.* mpxerr.tex
$(RM) README README.html RELEASE-HOWTO RELEASE-HOWTO.html
+ $(RM) typog-grep typog-grep.version.sed
+ $(RM) $(PROJECT_NAME).tar.gz
.PHONY: mostlyclean
mostlyclean: clean
+ $(RM) ./*.texi
.PHONY: maintainer-clean
maintainer-clean: mostlyclean
- $(RM) ./*.ist ./*.mp ./*.pl ./*.pod ./*.sed ./*.sty ./*.tex
+ $(RM) ./*.gst ./*.ist ./*.mp ./*.pl ./*.pod ./*.sed ./*.sty ./*.tex
.PHONY: tool-check
tool-check:
- @printf '*** LATEX = "%s"\n' '$(LATEX)'
- $(LATEX) --version
+ @printf '*** LATEX_PROPER = "%s"\n' '$(LATEX_PROPER)'
+ $(LATEX_PROPER) --version
+ @printf '\n\n*** BibTeX\n'
+ bibtex --version
@printf '\n\n*** MAKEINDEX = "%s"\n' '$(MAKEINDEX)'
- $(MAKEINDEX) < /dev/null
+ $(MAKEINDEX) < /dev/null
@printf '\n\n*** METAPOST = "%s"\n' '$(METAPOST)'
$(METAPOST) --version
@printf '\n*** POD2MAN = "%s"\n' '$(POD2MAN)'
$(POD2MAN) --help > /dev/null
@printf '\n\n*** POD2TEXI = "%s"\n' '$(POD2TEXI)'
$(POD2TEXI) --version
- @printf '\n\nTool check passed.\n'
-
-
-.PHONY: spell-check
-spell-check:
- @sed -e '\#<DISABLE-SPELL-CHECK/>#d' \
- -e '\#<DISABLE-SPELL-CHECK>#,\#</DISABLE-SPELL-CHECK>#d' < typog.dtx | \
- sed -e 's/^ *%%*//' | \
- sed -e 's/\\-//g' -e 's/|[^|]*|/ /g' | \
- $(SPELLCHECK) $(SPELLCHECK_FLAGS) list | \
- sort | uniq | fmt | sed -e 's/ / /g'
+ @printf '\n\ntool check passed.\n'
.PHONY: update-docs
@@ -151,10 +180,16 @@ Selected Phony Targets
----------------------
all: Make everything there is to make. This is the .DEFAULT_GOAL.
+bin: Build typog-grep (which is not a binary, but executable).
+
clean: Remove some products.
-cpio: In the parent directory create a cpio(1) archive of the
- project source files whose name is time-stamped.
+dist: Create a tar file of the project source files and the PDF
+ documentation files. The archive is in the form and has a
+ name that CTAN prefers.
+
+distcheck: Create a tar file of the project source files, unpack it in
+ a different location and build all targets.
doc: Build "typog.pdf" the Typog documentation.
@@ -170,12 +205,14 @@ pdf: Build doc: and gauge:.
sty: Only extract "typog.sty" from "typog.dtx". This
operation requires LaTeX (-> $(LATEX)) and nothing else.
-tar: In the parent directory create a tar(1) file of the project
- source files whose name is time-stamped.
+test: Run some tests.
tool-check: Check whether some of the required tools to build the
project are available.
+update-docs: Copy the documentation files into the "docs"
+ sub-directory.
+
Selected Implicit Rules
-----------------------
@@ -206,6 +243,7 @@ README: Convert "README.html" to plain text. Requires w3m(1).
endef
+
.PHONY: help
help:
$(info $(HELP_SCREEN))
@@ -217,10 +255,10 @@ help:
define MAKE_INDEX_AND_GLOSSARY
-sed -e '/@/d' -e 's/{\\ttfamily /{\\ttfamily\\hskip0pt\\relax /' < $*.idx > ,$*.idx; \
+sed -e '/@/d' -e 's/{\\ttfamily /{\\ttfamily\\hskip0pt\\relax /' < $*.idx > ,$*.idx; \
mv ,$*.idx $*.idx; \
-$(MAKEINDEX) $(MAKEINDEX_FLAGS) -s typog.ist -t $*.ilg -o $*.ind $*.idx; \
-$(MAKEINDEX) $(MAKEINDEX_FLAGS) -s gglo.ist -t $*.glg -o $*.gls $*.glo
+$(MAKEINDEX) $(MAKEINDEX_FLAGS) -s $*.ist -t $*.ilg -o $*.ind $*.idx; \
+$(MAKEINDEX) $(MAKEINDEX_FLAGS) -s $*.gst -t $*.glg -o $*.gls $*.glo
endef
define GREP_LATEX_WARNINGS
@@ -253,7 +291,13 @@ endef
%-1.mps %-2.mps %-3.mps %-4.mps: %.mp
- $(METAPOST) -s 'outputtemplate="%j-%c.mps"' $(METAPOST_FLAGS) $<
+ $(METAPOST) -s 'outputtemplate="%j-%c.mps"' $(METAPOST_FLAGS) $< || { \
+ printf '=== $*.log ===\n'; \
+ cat $*.log; \
+ printf '\n\n=== mpxerr.log ===\n'; \
+ cat mpxerr.log; \
+ false; \
+ } 1>&2
%.1: %.pod
@@ -263,6 +307,15 @@ endef
%.1.pdf: %.1
$(GROFF) $(GROFF_FLAGS) ./$< > $@
+%.texi: %.pod
+ $(POD2TEXI) $(POD2TEXI_FLAGS) --output=$@ ./$<
+
+%.info: %.texi
+ $(MAKEINFO) $(MAKEINFO_FLAGS) --output=$@ $<
+
+%.info.pdf: %.texi
+ $(MAKEINFO) $(MAKEINFO_FLAGS) --pdf --output=$@ $<
+
%.tex: %.pod | teximan2latex.sed
$(POD2TEXI) $(POD2TEXI_FLAGS) ./$< | sed -f teximan2latex.sed > $@
@@ -276,12 +329,11 @@ endef
crooked-paragraphs.mp slant-angle.mp smooth-parshapes.mp title.mp \
teximan2latex.sed \
-typog-grep.pl typog-grep typog-grep.pod \
-typog.sty typog.ist typog-example.tex typog-nomt.tex: \
+typog-grep.pl.in typog-grep.pod \
+typog.sty typog.ist typog-example.tex \
+typog-minimal-test.tex typog-without-microtype-test.tex: \
typog.ins typog.dtx
$(LATEX) $(LATEX_FLAGS) $<
- chmod 755 typog-grep.pl
- ln -sf typog-grep.pl typog-grep
crooked-paragraphs-1.mps crooked-paragraphs-2.mps \
@@ -300,3 +352,14 @@ typog.pdf: typog.dtx \
smooth-parshapes-1.mps smooth-parshapes-2.mps smooth-parshapes-3.mps \
typog-grep.tex \
| typog.sty
+
+
+typog-grep.pl: typog-grep.pl.in typog.sty
+ sed -ne 's,$(SED_VERSION_REGEXP),s#@DATE@#\2#g\ns#@RELEASE@#\3#g\ns#@TITLE@#\4#g,p' \
+ < typog.sty \
+ > typog-grep.version.sed
+ sed -f typog-grep.version.sed < $< > $@
+ chmod 755 $@
+
+typog-grep: typog-grep.pl
+ ln -sf $< $@
diff --git a/macros/latex/contrib/typog/README.md b/macros/latex/contrib/typog/README.md
index fb55ccb1e1..c67519bffc 100644
--- a/macros/latex/contrib/typog/README.md
+++ b/macros/latex/contrib/typog/README.md
@@ -1,3 +1,6 @@
+![distcheck status](https://github.com/cspiel/typog/actions/workflows/distcheck.yml/badge.svg)
+
+
# TypoG &ndash; Typographic Fine-Tuning for LaTeX
LaTeX package `typog` provides macros for (micro-)typographic enhancements;
@@ -8,6 +11,7 @@ it covers a variety of topics:
* Manual italic correction
* Extra kerning for slash and hyphen
* Raising selected characters (e.g. hyphen, en-dash, and em-dash)
+* Adjusting the vertical position of `itemize`'s labels
* Aligning of the last line of a paragraph
* Filling of the last line last line of a paragraph
* Word spacing control
diff --git a/macros/latex/contrib/typog/RELEASE-HOWTO.md b/macros/latex/contrib/typog/RELEASE-HOWTO.md
deleted file mode 100644
index 13435ef66d..0000000000
--- a/macros/latex/contrib/typog/RELEASE-HOWTO.md
+++ /dev/null
@@ -1,51 +0,0 @@
-# How to prepare a new release
-
-... and not make too many mistakes.
-
-
-1. Check that the work-area is clean with respect to **git**-tracked
- files.
-
- ``` git status ```
-
-1. Update the date stamp of `\ProvidesPackage`.
-
-1. (Temporarily) Zero the `\overfullrule`s of the documentation and
- the example files.
-
-1. Thoroughly clean the work-area:
-
- ```make maintainer-clean```
-
-1. Rebuild:
-
- ```make```
-
-1. Check that all _*.sty_ and _*.pdf_ files are in good shape.
-
-1. Push the documentation files created in the previous step down into
- the *docs* directory:
-
- ```make update-docs```
-
-1. Undo the `\overfullrule` change.
-
-1. Commit the changes:
-
- ```
- git add .
- ```
-
- and finally
-
- ```
- git commit
- ```
-
-1. Tag the commit with the version string of `\ProvidesPackage`:
-
- ```git tag v1.23```
-
-1. Push the changes to the public repository:
-
- ```git push origin master --tags```
diff --git a/macros/latex/contrib/typog/docs/index.md b/macros/latex/contrib/typog/docs/index.md
deleted file mode 100644
index f4dc2e8bd9..0000000000
--- a/macros/latex/contrib/typog/docs/index.md
+++ /dev/null
@@ -1,5 +0,0 @@
-### Package Documentation
-
-- Comprehensive `typog` documentation: [typog.pdf](https://cspiel.github.io/typog/typog.pdf)
-- `typog` examples and tests: [typog-example.pdf](https://cspiel.github.io/typog/typog-example.pdf)
-- **typog-grep** manual page: [typog-grep.1](https://cspiel.github.io/typog/typog-grep.1) and as PDF: [typog-grep.1.pdf](https://cspiel.github.io/typog/typog-grep.1.pdf)
diff --git a/macros/latex/contrib/typog/docs/typog-example.pdf b/macros/latex/contrib/typog/docs/typog-example.pdf
index 621ac319d2..48a8a506e1 100644
--- a/macros/latex/contrib/typog/docs/typog-example.pdf
+++ b/macros/latex/contrib/typog/docs/typog-example.pdf
Binary files differ
diff --git a/macros/latex/contrib/typog/docs/typog-grep.1 b/macros/latex/contrib/typog/docs/typog-grep.1
deleted file mode 100644
index 372c87bc5f..0000000000
--- a/macros/latex/contrib/typog/docs/typog-grep.1
+++ /dev/null
@@ -1,428 +0,0 @@
-.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.43)
-.\"
-.\" Standard preamble:
-.\" ========================================================================
-.de Sp \" Vertical space (when we can't use .PP)
-.if t .sp .5v
-.if n .sp
-..
-.de Vb \" Begin verbatim text
-.ft CW
-.nf
-.ne \\$1
-..
-.de Ve \" End verbatim text
-.ft R
-.fi
-..
-.\" Set up some character translations and predefined strings. \*(-- will
-.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
-.\" double quote, and \*(R" will give a right double quote. \*(C+ will
-.\" give a nicer C++. Capital omega is used to do unbreakable dashes and
-.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff,
-.\" nothing in troff, for use with C<>.
-.tr \(*W-
-.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
-.ie n \{\
-. ds -- \(*W-
-. ds PI pi
-. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
-. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch
-. ds L" ""
-. ds R" ""
-. ds C` ""
-. ds C' ""
-'br\}
-.el\{\
-. ds -- \|\(em\|
-. ds PI \(*p
-. ds L" ``
-. ds R" ''
-. ds C`
-. ds C'
-'br\}
-.\"
-.\" Escape single quotes in literal strings from groff's Unicode transform.
-.ie \n(.g .ds Aq \(aq
-.el .ds Aq '
-.\"
-.\" If the F register is >0, we'll generate index entries on stderr for
-.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
-.\" entries marked with X<> in POD. Of course, you'll have to process the
-.\" output yourself in some meaningful fashion.
-.\"
-.\" Avoid warning from groff about undefined register 'F'.
-.de IX
-..
-.nr rF 0
-.if \n(.g .if rF .nr rF 1
-.if (\n(rF:(\n(.g==0)) \{\
-. if \nF \{\
-. de IX
-. tm Index:\\$1\t\\n%\t"\\$2"
-..
-. if !\nF==2 \{\
-. nr % 0
-. nr F 2
-. \}
-. \}
-.\}
-.rr rF
-.\"
-.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
-.\" Fear. Run. Save yourself. No user-serviceable parts.
-. \" fudge factors for nroff and troff
-.if n \{\
-. ds #H 0
-. ds #V .8m
-. ds #F .3m
-. ds #[ \f1
-. ds #] \fP
-.\}
-.if t \{\
-. ds #H ((1u-(\\\\n(.fu%2u))*.13m)
-. ds #V .6m
-. ds #F 0
-. ds #[ \&
-. ds #] \&
-.\}
-. \" simple accents for nroff and troff
-.if n \{\
-. ds ' \&
-. ds ` \&
-. ds ^ \&
-. ds , \&
-. ds ~ ~
-. ds /
-.\}
-.if t \{\
-. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
-. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
-. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
-. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
-. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
-. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
-.\}
-. \" troff and (daisy-wheel) nroff accents
-.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
-.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
-.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
-.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
-.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
-.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
-.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
-.ds ae a\h'-(\w'a'u*4/10)'e
-.ds Ae A\h'-(\w'A'u*4/10)'E
-. \" corrections for vroff
-.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
-.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
-. \" for low resolution devices (crt and lpr)
-.if \n(.H>23 .if \n(.V>19 \
-\{\
-. ds : e
-. ds 8 ss
-. ds o a
-. ds d- d\h'-1'\(ga
-. ds D- D\h'-1'\(hy
-. ds th \o'bp'
-. ds Th \o'LP'
-. ds ae ae
-. ds Ae AE
-.\}
-.rm #[ #] #H #V #F C
-.\" ========================================================================
-.\"
-.IX Title "TYPOG-GREP 1"
-.TH TYPOG-GREP 1 "2024-05-07" "perl v5.36.0" "User Contributed Perl Documentation"
-.\" For nroff, turn off justification. Always turn off hyphenation; it makes
-.\" way too many mistakes in technical documents.
-.if n .ad l
-.nh
-.\" Turn off justification.
-.na
-.SH "NAME"
-typog\-grep \- grep for typog\-inspect elements in LaTeX log files
-.SH "SYNOPSIS"
-.IX Header "SYNOPSIS"
-.IP "\fBtypog-grep\fR \-a|\-\-all|\-\-any [\fI\s-1OPTION\s0\fR...] \fILOG-FILE\fR..." 4
-.IX Item "typog-grep -a|--all|--any [OPTION...] LOG-FILE..."
-.PD 0
-.IP "\fBtypog-grep\fR [\fI\s-1OPTION\s0\fR...] \fI\s-1REGEXP\s0\fR \fILOG-FILE\fR..." 4
-.IX Item "typog-grep [OPTION...] REGEXP LOG-FILE..."
-.PD
-.PP
-The first form shows all \f(CW\*(C`<typog\-inspect id="\f(CIID\f(CW" ...>\*(C'\fR elements in \fILOG-FILE\fR.
-.PP
-The second form shows the contents of \f(CW\*(C`<typog\-inspect id="\f(CIID\f(CW" ...>\*(C'\fR elements
-whose \fI\s-1ID\s0\fRs match \fI\s-1REGEXP\s0\fR in \fILOG-FILE\fR.
-.PP
-If no \fILOG-FILE\fR is given read from \fIstdin\fR.
-The filename\ \f(CW\*(C`\-\*(C'\fR is synonymous to \fIstdin\fR.
-.SH "DESCRIPTION"
-.IX Header "DESCRIPTION"
-\&\fBtypog-grep\fR is a tailored post-processor for LaTeX log files
-and the \f(CW\*(C`typoginspect\*(C'\fR environment as provided by package\ typog.
-It shares more with the venerable
-\&\fBsgrep\fR <https://www.cs.helsinki.fi/u/jjaakkol/sgrep.html>
-than with \s-1POSIX\s0\ \fBgrep\fR <https://pubs.opengroup.org/onlinepubs/9699919799/utilities/grep.html>.
-.PP
-The LaTeX user brackets her text in
-.PP
-.Vb 3
-\& \ebegin{typoginspect}{ID}
-\& Text and code to investigate
-\& \eend{typoginspect}
-.Ve
-.PP
-where \fI\s-1ID\s0\fR is used to identify one or more bracketed snippets.
-\&\fI\s-1ID\s0\fR does not have to be unique.
-The \fI\s-1REGEXP\s0\fR mechanism makes it easy to select groups of related \fI\s-1ID\s0\fRs
-if they are named accordingly.
-.PP
-In \fILOG-FILE\fR the environment shows up, packed with tracing information, as
-.PP
-.Vb 3
-\& <typog\-inspect id="ID" job="JOB\-NAME" line="LINE\-NUMBER" page="PAGE\-NUMBER">
-\& Trace Data
-\& </typog\-inspect>
-.Ve
-.PP
-where all the capital-letter sequences are meta-variables
-and in particular
-\&\fIJOB-NAME\fR is the expansion of \f(CW\*(C`\ejobname\*(C'\fR,
-\&\fILINE-NUMBER\fR is the LaTeX source file line number
-of the beginning of the \f(CW\*(C`typoginspect\*(C'\fR environment,
-and \fIPAGE-NUMBER\fR is the page where
-the output of \f(CW\*(C`Text\ and\ code\ to\ investigate\*(C'\fR occurs.
-.PP
-\&\fBtypog-grep\fR reveals the contents of \fILOG-FILE\fR
-between \f(CW\*(C`<typog\-inspect id="\f(CIID\f(CW" ...>\*(C'\fR
-and \f(CW\*(C`</typog\-inspect>\*(C'\fR excluding the XML-tags.
-Access the \fIJOB-NAME\fR, \fILINE-NUMBER\fR, and \fIPAGE-NUMBER\fR
-with the commandline options
-\&\fB\-\-job\-name\fR, \fB\-\-line\-number\fR, and \fB\-\-page\-number\fR, respectively.
-Use \fB\-\-id\fR to show the name of the IDs that matched \fI\s-1REGEXP\s0\fR.
-.PP
-\&\f(CW\*(C`typoginspect\*(C'\fR environments can be nested.
-\&\fBtypog-grep\fR respects the nesting,
-i.e., if the \fI\s-1ID\s0\fR of the nested environment does not match \fI\s-1REGEXP\s0\fR
-it will not be included in the program's output.
-.SH "OPTIONS"
-.IX Header "OPTIONS"
-The list of options is sorted by the names of the long options.
-.IP "\fB\-a\fR, \fB\-\-all\fR, \fB\-\-any\fR" 4
-.IX Item "-a, --all, --any"
-ID-discovery mode:
-Show all \f(CW\*(C`typog\-inspect\*(C'\fR elements independent of any matching patterns.
-.IP "\fB\-\-color\fR, \fBcolour\fR \fI\s-1WHEN\s0\fR" 4
-.IX Item "--color, colour WHEN"
-Colorize specific log contents for the matching ids.
-The argument\ \fI\s-1WHEN\s0\fR determines when to apply color:
-\&\f(CW\*(C`always\*(C'\fR, \f(CW\*(C`never\*(C'\fR, or\ \f(CW\*(C`auto\*(C'\fR.
-The setting \f(CW\*(C`auto\*(C'\fR checks whether standard output has been redirected.
-This is the default.
-.IP "\fB\-C\fR, \fB\-\-config\fR \fI\s-1KEY\s0\fR=\fI\s-1VALUE\s0\fR[:\fI\s-1KEY\s0\fR=\fI\s-1VALUE\s0\fR[:...]]" 4
-.IX Item "-C, --config KEY=VALUE[:KEY=VALUE[:...]]"
-Set one or more configuration \fI\s-1KEY\s0\fR to \fI\s-1VALUE\s0\fR pairs.
-See Sec.\ \s-1CONFIGURATION\s0 below for a description of all available configuration items.
-Use option \fB\-\-show\-config\fR to display the default configuration.
-.IP "\fB\-\-debug\fR" 4
-.IX Item "--debug"
-Turn on debug output on \fIstderr\fR.
-.IP "\fB\-h\fR, \fB\-\-help\fR" 4
-.IX Item "-h, --help"
-Display brief help then exit.
-.IP "\fB\-i\fR, \fB\-\-[no\-]id\fR" 4
-.IX Item "-i, --[no-]id"
-Print the actual id name that matched \fI\s-1REGEXP\s0\fR.
-Control the appearance of the matching id with configuration item\ \f(CW\*(C`id\-heading\*(C'\fR.
-.IP "\fB\-y\fR, \fB\-\-[no\-]ignore\-case\fR" 4
-.IX Item "-y, --[no-]ignore-case"
-Match ids while ignoring case distinctions in patterns and data.
-.IP "\fB\-j\fR, \fB\-\-[no\-]job\-name\fR" 4
-.IX Item "-j, --[no-]job-name"
-Print the \f(CW\*(C`\ejobname\*(C'\fR that \fBtex\fR associated with the input file.
-.IP "\fB\-n\fR, \fB\-\-[no\-]line\-number\fR" 4
-.IX Item "-n, --[no-]line-number"
-Print the line number where the \f(CW\*(C`typoginspect\*(C'\fR\ environment
-was encountered in the LaTeX source file.
-.IP "\fB\-N\fR, \fB\-\-[no\-]log\-line\-number\fR" 4
-.IX Item "-N, --[no-]log-line-number"
-Print the line number of the \fIlog\fR\-file where the current line was encountered.
-.IP "\fB\-p\fR, \fB\-\-[no\-]page\-number\fR" 4
-.IX Item "-p, --[no-]page-number"
-Print page number where the contents of the \f(CW\*(C`typoginspect\*(C'\fR\ environment
-starts in the typeset document.
-.IP "\fB\-P\fR, \fB\-\-[no\-]pager\fR" 4
-.IX Item "-P, --[no-]pager"
-Redirect output from \fIstdout\fR to the configured pager.
-.IP "\fB\-\-show\-config\fR" 4
-.IX Item "--show-config"
-Show the default configuration and exit.
-.IP "\fB\-V\fR, \fB\-\-version\fR" 4
-.IX Item "-V, --version"
-Show version information and exit.
-.IP "\fB\-w\fR, \fB\-\-[no\-]word\-regexp\fR" 4
-.IX Item "-w, --[no-]word-regexp"
-Match only whole words.
-.SH "CONFIGURATION"
-.IX Header "CONFIGURATION"
-.ie n .IP """id\-format""=\fI\s-1FORMAT\s0\fR" 4
-.el .IP "\f(CWid\-format\fR=\fI\s-1FORMAT\s0\fR" 4
-.IX Item "id-format=FORMAT"
-Control the \fI\s-1FORMAT\s0\fR for printing matching ids in inline-mode,
-where \fI\s-1FORMAT\s0\fR is passed to Perl's \f(CW\*(C`printf\*(C'\fR.
-Default:\ \f(CW%s:\fR.
-.ie n .IP """id\-heading""=0|1" 4
-.el .IP "\f(CWid\-heading\fR=\f(CW0\fR|\f(CW1\fR" 4
-.IX Item "id-heading=0|1"
-Choose between printing the matching ids with option\ \fB\-\-id\fR:
-Inline\ (\f(CW0\fR) or heading before the matching data (\f(CW1\fR).
-Default:\ \f(CW0\fR.
-.ie n .IP """id\-heading\-format""=\fI\s-1FORMAT\s0\fR" 4
-.el .IP "\f(CWid\-heading\-format\fR=\fI\s-1FORMAT\s0\fR" 4
-.IX Item "id-heading-format=FORMAT"
-Control the \fI\s-1FORMAT\s0\fR for printing matching ids in heading-mode,
-where \fI\s-1FORMAT\s0\fR is passed to Perl's \f(CW\*(C`printf\*(C'\fR.
-Default:\ \f(CW\*(C`\-\->\ %s\ <\-\-\*(C'\fR.
-.ie n .IP """id\-indent""=\fI\s-1INDENT\s0\fR" 4
-.el .IP "\f(CWid\-indent\fR=\fI\s-1INDENT\s0\fR" 4
-.IX Item "id-indent=INDENT"
-Indentation of nested typog-inspect tags.
-Only used in ``discovery'' mode (first form), i.e., if \fB\-\-all\fR is active.
-Default:\ 8.
-.ie n .IP """id\-max\-length""=\fIMAXIMUM-LENGTH\fR" 4
-.el .IP "\f(CWid\-max\-length\fR=\fIMAXIMUM-LENGTH\fR" 4
-.IX Item "id-max-length=MAXIMUM-LENGTH"
-Set the maximum length of a matching id for printing.
-It a matching id exceeds this length it will be truncated
-and the last three characters (short of \fIMAXIMUM-LENGTH\fR) will be replaced by dots.
-Default:\ 40.
-.ie n .IP """line\-number\-format""=\fI\s-1FORMAT\s0\fR" 4
-.el .IP "\f(CWline\-number\-format\fR=\fI\s-1FORMAT\s0\fR" 4
-.IX Item "line-number-format=FORMAT"
-Control the \fI\s-1FORMAT\s0\fR for printing TeX source line numbers,
-where \fI\s-1FORMAT\s0\fR is passed to Perl's \f(CW\*(C`printf\*(C'\fR.
-Default:\ \f(CW%5d\fR.
-.ie n .IP """log\-line\-number\-format""=\fI\s-1FORMAT\s0\fR" 4
-.el .IP "\f(CWlog\-line\-number\-format\fR=\fI\s-1FORMAT\s0\fR" 4
-.IX Item "log-line-number-format=FORMAT"
-Control the \fI\s-1FORMAT\s0\fR for printing log line numbers,
-where \fI\s-1FORMAT\s0\fR is passed to Perl's \f(CW\*(C`printf\*(C'\fR.
-Default:\ \f(CW%6d\fR.
-.ie n .IP """page\-number\-format""=\fI\s-1FORMAT\s0\fR" 4
-.el .IP "\f(CWpage\-number\-format\fR=\fI\s-1FORMAT\s0\fR" 4
-.IX Item "page-number-format=FORMAT"
-Control the \fI\s-1FORMAT\s0\fR for printing page numbers,
-where \fI\s-1FORMAT\s0\fR is passed to Perl's \f(CW\*(C`printf\*(C'\fR.
-Default:\ \f(CW\*(C`[%3d]\*(C'\fR.
-.ie n .IP """pager""=\fI\s-1PAGER\s0\fR" 4
-.el .IP "\f(CWpager\fR=\fI\s-1PAGER\s0\fR" 4
-.IX Item "pager=PAGER"
-Name of pager application to pipe output into
-if run with option\ \fB\-\-pager\fR.
-Default:\ \f(CW\*(C`less\*(C'\fR.
-.ie n .IP """pager\-flags""=\fI\s-1FLAGS\s0\fR" 4
-.el .IP "\f(CWpager\-flags\fR=\fI\s-1FLAGS\s0\fR" 4
-.IX Item "pager-flags=FLAGS"
-Pass \fI\s-1FLAGS\s0\fR to \fI\s-1PAGER\s0\fR.
-Default:\ \f(CW\*(C`\-\-quit\-if\-one\-screen\*(C'\fR.
-.IP "Color Configuration" 4
-.IX Item "Color Configuration"
-For the syntax of the color specifications consult
-the manual page of Term::ANSIColor(pm).
-.RS 4
-.ie n .IP """file\-header\-color""" 4
-.el .IP "\f(CWfile\-header\-color\fR" 4
-.IX Item "file-header-color"
-Color of the filename header.
-.ie n .IP """fill\-state\-color""" 4
-.el .IP "\f(CWfill\-state\-color\fR" 4
-.IX Item "fill-state-color"
-Color of the messages that report ``Underfull hbox'' or ``Overfull hbox''.
-.ie n .IP """first\-vbox\-color""" 4
-.el .IP "\f(CWfirst\-vbox\-color\fR" 4
-.IX Item "first-vbox-color"
-Color of the first vbox on a page.
-.ie n .IP """font\-spec\-color""" 4
-.el .IP "\f(CWfont\-spec\-color\fR" 4
-.IX Item "font-spec-color"
-Color of font specifications.
-.ie n .IP """horizontal\-break\-candidate\-color""" 4
-.el .IP "\f(CWhorizontal\-break\-candidate\-color\fR" 4
-.IX Item "horizontal-break-candidate-color"
-Color of lines with horizontal-breakpoint candidates\ \f(CW\*(C`@\*(C'\fR.
-.ie n .IP """horizontal\-breakpoint\-color""" 4
-.el .IP "\f(CWhorizontal\-breakpoint\-color\fR" 4
-.IX Item "horizontal-breakpoint-color"
-Color of lines with horizontal breakpoints\ \f(CW\*(C`@@\*(C'\fR.
-.ie n .IP """id\-color""" 4
-.el .IP "\f(CWid\-color\fR" 4
-.IX Item "id-color"
-Color of matching ids when printed inline.
-.ie n .IP """id\-heading\-color""" 4
-.el .IP "\f(CWid\-heading\-color\fR" 4
-.IX Item "id-heading-color"
-Color of matching ids when printed in heading form.
-.ie n .IP """line\-break\-pass\-color""" 4
-.el .IP "\f(CWline\-break\-pass\-color\fR" 4
-.IX Item "line-break-pass-color"
-Color of the lines showing which pass (e.g., \f(CW@firstpass\fR)
-of the line-breaking algorithm is active.
-.ie n .IP """line\-number\-color""" 4
-.el .IP "\f(CWline\-number\-color\fR" 4
-.IX Item "line-number-color"
-Color of TeX-source-file line numbers.
-.ie n .IP """log\-line\-number\-color""" 4
-.el .IP "\f(CWlog\-line\-number\-color\fR" 4
-.IX Item "log-line-number-color"
-Color of log-file line numbers.
-.ie n .IP """math\-color""" 4
-.el .IP "\f(CWmath\-color\fR" 4
-.IX Item "math-color"
-Color used for math expressions including their font specs.
-.ie n .IP """page\-number\-color""" 4
-.el .IP "\f(CWpage\-number\-color\fR" 4
-.IX Item "page-number-color"
-Color of page numbers of the final output.
-.ie n .IP """tightness\-color""" 4
-.el .IP "\f(CWtightness\-color\fR" 4
-.IX Item "tightness-color"
-Color of lines with Tight/Loose hbox reports.
-.ie n .IP """vertical\-breakpoint\-color""" 4
-.el .IP "\f(CWvertical\-breakpoint\-color\fR" 4
-.IX Item "vertical-breakpoint-color"
-Color of possible vertical breakpoints.
-.RE
-.RS 4
-.RE
-.SS "Brief summary of colors and attributes"
-.IX Subsection "Brief summary of colors and attributes"
-.IP "Foreground Color" 4
-.IX Item "Foreground Color"
-\&\f(CW\*(C`black\*(C'\fR, \f(CW\*(C`red\*(C'\fR, \f(CW\*(C`green\*(C'\fR, \f(CW\*(C`yellow\*(C'\fR,
-\&\f(CW\*(C`blue\*(C'\fR, \f(CW\*(C`magenta\*(C'\fR, \f(CW\*(C`cyan\*(C'\fR, \f(CW\*(C`white\*(C'\fR,
-.Sp
-Prefix with \f(CW\*(C`bright_\*(C'\fR for high-intensity or bold foreground.
-.IP "Foreground Grey" 4
-.IX Item "Foreground Grey"
-\&\f(CW\*(C`grey0\*(C'\fR, ..., \f(CW\*(C`grey23\*(C'\fR
-.IP "Background Color" 4
-.IX Item "Background Color"
-\&\f(CW\*(C`on_black\*(C'\fR, \f(CW\*(C`on_red\*(C'\fR, \f(CW\*(C`on_green\*(C'\fR, \f(CW\*(C`on_yellow\*(C'\fR,
-\&\f(CW\*(C`on_blue\*(C'\fR, \f(CW\*(C`on_magenta\*(C'\fR, \f(CW\*(C`on_cyan\*(C'\fR, \f(CW\*(C`on_white\*(C'\fR
-.Sp
-Replace \f(CW\*(C`on_\*(C'\fR with \f(CW\*(C`on_bright_\*(C'\fR for high-intensity or bold background.
-.IP "Background Grey" 4
-.IX Item "Background Grey"
-\&\f(CW\*(C`on_grey0\*(C'\fR, ..., \f(CW\*(C`on_grey23\*(C'\fR
-.IP "Text Attribute" 4
-.IX Item "Text Attribute"
-\&\f(CW\*(C`bold\*(C'\fR, \f(CW\*(C`dark\*(C'\fR, \f(CW\*(C`italic\*(C'\fR, \f(CW\*(C`underline\*(C'\fR, \f(CW\*(C`reverse\*(C'\fR
-.SH "EXIT STATUS"
-.IX Header "EXIT STATUS"
-The exit status is 0 if at least one \fI\s-1ID\s0\fR matched \fI\s-1REGEXP\s0\fR,
-1 if no \fI\s-1ID\s0\fR matched \fI\s-1REGEXP\s0\fR, and 2 if an error occurred.
-.SH "SEE ALSO"
-.IX Header "SEE ALSO"
-\&\fBgrep\fR(1), \fBprintf\fR(3), \fBTerm::ANSIColor\fR(pm)
diff --git a/macros/latex/contrib/typog/docs/typog-grep.1.pdf b/macros/latex/contrib/typog/docs/typog-grep.1.pdf
index 09647860d5..9a43008508 100644
--- a/macros/latex/contrib/typog/docs/typog-grep.1.pdf
+++ b/macros/latex/contrib/typog/docs/typog-grep.1.pdf
Binary files differ
diff --git a/macros/latex/contrib/typog/docs/typog.pdf b/macros/latex/contrib/typog/docs/typog.pdf
index 9d00685045..fa0fe74e4c 100644
--- a/macros/latex/contrib/typog/docs/typog.pdf
+++ b/macros/latex/contrib/typog/docs/typog.pdf
Binary files differ
diff --git a/macros/latex/contrib/typog/typog.dtx b/macros/latex/contrib/typog/typog.dtx
index 0f2176206a..3037f502fa 100644
--- a/macros/latex/contrib/typog/typog.dtx
+++ b/macros/latex/contrib/typog/typog.dtx
@@ -3,11 +3,11 @@
% Copyright (C) 2024 by Ch. L. Spiel
%
% This work may be distributed and/or modified under the conditions
-% of the LaTeX Project Public License, either version 1.3 of this
+% of the LaTeX Project Public License, either version 1.3c of this
% license or (at your option) any later version. The latest version
% of this license is in
-% http://www.latex-project.org/lppl.txt
-% and version 1.3 or later is part of all distributions of LaTeX
+% https://www.latex-project.org/lppl.txt
+% and version 1.3c or later is part of all distributions of LaTeX
% version 2003/12/01 or later.
%
% \fi
@@ -26,7 +26,6 @@
\PassOptionsToClass{a4paper}{article}
\PassOptionsToPackage{hyperfootnotes=false}{hyperref}
-\PassOptionsToPackage{charter, scale=1.06}{newtxmath}
\PassOptionsToPackage{dvipsnames}{xcolor}
\usepackage{amsmath}
@@ -42,40 +41,43 @@
\usepackage{fullwidth}
\usepackage{hypdoc}
\usepackage{hyphenat}
-\usepackage[shrink=10, stretch=10]{microtype}
+\usepackage[kerning=true, shrink=10, stretch=10, verbose=true]{microtype}
\usepackage{multirow}
\usepackage{needspace}
-\usepackage{placeins}
+\usepackage[section]{placeins}
\usepackage{ragged2e}
\usepackage{setspace}
\usepackage{sidecap}
\usepackage{tabularx}
\usepackage{tcolorbox}
\usepackage{titlesec}\renewcommand*{\bottomtitlespace}{.15\textheight}%nobottomtitles*
-\usepackage[debug, raise*=.05em]{typog}
+\usepackage[debug, raise*=.05em,
+ uppercaselabelitemadjustments={.0125em, .075em, -.1em, .0125em},
+ lowercaselabelitemadjustments={-.075em, 0pt, -.2em, -.075em}]{typog}
\usepackage{xcolor}
\usepackage[default, lining, proportional, regular, semibold]{sourceserifpro}
\usepackage[lining, proportional, regular, semibold]{sourcesanspro}
\usepackage[lining, regular]{sourcecodepro}
-\usepackage[xcharter]{newtxmath}
+\usepackage[scaled=1.08, uprightscript, xcharter]{newtxmath}
\setbaselineskip{12.5pt}
+
\makeatletter
\def\@get@fontclan#1-#2\relax{#1}
\newcommand*{\fontclan}{\expandafter\@get@fontclan\f@family\relax}
\makeatother
-\newcommand*{\proportionalliningfigures}{\fontfamily{\fontclan-LF}\selectfont}
-\newcommand*{\proportionaloldstylefigures}{\fontfamily{\fontclan-OsF}\selectfont}
-\newcommand*{\tabularliningfigures}{\fontfamily{\fontclan-TLF}\selectfont}
-\newcommand*{\tabularoldstylefigures}{\fontfamily{\fontclan-TOsF}\selectfont}
+\DeclareRobustCommand{\proportionalliningfigures}{\fontfamily{\fontclan-LF}\selectfont}
+\DeclareRobustCommand{\proportionaloldstylefigures}{\fontfamily{\fontclan-OsF}\selectfont}
+\DeclareRobustCommand{\tabularliningfigures}{\fontfamily{\fontclan-TLF}\selectfont}
+\DeclareRobustCommand{\tabularoldstylefigures}{\fontfamily{\fontclan-TOsF}\selectfont}
-\newcommand*{\textdenominator}[1]{{\fontfamily{\fontclan-Dnom}\selectfont #1}}
-\newcommand*{\textinferior}[1]{{\fontfamily{\fontclan-Inf}\selectfont #1}}
-\newcommand*{\textnumerator}[1]{{\fontfamily{\fontclan-Numr}\selectfont #1}}
-\newcommand*{\textsuperior}[1]{{\fontfamily{\fontclan-Sup}\selectfont #1}}
+\DeclareRobustCommand{\textdenominator}[1]{{\fontfamily{\fontclan-Dnom}\selectfont #1}}
+\DeclareRobustCommand{\textinferior}[1]{{\fontfamily{\fontclan-Inf}\selectfont #1}}
+\DeclareRobustCommand{\textnumerator}[1]{{\fontfamily{\fontclan-Numr}\selectfont #1}}
+\DeclareRobustCommand{\textsuperior}[1]{{\fontfamily{\fontclan-Sup}\selectfont #1}}
\newcommand*{\nativetextfraction}[2]
{\mbox{\textnumerator{#1}\textfractionsolidus\textdenominator{#2}}}
@@ -85,21 +87,23 @@
\newenvironment*{tabfigures}
{\edef\rmdefault{\fontclan-T\sourceserifpro@figurestyle}\rm\ignorespaces}
{\ignorespacesafterend}
-
-\newcommand*{\elseries}{\def\mdseries@rm{el}\def\mdseries@sf{el}\def\mdseries@tt{el}}
-\newcommand*{\textel}[1]{{\elseries\textmd{#1}}}
-\newcommand*{\lseries}{\def\mdseries@rm{l}\def\mdseries@sf{l}\def\mdseries@tt{l}}
-\newcommand*{\textl}[1]{{\lseries\textmd{#1}}}
-%%--\newcommand*{\mdseries}{\def\mdseries@rm{m}\def\mdseries@sf{m}\def\mdseries@tt{m}}
-%%--\newcommand*{\textmd}[1]{{\mdseries\textmd{#1}}}
-\newcommand*{\sbseries}{\def\bfseries@rm{sb}\def\bfseries@sf{sb}\def\bfseries@tt{sb}}
-\newcommand*{\textsb}[1]{{\sbseries\textbf{#1}}}
-\newcommand*{\bseries}{\def\bfseries@rm{b}\def\bfseries@sf{b}\def\bfseries@tt{b}}
-\newcommand*{\textb}[1]{{\bseries\textbf{#1}}}
-\newcommand*{\ebseries}{\def\bfseries@rm{k}\def\bfseries@sf{eb}\def\bfseries@tt{k}}
-\newcommand*{\texteb}[1]{{\ebseries\textbf{#1}}}
\makeatother
+\DeclareRobustCommand{\elseries}{\fontseries{el}\selectfont}
+\DeclareTextFontCommand{\textel}{\elseries}
+\DeclareRobustCommand{\lseries}{\fontseries{l}\selectfont}
+\DeclareTextFontCommand{\textl}{\lseries}
+%%--\DeclareRobustCommand{\mdseries}{\fontseries{m}\selectfont}
+%%--\DeclareTextFontCommand{\textmd}{\mdseries}
+\DeclareRobustCommand{\sbseries}{\fontseries{sb}\selectfont}
+\DeclareTextFontCommand{\textsb}{\sbseries}
+\DeclareRobustCommand{\bseries}{\fontseries{b}\selectfont}
+\DeclareTextFontCommand{\textb}{\bseries}
+\DeclareRobustCommand{\ebseries}{\fontseries{eb}\selectfont}
+\DeclareTextFontCommand{\texteb}{\ebseries}
+\DeclareRobustCommand{\ubseries}{\fontseries{k}\selectfont}
+\DeclareTextFontCommand{\textub}{\ubseries}
+
\usepackage{cleveref}
@@ -112,7 +116,7 @@
citecolor = blue,
colorlinks = true,
linkcolor = blue,
- linktocpage = false,
+ linktocpage = true,
pdfauthor={Dr. Christoph L. Spiel},
pdfcreationdate={\pdffiledate},
pdfkeywords={LaTeX, typography, ligature, italic-correction, paragraph justification, baselineskip, sloppy, ragged},
@@ -124,9 +128,94 @@
}
+\SetExtraKerning[context=drop-left-sidebearing, name=source-code-normal, unit=space]
+ {font={T1/SourceCodePro-LF/m/n/44, T1/SourceCodePro-TLF/m/n/44}}
+ {
+ 1={-150,},
+ 2={-120,},
+ 3={-120,},
+ 4={-40,},
+ A={-100,},
+ B={-170,}
+ }
+
+\newlength{\sectiontocindent}
+\newlength{\sectionnumberwidth}
+\newlength{\subsectiontocindent}
+\newlength{\subsectionnumberwidth}
+\newlength{\subsubsectiontocindent}
+\newlength{\subsubsectionnumberwidth}
+
+\setlength{\sectiontocindent}{0pt}
+\setlength{\sectionnumberwidth}{40pt}
+\setlength{\subsectiontocindent}{40pt}
+\setlength{\subsectionnumberwidth}{25pt}
+\setlength{\subsubsectiontocindent}{65pt}
+\setlength{\subsubsectionnumberwidth}{30pt}
+
\makeatletter
-\renewcommand*{\@dotsep}{10000} % suppress leaders
-\patchcmd{\@dottedtocline}{\normalfont}{\bfseries}{\relax}{\PatchingFailed}
+\renewcommand*{\l@section}[2]
+ {\ifnum \c@tocdepth >\z@
+ \addpenalty\@secpenalty
+ \addvspace{1.0em \@plus\p@}%
+ \setlength{\@tempdima}{\sectionnumberwidth}%
+ \begingroup
+ \def\numberline##1{\hb@xt@\@tempdima{%
+ \tt\lseries
+ \fontsize{44}{0}\selectfont
+ \microtypecontext{kerning=drop-left-sidebearing}%
+ \iffalse\raisebox{-30pt}[0pt][0pt]{\rule{0.1pt}{40pt}}\fi
+ \textcolor{customred3}{##1}%
+ \hfil}}%
+ \parindent \z@
+ \rightskip \@pnumwidth
+ \parfillskip -\@pnumwidth
+ \leavevmode
+ \advance\leftskip\@tempdima
+ \hskip -\leftskip
+ \bfseries
+ \iffalse
+ \nobreak\hfil
+ \nobreak\hb@xt@\@pnumwidth{\hss #2\kern-\p@\kern\p@}%
+ \else
+ {\sffamily\large #1}\quad
+ {#2}\hfil\hbox{}
+ \fi
+ \par
+ \endgroup
+ \fi}
+
+\renewcommand*{\@dottedtocline}[5]
+ {\ifnum #1>\c@tocdepth
+ \else
+ \vskip \z@ \@plus.2\p@
+ \begingroup
+ \leftskip #2\relax
+ \rightskip \@tocrmarg
+ \parfillskip -\rightskip
+ \parindent #2\relax\@afterindenttrue
+ \interlinepenalty\@M
+ \leavevmode
+ \@tempdima #3\relax
+ \advance\leftskip \@tempdima
+ \null\nobreak
+ \hskip -\leftskip
+ {#4}\nobreak
+ \iffalse
+ \leaders\hbox{$\m@th \mkern \@dotsep mu\hbox{.}\mkern \@dotsep mu$}\hfill
+ \nobreak\hb@xt@\@pnumwidth{\hfil\normalfont \normalcolor #5\kern-\p@\kern\p@}%
+ \else
+ \hbox{\quad\normalfont\bfseries #5}\nobreak\hfill\hbox{}%
+ \fi
+ \par
+ \endgroup
+ \fi}
+
+\renewcommand*{\l@subsection}{\@dottedtocline{2}{\subsectiontocindent}{\subsectionnumberwidth}}
+\renewcommand*{\l@subsubsection}{\@dottedtocline{3}{\subsubsectiontocindent}{\subsubsectionnumberwidth}}
+\newrobustcmd*{\tocsquashedsubsections}
+ {\def\l@subsection{\@dottedtocline{2}{0pt}{\subsectionnumberwidth}}%
+ \def\l@subsubsection{\@dottedtocline{3}{0pt}{\subsubsectionnumberwidth}}}
\makeatother
@@ -171,7 +260,6 @@
leftmargin=!
}
-
\SetEnumitemKey{nestedinspecialsection}{
leftmargin=10pt
}
@@ -191,13 +279,15 @@
\fancypagestyle{pagenumberonly}{
+ \fancyhf{}
\fancyhead[L]{}
\fancyhead[R]{\thepage}
}
-\pagestyle{fancy}
-\fancyhf{}
-\fancyhead[L]{\rightmark}
-\fancyhead[R]{\thepage}
+\fancypagestyle{fancy}{
+ \fancyhf{}
+ \fancyhead[L]{\rightmark}
+ \fancyhead[R]{\thepage}
+}
\newcommand*{\resetfancyhead}
{\fancyhead[L]{\textsf{\textsc{\textls[20]{\nouppercase\rightmark}}}}}
@@ -239,8 +329,8 @@
\setlength{\skip\footins}{25pt}
-\setlength{\overfullrule}{3pt}
-\renewcommand*{\sidecaptionsep}{16pt}
+\setlength{\overfullrule}{0pt}
+\renewcommand*{\sidecaptionsep}{25pt}
@@ -272,13 +362,17 @@
\newcommand*{\citenum}[1]{\@nameuse{b@#1}}
\makeatother
-\def\code#1{\texttt{#1}}
+\renewcommand*{\code}[1]{\texttt{#1}}
+
+\newcommand*{\codelineindicator}{\mbox{\small$\mathscr{l}$}}
\newrobustcmd*{\command}[1]{\mbox{\textbf{#1}}}
+\newcommand*{\detoxindex}[1]{\index{\detokenize{#1}}}
+
\newcommand*{\doublequotes}[1]{\doubleguillemetright\kern-.03333em #1\doubleguillemetleft}
-\newcommand*{\dumpmacro}[1]{\texttt{\detokenize\expandafter{#1}}}
+\newcommand*{\dumpmacro}[1]{\texttt{\detokenize\expandafter{#1}\unskip}}
\newcommand*{\filesystem}[1]{\mbox{\textit{#1\/}}}
@@ -287,6 +381,12 @@
\newcommand*{\foreignphrase}[1]{\textsl{#1}}
+\makeatletter
+\newcommand*{\formatdimen}{\@ifstar{\@typog@rem@pt}{\@typog@strip@pt}}
+\newcommand*{\@typog@rem@pt}[1]{\dimen0=\dimexpr#1\relax\strip@pt\dimen0\,pt}
+\newcommand*{\@typog@strip@pt}[1]{\expandafter\strip@pt#1\relax\,pt}
+\makeatother
+
\newcommand*{\formatskip}[3]{#1\genfrac{}{}{0pt}{}{{+}#2}{{-}#3}}
\makeatletter
@@ -294,19 +394,46 @@
\renewcommand*{\fps@table}{htbp}
\makeatother
+\apptocmd{\GlossaryParms}
+ {\RaggedRight\normalsize}
+ {\relax}
+ {\AppendingFailed}
+
+\let\oldhdpindex=\hdpindex
+\renewcommand*{\hdpindex}[2]{\textbf{\oldhdpindex{#1}{#2}}}
+
+\let\oldhdclindex=\hdclindex
+\renewcommand*{\hdclindex}[2]
+ {\ifstrequal{#2}{code}
+ {\oldhdclindex{#1}{codeidx}}
+ {\oldhdclindex{#1}{#2}}}
+
\newcommand*{\hollowrectangle}[2]
{\setlength{\fboxrule}{.5pt}%
\setlength{\fboxsep}{0pt}%
\framebox{\rule{#1}{0pt}\rule{0pt}{#2}}}
\newcommand*{\hollowsquare}[1]{\hollowrectangle{#1}{#1}}
+\apptocmd{\IndexParms}
+ {\RaggedRight\small}
+ {\relax}
+ {\AppendingFailed}
\makeatletter
+\ExplSyntaxOn
\apptocmd{\index@prologue}
- {\marginnote{In the Index page ranges are stuck together with
- \hyperref[syn:figuredash]{\cs{figuredash*}}.}}
+ {\legacy_if:nTF {codeline@index}
+ {We\space prefix\space all\space references\space
+ to\space code\space lines\space with~\singlequotes{\codelineindicator}.}
+ {}}
{\relax}
{\AppendingFailed}
+
+\newcommand*{\linenumberdecoration}
+ {\legacy_if:nTF {codeline@index}
+ {\codelineindicator}
+ {}}
+\ExplSyntaxOff
\makeatother
\newcommand*{\logmacro}[1]
@@ -348,11 +475,27 @@
\AtBeginDocument{\setlength{\emreference}{\fontdimen6\font}}
\newrobustcmd*{\milliem}[1]
{\ifdim #1=0pt
- #1%
+ 0\,pt%
\else
\nativetextfraction{\the\numexpr\dimexpr (#1) * 1000 / \emreference}{1000}\:em%
\fi}
+\let\originalmulticols=\multicols
+\let\endoriginalmulticols=\endmulticols
+\RenewDocumentEnvironment{multicols}{m o o}
+ {\ifnum #1=1
+ \IfNoValueTF{#2}{\relax}{#2}%
+ \else
+ \IfNoValueTF{#2}
+ {\originalmulticols{#1}}
+ {\originalmulticols{#1}[#2]}%
+ \fi}
+ {\ifnum #1=1
+ \relax
+ \else
+ \endoriginalmulticols
+ \fi}
+
\newcommand*{\needtocspace}[1][3]
{\addtocontents{toc}{\protect\needspace{#1\baselineskip}}}
@@ -455,7 +598,7 @@
\newenvironment*{specialcodesection}[1]
{\Needspace{4\baselineskip}%
\begin{tcolorbox}[colback=white, colframe=\markercolor,
- bottomrule=0pt, leftrule=5pt, rightrule=0pt, toprule=0pt]
+ bottomrule=.5pt, leftrule=5pt, rightrule=.5pt, toprule=.5pt]
\sf\typogsetupsf
\begin{list}
{\specialcodesectionheading{#1}}
@@ -498,11 +641,37 @@
\begin{minipage}{\floatcaptionwidth}}
{\end{minipage}}
\newcommand*{\tablenotemark}[1]{\smash{\textsuperscript{#1}}}
+\newcommand*{\tablenotesymbol}[1]{% Bringhurst's "traditional order" (p69) from 1 to 6
+ \ifcase#1\relax
+ #1% 0
+ \or \textasteriskcentered% 1
+ \or \textdagger% 2
+ \or \textdaggerdbl% 3
+ \or \textsection% 4
+ \or \textbardbl% 5
+ \or \textsection% 6
+ \or \textasteriskcentered\textasteriskcentered%7
+ \or \textdagger\textdagger%8
+ \or \textdaggerdbl\textdaggerdbl%9
+ \else
+ #1
+ \fi
+}
\newcommand*{\termparbox}[1]{\parbox[t]{\linewidth}{#1\bottomstrut}}
\newcommand*{\thousandsseparator}{\mbox{,}}
+\ExplSyntaxOn
+\newcommand*{\titlecase}[1]{\text_titlecase:n {#1}}
+\ExplSyntaxOff
+
+\newcommand*{\toccontinuesonnextpage}
+ {\addtocontents{toc}{\par
+ \bigskip
+ \hfill\textit{Table of Contents continued on next page.}\par
+ \protect\clearpage}}
+
\newcommand*{\topstrut}{\rule{0pt}{1.3em}}
\newcommand*{\typogsetuprm}
@@ -514,11 +683,16 @@
{\typogsetup{raise*=.06667em,
raiseguillemets=.05em}}
+\newcommand*{\unmarkedfntext}[1]
+ {{\def\thefootnote{}\footnote{#1}%
+ \addtocounter{footnote}{-1}}}
+
+\newcommand*{\userman}[1]{\textbf{\hyperpage{#1}}}%%-- https://github.com/ho-tex/hypdoc/issues/11
+
\newcommand*{\visualpar}{\textcolor{\markercolor}{\P}\linebreak[1]\enspace}
\newenvironment*{whittyquote}
{\begin{flushright}
- \renewcommand*{\propername}[1]{\mbox{##1}}%
\sf\typogsetupsf}
{\end{flushright}}
@@ -532,7 +706,6 @@
\end{minipage}
\end{maxipage}}
-
\NewDocElement[macrolike = true,
idxtype = dim.,
idxgroup = dimensions,
@@ -547,6 +720,20 @@
{EnumItemKey}{enumitemkey}
\pretocmd{\DescribeEnumItemKey}{\needspace{25pt}}{\relax}{\PrependingFailed}
+\NewDocElement[macrolike = true,
+ idxtype = skip,
+ idxgroup = \LaTeX{} length (skip),
+ printtype = \textit{skip}]
+ {LaTeXSkip}{lskip}
+\pretocmd{\DescribeLaTeXSkip}{\needspace{25pt}}{\relax}{\PrependingFailed}
+
+\NewDocElement[macrolike = true,
+ idxtype = counter,
+ idxgroup = \protect\TeX{} counters,
+ printtype = \textit{counter}]
+ {TeXCounter}{tcounter}
+\pretocmd{\DescribeTeXCounter}{\needspace{25pt}}{\relax}{\PrependingFailed}
+
\hyphenation{% https://hyphenateit.com/en-us
Double-guillemet-left
@@ -585,6 +772,8 @@
line-width
loose-ness
loose-spacing
+ lower-case-adjust-label-items
+ lower-case-label-item-adjustments
make-at-letter
make-at-other
mar-gin-al
@@ -612,6 +801,7 @@
set-leading
set-leading-percentage
short-inter-text
+ shrink-limits
single-guillemet-left
single-guillemet-right
single-quotes
@@ -625,6 +815,7 @@
smooth-ragged-right-shape-septuplet
smooth-ragged-right-shape-triplet
space-skip
+ stretch-limits
text-italics-correction
tight-spacing
tracing-boxes
@@ -632,6 +823,8 @@
tracking-tt-spacing
typog-get
typog-setup
+ upper-case-adjust-label-items
+ upper-case-label-item-adjustments
vtie-bot
vtie-bot-disp
vtie-bot-disp-par
@@ -648,29 +841,52 @@
\begin{document}
\typogsetuprm
+ \uppercaseadjustlabelitems{*}
\DocInput{typog.dtx}
\end{document}
%</driver>
%<*index-style>
actual '='
+delim_0 "\\nobreak\\enspace"
+delim_1 "\\nobreak\\enspace"
+delim_2 "\\nobreak\\enspace"
delim_r "\\figuredash*"
heading_prefix "\\pagebreak[3]\\smallskip\n\n{\\sffamily\\bfseries\\large "
heading_suffix "}\\nopagebreak\n"
headings_flag 1
level '>'
+line_max 65536
quote '!'
%</index-style>
+%<*changes-style>
+actual '='
+delim_0 "\\nobreak\\enspace"
+delim_1 "\\nobreak\\enspace"
+delim_2 "\\nobreak\\enspace"
+heading_prefix "\\pagebreak[3]\\smallskip\n\n{\\sffamily\\bfseries\\large "
+heading_suffix "}\\nopagebreak\n"
+headings_flag 0
+item_x1 "\\efill\n\\subitem "
+item_x2 "\\ "
+keyword "\\glossaryentry"
+level '>'
+line_max 65536
+postamble "\n\\end{theglossary}\n"
+preamble "\\begin{theglossary}\n \\makeatletter\\scan@allowedfalse"
+quote '!'
+%</changes-style>
% \fi
%
%
% \DoNotIndex{\,}
-% \DoNotIndex{\addtolength,\advance,\aftergroup,\allowdisplaybreaks,\arabic}
-% \DoNotIndex{\AtBeginDocument,\autotransfer}
-% \DoNotIndex{\baselineskip}
-% \DoNotIndex{\c,\char,\clubpenalties,\clubpenalty,\count,\cs,\csname}
+% \DoNotIndex{\\}
+% \DoNotIndex{\addtocounter,\addtolength,\advance,\aftergroup,\allowdisplaybreaks,\arabic,\arraystretch}
+% \DoNotIndex{\AfterEndPreamble,\AfterPreamble,\AtBeginDocument,\autotransfer}
+% \DoNotIndex{\baselineskip,\begin,\begingroup,\booltrue,\box}
+% \DoNotIndex{\c,\char,\clist,\clubpenalties,\clubpenalty,\count,\cs,\csname}
% \DoNotIndex{\DeclareRobustCommand,\def,\define@choicekey,\define@key,\detokenize}
% \DoNotIndex{\dim,\dimen,\dimexpr,\discretionary,\displaywidowpenalties,\displaywidowpenalty}
-% \DoNotIndex{\edef,\else,\emergencystretch,\empty,\endcsname}
+% \DoNotIndex{\edef,\else,\emergencystretch,\empty,\end,\endcsname,\endgroup}
% \DoNotIndex{\endlastlineflushrightpar}
% \DoNotIndex{\endlastlineraggedleftpar}
% \DoNotIndex{\endnofontexpand,\endnofontexpansion}
@@ -679,33 +895,37 @@ quote '!'
% \DoNotIndex{\endsmoothraggedrightshapetriplet}
% \DoNotIndex{\endtypoginspect}
% \DoNotIndex{\exhyphenpenalty,\expandafter,\ExplSyntaxOff,\ExplSyntaxOn}
-% \DoNotIndex{\fi,\finalhyphendemerits,\font,\fontdimen,\fp,\fussy,\futurelet}
+% \DoNotIndex{\fi,\finalhyphendemerits,\font,\fontdimen,\forcsvlist,\fp,\fpeval,\fussy,\futurelet}
% \DoNotIndex{\gdef,\global,\glueexpr,\@gobble}
% \DoNotIndex{\guillemotleft,\guillemotright,\guilsinglleft,\guilsinglright}
-% \DoNotIndex{\hbadness,\hfuzz,\hskip,\hspace}
+% \DoNotIndex{\hbadness,\hbox,\hfuzz,\hskip,\hspace,\ht}
% \DoNotIndex{\ignorespaces,\ignorespacesafterend}
-% \DoNotIndex{\if,\IfBooleanT,\IfBooleanTF,\ifcase,\ifdefined,\ifdim,\iffalse,\ifmmode,\ifMT@expansion}
-% \DoNotIndex{\@ifnextchar,\IfNoValueF,\IfNoValueTF,\ifnum}
+% \DoNotIndex{\if,\ifblank,\ifbool,\IfBooleanT,\IfBooleanTF,\ifcase,\ifdefined,\ifdim,\iffalse,\ifmmode}
+% \DoNotIndex{\ifMT@expansion,\@ifnextchar,\IfNoValueF,\IfNoValueTF,\ifnum,\ifodd,\ifstrequal}
% \DoNotIndex{\iftypog@microtype@loadedfalse}
% \DoNotIndex{\iftypog@microtype@preloadedfalse}
-% \DoNotIndex{\ifvmode,\ifx,\ignorespaces,\inputlineno,\int,\interlinepenalty}
+% \DoNotIndex{\ifvmode,\ifx,\ignorespaces,\inputlineno,\int,\interlinepenalty,\itemize}
% \DoNotIndex{\jobname}
% \DoNotIndex{\kern}
-% \DoNotIndex{\l,\lastlinefit,\lastlineflushrightpar,\lastlineraggedleftpar,\leftmargin,\leftskip,\let}
-% \DoNotIndex{\linepenalty,\linewidth,\@listdepth,\looseness,\lsstyle}
-% \DoNotIndex{\@M,\m@th,\mathbin,\mathord,\maxdimen,\message,\microtypecontext,\microtypesetup}
+% \DoNotIndex{\l,\labelitemi,\labelitemii,\labelitemiii,\labelitemiv}
+% \DoNotIndex{\lastlinefit,\lastlineflushrightpar,\lastlineraggedleftpar}
+% \DoNotIndex{\lefthyphenmin,\leftmargin,\leftskip,\let,\letcs}
+% \DoNotIndex{\linepenalty,\linewidth,\@listdepth,\loop,\looseness,\lsstyle}
+% \DoNotIndex{\@M,\m@th,\mathbin,\mathord,\maxdimen,\mbox,\message,\microtypecontext,\microtypesetup}
% \DoNotIndex{\@minus,\mkern,\m@ne,\mspace,\MT@letterspace@,\MT@MT,\muexpr}
-% \DoNotIndex{\@ne,\NeedsTeXFormat,\NewDocumentCommand,\NewDocumentEnvironment,\newcommand,\newenvironment}
-% \DoNotIndex{\newcounter,\newdimen,\newif,\newlength,\newmuskip}
+% \DoNotIndex{\@ne,\NeedsTeXFormat,\newbool,\NewDocumentCommand,\NewDocumentEnvironment}
+% \DoNotIndex{\newcommand,\newenvironment}
+% \DoNotIndex{\newcounter,\newdimen,\newif,\newlength,\newline,\newmuskip}
% \DoNotIndex{\nobreak,\nofontexpand,\nofontexpansion,\nr,\numexpr}
% \DoNotIndex{\or,\optarg}
% \DoNotIndex{\p@,\PackageError,\PackageWarning}
-% \DoNotIndex{\par,\parfillskip,\parindent,\parshape,\pdf@strcmp}
+% \DoNotIndex{\par,\parfillskip,\parindent,\parshape,\patchcmd,\pdf@strcmp}
% \DoNotIndex{\pdfstringdefDisableCommands}
% \DoNotIndex{\penalty,\@plus,\PopPostHook,\postdisplaypenalty,\predisplaypenalty,\prg}
% \DoNotIndex{\pretolerance,\protected,\ProvidesPackage,\PushPostHook}
-% \DoNotIndex{\raisebox,\refstepcounter,\relax,\RenewExpandableDocumentCommand,\RequirePackage,\rightskip}
-% \DoNotIndex{\setcounter,\SetEnumitemKey,\SetExpansion,\setkeys,\setlength,\setstretch}
+% \DoNotIndex{\raisebox,\refstepcounter,\relax,\RenewExpandableDocumentCommand,\repeat,\RequirePackage}
+% \DoNotIndex{\righthyphenmin,\rightskip,\rlap,\romannumeral,\rule}
+% \DoNotIndex{\setbox,\setcounter,\SetEnumitemKey,\SetExpansion,\setkeys,\setlength,\setstretch}
% \DoNotIndex{\showboxbreadth,\showboxdepth,\skip,\sloppy}
% \DoNotIndex{\smoothraggedrightpar}
% \DoNotIndex{\smoothraggedrightshapequintuplet}
@@ -715,9 +935,9 @@ quote '!'
% \DoNotIndex{\textemdash,\textendash,\textsf,\textsl,\texttimes,\textwidth,\the,\times,\tl,\tolerance}
% \DoNotIndex{\tracingnone,\tracingpages,\tracingparagraphs}
% \DoNotIndex{\typeout,\typoginspect,\typoglogo}
-% \DoNotIndex{\unless}
+% \DoNotIndex{\unhbox,\unless}
% \DoNotIndex{\val,\value,\vbadness,\vfuzz}
-% \DoNotIndex{\widowpenalties,\widowpenalty}
+% \DoNotIndex{\wd,\widowpenalties,\widowpenalty}
% \DoNotIndex{\z@,\z@skip}
%
%
@@ -828,7 +1048,8 @@ end
% \footnotesize
% \noindent
% This package is copyright \textcopyright~2024 Ch.~L.~Spiel. It may be distributed
-% and\kernedslash*or modified under the conditions of the \LaTeX{} Project Public License
+% and\kernedslash*or modified under the conditions of the
+% \href{https://www.latex-project.org/lppl.txt}{\LaTeX{} Project Public License}
% \acronym{(LPPL)}, either version~1.3c of this license or --~at your option~-- any later
% version. This work has the \acronym{LPPL} maintenance status
% \doublequotes{author-maintained}.
@@ -836,30 +1057,36 @@ end
%
%
% \clearpage
-% \thispagestyle{pagenumberonly}
-% \tableofcontents
-% \vspace{\fill}
+% \pagestyle{pagenumberonly}
%
+% \unmarkedfntext{The font sample on the title page was generated with the help of \MP{} using
+% \doublequotes{\acronym{URW}~Palladio}%
+% \detoxindex{font>typeface>URW Palladio=\acronym{URW} Palladio|userman}.}
%
-% \thispagestyle{pagenumberonly}
-% \listoftables
-% \phantomsection
-% \addcontentsline{toc}{subsection}{List of Tables}
-% \vspace{\fill}
+% \begin{nofontexpansion}
+% \begin{nocharprotrusion}
+% \tableofcontents
+% \end{nocharprotrusion}
+% \end{nofontexpansion}
%
+% \addtocontents{toc}{%
+% \protect\begin{whittyquote}
+% Hoffentlich wird es nicht so schlimm, wie es schon ist! \\
+% \capitalemdash*~\propername{Karl Valentin}
+% \protect\end{whittyquote}\par}
%
-% \begingroup
-% \footnotesize
-% \singlespacing
-% \noindent
-% The font sample on the title page was generated with the help of \MP{} using
-% \doublequotes{\acronym{URW} Palladio~L}\index{font>URW Palladio L=\acronym{URW} Palladio
-% L}.
-% \endgroup
+% \vspace{\fill}
+%
+% \begin{nofontexpansion}
+% \begin{nocharprotrusion}
+% \listoftables
+% \end{nocharprotrusion}
+% \end{nofontexpansion}
%
%
% \clearpage
% \pagenumbering{arabic}
+% \pagestyle{fancy}
% \section{Introduction}\label{sec:introduction}
%
% \begin{whittyquote}
@@ -892,7 +1119,10 @@ end
% \Cref{sec:latex-hyphenation} expands the hyphenation facilities of \LaTeX.
%
% \Cref{sec:break-ligatures,sec:manual-italic-correction,sec:extra-kerning,sec:raise-characters}
-% deal with vertically positioning glyphs in a more pleasant way.
+% deal with vertically positioning glyphs in a more pleasant way. Also in the realm of
+% vertical alignments is \cref{sec:adjust-label-items} that explains how to height-adjust the
+% labels in |itemize|~lists to perfection whether the items are followed by uppercase or by
+% lowercase letters.
%
% \Cref{sec:align-last-line,sec:fill-last-line} discuss dearly missed macros for better control
% of the last line of a paragraph.
@@ -950,15 +1180,17 @@ end
% \end{tabbing}
% \end{synopsis}
%
-% \index{package options|(}
-% The package \meta{OPTIONs} serve as configuration \meta{key}s, too. This means they can be
-% set with \hyperref[syn:typogsetup]{\code{typogsetup}} and their values can be retrieved with
-% \hyperref[syn:typogget]{\cs{typogget}}. Options that rely on package~\packagename{microtype}
-% are indicated with \doublequotes{\microtyperequiredmarker}.
+% \index{package options|(userman}
+% The package \meta{OPTIONs} also serve as configuration \meta{key}s (unless noted otherwise).
+% This means they can be set with \hyperref[syn:typogsetup]{\code{typogsetup}} and their values
+% can be retrieved with \hyperref[syn:typogget]{\cs{typogget}}. Options that rely on
+% package~\packagename{microtype} are indicated with \doublequotes{\microtyperequiredmarker}.
%
% \begin{typogsetup}{}
% \newcommand*{\indexpackageoption}[1]
-% {\index{package option>#1=\code{#1}}\index{#1=\code{#1}~(option)}\ignorespaces}
+% {\detoxindex{package option>#1=\code{#1}|userman}%
+% \detoxindex{#1=\code{#1}~(option)|userman}%
+% \ignorespaces}
% \begin{description}
% [before={\let\oldmakelabel=\makelabel
% \renewcommand{\makelabel}[1]
@@ -978,17 +1210,44 @@ end
% \item[|debug|, |nodebug|]\label{item:debug}
% \indexpackageoption{debug}
% \indexpackageoption{nodebug}
-% Write package-specific debug information to the log file. Opposite: |nodebug|. The
-% default is not to log debug information.
+% Write some package-specific debug information to the \filesystem{log}~file. Opposite:
+% |nodebug|. The default is not to record debug information.
+%
+% These two options neither can be used with \hyperref[syn:typogsetup]{\code{typogsetup}}
+% nor with \hyperref[syn:typogget]{\cs{typogget}}.
%
% \item[|ligaturekern=|\meta{dim}]\label{item:ligaturekern}
% \indexpackageoption{ligaturekern}
% Set \meta{dim} of the kern that is inserted to split a ligature in
% macro\hyperref[syn:nolig]{\cs{nolig}}. See
-% \cref{sec:break-ligatures}.\shiftedmarginnote{We access the configuration values with
-% \hyperref[syn:typogget]{\cs{typogget}}.} Default
+% \cref{sec:break-ligatures}.\shiftedmarginnote{We access all the (default) configuration
+% values with \hyperref[syn:typogget]{\cs{typogget}}.} Default
% value:~\milliem{\typogget{ligaturekern}}.
%
+% \item[|lowercaselabelitemadjustments=\{|\meta{dim1}, \meta{dim2}, \meta{dim3}, \meta{dim4}|\}|]%
+% \label{item:lowercaselabelitemadjustments}
+% \indexpackageoption{lowercaselabelitemadjustments}
+% \sinceversion{Since v0.4}
+% Vertical shifts \meta{dimN} to apply to \cs{labelitem}\meta{N}, where \meta{N} is the
+% nesting level of the |itemize|~list starting at one. An empty \meta{dimN} is equivalent
+% to~\formatdimen*{0pt}. The adjustments apply to the lowercase setting
+% (\hyperref[syn:lowercaseadjustlabelitems]{\code{\string\lowercaseadjustlabelitems}}).
+% See \cref{sec:adjust-label-items} (in particular subsection~\singlequotes{Setup} and
+% \cref{tab:labelitemadjustvalues} on \cpageref{tab:labelitemadjustvalues}) and also
+% configuration option
+% \hyperref[item:uppercaselabelitemadjustments]{\code{uppercaseadjustlabelitem}}.
+%
+% All four lengths default to~\formatdimen*{0pt}.
+%
+% \begin{important}
+% \slightlysloppy
+% \noindent
+% Configuring \code{lowercaselabelitemadjustments} (or
+% \code{uppercaselabelitemadjustments}) does \emph{not} activate the correction
+% mechanism. Use one of the macros \code{\string\lowercaseadjustlabelitems} or
+% \code{\string\uppercaseadjustlabelitems} for that purpose.
+% \end{important}
+%
% \item[|mathitalicscorrection=|\meta{dim}]\label{item:mathitalicscorrection}
% \indexpackageoption{mathitalicscorrection}
% Italics correction in math mode. See \cref{sec:manual-italic-correction} and also the
@@ -1000,10 +1259,14 @@ end
% \item[|raise*=|\meta{dim}]\label{item:raise}
% \indexpackageoption{raise*}
% Set the length by which selected characters (dash, hyphen, times, and number dash) are
-% raised. Default value:~0pt.
+% raised. Default value:~\formatdimen*{0pt}.
%
% Only the raise amounts for guillemets are unaffected by this option.
%
+% This option neither can be used with \hyperref[syn:typogsetup]{\code{typogsetup}} nor
+% with \hyperref[syn:typogget]{\cs{typogget}}, however, the specific options influenced by
+% it can.
+%
% \item[|raisecapitaldash=|\meta{dim}]\label{item:raisecapitaldash}
% \indexpackageoption{raisecapitaldash}
% Set the length that the \cs{textendash} is raised in
@@ -1093,6 +1356,30 @@ end
% \emph{not} in the document body.
%
% By default this option is unset.
+%
+% \item[|uppercaselabelitemadjustments=\{|\meta{dim1}, \meta{dim2}, \meta{dim3}, \meta{dim4}|\}|]%
+% \label{item:uppercaselabelitemadjustments}
+% \indexpackageoption{uppercaselabelitemadjustments}
+% \sinceversion{Since v0.4}
+% Vertical shifts \meta{dimN} to apply to \cs{labelitem}\meta{N}, where \meta{N} is the
+% nesting level of the |itemize|~list starting at one. An empty \meta{dimN} is equivalent
+% to~\formatdimen*{0pt}. The adjustments apply to the uppercase setting
+% (\hyperref[syn:uppercaseadjustlabelitems]{\code{\string\uppercaseadjustlabelitems}}).
+% See \cref{sec:adjust-label-items} (in particular subsection~\singlequotes{Setup} and
+% \cref{tab:labelitemadjustvalues} on \cpageref{tab:labelitemadjustvalues}) and also
+% configuration option
+% \hyperref[item:lowercaselabelitemadjustments]{\code{lowercaseadjustlabelitem}}.
+%
+% All four lengths default to~\formatdimen*{0pt}.
+%
+% \begin{important}
+% \slightlysloppy
+% \noindent
+% Configuring \code{uppercaselabelitemadjustments} (or
+% \code{lowercaselabelitemadjustments}) does \emph{not} activate the correction
+% mechanism. Use one of the macros \code{\string\uppercaseadjustlabelitems} or
+% \code{\string\lowercaseadjustlabelitems} for that purpose.
+% \end{important}
% \end{description}
% \end{typogsetup}
% \index{package options|)}
@@ -1116,12 +1403,13 @@ end
% issues a \cs{par} at its end. Environments with different name suffixes never close
% with~\cs{par}.
%
-% \bigskip
%
-% \noindent
+% \subsection{Setup and Reconfiguration}\label{sec:setup}
+%
% \DescribeEnv{typogsetup}
-% Configure\index{configuration}\index{setup} the package with the given \meta{keys}. An empty
-% argument of \code{typogsetup} resets all \meta{keys} to their default values.
+% Configure\index{configuration|userman}\index{setup|userman} the package with the given
+% \meta{keys}. An empty argument of \code{typogsetup} resets all \meta{keys} to their default
+% values.
%
% \begin{synopsis}\label{syn:typogsetup}
% \cs{begin}|{typogsetup}|\marg{keys}
@@ -1129,7 +1417,7 @@ end
% \cs{end}|{typogsetup}|
% \end{synopsis}
%
-% The package can be (re-)configured\index{reconfigure} at any point with
+% The package can be (re-)configured\index{reconfigure|userman} at any point with
% \cs{typogsetup}\marg{keys}, or --~for localized changes~-- as
%
% \begin{codeexample}
@@ -1143,6 +1431,12 @@ end
% where \meta{keys} have the same format as the package options described in
% \cref{sec:package-options}.
%
+% \begin{note}
+% Use \code{\string\PassOptionsToPackage\{\meta{keys}\}\{typog\}} to pass \meta{keys} to
+% \packagename{typog} before loading it and \code{\string\typogsetup\{\meta{keys}\}} after
+% \code{\string\usepackage\{typog\}}.
+% \end{note}
+%
% \begin{usecases}
% \cs{typogsetup} can substitute configuring the package at load-time or serve as an
% addition.~\visualpar Using the |typogsetup|~environment allows to fine-tune the parameters
@@ -1154,9 +1448,9 @@ end
%
% \noindent
% \DescribeMacro{\typogget}
-% Sometimes the user needs to access internal configuration values of
-% package~\packagename{typog}. This can be done in a safe way without resorting to code that
-% is bracketed by \cs{makeatletter}/\cs{makeatother} with the help of the following macro.
+% Sometimes the user needs to access configuration values of package~\packagename{typog}. This
+% can be done in a safe way without resorting to code that is bracketed by \cs{makeatletter}
+% and \cs{makeatother} with the help of the following macro.
%
% \begin{synopsis}\label{syn:typogget}
% \cs{typogget}\marg{key}
@@ -1177,15 +1471,47 @@ end
% \> \{\cs{raisebox}\= \{\cs{typogget}\{raisecapitaldash\}\}\{\cs{cdot}\}\}
% \end{codeexample}
%
-% The latter only is useful inside of an \code{itemize}~environment of course.
+% The latter only is useful inside of an \code{itemize}~environment of course. Compare with
+% the solution in \cref{sec:adjust-label-items} offered by \packagename{typog} since v0.4.
% \end{usecase}
%
+% \DescribeMacro{\typoggetnth}
+% \sinceversion{Since v0.4}
+% If a configuration item is associated with a list as
+% \hyperref[item:lowercaselabelitemadjustments]{\code{lowercaselabelitemadjustments}},
+% \hyperref[item:shrinklimits]{\code{shrinklimits}},
+% \hyperref[item:stretchlimits]{\code{stretchlimits}},
+% \hyperref[item:trackingttspacing]{\code{trackingttspacing}}, and
+% \hyperref[item:uppercaselabelitemadjustments]{\code{uppercaselabelitemadjustments}} are, it
+% may be convenient to fetch a particular list element of it.
+%
+% \begin{synopsis}\label{syn:typoggetnth}
+% \cs{typoggetnth}\marg{csname}\marg{key}\marg{index} \\
+% \cs{typoggetnth}\marg{dimen-register}\marg{key}\marg{index}
+% \end{synopsis}
+%
+% Retrieve the configuration value --~which is a comma-separated list~-- that is associated
+% with~\meta{key} and store the item having position~\meta{index} in \meta{dimen-register} or
+% the parameter-less, global macro~\meta{csname}. The destination \meta{dimen-register} may be
+% predefined like, e.\,g., \cs{dimen0} or user-defined. Dimensions can also be stored in a
+% macro by using the \meta{csname}~form of \cs{typoggetnth} but not \foreignphrase{vice versa}.
+%
+% Index into the list either from left-to-right with positive indices starting at~\(1\) up to
+% the length of the list, or from right-to-left with negative indices starting at~\(-1\) down
+% to the negative length.
+%
+% \begin{note}
+% Macro~\cs{typoggetnth} \emph{only} works with \meta{key}s that are associated with a list
+% of values.
+% \end{note}
+%
%
-% \subsection{Information}\label{sec:information}\index{information}
+% \subsection{Information}\label{sec:information}
+% \index{information|userman}
%
% \begin{whittyquote}
% Never forget: The visual output counts; \\
-% it must always be checked, [\dots]. \\
+% it must always be checked, [\dots\itcorr{-4}]. \\
% \marginnote{The em-dash at then end of the quote is height-adjusted with
% \hyperref[syn:capitalemdash]{\cs{capitalemdash*}}.}%
% \capitalemdash*~\propername{Udo Wermuth}~\cite{wermuth:2017a}
@@ -1196,14 +1522,14 @@ end
%
%
% \subsubsection{Font Information}\label{sec:font-information}
-% \index{font>information}
+% \index{font>information|userman}
%
% \DescribeMacro{\fontsizeinfo}
% Capture the font~size\footnote{We use \cs{fontdimen6}, the em-height as the font
-% size.}\index{font>size} and line~spacing\footnote{The line~spacing simply is
-% \cs{baselineskip}.}\index{line spacing} at the point where \cs{fontsizeinfo} \emph{is called}
-% in macro~\meta{cs-name}. Both dimensions are measured in points~(pt) and the results are
-% rounded to tenths.
+% size.}\index{font>size|userman} and line~spacing\footnote{The line~spacing simply is
+% \cs{baselineskip}.}\index{line spacing|userman} at the point where \cs{fontsizeinfo} \emph{is
+% called} in macro~\meta{cs-name}. Both dimensions are measured in points~(pt) and the results
+% are rounded to tenths.
%
% \begin{synopsis}\label{syn:fontsizeinfo}
% \cs{fontsizeinfo}\marg{cs-name}
@@ -1259,9 +1585,8 @@ end
%
% \begin{caution}
% The end-of-trace marker sometimes gets placed too early and the trace seems truncated.
-% \LaTeX{} reliably logs the requested the trace information, but the write operations for
-% trace data and \cs{immediate}\cs{write} which is used to print the end-tag are not
-% synchronized.
+% \LaTeX{} reliably logs the requested trace information, but the write operations for trace
+% data and \cs{immediate}\cs{write} which is used to print the end-tag are not synchronized.
% \end{caution}
%
%
@@ -1287,7 +1612,8 @@ end
%
% \begin{itemize}[noindent]
% \item Any text tool can be used to ferret out the tags. \propername{Emacs} users will find
-% \mbox{\code{(occur \meta{regexp})}} to be useful.
+% \mbox{\code{(occur \meta{regexp})}} to be useful.\shiftedmarginnote{This \code{itemize}
+% list demonstrates vertically adjusted label items (\cref{sec:adjust-label-items}).}
%
% \item As long as the tags are not nested \programname{sed} or \programname{perl}
% extract the information gathered by~|typoginspect|, for example:
@@ -1338,13 +1664,20 @@ end
%
% \item If more trace information is needed just add \cs{tracing\dots} calls right after
% \code{\string\begin\{typoginspect\}}
-% or~\code{\string\begin\{typoginspectpar\}}.\specialsectionendhere
+% or~\code{\string\begin\{typoginspectpar\}}.
+%
+% \item As the overhead of \cs{typoginspect} is relatively low, hairy parts of a document can
+% permanently be furnished with them, for example, the Index.
+%
+% \item Any labeled part can treat their ids to \meta{id}. Think of \cs{caption}s or any
+% theorem-like environment and their associated, unique \cs{label}s.\specialsectionendhere
% \end{itemize}
% \end{tips}
%
%
% \phantomsection
-% \paragraph{Investigating the badness of a paragraph.}\label{sec:investigating-paragraph-badness}\index{paragraph>badness}
+% \paragraph{Investigating the badness of a paragraph.}\label{sec:investigating-paragraph-badness}
+% \index{paragraph>badness|userman}
%
% It is generally unnecessary to determine the \emph{exact} classification of a paragraph's
% badness~\cite[p.~97n]{knuth:1986}, though the curious user can switch on logging of
@@ -1386,9 +1719,9 @@ end
% \begin{enumerate}[beginpenalty=10000, nosep]
% \item The shortfall~\sample{s} and
% \item glue~\sample{a} or~\sample{g}.\footnote{The author is unaware of any descriptions
-% of \code{s}, \code{a}, or~\code{g}. The interested reader is referred to the source
-% code, e.\,g., \filesystem{pdftex.web}; search for \code{print("\textvisiblespace s=")}.
-% In the weaved documentation the first relevant section is~\S1851.}
+% of \sample{s}, \sample{a}, or~\sample{g} and the interested reader is referred to the
+% source code, e.\,g., \filesystem{pdftex.web}; search for \code{print("\textvisiblespace
+% s=")}. In the weaved documentation the first relevant section is~\S1851.}
% \end{enumerate}
% \item The best\footnote{\singlequotes{Best} means the minimum-demerits path in the graph of
% the feasible breakpoints, which has been constructed for the paragraph.} way to get
@@ -1404,13 +1737,13 @@ end
% as parenthesized values (units are thousandths of the current font's~em) like, e.\,g.,
%
% \begin{codeexample}
-% \textbackslash T1/erewhon-LF/m/n/9/@/@ (-13) \dots
+% \textbackslash T1/erewhon-LF/m/n/9/@/@ (-13) \dots
% \end{codeexample}
%
% or
%
% \begin{codeexample}
-% \textbackslash T1/erewhon-LF/m/n/9/@/@/10ls (+7) \dots
+% \textbackslash T1/erewhon-LF/m/n/9/@/@/10ls (+7) \dots
% \end{codeexample}
%
% An \sample{ls} appended to the font name specification indicates that
@@ -1419,7 +1752,9 @@ end
% \end{note}
%
%
-% \paragraph{Investigating page-breaks.}\index{page break}
+% \phantomsection
+% \paragraph{Investigating page-breaks.}
+% \index{page break|userman}
%
% Use \code{\cs{tracingpages}=1} or the \hyperref[syn:typoginspect]{typoginspect}~environment
% to switch on tracing of \TeX's page-break
@@ -1486,7 +1821,7 @@ end
%
%
% \subsection{Hyphenation}\label{sec:latex-hyphenation}
-% \index{hyphenation}
+% \index{hyphenation|userman}
%
% \TeX's and thus \LaTeX's hyphenation algorithm is highly sophisticated, yet the document
% author sometimes lacks convenient macros to solve seemingly trivial typographic tasks. For
@@ -1500,8 +1835,8 @@ end
% \cs{allowhyphenation}
% \end{synopsis}
%
-% Macro~\cs{allowhyphenation}\index{hyphenation>re-enable automatic} re-enables automatic
-% hyphenation after \TeX{} has turned it off, for example, in the innocuous case of a
+% Macro~\cs{allowhyphenation}\index{hyphenation>re-enable automatic|userman} re-enables
+% automatic hyphenation after \TeX{} has turned it off, for example, in the innocuous case of a
% hyphenated compound.
%
% The admittedly simple rules when \TeX{} auto-hyphenates and when not give rise to so many
@@ -1636,7 +1971,7 @@ end
% Whenever using \cs{-}, the short-hand form of \cs{discretionary\{-\}\{\}\{\}}, authors
% writing in a foreign language should reconsider whether it really beats \cs{hyphenation} or
% \cs{babelhyphenation}\footnote{\cs{babelhyphenation} is the multi-lingual extension of \TeX's
-% \cs{hyphenation} and it is defined in package~\packagename{babel}~\cite{package:babel}}. in
+% \cs{hyphenation} and it is defined in package~\packagename{babel}~\cite{package:babel}.} in
% the particular situation. However, sometimes \cs{-} actually \emph{is} the way to go.
%
% Let us assume we mark up proper names with
@@ -1662,6 +1997,12 @@ end
% which are impossible to encode with \cs{hyphenation} or~\cs{babelhyphenation} as these expect
% only letters and dashes as their arguments with spaces separating the words.
%
+% \index{hyphenation>first word|userman}
+% \index{hyphenation>hskip=\cs{hskip}|userman}
+% \TeX{} never hyphenates the initial word in a paragraph and \cs{allowhyphenation} cannot help
+% in this case. Start the paragraph with \cs{hskip~0pt} to enable hyphenation even for the
+% first word.
+%
% \begin{tip}[Typewriter Fonts]
% Sometimes it is desired to get a hyphenatable typewriter font. \LaTeX{} suppresses any
% hyphenation for fonts in \cs{ttfamily} by un-defining their \cs{hyphenchar}s. If these are
@@ -1686,8 +2027,8 @@ end
% \cs{breakpoint*}
% \end{synopsis}
%
-% The starred form inserts an empty discretionary,\index{hyphenation>empty discretionary} which
-% disables automatic hyphenation. The unstarred form inserts an empty discretionary and
+% The starred form inserts an empty discretionary,\index{hyphenation>empty discretionary|userman}
+% which disables automatic hyphenation. The unstarred form inserts an empty discretionary and
% immediately re-enables automatic hyphenation.
%
% The difference between \cs{breakpoint} and the \LaTeX{} macro~\cs{allowbreak} is not only
@@ -1729,7 +2070,7 @@ end
%
%
% \subsection{Disable\kernedslash Break Ligatures}\label{sec:break-ligatures}
-% \index{ligature}
+% \index{ligature|userman}
%
% \DescribeMacro{\nolig*}
% Break a ligature without introducing a hyphenation opportunity.
@@ -1739,8 +2080,8 @@ end
% \end{synopsis}
%
% Inserting \cs{nolig*} disables a ligature at the given point by a kern. Set the size of the
-% kern\index{kerning>ligature} with \hyperref[item:ligaturekern]{|ligaturekern|} or override
-% this value with \meta{kerning} as thousandths of the current font's~em.
+% kern\index{kerning>ligature|userman} with \hyperref[item:ligaturekern]{\code{ligaturekern}} or
+% override this value with \meta{kerning} as thousandths of the current font's~em.
%
% \begin{usecases}
% \cs{nolig*} can be useful in headings, where additional hyphenation points are
@@ -1762,12 +2103,12 @@ end
% introduces a hyphenation opportunity with
% penalty~\hyperref[item:breakpenalty]{|breakpenalty|}.
%
-% \begin{important}[\packagename{hyperref} bookmarks]\index{hyperref=\packagename{hyperref} (package)}
+% \begin{important}[\packagename{hyperref} bookmarks]\index{hyperref=\packagename{hyperref} (package)|userman}
% If a \cs{nolig} --~whether starred or un-starred~-- occurs in an argument that is processed
% with package~\packagename{hyperref} for inclusion into the document's
-% \acronym{PDF}-bookmarks\index{PDF=\acronym{PDF}}\index{bookmark} an additional argument is
-% necessary to parse the macro. This argument either is \cs{relax} or~the empty
-% group~(\code{\{\}}).
+% \acronym{PDF}-bookmarks\index{PDF=\acronym{PDF}|userman}\index{bookmark|userman} an
+% additional argument is necessary to parse the macro. This argument either is \cs{relax}
+% or~the empty group~(\code{\{\}}).
%
% \begin{synopsis}
% \begin{tabbing}
@@ -1944,14 +2285,14 @@ end
%
%
% \subsection{Apply Extra Kerning}\label{sec:extra-kerning}
-% \index{kerning>extra}
+% \index{kerning>extra|userman}
%
% Package \packagename{typog} supplies two sets of macros to kern some of the punctuation
% symbols. One is for forward slashes the other, more extensive one, for hyphens.
%
%
% \subsubsection{Slash}\label{sec:slash-with-kern}
-% \index{kerning>forward slash}
+% \index{kerning>forward slash|userman}
%
% \DescribeMacro{\kernedslash}
% \DescribeMacro{\kernedslash*}
@@ -1980,7 +2321,7 @@ end
%
%
% \subsubsection{Hyphen}\label{sec:hyphen-with-kern}
-% \index{kerning>hyphen}
+% \index{kerning>hyphen|userman}
%
% \DescribeMacro{\kernedhyphen}
% \DescribeMacro{\kernedhyphen*}
@@ -2027,7 +2368,7 @@ end
%
%
% \subsection{Raise Selected Characters}\label{sec:raise-characters}
-% \index{raised character}
+% \index{raised character|userman}
%
% Usually all hyphens and dashes of a font are designed to join lowercase letters. This holds
% also true for most of our \cs{labelitem}\meta{N} markers, bullets, stars, and even fancy
@@ -2036,10 +2377,10 @@ end
% arises if |itemize|~list markers precede an uppercase letter, a lining numeral, or a big
% mathematical operator.
%
-% We introduce a set of macros for the most common cases that allow typsetting these characters
-% at a user definable, adjusted height above the baseline. Users can base their own
-% definitions of raised characters on their associated dimensions.\footnote{Also compare with
-% Ex.~12 in Ref.~\citenum{wermuth:2023} for an attempt to automate vertical alignment.}
+% We introduce a set of macros for the most common cases that typeset these characters at a
+% user definable, adjusted height above the baseline. Users can base their own definitions of
+% raised characters on their associated dimensions.\footnote{Also compare with Ex.~12 in
+% Ref.~\citenum{wermuth:2023} for an attempt to automate vertical alignment.}
%
% \begin{caution}
% The height adjustment disables a font's built-in kerning.
@@ -2051,7 +2392,7 @@ end
%
%
% \subsubsection{Capital Hyphen}\label{sec:capital-hyphen}
-% \index{raised character>hyphen}
+% \index{raised character>hyphen|userman}
%
% \DescribeMacro{\capitalhyphen}
% \DescribeMacro{\capitalhyphen*}
@@ -2081,7 +2422,7 @@ end
%
%
% \subsubsection{Capital Dash}\label{sec:capital-dash}
-% \index{raised character>en-dash}
+% \index{raised character>en-dash|userman}
%
% \DescribeMacro{\capitalendash}
% \DescribeMacro{\capitalendash*}
@@ -2127,7 +2468,7 @@ end
%
%
% \subsubsection{Number Dash (Figure Dash)}\label{sec:number-dash}
-% \index{raised character>number dash}
+% \index{raised character>number dash|userman}
%
% \DescribeMacro{\figuredash}
% \DescribeMacro{\figuredash*}
@@ -2152,49 +2493,63 @@ end
% The actual amount the en-dash gets raised in \cs{figuredash} is determined by
% \hyperref[item:raisefiguredash]{|raisefiguredash|}.
%
-% Values of .05em to .1em are typical for fonts that need this kind of correction and~.1em is a
-% good starting point. \Cref{tab:raisefiguredash} summarizes some findings.
+% Values of .05\,em to .1\,em are typical for fonts that need this kind of correction
+% and~.1\,em is a good starting point. \Cref{tab:raisefiguredash} summarizes some findings.
%
% \begin{table}
% \centering
% \caption[Suggested raise amounts for \cs{figuredash}]%
-% {Suggested values for raising the en-dash between lining numerals of some selected
-% fonts.}
+% {Suggested values for raising \cs{figuredash}, which actually is an en-dash,
+% between lining numerals of some selected fonts in multiples of~1\,em.}
% \label{tab:raisefiguredash}
%
+% \newcommand*{\fbbmark}{\tablenotemark{\tablenotesymbol{1}}}
+%
% \begin{tabfigures}
-% \begin{tabular}{@{}l>{\RaggedRight}p{20em}@{}}
+% \begin{tabularx}{\linewidth}{@{}>{\RaggedRight}Xl@{}}
% \toprule
-% Raise & Font Name \\
-% em & \\
+% Font & Raise \\
% \midrule
-% 0 & Alegreya\index{font>Alegreya}, Arvo\index{font>Arvo},
-% Bitter\index{font>Bitter}, Clara\index{font>Clara},
-% \acronym{EB}~Garamond\index{font>EB Garamond=\acronym{EB} Garamond},
-% Gentium\index{font>Gentium},
-% Ibarra Real Nova\index{font>Ibarra Real Nova},
-% \acronym{Inria}~Serif\index{font>Inria Serif=\acronym{Inria} Serif},
-% Libertine\index{font>Libertine}, Libertinus\index{font>Libertinus},
-% Merriweather\index{font>Merriweather},
-% \acronym{PT}~Serif\index{font>PT Serif=\acronym{PT} Serif},
-% Roboto Slab\index{font>Roboto Slab}, Spectral\index{font>Spectral},
-% \acronym{STIX}\index{font>STIX=\acronym{STIX}}, and many more \\
-% .05 & fbb\index{font>fbb}, Source Serif Pro\index{font>Source Serif Pro} \\
-% .0667 & Libre Baskerville\index{font>Libre Baskerville},
-% Crimson Pro\index{font>Crimson Pro},
-% Erewhon\index{font>Erewhon}, Droid Serif\index{font>Droid Serif} \\
-% .1 & \acronym{GFS}~Artemisia\index{font>GFS Artemisia=\acronym{GFS} Artemisia},
-% Libre Caslon\index{font>Libre Caslon},
-% Coelacanth\index{font>Coelacanth}, Crimson Pro\index{font>Crimson Pro},
-% Crimson Text\index{font>Crimson Text},
-% \TeX{} Gyre~Pagella\index{font>TeX Gyre Pagella=\TeX{} Gyre Pagella},
-% Quattrocento\index{font>},
-% \acronym{TX}~Fonts\index{font>TX Fonts=\acronym{TX} Fonts},
-% \acronym{ADF}~Venturis\index{font>ADF Venturis=\acronym{ADF} Venturis},
-% and many more \\
+% Alegreya\detoxindex{font>typeface>Alegreya|userman}, Arvo\detoxindex{font>typeface>Arvo|userman},
+% Bitter\detoxindex{font>typeface>Bitter|userman}, Clara\detoxindex{font>typeface>Clara|userman},
+% \acronym{EB}~Garamond\detoxindex{font>typeface>EB Garamond=\acronym{EB} Garamond|userman},
+% Gentium\detoxindex{font>typeface>Gentium|userman},
+% Ibarra Real Nova\detoxindex{font>typeface>Ibarra Real Nova|userman},
+% \acronym{Inria}~Serif\detoxindex{font>typeface>Inria Serif=\acronym{Inria} Serif|userman},
+% Libertine\detoxindex{font>typeface>Libertine|userman},
+% Libertinus\detoxindex{font>typeface>Libertinus Serif|userman},
+% Merriweather\detoxindex{font>typeface>Merriweather|userman},
+% \acronym{PT}~Serif\detoxindex{font>typeface>PT Serif=\acronym{PT} Serif|userman},
+% Roboto Slab\detoxindex{font>typeface>Roboto Slab|userman},
+% Spectral\detoxindex{font>typeface>Spectral|userman},
+% \acronym{STIX}\detoxindex{font>typeface>STIX=\acronym{STIX}|userman}, and many more &
+% .0 \\
+% fbb\fbbmark\detoxindex{font>typeface>fbb|userman},
+% Source Serif Pro\detoxindex{font>typeface>Source Serif Pro|userman} &
+% .05 \\
+% Libre Baskerville\detoxindex{font>typeface>Libre Baskerville|userman},
+% Crimson Pro\detoxindex{font>typeface>Crimson Pro|userman},
+% Erewhon\detoxindex{font>typeface>Erewhon|userman},
+% Droid Serif\detoxindex{font>typeface>Droid Serif|userman} &
+% .0667 \\
+% \acronym{GFS}~Artemisia\detoxindex{font>typeface>GFS Artemisia=\acronym{GFS} Artemisia|userman},
+% Libre Caslon\detoxindex{font>typeface>Libre Caslon|userman},
+% Coelacanth\detoxindex{font>typeface>Coelacanth|userman},
+% Crimson Pro\detoxindex{font>typeface>Crimson Pro|userman},
+% Crimson Text\detoxindex{font>typeface>Crimson Text|userman},
+% \TeX{} Gyre~Pagella\detoxindex{font>typeface>TeX Gyre Pagella=\TeX{} Gyre Pagella|userman},
+% Quattrocento\detoxindex{font>typeface>Quattrocento|userman},
+% \acronym{TX}~Fonts\detoxindex{font>typeface>TX Fonts=\acronym{TX} Fonts|userman},
+% \acronym{ADF}~Venturis\detoxindex{font>typeface>ADF Venturis=\acronym{ADF} Venturis|userman},
+% and many more &
+% .1 \\
% \bottomrule
-% \end{tabular}
+% \end{tabularx}
% \end{tabfigures}
+%
+% \begin{tablenotes}
+% \fbbmark\enspace Free Bembo.
+% \end{tablenotes}
% \end{table}
%
% Other macros may be redefined with \cs{figuredash} for a consistent appearance of the copy,
@@ -2210,7 +2565,7 @@ end
%
% \subsubsection[Multiplication Sign]%
% {Multiplication Sign -- Times~\sample{\texttimes}}\label{sec:mult-sign}
-% \index{raised character>multiplication sign}
+% \index{raised character>multiplication sign|userman}
%
% \DescribeMacro{\capitaltimes}
% The \cs{capitaltimes}~macro is a variation of the
@@ -2232,17 +2587,19 @@ end
%
%
% \subsubsection{Guillemets}\label{sec:guillemets}
-% \index{raised character>guillemets}
+% \index{raised character>guillemets|userman}
%
% Another possible typographic problem this package addresses is that both sets --~single and
% double quotes~-- of guillemets may suffer from a too small distance to the baseline.
%
% For the implementation \packagename{typog} relies on the T1\footnote{Font
-% encoding~T1\index{font>encoding} can be forced via \cs{usepackage}|[T1]\{fontenc\}| in the
-% document preamble.}~font encoding not on package~\packagename{babel}.
+% encoding~T1\detoxindex{font>encoding|userman} can be forced via
+% \cs{usepackage}|[T1]\{fontenc\}| in the document preamble.}~font encoding not on
+% package~\packagename{babel}.
%
%
% \paragraph{Lowercase Versions.}
+%
% \DescribeMacro{\singleguillemetleft}
% \DescribeMacro{\singleguillemetright}
% \DescribeMacro{\doubleguillemetleft}
@@ -2280,33 +2637,34 @@ end
% or lining numerals is \cs{Singleguillemetleft} and \cs{Singleguillemetright} and
% \cs{Doubleguillemetleft} and \cs{doubleguillemetright}. Mnemonic: These macros start with an
% uppercase letter. Their height above the baseline is adjusted with
-% \hyperref[item:raisecapitalguillemets]{|raisecapitalguillemets|}. Values of .025em to .075em
-% are typical for fonts that need this kind of correction. \Cref{tab:raiseguillemets}
+% \hyperref[item:raisecapitalguillemets]{|raisecapitalguillemets|}. Values of .025\,em to
+% .075\,em are typical for fonts that need this kind of correction. \Cref{tab:raiseguillemets}
% summarizes some findings.
%
% \begin{table}
% \centering
% \caption[Suggested raise amounts for guillemets]%
-% {Suggested values for raising guillemets of some selected fonts.}
+% {Suggested values for raising guillemets of some selected fonts in multiples
+% of~1\,em.}
% \label{tab:raiseguillemets}
%
% \begin{tabfigures}
-% \begin{tabular}{@{}cc>{\RaggedRight}p{20em}@{}}
+% \def~{\hphantom{0}}
+% \begin{tabular}{@{}>{\RaggedRight}p{.5\textwidth}cc@{}}
% \toprule
-% \multicolumn{2}{@{}c}{Raise} & Font Name \\
-% Lowercase & Uppercase & \\
-% em & em & \\
+% Font & Uppercase & Lowercase \\
% \midrule
-% 0 & .05\hphantom{00} &
-% \acronym{EB}~Garamond\index{font>EB Garamond=\acronym{EB} Garamond},
-% Libertinus\index{font>Libertinus},
-% Merriweather\index{font>Merriweather}, and many more \\
-% .025 & .05\hphantom{00} & Gentium\index{font>Gentium} \\
-% .04\hphantom{0} & .0667 &
-% \acronym{ADF}~Baskervald\index{font>ADF Baskervald=\acronym{ADF} Baskervald} \\
-% .05\hphantom{0} & .0625 &
-% \acronym{GFS}~Artemisia\index{font>GFS Artemisia=\acronym{GFS} Artemisia},
-% \acronym{GFS}~Didot\index{font>GFS Didot=\acronym{GFS} Didot} \\
+% \acronym{EB} Garamond\detoxindex{font>typeface>EB Garamond=\acronym{EB} Garamond|userman},
+% Libertinus\index{font>typeface>Libertinus Serif|userman},
+% Merriweather\index{font>typeface>Merriweather|userman}, and many more &
+% .05~~ & .0~~ \\
+% Gentium\index{font>typeface>Gentium|userman} &
+% .05~~ & .025 \\
+% \acronym{GFS} Artemisia\detoxindex{font>typeface>GFS Artemisia=\acronym{GFS} Artemisia|userman},
+% \acronym{GFS} Didot\detoxindex{font>typeface>GFS Didot=\acronym{GFS} Didot|userman} &
+% .0625 & .05~ \\
+% \acronym{ADF} Baskervald\index{font>typeface>ADF Baskervald=\acronym{ADF} Baskervald|userman} &
+% .0667 & .04~ \\
% \bottomrule
% \end{tabular}
% \end{tabfigures}
@@ -2322,7 +2680,8 @@ end
% \cs{let}\cs{sq}=\cs{singlequotes}
% \end{codeexample}
%
-% and similar definitions for \cs{Singlequotes}, \cs{doublequotes}, and~\cs{Doublequotes}.
+% \noindent
+% and similar definitions for \cs{Singlequotes}, \cs{doublequotes}, and \cs{Doublequotes}.
%
% Users working according to the French typesetting conventions will want to add extra
% spacing between the guillemets and the macro argument already in these macros.
@@ -2334,7 +2693,7 @@ end
%
%
% \paragraph{Interaction with package~\packagename{csquotes}.}
-% \index{csquotes=\packagename{csquotes} (package)}
+% \index{csquotes=\packagename{csquotes} (package)|userman}
%
% The users of package~\packagename{csquotes}
% can hook up the guillemets as defined by \packagename{typog}
@@ -2367,21 +2726,374 @@ end
% \end{futuredirection}
%
%
+% \subsection[Vertically Adjust Label Items]
+% {Vertically Adjust Label Items of
+% Environment \code{itemize}}\label{sec:adjust-label-items}
+% \index{label items|userman}
+%
+% \begin{whittyquote}
+% Perfection of planned layout \\
+% is archieved only by institutions \\
+% on the point of collapse. \\
+% \capitalemdash*~\propername{Cyril Northcote Parkinson}
+% \end{whittyquote}
+%
+% \noindent
+% The symbols that \LaTeX{} uses to distinguish the items of |itemize|~lists do not always
+% align well in the vertical direction with the following text. Sometimes the label is too
+% low, especially if followed by an uppercase (initial) letter. In rare occasions the label is
+% placed too far above the baseline. If any label has been taken from a math-font vertical
+% alignment with the text font is almost purely accidental.\footnote{The exception being
+% mathematics typeset as text via package~\packagename{mathastext}~\cite{package:mathastext}.}
+%
+% \hangindent=2\parindent
+% \hangafter=-3
+% \noindent
+% \DescribeMacro{\uppercaseadjustlabelitems}
+% \DescribeMacro{\lowercaseadjustlabelitems}
+% \DescribeMacro{\noadjustlabelitems}
+% \sinceversion{All three since v0.4}
+% Package~\packagename{typog} lets the user vertically align the \code{itemize}~labels for
+% subsequent uppercase or lowercase letters, where the designations~\singlequotes{uppercase}
+% and \singlequotes{lowercase} are just names for two four-tuples of lengths (technically:
+% |dimen|s) to shift the labels up or down.
+%
+% \begin{synopsis}
+% \label{syn:lowercaseadjustlabelitems}
+% \label{syn:noadjustlabelitems}
+% \label{syn:uppercaseadjustlabelitems}
+% \cs{uppercaseadjustlabelitems}\marg{levels-to-adjust} \\
+% \cs{lowercaseadjustlabelitems}\marg{levels-to-adjust} \\
+% \cs{noadjustlabelitems}\marg{levels-to-adjust}
+% \end{synopsis}
+%
+% Apply uppercase adjustment, lowercase adjustment or no adjustment to the labels in
+% |itemize|~environments at the \meta{levels-to-adjust}. The adjustment values themselves,
+% this is the vertical shifts are configured with
+% options~\hyperref[item:uppercaselabelitemadjustments]{\code{uppercaselabelitemadjustments}}
+% and~\hyperref[item:lowercaselabelitemadjustments]{\code{lowercaselabelitemadjustments}}.
+% They are doubly font dependent: on the one hand the font where the label itself comes from
+% and on the other hand the font of the copy.
+%
+% The argument \meta{levels-to-adjust} is a --~possibly empty~-- comma separated list of the
+% levels the respective adjustments are to be applied to. The levels themselves are given as
+% \emph{decimal} numbers, this is, 1, 2, 3, 4 or the special value~\sample{*} which stands for
+% all four levels. An empty argument list also has a special meaning. Used within any
+% \code{itemize}~environment it automatically applies the adjustment to exactly this level.
+%
+% \begin{example}
+% \begin{typogsetup}{uppercaselabelitemadjustments={.1em}}
+% With the flexible syntax the following settings are possible.
+%
+% \renewcommand*{\labelitemi}{{\small$\rhd$}}%
+% \begin{itemize}\uppercaseadjustlabelitems{}
+% \item Correct all |itemize| labels for uppercase letters.
+%
+% \begin{codeexample}
+% \cs{uppercaseadjustlabelitems}\{*\}
+% \end{codeexample}
+%
+% \item Adjust nesting levels~1, 2, and~3 for uppercase letters and level~4 for lowercase.
+%
+% \begin{codeexample}
+% \cs{lowercaseadjustlabelitems}\{4\} \\
+% \cs{uppercaseadjustlabelitems}\{2,3,1\}
+% \end{codeexample}
+%
+% \item Within an |itemize|~environment just turn off any correction for this level whatever
+% it may be.
+%
+% \begin{codeexample}
+% \cs{begin}\{itemize\} \\
+% \cs{noadjustlabelitems}\{\} \\
+% \cs{item} \dots \\
+% \cs{end}\{itemize\}
+% \end{codeexample}
+%
+% \item Override \cs{labelitemi} with a right-pointing triangle and adjust its vertical
+% position inside of a \code{typogsetup}~environment.
+%
+% \begin{codeexample}
+% \cs{begin}\=\{typogsetup\} \\
+% \>\{uppercaselabelitemadjustments=\{.1em\}\} \\
+% 12\=34567890 \kill
+% \>\cs{renewcommand*}\{\cs{labelitemi}\}\{\{\cs{small}\$\cs{rhd}\$\}\} \\
+% \>\cs{begin}\{itemize\} \\
+% \>\cs{uppercaseadjustlabelitems}\{\} \\
+% \>\cs{item} \dots \\
+% \>\cs{end}\{itemize\} \\
+% \cs{end}\{typogsetup\}
+% \end{codeexample}
+% \end{itemize}
+%
+% The observant reader will have noticed that the itemized list in this emphasized section
+% uses the code of the last example.
+% \end{typogsetup}
+% \end{example}
+%
+%
+% \paragraph{Setup.}
+%
+% To assist the user in finding the desired adjustments of the labels of \packagename{typog}
+% provides macros that help setting up
+% \hyperref[item:lowercaselabelitemadjustments]{\code{lowercaselabelitemadjustments}} and
+% \hyperref[item:uppercaselabelitemadjustments]{\code{uppercaselabelitemadjustments}}. Their
+% intended uses are in the draft phase of a document or in non-printed sections of the text.
+%
+% The macros assume a \singlequotes{correct} height that they derive from the measured height
+% of a sample text scaled by a user-defined factor, which defaults
+% to~\nativetextfraction{1}{2}.\footnote{The default factor of~.5 hearkens back to
+% \propername{Strizver's} suggestion that \doublequotes{[b]ullets should be centered on either
+% the cap~height or x-height of the neighboring text, \dots.}~\cite[p.~220]{strizver:2014}.}
+% The then correct height gets indicated by a thin horizontal line parallel to the baseline.
+% Thus, at sufficiently high magnifications it is possible to judge whether a label gets
+% typeset too high or too low with respect to this reference line.
+%
+% \begin{note}
+% The macros use the actual height of a given sample~text. So, a lowercase~sample should not
+% contain any letters with ascenders.
+%
+% Swashes whether upper- or lowercase always need special attention.
+% \end{note}
+%
+% \DescribeMacro{\typogadjuststairs}
+% \sinceversion{Since v0.4}
+% To get a quick overview how the four \code{itemize}~labels align vertically
+% \cs{typogadjuststairs} draws them at user-defined steps, typically
+% \nativetextfraction{1}{4}\,pt, \nativetextfraction{1}{3}\,pt, or
+% \nativetextfraction{1}{2}\,pt. It ignores any existing adjustments and in that way can be
+% utilized as a first configuration step or, for a small \meta{step-size} and a high
+% \meta{number-of-steps}, for an easy refinement.
+%
+% \begin{synopsis}
+% \begin{tabbing}
+% \label{syn:typogadjuststairs}
+% \cs{typogadjuststairs}\=[\meta{scale-factor}=.5] \\
+% \>\marg{step-size}\marg{number-of-steps} \\
+% \>\marg{sample}
+% \end{tabbing}
+% \end{synopsis}
+%
+% Generate stairs of \meta{number-of-steps} vertically shifted label items; use the next odd
+% number, if \meta{number-of-steps} is even. Draw a reference hairline at \meta{scale-factor}
+% times the height of \meta{sample}, where \meta{scale-factor} defaults to~.5. The stairs
+% start at a vertical shift of
+% \begin{gather*}
+% -\frac{\text{\meta{number-of-steps}} - 1}{2} \times \text{\meta{step-size}} \\
+% \intertext{and repeat up}
+% \frac{\text{\meta{number-of-steps}} - 1}{2} \times \text{\meta{step-size}}.
+% \end{gather*}
+%
+% \noindent
+% The central step --~which is always surrounded by a bit more space~-- shows the neutral
+% alignment, this is~0\,pt. \cs{typogadjuststairs} never prints the contents of \meta{sample}.
+%
+% \begin{example}
+% Play ball!
+%
+% \begin{center}
+% \typogadjuststairs{.25pt}{9}{ABC}
+% \end{center}
+%
+% This is the result of \code{\string\typogadjuststairs\{.25pt\}\{9\}\{ABC\}} with the
+% document's definitions of \cs{labelitem}\meta{N}. The fifth label~item in each line is the
+% uncorrected one.
+% \end{example}
+%
+% \hangindent=2\parindent
+% \hangafter=-3
+% \noindent
+% \DescribeMacro{\typoguppercaseadjustcheck}
+% \DescribeMacro{\typoglowercaseadjustcheck}
+% \sinceversion{Both since v0.4}
+% For a quick and easy check how the four label items vertically align \emph{as configured} use
+% \code{\string\typoguppercaseadjustcheck} and \code{\string\typoglowercaseadjustcheck}.
+% Experienced users with a keen eye for type can apply these macros even in the initial setup.
+% An accurate determination of \code{uppercaselabelitemadjustments} and
+% \code{lowercaselabelitemadjustments} is preferably done at a high magnification (400\% to
+% 600\% on a 100\,dpi screen) with a representative sample of initial letters.
+%
+% \begin{synopsis}
+% \label{syn:typoguppercaseadjustcheck}
+% \label{syn:typoglowercaseadjustcheck}
+% \cs{typoguppercaseadjustcheck}[\meta{scale-factor}=.5]\marg{sample} \\
+% \cs{typoglowercaseadjustcheck}[\meta{scale-factor}=.5]\marg{sample}
+% \end{synopsis}
+%
+% Typeset all four label items adjusted for uppercase or for lowercase with an indicator line
+% at \meta{scale-factor} times the \meta{sample}'s actual height. The default
+% \meta{scale-factor} is~.5. Both macros refer to the currently configured values for the
+% uppercase or lowercase adjustments but they are independent of any settings done with
+% \cs{uppercaseadjustlabelitems}, \cs{lowercaseadjustlabelitems}, or \cs{noadjustlabelitems}.
+% Again, \meta{sample} does not get printed.
+%
+% \begin{example}
+% Uppercase check with \code{\string\typoguppercaseadjustcheck\{ABCXYZ\}}:
+%
+% \centering
+% ABGH\typoguppercaseadjustcheck{ABCXYZ}QWYZ,\enspace
+% 0123\typoguppercaseadjustcheck{ABCXYZ}4567
+%
+% \justifying
+% \noindent
+% and similarly for lowercase: \code{\string\typoglowercaseadjustcheck\{acexyz\}}:
+%
+% \centering
+% ace\typoglowercaseadjustcheck{acexyz}mno,\enspace
+% bdf\typoglowercaseadjustcheck{acexyz}gjy,\enspace
+% {\proportionaloldstylefigures 0123\typoglowercaseadjustcheck{acexyz}4567,}
+%
+% \justifying
+% \noindent
+% where we have bracketed the macro calls with selected uppercase and lowercase letters, or
+% suitable figures.
+% \end{example}
+%
+% In \Cref{tab:labelitemadjustvalues} on \cpageref{tab:labelitemadjustvalues} we collected some
+% suggestions for adjustment values in the \emph{default} case when the label items are not
+% redefined by the user and expand like
+%
+% \begin{center}
+% \def\arraystretch{1}
+% \begin{tabular}{@{}l@{\enspace\(\vdash\)\enspace}l@{}}
+% \cs{labelitemi} & \dumpmacro{\labelitemi}, \\
+% \cs{labelitemii} & \dumpmacro{\labelitemii}, \\
+% \cs{labelitemiii} & \dumpmacro{\labelitemiii}, and \\
+% \cs{labelitemiv} & \dumpmacro{\labelitemiv}.
+% \end{tabular}
+% \end{center}
+%
+% \noindent
+% They display as \sample{\labelitemi}, \sample{\labelitemii}, \sample{\labelitemiii}, and
+% \sample{\labelitemiv}, respectively.
+%
+% \begin{table}
+% \centering
+% \caption[Label item adjustment suggestions]%
+% {Some suggested values for the vertical adjustments of label items. The table
+% assumes that the default definitions (of class~\packagename{article}) for
+% \cs{labelitem}\meta{N} are in effect. The \code{itemize}-list levels~\code{i},
+% \code{ii}, \code{iii} and~\code{iv} are referred to with \(N = 1, 2, 3, 4\). All
+% lengths are given as printer points~(pt) and refer to a document font size of
+% \formatdimen*{10pt}.}
+% \label{tab:labelitemadjustvalues}
+%
+% \newcommand*{\etbbmark}{\tablenotemark{\tablenotesymbol{1}}}
+% \newcommand*{\xchartermark}{\tablenotemark{\tablenotesymbol{2}}}
+% \newcommand*{\kpmark}{\tablenotemark{\tablenotesymbol{3}}}
+% \newcommand*{\palladiomark}{\tablenotemark{\tablenotesymbol{4}}}
+% \newcommand*{\utopiamark}{\tablenotemark{\tablenotesymbol{5}}}
+%
+% \begin{tabfigures}
+% \def~{\hphantom{0}}
+% \def\mc#1{#1~~~}
+% \noindent
+% \makebox[0pt]{%
+% \begin{tabular}{@{}l*{4}{r}@{\qquad}*{4}{r}@{}}
+% \toprule
+% Font Name &
+% \multicolumn{4}{c}{Uppercase Adjustments} & \multicolumn{4}{c@{}}{Lowercase Adjustments} \\
+% {} &
+% \mc{1} & \mc{2} & \mc{3} & \mc{4} &
+% \mc{1} & \mc{2} & \mc{3} & \mc{4} \\
+% \midrule
+% \acronym{ADF} Accanthis\detoxindex{font>typeface>ADF Venturis=\acronym{ADF} Accanthis|userman} &
+% .5~~ & 1.5~~ & \textminus1.5~~ & 1.125 &
+% \textminus.75~ & .25~ & \textminus2.75~ & \textminus.125 \\
+% \acronym{ADF} Venturis\detoxindex{font>typeface>ADF Venturis=\acronym{ADF} Venturis|userman} &
+% .0~~ & 1.0~~ & .75~ & 1.0~~ &
+% \textminus.75~ & .0~~ & \textminus.25~ & .0~~ \\
+% \acronym{CM} Roman\detoxindex{font>typeface>CM Roman=\acronym{CM} Roman|userman} &
+% 1.0~~ & .75~ & 1.0~~ & 1.0~~ &
+% \textminus.25~ & \textminus.5~~ & \textminus.25~ & \textminus.25~ \\
+% Domitian\detoxindex{font>typeface>Domitian|userman} &
+% .25~ & 1.0~~ & .75~ & 1.0~~ &
+% \textminus1.0~~ & .0~~ & \textminus.325 & \textminus.25~ \\
+% Cochineal\detoxindex{font>typeface>Cochineal|userman} &
+% 1.0~~ & 1.0~~ & 1.0~~ & 1.0~~ &
+% \textminus.125 & \textminus.125 & \textminus.125 & \textminus.125 \\
+% \acronym{EB} Garamond\detoxindex{font>typeface>EB Garamond=\acronym{EB} Garamond|userman} &
+% .0~~ & 1.25~ & \textminus.875 & 1.325 &
+% \textminus1.5~~ & .0~~ & \textminus2.0~~ & 0.125 \\
+% etbb\etbbmark\detoxindex{font>typeface>etbb|userman} &
+% .25~ & 1.0~~ & 1.125 & .5~~ &
+% \textminus1.0~~ & \textminus.0~~ & \textminus.0~~ & \textminus.5~~ \\
+% Extended Charter\xchartermark\detoxindex{font>typeface>Extended Charter|userman} &
+% \textminus.25~ & 1.0~~ & 1.75 & .125 &
+% \textminus1.125 & .0~~ & .875 & \textminus.875 \\
+% Gentium\detoxindex{font>typeface>Gentium|userman} &
+% .0~~ & .75~ & .0~~ & .0~~ &
+% \textminus.5~~ & \textminus.25~ & \textminus.75~ & \textminus1.0~~ \\
+% \acronym{GFS} Bodoni\detoxindex{font>typeface>GFS Bodoni=\acronym{GFS} Bodoni|userman} &
+% \textminus.25~ & .625 & 1.0~~ & 1.125 &
+% \textminus1.25~ & \textminus.625 & \textminus.5~~ & \textminus.25~ \\
+% \acronym{GFS} Didot\detoxindex{font>typeface>GFS Didot=\acronym{GFS} Didot|userman} &
+% \textminus1.5~~ & .75~ & 1.0~~ & 1.25~ &
+% \textminus2.75~ & \textminus.25~ & \textminus.25~ & .25~ \\
+% \acronym{IBM} Plex Serif\detoxindex{font>typeface>IBM Plex Serif=\acronym{IBM} Plex Serif|userman} &
+% .5~~ & .5~~ & \textminus1.325 & .5~~ &
+% \textminus.25~ & \textminus.25~ & \textminus2.25~ & \textminus.25~ \\
+% \acronym{KP} Serif\kpmark\detoxindex{font>typeface>KP Serif=\acronym{KP} Serif|userman} &
+% .0~~ & 1.0~~ & 1.25~ & .75~ &
+% \textminus1.0~~ & .0~~ & .0~~ & \textminus.5~~ \\
+% Libertinus Serif\detoxindex{font>typeface>Libertinus Serif|userman} &
+% 1.0~~ & .75~ & 1.125 & .75~ &
+% .0~~ & \textminus.325 & .0~~ & \textminus.25~ \\
+% \acronym{ML} Modern\detoxindex{font>typeface>ML Modern=\acronym{ML} Modern|userman} &
+% 1.25~ & .75~ & 1.0~~ & .125 &
+% .0~~ & \textminus.5~~ & \textminus.25~ & \textminus.125 \\
+% Source Serif Pro\detoxindex{font>typeface>Source Serif Pro|userman} &
+% .125 & .75~ & \textminus1.0~~ & .125 &
+% \textminus.75~ & .0~~ & \textminus2.0~~ & \textminus.75~ \\
+% Spectral\detoxindex{font>typeface>Spectral|userman} &
+% .625 & .625 & \textminus1.5~~ & .625 &
+% \textminus.25~ & \textminus.25~ & \textminus2.5~~ & \textminus.25~ \\
+% \acronym{STIX}\detoxindex{font>typeface>STIX=\acronym{STIX}|userman} &
+% 1.0~~ & 1.0~~ & .75~ & 1.0~~ &
+% .0~~ & .0~~ & .0~~ & .0~~ \\
+% \acronym{URW} Palladio\palladiomark\detoxindex{font>typeface>URW Palladio=\acronym{URW} Palladio|userman} &
+% .25~ & 1.125 & 1.0~~ & 1.0~~ &
+% \textminus1.0~~ & \textminus.125 & \textminus.125 & \textminus.125 \\
+% Utopia Regular\utopiamark\detoxindex{font>typeface>Utopia Regular|userman} &
+% .0~~ & 1.0~~ & .75~ & 1.0~~ &
+% \textminus.75~ & .0~~ & \textminus.25~ & .0~~ \\
+% \bottomrule
+% \end{tabular}}
+% \end{tabfigures}
+%
+% \begin{tablenotes}
+% \etbbmark\enspace \propername{Edward Tufte}'s Bembo in package~\packagename{ETbb}. Note
+% the two initial capital letters in the filename.
+%
+% \xchartermark\enspace Found in package \packagename{XCharter}. Again note the two
+% initial capitals in the filename.
+%
+% \kpmark\enspace In package \packagename{kpfonts}.
+%
+% \palladiomark\enspace Contained in package~\packagename{mathpazo}.
+%
+% \utopiamark\enspace Utopia is available through package~\packagename{fourier} or
+% package~\packagename{mathdesign}. In the latter case pass option~\code{adobe-utopia} to
+% the package.
+% \end{tablenotes}
+% \end{table}
+%
+%
% \subsection[Align Last Line]
% {Align Last Line of a Paragraph}\label{sec:align-last-line}
-% \index{paragraph>align last line}
+% \index{paragraph>align last line|userman}
%
% The usual algorithms of \LaTeX{} typeset the last line of a paragraph flush with the left
% margin unless |center|, |raggedleft| or |Centering|, |FlushRight|
% (package~\packagename{ragged2e}~\cite{package:ragged2e}) are in effect. For an instructive
% discussion consult Ch.~17, \doublequotes{Paragraph End}, of Ref.~\citenum{eijkhout:2007}.
-% The following environments allow to adjust the last lines of paragraphs in different ways.
+% The following environments adjust the last lines of paragraphs in different ways.
%
% \DescribeEnv{lastlineraggedleftpar}
% \DescribeEnv{lastlineflushrightpar}
-% The environment |lastlineraggedleftpar|\index{paragraph>align last line>flush right} adjusts
-% the various skips such that the last lines of the paragraphs gets typeset flush with the
-% right margin.
+% The environment \code{lastlineraggedleftpar}\index{paragraph>align last line>flush right|userman}
+% adjusts the various skips such that the last lines of the paragraphs gets typeset flush with
+% the right margin.
%
% \begin{synopsis}\label{syn:lastlineraggedleftpar}\label{syn:lastlineflushrightpar}
% \cs{begin}|{lastlineraggedleftpar}| \\
@@ -2393,8 +3105,9 @@ end
% The name |lastlineflushrightpar| is an alias for~\code{lastlineraggedleftpar}.
%
% \DescribeEnv{lastlinecenteredpar}
-% Center\index{paragraph>align last line>centered} the last lines of the paragraphs enclosed by
-% this environment.\footnote{Also compare the approach taken in Ref.~\citenum{wermuth:2018}.}
+% Center\index{paragraph>align last line>centered|userman} the last lines of the paragraphs
+% enclosed by this environment.\footnote{Also compare the approach taken in
+% Ref.~\citenum{wermuth:2018}.}
%
% \begin{synopsis}\label{syn:lastlinecenteredpar}
% \cs{begin}|{lastlinecenteredpar}| \\
@@ -2412,7 +3125,7 @@ end
% \needtocspace
% \subsection[Fill Last Line]
% {Fill Last Line of a Paragraph}\label{sec:fill-last-line}
-% \index{paragraph>fill last line}
+% \index{paragraph>fill last line|userman}
%
% The problem of when and how to \singlequotes{fill} the last line of a paragraph is quite
% intricate. We first define the problem then we proceed to general purpose functions and we
@@ -2421,7 +3134,7 @@ end
%
% \subsubsection{Problem Definition}
%
-% Depending on the value of \cs{parindent}, either zero or nonzero, there may be the desire to
+% Depending on the value of \cs{parindent}, either zero or nonzero, there may be the need to
% control the length of the last line of a paragraph.
%
% \iffalse
@@ -2562,7 +3275,7 @@ end
% \includegraphics{crooked-paragraphs-3.mps}
% \end{center}
% \end{minipage}\footnotetext{Package~\packagename{parskip} defines \cs{parskip}
-% as \mbox{6pt plus 2pt} for a base size of~10pt.}
+% as \mbox{6\,pt plus 2\,pt} for a base size of~10\,pt.}
%
% \medskip
% \begin{minipage}{\linewidth}
@@ -2576,7 +3289,7 @@ end
%
% The suggestions for the gap-width vary from two~em to twice the width of a
% \singlequotes{typical} \cs{parindent}\footnote{% For example, \LaTeX's class
-% \packagename{article} uses a \cs{parindent} of~25pt.} for the gap~\cite{carlisle:1996}.
+% \packagename{article} uses a \cs{parindent} of~25\,pt.} for the gap~\cite{carlisle:1996}.
% \end{enumerate}
%
% \begin{tip}
@@ -2598,9 +3311,10 @@ end
% them should have certain advantageous properties.
%
% \begin{itemize}
-% \item Technically, the paragraphs need to contain enough glue (see
-% e.\,g.~\cref{sec:sloppy-paragraphs}) to achieve a low badness such that the desired
-% paragraph end is deemed feasible by \TeX.
+% \item Technically, the paragraphs need to contain enough glue (see for example
+% \cref{sec:sloppy-paragraphs}) to achieve a low badness such that the desired paragraph
+% end is deemed feasible by \TeX.\shiftedmarginnote{This \code{itemize} list demonstrates
+% vertically adjusted label items (\cref{sec:adjust-label-items}).}
%
% \item Aesthetically, the paragraphs must be long enough to absorb the change in last-line
% fill level otherwise their gray-values visibly deviate from the
@@ -2618,18 +3332,21 @@ end
% \item End-of-paragraph intervention.\label{enum:end-of-paragraph-intervention}
%
% \begin{enumerate}[notopsep]
-% \item Tie~\sample{\texttt{\char126}}\label{enum:tie-last-words}\index{paragraph>fill last line>tie}
+% \item Tie~\sample{\texttt{\char126}}\label{enum:tie-last-words}
+% \index{paragraph>fill last line>tie|userman}
%
% Tie the last words.
%
% The problem with the tie may be a hyphenation of one of the words that participates in
% the tie. The next item avoids this disadvantage.
%
-% \item \cs{mbox}\label{enum:mbox-last-words}\index{paragraph>fill last line>mbox=\cs{mbox}}
+% \item \cs{mbox}\label{enum:mbox-last-words}
+% \index{paragraph>fill last line>mbox=\cs{mbox}|userman}
%
% Join the last words or inline equation at the end of the paragraph with an~\cs{mbox}.
%
-% \item \cs{linebreak}\label{enum:linebreak}\index{paragraph>fill last line>linebreak=\cs{linebreak}}
+% \item \cs{linebreak}\label{enum:linebreak}
+% \index{paragraph>fill last line>linebreak=\cs{linebreak}|userman}
%
% Add a \cs{linebreak} to the back part of the paragraph (approximately where the
% \cs{mbox} of item~\ref{enum:mbox-last-words} would start) in a way that the last line
@@ -2646,7 +3363,8 @@ end
% \item Uniform paragraph change.\label{enum:uniform-paragraph-change}
%
% \begin{enumerate}[notopsep]
-% \item Vary spacing.\label{enum:vary-spacing}\index{font>spacing}
+% \item Vary spacing.\label{enum:vary-spacing}
+% \index{font>spacing|userman}
%
% Modify the inter-word spacing, for example, with the macros introduced in
% \cref{sec:looser-tighter-spacing}.
@@ -2655,13 +3373,15 @@ end
% or~\hyperref[syn:tightspacing]{|tightspacing|}.
% Increase the spacing~\meta{level} until the last line gets the desired length.
%
-% \item Vary font tracking.\label{enum:vary-font-tracking}\index{font>tracking}
+% \item Vary font tracking.\label{enum:vary-font-tracking}
+% \index{font>tracking|userman}
%
% Enclose the paragraph in a \hyperref[syn:setfonttracking]{\code{setfonttracking}}~group.
% See \cref{sec:tracking-control}. Increase or decrease the tracking in steps of
% \nativetextfraction{1}{1000}\,em until the last line looks good.
%
-% \item Vary font expansion.\label{enum:vary-font-expansion}\index{font>expansion}
+% \item Vary font expansion.\label{enum:vary-font-expansion}
+% \index{font>expansion|userman}
%
% Enclose the paragraph in a \hyperref[syn:setfontexpand]{\code{setfontexpand}}~group. See
% \cref{sec:font-expansion-control}.
@@ -2688,15 +3408,17 @@ end
%
% \DescribeEnv{shortenpar}
% \DescribeEnv{prolongpar}
-% The two environments |shortenpar|\index{paragraph>fill last
-% line>shortenpar=\code{shortenpar}} and |prolongpar|\index{paragraph>fill last
-% line>prolongpar=\code{prolongpar}} can be employed in quite general situations when a
+% The two environments
+% \code{shortenpar}\index{paragraph>fill last line>shortenpar=\code{shortenpar}|userman}
+% and \code{prolongpar}\index{paragraph>fill last line>prolongpar=\code{prolongpar}|userman}
+% can be employed in quite general situations when a
% paragraph should be typeset one line longer or shorter, e.\,g., to avoid a
-% widow~line\footnote{The last line of a paragraph becomes a \singlequotes{widow}\index{forlorn
-% line>widow} (ger.~\foreignphrase{Hurenkind}) if it starts the following page or column.} or
-% a club~line\footnote{The first line of a paragraph is called
-% \singlequotes{club}\index{forlorn line>club} or~\singlequotes{orphan}\index{forlorn
-% line>orphan} (ger.~\foreignphrase{Schusterjunge}) if it appears at the bottom of the page or
+% widow~line\footnote{The last line of a paragraph becomes a
+% \singlequotes{widow}\detoxindex{forlorn line>widow|userman} (ger.~\foreignphrase{Hurenkind}) if it
+% starts the following page or column.} or a club~line\footnote{The first line of a paragraph
+% is called \singlequotes{club}\detoxindex{forlorn line>club|userman}
+% or~\singlequotes{orphan}\detoxindex{forlorn line>orphan|userman}
+% (ger.~\foreignphrase{Schusterjunge}) if it appears at the bottom of the page or
% column.}~[\citenum{knuth:1986}, p.~104 and~\citenum{mittelbach:2018c}]. (See also
% \cref{sec:vtie-paragraph} for special functions to avoid clubs or widows.)
% \singlequotes{Accidentally}, they also change the length of the last line of the paragraph.
@@ -2730,7 +3452,8 @@ end
% parameter change.
%
% \DescribeEnv{covernextindentpar}
-% Environment |covernextindentpar|\index{paragraph>fill last line>covernextindentpar=\code{covernextindentpar}}
+% Environment \code{covernextindentpar}%
+% \index{paragraph>fill last line>covernextindentpar=\code{covernextindentpar}|userman}
% can be helpful for \hyperref[item:o1]{case~O1}, i.\,e., a too short last line.
%
% \begin{synopsis}\label{syn:covernextindentpar}
@@ -2747,9 +3470,10 @@ end
% (if \(\cs{parindent} = 0\)), or \meta{dim} if called with an optional argument.
%
% \DescribeEnv{openlastlinepar}
-% The next environment, |openlastlinepar|,\index{paragraph>fill last
-% line>openlastlinepar=\code{openlastlinepar}} takes care of \hyperref[item:o2]{case~O2},
-% i.\,e., a last line in a paragraph that is almost full or completely filled.
+% The next environment, \code{openlastlinepar},%
+% \index{paragraph>fill last line>openlastlinepar=\code{openlastlinepar}|userman}
+% takes care of \hyperref[item:o2]{case~O2}, i.\,e., a last line in a paragraph that is almost
+% full or completely filled.
%
% \begin{synopsis}\label{syn:openlastlinepar}
% \cs{begin}|{openlastlinepar}|\oarg{dim} \\
@@ -2769,13 +3493,15 @@ end
% last line is avoided, but the result may be of \hyperref[item:o1]{type~O1} nonetheless.
%
%
+% \toccontinuesonnextpage
% \needtocspace
% \Needspace{150pt}
-% \subsection{Spacing}\label{sec:spacing-control}\index{font>spacing}
+% \subsection{Spacing}\label{sec:spacing-control}
+% \index{font>spacing|userman}
%
% \begin{whittyquote}
-% 90~\% of design is typography. \\
-% And the other 90~\% is whitespace. \\
+% 90\% of design is typography. \\
+% And the other 90\% is whitespace. \\
% \capitalemdash*~\propername{Jeffrey Zeldman}
% \end{whittyquote}
%
@@ -2785,7 +3511,9 @@ end
% \cref{sec:microtype-frontend}.
%
%
-% \subsubsection[Looser\kernedslash Tighter]{Looser or Tighter Spacing}\label{sec:looser-tighter-spacing}\index{font>spacing>loose}\index{font>spacing>tight}
+% \subsubsection[Looser\kernedslash Tighter]{Looser or Tighter Spacing}\label{sec:looser-tighter-spacing}
+% \index{font>spacing>loose|userman}
+% \index{font>spacing>tight|userman}
%
%
% \begin{whittyquote}
@@ -2822,7 +3550,7 @@ end
%
% \begin{SCtable}[10]
% \caption[Spacing changes made by \code{loosespacing}]%
-% {Adjustments made by environment |loosespacing| to \cs{spaceskip}.
+% {Adjustments made by environment \code{loosespacing} to \cs{spaceskip}.
% The mapping of \meta{level} to the exact skip definitions are
% \(1 \mapsto \formatskip{1.05}{.5}{.1}\),
% \(2 \mapsto \formatskip{1.1}{.5}{.1}\),
@@ -2836,7 +3564,7 @@ end
% \def~{\hphantom{0}}%
% \begin{tabular}{@{}ccl@{}}
% \toprule
-% \meta{level} & Adjustment & Comment \\
+% \meta{level} & Adjustment & Note \\
% {} & \% & \\
% \midrule
% 0 & n/a & neutral \\
@@ -2861,29 +3589,29 @@ end
% \cref{tab:tightspacing}.
%
% \begin{SCtable}[10]
+% \def~{\hphantom{0}}
% \caption[Spacing changes made by \code{tightspacing}]%
-% {Adjustments made by environment |tightspacing| to \cs{spaceskip}.
+% {Adjustments made by environment \code{tightspacing} to \cs{spaceskip}.
% The mapping of \meta{level} to the exact skip definitions are
-% \(1 \mapsto \formatskip{.9875}{.0125}{.5\hphantom{000}}\)\!,
-% \(2 \mapsto \formatskip{.975}{.025}{.5\hphantom{00}}\)\!,
-% \(3 \mapsto \formatskip{.95}{.05}{.5\hphantom{0}}\)\!, and
+% \(1 \mapsto \formatskip{.9875}{.0125}{.5~~~}\)\!,
+% \(2 \mapsto \formatskip{.975}{.025}{.5~~}\)\!,
+% \(3 \mapsto \formatskip{.95}{.05}{.5~}\)\!, and
% \(\ge 4 \mapsto \formatskip{.9}{.1}{.5}\),
% where all factors scale with \cs{dimen2},
% the current font's space-width.}
% \label{tab:tightspacing}
%
% \begin{tabfigures}
-% \def~{\hphantom{0}}%
% \begin{tabular}{@{}ccl@{}}
% \toprule
-% \meta{level} & Adjustment & Comment \\
+% \meta{level} & Adjustment & Note \\
% {} & \% & \\
% \midrule
% 0 & n/a & neutral \\
-% 1 & ~{-}1.25 & default \\
-% 2 & ~{-}2.5~ & \\
-% 3 & ~{-}5\hphantom{.00} & \\
-% \(\ge\)\:4 & -10\hphantom{.00} & \\
+% 1 & ~\textminus 1.25 & default \\
+% 2 & ~\textminus 2.5~ & \\
+% 3 & ~\textminus 5\hphantom{.}~~ & \\
+% \(\ge\)\:4 & \textminus 10\hphantom{.}~~ & \\
% \bottomrule
% \end{tabular}
% \end{tabfigures}
@@ -2902,7 +3630,8 @@ end
% \end{usecases}
%
%
-% \subsubsection{Wide Space}\label{sec:wide-space}\index{wide space}
+% \subsubsection{Wide Space}\label{sec:wide-space}
+% \index{wide space|userman}
%
% The \cs{widespace} macro and its companion \cs{narrowspace} derive their appearances from
% several of the current font's \cs{fontdimen}\meta{number}s. \TeX{} addresses the latter by
@@ -2914,10 +3643,11 @@ end
%
% \begin{SCtable}
% \caption[\cs{fontdimen}\meta{number} parameters]
-% {The first column~\sample{\#} states the index of the \cs{fontdimen} parameter:
-% \meta{number}. Column~2 presents short descriptions of the
-% \cs{fontdimen}\meta{number} parameters. As examples, the values for the current
-% font are shown in column~3; they are normalized to the quad-size.\bottomstrut}
+% {All \TeX{} font parameters normalized to the font's quad-size. The first
+% column~\sample{\#} states the index of the \cs{fontdimen} parameter:
+% \meta{number}. Column~2 presents short descriptions of
+% \cs{fontdimen}\meta{number}. As examples, the values for the current font are
+% shown in column~3.\bottomstrut}
% \label{tab:fontdimen}
%
% \begin{tabfigures}
@@ -2931,7 +3661,6 @@ end
% \begin{tabular}{@{}lll@{}}
% \toprule
% \# & Description & Value \\
-% {} & & \multicolumn{1}{c}{\%} \\
% \midrule
% 1 & Slant per 1\,pt height & ~~\relativefontdimen1\topstrut \\
% 2 & Interword space width & ~\relativefontdimen2 \\
@@ -2990,7 +3719,8 @@ end
% \end{usecase}
%
%
-% \subsubsection{Narrow Space}\label{sec:narrow-space}\index{narrow space}
+% \subsubsection{Narrow Space}\label{sec:narrow-space}
+% \index{narrow space|userman}
%
% \DescribeMacro{\narrowspace}
% \DescribeMacro{\narrowspace*}
@@ -3033,25 +3763,25 @@ end
% \centering
% \caption[Comparison of some space sizes]
% {Exemplary comparison of standard \cs{space} versus \cs{narrowspace} and
-% \cs{widespace}. All values are relative to the size of the current font's quad
-% size. \cs{narrowspace} and \cs{widespace} use the package's defaults.~\visualpar
-% The upper values in the Width-column for \cs{narrowspace}, and \cs{widespace}
-% refer to the \(\cs{fontdimen7} \not= 0\) case and the lower ones to the
-% \(\cs{fontdimen7} = 0\) code-path.}
+% \cs{widespace}. All values are relative to the size of the current font's
+% quad-size and shown as a percentage of it. \cs{narrowspace} and \cs{widespace}
+% use the package's defaults.~\visualpar The upper values in the
+% \singlequotes{Width}~column for \cs{narrowspace} and \cs{widespace} refer to the
+% \(\cs{fontdimen7} \not= 0\) case and the lower ones to the \(\cs{fontdimen7} = 0\)
+% code-path.}
% \label{tab:space-sizes}
%
% \begin{tabfigures}
-% \def~{\hphantom{0}}%
+% \def~{\hphantom{0}}
% \ExplSyntaxOn
% \def\relativedimen#1{\fp_eval:n {round (1000 * (#1) / \the\fontdimen6\font) / 10}}
% \def\relativefontdimen#1{\relativedimen{\the\fontdimen#1\font}}
% \ExplSyntaxOff
% \def\nrows{1.75}
%
-% \begin{tabular}{@{}llll@{}}
+% \begin{tabular}{@{}l*{3}{r}@{}}
% \toprule
-% Name & Width & Stretch & Shrink \\
-% {} & \% & \% & \% \\
+% Macro & Width & Stretch & Shrink \\
% \midrule
% \multirow{\nrows}{*}{\cs{narrowspace}} &
% \relativedimen{\the\fontdimen2\font - \narrowspacestrength * \the\fontdimen7\font} &
@@ -3071,7 +3801,7 @@ end
%
%
% \subsection{\packagename{Microtype} Front\capitalhyphen End}\label{sec:microtype-frontend}
-% \index{microtype=\packagename{microtype} (package)}
+% \index{microtype=\packagename{microtype} (package)|userman}
%
% The functionalities are just front-ends of selected macros in
% package~\packagename{microtype} -- welcome syntactic sugar.
@@ -3091,7 +3821,8 @@ end
% \end{important}
%
%
-% \subsubsection{Tracking}\label{sec:tracking-control}\index{font>tracking}
+% \subsubsection{Tracking}\label{sec:tracking-control}
+% \index{font>tracking|userman}
%
% \begin{caution}
% The tracking changes may interfere with implicit changes of tracking declared with
@@ -3136,7 +3867,7 @@ end
% \end{codeexample}
%
% If the argument of option~\code{trackingttspacing} is omitted the outer spacing defaults to
-% \makeatletter\mbox{\typog@trackingttspacing}\makeatother.
+% \makeatletter\mbox{\typog@config@trackingttspacing}\makeatother.
%
% \begin{usecases}
% Nudge line breaks or hyphenation points.~\visualpar Avoid clashes of descenders and
@@ -3145,7 +3876,8 @@ end
% \end{usecases}
%
%
-% \subsubsection{Font Expansion}\label{sec:font-expansion-control}\index{font>expansion}
+% \subsubsection{Font Expansion}\label{sec:font-expansion-control}
+% \index{font>expansion|userman}
%
% \DescribeEnv{setfontshrink}
% \DescribeEnv{setfontstretch}
@@ -3153,10 +3885,10 @@ end
% component, i.\,e., shrinkability and stretchability, respectively.
%
% \begin{synopsis}\label{syn:setfontshrink}\label{syn:setfontstretch}
-% \cs{begin}|{setfontshrink}|\marg{level}
+% \cs{begin}|{setfontshrink}|\oarg{level}
% \dots{}
% \cs{end}|{setfontshrink}| \\
-% \cs{begin}|{setfontstretch}|\marg{level}
+% \cs{begin}|{setfontstretch}|\oarg{level}
% \dots{}
% \cs{end}|{setfontstretch}|
% \end{synopsis}
@@ -3165,20 +3897,20 @@ end
% summarize the values for |stretch| and |shrink| in these environments.
%
% \begin{SCtable}
-% \caption[Shrink values of \code{setfontshrink}]%
+% \caption[Shrink values of \code{setfontshrink}]
% {\slightlysloppy[2] Preconfigured values for |shrink| inside of
-% environment~\code{setfontshrink}. Note that all |stretch| values are zero, so the fonts
-% only can shrink.}
+% environment~\code{setfontshrink} as \nativetextfraction{1}{1000}\,em. Note that all
+% |stretch| values are zero, so the fonts only can shrink.}
% \label{tab:setfontshrink-values}
%
% \begin{tabfigures}
+% \def~{\hphantom{0}}
% \begin{tabular}{@{}cccl@{}}
% \toprule
-% \meta{level} & |stretch| & |shrink| & Comment \\
-% {} & \nativetextfraction{1}{1000}\,em & \nativetextfraction{1}{1000}\,em & \\
+% \meta{level} & |stretch| & |shrink| & Note \\
% \midrule
% 0 & n/a & n/a & no operation \\
-% 1 & 0 & \hphantom{0}\makeatletter\typog@shrink@i\makeatother & default \\
+% 1 & 0 & ~\makeatletter\typog@shrink@i\makeatother & default \\
% 2 & 0 & \makeatletter\typog@shrink@ii\makeatother & \\
% 3 & 0 & \makeatletter\typog@shrink@iii\makeatother & \\
% \bottomrule
@@ -3188,20 +3920,20 @@ end
%
% \begin{SCtable}
% \centering
-% \caption[Stretch values of \code{setfontstretch}]%
+% \caption[Stretch values of \code{setfontstretch}]
% {\slightlysloppy[2] Preconfigured values for |stretch| inside of
-% environment~\code{setfontstretch}. Note that all |shrink| values are zero, so the fonts
-% only can stretch.}
+% environment~\code{setfontstretch} as \nativetextfraction{1}{1000}\,em. Note that all
+% |shrink| values are zero, so the fonts only can stretch.}
% \label{tab:setfontstretch-values}
%
% \begin{tabfigures}
+% \def~{\hphantom{0}}
% \begin{tabular}{@{}cccl@{}}
% \toprule
% \meta{level} & |stretch| & |shrink| \\
-% {} & \nativetextfraction{1}{1000}\,em & \nativetextfraction{1}{1000}\,em & \\
% \midrule
% 0 & n/a & n/a & no operation \\
-% 1 & \hphantom{0}\makeatletter\typog@stretch@i\makeatother & 0 & default \\
+% 1 & ~\makeatletter\typog@stretch@i\makeatother & 0 & default \\
% 2 & \makeatletter\typog@stretch@ii\makeatother & 0 & \\
% 3 & \makeatletter\typog@stretch@iii\makeatother & 0 & \\
% \bottomrule
@@ -3224,7 +3956,7 @@ end
% Manipulate both, |stretch| and |shrink|~values at the same time.
%
% \begin{synopsis}\label{syn:setfontexpand}
-% \cs{begin}|{setfontexpand}|\marg{level}
+% \cs{begin}|{setfontexpand}|\oarg{level}
% \dots{}
% \cs{end}|{setfontexpand}|
% \end{synopsis}
@@ -3232,20 +3964,20 @@ end
% \Cref{tab:setfontexpand-values} gives an overview of the values associated with \meta{level}.
%
% \begin{SCtable}
-% \caption[Shrink and stretch values of \code{setfontexpand}]%
+% \caption[Shrink and stretch values of \code{setfontexpand}]
% {\slightlysloppy[2] Preconfigured values for |shrink| and |stretch| inside of
-% environment~\code{setfontexpand}. Note that both |shrink| and |stretch| values are
-% nonzero, so the fonts can shrink or expand.}
+% environment~\code{setfontexpand} as \nativetextfraction{1}{1000}\,em. Note that both
+% |shrink| and |stretch| values are nonzero, so the fonts can shrink or expand.}
% \label{tab:setfontexpand-values}
%
% \begin{tabfigures}
+% \def~{\hphantom{0}}
% \begin{tabular}{@{}cccl@{}}
% \toprule
-% \meta{level} & |stretch| & |shrink| & Comment \\
-% {} & \nativetextfraction{1}{1000}\,em & \nativetextfraction{1}{1000}\,em & \\
+% \meta{level} & |stretch| & |shrink| & Note \\
% \midrule
% 0 & n/a & n/a & no operation \\
-% 1 & \hphantom{0}\makeatletter\typog@stretch@i\makeatother & \hphantom{0}\makeatletter\typog@stretch@i\makeatother & default \\
+% 1 & ~\makeatletter\typog@stretch@i\makeatother & ~\makeatletter\typog@stretch@i\makeatother & default \\
% 2 & \makeatletter\typog@stretch@ii\makeatother & \makeatletter\typog@stretch@ii\makeatother & \\
% 3 & \makeatletter\typog@stretch@iii\makeatother & \makeatletter\typog@stretch@iii\makeatother & \\
% \bottomrule
@@ -3302,7 +4034,8 @@ end
% \end{usecases}
%
%
-% \subsubsection{Character Protrusion}\label{sec:protrusion}\index{font>protrusion}
+% \subsubsection{Character Protrusion}\label{sec:protrusion}
+% \index{font>protrusion|userman}
%
% \DescribeEnv{nocharprotrusion}
% Disable the \packagename{microtype} feature~\singlequotes{protrusion} inside of the
@@ -3320,8 +4053,8 @@ end
% \end{usecases}
%
%
-% \FloatBarrier
-% \subsection{Sloppy Paragraphs}\label{sec:sloppy-paragraphs}\index{paragraph>sloppy}
+% \subsection{Sloppy Paragraphs}\label{sec:sloppy-paragraphs}
+% \index{paragraph>sloppy|userman}
%
% Experienced \LaTeX{} users know that \cs{sloppy} is more of a problem by itself and not
% really a viable solution of the \doublequotes{overfull~box} syndrome.
@@ -3357,21 +4090,22 @@ end
%
% \begin{suspendshortverb}
% \begin{tabfigures}
+% \def~{\hphantom{0}}
% \begin{tabular}{@{}ccccl@{}}
% \toprule
-% \meta{sloppiness} & \cs{toler-} & \cs{hfuzz} & \cs{emergency-} & Comment \\
+% \meta{sloppiness} & \cs{toler-} & \cs{hfuzz} & \cs{emergency-} & Note \\
% {} & \code{ance} & \cs{vfuzz} & \code{stretch}~\(G\) & \\
% {} & & pt & em & \\
% \midrule
-% 0 & \hphantom{0}200\hphantom{\tolerancemark} & .1\hphantom{0} & 0\hphantom{.000\scaledmark} & \TeX: \verb+\fussy+ \\
-% 1 & \hphantom{0}330\tolerancemark & .15 & \hphantom{0}.375\scaledmark & default \\
-% 2 & \hphantom{0}530\tolerancemark & .2\hphantom{0} & \hphantom{0}.75\scaledmark\hphantom{0} & \\
-% 3 & \hphantom{0}870\tolerancemark & .25 & 1.125\scaledmark & \\
-% 4 & 1410\tolerancemark & .3\hphantom{0} & 1.5\scaledmark\hphantom{00} & \\
+% 0 & ~200\hphantom{\tolerancemark} & .1~ & 0\hphantom{.000\scaledmark} & \TeX: \verb+\fussy+ \\
+% 1 & ~330\tolerancemark & .15 & ~.375\scaledmark & default \\
+% 2 & ~530\tolerancemark & .2~ & ~.75\scaledmark~ & \\
+% 3 & ~870\tolerancemark & .25 & 1.125\scaledmark & \\
+% 4 & 1410\tolerancemark & .3~ & 1.5\scaledmark~~ & \\
% 5 & 2310\tolerancemark & .35 & 1.875\scaledmark & \\
-% 6 & 3760\tolerancemark & .4\hphantom{0} & 2.25\scaledmark\hphantom{0} & \\
+% 6 & 3760\tolerancemark & .4~ & 2.25\scaledmark~ & \\
% 7 & 6130\tolerancemark & .45 & 2.625\scaledmark & \\
-% \(\ge\)\:8 & 9999\hphantom{\tolerancemark} & .5\hphantom{0} & 3\hphantom{.000\scaledmark} & \TeX: \verb+\sloppy+ \\
+% \(\ge\)\:8 & 9999\hphantom{\tolerancemark} & .5~ & 3\hphantom{.000\scaledmark} & \TeX: \verb+\sloppy+ \\
% \bottomrule
% \end{tabular}
% \end{tabfigures}
@@ -3403,8 +4137,8 @@ end
% \end{usecases}
%
%
-% \FloatBarrier
-% \subsection{Vertically Partially-Tied Paragraphs}\label{sec:vtie-paragraph}\index{paragraph>vertically tied}
+% \subsection{Vertically Partially-Tied Paragraphs}\label{sec:vtie-paragraph}
+% \index{paragraph>vertically tied|userman}
%
% \LaTeX{} provides several macros and environments to tie material vertically~-- most
% prominently |samepage| and |minipage|.\footnote{A valuable complement to these is
@@ -3421,7 +4155,7 @@ end
%
% \DescribeMacro{\vtietop}
% \DescribeEnv{vtietoppar}
-% Avoid a club\index{forlorn line>club} line in each partial paragraph.
+% Avoid a club\index{forlorn line>club|userman} line in each partial paragraph.
%
% \begin{synopsis}\label{syn:vtietop}\label{syn:vtietoppar}
% \cs{vtietop}\oarg{number-of-lines} \\[\smallskipamount]
@@ -3436,16 +4170,17 @@ end
%
% \begin{usecases}
% String together the first paragraph right after a sectioning command.~\visualpar Tie the
-% first line of an itemized, enumerated, or a description list\index{list} with the paragraph
-% following~\cs{item}.
+% first line of an itemized, enumerated, or a description list\index{list|userman} with the
+% paragraph following~\cs{item}.
% \end{usecases}
%
% \noindent
% \DescribeMacro{\splicevtietop}
-% Inside of a \code{list} a one-off solution simply concatenates \cs{item}[\dots]\cs{vtietop}
-% to fuse the line with the \code{item\#}, the representation of the \code{enum\#}, or the
-% description term with the first paragraph. For a systematic use prefer \cs{splicevtietop}
-% and apply it as the first thing in the \code{list}~body.
+% Inside of a \code{list} a one-off solution simply concatenates
+% \cs{item}[\dots\itcorr{-5}]\cs{vtietop} to fuse the line with the \code{item\#}, the
+% representation of the \code{enum\#}, or the description term with the first paragraph. For a
+% systematic use prefer \cs{splicevtietop} and apply it as the first thing in the
+% \code{list}~body.
%
% \begin{synopsis}\label{syn:splicevtietop}
% \cs{splicevtietop}\oarg{number-of-lines}
@@ -3492,7 +4227,7 @@ end
% \noindent
% \DescribeMacro{\vtiebot}
% \DescribeEnv{vtiebotpar}
-% Avoid a widow\index{forlorn line>widow} line in each partial paragraph.
+% Avoid a widow\index{forlorn line>widow|userman} line in each partial paragraph.
%
% \begin{synopsis}\label{syn:vtiebot}\label{syn:vtiebotpar}
% \cs{vtiebot}\oarg{number-of-lines} \\[\smallskipamount]
@@ -3507,7 +4242,8 @@ end
%
% \noindent
% \DescribeEnv{vtiebotdisp}
-% Avoid a display widow\index{forlorn line>display widow} line in each partial paragraph.
+% Avoid a display widow\index{forlorn line>display widow|userman} line in each partial
+% paragraph.
%
% \begin{synopsis}\label{syn:vtiebotdisp}\label{syn:vtiebotdisppar}
% \cs{begin}|vtiebotdisp|\oarg{before-disp-number-of-lines} \\
@@ -3579,15 +4315,16 @@ end
%
% \begin{typoginspectpar}{partial-paragraphs}
% \setlength{\smoothraggedrightragwidth}{8pt}
-% \paragraph{Partial Paragraphs And Counting Lines.} The top-of-paragraph ties, \cs{vtietop}
-% and \code{vtietoppar} count \meta{number\hyp{}of\hyp{}lines} from the beginning of every
-% partial paragraph. Each displayed math in the paragraph resets the count. The
-% bottom-paragraph ties, \cs{vtiebot}, \code{vtiebotpar}, \cs{vtiebotdisp}, and
-% \code{vtiebotdisppar} count backward from the end of each partial paragraph. Again, each
-% displayed math in the paragraph resets the count. According to \TeX's rules, a displayed
-% math formula always is counted as \emph{three} lines no matter its contents.
-% \Cref{tab:partial-paragraph-line-counts} summarizes these rules with the help of an
-% example.
+% \paragraph{Partial Paragraphs And Counting Lines.}
+%
+% The top-of-paragraph ties, \cs{vtietop} and \code{vtietoppar} count
+% \meta{number\hyp{}of\hyp{}lines} from the beginning of every partial paragraph. Each
+% displayed math in the paragraph resets the count. The bottom-paragraph ties, \cs{vtiebot},
+% \code{vtiebotpar}, \cs{vtiebotdisp}, and \code{vtiebotdisppar} count backward from the end
+% of each partial paragraph. Again, each displayed math in the paragraph resets the count.
+% According to \TeX's rules, a displayed math formula always is counted as \emph{three} lines
+% no matter its contents. \Cref{tab:partial-paragraph-line-counts} summarizes these rules
+% with the help of an example.
% \end{typoginspectpar}
%
% \begin{table}
@@ -3655,11 +4392,11 @@ end
% \end{usecases}
%
%
-% \FloatBarrier
-% \subsection{Breakable Displayed Equations}\label{sec:breakable-display}\index{page break}
+% \subsection{Breakable Displayed Equations}\label{sec:breakable-display}
+% \index{page break|userman}
%
% \DescribeEnv{breakabledisplay}
-% Package~\packagename{amsmath}\index{amsmath=\packagename{amsmath} (package)} offers
+% Package~\packagename{amsmath}\index{amsmath=\packagename{amsmath} (package)|userman} offers
% \cs{allowdisplaybreaks} to render displayed equations breakable at each of their lines.
% Environment~\cs{breakabledisplay} is a wrapper around it which limits the macro's influence
% to the environment. Furthermore, the default \meta{level} of \code{breakabledisplay} is~3
@@ -3688,16 +4425,17 @@ end
% \newcommand*{\clubmark}{\tablenotemark{\dag}}
%
% \begin{tabfigures}
+% \def~{\hphantom{0}}
% \begin{tabular}{@{}ccl@{}}
% \toprule
-% \meta{level} & \cs{interdisplay-} & Comment \\
+% \meta{level} & \cs{interdisplay-} & Note \\
% {} & \code{linepenalty} & \\
% \midrule
% 0 & 10000 & no operation \\
-% 1 & \hphantom{0}9999 & \\
-% 2 & \hphantom{0}6999 & \\
-% 3 & \hphantom{0}2999 & default \\
-% 4 & \hphantom{0000}0\rlap{\clubmark} & \\
+% 1 & ~9999 & \\
+% 2 & ~6999 & \\
+% 3 & ~2999 & default \\
+% 4 & ~~~~0\rlap{\clubmark} & \\
% \bottomrule
% \end{tabular}
% \end{tabfigures}
@@ -3738,7 +4476,6 @@ end
% \end{usecases}
%
%
-% \FloatBarrier
% \clearpage
% \subsection{\packagename{Setspace} Front-End}\label{sec:setspace-frontend}
%
@@ -3747,11 +4484,11 @@ end
% interface of \cs{setstretch} though is unintuitive as it asks for an obscure
% factor.\fontsizeinfo{setspacefontsizeinfo}\marginnote{In the copy of this document gets
% typeset with~\setspacefontsizeinfo*.} The \LaTeX{} user however prefers to keep her eyes on
-% the ball and set the line skip\index{baseline skip} directly (e.\,g.~12.5pt) or the lines'
-% leading\index{leading} to a length or percentage of the font's size.\footnote{To find out
-% about the current font's size and the \cs{baselineskip} in printable form check out
-% \cref{sec:font-information} on \cpageref{sec:font-information}.} This is where the following
-% macros go to bat.
+% the ball and set the line skip\index{baseline skip|userman} directly (e.\,g.~12.5\,pt) or the
+% lines' leading\index{leading|userman} to a length or percentage of the font's
+% size.\footnote{To find out about the current font's size and the \cs{baselineskip} in
+% printable form check out \cref{sec:font-information} on \cpageref{sec:font-information}.}
+% This is where the following macros go to bat.
%
% \begin{important}
% All macros that are introduced in this section rely on macro~\cs{setstretch}. So
@@ -3785,24 +4522,25 @@ end
% will be used in the computation.
%
% \begin{example}
-% Let us assume we want to lighten the gray value of the copy a tad with a \cs{baselineskip}
-% increased (from e.g.~12pt) to~12.5pt. To this end we say:
+% \begin{itemize}[notopsep]
+% \item Let us assume we want to lighten the gray value of the copy a tad with the
+% \cs{baselineskip} increased from 12\,pt to~12.5\,pt. To this end we say:
%
% \begin{codeexample}
-% \cs{setbaselineskip}\{12.5pt\}\specialsectionendhere
+% \cs{setbaselineskip}\{12.5\,pt\}
% \end{codeexample}
-% \end{example}
%
-% \begin{tip}
-% To set the \cs{baselineskip} relative to the current value use
+% \item In a generic part of the document, where the actual \cs{baselineskip} is not known,
+% we can refer to its current value and rescale it:
%
% \begin{codeexample}
-% \cs{setbaselineskip}\{\meta{factor}\cs{baselineskip}\}
+% \cs{setbaselineskip}\{\cs{baselineskip} * 12.5 / 12\}
% \end{codeexample}
%
-% \noindent
-% where \meta{factor} is a floating-point number.
-% \end{tip}
+% Care should be taken if code like the above is implicitly or explicitly
+% repeated, because it results in a geometric series.\specialsectionendhere
+% \end{itemize}
+% \end{example}
%
% \DescribeMacro{\resetbaselineskip}
% \sinceversion{Since v0.3}
@@ -3816,6 +4554,9 @@ end
% notion of what is a single-line \cs{baselineskip}.
%
%
+% \hangindent=2\parindent
+% \hangafter=-2
+% \noindent
% \DescribeMacro{\setbaselineskippercentage}
% \sinceversion{Since v0.3}
% Set the \cs{baselineskip} with a relative value calculated as a percentage of the current
@@ -3828,14 +4569,14 @@ end
% Set \cs{baselineskip} to \(\cs{typogfontsize} \times \meta{baselineskip-percentage} / 100\).
%
% \begin{example}
-% We modify the previous example and assume a font design size of 10pt, but now write
+% We modify the previous example and assume a font design size of 10\,pt, but now write
%
% \begin{codeexample}
% \cs{setbaselineskippercentage}\{125\}
% \end{codeexample}
%
% \noindent
-% which sets \cs{baselineskip} to \(10\text{pt} \times 125 / 100 = 12.5\text{pt}\).
+% which sets \cs{baselineskip} to \(10\text{\,pt} \times 125 / 100 = 12.5\text{\,pt}\).
% \end{example}
%
% \DescribeMacro{\setleading}
@@ -3850,7 +4591,7 @@ end
% \meta{leading} can be negative, e.\,g.~to set solid.
%
% \begin{example}
-% Another solution of the previous example, given a font design size of 10pt is to write
+% Another solution of the previous example, given a font design size of 10\,pt is to write
%
% \begin{codeexample}
% \cs{setleading}\{2.5pt\}
@@ -3872,14 +4613,14 @@ end
% Set \cs{baselineskip} to \(\cs{typogfontsize} \times (1 + \meta{leading-percentage} / 100)\).
%
% \begin{example}
-% We modify the previous example and again assume a font design size of 10pt, but now write
+% We modify the previous example and again assume a font design size of 10\,pt, but now write
%
% \begin{codeexample}
% \cs{setleadingpercentage}\{25\}
% \end{codeexample}
%
% \noindent
-% which sets \cs{baselineskip} to \(10\text{pt} \times (1 + 25 / 100) = 12.5\text{pt}\).
+% which sets \cs{baselineskip} to \(10\text{\,pt} \times (1 + 25 / 100) = 12.5\text{\,pt}\).
% \end{example}
%
% \smallskip
@@ -3949,9 +4690,9 @@ end
% \end{tip}
%
%
-% \FloatBarrier
% \clearpage
-% \subsection{Smooth Ragged}\label{sec:smooth-ragged}\index{ragged right}
+% \subsection{Smooth Ragged}\label{sec:smooth-ragged}
+% \index{ragged right|userman}
%
% \begin{whittyquote}
% The attention someone gives \\
@@ -3964,25 +4705,30 @@ end
% \noindent
% Package \packagename{typog} implements a novel approach to typeset ragged paragraphs.
% Instead of setting the glue inside of a paragraph to zero and letting the line-widths vary
-% accordingly~\cite{wermuth:2020} we prescribe the line-widths with the \cs{parshape}~primitive
-% and leave alone the stretchability or shrinkability of the glue.
+% accordingly~\cite{wermuth:2020} we prescribe the line-widths with \TeX's
+% \cs{parshape}~primitive and leave alone the stretchability or shrinkability of the glue.
%
-% \begin{slightlysloppypar}
-% \hangindent=5.5em\hangafter=-5
+% \begin{caution}
+% None of the following environments work inside of lists.
+% \end{caution}
+%
+% \begin{slightlysloppypar}[2]
+% \hangindent=3.5\parindent
+% \hangafter=-6
+% \noindent
% \DescribeEnv{smoothraggedrightshapetriplet}
% \DescribeEnv{smoothraggedrightshapequintuplet}
% \DescribeEnv{smoothraggedrightshapeseptuplet}
-% We introduce three environments that allow for setting three, five, or seven different
-% line-lengths: \code{smoothraggedrightshapetriplet},
-% \code{smoothraggedrightshapequintuplet}, and \code{smoothraggedrightshapeseptuplet}; they
-% work for paragraphs up to
+% We introduce three environments that set three, five, or seven different line-lengths
+% (which \TeX{} of course will repeat for paragraphs longer than three, five, or seven
+% lines): \code{smoothraggedrightshapetriplet}, \code{smoothraggedrightshapequintuplet}, and
+% \code{smoothraggedrightshapeseptuplet}; they work for paragraph lengths up to
% \makeatletter
-% \typog@triplet@max@lines, \typog@quintuplet@max@lines, or \typog@septuplet@max@lines~lines,
+% \typog@triplet@max@lines, \typog@quintuplet@max@lines, and \typog@septuplet@max@lines~lines,
% \makeatother
% respectively.
% \end{slightlysloppypar}
%
-%
% \begin{maxipage}
% \begin{synopsis}\label{syn:smoothraggedrightshapetriplet}\label{syn:smoothraggedrightshapequintuplet}\label{syn:smoothraggedrightshapeseptuplet}
% \cs{begin}|{smoothraggedrightshapetriplet}|\oarg{option\dots}\marg{width1}\marg{width2}\marg{width3} \\
@@ -4224,23 +4970,47 @@ end
% The default generator is |triplet|.
%
% \item[\cs{smoothraggedrightleftskip}=\meta{dim}]
-% Value for |leftskip| to pass to the generator. Default:~0pt.
+% Value for |leftskip| to pass to the generator. Default:~0\,pt.
%
% \item[\cs{smoothraggedrightparindent}=\meta{dim}]
-% Value for |parindent| to pass to the generator. Default:~0pt.
+% Value for |parindent| to pass to the generator. Default:~0\,pt.
%
% \item[\cs{smoothraggedrightragwidth}=\meta{dim}]
-% Value for the width of the ragged right margin. Default:~2em.
+% Value for the width of the ragged right margin. Default:~2\,em.
% \end{description}
%
+% \begin{samepage}
+% \def\smoothraggedrightgenerator{quintuplet}
+% \setlength{\smoothraggedrightragwidth}{7pt}
+% \begin{nocharprotrusion}\fussy
+% \begin{smoothraggedright}
+% Throughout this manual we have demonstrated how \code{smoothraggedright} environments
+% work for very narrow columns namely inside of the document's margins: all maginal notes
+% were typeset inside of \cs{smoothraggedright} environments (quintuplet generator,
+% 1.5\,em rag width, at footnote~size in addition using
+% environments~\code{slightlysloppy} and \code{loosespacing}). Here, we utilize it with
+% the \smoothraggedrightgenerator~generator and a rag-width of only
+% \the\smoothraggedrightragwidth{} in a paragraph that is \the\linewidth~wide and
+% averages around twelve words per line. There is much more glue to adapt to the
+% line-ends and thus the desired rag is archieved far easier. The sloppyness is minimal,
+% this is, \cs{fussy} is in effect and character protrusion into the margins is switched
+% off. A limitation of the current implementation is that it is ineffective inside of lists.
+% Therefore, this paragraph has not been wrapped inside of an \singlequotes{example}, because
+% all examples are coded as lists.
+% \end{smoothraggedright}
+% \end{nocharprotrusion}
+% \end{samepage}
+%
% \begin{usecases}
% Replacement for \cs{RaggedRight}~\cite{package:ragged2e}.~\visualpar Design alternative for
% fully justified paragraphs if used with a small rag-width.
% \end{usecases}
%
-%
-% \addtocontents{toc}{\par\bigskip\hfill\textit{Table of Contents continued on next page.}}
-% \addtocontents{toc}{\clearpage}
+% \begin{futuredirection}
+% Translate the code to \packagename{l3galley} which is part of the
+% \packagename{l3experimental}~package~\cite{package:l3experimental}. Galley~code is
+% supposed to work inside of lists, too.
+% \end{futuredirection}
%
%
% \sectionfinish
@@ -4250,7 +5020,7 @@ end
% Many other packages help with getting better output from \LaTeX. Here is a list --~in
% alphabetical order~-- of the ones the author considers particularly valuable.
%
-% \sbox{\listlabelbox}{\packagename{microtype}}
+% \sbox{\listlabelbox}{\packagename{enumitem}}
% \begin{description}[font=\normalfont, labelsep*=1em, labelwidth=\wd\listlabelbox, leftmargin=!]
% \item[\packagename{enumitem}]
% Flexible and consistent definition of all basic \LaTeX-list types plus inline
@@ -4268,6 +5038,9 @@ end
% Fine control of spacing, tracking, sidebearings, character protrusion into the margins,
% font expansion, and much more~\cite{package:microtype}.
%
+% See \Cref{sec:microtype-frontend} for a front-end to \packagename{microtype} offered by
+% this package.
+%
% See also \propername{Khirevich's} discussion~\cite{khirevich:2013}.
%
% \item[\packagename{ragged2e}]
@@ -4275,8 +5048,11 @@ end
% |center|~\cite{package:ragged2e}.
%
% \item[\packagename{setspace}]
-% Consistently set the document's line-spacing, i.\,e.,
+% Consistently set the line-spacing of a document, i.\,e., control
% \cs{baselineskip}~\cite{package:setspace}.
+%
+% See \Cref{sec:setspace-frontend} for a front-end to \packagename{setspace} offered by this
+% package.
% \end{description}
%
%
@@ -4291,26 +5067,34 @@ end
%
% The companion program \programname{typog-grep} for analyzing the output of
% \hyperref[syn:typoginspect]{\code{typoginspect}} and
-% \hyperref[syn:typoginspect]{\code{typoginspectpar}} has its own manual page. We reproduce
-% it here for completeness of the documentation.
+% \hyperref[syn:typoginspect]{\code{typoginspectpar}} has its own manual page. We
+% reproduce it here for completeness of the documentation.
%
+% \addtocontents{toc}{\protect\setcounter{tocdepth}{0}}
% \begin{suspendshortverb}
% \setlength{\parindent}{0pt}
% \setlength{\parskip}{6.0pt plus 2.0pt minus .5pt}
-% \input typog-grep
+% \input{typog-grep.tex}
% \end{suspendshortverb}
+% \addtocontents{toc}{\protect\setcounter{tocdepth}{2}}
%
% \sectionfinish
% \clearpage
-% \phantomsection
-% \resetfancyhead
-% \addcontentsline{toc}{section}{Change History}
-% \PrintChanges
+% \begingroup
+% \setcounter{GlossaryColumns}{1}
+% \phantomsection
+% \label{sec:changes}
+% \resetfancyhead
+% \addtocontents{toc}{\bigskip}
+% \addcontentsline{toc}{section}{\numberline{}Change History}
+% \PrintChanges
+% \endgroup
%
% \sectionfinish
% \clearpage
% \phantomsection
-% \addcontentsline{toc}{section}{References}
+% \addtocontents{toc}{\medskip}
+% \addcontentsline{toc}{section}{\numberline{}References}
% \begin{RaggedRight}
% \begin{thebibliography}{88}
% \bibitem{abrahams:2020}
@@ -4354,6 +5138,12 @@ end
% 1998,
% \biburl{https://mirrors.ctan.org/systems/doc/etex/etex_man.pdf}.
%
+% \bibitem{package:mathastext}
+% \bibauthor{Burnol, Jean-François}.
+% \bibtitle{Package~\packagename{mathastext}}.
+% 2023,
+% \biburl{https://ctan.org/pkg/mathastext}.
+%
% \bibitem{carlisle:1996}
% \bibauthor{Carlisle, David}.
% \bibtitle{Russian Paragraph Shapes}.
@@ -4399,6 +5189,12 @@ end
% Addison Wesley, Reading\kernedslash MA,
% 1986.
%
+% \bibitem{package:l3experimental}
+% \bibauthor{The \LaTeX\ Project}.
+% \bibtitle{Package~\packagename{l3experimental}}.
+% 2024,
+% \biburl{https://ctan.org/pkg/l3experimental}.
+%
% \bibitem{package:layout}
% \bibauthor{McPherson, Kent}.
% \bibtitle{Package~\packagename{layout}}.
@@ -4450,6 +5246,13 @@ end
% TUGboat, 11(1), 69\figuredash85, 1990,
% \biburl{http://www.tug.org/TUGboat/Articles/tb11-1/tb27salomon.pdf}.
%
+% \bibitem{strizver:2014}
+% \bibauthor{Strizver, Ilene}.
+% \bibtitle{Type rules!: the designer's guide to professional typography},
+% 4\textsuperior{th}~ed.
+% John Wiley~\& Sons, Hoboken\kernedslash NJ,
+% 2014.
+%
% \bibitem{package:setspace}
% \bibauthor{Tobin, Geoffrey,} and \bibauthor{Robin Fairbairns}.
% \bibtitle{Package~\packagename{setspace}}.
@@ -4526,23 +5329,35 @@ end
% \end{RaggedRight}
%
% \sectionfinish
+%
+%
% \clearpage
-% \begin{RaggedRight}
+% \begingroup
% \setcounter{IndexColumns}{2}
% \setlength{\columnsep}{30pt}
% \label{sec:index}
% \phantomsection
-% \addcontentsline{toc}{section}{Index}
+% \addtocontents{toc}{\medskip}
+% \addcontentsline{toc}{section}{\numberline{}Index}
+% \raggedcolumns
+% \def\codeidx##1{\linenumberdecoration\textbf{##1}}
+% \def\main##1{\linenumberdecoration\underbar{\textbf{##1}}}
+% \def\usage##1{\textit{\textbf{##1}}}
% \PrintIndex
-% \end{RaggedRight}
+% \endgroup
% }
%
-%
% \sectionfinish
+%
+%
% \clearpage
% \appendix
% \section{Package Code}\label{sec:package-code}
-% \addtocontents{toc}{\begingroup\small}
+% \addtocontents{toc}{\protect\begin{list}{}{\leftmargin=\subsectiontocindent\parsep=0pt}}
+% \addtocontents{toc}{\protect\item}
+% \addtocontents{toc}{\RaggedRight}
+% \addtocontents{toc}{\small}
+% \addtocontents{toc}{\tocsquashedsubsections}
% \addtocontents{toc}{\protect\begin{multicols}{2}}
% \addtocontents{toc}{\protect\raggedcolumns}
%
@@ -4555,7 +5370,7 @@ end
%<*package>
\NeedsTeXFormat{LaTeX2e}[2005/12/01]
\ProvidesPackage{typog}
- [2024/05/07 v0.3 TypoGraphic extensions]
+ [2024/07/08 v0.4 TypoGraphic extensions]
\RequirePackage{etoolbox}
\RequirePackage{everyhook}
@@ -4592,17 +5407,34 @@ end
% \end{macro}
%
% \begin{macro}{\typog@typeout}
+% Our information printer.
+% Just adds a prefix so that we can tease apart the \filesystem{log} later.
+%
+% \begin{macrocode}
+\newcommand*{\typog@typeout}[1]{\typeout{typog: #1}}
+
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\typog@typeout}
% Our debug information printer.
%
% \begin{macrocode}
-\newcommand*{\typog@typeout}[1]
- {\iftypog@debug
- \typeout{typog: #1}%
- \fi}
+\newcommand*{\typog@debug@typeout}[1]{\iftypog@debug\typog@typeout{#1}\fi}
% \end{macrocode}
% \end{macro}
%
+% \begin{tcounter}{typog@@iteration}
+% We want our own counter (currently for keeping track of iterations) that does not get
+% trampled underfoot too easily.
+%
+% \begin{macrocode}
+\newcounter{typog@@iteration}
+
+% \end{macrocode}
+% \end{tcounter}
+%
% \begin{macro}{\typog@trim@spaces}
% Pull \cs{tl\_trim\_spaces} into the \singlequotes{classic} namespace.
%
@@ -4693,69 +5525,149 @@ end
%
% Our own state\dots
%
-% \begin{macro}{\typog@mathitalicscorrection}
+% \begin{macro}{\typog@config@mathitalicscorrection}
% \begin{macrocode}
-\newmuskip\typog@mathitalicscorrection
+\newmuskip\typog@config@mathitalicscorrection
+
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{\typog@textitalicscorrection}
+% Actual \cs{labelitem}\meta{N} corrections.
+%
+% \begin{ldimen}{\typog@adjust@labelitemi}
+% \begin{macrocode}
+\newdimen{\typog@adjust@labelitemi}
+% \end{macrocode}
+% \end{ldimen}
+%
+% \begin{ldimen}{\typog@adjust@labelitemii}
+% \begin{macrocode}
+\newdimen{\typog@adjust@labelitemii}
+% \end{macrocode}
+% \end{ldimen}
+%
+% \begin{ldimen}{\typog@adjust@labelitemiii}
+% \begin{macrocode}
+\newdimen{\typog@adjust@labelitemiii}
+% \end{macrocode}
+% \end{ldimen}
+%
+% \begin{ldimen}{\typog@adjust@labelitemiv}
+% \begin{macrocode}
+\newdimen{\typog@adjust@labelitemiv}
+% \end{macrocode}
+% \end{ldimen}
+%
+% Configuration constants for \cs{labelitem}\meta{N} corrections.
+%
+% \begin{ldimen}{\typog@adjust@lowercase@labelitemi}
+% \begin{macrocode}
+\newdimen{\typog@adjust@lowercase@labelitemi}
+% \end{macrocode}
+% \end{ldimen}
+%
+% \begin{ldimen}{\typog@adjust@lowercase@labelitemii}
+% \begin{macrocode}
+\newdimen{\typog@adjust@lowercase@labelitemii}
+% \end{macrocode}
+% \end{ldimen}
+%
+% \begin{ldimen}{\typog@adjust@lowercase@labelitemiii}
+% \begin{macrocode}
+\newdimen{\typog@adjust@lowercase@labelitemiii}
+% \end{macrocode}
+% \end{ldimen}
+%
+% \begin{ldimen}{\typog@adjust@lowercase@labelitemiv}
+% \begin{macrocode}
+\newdimen{\typog@adjust@lowercase@labelitemiv}
+% \end{macrocode}
+% \end{ldimen}
+%
+% \begin{ldimen}{\typog@adjust@uppercase@labelitemi}
+% \begin{macrocode}
+\newdimen{\typog@adjust@uppercase@labelitemi}
+% \end{macrocode}
+% \end{ldimen}
+%
+% \begin{ldimen}{\typog@adjust@uppercase@labelitemii}
+% \begin{macrocode}
+\newdimen{\typog@adjust@uppercase@labelitemii}
+% \end{macrocode}
+% \end{ldimen}
+%
+% \begin{ldimen}{\typog@adjust@uppercase@labelitemiii}
% \begin{macrocode}
-\newlength{\typog@textitalicscorrection}
+\newdimen{\typog@adjust@uppercase@labelitemiii}
+% \end{macrocode}
+% \end{ldimen}
+%
+% \begin{ldimen}{\typog@adjust@uppercase@labelitemiv}
+% \begin{macrocode}
+\newdimen{\typog@adjust@uppercase@labelitemiv}
+
+% \end{macrocode}
+% \end{ldimen}
+%
+% Other lengths\dots
+%
+% \begin{macro}{\typog@config@textitalicscorrection}
+% \begin{macrocode}
+\newlength{\typog@config@textitalicscorrection}
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{\typog@ligaturekern}
+% \begin{macro}{\typog@config@ligaturekern}
% \begin{macrocode}
-\newlength{\typog@ligaturekern}
+\newlength{\typog@config@ligaturekern}
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{\typog@raisecapitaldash}
+% \begin{macro}{\typog@config@raisecapitaldash}
% \begin{macrocode}
-\newlength{\typog@raisecapitaldash}
+\newlength{\typog@config@raisecapitaldash}
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{\typog@raisecapitalguillemets}
+% \begin{macro}{\typog@config@raisecapitalguillemets}
% \begin{macrocode}
-\newlength{\typog@raisecapitalguillemets}
+\newlength{\typog@config@raisecapitalguillemets}
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{\typog@raisecapitalhyphen}
+% \begin{macro}{\typog@config@raisecapitalhyphen}
% \begin{macrocode}
-\newlength{\typog@raisecapitalhyphen}
+\newlength{\typog@config@raisecapitalhyphen}
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{\typog@raisecapitaltimes}
+% \begin{macro}{\typog@config@raisecapitaltimes}
% \begin{macrocode}
-\newlength{\typog@raisecapitaltimes}
+\newlength{\typog@config@raisecapitaltimes}
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{\typog@raiseguillemets}
+% \begin{macro}{\typog@config@raiseguillemets}
% \begin{macrocode}
-\newlength{\typog@raiseguillemets}
+\newlength{\typog@config@raiseguillemets}
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{\typog@raisefiguredash}
+% \begin{macro}{\typog@config@raisefiguredash}
% \begin{macrocode}
-\newlength{\typog@raisefiguredash}
+\newlength{\typog@config@raisefiguredash}
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{\typog@slashkern}
+% \begin{macro}{\typog@config@slashkern}
% \begin{macrocode}
-\newlength{\typog@slashkern}
+\newlength{\typog@config@slashkern}
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{\typog@breakpenalty}
+% \begin{macro}{\typog@config@breakpenalty}
% \begin{macrocode}
-\newcommand*{\typog@breakpenalty}{\exhyphenpenalty}
+\newcommand*{\typog@config@breakpenalty}{\exhyphenpenalty}
% \end{macrocode}
% \end{macro}
%
@@ -4771,9 +5683,9 @@ end
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{\typog@trackingttspacing}
+% \begin{macro}{\typog@config@trackingttspacing}
% \begin{macrocode}
-\newcommand*{\typog@trackingttspacing}{300, 90, 60}
+\newcommand*{\typog@config@trackingttspacing}{300, 90, 60}
% \end{macrocode}
% \end{macro}
%
@@ -4871,77 +5783,99 @@ end
\newcommand*{\typog@set@shrink@limits}
{\edef\typog@@star{*}%
- \edef\typog@@limit{\typog@triple@get@i{\typog@shrinklimits}}%
+ \edef\typog@@limit{\typog@triple@get@i{\typog@config@shrinklimits}}%
\unless\ifx\typog@@limit\typog@@star\edef\typog@shrink@i{\number\typog@@limit}\fi
- \edef\typog@@limit{\typog@triple@get@ii{\typog@shrinklimits}}%
+ \edef\typog@@limit{\typog@triple@get@ii{\typog@config@shrinklimits}}%
\unless\ifx\typog@@limit\typog@@star\edef\typog@shrink@ii{\number\typog@@limit}\fi
- \edef\typog@@limit{\typog@triple@get@iii{\typog@shrinklimits}}%
+ \edef\typog@@limit{\typog@triple@get@iii{\typog@config@shrinklimits}}%
\unless\ifx\typog@@limit\typog@@star\edef\typog@shrink@iii{\number\typog@@limit}\fi}
\newcommand*{\typog@set@stretch@limits}
{\edef\typog@@star{*}%
- \edef\typog@@limit{\typog@triple@get@i{\typog@stretchlimits}}%
+ \edef\typog@@limit{\typog@triple@get@i{\typog@config@stretchlimits}}%
\unless\ifx\typog@@limit\typog@@star\edef\typog@stretch@i{\number\typog@@limit}\fi
- \edef\typog@@limit{\typog@triple@get@ii{\typog@stretchlimits}}%
+ \edef\typog@@limit{\typog@triple@get@ii{\typog@config@stretchlimits}}%
\unless\ifx\typog@@limit\typog@@star\edef\typog@stretch@ii{\number\typog@@limit}\fi
- \edef\typog@@limit{\typog@triple@get@iii{\typog@stretchlimits}}%
+ \edef\typog@@limit{\typog@triple@get@iii{\typog@config@stretchlimits}}%
\unless\ifx\typog@@limit\typog@@star\edef\typog@stretch@iii{\number\typog@@limit}\fi}
\DeclareOptionX<typog>{breakpenalty}%
- {\renewcommand*{\typog@breakpenalty}{#1}}
+ {\renewcommand*{\typog@config@breakpenalty}{#1}}
\DeclareOptionX<typog>{debug}{\typog@debugtrue}
\DeclareOptionX<typog>{mathitalicscorrection}[.4mu]%
- {\typog@mathitalicscorrection=#1\relax}%
+ {\typog@config@mathitalicscorrection=#1\relax}%
\DeclareOptionX<typog>{nodebug}{\typog@debugfalse}
\DeclareOptionX<typog>{textitalicscorrection}[.02em]%
- {\setlength{\typog@textitalicscorrection}{#1}}
+ {\setlength{\typog@config@textitalicscorrection}{#1}}
\DeclareOptionX<typog>{ligaturekern}[.033333em]%
- {\setlength{\typog@ligaturekern}{#1}}
+ {\setlength{\typog@config@ligaturekern}{#1}}
+\DeclareOptionX<typog>{lowercaselabelitemadjustments}%
+ {\typog@debug@typeout{lowercaselabelitemadjustments={#1}}
+ \def\typog@@do##1{\addtocounter{typog@@iteration}{1}
+ \global\setlength{\csname typog@adjust@lowercase@labelitem\romannumeral\thetypog@@iteration\endcsname}{##1}}
+ \setcounter{typog@@iteration}{0}
+ \forcsvlist{\typog@@do}{#1}}
+\newcommand*{\typog@config@lowercaselabelitemadjustments}
+ {\the\typog@adjust@lowercase@labelitemi,\space
+ \the\typog@adjust@lowercase@labelitemii,\space
+ \the\typog@adjust@lowercase@labelitemiii,\space
+ \the\typog@adjust@lowercase@labelitemiv}
\DeclareOptionX<typog>{raisecapitaldash}[\z@]%
- {\setlength{\typog@raisecapitaldash}{#1}}
+ {\setlength{\typog@config@raisecapitaldash}{#1}}
\DeclareOptionX<typog>{raisecapitalguillemets}[\z@]%
- {\setlength{\typog@raisecapitalguillemets}{#1}}
+ {\setlength{\typog@config@raisecapitalguillemets}{#1}}
\DeclareOptionX<typog>{raisecapitalhyphen}[\z@]%
- {\setlength{\typog@raisecapitalhyphen}{#1}}
+ {\setlength{\typog@config@raisecapitalhyphen}{#1}}
\DeclareOptionX<typog>{raisecapitaltimes}[\z@]%
- {\setlength{\typog@raisecapitaltimes}{#1}}
+ {\setlength{\typog@config@raisecapitaltimes}{#1}}
\DeclareOptionX<typog>{raiseguillemets}[\z@]%
- {\setlength{\typog@raiseguillemets}{#1}}
+ {\setlength{\typog@config@raiseguillemets}{#1}}
\DeclareOptionX<typog>{raisefiguredash}[\z@]%
- {\setlength{\typog@raisefiguredash}{#1}}
+ {\setlength{\typog@config@raisefiguredash}{#1}}
\DeclareOptionX<typog>{raise*}[\z@]%
- {\setlength{\typog@raisecapitaldash}{#1}%
- \setlength{\typog@raisecapitalhyphen}{#1}%
- \setlength{\typog@raisecapitaltimes}{#1}%
- \setlength{\typog@raisefiguredash}{#1}}
+ {\setlength{\typog@config@raisecapitaldash}{#1}%
+ \setlength{\typog@config@raisecapitalhyphen}{#1}%
+ \setlength{\typog@config@raisecapitaltimes}{#1}%
+ \setlength{\typog@config@raisefiguredash}{#1}}
\DeclareOptionX<typog>{shrinklimits}%
[\typog@default@shrink@i, \typog@default@shrink@ii, \typog@default@shrink@iii]%
{\typog@require@preloaded@microtype
\ifx\@onlypreamble\@notprerr
\PackageWarning{typog}{option `shrinklimits' can only be used in the preamble}%
\else
- \edef\typog@shrinklimits{#1}%
+ \edef\typog@config@shrinklimits{#1}%
\typog@set@shrink@limits
\fi}
\DeclareOptionX<typog>{slashkern}[.05em]%
- {\setlength{\typog@slashkern}{#1}}
+ {\setlength{\typog@config@slashkern}{#1}}
\DeclareOptionX<typog>{stretchlimits}%
[\typog@default@stretch@i, \typog@default@stretch@ii, \typog@default@stretch@iii]%
{\typog@require@preloaded@microtype
\ifx\@onlypreamble\@notprerr
\PackageWarning{typog}{option `stretchlimits' can only be used in the preamble}%
\else
- \edef\typog@stretchlimits{#1}%
+ \edef\typog@config@stretchlimits{#1}%
\typog@set@stretch@limits
\fi}
-\DeclareOptionX<typog>{trackingttspacing}[\typog@trackingttspacing]%
+\DeclareOptionX<typog>{trackingttspacing}[\typog@config@trackingttspacing]%
{\typog@require@preloaded@microtype
\ifx\@onlypreamble\@notprerr
\PackageWarning{typog}{option `trackingttspacing' can only be used in the preamble}%
\else
- \typog@typeout{trackingttspacing=#1}%
+ \typog@debug@typeout{trackingttspacing=#1}%
\SetTracking[outer spacing={#1}]{encoding=*, family=tt*}{0}%
\fi}
+\DeclareOptionX<typog>{uppercaselabelitemadjustments}%
+ {\typog@debug@typeout{uppercaselabelitemadjustments={#1}}
+ \def\typog@@do##1{\addtocounter{typog@@iteration}{1}
+ \setlength{\csname typog@adjust@uppercase@labelitem\romannumeral\thetypog@@iteration\endcsname}{##1}}
+ \setcounter{typog@@iteration}{0}
+ \forcsvlist{\typog@@do}{#1}}
+\newcommand*{\typog@config@uppercaselabelitemadjustments}
+ {\the\typog@adjust@uppercase@labelitemi,\space
+ \the\typog@adjust@uppercase@labelitemii,\space
+ \the\typog@adjust@uppercase@labelitemiii,\space
+ \the\typog@adjust@uppercase@labelitemiv}
\newcommand*{\typog@initialize@options}
{\ExecuteOptionsX<typog>{
@@ -4963,7 +5897,7 @@ end
% \fi
%
%
-% \subsection*{Setup}
+% \subsection{Setup and Reconfiguration}
%
% \begin{environment}{typogsetup}
% An empty argument list resets all initialized values to their defaults.
@@ -4982,8 +5916,42 @@ end
% \end{environment}
%
% \begin{macro}{\typogget}
+% Access the package's configuration (name-)space.
+%
% \begin{macrocode}
-\NewDocumentCommand{\typogget}{m}{\csname typog@#1\endcsname}
+\NewDocumentCommand{\typogget}{m}{\csname typog@config@#1\endcsname}
+
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\typoggetnth}
+% \changes{v0.4}{2024-05-15}{New macro.}
+% Access the \(n\)\textsuperscript{th} element of a comma-separated, list-like configuration
+% item's value.
+%
+% \begin{macrocode}
+\ExplSyntaxOn
+\cs_generate_variant:Nn \seq_set_split:Nnn {Nne}
+\cs_new:Npn \typog_get_nth_csname:cnn #1#2#3
+ {
+ \seq_set_split:Nne \l_tmpa_seq {,} {\cs:w typog@config@#2 \cs_end:}
+ \cs_gset:cpn {#1} {\seq_item:Nn \l_tmpa_seq {#3}}
+ }
+\cs_new:Npn \typog_get_nth_dimen:nnn #1#2#3
+ {
+ \seq_set_split:Nne \l_tmpa_seq {,} {\cs:w typog@config@#2 \cs_end:}
+ \dim_set:Nn {#1} {\seq_item:Nn \l_tmpa_seq {#3}}
+ }
+\NewDocumentCommand{\typoggetnth}{m m m}{
+ \token_if_dim_register:NTF {#1}
+ {
+ \typog_get_nth_dimen:nnn {#1} {#2} {#3}
+ }
+ {
+ \typog_get_nth_csname:cnn {#1} {#2} {#3}
+ }
+}
+\ExplSyntaxOff
% \end{macrocode}
% \end{macro}
@@ -5065,6 +6033,7 @@ end
%
% \begin{macrocode}
\newcounter{typog@inspect@count}
+
% \end{macrocode}
% \end{macro}
%
@@ -5085,11 +6054,16 @@ end
\edef\typog@@arg{#2}%
\ifx\typog@@arg\empty
\stepcounter{typog@inspect@count}%
- \edef\typog@@id{\typog@default@inspect@id@prefix\arabic{typog@inspect@count}}%
+ \edef\typog@@id{\typog@default@inspect@id@prefix
+ \arabic{typog@inspect@count}}%
\else
\edef\typog@@id{\typog@trim@spaces{\typog@@arg}}%
\fi
- \typeout{<typog-inspect id="\typog@@id" job="\jobname" line="\the\inputlineno" page="\the\value{page}">}%
+ \typeout{<typog-inspect\space
+ id="\typog@@id"\space
+ job="\jobname"\space
+ line="\the\inputlineno"\space
+ page="\the\value{page}">}%
% \end{macrocode}
%
% Set both badness thresholds to absurdly low values as to activate \TeX's reports.
@@ -5210,7 +6184,7 @@ end
% \begin{macro}{\nolig}
% \begin{macrocode}
\NewDocumentCommand{\nolig}{s o}
- {\dimen0=\IfNoValueTF{#2}{\typog@ligaturekern}{#2\typog@dim@unit}%
+ {\dimen0=\IfNoValueTF{#2}{\typog@config@ligaturekern}{#2\typog@dim@unit}%
\IfBooleanTF{#1}%
{\kern\dimen0\ignorespaces}%
{\discretionary{\typog@hyphen}{}{\kern\dimen0}%
@@ -5249,7 +6223,7 @@ end
%
% \begin{macrocode}
\newcommand*{\typog@itcorr@text@unconditional}[1]
- {\kern#1\typog@textitalicscorrection}
+ {\kern#1\typog@config@textitalicscorrection}
% \end{macrocode}
% \end{macro}
%
@@ -5275,7 +6249,7 @@ end
%
% \begin{macrocode}
\newcommand*{\typog@itcorr@math}[1]
- {\mkern#1\typog@mathitalicscorrection}
+ {\mkern#1\typog@config@mathitalicscorrection}
% \end{macrocode}
% \end{macro}
%
@@ -5326,11 +6300,11 @@ end
%
% \begin{macrocode}
\NewDocumentCommand{\kernedslash}{s}
- {\hspace*{\typog@slashkern}%
+ {\hspace*{\typog@config@slashkern}%
\typog@forwardslash
\IfBooleanTF{#1}%
- {\hspace*{\typog@slashkern}\ignorespaces}%
- {\typog@breakpoint\typog@allowhyphenation\hspace*{\typog@slashkern}}}
+ {\hspace*{\typog@config@slashkern}\ignorespaces}%
+ {\typog@breakpoint\typog@allowhyphenation\hspace*{\typog@config@slashkern}}}
% \end{macrocode}
%
% \acronym{PDF}-substitute definition
@@ -5358,7 +6332,7 @@ end
\def\typog@@optarg{#2}%
\hspace*{#3\typog@dim@unit}%
\raisebox{\ifx\typog@@optarg\typog@@auto
- \typog@raisecapitalhyphen
+ \typog@config@raisecapitalhyphen
\else
\typog@@optarg\typog@dim@unit
\fi}{\typog@hyphen}%
@@ -5428,7 +6402,7 @@ end
%
% \begin{macrocode}
\newcommand*{\typog@breakpoint}
- {\penalty\typog@breakpenalty}
+ {\penalty\typog@config@breakpenalty}
% \end{macrocode}
% \end{macro}
%
@@ -5439,7 +6413,7 @@ end
%
% \begin{macrocode}
\NewDocumentCommand{\capitalhyphen}{s}
- {\raisebox{\typog@raisecapitalhyphen}{\typog@hyphen}%
+ {\raisebox{\typog@config@raisecapitalhyphen}{\typog@hyphen}%
\IfBooleanTF{#1}%
{\ignorespaces}%
{\typog@breakpoint\typog@allowhyphenation}}
@@ -5473,7 +6447,7 @@ end
%
% \begin{macrocode}
\NewDocumentCommand{\capitalendash}{s}
- {\raisebox{\typog@raisecapitaldash}{\textendash}%
+ {\raisebox{\typog@config@raisecapitaldash}{\textendash}%
\IfBooleanTF{#1}%
{\ignorespaces}%
{\typog@breakpoint\typog@allowhyphenation}}
@@ -5503,7 +6477,7 @@ end
%
% \begin{macrocode}
\NewDocumentCommand{\capitalemdash}{s}
- {\raisebox{\typog@raisecapitaldash}{\textemdash}%
+ {\raisebox{\typog@config@raisecapitaldash}{\textemdash}%
\IfBooleanTF{#1}%
{\ignorespaces}%
{\typog@breakpoint\typog@allowhyphenation}}
@@ -5531,7 +6505,7 @@ end
%
% \begin{macrocode}
\NewDocumentCommand{\figuredash}{s}
- {\raisebox{\typog@raisefiguredash}{\textendash}%
+ {\raisebox{\typog@config@raisefiguredash}{\textendash}%
\IfBooleanTF{#1}%
{\ignorespaces}%
{\typog@breakpoint\typog@allowhyphenation}}
@@ -5550,9 +6524,9 @@ end
% \begin{macrocode}
\NewDocumentCommand{\capitaltimes}{}
{\ifmmode
- \mathbin{\raisebox{\typog@raisecapitaltimes}{$\m@th\times$}}%
+ \mathbin{\raisebox{\typog@config@raisecapitaltimes}{$\m@th\times$}}%
\else
- \raisebox{\typog@raisecapitaltimes}{\texttimes}%
+ \raisebox{\typog@config@raisecapitaltimes}{\texttimes}%
\fi}
% \end{macrocode}
%
@@ -5571,7 +6545,7 @@ end
% \begin{macrocode}
\NewDocumentCommand{\singleguillemetleft}{}
{\typog@allowhyphenation
- \raisebox{\typog@raiseguillemets}{\guilsinglleft}}
+ \raisebox{\typog@config@raiseguillemets}{\guilsinglleft}}
% \end{macrocode}
%
% \acronym{PDF}-substitute definition
@@ -5584,7 +6558,7 @@ end
% \begin{macro}{\singleguillemetright}
% \begin{macrocode}
\NewDocumentCommand{\singleguillemetright}{}
- {\raisebox{\typog@raiseguillemets}{\guilsinglright}%
+ {\raisebox{\typog@config@raiseguillemets}{\guilsinglright}%
\typog@allowhyphenation}
% \end{macrocode}
%
@@ -5599,7 +6573,7 @@ end
% \begin{macrocode}
\NewDocumentCommand{\doubleguillemetleft}{}
{\typog@allowhyphenation
- \raisebox{\typog@raiseguillemets}{\guillemotleft}}
+ \raisebox{\typog@config@raiseguillemets}{\guillemotleft}}
% \end{macrocode}
%
% \acronym{PDF}-substitute definition
@@ -5612,7 +6586,7 @@ end
% \begin{macro}{\doubleguillemetright}
% \begin{macrocode}
\NewDocumentCommand{\doubleguillemetright}{}
- {\raisebox{\typog@raiseguillemets}{\guillemotright}%
+ {\raisebox{\typog@config@raiseguillemets}{\guillemotright}%
\typog@allowhyphenation}
% \end{macrocode}
%
@@ -5627,7 +6601,7 @@ end
% \begin{macrocode}
\NewDocumentCommand{\Singleguillemetleft}{}
{\typog@allowhyphenation
- \raisebox{\typog@raisecapitalguillemets}{\guilsinglleft}}
+ \raisebox{\typog@config@raisecapitalguillemets}{\guilsinglleft}}
% \end{macrocode}
%
% \acronym{PDF}-substitute definition
@@ -5640,7 +6614,7 @@ end
% \begin{macro}{\Singleguillemetright}
% \begin{macrocode}
\NewDocumentCommand{\Singleguillemetright}{}
- {\raisebox{\typog@raisecapitalguillemets}{\guilsinglright}%
+ {\raisebox{\typog@config@raisecapitalguillemets}{\guilsinglright}%
\typog@allowhyphenation}
% \end{macrocode}
%
@@ -5655,7 +6629,7 @@ end
% \begin{macrocode}
\NewDocumentCommand{\Doubleguillemetleft}{}
{\typog@allowhyphenation
- \raisebox{\typog@raisecapitalguillemets}{\guillemotleft}}
+ \raisebox{\typog@config@raisecapitalguillemets}{\guillemotleft}}
% \end{macrocode}
%
% \acronym{PDF}-substitute definition
@@ -5668,7 +6642,7 @@ end
% \begin{macro}{\Doubleguillemetright}
% \begin{macrocode}
\NewDocumentCommand{\Doubleguillemetright}{}
- {\raisebox{\typog@raisecapitalguillemets}{\guillemotright}%
+ {\raisebox{\typog@config@raisecapitalguillemets}{\guillemotright}%
\typog@allowhyphenation}
% \end{macrocode}
%
@@ -5681,6 +6655,457 @@ end
% \end{macro}
%
%
+% \subsection{Vert. Adjust Label Items}
+%
+% \begin{macro}{\@typog@uppercase@adjust@labelitem}
+% Handle all possible requests for uppercase label item correction.
+% Patch |itemize|~environments.
+%
+% \begin{macrocode}
+\newcommand*{\@typog@uppercase@adjust@labelitem}[1]
+ {\@typog@maybe@patch@itemize
+ \ifstrequal{#1}{*}
+ {\setlength{\typog@adjust@labelitemi}
+ {\typog@adjust@uppercase@labelitemi}
+ \setlength{\typog@adjust@labelitemii}
+ {\typog@adjust@uppercase@labelitemii}
+ \setlength{\typog@adjust@labelitemiii}
+ {\typog@adjust@uppercase@labelitemiii}
+ \setlength{\typog@adjust@labelitemiv}
+ {\typog@adjust@uppercase@labelitemiv}}
+ {\ifcase #1% 0
+ \relax % outside of any itemize environment
+ \or % 1
+ \setlength{\typog@adjust@labelitemi}
+ {\typog@adjust@uppercase@labelitemi}
+ \or % 2
+ \setlength{\typog@adjust@labelitemii}
+ {\typog@adjust@uppercase@labelitemii}
+ \or % 3
+ \setlength{\typog@adjust@labelitemiii}
+ {\typog@adjust@uppercase@labelitemiii}
+ \or % 4
+ \setlength{\typog@adjust@labelitemiv}
+ {\typog@adjust@uppercase@labelitemiv}
+ \else
+ \PackageError{typog}
+ {Itemize level out of range}
+ {Valid levels are 1, 2, 3, 4, and *}
+ \fi}}
+
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@typog@lowercase@adjust@labelitem}
+% Handle all possible requests for lowercase label item correction.
+% Patch |itemize|~environments.
+%
+% \begin{macrocode}
+\newcommand*{\@typog@lowercase@adjust@labelitem}[1]
+ {\@typog@maybe@patch@itemize
+ \ifstrequal{#1}{*}
+ {\setlength{\typog@adjust@labelitemi}
+ {\typog@adjust@lowercase@labelitemi}
+ \setlength{\typog@adjust@labelitemii}
+ {\typog@adjust@lowercase@labelitemii}
+ \setlength{\typog@adjust@labelitemiii}
+ {\typog@adjust@lowercase@labelitemiii}
+ \setlength{\typog@adjust@labelitemiv}
+ {\typog@adjust@lowercase@labelitemiv}}
+ {\ifcase #1% 0
+ \relax % outside of any itemize environment
+ \or % 1
+ \setlength{\typog@adjust@labelitemi}
+ {\typog@adjust@lowercase@labelitemi}
+ \or % 2
+ \setlength{\typog@adjust@labelitemii}
+ {\typog@adjust@lowercase@labelitemii}
+ \or % 3
+ \setlength{\typog@adjust@labelitemiii}
+ {\typog@adjust@lowercase@labelitemiii}
+ \or % 4
+ \setlength{\typog@adjust@labelitemiv}
+ {\typog@adjust@lowercase@labelitemiv}
+ \else
+ \PackageError{typog}
+ {Itemize level out of range}
+ {Valid levels are 1, 2, 3, 4, and *}
+ \fi}}
+
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@typog@noadjust@labelitem}
+% Neutralize all label item corrections.
+% This function \emph{does not} request patching any |itemize|~environment!
+%
+% \begin{macrocode}
+\newcommand*{\@typog@noadjust@labelitem}[1]
+ {\ifstrequal{#1}{*}
+ {\setlength{\typog@adjust@labelitemi}{\z@}
+ \setlength{\typog@adjust@labelitemii}{\z@}
+ \setlength{\typog@adjust@labelitemiii}{\z@}
+ \setlength{\typog@adjust@labelitemiv}{\z@}}
+ {\ifcase #1% 0
+ \relax % outside of any itemize environment
+ \or % 1
+ \setlength{\typog@adjust@labelitemi}{\z@}
+ \or % 2
+ \setlength{\typog@adjust@labelitemii}{\z@}
+ \or % 3
+ \setlength{\typog@adjust@labelitemiii}{\z@}
+ \or % 4
+ \setlength{\typog@adjust@labelitemiv}{\z@}
+ \else
+ \PackageError{typog}
+ {Itemize level out of range}
+ {Valid levels are 1, 2, 3, 4, and *}
+ \fi}}
+
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\uppercaseadjustlabelitems}
+% \changes{v0.4}{2024-05-14}{New macro.}
+% User macro that handles lists and the treats the empty list specially. We wrap the code
+% into \cs{AfterPreamble} because it may be called in the document's preamble where we don't
+% know whether package~\packagename{enumitem} already has been loaded and we can patch its
+% variant of \code{itemize}.
+%
+% \begin{macrocode}
+\NewDocumentCommand{\uppercaseadjustlabelitems}{m}
+ {\AfterPreamble{%
+ \ifblank{#1}
+ {\@typog@uppercase@adjust@labelitem{\@itemdepth}}
+ {\forcsvlist{\@typog@uppercase@adjust@labelitem}{#1}}%
+ \ignorespaces}}
+
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\lowercaseadjustlabelitems}
+% \changes{v0.4}{2024-05-14}{New macro.}
+% User macro that handles lists and the treats the empty list specially.
+%
+% \begin{macrocode}
+\NewDocumentCommand{\lowercaseadjustlabelitems}{m}
+ {\AfterPreamble{%
+ \ifblank{#1}
+ {\@typog@lowercase@adjust@labelitem{\@itemdepth}}
+ {\forcsvlist{\@typog@lowercase@adjust@labelitem}{#1}}%
+ \ignorespaces}}
+
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\noadjustlabelitems}
+% \changes{v0.4}{2024-05-14}{New macro.}
+% User macro that handles lists and the treats the empty list specially.
+%
+% \begin{macrocode}
+\NewDocumentCommand{\noadjustlabelitems}{m}
+ {\ifblank{#1}
+ {\@typog@noadjust@labelitem{\@itemdepth}}
+ {\forcsvlist{\@typog@noadjust@labelitem}{#1}}%
+ \ignorespaces}
+
+% \end{macrocode}
+% \end{macro}
+%
+% Now we get to the dirty part. All the above definitions do not get called until we hack the
+% existing |itemize|-environments, either the one of plain~\LaTeX{} or the one modified by
+% package~\packagename{enumitem}.
+%
+% Here comes the result of \code{latexdef -c article -s itemize}, which was used to derive the
+% patch code:
+%
+% \begin{verbatim}
+% \def\itemize{%
+% \ifnum \@itemdepth > \thr@@
+% \@toodeep
+% \else
+% \advance\@itemdepth\@ne
+% \edef\@itemitem{labelitem\romannumeral\the\@itemdepth}%
+% \expandafter
+% \list
+% \csname\@itemitem\endcsname
+% {\def\makelabel##1{\hss\llap{##1}}}%
+% \fi}\end{verbatim}
+%
+% \begin{macro}{\@typog@itemize@patch}
+% This is the additional code we inject into plain \LaTeX's or
+% package~\packagename{enumitem}'s \cs{itemize}.
+%
+% \begin{macrocode}
+\newcommand*{\@typog@itemize@patch}
+% \end{macrocode}
+%
+% Save the original definition of \cs{@itemitem} for chain-calling it later on.
+%
+% \begin{macrocode}
+ {\letcs{\@typog@old@itemitem}{\@itemitem}
+% \end{macrocode}
+%
+% Sneak in our own macro's name.
+%
+% \begin{macrocode}
+ \edef\@itemitem{@typog@labelitem\romannumeral\the\@itemdepth}
+% \end{macrocode}
+%
+% Redefine under the original macro's name so that our code gets called and the old code
+% (\cs{@typog@old@itemitem}) is expanded.
+%
+% \begin{macrocode}
+ \expandafter\def\csname\@itemitem\endcsname
+ {\raisebox{\csname typog@adjust@labelitem\romannumeral\the\@itemdepth\endcsname}
+ {\@typog@old@itemitem}}}
+
+% \end{macrocode}
+% \end{macro}
+%
+% If package~\packagename{enumitem} has been loaded, we use the \emph{same} patch. Here comes
+% the result of \code{latexdef -c article -p enumitem -s enit@itemize@i} that explains, why no
+% change is required:
+%
+% \begin{verbatim}
+% \def\enit@itemize@i#1#2#3#4{%
+% \ifnum #1 > #3 \relax
+% \enit@toodeep
+% \else
+% \enit@prelist\@ne{#1}{#2}%
+% \edef\@itemitem{label#2\romannumeral#1}%
+% \expandafter
+% \enit@list
+% \csname\@itemitem\endcsname
+% {\let\enit@calc\z@
+% \def\makelabel##1{\enit@align{\enit@format{##1}}}%
+% \enit@preset{#2}{#1}{#4}%
+% \enit@calcleft
+% \enit@before
+% \enit@negwidth}%
+% \enit@keyfirst
+% \fi}\end{verbatim}
+%
+% \begin{macro}{\@typog@patch@itemize}
+% Unconditionally apply the patches that are just \emph{single} macro calls to disturb the
+% original macros as little as possible. If we detect \packagename{enumitem} to be present
+% we modify its definition of \code{itemize} otherwise we wrestle \LaTeX's macro.
+%
+% \begin{macrocode}
+\newcommand*{\@typog@patch@itemize}
+ {\ifdefined\enit@itemize@i
+ \patchcmd{\enit@itemize@i}
+ {\expandafter}
+ {\@typog@itemize@patch\expandafter}
+ {\typog@debug@typeout{patching enumitem \string\enit@itemize@i\space succeeded}}
+ {\PackageError{typog}
+ {Patching enumitem macro \string\enit@itemize@i\space failed}
+ {}}
+ \else
+ \patchcmd{\itemize}
+ {\expandafter}
+ {\@typog@itemize@patch\expandafter}
+ {\typog@debug@typeout{patching \string\itemize\space succeeded}}
+ {\PackageError{typog}
+ {Patching plain LaTeX macro \string\itemize\space failed}
+ {}}
+ \fi}
+
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@typog@maybe@patch@itemize}
+% Apply the patches only once.
+%
+% \begin{macrocode}
+\newbool{@typog@itemize@has@been@patched}
+\newcommand*{\@typog@maybe@patch@itemize}
+ {\ifbool{@typog@itemize@has@been@patched}
+ {\relax}
+ {\@typog@patch@itemize
+ \booltrue{@typog@itemize@has@been@patched}}}
+
+% \end{macrocode}
+% \end{macro}
+%
+% Here come our convenience macros to simplify an accurate setup of the label adjustments.
+%
+% \begin{macro}{\typog@hairline@width}
+% Line width of the horizontal reference lines in our convenience macros.
+%
+% \begin{macrocode}
+\newcommand*{\typog@hairline@width}{.125pt}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\typogadjuststairsfor}
+% The arguments are:
+% \#1: \meta{scale-factor},
+% \#2: \meta{step-size},
+% \#3: \meta{number-of-steps},
+% \#4: \meta{sample}, and
+% \#5: \cs{labelitem}\meta{N}.
+%
+% Generate an ascending stairs of argument~\#5.
+%
+% \begin{macrocode}
+\newcommand*{\typogadjuststairsfor}[5]
+% \end{macrocode}
+%
+% Store (half of) the space between two samples in \cs{dimen0}.
+%
+% \begin{macrocode}
+ {\dimen0=1pt%
+% \end{macrocode}
+%
+% Load the \meta{number-of-steps} and ensure that it is odd.
+%
+% \begin{macrocode}
+ \count0=#3\relax
+ \unless\ifodd\count0
+ \advance\count0 by 1%
+ \fi
+% \end{macrocode}
+%
+% Set the iteration counter.
+%
+% \begin{macrocode}
+ \setcounter{typog@@iteration}{1}%
+% \end{macrocode}
+%
+% Put the \meta{sample} into a box so that we can measure it with \cs{ht}.
+%
+% \begin{macrocode}
+ \setbox0=\hbox{#4}%
+% \end{macrocode}
+%
+% Box~1 is the accumulator for the raised samples.
+%
+% \begin{macrocode}
+ \setbox1=\hbox{}%
+% \end{macrocode}
+%
+% Build the stairs.
+%
+% \begin{macrocode}
+ \loop
+ \ifnum\thetypog@@iteration=\numexpr\count0 / 2\relax
+ \dimen1=2\dimen0
+ \else
+ \dimen1=\dimen0
+ \fi
+ \dimen2=\dimexpr#2 * (\thetypog@@iteration - \count0 / 2)\relax
+ \setbox1=\hbox{\unhbox1\raisebox{\dimen2}{\kern\dimen1 #5\kern\dimen1}}%
+ \addtocounter{typog@@iteration}{1}%
+ \unless\ifnum\thetypog@@iteration>\count0
+ \repeat
+% \end{macrocode}
+%
+% Merge the stairs with a hairline at \#1 times the height of \meta{sample}.
+% Answer just a single box.
+%
+% \begin{macrocode}
+ \mbox{\rlap{\raisebox{\fpeval{#1}\ht0}{\rule{\wd1}{\typog@hairline@width}}}\box1}}
+
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\typogadjuststairs}
+% \changes{v0.4}{2024-05-14}{New macro.}
+% The arguments are:
+% \#1: \meta{scale-factor},
+% \#2: \meta{step-size},
+% \#3: \meta{number-of-steps}, and
+% \#4: \meta{sample}.
+%
+% \begin{macrocode}
+\NewDocumentCommand{\typogadjuststairs}{O{.5} m m m}
+ {\begingroup
+ \unless\ifdim #2>\z@
+ \PackageError{typog}
+ {\string\typogadjuststairs\space non-positive step-size}
+ {step-size must be a positive dimension}%
+ \fi
+ \ifnum #3<1
+ \PackageError{typog}
+ {\string\typogadjuststairs\space too few number-of-steps}
+ {number-of-steps must at least be 1}%
+ \fi
+ \ifblank{#4}
+ {\PackageError{typog}
+ {sample must not be empty}
+ {supply either some uppercase or some lowercase letters}}
+ {}%
+ \def\arraystretch{1}%
+ \begin{tabular}{@{}c@{}}
+ \typogadjuststairsfor{#1}{#2}{#3}{#4}{\labelitemi} \\
+ \typogadjuststairsfor{#1}{#2}{#3}{#4}{\labelitemii} \\
+ \typogadjuststairsfor{#1}{#2}{#3}{#4}{\labelitemiii} \\
+ \typogadjuststairsfor{#1}{#2}{#3}{#4}{\labelitemiv}
+ \end{tabular}
+ \endgroup}
+
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\typog@uppercase@adjusted@labelitems}
+% Return all four labelitems in a horizontal box after they have been adjusted with the
+% uppercase-constants set.
+%
+% \begin{macrocode}
+\newcommand*{\typog@uppercase@adjusted@labelitems}
+ {\hbox{\raisebox{\typog@adjust@uppercase@labelitemi}{\labelitemi}%
+ \raisebox{\typog@adjust@uppercase@labelitemii}{\labelitemii}%
+ \raisebox{\typog@adjust@uppercase@labelitemiii}{\labelitemiii}%
+ \raisebox{\typog@adjust@uppercase@labelitemiv}{\labelitemiv}}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\typoguppercaseadjustcheck}
+% \changes{v0.4}{2024-05-14}{New macro.}
+% We stuff the user's sample text into a box only to measure its height. We typeset all four
+% labels and draw a hairline at half the height of the sample right through it.
+%
+% \begin{macrocode}
+\NewDocumentCommand{\typoguppercaseadjustcheck}{O{.5} m}
+ {\setbox0=\hbox{#2}%
+ \setbox1=\typog@uppercase@adjusted@labelitems
+ \mbox{\rlap{\raisebox{\fpeval{#1}\ht0}
+ {\rule{\wd1}{\typog@hairline@width}}}%
+ \box1}}
+
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\typog@lowercase@adjusted@labelitems}
+% Return all four labelitems in a horizontal box after they have been adjusted with the
+% lowercase-constants set.
+%
+% \begin{macrocode}
+\newcommand*{\typog@lowercase@adjusted@labelitems}
+ {\hbox{\raisebox{\typog@adjust@lowercase@labelitemi}{\labelitemi}%
+ \raisebox{\typog@adjust@lowercase@labelitemii}{\labelitemii}%
+ \raisebox{\typog@adjust@lowercase@labelitemiii}{\labelitemiii}%
+ \raisebox{\typog@adjust@lowercase@labelitemiv}{\labelitemiv}}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\typoglowercaseadjustcheck}
+% \changes{v0.4}{2024-05-14}{New macro.}
+% Same code as \cs{typoguppercaseadjustcheck} for lowercase.
+%
+% \begin{macrocode}
+\NewDocumentCommand{\typoglowercaseadjustcheck}{O{.5} m}
+ {\setbox0=\hbox{#2}%
+ \setbox1=\typog@lowercase@adjusted@labelitems
+ \mbox{\rlap{\raisebox{\fpeval{#1}\ht0}
+ {\rule{\wd1}{\typog@hairline@width}}}%
+ \box1}}
+
+% \end{macrocode}
+% \end{macro}
+%
+%
% \subsection[Align Last Line]{Align Last Line of a Paragraph}
%
% The code of environment |lastlineraggedleftpar|
@@ -5955,7 +7380,7 @@ end
% \end{environment}
%
%
-% \subsection{Microtype Front\capitalhyphen End}
+% \subsection{\packagename{Microtype} Front\capitalhyphen End}
%
% \subsubsection*{Tracking}
%
@@ -6296,7 +7721,7 @@ end
% \item[Initialize.] \code{load("list\_functions")\$}
% \item[\cs{tolerance}:] \code{logspace(log10(200), log10(9999), 9), numer;}
% \item[\cs{emergencystretch}:] \code{linspace(0, 3, 9), numer;}
-% \item[\cs{hfuzz}:] \code{linspace(0.1, 0.5, 9);}
+% \item[\cs{hfuzz}:] \code{linspace(.1, .5, 9);}
% \end{description}
% \end{implementationnote}
%
@@ -6338,7 +7763,7 @@ end
\NewDocumentCommand{\vtietop}{O{3}}
{\setcounter{typog@mean@penalty}
{\typog@geometric@mean{\@M}{\clubpenalty}}%
- \typog@typeout{vtietop: penalties \the\@M--\the\value{typog@mean@penalty}--\the\clubpenalty}%
+ \typog@debug@typeout{vtietop: penalties \the\@M--\the\value{typog@mean@penalty}--\the\clubpenalty}%
\unless\ifnum\clubpenalty<\@M
\PackageWarning{typog}{vtietop: clubpenalty=\the\clubpenalty\space>= 10000}%
\fi
@@ -6426,7 +7851,7 @@ end
\NewDocumentCommand{\vtiebot}{O{3}}
{\setcounter{typog@mean@penalty}
{\typog@geometric@mean{\@M}{\widowpenalty}}%
- \typog@typeout{vtiebot: penalties \the\@M--\the\value{typog@mean@penalty}--\the\widowpenalty}%
+ \typog@debug@typeout{vtiebot: penalties \the\@M--\the\value{typog@mean@penalty}--\the\widowpenalty}%
\unless\ifnum\widowpenalty<\@M
\PackageWarning{typog}{vtiebot: widowpenalty=\the\widowpenalty\space>= 10000}%
\fi
@@ -6494,7 +7919,7 @@ end
\NewDocumentCommand{\typog@vtiebotdisp}{m}
{\setcounter{typog@mean@penalty}
{\typog@geometric@mean{\@M}{\displaywidowpenalty}}%
- \typog@typeout{vtiebotdisp: penalties \the\@M--\the\value{typog@mean@penalty}--\the\displaywidowpenalty}%
+ \typog@debug@typeout{vtiebotdisp: penalties \the\@M--\the\value{typog@mean@penalty}--\the\displaywidowpenalty}%
\unless\ifnum\displaywidowpenalty<\@M
\PackageWarning{typog}{vtiebotdisp: displaywidowpenalty=\the\displaywidowpenalty\space>= 10000}%
\fi
@@ -6588,7 +8013,7 @@ end
% \end{environment}
%
%
-% \subsection{Setspace Front-End}
+% \subsection{\packagename{Setspace} Front-End}
%
% \begin{macro}{\typog@iter@limit}
% The maximum number of iterations we perform before bailing out with an error. Can be
@@ -6631,9 +8056,9 @@ end
% \begin{macrocode}
\dim_set:Nn \l_tmpa_dim {\glueexpr #1}
- \typog@typeout{\string\setbaselineskip:\space
+ \typog@debug@typeout{\string\setbaselineskip:\space
initial\space baselineskip:\space \the\baselineskip}
- \typog@typeout{\string\setbaselineskip:\space
+ \typog@debug@typeout{\string\setbaselineskip:\space
target\space baselineskip:\space \dim_use:N \l_tmpa_dim}
\dim_compare:nNnTF {\baselineskip} > {\c_zero_dim}
@@ -6686,10 +8111,10 @@ end
{}
}
- \typog@typeout{\string\setbaselineskip:\space
+ \typog@debug@typeout{\string\setbaselineskip:\space
final\space \string\setstretch\space argument:\space
\fp_use:N \l_tmpa_fp}
- \typog@typeout{\string\setbaselineskip:\space
+ \typog@debug@typeout{\string\setbaselineskip:\space
final\space baselineskip:\space \the\baselineskip}
}
@@ -6756,7 +8181,7 @@ end
% \begin{macrocode}
\AfterEndPreamble{
\dim_set:Nn \typogfontsize {\fontdimen6\font}
- \typog@typeout{\string\typogfontsize =
+ \typog@debug@typeout{\string\typogfontsize =
\dim_use:N \typogfontsize\space
(at\space begin\space of\space document)}
}
@@ -6892,13 +8317,13 @@ end
\skip1=#2\relax
\skip2=#3\relax
\skip3=#4\relax
- \typog@typeout{smoothraggedrightshapetriplet: skip0=\the\skip0}%
- \typog@typeout{smoothraggedrightshapetriplet: skip1=\the\skip1}%
- \typog@typeout{smoothraggedrightshapetriplet: skip2=\the\skip2}%
- \typog@typeout{smoothraggedrightshapetriplet: skip3=\the\skip3}%
+ \typog@debug@typeout{smoothraggedrightshapetriplet: skip0=\the\skip0}%
+ \typog@debug@typeout{smoothraggedrightshapetriplet: skip1=\the\skip1}%
+ \typog@debug@typeout{smoothraggedrightshapetriplet: skip2=\the\skip2}%
+ \typog@debug@typeout{smoothraggedrightshapetriplet: skip3=\the\skip3}%
\unless\ifnum\typog@mod{\typog@triplet@max@lines}{3}=0
\PackageError{typog}
- {Line number of triplet generator %
+ {Line number of triplet generator\space
(\typog@triplet@max@lines) not divisible by 3}
{}
\fi
@@ -6943,15 +8368,15 @@ end
\skip3=#4\relax
\skip4=#5\relax
\skip5=#6\relax
- \typog@typeout{smoothraggedrightshapequintuplet: skip0=\the\skip0}%
- \typog@typeout{smoothraggedrightshapequintuplet: skip1=\the\skip1}%
- \typog@typeout{smoothraggedrightshapequintuplet: skip2=\the\skip2}%
- \typog@typeout{smoothraggedrightshapequintuplet: skip3=\the\skip3}%
- \typog@typeout{smoothraggedrightshapequintuplet: skip4=\the\skip4}%
- \typog@typeout{smoothraggedrightshapequintuplet: skip5=\the\skip5}%
+ \typog@debug@typeout{smoothraggedrightshapequintuplet: skip0=\the\skip0}%
+ \typog@debug@typeout{smoothraggedrightshapequintuplet: skip1=\the\skip1}%
+ \typog@debug@typeout{smoothraggedrightshapequintuplet: skip2=\the\skip2}%
+ \typog@debug@typeout{smoothraggedrightshapequintuplet: skip3=\the\skip3}%
+ \typog@debug@typeout{smoothraggedrightshapequintuplet: skip4=\the\skip4}%
+ \typog@debug@typeout{smoothraggedrightshapequintuplet: skip5=\the\skip5}%
\unless\ifnum\typog@mod{\typog@quintuplet@max@lines}{5}=0
\PackageError{typog}
- {Line number of quintuplet generator %
+ {Line number of quintuplet generator\space
(\typog@quintuplet@max@lines) not divisible by 5}
{}
\fi
@@ -6998,17 +8423,17 @@ end
\skip5=#6\relax
\skip6=#7\relax
\skip7=#8\relax
- \typog@typeout{smoothraggedrightshapeseptuplet: skip0=\the\skip0}%
- \typog@typeout{smoothraggedrightshapeseptuplet: skip1=\the\skip1}%
- \typog@typeout{smoothraggedrightshapeseptuplet: skip2=\the\skip2}%
- \typog@typeout{smoothraggedrightshapeseptuplet: skip3=\the\skip3}%
- \typog@typeout{smoothraggedrightshapeseptuplet: skip4=\the\skip4}%
- \typog@typeout{smoothraggedrightshapeseptuplet: skip5=\the\skip5}%
- \typog@typeout{smoothraggedrightshapeseptuplet: skip6=\the\skip6}%
- \typog@typeout{smoothraggedrightshapeseptuplet: skip7=\the\skip7}%
+ \typog@debug@typeout{smoothraggedrightshapeseptuplet: skip0=\the\skip0}%
+ \typog@debug@typeout{smoothraggedrightshapeseptuplet: skip1=\the\skip1}%
+ \typog@debug@typeout{smoothraggedrightshapeseptuplet: skip2=\the\skip2}%
+ \typog@debug@typeout{smoothraggedrightshapeseptuplet: skip3=\the\skip3}%
+ \typog@debug@typeout{smoothraggedrightshapeseptuplet: skip4=\the\skip4}%
+ \typog@debug@typeout{smoothraggedrightshapeseptuplet: skip5=\the\skip5}%
+ \typog@debug@typeout{smoothraggedrightshapeseptuplet: skip6=\the\skip6}%
+ \typog@debug@typeout{smoothraggedrightshapeseptuplet: skip7=\the\skip7}%
\unless\ifnum\typog@mod{\typog@septuplet@max@lines}{7}=0
\PackageError{typog}
- {Line number of septuplet generator %
+ {Line number of septuplet generator\space
(\typog@septuplet@max@lines) not divisible by 7}
{}
\fi
@@ -7115,7 +8540,7 @@ end
% |generator=triplet| produces a \doublequotes{short line -- long line -- middle length line}~sequence.
% \begin{macrocode}
\typog@fuzzwidth=.25\smoothraggedrightragwidth
- \typog@typeout{smoothraggedright: generator=triplet, typog@fuzzwidth=\the\typog@fuzzwidth}%
+ \typog@debug@typeout{smoothraggedright: generator=triplet, typog@fuzzwidth=\the\typog@fuzzwidth}%
\smoothraggedrightshapetriplet[leftskip=\typog@@smoothraggedrightleftskip,
parindent=\glueexpr\smoothraggedrightparindent + \parindent,
#1]%
@@ -7130,7 +8555,7 @@ end
% |generator=quintuplet|.
% \begin{macrocode}
\typog@fuzzwidth=.125\smoothraggedrightragwidth
- \typog@typeout{smoothraggedright: generator=quintuplet, typog@fuzzwidth=\the\typog@fuzzwidth}%
+ \typog@debug@typeout{smoothraggedright: generator=quintuplet, typog@fuzzwidth=\the\typog@fuzzwidth}%
\smoothraggedrightshapequintuplet[leftskip=\typog@@smoothraggedrightleftskip,
parindent=\glueexpr\smoothraggedrightparindent + \parindent,
#1]%
@@ -7153,7 +8578,7 @@ end
%
% \begin{macrocode}
\typog@fuzzwidth=.08333\smoothraggedrightragwidth
- \typog@typeout{smoothraggedright: generator=septuplet, typog@fuzzwidth=\the\typog@fuzzwidth}%
+ \typog@debug@typeout{smoothraggedright: generator=septuplet, typog@fuzzwidth=\the\typog@fuzzwidth}%
\smoothraggedrightshapeseptuplet[leftskip=\typog@@smoothraggedrightleftskip,
parindent=\glueexpr\smoothraggedrightparindent + \parindent,
#1]%
@@ -7198,7 +8623,7 @@ end
%
%
% \addtocontents{toc}{\protect\end{multicols}}
-% \addtocontents{toc}{\endgroup}
+% \addtocontents{toc}{\protect\end{list}}
%
%
% \Finale
@@ -7220,10 +8645,14 @@ end
\usepackage{fullwidth}
\usepackage{hyphenat}
\usepackage{mathtools}
-\usepackage[activate=true, verbose=true]{microtype}
+\usepackage[activate=true, verbose=false]{microtype}
\usepackage{ragged2e}
\usepackage[nobottomtitles*]{titlesec}\renewcommand*{\bottomtitlespace}{.2\textheight}
-\usepackage[debug, trackingttspacing]{typog}
+\usepackage{trace}
+\usepackage[debug,
+ trackingttspacing,
+ uppercaselabelitemadjustments={0pt, .1em, .15em, .1em},
+ lowercaselabelitemadjustments={-.0667em, 0pt, .1em, 0pt}]{typog}
\usepackage{xcolor}
\usepackage[loosest, proportional, scaled=1.064]{erewhon}
@@ -7234,49 +8663,42 @@ end
\def\xsfdefault{\relax}
-{
- \def\examplefont{6}
-
- \ifcase\examplefont % 0 -- document's default sans-serif font (e.g., ecrm1000)
- \gdef\examplefontname{default}
- \global\let\xsf=\sf
- \global\let\xsfdefault=\sfdefault
- \or % 1 -- Nunito
- \gdef\examplefontname{Nunito}
- \usepackage{nunito}
- \xdef\xsfdefault{\rmdefault}
- \gdef\xsf{\let\sfdefault=\xsfdefault\sf}
- \or % 2 -- OpenSans
- \gdef\examplefontname{OpenSans}
- \usepackage[defaultsans]{opensans}
- \xdef\xsfdefault{\sfdefault}
- \gdef\xsf{\let\sfdefault=\xsfdefault\sf}
- \or % 3 -- Noto Sans
- \gdef\examplefontname{OpenSans}
- \usepackage[sfdefault]{noto}
- \xdef\xsfdefault{\sfdefault}
- \gdef\xsf{\let\sfdefault=\xsfdefault\sf}
- \or % 4 -- Roboto
- \gdef\examplefontname{Roboto}
- \usepackage[sfdefault]{roboto}
- \xdef\xsfdefault{\sfdefault}
- \gdef\xsf{\let\sfdefault=\xsfdefault\sf}
- \or % 5 -- Montserrat
- \gdef\examplefontname{Montserrat Alternate}
- \usepackage[alternates]{montserrat}
- \xdef\xsfdefault{\sfdefault}
- \gdef\xsf{\let\sfdefault=\xsfdefault\sf}
- \or % 6 -- Inter
- \gdef\examplefontname{Inter}
- \usepackage[sfdefault]{inter}
- \xdef\xsfdefault{\sfdefault}
- \gdef\xsf{\let\sfdefault=\xsfdefault\sf}
- \else
- \SelectedUnknownExampleFont
- \fi
- \typeout{typog-example: font for examples: `\xsfdefault'}%
-}
+\def\examplefont{6}
+
+\ifcase\examplefont % 0 -- document's default sans-serif font (e.g., ecrm1000)
+ \def\examplefontname{default}
+ \let\xsf=\sf
+ \let\xsfdefault=\sfdefault
+\or % 1 -- Nunito
+ \def\examplefontname{Nunito}
+ \def\xsfdefault{Nunito-TOsF}
+ \def\xsf{\let\sfdefault=\xsfdefault\sf}
+\or % 2 -- OpenSans
+ \def\examplefontname{OpenSans}
+ \def\xsfdefault{opensans-TLF}
+ \def\xsf{\let\sfdefault=\xsfdefault\sf}
+\or % 3 -- Noto Sans
+ \def\examplefontname{Noto Sans}
+ \def\xsfdefault{NotoSans-TLF}
+ \def\xsf{\let\sfdefault=\xsfdefault\sf}
+\or % 4 -- Roboto
+ \def\examplefontname{Roboto}
+ \def\xsfdefault{Roboto-LF}
+ \def\xsf{\let\sfdefault=\xsfdefault\sf}
+\or % 5 -- Montserrat
+ \def\examplefontname{Montserrat Alternates}
+ \def\xsfdefault{MontserratAlternates-LF}
+ \def\xsf{\let\sfdefault=\xsfdefault\sf}
+\or % 6 -- Inter
+ \def\examplefontname{Inter}
+ \def\xsfdefault{Inter-LF}
+ \def\xsf{\let\sfdefault=\xsfdefault\sf}
+\else
+ \SelectedUnknownExampleFont
+\fi
+
+\typeout{typog-example: font for examples: `\xsfdefault'}%
\usepackage{hyperref}
@@ -7388,7 +8810,6 @@ end
concentrate all the badness in one place, making one truly unsightly line instead of
two moderately bad ones, because a single ``write-off'' produces fewest total
demerits according to the rules.}
- %There is a much better way to get the desired effect:~[\dots]
\newcommand*{\texbooktolerancesamplecredits}
{\medskip\noindent
\textsl{The sample text was taken from The~\TeX{}book~\cite[p.~107]{knuth:1986}.}}
@@ -7396,7 +8817,7 @@ end
\newcommand*{\texbookparfillskipsample}
{We still haven't discussed the special trick that allows the final line of a paragraph
to be shorter than the others. Just before \TeX{} begins to choose breakpoints,
- it does two important things: [\dots]}
+ it does two important things: [\dots\itcorr{-4}]}
\newcommand*{\texbooklongparfillskipsample}
{We still haven't discussed the special trick that allows the final line of a paragraph
to be shorter than the others. Just before \TeX{} begins to choose breakpoints,
@@ -7404,7 +8825,7 @@ end
that glue is discarded. (The reason is that a blank space often gets into a token list just
before \code{\char92par} or just before \code{\char36\char36}, and this blank space should not be
part of the paragraph.) (2)~Three or more items are put at the end of the
- current horizontal list~[\dots]}
+ current horizontal list~[\dots\itcorr{-4}]}
\newcommand*{\texbookparfillskipsamplecredits}
{\medskip\noindent
\textsl{The sample text was taken from The~\TeX{}book~\cite[p.~99n]{knuth:1986}.}}
@@ -7458,7 +8879,7 @@ end
\setcounter{tocdepth}{1}
-\setlength{\overfullrule}{3pt}
+\setlength{\overfullrule}{0pt}
\hbadness=-1
@@ -7575,7 +8996,76 @@ in the official documentation of package~\packagename{typog}.
\noindent
Unless otherwise noted the font used in the examples is \singlequotes{\examplefontname}.
-\bigskip
+
+\section{Setup and Reconfiguration}
+
+\noindent
+\code{\char`\\ typogget}
+
+\begin{list}{}{}
+ \newcommand*{\expandsto}{$\mathbin{\mapsto}$}
+\item \code{breakpenalty} \expandsto{} \the\typogget{breakpenalty}
+\item \code{ligaturekern} \expandsto{} \milliem{\typogget{ligaturekern}}
+\item \code{lowercaselabelitemadjustments} \expandsto{} \typogget{lowercaselabelitemadjustments}
+\item \code{mathitalicscorrection} \expandsto{} \the\typogget{mathitalicscorrection}
+\item \code{raisecapitaldash} \expandsto{} \the\typogget{raisecapitaldash}
+\item \code{raisecapitalguillemets} \expandsto{} \the\typogget{raisecapitalguillemets}
+\item \code{raisecapitalhyphen} \expandsto{} \the\typogget{raisecapitalhyphen}
+\item \code{raisecapitaltimes} \expandsto{} \the\typogget{raisecapitaltimes}
+\item \code{raisefiguredash} \expandsto{} \the\typogget{raisefiguredash}
+\item \code{raiseguillemets} \expandsto{} \the\typogget{raiseguillemets}
+\item \code{shrinklimits} \expandsto{} \typogget{shrinklimits}
+\item \code{slashkern} \expandsto{} \the\typogget{slashkern}
+\item \code{stretchlimits} \expandsto{} \typogget{stretchlimits}
+\item \code{textitalicscorrection} \expandsto{} \the\typogget{textitalicscorrection}
+\item \code{trackingttspacing} \expandsto{} \typogget{trackingttspacing}
+\item \code{uppercaselabelitemadjustments} \expandsto{} \typogget{uppercaselabelitemadjustments}
+\end{list}
+
+\begingroup
+ \dimen0=\typogget{raisecapitaldash}%
+ \setbox0=\hbox to \typogget{ligaturekern} {}%
+\endgroup
+
+\noindent
+\code{\char`\\ typoggetnth}
+
+\begin{list}{}{}
+\item
+ Elements of \code{lowercaselabelitemadjustments}:
+ (1)~\typoggetnth{\dimen0}{lowercaselabelitemadjustments}{1}\the\dimen0,
+ (2)~\typoggetnth{\dimen0}{lowercaselabelitemadjustments}{2}\the\dimen0,
+ (3)~\typoggetnth{\dimen0}{lowercaselabelitemadjustments}{3}\the\dimen0, and
+ (4)~\typoggetnth{\dimen0}{lowercaselabelitemadjustments}{4}\the\dimen0.
+
+ Same elements now accessed from the right-hand-side, i.\,e.~with negative indices:
+ (\textminus4)~\typoggetnth{nth}{lowercaselabelitemadjustments}{-4}\nth,
+ (\textminus3)~\typoggetnth{nth}{lowercaselabelitemadjustments}{-3}\nth,
+ (\textminus2)~\typoggetnth{nth}{lowercaselabelitemadjustments}{-2}\nth, and
+ (\textminus1)~\typoggetnth{nth}{lowercaselabelitemadjustments}{-1}\nth.
+
+\item Elements of \code{shrinklimits}:
+ (1)~\typoggetnth{nth}{shrinklimits}{1}\nth,
+ (2)~\typoggetnth{nth}{shrinklimits}{2}\nth, and
+ (3)~\typoggetnth{nth}{shrinklimits}{3}\nth.
+
+\item Elements of \code{stretchlimits}:
+ (1)~\typoggetnth{nth}{stretchlimits}{1}\nth,
+ (2)~\typoggetnth{nth}{stretchlimits}{2}\nth, and
+ (3)~\typoggetnth{nth}{stretchlimits}{3}\nth.
+
+\item Elements of \code{trackingttspacing}:
+ (1)~\typoggetnth{nth}{trackingttspacing}{1}\nth,
+ (2)~\typoggetnth{nth}{trackingttspacing}{2}\nth, and
+ (3)~\typoggetnth{nth}{trackingttspacing}{3}\nth.
+
+\item Elements of \code{uppercaselabelitemadjustments}:
+ (1)~\typoggetnth{\dimen0}{uppercaselabelitemadjustments}{1}\the\dimen0,
+ (2)~\typoggetnth{\dimen0}{uppercaselabelitemadjustments}{2}\the\dimen0,
+ (3)~\typoggetnth{\dimen0}{uppercaselabelitemadjustments}{3}\the\dimen0, and
+ (4)~\typoggetnth{\dimen0}{uppercaselabelitemadjustments}{4}\the\dimen0.
+\end{list}
+
\section{Information}
@@ -8068,6 +9558,82 @@ We again compare the default implementation with the adjusted one.
\end{quote}
+\section{Label Items}
+
+The current configurations for the uppercase and lowercase adjustments are
+\{\typogget{uppercaselabelitemadjustments}\} and \{\typogget{lowercaselabelitemadjustments}\},
+respectively.
+
+\begin{center}
+ \makeatletter
+ \noindent
+ A\raisebox{\typog@adjust@uppercase@labelitemi}{\labelitemi}%
+ B\raisebox{\typog@adjust@uppercase@labelitemii}{\labelitemii}%
+ E\raisebox{\typog@adjust@uppercase@labelitemiii}{\labelitemiii}%
+ G\raisebox{\typog@adjust@uppercase@labelitemiv}{\labelitemiv}H \\
+ a\raisebox{\typog@adjust@lowercase@labelitemi}{\labelitemi}%
+ b\raisebox{\typog@adjust@lowercase@labelitemii}{\labelitemii}%
+ c\raisebox{\typog@adjust@lowercase@labelitemiii}{\labelitemiii}%
+ e\raisebox{\typog@adjust@lowercase@labelitemiv}{\labelitemiv}g
+ \makeatother
+\end{center}
+
+For the following nested lists we adjust levels one and three for uppercase and levels two and
+four for lowercase.
+
+\begingroup
+ \uppercaseadjustlabelitems{1,3}
+ \lowercaseadjustlabelitems{2,4}
+ \setlength{\itemsep}{0pt}
+ \setlength{\parsep}{0pt}
+ \setlength{\topsep}{0pt}
+ \begin{itemize}
+ \item A
+ \item B
+ \item C
+ \begin{itemize}
+ \item d
+ \item e
+ \item f
+ \begin{itemize}
+ \item G
+ \item H
+ \item I
+ \begin{itemize}
+ \item j
+ \item k
+ \item l
+ \end{itemize}
+ \end{itemize}
+ \end{itemize}
+ \end{itemize}
+\endgroup
+\noadjustlabelitems{*}% not necessary, but we want to exercise the macro
+
+The left example shows the result of \code{\string\typogadjuststairs\{.25pt\}\{11\}\{ABC\}} and
+the one on the right hand side just uses the same parameters except for the sample~\sample{ace},
+this is, only lowercase letters.
+
+\begin{center}
+ \begin{minipage}[t]{12em}
+ \centering
+ \typogadjuststairs{.25pt}{11}{ABC}
+ \end{minipage}
+ \begin{minipage}[t]{12em}
+ \centering
+ \typogadjuststairs{.25pt}{11}{ace}
+ \end{minipage}
+\end{center}
+
+For this document the calls
+\code{\string\typoguppercaseadjustcheck\{ABC\-DEF\-GHI\-JKL\-MNO\-PQR\-STU\-VWX\-YZ\}} and
+\code{\string\typoglowercaseadjustcheck\{ace\-gmn\-opq\-rsu\-vwx\-yz\}} yield
+\sample{\typoguppercaseadjustcheck{ABCDEFGHIJKLMNOPQRSTUVWXYZ}} and
+\sample{\typoglowercaseadjustcheck{acegmnopqrsuvwxyz}}, where the adjustments in effect are
+\code{\{\typogget{uppercaselabelitemadjustments}\}} and
+\code{\{\typogget{lowercaselabelitemadjustments}\}}, respectively.
+
+
\clearpage
\section{Align Last Line}
@@ -8292,7 +9858,7 @@ consult \propername{David Carlisle's} excellent post on \propername{StackExchang
\begin{center}
\setlength{\overfullrule}{0pt}
- \newcommand*{\spacesampletext}[1]{some#1text#1with#1spaces\rule{0.1pt}{1em}}
+ \newcommand*{\spacesampletext}[1]{some#1text#1with#1spaces\rule{.1pt}{1em}}
\newsavebox{\narrowspacesample}
\sbox{\narrowspacesample}{\spacesampletext{\narrowspace}}
\newsavebox{\widespacesample}
@@ -8707,7 +10273,7 @@ New settings: \baselinesetsize.
\newcommand*{\relbls}{130}
\paragraph{\code{\string\setbaselineskippercentage\{\relbls\}}}
-\setbaselineskippercentage{1 + 2 + .3333 * 100 + 100 * 0.6667}% float expression
+\setbaselineskippercentage{1 + 2 + .3333 * 100 + 100 * .6667}% float expression
\setbaselineskippercentage{\relbls}
\fontsizeinfo{baselinesetsize}
New settings: \baselinesetsize.
@@ -8840,7 +10406,7 @@ visually: \rule{.1pt}{.8em}\kern\parindent\rule{.1pt}{.8em};
%
%
% \iffalse
-%<*nomicrotype>
+%<*without-microtype>
\documentclass[]{article}
@@ -8853,7 +10419,9 @@ visually: \rule{.1pt}{.8em}\kern\parindent\rule{.1pt}{.8em};
{\singleguillemetright}
{\singleguillemetleft}
-\usepackage[]{typog}
+\usepackage[uppercaselabelitemadjustments={.1em, .075em, .1em, .1em},
+ lowercaselabelitemadjustments={-.025em, -.05em, -.025em, -.025em}]
+ {typog}
\newcommand*{\packagename}[1]{\mbox{\textsf{#1}}}
@@ -8868,7 +10436,9 @@ visually: \rule{.1pt}{.8em}\kern\parindent\rule{.1pt}{.8em};
\bigskip
-\noindent
+
+\section*{No Microtype}
+
This example \LaTeX-document uses package~\packagename{typog}
\emph{without} package~\packagename{microtype}.
@@ -8876,6 +10446,38 @@ We want \packagename{typog} to be as usable as possible even without
the nice features that \packagename{microtype} offers.
After all \packagename{typog} is just a front-end for it.
+
+\section*{No EnumItem}
+
+We intentionally do not load package~\packagename{enumitem}, either.
+So, we can test whether \packagename{typog} correctly patches the
+plain \LaTeX{} definition if environment~\texttt{itemize}.
+
+The vertical alignment of the label items was setup for
+uppercase (ABC\typoguppercaseadjustcheck{ABCXYZ}XYZ) and for
+lowercase (ace\typoglowercaseadjustcheck{acexyz}xyz), though
+this is not necessary for the test.
+
+\uppercaseadjustlabelitems{*}
+\begin{itemize}
+\item Level i
+\item Sublist \dots
+ \begin{itemize}
+ \item Level ii
+ \item Sublist \dots
+ \begin{itemize}
+ \item Level iii
+ \item Sublist \dots
+ \begin{itemize}
+ \item Level iv
+ \end{itemize}
+ \end{itemize}
+ \end{itemize}
+\end{itemize}
+
+
+\section*{CSQuotes}
+
As we are testing a special configuration here anyhow,
we hook up our quotes with package~csquotes
to check whether they interact ok.
@@ -8883,7 +10485,28 @@ to check whether they interact ok.
\enquote{This is the outer part of the phrase
which contains the \enquote{inner part}.}}
\end{document}
-%</nomicrotype>
+%</without-microtype>
+% \fi
+%
+%
+%
+% \iffalse
+%<*minimal-test>
+\documentclass{minimal}
+
+\usepackage{typog}
+
+\newcommand*{\raiseamount}{0.5pt}
+
+\begin{document}
+\begin{typogsetup}{raise*=\raiseamount}
+ Em-dash raised by \the\typogget{raisecapitaldash} (expected: \raiseamount).
+\end{typogsetup}
+
+\fontsizeinfo{typoinfo}
+Document class ``minimal'' sets up font size and line spacing as~\typoinfo.
+\end{document}
+%</minimal-test>
% \fi
%
%
@@ -8902,35 +10525,49 @@ to check whether they interact ok.
/@menu/,/@end menu/d
## Convert sectioning macros to our own hierarchy.
-s/^@chapter \(.*\)$/\\subsection*{\\textls[40]{\1}}/
-s/^@section \(.*\)$/\\subsubsection*{\1}/
+s/^@chapter \(.*\)$/\\subsection{\\titlecase{\1}\\label{\1}}/
+s/^@section \(.*\)$/\\subsubsection{\\titlecase{\1}}\\label{\1}/
## Make `@asis' list resemble the Texinfo format.
s/@table @asis/\\begin{list}{}{\\itemindent=-20pt\\leftmargin=20pt}/
s/@end table/\\end{list}/
+## We substitute our maxipage environment for @display.
+s/@display/\\begin{maxipage}/
+s/@end display/\\end{maxipage}/
+
+## Translate `@example' environments.
+s/@example/\\begin{quote}\\tt\\obeylines/
+s/@end example/\\end{quote}\n\n/
+
## Indenting by four spaces generates a `verbatim' environment.
s/@verbatim/\\begin{verbatim}/
s/@end verbatim/\\end{verbatim}/
-## We substitute @display for our maxipage environment.
-s/@display/\\begin{maxipage}/
-s/@end display/\\end{maxipage}/
-
## The argument format of the URL macro is different.
s/@url{\([^,]*\), \([^}]*\)}/\\href{\1}{\2}/g
## Use our own markup.
s/\.\.\./\\dots{}/g
s/LaTeX/\\LaTeX{}/g
-s/@file/\\textit/g
+s/@file/\\emph/g
s/@strong/\\textbf/g
+s/@var/\\emph/g
s/[w]{/mbox{/g
+## Translate some Texinfo macros.
+s/@backslashchar/\\char`\\\\/g
+s/@lbracechar/\\{/g
+s/@noindent/\\noindent/g
+s/@rbracechar/\\}/g
+
## Quote some special characters.
s/%/\\%/g
s/_/\\_/g
+## Add space around alternative-indicators.
+s/[|]/\\,|\\,/g
+
## Adapt to how a man-page is typeset.
## En-dashes in front of long options really suck!
s/--/-\\nolig*-/g
@@ -8944,7 +10581,7 @@ s/@@/@/g
s/\\jobname/\\textbackslash jobname/g
## Make qualified Perl names breakable.
-s/::/::\\discretionary{}{}{}/g
+s/::/::\\breakpoint*/g
%</teximan2latex>
% \fi
%
@@ -8960,6 +10597,7 @@ use strict;
use warnings;
use Data::Dumper ();
+use Encode ();
use English;
use File::Basename ();
use Getopt::Long;
@@ -9011,32 +10649,32 @@ sub limit_string_length {
## We set all colors to `undef' and fill them later with the values
## of the actual configuration.
my $highlight_patterns = {
- PARTIAL_LINE => {
- FONT_SPEC => [qr#
- \\
- (?: OMS | OMX | OT1 | T1 | TS1 | U )
- (?: /[^/]+ ){5} / \S+ \s
- (?: \([+-]\d+\) )?
- #x, undef],
- MATH => [qr#
- \$
- \\
- (?: LMS | OML )
- (?: /[^/]+ ){5} / \S+ \s
- (?: \([+-]\d+\) )?
- .*?
- \$
- #x, undef]
- },
- WHOLE_LINE => {
- FILL_STATE => [qr#^(?:Under|Over)full \\hbox .*$#, undef],
- FIRST_VBOX => [qr#^%%#, undef],
- HORIZONTAL_BREAKPOINT => [qr#^@@\d+:.*$#, undef],
- HORIZONTAL_BREAK_CANDIDATE => [qr#^@[\\ ].*$#, undef],
- LINE_BREAK_PASS => [qr#^@[a-z]+?pass#, undef],
- TIGHTNESS => [qr#^(?:Loose|Tight) \\hbox .*$#, undef],
- VERTICAL_BREAKPOINT => [qr#^% t=\d+.*$#, undef]
- }
+ PARTIAL_LINE => {
+ FONT_SPEC => [qr#
+ \\
+ (?: OMS | OMX | OT1 | T1 | TS1 | U )
+ (?: /[^/]+ ){5} / \S+ \s
+ (?: \([+-]\d+\) )?
+ #x, undef],
+ MATH => [qr#
+ \$
+ \\
+ (?: LMS | OML )
+ (?: /[^/]+ ){5} / \S+ \s
+ (?: \([+-]\d+\) )?
+ .*?
+ \$
+ #x, undef]
+ },
+ WHOLE_LINE => {
+ FILL_STATE => [qr#^(?:Under|Over)full \\hbox .*$#, undef],
+ FIRST_VBOX => [qr#^%%#, undef],
+ HORIZONTAL_BREAKPOINT => [qr#^@@\d+:.*$#, undef],
+ HORIZONTAL_BREAK_CANDIDATE => [qr#^@[\\ ].*$#, undef],
+ LINE_BREAK_PASS => [qr#^@[a-z]+?pass#, undef],
+ TIGHTNESS => [qr#^(?:Loose|Tight) \\hbox .*$#, undef],
+ VERTICAL_BREAKPOINT => [qr#^% t=\d+.*$#, undef]
+ }
};
@@ -9048,7 +10686,7 @@ sub colorize_line {
return Term::ANSIColor::colored($line, $pattern_color_pair->[1])
if $line =~ $pattern_color_pair->[0];
}
- return $line if $line =~ m#^\.#; # we do not paint box contents yet
+ return $line if $line =~ m#^\.#; # we do not paint box contents yet
$line =~ s#$highlight_patterns->{PARTIAL_LINE}->{MATH}->[0]
#Term::ANSIColor::colored($MATCH, $highlight_patterns->{PARTIAL_LINE}->{MATH}->[1])
@@ -9074,13 +10712,30 @@ my $open_tag_regexp =
>#x;
+sub find_encoder {
+ my $encoding = shift;
+
+ my $encoder;
+
+ if ($encoding) {
+ $encoder = Encode::find_encoding($encoding);
+ if (!$encoder) {
+ issue_warning("encoding @{[quote_literal($encoding)]} unknown; proceeding without decoder");
+ }
+ }
+
+ return $encoder;
+}
+
+
sub grep_log_file {
my ($options, $configuration, $file, $filename, $id_regexp) = @_;
+ my $encoder = find_encoder($options->{ENCODING});
my $job_name;
- my $line_number = 0; # line number in the log file we are inspecting, i.e., $filename
+ my $line_number = 0; # line number in the log file we are inspecting, i.e., $filename
my $match_count = 0;
- my $source_line_number; # line number in TeX file the log refers to, i.e., "$job_name.tex"
+ my $source_line_number; # line number in TeX file the log refers to, i.e., "$job_name.tex"
my $page_number;
my $regexp_modifier = $options->{IGNORE_CASE} ? 'i' : '';
my $id_value;
@@ -9094,6 +10749,8 @@ sub grep_log_file {
chomp $line;
$line_number++;
+ $line = Encode::encode_utf8($encoder->decode($line, Encode::FB_CROAK)) if $encoder;
+
if ($line =~ $close_tag_regexp) {
fail_with_error("$filename: $line_number: mismatched open/close tags") unless @nesting_levels;
pop @nesting_levels;
@@ -9175,19 +10832,25 @@ sub grep_log_file {
}
}
}
+
+ return $match_count;
}
sub show_ids_in_file {
my ($options, $configuration, $file, $filename, $id_regexp) = @_;
+ my $encoder = find_encoder($options->{ENCODING});
my $line_number = 0;
+ my $match_count = 0;
my @nesting_levels;
while (my $line = readline $file) {
chomp $line;
$line_number++;
+ $line = Encode::encode_utf8($encoder->decode($line, Encode::FB_CROAK)) if $encoder;
+
if ($line =~ $close_tag_regexp) {
fail_with_error("$filename: $line_number: mismatched open/close tags") unless @nesting_levels;
pop @nesting_levels;
@@ -9200,6 +10863,7 @@ sub show_ids_in_file {
my $page_number = $+{page_match};
++$MATCH_COUNT;
+ ++$match_count;
push @nesting_levels, 1;
if ($options->{LOG_LINE_NUMBER}) {
@@ -9239,6 +10903,8 @@ sub show_ids_in_file {
print ' ' x $indent, $id_value, "\n";
}
}
+
+ return $match_count;
}
@@ -9256,7 +10922,7 @@ sub open_file_for_reading {
fail_with_error("cannot open @{[quote_filesystem($filename)]}: $OS_ERROR");
}
- $file;
+ return $file;
}
@@ -9272,9 +10938,9 @@ sub grep_or_show {
my ($options, $configuration, $file, $filename, $id_regexp) = @_;
if ($options->{SHOW_ALL_IDS}) {
- show_ids_in_file($options, $configuration, $file, $filename, $id_regexp);
+ return show_ids_in_file($options, $configuration, $file, $filename, $id_regexp);
} else {
- grep_log_file($options, $configuration, $file, $filename, $id_regexp);
+ return grep_log_file($options, $configuration, $file, $filename, $id_regexp);
}
}
@@ -9282,6 +10948,8 @@ sub grep_or_show {
sub scan_files {
my ($options, $configuration, $id_regexp, $log_filenames) = @_;
+ my $match_count = 0;
+
if (@$log_filenames) {
foreach my $log_filename (@$log_filenames) {
$log_filename = 'stdin' if $log_filename eq '-';
@@ -9294,15 +10962,17 @@ sub scan_files {
print $filename_header;
}
my $file = open_file_for_reading($log_filename);
- grep_or_show($options, $configuration, $file, $log_filename, $id_regexp);
+ $match_count += grep_or_show($options, $configuration, $file, $log_filename, $id_regexp);
close_file($file, $log_filename);
}
} else {
my $log_filename = 'stdin';
my $file = open_file_for_reading($log_filename);
- grep_or_show($options, $configuration, $file, $log_filename, $id_regexp);
+ $match_count = grep_or_show($options, $configuration, $file, $log_filename, $id_regexp);
close_file($file, $log_filename);
}
+
+ return $match_count;
}
@@ -9319,10 +10989,12 @@ sub redirect_and_scan_files {
my $stdout = select $pager;
$pager->autoflush;
- scan_files($options, $configuration, $id_regexp, $log_filenames);
+ my $match_count = scan_files($options, $configuration, $id_regexp, $log_filenames);
close $pager or issue_warning "error occurred while closing the pager (pid: $pid) pipe: $OS_ERROR";
select $stdout;
+
+ return $match_count;
}
@@ -9431,6 +11103,7 @@ sub setup_configuation {
my $default_options = {
COLORIZE_MODE => 'auto',
DEBUG => 0,
+ ENCODING => undef,
ID => 0,
IGNORE_CASE => 0,
JOB_NAME => 0,
@@ -9452,6 +11125,7 @@ Options
--colour [WHEN] use color to highlight specific log contents
WHEN is 'always', 'never', or 'auto'
-C, --config KEY=VALUE set configuration KEY to VALUE
+ -E, --encoding ENCODING set character ENCODING of LOG-FILE
-i, --[no-]id print matching id with output lines
-y, --[no-]ignore-case ignore case distinctions in patterns and data
-j, --[no-]job-name print \\jobname with output lines
@@ -9461,10 +11135,12 @@ Options
-P, --[no-]pager redirect output to pager
-w, --[no-]word-regexp match only whole words
- -a, --all, --any show all IDs in LOG-FILE
+ -a, --all, --any discover all IDs in LOG-FILE
+
--debug turn on debug output
-h, --help display this help and exit
--show-config show default configuration and exit
+ --show-encodings show all known encodings and exit
-V, --version show version information and exit
HELP_TEXT
@@ -9473,6 +11149,17 @@ HELP_TEXT
}
+sub show_encodings {
+ my @all_encodings = Encode->encodings(':all');
+
+ foreach my $encoding (@all_encodings) {
+ print "$encoding\n";
+ }
+
+ exit 0;
+}
+
+
sub show_configuration {
my $format_string_value = sub {quote_literal($default_configuration->{$_[0]})};
@@ -9508,10 +11195,10 @@ FIXED_CONFIGURATION_TEXT
sub show_version {
print <<VERSION_TEXT;
-typog-grep 0.1
+typog-grep @RELEASE@
Copyright (C) 2024 by Ch. L. Spiel
-License LPPL: LaTeX Project Public License version 1.3 or later
+License LPPL: LaTeX Project Public License version 1.3c or later
VERSION_TEXT
exit 0;
@@ -9527,6 +11214,7 @@ sub get_options {
'color|colour=s' => \$options->{COLORIZE_MODE},
'C|configuration=s' => sub{setup_configuation($_[1], $configuration)},
'debug+' => \$DEBUG,
+ 'E|encoding=s' => \$options->{ENCODING},
'h|help' => \&show_help,
'i|id!' => \$options->{ID},
'y|ignore-case!' => \$options->{IGNORE_CASE},
@@ -9535,13 +11223,18 @@ sub get_options {
'N|log-line-number!' => \$options->{LOG_LINE_NUMBER},
'p|page-number!' => \$options->{PAGE_NUMBER},
'P|pager!' => \$options->{REQUEST_PAGER},
+ 'show-encodings' => \&show_encodings,
'show-config' => \&show_configuration,
'V|version' => \&show_version,
'w|word-regexp!' => \$options->{WORD_REGEXP}) or
- fail_with_error('problems while parsing options');
+ fail_with_error('problems while parsing options');
- fail_with_error("unknown colorize mode @{[quote_literal($options->{COLORIZE_MODE})]}")
- unless $options->{COLORIZE_MODE} =~ m/^(?:always|auto|never)$/i
+ if ($options->{COLORIZE_MODE}) {
+ fail_with_error("unknown colorize mode @{[quote_literal($options->{COLORIZE_MODE})]}")
+ unless $options->{COLORIZE_MODE} =~ m/^(?:always|auto|never)$/i;
+ } else {
+ $options->{COLORIZE_MODE} = 'auto';
+ }
}
@@ -9565,14 +11258,27 @@ sub do_colorize {
sub main {
$OUTPUT_IS_REDIRECTED = -t STDOUT ? 0 : 1;
- my $options = {%$default_options};
my $configuration = {%$default_configuration};
+ my $options = {%$default_options};
+ debug_print(Data::Dumper::Dumper(['Default Configuration', $configuration]));
+ debug_print(Data::Dumper::Dumper(['Default Options', $options]));
+
+ my $user_options = {};
+ my $user_configuration = {};
+ get_options($user_options, $user_configuration);
+ debug_print(Data::Dumper::Dumper(['User Configuration', $user_configuration]));
+ debug_print(Data::Dumper::Dumper(['User Options', $user_options]));
+ while (my ($key, $value) = each %$user_options) {
+ $options->{$key} = $value if $value;
+ }
+ while (my ($key, $value) = each %$user_configuration) {
+ $configuration->{$key} = $value if $value;
+ }
+ debug_print(Data::Dumper::Dumper(['Final Configuration', $configuration]));
+ debug_print(Data::Dumper::Dumper(['Final Options', $options]));
- get_options($options, $configuration);
$options->{COLORIZE_OUTPUT} = do_colorize($options->{COLORIZE_MODE});
initialize_highlighting_from_configuration($configuration);
- debug_print(Data::Dumper::Dumper($configuration));
- debug_print(Data::Dumper::Dumper($options));
my $id_regexp;
if ($options->{SHOW_ALL_IDS}) {
@@ -9584,17 +11290,18 @@ sub main {
$id_regexp = shift @ARGV;
}
- if ($options->{REQUEST_PAGER} && $OUTPUT_IS_REDIRECTED) {
+ if ($user_options->{REQUEST_PAGER} && $OUTPUT_IS_REDIRECTED) {
issue_warning("option @{[quote_literal('--pager')]} ignored because output is redirected");
}
my $use_pager = $options->{REQUEST_PAGER} && !$OUTPUT_IS_REDIRECTED;
+ my $match_count;
if ($use_pager) {
- redirect_and_scan_files($options, $configuration, $id_regexp, \@ARGV);
+ $match_count = redirect_and_scan_files($options, $configuration, $id_regexp, \@ARGV);
} else {
- scan_files($options, $configuration, $id_regexp, \@ARGV);
+ $match_count = scan_files($options, $configuration, $id_regexp, \@ARGV);
}
- exit ($MATCH_COUNT == 0);
+ exit ($match_count == 0);
}
@@ -9615,7 +11322,7 @@ main();
=head1 NAME
-typog-grep - grep for typog-inspect elements in LaTeX log files
+typog-grep - specialized grep for typog-inspect elements in LaTeX log files
=head1 SYNOPSIS
@@ -9628,9 +11335,70 @@ typog-grep - grep for typog-inspect elements in LaTeX log files
=back
-The first form shows all C<E<lt>typog-inspect id="I<ID>" ...E<gt>> elements in F<LOG-FILE>.
+The first form, ``discovery mode'', shows all I<ID>s of
+
+=begin text
+
+<typog-inspect id="ID" ...>
+
+=end text
+
+=begin man
+
+.RS
+.EX
+<typog-inspect id="\fI\,ID\/\fP" ...>
+.EE
+.RE
+
+=end man
+
+=begin texinfo
+
+@example
+<typog-inspect id="@var{ID}" ...>
+@end example
+@noindent
+
+=end texinfo
+
+Z<>
+elements in F<LOG-FILE>.
+
+The second form shows the contents, I<LOG-DATA>, of the elements
-The second form shows the contents of C<E<lt>typog-inspect id="I<ID>" ...E<gt>> elements
+=begin text
+
+<typog-inspect id="ID" ...>
+LOG-DATA
+</typog-inspect>
+
+=end text
+
+=begin man
+
+.RS
+.EX
+<typog-inspect id="\fI\,ID\/\fP" ...>
+\fILOG-DATA\fP
+</typog-inspect>
+.EE
+.RE
+
+=end man
+
+=begin texinfo
+
+@example
+<typog-inspect id="@var{ID}" ...>
+@var{LOG-DATA}
+</typog-inspect>
+@end example
+@noindent
+
+=end texinfo
+
+Z<>
whose I<ID>s match I<REGEXP> in F<LOG-FILE>.
If no F<LOG-FILE> is given read from F<stdin>.
@@ -9639,57 +11407,101 @@ The S<filename C<->> is synonymous to F<stdin>.
=head1 DESCRIPTION
-B<typog-grep> is a tailored post-processor for LaTeX log files
-and the C<typoginspect> environment as provided by S<package typog>.
+B<typog-grep> is a tailored post-processor for LaTeX S<F<log> files>
+and the C<typoginspect> environment as provided by the S<LaTeX package typog>.
It shares more with the venerable
L<B<sgrep>|https://www.cs.helsinki.fi/u/jjaakkol/sgrep.html>
than with S<POSIX L<B<grep>|https://pubs.opengroup.org/onlinepubs/9699919799/utilities/grep.html>>.
-The LaTeX user brackets her text in
+In the LaTeX source file the user brackets her text or code
+in a C<typoginspect> environment:
+
+=begin text
+
+\begin{typoginspect}{ID}
+ TEXT-OR-CODE-TO-INVESTIGATE
+\end{typoginspect}
+
+=end text
+
+=begin man
+
+.RS
+.EX
+\ebegin{typoginspect}{\fI\,ID\/\fP}
+\fITEXT-OR-CODE-TO-INVESTIGATE\fP
+\eend{typoginspect}
+.EE
+.RE
- \begin{typoginspect}{ID}
- Text and code to investigate
- \end{typoginspect}
+=end man
+
+=begin texinfo
+
+@example
+@backslashchar{}begin@lbracechar{}typoginspect@rbracechar{}@lbracechar{}@var{ID}@rbracechar{}
+@var{TEXT-OR-CODE-TO-INVESTIGATE}
+@backslashchar{}end@lbracechar{}typoginspect@rbracechar{}
+@end example
+@noindent
+
+=end texinfo
+Z<>
where I<ID> is used to identify one or more bracketed snippets.
I<ID> does not have to be unique.
The I<REGEXP> mechanism makes it easy to select groups of related I<ID>s
if they are named accordingly.
-In F<LOG-FILE> the environment shows up, packed with tracing information, as
+In F<LOG-FILE> the result of the environment shows up,
+packed with tracing information, as
-=begin texinfo
+=begin text
-@display
-@relax
+<typog-inspect id="ID" job="JOB-NAME" line="LINE-NUMBER" page="PAGE-NUMBER">
+ LOG-DATA
+</typog-inspect>
-=end texinfo
+=end text
+
+=begin man
- <typog-inspect id="ID" job="JOB-NAME" line="LINE-NUMBER" page="PAGE-NUMBER">
- Trace Data
- </typog-inspect>
+.RS
+.EX
+<typog-inspect id="\fI\,ID\/\fP" job="\fI\,JOB-NAME\/\fP" line="\fI\,LINE-NUMBER\/\fP" page="\fI\,PAGE-NUMBER\/\fP">
+\fILOG-DATA\fP
+</typog-inspect>
+.EE
+.RE
+
+=end man
=begin texinfo
-@end display
-@relax
+@example
+<typog-inspect id="@var{ID}" job="@var{JOB-NAME}" line="@var{LINE-NUMBER}" page="@var{PAGE-NUMBER}">
+@var{LOG-DATA}
+</typog-inspect>
+@end example
+@noindent
=end texinfo
+Z<>
where all the capital-letter sequences are meta-variables
and in particular
I<JOB-NAME> is the expansion of C<\jobname>,
I<LINE-NUMBER> is the LaTeX source file line number
of the beginning of the C<typoginspect> environment,
and I<PAGE-NUMBER> is the page where
-the output of S<C<Text and code to investigate>> occurs.
+the output of S<C<TEXT-OR-CODE-TO-INVESTIGATE>> occurs.
B<typog-grep> reveals the contents of F<LOG-FILE>
between C<E<lt>typog-inspect id="I<ID>" ...E<gt>>
-and C<E<lt>/typog-inspectE<gt>> excluding the XML-tags.
+and C<E<lt>/typog-inspectE<gt>> excluding the XML-tags themselves.
Access the I<JOB-NAME>, I<LINE-NUMBER>, and I<PAGE-NUMBER>
with the commandline options
-B<--job-name>, B<--line-number>, and B<--page-number>, respectively.
+B<--job-name>, B<--line-number>, and B<--page-number>, respectively.
Use B<--id> to show the name of the IDs that matched I<REGEXP>.
C<typoginspect> environments can be nested.
@@ -9707,11 +11519,18 @@ The list of options is sorted by the names of the long options.
=item B<-a>, B<--all>, B<--any>
ID-discovery mode:
-Show all C<typog-inspect> elements independent of any matching patterns.
+Discover all C<typog-inspect> elements independent of any matching patterns
+and print their I<ID>s.
+The results are printed in their order of occurrence in the respective F<LOG-FILE>s.
+Pipe the output into B<sort> to get alphabetically ordered I<ID>s.
+
+Augment with options
+B<--job-name>, B<--line-number>, B<--log-line-number>, or S<B<--page-number>>
+for more information.
=item B<--color>, B<colour> I<WHEN>
-Colorize specific log contents for the matching ids.
+Colorize specific log contents for the matching I<ID>s.
The S<argument I<WHEN>> determines when to apply color:
C<always>, C<never>, S<or C<auto>>.
The setting C<auto> checks whether standard output has been redirected.
@@ -9720,29 +11539,45 @@ This is the default.
=item B<-C>, B<--config> I<KEY>=I<VALUE>[:I<KEY>=I<VALUE>[:...]]
Set one or more configuration I<KEY> to I<VALUE> pairs.
-See S<Sec. CONFIGURATION> below for a description of all available configuration items.
-Use option B<--show-config> to display the default configuration.
+See section L</CONFIGURATION> for a description
+of all available configuration items.
+Use S<option B<--show-config>> to display the default configuration.
=item B<--debug>
Turn on debug output on F<stderr>.
+=item B<-E>, B<--encoding> I<ENCODING>
+
+Set the I<ENCODING> of F<LOG-FILE> for the translation to UTF-8.
+The default is unset.
+
+Use this option to get rid of pesky
+S<"E<lt>I<HEX-DIGITS>E<gt>" escapes> on UTF-8 terminals.
+See S<option B<--show-encodings>> for the known encodings and
+Encode::Supported for a summary of all encodings.
+See also S<section L</Some Common Encodings>>.
+
+Apply L<B<iconv>|https://pubs.opengroup.org/onlinepubs/9699919799/utilities/iconv.html>
+(POSIX) or L<B<recode>|https://github.com/rrthomas/recode/> (GNU) on F<LOG-FILE>
+before this tool to avoid having to use S<option B<--encoding>>.
+
=item B<-h>, B<--help>
Display brief help then exit.
=item B<-i>, B<--[no-]id>
-Print the actual id name that matched I<REGEXP>.
-Control the appearance of the matching id with configuration S<item C<id-heading>>.
+Print the actual ID-name that matched I<REGEXP>.
+Control the appearance of the matching I<ID> with configuration S<item C<id-heading>>.
=item B<-y>, B<--[no-]ignore-case>
-Match ids while ignoring case distinctions in patterns and data.
+Match I<ID>s while ignoring case distinctions in patterns and data.
=item B<-j>, B<--[no-]job-name>
-Print the C<\jobname> that B<tex> associated with the input file.
+Print the C<\jobname> that B<latex> associated with the input file.
=item B<-n>, B<--[no-]line-number>
@@ -9766,6 +11601,10 @@ Redirect output from F<stdout> to the configured pager.
Show the default configuration and exit.
+=item B<--show-encodings>
+
+Show all known encodings and exit.
+
=item B<-V>, B<--version>
Show version information and exit.
@@ -9789,26 +11628,26 @@ S<Default: C<%s:>.>
=item C<id-heading>=C<0>E<verbar>C<1>
-Choose between printing the matching ids with S<option B<--id>>:
+Choose between printing the matching I<ID>s with S<option B<--id>>:
S<Inline (C<0>)> or heading before the matching data (C<1>).
S<Default: C<0>.>
=item C<id-heading-format>=I<FORMAT>
-Control the I<FORMAT> for printing matching ids in heading-mode,
+Control the I<FORMAT> for printing matching I<ID>s in heading-mode,
where I<FORMAT> is passed to Perl's C<printf>.
S<Default: C<--E<gt> %s E<lt>-->.>
=item C<id-indent>=I<INDENT>
Indentation of nested typog-inspect tags.
-Only used in ``discovery'' mode (first form), i.e., if B<--all> is active.
+Only used in ``discovery mode'' (first form), i.e., if S<B<--all>> is active.
S<Default: 8.>
=item C<id-max-length>=I<MAXIMUM-LENGTH>
-Set the maximum length of a matching id for printing.
-It a matching id exceeds this length it will be truncated
+Set the maximum length of a matching I<ID> for printing.
+It a matching I<ID> exceeds this length it will be truncated
and the last three characters (short of I<MAXIMUM-LENGTH>) will be replaced by dots.
S<Default: 40.>
@@ -9874,11 +11713,11 @@ Color of lines with horizontal S<breakpoints C<@@>>.
=item C<id-color>
-Color of matching ids when printed inline.
+Color of matching I<ID>s when printed inline.
=item C<id-heading-color>
-Color of matching ids when printed in heading form.
+Color of matching I<ID>s when printed in heading form.
=item C<line-break-pass-color>
@@ -9947,15 +11786,93 @@ C<bold>, C<dark>, C<italic>, C<underline>, C<reverse>
=back
+=head2 Some Common Encodings
+
+The following list shows some encodings
+that are suitable for S<option B<--encoding>>.
+
+=over 4
+
+=item Latin-1, Western European
+
+C<iso-8859-1>, C<cp850>, C<cp860>, C<cp1252>
+
+=item Latin-2, Central European
+
+C<iso-8859-2>, C<cp852>, C<cp1250>
+
+=item Latin-3, South European (Esperanto, Maltese)
+
+C<iso-8859-3>
+
+=item Latin-4, North European (Baltics)
+
+C<iso-8859-4>
+
+=item Cyrillics
+
+C<iso-8859-5>, C<cp855>, C<cp866> (Ukrainian), C<cp1251>
+
+=item Arabic
+
+C<iso-8859-6>, C<cp864>, C<cp1006> (Farsi), C<cp1256>
+
+=item Greek
+
+C<iso-8859-7>, C<cp737>, C<cp1253>
+
+=item Hebrew
+
+C<iso-8859-8>, C<cp862>, C<cp1255>
+
+=item Turkish
+
+C<iso-8859-9>, C<cp857>, C<cp1254>
+
+=item Nordic
+
+C<iso-8859-10>, C<cp865>, C<cp861> (Icelandic)
+
+=item Thai
+
+C<iso-8859-11>, C<cp874>
+
+=item Baltic
+
+C<iso-8859-13>, C<cp775>, C<cp1257>
+
+=item Celtic
+
+C<iso-8859-14>
+
+=item Latin-9 (sometimes called Latin0)
+
+C<iso-8859-15>
+
+=item Latin-10
+
+C<iso-8859-16>
+
+=back
+
+
=head1 EXIT STATUS
The exit status is 0 if at least one I<ID> matched I<REGEXP>,
1 if no I<ID> matched I<REGEXP>, and 2 if an error occurred.
+=head1 CAVEATS
+
+The end tag C<< </typog-inspect> >> sometimes gets placed too early in the output and the trace
+I<seems> truncated. However, LaTeX reliably logs the requested the trace information, but the
+write operations for trace data and the code which is used to print the S<end tag> are not
+synchronized.
+
+
=head1 SEE ALSO
-B<grep>(1), B<printf>(3), B<Term::ANSIColor>(pm)
+B<grep>(1), B<printf>(3), B<Encode::Supported>(pm), B<Term::ANSIColor>(pm)
=cut
diff --git a/macros/latex/contrib/typog/typog.ins b/macros/latex/contrib/typog/typog.ins
index 06378d86bb..23c8b33366 100644
--- a/macros/latex/contrib/typog/typog.ins
+++ b/macros/latex/contrib/typog/typog.ins
@@ -1,11 +1,11 @@
%% Copyright (C) 2024 by Ch. L. Spiel
%%
%% This work may be distributed and/or modified under the conditions
-%% of the LaTeX Project Public License, either version 1.3 of this
+%% of the LaTeX Project Public License, either version 1.3c of this
%% license or (at your option) any later version. The latest version
%% of this license is in
-%% http://www.latex-project.org/lppl.txt
-%% and version 1.3 or later is part of all distributions of LaTeX
+%% https://www.latex-project.org/lppl.txt
+%% and version 1.3c or later is part of all distributions of LaTeX
%% version 2003/12/01 or later.
@@ -23,11 +23,11 @@ This is a generated file.
Copyright (C) 2024 by Ch. L. Spiel
This work may be distributed and/or modified under the conditions
-of the LaTeX Project Public License, either version 1.3 of this
+of the LaTeX Project Public License, either version 1.3c of this
license or (at your option) any later version. The latest version
of this license is in
- http://www.latex-project.org/lppl.txt
-and version 1.3 or later is part of all distributions of LaTeX
+ https://www.latex-project.org/lppl.txt
+and version 1.3c or later is part of all distributions of LaTeX
version 2003/12/01 or later.
This work has the LPPL maintenance status `maintained'.
@@ -37,7 +37,9 @@ The Current Maintainer of this work is Ch. L. Spiel.
This work consists of the files typog.dtx and typog.ins
and the derived files typog.sty, slant-angle.mp,
crooked-paragraphs.mp, smooth-parshapes.mp, title.mp,
-typog-example.tex, typog-nomt.tex, typog-grep.pl,
+typog-example.tex, typog-minimal-test.tex,
+typog-without-microtype-test.tex
+typog-grep.pl.in, typog-grep.pl,
typog-grep.pod, and teximan2latex.sed.
@@ -48,20 +50,22 @@ typog-grep.pod, and teximan2latex.sed.
\generate{\file{typog.sty}{\from{\source}{package}}
\file{typog-example.tex}{\from{\source}{example}}
- \file{typog-nomt.tex}{\from{\source}{nomicrotype}}
- \file{typog.ist}{\from{\source}{index-style}}}
+ \file{typog-minimal-test.tex}{\from{\source}{minimal-test}}
+ \file{typog-without-microtype-test.tex}{\from{\source}{without-microtype}}}
\nopostamble
-\generate{\file{title.mp}{\from{\source}{title}}
+\generate{\file{crooked-paragraphs.mp}{\from{\source}{crookedparagraphs}}
\file{slant-angle.mp}{\from{\source}{slantangle}}
- \file{crooked-paragraphs.mp}{\from{\source}{crookedparagraphs}}
- \file{smooth-parshapes.mp}{\from{\source}{smoothparshapes}}}
+ \file{smooth-parshapes.mp}{\from{\source}{smoothparshapes}}
+ \file{title.mp}{\from{\source}{title}}
+ \file{typog.gst}{\from{\source}{changes-style}}
+ \file{typog.ist}{\from{\source}{index-style}}}
\nopreamble
\generate{\file{teximan2latex.sed}{\from{\source}{teximan2latex}}
- \file{typog-grep.pl}{\from{\source}{typog-grep}}
+ \file{typog-grep.pl.in}{\from{\source}{typog-grep}}
\file{typog-grep.pod}{\from{\source}{typog-grep-documentation}}}
diff --git a/systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl b/systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl
index e63e9d2b6a..6d9baab07b 100644
--- a/systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl
+++ b/systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl
@@ -32,6 +32,7 @@ $mirrors = {
},
'Indonesia' => {
'http://repo.ugm.ac.id/ctan/' => 1,
+ 'https://mirror.unpad.ac.id/ctan/' => 1,
},
'Iran' => {
'http://ctan.asis.ai/' => 1,
@@ -47,6 +48,7 @@ $mirrors = {
'https://ftp.kaist.ac.kr/tex-archive/' => 1,
'https://kr.mirrors.cicku.me/ctan/' => 1,
'https://lab.uklee.pe.kr/tex-archive/' => 1,
+ 'https://mirror.kakao.com/CTAN/' => 1,
'https://mirror.navercorp.com/CTAN/' => 1,
},
'Singapore' => {
diff --git a/systems/texlive/tlnet/tlpkg/texlive.tlpdb b/systems/texlive/tlnet/tlpkg/texlive.tlpdb
index 520fedcef5..0b83d5a0ab 100644
--- a/systems/texlive/tlnet/tlpkg/texlive.tlpdb
+++ b/systems/texlive/tlnet/tlpkg/texlive.tlpdb
@@ -26,11 +26,11 @@ depend container_split_src_files/1
depend frozen/0
depend minrelease/2016
depend release/2024
-depend revision/71748
+depend revision/71757
name 00texlive.image
category TLCore
-revision 71748
+revision 71756
shortdesc TeX Live files only in the source repository
longdesc The files here are not copied by the installer and containers
longdesc are not built for them; they exist only in the source
@@ -4916,7 +4916,7 @@ depend setting_available_architectures:aarch64-linux amd64-freebsd amd64-netbsd
name 00texlive.installer
category TLCore
-revision 71747
+revision 71757
shortdesc TeX Live standalone installer package
longdesc This package defines the files to go into the installer
longdesc archives (install-tl-unx.tar.gz, install-tl.zip) built by the
@@ -168861,16 +168861,16 @@ catalogue-version 1.00
name jnuexam
category Package
-revision 70636
+revision 71753
shortdesc Exam class for Jinan University
relocated 1
longdesc The package provides an exam class for Jinan University
longdesc (China).
-containersize 5156
-containerchecksum debc9ce62768c0c48c86de65869193c5b4b403225d94423d1edcf7f0bb09c54f865a529d84354d59b4fb70162fe353f0031750e8164c6700973ac0858466a434
-doccontainersize 598008
-doccontainerchecksum 34377a0481c9df2dad91aa11d2fd38005a897d280e5a57df6b0f94d2b9a288fd9fc8262fc2adbd7f2948e9e26ca2765224c133a1b343f1cac2d3781551c78275
-docfiles size=214
+containersize 5164
+containerchecksum f07fdf15601b84c2da4eadc886faab400e93b8a52aa34405459c6dba75ae3ea39e1678cf6ef777a5f50b1a632f117fdc9801e2ba005ee9f0f9a5fa812dc20c43
+doccontainersize 601304
+doccontainerchecksum 09cc9a444407e95955888bc4e56279f20abb4226b3644ace8de4239ab77342d0e78eeacf3646b9e144aa5874b3e0dca142d18ac635b1107630d7d52e9f54626a
+docfiles size=212
RELOC/doc/latex/jnuexam/README details="Readme"
RELOC/doc/latex/jnuexam/examfc-a-answer.pdf
RELOC/doc/latex/jnuexam/examfc-a-answer.tex
@@ -197968,17 +197968,17 @@ catalogue-version 1.007
name lie-hasse
category Package
-revision 61719
+revision 71751
shortdesc Draw Hasse diagrams
relocated 1
longdesc This package draws Hasse diagrams of the partially ordered sets
longdesc of the simple roots of any complex simple Lie algebra. It uses
longdesc the Dynkin diagrams package dynkin-diagrams.
-containersize 10644
-containerchecksum b71ed475c73a94a92b8a8078a4edccc73f7d688bad7a1a5e6218bafba823b76a20b79da83c7591903fa234c6f0e7f776317dd8b740e5fd7cd014821f8dd77c94
-doccontainersize 575496
-doccontainerchecksum d846971b6b8429e58521ad0cc564906fc06623a3764117069fdb1912aeb84858e7af93ea2f4a7732c6e677f260f10a6a9b79488d43caf56ad158152245f8e4aa
-docfiles size=152
+containersize 10772
+containerchecksum defefa380c02939048a31983ebe801608859485b7e700f705e8fa6687e1da8a6b5de1642fe262c3d99754703e58e49aabee756abc34f29f92f5045d74fa8cc3d
+doccontainersize 625700
+doccontainerchecksum d6cd05d25ceba5e1caaae0742005804cb309a9bd1d27fe9381da30872e0553221798749ae4697af3df1da90ecbd8590cc0ed74f3f4e1b0c70bd4452d485f716a
+docfiles size=167
RELOC/doc/latex/lie-hasse/README details="Readme"
RELOC/doc/latex/lie-hasse/lie-hasse.bib
RELOC/doc/latex/lie-hasse/lie-hasse.pdf details="Package documentation"
@@ -274930,7 +274930,7 @@ catalogue-version 1.5e
name pstricks
category Package
-revision 69674
+revision 71752
catalogue pstricks-base
shortdesc PostScript macros for TeX
relocated 1
@@ -274950,10 +274950,10 @@ longdesc pdftricks package, to generate a PDF inclusion from a PSTricks
longdesc diagram. PSTricks macros can also generate PDF output when the
longdesc document is processed XeTeX, without the need for other
longdesc supporting packages.
-containersize 88080
-containerchecksum 8c9d0a2c8355a338f459a34dee22893acd54fc314ef588a8fc6a727f4dc0d6fc34e64059479c096e490bb2c90d627b555d5052cbf871089099acd18fff0cebfd
-doccontainersize 7531396
-doccontainerchecksum 10946b40abd2e00549abdc0e3d9067c74756785571b4f75f6baf6e6155f90087cba7eb35427f159571a04ba92e1819cf92ad12d9b4b02119ab957bb4b77da1d9
+containersize 88128
+containerchecksum 954eead3275d8b68e5a8eecd2b5ef42aef198058a04f7ac580fc430ffdff51e0ba2b03623921133c2d72ff85dc12012e6a8869e565e46266163effaf53e58c35
+doccontainersize 7531972
+doccontainerchecksum 887fa295a55263bc8c90d9e55a8db635a16c6ab8c6c99f6f3544fc7a5d2c3423f99a3ece8c040dc7094458ec9e86784f19316e382e784b019226ab8fbef6ce19
docfiles size=2321
RELOC/doc/generic/pstricks/PSTricks.bib
RELOC/doc/generic/pstricks/README details="Readme"
@@ -281270,16 +281270,16 @@ catalogue-version 0.2
name randexam
category Package
-revision 69960
+revision 71754
shortdesc Make an exam paper and its randomized variants
relocated 1
longdesc This class helps you make an exam paper and its randomized
longdesc variants. It mainly focuses on making math exam papers, but you
longdesc could use it to make other exam papers.
-containersize 11736
-containerchecksum 137f7f99c32d502034ca22fabea143f54276730987a6edb595e1cddefa21bc631e8bba89930bab4e774b2a1c0d0d766d56ef49b6051fda726524a4ee8845e6c1
-doccontainersize 228600
-doccontainerchecksum 7f7b5e9707a4b04c7fe7d3505d70685d6e882139341e3aad01103fca5a21f0df5f995466c6eeac7cc6c41a2c6b135b75b4795ef2ae1b11d9e67369852a168278
+containersize 11892
+containerchecksum d010bb6c1e39ba2a3db90848506e042875b7d88529d8c4c8c76a4e2e69a22db8e3678210c8c1bfdc99de0233b9d162bf9f6b8c55037a35a47f1f2fbedbf88b83
+doccontainersize 229972
+doccontainerchecksum 08ac6be1fa00d01a31196835255ae2336efd185f339f18235851dff3dd579b641d17a91c7588f1e9ca118d7dc1743eca7425f4596aca527f78f4456059157d3a
docfiles size=78
RELOC/doc/latex/randexam/README details="Readme"
RELOC/doc/latex/randexam/randexam-a-answer.pdf
@@ -310369,7 +310369,7 @@ catalogue-version 0.8.2
name synthslant
category Package
-revision 71249
+revision 71755
shortdesc Synthetically slant text
relocated 1
longdesc This package allows to slant ("shear") short pieces of text to
@@ -310379,28 +310379,28 @@ longdesc back-ends that do the actual shearing are supported, though
longdesc currently the pdfLaTeX back-end works best concerning output
longdesc quality and processing speed.
containersize 2824
-containerchecksum f79b2108c7e9815025f4cfd85f7e3d0edba52f8a5ede437bee1e7e2127cce6e809c0b7ba44117d6d8d92ac7de8a72abed54846a021b095a417f22e2dab422da1
-doccontainersize 1103696
-doccontainerchecksum 0df5b1a1f5bf860a2e270ce2dc48957e53af8b9c9759b57764b4e13bdf58526091f4b4495470b4d47eff4260cc1484dd44295b360a789742a9c1e7bf70c905c9
-docfiles size=299
+containerchecksum a12cb742cd74018e6bce32b727c83954fc9ff7a14a2a19e7ad92cc9080b268133ed1fcd7d37ff0cf793a47bd757f5ea0da235e30809aaf9120588dec1b5ed50a
+doccontainersize 1146516
+doccontainerchecksum fcf79e22a445d675ac8748ec02d0ca4b967c390b033e95e65c652a66a915663295b0103554d919c8fffd53dcf29a087f22d7b97cb882fe31050b6e77f593dd98
+docfiles size=310
RELOC/doc/latex/synthslant/LICENSE
RELOC/doc/latex/synthslant/README.md details="Readme"
- RELOC/doc/latex/synthslant/RELEASE-HOWTO.md
RELOC/doc/latex/synthslant/compare-with-the-gimp.png.base64
- RELOC/doc/latex/synthslant/index.md
RELOC/doc/latex/synthslant/shear-transform.mp
RELOC/doc/latex/synthslant/synthslant-gauge.pdf
RELOC/doc/latex/synthslant/synthslant-gauge.tex
+ RELOC/doc/latex/synthslant/synthslant-minimal-test.tex
+ RELOC/doc/latex/synthslant/synthslant.gst
RELOC/doc/latex/synthslant/synthslant.ist
RELOC/doc/latex/synthslant/synthslant.pdf details="Package documentation"
RELOC/doc/latex/synthslant/title.mp
-srccontainersize 157428
-srccontainerchecksum 69744131aa79b86d73fb100e5ed35d1a4ce265606a1d6142523ff32693baf3fb91323655b531ea1acc28f4cdd9845bca838b55a2ba808bc587ba57bd43a9f2a4
-srcfiles size=72
+srccontainersize 159780
+srccontainerchecksum 9934813e66d0c0ff4022c6ea5304a8b646b6b2dfdf62930edee0108bfea89af6999ff24811f2757b59c70a4cdc465327baa2f5346fcf6cb65ba360a56e63f443
+srcfiles size=75
RELOC/source/latex/synthslant/Makefile
RELOC/source/latex/synthslant/synthslant.dtx
RELOC/source/latex/synthslant/synthslant.ins
-runfiles size=2
+runfiles size=3
RELOC/tex/latex/synthslant/synthslant.sty
catalogue-contact-bugs https://github.com/cspiel/synthslant/issues
catalogue-contact-home https://github.com/cspiel/synthslant
@@ -327968,7 +327968,7 @@ docfiles size=376
name texlive-scripts
category TLCore
-revision 71748
+revision 71757
shortdesc TeX Live infrastructure programs
longdesc Includes install-tl, tl-portable, rungs, etc.; not needed for
longdesc tlmgr to run but still ours. Not included in tlcritical.
@@ -327976,10 +327976,10 @@ depend texlive-scripts.ARCH
depend texlive.infra
execute addMap mathpple.map
postaction shortcut type=menu name="TeX Live command-line" cmd=TEXDIR/tlpkg/installer/tl-cmd.bat
-containersize 114372
-containerchecksum b15ecfab68dabe09ca6b42cbd8fccf77839a497094f99d4bed46619d46280c97a696d0b98b1e4f4e5edb9ae41c5ea001e6b559164e47ebf4bfc5c9a553addbdf
-doccontainersize 436428
-doccontainerchecksum 8de5a9132f02a1ab0e60666bb18a47bf50bc44a0b78aaf7b45e5c1d023f5396528f11889f077b93a5a0d473b3519e29f1ab66173a0743a75c955c29422d222c4
+containersize 114400
+containerchecksum 09f233dd4a6b8f8b7054e4eae6a27495b641be546517900914ca80c57ee037684910c80065ee673edc16bd0d3d8ca790a0e7e9938cd56f4dc405996d8f35bcbb
+doccontainersize 436392
+doccontainerchecksum bf859bcf1996f6e7a850e447d3a6c3173f804e25def12edafecd8ccfabcf038effb249c8d485256f0f4b8169c7181f6c47ba90d5941a22dd37e13187deb79941
docfiles size=571
doc.html
texmf-dist/doc/man/man1/fmtutil-sys.1
@@ -347687,7 +347687,7 @@ catalogue-version 0.4.7
name typog
category Package
-revision 71202
+revision 71756
shortdesc Typographic fine-tuning and micro-typographic enhancements
longdesc This package provides macros for micro-typographic
longdesc enhancements. It covers a variety of topics: Precise
@@ -347703,15 +347703,14 @@ longdesc to flag interesting parts of the information deluge typically
longdesc accumulating in a LaTeX log-file and an associated tool,
longdesc typog-grep, that selectively retrieves these parts.
depend typog.ARCH
-containersize 12904
-containerchecksum 09ffe0ce16384d79e8d415aaee1d4a8d5d0d0dbebfbf5d5e53264c694510540b1eeebc808861b1a8db15456573decaee6871d1672b6a037c711eb59277f4f54a
-doccontainersize 1824604
-doccontainerchecksum ca34927262bc6288c1b249bdcc3b3cf3604c8d7bbf091e4865765bd7516e013e99dfe6769099d5ed365b0fedde431b83e8b30abbec7a671096fe9a6a5ba4e7b3
-docfiles size=485
+containersize 14776
+containerchecksum 214b58c268c8731f8b2f994088aca53127ee5681545d0594f64b332ef4331def044d1c2bb12b685195e6df270fb2b7dc20da4c609e3bb5dde2e3d31ad3dfe952
+doccontainersize 1945644
+doccontainerchecksum 77e9a334eb7c138813d803c3e19ca60e1efe8f6174d57973b3fe9c8db049e88c483bfd14582a95a23d21fbf10ba14c0483ff8c9f21528409505bfa6f256aff41
+docfiles size=527
+ texmf-dist/doc/latex/typog/LICENSE
texmf-dist/doc/latex/typog/README.md details="Readme"
- texmf-dist/doc/latex/typog/RELEASE-HOWTO.md
texmf-dist/doc/latex/typog/crooked-paragraphs.mp
- texmf-dist/doc/latex/typog/index.md
texmf-dist/doc/latex/typog/slant-angle.mp
texmf-dist/doc/latex/typog/smooth-parshapes.mp
texmf-dist/doc/latex/typog/teximan2latex.sed
@@ -347719,19 +347718,23 @@ docfiles size=485
texmf-dist/doc/latex/typog/typog-example.pdf details="Examples of use"
texmf-dist/doc/latex/typog/typog-example.tex
texmf-dist/doc/latex/typog/typog-grep.1.pdf details="Man page for typog-grep"
+ texmf-dist/doc/latex/typog/typog-grep.pl.in
texmf-dist/doc/latex/typog/typog-grep.pod
- texmf-dist/doc/latex/typog/typog-nomt.tex
+ texmf-dist/doc/latex/typog/typog-grep.version.sed
+ texmf-dist/doc/latex/typog/typog-minimal-test.tex
+ texmf-dist/doc/latex/typog/typog-without-microtype-test.tex
+ texmf-dist/doc/latex/typog/typog.gst
texmf-dist/doc/latex/typog/typog.ist
texmf-dist/doc/latex/typog/typog.pdf details="Package documentation"
texmf-dist/doc/man/man1/typog-grep.1
texmf-dist/doc/man/man1/typog-grep.man1.pdf
-srccontainersize 74392
-srccontainerchecksum 830d65b065d4a7bc144f2ab7402f6f719be615c8894afb7f3881a63bbcbdc2c60face180bbc466fbc9fb78b219464d8df4a6474eacdfc20d50cb4178b355d78b
-srcfiles size=89
+srccontainersize 87608
+srccontainerchecksum 60950424095379064ae493f1ce446e6419a3bc1f8599878f27f69bd7f214a465837f1dc3197fa2bcdc4b3fbb486de3c1c4cc09d0d80ac98f31fbdeed559f0714
+srcfiles size=107
texmf-dist/source/latex/typog/Makefile
texmf-dist/source/latex/typog/typog.dtx
texmf-dist/source/latex/typog/typog.ins
-runfiles size=18
+runfiles size=21
texmf-dist/scripts/typog/typog-grep.pl
texmf-dist/tex/latex/typog/typog.sty
catalogue-contact-bugs https://github.com/cspiel/typog/issues
diff --git a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5 b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5
index 1884b60151..d35ed2eb4f 100644
--- a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5
+++ b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5
@@ -1 +1 @@
-ffd9df559211dbd17bf9aa4d35b6ac48 texlive.tlpdb
+7d7c58074613acf22ef1d354749cd26a texlive.tlpdb
diff --git a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512 b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512
index d815463129..c239e14823 100644
--- a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512
+++ b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512
@@ -1 +1 @@
-9ae4fd95e801c22673eae2fae468dc4e7f9ad07b3843a16572634f7be1373148774adbae2daf3f9b1759ce9cd8021084a44eda9da83e95baa9f2d869be2feede texlive.tlpdb
+ef4ca097732e431811827564d441742446a221a26662b4e1f4d41924a3dfee9196bb7d6af3ebd3fa520071f1e1dbbe790cfcd3c93e16190cad9cbcb1e0ada17c texlive.tlpdb
diff --git a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc
index b83072a0b3..0d807839cb 100644
--- a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc
+++ b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc
@@ -1,11 +1,11 @@
-----BEGIN PGP SIGNATURE-----
-iQEzBAEBCgAdFiEE2PL4YFeoV+QqiBBqTOGHfhlDjHAFAmaMeowACgkQTOGHfhlD
-jHAAcwgAktYuQGeno+ZWOUjxoSLnDmkcTREzv9bNSoNPoM6PzN+CrcTgVAtZRzmQ
-UAgGuyuWFCnTDa1gWAwLYHBFqiBUI8q63PuSX9ZyTW44Rq15iOYpllqEroQBrADS
-5gX6OE7nU+jue7BSNHbzdjiei27Ywuw+XmGC/7lONeN+/EAs65FsQZBMNLDY42+o
-USeovvT5TCnFFPgBYLlErY9dmm7h/Aa3uySa2FFrxc9ynGSKL3gIhCxHDj3CyUHq
-MlF0NETl7AiiWNsotORe8B3R2GL/pVRe6MMECuX0KQ0VxeD4jHnNjuosAmd7V+kl
-Vhwnb3Ct3493VeZosqA5Kl2zAqB7/w==
-=HOCI
+iQEzBAEBCgAdFiEE2PL4YFeoV+QqiBBqTOGHfhlDjHAFAmaNzAUACgkQTOGHfhlD
+jHDUEwf9FSjfTk9icvHrhBNSl331/KHoxdGaF+HXjeah7gKW4M3eJr0L4Dvv2Ti9
+smDcyhUi9ubAdVtRypljWHieYDM9eJc4/UWVu4GVc2uK8GDc9Jl/8UTqG1i77AOK
+REKekbxnVOyJSfiUc9dFCS2j6LPbVmsF+bSEjPfu6v5AOV4oPIyJc551UpS92H/2
+cr2xeDHDE5AGk5o5TtL5My8a04qt3Zmp3caLLasSooy546ksyn2+QfimCZ7rGew3
+v7bhZAB+3LzIoJ1Pg4oyvf/tSP0u0mq0HJTLF+qfLcSiN3ssP0joKFzoiEDcKkRt
+MP4lLlSjd/dsCm1irXVkfFoJrf8nlQ==
+=bUdx
-----END PGP SIGNATURE-----
diff --git a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz
index e8444eec2d..79ceb292ae 100644
--- a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz
+++ b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz
Binary files differ
diff --git a/timestamp b/timestamp
index 270b1dbf54..7a65b96cb9 100644
--- a/timestamp
+++ b/timestamp
@@ -2,4 +2,4 @@
# The source CTAN of this site's material:
dante.ctan.org
# The year-month-day-hour-minute of this site's material:
-2024-07-09-02-02
+2024-07-10-02-02