From 8bff170a24ebf1ea7434fcf66537522d30f225e7 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Sat, 22 Feb 2025 21:08:05 +0000 Subject: latex-dev (22feb25) git-svn-id: svn://tug.org/texlive/trunk@74211 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/doc/latex-dev/amsmath/README.md | 4 +- Master/texmf-dist/doc/latex-dev/amsmath/amsbsy.pdf | Bin 174946 -> 174946 bytes Master/texmf-dist/doc/latex-dev/amsmath/amscd.pdf | Bin 179948 -> 179948 bytes Master/texmf-dist/doc/latex-dev/amsmath/amsgen.pdf | Bin 178193 -> 178193 bytes .../texmf-dist/doc/latex-dev/amsmath/amsldoc.pdf | Bin 508207 -> 505762 bytes .../texmf-dist/doc/latex-dev/amsmath/amsldoc.tex | 2 +- .../texmf-dist/doc/latex-dev/amsmath/amsmath.pdf | Bin 420374 -> 420546 bytes Master/texmf-dist/doc/latex-dev/amsmath/amsopn.pdf | Bin 140093 -> 140093 bytes .../texmf-dist/doc/latex-dev/amsmath/amstext.pdf | Bin 217504 -> 217418 bytes .../texmf-dist/doc/latex-dev/amsmath/amsxtra.pdf | Bin 113560 -> 113560 bytes .../texmf-dist/doc/latex-dev/amsmath/changes.txt | 12 +- Master/texmf-dist/doc/latex-dev/amsmath/subeqn.pdf | Bin 109740 -> 109740 bytes .../texmf-dist/doc/latex-dev/amsmath/technote.pdf | Bin 147459 -> 147459 bytes .../texmf-dist/doc/latex-dev/amsmath/testmath.pdf | Bin 454643 -> 453514 bytes Master/texmf-dist/doc/latex-dev/base/README.md | 4 +- Master/texmf-dist/doc/latex-dev/base/alltt.pdf | Bin 223766 -> 223766 bytes Master/texmf-dist/doc/latex-dev/base/cfgguide.pdf | Bin 264168 -> 264168 bytes Master/texmf-dist/doc/latex-dev/base/cfgguide.tex | 2 +- Master/texmf-dist/doc/latex-dev/base/changes.txt | 250 +- Master/texmf-dist/doc/latex-dev/base/classes.pdf | Bin 560495 -> 560266 bytes .../doc/latex-dev/base/clsguide-historic.pdf | Bin 415956 -> 415956 bytes .../doc/latex-dev/base/clsguide-historic.tex | 2 +- Master/texmf-dist/doc/latex-dev/base/clsguide.pdf | Bin 495045 -> 501913 bytes Master/texmf-dist/doc/latex-dev/base/clsguide.tex | 132 +- Master/texmf-dist/doc/latex-dev/base/cmfonts.pdf | Bin 292601 -> 292601 bytes Master/texmf-dist/doc/latex-dev/base/cyrguide.pdf | Bin 257359 -> 257359 bytes Master/texmf-dist/doc/latex-dev/base/cyrguide.tex | 2 +- Master/texmf-dist/doc/latex-dev/base/doc-code.pdf | Bin 1078962 -> 1078717 bytes Master/texmf-dist/doc/latex-dev/base/doc.pdf | Bin 757434 -> 757268 bytes Master/texmf-dist/doc/latex-dev/base/docstrip.pdf | Bin 506838 -> 506205 bytes Master/texmf-dist/doc/latex-dev/base/encguide.pdf | Bin 1318576 -> 1318576 bytes Master/texmf-dist/doc/latex-dev/base/encguide.tex | 2 +- Master/texmf-dist/doc/latex-dev/base/exscale.pdf | Bin 204708 -> 204708 bytes Master/texmf-dist/doc/latex-dev/base/fix-cm.pdf | Bin 287727 -> 287727 bytes Master/texmf-dist/doc/latex-dev/base/fntguide.pdf | Bin 522637 -> 522637 bytes Master/texmf-dist/doc/latex-dev/base/fntguide.tex | 2 +- Master/texmf-dist/doc/latex-dev/base/graphpap.pdf | Bin 161722 -> 161722 bytes Master/texmf-dist/doc/latex-dev/base/ifthen.pdf | Bin 222460 -> 222460 bytes Master/texmf-dist/doc/latex-dev/base/inputenc.pdf | Bin 318372 -> 318372 bytes .../doc/latex-dev/base/lamport-manual.pdf | Bin 170876 -> 170876 bytes .../texmf-dist/doc/latex-dev/base/latexrelease.pdf | Bin 282447 -> 282945 bytes Master/texmf-dist/doc/latex-dev/base/latexsym.pdf | Bin 200759 -> 200759 bytes Master/texmf-dist/doc/latex-dev/base/lb2.pdf | Bin 252519 -> 252519 bytes Master/texmf-dist/doc/latex-dev/base/letter.pdf | Bin 337872 -> 337687 bytes Master/texmf-dist/doc/latex-dev/base/lgc2.pdf | Bin 217663 -> 217663 bytes Master/texmf-dist/doc/latex-dev/base/lppl.pdf | Bin 132370 -> 132370 bytes .../doc/latex-dev/base/ltcmdhooks-code.pdf | Bin 756578 -> 758907 bytes .../doc/latex-dev/base/ltcmdhooks-doc.pdf | Bin 505592 -> 505068 bytes .../doc/latex-dev/base/ltfilehook-code.pdf | Bin 806884 -> 805908 bytes .../doc/latex-dev/base/ltfilehook-doc.pdf | Bin 552214 -> 551124 bytes .../texmf-dist/doc/latex-dev/base/lthooks-code.pdf | Bin 1254329 -> 1256528 bytes .../texmf-dist/doc/latex-dev/base/lthooks-doc.pdf | Bin 763153 -> 764235 bytes Master/texmf-dist/doc/latex-dev/base/ltluatex.pdf | Bin 325889 -> 325625 bytes .../texmf-dist/doc/latex-dev/base/ltmarks-code.pdf | Bin 753777 -> 754097 bytes .../texmf-dist/doc/latex-dev/base/ltmarks-doc.pdf | Bin 612904 -> 611507 bytes Master/texmf-dist/doc/latex-dev/base/ltnews.pdf | Bin 1450384 -> 1479373 bytes Master/texmf-dist/doc/latex-dev/base/ltnews.tex | 2 +- Master/texmf-dist/doc/latex-dev/base/ltnews01.pdf | Bin 169553 -> 169553 bytes Master/texmf-dist/doc/latex-dev/base/ltnews01.tex | 2 +- Master/texmf-dist/doc/latex-dev/base/ltnews02.pdf | Bin 151773 -> 151773 bytes Master/texmf-dist/doc/latex-dev/base/ltnews02.tex | 2 +- Master/texmf-dist/doc/latex-dev/base/ltnews03.pdf | Bin 151324 -> 151324 bytes Master/texmf-dist/doc/latex-dev/base/ltnews03.tex | 2 +- Master/texmf-dist/doc/latex-dev/base/ltnews04.pdf | Bin 152551 -> 152551 bytes Master/texmf-dist/doc/latex-dev/base/ltnews04.tex | 2 +- Master/texmf-dist/doc/latex-dev/base/ltnews05.pdf | Bin 175211 -> 175211 bytes Master/texmf-dist/doc/latex-dev/base/ltnews05.tex | 2 +- Master/texmf-dist/doc/latex-dev/base/ltnews06.pdf | Bin 142867 -> 142867 bytes Master/texmf-dist/doc/latex-dev/base/ltnews06.tex | 2 +- Master/texmf-dist/doc/latex-dev/base/ltnews07.pdf | Bin 138214 -> 138214 bytes Master/texmf-dist/doc/latex-dev/base/ltnews07.tex | 2 +- Master/texmf-dist/doc/latex-dev/base/ltnews08.pdf | Bin 155442 -> 155442 bytes Master/texmf-dist/doc/latex-dev/base/ltnews08.tex | 2 +- Master/texmf-dist/doc/latex-dev/base/ltnews09.pdf | Bin 130028 -> 130028 bytes Master/texmf-dist/doc/latex-dev/base/ltnews09.tex | 2 +- Master/texmf-dist/doc/latex-dev/base/ltnews10.pdf | Bin 169433 -> 169433 bytes Master/texmf-dist/doc/latex-dev/base/ltnews10.tex | 2 +- Master/texmf-dist/doc/latex-dev/base/ltnews11.pdf | Bin 112208 -> 112208 bytes Master/texmf-dist/doc/latex-dev/base/ltnews11.tex | 2 +- Master/texmf-dist/doc/latex-dev/base/ltnews12.pdf | Bin 156764 -> 156764 bytes Master/texmf-dist/doc/latex-dev/base/ltnews12.tex | 2 +- Master/texmf-dist/doc/latex-dev/base/ltnews13.pdf | Bin 182483 -> 182483 bytes Master/texmf-dist/doc/latex-dev/base/ltnews13.tex | 2 +- Master/texmf-dist/doc/latex-dev/base/ltnews14.pdf | Bin 170722 -> 170722 bytes Master/texmf-dist/doc/latex-dev/base/ltnews14.tex | 2 +- Master/texmf-dist/doc/latex-dev/base/ltnews15.pdf | Bin 130328 -> 130328 bytes Master/texmf-dist/doc/latex-dev/base/ltnews15.tex | 2 +- Master/texmf-dist/doc/latex-dev/base/ltnews16.pdf | Bin 138107 -> 138107 bytes Master/texmf-dist/doc/latex-dev/base/ltnews16.tex | 2 +- Master/texmf-dist/doc/latex-dev/base/ltnews17.pdf | Bin 166269 -> 166269 bytes Master/texmf-dist/doc/latex-dev/base/ltnews17.tex | 2 +- Master/texmf-dist/doc/latex-dev/base/ltnews18.pdf | Bin 39839 -> 39839 bytes Master/texmf-dist/doc/latex-dev/base/ltnews18.tex | 2 +- Master/texmf-dist/doc/latex-dev/base/ltnews19.pdf | Bin 225936 -> 225936 bytes Master/texmf-dist/doc/latex-dev/base/ltnews19.tex | 2 +- Master/texmf-dist/doc/latex-dev/base/ltnews20.pdf | Bin 318193 -> 318193 bytes Master/texmf-dist/doc/latex-dev/base/ltnews20.tex | 2 +- Master/texmf-dist/doc/latex-dev/base/ltnews21.pdf | Bin 245228 -> 245228 bytes Master/texmf-dist/doc/latex-dev/base/ltnews21.tex | 2 +- Master/texmf-dist/doc/latex-dev/base/ltnews22.pdf | Bin 318026 -> 318026 bytes Master/texmf-dist/doc/latex-dev/base/ltnews22.tex | 2 +- Master/texmf-dist/doc/latex-dev/base/ltnews23.pdf | Bin 286824 -> 286824 bytes Master/texmf-dist/doc/latex-dev/base/ltnews23.tex | 2 +- Master/texmf-dist/doc/latex-dev/base/ltnews24.pdf | Bin 265497 -> 265497 bytes Master/texmf-dist/doc/latex-dev/base/ltnews24.tex | 2 +- Master/texmf-dist/doc/latex-dev/base/ltnews25.pdf | Bin 205100 -> 205100 bytes Master/texmf-dist/doc/latex-dev/base/ltnews25.tex | 2 +- Master/texmf-dist/doc/latex-dev/base/ltnews26.pdf | Bin 379733 -> 379733 bytes Master/texmf-dist/doc/latex-dev/base/ltnews26.tex | 2 +- Master/texmf-dist/doc/latex-dev/base/ltnews27.pdf | Bin 251283 -> 251283 bytes Master/texmf-dist/doc/latex-dev/base/ltnews27.tex | 2 +- Master/texmf-dist/doc/latex-dev/base/ltnews28.pdf | Bin 376956 -> 376956 bytes Master/texmf-dist/doc/latex-dev/base/ltnews28.tex | 2 +- Master/texmf-dist/doc/latex-dev/base/ltnews29.pdf | Bin 455437 -> 455437 bytes Master/texmf-dist/doc/latex-dev/base/ltnews29.tex | 2 +- Master/texmf-dist/doc/latex-dev/base/ltnews30.pdf | Bin 512240 -> 512240 bytes Master/texmf-dist/doc/latex-dev/base/ltnews30.tex | 2 +- Master/texmf-dist/doc/latex-dev/base/ltnews31.pdf | Bin 526681 -> 526681 bytes Master/texmf-dist/doc/latex-dev/base/ltnews31.tex | 2 +- Master/texmf-dist/doc/latex-dev/base/ltnews32.pdf | Bin 546540 -> 546540 bytes Master/texmf-dist/doc/latex-dev/base/ltnews32.tex | 2 +- Master/texmf-dist/doc/latex-dev/base/ltnews33.pdf | Bin 522757 -> 522757 bytes Master/texmf-dist/doc/latex-dev/base/ltnews33.tex | 2 +- Master/texmf-dist/doc/latex-dev/base/ltnews34.pdf | Bin 508345 -> 508345 bytes Master/texmf-dist/doc/latex-dev/base/ltnews34.tex | 4 +- Master/texmf-dist/doc/latex-dev/base/ltnews35.pdf | Bin 563305 -> 563305 bytes Master/texmf-dist/doc/latex-dev/base/ltnews35.tex | 2 +- Master/texmf-dist/doc/latex-dev/base/ltnews36.pdf | Bin 517934 -> 517934 bytes Master/texmf-dist/doc/latex-dev/base/ltnews36.tex | 2 +- Master/texmf-dist/doc/latex-dev/base/ltnews37.pdf | Bin 456933 -> 456933 bytes Master/texmf-dist/doc/latex-dev/base/ltnews37.tex | 2 +- Master/texmf-dist/doc/latex-dev/base/ltnews38.pdf | Bin 523675 -> 523675 bytes Master/texmf-dist/doc/latex-dev/base/ltnews39.pdf | Bin 541772 -> 541772 bytes Master/texmf-dist/doc/latex-dev/base/ltnews40.pdf | Bin 476639 -> 476646 bytes Master/texmf-dist/doc/latex-dev/base/ltnews40.tex | 6 +- Master/texmf-dist/doc/latex-dev/base/ltnews41.pdf | Bin 361781 -> 451425 bytes Master/texmf-dist/doc/latex-dev/base/ltnews41.tex | 534 ++- .../texmf-dist/doc/latex-dev/base/ltpara-code.pdf | Bin 673299 -> 672782 bytes .../texmf-dist/doc/latex-dev/base/ltpara-doc.pdf | Bin 561022 -> 560642 bytes .../doc/latex-dev/base/ltproperties-code.pdf | Bin 557983 -> 557972 bytes .../doc/latex-dev/base/ltproperties-doc.pdf | Bin 432459 -> 432453 bytes .../doc/latex-dev/base/ltshipout-code.pdf | Bin 821401 -> 821319 bytes .../doc/latex-dev/base/ltshipout-doc.pdf | Bin 567774 -> 567681 bytes .../doc/latex-dev/base/ltsockets-code.pdf | Bin 602280 -> 634234 bytes .../doc/latex-dev/base/ltsockets-doc.pdf | Bin 486692 -> 489059 bytes .../doc/latex-dev/base/lttemplates-code.pdf | Bin 752336 -> 776050 bytes .../doc/latex-dev/base/lttemplates-doc.pdf | Bin 467733 -> 490958 bytes Master/texmf-dist/doc/latex-dev/base/ltx3info.pdf | Bin 219358 -> 219358 bytes Master/texmf-dist/doc/latex-dev/base/ltx3info.tex | 2 +- Master/texmf-dist/doc/latex-dev/base/ltxdoc.pdf | Bin 244141 -> 244141 bytes Master/texmf-dist/doc/latex-dev/base/makeindx.pdf | Bin 165816 -> 165816 bytes Master/texmf-dist/doc/latex-dev/base/modguide.pdf | Bin 257825 -> 257825 bytes Master/texmf-dist/doc/latex-dev/base/modguide.tex | 2 +- Master/texmf-dist/doc/latex-dev/base/nfssfont.pdf | Bin 211314 -> 211314 bytes Master/texmf-dist/doc/latex-dev/base/proc.pdf | Bin 227065 -> 227065 bytes Master/texmf-dist/doc/latex-dev/base/slides.pdf | Bin 375493 -> 375493 bytes Master/texmf-dist/doc/latex-dev/base/slifonts.pdf | Bin 233905 -> 233905 bytes Master/texmf-dist/doc/latex-dev/base/source2e.pdf | Bin 6547738 -> 6895052 bytes Master/texmf-dist/doc/latex-dev/base/source2e.tex | 2 +- Master/texmf-dist/doc/latex-dev/base/syntonly.pdf | Bin 189860 -> 189371 bytes Master/texmf-dist/doc/latex-dev/base/tlc2.pdf | Bin 290257 -> 290257 bytes Master/texmf-dist/doc/latex-dev/base/tlc3.err | 64 +- Master/texmf-dist/doc/latex-dev/base/tlc3.pdf | Bin 385504 -> 386461 bytes Master/texmf-dist/doc/latex-dev/base/tulm.pdf | Bin 162773 -> 162773 bytes .../doc/latex-dev/base/usrguide-historic.pdf | Bin 439393 -> 439393 bytes .../doc/latex-dev/base/usrguide-historic.tex | 2 +- Master/texmf-dist/doc/latex-dev/base/usrguide.pdf | Bin 488649 -> 499113 bytes Master/texmf-dist/doc/latex-dev/base/usrguide.tex | 85 +- Master/texmf-dist/doc/latex-dev/base/utf8ienc.pdf | Bin 353824 -> 353456 bytes Master/texmf-dist/doc/latex-dev/base/webcomp.pdf | Bin 146205 -> 146205 bytes .../texmf-dist/doc/latex-dev/firstaid/changes.txt | 19 +- .../latex2e-first-aid-for-external-files.pdf | Bin 281411 -> 280940 bytes Master/texmf-dist/doc/latex-dev/graphics/README.md | 4 +- .../texmf-dist/doc/latex-dev/graphics/changes.txt | 11 + Master/texmf-dist/doc/latex-dev/graphics/color.pdf | Bin 212777 -> 213246 bytes .../texmf-dist/doc/latex-dev/graphics/drivers.pdf | Bin 286448 -> 286448 bytes .../texmf-dist/doc/latex-dev/graphics/epsfig.pdf | Bin 159239 -> 159239 bytes .../texmf-dist/doc/latex-dev/graphics/graphics.pdf | Bin 303762 -> 303762 bytes .../texmf-dist/doc/latex-dev/graphics/graphicx.pdf | Bin 240618 -> 241041 bytes .../texmf-dist/doc/latex-dev/graphics/grfguide.pdf | Bin 331361 -> 332116 bytes .../texmf-dist/doc/latex-dev/graphics/grfguide.tex | 22 +- .../texmf-dist/doc/latex-dev/graphics/keyval.pdf | Bin 239587 -> 239587 bytes .../texmf-dist/doc/latex-dev/graphics/lscape.pdf | Bin 155987 -> 155987 bytes .../doc/latex-dev/graphics/mathcolor.pdf | Bin 460753 -> 460633 bytes .../texmf-dist/doc/latex-dev/graphics/rotating.pdf | Bin 278524 -> 279611 bytes Master/texmf-dist/doc/latex-dev/graphics/rotex.pdf | Bin 172252 -> 172259 bytes Master/texmf-dist/doc/latex-dev/graphics/trig.pdf | Bin 199290 -> 199290 bytes .../texmf-dist/doc/latex-dev/latex-lab/README.md | 2 +- .../doc/latex-dev/latex-lab/blocks-code.pdf | Bin 892165 -> 921272 bytes .../doc/latex-dev/latex-lab/blocks-doc.pdf | Bin 485202 -> 485032 bytes .../texmf-dist/doc/latex-dev/latex-lab/changes.txt | 78 +- .../latex-lab/documentmetadata-support-code.pdf | Bin 563555 -> 563600 bytes .../latex-lab/documentmetadata-support-doc.pdf | Bin 421271 -> 420944 bytes .../doc/latex-dev/latex-lab/latex-lab-amsmath.pdf | Bin 382747 -> 590217 bytes .../doc/latex-dev/latex-lab/latex-lab-bib.pdf | Bin 383673 -> 383673 bytes .../doc/latex-dev/latex-lab/latex-lab-block.pdf | Bin 892165 -> 921272 bytes .../doc/latex-dev/latex-lab/latex-lab-firstaid.pdf | Bin 401935 -> 402757 bytes .../doc/latex-dev/latex-lab/latex-lab-float.pdf | Bin 444637 -> 444595 bytes .../latex-dev/latex-lab/latex-lab-footnotes.pdf | Bin 821807 -> 821456 bytes .../doc/latex-dev/latex-lab/latex-lab-graphic.pdf | Bin 517603 -> 517603 bytes .../latex-dev/latex-lab/latex-lab-marginpar.pdf | Bin 414685 -> 414201 bytes .../doc/latex-dev/latex-lab/latex-lab-math.pdf | Bin 796674 -> 775704 bytes .../latex-dev/latex-lab/latex-lab-mathintent.pdf | Bin 0 -> 308476 bytes .../doc/latex-dev/latex-lab/latex-lab-mathpkg.pdf | Bin 356138 -> 356137 bytes .../latex-dev/latex-lab/latex-lab-mathtools.pdf | Bin 372235 -> 378733 bytes .../doc/latex-dev/latex-lab/latex-lab-minipage.pdf | Bin 282259 -> 282259 bytes .../latex-dev/latex-lab/latex-lab-namespace.pdf | Bin 235962 -> 236698 bytes .../doc/latex-dev/latex-lab/latex-lab-new-or-1.pdf | Bin 406321 -> 226800 bytes .../doc/latex-dev/latex-lab/latex-lab-new-or-2.pdf | Bin 632196 -> 467030 bytes .../doc/latex-dev/latex-lab/latex-lab-sec.pdf | Bin 544929 -> 545736 bytes .../doc/latex-dev/latex-lab/latex-lab-table.pdf | Bin 572577 -> 574688 bytes .../latex-dev/latex-lab/latex-lab-testphase.pdf | Bin 298557 -> 298769 bytes .../doc/latex-dev/latex-lab/latex-lab-text.pdf | Bin 307847 -> 360284 bytes .../doc/latex-dev/latex-lab/latex-lab-title.pdf | Bin 348117 -> 347975 bytes .../latex-lab/latex-lab-toc-hyperref-changes.pdf | Bin 296124 -> 296124 bytes .../latex-lab/latex-lab-toc-kernel-changes.pdf | Bin 373186 -> 373145 bytes .../doc/latex-dev/latex-lab/latex-lab-toc.pdf | Bin 406053 -> 405809 bytes .../latex-dev/latex-lab/latex-lab-unicode-math.pdf | Bin 0 -> 435502 bytes Master/texmf-dist/doc/latex-dev/tools/README.md | 2 +- .../texmf-dist/doc/latex-dev/tools/afterpage.pdf | Bin 198100 -> 198100 bytes Master/texmf-dist/doc/latex-dev/tools/array.pdf | Bin 875527 -> 881345 bytes Master/texmf-dist/doc/latex-dev/tools/bm.pdf | Bin 323640 -> 323640 bytes Master/texmf-dist/doc/latex-dev/tools/calc.pdf | Bin 370977 -> 370977 bytes Master/texmf-dist/doc/latex-dev/tools/changes.txt | 30 + Master/texmf-dist/doc/latex-dev/tools/dcolumn.pdf | Bin 221038 -> 221038 bytes Master/texmf-dist/doc/latex-dev/tools/delarray.pdf | Bin 191058 -> 191058 bytes .../texmf-dist/doc/latex-dev/tools/enumerate.pdf | Bin 215077 -> 215077 bytes Master/texmf-dist/doc/latex-dev/tools/fileerr.pdf | Bin 188284 -> 187656 bytes Master/texmf-dist/doc/latex-dev/tools/fontsmpl.pdf | Bin 146438 -> 146438 bytes Master/texmf-dist/doc/latex-dev/tools/ftnright.pdf | Bin 387607 -> 386983 bytes Master/texmf-dist/doc/latex-dev/tools/hhline.pdf | Bin 189678 -> 189678 bytes .../texmf-dist/doc/latex-dev/tools/indentfirst.pdf | Bin 157352 -> 157352 bytes .../texmf-dist/doc/latex-dev/tools/l3sys-query.pdf | Bin 482622 -> 482622 bytes Master/texmf-dist/doc/latex-dev/tools/layout.pdf | Bin 260278 -> 260278 bytes .../texmf-dist/doc/latex-dev/tools/longtable.pdf | Bin 402733 -> 402919 bytes Master/texmf-dist/doc/latex-dev/tools/multicol.pdf | Bin 533038 -> 532719 bytes Master/texmf-dist/doc/latex-dev/tools/rawfonts.pdf | Bin 138956 -> 138956 bytes Master/texmf-dist/doc/latex-dev/tools/shellesc.pdf | Bin 176171 -> 176171 bytes Master/texmf-dist/doc/latex-dev/tools/showkeys.pdf | Bin 252922 -> 252922 bytes Master/texmf-dist/doc/latex-dev/tools/somedefs.pdf | Bin 167583 -> 167583 bytes Master/texmf-dist/doc/latex-dev/tools/tabularx.pdf | Bin 289601 -> 289601 bytes Master/texmf-dist/doc/latex-dev/tools/theorem.pdf | Bin 352212 -> 351577 bytes .../doc/latex-dev/tools/tools-overview.pdf | Bin 73684 -> 73684 bytes .../doc/latex-dev/tools/tools-overview.tex | 2 +- Master/texmf-dist/doc/latex-dev/tools/trace.pdf | Bin 222074 -> 222074 bytes Master/texmf-dist/doc/latex-dev/tools/varioref.pdf | Bin 393884 -> 393923 bytes Master/texmf-dist/doc/latex-dev/tools/verbatim.pdf | Bin 331587 -> 331587 bytes Master/texmf-dist/doc/latex-dev/tools/xr.pdf | Bin 323877 -> 324083 bytes Master/texmf-dist/doc/latex-dev/tools/xspace.pdf | Bin 257027 -> 257027 bytes .../texmf-dist/source/latex-dev/amsmath/amsbsy.ins | 2 +- .../texmf-dist/source/latex-dev/amsmath/amscd.dtx | 2 +- .../texmf-dist/source/latex-dev/amsmath/amscd.ins | 4 +- .../texmf-dist/source/latex-dev/amsmath/amsgen.dtx | 2 +- .../texmf-dist/source/latex-dev/amsmath/amsgen.ins | 2 +- .../source/latex-dev/amsmath/amsmath.dtx | 10 +- .../source/latex-dev/amsmath/amsmath.ins | 4 +- .../texmf-dist/source/latex-dev/amsmath/amsopn.dtx | 2 +- .../texmf-dist/source/latex-dev/amsmath/amsopn.ins | 4 +- .../source/latex-dev/amsmath/amstext.dtx | 6 +- .../source/latex-dev/amsmath/amstext.ins | 4 +- .../source/latex-dev/amsmath/amsxtra.dtx | 2 +- .../source/latex-dev/amsmath/amsxtra.ins | 4 +- Master/texmf-dist/source/latex-dev/base/alltt.dtx | 2 +- Master/texmf-dist/source/latex-dev/base/alltt.ins | 4 +- .../texmf-dist/source/latex-dev/base/classes.dtx | 8 +- .../texmf-dist/source/latex-dev/base/classes.ins | 4 +- .../texmf-dist/source/latex-dev/base/cmextra.ins | 4 +- .../texmf-dist/source/latex-dev/base/cmfonts.fdd | 2 +- .../texmf-dist/source/latex-dev/base/cmfonts.ins | 4 +- Master/texmf-dist/source/latex-dev/base/doc.dtx | 22 +- .../texmf-dist/source/latex-dev/base/docstrip.dtx | 37 +- .../texmf-dist/source/latex-dev/base/docstrip.ins | 4 +- Master/texmf-dist/source/latex-dev/base/ec.ins | 4 +- .../texmf-dist/source/latex-dev/base/exscale.dtx | 2 +- .../texmf-dist/source/latex-dev/base/exscale.ins | 4 +- Master/texmf-dist/source/latex-dev/base/fix-cm.dtx | 2 +- Master/texmf-dist/source/latex-dev/base/fix-cm.ins | 4 +- .../texmf-dist/source/latex-dev/base/fontdef.dtx | 2 +- Master/texmf-dist/source/latex-dev/base/format.ins | 8 +- .../texmf-dist/source/latex-dev/base/graphpap.dtx | 2 +- .../texmf-dist/source/latex-dev/base/graphpap.ins | 4 +- Master/texmf-dist/source/latex-dev/base/ifthen.dtx | 4 +- Master/texmf-dist/source/latex-dev/base/ifthen.ins | 4 +- .../texmf-dist/source/latex-dev/base/inputenc.dtx | 2 +- .../texmf-dist/source/latex-dev/base/inputenc.ins | 4 +- .../texmf-dist/source/latex-dev/base/latex209.dtx | 2 +- .../texmf-dist/source/latex-dev/base/latex209.ins | 4 +- .../source/latex-dev/base/latexrelease.dtx | 17 +- .../source/latex-dev/base/latexrelease.ins | 4 +- .../texmf-dist/source/latex-dev/base/latexsym.dtx | 2 +- .../texmf-dist/source/latex-dev/base/latexsym.ins | 6 +- Master/texmf-dist/source/latex-dev/base/letter.dtx | 2 +- Master/texmf-dist/source/latex-dev/base/letter.ins | 4 +- .../texmf-dist/source/latex-dev/base/ltalloc.dtx | 2 +- Master/texmf-dist/source/latex-dev/base/ltbibl.dtx | 2 +- .../texmf-dist/source/latex-dev/base/ltboxes.dtx | 2 +- .../texmf-dist/source/latex-dev/base/ltclass.dtx | 20 +- Master/texmf-dist/source/latex-dev/base/ltcmd.dtx | 571 ++- .../source/latex-dev/base/ltcmdhooks.dtx | 59 +- .../texmf-dist/source/latex-dev/base/ltcntrl.dtx | 2 +- .../texmf-dist/source/latex-dev/base/ltcounts.dtx | 52 +- .../texmf-dist/source/latex-dev/base/ltdefns.dtx | 13 +- .../texmf-dist/source/latex-dev/base/ltdirchk.dtx | 2 +- .../texmf-dist/source/latex-dev/base/lterror.dtx | 2 +- Master/texmf-dist/source/latex-dev/base/ltexpl.dtx | 2 +- .../source/latex-dev/base/ltfilehook.dtx | 49 +- .../texmf-dist/source/latex-dev/base/ltfiles.dtx | 2 +- .../texmf-dist/source/latex-dev/base/ltfinal.dtx | 2 +- .../texmf-dist/source/latex-dev/base/ltfloat.dtx | 2 +- .../texmf-dist/source/latex-dev/base/ltfntcmd.dtx | 2 +- .../texmf-dist/source/latex-dev/base/ltfssaxes.dtx | 4028 +++++++++++++++++--- .../texmf-dist/source/latex-dev/base/ltfssbas.dtx | 105 +- .../texmf-dist/source/latex-dev/base/ltfsscmp.dtx | 2 +- .../texmf-dist/source/latex-dev/base/ltfssdcl.dtx | 54 +- .../texmf-dist/source/latex-dev/base/ltfssini.dtx | 2 +- .../texmf-dist/source/latex-dev/base/ltfsstrc.dtx | 2 +- .../texmf-dist/source/latex-dev/base/lthooks.dtx | 197 +- .../texmf-dist/source/latex-dev/base/lthyphen.dtx | 2 +- .../texmf-dist/source/latex-dev/base/ltidxglo.dtx | 2 +- Master/texmf-dist/source/latex-dev/base/ltkeys.dtx | 21 +- .../texmf-dist/source/latex-dev/base/ltlength.dtx | 2 +- .../texmf-dist/source/latex-dev/base/ltlists.dtx | 27 +- .../texmf-dist/source/latex-dev/base/ltlogos.dtx | 2 +- .../texmf-dist/source/latex-dev/base/ltluatex.dtx | 19 +- .../texmf-dist/source/latex-dev/base/ltmarks.dtx | 51 +- Master/texmf-dist/source/latex-dev/base/ltmath.dtx | 2 +- Master/texmf-dist/source/latex-dev/base/ltmeta.dtx | 2 +- .../texmf-dist/source/latex-dev/base/ltmiscen.dtx | 2 +- .../texmf-dist/source/latex-dev/base/ltoutenc.dtx | 67 +- .../texmf-dist/source/latex-dev/base/ltoutenc.ins | 4 +- .../texmf-dist/source/latex-dev/base/ltoutput.dtx | 1627 ++++++-- Master/texmf-dist/source/latex-dev/base/ltpage.dtx | 6 +- .../texmf-dist/source/latex-dev/base/ltpageno.dtx | 2 +- Master/texmf-dist/source/latex-dev/base/ltpar.dtx | 2 +- Master/texmf-dist/source/latex-dev/base/ltpara.dtx | 7 +- .../texmf-dist/source/latex-dev/base/ltpictur.dtx | 2 +- .../texmf-dist/source/latex-dev/base/ltplain.dtx | 2 +- .../source/latex-dev/base/ltproperties.dtx | 14 +- Master/texmf-dist/source/latex-dev/base/ltsect.dtx | 80 +- .../texmf-dist/source/latex-dev/base/ltshipout.dtx | 2 +- .../texmf-dist/source/latex-dev/base/ltsockets.dtx | 159 +- .../texmf-dist/source/latex-dev/base/ltspace.dtx | 2 +- Master/texmf-dist/source/latex-dev/base/lttab.dtx | 2 +- .../texmf-dist/source/latex-dev/base/lttagging.dtx | 330 +- .../source/latex-dev/base/lttemplates.dtx | 186 +- .../source/latex-dev/base/lttextcomp.dtx | 2 +- Master/texmf-dist/source/latex-dev/base/ltthm.dtx | 2 +- Master/texmf-dist/source/latex-dev/base/ltvers.dtx | 4 +- Master/texmf-dist/source/latex-dev/base/ltxdoc.dtx | 4 +- Master/texmf-dist/source/latex-dev/base/ltxref.dtx | 40 +- .../texmf-dist/source/latex-dev/base/makeindx.dtx | 2 +- .../texmf-dist/source/latex-dev/base/makeindx.ins | 4 +- Master/texmf-dist/source/latex-dev/base/newdc.ins | 4 +- .../texmf-dist/source/latex-dev/base/newlfont.dtx | 2 +- .../texmf-dist/source/latex-dev/base/nfssfont.dtx | 2 +- .../texmf-dist/source/latex-dev/base/nfssfont.ins | 4 +- Master/texmf-dist/source/latex-dev/base/olddc.ins | 4 +- .../texmf-dist/source/latex-dev/base/oldlfont.dtx | 2 +- .../texmf-dist/source/latex-dev/base/preload.dtx | 2 +- Master/texmf-dist/source/latex-dev/base/proc.dtx | 2 +- Master/texmf-dist/source/latex-dev/base/proc.ins | 4 +- Master/texmf-dist/source/latex-dev/base/slides.dtx | 2 +- Master/texmf-dist/source/latex-dev/base/slides.ins | 8 +- .../texmf-dist/source/latex-dev/base/slifonts.fdd | 2 +- .../texmf-dist/source/latex-dev/base/syntonly.dtx | 2 +- .../texmf-dist/source/latex-dev/base/syntonly.ins | 4 +- Master/texmf-dist/source/latex-dev/base/tulm.fdd | 2 +- Master/texmf-dist/source/latex-dev/base/tulm.ins | 4 +- Master/texmf-dist/source/latex-dev/base/unpack.ins | 2 +- .../texmf-dist/source/latex-dev/base/utf8ienc.dtx | 2 +- .../source/latex-dev/firstaid/firstaid.ins | 4 +- .../latex2e-first-aid-for-external-files.dtx | 12 +- .../texmf-dist/source/latex-dev/graphics/color.dtx | 8 +- .../source/latex-dev/graphics/drivers.dtx | 2 +- .../source/latex-dev/graphics/epsfig.dtx | 2 +- .../source/latex-dev/graphics/graphics.dtx | 2 +- .../source/latex-dev/graphics/graphicx.dtx | 30 +- .../source/latex-dev/graphics/keyval.dtx | 2 +- .../source/latex-dev/graphics/lscape.dtx | 2 +- .../source/latex-dev/graphics/rotating.dtx | 23 +- .../texmf-dist/source/latex-dev/graphics/trig.dtx | 2 +- .../latex-lab/documentmetadata-support.dtx | 179 +- .../latex-dev/latex-lab/latex-lab-amsmath.dtx | 971 ++++- .../source/latex-dev/latex-lab/latex-lab-block.dtx | 189 +- .../latex-dev/latex-lab/latex-lab-firstaid.dtx | 39 +- .../source/latex-dev/latex-lab/latex-lab-float.dtx | 10 +- .../latex-dev/latex-lab/latex-lab-footnotes.dtx | 32 +- .../latex-dev/latex-lab/latex-lab-graphic.dtx | 2 +- .../latex-dev/latex-lab/latex-lab-marginpar.dtx | 12 +- .../source/latex-dev/latex-lab/latex-lab-math.dtx | 1000 ++--- .../latex-dev/latex-lab/latex-lab-mathintent.dtx | 109 + .../latex-dev/latex-lab/latex-lab-mathpkg.dtx | 2 +- .../latex-dev/latex-lab/latex-lab-mathtools.dtx | 264 +- .../latex-dev/latex-lab/latex-lab-minipage.dtx | 2 +- .../latex-dev/latex-lab/latex-lab-namespace.dtx | 13 +- .../latex-dev/latex-lab/latex-lab-new-or-1.dtx | 135 +- .../latex-dev/latex-lab/latex-lab-new-or-2.dtx | 639 +--- .../source/latex-dev/latex-lab/latex-lab-sec.dtx | 423 +- .../source/latex-dev/latex-lab/latex-lab-table.dtx | 119 +- .../latex-dev/latex-lab/latex-lab-testphase.dtx | 10 +- .../source/latex-dev/latex-lab/latex-lab-text.dtx | 92 +- .../source/latex-dev/latex-lab/latex-lab-title.dtx | 6 +- .../latex-lab/latex-lab-toc-hyperref-changes.dtx | 2 +- .../latex-lab/latex-lab-toc-kernel-changes.dtx | 12 +- .../source/latex-dev/latex-lab/latex-lab-toc.dtx | 8 +- .../latex-dev/latex-lab/latex-lab-unicode-math.dtx | 175 + .../source/latex-dev/latex-lab/latex-lab.ins | 6 +- .../source/latex-dev/tools/afterpage.dtx | 2 +- .../source/latex-dev/tools/afterpage.ins | 4 +- Master/texmf-dist/source/latex-dev/tools/array.dtx | 105 +- Master/texmf-dist/source/latex-dev/tools/bm.dtx | 2 +- Master/texmf-dist/source/latex-dev/tools/bm.ins | 4 +- Master/texmf-dist/source/latex-dev/tools/calc.dtx | 2 +- .../texmf-dist/source/latex-dev/tools/dcolumn.dtx | 2 +- .../texmf-dist/source/latex-dev/tools/delarray.dtx | 2 +- .../source/latex-dev/tools/enumerate.dtx | 2 +- .../texmf-dist/source/latex-dev/tools/fileerr.dtx | 2 +- .../texmf-dist/source/latex-dev/tools/fontsmpl.dtx | 2 +- .../texmf-dist/source/latex-dev/tools/ftnright.dtx | 2 +- .../texmf-dist/source/latex-dev/tools/hhline.dtx | 2 +- .../source/latex-dev/tools/indentfirst.dtx | 2 +- .../source/latex-dev/tools/l3sys-query.dtx | 2 +- .../source/latex-dev/tools/l3sys-query.ins | 4 +- .../texmf-dist/source/latex-dev/tools/layout.dtx | 2 +- .../source/latex-dev/tools/longtable.dtx | 9 +- .../source/latex-dev/tools/longtable.ins | 4 +- .../texmf-dist/source/latex-dev/tools/multicol.dtx | 6 +- .../texmf-dist/source/latex-dev/tools/multicol.ins | 4 +- .../texmf-dist/source/latex-dev/tools/rawfonts.dtx | 2 +- .../texmf-dist/source/latex-dev/tools/shellesc.dtx | 2 +- .../texmf-dist/source/latex-dev/tools/showkeys.dtx | 4 +- .../texmf-dist/source/latex-dev/tools/somedefs.dtx | 2 +- .../texmf-dist/source/latex-dev/tools/tabularx.dtx | 2 +- .../texmf-dist/source/latex-dev/tools/tabularx.ins | 4 +- .../texmf-dist/source/latex-dev/tools/theorem.dtx | 2 +- Master/texmf-dist/source/latex-dev/tools/tools.ins | 4 +- Master/texmf-dist/source/latex-dev/tools/trace.dtx | 2 +- .../texmf-dist/source/latex-dev/tools/varioref.dtx | 9 +- .../texmf-dist/source/latex-dev/tools/varioref.ins | 4 +- .../texmf-dist/source/latex-dev/tools/verbatim.dtx | 2 +- Master/texmf-dist/source/latex-dev/tools/xr.dtx | 16 +- .../texmf-dist/source/latex-dev/tools/xspace.dtx | 2 +- Master/texmf-dist/tex/latex-dev/amsmath/amsbsy.sty | 2 +- Master/texmf-dist/tex/latex-dev/amsmath/amscd.sty | 2 +- Master/texmf-dist/tex/latex-dev/amsmath/amsgen.sty | 2 +- .../texmf-dist/tex/latex-dev/amsmath/amsmath.sty | 6 +- Master/texmf-dist/tex/latex-dev/amsmath/amsopn.sty | 2 +- .../texmf-dist/tex/latex-dev/amsmath/amstext.sty | 4 +- .../texmf-dist/tex/latex-dev/amsmath/amsxtra.sty | 2 +- Master/texmf-dist/tex/latex-dev/base/alltt.sty | 2 +- Master/texmf-dist/tex/latex-dev/base/ansinew.def | 2 +- Master/texmf-dist/tex/latex-dev/base/applemac.def | 2 +- Master/texmf-dist/tex/latex-dev/base/article.cls | 4 +- Master/texmf-dist/tex/latex-dev/base/article.sty | 2 +- Master/texmf-dist/tex/latex-dev/base/ascii.def | 2 +- .../texmf-dist/tex/latex-dev/base/atbegshi-ltx.sty | 4 +- .../tex/latex-dev/base/atveryend-ltx.sty | 2 +- Master/texmf-dist/tex/latex-dev/base/bezier.sty | 2 +- Master/texmf-dist/tex/latex-dev/base/bk10.clo | 4 +- Master/texmf-dist/tex/latex-dev/base/bk11.clo | 4 +- Master/texmf-dist/tex/latex-dev/base/bk12.clo | 4 +- Master/texmf-dist/tex/latex-dev/base/book.cls | 4 +- Master/texmf-dist/tex/latex-dev/base/book.sty | 2 +- .../tex/latex-dev/base/checkencodingsubset.tex | 2 +- Master/texmf-dist/tex/latex-dev/base/cp1250.def | 2 +- Master/texmf-dist/tex/latex-dev/base/cp1252.def | 2 +- Master/texmf-dist/tex/latex-dev/base/cp1257.def | 2 +- Master/texmf-dist/tex/latex-dev/base/cp437.def | 2 +- Master/texmf-dist/tex/latex-dev/base/cp437de.def | 2 +- Master/texmf-dist/tex/latex-dev/base/cp850.def | 2 +- Master/texmf-dist/tex/latex-dev/base/cp852.def | 2 +- Master/texmf-dist/tex/latex-dev/base/cp858.def | 2 +- Master/texmf-dist/tex/latex-dev/base/cp865.def | 2 +- Master/texmf-dist/tex/latex-dev/base/decmulti.def | 2 +- Master/texmf-dist/tex/latex-dev/base/doc.sty | 5 +- Master/texmf-dist/tex/latex-dev/base/docstrip.tex | 22 +- Master/texmf-dist/tex/latex-dev/base/exscale.sty | 2 +- Master/texmf-dist/tex/latex-dev/base/fix-cm.sty | 2 +- Master/texmf-dist/tex/latex-dev/base/fixltx2e.sty | 2 +- Master/texmf-dist/tex/latex-dev/base/flafter.sty | 107 +- Master/texmf-dist/tex/latex-dev/base/fleqn.clo | 2 +- Master/texmf-dist/tex/latex-dev/base/fleqn.sty | 2 +- Master/texmf-dist/tex/latex-dev/base/fltrace.sty | 214 +- Master/texmf-dist/tex/latex-dev/base/fontenc.sty | 4 +- Master/texmf-dist/tex/latex-dev/base/fontmath.cfg | 2 +- Master/texmf-dist/tex/latex-dev/base/fontmath.ltx | 2 +- Master/texmf-dist/tex/latex-dev/base/fonttext.cfg | 2 +- Master/texmf-dist/tex/latex-dev/base/fonttext.ltx | 2 +- Master/texmf-dist/tex/latex-dev/base/graphpap.sty | 2 +- Master/texmf-dist/tex/latex-dev/base/hyphen.ltx | 2 +- Master/texmf-dist/tex/latex-dev/base/idx.tex | 2 +- Master/texmf-dist/tex/latex-dev/base/ifthen.sty | 4 +- Master/texmf-dist/tex/latex-dev/base/inputenc.sty | 2 +- Master/texmf-dist/tex/latex-dev/base/lablst.tex | 2 +- Master/texmf-dist/tex/latex-dev/base/latex.ltx | 2840 +++++++++++--- Master/texmf-dist/tex/latex-dev/base/latex209.def | 2 +- .../texmf-dist/tex/latex-dev/base/latexrelease.sty | 4011 +++++++++++++++++-- Master/texmf-dist/tex/latex-dev/base/latexsym.sty | 2 +- Master/texmf-dist/tex/latex-dev/base/latin1.def | 2 +- Master/texmf-dist/tex/latex-dev/base/latin10.def | 2 +- Master/texmf-dist/tex/latex-dev/base/latin2.def | 2 +- Master/texmf-dist/tex/latex-dev/base/latin3.def | 2 +- Master/texmf-dist/tex/latex-dev/base/latin4.def | 2 +- Master/texmf-dist/tex/latex-dev/base/latin5.def | 2 +- Master/texmf-dist/tex/latex-dev/base/latin9.def | 2 +- Master/texmf-dist/tex/latex-dev/base/lcyenc.dfu | 2 +- Master/texmf-dist/tex/latex-dev/base/leqno.clo | 2 +- Master/texmf-dist/tex/latex-dev/base/leqno.sty | 2 +- Master/texmf-dist/tex/latex-dev/base/letter.cls | 2 +- Master/texmf-dist/tex/latex-dev/base/letter.sty | 2 +- Master/texmf-dist/tex/latex-dev/base/ltluatex.lua | 2 +- Master/texmf-dist/tex/latex-dev/base/ltluatex.tex | 4 +- Master/texmf-dist/tex/latex-dev/base/ltnews.cls | 2 +- Master/texmf-dist/tex/latex-dev/base/ltxcheck.tex | 2 +- Master/texmf-dist/tex/latex-dev/base/ltxdoc.cfg | 2 +- Master/texmf-dist/tex/latex-dev/base/ltxdoc.cls | 2 +- Master/texmf-dist/tex/latex-dev/base/ltxguide.cls | 2 +- Master/texmf-dist/tex/latex-dev/base/ly1enc.dfu | 2 +- Master/texmf-dist/tex/latex-dev/base/macce.def | 2 +- Master/texmf-dist/tex/latex-dev/base/makeidx.sty | 2 +- Master/texmf-dist/tex/latex-dev/base/minimal.cls | 2 +- Master/texmf-dist/tex/latex-dev/base/newlfont.sty | 2 +- Master/texmf-dist/tex/latex-dev/base/next.def | 2 +- Master/texmf-dist/tex/latex-dev/base/nfssfont.tex | 2 +- Master/texmf-dist/tex/latex-dev/base/oldlfont.sty | 2 +- Master/texmf-dist/tex/latex-dev/base/omlcmm.fd | 2 +- Master/texmf-dist/tex/latex-dev/base/omlcmr.fd | 2 +- Master/texmf-dist/tex/latex-dev/base/omlenc.def | 4 +- Master/texmf-dist/tex/latex-dev/base/omllcmm.fd | 2 +- Master/texmf-dist/tex/latex-dev/base/omscmr.fd | 2 +- Master/texmf-dist/tex/latex-dev/base/omscmsy.fd | 2 +- Master/texmf-dist/tex/latex-dev/base/omsenc.def | 4 +- Master/texmf-dist/tex/latex-dev/base/omsenc.dfu | 2 +- Master/texmf-dist/tex/latex-dev/base/omslcmsy.fd | 2 +- Master/texmf-dist/tex/latex-dev/base/omxcmex.fd | 2 +- Master/texmf-dist/tex/latex-dev/base/omxlcmex.fd | 2 +- Master/texmf-dist/tex/latex-dev/base/openbib.sty | 2 +- Master/texmf-dist/tex/latex-dev/base/ot1cmdh.fd | 2 +- Master/texmf-dist/tex/latex-dev/base/ot1cmfib.fd | 2 +- Master/texmf-dist/tex/latex-dev/base/ot1cmfr.fd | 2 +- Master/texmf-dist/tex/latex-dev/base/ot1cmr.fd | 2 +- Master/texmf-dist/tex/latex-dev/base/ot1cmss.fd | 2 +- Master/texmf-dist/tex/latex-dev/base/ot1cmtt.fd | 2 +- Master/texmf-dist/tex/latex-dev/base/ot1cmvtt.fd | 2 +- Master/texmf-dist/tex/latex-dev/base/ot1enc.def | 4 +- Master/texmf-dist/tex/latex-dev/base/ot1enc.dfu | 2 +- Master/texmf-dist/tex/latex-dev/base/ot1lcmss.fd | 2 +- Master/texmf-dist/tex/latex-dev/base/ot1lcmtt.fd | 2 +- Master/texmf-dist/tex/latex-dev/base/ot2enc.dfu | 2 +- Master/texmf-dist/tex/latex-dev/base/ot4enc.def | 4 +- Master/texmf-dist/tex/latex-dev/base/preload.cfg | 2 +- Master/texmf-dist/tex/latex-dev/base/preload.ltx | 2 +- Master/texmf-dist/tex/latex-dev/base/proc.cls | 2 +- Master/texmf-dist/tex/latex-dev/base/proc.sty | 2 +- Master/texmf-dist/tex/latex-dev/base/report.cls | 4 +- Master/texmf-dist/tex/latex-dev/base/report.sty | 2 +- Master/texmf-dist/tex/latex-dev/base/sfonts.def | 2 +- Master/texmf-dist/tex/latex-dev/base/shortvrb.sty | 5 +- Master/texmf-dist/tex/latex-dev/base/showidx.sty | 2 +- Master/texmf-dist/tex/latex-dev/base/size10.clo | 4 +- Master/texmf-dist/tex/latex-dev/base/size11.clo | 4 +- Master/texmf-dist/tex/latex-dev/base/size12.clo | 4 +- Master/texmf-dist/tex/latex-dev/base/slides.cls | 2 +- Master/texmf-dist/tex/latex-dev/base/slides.def | 2 +- Master/texmf-dist/tex/latex-dev/base/slides.sty | 2 +- .../tex/latex-dev/base/structuredlog.sty | 4 +- Master/texmf-dist/tex/latex-dev/base/syntonly.sty | 2 +- Master/texmf-dist/tex/latex-dev/base/t1cmdh.fd | 2 +- Master/texmf-dist/tex/latex-dev/base/t1cmfib.fd | 2 +- Master/texmf-dist/tex/latex-dev/base/t1cmfr.fd | 2 +- Master/texmf-dist/tex/latex-dev/base/t1cmr.fd | 2 +- Master/texmf-dist/tex/latex-dev/base/t1cmss.fd | 2 +- Master/texmf-dist/tex/latex-dev/base/t1cmtt.fd | 2 +- Master/texmf-dist/tex/latex-dev/base/t1cmvtt.fd | 2 +- Master/texmf-dist/tex/latex-dev/base/t1enc.def | 6 +- Master/texmf-dist/tex/latex-dev/base/t1enc.dfu | 2 +- Master/texmf-dist/tex/latex-dev/base/t1enc.sty | 2 +- Master/texmf-dist/tex/latex-dev/base/t1lcmss.fd | 2 +- Master/texmf-dist/tex/latex-dev/base/t1lcmtt.fd | 2 +- Master/texmf-dist/tex/latex-dev/base/t2aenc.dfu | 2 +- Master/texmf-dist/tex/latex-dev/base/t2benc.dfu | 2 +- Master/texmf-dist/tex/latex-dev/base/t2cenc.dfu | 2 +- Master/texmf-dist/tex/latex-dev/base/testpage.tex | 2 +- .../tex/latex-dev/base/textcomp-2018-08-11.sty | 2 +- Master/texmf-dist/tex/latex-dev/base/textcomp.sty | 2 +- Master/texmf-dist/tex/latex-dev/base/tracefnt.sty | 2 +- Master/texmf-dist/tex/latex-dev/base/ts1cmr.fd | 2 +- Master/texmf-dist/tex/latex-dev/base/ts1cmss.fd | 2 +- Master/texmf-dist/tex/latex-dev/base/ts1cmtt.fd | 2 +- Master/texmf-dist/tex/latex-dev/base/ts1cmvtt.fd | 2 +- Master/texmf-dist/tex/latex-dev/base/ts1enc.def | 2 +- Master/texmf-dist/tex/latex-dev/base/ts1enc.dfu | 2 +- Master/texmf-dist/tex/latex-dev/base/tuenc.def | 4 +- Master/texmf-dist/tex/latex-dev/base/tulmdh.fd | 2 +- Master/texmf-dist/tex/latex-dev/base/tulmr.fd | 2 +- Master/texmf-dist/tex/latex-dev/base/tulmss.fd | 2 +- Master/texmf-dist/tex/latex-dev/base/tulmssq.fd | 2 +- Master/texmf-dist/tex/latex-dev/base/tulmtt.fd | 2 +- Master/texmf-dist/tex/latex-dev/base/tulmvtt.fd | 2 +- Master/texmf-dist/tex/latex-dev/base/ucmr.fd | 2 +- Master/texmf-dist/tex/latex-dev/base/ucmss.fd | 2 +- Master/texmf-dist/tex/latex-dev/base/ucmtt.fd | 2 +- Master/texmf-dist/tex/latex-dev/base/ulasy.fd | 2 +- Master/texmf-dist/tex/latex-dev/base/ullasy.fd | 2 +- Master/texmf-dist/tex/latex-dev/base/utf8-2018.def | 2 +- Master/texmf-dist/tex/latex-dev/base/utf8.def | 2 +- Master/texmf-dist/tex/latex-dev/base/utf8enc.dfu | 2 +- Master/texmf-dist/tex/latex-dev/base/x2enc.dfu | 2 +- .../tex/latex-dev/firstaid/filehook-ltx.sty | 4 +- .../latex2e-first-aid-for-external-files.ltx | 13 +- .../tex/latex-dev/firstaid/underscore-ltx.sty | 4 +- Master/texmf-dist/tex/latex-dev/graphics/color.sty | 4 +- .../texmf-dist/tex/latex-dev/graphics/dvipdf.def | 2 +- .../texmf-dist/tex/latex-dev/graphics/dvipsnam.def | 2 +- .../texmf-dist/tex/latex-dev/graphics/dvipsone.def | 2 +- .../texmf-dist/tex/latex-dev/graphics/dviwin.def | 2 +- Master/texmf-dist/tex/latex-dev/graphics/emtex.def | 2 +- .../texmf-dist/tex/latex-dev/graphics/epsfig.sty | 2 +- .../texmf-dist/tex/latex-dev/graphics/graphics.sty | 2 +- .../texmf-dist/tex/latex-dev/graphics/graphicx.sty | 7 +- .../texmf-dist/tex/latex-dev/graphics/keyval.sty | 2 +- .../texmf-dist/tex/latex-dev/graphics/lscape.sty | 2 +- .../texmf-dist/tex/latex-dev/graphics/pctex32.def | 2 +- .../texmf-dist/tex/latex-dev/graphics/pctexhp.def | 2 +- .../texmf-dist/tex/latex-dev/graphics/pctexps.def | 2 +- .../texmf-dist/tex/latex-dev/graphics/pctexwin.def | 2 +- .../texmf-dist/tex/latex-dev/graphics/rotating.sty | 16 +- .../texmf-dist/tex/latex-dev/graphics/tcidvi.def | 2 +- Master/texmf-dist/tex/latex-dev/graphics/trig.sty | 2 +- .../texmf-dist/tex/latex-dev/graphics/truetex.def | 2 +- .../latex-lab/bib-latex-lab-testphase.ltx | 2 +- .../latex-lab/block-latex-lab-testphase.ltx | 9 +- .../latex-lab/documentmetadata-support.ltx | 47 +- .../latex-lab/firstaid-latex-lab-testphase.ltx | 6 +- .../latex-lab/float-latex-lab-testphase.ltx | 6 +- .../latex-lab/graphic-latex-lab-testphase.ltx | 4 +- .../tex/latex-dev/latex-lab/latex-lab-amsmath.ltx | 710 +++- .../tex/latex-dev/latex-lab/latex-lab-footmisc.ltx | 30 +- .../latex-dev/latex-lab/latex-lab-footnotes.ltx | 8 +- .../latex-lab/latex-lab-kernel-changes.sty | 14 +- .../tex/latex-dev/latex-lab/latex-lab-math.ltx | 528 +-- .../latex-dev/latex-lab/latex-lab-mathintent.ltx | 60 + .../tex/latex-dev/latex-lab/latex-lab-mathpkg.ltx | 2 +- .../latex-dev/latex-lab/latex-lab-mathtools.ltx | 243 +- .../latex-lab/latex-lab-testphase-bib.sty | 2 +- .../latex-lab/latex-lab-testphase-block.sty | 73 +- .../latex-lab/latex-lab-testphase-firstaid.sty | 35 +- .../latex-lab/latex-lab-testphase-float.sty | 12 +- .../latex-lab/latex-lab-testphase-graphic.sty | 4 +- .../latex-lab/latex-lab-testphase-marginpar.sty | 8 +- .../latex-lab/latex-lab-testphase-math.sty | 10 +- .../latex-lab/latex-lab-testphase-minipage.sty | 2 +- .../latex-lab/latex-lab-testphase-new-or-1.sty | 62 +- .../latex-lab/latex-lab-testphase-new-or-2.sty | 200 +- .../latex-lab/latex-lab-testphase-sec.sty | 31 +- .../latex-lab/latex-lab-testphase-table.sty | 72 +- .../latex-lab/latex-lab-testphase-text.sty | 51 +- .../latex-lab/latex-lab-testphase-title.sty | 6 +- .../latex-lab/latex-lab-testphase-toc.sty | 24 +- .../latex-dev/latex-lab/latex-lab-unicode-math.ltx | 92 + .../latex-lab/marginpar-latex-lab-testphase.ltx | 6 +- .../latex-lab/math-latex-lab-testphase.ltx | 2 +- .../latex-lab/minipage-latex-lab-testphase.ltx | 2 +- .../latex-lab/new-or-1-latex-lab-testphase.ltx | 8 +- .../latex-lab/new-or-latex-lab-testphase.ltx | 2 +- .../latex-lab/phase-I-latex-lab-testphase.ltx | 2 +- .../latex-lab/phase-II-latex-lab-testphase.ltx | 2 +- .../latex-lab/phase-III-latex-lab-testphase.ltx | 2 +- .../latex-lab/sec-latex-lab-testphase.ltx | 8 +- .../latex-lab/table-latex-lab-testphase.ltx | 8 +- .../latex-lab/tabular-latex-lab-testphase.ltx | 8 +- .../latex-lab/tagpdf-latex-lab-testphase.ltx | 2 +- .../latex-dev/latex-lab/tagpdf-ns-latex-lab.def | 5 +- .../latex-lab/text-latex-lab-testphase.ltx | 8 +- .../latex-lab/title-latex-lab-testphase.ltx | 6 +- .../latex-lab/toc-latex-lab-testphase.ltx | 6 +- Master/texmf-dist/tex/latex-dev/tools/.tex | 2 +- .../texmf-dist/tex/latex-dev/tools/afterpage.sty | 2 +- Master/texmf-dist/tex/latex-dev/tools/array.sty | 50 +- Master/texmf-dist/tex/latex-dev/tools/bm.sty | 2 +- Master/texmf-dist/tex/latex-dev/tools/calc.sty | 2 +- Master/texmf-dist/tex/latex-dev/tools/dcolumn.sty | 2 +- Master/texmf-dist/tex/latex-dev/tools/delarray.sty | 2 +- Master/texmf-dist/tex/latex-dev/tools/e.tex | 2 +- .../texmf-dist/tex/latex-dev/tools/enumerate.sty | 2 +- Master/texmf-dist/tex/latex-dev/tools/fontsmpl.sty | 2 +- Master/texmf-dist/tex/latex-dev/tools/fontsmpl.tex | 2 +- Master/texmf-dist/tex/latex-dev/tools/ftnright.sty | 2 +- Master/texmf-dist/tex/latex-dev/tools/h.tex | 2 +- Master/texmf-dist/tex/latex-dev/tools/hhline.sty | 2 +- .../texmf-dist/tex/latex-dev/tools/indentfirst.sty | 2 +- .../texmf-dist/tex/latex-dev/tools/l3sys-query.sty | 4 +- Master/texmf-dist/tex/latex-dev/tools/layout.sty | 2 +- .../texmf-dist/tex/latex-dev/tools/longtable.sty | 7 +- Master/texmf-dist/tex/latex-dev/tools/multicol.sty | 6 +- Master/texmf-dist/tex/latex-dev/tools/q.tex | 2 +- Master/texmf-dist/tex/latex-dev/tools/r.tex | 2 +- Master/texmf-dist/tex/latex-dev/tools/rawfonts.sty | 2 +- Master/texmf-dist/tex/latex-dev/tools/s.tex | 2 +- Master/texmf-dist/tex/latex-dev/tools/shellesc.sty | 4 +- Master/texmf-dist/tex/latex-dev/tools/showkeys.sty | 4 +- Master/texmf-dist/tex/latex-dev/tools/somedefs.sty | 2 +- Master/texmf-dist/tex/latex-dev/tools/tabularx.sty | 2 +- Master/texmf-dist/tex/latex-dev/tools/thb.sty | 2 +- Master/texmf-dist/tex/latex-dev/tools/thc.sty | 2 +- Master/texmf-dist/tex/latex-dev/tools/thcb.sty | 2 +- Master/texmf-dist/tex/latex-dev/tools/theorem.sty | 2 +- Master/texmf-dist/tex/latex-dev/tools/thm.sty | 2 +- Master/texmf-dist/tex/latex-dev/tools/thmb.sty | 2 +- Master/texmf-dist/tex/latex-dev/tools/thp.sty | 2 +- Master/texmf-dist/tex/latex-dev/tools/trace.sty | 2 +- Master/texmf-dist/tex/latex-dev/tools/varioref.sty | 4 +- Master/texmf-dist/tex/latex-dev/tools/verbatim.sty | 2 +- Master/texmf-dist/tex/latex-dev/tools/verbtest.tex | 2 +- Master/texmf-dist/tex/latex-dev/tools/x.tex | 2 +- Master/texmf-dist/tex/latex-dev/tools/xr.sty | 8 +- Master/texmf-dist/tex/latex-dev/tools/xspace.sty | 2 +- 717 files changed, 18896 insertions(+), 5599 deletions(-) create mode 100644 Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-mathintent.pdf create mode 100644 Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-unicode-math.pdf create mode 100644 Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-mathintent.dtx create mode 100644 Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-unicode-math.dtx create mode 100644 Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-mathintent.ltx create mode 100644 Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-unicode-math.ltx (limited to 'Master/texmf-dist') diff --git a/Master/texmf-dist/doc/latex-dev/amsmath/README.md b/Master/texmf-dist/doc/latex-dev/amsmath/README.md index 71ee8a9982f..abcdef9c44f 100644 --- a/Master/texmf-dist/doc/latex-dev/amsmath/README.md +++ b/Master/texmf-dist/doc/latex-dev/amsmath/README.md @@ -1,7 +1,7 @@ The amsmath bundle for LaTeX ============================ -Release 2025-06-01 pre-release 0a +Release 2025-06-01 pre-release 2 Overview -------- @@ -77,5 +77,5 @@ version 1.3c or later. -----

Copyright (C) 2001-2004, 2007, 2008, 2010, 2011, 2013 American Mathematical Society.
-

Copyright (C) 2016-2024 The LaTeX Project and American Mathematical Society.
+

Copyright (C) 2016-2025 The LaTeX Project and American Mathematical Society.
diff --git a/Master/texmf-dist/doc/latex-dev/amsmath/amsbsy.pdf b/Master/texmf-dist/doc/latex-dev/amsmath/amsbsy.pdf index 77becc86df7..bcb8cc60968 100644 Binary files a/Master/texmf-dist/doc/latex-dev/amsmath/amsbsy.pdf and b/Master/texmf-dist/doc/latex-dev/amsmath/amsbsy.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/amsmath/amscd.pdf b/Master/texmf-dist/doc/latex-dev/amsmath/amscd.pdf index c4395865c4c..e6963caa7ec 100644 Binary files a/Master/texmf-dist/doc/latex-dev/amsmath/amscd.pdf and b/Master/texmf-dist/doc/latex-dev/amsmath/amscd.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/amsmath/amsgen.pdf b/Master/texmf-dist/doc/latex-dev/amsmath/amsgen.pdf index 2303434c641..bf342eb3e10 100644 Binary files a/Master/texmf-dist/doc/latex-dev/amsmath/amsgen.pdf and b/Master/texmf-dist/doc/latex-dev/amsmath/amsgen.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/amsmath/amsldoc.pdf b/Master/texmf-dist/doc/latex-dev/amsmath/amsldoc.pdf index 6f4a9bcf4ce..50189d14843 100644 Binary files a/Master/texmf-dist/doc/latex-dev/amsmath/amsldoc.pdf and b/Master/texmf-dist/doc/latex-dev/amsmath/amsldoc.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/amsmath/amsldoc.tex b/Master/texmf-dist/doc/latex-dev/amsmath/amsldoc.tex index 91e6ada7e60..db780b4cedb 100644 --- a/Master/texmf-dist/doc/latex-dev/amsmath/amsldoc.tex +++ b/Master/texmf-dist/doc/latex-dev/amsmath/amsldoc.tex @@ -1,6 +1,6 @@ % % Copyright (C) 1995, 2000, 2013 American Mathematical Society. -% Copyright (C) 2016-2024 LaTeX Project and American Mathematical Society. +% Copyright (C) 2016-2025 LaTeX Project and American Mathematical Society. % % This work may be distributed and/or modified under the % conditions of the LaTeX Project Public License, either version 1.3c diff --git a/Master/texmf-dist/doc/latex-dev/amsmath/amsmath.pdf b/Master/texmf-dist/doc/latex-dev/amsmath/amsmath.pdf index 573eae63034..03e3e61dbaf 100644 Binary files a/Master/texmf-dist/doc/latex-dev/amsmath/amsmath.pdf and b/Master/texmf-dist/doc/latex-dev/amsmath/amsmath.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/amsmath/amsopn.pdf b/Master/texmf-dist/doc/latex-dev/amsmath/amsopn.pdf index 8490b1221b0..62d6cde86ac 100644 Binary files a/Master/texmf-dist/doc/latex-dev/amsmath/amsopn.pdf and b/Master/texmf-dist/doc/latex-dev/amsmath/amsopn.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/amsmath/amstext.pdf b/Master/texmf-dist/doc/latex-dev/amsmath/amstext.pdf index 5040a866658..4f7c87a7d38 100644 Binary files a/Master/texmf-dist/doc/latex-dev/amsmath/amstext.pdf and b/Master/texmf-dist/doc/latex-dev/amsmath/amstext.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/amsmath/amsxtra.pdf b/Master/texmf-dist/doc/latex-dev/amsmath/amsxtra.pdf index 465fd83cef8..6e86c002b39 100644 Binary files a/Master/texmf-dist/doc/latex-dev/amsmath/amsxtra.pdf and b/Master/texmf-dist/doc/latex-dev/amsmath/amsxtra.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/amsmath/changes.txt b/Master/texmf-dist/doc/latex-dev/amsmath/changes.txt index e56758374dd..108d9b53836 100644 --- a/Master/texmf-dist/doc/latex-dev/amsmath/changes.txt +++ b/Master/texmf-dist/doc/latex-dev/amsmath/changes.txt @@ -1,7 +1,13 @@ -2024-11-05 David Carlisle +2025-01-18 Frank Mittelbach - * amsmath.dtx - Revert last \dots change (gh/1448) + * amsmath.dtx (section{Call some other packages}): + Indicate that amsgen is also loaded (already by amstext) (gh/1611) + +2025-01-11 Frank Mittelbach + + * amsmath.dtx (subsection{Implementing tags and labels}): + Correct 30 years old typo: \@arrayparboxrestore needs changing + not \@arrayboxrestore (gh/1608) ================================================================================ All changes above are only part of the development branch for the next release. diff --git a/Master/texmf-dist/doc/latex-dev/amsmath/subeqn.pdf b/Master/texmf-dist/doc/latex-dev/amsmath/subeqn.pdf index bec0ad6ebed..66ef17ebdae 100644 Binary files a/Master/texmf-dist/doc/latex-dev/amsmath/subeqn.pdf and b/Master/texmf-dist/doc/latex-dev/amsmath/subeqn.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/amsmath/technote.pdf b/Master/texmf-dist/doc/latex-dev/amsmath/technote.pdf index 6bce154b914..a1521bf3818 100644 Binary files a/Master/texmf-dist/doc/latex-dev/amsmath/technote.pdf and b/Master/texmf-dist/doc/latex-dev/amsmath/technote.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/amsmath/testmath.pdf b/Master/texmf-dist/doc/latex-dev/amsmath/testmath.pdf index bbe1ff8e9bc..7f91b31655d 100644 Binary files a/Master/texmf-dist/doc/latex-dev/amsmath/testmath.pdf and b/Master/texmf-dist/doc/latex-dev/amsmath/testmath.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/base/README.md b/Master/texmf-dist/doc/latex-dev/base/README.md index f4b059b6f1c..bd9e982b531 100644 --- a/Master/texmf-dist/doc/latex-dev/base/README.md +++ b/Master/texmf-dist/doc/latex-dev/base/README.md @@ -1,7 +1,7 @@ The LaTeX kernel ================ -Release 2025-06-01 pre-release 1 +Release 2025-06-01 pre-release 2 Overview -------- @@ -86,6 +86,6 @@ version 1.3c or later. ----- -

Copyright (C) 1989-2024 The LaTeX Project
+

Copyright (C) 1989-2025 The LaTeX Project
http://latex-project.org/
All rights reserved.

diff --git a/Master/texmf-dist/doc/latex-dev/base/alltt.pdf b/Master/texmf-dist/doc/latex-dev/base/alltt.pdf index ecc4dacebe4..8733ebb1109 100644 Binary files a/Master/texmf-dist/doc/latex-dev/base/alltt.pdf and b/Master/texmf-dist/doc/latex-dev/base/alltt.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/base/cfgguide.pdf b/Master/texmf-dist/doc/latex-dev/base/cfgguide.pdf index 3c4f5ac4bbc..95cf0712ed2 100644 Binary files a/Master/texmf-dist/doc/latex-dev/base/cfgguide.pdf and b/Master/texmf-dist/doc/latex-dev/base/cfgguide.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/base/cfgguide.tex b/Master/texmf-dist/doc/latex-dev/base/cfgguide.tex index 9b750593c4d..add73b10ed1 100644 --- a/Master/texmf-dist/doc/latex-dev/base/cfgguide.tex +++ b/Master/texmf-dist/doc/latex-dev/base/cfgguide.tex @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2024 +% Copyright (C) 1993-2025 % The LaTeX Project and any individual authors listed elsewhere % in this file. % diff --git a/Master/texmf-dist/doc/latex-dev/base/changes.txt b/Master/texmf-dist/doc/latex-dev/base/changes.txt index eaae544327b..f30aa91130d 100644 --- a/Master/texmf-dist/doc/latex-dev/base/changes.txt +++ b/Master/texmf-dist/doc/latex-dev/base/changes.txt @@ -6,6 +6,205 @@ to completeness or accuracy and it contains some references to files that are not part of the distribution. ================================================================================ +2025-02-21 Ulrike Fischer + * lttagging.dtx: move declaration of marginpar sockets from latex-lab into lttagging. + +2025-02-20 Frank Mittelbach + + * ltfssbas.dtx (section{Macros for setting up the tables}): + If necessary, load the .fd before checking the encoding subset (gh/1669) + +2025-02-19 Frank Mittelbach + + * ltoutput.dtx: + Replace the plug name floats-footnotes-space with + the correct one: floats-space-footnotes. + + +2025-02-17 Ulrike Fischer + * lttagging.dtx: add sockets for luamml support. + * lttagging.dtx: provide \MathCollectTrue, \MathCollectFalse + +2025-02-14 Frank Mittelbach + + * ltoutput.dtx: + Support output routine configuration through hooks and + sockets for use in packages. + + Add tagging sockets. + + Fix 2.09 bottom skip bug (but keep it in old documents). + +2025-02-11 Ulrike Fischer + + * ltoutenc.dtx + Log only text command/symbol redeclarations (gh/1242) + +2025-02-03 Frank Mittelbach + + * lthooks.dtx: + Document more prominently that using a hook with \UseHook or similar + commands requires that the hook to be declared first (gh/1519) + + +2025-02-01 Jonathan P. Spratte + + * ltcmd.dtx (subsection{User functions}): + Generalise \ProcessList by using \tl_map_tokens:nn instead of + \tl_map_function:nN. + +2025-01-31 Frank Mittelbach + + * latexrelease.dtx (subsection{Ignoring \texttt{\string_new} errors when rolling back}): + Silence \NewSocket and \NewSocketPlug in rollback + +2025-01-29 Frank Mittelbach + + * ltoutput.dtx (subsubsection{Float control}): + When floats are to be placed and a test fails, \@reqcolroom needs + to be reset to the value prior to the failed test (gh/1645) + +2025-01-23 Frank Mittelbach + + * ltoutput.dtx (subsection{Floats}): + * ltsect.dtx (subsection{Table of Contents etc.}): + Make \label, \index, and \glossary truely invisible + when typesetting (gh/1638) + +2025-01-23 Joseph Wright + * ltcmd.dtx, usrguide.tex + New "c"-type argument + +2025-01-22 David Carlisle + + * ltcounts.dtx, ltxref.dtx: + Allow * to denote the current counter (as used by \label) in counter + related commands, \alph*, \stepcounter*, etc. (gh/1632) + +2025-01-21 Frank Mittelbach + + * ltoutput.dtx (subsection{Floats}): + * ltsect.dtx (subsection{Table of Contents etc.}): + Support extended syntax for \label, \index, and \glossary (gh/311) + +2025-01-21 Joseph Wright + + * ltcmd.dtx: + Correct catcode of space/tab in v-type arg + Adjust handling of catcodes for letters in v-type arg + +2025-01-20 Joseph Wright + * lttemplates.dtx + Speed up set up of template code + +2025-01-15 Joseph Wright + * ltkeys.dtx + Parse global options only once per package (gh/1619) + +2025-01-13 Frank Mittelbach + + * lttemplates.dtx (subsection{User functions}): + Speed up common case of \SetTemplateKeys, i.e., when the + key/val list is empty. + +2025-01-11 Udi Fogiel + + * ltluatex.dtx (subsubsection{Handlers}): + Correct documentation about the return value + of the list handler + +2025-01-10 Frank Mittelbach + + * ltmarks.dtx (subsection{Updating mark structures}): + Do not expand mark content while debugging. + +2025-01-03 Frank Mittelbach + + * lthooks.dtx (subsubsection{Updating code for hooks}): + Correct example to use env/quote/begin instead of /before (gh/1599) + +2025-01-02 Frank Mittelbach + + * ltclass.dtx (subsection{Hooks}): + Do not make \AtBeginDocument preamble only (gh/1604) + +2024-12-27 Frank Mittelbach + + * ltsockets.dtx: + Add conditionals for sockets, plugs, and assignments (gh/1577) + +2024-12-25 Frank Mittelbach + + * doc.dtx (subsection{Producing the actual index entries}): + Describe that \levelchar and other reference macros can't be used in + \index entries that are used directly in the document and aren't hidden + inside other macros (because then no expansion happens) gh/1418 + +2024-12-23 Frank Mittelbach + + * docstrip.dtx (subsection{Batchfile commands}): + Check that the stream macro (with the name of a file to generate) is not + already used, e.g., as a declared preamble (gh/1150) + +2024-12-22 Frank Mittelbach + + * ltcmdhooks.dtx (subsection{Patching or delaying}): + Avoid defining command while adding a cmd hook (gh/1591) + +2024-12-21 Joseph Wright + * ltoutenc.dtx + Correct \=\i setup in T1 (gh/1587) + +2024-12-13 Maurice Hansen & Frank Mittelbach + + * ltfssaxes.dtx + Add numerous \DeclareFontSeriesChangeRule entries to support the full + range of weights (from 'ul' to 'ub') and widths (from 'uc' to 'ux'). + Minor modifications to the existing entries. (gh/1583) + +2024-12-11 Frank Mittelbach + + * ltfssaxes.dtx (subsection{Mapping rules for shape combinations}): + Add ssc shape change rules (gh/1581) + Also took the opportunity to provide better fallbacks for sw shape. + +2024-12-10 Yukai Chou + * ltxref.dtx (subsection{Cross Referencing}) + Replace \@tempa with \reserved@a in \Ref (gh/1579) + + +2024-12-03 Yukai Chou + * ltmarks.dtx (subsection{Allocating new mark classes}): + Fix inconsistent local/global assignment (gh/1574) + +2024-11-27 Frank Mittelbach + + * ltfssdcl.dtx (section{Interface Commands}): + Reset top-level alphabet definitions + only for the current math version (gh/1101 and gh/1028) + +2024-11-27 Yukai Chou + * clsguide.tex: + Add opt-arg to syntax of \Make...case + +2024-11-27 Joseph Wright + * usrguide.tex: + Add syntax of \Make...case + +2024-11-26 Frank Mittelbach + + * ltoutenc.dtx (subsubsection{Declaration commands}): + Log text command/symbol declarations (gh/1242) + + Alter error and info message in \DeclareTextComposite + +2024-11-26 Frank Mittelbach + + * lthooks.dtx (subsection{Specifying code for next invocation}): + Add debugging message into \AddToHookNext and friends (gh/1459) + + Slightly adjust messages in other places. + 2024-11-17 Frank Mittelbach * ltmarks.dtx (section{Public interfaces for packages such as \pkg{multicol}}): @@ -19,8 +218,8 @@ not part of the distribution. 2024-11-16 Frank Mittelbach * latex209.dtx: - Add low-level marks \mark1, \mark2, and \mark3 to mimic the fact that 2.09 initialized - the mark system with a set of empty marks + Add low-level marks \mark1, \mark2, and \mark3 to mimic the fact + that 2.09 initialized the mark system with a set of empty marks 2024-11-16 Frank Mittelbach @@ -59,7 +258,7 @@ not part of the distribution. 2024-11-06 Joseph Wright * ltoutenc.dtx - Add support for \={i} to OT1 and T1 + Add support for \={i} to OT1 and T1 (gh/1453) 2024-11-05 Ulrike Fischer * ltproperties.dtx: add missing variants (gh/1532). @@ -72,6 +271,15 @@ not part of the distribution. All changes above are only part of the development branch for the next release. ================================================================================ +######################### +# 2024-11-01 PL2 Release +######################### + +2025-01-26 Frank Mittelbach + + * ltlists.dtx: + Only migrate \@doendpe out of simple and semi-simple groups (gh/1641) + ######################### # 2024-11-01 PL1 Release ######################### @@ -246,7 +454,7 @@ All changes above are only part of the development branch for the next release. 2024-07-13 Frank Mittelbach * lttagging.dtx (subsection{Tagging support for table/tabular packages}): - Sockets for \cs{cline} leaders added (tagging/134) + Sockets for \cline leaders added (tagging/134) 2024-07-10 Frank Mittelbach @@ -901,7 +1109,7 @@ All changes above are only part of the development branch for the next release. 2022-11-14 Frank Mittelbach * latexrelease.dtx (subsection{Ignoring \texttt{\string_new} errors when rolling back}): - Silence \cs{NewMarkClass} in rollback (gh/955) + Silence \NewMarkClass in rollback (gh/955) 2022-11-13 Frank Mittelbach @@ -2095,7 +2303,7 @@ All changes above are only part of the development branch for the next release. 2020-12-10 Frank Mittelbach * ltbibl.dtx (section{Bibliography Generation}): - Delay any \cs{nocite} in the preamble instead of raising + Delay any \nocite in the preamble instead of raising an error (gh/424) 2020-12-06 Johannes Braams @@ -2659,7 +2867,7 @@ All changes above are only part of the development branch for the next release. 2020-03-07 Frank Mittelbach - * ltspace.dtx: Moved \cs{thinspace}, \cs{negthinspace} and \cs{,} to + * ltspace.dtx: Moved \thinspace, \negthinspace and \, to ltmath.dtx (gh/303) * ltmath.dtx (subsubsection{The UNSORTED Rest}): @@ -4696,7 +4904,7 @@ All changes above are only part of the development branch for the next release. 2003-08-27 Frank Mittelbach * ltpictur.dtx (section{Picture Mode}): - check for \cs{@linechar} being empty (pr/3570) + check for \@linechar being empty (pr/3570) (subsection{Curves}): added missing displacement (pr/3566) 2003-05-18 Frank Mittelbach @@ -4782,11 +4990,11 @@ All changes above are only part of the development branch for the next release. * ltvers.dtx: error message still talked about 1 year old sources being too old (though in fact it is 30 months) - * ltoutenc.dtx: Corrected \cs{c} for T1 (pr/3442) + * ltoutenc.dtx: Corrected \c for T1 (pr/3442) Added \cs{textbardbl} (pr/3400) - Definition of \textexclamdown changed (pr/3368) + Definition of \textexclamdown changed (pr/3368) Definition of \textquestiondown changed (pr/3368) - Changed def for \textregistered to avoid small caps (pr/3420) + Changed def for \textregistered to avoid small caps (pr/3420) 2002-06-16 Frank Mittelbach @@ -5093,8 +5301,8 @@ All changes above are only part of the development branch for the next release. 1999-12-08 Frank Mittelbach * ltoutenc.dtx (subsection{The fontenc package}): - Changed \cs{CYRRHOOK} and \cs{cyrrhook} to - \cs{CYRRHK} and \cs{cyrrhk} as name changed in the cyrillic + Changed \CYRRHOOK and \cyrrhook to + \CYRRHK and \cyrrhk as name changed in the cyrillic bundle for naming consistency with other ``hook'' glyphs. 1999-12-01 Frank Mittelbach @@ -5454,7 +5662,7 @@ All changes above are only part of the development branch for the next release. 1999-01-05 Rainer Schoepf * fontdef.dtx: Need special protection for character - \texttt{\char62} in \cs{changes} entry, as this is the makeindex + \char62 in \changes entry, as this is the makeindex actualchar. 1998-12-28 Rainer Schoepf @@ -5512,7 +5720,7 @@ All changes above are only part of the development branch for the next release. 1998-08-17 Rainer Schoepf - * (Various source files): Replaced old form `commandname by + * (Various source files): Replaced old form \cmd{\commandname} by \cs{commandname} in changes entries. * (Various source files): Replaced \cmd{\commandname} by @@ -7852,7 +8060,7 @@ All changes above are only part of the development branch for the next release. 1995-10-23 Rainer Schoepf * classes.dtx (subsubsection{Abstract}): Added setting of - \cs{beginparpenalty} to discourage page break before abstract + \beginparpenalty to discourage page break before abstract heading. 1995-10-22 Rainer Schoepf @@ -8858,8 +9066,8 @@ All changes above are only part of the development branch for the next release. * classes.dtx: replaced all \hbox to with \hb@xt@; replaced all constructs such as \arabic{enumi} with \@arabic\c@enumi (subsection{Footnotes}): Use \@width instead of width - (subsection{The title}): Use \cs{\@makefnmark} in definition of - \cs{@makefntext} + (subsection{The title}): Use \@makefnmark in definition of + \@makefntext Cleaned up the \changes entries 1995-05-17 David Carlisle @@ -10304,8 +10512,8 @@ All changes above are only part of the development branch for the next release. 1994-09-04 Alan Jeffrey - * inputenc.dtx: Added \cs{DeclareInputComposite} and the - \cs{ProvidesCommand}s to the encoding files. + * inputenc.dtx: Added \DeclareInputComposite and the + \ProvidesCommand's to the encoding files. Removed the definition of the accent slots in Latin-1. 1994-08-31 Alan Jeffrey @@ -12931,7 +13139,7 @@ All changes above are only part of the development branch for the next release. version in ltplain.dtx is no longer \outer. Comment out the experimental version of \@bsphack. - Remove test for \cs{inputlineno} undefined as it is + Remove test for \inputlineno undefined as it is defined in ltplain.dtx * ltplain.dtx: remove \outer from \newskip \newdimen \newwrite diff --git a/Master/texmf-dist/doc/latex-dev/base/classes.pdf b/Master/texmf-dist/doc/latex-dev/base/classes.pdf index fa405b9c2c0..83dd3674bf7 100644 Binary files a/Master/texmf-dist/doc/latex-dev/base/classes.pdf and b/Master/texmf-dist/doc/latex-dev/base/classes.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/base/clsguide-historic.pdf b/Master/texmf-dist/doc/latex-dev/base/clsguide-historic.pdf index af97aac9588..d4a9a3a99bb 100644 Binary files a/Master/texmf-dist/doc/latex-dev/base/clsguide-historic.pdf and b/Master/texmf-dist/doc/latex-dev/base/clsguide-historic.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/base/clsguide-historic.tex b/Master/texmf-dist/doc/latex-dev/base/clsguide-historic.tex index bb5e4b5e961..64ae5dcd988 100644 --- a/Master/texmf-dist/doc/latex-dev/base/clsguide-historic.tex +++ b/Master/texmf-dist/doc/latex-dev/base/clsguide-historic.tex @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2024 +% Copyright (C) 1993-2025 % The LaTeX Project and any individual authors listed elsewhere % in this file. % diff --git a/Master/texmf-dist/doc/latex-dev/base/clsguide.pdf b/Master/texmf-dist/doc/latex-dev/base/clsguide.pdf index 0bac9499d4a..2946f6252f5 100644 Binary files a/Master/texmf-dist/doc/latex-dev/base/clsguide.pdf and b/Master/texmf-dist/doc/latex-dev/base/clsguide.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/base/clsguide.tex b/Master/texmf-dist/doc/latex-dev/base/clsguide.tex index 1bc85999ae7..7b2c8d311be 100644 --- a/Master/texmf-dist/doc/latex-dev/base/clsguide.tex +++ b/Master/texmf-dist/doc/latex-dev/base/clsguide.tex @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 2023-2024 +% Copyright (C) 2023-2025 % The LaTeX Project and any individual authors listed elsewhere % in this file. % @@ -34,7 +34,7 @@ \usepackage{csquotes} \title{\LaTeX\ for package and class authors\\current version} -\author{\copyright~Copyright 2023--2024, \LaTeX\ Project Team.\\ +\author{\copyright~Copyright 2023--2025, \LaTeX\ Project Team.\\ All rights reserved.% \footnote{This file may distributed and/or modified under the conditions of the \LaTeX{} Project Public License, either version 1.3c @@ -42,7 +42,7 @@ \texttt{clsguide.tex} for full details.}% } -\date{2024-11-14} +\date{2025-02-20} \NewDocumentCommand\cs{m}{\texttt{\textbackslash\detokenize{#1}}} \NewDocumentCommand\marg{m}{\arg{#1}} @@ -55,6 +55,12 @@ \makeatother \providecommand\url[1]{\texttt{#1}} +\providecommand\hook[1]{\texttt{#1}} +\providecommand\socket[1]{\texttt{#1}} +\providecommand\plug[1]{\texttt{#1}} + + + \begin{document} \maketitle @@ -1147,16 +1153,16 @@ being used. This should be actual paper size, unlike |\textwidth| and \label{sec:case} \begin{decl} - |\MakeUppercase| \arg{text} \\ - |\MakeLowercase| \arg{text} \\ - |\MakeTitlecase| \arg{text} + |\MakeUppercase| \oarg{keyvals} \arg{text} \\ + |\MakeLowercase| \oarg{keyvals} \arg{text} \\ + |\MakeTitlecase| \oarg{keyvals} \arg{text} \end{decl} As described in \texttt{usrguide}, case changing for text should be carried out using the commands |\MakeUppercase|, |\MakeLowercase| and |\MakeTitlecase|. If you need to change the case of programmatic material, the team strongly suggest using the L3 programming layer commands in the -\texttt{str} module. If you do not wish to do this, you should use the \TeX{} +\texttt{l3str} module. If you do not wish to do this, you should use the \TeX{} |\uppercase| and |\lowercase| primitives \emph{in this situation only}. \subsection{Better user-defined math display environments} @@ -1450,6 +1456,118 @@ by \cs{refstepcounter}. \end{decl} This changes the name of the next target that will be created. + +\section{Configuring the Output routine} + +For nearly 40 years \LaTeX's output routine (the mechanism to paginate +the document and attach footnotes, floats and headers \& footers) was +a largely hardwired algorithm with a limited number of configuration +possibilities. Packages or classes that attempted to alter one or the +other aspect of the process had to overwrite the internals with the +usual problems: incompatibilities and out of date code whenever +something was changed in \LaTeX{}. + +To improve this situation and to support the production of accessible +PDF documents we started in 2024 to refactor the output routine and +have added a number of hooks and sockets, so that packages that want +to adjust the output routine can do so safely without the dangers +associated with that in the past. + +For packages, we implemented the following hooks: +\begin{description} +\item[\hook{build/page/before}, \hook{build/page/after}] + These two hooks enable packages to prepend or append code to + the page processing in the output routine. They are + implemented as mirrored hooks. + + Technically, they are executed at the start and the end of the + internal \LaTeXe{} \cs{@outputpage} command, respectively. A + number of packages alter that command to place code in exactly + these two places---they can now simply add their code to the + hooks instead. + +\item[\hook{build/page/reset}] + Packages that set up special conventions for text in the main + galley (such as catcode changes, etc.)\ can use this hook to + undo these changes within the output routine, so that they + aren't applied to unrelated material, e.g., the text for + running header or footers. + +\item[\hook{build/column/before}, \hook{build/column/after}] + These two hooks enable packages to prepend or append code to + the column processing in the output routine. They are + implemented as mirrored hooks. + + Technically, they are executed at the start and the end of the + internal \LaTeXe{} \cs{@makecol} command, respectively. A + number of packages alter \cs{@makecol} to place code in exactly + these two places---they can now simply add their code to the + hooks instead. +\end{description} + +We also added a number of sockets for configuring the algorithm and to +support tagging. One socket that is of interest for class files but +also for user in the document preamble is +\socket{build/column/outputbox}. It defines how the column text, the +column floats (top and bottom) and the footnotes are combined, +i.e. their order and spacing. To change the layout all one has to do +is to assign a different predefined plug to the socket with +\begin{flushleft} + \verb= \AssignSocketPlug{build/column/outputbox}{=\meta{plug-name}\verb=}= +\end{flushleft} +The predeclared plugs are the following: +\begin{description} +\item[\plug{space-footnotes-floats}] + + After the galley text there is a vertical \cs{vfill} + followed by the footnotes, followed by the bottom floats, if any. + +\item[\plug{footnotes-space-floats}] + + As before but the \cs{vfill} is between footnotes and floats. + +\item[\plug{floats-space-footnotes}] + + Floats are directly after the text, then a space and then footnotes + at the bottom. + +\item[\plug{space-floats-footnotes}] + + Both floats and footnotes are pushed to the bottom with footnotes + coming last.\footnote{There are two more permutations, but neither + of them has ever been requested so they aren't set up by default + --- doing that in a class would be trivial though.} + +\item[\plug{floats-footnotes}] + + All excess space is distributed across the existing + glue on the page, e.g., within the text galley, the + separation between blocks, etc. + The order is text, floats, footnotes. + +\item[\plug{footnotes-floats}] + + As the previous one but floats and footnotes are swapped. This is + the \LaTeX{} default for newer documents, i.e., this plug is + assigned to the socket when \cs{DocumentMetadata} is used. + +\item[\plug{footnotes-floats-legacy}] + + As the previous one but \LaTeX{}'s bottom skip bug is not + corrected, i.e., in ragged bottom designs where footnotes + are supposed to be directly attached to the text, they suddenly + appear at the bottom of the page when the page is ended with + \cs{newpage} or \cs{clearpage}. + While this is clearly a bug, it was the case since the days + of \LaTeX~2.09; thus for + compatibility we continue to support this behavior. +\end{description} +There are a few more configuration possibilities but they are so +specialized that we have only documented them in the \LaTeX{} source +in chapter 54 (which can be viewed with \texttt{texdoc source2e}). + + + \section{Commands superseded for new material} A small number of commands were introduced as part of \LaTeXe{} in the diff --git a/Master/texmf-dist/doc/latex-dev/base/cmfonts.pdf b/Master/texmf-dist/doc/latex-dev/base/cmfonts.pdf index e14c9655c1d..31e90836077 100644 Binary files a/Master/texmf-dist/doc/latex-dev/base/cmfonts.pdf and b/Master/texmf-dist/doc/latex-dev/base/cmfonts.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/base/cyrguide.pdf b/Master/texmf-dist/doc/latex-dev/base/cyrguide.pdf index df73a7ebfd1..500b9f37682 100644 Binary files a/Master/texmf-dist/doc/latex-dev/base/cyrguide.pdf and b/Master/texmf-dist/doc/latex-dev/base/cyrguide.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/base/cyrguide.tex b/Master/texmf-dist/doc/latex-dev/base/cyrguide.tex index 9a79a80e594..6f707e6cecd 100644 --- a/Master/texmf-dist/doc/latex-dev/base/cyrguide.tex +++ b/Master/texmf-dist/doc/latex-dev/base/cyrguide.tex @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2024 +% Copyright (C) 1993-2025 % The LaTeX Project and any individual authors listed elsewhere % in this file. % diff --git a/Master/texmf-dist/doc/latex-dev/base/doc-code.pdf b/Master/texmf-dist/doc/latex-dev/base/doc-code.pdf index f7dfd5ad0ea..dded9d4b0a7 100644 Binary files a/Master/texmf-dist/doc/latex-dev/base/doc-code.pdf and b/Master/texmf-dist/doc/latex-dev/base/doc-code.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/base/doc.pdf b/Master/texmf-dist/doc/latex-dev/base/doc.pdf index e166780852c..7fec5d75320 100644 Binary files a/Master/texmf-dist/doc/latex-dev/base/doc.pdf and b/Master/texmf-dist/doc/latex-dev/base/doc.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/base/docstrip.pdf b/Master/texmf-dist/doc/latex-dev/base/docstrip.pdf index 6ebce91252e..1f63ad237e1 100644 Binary files a/Master/texmf-dist/doc/latex-dev/base/docstrip.pdf and b/Master/texmf-dist/doc/latex-dev/base/docstrip.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/base/encguide.pdf b/Master/texmf-dist/doc/latex-dev/base/encguide.pdf index da50e9f3d69..9fd1d025a4c 100644 Binary files a/Master/texmf-dist/doc/latex-dev/base/encguide.pdf and b/Master/texmf-dist/doc/latex-dev/base/encguide.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/base/encguide.tex b/Master/texmf-dist/doc/latex-dev/base/encguide.tex index 11d968d2eaf..90cdfb3232a 100644 --- a/Master/texmf-dist/doc/latex-dev/base/encguide.tex +++ b/Master/texmf-dist/doc/latex-dev/base/encguide.tex @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2024 +% Copyright (C) 1993-2025 % The LaTeX Project and any individual authors listed elsewhere % in this file. % diff --git a/Master/texmf-dist/doc/latex-dev/base/exscale.pdf b/Master/texmf-dist/doc/latex-dev/base/exscale.pdf index acbb027a156..9405859930c 100644 Binary files a/Master/texmf-dist/doc/latex-dev/base/exscale.pdf and b/Master/texmf-dist/doc/latex-dev/base/exscale.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/base/fix-cm.pdf b/Master/texmf-dist/doc/latex-dev/base/fix-cm.pdf index 8166beca25d..c5fa90f5035 100644 Binary files a/Master/texmf-dist/doc/latex-dev/base/fix-cm.pdf and b/Master/texmf-dist/doc/latex-dev/base/fix-cm.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/base/fntguide.pdf b/Master/texmf-dist/doc/latex-dev/base/fntguide.pdf index 3d49609f2d6..ddd6ca1bb61 100644 Binary files a/Master/texmf-dist/doc/latex-dev/base/fntguide.pdf and b/Master/texmf-dist/doc/latex-dev/base/fntguide.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/base/fntguide.tex b/Master/texmf-dist/doc/latex-dev/base/fntguide.tex index 23471f6f88f..f266baf3562 100644 --- a/Master/texmf-dist/doc/latex-dev/base/fntguide.tex +++ b/Master/texmf-dist/doc/latex-dev/base/fntguide.tex @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2024 +% Copyright (C) 1993-2025 % % The LaTeX Project and any individual authors listed elsewhere % in this file. diff --git a/Master/texmf-dist/doc/latex-dev/base/graphpap.pdf b/Master/texmf-dist/doc/latex-dev/base/graphpap.pdf index 6f52e5faf36..662675249b7 100644 Binary files a/Master/texmf-dist/doc/latex-dev/base/graphpap.pdf and b/Master/texmf-dist/doc/latex-dev/base/graphpap.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/base/ifthen.pdf b/Master/texmf-dist/doc/latex-dev/base/ifthen.pdf index aae6904f769..dbc2ec650ae 100644 Binary files a/Master/texmf-dist/doc/latex-dev/base/ifthen.pdf and b/Master/texmf-dist/doc/latex-dev/base/ifthen.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/base/inputenc.pdf b/Master/texmf-dist/doc/latex-dev/base/inputenc.pdf index 36c67ac823d..a60de781165 100644 Binary files a/Master/texmf-dist/doc/latex-dev/base/inputenc.pdf and b/Master/texmf-dist/doc/latex-dev/base/inputenc.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/base/lamport-manual.pdf b/Master/texmf-dist/doc/latex-dev/base/lamport-manual.pdf index 4f9b0a9133c..fe8d3a71f12 100644 Binary files a/Master/texmf-dist/doc/latex-dev/base/lamport-manual.pdf and b/Master/texmf-dist/doc/latex-dev/base/lamport-manual.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/base/latexrelease.pdf b/Master/texmf-dist/doc/latex-dev/base/latexrelease.pdf index 79cc9500dbf..d23b1638125 100644 Binary files a/Master/texmf-dist/doc/latex-dev/base/latexrelease.pdf and b/Master/texmf-dist/doc/latex-dev/base/latexrelease.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/base/latexsym.pdf b/Master/texmf-dist/doc/latex-dev/base/latexsym.pdf index 34f097aa113..8b4b93b59c7 100644 Binary files a/Master/texmf-dist/doc/latex-dev/base/latexsym.pdf and b/Master/texmf-dist/doc/latex-dev/base/latexsym.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/base/lb2.pdf b/Master/texmf-dist/doc/latex-dev/base/lb2.pdf index 3d460faa263..2613141d08c 100644 Binary files a/Master/texmf-dist/doc/latex-dev/base/lb2.pdf and b/Master/texmf-dist/doc/latex-dev/base/lb2.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/base/letter.pdf b/Master/texmf-dist/doc/latex-dev/base/letter.pdf index f69e676b1db..d07a559f4cf 100644 Binary files a/Master/texmf-dist/doc/latex-dev/base/letter.pdf and b/Master/texmf-dist/doc/latex-dev/base/letter.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/base/lgc2.pdf b/Master/texmf-dist/doc/latex-dev/base/lgc2.pdf index d96037bb41a..dd175540e40 100644 Binary files a/Master/texmf-dist/doc/latex-dev/base/lgc2.pdf and b/Master/texmf-dist/doc/latex-dev/base/lgc2.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/base/lppl.pdf b/Master/texmf-dist/doc/latex-dev/base/lppl.pdf index f8250e860e7..d8466044cc5 100644 Binary files a/Master/texmf-dist/doc/latex-dev/base/lppl.pdf and b/Master/texmf-dist/doc/latex-dev/base/lppl.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/base/ltcmdhooks-code.pdf b/Master/texmf-dist/doc/latex-dev/base/ltcmdhooks-code.pdf index 94822005fd1..60e0b6b73be 100644 Binary files a/Master/texmf-dist/doc/latex-dev/base/ltcmdhooks-code.pdf and b/Master/texmf-dist/doc/latex-dev/base/ltcmdhooks-code.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/base/ltcmdhooks-doc.pdf b/Master/texmf-dist/doc/latex-dev/base/ltcmdhooks-doc.pdf index 01d29121729..46b35c870db 100644 Binary files a/Master/texmf-dist/doc/latex-dev/base/ltcmdhooks-doc.pdf and b/Master/texmf-dist/doc/latex-dev/base/ltcmdhooks-doc.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/base/ltfilehook-code.pdf b/Master/texmf-dist/doc/latex-dev/base/ltfilehook-code.pdf index 332fcc22afa..91e8d5eac95 100644 Binary files a/Master/texmf-dist/doc/latex-dev/base/ltfilehook-code.pdf and b/Master/texmf-dist/doc/latex-dev/base/ltfilehook-code.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/base/ltfilehook-doc.pdf b/Master/texmf-dist/doc/latex-dev/base/ltfilehook-doc.pdf index 05d2134cc00..cab4d782cb1 100644 Binary files a/Master/texmf-dist/doc/latex-dev/base/ltfilehook-doc.pdf and b/Master/texmf-dist/doc/latex-dev/base/ltfilehook-doc.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/base/lthooks-code.pdf b/Master/texmf-dist/doc/latex-dev/base/lthooks-code.pdf index 9b661395707..23945c54aa1 100644 Binary files a/Master/texmf-dist/doc/latex-dev/base/lthooks-code.pdf and b/Master/texmf-dist/doc/latex-dev/base/lthooks-code.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/base/lthooks-doc.pdf b/Master/texmf-dist/doc/latex-dev/base/lthooks-doc.pdf index b75967f3ad7..b5b3b3cb7eb 100644 Binary files a/Master/texmf-dist/doc/latex-dev/base/lthooks-doc.pdf and b/Master/texmf-dist/doc/latex-dev/base/lthooks-doc.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/base/ltluatex.pdf b/Master/texmf-dist/doc/latex-dev/base/ltluatex.pdf index be2c2f5016f..6b9a92b5348 100644 Binary files a/Master/texmf-dist/doc/latex-dev/base/ltluatex.pdf and b/Master/texmf-dist/doc/latex-dev/base/ltluatex.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/base/ltmarks-code.pdf b/Master/texmf-dist/doc/latex-dev/base/ltmarks-code.pdf index d3c3a29d140..31cd20d876b 100644 Binary files a/Master/texmf-dist/doc/latex-dev/base/ltmarks-code.pdf and b/Master/texmf-dist/doc/latex-dev/base/ltmarks-code.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/base/ltmarks-doc.pdf b/Master/texmf-dist/doc/latex-dev/base/ltmarks-doc.pdf index 489afeb36e9..58ced43f23b 100644 Binary files a/Master/texmf-dist/doc/latex-dev/base/ltmarks-doc.pdf and b/Master/texmf-dist/doc/latex-dev/base/ltmarks-doc.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews.pdf b/Master/texmf-dist/doc/latex-dev/base/ltnews.pdf index 55bd065b651..3ab0b4c2504 100644 Binary files a/Master/texmf-dist/doc/latex-dev/base/ltnews.pdf and b/Master/texmf-dist/doc/latex-dev/base/ltnews.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews.tex b/Master/texmf-dist/doc/latex-dev/base/ltnews.tex index a8ad937a307..18eea66b296 100644 --- a/Master/texmf-dist/doc/latex-dev/base/ltnews.tex +++ b/Master/texmf-dist/doc/latex-dev/base/ltnews.tex @@ -1,7 +1,7 @@ % \iffalse meta-comment % % Copyright (C) 2006, 2009, 2011, 2014 Heiko Oberdiek -% Copyright (C) 2014-2024 +% Copyright (C) 2014-2025 % The LaTeX Project and any individual authors listed elsewhere % in this file. % diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews01.pdf b/Master/texmf-dist/doc/latex-dev/base/ltnews01.pdf index 8b3ca1c7bdb..836d69f769a 100644 Binary files a/Master/texmf-dist/doc/latex-dev/base/ltnews01.pdf and b/Master/texmf-dist/doc/latex-dev/base/ltnews01.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews01.tex b/Master/texmf-dist/doc/latex-dev/base/ltnews01.tex index 5c46b0450ea..6bae53570f8 100644 --- a/Master/texmf-dist/doc/latex-dev/base/ltnews01.tex +++ b/Master/texmf-dist/doc/latex-dev/base/ltnews01.tex @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2024 +% Copyright (C) 1993-2025 % The LaTeX Project and any individual authors listed elsewhere % in this file. % diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews02.pdf b/Master/texmf-dist/doc/latex-dev/base/ltnews02.pdf index eff09ff7535..2b817e54a30 100644 Binary files a/Master/texmf-dist/doc/latex-dev/base/ltnews02.pdf and b/Master/texmf-dist/doc/latex-dev/base/ltnews02.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews02.tex b/Master/texmf-dist/doc/latex-dev/base/ltnews02.tex index d91af6f8b1d..10668a0dfbb 100644 --- a/Master/texmf-dist/doc/latex-dev/base/ltnews02.tex +++ b/Master/texmf-dist/doc/latex-dev/base/ltnews02.tex @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2024 +% Copyright (C) 1993-2025 % The LaTeX Project and any individual authors listed elsewhere % in this file. % diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews03.pdf b/Master/texmf-dist/doc/latex-dev/base/ltnews03.pdf index a0f4fd3d709..944f6e58ee7 100644 Binary files a/Master/texmf-dist/doc/latex-dev/base/ltnews03.pdf and b/Master/texmf-dist/doc/latex-dev/base/ltnews03.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews03.tex b/Master/texmf-dist/doc/latex-dev/base/ltnews03.tex index 22533b9faed..8c68b7a6faf 100644 --- a/Master/texmf-dist/doc/latex-dev/base/ltnews03.tex +++ b/Master/texmf-dist/doc/latex-dev/base/ltnews03.tex @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2024 +% Copyright (C) 1993-2025 % The LaTeX Project and any individual authors listed elsewhere % in this file. % diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews04.pdf b/Master/texmf-dist/doc/latex-dev/base/ltnews04.pdf index 3058c3586fa..7e610093a1d 100644 Binary files a/Master/texmf-dist/doc/latex-dev/base/ltnews04.pdf and b/Master/texmf-dist/doc/latex-dev/base/ltnews04.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews04.tex b/Master/texmf-dist/doc/latex-dev/base/ltnews04.tex index c1b474bca61..ba0ccbafed6 100644 --- a/Master/texmf-dist/doc/latex-dev/base/ltnews04.tex +++ b/Master/texmf-dist/doc/latex-dev/base/ltnews04.tex @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2024 +% Copyright (C) 1993-2025 % The LaTeX Project and any individual authors listed elsewhere % in this file. % diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews05.pdf b/Master/texmf-dist/doc/latex-dev/base/ltnews05.pdf index c4d8e08fb56..475917f8434 100644 Binary files a/Master/texmf-dist/doc/latex-dev/base/ltnews05.pdf and b/Master/texmf-dist/doc/latex-dev/base/ltnews05.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews05.tex b/Master/texmf-dist/doc/latex-dev/base/ltnews05.tex index 3254b428e32..a500a087712 100644 --- a/Master/texmf-dist/doc/latex-dev/base/ltnews05.tex +++ b/Master/texmf-dist/doc/latex-dev/base/ltnews05.tex @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2024 +% Copyright (C) 1993-2025 % The LaTeX Project and any individual authors listed elsewhere % in this file. % diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews06.pdf b/Master/texmf-dist/doc/latex-dev/base/ltnews06.pdf index 6b3310c6c54..0699f147401 100644 Binary files a/Master/texmf-dist/doc/latex-dev/base/ltnews06.pdf and b/Master/texmf-dist/doc/latex-dev/base/ltnews06.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews06.tex b/Master/texmf-dist/doc/latex-dev/base/ltnews06.tex index 9830e55055a..76542301b09 100644 --- a/Master/texmf-dist/doc/latex-dev/base/ltnews06.tex +++ b/Master/texmf-dist/doc/latex-dev/base/ltnews06.tex @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2024 +% Copyright (C) 1993-2025 % The LaTeX Project and any individual authors listed elsewhere % in this file. % diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews07.pdf b/Master/texmf-dist/doc/latex-dev/base/ltnews07.pdf index db1a10c1716..f8b8ddf04eb 100644 Binary files a/Master/texmf-dist/doc/latex-dev/base/ltnews07.pdf and b/Master/texmf-dist/doc/latex-dev/base/ltnews07.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews07.tex b/Master/texmf-dist/doc/latex-dev/base/ltnews07.tex index 75bbaba7154..f8c779e99dc 100644 --- a/Master/texmf-dist/doc/latex-dev/base/ltnews07.tex +++ b/Master/texmf-dist/doc/latex-dev/base/ltnews07.tex @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2024 +% Copyright (C) 1993-2025 % The LaTeX Project and any individual authors listed elsewhere % in this file. % diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews08.pdf b/Master/texmf-dist/doc/latex-dev/base/ltnews08.pdf index 2886fced8f5..f8684a57b23 100644 Binary files a/Master/texmf-dist/doc/latex-dev/base/ltnews08.pdf and b/Master/texmf-dist/doc/latex-dev/base/ltnews08.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews08.tex b/Master/texmf-dist/doc/latex-dev/base/ltnews08.tex index 540e14c33f3..c1edc3057be 100644 --- a/Master/texmf-dist/doc/latex-dev/base/ltnews08.tex +++ b/Master/texmf-dist/doc/latex-dev/base/ltnews08.tex @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2024 +% Copyright (C) 1993-2025 % The LaTeX Project and any individual authors listed elsewhere % in this file. % diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews09.pdf b/Master/texmf-dist/doc/latex-dev/base/ltnews09.pdf index 96dbd956d0c..3dd7f474691 100644 Binary files a/Master/texmf-dist/doc/latex-dev/base/ltnews09.pdf and b/Master/texmf-dist/doc/latex-dev/base/ltnews09.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews09.tex b/Master/texmf-dist/doc/latex-dev/base/ltnews09.tex index 6b932f8f3e9..a051fb41140 100644 --- a/Master/texmf-dist/doc/latex-dev/base/ltnews09.tex +++ b/Master/texmf-dist/doc/latex-dev/base/ltnews09.tex @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2024 +% Copyright (C) 1993-2025 % The LaTeX Project and any individual authors listed elsewhere % in this file. % diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews10.pdf b/Master/texmf-dist/doc/latex-dev/base/ltnews10.pdf index c25b6857766..1f636d5dee1 100644 Binary files a/Master/texmf-dist/doc/latex-dev/base/ltnews10.pdf and b/Master/texmf-dist/doc/latex-dev/base/ltnews10.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews10.tex b/Master/texmf-dist/doc/latex-dev/base/ltnews10.tex index e4925794d5a..c306bba272b 100644 --- a/Master/texmf-dist/doc/latex-dev/base/ltnews10.tex +++ b/Master/texmf-dist/doc/latex-dev/base/ltnews10.tex @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2024 +% Copyright (C) 1993-2025 % The LaTeX Project and any individual authors listed elsewhere % in this file. % diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews11.pdf b/Master/texmf-dist/doc/latex-dev/base/ltnews11.pdf index f7f653c8e54..7fb4207188f 100644 Binary files a/Master/texmf-dist/doc/latex-dev/base/ltnews11.pdf and b/Master/texmf-dist/doc/latex-dev/base/ltnews11.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews11.tex b/Master/texmf-dist/doc/latex-dev/base/ltnews11.tex index 70810e7b090..af31eebc2c9 100644 --- a/Master/texmf-dist/doc/latex-dev/base/ltnews11.tex +++ b/Master/texmf-dist/doc/latex-dev/base/ltnews11.tex @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2024 +% Copyright (C) 1993-2025 % The LaTeX Project and any individual authors listed elsewhere % in this file. % diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews12.pdf b/Master/texmf-dist/doc/latex-dev/base/ltnews12.pdf index 084f4be64f6..5d2be95b6d0 100644 Binary files a/Master/texmf-dist/doc/latex-dev/base/ltnews12.pdf and b/Master/texmf-dist/doc/latex-dev/base/ltnews12.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews12.tex b/Master/texmf-dist/doc/latex-dev/base/ltnews12.tex index 92d484333c7..4de54f5b7f4 100644 --- a/Master/texmf-dist/doc/latex-dev/base/ltnews12.tex +++ b/Master/texmf-dist/doc/latex-dev/base/ltnews12.tex @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2024 +% Copyright (C) 1993-2025 % The LaTeX Project and any individual authors listed elsewhere % in this file. % diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews13.pdf b/Master/texmf-dist/doc/latex-dev/base/ltnews13.pdf index 84a70f6b8f0..fa23f6b5cd9 100644 Binary files a/Master/texmf-dist/doc/latex-dev/base/ltnews13.pdf and b/Master/texmf-dist/doc/latex-dev/base/ltnews13.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews13.tex b/Master/texmf-dist/doc/latex-dev/base/ltnews13.tex index 278bec28b08..39683358779 100644 --- a/Master/texmf-dist/doc/latex-dev/base/ltnews13.tex +++ b/Master/texmf-dist/doc/latex-dev/base/ltnews13.tex @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2024 +% Copyright (C) 1993-2025 % The LaTeX Project and any individual authors listed elsewhere % in this file. % diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews14.pdf b/Master/texmf-dist/doc/latex-dev/base/ltnews14.pdf index f637b470210..ba8fbc732a1 100644 Binary files a/Master/texmf-dist/doc/latex-dev/base/ltnews14.pdf and b/Master/texmf-dist/doc/latex-dev/base/ltnews14.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews14.tex b/Master/texmf-dist/doc/latex-dev/base/ltnews14.tex index 2d767890e06..e14e0adbffd 100644 --- a/Master/texmf-dist/doc/latex-dev/base/ltnews14.tex +++ b/Master/texmf-dist/doc/latex-dev/base/ltnews14.tex @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2024 +% Copyright (C) 1993-2025 % The LaTeX Project and any individual authors listed elsewhere % in this file. % diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews15.pdf b/Master/texmf-dist/doc/latex-dev/base/ltnews15.pdf index 93193830545..8ad733d0155 100644 Binary files a/Master/texmf-dist/doc/latex-dev/base/ltnews15.pdf and b/Master/texmf-dist/doc/latex-dev/base/ltnews15.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews15.tex b/Master/texmf-dist/doc/latex-dev/base/ltnews15.tex index 9e281e8e0ef..c9d774166b9 100644 --- a/Master/texmf-dist/doc/latex-dev/base/ltnews15.tex +++ b/Master/texmf-dist/doc/latex-dev/base/ltnews15.tex @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2024 +% Copyright (C) 1993-2025 % The LaTeX Project and any individual authors listed elsewhere % in this file. % diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews16.pdf b/Master/texmf-dist/doc/latex-dev/base/ltnews16.pdf index a8836898132..fa575d94faf 100644 Binary files a/Master/texmf-dist/doc/latex-dev/base/ltnews16.pdf and b/Master/texmf-dist/doc/latex-dev/base/ltnews16.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews16.tex b/Master/texmf-dist/doc/latex-dev/base/ltnews16.tex index 8606cffe99c..5330bcb24ce 100644 --- a/Master/texmf-dist/doc/latex-dev/base/ltnews16.tex +++ b/Master/texmf-dist/doc/latex-dev/base/ltnews16.tex @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2024 +% Copyright (C) 1993-2025 % The LaTeX Project and any individual authors listed elsewhere % in this file. % diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews17.pdf b/Master/texmf-dist/doc/latex-dev/base/ltnews17.pdf index c22fcf1056d..a1453fc2141 100644 Binary files a/Master/texmf-dist/doc/latex-dev/base/ltnews17.pdf and b/Master/texmf-dist/doc/latex-dev/base/ltnews17.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews17.tex b/Master/texmf-dist/doc/latex-dev/base/ltnews17.tex index 8af30edac8d..6458a66af26 100644 --- a/Master/texmf-dist/doc/latex-dev/base/ltnews17.tex +++ b/Master/texmf-dist/doc/latex-dev/base/ltnews17.tex @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2024 +% Copyright (C) 1993-2025 % The LaTeX Project and any individual authors listed elsewhere % in this file. % diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews18.pdf b/Master/texmf-dist/doc/latex-dev/base/ltnews18.pdf index 703cf1ed6cc..ce1e88c9489 100644 Binary files a/Master/texmf-dist/doc/latex-dev/base/ltnews18.pdf and b/Master/texmf-dist/doc/latex-dev/base/ltnews18.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews18.tex b/Master/texmf-dist/doc/latex-dev/base/ltnews18.tex index 5bca87ddd1f..f514d38cee7 100644 --- a/Master/texmf-dist/doc/latex-dev/base/ltnews18.tex +++ b/Master/texmf-dist/doc/latex-dev/base/ltnews18.tex @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2024 +% Copyright (C) 1993-2025 % The LaTeX Project and any individual authors listed elsewhere % in this file. % diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews19.pdf b/Master/texmf-dist/doc/latex-dev/base/ltnews19.pdf index 55336793f18..c474854e474 100644 Binary files a/Master/texmf-dist/doc/latex-dev/base/ltnews19.pdf and b/Master/texmf-dist/doc/latex-dev/base/ltnews19.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews19.tex b/Master/texmf-dist/doc/latex-dev/base/ltnews19.tex index 5a18300cc2f..234c9308deb 100644 --- a/Master/texmf-dist/doc/latex-dev/base/ltnews19.tex +++ b/Master/texmf-dist/doc/latex-dev/base/ltnews19.tex @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2024 +% Copyright (C) 1993-2025 % The LaTeX Project and any individual authors listed elsewhere % in this file. % diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews20.pdf b/Master/texmf-dist/doc/latex-dev/base/ltnews20.pdf index 6e5b5668c84..661ea46e764 100644 Binary files a/Master/texmf-dist/doc/latex-dev/base/ltnews20.pdf and b/Master/texmf-dist/doc/latex-dev/base/ltnews20.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews20.tex b/Master/texmf-dist/doc/latex-dev/base/ltnews20.tex index 6d31e1f56cf..63171521ae5 100644 --- a/Master/texmf-dist/doc/latex-dev/base/ltnews20.tex +++ b/Master/texmf-dist/doc/latex-dev/base/ltnews20.tex @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2024 +% Copyright (C) 1993-2025 % The LaTeX Project and any individual authors listed elsewhere % in this file. % diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews21.pdf b/Master/texmf-dist/doc/latex-dev/base/ltnews21.pdf index 68f2fddea22..b12c722cbf2 100644 Binary files a/Master/texmf-dist/doc/latex-dev/base/ltnews21.pdf and b/Master/texmf-dist/doc/latex-dev/base/ltnews21.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews21.tex b/Master/texmf-dist/doc/latex-dev/base/ltnews21.tex index 16319e56d7a..7d0bc4e564d 100644 --- a/Master/texmf-dist/doc/latex-dev/base/ltnews21.tex +++ b/Master/texmf-dist/doc/latex-dev/base/ltnews21.tex @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 2019-2024 +% Copyright (C) 2019-2025 % The LaTeX Project and any individual authors listed elsewhere % in this file. % diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews22.pdf b/Master/texmf-dist/doc/latex-dev/base/ltnews22.pdf index 627ff948176..411b4925aca 100644 Binary files a/Master/texmf-dist/doc/latex-dev/base/ltnews22.pdf and b/Master/texmf-dist/doc/latex-dev/base/ltnews22.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews22.tex b/Master/texmf-dist/doc/latex-dev/base/ltnews22.tex index 4a5f70bdb68..97353b93bd2 100644 --- a/Master/texmf-dist/doc/latex-dev/base/ltnews22.tex +++ b/Master/texmf-dist/doc/latex-dev/base/ltnews22.tex @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 2015-2024 +% Copyright (C) 2015-2025 % The LaTeX Project and any individual authors listed elsewhere % in this file. % diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews23.pdf b/Master/texmf-dist/doc/latex-dev/base/ltnews23.pdf index e33d27f9dc6..b8e29e78842 100644 Binary files a/Master/texmf-dist/doc/latex-dev/base/ltnews23.pdf and b/Master/texmf-dist/doc/latex-dev/base/ltnews23.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews23.tex b/Master/texmf-dist/doc/latex-dev/base/ltnews23.tex index 6eaaa08fd68..9e0e8fe9470 100644 --- a/Master/texmf-dist/doc/latex-dev/base/ltnews23.tex +++ b/Master/texmf-dist/doc/latex-dev/base/ltnews23.tex @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 2015-2024 +% Copyright (C) 2015-2025 % The LaTeX Project and any individual authors listed elsewhere % in this file. % diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews24.pdf b/Master/texmf-dist/doc/latex-dev/base/ltnews24.pdf index 838b93a49b8..99bc0a54077 100644 Binary files a/Master/texmf-dist/doc/latex-dev/base/ltnews24.pdf and b/Master/texmf-dist/doc/latex-dev/base/ltnews24.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews24.tex b/Master/texmf-dist/doc/latex-dev/base/ltnews24.tex index d34669098a4..2a488531050 100644 --- a/Master/texmf-dist/doc/latex-dev/base/ltnews24.tex +++ b/Master/texmf-dist/doc/latex-dev/base/ltnews24.tex @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 2015-2024 +% Copyright (C) 2015-2025 % The LaTeX Project and any individual authors listed elsewhere % in this file. % diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews25.pdf b/Master/texmf-dist/doc/latex-dev/base/ltnews25.pdf index 68c197f50fe..c727a5082ed 100644 Binary files a/Master/texmf-dist/doc/latex-dev/base/ltnews25.pdf and b/Master/texmf-dist/doc/latex-dev/base/ltnews25.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews25.tex b/Master/texmf-dist/doc/latex-dev/base/ltnews25.tex index 4a168fee7bc..dbf8b1c7498 100644 --- a/Master/texmf-dist/doc/latex-dev/base/ltnews25.tex +++ b/Master/texmf-dist/doc/latex-dev/base/ltnews25.tex @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 2016-2024 +% Copyright (C) 2016-2025 % The LaTeX Project and any individual authors listed elsewhere % in this file. % diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews26.pdf b/Master/texmf-dist/doc/latex-dev/base/ltnews26.pdf index 37cc4c254c3..7c80e94d32f 100644 Binary files a/Master/texmf-dist/doc/latex-dev/base/ltnews26.pdf and b/Master/texmf-dist/doc/latex-dev/base/ltnews26.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews26.tex b/Master/texmf-dist/doc/latex-dev/base/ltnews26.tex index 7ce1b7bd142..cf06e5b140b 100644 --- a/Master/texmf-dist/doc/latex-dev/base/ltnews26.tex +++ b/Master/texmf-dist/doc/latex-dev/base/ltnews26.tex @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 2017-2024 +% Copyright (C) 2017-2025 % The LaTeX Project and any individual authors listed elsewhere % in this file. % diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews27.pdf b/Master/texmf-dist/doc/latex-dev/base/ltnews27.pdf index 3321672f712..3c5db215a0b 100644 Binary files a/Master/texmf-dist/doc/latex-dev/base/ltnews27.pdf and b/Master/texmf-dist/doc/latex-dev/base/ltnews27.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews27.tex b/Master/texmf-dist/doc/latex-dev/base/ltnews27.tex index 44407da76fe..a4012e57b3c 100644 --- a/Master/texmf-dist/doc/latex-dev/base/ltnews27.tex +++ b/Master/texmf-dist/doc/latex-dev/base/ltnews27.tex @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 2017-2024 +% Copyright (C) 2017-2025 % The LaTeX Project and any individual authors listed elsewhere % in this file. % diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews28.pdf b/Master/texmf-dist/doc/latex-dev/base/ltnews28.pdf index 1e931bdbafd..0938fdcde87 100644 Binary files a/Master/texmf-dist/doc/latex-dev/base/ltnews28.pdf and b/Master/texmf-dist/doc/latex-dev/base/ltnews28.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews28.tex b/Master/texmf-dist/doc/latex-dev/base/ltnews28.tex index dffd0d20a1e..6e13f261070 100644 --- a/Master/texmf-dist/doc/latex-dev/base/ltnews28.tex +++ b/Master/texmf-dist/doc/latex-dev/base/ltnews28.tex @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 2017-2024 +% Copyright (C) 2017-2025 % The LaTeX Project and any individual authors listed elsewhere % in this file. % diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews29.pdf b/Master/texmf-dist/doc/latex-dev/base/ltnews29.pdf index 1801bd72df0..d9733099e3b 100644 Binary files a/Master/texmf-dist/doc/latex-dev/base/ltnews29.pdf and b/Master/texmf-dist/doc/latex-dev/base/ltnews29.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews29.tex b/Master/texmf-dist/doc/latex-dev/base/ltnews29.tex index b201c491804..2c8b12df0e3 100644 --- a/Master/texmf-dist/doc/latex-dev/base/ltnews29.tex +++ b/Master/texmf-dist/doc/latex-dev/base/ltnews29.tex @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 2018-2024 +% Copyright (C) 2018-2025 % The LaTeX Project and any individual authors listed elsewhere % in this file. % diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews30.pdf b/Master/texmf-dist/doc/latex-dev/base/ltnews30.pdf index c12cf9d1fe1..a325cf4336c 100644 Binary files a/Master/texmf-dist/doc/latex-dev/base/ltnews30.pdf and b/Master/texmf-dist/doc/latex-dev/base/ltnews30.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews30.tex b/Master/texmf-dist/doc/latex-dev/base/ltnews30.tex index 97d2e9d890c..940af7a065e 100644 --- a/Master/texmf-dist/doc/latex-dev/base/ltnews30.tex +++ b/Master/texmf-dist/doc/latex-dev/base/ltnews30.tex @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 2019-2024 +% Copyright (C) 2019-2025 % The LaTeX Project and any individual authors listed elsewhere % in this file. % diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews31.pdf b/Master/texmf-dist/doc/latex-dev/base/ltnews31.pdf index efa4e2c3862..8cd825df083 100644 Binary files a/Master/texmf-dist/doc/latex-dev/base/ltnews31.pdf and b/Master/texmf-dist/doc/latex-dev/base/ltnews31.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews31.tex b/Master/texmf-dist/doc/latex-dev/base/ltnews31.tex index c1b81e52bec..32015c49fa0 100644 --- a/Master/texmf-dist/doc/latex-dev/base/ltnews31.tex +++ b/Master/texmf-dist/doc/latex-dev/base/ltnews31.tex @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 2019-2024 +% Copyright (C) 2019-2025 % The LaTeX Project and any individual authors listed elsewhere % in this file. % diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews32.pdf b/Master/texmf-dist/doc/latex-dev/base/ltnews32.pdf index c28660c1b0f..7556bf10196 100644 Binary files a/Master/texmf-dist/doc/latex-dev/base/ltnews32.pdf and b/Master/texmf-dist/doc/latex-dev/base/ltnews32.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews32.tex b/Master/texmf-dist/doc/latex-dev/base/ltnews32.tex index ccc5feff77a..85e245d1363 100644 --- a/Master/texmf-dist/doc/latex-dev/base/ltnews32.tex +++ b/Master/texmf-dist/doc/latex-dev/base/ltnews32.tex @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 2019-2024 +% Copyright (C) 2019-2025 % The LaTeX Project and any individual authors listed elsewhere % in this file. % diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews33.pdf b/Master/texmf-dist/doc/latex-dev/base/ltnews33.pdf index 8fa0427ff09..c227ac4c5ca 100644 Binary files a/Master/texmf-dist/doc/latex-dev/base/ltnews33.pdf and b/Master/texmf-dist/doc/latex-dev/base/ltnews33.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews33.tex b/Master/texmf-dist/doc/latex-dev/base/ltnews33.tex index 83e8a90c441..d473df1e15c 100644 --- a/Master/texmf-dist/doc/latex-dev/base/ltnews33.tex +++ b/Master/texmf-dist/doc/latex-dev/base/ltnews33.tex @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 2019-2024 +% Copyright (C) 2019-2025 % The LaTeX Project and any individual authors listed elsewhere % in this file. % diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews34.pdf b/Master/texmf-dist/doc/latex-dev/base/ltnews34.pdf index 150ab4c585a..fb38523eb6f 100644 Binary files a/Master/texmf-dist/doc/latex-dev/base/ltnews34.pdf and b/Master/texmf-dist/doc/latex-dev/base/ltnews34.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews34.tex b/Master/texmf-dist/doc/latex-dev/base/ltnews34.tex index 889531fe782..03fdbfebdb4 100644 --- a/Master/texmf-dist/doc/latex-dev/base/ltnews34.tex +++ b/Master/texmf-dist/doc/latex-dev/base/ltnews34.tex @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 2019-2024 +% Copyright (C) 2019-2025 % The LaTeX Project and any individual authors listed elsewhere % in this file. % @@ -276,7 +276,7 @@ supports the following important use case \noindent without the need to first test whether the package is already loaded. % -\githubissue{623} +\githubissue{626} \subsection{Clearing extra hook code for the next invocation} diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews35.pdf b/Master/texmf-dist/doc/latex-dev/base/ltnews35.pdf index 6393eebac40..11a19c0a134 100644 Binary files a/Master/texmf-dist/doc/latex-dev/base/ltnews35.pdf and b/Master/texmf-dist/doc/latex-dev/base/ltnews35.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews35.tex b/Master/texmf-dist/doc/latex-dev/base/ltnews35.tex index d8c985b8131..501b5815dce 100644 --- a/Master/texmf-dist/doc/latex-dev/base/ltnews35.tex +++ b/Master/texmf-dist/doc/latex-dev/base/ltnews35.tex @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 2021-2024 +% Copyright (C) 2021-2025 % The LaTeX Project and any individual authors listed elsewhere % in this file. % diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews36.pdf b/Master/texmf-dist/doc/latex-dev/base/ltnews36.pdf index 4d6c0a164d9..cfe4210ba19 100644 Binary files a/Master/texmf-dist/doc/latex-dev/base/ltnews36.pdf and b/Master/texmf-dist/doc/latex-dev/base/ltnews36.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews36.tex b/Master/texmf-dist/doc/latex-dev/base/ltnews36.tex index fdd830d8708..cb45d7811b7 100644 --- a/Master/texmf-dist/doc/latex-dev/base/ltnews36.tex +++ b/Master/texmf-dist/doc/latex-dev/base/ltnews36.tex @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 2021-2024 +% Copyright (C) 2021-2025 % The LaTeX Project and any individual authors listed elsewhere % in this file. % diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews37.pdf b/Master/texmf-dist/doc/latex-dev/base/ltnews37.pdf index ff7b4e73fef..f9f011af360 100644 Binary files a/Master/texmf-dist/doc/latex-dev/base/ltnews37.pdf and b/Master/texmf-dist/doc/latex-dev/base/ltnews37.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews37.tex b/Master/texmf-dist/doc/latex-dev/base/ltnews37.tex index 1efb0a5127c..3fc9ac122cf 100644 --- a/Master/texmf-dist/doc/latex-dev/base/ltnews37.tex +++ b/Master/texmf-dist/doc/latex-dev/base/ltnews37.tex @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 2021-2024 +% Copyright (C) 2021-2025 % The LaTeX Project and any individual authors listed elsewhere % in this file. % diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews38.pdf b/Master/texmf-dist/doc/latex-dev/base/ltnews38.pdf index fb7905bde62..9f459015bd0 100644 Binary files a/Master/texmf-dist/doc/latex-dev/base/ltnews38.pdf and b/Master/texmf-dist/doc/latex-dev/base/ltnews38.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews39.pdf b/Master/texmf-dist/doc/latex-dev/base/ltnews39.pdf index 9c339f0602b..f2179054b69 100644 Binary files a/Master/texmf-dist/doc/latex-dev/base/ltnews39.pdf and b/Master/texmf-dist/doc/latex-dev/base/ltnews39.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews40.pdf b/Master/texmf-dist/doc/latex-dev/base/ltnews40.pdf index d2a6ee47730..7fda0dcafc2 100644 Binary files a/Master/texmf-dist/doc/latex-dev/base/ltnews40.pdf and b/Master/texmf-dist/doc/latex-dev/base/ltnews40.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews40.tex b/Master/texmf-dist/doc/latex-dev/base/ltnews40.tex index 54e164f7c9b..d5934c0aa10 100644 --- a/Master/texmf-dist/doc/latex-dev/base/ltnews40.tex +++ b/Master/texmf-dist/doc/latex-dev/base/ltnews40.tex @@ -461,7 +461,7 @@ been corrected and the warnings are suppressed. % \githubissue{1380} -\subsection{Improved error raised by empty hook} +\subsection{Improved error raised for empty hook name} When using the hook management, both hook and label names (if specified) should be non-empty. Before, empty hook and empty label names both @@ -470,9 +470,9 @@ raised the same label-specific error: ! LaTeX hooks Error: Empty code label on line .. Using 'top-level' instead. \end{verbatim} -This has now been improved. Now an empty hook raises +This has now been improved. Now an empty hook name generates \begin{verbatim} -! LaTeX hooks Error: Empty hook on line .. +! LaTeX hooks Error: Empty hook name on line .. \end{verbatim} % \githubissue{1423} diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews41.pdf b/Master/texmf-dist/doc/latex-dev/base/ltnews41.pdf index 43b52dbae35..5e6f863777e 100644 Binary files a/Master/texmf-dist/doc/latex-dev/base/ltnews41.pdf and b/Master/texmf-dist/doc/latex-dev/base/ltnews41.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews41.tex b/Master/texmf-dist/doc/latex-dev/base/ltnews41.tex index e38df10d8f2..b773764faf2 100644 --- a/Master/texmf-dist/doc/latex-dev/base/ltnews41.tex +++ b/Master/texmf-dist/doc/latex-dev/base/ltnews41.tex @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright 2024 +% Copyright 2024-2025 % The LaTeX Project and any individual authors listed elsewhere % in this file. % @@ -50,6 +50,8 @@ \usepackage{color} \providecommand\hook[1]{\texttt{#1}} +\providecommand\socket[1]{\texttt{#1}} +\providecommand\plug[1]{\texttt{#1}} \providecommand\meta[1]{$\langle$\textrm{\itshape#1}$\rangle$} \providecommand\option[1]{\texttt{#1}} @@ -73,12 +75,19 @@ {github issue#1 #2}% )}% \par\smallskip} -%% But Chris has to mostly disable \href for his TEXPAD app: -%% \def\href #1#2{#2} % Only For Chris' deficient TeX engine % simple solution right now (just link to the first issue if there are more) \def\getfirstgithubissue#1 #2\relax{#1} + +\providecommand\taggingissue[2][]{\ifhmode\unskip\fi + \quad\penalty500\strut\nobreak\hfill + \mbox{\small\slshape(% + \href{https://github.com/latex3/tagging-project/issues/\getfirstgithubissue#2 \relax}% + {tagging-project issue#1 #2}% + )}% + \par\smallskip} + \providecommand\sxissue[1]{\ifhmode\unskip \else % githubissue preceding @@ -179,9 +188,248 @@ right-mark (\verb=\FirstMark{2e-right}=) or the top right-mark See~\cite{41:ltmarks} for details on the extended functionality. +\section{Configurable output routine} + +For nearly 40 years \LaTeX's output routine (the mechanism to paginate +the document and attach footnotes, floats and headers \& footers) was +a largely hardwired algorithm with a limited number of configuration +possibilities. Packages that attempted to alter one or the other +aspect of the process had to overwrite the internals with the usual +problems: incompatibilities and out of date code whenever something +was changed in \LaTeX{}. + +To improve this situation and to support the production of accessible +PDF documents we started to refactor the output routine and added a +number of hooks and sockets, so that packages that want to adjust the +output routine can do so safely without the dangers associated with +that in the past. + +For packages, we implemented the following hooks: +\begin{description} +\item[\hook{build/page/before}, \hook{build/page/after}] + These two hooks enable packages to prepend or append code to + the page processing in the output routine. They are + implemented as mirrored hooks. + + Technically, they are executed at the start and the end of the + internal \LaTeXe{} \cs{@outputpage} command, respectively. A + number of packages alter that command to place code in exactly + these two places\Dash they can now simply add their code to the + hooks instead. + +\item[\hook{build/page/reset}] + Packages that set up special conventions for text in the main + galley (such as catcode changes, etc.)\ can use this hook to + undo these changes within the output routine, so that they + aren't applied to unrelated material, e.g., the text for + running header or footers. + +\item[\hook{build/column/before}, \hook{build/column/after}] + These two hooks enable packages to prepend or append code to + the column processing in the output routine. They are + implemented as mirrored hooks. + + Technically, they are executed at the start and the end of the + internal \LaTeXe{} \cs{@makecol} command, respectively. A + number of packages alter \cs{@makecol} to place code in exactly + these two places\Dash they can now simply add their code to the + hooks instead. +\end{description} + +We also added a number of sockets for configuring the algorithm and to +support tagging. One socket that is of interest for class files but +also for user in the document preamble is +\socket{build/column/outputbox}. It defines how the column text, the +column floats (top and bottom) and the footnotes are combined, +i.e. their order and spacing. To change the layout all one has to do +is to assign a different predefined plug to the socket with +\begin{flushleft} + \verb= \AssignSocketPlug{build/column/outputbox}= + \verb= {=\meta{plug-name}\verb=}= +\end{flushleft} +The predeclared plugs are the following: +\begin{description} +\item[\plug{space-footnotes-floats}] + + After the galley text there is a vertical \cs{vfill} + followed by the footnotes, followed by the bottom floats, if any. + +\item[\plug{footnotes-space-floats}] + + As before but the \cs{vfill} is between footnotes and floats. + +\item[\plug{floats-space-footnotes}] + + Floats are directly after the text, then a space and then footnotes + at the bottom. + +\item[\plug{space-floats-footnotes}] + + Both floats and footnotes are pushed to the bottom with footnotes + coming last.\footnote{There are two more permutations, but neither + of them has ever been requested so they aren't set up by default + --- doing that in a class would be trivial though.} + +\item[\plug{floats-footnotes}] + + All excess space is distributed across the existing + glue on the page, e.g., within the text galley, the + separation between blocks, etc. + The order is text, floats, footnotes. + +\item[\plug{footnotes-floats}] + + As the previous one but floats and footnotes are swapped. This is + the \LaTeX{} default for newer documents, i.e., this plug is + assigned to the socket when \cs{DocumentMetadata} is used. + +\item[\plug{footnotes-floats-legacy}] + + As the previous one but \LaTeX{}'s bottom skip bug is not + corrected, i.e., in ragged bottom designs where footnotes + are supposed to be directly attached to the text, they suddenly + appear at the bottom of the page when the page is ended with + \cs{newpage} or \cs{clearpage}. + While this is clearly a bug, it was the case since the days + of \LaTeX~2.09; thus for + compatibility we continue to support this behavior. +\end{description} +There are more configuration possibilities, mainly for class +developers; more documentation on those can be found in +\cite[\S54 ltoutput.dtx]{41:source2e}. + + + +\section{News from Tagged PDF project} + +The \texttt{testphase} key now takes also the value \texttt{latest}. +This will load all modules that we recommend so that it is not +necessary to specify individual modules. The list of loaded modules +will be adjusted as needed when the project progresses. For reference, +it is also written to the log. + + +\emph{to write} + +\subsection{Setting up math tagging} + +With the \LuaTeX{} engine there are now various options for accessible math described in full details in latex-lab-math.pdf. To simplify the setup a new +key \texttt{math/setup} can be used that accepts a comma list with the values \texttt{mathml-SE} (add MathML structure element), \texttt{mathml-AF} +(attach MathML associated file) or \texttt{tex-AF} (attach the TeX source). + + +\subsection{Promoting PDF 2.0} + +PDF 2.0 is a requirement for accessible PDF containing math as the MathML name spaces isn't supported by earlier PDF versions. \LaTeX{} will therefore set +PDF 2.0 as default version if \cs{DocumentMetadata} is used. A different PDF version can be set with the \texttt{pdfversion} key. + +\subsection{Fixing the spacing after display math} + +When \LaTeX{} produces an accessible (tagged) PDF it has to add +structure data into the PDF to mark (i.e., tag) individual +elements. If the \pdfTeX{} engine is used this has to be done with the +help of \cs{pdfliteral}s which are whatsit nodes like +\cs{special} or \cs{write}. This means that they should be added only in +places, where these extra nodes are not affecting the spacing\Dash \TeX{} +can't, for example, look backwards past such a whatsit node so +consecutive spaces that are normally collapsed into one, suddenly +appear both, if such a node separates them. + +The situation is especially complicated with math displays, because +there \TeX{} adds penalties and spaces with low-level procedures, that +are not directly accessible from the macro level, and the tagging +structures have to appear somewhere in the middle of that to ensure +that the formula and the PDF structures are not separated by page +break. Because of this it is necessary to use some fairly complex +methods (essentially disable \TeX's mechanisms and reprogram them on +the macro level) to get the structure data in the right places. + +Our first attempt in doing that was slightly faulty and resulted in +some cases in an extra space (an additional \cs{parskip} space when +there shouldn't be one). This has now corrected and the gymnastics to +achieve this are rather an \enquote{interesting} study in obfuscated +\TeX{} coding. + +In \LuaTeX{} the situation is much better because there the structures can +be added later when the formula processing has already finished. +% +\taggingissue{762} + + \section{New or improved commands} +\subsection{Socket and plug conditionals} + +It is sometimes necessary/helpful to know if a particular socket or +plug exists (or is assigned to a certain socket) and based on that +take different actions. With the current release we added +conditionals, such as \cs{IfSocketExistsTF}, to support such +scenarios. Corresponding L3 programming layer conditionals are also +provided. +% +\githubissue{1577} + + +\subsection{Accessing the current counter} +Counter commands such as \cs{alph}, \cs{stepcounter}, may now have +the argument \texttt{*} to denote the current counter (as used by +\cs{label}). This is compatible with the package \pkg{enumitem} use of +\verb|\alph*| in item labels but is generally available. +Not all commands accept \verb|*|, for example +\verb|\counterwithin| and \verb|\counterwithout| require counter names as before. +% +\githubissue{1632} + +\subsection{Collecting environment bodies verbatim} + +The mechanisms in \pkg{ltcmd} (\enquote{\pkg{xparse}}) offer a powerful way to +specify a range of types of document command and environment syntax. This +includes the ability to collect the entire body of an environment, for cases +where treating it as a standard argument is useful. It is also possible in +\pkg{ltcmd} to define arguments which grab their content verbatim, another +specialist argument form. To date, however, it was not possible to combine +these two ideas. + +In this release, a new specifier~\texttt{c} is introduced, which collects the +body of an environment in a verbatim-like way. Like the existing +\texttt{+v}~specification, each separate line is marked by the special +\cs{obeyedline} marker, which as standard issues a normal paragraph. Thus, this +new specifier is usable both for typesetting and collecting file contents (the +letter~\texttt{c} indicates \enquote{collect code}). Thus, we may use +\begin{verbatim} +\NewDocumentEnvironment + {MyVerbatim}{!O{\ttfamily} c} + {\begin{center}#1 #2\end{center}} {} +\begin{MyVerbatim}[\ttfamily\itshape] + % Some code is shown here + $y = mx + c$ +\end{MyVerbatim} +\end{verbatim} +to obtain +% We can't actually use ... +%\NewDocumentEnvironment{MyVerbatim}{!O{\ttfamily} c} +% {\begin{center} #1 #2\end{center}} {} +% ... as this would prevent LaTeX News 41 being processed with LaTeX before +% 2025-06-01! +% So instead ... +\begin{center} +\makeatletter +\def\@verbatim{% + \trivlist + \centering + \let \do \@makeother + \dospecials + \obeylines + \normalfont \ttfamily \itshape + \@noligs +} +\begin{verbatim} + % Some code is shown here + $y = mx + c$ +\end{verbatim} +\end{center} + \section{Code improvements} \subsection{Refinement of \cs{MakeTitlecase}} @@ -216,17 +464,228 @@ standard list of characters covered by \cs{dospecials}. This allows them to be used in for example a \texttt{v}~specification document command without additional steps. +\subsection{Refinement of \texttt{v}~specification category codes} + +Work on verbatim argument handling has highlighted that storing +all characters as \enquote{other} (category code~12) when using a +\texttt{v}~specification in \pkg{ltcmd} was problematic. We have now +revised this to capture letters with their original cateogry code. + +\subsection{Logging text command and symbol declarations} + +For thirty years the documentation claimed that \cs{DeclareTextSymbol}, +\cs{DeclareTextCommand}, and friends log their changes, but in +contrast to their math counterparts they never did. This has now +finally changed. +% +\githubissue{1242} + +\subsection{Improvement of the NFSS font series management} + +\LaTeX's font selection mechanism (NFSS) supports 9~weight levels, +from ultra-light~(\texttt{ul}) to ultra-bold~(\texttt{ub}), and also +9~width levels, from ultra-condensed~(\texttt{uc}) to +ultra-expanded~(\texttt{ux}). With the February~2020 release, this +mechanism was extended so that requests to set the weight or the width +attributes of the series are combined in a sensible +way~\cite{41:ltnews31}: E.g., if you typeset a paragraph in a +condensed face using \verb+\fontseries{c}\selectfont+ and then use +\cs{textbf} inside the paragraph, a bold condensed face is +selected. The combination of the series values is done by consulting a +simple lookup table whose entries are defined with +\cs{DeclareFontSeriesChangeRule}. + +Until now, this lookup table was missing some entries, especially with +regard to rarely used width values. In such cases, the series values +were not combined as expected. This has been fixed (thanks to Maurice +Hansen) by adding numerous \cs{DeclareFontSeriesChangeRule} entries so +that the full range of weights (from \texttt{ul} to \texttt{ub}) and +widths (from \texttt{uc} to \texttt{ux}) is now supported when +combining font series values. +% +\githubissue{1396} + + +\subsection{Supporting the \texttt{ssc} and \texttt{sw} shapes} + +The \texttt{ssc} shape (spaced small capitals) is supported in +\LaTeX{} through the commands \cs{sscshape} and \cs{textssc}. However, +until this release there where no font shape change rules defined for +this admittely seldom available shape, so that +\begin{verbatim} + \sscshape\itshape +\end{verbatim} +changed unconditionally to \texttt{it} (italics) rather than to +\texttt{sscit} (spaced small italic capitals). Thanks to Michael +Ummels, the missing declarations have now been added so that shape +changes in font families that support spaced small capitals work +properly. + +At the same time we took the opportunity to improve the fallbacks for +the \texttt{sw} (swash) shapes, which are accessible through the +commands \cs{swshape} or \cs{textsw}. If an \texttt{sw} combination is +not available, the rules now try to replace \texttt{sw} with +\texttt{it} rather than falling back to \texttt{n}. +% +\githubissue{1581} + + +\subsection{Improving the handling of \cs{label}, \cs{index}, and \cs{glossary}} + +In standard \LaTeX{}, the three commands \cs{label}, \cs{index}, and +\cs{glossary} take exactly one mandatory argument, e.g., +\verb=\index{=\meta{entry}\verb=}=. In some extension packages, for +example, in \pkg{index} or \pkg{cleveref}, they are augmented to +accept an optional argument and in case of \cs{index} also a star +form. These extensions conflict with \LaTeX's way of disabling the +commands within the table of contents or within the running header, +because there, they were redefined to expect just a mandatory argument +and then do nothing. We have now changed that behavior so that the +redefinitions in these places accept an extended syntax. +% +\githubissue{311} + + \section{Bug fixes} -%\subsection{A fix} +\subsection{Fix the use of \texttt{localmathalpabets}} + +In 2021 we introduced a method to overcome the problem that classic +\TeX{} engines (but not the Unicode engines) have only a limited +number of math alphabets available that got easily fill up simply by +loading math font packages, even if their symbols got used only +occasionally. The idea was to avoid allocating all math alphabets +globally, but instead allow a number of them (defined by counter +\texttt{localmathalpabets}) to vary from one formula to the next. This +way different formulas can make use of different alphabets and chances +are much higher that the processing a complex the document succeeds. +See~\cite{41:ltnews34} for details. + +Unfortunately, the approach taken failed in some cases of nested +formulas with the result that the wrong symbol glyphs were used. +This has now been corrected. +% +\githubissue[s]{1101 1028} + +\subsection{\pkg{docstrip}:\ Error if \texttt{.ins} file is problematical} + +If a file to generate had the same name as a preamble declared with +\cs{declarepreamble} the preamble definition was overwritten because +the macro used to store it was reused for denoting the output +stream. The same problem happened with postambles declared with +\cs{declarepostamble}. This is now detected and an error message is +issued. To circumvent the issue in that case, simply use a different +macro name for the preamble or postamble. +% +\githubissue{1150} + + +\subsection{Prevent \texttt{cmd} hook from defining an undefined command} + +Using \verb=\AddToHook{cmd/FOO/...}= when the command \cs{FOO} was +undefined resulted in the command becoming \cs{relax}. Thus, if used, +it no longer raised an \enquote{Undefined control sequence} error but silently +did nothing. This behavior has been corrected and if the command +\cs{FOO} isn't defined later, e.g., in a package, it now raises an +error if it is used in the document. +% +\githubissue{1591} + +\subsection{Process global options once per package} + +In 2022, we introduced key--value (keyval) option processing in the +kernel~\cite{41:ltnews35}. This also added the idea that keys could have scope: +load-only, preamble-only and general use. However, we overlooked that an option +given globally (in the optional argument to \cs{documentclass}) would be +repeatedly processed and could therefore lead to spurious warnings. This has +now been corrected: global options are seen exactly once per package by the +keyval-based option handling system. +% +\githubissue{1619} + -%% Some text +\subsection{Make \cs{label}, \cs{index}, and \cs{glossary} truely invisible in running headers} + +\LaTeX{} has had a bug since its initial implementation, in that it +correctly ignored any \cs{label}, \cs{index}, or \cs{glossary} +appearing in a mark, but neglected to handle the spaces around the +command. As a result one could end up with two spaces in the running +header when only one should be present. This was detected as part of +working on issue~311 and has now been corrected. +% +\githubissue{1638} + +\subsection{Correct the float placement algorithm} + +When floats are added to the current or next page, \LaTeX{} makes +several tests to find an area that can receive the float. One of these +tests calculates how much space is already used on the page and how +much additional space is needed to place the float in a particular +area. This means that it looks not only at the height of the float but also at the +values from \cs{intextsep} (for \texttt{h} floats) or +\cs{textfloatsep} and \cs{floatsep} (for \texttt{t} and \texttt{b} +floats). The resulting space requirement is then stored in an internal +variable and compared to the space still available on the page. + +If the test fails, the algorithm tries the next area. Unfortunately, +it was reusing the value in that internal variable as the starting point +for the next test without removing the added space for the float +separation (\cs{intextsep}, \cs{floatsep}, or \cs{textfloatsep}). Thus +the comparison was being made with the wrong value (i.e., too high); therefore the test +may have incorrectly concluded that a float doesn't +fit, even though in fact it did. + +This has now been corrected. +% +\githubissue{1645} + + +\subsection{Correct \cs{CheckEncodingSubset}} + +In \cite{41:ltnews36} and again in \cite{41:ltnews39} we suggested +that font maintainers should place an appropriate +\cs{DeclareEncodingSubset} declaration into each \texttt{ts1\meta{family}.fd} +file so that it is tied to the font definition and available if a font +family is explicitly selected through +\cs{fontfamily}\texttt{\{\meta{name}\}} instead of using some font +support package. Unfortunately, doing this could result in incorrectly +selected glyphs when the font encoding subset setting was evaluated before +the \texttt{.fd} file was loaded (because then subset 9 was assumed). +This has now been corrected and +\cs{CheckEncodingSubset} now first loads the \texttt{.fd} file, if +necessary. % -%%\githubissue{XXXX} +\githubissue{1669} + + + +\section{Documentation} + +\subsection{Clarifying space handling of \cs{textcolor}} + +In contrast to other \cs{text}-commands like \cs{textbf} or +\cs{textrm}, the command \cs{textcolor} gobbles spaces at the start of +its argument, so \verb*=Hello\textcolor{red}{ World}= will output +Hello\textcolor{red}{ World}. There are technical as well as +compatibility reasons for this, so the behavior will not change. This +has now been clarified in the documentation. +% +\githubissue{1474} + + %\section{Changes to packages in the \pkg{amsmath} category} -%\section{Changes to packages in the \pkg{graphics} category} +\section{Changes to packages in the \pkg{graphics} category} + +\subsection{More accessibility keys in \pkg{graphicx}} + +The \cs{includegraphics} command now accepts \verb|actualtext| and +\verb|artifact| keys, which by default do nothing but are used by the +tagging code to provide an ActualText string and a boolean flag that the +graphic is an artifact. +% +\githubissue{1552} \section{Changes to packages in the \pkg{tools} category} @@ -244,6 +703,43 @@ supported. +\subsection{\pkg{array}:\ Improve preamble setup code for \texttt{p} and friends} + +While the preamble of a \env{tabular} or \env{array} is being built +the arguments to \texttt{p}, \texttt{m}, or \texttt{b} columns got +expanded several times. This is normally harmless because that +argument contains usually just a dimension. However, in a case like +\verb=p{\fpeval{15}pt}= this resulted in an error, because \cs{fpeval} +was expanded a few times, but not often enough to result in a single +number. This has now been corrected and the argument is not expanded +at all to allow for such edge cases as well as the extension available +with the \pkg{calc} package, such as \verb=p{\widthof{AAAAAA}}= (the +latter was possible before but needed to be taken into account while +the correction was implemented). +% +\githubissue{1585} + + +\subsection[\pkg{varioref}:\ How to make \cs{reftex...}\ empty] + {\pkg{varioref}:\ How to make \cs{reftexfaceafter}, etc.\ empty} + +In the case that one wants to make a command such as +\cs{reftextfaceafter} produce nothing, one has to get rid of the space that +is automatically placed in front of the command. This can be done by simply +defining the command to remove it, e.g., +\begin{verbatim} + \renewcommand\reftextfaceafter{\unskip} +\end{verbatim} +The \pkg{varioref} package does not test if such strings are empty, +because that would require a lot of tests each time \cs{vref} is used, +and it would nearly always find that the text is not empty. However, +as shown above, the solution for this uncommon case is simple, and it +is now explicitly documented in the package documentation. +% +\githubissue{1622} + + + %\section{Changes to files in the \pkg{cyrillic} category} @@ -260,16 +756,28 @@ Leslie Lamport. \newblock Reprinted with corrections in 1996. \bibitem{41:ltnews} \LaTeX{} Project Team. - \emph{\LaTeXe{} news 1--39}. June, 2024. + \emph{\LaTeXe{} news 1--41}. June, 2025. \url{https://latex-project.org/news/latex2e-news/ltnews.pdf} +\bibitem{41:ltnews31} \LaTeX{} Project Team. + \emph{\LaTeXe{} news 31}. February 2020. + \url{https://latex-project.org/news/latex2e-news/ltnews31.pdf} + +\bibitem{41:ltnews34} \LaTeX{} Project Team. + \emph{\LaTeXe{} news 34}. November 2021. + \url{https://latex-project.org/news/latex2e-news/ltnews34.pdf} + \bibitem{41:ltnews35} \LaTeX{} Project Team. \emph{\LaTeXe{} news 35}. June 2022. \url{https://latex-project.org/news/latex2e-news/ltnews35.pdf} -\bibitem{41:ltnews38} \LaTeX{} Project Team. - \emph{\LaTeXe{} news 38}. November 2023. - \url{https://latex-project.org/news/latex2e-news/ltnews38.pdf} +\bibitem{41:ltnews36} \LaTeX{} Project Team. + \emph{\LaTeXe{} news 36}. November 2022. + \url{https://latex-project.org/news/latex2e-news/ltnews36.pdf} + +\bibitem{41:ltnews39} \LaTeX{} Project Team. + \emph{\LaTeXe{} news 39}. June 2024. + \url{https://latex-project.org/news/latex2e-news/ltnews39.pdf} \bibitem{41:ltnews40} \LaTeX{} Project Team. \emph{\LaTeXe{} news 40}. November 2024. @@ -279,6 +787,10 @@ Leslie Lamport. \emph{The \texttt{ltmarks.dtx} code}. June 2025. \url{https://latex-project.org/help/documentation/ltmarks-doc.pdf} +\bibitem{41:source2e} \LaTeX{} Project Team. + \emph{The \LaTeXe{} Sources}. June 2025. + \url{https://latex-project.org/help/documentation/source2e.pdf} + \end{thebibliography} \end{document} diff --git a/Master/texmf-dist/doc/latex-dev/base/ltpara-code.pdf b/Master/texmf-dist/doc/latex-dev/base/ltpara-code.pdf index b95552d01e6..e755cc37d1c 100644 Binary files a/Master/texmf-dist/doc/latex-dev/base/ltpara-code.pdf and b/Master/texmf-dist/doc/latex-dev/base/ltpara-code.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/base/ltpara-doc.pdf b/Master/texmf-dist/doc/latex-dev/base/ltpara-doc.pdf index 05d2b0db519..e3a48e51ac8 100644 Binary files a/Master/texmf-dist/doc/latex-dev/base/ltpara-doc.pdf and b/Master/texmf-dist/doc/latex-dev/base/ltpara-doc.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/base/ltproperties-code.pdf b/Master/texmf-dist/doc/latex-dev/base/ltproperties-code.pdf index f5e353cb964..cfda89fe940 100644 Binary files a/Master/texmf-dist/doc/latex-dev/base/ltproperties-code.pdf and b/Master/texmf-dist/doc/latex-dev/base/ltproperties-code.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/base/ltproperties-doc.pdf b/Master/texmf-dist/doc/latex-dev/base/ltproperties-doc.pdf index f311ee9efa3..2559067c780 100644 Binary files a/Master/texmf-dist/doc/latex-dev/base/ltproperties-doc.pdf and b/Master/texmf-dist/doc/latex-dev/base/ltproperties-doc.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/base/ltshipout-code.pdf b/Master/texmf-dist/doc/latex-dev/base/ltshipout-code.pdf index 9c17eca948b..b941fb3d92c 100644 Binary files a/Master/texmf-dist/doc/latex-dev/base/ltshipout-code.pdf and b/Master/texmf-dist/doc/latex-dev/base/ltshipout-code.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/base/ltshipout-doc.pdf b/Master/texmf-dist/doc/latex-dev/base/ltshipout-doc.pdf index ff6f4471d91..164a3231e63 100644 Binary files a/Master/texmf-dist/doc/latex-dev/base/ltshipout-doc.pdf and b/Master/texmf-dist/doc/latex-dev/base/ltshipout-doc.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/base/ltsockets-code.pdf b/Master/texmf-dist/doc/latex-dev/base/ltsockets-code.pdf index 801d1b5a55d..e94658d606c 100644 Binary files a/Master/texmf-dist/doc/latex-dev/base/ltsockets-code.pdf and b/Master/texmf-dist/doc/latex-dev/base/ltsockets-code.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/base/ltsockets-doc.pdf b/Master/texmf-dist/doc/latex-dev/base/ltsockets-doc.pdf index 8a32b74b96b..413b60a75c6 100644 Binary files a/Master/texmf-dist/doc/latex-dev/base/ltsockets-doc.pdf and b/Master/texmf-dist/doc/latex-dev/base/ltsockets-doc.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/base/lttemplates-code.pdf b/Master/texmf-dist/doc/latex-dev/base/lttemplates-code.pdf index 16e06785a4c..33e4b9e1cae 100644 Binary files a/Master/texmf-dist/doc/latex-dev/base/lttemplates-code.pdf and b/Master/texmf-dist/doc/latex-dev/base/lttemplates-code.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/base/lttemplates-doc.pdf b/Master/texmf-dist/doc/latex-dev/base/lttemplates-doc.pdf index 7335b5fbcd7..1bd42966f1f 100644 Binary files a/Master/texmf-dist/doc/latex-dev/base/lttemplates-doc.pdf and b/Master/texmf-dist/doc/latex-dev/base/lttemplates-doc.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/base/ltx3info.pdf b/Master/texmf-dist/doc/latex-dev/base/ltx3info.pdf index c824bbe44ff..dfa88e825ec 100644 Binary files a/Master/texmf-dist/doc/latex-dev/base/ltx3info.pdf and b/Master/texmf-dist/doc/latex-dev/base/ltx3info.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/base/ltx3info.tex b/Master/texmf-dist/doc/latex-dev/base/ltx3info.tex index bfa09b9b875..8bb52812ce4 100644 --- a/Master/texmf-dist/doc/latex-dev/base/ltx3info.tex +++ b/Master/texmf-dist/doc/latex-dev/base/ltx3info.tex @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2024 +% Copyright (C) 1993-2025 % The LaTeX Project and any individual authors listed elsewhere % in this file. % diff --git a/Master/texmf-dist/doc/latex-dev/base/ltxdoc.pdf b/Master/texmf-dist/doc/latex-dev/base/ltxdoc.pdf index f674f55e6a1..619ae65815d 100644 Binary files a/Master/texmf-dist/doc/latex-dev/base/ltxdoc.pdf and b/Master/texmf-dist/doc/latex-dev/base/ltxdoc.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/base/makeindx.pdf b/Master/texmf-dist/doc/latex-dev/base/makeindx.pdf index 08ca74d219a..ad9ba58694d 100644 Binary files a/Master/texmf-dist/doc/latex-dev/base/makeindx.pdf and b/Master/texmf-dist/doc/latex-dev/base/makeindx.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/base/modguide.pdf b/Master/texmf-dist/doc/latex-dev/base/modguide.pdf index 1db8f17a6c6..2b5fc01742a 100644 Binary files a/Master/texmf-dist/doc/latex-dev/base/modguide.pdf and b/Master/texmf-dist/doc/latex-dev/base/modguide.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/base/modguide.tex b/Master/texmf-dist/doc/latex-dev/base/modguide.tex index ff934ecc34a..5803f32536e 100644 --- a/Master/texmf-dist/doc/latex-dev/base/modguide.tex +++ b/Master/texmf-dist/doc/latex-dev/base/modguide.tex @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2024 +% Copyright (C) 1993-2025 % The LaTeX Project and any individual authors listed elsewhere % in this file. % diff --git a/Master/texmf-dist/doc/latex-dev/base/nfssfont.pdf b/Master/texmf-dist/doc/latex-dev/base/nfssfont.pdf index 0d749f056f1..4cf902bf9de 100644 Binary files a/Master/texmf-dist/doc/latex-dev/base/nfssfont.pdf and b/Master/texmf-dist/doc/latex-dev/base/nfssfont.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/base/proc.pdf b/Master/texmf-dist/doc/latex-dev/base/proc.pdf index e266cbd7307..a15b28e6e43 100644 Binary files a/Master/texmf-dist/doc/latex-dev/base/proc.pdf and b/Master/texmf-dist/doc/latex-dev/base/proc.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/base/slides.pdf b/Master/texmf-dist/doc/latex-dev/base/slides.pdf index 32fb2ade0a2..cd468fa2971 100644 Binary files a/Master/texmf-dist/doc/latex-dev/base/slides.pdf and b/Master/texmf-dist/doc/latex-dev/base/slides.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/base/slifonts.pdf b/Master/texmf-dist/doc/latex-dev/base/slifonts.pdf index 9055b197cde..6c93529f845 100644 Binary files a/Master/texmf-dist/doc/latex-dev/base/slifonts.pdf and b/Master/texmf-dist/doc/latex-dev/base/slifonts.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/base/source2e.pdf b/Master/texmf-dist/doc/latex-dev/base/source2e.pdf index 9e6bf9085fd..63e34213e63 100644 Binary files a/Master/texmf-dist/doc/latex-dev/base/source2e.pdf and b/Master/texmf-dist/doc/latex-dev/base/source2e.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/base/source2e.tex b/Master/texmf-dist/doc/latex-dev/base/source2e.tex index b82ef5664ad..aaf44ba7ec0 100644 --- a/Master/texmf-dist/doc/latex-dev/base/source2e.tex +++ b/Master/texmf-dist/doc/latex-dev/base/source2e.tex @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2024 +% Copyright (C) 1993-2025 % The LaTeX Project and any individual authors listed elsewhere % in this file. % diff --git a/Master/texmf-dist/doc/latex-dev/base/syntonly.pdf b/Master/texmf-dist/doc/latex-dev/base/syntonly.pdf index e5a3ace5c30..57043565035 100644 Binary files a/Master/texmf-dist/doc/latex-dev/base/syntonly.pdf and b/Master/texmf-dist/doc/latex-dev/base/syntonly.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/base/tlc2.pdf b/Master/texmf-dist/doc/latex-dev/base/tlc2.pdf index f3326e8f015..65aa05fa265 100644 Binary files a/Master/texmf-dist/doc/latex-dev/base/tlc2.pdf and b/Master/texmf-dist/doc/latex-dev/base/tlc2.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/base/tlc3.err b/Master/texmf-dist/doc/latex-dev/base/tlc3.err index a7f8af1bfa9..22d0779c3ed 100644 --- a/Master/texmf-dist/doc/latex-dev/base/tlc3.err +++ b/Master/texmf-dist/doc/latex-dev/base/tlc3.err @@ -1,4 +1,4 @@ -\newcommand\erratafiledate{2024/08/07} % needs / and not - +\newcommand\erratafiledate{2025/02/06} % needs / and not - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % To produce a printed version of this errata file run this file through @@ -831,6 +831,14 @@ Correct hyphenation: stan-dalone \> stand-alone \CHAPTER{Chapter 9 --- Font Selection and Encodings} +\erroronpage{I-664}{para -5, l. 4}{HVo}{2025/02/06}{s} + +Change: +\cs{ulcshape}\cs{upshape} \> \cs{upshape}\cs{ulcshape} \\ +because this is the default as defined in the format (though in practice +the order makes no difference) + + \erroronpage{I-687}{table 9.6, l.21}{YvH}{2024/06/19}{s} cmdh \> lmdh @@ -884,6 +892,13 @@ line first \> first line then this structure is repeated as often as necessary. \> then this structure is repeated \u{for the related font families} as often as necessary. +\erroronpage{II-20}{para -1}{FMi}{2025/01/14}{s} + +A new version of Libertinus Mono was released. Added:\\ +\u{Its bold weight is rather light and unfortunately does not +keep register,}\\ +\u{so it may be of fairly limited use.} + \erroronpage{II-24}{para 3, l. -2}{BeB}{2023/08/13}{s} There is no slanted shape in Grande Mono (so it should be in blue): \\ @@ -933,6 +948,16 @@ In table note: \textit{Unfortunately, \u{\texttt{sco}}} \> \textit{Unfortunate \erroronpage{II-42}{para 3, l.4}{MRu}{2024/04/12}{s} rudimentary \> rudimentarily +\erroronpage{II-45}{several places}{FMi}{2025/01/09}{s} + +The Gentium fonts are no longer supported for pdf\TeX{} and only +available for Unicode engines. The Type1 fonts and the +\texttt{gentium} package are deprecated (because of quality issues in +the fonts). Instead \texttt{gentium-otf} is newly available. + +This affects table 10.30 and the font example in the text. We now show +Gentium Plus and Gentium Book Plus using the Lua\TeX{} engine. + \erroronpage{II-50}{font sample Cambria}{FMi}{2023/08/14}{s} Because of problems with the font names, the Cambria family currently requires a \texttt{Cambria.fontspec} file @@ -997,6 +1022,15 @@ ub should be upright: \verb+\fontseries{+\u{\textsl{ub}}\verb+}+ \> \verb+\fonts \u{Akira Kobayashi} should be written in Japanese style \> \u{KOBAYASHI Akira}\\ Also corrected in the index. +\erroronpage{II-71,72}{table 10.60}{FMi}{2025/01/09}{s} + +Font family name for Classico has changed in recent distribution from +\texttt{-LF} to \texttt{-TLF}. Affects font example on page II-71 and +table 10.60 on page II-72. + +The fact small captitals are only available with the pdfTeX +engine. This is now explicitly mentioned. + \erroronpage{II-75}{table 10.64}{FMi}{2023/08/15}{s} Add table note: % @@ -1037,6 +1071,15 @@ Add table note: In the DejaVu Sans Mono Example add: \texttt{OIl or 011?} +\erroronpage{II-94}{para 2, l.4}{FMi}{2025/01/14}{s} + +A new version of Libertinus Mono was released. The recommendation +hasn't changed, only the reason. Changed:\\ +as it is \u{far too dark and fuzzy for my taste.} \> \\ +as it is \u{very light and does not keep register.} + + + \erroronpage{II-102}{para -4, margin}{BeB}{2023/08/13}{s} Change: \u{— no Open Type —} \> \u{Lucida Handwriting OT} @@ -1076,6 +1119,12 @@ The Cambria fonts currently require a \texttt{Cambria.fontspec} file Without it, the bold fonts are not correctly set up, which is why they are not showing in the example. +\erroronpage{II-107}{exa 10-11-2}{FMi}{2025/01/09}{s} + +The Gentium fonts are no longer supported for pdf\TeX{} and only +available for Unicode engines. We therefore show the Greek text in +Gentium Plus using the Lua\TeX{} engine. + \erroronpage{II-110}{exa 10-12-1}{FMi}{2023/08/14}{s} The Cambria fonts currently require a \texttt{Cambria.fontspec} file @@ -1083,6 +1132,12 @@ The Cambria fonts currently require a \texttt{Cambria.fontspec} file Without it, the bold fonts are not correctly set up, which is why they are not showing in the example. +\erroronpage{II-111}{exa 10-12-2}{FMi}{2025/01/09}{s} + +The Gentium fonts are no longer supported for pdf\TeX{} and only +available for Unicode engines. We therefore show the Cyrillic text in +Gentium Plus using the Lua\TeX{} engine. + \erroronpage{II-114}{table 10.89}{FMi}{2023/04/04}{s} @@ -1394,6 +1449,10 @@ IETF \> the Internet Engineering Task Force (IETF) \erroronpage{II-308}{para 3, l.1}{BeB}{2023/08/20}{s} BPD \> BCP +\erroronpage{II-309}{exa 13-3-2}{FMi}{2025/01/09}{s} +the package \texttt{gentium} is deprecated. We therefore now use +\texttt{garamondlibre} in the example. + \erroronpage{II-319}{para 2, l.1}{BeB}{2023/08/20}{s} Missing word: is described \textit{A History} \> is described \u{in} \textit{A History} @@ -1510,7 +1569,7 @@ a few that \> a few \u{commands} that \erroronpage{II-658}{first item in the list}{BeB}{2024/03/17}{s} square root $\sqrt{x}$ \> square root \texttt{sqrt} $x$ -\erroronpage{II-663}{A-3-7}{MRu}{2024/05/01}{} +\erroronpage{II-663}{A-3-7}{MRu}{2024/05/01}{s} In the code, text should read either ``This is the content'' or ``These are the contents''. \erroronpage{II-682}{para -2, l .3}{FMi}{2023/04/28}{s} @@ -1567,6 +1626,7 @@ Appendix title not properly capitalized. \contributor{DFl}{Daniel Flipo} \contributor{EOl}{Edgar Olthof} \contributor{FMi}{Frank Mittelbach} +\contributor{HVo}{Herbert Voß} \contributor{MBe}{Matthew Bertucci} \contributor{MJo}{Maciej Jończyk} \contributor{MRu}{Mark Rudolph} diff --git a/Master/texmf-dist/doc/latex-dev/base/tlc3.pdf b/Master/texmf-dist/doc/latex-dev/base/tlc3.pdf index 5d1b3aa0443..f559ebd71af 100644 Binary files a/Master/texmf-dist/doc/latex-dev/base/tlc3.pdf and b/Master/texmf-dist/doc/latex-dev/base/tlc3.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/base/tulm.pdf b/Master/texmf-dist/doc/latex-dev/base/tulm.pdf index d25858ca7ff..7403f8ad4dd 100644 Binary files a/Master/texmf-dist/doc/latex-dev/base/tulm.pdf and b/Master/texmf-dist/doc/latex-dev/base/tulm.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/base/usrguide-historic.pdf b/Master/texmf-dist/doc/latex-dev/base/usrguide-historic.pdf index 59d32d36e76..770e9754834 100644 Binary files a/Master/texmf-dist/doc/latex-dev/base/usrguide-historic.pdf and b/Master/texmf-dist/doc/latex-dev/base/usrguide-historic.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/base/usrguide-historic.tex b/Master/texmf-dist/doc/latex-dev/base/usrguide-historic.tex index 228a253abba..84daa5898c3 100644 --- a/Master/texmf-dist/doc/latex-dev/base/usrguide-historic.tex +++ b/Master/texmf-dist/doc/latex-dev/base/usrguide-historic.tex @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2024 +% Copyright (C) 1993-2025 % The LaTeX Project and any individual authors listed elsewhere % in this file. % diff --git a/Master/texmf-dist/doc/latex-dev/base/usrguide.pdf b/Master/texmf-dist/doc/latex-dev/base/usrguide.pdf index b98508f67d9..48120fa8980 100644 Binary files a/Master/texmf-dist/doc/latex-dev/base/usrguide.pdf and b/Master/texmf-dist/doc/latex-dev/base/usrguide.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/base/usrguide.tex b/Master/texmf-dist/doc/latex-dev/base/usrguide.tex index 21b15fb6857..280c05dec50 100644 --- a/Master/texmf-dist/doc/latex-dev/base/usrguide.tex +++ b/Master/texmf-dist/doc/latex-dev/base/usrguide.tex @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 2020-2024 +% Copyright (C) 2020-2025 % The LaTeX Project and any individual authors listed elsewhere % in this file. % @@ -35,7 +35,7 @@ \usepackage{url} \title{\LaTeX\ for authors\\ current version} -\author{\copyright~Copyright 2020--2024, \LaTeX\ Project Team.\\ +\author{\copyright~Copyright 2020--2025, \LaTeX\ Project Team.\\ All rights reserved.% \footnote{This file may be distributed and/or modified under the conditions of the \LaTeX{} Project Public License, either version 1.3c @@ -43,7 +43,7 @@ \texttt{usrguide.tex} for full details.}% } -\date{2024-11-12} +\date{2025-02-01} \NewDocumentCommand\cs{m}{\texttt{\textbackslash\detokenize{#1}}} \NewDocumentCommand\marg{m}{\arg{#1}} @@ -668,15 +668,21 @@ a,{b}c ==> {a}{{b}c} \end{verbatim} \begin{decl} - |\ProcessList| \arg{list} \arg{cmd} + |\ProcessList| \arg{list} \arg{tokens} \end{decl} To support \cs{SplitList}, the function \cs{ProcessList} is available -to apply a \meta{cmd} to every entry in a \meta{list}. The -\meta{cmd} should absorb one argument: the list entry. For example +to apply \meta{tokens} to every entry in a \meta{list}. The +\meta{tokens} can be arbitrary contents that should expect one argument +after it: the list entry. For example \begin{verbatim} \NewDocumentCommand \foo {>{\SplitList{;}} m} {\ProcessList{#1}{\SomeDocumentCommand}} \end{verbatim} +or +\begin{verbatim} +\NewDocumentCommand \foo {>{\SplitList{;}} m} + {\ProcessList{#1}{Abc \SomeDocumentCommand}} +\end{verbatim} \begin{decl} |\ReverseBoolean| @@ -837,10 +843,12 @@ subsection. Some additional details that may be useful for those with more \TeX{} knowledge: do not worry if this does not make sense to you! Spaces and tabs are -stored as active characters. In Unicode engines, all other characters are of -type \enquote{other}. In $8$-bit engines, the ASCII characters other than tab -and space are of type \enquote{other}, and non-ASCII characters are active. As -such, token-based comparisons are likely to fail unless set up properly. +stored as active characters. In $8$-bit engines, non-ASCII characters are +\enquote{active}, whilst other than the letters a--zA--Z, ASCII characters are +\enquote{other}. In Unicode engines, non-ASCII codepoints will be either +letters or \enquote{other}, based on the standard \LaTeX{} settings derived +from Unicode data. For token-based comparisons, it is likely that the active +spaces and tabs should be replaced: this can be done conveniently by expansion. \subsection{Typesetting verbatim-like material} @@ -858,6 +866,58 @@ verbatim material, so will need to be set up using for example \cs{ttfamily}. Similarly, the \texttt{verbatim} environment sets up the meaning of \cs{par} suitable for breaking lines. +\subsection{Verbatim environments} +\label{sec:cmd:verbenv} + +In some cases, when grabbing the body of an environment you will want the +contents to be treated verbatim. This is available using the argument +specification~\texttt{c}. Like the \texttt{b} specification, this has to be the +last one. Thus for example +\begin{verbatim} +\NewDocumentEnvironment{MyVerbatim}{!O{\ttfamily} c} + {\begin{center} #1 #2\end{center}} {} +\begin{MyVerbatim}[\ttfamily\itshape] + % Some code is shown here + $y = mx + c$ +\end{MyVerbatim} +\end{verbatim} +will typeset verbatim the content, thus: +\NewDocumentEnvironment{MyVerbatim}{!O{\ttfamily} c} + {\begin{center} #1 #2\end{center}} {} +\begin{MyVerbatim}[\ttfamily\itshape] + % Some code is shown here + $y = mx + c$ +\end{MyVerbatim} + +Since grabbing the entire contents verbatim will result in there being no +\cs{par} tokens, newlines are always permitted: there is no need for a +|+|~modifier here. As for the \texttt{v} specification, newlines are stored as +\cs{obeyedline}. In a similar fashion to the \texttt{b}~specification, by +default \emph{newlines} are trimmed at both ends of the body. Putting the +prefix |!| before \texttt{c} suppresses this trimming. + +Collection of the body takes place on a line-by-line basis: content is +collected up to the end-of-line in the source, then examined before storage. +This means that the line ending the environment (containing in the example +above |\end{MyVerbatim}|) cannot have any text \emph{after} the end of the +environment. Text \emph{before} the end of environment is treated normally, +but note that there is no trailing \cs{obeyedline} added if there is text here. +Other than optional arguments, no text is allowed on the opening line of the +environment. + +Special handling is applied to a \texttt{o}, \texttt{O}, \texttt{d} or +\texttt{D}~specification argument immediately before an +\texttt{c}~specification. This means that when the optional argument is absent, +the first character of the next line will be read with the correctly applied +verbatim category code. Issues may arise if \emph{multiple} optional arguments +are used before a \texttt{c}~specification, and are therefore strongly +discouraged. + +For technical reasons, we recommend that spaces are \emph{not} ignored when +searching for an optional argument before an \texttt{c} specification: this can +be achieved by adding the \texttt{!} modifier as shown in the example. +However, this is left as a choice for the user. + \subsection{Performance} For document commands where the argument specification is entirely @@ -1254,6 +1314,11 @@ the values \cs{topskip} (\dimeval{\topskip}) and \cs{baselineskip} \section{Case changing} +\begin{decl} + |\MakeUppercase| \oarg{keyvals} \arg{text} \\ + |\MakeLowercaes| \oarg{keyvals} \arg{text} \\ + |\MakeTitlecase| \oarg{keyvals} \arg{text} +\end{decl} \TeX{} provides two primitives \cs{uppercase} and \cs{lowercase} for changing the case of text. However, these have a range of limitations: they only change the case of explicit characters, do not account for the surrounding context, do diff --git a/Master/texmf-dist/doc/latex-dev/base/utf8ienc.pdf b/Master/texmf-dist/doc/latex-dev/base/utf8ienc.pdf index dd20f485672..af20f836dcb 100644 Binary files a/Master/texmf-dist/doc/latex-dev/base/utf8ienc.pdf and b/Master/texmf-dist/doc/latex-dev/base/utf8ienc.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/base/webcomp.pdf b/Master/texmf-dist/doc/latex-dev/base/webcomp.pdf index 101e570bb3f..6a49c9d5d8b 100644 Binary files a/Master/texmf-dist/doc/latex-dev/base/webcomp.pdf and b/Master/texmf-dist/doc/latex-dev/base/webcomp.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/firstaid/changes.txt b/Master/texmf-dist/doc/latex-dev/firstaid/changes.txt index 9df9304805f..244b3b1b612 100644 --- a/Master/texmf-dist/doc/latex-dev/firstaid/changes.txt +++ b/Master/texmf-dist/doc/latex-dev/firstaid/changes.txt @@ -1,3 +1,16 @@ +2025-02-06 Frank Mittelbach + + * latex2e-first-aid-for-external-files.dtx (section{The Implementation}): + Add \typeout to indicate that a first aid was applied. + + Redo the firstaid for index.sty, because the new version still fails with + LaTeX 2025/06/01 - \markboth and \markright should not be redefined (gh/1653) + +2025-01-18 Frank Mittelbach + + * latex2e-first-aid-for-external-files.dtx: + Add first aid for index package so that it works with new march mechanism. + 2024-11-24 Ulrike Fischer * latex2e-first-aid-for-external-files.dtx: add iftag@-test to cleveref firstaid for issue #1560 @@ -9,11 +22,11 @@ 2024-11-04 Ulrike Fischer * latex2e-first-aid-for-external-files.dtx: correct spurious space - + 2024-10-16 Ulrike Fischer * latex2e-first-aid-for-external-files.dtx: extend firstaid for cleveref - for issue #1393 and longtable. + for issue #1393 and longtable. 2024-06-25 David Carlisle @@ -23,7 +36,7 @@ 2024-03-22 Ulrike Fischer * latex2e-first-aid-for-external-files.dtx: add firstaid for cleveref - to support five data in \newlabel. + to support five data in \newlabel. 2024-03-18 Frank Mittelbach diff --git a/Master/texmf-dist/doc/latex-dev/firstaid/latex2e-first-aid-for-external-files.pdf b/Master/texmf-dist/doc/latex-dev/firstaid/latex2e-first-aid-for-external-files.pdf index 9c59f5f868c..c429cd0cec9 100644 Binary files a/Master/texmf-dist/doc/latex-dev/firstaid/latex2e-first-aid-for-external-files.pdf and b/Master/texmf-dist/doc/latex-dev/firstaid/latex2e-first-aid-for-external-files.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/graphics/README.md b/Master/texmf-dist/doc/latex-dev/graphics/README.md index 0160491bb9a..354e27c2869 100644 --- a/Master/texmf-dist/doc/latex-dev/graphics/README.md +++ b/Master/texmf-dist/doc/latex-dev/graphics/README.md @@ -1,7 +1,7 @@ The LaTeX `graphics` bundle =========================== -Release 2025-06-01 pre-release 0 +Release 2025-06-01 pre-release 2 Overview -------- @@ -61,4 +61,4 @@ of the package. ----- -

Copyright (C) 1993-2024 The LaTeX Project
+

Copyright (C) 1993-2025 The LaTeX Project
diff --git a/Master/texmf-dist/doc/latex-dev/graphics/changes.txt b/Master/texmf-dist/doc/latex-dev/graphics/changes.txt index d4373580796..73e41d70bca 100644 --- a/Master/texmf-dist/doc/latex-dev/graphics/changes.txt +++ b/Master/texmf-dist/doc/latex-dev/graphics/changes.txt @@ -4,6 +4,17 @@ completeness or accuracy and it contains some references to files that are not part of the distribution. ======================================================================= +2025-01-14 Ulrike Fischer + + * rotating.dtx: Tagging support for sideways floats (tagging-project#751). + Added \leavevmode to sideways, turn etc (tagging-project#112). + + +2024-12-31 David Carlisle + + * grfguide.tex: + Add actualtext and artifact keys for gh/1552 + ================================================================================ All changes above are only part of the development branch for the next release. ================================================================================ diff --git a/Master/texmf-dist/doc/latex-dev/graphics/color.pdf b/Master/texmf-dist/doc/latex-dev/graphics/color.pdf index 081cfb5463e..ef929ef6c6f 100644 Binary files a/Master/texmf-dist/doc/latex-dev/graphics/color.pdf and b/Master/texmf-dist/doc/latex-dev/graphics/color.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/graphics/drivers.pdf b/Master/texmf-dist/doc/latex-dev/graphics/drivers.pdf index 03dc4fc6b45..3bc79b5f468 100644 Binary files a/Master/texmf-dist/doc/latex-dev/graphics/drivers.pdf and b/Master/texmf-dist/doc/latex-dev/graphics/drivers.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/graphics/epsfig.pdf b/Master/texmf-dist/doc/latex-dev/graphics/epsfig.pdf index 16b8cc6bdc4..8e5d754d1b7 100644 Binary files a/Master/texmf-dist/doc/latex-dev/graphics/epsfig.pdf and b/Master/texmf-dist/doc/latex-dev/graphics/epsfig.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/graphics/graphics.pdf b/Master/texmf-dist/doc/latex-dev/graphics/graphics.pdf index 24df86ee4e8..6adf244c97e 100644 Binary files a/Master/texmf-dist/doc/latex-dev/graphics/graphics.pdf and b/Master/texmf-dist/doc/latex-dev/graphics/graphics.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/graphics/graphicx.pdf b/Master/texmf-dist/doc/latex-dev/graphics/graphicx.pdf index bdd0c30ccac..24df6ebb88c 100644 Binary files a/Master/texmf-dist/doc/latex-dev/graphics/graphicx.pdf and b/Master/texmf-dist/doc/latex-dev/graphics/graphicx.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/graphics/grfguide.pdf b/Master/texmf-dist/doc/latex-dev/graphics/grfguide.pdf index 8a060397b60..787933d50b3 100644 Binary files a/Master/texmf-dist/doc/latex-dev/graphics/grfguide.pdf and b/Master/texmf-dist/doc/latex-dev/graphics/grfguide.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/graphics/grfguide.tex b/Master/texmf-dist/doc/latex-dev/graphics/grfguide.tex index 959486c05c9..a5be49f1837 100644 --- a/Master/texmf-dist/doc/latex-dev/graphics/grfguide.tex +++ b/Master/texmf-dist/doc/latex-dev/graphics/grfguide.tex @@ -63,7 +63,7 @@ stroke \title{Packages in the `graphics' bundle} \author{D. P. Carlisle \and The \LaTeX\ Project} -\date{2024-05-22} +\date{2025-01-14} \maketitle @@ -231,8 +231,9 @@ The basic syntax is: \end{decl} This is a \emph{declaration}, like |\bfseries|. It changes the current -colour to \m{name} until the end of the current group or -environment. +colour to \m{name} until the end of the current group, or +environment. It does not automatically start horizontal mode so typically at +the start of a paragraph it should be used in combination with a |\leavevmode|. An alternative command syntax is to use a \emph{command} form that takes the text to be coloured as an \emph{argument}. This is similar @@ -242,9 +243,10 @@ to the font commands such as |\textbf|: |\textcolor|\arg{name}\arg{text} \end{decl} - -So the above is essentially equivalent to -|{\color|\arg{name}\emph{text}|}|. +The command switches to horizontal mode, +so the above is essentially equivalent to +|{\leavevmode\color|\arg{name}\emph{text}|}|. In contrast to |\textbf|, +the command gobbles spaces at the start of its argument, so |Hello\textcolor{red}{ World}| will output Hello\textcolor{red}{ World}. \subsection{Using Colours in math formulas} @@ -633,6 +635,14 @@ Enable/disable interpolation of bitmap images by the viewer. Alternative text for accessibility uses. By default this key is not used but users are encouraged to add descriptive text here that may be used in tagged PDF or as the |alt| attribute in conversions to HTML. +\item[actualtext]\NEWfeature{2024/12/31} + ActualText text for accessibility uses. By default this key is not used + but users are encouraged to add text here that may be used in + tagged PDF or as the text to use in formats that do not use the image. +\item[artifact]\NEWfeature{2024/12/31} + Boolean to mark the graphic as an artifact for accessibility uses. By default this key is not used + but users are encouraged to flag decorative or other non structural images as an artifact for + tagged PDF. \end{description} For the keys specifying the original size (i.e., the bounding box, diff --git a/Master/texmf-dist/doc/latex-dev/graphics/keyval.pdf b/Master/texmf-dist/doc/latex-dev/graphics/keyval.pdf index ac7d5d5f67b..09d2cf5b8b0 100644 Binary files a/Master/texmf-dist/doc/latex-dev/graphics/keyval.pdf and b/Master/texmf-dist/doc/latex-dev/graphics/keyval.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/graphics/lscape.pdf b/Master/texmf-dist/doc/latex-dev/graphics/lscape.pdf index 9a3b2f72d86..6dec8425709 100644 Binary files a/Master/texmf-dist/doc/latex-dev/graphics/lscape.pdf and b/Master/texmf-dist/doc/latex-dev/graphics/lscape.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/graphics/mathcolor.pdf b/Master/texmf-dist/doc/latex-dev/graphics/mathcolor.pdf index 6f843714d66..bf3c2b6313a 100644 Binary files a/Master/texmf-dist/doc/latex-dev/graphics/mathcolor.pdf and b/Master/texmf-dist/doc/latex-dev/graphics/mathcolor.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/graphics/rotating.pdf b/Master/texmf-dist/doc/latex-dev/graphics/rotating.pdf index 9d45e0a40ce..ca5a4b439f4 100644 Binary files a/Master/texmf-dist/doc/latex-dev/graphics/rotating.pdf and b/Master/texmf-dist/doc/latex-dev/graphics/rotating.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/graphics/rotex.pdf b/Master/texmf-dist/doc/latex-dev/graphics/rotex.pdf index b2b66d505e5..b9dfbc42254 100644 Binary files a/Master/texmf-dist/doc/latex-dev/graphics/rotex.pdf and b/Master/texmf-dist/doc/latex-dev/graphics/rotex.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/graphics/trig.pdf b/Master/texmf-dist/doc/latex-dev/graphics/trig.pdf index 9edb838d906..51691514b96 100644 Binary files a/Master/texmf-dist/doc/latex-dev/graphics/trig.pdf and b/Master/texmf-dist/doc/latex-dev/graphics/trig.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/latex-lab/README.md b/Master/texmf-dist/doc/latex-dev/latex-lab/README.md index 779c04f2a9e..fba220ccf32 100644 --- a/Master/texmf-dist/doc/latex-dev/latex-lab/README.md +++ b/Master/texmf-dist/doc/latex-dev/latex-lab/README.md @@ -1,6 +1,6 @@ # LaTeX laboratory -Release 2025-06-01 pre-release 1 +Release 2025-06-01 pre-release 2 ## Overview diff --git a/Master/texmf-dist/doc/latex-dev/latex-lab/blocks-code.pdf b/Master/texmf-dist/doc/latex-dev/latex-lab/blocks-code.pdf index 4a6498c9af8..21585fd346f 100644 Binary files a/Master/texmf-dist/doc/latex-dev/latex-lab/blocks-code.pdf and b/Master/texmf-dist/doc/latex-dev/latex-lab/blocks-code.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/latex-lab/blocks-doc.pdf b/Master/texmf-dist/doc/latex-dev/latex-lab/blocks-doc.pdf index 7403f57f219..154c6ad689c 100644 Binary files a/Master/texmf-dist/doc/latex-dev/latex-lab/blocks-doc.pdf and b/Master/texmf-dist/doc/latex-dev/latex-lab/blocks-doc.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/latex-lab/changes.txt b/Master/texmf-dist/doc/latex-dev/latex-lab/changes.txt index 300e2f0c86e..2a2199f52f1 100644 --- a/Master/texmf-dist/doc/latex-dev/latex-lab/changes.txt +++ b/Master/texmf-dist/doc/latex-dev/latex-lab/changes.txt @@ -1,7 +1,81 @@ + +2025-02-20 Ulrike Fischer + * documentmetadata-support.dtx: set PDF 2.0 as default + * latex-lab-text.dtx: add phoneme instruction to LaTeX. + * documentmetadata-support.dtx: replace deprecated \keys_set_filter:nnn + * latex-lab-math.dtx: removed the subpart code. It will probably never be used. + * latex-lab-math.dtx: move amsmath-patches int latex-lab-amsmath, and insert + luamml patches. + * latex-lab-math.dtx: redefine \mathpalette in luatex. + * latex-lab-math.dtx: Add math/setup key. + * latex-lab-text.dtx: suppress tagging in \phantom in text mode, adapt for mathmode. + * latex-lab-unicode-math.dtx: tag roots and fraction rules as artifact is + mathml structure elements are used. + * use \@math@level to identify nested math. + * added latex-lab-unicode-math.dtx/ltx for unicode-math fixes + * redefine \bBigg@ if unicode-math is used. + +2025-02-19 Frank Mittelbach + + * latex-lab-footnotes.dtx (section{Reimplementing the \pkg{footmisc} package}): + Used a wrong plug in one case. + +2025-02-14 Frank Mittelbach + + * latex-lab-new-or-1.dtx: + This file is now empty and will be soon removed. + +2025-02-13 Ulrike Fischer + * latex-lab-sec.dtx, latex-lab-namespace.dtx: use section-number as tag + for section numbers. + * latex-lab-sec.dtx: hide target arguments for MakeUppercase (tagging/787) + +2025-02-12 Frank Mittelbach + + * latex-lab-new-or-2.dtx: + Use sockets and hooks to make output routine configurable. + +2024-01-30 Ulrike Fischer + * latex-lab-block.dtx, latex-lab-namespace.dtx: change tagging of verbatim. + +2025-01-27 Frank Mittelbach + + * latex-lab-firstaid.dtx (subsection{ams classes and amsthm}): + Add missing \par to abstract env (gh/1641) + +2025-01-18 David Carlisle + + * latex-lab-mathintent.dtx: start adding support for MathML intent + initially just \invisibletimes and \functionapplication + +2025-01-05 Ulrike Fischer + * latex-lab-sec.dtx: add \par before \mainmatter etc (tagging/777) + * latex-lab-table.dtx: + use ARIA-role as default for presentation tables (tagging/778), + add option to use Div-structures instead of Table. + +2024-12-27 Frank Mittelbach + + * latex-lab-table.dtx,latex-lab-toc-kernel-changes.dtx, + latex-lab-footnotes.dtx,latex-lab-float.dtx: + Use new socket conditional. + +2024-12-21 Ulrike Fischer + * documentmetadata-support.dtx: added "latest" as a testphase value. + * remove now unneeded tests. + +2024-12-01 Frank Mittelbach + + * latex-lab-block.dtx (subsection{Handling \tn{par} after the end of the list}): + Handle \parskip after $$display correctly (tagging/762) + + * latex-lab-math.dtx (subsection{Content grabbing}): + Handle \parskip after $$display correctly (tagging/762) + 2024-11-26 Ulrike Fischer - * latex-lab-math.dtx: changed handling of math/mathml/structelem to handle + * latex-lab-math.dtx: changed handling of math/mathml/structelem to handle fakemath better(tagging/764) - * latex-lab-math.dtx: made all main math sockets tagging sockets and + * latex-lab-math.dtx: made all main math sockets tagging sockets and assign the plugs directly. * disable para tagging also in $$-display (tagging/765) diff --git a/Master/texmf-dist/doc/latex-dev/latex-lab/documentmetadata-support-code.pdf b/Master/texmf-dist/doc/latex-dev/latex-lab/documentmetadata-support-code.pdf index b715491e1ae..f86550e0950 100644 Binary files a/Master/texmf-dist/doc/latex-dev/latex-lab/documentmetadata-support-code.pdf and b/Master/texmf-dist/doc/latex-dev/latex-lab/documentmetadata-support-code.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/latex-lab/documentmetadata-support-doc.pdf b/Master/texmf-dist/doc/latex-dev/latex-lab/documentmetadata-support-doc.pdf index bc4391e5836..4ef596a6188 100644 Binary files a/Master/texmf-dist/doc/latex-dev/latex-lab/documentmetadata-support-doc.pdf and b/Master/texmf-dist/doc/latex-dev/latex-lab/documentmetadata-support-doc.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-amsmath.pdf b/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-amsmath.pdf index d3d83b92420..64714ebc968 100644 Binary files a/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-amsmath.pdf and b/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-amsmath.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-bib.pdf b/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-bib.pdf index ee7d80fc53a..6ecf1e4965a 100644 Binary files a/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-bib.pdf and b/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-bib.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-block.pdf b/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-block.pdf index 59aa1c08a0b..8851ade1b06 100644 Binary files a/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-block.pdf and b/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-block.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-firstaid.pdf b/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-firstaid.pdf index 11345681bee..c4f52becd48 100644 Binary files a/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-firstaid.pdf and b/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-firstaid.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-float.pdf b/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-float.pdf index 425f521ac97..48549b8c31a 100644 Binary files a/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-float.pdf and b/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-float.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-footnotes.pdf b/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-footnotes.pdf index f3125ae9423..c93ca95a251 100644 Binary files a/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-footnotes.pdf and b/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-footnotes.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-graphic.pdf b/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-graphic.pdf index f1eb149e5bb..5c1b20c7013 100644 Binary files a/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-graphic.pdf and b/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-graphic.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-marginpar.pdf b/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-marginpar.pdf index 747fca9fb5c..12ffb1db6ee 100644 Binary files a/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-marginpar.pdf and b/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-marginpar.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-math.pdf b/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-math.pdf index 2a64f076525..3397e588e66 100644 Binary files a/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-math.pdf and b/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-math.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-mathintent.pdf b/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-mathintent.pdf new file mode 100644 index 00000000000..0e70ebbe830 Binary files /dev/null and b/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-mathintent.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-mathpkg.pdf b/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-mathpkg.pdf index 28b9b70bd5a..2fd166c6736 100644 Binary files a/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-mathpkg.pdf and b/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-mathpkg.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-mathtools.pdf b/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-mathtools.pdf index d7f57e0379b..42ec6e2f12e 100644 Binary files a/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-mathtools.pdf and b/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-mathtools.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-minipage.pdf b/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-minipage.pdf index c161e1a99c5..7ff8f5544ec 100644 Binary files a/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-minipage.pdf and b/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-minipage.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-namespace.pdf b/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-namespace.pdf index 39d9513435f..37300466049 100644 Binary files a/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-namespace.pdf and b/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-namespace.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-new-or-1.pdf b/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-new-or-1.pdf index 42a2f267c3f..2460e7b68f0 100644 Binary files a/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-new-or-1.pdf and b/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-new-or-1.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-new-or-2.pdf b/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-new-or-2.pdf index 216a1171fe0..85946e322d5 100644 Binary files a/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-new-or-2.pdf and b/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-new-or-2.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-sec.pdf b/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-sec.pdf index 3d17a34ffab..b40d63c2769 100644 Binary files a/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-sec.pdf and b/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-sec.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-table.pdf b/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-table.pdf index dcea7bcb821..999941a4761 100644 Binary files a/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-table.pdf and b/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-table.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-testphase.pdf b/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-testphase.pdf index 8c3e5d76f74..ba72684be88 100644 Binary files a/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-testphase.pdf and b/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-testphase.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-text.pdf b/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-text.pdf index 7473e1eb31d..16e0bcc68b5 100644 Binary files a/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-text.pdf and b/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-text.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-title.pdf b/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-title.pdf index 3b2e8cb994b..08afc05e2ac 100644 Binary files a/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-title.pdf and b/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-title.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-toc-hyperref-changes.pdf b/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-toc-hyperref-changes.pdf index 489a3aba9ab..31b4dc22a01 100644 Binary files a/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-toc-hyperref-changes.pdf and b/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-toc-hyperref-changes.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-toc-kernel-changes.pdf b/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-toc-kernel-changes.pdf index 6b735d89c5e..90eedff11ec 100644 Binary files a/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-toc-kernel-changes.pdf and b/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-toc-kernel-changes.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-toc.pdf b/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-toc.pdf index 3993734a6fa..2587d8e2926 100644 Binary files a/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-toc.pdf and b/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-toc.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-unicode-math.pdf b/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-unicode-math.pdf new file mode 100644 index 00000000000..e88d610b81a Binary files /dev/null and b/Master/texmf-dist/doc/latex-dev/latex-lab/latex-lab-unicode-math.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/tools/README.md b/Master/texmf-dist/doc/latex-dev/tools/README.md index abe5551e338..5544c1747f7 100644 --- a/Master/texmf-dist/doc/latex-dev/tools/README.md +++ b/Master/texmf-dist/doc/latex-dev/tools/README.md @@ -1,7 +1,7 @@ The LaTeX `tools` bundle ======================== -Release 2025-06-01 pre-release 1 +Release 2025-06-01 pre-release 2 Overview -------- diff --git a/Master/texmf-dist/doc/latex-dev/tools/afterpage.pdf b/Master/texmf-dist/doc/latex-dev/tools/afterpage.pdf index e6f22df07fd..e6396ef6f12 100644 Binary files a/Master/texmf-dist/doc/latex-dev/tools/afterpage.pdf and b/Master/texmf-dist/doc/latex-dev/tools/afterpage.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/tools/array.pdf b/Master/texmf-dist/doc/latex-dev/tools/array.pdf index 19aa09df8d7..d54f0ef0233 100644 Binary files a/Master/texmf-dist/doc/latex-dev/tools/array.pdf and b/Master/texmf-dist/doc/latex-dev/tools/array.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/tools/bm.pdf b/Master/texmf-dist/doc/latex-dev/tools/bm.pdf index 17631ae982f..4d8c96a82c8 100644 Binary files a/Master/texmf-dist/doc/latex-dev/tools/bm.pdf and b/Master/texmf-dist/doc/latex-dev/tools/bm.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/tools/calc.pdf b/Master/texmf-dist/doc/latex-dev/tools/calc.pdf index 51d3fa6716e..87cdccefce9 100644 Binary files a/Master/texmf-dist/doc/latex-dev/tools/calc.pdf and b/Master/texmf-dist/doc/latex-dev/tools/calc.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/tools/changes.txt b/Master/texmf-dist/doc/latex-dev/tools/changes.txt index d5a605a6636..577e6cbdfbe 100644 --- a/Master/texmf-dist/doc/latex-dev/tools/changes.txt +++ b/Master/texmf-dist/doc/latex-dev/tools/changes.txt @@ -4,12 +4,42 @@ It is provided for convenience only. It therefore makes no claims to completeness or accuracy and it contains some references to files that are not part of the distribution. ======================================================================= +2025-02-18 Ulrike Fischer + * array.dtx: add sockets for luamml support. + * array.dtx: move latex-lab-math patches of \@tabular + +2025-01-14 Frank Mittelbach + + * varioref.dtx: Describe how to make any of the \reftext... + text strings empty, by using \unskip (gh/1622) + +2024-12-27 Frank Mittelbach + + * multicol.dtx (subsection{Tagging support}): + Use new socket conditional. + +2024-12-22 David Carlisle + + * xr.dtx: additional documentation of problems with + incompatible citation packages (gh/1588) + +2024-12-18 Frank Mittelbach + + * array.dtx (section{The macros \texttt{\textbackslash @classz}): + Expand argument of \@startpbox exactly once while the preamble is built + and use \@@startpbox later to do the real work (gh/1585) + + * longtable.dtx (subsection{The \env{longtable} environment}): + Initialize \@startpbox@action instead of \@startpbox + to match array change (gh/1585) 2024-11-12 Frank Mittelbach + * multicol.dtx (subsection{Tagging support}): Added another socket to support tagging. 2024-11-10 Frank Mittelbach + * multicol.dtx (subsection{Supporting the new mark mechanism}): Drop the legacy support for marks and use the new mark mechanism throughout. diff --git a/Master/texmf-dist/doc/latex-dev/tools/dcolumn.pdf b/Master/texmf-dist/doc/latex-dev/tools/dcolumn.pdf index 981421b606e..632a034123f 100644 Binary files a/Master/texmf-dist/doc/latex-dev/tools/dcolumn.pdf and b/Master/texmf-dist/doc/latex-dev/tools/dcolumn.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/tools/delarray.pdf b/Master/texmf-dist/doc/latex-dev/tools/delarray.pdf index 5800c8221a7..50c55b00223 100644 Binary files a/Master/texmf-dist/doc/latex-dev/tools/delarray.pdf and b/Master/texmf-dist/doc/latex-dev/tools/delarray.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/tools/enumerate.pdf b/Master/texmf-dist/doc/latex-dev/tools/enumerate.pdf index 448b39b2ea8..ef29b3bffa4 100644 Binary files a/Master/texmf-dist/doc/latex-dev/tools/enumerate.pdf and b/Master/texmf-dist/doc/latex-dev/tools/enumerate.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/tools/fileerr.pdf b/Master/texmf-dist/doc/latex-dev/tools/fileerr.pdf index e348693a3e7..4867fcfe44b 100644 Binary files a/Master/texmf-dist/doc/latex-dev/tools/fileerr.pdf and b/Master/texmf-dist/doc/latex-dev/tools/fileerr.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/tools/fontsmpl.pdf b/Master/texmf-dist/doc/latex-dev/tools/fontsmpl.pdf index fa2b598728f..4656d062a70 100644 Binary files a/Master/texmf-dist/doc/latex-dev/tools/fontsmpl.pdf and b/Master/texmf-dist/doc/latex-dev/tools/fontsmpl.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/tools/ftnright.pdf b/Master/texmf-dist/doc/latex-dev/tools/ftnright.pdf index a9865794c12..66eb919b8b8 100644 Binary files a/Master/texmf-dist/doc/latex-dev/tools/ftnright.pdf and b/Master/texmf-dist/doc/latex-dev/tools/ftnright.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/tools/hhline.pdf b/Master/texmf-dist/doc/latex-dev/tools/hhline.pdf index fd84a56012c..324e08f768d 100644 Binary files a/Master/texmf-dist/doc/latex-dev/tools/hhline.pdf and b/Master/texmf-dist/doc/latex-dev/tools/hhline.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/tools/indentfirst.pdf b/Master/texmf-dist/doc/latex-dev/tools/indentfirst.pdf index 8250e6055ea..86eea6849e3 100644 Binary files a/Master/texmf-dist/doc/latex-dev/tools/indentfirst.pdf and b/Master/texmf-dist/doc/latex-dev/tools/indentfirst.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/tools/l3sys-query.pdf b/Master/texmf-dist/doc/latex-dev/tools/l3sys-query.pdf index 5d6c114e6a3..6c20f42f6b3 100644 Binary files a/Master/texmf-dist/doc/latex-dev/tools/l3sys-query.pdf and b/Master/texmf-dist/doc/latex-dev/tools/l3sys-query.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/tools/layout.pdf b/Master/texmf-dist/doc/latex-dev/tools/layout.pdf index 8573bfaf748..8a309bdfc4c 100644 Binary files a/Master/texmf-dist/doc/latex-dev/tools/layout.pdf and b/Master/texmf-dist/doc/latex-dev/tools/layout.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/tools/longtable.pdf b/Master/texmf-dist/doc/latex-dev/tools/longtable.pdf index 923872c0a8a..318def9cb56 100644 Binary files a/Master/texmf-dist/doc/latex-dev/tools/longtable.pdf and b/Master/texmf-dist/doc/latex-dev/tools/longtable.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/tools/multicol.pdf b/Master/texmf-dist/doc/latex-dev/tools/multicol.pdf index b09f2733926..3b7e79789e9 100644 Binary files a/Master/texmf-dist/doc/latex-dev/tools/multicol.pdf and b/Master/texmf-dist/doc/latex-dev/tools/multicol.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/tools/rawfonts.pdf b/Master/texmf-dist/doc/latex-dev/tools/rawfonts.pdf index 3d82908721c..b05670bcabc 100644 Binary files a/Master/texmf-dist/doc/latex-dev/tools/rawfonts.pdf and b/Master/texmf-dist/doc/latex-dev/tools/rawfonts.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/tools/shellesc.pdf b/Master/texmf-dist/doc/latex-dev/tools/shellesc.pdf index c73e961c9b7..80409c12ca3 100644 Binary files a/Master/texmf-dist/doc/latex-dev/tools/shellesc.pdf and b/Master/texmf-dist/doc/latex-dev/tools/shellesc.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/tools/showkeys.pdf b/Master/texmf-dist/doc/latex-dev/tools/showkeys.pdf index ba09032c484..884221d9528 100644 Binary files a/Master/texmf-dist/doc/latex-dev/tools/showkeys.pdf and b/Master/texmf-dist/doc/latex-dev/tools/showkeys.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/tools/somedefs.pdf b/Master/texmf-dist/doc/latex-dev/tools/somedefs.pdf index 07de70ad9e2..09cdc2cc3eb 100644 Binary files a/Master/texmf-dist/doc/latex-dev/tools/somedefs.pdf and b/Master/texmf-dist/doc/latex-dev/tools/somedefs.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/tools/tabularx.pdf b/Master/texmf-dist/doc/latex-dev/tools/tabularx.pdf index 90a225fbc07..6103170580b 100644 Binary files a/Master/texmf-dist/doc/latex-dev/tools/tabularx.pdf and b/Master/texmf-dist/doc/latex-dev/tools/tabularx.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/tools/theorem.pdf b/Master/texmf-dist/doc/latex-dev/tools/theorem.pdf index 2604f7594f2..d012375c196 100644 Binary files a/Master/texmf-dist/doc/latex-dev/tools/theorem.pdf and b/Master/texmf-dist/doc/latex-dev/tools/theorem.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/tools/tools-overview.pdf b/Master/texmf-dist/doc/latex-dev/tools/tools-overview.pdf index 99cbeb5666d..67c7a37ecfe 100644 Binary files a/Master/texmf-dist/doc/latex-dev/tools/tools-overview.pdf and b/Master/texmf-dist/doc/latex-dev/tools/tools-overview.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/tools/tools-overview.tex b/Master/texmf-dist/doc/latex-dev/tools/tools-overview.tex index 3d45a5e2fc7..e56d5c2665f 100644 --- a/Master/texmf-dist/doc/latex-dev/tools/tools-overview.tex +++ b/Master/texmf-dist/doc/latex-dev/tools/tools-overview.tex @@ -1,7 +1,7 @@ \NeedsTeXFormat{LaTeX2e} \ProvidesFile{tools-overview.tex}[2015/03/31 v1.0 Tools overview] -% Copyright (C) 2006-2024 +% Copyright (C) 2006-2025 % % The LaTeX Project and any individual authors listed elsewhere % in this file. diff --git a/Master/texmf-dist/doc/latex-dev/tools/trace.pdf b/Master/texmf-dist/doc/latex-dev/tools/trace.pdf index 0f912fc59c2..fae27f6f29e 100644 Binary files a/Master/texmf-dist/doc/latex-dev/tools/trace.pdf and b/Master/texmf-dist/doc/latex-dev/tools/trace.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/tools/varioref.pdf b/Master/texmf-dist/doc/latex-dev/tools/varioref.pdf index bccf589169e..fe7536d5f64 100644 Binary files a/Master/texmf-dist/doc/latex-dev/tools/varioref.pdf and b/Master/texmf-dist/doc/latex-dev/tools/varioref.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/tools/verbatim.pdf b/Master/texmf-dist/doc/latex-dev/tools/verbatim.pdf index dc355d0ed30..0b15f58fb87 100644 Binary files a/Master/texmf-dist/doc/latex-dev/tools/verbatim.pdf and b/Master/texmf-dist/doc/latex-dev/tools/verbatim.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/tools/xr.pdf b/Master/texmf-dist/doc/latex-dev/tools/xr.pdf index 378c304dccd..c900297be7d 100644 Binary files a/Master/texmf-dist/doc/latex-dev/tools/xr.pdf and b/Master/texmf-dist/doc/latex-dev/tools/xr.pdf differ diff --git a/Master/texmf-dist/doc/latex-dev/tools/xspace.pdf b/Master/texmf-dist/doc/latex-dev/tools/xspace.pdf index 28465fbc4f1..1268100d9c0 100644 Binary files a/Master/texmf-dist/doc/latex-dev/tools/xspace.pdf and b/Master/texmf-dist/doc/latex-dev/tools/xspace.pdf differ diff --git a/Master/texmf-dist/source/latex-dev/amsmath/amsbsy.ins b/Master/texmf-dist/source/latex-dev/amsmath/amsbsy.ins index 2d0cdd7be32..47827ade30d 100644 --- a/Master/texmf-dist/source/latex-dev/amsmath/amsbsy.ins +++ b/Master/texmf-dist/source/latex-dev/amsmath/amsbsy.ins @@ -26,7 +26,7 @@ \preamble Copyright (C) 1995, 1999 American Mathematical Society. -Copyright (C) 2016-2024 LaTeX Project and American Mathematical Society. +Copyright (C) 2016-2025 LaTeX Project and American Mathematical Society. This work may be distributed and/or modified under the conditions of the LaTeX Project Public License, either version 1.3c diff --git a/Master/texmf-dist/source/latex-dev/amsmath/amscd.dtx b/Master/texmf-dist/source/latex-dev/amsmath/amscd.dtx index e1eba3aec28..fd14dfa0872 100644 --- a/Master/texmf-dist/source/latex-dev/amsmath/amscd.dtx +++ b/Master/texmf-dist/source/latex-dev/amsmath/amscd.dtx @@ -2,7 +2,7 @@ % \iffalse meta-comment % % Copyright (C) 1995, 1999 American Mathematical Society. -% Copyright (C) 2016-2024 LaTeX Project and American Mathematical Society. +% Copyright (C) 2016-2025 LaTeX Project and American Mathematical Society. % % This work may be distributed and/or modified under the % conditions of the LaTeX Project Public License, either version 1.3c diff --git a/Master/texmf-dist/source/latex-dev/amsmath/amscd.ins b/Master/texmf-dist/source/latex-dev/amsmath/amscd.ins index 8f2e5decd42..8deb662575d 100644 --- a/Master/texmf-dist/source/latex-dev/amsmath/amscd.ins +++ b/Master/texmf-dist/source/latex-dev/amsmath/amscd.ins @@ -1,6 +1,6 @@ %% %% Copyright (C) 2010 American Mathematical Society. -%% Copyright (C) 2016-2024 LaTeX Project and American Mathematical Society. +%% Copyright (C) 2016-2025 LaTeX Project and American Mathematical Society. %% %% This work may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either version 1.3c @@ -25,7 +25,7 @@ \preamble Copyright (C) 1995, 1999 American Mathematical Society. -Copyright (C) 2016-2024 LaTeX Project and American Mathematical Society. +Copyright (C) 2016-2025 LaTeX Project and American Mathematical Society. This work may be distributed and/or modified under the conditions of the LaTeX Project Public License, either version 1.3c diff --git a/Master/texmf-dist/source/latex-dev/amsmath/amsgen.dtx b/Master/texmf-dist/source/latex-dev/amsmath/amsgen.dtx index a7b1ebc87f3..361b684ee4a 100644 --- a/Master/texmf-dist/source/latex-dev/amsmath/amsgen.dtx +++ b/Master/texmf-dist/source/latex-dev/amsmath/amsgen.dtx @@ -2,7 +2,7 @@ % \iffalse meta-comment % % Copyright (C) 1995, 1999 American Mathematical Society. -% Copyright (C) 2016-2024 LaTeX Project and American Mathematical Society. +% Copyright (C) 2016-2025 LaTeX Project and American Mathematical Society. % % This work may be distributed and/or modified under the % conditions of the LaTeX Project Public License, either version 1.3c diff --git a/Master/texmf-dist/source/latex-dev/amsmath/amsgen.ins b/Master/texmf-dist/source/latex-dev/amsmath/amsgen.ins index 8b6f4185955..cd08d61d49a 100644 --- a/Master/texmf-dist/source/latex-dev/amsmath/amsgen.ins +++ b/Master/texmf-dist/source/latex-dev/amsmath/amsgen.ins @@ -25,7 +25,7 @@ \preamble Copyright (C) 1995, 1999 American Mathematical Society. -Copyright (C) 2016-2024 LaTeX Project and American Mathematical Society. +Copyright (C) 2016-2025 LaTeX Project and American Mathematical Society. This work may be distributed and/or modified under the conditions of the LaTeX Project Public License, either version 1.3c diff --git a/Master/texmf-dist/source/latex-dev/amsmath/amsmath.dtx b/Master/texmf-dist/source/latex-dev/amsmath/amsmath.dtx index 591d175642c..2496b7edef0 100644 --- a/Master/texmf-dist/source/latex-dev/amsmath/amsmath.dtx +++ b/Master/texmf-dist/source/latex-dev/amsmath/amsmath.dtx @@ -2,7 +2,7 @@ % \iffalse meta-comment % % Copyright (C) 1995, 2000, 2013 American Mathematical Society. -% Copyright (C) 2016-2024 LaTeX Project and American Mathematical Society. +% Copyright (C) 2016-2025 LaTeX Project and American Mathematical Society. % % This work may be distributed and/or modified under the % conditions of the LaTeX Project Public License, either version 1.3c @@ -85,7 +85,7 @@ Bug reports can be opened (category \texttt{#1}) at\\% % \end{macrocode} % % \begin{macrocode} -\ProvidesPackage{amsmath}[2024/11/05 v2.17t AMS math features] +\ProvidesPackage{amsmath}[2025/01/19 v2.17u AMS math features] % \end{macrocode} % % \section{Catcode defenses} @@ -347,6 +347,7 @@ For additional information on amsmath, use the \lq ?\rq\space option.% % \cn{DeclareMathOperator}. % \begin{macrocode} \RequirePackage{amstext}[1995/01/25] +%\RequirePackage{amsgen}[1995/01/25] % already loaded by amstext \RequirePackage{amsbsy}[1995/01/20] \RequirePackage{amsopn}[1995/01/20] % \end{macrocode} @@ -3117,9 +3118,12 @@ ill-advised in LaTeX.% % \end{macrocode} % In case there is an enumerate inside a minipage inside an equation, % we need to reset \cn{label} to its normal value: +% \changes{v2.17u}{2025/01/11}{Correct 30 years old typo: +% \cs{@arrayparboxrestore} needs changing not +% \cs{@arrayboxrestore} (gh/1608)} % \begin{macrocode} \toks@\@xp{\@arrayparboxrestore \let\label\ltx@label}% -\edef\@arrayboxrestore{\the\toks@} +\edef\@arrayparboxrestore{\the\toks@} % \end{macrocode} % % \begin{macrocode} diff --git a/Master/texmf-dist/source/latex-dev/amsmath/amsmath.ins b/Master/texmf-dist/source/latex-dev/amsmath/amsmath.ins index 528700f238e..148287990a4 100644 --- a/Master/texmf-dist/source/latex-dev/amsmath/amsmath.ins +++ b/Master/texmf-dist/source/latex-dev/amsmath/amsmath.ins @@ -1,6 +1,6 @@ %% %% Copyright (C) 2010 American Mathematical Society. -%% Copyright (C) 2016-2024 LaTeX Project and American Mathematical Society. +%% Copyright (C) 2016-2025 LaTeX Project and American Mathematical Society. %% %% This work may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either version 1.3c @@ -25,7 +25,7 @@ \preamble Copyright (C) 1995, 1999, 2000, 2013 American Mathematical Society. -Copyright (C) 2016-2024 LaTeX Project and American Mathematical Society. +Copyright (C) 2016-2025 LaTeX Project and American Mathematical Society. This work may be distributed and/or modified under the conditions of the LaTeX Project Public License, either version 1.3c diff --git a/Master/texmf-dist/source/latex-dev/amsmath/amsopn.dtx b/Master/texmf-dist/source/latex-dev/amsmath/amsopn.dtx index 11ad62ddc1f..b981aac45e0 100644 --- a/Master/texmf-dist/source/latex-dev/amsmath/amsopn.dtx +++ b/Master/texmf-dist/source/latex-dev/amsmath/amsopn.dtx @@ -2,7 +2,7 @@ % \iffalse meta-comment % % Copyright (C) 1995, 1999 American Mathematical Society. -% Copyright (C) 2016-2024 LaTeX Project and American Mathematical Society. +% Copyright (C) 2016-2025 LaTeX Project and American Mathematical Society. % % This work may be distributed and/or modified under the % conditions of the LaTeX Project Public License, either version 1.3c diff --git a/Master/texmf-dist/source/latex-dev/amsmath/amsopn.ins b/Master/texmf-dist/source/latex-dev/amsmath/amsopn.ins index 67b2b3c077e..b14d211692a 100644 --- a/Master/texmf-dist/source/latex-dev/amsmath/amsopn.ins +++ b/Master/texmf-dist/source/latex-dev/amsmath/amsopn.ins @@ -1,6 +1,6 @@ %% %% Copyright (C) 2010 American Mathematical Society. -%% Copyright (C) 2016-2024 LaTeX Project and American Mathematical Society. +%% Copyright (C) 2016-2025 LaTeX Project and American Mathematical Society. %% %% This work may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either version 1.3c @@ -25,7 +25,7 @@ \preamble Copyright (C) 1995, 1999 American Mathematical Society. -Copyright (C) 2016-2024 LaTeX Project and American Mathematical Society. +Copyright (C) 2016-2025 LaTeX Project and American Mathematical Society. This work may be distributed and/or modified under the conditions of the LaTeX Project Public License, either version 1.3c diff --git a/Master/texmf-dist/source/latex-dev/amsmath/amstext.dtx b/Master/texmf-dist/source/latex-dev/amsmath/amstext.dtx index 68299946b07..2f856aea389 100644 --- a/Master/texmf-dist/source/latex-dev/amsmath/amstext.dtx +++ b/Master/texmf-dist/source/latex-dev/amsmath/amstext.dtx @@ -2,7 +2,7 @@ % \iffalse meta-comment % % Copyright (C) 1995, 1999 American Mathematical Society. -% Copyright (C) 2016-2024 LaTeX Project and American Mathematical Society. +% Copyright (C) 2016-2025 LaTeX Project and American Mathematical Society. % % This work may be distributed and/or modified under the % conditions of the LaTeX Project Public License, either version 1.3c @@ -77,7 +77,7 @@ Bug reports can be opened (category \texttt{#1}) at\\% % \begin{macrocode} \NeedsTeXFormat{LaTeX2e}% LaTeX 2.09 can't be used (nor non-LaTeX) [1994/12/01]% LaTeX date must be December 1994 or later -\ProvidesPackage{amstext}[2021/08/26 v2.01 AMS text] +\ProvidesPackage{amstext}[2024/11/17 v2.01 AMS text] % \end{macrocode} % % \section{The implementation} @@ -121,7 +121,7 @@ Bug reports can be opened (category \texttt{#1}) at\\% {\textdef@\displaystyle\f@size{#1}}% % \end{macrocode} % The other three cases are similar except for the -% \cs{iffirstchoice} switch which we set to false. This is +% \cs{iffirstchoice@} switch which we set to false. This is % done to prevent \LaTeX{} macros like \cn{ref} or \cn{index} % from writing their arguments more than once. % \begin{macrocode} diff --git a/Master/texmf-dist/source/latex-dev/amsmath/amstext.ins b/Master/texmf-dist/source/latex-dev/amsmath/amstext.ins index 8ecb9523c9e..0a6e696b454 100644 --- a/Master/texmf-dist/source/latex-dev/amsmath/amstext.ins +++ b/Master/texmf-dist/source/latex-dev/amsmath/amstext.ins @@ -1,6 +1,6 @@ %% %% Copyright (C) 2010 American Mathematical Society. -%% Copyright (C) 2016-2024 LaTeX Project and American Mathematical Society. +%% Copyright (C) 2016-2025 LaTeX Project and American Mathematical Society. %% %% This work may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either version 1.3c @@ -25,7 +25,7 @@ \preamble Copyright (C) 1995, 1999 American Mathematical Society. -Copyright (C) 2016-2024 LaTeX Project and American Mathematical Society. +Copyright (C) 2016-2025 LaTeX Project and American Mathematical Society. This work may be distributed and/or modified under the conditions of the LaTeX Project Public License, either version 1.3c diff --git a/Master/texmf-dist/source/latex-dev/amsmath/amsxtra.dtx b/Master/texmf-dist/source/latex-dev/amsmath/amsxtra.dtx index 5ace38995da..69b5c2ff843 100644 --- a/Master/texmf-dist/source/latex-dev/amsmath/amsxtra.dtx +++ b/Master/texmf-dist/source/latex-dev/amsmath/amsxtra.dtx @@ -2,7 +2,7 @@ % \iffalse meta-comment % % Copyright (C) 1995, 1999 American Mathematical Society. -% Copyright (C) 2016-2024 LaTeX Project and American Mathematical Society. +% Copyright (C) 2016-2025 LaTeX Project and American Mathematical Society. % % This work may be distributed and/or modified under the % conditions of the LaTeX Project Public License, either version 1.3c diff --git a/Master/texmf-dist/source/latex-dev/amsmath/amsxtra.ins b/Master/texmf-dist/source/latex-dev/amsmath/amsxtra.ins index 2ba4f221386..9097bbb4423 100644 --- a/Master/texmf-dist/source/latex-dev/amsmath/amsxtra.ins +++ b/Master/texmf-dist/source/latex-dev/amsmath/amsxtra.ins @@ -1,6 +1,6 @@ %% %% Copyright (C) 2010 American Mathematical Society. -%% Copyright (C) 2016-2024 LaTeX Project and American Mathematical Society. +%% Copyright (C) 2016-2025 LaTeX Project and American Mathematical Society. %% %% This work may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either version 1.3c @@ -25,7 +25,7 @@ \preamble Copyright (C) 1995, 1999 American Mathematical Society. -Copyright (C) 2016-2024 LaTeX Project and American Mathematical Society. +Copyright (C) 2016-2025 LaTeX Project and American Mathematical Society. This work may be distributed and/or modified under the conditions of the LaTeX Project Public License, either version 1.3c diff --git a/Master/texmf-dist/source/latex-dev/base/alltt.dtx b/Master/texmf-dist/source/latex-dev/base/alltt.dtx index 8fd4ac2db36..bf0aa321093 100644 --- a/Master/texmf-dist/source/latex-dev/base/alltt.dtx +++ b/Master/texmf-dist/source/latex-dev/base/alltt.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2024 +% Copyright (C) 1993-2025 % The LaTeX Project and any individual authors listed elsewhere % in this file. % diff --git a/Master/texmf-dist/source/latex-dev/base/alltt.ins b/Master/texmf-dist/source/latex-dev/base/alltt.ins index 6d702c1cc71..fe0807abf40 100644 --- a/Master/texmf-dist/source/latex-dev/base/alltt.ins +++ b/Master/texmf-dist/source/latex-dev/base/alltt.ins @@ -3,7 +3,7 @@ %% driver files from the doc files in this package when run through %% LaTeX or TeX. %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% @@ -48,7 +48,7 @@ reports for it can be opened at https://latex-project.org/bugs.html (but please observe conditions on bug reports sent to that address!) -Copyright (C) 1993-2024 +Copyright (C) 1993-2025 The LaTeX Project and any individual authors listed elsewhere in this file. diff --git a/Master/texmf-dist/source/latex-dev/base/classes.dtx b/Master/texmf-dist/source/latex-dev/base/classes.dtx index ce3d902b21c..a9d80bfe638 100644 --- a/Master/texmf-dist/source/latex-dev/base/classes.dtx +++ b/Master/texmf-dist/source/latex-dev/base/classes.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2024 +% Copyright (C) 1993-2025 % The LaTeX Project and any individual authors listed elsewhere % in this file. % @@ -53,7 +53,7 @@ %<*driver> \ProvidesFile{classes.drv} % - [2024/06/29 v1.4n + [2025/01/22 v1.4n % Standard LaTeX document class] %<10pt|11pt|12pt> Standard LaTeX file (size option)] % \end{macrocode} @@ -3024,9 +3024,9 @@ % Note that this environment is not defined for books. % \changes{v1.3e}{1995/06/19}{Added setting of \cs{@endparpenalty} % to avoid page break after abstract heading.} -% \begin{macrocode} -% \changes{v1.3m}{1995/10/23}{Added setting of \cs{beginparpenalty} to +% \changes{v1.3m}{1995/10/23}{Added setting of \cs{@beginparpenalty} to % discourage page break before abstract heading.} +% \begin{macrocode} %<*article|report> \if@titlepage \newenvironment{abstract}{% diff --git a/Master/texmf-dist/source/latex-dev/base/classes.ins b/Master/texmf-dist/source/latex-dev/base/classes.ins index 7fa35896a42..fd411450822 100644 --- a/Master/texmf-dist/source/latex-dev/base/classes.ins +++ b/Master/texmf-dist/source/latex-dev/base/classes.ins @@ -3,7 +3,7 @@ %% driver files from the doc files in this package when run through %% LaTeX or TeX. %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% @@ -48,7 +48,7 @@ reports for it can be opened at https://latex-project.org/bugs.html (but please observe conditions on bug reports sent to that address!) -Copyright (C) 1993-2024 +Copyright (C) 1993-2025 The LaTeX Project and any individual authors listed elsewhere in this file. diff --git a/Master/texmf-dist/source/latex-dev/base/cmextra.ins b/Master/texmf-dist/source/latex-dev/base/cmextra.ins index 3f06c1548b7..9894acc47f5 100644 --- a/Master/texmf-dist/source/latex-dev/base/cmextra.ins +++ b/Master/texmf-dist/source/latex-dev/base/cmextra.ins @@ -3,7 +3,7 @@ %% driver files from the doc files in this package when run through %% LaTeX or TeX. %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% @@ -48,7 +48,7 @@ reports for it can be opened at https://latex-project.org/bugs.html (but please observe conditions on bug reports sent to that address!) -Copyright (C) 1993-2024 +Copyright (C) 1993-2025 The LaTeX Project and any individual authors listed elsewhere in this file. diff --git a/Master/texmf-dist/source/latex-dev/base/cmfonts.fdd b/Master/texmf-dist/source/latex-dev/base/cmfonts.fdd index ed6f3d70ee7..45ee2abb25d 100644 --- a/Master/texmf-dist/source/latex-dev/base/cmfonts.fdd +++ b/Master/texmf-dist/source/latex-dev/base/cmfonts.fdd @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2024 +% Copyright (C) 1993-2025 % The LaTeX Project and any individual authors listed elsewhere % in this file. % diff --git a/Master/texmf-dist/source/latex-dev/base/cmfonts.ins b/Master/texmf-dist/source/latex-dev/base/cmfonts.ins index fb9d08f440c..a750441a9b0 100644 --- a/Master/texmf-dist/source/latex-dev/base/cmfonts.ins +++ b/Master/texmf-dist/source/latex-dev/base/cmfonts.ins @@ -3,7 +3,7 @@ %% driver files from the doc files in this package when run through %% LaTeX or TeX. %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% @@ -48,7 +48,7 @@ reports for it can be opened at https://latex-project.org/bugs.html (but please observe conditions on bug reports sent to that address!) -Copyright (C) 1993-2024 +Copyright (C) 1993-2025 The LaTeX Project and any individual authors listed elsewhere in this file. diff --git a/Master/texmf-dist/source/latex-dev/base/doc.dtx b/Master/texmf-dist/source/latex-dev/base/doc.dtx index a6af48b88a8..05256d878f3 100644 --- a/Master/texmf-dist/source/latex-dev/base/doc.dtx +++ b/Master/texmf-dist/source/latex-dev/base/doc.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2024 +% Copyright (C) 1993-2025 % The LaTeX Project and any individual authors listed elsewhere % in this file. % @@ -45,7 +45,7 @@ %<+package> %<+package>\ProvidesPackage{doc} %<+shortvrb>\ProvidesPackage{shortvrb} -%<+package|shortvrb> [2024/10/23 v3.0q +%<+package|shortvrb> [2024/12/25 v3.0q %<+package|shortvrb> Standard LaTeX documentation package V3 (FMi)] %\catcode`\<=12 % @@ -972,9 +972,23 @@ % index entries \\ % \hspace*{30pt} Special macros for \* % \end{quote} -% Such an entry might be produced with the line: +% Such an entry might be produced with the line %\begin{verbatim} -% \index{index entries\levelchar Special macros for \*} +% \index{index entries>Special macros for \*} +%\end{verbatim} +% assuming that \verb=>= is the \cs{levelchar} used by the index +% processor. + +% You can't use \cs{levelchar} in this situation because if \cs{index} +% is directly used in the document then it's argument is written out +% fully verbatim. However, if you define your own index commands, +% expansion will happen on the way to the \texttt{.idx} file; and in +% that case you can use \cs{levelchar}---this is what the \pkg{doc} +% macros do. This then allows to change the indexing syntax easily, e.g., +%\begin{verbatim} +% \newcommand\ltxconcept[2]{\index{#1\levelchar#2}} +% ... +% \ltxconcept{index entries}{Special macros for \*} %\end{verbatim} % % diff --git a/Master/texmf-dist/source/latex-dev/base/docstrip.dtx b/Master/texmf-dist/source/latex-dev/base/docstrip.dtx index 1d61d78f56f..d746137f548 100644 --- a/Master/texmf-dist/source/latex-dev/base/docstrip.dtx +++ b/Master/texmf-dist/source/latex-dev/base/docstrip.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2024 +% Copyright (C) 1993-2025 % The LaTeX Project and any individual authors listed elsewhere % in this file. % @@ -29,9 +29,9 @@ \catcode`\{=1 \catcode`\}=2 \def\filename{docstrip.dtx} -\def\fileversion{v2.6b} -\def\filedate{2022-09-03} -\def\docdate {2024-02-08} +\def\fileversion{v2.6c} +\def\filedate{2024-12-23} +\def\docdate {2024-12-23} %% % %\iffalse @@ -3027,8 +3027,37 @@ Z % defining preamble for the current file. % \begin{macrocode} \def\@fileX#1#2{% +% \end{macrocode} +% If the csname used for the stream has already been defined, e.g., +% as a preamble or postamble or for some other purposes, chances are +% that turning it into a stream number will break something. We +% therefore generate an error and show the current definition. +% \changes{v2.6c}{2024-12-23}{Check that stream macro is not already +% used (gh/1150)} +% \begin{macrocode} + \ifx#1\relax \else + \errmessage{Command \string#1 for denoting the output \noexpand + \file stream already defined!^^J + \space Current meaning is:^^J^^J\meaning#1^^J^^J + \space Extraction will probably fail - check result}% + \fi \chardef#1=\stream@closed \def\curout{#1}% +% \end{macrocode} +% If it matches the name of the current preamble or postamble then +% it definitely can't work, so we call that out explicitly: +% \begin{macrocode} + \ifx\curout\currentpreamble + \errmessage{Declared preamble name \string#1 not allowed if + \string\file{\@stripstring#1} is used}% + \fi + \ifx\curout\currentpostamble + \errmessage{Declared postamble name \string#1 not allowed if + \string\file{\@stripstring#1} is used}% + \fi +% \end{macrocode} +% +% \begin{macrocode} \let\curinfiles\empty \let\curinnames\empty \def\curref{\MetaPrefix ^^J% diff --git a/Master/texmf-dist/source/latex-dev/base/docstrip.ins b/Master/texmf-dist/source/latex-dev/base/docstrip.ins index 6ed99c92239..e145b036c69 100644 --- a/Master/texmf-dist/source/latex-dev/base/docstrip.ins +++ b/Master/texmf-dist/source/latex-dev/base/docstrip.ins @@ -3,7 +3,7 @@ %% driver files from the doc files in this package when run through %% LaTeX or TeX. %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% @@ -52,7 +52,7 @@ reports for it can be opened at https://latex-project.org/bugs.html (but please observe conditions on bug reports sent to that address!) -Copyright (C) 1993-2024 +Copyright (C) 1993-2025 The LaTeX Project and any individual authors listed elsewhere in this file. diff --git a/Master/texmf-dist/source/latex-dev/base/ec.ins b/Master/texmf-dist/source/latex-dev/base/ec.ins index 53ea22f9573..dd652de9f4f 100644 --- a/Master/texmf-dist/source/latex-dev/base/ec.ins +++ b/Master/texmf-dist/source/latex-dev/base/ec.ins @@ -3,7 +3,7 @@ %% driver files from the doc files in this package when run through %% LaTeX or TeX. %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% @@ -48,7 +48,7 @@ reports for it can be opened at https://latex-project.org/bugs.html (but please observe conditions on bug reports sent to that address!) -Copyright (C) 1993-2024 +Copyright (C) 1993-2025 The LaTeX Project and any individual authors listed elsewhere in this file. diff --git a/Master/texmf-dist/source/latex-dev/base/exscale.dtx b/Master/texmf-dist/source/latex-dev/base/exscale.dtx index 1712d18a267..107f2f5c86b 100644 --- a/Master/texmf-dist/source/latex-dev/base/exscale.dtx +++ b/Master/texmf-dist/source/latex-dev/base/exscale.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2024 +% Copyright (C) 1993-2025 % The LaTeX Project and any individual authors listed elsewhere % in this file. % diff --git a/Master/texmf-dist/source/latex-dev/base/exscale.ins b/Master/texmf-dist/source/latex-dev/base/exscale.ins index 38c6aea61ee..4dda68b7b62 100644 --- a/Master/texmf-dist/source/latex-dev/base/exscale.ins +++ b/Master/texmf-dist/source/latex-dev/base/exscale.ins @@ -3,7 +3,7 @@ %% driver files from the doc files in this package when run through %% LaTeX or TeX. %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% @@ -48,7 +48,7 @@ reports for it can be opened at https://latex-project.org/bugs.html (but please observe conditions on bug reports sent to that address!) -Copyright (C) 1993-2024 +Copyright (C) 1993-2025 The LaTeX Project and any individual authors listed elsewhere in this file. diff --git a/Master/texmf-dist/source/latex-dev/base/fix-cm.dtx b/Master/texmf-dist/source/latex-dev/base/fix-cm.dtx index 09af95dad35..4d99b91c4da 100644 --- a/Master/texmf-dist/source/latex-dev/base/fix-cm.dtx +++ b/Master/texmf-dist/source/latex-dev/base/fix-cm.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2024 +% Copyright (C) 1993-2025 % The LaTeX Project and any individual authors listed elsewhere % in this file. % diff --git a/Master/texmf-dist/source/latex-dev/base/fix-cm.ins b/Master/texmf-dist/source/latex-dev/base/fix-cm.ins index 2023ea229c3..1484eb946d8 100644 --- a/Master/texmf-dist/source/latex-dev/base/fix-cm.ins +++ b/Master/texmf-dist/source/latex-dev/base/fix-cm.ins @@ -3,7 +3,7 @@ %% driver files from the doc files in this package when run through %% LaTeX or TeX. %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% @@ -48,7 +48,7 @@ reports for it can be opened at https://latex-project.org/bugs.html (but please observe conditions on bug reports sent to that address!) -Copyright (C) 1993-2024 +Copyright (C) 1993-2025 The LaTeX Project and any individual authors listed elsewhere in this file. diff --git a/Master/texmf-dist/source/latex-dev/base/fontdef.dtx b/Master/texmf-dist/source/latex-dev/base/fontdef.dtx index ad66ed4118a..770afe445b9 100644 --- a/Master/texmf-dist/source/latex-dev/base/fontdef.dtx +++ b/Master/texmf-dist/source/latex-dev/base/fontdef.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2024 +% Copyright (C) 1993-2025 % The LaTeX Project and any individual authors listed elsewhere % in this file. % diff --git a/Master/texmf-dist/source/latex-dev/base/format.ins b/Master/texmf-dist/source/latex-dev/base/format.ins index e20ff094380..a6dde4038b2 100644 --- a/Master/texmf-dist/source/latex-dev/base/format.ins +++ b/Master/texmf-dist/source/latex-dev/base/format.ins @@ -3,7 +3,7 @@ %% driver files from the doc files in this package when run through %% LaTeX or TeX. %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% @@ -48,7 +48,7 @@ reports for it can be opened at https://latex-project.org/bugs.html (but please observe conditions on bug reports sent to that address!) -Copyright (C) 1993-2024 +Copyright (C) 1993-2025 The LaTeX Project and any individual authors listed elsewhere in this file. @@ -88,7 +88,7 @@ reports for it can be opened at https://latex-project.org/bugs.html (but please observe conditions on bug reports sent to that address!) -Copyright (C) 2015-2024 +Copyright (C) 2015-2025 The LaTeX Project and any individual authors listed elsewhere in this file. @@ -123,7 +123,7 @@ extension .ins) which are part of the distribution. This is a generated file. -Copyright (C) 1993-2024 +Copyright (C) 1993-2025 The LaTeX Project and any individual authors listed elsewhere in this file. diff --git a/Master/texmf-dist/source/latex-dev/base/graphpap.dtx b/Master/texmf-dist/source/latex-dev/base/graphpap.dtx index 7d93512b267..9de5fb7cac4 100644 --- a/Master/texmf-dist/source/latex-dev/base/graphpap.dtx +++ b/Master/texmf-dist/source/latex-dev/base/graphpap.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2024 +% Copyright (C) 1993-2025 % The LaTeX Project and any individual authors listed elsewhere % in this file. % diff --git a/Master/texmf-dist/source/latex-dev/base/graphpap.ins b/Master/texmf-dist/source/latex-dev/base/graphpap.ins index 7898dd2f92e..567a5c65c8d 100644 --- a/Master/texmf-dist/source/latex-dev/base/graphpap.ins +++ b/Master/texmf-dist/source/latex-dev/base/graphpap.ins @@ -3,7 +3,7 @@ %% driver files from the doc files in this package when run through %% LaTeX or TeX. %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% @@ -48,7 +48,7 @@ reports for it can be opened at https://latex-project.org/bugs.html (but please observe conditions on bug reports sent to that address!) -Copyright (C) 1993-2024 +Copyright (C) 1993-2025 The LaTeX Project and any individual authors listed elsewhere in this file. diff --git a/Master/texmf-dist/source/latex-dev/base/ifthen.dtx b/Master/texmf-dist/source/latex-dev/base/ifthen.dtx index 0bbe3612115..1e286f640a5 100644 --- a/Master/texmf-dist/source/latex-dev/base/ifthen.dtx +++ b/Master/texmf-dist/source/latex-dev/base/ifthen.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2024 +% Copyright (C) 1993-2025 % The LaTeX Project and any individual authors listed elsewhere % in this file. % @@ -30,7 +30,7 @@ %% %% File `ifthen.dtx'. %% Copyright (C) 1991 by Leslie Lamport -%% Copyright (C) 1994-2024 LaTeX project, David Carlisle +%% Copyright (C) 1994-2025 LaTeX project, David Carlisle %% all rights reserved. %% % diff --git a/Master/texmf-dist/source/latex-dev/base/ifthen.ins b/Master/texmf-dist/source/latex-dev/base/ifthen.ins index 0382d2255e0..115ca707d31 100644 --- a/Master/texmf-dist/source/latex-dev/base/ifthen.ins +++ b/Master/texmf-dist/source/latex-dev/base/ifthen.ins @@ -3,7 +3,7 @@ %% driver files from the doc files in this package when run through %% LaTeX or TeX. %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% @@ -48,7 +48,7 @@ reports for it can be opened at https://latex-project.org/bugs.html (but please observe conditions on bug reports sent to that address!) -Copyright (C) 1993-2024 +Copyright (C) 1993-2025 The LaTeX Project and any individual authors listed elsewhere in this file. diff --git a/Master/texmf-dist/source/latex-dev/base/inputenc.dtx b/Master/texmf-dist/source/latex-dev/base/inputenc.dtx index 7ab9713d8e9..407fc23e4da 100644 --- a/Master/texmf-dist/source/latex-dev/base/inputenc.dtx +++ b/Master/texmf-dist/source/latex-dev/base/inputenc.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2024 +% Copyright (C) 1993-2025 % LaTeX Project and any individual authors listed elsewhere % in this file. % diff --git a/Master/texmf-dist/source/latex-dev/base/inputenc.ins b/Master/texmf-dist/source/latex-dev/base/inputenc.ins index 2cfe820673c..4b3803b2cc7 100644 --- a/Master/texmf-dist/source/latex-dev/base/inputenc.ins +++ b/Master/texmf-dist/source/latex-dev/base/inputenc.ins @@ -3,7 +3,7 @@ %% driver files from the doc files in this package when run through %% LaTeX or TeX. %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% @@ -48,7 +48,7 @@ reports for it can be opened at https://latex-project.org/bugs.html (but please observe conditions on bug reports sent to that address!) -Copyright (C) 1993-2024 +Copyright (C) 1993-2025 The LaTeX Project and any individual authors listed elsewhere in this file. diff --git a/Master/texmf-dist/source/latex-dev/base/latex209.dtx b/Master/texmf-dist/source/latex-dev/base/latex209.dtx index 62cb5123d04..6670dbcdbf4 100644 --- a/Master/texmf-dist/source/latex-dev/base/latex209.dtx +++ b/Master/texmf-dist/source/latex-dev/base/latex209.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2024 +% Copyright (C) 1993-2025 % The LaTeX Project and any individual authors listed elsewhere % in this file. % diff --git a/Master/texmf-dist/source/latex-dev/base/latex209.ins b/Master/texmf-dist/source/latex-dev/base/latex209.ins index 9226268c281..631cedb8561 100644 --- a/Master/texmf-dist/source/latex-dev/base/latex209.ins +++ b/Master/texmf-dist/source/latex-dev/base/latex209.ins @@ -3,7 +3,7 @@ %% driver files from the doc files in this package when run through %% LaTeX or TeX. %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% @@ -48,7 +48,7 @@ reports for it can be opened at https://latex-project.org/bugs.html (but please observe conditions on bug reports sent to that address!) -Copyright (C) 1993-2024 +Copyright (C) 1993-2025 The LaTeX Project and any individual authors listed elsewhere in this file. diff --git a/Master/texmf-dist/source/latex-dev/base/latexrelease.dtx b/Master/texmf-dist/source/latex-dev/base/latexrelease.dtx index 5b5c3648a48..4442b05ca9f 100644 --- a/Master/texmf-dist/source/latex-dev/base/latexrelease.dtx +++ b/Master/texmf-dist/source/latex-dev/base/latexrelease.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2024 +% Copyright (C) 1993-2025 % The LaTeX Project and any individual authors listed elsewhere % in this file. % @@ -40,7 +40,7 @@ %<*latexrelease> % \fi % \ProvidesFile{latexrelease.dtx} - [2024/08/11 v1.0p LaTeX release emulation and tests + [2025/01/31 v1.0q LaTeX release emulation and tests (including releases up to \latexreleaseversion)] % \iffalse % @@ -754,6 +754,14 @@ of this package available from CTAN} \msg_redirect_name:nnn { mark } { class-already-defined }{ none } % \end{macrocode} % +% The same is also needed for \cs{NewSocket} and \cs{NewSocketPlug}. +% \changes{v1.0q}{2025/01/31} +% {Silence \cs{NewSocket} and \cs{NewSocketPlug} in rollback} +% \begin{macrocode} +\msg_redirect_name:nnn { socket } { already-declared } { none } +\msg_redirect_name:nnn { socket } { plug-already-declared } { none } +% \end{macrocode} +% % Now a one-off for |ltcmd.dtx|: we need to make \cs{NewDocumentCommand} % not complain on an already existing command, but it has to be done % after \cs{NewDocumentCommand} is defined, so this is separate from @@ -806,9 +814,14 @@ of this package available from CTAN} % And restore the silenced error messages. % \changes{v1.0p}{2022/11/14} % {Unsilence \cs{NewMarkClass} error message after rollback (gh/955)} +% \changes{v1.0q}{2025/01/31} +% {Unsilence \cs{NewSocket} and \cs{NewSocketPlug} error message +% after rollback} % \begin{macrocode} \msg_redirect_name:nnn { hooks } { exists } { } \msg_redirect_name:nnn { mark } { class-already-defined } { } +\msg_redirect_name:nnn { socket } { already-declared } { } +\msg_redirect_name:nnn { socket } { plug-already-declared } { } % \end{macrocode} % % \begin{macrocode} diff --git a/Master/texmf-dist/source/latex-dev/base/latexrelease.ins b/Master/texmf-dist/source/latex-dev/base/latexrelease.ins index 89c3b0fc3a7..9c3b8d6fce1 100644 --- a/Master/texmf-dist/source/latex-dev/base/latexrelease.ins +++ b/Master/texmf-dist/source/latex-dev/base/latexrelease.ins @@ -3,7 +3,7 @@ %% driver files from the doc files in this package when run through %% LaTeX or TeX. %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% @@ -48,7 +48,7 @@ reports for it can be opened at https://latex-project.org/bugs.html (but please observe conditions on bug reports sent to that address!) -Copyright (C) 1993-2024 +Copyright (C) 1993-2025 The LaTeX Project and any individual authors listed elsewhere in this file. diff --git a/Master/texmf-dist/source/latex-dev/base/latexsym.dtx b/Master/texmf-dist/source/latex-dev/base/latexsym.dtx index 4ad17315899..d3240c73d30 100644 --- a/Master/texmf-dist/source/latex-dev/base/latexsym.dtx +++ b/Master/texmf-dist/source/latex-dev/base/latexsym.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2024 +% Copyright (C) 1993-2025 % The LaTeX Project and any individual authors listed elsewhere % in this file. % diff --git a/Master/texmf-dist/source/latex-dev/base/latexsym.ins b/Master/texmf-dist/source/latex-dev/base/latexsym.ins index 874f12cbf7b..e53ccdefe4d 100644 --- a/Master/texmf-dist/source/latex-dev/base/latexsym.ins +++ b/Master/texmf-dist/source/latex-dev/base/latexsym.ins @@ -3,7 +3,7 @@ %% driver files from the doc files in this package when run through %% LaTeX or TeX. %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% @@ -48,7 +48,7 @@ reports for it can be opened at https://latex-project.org/bugs.html (but please observe conditions on bug reports sent to that address!) -Copyright (C) 1993-2024 +Copyright (C) 1993-2025 The LaTeX Project and any individual authors listed elsewhere in this file. @@ -87,7 +87,7 @@ reports for it can be opened at https://latex-project.org/bugs.html (but please observe conditions on bug reports sent to that address!) -Copyright (C) 1993-2024 +Copyright (C) 1993-2025 The LaTeX Project and any individual authors listed elsewhere in this file. diff --git a/Master/texmf-dist/source/latex-dev/base/letter.dtx b/Master/texmf-dist/source/latex-dev/base/letter.dtx index 2521381a37e..1e6fc981b05 100644 --- a/Master/texmf-dist/source/latex-dev/base/letter.dtx +++ b/Master/texmf-dist/source/latex-dev/base/letter.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2024 +% Copyright (C) 1993-2025 % The LaTeX Project and any individual authors listed elsewhere % in this file. % diff --git a/Master/texmf-dist/source/latex-dev/base/letter.ins b/Master/texmf-dist/source/latex-dev/base/letter.ins index 72bb25531c2..e91376a5557 100644 --- a/Master/texmf-dist/source/latex-dev/base/letter.ins +++ b/Master/texmf-dist/source/latex-dev/base/letter.ins @@ -3,7 +3,7 @@ %% driver files from the doc files in this package when run through %% LaTeX or TeX. %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% @@ -48,7 +48,7 @@ reports for it can be opened at https://latex-project.org/bugs.html (but please observe conditions on bug reports sent to that address!) -Copyright (C) 1993-2024 +Copyright (C) 1993-2025 The LaTeX Project and any individual authors listed elsewhere in this file. diff --git a/Master/texmf-dist/source/latex-dev/base/ltalloc.dtx b/Master/texmf-dist/source/latex-dev/base/ltalloc.dtx index d9d5ebd3bee..b2e81bb1599 100644 --- a/Master/texmf-dist/source/latex-dev/base/ltalloc.dtx +++ b/Master/texmf-dist/source/latex-dev/base/ltalloc.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2024 +% Copyright (C) 1993-2025 % The LaTeX Project and any individual authors listed elsewhere % in this file. % diff --git a/Master/texmf-dist/source/latex-dev/base/ltbibl.dtx b/Master/texmf-dist/source/latex-dev/base/ltbibl.dtx index 04fa98dc359..1537eaeb7d2 100644 --- a/Master/texmf-dist/source/latex-dev/base/ltbibl.dtx +++ b/Master/texmf-dist/source/latex-dev/base/ltbibl.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2024 +% Copyright (C) 1993-2025 % The LaTeX Project and any individual authors listed elsewhere % in this file. % diff --git a/Master/texmf-dist/source/latex-dev/base/ltboxes.dtx b/Master/texmf-dist/source/latex-dev/base/ltboxes.dtx index e3620ef1aea..152ba12857f 100644 --- a/Master/texmf-dist/source/latex-dev/base/ltboxes.dtx +++ b/Master/texmf-dist/source/latex-dev/base/ltboxes.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2024 +% Copyright (C) 1993-2025 % The LaTeX Project and any individual authors listed elsewhere % in this file. % diff --git a/Master/texmf-dist/source/latex-dev/base/ltclass.dtx b/Master/texmf-dist/source/latex-dev/base/ltclass.dtx index 6167cf56085..52580eaf54b 100644 --- a/Master/texmf-dist/source/latex-dev/base/ltclass.dtx +++ b/Master/texmf-dist/source/latex-dev/base/ltclass.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2024 +% Copyright (C) 1993-2025 % The LaTeX Project and any individual authors listed elsewhere % in this file. % @@ -33,7 +33,7 @@ %<*driver> % \fi \ProvidesFile{ltclass.dtx} - [2024/08/28 v1.5m LaTeX Kernel (Class & Package Interface)] + [2025/01/02 v1.5n LaTeX Kernel (Class & Package Interface)] % \iffalse \documentclass{ltxdoc} \GetFileInfo{ltclass.dtx} @@ -2808,8 +2808,20 @@ %<*2ekernel> % \end{macrocode} % -% \begin{macrocode} -\@onlypreamble\AtBeginDocument +% In its initial implementation (not using the hook system) +% \cs{AtBeginDocument} was made \cs{@onlypreamble} because using it +% later had no effect whatsoever, thus was most certainly an +% unintended programming error. With the reimplementation, using +% the \texttt{begindocument} hook internally, this has changed +% because adding to a onetime hook after it has already been used +% simply executes the additional code immediately. We therefore no +% longer generate an error if it is used inside the document so +% that \verb=\AddToHook{begindocument}= and \cs{AtBeginDocument} +% are truly equivalent (as claimed in the hook documentation). +% \changes{v1.5n}{2025/01/02}{Do not make \cs{AtBeginDocument} +% preamble only (gh/1604)} +% \begin{macrocode} +%\@onlypreamble\AtBeginDocument % \end{macrocode} % \end{macro} % \end{macro} diff --git a/Master/texmf-dist/source/latex-dev/base/ltcmd.dtx b/Master/texmf-dist/source/latex-dev/base/ltcmd.dtx index b0af2f7966c..928e9d89d91 100644 --- a/Master/texmf-dist/source/latex-dev/base/ltcmd.dtx +++ b/Master/texmf-dist/source/latex-dev/base/ltcmd.dtx @@ -2,7 +2,7 @@ % % Copyright (C) 1999 Frank Mittelbach, Chris Rowley, David Carlisle % Copyright (C) 2004-2008 Frank Mittelbach, The LaTeX Project -% Copyright (C) 2009-2024 +% Copyright (C) 2009-2025 % The LaTeX Project and any individual authors listed elsewhere % in this file. % @@ -34,8 +34,8 @@ %%% From File: ltcmd.dtx % % \begin{macrocode} -\def\ltcmdversion{v1.2f} -\def\ltcmddate{2024-07-06} +\def\ltcmdversion{v1.3b} +\def\ltcmddate{2025-02-01} % \end{macrocode} % %<*driver> @@ -97,6 +97,10 @@ % {Document~command~parser}% % \end{macrocode} % +% \begin{macrocode} +\cs_generate_variant:Nn \tl_head:n { e } +% \end{macrocode} +% % \subsection{Variables and constants} % % \begin{variable}{\l_@@_arg_spec_tl} @@ -132,6 +136,15 @@ % \end{macrocode} % \end{variable} % +% \begin{variable}{\l_@@_total_args_int} +% \changes{v1.3a}{2025-01-23}{New variable} +% The total number of arguments found during normalization: this is required +% where special action is needed for the penultimate argument. +% \begin{macrocode} +\int_new:N \l_@@_total_args_int +% \end{macrocode} +% \end{variable} +% % \begin{variable}{\l_@@_defaults_bool, \l_@@_defaults_tl} % The boolean indicates whether there are any argument with default % value other than |-NoValue-|; the token list holds the code to @@ -326,6 +339,15 @@ % \end{macrocode} % \end{variable} % +% \begin{variable}{\l_@@_final_verb_bool} +% \changes{v1.3a}{2025-01-23}{New variable} +% Needed to establish whether optional arguments should be collected +% \enquote{verbatim safe}. +% \begin{macrocode} +\bool_new:N \l_@@_final_verb_bool +% \end{macrocode} +% \end{variable} +% % \begin{variable}{\q_@@_recursion_tail,\q_@@_recursion_stop} % \begin{macro}{\@@_if_recursion_tail_stop_do:Nn} % \begin{macro}{\@@_use_i_delimit_by_q_recursion_stop:nw} @@ -1331,28 +1353,40 @@ % \end{macro} % % \begin{macro}{\@@_normalize_type_b:w} -% This argument type is not allowed for commands. This is only +% \changes{v1.3a}{2025-01-23}{Extend to cover \texttt{c}-type grabbing} +% \begin{macro}{\@@_normalize_type_c:w} +% \changes{v1.3a}{2025-01-23}{New function} +% \begin{macro}{\@@_normalize_type_b_or_c:nn} +% \changes{v1.3a}{2025-01-23}{New function} +% These argument types are not allowed for commands. They are only % allowed at the end of the argument specification, hence we check % that |#1| is the end. % \begin{macrocode} \cs_new_protected:Npn \@@_normalize_type_b:w #1 + { \@@_normalize_type_b_or_c:nn {#1} { b } } +\cs_new_protected:Npn \@@_normalize_type_c:w #1 + { \@@_normalize_type_b_or_c:nn {#1} { c } } +\cs_new_protected:Npn \@@_normalize_type_b_or_c:nn #1#2 { \bool_if:NF \l_@@_environment_bool { \msg_error:nnxx { cmd } { invalid-command-arg } - { \@@_environment_or_command: } { b } + { \@@_environment_or_command: } {#2} \@@_bad_def:wn } \tl_clear:N \l_@@_last_delimiters_tl - \@@_add_arg_spec:n { b } + \@@_add_arg_spec:n {#2} \quark_if_recursion_tail_stop:n {#1} - \msg_error:nnxx { cmd } { arg-after-body } + \msg_error:nnxxx { cmd } { arg-after-body } + {#2} { \@@_environment_or_command: } { \tl_to_str:n {#1} } \@@_bad_def:wn } % \end{macrocode} % \end{macro} +% \end{macro} +% \end{macro} % % \begin{macro}{\@@_single_token_check:n} % Checks that the argument is a single (non-space) token (possibly @@ -1501,7 +1535,10 @@ { \bool_set_true:N \l_@@_some_short_bool } \tl_put_right:Nx \l_@@_arg_spec_tl { - \bool_if:NT \l_@@_long_bool { + } + \bool_lazy_and:nnT + { \l_@@_long_bool } + { ! \str_if_eq_p:nn {#1} { c } } + { + } \bool_if:NT \l_@@_obey_spaces_bool { ! } \exp_not:n {#1} } @@ -1530,6 +1567,8 @@ % \subsection{Preparing the signature: general mechanism} % % \begin{macro}{\@@_prepare_signature:n} +% \changes{v1.3a}{2025-01-23}{Extend to cover \texttt{c}-type grabbing} +% \begin{macro}{\@@_prepare_signature_verb_chk:n} % \begin{macro}{\@@_prepare_signature:N} % \begin{macro}{\@@_prepare_signature_bypass:N} % Actually creating the signature uses the same loop approach as @@ -1539,6 +1578,7 @@ % \begin{macrocode} \cs_new_protected:Npn \@@_prepare_signature:n #1 { + \int_set_eq:NN \l_@@_total_args_int \l_@@_current_arg_int \int_zero:N \l_@@_current_arg_int \bool_set_false:N \l_@@_long_bool \bool_set_false:N \l_@@_obey_spaces_bool @@ -1550,10 +1590,20 @@ \tl_clear:N \l_@@_process_one_tl \bool_set_false:N \l_@@_process_some_bool \tl_clear:N \l_@@_signature_tl + \@@_prepare_signature_verb_chk:n {#1} \@@_prepare_signature:N #1 \q_recursion_tail \q_recursion_stop \bool_if:NF \l_@@_expandable_bool { \@@_flush_m_args: } } % \end{macrocode} +% A quick check on the final arg.~type. +% \begin{macrocode} +\cs_new_protected:Npn \@@_prepare_signature_verb_chk:n #1 + { + \str_if_eq:eeTF { \tl_head:e { \tl_reverse:n {#1} } } { c } + { \bool_set_true:N \l_@@_final_verb_bool } + { \bool_set_false:N \l_@@_final_verb_bool } + } +% \end{macrocode} % The main looping function does not take an argument, but carries out the % reset on the processor boolean. This is split off from the rest of the % process so that when actually setting up processors the flag-reset can @@ -1582,6 +1632,7 @@ % \end{macro} % \end{macro} % \end{macro} +% \end{macro} % % \subsection{Setting up a standard signature} % @@ -1640,7 +1691,7 @@ % \end{macrocode} % \end{macro} % -% \begin{macro}{\@@_add_type_=:} +% \begin{macro}{\@@_add_type_=:w} % \changes{v1.1a}{2022/08/10}{Add support for \texttt{=} modifier} % A mix of the ideas from above: set a flag and add a processor. % \begin{macrocode} @@ -1658,16 +1709,27 @@ % \end{macro} % % \begin{macro}{\@@_add_type_b:w} +% \changes{v1.3a}{2025-01-23}{Extend to cover \texttt{c}-type grabbing} +% \begin{macro}{\@@_add_type_c:w} +% \changes{v1.3a}{2025-01-23}{New function} +% \begin{macro}{\@@_add_type_b_or_c:N} +% \changes{v1.3a}{2025-01-23}{New function} % \begin{macrocode} \cs_new_protected:Npn \@@_add_type_b:w + { \@@_add_type_b_or_c:N b } +\cs_new_protected:Npn \@@_add_type_c:w + { \@@_add_type_b_or_c:N c } +\cs_new_protected:Npn \@@_add_type_b_or_c:N #1 { \@@_flush_m_args: \@@_add_default: - \@@_add_grabber:N b + \@@_add_grabber:N #1 \@@_prepare_signature:N } % \end{macrocode} % \end{macro} +% \end{macro} +% \end{macro} % % \begin{macro}{\@@_add_type_D:w} % \begin{macrocode} @@ -1842,6 +1904,7 @@ % ignored when looking for that optional argument. % \changes{v1.0g}{2021/08/07} % {Replicate argument processors for all embellishments (gh/639)} +% \changes{v1.3a}{2025-01-23}{Extend to support \texttt{c}-type grabbing} % \begin{macrocode} \cs_new_protected:Npn \@@_add_grabber:N #1 { @@ -1856,12 +1919,23 @@ { \l_@@_suppress_strip_bool } { \str_if_eq_p:nn {#1} { D } } { _no_strip } + \bool_lazy_all:nT + { + { \l_@@_final_verb_bool } + { \str_if_eq_p:nn {#1} { D } } + { + \int_compare_p:nNn \l_@@_current_arg_int + = { \l_@@_total_args_int - 1 } + } + } + { _verb_safe } :w } } \bool_set_false:N \l_@@_long_bool \bool_set_false:N \l_@@_obey_spaces_bool \bool_set_false:N \l_@@_suppress_strip_bool + \bool_set_false:N \l_@@_verb_safe_bool \tl_put_right:Nx \l_@@_process_all_tl { { @@ -2254,7 +2328,7 @@ % % \changes{v1.1c}{2023/03/12} % {Distinguish (non-expandable) document commands starting with -% \cs{@@_start_expandable:nNNNNn}} +% \cs{__cmd_start_expandable:nNNNNn}} % There's one variant: a command begins with \cs{@@_start_expandable:nNNNNn} % may still be un-expandable/protected if it's defined by % \cs{NewDocumentCommand} and friends, with empty or only m-type arguments. @@ -2605,7 +2679,7 @@ % % \changes{v1.1c}{2023/03/12} % {Distinguish (non-expandable) document commands starting with -% \cs{@@_start_expandable:nNNNNn}} +% \cs{__cmd_start_expandable:nNNNNn}} % There's one variant: a command begins with \cs{@@_start_expandable:nNNNNn} % may still be un-expandable/protected if it's defined by % \cs{NewDocumentCommand} and friends, with empty or only m-type arguments. @@ -3002,68 +3076,320 @@ % \end{macrocode} % \end{macro} % -% \begin{macro} -% { -% \@@_grab_D:w , -% \@@_grab_D_long:w , -% \@@_grab_D_obey_spaces:w , -% \@@_grab_D_long_obey_spaces:w , -% \@@_grab_D_no_strip:w , -% \@@_grab_D_long_no_strip:w , -% \@@_grab_D_obey_spaces_no_strip:w , -% \@@_grab_D_long_obey_spaces_no_strip:w -% } -% \changes{v1.1a}{2022/08/10}{Add support for skipping brace stripping} -% The generic delimited argument grabber. The auxiliary function does -% a peek test before calling \cs{@@_grab_D_call:Nw}, so that the -% optional nature of the argument works as expected. +% \begin{macro}{\@@_grab_c:w} +% \changes{v1.3a}{2025-01-23}{New \texttt{c}-type grabbing function} +% \begin{macro}{\@@_grab_c_obey_spaces:w} +% \begin{macro}{\@@_grab_c_start:n} +% \begin{macro}{\@@_grab_c_first:w} +% \begin{macro}{\@@_grab_c_loop:w} +% Collecting an environment body verbatim shares some ideas with the +% \texttt{v}-type grabber, and others with the standard \texttt{filecontents} +% environment. The start is to set the end-of-line to a predictable value +% and to deactivate the specials. % \begin{macrocode} -\cs_new_protected:Npn \@@_grab_D:w #1#2#3 \@@_run_code: +\cs_new_protected:Npn \@@_grab_c:w #1 \@@_run_code: { - \@@_grab_D_aux:NNnNNN #1 #2 {#3} \cs_set_protected_nopar:Npn - \@@_peek_nonspace_remove:NTF \use_ii:nn + \bool_set_false:N \l_@@_obey_spaces_bool + \@@_grab_c_start:n {#1} } -\cs_new_protected:Npn \@@_grab_D_long:w #1#2#3 \@@_run_code: +\cs_new_protected:Npn \@@_grab_c_obey_spaces:w #1 \@@_run_code: { - \@@_grab_D_aux:NNnNNN #1 #2 {#3} \cs_set_protected:Npn - \@@_peek_nonspace_remove:NTF \use_ii:nn + \bool_set_true:N \l_@@_obey_spaces_bool + \@@_grab_c_start:n {#1} } -\cs_new_protected:Npn \@@_grab_D_obey_spaces:w #1#2#3 \@@_run_code: +\cs_new_protected:Npn \@@_grab_c_start:n #1 { - \@@_grab_D_aux:NNnNNN #1 #2 {#3} \cs_set_protected_nopar:Npn - \@@_peek_meaning_remove:NTF \use_ii:nn + \tl_set:Nn \l_@@_signature_tl {#1} + \group_begin: + \tl_clear:N \l_@@_v_arg_tl + \tex_escapechar:D = 92 \scan_stop: + \tex_endlinechar:D = `\^^M \scan_stop: + \cs_set_eq:NN \do \char_set_catcode_other:N + \dospecials + \char_set_catcode_other:n { `\^^M } + \@@_grab_c_first:w } -\cs_new_protected:Npn \@@_grab_D_long_obey_spaces:w #1#2#3 \@@_run_code: +% \end{macrocode} +% Notice here and below that we cannot use |\token_to_str:N \end| as that +% would have the wrong category codes for the letters. +% \begin{macrocode} +\group_begin: + \char_set_catcode_other:N \^^M % + \cs_new_protected:Npn \@@_grab_c_first:w #1 ^^M % + { % + \tl_if_blank:nF {#1} % + { % + \msg_warning:nnee { cmd } { chars-dropped-first-line } % + { \exp_not:n {#1} } % + { \exp_not:V \@currenvir } % + } % + \@@_grab_c_loop:w #1 ^^M % + } % + \cs_new_protected:Npe \@@_grab_c_loop:w #1 ^^M % + { % + \exp_not:N \@@_grab_c_auxi:w #1 % + \c_backslash_str end % + \scan_stop: % + } % +\group_end: +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \begin{macro}{\@@_grab_c_auxi:w} +% \begin{macro}{\@@_grab_c_auxii:w} +% \begin{macro}{\@@_grab_c_auxiii:N} +% \begin{macro}{\@@_grab_c_auxiv:} +% \begin{macro}{\@@_grab_c_auxv:} +% \begin{macro}{\@@_grab_c_auxvi:N} +% \begin{macro}{\@@_grab_c_auxvii:} +% \begin{macro}{\@@_grab_c_auxviii:} +% We need to see if the current line contains |\end| followed by the name +% of the current environment. To do that and allow for spaces, we have to +% work stepwise. First, establish if there is an |\end| at all: remember that +% here we are dealing with \enquote{other} tokens. Whether these is an +% |\end| or not, the tokens \emph{before} it form part of the line. +% \begin{macrocode} +\use:e { - \@@_grab_D_aux:NNnNNN #1 #2 {#3} \cs_set_protected:Npn - \@@_peek_meaning_remove:NTF \use_ii:nn + \cs_new_protected:Npn \exp_not:N \@@_grab_c_auxi:w + #1 \c_backslash_str end #2 \scan_stop: } -\cs_new_protected:Npn \@@_grab_D_no_strip:w - #1#2#3 \@@_run_code: { - \@@_grab_D_aux:NNnNNN #1 #2 {#3} \cs_set_protected_nopar:Npn - \@@_peek_nonspace_remove:NTF \use_none:n + \tl_put_right:Nn \l_@@_v_arg_tl {#1} + \tl_if_empty:nTF {#2} + { + \tl_put_right:Nn \l_@@_v_arg_tl { \obeyedline } + \@@_grab_c_loop:w + } + { \@@_grab_c_auxii:w #2 \scan_stop: } } -\cs_new_protected:Npn \@@_grab_D_long_no_strip:w - #1#2#3 \@@_run_code: +% \end{macrocode} +% There is an |\end|, so we now remove the trailing marker we needed +% to do the test. This is stripped off, then we need to examine the +% rest of the line one token at a time: see |verbatim.dtx| for the +% inspiration. Notice that we use |^^M| here as the end marker: this allows +% looping to look for multiple |\end| entries in the line. +% \begin{macrocode} +\group_begin: + \char_set_catcode_other:N \^^M % + \use:e % + { % + \cs_new_protected:Npe \exp_not:N \@@_grab_c_auxii:w % + #1 \c_backslash_str end \scan_stop: % + } % + { % + \tl_set:Nn \exp_not:N \l_@@_tmpa_tl + { \c_backslash_str end } % + \exp_not:N \@@_grab_c_auxiii:N #1 ^^M % + } % +% \end{macrocode} +% Within the line, we need to collect up the tokens: if we do not find +% the end-of-environment argument, we will need those to reinsert. There +% are three special cases here: |^^M| (end of line: tidy up and back to +% the main loop), \verb*| | (possibly skip over) and |{| (start the inner +% loop). Anything else means we move back to examine the rest of the line +% for any more |\end| entries. +% \begin{macrocode} + \cs_new_protected:Npn \@@_grab_c_auxiii:N #1 % + { % + \token_case_charcode:NnF #1 % + { % + ^^M % + { \@@_grab_c_auxiv: } % + \c_space_token % + { % + \tl_put_right:Nn \l_@@_tmpa_tl {#1} % + \@@_grab_c_auxiii:N % + } % + \c_group_begin_token % + { % + \tl_set:Nn \l_@@_tmpb_tl {#1} % + \@@_grab_c_auxvi:N % + } % + } % + { \@@_grab_c_auxv: } % + } % +\group_end: +\cs_new_protected:Npn \@@_grab_c_auxiv: { - \@@_grab_D_aux:NNnNNN #1 #2 {#3} \cs_set_protected:Npn - \@@_peek_nonspace_remove:NTF \use_none:n + \tl_put_right:Ne \l_@@_v_arg_tl + { + \exp_not:V \l_@@_tmpa_tl + \exp_not:N \obeyedline + } + \@@_grab_c_loop:w } -\cs_new_protected:Npn \@@_grab_D_obey_spaces_no_strip:w - #1#2#3 \@@_run_code: +\cs_new_protected:Npn \@@_grab_c_auxv: { - \@@_grab_D_aux:NNnNNN #1 #2 {#3} \cs_set_protected_nopar:Npn - \@@_peek_meaning_remove:NTF \use_none:n + \tl_put_right:NV \l_@@_v_arg_tl \l_@@_tmpa_tl + \@@_grab_c_loop:w + } +% \end{macrocode} +% In the inner loop, we again have only a few special cases. First, we could +% again have |^^M|, in which case we tidy up using a common auxiliary. Second, +% we check for the escape char: this cannot happen inside the end of an +% environment and means we loop, re-inserting the token. Finally, we have +% |}|, where we need to move on to check what has been collected. Otherwise, +% collect up and loop. Notice here that the inner loop needs to +% collect tokens separately: this leaves any spaces after |\end| in +% \cs{l_@@_tmpa_tl}, so we can test \cs{l_@@_tmpb_tl} directly. +% \begin{macrocode} +\group_begin: + \char_set_catcode_other:N \^^M % + \cs_new_protected:Npe \@@_grab_c_auxvi:N #1 % + { % + \exp_not:N \token_case_charcode:NnF #1 % + { % + ^^M % + { + \exp_not:N \@@_grab_c_auxvii: % + \exp_not:N \@@_grab_c_auxiv: % + }% + \c_backslash_str % + { % + \exp_not:N \@@_grab_c_auxvii: % + \exp_not:N \@@_grab_c_auxv: #1 + } % + \c_group_end_token % + { % + \tl_put_right:Nn \exp_not:N \l_@@_tmpb_tl {#1} % + \exp_not:N \@@_grab_c_auxviii: % + } % + } % + { % + \tl_put_right:Nn \exp_not:N \l_@@_tmpb_tl {#1} % + \exp_not:N \@@_grab_c_auxvi:N % + } % + } % +\group_end: % +\cs_new_protected:Npn \@@_grab_c_auxvii: + { \tl_put_right:NV \l_@@_tmpa_tl \l_@@_tmpb_tl } +\cs_new_protected:Npn \@@_grab_c_auxviii: + { + \str_if_eq:eeTF { \exp_not:V \l_@@_tmpb_tl } { { \@currenvir } } + { \@@_grab_c_end:w } + { + \@@_grab_c_auxvii: + \@@_grab_c_auxv: + } } -\cs_new_protected:Npn \@@_grab_D_long_obey_spaces_no_strip:w - #1#2#3 \@@_run_code: +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \begin{macro}{\@@_grab_c_end:w} +% \begin{macro}{\@@_grab_c_end:n} +% \begin{macro}{\@@_grab_c_end_auxi:w} +% \begin{macro}{\@@_grab_c_end_auxii:w} +% \begin{macro}{\@@_grab_c_end_auxiii:w} +% To end the collection, we clean up the last line: once again we need to +% find |^^M|. Once that is done, we can warn if there is anything left +% behind. +% \begin{macrocode} +\group_begin: + \char_set_catcode_other:N \^^M % + \cs_new_protected:Npn \@@_grab_c_end:w #1 ^^M % + { % + \tl_if_blank:nF {#1} % + { % + \msg_warning:nnee { cmd } { chars-dropped-last-line } % + { \exp_not:n {#1} } % + { \exp_not:V \@currenvir } % + } % + \exp_args:NNNo \group_end: % + \tl_set:Nn \l_@@_v_arg_tl { \l_@@_v_arg_tl } % + \@@_add_arg:x % + { % + \bool_if:NTF \l_@@_obey_spaces_bool % + { \exp_not:V } % + { \exp_args:NV \@@_grab_c_end:n } % + \l_@@_v_arg_tl % + } % + \exp_args:NV \end \@currenvir % + } % +\group_end: % +% \end{macrocode} +% Look for line markers at each end and tidy up if required. +% \begin{macrocode} +\cs_new:Npn \@@_grab_c_end:n #1 + { + \@@_grab_c_end_auxi:w \q_nil #1 \q_nil + \obeyedline \obeyedline \q_nil \q_stop + } +\cs_new:Npn \@@_grab_c_end_auxi:w #1 \q_nil \obeyedline + { \@@_grab_c_end_auxii:w #1 \q_nil } +\cs_new:Npn \@@_grab_c_end_auxii:w \q_nil #1 \obeyedline \q_nil + { \@@_grab_c_end_auxiii:w #1 \q_nil } +\cs_new:Npn \@@_grab_c_end_auxiii:w #1 \q_nil #2 \q_stop + { \exp_not:n {#1} } +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro} +% { +% \@@_grab_D:w , +% \@@_grab_D_no_strip:w , +% \@@_grab_D_obey_spaces:w , +% \@@_grab_D_obey_spaces_no_strip:w , +% \@@_grab_D_long:w , +% \@@_grab_D_long_no_strip:w , +% \@@_grab_D_long_obey_spaces:w , +% \@@_grab_D_long_obey_spaces_no_strip:w +% } +% \changes{v1.1a}{2022/08/10}{Add support for skipping brace stripping} +% \changes{v1.3a}{2025-01-23}{Auto-generate D-grabbers} +% The generic delimited argument grabber. The auxiliary function does +% a peek test before calling \cs{@@_grab_D_call:Nw}, so that the +% optional nature of the argument works as expected. +% \begin{macrocode} +\tl_map_inline:nn { { } { _long } } { - \@@_grab_D_aux:NNnNNN #1 #2 {#3} \cs_set_protected:Npn - \@@_peek_meaning_remove:NTF \use_none:n + \tl_map_inline:nn { { } { _obey_spaces } } + { + \tl_map_inline:nn { { } { _no_strip } } + { + \tl_map_inline:nn { { } { _verb_safe } } + { + \cs_new_protected:cpe { @@_grab_D #1 ##1 ####1 ########1 :w } + ################1################2################3 + \@@_run_code: + { + \exp_not:N \@@_grab_D_aux:NNnNNNN + ################1 ################2 {################3} + \str_if_eq:nnTF {#1} { _long } + \cs_set_protected:Npn + \cs_set_protected_nopar:Npn + \str_if_eq:nnTF {##1} { _obey_spaces } + { \exp_not:N \@@_peek_meaning_remove:NTF } + { \exp_not:N \@@_peek_nonspace_remove:NTF } + \str_if_eq:nnTF {####1} { _no_strip } + { \exp_not:N \use_none:n } + { \exp_not:N \use_ii:nn } + \str_if_eq:nnTF {########1} { _verb_safe } + { \exp_not:N \use:n } + { \exp_not:N \use_none:n } + } + } + } + } } % \end{macrocode} -% \begin{macro}{\@@_grab_D_aux:NNnNNN} +% \begin{macro}{\@@_grab_D_aux:NNnNNNN} +% \changes{v1.3a}{2025-01-23}{Extend to support \texttt{c}-type grabbing} +% \begin{macro}{\@@_grab_D_verb_safe:NN} +% \changes{v1.3a}{2025-01-23}{New macro} % \begin{macro}{\@@_grab_D_aux:NNnNN} % This is a bit complicated. The idea is that, in order to check for % nested optional argument tokens (\texttt{[[...]]} and so on) the @@ -3073,12 +3399,51 @@ % prevents loss of braces, and there is then a test to see if there are % nested delimiters to handle. % \begin{macrocode} -\cs_new_protected:Npn \@@_grab_D_aux:NNnNNN #1#2#3#4#5#6 +\group_begin: + \char_set_catcode_other:N \^^M + \cs_new_protected:Npn \@@_grab_D_aux:NNnNNNN #1#2#3#4#5#6#7 + { + \@@_grab_D_aux:NNnNN #1#2 {#3} #4 #6 + #7 + { + \group_begin: + \@@_grab_D_verb_safe:NN #1#5 + } + #5 #1 + { + #7 { \group_end: } + \@@_grab_D_call:Nw #1 + } + { + #7 { \group_end: } + \@@_add_arg:o \c_novalue_tl + } + } +\group_end: +% \end{macrocode} +% The only awkwardness here is the need to preserve the catcode of the search +% token: this is done low-level for performance reasons. Only values that +% are realistic are included. As this does not cover spaces when they are +% skipped that has to be covered separately. +% \begin{macrocode} +\cs_new_protected:Npn \@@_grab_D_verb_safe:NN #1#2 { - \@@_grab_D_aux:NNnNN #1#2 {#3} #4 #6 - #5 #1 - { \@@_grab_D_call:Nw #1 } - { \@@_add_arg:o \c_novalue_tl } + \cs_set_eq:NN \do \char_set_catcode_other:N + \dospecials + \char_set_catcode_other:N \^^M + \token_if_eq_meaning:NNT #2 \@@_peek_nonspace_remove:NTF + { \char_set_catcode_space:n { `\ } } + \use:c + { + char_set_catcode_ + \if_catcode:w \c_math_toggle_token #1 math_toggle \else: + \if_catcode:w ^ #1 math_superscript \else: + \if_catcode:w \c_math_subscript_token #1 math_subscript \else: + \if_catcode:w A #1 letter \else: + other \fi: \fi: \fi: \fi: + :N + } + #1 } % \end{macrocode} % Inside the \enquote{standard} grabber, there is a test to see if the @@ -3113,6 +3478,7 @@ % \end{macro} % \end{macro} % \end{macro} +% \end{macro} % % \begin{macro}{\@@_grab_D_nested:NNnN} % \begin{macro}{\@@_grab_D_nested:w} @@ -3300,7 +3666,6 @@ % \end{macro} % \end{macro} % -% % \begin{macro}{\@@_grab_m:w} % \begin{macro}{\@@_grab_m_long:w} % Collecting a single mandatory argument is quite easy. @@ -3663,20 +4028,37 @@ % \end{macro} % % \begin{macro}{\@@_grab_v_aux_catcodes:} +% \changes{v1.2g}{2025-01-21}{Store spaces and tabs as active chars} % \begin{macro}{\@@_grab_v_aux_abort:n} % The approach for short verbatim arguments is to make the end-line % character a macro parameter character: this is forbidden by the % rest of the code. Then the error branch can check what caused the % bail out and give the appropriate error message. % \begin{macrocode} +%\IncludeInRelease{2025/06/01}{\@@_grab_v_aux_catcodes:}% +% {Active~spaces~and~tabs} \cs_new_protected:Npn \@@_grab_v_aux_catcodes: { \cs_set_eq:NN \do \char_set_catcode_other:N \dospecials + \char_set_catcode_active:n { `\ } + \char_set_catcode_active:n { `\^^I } \bool_if:NTF \l_@@_long_bool { \char_set_catcode_other:n { \tex_endlinechar:D } } { \char_set_catcode_parameter:n { \tex_endlinechar:D } } } +%\EndIncludeInRelease +%\IncludeInRelease{2020/10/01}{\@@_grab_v_aux_catcodes:}% +% {Active~spaces~and~tabs} +%\cs_new_protected:Npn \@@_grab_v_aux_catcodes: +% { +% \cs_set_eq:NN \do \char_set_catcode_other:N +% \dospecials +% \bool_if:NTF \l_@@_long_bool +% { \char_set_catcode_other:n { \tex_endlinechar:D } } +% { \char_set_catcode_parameter:n { \tex_endlinechar:D } } +% } +%\EndIncludeInRelease \cs_new_protected:Npn \@@_grab_v_aux_abort:n #1 { \@@_grab_v_group_end: @@ -3703,26 +4085,38 @@ % % \begin{macro}{\@@_grab_v_aux_put:N} % \changes{v1.2d}{2024/03/21}{Collect \cs{endlinechar} as \cs{obeyedline}} -% Storing one token in the collected argument. Most tokens are -% converted to category code $12$, with the exception of active -% characters, and spaces (not sure what should be done for those). +% \changes{v1.2g}{2025-01-21}{Simplify catcode handling} +% Storing one token in the collected argument: everything as-is except +% for end-of-lines, with \cs{exp_not:N} to handle actives. % \begin{macrocode} -%\IncludeInRelease{2024/06/01}{\@@_grab_v_aux_put:N}% -% {Endlines~as~\obeyedline} +%\IncludeInRelease{2025-06-01}{\@@_grab_v_aux_put:N}% +% {Use~more~std~catcodes} \cs_new_protected:Npn \@@_grab_v_aux_put:N #1 { \tl_put_right:Nx \l_@@_v_arg_tl { - \token_if_active:NTF #1 + \int_compare:nNnTF {`#1} = \tex_endlinechar:D + { \exp_not:N \obeyedline } { \exp_not:N #1 } - { - \int_compare:nNnTF {`#1} = \tex_endlinechar:D - { \exp_not:N \obeyedline } - { \token_to_str:N #1 } - } } } %\EndIncludeInRelease +%\IncludeInRelease{2024/06/01}{\@@_grab_v_aux_put:N}% +% {Endlines~as~\obeyedline} +%\cs_new_protected:Npn \@@_grab_v_aux_put:N #1 +% { +% \tl_put_right:Nx \l_@@_v_arg_tl +% { +% \token_if_active:NTF #1 +% { \exp_not:N #1 } +% { +% \int_compare:nNnTF {`#1} = \tex_endlinechar:D +% { \exp_not:N \obeyedline } +% { \token_to_str:N #1 } +% } +% } +% } +%\EndIncludeInRelease %\IncludeInRelease{2020/10/01}{\@@_grab_v_aux_put:N}% % {Endlines~as~\obeyedline} %\cs_new_protected:Npn \@@_grab_v_aux_put:N #1 @@ -4568,9 +4962,9 @@ % \begin{macro}{\@@_cmd_type_cases:NnnnnnF} % \changes{v1.0d}{2021/04/19}{Renamed \cs{__cmd_cmd_if_xparse:NTF} to % \cs{__kernel_cmd_if_xparse:NTF} for cross-module usage} -% \changes{v1.0d}{2021/07/30}{Added \cs{@@_cmd_type_cases:NnnnnF} for +% \changes{v1.0d}{2021/07/30}{Added \cs{__cmd_cmd_type_cases:NnnnnF} for % \cs{NewCommandCopy} and \cs{ShowCommand} support} -% \changes{v1.0l}{2022/03/18}{Fix \cs{@@_cmd_type_cases:NnnnnF} +% \changes{v1.0l}{2022/03/18}{Fix \cs{__cmd_cmd_type_cases:NnnnnF} % prematurely expanding macros (gh/795)} % \changes{v1.2b}{2023/12/01}{Extend for optimized commands} % \changes{v1.2e}{2024/04/17}{Use \cs{__kernel_cs_parameter_spec:N} instead @@ -4716,12 +5110,13 @@ % \changes{v1.0f}{2021/06/04}{Normalize various error messages} % \changes{v1.2c}{2023/12/22} % {Generalize message \texttt{invalid-bang} (gh/1198)} +% \changes{v1.3a}{2025-01-23}{Generalize message \texttt{arg-after-body}} % \begin{macrocode} \msg_new:nnnn { cmd } { arg-after-body } - { Argument~type~'b'~must~be~last~in~#1. } + { Argument~type~'#1'~must~be~last~in~#2. } { - The~'b'~argument~type~must~come~last~but~it~is~followed~ - by~'#2'~in~the~argument~specification.~This~is~not~allowed. + The~'#1'~argument~type~must~come~last~but~it~is~followed~ + by~'#3'~in~the~argument~specification.~This~is~not~allowed. \c_@@_ignore_def_tl } \msg_new:nnnn { cmd } { bad-arg-spec } @@ -4745,6 +5140,22 @@ with~a~command~that~was~never~defined. \c_@@_ignore_def_tl } +% \end{macrocode} +% \changes{v1.3a}{2025-01-23}{New message \texttt{chars-dropped-first-line}} +% \changes{v1.3a}{2025-01-23}{New message \texttt{chars-dropped-last-line}} +% \begin{macrocode} +\msg_new:nnnn { cmd } { chars-dropped-first-line } + { Characters~'#1'~dropped~on~first~line~of~#2~environment. } + { + LaTeX~was~collecting~a~verbatim-like~environment,~and~the~characters~ + '#1'~were~found~after~'\begin{#2}~on~the~first~line:~this~is~not~supported. + } +\msg_new:nnnn { cmd } { chars-dropped-last-line } + { Characters~'#1'~dropped~after~end~of~#2~environment. } + { + LaTeX~was~collecting~a~verbatim-like~environment,~and~the~characters~ + '#1'~were~found~after~\end{#2}~on~the~last~line:~this~is~not~supported. + } \msg_new:nnnn { cmd } { env-already-defined } { Environment~'#1'~already~defined. } { @@ -5295,8 +5706,10 @@ % % \begin{macro}{\ProcessList} % To support \cs{SplitList}. +% \changes{v1.3b}{2025-02-01} +% {Use \cs{tl_map_tokens:nn} instead of \cs{tl_map_function:nN}} % \begin{macrocode} -\cs_new_eq:NN \ProcessList \tl_map_function:nN +\cs_new_eq:NN \ProcessList \tl_map_tokens:nn % \end{macrocode} % \end{macro} % diff --git a/Master/texmf-dist/source/latex-dev/base/ltcmdhooks.dtx b/Master/texmf-dist/source/latex-dev/base/ltcmdhooks.dtx index 0d14ebfe6bb..8c948105606 100644 --- a/Master/texmf-dist/source/latex-dev/base/ltcmdhooks.dtx +++ b/Master/texmf-dist/source/latex-dev/base/ltcmdhooks.dtx @@ -1,7 +1,7 @@ % \iffalse meta-comment % %% From File: ltcmdhooks.dtx -%% Copyright (C) 2020-2024 +%% Copyright (C) 2020-2025 %% Frank Mittelbach, Phelype Oleinik, The LaTeX Project % % It may be distributed and/or modified under the conditions of the @@ -20,7 +20,7 @@ %<*driver> % \fi \ProvidesFile{ltcmdhooks.dtx} - [2024/10/22 v1.0j LaTeX Kernel (Command hooks)] + [2024/12/25 v1.0k LaTeX Kernel (Command hooks)] % \iffalse % \documentclass{l3doc} @@ -513,7 +513,7 @@ % \begin{macro}{\c_@@_hash_tl,\c_@@_hashes_tl} % Two constant token lists that contain one and two parameter tokens. % \changes{v1.0g}{2023/04/06} -% {Rename to \cs{c_@@_hashes_tl} and add \cs{c_@@_hash_tl} (hook-args).} +% {Rename to \cs{c__hook_hashes_tl} and add \cs{c__hook_hash_tl} (hook-args)} % \begin{macrocode} \tl_const:Nn \c_@@_hash_tl { # } \tl_const:Nn \c_@@_hashes_tl { # # } @@ -577,20 +577,53 @@ % otherwise it tries to update the hook. % \changes{v1.0d}{2021/08/25}{Simplify generic hook detection} % \begin{macrocode} -%\IncludeInRelease{2021/11/15}{\@@_try_put_cmd_hook:n}% -% {Standardise~generic~hook~names} +%\IncludeInRelease{2024/12/22}{\@@_try_put_cmd_hook:n}% +% {Don't~define~command} \cs_new_protected:Npn \@@_try_put_cmd_hook:n #1 { \@@_try_put_cmd_hook:w #1 / / / \s_@@_mark {#1} } \cs_new_protected:Npn \@@_try_put_cmd_hook:w #1 / #2 / #3 / #4 \s_@@_mark #5 { \@@_debug:n { \iow_term:n { ->~Adding~cmd~hook~to~'#2'~(#3): } } - \exp_args:Nc \@@_patch_cmd_or_delay:Nnn {#2} {#2} {#3} +% \end{macrocode} +% \cs{@@_patch_cmd_or_delay:Nnn} expects the command to be patched +% as its first argument so we need to construct it from its name +% (\texttt{\#2}). However, at this moment it may not exist yet, so +% using \cs{cs:w} would incorrectly turn it from +% \enquote{undefined} into \cs{relax}. We therefore use the +% following curious construction: we start a group and expand out of +% it to call \cs{cs:w}. If the command is now changed to \cs{relax} +% the \cs{group_end:} will undo that change, but the token is +% nevertheless there to be consumed by \cs{@@_patch_cmd_or_delay:Nnn}. +% \changes{v1.0k}{2024/12/22}{Avoid defining command while adding a cmd +% hook (gh/1591)} +% \begin{macrocode} + \group_begin: + \exp_after:wN + \group_end: + \exp_after:wN + \@@_patch_cmd_or_delay:Nnn + \cs:w #2\cs_end: + {#2} {#3} } %\EndIncludeInRelease % \end{macrocode} % % \begin{macrocode} +%\IncludeInRelease{2021/11/15}{\@@_try_put_cmd_hook:n}% +% {Standardise~generic~hook~names} +%\cs_new_protected:Npn \@@_try_put_cmd_hook:n #1 +% { \@@_try_put_cmd_hook:w #1 / / / \s_@@_mark {#1} } +%\cs_new_protected:Npn \@@_try_put_cmd_hook:w +% #1 / #2 / #3 / #4 \s_@@_mark #5 +% { +% \@@_debug:n { \iow_term:n { ->~Adding~cmd~hook~to~'#2'~(#3): } } +% \exp_args:Nc \__hook_patch_cmd_or_delay:Nnn {#2} {#2} {#3} +% } +%\EndIncludeInRelease +% \end{macrocode} +% +% \begin{macrocode} %\IncludeInRelease{2021/06/01}{\@@_try_put_cmd_hook:n}% % {Standardise~generic~hook~names} %\cs_new_protected:Npn \@@_try_put_cmd_hook:n #1 @@ -849,7 +882,7 @@ % % \changes{v1.0f}{2021/10/20} % {Correct patching by expansion+redefinition when the macro -% contains a parameter token (gh/697).} +% contains a parameter token (gh/697)} % Patching with expansion+redefinition is trickier than it looks like % at first glance. Suppose the simple definition: % \begin{verbatim} @@ -964,7 +997,7 @@ % Here we'll conditionally add |[|\ldots|]| around the first % parameter: % \changes{v1.0g}{2023/04/06} -% {Rename to \cs{c_@@_hashes_tl} (hook-args).} +% {Rename to \cs{c__hook_hashes_tl} (hook-args)} % \begin{macrocode} \bool_if:NTF #1 { \@@_tmp:w \tl_set:Nx { [ \c_@@_hashes_tl 1 ] } } @@ -1032,7 +1065,7 @@ % the extent we want. Code stored in the hook and other metadata % about it are not lost in the process. % \changes{v1.0h}{2023/05/21} -% {Changes to allow support arguments in cmd hooks (cmd-args).} +% {Changes to allow support arguments in cmd hooks (cmd-args)} % \begin{macrocode} \@@_disable:n { cmd / #3 / #4 } \cs_undefine:c { c_@@_cmd / #3 / #4_parameter_tl } @@ -1242,7 +1275,7 @@ % then checks if the token is \cs{c_@@_hashes_tl}, and if so just leaves % it. % \changes{v1.0g}{2023/04/06} -% {Add case for \cs{c_@@_hashes_tl} (hook-args).} +% {Add case for \cs{c__hook_hashes_tl} (hook-args)} % \begin{macrocode} \cs_new:Npn \@@_double_hashes_output:N #1 { @@ -1543,7 +1576,7 @@ % hashes, and not other characters, and that there is no % \enquote{trick parameter}. % \changes{v1.0h}{2023/05/21} -% {Macro added (cmd-args).} +% {Macro added (cmd-args)} % \begin{macrocode} %\IncludeInRelease{2023/06/01}{\@@_guess_arg_count:NN} % {cmd~hooks~with~args} @@ -1592,7 +1625,7 @@ % Here, when patching by retokenization, we can only guess the number % of arguments of the macro. % \changes{v1.0h}{2023/05/21} -% {Changes to allow support arguments in cmd hooks (cmd-args).} +% {Changes to allow support arguments in cmd hooks (cmd-args)} % \begin{macrocode} \@@_guess_arg_count:NN #1 \l_@@_patch_num_args_int % \end{macrocode} @@ -1614,7 +1647,7 @@ { #### } { \c_hash_str } } % \end{macrocode} -% Then, make make some things \tn{relax} to avoid lots of +% Then, make some things \tn{relax} to avoid lots of % \tn{noexpand} below. % \begin{macrocode} \cs_set_eq:NN \kerneltmpDoNotUse \scan_stop: diff --git a/Master/texmf-dist/source/latex-dev/base/ltcntrl.dtx b/Master/texmf-dist/source/latex-dev/base/ltcntrl.dtx index fad5bf479ec..6c406240be8 100644 --- a/Master/texmf-dist/source/latex-dev/base/ltcntrl.dtx +++ b/Master/texmf-dist/source/latex-dev/base/ltcntrl.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2024 +% Copyright (C) 1993-2025 % The LaTeX Project and any individual authors listed elsewhere % in this file. % diff --git a/Master/texmf-dist/source/latex-dev/base/ltcounts.dtx b/Master/texmf-dist/source/latex-dev/base/ltcounts.dtx index 1d3f2024898..da88a92b7a5 100644 --- a/Master/texmf-dist/source/latex-dev/base/ltcounts.dtx +++ b/Master/texmf-dist/source/latex-dev/base/ltcounts.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2024 +% Copyright (C) 1993-2025 % The LaTeX Project and any individual authors listed elsewhere % in this file. % @@ -33,7 +33,7 @@ %<*driver> % \fi \ProvidesFile{ltcounts.dtx} - [2024/10/26 v1.1p LaTeX Kernel (Counters)] + [2025/01/22 v1.2a LaTeX Kernel (Counters)] % \iffalse \documentclass{ltxdoc} \GetFileInfo{ltcounts.dtx} @@ -56,6 +56,7 @@ % % \fi % +% \providecommand\env[1]{\texttt{#1}} % % \changes{v1.0c}{1994/03/29} % {Create file from parts of ltmiscen and ltherest.} @@ -63,7 +64,9 @@ % \changes{v1.1d}{1996/04/23}{Documentation improvements} % % \section{Counters and Lengths} -% Commands for defining and using counters. This file defines: +% Commands for defining and using counters. +% This file defines the following commands. In each case \marg{counter} may be +% |*| denoting the current counter as set by a previous |\refstepcounter|. % % \DescribeMacro{\newcounter} % To define a new counter. @@ -72,13 +75,13 @@ % To set the value of counters. % % \DescribeMacro{\addtocounter} -% Increase the counter |#1| by the number |#2|. +% Increase the \marg{counter} |#1| by the number |#2|. % % \DescribeMacro{\stepcounter} -% Increase a counter by one. +% Increase the \marg{counter} by one. % % \DescribeMacro{\refstepcounter} -% Increase a counter by one, also setting the value used by |\label|. +% Increase the \marg{counter} by one, also setting the value used by |\label|. % % % \DescribeMacro{\value} @@ -113,7 +116,8 @@ % |\the|\meta{within-counter}.\meta{format}\marg{counter} with \cs{arabic} as % the default for \meta{format}. % Star form omits redefining the print representation. - +% +% The |*| alias for the current counter may not be used in either argument. % % \DescribeMacro\counterwithout % |\counterwithout|\oarg{format}\marg{counter}\marg{within-counter}: @@ -124,6 +128,8 @@ % the default for \meta{format}. % Star form omits redefining the print representation. % +% The |*| alias for the current counter may not be used in either argument. +% % \MaybeStop{} % % \begin{macrocode} @@ -246,7 +252,19 @@ % \end{macrocode} % \end{macro} % -% \begin{macro}{\@newctr} +% \begin{macro}{\c@*} +% \changes{v1.2a}{2025/01/22}{\cs{c@*} added (gh/1632)} +% Make the current counter available as a \LaTeX\ counter +% with name |*|, so |\alph*| returns the current +% counter as a letter, |\stepcounter{*}| increments the current +% counter, etc. +% \begin{macrocode} +\protected\expandafter + \def\csname c@*\endcsname{\value\@currentcounter} +% \end{macrocode} +% \end{macro} +% +%\begin{macro}{\@newctr} % \changes{v1.0d}{1994/04/09} % {\cs{@nocnterr} now has counter name argument} % \changes{v1.0e}{1994/04/17} @@ -422,19 +440,27 @@ \endgroup}} % \end{macrocode} % \end{macro} - - - +% % \begin{macro}{\@ifbothcounters} % \changes{v1.1k}{2018/03/08}{Interface added} +% \changes{v1.2a}{2025/01/22}{Guard against star alias.} % Test if arg |#1| and |#2| are counters and if so execute |#3|. % \begin{macrocode} +\begingroup\catcode`\*=11 \lowercase{\endgroup \def\@ifbothcounters#1#2#3{% +% \end{macrocode} +% \begin{macrocode} + \begingroup\let\c@*\@undefined +% \end{macrocode} +% \begin{macrocode} \@ifundefined{c@#1}{\@nocounterr{#1}}% {% else counter is defined \@ifundefined{c@#2}{\@nocounterr{#2}}% {% else both counter and within are defined - #3}}} + #3}}% +% \end{macrocode} +% \begin{macrocode} + \endgroup}} % \end{macrocode} % \end{macro} % @@ -621,7 +647,7 @@ % |\@Roman\FOOcounter| % Representation of |\FOOcounter| as upper-case % Roman numerals. - +% % \changes{v1.1f}{1997/10/06}{Change \cs{@Roman} to be fully % expandable, so that the result is written properly to files.} % \begin{macrocode} diff --git a/Master/texmf-dist/source/latex-dev/base/ltdefns.dtx b/Master/texmf-dist/source/latex-dev/base/ltdefns.dtx index 5185a076eb2..4784c5dec0d 100644 --- a/Master/texmf-dist/source/latex-dev/base/ltdefns.dtx +++ b/Master/texmf-dist/source/latex-dev/base/ltdefns.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2024 +% Copyright (C) 1993-2025 % The LaTeX Project and any individual authors listed elsewhere % in this file. % @@ -32,7 +32,7 @@ %<*driver> % \fi \ProvidesFile{ltdefns.dtx} - [2024/09/06 v1.5t LaTeX Kernel (definition commands)] + [2025/01/24 v1.5t LaTeX Kernel (definition commands)] % \iffalse \documentclass{ltxdoc} \GetFileInfo{ltdefns.dtx} @@ -943,6 +943,15 @@ % \end{macro} % \end{macro} % +% There are also \cs{@gobble@om}, \cs{@gobble@som}, +% \cs{@gobble@with@sphack@om}, and \cs{@gobble@with@sphack@som}. They +% accept an optional and a mandatory argument, possibly preceeded by a +% star. In all cases the expansion is empty or just manipulates the +% spaces around the command. Used to disable commands such as +% \cs{index} or \cs{label} in certain situations. Since they are +% defined with \cs{DeclareDocumentCommand}, which is not yet available +% at this point, the actual definition happens in \texttt{ltsect.dtx}. +% % \begin{macro}{\@firstofone} % \begin{macro}{\@firstoftwo} % \begin{macro}{\@secondoftwo} diff --git a/Master/texmf-dist/source/latex-dev/base/ltdirchk.dtx b/Master/texmf-dist/source/latex-dev/base/ltdirchk.dtx index cefbdefce6f..5fd38cb9816 100644 --- a/Master/texmf-dist/source/latex-dev/base/ltdirchk.dtx +++ b/Master/texmf-dist/source/latex-dev/base/ltdirchk.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2024 +% Copyright (C) 1993-2025 % The LaTeX Project and any individual authors listed elsewhere % in this file. % diff --git a/Master/texmf-dist/source/latex-dev/base/lterror.dtx b/Master/texmf-dist/source/latex-dev/base/lterror.dtx index 7170e51f8c6..99653108864 100644 --- a/Master/texmf-dist/source/latex-dev/base/lterror.dtx +++ b/Master/texmf-dist/source/latex-dev/base/lterror.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2024 +% Copyright (C) 1993-2025 % The LaTeX Project and any individual authors listed elsewhere % in this file. % diff --git a/Master/texmf-dist/source/latex-dev/base/ltexpl.dtx b/Master/texmf-dist/source/latex-dev/base/ltexpl.dtx index 0133688af6b..1e01684ec06 100644 --- a/Master/texmf-dist/source/latex-dev/base/ltexpl.dtx +++ b/Master/texmf-dist/source/latex-dev/base/ltexpl.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 2019-2024 +% Copyright (C) 2019-2025 % The LaTeX Project and any individual authors listed elsewhere % in this file. % diff --git a/Master/texmf-dist/source/latex-dev/base/ltfilehook.dtx b/Master/texmf-dist/source/latex-dev/base/ltfilehook.dtx index 02e95d0f8fa..e8f5257003d 100644 --- a/Master/texmf-dist/source/latex-dev/base/ltfilehook.dtx +++ b/Master/texmf-dist/source/latex-dev/base/ltfilehook.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 2020-2024 +% Copyright (C) 2020-2025 % Frank Mittelbach, Phelype Oleinik and The LaTeX Project % % This file is part of the LaTeX base system. @@ -34,7 +34,7 @@ %\iffalse %<*driver,structuredlog> %\fi -\def\ltfilehookdate{2024/03/13} +\def\ltfilehookdate{2025/01/25} \def\ltfilehookversion{v1.0o} %\iffalse % @@ -140,11 +140,11 @@ % % \begin{tabbing} % mm\=mm\=mm\=mm\=\kill -% \>\cs{UseHook}\marg{\hook{file/before}} \\ -% \>\cs{UseHook}\marg{\hook{file/\meta{file name}/before}} \\ +% \>\cs{UseHook}\texttt{\{\hook{file/before}\}} \\ +% \>\cs{UseHook}\texttt{\{\hook{file/\meta{file name}/before}\}} \\ % \>\> \meta{file contents} \\ -% \>\cs{UseHook}\marg{\hook{file/\meta{file name}/after}} \\ -% \>\cs{UseHook}\marg{\hook{file/after}} +% \>\cs{UseHook}\texttt{\{\hook{file/\meta{file name}/after}\}} \\ +% \>\cs{UseHook}\texttt{\{\hook{file/after}\}} % \end{tabbing} % % The file hooks only refer to the file by its name and extension, @@ -242,31 +242,32 @@ % \meta{name} (without extension). % % \end{description} -% \end{variable} % All \hook{/after} hooks are implemented as reversed hooks. +% \end{variable} +% +% \bigskip % -% \noindent The overall sequence of execution for \cs{usepackage} -% and friends is therefore: +% The overall sequence of execution for \cs{usepackage} +% and friends is: % \begin{tabbing} % mm\=mm\=mm\=mm\=\kill -% \>\cs{UseHook}\marg{\hook{package/before}} \\ -% \>\cs{UseHook}\marg{\hook{package/\meta{package name}/before}} \\[5pt] -% \>\>\cs{UseHook}\marg{\hook{file/before}} \\ -% \>\>\cs{UseHook}\marg{\hook{file/\meta{package name}.sty/before}} \\ +% \>\cs{UseHook}\texttt{\{\hook{package/before}\}} \\ +% \>\cs{UseOneTimeHook}\texttt{\{\hook{package/\meta{package name}/before}\}} \\[5pt] +% \>\>\cs{UseHook}\texttt{\{\hook{file/before}\}} \\ +% \>\>\cs{UseHook}\texttt{\{\hook{file/\meta{package name}.sty/before}\}} \\ % \>\>\> \meta{package contents} \\ -% \>\>\cs{UseHook}\marg{\hook{file/\meta{package name}.sty/after}} \\ -% \>\>\cs{UseHook}\marg{\hook{file/after}} \\[5pt] +% \>\>\cs{UseHook}\texttt{\{\hook{file/\meta{package name}.sty/after}\}} \\ +% \>\>\cs{UseHook}\texttt{\{\hook{file/after}\}} \\[5pt] % \>\>\emph{code from \cs{AtEndOfPackage} if % used inside the package} \\[5pt] -% \>\cs{UseHook}\marg{\hook{package/\meta{package name}/after}} \\ -% \>\cs{UseHook}\marg{\hook{package/after}} +% \>\cs{UseOneTimeHook}\texttt{\{\hook{package/\meta{package name}/after}\}} \\ +% \>\cs{UseHook}\texttt{\{\hook{package/after}\}} % \end{tabbing} % and similar for class file loading, except that \hook{package/} % is replaced by \hook{class/} and \cs{AtEndOfPackage} by % \cs{AtEndOfClass}. % -% If a package or class is not loaded (or it was loaded before the -% hooks were set) none of the hooks are executed! +% If a package or class is not loaded none of the hooks are executed! % % All class or package hooks involving the name of the class or % package are implemented as @@ -282,6 +283,7 @@ % % % +% % \subsection{Hooks for \cs{include} files} % % To manage \cs{include} files, \LaTeX{} issues a \cs{clearpage} @@ -622,7 +624,7 @@ % need \cs{CurrentFile} earlier (\cs{@onefilewithoptions}), so these % are manually used elsewhere as well. % \changes{v1.0h}{2021/03/18} -% {Define \cs{g_@@_input_file_seq} to avoid losing data when +% {Define \cs{g__filehook_input_file_seq} to avoid losing data when % rolling back.} % \changes{v1.0l}{2021/08/27}{Internal message name changes} % \begin{macrocode} @@ -1276,6 +1278,10 @@ % \end{macro} % % +% \begin{macrocode} +%<@@=filehook> +% \end{macrocode} +% % % \begin{macro}{\@@_set_curr_file:nNN, % \@@_set_curr_file_assign:nnnNN} @@ -1292,9 +1298,8 @@ % %<*2ekernel|latexrelease> %\IncludeInRelease{2020/10/01}% -% {@@_set_curr_file:nNN}{Set curr file}% +% {\@@_set_curr_file:nNN}{Set curr file}% \ExplSyntaxOn -%<@@=filehook> \cs_new_protected:Npn \@@_set_curr_file:nNN #1 { \exp_args:Nf \@@_file_parse_full_name:nN {#1} diff --git a/Master/texmf-dist/source/latex-dev/base/ltfiles.dtx b/Master/texmf-dist/source/latex-dev/base/ltfiles.dtx index 2e2a8884a01..40c0b7dff8e 100644 --- a/Master/texmf-dist/source/latex-dev/base/ltfiles.dtx +++ b/Master/texmf-dist/source/latex-dev/base/ltfiles.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2024 +% Copyright (C) 1993-2025 % The LaTeX Project and any individual authors listed elsewhere % in this file. % diff --git a/Master/texmf-dist/source/latex-dev/base/ltfinal.dtx b/Master/texmf-dist/source/latex-dev/base/ltfinal.dtx index 7be7c033b68..ae236de2ebe 100644 --- a/Master/texmf-dist/source/latex-dev/base/ltfinal.dtx +++ b/Master/texmf-dist/source/latex-dev/base/ltfinal.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2024 +% Copyright (C) 1993-2025 % The LaTeX Project and any individual authors listed elsewhere % in this file. % diff --git a/Master/texmf-dist/source/latex-dev/base/ltfloat.dtx b/Master/texmf-dist/source/latex-dev/base/ltfloat.dtx index ef057def0b8..7edce570cdd 100644 --- a/Master/texmf-dist/source/latex-dev/base/ltfloat.dtx +++ b/Master/texmf-dist/source/latex-dev/base/ltfloat.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2024 +% Copyright (C) 1993-2025 % The LaTeX Project and any individual authors listed elsewhere % in this file. % diff --git a/Master/texmf-dist/source/latex-dev/base/ltfntcmd.dtx b/Master/texmf-dist/source/latex-dev/base/ltfntcmd.dtx index 097b8f692e4..12b2d7af57c 100644 --- a/Master/texmf-dist/source/latex-dev/base/ltfntcmd.dtx +++ b/Master/texmf-dist/source/latex-dev/base/ltfntcmd.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2024 +% Copyright (C) 1993-2025 % The LaTeX Project and any individual authors listed elsewhere % in this file. % diff --git a/Master/texmf-dist/source/latex-dev/base/ltfssaxes.dtx b/Master/texmf-dist/source/latex-dev/base/ltfssaxes.dtx index 56506a97601..b0dcf9c74ab 100644 --- a/Master/texmf-dist/source/latex-dev/base/ltfssaxes.dtx +++ b/Master/texmf-dist/source/latex-dev/base/ltfssaxes.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 2019-2024 +% Copyright (C) 2019-2025 % The LaTeX Project and any individual authors listed elsewhere % in this file. % @@ -28,14 +28,14 @@ % \fi % \iffalse %%% From File: ltfssaxes.dtx -%% Copyright (C) 2019-2020 Frank Mittelbach +%% Copyright (C) 2019-2020 Frank Mittelbach (initial implementation) % %<*driver> % \fi % % \ProvidesFile{ltfssaxes.dtx} - [2024/11/19 v1.0j LaTeX Kernel (NFSS Axes handing)] + [2024/12/16 v1.0k LaTeX Kernel (NFSS Axes handing)] % \iffalse \documentclass{ltxdoc} \begin{document} @@ -59,8 +59,8 @@ % \maketitle % % This file contains the implementation for handling extra axes -% splitting the series and the values into sub-categories. selection -% commands. See other parts of the \LaTeX\ distribution, or \emph{The +% by splitting the series and the shape values into sub-categories. +% See other parts of the \LaTeX\ distribution, or \emph{The % \LaTeX\ Companion} for higher level documentation of the % \LaTeX\ Font Selection Scheme. % @@ -81,7 +81,7 @@ % \end{macrocode} % % \begin{macrocode} -%\IncludeInRelease{2020/02/02}% +%\IncludeInRelease{2025/06/01}% % {\DeclareFontSeriesChangeRule}{Series change rules}% % \end{macrocode} % @@ -91,43 +91,43 @@ % % In the original NFSS implementation the series was a single % attribute stored in \cs{f@series} and so one always had to specify -% both weight and width together. This means it was impossible to -% typeset, a paragraph in a condensed font and inside have a few words +% both weight and width together. This meant that it was impossible to +% typeset a paragraph in a condensed font and inside have a few words % in bold weight (but still condensed) without doing this manually by % requesting \verb=\fontseries{bc}\selectfont=. % -% The new implementation now works differently by looking both at the -% current value of \cs{f@series} and the requested new series and out -% of that combination selects a resulting series value. Thus, if the -% current series is \texttt{c} and we ask for \texttt{b} we now get +% The new implementation now works differently, by looking at both the +% current value of \cs{f@series} and the requested new series; these +% are then used to select a new series value. Thus, if the +% current series is \texttt{c} and we ask for \texttt{b} we now get % \texttt{bc}. % % This is done by consulting a simple lookup table. This table is -% configurable (though most likely that flexibility will seldom of -% ever be needed) Adding or changing entries in this table are done +% configurable (though most likely that flexibility will seldom if +% ever be needed). Adding or changing entries in this table is done % with \cs{DeclareFontSeriesChangeRule}. % % \subsection{The series lookup table} % % % \begin{macro}{\DeclareFontSeriesChangeRule} -% The \cs{DeclareFontSeriesChangeRule} defines entries in a simple +% The macro \cs{DeclareFontSeriesChangeRule} defines entries in a simple % database (implemented as a set of commands) that define mappings -% between from an existing series and requested new series and maps -% that to a result series (and additionally offers an alternative -% if the desired one is not existing): +% from the current series and a requested new series to a result series +% (and additionally offers an alternative if the desired one is +% unavailable): % \begin{itemize} % \item[\texttt{\#1}] current \cs{f@series} % \item[\texttt{\#2}] requested new series -% \item[\texttt{\#3}] result (if that exist for the given font family +% \item[\texttt{\#3}] result (provided this series exists in the given font family) % \item[\texttt{\#4}] alternative result (if \texttt{\#3} does not exist) % \end{itemize} % If an \texttt{.fd} file has its own substitution rules then % \texttt{\#3} exist and thus \texttt{\#4} is not applied. % -% If there is no matching database entry or if neither the result -% nor the alternate result exist in the font family the requested -% new series is used (which then may trigger substitutions later on. +% If there is no matching database entry, or if neither the result +% nor the alternative result exists in this font family, then the requested +% new series is used (which then may trigger substitutions later on). % \begin{macrocode} \def\DeclareFontSeriesChangeRule#1#2#3#4{% \@namedef{series@#1@#2}{{#3}{#4}}} @@ -139,9 +139,11 @@ % The rules set up use explicit series values not \cs{..default} % indirections; my current feeling is that this is in fact better. % -% With 9 weights and 9 width classes this table is getting a bit large -% in the end (324 entries) but on the other hand it doesn't change and -% accessing speed and it is fast this way. +% With 9~weight values (from \texttt{ul} to \texttt{ub}) and 9~width values +% (from \texttt{uc} to \texttt{ux}), this table is now rather large +% (far more than 1000~entries), but, on the other hand, the table +% doesn't change and accessing rules is fast when using a table implemented +% in this way. % % We could alternatively split the axis and maintain weight and width % separately, but that would take more processing time and would not @@ -152,38 +154,95 @@ % \begin{itemize} % \item % -% We make \texttt{m} to reset both weight and width (as this is +% We make \texttt{m} reset both weight and width (as this is % how it always worked). To reset just the width \texttt{?m} is -% provided and to reset just the weight \texttt{m?}. +% provided and to reset just the weight \texttt{m?}\ is provided. % % \item % -% We do support ``\texttt{m}\textit{width}'' and -% ``\textit{weight}\texttt{m}'', e.g., \texttt{mec} to mean ``go to +% We support ``\texttt{m}\meta{width}'' and +% ``\meta{weight}\texttt{m}'', e.g., \texttt{mec} to mean ``go to % medium weight and extra-condensed width''. At the end of the % process we automatically drop any leftover \texttt{m} in the % series name (unless it is just a single \texttt{m}). % +% \item +% +% If there is no table entry then the requested series is used +% unconditionally. This means that we usually do not need entries +% where the second argument (the requested series) and the third argument +% (the result series) are identical (unless we want to use the fourth +% argument to specify an alternative result series). In particular, +% this means: +% \begin{itemize} +% \item +% +% Any request for \texttt{m} needs no entry, i.e., there are no entries +% which have \texttt{m} as the second argument. +% +% \item +% +% Any request to set both weight and width (e.g., \texttt{sbx} or +% \texttt{ulc}) needs no entry. For that reason, there are no entries +% which have a weight+width as second argument (except for cases +% involving \texttt{bx}, see below). In particular, this is also true +% for cases involving \texttt{m}, e.g., \texttt{bm} (bold medium width) +% which automatically gets reduced to \texttt{b}, or \texttt{mc} +% (medium weight condensed) which becomes \texttt{c} as a result. +% +% There is one exception: we do have rules for a request for +% \texttt{bx}; this is because the Computer Modern fonts (or related +% families like Latin Modern) need \texttt{bx} as their bold series +% default (\cs{bfdefault}), +% since they only have a \texttt{b} series for a +% restricted set of font faces. Many other font families have only +% \texttt{b} but no \texttt{bx}, so we have explicit rules +% that fall back from \texttt{bx} to \texttt{b}. +% \end{itemize} +% +% \item +% +% For each combination of a non-\texttt{m} \meta{weight} and a +% non-\texttt{m} \meta{width}, there are 19~entries which have +% ``\meta{weight}\meta{width}'' as first argument: 8~of them have +% the weight values from \texttt{ul} to \texttt{ub} except \texttt{m} as +% second argument, another 8~have the width values from \texttt{uc} +% to \texttt{ux} except \texttt{m} as second argument, and (further down +% in this file) there is one entry which has \texttt{bx} as second +% argument and two further entries which have \texttt{m?}\ and +% \texttt{?m} as second argument. Rules which have \texttt{m} or a +% weight+width (other than \texttt{bx}) as second argument aren't needed +% (see above). % % \item % -% If there is no table entry then the target series is used -% unconditionally. This means that any request to set both weight -% and width (e.g. \texttt{bx} or \texttt{ulc}) needs no table -% entries. -% For that reason there are no entries which have a weight+width as -% request (i.e., second argument). +% For each non-\texttt{m} \meta{weight}, there are at least 11~entries +% which have ``\meta{weight}'' as first argument: 8~of them have the +% width values from \texttt{uc} to \texttt{ux} except \texttt{m} as +% second argument, and (further down in this file) there is one entry +% which has \texttt{bx} as second argument and two further entries +% which have \texttt{m?}\ and \texttt{?m} as second argument. Rules +% which have a single weight value as second argument aren't needed +% because the second and third arguments would then be identical. In +% some cases, there are extra rules which make use of the fourth +% argument to specify an alternative result series. +% +% \item % -% In particular this is also true for cases involving \texttt{m}, -% e.g., \texttt{bm} (bold medium width) which automatically gets -% reduced result in \texttt{b} or \texttt{mc} (medium weight -% condensed) which becomes \texttt{c} as a result. +% Similarily, for each non-\texttt{m} \meta{width}, there are at least +% 11~entries which have ``\meta{width}'' as first argument: 8~of them +% have the weight values from \texttt{ul} to \texttt{ub} except +% \texttt{m} as second argument, and (further down in this file) there +% is one entry which has \texttt{bx} as second argument and two +% further entries which have \texttt{m?}\ and \texttt{?m} as second +% argument. Rules which have a single width value as second argument +% aren't needed because the second and third arguments would then be +% identical. In some cases, there are extra rules which make use of the +% fourth argument to specify an alternative result series. % % \item % -% Only a few entries have ``alternative'' values and perhaps most of -% them should get dropped. Or maybe not \ldots{} needs some thought -% perhaps. +% Only a few entries have ``alternative'' values. % % The idea is that you don't want the normal substitution to kick % in because that would reset the shape first and it may be better @@ -192,503 +251,3119 @@ % shape to \texttt{n} and then find that \texttt{bc/n} doesn't % exist either and thus ending up with \texttt{m/n}. % -% \item +% We mainly do this when \texttt{sb}, \texttt{eb}, or +% \texttt{ub} is requested but can't be fulfilled. In that case it +% is better to try to stay with some sort of bold rather than +% ending up with \texttt{m}. There are some other cases where an +% ``alternative'' value is specified; these are explained below in +% the appropriate places. +% +% \end{itemize} % -% Also: while I did set up all nine standard weight values from -% \texttt{ul} to \texttt{ub} I only bothered to provide entries for -% \texttt{ec}, \texttt{sc}, \texttt{c} and \texttt{x}, because other levels of -% compression/expansion are not in any real fonts that I know. +% \changes{1.0k}{2024/12/13}{Minor modifications to a few +% \cs{DeclareFontSeriesChangeRule} entries (gh/1396)} +% \changes{1.0k}{2024/12/13}{Add numerous \cs{DeclareFontSeriesChangeRule} +% entries to support the full range of weights (from \texttt{ul} to +% \texttt{ub}) and widths (from \texttt{uc} to \texttt{ux}) (gh/1396)} +% \begin{macrocode} +\DeclareFontSeriesChangeRule {uluc}{ul} {uluc} {} +\DeclareFontSeriesChangeRule {uluc}{el} {eluc} {} +\DeclareFontSeriesChangeRule {uluc}{l} {luc} {} +\DeclareFontSeriesChangeRule {uluc}{sl} {sluc} {} +\DeclareFontSeriesChangeRule {uluc}{sb} {sbuc} {buc} +\DeclareFontSeriesChangeRule {uluc}{b} {buc} {} +\DeclareFontSeriesChangeRule {uluc}{eb} {ebuc} {buc} +\DeclareFontSeriesChangeRule {uluc}{ub} {ubuc} {buc} +\DeclareFontSeriesChangeRule {uluc}{uc} {uluc} {} +\DeclareFontSeriesChangeRule {uluc}{ec} {ulec} {} +\DeclareFontSeriesChangeRule {uluc}{c} {ulc} {} +\DeclareFontSeriesChangeRule {uluc}{sc} {ulsc} {} +\DeclareFontSeriesChangeRule {uluc}{sx} {ulsx} {} +\DeclareFontSeriesChangeRule {uluc}{x} {ulx} {} +\DeclareFontSeriesChangeRule {uluc}{ex} {ulex} {} +\DeclareFontSeriesChangeRule {uluc}{ux} {ulux} {} +% \end{macrocode} % -% Could and perhaps should be eventually extended to cover the -% whole set. +% \begin{macrocode} +\DeclareFontSeriesChangeRule {ulec}{ul} {ulec} {} +\DeclareFontSeriesChangeRule {ulec}{el} {elec} {} +\DeclareFontSeriesChangeRule {ulec}{l} {lec} {} +\DeclareFontSeriesChangeRule {ulec}{sl} {slec} {} +\DeclareFontSeriesChangeRule {ulec}{sb} {sbec} {bec} +\DeclareFontSeriesChangeRule {ulec}{b} {bec} {} +\DeclareFontSeriesChangeRule {ulec}{eb} {ebec} {bec} +\DeclareFontSeriesChangeRule {ulec}{ub} {ubec} {bec} +\DeclareFontSeriesChangeRule {ulec}{uc} {uluc} {} +\DeclareFontSeriesChangeRule {ulec}{ec} {ulec} {} +\DeclareFontSeriesChangeRule {ulec}{c} {ulc} {} +\DeclareFontSeriesChangeRule {ulec}{sc} {ulsc} {} +\DeclareFontSeriesChangeRule {ulec}{sx} {ulsx} {} +\DeclareFontSeriesChangeRule {ulec}{x} {ulx} {} +\DeclareFontSeriesChangeRule {ulec}{ex} {ulex} {} +\DeclareFontSeriesChangeRule {ulec}{ux} {ulux} {} +% \end{macrocode} % -% \end{itemize} +% \begin{macrocode} +\DeclareFontSeriesChangeRule {ulc}{ul} {ulc} {} +\DeclareFontSeriesChangeRule {ulc}{el} {elc} {} +\DeclareFontSeriesChangeRule {ulc}{l} {lc} {} +\DeclareFontSeriesChangeRule {ulc}{sl} {slc} {} +\DeclareFontSeriesChangeRule {ulc}{sb} {sbc} {bc} +\DeclareFontSeriesChangeRule {ulc}{b} {bc} {} +\DeclareFontSeriesChangeRule {ulc}{eb} {ebc} {bc} +\DeclareFontSeriesChangeRule {ulc}{ub} {ubc} {bc} +\DeclareFontSeriesChangeRule {ulc}{uc} {uluc} {} +\DeclareFontSeriesChangeRule {ulc}{ec} {ulec} {} +\DeclareFontSeriesChangeRule {ulc}{c} {ulc} {} +\DeclareFontSeriesChangeRule {ulc}{sc} {ulsc} {} +\DeclareFontSeriesChangeRule {ulc}{sx} {ulsx} {} +\DeclareFontSeriesChangeRule {ulc}{x} {ulx} {} +\DeclareFontSeriesChangeRule {ulc}{ex} {ulex} {} +\DeclareFontSeriesChangeRule {ulc}{ux} {ulux} {} +% \end{macrocode} % % \begin{macrocode} -\DeclareFontSeriesChangeRule {bc}{b}{bc}{} -\DeclareFontSeriesChangeRule {bc}{c}{bc}{} -\DeclareFontSeriesChangeRule {bc}{eb}{ebc}{} -\DeclareFontSeriesChangeRule {bc}{ec}{bec} {bc} -\DeclareFontSeriesChangeRule {bc}{el}{elc}{} -\DeclareFontSeriesChangeRule {bc}{l}{lc}{} -\DeclareFontSeriesChangeRule {bc}{sb}{sbc}{} -\DeclareFontSeriesChangeRule {bc}{sc}{bsc} {bc} -\DeclareFontSeriesChangeRule {bc}{sl}{slc}{} -\DeclareFontSeriesChangeRule {bc}{ub}{ubc}{} -\DeclareFontSeriesChangeRule {bc}{ul}{ulc}{} -\DeclareFontSeriesChangeRule {bc}{x}{bx}{} -% \end{macrocode} -% +\DeclareFontSeriesChangeRule {ulsc}{ul} {ulsc} {} +\DeclareFontSeriesChangeRule {ulsc}{el} {elsc} {} +\DeclareFontSeriesChangeRule {ulsc}{l} {lsc} {} +\DeclareFontSeriesChangeRule {ulsc}{sl} {slsc} {} +\DeclareFontSeriesChangeRule {ulsc}{sb} {sbsc} {bsc} +\DeclareFontSeriesChangeRule {ulsc}{b} {bsc} {} +\DeclareFontSeriesChangeRule {ulsc}{eb} {ebsc} {bsc} +\DeclareFontSeriesChangeRule {ulsc}{ub} {ubsc} {bsc} +\DeclareFontSeriesChangeRule {ulsc}{uc} {uluc} {} +\DeclareFontSeriesChangeRule {ulsc}{ec} {ulec} {} +\DeclareFontSeriesChangeRule {ulsc}{c} {ulc} {} +\DeclareFontSeriesChangeRule {ulsc}{sc} {ulsc} {} +\DeclareFontSeriesChangeRule {ulsc}{sx} {ulsx} {} +\DeclareFontSeriesChangeRule {ulsc}{x} {ulx} {} +\DeclareFontSeriesChangeRule {ulsc}{ex} {ulex} {} +\DeclareFontSeriesChangeRule {ulsc}{ux} {ulux} {} +% \end{macrocode} +% % \begin{macrocode} -\DeclareFontSeriesChangeRule {bx}{b}{bx}{} -\DeclareFontSeriesChangeRule {bx}{c} {bc} {bx} %<----- -\DeclareFontSeriesChangeRule {bx}{eb}{ebx}{} -\DeclareFontSeriesChangeRule {bx}{ec} {bec} {bx} %<----- -\DeclareFontSeriesChangeRule {bx}{el}{elx}{} -\DeclareFontSeriesChangeRule {bx}{l}{lx}{} -\DeclareFontSeriesChangeRule {bx}{sb} {sbx} {} -\DeclareFontSeriesChangeRule {bx}{sc} {bsc} {bx} %<----- -\DeclareFontSeriesChangeRule {bx}{sl}{slx} {} -\DeclareFontSeriesChangeRule {bx}{ub}{ubx}{} -\DeclareFontSeriesChangeRule {bx}{ul}{ulx}{} -\DeclareFontSeriesChangeRule {bx}{x}{bx}{} -% \end{macrocode} -% -% \begin{macrocode} -\DeclareFontSeriesChangeRule {b}{bx} {bx} {b} %<----- -\DeclareFontSeriesChangeRule {b}{c} {bc} {b} %<----- -\DeclareFontSeriesChangeRule {b}{ec} {bec} {b} %<----- -\DeclareFontSeriesChangeRule {b}{sb} {sb} {b} %<----- -\DeclareFontSeriesChangeRule {b}{sc} {bsc} {b} %<----- -\DeclareFontSeriesChangeRule {b}{x} {bx} {b} %<----- -% \end{macrocode} -% -% \begin{macrocode} -\DeclareFontSeriesChangeRule {c}{bx} {bx} {b} %<----- -\DeclareFontSeriesChangeRule {c}{b}{bc}{} -\DeclareFontSeriesChangeRule {c}{eb}{ebc}{} -\DeclareFontSeriesChangeRule {c}{el}{elc}{} -\DeclareFontSeriesChangeRule {c}{l}{lc}{} -\DeclareFontSeriesChangeRule {c}{sb}{sbc}{} -\DeclareFontSeriesChangeRule {c}{sl}{slc}{} -\DeclareFontSeriesChangeRule {c}{ub}{ubc}{} -\DeclareFontSeriesChangeRule {c}{ul}{ulc}{} -\DeclareFontSeriesChangeRule {c}{x}{x}{m} %<----- -% \end{macrocode} -% +\DeclareFontSeriesChangeRule {ul}{uc} {uluc} {} +\DeclareFontSeriesChangeRule {ul}{ec} {ulec} {} +\DeclareFontSeriesChangeRule {ul}{c} {ulc} {} +\DeclareFontSeriesChangeRule {ul}{sc} {ulsc} {} +\DeclareFontSeriesChangeRule {ul}{sx} {ulsx} {} +\DeclareFontSeriesChangeRule {ul}{x} {ulx} {} +\DeclareFontSeriesChangeRule {ul}{ex} {ulex} {} +\DeclareFontSeriesChangeRule {ul}{ux} {ulux} {} +\DeclareFontSeriesChangeRule {ul}{sb} {sb} {b} +\DeclareFontSeriesChangeRule {ul}{eb} {eb} {b} +\DeclareFontSeriesChangeRule {ul}{ub} {ub} {b} +% \end{macrocode} +% % \begin{macrocode} -\DeclareFontSeriesChangeRule {ebc}{b}{bc}{} -\DeclareFontSeriesChangeRule {ebc}{c}{ebc}{} -\DeclareFontSeriesChangeRule {ebc}{eb}{ebc}{} -\DeclareFontSeriesChangeRule {ebc}{ec}{ebec}{ebc} -\DeclareFontSeriesChangeRule {ebc}{el}{elc}{} -\DeclareFontSeriesChangeRule {ebc}{l}{lc}{} -\DeclareFontSeriesChangeRule {ebc}{sb}{sbc}{} -\DeclareFontSeriesChangeRule {ebc}{sc}{ebsc}{ebc} -\DeclareFontSeriesChangeRule {ebc}{sl}{slc}{} -\DeclareFontSeriesChangeRule {ebc}{ub}{ubc}{} -\DeclareFontSeriesChangeRule {ebc}{ul}{ulc}{} -\DeclareFontSeriesChangeRule {ebc}{x}{ebx}{} -% \end{macrocode} -% -% +\DeclareFontSeriesChangeRule {ulsx}{ul} {ulsx} {} +\DeclareFontSeriesChangeRule {ulsx}{el} {elsx} {} +\DeclareFontSeriesChangeRule {ulsx}{l} {lsx} {} +\DeclareFontSeriesChangeRule {ulsx}{sl} {slsx} {} +\DeclareFontSeriesChangeRule {ulsx}{sb} {sbsx} {bsx} +\DeclareFontSeriesChangeRule {ulsx}{b} {bsx} {} +\DeclareFontSeriesChangeRule {ulsx}{eb} {ebsx} {bsx} +\DeclareFontSeriesChangeRule {ulsx}{ub} {ubsx} {bsx} +\DeclareFontSeriesChangeRule {ulsx}{uc} {uluc} {} +\DeclareFontSeriesChangeRule {ulsx}{ec} {ulec} {} +\DeclareFontSeriesChangeRule {ulsx}{c} {ulc} {} +\DeclareFontSeriesChangeRule {ulsx}{sc} {ulsc} {} +\DeclareFontSeriesChangeRule {ulsx}{sx} {ulsx} {} +\DeclareFontSeriesChangeRule {ulsx}{x} {ulx} {} +\DeclareFontSeriesChangeRule {ulsx}{ex} {ulex} {} +\DeclareFontSeriesChangeRule {ulsx}{ux} {ulux} {} +% \end{macrocode} +% +% \begin{macrocode} +\DeclareFontSeriesChangeRule {ulx}{ul} {ulx} {} +\DeclareFontSeriesChangeRule {ulx}{el} {elx} {} +\DeclareFontSeriesChangeRule {ulx}{l} {lx} {} +\DeclareFontSeriesChangeRule {ulx}{sl} {slx} {} +\DeclareFontSeriesChangeRule {ulx}{sb} {sbx} {bx} +\DeclareFontSeriesChangeRule {ulx}{b} {bx} {} +\DeclareFontSeriesChangeRule {ulx}{eb} {ebx} {bx} +\DeclareFontSeriesChangeRule {ulx}{ub} {ubx} {bx} +\DeclareFontSeriesChangeRule {ulx}{uc} {uluc} {} +\DeclareFontSeriesChangeRule {ulx}{ec} {ulec} {} +\DeclareFontSeriesChangeRule {ulx}{c} {ulc} {} +\DeclareFontSeriesChangeRule {ulx}{sc} {ulsc} {} +\DeclareFontSeriesChangeRule {ulx}{sx} {ulsx} {} +\DeclareFontSeriesChangeRule {ulx}{x} {ulx} {} +\DeclareFontSeriesChangeRule {ulx}{ex} {ulex} {} +\DeclareFontSeriesChangeRule {ulx}{ux} {ulux} {} +% \end{macrocode} +% +% \begin{macrocode} +\DeclareFontSeriesChangeRule {ulex}{ul} {ulex} {} +\DeclareFontSeriesChangeRule {ulex}{el} {elex} {} +\DeclareFontSeriesChangeRule {ulex}{l} {lex} {} +\DeclareFontSeriesChangeRule {ulex}{sl} {slex} {} +\DeclareFontSeriesChangeRule {ulex}{sb} {sbex} {bex} +\DeclareFontSeriesChangeRule {ulex}{b} {bex} {} +\DeclareFontSeriesChangeRule {ulex}{eb} {ebex} {bex} +\DeclareFontSeriesChangeRule {ulex}{ub} {ubex} {bex} +\DeclareFontSeriesChangeRule {ulex}{uc} {uluc} {} +\DeclareFontSeriesChangeRule {ulex}{ec} {ulec} {} +\DeclareFontSeriesChangeRule {ulex}{c} {ulc} {} +\DeclareFontSeriesChangeRule {ulex}{sc} {ulsc} {} +\DeclareFontSeriesChangeRule {ulex}{sx} {ulsx} {} +\DeclareFontSeriesChangeRule {ulex}{x} {ulx} {} +\DeclareFontSeriesChangeRule {ulex}{ex} {ulex} {} +\DeclareFontSeriesChangeRule {ulex}{ux} {ulux} {} +% \end{macrocode} +% +% \begin{macrocode} +\DeclareFontSeriesChangeRule {ulux}{ul} {ulux} {} +\DeclareFontSeriesChangeRule {ulux}{el} {elux} {} +\DeclareFontSeriesChangeRule {ulux}{l} {lux} {} +\DeclareFontSeriesChangeRule {ulux}{sl} {slux} {} +\DeclareFontSeriesChangeRule {ulux}{sb} {sbux} {bux} +\DeclareFontSeriesChangeRule {ulux}{b} {bux} {} +\DeclareFontSeriesChangeRule {ulux}{eb} {ebux} {bux} +\DeclareFontSeriesChangeRule {ulux}{ub} {ubux} {bux} +\DeclareFontSeriesChangeRule {ulux}{uc} {uluc} {} +\DeclareFontSeriesChangeRule {ulux}{ec} {ulec} {} +\DeclareFontSeriesChangeRule {ulux}{c} {ulc} {} +\DeclareFontSeriesChangeRule {ulux}{sc} {ulsc} {} +\DeclareFontSeriesChangeRule {ulux}{sx} {ulsx} {} +\DeclareFontSeriesChangeRule {ulux}{x} {ulx} {} +\DeclareFontSeriesChangeRule {ulux}{ex} {ulex} {} +\DeclareFontSeriesChangeRule {ulux}{ux} {ulux} {} +% \end{macrocode} +% +% \begin{macrocode} +\DeclareFontSeriesChangeRule {eluc}{ul} {uluc} {} +\DeclareFontSeriesChangeRule {eluc}{el} {eluc} {} +\DeclareFontSeriesChangeRule {eluc}{l} {luc} {} +\DeclareFontSeriesChangeRule {eluc}{sl} {sluc} {} +\DeclareFontSeriesChangeRule {eluc}{sb} {sbuc} {buc} +\DeclareFontSeriesChangeRule {eluc}{b} {buc} {} +\DeclareFontSeriesChangeRule {eluc}{eb} {ebuc} {buc} +\DeclareFontSeriesChangeRule {eluc}{ub} {ubuc} {buc} +\DeclareFontSeriesChangeRule {eluc}{uc} {eluc} {} +\DeclareFontSeriesChangeRule {eluc}{ec} {elec} {} +\DeclareFontSeriesChangeRule {eluc}{c} {elc} {} +\DeclareFontSeriesChangeRule {eluc}{sc} {elsc} {} +\DeclareFontSeriesChangeRule {eluc}{sx} {elsx} {} +\DeclareFontSeriesChangeRule {eluc}{x} {elx} {} +\DeclareFontSeriesChangeRule {eluc}{ex} {elex} {} +\DeclareFontSeriesChangeRule {eluc}{ux} {elux} {} +% \end{macrocode} +% +% \begin{macrocode} +\DeclareFontSeriesChangeRule {elec}{ul} {ulec} {} +\DeclareFontSeriesChangeRule {elec}{el} {elec} {} +\DeclareFontSeriesChangeRule {elec}{l} {lec} {} +\DeclareFontSeriesChangeRule {elec}{sl} {slec} {} +\DeclareFontSeriesChangeRule {elec}{sb} {sbec} {bec} +\DeclareFontSeriesChangeRule {elec}{b} {bec} {} +\DeclareFontSeriesChangeRule {elec}{eb} {ebec} {bec} +\DeclareFontSeriesChangeRule {elec}{ub} {ubec} {bec} +\DeclareFontSeriesChangeRule {elec}{uc} {eluc} {} +\DeclareFontSeriesChangeRule {elec}{ec} {elec} {} +\DeclareFontSeriesChangeRule {elec}{c} {elc} {} +\DeclareFontSeriesChangeRule {elec}{sc} {elsc} {} +\DeclareFontSeriesChangeRule {elec}{sx} {elsx} {} +\DeclareFontSeriesChangeRule {elec}{x} {elx} {} +\DeclareFontSeriesChangeRule {elec}{ex} {elex} {} +\DeclareFontSeriesChangeRule {elec}{ux} {elux} {} +% \end{macrocode} +% +% \begin{macrocode} +\DeclareFontSeriesChangeRule {elc}{ul} {ulc} {} +\DeclareFontSeriesChangeRule {elc}{el} {elc} {} +\DeclareFontSeriesChangeRule {elc}{l} {lc} {} +\DeclareFontSeriesChangeRule {elc}{sl} {slc} {} +\DeclareFontSeriesChangeRule {elc}{sb} {sbc} {bc} +\DeclareFontSeriesChangeRule {elc}{b} {bc} {} +\DeclareFontSeriesChangeRule {elc}{eb} {ebc} {bc} +\DeclareFontSeriesChangeRule {elc}{ub} {ubc} {bc} +\DeclareFontSeriesChangeRule {elc}{uc} {eluc} {} +\DeclareFontSeriesChangeRule {elc}{ec} {elec} {} +\DeclareFontSeriesChangeRule {elc}{c} {elc} {} +\DeclareFontSeriesChangeRule {elc}{sc} {elsc} {} +\DeclareFontSeriesChangeRule {elc}{sx} {elsx} {} +\DeclareFontSeriesChangeRule {elc}{x} {elx} {} +\DeclareFontSeriesChangeRule {elc}{ex} {elex} {} +\DeclareFontSeriesChangeRule {elc}{ux} {elux} {} +% \end{macrocode} +% +% \begin{macrocode} +\DeclareFontSeriesChangeRule {elsc}{ul} {ulsc} {} +\DeclareFontSeriesChangeRule {elsc}{el} {elsc} {} +\DeclareFontSeriesChangeRule {elsc}{l} {lsc} {} +\DeclareFontSeriesChangeRule {elsc}{sl} {slsc} {} +\DeclareFontSeriesChangeRule {elsc}{sb} {sbsc} {bsc} +\DeclareFontSeriesChangeRule {elsc}{b} {bsc} {} +\DeclareFontSeriesChangeRule {elsc}{eb} {ebsc} {bsc} +\DeclareFontSeriesChangeRule {elsc}{ub} {ubsc} {bsc} +\DeclareFontSeriesChangeRule {elsc}{uc} {eluc} {} +\DeclareFontSeriesChangeRule {elsc}{ec} {elec} {} +\DeclareFontSeriesChangeRule {elsc}{c} {elc} {} +\DeclareFontSeriesChangeRule {elsc}{sc} {elsc} {} +\DeclareFontSeriesChangeRule {elsc}{sx} {elsx} {} +\DeclareFontSeriesChangeRule {elsc}{x} {elx} {} +\DeclareFontSeriesChangeRule {elsc}{ex} {elex} {} +\DeclareFontSeriesChangeRule {elsc}{ux} {elux} {} +% \end{macrocode} +% % \begin{macrocode} -\DeclareFontSeriesChangeRule {ec}{bx} {bx} {b} %<----- -\DeclareFontSeriesChangeRule {ec}{b}{bec}{} -\DeclareFontSeriesChangeRule {ec}{eb}{ebec}{} -\DeclareFontSeriesChangeRule {ec}{el}{elec}{} -\DeclareFontSeriesChangeRule {ec}{l}{lec}{} -\DeclareFontSeriesChangeRule {ec}{sb}{sbec}{} -\DeclareFontSeriesChangeRule {ec}{sl}{slec}{} -\DeclareFontSeriesChangeRule {ec}{ub}{ubec}{} -\DeclareFontSeriesChangeRule {ec}{ul}{ulec}{} -\DeclareFontSeriesChangeRule {ec}{x}{x}{m} %<----- -% \end{macrocode} -% -% \begin{macrocode} -\DeclareFontSeriesChangeRule {sc}{bx} {bx} {b} %<----- -\DeclareFontSeriesChangeRule {sc}{b}{bsc}{} -\DeclareFontSeriesChangeRule {sc}{eb}{ebsc}{} -\DeclareFontSeriesChangeRule {sc}{el}{elsc}{} -\DeclareFontSeriesChangeRule {sc}{l}{lsc}{} -\DeclareFontSeriesChangeRule {sc}{sb}{sbsc}{} -\DeclareFontSeriesChangeRule {sc}{sl}{slsc}{} -\DeclareFontSeriesChangeRule {sc}{ub}{ubsc}{} -\DeclareFontSeriesChangeRule {sc}{ul}{ulsc}{} -\DeclareFontSeriesChangeRule {sc}{x}{x}{m} %<----- -% \end{macrocode} +\DeclareFontSeriesChangeRule {el}{uc} {eluc} {} +\DeclareFontSeriesChangeRule {el}{ec} {elec} {} +\DeclareFontSeriesChangeRule {el}{c} {elc} {} +\DeclareFontSeriesChangeRule {el}{sc} {elsc} {} +\DeclareFontSeriesChangeRule {el}{sx} {elsx} {} +\DeclareFontSeriesChangeRule {el}{x} {elx} {} +\DeclareFontSeriesChangeRule {el}{ex} {elex} {} +\DeclareFontSeriesChangeRule {el}{ux} {elux} {} +\DeclareFontSeriesChangeRule {el}{sb} {sb} {b} +\DeclareFontSeriesChangeRule {el}{eb} {eb} {b} +\DeclareFontSeriesChangeRule {el}{ub} {ub} {b} +% \end{macrocode} +% +% \begin{macrocode} +\DeclareFontSeriesChangeRule {elsx}{ul} {ulsx} {} +\DeclareFontSeriesChangeRule {elsx}{el} {elsx} {} +\DeclareFontSeriesChangeRule {elsx}{l} {lsx} {} +\DeclareFontSeriesChangeRule {elsx}{sl} {slsx} {} +\DeclareFontSeriesChangeRule {elsx}{sb} {sbsx} {bsx} +\DeclareFontSeriesChangeRule {elsx}{b} {bsx} {} +\DeclareFontSeriesChangeRule {elsx}{eb} {ebsx} {bsx} +\DeclareFontSeriesChangeRule {elsx}{ub} {ubsx} {bsx} +\DeclareFontSeriesChangeRule {elsx}{uc} {eluc} {} +\DeclareFontSeriesChangeRule {elsx}{ec} {elec} {} +\DeclareFontSeriesChangeRule {elsx}{c} {elc} {} +\DeclareFontSeriesChangeRule {elsx}{sc} {elsc} {} +\DeclareFontSeriesChangeRule {elsx}{sx} {elsx} {} +\DeclareFontSeriesChangeRule {elsx}{x} {elx} {} +\DeclareFontSeriesChangeRule {elsx}{ex} {elex} {} +\DeclareFontSeriesChangeRule {elsx}{ux} {elux} {} +% \end{macrocode} +% +% \begin{macrocode} +\DeclareFontSeriesChangeRule {elx}{ul} {ulx} {} +\DeclareFontSeriesChangeRule {elx}{el} {elx} {} +\DeclareFontSeriesChangeRule {elx}{l} {lx} {} +\DeclareFontSeriesChangeRule {elx}{sl} {slx} {} +\DeclareFontSeriesChangeRule {elx}{sb} {sbx} {bx} +\DeclareFontSeriesChangeRule {elx}{b} {bx} {} +\DeclareFontSeriesChangeRule {elx}{eb} {ebx} {bx} +\DeclareFontSeriesChangeRule {elx}{ub} {ubx} {bx} +\DeclareFontSeriesChangeRule {elx}{uc} {eluc} {} +\DeclareFontSeriesChangeRule {elx}{ec} {elec} {} +\DeclareFontSeriesChangeRule {elx}{c} {elc} {} +\DeclareFontSeriesChangeRule {elx}{sc} {elsc} {} +\DeclareFontSeriesChangeRule {elx}{sx} {elsx} {} +\DeclareFontSeriesChangeRule {elx}{x} {elx} {} +\DeclareFontSeriesChangeRule {elx}{ex} {elex} {} +\DeclareFontSeriesChangeRule {elx}{ux} {elux} {} +% \end{macrocode} +% +% \begin{macrocode} +\DeclareFontSeriesChangeRule {elex}{ul} {ulex} {} +\DeclareFontSeriesChangeRule {elex}{el} {elex} {} +\DeclareFontSeriesChangeRule {elex}{l} {lex} {} +\DeclareFontSeriesChangeRule {elex}{sl} {slex} {} +\DeclareFontSeriesChangeRule {elex}{sb} {sbex} {bex} +\DeclareFontSeriesChangeRule {elex}{b} {bex} {} +\DeclareFontSeriesChangeRule {elex}{eb} {ebex} {bex} +\DeclareFontSeriesChangeRule {elex}{ub} {ubex} {bex} +\DeclareFontSeriesChangeRule {elex}{uc} {eluc} {} +\DeclareFontSeriesChangeRule {elex}{ec} {elec} {} +\DeclareFontSeriesChangeRule {elex}{c} {elc} {} +\DeclareFontSeriesChangeRule {elex}{sc} {elsc} {} +\DeclareFontSeriesChangeRule {elex}{sx} {elsx} {} +\DeclareFontSeriesChangeRule {elex}{x} {elx} {} +\DeclareFontSeriesChangeRule {elex}{ex} {elex} {} +\DeclareFontSeriesChangeRule {elex}{ux} {elux} {} +% \end{macrocode} +% +% \begin{macrocode} +\DeclareFontSeriesChangeRule {elux}{ul} {ulux} {} +\DeclareFontSeriesChangeRule {elux}{el} {elux} {} +\DeclareFontSeriesChangeRule {elux}{l} {lux} {} +\DeclareFontSeriesChangeRule {elux}{sl} {slux} {} +\DeclareFontSeriesChangeRule {elux}{sb} {sbux} {bux} +\DeclareFontSeriesChangeRule {elux}{b} {bux} {} +\DeclareFontSeriesChangeRule {elux}{eb} {ebux} {bux} +\DeclareFontSeriesChangeRule {elux}{ub} {ubux} {bux} +\DeclareFontSeriesChangeRule {elux}{uc} {eluc} {} +\DeclareFontSeriesChangeRule {elux}{ec} {elec} {} +\DeclareFontSeriesChangeRule {elux}{c} {elc} {} +\DeclareFontSeriesChangeRule {elux}{sc} {elsc} {} +\DeclareFontSeriesChangeRule {elux}{sx} {elsx} {} +\DeclareFontSeriesChangeRule {elux}{x} {elx} {} +\DeclareFontSeriesChangeRule {elux}{ex} {elex} {} +\DeclareFontSeriesChangeRule {elux}{ux} {elux} {} +% \end{macrocode} +% +% \begin{macrocode} +\DeclareFontSeriesChangeRule {luc}{ul} {uluc} {} +\DeclareFontSeriesChangeRule {luc}{el} {eluc} {} +\DeclareFontSeriesChangeRule {luc}{l} {luc} {} +\DeclareFontSeriesChangeRule {luc}{sl} {sluc} {} +\DeclareFontSeriesChangeRule {luc}{sb} {sbuc} {buc} +\DeclareFontSeriesChangeRule {luc}{b} {buc} {} +\DeclareFontSeriesChangeRule {luc}{eb} {ebuc} {buc} +\DeclareFontSeriesChangeRule {luc}{ub} {ubuc} {buc} +\DeclareFontSeriesChangeRule {luc}{uc} {luc} {} +\DeclareFontSeriesChangeRule {luc}{ec} {lec} {} +\DeclareFontSeriesChangeRule {luc}{c} {lc} {} +\DeclareFontSeriesChangeRule {luc}{sc} {lsc} {} +\DeclareFontSeriesChangeRule {luc}{sx} {lsx} {} +\DeclareFontSeriesChangeRule {luc}{x} {lx} {} +\DeclareFontSeriesChangeRule {luc}{ex} {lex} {} +\DeclareFontSeriesChangeRule {luc}{ux} {lux} {} +% \end{macrocode} +% +% \begin{macrocode} +\DeclareFontSeriesChangeRule {lec}{ul} {ulec} {} +\DeclareFontSeriesChangeRule {lec}{el} {elec} {} +\DeclareFontSeriesChangeRule {lec}{l} {lec} {} +\DeclareFontSeriesChangeRule {lec}{sl} {slec} {} +\DeclareFontSeriesChangeRule {lec}{sb} {sbec} {bec} +\DeclareFontSeriesChangeRule {lec}{b} {bec} {} +\DeclareFontSeriesChangeRule {lec}{eb} {ebec} {bec} +\DeclareFontSeriesChangeRule {lec}{ub} {ubec} {bec} +\DeclareFontSeriesChangeRule {lec}{uc} {luc} {} +\DeclareFontSeriesChangeRule {lec}{ec} {lec} {} +\DeclareFontSeriesChangeRule {lec}{c} {lc} {} +\DeclareFontSeriesChangeRule {lec}{sc} {lsc} {} +\DeclareFontSeriesChangeRule {lec}{sx} {lsx} {} +\DeclareFontSeriesChangeRule {lec}{x} {lx} {} +\DeclareFontSeriesChangeRule {lec}{ex} {lex} {} +\DeclareFontSeriesChangeRule {lec}{ux} {lux} {} +% \end{macrocode} +% +% \begin{macrocode} +\DeclareFontSeriesChangeRule {lc}{ul} {ulc} {} +\DeclareFontSeriesChangeRule {lc}{el} {elc} {} +\DeclareFontSeriesChangeRule {lc}{l} {lc} {} +\DeclareFontSeriesChangeRule {lc}{sl} {slc} {} +\DeclareFontSeriesChangeRule {lc}{sb} {sbc} {bc} +\DeclareFontSeriesChangeRule {lc}{b} {bc} {} +\DeclareFontSeriesChangeRule {lc}{eb} {ebc} {bc} +\DeclareFontSeriesChangeRule {lc}{ub} {ubc} {bc} +\DeclareFontSeriesChangeRule {lc}{uc} {luc} {} +\DeclareFontSeriesChangeRule {lc}{ec} {lec} {} +\DeclareFontSeriesChangeRule {lc}{c} {lc} {} +\DeclareFontSeriesChangeRule {lc}{sc} {lsc} {} +\DeclareFontSeriesChangeRule {lc}{sx} {lsx} {} +\DeclareFontSeriesChangeRule {lc}{x} {lx} {} +\DeclareFontSeriesChangeRule {lc}{ex} {lex} {} +\DeclareFontSeriesChangeRule {lc}{ux} {lux} {} +% \end{macrocode} +% +% \begin{macrocode} +\DeclareFontSeriesChangeRule {lsc}{ul} {ulsc} {} +\DeclareFontSeriesChangeRule {lsc}{el} {elsc} {} +\DeclareFontSeriesChangeRule {lsc}{l} {lsc} {} +\DeclareFontSeriesChangeRule {lsc}{sl} {slsc} {} +\DeclareFontSeriesChangeRule {lsc}{sb} {sbsc} {bsc} +\DeclareFontSeriesChangeRule {lsc}{b} {bsc} {} +\DeclareFontSeriesChangeRule {lsc}{eb} {ebsc} {bsc} +\DeclareFontSeriesChangeRule {lsc}{ub} {ubsc} {bsc} +\DeclareFontSeriesChangeRule {lsc}{uc} {luc} {} +\DeclareFontSeriesChangeRule {lsc}{ec} {lec} {} +\DeclareFontSeriesChangeRule {lsc}{c} {lc} {} +\DeclareFontSeriesChangeRule {lsc}{sc} {lsc} {} +\DeclareFontSeriesChangeRule {lsc}{sx} {lsx} {} +\DeclareFontSeriesChangeRule {lsc}{x} {lx} {} +\DeclareFontSeriesChangeRule {lsc}{ex} {lex} {} +\DeclareFontSeriesChangeRule {lsc}{ux} {lux} {} +% \end{macrocode} +% +% \begin{macrocode} +\DeclareFontSeriesChangeRule {l}{uc} {luc} {} +\DeclareFontSeriesChangeRule {l}{ec} {lec} {} +\DeclareFontSeriesChangeRule {l}{c} {lc} {} +\DeclareFontSeriesChangeRule {l}{sc} {lsc} {} +\DeclareFontSeriesChangeRule {l}{sx} {lsx} {} +\DeclareFontSeriesChangeRule {l}{x} {lx} {} +\DeclareFontSeriesChangeRule {l}{ex} {lex} {} +\DeclareFontSeriesChangeRule {l}{ux} {lux} {} +\DeclareFontSeriesChangeRule {l}{sb} {sb} {b} +\DeclareFontSeriesChangeRule {l}{eb} {eb} {b} +\DeclareFontSeriesChangeRule {l}{ub} {ub} {b} +% \end{macrocode} +% +% \begin{macrocode} +\DeclareFontSeriesChangeRule {lsx}{ul} {ulsx} {} +\DeclareFontSeriesChangeRule {lsx}{el} {elsx} {} +\DeclareFontSeriesChangeRule {lsx}{l} {lsx} {} +\DeclareFontSeriesChangeRule {lsx}{sl} {slsx} {} +\DeclareFontSeriesChangeRule {lsx}{sb} {sbsx} {bsx} +\DeclareFontSeriesChangeRule {lsx}{b} {bsx} {} +\DeclareFontSeriesChangeRule {lsx}{eb} {ebsx} {bsx} +\DeclareFontSeriesChangeRule {lsx}{ub} {ubsx} {bsx} +\DeclareFontSeriesChangeRule {lsx}{uc} {luc} {} +\DeclareFontSeriesChangeRule {lsx}{ec} {lec} {} +\DeclareFontSeriesChangeRule {lsx}{c} {lc} {} +\DeclareFontSeriesChangeRule {lsx}{sc} {lsc} {} +\DeclareFontSeriesChangeRule {lsx}{sx} {lsx} {} +\DeclareFontSeriesChangeRule {lsx}{x} {lx} {} +\DeclareFontSeriesChangeRule {lsx}{ex} {lex} {} +\DeclareFontSeriesChangeRule {lsx}{ux} {lux} {} +% \end{macrocode} +% +% \begin{macrocode} +\DeclareFontSeriesChangeRule {lx}{ul} {ulx} {} +\DeclareFontSeriesChangeRule {lx}{el} {elx} {} +\DeclareFontSeriesChangeRule {lx}{l} {lx} {} +\DeclareFontSeriesChangeRule {lx}{sl} {slx} {} +\DeclareFontSeriesChangeRule {lx}{sb} {sbx} {bx} +\DeclareFontSeriesChangeRule {lx}{b} {bx} {} +\DeclareFontSeriesChangeRule {lx}{eb} {ebx} {bx} +\DeclareFontSeriesChangeRule {lx}{ub} {ubx} {bx} +\DeclareFontSeriesChangeRule {lx}{uc} {luc} {} +\DeclareFontSeriesChangeRule {lx}{ec} {lec} {} +\DeclareFontSeriesChangeRule {lx}{c} {lc} {} +\DeclareFontSeriesChangeRule {lx}{sc} {lsc} {} +\DeclareFontSeriesChangeRule {lx}{sx} {lsx} {} +\DeclareFontSeriesChangeRule {lx}{x} {lx} {} +\DeclareFontSeriesChangeRule {lx}{ex} {lex} {} +\DeclareFontSeriesChangeRule {lx}{ux} {lux} {} +% \end{macrocode} +% +% \begin{macrocode} +\DeclareFontSeriesChangeRule {lex}{ul} {ulex} {} +\DeclareFontSeriesChangeRule {lex}{el} {elex} {} +\DeclareFontSeriesChangeRule {lex}{l} {lex} {} +\DeclareFontSeriesChangeRule {lex}{sl} {slex} {} +\DeclareFontSeriesChangeRule {lex}{sb} {sbex} {bex} +\DeclareFontSeriesChangeRule {lex}{b} {bex} {} +\DeclareFontSeriesChangeRule {lex}{eb} {ebex} {bex} +\DeclareFontSeriesChangeRule {lex}{ub} {ubex} {bex} +\DeclareFontSeriesChangeRule {lex}{uc} {luc} {} +\DeclareFontSeriesChangeRule {lex}{ec} {lec} {} +\DeclareFontSeriesChangeRule {lex}{c} {lc} {} +\DeclareFontSeriesChangeRule {lex}{sc} {lsc} {} +\DeclareFontSeriesChangeRule {lex}{sx} {lsx} {} +\DeclareFontSeriesChangeRule {lex}{x} {lx} {} +\DeclareFontSeriesChangeRule {lex}{ex} {lex} {} +\DeclareFontSeriesChangeRule {lex}{ux} {lux} {} +% \end{macrocode} +% +% \begin{macrocode} +\DeclareFontSeriesChangeRule {lux}{ul} {ulux} {} +\DeclareFontSeriesChangeRule {lux}{el} {elux} {} +\DeclareFontSeriesChangeRule {lux}{l} {lux} {} +\DeclareFontSeriesChangeRule {lux}{sl} {slux} {} +\DeclareFontSeriesChangeRule {lux}{sb} {sbux} {bux} +\DeclareFontSeriesChangeRule {lux}{b} {bux} {} +\DeclareFontSeriesChangeRule {lux}{eb} {ebux} {bux} +\DeclareFontSeriesChangeRule {lux}{ub} {ubux} {bux} +\DeclareFontSeriesChangeRule {lux}{uc} {luc} {} +\DeclareFontSeriesChangeRule {lux}{ec} {lec} {} +\DeclareFontSeriesChangeRule {lux}{c} {lc} {} +\DeclareFontSeriesChangeRule {lux}{sc} {lsc} {} +\DeclareFontSeriesChangeRule {lux}{sx} {lsx} {} +\DeclareFontSeriesChangeRule {lux}{x} {lx} {} +\DeclareFontSeriesChangeRule {lux}{ex} {lex} {} +\DeclareFontSeriesChangeRule {lux}{ux} {lux} {} +% \end{macrocode} +% +% \begin{macrocode} +\DeclareFontSeriesChangeRule {sluc}{ul} {uluc} {} +\DeclareFontSeriesChangeRule {sluc}{el} {eluc} {} +\DeclareFontSeriesChangeRule {sluc}{l} {luc} {} +\DeclareFontSeriesChangeRule {sluc}{sl} {sluc} {} +\DeclareFontSeriesChangeRule {sluc}{sb} {sbuc} {buc} +\DeclareFontSeriesChangeRule {sluc}{b} {buc} {} +\DeclareFontSeriesChangeRule {sluc}{eb} {ebuc} {buc} +\DeclareFontSeriesChangeRule {sluc}{ub} {ubuc} {buc} +\DeclareFontSeriesChangeRule {sluc}{uc} {sluc} {} +\DeclareFontSeriesChangeRule {sluc}{ec} {slec} {} +\DeclareFontSeriesChangeRule {sluc}{c} {slc} {} +\DeclareFontSeriesChangeRule {sluc}{sc} {slsc} {} +\DeclareFontSeriesChangeRule {sluc}{sx} {slsx} {} +\DeclareFontSeriesChangeRule {sluc}{x} {slx} {} +\DeclareFontSeriesChangeRule {sluc}{ex} {slex} {} +\DeclareFontSeriesChangeRule {sluc}{ux} {slux} {} +% \end{macrocode} +% +% \begin{macrocode} +\DeclareFontSeriesChangeRule {slec}{ul} {ulec} {} +\DeclareFontSeriesChangeRule {slec}{el} {elec} {} +\DeclareFontSeriesChangeRule {slec}{l} {lec} {} +\DeclareFontSeriesChangeRule {slec}{sl} {slec} {} +\DeclareFontSeriesChangeRule {slec}{sb} {sbec} {bec} +\DeclareFontSeriesChangeRule {slec}{b} {bec} {} +\DeclareFontSeriesChangeRule {slec}{eb} {ebec} {bec} +\DeclareFontSeriesChangeRule {slec}{ub} {ubec} {bec} +\DeclareFontSeriesChangeRule {slec}{uc} {sluc} {} +\DeclareFontSeriesChangeRule {slec}{ec} {slec} {} +\DeclareFontSeriesChangeRule {slec}{c} {slc} {} +\DeclareFontSeriesChangeRule {slec}{sc} {slsc} {} +\DeclareFontSeriesChangeRule {slec}{sx} {slsx} {} +\DeclareFontSeriesChangeRule {slec}{x} {slx} {} +\DeclareFontSeriesChangeRule {slec}{ex} {slex} {} +\DeclareFontSeriesChangeRule {slec}{ux} {slux} {} +% \end{macrocode} % -% \begin{macrocode} -\DeclareFontSeriesChangeRule {ebx}{b}{bx}{} -\DeclareFontSeriesChangeRule {ebx}{c}{ebc}{} -\DeclareFontSeriesChangeRule {ebx}{eb}{ebx}{} -\DeclareFontSeriesChangeRule {ebx}{ec}{ebec}{} -\DeclareFontSeriesChangeRule {ebx}{el}{elx}{} -\DeclareFontSeriesChangeRule {ebx}{l}{lx}{} -\DeclareFontSeriesChangeRule {ebx}{sb}{sbx}{} -\DeclareFontSeriesChangeRule {ebx}{sc}{ebsc}{} -\DeclareFontSeriesChangeRule {ebx}{sl}{slx}{} -\DeclareFontSeriesChangeRule {ebx}{ub}{ubx}{} -\DeclareFontSeriesChangeRule {ebx}{ul}{ulx}{} -\DeclareFontSeriesChangeRule {ebx}{x}{ebx}{} -% \end{macrocode} -% -% \begin{macrocode} -\DeclareFontSeriesChangeRule {eb}{c}{ebc}{} -\DeclareFontSeriesChangeRule {eb}{ec}{ebec}{} -\DeclareFontSeriesChangeRule {eb}{sc}{ebsc}{} -\DeclareFontSeriesChangeRule {eb}{x}{ebx}{} -% \end{macrocode} -% -% \begin{macrocode} -\DeclareFontSeriesChangeRule {elc}{b}{bc}{} -\DeclareFontSeriesChangeRule {elc}{c}{elc}{} -\DeclareFontSeriesChangeRule {elc}{eb}{ebc}{} -\DeclareFontSeriesChangeRule {elc}{ec}{elec}{} -\DeclareFontSeriesChangeRule {elc}{el}{elc}{} -\DeclareFontSeriesChangeRule {elc}{l}{lc}{} -\DeclareFontSeriesChangeRule {elc}{sb}{sbc}{} -\DeclareFontSeriesChangeRule {elc}{sc}{elsc}{} -\DeclareFontSeriesChangeRule {elc}{sl}{slc}{} -\DeclareFontSeriesChangeRule {elc}{ub}{ubc}{} -\DeclareFontSeriesChangeRule {elc}{ul}{ulc}{} -\DeclareFontSeriesChangeRule {elc}{x}{elx}{} -% \end{macrocode} -% -% \begin{macrocode} -\DeclareFontSeriesChangeRule {elx}{b}{bx}{} -\DeclareFontSeriesChangeRule {elx}{c}{elc}{} -\DeclareFontSeriesChangeRule {elx}{eb}{ebx}{} -\DeclareFontSeriesChangeRule {elx}{ec}{elec}{} -\DeclareFontSeriesChangeRule {elx}{el}{elx}{} -\DeclareFontSeriesChangeRule {elx}{l}{lx}{} -\DeclareFontSeriesChangeRule {elx}{sb}{sbx}{} -\DeclareFontSeriesChangeRule {elx}{sc}{elsc}{} -\DeclareFontSeriesChangeRule {elx}{sl}{slx}{} -\DeclareFontSeriesChangeRule {elx}{ub}{ubx}{} -\DeclareFontSeriesChangeRule {elx}{ul}{ulx}{} -\DeclareFontSeriesChangeRule {elx}{x}{elx}{} -% \end{macrocode} -% -% \begin{macrocode} -\DeclareFontSeriesChangeRule {el}{c}{elc}{} -\DeclareFontSeriesChangeRule {el}{ec}{elec}{} -\DeclareFontSeriesChangeRule {el}{sc}{elsc}{} -\DeclareFontSeriesChangeRule {el}{x}{elx}{} -% \end{macrocode} -% -% \begin{macrocode} -\DeclareFontSeriesChangeRule {lc}{b}{bc}{} -\DeclareFontSeriesChangeRule {lc}{c}{lc}{} -\DeclareFontSeriesChangeRule {lc}{eb}{ebc}{} -\DeclareFontSeriesChangeRule {lc}{ec}{lec}{} -\DeclareFontSeriesChangeRule {lc}{el}{elc}{} -\DeclareFontSeriesChangeRule {lc}{l}{lc}{} -\DeclareFontSeriesChangeRule {lc}{sb}{sbc}{} -\DeclareFontSeriesChangeRule {lc}{sc}{lsc}{} -\DeclareFontSeriesChangeRule {lc}{sl}{slc}{} -\DeclareFontSeriesChangeRule {lc}{ub}{ubc}{} -\DeclareFontSeriesChangeRule {lc}{ul}{ulc}{} -\DeclareFontSeriesChangeRule {lc}{x}{lx}{} -% \end{macrocode} -% -% \begin{macrocode} -\DeclareFontSeriesChangeRule {lx}{b}{bx}{} -\DeclareFontSeriesChangeRule {lx}{c}{lc}{} -\DeclareFontSeriesChangeRule {lx}{eb}{ebx}{} -\DeclareFontSeriesChangeRule {lx}{ec}{lec}{} -\DeclareFontSeriesChangeRule {lx}{el}{elx}{} -\DeclareFontSeriesChangeRule {lx}{l}{lx}{} -\DeclareFontSeriesChangeRule {lx}{sb}{sbx}{} -\DeclareFontSeriesChangeRule {lx}{sc}{lsc}{} -\DeclareFontSeriesChangeRule {lx}{sl}{slx}{} -\DeclareFontSeriesChangeRule {lx}{ub}{ubx}{} -\DeclareFontSeriesChangeRule {lx}{ul}{ulx}{} -\DeclareFontSeriesChangeRule {lx}{x}{lx}{} -% \end{macrocode} -% -% \begin{macrocode} -\DeclareFontSeriesChangeRule {l}{bx} {bx} {b} %<----- -\DeclareFontSeriesChangeRule {l}{b} {b} {bx} %<----- -\DeclareFontSeriesChangeRule {l}{c} {lc} {l} % ? %<----- -\DeclareFontSeriesChangeRule {l}{ec} {lec} {l} % ? %<----- -\DeclareFontSeriesChangeRule {l}{sb} {sb} {b} % ? %<----- -\DeclareFontSeriesChangeRule {l}{sc} {lsc} {l} % ? %<----- -\DeclareFontSeriesChangeRule {l}{x} {lx} {l} % ? %<----- -% \end{macrocode} +% \begin{macrocode} +\DeclareFontSeriesChangeRule {slc}{ul} {ulc} {} +\DeclareFontSeriesChangeRule {slc}{el} {elc} {} +\DeclareFontSeriesChangeRule {slc}{l} {lc} {} +\DeclareFontSeriesChangeRule {slc}{sl} {slc} {} +\DeclareFontSeriesChangeRule {slc}{sb} {sbc} {bc} +\DeclareFontSeriesChangeRule {slc}{b} {bc} {} +\DeclareFontSeriesChangeRule {slc}{eb} {ebc} {bc} +\DeclareFontSeriesChangeRule {slc}{ub} {ubc} {bc} +\DeclareFontSeriesChangeRule {slc}{uc} {sluc} {} +\DeclareFontSeriesChangeRule {slc}{ec} {slec} {} +\DeclareFontSeriesChangeRule {slc}{c} {slc} {} +\DeclareFontSeriesChangeRule {slc}{sc} {slsc} {} +\DeclareFontSeriesChangeRule {slc}{sx} {slsx} {} +\DeclareFontSeriesChangeRule {slc}{x} {slx} {} +\DeclareFontSeriesChangeRule {slc}{ex} {slex} {} +\DeclareFontSeriesChangeRule {slc}{ux} {slux} {} +% \end{macrocode} +% +% \begin{macrocode} +\DeclareFontSeriesChangeRule {slsc}{ul} {ulsc} {} +\DeclareFontSeriesChangeRule {slsc}{el} {elsc} {} +\DeclareFontSeriesChangeRule {slsc}{l} {lsc} {} +\DeclareFontSeriesChangeRule {slsc}{sl} {slsc} {} +\DeclareFontSeriesChangeRule {slsc}{sb} {sbsc} {bsc} +\DeclareFontSeriesChangeRule {slsc}{b} {bsc} {} +\DeclareFontSeriesChangeRule {slsc}{eb} {ebsc} {bsc} +\DeclareFontSeriesChangeRule {slsc}{ub} {ubsc} {bsc} +\DeclareFontSeriesChangeRule {slsc}{uc} {sluc} {} +\DeclareFontSeriesChangeRule {slsc}{ec} {slec} {} +\DeclareFontSeriesChangeRule {slsc}{c} {slc} {} +\DeclareFontSeriesChangeRule {slsc}{sc} {slsc} {} +\DeclareFontSeriesChangeRule {slsc}{sx} {slsx} {} +\DeclareFontSeriesChangeRule {slsc}{x} {slx} {} +\DeclareFontSeriesChangeRule {slsc}{ex} {slex} {} +\DeclareFontSeriesChangeRule {slsc}{ux} {slux} {} +% \end{macrocode} +% +% \begin{macrocode} +\DeclareFontSeriesChangeRule {sl}{uc} {sluc} {} +\DeclareFontSeriesChangeRule {sl}{ec} {slec} {} +\DeclareFontSeriesChangeRule {sl}{c} {slc} {} +\DeclareFontSeriesChangeRule {sl}{sc} {slsc} {} +\DeclareFontSeriesChangeRule {sl}{sx} {slsx} {} +\DeclareFontSeriesChangeRule {sl}{x} {slx} {} +\DeclareFontSeriesChangeRule {sl}{ex} {slex} {} +\DeclareFontSeriesChangeRule {sl}{ux} {slux} {} +\DeclareFontSeriesChangeRule {sl}{sb} {sb} {b} +\DeclareFontSeriesChangeRule {sl}{eb} {eb} {b} +\DeclareFontSeriesChangeRule {sl}{ub} {ub} {b} +% \end{macrocode} +% +% \begin{macrocode} +\DeclareFontSeriesChangeRule {slsx}{ul} {ulsx} {} +\DeclareFontSeriesChangeRule {slsx}{el} {elsx} {} +\DeclareFontSeriesChangeRule {slsx}{l} {lsx} {} +\DeclareFontSeriesChangeRule {slsx}{sl} {slsx} {} +\DeclareFontSeriesChangeRule {slsx}{sb} {sbsx} {bsx} +\DeclareFontSeriesChangeRule {slsx}{b} {bsx} {} +\DeclareFontSeriesChangeRule {slsx}{eb} {ebsx} {bsx} +\DeclareFontSeriesChangeRule {slsx}{ub} {ubsx} {bsx} +\DeclareFontSeriesChangeRule {slsx}{uc} {sluc} {} +\DeclareFontSeriesChangeRule {slsx}{ec} {slec} {} +\DeclareFontSeriesChangeRule {slsx}{c} {slc} {} +\DeclareFontSeriesChangeRule {slsx}{sc} {slsc} {} +\DeclareFontSeriesChangeRule {slsx}{sx} {slsx} {} +\DeclareFontSeriesChangeRule {slsx}{x} {slx} {} +\DeclareFontSeriesChangeRule {slsx}{ex} {slex} {} +\DeclareFontSeriesChangeRule {slsx}{ux} {slux} {} +% \end{macrocode} +% +% \begin{macrocode} +\DeclareFontSeriesChangeRule {slx}{ul} {ulx} {} +\DeclareFontSeriesChangeRule {slx}{el} {elx} {} +\DeclareFontSeriesChangeRule {slx}{l} {lx} {} +\DeclareFontSeriesChangeRule {slx}{sl} {slx} {} +\DeclareFontSeriesChangeRule {slx}{sb} {sbx} {bx} +\DeclareFontSeriesChangeRule {slx}{b} {bx} {} +\DeclareFontSeriesChangeRule {slx}{eb} {ebx} {bx} +\DeclareFontSeriesChangeRule {slx}{ub} {ubx} {bx} +\DeclareFontSeriesChangeRule {slx}{uc} {sluc} {} +\DeclareFontSeriesChangeRule {slx}{ec} {slec} {} +\DeclareFontSeriesChangeRule {slx}{c} {slc} {} +\DeclareFontSeriesChangeRule {slx}{sc} {slsc} {} +\DeclareFontSeriesChangeRule {slx}{sx} {slsx} {} +\DeclareFontSeriesChangeRule {slx}{x} {slx} {} +\DeclareFontSeriesChangeRule {slx}{ex} {slex} {} +\DeclareFontSeriesChangeRule {slx}{ux} {slux} {} +% \end{macrocode} +% +% \begin{macrocode} +\DeclareFontSeriesChangeRule {slex}{ul} {ulex} {} +\DeclareFontSeriesChangeRule {slex}{el} {elex} {} +\DeclareFontSeriesChangeRule {slex}{l} {lex} {} +\DeclareFontSeriesChangeRule {slex}{sl} {slex} {} +\DeclareFontSeriesChangeRule {slex}{sb} {sbex} {bex} +\DeclareFontSeriesChangeRule {slex}{b} {bex} {} +\DeclareFontSeriesChangeRule {slex}{eb} {ebex} {bex} +\DeclareFontSeriesChangeRule {slex}{ub} {ubex} {bex} +\DeclareFontSeriesChangeRule {slex}{uc} {sluc} {} +\DeclareFontSeriesChangeRule {slex}{ec} {slec} {} +\DeclareFontSeriesChangeRule {slex}{c} {slc} {} +\DeclareFontSeriesChangeRule {slex}{sc} {slsc} {} +\DeclareFontSeriesChangeRule {slex}{sx} {slsx} {} +\DeclareFontSeriesChangeRule {slex}{x} {slx} {} +\DeclareFontSeriesChangeRule {slex}{ex} {slex} {} +\DeclareFontSeriesChangeRule {slex}{ux} {slux} {} +% \end{macrocode} +% +% \begin{macrocode} +\DeclareFontSeriesChangeRule {slux}{ul} {ulux} {} +\DeclareFontSeriesChangeRule {slux}{el} {elux} {} +\DeclareFontSeriesChangeRule {slux}{l} {lux} {} +\DeclareFontSeriesChangeRule {slux}{sl} {slux} {} +\DeclareFontSeriesChangeRule {slux}{sb} {sbux} {bux} +\DeclareFontSeriesChangeRule {slux}{b} {bux} {} +\DeclareFontSeriesChangeRule {slux}{eb} {ebux} {bux} +\DeclareFontSeriesChangeRule {slux}{ub} {ubux} {bux} +\DeclareFontSeriesChangeRule {slux}{uc} {sluc} {} +\DeclareFontSeriesChangeRule {slux}{ec} {slec} {} +\DeclareFontSeriesChangeRule {slux}{c} {slc} {} +\DeclareFontSeriesChangeRule {slux}{sc} {slsc} {} +\DeclareFontSeriesChangeRule {slux}{sx} {slsx} {} +\DeclareFontSeriesChangeRule {slux}{x} {slx} {} +\DeclareFontSeriesChangeRule {slux}{ex} {slex} {} +\DeclareFontSeriesChangeRule {slux}{ux} {slux} {} +% \end{macrocode} +% +% \begin{macrocode} +\DeclareFontSeriesChangeRule {uc}{ul} {uluc} {} +\DeclareFontSeriesChangeRule {uc}{el} {eluc} {} +\DeclareFontSeriesChangeRule {uc}{l} {luc} {} +\DeclareFontSeriesChangeRule {uc}{sl} {sluc} {} +\DeclareFontSeriesChangeRule {uc}{sb} {sbuc} {buc} +\DeclareFontSeriesChangeRule {uc}{b} {buc} {} +\DeclareFontSeriesChangeRule {uc}{eb} {ebuc} {buc} +\DeclareFontSeriesChangeRule {uc}{ub} {ubuc} {buc} +% \end{macrocode} +% +% \begin{macrocode} +\DeclareFontSeriesChangeRule {ec}{ul} {ulec} {} +\DeclareFontSeriesChangeRule {ec}{el} {elec} {} +\DeclareFontSeriesChangeRule {ec}{l} {lec} {} +\DeclareFontSeriesChangeRule {ec}{sl} {slec} {} +\DeclareFontSeriesChangeRule {ec}{sb} {sbec} {bec} +\DeclareFontSeriesChangeRule {ec}{b} {bec} {} +\DeclareFontSeriesChangeRule {ec}{eb} {ebec} {bec} +\DeclareFontSeriesChangeRule {ec}{ub} {ubec} {bec} +% \end{macrocode} +% +% There are a number of font families that implement condensed +% series, but often only \texttt{c} and \texttt{bc}. Therefore, if +% we see a weight or width change request that can't be fulfilled +% we try to stay with \texttt{c} or \texttt{bc}. +% \begin{macrocode} +\DeclareFontSeriesChangeRule {c}{ul} {ulc} {c} +\DeclareFontSeriesChangeRule {c}{el} {elc} {c} +\DeclareFontSeriesChangeRule {c}{l} {lc} {c} +\DeclareFontSeriesChangeRule {c}{sl} {slc} {c} +\DeclareFontSeriesChangeRule {c}{sb} {sbc} {bc} +\DeclareFontSeriesChangeRule {c}{b} {bc} {} +\DeclareFontSeriesChangeRule {c}{eb} {ebc} {bc} +\DeclareFontSeriesChangeRule {c}{ub} {ubc} {bc} +\DeclareFontSeriesChangeRule {c}{uc} {uc} {c} +\DeclareFontSeriesChangeRule {c}{ec} {ec} {c} +\DeclareFontSeriesChangeRule {c}{sc} {sc} {c} +% \end{macrocode} +% +% \begin{macrocode} +\DeclareFontSeriesChangeRule {sc}{ul} {ulsc} {} +\DeclareFontSeriesChangeRule {sc}{el} {elsc} {} +\DeclareFontSeriesChangeRule {sc}{l} {lsc} {} +\DeclareFontSeriesChangeRule {sc}{sl} {slsc} {} +\DeclareFontSeriesChangeRule {sc}{sb} {sbsc} {bsc} +\DeclareFontSeriesChangeRule {sc}{b} {bsc} {} +\DeclareFontSeriesChangeRule {sc}{eb} {ebsc} {bsc} +\DeclareFontSeriesChangeRule {sc}{ub} {ubsc} {bsc} +% \end{macrocode} +% +% \begin{macrocode} +\DeclareFontSeriesChangeRule {m}{sb} {sb} {b} +\DeclareFontSeriesChangeRule {m}{eb} {eb} {b} +\DeclareFontSeriesChangeRule {m}{ub} {ub} {b} +% \end{macrocode} +% +% This special rule normally does nothing since nearly every font +% implements the \texttt{b} bold series. The exception are Computer +% Modern and Latin Modern and fonts based on them. They usually +% only have \texttt{bx}, but then they normally provide an +% \texttt{.fd} file declaration mapping from \texttt{b} to +% \texttt{bx} and thus pretend that \texttt{b} exists. But in case +% any of them does not, we offer an alternative result and switch +% to \texttt{bx} if \texttt{b} can't be found. +% \begin{macrocode} +\DeclareFontSeriesChangeRule {m}{b} {b} {bx} +% \end{macrocode} +% +% \begin{macrocode} +\DeclareFontSeriesChangeRule {sx}{ul} {ulsx} {} +\DeclareFontSeriesChangeRule {sx}{el} {elsx} {} +\DeclareFontSeriesChangeRule {sx}{l} {lsx} {} +\DeclareFontSeriesChangeRule {sx}{sl} {slsx} {} +\DeclareFontSeriesChangeRule {sx}{sb} {sbsx} {bsx} +\DeclareFontSeriesChangeRule {sx}{b} {bsx} {} +\DeclareFontSeriesChangeRule {sx}{eb} {ebsx} {bsx} +\DeclareFontSeriesChangeRule {sx}{ub} {ubsx} {bsx} +% \end{macrocode} +% +% \begin{macrocode} +\DeclareFontSeriesChangeRule {x}{ul} {ulx} {} +\DeclareFontSeriesChangeRule {x}{el} {elx} {} +\DeclareFontSeriesChangeRule {x}{l} {lx} {} +\DeclareFontSeriesChangeRule {x}{sl} {slx} {} +\DeclareFontSeriesChangeRule {x}{sb} {sbx} {bx} +\DeclareFontSeriesChangeRule {x}{b} {bx} {} +\DeclareFontSeriesChangeRule {x}{eb} {ebx} {bx} +\DeclareFontSeriesChangeRule {x}{ub} {ubx} {bx} +% \end{macrocode} +% +% \begin{macrocode} +\DeclareFontSeriesChangeRule {ex}{ul} {ulex} {} +\DeclareFontSeriesChangeRule {ex}{el} {elex} {} +\DeclareFontSeriesChangeRule {ex}{l} {lex} {} +\DeclareFontSeriesChangeRule {ex}{sl} {slex} {} +\DeclareFontSeriesChangeRule {ex}{sb} {sbex} {bex} +\DeclareFontSeriesChangeRule {ex}{b} {bex} {} +\DeclareFontSeriesChangeRule {ex}{eb} {ebex} {bex} +\DeclareFontSeriesChangeRule {ex}{ub} {ubex} {bex} +% \end{macrocode} +% +% \begin{macrocode} +\DeclareFontSeriesChangeRule {ux}{ul} {ulux} {} +\DeclareFontSeriesChangeRule {ux}{el} {elux} {} +\DeclareFontSeriesChangeRule {ux}{l} {lux} {} +\DeclareFontSeriesChangeRule {ux}{sl} {slux} {} +\DeclareFontSeriesChangeRule {ux}{sb} {sbux} {bux} +\DeclareFontSeriesChangeRule {ux}{b} {bux} {} +\DeclareFontSeriesChangeRule {ux}{eb} {ebux} {bux} +\DeclareFontSeriesChangeRule {ux}{ub} {ubux} {bux} +% \end{macrocode} +% +% \begin{macrocode} +\DeclareFontSeriesChangeRule {sbuc}{ul} {uluc} {} +\DeclareFontSeriesChangeRule {sbuc}{el} {eluc} {} +\DeclareFontSeriesChangeRule {sbuc}{l} {luc} {} +\DeclareFontSeriesChangeRule {sbuc}{sl} {sluc} {} +\DeclareFontSeriesChangeRule {sbuc}{sb} {sbuc} {} +\DeclareFontSeriesChangeRule {sbuc}{b} {buc} {} +\DeclareFontSeriesChangeRule {sbuc}{eb} {ebuc} {buc} +\DeclareFontSeriesChangeRule {sbuc}{ub} {ubuc} {buc} +\DeclareFontSeriesChangeRule {sbuc}{uc} {sbuc} {} +\DeclareFontSeriesChangeRule {sbuc}{ec} {sbec} {} +\DeclareFontSeriesChangeRule {sbuc}{c} {sbc} {} +\DeclareFontSeriesChangeRule {sbuc}{sc} {sbsc} {} +\DeclareFontSeriesChangeRule {sbuc}{sx} {sbsx} {} +\DeclareFontSeriesChangeRule {sbuc}{x} {sbx} {} +\DeclareFontSeriesChangeRule {sbuc}{ex} {sbex} {} +\DeclareFontSeriesChangeRule {sbuc}{ux} {sbux} {} +% \end{macrocode} +% +% \begin{macrocode} +\DeclareFontSeriesChangeRule {sbec}{ul} {ulec} {} +\DeclareFontSeriesChangeRule {sbec}{el} {elec} {} +\DeclareFontSeriesChangeRule {sbec}{l} {lec} {} +\DeclareFontSeriesChangeRule {sbec}{sl} {slec} {} +\DeclareFontSeriesChangeRule {sbec}{sb} {sbec} {} +\DeclareFontSeriesChangeRule {sbec}{b} {bec} {} +\DeclareFontSeriesChangeRule {sbec}{eb} {ebec} {bec} +\DeclareFontSeriesChangeRule {sbec}{ub} {ubec} {bec} +\DeclareFontSeriesChangeRule {sbec}{uc} {sbuc} {} +\DeclareFontSeriesChangeRule {sbec}{ec} {sbec} {} +\DeclareFontSeriesChangeRule {sbec}{c} {sbc} {} +\DeclareFontSeriesChangeRule {sbec}{sc} {sbsc} {} +\DeclareFontSeriesChangeRule {sbec}{sx} {sbsx} {} +\DeclareFontSeriesChangeRule {sbec}{x} {sbx} {} +\DeclareFontSeriesChangeRule {sbec}{ex} {sbex} {} +\DeclareFontSeriesChangeRule {sbec}{ux} {sbux} {} +% \end{macrocode} +% +% \begin{macrocode} +\DeclareFontSeriesChangeRule {sbc}{ul} {ulc} {} +\DeclareFontSeriesChangeRule {sbc}{el} {elc} {} +\DeclareFontSeriesChangeRule {sbc}{l} {lc} {} +\DeclareFontSeriesChangeRule {sbc}{sl} {slc} {} +\DeclareFontSeriesChangeRule {sbc}{sb} {sbc} {} +\DeclareFontSeriesChangeRule {sbc}{b} {bc} {} +\DeclareFontSeriesChangeRule {sbc}{eb} {ebc} {bc} +\DeclareFontSeriesChangeRule {sbc}{ub} {ubc} {bc} +\DeclareFontSeriesChangeRule {sbc}{uc} {sbuc} {} +\DeclareFontSeriesChangeRule {sbc}{ec} {sbec} {} +\DeclareFontSeriesChangeRule {sbc}{c} {sbc} {} +\DeclareFontSeriesChangeRule {sbc}{sc} {sbsc} {} +\DeclareFontSeriesChangeRule {sbc}{sx} {sbsx} {} +\DeclareFontSeriesChangeRule {sbc}{x} {sbx} {} +\DeclareFontSeriesChangeRule {sbc}{ex} {sbex} {} +\DeclareFontSeriesChangeRule {sbc}{ux} {sbux} {} +% \end{macrocode} +% +% \begin{macrocode} +\DeclareFontSeriesChangeRule {sbsc}{ul} {ulsc} {} +\DeclareFontSeriesChangeRule {sbsc}{el} {elsc} {} +\DeclareFontSeriesChangeRule {sbsc}{l} {lsc} {} +\DeclareFontSeriesChangeRule {sbsc}{sl} {slsc} {} +\DeclareFontSeriesChangeRule {sbsc}{sb} {sbsc} {} +\DeclareFontSeriesChangeRule {sbsc}{b} {bsc} {} +\DeclareFontSeriesChangeRule {sbsc}{eb} {ebsc} {bsc} +\DeclareFontSeriesChangeRule {sbsc}{ub} {ubsc} {bsc} +\DeclareFontSeriesChangeRule {sbsc}{uc} {sbuc} {} +\DeclareFontSeriesChangeRule {sbsc}{ec} {sbec} {} +\DeclareFontSeriesChangeRule {sbsc}{c} {sbc} {} +\DeclareFontSeriesChangeRule {sbsc}{sc} {sbsc} {} +\DeclareFontSeriesChangeRule {sbsc}{sx} {sbsx} {} +\DeclareFontSeriesChangeRule {sbsc}{x} {sbx} {} +\DeclareFontSeriesChangeRule {sbsc}{ex} {sbex} {} +\DeclareFontSeriesChangeRule {sbsc}{ux} {sbux} {} +% \end{macrocode} +% +% \begin{macrocode} +\DeclareFontSeriesChangeRule {sb}{uc} {sbuc} {} +\DeclareFontSeriesChangeRule {sb}{ec} {sbec} {} +\DeclareFontSeriesChangeRule {sb}{c} {sbc} {} +\DeclareFontSeriesChangeRule {sb}{sc} {sbsc} {} +\DeclareFontSeriesChangeRule {sb}{sx} {sbsx} {} +\DeclareFontSeriesChangeRule {sb}{x} {sbx} {} +\DeclareFontSeriesChangeRule {sb}{ex} {sbex} {} +\DeclareFontSeriesChangeRule {sb}{ux} {sbux} {} +\DeclareFontSeriesChangeRule {sb}{eb} {eb} {b} +\DeclareFontSeriesChangeRule {sb}{ub} {ub} {b} +% \end{macrocode} +% +% \begin{macrocode} +\DeclareFontSeriesChangeRule {sbsx}{ul} {ulsx} {} +\DeclareFontSeriesChangeRule {sbsx}{el} {elsx} {} +\DeclareFontSeriesChangeRule {sbsx}{l} {lsx} {} +\DeclareFontSeriesChangeRule {sbsx}{sl} {slsx} {} +\DeclareFontSeriesChangeRule {sbsx}{sb} {sbsx} {} +\DeclareFontSeriesChangeRule {sbsx}{b} {bsx} {} +\DeclareFontSeriesChangeRule {sbsx}{eb} {ebsx} {bsx} +\DeclareFontSeriesChangeRule {sbsx}{ub} {ubsx} {bsx} +\DeclareFontSeriesChangeRule {sbsx}{uc} {sbuc} {} +\DeclareFontSeriesChangeRule {sbsx}{ec} {sbec} {} +\DeclareFontSeriesChangeRule {sbsx}{c} {sbc} {} +\DeclareFontSeriesChangeRule {sbsx}{sc} {sbsc} {} +\DeclareFontSeriesChangeRule {sbsx}{sx} {sbsx} {} +\DeclareFontSeriesChangeRule {sbsx}{x} {sbx} {} +\DeclareFontSeriesChangeRule {sbsx}{ex} {sbex} {} +\DeclareFontSeriesChangeRule {sbsx}{ux} {sbux} {} +% \end{macrocode} +% +% \begin{macrocode} +\DeclareFontSeriesChangeRule {sbx}{ul} {ulx} {} +\DeclareFontSeriesChangeRule {sbx}{el} {elx} {} +\DeclareFontSeriesChangeRule {sbx}{l} {lx} {} +\DeclareFontSeriesChangeRule {sbx}{sl} {slx} {} +\DeclareFontSeriesChangeRule {sbx}{sb} {sbx} {} +\DeclareFontSeriesChangeRule {sbx}{b} {bx} {} +\DeclareFontSeriesChangeRule {sbx}{eb} {ebx} {bx} +\DeclareFontSeriesChangeRule {sbx}{ub} {ubx} {bx} +\DeclareFontSeriesChangeRule {sbx}{uc} {sbuc} {} +\DeclareFontSeriesChangeRule {sbx}{ec} {sbec} {} +\DeclareFontSeriesChangeRule {sbx}{c} {sbc} {} +\DeclareFontSeriesChangeRule {sbx}{sc} {sbsc} {} +\DeclareFontSeriesChangeRule {sbx}{sx} {sbsx} {} +\DeclareFontSeriesChangeRule {sbx}{x} {sbx} {} +\DeclareFontSeriesChangeRule {sbx}{ex} {sbex} {} +\DeclareFontSeriesChangeRule {sbx}{ux} {sbux} {} +% \end{macrocode} +% +% \begin{macrocode} +\DeclareFontSeriesChangeRule {sbex}{ul} {ulex} {} +\DeclareFontSeriesChangeRule {sbex}{el} {elex} {} +\DeclareFontSeriesChangeRule {sbex}{l} {lex} {} +\DeclareFontSeriesChangeRule {sbex}{sl} {slex} {} +\DeclareFontSeriesChangeRule {sbex}{sb} {sbex} {} +\DeclareFontSeriesChangeRule {sbex}{b} {bex} {} +\DeclareFontSeriesChangeRule {sbex}{eb} {ebex} {bex} +\DeclareFontSeriesChangeRule {sbex}{ub} {ubex} {bex} +\DeclareFontSeriesChangeRule {sbex}{uc} {sbuc} {} +\DeclareFontSeriesChangeRule {sbex}{ec} {sbec} {} +\DeclareFontSeriesChangeRule {sbex}{c} {sbc} {} +\DeclareFontSeriesChangeRule {sbex}{sc} {sbsc} {} +\DeclareFontSeriesChangeRule {sbex}{sx} {sbsx} {} +\DeclareFontSeriesChangeRule {sbex}{x} {sbx} {} +\DeclareFontSeriesChangeRule {sbex}{ex} {sbex} {} +\DeclareFontSeriesChangeRule {sbex}{ux} {sbux} {} +% \end{macrocode} +% +% \begin{macrocode} +\DeclareFontSeriesChangeRule {sbux}{ul} {ulux} {} +\DeclareFontSeriesChangeRule {sbux}{el} {elux} {} +\DeclareFontSeriesChangeRule {sbux}{l} {lux} {} +\DeclareFontSeriesChangeRule {sbux}{sl} {slux} {} +\DeclareFontSeriesChangeRule {sbux}{sb} {sbux} {} +\DeclareFontSeriesChangeRule {sbux}{b} {bux} {} +\DeclareFontSeriesChangeRule {sbux}{eb} {ebux} {bux} +\DeclareFontSeriesChangeRule {sbux}{ub} {ubux} {bux} +\DeclareFontSeriesChangeRule {sbux}{uc} {sbuc} {} +\DeclareFontSeriesChangeRule {sbux}{ec} {sbec} {} +\DeclareFontSeriesChangeRule {sbux}{c} {sbc} {} +\DeclareFontSeriesChangeRule {sbux}{sc} {sbsc} {} +\DeclareFontSeriesChangeRule {sbux}{sx} {sbsx} {} +\DeclareFontSeriesChangeRule {sbux}{x} {sbx} {} +\DeclareFontSeriesChangeRule {sbux}{ex} {sbex} {} +\DeclareFontSeriesChangeRule {sbux}{ux} {sbux} {} +% \end{macrocode} +% +% \begin{macrocode} +\DeclareFontSeriesChangeRule {buc}{ul} {uluc} {} +\DeclareFontSeriesChangeRule {buc}{el} {eluc} {} +\DeclareFontSeriesChangeRule {buc}{l} {luc} {} +\DeclareFontSeriesChangeRule {buc}{sl} {sluc} {} +\DeclareFontSeriesChangeRule {buc}{sb} {sbuc} {buc} +\DeclareFontSeriesChangeRule {buc}{b} {buc} {} +\DeclareFontSeriesChangeRule {buc}{eb} {ebuc} {buc} +\DeclareFontSeriesChangeRule {buc}{ub} {ubuc} {buc} +\DeclareFontSeriesChangeRule {buc}{uc} {buc} {} +\DeclareFontSeriesChangeRule {buc}{ec} {bec} {} +\DeclareFontSeriesChangeRule {buc}{c} {bc} {} +\DeclareFontSeriesChangeRule {buc}{sc} {bsc} {} +\DeclareFontSeriesChangeRule {buc}{sx} {bsx} {} +\DeclareFontSeriesChangeRule {buc}{x} {bx} {} +\DeclareFontSeriesChangeRule {buc}{ex} {bex} {} +\DeclareFontSeriesChangeRule {buc}{ux} {bux} {} +% \end{macrocode} +% +% \begin{macrocode} +\DeclareFontSeriesChangeRule {bec}{ul} {ulec} {} +\DeclareFontSeriesChangeRule {bec}{el} {elec} {} +\DeclareFontSeriesChangeRule {bec}{l} {lec} {} +\DeclareFontSeriesChangeRule {bec}{sl} {slec} {} +\DeclareFontSeriesChangeRule {bec}{sb} {sbec} {bec} +\DeclareFontSeriesChangeRule {bec}{b} {bec} {} +\DeclareFontSeriesChangeRule {bec}{eb} {ebec} {bec} +\DeclareFontSeriesChangeRule {bec}{ub} {ubec} {bec} +\DeclareFontSeriesChangeRule {bec}{uc} {buc} {} +\DeclareFontSeriesChangeRule {bec}{ec} {bec} {} +\DeclareFontSeriesChangeRule {bec}{c} {bc} {} +\DeclareFontSeriesChangeRule {bec}{sc} {bsc} {} +\DeclareFontSeriesChangeRule {bec}{sx} {bsx} {} +\DeclareFontSeriesChangeRule {bec}{x} {bx} {} +\DeclareFontSeriesChangeRule {bec}{ex} {bex} {} +\DeclareFontSeriesChangeRule {bec}{ux} {bux} {} +% \end{macrocode} +% +% \begin{macrocode} +\DeclareFontSeriesChangeRule {bc}{ul} {ulc} {} +\DeclareFontSeriesChangeRule {bc}{el} {elc} {} +\DeclareFontSeriesChangeRule {bc}{l} {lc} {} +\DeclareFontSeriesChangeRule {bc}{sl} {slc} {} +\DeclareFontSeriesChangeRule {bc}{sb} {sbc} {bc} +\DeclareFontSeriesChangeRule {bc}{b} {bc} {} +\DeclareFontSeriesChangeRule {bc}{eb} {ebc} {bc} +\DeclareFontSeriesChangeRule {bc}{ub} {ubc} {bc} +\DeclareFontSeriesChangeRule {bc}{uc} {buc} {} +\DeclareFontSeriesChangeRule {bc}{ec} {bec} {} +\DeclareFontSeriesChangeRule {bc}{c} {bc} {} +\DeclareFontSeriesChangeRule {bc}{sc} {bsc} {} +\DeclareFontSeriesChangeRule {bc}{sx} {bsx} {} +\DeclareFontSeriesChangeRule {bc}{x} {bx} {} +\DeclareFontSeriesChangeRule {bc}{ex} {bex} {} +\DeclareFontSeriesChangeRule {bc}{ux} {bux} {} +% \end{macrocode} +% +% \begin{macrocode} +\DeclareFontSeriesChangeRule {bsc}{ul} {ulsc} {} +\DeclareFontSeriesChangeRule {bsc}{el} {elsc} {} +\DeclareFontSeriesChangeRule {bsc}{l} {lsc} {} +\DeclareFontSeriesChangeRule {bsc}{sl} {slsc} {} +\DeclareFontSeriesChangeRule {bsc}{sb} {sbsc} {bsc} +\DeclareFontSeriesChangeRule {bsc}{b} {bsc} {} +\DeclareFontSeriesChangeRule {bsc}{eb} {ebsc} {bsc} +\DeclareFontSeriesChangeRule {bsc}{ub} {ubsc} {bsc} +\DeclareFontSeriesChangeRule {bsc}{uc} {buc} {} +\DeclareFontSeriesChangeRule {bsc}{ec} {bec} {} +\DeclareFontSeriesChangeRule {bsc}{c} {bc} {} +\DeclareFontSeriesChangeRule {bsc}{sc} {bsc} {} +\DeclareFontSeriesChangeRule {bsc}{sx} {bsx} {} +\DeclareFontSeriesChangeRule {bsc}{x} {bx} {} +\DeclareFontSeriesChangeRule {bsc}{ex} {bex} {} +\DeclareFontSeriesChangeRule {bsc}{ux} {bux} {} +% \end{macrocode} +% +% If we are in \texttt{b} and a width change is requested that +% leads to a missing font face we stay in \texttt{b} because then the +% font family probably doesn't implement width changes at all. +% \begin{macrocode} +\DeclareFontSeriesChangeRule {b}{uc} {buc} {b} +\DeclareFontSeriesChangeRule {b}{ec} {bec} {b} +\DeclareFontSeriesChangeRule {b}{c} {bc} {b} +\DeclareFontSeriesChangeRule {b}{sc} {bsc} {b} +\DeclareFontSeriesChangeRule {b}{sx} {bsx} {b} +\DeclareFontSeriesChangeRule {b}{x} {bx} {b} +\DeclareFontSeriesChangeRule {b}{ex} {bex} {b} +\DeclareFontSeriesChangeRule {b}{ux} {bux} {b} +\DeclareFontSeriesChangeRule {b}{sb} {sb} {b} +\DeclareFontSeriesChangeRule {b}{eb} {eb} {b} +\DeclareFontSeriesChangeRule {b}{ub} {ub} {b} +% \end{macrocode} % % \begin{macrocode} -\DeclareFontSeriesChangeRule {m}{bx} {bx} {b} %<----- -\DeclareFontSeriesChangeRule {m}{b} {b} {bx} %<----- -\DeclareFontSeriesChangeRule {m}{c} {c} {m} %<----- -\DeclareFontSeriesChangeRule {m}{ec} {ec} {m} %<----- -\DeclareFontSeriesChangeRule {m}{l} {l} {m} %<----- -\DeclareFontSeriesChangeRule {m}{sb} {sb} {b} %<----- -\DeclareFontSeriesChangeRule {m}{sc} {sc} {m} %<----- -\DeclareFontSeriesChangeRule {m}{x} {x} {m} %<----- -% \end{macrocode} -% -% \begin{macrocode} -\DeclareFontSeriesChangeRule {sbc}{b}{bc}{} -\DeclareFontSeriesChangeRule {sbc}{c}{sbc}{} -\DeclareFontSeriesChangeRule {sbc}{eb}{ebc}{} -\DeclareFontSeriesChangeRule {sbc}{ec}{sbec}{sbc} -\DeclareFontSeriesChangeRule {sbc}{el}{elc}{} -\DeclareFontSeriesChangeRule {sbc}{l}{lc}{} -\DeclareFontSeriesChangeRule {sbc}{sb}{sbc}{} -\DeclareFontSeriesChangeRule {sbc}{sc}{sbsc}{sbc} -\DeclareFontSeriesChangeRule {sbc}{sl}{slc}{} -\DeclareFontSeriesChangeRule {sbc}{ub}{ubc}{} -\DeclareFontSeriesChangeRule {sbc}{ul}{ulc}{} -\DeclareFontSeriesChangeRule {sbc}{x}{sbx}{} -% \end{macrocode} -% -% \begin{macrocode} -\DeclareFontSeriesChangeRule {sbx}{b}{bx}{} -\DeclareFontSeriesChangeRule {sbx}{c}{sbc}{} -\DeclareFontSeriesChangeRule {sbx}{eb}{ebx}{} -\DeclareFontSeriesChangeRule {sbx}{ec}{sbec}{} -\DeclareFontSeriesChangeRule {sbx}{el}{elx}{} -\DeclareFontSeriesChangeRule {sbx}{l}{lx}{} -\DeclareFontSeriesChangeRule {sbx}{sb}{sbx}{} -\DeclareFontSeriesChangeRule {sbx}{sc}{sbsc}{} -\DeclareFontSeriesChangeRule {sbx}{sl}{slx}{} -\DeclareFontSeriesChangeRule {sbx}{ub}{ubx}{} -\DeclareFontSeriesChangeRule {sbx}{ul}{ulx}{} -\DeclareFontSeriesChangeRule {sbx}{x}{sbx}{} -% \end{macrocode} -% -% \begin{macrocode} -\DeclareFontSeriesChangeRule {sb}{c} {sbc} {bc} %? %<----- -\DeclareFontSeriesChangeRule {sb}{ec} {sbec} {sbc} %? %<----- -\DeclareFontSeriesChangeRule {sb}{sc} {sbsc} {sbc} %? %<----- -\DeclareFontSeriesChangeRule {sb}{x} {sbx} {bx} %? %<----- -% \end{macrocode} -% -% \begin{macrocode} -\DeclareFontSeriesChangeRule {slc}{b}{bc}{} -\DeclareFontSeriesChangeRule {slc}{c}{slc}{} -\DeclareFontSeriesChangeRule {slc}{eb}{ebc}{} -\DeclareFontSeriesChangeRule {slc}{ec}{slec}{} -\DeclareFontSeriesChangeRule {slc}{el}{elc}{} -\DeclareFontSeriesChangeRule {slc}{l}{lc}{} -\DeclareFontSeriesChangeRule {slc}{sb}{sbc}{} -\DeclareFontSeriesChangeRule {slc}{sc}{slsc}{} -\DeclareFontSeriesChangeRule {slc}{sl}{slc}{} -\DeclareFontSeriesChangeRule {slc}{ub}{ubc}{} -\DeclareFontSeriesChangeRule {slc}{ul}{ulc}{} -\DeclareFontSeriesChangeRule {slc}{x}{slx}{} -% \end{macrocode} -% -% \begin{macrocode} -\DeclareFontSeriesChangeRule {slx}{b}{bx}{} -\DeclareFontSeriesChangeRule {slx}{c}{slc}{} -\DeclareFontSeriesChangeRule {slx}{eb}{ebx}{} -\DeclareFontSeriesChangeRule {slx}{ec}{slec}{} -\DeclareFontSeriesChangeRule {slx}{el}{elx}{} -\DeclareFontSeriesChangeRule {slx}{l}{lx}{} -\DeclareFontSeriesChangeRule {slx}{sb}{sbx}{} -\DeclareFontSeriesChangeRule {slx}{sc}{slsc}{} -\DeclareFontSeriesChangeRule {slx}{sl}{slx}{} -\DeclareFontSeriesChangeRule {slx}{ub}{ubx}{} -\DeclareFontSeriesChangeRule {slx}{ul}{ulx}{} -\DeclareFontSeriesChangeRule {slx}{x}{slx}{} -% \end{macrocode} -% -% \begin{macrocode} -\DeclareFontSeriesChangeRule {sl}{c}{slc}{} -\DeclareFontSeriesChangeRule {sl}{ec}{slec}{} -\DeclareFontSeriesChangeRule {sl}{sc}{slsc}{} -\DeclareFontSeriesChangeRule {sl}{x}{slx}{} +\DeclareFontSeriesChangeRule {bsx}{ul} {ulsx} {} +\DeclareFontSeriesChangeRule {bsx}{el} {elsx} {} +\DeclareFontSeriesChangeRule {bsx}{l} {lsx} {} +\DeclareFontSeriesChangeRule {bsx}{sl} {slsx} {} +\DeclareFontSeriesChangeRule {bsx}{sb} {sbsx} {bsx} +\DeclareFontSeriesChangeRule {bsx}{b} {bsx} {} +\DeclareFontSeriesChangeRule {bsx}{eb} {ebsx} {bsx} +\DeclareFontSeriesChangeRule {bsx}{ub} {ubsx} {bsx} +\DeclareFontSeriesChangeRule {bsx}{uc} {buc} {} +\DeclareFontSeriesChangeRule {bsx}{ec} {bec} {} +\DeclareFontSeriesChangeRule {bsx}{c} {bc} {} +\DeclareFontSeriesChangeRule {bsx}{sc} {bsc} {} +\DeclareFontSeriesChangeRule {bsx}{sx} {bsx} {} +\DeclareFontSeriesChangeRule {bsx}{x} {bx} {} +\DeclareFontSeriesChangeRule {bsx}{ex} {bex} {} +\DeclareFontSeriesChangeRule {bsx}{ux} {bux} {} % \end{macrocode} % % \begin{macrocode} -\DeclareFontSeriesChangeRule {ubc}{b}{bc}{} -\DeclareFontSeriesChangeRule {ubc}{c}{ubc}{} -\DeclareFontSeriesChangeRule {ubc}{eb}{ebc}{} -\DeclareFontSeriesChangeRule {ubc}{ec}{ubec}{} -\DeclareFontSeriesChangeRule {ubc}{el}{elc}{} -\DeclareFontSeriesChangeRule {ubc}{l}{lc}{} -\DeclareFontSeriesChangeRule {ubc}{sb}{sbc}{} -\DeclareFontSeriesChangeRule {ubc}{sc}{ubsc}{} -\DeclareFontSeriesChangeRule {ubc}{sl}{slc}{} -\DeclareFontSeriesChangeRule {ubc}{ub}{ubc}{} -\DeclareFontSeriesChangeRule {ubc}{ul}{ulc}{} -\DeclareFontSeriesChangeRule {ubc}{x}{ubx}{} -% \end{macrocode} -% -% \begin{macrocode} -\DeclareFontSeriesChangeRule {ubx}{b}{bx}{} -\DeclareFontSeriesChangeRule {ubx}{c}{ubc}{} -\DeclareFontSeriesChangeRule {ubx}{eb}{ebx}{} -\DeclareFontSeriesChangeRule {ubx}{ec}{ubec}{} -\DeclareFontSeriesChangeRule {ubx}{el}{elx}{} -\DeclareFontSeriesChangeRule {ubx}{l}{lx}{} -\DeclareFontSeriesChangeRule {ubx}{sb}{sbx}{} -\DeclareFontSeriesChangeRule {ubx}{sc}{ubsc}{} -\DeclareFontSeriesChangeRule {ubx}{sl}{slx}{} -\DeclareFontSeriesChangeRule {ubx}{ub}{ubx}{} -\DeclareFontSeriesChangeRule {ubx}{ul}{ulx}{} -\DeclareFontSeriesChangeRule {ubx}{x}{ubx}{} -% \end{macrocode} -% -% \begin{macrocode} -\DeclareFontSeriesChangeRule {ub}{c}{ubc}{} -\DeclareFontSeriesChangeRule {ub}{ec}{ubec}{} -\DeclareFontSeriesChangeRule {ub}{sc}{ubsc}{} -\DeclareFontSeriesChangeRule {ub}{x}{ubx}{} -% \end{macrocode} -% -% \begin{macrocode} -\DeclareFontSeriesChangeRule {ulc}{b}{bc}{} -\DeclareFontSeriesChangeRule {ulc}{c}{ulc}{} -\DeclareFontSeriesChangeRule {ulc}{eb}{ebc}{} -\DeclareFontSeriesChangeRule {ulc}{ec}{ulec}{ulc} -\DeclareFontSeriesChangeRule {ulc}{el}{elc}{} -\DeclareFontSeriesChangeRule {ulc}{l}{lc}{} -\DeclareFontSeriesChangeRule {ulc}{sb}{sbc}{} -\DeclareFontSeriesChangeRule {ulc}{sc}{ulsc}{ulc} -\DeclareFontSeriesChangeRule {ulc}{sl}{slc}{} -\DeclareFontSeriesChangeRule {ulc}{ub}{ubc}{} -\DeclareFontSeriesChangeRule {ulc}{ul}{ulc}{} -\DeclareFontSeriesChangeRule {ulc}{x}{ulx}{} -% \end{macrocode} -% -% \begin{macrocode} -\DeclareFontSeriesChangeRule {ulx}{b}{bx}{} -\DeclareFontSeriesChangeRule {ulx}{c}{ulc}{} -\DeclareFontSeriesChangeRule {ulx}{eb}{ebx}{} -\DeclareFontSeriesChangeRule {ulx}{ec}{ulec}{} -\DeclareFontSeriesChangeRule {ulx}{el}{elx}{} -\DeclareFontSeriesChangeRule {ulx}{l}{lx}{} -\DeclareFontSeriesChangeRule {ulx}{sb}{sbx}{} -\DeclareFontSeriesChangeRule {ulx}{sc}{ulsc}{} -\DeclareFontSeriesChangeRule {ulx}{sl}{slx}{} -\DeclareFontSeriesChangeRule {ulx}{ub}{ubx}{} -\DeclareFontSeriesChangeRule {ulx}{ul}{ulx}{} -\DeclareFontSeriesChangeRule {ulx}{x}{ulx}{} -% \end{macrocode} -% -% \begin{macrocode} -\DeclareFontSeriesChangeRule {ul}{c}{ulc}{} -\DeclareFontSeriesChangeRule {ul}{ec}{ulec}{} -\DeclareFontSeriesChangeRule {ul}{sc}{ulsc}{} -\DeclareFontSeriesChangeRule {ul}{x}{ulx}{} -% \end{macrocode} -% -% \begin{macrocode} -\DeclareFontSeriesChangeRule {x}{b}{bx}{} -\DeclareFontSeriesChangeRule {x}{c}{c}{} -\DeclareFontSeriesChangeRule {x}{eb}{ebx}{} -\DeclareFontSeriesChangeRule {x}{ec}{ec}{} -\DeclareFontSeriesChangeRule {x}{el}{elx}{} -\DeclareFontSeriesChangeRule {x}{l}{lx}{} -\DeclareFontSeriesChangeRule {x}{sb}{sbx}{} -\DeclareFontSeriesChangeRule {x}{sc}{sc}{} -\DeclareFontSeriesChangeRule {x}{sl}{slx}{} -\DeclareFontSeriesChangeRule {x}{ub}{ubx}{} -\DeclareFontSeriesChangeRule {x}{ul}{ulx}{} -% \end{macrocode} -% -% -% Special rules for \texttt{lm} etc.\ aren't needed because if the -% target \texttt{lm} is request it will used if there is no rule -% and that id then reduced to \texttt{l} -% automatically. Same for \texttt{mc} and friends. Only \texttt{?m} -% and \texttt{m?} need rules. -% -% So here are the special rules for \texttt{m?}: -% \begin{macrocode} -\DeclareFontSeriesChangeRule {bc}{m?}{c}{} -\DeclareFontSeriesChangeRule {bec}{m?}{ec}{} -\DeclareFontSeriesChangeRule {bsc}{m?}{sc}{} -\DeclareFontSeriesChangeRule {bx}{m?}{x}{} -\DeclareFontSeriesChangeRule {b}{m?}{m}{} -\DeclareFontSeriesChangeRule {c}{m?}{c}{} -\DeclareFontSeriesChangeRule {ebc}{m?}{c}{} -\DeclareFontSeriesChangeRule {ebec}{m?}{ec}{} -\DeclareFontSeriesChangeRule {ebsc}{m?}{sc}{} -\DeclareFontSeriesChangeRule {ebx}{m?}{x}{} -\DeclareFontSeriesChangeRule {eb}{m?}{m}{} -\DeclareFontSeriesChangeRule {ec}{m?}{ec}{} -\DeclareFontSeriesChangeRule {elc}{m?}{c}{} -\DeclareFontSeriesChangeRule {elec}{m?}{ec}{} -\DeclareFontSeriesChangeRule {elsc}{m?}{sc}{} -\DeclareFontSeriesChangeRule {elx}{m?}{x}{} -\DeclareFontSeriesChangeRule {el}{m?}{m}{} -\DeclareFontSeriesChangeRule {lc}{m?}{c}{} -\DeclareFontSeriesChangeRule {lec}{m?}{ec}{} -\DeclareFontSeriesChangeRule {lsc}{m?}{sc}{} -\DeclareFontSeriesChangeRule {lx}{m?}{x}{} -\DeclareFontSeriesChangeRule {l}{m?}{m}{} -\DeclareFontSeriesChangeRule {m}{m?}{m}{} -\DeclareFontSeriesChangeRule {sbc}{m?}{c}{} -\DeclareFontSeriesChangeRule {sbec}{m?}{ec}{} -\DeclareFontSeriesChangeRule {sbsc}{m?}{sc}{} -\DeclareFontSeriesChangeRule {sbx}{m?}{x}{} -\DeclareFontSeriesChangeRule {sb}{m?}{m}{} -\DeclareFontSeriesChangeRule {sc}{m?}{sc}{} -\DeclareFontSeriesChangeRule {slc}{m?}{c}{} -\DeclareFontSeriesChangeRule {slec}{m?}{ec}{} -\DeclareFontSeriesChangeRule {slsc}{m?}{sc}{} -\DeclareFontSeriesChangeRule {slx}{m?}{x}{} -\DeclareFontSeriesChangeRule {sl}{m?}{m}{} -\DeclareFontSeriesChangeRule {ubc}{m?}{c}{} -\DeclareFontSeriesChangeRule {ubec}{m?}{ec}{} -\DeclareFontSeriesChangeRule {ubsc}{m?}{sc}{} -\DeclareFontSeriesChangeRule {ubx}{m?}{x}{} -\DeclareFontSeriesChangeRule {ub}{m?}{ub}{} -\DeclareFontSeriesChangeRule {ulc}{m?}{c}{} -\DeclareFontSeriesChangeRule {ulec}{m?}{ec}{} -\DeclareFontSeriesChangeRule {ulsc}{m?}{sc}{} -\DeclareFontSeriesChangeRule {ulx}{m?}{x}{} -\DeclareFontSeriesChangeRule {ul}{m?}{m}{} -\DeclareFontSeriesChangeRule {x}{m?}{x}{} +\DeclareFontSeriesChangeRule {bx}{ul} {ulx} {} +\DeclareFontSeriesChangeRule {bx}{el} {elx} {} +\DeclareFontSeriesChangeRule {bx}{l} {lx} {} +\DeclareFontSeriesChangeRule {bx}{sl} {slx} {} +\DeclareFontSeriesChangeRule {bx}{sb} {sbx} {bx} +\DeclareFontSeriesChangeRule {bx}{b} {bx} {} +\DeclareFontSeriesChangeRule {bx}{eb} {ebx} {bx} +\DeclareFontSeriesChangeRule {bx}{ub} {ubx} {bx} +\DeclareFontSeriesChangeRule {bx}{uc} {buc} {} +\DeclareFontSeriesChangeRule {bx}{ec} {bec} {} +\DeclareFontSeriesChangeRule {bx}{c} {bc} {} +\DeclareFontSeriesChangeRule {bx}{sc} {bsc} {} +\DeclareFontSeriesChangeRule {bx}{sx} {bsx} {} +\DeclareFontSeriesChangeRule {bx}{x} {bx} {} +\DeclareFontSeriesChangeRule {bx}{ex} {bex} {} +\DeclareFontSeriesChangeRule {bx}{ux} {bux} {} +% \end{macrocode} +% +% \begin{macrocode} +\DeclareFontSeriesChangeRule {bex}{ul} {ulex} {} +\DeclareFontSeriesChangeRule {bex}{el} {elex} {} +\DeclareFontSeriesChangeRule {bex}{l} {lex} {} +\DeclareFontSeriesChangeRule {bex}{sl} {slex} {} +\DeclareFontSeriesChangeRule {bex}{sb} {sbex} {bex} +\DeclareFontSeriesChangeRule {bex}{b} {bex} {} +\DeclareFontSeriesChangeRule {bex}{eb} {ebex} {bex} +\DeclareFontSeriesChangeRule {bex}{ub} {ubex} {bex} +\DeclareFontSeriesChangeRule {bex}{uc} {buc} {} +\DeclareFontSeriesChangeRule {bex}{ec} {bec} {} +\DeclareFontSeriesChangeRule {bex}{c} {bc} {} +\DeclareFontSeriesChangeRule {bex}{sc} {bsc} {} +\DeclareFontSeriesChangeRule {bex}{sx} {bsx} {} +\DeclareFontSeriesChangeRule {bex}{x} {bx} {} +\DeclareFontSeriesChangeRule {bex}{ex} {bex} {} +\DeclareFontSeriesChangeRule {bex}{ux} {bux} {} +% \end{macrocode} +% +% \begin{macrocode} +\DeclareFontSeriesChangeRule {bux}{ul} {ulux} {} +\DeclareFontSeriesChangeRule {bux}{el} {elux} {} +\DeclareFontSeriesChangeRule {bux}{l} {lux} {} +\DeclareFontSeriesChangeRule {bux}{sl} {slux} {} +\DeclareFontSeriesChangeRule {bux}{sb} {sbux} {bux} +\DeclareFontSeriesChangeRule {bux}{b} {bux} {} +\DeclareFontSeriesChangeRule {bux}{eb} {ebux} {bux} +\DeclareFontSeriesChangeRule {bux}{ub} {ubux} {bux} +\DeclareFontSeriesChangeRule {bux}{uc} {buc} {} +\DeclareFontSeriesChangeRule {bux}{ec} {bec} {} +\DeclareFontSeriesChangeRule {bux}{c} {bc} {} +\DeclareFontSeriesChangeRule {bux}{sc} {bsc} {} +\DeclareFontSeriesChangeRule {bux}{sx} {bsx} {} +\DeclareFontSeriesChangeRule {bux}{x} {bx} {} +\DeclareFontSeriesChangeRule {bux}{ex} {bex} {} +\DeclareFontSeriesChangeRule {bux}{ux} {bux} {} +% \end{macrocode} +% +% \begin{macrocode} +\DeclareFontSeriesChangeRule {ebuc}{ul} {uluc} {} +\DeclareFontSeriesChangeRule {ebuc}{el} {eluc} {} +\DeclareFontSeriesChangeRule {ebuc}{l} {luc} {} +\DeclareFontSeriesChangeRule {ebuc}{sl} {sluc} {} +\DeclareFontSeriesChangeRule {ebuc}{sb} {sbuc} {buc} +\DeclareFontSeriesChangeRule {ebuc}{b} {buc} {} +\DeclareFontSeriesChangeRule {ebuc}{eb} {ebuc} {} +% \end{macrocode} +% +% In the following rule, we use \texttt{eb} instead of \texttt{b} +% in the fourth argument, since \texttt{eb} is a better +% approximation to \texttt{ub} than \texttt{b} and \texttt{ebuc} +% is already in the first argument and we can therefore assume that +% this font face actually exists. A similar consideration also +% applies to some other rules in the following. +% \begin{macrocode} +\DeclareFontSeriesChangeRule {ebuc}{ub} {ubuc} {ebuc} +\DeclareFontSeriesChangeRule {ebuc}{uc} {ebuc} {} +\DeclareFontSeriesChangeRule {ebuc}{ec} {ebec} {} +\DeclareFontSeriesChangeRule {ebuc}{c} {ebc} {} +\DeclareFontSeriesChangeRule {ebuc}{sc} {ebsc} {} +\DeclareFontSeriesChangeRule {ebuc}{sx} {ebsx} {} +\DeclareFontSeriesChangeRule {ebuc}{x} {ebx} {} +\DeclareFontSeriesChangeRule {ebuc}{ex} {ebex} {} +\DeclareFontSeriesChangeRule {ebuc}{ux} {ebux} {} +% \end{macrocode} +% +% \begin{macrocode} +\DeclareFontSeriesChangeRule {ebec}{ul} {ulec} {} +\DeclareFontSeriesChangeRule {ebec}{el} {elec} {} +\DeclareFontSeriesChangeRule {ebec}{l} {lec} {} +\DeclareFontSeriesChangeRule {ebec}{sl} {slec} {} +\DeclareFontSeriesChangeRule {ebec}{sb} {sbec} {bec} +\DeclareFontSeriesChangeRule {ebec}{b} {bec} {} +\DeclareFontSeriesChangeRule {ebec}{eb} {ebec} {} +\DeclareFontSeriesChangeRule {ebec}{ub} {ubec} {ebec} +\DeclareFontSeriesChangeRule {ebec}{uc} {ebuc} {} +\DeclareFontSeriesChangeRule {ebec}{ec} {ebec} {} +\DeclareFontSeriesChangeRule {ebec}{c} {ebc} {} +\DeclareFontSeriesChangeRule {ebec}{sc} {ebsc} {} +\DeclareFontSeriesChangeRule {ebec}{sx} {ebsx} {} +\DeclareFontSeriesChangeRule {ebec}{x} {ebx} {} +\DeclareFontSeriesChangeRule {ebec}{ex} {ebex} {} +\DeclareFontSeriesChangeRule {ebec}{ux} {ebux} {} +% \end{macrocode} +% +% \begin{macrocode} +\DeclareFontSeriesChangeRule {ebc}{ul} {ulc} {} +\DeclareFontSeriesChangeRule {ebc}{el} {elc} {} +\DeclareFontSeriesChangeRule {ebc}{l} {lc} {} +\DeclareFontSeriesChangeRule {ebc}{sl} {slc} {} +\DeclareFontSeriesChangeRule {ebc}{sb} {sbc} {bc} +\DeclareFontSeriesChangeRule {ebc}{b} {bc} {} +\DeclareFontSeriesChangeRule {ebc}{eb} {ebc} {} +\DeclareFontSeriesChangeRule {ebc}{ub} {ubc} {ebc} +\DeclareFontSeriesChangeRule {ebc}{uc} {ebuc} {} +\DeclareFontSeriesChangeRule {ebc}{ec} {ebec} {} +\DeclareFontSeriesChangeRule {ebc}{c} {ebc} {} +\DeclareFontSeriesChangeRule {ebc}{sc} {ebsc} {} +\DeclareFontSeriesChangeRule {ebc}{sx} {ebsx} {} +\DeclareFontSeriesChangeRule {ebc}{x} {ebx} {} +\DeclareFontSeriesChangeRule {ebc}{ex} {ebex} {} +\DeclareFontSeriesChangeRule {ebc}{ux} {ebux} {} +% \end{macrocode} +% +% \begin{macrocode} +\DeclareFontSeriesChangeRule {ebsc}{ul} {ulsc} {} +\DeclareFontSeriesChangeRule {ebsc}{el} {elsc} {} +\DeclareFontSeriesChangeRule {ebsc}{l} {lsc} {} +\DeclareFontSeriesChangeRule {ebsc}{sl} {slsc} {} +\DeclareFontSeriesChangeRule {ebsc}{sb} {sbsc} {bsc} +\DeclareFontSeriesChangeRule {ebsc}{b} {bsc} {} +\DeclareFontSeriesChangeRule {ebsc}{eb} {ebsc} {} +\DeclareFontSeriesChangeRule {ebsc}{ub} {ubsc} {ebsc} +\DeclareFontSeriesChangeRule {ebsc}{uc} {ebuc} {} +\DeclareFontSeriesChangeRule {ebsc}{ec} {ebec} {} +\DeclareFontSeriesChangeRule {ebsc}{c} {ebc} {} +\DeclareFontSeriesChangeRule {ebsc}{sc} {ebsc} {} +\DeclareFontSeriesChangeRule {ebsc}{sx} {ebsx} {} +\DeclareFontSeriesChangeRule {ebsc}{x} {ebx} {} +\DeclareFontSeriesChangeRule {ebsc}{ex} {ebex} {} +\DeclareFontSeriesChangeRule {ebsc}{ux} {ebux} {} +% \end{macrocode} +% +% \begin{macrocode} +\DeclareFontSeriesChangeRule {eb}{uc} {ebuc} {} +\DeclareFontSeriesChangeRule {eb}{ec} {ebec} {} +\DeclareFontSeriesChangeRule {eb}{c} {ebc} {} +\DeclareFontSeriesChangeRule {eb}{sc} {ebsc} {} +\DeclareFontSeriesChangeRule {eb}{sx} {ebsx} {} +\DeclareFontSeriesChangeRule {eb}{x} {ebx} {} +\DeclareFontSeriesChangeRule {eb}{ex} {ebex} {} +\DeclareFontSeriesChangeRule {eb}{ux} {ebux} {} +\DeclareFontSeriesChangeRule {eb}{sb} {sb} {b} +\DeclareFontSeriesChangeRule {eb}{ub} {ub} {eb} +% \end{macrocode} +% +% \begin{macrocode} +\DeclareFontSeriesChangeRule {ebsx}{ul} {ulsx} {} +\DeclareFontSeriesChangeRule {ebsx}{el} {elsx} {} +\DeclareFontSeriesChangeRule {ebsx}{l} {lsx} {} +\DeclareFontSeriesChangeRule {ebsx}{sl} {slsx} {} +\DeclareFontSeriesChangeRule {ebsx}{sb} {sbsx} {bsx} +\DeclareFontSeriesChangeRule {ebsx}{b} {bsx} {} +\DeclareFontSeriesChangeRule {ebsx}{eb} {ebsx} {} +\DeclareFontSeriesChangeRule {ebsx}{ub} {ubsx} {ebsx} +\DeclareFontSeriesChangeRule {ebsx}{uc} {ebuc} {} +\DeclareFontSeriesChangeRule {ebsx}{ec} {ebec} {} +\DeclareFontSeriesChangeRule {ebsx}{c} {ebc} {} +\DeclareFontSeriesChangeRule {ebsx}{sc} {ebsc} {} +\DeclareFontSeriesChangeRule {ebsx}{sx} {ebsx} {} +\DeclareFontSeriesChangeRule {ebsx}{x} {ebx} {} +\DeclareFontSeriesChangeRule {ebsx}{ex} {ebex} {} +\DeclareFontSeriesChangeRule {ebsx}{ux} {ebux} {} +% \end{macrocode} +% +% \begin{macrocode} +\DeclareFontSeriesChangeRule {ebx}{ul} {ulx} {} +\DeclareFontSeriesChangeRule {ebx}{el} {elx} {} +\DeclareFontSeriesChangeRule {ebx}{l} {lx} {} +\DeclareFontSeriesChangeRule {ebx}{sl} {slx} {} +\DeclareFontSeriesChangeRule {ebx}{sb} {sbx} {bx} +\DeclareFontSeriesChangeRule {ebx}{b} {bx} {} +\DeclareFontSeriesChangeRule {ebx}{eb} {ebx} {} +\DeclareFontSeriesChangeRule {ebx}{ub} {ubx} {ebx} +\DeclareFontSeriesChangeRule {ebx}{uc} {ebuc} {} +\DeclareFontSeriesChangeRule {ebx}{ec} {ebec} {} +\DeclareFontSeriesChangeRule {ebx}{c} {ebc} {} +\DeclareFontSeriesChangeRule {ebx}{sc} {ebsc} {} +\DeclareFontSeriesChangeRule {ebx}{sx} {ebsx} {} +\DeclareFontSeriesChangeRule {ebx}{x} {ebx} {} +\DeclareFontSeriesChangeRule {ebx}{ex} {ebex} {} +\DeclareFontSeriesChangeRule {ebx}{ux} {ebux} {} +% \end{macrocode} +% +% \begin{macrocode} +\DeclareFontSeriesChangeRule {ebex}{ul} {ulex} {} +\DeclareFontSeriesChangeRule {ebex}{el} {elex} {} +\DeclareFontSeriesChangeRule {ebex}{l} {lex} {} +\DeclareFontSeriesChangeRule {ebex}{sl} {slex} {} +\DeclareFontSeriesChangeRule {ebex}{sb} {sbex} {bex} +\DeclareFontSeriesChangeRule {ebex}{b} {bex} {} +\DeclareFontSeriesChangeRule {ebex}{eb} {ebex} {} +\DeclareFontSeriesChangeRule {ebex}{ub} {ubex} {ebex} +\DeclareFontSeriesChangeRule {ebex}{uc} {ebuc} {} +\DeclareFontSeriesChangeRule {ebex}{ec} {ebec} {} +\DeclareFontSeriesChangeRule {ebex}{c} {ebc} {} +\DeclareFontSeriesChangeRule {ebex}{sc} {ebsc} {} +\DeclareFontSeriesChangeRule {ebex}{sx} {ebsx} {} +\DeclareFontSeriesChangeRule {ebex}{x} {ebx} {} +\DeclareFontSeriesChangeRule {ebex}{ex} {ebex} {} +\DeclareFontSeriesChangeRule {ebex}{ux} {ebux} {} +% \end{macrocode} +% +% \begin{macrocode} +\DeclareFontSeriesChangeRule {ebux}{ul} {ulux} {} +\DeclareFontSeriesChangeRule {ebux}{el} {elux} {} +\DeclareFontSeriesChangeRule {ebux}{l} {lux} {} +\DeclareFontSeriesChangeRule {ebux}{sl} {slux} {} +\DeclareFontSeriesChangeRule {ebux}{sb} {sbux} {bux} +\DeclareFontSeriesChangeRule {ebux}{b} {bux} {} +\DeclareFontSeriesChangeRule {ebux}{eb} {ebux} {} +\DeclareFontSeriesChangeRule {ebux}{ub} {ubux} {ebux} +\DeclareFontSeriesChangeRule {ebux}{uc} {ebuc} {} +\DeclareFontSeriesChangeRule {ebux}{ec} {ebec} {} +\DeclareFontSeriesChangeRule {ebux}{c} {ebc} {} +\DeclareFontSeriesChangeRule {ebux}{sc} {ebsc} {} +\DeclareFontSeriesChangeRule {ebux}{sx} {ebsx} {} +\DeclareFontSeriesChangeRule {ebux}{x} {ebx} {} +\DeclareFontSeriesChangeRule {ebux}{ex} {ebex} {} +\DeclareFontSeriesChangeRule {ebux}{ux} {ebux} {} +% \end{macrocode} +% +% \begin{macrocode} +\DeclareFontSeriesChangeRule {ubuc}{ul} {uluc} {} +\DeclareFontSeriesChangeRule {ubuc}{el} {eluc} {} +\DeclareFontSeriesChangeRule {ubuc}{l} {luc} {} +\DeclareFontSeriesChangeRule {ubuc}{sl} {sluc} {} +\DeclareFontSeriesChangeRule {ubuc}{sb} {sbuc} {buc} +\DeclareFontSeriesChangeRule {ubuc}{b} {buc} {} +\DeclareFontSeriesChangeRule {ubuc}{eb} {ebuc} {ubuc} +\DeclareFontSeriesChangeRule {ubuc}{ub} {ubuc} {} +\DeclareFontSeriesChangeRule {ubuc}{uc} {ubuc} {} +\DeclareFontSeriesChangeRule {ubuc}{ec} {ubec} {} +\DeclareFontSeriesChangeRule {ubuc}{c} {ubc} {} +\DeclareFontSeriesChangeRule {ubuc}{sc} {ubsc} {} +\DeclareFontSeriesChangeRule {ubuc}{sx} {ubsx} {} +\DeclareFontSeriesChangeRule {ubuc}{x} {ubx} {} +\DeclareFontSeriesChangeRule {ubuc}{ex} {ubex} {} +\DeclareFontSeriesChangeRule {ubuc}{ux} {ubux} {} +% \end{macrocode} +% +% \begin{macrocode} +\DeclareFontSeriesChangeRule {ubec}{ul} {ulec} {} +\DeclareFontSeriesChangeRule {ubec}{el} {elec} {} +\DeclareFontSeriesChangeRule {ubec}{l} {lec} {} +\DeclareFontSeriesChangeRule {ubec}{sl} {slec} {} +\DeclareFontSeriesChangeRule {ubec}{sb} {sbec} {bec} +\DeclareFontSeriesChangeRule {ubec}{b} {bec} {} +\DeclareFontSeriesChangeRule {ubec}{eb} {ebec} {ubec} +\DeclareFontSeriesChangeRule {ubec}{ub} {ubec} {} +\DeclareFontSeriesChangeRule {ubec}{uc} {ubuc} {} +\DeclareFontSeriesChangeRule {ubec}{ec} {ubec} {} +\DeclareFontSeriesChangeRule {ubec}{c} {ubc} {} +\DeclareFontSeriesChangeRule {ubec}{sc} {ubsc} {} +\DeclareFontSeriesChangeRule {ubec}{sx} {ubsx} {} +\DeclareFontSeriesChangeRule {ubec}{x} {ubx} {} +\DeclareFontSeriesChangeRule {ubec}{ex} {ubex} {} +\DeclareFontSeriesChangeRule {ubec}{ux} {ubux} {} +% \end{macrocode} +% +% \begin{macrocode} +\DeclareFontSeriesChangeRule {ubc}{ul} {ulc} {} +\DeclareFontSeriesChangeRule {ubc}{el} {elc} {} +\DeclareFontSeriesChangeRule {ubc}{l} {lc} {} +\DeclareFontSeriesChangeRule {ubc}{sl} {slc} {} +\DeclareFontSeriesChangeRule {ubc}{sb} {sbc} {bc} +\DeclareFontSeriesChangeRule {ubc}{b} {bc} {} +\DeclareFontSeriesChangeRule {ubc}{eb} {ebc} {ubc} +\DeclareFontSeriesChangeRule {ubc}{ub} {ubc} {} +\DeclareFontSeriesChangeRule {ubc}{uc} {ubuc} {} +\DeclareFontSeriesChangeRule {ubc}{ec} {ubec} {} +\DeclareFontSeriesChangeRule {ubc}{c} {ubc} {} +\DeclareFontSeriesChangeRule {ubc}{sc} {ubsc} {} +\DeclareFontSeriesChangeRule {ubc}{sx} {ubsx} {} +\DeclareFontSeriesChangeRule {ubc}{x} {ubx} {} +\DeclareFontSeriesChangeRule {ubc}{ex} {ubex} {} +\DeclareFontSeriesChangeRule {ubc}{ux} {ubux} {} +% \end{macrocode} +% +% \begin{macrocode} +\DeclareFontSeriesChangeRule {ubsc}{ul} {ulsc} {} +\DeclareFontSeriesChangeRule {ubsc}{el} {elsc} {} +\DeclareFontSeriesChangeRule {ubsc}{l} {lsc} {} +\DeclareFontSeriesChangeRule {ubsc}{sl} {slsc} {} +\DeclareFontSeriesChangeRule {ubsc}{sb} {sbsc} {bsc} +\DeclareFontSeriesChangeRule {ubsc}{b} {bsc} {} +\DeclareFontSeriesChangeRule {ubsc}{eb} {ebsc} {ubsc} +\DeclareFontSeriesChangeRule {ubsc}{ub} {ubsc} {} +\DeclareFontSeriesChangeRule {ubsc}{uc} {ubuc} {} +\DeclareFontSeriesChangeRule {ubsc}{ec} {ubec} {} +\DeclareFontSeriesChangeRule {ubsc}{c} {ubc} {} +\DeclareFontSeriesChangeRule {ubsc}{sc} {ubsc} {} +\DeclareFontSeriesChangeRule {ubsc}{sx} {ubsx} {} +\DeclareFontSeriesChangeRule {ubsc}{x} {ubx} {} +\DeclareFontSeriesChangeRule {ubsc}{ex} {ubex} {} +\DeclareFontSeriesChangeRule {ubsc}{ux} {ubux} {} +% \end{macrocode} +% +% \begin{macrocode} +\DeclareFontSeriesChangeRule {ub}{uc} {ubuc} {} +\DeclareFontSeriesChangeRule {ub}{ec} {ubec} {} +\DeclareFontSeriesChangeRule {ub}{c} {ubc} {} +\DeclareFontSeriesChangeRule {ub}{sc} {ubsc} {} +\DeclareFontSeriesChangeRule {ub}{sx} {ubsx} {} +\DeclareFontSeriesChangeRule {ub}{x} {ubx} {} +\DeclareFontSeriesChangeRule {ub}{ex} {ubex} {} +\DeclareFontSeriesChangeRule {ub}{ux} {ubux} {} +\DeclareFontSeriesChangeRule {ub}{sb} {sb} {b} +\DeclareFontSeriesChangeRule {ub}{eb} {eb} {ub} +% \end{macrocode} +% +% \begin{macrocode} +\DeclareFontSeriesChangeRule {ubsx}{ul} {ulsx} {} +\DeclareFontSeriesChangeRule {ubsx}{el} {elsx} {} +\DeclareFontSeriesChangeRule {ubsx}{l} {lsx} {} +\DeclareFontSeriesChangeRule {ubsx}{sl} {slsx} {} +\DeclareFontSeriesChangeRule {ubsx}{sb} {sbsx} {bsx} +\DeclareFontSeriesChangeRule {ubsx}{b} {bsx} {} +\DeclareFontSeriesChangeRule {ubsx}{eb} {ebsx} {ubsx} +\DeclareFontSeriesChangeRule {ubsx}{ub} {ubsx} {} +\DeclareFontSeriesChangeRule {ubsx}{uc} {ubuc} {} +\DeclareFontSeriesChangeRule {ubsx}{ec} {ubec} {} +\DeclareFontSeriesChangeRule {ubsx}{c} {ubc} {} +\DeclareFontSeriesChangeRule {ubsx}{sc} {ubsc} {} +\DeclareFontSeriesChangeRule {ubsx}{sx} {ubsx} {} +\DeclareFontSeriesChangeRule {ubsx}{x} {ubx} {} +\DeclareFontSeriesChangeRule {ubsx}{ex} {ubex} {} +\DeclareFontSeriesChangeRule {ubsx}{ux} {ubux} {} +% \end{macrocode} +% +% \begin{macrocode} +\DeclareFontSeriesChangeRule {ubx}{ul} {ulx} {} +\DeclareFontSeriesChangeRule {ubx}{el} {elx} {} +\DeclareFontSeriesChangeRule {ubx}{l} {lx} {} +\DeclareFontSeriesChangeRule {ubx}{sl} {slx} {} +\DeclareFontSeriesChangeRule {ubx}{sb} {sbx} {bx} +\DeclareFontSeriesChangeRule {ubx}{b} {bx} {} +\DeclareFontSeriesChangeRule {ubx}{eb} {ebx} {ubx} +\DeclareFontSeriesChangeRule {ubx}{ub} {ubx} {} +\DeclareFontSeriesChangeRule {ubx}{uc} {ubuc} {} +\DeclareFontSeriesChangeRule {ubx}{ec} {ubec} {} +\DeclareFontSeriesChangeRule {ubx}{c} {ubc} {} +\DeclareFontSeriesChangeRule {ubx}{sc} {ubsc} {} +\DeclareFontSeriesChangeRule {ubx}{sx} {ubsx} {} +\DeclareFontSeriesChangeRule {ubx}{x} {ubx} {} +\DeclareFontSeriesChangeRule {ubx}{ex} {ubex} {} +\DeclareFontSeriesChangeRule {ubx}{ux} {ubux} {} +% \end{macrocode} +% +% \begin{macrocode} +\DeclareFontSeriesChangeRule {ubex}{ul} {ulex} {} +\DeclareFontSeriesChangeRule {ubex}{el} {elex} {} +\DeclareFontSeriesChangeRule {ubex}{l} {lex} {} +\DeclareFontSeriesChangeRule {ubex}{sl} {slex} {} +\DeclareFontSeriesChangeRule {ubex}{sb} {sbex} {bex} +\DeclareFontSeriesChangeRule {ubex}{b} {bex} {} +\DeclareFontSeriesChangeRule {ubex}{eb} {ebex} {ubex} +\DeclareFontSeriesChangeRule {ubex}{ub} {ubex} {} +\DeclareFontSeriesChangeRule {ubex}{uc} {ubuc} {} +\DeclareFontSeriesChangeRule {ubex}{ec} {ubec} {} +\DeclareFontSeriesChangeRule {ubex}{c} {ubc} {} +\DeclareFontSeriesChangeRule {ubex}{sc} {ubsc} {} +\DeclareFontSeriesChangeRule {ubex}{sx} {ubsx} {} +\DeclareFontSeriesChangeRule {ubex}{x} {ubx} {} +\DeclareFontSeriesChangeRule {ubex}{ex} {ubex} {} +\DeclareFontSeriesChangeRule {ubex}{ux} {ubux} {} +% \end{macrocode} +% +% \begin{macrocode} +\DeclareFontSeriesChangeRule {ubux}{ul} {ulux} {} +\DeclareFontSeriesChangeRule {ubux}{el} {elux} {} +\DeclareFontSeriesChangeRule {ubux}{l} {lux} {} +\DeclareFontSeriesChangeRule {ubux}{sl} {slux} {} +\DeclareFontSeriesChangeRule {ubux}{sb} {sbux} {bux} +\DeclareFontSeriesChangeRule {ubux}{b} {bux} {} +\DeclareFontSeriesChangeRule {ubux}{eb} {ebux} {ubux} +\DeclareFontSeriesChangeRule {ubux}{ub} {ubux} {} +\DeclareFontSeriesChangeRule {ubux}{uc} {ubuc} {} +\DeclareFontSeriesChangeRule {ubux}{ec} {ubec} {} +\DeclareFontSeriesChangeRule {ubux}{c} {ubc} {} +\DeclareFontSeriesChangeRule {ubux}{sc} {ubsc} {} +\DeclareFontSeriesChangeRule {ubux}{sx} {ubsx} {} +\DeclareFontSeriesChangeRule {ubux}{x} {ubx} {} +\DeclareFontSeriesChangeRule {ubux}{ex} {ubex} {} +\DeclareFontSeriesChangeRule {ubux}{ux} {ubux} {} +% \end{macrocode} +% +% Special rules for \texttt{lm} etc.\ aren't needed because if +% \texttt{lm} is requested, it will be used if there is no rule, and +% that is then reduced to \texttt{l} automatically. Same for \texttt{mc} +% and friends. +% +% The following entries handle a request for \texttt{bx} and fall +% back to \texttt{b} if that can't be fulfilled. +% \begin{macrocode} +\DeclareFontSeriesChangeRule {uluc}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {ulec}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {ulc}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {ulsc}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {ul}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {ulsx}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {ulx}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {ulex}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {ulux}{bx} {bx} {b} +% \end{macrocode} +% +% \begin{macrocode} +\DeclareFontSeriesChangeRule {eluc}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {elec}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {elc}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {elsc}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {el}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {elsx}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {elx}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {elex}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {elux}{bx} {bx} {b} +% \end{macrocode} +% +% \begin{macrocode} +\DeclareFontSeriesChangeRule {luc}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {lec}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {lc}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {lsc}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {l}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {lsx}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {lx}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {lex}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {lux}{bx} {bx} {b} +% \end{macrocode} +% +% \begin{macrocode} +\DeclareFontSeriesChangeRule {sluc}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {slec}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {slc}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {slsc}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {sl}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {slsx}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {slx}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {slex}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {slux}{bx} {bx} {b} +% \end{macrocode} +% +% \begin{macrocode} +\DeclareFontSeriesChangeRule {sbuc}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {sbec}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {sbc}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {sbsc}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {sb}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {sbsx}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {sbx}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {sbex}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {sbux}{bx} {bx} {b} +% \end{macrocode} +% +% \begin{macrocode} +\DeclareFontSeriesChangeRule {buc}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {bec}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {bc}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {bsc}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {b}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {bsx}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {bx}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {bex}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {bux}{bx} {bx} {b} +% \end{macrocode} +% +% \begin{macrocode} +\DeclareFontSeriesChangeRule {ebuc}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {ebec}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {ebc}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {ebsc}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {eb}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {ebsx}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {ebx}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {ebex}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {ebux}{bx} {bx} {b} +% \end{macrocode} +% +% \begin{macrocode} +\DeclareFontSeriesChangeRule {ubuc}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {ubec}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {ubc}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {ubsc}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {ub}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {ubsx}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {ubx}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {ubex}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {ubux}{bx} {bx} {b} +% \end{macrocode} +% +% \begin{macrocode} +\DeclareFontSeriesChangeRule {uc}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {ec}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {c}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {sc}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {m}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {sx}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {x}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {ex}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {ux}{bx} {bx} {b} +% \end{macrocode} +% +% Here are the special rules for \texttt{m?}: +% \begin{macrocode} +\DeclareFontSeriesChangeRule {uluc}{m?} {uc} {} +\DeclareFontSeriesChangeRule {ulec}{m?} {ec} {} +\DeclareFontSeriesChangeRule {ulc}{m?} {c} {} +\DeclareFontSeriesChangeRule {ulsc}{m?} {sc} {} +\DeclareFontSeriesChangeRule {ul}{m?} {m} {} +\DeclareFontSeriesChangeRule {ulsx}{m?} {sx} {} +\DeclareFontSeriesChangeRule {ulx}{m?} {x} {} +\DeclareFontSeriesChangeRule {ulex}{m?} {ex} {} +\DeclareFontSeriesChangeRule {ulux}{m?} {ux} {} +\DeclareFontSeriesChangeRule {eluc}{m?} {uc} {} +\DeclareFontSeriesChangeRule {elec}{m?} {ec} {} +\DeclareFontSeriesChangeRule {elc}{m?} {c} {} +\DeclareFontSeriesChangeRule {elsc}{m?} {sc} {} +\DeclareFontSeriesChangeRule {el}{m?} {m} {} +\DeclareFontSeriesChangeRule {elsx}{m?} {sx} {} +\DeclareFontSeriesChangeRule {elx}{m?} {x} {} +\DeclareFontSeriesChangeRule {elex}{m?} {ex} {} +\DeclareFontSeriesChangeRule {elux}{m?} {ux} {} +\DeclareFontSeriesChangeRule {luc}{m?} {uc} {} +\DeclareFontSeriesChangeRule {lec}{m?} {ec} {} +\DeclareFontSeriesChangeRule {lc}{m?} {c} {} +\DeclareFontSeriesChangeRule {lsc}{m?} {sc} {} +\DeclareFontSeriesChangeRule {l}{m?} {m} {} +\DeclareFontSeriesChangeRule {lsx}{m?} {sx} {} +\DeclareFontSeriesChangeRule {lx}{m?} {x} {} +\DeclareFontSeriesChangeRule {lex}{m?} {ex} {} +\DeclareFontSeriesChangeRule {lux}{m?} {ux} {} +\DeclareFontSeriesChangeRule {sluc}{m?} {uc} {} +\DeclareFontSeriesChangeRule {slec}{m?} {ec} {} +\DeclareFontSeriesChangeRule {slc}{m?} {c} {} +\DeclareFontSeriesChangeRule {slsc}{m?} {sc} {} +\DeclareFontSeriesChangeRule {sl}{m?} {m} {} +\DeclareFontSeriesChangeRule {slsx}{m?} {sx} {} +\DeclareFontSeriesChangeRule {slx}{m?} {x} {} +\DeclareFontSeriesChangeRule {slex}{m?} {ex} {} +\DeclareFontSeriesChangeRule {slux}{m?} {ux} {} +\DeclareFontSeriesChangeRule {uc}{m?} {uc} {} +\DeclareFontSeriesChangeRule {ec}{m?} {ec} {} +\DeclareFontSeriesChangeRule {c}{m?} {c} {} +\DeclareFontSeriesChangeRule {sc}{m?} {sc} {} +\DeclareFontSeriesChangeRule {m}{m?} {m} {} +\DeclareFontSeriesChangeRule {sx}{m?} {sx} {} +\DeclareFontSeriesChangeRule {x}{m?} {x} {} +\DeclareFontSeriesChangeRule {ex}{m?} {ex} {} +\DeclareFontSeriesChangeRule {ux}{m?} {ux} {} +\DeclareFontSeriesChangeRule {sbuc}{m?} {uc} {} +\DeclareFontSeriesChangeRule {sbec}{m?} {ec} {} +\DeclareFontSeriesChangeRule {sbc}{m?} {c} {} +\DeclareFontSeriesChangeRule {sbsc}{m?} {sc} {} +\DeclareFontSeriesChangeRule {sb}{m?} {m} {} +\DeclareFontSeriesChangeRule {sbsx}{m?} {sx} {} +\DeclareFontSeriesChangeRule {sbx}{m?} {x} {} +\DeclareFontSeriesChangeRule {sbex}{m?} {ex} {} +\DeclareFontSeriesChangeRule {sbux}{m?} {ux} {} +\DeclareFontSeriesChangeRule {buc}{m?} {uc} {} +\DeclareFontSeriesChangeRule {bec}{m?} {ec} {} +\DeclareFontSeriesChangeRule {bc}{m?} {c} {} +\DeclareFontSeriesChangeRule {bsc}{m?} {sc} {} +\DeclareFontSeriesChangeRule {b}{m?} {m} {} +\DeclareFontSeriesChangeRule {bsx}{m?} {sx} {} +\DeclareFontSeriesChangeRule {bx}{m?} {x} {} +\DeclareFontSeriesChangeRule {bex}{m?} {ex} {} +\DeclareFontSeriesChangeRule {bux}{m?} {ux} {} +\DeclareFontSeriesChangeRule {ebuc}{m?} {uc} {} +\DeclareFontSeriesChangeRule {ebec}{m?} {ec} {} +\DeclareFontSeriesChangeRule {ebc}{m?} {c} {} +\DeclareFontSeriesChangeRule {ebsc}{m?} {sc} {} +\DeclareFontSeriesChangeRule {eb}{m?} {m} {} +\DeclareFontSeriesChangeRule {ebsx}{m?} {sx} {} +\DeclareFontSeriesChangeRule {ebx}{m?} {x} {} +\DeclareFontSeriesChangeRule {ebex}{m?} {ex} {} +\DeclareFontSeriesChangeRule {ebux}{m?} {ux} {} +\DeclareFontSeriesChangeRule {ubuc}{m?} {uc} {} +\DeclareFontSeriesChangeRule {ubec}{m?} {ec} {} +\DeclareFontSeriesChangeRule {ubc}{m?} {c} {} +\DeclareFontSeriesChangeRule {ubsc}{m?} {sc} {} +\DeclareFontSeriesChangeRule {ub}{m?} {m} {} +\DeclareFontSeriesChangeRule {ubsx}{m?} {sx} {} +\DeclareFontSeriesChangeRule {ubx}{m?} {x} {} +\DeclareFontSeriesChangeRule {ubex}{m?} {ex} {} +\DeclareFontSeriesChangeRule {ubux}{m?} {ux} {} % \end{macrocode} % % And there the special rules for \texttt{?m}: % \begin{macrocode} -\DeclareFontSeriesChangeRule {bc}{?m}{b}{} -\DeclareFontSeriesChangeRule {bec}{?m}{b}{} -\DeclareFontSeriesChangeRule {bsc}{?m}{b}{} -\DeclareFontSeriesChangeRule {bsc}{?m}{b}{} -\DeclareFontSeriesChangeRule {bx}{?m}{b}{} -\DeclareFontSeriesChangeRule {b}{?m}{b}{} -\DeclareFontSeriesChangeRule {c}{?m}{m}{} -\DeclareFontSeriesChangeRule {ebc}{?m}{eb}{} -\DeclareFontSeriesChangeRule {ebec}{?m}{eb}{} -\DeclareFontSeriesChangeRule {ebsc}{?m}{eb}{} -\DeclareFontSeriesChangeRule {ebsc}{?m}{eb}{} -\DeclareFontSeriesChangeRule {ebx}{?m}{eb}{} -\DeclareFontSeriesChangeRule {eb}{?m}{eb}{} -\DeclareFontSeriesChangeRule {ec}{?m}{m}{} -\DeclareFontSeriesChangeRule {elc}{?m}{el}{} -\DeclareFontSeriesChangeRule {elec}{?m}{el}{} -\DeclareFontSeriesChangeRule {elsc}{?m}{el}{} -\DeclareFontSeriesChangeRule {elsc}{?m}{el}{} -\DeclareFontSeriesChangeRule {elx}{?m}{el}{} -\DeclareFontSeriesChangeRule {el}{?m}{el}{} -\DeclareFontSeriesChangeRule {lc}{?m}{l}{} -\DeclareFontSeriesChangeRule {lec}{?m}{l}{} -\DeclareFontSeriesChangeRule {lsc}{?m}{l}{} -\DeclareFontSeriesChangeRule {lsc}{?m}{l}{} -\DeclareFontSeriesChangeRule {lx}{?m}{l}{} -\DeclareFontSeriesChangeRule {l}{?m}{l}{} -\DeclareFontSeriesChangeRule {m}{?m}{m}{} -\DeclareFontSeriesChangeRule {sbc}{?m}{sb}{} -\DeclareFontSeriesChangeRule {sbec}{?m}{sb}{} -\DeclareFontSeriesChangeRule {sbsc}{?m}{sb}{} -\DeclareFontSeriesChangeRule {sbsc}{?m}{sb}{} -\DeclareFontSeriesChangeRule {sbx}{?m}{sb}{} -\DeclareFontSeriesChangeRule {sb}{?m}{sb}{} -\DeclareFontSeriesChangeRule {sc}{?m}{m}{} -\DeclareFontSeriesChangeRule {sc}{?m}{m}{} -\DeclareFontSeriesChangeRule {slc}{?m}{sl}{} -\DeclareFontSeriesChangeRule {slec}{?m}{sl}{} -\DeclareFontSeriesChangeRule {slsc}{?m}{sl}{} -\DeclareFontSeriesChangeRule {slsc}{?m}{sl}{} -\DeclareFontSeriesChangeRule {slx}{?m}{sl}{} -\DeclareFontSeriesChangeRule {sl}{?m}{sl}{} -\DeclareFontSeriesChangeRule {ubc}{?m}{ub}{} -\DeclareFontSeriesChangeRule {ubec}{?m}{ub}{} -\DeclareFontSeriesChangeRule {ubsc}{?m}{ub}{} -\DeclareFontSeriesChangeRule {ubsc}{?m}{ub}{} -\DeclareFontSeriesChangeRule {ubx}{?m}{ub}{} -\DeclareFontSeriesChangeRule {ub}{?m}{m}{} -\DeclareFontSeriesChangeRule {ulc}{?m}{ul}{} -\DeclareFontSeriesChangeRule {ulec}{?m}{ul}{} -\DeclareFontSeriesChangeRule {ulsc}{?m}{ul}{} -\DeclareFontSeriesChangeRule {ulsc}{?m}{ul}{} -\DeclareFontSeriesChangeRule {ulx}{?m}{ul}{} -\DeclareFontSeriesChangeRule {ul}{?m}{ul}{} -\DeclareFontSeriesChangeRule {x}{?m}{m}{} +\DeclareFontSeriesChangeRule {uluc}{?m} {ul} {} +\DeclareFontSeriesChangeRule {ulec}{?m} {ul} {} +\DeclareFontSeriesChangeRule {ulc}{?m} {ul} {} +\DeclareFontSeriesChangeRule {ulsc}{?m} {ul} {} +\DeclareFontSeriesChangeRule {ul}{?m} {ul} {} +\DeclareFontSeriesChangeRule {ulsx}{?m} {ul} {} +\DeclareFontSeriesChangeRule {ulx}{?m} {ul} {} +\DeclareFontSeriesChangeRule {ulex}{?m} {ul} {} +\DeclareFontSeriesChangeRule {ulux}{?m} {ul} {} +\DeclareFontSeriesChangeRule {eluc}{?m} {el} {} +\DeclareFontSeriesChangeRule {elec}{?m} {el} {} +\DeclareFontSeriesChangeRule {elc}{?m} {el} {} +\DeclareFontSeriesChangeRule {elsc}{?m} {el} {} +\DeclareFontSeriesChangeRule {el}{?m} {el} {} +\DeclareFontSeriesChangeRule {elsx}{?m} {el} {} +\DeclareFontSeriesChangeRule {elx}{?m} {el} {} +\DeclareFontSeriesChangeRule {elex}{?m} {el} {} +\DeclareFontSeriesChangeRule {elux}{?m} {el} {} +\DeclareFontSeriesChangeRule {luc}{?m} {l} {} +\DeclareFontSeriesChangeRule {lec}{?m} {l} {} +\DeclareFontSeriesChangeRule {lc}{?m} {l} {} +\DeclareFontSeriesChangeRule {lsc}{?m} {l} {} +\DeclareFontSeriesChangeRule {l}{?m} {l} {} +\DeclareFontSeriesChangeRule {lsx}{?m} {l} {} +\DeclareFontSeriesChangeRule {lx}{?m} {l} {} +\DeclareFontSeriesChangeRule {lex}{?m} {l} {} +\DeclareFontSeriesChangeRule {lux}{?m} {l} {} +\DeclareFontSeriesChangeRule {sluc}{?m} {sl} {} +\DeclareFontSeriesChangeRule {slec}{?m} {sl} {} +\DeclareFontSeriesChangeRule {slc}{?m} {sl} {} +\DeclareFontSeriesChangeRule {slsc}{?m} {sl} {} +\DeclareFontSeriesChangeRule {sl}{?m} {sl} {} +\DeclareFontSeriesChangeRule {slsx}{?m} {sl} {} +\DeclareFontSeriesChangeRule {slx}{?m} {sl} {} +\DeclareFontSeriesChangeRule {slex}{?m} {sl} {} +\DeclareFontSeriesChangeRule {slux}{?m} {sl} {} +\DeclareFontSeriesChangeRule {uc}{?m} {m} {} +\DeclareFontSeriesChangeRule {ec}{?m} {m} {} +\DeclareFontSeriesChangeRule {c}{?m} {m} {} +\DeclareFontSeriesChangeRule {sc}{?m} {m} {} +\DeclareFontSeriesChangeRule {m}{?m} {m} {} +\DeclareFontSeriesChangeRule {sx}{?m} {m} {} +\DeclareFontSeriesChangeRule {x}{?m} {m} {} +\DeclareFontSeriesChangeRule {ex}{?m} {m} {} +\DeclareFontSeriesChangeRule {ux}{?m} {m} {} +\DeclareFontSeriesChangeRule {sbuc}{?m} {sb} {} +\DeclareFontSeriesChangeRule {sbec}{?m} {sb} {} +\DeclareFontSeriesChangeRule {sbc}{?m} {sb} {} +\DeclareFontSeriesChangeRule {sbsc}{?m} {sb} {} +\DeclareFontSeriesChangeRule {sb}{?m} {sb} {} +\DeclareFontSeriesChangeRule {sbsx}{?m} {sb} {} +\DeclareFontSeriesChangeRule {sbx}{?m} {sb} {} +\DeclareFontSeriesChangeRule {sbex}{?m} {sb} {} +\DeclareFontSeriesChangeRule {sbux}{?m} {sb} {} +\DeclareFontSeriesChangeRule {buc}{?m} {b} {} +\DeclareFontSeriesChangeRule {bec}{?m} {b} {} +\DeclareFontSeriesChangeRule {bc}{?m} {b} {} +\DeclareFontSeriesChangeRule {bsc}{?m} {b} {} +\DeclareFontSeriesChangeRule {b}{?m} {b} {} +\DeclareFontSeriesChangeRule {bsx}{?m} {b} {} +\DeclareFontSeriesChangeRule {bx}{?m} {b} {} +\DeclareFontSeriesChangeRule {bex}{?m} {b} {} +\DeclareFontSeriesChangeRule {bux}{?m} {b} {} +\DeclareFontSeriesChangeRule {ebuc}{?m} {eb} {} +\DeclareFontSeriesChangeRule {ebec}{?m} {eb} {} +\DeclareFontSeriesChangeRule {ebc}{?m} {eb} {} +\DeclareFontSeriesChangeRule {ebsc}{?m} {eb} {} +\DeclareFontSeriesChangeRule {eb}{?m} {eb} {} +\DeclareFontSeriesChangeRule {ebsx}{?m} {eb} {} +\DeclareFontSeriesChangeRule {ebx}{?m} {eb} {} +\DeclareFontSeriesChangeRule {ebex}{?m} {eb} {} +\DeclareFontSeriesChangeRule {ebux}{?m} {eb} {} +\DeclareFontSeriesChangeRule {ubuc}{?m} {ub} {} +\DeclareFontSeriesChangeRule {ubec}{?m} {ub} {} +\DeclareFontSeriesChangeRule {ubc}{?m} {ub} {} +\DeclareFontSeriesChangeRule {ubsc}{?m} {ub} {} +\DeclareFontSeriesChangeRule {ub}{?m} {ub} {} +\DeclareFontSeriesChangeRule {ubsx}{?m} {ub} {} +\DeclareFontSeriesChangeRule {ubx}{?m} {ub} {} +\DeclareFontSeriesChangeRule {ubex}{?m} {ub} {} +\DeclareFontSeriesChangeRule {ubux}{?m} {ub} {} +% \end{macrocode} +% +% \begin{macrocode} +% +%\EndIncludeInRelease % \end{macrocode} % % % Supporting rollback \ldots % \begin{macrocode} -% +%\IncludeInRelease{2020/02/02}% +% {\DeclareFontSeriesChangeRule}{Series change rules}% +% \end{macrocode} +% The next definition is only needed if somebody rolls forward from a +% release older than 2020-02-02 but not to the latest version but +% one before 2025-06-01. Pretty unlikely, but \ldots. +% \begin{macrocode} +% +%\def\DeclareFontSeriesChangeRule#1#2#3#4{% +% \@namedef{series@#1@#2}{{#3}{#4}}} +% +% \end{macrocode} +% The huge set of declarations below are those from 2020-02-02 plus +% all from above that were newly added (but now with empty result +% and alternative result arguments). To compile this list I sorted +% both together and then dropped entries appearing twice. This is +% why the sorting is now different from the one above. +% \begin{macrocode} +%\DeclareFontSeriesChangeRule {bc}{bx} {} {} +%\DeclareFontSeriesChangeRule {bc}{b}{bc}{} +%\DeclareFontSeriesChangeRule {bc}{c}{bc}{} +%\DeclareFontSeriesChangeRule {bc}{eb}{ebc}{} +%\DeclareFontSeriesChangeRule {bc}{ec}{bec} {bc} +%\DeclareFontSeriesChangeRule {bc}{el}{elc}{} +%\DeclareFontSeriesChangeRule {bc}{ex} {} {} +%\DeclareFontSeriesChangeRule {bc}{l}{lc}{} +%\DeclareFontSeriesChangeRule {bc}{sb}{sbc}{} +%\DeclareFontSeriesChangeRule {bc}{sc}{bsc} {bc} +%\DeclareFontSeriesChangeRule {bc}{sl}{slc}{} +%\DeclareFontSeriesChangeRule {bc}{sx} {} {} +%\DeclareFontSeriesChangeRule {bc}{ub}{ubc}{} +%\DeclareFontSeriesChangeRule {bc}{uc} {} {} +%\DeclareFontSeriesChangeRule {bc}{ul}{ulc}{} +%\DeclareFontSeriesChangeRule {bc}{ux} {} {} +%\DeclareFontSeriesChangeRule {bc}{x}{bx}{} +%\DeclareFontSeriesChangeRule {bec}{bx} {} {} +%\DeclareFontSeriesChangeRule {bec}{b} {} {} +%\DeclareFontSeriesChangeRule {bec}{c} {} {} +%\DeclareFontSeriesChangeRule {bec}{eb} {} {} +%\DeclareFontSeriesChangeRule {bec}{ec} {} {} +%\DeclareFontSeriesChangeRule {bec}{el} {} {} +%\DeclareFontSeriesChangeRule {bec}{ex} {} {} +%\DeclareFontSeriesChangeRule {bec}{l} {} {} +%\DeclareFontSeriesChangeRule {bec}{sb} {} {} +%\DeclareFontSeriesChangeRule {bec}{sc} {} {} +%\DeclareFontSeriesChangeRule {bec}{sl} {} {} +%\DeclareFontSeriesChangeRule {bec}{sx} {} {} +%\DeclareFontSeriesChangeRule {bec}{ub} {} {} +%\DeclareFontSeriesChangeRule {bec}{uc} {} {} +%\DeclareFontSeriesChangeRule {bec}{ul} {} {} +%\DeclareFontSeriesChangeRule {bec}{ux} {} {} +%\DeclareFontSeriesChangeRule {bec}{x} {} {} +%\DeclareFontSeriesChangeRule {bex}{?m} {} {} +%\DeclareFontSeriesChangeRule {bex}{bx} {} {} +%\DeclareFontSeriesChangeRule {bex}{b} {} {} +%\DeclareFontSeriesChangeRule {bex}{c} {} {} +%\DeclareFontSeriesChangeRule {bex}{eb} {} {} +%\DeclareFontSeriesChangeRule {bex}{ec} {} {} +%\DeclareFontSeriesChangeRule {bex}{el} {} {} +%\DeclareFontSeriesChangeRule {bex}{ex} {} {} +%\DeclareFontSeriesChangeRule {bex}{l} {} {} +%\DeclareFontSeriesChangeRule {bex}{m?} {} {} +%\DeclareFontSeriesChangeRule {bex}{sb} {} {} +%\DeclareFontSeriesChangeRule {bex}{sc} {} {} +%\DeclareFontSeriesChangeRule {bex}{sl} {} {} +%\DeclareFontSeriesChangeRule {bex}{sx} {} {} +%\DeclareFontSeriesChangeRule {bex}{ub} {} {} +%\DeclareFontSeriesChangeRule {bex}{uc} {} {} +%\DeclareFontSeriesChangeRule {bex}{ul} {} {} +%\DeclareFontSeriesChangeRule {bex}{ux} {} {} +%\DeclareFontSeriesChangeRule {bex}{x} {} {} +%\DeclareFontSeriesChangeRule {bsc}{bx} {} {} +%\DeclareFontSeriesChangeRule {bsc}{b} {} {} +%\DeclareFontSeriesChangeRule {bsc}{c} {} {} +%\DeclareFontSeriesChangeRule {bsc}{eb} {} {} +%\DeclareFontSeriesChangeRule {bsc}{ec} {} {} +%\DeclareFontSeriesChangeRule {bsc}{el} {} {} +%\DeclareFontSeriesChangeRule {bsc}{ex} {} {} +%\DeclareFontSeriesChangeRule {bsc}{l} {} {} +%\DeclareFontSeriesChangeRule {bsc}{sb} {} {} +%\DeclareFontSeriesChangeRule {bsc}{sc} {} {} +%\DeclareFontSeriesChangeRule {bsc}{sl} {} {} +%\DeclareFontSeriesChangeRule {bsc}{sx} {} {} +%\DeclareFontSeriesChangeRule {bsc}{ub} {} {} +%\DeclareFontSeriesChangeRule {bsc}{uc} {} {} +%\DeclareFontSeriesChangeRule {bsc}{ul} {} {} +%\DeclareFontSeriesChangeRule {bsc}{ux} {} {} +%\DeclareFontSeriesChangeRule {bsc}{x} {} {} +%\DeclareFontSeriesChangeRule {bsx}{?m} {} {} +%\DeclareFontSeriesChangeRule {bsx}{bx} {} {} +%\DeclareFontSeriesChangeRule {bsx}{b} {} {} +%\DeclareFontSeriesChangeRule {bsx}{c} {} {} +%\DeclareFontSeriesChangeRule {bsx}{eb} {} {} +%\DeclareFontSeriesChangeRule {bsx}{ec} {} {} +%\DeclareFontSeriesChangeRule {bsx}{el} {} {} +%\DeclareFontSeriesChangeRule {bsx}{ex} {} {} +%\DeclareFontSeriesChangeRule {bsx}{l} {} {} +%\DeclareFontSeriesChangeRule {bsx}{m?} {} {} +%\DeclareFontSeriesChangeRule {bsx}{sb} {} {} +%\DeclareFontSeriesChangeRule {bsx}{sc} {} {} +%\DeclareFontSeriesChangeRule {bsx}{sl} {} {} +%\DeclareFontSeriesChangeRule {bsx}{sx} {} {} +%\DeclareFontSeriesChangeRule {bsx}{ub} {} {} +%\DeclareFontSeriesChangeRule {bsx}{uc} {} {} +%\DeclareFontSeriesChangeRule {bsx}{ul} {} {} +%\DeclareFontSeriesChangeRule {bsx}{ux} {} {} +%\DeclareFontSeriesChangeRule {bsx}{x} {} {} +%\DeclareFontSeriesChangeRule {buc}{?m} {} {} +%\DeclareFontSeriesChangeRule {buc}{bx} {} {} +%\DeclareFontSeriesChangeRule {buc}{b} {} {} +%\DeclareFontSeriesChangeRule {buc}{c} {} {} +%\DeclareFontSeriesChangeRule {buc}{eb} {} {} +%\DeclareFontSeriesChangeRule {buc}{ec} {} {} +%\DeclareFontSeriesChangeRule {buc}{el} {} {} +%\DeclareFontSeriesChangeRule {buc}{ex} {} {} +%\DeclareFontSeriesChangeRule {buc}{l} {} {} +%\DeclareFontSeriesChangeRule {buc}{m?} {} {} +%\DeclareFontSeriesChangeRule {buc}{sb} {} {} +%\DeclareFontSeriesChangeRule {buc}{sc} {} {} +%\DeclareFontSeriesChangeRule {buc}{sl} {} {} +%\DeclareFontSeriesChangeRule {buc}{sx} {} {} +%\DeclareFontSeriesChangeRule {buc}{ub} {} {} +%\DeclareFontSeriesChangeRule {buc}{uc} {} {} +%\DeclareFontSeriesChangeRule {buc}{ul} {} {} +%\DeclareFontSeriesChangeRule {buc}{ux} {} {} +%\DeclareFontSeriesChangeRule {buc}{x} {} {} +%\DeclareFontSeriesChangeRule {bux}{?m} {} {} +%\DeclareFontSeriesChangeRule {bux}{bx} {} {} +%\DeclareFontSeriesChangeRule {bux}{b} {} {} +%\DeclareFontSeriesChangeRule {bux}{c} {} {} +%\DeclareFontSeriesChangeRule {bux}{eb} {} {} +%\DeclareFontSeriesChangeRule {bux}{ec} {} {} +%\DeclareFontSeriesChangeRule {bux}{el} {} {} +%\DeclareFontSeriesChangeRule {bux}{ex} {} {} +%\DeclareFontSeriesChangeRule {bux}{l} {} {} +%\DeclareFontSeriesChangeRule {bux}{m?} {} {} +%\DeclareFontSeriesChangeRule {bux}{sb} {} {} +%\DeclareFontSeriesChangeRule {bux}{sc} {} {} +%\DeclareFontSeriesChangeRule {bux}{sl} {} {} +%\DeclareFontSeriesChangeRule {bux}{sx} {} {} +%\DeclareFontSeriesChangeRule {bux}{ub} {} {} +%\DeclareFontSeriesChangeRule {bux}{uc} {} {} +%\DeclareFontSeriesChangeRule {bux}{ul} {} {} +%\DeclareFontSeriesChangeRule {bux}{ux} {} {} +%\DeclareFontSeriesChangeRule {bux}{x} {} {} +%\DeclareFontSeriesChangeRule {bx}{bx} {} {} +%\DeclareFontSeriesChangeRule {bx}{b}{bx}{} +%\DeclareFontSeriesChangeRule {bx}{c} {bc} {bx} +%\DeclareFontSeriesChangeRule {bx}{eb}{ebx}{} +%\DeclareFontSeriesChangeRule {bx}{ec} {bec} {bx} +%\DeclareFontSeriesChangeRule {bx}{el}{elx}{} +%\DeclareFontSeriesChangeRule {bx}{ex} {} {} +%\DeclareFontSeriesChangeRule {bx}{l}{lx}{} +%\DeclareFontSeriesChangeRule {bx}{sb} {sbx} {} +%\DeclareFontSeriesChangeRule {bx}{sc} {bsc} {bx} +%\DeclareFontSeriesChangeRule {bx}{sl}{slx} {} +%\DeclareFontSeriesChangeRule {bx}{sx} {} {} +%\DeclareFontSeriesChangeRule {bx}{ub}{ubx}{} +%\DeclareFontSeriesChangeRule {bx}{uc} {} {} +%\DeclareFontSeriesChangeRule {bx}{ul}{ulx}{} +%\DeclareFontSeriesChangeRule {bx}{ux} {} {} +%\DeclareFontSeriesChangeRule {bx}{x}{bx}{} +%\DeclareFontSeriesChangeRule {b}{bx} {bx} {b} +%\DeclareFontSeriesChangeRule {b}{c} {bc} {b} +%\DeclareFontSeriesChangeRule {b}{eb} {} {} +%\DeclareFontSeriesChangeRule {b}{ec} {bec} {b} +%\DeclareFontSeriesChangeRule {b}{ex} {} {} +%\DeclareFontSeriesChangeRule {b}{sb} {sb} {b} +%\DeclareFontSeriesChangeRule {b}{sc} {bsc} {b} +%\DeclareFontSeriesChangeRule {b}{sx} {} {} +%\DeclareFontSeriesChangeRule {b}{ub} {} {} +%\DeclareFontSeriesChangeRule {b}{uc} {} {} +%\DeclareFontSeriesChangeRule {b}{ux} {} {} +%\DeclareFontSeriesChangeRule {b}{x} {bx} {b} +%\DeclareFontSeriesChangeRule {c}{bx} {bx} {b} +%\DeclareFontSeriesChangeRule {c}{b}{bc}{} +%\DeclareFontSeriesChangeRule {c}{eb}{ebc}{} +%\DeclareFontSeriesChangeRule {c}{ec} {} {} +%\DeclareFontSeriesChangeRule {c}{el}{elc}{} +%\DeclareFontSeriesChangeRule {c}{l}{lc}{} +%\DeclareFontSeriesChangeRule {c}{sb}{sbc}{} +%\DeclareFontSeriesChangeRule {c}{sc} {} {} +%\DeclareFontSeriesChangeRule {c}{sl}{slc}{} +%\DeclareFontSeriesChangeRule {c}{ub}{ubc}{} +%\DeclareFontSeriesChangeRule {c}{uc} {} {} +%\DeclareFontSeriesChangeRule {c}{x}{x}{m} +%\DeclareFontSeriesChangeRule {ebc}{bx} {} {} +%\DeclareFontSeriesChangeRule {ebc}{b}{bc}{} +%\DeclareFontSeriesChangeRule {ebc}{c}{ebc}{} +%\DeclareFontSeriesChangeRule {ebc}{eb}{ebc}{} +%\DeclareFontSeriesChangeRule {ebc}{ec}{ebec}{ebc} +%\DeclareFontSeriesChangeRule {ebc}{el}{elc}{} +%\DeclareFontSeriesChangeRule {ebc}{ex} {} {} +%\DeclareFontSeriesChangeRule {ebc}{l}{lc}{} +%\DeclareFontSeriesChangeRule {ebc}{sb}{sbc}{} +%\DeclareFontSeriesChangeRule {ebc}{sc}{ebsc}{ebc} +%\DeclareFontSeriesChangeRule {ebc}{sl}{slc}{} +%\DeclareFontSeriesChangeRule {ebc}{sx} {} {} +%\DeclareFontSeriesChangeRule {ebc}{ub}{ubc}{} +%\DeclareFontSeriesChangeRule {ebc}{uc} {} {} +%\DeclareFontSeriesChangeRule {ebc}{ul}{ulc}{} +%\DeclareFontSeriesChangeRule {ebc}{ux} {} {} +%\DeclareFontSeriesChangeRule {ebc}{x}{ebx}{} +%\DeclareFontSeriesChangeRule {ebec}{bx} {} {} +%\DeclareFontSeriesChangeRule {ebec}{b} {} {} +%\DeclareFontSeriesChangeRule {ebec}{c} {} {} +%\DeclareFontSeriesChangeRule {ebec}{eb} {} {} +%\DeclareFontSeriesChangeRule {ebec}{ec} {} {} +%\DeclareFontSeriesChangeRule {ebec}{el} {} {} +%\DeclareFontSeriesChangeRule {ebec}{ex} {} {} +%\DeclareFontSeriesChangeRule {ebec}{l} {} {} +%\DeclareFontSeriesChangeRule {ebec}{sb} {} {} +%\DeclareFontSeriesChangeRule {ebec}{sc} {} {} +%\DeclareFontSeriesChangeRule {ebec}{sl} {} {} +%\DeclareFontSeriesChangeRule {ebec}{sx} {} {} +%\DeclareFontSeriesChangeRule {ebec}{ub} {} {} +%\DeclareFontSeriesChangeRule {ebec}{uc} {} {} +%\DeclareFontSeriesChangeRule {ebec}{ul} {} {} +%\DeclareFontSeriesChangeRule {ebec}{ux} {} {} +%\DeclareFontSeriesChangeRule {ebec}{x} {} {} +%\DeclareFontSeriesChangeRule {ebex}{?m} {} {} +%\DeclareFontSeriesChangeRule {ebex}{bx} {} {} +%\DeclareFontSeriesChangeRule {ebex}{b} {} {} +%\DeclareFontSeriesChangeRule {ebex}{c} {} {} +%\DeclareFontSeriesChangeRule {ebex}{eb} {} {} +%\DeclareFontSeriesChangeRule {ebex}{ec} {} {} +%\DeclareFontSeriesChangeRule {ebex}{el} {} {} +%\DeclareFontSeriesChangeRule {ebex}{ex} {} {} +%\DeclareFontSeriesChangeRule {ebex}{l} {} {} +%\DeclareFontSeriesChangeRule {ebex}{m?} {} {} +%\DeclareFontSeriesChangeRule {ebex}{sb} {} {} +%\DeclareFontSeriesChangeRule {ebex}{sc} {} {} +%\DeclareFontSeriesChangeRule {ebex}{sl} {} {} +%\DeclareFontSeriesChangeRule {ebex}{sx} {} {} +%\DeclareFontSeriesChangeRule {ebex}{ub} {} {} +%\DeclareFontSeriesChangeRule {ebex}{uc} {} {} +%\DeclareFontSeriesChangeRule {ebex}{ul} {} {} +%\DeclareFontSeriesChangeRule {ebex}{ux} {} {} +%\DeclareFontSeriesChangeRule {ebex}{x} {} {} +%\DeclareFontSeriesChangeRule {ebsc}{bx} {} {} +%\DeclareFontSeriesChangeRule {ebsc}{b} {} {} +%\DeclareFontSeriesChangeRule {ebsc}{c} {} {} +%\DeclareFontSeriesChangeRule {ebsc}{eb} {} {} +%\DeclareFontSeriesChangeRule {ebsc}{ec} {} {} +%\DeclareFontSeriesChangeRule {ebsc}{el} {} {} +%\DeclareFontSeriesChangeRule {ebsc}{ex} {} {} +%\DeclareFontSeriesChangeRule {ebsc}{l} {} {} +%\DeclareFontSeriesChangeRule {ebsc}{sb} {} {} +%\DeclareFontSeriesChangeRule {ebsc}{sc} {} {} +%\DeclareFontSeriesChangeRule {ebsc}{sl} {} {} +%\DeclareFontSeriesChangeRule {ebsc}{sx} {} {} +%\DeclareFontSeriesChangeRule {ebsc}{ub} {} {} +%\DeclareFontSeriesChangeRule {ebsc}{uc} {} {} +%\DeclareFontSeriesChangeRule {ebsc}{ul} {} {} +%\DeclareFontSeriesChangeRule {ebsc}{ux} {} {} +%\DeclareFontSeriesChangeRule {ebsc}{x} {} {} +%\DeclareFontSeriesChangeRule {ebsx}{?m} {} {} +%\DeclareFontSeriesChangeRule {ebsx}{bx} {} {} +%\DeclareFontSeriesChangeRule {ebsx}{b} {} {} +%\DeclareFontSeriesChangeRule {ebsx}{c} {} {} +%\DeclareFontSeriesChangeRule {ebsx}{eb} {} {} +%\DeclareFontSeriesChangeRule {ebsx}{ec} {} {} +%\DeclareFontSeriesChangeRule {ebsx}{el} {} {} +%\DeclareFontSeriesChangeRule {ebsx}{ex} {} {} +%\DeclareFontSeriesChangeRule {ebsx}{l} {} {} +%\DeclareFontSeriesChangeRule {ebsx}{m?} {} {} +%\DeclareFontSeriesChangeRule {ebsx}{sb} {} {} +%\DeclareFontSeriesChangeRule {ebsx}{sc} {} {} +%\DeclareFontSeriesChangeRule {ebsx}{sl} {} {} +%\DeclareFontSeriesChangeRule {ebsx}{sx} {} {} +%\DeclareFontSeriesChangeRule {ebsx}{ub} {} {} +%\DeclareFontSeriesChangeRule {ebsx}{uc} {} {} +%\DeclareFontSeriesChangeRule {ebsx}{ul} {} {} +%\DeclareFontSeriesChangeRule {ebsx}{ux} {} {} +%\DeclareFontSeriesChangeRule {ebsx}{x} {} {} +%\DeclareFontSeriesChangeRule {ebuc}{?m} {} {} +%\DeclareFontSeriesChangeRule {ebuc}{bx} {} {} +%\DeclareFontSeriesChangeRule {ebuc}{b} {} {} +%\DeclareFontSeriesChangeRule {ebuc}{c} {} {} +%\DeclareFontSeriesChangeRule {ebuc}{eb} {} {} +%\DeclareFontSeriesChangeRule {ebuc}{ec} {} {} +%\DeclareFontSeriesChangeRule {ebuc}{el} {} {} +%\DeclareFontSeriesChangeRule {ebuc}{ex} {} {} +%\DeclareFontSeriesChangeRule {ebuc}{l} {} {} +%\DeclareFontSeriesChangeRule {ebuc}{m?} {} {} +%\DeclareFontSeriesChangeRule {ebuc}{sb} {} {} +%\DeclareFontSeriesChangeRule {ebuc}{sc} {} {} +%\DeclareFontSeriesChangeRule {ebuc}{sl} {} {} +%\DeclareFontSeriesChangeRule {ebuc}{sx} {} {} +%\DeclareFontSeriesChangeRule {ebuc}{ub} {} {} +%\DeclareFontSeriesChangeRule {ebuc}{uc} {} {} +%\DeclareFontSeriesChangeRule {ebuc}{ul} {} {} +%\DeclareFontSeriesChangeRule {ebuc}{ux} {} {} +%\DeclareFontSeriesChangeRule {ebuc}{x} {} {} +%\DeclareFontSeriesChangeRule {ebux}{?m} {} {} +%\DeclareFontSeriesChangeRule {ebux}{bx} {} {} +%\DeclareFontSeriesChangeRule {ebux}{b} {} {} +%\DeclareFontSeriesChangeRule {ebux}{c} {} {} +%\DeclareFontSeriesChangeRule {ebux}{eb} {} {} +%\DeclareFontSeriesChangeRule {ebux}{ec} {} {} +%\DeclareFontSeriesChangeRule {ebux}{el} {} {} +%\DeclareFontSeriesChangeRule {ebux}{ex} {} {} +%\DeclareFontSeriesChangeRule {ebux}{l} {} {} +%\DeclareFontSeriesChangeRule {ebux}{m?} {} {} +%\DeclareFontSeriesChangeRule {ebux}{sb} {} {} +%\DeclareFontSeriesChangeRule {ebux}{sc} {} {} +%\DeclareFontSeriesChangeRule {ebux}{sl} {} {} +%\DeclareFontSeriesChangeRule {ebux}{sx} {} {} +%\DeclareFontSeriesChangeRule {ebux}{ub} {} {} +%\DeclareFontSeriesChangeRule {ebux}{uc} {} {} +%\DeclareFontSeriesChangeRule {ebux}{ul} {} {} +%\DeclareFontSeriesChangeRule {ebux}{ux} {} {} +%\DeclareFontSeriesChangeRule {ebux}{x} {} {} +%\DeclareFontSeriesChangeRule {ebx}{bx} {} {} +%\DeclareFontSeriesChangeRule {ebx}{b}{bx}{} +%\DeclareFontSeriesChangeRule {ebx}{c}{ebc}{} +%\DeclareFontSeriesChangeRule {ebx}{eb}{ebx}{} +%\DeclareFontSeriesChangeRule {ebx}{ec}{ebec}{} +%\DeclareFontSeriesChangeRule {ebx}{el}{elx}{} +%\DeclareFontSeriesChangeRule {ebx}{ex} {} {} +%\DeclareFontSeriesChangeRule {ebx}{l}{lx}{} +%\DeclareFontSeriesChangeRule {ebx}{sb}{sbx}{} +%\DeclareFontSeriesChangeRule {ebx}{sc}{ebsc}{} +%\DeclareFontSeriesChangeRule {ebx}{sl}{slx}{} +%\DeclareFontSeriesChangeRule {ebx}{sx} {} {} +%\DeclareFontSeriesChangeRule {ebx}{ub}{ubx}{} +%\DeclareFontSeriesChangeRule {ebx}{uc} {} {} +%\DeclareFontSeriesChangeRule {ebx}{ul}{ulx}{} +%\DeclareFontSeriesChangeRule {ebx}{ux} {} {} +%\DeclareFontSeriesChangeRule {ebx}{x}{ebx}{} +%\DeclareFontSeriesChangeRule {eb}{bx} {} {} +%\DeclareFontSeriesChangeRule {eb}{c}{ebc}{} +%\DeclareFontSeriesChangeRule {eb}{ec}{ebec}{} +%\DeclareFontSeriesChangeRule {eb}{ex} {} {} +%\DeclareFontSeriesChangeRule {eb}{sb} {} {} +%\DeclareFontSeriesChangeRule {eb}{sc}{ebsc}{} +%\DeclareFontSeriesChangeRule {eb}{sx} {} {} +%\DeclareFontSeriesChangeRule {eb}{ub} {} {} +%\DeclareFontSeriesChangeRule {eb}{uc} {} {} +%\DeclareFontSeriesChangeRule {eb}{ux} {} {} +%\DeclareFontSeriesChangeRule {eb}{x}{ebx}{} +%\DeclareFontSeriesChangeRule {ec}{bx} {bx} {b} +%\DeclareFontSeriesChangeRule {ec}{b}{bec}{} +%\DeclareFontSeriesChangeRule {ec}{eb}{ebec}{} +%\DeclareFontSeriesChangeRule {ec}{el}{elec}{} +%\DeclareFontSeriesChangeRule {ec}{l}{lec}{} +%\DeclareFontSeriesChangeRule {ec}{sb}{sbec}{} +%\DeclareFontSeriesChangeRule {ec}{sl}{slec}{} +%\DeclareFontSeriesChangeRule {ec}{ub}{ubec}{} +%\DeclareFontSeriesChangeRule {ec}{x}{x}{m} +%\DeclareFontSeriesChangeRule {elc}{bx} {} {} +%\DeclareFontSeriesChangeRule {elc}{b}{bc}{} +%\DeclareFontSeriesChangeRule {elc}{c}{elc}{} +%\DeclareFontSeriesChangeRule {elc}{eb}{ebc}{} +%\DeclareFontSeriesChangeRule {elc}{ec}{elec}{} +%\DeclareFontSeriesChangeRule {elc}{el}{elc}{} +%\DeclareFontSeriesChangeRule {elc}{ex} {} {} +%\DeclareFontSeriesChangeRule {elc}{l}{lc}{} +%\DeclareFontSeriesChangeRule {elc}{sb}{sbc}{} +%\DeclareFontSeriesChangeRule {elc}{sc}{elsc}{} +%\DeclareFontSeriesChangeRule {elc}{sl}{slc}{} +%\DeclareFontSeriesChangeRule {elc}{sx} {} {} +%\DeclareFontSeriesChangeRule {elc}{ub}{ubc}{} +%\DeclareFontSeriesChangeRule {elc}{uc} {} {} +%\DeclareFontSeriesChangeRule {elc}{ul}{ulc}{} +%\DeclareFontSeriesChangeRule {elc}{ux} {} {} +%\DeclareFontSeriesChangeRule {elc}{x}{elx}{} +%\DeclareFontSeriesChangeRule {elec}{bx} {} {} +%\DeclareFontSeriesChangeRule {elec}{b} {} {} +%\DeclareFontSeriesChangeRule {elec}{c} {} {} +%\DeclareFontSeriesChangeRule {elec}{eb} {} {} +%\DeclareFontSeriesChangeRule {elec}{ec} {} {} +%\DeclareFontSeriesChangeRule {elec}{el} {} {} +%\DeclareFontSeriesChangeRule {elec}{ex} {} {} +%\DeclareFontSeriesChangeRule {elec}{l} {} {} +%\DeclareFontSeriesChangeRule {elec}{sb} {} {} +%\DeclareFontSeriesChangeRule {elec}{sc} {} {} +%\DeclareFontSeriesChangeRule {elec}{sl} {} {} +%\DeclareFontSeriesChangeRule {elec}{sx} {} {} +%\DeclareFontSeriesChangeRule {elec}{ub} {} {} +%\DeclareFontSeriesChangeRule {elec}{uc} {} {} +%\DeclareFontSeriesChangeRule {elec}{ul} {} {} +%\DeclareFontSeriesChangeRule {elec}{ux} {} {} +%\DeclareFontSeriesChangeRule {elec}{x} {} {} +%\DeclareFontSeriesChangeRule {elex}{?m} {} {} +%\DeclareFontSeriesChangeRule {elex}{bx} {} {} +%\DeclareFontSeriesChangeRule {elex}{b} {} {} +%\DeclareFontSeriesChangeRule {elex}{c} {} {} +%\DeclareFontSeriesChangeRule {elex}{eb} {} {} +%\DeclareFontSeriesChangeRule {elex}{ec} {} {} +%\DeclareFontSeriesChangeRule {elex}{el} {} {} +%\DeclareFontSeriesChangeRule {elex}{ex} {} {} +%\DeclareFontSeriesChangeRule {elex}{l} {} {} +%\DeclareFontSeriesChangeRule {elex}{m?} {} {} +%\DeclareFontSeriesChangeRule {elex}{sb} {} {} +%\DeclareFontSeriesChangeRule {elex}{sc} {} {} +%\DeclareFontSeriesChangeRule {elex}{sl} {} {} +%\DeclareFontSeriesChangeRule {elex}{sx} {} {} +%\DeclareFontSeriesChangeRule {elex}{ub} {} {} +%\DeclareFontSeriesChangeRule {elex}{uc} {} {} +%\DeclareFontSeriesChangeRule {elex}{ul} {} {} +%\DeclareFontSeriesChangeRule {elex}{ux} {} {} +%\DeclareFontSeriesChangeRule {elex}{x} {} {} +%\DeclareFontSeriesChangeRule {elsc}{bx} {} {} +%\DeclareFontSeriesChangeRule {elsc}{b} {} {} +%\DeclareFontSeriesChangeRule {elsc}{c} {} {} +%\DeclareFontSeriesChangeRule {elsc}{eb} {} {} +%\DeclareFontSeriesChangeRule {elsc}{ec} {} {} +%\DeclareFontSeriesChangeRule {elsc}{el} {} {} +%\DeclareFontSeriesChangeRule {elsc}{ex} {} {} +%\DeclareFontSeriesChangeRule {elsc}{l} {} {} +%\DeclareFontSeriesChangeRule {elsc}{sb} {} {} +%\DeclareFontSeriesChangeRule {elsc}{sc} {} {} +%\DeclareFontSeriesChangeRule {elsc}{sl} {} {} +%\DeclareFontSeriesChangeRule {elsc}{sx} {} {} +%\DeclareFontSeriesChangeRule {elsc}{ub} {} {} +%\DeclareFontSeriesChangeRule {elsc}{uc} {} {} +%\DeclareFontSeriesChangeRule {elsc}{ul} {} {} +%\DeclareFontSeriesChangeRule {elsc}{ux} {} {} +%\DeclareFontSeriesChangeRule {elsc}{x} {} {} +%\DeclareFontSeriesChangeRule {elsx}{?m} {} {} +%\DeclareFontSeriesChangeRule {elsx}{bx} {} {} +%\DeclareFontSeriesChangeRule {elsx}{b} {} {} +%\DeclareFontSeriesChangeRule {elsx}{c} {} {} +%\DeclareFontSeriesChangeRule {elsx}{eb} {} {} +%\DeclareFontSeriesChangeRule {elsx}{ec} {} {} +%\DeclareFontSeriesChangeRule {elsx}{el} {} {} +%\DeclareFontSeriesChangeRule {elsx}{ex} {} {} +%\DeclareFontSeriesChangeRule {elsx}{l} {} {} +%\DeclareFontSeriesChangeRule {elsx}{m?} {} {} +%\DeclareFontSeriesChangeRule {elsx}{sb} {} {} +%\DeclareFontSeriesChangeRule {elsx}{sc} {} {} +%\DeclareFontSeriesChangeRule {elsx}{sl} {} {} +%\DeclareFontSeriesChangeRule {elsx}{sx} {} {} +%\DeclareFontSeriesChangeRule {elsx}{ub} {} {} +%\DeclareFontSeriesChangeRule {elsx}{uc} {} {} +%\DeclareFontSeriesChangeRule {elsx}{ul} {} {} +%\DeclareFontSeriesChangeRule {elsx}{ux} {} {} +%\DeclareFontSeriesChangeRule {elsx}{x} {} {} +%\DeclareFontSeriesChangeRule {eluc}{?m} {} {} +%\DeclareFontSeriesChangeRule {eluc}{bx} {} {} +%\DeclareFontSeriesChangeRule {eluc}{b} {} {} +%\DeclareFontSeriesChangeRule {eluc}{c} {} {} +%\DeclareFontSeriesChangeRule {eluc}{eb} {} {} +%\DeclareFontSeriesChangeRule {eluc}{ec} {} {} +%\DeclareFontSeriesChangeRule {eluc}{el} {} {} +%\DeclareFontSeriesChangeRule {eluc}{ex} {} {} +%\DeclareFontSeriesChangeRule {eluc}{l} {} {} +%\DeclareFontSeriesChangeRule {eluc}{m?} {} {} +%\DeclareFontSeriesChangeRule {eluc}{sb} {} {} +%\DeclareFontSeriesChangeRule {eluc}{sc} {} {} +%\DeclareFontSeriesChangeRule {eluc}{sl} {} {} +%\DeclareFontSeriesChangeRule {eluc}{sx} {} {} +%\DeclareFontSeriesChangeRule {eluc}{ub} {} {} +%\DeclareFontSeriesChangeRule {eluc}{uc} {} {} +%\DeclareFontSeriesChangeRule {eluc}{ul} {} {} +%\DeclareFontSeriesChangeRule {eluc}{ux} {} {} +%\DeclareFontSeriesChangeRule {eluc}{x} {} {} +%\DeclareFontSeriesChangeRule {elux}{?m} {} {} +%\DeclareFontSeriesChangeRule {elux}{bx} {} {} +%\DeclareFontSeriesChangeRule {elux}{b} {} {} +%\DeclareFontSeriesChangeRule {elux}{c} {} {} +%\DeclareFontSeriesChangeRule {elux}{eb} {} {} +%\DeclareFontSeriesChangeRule {elux}{ec} {} {} +%\DeclareFontSeriesChangeRule {elux}{el} {} {} +%\DeclareFontSeriesChangeRule {elux}{ex} {} {} +%\DeclareFontSeriesChangeRule {elux}{l} {} {} +%\DeclareFontSeriesChangeRule {elux}{m?} {} {} +%\DeclareFontSeriesChangeRule {elux}{sb} {} {} +%\DeclareFontSeriesChangeRule {elux}{sc} {} {} +%\DeclareFontSeriesChangeRule {elux}{sl} {} {} +%\DeclareFontSeriesChangeRule {elux}{sx} {} {} +%\DeclareFontSeriesChangeRule {elux}{ub} {} {} +%\DeclareFontSeriesChangeRule {elux}{uc} {} {} +%\DeclareFontSeriesChangeRule {elux}{ul} {} {} +%\DeclareFontSeriesChangeRule {elux}{ux} {} {} +%\DeclareFontSeriesChangeRule {elux}{x} {} {} +%\DeclareFontSeriesChangeRule {elx}{bx} {} {} +%\DeclareFontSeriesChangeRule {elx}{b}{bx}{} +%\DeclareFontSeriesChangeRule {elx}{c}{elc}{} +%\DeclareFontSeriesChangeRule {elx}{eb}{ebx}{} +%\DeclareFontSeriesChangeRule {elx}{ec}{elec}{} +%\DeclareFontSeriesChangeRule {elx}{el}{elx}{} +%\DeclareFontSeriesChangeRule {elx}{ex} {} {} +%\DeclareFontSeriesChangeRule {elx}{l}{lx}{} +%\DeclareFontSeriesChangeRule {elx}{sb}{sbx}{} +%\DeclareFontSeriesChangeRule {elx}{sc}{elsc}{} +%\DeclareFontSeriesChangeRule {elx}{sl}{slx}{} +%\DeclareFontSeriesChangeRule {elx}{sx} {} {} +%\DeclareFontSeriesChangeRule {elx}{ub}{ubx}{} +%\DeclareFontSeriesChangeRule {elx}{uc} {} {} +%\DeclareFontSeriesChangeRule {elx}{ul}{ulx}{} +%\DeclareFontSeriesChangeRule {elx}{ux} {} {} +%\DeclareFontSeriesChangeRule {elx}{x}{elx}{} +%\DeclareFontSeriesChangeRule {el}{bx} {} {} +%\DeclareFontSeriesChangeRule {el}{c}{elc}{} +%\DeclareFontSeriesChangeRule {el}{eb} {} {} +%\DeclareFontSeriesChangeRule {el}{ec}{elec}{} +%\DeclareFontSeriesChangeRule {el}{ex} {} {} +%\DeclareFontSeriesChangeRule {el}{sb} {} {} +%\DeclareFontSeriesChangeRule {el}{sc}{elsc}{} +%\DeclareFontSeriesChangeRule {el}{sx} {} {} +%\DeclareFontSeriesChangeRule {el}{ub} {} {} +%\DeclareFontSeriesChangeRule {el}{uc} {} {} +%\DeclareFontSeriesChangeRule {el}{ux} {} {} +%\DeclareFontSeriesChangeRule {el}{x}{elx}{} +%\DeclareFontSeriesChangeRule {ex}{?m} {} {} +%\DeclareFontSeriesChangeRule {ex}{bx} {} {} +%\DeclareFontSeriesChangeRule {ex}{b} {} {} +%\DeclareFontSeriesChangeRule {ex}{eb} {} {} +%\DeclareFontSeriesChangeRule {ex}{el} {} {} +%\DeclareFontSeriesChangeRule {ex}{l} {} {} +%\DeclareFontSeriesChangeRule {ex}{m?} {} {} +%\DeclareFontSeriesChangeRule {ex}{sb} {} {} +%\DeclareFontSeriesChangeRule {ex}{sl} {} {} +%\DeclareFontSeriesChangeRule {ex}{ub} {} {} +%\DeclareFontSeriesChangeRule {ex}{ul} {} {} +%\DeclareFontSeriesChangeRule {lc}{bx} {} {} +%\DeclareFontSeriesChangeRule {lc}{b}{bc}{} +%\DeclareFontSeriesChangeRule {lc}{c}{lc}{} +%\DeclareFontSeriesChangeRule {lc}{eb}{ebc}{} +%\DeclareFontSeriesChangeRule {lc}{ec}{lec}{} +%\DeclareFontSeriesChangeRule {lc}{el}{elc}{} +%\DeclareFontSeriesChangeRule {lc}{ex} {} {} +%\DeclareFontSeriesChangeRule {lc}{l}{lc}{} +%\DeclareFontSeriesChangeRule {lc}{sb}{sbc}{} +%\DeclareFontSeriesChangeRule {lc}{sc}{lsc}{} +%\DeclareFontSeriesChangeRule {lc}{sl}{slc}{} +%\DeclareFontSeriesChangeRule {lc}{sx} {} {} +%\DeclareFontSeriesChangeRule {lc}{ub}{ubc}{} +%\DeclareFontSeriesChangeRule {lc}{uc} {} {} +%\DeclareFontSeriesChangeRule {lc}{ul}{ulc}{} +%\DeclareFontSeriesChangeRule {lc}{ux} {} {} +%\DeclareFontSeriesChangeRule {lc}{x}{lx}{} +%\DeclareFontSeriesChangeRule {lec}{bx} {} {} +%\DeclareFontSeriesChangeRule {lec}{b} {} {} +%\DeclareFontSeriesChangeRule {lec}{c} {} {} +%\DeclareFontSeriesChangeRule {lec}{eb} {} {} +%\DeclareFontSeriesChangeRule {lec}{ec} {} {} +%\DeclareFontSeriesChangeRule {lec}{el} {} {} +%\DeclareFontSeriesChangeRule {lec}{ex} {} {} +%\DeclareFontSeriesChangeRule {lec}{l} {} {} +%\DeclareFontSeriesChangeRule {lec}{sb} {} {} +%\DeclareFontSeriesChangeRule {lec}{sc} {} {} +%\DeclareFontSeriesChangeRule {lec}{sl} {} {} +%\DeclareFontSeriesChangeRule {lec}{sx} {} {} +%\DeclareFontSeriesChangeRule {lec}{ub} {} {} +%\DeclareFontSeriesChangeRule {lec}{uc} {} {} +%\DeclareFontSeriesChangeRule {lec}{ul} {} {} +%\DeclareFontSeriesChangeRule {lec}{ux} {} {} +%\DeclareFontSeriesChangeRule {lec}{x} {} {} +%\DeclareFontSeriesChangeRule {lex}{?m} {} {} +%\DeclareFontSeriesChangeRule {lex}{bx} {} {} +%\DeclareFontSeriesChangeRule {lex}{b} {} {} +%\DeclareFontSeriesChangeRule {lex}{c} {} {} +%\DeclareFontSeriesChangeRule {lex}{eb} {} {} +%\DeclareFontSeriesChangeRule {lex}{ec} {} {} +%\DeclareFontSeriesChangeRule {lex}{el} {} {} +%\DeclareFontSeriesChangeRule {lex}{ex} {} {} +%\DeclareFontSeriesChangeRule {lex}{l} {} {} +%\DeclareFontSeriesChangeRule {lex}{m?} {} {} +%\DeclareFontSeriesChangeRule {lex}{sb} {} {} +%\DeclareFontSeriesChangeRule {lex}{sc} {} {} +%\DeclareFontSeriesChangeRule {lex}{sl} {} {} +%\DeclareFontSeriesChangeRule {lex}{sx} {} {} +%\DeclareFontSeriesChangeRule {lex}{ub} {} {} +%\DeclareFontSeriesChangeRule {lex}{uc} {} {} +%\DeclareFontSeriesChangeRule {lex}{ul} {} {} +%\DeclareFontSeriesChangeRule {lex}{ux} {} {} +%\DeclareFontSeriesChangeRule {lex}{x} {} {} +%\DeclareFontSeriesChangeRule {lsc}{bx} {} {} +%\DeclareFontSeriesChangeRule {lsc}{b} {} {} +%\DeclareFontSeriesChangeRule {lsc}{c} {} {} +%\DeclareFontSeriesChangeRule {lsc}{eb} {} {} +%\DeclareFontSeriesChangeRule {lsc}{ec} {} {} +%\DeclareFontSeriesChangeRule {lsc}{el} {} {} +%\DeclareFontSeriesChangeRule {lsc}{ex} {} {} +%\DeclareFontSeriesChangeRule {lsc}{l} {} {} +%\DeclareFontSeriesChangeRule {lsc}{sb} {} {} +%\DeclareFontSeriesChangeRule {lsc}{sc} {} {} +%\DeclareFontSeriesChangeRule {lsc}{sl} {} {} +%\DeclareFontSeriesChangeRule {lsc}{sx} {} {} +%\DeclareFontSeriesChangeRule {lsc}{ub} {} {} +%\DeclareFontSeriesChangeRule {lsc}{uc} {} {} +%\DeclareFontSeriesChangeRule {lsc}{ul} {} {} +%\DeclareFontSeriesChangeRule {lsc}{ux} {} {} +%\DeclareFontSeriesChangeRule {lsc}{x} {} {} +%\DeclareFontSeriesChangeRule {lsx}{?m} {} {} +%\DeclareFontSeriesChangeRule {lsx}{bx} {} {} +%\DeclareFontSeriesChangeRule {lsx}{b} {} {} +%\DeclareFontSeriesChangeRule {lsx}{c} {} {} +%\DeclareFontSeriesChangeRule {lsx}{eb} {} {} +%\DeclareFontSeriesChangeRule {lsx}{ec} {} {} +%\DeclareFontSeriesChangeRule {lsx}{el} {} {} +%\DeclareFontSeriesChangeRule {lsx}{ex} {} {} +%\DeclareFontSeriesChangeRule {lsx}{l} {} {} +%\DeclareFontSeriesChangeRule {lsx}{m?} {} {} +%\DeclareFontSeriesChangeRule {lsx}{sb} {} {} +%\DeclareFontSeriesChangeRule {lsx}{sc} {} {} +%\DeclareFontSeriesChangeRule {lsx}{sl} {} {} +%\DeclareFontSeriesChangeRule {lsx}{sx} {} {} +%\DeclareFontSeriesChangeRule {lsx}{ub} {} {} +%\DeclareFontSeriesChangeRule {lsx}{uc} {} {} +%\DeclareFontSeriesChangeRule {lsx}{ul} {} {} +%\DeclareFontSeriesChangeRule {lsx}{ux} {} {} +%\DeclareFontSeriesChangeRule {lsx}{x} {} {} +%\DeclareFontSeriesChangeRule {luc}{?m} {} {} +%\DeclareFontSeriesChangeRule {luc}{bx} {} {} +%\DeclareFontSeriesChangeRule {luc}{b} {} {} +%\DeclareFontSeriesChangeRule {luc}{c} {} {} +%\DeclareFontSeriesChangeRule {luc}{eb} {} {} +%\DeclareFontSeriesChangeRule {luc}{ec} {} {} +%\DeclareFontSeriesChangeRule {luc}{el} {} {} +%\DeclareFontSeriesChangeRule {luc}{ex} {} {} +%\DeclareFontSeriesChangeRule {luc}{l} {} {} +%\DeclareFontSeriesChangeRule {luc}{m?} {} {} +%\DeclareFontSeriesChangeRule {luc}{sb} {} {} +%\DeclareFontSeriesChangeRule {luc}{sc} {} {} +%\DeclareFontSeriesChangeRule {luc}{sl} {} {} +%\DeclareFontSeriesChangeRule {luc}{sx} {} {} +%\DeclareFontSeriesChangeRule {luc}{ub} {} {} +%\DeclareFontSeriesChangeRule {luc}{uc} {} {} +%\DeclareFontSeriesChangeRule {luc}{ul} {} {} +%\DeclareFontSeriesChangeRule {luc}{ux} {} {} +%\DeclareFontSeriesChangeRule {luc}{x} {} {} +%\DeclareFontSeriesChangeRule {lux}{?m} {} {} +%\DeclareFontSeriesChangeRule {lux}{bx} {} {} +%\DeclareFontSeriesChangeRule {lux}{b} {} {} +%\DeclareFontSeriesChangeRule {lux}{c} {} {} +%\DeclareFontSeriesChangeRule {lux}{eb} {} {} +%\DeclareFontSeriesChangeRule {lux}{ec} {} {} +%\DeclareFontSeriesChangeRule {lux}{el} {} {} +%\DeclareFontSeriesChangeRule {lux}{ex} {} {} +%\DeclareFontSeriesChangeRule {lux}{l} {} {} +%\DeclareFontSeriesChangeRule {lux}{m?} {} {} +%\DeclareFontSeriesChangeRule {lux}{sb} {} {} +%\DeclareFontSeriesChangeRule {lux}{sc} {} {} +%\DeclareFontSeriesChangeRule {lux}{sl} {} {} +%\DeclareFontSeriesChangeRule {lux}{sx} {} {} +%\DeclareFontSeriesChangeRule {lux}{ub} {} {} +%\DeclareFontSeriesChangeRule {lux}{uc} {} {} +%\DeclareFontSeriesChangeRule {lux}{ul} {} {} +%\DeclareFontSeriesChangeRule {lux}{ux} {} {} +%\DeclareFontSeriesChangeRule {lux}{x} {} {} +%\DeclareFontSeriesChangeRule {lx}{bx} {} {} +%\DeclareFontSeriesChangeRule {lx}{b}{bx}{} +%\DeclareFontSeriesChangeRule {lx}{c}{lc}{} +%\DeclareFontSeriesChangeRule {lx}{eb}{ebx}{} +%\DeclareFontSeriesChangeRule {lx}{ec}{lec}{} +%\DeclareFontSeriesChangeRule {lx}{el}{elx}{} +%\DeclareFontSeriesChangeRule {lx}{ex} {} {} +%\DeclareFontSeriesChangeRule {lx}{l}{lx}{} +%\DeclareFontSeriesChangeRule {lx}{sb}{sbx}{} +%\DeclareFontSeriesChangeRule {lx}{sc}{lsc}{} +%\DeclareFontSeriesChangeRule {lx}{sl}{slx}{} +%\DeclareFontSeriesChangeRule {lx}{sx} {} {} +%\DeclareFontSeriesChangeRule {lx}{ub}{ubx}{} +%\DeclareFontSeriesChangeRule {lx}{uc} {} {} +%\DeclareFontSeriesChangeRule {lx}{ul}{ulx}{} +%\DeclareFontSeriesChangeRule {lx}{ux} {} {} +%\DeclareFontSeriesChangeRule {lx}{x}{lx}{} +%\DeclareFontSeriesChangeRule {l}{b} {b} {bx} +%\DeclareFontSeriesChangeRule {l}{c} {lc} {l} +%\DeclareFontSeriesChangeRule {l}{eb} {} {} +%\DeclareFontSeriesChangeRule {l}{ec} {lec} {l} +%\DeclareFontSeriesChangeRule {l}{ex} {} {} +%\DeclareFontSeriesChangeRule {l}{sb} {sb} {b} +%\DeclareFontSeriesChangeRule {l}{sc} {lsc} {l} +%\DeclareFontSeriesChangeRule {l}{sx} {} {} +%\DeclareFontSeriesChangeRule {l}{ub} {} {} +%\DeclareFontSeriesChangeRule {l}{uc} {} {} +%\DeclareFontSeriesChangeRule {l}{ux} {} {} +%\DeclareFontSeriesChangeRule {l}{x} {lx} {l} +%\DeclareFontSeriesChangeRule {m}{bx} {bx} {b} +%\DeclareFontSeriesChangeRule {m}{c} {c} {m} +%\DeclareFontSeriesChangeRule {m}{l} {l} {m} +%\DeclareFontSeriesChangeRule {m}{sc} {sc} {m} +%\DeclareFontSeriesChangeRule {m}{x} {x} {m} +%\DeclareFontSeriesChangeRule {sbc}{bx} {} {} +%\DeclareFontSeriesChangeRule {sbc}{b}{bc}{} +%\DeclareFontSeriesChangeRule {sbc}{c}{sbc}{} +%\DeclareFontSeriesChangeRule {sbc}{eb}{ebc}{} +%\DeclareFontSeriesChangeRule {sbc}{ec}{sbec}{sbc} +%\DeclareFontSeriesChangeRule {sbc}{el}{elc}{} +%\DeclareFontSeriesChangeRule {sbc}{ex} {} {} +%\DeclareFontSeriesChangeRule {sbc}{l}{lc}{} +%\DeclareFontSeriesChangeRule {sbc}{sb}{sbc}{} +%\DeclareFontSeriesChangeRule {sbc}{sc}{sbsc}{sbc} +%\DeclareFontSeriesChangeRule {sbc}{sl}{slc}{} +%\DeclareFontSeriesChangeRule {sbc}{sx} {} {} +%\DeclareFontSeriesChangeRule {sbc}{ub}{ubc}{} +%\DeclareFontSeriesChangeRule {sbc}{uc} {} {} +%\DeclareFontSeriesChangeRule {sbc}{ul}{ulc}{} +%\DeclareFontSeriesChangeRule {sbc}{ux} {} {} +%\DeclareFontSeriesChangeRule {sbc}{x}{sbx}{} +%\DeclareFontSeriesChangeRule {sbec}{bx} {} {} +%\DeclareFontSeriesChangeRule {sbec}{b} {} {} +%\DeclareFontSeriesChangeRule {sbec}{c} {} {} +%\DeclareFontSeriesChangeRule {sbec}{eb} {} {} +%\DeclareFontSeriesChangeRule {sbec}{ec} {} {} +%\DeclareFontSeriesChangeRule {sbec}{el} {} {} +%\DeclareFontSeriesChangeRule {sbec}{ex} {} {} +%\DeclareFontSeriesChangeRule {sbec}{l} {} {} +%\DeclareFontSeriesChangeRule {sbec}{sb} {} {} +%\DeclareFontSeriesChangeRule {sbec}{sc} {} {} +%\DeclareFontSeriesChangeRule {sbec}{sl} {} {} +%\DeclareFontSeriesChangeRule {sbec}{sx} {} {} +%\DeclareFontSeriesChangeRule {sbec}{ub} {} {} +%\DeclareFontSeriesChangeRule {sbec}{uc} {} {} +%\DeclareFontSeriesChangeRule {sbec}{ul} {} {} +%\DeclareFontSeriesChangeRule {sbec}{ux} {} {} +%\DeclareFontSeriesChangeRule {sbec}{x} {} {} +%\DeclareFontSeriesChangeRule {sbex}{?m} {} {} +%\DeclareFontSeriesChangeRule {sbex}{bx} {} {} +%\DeclareFontSeriesChangeRule {sbex}{b} {} {} +%\DeclareFontSeriesChangeRule {sbex}{c} {} {} +%\DeclareFontSeriesChangeRule {sbex}{eb} {} {} +%\DeclareFontSeriesChangeRule {sbex}{ec} {} {} +%\DeclareFontSeriesChangeRule {sbex}{el} {} {} +%\DeclareFontSeriesChangeRule {sbex}{ex} {} {} +%\DeclareFontSeriesChangeRule {sbex}{l} {} {} +%\DeclareFontSeriesChangeRule {sbex}{m?} {} {} +%\DeclareFontSeriesChangeRule {sbex}{sb} {} {} +%\DeclareFontSeriesChangeRule {sbex}{sc} {} {} +%\DeclareFontSeriesChangeRule {sbex}{sl} {} {} +%\DeclareFontSeriesChangeRule {sbex}{sx} {} {} +%\DeclareFontSeriesChangeRule {sbex}{ub} {} {} +%\DeclareFontSeriesChangeRule {sbex}{uc} {} {} +%\DeclareFontSeriesChangeRule {sbex}{ul} {} {} +%\DeclareFontSeriesChangeRule {sbex}{ux} {} {} +%\DeclareFontSeriesChangeRule {sbex}{x} {} {} +%\DeclareFontSeriesChangeRule {sbsc}{bx} {} {} +%\DeclareFontSeriesChangeRule {sbsc}{b} {} {} +%\DeclareFontSeriesChangeRule {sbsc}{c} {} {} +%\DeclareFontSeriesChangeRule {sbsc}{eb} {} {} +%\DeclareFontSeriesChangeRule {sbsc}{ec} {} {} +%\DeclareFontSeriesChangeRule {sbsc}{el} {} {} +%\DeclareFontSeriesChangeRule {sbsc}{ex} {} {} +%\DeclareFontSeriesChangeRule {sbsc}{l} {} {} +%\DeclareFontSeriesChangeRule {sbsc}{sb} {} {} +%\DeclareFontSeriesChangeRule {sbsc}{sc} {} {} +%\DeclareFontSeriesChangeRule {sbsc}{sl} {} {} +%\DeclareFontSeriesChangeRule {sbsc}{sx} {} {} +%\DeclareFontSeriesChangeRule {sbsc}{ub} {} {} +%\DeclareFontSeriesChangeRule {sbsc}{uc} {} {} +%\DeclareFontSeriesChangeRule {sbsc}{ul} {} {} +%\DeclareFontSeriesChangeRule {sbsc}{ux} {} {} +%\DeclareFontSeriesChangeRule {sbsc}{x} {} {} +%\DeclareFontSeriesChangeRule {sbsx}{?m} {} {} +%\DeclareFontSeriesChangeRule {sbsx}{bx} {} {} +%\DeclareFontSeriesChangeRule {sbsx}{b} {} {} +%\DeclareFontSeriesChangeRule {sbsx}{c} {} {} +%\DeclareFontSeriesChangeRule {sbsx}{eb} {} {} +%\DeclareFontSeriesChangeRule {sbsx}{ec} {} {} +%\DeclareFontSeriesChangeRule {sbsx}{el} {} {} +%\DeclareFontSeriesChangeRule {sbsx}{ex} {} {} +%\DeclareFontSeriesChangeRule {sbsx}{l} {} {} +%\DeclareFontSeriesChangeRule {sbsx}{m?} {} {} +%\DeclareFontSeriesChangeRule {sbsx}{sb} {} {} +%\DeclareFontSeriesChangeRule {sbsx}{sc} {} {} +%\DeclareFontSeriesChangeRule {sbsx}{sl} {} {} +%\DeclareFontSeriesChangeRule {sbsx}{sx} {} {} +%\DeclareFontSeriesChangeRule {sbsx}{ub} {} {} +%\DeclareFontSeriesChangeRule {sbsx}{uc} {} {} +%\DeclareFontSeriesChangeRule {sbsx}{ul} {} {} +%\DeclareFontSeriesChangeRule {sbsx}{ux} {} {} +%\DeclareFontSeriesChangeRule {sbsx}{x} {} {} +%\DeclareFontSeriesChangeRule {sbuc}{?m} {} {} +%\DeclareFontSeriesChangeRule {sbuc}{bx} {} {} +%\DeclareFontSeriesChangeRule {sbuc}{b} {} {} +%\DeclareFontSeriesChangeRule {sbuc}{c} {} {} +%\DeclareFontSeriesChangeRule {sbuc}{eb} {} {} +%\DeclareFontSeriesChangeRule {sbuc}{ec} {} {} +%\DeclareFontSeriesChangeRule {sbuc}{el} {} {} +%\DeclareFontSeriesChangeRule {sbuc}{ex} {} {} +%\DeclareFontSeriesChangeRule {sbuc}{l} {} {} +%\DeclareFontSeriesChangeRule {sbuc}{m?} {} {} +%\DeclareFontSeriesChangeRule {sbuc}{sb} {} {} +%\DeclareFontSeriesChangeRule {sbuc}{sc} {} {} +%\DeclareFontSeriesChangeRule {sbuc}{sl} {} {} +%\DeclareFontSeriesChangeRule {sbuc}{sx} {} {} +%\DeclareFontSeriesChangeRule {sbuc}{ub} {} {} +%\DeclareFontSeriesChangeRule {sbuc}{uc} {} {} +%\DeclareFontSeriesChangeRule {sbuc}{ul} {} {} +%\DeclareFontSeriesChangeRule {sbuc}{ux} {} {} +%\DeclareFontSeriesChangeRule {sbuc}{x} {} {} +%\DeclareFontSeriesChangeRule {sbux}{?m} {} {} +%\DeclareFontSeriesChangeRule {sbux}{bx} {} {} +%\DeclareFontSeriesChangeRule {sbux}{b} {} {} +%\DeclareFontSeriesChangeRule {sbux}{c} {} {} +%\DeclareFontSeriesChangeRule {sbux}{eb} {} {} +%\DeclareFontSeriesChangeRule {sbux}{ec} {} {} +%\DeclareFontSeriesChangeRule {sbux}{el} {} {} +%\DeclareFontSeriesChangeRule {sbux}{ex} {} {} +%\DeclareFontSeriesChangeRule {sbux}{l} {} {} +%\DeclareFontSeriesChangeRule {sbux}{m?} {} {} +%\DeclareFontSeriesChangeRule {sbux}{sb} {} {} +%\DeclareFontSeriesChangeRule {sbux}{sc} {} {} +%\DeclareFontSeriesChangeRule {sbux}{sl} {} {} +%\DeclareFontSeriesChangeRule {sbux}{sx} {} {} +%\DeclareFontSeriesChangeRule {sbux}{ub} {} {} +%\DeclareFontSeriesChangeRule {sbux}{uc} {} {} +%\DeclareFontSeriesChangeRule {sbux}{ul} {} {} +%\DeclareFontSeriesChangeRule {sbux}{ux} {} {} +%\DeclareFontSeriesChangeRule {sbux}{x} {} {} +%\DeclareFontSeriesChangeRule {sbx}{bx} {} {} +%\DeclareFontSeriesChangeRule {sbx}{b}{bx}{} +%\DeclareFontSeriesChangeRule {sbx}{c}{sbc}{} +%\DeclareFontSeriesChangeRule {sbx}{eb}{ebx}{} +%\DeclareFontSeriesChangeRule {sbx}{ec}{sbec}{} +%\DeclareFontSeriesChangeRule {sbx}{el}{elx}{} +%\DeclareFontSeriesChangeRule {sbx}{ex} {} {} +%\DeclareFontSeriesChangeRule {sbx}{l}{lx}{} +%\DeclareFontSeriesChangeRule {sbx}{sb}{sbx}{} +%\DeclareFontSeriesChangeRule {sbx}{sc}{sbsc}{} +%\DeclareFontSeriesChangeRule {sbx}{sl}{slx}{} +%\DeclareFontSeriesChangeRule {sbx}{sx} {} {} +%\DeclareFontSeriesChangeRule {sbx}{ub}{ubx}{} +%\DeclareFontSeriesChangeRule {sbx}{uc} {} {} +%\DeclareFontSeriesChangeRule {sbx}{ul}{ulx}{} +%\DeclareFontSeriesChangeRule {sbx}{ux} {} {} +%\DeclareFontSeriesChangeRule {sbx}{x}{sbx}{} +%\DeclareFontSeriesChangeRule {sb}{bx} {} {} +%\DeclareFontSeriesChangeRule {sb}{c} {sbc} {bc} +%\DeclareFontSeriesChangeRule {sb}{eb} {} {} +%\DeclareFontSeriesChangeRule {sb}{ec} {sbec} {sbc} +%\DeclareFontSeriesChangeRule {sb}{ex} {} {} +%\DeclareFontSeriesChangeRule {sb}{sc} {sbsc} {sbc} +%\DeclareFontSeriesChangeRule {sb}{sx} {} {} +%\DeclareFontSeriesChangeRule {sb}{ub} {} {} +%\DeclareFontSeriesChangeRule {sb}{uc} {} {} +%\DeclareFontSeriesChangeRule {sb}{ux} {} {} +%\DeclareFontSeriesChangeRule {sb}{x} {sbx} {bx} +%\DeclareFontSeriesChangeRule {sc}{bx} {bx} {b} +%\DeclareFontSeriesChangeRule {sc}{b}{bsc}{} +%\DeclareFontSeriesChangeRule {sc}{eb}{ebsc}{} +%\DeclareFontSeriesChangeRule {sc}{el}{elsc}{} +%\DeclareFontSeriesChangeRule {sc}{l}{lsc}{} +%\DeclareFontSeriesChangeRule {sc}{sb}{sbsc}{} +%\DeclareFontSeriesChangeRule {sc}{sl}{slsc}{} +%\DeclareFontSeriesChangeRule {sc}{ub}{ubsc}{} +%\DeclareFontSeriesChangeRule {sc}{x}{x}{m} +%\DeclareFontSeriesChangeRule {slc}{bx} {} {} +%\DeclareFontSeriesChangeRule {slc}{b}{bc}{} +%\DeclareFontSeriesChangeRule {slc}{c}{slc}{} +%\DeclareFontSeriesChangeRule {slc}{eb}{ebc}{} +%\DeclareFontSeriesChangeRule {slc}{ec}{slec}{} +%\DeclareFontSeriesChangeRule {slc}{el}{elc}{} +%\DeclareFontSeriesChangeRule {slc}{ex} {} {} +%\DeclareFontSeriesChangeRule {slc}{l}{lc}{} +%\DeclareFontSeriesChangeRule {slc}{sb}{sbc}{} +%\DeclareFontSeriesChangeRule {slc}{sc}{slsc}{} +%\DeclareFontSeriesChangeRule {slc}{sl}{slc}{} +%\DeclareFontSeriesChangeRule {slc}{sx} {} {} +%\DeclareFontSeriesChangeRule {slc}{ub}{ubc}{} +%\DeclareFontSeriesChangeRule {slc}{uc} {} {} +%\DeclareFontSeriesChangeRule {slc}{ul}{ulc}{} +%\DeclareFontSeriesChangeRule {slc}{ux} {} {} +%\DeclareFontSeriesChangeRule {slc}{x}{slx}{} +%\DeclareFontSeriesChangeRule {slec}{bx} {} {} +%\DeclareFontSeriesChangeRule {slec}{b} {} {} +%\DeclareFontSeriesChangeRule {slec}{c} {} {} +%\DeclareFontSeriesChangeRule {slec}{eb} {} {} +%\DeclareFontSeriesChangeRule {slec}{ec} {} {} +%\DeclareFontSeriesChangeRule {slec}{el} {} {} +%\DeclareFontSeriesChangeRule {slec}{ex} {} {} +%\DeclareFontSeriesChangeRule {slec}{l} {} {} +%\DeclareFontSeriesChangeRule {slec}{sb} {} {} +%\DeclareFontSeriesChangeRule {slec}{sc} {} {} +%\DeclareFontSeriesChangeRule {slec}{sl} {} {} +%\DeclareFontSeriesChangeRule {slec}{sx} {} {} +%\DeclareFontSeriesChangeRule {slec}{ub} {} {} +%\DeclareFontSeriesChangeRule {slec}{uc} {} {} +%\DeclareFontSeriesChangeRule {slec}{ul} {} {} +%\DeclareFontSeriesChangeRule {slec}{ux} {} {} +%\DeclareFontSeriesChangeRule {slec}{x} {} {} +%\DeclareFontSeriesChangeRule {slex}{?m} {} {} +%\DeclareFontSeriesChangeRule {slex}{bx} {} {} +%\DeclareFontSeriesChangeRule {slex}{b} {} {} +%\DeclareFontSeriesChangeRule {slex}{c} {} {} +%\DeclareFontSeriesChangeRule {slex}{eb} {} {} +%\DeclareFontSeriesChangeRule {slex}{ec} {} {} +%\DeclareFontSeriesChangeRule {slex}{el} {} {} +%\DeclareFontSeriesChangeRule {slex}{ex} {} {} +%\DeclareFontSeriesChangeRule {slex}{l} {} {} +%\DeclareFontSeriesChangeRule {slex}{m?} {} {} +%\DeclareFontSeriesChangeRule {slex}{sb} {} {} +%\DeclareFontSeriesChangeRule {slex}{sc} {} {} +%\DeclareFontSeriesChangeRule {slex}{sl} {} {} +%\DeclareFontSeriesChangeRule {slex}{sx} {} {} +%\DeclareFontSeriesChangeRule {slex}{ub} {} {} +%\DeclareFontSeriesChangeRule {slex}{uc} {} {} +%\DeclareFontSeriesChangeRule {slex}{ul} {} {} +%\DeclareFontSeriesChangeRule {slex}{ux} {} {} +%\DeclareFontSeriesChangeRule {slex}{x} {} {} +%\DeclareFontSeriesChangeRule {slsc}{bx} {} {} +%\DeclareFontSeriesChangeRule {slsc}{b} {} {} +%\DeclareFontSeriesChangeRule {slsc}{c} {} {} +%\DeclareFontSeriesChangeRule {slsc}{eb} {} {} +%\DeclareFontSeriesChangeRule {slsc}{ec} {} {} +%\DeclareFontSeriesChangeRule {slsc}{el} {} {} +%\DeclareFontSeriesChangeRule {slsc}{ex} {} {} +%\DeclareFontSeriesChangeRule {slsc}{l} {} {} +%\DeclareFontSeriesChangeRule {slsc}{sb} {} {} +%\DeclareFontSeriesChangeRule {slsc}{sc} {} {} +%\DeclareFontSeriesChangeRule {slsc}{sl} {} {} +%\DeclareFontSeriesChangeRule {slsc}{sx} {} {} +%\DeclareFontSeriesChangeRule {slsc}{ub} {} {} +%\DeclareFontSeriesChangeRule {slsc}{uc} {} {} +%\DeclareFontSeriesChangeRule {slsc}{ul} {} {} +%\DeclareFontSeriesChangeRule {slsc}{ux} {} {} +%\DeclareFontSeriesChangeRule {slsc}{x} {} {} +%\DeclareFontSeriesChangeRule {slsx}{?m} {} {} +%\DeclareFontSeriesChangeRule {slsx}{bx} {} {} +%\DeclareFontSeriesChangeRule {slsx}{b} {} {} +%\DeclareFontSeriesChangeRule {slsx}{c} {} {} +%\DeclareFontSeriesChangeRule {slsx}{eb} {} {} +%\DeclareFontSeriesChangeRule {slsx}{ec} {} {} +%\DeclareFontSeriesChangeRule {slsx}{el} {} {} +%\DeclareFontSeriesChangeRule {slsx}{ex} {} {} +%\DeclareFontSeriesChangeRule {slsx}{l} {} {} +%\DeclareFontSeriesChangeRule {slsx}{m?} {} {} +%\DeclareFontSeriesChangeRule {slsx}{sb} {} {} +%\DeclareFontSeriesChangeRule {slsx}{sc} {} {} +%\DeclareFontSeriesChangeRule {slsx}{sl} {} {} +%\DeclareFontSeriesChangeRule {slsx}{sx} {} {} +%\DeclareFontSeriesChangeRule {slsx}{ub} {} {} +%\DeclareFontSeriesChangeRule {slsx}{uc} {} {} +%\DeclareFontSeriesChangeRule {slsx}{ul} {} {} +%\DeclareFontSeriesChangeRule {slsx}{ux} {} {} +%\DeclareFontSeriesChangeRule {slsx}{x} {} {} +%\DeclareFontSeriesChangeRule {sluc}{?m} {} {} +%\DeclareFontSeriesChangeRule {sluc}{bx} {} {} +%\DeclareFontSeriesChangeRule {sluc}{b} {} {} +%\DeclareFontSeriesChangeRule {sluc}{c} {} {} +%\DeclareFontSeriesChangeRule {sluc}{eb} {} {} +%\DeclareFontSeriesChangeRule {sluc}{ec} {} {} +%\DeclareFontSeriesChangeRule {sluc}{el} {} {} +%\DeclareFontSeriesChangeRule {sluc}{ex} {} {} +%\DeclareFontSeriesChangeRule {sluc}{l} {} {} +%\DeclareFontSeriesChangeRule {sluc}{m?} {} {} +%\DeclareFontSeriesChangeRule {sluc}{sb} {} {} +%\DeclareFontSeriesChangeRule {sluc}{sc} {} {} +%\DeclareFontSeriesChangeRule {sluc}{sl} {} {} +%\DeclareFontSeriesChangeRule {sluc}{sx} {} {} +%\DeclareFontSeriesChangeRule {sluc}{ub} {} {} +%\DeclareFontSeriesChangeRule {sluc}{uc} {} {} +%\DeclareFontSeriesChangeRule {sluc}{ul} {} {} +%\DeclareFontSeriesChangeRule {sluc}{ux} {} {} +%\DeclareFontSeriesChangeRule {sluc}{x} {} {} +%\DeclareFontSeriesChangeRule {slux}{?m} {} {} +%\DeclareFontSeriesChangeRule {slux}{bx} {} {} +%\DeclareFontSeriesChangeRule {slux}{b} {} {} +%\DeclareFontSeriesChangeRule {slux}{c} {} {} +%\DeclareFontSeriesChangeRule {slux}{eb} {} {} +%\DeclareFontSeriesChangeRule {slux}{ec} {} {} +%\DeclareFontSeriesChangeRule {slux}{el} {} {} +%\DeclareFontSeriesChangeRule {slux}{ex} {} {} +%\DeclareFontSeriesChangeRule {slux}{l} {} {} +%\DeclareFontSeriesChangeRule {slux}{m?} {} {} +%\DeclareFontSeriesChangeRule {slux}{sb} {} {} +%\DeclareFontSeriesChangeRule {slux}{sc} {} {} +%\DeclareFontSeriesChangeRule {slux}{sl} {} {} +%\DeclareFontSeriesChangeRule {slux}{sx} {} {} +%\DeclareFontSeriesChangeRule {slux}{ub} {} {} +%\DeclareFontSeriesChangeRule {slux}{uc} {} {} +%\DeclareFontSeriesChangeRule {slux}{ul} {} {} +%\DeclareFontSeriesChangeRule {slux}{ux} {} {} +%\DeclareFontSeriesChangeRule {slux}{x} {} {} +%\DeclareFontSeriesChangeRule {slx}{bx} {} {} +%\DeclareFontSeriesChangeRule {slx}{b}{bx}{} +%\DeclareFontSeriesChangeRule {slx}{c}{slc}{} +%\DeclareFontSeriesChangeRule {slx}{eb}{ebx}{} +%\DeclareFontSeriesChangeRule {slx}{ec}{slec}{} +%\DeclareFontSeriesChangeRule {slx}{el}{elx}{} +%\DeclareFontSeriesChangeRule {slx}{ex} {} {} +%\DeclareFontSeriesChangeRule {slx}{l}{lx}{} +%\DeclareFontSeriesChangeRule {slx}{sb}{sbx}{} +%\DeclareFontSeriesChangeRule {slx}{sc}{slsc}{} +%\DeclareFontSeriesChangeRule {slx}{sl}{slx}{} +%\DeclareFontSeriesChangeRule {slx}{sx} {} {} +%\DeclareFontSeriesChangeRule {slx}{ub}{ubx}{} +%\DeclareFontSeriesChangeRule {slx}{uc} {} {} +%\DeclareFontSeriesChangeRule {slx}{ul}{ulx}{} +%\DeclareFontSeriesChangeRule {slx}{ux} {} {} +%\DeclareFontSeriesChangeRule {slx}{x}{slx}{} +%\DeclareFontSeriesChangeRule {sl}{bx} {} {} +%\DeclareFontSeriesChangeRule {sl}{c}{slc}{} +%\DeclareFontSeriesChangeRule {sl}{eb} {} {} +%\DeclareFontSeriesChangeRule {sl}{ec}{slec}{} +%\DeclareFontSeriesChangeRule {sl}{ex} {} {} +%\DeclareFontSeriesChangeRule {sl}{sb} {} {} +%\DeclareFontSeriesChangeRule {sl}{sc}{slsc}{} +%\DeclareFontSeriesChangeRule {sl}{sx} {} {} +%\DeclareFontSeriesChangeRule {sl}{ub} {} {} +%\DeclareFontSeriesChangeRule {sl}{uc} {} {} +%\DeclareFontSeriesChangeRule {sl}{ux} {} {} +%\DeclareFontSeriesChangeRule {sl}{x}{slx}{} +%\DeclareFontSeriesChangeRule {sx}{?m} {} {} +%\DeclareFontSeriesChangeRule {sx}{bx} {} {} +%\DeclareFontSeriesChangeRule {sx}{b} {} {} +%\DeclareFontSeriesChangeRule {sx}{eb} {} {} +%\DeclareFontSeriesChangeRule {sx}{el} {} {} +%\DeclareFontSeriesChangeRule {sx}{l} {} {} +%\DeclareFontSeriesChangeRule {sx}{m?} {} {} +%\DeclareFontSeriesChangeRule {sx}{sb} {} {} +%\DeclareFontSeriesChangeRule {sx}{sl} {} {} +%\DeclareFontSeriesChangeRule {sx}{ub} {} {} +%\DeclareFontSeriesChangeRule {sx}{ul} {} {} +%\DeclareFontSeriesChangeRule {ubc}{bx} {} {} +%\DeclareFontSeriesChangeRule {ubc}{b}{bc}{} +%\DeclareFontSeriesChangeRule {ubc}{c}{ubc}{} +%\DeclareFontSeriesChangeRule {ubc}{eb}{ebc}{} +%\DeclareFontSeriesChangeRule {ubc}{ec}{ubec}{} +%\DeclareFontSeriesChangeRule {ubc}{el}{elc}{} +%\DeclareFontSeriesChangeRule {ubc}{ex} {} {} +%\DeclareFontSeriesChangeRule {ubc}{l}{lc}{} +%\DeclareFontSeriesChangeRule {ubc}{sb}{sbc}{} +%\DeclareFontSeriesChangeRule {ubc}{sc}{ubsc}{} +%\DeclareFontSeriesChangeRule {ubc}{sl}{slc}{} +%\DeclareFontSeriesChangeRule {ubc}{sx} {} {} +%\DeclareFontSeriesChangeRule {ubc}{ub}{ubc}{} +%\DeclareFontSeriesChangeRule {ubc}{uc} {} {} +%\DeclareFontSeriesChangeRule {ubc}{ul}{ulc}{} +%\DeclareFontSeriesChangeRule {ubc}{ux} {} {} +%\DeclareFontSeriesChangeRule {ubc}{x}{ubx}{} +%\DeclareFontSeriesChangeRule {ubec}{bx} {} {} +%\DeclareFontSeriesChangeRule {ubec}{b} {} {} +%\DeclareFontSeriesChangeRule {ubec}{c} {} {} +%\DeclareFontSeriesChangeRule {ubec}{eb} {} {} +%\DeclareFontSeriesChangeRule {ubec}{ec} {} {} +%\DeclareFontSeriesChangeRule {ubec}{el} {} {} +%\DeclareFontSeriesChangeRule {ubec}{ex} {} {} +%\DeclareFontSeriesChangeRule {ubec}{l} {} {} +%\DeclareFontSeriesChangeRule {ubec}{sb} {} {} +%\DeclareFontSeriesChangeRule {ubec}{sc} {} {} +%\DeclareFontSeriesChangeRule {ubec}{sl} {} {} +%\DeclareFontSeriesChangeRule {ubec}{sx} {} {} +%\DeclareFontSeriesChangeRule {ubec}{ub} {} {} +%\DeclareFontSeriesChangeRule {ubec}{uc} {} {} +%\DeclareFontSeriesChangeRule {ubec}{ul} {} {} +%\DeclareFontSeriesChangeRule {ubec}{ux} {} {} +%\DeclareFontSeriesChangeRule {ubec}{x} {} {} +%\DeclareFontSeriesChangeRule {ubex}{?m} {} {} +%\DeclareFontSeriesChangeRule {ubex}{bx} {} {} +%\DeclareFontSeriesChangeRule {ubex}{b} {} {} +%\DeclareFontSeriesChangeRule {ubex}{c} {} {} +%\DeclareFontSeriesChangeRule {ubex}{eb} {} {} +%\DeclareFontSeriesChangeRule {ubex}{ec} {} {} +%\DeclareFontSeriesChangeRule {ubex}{el} {} {} +%\DeclareFontSeriesChangeRule {ubex}{ex} {} {} +%\DeclareFontSeriesChangeRule {ubex}{l} {} {} +%\DeclareFontSeriesChangeRule {ubex}{m?} {} {} +%\DeclareFontSeriesChangeRule {ubex}{sb} {} {} +%\DeclareFontSeriesChangeRule {ubex}{sc} {} {} +%\DeclareFontSeriesChangeRule {ubex}{sl} {} {} +%\DeclareFontSeriesChangeRule {ubex}{sx} {} {} +%\DeclareFontSeriesChangeRule {ubex}{ub} {} {} +%\DeclareFontSeriesChangeRule {ubex}{uc} {} {} +%\DeclareFontSeriesChangeRule {ubex}{ul} {} {} +%\DeclareFontSeriesChangeRule {ubex}{ux} {} {} +%\DeclareFontSeriesChangeRule {ubex}{x} {} {} +%\DeclareFontSeriesChangeRule {ubsc}{bx} {} {} +%\DeclareFontSeriesChangeRule {ubsc}{b} {} {} +%\DeclareFontSeriesChangeRule {ubsc}{c} {} {} +%\DeclareFontSeriesChangeRule {ubsc}{eb} {} {} +%\DeclareFontSeriesChangeRule {ubsc}{ec} {} {} +%\DeclareFontSeriesChangeRule {ubsc}{el} {} {} +%\DeclareFontSeriesChangeRule {ubsc}{ex} {} {} +%\DeclareFontSeriesChangeRule {ubsc}{l} {} {} +%\DeclareFontSeriesChangeRule {ubsc}{sb} {} {} +%\DeclareFontSeriesChangeRule {ubsc}{sc} {} {} +%\DeclareFontSeriesChangeRule {ubsc}{sl} {} {} +%\DeclareFontSeriesChangeRule {ubsc}{sx} {} {} +%\DeclareFontSeriesChangeRule {ubsc}{ub} {} {} +%\DeclareFontSeriesChangeRule {ubsc}{uc} {} {} +%\DeclareFontSeriesChangeRule {ubsc}{ul} {} {} +%\DeclareFontSeriesChangeRule {ubsc}{ux} {} {} +%\DeclareFontSeriesChangeRule {ubsc}{x} {} {} +%\DeclareFontSeriesChangeRule {ubsx}{?m} {} {} +%\DeclareFontSeriesChangeRule {ubsx}{bx} {} {} +%\DeclareFontSeriesChangeRule {ubsx}{b} {} {} +%\DeclareFontSeriesChangeRule {ubsx}{c} {} {} +%\DeclareFontSeriesChangeRule {ubsx}{eb} {} {} +%\DeclareFontSeriesChangeRule {ubsx}{ec} {} {} +%\DeclareFontSeriesChangeRule {ubsx}{el} {} {} +%\DeclareFontSeriesChangeRule {ubsx}{ex} {} {} +%\DeclareFontSeriesChangeRule {ubsx}{l} {} {} +%\DeclareFontSeriesChangeRule {ubsx}{m?} {} {} +%\DeclareFontSeriesChangeRule {ubsx}{sb} {} {} +%\DeclareFontSeriesChangeRule {ubsx}{sc} {} {} +%\DeclareFontSeriesChangeRule {ubsx}{sl} {} {} +%\DeclareFontSeriesChangeRule {ubsx}{sx} {} {} +%\DeclareFontSeriesChangeRule {ubsx}{ub} {} {} +%\DeclareFontSeriesChangeRule {ubsx}{uc} {} {} +%\DeclareFontSeriesChangeRule {ubsx}{ul} {} {} +%\DeclareFontSeriesChangeRule {ubsx}{ux} {} {} +%\DeclareFontSeriesChangeRule {ubsx}{x} {} {} +%\DeclareFontSeriesChangeRule {ubuc}{?m} {} {} +%\DeclareFontSeriesChangeRule {ubuc}{bx} {} {} +%\DeclareFontSeriesChangeRule {ubuc}{b} {} {} +%\DeclareFontSeriesChangeRule {ubuc}{c} {} {} +%\DeclareFontSeriesChangeRule {ubuc}{eb} {} {} +%\DeclareFontSeriesChangeRule {ubuc}{ec} {} {} +%\DeclareFontSeriesChangeRule {ubuc}{el} {} {} +%\DeclareFontSeriesChangeRule {ubuc}{ex} {} {} +%\DeclareFontSeriesChangeRule {ubuc}{l} {} {} +%\DeclareFontSeriesChangeRule {ubuc}{m?} {} {} +%\DeclareFontSeriesChangeRule {ubuc}{sb} {} {} +%\DeclareFontSeriesChangeRule {ubuc}{sc} {} {} +%\DeclareFontSeriesChangeRule {ubuc}{sl} {} {} +%\DeclareFontSeriesChangeRule {ubuc}{sx} {} {} +%\DeclareFontSeriesChangeRule {ubuc}{ub} {} {} +%\DeclareFontSeriesChangeRule {ubuc}{uc} {} {} +%\DeclareFontSeriesChangeRule {ubuc}{ul} {} {} +%\DeclareFontSeriesChangeRule {ubuc}{ux} {} {} +%\DeclareFontSeriesChangeRule {ubuc}{x} {} {} +%\DeclareFontSeriesChangeRule {ubux}{?m} {} {} +%\DeclareFontSeriesChangeRule {ubux}{bx} {} {} +%\DeclareFontSeriesChangeRule {ubux}{b} {} {} +%\DeclareFontSeriesChangeRule {ubux}{c} {} {} +%\DeclareFontSeriesChangeRule {ubux}{eb} {} {} +%\DeclareFontSeriesChangeRule {ubux}{ec} {} {} +%\DeclareFontSeriesChangeRule {ubux}{el} {} {} +%\DeclareFontSeriesChangeRule {ubux}{ex} {} {} +%\DeclareFontSeriesChangeRule {ubux}{l} {} {} +%\DeclareFontSeriesChangeRule {ubux}{m?} {} {} +%\DeclareFontSeriesChangeRule {ubux}{sb} {} {} +%\DeclareFontSeriesChangeRule {ubux}{sc} {} {} +%\DeclareFontSeriesChangeRule {ubux}{sl} {} {} +%\DeclareFontSeriesChangeRule {ubux}{sx} {} {} +%\DeclareFontSeriesChangeRule {ubux}{ub} {} {} +%\DeclareFontSeriesChangeRule {ubux}{uc} {} {} +%\DeclareFontSeriesChangeRule {ubux}{ul} {} {} +%\DeclareFontSeriesChangeRule {ubux}{ux} {} {} +%\DeclareFontSeriesChangeRule {ubux}{x} {} {} +%\DeclareFontSeriesChangeRule {ubx}{bx} {} {} +%\DeclareFontSeriesChangeRule {ubx}{b}{bx}{} +%\DeclareFontSeriesChangeRule {ubx}{c}{ubc}{} +%\DeclareFontSeriesChangeRule {ubx}{eb}{ebx}{} +%\DeclareFontSeriesChangeRule {ubx}{ec}{ubec}{} +%\DeclareFontSeriesChangeRule {ubx}{el}{elx}{} +%\DeclareFontSeriesChangeRule {ubx}{ex} {} {} +%\DeclareFontSeriesChangeRule {ubx}{l}{lx}{} +%\DeclareFontSeriesChangeRule {ubx}{sb}{sbx}{} +%\DeclareFontSeriesChangeRule {ubx}{sc}{ubsc}{} +%\DeclareFontSeriesChangeRule {ubx}{sl}{slx}{} +%\DeclareFontSeriesChangeRule {ubx}{sx} {} {} +%\DeclareFontSeriesChangeRule {ubx}{ub}{ubx}{} +%\DeclareFontSeriesChangeRule {ubx}{uc} {} {} +%\DeclareFontSeriesChangeRule {ubx}{ul}{ulx}{} +%\DeclareFontSeriesChangeRule {ubx}{ux} {} {} +%\DeclareFontSeriesChangeRule {ubx}{x}{ubx}{} +%\DeclareFontSeriesChangeRule {ub}{bx} {} {} +%\DeclareFontSeriesChangeRule {ub}{c}{ubc}{} +%\DeclareFontSeriesChangeRule {ub}{eb} {} {} +%\DeclareFontSeriesChangeRule {ub}{ec}{ubec}{} +%\DeclareFontSeriesChangeRule {ub}{ex} {} {} +%\DeclareFontSeriesChangeRule {ub}{sb} {} {} +%\DeclareFontSeriesChangeRule {ub}{sc}{ubsc}{} +%\DeclareFontSeriesChangeRule {ub}{sx} {} {} +%\DeclareFontSeriesChangeRule {ub}{uc} {} {} +%\DeclareFontSeriesChangeRule {ub}{ux} {} {} +%\DeclareFontSeriesChangeRule {ub}{x}{ubx}{} +%\DeclareFontSeriesChangeRule {uc}{?m} {} {} +%\DeclareFontSeriesChangeRule {uc}{bx} {} {} +%\DeclareFontSeriesChangeRule {uc}{b} {} {} +%\DeclareFontSeriesChangeRule {uc}{eb} {} {} +%\DeclareFontSeriesChangeRule {uc}{el} {} {} +%\DeclareFontSeriesChangeRule {uc}{l} {} {} +%\DeclareFontSeriesChangeRule {uc}{m?} {} {} +%\DeclareFontSeriesChangeRule {uc}{sb} {} {} +%\DeclareFontSeriesChangeRule {uc}{sl} {} {} +%\DeclareFontSeriesChangeRule {uc}{ub} {} {} +%\DeclareFontSeriesChangeRule {uc}{ul} {} {} +%\DeclareFontSeriesChangeRule {ulc}{bx} {} {} +%\DeclareFontSeriesChangeRule {ulc}{b}{bc}{} +%\DeclareFontSeriesChangeRule {ulc}{c}{ulc}{} +%\DeclareFontSeriesChangeRule {ulc}{eb}{ebc}{} +%\DeclareFontSeriesChangeRule {ulc}{ec}{ulec}{ulc} +%\DeclareFontSeriesChangeRule {ulc}{el}{elc}{} +%\DeclareFontSeriesChangeRule {ulc}{ex} {} {} +%\DeclareFontSeriesChangeRule {ulc}{l}{lc}{} +%\DeclareFontSeriesChangeRule {ulc}{sb}{sbc}{} +%\DeclareFontSeriesChangeRule {ulc}{sc}{ulsc}{ulc} +%\DeclareFontSeriesChangeRule {ulc}{sl}{slc}{} +%\DeclareFontSeriesChangeRule {ulc}{sx} {} {} +%\DeclareFontSeriesChangeRule {ulc}{ub}{ubc}{} +%\DeclareFontSeriesChangeRule {ulc}{uc} {} {} +%\DeclareFontSeriesChangeRule {ulc}{ul}{ulc}{} +%\DeclareFontSeriesChangeRule {ulc}{ux} {} {} +%\DeclareFontSeriesChangeRule {ulc}{x}{ulx}{} +%\DeclareFontSeriesChangeRule {ulec}{bx} {} {} +%\DeclareFontSeriesChangeRule {ulec}{b} {} {} +%\DeclareFontSeriesChangeRule {ulec}{c} {} {} +%\DeclareFontSeriesChangeRule {ulec}{eb} {} {} +%\DeclareFontSeriesChangeRule {ulec}{ec} {} {} +%\DeclareFontSeriesChangeRule {ulec}{el} {} {} +%\DeclareFontSeriesChangeRule {ulec}{ex} {} {} +%\DeclareFontSeriesChangeRule {ulec}{l} {} {} +%\DeclareFontSeriesChangeRule {ulec}{sb} {} {} +%\DeclareFontSeriesChangeRule {ulec}{sc} {} {} +%\DeclareFontSeriesChangeRule {ulec}{sl} {} {} +%\DeclareFontSeriesChangeRule {ulec}{sx} {} {} +%\DeclareFontSeriesChangeRule {ulec}{ub} {} {} +%\DeclareFontSeriesChangeRule {ulec}{uc} {} {} +%\DeclareFontSeriesChangeRule {ulec}{ul} {} {} +%\DeclareFontSeriesChangeRule {ulec}{ux} {} {} +%\DeclareFontSeriesChangeRule {ulec}{x} {} {} +%\DeclareFontSeriesChangeRule {ulex}{?m} {} {} +%\DeclareFontSeriesChangeRule {ulex}{bx} {} {} +%\DeclareFontSeriesChangeRule {ulex}{b} {} {} +%\DeclareFontSeriesChangeRule {ulex}{c} {} {} +%\DeclareFontSeriesChangeRule {ulex}{eb} {} {} +%\DeclareFontSeriesChangeRule {ulex}{ec} {} {} +%\DeclareFontSeriesChangeRule {ulex}{el} {} {} +%\DeclareFontSeriesChangeRule {ulex}{ex} {} {} +%\DeclareFontSeriesChangeRule {ulex}{l} {} {} +%\DeclareFontSeriesChangeRule {ulex}{m?} {} {} +%\DeclareFontSeriesChangeRule {ulex}{sb} {} {} +%\DeclareFontSeriesChangeRule {ulex}{sc} {} {} +%\DeclareFontSeriesChangeRule {ulex}{sl} {} {} +%\DeclareFontSeriesChangeRule {ulex}{sx} {} {} +%\DeclareFontSeriesChangeRule {ulex}{ub} {} {} +%\DeclareFontSeriesChangeRule {ulex}{uc} {} {} +%\DeclareFontSeriesChangeRule {ulex}{ul} {} {} +%\DeclareFontSeriesChangeRule {ulex}{ux} {} {} +%\DeclareFontSeriesChangeRule {ulex}{x} {} {} +%\DeclareFontSeriesChangeRule {ulsc}{bx} {} {} +%\DeclareFontSeriesChangeRule {ulsc}{b} {} {} +%\DeclareFontSeriesChangeRule {ulsc}{c} {} {} +%\DeclareFontSeriesChangeRule {ulsc}{eb} {} {} +%\DeclareFontSeriesChangeRule {ulsc}{ec} {} {} +%\DeclareFontSeriesChangeRule {ulsc}{el} {} {} +%\DeclareFontSeriesChangeRule {ulsc}{ex} {} {} +%\DeclareFontSeriesChangeRule {ulsc}{l} {} {} +%\DeclareFontSeriesChangeRule {ulsc}{sb} {} {} +%\DeclareFontSeriesChangeRule {ulsc}{sc} {} {} +%\DeclareFontSeriesChangeRule {ulsc}{sl} {} {} +%\DeclareFontSeriesChangeRule {ulsc}{sx} {} {} +%\DeclareFontSeriesChangeRule {ulsc}{ub} {} {} +%\DeclareFontSeriesChangeRule {ulsc}{uc} {} {} +%\DeclareFontSeriesChangeRule {ulsc}{ul} {} {} +%\DeclareFontSeriesChangeRule {ulsc}{ux} {} {} +%\DeclareFontSeriesChangeRule {ulsc}{x} {} {} +%\DeclareFontSeriesChangeRule {ulsx}{?m} {} {} +%\DeclareFontSeriesChangeRule {ulsx}{bx} {} {} +%\DeclareFontSeriesChangeRule {ulsx}{b} {} {} +%\DeclareFontSeriesChangeRule {ulsx}{c} {} {} +%\DeclareFontSeriesChangeRule {ulsx}{eb} {} {} +%\DeclareFontSeriesChangeRule {ulsx}{ec} {} {} +%\DeclareFontSeriesChangeRule {ulsx}{el} {} {} +%\DeclareFontSeriesChangeRule {ulsx}{ex} {} {} +%\DeclareFontSeriesChangeRule {ulsx}{l} {} {} +%\DeclareFontSeriesChangeRule {ulsx}{m?} {} {} +%\DeclareFontSeriesChangeRule {ulsx}{sb} {} {} +%\DeclareFontSeriesChangeRule {ulsx}{sc} {} {} +%\DeclareFontSeriesChangeRule {ulsx}{sl} {} {} +%\DeclareFontSeriesChangeRule {ulsx}{sx} {} {} +%\DeclareFontSeriesChangeRule {ulsx}{ub} {} {} +%\DeclareFontSeriesChangeRule {ulsx}{uc} {} {} +%\DeclareFontSeriesChangeRule {ulsx}{ul} {} {} +%\DeclareFontSeriesChangeRule {ulsx}{ux} {} {} +%\DeclareFontSeriesChangeRule {ulsx}{x} {} {} +%\DeclareFontSeriesChangeRule {uluc}{?m} {} {} +%\DeclareFontSeriesChangeRule {uluc}{bx} {} {} +%\DeclareFontSeriesChangeRule {uluc}{b} {} {} +%\DeclareFontSeriesChangeRule {uluc}{c} {} {} +%\DeclareFontSeriesChangeRule {uluc}{eb} {} {} +%\DeclareFontSeriesChangeRule {uluc}{ec} {} {} +%\DeclareFontSeriesChangeRule {uluc}{el} {} {} +%\DeclareFontSeriesChangeRule {uluc}{ex} {} {} +%\DeclareFontSeriesChangeRule {uluc}{l} {} {} +%\DeclareFontSeriesChangeRule {uluc}{m?} {} {} +%\DeclareFontSeriesChangeRule {uluc}{sb} {} {} +%\DeclareFontSeriesChangeRule {uluc}{sc} {} {} +%\DeclareFontSeriesChangeRule {uluc}{sl} {} {} +%\DeclareFontSeriesChangeRule {uluc}{sx} {} {} +%\DeclareFontSeriesChangeRule {uluc}{ub} {} {} +%\DeclareFontSeriesChangeRule {uluc}{uc} {} {} +%\DeclareFontSeriesChangeRule {uluc}{ul} {} {} +%\DeclareFontSeriesChangeRule {uluc}{ux} {} {} +%\DeclareFontSeriesChangeRule {uluc}{x} {} {} +%\DeclareFontSeriesChangeRule {ulux}{?m} {} {} +%\DeclareFontSeriesChangeRule {ulux}{bx} {} {} +%\DeclareFontSeriesChangeRule {ulux}{b} {} {} +%\DeclareFontSeriesChangeRule {ulux}{c} {} {} +%\DeclareFontSeriesChangeRule {ulux}{eb} {} {} +%\DeclareFontSeriesChangeRule {ulux}{ec} {} {} +%\DeclareFontSeriesChangeRule {ulux}{el} {} {} +%\DeclareFontSeriesChangeRule {ulux}{ex} {} {} +%\DeclareFontSeriesChangeRule {ulux}{l} {} {} +%\DeclareFontSeriesChangeRule {ulux}{m?} {} {} +%\DeclareFontSeriesChangeRule {ulux}{sb} {} {} +%\DeclareFontSeriesChangeRule {ulux}{sc} {} {} +%\DeclareFontSeriesChangeRule {ulux}{sl} {} {} +%\DeclareFontSeriesChangeRule {ulux}{sx} {} {} +%\DeclareFontSeriesChangeRule {ulux}{ub} {} {} +%\DeclareFontSeriesChangeRule {ulux}{uc} {} {} +%\DeclareFontSeriesChangeRule {ulux}{ul} {} {} +%\DeclareFontSeriesChangeRule {ulux}{ux} {} {} +%\DeclareFontSeriesChangeRule {ulux}{x} {} {} +%\DeclareFontSeriesChangeRule {ulx}{bx} {} {} +%\DeclareFontSeriesChangeRule {ulx}{b}{bx}{} +%\DeclareFontSeriesChangeRule {ulx}{c}{ulc}{} +%\DeclareFontSeriesChangeRule {ulx}{eb}{ebx}{} +%\DeclareFontSeriesChangeRule {ulx}{ec}{ulec}{} +%\DeclareFontSeriesChangeRule {ulx}{el}{elx}{} +%\DeclareFontSeriesChangeRule {ulx}{ex} {} {} +%\DeclareFontSeriesChangeRule {ulx}{l}{lx}{} +%\DeclareFontSeriesChangeRule {ulx}{sb}{sbx}{} +%\DeclareFontSeriesChangeRule {ulx}{sc}{ulsc}{} +%\DeclareFontSeriesChangeRule {ulx}{sl}{slx}{} +%\DeclareFontSeriesChangeRule {ulx}{sx} {} {} +%\DeclareFontSeriesChangeRule {ulx}{ub}{ubx}{} +%\DeclareFontSeriesChangeRule {ulx}{uc} {} {} +%\DeclareFontSeriesChangeRule {ulx}{ul}{ulx}{} +%\DeclareFontSeriesChangeRule {ulx}{ux} {} {} +%\DeclareFontSeriesChangeRule {ulx}{x}{ulx}{} +%\DeclareFontSeriesChangeRule {ul}{bx} {} {} +%\DeclareFontSeriesChangeRule {ul}{c}{ulc}{} +%\DeclareFontSeriesChangeRule {ul}{eb} {} {} +%\DeclareFontSeriesChangeRule {ul}{ec}{ulec}{} +%\DeclareFontSeriesChangeRule {ul}{ex} {} {} +%\DeclareFontSeriesChangeRule {ul}{sb} {} {} +%\DeclareFontSeriesChangeRule {ul}{sc}{ulsc}{} +%\DeclareFontSeriesChangeRule {ul}{sx} {} {} +%\DeclareFontSeriesChangeRule {ul}{ub} {} {} +%\DeclareFontSeriesChangeRule {ul}{uc} {} {} +%\DeclareFontSeriesChangeRule {ul}{ux} {} {} +%\DeclareFontSeriesChangeRule {ul}{x}{ulx}{} +%\DeclareFontSeriesChangeRule {ux}{?m} {} {} +%\DeclareFontSeriesChangeRule {ux}{bx} {} {} +%\DeclareFontSeriesChangeRule {ux}{b} {} {} +%\DeclareFontSeriesChangeRule {ux}{eb} {} {} +%\DeclareFontSeriesChangeRule {ux}{el} {} {} +%\DeclareFontSeriesChangeRule {ux}{l} {} {} +%\DeclareFontSeriesChangeRule {ux}{m?} {} {} +%\DeclareFontSeriesChangeRule {ux}{sb} {} {} +%\DeclareFontSeriesChangeRule {ux}{sl} {} {} +%\DeclareFontSeriesChangeRule {ux}{ub} {} {} +%\DeclareFontSeriesChangeRule {ux}{ul} {} {} +%\DeclareFontSeriesChangeRule {x}{bx} {} {} +%\DeclareFontSeriesChangeRule {x}{c}{c}{} +%\DeclareFontSeriesChangeRule {x}{ec}{ec}{} +%\DeclareFontSeriesChangeRule {x}{el}{elx}{} +%\DeclareFontSeriesChangeRule {x}{l}{lx}{} +%\DeclareFontSeriesChangeRule {x}{sc}{sc}{} +%\DeclareFontSeriesChangeRule {x}{sl}{slx}{} +%\DeclareFontSeriesChangeRule {x}{ub}{ubx}{} +%\DeclareFontSeriesChangeRule {x}{ul}{ulx}{} +% %\EndIncludeInRelease +% \end{macrocode} +% +% \begin{macrocode} %\IncludeInRelease{0000/00/00}% % {\DeclareFontSeriesChangeRule}{Series change rules}% % @@ -713,7 +3388,7 @@ % % \begin{macro}{\fontseries} % The \cs{fontseries} command takes one argument which is the requested new -% font series. In the original implementation it simply saved the +% font series. In the original implementation it simply saved the % expanded value in \cs{f@series}. Now we do a bit more processing % and look up the final value in the font series data base. This is % done by \cs{merge@font@series}. But the lookup should be done @@ -1034,7 +3709,7 @@ % changed the default. However that means a) the above test will % definitely fail (maybe something to change) and b) we better use % \cs{edef} on the next line to get rid of it as otherwise the test -% against \verb=#2= (e.g. \cs{bfdef@ult}) will fail in other places. +% against \verb=#2= (e.g., \cs{bfdef@ult}) will fail in other places. % \changes{v1.0e}{2020/05/19}{Need to use \cs{edef} (gh/336)} % \begin{macrocode} \edef#2{#1}% @@ -1096,10 +3771,12 @@ % that is desirable), essentially building in an ``sc'' % axis. % +% \changes{v1.0k}{2024/12/11}{Reorganized the rollback data} +% % \begin{macrocode} %<*2ekernel|latexrelease> %\IncludeInRelease{2020/02/02}% -% {\DeclareFontShapeChangeRule}{Font shape change rules}% +% {\ulcshape}{Font shape change rules}% % \end{macrocode} % % @@ -1175,14 +3852,24 @@ % \begin{macro}{\sscshape} % \begin{macro}{\textssc} % \begin{macro}{\sscdefault} -% New command to select spaced small capitals. This is only here -% because \texttt{fontaxes} offered it. There isn't a single free -% font that supports it. However, some commercial ones do, so we -% offer it so that at some point \texttt{fontaxes} could be -% retired. +% +% New commands to select spaced small capitals. There isn't a +% single free font that supports it. However, some commercial ones +% do, so we offer it. It is also possible to produce spaced small +% capitals from normal small capitals in OTF fonts using +% \texttt{otftotfm} with calls such as +%\begin{verbatim} +% otftotfm -e TEXMF/fonts/enc/dvips/base/texnansx.enc \ +% SourceSerifPro-Regular.otf -fkern -fliga --feature=smcp \ +% --letterspacing=80 SourceSerifPro-Regular-ssc-LY1 +%\end{verbatim} % -% So far there aren't any rules for it---probably there should be -% some putting it in the same category as \texttt{sc}. +% Michael Ummels kindly prepared the necessary rules for +% \texttt{ssc} ages ago, but until recently they managed to hide +% deep down in my inbox. I finally got around to integrating them +% (with a few changes) and I also took the opportunity to +% rationalize (a bit) the rules for the only other uncommon shape, +% \texttt{sw}. % \begin{macrocode} \DeclareRobustCommand\sscshape {\not@math@alphabet\sscshape\relax @@ -1195,26 +3882,75 @@ % \end{macro} % % +% Supporting rollback \ldots +% \begin{macrocode} +% +%\EndIncludeInRelease +%\IncludeInRelease{0000/00/00}% +% {\ulcshape}{Font shape change rules}% +% +%\let\DeclareFontShapeChangeRule\@undefined +%\let\ulcshape\@undefined +%\let\ulcdefault\@undefined +%\let\swshape\@undefined +%\let\swdefault\@undefined +%\let\sscshape\@undefined +%\let\sscdefault\@undefined +% +%\EndIncludeInRelease +%<*2ekernel> +% \end{macrocode} +% % % \subsection{Mapping rules for shape combinations} % % Many of the entries are commented out as we will get that result % without any entry. % \begin{macrocode} -%\DeclareFontShapeChangeRule {n}{n} {n} {} +% +%<*2ekernel|latexrelease> +%\IncludeInRelease{2025/06/01}% +% {\DeclareFontShapeChangeRule}{Rules for ssc and sw}% +% +% \DeclareFontShapeChangeRule {n}{n} {n} {} \DeclareFontShapeChangeRule {n}{it} {it} {sl} \DeclareFontShapeChangeRule {n}{sl} {sl} {it} -%\DeclareFontShapeChangeRule {n}{sw} {sw} {} -%\DeclareFontShapeChangeRule {n}{sc} {sc} {} +% \end{macrocode} +% If \texttt{sw} is requested but not available (not many font +% families offer it) we try to fallback to \texttt{it} instead of +% \texttt{sw}. That isn't always perfect, because some swash shapes +% are actually upright, but it is only a fallback and most of the +% time it would be better than \texttt{n}. +% \changes{v1.0k}{2024/12/11}{Rationalize \texttt{sw} shape change +% rules (gh/1581)} +% \begin{macrocode} +\DeclareFontShapeChangeRule {n}{sw} {sw} {it} +% \DeclareFontShapeChangeRule {n}{sc} {sc} {} \DeclareFontShapeChangeRule {n}{ulc} {n} {} -\DeclareFontShapeChangeRule {n}{up} {n} {} +\DeclareFontShapeChangeRule {n}{up} {n} {} +% \end{macrocode} +% For the \texttt{ssc} shape we make the following general +% assumptions: if \texttt{ssc}\meta{X} exists then +% \texttt{sc}\meta{X} and \meta{X} also exist in the font. If the +% \texttt{ssc}\meta{X} shape doesn't exist but the user had asked +% for \texttt{ssc} we try to replace it by \texttt{sc} because we +% then assume that the current font family simply doesn't have any +% \texttt{ssc} shapes. However, if we are already in some +% \texttt{ssc} shape and a shape change is requested we know that at +% least some \texttt{ssc} shapes exist for the current font family, +% so rather than falling back to some \texttt{sc} shape we try to stay +% within \texttt{ssc} shapes in a fallback situation. +% \changes{v1.0k}{2024/12/11}{Add \texttt{ssc} shape change +% rules (gh/1581)} +% \begin{macrocode} +\DeclareFontShapeChangeRule {n}{ssc} {ssc} {sc} % \end{macrocode} % % \begin{macrocode} -%\DeclareFontShapeChangeRule {it}{n} {n} {} -%\DeclareFontShapeChangeRule {it}{it} {it} {} +% \DeclareFontShapeChangeRule {it}{n} {n} {} +% \DeclareFontShapeChangeRule {it}{it} {it} {} \DeclareFontShapeChangeRule {it}{sl} {sl} {it} -%\DeclareFontShapeChangeRule {it}{sw} {sw} {} +\DeclareFontShapeChangeRule {it}{sw} {sw} {it} % \end{macrocode} % If neither \texttt{scit} nor \texttt{scsl} exist then \texttt{sc} % will be used as a fallback albeit with a log entry, so except for @@ -1222,32 +3958,35 @@ % \begin{macrocode} \DeclareFontShapeChangeRule {it}{sc} {scit} {scsl} \DeclareFontShapeChangeRule {it}{ulc} {it} {} -\DeclareFontShapeChangeRule {it}{up} {n} {} +\DeclareFontShapeChangeRule {it}{up} {n} {} +\DeclareFontShapeChangeRule {it}{ssc} {sscit} {scit} % \end{macrocode} % % \begin{macrocode} -%\DeclareFontShapeChangeRule {sl}{n} {n} {} +% \DeclareFontShapeChangeRule {sl}{n} {n} {} \DeclareFontShapeChangeRule {sl}{it} {it} {sl} -%\DeclareFontShapeChangeRule {sl}{sl} {sl} {} -%\DeclareFontShapeChangeRule {sl}{sw} {sw} {} +% \DeclareFontShapeChangeRule {sl}{sl} {sl} {} +\DeclareFontShapeChangeRule {sl}{sw} {sw} {it} \DeclareFontShapeChangeRule {sl}{sc} {scsl} {scit} \DeclareFontShapeChangeRule {sl}{ulc} {sl} {} -\DeclareFontShapeChangeRule {sl}{up} {n} {} +\DeclareFontShapeChangeRule {sl}{up} {n} {} +\DeclareFontShapeChangeRule {sl}{ssc} {sscsl} {scsl} % \end{macrocode} % % \begin{macrocode} -%\DeclareFontShapeChangeRule {sc}{n} {n} {} +% \DeclareFontShapeChangeRule {sc}{n} {n} {} \DeclareFontShapeChangeRule {sc}{it} {scit} {scsl} \DeclareFontShapeChangeRule {sc}{sl} {scsl} {scit} -\DeclareFontShapeChangeRule {sc}{sw} {scsw} {sw} -%\DeclareFontShapeChangeRule {sc}{sc} {sc} {} -\DeclareFontShapeChangeRule {sc}{ulc} {n} {} +\DeclareFontShapeChangeRule {sc}{sw} {scsw} {scit} +% \DeclareFontShapeChangeRule {sc}{sc} {sc} {} +\DeclareFontShapeChangeRule {sc}{ulc} {n} {} % \end{macrocode} % -% The next rule might be a bit surprising and rightly so. Correct -% would be that \texttt{sc} is not affected by \texttt{up}, i.e., -% remains \texttt{sc} as showed in the commented out rule. However, -% for nearly three decades commands such as \cs{sc} or +% The next rule might be a bit surprising, and rightly so. +% It would be more correct if \texttt{sc} +% were not affected by \texttt{up}, so that it +% remains \texttt{sc} as shown in the commented out rule. However, +% for nearly three decades commands such as \cs{upshape} or % \cs{textup} changed small caps back to the ``normal'' shape. So % for backward compatibility we keep that behavior. % @@ -1260,77 +3999,220 @@ % compatible with the way \texttt{fontspec} behaved. Still it % remains an oddity which I would rather liked to have avoided. % \begin{macrocode} -%\DeclareFontShapeChangeRule {sc}{up} {sc} {} +% \DeclareFontShapeChangeRule {sc}{up} {sc} {} \DeclareFontShapeChangeRule {sc}{up} {n} {} +% \DeclareFontShapeChangeRule {sc}{ssc} {ssc} {} % \end{macrocode} % % \begin{macrocode} -%\DeclareFontShapeChangeRule {scit}{n} {n} {} +% \DeclareFontShapeChangeRule {scit}{n} {n} {} \DeclareFontShapeChangeRule {scit}{it} {scit} {} \DeclareFontShapeChangeRule {scit}{sl} {scsl} {scit} -\DeclareFontShapeChangeRule {scit}{sw} {scsw} {sc} % or scit? +\DeclareFontShapeChangeRule {scit}{sw} {scsw} {scit} \DeclareFontShapeChangeRule {scit}{sc} {scit} {} \DeclareFontShapeChangeRule {scit}{ulc} {it} {} -\DeclareFontShapeChangeRule {scit}{up} {sc} {} % \end{macrocode} -% The previous rule assumes that if \texttt{scit} exists then +% The next rule assumes that if \texttt{scit} exists then % \texttt{it} exists as well. If not, the mechanism will save -% \texttt{ulc} in \cs{f@series} which most certainly doesn't +% \texttt{ulc} in \cs{f@series}, which most certainly doesn't % exist. So when a font is later selected that would result in a % substitution (so no harm done really). Alternatively, we could in % this case use \texttt{n} as alternative, which may be a bit % faster, but such a setup would be so weird in the first place % that this isn't worth the effort. -% % \begin{macrocode} -%\DeclareFontShapeChangeRule {scsl}{n} {n} {} +\DeclareFontShapeChangeRule {scit}{up} {sc} {} +\DeclareFontShapeChangeRule {scit}{ssc} {sscit} {scit} +% \end{macrocode} +% +% \begin{macrocode} +% \DeclareFontShapeChangeRule {scsl}{n} {n} {} \DeclareFontShapeChangeRule {scsl}{it} {scit} {scsl} \DeclareFontShapeChangeRule {scsl}{sl} {scsl} {} -\DeclareFontShapeChangeRule {scsl}{sw} {scsw} {sc} % or scsl? +\DeclareFontShapeChangeRule {scsl}{sw} {scsw} {scsl} \DeclareFontShapeChangeRule {scsl}{sc} {scsl} {} \DeclareFontShapeChangeRule {scsl}{ulc} {sl} {} -\DeclareFontShapeChangeRule {scsl}{up} {sc} {} +\DeclareFontShapeChangeRule {scsl}{up} {sc} {} +\DeclareFontShapeChangeRule {scsl}{ssc} {sscsl} {scsl} % \end{macrocode} % % \begin{macrocode} -%\DeclareFontShapeChangeRule {scsw}{n} {n} {} +% \DeclareFontShapeChangeRule {scsw}{n} {n} {} \DeclareFontShapeChangeRule {scsw}{it} {scit} {scsw} \DeclareFontShapeChangeRule {scsw}{sl} {scsl} {} \DeclareFontShapeChangeRule {scsw}{sw} {scsw} {} \DeclareFontShapeChangeRule {scsw}{sc} {scsw} {} \DeclareFontShapeChangeRule {scsw}{ulc} {sw} {} -\DeclareFontShapeChangeRule {scsw}{up} {sc} {} +\DeclareFontShapeChangeRule {scsw}{up} {sc} {} +\DeclareFontShapeChangeRule {scsw}{ssc} {sscsw} {scsw} % \end{macrocode} % % \begin{macrocode} -%\DeclareFontShapeChangeRule {sw}{n} {n} {} -%\DeclareFontShapeChangeRule {sw}{it} {it} {} -%\DeclareFontShapeChangeRule {sw}{sl} {sl} {} -%\DeclareFontShapeChangeRule {sw}{sw} {sw} {} -\DeclareFontShapeChangeRule {sw}{sc} {scsw} {} +% \DeclareFontShapeChangeRule {sw}{n} {n} {} +% \DeclareFontShapeChangeRule {sw}{it} {it} {} +% \DeclareFontShapeChangeRule {sw}{sl} {sl} {} +% \DeclareFontShapeChangeRule {sw}{sw} {sw} {} +\DeclareFontShapeChangeRule {sw}{sc} {scsw} {scit} \DeclareFontShapeChangeRule {sw}{ulc} {sw} {} -\DeclareFontShapeChangeRule {sw}{up} {n} {} +\DeclareFontShapeChangeRule {sw}{up} {n} {} +\DeclareFontShapeChangeRule {sw}{ssc} {sscsw} {scsw} +% \end{macrocode} +% +% \begin{macrocode} +% \DeclareFontShapeChangeRule {ssc}{n} {n} {} +\DeclareFontShapeChangeRule {ssc}{it} {sscit} {sscsl} +\DeclareFontShapeChangeRule {ssc}{sl} {sscsl} {sscit} +\DeclareFontShapeChangeRule {ssc}{sw} {sscsw} {sscit} +\DeclareFontShapeChangeRule {ssc}{sc} {sc} {} +% \DeclareFontShapeChangeRule {ssc}{ssc} {ssc} {} +\DeclareFontShapeChangeRule {ssc}{ulc} {n} {} +% \end{macrocode} +% We implement the same logic as for \texttt{sc}, see above. The +% \texttt{ssc} shape doesn't have to care about 30 years of history, +% but it would be surprising if \cs{sscshape}\cs{upshape} did not +% work like \cs{scshape}\cs{upshape}. +% \begin{macrocode} +% \DeclareFontShapeChangeRule {ssc}{up} {ssc} {} +\DeclareFontShapeChangeRule {ssc}{up} {n} {} +% \end{macrocode} +% +% \begin{macrocode} +% \DeclareFontShapeChangeRule {sscit}{n} {n} {} +\DeclareFontShapeChangeRule {sscit}{it} {sscit} {} +\DeclareFontShapeChangeRule {sscit}{sl} {sscsl} {sscit} +\DeclareFontShapeChangeRule {sscit}{sw} {sscsw} {sscit} +\DeclareFontShapeChangeRule {sscit}{ssc} {sscit} {} +\DeclareFontShapeChangeRule {sscit}{sc} {scit} {} +\DeclareFontShapeChangeRule {sscit}{ulc} {it} {} +\DeclareFontShapeChangeRule {sscit}{up} {ssc} {} % \end{macrocode} % -% Supporting rollback \ldots % \begin{macrocode} +% \DeclareFontShapeChangeRule {sscsl}{n} {n} {} +\DeclareFontShapeChangeRule {sscsl}{it} {sscit} {sscsl} +\DeclareFontShapeChangeRule {sscsl}{sl} {sscsl} {} +\DeclareFontShapeChangeRule {sscsl}{sw} {sscsw} {sscit} +\DeclareFontShapeChangeRule {sscsl}{sc} {scsl} {} +\DeclareFontShapeChangeRule {sscsl}{ulc} {sl} {} +\DeclareFontShapeChangeRule {sscsl}{up} {ssc} {} +% \end{macrocode} +% +% \begin{macrocode} +% \DeclareFontShapeChangeRule {sscsw}{n} {n} {} +\DeclareFontShapeChangeRule {sscsw}{it} {sscit} {sscsl} +\DeclareFontShapeChangeRule {sscsw}{sl} {sscsl} {sscit} +\DeclareFontShapeChangeRule {sscsw}{sw} {sscsw} {} +\DeclareFontShapeChangeRule {sscsw}{ssc} {sscsw} {} +\DeclareFontShapeChangeRule {sscsw}{sc} {scsw} {scit} +\DeclareFontShapeChangeRule {sscsw}{ulc} {sw} {it} +\DeclareFontShapeChangeRule {sscsw}{up} {ssc} {} % %\EndIncludeInRelease -%\IncludeInRelease{0000/00/00}% -% {\DeclareFontShapeChangeRule}{Font shape change rules}% +% \end{macrocode} +% +% \begin{macrocode} +%\IncludeInRelease{2020/02/02}% +% {\DeclareFontShapeChangeRule}{Rules for ssc and sw}% % -%\let\DeclareFontShapeChangeRule\@undefined -%\let\ulcshape\@undefined -%\let\ulcdefault\@undefined -%\let\swshape\@undefined -%\let\swdefault\@undefined -%\let\sscshape\@undefined -%\let\sscdefault\@undefined +%\DeclareFontShapeChangeRule {n}{it} {it} {sl} +%\DeclareFontShapeChangeRule {n}{sl} {sl} {it} +%\DeclareFontShapeChangeRule {n}{ulc} {n} {} +%\DeclareFontShapeChangeRule {n}{up} {n} {} +%\DeclareFontShapeChangeRule {it}{sl} {sl} {it} +%\DeclareFontShapeChangeRule {it}{sc} {scit} {scsl} +%\DeclareFontShapeChangeRule {it}{ulc} {it} {} +%\DeclareFontShapeChangeRule {it}{up} {n} {} +%\DeclareFontShapeChangeRule {sl}{it} {it} {sl} +%\DeclareFontShapeChangeRule {sl}{sc} {scsl} {scit} +%\DeclareFontShapeChangeRule {sl}{ulc} {sl} {} +%\DeclareFontShapeChangeRule {sl}{up} {n} {} +%\DeclareFontShapeChangeRule {sc}{it} {scit} {scsl} +%\DeclareFontShapeChangeRule {sc}{sl} {scsl} {scit} +%\DeclareFontShapeChangeRule {sc}{sw} {scsw} {sw} +%\DeclareFontShapeChangeRule {sc}{ulc} {n} {} +%\DeclareFontShapeChangeRule {sc}{up} {n} {} +%\DeclareFontShapeChangeRule {scit}{it} {scit} {} +%\DeclareFontShapeChangeRule {scit}{sl} {scsl} {scit} +%\DeclareFontShapeChangeRule {scit}{sw} {scsw} {sc} % or scit? +%\DeclareFontShapeChangeRule {scit}{sc} {scit} {} +%\DeclareFontShapeChangeRule {scit}{ulc} {it} {} +%\DeclareFontShapeChangeRule {scit}{up} {sc} {} +%\DeclareFontShapeChangeRule {scsl}{it} {scit} {scsl} +%\DeclareFontShapeChangeRule {scsl}{sl} {scsl} {} +%\DeclareFontShapeChangeRule {scsl}{sw} {scsw} {sc} % or scsl? +%\DeclareFontShapeChangeRule {scsl}{sc} {scsl} {} +%\DeclareFontShapeChangeRule {scsl}{ulc} {sl} {} +%\DeclareFontShapeChangeRule {scsl}{up} {sc} {} +%\DeclareFontShapeChangeRule {scsw}{it} {scit} {scsw} +%\DeclareFontShapeChangeRule {scsw}{sl} {scsl} {} +%\DeclareFontShapeChangeRule {scsw}{sw} {scsw} {} +%\DeclareFontShapeChangeRule {scsw}{sc} {scsw} {} +%\DeclareFontShapeChangeRule {scsw}{ulc} {sw} {} +%\DeclareFontShapeChangeRule {scsw}{up} {sc} {} +%\DeclareFontShapeChangeRule {sw}{sc} {scsw} {} +%\DeclareFontShapeChangeRule {sw}{ulc} {sw} {} +%\DeclareFontShapeChangeRule {sw}{up} {n} {} +% +% \end{macrocode} +% In 2022-02-02 the \texttt{ssc} shape had no rules, so +% that any use of it would have resulted in just switching to +% that shape or switching away from it; so we mimic that by +% providing the corresponding trivial rules to overrule those +% from above when we roll back. +% \begin{macrocode} +%\DeclareFontShapeChangeRule {n}{ssc} {ssc} {} +%\DeclareFontShapeChangeRule {it}{ssc} {ssc} {} +%\DeclareFontShapeChangeRule {sl}{ssc} {ssc} {} +%\DeclareFontShapeChangeRule {sw}{ssc} {ssc} {} +% +%\DeclareFontShapeChangeRule {scit}{ssc}{ssc} {} +%\DeclareFontShapeChangeRule {scsl}{ssc}{ssc} {} +%\DeclareFontShapeChangeRule {scsw}{ssc}{ssc} {} % +%\DeclareFontShapeChangeRule {ssc}{it} {it} {} +%\DeclareFontShapeChangeRule {ssc}{sl} {sl} {} +%\DeclareFontShapeChangeRule {ssc}{sw} {sw} {} +%\DeclareFontShapeChangeRule {ssc}{sc} {sc} {} +%\DeclareFontShapeChangeRule {ssc}{ulc} {n} {} +%\DeclareFontShapeChangeRule {ssc}{up} {n} {} +% +%\DeclareFontShapeChangeRule {sscit}{it} {it} {} +%\DeclareFontShapeChangeRule {sscit}{sl} {sl} {} +%\DeclareFontShapeChangeRule {sscit}{sw} {sw} {} +%\DeclareFontShapeChangeRule {sscit}{ssc} {ssc}{} +%\DeclareFontShapeChangeRule {sscit}{sc} {sc} {} +%\DeclareFontShapeChangeRule {sscit}{ulc} {n} {} +%\DeclareFontShapeChangeRule {sscit}{up} {ssc}{} +% +%\DeclareFontShapeChangeRule {sscsl}{it} {it} {} +%\DeclareFontShapeChangeRule {sscsl}{sl} {sl} {} +%\DeclareFontShapeChangeRule {sscsl}{sw} {sw} {} +%\DeclareFontShapeChangeRule {sscsl}{sc} {sc} {} +%\DeclareFontShapeChangeRule {sscsl}{ulc} {n} {} +%\DeclareFontShapeChangeRule {sscsl}{up} {ssc}{} +% +%\DeclareFontShapeChangeRule {sscsw}{it} {it} {} +%\DeclareFontShapeChangeRule {sscsw}{sl} {sl} {} +%\DeclareFontShapeChangeRule {sscsw}{sw} {sw} {} +%\DeclareFontShapeChangeRule {sscsw}{ssc} {ssc}{} +%\DeclareFontShapeChangeRule {sscsw}{sc} {sc} {} +%\DeclareFontShapeChangeRule {sscsw}{ulc} {n} {} +%\DeclareFontShapeChangeRule {sscsw}{up} {ssc}{} +%\EndIncludeInRelease +% \end{macrocode} +% Before 2020-02-02 we don't really care about any existing shape +% change rules since the mechanism isn't used. +% \begin{macrocode} +%\IncludeInRelease{0000/00/00}% +% {\DeclareFontShapeChangeRule}{Rules for ssc and sw}% %\EndIncludeInRelease % \end{macrocode} % % + + + + % \subsection{Changing to a new shape} % % diff --git a/Master/texmf-dist/source/latex-dev/base/ltfssbas.dtx b/Master/texmf-dist/source/latex-dev/base/ltfssbas.dtx index 4e376d3761a..53638235fb3 100644 --- a/Master/texmf-dist/source/latex-dev/base/ltfssbas.dtx +++ b/Master/texmf-dist/source/latex-dev/base/ltfssbas.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2024 +% Copyright (C) 1993-2025 % The LaTeX Project and any individual authors listed elsewhere % in this file. % @@ -35,7 +35,7 @@ % % \ProvidesFile{ltfssbas.dtx} - [2024/11/19 v3.2n LaTeX Kernel (NFSS Basic Macros)] + [2025/02/20 v3.2p LaTeX Kernel (NFSS Basic Macros)] % \iffalse \documentclass{ltxdoc} \begin{document} @@ -705,8 +705,25 @@ % For usage examples see definitions in \texttt{lttextcomp.dtx}. % % \begin{macrocode} +% +%<*2ekernel|latexrelease> +%\IncludeInRelease{2025/06/01}% +% {\CheckEncodingSubset}{preload .fd file}% +% \end{macrocode} +% +% \begin{macrocode} \def\CheckEncodingSubset#1#2#3#4#5{% - \ifnum #4>% +% \end{macrocode} +% If the \texttt{.fd} is not yet loaded we make an attempt to load +% it now because it may contain a \cs{DeclareEncodingSubset} +% declaration for the font. +% \changes{v3.2p}{2025/02/20}{If necessary, load the \texttt{.fd} +% before checking the encoding subset (gh/1669)} +% \begin{macrocode} + \expandafter\ifx\csname #2:\f@family\endcsname\relax + \LoadFontDefinitionFile{#2}\f@family + \fi + \ifnum #4>% \expandafter\ifx\csname #2:\f@family\endcsname\relax 0\csname #2:?\endcsname \else @@ -720,6 +737,28 @@ {#1{#2}}{#3}% #5% } +% +%\EndIncludeInRelease +%\IncludeInRelease{0000/00/00}% +% {\CheckEncodingSubset}{preload .fd file}% +% +%\def\CheckEncodingSubset#1#2#3#4#5{% +% \ifnum #4>% +% \expandafter\ifx\csname #2:\f@family\endcsname\relax +% 0\csname #2:?\endcsname +% \else +% \csname #2:\f@family\endcsname +% \fi +% \relax +% \expandafter\@firstoftwo +% \else +% \expandafter\@secondoftwo +% \fi +% {#1{#2}}{#3}% +% #5% +%} +%\EndIncludeInRelease +%<*2ekernel> % \end{macrocode} % \end{macro} % @@ -1184,18 +1223,28 @@ % \changes{v1.2g}{1990/02/16}{\cs{@nomath} added.} % \changes{v2.1a}{1994/01/17}{New math font setup} % \changes{v3.2l}{2023/04/01}{Reset frozen mathversion gh/1028} +% \changes{v3.2o}{2024/11/30}{New appoach to +% \texttt{localmathalphabets} (gh/1101)} % \begin{macrocode} \DeclareRobustCommand\mathversion[1] {\@nomath\mathversion \expandafter\ifx\csname mv@#1\endcsname\relax \@latex@error{Math version `#1' is not defined}\@eha\else % \end{macrocode} -% If there has been a frozen math version reset locally. See GH 1028. -% \begin{macrocode} - \ifcsname mv@\math@version @frozen\endcsname - \expandafter\let - \csname mv@\math@version @frozen\expandafter\endcsname - \csname mv@\math@version\endcsname +% If there has been a frozen math version reset unconditionally to +% it if we are at \cs{@math@level} one, so that in the typical case +% of one bold symbol within the normal version this doesn't +% allocate an additional math alphabet. +% If the nesting is deeper we do nothing, which means +% alphabet allocations accumulate until the end of the formula. One +% could do slightly better but that would mean keeping track of the +% allocations on all levels severately and this is likely to be +% overkill in nearly all situations. +% \begin{macrocode} + \ifcsname mv@#1@frozen\endcsname + \ifnum \@math@level = \@ne + \unconditionally@reset@math@version {#1}% + \fi \fi % \end{macrocode} % \begin{macrocode} @@ -1220,6 +1269,21 @@ \aftergroup\glb@settings \fi} % \end{macrocode} +% +% Reseting the math version unconditionally means that we have to +% copy the frozen version to \verb=\mv@#1= and also reset the +% counter \verb=\c@mv@#1= to the number of math alphabets allocated +% in the frozen version. +% \changes{v3.2o}{2024/11/30}{New appoach to +% \texttt{localmathalphabets} (gh/1101)} +% \begin{macrocode} +\ExplSyntaxOn +\cs_new_protected:Npn \unconditionally@reset@math@version #1 { + \cs_gset_eq:cc { mv@#1 }{ mv@#1@frozen } + \int_gset:cn { c@mv@#1 }{ \tl_use:c {g__nfss_frozen_mv_ #1 _tl} } +} +\ExplSyntaxOff +% \end{macrocode} % \end{macro} % \end{macro} % @@ -1273,6 +1337,14 @@ % % +% \begin{macro}{\@math@level} +% This counter records the nesting level of math within math. +% \changes{v3.2o}{2024/11/30}{New appoach to +% \texttt{localmathalphabets} (gh/1101)} +% \begin{macrocode} +\newcount\@math@level +% \end{macrocode} +% \end{macro} % % \begin{macro}{\frozen@everydisplay} % \changes{v2.1a}{1994/01/17}{New math font setup} @@ -1291,6 +1363,8 @@ % \changes{v3.2k}{2022/07/04}{Ignore spaces if necessary (gh/886)} % The issue with handling of spaces was found in 2022, but it is % really a bug fix for the code added in 2021/11. +% \changes{v3.2o}{2024/11/30}{New appoach to +% \texttt{localmathalphabets} (gh/1101)} % \begin{macrocode} % %\IncludeInRelease{2021/11/15} @@ -1298,10 +1372,17 @@ %<*2ekernel|latexrelease> \frozen@everydisplay = {% \aftergroup\@ignoretrue \aftergroup\ignorespaces +% \end{macrocode} +% Record that we entered another math level. +% \changes{v3.2o}{2024/11/30}{New appoach to +% \texttt{localmathalphabets} (gh/1101)} +% \begin{macrocode} + \advance\@math@level\@ne \check@mathfonts \the\everydisplay} % \end{macrocode} % \end{macro} +% % \begin{macro}{\frozen@everymath} @@ -1312,6 +1393,12 @@ % \begin{macrocode} \frozen@everymath = {% \aftergroup\@ignorefalse +% \end{macrocode} +% Record that we entered another math level. +% \changes{v3.2o}{2024/11/30}{New appoach to +% \texttt{localmathalphabets} (gh/1101)} +% \begin{macrocode} + \advance\@math@level\@ne \check@mathfonts \the\everymath} % \end{macrocode} diff --git a/Master/texmf-dist/source/latex-dev/base/ltfsscmp.dtx b/Master/texmf-dist/source/latex-dev/base/ltfsscmp.dtx index 57c94ea6889..893172d95a9 100644 --- a/Master/texmf-dist/source/latex-dev/base/ltfsscmp.dtx +++ b/Master/texmf-dist/source/latex-dev/base/ltfsscmp.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2024 +% Copyright (C) 1993-2025 % The LaTeX Project and any individual authors listed elsewhere % in this file. % diff --git a/Master/texmf-dist/source/latex-dev/base/ltfssdcl.dtx b/Master/texmf-dist/source/latex-dev/base/ltfssdcl.dtx index c88fe6e1b8d..15d6cb3acdf 100644 --- a/Master/texmf-dist/source/latex-dev/base/ltfssdcl.dtx +++ b/Master/texmf-dist/source/latex-dev/base/ltfssdcl.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2024 +% Copyright (C) 1993-2025 % The LaTeX Project and any individual authors listed elsewhere % in this file. % @@ -36,7 +36,7 @@ % % \ProvidesFile{ltfssdcl.dtx} - [2024/11/19 v3.1c LaTeX Kernel (NFSS Declarative Interface)] + [2024/11/27 v3.1d LaTeX Kernel (NFSS Declarative Interface)] % \iffalse \documentclass{ltxdoc} \begin{document} @@ -714,33 +714,67 @@ % \begin{macrocode} \cs_gset:cpn{mv@#1@reset} { +% \end{macrocode} +% If we are back at top-level, or more precisely outside of any +% (nested) math, we may have to reset the math version back to its +% frozen version, if that exists and has fewer alphabets allocated. +% \changes{v3.1d}{2024/11/27}{Reset math version if necessary (gh/1101 and gh/1028)} +% \begin{macrocode} + \int_compare:nNnTF \@math@level = 0 + { \int_compare:nNnTF { \int_use:c{c@mv@#1} } > { \tl_use:c{g__nfss_frozen_mv_ #1 _tl} } { - \@font@info{Undo~ math~ alphabet~ allocation~ in~ version~ #1} + \@font@info{ Undo~ math~ alphabet~ allocation~ in~ version~ #1 } % \end{macrocode} % If the undo is necessary, we restore the \cs{mv@\meta{version}} code. % \begin{macrocode} \cs_gset_eq:cc { mv@#1 }{ mv@#1@frozen } \int_gset:cn { c@mv@#1 }{ \tl_use:c {g__nfss_frozen_mv_ #1 _tl} } % \end{macrocode} -% But we also should undo changes to the math alphabet +% But we also should undo changes to the top-level math alphabet % definitions. We therefore run this code with a modified % definition for \cs{getanddefine@fonts} because there is no need % to do anything to the symbol fonts that are permanently allocated. -% \begin{macrocode} - \group_begin: - \cs_set_eq:NN \getanddefine@fonts \use_none:nn - \use:c {mv@#1} - \group_end: +% However, we do this only if the resetting was for the current +% math version, because otherwise we would give the top-level +% definitions the values for the last math version being resetted +% (e.g., bold if there are just two). +% \changes{v3.1d}{2024/11/27}{Reset top-level alphabet definitions +% only for the current math version (gh/1101 and gh/1028)} +% \begin{macrocode} + \tl_if_eq:NnTF \math@version {#1} + { + \group_begin: + \cs_set_eq:NN \getanddefine@fonts \use_none:nn + \use:c {mv@ \math@version } + \group_end: + } + { +% \end{macrocode} +% Once we have hit the boundary and have to revert to the frozen +% version that happens quite often, but typically only for the +% normal version. Thus, it is better to report only when we do not +% revert the top-level definition as this is the exceptional case +% and happens only if several math versions are used in parallel. +% \begin{macrocode} + \@font@info{ ...~ but~ do~ not~ reset~ the~ + top-level~ math~ alphabet~ definitions } + } } { % \end{macrocode} % If there was no change, we report that in the log (but this % branch could go completely). % \begin{macrocode} - \@font@info{No~ math~ alphabet~ change~ to~ frozen~ version~ #1} + \@font@info{ No~ math~ alphabet~ change~ + to~ frozen~ version~ #1 } } + } + { + \@font@info{ Nested~ math:~ keeping~ math~ alphabet~ + allocation~ in~ version~ #1} + } % \end{macrocode} % If this is executed after a math display, we may have to arrange % for ignoring spaces, because they are now hidden if diff --git a/Master/texmf-dist/source/latex-dev/base/ltfssini.dtx b/Master/texmf-dist/source/latex-dev/base/ltfssini.dtx index 79e8546915e..7df7484301d 100644 --- a/Master/texmf-dist/source/latex-dev/base/ltfssini.dtx +++ b/Master/texmf-dist/source/latex-dev/base/ltfssini.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2024 +% Copyright (C) 1993-2025 % The LaTeX Project and any individual authors listed elsewhere % in this file. % diff --git a/Master/texmf-dist/source/latex-dev/base/ltfsstrc.dtx b/Master/texmf-dist/source/latex-dev/base/ltfsstrc.dtx index 6ce92f61687..9b91383e75c 100644 --- a/Master/texmf-dist/source/latex-dev/base/ltfsstrc.dtx +++ b/Master/texmf-dist/source/latex-dev/base/ltfsstrc.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2024 +% Copyright (C) 1993-2025 % The LaTeX Project and any individual authors listed elsewhere % in this file. % diff --git a/Master/texmf-dist/source/latex-dev/base/lthooks.dtx b/Master/texmf-dist/source/latex-dev/base/lthooks.dtx index 0c33c022e3b..df43dbd84b6 100644 --- a/Master/texmf-dist/source/latex-dev/base/lthooks.dtx +++ b/Master/texmf-dist/source/latex-dev/base/lthooks.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 2020-2024 +% Copyright (C) 2020-2025 % Frank Mittelbach, Phelype Oleinik, The LaTeX Project % % This file is part of the LaTeX base system. @@ -32,7 +32,7 @@ %<*driver> % \fi \ProvidesFile{lthooks.dtx} - [2024/10/29 v1.1k LaTeX Kernel (hooks)] + [2025/02/05 v1.1l LaTeX Kernel (hooks)] % \iffalse % \documentclass{l3doc} @@ -76,7 +76,7 @@ % Hooks are points in the code of commands or environments where it % is possible to add processing code into existing commands. This % can be done by different packages that do not know about each -% other and to allow for hopefully safe processing it is necessary +% other, and to allow for hopefully safe processing it is necessary % to sort different chunks of code added by different packages into % a suitable processing order. % @@ -113,7 +113,7 @@ % % With a few exceptions, hooks have to be declared before they can % be used. The exceptions are the generic hooks for commands and -% environments (executed at \cs{begin} and \cs{end}), and the +% environments (executed at \cs{begin} and \cs{end}), and the generic % hooks run when loading files (see section~\ref{sec:generic}). % % \begin{function}{\NewHook} @@ -249,6 +249,12 @@ % % \subsubsection{Using hooks in code} % +% Using a hook that is executing the code that has been associated +% with it is only allowed if the hook has been previously declared +% with \cs{NewHook}. For performance reason there are no runtime +% checks for this and it is the responsibility of the programmer of a +% package to ensure that all hooks that are used in a package (with +% one of the commands in this section) are declared first. % % \begin{function}{\UseHook} % \begin{syntax} @@ -340,6 +346,16 @@ % % \subsubsection{Updating code for hooks} % +% In contrast to the commands from the previous section, declarations +% such as \cs{AddToHook} or \cs{DeclareHookRule} can be +% used even when the hook is not yet declared. The rationale is that +% the hook declaration may be in some package that is loaded later, or +% perhaps not loaded at all. +% +% A side effect of this design is that misspellings do not raise an +% error but are simply regarded as declarations for hooks with a +% different name. +% % \begin{function}{\AddToHook} % \begin{syntax} % \cs{AddToHook} \Arg{hook} \oarg{label} \Arg{code} @@ -441,18 +457,20 @@ % A useful application for this declaration inside the document body % is when one wants to temporarily add code to hooks and later remove % it again, e.g., +% \changes{v1.1l}{2025/01/03}{Correct example to use \texttt{env/quote/begin} +% instead of \texttt{/before} (gh/1599)} %\begin{verbatim} -% \AddToHook{env/quote/before}{\small} +% \AddToHook{env/quote/begin}{\small} % \begin{quote} % A quote set in a smaller typeface % \end{quote} % ... -% \RemoveFromHook{env/quote/before} +% \RemoveFromHook{env/quote/begin} % ... now back to normal for further quotes %\end{verbatim} % Note that you can't cancel the setting with %\begin{verbatim} -% \AddToHook{env/quote/before}{} +% \AddToHook{env/quote/begin}{} %\end{verbatim} % because that only \enquote{adds} a further empty chunk of code to % the hook. Adding \cs{normalsize} would work but that means the hook @@ -738,18 +756,32 @@ % in others. % % Before the hook management system was introduced -% packages had to take elaborate precaution to determine of some other -% package got loaded as well (before or after) and find some ways to +% packages had to take elaborate precautions to determine whether some other +% package had also been loaded (before or after) and then to find some ways to % alter its behavior accordingly. In addition is was often the user's -% responsibility to load packages in the right order so that code -% added to hooks got added in the right order and some cases even +% responsibility to load packages in the right order so that alterations +% made by packages were done in thsat same order; and in some cases even % altering the loading order wouldn't resolve the conflicts. % % With the new hook management system it is now possible to define % rules (i.e., relationships) between code chunks added by different -% packages and explicitly describe in which order they should be +% packages and to specify explicitly the order in which they should be % processed. % +% The rules can be declared for hooks before the hook has been +% declared with \cs{NewHook} and they are allowed to refer to code +% labels that do not yet exist, e.g., because a package defining the +% code chunk with that label has not yet been loaded. +% When the hook code is finally sorted for fast execution, all rules that apply are acted on +% and the others are ignored. +% +% This offers the flexibility needed to handle complicated +% relationships between code from different packages and to set this up +% beforehand in a way that is independent of whether or not the packages are actually loaded in a +% specific document. The downside of this is that misspellings of +% hook names or code labels will not raise any error, instead the rule +% will simply never apply! +% % \begin{function}{\DeclareHookRule} % \begin{syntax} % \cs{DeclareHookRule} \Arg{hook} \Arg{label1} \Arg{relation} \Arg{label2} @@ -914,7 +946,7 @@ % % % -% \subsubsection{Displaying hook code} +% \subsubsection{Displaying hook code}\label{sec:display-hooks} % % If one has to adjust the code execution in a hook using a hook % rule it is helpful to get some information about the code @@ -1030,7 +1062,9 @@ % \end{syntax} % Turn the debugging of hook code on or off. This displays most changes % made to the hook data structures. The output is rather coarse and -% not really intended for normal use. +% not really intended for normal use, but it can be helpful in case hooks do +% not work as expected. See also \ref{sec:display-hooks} for +% commands to inspect individual hooks. % \end{function} % % @@ -1664,7 +1698,7 @@ % will be replaced by \verb|arg-1|, \verb|#2| by \verb|arg-2| and so % on. If, at the point of usage, the programmer provides more % arguments than the hook is declared to take, the excess arguments -% are simply ignored by the hook. Behaviour is +% are simply ignored by the hook. Behavior is % unpredictable\footnote % {The hook \emph{will} take the declared number of arguments, and % what will happen depends on what was grabbed, and what the hook @@ -2581,13 +2615,15 @@ % % \subsubsection{The data structures of a hook} % -% \DescribeMacro{\g_@@_\meta{hook}_code_prop} -% \DescribeMacro{\@@\textvisiblespace\meta{hook}} -% \DescribeMacro{\g_@@_\meta{hook}_reversed_tl} -% \DescribeMacro{\g_@@_\meta{hook}_declared_tl} -% \DescribeMacro{\g_@@_\meta{hook}_parameter_tl} -% \DescribeMacro{\@@_next\textvisiblespace\meta{hook}} -% \DescribeMacro{\@@_toplevel\textvisiblespace\meta{hook}} +%^^A \DecribeMacro is not set up to use @@ convention so __hook is used explicitly +% +% \DescribeMacro{\g__hook_\meta{hook}_code_prop} +% \DescribeMacro{\__hook\textvisiblespace\meta{hook}} +% \DescribeMacro{\g__hook_\meta{hook}_reversed_tl} +% \DescribeMacro{\g__hook_\meta{hook}_declared_tl} +% \DescribeMacro{\g__hook_\meta{hook}_parameter_tl} +% \DescribeMacro{\__hook_next\textvisiblespace\meta{hook}} +% \DescribeMacro{\__hook_toplevel\textvisiblespace\meta{hook}} % Hooks have a name (called \meta{hook} in the description below) % and for each hook we have to % provide a number of data structures. These are @@ -2875,7 +2911,7 @@ % code with arguments to a hook without prior knowledge of the number % of arguments of that hook, so \pkg{lthooks} assumes~9 until the % hook is properly declared and the number of arguments is known. -% \cs{@@_normalise_cs_args:nn} does the normalisation by using the +% \cs{@@_normalise_cs_args:nn} does the normalization by using the % \cs[no-index]{c_@@_\meta{hook}_parameter_tl} defined just above. % \begin{macrocode} \@@_normalise_cs_args:nn { _toplevel } {#1} @@ -3123,8 +3159,8 @@ % Here we set \cs{@@_replacing_args_false:} because no legacy code % will reference hook arguments. % \changes{v1.1b}{2023/04/16} -% {\cs{@@_replacing_args_false:} in -% \cs{@@_include_legacy_code_chunk:n}.} +% {\cs{__hook_replacing_args_false:} in +% \cs{__hook_include_legacy_code_chunk:n}} % \begin{macrocode} \@@_replacing_args_false: \use:e @@ -3707,11 +3743,13 @@ { % \end{macrocode} % However, first some debugging info if debugging is enabled: +% \changes{v1.1l}{2024/11/26}{Adjust debugging message (gh/1459)} % \begin{macrocode} - \@@_debug:n{\iow_term:x{****~ Add~ to~ + \@@_debug:n{\iow_term:x{[lthooks]~ Add~ to~ \@@_if_usable:nF {#1} { undeclared~ } - hook~ #1~ (#2) - \on@line\space <-~ \tl_to_str:n{#3}} } + hook~ '#1'~ (#2) \on@line + ^^J [lthooks] \@spaces + <-~ \tl_to_str:n{#3}} } % \end{macrocode} % Then try to get the code chunk labeled \verb=#2= from the hook. % If there's code already there, then append \verb=#3= to that, @@ -3882,7 +3920,7 @@ % \begin{macro}{\@@_gput_undeclared_hook:nnn} % Often it may happen that a package $A$ defines a hook \verb=foo=, % but package $B$, that adds code to that hook, is loaded before $A$. -% In such case we need to add code to the hook before its declared. +% In such case we need to add code to the hook before it is declared. % An implicitly declared hook doesn't have arguments (in principle), % so use \cs{c_false_bool} here. % \begin{macrocode} @@ -3911,7 +3949,7 @@ % next-execution hooks does the same: it defers the code to % \cs{hook_gput_next_code:nn} if the generic hook was declared, or % to \cs{@@_gput_next_do:nn} otherwise. -% \changes{v1.0p}{2021/08/25}{Standardise generic hook names (gh/648)} +% \changes{v1.0p}{2021/08/25}{Standardize generic hook names (gh/648)} % \changes{v1.1d}{2023/05/21} % {Changes to allow support arguments in cmd hooks (cmd-args).} % \begin{macrocode} @@ -3935,7 +3973,7 @@ %\EndIncludeInRelease %\IncludeInRelease{2021/11/15} % {\@@_try_declaring_generic_hook:nnn} -% {Standardise~generic~hook~names} +% {Standardize~generic~hook~names} %\cs_gset_protected:Npn \@@_try_declaring_generic_hook:nnn #1 % { % \@@_try_declaring_generic_hook:wnTF #1 / / / \scan_stop: @@ -3956,7 +3994,7 @@ %\EndIncludeInRelease %\IncludeInRelease{2020/10/01} % {\@@_try_declaring_generic_hook:nnn} -% {Standardise~generic~hook~names} +% {Standardize~generic~hook~names} %\cs_new_protected:Npn % \@@_try_declaring_generic_hook:nnn #1 % { @@ -3986,9 +4024,9 @@ % in other cases. % % \changes{v1.0s}{2021/09/28} -% {Correct usage of older \cs{@@_if_file_hook:wTF} (gh/675)} +% {Correct usage of older \cs{__hook_if_file_hook:wTF} (gh/675)} % \changes{v1.1h}{2024/01/24} -% {Correct usage of older \cs{@@_if_file_hook:wTF} (gh/1243)} +% {Correct usage of older \cs{__hook_if_file_hook:wTF} (gh/1243)} % \begin{macrocode} %\cs_new_protected:Npn \@@_try_declaring_generic_hook:nNNnn #1 % { @@ -4144,7 +4182,7 @@ % \begin{macrocode} %\IncludeInRelease{2021/11/15} % {\@@_try_declaring_generic_hook:wn} -% {Standardise~generic~hook~names} +% {Standardize~generic~hook~names} %\prg_new_protected_conditional:Npnn % \@@_try_declaring_generic_hook:wn % #1 / #2 / #3 / #4 \scan_stop: #5 { TF } @@ -4248,10 +4286,10 @@ % executes the \meta{true} branch, otherwise \meta{false}. % \begin{macrocode} %\IncludeInRelease{2021/11/15}{\@@_if_file_hook:w} -% {Standardise~generic~hook~names} +% {Standardize~generic~hook~names} %\EndIncludeInRelease %\IncludeInRelease{2020/10/01}{\@@_if_file_hook:w} -% {Standardise~generic~hook~names} +% {Standardize~generic~hook~names} %\prg_new_conditional:Npnn \@@_if_file_hook:w % #1 / #2 / #3 \s_@@_mark { TF } % { @@ -4278,7 +4316,7 @@ % % \begin{macrocode} %\IncludeInRelease{2021/11/15}{\@@_file_hook_normalize:n} -% {Standardise~generic~hook~names} +% {Standardize~generic~hook~names} %\EndIncludeInRelease % \end{macrocode} % @@ -4290,7 +4328,7 @@ % have to be \verb|\AddToHook{file/./mypath//file.tex/after}|. % \begin{macrocode} %\IncludeInRelease{2020/10/01}{\@@_file_hook_normalize:n} -% {Standardise~generic~hook~names} +% {Standardize~generic~hook~names} %\cs_new:Npn \@@_file_hook_normalize:n #1 % { \@@_strip_double_slash:n {#1} } %\cs_new:Npn \@@_strip_double_slash:n #1 @@ -4337,7 +4375,7 @@ % \end{description} % \begin{macrocode} %\IncludeInRelease{2021/11/15}{\c_@@_generics_prop} -% {Standardise~generic~hook~names} +% {Standardize~generic~hook~names} \clist_map_inline:nn { cmd , env , file , package , class , include } { \tl_const:cn { c_@@_generic_#1/./before_tl } { + } @@ -4366,7 +4404,7 @@ % % \begin{macrocode} %\IncludeInRelease{2020/10/01}{\c_@@_generics_prop} -% {Standardise~generic~hook~names} +% {Standardize~generic~hook~names} %\prop_const_from_keyval:Nn \c_@@_generics_prop % {cmd=,env=,file=,package=,class=,include=} %\EndIncludeInRelease @@ -4380,13 +4418,13 @@ % (the |ii| and |iii| names are kept for the deprecation cycle): % \begin{macrocode} %\IncludeInRelease{2021/11/15}{\c_@@_generics_reversed_ii_prop} -% {Standardise~generic~hook~names} +% {Standardize~generic~hook~names} %\EndIncludeInRelease % \end{macrocode} % % \begin{macrocode} %\IncludeInRelease{2020/10/01}{\c_@@_generics_reversed_ii_prop} -% {Standardise~generic~hook~names} +% {Standardize~generic~hook~names} %\prop_const_from_keyval:Nn % \c_@@_generics_reversed_ii_prop {after=,end=} %\prop_const_from_keyval:Nn @@ -4546,8 +4584,8 @@ % \begin{macro}{\@@_cs_gput_right_fast:nnn,\@@_cs_gput_right_slow:nnn} % \begin{macro}{\@@_code_gset_auxi:nnnn,\@@_code_gset_auxi:eeen} % This macro is used to append code to the \verb|toplevel| and -% \verb|next| token lists, trating them correctly depending on their -% number of arguments, and depending if the code being added should +% \verb|next| token lists, treating them correctly depending on their +% number of arguments, and depending on whether the code being added should % have parameter tokens understood as parameters, or doubled to be % stored as parameter tokens. % \changes{v1.1a}{2023/04/06} @@ -4603,7 +4641,7 @@ % Here we take the existing code in the macro, expand it with as many % arguments as it takes, then double the hashes so the code can be % reused. \pho{Maybe can be improved. The case of adding to an empty -% cs can be optimised by quickly checking \cs{cs_replacement_spec}.} +% cs can be optimized by quickly checking \cs{cs_replacement_spec}.} % \begin{macrocode} { \exp_args:NNo \exp_args:No \@@_double_hashes:n @@ -4695,7 +4733,7 @@ % \end{macro} % % \begin{macro}{\@@_normalise_cs_args:nn} -% This macro normalises the parameters of the macros +% This macro normalizes the parameters of the macros % \cs[no-index]{@@\meta{type}\textvisiblespace\meta{hook}} to take the % right number of arguments after a hook is declared. At this point % we know \cs[no-index]{c_@@_\meta{hook}_parameter_tl} exists, so use @@ -4755,7 +4793,7 @@ % \end{macrocode} % First, call \cs{@@_set_normalise_fn:nn} with the hook name to set % everything up, then we'll loop over the -% hook's code pool applying the normalisation above. After that's +% hook's code pool applying the normalization above. After that's % done, copy the temporary property list back to the hook's. % \begin{macrocode} \@@_set_normalise_fn:nn {#1} { Offending~label:~'##1' } @@ -5374,10 +5412,11 @@ % \end{macrocode} % If we are debugging we show results hook by hook for all hooks % that have data. +% \changes{v1.1l}{2024/11/26}{Adjust debugging message (gh/1459)} % \begin{macrocode} \@@_debug:n { - \iow_term:x { ^^J All~initialized~(non-empty)~hooks: } + \iow_term:x { ^^J[lthooks]~ All~initialized~(non-empty)~hooks: } \prop_map_inline:Nn \g_@@_used_prop { \iow_term:x @@ -5433,13 +5472,14 @@ % afterwards only if the hook code changes. % \changes{v1.1a}{2023/04/06} % {Changes to add hook arguments (hook-args).} +% \changes{v1.1l}{2024/11/26}{Adjust debugging message (gh/1459)} % \begin{macrocode} %\IncludeInRelease{2023/06/01}{\@@_initialize_hook_code:n} % {Hooks~with~args} \cs_new_protected:Npn \@@_initialize_hook_code:n #1 { \@@_debug:n - { \iow_term:x { ^^J Update~code~for~hook~'#1' \on@line :^^J } } + { \iow_term:x { ^^J[lthooks]~ Update~code~for~hook~'#1' \on@line :^^J } } % \end{macrocode} % This does the sorting and the updates. % First thing we do is to check if a legacy hook macro exists and @@ -5732,9 +5772,10 @@ \exp_args:NNV \@@_tl_gput:Nn #1 \l_@@_return_tl % \end{macrocode} % +% \changes{v1.1l}{2024/11/26}{Adjust debugging message (gh/1459)} % \begin{macrocode} \@@_clist_gput:NV #2 \l_@@_front_tl - \@@_debug:n{ \iow_term:x{Handled~ code~ for~ \l_@@_front_tl} } + \@@_debug:n{ \iow_term:x{[lthooks]~ Handled~ code~ for~ \l_@@_front_tl} } % \end{macrocode} % % This is step T6, except that we don't use a pointer $P$ to move @@ -6146,9 +6187,9 @@ % \end{macrocode} % % \changes{v1.1a}{2023/04/06} -% {Changes to add hook arguments (hook-args).} +% {Changes to add hook arguments (hook-args)} % \changes{v1.1g}{2024/01/03} -% {Fix expansion of \cs{@@_print_args:nn} argument (gh/1221).} +% {Fix expansion of \cs{__hook__print_args:nn} argument (gh/1221)} % \begin{macrocode} %\IncludeInRelease{2023/06/01}{\@@_log:nN} % {Hooks~with~args} @@ -6179,7 +6220,7 @@ % \end{macrocode} % % \changes{v1.1k}{2024/10/29} -% {Skip mapping over undeclared \cs{g_@@_\meta{hook}_code_prop} (gh/1513)} +% {Skip mapping over undeclared \cs{g__hook_\meta{hook}_code_prop} (gh/1513)} % \begin{macrocode} \@@_if_usable:nF {#1} { \@@_log_line:x { The~hook~is~not~declared. } } @@ -6454,7 +6495,7 @@ % and |#3|${}={}$\meta{hook} (the latter may be the argument |#1| to % \cs{@@_list_rules:nn}, or \texttt{??} if it is a default rule). % \changes{v1.1k}{2024/10/29} -% {Skip mapping over undeclared \cs{g_@@_\meta{hook}_code_prop} (gh/1513)} +% {Skip mapping over undeclared \cs{g__hook_\meta{hook}_code_prop} (gh/1513)} % \begin{macrocode} \cs_new_protected:Npn \@@_list_rules:nn #1 #2 { @@ -6535,12 +6576,42 @@ { \@@_replacing_args_false: \@@_normalize_hook_args:Nn \@@_gput_next_code:nn {#1} {#2} +% \end{macrocode} +% +% \changes{v1.1l}{2024/11/26}{Add debugging message (gh/1459)} +% \begin{macrocode} + \@@_debug:n{\iow_term:x{[lthooks]~ Add~ to~ + \@@_if_usable:nF {#1} { undeclared~ } + hook~ '#1'~ ( next~ invocation~ only ) + \on@line + ^^J [lthooks] \@spaces + <-~ \tl_to_str:n{#2} + } + } +% \end{macrocode} +% +% \begin{macrocode} \@@_replacing_args_reset: } \cs_new_protected:Npn \hook_gput_next_code_with_args:nn #1 #2 { \@@_replacing_args_true: \@@_normalize_hook_args:Nn \@@_gput_next_code:nn {#1} {#2} +% \end{macrocode} +% +% \changes{v1.1l}{2024/11/26}{Add debugging message (gh/1459)} +% \begin{macrocode} + \@@_debug:n{\iow_term:x{[lthooks]~ Add~ to~ + \@@_if_usable:nF {#1} { undeclared~ } + hook~ '#1'~ ( next~ invocation~ only ) + \on@line + ^^J [lthooks] \@spaces + <-~ \tl_to_str:n{#2} + } + } +% \end{macrocode} +% +% \begin{macrocode} \@@_replacing_args_reset: } %\EndIncludeInRelease @@ -6584,7 +6655,7 @@ % \changes{v1.1a}{2023/04/06} % {Changes to add hook arguments (hook-args).} % \changes{v1.1c}{2023/04/19} -% {Initialise hook structure when adding 'next' code (gh/1052).} +% {Initialize hook structure when adding 'next' code (gh/1052).} % \begin{macrocode} %\IncludeInRelease{2023/06/01}{\@@_gput_next_do:nn} % {Hooks~with~args} @@ -6699,7 +6770,7 @@ % % \begin{macrocode} %\IncludeInRelease{2021/11/15}{\hook_use:n} -% {Standardise~generic~hook~names} +% {Standardize~generic~hook~names} %\cs_new_protected:Npn \hook_use:n #1 % { % \tl_if_exist:cT { @@~#1 } @@ -6722,7 +6793,7 @@ % % \begin{macrocode} %\IncludeInRelease{2020/10/01}{\hook_use:n} -% {Standardise~generic~hook~names} +% {Standardize~generic~hook~names} %\cs_new_protected:Npn \hook_use:n #1 % { % \tl_if_exist:cTF { @@~#1 } @@ -6827,10 +6898,10 @@ % \cs{@@_preamble_hook:n} if so, then uses the hook. % \begin{macrocode} %\IncludeInRelease{2021/11/15}{\@@_use:wn} -% {Standardise~generic~hook~names} +% {Standardize~generic~hook~names} %\EndIncludeInRelease %\IncludeInRelease{2020/10/01}{\@@_use:wn} -% {Standardise~generic~hook~names} +% {Standardize~generic~hook~names} %\cs_new:Npn \@@_use:wn #1 / #2 \s_@@_mark #3 % { % \str_if_eq:nnTF {#1} { file } @@ -6840,9 +6911,9 @@ % \end{macrocode} % % \changes{v1.0s}{2021/09/28} -% {Correct usage of older \cs{@@_if_file_hook:wTF} (gh/675)} +% {Correct usage of older \cs{__hook_if_file_hook:wTF} (gh/675)} % \changes{v1.1h}{2024/01/24} -% {Correct usage of older \cs{@@_if_file_hook:wTF} (gh/1243)} +% {Correct usage of older \cs{__hook_if_file_hook:wTF} (gh/1243)} % \begin{macrocode} %\cs_new_protected:Npn \@@_try_file_hook:n #1 % { @@ -7768,7 +7839,7 @@ % % \begin{macro}{\ClearHookRule} % A special setup rule that removes an existing relation. -% Basically {@@_rule_gclear:nnn} plus fixing the property list for debugging. +% Basically \cs{@@_rule_gclear:nnn} plus fixing the property list for debugging. % \fmiinline{Needs perhaps an L3 interface, or maybe it should get dropped?} % \begin{macrocode} \NewDocumentCommand \ClearHookRule { m m m } diff --git a/Master/texmf-dist/source/latex-dev/base/lthyphen.dtx b/Master/texmf-dist/source/latex-dev/base/lthyphen.dtx index ae1e2182aa3..3ef84608d1d 100644 --- a/Master/texmf-dist/source/latex-dev/base/lthyphen.dtx +++ b/Master/texmf-dist/source/latex-dev/base/lthyphen.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2024 +% Copyright (C) 1993-2025 % The LaTeX Project and any individual authors listed elsewhere % in this file. % diff --git a/Master/texmf-dist/source/latex-dev/base/ltidxglo.dtx b/Master/texmf-dist/source/latex-dev/base/ltidxglo.dtx index ca63844f880..f0cb8a8a5ca 100644 --- a/Master/texmf-dist/source/latex-dev/base/ltidxglo.dtx +++ b/Master/texmf-dist/source/latex-dev/base/ltidxglo.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2024 +% Copyright (C) 1993-2025 % The LaTeX Project and any individual authors listed elsewhere % in this file. % diff --git a/Master/texmf-dist/source/latex-dev/base/ltkeys.dtx b/Master/texmf-dist/source/latex-dev/base/ltkeys.dtx index a9e430206b6..aff11bd3069 100644 --- a/Master/texmf-dist/source/latex-dev/base/ltkeys.dtx +++ b/Master/texmf-dist/source/latex-dev/base/ltkeys.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 2021-2024 +% Copyright (C) 2021-2025 % The LaTeX Project and any individual authors listed elsewhere % in this file. % @@ -33,7 +33,7 @@ %<*driver> % \fi \ProvidesFile{ltkeys.dtx} - [2024/06/20 v1.0o LaTeX Kernel (Keyval options)] + [2025/02/18 v1.0p LaTeX Kernel (Keyval options)] % \iffalse \documentclass{l3doc} \GetFileInfo{ltkeys.dtx} @@ -158,7 +158,7 @@ % % \begin{macro}{.code, .if, .ifnot, .store, .usage} % \changes{v1.0b}{2022/02/05} -% {Create properties in \texttt{ltlkeys}} +% {Create properties in \texttt{ltkeys}} % \changes{v1.0c}{2022/02/07} % {Correct \texttt.{.code} property} % \changes{v1.0i}{2022/06/22} @@ -277,6 +277,7 @@ % \changes{v1.0l}{2022/10/20} % {Define key option handler in \pkg{ltkeys}} % \changes{v1.0i}{2022/07/05}{Support \cs{CurrentOption}} +% \changes{v1.0p}{2025/01/15}{Only process global options on first pass} % \begin{macro}{\@@_options_end:} % The main function calls functions to collect up the global and local % options into \cs{l_@@_options_clist} before calling the @@ -286,17 +287,23 @@ % current family, and is cleaned up afterwards if required. To allow % the \LaTeXe{} layer to know this mechanism is active, and to deal % with the key family not matching the file name, we store the family -% in all cases. +% in all cases. Global options are only considered the first time a +% package is loaded: this is tracked using +% |opt@handler@\@currname.\@currext|, as this is defined once keyval +% processing has been applied for the first time. % \begin{macrocode} \cs_new_protected:Npn \@@_options:n #1 { \@@_options_expand_module:Nn \@@_options_aux:n {#1} } \cs_new_protected:Npn \@@_options_aux:n #1 { - \cs_gset_protected:cpn { opt@handler@\@currname.\@currext } - { \ProcessKeyOptions [ #1 ] } \cs_set_protected:Npn \@@_option_end: { } \clist_clear:N \l_@@_options_clist - \@@_options_global:n {#1} + \cs_if_exist:cF { opt@handler@ \@currname . \@currext } + { + \@@_options_global:n {#1} + \cs_gset_protected:cpn { opt@handler@ \@currname . \@currext } + { \ProcessKeyOptions [ #1 ] } + } \@@_options_local: \keys_if_exist:nnF {#1} { unknown } { diff --git a/Master/texmf-dist/source/latex-dev/base/ltlength.dtx b/Master/texmf-dist/source/latex-dev/base/ltlength.dtx index 75c1f22676b..9bb04ee746a 100644 --- a/Master/texmf-dist/source/latex-dev/base/ltlength.dtx +++ b/Master/texmf-dist/source/latex-dev/base/ltlength.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2024 +% Copyright (C) 1993-2025 % The LaTeX Project and any individual authors listed elsewhere % in this file. % diff --git a/Master/texmf-dist/source/latex-dev/base/ltlists.dtx b/Master/texmf-dist/source/latex-dev/base/ltlists.dtx index 5858cbddfb8..836675398e6 100644 --- a/Master/texmf-dist/source/latex-dev/base/ltlists.dtx +++ b/Master/texmf-dist/source/latex-dev/base/ltlists.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2024 +% Copyright (C) 1993-2025 % The LaTeX Project and any individual authors listed elsewhere % in this file. % @@ -31,7 +31,7 @@ %<*driver> % \fi \ProvidesFile{ltlists.dtx} - [2024/06/23 v1.0u LaTeX Kernel (List Environments)] + [2025/01/26 v1.0v LaTeX Kernel (List Environments)] % \iffalse \documentclass{ltxdoc} \GetFileInfo{ltlists.dtx} @@ -851,11 +851,26 @@ \def\@endpetrue {% \global\let\if@endpe\iftrue % \end{macrocode} -% If we are inside a group then propagate to the outside: +% If we are inside a simple or a semi-simple group then propagate +% to the outside, for all other group types do nothing. Normally, we +% would start out in the group opened by \cs{begin} (type 14). When we +% migrate out of that we are either on top-level (type 0) or in +% another semi-simple group (type 14) or +% in some other group. Thus, the best order of tests is to first +% test for 14, then for 0 and finally for 1 (simple group). +% \changes{v1.0v}{2025/01/26}{Only migrate \cs{@doendpe} out of simple +% and semi-simple groups (gh1641)} % \begin{macrocode} - \ifnum\currentgrouplevel>\z@ - \aftergroup\propagate@doendpe - \fi + \ifnum\currentgrouptype =14 % semi-simple group + \aftergroup\propagate@doendpe + \else + \ifnum\currentgrouptype =\z@ % no group: top-level + \else + \ifnum\currentgrouptype =\@ne % simple group + \aftergroup\propagate@doendpe + \fi + \fi + \fi } % \end{macrocode} % If \cs{if@endpe} is still true after the group ends, we run \cs{@doendpe} diff --git a/Master/texmf-dist/source/latex-dev/base/ltlogos.dtx b/Master/texmf-dist/source/latex-dev/base/ltlogos.dtx index 4fc710ba40d..e6e92713321 100644 --- a/Master/texmf-dist/source/latex-dev/base/ltlogos.dtx +++ b/Master/texmf-dist/source/latex-dev/base/ltlogos.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2024 +% Copyright (C) 1993-2025 % The LaTeX Project and any individual authors listed elsewhere % in this file. % diff --git a/Master/texmf-dist/source/latex-dev/base/ltluatex.dtx b/Master/texmf-dist/source/latex-dev/base/ltluatex.dtx index 315b62cc9e2..594fcce23c2 100644 --- a/Master/texmf-dist/source/latex-dev/base/ltluatex.dtx +++ b/Master/texmf-dist/source/latex-dev/base/ltluatex.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 2015-2024 +% Copyright (C) 2015-2025 % The LaTeX Project and any individual authors listed elsewhere % in this file. % @@ -30,7 +30,7 @@ %<*plain> % \fi % \ProvidesFile{ltluatex.dtx} -[2024/08/16 v1.2e +[2025/01/11 v1.2e % LaTeX Kernel (LuaTeX support)^^A %\iffalse % LuaTeX support for plain TeX (core)% @@ -1676,14 +1676,15 @@ end % passed the return value of the previous (and the other arguments % untouched, if any). The return value is that of the last function; % \item[list] is a specialized variant of \emph{data} for functions -% filtering node lists. Such functions may return either the head of a -% modified node list, or the boolean values |true| or |false|. The -% functions are chained the same way as for \emph{data} except that for -% the following. If -% one function returns |false|, then |false| is immediately returned and -% the following functions are \emph{not} called. If one function returns +% filtering node lists. Such functions are called with a node list head +% as the first argument and may return either the head of a modified node list, +% or the boolean values |true| or |false|. +% The functions are chained the same way as for \emph{data} except for +% the following cases. +% If a function returns |false|, then |false| is immediately returned and +% the following functions are \emph{not} called. If a function returns % |true|, then the same head is passed to the next function. If all -% functions return |true|, then |true| is returned, otherwise the return +% functions return |true|, then the original head is returned, otherwise the return % value of the last function not returning |true| is used. % \item[reverselist] is a specialized variant of \emph{list} which executes % functions in inverse order. diff --git a/Master/texmf-dist/source/latex-dev/base/ltmarks.dtx b/Master/texmf-dist/source/latex-dev/base/ltmarks.dtx index 1e1c5c7fb8e..a35efa8c188 100644 --- a/Master/texmf-dist/source/latex-dev/base/ltmarks.dtx +++ b/Master/texmf-dist/source/latex-dev/base/ltmarks.dtx @@ -1,7 +1,7 @@ % \iffalse meta-comment % %% File: ltmarks.dtx -%% Copyright (C) 2022-2024 +%% Copyright (C) 2022-2025 %% Frank Mittelbach, The LaTeX Project % % It may be distributed and/or modified under the conditions of the @@ -17,7 +17,7 @@ %<*driver> % \fi \ProvidesFile{ltmarks.dtx} - [2024/11/14 v1.1a LaTeX Kernel (Marks)] + [2025/01/10 v1.1c LaTeX Kernel (Marks)] % \iffalse % \documentclass{l3doc} @@ -743,9 +743,9 @@ % region to \meta{alias}, i.e., make the structures identical. Used % to update the \texttt{previous-...} structures inside % \cs{mark_update_structure_from_material:nn} and \texttt{first-column} and -% \texttt{last-column} structures inside -% \cs{@@_update_singlecol_structures:} or -% \cs{@@_update_dblcol_structures:}. +% \texttt{last-column} structures inside the internal commands +% \cs{__mark_update_singlecol_structures:} or +% \cs{__mark__update_dblcol_structures:}. % \end{function} % % @@ -797,7 +797,7 @@ % If the \meta{source} consists of a single vertical box (plus % possibly followed by some glue but nothing else) then the box is % unpacked and the top-level marks are collected from its -% content. However, if it is not a vertical box or there are are +% content. However, if it is not a vertical box or there are % other data then nothing is unpacked and you have to do the % unpacking yourself to get at the marks inside. % @@ -979,7 +979,8 @@ % % % \begin{macro}{\@@_init_region:nn,\c_@@_empty_tl} -% +% \changes{v1.1b}{2024/12/03}{Fix inconsistent local/global assignment (gh/1574)} +% % For each class (\texttt{\#2}) and region (\texttt{\#1}), we need % three token lists: one for top, first, and last. The default value to be % returned is \enquote{empty}. @@ -988,12 +989,12 @@ \tl_new:c { g_@@_#1_top_ #2 _tl } \tl_new:c { g_@@_#1_first_ #2 _tl } \tl_new:c { g_@@_#1_last_ #2 _tl } - \tl_set_eq:cN { g_@@_#1_top_ #2 _tl } \c_@@_empty_tl - \tl_set_eq:cN { g_@@_#1_first_ #2 _tl } \c_@@_empty_tl - \tl_set_eq:cN { g_@@_#1_last_ #2 _tl } \c_@@_empty_tl + \tl_gset_eq:cN { g_@@_#1_top_ #2 _tl } \c_@@_empty_tl + \tl_gset_eq:cN { g_@@_#1_first_ #2 _tl } \c_@@_empty_tl + \tl_gset_eq:cN { g_@@_#1_last_ #2 _tl } \c_@@_empty_tl } % \end{macrocode} -% +% % All marks will have an identification in the form of a % number\footnote{There are a few cases where special % identification strings are used, e.g., \texttt{2.09-compat}.} that is @@ -1151,7 +1152,7 @@ % We are now ready to \cs{vsplit} the box to get at the marks. If % the box contains some infinite negative glue the \TeX{} will % produce an error complaining about it but it will correctly find -% the the split marks. Given that we can't prevent that error, we +% the split marks. Given that we can't prevent that error, we % hide it from the user and ensure that \TeX{} doesn't stop. The % error message still shows in the log, but even that is mitigated % as best as possible---see the definition of @@ -1229,7 +1230,7 @@ % Then we change them so that no escape char is printed in the % error message (accounts for the missing backslash in front of % \verb/Infinite shrink .../) and we set the interaction to -% \cs{nonstopmode} so that the the error (if any) just goes into +% \cs{nonstopmode} so that the error (if any) just goes into % the \texttt{.log} file and \TeX{} doesn't stop at that point. % \begin{macrocode} \tex_escapechar:D -1 \scan_stop: @@ -1475,7 +1476,14 @@ { %<*trace> \@@_debug:n { \iow_term:x { Marks:~ extract~ last~ - mark~ for~ class~ '##1'~ =~ \g_@@_tmp_tl } } +% \end{macrocode} +% The mark content in \cs{g_@@_tmp_tl} may contain aribtrary code +% that may react badly if it is expanded in a write. So we better +% avoid that expansion, otherwise debugging might generate spurious +% errors when turned on. +% \changes{v1.1c}{2025/01/10}{Do not expand mark content while debugging} +% \begin{macrocode} + mark~ for~ class~ '##1'~ =~ \exp_not:o \g_@@_tmp_tl } } % \tl_gput_right:Ne \g_@@_last_marks_tl { \mark_insert:nn {##1} { \@@_drop_id:o { \g_@@_tmp_tl } } } @@ -1487,10 +1495,15 @@ % faster in case there is none. % \begin{macrocode} %<*trace> - \@@_debug:n { \iow_term:x { Marks:~ extract~ first~ - mark~ for~ class~ '##1'~ =~ - \tex_splitfirstmarks:D + \@@_debug:n { \iow_term:x { + Marks:~ extract~ first~ mark~ for~ class~ '##1'~ =~ +% \end{macrocode} +% Again no expansion for the mark content. +% \begin{macrocode} + \exp_not:o { + \tex_splitfirstmarks:D \use:c { c_@@_class_##1_mark } + } } } % \tl_gput_right:Ne \g_@@_first_marks_tl @@ -1683,7 +1696,7 @@ % % \begin{macro}{\@@_value:nn} % A hidden marker is placed into every mark added by -% \cs{mark_insert:nn}. It will will not show up in the output but +% \cs{mark_insert:nn}. It will not show up in the output but % its argument (a counter value that is incremented) makes all % marks unique so the test for \enquote{equal} is not fooled by two % different marks having the same mark text. @@ -2203,7 +2216,7 @@ % Updating the \texttt{first} mark for the \texttt{page} region is % more complicated. We first have to find out of there is any mark % in the first column (this can be done by comparing the \texttt{top} and -% the \texttt{first} mark of of that region). +% the \texttt{first} mark of that region). % \changes{v1.0f}{2024/05/30}{Correct logic for first mark in page % region if first column contains no marks (gh/1359)} % \begin{macrocode} diff --git a/Master/texmf-dist/source/latex-dev/base/ltmath.dtx b/Master/texmf-dist/source/latex-dev/base/ltmath.dtx index b40faa8a800..6cd251bd2e7 100644 --- a/Master/texmf-dist/source/latex-dev/base/ltmath.dtx +++ b/Master/texmf-dist/source/latex-dev/base/ltmath.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2024 +% Copyright (C) 1993-2025 % The LaTeX Project and any individual authors listed elsewhere % in this file. % diff --git a/Master/texmf-dist/source/latex-dev/base/ltmeta.dtx b/Master/texmf-dist/source/latex-dev/base/ltmeta.dtx index 410f6459f52..35fe3ada06f 100644 --- a/Master/texmf-dist/source/latex-dev/base/ltmeta.dtx +++ b/Master/texmf-dist/source/latex-dev/base/ltmeta.dtx @@ -1,7 +1,7 @@ % \iffalse meta-comment % %% File: ltmeta.dtx -%% Copyright (C) 2021-2024 +%% Copyright (C) 2021-2025 %% Frank Mittelbach, The LaTeX Project % % It may be distributed and/or modified under the conditions of the diff --git a/Master/texmf-dist/source/latex-dev/base/ltmiscen.dtx b/Master/texmf-dist/source/latex-dev/base/ltmiscen.dtx index 70c374f7086..833bcc8e452 100644 --- a/Master/texmf-dist/source/latex-dev/base/ltmiscen.dtx +++ b/Master/texmf-dist/source/latex-dev/base/ltmiscen.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2024 +% Copyright (C) 1993-2025 % The LaTeX Project and any individual authors listed elsewhere % in this file. % diff --git a/Master/texmf-dist/source/latex-dev/base/ltoutenc.dtx b/Master/texmf-dist/source/latex-dev/base/ltoutenc.dtx index 639f214fa9a..a786be3fe1a 100644 --- a/Master/texmf-dist/source/latex-dev/base/ltoutenc.dtx +++ b/Master/texmf-dist/source/latex-dev/base/ltoutenc.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2024 +% Copyright (C) 1993-2025 % The LaTeX Project and any individual authors listed elsewhere % in this file. % @@ -37,14 +37,14 @@ %\ProvidesFile{ts1enc.def}[2001/06/05 v3.0e (jk/car/fm) %\ProvidesFile{tuenc.def} %\ProvidesPackage{fontenc} -% [2024/11/06 v2.1b +% [2024/12/21 v2.1c % Standard LaTeX file] % Standard LaTeX package] % %<*driver> % \fi \ProvidesFile{ltoutenc.dtx} - [2024/11/06 v2.1b LaTeX Kernel (font encodings)] + [2025/02/11 v2.1c LaTeX Kernel (font encodings)] % \iffalse \documentclass{ltxdoc} \GetFileInfo{ltoutenc.dtx} @@ -595,8 +595,41 @@ \@dec@text@cmd\providecommand} % \end{macrocode} % +% +% \changes{v2.1c}{2024/11/26}{Declare command for logging (gh/1242)} +% \begin{macrocode} +\def\@enc@info#1{% + \GenericInfo{(Encoding)\@spaces\@spaces\@spaces\space\space}% + {LaTeX Encoding Info: \space\space\space#1}}% +% \end{macrocode} +% % \begin{macrocode} \def\@dec@text@cmd#1#2#3{% +% \end{macrocode} +% For logging, there are a number of different cases to cater for. +% \changes{v2.1c}{2025/02/11}{Log text command/symbol redeclarations (gh/1242)} +% \begin{macrocode} + \ifcsname #3\string#2\endcsname + \@enc@info{% + \ifx#1\providecommand + Ignoring declaration for + \else + Redeclaring + \fi + text +% \end{macrocode} +% This test distinguishes between commands and symbols: +% \begin{macrocode} + \ifx#1\chardef@text@cmd + symbol + \else + command + \fi + \string#2 (encoding #3)}% + \fi +% \end{macrocode} +% +% \begin{macrocode} \expandafter\def\expandafter#2% \expandafter{% \csname#3-cmd\expandafter\endcsname @@ -906,9 +939,13 @@ \def\DeclareTextCompositeCommand#1#2#3#4{% \expandafter\let\expandafter\reserved@a\csname#2\string#1\endcsname \ifx\reserved@a\relax +% \end{macrocode} +% +% \changes{v2.1c}{2024/11/26}{Alter error and info message} +% \begin{macrocode} \DeclareTextCommand#1{#2}{% - \@latex@error{\string#1 undeclared in encoding #2}\@eha}% - \@latex@info{Composite with undeclared \string#1 in encoding #2}% + \@latex@error{Text composite \string#1 undeclared in encoding #2}\@eha}% + \@enc@info{Text composite with undeclared \string#1 in encoding #2}% \expandafter\let\expandafter\reserved@a\csname#2\string#1\endcsname \fi \expandafter\expandafter\expandafter\ifx @@ -1187,14 +1224,14 @@ \def\UndeclareTextCommand#1#2{% % \end{macrocode} % If there is no declaration for the current encoding do nothing. -% (This makes a hash table entry but without e\TeX{} we can't do -% anything about that). +% \changes{v2.1c}{2024/11/26}{Use \cs{ifcsname} to avoid generating a csname} % \begin{macrocode} - \expandafter\ifx\csname#2\string#1\endcsname\relax - \else + \ifcsname #2\string#1\endcsname % \end{macrocode} % Else: throw away that declaration. +% \changes{v2.1c}{2024/11/26}{Log text command change (gh/1242)} % \begin{macrocode} + \@enc@info{Undeclare text command \string#1 (encoding #2)}% \global\expandafter\let\csname#2\string#1\endcsname \@undefined % \end{macrocode} @@ -1227,7 +1264,12 @@ {\csname ?-cmd\expandafter\endcsname\expandafter #1\csname?\string#1\endcsname}% \fi - \fi + \else +% \end{macrocode} +% \changes{v2.1c}{2024/11/26}{Log text command change (gh/1242)} +% \begin{macrocode} + \@enc@info{Text command \string#1 (encoding #2) is not declared}% + \fi } % \end{macrocode} % @@ -2279,10 +2321,11 @@ \fi % \end{macrocode} % -% \changes{v2.1b}{2024/11/06}{Support for macron-i for T1} +% \changes{v2.1b}{2024/11/06}{Support for macron-i for T1 (gh/1453)} +% \changes{v2.1c}{2024/12/21}{Correct base letter (gh/1587)} % One oddity. % \begin{macrocode} -\DeclareTextCompositeCommand{\=}{T1}{\i}{\=\i} +\DeclareTextCompositeCommand{\=}{T1}{i}{\=\i} % \end{macrocode} % % \begin{macrocode} diff --git a/Master/texmf-dist/source/latex-dev/base/ltoutenc.ins b/Master/texmf-dist/source/latex-dev/base/ltoutenc.ins index c5316f9aaba..5f9fa23201e 100644 --- a/Master/texmf-dist/source/latex-dev/base/ltoutenc.ins +++ b/Master/texmf-dist/source/latex-dev/base/ltoutenc.ins @@ -3,7 +3,7 @@ %% driver files from the doc files in this package when run through %% LaTeX or TeX. %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% @@ -48,7 +48,7 @@ reports for it can be opened at https://latex-project.org/bugs.html (but please observe conditions on bug reports sent to that address!) -Copyright (C) 1993-2024 +Copyright (C) 1993-2025 The LaTeX Project and any individual authors listed elsewhere in this file. diff --git a/Master/texmf-dist/source/latex-dev/base/ltoutput.dtx b/Master/texmf-dist/source/latex-dev/base/ltoutput.dtx index f2ae4150a94..10269632a5e 100644 --- a/Master/texmf-dist/source/latex-dev/base/ltoutput.dtx +++ b/Master/texmf-dist/source/latex-dev/base/ltoutput.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2024 +% Copyright (C) 1993-2025 % The LaTeX Project and any individual authors listed elsewhere % in this file. % @@ -30,14 +30,14 @@ %%% From File: ltoutput.dtx %\ProvidesPackage{flafter} %\ProvidesPackage{fltrace} -% [2024/11/16 v1.4k +% [2025/02/20 v1.4n % Standard LaTeX floats after reference (FMi)] % Tracing LaTeX floats algorithm (FMi)] % %<*driver> % \fi \ProvidesFile{ltoutput.dtx} - [2024/11/16 v1.4k LaTeX Kernel (Output Routine)] + [2025/02/20 v1.4n LaTeX Kernel (Output Routine)] % \iffalse \documentclass{ltxdoc} \GetFileInfo{ltoutput.dtx} @@ -46,13 +46,21 @@ \author{Leslie Lamport, Frank Mittelbach, Chris Rowley} \begin{document} \MaintainedByLaTeXTeam{latex} - \maketitle + \maketitle \tableofcontents \DocInput{\filename} \end{document} % % \fi % % +% \providecommand\hook[1]{\texttt{#1\DescribeHook[noprint]{#1}}} +% \providecommand\socket[1]{\texttt{#1\DescribeSocket[noprint]{#1}}} +% \providecommand\plug[1]{\texttt{#1\DescribePlug[noprint]{#1}}} +% +% \ProvideDocElement[printtype=\textit{socket},idxtype=socket,idxgroup=Sockets]{Socket}{socketdecl} +% \ProvideDocElement[printtype=\textit{plug},idxtype=plug,idxgroup=Plugs]{Plug}{plugdecl} +% \ProvideDocElement[printtype=\textit{hook},idxtype=hook,idxgroup=Hooks]{Hook}{hookdecl} +% % % \iffalse % LATEX VERSION 2e @@ -125,26 +133,18 @@ % \def \ie {i.e.~} % \def \eg {e.g.~} % -% \section{Output Routine} +% \section{Output Routine and float handling} % -% \subsection{Floats} % -% The `2ekernel' code ensures that a |\usepackage{autoout1}| is -% essentially ignored if a `full' format is being used that has -% the autoload file mode already in the format. % \begin{macrocode} -%\begingroup -%\makeatletter -%\nfss@catcodes -%<2ekernel>\expandafter\let\csname ver@autoout1.sty\endcsname\fmtversion +%<*2ekernel> +\message{output,} % \end{macrocode} % +% \subsection{Historical notes on the algorithm and commands} +% % % \begin{oldcomments} -% \begin{macrocode} -%<*2ekernel> -\message{output,} -% \end{macrocode} % **************************************** % * OUTPUT * % **************************************** @@ -644,9 +644,13 @@ % \nointerlineskip % \hbox{\vrule height 0 width 0 depth \@pagedp} % END +% \end{oldcomments} +% +% +% +% \subsection{Core definitions} % % Floats and marginpars add a lot of dead cycles. -% \end{oldcomments} % \begin{macrocode} \maxdeadcycles = 100 % \end{macrocode} @@ -690,7 +694,10 @@ \fi} % \end{macrocode} % -% DEFINITION OF FLOAT BOXES: +% +% \subsubsection{Definition of float boxes} +% +% % \changes{v1.3a}{2015/09/205} % {extended \cs{@freelist}} % \begin{macrocode} @@ -756,7 +763,11 @@ \gdef\@dbldeferlist{} % \end{macrocode} % -% PAGE LAYOUT PARAMETERS +% +% +% \subsubsection{Page layout parameters} +% +% % \begin{macrocode} \newdimen\topmargin \newdimen\oddsidemargin @@ -890,8 +901,12 @@ % \end{macro} % \end{macro} % -% \begin{oldcomments} -% INTERNAL REGISTERS +% +% +% +% \subsubsection{Internal registers} +% +% % % \begin{macrocode} \newcount\@topnum @@ -918,7 +933,11 @@ \def\@thehead{\@oddhead} % initialization \def\@thefoot{\@oddfoot} % \end{macrocode} -% \end{oldcomments} +% +% +% +% +% \subsubsection{Page break commands} % % \begin{macro}{\clearpage} % \changes{v1.1r}{1995/10/11}{Added a check so that it does not lose @@ -1213,6 +1232,241 @@ % \end{macro} % % +% +% \section{The \LaTeX{} output routine} +% +% \subsection{Hooks and replaceable code blocks} +% +% To support packages that want to augment aspects of the output +% routine we offer a number of hooks (where several packages can +% add code) as well as some sockets (that can only be changed by +% one package or through options like those of the \pkg{footmisc} +% package). +% +% +% \subsubsection{Output routine hooks} +% +% \begin{description} +% +% \item[\hook{build/page/before}, \hook{build/page/after}] +% These two hooks enable packages to prepend or append code to +% the page processing in the output routine. They are +% implemented as mirrored hooks. +% +% Technically, they are executed at the start and the end of the internal +% \LaTeXe{} \cs{@outputpage} command, respectively. +% +% +% \item[\hook{build/page/reset}] +% Packages that set up special conventions for text in the main +% galley (such as catcode changes, etc.)\ can use this hook to +% undo these changes within the output routine, so that they +% aren't applied to unrelated material, e.g., the text for +% running header or footers. +% +% \item[\hook{build/column/before}, \hook{build/column/after}] +% These two hooks enable packages to prepend or append code to +% the column processing in the output routine. They are +% implemented as mirrored hooks. +% +% Technically, they are executed at the start and the end of the internal +% \LaTeXe{} \cs{@makecol} command, respectively. +% +% \end{description} +% +% \subsubsection{Replaceable code blocks (sockets)} +% +% To cater for different layouts with respect to text, footnotes, +% and bottom-floats placements there are sockets for +% now. They are sockets not hooks, because the overall layout can only be +% controlled by one package, i.e., the last setting wins. +% +% \begin{description} +% \item[\socket{build/column/outputbox} (0 arguments)] +% +% In code for this socket the \cs{@outputbox} (holding the +% galley text for the current column or page) is augmented by +% attaching floats and footnote areas together with appropriate +% spacing. +% +% Prior to calling the socket the output routine has already +% decided which floats go into which area and which get deferred. +% Therefore, the assumption is that the code in the socket attaches all +% areas that contain floats. If this is not done, then the order +% of floats is likely to be screwed up unless unused floats +% are moved to the defer list in an appropriate way (for now we +% don't offer any interface for that scenario). +% +% Before the code in the socket is run, any existing glue at the bottom +% of the \cs{@outputbox} is removed and stored in a safe +% place. If needed, it can be reinserted with one of the helper +% commands. +% +% To support setting this up the following helper commands are available: +% \begin{description} +% \item[\cs{@outputbox@append} (1 argument)] +% +% \DescribeMacro[noprint]{@outputbox@append} +% +% This general purpose command alters the \cs{@outputbox} box by +% appending material to it. +% +% \item[\cs{@outputbox@appendfootnotes} (0 arguments)] +% +% \DescribeMacro[noprint]{@outputbox@appendfootnotes} +% +% This command appends the footnotes to the \cs{@outputbox} (if +% there are any). If not, then it does nothing. +% +% \item[\cs{@outputbox@attachfloats} (0 arguments)] +% \item[\cs{@outputbox@attachtopfloats} (0 arguments)] +% \item[\cs{@outputbox@attachbottomfloats} (0 arguments)] +% +% \DescribeMacro[noprint]{@outputbox@attachfloats} +% \DescribeMacro[noprint]{@outputbox@attachtopfloats} +% \DescribeMacro[noprint]{@outputbox@attachbottomfloats} +% +% Attaching top and bottom floats can usually be done in one +% go, but for special layouts we might want more control so we +% provide also separate commands. +% +% \item[\cs{@outputbox@reinsertbskip} (0 arguments)] +% +% \DescribeMacro[noprint]{@outputbox@reinsertbskip} +% +% Reinsert the bottom skip of the \cs{@outputbox} that was +% saved before in \cs{@makecol}. +% +% \item[Testing for existence of material] +% +% \DescribeMacro[noprint]{@if@footnotes@TF} +% \DescribeMacro[noprint]{@if@bottomfloats@TF} +% +% There are a number of helpers to run conditional code +% depending on whether or not there are footnotes or bottom +% floats. They are \cs{@if@footnotes@TF} and +% \cs{@if@bottomfloats@TF} +% (names are likely to change). +% +% \end{description} +% +% \task{fmi}{Decide on names for these helper commands. We could keep +% them similar to the above (because they are only supposed to be +% used by a few packages). However, we could alternatively use +% CamelCase names, under the assumption that classes may also +% directly define a plug for the socket, instead of loading a +% support package such as \pkg{footmisc} (or in addition +% to). --- decide} +% +% This socket cannot be empty but needs appropriate code; a set +% of suitable plugs for it are already given in the kernel. These +% are +% \begin{description} +% \item[\plug{space-footnotes-floats}] +% +% After the galley text there is a vertical \cs{vfill} +% followed by any footnotes followed by the bottom floats, if any. +% +% \item[\plug{footnotes-space-floats}] +% +% As before but the \cs{vfill} is between footnotes and floats. +% +% \item[\plug{floats-space-footnotes}] +% +% Floats are directly after the text, then a space and then +% footnotes at the bottom. +% +% \item[\plug{space-floats-footnotes}] +% +% Both floats and footnotes are pushed to the bottom with +% footnotes last.\footnote{There are two more permutations, +% but neither of them has ever been requested so they aren't +% set up by default --- doing that in a class would be trivial +% though.} +% +% \item[\plug{floats-footnotes}] +% +% All excess space is distributed across the existing +% glue on the page, e.g., within the text galley, the +% separation between blocks, etc. +% The order is text, floats, footnotes. +% +% \item[\plug{footnotes-floats}] +% +% As the previous one but floats and footnotes are +% swapped. This is the \LaTeX{} default for newer document, +% i.e., this plug is assigned to the socket when +% \cs{DocumentMetadata} is used. +% +% \item[\plug{footnotes-floats-legacy}] +% +% As the previous one but \LaTeX{}'s bottom skip bug is not +% corrected, i.e., in ragged bottom designs where footnotes +% are supposed to be directly attached to the text, they suddenly +% appear at the bottom of the page when the page is ended with +% \cs{newpage} or \cs{clearpage}. +% While this is clearly a bug, it was the case since the days +% of \LaTeX~2.09; thus for +% compatibility we continue to support this behavior. +% +% \end{description} +% +% +% \item[\socket{build/column/footnotes} (0 arguments)] +% +% This socket is used to manipulate the footnote +% material inside \cs{box}\cs{footins}. It if contains code, it +% is supposed to do some processing of that box and then write +% the result back into it (and nothing else!). By default it +% does nothing, i.e., has the \plug{noop} assigned. +% +% If (short) footnotes are run as a paragraph this socket gets +% the plug \plug{para} assigned which is defined elsewhere. +% +% \end{description} +% +% \subsubsection{Tagging sockets} +% +% The following sockets are used to implement tagging. They are used +% via \cs{UseTaggingSocket} which turns them off when tagging is +% disabled. +% For each of them a \plug{default} plug is implemented that holds the tagging code. +% +% \begin{description} +% +% \item[\socket{build/column/outputbox} (0 arguments)] +% This socket is used to add any missing tagging structures to the +% \cs{@outputbox} box, if necessary. +% +% \item[\socket{build/column/footins} (0 arguments)] +% This socket is used to add any missing tagging structures to +% \cs{footins} box, if necessary. +% +% \item[\socket{build/page/header} (2 arguments)] +% +% This socket receives the content of the formatted page header +% as its second argument and adds the necessary tagging around +% it. The first argument is empty as no special setup is +% necessary. +% +% \item[\socket{build/page/footer} (2 arguments)] +% +% This socket receives the content of the formatted page footer +% as its second argument and adds the necessary tagging around +% it. The first argument is empty as no special setup is +% necessary. +% +% \end{description} +% +% +% +% +% +% \subsubsection{Output routine commands} +% +% +% +% % \begin{macro}{\output} % \changes{v1.0f}{1993/12/05}{Command changed} % \begin{macro}{\@specialoutput} @@ -1694,172 +1948,136 @@ % \end{macro} % % +% \begin{macrocode} +%<*2ekernel|latexrelease> +%\IncludeInRelease{2025/06/01}% +% {\@makecol}{\@makecol adding hooks/sockets}% +% \end{macrocode} +% % \begin{macro}{\@makecol} % \changes{v0.1c}{1993/11/23}{Command changed} % \changes{v1.0b}{1993/11/29}{\cs{@makespecialcolbox} added} -% We must rewrite this macro to allow for variations in page-makeup -% required by changes in page-length. -% -% This uses a different macro if a special-length column is being -% produced. +% \changes{v1.4m}{2025/02/14}{Use sockets and hooks} % +% \cs{@makecol} is shortened a lot, basically all the hardwired +% code in the middle has moved into a socket. % \begin{macrocode} -%<*2ekernel> -\gdef \@makecol {% - \ifvoid\footins - \setbox\@outputbox \box\@cclv - \else - \setbox\@outputbox \vbox {% +\def \@makecol {% % \end{macrocode} -% This |\boxmaxdepth| setting is to ensure that deep footnotes -% do not overwrite the footer (on account of the negative skip -% added later): it should use |\@maxdepth| otherwise the change is -% pointless when there are footnotes. -% \task{CAR}{Investigate providing an option to put the footnotes -% below the bottom floats.} -% -% But see also its use when combining floats. -% \changes{v1.0l}{1994/03/15}{\cs{maxdepth} changed to \cs{@maxdepth}} +% A number of packages want to prepend code to \cs{@makecol}; this +% is the hook for that: % \begin{macrocode} - \boxmaxdepth \@maxdepth + \UseHook {build/column/before}% % \end{macrocode} -% -% \changes{v1.2e}{1999/01/06}{Added negative vskip, as when processing -% outputbox below: suggested by Fred Bartlett pr/2892} -% \changes{1.2i}{2000/07/12}{Removed negative vskip, as it gives -% unacceptable results when the depth is large: pr/3189} -% \changes{v1.2m}{2004/10/20}{Removed dead code} -% \task{CAR}{As can be seen from the above two changes, getting a good -% layout here is difficult: fix!} +% Save away box 255 as \cs{@outputbox} to make it available for further adjustments. % \begin{macrocode} -% \@tempdima\dp\@cclv - \unvbox \@cclv -% \vskip-\@tempdima - \vskip \skip\footins + \setbox\@outputbox \box\@cclv % \end{macrocode} -% \changes{v1.1a}{1994/10/31} -% {(DPC/CAR) Colour resetting moved to here} +% The only real addition is the next command which either does +% nothing or removes an infinite glue from the bottom of the +% \cs{@outputbox}. % \begin{macrocode} - \color@begingroup - \normalcolor - \footnoterule - \unvbox \footins - \color@endgroup - }% - \fi + \@outputbox@removebskip % \end{macrocode} -% The h floats have now been finally committed to this page so we -% can reset their list. The top and bottom floats are then added -% to the page. +% Now a kernel hook for tagging that adjusts the content of +% \cs{@outputbox}, if necessary. At this point it just contains the material from +% the galley. +% \begin{macrocode} + \UseTaggingSocket{build/column/outputbox}% +% \end{macrocode} +% When this code is run any ``here'' floats in the \cs{@outputbox} +% are already handled, so we recycle their registers and put them +% back to the \cs{@freelist}. +% \changes{v1.0h}{1993/12/12}{defs changed to lets} % \changes{v1.2k}{2003/12/16}{Ensure that \cs{@elt} has a defined % state (pr/3586)} % \begin{macrocode} - \let\@elt\relax - \xdef\@freelist{\@freelist\@midlist}% + \let\@elt\relax + \xdef\@freelist{\@freelist\@midlist}% + \global \let \@midlist \@empty % \end{macrocode} -% \changes{v1.0h}{1993/12/12}{defs changed to lets} +% Here we have the configurable part. This socket is supposed to +% add floats, footnotes and stretchable vertical space as +% appropriate to the \cs{@outputbox}. It is used by packages such +% as \pkg{footmisc} to implement different layout, e.g., footnotes +% above or below bottom floats, etc. % \begin{macrocode} - \global \let \@midlist \@empty - \@combinefloats + \UseSocket {build/column/outputbox}% % \end{macrocode} -% The variations start here in case |\enlargethispage| has -% been used. +% Then we deal with any \cs{enlargethispage} or run the normal code +% to build a column. % \begin{macrocode} - \ifvbox\@kludgeins - \@makespecialcolbox - \else + \ifvbox\@kludgeins + \@make@specialcolbox + \else + \@make@normalcolbox + \fi + \global \maxdepth \@maxdepth % \end{macrocode} -% This extra reboxing is only needed to add the -% |\@texttop| and |\@textbotttom| but this could be done earlier, -% when the floats are added. -% -% The |\boxmaxdepth| resetting here will have no effect unless -% |\@textbottom| ends with a box or rule. So is this (or possibly -% |\@maxdepth|) the correct value? -% -% The |\vskip -\dimen@| -% ensures that the visible depth of the box does not -% affect the placement of anything on the page. -% Thus very deep pages will overprint the footer; but these should -% have been prevented by suitable settings of the maxdepths at -% appropriate times. +% Finally, another hook for external packages or classes that want +% to augment or alter the output routine by appending to \cs{@makecol}. +% \begin{macrocode} + \UseHook {build/column/after}% +} +% \end{macrocode} +% \end{macro} % -% If |\@textbottom| ends with a box or rule of non-zero depth -% then this skip adjustment should be done again after it. +% \begin{macro}{\@outputbox@depth} +% \changes{v1.4m}{2025/02/14}{Macro added} +% We need to know the depth of \cs{@outputbox} once in a +% while. Rather than using a temp dimen (as it was done in the +% past), we give it a proper register. +% \begin{macrocode} +\newdimen\@outputbox@depth +% \end{macrocode} +% \end{macro} % -% I think that the final boxing of the main text page could have a -% common ending which may make it simpler to see what is going on. % -% This needs further investigation, especially in the `special -% case'. -% \task{CAR}{Further investigation of makecol} +% \begin{macro}{\@make@normalcolbox} +% \changes{v1.4m}{2025/02/14}{Macro added} +% Taken out of \cs{@makecol} for readability. % -% Also, the |\boxmaxdepth| setting here affects what happens within -% |\@texttop| and |\@textbottom|, should it? Is it needed at all? % \changes{v1.0l}{1994/03/15}{Removed boxmaxdepth setting.} -% -% RmS 91/10/22: Replaced |\dimen128| by |\dimen@|. -% % \begin{macrocode} - \setbox\@outputbox \vbox to\@colht {% -% \boxmaxdepth \maxdepth %?? +\def \@make@normalcolbox {% + \setbox\@outputbox \vbox to\@colht {% \@texttop - \dimen@ \dp\@outputbox + \@outputbox@depth \dp\@outputbox \unvbox \@outputbox - \vskip -\dimen@ - \@textbottom - }% - \fi - \global \maxdepth \@maxdepth -} % \end{macrocode} -% \end{macro} +% The |\vskip -\@outputbox@depth@| ensures that the visible depth +% of the box does not affect the placement of anything on the page. +% Thus very deep pages will overprint the footer; but these should +% have been prevented by suitable settings of the maxdepths at +% appropriate times. % -% \begin{macro}{\@reinserts} -% \changes{v1.0e}{1993/12/01}{Command added} -% This is the code which reinserts the inserts. It puts them all -% in one place; this can make some of them come out on the wrong -% page. -% It has been put into a separate macro to expedite experimentation. +% If |\@textbottom| ends with a box or rule of non-zero depth then +% this skip adjustment should be done again after it. % \begin{macrocode} -\gdef \@reinserts{% - \ifvoid\footins\else\insert\footins{\unvbox\footins}\fi - \ifvbox\@kludgeins\insert\@kludgeins - {\unvbox\@kludgeins}\fi + \vskip -\@outputbox@depth + \@textbottom + }% } -% % \end{macrocode} % \end{macro} % -% -% -% \begin{macro}{\@makespecialcolbox} -% \changes{v1.0b}{1993/11/29}{Command added} -% This implements certain variations in page-makeup. +% \begin{macro}{\@make@specialcolbox} +% \changes{v1.4m}{2025/02/14}{Macro added} +% Make the colbox when \cs{enlargethispage} was used. % \begin{macrocode} -%<*2ekernel|fltrace> -\gdef \@makespecialcolbox {% +% +%<*2ekernel|latexrelease|fltrace> +\def \@make@specialcolbox {% %<*trace> \fl@trace{Kludgeins ht \the\ht\@kludgeins\space dp \the\dp\@kludgeins\space wd \the\wd\@kludgeins}% % + \@outputbox@append {\vskip-\@outputbox@depth}% + \@tempdima \@colht % \end{macrocode} -% First we find the natural height of the column. -% -% See above for discussion of what is happening here. % -% This needs further investigation, especially in this `special -% case'. -% \changes{v1.0k}{1994/02/08}{boxmaxdepth setting removed} % \begin{macrocode} - \setbox\@outputbox \vbox {% - \@texttop - \dimen@ \dp\@outputbox - \unvbox\@outputbox - \vskip-\dimen@ - }% - \@tempdima \@colht \ifdim \wd\@kludgeins>\z@ % \end{macrocode} % Note that in this case (the *-version), the height of the @@ -1889,10 +2107,6 @@ % space added to force shrinking. % \task{CAR}{Further investigation of kludge-* space} % -% See above for a discussion of the |\boxmaxdepth| setting here. -% -% \changes{v1.0k}{1994/02/08}{boxmaxdepth setting added} -% \changes{v1.0l}{1994/03/15}{Removed boxmaxdepth setting.} % \begin{macrocode} \advance \@tempdima -\ht\@outputbox \advance \@tempdima \pageshrink @@ -1903,7 +2117,6 @@ \fl@trace {Hence, space added: \the \@tempdima}% % \setbox\@outputbox \vbox to \@colht {% -% \boxmaxdepth \maxdepth \unvbox\@outputbox \vskip \@tempdima \@textbottom @@ -1940,23 +2153,592 @@ \@textbottom}% \vss}% \fi -% \end{macrocode} -% Finally we need to explicitly make the insert box void. -% \begin{macrocode} {\setbox \@tempboxa \box \@kludgeins}% %<*trace> \fl@trace {kludgeins box made void}% % } -% +% +%<*2ekernel|latexrelease> +% \end{macrocode} +% \end{macro} +% +% +% +% +% \begin{macro}{\@outputbox@removebskip} +% \changes{v1.4m}{2025/02/14}{Macro added} +% \changes{v1.4m}{2025/02/14}{Finally fix bottom skip bug (from 2.09)} +% +% This is really a bug fix for the kernel (from the 2.09 days) but +% one we only make by default in new documents that are using +% \cs{DocumentMetadata}. If \cs{raggedbottom} is in force, +% footnotes get attached to the main galley at a distance of +% \cs{footskip} on all pages except on those that are ended by +% \cs{newpage} or \cs{clearpage} where the \cs{vfil} from +% \cs{newpage} pushes the footnotes to the very bottom. +% +% This is kind of a weird difference to a page ending with +% \cs{pagebreak}---in that case the page is also run +% short, but the footnotes are not pushed to the bottom. +% +% In \pkg{footmisc} \cs{@outputbox@removebskip} is only applied when +% \pkg{footmisc} is called with an option specifying the +% footnote placement, i.e., not in the default case. +% In new documents we apply it always. +% \begin{macrocode} +\def\@outputbox@removebskip{% +% \end{macrocode} +% We first test if we are in a \cs{raggedbottom} layout. If not we +% do nothing, but we don't disable the code because +% \cs{raggedbottom} may get used only for some parts of the +% document. +% \begin{macrocode} + \ifx\@textbottom\relax \else +% \end{macrocode} +% In some special circumstances the \cs{@outputbox} might be +% void. As \cs{@outputbox@append} below would change this, we +% better handle this case and leave it unchanged in this situation, +% because otherwise we can't detect that situation any longer +% (needed, for example, in \pkg{ftnright}). +% \begin{macrocode} + \ifvoid \@outputbox + \global\let\@outputbox@reinsertbskip\relax + \else +% \end{macrocode} +% If not, we drop the final skip at the end of \cs{@outputbox} +% provided there is one and it has a glue stretch +% order of 1 or more (i.e., contains a \texttt{fil} or \texttt{fill} part). +% \begin{macrocode} + \@outputbox@append{% + \@tempskipa\lastskip + \ifnum \gluestretchorder\@tempskipa>\z@ + \unskip +% \end{macrocode} +% +% \begin{macro}{\@outputbox@reinsertbskip} +% We also record the value so that it can be reinserted +% elsewhere. As we have to do this globally, we also need to +% explicitly reset it if we don't find any such glue. +% \begin{macrocode} + \xdef\@outputbox@reinsertbskip + {\noexpand\@outputbox@append{\vskip\the\@tempskipa}}% + \else + \global\let\@outputbox@reinsertbskip\relax + \fi + }% + \fi + \fi +} +% \end{macrocode} +% We need a trivial top-level definition for +% \cs{@outputbox@reinsertbskip} in case the first page has no +% bottom glue and the command gets called. +% \begin{macrocode} +\let \@outputbox@reinsertbskip \relax % \end{macrocode} % \end{macro} +% \end{macro} +% +% +% +% +% \subsection{The output routine configuration components} +% +% Here we provide the comands that are used to define code for the +% socket \socket{build/column/outputbox}. The all manipulate the +% \cs{@outputbox} box in one way or another. +% +% +% \begin{macro}{\@outputbox@append} +% \changes{v1.4m}{2025/02/14}{Macro added} +% +% This general purpose command alters the \cs{@outputbox} box by +% appending material to it. As this is a box typesetting operation +% we make sure that the last line of the box reflects the true +% depth of the last line (in case that is needed later). We also +% expose the current depth of \cs{@outputbox} as +% \cs{@outputbox@depth} before unboxing so that its value can be +% used by \verb=#1= if wanted. +% \begin{macrocode} +\def\@outputbox@append #1{% + \setbox\@outputbox \vbox {% +% \end{macrocode} +% This |\boxmaxdepth| setting is to ensure that deep footnotes +% do not overwrite the footer (on account of the negative skip +% added later): it should use |\@maxdepth| otherwise the change is +% pointless when there are footnotes. +% +% But see also its use when combining floats. +% \changes{v1.0l}{1994/03/15}{\cs{maxdepth} changed to \cs{@maxdepth}} +% \begin{macrocode} + \boxmaxdepth \@maxdepth + \@outputbox@depth\dp\@outputbox % if needed in #1 + \unvbox \@outputbox + #1% + }% +} +% \end{macrocode} +% \end{macro} +% +% +% +% +% +% \begin{macro}{\@outputbox@appendfootnotes} +% \changes{v1.4m}{2025/02/14}{Macro added} +% +% This command appends the footnotes to the \cs{@outputbox} (if +% there are any). If not, then it does nothing. +% \begin{macrocode} +\def\@outputbox@appendfootnotes {% + \ifvoid\footins \else +% \end{macrocode} +% Handling split footnotes need further work so this is for the +% moment just a dummy that does nothing. It might vanish and get +% replaced by a socket eventually. +% \task{fmi}{The code for handling split footnotes will get revised as part +% of socket handling in the future} +% \begin{macrocode} + \@makecol@handlesplitfootnotes +% \end{macrocode} +% +% The following socket can be used to manipulate the material in +% \cs{footins} box, for example, if the footnotes are to be presented +% all together in a single paragraph. By default it does nothing. +% \begin{macrocode} + \UseSocket{build/column/footnotes}% +% \end{macrocode} +% Then the footnotes are appended: +% \begin{macrocode} + \@outputbox@append{% + \vskip \skip\footins +% \end{macrocode} +% This is socket adjusts the tagging of the \cs{footins} box, if necessary. +% \begin{macrocode} + \UseTaggingSocket{build/column/footins}% +% \end{macrocode} +% +% \begin{macrocode} + \color@begingroup + \normalcolor + \footnoterule +% \end{macrocode} +% Support for \pkg{pdfcolfoot}, eventually this can go once color +% is properly supported. The csname is constructed in case the command +% is not defined, i.e., the package not loaded. +% \task{fmi}{Fix when no longer needed} +% \begin{macrocode} + \csname pdfcolfoot@current\endcsname + \unvbox \footins + \color@endgroup + }% + \fi +} +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{\@makecol@handlesplitfootnotes} +% For future extensions \ldots +% \begin{macrocode} +\let \@makecol@handlesplitfootnotes \@empty +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@outputbox@attachfloats} +% \changes{v1.4m}{2025/02/14}{Macro added} +% \begin{macro}{\@outputbox@attachtopfloats} +% \changes{v1.4m}{2025/02/14}{Macro added} +% \begin{macro}{\@outputbox@attachbottomfloats} +% \changes{v1.4m}{2025/02/14}{Macro added} +% Attaching top and bottom floats can usually be done in one go, +% but for special layouts we might want more control so we provide +% also separate commands. +% +% The next command was called \cs{@combinefloats} in the past. +% \begin{macrocode} +\def \@outputbox@attachfloats {% + \ifx \@toplist\@empty \else \@cflt \fi + \ifx \@botlist\@empty \else \@cflb \fi +} +% \end{macrocode} +% +% \begin{macrocode} +\def \@outputbox@attachtopfloats {% + \ifx \@toplist\@empty \else \@cflt \fi +} +\def \@outputbox@attachbottomfloats {% + \ifx \@botlist\@empty \else \@cflb \fi +} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% +% The next three conditionals might be useful when setting up running +% headers and footers so perhaps they should be change to CamelCase +% names. For now they are internal. +% +% \begin{macro}{\@if@flushbottom@TF} +% \changes{v1.4m}{2025/02/14}{Macro added} +% Test for \cs{flushbottom} (currently not used). +% \begin{macrocode} +\def\@if@flushbottom@TF{% + \ifx\@textbottom\relax + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi +} +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{\@if@footnotes@TF} +% \changes{v1.4m}{2025/02/14}{Macro added} +% Test if footnotes are present on the current page. +% \begin{macrocode} +\def\@if@footnotes@TF{% + \ifvoid\footins + \expandafter\@secondoftwo + \else + \expandafter\@firstoftwo + \fi +} +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{\@if@bottomfloats@TF} +% \changes{v1.4m}{2025/02/14}{Macro added} +% Test if bottom floats are around. +% \begin{macrocode} +\def\@if@bottomfloats@TF{% + \ifx \@botlist\@empty + \expandafter\@secondoftwo + \else + \expandafter\@firstoftwo + \fi +} +% \end{macrocode} +% \end{macro} +% +% +% +% +% +% +% +% \subsubsection{Configuration sockets} +% +% \changes{v1.4m}{2025/02/14}{Use sockets and hooks in OR} +% +% \begin{socketdecl}{build/column/outputbox} +% \changes{v1.4m}{2025/02/14}{Socket added} +% We have one socket that is supposed to augment the \cs{@outputbox} +% by attaching floats and footnotes with appropriate spacing. +% \begin{macrocode} +\NewSocket{build/column/outputbox}{0} +% \end{macrocode} +% \end{socketdecl} +% +% +% The following plugs are available for +% this socket: +% +% \begin{plugdecl}{space-footnotes-floats} +% After the galley text there is a vertical \cs{vfill} followed by +% any footnotes followed by the bottom floats, if any. +% \begin{macrocode} +\NewSocketPlug {build/column/outputbox}{space-footnotes-floats} {% + \@if@footnotes@TF + {\@outputbox@append{\vfill}}% + {\@if@bottomfloats@TF + {\@outputbox@append{\vfill}}% + {\@outputbox@reinsertbskip}% + }% + \@outputbox@appendfootnotes + \@outputbox@attachfloats +} +% \end{macrocode} +% \end{plugdecl} +% +% \begin{plugdecl}{footnotes-space-floats} +% As before but the \cs{vfill} is between footnotes and floats. +% \begin{macrocode} +\NewSocketPlug {build/column/outputbox}{footnotes-space-floats} {% + \@outputbox@appendfootnotes + \@if@bottomfloats@TF + {\@outputbox@append{\vfill}}% + {\@outputbox@reinsertbskip}% + \@outputbox@attachfloats +} +% \end{macrocode} +% \end{plugdecl} +% +% \begin{plugdecl}{floats-space-footnotes} +% Floats immediately after the galley text and footnotes at the bottom. +% \begin{macrocode} +\NewSocketPlug {build/column/outputbox}{floats-space-footnotes} {% + \@outputbox@attachfloats + \@if@footnotes@TF + {\@outputbox@append{\vfill}}% + {\@outputbox@reinsertbskip}% + \@outputbox@appendfootnotes +} +% \end{macrocode} +% \end{plugdecl} +% +% \begin{plugdecl}{space-floats-footnotes} +% Both floats and footnotes are pushed to the bottom with +% footnotes last.\footnote{There are two more +% permutations, but neither of them has ever been requested so +% they aren't set up by default --- doing that in a class +% would be trivial though.} +% \begin{macrocode} +\NewSocketPlug {build/column/outputbox}{space-floats-footnotes} {% + \@if@footnotes@TF + {\@outputbox@append{\vfill}}% + {\@if@bottomfloats@TF + {\@outputbox@append{\vfill}}% + {\@outputbox@reinsertbskip}}% + \@outputbox@attachfloats + \@outputbox@appendfootnotes +} +% \end{macrocode} +% \end{plugdecl} +% +% +% +% \begin{plugdecl}{floats-footnotes} +% All excess space has to be distributed across the existing +% glue on the page, e.g., within the text galley, the +% separation between blocks, etc. +% The order is text, floats, footnotes. +% \begin{macrocode} +\NewSocketPlug {build/column/outputbox}{floats-footnotes} {% + \@outputbox@attachfloats + \@outputbox@appendfootnotes +% \end{macrocode} +% We do reinsert the bottom skip from \cs{newpage} if it +% was taken out earlier. This is, strictly speaking, not necessary +% in most cases, but it is a \cs{vfil} while \cs{raggedbottom} is +% only generating \verb=\vspace{0pt plus .0001fil}=, so if you have +% several \cs{vfil} on the page before the \cs{newpage} you would +% alter the space distribution if one is taken out. +% \begin{macrocode} + \@outputbox@reinsertbskip +} +% \end{macrocode} +% +% \end{plugdecl} +% +% \begin{plugdecl}{footnotes-floats} +% \begin{macrocode} +\NewSocketPlug {build/column/outputbox}{footnotes-floats} {% + \@outputbox@appendfootnotes + \@outputbox@attachfloats + \@outputbox@reinsertbskip +} +% \end{macrocode} +% The \texttt{footnote-floats} plug implements the layout used by +% \LaTeX{} but with the bottom skip bug corrected. This will be +% the default when \cs{DocumentMetadata} is used; it can be +% overwritten either through \pkg{footmisc} or by assigning any of +% the other plugs (or by coding yet another plug for the socket). +% \end{plugdecl} +% +% \begin{plugdecl}{footnotes-floats-legacy} +% This implements the 2.09 layout (including its bottom skip bug). +% \begin{macrocode} +\NewSocketPlug {build/column/outputbox}{footnotes-floats-legacy} {% +% \end{macrocode} +% In the legacy case we don't really want to take out the bottom +% skip, but rather then altering \cs{@outputbox@removebskip} in +% \cs{makecol} to do nothing, which we would then have to undo in +% each other layout, we simply reinsert the dropped skip +% immediately again. +% \begin{macrocode} + \@outputbox@reinsertbskip + \@outputbox@appendfootnotes + \@outputbox@attachfloats +} +% \end{macrocode} +% The \texttt{footnote-floats-legacy} plug is the default used by +% \LaTeX{} when \cs{DocumentMetadata} is not used; it can be +% overwritten +% either through \pkg{footmisc} or +% by assigning any of the other plugs (or by coding yet another +% plug for the socket). +% \begin{macrocode} +\AssignSocketPlug {build/column/outputbox}{footnotes-floats-legacy} +% \end{macrocode} +% \end{plugdecl} +% +% +% +% +% \begin{socketdecl}{build/column/footnotes} +% +% The socket allowing the manipulation of \cs{footins} box +% (result needs to be moved back in there). Used when footnotes are +% reformatted into a single paragraph by the +% \texttt{para} option of \pkg{footmisc}. By default it does nothing. +% \begin{macrocode} +\NewSocket{build/column/footnotes}{0} +% \end{macrocode} +% \end{socketdecl} +% +% +% +% +% +% +% +% +% +% +% \begin{hookdecl}{build/page/before, +% build/page/after} +% \changes{v1.4m}{2025/02/14}{Hook added} +% Hooks at the start and end of \cs{@outputpage} for use by packages. +% \begin{macrocode} +\NewMirroredHookPair{build/page/before}{build/page/after} +% \end{macrocode} +% \end{hookdecl} +% +% +% +% \begin{hookdecl}{build/page/reset} +% \changes{v1.4m}{2025/02/14}{Hook added} +% Hook in \cs{@outputpage} to reset special galley conventions +% within the output routine. +% \begin{macrocode} +\NewHook {build/page/reset} +% \end{macrocode} +% \end{hookdecl} +% +% +% +% \begin{hookdecl}{build/column/before,build/column/after} +% \changes{v1.4m}{2025/02/14}{Hook added} +% Hooks at the start and end of \cs{@makecol} for use by packages. +% \begin{macrocode} +\NewMirroredHookPair{build/column/before}{build/column/after} +% \end{macrocode} +% \end{hookdecl} +% +% +% +% \begin{macrocode} +% +%\EndIncludeInRelease +%\IncludeInRelease{0000/00/00}% +% {\@makecol}{\@makecol adding hooks/sockets}% +% +%\gdef \@makecol {% +% \ifvoid\footins +% \setbox\@outputbox \box\@cclv +% \else +% \setbox\@outputbox \vbox {% +% \boxmaxdepth \@maxdepth +% \unvbox \@cclv +% \vskip \skip\footins +% \color@begingroup +% \normalcolor +% \footnoterule +% \unvbox \footins +% \color@endgroup +% }% +% \fi +% \let\@elt\relax +% \xdef\@freelist{\@freelist\@midlist}% +% \global \let \@midlist \@empty +% \@combinefloats +% \ifvbox\@kludgeins +% \@makespecialcolbox +% \else +% \setbox\@outputbox \vbox to\@colht {% +% \@texttop +% \dimen@ \dp\@outputbox +% \unvbox \@outputbox +% \vskip -\dimen@ +% \@textbottom +% }% +% \fi +% \global \maxdepth \@maxdepth +%} +% +%\gdef \@makespecialcolbox {% +% \setbox\@outputbox \vbox {% +% \@texttop +% \dimen@ \dp\@outputbox +% \unvbox\@outputbox +% \vskip-\dimen@ +% }% +% \@tempdima \@colht +% \ifdim \wd\@kludgeins>\z@ +% \advance \@tempdima -\ht\@outputbox +% \advance \@tempdima \pageshrink +% \setbox\@outputbox \vbox to \@colht {% +% \unvbox\@outputbox +% \vskip \@tempdima +% \@textbottom +% }% +% \else +% \advance \@tempdima -\ht\@kludgeins +% \setbox \@outputbox \vbox to \@colht {% +% \vbox to \@tempdima {% +% \unvbox\@outputbox +% \@textbottom}% +% \vss}% +% \fi +% {\setbox \@tempboxa \box \@kludgeins}% +%} +% +% \let \@make@normalcolbox \@undefined +% \let \@make@specialcolbox \@undefined +% \let \@outputbox@removebskip \@undefined +% \let \@outputbox@reinsertbskip \@undefined +% +% \let \@outputbox@append \@undefined +% \let \@outputbox@appendfootnotes \@undefined +% \let \@outputbox@attachfloats \@undefined +% \let \@outputbox@attachtopfloats \@undefined +% \let \@outputbox@attachbottomfloats \@undefined +% +% \let \@if@flushbottom@TF \@undefined +% \let \@if@footnotes@TF \@undefined +% \let \@if@bottomfloats@TF \@undefined +% +%\EndIncludeInRelease +%<*2ekernel> +% \end{macrocode} +% +% \begin{macro}{\@reinserts} +% \changes{v1.0e}{1993/12/01}{Command added} +% This is the code which reinserts the inserts. It puts them all +% in one place; this can make some of them come out on the wrong +% page. +% It has been put into a separate macro to expedite experimentation. +% \begin{macrocode} +\gdef \@reinserts{% + \ifvoid\footins\else\insert\footins{\unvbox\footins}\fi + \ifvbox\@kludgeins\insert\@kludgeins + {\unvbox\@kludgeins}\fi +} +% \end{macrocode} +% \end{macro} +% +% +% % % \begin{macro}{\@texttop} % \begin{macro}{\@textbottom} % These do nothing as a default. % \begin{macrocode} -%<*2ekernel> \let \@texttop \relax \let \@textbottom \relax % \end{macrocode} @@ -2028,7 +2810,8 @@ % {New, experimental, versions: need in-lining} % \changes{v1.1s}{1995/11/10}{In-lined} % \changes{v1.1w}{1996/09/21}{Added \cs{@parboxrestore} and made -% consequent deletions: wait for the howls of protest} +% consequent deletions: wait for the howls of protest} +% \changes{v1.4m}{2025/02/14}{Hooks and sockets added} % % The |\color@hbox| hooks here are used to avoid putting just a % colour special into an otherwise empty box (in a header or @@ -2068,7 +2851,20 @@ %\IncludeInRelease{2025/06/01}% % {\@outputpage}{Use new mark mechanism}% %<*2ekernel|latexrelease> -\def\@outputpage{% +% \end{macrocode} +% Temp definition to vanish again when something is offered by the backend: +% \begin{macrocode} +\protected \def \pdfannot@link@on@@ { \csname pdfannot_link_on:\endcsname } +\protected \def \pdfannot@link@off@@ { \csname pdfannot_link_off:\endcsname } +% \end{macrocode} +% +% \begin{macrocode} +\def \@outputpage {% +% \end{macrocode} +% We start with a hook available to packages that want to prepend +% code to \cs{@outputpage}. +% \begin{macrocode} + \UseHook {build/page/before}% % \end{macrocode} % The |\endgroup| is put in by |\aftergroup|. % \begin{macrocode} @@ -2078,7 +2874,12 @@ % % First the stuff for the writes. % -% From here \ldots\ was in the command |\@writesetup|. +% From here on was orginially in the command |\@writesetup|. +% +% The following defenition of \cs{protect} is the one active during +% the \cs{write} statement that migrate out of the \cs{shipout} +% box, so even though it is immediately changed below (inside +% \cs{shipout} it still has to be here! % \begin{macrocode} \let \protect \noexpand % \end{macrocode} @@ -2146,16 +2947,29 @@ \@parboxrestore % \end{macrocode} % \ldots\ to here was in the command |\@writesetup|. +% +% Hook to allow adding resets local to the output routine processing, e.g., +% in \cs{write} or running headers/footers, for packages that set +% up special conventions in the main galley that should not leak +% into the page production just because a page break happens in the +% middle of such an environment. +% \begin{macrocode} + \UseHook {build/page/reset}% +% \end{macrocode} % \begin{macrocode} \shipout \vbox{% +% \end{macrocode} +% Inside the \cs{shipout} box we have a different setting for \cs{protect}. +% \begin{macrocode} \set@typeset@protect \aftergroup \endgroup % \end{macrocode} -% Correct? or just restore by ending the group? +% Once the \cs{shipout} boxs ends \cs{protect} is again +% \cs{noexpand} which is correct for any \cs{write} statements, but +% once they are processed we want to get back to the following setting: % \begin{macrocode} \aftergroup \set@typeset@protect % \end{macrocode} -% This first bit has been moved inside the shipped out box. % % Now the setup inside the shipped out box; this should contain all % the stuff that could only affect typesetting; other stuff may need @@ -2164,13 +2978,18 @@ % From here \ldots\ was in the command |\@shipoutsetup|. % \begin{macrocode} \if@specialpage - \global\@specialpagefalse\@nameuse{ps@\@specialstyle}% + \global \@specialpagefalse + \@nameuse {ps@\@specialstyle}% \fi \if@twoside - \ifodd\count\z@ \let\@thehead\@oddhead \let\@thefoot\@oddfoot - \let\@themargin\oddsidemargin - \else \let\@thehead\@evenhead - \let\@thefoot\@evenfoot \let\@themargin\evensidemargin + \ifodd\count\z@ + \let \@thehead \@oddhead + \let \@thefoot \@oddfoot + \let \@themargin \oddsidemargin + \else + \let \@thehead \@evenhead + \let \@thefoot \@evenfoot + \let \@themargin \evensidemargin \fi \fi % \end{macrocode} @@ -2199,52 +3018,82 @@ % Reset these here (previously reset separately for head and foot) % \changes{v1.2b}{1997/04/14} % {Move \cs{label} and \cs{index} (from patch file)} +% \changes{v1.4l}{2025/01/21}{Support extended syntax +% for \cs{label}, \cs{index}, and \cs{glossary} (gh/311)} +% \changes{v1.4m}{2025/01/23} +% {Make \cs{label}, \cs{index} and \cs{glossary} truely invisible +% when typesetting (gh/1638)} % \begin{macrocode} - \let\label\@gobble - \let\index\@gobble - \let\glossary\@gobble + \let \label \@gobble@with@sphack@om + \let \index \@gobble@with@sphack@som + \let \glossary \@gobble@with@sphack@om % \end{macrocode} % % \begin{macrocode} - \baselineskip\z@skip \lineskip\z@skip \lineskiplimit\z@ + \baselineskip \z@skip + \lineskip \z@skip + \lineskiplimit \z@ % \end{macrocode} % \ldots\ to here was in the command |\@shipoutsetup|. % \begin{macrocode} \@begindvi \vskip \topmargin \moveright\@themargin \vbox {% - \setbox\@tempboxa \vbox to\headheight{% + \setbox\@tempboxa \vbox to\headheight {% \vfil - \color@hbox - \normalcolor - \hb@xt@\textwidth{\@thehead}% - \color@endbox % \end{macrocode} -% 22 Feb 87 -% \begin{macrocode} - }% - \dp\@tempboxa \z@ - \box\@tempboxa +% Tagging socket that receives the header in its second argument to +% surround the header with appropriate tagging structures (first +% argument is unused). If tagging is disabled it returns the +% content of the second argument. +% \begin{macrocode} + \pdfannot@link@off@@ + \UseTaggingSocket{build/page/header}{}% + { + \color@hbox + \normalcolor + \hb@xt@ \textwidth {\@thehead }% + \color@endbox + } + \pdfannot@link@on@@ + } + \dp \@tempboxa \z@ + \box \@tempboxa \vskip \headsep - \box\@outputbox + \box \@outputbox \baselineskip \footskip - \color@hbox - \normalcolor - \hb@xt@\textwidth{\@thefoot}% - \color@endbox - }% - }% +% \end{macrocode} +% Tagging socket that receives the footer in its second argument to +% surround the footer with appropriate tagging structures (first +% argument is unused). If tagging is disabled it returns the +% content of the second argument. +% \begin{macrocode} + \pdfannot@link@off@@ + \UseTaggingSocket{build/page/footer}{}% + { + \color@hbox + \normalcolor + \hb@xt@ \textwidth {\@thefoot }% + \color@endbox + } + \pdfannot@link@on@@ + } + } % \end{macrocode} % |\endgroup| now inserted by |\aftergroup| % % Restore |\if@newlist| % \begin{macrocode} - \global\let\if@newlist\@@if@newlist + \global \let \if@newlist \@@if@newlist % \end{macrocode} % % \begin{macrocode} \global \@colht \textheight \stepcounter{page}% +% \end{macrocode} +% Another hook for packages that want to append material to \cs{@outputpage}. +% \begin{macrocode} + \UseHook {build/page/after}% } %\EndIncludeInRelease % \end{macrocode} @@ -2306,10 +3155,11 @@ % \global \@colht \textheight % \stepcounter{page}% % \end{macrocode} -% It is now clear that this does something useful, thanks to Pieter -% van Oostrum. It is needed because a float page is made without -% using TeX's page-builder; thus the output routine is never called -% so the marks are not updated. +% It is now clear that this does something useful (in the old mark +% mechanism), thanks to Pieter van Oostrum pointing this out. It +% is needed because a float page is made without using TeX's +% page-builder; thus the output routine is never called so the +% marks are not updated. % \begin{macrocode} % \let\firstmark\botmark %} @@ -2401,24 +3251,35 @@ % \end{macrocode} % \end{macro} % +% +% +% +% +% +% \subsubsection{Dealing with floats} +% +% +% % \begin{macro}{\@combinefloats} +% \changes{v1.4m}{2025/02/14}{Macro got a new name} +% Old name for what is now called \cs{@outputbox@attachfloats}; +% kept to support legacy packages. +% \begin{macrocode} +\let \@combinefloats \@outputbox@attachfloats +% \end{macrocode} +% \end{macro} +% +% + % \begin{macro}{\@cflt} % \changes{v1.0h}{1993/12/12}{name changed} % \begin{macro}{\@cflb} -% The |\boxmaxdepth| setting here was not made local to -% a box so was dangerous. It is needed only within the box made -% by |\@cflt| (and not normally even there), so it has been -% moved there; this also agrees with the original pseudocode. -% -% \changes{v1.0h}{1993/12/12}{boxmaxdepth setting moved} -% \begin{macrocode} -\def \@combinefloats {% -% \boxmaxdepth \maxdepth - \ifx \@toplist\@empty \else \@cflt \fi - \ifx \@botlist\@empty \else \@cflb \fi -} -% \end{macrocode} +% The |\boxmaxdepth| setting here was not made local to +% a box so was dangerous. It is needed only within the box made +% by |\@cflt| (and not normally even there), so it has been +% moved there; this also agrees with the original pseudocode. % +% \changes{v1.0h}{1993/12/12}{boxmaxdepth setting moved} % \changes{v1.0h}{1993/12/12}{defs changed to lets} % \begin{macrocode} \def \@cflt{% @@ -2458,7 +3319,7 @@ % \end{macrocode} % \end{macro} % \end{macro} -% \end{macro} +% % % \begin{macro}{\@comflelt} % \begin{macro}{\@comdblflelt} @@ -2953,7 +3814,7 @@ % % \changes{v1.2n}{2015/01/14}{float order in 2-column (latexrelease)} % \begin{macrocode} -%\IncludeInRelease{2015/01/01}% +%\IncludeInRelease{2025/06/01}% % {\@addtocurcol}{float order in 2-column}% %<*2ekernel|latexrelease|fltrace|flafter> \def \@addtocurcol {% @@ -3001,6 +3862,13 @@ % \fi \advance \@reqcolroom \ht\@currbox +% \end{macrocode} +% We save the current value of \cs{@reqcolroom} so that we can +% return to this value later, in case a test fails that may have added +% something to it. +% \changes{v1.4n}{2025/01/29}{Save current value of \cs{@reqcolroom} (gh/1645)} +% \begin{macrocode} + \saved@reqcolroom \@reqcolroom %<*trace> \fl@trace{float size = \the \ht \@currbox (addtocurcol)}% \fl@trace{colroom = \the \@colroom (addtocurcol)}% @@ -3166,6 +4034,158 @@ }% % %\EndIncludeInRelease +% \end{macrocode} +% The rollback code is rather complicated as it has to account for +% the fact that we roll back not just the kernel but also the +% packages \pkg{flafter} and \pkg{fltrace}. +% \begin{macrocode} +%\IncludeInRelease{2015/01/01}% +% {\@addtocurcol}{float order in 2-column}% +%\def \@addtocurcol {% +%<*trace> +% \fl@trace{***Start addtocurcol}% +% +% \@insertfalse +% \@setfloattypecounts +% \ifnum \@fpstype=8 +%<*trace> +% \fl@trace{fpstype !p only (addtocurcol): \the \@fpstype = 8?}% +% +% \else +% \ifnum \@fpstype=24 +%<*trace> +% \fl@trace{fpstype p only (addtocurcol): \the \@fpstype = 24?}% +% +% \else +% \@flsettextmin +%<*trace> +% \fl@trace{textfloatsheight (before) = \the \@textfloatsheight}% +% +% \advance \@textmin \@textfloatsheight +% \@reqcolroom \@pageht +%<*trace> +% \fl@trace{textmin + textfloatsheight: \the \@textmin}% +% \fl@trace{page-so-far: \the \@reqcolroom}% +% +% \ifdim \@textmin>\@reqcolroom +% \@reqcolroom \@textmin +%<*trace> +% \fl@trace{ORD? textmin being used}% +% +% \fi +% \advance \@reqcolroom \ht\@currbox +%<*trace> +% \fl@trace{float size = \the \ht \@currbox (addtocurcol)}% +% \fl@trace{colroom = \the \@colroom (addtocurcol)}% +% \fl@trace{reqcolroom = \the \@reqcolroom (addtocurcol)}% +% +% \ifdim \@colroom>\@reqcolroom +% \@flsetnum \@colnum +% \ifnum \@colnum>\z@ +% \@bitor\@currtype\@deferlist +% \@testwrongwidth\@currbox +%<*trace> +% \fl@trace{deferlist: \@deferlist: (addtocurcol-before)}% +% +% \if@test +%<*trace> +% \fl@trace{type already on list: defer (addtocurcol)}% +% +% \else +% \@bitor\@currtype\@botlist +%<*trace> +% \fl@trace{botlist: \@botlist: (addtocurcol-before)}% +% +% \if@test +%<*trace> +% \fl@trace{type already on list: bot---sent to addtobot}% +% +% \@addtobot +% \else +%<*trace> +% \fl@trace{fpstype \ifodd \@tempcnta OK \else not \fi +% here: \the \@fpstype}% +% +% \ifodd \count\@currbox +% \advance \@reqcolroom \intextsep +% \ifdim \@colroom>\@reqcolroom +% \global \advance \@colnum \m@ne +% \global \advance \@textfloatsheight \ht\@currbox +% \global \advance \@textfloatsheight 2\intextsep +% \@cons \@midlist \@currbox +%<*trace> +% \fl@trace{***Success: here}% +% \fl@trace{textfloatsheight (after-here) = +% \the \@textfloatsheight}% +% \fl@trace{colnum (after-here) = \the \@colnum}% +% +% \if@nobreak +% \nobreak +% \@nobreakfalse +% \everypar{}% +% \else +% \addpenalty \interlinepenalty +% \fi +% \vskip \intextsep +% \box\@currbox +% \penalty\interlinepenalty +% \vskip\intextsep +% \ifnum\outputpenalty <-\@Mii \vskip -\parskip\fi +% \outputpenalty \z@ +% \@inserttrue +%<*trace> +% \else +% \fl@trace{Fail---no room at 2nd test of colroom +% (addtocorcol \string\intextsep)}% +% +% \fi +% \fi +% \if@insert +% \else +%<*trace> +% \fl@trace{not here: sent to addtotoporbot}% +% +% \@addtotoporbot +%<*trace> +% \fl@trace{not here: sent to addtobot}% +% +% \@addtobot +% \fi +% \fi +% \fi +%<*trace> +% \else +% \fl@trace{Fail: colnum = \the \@colnum: +% fpstype \the \@fpstype=ORD?}% +% \ifnum \@fpstype<\sixt@@n +% \fl@trace{ERROR: BANG float not successful (addtocurcol)}% +% \fi +% +% \fi +%<*trace> +% \else +% \fl@trace{Fail---no room: fl box ht: \the \ht \@currbox +% (addtocurcol)}% +% +% \fi +% \fi +% \fi +% \if@insert +% \else +% \@resethfps +%<*trace> +% \fl@trace{put on deferlist (addtocurcol)}% +% +% \@cons\@deferlist\@currbox +%<*trace> +% \fl@trace{deferlist: \@deferlist: (addtocurcol-after)}% +% +% \fi +%}% +% \end{macrocode} +% +% \begin{macrocode} +%\EndIncludeInRelease %\IncludeInRelease{0000/00/00}% % {\@addtocurcol}{float order in 2-column}% %\def \@addtocurcol {% @@ -3398,7 +4418,7 @@ % \changes{v1.2n}{2015/01/14}{float order in 2-column (latexrelease)} % \changes{v1.4b}{2017/12/17}{fix doc guards} % \begin{macrocode} -%\IncludeInRelease{2015/01/01} +%\IncludeInRelease{2025/06/01} % {\@addtonextcol}{float order in 2-column}% %<*2ekernel|latexrelease|fltrace> \def\@addtonextcol{% @@ -3427,6 +4447,11 @@ \fl@trace{float size: \the \@reqcolroom (addtonextcol)}% % \advance \@reqcolroom \@textmin +% \end{macrocode} +% +% \changes{v1.4n}{2025/01/29}{Save current value of \cs{@reqcolroom} (gh/1645)} +% \begin{macrocode} + \saved@reqcolroom \@reqcolroom %<*trace> \fl@trace{colroom = \the \@colroom (addtonextcol)}% \fl@trace{reqcolroom = \the \@reqcolroom (addtonextcol)}% @@ -3486,6 +4511,92 @@ }% % %\EndIncludeInRelease +% \end{macrocode} +% +% \begin{macrocode} +%\IncludeInRelease{2015/01/01} +% {\@addtonextcol}{float order in 2-column}% +%\def\@addtonextcol{% +% \begingroup +%<*trace> +% \fl@trace{***Start addtonextcol}% +% +% \@insertfalse +% \@setfloattypecounts +% \ifnum \@fpstype=8 +%<*trace> +% \fl@trace{fpstype not curcol: \the \@fpstype = 8?}% +% +% \else +% \ifnum \@fpstype=24 +%<*trace> +% \fl@trace{fpstype not curcol: \the \@fpstype = 24?}% +% +% \else +% \@flsettextmin +%<*trace> +% \fl@trace{text-so-far: 0pt (top of col)}% +% +% \@reqcolroom \ht\@currbox +%<*trace> +% \fl@trace{float size: \the \@reqcolroom (addtonextcol)}% +% +% \advance \@reqcolroom \@textmin +%<*trace> +% \fl@trace{colroom = \the \@colroom (addtonextcol)}% +% \fl@trace{reqcolroom = \the \@reqcolroom (addtonextcol)}% +% +% \ifdim \@colroom>\@reqcolroom +% \@flsetnum \@colnum +% \ifnum\@colnum>\z@ +% \@bitor\@currtype\@deferlist +%<*trace> +% \fl@trace{deferlist: \@deferlist: (addtonextcol-before)}% +% +% \@testwrongwidth\@currbox +% \if@test +%<*trace> +% \fl@trace{type already on list: defer (addtonextcol)}% +% +% \else +%<*trace> +% \fl@trace{sent to addtotoporbot (addtonextcol)}% +% +% \@addtotoporbot +% \fi +% \fi +%<*trace> +% \else +% \fl@trace{Fail---no room: fl box ht: \the \ht \@currbox +% (addtonextcol)}% +% +% \fi +% \fi +% \fi +% \if@insert +% \else +%<*trace> +% \fl@trace{put back on deferlist (addtonextcol)}% +% +% \@cons\@deferlist\@currbox +%<*trace> +% \fl@trace{deferlist: \@deferlist: (addtonextcol-after)}% +% +% \fi +%<*trace> +% \fl@trace{End of addtonextcol -- locally counts:}% +% \fl@trace{col: \the\@colnum. top: \the \@topnum. bot: \the \@botnum.}% +% +% \endgroup +%<*trace> +% \fl@trace{End of addtonextcol -- globally counts:}% +% \fl@trace{col: \the\@colnum. top: \the \@topnum. bot: \the \@botnum.}% +% +%}% +%\EndIncludeInRelease +% \end{macrocode} +% +% \begin{macrocode} %\IncludeInRelease{0000/00/00}% % {\@addtonextcol}{float order in 2-column}% %\def\@addtonextcol{% @@ -3924,21 +5035,18 @@ % This part of the file is part of the implementation of the following % two new commands for \LaTeX2e{}. % -% -% \begin{verbatim} +%\begin{verbatim} % \enlargethispage{} -% \end{verbatim} -% +%\end{verbatim} % Adds || to the height of the current column only. On the printed % page the bottom of this column is extended downwards by exactly % || without having any effect on the placement of the footer; this % may result in an overprinting. % -% \begin{verbatim} +%\begin{verbatim} % \enlargethispage*{} -% \end{verbatim} -% -% Similar to |\enlargethispage| but it tries to squeeze the column to +%\end{verbatim} +%% Similar to |\enlargethispage| but it tries to squeeze the column to % be printed in as small a space as possible, ie it uses any % shrinkability in the column. If the column was not explicitly broken % (\eg with |\pagebreak|) this may result in an overfull box message but @@ -4317,12 +5425,29 @@ \newcount \@fpstype \newdimen \@reqcolroom \newdimen \@textfloatsheight -% % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % +% +% \begin{macro}{\saved@reqcolroom} +% Saved value of \cs{@reqcolroom}; this is needed when making several tests. +% \begin{macrocode} +% +%<*2ekernel|latexrelease> +%\IncludeInRelease{2025/06/01}% +% {\saved@reqcolroom}{float placement calculation}% +\newdimen \saved@reqcolroom +% +%\EndIncludeInRelease +%\IncludeInRelease{0000/00/00}% +% {\saved@reqcolroom}{float placement calculation}% +%\let \saved@reqcolroom \@undefined +%\EndIncludeInRelease +% \end{macrocode} +% \end{macro} +% % \begin{macro}{\@fpsadddefault} % \changes{v1.0f}{1993/12/05}{Command added} % Adds the default placement to what is already there. @@ -4563,7 +5688,18 @@ % Sets |@tempswa| true if there is room for |\@currbox|. % % \begin{macrocode} +% +%<*2ekernel|fltrace|latexrelease> +%\IncludeInRelease{2025/06/01}% +% {\@flcheckspace}{float placement calculation}% \def \@flcheckspace #1#2{% +% \end{macrocode} +% When this test is executed, the value of \cs{@reqcolroom} may +% no longer be correct due to a previous test that altered it. We +% therefore reset it to a value saved earlier. +% \changes{v1.4n}{2025/01/29}{Reset current value of \cs{@reqcolroom} (gh/1645)} +% \begin{macrocode} + \@reqcolroom \saved@reqcolroom \advance \@reqcolroom \ifx #2\@empty \textfloatsep \else \floatsep \fi %<*trace> @@ -4589,7 +5725,7 @@ \fl@trace{BANG float ignoring #1 (flcheckspace \string#1 \string#2):}% \fl@trace{\@spaces #1 = \the #1. Ht float: \the \ht \@currbox - BANG}% + \space BANG}% % \@tempswatrue %<*trace> @@ -4597,7 +5733,7 @@ \fl@trace{Fail---no room (flcheckspace \string#1 \string#2) (fpstype \the \@fpstype=ORD?):}% \fl@trace{\@spaces #1 = \the #1. Ht float: \the \ht \@currbox - ORD?}% + \space ORD?}% % \fi \fi @@ -4608,7 +5744,60 @@ % \fi } -% +% +% \end{macrocode} +% +% \begin{macrocode} +%\EndIncludeInRelease +%\IncludeInRelease{0000/00/00}% +% {\@flcheckspace}{float placement calculation}% +% +%\def \@flcheckspace #1#2{% +% \advance \@reqcolroom +% \ifx #2\@empty \textfloatsep \else \floatsep \fi +%<*trace> +% \fl@trace{colroom = \the \@colroom +% (flcheckspace \string#1 \string#2)}% +% \fl@trace{reqcolroom = \the \@reqcolroom +% (flcheckspace \string#1 \string#2)}% +% +% \ifdim \@colroom>\@reqcolroom +% \ifdim #1>\ht\@currbox +% \@tempswatrue +%<*trace> +% \fl@trace{Space OK: #1 = \the #1 > \the \ht \@currbox +% (flcheckspace \string#1 \string#2)}% +% +% \else +%<*trace> +% \fl@trace{fpstype: \the \@fpstype +% (flcheckspace \string#1 \string#2)}% +% +% \ifnum \@fpstype<\sixt@@n +%<*trace> +% \fl@trace{BANG float ignoring #1 +% (flcheckspace \string#1 \string#2):}% +% \fl@trace{\@spaces #1 = \the #1. Ht float: \the \ht \@currbox +% \space BANG}% +% +% \@tempswatrue +%<*trace> +% \else +% \fl@trace{Fail---no room (flcheckspace \string#1 \string#2) +% (fpstype \the \@fpstype=ORD?):}% +% \fl@trace{\@spaces #1 = \the #1. Ht float: \the \ht \@currbox +% \space ORD?}% +% +% \fi +% \fi +%<*trace> +% \else +% \fl@trace{Fail---no room at 2nd test of colroom +% (flcheckspace \string#1 \string#2)}% +% +% \fi +%} +%\EndIncludeInRelease % \end{macrocode} % \end{macro} % diff --git a/Master/texmf-dist/source/latex-dev/base/ltpage.dtx b/Master/texmf-dist/source/latex-dev/base/ltpage.dtx index 25bb5a5a26d..8baa95c46bb 100644 --- a/Master/texmf-dist/source/latex-dev/base/ltpage.dtx +++ b/Master/texmf-dist/source/latex-dev/base/ltpage.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2024 +% Copyright (C) 1993-2025 % The LaTeX Project and any individual authors listed elsewhere % in this file. % @@ -204,7 +204,7 @@ % error (pr/3203).} % \changes{v1.0m}{2020/07/27}{Don't make the command \cs{long} (gh/354)} % \changes{v1.0n}{2022/04/04}{Interface with new mark mechanism} -% \changes{v1.1a}{2025/06/01}{} +% \changes{v1.0o}{2024/11/16}{Drop legacy mark support} % \begin{macrocode} \ExplSyntaxOn \DeclareRobustCommand*\markboth[2]{% @@ -216,7 +216,7 @@ % % \changes{v1.0m}{2020/07/27}{Don't make the command \cs{long} (gh/354)} % \changes{v1.0n}{2022/04/04}{Interface with new mark mechanism} -% \changes{v1.1a}{2025/06/01}{} +% \changes{v1.0o}{2024/11/16}{Drop legacy mark support} % \begin{macrocode} \DeclareRobustCommand*\markright[1]{% \mark_insert:nn{2e-right}{#1} diff --git a/Master/texmf-dist/source/latex-dev/base/ltpageno.dtx b/Master/texmf-dist/source/latex-dev/base/ltpageno.dtx index da80dbaab73..5f2704676e3 100644 --- a/Master/texmf-dist/source/latex-dev/base/ltpageno.dtx +++ b/Master/texmf-dist/source/latex-dev/base/ltpageno.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2024 +% Copyright (C) 1993-2025 % The LaTeX Project and any individual authors listed elsewhere % in this file. % diff --git a/Master/texmf-dist/source/latex-dev/base/ltpar.dtx b/Master/texmf-dist/source/latex-dev/base/ltpar.dtx index 200d3b4238b..5e8e2bd89ae 100644 --- a/Master/texmf-dist/source/latex-dev/base/ltpar.dtx +++ b/Master/texmf-dist/source/latex-dev/base/ltpar.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2024 +% Copyright (C) 1993-2025 % The LaTeX Project and any individual authors listed elsewhere % in this file. % diff --git a/Master/texmf-dist/source/latex-dev/base/ltpara.dtx b/Master/texmf-dist/source/latex-dev/base/ltpara.dtx index b7b895350d2..bfc307062ce 100644 --- a/Master/texmf-dist/source/latex-dev/base/ltpara.dtx +++ b/Master/texmf-dist/source/latex-dev/base/ltpara.dtx @@ -1,7 +1,7 @@ % \iffalse meta-comment % %% File: ltpara.dtx -%% Copyright (C) 2020-2024 +%% Copyright (C) 2020-2025 %% Frank Mittelbach, The LaTeX Project % % It may be distributed and/or modified under the conditions of the @@ -17,7 +17,7 @@ %<*driver> % \fi \ProvidesFile{ltpara.dtx} - [2024/06/29 v1.0n LaTeX Kernel (paragraph hooks)] + [2025/02/07 v1.0n LaTeX Kernel (paragraph hooks)] % \iffalse % \documentclass{l3doc} @@ -548,6 +548,7 @@ % At the start of the paragraph increment both sequence counter and % level and also save the then current sequence number on our stack. %\begin{verbatim} +% \makeatletter % because we use a few internal 2e commands % \AddToHook{para/begin}{% % \stepcounter{paracnt}\stepcounter{paralevel}% % \ParaPush @@ -821,7 +822,7 @@ } % \end{macrocode} % \changes{v1.0n}{2024/06/23} -% {Append \cs{everypar} toks to \cs{g_@@_standard_everypar_tl}, +% {Append \cs{everypar} toks to \cs{g__para_standard_everypar_tl}, % rollback 2023/06/01 (gh/1386)} % \begin{macrocode} %\cs_set:Npn \@@_tmp:w #1#2#3#4#5 { } diff --git a/Master/texmf-dist/source/latex-dev/base/ltpictur.dtx b/Master/texmf-dist/source/latex-dev/base/ltpictur.dtx index c6fc5236a5f..38d7f64571c 100644 --- a/Master/texmf-dist/source/latex-dev/base/ltpictur.dtx +++ b/Master/texmf-dist/source/latex-dev/base/ltpictur.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2024 +% Copyright (C) 1993-2025 % The LaTeX Project and any individual authors listed elsewhere % in this file. % diff --git a/Master/texmf-dist/source/latex-dev/base/ltplain.dtx b/Master/texmf-dist/source/latex-dev/base/ltplain.dtx index 83330dd3685..b43a57fcb28 100644 --- a/Master/texmf-dist/source/latex-dev/base/ltplain.dtx +++ b/Master/texmf-dist/source/latex-dev/base/ltplain.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2024 +% Copyright (C) 1993-2025 % The LaTeX Project and any individual authors listed elsewhere % in this file. % diff --git a/Master/texmf-dist/source/latex-dev/base/ltproperties.dtx b/Master/texmf-dist/source/latex-dev/base/ltproperties.dtx index 6351d08c872..185359802e8 100644 --- a/Master/texmf-dist/source/latex-dev/base/ltproperties.dtx +++ b/Master/texmf-dist/source/latex-dev/base/ltproperties.dtx @@ -2,7 +2,7 @@ % % File: ltproperties.dtx % -% Copyright (C) 2023-2024 The LaTeX Project +% Copyright (C) 2023-2025 The LaTeX Project % % It may be distributed and/or modified under the conditions of the % LaTeX Project Public License (LPPL), either version 1.3c of this @@ -30,7 +30,7 @@ %<*driver> % \fi \ProvidesFile{ltproperties.dtx} - [2024/11/05 v1.0i LaTeX Kernel (Properties)] + [2024/11/28 v1.0i LaTeX Kernel (Properties)] % \iffalse % \documentclass[full]{l3doc} @@ -225,7 +225,7 @@ % \cs{property_ref_undefined_warn:} % \end{syntax} % \LaTeXe{}-interface: not provided.\\ -% The commands triggers the standard warning +% Triggers the standard warning % \\ % \hspace*{1em}\texttt{LaTeX Warning: There were undefined references.} % \\ @@ -239,8 +239,8 @@ % \begin{syntax} % \cs{property_ref_undefined_warn:n} \Arg{label} % \end{syntax} -% \LaTeXe{}-interface: not provided.\\ -% The commands triggers the standard warning\\ +% \LaTeXe{}-interface: not provided.\\ +% Triggers the standard warning\\ % \hspace*{1em}\texttt{LaTeX Warning: There were undefined references.} % \\ % at the end of the document if \meta{label} is not known. @@ -254,7 +254,7 @@ % \cs{property_ref_undefined_warn:nn} \Arg{label} \Arg{property} % \end{syntax} % \LaTeXe{}-interface: see \cs{RefUndefinedWarn}.\\ -% The commands triggers the standard warning\\ +% Triggers the standard warning\\ % \hspace*{1em}% % \texttt{LaTeX Warning: There were undefined references.}\\ % at the end of the document if the reference can not be resolved. @@ -374,7 +374,7 @@ % \begin{syntax} % \cs{RefUndefinedWarn} \Arg{label} \Arg{property} % \end{syntax} -% This commands triggers the standard warning\\ +% Triggers the standard warning\\ % \hspace*{1em}% % \texttt{LaTeX Warning: There were undefined references.}\\ % at the end of the document if the reference for \meta{label} and \meta{property} diff --git a/Master/texmf-dist/source/latex-dev/base/ltsect.dtx b/Master/texmf-dist/source/latex-dev/base/ltsect.dtx index 21aeda32e02..2bab4f3a13f 100644 --- a/Master/texmf-dist/source/latex-dev/base/ltsect.dtx +++ b/Master/texmf-dist/source/latex-dev/base/ltsect.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2024 +% Copyright (C) 1993-2025 % The LaTeX Project and any individual authors listed elsewhere % in this file. % @@ -31,7 +31,7 @@ %%% From File: ltsect.dtx %<*driver> % \fi -\ProvidesFile{ltsect.dtx}[2024/03/25 v1.1f LaTeX Kernel (Sectioning)] +\ProvidesFile{ltsect.dtx}[2025/01/23 v1.1h LaTeX Kernel (Sectioning)] % \iffalse \documentclass{ltxdoc} \GetFileInfo{ltsect.dtx} @@ -762,8 +762,8 @@ % \end{macro} % % \begin{macro}{\addcontentsline} -% The |\addcontentsline{|\meta{table}|}{|\meta{type}|}{|% -% \meta{entry}|}| command allows the user to add +% The |\addcontentsline{|\meta{table}|}{|\meta{type}|}{|\meta{entry}|}| +% command allows the user to add % his/her own entry to a table of contents, etc. The command adds the % entry |\contentsline{|\meta{type}|}{|\meta{entry}|}{|\meta{page}|}{}| % to the |.|\meta{table} file. @@ -815,20 +815,84 @@ % \end{macrocode} % \end{macro} % -% \changes{v1.0c}{1994/05/20}{Correct setting of \cs{protect}.} -% \changes{v1.0h}{1994/11/04}{Added \cs{protected@write} to -% \cs{addtocontents}. ASAJ.} +% +% +% +% +% \begin{macro}{\@gobble@om,\@gobble@som,\@gobble@with@sphack@om,\@gobble@with@sphack@som} +% +% Each of these four commands accepts an optional and a mandatory +% argument, possibly preceeded by a star. In all cases the +% expansion is empty or just manipulates the spaces around the command. +% Used to disable commands such as \cs{index} +% or \cs{label} in certain situations. +% \begin{macrocode} +% +%<*2ekernel|latexrelease> +%\IncludeInRelease{2025/06/01}% +% {\@gobble@som}{Extended index/label}% +% \end{macrocode} +% +% Just getting rid of the input in an expandable way is done by these two. +% \changes{v1.1g}{2025/01/21} +% {Support extended syntax for \cs{label}, \cs{index} and \cs{glossary} (gh/311)} +% \begin{macrocode} +\DeclareExpandableDocumentCommand\@gobble@om{+o+m}{} +\DeclareExpandableDocumentCommand\@gobble@som{s+o+m}{} +% \end{macrocode} +% +% When something needs to be suppressed during typesetting, one often +% also wants to ensure that this doesn't end up with two spaces (in +% case there is one before and one after). This can't be done expandably. +% \changes{v1.1h}{2025/01/23} +% {Make \cs{label}, \cs{index} and \cs{glossary} truely invisible +% when typesetting (gh/1638)} +% \begin{macrocode} +\DeclareDocumentCommand\@gobble@with@sphack@om{+o+m}{\@bsphack\@esphack} +\DeclareDocumentCommand\@gobble@with@sphack@som{s+o+m}{\@bsphack\@esphack} +% \end{macrocode} +% \end{macro} +% +% +% +% +% % \begin{macro}{\addtocontents} % % The |\addtocontents{|\meta{table}|}{|\meta{text}|}| command % adds \meta{text} to the |.|\meta{table} file, with no % page number. % +% \changes{v1.0c}{1994/05/20}{Correct setting of \cs{protect}.} +% \changes{v1.0h}{1994/11/04}{Added \cs{protected@write} to +% \cs{addtocontents}. ASAJ.} +% \changes{v1.1g}{2025/01/21}{Support extended syntax +% for \cs{label}, \cs{index}, and \cs{glossary} (gh/311)} % \begin{macrocode} \long\def\addtocontents#1#2{% \protected@write\@auxout - {\let\label\@gobble \let\index\@gobble \let\glossary\@gobble}% + {\let\label\@gobble@om + \let\index\@gobble@som + \let\glossary\@gobble@om}% {\string\@writefile{#1}{#2}}} +% +%\EndIncludeInRelease +% \end{macrocode} +% +% \begin{macrocode} +%\IncludeInRelease{0000/00/00}% +% {\@gobble@som}{Extended index/label}% +%\long\def\addtocontents#1#2{% +% \protected@write\@auxout +% {\let\label\@gobble \let\index\@gobble \let\glossary\@gobble}% +% {\string\@writefile{#1}{#2}}} +% +%\let\@gobble@om\@undefined +%\let\@gobble@som\@undefined +%\let\@gobble@with@sphack@om\@undefined +%\let\@gobble@with@sphack@som\@undefined +%\EndIncludeInRelease +%<*2ekernel> % \end{macrocode} % \end{macro} % diff --git a/Master/texmf-dist/source/latex-dev/base/ltshipout.dtx b/Master/texmf-dist/source/latex-dev/base/ltshipout.dtx index c2e70ba6d54..a15bbb88f76 100644 --- a/Master/texmf-dist/source/latex-dev/base/ltshipout.dtx +++ b/Master/texmf-dist/source/latex-dev/base/ltshipout.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment %% -%% Copyright (C) 2020-2024 +%% Copyright (C) 2020-2025 %% Frank Mittelbach, The LaTeX Project %% % diff --git a/Master/texmf-dist/source/latex-dev/base/ltsockets.dtx b/Master/texmf-dist/source/latex-dev/base/ltsockets.dtx index a977f8f6aa5..999874e4186 100644 --- a/Master/texmf-dist/source/latex-dev/base/ltsockets.dtx +++ b/Master/texmf-dist/source/latex-dev/base/ltsockets.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 2023-2024 +% Copyright (C) 2023-2025 % Frank Mittelbach, The LaTeX Project % % This file is part of the LaTeX base system. @@ -33,7 +33,7 @@ %<*driver> % \fi \ProvidesFile{ltsockets.dtx} - [2024/10/27 v0.9b LaTeX Kernel (Sockets)] + [2024/12/27 v0.9c LaTeX Kernel (Sockets)] % \iffalse % \documentclass{l3doc} @@ -645,6 +645,43 @@ % \cs{LogSocket} and \cs{socket_log:n} only differ in that they don't stop. % \end{function} % +% +% It is sometimes necessary/helpful to know if a particular socket or +% plug exists (or is assigned to a certain socket) and based on that +% take different actions. +% +% \begin{function}[EXP]{\IfSocketExistsTF,\socket_if_exist:nTF} +% \begin{syntax} +% \cs{IfSocketExistsTF} \Arg{socket-name} \Arg{true code} \Arg{false code} +% \end{syntax} +% If socket \meta{socket-name} exists then execute \meta{true code} +% otherwise \meta{false code}. Variants with only \texttt{T} or +% \texttt{F} are also available. +% \end{function} +% +% \begin{function}[EXP]{\IfSocketPlugExistsTF,\socket_if_plug_exist:nnTF} +% \begin{syntax} +% \cs{IfSocketPlugExistsTF} \Arg{socket-name} \Arg{plug-name} +% \qquad \Arg{true code} \Arg{false code} +% \end{syntax} +% If plug \meta{plug-name} for socket \meta{socket-name} exists then +% execute \meta{true code} otherwise \meta{false code}. Variants +% with only \texttt{T} or \texttt{F} are also available. +% \end{function} +% +% \begin{function}[EXP]{\IfSocketPlugAssignedTF,\socket_if_plug_assigned:nnTF} +% \begin{syntax} +% \cs{IfSocketPlugAssignedTF} \Arg{socket-name} \Arg{plug-name} +% \qquad \Arg{true code} \Arg{false code} +% \end{syntax} +% If plug \meta{plug-name} is assigned to socket \meta{socket-name} +% then execute \meta{true code} otherwise \meta{false +% code}. Variants with only \texttt{T} or \texttt{F} are also +% available. +% \end{function} +% +% +% % % \begin{function}{\DebugSocketsOn,\DebugSocketsOff, % \socket_debug_on:,\socket_debug_off:} @@ -654,6 +691,8 @@ % Turns debugging of sockets on or off. % \end{function} % +% +% % \subsubsection{Rationale for error handling} % % The errors during the declarations are produced to help with @@ -766,7 +805,7 @@ % does nothing by default other than swallowing its inputs (if any). % \begin{macrocode} \cs_new_protected:Npn \socket_new:nn #1 #2 { - \str_if_exist:cTF { l_@@_#1_plug_str } + \socket_if_exist:nTF {#1} { \msg_error:nnn { socket } { already-declared } {#1} } @@ -796,7 +835,23 @@ } % \end{macrocode} % \end{macro} -% +% +% +% +% \begin{macro}[pTF, EXP] { \socket_if_exist:n } +% Conditional testing the existance of a socket. +% The argument is fully expanded as part of the csname generation. +% \changes{v0.9c}{2024/12/27}{Conditionals for sockets, plugs, and +% assignments (gh/1577)} +% \begin{macrocode} +\prg_new_conditional:Npnn \socket_if_exist:n #1 { p , T , F , TF } + { \str_if_exist:cTF { l_@@_#1_plug_str } + \prg_return_true: + \prg_return_false: + } +% \end{macrocode} +% \end{macro} +% % % \begin{macro}{\socket_log:n,\socket_show:n} % Show the current state of the socket --- for now this is just a @@ -804,7 +859,7 @@ % \begin{macrocode} \cs_new_protected:Npn \socket_log:n #1 { \typeout{ Socket~ #1:} - \str_if_exist:cTF { l_@@_#1_plug_str } + \socket_if_exist:nTF {#1} { \typeout{ \@spaces number~ of~ inputs~ =~ \int_use:c { c_@@_#1_args_int } } @@ -842,9 +897,9 @@ % the number of arguments from the saved int. % \begin{macrocode} \cs_new_protected:Npn \socket_new_plug:nnn #1#2#3 { - \str_if_exist:cTF { l_@@_#1_plug_str } + \socket_if_exist:nTF {#1} { - \cs_if_exist:cTF { @@_#1_plug_#2:w } + \socket_if_plug_exist:nnTF {#1} {#2} { \msg_error:nnnn { socket } { plug-already-declared } {#1} {#2} } @@ -863,9 +918,7 @@ { Plug~ '#2'~ for~ socket~ '#1'~ declared. } } } - { - \msg_error:nnn { socket } { undeclared } {#1} - } + { \msg_error:nnn { socket } { undeclared } {#1} } } % \end{macrocode} % Changing the plug of an existing socket is rather similar, except @@ -873,9 +926,9 @@ % sequence. % \begin{macrocode} \cs_new_protected:Npn \socket_set_plug:nnn #1#2#3 { - \str_if_exist:cTF { l_@@_#1_plug_str } + \socket_if_exist:nTF {#1} { - \cs_if_exist:cTF { @@_#1_plug_#2:w } + \socket_if_plug_exist:nnTF {#1} {#2} { \cs_generate_from_arg_count:cNnn { @@_#1_plug_#2:w } @@ -889,14 +942,28 @@ \msg_error:nnnn { socket } { plug-undeclared } {#1} {#2} } } - { - \msg_error:nnn { socket } { undeclared } {#1} - } + { \msg_error:nnn { socket } { undeclared } {#1} } } % \end{macrocode} % \end{macro} % -% +% +% +% \begin{macro}[pTF, EXP] { \socket_if_plug_exist:nn } +% Conditional testing the existance of a plug. +% Both arguments are fully expanded as part of the csname generation. +% \changes{v0.9c}{2024/12/27}{Conditionals for sockets, plugs, and +% assignments (gh/1577)} +% \begin{macrocode} +\prg_new_conditional:Npnn \socket_if_plug_exist:nn #1#2 { p , T , F , TF } + { \cs_if_exist:cTF { @@_#1_plug_#2:w } + \prg_return_true: + \prg_return_false: + } +% \end{macrocode} +% \end{macro} +% +% % % \begin{macro}{\socket_assign_plug:nn} % @@ -904,9 +971,9 @@ % the socket string. The assignment is local to the current group. % \begin{macrocode} \cs_new_protected:Npn \socket_assign_plug:nn #1 #2 { - \str_if_exist:cTF { l_@@_#1_plug_str } + \socket_if_exist:nTF {#1} { - \cs_if_exist:cTF { @@_#1_plug_#2:w } + \socket_if_plug_exist:nnTF {#1} {#2} { \@@_debug_term:n { Replacing~ plug~ '\str_use:c { l_@@_#1_plug_str }'~ @@ -921,7 +988,25 @@ } % \end{macrocode} % \end{macro} -% +% +% +% +% \begin{macro}[pTF, EXP] { \socket_if_plug_assigned:nn } +% Conditional testing the assignment of a plug. +% Both arguments are fully expanded. +% \changes{v0.9c}{2024/12/27}{Conditionals for sockets, plugs, and +% assignments (gh/1577)} +% \begin{macrocode} +\prg_new_conditional:Npnn \socket_if_plug_assigned:nn #1#2 { p , T , F , TF } + { \exp_args:Ne + \str_if_eq:nvTF {#2} { l__socket_#1_plug_str } + \prg_return_true: + \prg_return_false: + } +% \end{macrocode} +% \end{macro} +% +% % % \begin{macro}{\socket_use:nw,\socket_use:n,\socket_use:nn,\socket_use:nnn,\socket_use:nnnn} % @@ -1044,6 +1129,32 @@ % \end{macro} % % +% \begin{macro}{\IfSocketExistsTF,\IfSocketExistsT,\IfSocketExistsF, +% \IfSocketPlugExistsTF,\IfSocketPlugExistsT, +% \IfSocketPlugExistsF, +% \IfSocketPlugAssignedTF,\IfSocketPlugAssignedT, +% \IfSocketPlugAssignedF} +% A bunch of conditionals: +% \changes{v0.9c}{2024/12/27}{Conditionals for sockets, plugs, and +% assignments (gh/1577)} +% \begin{macrocode} +\cs_new_eq:NN \IfSocketExistsTF \socket_if_exist:nTF +\cs_new_eq:NN \IfSocketExistsT \socket_if_exist:nT +\cs_new_eq:NN \IfSocketExistsF \socket_if_exist:nF +% \end{macrocode} +% +% \begin{macrocode} +\cs_new_eq:NN \IfSocketPlugExistsTF \socket_if_plug_exist:nnTF +\cs_new_eq:NN \IfSocketPlugExistsT \socket_if_plug_exist:nnT +\cs_new_eq:NN \IfSocketPlugExistsF \socket_if_plug_exist:nnF +% \end{macrocode} +% +% \begin{macrocode} +\cs_new_eq:NN \IfSocketPlugAssignedTF \socket_if_plug_assigned:nnTF +\cs_new_eq:NN \IfSocketPlugAssignedT \socket_if_plug_assigned:nnT +\cs_new_eq:NN \IfSocketPlugAssignedF \socket_if_plug_assigned:nnF +% \end{macrocode} +% \end{macro} % % \begin{macrocode} % @@ -1061,6 +1172,16 @@ %\let \DebugSocketsOn \@undefined %\let \DebugSocketsOff \@undefined % +%\let \IfSocketExistsTF \@undefined +%\let \IfSocketExistsT \@undefined +%\let \IfSocketExistsF \@undefined +%\let \IfSocketPlugExistsTF \@undefined +%\let \IfSocketPlugExistsT \@undefined +%\let \IfSocketPlugExistsF \@undefined +%\let \IfSocketPlugAssignedTF \@undefined +%\let \IfSocketPlugAssignedT \@undefined +%\let \IfSocketPlugAssignedF \@undefined +% %\EndModuleRelease % \end{macrocode} % diff --git a/Master/texmf-dist/source/latex-dev/base/ltspace.dtx b/Master/texmf-dist/source/latex-dev/base/ltspace.dtx index 03005f59962..341e3930505 100644 --- a/Master/texmf-dist/source/latex-dev/base/ltspace.dtx +++ b/Master/texmf-dist/source/latex-dev/base/ltspace.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2024 +% Copyright (C) 1993-2025 % The LaTeX Project and any individual authors listed elsewhere % in this file. % diff --git a/Master/texmf-dist/source/latex-dev/base/lttab.dtx b/Master/texmf-dist/source/latex-dev/base/lttab.dtx index f1147578219..aef3d11ffbf 100644 --- a/Master/texmf-dist/source/latex-dev/base/lttab.dtx +++ b/Master/texmf-dist/source/latex-dev/base/lttab.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2024 +% Copyright (C) 1993-2025 % The LaTeX Project and any individual authors listed elsewhere % in this file. % diff --git a/Master/texmf-dist/source/latex-dev/base/lttagging.dtx b/Master/texmf-dist/source/latex-dev/base/lttagging.dtx index 35753825836..6887830abdb 100644 --- a/Master/texmf-dist/source/latex-dev/base/lttagging.dtx +++ b/Master/texmf-dist/source/latex-dev/base/lttagging.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 2023-2024 +% Copyright (C) 2023-2025 % The LaTeX Project and any individual authors listed elsewhere % in this file. % @@ -33,7 +33,7 @@ %<*driver> % \fi \ProvidesFile{lttagging.dtx} - [2024/11/22 v1.0l LaTeX Kernel (tagging support)] + [2025/02/16 v1.0n LaTeX Kernel (tagging support)] % \iffalse \documentclass{l3doc} \GetFileInfo{lttagging.dtx} @@ -126,10 +126,10 @@ % Usually, these sockets have (beside the default plug defined for every socket) % one additional plug defined and directly assigned. This plug is used when % tagging is active. -% There may be more plugs, e.g., tagging with special debugging or special behaviour +% There may be more plugs, e.g., tagging with special debugging or special behavior % depending on the class or PDF version etc., but right now it is usually just on or off. % -% When tagging is suspended they all have the same predefined behaviour: +% When tagging is suspended they all have the same predefined behavior: % The sockets with zero arguments do nothing. The sockets with one argument % gobble their argument. The sockets with two arguments % will drop their first argument and pass the second unchanged. @@ -152,7 +152,14 @@ % \cs{UseTaggingSocket} because they do not have to determine how % many arguments the socket takes when disabling it. % -% +% \DescribeMacro\MathCollectTrue +% \DescribeMacro\MathCollectFalse +% The tagging of math has to collect/grab the math first. This is not wanted +% for all uses of \verb+$+. These command allow to control the behavior of the +% math shift token. Without the math tagging code they do nothing. Their behavior +% with the math tagging code is documented in latex-lab-math.pdf +% +% % \MaybeStop{} % % @@ -230,6 +237,16 @@ % % \end{macro} % +% \subsection{Math collection} +% The documentation is in latex-lab-math. +% +% \begin{macro}{\MathCollectTrue,\MathCollectFalse} +% \begin{macrocode} +\cs_new_protected:Npn\MathCollectTrue{} +\cs_new_protected:Npn\MathCollectFalse{} +% \end{macrocode} +% \end{macro} +% % \subsection{Tagging sockets} % This collects tagging sockets that should be generally available % so that they can also be used even if the tagging code is not loaded. @@ -321,6 +338,12 @@ \NewSocket{tagsupport/toc/contentsline/before}{1} \NewSocket{tagsupport/toc/contentsline/after}{1} % \end{macrocode} +% +% \changes{v1.0n}{2025/02/16}{Initialize tagging sockets with 1 or 2 arguments} +% \begin{macrocode} +\AssignSocketPlug{tagsupport/toc/contentsline/before}{noop} +\AssignSocketPlug{tagsupport/toc/contentsline/after}{noop} +% \end{macrocode} % \end{socketdecl} % % \begin{socketdecl}{tagsupport/toc/starttoc/before, @@ -331,6 +354,12 @@ \NewSocket{tagsupport/toc/starttoc/before}{1} \NewSocket{tagsupport/toc/starttoc/after}{1} % \end{macrocode} +% +% \changes{v1.0n}{2025/02/16}{Initialize tagging sockets with 1 or 2 arguments} +% \begin{macrocode} +\AssignSocketPlug{tagsupport/toc/starttoc/before}{noop} +\AssignSocketPlug{tagsupport/toc/starttoc/after}{noop} +% \end{macrocode} % \end{socketdecl} % % \begin{socketdecl}{tagsupport/toc/leaders/before, @@ -342,6 +371,17 @@ \NewSocket{tagsupport/toc/leaders/after}{0} % \end{macrocode} % \end{socketdecl} +% +% \subsubsection{Tagging support for marginpar} +% +% \begin{socketdecl}{tagsupport/marginpar/begin,tagsupport/marginpar/end} +% \changes{v1.0n}{2025/02/21}{move marginpar sockets} +% \begin{macrocode} +\NewSocket{tagsupport/marginpar/begin}{0} +\NewSocket{tagsupport/marginpar/end}{0} +% \end{macrocode} +% \end{socketdecl} + % % \subsubsection{Tagging support for table/tabular packages} % @@ -423,6 +463,11 @@ % \begin{macrocode} \NewSocket{tagsupport/tbl/colspan}{1} % \end{macrocode} +% +% \changes{v1.0n}{2025/02/16}{Initialize tagging sockets with 1 or 2 arguments} +% \begin{macrocode} +\AssignSocketPlug{tagsupport/tbl/colspan}{noop} +% \end{macrocode} % \end{socketdecl} % @@ -516,6 +561,11 @@ \NewSocket{tagsupport/caption/begin}{1} \NewSocket{tagsupport/caption/end}{0} % \end{macrocode} +% +% \changes{v1.0n}{2025/02/16}{Initialize tagging sockets with 1 or 2 arguments} +% \begin{macrocode} +\AssignSocketPlug{tagsupport/caption/begin}{noop} +% \end{macrocode} % \end{socketdecl} % % \begin{socketdecl}{tagsupport/caption/label/begin, @@ -535,6 +585,61 @@ % % \subsection{Tagging support for output routines} % +% \changes{v1.0m}{2025/02/14}{Tagging support for output routines added} +% +% \begin{socketdecl}{tagsupport/build/page/header} +% \changes{v1.0m}{2025/02/14}{Tagging socket added} +% \begin{socketdecl}{tagsupport/build/page/footer} +% \changes{v1.0m}{2025/02/14}{Tagging socket added} +% These sockets receive the formatted running header/footer in its +% second argument (the first is not used) following the convention +% of tagging sockets, i.e., only the second argument is processed +% if tagging is not actove +% \begin{macrocode} +\NewSocket{tagsupport/build/page/header}{2} +\NewSocket{tagsupport/build/page/footer}{2} +% \end{macrocode} +% +% \changes{v1.0n}{2025/02/16}{Initialize tagging sockets with 1 or 2 arguments} +% \begin{macrocode} +\NewSocketPlug{tagsupport/build/page/header}{transparent}{#2} +\NewSocketPlug{tagsupport/build/page/footer}{transparent}{#2} +% \end{macrocode} +% +% \begin{macrocode} +\AssignSocketPlug{tagsupport/build/page/header}{transparent} +\AssignSocketPlug{tagsupport/build/page/footer}{transparent} +% \end{macrocode} +% \end{socketdecl} +% \end{socketdecl} +% +% +% +% \begin{socketdecl}{tagsupport/build/column/outputbox} +% \changes{v1.0m}{2025/02/14}{Tagging socket added} +% This socket is used to add any missing tagging structures to the +% \cs{@outputbox} box, if necessary. +% \begin{macrocode} +\NewSocket{tagsupport/build/column/outputbox}{0} +% \end{macrocode} +% \end{socketdecl} +% +% +% +% \begin{socketdecl}{tagsupport/build/column/footins} +% \changes{v1.0m}{2025/02/14}{Tagging socket added} +% This socket is used to add any missing tagging structures to the +% \cs{footins} box, if necessary. +% \begin{macrocode} +\NewSocket{tagsupport/build/column/footins}{0} +% \end{macrocode} +% \end{socketdecl} +% +% +% +% +% +% % \begin{socketdecl}{tagsupport/page@sofar} % % This socket is declared and used in the \pkg{multicol} output routines. @@ -544,7 +649,222 @@ % \end{macrocode} % \end{socketdecl} % +% \subsection{Tagging support for math} +% +% \subsubsection{General sockets} +% +% The following sockets are the main math sockets. +% +% \changes{v1.0n}{2025/02/19}{Moved math sockets into lttagging} +% \begin{macrocode} +\NewSocket{tagsupport/math/inline/begin}{0} +\NewSocket{tagsupport/math/inline/end}{0} +\NewSocket{tagsupport/math/inline/formula/begin}{2} +\NewSocket{tagsupport/math/inline/formula/end}{0} +\NewSocket{tagsupport/math/display/begin}{0} +\NewSocket{tagsupport/math/display/end}{0} +\NewSocket{tagsupport/math/display/formula/begin}{2} +\NewSocket{tagsupport/math/display/formula/end}{0} +\NewSocket{tagsupport/math/display/tag/begin}{0} +\NewSocket{tagsupport/math/display/tag/end}{0} +% \end{macrocode} +% Assign transparent socket to the sockets with two arguments: +% \begin{macrocode} +\NewSocketPlug{tagsupport/math/inline/formula/begin}{transparent}{#2} +\AssignSocketPlug{tagsupport/math/inline/formula/begin}{transparent} +\NewSocketPlug{tagsupport/math/display/formula/begin}{transparent}{#2} +\AssignSocketPlug{tagsupport/math/display/formula/begin}{transparent} +% \end{macrocode} +% +% \subsubsection{Sockets specific for luamml} +% \paragraph{Save sockets} +% These sockets are wrappers around the \cs{luamml_save:...} commands. +% They take an argument which should contain the argument of the save command. +% +% \begin{socketdecl}{tagsupport/math/luamml/save/nn} +% The argument should contain the two arguments of the command. +% \begin{macrocode} +\NewSocket{tagsupport/math/luamml/save/nn}{1} +\AssignSocketPlug{tagsupport/math/luamml/save/nn}{noop} +% \end{macrocode} +% \end{socketdecl} +% +% \begin{socketdecl}{tagsupport/math/luamml/save/nNn} +% The argument should contain the three arguments of the command. +% \begin{macrocode} +\NewSocket{tagsupport/math/luamml/save/nNn}{1} +\AssignSocketPlug{tagsupport/math/luamml/save/nNn}{noop} +% \end{macrocode} +% \end{socketdecl} +% +% \paragraph{Socket to annotate} +% +% \begin{socketdecl}{tagsupport/math/luamml/annotate/false} +% These socket can be used for content that should be annotated +% with \texttt{core=false} +% \begin{macrocode} +\NewSocket{tagsupport/math/luamml/annotate/false}{2} +\NewSocketPlug{tagsupport/math/luamml/annotate/false}{transparent}{#2} +\AssignSocketPlug{tagsupport/math/luamml/annotate/false}{transparent} +% \end{macrocode} +% \end{socketdecl} +% +% \paragraph{Array sockets} These sockets will be used in \pkg{array} to +% add luamml support to the array environment. +% +% \begin{socketdecl}{tagsupport/math/luamml/array/save} % +% This socket will be used in \cs{endarray}. The plug is set by luamml. +% \begin{macrocode} +\NewSocket{tagsupport/math/luamml/array/save}{0} +% \end{macrocode} +% \end{socketdecl} +% +% \begin{socketdecl}{tagsupport/math/luamml/array/finalize} +% +% This socket will be used in \cs{endarray}. The plug is set by luamml. +% \begin{macrocode} +\NewSocket{tagsupport/math/luamml/array/finalize}{0} +% \end{macrocode} +% \end{socketdecl} +% +% \begin{socketdecl}{tagsupport/math/luamml/array/initcol} +% This socket will be used in \cs{@classz}. The plug is set by luamml. +% \begin{macrocode} +\NewSocket{tagsupport/math/luamml/array/initcol}{0} +% \end{macrocode} +% \end{socketdecl} +% +% +% \begin{socketdecl}{tagsupport/math/luamml/array/finalizecol} +% This socket will be used in \cs{@classz}. The plug is set by luamml. +% The argument sets the type of the column. +% \begin{macrocode} +\NewSocket{tagsupport/math/luamml/array/finalizecol}{1} +\AssignSocketPlug{tagsupport/math/luamml/array/finalizecol}{noop} +% \end{macrocode} +% \end{socketdecl} +% +% \paragraph{Alignment environments} +% Multiline environments like \texttt{align}, \texttt{multline} or \texttt{gather} +% are tagged as \texttt{mtable}. +% +% \begin{socketdecl}{tagsupport/math/luamml/mtable/finalizecol} +% This sockets is used at the end of alignment cells and adds them to +% the row. The argument passes a type like \texttt{last} or \texttt{box}. +% \begin{macrocode} +\NewSocket{tagsupport/math/luamml/mtable/finalizecol}{1} +\AssignSocketPlug{tagsupport/math/luamml/mtable/finalizecol}{noop} +% \end{macrocode} +% \end{socketdecl} +% +% +% \begin{socketdecl}{tagsupport/math/luamml/mtable/finalize} +% This sockets is used at the end of alignment environment to finalize the +% mtable code. It should be used normally with \cs{UseExpandableTaggingSocket}. +% \begin{macrocode} +\NewSocket{tagsupport/math/luamml/mtable/finalize}{1} +\AssignSocketPlug{tagsupport/math/luamml/mtable/finalize}{noop} +% \end{macrocode} +% \end{socketdecl} +% +% \begin{socketdecl}{tagsupport/math/luamml/mtable/aligncol} +% This sockets is used in multline to add attributes +% describing the alignment to the left and right. +% It takes an argument, the alignment. +% \begin{macrocode} +\NewSocket{tagsupport/math/luamml/mtable/aligncol}{1} +\AssignSocketPlug{tagsupport/math/luamml/mtable/aligncol}{noop} +% \end{macrocode} +% \end{socketdecl} + +% +% \begin{socketdecl}{tagsupport/math/luamml/mtable/innertable/save} +% This socket is used in \cs{endaligned} to save the table. It takes no argument. +% \begin{macrocode} +\NewSocket{tagsupport/math/luamml/mtable/innertable/save}{0} +% \end{macrocode} +% \end{socketdecl} +% +% \begin{socketdecl}{tagsupport/math/luamml/mtable/smallmatrix/save} +% This socket is used in \cs{endsmallmatrix} to save the table. It takes no argument. +% TODO: Check if this socket and the innertable socket can/should be merged into a more +% generic version. +% \begin{macrocode} +\NewSocket{tagsupport/math/luamml/mtable/smallmatrix/save}{0} +% \end{macrocode} +% \end{socketdecl} +% +% \begin{socketdecl}{tagsupport/math/luamml/mtable/innertable/finalize} +% This socket is used e.g. in \cs{endsmallmatrix} and \cs{gathered} to finalize the table. +% It takes no argument. +% \begin{macrocode} +\NewSocket{tagsupport/math/luamml/mtable/innertable/finalize}{0} +% \end{macrocode} +% \end{socketdecl} +% +% \begin{socketdecl}{tagsupport/math/luamml/mtable/tag/save} +% This socket is used to save a tag for later use. +% has been save before. +% \begin{macrocode} +\NewSocket{tagsupport/math/luamml/mtable/tag/save}{0} +% \end{macrocode} +% \end{socketdecl} + +% \begin{socketdecl}{tagsupport/math/luamml/mtable/tag/set} +% This socket should be used when a tag is placed. It inserts a tag that +% has been save before. +% \begin{macrocode} +\NewSocket{tagsupport/math/luamml/mtable/tag/set}{0} +% \end{macrocode} +% \end{socketdecl} +% +% \paragraph{mbox socket} +% +% \begin{socketdecl}{tagsupport/math/luamml/hbox} +% This socket is used around \cs{hbox} +% inside an \cs{mbox}, \cs{makebox} and \cs{text} and annotates +% the content if the \cs{hbox} is used inside math. +% The real plug is set by luamml but a default plug is defined +% here so that the socket can also be used if luamml is not used. +% \begin{macrocode} +\NewSocket{tagsupport/math/luamml/hbox}{2} +\NewSocketPlug{tagsupport/math/luamml/hbox}{transparent}{#2} +\AssignSocketPlug{tagsupport/math/luamml/hbox}{transparent} +% \end{macrocode} +% \end{socketdecl} +% +% +% \paragraph{math phantom sockets} +% \changes{1.0m}{2025-01-27}{add sockets for math phantom commands} +% \begin{socketdecl}{tagsupport/math/luamml/finph@nt} +% This socket handles the annotation of \cs{finph@nt} +% \begin{macrocode} +\NewSocket{tagsupport/math/luamml/finph@nt}{2} +\NewSocketPlug{tagsupport/math/luamml/finph@nt}{transparent}{#2} +\AssignSocketPlug{tagsupport/math/luamml/finph@nt}{transparent} +% \end{macrocode} +% \end{socketdecl} +% +% \begin{socketdecl}{tagsupport/math/luamml/finph@nt} +% This socket handles the annotation of \cs{finsm@sh} +% \begin{macrocode} +\NewSocket{tagsupport/math/luamml/finsm@sh}{2} +\NewSocketPlug{tagsupport/math/luamml/finsm@sh}{transparent}{#2} +\AssignSocketPlug{tagsupport/math/luamml/finsm@sh}{transparent} +% \end{macrocode} +% \end{socketdecl} +% \paragraph{Artifact root sign} +% +% \begin{socketdecl}{tagsupport/math/luamml/artifact} +% Unicode characters like a root sign should be marked as artifacts +% to avoid duplication, e.g., in derivation if mathml +% structure elements are used that imply the meaning. +% +% \begin{macrocode} +\NewSocket{tagsupport/math/luamml/artifact}{0} +% \end{macrocode} +% \end{socketdecl} % % \section{For lttab.dtx parked here for now} % diff --git a/Master/texmf-dist/source/latex-dev/base/lttemplates.dtx b/Master/texmf-dist/source/latex-dev/base/lttemplates.dtx index 4d2f679feea..d69f70e97a1 100644 --- a/Master/texmf-dist/source/latex-dev/base/lttemplates.dtx +++ b/Master/texmf-dist/source/latex-dev/base/lttemplates.dtx @@ -2,7 +2,7 @@ % % Copyright (C) 1999 Frank Mittelbach, Chris Rowley, David Carlisle % Copyright (C) 2004-2010 Frank Mittelbach, The LaTeX Project -% Copyright (C) 2011-2024 +% Copyright (C) 2011-2025 % The LaTeX Project and any individual authors listed elsewhere % in this file. % @@ -36,7 +36,7 @@ %<*driver> % \fi \ProvidesFile{lttemplates.dtx} - [2024-11-17 v1.0d LaTeX Kernel (Prototype document functions)] + [2025-01-20 v1.0e LaTeX Kernel (Prototype document functions)] % \iffalse \documentclass{l3doc} \GetFileInfo{lttemplates.dtx} @@ -91,7 +91,7 @@ % \item Loading one of the many packages to customise certain elements of % the standard classes. % \item Loading a completely different document class, such as -% \textsf{KOMA-Script} or \textsf{memoir}, that allows easy customisation. +% \textsf{KOMA-Script} or \textsf{memoir}, that allows easy customization. % \end{itemize} % All three of these approaches have their drawbacks and learning curves. % @@ -99,7 +99,7 @@ % introduced at the beginning of this section, so that document authors who % are not programmers can easily change the design of their documents. % \pkg{lttemplates} also makes it easier for \LaTeX{} programmers to provide -% their own customisations on top of a pre-existing class. +% their own customizations on top of a pre-existing class. % % \section{What is a document?} % @@ -120,7 +120,7 @@ % contain the same sort of information but present it in slightly % different ways. For example, the difference between a numbered and an % unnumbered section, \cs{section} and |\section*|, or the difference -% between an itemised list or an enumerated list. +% between an itemized list or an enumerated list. % % There are three distinct layers in the definition of % \enquote{a document} at this level @@ -180,7 +180,7 @@ % \section{Templates} % \label{sec:templates} % -% A \emph{template} is a generalised design solution for representing +% A \emph{template} is a generalized design solution for representing % the information of a specified type. Templates that do the same % thing, but in different ways, are grouped together by their type % and given separate names. There are two important parts to a template: @@ -320,7 +320,7 @@ % \toprule % \multicolumn{1}{l}{Key-type} & Description of binding \\ % \midrule -% \ & Boolean variable, \emph{e.g}.~\cs{l_tmpa_bool} \\ +% boolean & Boolean variable, \emph{e.g}.~\cs{l_tmpa_bool} \\ % choice % & List of choice implementations % (see Section~\ref{sec:choices-key}) \\ @@ -351,12 +351,95 @@ % In the final argument of \cs{DeclareTemplateCode} the assignment of % keys defined by the template may be delayed by including the command % \cs{AssignTemplateKeys}. If this is \emph{not} present, keys are assigned -% immediately before the template code. If \cs{AssignTemplateKeys} is +% immediately before the template code. If an +% \cs{AssignTemplateKeys} command is % present, assignment is delayed until this point. Note that the % command must be \emph{directly} present in the code, not placed % within a nested command/macro. % \end{function} % + +% \begin{function}{\SetKnownTemplateKeys,\SetTemplateKeys,\UnusedTemplateKeys} +% \begin{syntax} +% \cs{SetKnownTemplateKeys} \Arg{type} \Arg{template} \Arg{keyvals} +% \cs{SetTemplateKeys} \Arg{type} \Arg{template} \Arg{keyvals} +% +% \cs{UnusedTemplateKeys} \% all \meta{keyvals} unused by previous \cs{SetKnownTemplateKeys} +% \end{syntax} +% +% In the final argument of \cs{DeclareTemplateCode} one can also +% overwrite (some of) the current template key value settings by +% using the command \cs{SetKnownTemplateKeys} or +% \cs{SetTemplateKeys}, i.e., they can overwrite the template default values and +% the values assigned by the instance. +% +% The \cs{SetKnownTemplateKeys} and \cs{SetTemplateKeys} commands +% are only supported within the code of a template; using them +% elsewhere has unpredictable results. If they are used together +% with \cs{AssignTemplateKeys} then the latter command should come first +% in the template code. +% +% The main use case for these commands is the situation where there +% is an argument (normally \texttt{\#1}) to the template in which +% a key/value list can be specified that overwrites the normal +% settings. In that case one could use +%\begin{quote} +% \verb/\SetKnownTemplateKeys/\Arg{type}\Arg{template}\verb/{#1}/ +%\end{quote} +% to process this key/value list inside the template. +% +% If \cs{SetKnownTemplateKeys} is executed and the \meta{keyvals} argument contains keys not known to the +% \meta{template} they are simply ignored and stored in the +% tokenlist \cs{UnusedTemplateKeys} +% without generating an error. This way it is possible to +% apply the same key/val list specified by the user on a +% document-level command or environment to several templates, which +% is useful, if the command or environment is implemented by calling several different template instances. +% +% \end{function} +% +% As a variation of that, you can use this key/val +% list the first time, and for the next template instance use what remains in +% \cs{UnusedTemplateKeys} (i.e., the key/val list with only the keys that have not been processed previously). The final processing step could then be +% \cs{SetTemplateKeys}, which unconditionally attempts to set the +% \meta{keyvals} received in its third argument. This command +% complains if any of them are unknown keys. Alternatively, you +% could use \cs{SetKnownTemplateKeys} and afterwards check whether \cs{UnusedTemplateKeys} is empty.\footnote{Using +% \cs{SetTemplateKeys} exposes the inner structure of the template +% keys when generating an error. This is something one may want to +% avoid as it can be confusing to the user, especially if several +% templates are involved. In that +% case use \cs{SetKnownTemplateKeys} and afterwards check whether +% \cs{UnusedTemplateKeys} is empty; if it is not empty then generate your own +% error message.} +% +% For example, a list, such as \env{enumerate}, is made up from a +% \texttt{blockenv}, \texttt{block}, \texttt{list}, and a +% \texttt{para} template and in the single user-supplied optional +% argument of \env{enumerate} key/values for any of these templates might +% be specified. +% +% In fact, in the particular example of list environments, +% the supplied key/value list is also saved and then applied to each +% \cs{item} which is implemented through an \texttt{item} +% template. This way, one can specify one-off settings for all the items +% of a single list (on the environment level), as well as to +% individual items within that list (by specifying them in the +% optional argument of an \cs{item}). With +% \cs{SetKnownTemplateKeys} and \cs{SetTemplateKeys} working +% together, it is possible to provide this flexibility and still +% alert the user when one of their keys is misspelled. +% +% On the other hand you may want to allow for +% \enquote{misspellings} without generating an error or a +% warning. For example, if you define a template that accepts only a +% few keys, you might just want to ignore anything specified in the +% source when you use this template in place of a different one, +% without the need to alter the document source. Or you might just +% generate a warning message, which is easy, given that the unused +% key/values are available in the \cs{UnusedTemplateKeys} variable. +% +% % \begin{function}{\DeclareTemplateCopy} % \begin{syntax} % \cs{DeclareTemplateCopy} @@ -418,7 +501,7 @@ % For keys which accept the values \texttt{true} and \texttt{false} % both the boolean and choice key types can be used. As template % interfaces are intended to prompt clarity at the design level, the -% boolean key type should be favoured, with the choice type reserved +% boolean key type should be favored, with the choice type reserved % for keys which take arbitrary values. % % \section{Instances} @@ -432,10 +515,10 @@ % are input into it. % % For example, a template might say \enquote{here is a section with or -% without a number that might be centred or left aligned and print its +% without a number that might be centered or left aligned and print its % contents in a certain font of a certain size, with a bit of a gap % before and after it} whereas an instance declares \enquote{this is a -% section with a number, which is centred and set in $12\,\text{pt}$ +% section with a number, which is centered and set in $12\,\text{pt}$ % italic with a $10\,\text{pt}$ skip before and a % $12\,\text{pt}$ skip after it}. Therefore, an instance is just a % frozen version of a template with specific settings as chosen by the @@ -516,8 +599,8 @@ % detailed by the \meta{type} declaration. This in effect % is the same as creating an instance using \cs{DeclareInstance} % and immediately using it with \cs{UseInstance}, but without the -% instance having any further existence. It is therefore useful where -% a template needs to be used once. +% instance having any further existence. This command is therefore useful when +% a template needs to be used only once. % % This function can also be used as the argument to \texttt{instance} % key types: @@ -565,39 +648,6 @@ % template untouched. % \end{function} % -% \section{\emph{Ad hoc} adjustment of templates} -% -% \begin{function}{\SetTemplateKeys} -% \begin{syntax} -% \cs{SetTemplateKeys} \Arg{type} \Arg{template} \Arg{keyvals} -% \end{syntax} -% At point of use it may be useful to apply changed to individual instances. -% This is supported as each template key is made available for adjustment -% using \cs{SetTemplateKeys}. -% \end{function} -% -% For example, after -% \begin{verbatim} -% \NewTypeType{MyObj}{0} -% \DeclareTemplateInterface{MyObj}{TemplateA}{0} -% { -% akey: tokenlist , -% bkey: function{2} -% } -% \DeclareTemplateCode{MyObj}{TemplateA}{0} -% { -% akey = SomeTokens , -% bkey = \func:nn , -% } -% \end{verbatim} -% the template keys could be adjusted in an \emph{ad hoc} fashion using -% \begin{verbatim} -% \SetTemplateKeys{MyObj}{TemplateA} -% { -% akey = OtherTokens , -% bkey = \AltFunc:nn -% } -% \end{verbatim} % % \section{Getting information about templates and instances} % @@ -1385,6 +1435,7 @@ % \subsection{Implementation part of template declaration} % % \begin{macro}{\@@_declare_template_code:nnnnn} +% \changes{2025-01-20}{v1.0e}{Speed up test for \cs{AssignTemplateKeys}} % \begin{macro}{\@@_declare_template_code:nnnn} % The main function for implementing a template starts with a couple of % simple checks to make sure that there are no obvious mistakes: the @@ -1400,8 +1451,15 @@ \@@_if_keys_exist:nnT {#1} {#2} { \@@_store_key_implementation:nnn {#1} {#2} {#4} - \regex_match:nnTF { \c { AssignTemplateKeys } } {#5} - { \@@_declare_template_code:nnnn {#1} {#2} {#3} {#5} } + \str_if_in:nnTF {#5} { AssignTemplateKeys } + { + \regex_match:nnTF { \c { AssignTemplateKeys } } {#5} + { \@@_declare_template_code:nnnn {#1} {#2} {#3} {#5} } + { + \@@_declare_template_code:nnnn + {#1} {#2} {#3} { \AssignTemplateKeys #5 } + } + } { \@@_declare_template_code:nnnn {#1} {#2} {#3} { \AssignTemplateKeys #5 } @@ -2619,11 +2677,35 @@ % \end{macrocode} % \end{macro} % -% \begin{macro}{\SetTemplateKeys} -% A friendly wrapper +% \begin{macro}{\SetKnownTemplateKeys,\SetTemplateKeys} +% A friendly wrapper, with some speed up for the common case of the +% third argument being empty. +% \changes{2025-01-08}{v1.0d}{Test for empty key/val list to speed up processing} +% \begin{macrocode} +\cs_new_protected:Npn \SetKnownTemplateKeys #1#2#3 + { + \tl_if_empty:oTF {#3} + { + \tl_set_eq:NN \UnusedTemplateKeys \c_empty_tl + } + { + \keys_set_known:noN { template / #1 / #2 } {#3} \UnusedTemplateKeys + } + } +% \end{macrocode} +% % \begin{macrocode} \cs_new_protected:Npn \SetTemplateKeys #1#2#3 - { \keys_set_known:nnN { template / #1 / #2 } {#3} \l_@@_tmp_clist } + { + \tl_if_empty:oF {#3} + { + \keys_set:no { template / #1 / #2 } {#3} + } + } +% \end{macrocode} +% +% \begin{macrocode} +\tl_new:N \UnusedTemplateKeys % \end{macrocode} % \end{macro} % @@ -2647,4 +2729,4 @@ %<@@=> % \end{macrocode} % -% \Finale \ No newline at end of file +% \Finale diff --git a/Master/texmf-dist/source/latex-dev/base/lttextcomp.dtx b/Master/texmf-dist/source/latex-dev/base/lttextcomp.dtx index 64c89fe9598..b8f8b7ec934 100644 --- a/Master/texmf-dist/source/latex-dev/base/lttextcomp.dtx +++ b/Master/texmf-dist/source/latex-dev/base/lttextcomp.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 2019-2024 +% Copyright (C) 2019-2025 % The LaTeX Project and any individual authors listed elsewhere % in this file. % diff --git a/Master/texmf-dist/source/latex-dev/base/ltthm.dtx b/Master/texmf-dist/source/latex-dev/base/ltthm.dtx index c900f519dd5..ea27e45c133 100644 --- a/Master/texmf-dist/source/latex-dev/base/ltthm.dtx +++ b/Master/texmf-dist/source/latex-dev/base/ltthm.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2024 +% Copyright (C) 1993-2025 % The LaTeX Project and any individual authors listed elsewhere % in this file. % diff --git a/Master/texmf-dist/source/latex-dev/base/ltvers.dtx b/Master/texmf-dist/source/latex-dev/base/ltvers.dtx index d775f77aa6e..f78a849a145 100644 --- a/Master/texmf-dist/source/latex-dev/base/ltvers.dtx +++ b/Master/texmf-dist/source/latex-dev/base/ltvers.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2024 +% Copyright (C) 1993-2025 % The LaTeX Project and any individual authors listed elsewhere % in this file. % @@ -115,7 +115,7 @@ {2025-06-01} % %<*2ekernel> -\def\patch@level{-1} +\def\patch@level{-2} % \end{macrocode} % % \begin{macro}{\development@branch@name} diff --git a/Master/texmf-dist/source/latex-dev/base/ltxdoc.dtx b/Master/texmf-dist/source/latex-dev/base/ltxdoc.dtx index 5e8b4946926..9f5d7777325 100644 --- a/Master/texmf-dist/source/latex-dev/base/ltxdoc.dtx +++ b/Master/texmf-dist/source/latex-dev/base/ltxdoc.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2024 +% Copyright (C) 1993-2025 % The LaTeX Project and any individual authors listed elsewhere % in this file. % @@ -677,7 +677,7 @@ Bug reports can be opened (category \texttt{#1}) at\\% % % Copyright 2006, 2007, 2011 % Heiko Oberdiek -% Copyright (C) 2014-2024 +% Copyright (C) 2014-2025 % The LaTeX Project % diff --git a/Master/texmf-dist/source/latex-dev/base/ltxref.dtx b/Master/texmf-dist/source/latex-dev/base/ltxref.dtx index 4464409abd3..da2d9a6aed3 100644 --- a/Master/texmf-dist/source/latex-dev/base/ltxref.dtx +++ b/Master/texmf-dist/source/latex-dev/base/ltxref.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2024 +% Copyright (C) 1993-2025 % The LaTeX Project and any individual authors listed elsewhere % in this file. % @@ -33,7 +33,7 @@ %<*driver> % \fi \ProvidesFile{ltxref.dtx} - [2024/09/20 v1.1r LaTeX Kernel (Cross Referencing)] + [2025/01/22 v1.1t LaTeX Kernel (Cross Referencing)] % \iffalse \documentclass{ltxdoc} \GetFileInfo{ltxref.dtx} @@ -418,12 +418,21 @@ % % % \begin{macro}{\refstepcounter} +% \changes{v1.1t}{2025/01/22}{Macro added} +% Saved |*| for testing the argument of \cs{refstepcounter}. +% \begin{macrocode} +\def\ltx@star@counter{*} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\refstepcounter} % Step the counter and allow for labels to point to its current value. % \changes{v1.1n}{2020/05/05}{record the counter name in \cs{@currentcounter}} % \changes{v1.1o}{2020/08/23}{add default definition of \cs{@currentcounter}} % \changes{v1.1r}{2024/09/20}{set also \@currentHref} % \changes{v1.1r}{2024/09/20}{provide a kernel copy \@kernel@refstepcounter} % \changes{v1.1r}{2024/09/20}{add sockets} +% \changes{v1.1t}{2025/01/22}{Guard * from causing infinite loop} % \begin{macrocode} %\IncludeInRelease{2022/06/01}% % {\Ref}{Add starred version}% @@ -465,7 +474,10 @@ \def\refstepcounter#1{% \UseSocket{refstepcounter}{% \stepcounter{#1}% - \edef\@currentcounter{#1}% + \edef\reserved@a{#1}% + \ifx\reserved@a\ltx@star@counter\else + \let\@currentcounter\reserved@a + \fi \protected@edef\@currentlabel % \end{macrocode} % By generating the second csname first the |\p@...| command can @@ -501,7 +513,10 @@ \def\@kernel@refstepcounter#1{% \UseSocket{refstepcounter}{% \stepcounter{#1}% - \edef\@currentcounter{#1}% + \edef\reserved@a{#1}% + \ifx\reserved@a\ltx@star@counter\else + \let\@currentcounter\reserved@a + \fi \protected@edef\@currentlabel {\csname p@#1\expandafter\endcsname\csname the#1\endcsname}}}% % \end{macrocode} @@ -549,10 +564,11 @@ % \changes{v1.1l}{2019/08/22}{Commanded moved from \texttt{varioref.sty}} % \changes{v1.1p}{2022/04/12}{Macro reimplemented with a starred version}% % \begin{macrocode} -\def\@kernel@Ref#1{\protected@edef\@tempa{\@kernel@ref{#1}}% - \expandafter\MakeUppercase\@tempa} -\def\@kernel@sRef#1{\protected@edef\@tempa{\@kernel@sref{#1}}% - \expandafter\MakeUppercase\@tempa} +% \changes{v1.1s}{2024/12/10}{Replace \cs{@tempa} with \cs{reserved@a} (gh/1579)} +\def\@kernel@Ref#1{\protected@edef\reserved@a{\@kernel@ref{#1}}% + \expandafter\MakeUppercase\reserved@a} +\def\@kernel@sRef#1{\protected@edef\reserved@a{\@kernel@sref{#1}}% + \expandafter\MakeUppercase\reserved@a} \NewDocumentCommand\Ref{s} {\IfBooleanTF{#1}{\@kernel@sRef}{\@kernel@Ref}} % \end{macrocode} @@ -583,8 +599,8 @@ % {\csname p@#1\expandafter\endcsname\csname the#1\endcsname}% %} %\def\labelformat#1{\expandafter\def\csname p@#1\endcsname##1} -%\DeclareRobustCommand\Ref[1]{\protected@edef\@tempa{\ref{#1}}% -% \expandafter\MakeUppercase\@tempa} +%\DeclareRobustCommand\Ref[1]{\protected@edef\reserved@a{\ref{#1}}% +% \expandafter\MakeUppercase\reserved@a} %\EndIncludeInRelease %\IncludeInRelease{2019/10/01}% % {\refstepcounter}{Add \labelformat and \Ref}% @@ -594,8 +610,8 @@ % {\csname p@#1\expandafter\endcsname\csname the#1\endcsname}% %} %\def\labelformat#1{\expandafter\def\csname p@#1\endcsname##1} -%\DeclareRobustCommand\Ref[1]{\protected@edef\@tempa{\ref{#1}}% -% \expandafter\MakeUppercase\@tempa} +%\DeclareRobustCommand\Ref[1]{\protected@edef\reserved@a{\ref{#1}}% +% \expandafter\MakeUppercase\reserved@a} %\EndIncludeInRelease %\IncludeInRelease{0000/00/00}% % {\refstepcounter}{Add \labelformat and \Ref}% diff --git a/Master/texmf-dist/source/latex-dev/base/makeindx.dtx b/Master/texmf-dist/source/latex-dev/base/makeindx.dtx index 20da2f159df..57384bb1b14 100644 --- a/Master/texmf-dist/source/latex-dev/base/makeindx.dtx +++ b/Master/texmf-dist/source/latex-dev/base/makeindx.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2024 +% Copyright (C) 1993-2025 % The LaTeX Project and any individual authors listed elsewhere % in this file. % diff --git a/Master/texmf-dist/source/latex-dev/base/makeindx.ins b/Master/texmf-dist/source/latex-dev/base/makeindx.ins index 45e5c9aab00..d58ead0bb23 100644 --- a/Master/texmf-dist/source/latex-dev/base/makeindx.ins +++ b/Master/texmf-dist/source/latex-dev/base/makeindx.ins @@ -3,7 +3,7 @@ %% driver files from the doc files in this package when run through %% LaTeX or TeX. %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% @@ -48,7 +48,7 @@ reports for it can be opened at https://latex-project.org/bugs.html (but please observe conditions on bug reports sent to that address!) -Copyright (C) 1993-2024 +Copyright (C) 1993-2025 The LaTeX Project and any individual authors listed elsewhere in this file. diff --git a/Master/texmf-dist/source/latex-dev/base/newdc.ins b/Master/texmf-dist/source/latex-dev/base/newdc.ins index 69d74d61676..40344ede55f 100644 --- a/Master/texmf-dist/source/latex-dev/base/newdc.ins +++ b/Master/texmf-dist/source/latex-dev/base/newdc.ins @@ -3,7 +3,7 @@ %% driver files from the doc files in this package when run through %% LaTeX or TeX. %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% @@ -48,7 +48,7 @@ reports for it can be opened at https://latex-project.org/bugs.html (but please observe conditions on bug reports sent to that address!) -Copyright (C) 1993-2024 +Copyright (C) 1993-2025 The LaTeX Project and any individual authors listed elsewhere in this file. diff --git a/Master/texmf-dist/source/latex-dev/base/newlfont.dtx b/Master/texmf-dist/source/latex-dev/base/newlfont.dtx index 2792395c58a..a7fb388ca26 100644 --- a/Master/texmf-dist/source/latex-dev/base/newlfont.dtx +++ b/Master/texmf-dist/source/latex-dev/base/newlfont.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2024 +% Copyright (C) 1993-2025 % The LaTeX Project and any individual authors listed elsewhere % in this file. % diff --git a/Master/texmf-dist/source/latex-dev/base/nfssfont.dtx b/Master/texmf-dist/source/latex-dev/base/nfssfont.dtx index 0464053c10f..5f18ec812b9 100644 --- a/Master/texmf-dist/source/latex-dev/base/nfssfont.dtx +++ b/Master/texmf-dist/source/latex-dev/base/nfssfont.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2024 +% Copyright (C) 1993-2025 % The LaTeX Project and any individual authors listed elsewhere % in this file. % diff --git a/Master/texmf-dist/source/latex-dev/base/nfssfont.ins b/Master/texmf-dist/source/latex-dev/base/nfssfont.ins index 00f5a0c8a39..292d2877162 100644 --- a/Master/texmf-dist/source/latex-dev/base/nfssfont.ins +++ b/Master/texmf-dist/source/latex-dev/base/nfssfont.ins @@ -3,7 +3,7 @@ %% driver files from the doc files in this package when run through %% LaTeX or TeX. %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% @@ -48,7 +48,7 @@ reports for it can be opened at https://latex-project.org/bugs.html (but please observe conditions on bug reports sent to that address!) -Copyright (C) 1993-2024 +Copyright (C) 1993-2025 The LaTeX Project and any individual authors listed elsewhere in this file. diff --git a/Master/texmf-dist/source/latex-dev/base/olddc.ins b/Master/texmf-dist/source/latex-dev/base/olddc.ins index 1f5d12ece4a..9b64c8512e8 100644 --- a/Master/texmf-dist/source/latex-dev/base/olddc.ins +++ b/Master/texmf-dist/source/latex-dev/base/olddc.ins @@ -3,7 +3,7 @@ %% driver files from the doc files in this package when run through %% LaTeX or TeX. %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% @@ -48,7 +48,7 @@ reports for it can be opened at https://latex-project.org/bugs.html (but please observe conditions on bug reports sent to that address!) -Copyright (C) 1993-2024 +Copyright (C) 1993-2025 The LaTeX Project and any individual authors listed elsewhere in this file. diff --git a/Master/texmf-dist/source/latex-dev/base/oldlfont.dtx b/Master/texmf-dist/source/latex-dev/base/oldlfont.dtx index 7a3534f517a..94ef5e6ced0 100644 --- a/Master/texmf-dist/source/latex-dev/base/oldlfont.dtx +++ b/Master/texmf-dist/source/latex-dev/base/oldlfont.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2024 +% Copyright (C) 1993-2025 % The LaTeX Project and any individual authors listed elsewhere % in this file. % diff --git a/Master/texmf-dist/source/latex-dev/base/preload.dtx b/Master/texmf-dist/source/latex-dev/base/preload.dtx index fb5f86824cf..029db1c50cd 100644 --- a/Master/texmf-dist/source/latex-dev/base/preload.dtx +++ b/Master/texmf-dist/source/latex-dev/base/preload.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2024 +% Copyright (C) 1993-2025 % The LaTeX Project and any individual authors listed elsewhere % in this file. % diff --git a/Master/texmf-dist/source/latex-dev/base/proc.dtx b/Master/texmf-dist/source/latex-dev/base/proc.dtx index ec69e473966..e704147c7ac 100644 --- a/Master/texmf-dist/source/latex-dev/base/proc.dtx +++ b/Master/texmf-dist/source/latex-dev/base/proc.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2024 +% Copyright (C) 1993-2025 % The LaTeX Project and any individual authors listed elsewhere % in this file. % diff --git a/Master/texmf-dist/source/latex-dev/base/proc.ins b/Master/texmf-dist/source/latex-dev/base/proc.ins index 83f50bda123..f2e3be72900 100644 --- a/Master/texmf-dist/source/latex-dev/base/proc.ins +++ b/Master/texmf-dist/source/latex-dev/base/proc.ins @@ -3,7 +3,7 @@ %% driver files from the doc files in this package when run through %% LaTeX or TeX. %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% @@ -48,7 +48,7 @@ reports for it can be opened at https://latex-project.org/bugs.html (but please observe conditions on bug reports sent to that address!) -Copyright (C) 1993-2024 +Copyright (C) 1993-2025 The LaTeX Project and any individual authors listed elsewhere in this file. diff --git a/Master/texmf-dist/source/latex-dev/base/slides.dtx b/Master/texmf-dist/source/latex-dev/base/slides.dtx index 3674a6c05f6..0d77e5a6836 100644 --- a/Master/texmf-dist/source/latex-dev/base/slides.dtx +++ b/Master/texmf-dist/source/latex-dev/base/slides.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2024 +% Copyright (C) 1993-2025 % The LaTeX Project and any individual authors listed elsewhere % in this file. % diff --git a/Master/texmf-dist/source/latex-dev/base/slides.ins b/Master/texmf-dist/source/latex-dev/base/slides.ins index 3124ed366f9..4402c07463b 100644 --- a/Master/texmf-dist/source/latex-dev/base/slides.ins +++ b/Master/texmf-dist/source/latex-dev/base/slides.ins @@ -3,7 +3,7 @@ %% driver files from the doc files in this package when run through %% LaTeX or TeX. %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% @@ -48,7 +48,7 @@ reports for it can be opened at https://latex-project.org/bugs.html (but please observe conditions on bug reports sent to that address!) -Copyright (C) 1993-2024 +Copyright (C) 1993-2025 The LaTeX Project and any individual authors listed elsewhere in this file. @@ -96,7 +96,7 @@ extension .ins) which are part of the distribution. This is a generated file. -Copyright (C) 1993-2024 +Copyright (C) 1993-2025 The LaTeX Project and any individual authors listed elsewhere in this file. @@ -138,7 +138,7 @@ reports for it can be opened at https://latex-project.org/bugs.html (but please observe conditions on bug reports sent to that address!) -Copyright (C) 1993-2024 +Copyright (C) 1993-2025 The LaTeX Project and any individual authors listed elsewhere in this file. diff --git a/Master/texmf-dist/source/latex-dev/base/slifonts.fdd b/Master/texmf-dist/source/latex-dev/base/slifonts.fdd index b35cd07a8be..3b4ca46bd79 100644 --- a/Master/texmf-dist/source/latex-dev/base/slifonts.fdd +++ b/Master/texmf-dist/source/latex-dev/base/slifonts.fdd @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2024 +% Copyright (C) 1993-2025 % The LaTeX Project and any individual authors listed elsewhere % in this file. % diff --git a/Master/texmf-dist/source/latex-dev/base/syntonly.dtx b/Master/texmf-dist/source/latex-dev/base/syntonly.dtx index 9844585fa56..6b671628d47 100644 --- a/Master/texmf-dist/source/latex-dev/base/syntonly.dtx +++ b/Master/texmf-dist/source/latex-dev/base/syntonly.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2024 +% Copyright (C) 1993-2025 % The LaTeX Project and any individual authors listed elsewhere % in this file. % diff --git a/Master/texmf-dist/source/latex-dev/base/syntonly.ins b/Master/texmf-dist/source/latex-dev/base/syntonly.ins index 6435e0a6ee8..91434295d5c 100644 --- a/Master/texmf-dist/source/latex-dev/base/syntonly.ins +++ b/Master/texmf-dist/source/latex-dev/base/syntonly.ins @@ -3,7 +3,7 @@ %% driver files from the doc files in this package when run through %% LaTeX or TeX. %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% @@ -48,7 +48,7 @@ reports for it can be opened at https://latex-project.org/bugs.html (but please observe conditions on bug reports sent to that address!) -Copyright (C) 1993-2024 +Copyright (C) 1993-2025 The LaTeX Project and any individual authors listed elsewhere in this file. diff --git a/Master/texmf-dist/source/latex-dev/base/tulm.fdd b/Master/texmf-dist/source/latex-dev/base/tulm.fdd index 6f7a6873cd6..d8dbd176e63 100644 --- a/Master/texmf-dist/source/latex-dev/base/tulm.fdd +++ b/Master/texmf-dist/source/latex-dev/base/tulm.fdd @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 2016-2024 +% Copyright (C) 2016-2025 % The LaTeX Project and any individual authors listed elsewhere % in this file. % diff --git a/Master/texmf-dist/source/latex-dev/base/tulm.ins b/Master/texmf-dist/source/latex-dev/base/tulm.ins index ea8fd7b22bf..244aadf6ab5 100644 --- a/Master/texmf-dist/source/latex-dev/base/tulm.ins +++ b/Master/texmf-dist/source/latex-dev/base/tulm.ins @@ -3,7 +3,7 @@ %% driver files from the doc files in this package when run through %% LaTeX or TeX. %% -%% Copyright (C) 2016-2024 +%% Copyright (C) 2016-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% @@ -48,7 +48,7 @@ reports for it can be opened at https://latex-project.org/bugs.html (but please observe conditions on bug reports sent to that address!) -Copyright (C) 2016-2024 +Copyright (C) 2016-2025 The LaTeX Project and any individual authors listed elsewhere in this file. diff --git a/Master/texmf-dist/source/latex-dev/base/unpack.ins b/Master/texmf-dist/source/latex-dev/base/unpack.ins index e81c8dbfa82..d0501f57736 100644 --- a/Master/texmf-dist/source/latex-dev/base/unpack.ins +++ b/Master/texmf-dist/source/latex-dev/base/unpack.ins @@ -3,7 +3,7 @@ %% driver files from the doc files in this package when run through %% LaTeX or TeX. %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/source/latex-dev/base/utf8ienc.dtx b/Master/texmf-dist/source/latex-dev/base/utf8ienc.dtx index a2701ac5c87..25e6d8bf4c2 100644 --- a/Master/texmf-dist/source/latex-dev/base/utf8ienc.dtx +++ b/Master/texmf-dist/source/latex-dev/base/utf8ienc.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2024 +% Copyright (C) 1993-2025 % The LaTeX Project and any individual authors listed elsewhere % in this file. % diff --git a/Master/texmf-dist/source/latex-dev/firstaid/firstaid.ins b/Master/texmf-dist/source/latex-dev/firstaid/firstaid.ins index 5de510ba513..656ecf395f9 100644 --- a/Master/texmf-dist/source/latex-dev/firstaid/firstaid.ins +++ b/Master/texmf-dist/source/latex-dev/firstaid/firstaid.ins @@ -3,7 +3,7 @@ %% driver files from the doc files in this package when run through %% LaTeX or TeX. %% -%% Copyright (C) 2020-2024 +%% Copyright (C) 2020-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% @@ -44,7 +44,7 @@ reports for it can be opened at https://latex-project.org/bugs/ (but please observe conditions on bug reports sent to that address!) -Copyright (C) 2020-2024 +Copyright (C) 2020-2025 The LaTeX Project and any individual authors listed elsewhere in this file. diff --git a/Master/texmf-dist/source/latex-dev/firstaid/latex2e-first-aid-for-external-files.dtx b/Master/texmf-dist/source/latex-dev/firstaid/latex2e-first-aid-for-external-files.dtx index 7b26705bf25..98efb23eb1c 100644 --- a/Master/texmf-dist/source/latex-dev/firstaid/latex2e-first-aid-for-external-files.dtx +++ b/Master/texmf-dist/source/latex-dev/firstaid/latex2e-first-aid-for-external-files.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -%% File: latex2e-first-aid-for-external-files.dtx (C) Copyright 2020-2024 +%% File: latex2e-first-aid-for-external-files.dtx (C) Copyright 2020-2025 %% %% The LaTeX Project and any individual authors listed elsewhere %% in this file. @@ -111,8 +111,8 @@ % \end{macrocode} % % \begin{macrocode} -\def\LaTeXFirstAidDate{2024/11/24} -\def\LaTeXFirstAidVersion{v1.1j} +\def\LaTeXFirstAidDate{2025/02/16} +\def\LaTeXFirstAidVersion{v1.1m} % \end{macrocode} % % \begin{macrocode} @@ -134,7 +134,8 @@ % \begin{macrocode} \ExplSyntaxOn \cs_new:Npn\FirstAidNeededT#1#2#3{ - \exp_args:Ncx\str_if_eq:onF{ver@#1.#2}{#3} + \exp_args:Ncx\str_if_eq:onTF{ver@#1.#2}{#3} + { \typeout{==>~ First~ Aid~ for~ #1.#2~ applied! } } { \typeout{==>~ First~ Aid~ for~ #1.#2~ no~ longer~ applied!^^J \@spaces Expected:^^J \@spaces\@spaces #3^^J @@ -330,7 +331,7 @@ % % \begin{macrocode} \ExplSyntaxOn -\AddToHook{file/pgfpages.sty/after}[firstaid]{% +\AddToHook{file/pgfpages.sty/after}[firstaid]{ % \end{macrocode} % Undo overwriting \cs{shipout}: % \begin{macrocode} @@ -778,6 +779,7 @@ } % \end{macrocode} % +% % \begin{macrocode} % % \end{macrocode} diff --git a/Master/texmf-dist/source/latex-dev/graphics/color.dtx b/Master/texmf-dist/source/latex-dev/graphics/color.dtx index b14c148f2f9..a35d6f6e964 100644 --- a/Master/texmf-dist/source/latex-dev/graphics/color.dtx +++ b/Master/texmf-dist/source/latex-dev/graphics/color.dtx @@ -2,7 +2,7 @@ % \iffalse % %% color.dtx Copyright (C) 1994--1999 David Carlisle -%% Copyright (C) 2005-2024 LaTeX Project +%% Copyright (C) 2005-2025 LaTeX Project %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% @@ -21,7 +21,7 @@ % \ProvidesFile{color.drv} % \fi % \ProvidesFile{color.dtx} - [2024/06/23 v1.3e Standard LaTeX Color (DPC)] + [2025/01/14 v1.3e Standard LaTeX Color (DPC)] % % \iffalse %<*driver> @@ -458,7 +458,9 @@ % specified colour, but then the colour reverts to its previous value. % The naming is by analogy with |\textrm| (as opposed to |\rm| and % |\rmfamily|) although it is slightly a misnomer as the command also -% works in math-mode. +% works in math-mode. In contrast to |\textrm|, the command gobbles spaces +% at the begin of its argument, so |Hello\textcolor{red}{ World}| will +% output Hello\textcolor{red}{ World}. % % Since December 95, in fact this command has one other difference % from |\color|. It calls |\leavevmode| to ensure the start of diff --git a/Master/texmf-dist/source/latex-dev/graphics/drivers.dtx b/Master/texmf-dist/source/latex-dev/graphics/drivers.dtx index fb5132272b9..bfa42f46f73 100644 --- a/Master/texmf-dist/source/latex-dev/graphics/drivers.dtx +++ b/Master/texmf-dist/source/latex-dev/graphics/drivers.dtx @@ -3,7 +3,7 @@ % %% drivers.dtx Copyright (C) 1994 David Carlisle Sebastian Rahtz %% Copyright (C) 1995 1996 1997 1998 1999 David Carlisle -%% Copyright (C) 2000-2024 LaTeX Project +%% Copyright (C) 2000-2025 LaTeX Project %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/source/latex-dev/graphics/epsfig.dtx b/Master/texmf-dist/source/latex-dev/graphics/epsfig.dtx index 46dc36d0bf8..13e59b25b19 100644 --- a/Master/texmf-dist/source/latex-dev/graphics/epsfig.dtx +++ b/Master/texmf-dist/source/latex-dev/graphics/epsfig.dtx @@ -2,7 +2,7 @@ % \iffalse % %% epsfig.dtx Copyright (C) 1994-1996 1999 Sebastian Rahtz -%% Copyright (C) 2000-2024 LaTeX Project +%% Copyright (C) 2000-2025 LaTeX Project %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/source/latex-dev/graphics/graphics.dtx b/Master/texmf-dist/source/latex-dev/graphics/graphics.dtx index 86556ea40ac..03e3157da8a 100644 --- a/Master/texmf-dist/source/latex-dev/graphics/graphics.dtx +++ b/Master/texmf-dist/source/latex-dev/graphics/graphics.dtx @@ -2,7 +2,7 @@ % \iffalse % %% graphics.dtx Copyright (C) 1994 David Carlisle Sebastian Rahtz -%% Copyright (C) 1995-2024 LaTeX Project +%% Copyright (C) 1995-2025 LaTeX Project %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/source/latex-dev/graphics/graphicx.dtx b/Master/texmf-dist/source/latex-dev/graphics/graphicx.dtx index 92f1af1d396..0dc0bfe1987 100644 --- a/Master/texmf-dist/source/latex-dev/graphics/graphicx.dtx +++ b/Master/texmf-dist/source/latex-dev/graphics/graphicx.dtx @@ -2,7 +2,7 @@ % \iffalse % %% graphicx.dtx Copyright (C) 1994 David Carlisle Sebastian Rahtz -%% Copyright (C) 1995-2024 LaTeX Project +%% Copyright (C) 1995-2025 LaTeX Project %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% @@ -19,7 +19,7 @@ % \ProvidesFile{graphicx.drv} % \fi % \ProvidesFile{graphicx.dtx} - [2021/09/16 v1.2d Enhanced LaTeX Graphics (DPC,SPQR)] + [2024/12/31 v1.2e Enhanced LaTeX Graphics (DPC,SPQR)] % % \iffalse %<*driver> @@ -170,7 +170,10 @@ % \item[page] The page of a multi-page PDF graphic to be used. % \item[interpolate] Enables interpolation of bitmap images by viewers. % \item[pagebox] Specifies which PDF box should be used for the natural image size, one of -% mediabox, cropbox, bleedbox, trimbox, artbox. The default is driver-specific. +% mediabox, cropbox, bleedbox, trimbox, artbox. The default is driver-specific. +% \item[alt] Alternative text in accessibility uses. +% \item[actualtext] ActualText text in accessibility uses. +% \item[artifact] Boolean to mark graphics as an artifact in accessibility uses. % \end{description} % % The arguments are interpreted left to right. |clip|, |draft|, |bb|,, @@ -566,7 +569,7 @@ % \end{key} % % \begin{key}{Gin}{alt} -% \changes{v1.2d}{2021/09/16 }{alt key gh/651} +% \changes{v1.2d}{2021/09/16}{alt key gh/651} % By default the |alt| key does nothing but may be used % for alternative text for accessibility uses in extensions. % \begin{macrocode} @@ -574,6 +577,25 @@ % \end{macrocode} % \end{key} % +% \begin{key}{Gin}{actualtext} +% \changes{v1.2e}{2024/12/31}{actualtext key gh/1552} +% By default the |actualtext| key does nothing but may be used +% for ActualText text for accessibility uses in extensions. +% \begin{macrocode} +\define@key{Gin}{actualtext}{} +% \end{macrocode} +% \end{key} +% +% \begin{key}{Gin}{artifact} +% \changes{v1.2e}{2024/12/31}{artifact key gh/1552} +% By default the |artifact| key does nothing but may be used +% to mark graphicas as an artifact for accessibility uses in extensions. +% \begin{macrocode} +\define@key{Gin}{artifact}[true]{% + \lowercase{\Gin@boolkey{#1}}{artifact}} +% \end{macrocode} +% \end{key} +% % \begin{macro}{\Gin@boolkey} % Helper function for defining boolean valued functions. The order of % arguments allows |\lowercase| to only act on the user-supplied diff --git a/Master/texmf-dist/source/latex-dev/graphics/keyval.dtx b/Master/texmf-dist/source/latex-dev/graphics/keyval.dtx index 02f9a15ec7c..7fecf57cd4f 100644 --- a/Master/texmf-dist/source/latex-dev/graphics/keyval.dtx +++ b/Master/texmf-dist/source/latex-dev/graphics/keyval.dtx @@ -1,7 +1,7 @@ % % \iffalse %% keyval.dtx Copyright (C) 1993 1994 1995 1997 1998 1999 David Carlisle -%% Copyright (C) 2000-2024 David Carlisle, LaTeX Project +%% Copyright (C) 2000-2025 David Carlisle, LaTeX Project %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/source/latex-dev/graphics/lscape.dtx b/Master/texmf-dist/source/latex-dev/graphics/lscape.dtx index eca5aa432bd..547d4372065 100644 --- a/Master/texmf-dist/source/latex-dev/graphics/lscape.dtx +++ b/Master/texmf-dist/source/latex-dev/graphics/lscape.dtx @@ -2,7 +2,7 @@ % \iffalse % %% lscape.dtx Copyright (C) 1994 1999-2000 David Carlisle -%% Copyright (C) 2000-2024 LaTeX Project +%% Copyright (C) 2000-2025 LaTeX Project %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/source/latex-dev/graphics/rotating.dtx b/Master/texmf-dist/source/latex-dev/graphics/rotating.dtx index bac5759956a..a1ca1c8c82c 100644 --- a/Master/texmf-dist/source/latex-dev/graphics/rotating.dtx +++ b/Master/texmf-dist/source/latex-dev/graphics/rotating.dtx @@ -5,7 +5,7 @@ % File: rotating.dtx %% Copyright (C) 1995-1999 Sebastian Rahtz and Leonor Barroca %% Copyright (C) 2001-2003,2007-2009 Robin Fairbairns -%% Copyright (C) 2016-2024 LaTeX Project +%% Copyright (C) 2016-2025 LaTeX Project %% The LaTeX Project and any individual authors listed elsewhere %% in this file. % @@ -30,7 +30,7 @@ \ProvidesFile{rotating.dtx}% % %\ProvidesPackage{rotating}% - [2016/08/11 v2.16d + [2025/01/14 v2.16e % rotated objects in LaTeX% %<*dtx> rotating package source file% @@ -257,8 +257,12 @@ % \section{Turning and rotation environments} % \begin{macro}{sideways} % Environment to turn the contents through 90 degrees. +% \changes{v2.16e}{2025/01/14}{add \cs{leavevmode} for tagging support} +% \cs{Grot@box} issues a \cs{leavevmode} but for tagging (when using lualatex) +% this is too late, it should happen before the box is set. % \begin{macrocode} \def\sideways{% + \leavevmode \Grot@setangle{90}% \setbox\z@\color@hbox\ignorespaces} \def\endsideways{% @@ -272,8 +276,10 @@ % % \begin{macro}{turn} % Rotate the contents of the environment, leaving the appropriate space +% \changes{v2.16e}{2025/01/14}{add \cs{leavevmode} for tagging support} % \begin{macrocode} \def\turn#1{% + \leavevmode \Grot@setangle{#1}% \setbox\z@\color@hbox\ignorespaces} \def\endturn{% @@ -286,8 +292,10 @@ % \end{macro} % \begin{macro}{rotate} % Rotate the contents of the environment, leaving \emph{no space}. +% \changes{v2.16e}{2025/01/14}{add \cs{leavevmode} for tagging support} % \begin{macrocode} \def\rotate#1{% + \leavevmode \Grot@setangle{#1}% \setbox\z@\color@hbox\ignorespaces} \def\endrotate{% @@ -301,8 +309,10 @@ % \end{macro} % \begin{macro}{\turnbox} % A macro version of the `rotate' environment. +% \changes{v2.16e}{2025/01/14}{add \cs{leavevmode} for tagging support} % \begin{macrocode} \def\turnbox#1#2{% + \leavevmode \Grot@setangle{#1}% % \end{macrocode} % Note: grouping within the box makes \cs{color@hbox} unnecessary, I think. @@ -350,9 +360,13 @@ % \end{macrocode} % Set the float contents in % a box of width \cs{textheight} instead of \cs{columnwidth}. +% \changes{v2.16e}{2025/01/14}{correct tagging of the minipage} % \begin{macrocode} \begin{lrbox}\rot@float@box + \SuspendTagging{\minipage}% \begin{minipage}\textheight + \ResumeTagging{\minipage}% + \UseTaggingSocket{para/restore}% } % \end{macrocode} % \end{macro} @@ -372,7 +386,10 @@ % we need to use the a variant \cs{pageref} mechanism and our own % specialised labels. % \begin{macrocode} - \end{minipage}\end{lrbox}% + \par\SuspendTagging{\minipage}% + \end{minipage}% + \ResumeTagging{\minipage}% + \end{lrbox}% \stepcounter{r@tfl@t}% \rot@label{RF\ther@tfl@t}% \rot@pageref{RF\ther@tfl@t}{\R@@page}% diff --git a/Master/texmf-dist/source/latex-dev/graphics/trig.dtx b/Master/texmf-dist/source/latex-dev/graphics/trig.dtx index d2fa91f91f7..ebbcb7598b2 100644 --- a/Master/texmf-dist/source/latex-dev/graphics/trig.dtx +++ b/Master/texmf-dist/source/latex-dev/graphics/trig.dtx @@ -1,6 +1,6 @@ % \iffalse %% File: trig.dtx Copyright (C) 1993-1999 David Carlisle -%% Copyright (C) 2000-2024 LaTeX Project +%% Copyright (C) 2000-2025 LaTeX Project %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/source/latex-dev/latex-lab/documentmetadata-support.dtx b/Master/texmf-dist/source/latex-dev/latex-lab/documentmetadata-support.dtx index 6752e8098ae..9d83f35b9e6 100644 --- a/Master/texmf-dist/source/latex-dev/latex-lab/documentmetadata-support.dtx +++ b/Master/texmf-dist/source/latex-dev/latex-lab/documentmetadata-support.dtx @@ -1,7 +1,7 @@ % \iffalse meta-comment % %% File: documentmetadata-support.dtx -% Copyright (C) 2021-2024 The LaTeX Project +% Copyright (C) 2021-2025 The LaTeX Project % % It may be distributed and/or modified under the conditions of the % LaTeX Project Public License (LPPL), either version 1.3c of this @@ -18,8 +18,8 @@ % for those people who are interested or want to report an issue. % % \begin{macrocode} -\def\documentmetadatasupportversion{1.0j} -\def\documentmetadatasupportdate{2024-09-13} +\def\documentmetadatasupportversion{1.0m} +\def\documentmetadatasupportdate{2025-02-17} % \end{macrocode} % % @@ -68,7 +68,7 @@ % is easier to update it without the need to build a full \LaTeX{} % release. Over time the functionality will move fully into the % kernel. -% +% % \cs{DocumentMetadata} also loads and activates % the new PDF management code from \pkg{pdfmanagement-testphase}. % As this forces the loading of the \pkg{l3backend} files, a backend @@ -85,12 +85,12 @@ % project~\cite{blueprint}. % % \section{The \cs{DocumentMetadata} command} -% +% % \begin{function}{\DocumentMetadata} % \begin{syntax} % \cs{DocumentMetadata}\Arg{key-value list} % \end{syntax} -% +% % The command should be used as the first command in a document, before % \cs{documentclass}. It takes a key-value argument. % \end{function} @@ -137,37 +137,40 @@ % The |u| variants do not enforce unicode, % but they will pass the information to hyperref. The |a| variants % do \emph{not} enforce (or even test) a tagged pdf yet. -% -% Starting with version 0.95s of \pkg{pdfmanagement-testphase} -% it is also possible to use the values -% |X-4|, |X-4p|, |X-5g|, |X-5n|, |X-5pg|, |X-6|, |X-6n|, |X-6p|, |UA-1| for -% a PDF/X and PDF/UA standard. These keys currently set \emph{only} the relevant -% XMP-metadata. In version 0.95z support for |UA-2| has been added but -% note that |UA-2| hasn't been released yet. It should be used only together -% with pdf version 2.0. +% +% Beside the A-standards it is also possible to use the values +% |X-4|, |X-4p|, |X-5g|, |X-5n|, |X-5pg|, |X-6|, |X-6n|, |X-6p| for +% a PDF/X and |UA-1| and |UA-2| for PDF/UA standard. +% |UA-2| should only be used together with PDF 2.0. +% Currently these keys set \emph{only} the relevant XMP-metadata. +% They do not validate or enforce special requirements +% (e.g., the |UA| standards do not automatically activate tagging). % % |pdfstandard| can be used more than once to set overlapping standards, e.g:\\ % |pdfstandard=A-2b,pdfstandard=X-4,pdfstandard=UA-1| -% +% % If XMP-metadata are added (see the following key \texttt{xmp}) -% the needed conformance marker for the standards are set. -% +% the necessary conformance markers for the standards are set. +% % More information can be found in the documentation -% of \pkg{l3pdfmeta}. +% of \pkg{l3pdfmeta}. % % \item[\texttt{xmp}] A boolean, if set to false no XMP metadata are added to the PDF. % The initial value is true. Details are described in the documentation of \pkg{l3pdfmeta}. -% +% % \item[\texttt{colorprofiles}] This allows to load icc-colorprofiles. Details % are described in the documentation of \pkg{l3pdfmeta}. % -% \item[\texttt{testphase}] This key is used to load testphase code. +% \item[\texttt{testphase}] This key is used to load testphase code. % The |testphase| key can only be used in the first \cs{DocumentMetadata}. % The values it accepts and their effect will change over time, when testphase packages are added or % removed or when the code is moved into the kernel. The key accepts a list of values % and it can be used more than once. -% -% The \texttt{phase} key bundle testphase modules. They also all activate tagging. +% +% The value \texttt{latest} loads all modules that we recommend +% so that it is not necessary to specify individual modules. +% +% The \texttt{phase} keys bundle testphase modules. They also all activate tagging. % \begin{description} % \item[\texttt{phase-I}] % This value loads code implementing the first phase of the project~\cite{blueprint}, i.e., it @@ -183,37 +186,37 @@ % This is the current development phase. % It differs from \texttt{phase-II} \emph{a lot}: It will % load new code for the tagging of lists, sectioning commands, -% table of contents and similar lists, graphics, minipages and floats. -% As it redefines many internals it is currently restricted to the use of -% standard classes (article, report, and book) -% and it supports only a limited number of add-on packages. +% table of contents and similar lists, graphics, minipages and floats. +% As it redefines many internals it is currently restricted to the use of +% standard classes (article, report, and book) +% and it supports only a limited number of add-on packages. % \end{description} -% +% % The various testphase modules can also be loaded individually (at least in theory, % there can be hidden dependencies). If loaded like this, the tagpdf package is not % loaded and tagging is not activated! The list of modules will change over time. -% \begin{description} +% \begin{description} % \item[\texttt{new-or-1}] This patches a few commands related % to the output routine. The patches are needed for the tagging -% of paragraphs, for the tagging of header and footer and +% of paragraphs, for the tagging of header and footer and % to allow the PDF management to insert code which avoids that -% links happening at page breaks spills into the header and footer. +% links happening at page breaks spills into the header and footer. % This code is automatically loaded if the \texttt{testphase} values -% \texttt{phase-I}, \texttt{phase-II} or \texttt{new-or} are used.% -% \item[\texttt{new-or}] This loads more changes to the output routine required for the -% tagging. It is not compatible with every class! The code is also loaded by the +% \texttt{phase-I}, \texttt{phase-II} or \texttt{new-or} are used.% +% \item[\texttt{new-or}] This loads more changes to the output routine required for the +% tagging. It is not compatible with every class! The code is also loaded by the % \texttt{phase-II} value. % \item[\texttt{sec}] This adapts commands related to sectioning to make them tagging aware. % The \texttt{sec} module is loaded by \texttt{phase-III}. % \item[\texttt{toc}] This adapts commands related to the table of contents and -% similar list to make them tagging aware. The \texttt{toc} module is loaded by \texttt{phase-III}. +% similar list to make them tagging aware. The \texttt{toc} module is loaded by \texttt{phase-III}. % \item[\texttt{graphic}] This enables tagging support for -% the \cs{includegraphics} command and the \texttt{picture} environment. +% the \cs{includegraphics} command and the \texttt{picture} environment. % This code is also loaded by the \texttt{phase-III} key. % \item[\texttt{block}] This reimplements lists and blocks environments and % add tagging support. % This code is also loaded by the \texttt{phase-III} key. -% \item[\texttt{minipage}] This adds tagging support to \texttt{minipage} +% \item[\texttt{minipage}] This adds tagging support to \texttt{minipage} % and \cs{parbox}. % This code is also loaded by the \texttt{phase-III} key. % \item[\texttt{float}] This adds tagging support to floats. @@ -230,16 +233,16 @@ % and \cs{author} commands to fill the XMP-metadata and set the window title. % It is not compatible with packages and classes which redefine these commands % too. The module is currently not loaded by any \texttt{phase} key. -% \item[\texttt{math}] This adapts math for tagging. This is only a prototype. -% The module is currently not loaded by any \texttt{phase} key. -% \item[\texttt{table}] This provides basic tagging for -% \texttt{tabular}, \texttt{longtable} and similar table environments. -% The module is currently not loaded by any \texttt{phase} key. Its use and -% restrictions is documented in \texttt{latex-lab-table.pdf}.% +% \item[\texttt{math}] This adapts math for tagging. This is only a prototype. +% The module is currently not loaded by any \texttt{phase} key. +% \item[\texttt{table}] This provides basic tagging for +% \texttt{tabular}, \texttt{longtable} and similar table environments. +% The module is currently not loaded by any \texttt{phase} key. Its use and +% restrictions is documented in \texttt{latex-lab-table.pdf}.% % \item[\texttt{firstaid}] This contains small adjustments to external packages. -% The module is currently not loaded by any \texttt{phase} key. +% The module is currently not loaded by any \texttt{phase} key. % \end{description} -% +% % % \item[\texttt{debug}] This key activates some debug options. It takes a list of key-values % as value. Currently the following keys are known: @@ -253,12 +256,12 @@ % related to them. More information can be found in the documentation of % \pkg{pdfmanagement-firstaid}. % \item[\texttt{xmp-export}] This will export the XMP-metadata to a file \verb+\jobname.xmpi+. -% with \texttt{debug=\{xmp-export=filename\}} the file name can be changed. +% with \texttt{debug=\{xmp-export=filename\}} the file name can be changed. % More information can be found in the documentation of \pkg{l3pdfmeta} of the \pkg{pdfmanagement-testphase} -% bundle. +% bundle. % \item[\texttt{tagpdf}] This loads the package tagpdf-debug which enhances % various commands from tagpdf with additional debugging options. This can slow down -% the compilation! +% the compilation! % \end{description} % \end{description} % @@ -304,7 +307,7 @@ % \begin{macrocode} \clist_if_exist:NF \g_@@_firstaidoff_clist { \clist_new:N \g_@@_firstaidoff_clist } -% \end{macrocode} +% \end{macrocode} % \end{variable} % \begin{variable}{\g_@@_testphase_tl} % a tl to store the testphase loading code so that we can load them at @@ -314,7 +317,7 @@ { \tl_new:N \g_@@_testphase_tl } % \end{macrocode} % \end{variable} -% +% % \subsection{Kernel changes with \cs{DocumentMetadata}} % \begin{macro}{\@kernel@before@DocumentMetadata} % \begin{macrocode} @@ -329,7 +332,7 @@ % \end{macro} % \subsection{\cs{DocumentMetadata}} -% +% % \begin{macro}{\DocumentMetadata} % % \cs{DocumentMetadata} should not be used after @@ -367,35 +370,38 @@ \file_input:n {l3backend-testphase-\c_sys_backend_str.def} \ExplSyntaxOff\makeatother % \end{macrocode} -% -% Process the init keys and setup the generic driver. +% \changes{v1.0m}{2025/02/17}{Set PDF 2.0 as default} % \begin{macrocode} - \keys_set_filter:nnn { document / metadata } { init } { #1 } + \pdf_version_gset:n { 2.0 } +% \end{macrocode} +% Process the non-init keys and setup the generic driver. +% \begin{macrocode} + \keys_set_exclude_groups:nnn { document / metadata } { init } { #1 } \bool_if:NT \g_@@_active_bool { \PassOptionsToPackage{customdriver=hgeneric-testphase}{hyperref} % \end{macrocode} -% Finally we setup the language default. +% Finally we setup the language default. % This is done after the begindocument hook so that it can pick up settings % from babel. If the Catalog dictionary already contains a lang value we do nothing, % otherwise we use the value stored in \cs{BCPdata}, either the main language -% (if its exists) or the fall back language. +% (if its exists) or the fall back language. % Note: if babel is loaded without a language this gives the language \texttt{und}. -% \begin{macrocode} +% \begin{macrocode} \g@addto@macro\@kernel@after@begindocument - { + { \pdfdict_get:nnN {g__pdf_Core/Catalog}{Lang}\l_@@_tmpa_tl - \quark_if_no_value:NT\l_@@_tmpa_tl + \quark_if_no_value:NT\l_@@_tmpa_tl { \tl_if_empty:eTF { \BCPdata{main.language} } { \tl_set:Ne \l_@@_tmpb_tl { \BCPdata{language} } } { \tl_set:Ne \l_@@_tmpb_tl { \BCPdata{main.language} } } \msg_warning:nne { meta } { lang-missing }{ \l_@@_tmpb_tl } \exp_last_unbraced:Ne - \AddToDocumentProperties{[document]{lang}{\l_@@_tmpb_tl}} - \pdfmanagement_add:nne {Catalog} {Lang}{(\l_@@_tmpb_tl)} + \AddToDocumentProperties{[document]{lang}{\l_@@_tmpb_tl}} + \pdfmanagement_add:nne {Catalog} {Lang}{(\l_@@_tmpb_tl)} } - } + } } % \end{macrocode} % \cs{pdfmanagement_add:nnn} has collected values in this hook. @@ -409,7 +415,7 @@ % \begin{macrocode} \cs_set_protected:Npn \DocumentMetadata ##1 { - \keys_set_filter:nnn { document / metadata } { init } { ##1 } + \keys_set_exclude_groups:nnn { document / metadata } { init } { ##1 } \str_remove_all:cn {opt@hyperref.sty}{customdriver=hgeneric-testphase} \bool_if:NT \g__pdfmanagement_active_bool { @@ -428,6 +434,7 @@ % \end{macro} %\subsection{\cs{DocumentMetadata} keys} +%\changes{1.0k}{2024-12-17}{added latest value for testphase key.} % \begin{macrocode} \keys_define:nn { document / metadata } { @@ -466,41 +473,32 @@ ,_pdfstandard .choices:nn = {A-1B,A-2A,A-2B,A-2U,A-3A,A-3B,A-3U,A-4} { - \prop_if_exist:cT { g__pdfmeta_standard_pdf/#1_prop } - { - \prop_gset_eq:Nc \g__pdfmeta_standard_prop { g__pdfmeta_standard_pdf/#1 _prop } - } + \prop_gset_eq:Nc \g__pdfmeta_standard_prop { g__pdfmeta_standard_pdf/#1 _prop } \AddToDocumentProperties [document]{pdfstandard}{#1} } - ,_pdfstandard / A-4F .code:n = + ,_pdfstandard / A-4F .code:n = { - \prop_if_exist:cTF { g__pdfmeta_standard_pdf/A-4F_prop } - { - \prop_gset_eq:Nc \g__pdfmeta_standard_prop { g__pdfmeta_standard_pdf/A-4F_prop } - } - { - \prop_gset_eq:Nc \g__pdfmeta_standard_prop { g__pdfmeta_standard_pdf/A-4_prop } - \prop_gput:Nnn \g__pdfmeta_standard_prop{conformance}{F} - } + \prop_gset_eq:Nc \g__pdfmeta_standard_prop { g__pdfmeta_standard_pdf/A-4F_prop } \AddToDocumentProperties [document]{pdfstandard}{A-4F} } - ,_pdfstandard / A-4E .code:n = + ,_pdfstandard / A-4E .code:n = { - \prop_if_exist:cTF { g__pdfmeta_standard_pdf/A-4E_prop } - { - \prop_gset_eq:Nc \g__pdfmeta_standard_prop { g__pdfmeta_standard_pdf/A-4E_prop } - } - { - \prop_gset_eq:Nc \g__pdfmeta_standard_prop { g__pdfmeta_standard_pdf/A-4_prop } - \prop_gput:Nnn \g__pdfmeta_standard_prop{conformance}{E} - } + \prop_gset_eq:Nc \g__pdfmeta_standard_prop { g__pdfmeta_standard_pdf/A-4E_prop } \AddToDocumentProperties [document]{pdfstandard}{A-4E} - } + } ,_pdfstandard / unknown .code:n = { \msg_error:nnn{pdf}{unknown-standard}{#1} } ,testphase .multichoice: + ,testphase / latest .code:n = + { + \keys_set:nn + {document / metadata} + {testphase={phase-III,title,table,math,firstaid}} + \msg_note:nnn { meta } { testphase-latest-loading } + { phase-III,~title,~table,~math,~firstaid } + } ,testphase / tagpdf .code:n = { \tl_gput_right:Nn\g_@@_testphase_tl @@ -568,7 +566,7 @@ { \RequirePackage{tagpdf-debug} } - } + } ,debug / uncompress .code:n = { \pdf_uncompress: @@ -596,9 +594,14 @@ } \msg_new:nnn { meta } { lang-missing } { - The~language~has~not~been~set~in~\token_to_str:N + The~language~has~not~been~set~in~\token_to_str:N \DocumentMetadata.\\Setting~it~to~'#1'~as~fallback. - } + } +\msg_new:nnn { meta } { testphase-latest-loading } + { + Loading~testphase~modules\\ + #1 + } % \end{macrocode} % % \begin{macrocode} diff --git a/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-amsmath.dtx b/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-amsmath.dtx index 8591b39b392..3c9b8585a40 100644 --- a/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-amsmath.dtx +++ b/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-amsmath.dtx @@ -2,7 +2,7 @@ % %% File: latex-lab-amsmath.dtx % -% Copyright (C) 2022-2024 The LaTeX Project +% Copyright (C) 2022-2025 The LaTeX Project % % It may be distributed and/or modified under the conditions of the % LaTeX Project Public License (LPPL), either version 1.3c of this @@ -48,15 +48,16 @@ % % \section{Introduction} % -% This file implements adaptations to the \pkg{amsmath} package needed for -% the tagging project. +% This file implements adaptations to the \pkg{amsmath} package needed for +% the tagging project. % % \MaybeStop{\setlength\IndexMin{200pt} \PrintIndex } % % \section{The Implementation} % +% Better no @@ expansion here \ldots ... % \begin{macrocode} -%<@@=math> +%<@@=> % \end{macrocode} % % \begin{macrocode} @@ -66,7 +67,7 @@ % \subsection{File declaration} % \begin{macrocode} \ProvidesFile{latex-lab-amsmath.ltx} - [2024-09-18 v0.1c amsmath adaptions] + [2025-01-31 v0.1e amsmath adaptions] % \end{macrocode} % \subsection{Tagpdf support} % To make the code independent from tagging being loaded and active @@ -75,87 +76,958 @@ % \begin{macrocode} \RequirePackage{tagpdf-base} % \end{macrocode} -% +% % \begin{macrocode} \ExplSyntaxOn % \end{macrocode} % +% \subsection{Measuring} +% When measuring we neither want tagging nor the luamml processing. +% \begin{macro}{\measuring@true} +% \begin{macrocode} +\def\measuring@true{\let\ifmeasuring@\iftrue\tag_suspend:n{\measuring}\luamml_ignore:} +% \end{macrocode} +% \end{macro} +% +% \subsection{Display environments} +% \changes{0.1e}{2025-01-31}{moved redefinitions from latex-lab-math and luamml into this file} +% +% \subsubsection{Tag} +% The tag/label must be saved, so that it can be reinserted later. +% +% TODO: \cs{maketag@@@} is perhaps used in places where tagging/luamml handling +% is not wanted. This must be checked and handled. +% \begin{macro}{\maketag@@@} +% \begin{macrocode} +\def\maketag@@@#1 + {% + \ifmeasuring@ + \hbox{\m@th\normalfont#1}% + \else + \UseTaggingSocket{math/display/tag/begin} + \hbox{\m@th\normalfont#1 + \UseTaggingSocket{math/luamml/mtable/tag/save} + }% + \UseTaggingSocket{math/display/tag/end} + \fi + } +% \end{macrocode} +% \end{macro} +% \cs{eqref} uses \cs{tagform@} and so \cs{maketag@@@} but we do not want this tagging +% there. +% +% \begin{macro}{\eqref} +% \begin{macro}{\maketag@@@notog} +% \begin{macrocode} +\def\maketag@@@notag#1{\hbox{\m@th\normalfont#1}} +\DeclareRobustCommand{\eqref}[1] + {\textup{\let\maketag@@@\maketag@@@notag\tagform@{\ref{#1}}}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \subsubsection{align \& friends} +% +% Most display environment uses a common command for the end which contains +% the luamml socket to finalize the mtable. +% \begin{macro}{\common@align@ending} +% \begin{macrocode} +\def\common@align@ending { + \math@cr \black@\totwidth@ + \UseExpandableTaggingSocket {math/luamml/mtable/finalize} {align} + \egroup + \ifingather@ + \restorealignstate@ + \egroup + \nonumber + \ifnum0=`{\fi\iffalse}\fi + \else + $$% + \fi + \ignorespacesafterend +} +% \end{macrocode} +% \end{macro} +% Now we redefine the display alignments to use these ending. +% \begin{macrocode} +\renewenvironment{align}{% + \start@align\@ne\st@rredfalse\m@ne +}{% + \common@align@ending +} +\renewenvironment{align*}{% + \start@align\@ne\st@rredtrue\m@ne +}{% + \common@align@ending +} +\renewenvironment{alignat}{% + \start@align\z@\st@rredfalse +}{% + \common@align@ending +} +\renewenvironment{alignat*}{% + \start@align\z@\st@rredtrue +}{% + \common@align@ending +} +\renewenvironment{flalign}{% + \start@align\tw@\st@rredfalse\m@ne +}{% + \common@align@ending +} +\renewenvironment{flalign*}{% + \start@align\tw@\st@rredtrue\m@ne +}{% + \common@align@ending +} +\renewenvironment{xalignat}{% + \start@align\@ne\st@rredfalse +}{% + \common@align@ending +} +\renewenvironment{xalignat*}{% + \start@align\@ne\st@rredtrue +}{% + \common@align@ending +} +\renewenvironment{xxalignat}{% + \start@align\tw@\st@rredtrue +}{% + \common@align@ending +} +% \end{macrocode} +% +% And register these environments for the math grabbing. +% \begin{macrocode} + \math_register_halign_env:nn {align}{} + \math_register_halign_env:nn {align*}{} + \math_register_halign_env:nn {alignat}{} + \math_register_halign_env:nn {alignat*}{} + \math_register_halign_env:nn {flalign}{} + \math_register_halign_env:nn {flalign*}{} + \math_register_halign_env:nn {xalignat}{} + \math_register_halign_env:nn {xalignat*}{} + \math_register_halign_env:nn {xxalignat}{} +% \end{macrocode} +% +% The align preamble (used in \cs{align@}) needs code for luamml +% to save the cells. +% \begin{macro}{\align@preamble} +% \begin{macrocode} +\def\align@preamble{% + &\hfil + \strut@ + \setboxz@h + { + \@lign + $ + \m@th\displaystyle{##} + \ifmeasuring@ + \luamml_ignore: + \else + \UseTaggingSocket{math/luamml/save/nNn}{ {} \displaystyle {mtd} } + \fi + $ + }% + \ifmeasuring@ + \savefieldlength@ + \else + \UseTaggingSocket{math/luamml/mtable/finalizecol}{box} + \fi + \set@field + \tabskip\z@skip + &\setboxz@h + { + \@lign + $ + \m@th\displaystyle{{}##} + \ifmeasuring@ + \luamml_ignore: + \else + \UseTaggingSocket{math/luamml/save/nNn}{ {} \displaystyle {mtd} } + \fi + $ + }% + \ifmeasuring@ + \savefieldlength@ + \else + \UseTaggingSocket{math/luamml/mtable/finalizecol}{box} + \fi + \set@field + \hfil + \tabskip\alignsep@ +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\math@cr@@@align} +% \begin{macrocode} +\def\math@cr@@@align{% + \ifst@rred\nonumber\fi + \if@eqnsw \global\tag@true \fi + \global\advance\row@\@ne + \add@amps\maxfields@ + \omit + \kern-\alignsep@ + \iftag@ + \setboxz@h{\@lign\strut@{\make@display@tag}}% + \place@tag + \fi + \UseTaggingSocket{math/luamml/mtable/tag/set} + \ifst@rred\else\global\@eqnswtrue\fi + \global\lineht@\z@ + \cr +} +% \end{macrocode} +% \end{macro} +% +% \subsubsection{\texttt{gather} and \texttt{gather*}} +% +% \begin{macro}{\gather@} +% \begin{macrocode} +\def\gather@#1{% + \ingather@true \let\split\insplit@ + \let\tag\tag@in@align \let\label\label@in@display + \chardef\dspbrk@context\z@ + \intertext@ \displ@y@ \Let@ + \let\math@cr@@@\math@cr@@@gather + \gmeasure@{#1}% + \global\shifttag@false + \tabskip\z@skip + \global\row@\@ne + \halign to\displaywidth\bgroup + \strut@ + \setboxz@h + { + $\m@th\displaystyle{##} + \UseTaggingSocket{math/luamml/save/nNn}{ {} \displaystyle {mtd} } + $ + }% + \UseTaggingSocket{math/luamml/mtable/finalizecol}{box} + \calc@shift@gather + \set@gather@field + \tabskip\@centering + &\setboxz@h{\strut@{##}}% + \place@tag@gather + \UseTaggingSocket{math/luamml/mtable/tag/set} + \tabskip \iftagsleft@ \gdisplaywidth@ \else \z@skip \span\fi + \crcr + #1% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\endgather} +% \begin{macrocode} +\def\endgather{ + \math@cr + \black@ \totwidth@ + \UseExpandableTaggingSocket{math/luamml/mtable/finalize} {gather} + \egroup + $$ + \ignorespacesafterend +} +% \end{macrocode} +% \end{macro} +% +% The original definition of \texttt{gather*} uses \cs{endgather} +% but this redirection doesn't work if we alter \texttt{gather} so we use +% the real meaning and add the socket. +% \begin{environment}{gather*} +% \begin{macrocode} +\renewenvironment{gather*} + { + \start@gather\st@rredtrue + } + { + \math@cr + \black@\totwidth@ + \UseExpandableTaggingSocket{math/luamml/mtable/finalize} {gather} + \egroup + $$\ignorespacesafterend + } +% \end{macrocode} +% \end{environment} +% +% Register both environments +% \begin{macrocode} +\math_register_halign_env:nn {gather}{} +\math_register_halign_env:nn {gather*}{} +% \end{macrocode} +% +% \subsubsection{gathered, aligned and alignedat} +% These environments are not grabbed as they are inside other display +% environments but they need various sockets for luamml support. +% \begin{macro}{\start@aligned} +% \begin{macrocode} +\renewcommand{\start@aligned}[2]{ + \RIfM@ + \else + \nonmatherr@ {\begin{\@currenvir}} + \fi + \savecolumn@ % Assumption: called inside a group + \UseTaggingSocket{math/luamml/annotate/false}{}{ \alignedspace@left } + \ams@start@box {#1} \bgroup + \maxfields@ #2 \relax + \ifnum \maxfields@ > \m@ne + \multiply \maxfields@ \tw@ + \let \math@cr@@@ \math@cr@@@alignedat + \alignsep@ \z@skip + \else + \let \math@cr@@@ \math@cr@@@aligned + \alignsep@ \minalignsep + \fi + \Let@ \chardef \dspbrk@context \@ne + \default@tag + \spread@equation % no-op if already called + \global \column@ \z@ + \ialign \bgroup + & \column@plus + \hfil + \strut@ + $ + \m@th + \displaystyle + {##} + \UseTaggingSocket{math/luamml/save/nNn}{ {} \displaystyle {mtd} } + $ + \UseTaggingSocket{math/luamml/mtable/finalizecol}{last} + \tabskip \z@skip + & \column@plus + $ + \m@th + \displaystyle + { + {} + ## + } + \UseTaggingSocket{math/luamml/save/nNn}{ {} \displaystyle {mtd} } + $ + \UseTaggingSocket{math/luamml/mtable/finalizecol}{last} + \hfil + \tabskip\alignsep@ + \crcr + \ams@return@opt@arg +} +% \end{macrocode} +% \end{macro} +% +% \begin{environment}{gathered} +% \begin{macrocode} +\renewenvironment{gathered}[1][c]{% + \RIfM@\else + \nonmatherr@{\begin{gathered}}% + \fi +% \end{macrocode} +% This annotates the space +% \begin{macrocode} + \UseTaggingSocket{ math/luamml/annotate/false } {}{ \alignedspace@left } + \ams@start@box{#1}\bgroup + \Let@ \chardef\dspbrk@context\@ne \restore@math@cr + \spread@equation + \ialign\bgroup + \hfil\strut@$\m@th\displaystyle## +% \end{macrocode} +% This save the cell and then finalize it. +% \begin{macrocode} + \UseTaggingSocket{math/luamml/save/nNn}{ {} \displaystyle {mtd} } + $ + \UseTaggingSocket{math/luamml/mtable/finalizecol}{last} + \hfil + \crcr + \ams@return@opt@arg +}{% + \endaligned +} +% \end{macrocode} +% \end{environment} +% +% \begin{macro}{\endaligned} +% \begin{macrocode} +\def\endaligned + { + \crcr + \UseExpandableTaggingSocket{math/luamml/mtable/innertable/save} + \egroup + \restorecolumn@ + \egroup + \UseTaggingSocket{math/luamml/mtable/innertable/finalize} + } +% \end{macrocode} +% \end{macro} +% +% \subsubsection{multline and multline*} +% +% \texttt{multline*} needs a redefinition before it is registered as it uses +% \cs{endmultline}, this must be replaced by the true code. +% +% \begin{environment}{multline*} +% \begin{macrocode} +\renewenvironment{multline*}{\start@multline\st@rredtrue} + {% + \iftagsleft@ \@xp\lendmultline@ \else \@xp\rendmultline@ \fi + \ignorespacesafterend + } +% \end{macrocode} +% \end{environment} +% +% And now we register both +% \begin{macrocode} +\math_register_halign_env:nn {multline}{} +\math_register_halign_env:nn {multline*}{} +% \end{macrocode} +% +% In the internal commands we have to add sockets for alignment attributes +% \begin{macro}{\multline@} +% \begin{macrocode} +\def\multline@#1{% + \Let@ + \@display@init{\global\advance\row@\@ne \global\dspbrk@lvl\m@ne}% + \chardef\dspbrk@context\z@ + \restore@math@cr + \let\tag\tag@in@align + \global\tag@false \global\let\raise@tag\@empty + \mmeasure@{#1}% + \let\tag\gobble@tag \let\label\@gobble + \tabskip \if@fleqn \@mathmargin \else \z@skip \fi + \totwidth@\displaywidth + \if@fleqn + \advance\totwidth@-\@mathmargin + \fi + \halign\bgroup + \hbox to\totwidth@{% + \if@fleqn + \hskip \@centering \relax + \else + \hfil + \fi + \strut@ + $\m@th\displaystyle{}##\endmultline@math + \hfil + }% + \crcr + \if@fleqn + \hskip-\@mathmargin + \def\multline@indent{\hskip\@mathmargin}% put it back + \else + \hfilneg + \def\multline@indent{\hskip\multlinegap}% + \fi + \iftagsleft@ + \iftag@ + \begingroup + \ifshifttag@ + \rlap{\vbox{% + \normalbaselines + \hbox{% + \strut@ + \make@display@tag + }% + \vbox to\lineht@{}% + \raise@tag + }}% + \multline@indent + \else + \setbox\z@\hbox{\make@display@tag}% + \dimen@\@mathmargin \advance\dimen@-\wd\z@ + \ifdim\dimen@<\multlinetaggap + \dimen@\multlinetaggap + \fi + \box\z@ \hskip\dimen@\relax + \fi + \endgroup + \else + \multline@indent + \fi + \else + \multline@indent + \fi + \ifmeasuring@ \else + \UseTaggingSocket{math/luamml/mtable/aligncol} {left} + \fi + #1% + \ifmeasuring@ \else + \UseTaggingSocket{math/luamml/mtable/aligncol} {right} + \fi +} +% \end{macrocode} +% \end{macro} +% +% Luckily, \texttt{multline} uses \cs{endmultline@math} in exactly +% the spot where we have to set the flag. +% Less luckily, \cs{endmultline@math} sometimes get overwritten for the last line. +% But that isn't much of a problem since we want special behavior there anyway. +% \begin{macro}{\endmultline@math} +% \begin{macrocode} +\def\endmultline@math + { + \UseTaggingSocket{math/luamml/save/nNn}{ {} \displaystyle {mtd} } + $ + \UseTaggingSocket{math/luamml/mtable/finalizecol}{last} + } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\rendmultline@} +% \begin{macrocode} +\def\rendmultline@{% + \iftag@ +% \end{macrocode} +% we need to surround the math token with tagging sockets. +% \begin{macrocode} + \UseTaggingSocket{math/luamml/save/nNn}{ {} \displaystyle {mtd} } + $ + \UseTaggingSocket{math/luamml/mtable/finalizecol}{last} + \let\endmultline@math\relax + \ifshifttag@ + \hskip\multlinegap + \llap{\vtop{% + \raise@tag + \normalbaselines + \setbox\@ne\null + \dp\@ne\lineht@ + \box\@ne + \hbox{\strut@\make@display@tag}% + }}% + \else + \hskip\multlinetaggap + \make@display@tag + \fi +% \end{macrocode} +% Here we set the tag TODO: is that sensible with multline? Where is the tag saved? +% \begin{macrocode} + \UseTaggingSocket{math/luamml/mtable/tag/set} + \else + \hskip\multlinegap + \fi + \hfilneg + \math@cr +% \end{macrocode} +% Now we finalize the mtable. +% \begin{macrocode} + \UseExpandableTaggingSocket {math/luamml/mtable/finalize} {multline} + \egroup$$% +} +% \end{macrocode} +% \end{macro} +% And something similar for the left version +% \begin{macro}{\lendmultline@} +% \begin{macrocode} +\def\lendmultline@{% + \hfilneg + \hskip\multlinegap + \math@cr + \UseExpandableTaggingSocket {math/luamml/mtable/finalize} {multline} + \egroup + $$% +} +% \end{macrocode} +% \end{macro} +% +% \subsection{Cases} +% +% \begin{macro}{env@cases} +% \begin{macrocode} +\def\env@cases{% + \let\@ifnextchar\new@ifnextchar + \left\lbrace + \def\arraystretch{1.2}% + \array{@{}l@{\quad}l@{\luamml_ignore:}}% +} +% \end{macrocode} +% \end{macro} +% +% \subsubsection{smallmatrix} + +% \begin{environment}{smallmatrix} +% \begin{macrocode} +\renewenvironment {smallmatrix} { + \UseTaggingSocket{ math/luamml/annotate/false } {} { \null\, } + \vcenter \bgroup + \Let@ + \restore@math@cr + \default@tag + \baselineskip 6 \ex@ + \lineskip 1.5 \ex@ + \lineskiplimit \lineskip + \ialign \bgroup + \hfil + $ + \m@th + \scriptstyle + ## + % No \scriptsize here since we want to add the mstyle nodes + \UseTaggingSocket{math/luamml/save/nn}{ {} {mtd} } + $ + \UseTaggingSocket{math/luamml/mtable/finalizecol}{last} + \hfil + && + \thickspace + \hfil + $ + \m@th + \scriptstyle + ## + % No \scriptsize here since we want to add the mstyle nodes + \UseTaggingSocket{math/luamml/save/nn}{ {} {mtd} } + $ + \UseTaggingSocket{math/luamml/mtable/finalizecol}{last} + \hfil + \crcr +}{% + \crcr + \UseExpandableTaggingSocket{math/luamml/mtable/smallmatrix/save} + \egroup + \egroup + \UseTaggingSocket{math/luamml/mtable/innertable/finalize} + \UseTaggingSocket{ math/luamml/annotate/false } {}{ \, } +} +% \end{macrocode} +% \end{environment} +% +% \subsection{The split environment} +% +% The split environment is not trivial to handle as it has a rather convoluted +% implementation in amsmath: depending on in which display environment it is embedded +% it takes different branches, which makes it difficult to finalize the mtable. +% +% The following patches work with leqno and reqno if the (default) \texttt{centertags} +% are used. +% The currently fail (the structure is wrong) if the option \texttt{tbtags} is used. +% The alignment of the cells is currently not handled. +% A simple debug command until everything is sorted. +% \begin{macro}{\__math_split_debug_typeout:n} +% \begin{macrocode} +\cs_new:Npn\__math_split_debug_typeout:n#1{\use_none:n{#1}} +% \end{macrocode} +% \end{macro} +% We need to detect if \cs{gather@split} has been used or not +% \begin{macro}{\l__math_gathersplit_bool} +% \begin{macrocode} +\bool_new:N\l__math_gathersplit_bool +% \end{macrocode} +% \end{macro} +% At first a redefinition of the main environment. Here we only have to add +% the saving command for the inner table: +% \begin{environment}{split} +% \begin{macrocode} +\renewenvironment{split}{% + \__math_split_debug_typeout:n {begin~split} + \if@display + \ifinner + \@xp\@xp\@xp\split@aligned + \else + \ifst@rred \else \global\@eqnswtrue \fi + \fi + \else + \let\endsplit\@empty \@xp\collect@body\@xp\split@err + \fi + \collect@body\gather@split +}{\__math_split_debug_typeout:n{end~split}% + \crcr + \UseExpandableTaggingSocket{math/luamml/mtable/innertable/save}% + \egroup + \egroup + \iftagsleft@ \@xp\lendsplit@ \else \@xp\rendsplit@ \fi +} +% \end{macrocode} +% \end{environment} +% +% In \cs{gather@split} we have to add the finalization socket. +% We also set the boolean to true so that we can detect if +% the finalization has already happened. Perhaps this +% could be done in the luamml code instead? +% \begin{macro}{\gather@split} +% \begin{macrocode} +\def\gather@split#1#2#3{ + \__math_split_debug_typeout:n{gather@split}% + \@xp\endgroup \reset@equation % math@cr will handle equation numbering + \iftag@ + \toks@\@xp{\df@tag}% + \edef\split@tag{% + \gdef\@nx\df@tag{\the\toks@}% + \global\@nx\tag@true \@nx\nonumber + }% + \else \let\split@tag\@empty + \fi + \bool_set_true:N\l__math_gathersplit_bool + \spread@equation + \vcenter\bgroup + \gather@{\split@tag + \begin{split}#1\end{split}}% + \def\endmathdisplay@a{% + \__math_split_debug_typeout:n{endmathdisplay@a} + \__math_split_debug_typeout:n{finalize~innertable~endmathdisplay@a} + \math@cr + \black@ \totwidth@ + \egroup + \egroup + \UseExpandableTaggingSocket{math/luamml/mtable/innertable/finalize}% + }% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\insplit@} +% In \cs{insplit@} we have to add the sockets which store the cell content. +% \begin{macrocode} +\def\insplit@{\__math_split_debug_typeout:n{insplit@}% + \global\setbox\z@\vbox\bgroup + \Let@ \chardef\dspbrk@context\@ne \restore@math@cr + \default@tag % disallow use of \tag here + \ialign\bgroup + \hfil + \strut@ + $\m@th\displaystyle {##}% + \UseTaggingSocket{math/luamml/save/nNn}{ {} \displaystyle {mtd} }% + $% + \UseTaggingSocket{math/luamml/mtable/finalizecol}{last}% + &$\m@th\displaystyle {{}##}% + \UseTaggingSocket{math/luamml/save/nNn}{ {} \displaystyle {mtd} }% + $% + \UseTaggingSocket{math/luamml/mtable/finalizecol}{last}% + \hfill % Why not \hfil?---dmj, 1994/12/28 + \crcr +} +% \end{macrocode} +% \end{macro} +% And now the difficult part. Depending on the options leqno/reqno \cs{lendsplit@} +% or \cs{rendsplit@} are used for the typesetting and the inner table must +% be finalized here in case this hasn't happen yet. This must be tested with the +% boolean from \cs{gather@split} +% \begin{macrocode} +\def\lendsplit@{% + \global\setbox9\vtop{\unvcopy\z@}% + \ifinalign@ + \setbox\@ne\vbox{% + \unvcopy\z@ + \global\setbox8\lastbox + }% + \setbox\@ne\hbox{% + \unhcopy8% + \unskip + \setbox\tw@\lastbox + \unskip + \global\setbox\thr@@\lastbox + }% + \__math_split_debug_typeout:n{lendsplit@/aligncase} + \ifctagsplit@ + \__math_split_debug_typeout:n{lendsplit@/aligncase/centertags} + \gdef\split@{% + \hbox to\wd\thr@@{}% + &\vcenter{\vbox{\moveleft\wd\thr@@\box9}}% + \__math_split_debug_typeout:n{finalize~innertable~aligncase} + \UseTaggingSocket{math/luamml/mtable/innertable/finalize}% + }% + \else + %TODO, not correct yet. + \__math_split_debug_typeout:n{lendsplit@/aligncase/tbtags} + \gdef\split@{% + \hbox to\wd\thr@@{}% + &\vbox{\moveleft\wd\thr@@\box9}% + \__math_split_debug_typeout:n{finalize~innertable~aligncase} + \UseTaggingSocket{math/luamml/mtable/innertable/finalize}% + }% + \fi + \else +% \end{macrocode} +% If not in align we need to test for \cs{gather@split} +% \begin{macrocode} + \ifctagsplit@ + \bool_if:NTF \l__math_gathersplit_bool + { + \__math_split_debug_typeout:n{lendsplit/equationcase/centertags} + \gdef\split@% + {\UseTaggingSocket{math/luamml/annotate/false}{}{\vcenter{\box9}}} + } + { + \__math_split_debug_typeout:n {lendsplit/gathercase/centertags} + \gdef\split@{\vcenter{\box9}% + \__math_split_debug_typeout:n {finalize~innertable~gathercase} + \UseTaggingSocket{math/luamml/mtable/innertable/finalize}} + } + \else + % TODO tbtags not correct yet. + \bool_if:NTF \l__math_gathersplit_bool + { + \__math_split_debug_typeout:n {lendsplit/equationcase/tbtags} + \gdef\split@% + {\UseTaggingSocket{math/luamml/annotate/false}{}{\box9}} + } + { + \__math_split_debug_typeout:n {lendsplit/gathercase/tbtags} + \gdef\split@{ + \box9% + \__math_split_debug_typeout:n {finalize~innertable~gathercase} + \UseTaggingSocket{math/luamml/mtable/innertable/finalize}} + } + \fi + \fi + \aftergroup\split@ +} +% \end{macrocode} +% +% \begin{macro}{\rendsplit@} +% And more or less the same for the \cs{rendsplit@} environment. +% \begin{macrocode} +\def\rendsplit@{% + \ifinalign@ + \global\setbox9 \vtop{% + \unvcopy\z@ + \global\setbox8 \lastbox + \unskip + }% + \setbox\@ne\hbox{% + \unhcopy8 + \unskip + \global\setbox\tw@\lastbox + \unskip + \global\setbox\thr@@\lastbox + }% + \ifctagsplit@ + \gdef\split@{% + \hbox to\wd\thr@@{} + &\vcenter{\vbox{\moveleft\wd\thr@@\boxz@}}% + \__math_split_debug_typeout:n {rendsplit/aligncase/centertags} + \__math_split_debug_typeout:n {finalize~innertable~aligncase} + \UseTaggingSocket{math/luamml/mtable/innertable/finalize} + }% + \else + \__math_split_debug_typeout:n{rendsplit@/aligncase/tbtags} + %TODO tbtags is not correct yet + \global\setbox7 \hbox{\unhbox\tw@\unskip}% + \gdef\split@{% + \global\@tempcnta\column@ + &\setboxz@h{}% + \savetaglength@ + \global\advance\row@\@ne + \vbox{\moveleft\wd\thr@@\box9}% + \crcr + \noalign{\global\lineht@\z@}% + \add@amps\@tempcnta + \UseTaggingSocket{math/luamml/annotate/false}{}{\box\thr@@} + &\box7 + \__math_split_debug_typeout:n {finalize~innertable~aligncase} + \UseTaggingSocket{math/luamml/mtable/innertable/finalize}% + }% + \fi +% \end{macrocode} +% and again the if we are not in align we need to test for \cs{gathersplit} +% \begin{macrocode} + \else + \ifctagsplit@ + \bool_if:NTF \l__math_gathersplit_bool + { + \__math_split_debug_typeout:n {rendsplit/equationcase/centertags} + \gdef\split@% + {\UseTaggingSocket{math/luamml/annotate/false}{}{\vcenter{\boxz@}}} + } + { + \__math_split_debug_typeout:n {rendsplit/gathercase/centertags} + \gdef\split@{\vcenter{\boxz@}% + \__math_split_debug_typeout:n {finalize~innertable~gathercase} + \UseTaggingSocket{math/luamml/mtable/innertable/finalize}} + } + \else + \bool_if:NTF \l__math_gathersplit_bool + { + \__math_split_debug_typeout:n {rendsplit/equationcase/tbtags} + \gdef\split@{% + \UseTaggingSocket{math/luamml/annotate/false}{}{\boxz@}} + } + { + \__math_split_debug_typeout:n {rendsplit/gathercase/tbtags} + \gdef\split@{% + \boxz@ + \UseTaggingSocket{math/luamml/mtable/innertable/finalize}} + } + \fi + \fi + \aftergroup\split@ +} +% \end{macrocode} +% \end{macro} % \subsection{\cs{intertext}} % The \cs{intertext} command errors with active tagging as it is processed twice -% which leads to duplicated structures. +% which leads to duplicated structures. +% +% \begin{macro}{\intertext@} +% TODO: review and add sockets! % \begin{macrocode} -\AddToHook{package/amsmath/after} - { - \def\intertext@{% - \def\intertext##1{% - \ifvmode\else\\\@empty\fi - \noalign{% +\def\intertext@{% + \def\intertext##1{% + \ifvmode\else\\\@empty\fi + \noalign{% % \end{macrocode} % we have to flip the sign and use a negative \cs{belowdisplayskip} % as we flipped the sign at the outside. % \begin{macrocode} - \penalty\postdisplaypenalty\vskip-\belowdisplayskip - \vbox{ + \penalty\postdisplaypenalty\vskip-\belowdisplayskip + \vbox{ % \end{macrocode} % Stop tagging when measuring: % \begin{macrocode} - \ifmeasuring@\tag_suspend:n{\measuring}\fi - \normalbaselines - \ifdim\linewidth=\columnwidth - \else \parshape\@ne \@totalleftmargin \linewidth - \fi + \ifmeasuring@\tag_suspend:n{\measuring}\fi + \normalbaselines + \ifdim\linewidth=\columnwidth + \else \parshape\@ne \@totalleftmargin \linewidth + \fi % \end{macrocode} % End the previous mc: % \begin{macrocode} - \tag_mc_end_push: + \tag_mc_end_push: % \end{macrocode} % We are already in a par so we change now to text: % \begin{macrocode} - \tagpdfsetup{para/tag=P}% + \tagpdfsetup{para/tag=P}% % \end{macrocode} -% TODO why \cs{tagpdfparaOn} needed? +% TODO why \cs{tagpdfparaOn} needed? % \begin{macrocode} - \tagpdfparaOn - \noindent\ignorespaces##1\par + \tagpdfparaOn + \noindent\ignorespaces##1\par % \end{macrocode} % Restart the MC % \begin{macrocode} - \tag_mc_begin_pop:n{}}% - \penalty\predisplaypenalty\vskip\abovedisplayskip% - }% - }} - } + \tag_mc_begin_pop:n{}}% + \penalty\predisplaypenalty\vskip\abovedisplayskip% + }% +}} % \end{macrocode} +% \end{macro} % % \subsection{\cs{text}} -% +% % The \cs{text} command uses \cs{mathchoice} which \enquote{typesets} the argument -% four times. This makes it quite problematic for tagging. Without precautions -% structure objects would be created four times and would get MC-chunks as kids -% that doesn't really exist. amsmath contains a switch that allows to execute code +% four times. This makes it quite problematic for tagging. Without precautions +% structure objects would be created four times and would get MC-chunks as kids +% that don't really exist. amsmath contains a switch that allows to execute code % only in the first (displaymath) branch, but that isn't usable here. At first because % we don't know if the first branch creates the same structure as the one that is % actually used. At second because the engines executes some commands like \cs{label} % and \cs{pdfannot} only at shipout from the branch that really was used. So we would -% get structure data from one \cs{mathchoice}-branch and MC-labels and links from another -% one and that gets very messy. -% +% get structure data from one \cs{mathchoice}-branch and MC-labels and links from another +% one and that gets very messy. +% % We therefore have to avoid that tagging is active in unused branches. In pdflatex it % is not possible to detect the mathstyle before, so we use a label. With lualatex is % is possible to redefine \cs{text} not to use \cs{mathchoice} -% +% +% \begin{macro}{\text@} % \begin{macrocode} \AddToHook{package/amstext/after} { % \end{macrocode} % currently amsmath is loaded in a begindocument hook, so this % test is fine. If amstext is loaded earlier (in the kernel), this needs perhaps a change. +% \changes{v0.1d}{2024/12/03}{Add tagging socket for luamml support} % \begin{macrocode} \tag_if_active:T { \sys_if_engine_luatex:TF { - \def\text@#1{{% + \def\text@#1{ + \tag_socket_use:nnn {math/luamml/hbox}{} + {{% \ifcase\mathstyle \hbox{{#1}}\or \hbox{{#1}}\or @@ -168,7 +1040,7 @@ \ERROR \fi \check@mathfonts - }} + }}} } { \def\text@#1 @@ -177,39 +1049,41 @@ \tag_suspend:n{\text@} \mathchoice { - \@@_tag_if_mathstyle:en{mathchoice-\int_use:N\g__math_mathchoice_int}{0} + \__math_tag_if_mathstyle:en{mathchoice-\int_use:N\g__math_mathchoice_int}{0} \textdef@\displaystyle\f@size{#1} } { - \@@_tag_if_mathstyle:en{mathchoice-\int_use:N\g__math_mathchoice_int}{2} + \__math_tag_if_mathstyle:en{mathchoice-\int_use:N\g__math_mathchoice_int}{2} \textdef@\textstyle\f@size{\firstchoice@false #1} } { - \@@_tag_if_mathstyle:en{mathchoice-\int_use:N\g__math_mathchoice_int}{4} + \__math_tag_if_mathstyle:en{mathchoice-\int_use:N\g__math_mathchoice_int}{4} \textdef@\textstyle\sf@size{\firstchoice@false #1} } { - \@@_tag_if_mathstyle:en{mathchoice-\int_use:N\g__math_mathchoice_int}{6} + \__math_tag_if_mathstyle:en{mathchoice-\int_use:N\g__math_mathchoice_int}{6} \textdef@\textstyle \ssf@size{\firstchoice@false #1} } \check@mathfonts - }} + }} } } } % \end{macrocode} +% \end{macro} % % \subsection{\cs{pmb}} % \cs{pmb} prints its argument three times. For tagging we must mark % two of occurrences as artifact. % For luatex the attributes in the box must be reset, for this % we switch to expl3-boxes. +% \begin{macro}{\pbm@@,\pmb@} % \begin{macrocode} \AddToHook{package/amsbsy/after} { - \def\pmb@@@@#1#2#3{\leavevmode\hbox_set:Nn\l_@@_tmpa_box{xxx#3} + \def\pmb@@#1#2#3{\leavevmode\hbox_set:Nn\l_@@_tmpa_box{xxx#3} \dimen@-\box_wd:N\l_@@_tmpa_box - \kern-.5\ex@\box_use:N\l_@@_tmpa_box + \kern-.5\ex@\box_use:N\l_@@_tmpa_box \tag_mc_end:\tag_mc_begin:n{artifact} \tag_mc_reset_box:N\l_@@_tmpa_box \kern\dimen@\kern.25\ex@\raise.4\ex@\box_use:N\l_@@_tmpa_box @@ -220,7 +1094,7 @@ \setboxz@h{$\m@th#1\mkern.5mu$}\pmbraise@\wdz@ \binrel@{#2} \dimen@-\box_wd:N\l_@@_tmpa_box - \binrel@@@@{ + \binrel@@{ \mkern-.8mu\box_use:N\l_@@_tmpa_box \tag_mc_end:\tag_mc_begin:n{artifact} \tag_mc_reset_box:N\l_@@_tmpa_box @@ -231,6 +1105,7 @@ } } % \end{macrocode} +% \end{macro} % \begin{macrocode} \ExplSyntaxOff % \end{macrocode} diff --git a/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-block.dtx b/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-block.dtx index 2399d156260..13c732bf08d 100644 --- a/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-block.dtx +++ b/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-block.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -%% File: latex-lab-block.dtx (C) Copyright 2021-2024 LaTeX Project +%% File: latex-lab-block.dtx (C) Copyright 2021-2025 LaTeX Project % % It may be distributed and/or modified under the conditions of the % LaTeX Project Public License (LPPL), either version 1.3c of this @@ -9,8 +9,9 @@ % % https://www.latex-project.org/lppl.txt % -\def\ltlabblockdate{2024-11-25} -\def\ltlabblockversion{0.8w} +\def\ltlabblockdate{2025-01-20} +\def\ltlabblockversion{0.9a} + %<*driver> \documentclass[kernel]{l3doc} \usepackage{amstext} @@ -235,7 +236,7 @@ % \begin{TemplateDescription}{blockenv}{display} % % \TemplateKey{env-name}{tokenlist} -% {Name of the environment used only in tracing}{} +% {Name of the environment used in tracing and error messages}{} % \TemplateKey{tag-name}{tokenlist} % {Name of the tag in the PDF. If not explicitly given % the name is defined by the \key{tagging-recipe}}{} @@ -765,6 +766,25 @@ \def\@doendpe{\@endpetrue \def\par { +% \end{macrocode} +% If we are processing a \verb=$$= math display and we encounter a real +% \cs{par} after it, we need to add a \cs{parskip} when tagging is +% done, because the one +% added by \TeX{} is always canceled by the processing in +% \cs{__math_tag_dollardollar_display_end:} in that case. This is +% signaled by the global legacy switch \texttt{@domathendpe} which is set +% to true in that case. Once the skip is applied we set it to +% false. If there is no \cs{par} at all, it will be reset in +% \cs{everypar} when the next paragraph starts. +% \changes{v0.8x}{2024/12/01}{Handle \cs{parskip} after \texttt{\$\$} +% display (tagging/762)} +% \begin{macrocode} + \if@domathendpe +% \typeout{------->~ add~ another~ parskip~ that~ is~ +% not~ canceled:~ \the\parskip } + \skip_vertical:n { \tex_parskip:D } + \@domathendpefalse + \fi \@restorepar \clubpenalty\@clubpenalty % \end{macrocode} @@ -787,6 +807,14 @@ \everypar{{\setbox\z@\lastbox} \everypar{} \@endpefalse +% \end{macrocode} +% Not sure what is faster: testing for the status of the switch or +% setting it unconditionally to false (globally), probably roughly the same, +% so we set it always: +% \begin{macrocode} +% \if@domathendpe + \@domathendpefalse +% \fi } } % \end{macrocode} @@ -800,6 +828,21 @@ % \end{macro} % % +% \begin{macro}{\if@domathendpe,\@domathendpefalse,\@domathendpetrue} +% Signal that special paragraph handling after a math display is required. +% \changes{v0.8x}{2024/12/01}{Handle \cs{parskip} after \texttt{\$\$} +% display (tagging/762)} +% \begin{macrocode} +\newif\if@domathendpe +\def\@domathendpefalse{\global\let\if@domathendpe\iffalse} +\def\@domathendpetrue {\global\let\if@domathendpe\iftrue} +% \end{macrocode} +% \end{macro} +% +% +% +% +% % \subsection{Object and template interfaces} % % @@ -1067,8 +1110,7 @@ { \@@_debug_typeout:n{\l_@@_env_name_tl -env-start} % - \tl_if_empty:nF {#1} { \SetTemplateKeys{blockenv}{display}{#1} } -% + \SetKnownTemplateKeys{blockenv}{display}{#1} % \end{macrocode} % We need to know later if we have nested blockenvs inside % a flattened environment. Whenever we start a new blockenv we @@ -1159,7 +1201,16 @@ \UseInstance{block} { \l_@@_block_instance_tl - \int_use:N \g_block_nesting_depth_int } - {#1} + \UnusedTemplateKeys +% \end{macrocode} +% After this instance has been processed, any remaining unused keys +% are stored in \cs{UnusedTemplateKeys} and we can make use of this +% data later as +% long as we do not call another instance that also does unused key +% processing and overwrites it. This is what happens below, so we better save its +% current value for now. +% \begin{macrocode} + \tl_set_eq:NN \l_@@_unused_blockenv_keys_tl \UnusedTemplateKeys % \end{macrocode} % After the block instance call the para and then inner (list) % instance if either or both are @@ -1191,7 +1242,28 @@ % not clean use "o"? { - \int_use:N \l_@@_inner_level_counter_tl } } - {#1} + \l_@@_unused_blockenv_keys_tl +% \end{macrocode} +% Again the instance may has processed a few keys from the sofar +% unused keys, so we update \cs{l_@@_unused_blockenv_keys_tl} to +% match the new reality. +% \begin{macrocode} + \tl_set_eq:NN \l_@@_unused_blockenv_keys_tl \UnusedTemplateKeys + } +% \end{macrocode} +% At this point, the \cs{l_@@_unused_blockenv_keys_tl} token list +% should either be empty or it should contain only keys that are suitable for +% the item template, but right now there is no code to test that +% can test +% the latter; it would help probably if we have an interface for +% this. +% +% For now we handle that when the first item is encountered, but +% that isn't realy clean.\fmi{fix} +% \begin{macrocode} + \tl_if_empty:NF \l_@@_unused_blockenv_keys_tl + { + % check if only item template keys remain } % \end{macrocode} % We finish off with \cs{l_@@_final_code_tl} which defaults to @@ -1204,6 +1276,14 @@ % \end{template} % % +% \begin{macro}{\l_@@_unused_blockenv_keys_tl} +% +% \begin{macrocode} +\tl_new:N \l_@@_unused_blockenv_keys_tl +% \end{macrocode} +% \end{macro} +% +% % \begin{macro}{\l__tag_block_flattened_level_int} % Count the levels of nested blockenvs starting with the first that % is \enquote{flattened}. The counter is defined in lttagging.dtx, @@ -1401,7 +1481,7 @@ para-class = \l__tag_para_attr_class_tl , } { - \tl_if_empty:nF {#1} { \SetTemplateKeys{para}{std}{#1} } + \SetTemplateKeys{para}{std}{#1} \skip_set:Nn \@rightskip \rightskip } % \end{macrocode} @@ -1443,7 +1523,7 @@ parindent = \l_@@_parindent_dim , } { - \tl_if_empty:nF {#1} { \SetTemplateKeys{block}{display}{#1} } + \SetKnownTemplateKeys{block}{display}{#1} % \end{macrocode} % \fmi{generalize heading usage (or drop?)} % \begin{macrocode} @@ -1653,7 +1733,7 @@ % if they should alter all items the right place would be the list % environment. For this reason we need to store the values and then % set them inside the \tn{item} template code using -% \tn{SetTemplateKeys} in the appropriate context (template type +% \tn{SetKnownTemplateKeys} in the appropriate context (template type % and template name). This is done in % \cs{@@_evaluate_saved_user_keys:nn}. The context is provided in % the two arguments (because different list environments may use @@ -1672,10 +1752,8 @@ %\cs_new:Npn \@@_save_user_keys:n #1 { % \tl_if_empty:nTF {#1} % { \cs_set_eq:NN \@@_evaluate_saved_user_keys:nn \use_none:nn } -% { -% \cs_set:Npe \@@_evaluate_saved_user_keys:nn ##1##2 -% { \SetTemplateKeys{##1}{##2}{ \exp_not:n{#1} } } -% } +% { \cs_set:Npe \@@_evaluate_saved_user_keys:nn ##1##2 +% { \SetKnownTemplateKeys{##1}{##2}{ \exp_not:n{#1} } } %} % \end{macrocode} % \end{macro} @@ -1707,19 +1785,50 @@ % \end{macrocode} % We start by looking at the user supplied keys in \texttt{\#1}. If % there aren't any we reset \cs{@@_evaluate_saved_user_keys:nn} to -% do nothing. Otherwise we evaluate and set the keys in the contect +% do nothing. Otherwise we evaluate and set the keys in the context % of the current list template. In addition we prepare % \cs{@@_evaluate_saved_user_keys:nn} for execution in the % template for \tn{item}. % \changes{v0.8s}{2024/10/03}{Prepare \cs{@@_evaluate_saved_user_keys:nn} % for use in \tn{item}} % \begin{macrocode} - \tl_if_empty:nTF {#1} + \tl_if_empty:oTF {#1} { \cs_set_eq:NN \@@_evaluate_saved_user_keys:nn \use_none:nn } { - \SetTemplateKeys{list}{std}{#1} + \SetKnownTemplateKeys{list}{std}{#1} +% \end{macrocode} +% The setup for \cs{@@_evaluate_saved_user_keys:nn} is a bit trcky +% and has to be done with \cs{cs_set:Npe} even though we don't want +% to expand anything and therefore use \cs{exp_not:n} inside. All +% this does is that any \texttt{\#} passed in via \texttt{\#1} is +% doubled (e.g., from \verb/label-format=\fbox{#1}/ which is +% represented as \verb/...\fbox{##1}/). Otherwise, we would end up +% with a replacement text like +%\begin{verbatim} +% \SetTemplateKeys {#1}{#2}{label-format=\fbox {#1}} +%\end{verbatim} +% instead of +%\begin{verbatim} +% \SetTemplateKeys {#1}{#2}{label-format=\fbox {##1}} +%\end{verbatim} +% resulting in very odd and puzzling behavior. +% \begin{macrocode} \cs_set:Npe \@@_evaluate_saved_user_keys:nn ##1##2 - { \SetTemplateKeys{##1}{##2}{ \exp_not:n{#1} } } + { \SetKnownTemplateKeys{##1}{##2}{ + \exp_not:o { \UnusedTemplateKeys } + } +% \end{macrocode} +% +% \begin{macrocode} + \exp_not:n { + \tl_if_empty:NF \UnusedTemplateKeys + { + \msg_error:nnee { block } { unknown-keys } + { \l_@@_env_name_tl \space environment} + \UnusedTemplateKeys + } + } + } } % \end{macrocode} % Has this list a counter name defined in the instance? @@ -1802,6 +1911,20 @@ \@@_debug_typeout:n{template:list:std~end} } % \end{macrocode} +% +% The message that is used above when we are left with keys that +% are unknown: +% \begin{macrocode} +\msg_new:nnnn { block } { unknown-keys } + { Some~ keys~ specified~ on~ the~ #1~ are~ unknown. } + { + The~ following~ keys~ are~ unknown~ and~ their~ + values~ are~ ignored:\\ + \space\space #2\\ + Perhaps~ a~ misspelling~ or~ the~ current~ template~ + instance~ uses~ special~ keys. + } +% \end{macrocode} % % % Extra keys to support enumitem conventions: @@ -1895,7 +2018,18 @@ % to make use of user keys on the list level} % \begin{macrocode} \@@_evaluate_saved_user_keys:nn {item}{std} - \tl_if_empty:nF{#1}{ \SetTemplateKeys{item}{std}{#1} } +% \end{macrocode} +% We don't care whether all of the user keys from the list level have +% been applied, but those explicitly set on the \cs{item} command +% should be aplicable, so we generate an error if that isn't the case: + % \begin{macrocode} + \SetKnownTemplateKeys{item}{std}{#1} + \tl_if_empty:NF \UnusedTemplateKeys + { + \msg_error:nnee { block } { unknown-keys } + { \noexpand\item command } + \UnusedTemplateKeys + } % \end{macrocode} % % If no optional argument was given then \cs{l_@@_label_given_tl} @@ -3143,6 +3277,7 @@ % of a surrounding list. So instead we need to make sure that the % paragraph end is executed in a group so that any parshape setup % is preserved. +% \changes{v0.8x}{2025/01/12}{flattened para inside verbatim using codeline tag} % \begin{macrocode} %<@@=> \def\legacyverbatimsetup{% @@ -3161,8 +3296,7 @@ % \end{macrocode} % % \begin{macrocode} - \tl_set:Nn \l__tag_para_main_tag_tl {codeline} - \tagtool{paratag=Code}% oder faster: \tl_set:Nn\l__tag_para_tag_tl{Code} + \tl_set:Nn \l__tag_para_tag_tl {codeline} } %<@@=block> % \end{macrocode} @@ -3759,10 +3893,14 @@ % % \begin{instance}{blockenv verbatim} % -% The rolemapping is currently \struct{verbatim} to \struct{P} and +% The rolemapping is \struct{verbatim} to \struct{Code} and % \struct{codeline} to \struct{Sub} (which is role mapped -% to \struct{Span} in pdf 1.7. Alternatives for PDF 1.7: \struct{Div} and \struct{P}. -% +% to \struct{Span} in pdf 1.7). Sub inside Code is allowed according +% the errata of ISO 32005. The paragraphs inside verbatim are flattened. +% Line numbers should inside the \struct{codeline} structure +% and be tagged either as \struct{Lbl} or \struct{Artifact}\struct{Lbl}. +% +% \changes{v0.8x}{2025/01/12}{use flattened para inside verbatim} % \begin{macrocode} \DeclareInstance{blockenv}{verbatim}{display} { @@ -3770,6 +3908,7 @@ tag-name = verbatim, tag-class = , tagging-recipe = standard, + para-flattened = true, inner-level-counter = , level-increase = false, setup-code = , diff --git a/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-firstaid.dtx b/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-firstaid.dtx index a5c44b82417..a25192395d9 100644 --- a/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-firstaid.dtx +++ b/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-firstaid.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -%% File: latex-lab-firstaid.dtx (C) Copyright 2023-2024 LaTeX Project +%% File: latex-lab-firstaid.dtx (C) Copyright 2023-2025 LaTeX Project % % It may be distributed and/or modified under the conditions of the % LaTeX Project Public License (LPPL), either version 1.3c of this @@ -16,7 +16,7 @@ % % for those people who are interested or want to report an issue. % -\def\ltlabfirstaiddate{2024-11-23} +\def\ltlabfirstaiddate{2025-01-27} \def\ltlabfirstaidversion{0.85i} %<*driver> \documentclass{l3doc} @@ -117,14 +117,41 @@ % % \begin{macrocode} \AddToHook{class/amsart/after}[latex-lab-testphase-firstaid/amsthm] - {\tag_if_active:T{\@@_firstaid_amsthm:}} + {\tag_if_active:T{\@@_firstaid_amsthm:}\@@_firstaid_ams_abstract:} \AddToHook{class/amsbook/after}[latex-lab-testphase-firstaid/amsthm] - {\tag_if_active:T{\@@_firstaid_amsthm:}} + {\tag_if_active:T{\@@_firstaid_amsthm:}\@@_firstaid_ams_abstract:} \AddToHook{class/amsproc/after}[latex-lab-testphase-firstaid/amsthm] {\tag_if_active:T{\@@_firstaid_amsthm:}} \AddToHook{package/amsthm/after}[latex-lab-testphase-firstaid/amsthm] {\tag_if_active:T{\@@_firstaid_amsthm:}} % \end{macrocode} +% +% \changes{v0.85i}{2025/01/26}{Add missing \cs{par} to abstract env (gh/1641)} +% \begin{macrocode} +\cs_new_protected:Npn \@@_firstaid_ams_abstract: + { +\renewenvironment{abstract}{% + \ifx\maketitle\relax + \ClassWarning{\@classname}{Abstract~ should~ precede~ + \protect\maketitle\space in~ AMS~ document~ classes;~ reported}% + \fi + \global\setbox\abstractbox=\vtop \bgroup + \normalfont\Small + \list{}{\labelwidth\z@ + \leftmargin3pc \rightmargin\leftmargin + \listparindent\normalparindent \itemindent\z@ + \parsep\z@ \@plus\p@ + \let\fullwidthdisplay\relax + }% + \item[\hskip\labelsep\scshape\abstractname.]% +}{% + \endlist + \par % <--- added + \egroup + \ifx\@setabstract\relax \@setabstracta \fi +} + } +% \end{macrocode} % \changes{v0.85h}{2024/10/16}{moved Caption tag into \@begintheorem, tagging issue\#733} % \begin{macrocode} \cs_new_protected:Npn \@@_firstaid_amsthm: @@ -450,7 +477,7 @@ % The environments are surrounded by a \texttt{verbatim} structure, % every line by a \texttt{codeline} % structure (this requires the block code, but firstaid should be used only with -% phase-III anyway). Line numbers are tagged as Lbl, currently outside of the +% phase-III anyway). Line numbers are tagged as Lbl, inside of the % \texttt{codeline} structure. The frame lines are marked as artifact. % % \begin{macro}{\FV@LeaveVMode} @@ -537,6 +564,7 @@ \hbox to \hsize{% \kern\leftmargin \hbox to \linewidth{% + \tag_struct_begin:n{tag=codeline} \cs_if_exist:NT \FV@LeftListNumber { \tag_struct_begin:n{tag=Lbl} @@ -551,7 +579,6 @@ \FV@LeftListFrame \tag_mc_end: } - \tag_struct_begin:n{tag=codeline} \tag_mc_begin:n{}% \FancyVerbFormatLine{#1}% \tag_mc_end: diff --git a/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-float.dtx b/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-float.dtx index 0bbf7b7eb66..2844168174a 100644 --- a/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-float.dtx +++ b/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-float.dtx @@ -16,8 +16,8 @@ % % for those people who are interested or want to report an issue. % -\def\ltlabfloatdate{2024-11-21} -\def\ltlabfloatversion{0.81g} +\def\ltlabfloatdate{2024-12-27} +\def\ltlabfloatversion{0.81h} %<*driver> \documentclass{l3doc} \EnableCrossrefs @@ -297,7 +297,7 @@ % \subsection{Tagging sockets} % For now we test if the sockets are already defined % \begin{macrocode} -\str_if_exist:cF { l__socket_tagsupport/float/begin_plug_str } +\socket_if_exist:nF {tagsupport/float/begin} { \NewSocket{tagsupport/float/hmode/begin}{0} \NewSocket{tagsupport/float/hmode/end}{0} @@ -540,7 +540,7 @@ % First some temporary sockets. % These sockets are in lttagging. % \begin{macrocode} -\str_if_exist:cF { l__socket_tagsupport/caption/begin_plug_str } +\socket_if_exist:nF {tagsupport/caption/begin} { \NewSocket{tagsupport/caption/begin}{1} \NewSocket{tagsupport/caption/end}{0} @@ -551,7 +551,7 @@ % These socket are currently defined in tagpdf. % \changes{v0.81g}{2024-11-21}{add missing argument to socket} % \begin{macrocode} -\str_if_exist:cF { l__socket_tagsupport/para/begin_plug_str } +\socket_if_exist:nF {tagsupport/para/begin} { \NewSocket{tagsupport/para/begin}{0} \NewSocket{tagsupport/para/end}{0} diff --git a/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-footnotes.dtx b/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-footnotes.dtx index f4ad7edd9de..576693b2d69 100644 --- a/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-footnotes.dtx +++ b/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-footnotes.dtx @@ -1,7 +1,7 @@ % \iffalse meta-comment % %% File: latex-lab-footnotes.dtx -% Copyright (C) 2022-2024 The LaTeX Project +% Copyright (C) 2022-2025 The LaTeX Project % % It may be distributed and/or modified under the conditions of the % LaTeX Project Public License (LPPL), either version 1.3c of this @@ -17,8 +17,8 @@ % % for those people who are interested or want to report an issue. % -\def\ltlabfootnotedate{2024-09-30} -\def\ltlabfootnoteversion{0.8g} +\def\ltlabfootnotedate{2025-02-20} +\def\ltlabfootnoteversion{0.8k} %<*driver> \documentclass{l3doc} @@ -1177,7 +1177,7 @@ % \begin{macro}{\fnote_footnotetext:n} % We temporarily test for the tagging socket until it is in the next release: % \begin{macrocode} -\str_if_exist:cF { l__socket_tagsupport/para/restore_plug_str } +\socket_if_exist:nF {tagsupport/para/restore} { \NewSocket{tagsupport/para/restore}{0} \NewSocketPlug{tagsupport/para/restore}{default} @@ -2187,7 +2187,7 @@ \DeclareRelease{v5}{2011-06-06}{footmisc-2011-06-06.sty} \DeclareCurrentRelease{}{2022-02-14} \ProvidesPackage{latex-lab-footmisc}% - [2022/03/08 v6.0d + [2025/02/20 v6.0e a miscellany of footnote facilities -- latex-lab version% ] @@ -2311,10 +2311,10 @@ % \texttt{dblfnote} package if we integrate that). % \begin{macrocode} \ifFN@para - \NewSocketPlug{@makecol/footnotes}{para}{% + \NewSocketPlug{build/column/footnotes}{para}{% \global\setbox\footins\vbox{\FN@makefootnoteparagraph}% } - \AssignSocketPlug{@makecol/footnotes}{para} + \AssignSocketPlug{build/column/footnotes}{para} \fi % \end{macrocode} % @@ -2345,23 +2345,23 @@ % \begin{macrocode} \ifcase \FN@bottomcases\relax \ERROR -\or %1 +\or %1 bottom option \ifFN@abovefloats - \AssignSocketPlug {@makecol/outputbox}{space-footnotes-floats} + \AssignSocketPlug {build/column/outputbox}{space-footnotes-floats} \else - \AssignSocketPlug {@makecol/outputbox}{floats-footnotes-space} + \AssignSocketPlug {build/column/outputbox}{floats-space-footnotes} \fi -\or %2 +\or %2 bottomfloats \ifFN@abovefloats - \AssignSocketPlug {@makecol/outputbox}{footnotes-space-floats} + \AssignSocketPlug {build/column/outputbox}{footnotes-space-floats} \else - \AssignSocketPlug {@makecol/outputbox}{space-floats-footnotes} + \AssignSocketPlug {build/column/outputbox}{space-floats-footnotes} \fi -\or %3 +\or %3 neither bottom nor bottomfloats \ifFN@abovefloats - \AssignSocketPlug {@makecol/outputbox}{footnotes-floats} + \AssignSocketPlug {build/column/outputbox}{footnotes-floats} \else - \AssignSocketPlug {@makecol/outputbox}{floats-footnotes} + \AssignSocketPlug {build/column/outputbox}{floats-footnotes} \fi \else \ERROR diff --git a/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-graphic.dtx b/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-graphic.dtx index b3ee3eb6c6d..4ac8a523d40 100644 --- a/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-graphic.dtx +++ b/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-graphic.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -%% File: latex-lab-graphic.dtx (C) Copyright 2022-2024 LaTeX Project +%% File: latex-lab-graphic.dtx (C) Copyright 2022-2025 LaTeX Project % % It may be distributed and/or modified under the conditions of the % LaTeX Project Public License (LPPL), either version 1.3c of this diff --git a/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-marginpar.dtx b/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-marginpar.dtx index 2f293ee4924..3a4d7c4c75f 100644 --- a/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-marginpar.dtx +++ b/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-marginpar.dtx @@ -2,7 +2,7 @@ % %% File: latex-lab-marginpar.dtx %% -% Copyright (C) 2024 LaTeX Project +% Copyright (C) 2024-2025 LaTeX Project % % It may be distributed and/or modified under the conditions of the % LaTeX Project Public License (LPPL), either version 1.3c of this @@ -18,8 +18,8 @@ % % for those people who are interested or want to report an issue. % -\def\ltlabmarginpardate{2024-09-18} -\def\ltlabmarginparversion{0.85d} +\def\ltlabmarginpardate{2025-02-21} +\def\ltlabmarginparversion{0.85e} %<*driver> \documentclass[kernel]{l3doc} @@ -148,9 +148,11 @@ % \subsection{Tagging sockets} % % \begin{socketdecl}{tagsupport/marginpar/begin,tagsupport/marginpar/end} +% The sockets are declared in lttagging. +% \changes{0.85e}{2025/02/21}{moved sockets into lttagging} % \begin{macrocode} -\socket_new:nn {tagsupport/marginpar/begin}{0} -\socket_new:nn {tagsupport/marginpar/end}{0} +%\socket_new:nn {tagsupport/marginpar/begin}{0} +%\socket_new:nn {tagsupport/marginpar/end}{0} % \end{macrocode} % \end{socketdecl} % diff --git a/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-math.dtx b/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-math.dtx index 7ff1e742738..472beaccea4 100644 --- a/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-math.dtx +++ b/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-math.dtx @@ -2,7 +2,7 @@ % %% File: latex-lab-math.dtx % -% Copyright (C) 2022-2024 The LaTeX Project +% Copyright (C) 2022-2025 The LaTeX Project % % It may be distributed and/or modified under the conditions of the % LaTeX Project Public License (LPPL), either version 1.3c of this @@ -19,8 +19,9 @@ % for those people who are interested or want to report an issue. % % -\def\ltlabmathdate{2024-11-26} -\def\ltlabmathversion{0.6j} + +\def\ltlabmathdate{2025-02-20} +\def\ltlabmathversion{0.6l} % %<*driver> \documentclass{l3doc} @@ -80,15 +81,15 @@ % \car*{Todo: update all the documentation! Both here and % (what little there is!) in the implementation section.} % -% Tagging math involves a variety of tasks that require that math is captured before the -% typesetting +% Tagging math involves a variety of tasks that require that +% math is captured before the typesetting: % \begin{itemize} % \item When typesetting the math MC-tags and structure commands must % be inserted at the begin and the end, and perhaps also around lines % or other subparts of the equation. % \item The source and/or a mathml-representation of the source must be available % so that it can be (perhaps after some preprocessing) be used in an associated file -% or in an alternate text +% or in an alternate text. % \item It must be possible to measure the math for, e.g., a bbox setting. % \end{itemize} % @@ -114,11 +115,146 @@ % regardless of the state of the boolean. For % |equation|, |equation*| and |math| this is a change as they no longer can % contain verbatim. -% -% \item BUG: |\[...\]| grabs if \cs{l_@@_collected_bool} is false. If it is -% true it falls back to |equation*| and then errors because this can't find the end. % \end{itemize} % +% \section{Avoiding math capture}\label{sec:nocapture} +% In most cases when an environment or command switches into math, +% the semantic meaning of the content \emph{is} math and +% grabbing and then tagging that as a Formula is adequate. +% +% But there are exceptions, most prominently with the math shift token |$|. +% \begin{itemize} +% \item |$| can be used to center a box with |\vcenter|, +% for example in the tabular code. The opening |$| is then often in a +% different command than the closing |$| and the content of the box +% should be tagged normally, including all math it contains. +% This means one wants to avoid that the opening |$| triggers the math +% grabbing and creates a Formula structure, and after the |$| one +% wants to switch back to normal text and math capture/tagging. +% +% \item |$| is used to place superscripts and subscripts, see the definition of +% |\textsuperscript| which uses |\ensuremath| internally. Inside the superscript +% in special cases you may want more tagging (including nested math tagging) but +% typically it is simple text. +% +% \item |$| is used to access a char in a math font. +% +% For example the |\meta| command uses internally the math commands +% |\langle| and |\rangle| around its argument:\\ +% |$\langle$\textit{argument}$\rangle$| +% which gives $\langle$\textit{argument}$\rangle$. +% +% The symbols are then clearly not math. +% (Beside disabling math tagging one could also use text commands like +% |\textlangle| and |\textrangle|: \textlangle\textit{argument}\textrangle{}. +% Depending on the font that could even look better, +% but it requires that the font supports the chars, which is not the case +% for various OpenType fonts.) +% Additional tagging inside the math should be not needed. +% If the symbols need an actualtext then a Span can be added around the whole material. +% +% \end{itemize} +% +% \subsection{Options to suppressing math capture and tagging} +% We are there providing a number of options to suppress the collection/grabbing +% of the math and with it the tagging. +% \DescribeMacro\MathCollectTrue +% \DescribeMacro\MathCollectFalse +% \DescribeMacro\m@th +% \DescribeMacro\SuspendTagging +% These commands can be used to control locally the tagging of math. +% The first two are new commands. |\m@th| is a standard \LaTeX\ command +% used in a number of places to set |\mathsurround| to zero; +% with active tagging it is also used to identify math +% that should not be tagged, because it has traditionally be used in exactly +% the places where math mode is used for its layout charactistics and not for +% representing a formula.\footnote{This way even code that is not adjusted up +% for tagging is handled correctly if it uses \cs{m@th}.}. +% Details are described below. +% (|\SuspendTagging| is documented in source2e.pdf.) +% +% To set |\mathsurround| without disabling math tagging, use |\mathsurround\z@| directly. +% +% +% \subsubsection{Using the trigger token \cs{m@th} \emph{inside} the math} +% +% If the grabbed math contains the token |\m@th| the tagging/processing +% of the math is suppressed. As the math is nevertheless grabbed, this requires +% that the end math shift token is not hidden in some other command. +% |\m@th| sets also |\mathsurround| to zero, which is often +% wanted in untagged math anyway. +% +% Text tagging is \emph{not} suppressed inside the math, e.g., +% |\mbox{\emph{text}}| will still create an Em-structure. +% In contrast nested math is not tagged. +% +% To suppress the text tagging |\SuspendTagging{}| can be used: +% \begin{itemize} +% \item no math tagging, but |\emph| is tagged:\\ +% |$\m@th\langle\mbox{\emph{if and only if} $x=y$}\rangle$| +% +% \item no internal tagging: +% \\ +% |$\m@th\SuspendTagging{}\langle\mbox{\emph{if and only if}} $x=y$}\rangle$| +% \end{itemize} +% +% The method is quite suitable for symbols and also for sub- and superscripts +% (as long as they don't contain nested math that should be tagged). +% +% +% \subsubsection{Using \cs{m@th} \emph{before} the opening \texttt{\$}} +% +% |\m@th| (as defined in the latex-lab-math code) sets also the internal boolean +% which controls the grabbing to true and so when it is used \emph{before} +% some math it disables math grabbing and tagging for all following math +% in the current group (including nested math). +% Text tagging inside the math is still active, it can be disabled as above +% with |\SuspendTagging{}|. +% +% When |\m@th| is used like this it is possible to reenable the math +% tagging of nested math, by adding |\MathCollectTrue| after the opening |$|. +% +% \begin{itemize} +% \item no math tagging, but |\emph| is tagged:\\ +% |{\m@th$\langle\mbox{\emph{if and only if} $x=y$}\rangle$}| +% +% \item both nested math and |\emph| is tagged:\\ +% |{\m@th$\MathCollectTrue\langle\mbox{\emph{if and only if} $x=y$}\rangle$}| +% \end{itemize} +% +% The method is suitable for symbols and sub- and superscripts too +% (it is actually how superscripts avoid math tagging currently). +% It can also be used in cases where the end math shift token is +% hidden in some other command. But it is not so useful for +% larger boxes as it sets |\mathsurround| to zero. +% Grouping should be used to avoid side-effects on following math. +% +% +%\subsubsection{Disabling math tagging with \cs{MathCollectFalse}} +% +% Without a side-effect on |\mathsurround| the math grabbing can be +% suppressed and reenabled by setting the boolean that controls the collecting. +% So in the following example the math in the |\mbox| is properly tagged, +% but the angled brackets are simple text. +% +% \begin{verbatim} +% %stop math grabbing +% \MathCollectFalse +% $ +% %(optional) restart math grabbing for nested math +% \MathCollectTrue +% \langle\mbox{\emph{if and only if}} $x=y$}\rangle +% $ +% %(optional) restart math grabbing for following math +% % if there is no grouping +% \MathCollectTrue +% \quad $x=1$ +% \end{verbatim} +% The method is suitable if a box should be centered with +% |\vcenter| (and is used in array.sty for the tabular code). +% +% \section{Math capture interfaces} +% % \subsection{Code level interfaces} % % \begin{function}{\math_register_env:n, \math_register_env:nn} @@ -164,6 +300,15 @@ % \end{itemize} % \end{function} % +% \begin{function}{\MathCollectTrue,\MathCollectFalse} +% \begin{syntax} +% \cs{MathCollectTrue}\\ +% \cs{MathCollectFalse} +% \end{syntax} +% This activates/deactivates the math collection of the math shift token. +% See above for cases when this can be usefull. +% \end{function} +% % \section{Math tagging} % % \subsection{Code requirements} @@ -184,8 +329,6 @@ % \item setup attributes % \item add associated files % \item add a Formula structure -% \item surround subparts (e.g., lines) with Formula sub structures -% (perhaps with their own set of additional content) % \item surround elements of the equation with mathml structure elements % (currently only luatex with luamml) % \end{itemize} @@ -215,14 +358,11 @@ % and so can be used to suppress a setting). % \item |tagsupport/math/struct/begin| This calls \cs{tag_struct_begin:n}. % It should also write the associated files if needed. -% \item |tagsupport/math/substruct/begin| this handles subparts. -% TODO: does it really make sense in inline math to have that?? % \end{itemize} % \item |tagsupport/math/inline/formula/end| % This socket ends the formula structure(s). The |default| -% plug calls these internal sockets: +% plug calls this internal socket: % \begin{itemize} -% \item |tagsupport/math/substruct/end| % \item |tagsupport/math/struct/end| % \end{itemize} % \end{itemize} @@ -326,22 +466,22 @@ % % \subsection{Automatic mathml creation with luamml}\label{sec:luamml} % -% If lualatex and the package \pkg{unicode-math} is used -% the package \texttt{luamml} is loaded and -% will automatically generate the file |\jobname-luamml-mathml.html| +% If lualatex and the package \pkg{unicode-math} is used, +% the package \texttt{luamml} is loaded and this package +% will then automatically generate the file |\jobname-luamml-mathml.html| % with mathml representations of all math formulas. % This file is then used in subsequent compilations and works also with % pdflatex. -% +% % The generation of the file can be suppressed (in the preamble) % with |math/mathml/luamml/write=false|. -% -% If the package \pkg{unicode-math} is not used, +% +% If the package \pkg{unicode-math} is not used, % the loading of \pkg{luamml} and with it the generation of the file can be forced % with |math/mathml/luamml/load=true| or |math/mathml/luamml/write=true| % but be aware that it is then possible that various symbols % are mapped to the wrong Unicode code points. -% +% % The package \pkg{luamml} is still quite experimental and the output should be checked. % The |\jobname-luamml-mathml.html| file may be previewed in a browser although % you may need to add additional css or javascript declarations @@ -445,7 +585,7 @@ % \item[reading and embedding] % By default the code will read and embed % mathml from |\jobname-mathml.html| and |\jobname-luamml-mathml.html| in this order and -% the first fragment with a new hash value will be inserted.% +% the first fragment with a new hash value will be inserted. % The list of sources and their order can be changed with the key % |math/mathml/sources|, setting that to an empty value suppresses % the loading mathml associated files completely. For efficiency reasons @@ -461,7 +601,7 @@ % equations with the same source and so the same hash % can have different mathml representation, e.g., % if there are references or commands or counters in the equation. This -% will change in a feature version. +% will change in a future version. % The attachment can be suppressed locally with |math/mathml/AF=false|. % The mathml fragment will still be embedded in the PDF! % @@ -519,14 +659,14 @@ % and |equation*| (see, e.g., tagging-project issue \#30). % % \item Begin and end of the math or math environment can not be hidden in commands. -% For example \verb+>{$}l<{$}+ in a tabular would lead to errors. -% Defining |\[| to fall back to |equation*| doesn't work if |equation*| is -% a grabbing environment. -% -% \item The behaviour of |\[...\]| is faulty. See above. +% For example \verb+>{$}l<{$}+ in a tabular would lead to errors. Therefore +% in a tabular a slower token-by-token grabbing is used. % \end{enumerate} % % \subsection{Fake math} +% For the current state see \ref{sec:nocapture} above. The text here is mainly +% kept for history. +% % In a number of places in \LaTeX{} math commands (mainly |$|) is used % only for technical reason, e.g., to access a math font, to setup a symbol % or to use \cs{vcenter}. @@ -559,7 +699,7 @@ % \end{itemize} % % \subsubsection{Open problems} -% +% % \begin{enumerate} % \item The grabbing code doesn't pass the info that it detected a \cs{m@th} token. % This means that the tagging code has to do the same check (and doesn't do this @@ -639,7 +779,6 @@ % % \subsection{File declaration} % -% \car{Change description here?} % \begin{macrocode} \ProvidesFile{latex-lab-math.ltx} [\ltlabmathdate\space @@ -660,7 +799,8 @@ % % Loading \pkg{amsmath} is an absolute requirement: this avoids needing to % have conditional definitions and deals with how to define \cs{[}/\cs{]} -% neatly. +% neatly. The package is loaded at begin document to allow user to load it with +% options. % \begin{macrocode} \AddToHook{begindocument/before}{ \RequirePackage { amsmath } } % \end{macrocode} @@ -678,6 +818,7 @@ % \end{macrocode} % \end{variable} % +% % \begin{variable}{\l_@@_fakemath_bool} % Tracks whether math mode material has been identified as fake math during % the grabbing phase, which happens currently if the @@ -875,7 +1016,7 @@ { \iow_newline: - + \iow_newline: } \tl_new:N \l_@@_mathml_write_before_tl @@ -953,109 +1094,12 @@ % \begin{macrocode} \sys_if_engine_luatex:TF { -% \end{macrocode} -% Temporary (!) fixes for endarray -% \begin{macrocode} - \cs_new_protected:Npn \@@_correct_luamml_array_patches: - { - \AddToHook{package/array/after} - { - \cs_set:Npn \endarray - { - \tbl_crcr:n{endarray} - \__luamml_array_save_array: - \egroup - \UseTaggingSocket{tbl/finalize} - \tbl_restore_outer_cell_data: - \egroup - \mode_if_math:T { \__luamml_array_finalize_array: } - \@arrayright - \gdef \@preamble {} - } - \cs_set:Npn \@classz - { - \@classx - \@tempcnta \count@ - \prepnext@tok - \@addtopreamble { - \ifcase \@chnum - \hfil - \hskip 1sp - \d@llarbegin - \cs_if_eq:NNTF \d@llarbegin \begingroup { - \insert@column - \d@llarend - } { - \__luamml_array_init_col: - \insert@column - \luamml_flag_save:nn {} {mtd} - \d@llarend - \__luamml_array_finalize_col:w 0~ - } - \do@row@strut - \hfil - \or - \hskip 1sp - \d@llarbegin - \cs_if_eq:NNTF \d@llarbegin \begingroup { - \insert@column - \d@llarend - } { - \__luamml_array_init_col: - \insert@column - \luamml_flag_save:nn {} {mtd} - \d@llarend - \__luamml_array_finalize_col:w 1~ - } - \do@row@strut - \hfil - \or - \hfil - \hskip 1sp - \d@llarbegin - \cs_if_eq:NNTF \d@llarbegin \begingroup { - \insert@column - \d@llarend - } { - \__luamml_array_init_col: - \insert@column - \luamml_flag_save:nn {} {mtd} - \d@llarend - \__luamml_array_finalize_col:w 2~ - } - \do@row@strut - \or - \setbox \ar@mcellbox \vbox \@startpbox { \@nextchar } - \insert@pcolumn - \@endpbox - \ar@align@mcell - \do@row@strut - \or - \vtop \@startpbox { \@nextchar } - \insert@pcolumn - \@endpbox - \do@row@strut - \or - \vbox \@startpbox { \@nextchar } - \insert@pcolumn - \@endpbox - \do@row@strut - \fi - } - \prepnext@tok - } - } - } -% \end{macrocode} -% -% \begin{macrocode} \AddToHook{begindocument/before} { \str_case:on \g_@@_luamml_load_tl { { 1 } { \RequirePackage { luamml } - \@@_correct_luamml_array_patches: \AddToHook{begindocument/end} { \@@_luamml_activate_write: @@ -1073,7 +1117,6 @@ \@ifpackageloaded { unicode-math } { \RequirePackage { luamml } - \@@_correct_luamml_array_patches: \AddToHook{begindocument/end} { \@@_luamml_activate_write: @@ -1086,7 +1129,10 @@ } } { - \@@_provide_luamml_commands: + \AddToHook{begindocument/before} + { + \@@_provide_luamml_commands: + } } \msg_new:nnn { tag }{ luamml-status } { @@ -1113,8 +1159,6 @@ \bool_gset_true:N\g__tag_math_mathml_AF_bool \AssignSocketPlug{tagsupport/math/struct/begin}{mathml-AF} \AssignSocketPlug{tagsupport/math/struct/end}{mathml-AF} - \AssignSocketPlug{tagsupport/math/substruct/begin}{single} - \AssignSocketPlug{tagsupport/math/substruct/end}{single} \int_set:Nn \l__luamml_pretty_int { 7 } \RegisterFamilyMapping\symsymbols{oms} \RegisterFamilyMapping\symletters{oml} @@ -1126,6 +1170,14 @@ { \tl_if_empty:NF \l_@@_mathml_write_before_tl { +% \end{macrocode} +% We check here if the current group level is equal to the one stored for the +% outer math. If not, we add currently a suffix to change the hash. +% \changes{0.6k}{2024-12-04}{Test for current group level} +% \begin{macrocode} + \int_compare:nNnF + { \@math@level } = { 1 } + { \tl_put_right:Ne \l_@@_content_hash_tl {-INNER} } \iow_now:Ne \g_@@_luamml_iow { \l_@@_mathml_write_before_tl @@ -1191,7 +1243,7 @@ math/mathml/luamml/load .default:n = true, math/mathml/luamml/load .usage:n=preamble, % \end{macrocode} -% A key to activate math structure elements. +% A key to activate math structure elements. % \changes{v0.6j}{2024-11-19}{no longer enable globally for better fake math handling, issue \#764} % \begin{macrocode} math/mathml/structelem .choice:, @@ -1210,7 +1262,7 @@ \cs_set_eq:NN\@@_luamml_structelem:\prg_do_nothing: \cs_set_eq:NN\@@_luamml_ignore:\prg_do_nothing: }, - math/mathml/structelem .default:n = true, + math/mathml/structelem .default:n = true, % \end{macrocode} % and a key to call the ignore flag. This should only be used locally. % \begin{macrocode} @@ -1252,7 +1304,7 @@ \iow_now:Ne \g_@@_writedummy_iow { \l_@@_mathml_write_before_tl - + \c_@@_mathml_write_after_tl } } @@ -1322,11 +1374,6 @@ \typeout{Info:~Activating~mathml~support} \AssignSocketPlug{tagsupport/math/struct/begin}{mathml-AF} \AssignSocketPlug{tagsupport/math/struct/end}{mathml-AF} -% \end{macrocode} -% mathml handling doesn't like subparts, so we disable them for now: -% \begin{macrocode} - \AssignSocketPlug{tagsupport/math/substruct/begin}{single} - \AssignSocketPlug{tagsupport/math/substruct/end}{single} \AddToHook{enddocument/info} { \iow_term:n{MathML~statistic} @@ -1419,6 +1466,59 @@ } % \end{macrocode} % +% \subsubsection{Meta keys} +% The |math/setup| key accepts a list with the values |mathml-SE|, |mathml-AF| and |tex-AF|. +% It is a fast way to set the main option. It at first disables them all, to get a clean state. +% \begin{macrocode} +\keys_define:nn {__tag / setup} + { + math/setup .code:n = + { + %deactivate loading of luamml + \tl_gset:Nn \g_@@_luamml_load_tl{-1} + \keys_set:nn {__tag / setup} + { + %deactivate tex source AF + math/tex/AF = false, + %deactivate reading of mathml-AF + math/mathml/sources=, + math/mathml/AF=false, + %deactivate structelem + math/mathml/structelem=false, + %handle value + } + \clist_map_inline:nn { #1} + { + \keys_set:nn {__tag/ setup}{math/__setup/##1} + } + }, + math/__setup / mathml-SE .code:n = + { + \tl_gset:Nn \g_@@_luamml_load_tl{1} + \keys_set:nn {__tag / setup} + { + math/mathml/structelem=true + } + }, + math/__setup / mathml-AF .code:n = + { + \tl_gset:Nn \g_@@_luamml_load_tl{1} + \clist_put_right:Ne\l__tag_math_mathml_files_clist + {\c_sys_jobname_str-mathml,\c_sys_jobname_str-luamml-mathml} + \keys_set:nn {__tag / setup} + { + math/mathml/AF=true + } + }, + math/__setup / tex-AF .code:n = + { + \keys_set:nn {__tag / setup} + { + math/tex/AF =true + } + }, + } +% \end{macrocode} % \subsection{Sockets} % \subsubsection{Main inline math sockets} % @@ -1429,6 +1529,7 @@ % tagsupport/math/inline/formula/begin, % tagsupport/math/inline/formula/end, % } +% These sockets are already declared in lttagging and only documented here. % The first two sockets are meant to embed inline % math into the surrounding (so to close/reopen, e.g., MC-chunks). % The other two implement the actual formula structure. @@ -1438,10 +1539,10 @@ % \changes{v0.6j}{2024-11-19}{change the socket to two arguments so that it can % be used as tagging socket} % \begin{macrocode} -\socket_new:nn {tagsupport/math/inline/begin}{0} -\socket_new:nn {tagsupport/math/inline/end}{0} -\socket_new:nn {tagsupport/math/inline/formula/begin}{2} % -\socket_new:nn {tagsupport/math/inline/formula/end}{0} +%\socket_new:nn {tagsupport/math/inline/begin}{0} +%\socket_new:nn {tagsupport/math/inline/end}{0} +%\socket_new:nn {tagsupport/math/inline/formula/begin}{2} % +%\socket_new:nn {tagsupport/math/inline/formula/end}{0} % \end{macrocode} %\end{socketdecl} % @@ -1474,11 +1575,6 @@ \@@_luamml_structelem: \tag_socket_use:n{math/content} \tag_socket_use:n{math/struct/begin} -% \end{macrocode} -% TODO: does inline math need subformula handling? -% \begin{macrocode} - % inner formula if multiple parts (not really implemented yet) - \tag_socket_use:n{math/substruct/begin} #2 \tag_socket_use:n{math/end} } @@ -1486,7 +1582,6 @@ {tagsupport/math/inline/formula/end} {default} { - \socket_use:n{tagsupport/math/substruct/end} \socket_use:n{tagsupport/math/struct/end} } % \end{macrocode} @@ -1501,6 +1596,7 @@ % tagsupport/math/display/formula/begin, % tagsupport/math/display/formula/end, % } +% These sockets are already declared in lttagging and only documented here. % The first two sockets are meant to embed display % math into the surrounding (so to close/reopen, e.g., MC-chunks and % P-structure). @@ -1510,10 +1606,10 @@ % the end socket is after the math! % \changes{v0.6j}{2024-11-19}{change number of arguments of formula/begin socket} % \begin{macrocode} -\socket_new:nn {tagsupport/math/display/begin}{0} -\socket_new:nn {tagsupport/math/display/end}{0} -\socket_new:nn {tagsupport/math/display/formula/begin}{2} % -\socket_new:nn {tagsupport/math/display/formula/end}{0} +%\socket_new:nn {tagsupport/math/display/begin}{0} +%\socket_new:nn {tagsupport/math/display/end}{0} +%\socket_new:nn {tagsupport/math/display/formula/begin}{2} % +%\socket_new:nn {tagsupport/math/display/formula/end}{0} % \end{macrocode} %\end{socketdecl} @@ -1543,7 +1639,6 @@ \@@_luamml_structelem: \tag_socket_use:n{math/content} \tag_socket_use:n{math/struct/begin} - \tag_socket_use:n{math/substruct/begin} #2 \tag_socket_use:n{math/end} } @@ -1551,12 +1646,52 @@ {tagsupport/math/display/formula/end} {default} { - \socket_use:n{tagsupport/math/substruct/end} \socket_use:n{tagsupport/math/struct/end} } % \end{macrocode} % \end{plugdecl} % +% \subsubsection{Sockets plugs for tags (labels)} +% \begin{socketdecl} +% { +% tagsupport/math/display/tag/begin, +% tagsupport/math/display/tag/end, +% } +% These sockets are already declared in lttagging and only documented here. +% These sockets are used in \cs{maketag@@@} to tag +% labels as Lbl. luamml changes the plug to move +% the Lbl into the math structure with an intent. +% \changes{v0.6l}{2025-02-06}{added sockets for tags/labels} +% \begin{macrocode} +%\socket_new:nn {tagsupport/math/display/tag/begin}{0} +%\socket_new:nn {tagsupport/math/display/tag/end}{0} +% \end{macrocode} +%\end{socketdecl} +% +% \begin{plugdecl}{default} +% \changes{v0.6j}{2024-11-19}{moved \cs{tagpdfparaOff} into the socket, tagging/765} +% \begin{macrocode} +\socket_new_plug:nnn + {tagsupport/math/display/tag/begin} + {default} + { + \tag_mc_end: + \tag_struct_begin:n {tag=Lbl} + \tag_mc_begin:n {} + } +\socket_new_plug:nnn + {tagsupport/math/display/tag/end} + {default} + { + \tag_mc_end: + \tag_struct_end: + \tag_mc_begin:n{} + } +\socket_assign_plug:nn {tagsupport/math/display/tag/begin}{default} +\socket_assign_plug:nn {tagsupport/math/display/tag/end}{default} +% \end{macrocode} +% \end{plugdecl} +% % \subsubsection{Internal sockets} % % \begin{variable}{\l_@@_content_template_tl} @@ -1700,11 +1835,13 @@ actualtext = \l_@@_content_actual_tl, alt = \l_@@_content_alt_tl } + \typeout{====>grabbed~math=\meaning\g_@@_grabbed_math_tl} + \tag_mc_begin:n{} } \socket_new_plug:nnn {tagsupport/math/struct/end} {default} - { \tag_struct_end: } + { \tag_mc_end: \tag_struct_end: } \socket_assign_plug:nn {tagsupport/math/struct/begin}{default} \socket_assign_plug:nn {tagsupport/math/struct/end}{default} @@ -1783,6 +1920,8 @@ title-o = \g_@@_grabbed_env_tl, % alt = \l_@@_content_alt_tl } + \typeout{====>grabbed~math=\meaning\g_@@_grabbed_math_tl} + \tag_mc_begin:n{} } % \end{macrocode} % not really needed but looks more symmetric: @@ -1791,59 +1930,12 @@ {tagsupport/math/struct/end} {mathml-AF} { + \tag_mc_end: \tag_struct_end: } % \end{macrocode} % \end{plugdecl} % -% \begin{socketdecl}{tagsupport/math/substruct/begin, -% tagsupport/math/substruct/end} -% This holds the code to handle subparts of the formula. -% \begin{macrocode} -\socket_new:nn {tagsupport/math/substruct/begin}{0} -\socket_new:nn {tagsupport/math/substruct/end}{0} -% \end{macrocode} -% \end{socketdecl} -% -% \begin{plugdecl}{default} -% \begin{macrocode} -\socket_new_plug:nnn - {tagsupport/math/substruct/begin} - {default} - { \grabaformulapartandstart } -\socket_new_plug:nnn - {tagsupport/math/substruct/end} - {default} - { - \tagmcend - \if@subformulas - \tagstructend - \fi - } -\socket_assign_plug:nn {tagsupport/math/substruct/begin}{default} -\socket_assign_plug:nn {tagsupport/math/substruct/end}{default} -% \end{macrocode} -% \end{plugdecl} - -% \begin{plugdecl}{single} -% We need an option to disable subparts as it is unclear -% if consumers can handle them: -% \begin{macrocode} -\socket_new_plug:nnn - {tagsupport/math/substruct/begin} - {single} - { - \typeout{====>subpart~splitting~deactivated} - \typeout{====>grabbed~math=\meaning\g_@@_grabbed_math_tl} - \tag_mc_begin:n{} - } -\socket_new_plug:nnn - {tagsupport/math/substruct/end} - {single} - { \tag_mc_end:} -% \end{macrocode} -% \end{plugdecl} -% % \begin{socketdecl}{tagsupport/math/end} % A socket used at the end of the math (before the closing dollar(s)) % which can, e.g., set a flag for luamml. @@ -1903,6 +1995,13 @@ % % \subsection{Content grabbing} % +% \begin{macro}{\MathCollectTrue,\MathCollectFalse} +% \begin{macrocode} +\cs_set_protected:Npn\MathCollectTrue{\bool_set_false:N \l__math_collected_bool} +\cs_set_protected:Npn\MathCollectFalse{\bool_set_true:N \l__math_collected_bool} +% \end{macrocode} +% \end{macro} +% % \begin{macro}{\@@_grab_dollar:w} % \begin{macro}{\@@_grab_dollar:n} % \changes{v0.6c}{2024-08-22}{Correct handling of empty math segments} @@ -1991,30 +2090,54 @@ % \ShowTagging{struct-stack} \para_raw_end: % \end{macrocode} -% The \cs{postdisplaypenalty} was temporarily set to 10000 inside -% the display and the \cs{belowdisplayskip} and the +% The \cs{postdisplaypenalty} was temporarily set +% to 10000 inside the display and the \cs{belowdisplayskip} and the % \cs{belowdisplayshortskip} was negated, so whatever was inserted -% it should have been a negative skip. Whatever skip was added we -% pick it ups value up here, so that we can correct the spacing -% after the tagging code was inserted. +% it should have been a negative skip. Whatever +% was added, we pick up the value up, so that we can correct +% the spacing after the tagging code was inserted. % \begin{macrocode} \l_@@_tmpa_skip \lastskip \tag_socket_use:n{math/display/formula/end} % \end{macrocode} -% Now we add a skip without indroducing a page break possibility, +% Now we add a skip without introducing a page break possibility, % that should bring the current vertical position back to the point % where \TeX{} would add the penalty and the \enquote{below skip}. % \changes{v0.6f}{2024-09-30}{Correct logic for inserting below skips % after displays (tagging/721)} % \begin{macrocode} \nobreak - \skip_vertical:n { -\l_@@_tmpa_skip } % remove the negative belowdisplayskip + \skip_vertical:n { -\l_@@_tmpa_skip } % \end{macrocode} -% Then we finally add the real stuff: +% Then we finally add the real stuff: the true \cs{postdisplaypenalty} +% and then negated value of skip we saved from above. It may look +% strange that we have two identical negated skips next to each +% other, but if you think about it, that is correct: the first +% cancels the \enquote{below skip} that \TeX{} had added and the +% second puts the same amount after the penalty (which is where it +% should be). % \begin{macrocode} \penalty \postdisplaypenalty \skip_vertical:n { -\l_@@_tmpa_skip } % insert the correct skip - \@doendpe % this has no \end{...} to take care of it +% \end{macrocode} +% As we are now in vertical mode the situation is different from +% the way \TeX{} would handle things after a display: \TeX{} would +% internally switch to horizontal mode without adding a +% \cs{parskip}. But this is not possible to do on the macro +% level. Therefore we have to neutralize the upcoming \cs{parskip} +% since we can't prevent it from being set. +% \changes{v0.6k}{2024/12/01}{Handle \cs{parskip} after \texttt{\$\$} +% display correctly (tagging/762)} +% \begin{macrocode} +% \typeout{------->~ add~ negative~ parskip~ (to~ cancel~ the~ +% one~ that~ TeX~ will~ add)} + \skip_vertical:n { -\tex_parskip:D } +% \end{macrocode} +% +% We also set the \texttt{@domathendpetrue} flag to signal that the +% \begin{macrocode} + \@domathendpetrue + \@doendpe % this has no \end{...} to take care of it } % \end{macrocode} @@ -2240,7 +2363,7 @@ % \begin{macro}{\math_register_env:n} % \begin{macro}{\RegisterMathEnvironment} % Set up to capture environment content and make available. -% +% \changes{0.6k}{2024-12-04}{Store the current grouplevel for luamml } % \begin{macrocode} \cs_new_protected:Npn \math_register_env:nn #1#2 { @@ -2275,7 +2398,10 @@ { } } - +% \end{macrocode} +% \changes{v0.6k}{2024/12/04}{Add tagging sockets for luamml support} +% \changes{v0.6k}{2024/12/04}{Store the current grouplevel for luamml } +% \begin{macrocode} \cs_new_protected:Npn \math_register_halign_env:nn #1#2 { \tl_set:Nn \l_@@_env_name_tl {#1} @@ -2311,6 +2437,7 @@ } % \end{macrocode} % TODO: the following command is neither documented nor used. Is is needed? +% TODO: if it is ever used in needs to set the current group level too. % \begin{macrocode} \cs_new_protected:Npn \math_register_odd_env:nn #1#2 { @@ -2349,22 +2476,6 @@ } -% FMi: compare with block change! -% -% \DeclareRobustCommand*\begin[1]{% -% \UseHook{env/#1/before}% -% \@ifundefined{#1}% -% {\def\reserved@a{\@latex@error{Environment #1 undefined}\@eha}}% -% {\def\reserved@a{\def\@currenvir{#1}% -% \edef\@currenvline{\on@line}% -% \@execute@begin@hook{#1}% -% \csname #1\endcsname}}% -% \@ignorefalse -% \begingroup -% \@endpefalse % tmp!!! is it ok to drop this here? -% \reserved@a} - - \cs_new:Npn \@kernel@math@registered@begin { % \ShowTagging{struct-stack} %\typeout{==>A1}\ShowTagging{struct-stack,mc-current} @@ -2589,25 +2700,14 @@ % \end{macrocode} % % Tabulars currently contain a \$ that shouldn't trigger math -% tagging. +% tagging. Also we do need to change the grabbing method to the slow +% loop-method. % \begin{macrocode} \RequirePackage{array} -\tl_if_in:NnT\@tabular{$} +\tl_if_exist:NT\@kernel@tabular@init { - \def\@tabular{% - \leavevmode - \UseTaggingSocket{tbl/hmode/begin}% - \hbox \bgroup - \bool_set_true:N \l_@@_collected_bool - $ - \bool_set_false:N \l_@@_collected_bool - \col@sep\tabcolsep \let\d@llarbegin\begingroup - \let\d@llarend\endgroup -% \end{macrocode} -% A proper switching mechanism is needed: for the present, do directly. -% \begin{macrocode} - \cs_set_protected:Npn \@@_grab_dollar:w { \@@_grab_dollar_loop: } - \@tabarray} + \tl_put_right:Nn\@kernel@tabular@init + {\cs_set_protected:Npn \@@_grab_dollar:w { \@@_grab_dollar_loop: }} } % \end{macrocode} % @@ -2624,388 +2724,58 @@ % \end{macrocode} % \end{macro} % -% \subsection{Disable math grabbing in the begindocument hook} -% For example amsart uses math to measure text there. -% -% \begin{macrocode} -\tl_gput_right:Nn\@kernel@before@begindocument - { - \bool_set_true:N\l_@@_collected_bool - } -\tl_gput_right:Nn\@kernel@after@begindocument - { - \bool_set_false:N\l_@@_collected_bool - } -% \end{macrocode} +% \subsection{Modifying kernel commands} % -% \subsection{Modifying \pkg{amsmath}} +% \begin{macro}{\mathpalette} +% The \cs{mathpalette} command is a problem if lualatex is used and math +% structure elements are created as the math is then processed more than once. +% We therefore redefine it to use \cs{mathstyle}. % -% \begin{macro}{\@@_amsmath_align@:nn} -% \begin{macro} -% { -% \@@_amsmath_gather@:n , -% \@@_amsmath_multline@:n -% } -% \begin{macro}{\align@} -% \begin{macro}{\gather@, \multline@} -% Mark up all of the display environments as the content is captured anyway. -% We then use an internal macro in each environment type to insert the -% processing code. Each of these is slightly different, so we cannot use a -% simple loop here. The test for \cs{split@tag} is required as the -% \texttt{split} environment internally uses \texttt{gather} \emph{when not -% within an \pkg{amsmath}} environment, for example inside \texttt{equation}. -% Without the precaution, we'd get two copies of the grabbed math, the second -% of which would start with \cs{split@tag}. % \begin{macrocode} - - - -\tl_gput_right:Nn \@kernel@before@begindocument { -% -\renewenvironment{gather*}{% - \start@gather\st@rredtrue -} -{% -% this redirection doesn't work if we alter "gather"! - % \endgather -% so replace it with its real meaning - \math@cr \black@\totwidth@ \egroup - $$\ignorespacesafterend -} -% \end{macrocode} -% -% \begin{macrocode} -\def\common@align@ending { - \math@cr \black@\totwidth@ - \egroup - \ifingather@ - \restorealignstate@ - \egroup - \nonumber - \ifnum0=`{\fi\iffalse}\fi - \else - $$% - \fi - \ignorespacesafterend -} -\renewenvironment{alignat}{% - \start@align\z@\st@rredfalse -}{% - \common@align@ending -} -\renewenvironment{alignat*}{% - \start@align\z@\st@rredtrue -}{% - \common@align@ending -} -\renewenvironment{xalignat}{% - \start@align\@ne\st@rredfalse -}{% - \common@align@ending -} -\renewenvironment{xalignat*}{% - \start@align\@ne\st@rredtrue -}{% - \common@align@ending -} -\renewenvironment{xxalignat}{% - \start@align\tw@\st@rredtrue -}{% - \common@align@ending -} -\renewenvironment{align}{% - \start@align\@ne\st@rredfalse\m@ne -}{% - \common@align@ending -} -\renewenvironment{align*}{% - \start@align\@ne\st@rredtrue\m@ne -}{% - \common@align@ending -} -\renewenvironment{flalign}{% - \start@align\tw@\st@rredfalse\m@ne -}{% - \common@align@ending -} -\renewenvironment{flalign*}{% - \start@align\tw@\st@rredtrue\m@ne -}{% - \common@align@ending -} -% -\renewenvironment{multline*}{\start@multline\st@rredtrue} -{% - \iftagsleft@ \@xp\lendmultline@ \else \@xp\rendmultline@ \fi - \ignorespacesafterend -} -% \end{macrocode} -% Also for "false?" -% \begin{macrocode} -\def\measuring@true{\let\ifmeasuring@\iftrue\tag_suspend:n{\measuring}} -% \end{macrocode} -% -% \begin{macrocode} -% - \math_register_halign_env:nn {align}{} - \math_register_halign_env:nn {align*}{} - \math_register_halign_env:nn {alignat}{} - \math_register_halign_env:nn {alignat*}{} - \math_register_halign_env:nn {flalign}{} - \math_register_halign_env:nn {flalign*}{} - \math_register_halign_env:nn {gather}{} - \math_register_halign_env:nn {gather*}{} - \math_register_halign_env:nn {multline}{} - \math_register_halign_env:nn {multline*}{} - \math_register_halign_env:nn {xalignat}{} - \math_register_halign_env:nn {xalignat*}{} - \math_register_halign_env:nn {xxalignat}{} - % - \@namedef{maketag @ @ @} #1{% -% \typeout{--->maketag @ @ @} - \ifmeasuring@ - \hbox{\m@th\normalfont#1}% - \else - \tagmcend \tagstructbegin{tag=Lbl}% - \tagmcbegin{tag=Lbl}% - \hbox{\m@th\normalfont#1}% - \tagmcend \tagstructend \tagmcbegin{}% - \fi +\sys_if_engine_luatex:T + { + \def\mathpalette#1#2{% + \ifcase\mathstyle + #1\displaystyle{#2}\or + #1\displaystyle{#2}\or + #1\textstyle{#2}\or + #1\textstyle{#2}\or + #1\scriptstyle{#2}\or + #1\scriptstyle{#2}\or + #1\scriptscriptstyle{#2}\or + #1\scriptscriptstyle{#2} + \fi} } % \end{macrocode} +% \end{macro} % % +% \begin{macro}{\mathsm@sh} +% Similar to the phantom commands in latex-lab-text, \cs{mathsm@sh} must be +% redefined to include luamml sockets. % \begin{macrocode} -\@namedef{math@cr @ @ @ gather}{% - \ifst@rred\nonumber\fi - &\relax - \make@display@tag -% - \maybestartnewformulatag -% - \ifst@rred\else\global\@eqnswtrue\fi - \global\advance\row@\@ne - \cr -} -% \end{macrocode} -% -% \begin{macrocode} -\@namedef{math@cr @ @ @ align}{% - \ifst@rred\nonumber\fi - \if@eqnsw \global\tag@true \fi - \global\advance\row@\@ne - \add@amps\maxfields@ - \omit - \kern-\alignsep@ - \iftag@ - \setboxz@h{\@lign\strut@{\make@display@tag}}% - \place@tag - \fi -% - \maybestartnewformulatag -% - \ifst@rred\else\global\@eqnswtrue\fi - \global\lineht@\z@ - \cr -} -% \end{macrocode} -% -% \begin{macrocode} -\def\restore@math@cr{\@namedef{math@cr @ @ @}{ -% - \maybestartnewformulatag -% - \cr}} -\restore@math@cr -% \end{macrocode} -% -% \begin{macrocode} -} +\def\mathsm@sh#1#2{% + \setbox\z@\hbox{$\m@th#1{#2} + \UseTaggingSocket{math/luamml/save/nNn}{{mathsmash} #1 {mpadded}} + $}% + \UseTaggingSocket{math/luamml/finsm@sh}{}{{}\finsm@sh}} % \end{macrocode} % \end{macro} -% \end{macro} -% \end{macro} -% \end{macro} % +% \subsection{Disable math grabbing in the begindocument hook} +% For example amsart uses math to measure text there. % -% - -% \begin{macro}{\@@_split_at_nl:NN} -% This splits grabbed math at newlines. -% -% \begin{macrocode} -\cs_new:Npn \@@_split_at_nl:NN #1#2 { - \tl_set:Nf \l_@@_tmpa_tl { - \exp_after:wN \@@_split_at_nl_first:w #1 \\ \q_nil \\ \s_stop } - \exp_after:wN \@@_split_at_nl_aux:nnNN \l_@@_tmpa_tl #1 #2 -} -% \end{macrocode} -% and the auxiliary commands % \begin{macrocode} -\cs_new:Npn \@@_split_at_nl_first:w #1 \\ #2 \\ #3 \s_stop - { - \quark_if_nil:nTF {#2} - { {#1} { } } - { - \@@_split_chk_if_begin:ww #1 \begin \q_nil \s_mark - #2 \\ #3 \s_stop - } - } - -\cs_new_protected:Npn \@@_split_at_nl_aux:nnNN #1 #2 #3 #4 - { - \tl_gset:Nn #4 {#1} - \tl_gset:Nn #3 {#2} - } - -\cs_new:Npn \@@_split_chk_if_begin:ww - #1 \begin #2 #3 \s_mark #4 \\ \q_nil \\ \s_stop - { - \quark_if_nil:nTF {#2} - { {#1} {#4} } - { - \exp_after:wN \@@_split_collect_one_end:w - \@@_split_cleanup_begin_q_nil:w #1 \begin{#2} #3 \\ #4 \s_stop - { } { 1 } - } - } - -\cs_new:Npn \@@_split_cleanup_begin_q_nil:w #1 \begin \q_nil {#1} - -\cs_new:Npn \@@_split_collect_one_end:w #1 \end #2 #3 \s_stop #4 #5 - { - \exp_args:Nf \@@_split_check_count_begins:nnnn - { \@@_split_count_begins:n { #4 #1 } } {#5} - { #4 #1 \end{#2} } {#3} - } -\cs_new:Npn \@@_split_count_begins:n #1 - { \int_eval:n { 0 \@@_split_count_begins:w #1 \begin \q_nil } } - -\cs_new:Npn \@@_split_count_begins:w #1 \begin #2 - { \quark_if_nil:nF {#2} { +1 \@@_split_count_begins:w } } - -\cs_new:Npn \@@_split_check_count_begins:nnnn #1 #2 #3 #4 - { - \int_compare:nNnTF {#1} = {#2} - { - \exp_last_unbraced:Nf \@@_split_final_cleanup:nn - { \@@_split:n { \@@_split_guard:n {#3} #4 } } - } - { - \exp_args:No \use_ii_i:nn - { \exp_after:wN { \int_value:w \int_eval:n { #2 + 1 } } } - { \@@_split_collect_one_end:w #4 \s_stop {#3} } - } - } -\cs_new:Npn \@@_split_final_cleanup:nn #1 #2 - { - \exp:w \@@_split_final_cleanup:w #1 - \@@_split_guard:n \q_nil \s_mark { } - {#2} - } -\cs_new:Npn \@@_split_final_cleanup:w #1 \@@_split_guard:n #2 #3 \s_mark #4 +\tl_gput_right:Nn\@kernel@before@begindocument { - \quark_if_nil:nTF {#2} - { \exp_end: { #4 #1 } } - { \@@_split_final_cleanup:w #3 \s_mark { #4 #1 #2 } } + \bool_set_true:N\l_@@_collected_bool } - -\cs_new:Npn \@@_split:n #1 { - \@@_split_at_nl_first:w #1 \\ \q_nil \\ \s_stop } - -% this looks unused. -%\NewDocumentCommand \splitnl { mm +m } -% { -% \tl_set:Nf \l_@@_tmpa_tl { \split:n {#3} } -% \show \l_@@_tmpa_tl -% \exp_after:wN \__splitnl_aux:nnNN \l_@@_tmpa_tl #1 #2 -% } -% \end{macrocode} -% \end{macro} -% -% -% \begin{macro}{\maybestartnewformulatag} -% -% \begin{macrocode} - -\newif\if@subformulas -\tl_new:N \result - -\cs_new_protected:Npn\grabaformulapartandstart { - \@@_split_at_nl:NN \g_@@_grabbed_math_tl \result - \typeout{====>first-result=\meaning\result} - \typeout{====>first-tmpmathcontent=\meaning\g_@@_grabbed_math_tl} - \tl_if_empty:NTF \g_@@_grabbed_math_tl - { - \typeout{====>formula~ has~ no~ subparts} - \global\@subformulasfalse - } - { - \typeout{====>formula~ has~ subparts} - \global\@subformulastrue - \edef\resulttitle{\g_@@_grabbed_env_tl\space (part)} - \tagstructbegin{tag=Formula, -% \end{macrocode} -% For now we don't put real content in /alt or /ActualText on subformulas -% but we add a short text to satisfy the pdf/ua-2 validator -% \begin{macrocode} -% alt=\result, - alt = subformula, - title-o=\resulttitle - } - } - \tagmcbegin{} -} - -\cs_new_protected:Npn\grabaformulapartandmayberestart { - \@@_split_at_nl:NN \g_@@_grabbed_math_tl \result - \typeout{====>result=\meaning\result} - \typeout{====>tmpmathcontent=\meaning\g_@@_grabbed_math_tl} -% \tl_if_empty:NTF \g_@@_grabbed_math_tl -% { -% \typeout{====>tmpmathcontent=empty} -% } -% { -% \typeout{====>tmpmathcontent=not-empty} - \edef\resulttitle{\g_@@_grabbed_env_tl\space (part)} - \tagstructbegin{tag=Formula, - alt=\result, - title-o=\resulttitle - } -% } - \tagmcbegin{} -} -% \end{macrocode} -% \end{macro} -% -% -% -% -% \begin{macrocode} -\def\maybestartnewformulatag { -\if@subformulas - \ifmeasuring@\else -% - \tl_if_empty:NF \g_@@_grabbed_math_tl - { - \tagmcend - \tagstructend - \grabaformulapartandmayberestart - } - \fi -\fi -} +\tl_gput_right:Nn\@kernel@after@begindocument + { + \bool_set_false:N\l_@@_collected_bool + } % \end{macrocode} % -% The breqn packages changes catcodes and that isn't yet covered -% by our mechanism. -% \begin{macrocode} -%\AddToHook{package/breqn/after}{ -% \typeout{===>~ in~ hook} -% \math_register_halign_env:nn {dmath}{} -% \math_register_halign_env:nn {dgroup*}{} -%} -% \end{macrocode} % % \begin{macrocode} \ExplSyntaxOff diff --git a/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-mathintent.dtx b/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-mathintent.dtx new file mode 100644 index 00000000000..b9c80a6232d --- /dev/null +++ b/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-mathintent.dtx @@ -0,0 +1,109 @@ +% \iffalse meta-comment +% +%% File: latex-lab-mathintent.dtx +% +% Copyright (C) 2025 The LaTeX Project +% +% It may be distributed and/or modified under the conditions of the +% LaTeX Project Public License (LPPL), either version 1.3c of this +% license or (at your option) any later version. The latest version +% of this license is in the file +% +% https://www.latex-project.org/lppl.txt +% +% +% The development version of the bundle can be found below +% +% https://github.com/latex3/latex2e/required/latex-lab +% +% for those people who are interested or want to report an issue. +% +%<*driver> +\documentclass{l3doc} +\EnableCrossrefs +\CodelineIndex +\begin{document} + \DocInput{latex-lab-mathintent.dtx} +\end{document} +% +% +% \fi +% +% +% \title{The \texttt{latex-lab-mathintent} code\thanks{}} +% \author{\LaTeX{} Project} +% +% \maketitle +% +% \newcommand\fmi[1]{\begin{quote} TODO: \itshape #1\end{quote}} +% \newcommand\NEW[1]{\marginpar{\mbox{}\hfill\fbox{New: #1}}} +% \providecommand\class[1]{\texttt{#1.cls}} +% \providecommand\pkg[1]{\texttt{#1}} +% \providecommand\hook[1]{\texttt{#1}} +% +% \begin{abstract} +% \end{abstract} +% +% \tableofcontents +% +% \section{Introduction} +% +% This file implements Experiments with the MathML4 \texttt{intent} feature. +% Initially to give readings for invisible times and function application. +% +% \MaybeStop{\setlength\IndexMin{200pt} \PrintIndex } +% +% \section{The Implementation} +% +% \begin{macrocode} +%<@@=math> +% \end{macrocode} +% +% \begin{macrocode} +%<*kernel> +% \end{macrocode} +% +% \subsection{File declaration} +% \begin{macrocode} +\ProvidesFile{latex-lab-mathintent.ltx} + [2025-01-17 v0.1a intent experiments] +% \end{macrocode} +% +% \subsection{Invisible ops} +% \begin{macrocode} +\ExplSyntaxOn +% \end{macrocode} +% +% \begin{macrocode} +\protected\def\invisibletimes{ +\if_cs_exist:N\luamml_annotate:en + \luamml_annotate:en { + core = {[0] = 'mo', intent="times","^^^^2062"}, +}{ + \latelua{} +} +\fi: +} +% \end{macrocode} +% +% \begin{macrocode} +\protected\def\functionapplication{ +\if_cs_exist:N\luamml_annotate:en + \luamml_annotate:en { + core = {[0] = 'mo', intent="applied_to","^^^^2061"}, +}{ + \latelua{} +} +\fi: +} +% \end{macrocode} +% +% \begin{macrocode} +\ExplSyntaxOff +% \end{macrocode} +% \begin{macrocode} +% +% \end{macrocode} +% \subsection{Wrapper files for testphase key} +% \Finale +% diff --git a/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-mathpkg.dtx b/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-mathpkg.dtx index 31e7d31ef62..b6b1aa438a1 100644 --- a/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-mathpkg.dtx +++ b/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-mathpkg.dtx @@ -2,7 +2,7 @@ % %% File: latex-lab-mathpkg.dtx % -% Copyright (C) 2022-2024 The LaTeX Project +% Copyright (C) 2022-2025 The LaTeX Project % % It may be distributed and/or modified under the conditions of the % LaTeX Project Public License (LPPL), either version 1.3c of this diff --git a/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-mathtools.dtx b/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-mathtools.dtx index ed8b6e467e7..a52b89e0d20 100644 --- a/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-mathtools.dtx +++ b/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-mathtools.dtx @@ -2,7 +2,7 @@ % %% File: latex-lab-mathtools.dtx % -% Copyright (C) 2022-2024 The LaTeX Project +% Copyright (C) 2022-2025 The LaTeX Project % % It may be distributed and/or modified under the conditions of the % LaTeX Project Public License (LPPL), either version 1.3c of this @@ -89,136 +89,174 @@ % \begin{macrocode} \ExplSyntaxOn \tl_new:N\l_@@_mathtools_init_tl -\AddToHook{package/mathtools/after} - {% - \cs_if_eq:NNTF\intertext@ \MT_intertext: - { - \tl_set:Nn \l_@@_mathtools_init_tl {\MT_orig_intertext_false:} - } - { - \tl_set:Nn \l_@@_mathtools_init_tl {\MT_orig_intertext_true:} - } - \cs_if_eq:NNTF\shortintertext@ \MT_shortintertext:n - { - \tl_put_right:Nn \l_@@_mathtools_init_tl - {\MT_orig_shortintertext_false:} - } - { - \tl_put_right:Nn \l_@@_mathtools_init_tl - {\MT_orig_shortintertext_true:} - } - \def\MT_intertext: {% - \def\intertext##1{% - \ifvmode\else\\\@empty\fi - \noalign{% - \penalty\postdisplaypenalty\vskip-\belowdisplayskip - \vskip-\lineskiplimit % CCS - \vskip\normallineskiplimit % CCS - \vskip\l_MT_above_intertext_sep - \vbox{% +\cs_if_eq:NNTF\intertext@ \MT_intertext: + { + \tl_set:Nn \l_@@_mathtools_init_tl {\MT_orig_intertext_false:} + } + { + \tl_set:Nn \l_@@_mathtools_init_tl {\MT_orig_intertext_true:} + } +% \end{macrocode} +% +% \begin{macrocode} +\cs_if_eq:NNTF\shortintertext@ \MT_shortintertext:n + { + \tl_put_right:Nn \l_@@_mathtools_init_tl + {\MT_orig_shortintertext_false:} + } + { + \tl_put_right:Nn \l_@@_mathtools_init_tl + {\MT_orig_shortintertext_true:} + } +% \end{macrocode} +% +% \begin{macrocode} +\def\MT_intertext: {% + \def\intertext##1{% + \ifvmode\else\\\@empty\fi + \noalign{% + \penalty\postdisplaypenalty\vskip-\belowdisplayskip + \vskip-\lineskiplimit % CCS + \vskip\normallineskiplimit % CCS + \vskip\l_MT_above_intertext_sep + \vbox{% % \end{macrocode} % Stop tagging when measuring: % \begin{macrocode} - \ifmeasuring@\tag_suspend:n{\measuring}\fi - \normalbaselines - \ifdim - \ifdim\@totalleftmargin=\z@ - \linewidth - \else - -\maxdimen - \fi - =\columnwidth - \else \parshape\@ne \@totalleftmargin \linewidth - \fi + \ifmeasuring@\tag_suspend:n{\measuring}\fi + \normalbaselines + \ifdim + \ifdim\@totalleftmargin=\z@ + \linewidth + \else + -\maxdimen + \fi + =\columnwidth + \else \parshape\@ne \@totalleftmargin \linewidth + \fi % \end{macrocode} % End the previous mc: % \begin{macrocode} - \tag_mc_end_push: + \tag_mc_end_push: % \end{macrocode} % We are already in a par so we change now to Span: % \begin{macrocode} - \tagpdfsetup{para/tag=Span} - \noindent\ignorespaces##1\par + \tagpdfsetup{para/tag=Span} + \noindent\ignorespaces##1\par % \end{macrocode} % Restart the MC % \begin{macrocode} - \tag_mc_begin_pop:n{}}% - \penalty\predisplaypenalty\vskip\abovedisplayskip% - \vskip-\lineskiplimit % CCS - \vskip\normallineskiplimit % CCS - \vskip\l_MT_below_intertext_sep - }% - }% - \MH_let:NwN \shortintertext \shortintertext@ - } -% \end{macrocode} -% \begin{macrocode} - \def\MT_orig_shortintertext:n #1{% - \ifvmode\else\\\@empty\fi - \noalign{% - \penalty\postdisplaypenalty\vskip\abovedisplayshortskip - \vbox{% - \ifmeasuring@\tag_suspend:n{\measuring}\fi - \normalbaselines - \MH_if_dim:w - \MH_if_dim:w \@totalleftmargin=\z@ - \linewidth - \MH_else: - -\maxdimen - \MH_fi: - =\columnwidth - \MH_else: - \parshape\@ne \@totalleftmargin \linewidth - \MH_fi: - \tag_mc_end_push: - \tagpdfsetup{para/tag=Span} - \tagpdfparaOn - \noindent\ignorespaces#1\par - \tag_mc_begin_pop:n{}} - \penalty\predisplaypenalty\vskip\abovedisplayshortskip% - }% - } - - \def\MT_shortintertext:n #1{% - \ifvmode\else\\\@empty\fi - \noalign{% - \penalty\postdisplaypenalty\vskip\abovedisplayshortskip - \vskip-\lineskiplimit - \vskip\normallineskiplimit - \vskip\l_MT_above_shortintertext_sep - \vbox{% - \ifmeasuring@\tag_suspend:n{\measuring}\fi - \normalbaselines - \MH_if_dim:w - \MH_if_dim:w \@totalleftmargin=\z@ - \linewidth - \MH_else: - -\maxdimen - \MH_fi: - =\columnwidth - \MH_else: - \parshape\@ne \@totalleftmargin \linewidth - \MH_fi: - \tag_mc_end_push: - \tagpdfsetup{para/tag=P} + \tag_mc_begin_pop:n{}}% + \penalty\predisplaypenalty\vskip\abovedisplayskip% + \vskip-\lineskiplimit % CCS + \vskip\normallineskiplimit % CCS + \vskip\l_MT_below_intertext_sep + }% + }% + \MH_let:NwN \shortintertext \shortintertext@ +} +% \end{macrocode} +% \begin{macrocode} +\def\MT_orig_shortintertext:n #1{% + \ifvmode\else\\\@empty\fi + \noalign{% + \penalty\postdisplaypenalty\vskip\abovedisplayshortskip + \vbox{% + \ifmeasuring@\tag_suspend:n{\measuring}\fi + \normalbaselines + \MH_if_dim:w + \MH_if_dim:w \@totalleftmargin=\z@ + \linewidth + \MH_else: + -\maxdimen + \MH_fi: + =\columnwidth + \MH_else: + \parshape\@ne \@totalleftmargin \linewidth + \MH_fi: + \tag_mc_end_push: + \tagpdfsetup{para/tag=Span} + \tagpdfparaOn + \noindent\ignorespaces#1\par + \tag_mc_begin_pop:n{}} + \penalty\predisplaypenalty\vskip\abovedisplayshortskip% + }% +} +% \end{macrocode} +% +% \begin{macrocode} +\def\MT_shortintertext:n #1{% + \ifvmode\else\\\@empty\fi + \noalign{% + \penalty\postdisplaypenalty\vskip\abovedisplayshortskip + \vskip-\lineskiplimit + \vskip\normallineskiplimit + \vskip\l_MT_above_shortintertext_sep + \vbox{% + \ifmeasuring@\tag_suspend:n{\measuring}\fi + \normalbaselines + \MH_if_dim:w + \MH_if_dim:w \@totalleftmargin=\z@ + \linewidth + \MH_else: + -\maxdimen + \MH_fi: + =\columnwidth + \MH_else: + \parshape\@ne \@totalleftmargin \linewidth + \MH_fi: + \tag_mc_end_push: + \tagpdfsetup{para/tag=P} % \end{macrocode} % Why is it needed to enable paratagging?? % \begin{macrocode} - \tagpdfparaOn - \noindent\ignorespaces#1\par - \tag_mc_begin_pop:n{}}% - \penalty\predisplaypenalty\vskip\abovedisplayshortskip% - \vskip-\lineskiplimit - \vskip\normallineskiplimit - \vskip\l_MT_below_shortintertext_sep - }% - } - + \tagpdfparaOn + \noindent\ignorespaces#1\par + \tag_mc_begin_pop:n{}}% + \penalty\predisplaypenalty\vskip\abovedisplayshortskip% + \vskip-\lineskiplimit + \vskip\normallineskiplimit + \vskip\l_MT_below_shortintertext_sep + }% +} +% \end{macrocode} +% see https://github.com/latex3/tagging-project/issues/734. The multlined environment +% still creates a few unneeded structure, perhaps triggered by empty tags. +% \begin{macrocode} + \renewcommand*\MT_mult_internal:n [1]{ + \MH_if_boolean:nF {outer_mult}{\alignedspace@left} %<-- requires amsmath 2016/11/05 + \MT_next: + \bgroup + \Let@ + \def\l_MT_multline_lastline_fint{0 } + \chardef\dspbrk@context\@ne \restore@math@cr + \MH_let:NwN \math@cr@@\MT_mult_mathcr_atat:w + \MH_let:NwN \shoveleft\MT_shoveleft:wn + \MH_let:NwN \shoveright\MT_shoveright:wn + \spread@equation + \MH_set_boolean_F:n {mult_firstline} + \MT_measure_mult:n {#1} + \MH_if_dim:w \l_MT_multwidth_dim<\l_MT_multline_measure_fdim + \MH_setlength:dn \l_MT_multwidth_dim{\l_MT_multline_measure_fdim} + \fi + \MH_set_boolean_T:n {mult_firstline} + \MH_if_num:w \l_MT_multline_lastline_fint=\@ne + \MH_let:NwN \math@cr@@ \MT_mult_firstandlast_mathcr:w + \MH_fi: + \ialign\bgroup + \hfil\strut@$\m@th\displaystyle{}## + \UseTaggingSocket{math/luamml/save/nNn}{ {} \displaystyle {mtd}} + $ + \UseTaggingSocket{math/luamml/mtable/finalizecol}{last} + \hfil + \crcr + \hfilneg + #1 + } % \end{macrocode} % end hook % \begin{macrocode} - \l_@@_mathtools_init_tl -} + \l_@@_mathtools_init_tl \ExplSyntaxOff % \end{macrocode} % diff --git a/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-minipage.dtx b/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-minipage.dtx index eed595a5318..6d466a8f7fe 100644 --- a/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-minipage.dtx +++ b/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-minipage.dtx @@ -2,7 +2,7 @@ % %% File: latex-lab-minipage.dtx %% -% Copyright (C) 2023-2024 LaTeX Project +% Copyright (C) 2023-2025 LaTeX Project % % It may be distributed and/or modified under the conditions of the % LaTeX Project Public License (LPPL), either version 1.3c of this diff --git a/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-namespace.dtx b/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-namespace.dtx index d76dd8d4893..84eeb9bb7b7 100644 --- a/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-namespace.dtx +++ b/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-namespace.dtx @@ -2,7 +2,7 @@ % %% File: latex-lab-namespace.dtx %% -% Copyright (C) 2023-2024 LaTeX Project +% Copyright (C) 2023-2025 LaTeX Project % % It may be distributed and/or modified under the conditions of the % LaTeX Project Public License (LPPL), either version 1.3c of this @@ -26,7 +26,7 @@ % \fi % \title{Prototype reimplementation of \LaTeXe{}'s role mapping} % \author{\LaTeX{} Project, initial implementation Ulrike Fischer} -% \date{v0.8b 2024-07-05} +% \date{v0.8d 2025-02-13} % % \maketitle % @@ -52,6 +52,7 @@ % % \end{documentation} % \begin{implementation} +% \changes{v0.8c}{2025/01/12}{changed mapping of verbatim to Code as Sub is now allowed inside Code} % \begin{macrocode} %<*ns-latex-lab> %% \ProvidesExplFile {tagpdf-ns-latex-lab.def} {2023-09-04} {0.8} @@ -88,7 +89,7 @@ enumerate, L, pdf2, description, L, pdf2, quote, BlockQuote,pdf, quotation, BlockQuote,pdf, -verbatim, Div, pdf2, % overwritten by block +verbatim, Code, pdf, % overwritten by block item, LI, pdf2, itemlabel, Lbl, pdf2, itembody, LBody, pdf2, @@ -98,10 +99,14 @@ footnotelabel,Lbl, pdf2, text-unit, Part, pdf2, text, P, pdf2, % \end{macrocode} +% \subsection{From sec code} +% \begin{macrocode} +section-number, Span, pdf2, +% \end{macrocode} % \subsection{From block code} % \begin{macrocode} theorem-like, Sect, pdf2, -verbatim, P, pdf2, +verbatim, Code, pdf, codeline, Sub, pdf2, % \end{macrocode} % \subsection{From float code} diff --git a/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-new-or-1.dtx b/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-new-or-1.dtx index 4d4994262fd..6ff81f9ea02 100644 --- a/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-new-or-1.dtx +++ b/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-new-or-1.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -%% File: latex-lab-new-or-1.dtx (C) Copyright 2020-2024 Frank Mittelbach +%% File: latex-lab-new-or-1.dtx (C) Copyright 2020-2025 Frank Mittelbach % % It may be distributed and/or modified under the conditions of the % LaTeX Project Public License (LPPL), either version 1.3c of this @@ -9,8 +9,8 @@ % % https://www.latex-project.org/lppl.txt % -\def\ltlabneworIdate{2024-11-12} -\def\ltlabneworIversion{0.85b} +\def\ltlabneworIdate{2025-02-11} +\def\ltlabneworIversion{0.85c} %<*driver> \documentclass{l3doc} @@ -35,15 +35,9 @@ % % \section{Introduction} % -% This file contains a few patches of internal \LaTeX{} commands -% to support paragraph tagging across -% page boundaries (in \pdfTeX) and improve the behaviour of links across page breaks. -% -% Until this get properly integrated with the kernel code this has -% to be taken as a prototype and code, interfaces as well as -% behavior may change without notice and certainly without any -% backwards compatibility! -% +% This file contained the initial patches to the OR. All of this +% has be resolved now or moved to +% \pkg{latex-lab-new-or-2}. Eventually, it will be fully removed. % % \StopEventually{\setlength\IndexMin{200pt} \PrintIndex } % @@ -56,127 +50,14 @@ % \begin{macrocode} \ProvidesPackage{latex-lab-testphase-new-or-1} [\ltlabneworIdate\space v\ltlabneworIversion\space - Temporary output patches for tagging and better link support] -\RequirePackage{etoolbox} -% \end{macrocode} -% -% -% \subsection{Patching the OR} -% This adds hooks around header and footer, in \cs{@makecol} and in multicol. -% At first initialize some of the hooks. We use providecommand to avoid problems if -% the kernel changes here and provides them directly. -% \begin{macrocode} -\providecommand\@kernel@before@head{} -\providecommand\@kernel@before@foot{} -\providecommand\@kernel@after@head{} -\providecommand\@kernel@after@foot{} -\providecommand\@mult@ptagging@hook{}% should be replaced with a socket, eventually -% \end{macrocode} -% -% \begin{macrocode} - -\patchcmd\@outputpage - {\vfil\color@hbox\normalcolor\hb@xt@\textwidth{\@thehead}\color@endbox} - {\vfil\@kernel@before@head\color@hbox\normalcolor\hb@xt@\textwidth{\@thehead}\color@endbox\@kernel@after@head} - {\typeout{Patching header in \string\@outputpage}}{\PATCHerror } - - -\patchcmd\@outputpage - {\color@hbox\normalcolor\hb@xt@\textwidth{\@thefoot}\color@endbox} - {\@kernel@before@foot\color@hbox\normalcolor\hb@xt@\textwidth{\@thefoot}\color@endbox\@kernel@after@foot} - {\typeout{Patching footer in \string\@outputpage}}{\PATCHerror } -% \end{macrocode} -% -% \begin{macro}{\@makecol} -% We have to patch \cs{@makecol} in two places: -% \begin{itemize} -% \item -% update 255 up front to add missing tmb/tme if necessary -% \item -% update the \cs{footins} stream if that one got split -% \end{itemize} -% -% We patch \cs{@makecol}, if new-or-2 is loaded too it will overwrite that again. -% \begin{macrocode} -\providecommand\@kernel@before@footins{} -\providecommand\@kernel@tagsupport@@makecol{} - -\patchcmd\@makecol - {\vskip\skip\footins} - {\vskip\skip\footins\@kernel@before@footins} - {\typeout{Patching \string\@makecol\space for tagging}}{\PATCHerror } - -\patchcmd\@makecol - {\let\@elt\relax} - {\@kernel@tagsupport@@makecol\let\@elt\relax} - {\typeout{Patching \string\@makecol\space for tagging}}{\PATCHerror } - -\AddToHook{package/footmisc/after} - {% - \def\@makecol{% - \setbox\@outputbox \box\@cclv - \@outputbox@removebskip - \@kernel@tagsupport@@makecol - \let\@elt\relax - \xdef\@freelist{\@freelist\@midlist}% - \global \let \@midlist \@empty - \@makecol@appendblocks - \ifvbox\@kludgeins - \@makespecialcolbox - \else - \@makenormalcolbox - \fi - \global \maxdepth \@maxdepth} -} + Temporary output patches for tagging and better link support -- no longer active] % \end{macrocode} -% \end{macro} % -% \subsection{\pkg{multicol} adjustments} -% -% The patches for pkg{multicol} are fairly minimal: -% \begin{itemize} -% \item At the start of the environment anything already on the -% page is picked up and stored in \cs{partial@page}, we may need to add -% a TMB to that (it should have a proper TME). This has to happen -% in the \enquote{main} stream context. -% \item -% \item -% \end{itemize} -% -% This is now directly provided in \pkg{multicol} so the patch below is no longer necessary. % % \begin{macrocode} -%\AddToHook{package/multicol/after} -% {% multicol needs later loading -% \end{macrocode} -% -% \begin{macrocode} -% \patchcmd\page@sofar -% {\global\dimen\tw@\dp\z@}% -% {% -% \global\dimen\tw@\dp\z@ -% \@mult@ptagging@hook -% }% -% {\typeout{Patching \string\page@sofar\space for tagging}}{\PATCHerror}% -%} -% \end{macrocode} -% -% \subsection{Interrupt hooks} -% This requires the l3pdfannot module! -% We add the code here and not in hyperref, as it should also work with links -% created directly with the l3pdfannot commands. The file is only -% loaded by the pdfmanagement, so no need to test if the commands exist. -% \begin{macrocode} -\ExplSyntaxOn -\def\@kernel@before@head{\pdfannot_link_off:} -\def\@kernel@before@foot{\pdfannot_link_off:} -\def\@kernel@after@head {\pdfannot_link_on:} -\def\@kernel@after@foot {\pdfannot_link_on:} -\ExplSyntaxOff -% \end{macrocode} -% \begin{macrocode} % % \end{macrocode} +% % \begin{macrocode} %<*latex-lab> \ProvidesFile{new-or-1-latex-lab-testphase.ltx} diff --git a/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-new-or-2.dtx b/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-new-or-2.dtx index ee20331a8f4..414737bc8ce 100644 --- a/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-new-or-2.dtx +++ b/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-new-or-2.dtx @@ -1,7 +1,7 @@ % \iffalse meta-comment % %% File: latex-lab-new-or-2.dtx -% Copyright (C) 2022-2024 The LaTeX Project +% Copyright (C) 2022-2025 The LaTeX Project % % It may be distributed and/or modified under the conditions of the % LaTeX Project Public License (LPPL), either version 1.3c of this @@ -17,8 +17,8 @@ % % for those people who are interested or want to report an issue. % -\def\ltlabneworIIdate{2023-09-04} -\def\ltlabneworIIversion{0.85c} +\def\ltlabneworIIdate{2025-02-12} +\def\ltlabneworIIversion{0.86b} %<*driver> \documentclass{l3doc} @@ -32,7 +32,7 @@ % \fi % % -% \title{The \texttt{latex-lab-testphase-new-or-2} code\thanks{}} +% \title{The \texttt{latex-lab-testphase-new-or-2} code} % \author{Frank Mittelbach, \LaTeX{} Project} % % \date{v\ltlabneworIIversion\ \ltlabneworIIdate} % \maketitle @@ -61,146 +61,8 @@ % \section{Introduction} % % -% \section{Hooks and replaceable code blocks} % % -% \subsubsection{Replaceable code blocks (sockets)} -% -% To cater for different layouts with respect to text, footnotes, -% and bottom-floats placements there are two sockets for -% now. -% \begin{description} -% \item[\socket{@makecol/outputbox} (0 arguments)] -% -% In code for this socket the \cs{@outputbox} (holding the -% galley text for the current column or page) is augmented by -% attaching floats and footnote areas together with appropriate -% spacing. -% -% Prior to calling the socket the output routine has already -% decided which floats go into which area and which get deferred. -% Therefore, the assumption is that the code in the socket attaches all -% areas that contain floats. If this is not done, then the order -% of floats is likely to be screwed up unless unused floats -% are moved to the defer list in an appropriate way (for now we -% don't offer any interface for that scenario). -% -% Before the code in the socket is run, any existing glue at the bottom -% of the \cs{@outputbox} is removed and stored in a safe -% place. If needed, it can be reinserted with one of the helper -% commands. -% -% To support setting this up the following helper commands are available: -% \begin{description} -% \item[\cs{@outputbox@append} (1 argument)] -% -% \DescribeMacro[noprint]{@outputbox@append} -% -% This general purpose command alters the \cs{@outputbox} box by -% appending material to it. -% -% \item[\cs{@outputbox@appendfootnotes} (0 arguments)] -% -% \DescribeMacro[noprint]{@outputbox@appendfootnotes} -% -% This command appends the footnotes to the \cs{@outputbox} (if -% there are any). If not, then it does nothing. -% -% \item[\cs{@outputbox@attachfloats} (0 arguments)] -% \item[\cs{@outputbox@attachtopfloats} (0 arguments)] -% \item[\cs{@outputbox@attachbottomfloats} (0 arguments)] -% -% \DescribeMacro[noprint]{@outputbox@attachfloats} -% \DescribeMacro[noprint]{@outputbox@attachtopfloats} -% \DescribeMacro[noprint]{@outputbox@attachbottomfloats} -% -% Attaching top and bottom floats can usually be done in one -% go, but for special layouts we might want more control so we -% provide also separate commands. -% -% \item[\cs{@outputbox@reinsertbskip} (0 arguments)] -% -% \DescribeMacro[noprint]{@outputbox@reinsertbskip} -% -% Reinsert the bottom skip of the \cs{@outputbox} that was -% saved before. -% -% \item[Testing for existence of material] -% -% \DescribeMacro[noprint]{@if@footnotes@TF} -% \DescribeMacro[noprint]{@if@bfloats@TF} -% -% There are a number of helpers to run conditional code -% depending on whether or not there are footnotes or bottom -% floats. They are \cs{@if@footnotes@TF} and -% \cs{@if@bfloats@TF} -% (names are likely to change). -% -% \end{description} -% -% \fmi{Decide on names for these helper commands. We could keep -% them similar to the above (because they are only supposed to be -% used by a few packages). However, we could alternatively use -% CamelCase names, under the assumption that classes may also -% directly define a plug for the socket, instead of loading a -% support package such as \pkg{footmisc} (or in addition -% to). --- decide} -% -% This socket cannot be empty but needs appropriate code; a set -% of suitable plugs for it are already given in the kernel. These -% are -% \begin{description} -% \item[\plug{space-footnotes-floats}] -% -% After the galley text there is a vertical \cs{vfill} -% followed by any footnotes followed by the bottom floats, if any. -% -% \item[\plug{floats-footnotes-space}] -% -% As before but the \cs{vfill} is at the bottom (page is -% ragged bottom). -% -% \item[\plug{footnotes-space-floats}] -% -% As before but the \cs{vfill} is between footnotes and floats. -% -% \item[\plug{space-floats-footnotes}] -% -% Here the footnotes come last.\footnote{There are two more -% permutations, but neither of them has ever been requested so -% they aren't set up by default --- doing that in a class -% would be trivial though.} -% -% \item[\plug{floats-footnotes}] -% -% All excess space has to be distributed across the existing -% glue on the page, e.g., within the text galley, the -% separation between blocks, etc. -% The order is text, floats, footnotes. -% -% \item[\plug{footnotes-floats}] -% -% As the previous one but floats and footnotes are -% swapped. This is the \LaTeX{} default, i.e., this plug is -% assigned to the socket. -% -% \end{description} -% -%----------------------- -% -% \item[\socket{@makecol/footnotes} (0 arguments)] -% -% This socket is used to manipulate the footnote -% material inside \cs{box}\cs{footins}. It if contains code, it -% is supposed to do some processing of that box and then write -% the result back into it (and nothing else!). By default it -% does nothing, i.e., has the \plug{noop} assigned. -% -% If (short) footnotes are run as a paragraph this socket gets -% the plug \plug{para} assigned which is defined elsewhere. -% -% \end{description} -% % \StopEventually{\setlength\IndexMin{200pt} \PrintIndex } % % @@ -219,301 +81,14 @@ % % \subsection{\cs{@makecol} reimplementation} % -% In order for other packages to prepend or append code to -% \cs{@makecol} the generic command hooks -% \texttt{cmd/@makecol/before} and \texttt{cmd/@makecol/after} can -% be used, so for now there is nothing we need to do for this. -% -% -% \begin{macro}{\@makecol} -% \cs{@makecol} is shortened a lot, basically all the hardwired -% code in the middle has moved into a socket. -% \begin{macrocode} -\def \@makecol {% -% \end{macrocode} -% Save away box 255 as \cs{@outputbox} to make it available for further adjustments. -% \begin{macrocode} - \setbox\@outputbox \box\@cclv -% \end{macrocode} -% The only real addition is the next command which either does -% nothing or removes an infinite glue from the bottom of the -% \cs{@outputbox}. -% \begin{macrocode} - \@outputbox@removebskip -% \end{macrocode} -% Now a kernel hook for tagging. -% \fmi{The name is likely to change and it probably will eventually -% be replaced with a socket.} -% \begin{macrocode} - \@kernel@tagsupport@@makecol -% \end{macrocode} -% When this code is run any ``here'' floats in the \cs{@outputbox} are already handled, so we -% recycle their registers and put them back to the \cs{@freelist}. -% \begin{macrocode} - \let\@elt\relax - \xdef\@freelist{\@freelist\@midlist}% - \global \let \@midlist \@empty -% \end{macrocode} -% Here we have the configurable part. This socket is supposed to add floats, -% footnotes and stretchable vertical space as appropriate to the \cs{@outputbox}. -% \begin{macrocode} - \UseSocket{@makecol/outputbox}% -% \end{macrocode} -% Then we deal with any \cs{enlargethispage} or run the normal code -% to build a column. -% \begin{macrocode} - \ifvbox\@kludgeins - \@make@specialcolbox - \else - \@make@normalcolbox - \fi - \global \maxdepth \@maxdepth -} -% \end{macrocode} -% \end{macro} -% -% -% \begin{macro}{\@outputbox@depth} -% We need to know the depth of \cs{@outputbox} once in a -% while. Rather than using a temp dimen (as it was done in the -% past), we give it a proper register. -% \begin{macrocode} -\newdimen\@outputbox@depth -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\@make@normalcolbox} -% Taken out of \cs{@makecol} for readability. +% \begin{plugdecl}{footnote-floats} +% If \cs{DocumentMetadata} is used we use \plug{footnotes-floats} +% as the default. In 2e compatibility mode this should be changed to +% \plug{footnotes-floats-legacy}. % \begin{macrocode} -\def \@make@normalcolbox {% - \setbox\@outputbox \vbox to\@colht {% - \@texttop - \@outputbox@depth \dp\@outputbox - \unvbox \@outputbox - \vskip -\@outputbox@depth - \@textbottom - }% -} +\AssignSocketPlug {build/column/outputbox}{footnotes-floats} % \end{macrocode} -% \end{macro} -% -% -% \begin{macro}{\@make@specialcolbox} -% Make the colbox when \cs{enlargethispage} was used. -% \begin{macrocode} -\def \@make@specialcolbox {% - \@outputbox@append {\vskip-\@outputbox@depth}% - \@tempdima \@colht - \ifdim \wd\@kludgeins>\z@ - \advance \@tempdima -\ht\@outputbox - \advance \@tempdima \pageshrink - \setbox\@outputbox \vbox to \@colht {% - \unvbox\@outputbox - \vskip \@tempdima - \@textbottom - }% - \else - \advance \@tempdima -\ht\@kludgeins - \setbox \@outputbox \vbox to \@colht {% - \vbox to \@tempdima {% - \unvbox\@outputbox - \@textbottom}% - \vss}% - \fi - {\setbox \@tempboxa \box \@kludgeins}% -} -% \end{macrocode} -% \end{macro} -% -% -% \begin{macro}{\@outputbox@removebskip} -% -% This is really a bug fix for the kernel but one we only -% automatically make in new documents that are using \cs{DocumentMetadata}. -% \fmi{may make optional for legacy docs} -% If -% \cs{raggedbottom} is in force, footnotes get attached to the main -% galley at a distance of \cs{footskip} on all pages except on -% those that are ended by \cs{newpage} or \cs{clearpage} where the -% \cs{vfil} from \cs{newpage} pushes the footnotes to the very bottom. -% -% This is kind of a weird difference to a page ending with -% \cs{pagebreak}---in that case the page is also run -% short, but the footnotes are not pushed to the bottom. -% -% In \pkg{footmisc} \cs{@outputbox@removebskip} is only applied when -% \pkg{footmisc} is called with an option specifying the -% footnote placement, i.e., not in the default case. -% In new documents we apply it always. -% \begin{macrocode} -\def\@outputbox@removebskip{% -% \end{macrocode} -% We first test if we are in a \cs{raggedbottom} layout. If not we -% do nothing, but we don't disable the code because -% \cs{raggedbottom} may get used only for some parts of the -% document. -% \begin{macrocode} - \ifx\@textbottom\relax \else -% \end{macrocode} -% We then append some negative glue at the end of \cs{@outputbox} -% provided it has a glue stretch order of 1 or more (i.e., contains -% a \texttt{fil} or \texttt{fill} part). -% \begin{macrocode} - \@outputbox@append{% - \@tempskipa\lastskip - \ifnum \gluestretchorder\@tempskipa>\z@ - \vskip-\@tempskipa -% \end{macrocode} -% -% \begin{macro}{\@outputbox@reinsertbskip} -% We also record the value so that it can be reinserted -% elsewhere. As we have to do this globally, we also need to -% explicitly reset it if we don't find any such glue. -% \begin{macrocode} - \xdef\@outputbox@reinsertbskip - {\noexpand\@outputbox@append{\vskip\the\@tempskipa}}% - \else - \global\let\@outputbox@reinsertbskip\relax - \fi - }% - \fi -} -% \end{macrocode} -% We need a trivial top-level definition for -% \cs{@outputbox@reinsertbskip} in case the first page has no -% bottom glue and the command gets called. -% \begin{macrocode} -\let\@outputbox@reinsertbskip\relax -% \end{macrocode} -% \end{macro} -% \end{macro} -% -% -% -% \begin{macro}{\@kernel@before@cclv, -% \@kernel@before@footins} -% These two commands are internal kernel hooks intended for tagging -% support in case that is active. They should not be altered by package code! -% By default they do nothing (and -% may have been defined already by \cs{DocumentMetadata}). -% \fmi{The names might change and perhaps each of them is turned -% into a socket named something like \socket{tagsupport/before/cclv} -% or similar.} -% \begin{macrocode} -\providecommand\@kernel@before@cclv{} -\providecommand\@kernel@before@footins{} -% \end{macrocode} -% \end{macro} -% -% -% -% -% \subsection{The output routine configuration components} -% -% Here we provide the components that are used to define code for the -% \socket{@makecol/outputbox} socket. -% -% -% \begin{macro}{\@outputbox@append} -% -% This general purpose command alters the \cs{@outputbox} box by -% appending material to it. As this is a box typesetting operation -% we make sure that the last line of the box reflects the true -% depth of the last line (in case that is needed later). We also -% expose the current depth of \cs{@outputbox} as -% \cs{@outputbox@depth} before unboxing so that its value can be -% used by \verb=#1= if wanted. -% \begin{macrocode} -\def\@outputbox@append #1{% -% \if!\detokenize{#1}!\else - \setbox\@outputbox \vbox {% - \boxmaxdepth \@maxdepth - \@outputbox@depth\dp\@outputbox % if needed in #1 - \unvbox \@outputbox - #1% - }% -% \fi -} -% \end{macrocode} -% \end{macro} -% -% -% -% -% -% \begin{macro}{\@outputbox@appendfootnotes} -% -% This command appends the footnotes to the \cs{@outputbox} (if -% there are any). If not, then it does nothing. -% \begin{macrocode} -\def\@outputbox@appendfootnotes {% - \ifvoid\footins \else -% \end{macrocode} -% First come two configuration points: what to do if we are in a split -% footnote situation and a second one that does some manipulation -% of the \cs{footins} box before it gets appended. -% \fmi{The code for handling split footnotes will get revised as part of socket handling in the future} -% \begin{macrocode} - \@makecol@handlesplitfootnotes -% \end{macrocode} -% -% \begin{macrocode} - \UseSocket{@makecol/footnotes}% -% \end{macrocode} -% Then the footnotes are appended: -% \begin{macrocode} - \@outputbox@append{% - \vskip \skip\footins -% \end{macrocode} -% This is a kernel hook for tagging. -% \fmi{The name is likely to change and it probably will eventually -% be replaced with a socket.} -% \begin{macrocode} - \@kernel@before@footins -% \end{macrocode} -% -% \begin{macrocode} - \color@begingroup - \normalcolor - \footnoterule -% \end{macrocode} -% Support for \pkg{pdfcolfoot}, eventually this can go once color -% is properly supported. The csname is constructed in case it -% doesn't exist. -% \begin{macrocode} - \csname pdfcolfoot@current\endcsname - \unvbox \footins - \color@endgroup - }% - \fi -} -% \end{macrocode} -% \end{macro} -% -% -% -% \begin{macro}{\@outputbox@attachfloats} -% \begin{macro}{\@outputbox@attachtopfloats} -% \begin{macro}{\@outputbox@attachbottomfloats} -% Attaching top and bottom floats can usually be done in one go, -% but for special layouts we might want more control so we provide -% also separate commands. -% \begin{macrocode} -\let \@outputbox@attachfloats \@combinefloats -% \end{macrocode} -% -% \begin{macrocode} -\def \@outputbox@attachtopfloats {% - \ifx \@toplist\@empty \else \@cflt \fi -} -\def \@outputbox@attachbottomfloats {% - \ifx \@botlist\@empty \else \@cflb \fi -} -% \end{macrocode} -% \end{macro} -% \end{macro} -% \end{macro} -% +% \end{plugdecl} % % % @@ -545,182 +120,84 @@ % % % -% \begin{socketdecl}{@makecol/footnote} -% -% The socket allowing the manipulation of \cs{footins} box -% (result needs to be moved back in there). Used when footnotes are -% reformatted into a single paragraph by the -% \texttt{para} option of \pkg{footmisc}. By default it does nothing. -% \begin{macrocode} -\NewSocket{@makecol/footnotes}{0} -% \end{macrocode} -% \end{socketdecl} -% % % -% \fmi{Some temp interfaces until configuration points are available.} % -% \begin{macro}{\@if@flushbottom@TF} -% Test for \cs{flushbottom} (currently not used). -% \begin{macrocode} -\def\@if@flushbottom@TF{% - \ifx\@textbottom\relax - \expandafter\@firstoftwo - \else - \expandafter\@secondoftwo - \fi -} -% \end{macrocode} -% \end{macro} +% \subsection{\cs{@outputpage} reimplementation} % +% We still have to deal with various plug setting for tagging: +% This needs documentation and moving. % -% \begin{macro}{\@if@footnotes@TF} -% Test if footnotes are present on the current page. +% \begin{plugdecl}{default} % \begin{macrocode} -\def\@if@footnotes@TF{% - \ifvoid\footins - \expandafter\@secondoftwo - \else - \expandafter\@firstoftwo - \fi -} +\ExplSyntaxOn % \end{macrocode} -% \end{macro} -% -% -% \begin{macro}{\@if@bfloats@TF} -% Test if bottom floats are around. +% \fmi{where should these plug declarations go? tagpdf?} % \begin{macrocode} -\def\@if@bfloats@TF{% - \ifx \@botlist\@empty - \expandafter\@secondoftwo - \else - \expandafter\@firstoftwo - \fi -} +\NewSocketPlug{tagsupport/build/page/header}{default} + { + \__tag_hook_kernel_before_head: + #2 + \__tag_hook_kernel_after_head: + } % \end{macrocode} -% \end{macro} -% -% -% -% \subsection{The \cs{@makecol} configuration} -% -% -% \begin{socketdecl}{@makecol/outputbox} -% We have one socket that is supposed to augment the \cs{@outputbox} -% by attaching floats and footnotes with appropriate spacing. -% +% % \begin{macrocode} -\NewSocket{@makecol/outputbox}{0} +\AssignSocketPlug{tagsupport/build/page/header}{default} % \end{macrocode} -% \end{socketdecl} -% -% The following plugs are available for -% this socket: % -% \begin{plugdecl}{space-footnotes-floats} -% After the galley text there is a vertical \cs{vfill} followed by -% any footnotes followed by the bottom floats, if any. -% \begin{macrocode} -\NewSocketPlug {@makecol/outputbox}{space-footnotes-floats} {% - \@if@footnotes@TF - {\@outputbox@append{\vfill}}% - {\@if@bfloats@TF - {\@outputbox@append{\vfill}}% - {\@outputbox@reinsertbskip}% - }% - \@outputbox@appendfootnotes - \@outputbox@attachfloats -} -% \end{macrocode} % \end{plugdecl} % -% \begin{plugdecl}{floats-footnotes-space} -% As before but the \cs{vfill} is at the bottom (page is ragged -% bottom). + + +% \begin{plugdecl}{default} % \begin{macrocode} -\NewSocketPlug {@makecol/outputbox}{floats-footnotes-space} {% - \@outputbox@attachfloats - \@if@footnotes@TF - {\@outputbox@append{\vfill}}% - {\@outputbox@reinsertbskip}% - \@outputbox@appendfootnotes -} +\NewSocketPlug{tagsupport/build/page/footer}{default} + { + \__tag_hook_kernel_before_foot: + #2 + \__tag_hook_kernel_after_foot: + } % \end{macrocode} -% \end{plugdecl} % -% \begin{plugdecl}{footnotes-space-floats} -% As before but the \cs{vfill} is between footnotes and floats. % \begin{macrocode} -\NewSocketPlug {@makecol/outputbox}{footnotes-space-floats} {% - \@outputbox@appendfootnotes - \@if@bfloats@TF - {\@outputbox@append{\vfill}}% - {\@outputbox@reinsertbskip}% - \@outputbox@attachfloats -} +\AssignSocketPlug{tagsupport/build/page/footer}{default} % \end{macrocode} -% \end{plugdecl} % -% \begin{plugdecl}{space-floats-footnotes} -% Here the footnotes come last.\footnote{There are two more -% permutations, but neither of them has ever been requested so -% they aren't set up by default --- doing that in a class -% would be trivial though.} -% \begin{macrocode} -\NewSocketPlug {@makecol/outputbox}{space-floats-footnotes} {% - \@if@footnotes@TF - {\@outputbox@append{\vfill}}% - {\@if@bfloats@TF - {\@outputbox@append{\vfill}}% - {\@outputbox@reinsertbskip}}% - \@outputbox@attachfloats - \@outputbox@appendfootnotes -} -% \end{macrocode} % \end{plugdecl} % -% -% -% \begin{plugdecl}{floats-footnotes} -% All excess space has to be distributed across the existing -% glue on the page, e.g., within the text galley, the -% separation between blocks, etc. -% The order is text, floats, footnotes. -% \begin{macrocode} -\NewSocketPlug {@makecol/outputbox}{floats-footnotes} {% - \@outputbox@attachfloats - \@outputbox@appendfootnotes -% \end{macrocode} -% We do reinsert the bottom skip from \cs{newpage} if it -% was taken out earlier. This is, strictly speaking, not necessary -% in most cases, but it is a \cs{vfil} while \cs{raggedbottom} is -% only generating \verb=\vspace{0pt plus .0001fil}=, so if you have -% several \cs{vfil} on the page before the \cs{newpage} you would -% alter the space distribution if one is taken out. + + + + +% \begin{plugdecl}{default} % \begin{macrocode} - \@outputbox@reinsertbskip -} +\NewSocketPlug{tagsupport/build/column/outputbox}{default} + { + \__tag_check_typeout_v:n { ====>~In~\token_to_str:N \@makecol + \c_space_tl\the\c@page } + \tag_mc_add_missing_to_stream:Nn \@outputbox {main} + } % \end{macrocode} % -% \end{plugdecl} -% -% \begin{plugdecl}{footnotes-floats} +% \begin{plugdecl}{default} % \begin{macrocode} -\NewSocketPlug {@makecol/outputbox}{footnotes-floats} {% - \@outputbox@appendfootnotes - \@outputbox@attachfloats - \@outputbox@reinsertbskip -} +\NewSocketPlug{tagsupport/build/column/footins}{default} + { \tag_mc_add_missing_to_stream:Nn \footins {footnote} } % \end{macrocode} -% The \texttt{footnote-floats} plug is the default used by -% \LaTeX{}; it can be overwritten either through \pkg{footmisc} or -% by assigning any of the other plugs (or by coding yet another -% plug for the socket). +% The two sockets do nothing (default \plug{noop}) if we +% are in lua mode. If not they get the \plug{default} assigned % \begin{macrocode} -\AssignSocketPlug {@makecol/outputbox}{footnotes-floats} +\sys_if_engine_luatex:F + { + \AssignSocketPlug{tagsupport/build/column/outputbox}{default} + \AssignSocketPlug{tagsupport/build/column/footins}{default} + } +\ExplSyntaxOff + % \end{macrocode} % \end{plugdecl} +% \end{plugdecl} % % % diff --git a/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-sec.dtx b/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-sec.dtx index 936eee9ed21..e1aaeffc99d 100644 --- a/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-sec.dtx +++ b/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-sec.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -%% File: latex-lab-sec.dtx (C) Copyright 2022-2024 LaTeX Project +%% File: latex-lab-sec.dtx (C) Copyright 2022-2025 LaTeX Project % % It may be distributed and/or modified under the conditions of the % LaTeX Project Public License (LPPL), either version 1.3c of this @@ -16,8 +16,8 @@ % % for those people who are interested or want to report an issue. % -\def\ltlabsecdate{2024-10-04} -\def\ltlabsecversion{0.84f} +\def\ltlabsecdate{2025-02-18} +\def\ltlabsecversion{0.84i} %<*driver> \documentclass[kernel]{l3doc} \EnableCrossrefs @@ -47,100 +47,102 @@ % \begin{abstract} % The following code implements a first draft for the tagging of sectioning commands. % \end{abstract} -% +% % \section{Limitations} -% -% Sectioning commands are in not defined by the format but by the classes. -% Their implementation vary: some are defined with the help of \cs{@startsection}, -% some are like \cs{chapter} handcrafted, -% some build with the help of extension packages or as in the KOMA classes +% +% Sectioning commands are in not defined by the format but by the classes. +% Their implementation vary: some are defined with the help of \cs{@startsection}, +% some are like \cs{chapter} handcrafted, +% some build with the help of extension packages or as in the KOMA classes % with class code that extends the \cs{@startsection} functionality. -% +% % The following code can therefore currently be used \emph{only} with the standard classes % or with classes which do not overwrite the changed definitions. -% -% -% +% +% +% % \section{Introduction} -% +% % Tagging of sectioning commands consist of two parts: -% +% % \begin{itemize} -% \item The heading/title text of the section should be surrounded by a +% \item The heading/title text of the section should be surrounded by a % heading tag, typically \texttt{Hn} with some value of \texttt{n}. -% The number of the section command can optionally be put in a \texttt{Lbl}. -% The number of the \texttt{Hn} tag should reflect the \enquote{natural} level. +% In theory, one could put the number of the section command in an \texttt{Lbl}. +% However, current AT doesn't handle this well, so +% we use a tag \texttt{section-number} that is mapped to \texttt{Span}. +% The number of the \texttt{Hn} tag should reflect the \enquote{natural} level. % So in an article \cs{section} will use \texttt{H1}, in a book \cs{chapter} will use -% \texttt{H1} and \cs{section} \texttt{H2}. +% \texttt{H1} and \cs{section} \texttt{H2}. % Titles of \cs{part} are a bit out of this system as they are normally % not part of the hierarchy: often only some chapters are grouped under a part. -% Their title is therefore tagged as \texttt{Title}. -% \item +% Their title is therefore tagged as \texttt{Title}. +% \item % The whole section should normally be surrounded by -% a \texttt{Sect} tag. Parts should be surrounded by \texttt{Part}. -% It is a bit unclear if the headings should be inside or outside of these -% structures---the best practice guide puts them outside---but on the whole +% a \texttt{Sect} tag. Parts should be surrounded by \texttt{Part}. +% It is a bit unclear if the headings should be inside or outside of these +% structures---the best practice guide puts them outside---but on the whole % it sounds more logical to group the heading with the text inside the \texttt{Sect}. % For the part this is actually required, as there can be only one \texttt{Title} -% in a structure, so the part title can't be at the same level as the +% in a structure, so the part title can't be at the same level as the % document \texttt{Title}. -% -% Starting such an enclosing \texttt{Sect} structure is rather easy, -% but closing it requires code in various place, -% for example the commands \cs{mainmatter}, \cs{backmatter}, -% \cs{frontmatter} and \cs{appendix} should typically close everything. -% Following sectioning commands should close all previous structures +% +% Starting such an enclosing \texttt{Sect} structure is rather easy, +% but closing it requires code in various place, +% for example the commands \cs{mainmatter}, \cs{backmatter}, +% \cs{frontmatter} and \cs{appendix} should typically close everything. +% Following sectioning commands should close all previous structures % with a level equal or higher than their own level. % \end{itemize} -% +% % \section{Technical details and problems} -% +% % The implementation has to take care of various details. -% +% % \begin{itemize} -% -% \item As sections in \LaTeX{} are not environments, the +% +% \item As sections in \LaTeX{} are not environments, the % \texttt{} structures can be wrongly nested with other structures. For example -% if a document puts a sectioning command into a list or a trivlist or +% if a document puts a sectioning command into a list or a trivlist or % a minipage then it can no longer close previous \texttt{} structures correctly. -% The problem can be detected by checking the structure stack +% The problem can be detected by checking the structure stack % and a warning can be issued, but the author then has to close the structures -% manually before the list or minipage. -% +% manually before the list or minipage. +% % Thus there have to be user interfaces to handle such cases. % It should also be possible not to create all the \texttt{} structures % automatically but to tag only the headings so that the author can handle special -% cases manually. -% +% cases manually. +% % \item If hyperref is used, targets for links should be inserted, either with % \cs{refstepcounter} or manually with \cs{MakeLinkTarget}. These targets must be % in the correct structure for the structure destinations. They replace some % of the current patches in hyperref. -% -% \item With lualatex the mc-commands set attributes \emph{locally}, so the +% +% \item With lualatex the mc-commands set attributes \emph{locally}, so the % commands must be at the right grouping level. % \end{itemize} -% +% % \subsection{Functions and keys} % % \begin{function}{\tag_tool:n,\tagtool} -% +% % \end{function} -% +% % \subsection{TODO} -% +% % \begin{itemize} -% \item A dedicated command to close a sectioning unit should be provided. -% -% \item A dedicated command to open a sectioning unit should be provided too. -% +% \item A dedicated command to close a sectioning unit should be provided. +% +% \item A dedicated command to open a sectioning unit should be provided too. +% % \item It should also be possible to suppress the sectioning unit in sectioning commands % to allow e.g. to put an epigraph or similar in front. -% -% \item The number in \cs{part} and \cs{chapter} is currently not correctly -% tagged as a \texttt{Lbl} as this requires to redefine the internal (class dependent) +% +% \item The number in \cs{part} and \cs{chapter} is currently not correctly +% tagged as a \texttt{section-number} as this requires to redefine the internal (class dependent) % commands too. -% +% % \end{itemize} % % \begin{macrocode} @@ -152,16 +154,16 @@ \ProvidesExplPackage {latex-lab-testphase-sec} {\ltlabsecdate} {\ltlabsecversion} {Code related to the tagging of sectioning commands} % \end{macrocode} -% -% \subsection{Surrounding by \texttt{Sect} structures} +% +% \subsection{Surrounding by \texttt{Sect} structures} % We use a stack to record the levels of the open \texttt{Sect}. The first item % has level -100. A sectioning command will take a record from the stack. If its level is % greater or equal it closes this structure and takes the next record from the stack. % If the record has a smaller level then it puts it back and stops. -% The stack is compared with the main structure stack, if they don't match -% it means we can't safely close the \texttt{Sect} and so we issue a warning -% and do nothing. -% +% The stack is compared with the main structure stack, if they don't match +% it means we can't safely close the \texttt{Sect} and so we issue a warning +% and do nothing. +% % \subsubsection{Loading general kernel changes} % [kernel?] % Also loaded in the toc-tagging code. @@ -172,23 +174,23 @@ % % \end{macrocode} % \subsubsection{Glyphtounicode improvements} -% +% % As lualatex runs with legacy encodings in the test files, we enable and % load glyphtounicode. For the math we load additional definitions. -% +% % \begin{macrocode} %<*kernelchange> \ifdefined\directlua - \ifnum\outputmode > 0 + \ifnum\outputmode > 0 \pdfvariable gentounicode =1 \protected\def\pdfglyphtounicode {\pdfextension glyphtounicode } - \protected\edef\pdfgentounicode {\pdfvariable gentounicode} + \protected\edef\pdfgentounicode {\pdfvariable gentounicode} \input{glyphtounicode} \fi \fi \ifdefined\pdfglyphtounicode \input{glyphtounicode-cmex} -\fi +\fi % % \end{macrocode} % @@ -197,7 +199,7 @@ % % We must ensure that manual targets (e.g. in unnumbered sections) % correctly update \cs{@currentHref}. For this we extend the kernel definition of -% \cs{MakeLinkTarget} +% \cs{MakeLinkTarget} % TODO: remove after release 2024/11 % \begin{macrocode} %<*kernelchange> @@ -221,11 +223,11 @@ { \int_gincr:N\g__kernel_target_int \tl_gset:Ne \@currentHref {target*.\int_use:N\g__kernel_target_int} - } + } } } -\ExplSyntaxOff -% +\ExplSyntaxOff +% % \end{macrocode} % % \begin{macrocode} @@ -242,7 +244,7 @@ \seq_gpush:Nn\g_@@_sec_stack_seq {{Document}{-100}{2}} % \end{macrocode} % \end{variable} -% +% % \begin{macro}{\@@_get_data_current_Sect:} % This allows to retrieve the number of the current Sect structure (or % Document if we are outside any Sect) with |\tag_get:n{current_Sect}| @@ -254,7 +256,7 @@ % \end{macrocode} % \end{macro} % \begin{variable}{\l_@@_sec_Sect_bool} -% This boolean controls if a Sect structure is opened. +% This boolean controls if a Sect structure is opened. % \begin{macrocode} \bool_new:N \l_@@_sec_Sect_bool \bool_set_true:N\l_@@_sec_Sect_bool @@ -262,23 +264,23 @@ % \end{variable} % % \begin{macro}{\@@_sec_begin:nn} -% This starts a sectioning structure. +% This starts a sectioning structure. % Currently the tag is fix, either Sect or Part, depending on the level, % but this will perhaps change. The second argument is currently unused. % \begin{macrocode} \cs_new_protected:Npn\@@_sec_begin:nn #1 #2 %#1 level #2 keyval { - \tag_struct_begin:n + \tag_struct_begin:n { tag= {\int_compare:nNnTF {#1}={-1}{Part}{Sect}} ,#2 - } - \seq_gpush:Ne \g_@@_sec_stack_seq - {{\g_@@_struct_tag_tl}{\int_eval:n{#1}}{\g_@@_struct_stack_current_tl}} + } + \seq_gpush:Ne \g_@@_sec_stack_seq + {{\g_@@_struct_tag_tl}{\int_eval:n{#1}}{\g_@@_struct_stack_current_tl}} } % \end{macrocode} % \end{macro} -% +% % \begin{macro}{\@@_sec_end:n} % \begin{macrocode} \msg_new:nnn { tag } {wrong-sect-nesting} @@ -294,32 +296,32 @@ { \seq_get:NN\g_@@_struct_tag_stack_seq \l_@@_tmpb_tl \exp_args:Nee - \tl_if_eq:nnTF + \tl_if_eq:nnTF {\exp_last_unbraced:NV\use_i:nnn\l_@@_tmpa_tl} {\exp_last_unbraced:NV\use_i:nn\l_@@_tmpb_tl} { \seq_gpop:NN \g_@@_sec_stack_seq \l_@@_tmpa_tl \tag_struct_end: - \@@_sec_end:n {#1} + \@@_sec_end:n {#1} } - { + { \msg_warning:nnee {tag}{wrong-sect-nesting} { \exp_last_unbraced:NV\use_i:nnn \l_@@_tmpa_tl } - { \exp_last_unbraced:NV\use_i:nn \l_@@_tmpb_tl } + { \exp_last_unbraced:NV\use_i:nn \l_@@_tmpb_tl } } - } - } + } + } % \end{macrocode} % \end{macro} % \begin{macro}{\@@_tool_para_split:} -% Runin-sectioning command must separate the heading from the following text. -% +% Runin-sectioning command must separate the heading from the following text. +% % \begin{macrocode} \cs_new_protected:Npn \@@_tool_para_split: { \tag_mc_end: - \tag_struct_end: + \tag_struct_end: \tag_struct_begin:n{tag=\l_@@_para_tag_default_tl} \tag_mc_begin:n{} \@@_setup_restore_para_default: @@ -329,8 +331,8 @@ % \begin{macro}{\@@_setup_restore_para_default:} % We change the para tagging in the sectioning code. -% This here restores the default. Currently it only resets the -% the tag, but perhaps more will be needed later. +% This here restores the default. Currently it only resets the +% the tag, but perhaps more will be needed later. % \begin{macrocode} \cs_new_protected:Npn \@@_setup_restore_para_default: { @@ -339,7 +341,7 @@ } % \end{macrocode} % \end{macro} -% +% % \begin{macro}{\@@_sec_end_display:} % \begin{macrocode} \cs_new_protected:Npn \@@_sec_end_display: @@ -354,21 +356,22 @@ % be done before tagpdf closes the Document structure. % \begin{macrocode} \hook_gput_code:nnn{tagpdf/finish/before}{tagpdf/sec}{\@@_sec_end:n{-10}} -\hook_gset_rule:nnnn {tagpdf/finish/before}{tagpdf/sec}{before}{tagpdf} +\hook_gset_rule:nnnn {tagpdf/finish/before}{tagpdf/sec}{before}{tagpdf} % \end{macrocode} % % The commands \cs{mainmatter}, \cs{backmatter}, \cs{frontmatter} and % \cs{appendix} close all \texttt{Sect} and \texttt{Part} structures. +% \changes{v0.84g}{2025/01/05}{ensure that paragraph is ended (tagging/777)} % \begin{macrocode} -\AddToHook{cmd/frontmatter/before}{\@@_sec_end:n{-10}} -\AddToHook{cmd/mainmatter/before} {\@@_sec_end:n{-10}} -\AddToHook{cmd/backmatter/before} {\@@_sec_end:n{-10}} -\AddToHook{cmd/appendix/before} {\@@_sec_end:n{-10}} +\AddToHook{cmd/frontmatter/before}{\par\@@_sec_end:n{-10}} +\AddToHook{cmd/mainmatter/before} {\par\@@_sec_end:n{-10}} +\AddToHook{cmd/backmatter/before} {\par\@@_sec_end:n{-10}} +\AddToHook{cmd/appendix/before} {\par\@@_sec_end:n{-10}} % \end{macrocode} % % \subsection{Tagging tools} % We need to provide user and package level commands -% +% % \begin{macrocode} \cs_if_free:NT \tag_tool:n { @@ -376,24 +379,24 @@ { \tag_if_active:T { \keys_set:nn {tag / tool}{#1} } } - \cs_set_eq:NN\tagtool\tag_tool:n - } -\keys_define:nn { tag / tool} + \cs_set_eq:NN\tagtool\tag_tool:n + } +\keys_define:nn { tag / tool} { - ,sec-start-part .code:n = + ,sec-start-part .code:n = { \bool_if:NT\l_@@_sec_Sect_bool { - \@@_sec_end:n {-1} + \@@_sec_end:n {-1} \@@_sec_begin:nn{-1}{tag=Part} - } + } \tag_struct_begin:n{tag=part,title=#1} % \end{macrocode} % We remap here the text-unit from the paragraph to NonStruct. % It would be better to suppress it completely as with the other % sectioning commands, but this would require to redefine \cs{@spart} % and \cs{@part}, as there is the grouping, and these commands are -% all slightly different in the standard classes. So this is delayed +% all slightly different in the standard classes. So this is delayed % to the time when sectioning commands are redefined with templates. % \begin{macrocode} \tl_set:Nn\l_@@_para_main_tag_tl {NonStruct} @@ -404,9 +407,9 @@ { \bool_if:NT\l_@@_sec_Sect_bool { - \@@_sec_end:n {0} + \@@_sec_end:n {0} \@@_sec_begin:nn{0}{tag=Sect} - } + } \tag_struct_begin:n{tag=chapter,title=#1} % \end{macrocode} % similar to part we remap to NonStruct for now ... @@ -414,35 +417,35 @@ \tl_set:Nn\l_@@_para_main_tag_tl {NonStruct} \tl_set:Nn\l_@@_para_tag_tl {Span} } - ,sec-stop-chapter .meta:n = { sec-stop-part} - ,sec-start .code:n = % #1 is a name like "section" - { + ,sec-stop-chapter .meta:n = { sec-stop-part} + ,sec-start .code:n = % #1 is a name like "section" + { \bool_if:NT\l_@@_sec_Sect_bool - { - \@@_sec_end:n {\cs_if_exist_use:c{toclevel@#1}+0} + { + \@@_sec_end:n {\cs_if_exist_use:c{toclevel@#1}+0} \@@_sec_begin:nn {\cs_if_exist_use:c{toclevel@#1}+0}{tag=Sect} - } + } \tl_set:Nn\l_@@_para_tag_tl{#1} - } - ,sec-start .value_required:n = true + } + ,sec-start .value_required:n = true ,sec-split-para .code:n = {\@@_tool_para_split:} ,restore-para .code:n = {\@@_setup_restore_para_default:} - ,sec-stop .code:n = + ,sec-stop .code:n = { \par\@@_sec_end:n {\cs_if_exist_use:c{toclevel@#1}+0} } - ,sec-stop .value_required:n = true + ,sec-stop .value_required:n = true ,sec-add-grouping .bool_set:N = \l_@@_sec_Sect_bool - } + } % \end{macrocode} % % % \section{Sectioning commands} -% +% % \subsection{\cs{part} and \cs{chapter}} % -% \cs{part} and \cs{chapter} are defined by the classes. -% To tag them we redefine the user commands. +% \cs{part} and \cs{chapter} are defined by the classes. +% To tag them we redefine the user commands. % This will probably break with various classes and with titlesec. % The tagging inside relies on the para tagging. % We do not yet use keyval in the optional argument, as this requires latex-dev @@ -475,34 +478,34 @@ % This adds a manual target if the part is unnumbered or starred. % It replaces the hyperref patches. % \begin{macrocode} - \bool_lazy_any:nT + \bool_lazy_any:nT { - { #1 } - { - \int_compare_p:nNn {\c@secnumdepth}<{-1} - } - } + { #1 } + { + \int_compare_p:nNn {\c@secnumdepth}<{-1} + } + } { \MakeLinkTarget[part]{} } % \end{macrocode} -% The main call to the underlying commands. +% The main call to the underlying commands. % \begin{macrocode} - \IfBooleanTF + \IfBooleanTF {#1} { \@spart {#3} } { \@part [{#2}]{#3} } % \end{macrocode} % and now the closing command for the tagging of the title. % \begin{macrocode} - \tag_tool:n {sec-stop-part} + \tag_tool:n {sec-stop-part} } - } + } } % \end{macrocode} % Redefinitions for book and report % \begin{macrocode} - { + { \RenewDocumentCommand\chapter{ s O{#3} m } { \if@openright\cleardoublepage\else\clearpage\fi @@ -512,42 +515,42 @@ % \end{macrocode} % This are the tagging commands needed at the begin. They open a Sect structure % and the structure for the title of the heading. -% \begin{macrocode} - \tag_tool:n { sec-start-chapter= #2 } +% \begin{macrocode} + \tag_tool:n { sec-start-chapter= #2 } % \end{macrocode} % This adds a manual target if the chapter is unnumbered or starred. % It replaces the hyperref patches. -% \begin{macrocode} - \bool_lazy_any:nT +% \begin{macrocode} + \bool_lazy_any:nT { - { #1 } - { - \int_compare_p:nNn {\c@secnumdepth}<{0} - } + { #1 } + { + \int_compare_p:nNn {\c@secnumdepth}<{0} + } { %in book target also needed in frontmatter - \bool_lazy_and_p:nn - { \cs_if_exist_p:c { @mainmattertrue } } + \bool_lazy_and_p:nn + { \cs_if_exist_p:c { @mainmattertrue } } { ! \legacy_if_p:n { @mainmatter } } } - } + } { % \end{macrocode} % The relation target-struct is stored internally by the MakeLinkTarget commands % \begin{macrocode} \MakeLinkTarget[chapter]{} - } + } % \end{macrocode} -% The main call to the underlying commands. -% \begin{macrocode} - \IfBooleanTF +% The main call to the underlying commands. +% \begin{macrocode} + \IfBooleanTF {#1} { \@schapter {#3} } { \@chapter [{#2}]{#3} } % \end{macrocode} % and now the closing command for the tagging of the title. -% \begin{macrocode} - \tag_tool:n {sec-stop-chapter} +% \begin{macrocode} + \tag_tool:n {sec-stop-chapter} } % \end{macrocode} % and similar for \cs{part} @@ -570,67 +573,67 @@ % \end{macrocode} % This are the tagging commands needed at the begin. They open a Part structure % and the structure for the title of the heading. -% \begin{macrocode} - \tag_tool:n {sec-start-part=#2} +% \begin{macrocode} + \tag_tool:n {sec-start-part=#2} % \end{macrocode} % This adds a manual target if the part is unnumbered or starred. % It replaces the hyperref patches. -% \begin{macrocode} - \bool_lazy_any:nT +% \begin{macrocode} + \bool_lazy_any:nT { - { #1 } - { - \int_compare_p:nNn {\c@secnumdepth}<{-1} - } + { #1 } + { + \int_compare_p:nNn {\c@secnumdepth}<{-1} + } { %in book target also needed in frontmatter - \bool_lazy_and_p:nn - { \cs_if_exist_p:c { @mainmattertrue } } + \bool_lazy_and_p:nn + { \cs_if_exist_p:c { @mainmattertrue } } { ! \legacy_if_p:n { @mainmatter } } } - } + } { \MakeLinkTarget[part]{} } % \end{macrocode} -% The main call to the underlying commands. -% \begin{macrocode} - \IfBooleanTF +% The main call to the underlying commands. +% \begin{macrocode} + \IfBooleanTF {#1} { \@spart {#3} } { \@part [{#2}]{#3} } % \end{macrocode} % and now the closing command for the tagging of the title. -% \begin{macrocode} - \tag_tool:n{sec-stop-part} - } +% \begin{macrocode} + \tag_tool:n{sec-stop-part} + } } - } + } % \end{macrocode} % % \subsection{Sectioning commands based on \cs{@startsection}} -% -% The tagging relies again on the para tagging: +% +% The tagging relies again on the para tagging: % we simply exchange the tag name by the one given as \#1. % This assumes that a tag with the name of the sectioning type is defined. -% We don't try to pass the title, this will be done together with +% We don't try to pass the title, this will be done together with % the new keyval handling in the user command. -% +% % \subsubsection{Hyperref code} -% hyperref has to insert anchors. If the sectioning is numbered this is done by -% \cs{refstepcounter} (and so in vmode). For unnumbered section hyperref -% injects the anchor in hmode before the text, it also inserts a -% kern to compensate the indent. -% +% hyperref has to insert anchors. If the sectioning is numbered this is done by +% \cs{refstepcounter} (and so in vmode). For unnumbered section hyperref +% injects the anchor in hmode before the text, it also inserts a +% kern to compensate the indent. +% % This means that the target of numbered and unnumbered sectioning commands -% differ, both regarding the location and in relation to the +% differ, both regarding the location and in relation to the % tagging structure: The anchor from the \cs{refstepcounter} is outside of % the structure created by the heading title if the para tags are used, -% while the other anchors are inside and so the structure destinations are different. -% +% while the other anchors are inside and so the structure destinations are different. +% % We unify this by suppressing the anchor from the refstepcounter. % Also we only go back if the indent is positive. -% +% % At first suppress all hyperref patches related to sectioning: % \begin{macrocode} \def\hyper@nopatch@sectioning{} @@ -638,13 +641,15 @@ % % \begin{macro}{\@hyp@section@target@nnn} % A simple internal command. There is no need for something public, -% as packages defining their own version of \cs{@startsection} will -% probably need something slightly different based on \cs{MakeLinkTarget}. +% as packages defining their own version of \cs{@startsection} will +% probably need something slightly different based on \cs{MakeLinkTarget}. +% \changes{v0.84i}{2025/02/13}{Wrapped all use inside \cs{NoCaseChange}, +% tagging-project issue \#787} % \begin{macrocode} \cs_new_protected:Npn \@hyp@section@target@nnn #1 #2 #3 %#1 optarg #2 name/counter, #3 indent { \makebox[0pt][l] - { + { \skip_set:Nn \@tempskipa {#3} \dim_compare:nNnF {\@tempskipa}<{0pt}{\kern-\@tempskipa} \MakeLinkTarget#1{#2} @@ -652,7 +657,7 @@ } % \end{macrocode} % \end{macro} -% +% % \subsection{Adaption of the heading commands} % We add to \cs{@startsection} the commands to open the \texttt{Sect} % structure and to change the para tag. @@ -674,19 +679,23 @@ \tag_tool:n { sec-start=#1}%new \@ifstar {\@ssect{#3}{#4}{#5}{#6}}% - {\@dblarg{\@sect{#1}{#2}{#3}{#4}{#5}{#6}}}} + {\@dblarg{\@sect{#1}{#2}{#3}{#4}{#5}{#6}}}} % \end{macrocode} -% To be able to correctly tag the number we need a special +% To be able to correctly tag the number we need a special % \cs{@hangfrom} variant. This is a bit tricky: -% As the paragraph starts after the \cs{setbox} luatex attributes +% As the paragraph starts after the \cs{setbox} luatex attributes % are not set yet and numbers are unmarked if one doesn't pay attention. % The code assumes that we are in vmode! +% 2025-01-20: Until the redefinition is gone from tagpdf we have to empty the hook: +% \begin{macrocode} +\RemoveFromHook{package/latex-lab-testphase-sec/after}[tagpdf] +% \end{macrocode} % \begin{macrocode} \cs_new_protected:Npn \@kernel@tag@hangfrom #1 { \tagstructbegin{tag=\l_@@_para_tag_tl} \cs_if_exist_use:N \@@_gincr_para_begin_int: - \tagstructbegin{tag=Lbl} + \tagstructbegin{tag=section-number} \setbox\@tempboxa \hbox { @@ -696,12 +705,12 @@ \bool_lazy_and:nnT {\tag_if_active_p:} {\g_@@_mode_lua_bool} - {\tagmcbegin{tag=Lbl}} + {\tagmcbegin{tag=section-number}} {#1} } % \end{macrocode} % We stop tagging now, to avoid that the \cs{noindent} triggers -% the paratagging. We do not disable paratagging completely, to +% the paratagging. We do not disable paratagging completely, to % avoid that the numbering goes wrong. % \begin{macrocode} \tag_suspend:n{hangfrom} @@ -714,31 +723,31 @@ % \end{macrocode} % This command is used to tag the numbers of runin. We do not try % to avoid the empty container from the paratagging, this would require -% more changes. +% more changes. % \begin{macrocode} \cs_new_protected:Npn \@kernel@tag@svsec { - \tag_mc_end_push: - \tag_struct_begin:n{tag=Lbl} - \tag_mc_begin:n{} + \tag_mc_end_push: + \tag_struct_begin:n{tag=section-number} + \tag_mc_begin:n{} \@svsec \tag_mc_end: \tag_struct_end: \tag_mc_begin_pop:n{} - } + } % \end{macrocode} % \cs{@sect} is only changed to replace the hyperref patches % and to use the new \cs{@kernel@tag@hangfrom} and \cs{@kernel@tag@svsec} % \begin{macrocode} %<@@=> -\def\@sect#1#2#3#4#5#6[#7]#8{% +\def\@sect#1#2#3#4#5#6[#7]#8{% \ifnum #2>\c@secnumdepth - \def\@svsec{\@hyp@section@target@nnn{[section]}{}{#3}} + \def\@svsec{\NoCaseChange{\@hyp@section@target@nnn{[section]}{}{#3}}} \else \LinkTargetOff \refstepcounter{#1}% \LinkTargetOn - \protected@edef\@svsec{\@hyp@section@target@nnn{}{#1}{#3}\@seccntformat{#1}\relax}% + \protected@edef\@svsec{\NoCaseChange{\@hyp@section@target@nnn{}{#1}{#3}}\@seccntformat{#1}\relax}% \fi \@tempskipa #5\relax \ifdim \@tempskipa>\z@ @@ -747,9 +756,9 @@ #6{% \ifnum #2>\c@secnumdepth \@hangfrom {\hskip #3\relax\@svsec}% - \else + \else \@kernel@tag@hangfrom{\hskip #3\relax\@svsec}% - \fi + \fi \interlinepenalty \@M #8\@@par}% \endgroup \csname #1mark\endcsname{#7}% @@ -763,7 +772,7 @@ #6{\hskip #3\relax \ifnum #2>\c@secnumdepth \@svsec - \else + \else \@kernel@tag@svsec \fi #8}% \csname #1mark\endcsname{#7}% @@ -783,16 +792,16 @@ \begingroup \tagtool{para-flattened=true} #4{% - \@hangfrom{\hskip #1\relax\@hyp@section@target@nnn{[section]}{}{#1}}% + \@hangfrom{\hskip #1\relax\NoCaseChange{\@hyp@section@target@nnn{[section]}{}{#1}}}% \interlinepenalty \@M #5\@@par}% \endgroup \else - \def\@svsechd{#4{\hskip #1\relax\@hyp@section@target@nnn{[section]}{}{#3}\relax #5}}% + \def\@svsechd{#4{\hskip #1\relax\NoCaseChange{\@hyp@section@target@nnn{[section]}{}{#3}}\relax #5}}% \fi - \@xsect{#3}} + \@xsect{#3}} % \end{macrocode} % At last \cs{@xsect} needs code in two places. For display headings it has to -% restore the default para code, for run in headings it has to separated the +% restore the default para code, for run in headings it has to separated the % heading from the following text. % \begin{macrocode} \def\@xsect#1{% @@ -820,14 +829,14 @@ \everypar{}% \fi}% \fi - \ignorespaces} -% + \ignorespaces} +% % \end{macrocode} % \begin{macrocode} %<*latex-lab> \ProvidesFile{sec-latex-lab-testphase.ltx} - [\ltlabsecdate\space v\ltlabsecversion\space latex-lab wrapper sec] + [\ltlabsecdate\space v\ltlabsecversion\space latex-lab wrapper sec] \RequirePackage{latex-lab-testphase-sec} % % \end{macrocode} diff --git a/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-table.dtx b/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-table.dtx index c65667e8ed3..c10352f096a 100644 --- a/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-table.dtx +++ b/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-table.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -%% File: latex-lab-table.dtx (C) Copyright 2023-2024 LaTeX Project +%% File: latex-lab-table.dtx (C) Copyright 2023-2025 LaTeX Project % % It may be distributed and/or modified under the conditions of the % LaTeX Project Public License (LPPL), either version 1.3c of this @@ -16,8 +16,8 @@ % % for those people who are interested or want to report an issue. % -\def\ltlabtbldate{2024-09-18} -\def\ltlabtblversion{0.85n} +\def\ltlabtbldate{2025-01-05} +\def\ltlabtblversion{0.85p} %<*driver> \documentclass{l3doc} \EnableCrossrefs @@ -138,17 +138,24 @@ % as a layout to ensure that the content is properly aligned % or because it is a not yet (fully) supported table structure, % the tagging can be disabled with -% \verb|\tagpdfsetup{table/tagging=false}| or with \verb|\tagpdfsetup{table/tagging=presentation}|% +% \verb|\tagpdfsetup{table/tagging=false}| or changed with +% \verb|\tagpdfsetup{table/tagging=presentation}| or \verb|\tagpdfsetup{table/tagging=div}|% % \footnote{The key has been renamed. The old name `table-tagging` still works but is % deprecated. The value \texttt{presentation} refers to the ARIA role \enquote{presentation}.} % The first option disables the table tagging code and the content of the tabular % is then treated more or less like running text. This works ok for simple tables using % only hmode-cells (l/c/r) with normal text content, but fails if the table uses vmode-cells -% (p/m/b). In such cases the second option works better: it keeps the tagging code active -% but changes the tag names to \texttt{Div} and the grouping structure \texttt{NonStruct}. It also -% (re)sets the \texttt{table/header-rows} key to empty. -% The key should currently only be used in a group as there is no key (yet) to reset to the default -% tag names. +% (p/m/b). In such cases the second option works better: it keeps the tagging code active, +% but adds an ARIA-role as attribute to indicate that this is a presentation table. +% When deriving to html this gives the best result +% as it keeps the layout. +% The last option changes the tag names and creates simply a number of DIV structures. +% Both options also +% (re)set the \texttt{table/header-rows} and \texttt{table/header-columns} keys to empty. +% +% To reset to the normal tagging in the current group (e.g. inside a presentation +% table) one can use \verb|\tagpdfsetup{table/tagging=true}| (and if needed reenable the headers). +% % % \subsection{Header rows and columns} % There is some basic support\footnote{This is not meant to be the @@ -228,7 +235,8 @@ % \item Not every table should be tagged as a Table structure, often they are % only used as layout help, e.g. to align authors in a title pages. In such uses % the tagging of the table must be deactivated with \verb|\tagpdfsetup{table/tagging=false}| -% or \verb|\tagpdfsetup{table/tagging=presentation}|. +% or changed with \verb|\tagpdfsetup{table/tagging=presentation}| or +% \verb|\tagpdfsetup{table/tagging=div}|. % % \item Only simple header rows and columns are currently supported. Complex headers with % subheaders will be handled later as that needs some syntax changes. Tables @@ -359,7 +367,7 @@ % The following two sockets are defined in lttagging, but we check % for their existence until the release 11/2024. % \begin{macrocode} -\str_if_exist:cF { l__socket_tagsupport/tbl/init/celldata_plug_str } +\socket_if_exist:nF {tagsupport/tbl/init/celldata} { \NewSocket{tagsupport/tbl/init/celldata}{0} \NewSocket{tagsupport/tbl/restore/celldata}{0} @@ -827,9 +835,6 @@ % \end{macrocode} % \end{plugdecl} % -% -% -% % \begin{plugdecl}{Table} % \begin{macrocode} \NewSocketPlug{tagsupport/tbl/hmode/begin}{Table} @@ -847,6 +852,26 @@ } % \end{macrocode} % \end{plugdecl} +% +% \begin{plugdecl}{LayoutTable} +% \changes{v0.85p}{2025/01/05}{new plugs for layout tables (tagging/778)} +% This plug is meant for presentation tables, it sets the ARIA role. +% \begin{macrocode} +\NewSocketPlug{tagsupport/tbl/hmode/begin}{LayoutTable} + { + \tag_mc_end_push: +% \end{macrocode} +% Close the P-chunk. This assumes that para-tagging is active. +% For nested tables that is not necessarily true, so we test for it. +% \begin{macrocode} + \bool_lazy_and:nnT + { \bool_if_exist_p:N \l__tag_para_bool } { \l__tag_para_bool } + { \tag_struct_end:n { text } } + \tag_struct_begin:n {tag=\l_@@_tabletag_tl,attribute-class=ARIA-role-presentation} + \tl_gset:Ne \g_@@_struct_table_tl { \tag_get:n {struct_num} } + } +% \end{macrocode} +% \end{plugdecl} % % \begin{plugdecl}{Table} % \begin{macrocode} @@ -874,6 +899,17 @@ } % \end{macrocode} % \end{plugdecl} +% +% \begin{plugdecl}{Table} +% \begin{macrocode} +\NewSocketPlug{tagsupport/tbl/vmode/begin}{LayoutTable} + { + \tag_struct_begin:n {tag=\l_@@_tabletag_tl,attribute-class=ARIA-role-presentation} + \tl_gset:Ne \g_@@_struct_table_tl { \tag_get:n {struct_num} } + } +% \end{macrocode} +% \end{plugdecl} +% % % \begin{plugdecl}{Table} % \begin{macrocode} @@ -1015,26 +1051,58 @@ } % \end{macrocode} % \end{macro} +% +% \begin{macro}{\@@_init_tagnames_default:,\@@_init_tagnames_div:} +% These commands are used to switch the tagnames. +% \begin{macrocode} +\cs_new_protected:Npn\@@_init_tagnames_default: + { + \tl_set:Nn\l_@@_rowtag_tl {TR} + \tl_set:Nn\l_@@_pcelltag_tl {TD} + \tl_set:Nn\l_@@_celltag_tl {TD} + \tl_set:Nn\l_@@_tabletag_tl {Table} + } + +\cs_new_protected:Npn\@@_init_tagnames_div: + { + \tl_set:Nn\l_@@_rowtag_tl {NonStruct} + \tl_set:Nn\l_@@_pcelltag_tl {NonStruct} + \tl_set:Nn\l_@@_celltag_tl {text} + \tl_set:Nn\l_@@_tabletag_tl {Div} + } +% \end{macrocode} +% \end{macro} % \begin{macrocode} % See tagpdfsetup-keys.md in tagpdf/doc for the naming scheme. \keys_define:nn { __tag / setup } { table/tagging .choices:nn = { true, on } - { \__tag_tbl_enable: }, + { + \__tag_tbl_enable: + \@@_init_tagnames_default: + }, table/tagging .choices:nn = { false, off } { \__tag_tbl_disable: }, table/tagging .choice:, table/tagging / presentation .code:n = - { - \__tag_tbl_enable: - \tl_set:Nn\l_@@_rowtag_tl {NonStruct} - \tl_set:Nn\l_@@_pcelltag_tl {NonStruct} - \tl_set:Nn\l_@@_celltag_tl {text} - \tl_set:Nn\l_@@_tabletag_tl {Div} - \clist_clear:N \l_@@_header_rows_clist - \clist_clear:N \l_@@_header_columns_clist - }, + { + \__tag_tbl_enable: + \@@_init_tagnames_default: + \AssignSocketPlug{tagsupport/tbl/hmode/begin}{LayoutTable} + \AssignSocketPlug{tagsupport/tbl/vmode/begin}{LayoutTable} + \clist_clear:N \l_@@_header_rows_clist + \clist_clear:N \l_@@_header_columns_clist + }, + table/tagging / div .code:n = + { + \__tag_tbl_enable: + \@@_init_tagnames_div: + \AssignSocketPlug{tagsupport/tbl/hmode/begin}{LayoutTable} + \AssignSocketPlug{tagsupport/tbl/vmode/begin}{LayoutTable} + \clist_clear:N \l_@@_header_rows_clist + \clist_clear:N \l_@@_header_columns_clist + }, table/tagging .default:n = true, table/tagging .initial:n = true } @@ -1071,6 +1139,7 @@ % At first we define attributes for the three standard cases: % We delay to begin document % as we can't know if tagpdf is already loaded. +% \changes{v0.85p}{2025/01/05}{add ARIA-role for presentation (tagging/778)} % \begin{macrocode} \AddToHook{begindocument} { @@ -1084,6 +1153,8 @@ {TH-row}{/O /Table /Scope /Row}, role/new-attribute = {TH-both}{/O /Table /Scope /Both}, + role/new-attribute = + {ARIA-role-presentation}{/O /ARIA-1.1/role (presentation)} } % \end{macrocode} % diff --git a/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-testphase.dtx b/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-testphase.dtx index 1134654cd6b..7623da48448 100644 --- a/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-testphase.dtx +++ b/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-testphase.dtx @@ -1,7 +1,7 @@ % \iffalse meta-comment % %% File: latex-lab-testphase.dtx -% Copyright (C) 2021-2024 The LaTeX Project +% Copyright (C) 2021-2025 The LaTeX Project % % It may be distributed and/or modified under the conditions of the % LaTeX Project Public License (LPPL), either version 1.3c of this @@ -145,11 +145,13 @@ % \begin{macrocode} %<*math-package> \ProvidesPackage{latex-lab-testphase-math} - [2023-07-20 v0.8a code related to the math tagging] + [2025-01-24 v0.8c code related to the math tagging] \input{latex-lab-math.ltx} -\input{latex-lab-amsmath.ltx} -\input{latex-lab-mathtools.ltx} +\AddToHook{package/amsmath/after}{\input{latex-lab-amsmath.ltx}} +\AddToHook{package/mathtools/after}{\input{latex-lab-mathtools.ltx}} \input{latex-lab-mathpkg.ltx} +\input{latex-lab-mathintent.ltx} +\AddToHook{package/unicode-math/after}{\input{latex-lab-unicode-math.ltx}} % % \end{macrocode} % \Finale diff --git a/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-text.dtx b/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-text.dtx index 7ca99191dcd..3e8b35aeb68 100644 --- a/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-text.dtx +++ b/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-text.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -%% File: latex-lab-text.dtx (C) Copyright 2023-2024 LaTeX Project +%% File: latex-lab-text.dtx (C) Copyright 2023-2025 LaTeX Project % % It may be distributed and/or modified under the conditions of the % LaTeX Project Public License (LPPL), either version 1.3c of this @@ -16,11 +16,16 @@ % % for those people who are interested or want to report an issue. % -\def\ltlabtextdate{2024-09-18} -\def\ltlabtextversion{0.85b} +\def\ltlabtextdate{2025-02-18} +\def\ltlabtextversion{0.85e} %<*driver> \documentclass{l3doc} +% for the phoneme argument +\DeclareUnicodeCharacter{02C8}{\texttt{\textquotesingle}} +\DeclareUnicodeCharacter{02D0}{\texttt{:}} +\DeclareUnicodeCharacter{025B}{$\epsilon$} + \EnableCrossrefs \CodelineIndex \begin{document} @@ -51,13 +56,13 @@ % % The followings contains small changes to improve the tagging of % (inline) text commands. -% +% % While the tagging of the \LaTeX{} logo is quite straightforward, tagging of % \cs{emph} as \texttt{EM} and \cs{textbf} as \texttt{Strong} % can have unwanted side-effect as both tags are inline tags and so not every inner % structure is allowed. Probably both commands will need an optional argument or a % starred variant which suppress the tagging. -% +% % \section{Implementation} % \begin{macrocode} %<*package> @@ -76,12 +81,12 @@ { \mode_leave_vertical: \tag_mc_end_push: - \tag_struct_begin:n{tag=Span,actualtext=LaTeX} + \tag_struct_begin:n{tag=Span,actualtext=LaTeX,phoneme=[ˈlaːtɛx]} \tag_mc_begin:n{} \tag_suspend:n{LaTeX} } \AddToHook{cmd/LaTeX/after} - { + { \tag_resume:n{LaTeX} \tag_mc_end: \tag_struct_end: @@ -102,7 +107,7 @@ } % \end{macrocode} % -% \subsection{Emphasizing} +% \subsection{Emphasizing} % We tag \cs{emph} but leave commands like \cs{textbf} alone, as it is not % clear if they always have a semantic meaning. % \begin{macrocode} @@ -121,6 +126,77 @@ \tag_mc_begin_pop:n{} } % \end{macrocode} +% +% \subsection{cs{mbox}} +% When used in math and when luamml is active \cs{mbox} has to be correctly annoted. +% For this we add a socket that luamml can activate. +% We test for the socket until 2025-06-01. +% \changes{v0.85c}{2024-12-03}{Add luamml socket to \cs{mbox}} +% \begin{macrocode} +\DeclareRobustCommand\mbox[1] + { + \leavevmode + \tag_socket_use:nnn {math/luamml/hbox} + {}{ \hbox{#1} } + } +% \end{macrocode} +% And the same for \cs{makebox} +% \begin{macrocode} +\long\def\@imakebox[#1][#2]#3{% + \tag_socket_use:nnn {math/luamml/hbox}{} + { + \@begin@tempboxa\hbox{#3}% + \setlength\@tempdima{#1}% support calc + \hb@xt@\@tempdima{% + \expandafter\ifx\csname bm@#2\endcsname\relax + \bm@c + \@latex@warning{Unexpected~alignment~#2}% + \else + \csname bm@#2\endcsname + \fi}% + \@end@tempboxa + }} +% \end{macrocode} +% +% \subsection{phantom commands} +% +% In text mode we do not want the content of a phantom command to create a structure, +% so we suspend tagging +% \changes{0.85d}{2025-01-27}{Suspend tagging in \cs{makeph@nt}} +% TODO: consider if it makes sense to set measuring to true instead. +% \cs{mathsm@sh} is redefined in latex-lab-math. +% \begin{macro}{\makeph@nt} +% \begin{macrocode} +\def\makeph@nt#1{% + \setbox\z@\hbox + {\SuspendTagging{\makeph@nt}% + \color@begingroup#1\color@endgroup\ResumeTagging{\makeph@nt}}\finph@nt} +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{\@kernel@mathph@nt,\mathph@nt} +% \begin{macrocode} +\def\@kernel@mathph@nt#1#2{% + \setbox\z@\hbox{\SuspendTagging{\mathph@nt}$\m@th#1{#2}$\ResumeTagging{\mathph@nt}}\finph@nt} +\def\mathph@nt#1#2 + { + \setbox \z@ = \hbox { + $ + \m@th + #1 + { +% nested phantoms should not be processed by luamml + \let\mathph@nt\@kernel@mathph@nt + #2 + } + \UseTaggingSocket{math/luamml/save/nNn}{{mathphant} #1 {mphantom}} + $ + } + \UseTaggingSocket{math/luamml/finph@nt}{}{\finph@nt} + } +% \end{macrocode} +% \end{macro} % \begin{macrocode} % % \end{macrocode} diff --git a/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-title.dtx b/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-title.dtx index 757bb284a45..cd6a0e6e679 100644 --- a/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-title.dtx +++ b/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-title.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -%% File: latex-lab-title.dtx (C) Copyright 2023-2024 LaTeX Project +%% File: latex-lab-title.dtx (C) Copyright 2023-2025 LaTeX Project % % It may be distributed and/or modified under the conditions of the % LaTeX Project Public License (LPPL), either version 1.3c of this @@ -16,7 +16,7 @@ % % for those people who are interested or want to report an issue. % -\def\ltlabtitledate{2024-02-09} +\def\ltlabtitledate{2024-12-12} \def\ltlabtitleversion{0.85c} %<*driver> @@ -106,7 +106,7 @@ % \begin{itemize} % \item Writing into the Info dictionary needs to convert the input into a PDF string. % This is here done with a simple version of hyperref's \cs{pdfstringdef}, similar code -% exist also in in the generic hyperref driver. This should be moved into a better place +% exist also in the generic hyperref driver. This should be moved into a better place % module. % % \item Is it sensible to enhance \cs{author} and \cs{title} with an optional argument as done here? diff --git a/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-toc-hyperref-changes.dtx b/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-toc-hyperref-changes.dtx index ff9dd950b76..ab2a35849dc 100644 --- a/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-toc-hyperref-changes.dtx +++ b/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-toc-hyperref-changes.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -%% File: latex-lab-toc-hyperref-changes.dtx (C) Copyright 2022-2024 LaTeX Project +%% File: latex-lab-toc-hyperref-changes.dtx (C) Copyright 2022-2025 LaTeX Project % % It may be distributed and/or modified under the conditions of the % LaTeX Project Public License (LPPL), either version 1.3c of this diff --git a/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-toc-kernel-changes.dtx b/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-toc-kernel-changes.dtx index 2934a261685..7722a2a64a9 100644 --- a/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-toc-kernel-changes.dtx +++ b/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-toc-kernel-changes.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -%% File: latex-lab-toc-kernel-changes.dtx (C) Copyright 2022-2024 LaTeX Project +%% File: latex-lab-toc-kernel-changes.dtx (C) Copyright 2022-2025 LaTeX Project % % It may be distributed and/or modified under the conditions of the % LaTeX Project Public License (LPPL), either version 1.3c of this @@ -17,8 +17,8 @@ % for those people who are interested or want to report an issue. % % dates for latex-lab-kernel-changes.sty (pulled from various sources, see ins) -\def\ltlabkerneldate{2024-07-11} -\def\ltlabkernelversion{0.85d} +\def\ltlabkerneldate{2024-12-27} +\def\ltlabkernelversion{0.85e} %<*driver> \documentclass{l3doc} \EnableCrossrefs @@ -154,7 +154,7 @@ % the next main release, so for now we test if they are in the % format and if not define them now. % \begin{macrocode} -\str_if_exist:cF { l__socket_tagsupport/toc/contentsline/before_plug_str } +\socket_if_exist:nF {tagsupport/toc/contentsline/before} { \NewSocket{tagsupport/toc/contentsline/before}{1} \NewSocket{tagsupport/toc/contentsline/after}{1} @@ -203,7 +203,7 @@ % the next main release, so for now we test if they are in the % format and if not define them now. % \begin{macrocode} -\str_if_exist:cF { l__socket_tagsupport/toc/starttoc/before_plug_str } +\socket_if_exist:nF {tagsupport/toc/starttoc/before} { \NewSocket{tagsupport/toc/starttoc/before}{1} \NewSocket{tagsupport/toc/starttoc/after}{1} @@ -270,7 +270,7 @@ % the next main release, so for now we test if they are in the % format and if not define them now. % \begin{macrocode} -\str_if_exist:cF { l__socket_tagsupport/toc/leaders/before_plug_str } +\socket_if_exist:nF {tagsupport/toc/leaders/before} { \NewSocket{tagsupport/toc/leaders/before}{0} \NewSocket{tagsupport/toc/leaders/after}{0} diff --git a/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-toc.dtx b/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-toc.dtx index 15dd403bdf1..98a6621b4f2 100644 --- a/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-toc.dtx +++ b/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-toc.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -%% File: latex-lab-toc.dtx (C) Copyright 2022-2024 LaTeX Project +%% File: latex-lab-toc.dtx (C) Copyright 2022-2025 LaTeX Project % % It may be distributed and/or modified under the conditions of the % LaTeX Project Public License (LPPL), either version 1.3c of this @@ -16,7 +16,7 @@ % % for those people who are interested or want to report an issue. % -\def\ltlabtocdate{2024-09-26} +\def\ltlabtocdate{2024-12-27} \def\ltlabtocversion{0.85e} %<*driver> \documentclass{l3doc} @@ -114,7 +114,7 @@ % Defined by tagpdf. % \end{variable} % -% We have to to store the relation between +% We have to store the relation between % destination names/\cs{@currentHref} and structure numbers. % With a current kernel this is done in \cs{refstepcounter} % through the |recordtarget| socket. If that doesn't exist yet @@ -341,7 +341,7 @@ % \end{plugdecl} % % \subsection{Tagging of the content} -% This need discussion. +% This needs discussion. % % \begin{macrocode} \AddToHook{contentsline/text/before}[tagpdf]{% diff --git a/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-unicode-math.dtx b/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-unicode-math.dtx new file mode 100644 index 00000000000..5895a07c29d --- /dev/null +++ b/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab-unicode-math.dtx @@ -0,0 +1,175 @@ +% \iffalse meta-comment +% +%% File: latex-lab-unicode-math.dtx +% +% Copyright (C) 2024 The LaTeX Project +% +% It may be distributed and/or modified under the conditions of the +% LaTeX Project Public License (LPPL), either version 1.3c of this +% license or (at your option) any later version. The latest version +% of this license is in the file +% +% https://www.latex-project.org/lppl.txt +% +% +% The development version of the bundle can be found below +% +% https://github.com/latex3/latex2e/required/latex-lab +% +% for those people who are interested or want to report an issue. +% +%<*driver> +\documentclass{l3doc} +\EnableCrossrefs +\CodelineIndex +\begin{document} + \DocInput{latex-lab-unicode-math.dtx} +\end{document} +% +% +% \fi +% +% +% \title{The \texttt{latex-lab-unicode-math} code\thanks{}} +% \author{\LaTeX{} Project} +% +% \maketitle +% +% \newcommand\fmi[1]{\begin{quote} TODO: \itshape #1\end{quote}} +% \newcommand\NEW[1]{\marginpar{\mbox{}\hfill\fbox{New: #1}}} +% \providecommand\class[1]{\texttt{#1.cls}} +% \providecommand\pkg[1]{\texttt{#1}} +% \providecommand\hook[1]{\texttt{#1}} +% +% \begin{abstract} +% \end{abstract} +% +% \tableofcontents +% +% \section{Introduction} +% +% This file implements temporary adaptations to the \pkg{unicode-math} package needed for +% the tagging project. +% +% \MaybeStop{\setlength\IndexMin{200pt} \PrintIndex } +% +% \section{The Implementation} +% +% \begin{macrocode} +%<@@=math> +% \end{macrocode} +% +% \begin{macrocode} +%<*kernel> +% \end{macrocode} +% +% \subsection{File declaration} +% \begin{macrocode} +\ProvidesExplFile + {latex-lab-unicode-math.ltx} + {2025-02-00} + {0.1b} + {unicode-math adaptions} +% \end{macrocode} +% \subsection{Sockets} +% Unicode glyphs like a root sign should be marked as artifacts to avoid duplication +% in derivation if mathml structure elements are used. This is done with a luamml socket. +% \begin{macrocode} +\str_if_exist:cF { l__socket_tagsupport/math/luamml/artifact_plug_str } + { + \NewSocket{tagsupport/math/luamml/artifact}{0} + } +% \end{macrocode} +% +% \subsection{Delimiters} +% +% Extensible delimiters set with \cs{bigl}, \cs{Bigl}, etc.\ use boxes in their +% definitions. This gives wrong structure elements if used with luamml. +% We therefore redefine the internal amsmath command +% to make use of the luatex primitive. +% \changes{v0.1b}{2025-02-10}{redefine \cs{bBigg@}} +% \begin{macro}{\bBigg@} +% \begin{macrocode} +\def\bBigg@#1#2 + {{\ensuremath {\Uvextensible height~#1 \big@size axis~exact~#2}}} +% \end{macrocode} +% \end{macro} +% +% \subsection{varlim-commands} +% +% The commands \cs{varinjlim}, \cs{varliminf}, \cs{varprojlim} and \cs{varlimisup} +% use boxes that confuse luamml. We redefine them to use luatex primitives. This slightly +% changes the look! +% \begin{macrocode} +\protected\def\varinjlim + {{\Udelimiterunder 0 "2192 {\qopname\relax o{\luamml_ignore:\mathstrut lim}}}} +\protected\def\varprojlim + {{\Udelimiterunder 0 "2190 {\qopname\relax o{\luamml_ignore:\mathstrut lim}}}} +\protected\def\varlimsup + {{\overline{\qopname\relax o{\luamml_ignore:\mathstrut lim}}}} +\protected\def\varliminf + {{\underline{\qopname\relax o{lim}}}} +% \end{macrocode} +% +% \subsection{Roots} +% Roots have two problems in tagging: At first, if mathml structure elements are +% used, the root symbol is given twice: as Unicode char and through the \texttt{msqrt} +% or \texttt{mroot} mathml structure element. In derivation this leads to duplications. +% The glyph should be tagged as artifact in this case. +% At second, in some cases complicated box constructions instead of the +% luatex primitives are used which leads to wrong tagging. +% We redefine \cs{sqrtsign} and add the artifact socket for the first problem. +% +% TODO: A root with empty argument should be tagged differently. +% \begin{macrocode} +\AtBeginDocument + { + \cs_gset_protected_nopar:Npn \sqrtsign + { + \tag_socket_use:n {math/luamml/artifact} + \tex_Uradical:D \symoperators "0221A\scan_stop: + } + } +% \end{macrocode} +% TODO: Tagging of \verb+\sqrt[\leftroot{-2}\uproot{2}\beta]{y}+ is currently incorrect, +% but setting \cs{Umathradicaldegreeraise} and \cs{Umathradicaldegreeafter} does not +% work, so another solution must be found (or a warning must be issued). +% \begin{macrocode} +\cs_set_nopar:Npn \plainroot@ #1 \of #2 + { + \bool_if:nTF + { + \__um_int_if_zero_p:n \uproot@ && \__um_int_if_zero_p:n \leftroot@ + } + { + \tag_socket_use:n {math/luamml/artifact} + \Uroot \c__um_radical_sqrt_tl { #1 } { #2 } + } + { + \hbox_set:Nn \rootbox + { + \c_math_toggle_token \m@th + \scriptscriptstyle { #1 } + \c_math_toggle_token + } + \mathchoice + { \r@@@@t \displaystyle { #2 } } + { \r@@@@t \textstyle { #2 } } + { \r@@@@t \scriptstyle { #2 } } + { \r@@@@t \scriptscriptstyle { #2 } } + } + \c_group_end_token + } +% \end{macrocode} +% \subsection{Fractions} +% Similar to roots in fractions the rule must be marked as artifact. +% \begin{macrocode} +\DeclareRobustCommand {\frac}[2] + {{\tag_socket_use:n{math/luamml/artifact}\Ustack{\begingroup#1\endgroup\@@@@over#2}}} +% \end{macrocode} +% \begin{macrocode} +% +% \end{macrocode} +% +% \Finale +% diff --git a/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab.ins b/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab.ins index 7071ed6e3dc..9089292c269 100644 --- a/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab.ins +++ b/Master/texmf-dist/source/latex-dev/latex-lab/latex-lab.ins @@ -3,7 +3,7 @@ %% driver files from the dtx file(s) in this package when run through %% LaTeX or TeX. %% -%% Copyright (C) 2021-2023 The LaTeX Project +%% Copyright (C) 2021-2025 The LaTeX Project %% %% %% This file is part of the `LaTeX-lab Bundle' for LaTeX. @@ -35,7 +35,7 @@ This is a generated file. -Copyright 2021-2023 LaTeX Project +Copyright 2021-2025 LaTeX Project This file was generated from file(s) of the `LaTeX-lab Bundle'. ------------------------------------------------------------------------------------ @@ -97,6 +97,8 @@ where one can also log issues in case there are any. \generate{\file{latex-lab-amsmath.ltx}{\from{latex-lab-amsmath.dtx}{kernel}}} \generate{\file{latex-lab-mathtools.ltx}{\from{latex-lab-mathtools.dtx}{kernel}}} \generate{\file{latex-lab-mathpkg.ltx}{\from{latex-lab-mathpkg.dtx}{kernel}}} +\generate{\file{latex-lab-mathintent.ltx}{\from{latex-lab-mathintent.dtx}{kernel}}} +\generate{\file{latex-lab-unicode-math.ltx}{\from{latex-lab-unicode-math.dtx}{kernel}}} % kernel changes need by more than one module \generate{\file{latex-lab-kernel-changes.sty} diff --git a/Master/texmf-dist/source/latex-dev/tools/afterpage.dtx b/Master/texmf-dist/source/latex-dev/tools/afterpage.dtx index 72df39402c9..ca5de5a4ad9 100644 --- a/Master/texmf-dist/source/latex-dev/tools/afterpage.dtx +++ b/Master/texmf-dist/source/latex-dev/tools/afterpage.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2024 +% Copyright (C) 1993-2025 % % The LaTeX Project and any individual authors listed elsewhere % in this file. diff --git a/Master/texmf-dist/source/latex-dev/tools/afterpage.ins b/Master/texmf-dist/source/latex-dev/tools/afterpage.ins index 17792ddfa13..a0d5c3f0b12 100644 --- a/Master/texmf-dist/source/latex-dev/tools/afterpage.ins +++ b/Master/texmf-dist/source/latex-dev/tools/afterpage.ins @@ -3,7 +3,7 @@ %% driver files from the doc files in this package when run through %% LaTeX or TeX. %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% @@ -45,7 +45,7 @@ The source is maintained by the LaTeX Project team and bug reports for it can be opened at https://latex-project.org/bugs/ (but please observe conditions on bug reports sent to that address!) -Copyright (C) 1993-2024 +Copyright (C) 1993-2025 The LaTeX Project and any individual authors listed elsewhere in this file. diff --git a/Master/texmf-dist/source/latex-dev/tools/array.dtx b/Master/texmf-dist/source/latex-dev/tools/array.dtx index f4c8ab28d8d..74c78d02736 100644 --- a/Master/texmf-dist/source/latex-dev/tools/array.dtx +++ b/Master/texmf-dist/source/latex-dev/tools/array.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2024 +% Copyright (C) 1993-2025 % % The LaTeX Project and any individual authors listed elsewhere % in this file. @@ -39,7 +39,7 @@ % \begin{macrocode} %<+package>\NeedsTeXFormat{LaTeX2e}[2024/06/01] %<+package>\ProvidesPackage{array} -%<+package> [2024/10/17 v2.6g Tabular extension package (FMi)] +%<+package> [2025/02/18 v2.6h Tabular extension package (FMi)] % % \fi % @@ -1862,7 +1862,19 @@ Bug reports can be opened (category \texttt{#1}) at\\% % \end{macrocode} % \end{macro} % -% +% \changes{v2.6h}{2024/12/02}{Add tagging sockets for luamml support} +% Until the sockets are in the release we test for existence +% and declare them +% \begin{macrocode} +\str_if_exist:cF { l__socket_tagsupport/math/luamml/array/save_plug_str } + { + \NewSocket{tagsupport/math/luamml/array/save}{0} + \NewSocket{tagsupport/math/luamml/array/finalize}{0} + \NewSocket{tagsupport/math/luamml/array/initcol}{0} + \NewSocket{tagsupport/math/luamml/array/finalizecol}{1} + \AssignSocketPlug{tagsupport/math/luamml/array/finalizecol}{noop} + } +% \end{macrocode} % \begin{macro}{\@classz} % If the character class of the last \textsf{token} is $0$ we have % \texttt{c}, \texttt{l}, \texttt{r} or an argument of \texttt{m}, @@ -1918,7 +1930,7 @@ Bug reports can be opened (category \texttt{#1}) at\\% % Now we insert the contents of the two \textsf{token} registers % and the symbol % for the column entry (i.e.\ =#= or -% more precise =\@sharp=) using =\insert@column=. +% more precise =\@sharp=) using =\insert@column=. % \begin{macrocode} \insert@column % \end{macrocode} @@ -1927,7 +1939,8 @@ Bug reports can be opened (category \texttt{#1}) at\\% % The strut to enforce a regular row height is placed between the two. % \changes{v2.4e}{2016/10/07}{Fixing SX68732} % \begin{macrocode} - \d@llarend \do@row@strut \hfil \or + \d@llarend + \do@row@strut \hfil \or % \end{macrocode} % The templates for \texttt{l} and \texttt{r} (i.e.\ =\@chnum= $1$ % or $2$) are generated the same way. Since one =\hfil= is @@ -1944,8 +1957,10 @@ Bug reports can be opened (category \texttt{#1}) at\\% % {Change both \cs{kern}\cs{z@} to \cs{hskip}1sp for latex/2160} % \changes{v2.4e}{2016/10/07}{Fixing SX68732} % \begin{macrocode} - \hskip1sp\d@llarbegin \insert@column \d@llarend \do@row@strut \hfil \or - \hfil\hskip1sp\d@llarbegin \insert@column \d@llarend \do@row@strut \or + \hskip1sp\d@llarbegin\insert@column\d@llarend + \do@row@strut \hfil \or + \hfil\hskip1sp\d@llarbegin\insert@column\d@llarend + \do@row@strut \or % \end{macrocode} % The templates for \texttt{p}, \texttt{m} and \texttt{b} mainly % consist of a \textsf{box}. In case of \texttt{m} it is generated @@ -2242,7 +2257,7 @@ Bug reports can be opened (category \texttt{#1}) at\\% % % % -% \begin{macro}{\@startpbox} +% \begin{macro}{\@startpbox,\@startpbox@action} % In =\@classz= the macro =\@startpbox= is used. % The width of the \textsf{parbox} is passed as an argument. % =\vcenter=, =\vtop= or =\vbox= are already in the @@ -2286,6 +2301,19 @@ Bug reports can be opened (category \texttt{#1}) at\\% \everypar{}}% } % \end{macrocode} +% +% \changes{v2.6h}{2024/12/17}{New \cs{@startpbox@action} to do the real work +% after the preamble is built (gh/1585)} +% Starting with 2.6h, \cs{@startpbox} is used only during the +% built-up of the preamble and then changed to \cs{@startpbox@action} +% which does the real work. For an explanation of this code see +% the documentation in \cs{@mkpream}. We keep the \cs{@startpbox} +% definition on top-level in case there are tabular packages that +% built the preamble differently and expect that it contains +% \cs{@startpbox} (\pkg{longtable} at the moment). +% \begin{macrocode} +\let\@startpbox@action\@startpbox +% \end{macrocode} % \end{macro} % % \begin{macro}{\@endpbox} @@ -2817,9 +2845,23 @@ Bug reports can be opened (category \texttt{#1}) at\\% % Our new definition of =\array= then reads: % \changes{v2.0d}{1990/08/20}{`d@llar local to preamble.} % \changes{v2.4d}{2016/10/06}{\cs{@halignto} set locally (pr/4488)} +% In math mode we additionally add also the tagging sockets for luamml. +% \changes{v2.6h}{2024/12/02}{Add tagging sockets for luamml support}. +% The =math/luamml/array/finalizecol= takes as argument a number (0, 1, 2) +% that should represent the alignment (c,l,r). +% TODO: instead of =\the\@chnum= a proper tl should be used. +% TODO: the w and W columntypes must be redefined - currently they +% insert stray mtext columns. % \begin{macrocode} \def\array{\col@sep\arraycolsep - \def\d@llarbegin{$}\let\d@llarend\d@llarbegin\def\@halignto{}% + \def\d@llarbegin{$\tag_socket_use:n { math/luamml/array/initcol }} + \def\d@llarend + { + \tag_socket_use:nn { math/luamml/save/nn }{{}{mtd}} + $ + \tag_socket_use:nn { math/luamml/array/finalizecol}{\the\@chnum} + } + \def\@halignto{}% % \end{macrocode} % Since there might be an optional argument we call another % macro which is also used by the other environments. @@ -2868,6 +2910,9 @@ Bug reports can be opened (category \texttt{#1}) at\\% % \begin{macro}{\@tabular} % The rest of the job is carried out by the =\@tabular= macro: % \begin{macrocode} +\providecommand\MathCollectTrue{} +\providecommand\MathCollectFalse{} +\providecommand\@kernel@tabular@init{} \def\@tabular{% % \end{macrocode} % First of all we have to make sure that we start out in @@ -2887,10 +2932,17 @@ Bug reports can be opened (category \texttt{#1}) at\\% % insert a =$= and then assign the correct values to =\col@sep= and % =\d@llar...=. % \changes{v2.0d}{1990/08/20}{`d@llar local to preamble.} +% \changes{v2.6h}{2025/02/18}{Surround dollar with \cs{MathCollectTrue}/\cs{MathCollectFalse}}% % \begin{macrocode} - \hbox \bgroup $\col@sep\tabcolsep \let\d@llarbegin\begingroup + \hbox \bgroup + \MathCollectFalse$\MathCollectTrue + \col@sep\tabcolsep \let\d@llarbegin\begingroup \let\d@llarend\endgroup % \end{macrocode} +% \changes{v2.6h}{2025/02/18}{Add internal kernel hook to switch math collection method}% +% \begin{macrocode} + \@kernel@tabular@init +% \end{macrocode} % Now everything \textsf{tabular} specific is done and we are able to % call the =\@tabarray= macro. % \begin{macrocode} @@ -2899,10 +2951,6 @@ Bug reports can be opened (category \texttt{#1}) at\\% % \end{macro} % % \begin{macro}{\endarray} -% \emph{The code below has been replaced long time ago by an -% extended version further down but the code and its documentation -% was left here for reference. It is now commented out to avoid -% confusion.} % % When the processing of \textsf{array} is finished we have to % close the =\halign= @@ -2914,10 +2962,13 @@ Bug reports can be opened (category \texttt{#1}) at\\% % To handle cell indexes, we do not use \cs{crcr} but a variant % that also handles missing cells as necessary. % \changes{v2.6a}{2023/12/11}{Support for tagged PDF} +% \changes{v2.6h}{2024/12/02}{Add tagging sockets for luamml support}% % \begin{macrocode} \def\endarray { - \tbl_crcr:n{endarray} \egroup - \UseTaggingSocket{tbl/finalize} + \tbl_crcr:n{endarray} + \tag_socket_use_expandable:n { math/luamml/array/save } + \egroup + \tag_socket_use:n { tbl/finalize } % \end{macrocode} % % If tables are nested into another then it is necessary to @@ -2937,6 +2988,7 @@ Bug reports can be opened (category \texttt{#1}) at\\% % % \begin{macrocode} \egroup + \tag_socket_use:n { math/luamml/array/finalize } \@arrayright \gdef\@preamble{}% } % \end{macrocode} @@ -3277,20 +3329,31 @@ Bug reports can be opened (category \texttt{#1}) at\\% \let\@sharp\relax % \end{macrocode} % -% \changes{v2.4j}{2018/11/13}{Do not expand argument of -% \cs{@startpbox} while building the tabular preamble (sx/459285)} % The "\@startpbox" (which is called for "p", "m" or "b" columns) % receives a user supplied argument: the width of the % paragraph-column. Normally that is something harmless like a length or a % simple length expression, but with the calc package involved it % could break under an "\edef" operation, which is how the preamble % is constructed. We now make use of "\unexpanded" here to prevent that. The -% "\expandafter" gymnastics is necessary to expand the "#1" at least +% "\expandafter" gymnastics are necessary to expand the "#1" exactly % once (since it will get "\@nextchar" as its value and need its -% content! +% content). However, once added to the preamble, no further +% expansion should happen if the preamble is extended. Therefore we +% change from \cs{@startpbox} to \cs{@startpbox@action}. The latter +% then has a trivial definition and expands (including its +% argument) to itself while the preamble is being built. Outside of this +% preamble build up \cs{@startpbox@action} does the actual work. +% +% \changes{v2.4j}{2018/11/13}{Do not expand argument of +% \cs{@startpbox} while building the tabular preamble (sx/459285)} +% \changes{v2.6h}{2024/12/17}{Expand argument of \cs{@startpbox} +% exactly once while the preamble is being built, and use +% \cs{@startpbox@action} later to do the real work (gh/1585)} % \begin{macrocode} \def\@startpbox##1{\unexpanded\expandafter{\expandafter - \@startpbox\expandafter{##1}}}\let\@endpbox\relax + \@startpbox@action\expandafter{##1}}}% + \def\@startpbox@action##1{\unexpanded{\@startpbox@action{##1}}}% + \let\@endpbox\relax \let\do@row@strut\relax \let\ar@align@mcell\relax % \end{macrocode} diff --git a/Master/texmf-dist/source/latex-dev/tools/bm.dtx b/Master/texmf-dist/source/latex-dev/tools/bm.dtx index d7d6eb54ee2..cc4b16fdf9b 100644 --- a/Master/texmf-dist/source/latex-dev/tools/bm.dtx +++ b/Master/texmf-dist/source/latex-dev/tools/bm.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2024 +% Copyright (C) 1993-2025 % % The LaTeX Project and any individual authors listed elsewhere % in this file. diff --git a/Master/texmf-dist/source/latex-dev/tools/bm.ins b/Master/texmf-dist/source/latex-dev/tools/bm.ins index c0c8125d101..8b627e4e2a1 100644 --- a/Master/texmf-dist/source/latex-dev/tools/bm.ins +++ b/Master/texmf-dist/source/latex-dev/tools/bm.ins @@ -3,7 +3,7 @@ %% driver files from the doc files in this package when run through %% LaTeX or TeX. %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% @@ -45,7 +45,7 @@ The source is maintained by the LaTeX Project team and bug reports for it can be opened at https://latex-project.org/bugs/ (but please observe conditions on bug reports sent to that address!) -Copyright (C) 1993-2024 +Copyright (C) 1993-2025 The LaTeX Project and any individual authors listed elsewhere in this file. diff --git a/Master/texmf-dist/source/latex-dev/tools/calc.dtx b/Master/texmf-dist/source/latex-dev/tools/calc.dtx index 414d04df8c3..5e194256d71 100644 --- a/Master/texmf-dist/source/latex-dev/tools/calc.dtx +++ b/Master/texmf-dist/source/latex-dev/tools/calc.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2024 +% Copyright (C) 1993-2025 % % The LaTeX Project and any individual authors listed elsewhere % in this file. diff --git a/Master/texmf-dist/source/latex-dev/tools/dcolumn.dtx b/Master/texmf-dist/source/latex-dev/tools/dcolumn.dtx index feb3096ccec..c9ccf1ec39d 100644 --- a/Master/texmf-dist/source/latex-dev/tools/dcolumn.dtx +++ b/Master/texmf-dist/source/latex-dev/tools/dcolumn.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2024 +% Copyright (C) 1993-2025 % % The LaTeX Project and any individual authors listed elsewhere % in this file. diff --git a/Master/texmf-dist/source/latex-dev/tools/delarray.dtx b/Master/texmf-dist/source/latex-dev/tools/delarray.dtx index 61d40b5c744..6647089acb2 100644 --- a/Master/texmf-dist/source/latex-dev/tools/delarray.dtx +++ b/Master/texmf-dist/source/latex-dev/tools/delarray.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2024 +% Copyright (C) 1993-2025 % % The LaTeX Project and any individual authors listed elsewhere % in this file. diff --git a/Master/texmf-dist/source/latex-dev/tools/enumerate.dtx b/Master/texmf-dist/source/latex-dev/tools/enumerate.dtx index c3889a9157a..07384d8dff6 100644 --- a/Master/texmf-dist/source/latex-dev/tools/enumerate.dtx +++ b/Master/texmf-dist/source/latex-dev/tools/enumerate.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2024 +% Copyright (C) 1993-2025 % % The LaTeX Project and any individual authors listed elsewhere % in this file. diff --git a/Master/texmf-dist/source/latex-dev/tools/fileerr.dtx b/Master/texmf-dist/source/latex-dev/tools/fileerr.dtx index 0e8eeb1ffb1..44994957d66 100644 --- a/Master/texmf-dist/source/latex-dev/tools/fileerr.dtx +++ b/Master/texmf-dist/source/latex-dev/tools/fileerr.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2024 +% Copyright (C) 1993-2025 % % The LaTeX Project and any individual authors listed elsewhere % in this file. diff --git a/Master/texmf-dist/source/latex-dev/tools/fontsmpl.dtx b/Master/texmf-dist/source/latex-dev/tools/fontsmpl.dtx index 6e9835e20eb..5b2c1967530 100644 --- a/Master/texmf-dist/source/latex-dev/tools/fontsmpl.dtx +++ b/Master/texmf-dist/source/latex-dev/tools/fontsmpl.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2024 +% Copyright (C) 1993-2025 % % The LaTeX Project and any individual authors listed elsewhere % in this file. diff --git a/Master/texmf-dist/source/latex-dev/tools/ftnright.dtx b/Master/texmf-dist/source/latex-dev/tools/ftnright.dtx index a3826376dbb..87dc5478a48 100644 --- a/Master/texmf-dist/source/latex-dev/tools/ftnright.dtx +++ b/Master/texmf-dist/source/latex-dev/tools/ftnright.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2024 +% Copyright (C) 1993-2025 % % The LaTeX Project and any individual authors listed elsewhere % in this file. diff --git a/Master/texmf-dist/source/latex-dev/tools/hhline.dtx b/Master/texmf-dist/source/latex-dev/tools/hhline.dtx index b2d833d965d..cb4d5a40b9c 100644 --- a/Master/texmf-dist/source/latex-dev/tools/hhline.dtx +++ b/Master/texmf-dist/source/latex-dev/tools/hhline.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2024 +% Copyright (C) 1993-2025 % % The LaTeX Project and any individual authors listed elsewhere % in this file. diff --git a/Master/texmf-dist/source/latex-dev/tools/indentfirst.dtx b/Master/texmf-dist/source/latex-dev/tools/indentfirst.dtx index 9bbe1871e15..394c9bb7924 100644 --- a/Master/texmf-dist/source/latex-dev/tools/indentfirst.dtx +++ b/Master/texmf-dist/source/latex-dev/tools/indentfirst.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2024 +% Copyright (C) 1993-2025 % % The LaTeX Project and any individual authors listed elsewhere % in this file. diff --git a/Master/texmf-dist/source/latex-dev/tools/l3sys-query.dtx b/Master/texmf-dist/source/latex-dev/tools/l3sys-query.dtx index 3cba5da4a62..cfec0da5f9e 100644 --- a/Master/texmf-dist/source/latex-dev/tools/l3sys-query.dtx +++ b/Master/texmf-dist/source/latex-dev/tools/l3sys-query.dtx @@ -1,6 +1,6 @@ % \iffalse %% Source File: l3sys-query.dtx -%% Copyright (C) 2024 +%% Copyright (C) 2024-2025 %% %% The LaTeX Project and any individual authors listed elsewhere %% in this file. diff --git a/Master/texmf-dist/source/latex-dev/tools/l3sys-query.ins b/Master/texmf-dist/source/latex-dev/tools/l3sys-query.ins index 163eec0058c..7ae54c8b89a 100644 --- a/Master/texmf-dist/source/latex-dev/tools/l3sys-query.ins +++ b/Master/texmf-dist/source/latex-dev/tools/l3sys-query.ins @@ -3,7 +3,7 @@ %% driver files from the doc files in this package when run through %% LaTeX or TeX. %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% @@ -45,7 +45,7 @@ The source is maintained by the LaTeX Project team and bug reports for it can be opened at https://latex-project.org/bugs/ (but please observe conditions on bug reports sent to that address!) -Copyright (C) 1993-2024 +Copyright (C) 1993-2025 The LaTeX Project and any individual authors listed elsewhere in this file. diff --git a/Master/texmf-dist/source/latex-dev/tools/layout.dtx b/Master/texmf-dist/source/latex-dev/tools/layout.dtx index a2fc87a6a51..a35009319bc 100644 --- a/Master/texmf-dist/source/latex-dev/tools/layout.dtx +++ b/Master/texmf-dist/source/latex-dev/tools/layout.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2024 +% Copyright (C) 1993-2025 % % The LaTeX Project and any individual authors listed elsewhere % in this file. diff --git a/Master/texmf-dist/source/latex-dev/tools/longtable.dtx b/Master/texmf-dist/source/latex-dev/tools/longtable.dtx index 061d7b56102..c104f41cb87 100644 --- a/Master/texmf-dist/source/latex-dev/tools/longtable.dtx +++ b/Master/texmf-dist/source/latex-dev/tools/longtable.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2024 +% Copyright (C) 1993-2025 % % The LaTeX Project and any individual authors listed elsewhere % in this file. @@ -38,7 +38,7 @@ % \ProvidesFile{longtable.drv} % \fi % \ProvidesFile{longtable.dtx} - [2024-10-27 v4.22 Multi-page Table package (DPC)] + [2024-12-18 v4.23 Multi-page Table package (DPC)] % % \iffalse %<*driver> @@ -1249,10 +1249,13 @@ % \package{array} V2.0h. We do not need to set "\d@llarbegin" and % "\d@llarend" as the \package{array} package gives them the correct % values at the top level. +% \changes{v4.23}{2024/12/17}{Initialize \cs{@startpbox@action} instead +% of \cs{@startpbox} to match array change (gh/1585)} % \begin{macrocode} \advance\@tempdima\extrarowheight \col@sep\tabcolsep - \let\@startpbox\LT@startpbox\let\LT@LL@FM@cr\@arraycr + \let\@startpbox@action\LT@startpbox + \let\LT@LL@FM@cr\@arraycr \fi % \end{macrocode} % The rest of this macro is mainly based on \package{array} package, but diff --git a/Master/texmf-dist/source/latex-dev/tools/longtable.ins b/Master/texmf-dist/source/latex-dev/tools/longtable.ins index 60b74615718..12d2d8aca83 100644 --- a/Master/texmf-dist/source/latex-dev/tools/longtable.ins +++ b/Master/texmf-dist/source/latex-dev/tools/longtable.ins @@ -3,7 +3,7 @@ %% driver files from the doc files in this package when run through %% LaTeX or TeX. %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% @@ -45,7 +45,7 @@ The source is maintained by the LaTeX Project team and bug reports for it can be opened at https://latex-project.org/bugs/ (but please observe conditions on bug reports sent to that address!) -Copyright (C) 1993-2024 +Copyright (C) 1993-2025 The LaTeX Project and any individual authors listed elsewhere in this file. diff --git a/Master/texmf-dist/source/latex-dev/tools/multicol.dtx b/Master/texmf-dist/source/latex-dev/tools/multicol.dtx index 1cb322ea6d6..7325b734a21 100644 --- a/Master/texmf-dist/source/latex-dev/tools/multicol.dtx +++ b/Master/texmf-dist/source/latex-dev/tools/multicol.dtx @@ -20,7 +20,7 @@ % \iffalse This is a METACOMMENT % %% Package `multicol' to use with LaTeX2e -%% Copyright 1989-2024 Frank Mittelbach +%% Copyright 1989-2025 Frank Mittelbach %% %% In addition to the terms of LPPL any distributed version %% (unchanged or modified) of multicol has to keep the statement @@ -99,7 +99,7 @@ % \ProvidesFile{multicol.drv} % \fi % \ProvidesFile{multicol.dtx} - [2024/11/21 v2.0a multicolumn formatting (FMi)] + [2024/11/27 v2.0a multicolumn formatting (FMi)] % % % @@ -4628,7 +4628,7 @@ % float sockets. By now they are part of the kernel and their plugs % are currently defined by \pkg{tagpdf}. % \begin{macrocode} -%\str_if_exist:cF { l__socket_tagsupport/float/end_plug_str } +%\IfSocketExistsF {tagsupport/float/end} % { % \NewSocket{tagsupport/float/end}{0} % \NewSocket{tagsupport/float/hmode/end}{0} diff --git a/Master/texmf-dist/source/latex-dev/tools/multicol.ins b/Master/texmf-dist/source/latex-dev/tools/multicol.ins index 7a7ef27d248..f88f2fb89ea 100644 --- a/Master/texmf-dist/source/latex-dev/tools/multicol.ins +++ b/Master/texmf-dist/source/latex-dev/tools/multicol.ins @@ -3,7 +3,7 @@ %% driver files from the doc files in this package when run through %% LaTeX or TeX. %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% @@ -45,7 +45,7 @@ The source is maintained by the LaTeX Project team and bug reports for it can be opened at https://latex-project.org/bugs/ (but please observe conditions on bug reports sent to that address!) -Copyright (C) 1993-2024 +Copyright (C) 1993-2025 The LaTeX Project and any individual authors listed elsewhere in this file. diff --git a/Master/texmf-dist/source/latex-dev/tools/rawfonts.dtx b/Master/texmf-dist/source/latex-dev/tools/rawfonts.dtx index 3ffa2032c38..1d259cc1a67 100644 --- a/Master/texmf-dist/source/latex-dev/tools/rawfonts.dtx +++ b/Master/texmf-dist/source/latex-dev/tools/rawfonts.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2024 +% Copyright (C) 1993-2025 % % The LaTeX Project and any individual authors listed elsewhere % in this file. diff --git a/Master/texmf-dist/source/latex-dev/tools/shellesc.dtx b/Master/texmf-dist/source/latex-dev/tools/shellesc.dtx index 8a556de9229..61047e2dfbe 100644 --- a/Master/texmf-dist/source/latex-dev/tools/shellesc.dtx +++ b/Master/texmf-dist/source/latex-dev/tools/shellesc.dtx @@ -1,6 +1,6 @@ % \iffalse %% Source File: shellesc.dtx -%% Copyright (C) 2015-2024 +%% Copyright (C) 2015-2025 %% %% The LaTeX Project and any individual authors listed elsewhere %% in this file. diff --git a/Master/texmf-dist/source/latex-dev/tools/showkeys.dtx b/Master/texmf-dist/source/latex-dev/tools/showkeys.dtx index b6717950a77..5e1ab87fb4a 100644 --- a/Master/texmf-dist/source/latex-dev/tools/showkeys.dtx +++ b/Master/texmf-dist/source/latex-dev/tools/showkeys.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2024 +% Copyright (C) 1993-2025 % % The LaTeX Project and any individual authors listed elsewhere % in this file. @@ -22,7 +22,7 @@ % \fi % \iffalse %% File: showkeys.dtx Copyright (C) 1992-1997 David Carlisle -%% File: showkeys.dtx Copyright (C) 2006-2024 David Carlisle, LaTeX Project +%% File: showkeys.dtx Copyright (C) 2006-2025 David Carlisle, LaTeX Project % %<*dtx> \ProvidesFile{showkeys.dtx} diff --git a/Master/texmf-dist/source/latex-dev/tools/somedefs.dtx b/Master/texmf-dist/source/latex-dev/tools/somedefs.dtx index 156621d70e2..483897ec66b 100644 --- a/Master/texmf-dist/source/latex-dev/tools/somedefs.dtx +++ b/Master/texmf-dist/source/latex-dev/tools/somedefs.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2024 +% Copyright (C) 1993-2025 % % The LaTeX Project and any individual authors listed elsewhere % in this file. diff --git a/Master/texmf-dist/source/latex-dev/tools/tabularx.dtx b/Master/texmf-dist/source/latex-dev/tools/tabularx.dtx index 52ee62cad90..b0d9859343a 100644 --- a/Master/texmf-dist/source/latex-dev/tools/tabularx.dtx +++ b/Master/texmf-dist/source/latex-dev/tools/tabularx.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2024 +% Copyright (C) 1993-2025 % % The LaTeX Project and any individual authors listed elsewhere % in this file. diff --git a/Master/texmf-dist/source/latex-dev/tools/tabularx.ins b/Master/texmf-dist/source/latex-dev/tools/tabularx.ins index fdce598d379..954c6139558 100644 --- a/Master/texmf-dist/source/latex-dev/tools/tabularx.ins +++ b/Master/texmf-dist/source/latex-dev/tools/tabularx.ins @@ -3,7 +3,7 @@ %% driver files from the doc files in this package when run through %% LaTeX or TeX. %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% @@ -45,7 +45,7 @@ The source is maintained by the LaTeX Project team and bug reports for it can be opened at https://latex-project.org/bugs/ (but please observe conditions on bug reports sent to that address!) -Copyright (C) 1993-2024 +Copyright (C) 1993-2025 The LaTeX Project and any individual authors listed elsewhere in this file. diff --git a/Master/texmf-dist/source/latex-dev/tools/theorem.dtx b/Master/texmf-dist/source/latex-dev/tools/theorem.dtx index 3fbba473ba2..1dc5065d804 100644 --- a/Master/texmf-dist/source/latex-dev/tools/theorem.dtx +++ b/Master/texmf-dist/source/latex-dev/tools/theorem.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2024 +% Copyright (C) 1993-2025 % % The LaTeX Project and any individual authors listed elsewhere % in this file. diff --git a/Master/texmf-dist/source/latex-dev/tools/tools.ins b/Master/texmf-dist/source/latex-dev/tools/tools.ins index 776215ff2e6..01f369e99fb 100644 --- a/Master/texmf-dist/source/latex-dev/tools/tools.ins +++ b/Master/texmf-dist/source/latex-dev/tools/tools.ins @@ -3,7 +3,7 @@ %% driver files from the doc files in this package when run through %% LaTeX or TeX. %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% @@ -49,7 +49,7 @@ reports for it can be opened at https://latex-project.org/bugs/ (but please observe conditions on bug reports sent to that address!) -Copyright (C) 1993-2024 +Copyright (C) 1993-2025 The LaTeX Project and any individual authors listed elsewhere in this file. diff --git a/Master/texmf-dist/source/latex-dev/tools/trace.dtx b/Master/texmf-dist/source/latex-dev/tools/trace.dtx index 27a39c776b4..390c8fea9dd 100644 --- a/Master/texmf-dist/source/latex-dev/tools/trace.dtx +++ b/Master/texmf-dist/source/latex-dev/tools/trace.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2024 +% Copyright (C) 1993-2025 % % The LaTeX Project and any individual authors listed elsewhere % in this file. diff --git a/Master/texmf-dist/source/latex-dev/tools/varioref.dtx b/Master/texmf-dist/source/latex-dev/tools/varioref.dtx index 40b3038074f..8b96d9f056a 100644 --- a/Master/texmf-dist/source/latex-dev/tools/varioref.dtx +++ b/Master/texmf-dist/source/latex-dev/tools/varioref.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2024 +% Copyright (C) 1993-2025 % % The LaTeX Project and any individual authors listed elsewhere % in this file. @@ -41,7 +41,7 @@ %\DeclareCurrentRelease{}{2019-10-01} % %\ProvidesPackage{varioref} -% [2024/05/23 v1.6g package for extended references (FMi)] +% [2025/01/14 v1.6g package for extended references (FMi)] % \fi % %% @@ -452,6 +452,11 @@ % one argument, the symbolic reference string, so that one can make % use of |\pageref| in its replacement text. % +% In the somewhat unusual case that you want to make some or all of +% the |\reftext...| texts empty, it is necessary to get rid of the +% space that is automatically put in front of them. You can do this by +% defining them to expand to |\unskip|. +% % %\DescribeMacro\reftextvario To allow a bit random variation in the % generated strings one can use the command |\reftextvario| inside the diff --git a/Master/texmf-dist/source/latex-dev/tools/varioref.ins b/Master/texmf-dist/source/latex-dev/tools/varioref.ins index 88527a20ba1..9cf89a76fff 100644 --- a/Master/texmf-dist/source/latex-dev/tools/varioref.ins +++ b/Master/texmf-dist/source/latex-dev/tools/varioref.ins @@ -3,7 +3,7 @@ %% driver files from the doc files in this package when run through %% LaTeX or TeX. %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% @@ -45,7 +45,7 @@ The source is maintained by the LaTeX Project team and bug reports for it can be opened at https://latex-project.org/bugs/ (but please observe conditions on bug reports sent to that address!) -Copyright (C) 1993-2024 +Copyright (C) 1993-2025 The LaTeX Project and any individual authors listed elsewhere in this file. diff --git a/Master/texmf-dist/source/latex-dev/tools/verbatim.dtx b/Master/texmf-dist/source/latex-dev/tools/verbatim.dtx index 468dead3e83..1d0a245d6c2 100644 --- a/Master/texmf-dist/source/latex-dev/tools/verbatim.dtx +++ b/Master/texmf-dist/source/latex-dev/tools/verbatim.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2024 +% Copyright (C) 1993-2025 % % The LaTeX Project and any individual authors listed elsewhere % in this file. diff --git a/Master/texmf-dist/source/latex-dev/tools/xr.dtx b/Master/texmf-dist/source/latex-dev/tools/xr.dtx index daa0778b363..eaae768bad6 100644 --- a/Master/texmf-dist/source/latex-dev/tools/xr.dtx +++ b/Master/texmf-dist/source/latex-dev/tools/xr.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2024 +% Copyright (C) 1993-2025 % % The LaTeX Project and any individual authors listed elsewhere % in this file. @@ -21,13 +21,13 @@ % % \fi % \iffalse -%% File: xr.dtx Copyright (C) 1993-2024 David Carlisle +%% File: xr.dtx Copyright (C) 1993-2025 David Carlisle % %\NeedsTeXFormat{LaTeX2e} %\DeclareRelease{v5}{2023-07-04}{xr-2023-07-04.sty} -%\DeclareCurrentRelease{}{2024-04-10} +%\DeclareCurrentRelease{}{2024-12-22} %\ProvidesPackage{xr} -% [2024-04-10 v6.00 eXternal References (DPC)] +% [2024-12-22 v6.00 eXternal References (DPC)] % %<*driver> \documentclass{l3doc} @@ -156,7 +156,13 @@ Bug reports can be opened (category \texttt{#1}) at\\% % \meta{prefix}: % \begin{verbatim} % \externaldocument[][nocite]{aaa} -% \end{verbatim} +% \end{verbatim} +% +% Problems with citing references from an external document +% are more likely if the documents are using different citation packages. +% So if possible, it is best to ensure that the documents use compatible +% packages so that the citation data works without error when imported from +% the external document. % % The `document' referred to by the main argument \meta{document} is the file % \file{document.aux} which must be somewhere on TeX's input path. diff --git a/Master/texmf-dist/source/latex-dev/tools/xspace.dtx b/Master/texmf-dist/source/latex-dev/tools/xspace.dtx index be20fc9e522..ab9921a0344 100644 --- a/Master/texmf-dist/source/latex-dev/tools/xspace.dtx +++ b/Master/texmf-dist/source/latex-dev/tools/xspace.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2024 +% Copyright (C) 1993-2025 % % The LaTeX Project and any individual authors listed elsewhere % in this file. diff --git a/Master/texmf-dist/tex/latex-dev/amsmath/amsbsy.sty b/Master/texmf-dist/tex/latex-dev/amsmath/amsbsy.sty index 8f9f97ed311..20a116ca412 100644 --- a/Master/texmf-dist/tex/latex-dev/amsmath/amsbsy.sty +++ b/Master/texmf-dist/tex/latex-dev/amsmath/amsbsy.sty @@ -7,7 +7,7 @@ %% amsbsy.dtx %% %% Copyright (C) 1995, 1999 American Mathematical Society. -%% Copyright (C) 2016-2024 LaTeX Project and American Mathematical Society. +%% Copyright (C) 2016-2025 LaTeX Project and American Mathematical Society. %% %% This work may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either version 1.3c diff --git a/Master/texmf-dist/tex/latex-dev/amsmath/amscd.sty b/Master/texmf-dist/tex/latex-dev/amsmath/amscd.sty index a32842d8c3f..80316916471 100644 --- a/Master/texmf-dist/tex/latex-dev/amsmath/amscd.sty +++ b/Master/texmf-dist/tex/latex-dev/amsmath/amscd.sty @@ -7,7 +7,7 @@ %% amscd.dtx %% %% Copyright (C) 1995, 1999 American Mathematical Society. -%% Copyright (C) 2016-2024 LaTeX Project and American Mathematical Society. +%% Copyright (C) 2016-2025 LaTeX Project and American Mathematical Society. %% %% This work may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either version 1.3c diff --git a/Master/texmf-dist/tex/latex-dev/amsmath/amsgen.sty b/Master/texmf-dist/tex/latex-dev/amsmath/amsgen.sty index 39240727511..b39c5bf2b1f 100644 --- a/Master/texmf-dist/tex/latex-dev/amsmath/amsgen.sty +++ b/Master/texmf-dist/tex/latex-dev/amsmath/amsgen.sty @@ -7,7 +7,7 @@ %% amsgen.dtx %% %% Copyright (C) 1995, 1999 American Mathematical Society. -%% Copyright (C) 2016-2024 LaTeX Project and American Mathematical Society. +%% Copyright (C) 2016-2025 LaTeX Project and American Mathematical Society. %% %% This work may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either version 1.3c diff --git a/Master/texmf-dist/tex/latex-dev/amsmath/amsmath.sty b/Master/texmf-dist/tex/latex-dev/amsmath/amsmath.sty index 4e3165add6a..6f7fd3ebb0d 100644 --- a/Master/texmf-dist/tex/latex-dev/amsmath/amsmath.sty +++ b/Master/texmf-dist/tex/latex-dev/amsmath/amsmath.sty @@ -7,7 +7,7 @@ %% amsmath.dtx %% %% Copyright (C) 1995, 1999, 2000, 2013 American Mathematical Society. -%% Copyright (C) 2016-2024 LaTeX Project and American Mathematical Society. +%% Copyright (C) 2016-2025 LaTeX Project and American Mathematical Society. %% %% This work may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either version 1.3c @@ -26,7 +26,7 @@ \DeclareRelease{}{1994-06-01}{amsmath-2018-12-01.sty} \DeclareRelease{}{2018-12-01}{amsmath-2018-12-01.sty} \DeclareCurrentRelease{}{2019-04-01} -\ProvidesPackage{amsmath}[2024/11/05 v2.17t AMS math features] +\ProvidesPackage{amsmath}[2025/01/19 v2.17u AMS math features] \edef\@temp{\catcode 96=\number\catcode 96 } \catcode\string `\`=12 \def\do#1{\catcode\number`#1=\number\catcode`#1} @@ -1240,7 +1240,7 @@ ill-advised in LaTeX.% \gdef\df@label } \toks@\@xp{\@arrayparboxrestore \let\label\ltx@label}% -\edef\@arrayboxrestore{\the\toks@} +\edef\@arrayparboxrestore{\the\toks@} \let\df@label\@empty \def\make@display@tag{% \if@eqnsw \incr@eqnum \print@eqnum diff --git a/Master/texmf-dist/tex/latex-dev/amsmath/amsopn.sty b/Master/texmf-dist/tex/latex-dev/amsmath/amsopn.sty index f4ee5958472..12429b29467 100644 --- a/Master/texmf-dist/tex/latex-dev/amsmath/amsopn.sty +++ b/Master/texmf-dist/tex/latex-dev/amsmath/amsopn.sty @@ -7,7 +7,7 @@ %% amsopn.dtx %% %% Copyright (C) 1995, 1999 American Mathematical Society. -%% Copyright (C) 2016-2024 LaTeX Project and American Mathematical Society. +%% Copyright (C) 2016-2025 LaTeX Project and American Mathematical Society. %% %% This work may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either version 1.3c diff --git a/Master/texmf-dist/tex/latex-dev/amsmath/amstext.sty b/Master/texmf-dist/tex/latex-dev/amsmath/amstext.sty index 2cedcc35a82..b68bcad3884 100644 --- a/Master/texmf-dist/tex/latex-dev/amsmath/amstext.sty +++ b/Master/texmf-dist/tex/latex-dev/amsmath/amstext.sty @@ -7,7 +7,7 @@ %% amstext.dtx %% %% Copyright (C) 1995, 1999 American Mathematical Society. -%% Copyright (C) 2016-2024 LaTeX Project and American Mathematical Society. +%% Copyright (C) 2016-2025 LaTeX Project and American Mathematical Society. %% %% This work may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either version 1.3c @@ -23,7 +23,7 @@ %% \NeedsTeXFormat{LaTeX2e}% LaTeX 2.09 can't be used (nor non-LaTeX) [1994/12/01]% LaTeX date must be December 1994 or later -\ProvidesPackage{amstext}[2021/08/26 v2.01 AMS text] +\ProvidesPackage{amstext}[2024/11/17 v2.01 AMS text] \RequirePackage{amsgen} \DeclareRobustCommand{\text}{% \ifmmode\expandafter\text@\else\expandafter\mbox\fi} diff --git a/Master/texmf-dist/tex/latex-dev/amsmath/amsxtra.sty b/Master/texmf-dist/tex/latex-dev/amsmath/amsxtra.sty index 43f10f187a8..c80634efc8e 100644 --- a/Master/texmf-dist/tex/latex-dev/amsmath/amsxtra.sty +++ b/Master/texmf-dist/tex/latex-dev/amsmath/amsxtra.sty @@ -7,7 +7,7 @@ %% amsxtra.dtx %% %% Copyright (C) 1995, 1999 American Mathematical Society. -%% Copyright (C) 2016-2024 LaTeX Project and American Mathematical Society. +%% Copyright (C) 2016-2025 LaTeX Project and American Mathematical Society. %% %% This work may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either version 1.3c diff --git a/Master/texmf-dist/tex/latex-dev/base/alltt.sty b/Master/texmf-dist/tex/latex-dev/base/alltt.sty index 2cbaf54abb0..99af51ce653 100644 --- a/Master/texmf-dist/tex/latex-dev/base/alltt.sty +++ b/Master/texmf-dist/tex/latex-dev/base/alltt.sty @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/base/ansinew.def b/Master/texmf-dist/tex/latex-dev/base/ansinew.def index 071d9a49f8c..e892893fa20 100644 --- a/Master/texmf-dist/tex/latex-dev/base/ansinew.def +++ b/Master/texmf-dist/tex/latex-dev/base/ansinew.def @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/base/applemac.def b/Master/texmf-dist/tex/latex-dev/base/applemac.def index 85032040d8c..e8fd7822271 100644 --- a/Master/texmf-dist/tex/latex-dev/base/applemac.def +++ b/Master/texmf-dist/tex/latex-dev/base/applemac.def @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/base/article.cls b/Master/texmf-dist/tex/latex-dev/base/article.cls index 0dcb9da0226..5ab6daa7b97 100644 --- a/Master/texmf-dist/tex/latex-dev/base/article.cls +++ b/Master/texmf-dist/tex/latex-dev/base/article.cls @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% @@ -43,7 +43,7 @@ %% extension .ins) which are part of the distribution. \NeedsTeXFormat{LaTeX2e}[1995/12/01] \ProvidesClass{article} - [2024/06/29 v1.4n + [2025/01/22 v1.4n Standard LaTeX document class] \newcommand\@ptsize{} \newif\if@restonecol diff --git a/Master/texmf-dist/tex/latex-dev/base/article.sty b/Master/texmf-dist/tex/latex-dev/base/article.sty index cc34e8a7443..48ad87d515c 100644 --- a/Master/texmf-dist/tex/latex-dev/base/article.sty +++ b/Master/texmf-dist/tex/latex-dev/base/article.sty @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/base/ascii.def b/Master/texmf-dist/tex/latex-dev/base/ascii.def index 0f08f8091f8..ddfede3bbb3 100644 --- a/Master/texmf-dist/tex/latex-dev/base/ascii.def +++ b/Master/texmf-dist/tex/latex-dev/base/ascii.def @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/base/atbegshi-ltx.sty b/Master/texmf-dist/tex/latex-dev/base/atbegshi-ltx.sty index 992a4278526..2917fa3f011 100644 --- a/Master/texmf-dist/tex/latex-dev/base/atbegshi-ltx.sty +++ b/Master/texmf-dist/tex/latex-dev/base/atbegshi-ltx.sty @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% @@ -42,7 +42,7 @@ %% and covered by LPPL is defined by the unpacking scripts (with %% extension .ins) which are part of the distribution. %% -%% Copyright (C) 2020-2024 +%% Copyright (C) 2020-2025 %% Frank Mittelbach, The LaTeX Project %% %%% From File: ltshipout.dtx diff --git a/Master/texmf-dist/tex/latex-dev/base/atveryend-ltx.sty b/Master/texmf-dist/tex/latex-dev/base/atveryend-ltx.sty index 76d4e001d38..00771d4998b 100644 --- a/Master/texmf-dist/tex/latex-dev/base/atveryend-ltx.sty +++ b/Master/texmf-dist/tex/latex-dev/base/atveryend-ltx.sty @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/base/bezier.sty b/Master/texmf-dist/tex/latex-dev/base/bezier.sty index 2bc376dfb33..88940623b60 100644 --- a/Master/texmf-dist/tex/latex-dev/base/bezier.sty +++ b/Master/texmf-dist/tex/latex-dev/base/bezier.sty @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/base/bk10.clo b/Master/texmf-dist/tex/latex-dev/base/bk10.clo index 958c45b467e..d43ae2d5f8c 100644 --- a/Master/texmf-dist/tex/latex-dev/base/bk10.clo +++ b/Master/texmf-dist/tex/latex-dev/base/bk10.clo @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% @@ -42,7 +42,7 @@ %% and covered by LPPL is defined by the unpacking scripts (with %% extension .ins) which are part of the distribution. \ProvidesFile{bk10.clo} - [2024/06/29 v1.4n + [2025/01/22 v1.4n Standard LaTeX file (size option)] \renewcommand\normalsize{% \@setfontsize\normalsize\@xpt\@xiipt diff --git a/Master/texmf-dist/tex/latex-dev/base/bk11.clo b/Master/texmf-dist/tex/latex-dev/base/bk11.clo index cbcbd0dae62..d8ff5c4eed6 100644 --- a/Master/texmf-dist/tex/latex-dev/base/bk11.clo +++ b/Master/texmf-dist/tex/latex-dev/base/bk11.clo @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% @@ -42,7 +42,7 @@ %% and covered by LPPL is defined by the unpacking scripts (with %% extension .ins) which are part of the distribution. \ProvidesFile{bk11.clo} - [2024/06/29 v1.4n + [2025/01/22 v1.4n Standard LaTeX file (size option)] \renewcommand\normalsize{% \@setfontsize\normalsize\@xipt{13.6}% diff --git a/Master/texmf-dist/tex/latex-dev/base/bk12.clo b/Master/texmf-dist/tex/latex-dev/base/bk12.clo index ccdb40f6d42..5648bcd1214 100644 --- a/Master/texmf-dist/tex/latex-dev/base/bk12.clo +++ b/Master/texmf-dist/tex/latex-dev/base/bk12.clo @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% @@ -42,7 +42,7 @@ %% and covered by LPPL is defined by the unpacking scripts (with %% extension .ins) which are part of the distribution. \ProvidesFile{bk12.clo} - [2024/06/29 v1.4n + [2025/01/22 v1.4n Standard LaTeX file (size option)] \renewcommand\normalsize{% \@setfontsize\normalsize\@xiipt{14.5}% diff --git a/Master/texmf-dist/tex/latex-dev/base/book.cls b/Master/texmf-dist/tex/latex-dev/base/book.cls index e73e83ea3c0..11cd0ee0f9e 100644 --- a/Master/texmf-dist/tex/latex-dev/base/book.cls +++ b/Master/texmf-dist/tex/latex-dev/base/book.cls @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% @@ -43,7 +43,7 @@ %% extension .ins) which are part of the distribution. \NeedsTeXFormat{LaTeX2e}[1995/12/01] \ProvidesClass{book} - [2024/06/29 v1.4n + [2025/01/22 v1.4n Standard LaTeX document class] \newcommand\@ptsize{} \newif\if@restonecol diff --git a/Master/texmf-dist/tex/latex-dev/base/book.sty b/Master/texmf-dist/tex/latex-dev/base/book.sty index b2cb30a2e14..fc94e98b95b 100644 --- a/Master/texmf-dist/tex/latex-dev/base/book.sty +++ b/Master/texmf-dist/tex/latex-dev/base/book.sty @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/base/checkencodingsubset.tex b/Master/texmf-dist/tex/latex-dev/base/checkencodingsubset.tex index 54663361c3d..7abc9c491c6 100644 --- a/Master/texmf-dist/tex/latex-dev/base/checkencodingsubset.tex +++ b/Master/texmf-dist/tex/latex-dev/base/checkencodingsubset.tex @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/base/cp1250.def b/Master/texmf-dist/tex/latex-dev/base/cp1250.def index a4dfaed86d7..a8019bd2d0c 100644 --- a/Master/texmf-dist/tex/latex-dev/base/cp1250.def +++ b/Master/texmf-dist/tex/latex-dev/base/cp1250.def @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/base/cp1252.def b/Master/texmf-dist/tex/latex-dev/base/cp1252.def index ae5a89e75cc..d467834178c 100644 --- a/Master/texmf-dist/tex/latex-dev/base/cp1252.def +++ b/Master/texmf-dist/tex/latex-dev/base/cp1252.def @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/base/cp1257.def b/Master/texmf-dist/tex/latex-dev/base/cp1257.def index 78fdbcbdf76..b71b5a0941f 100644 --- a/Master/texmf-dist/tex/latex-dev/base/cp1257.def +++ b/Master/texmf-dist/tex/latex-dev/base/cp1257.def @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/base/cp437.def b/Master/texmf-dist/tex/latex-dev/base/cp437.def index 17a2a2e7784..9e1ab356554 100644 --- a/Master/texmf-dist/tex/latex-dev/base/cp437.def +++ b/Master/texmf-dist/tex/latex-dev/base/cp437.def @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/base/cp437de.def b/Master/texmf-dist/tex/latex-dev/base/cp437de.def index edaccf6a2f4..2b0d6c49ee3 100644 --- a/Master/texmf-dist/tex/latex-dev/base/cp437de.def +++ b/Master/texmf-dist/tex/latex-dev/base/cp437de.def @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/base/cp850.def b/Master/texmf-dist/tex/latex-dev/base/cp850.def index 40f3cb6eea9..a855f916c31 100644 --- a/Master/texmf-dist/tex/latex-dev/base/cp850.def +++ b/Master/texmf-dist/tex/latex-dev/base/cp850.def @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/base/cp852.def b/Master/texmf-dist/tex/latex-dev/base/cp852.def index 0fc6c20a561..a24c6a50c21 100644 --- a/Master/texmf-dist/tex/latex-dev/base/cp852.def +++ b/Master/texmf-dist/tex/latex-dev/base/cp852.def @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/base/cp858.def b/Master/texmf-dist/tex/latex-dev/base/cp858.def index 5760e667642..f1ecc9629b8 100644 --- a/Master/texmf-dist/tex/latex-dev/base/cp858.def +++ b/Master/texmf-dist/tex/latex-dev/base/cp858.def @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/base/cp865.def b/Master/texmf-dist/tex/latex-dev/base/cp865.def index dc86f46bde3..359f7dfaee0 100644 --- a/Master/texmf-dist/tex/latex-dev/base/cp865.def +++ b/Master/texmf-dist/tex/latex-dev/base/cp865.def @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/base/decmulti.def b/Master/texmf-dist/tex/latex-dev/base/decmulti.def index ae98cc99728..33c90c4c408 100644 --- a/Master/texmf-dist/tex/latex-dev/base/decmulti.def +++ b/Master/texmf-dist/tex/latex-dev/base/decmulti.def @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/base/doc.sty b/Master/texmf-dist/tex/latex-dev/base/doc.sty index 31930d29767..bfbb99b4d7c 100644 --- a/Master/texmf-dist/tex/latex-dev/base/doc.sty +++ b/Master/texmf-dist/tex/latex-dev/base/doc.sty @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% @@ -52,7 +52,7 @@ \DeclareCurrentRelease{v3}{2022-06-01} \ProvidesPackage{doc} - [2024/10/23 v3.0q + [2024/12/25 v3.0q Standard LaTeX documentation package V3 (FMi)] %% %% Package `doc' to use with LaTeX 2e @@ -62,6 +62,7 @@ + \@ifundefined{macro@cnt}{}{\endinput} \catcode`\^^A=14 \catcode`\^^X=14 diff --git a/Master/texmf-dist/tex/latex-dev/base/docstrip.tex b/Master/texmf-dist/tex/latex-dev/base/docstrip.tex index e96e04ef127..6b8c95cea7d 100644 --- a/Master/texmf-dist/tex/latex-dev/base/docstrip.tex +++ b/Master/texmf-dist/tex/latex-dev/base/docstrip.tex @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% @@ -44,9 +44,9 @@ \catcode`\{=1 \catcode`\}=2 \def\filename{docstrip.dtx} -\def\fileversion{v2.6b} -\def\filedate{2022-09-03} -\def\docdate {2024-02-08} +\def\fileversion{v2.6c} +\def\filedate{2024-12-23} +\def\docdate {2024-12-23} %% %% The docstrip program for use with TeX. %% Copyright (C) 1989-1991 Frank Mittelbach @@ -573,8 +573,22 @@ Z \fi } \def\@fileX#1#2{% + \ifx#1\relax \else + \errmessage{Command \string#1 for denoting the output \noexpand + \file stream already defined!^^J + \space Current meaning is:^^J^^J\meaning#1^^J^^J + \space Extraction will probably fail - check result}% + \fi \chardef#1=\stream@closed \def\curout{#1}% + \ifx\curout\currentpreamble + \errmessage{Declared preamble name \string#1 not allowed if + \string\file{\@stripstring#1} is used}% + \fi + \ifx\curout\currentpostamble + \errmessage{Declared postamble name \string#1 not allowed if + \string\file{\@stripstring#1} is used}% + \fi \let\curinfiles\empty \let\curinnames\empty \def\curref{\MetaPrefix ^^J% diff --git a/Master/texmf-dist/tex/latex-dev/base/exscale.sty b/Master/texmf-dist/tex/latex-dev/base/exscale.sty index 41d64bbffea..992c3bbcf04 100644 --- a/Master/texmf-dist/tex/latex-dev/base/exscale.sty +++ b/Master/texmf-dist/tex/latex-dev/base/exscale.sty @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/base/fix-cm.sty b/Master/texmf-dist/tex/latex-dev/base/fix-cm.sty index e16030b13e5..536e385e4a9 100644 --- a/Master/texmf-dist/tex/latex-dev/base/fix-cm.sty +++ b/Master/texmf-dist/tex/latex-dev/base/fix-cm.sty @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/base/fixltx2e.sty b/Master/texmf-dist/tex/latex-dev/base/fixltx2e.sty index a5f6f4cc948..1c004fa7e6b 100644 --- a/Master/texmf-dist/tex/latex-dev/base/fixltx2e.sty +++ b/Master/texmf-dist/tex/latex-dev/base/fixltx2e.sty @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/base/flafter.sty b/Master/texmf-dist/tex/latex-dev/base/flafter.sty index ca332b7b16b..fc61febca28 100644 --- a/Master/texmf-dist/tex/latex-dev/base/flafter.sty +++ b/Master/texmf-dist/tex/latex-dev/base/flafter.sty @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% @@ -43,8 +43,111 @@ %% extension .ins) which are part of the distribution. %%% From File: ltoutput.dtx \ProvidesPackage{flafter} - [2024/11/16 v1.4k + [2025/02/20 v1.4n Standard LaTeX floats after reference (FMi)] +\IncludeInRelease{2025/06/01}% + {\@addtocurcol}{float order in 2-column}% +\def \@addtocurcol {% + \fl@trace{***Start addtocurcol}% + \@insertfalse + \@setfloattypecounts + \ifnum \@fpstype=8 + \fl@trace{fpstype !p only (addtocurcol): \the \@fpstype = 8?}% + \else + \ifnum \@fpstype=24 + \fl@trace{fpstype p only (addtocurcol): \the \@fpstype = 24?}% + \else + \@flsettextmin + \fl@trace{textfloatsheight (before) = \the \@textfloatsheight}% + \advance \@textmin \@textfloatsheight + \@reqcolroom \@pageht + \fl@trace{textmin + textfloatsheight: \the \@textmin}% + \fl@trace{page-so-far: \the \@reqcolroom}% + \ifdim \@textmin>\@reqcolroom + \@reqcolroom \@textmin + \fl@trace{ORD? textmin being used}% + \fi + \advance \@reqcolroom \ht\@currbox + \saved@reqcolroom \@reqcolroom + \fl@trace{float size = \the \ht \@currbox (addtocurcol)}% + \fl@trace{colroom = \the \@colroom (addtocurcol)}% + \fl@trace{reqcolroom = \the \@reqcolroom (addtocurcol)}% + \ifdim \@colroom>\@reqcolroom + \@flsetnum \@colnum + \ifnum \@colnum>\z@ + \@bitor\@currtype\@deferlist + \@testwrongwidth\@currbox + \fl@trace{deferlist: \@deferlist: (addtocurcol-before)}% + \if@test + \fl@trace{type already on list: defer (addtocurcol)}% + \else + \@bitor\@currtype\@botlist + \fl@trace{botlist: \@botlist: (addtocurcol-before)}% + \if@test + \fl@trace{type already on list: bot---sent to addtobot}% + \@addtobot + \else + \fl@trace{fpstype \ifodd \@tempcnta OK \else not \fi + here: \the \@fpstype}% + \ifodd \count\@currbox + \advance \@reqcolroom \intextsep + \ifdim \@colroom>\@reqcolroom + \global \advance \@colnum \m@ne + \global \advance \@textfloatsheight \ht\@currbox + \global \advance \@textfloatsheight 2\intextsep + \@cons \@midlist \@currbox + \fl@trace{***Success: here}% + \fl@trace{textfloatsheight (after-here) = + \the \@textfloatsheight}% + \fl@trace{colnum (after-here) = \the \@colnum}% + \if@nobreak + \nobreak + \@nobreakfalse + \everypar{}% + \else + \addpenalty \interlinepenalty + \fi + \vskip \intextsep + \box\@currbox + \penalty\interlinepenalty + \vskip\intextsep + \ifnum\outputpenalty <-\@Mii \vskip -\parskip\fi + \outputpenalty \z@ + \@inserttrue + \else + \fl@trace{Fail---no room at 2nd test of colroom + (addtocorcol \string\intextsep)}% + \fi + \fi + \if@insert + \else + \fl@trace{not here: sent to addtobot}% + \@addtobot + \fi + \fi + \fi + \else + \fl@trace{Fail: colnum = \the \@colnum: + fpstype \the \@fpstype=ORD?}% + \ifnum \@fpstype<\sixt@@n + \fl@trace{ERROR: BANG float not successful (addtocurcol)}% + \fi + \fi + \else + \fl@trace{Fail---no room: fl box ht: \the \ht \@currbox + (addtocurcol)}% + \fi + \fi + \fi + \if@insert + \else + \@resethfps + \fl@trace{put on deferlist (addtocurcol)}% + \@cons\@deferlist\@currbox + \fl@trace{deferlist: \@deferlist: (addtocurcol-after)}% + \fi +}% +\EndIncludeInRelease \IncludeInRelease{2015/01/01}% {\@addtocurcol}{float order in 2-column}% \def \@addtocurcol {% diff --git a/Master/texmf-dist/tex/latex-dev/base/fleqn.clo b/Master/texmf-dist/tex/latex-dev/base/fleqn.clo index f2a45b8ade4..f8f3e1a5840 100644 --- a/Master/texmf-dist/tex/latex-dev/base/fleqn.clo +++ b/Master/texmf-dist/tex/latex-dev/base/fleqn.clo @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/base/fleqn.sty b/Master/texmf-dist/tex/latex-dev/base/fleqn.sty index 56fb8376599..c2b06ef81bd 100644 --- a/Master/texmf-dist/tex/latex-dev/base/fleqn.sty +++ b/Master/texmf-dist/tex/latex-dev/base/fleqn.sty @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/base/fltrace.sty b/Master/texmf-dist/tex/latex-dev/base/fltrace.sty index 17adc6c4771..5f0de43a898 100644 --- a/Master/texmf-dist/tex/latex-dev/base/fltrace.sty +++ b/Master/texmf-dist/tex/latex-dev/base/fltrace.sty @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% @@ -43,7 +43,7 @@ %% extension .ins) which are part of the distribution. %%% From File: ltoutput.dtx \ProvidesPackage{fltrace} - [2024/11/16 v1.4k + [2025/02/20 v1.4n Tracing LaTeX floats algorithm (FMi)] \def\onecolumn{% \clearpage @@ -234,16 +234,11 @@ \global \@mparbottom \z@ \global \@textfloatsheight \z@ \@floatplacement } -\gdef \@makespecialcolbox {% +\def \@make@specialcolbox {% \fl@trace{Kludgeins ht \the\ht\@kludgeins\space dp \the\dp\@kludgeins\space wd \the\wd\@kludgeins}% - \setbox\@outputbox \vbox {% - \@texttop - \dimen@ \dp\@outputbox - \unvbox\@outputbox - \vskip-\dimen@ - }% + \@outputbox@append {\vskip-\@outputbox@depth}% \@tempdima \@colht \ifdim \wd\@kludgeins>\z@ \advance \@tempdima -\ht\@outputbox @@ -405,6 +400,109 @@ \@addtobot \fi } +\IncludeInRelease{2025/06/01}% + {\@addtocurcol}{float order in 2-column}% +\def \@addtocurcol {% + \fl@trace{***Start addtocurcol}% + \@insertfalse + \@setfloattypecounts + \ifnum \@fpstype=8 + \fl@trace{fpstype !p only (addtocurcol): \the \@fpstype = 8?}% + \else + \ifnum \@fpstype=24 + \fl@trace{fpstype p only (addtocurcol): \the \@fpstype = 24?}% + \else + \@flsettextmin + \fl@trace{textfloatsheight (before) = \the \@textfloatsheight}% + \advance \@textmin \@textfloatsheight + \@reqcolroom \@pageht + \fl@trace{textmin + textfloatsheight: \the \@textmin}% + \fl@trace{page-so-far: \the \@reqcolroom}% + \ifdim \@textmin>\@reqcolroom + \@reqcolroom \@textmin + \fl@trace{ORD? textmin being used}% + \fi + \advance \@reqcolroom \ht\@currbox + \saved@reqcolroom \@reqcolroom + \fl@trace{float size = \the \ht \@currbox (addtocurcol)}% + \fl@trace{colroom = \the \@colroom (addtocurcol)}% + \fl@trace{reqcolroom = \the \@reqcolroom (addtocurcol)}% + \ifdim \@colroom>\@reqcolroom + \@flsetnum \@colnum + \ifnum \@colnum>\z@ + \@bitor\@currtype\@deferlist + \@testwrongwidth\@currbox + \fl@trace{deferlist: \@deferlist: (addtocurcol-before)}% + \if@test + \fl@trace{type already on list: defer (addtocurcol)}% + \else + \@bitor\@currtype\@botlist + \fl@trace{botlist: \@botlist: (addtocurcol-before)}% + \if@test + \fl@trace{type already on list: bot---sent to addtobot}% + \@addtobot + \else + \fl@trace{fpstype \ifodd \@tempcnta OK \else not \fi + here: \the \@fpstype}% + \ifodd \count\@currbox + \advance \@reqcolroom \intextsep + \ifdim \@colroom>\@reqcolroom + \global \advance \@colnum \m@ne + \global \advance \@textfloatsheight \ht\@currbox + \global \advance \@textfloatsheight 2\intextsep + \@cons \@midlist \@currbox + \fl@trace{***Success: here}% + \fl@trace{textfloatsheight (after-here) = + \the \@textfloatsheight}% + \fl@trace{colnum (after-here) = \the \@colnum}% + \if@nobreak + \nobreak + \@nobreakfalse + \everypar{}% + \else + \addpenalty \interlinepenalty + \fi + \vskip \intextsep + \box\@currbox + \penalty\interlinepenalty + \vskip\intextsep + \ifnum\outputpenalty <-\@Mii \vskip -\parskip\fi + \outputpenalty \z@ + \@inserttrue + \else + \fl@trace{Fail---no room at 2nd test of colroom + (addtocorcol \string\intextsep)}% + \fi + \fi + \if@insert + \else + \fl@trace{not here: sent to addtotoporbot}% + \@addtotoporbot + \fi + \fi + \fi + \else + \fl@trace{Fail: colnum = \the \@colnum: + fpstype \the \@fpstype=ORD?}% + \ifnum \@fpstype<\sixt@@n + \fl@trace{ERROR: BANG float not successful (addtocurcol)}% + \fi + \fi + \else + \fl@trace{Fail---no room: fl box ht: \the \ht \@currbox + (addtocurcol)}% + \fi + \fi + \fi + \if@insert + \else + \@resethfps + \fl@trace{put on deferlist (addtocurcol)}% + \@cons\@deferlist\@currbox + \fl@trace{deferlist: \@deferlist: (addtocurcol-after)}% + \fi +}% +\EndIncludeInRelease \IncludeInRelease{2015/01/01}% {\@addtocurcol}{float order in 2-column}% \def \@addtocurcol {% @@ -629,6 +727,59 @@ \fi }% \EndIncludeInRelease +\IncludeInRelease{2025/06/01} + {\@addtonextcol}{float order in 2-column}% +\def\@addtonextcol{% + \begingroup + \fl@trace{***Start addtonextcol}% + \@insertfalse + \@setfloattypecounts + \ifnum \@fpstype=8 + \fl@trace{fpstype not curcol: \the \@fpstype = 8?}% + \else + \ifnum \@fpstype=24 + \fl@trace{fpstype not curcol: \the \@fpstype = 24?}% + \else + \@flsettextmin + \fl@trace{text-so-far: 0pt (top of col)}% + \@reqcolroom \ht\@currbox + \fl@trace{float size: \the \@reqcolroom (addtonextcol)}% + \advance \@reqcolroom \@textmin + \saved@reqcolroom \@reqcolroom + \fl@trace{colroom = \the \@colroom (addtonextcol)}% + \fl@trace{reqcolroom = \the \@reqcolroom (addtonextcol)}% + \ifdim \@colroom>\@reqcolroom + \@flsetnum \@colnum + \ifnum\@colnum>\z@ + \@bitor\@currtype\@deferlist + \fl@trace{deferlist: \@deferlist: (addtonextcol-before)}% + \@testwrongwidth\@currbox + \if@test + \fl@trace{type already on list: defer (addtonextcol)}% + \else + \fl@trace{sent to addtotoporbot (addtonextcol)}% + \@addtotoporbot + \fi + \fi + \else + \fl@trace{Fail---no room: fl box ht: \the \ht \@currbox + (addtonextcol)}% + \fi + \fi + \fi + \if@insert + \else + \fl@trace{put back on deferlist (addtonextcol)}% + \@cons\@deferlist\@currbox + \fl@trace{deferlist: \@deferlist: (addtonextcol-after)}% + \fi + \fl@trace{End of addtonextcol -- locally counts:}% + \fl@trace{col: \the\@colnum. top: \the \@topnum. bot: \the \@botnum.}% + \endgroup + \fl@trace{End of addtonextcol -- globally counts:}% + \fl@trace{col: \the\@colnum. top: \the \@topnum. bot: \the \@botnum.}% +}% +\EndIncludeInRelease \IncludeInRelease{2015/01/01} {\@addtonextcol}{float order in 2-column}% \def\@addtonextcol{% @@ -1066,7 +1217,10 @@ \fl@trace{ORD textmin = \the \@textmin}% \fi } +\IncludeInRelease{2025/06/01}% + {\@flcheckspace}{float placement calculation}% \def \@flcheckspace #1#2{% + \@reqcolroom \saved@reqcolroom \advance \@reqcolroom \ifx #2\@empty \textfloatsep \else \floatsep \fi \fl@trace{colroom = \the \@colroom @@ -1085,13 +1239,13 @@ \fl@trace{BANG float ignoring #1 (flcheckspace \string#1 \string#2):}% \fl@trace{\@spaces #1 = \the #1. Ht float: \the \ht \@currbox - BANG}% + \space BANG}% \@tempswatrue \else \fl@trace{Fail---no room (flcheckspace \string#1 \string#2) (fpstype \the \@fpstype=ORD?):}% \fl@trace{\@spaces #1 = \the #1. Ht float: \the \ht \@currbox - ORD?}% + \space ORD?}% \fi \fi \else @@ -1099,6 +1253,44 @@ (flcheckspace \string#1 \string#2)}% \fi } +\EndIncludeInRelease +\IncludeInRelease{0000/00/00}% + {\@flcheckspace}{float placement calculation}% + +\def \@flcheckspace #1#2{% + \advance \@reqcolroom + \ifx #2\@empty \textfloatsep \else \floatsep \fi + \fl@trace{colroom = \the \@colroom + (flcheckspace \string#1 \string#2)}% + \fl@trace{reqcolroom = \the \@reqcolroom + (flcheckspace \string#1 \string#2)}% + \ifdim \@colroom>\@reqcolroom + \ifdim #1>\ht\@currbox + \@tempswatrue + \fl@trace{Space OK: #1 = \the #1 > \the \ht \@currbox + (flcheckspace \string#1 \string#2)}% + \else + \fl@trace{fpstype: \the \@fpstype + (flcheckspace \string#1 \string#2)}% + \ifnum \@fpstype<\sixt@@n + \fl@trace{BANG float ignoring #1 + (flcheckspace \string#1 \string#2):}% + \fl@trace{\@spaces #1 = \the #1. Ht float: \the \ht \@currbox + \space BANG}% + \@tempswatrue + \else + \fl@trace{Fail---no room (flcheckspace \string#1 \string#2) + (fpstype \the \@fpstype=ORD?):}% + \fl@trace{\@spaces #1 = \the #1. Ht float: \the \ht \@currbox + \space ORD?}% + \fi + \fi + \else + \fl@trace{Fail---no room at 2nd test of colroom + (flcheckspace \string#1 \string#2)}% + \fi +} +\EndIncludeInRelease \IncludeInRelease{2017/01/01}% {\@makefcolumn}{negative height floats}% \def\@makefcolumn #1{% diff --git a/Master/texmf-dist/tex/latex-dev/base/fontenc.sty b/Master/texmf-dist/tex/latex-dev/base/fontenc.sty index 51c2f7df284..1024221d541 100644 --- a/Master/texmf-dist/tex/latex-dev/base/fontenc.sty +++ b/Master/texmf-dist/tex/latex-dev/base/fontenc.sty @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% @@ -43,7 +43,7 @@ %% extension .ins) which are part of the distribution. %%% From File: ltoutenc.dtx \ProvidesPackage{fontenc} - [2024/11/06 v2.1b + [2024/12/21 v2.1c Standard LaTeX package] \def\update@uclc@with@cyrillic{% \expandafter\def\expandafter\@uclclist\expandafter diff --git a/Master/texmf-dist/tex/latex-dev/base/fontmath.cfg b/Master/texmf-dist/tex/latex-dev/base/fontmath.cfg index 0edfc33f6fe..4d81b64482e 100644 --- a/Master/texmf-dist/tex/latex-dev/base/fontmath.cfg +++ b/Master/texmf-dist/tex/latex-dev/base/fontmath.cfg @@ -8,7 +8,7 @@ %% %% This is a generated file. %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/base/fontmath.ltx b/Master/texmf-dist/tex/latex-dev/base/fontmath.ltx index c4a7d49a36e..e3921e51b9f 100644 --- a/Master/texmf-dist/tex/latex-dev/base/fontmath.ltx +++ b/Master/texmf-dist/tex/latex-dev/base/fontmath.ltx @@ -8,7 +8,7 @@ %% %% This is a generated file. %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/base/fonttext.cfg b/Master/texmf-dist/tex/latex-dev/base/fonttext.cfg index dffaf71b43d..ea67ad0b7f5 100644 --- a/Master/texmf-dist/tex/latex-dev/base/fonttext.cfg +++ b/Master/texmf-dist/tex/latex-dev/base/fonttext.cfg @@ -8,7 +8,7 @@ %% %% This is a generated file. %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/base/fonttext.ltx b/Master/texmf-dist/tex/latex-dev/base/fonttext.ltx index 06eb08221ae..11b7f905dc3 100644 --- a/Master/texmf-dist/tex/latex-dev/base/fonttext.ltx +++ b/Master/texmf-dist/tex/latex-dev/base/fonttext.ltx @@ -8,7 +8,7 @@ %% %% This is a generated file. %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/base/graphpap.sty b/Master/texmf-dist/tex/latex-dev/base/graphpap.sty index 07b03c71b7c..c0788af6c96 100644 --- a/Master/texmf-dist/tex/latex-dev/base/graphpap.sty +++ b/Master/texmf-dist/tex/latex-dev/base/graphpap.sty @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/base/hyphen.ltx b/Master/texmf-dist/tex/latex-dev/base/hyphen.ltx index 81358f46845..87d7a6223c0 100644 --- a/Master/texmf-dist/tex/latex-dev/base/hyphen.ltx +++ b/Master/texmf-dist/tex/latex-dev/base/hyphen.ltx @@ -8,7 +8,7 @@ %% %% This is a generated file. %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/base/idx.tex b/Master/texmf-dist/tex/latex-dev/base/idx.tex index 001595bb7d5..6e7dc676b70 100644 --- a/Master/texmf-dist/tex/latex-dev/base/idx.tex +++ b/Master/texmf-dist/tex/latex-dev/base/idx.tex @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2024 +% Copyright (C) 1993-2025 % The LaTeX Project and any individual authors listed elsewhere % in this file. % diff --git a/Master/texmf-dist/tex/latex-dev/base/ifthen.sty b/Master/texmf-dist/tex/latex-dev/base/ifthen.sty index 780b457e3f0..72ef84711dc 100644 --- a/Master/texmf-dist/tex/latex-dev/base/ifthen.sty +++ b/Master/texmf-dist/tex/latex-dev/base/ifthen.sty @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% @@ -44,7 +44,7 @@ %% %% File `ifthen.dtx'. %% Copyright (C) 1991 by Leslie Lamport -%% Copyright (C) 1994-2024 LaTeX project, David Carlisle +%% Copyright (C) 1994-2025 LaTeX project, David Carlisle %% all rights reserved. %% \NeedsTeXFormat{LaTeX2e}[1994/12/01] diff --git a/Master/texmf-dist/tex/latex-dev/base/inputenc.sty b/Master/texmf-dist/tex/latex-dev/base/inputenc.sty index 8d4a01b46d2..c9a77770870 100644 --- a/Master/texmf-dist/tex/latex-dev/base/inputenc.sty +++ b/Master/texmf-dist/tex/latex-dev/base/inputenc.sty @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/base/lablst.tex b/Master/texmf-dist/tex/latex-dev/base/lablst.tex index 961928d5ad8..5115204512f 100644 --- a/Master/texmf-dist/tex/latex-dev/base/lablst.tex +++ b/Master/texmf-dist/tex/latex-dev/base/lablst.tex @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2024 +% Copyright (C) 1993-2025 % The LaTeX Project and any individual authors listed elsewhere % in this file. % diff --git a/Master/texmf-dist/tex/latex-dev/base/latex.ltx b/Master/texmf-dist/tex/latex-dev/base/latex.ltx index eeaba260833..8c8610d3314 100644 --- a/Master/texmf-dist/tex/latex-dev/base/latex.ltx +++ b/Master/texmf-dist/tex/latex-dev/base/latex.ltx @@ -65,7 +65,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% @@ -710,7 +710,7 @@ \def\fmtname{LaTeX2e} \edef\fmtversion {2025-06-01} -\def\patch@level{-1} +\def\patch@level{-2} \edef\development@branch@name{develop \the\year-\the\month-\the\day} \iffalse \def\reserved@a#1/#2/#3\@nil{% @@ -1811,15 +1811,17 @@ \xdef#1{\the\toks@}% \endgroup} %%% From File: ltcmd.dtx -\def\ltcmdversion{v1.2f} -\def\ltcmddate{2024-07-06} +\def\ltcmdversion{v1.3b} +\def\ltcmddate{2025-02-01} \message{document commands,} \ExplSyntaxOn +\cs_generate_variant:Nn \tl_head:n { e } \tl_new:N \l__cmd_arg_spec_tl \tl_new:N \l__cmd_args_tl \tl_new:N \l__cmd_args_i_tl \tl_new:N \l__cmd_args_ii_tl \int_new:N \l__cmd_current_arg_int +\int_new:N \l__cmd_total_args_int \bool_new:N \l__cmd_defaults_bool \tl_new:N \l__cmd_defaults_tl \bool_new:N \l__cmd_environment_bool @@ -1850,6 +1852,7 @@ \bool_new:N \l__cmd_some_obey_spaces_bool \bool_new:N \l__cmd_some_long_bool \bool_new:N \l__cmd_some_short_bool +\bool_new:N \l__cmd_final_verb_bool \quark_new:N \q__cmd_recursion_tail \quark_new:N \q__cmd_recursion_stop \__kernel_quark_new_test:N \__cmd_if_recursion_tail_stop_do:Nn @@ -2434,17 +2437,22 @@ \__cmd_normalize_arg_spec_loop:n } \cs_new_protected:Npn \__cmd_normalize_type_b:w #1 + { \__cmd_normalize_type_b_or_c:nn {#1} { b } } +\cs_new_protected:Npn \__cmd_normalize_type_c:w #1 + { \__cmd_normalize_type_b_or_c:nn {#1} { c } } +\cs_new_protected:Npn \__cmd_normalize_type_b_or_c:nn #1#2 { \bool_if:NF \l__cmd_environment_bool { \msg_error:nnxx { cmd } { invalid-command-arg } - { \__cmd_environment_or_command: } { b } + { \__cmd_environment_or_command: } {#2} \__cmd_bad_def:wn } \tl_clear:N \l__cmd_last_delimiters_tl - \__cmd_add_arg_spec:n { b } + \__cmd_add_arg_spec:n {#2} \quark_if_recursion_tail_stop:n {#1} - \msg_error:nnxx { cmd } { arg-after-body } + \msg_error:nnxxx { cmd } { arg-after-body } + {#2} { \__cmd_environment_or_command: } { \tl_to_str:n {#1} } \__cmd_bad_def:wn @@ -2535,7 +2543,10 @@ { \bool_set_true:N \l__cmd_some_short_bool } \tl_put_right:Nx \l__cmd_arg_spec_tl { - \bool_if:NT \l__cmd_long_bool { + } + \bool_lazy_and:nnT + { \l__cmd_long_bool } + { ! \str_if_eq_p:nn {#1} { c } } + { + } \bool_if:NT \l__cmd_obey_spaces_bool { ! } \exp_not:n {#1} } @@ -2560,6 +2571,7 @@ } \cs_new_protected:Npn \__cmd_prepare_signature:n #1 { + \int_set_eq:NN \l__cmd_total_args_int \l__cmd_current_arg_int \int_zero:N \l__cmd_current_arg_int \bool_set_false:N \l__cmd_long_bool \bool_set_false:N \l__cmd_obey_spaces_bool @@ -2571,9 +2583,16 @@ \tl_clear:N \l__cmd_process_one_tl \bool_set_false:N \l__cmd_process_some_bool \tl_clear:N \l__cmd_signature_tl + \__cmd_prepare_signature_verb_chk:n {#1} \__cmd_prepare_signature:N #1 \q_recursion_tail \q_recursion_stop \bool_if:NF \l__cmd_expandable_bool { \__cmd_flush_m_args: } } +\cs_new_protected:Npn \__cmd_prepare_signature_verb_chk:n #1 + { + \str_if_eq:eeTF { \tl_head:e { \tl_reverse:n {#1} } } { c } + { \bool_set_true:N \l__cmd_final_verb_bool } + { \bool_set_false:N \l__cmd_final_verb_bool } + } \cs_new_protected:Npn \__cmd_prepare_signature:N { \bool_set_false:N \l__cmd_prefixed_bool @@ -2622,10 +2641,14 @@ \__cmd_prepare_signature_bypass:N } \cs_new_protected:Npn \__cmd_add_type_b:w + { \__cmd_add_type_b_or_c:N b } +\cs_new_protected:Npn \__cmd_add_type_c:w + { \__cmd_add_type_b_or_c:N c } +\cs_new_protected:Npn \__cmd_add_type_b_or_c:N #1 { \__cmd_flush_m_args: \__cmd_add_default: - \__cmd_add_grabber:N b + \__cmd_add_grabber:N #1 \__cmd_prepare_signature:N } \cs_new_protected:Npn \__cmd_add_type_D:w #1#2#3 @@ -2715,12 +2738,23 @@ { \l__cmd_suppress_strip_bool } { \str_if_eq_p:nn {#1} { D } } { _no_strip } + \bool_lazy_all:nT + { + { \l__cmd_final_verb_bool } + { \str_if_eq_p:nn {#1} { D } } + { + \int_compare_p:nNn \l__cmd_current_arg_int + = { \l__cmd_total_args_int - 1 } + } + } + { _verb_safe } :w } } \bool_set_false:N \l__cmd_long_bool \bool_set_false:N \l__cmd_obey_spaces_bool \bool_set_false:N \l__cmd_suppress_strip_bool + \bool_set_false:N \l__cmd_verb_safe_bool \tl_put_right:Nx \l__cmd_process_all_tl { { @@ -3273,56 +3307,249 @@ \__cmd_run_code: \end } -\cs_new_protected:Npn \__cmd_grab_D:w #1#2#3 \__cmd_run_code: +\cs_new_protected:Npn \__cmd_grab_c:w #1 \__cmd_run_code: { - \__cmd_grab_D_aux:NNnNNN #1 #2 {#3} \cs_set_protected_nopar:Npn - \__cmd_peek_nonspace_remove:NTF \use_ii:nn + \bool_set_false:N \l__cmd_obey_spaces_bool + \__cmd_grab_c_start:n {#1} } -\cs_new_protected:Npn \__cmd_grab_D_long:w #1#2#3 \__cmd_run_code: +\cs_new_protected:Npn \__cmd_grab_c_obey_spaces:w #1 \__cmd_run_code: { - \__cmd_grab_D_aux:NNnNNN #1 #2 {#3} \cs_set_protected:Npn - \__cmd_peek_nonspace_remove:NTF \use_ii:nn + \bool_set_true:N \l__cmd_obey_spaces_bool + \__cmd_grab_c_start:n {#1} } -\cs_new_protected:Npn \__cmd_grab_D_obey_spaces:w #1#2#3 \__cmd_run_code: +\cs_new_protected:Npn \__cmd_grab_c_start:n #1 { - \__cmd_grab_D_aux:NNnNNN #1 #2 {#3} \cs_set_protected_nopar:Npn - \__cmd_peek_meaning_remove:NTF \use_ii:nn + \tl_set:Nn \l__cmd_signature_tl {#1} + \group_begin: + \tl_clear:N \l__cmd_v_arg_tl + \tex_escapechar:D = 92 \scan_stop: + \tex_endlinechar:D = `\^^M \scan_stop: + \cs_set_eq:NN \do \char_set_catcode_other:N + \dospecials + \char_set_catcode_other:n { `\^^M } + \__cmd_grab_c_first:w } -\cs_new_protected:Npn \__cmd_grab_D_long_obey_spaces:w #1#2#3 \__cmd_run_code: +\group_begin: + \char_set_catcode_other:N \^^M % + \cs_new_protected:Npn \__cmd_grab_c_first:w #1 ^^M % + { % + \tl_if_blank:nF {#1} % + { % + \msg_warning:nnee { cmd } { chars-dropped-first-line } % + { \exp_not:n {#1} } % + { \exp_not:V \@currenvir } % + } % + \__cmd_grab_c_loop:w #1 ^^M % + } % + \cs_new_protected:Npe \__cmd_grab_c_loop:w #1 ^^M % + { % + \exp_not:N \__cmd_grab_c_auxi:w #1 % + \c_backslash_str end % + \scan_stop: % + } % +\group_end: +\use:e { - \__cmd_grab_D_aux:NNnNNN #1 #2 {#3} \cs_set_protected:Npn - \__cmd_peek_meaning_remove:NTF \use_ii:nn + \cs_new_protected:Npn \exp_not:N \__cmd_grab_c_auxi:w + #1 \c_backslash_str end #2 \scan_stop: } -\cs_new_protected:Npn \__cmd_grab_D_no_strip:w - #1#2#3 \__cmd_run_code: { - \__cmd_grab_D_aux:NNnNNN #1 #2 {#3} \cs_set_protected_nopar:Npn - \__cmd_peek_nonspace_remove:NTF \use_none:n + \tl_put_right:Nn \l__cmd_v_arg_tl {#1} + \tl_if_empty:nTF {#2} + { + \tl_put_right:Nn \l__cmd_v_arg_tl { \obeyedline } + \__cmd_grab_c_loop:w + } + { \__cmd_grab_c_auxii:w #2 \scan_stop: } } -\cs_new_protected:Npn \__cmd_grab_D_long_no_strip:w - #1#2#3 \__cmd_run_code: +\group_begin: + \char_set_catcode_other:N \^^M % + \use:e % + { % + \cs_new_protected:Npe \exp_not:N \__cmd_grab_c_auxii:w % + #1 \c_backslash_str end \scan_stop: % + } % + { % + \tl_set:Nn \exp_not:N \l__cmd_tmpa_tl + { \c_backslash_str end } % + \exp_not:N \__cmd_grab_c_auxiii:N #1 ^^M % + } % + \cs_new_protected:Npn \__cmd_grab_c_auxiii:N #1 % + { % + \token_case_charcode:NnF #1 % + { % + ^^M % + { \__cmd_grab_c_auxiv: } % + \c_space_token % + { % + \tl_put_right:Nn \l__cmd_tmpa_tl {#1} % + \__cmd_grab_c_auxiii:N % + } % + \c_group_begin_token % + { % + \tl_set:Nn \l__cmd_tmpb_tl {#1} % + \__cmd_grab_c_auxvi:N % + } % + } % + { \__cmd_grab_c_auxv: } % + } % +\group_end: +\cs_new_protected:Npn \__cmd_grab_c_auxiv: { - \__cmd_grab_D_aux:NNnNNN #1 #2 {#3} \cs_set_protected:Npn - \__cmd_peek_nonspace_remove:NTF \use_none:n + \tl_put_right:Ne \l__cmd_v_arg_tl + { + \exp_not:V \l__cmd_tmpa_tl + \exp_not:N \obeyedline + } + \__cmd_grab_c_loop:w } -\cs_new_protected:Npn \__cmd_grab_D_obey_spaces_no_strip:w - #1#2#3 \__cmd_run_code: +\cs_new_protected:Npn \__cmd_grab_c_auxv: { - \__cmd_grab_D_aux:NNnNNN #1 #2 {#3} \cs_set_protected_nopar:Npn - \__cmd_peek_meaning_remove:NTF \use_none:n + \tl_put_right:NV \l__cmd_v_arg_tl \l__cmd_tmpa_tl + \__cmd_grab_c_loop:w } -\cs_new_protected:Npn \__cmd_grab_D_long_obey_spaces_no_strip:w - #1#2#3 \__cmd_run_code: - { - \__cmd_grab_D_aux:NNnNNN #1 #2 {#3} \cs_set_protected:Npn - \__cmd_peek_meaning_remove:NTF \use_none:n +\group_begin: + \char_set_catcode_other:N \^^M % + \cs_new_protected:Npe \__cmd_grab_c_auxvi:N #1 % + { % + \exp_not:N \token_case_charcode:NnF #1 % + { % + ^^M % + { + \exp_not:N \__cmd_grab_c_auxvii: % + \exp_not:N \__cmd_grab_c_auxiv: % + }% + \c_backslash_str % + { % + \exp_not:N \__cmd_grab_c_auxvii: % + \exp_not:N \__cmd_grab_c_auxv: #1 + } % + \c_group_end_token % + { % + \tl_put_right:Nn \exp_not:N \l__cmd_tmpb_tl {#1} % + \exp_not:N \__cmd_grab_c_auxviii: % + } % + } % + { % + \tl_put_right:Nn \exp_not:N \l__cmd_tmpb_tl {#1} % + \exp_not:N \__cmd_grab_c_auxvi:N % + } % + } % +\group_end: % +\cs_new_protected:Npn \__cmd_grab_c_auxvii: + { \tl_put_right:NV \l__cmd_tmpa_tl \l__cmd_tmpb_tl } +\cs_new_protected:Npn \__cmd_grab_c_auxviii: + { + \str_if_eq:eeTF { \exp_not:V \l__cmd_tmpb_tl } { { \@currenvir } } + { \__cmd_grab_c_end:w } + { + \__cmd_grab_c_auxvii: + \__cmd_grab_c_auxv: + } + } +\group_begin: + \char_set_catcode_other:N \^^M % + \cs_new_protected:Npn \__cmd_grab_c_end:w #1 ^^M % + { % + \tl_if_blank:nF {#1} % + { % + \msg_warning:nnee { cmd } { chars-dropped-last-line } % + { \exp_not:n {#1} } % + { \exp_not:V \@currenvir } % + } % + \exp_args:NNNo \group_end: % + \tl_set:Nn \l__cmd_v_arg_tl { \l__cmd_v_arg_tl } % + \__cmd_add_arg:x % + { % + \bool_if:NTF \l__cmd_obey_spaces_bool % + { \exp_not:V } % + { \exp_args:NV \__cmd_grab_c_end:n } % + \l__cmd_v_arg_tl % + } % + \exp_args:NV \end \@currenvir % + } % +\group_end: % +\cs_new:Npn \__cmd_grab_c_end:n #1 + { + \__cmd_grab_c_end_auxi:w \q_nil #1 \q_nil + \obeyedline \obeyedline \q_nil \q_stop + } +\cs_new:Npn \__cmd_grab_c_end_auxi:w #1 \q_nil \obeyedline + { \__cmd_grab_c_end_auxii:w #1 \q_nil } +\cs_new:Npn \__cmd_grab_c_end_auxii:w \q_nil #1 \obeyedline \q_nil + { \__cmd_grab_c_end_auxiii:w #1 \q_nil } +\cs_new:Npn \__cmd_grab_c_end_auxiii:w #1 \q_nil #2 \q_stop + { \exp_not:n {#1} } +\tl_map_inline:nn { { } { _long } } + { + \tl_map_inline:nn { { } { _obey_spaces } } + { + \tl_map_inline:nn { { } { _no_strip } } + { + \tl_map_inline:nn { { } { _verb_safe } } + { + \cs_new_protected:cpe { __cmd_grab_D #1 ##1 ####1 ########1 :w } + ################1################2################3 + \__cmd_run_code: + { + \exp_not:N \__cmd_grab_D_aux:NNnNNNN + ################1 ################2 {################3} + \str_if_eq:nnTF {#1} { _long } + \cs_set_protected:Npn + \cs_set_protected_nopar:Npn + \str_if_eq:nnTF {##1} { _obey_spaces } + { \exp_not:N \__cmd_peek_meaning_remove:NTF } + { \exp_not:N \__cmd_peek_nonspace_remove:NTF } + \str_if_eq:nnTF {####1} { _no_strip } + { \exp_not:N \use_none:n } + { \exp_not:N \use_ii:nn } + \str_if_eq:nnTF {########1} { _verb_safe } + { \exp_not:N \use:n } + { \exp_not:N \use_none:n } + } + } + } + } } -\cs_new_protected:Npn \__cmd_grab_D_aux:NNnNNN #1#2#3#4#5#6 +\group_begin: + \char_set_catcode_other:N \^^M + \cs_new_protected:Npn \__cmd_grab_D_aux:NNnNNNN #1#2#3#4#5#6#7 + { + \__cmd_grab_D_aux:NNnNN #1#2 {#3} #4 #6 + #7 + { + \group_begin: + \__cmd_grab_D_verb_safe:NN #1#5 + } + #5 #1 + { + #7 { \group_end: } + \__cmd_grab_D_call:Nw #1 + } + { + #7 { \group_end: } + \__cmd_add_arg:o \c_novalue_tl + } + } +\group_end: +\cs_new_protected:Npn \__cmd_grab_D_verb_safe:NN #1#2 { - \__cmd_grab_D_aux:NNnNN #1#2 {#3} #4 #6 - #5 #1 - { \__cmd_grab_D_call:Nw #1 } - { \__cmd_add_arg:o \c_novalue_tl } + \cs_set_eq:NN \do \char_set_catcode_other:N + \dospecials + \char_set_catcode_other:N \^^M + \token_if_eq_meaning:NNT #2 \__cmd_peek_nonspace_remove:NTF + { \char_set_catcode_space:n { `\ } } + \use:c + { + char_set_catcode_ + \if_catcode:w \c_math_toggle_token #1 math_toggle \else: + \if_catcode:w ^ #1 math_superscript \else: + \if_catcode:w \c_math_subscript_token #1 math_subscript \else: + \if_catcode:w A #1 letter \else: + other \fi: \fi: \fi: \fi: + :N + } + #1 } \cs_new_protected:Npn \__cmd_grab_D_aux:NNnNN #1#2#3#4#5 { @@ -3674,6 +3901,8 @@ { \cs_set_eq:NN \do \char_set_catcode_other:N \dospecials + \char_set_catcode_active:n { `\ } + \char_set_catcode_active:n { `\^^I } \bool_if:NTF \l__cmd_long_bool { \char_set_catcode_other:n { \tex_endlinechar:D } } { \char_set_catcode_parameter:n { \tex_endlinechar:D } } @@ -3702,13 +3931,9 @@ { \tl_put_right:Nx \l__cmd_v_arg_tl { - \token_if_active:NTF #1 + \int_compare:nNnTF {`#1} = \tex_endlinechar:D + { \exp_not:N \obeyedline } { \exp_not:N #1 } - { - \int_compare:nNnTF {`#1} = \tex_endlinechar:D - { \exp_not:N \obeyedline } - { \token_to_str:N #1 } - } } } \cs_new_protected:Npn \__cmd_grab_v_token_if_char:NTF #1 @@ -4264,10 +4489,10 @@ } } \msg_new:nnnn { cmd } { arg-after-body } - { Argument~type~'b'~must~be~last~in~#1. } + { Argument~type~'#1'~must~be~last~in~#2. } { - The~'b'~argument~type~must~come~last~but~it~is~followed~ - by~'#2'~in~the~argument~specification.~This~is~not~allowed. + The~'#1'~argument~type~must~come~last~but~it~is~followed~ + by~'#3'~in~the~argument~specification.~This~is~not~allowed. \c__cmd_ignore_def_tl } \msg_new:nnnn { cmd } { bad-arg-spec } @@ -4291,6 +4516,18 @@ with~a~command~that~was~never~defined. \c__cmd_ignore_def_tl } +\msg_new:nnnn { cmd } { chars-dropped-first-line } + { Characters~'#1'~dropped~on~first~line~of~#2~environment. } + { + LaTeX~was~collecting~a~verbatim-like~environment,~and~the~characters~ + '#1'~were~found~after~'\begin{#2}~on~the~first~line:~this~is~not~supported. + } +\msg_new:nnnn { cmd } { chars-dropped-last-line } + { Characters~'#1'~dropped~after~end~of~#2~environment. } + { + LaTeX~was~collecting~a~verbatim-like~environment,~and~the~characters~ + '#1'~were~found~after~\end{#2}~on~the~last~line:~this~is~not~supported. + } \msg_new:nnnn { cmd } { env-already-defined } { Environment~'#1'~already~defined. } { @@ -4668,7 +4905,7 @@ \cs_new_eq:NN \SplitArgument \__cmd_split_argument:nnn \cs_new_eq:NN \SplitList \__cmd_split_list:nn \cs_new_eq:NN \TrimSpaces \__cmd_trim_spaces:n -\cs_new_eq:NN \ProcessList \tl_map_function:nN +\cs_new_eq:NN \ProcessList \tl_map_tokens:nn \ExplSyntaxOff %%% From File: lthooks.dtx @@ -5050,10 +5287,11 @@ } \cs_new_protected:Npn \__hook_hook_gput_code_do:nnn #1 #2 #3 { - \__hook_debug:n{\iow_term:x{****~ Add~ to~ + \__hook_debug:n{\iow_term:x{[lthooks]~ Add~ to~ \__hook_if_usable:nF {#1} { undeclared~ } - hook~ #1~ (#2) - \on@line\space <-~ \tl_to_str:n{#3}} } + hook~ '#1'~ (#2) \on@line + ^^J [lthooks] \@spaces + <-~ \tl_to_str:n{#3}} } \str_if_eq:nnTF {#2} { top-level } { \str_if_eq:eeTF { top-level } { \__hook_currname_or_default: } @@ -5541,7 +5779,7 @@ } \__hook_debug:n { - \iow_term:x { ^^J All~initialized~(non-empty)~hooks: } + \iow_term:x { ^^J[lthooks]~ All~initialized~(non-empty)~hooks: } \prop_map_inline:Nn \g__hook_used_prop { \iow_term:x @@ -5553,7 +5791,7 @@ \cs_new_protected:Npn \__hook_initialize_hook_code:n #1 { \__hook_debug:n - { \iow_term:x { ^^J Update~code~for~hook~'#1' \on@line :^^J } } + { \iow_term:x { ^^J[lthooks]~ Update~code~for~hook~'#1' \on@line :^^J } } \__hook_include_legacy_code_chunk:n {#1} \__hook_if_usable:nT {#1} { @@ -5631,7 +5869,7 @@ \prop_get:NVN \l__hook_work_prop \l__hook_front_tl \l__hook_return_tl \exp_args:NNV \__hook_tl_gput:Nn #1 \l__hook_return_tl \__hook_clist_gput:NV #2 \l__hook_front_tl - \__hook_debug:n{ \iow_term:x{Handled~ code~ for~ \l__hook_front_tl} } + \__hook_debug:n{ \iow_term:x{[lthooks]~ Handled~ code~ for~ \l__hook_front_tl} } \seq_map_inline:cn { \__hook_seq_csname:n { \l__hook_front_tl } } { \tl_set:cx { \__hook_tl_csname:n {##1} } @@ -5960,12 +6198,28 @@ { \__hook_replacing_args_false: \__hook_normalize_hook_args:Nn \__hook_gput_next_code:nn {#1} {#2} + \__hook_debug:n{\iow_term:x{[lthooks]~ Add~ to~ + \__hook_if_usable:nF {#1} { undeclared~ } + hook~ '#1'~ ( next~ invocation~ only ) + \on@line + ^^J [lthooks] \@spaces + <-~ \tl_to_str:n{#2} + } + } \__hook_replacing_args_reset: } \cs_new_protected:Npn \hook_gput_next_code_with_args:nn #1 #2 { \__hook_replacing_args_true: \__hook_normalize_hook_args:Nn \__hook_gput_next_code:nn {#1} {#2} + \__hook_debug:n{\iow_term:x{[lthooks]~ Add~ to~ + \__hook_if_usable:nF {#1} { undeclared~ } + hook~ '#1'~ ( next~ invocation~ only ) + \on@line + ^^J [lthooks] \@spaces + <-~ \tl_to_str:n{#2} + } + } \__hook_replacing_args_reset: } \cs_new_protected:Npn \__hook_gput_next_code:nn #1 #2 @@ -6471,7 +6725,7 @@ \ExplSyntaxOff %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% From File: ltcmdhooks.dtx -%% Copyright (C) 2020-2024 +%% Copyright (C) 2020-2025 %% Frank Mittelbach, Phelype Oleinik, The LaTeX Project %%% From File: lthooks.dtx \ExplSyntaxOn @@ -6496,7 +6750,13 @@ #1 / #2 / #3 / #4 \s__hook_mark #5 { \__hook_debug:n { \iow_term:n { ->~Adding~cmd~hook~to~'#2'~(#3): } } - \exp_args:Nc \__hook_patch_cmd_or_delay:Nnn {#2} {#2} {#3} + \group_begin: + \exp_after:wN + \group_end: + \exp_after:wN + \__hook_patch_cmd_or_delay:Nnn + \cs:w #2\cs_end: + {#2} {#3} } \cs_new_protected:Npn \__hook_patch_cmd_or_delay:Nnn #1 #2 #3 { @@ -6937,7 +7197,7 @@ { \iow_term:x { ^^J [Sockets]~ ==>~ ##1} } } } \cs_new_protected:Npn \socket_new:nn #1 #2 { - \str_if_exist:cTF { l__socket_#1_plug_str } + \socket_if_exist:nTF {#1} { \msg_error:nnn { socket } { already-declared } {#1} } @@ -6962,9 +7222,14 @@ } } } +\prg_new_conditional:Npnn \socket_if_exist:n #1 { p , T , F , TF } + { \str_if_exist:cTF { l__socket_#1_plug_str } + \prg_return_true: + \prg_return_false: + } \cs_new_protected:Npn \socket_log:n #1 { \typeout{ Socket~ #1:} - \str_if_exist:cTF { l__socket_#1_plug_str } + \socket_if_exist:nTF {#1} { \typeout{ \@spaces number~ of~ inputs~ =~ \int_use:c { c__socket_#1_args_int } } @@ -6983,9 +7248,9 @@ } \cs_new_protected:Npn \socket_show:n #1 {\socket_log:n {#1} \errmessage{}} \cs_new_protected:Npn \socket_new_plug:nnn #1#2#3 { - \str_if_exist:cTF { l__socket_#1_plug_str } + \socket_if_exist:nTF {#1} { - \cs_if_exist:cTF { __socket_#1_plug_#2:w } + \socket_if_plug_exist:nnTF {#1} {#2} { \msg_error:nnnn { socket } { plug-already-declared } {#1} {#2} } @@ -7000,14 +7265,12 @@ { Plug~ '#2'~ for~ socket~ '#1'~ declared. } } } - { - \msg_error:nnn { socket } { undeclared } {#1} - } + { \msg_error:nnn { socket } { undeclared } {#1} } } \cs_new_protected:Npn \socket_set_plug:nnn #1#2#3 { - \str_if_exist:cTF { l__socket_#1_plug_str } + \socket_if_exist:nTF {#1} { - \cs_if_exist:cTF { __socket_#1_plug_#2:w } + \socket_if_plug_exist:nnTF {#1} {#2} { \cs_generate_from_arg_count:cNnn { __socket_#1_plug_#2:w } @@ -7021,14 +7284,17 @@ \msg_error:nnnn { socket } { plug-undeclared } {#1} {#2} } } - { - \msg_error:nnn { socket } { undeclared } {#1} - } + { \msg_error:nnn { socket } { undeclared } {#1} } } +\prg_new_conditional:Npnn \socket_if_plug_exist:nn #1#2 { p , T , F , TF } + { \cs_if_exist:cTF { __socket_#1_plug_#2:w } + \prg_return_true: + \prg_return_false: + } \cs_new_protected:Npn \socket_assign_plug:nn #1 #2 { - \str_if_exist:cTF { l__socket_#1_plug_str } + \socket_if_exist:nTF {#1} { - \cs_if_exist:cTF { __socket_#1_plug_#2:w } + \socket_if_plug_exist:nnTF {#1} {#2} { \__socket_debug_term:n { Replacing~ plug~ '\str_use:c { l__socket_#1_plug_str }'~ @@ -7041,6 +7307,12 @@ } { \msg_error:nnn { socket } { undeclared } {#1} } } +\prg_new_conditional:Npnn \socket_if_plug_assigned:nn #1#2 { p , T , F , TF } + { \exp_args:Ne + \str_if_eq:nvTF {#2} { l__socket_#1_plug_str } + \prg_return_true: + \prg_return_false: + } \cs_new_protected:Npn \socket_use:nw #1 { \__socket_debug_term:n { Socket~ '#1'~ containing~ plug~ @@ -7088,9 +7360,19 @@ \cs_new_eq:NN \UseSocket \socket_use:nw \cs_new_eq:NN \DebugSocketsOn \socket_debug_on: \cs_new_eq:NN \DebugSocketsOff \socket_debug_off: +\cs_new_eq:NN \IfSocketExistsTF \socket_if_exist:nTF +\cs_new_eq:NN \IfSocketExistsT \socket_if_exist:nT +\cs_new_eq:NN \IfSocketExistsF \socket_if_exist:nF +\cs_new_eq:NN \IfSocketPlugExistsTF \socket_if_plug_exist:nnTF +\cs_new_eq:NN \IfSocketPlugExistsT \socket_if_plug_exist:nnT +\cs_new_eq:NN \IfSocketPlugExistsF \socket_if_plug_exist:nnF +\cs_new_eq:NN \IfSocketPlugAssignedTF \socket_if_plug_assigned:nnTF +\cs_new_eq:NN \IfSocketPlugAssignedT \socket_if_plug_assigned:nnT +\cs_new_eq:NN \IfSocketPlugAssignedF \socket_if_plug_assigned:nnF \ExplSyntaxOff %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%% From File: lttemplates.dtx + \message{templates,} \ExplSyntaxOn \tl_const:Nn \c__template_code_root_tl { template~code~>~ } @@ -7467,8 +7749,15 @@ \__template_if_keys_exist:nnT {#1} {#2} { \__template_store_key_implementation:nnn {#1} {#2} {#4} - \regex_match:nnTF { \c { AssignTemplateKeys } } {#5} - { \__template_declare_template_code:nnnn {#1} {#2} {#3} {#5} } + \str_if_in:nnTF {#5} { AssignTemplateKeys } + { + \regex_match:nnTF { \c { AssignTemplateKeys } } {#5} + { \__template_declare_template_code:nnnn {#1} {#2} {#3} {#5} } + { + \__template_declare_template_code:nnnn + {#1} {#2} {#3} { \AssignTemplateKeys #5 } + } + } { \__template_declare_template_code:nnnn {#1} {#2} {#3} { \AssignTemplateKeys #5 } @@ -8278,8 +8567,24 @@ { \__template_if_instance_exist:nnF {#1} {#2} } \cs_new_protected:Npn \KeyValue #1 {#1} \cs_new_protected:Npn \AssignTemplateKeys { \__template_assignments_pop: } +\cs_new_protected:Npn \SetKnownTemplateKeys #1#2#3 + { + \tl_if_empty:oTF {#3} + { + \tl_set_eq:NN \UnusedTemplateKeys \c_empty_tl + } + { + \keys_set_known:noN { template / #1 / #2 } {#3} \UnusedTemplateKeys + } + } \cs_new_protected:Npn \SetTemplateKeys #1#2#3 - { \keys_set_known:nnN { template / #1 / #2 } {#3} \l__template_tmp_clist } + { + \tl_if_empty:oF {#3} + { + \keys_set:no { template / #1 / #2 } {#3} + } + } +\tl_new:N \UnusedTemplateKeys \ExplSyntaxOff %%% From File: ltalloc.dtx \chardef\@xxxii=32 @@ -8600,7 +8905,7 @@ Type H for immediate help.}% \def\@par{\let\par\@@par\par} \def\@restorepar{\def\par{\@par}} %% File: ltpara.dtx -%% Copyright (C) 2020-2024 +%% Copyright (C) 2020-2025 %% Frank Mittelbach, The LaTeX Project %%% From File: ltpara.dtx @@ -8729,7 +9034,7 @@ Type H for immediate help.}% \ExplSyntaxOff %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% File: ltmeta.dtx -%% Copyright (C) 2021-2024 +%% Copyright (C) 2021-2025 %% Frank Mittelbach, The LaTeX Project %%% From File: ltmeta.dtx \let \IfDocumentMetadataTF \@secondoftwo @@ -9390,7 +9695,25 @@ Type H for immediate help.}% \@dec@text@cmd\newcommand} \def\ProvideTextCommand{% \@dec@text@cmd\providecommand} +\def\@enc@info#1{% + \GenericInfo{(Encoding)\@spaces\@spaces\@spaces\space\space}% + {LaTeX Encoding Info: \space\space\space#1}}% \def\@dec@text@cmd#1#2#3{% + \ifcsname #3\string#2\endcsname + \@enc@info{% + \ifx#1\providecommand + Ignoring declaration for + \else + Redeclaring + \fi + text + \ifx#1\chardef@text@cmd + symbol + \else + command + \fi + \string#2 (encoding #3)}% + \fi \expandafter\def\expandafter#2% \expandafter{% \csname#3-cmd\expandafter\endcsname @@ -9462,8 +9785,8 @@ Type H for immediate help.}% \expandafter\let\expandafter\reserved@a\csname#2\string#1\endcsname \ifx\reserved@a\relax \DeclareTextCommand#1{#2}{% - \@latex@error{\string#1 undeclared in encoding #2}\@eha}% - \@latex@info{Composite with undeclared \string#1 in encoding #2}% + \@latex@error{Text composite \string#1 undeclared in encoding #2}\@eha}% + \@enc@info{Text composite with undeclared \string#1 in encoding #2}% \expandafter\let\expandafter\reserved@a\csname#2\string#1\endcsname \fi \expandafter\expandafter\expandafter\ifx @@ -9533,8 +9856,8 @@ Type H for immediate help.}% \@onlypreamble\DeclareTextSymbolDefault \@onlypreamble\DeclareTextAccentDefault \def\UndeclareTextCommand#1#2{% - \expandafter\ifx\csname#2\string#1\endcsname\relax - \else + \ifcsname #2\string#1\endcsname + \@enc@info{Undeclare text command \string#1 (encoding #2)}% \global\expandafter\let\csname#2\string#1\endcsname \@undefined \expandafter\expandafter\expandafter @@ -9543,7 +9866,9 @@ Type H for immediate help.}% {\csname ?-cmd\expandafter\endcsname\expandafter #1\csname?\string#1\endcsname}% \fi - \fi + \else + \@enc@info{Text command \string#1 (encoding #2) is not declared}% + \fi } \@onlypreamble\UndeclareTextCommand \def\@tabacckludge#1{\expandafter\@changed@cmd @@ -9656,7 +9981,6 @@ Type H for immediate help.}% } %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%% From File: ltcounts.dtx - \def\setcounter#1#2{% \@ifundefined{c@#1}% {\@nocounterr{#1}}% @@ -9670,6 +9994,8 @@ Type H for immediate help.}% {\@definecounter{#1}}% \@ifnextchar[{\@newctr{#1}}{}} \def\value#1{\csname c@#1\endcsname} +\protected\expandafter + \def\csname c@*\endcsname{\value\@currentcounter} \def\@newctr#1[#2]{% \@ifundefined{c@#2}{\@nocounterr{#2}}{\@addtoreset{#1}{#2}}} \def\stepcounter#1{% @@ -9713,13 +10039,15 @@ Type H for immediate help.}% \expandafter\xdef\csname cl@#2\endcsname {\csname cl@#2\endcsname}% \endgroup}} - +\begingroup\catcode`\*=11 \lowercase{\endgroup \def\@ifbothcounters#1#2#3{% + \begingroup\let\c@*\@undefined \@ifundefined{c@#1}{\@nocounterr{#1}}% {% else counter is defined \@ifundefined{c@#2}{\@nocounterr{#2}}% {% else both counter and within are defined - #3}}} + #3}}% + \endgroup}} \NewDocumentCommand \counterwithout {sO{\arabic}mm}{% \@ifbothcounters{#3}{#4}{% \@removefromreset{#3}{#4}% @@ -9746,7 +10074,6 @@ Type H for immediate help.}% \def\fnsymbol#1{\expandafter\@fnsymbol\csname c@#1\endcsname} \def\@arabic#1{\number #1} %% changed 29 Apr 86 \def\@roman#1{\romannumeral #1} - \def\@Roman#1{\expandafter\@slowromancap\romannumeral #1@} \def\@slowromancap#1{\ifx @#1% then terminate \else @@ -9970,7 +10297,10 @@ Type H for immediate help.}% \global\@namedef{#1:#2}{#3}} \def\CheckEncodingSubset#1#2#3#4#5{% - \ifnum #4>% + \expandafter\ifx\csname #2:\f@family\endcsname\relax + \LoadFontDefinitionFile{#2}\f@family + \fi + \ifnum #4>% \expandafter\ifx\csname #2:\f@family\endcsname\relax 0\csname #2:?\endcsname \else @@ -10086,27 +10416,36 @@ Type H for immediate help.}% {\@nomath\mathversion \expandafter\ifx\csname mv@#1\endcsname\relax \@latex@error{Math version `#1' is not defined}\@eha\else - \ifcsname mv@\math@version @frozen\endcsname - \expandafter\let - \csname mv@\math@version @frozen\expandafter\endcsname - \csname mv@\math@version\endcsname + \ifcsname mv@#1@frozen\endcsname + \ifnum \@math@level = \@ne + \unconditionally@reset@math@version {#1}% + \fi \fi \edef\math@version{#1}% \gdef\glb@currsize{}% \aftergroup\glb@settings \fi} +\ExplSyntaxOn +\cs_new_protected:Npn \unconditionally@reset@math@version #1 { + \cs_gset_eq:cc { mv@#1 }{ mv@#1@frozen } + \int_gset:cn { c@mv@#1 }{ \tl_use:c {g__nfss_frozen_mv_ #1 _tl} } +} +\ExplSyntaxOff \let\frozen@everymath\everymath \let\frozen@everydisplay\everydisplay \newtoks\everymath \newtoks\everydisplay +\newcount\@math@level \frozen@everydisplay = {% \aftergroup\@ignoretrue \aftergroup\ignorespaces + \advance\@math@level\@ne \check@mathfonts \the\everydisplay} \frozen@everymath = {% \aftergroup\@ignorefalse + \advance\@math@level\@ne \check@mathfonts \the\everymath} \let\curr@math@size\@empty @@ -10359,387 +10698,1433 @@ Type H for immediate help.}% \def\@xxvpt{24.88} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%% From File: ltfssaxes.dtx -%% Copyright (C) 2019-2020 Frank Mittelbach +%% Copyright (C) 2019-2020 Frank Mittelbach (initial implementation) \message{NFSS axes,} \def\DeclareFontSeriesChangeRule#1#2#3#4{% \@namedef{series@#1@#2}{{#3}{#4}}} -\DeclareFontSeriesChangeRule {bc}{b}{bc}{} -\DeclareFontSeriesChangeRule {bc}{c}{bc}{} -\DeclareFontSeriesChangeRule {bc}{eb}{ebc}{} -\DeclareFontSeriesChangeRule {bc}{ec}{bec} {bc} -\DeclareFontSeriesChangeRule {bc}{el}{elc}{} -\DeclareFontSeriesChangeRule {bc}{l}{lc}{} -\DeclareFontSeriesChangeRule {bc}{sb}{sbc}{} -\DeclareFontSeriesChangeRule {bc}{sc}{bsc} {bc} -\DeclareFontSeriesChangeRule {bc}{sl}{slc}{} -\DeclareFontSeriesChangeRule {bc}{ub}{ubc}{} -\DeclareFontSeriesChangeRule {bc}{ul}{ulc}{} -\DeclareFontSeriesChangeRule {bc}{x}{bx}{} -\DeclareFontSeriesChangeRule {bx}{b}{bx}{} -\DeclareFontSeriesChangeRule {bx}{c} {bc} {bx} %<----- -\DeclareFontSeriesChangeRule {bx}{eb}{ebx}{} -\DeclareFontSeriesChangeRule {bx}{ec} {bec} {bx} %<----- -\DeclareFontSeriesChangeRule {bx}{el}{elx}{} -\DeclareFontSeriesChangeRule {bx}{l}{lx}{} -\DeclareFontSeriesChangeRule {bx}{sb} {sbx} {} -\DeclareFontSeriesChangeRule {bx}{sc} {bsc} {bx} %<----- -\DeclareFontSeriesChangeRule {bx}{sl}{slx} {} -\DeclareFontSeriesChangeRule {bx}{ub}{ubx}{} -\DeclareFontSeriesChangeRule {bx}{ul}{ulx}{} -\DeclareFontSeriesChangeRule {bx}{x}{bx}{} -\DeclareFontSeriesChangeRule {b}{bx} {bx} {b} %<----- -\DeclareFontSeriesChangeRule {b}{c} {bc} {b} %<----- -\DeclareFontSeriesChangeRule {b}{ec} {bec} {b} %<----- -\DeclareFontSeriesChangeRule {b}{sb} {sb} {b} %<----- -\DeclareFontSeriesChangeRule {b}{sc} {bsc} {b} %<----- -\DeclareFontSeriesChangeRule {b}{x} {bx} {b} %<----- -\DeclareFontSeriesChangeRule {c}{bx} {bx} {b} %<----- -\DeclareFontSeriesChangeRule {c}{b}{bc}{} -\DeclareFontSeriesChangeRule {c}{eb}{ebc}{} -\DeclareFontSeriesChangeRule {c}{el}{elc}{} -\DeclareFontSeriesChangeRule {c}{l}{lc}{} -\DeclareFontSeriesChangeRule {c}{sb}{sbc}{} -\DeclareFontSeriesChangeRule {c}{sl}{slc}{} -\DeclareFontSeriesChangeRule {c}{ub}{ubc}{} -\DeclareFontSeriesChangeRule {c}{ul}{ulc}{} -\DeclareFontSeriesChangeRule {c}{x}{x}{m} %<----- -\DeclareFontSeriesChangeRule {ebc}{b}{bc}{} -\DeclareFontSeriesChangeRule {ebc}{c}{ebc}{} -\DeclareFontSeriesChangeRule {ebc}{eb}{ebc}{} -\DeclareFontSeriesChangeRule {ebc}{ec}{ebec}{ebc} -\DeclareFontSeriesChangeRule {ebc}{el}{elc}{} -\DeclareFontSeriesChangeRule {ebc}{l}{lc}{} -\DeclareFontSeriesChangeRule {ebc}{sb}{sbc}{} -\DeclareFontSeriesChangeRule {ebc}{sc}{ebsc}{ebc} -\DeclareFontSeriesChangeRule {ebc}{sl}{slc}{} -\DeclareFontSeriesChangeRule {ebc}{ub}{ubc}{} -\DeclareFontSeriesChangeRule {ebc}{ul}{ulc}{} -\DeclareFontSeriesChangeRule {ebc}{x}{ebx}{} -\DeclareFontSeriesChangeRule {ec}{bx} {bx} {b} %<----- -\DeclareFontSeriesChangeRule {ec}{b}{bec}{} -\DeclareFontSeriesChangeRule {ec}{eb}{ebec}{} -\DeclareFontSeriesChangeRule {ec}{el}{elec}{} -\DeclareFontSeriesChangeRule {ec}{l}{lec}{} -\DeclareFontSeriesChangeRule {ec}{sb}{sbec}{} -\DeclareFontSeriesChangeRule {ec}{sl}{slec}{} -\DeclareFontSeriesChangeRule {ec}{ub}{ubec}{} -\DeclareFontSeriesChangeRule {ec}{ul}{ulec}{} -\DeclareFontSeriesChangeRule {ec}{x}{x}{m} %<----- -\DeclareFontSeriesChangeRule {sc}{bx} {bx} {b} %<----- -\DeclareFontSeriesChangeRule {sc}{b}{bsc}{} -\DeclareFontSeriesChangeRule {sc}{eb}{ebsc}{} -\DeclareFontSeriesChangeRule {sc}{el}{elsc}{} -\DeclareFontSeriesChangeRule {sc}{l}{lsc}{} -\DeclareFontSeriesChangeRule {sc}{sb}{sbsc}{} -\DeclareFontSeriesChangeRule {sc}{sl}{slsc}{} -\DeclareFontSeriesChangeRule {sc}{ub}{ubsc}{} -\DeclareFontSeriesChangeRule {sc}{ul}{ulsc}{} -\DeclareFontSeriesChangeRule {sc}{x}{x}{m} %<----- -\DeclareFontSeriesChangeRule {ebx}{b}{bx}{} -\DeclareFontSeriesChangeRule {ebx}{c}{ebc}{} -\DeclareFontSeriesChangeRule {ebx}{eb}{ebx}{} -\DeclareFontSeriesChangeRule {ebx}{ec}{ebec}{} -\DeclareFontSeriesChangeRule {ebx}{el}{elx}{} -\DeclareFontSeriesChangeRule {ebx}{l}{lx}{} -\DeclareFontSeriesChangeRule {ebx}{sb}{sbx}{} -\DeclareFontSeriesChangeRule {ebx}{sc}{ebsc}{} -\DeclareFontSeriesChangeRule {ebx}{sl}{slx}{} -\DeclareFontSeriesChangeRule {ebx}{ub}{ubx}{} -\DeclareFontSeriesChangeRule {ebx}{ul}{ulx}{} -\DeclareFontSeriesChangeRule {ebx}{x}{ebx}{} -\DeclareFontSeriesChangeRule {eb}{c}{ebc}{} -\DeclareFontSeriesChangeRule {eb}{ec}{ebec}{} -\DeclareFontSeriesChangeRule {eb}{sc}{ebsc}{} -\DeclareFontSeriesChangeRule {eb}{x}{ebx}{} -\DeclareFontSeriesChangeRule {elc}{b}{bc}{} -\DeclareFontSeriesChangeRule {elc}{c}{elc}{} -\DeclareFontSeriesChangeRule {elc}{eb}{ebc}{} -\DeclareFontSeriesChangeRule {elc}{ec}{elec}{} -\DeclareFontSeriesChangeRule {elc}{el}{elc}{} -\DeclareFontSeriesChangeRule {elc}{l}{lc}{} -\DeclareFontSeriesChangeRule {elc}{sb}{sbc}{} -\DeclareFontSeriesChangeRule {elc}{sc}{elsc}{} -\DeclareFontSeriesChangeRule {elc}{sl}{slc}{} -\DeclareFontSeriesChangeRule {elc}{ub}{ubc}{} -\DeclareFontSeriesChangeRule {elc}{ul}{ulc}{} -\DeclareFontSeriesChangeRule {elc}{x}{elx}{} -\DeclareFontSeriesChangeRule {elx}{b}{bx}{} -\DeclareFontSeriesChangeRule {elx}{c}{elc}{} -\DeclareFontSeriesChangeRule {elx}{eb}{ebx}{} -\DeclareFontSeriesChangeRule {elx}{ec}{elec}{} -\DeclareFontSeriesChangeRule {elx}{el}{elx}{} -\DeclareFontSeriesChangeRule {elx}{l}{lx}{} -\DeclareFontSeriesChangeRule {elx}{sb}{sbx}{} -\DeclareFontSeriesChangeRule {elx}{sc}{elsc}{} -\DeclareFontSeriesChangeRule {elx}{sl}{slx}{} -\DeclareFontSeriesChangeRule {elx}{ub}{ubx}{} -\DeclareFontSeriesChangeRule {elx}{ul}{ulx}{} -\DeclareFontSeriesChangeRule {elx}{x}{elx}{} -\DeclareFontSeriesChangeRule {el}{c}{elc}{} -\DeclareFontSeriesChangeRule {el}{ec}{elec}{} -\DeclareFontSeriesChangeRule {el}{sc}{elsc}{} -\DeclareFontSeriesChangeRule {el}{x}{elx}{} -\DeclareFontSeriesChangeRule {lc}{b}{bc}{} -\DeclareFontSeriesChangeRule {lc}{c}{lc}{} -\DeclareFontSeriesChangeRule {lc}{eb}{ebc}{} -\DeclareFontSeriesChangeRule {lc}{ec}{lec}{} -\DeclareFontSeriesChangeRule {lc}{el}{elc}{} -\DeclareFontSeriesChangeRule {lc}{l}{lc}{} -\DeclareFontSeriesChangeRule {lc}{sb}{sbc}{} -\DeclareFontSeriesChangeRule {lc}{sc}{lsc}{} -\DeclareFontSeriesChangeRule {lc}{sl}{slc}{} -\DeclareFontSeriesChangeRule {lc}{ub}{ubc}{} -\DeclareFontSeriesChangeRule {lc}{ul}{ulc}{} -\DeclareFontSeriesChangeRule {lc}{x}{lx}{} -\DeclareFontSeriesChangeRule {lx}{b}{bx}{} -\DeclareFontSeriesChangeRule {lx}{c}{lc}{} -\DeclareFontSeriesChangeRule {lx}{eb}{ebx}{} -\DeclareFontSeriesChangeRule {lx}{ec}{lec}{} -\DeclareFontSeriesChangeRule {lx}{el}{elx}{} -\DeclareFontSeriesChangeRule {lx}{l}{lx}{} -\DeclareFontSeriesChangeRule {lx}{sb}{sbx}{} -\DeclareFontSeriesChangeRule {lx}{sc}{lsc}{} -\DeclareFontSeriesChangeRule {lx}{sl}{slx}{} -\DeclareFontSeriesChangeRule {lx}{ub}{ubx}{} -\DeclareFontSeriesChangeRule {lx}{ul}{ulx}{} -\DeclareFontSeriesChangeRule {lx}{x}{lx}{} -\DeclareFontSeriesChangeRule {l}{bx} {bx} {b} %<----- -\DeclareFontSeriesChangeRule {l}{b} {b} {bx} %<----- -\DeclareFontSeriesChangeRule {l}{c} {lc} {l} % ? %<----- -\DeclareFontSeriesChangeRule {l}{ec} {lec} {l} % ? %<----- -\DeclareFontSeriesChangeRule {l}{sb} {sb} {b} % ? %<----- -\DeclareFontSeriesChangeRule {l}{sc} {lsc} {l} % ? %<----- -\DeclareFontSeriesChangeRule {l}{x} {lx} {l} % ? %<----- -\DeclareFontSeriesChangeRule {m}{bx} {bx} {b} %<----- -\DeclareFontSeriesChangeRule {m}{b} {b} {bx} %<----- -\DeclareFontSeriesChangeRule {m}{c} {c} {m} %<----- -\DeclareFontSeriesChangeRule {m}{ec} {ec} {m} %<----- -\DeclareFontSeriesChangeRule {m}{l} {l} {m} %<----- -\DeclareFontSeriesChangeRule {m}{sb} {sb} {b} %<----- -\DeclareFontSeriesChangeRule {m}{sc} {sc} {m} %<----- -\DeclareFontSeriesChangeRule {m}{x} {x} {m} %<----- -\DeclareFontSeriesChangeRule {sbc}{b}{bc}{} -\DeclareFontSeriesChangeRule {sbc}{c}{sbc}{} -\DeclareFontSeriesChangeRule {sbc}{eb}{ebc}{} -\DeclareFontSeriesChangeRule {sbc}{ec}{sbec}{sbc} -\DeclareFontSeriesChangeRule {sbc}{el}{elc}{} -\DeclareFontSeriesChangeRule {sbc}{l}{lc}{} -\DeclareFontSeriesChangeRule {sbc}{sb}{sbc}{} -\DeclareFontSeriesChangeRule {sbc}{sc}{sbsc}{sbc} -\DeclareFontSeriesChangeRule {sbc}{sl}{slc}{} -\DeclareFontSeriesChangeRule {sbc}{ub}{ubc}{} -\DeclareFontSeriesChangeRule {sbc}{ul}{ulc}{} -\DeclareFontSeriesChangeRule {sbc}{x}{sbx}{} -\DeclareFontSeriesChangeRule {sbx}{b}{bx}{} -\DeclareFontSeriesChangeRule {sbx}{c}{sbc}{} -\DeclareFontSeriesChangeRule {sbx}{eb}{ebx}{} -\DeclareFontSeriesChangeRule {sbx}{ec}{sbec}{} -\DeclareFontSeriesChangeRule {sbx}{el}{elx}{} -\DeclareFontSeriesChangeRule {sbx}{l}{lx}{} -\DeclareFontSeriesChangeRule {sbx}{sb}{sbx}{} -\DeclareFontSeriesChangeRule {sbx}{sc}{sbsc}{} -\DeclareFontSeriesChangeRule {sbx}{sl}{slx}{} -\DeclareFontSeriesChangeRule {sbx}{ub}{ubx}{} -\DeclareFontSeriesChangeRule {sbx}{ul}{ulx}{} -\DeclareFontSeriesChangeRule {sbx}{x}{sbx}{} -\DeclareFontSeriesChangeRule {sb}{c} {sbc} {bc} %? %<----- -\DeclareFontSeriesChangeRule {sb}{ec} {sbec} {sbc} %? %<----- -\DeclareFontSeriesChangeRule {sb}{sc} {sbsc} {sbc} %? %<----- -\DeclareFontSeriesChangeRule {sb}{x} {sbx} {bx} %? %<----- -\DeclareFontSeriesChangeRule {slc}{b}{bc}{} -\DeclareFontSeriesChangeRule {slc}{c}{slc}{} -\DeclareFontSeriesChangeRule {slc}{eb}{ebc}{} -\DeclareFontSeriesChangeRule {slc}{ec}{slec}{} -\DeclareFontSeriesChangeRule {slc}{el}{elc}{} -\DeclareFontSeriesChangeRule {slc}{l}{lc}{} -\DeclareFontSeriesChangeRule {slc}{sb}{sbc}{} -\DeclareFontSeriesChangeRule {slc}{sc}{slsc}{} -\DeclareFontSeriesChangeRule {slc}{sl}{slc}{} -\DeclareFontSeriesChangeRule {slc}{ub}{ubc}{} -\DeclareFontSeriesChangeRule {slc}{ul}{ulc}{} -\DeclareFontSeriesChangeRule {slc}{x}{slx}{} -\DeclareFontSeriesChangeRule {slx}{b}{bx}{} -\DeclareFontSeriesChangeRule {slx}{c}{slc}{} -\DeclareFontSeriesChangeRule {slx}{eb}{ebx}{} -\DeclareFontSeriesChangeRule {slx}{ec}{slec}{} -\DeclareFontSeriesChangeRule {slx}{el}{elx}{} -\DeclareFontSeriesChangeRule {slx}{l}{lx}{} -\DeclareFontSeriesChangeRule {slx}{sb}{sbx}{} -\DeclareFontSeriesChangeRule {slx}{sc}{slsc}{} -\DeclareFontSeriesChangeRule {slx}{sl}{slx}{} -\DeclareFontSeriesChangeRule {slx}{ub}{ubx}{} -\DeclareFontSeriesChangeRule {slx}{ul}{ulx}{} -\DeclareFontSeriesChangeRule {slx}{x}{slx}{} -\DeclareFontSeriesChangeRule {sl}{c}{slc}{} -\DeclareFontSeriesChangeRule {sl}{ec}{slec}{} -\DeclareFontSeriesChangeRule {sl}{sc}{slsc}{} -\DeclareFontSeriesChangeRule {sl}{x}{slx}{} -\DeclareFontSeriesChangeRule {ubc}{b}{bc}{} -\DeclareFontSeriesChangeRule {ubc}{c}{ubc}{} -\DeclareFontSeriesChangeRule {ubc}{eb}{ebc}{} -\DeclareFontSeriesChangeRule {ubc}{ec}{ubec}{} -\DeclareFontSeriesChangeRule {ubc}{el}{elc}{} -\DeclareFontSeriesChangeRule {ubc}{l}{lc}{} -\DeclareFontSeriesChangeRule {ubc}{sb}{sbc}{} -\DeclareFontSeriesChangeRule {ubc}{sc}{ubsc}{} -\DeclareFontSeriesChangeRule {ubc}{sl}{slc}{} -\DeclareFontSeriesChangeRule {ubc}{ub}{ubc}{} -\DeclareFontSeriesChangeRule {ubc}{ul}{ulc}{} -\DeclareFontSeriesChangeRule {ubc}{x}{ubx}{} -\DeclareFontSeriesChangeRule {ubx}{b}{bx}{} -\DeclareFontSeriesChangeRule {ubx}{c}{ubc}{} -\DeclareFontSeriesChangeRule {ubx}{eb}{ebx}{} -\DeclareFontSeriesChangeRule {ubx}{ec}{ubec}{} -\DeclareFontSeriesChangeRule {ubx}{el}{elx}{} -\DeclareFontSeriesChangeRule {ubx}{l}{lx}{} -\DeclareFontSeriesChangeRule {ubx}{sb}{sbx}{} -\DeclareFontSeriesChangeRule {ubx}{sc}{ubsc}{} -\DeclareFontSeriesChangeRule {ubx}{sl}{slx}{} -\DeclareFontSeriesChangeRule {ubx}{ub}{ubx}{} -\DeclareFontSeriesChangeRule {ubx}{ul}{ulx}{} -\DeclareFontSeriesChangeRule {ubx}{x}{ubx}{} -\DeclareFontSeriesChangeRule {ub}{c}{ubc}{} -\DeclareFontSeriesChangeRule {ub}{ec}{ubec}{} -\DeclareFontSeriesChangeRule {ub}{sc}{ubsc}{} -\DeclareFontSeriesChangeRule {ub}{x}{ubx}{} -\DeclareFontSeriesChangeRule {ulc}{b}{bc}{} -\DeclareFontSeriesChangeRule {ulc}{c}{ulc}{} -\DeclareFontSeriesChangeRule {ulc}{eb}{ebc}{} -\DeclareFontSeriesChangeRule {ulc}{ec}{ulec}{ulc} -\DeclareFontSeriesChangeRule {ulc}{el}{elc}{} -\DeclareFontSeriesChangeRule {ulc}{l}{lc}{} -\DeclareFontSeriesChangeRule {ulc}{sb}{sbc}{} -\DeclareFontSeriesChangeRule {ulc}{sc}{ulsc}{ulc} -\DeclareFontSeriesChangeRule {ulc}{sl}{slc}{} -\DeclareFontSeriesChangeRule {ulc}{ub}{ubc}{} -\DeclareFontSeriesChangeRule {ulc}{ul}{ulc}{} -\DeclareFontSeriesChangeRule {ulc}{x}{ulx}{} -\DeclareFontSeriesChangeRule {ulx}{b}{bx}{} -\DeclareFontSeriesChangeRule {ulx}{c}{ulc}{} -\DeclareFontSeriesChangeRule {ulx}{eb}{ebx}{} -\DeclareFontSeriesChangeRule {ulx}{ec}{ulec}{} -\DeclareFontSeriesChangeRule {ulx}{el}{elx}{} -\DeclareFontSeriesChangeRule {ulx}{l}{lx}{} -\DeclareFontSeriesChangeRule {ulx}{sb}{sbx}{} -\DeclareFontSeriesChangeRule {ulx}{sc}{ulsc}{} -\DeclareFontSeriesChangeRule {ulx}{sl}{slx}{} -\DeclareFontSeriesChangeRule {ulx}{ub}{ubx}{} -\DeclareFontSeriesChangeRule {ulx}{ul}{ulx}{} -\DeclareFontSeriesChangeRule {ulx}{x}{ulx}{} -\DeclareFontSeriesChangeRule {ul}{c}{ulc}{} -\DeclareFontSeriesChangeRule {ul}{ec}{ulec}{} -\DeclareFontSeriesChangeRule {ul}{sc}{ulsc}{} -\DeclareFontSeriesChangeRule {ul}{x}{ulx}{} -\DeclareFontSeriesChangeRule {x}{b}{bx}{} -\DeclareFontSeriesChangeRule {x}{c}{c}{} -\DeclareFontSeriesChangeRule {x}{eb}{ebx}{} -\DeclareFontSeriesChangeRule {x}{ec}{ec}{} -\DeclareFontSeriesChangeRule {x}{el}{elx}{} -\DeclareFontSeriesChangeRule {x}{l}{lx}{} -\DeclareFontSeriesChangeRule {x}{sb}{sbx}{} -\DeclareFontSeriesChangeRule {x}{sc}{sc}{} -\DeclareFontSeriesChangeRule {x}{sl}{slx}{} -\DeclareFontSeriesChangeRule {x}{ub}{ubx}{} -\DeclareFontSeriesChangeRule {x}{ul}{ulx}{} -\DeclareFontSeriesChangeRule {bc}{m?}{c}{} -\DeclareFontSeriesChangeRule {bec}{m?}{ec}{} -\DeclareFontSeriesChangeRule {bsc}{m?}{sc}{} -\DeclareFontSeriesChangeRule {bx}{m?}{x}{} -\DeclareFontSeriesChangeRule {b}{m?}{m}{} -\DeclareFontSeriesChangeRule {c}{m?}{c}{} -\DeclareFontSeriesChangeRule {ebc}{m?}{c}{} -\DeclareFontSeriesChangeRule {ebec}{m?}{ec}{} -\DeclareFontSeriesChangeRule {ebsc}{m?}{sc}{} -\DeclareFontSeriesChangeRule {ebx}{m?}{x}{} -\DeclareFontSeriesChangeRule {eb}{m?}{m}{} -\DeclareFontSeriesChangeRule {ec}{m?}{ec}{} -\DeclareFontSeriesChangeRule {elc}{m?}{c}{} -\DeclareFontSeriesChangeRule {elec}{m?}{ec}{} -\DeclareFontSeriesChangeRule {elsc}{m?}{sc}{} -\DeclareFontSeriesChangeRule {elx}{m?}{x}{} -\DeclareFontSeriesChangeRule {el}{m?}{m}{} -\DeclareFontSeriesChangeRule {lc}{m?}{c}{} -\DeclareFontSeriesChangeRule {lec}{m?}{ec}{} -\DeclareFontSeriesChangeRule {lsc}{m?}{sc}{} -\DeclareFontSeriesChangeRule {lx}{m?}{x}{} -\DeclareFontSeriesChangeRule {l}{m?}{m}{} -\DeclareFontSeriesChangeRule {m}{m?}{m}{} -\DeclareFontSeriesChangeRule {sbc}{m?}{c}{} -\DeclareFontSeriesChangeRule {sbec}{m?}{ec}{} -\DeclareFontSeriesChangeRule {sbsc}{m?}{sc}{} -\DeclareFontSeriesChangeRule {sbx}{m?}{x}{} -\DeclareFontSeriesChangeRule {sb}{m?}{m}{} -\DeclareFontSeriesChangeRule {sc}{m?}{sc}{} -\DeclareFontSeriesChangeRule {slc}{m?}{c}{} -\DeclareFontSeriesChangeRule {slec}{m?}{ec}{} -\DeclareFontSeriesChangeRule {slsc}{m?}{sc}{} -\DeclareFontSeriesChangeRule {slx}{m?}{x}{} -\DeclareFontSeriesChangeRule {sl}{m?}{m}{} -\DeclareFontSeriesChangeRule {ubc}{m?}{c}{} -\DeclareFontSeriesChangeRule {ubec}{m?}{ec}{} -\DeclareFontSeriesChangeRule {ubsc}{m?}{sc}{} -\DeclareFontSeriesChangeRule {ubx}{m?}{x}{} -\DeclareFontSeriesChangeRule {ub}{m?}{ub}{} -\DeclareFontSeriesChangeRule {ulc}{m?}{c}{} -\DeclareFontSeriesChangeRule {ulec}{m?}{ec}{} -\DeclareFontSeriesChangeRule {ulsc}{m?}{sc}{} -\DeclareFontSeriesChangeRule {ulx}{m?}{x}{} -\DeclareFontSeriesChangeRule {ul}{m?}{m}{} -\DeclareFontSeriesChangeRule {x}{m?}{x}{} -\DeclareFontSeriesChangeRule {bc}{?m}{b}{} -\DeclareFontSeriesChangeRule {bec}{?m}{b}{} -\DeclareFontSeriesChangeRule {bsc}{?m}{b}{} -\DeclareFontSeriesChangeRule {bsc}{?m}{b}{} -\DeclareFontSeriesChangeRule {bx}{?m}{b}{} -\DeclareFontSeriesChangeRule {b}{?m}{b}{} -\DeclareFontSeriesChangeRule {c}{?m}{m}{} -\DeclareFontSeriesChangeRule {ebc}{?m}{eb}{} -\DeclareFontSeriesChangeRule {ebec}{?m}{eb}{} -\DeclareFontSeriesChangeRule {ebsc}{?m}{eb}{} -\DeclareFontSeriesChangeRule {ebsc}{?m}{eb}{} -\DeclareFontSeriesChangeRule {ebx}{?m}{eb}{} -\DeclareFontSeriesChangeRule {eb}{?m}{eb}{} -\DeclareFontSeriesChangeRule {ec}{?m}{m}{} -\DeclareFontSeriesChangeRule {elc}{?m}{el}{} -\DeclareFontSeriesChangeRule {elec}{?m}{el}{} -\DeclareFontSeriesChangeRule {elsc}{?m}{el}{} -\DeclareFontSeriesChangeRule {elsc}{?m}{el}{} -\DeclareFontSeriesChangeRule {elx}{?m}{el}{} -\DeclareFontSeriesChangeRule {el}{?m}{el}{} -\DeclareFontSeriesChangeRule {lc}{?m}{l}{} -\DeclareFontSeriesChangeRule {lec}{?m}{l}{} -\DeclareFontSeriesChangeRule {lsc}{?m}{l}{} -\DeclareFontSeriesChangeRule {lsc}{?m}{l}{} -\DeclareFontSeriesChangeRule {lx}{?m}{l}{} -\DeclareFontSeriesChangeRule {l}{?m}{l}{} -\DeclareFontSeriesChangeRule {m}{?m}{m}{} -\DeclareFontSeriesChangeRule {sbc}{?m}{sb}{} -\DeclareFontSeriesChangeRule {sbec}{?m}{sb}{} -\DeclareFontSeriesChangeRule {sbsc}{?m}{sb}{} -\DeclareFontSeriesChangeRule {sbsc}{?m}{sb}{} -\DeclareFontSeriesChangeRule {sbx}{?m}{sb}{} -\DeclareFontSeriesChangeRule {sb}{?m}{sb}{} -\DeclareFontSeriesChangeRule {sc}{?m}{m}{} -\DeclareFontSeriesChangeRule {sc}{?m}{m}{} -\DeclareFontSeriesChangeRule {slc}{?m}{sl}{} -\DeclareFontSeriesChangeRule {slec}{?m}{sl}{} -\DeclareFontSeriesChangeRule {slsc}{?m}{sl}{} -\DeclareFontSeriesChangeRule {slsc}{?m}{sl}{} -\DeclareFontSeriesChangeRule {slx}{?m}{sl}{} -\DeclareFontSeriesChangeRule {sl}{?m}{sl}{} -\DeclareFontSeriesChangeRule {ubc}{?m}{ub}{} -\DeclareFontSeriesChangeRule {ubec}{?m}{ub}{} -\DeclareFontSeriesChangeRule {ubsc}{?m}{ub}{} -\DeclareFontSeriesChangeRule {ubsc}{?m}{ub}{} -\DeclareFontSeriesChangeRule {ubx}{?m}{ub}{} -\DeclareFontSeriesChangeRule {ub}{?m}{m}{} -\DeclareFontSeriesChangeRule {ulc}{?m}{ul}{} -\DeclareFontSeriesChangeRule {ulec}{?m}{ul}{} -\DeclareFontSeriesChangeRule {ulsc}{?m}{ul}{} -\DeclareFontSeriesChangeRule {ulsc}{?m}{ul}{} -\DeclareFontSeriesChangeRule {ulx}{?m}{ul}{} -\DeclareFontSeriesChangeRule {ul}{?m}{ul}{} -\DeclareFontSeriesChangeRule {x}{?m}{m}{} +\DeclareFontSeriesChangeRule {uluc}{ul} {uluc} {} +\DeclareFontSeriesChangeRule {uluc}{el} {eluc} {} +\DeclareFontSeriesChangeRule {uluc}{l} {luc} {} +\DeclareFontSeriesChangeRule {uluc}{sl} {sluc} {} +\DeclareFontSeriesChangeRule {uluc}{sb} {sbuc} {buc} +\DeclareFontSeriesChangeRule {uluc}{b} {buc} {} +\DeclareFontSeriesChangeRule {uluc}{eb} {ebuc} {buc} +\DeclareFontSeriesChangeRule {uluc}{ub} {ubuc} {buc} +\DeclareFontSeriesChangeRule {uluc}{uc} {uluc} {} +\DeclareFontSeriesChangeRule {uluc}{ec} {ulec} {} +\DeclareFontSeriesChangeRule {uluc}{c} {ulc} {} +\DeclareFontSeriesChangeRule {uluc}{sc} {ulsc} {} +\DeclareFontSeriesChangeRule {uluc}{sx} {ulsx} {} +\DeclareFontSeriesChangeRule {uluc}{x} {ulx} {} +\DeclareFontSeriesChangeRule {uluc}{ex} {ulex} {} +\DeclareFontSeriesChangeRule {uluc}{ux} {ulux} {} +\DeclareFontSeriesChangeRule {ulec}{ul} {ulec} {} +\DeclareFontSeriesChangeRule {ulec}{el} {elec} {} +\DeclareFontSeriesChangeRule {ulec}{l} {lec} {} +\DeclareFontSeriesChangeRule {ulec}{sl} {slec} {} +\DeclareFontSeriesChangeRule {ulec}{sb} {sbec} {bec} +\DeclareFontSeriesChangeRule {ulec}{b} {bec} {} +\DeclareFontSeriesChangeRule {ulec}{eb} {ebec} {bec} +\DeclareFontSeriesChangeRule {ulec}{ub} {ubec} {bec} +\DeclareFontSeriesChangeRule {ulec}{uc} {uluc} {} +\DeclareFontSeriesChangeRule {ulec}{ec} {ulec} {} +\DeclareFontSeriesChangeRule {ulec}{c} {ulc} {} +\DeclareFontSeriesChangeRule {ulec}{sc} {ulsc} {} +\DeclareFontSeriesChangeRule {ulec}{sx} {ulsx} {} +\DeclareFontSeriesChangeRule {ulec}{x} {ulx} {} +\DeclareFontSeriesChangeRule {ulec}{ex} {ulex} {} +\DeclareFontSeriesChangeRule {ulec}{ux} {ulux} {} +\DeclareFontSeriesChangeRule {ulc}{ul} {ulc} {} +\DeclareFontSeriesChangeRule {ulc}{el} {elc} {} +\DeclareFontSeriesChangeRule {ulc}{l} {lc} {} +\DeclareFontSeriesChangeRule {ulc}{sl} {slc} {} +\DeclareFontSeriesChangeRule {ulc}{sb} {sbc} {bc} +\DeclareFontSeriesChangeRule {ulc}{b} {bc} {} +\DeclareFontSeriesChangeRule {ulc}{eb} {ebc} {bc} +\DeclareFontSeriesChangeRule {ulc}{ub} {ubc} {bc} +\DeclareFontSeriesChangeRule {ulc}{uc} {uluc} {} +\DeclareFontSeriesChangeRule {ulc}{ec} {ulec} {} +\DeclareFontSeriesChangeRule {ulc}{c} {ulc} {} +\DeclareFontSeriesChangeRule {ulc}{sc} {ulsc} {} +\DeclareFontSeriesChangeRule {ulc}{sx} {ulsx} {} +\DeclareFontSeriesChangeRule {ulc}{x} {ulx} {} +\DeclareFontSeriesChangeRule {ulc}{ex} {ulex} {} +\DeclareFontSeriesChangeRule {ulc}{ux} {ulux} {} +\DeclareFontSeriesChangeRule {ulsc}{ul} {ulsc} {} +\DeclareFontSeriesChangeRule {ulsc}{el} {elsc} {} +\DeclareFontSeriesChangeRule {ulsc}{l} {lsc} {} +\DeclareFontSeriesChangeRule {ulsc}{sl} {slsc} {} +\DeclareFontSeriesChangeRule {ulsc}{sb} {sbsc} {bsc} +\DeclareFontSeriesChangeRule {ulsc}{b} {bsc} {} +\DeclareFontSeriesChangeRule {ulsc}{eb} {ebsc} {bsc} +\DeclareFontSeriesChangeRule {ulsc}{ub} {ubsc} {bsc} +\DeclareFontSeriesChangeRule {ulsc}{uc} {uluc} {} +\DeclareFontSeriesChangeRule {ulsc}{ec} {ulec} {} +\DeclareFontSeriesChangeRule {ulsc}{c} {ulc} {} +\DeclareFontSeriesChangeRule {ulsc}{sc} {ulsc} {} +\DeclareFontSeriesChangeRule {ulsc}{sx} {ulsx} {} +\DeclareFontSeriesChangeRule {ulsc}{x} {ulx} {} +\DeclareFontSeriesChangeRule {ulsc}{ex} {ulex} {} +\DeclareFontSeriesChangeRule {ulsc}{ux} {ulux} {} +\DeclareFontSeriesChangeRule {ul}{uc} {uluc} {} +\DeclareFontSeriesChangeRule {ul}{ec} {ulec} {} +\DeclareFontSeriesChangeRule {ul}{c} {ulc} {} +\DeclareFontSeriesChangeRule {ul}{sc} {ulsc} {} +\DeclareFontSeriesChangeRule {ul}{sx} {ulsx} {} +\DeclareFontSeriesChangeRule {ul}{x} {ulx} {} +\DeclareFontSeriesChangeRule {ul}{ex} {ulex} {} +\DeclareFontSeriesChangeRule {ul}{ux} {ulux} {} +\DeclareFontSeriesChangeRule {ul}{sb} {sb} {b} +\DeclareFontSeriesChangeRule {ul}{eb} {eb} {b} +\DeclareFontSeriesChangeRule {ul}{ub} {ub} {b} +\DeclareFontSeriesChangeRule {ulsx}{ul} {ulsx} {} +\DeclareFontSeriesChangeRule {ulsx}{el} {elsx} {} +\DeclareFontSeriesChangeRule {ulsx}{l} {lsx} {} +\DeclareFontSeriesChangeRule {ulsx}{sl} {slsx} {} +\DeclareFontSeriesChangeRule {ulsx}{sb} {sbsx} {bsx} +\DeclareFontSeriesChangeRule {ulsx}{b} {bsx} {} +\DeclareFontSeriesChangeRule {ulsx}{eb} {ebsx} {bsx} +\DeclareFontSeriesChangeRule {ulsx}{ub} {ubsx} {bsx} +\DeclareFontSeriesChangeRule {ulsx}{uc} {uluc} {} +\DeclareFontSeriesChangeRule {ulsx}{ec} {ulec} {} +\DeclareFontSeriesChangeRule {ulsx}{c} {ulc} {} +\DeclareFontSeriesChangeRule {ulsx}{sc} {ulsc} {} +\DeclareFontSeriesChangeRule {ulsx}{sx} {ulsx} {} +\DeclareFontSeriesChangeRule {ulsx}{x} {ulx} {} +\DeclareFontSeriesChangeRule {ulsx}{ex} {ulex} {} +\DeclareFontSeriesChangeRule {ulsx}{ux} {ulux} {} +\DeclareFontSeriesChangeRule {ulx}{ul} {ulx} {} +\DeclareFontSeriesChangeRule {ulx}{el} {elx} {} +\DeclareFontSeriesChangeRule {ulx}{l} {lx} {} +\DeclareFontSeriesChangeRule {ulx}{sl} {slx} {} +\DeclareFontSeriesChangeRule {ulx}{sb} {sbx} {bx} +\DeclareFontSeriesChangeRule {ulx}{b} {bx} {} +\DeclareFontSeriesChangeRule {ulx}{eb} {ebx} {bx} +\DeclareFontSeriesChangeRule {ulx}{ub} {ubx} {bx} +\DeclareFontSeriesChangeRule {ulx}{uc} {uluc} {} +\DeclareFontSeriesChangeRule {ulx}{ec} {ulec} {} +\DeclareFontSeriesChangeRule {ulx}{c} {ulc} {} +\DeclareFontSeriesChangeRule {ulx}{sc} {ulsc} {} +\DeclareFontSeriesChangeRule {ulx}{sx} {ulsx} {} +\DeclareFontSeriesChangeRule {ulx}{x} {ulx} {} +\DeclareFontSeriesChangeRule {ulx}{ex} {ulex} {} +\DeclareFontSeriesChangeRule {ulx}{ux} {ulux} {} +\DeclareFontSeriesChangeRule {ulex}{ul} {ulex} {} +\DeclareFontSeriesChangeRule {ulex}{el} {elex} {} +\DeclareFontSeriesChangeRule {ulex}{l} {lex} {} +\DeclareFontSeriesChangeRule {ulex}{sl} {slex} {} +\DeclareFontSeriesChangeRule {ulex}{sb} {sbex} {bex} +\DeclareFontSeriesChangeRule {ulex}{b} {bex} {} +\DeclareFontSeriesChangeRule {ulex}{eb} {ebex} {bex} +\DeclareFontSeriesChangeRule {ulex}{ub} {ubex} {bex} +\DeclareFontSeriesChangeRule {ulex}{uc} {uluc} {} +\DeclareFontSeriesChangeRule {ulex}{ec} {ulec} {} +\DeclareFontSeriesChangeRule {ulex}{c} {ulc} {} +\DeclareFontSeriesChangeRule {ulex}{sc} {ulsc} {} +\DeclareFontSeriesChangeRule {ulex}{sx} {ulsx} {} +\DeclareFontSeriesChangeRule {ulex}{x} {ulx} {} +\DeclareFontSeriesChangeRule {ulex}{ex} {ulex} {} +\DeclareFontSeriesChangeRule {ulex}{ux} {ulux} {} +\DeclareFontSeriesChangeRule {ulux}{ul} {ulux} {} +\DeclareFontSeriesChangeRule {ulux}{el} {elux} {} +\DeclareFontSeriesChangeRule {ulux}{l} {lux} {} +\DeclareFontSeriesChangeRule {ulux}{sl} {slux} {} +\DeclareFontSeriesChangeRule {ulux}{sb} {sbux} {bux} +\DeclareFontSeriesChangeRule {ulux}{b} {bux} {} +\DeclareFontSeriesChangeRule {ulux}{eb} {ebux} {bux} +\DeclareFontSeriesChangeRule {ulux}{ub} {ubux} {bux} +\DeclareFontSeriesChangeRule {ulux}{uc} {uluc} {} +\DeclareFontSeriesChangeRule {ulux}{ec} {ulec} {} +\DeclareFontSeriesChangeRule {ulux}{c} {ulc} {} +\DeclareFontSeriesChangeRule {ulux}{sc} {ulsc} {} +\DeclareFontSeriesChangeRule {ulux}{sx} {ulsx} {} +\DeclareFontSeriesChangeRule {ulux}{x} {ulx} {} +\DeclareFontSeriesChangeRule {ulux}{ex} {ulex} {} +\DeclareFontSeriesChangeRule {ulux}{ux} {ulux} {} +\DeclareFontSeriesChangeRule {eluc}{ul} {uluc} {} +\DeclareFontSeriesChangeRule {eluc}{el} {eluc} {} +\DeclareFontSeriesChangeRule {eluc}{l} {luc} {} +\DeclareFontSeriesChangeRule {eluc}{sl} {sluc} {} +\DeclareFontSeriesChangeRule {eluc}{sb} {sbuc} {buc} +\DeclareFontSeriesChangeRule {eluc}{b} {buc} {} +\DeclareFontSeriesChangeRule {eluc}{eb} {ebuc} {buc} +\DeclareFontSeriesChangeRule {eluc}{ub} {ubuc} {buc} +\DeclareFontSeriesChangeRule {eluc}{uc} {eluc} {} +\DeclareFontSeriesChangeRule {eluc}{ec} {elec} {} +\DeclareFontSeriesChangeRule {eluc}{c} {elc} {} +\DeclareFontSeriesChangeRule {eluc}{sc} {elsc} {} +\DeclareFontSeriesChangeRule {eluc}{sx} {elsx} {} +\DeclareFontSeriesChangeRule {eluc}{x} {elx} {} +\DeclareFontSeriesChangeRule {eluc}{ex} {elex} {} +\DeclareFontSeriesChangeRule {eluc}{ux} {elux} {} +\DeclareFontSeriesChangeRule {elec}{ul} {ulec} {} +\DeclareFontSeriesChangeRule {elec}{el} {elec} {} +\DeclareFontSeriesChangeRule {elec}{l} {lec} {} +\DeclareFontSeriesChangeRule {elec}{sl} {slec} {} +\DeclareFontSeriesChangeRule {elec}{sb} {sbec} {bec} +\DeclareFontSeriesChangeRule {elec}{b} {bec} {} +\DeclareFontSeriesChangeRule {elec}{eb} {ebec} {bec} +\DeclareFontSeriesChangeRule {elec}{ub} {ubec} {bec} +\DeclareFontSeriesChangeRule {elec}{uc} {eluc} {} +\DeclareFontSeriesChangeRule {elec}{ec} {elec} {} +\DeclareFontSeriesChangeRule {elec}{c} {elc} {} +\DeclareFontSeriesChangeRule {elec}{sc} {elsc} {} +\DeclareFontSeriesChangeRule {elec}{sx} {elsx} {} +\DeclareFontSeriesChangeRule {elec}{x} {elx} {} +\DeclareFontSeriesChangeRule {elec}{ex} {elex} {} +\DeclareFontSeriesChangeRule {elec}{ux} {elux} {} +\DeclareFontSeriesChangeRule {elc}{ul} {ulc} {} +\DeclareFontSeriesChangeRule {elc}{el} {elc} {} +\DeclareFontSeriesChangeRule {elc}{l} {lc} {} +\DeclareFontSeriesChangeRule {elc}{sl} {slc} {} +\DeclareFontSeriesChangeRule {elc}{sb} {sbc} {bc} +\DeclareFontSeriesChangeRule {elc}{b} {bc} {} +\DeclareFontSeriesChangeRule {elc}{eb} {ebc} {bc} +\DeclareFontSeriesChangeRule {elc}{ub} {ubc} {bc} +\DeclareFontSeriesChangeRule {elc}{uc} {eluc} {} +\DeclareFontSeriesChangeRule {elc}{ec} {elec} {} +\DeclareFontSeriesChangeRule {elc}{c} {elc} {} +\DeclareFontSeriesChangeRule {elc}{sc} {elsc} {} +\DeclareFontSeriesChangeRule {elc}{sx} {elsx} {} +\DeclareFontSeriesChangeRule {elc}{x} {elx} {} +\DeclareFontSeriesChangeRule {elc}{ex} {elex} {} +\DeclareFontSeriesChangeRule {elc}{ux} {elux} {} +\DeclareFontSeriesChangeRule {elsc}{ul} {ulsc} {} +\DeclareFontSeriesChangeRule {elsc}{el} {elsc} {} +\DeclareFontSeriesChangeRule {elsc}{l} {lsc} {} +\DeclareFontSeriesChangeRule {elsc}{sl} {slsc} {} +\DeclareFontSeriesChangeRule {elsc}{sb} {sbsc} {bsc} +\DeclareFontSeriesChangeRule {elsc}{b} {bsc} {} +\DeclareFontSeriesChangeRule {elsc}{eb} {ebsc} {bsc} +\DeclareFontSeriesChangeRule {elsc}{ub} {ubsc} {bsc} +\DeclareFontSeriesChangeRule {elsc}{uc} {eluc} {} +\DeclareFontSeriesChangeRule {elsc}{ec} {elec} {} +\DeclareFontSeriesChangeRule {elsc}{c} {elc} {} +\DeclareFontSeriesChangeRule {elsc}{sc} {elsc} {} +\DeclareFontSeriesChangeRule {elsc}{sx} {elsx} {} +\DeclareFontSeriesChangeRule {elsc}{x} {elx} {} +\DeclareFontSeriesChangeRule {elsc}{ex} {elex} {} +\DeclareFontSeriesChangeRule {elsc}{ux} {elux} {} +\DeclareFontSeriesChangeRule {el}{uc} {eluc} {} +\DeclareFontSeriesChangeRule {el}{ec} {elec} {} +\DeclareFontSeriesChangeRule {el}{c} {elc} {} +\DeclareFontSeriesChangeRule {el}{sc} {elsc} {} +\DeclareFontSeriesChangeRule {el}{sx} {elsx} {} +\DeclareFontSeriesChangeRule {el}{x} {elx} {} +\DeclareFontSeriesChangeRule {el}{ex} {elex} {} +\DeclareFontSeriesChangeRule {el}{ux} {elux} {} +\DeclareFontSeriesChangeRule {el}{sb} {sb} {b} +\DeclareFontSeriesChangeRule {el}{eb} {eb} {b} +\DeclareFontSeriesChangeRule {el}{ub} {ub} {b} +\DeclareFontSeriesChangeRule {elsx}{ul} {ulsx} {} +\DeclareFontSeriesChangeRule {elsx}{el} {elsx} {} +\DeclareFontSeriesChangeRule {elsx}{l} {lsx} {} +\DeclareFontSeriesChangeRule {elsx}{sl} {slsx} {} +\DeclareFontSeriesChangeRule {elsx}{sb} {sbsx} {bsx} +\DeclareFontSeriesChangeRule {elsx}{b} {bsx} {} +\DeclareFontSeriesChangeRule {elsx}{eb} {ebsx} {bsx} +\DeclareFontSeriesChangeRule {elsx}{ub} {ubsx} {bsx} +\DeclareFontSeriesChangeRule {elsx}{uc} {eluc} {} +\DeclareFontSeriesChangeRule {elsx}{ec} {elec} {} +\DeclareFontSeriesChangeRule {elsx}{c} {elc} {} +\DeclareFontSeriesChangeRule {elsx}{sc} {elsc} {} +\DeclareFontSeriesChangeRule {elsx}{sx} {elsx} {} +\DeclareFontSeriesChangeRule {elsx}{x} {elx} {} +\DeclareFontSeriesChangeRule {elsx}{ex} {elex} {} +\DeclareFontSeriesChangeRule {elsx}{ux} {elux} {} +\DeclareFontSeriesChangeRule {elx}{ul} {ulx} {} +\DeclareFontSeriesChangeRule {elx}{el} {elx} {} +\DeclareFontSeriesChangeRule {elx}{l} {lx} {} +\DeclareFontSeriesChangeRule {elx}{sl} {slx} {} +\DeclareFontSeriesChangeRule {elx}{sb} {sbx} {bx} +\DeclareFontSeriesChangeRule {elx}{b} {bx} {} +\DeclareFontSeriesChangeRule {elx}{eb} {ebx} {bx} +\DeclareFontSeriesChangeRule {elx}{ub} {ubx} {bx} +\DeclareFontSeriesChangeRule {elx}{uc} {eluc} {} +\DeclareFontSeriesChangeRule {elx}{ec} {elec} {} +\DeclareFontSeriesChangeRule {elx}{c} {elc} {} +\DeclareFontSeriesChangeRule {elx}{sc} {elsc} {} +\DeclareFontSeriesChangeRule {elx}{sx} {elsx} {} +\DeclareFontSeriesChangeRule {elx}{x} {elx} {} +\DeclareFontSeriesChangeRule {elx}{ex} {elex} {} +\DeclareFontSeriesChangeRule {elx}{ux} {elux} {} +\DeclareFontSeriesChangeRule {elex}{ul} {ulex} {} +\DeclareFontSeriesChangeRule {elex}{el} {elex} {} +\DeclareFontSeriesChangeRule {elex}{l} {lex} {} +\DeclareFontSeriesChangeRule {elex}{sl} {slex} {} +\DeclareFontSeriesChangeRule {elex}{sb} {sbex} {bex} +\DeclareFontSeriesChangeRule {elex}{b} {bex} {} +\DeclareFontSeriesChangeRule {elex}{eb} {ebex} {bex} +\DeclareFontSeriesChangeRule {elex}{ub} {ubex} {bex} +\DeclareFontSeriesChangeRule {elex}{uc} {eluc} {} +\DeclareFontSeriesChangeRule {elex}{ec} {elec} {} +\DeclareFontSeriesChangeRule {elex}{c} {elc} {} +\DeclareFontSeriesChangeRule {elex}{sc} {elsc} {} +\DeclareFontSeriesChangeRule {elex}{sx} {elsx} {} +\DeclareFontSeriesChangeRule {elex}{x} {elx} {} +\DeclareFontSeriesChangeRule {elex}{ex} {elex} {} +\DeclareFontSeriesChangeRule {elex}{ux} {elux} {} +\DeclareFontSeriesChangeRule {elux}{ul} {ulux} {} +\DeclareFontSeriesChangeRule {elux}{el} {elux} {} +\DeclareFontSeriesChangeRule {elux}{l} {lux} {} +\DeclareFontSeriesChangeRule {elux}{sl} {slux} {} +\DeclareFontSeriesChangeRule {elux}{sb} {sbux} {bux} +\DeclareFontSeriesChangeRule {elux}{b} {bux} {} +\DeclareFontSeriesChangeRule {elux}{eb} {ebux} {bux} +\DeclareFontSeriesChangeRule {elux}{ub} {ubux} {bux} +\DeclareFontSeriesChangeRule {elux}{uc} {eluc} {} +\DeclareFontSeriesChangeRule {elux}{ec} {elec} {} +\DeclareFontSeriesChangeRule {elux}{c} {elc} {} +\DeclareFontSeriesChangeRule {elux}{sc} {elsc} {} +\DeclareFontSeriesChangeRule {elux}{sx} {elsx} {} +\DeclareFontSeriesChangeRule {elux}{x} {elx} {} +\DeclareFontSeriesChangeRule {elux}{ex} {elex} {} +\DeclareFontSeriesChangeRule {elux}{ux} {elux} {} +\DeclareFontSeriesChangeRule {luc}{ul} {uluc} {} +\DeclareFontSeriesChangeRule {luc}{el} {eluc} {} +\DeclareFontSeriesChangeRule {luc}{l} {luc} {} +\DeclareFontSeriesChangeRule {luc}{sl} {sluc} {} +\DeclareFontSeriesChangeRule {luc}{sb} {sbuc} {buc} +\DeclareFontSeriesChangeRule {luc}{b} {buc} {} +\DeclareFontSeriesChangeRule {luc}{eb} {ebuc} {buc} +\DeclareFontSeriesChangeRule {luc}{ub} {ubuc} {buc} +\DeclareFontSeriesChangeRule {luc}{uc} {luc} {} +\DeclareFontSeriesChangeRule {luc}{ec} {lec} {} +\DeclareFontSeriesChangeRule {luc}{c} {lc} {} +\DeclareFontSeriesChangeRule {luc}{sc} {lsc} {} +\DeclareFontSeriesChangeRule {luc}{sx} {lsx} {} +\DeclareFontSeriesChangeRule {luc}{x} {lx} {} +\DeclareFontSeriesChangeRule {luc}{ex} {lex} {} +\DeclareFontSeriesChangeRule {luc}{ux} {lux} {} +\DeclareFontSeriesChangeRule {lec}{ul} {ulec} {} +\DeclareFontSeriesChangeRule {lec}{el} {elec} {} +\DeclareFontSeriesChangeRule {lec}{l} {lec} {} +\DeclareFontSeriesChangeRule {lec}{sl} {slec} {} +\DeclareFontSeriesChangeRule {lec}{sb} {sbec} {bec} +\DeclareFontSeriesChangeRule {lec}{b} {bec} {} +\DeclareFontSeriesChangeRule {lec}{eb} {ebec} {bec} +\DeclareFontSeriesChangeRule {lec}{ub} {ubec} {bec} +\DeclareFontSeriesChangeRule {lec}{uc} {luc} {} +\DeclareFontSeriesChangeRule {lec}{ec} {lec} {} +\DeclareFontSeriesChangeRule {lec}{c} {lc} {} +\DeclareFontSeriesChangeRule {lec}{sc} {lsc} {} +\DeclareFontSeriesChangeRule {lec}{sx} {lsx} {} +\DeclareFontSeriesChangeRule {lec}{x} {lx} {} +\DeclareFontSeriesChangeRule {lec}{ex} {lex} {} +\DeclareFontSeriesChangeRule {lec}{ux} {lux} {} +\DeclareFontSeriesChangeRule {lc}{ul} {ulc} {} +\DeclareFontSeriesChangeRule {lc}{el} {elc} {} +\DeclareFontSeriesChangeRule {lc}{l} {lc} {} +\DeclareFontSeriesChangeRule {lc}{sl} {slc} {} +\DeclareFontSeriesChangeRule {lc}{sb} {sbc} {bc} +\DeclareFontSeriesChangeRule {lc}{b} {bc} {} +\DeclareFontSeriesChangeRule {lc}{eb} {ebc} {bc} +\DeclareFontSeriesChangeRule {lc}{ub} {ubc} {bc} +\DeclareFontSeriesChangeRule {lc}{uc} {luc} {} +\DeclareFontSeriesChangeRule {lc}{ec} {lec} {} +\DeclareFontSeriesChangeRule {lc}{c} {lc} {} +\DeclareFontSeriesChangeRule {lc}{sc} {lsc} {} +\DeclareFontSeriesChangeRule {lc}{sx} {lsx} {} +\DeclareFontSeriesChangeRule {lc}{x} {lx} {} +\DeclareFontSeriesChangeRule {lc}{ex} {lex} {} +\DeclareFontSeriesChangeRule {lc}{ux} {lux} {} +\DeclareFontSeriesChangeRule {lsc}{ul} {ulsc} {} +\DeclareFontSeriesChangeRule {lsc}{el} {elsc} {} +\DeclareFontSeriesChangeRule {lsc}{l} {lsc} {} +\DeclareFontSeriesChangeRule {lsc}{sl} {slsc} {} +\DeclareFontSeriesChangeRule {lsc}{sb} {sbsc} {bsc} +\DeclareFontSeriesChangeRule {lsc}{b} {bsc} {} +\DeclareFontSeriesChangeRule {lsc}{eb} {ebsc} {bsc} +\DeclareFontSeriesChangeRule {lsc}{ub} {ubsc} {bsc} +\DeclareFontSeriesChangeRule {lsc}{uc} {luc} {} +\DeclareFontSeriesChangeRule {lsc}{ec} {lec} {} +\DeclareFontSeriesChangeRule {lsc}{c} {lc} {} +\DeclareFontSeriesChangeRule {lsc}{sc} {lsc} {} +\DeclareFontSeriesChangeRule {lsc}{sx} {lsx} {} +\DeclareFontSeriesChangeRule {lsc}{x} {lx} {} +\DeclareFontSeriesChangeRule {lsc}{ex} {lex} {} +\DeclareFontSeriesChangeRule {lsc}{ux} {lux} {} +\DeclareFontSeriesChangeRule {l}{uc} {luc} {} +\DeclareFontSeriesChangeRule {l}{ec} {lec} {} +\DeclareFontSeriesChangeRule {l}{c} {lc} {} +\DeclareFontSeriesChangeRule {l}{sc} {lsc} {} +\DeclareFontSeriesChangeRule {l}{sx} {lsx} {} +\DeclareFontSeriesChangeRule {l}{x} {lx} {} +\DeclareFontSeriesChangeRule {l}{ex} {lex} {} +\DeclareFontSeriesChangeRule {l}{ux} {lux} {} +\DeclareFontSeriesChangeRule {l}{sb} {sb} {b} +\DeclareFontSeriesChangeRule {l}{eb} {eb} {b} +\DeclareFontSeriesChangeRule {l}{ub} {ub} {b} +\DeclareFontSeriesChangeRule {lsx}{ul} {ulsx} {} +\DeclareFontSeriesChangeRule {lsx}{el} {elsx} {} +\DeclareFontSeriesChangeRule {lsx}{l} {lsx} {} +\DeclareFontSeriesChangeRule {lsx}{sl} {slsx} {} +\DeclareFontSeriesChangeRule {lsx}{sb} {sbsx} {bsx} +\DeclareFontSeriesChangeRule {lsx}{b} {bsx} {} +\DeclareFontSeriesChangeRule {lsx}{eb} {ebsx} {bsx} +\DeclareFontSeriesChangeRule {lsx}{ub} {ubsx} {bsx} +\DeclareFontSeriesChangeRule {lsx}{uc} {luc} {} +\DeclareFontSeriesChangeRule {lsx}{ec} {lec} {} +\DeclareFontSeriesChangeRule {lsx}{c} {lc} {} +\DeclareFontSeriesChangeRule {lsx}{sc} {lsc} {} +\DeclareFontSeriesChangeRule {lsx}{sx} {lsx} {} +\DeclareFontSeriesChangeRule {lsx}{x} {lx} {} +\DeclareFontSeriesChangeRule {lsx}{ex} {lex} {} +\DeclareFontSeriesChangeRule {lsx}{ux} {lux} {} +\DeclareFontSeriesChangeRule {lx}{ul} {ulx} {} +\DeclareFontSeriesChangeRule {lx}{el} {elx} {} +\DeclareFontSeriesChangeRule {lx}{l} {lx} {} +\DeclareFontSeriesChangeRule {lx}{sl} {slx} {} +\DeclareFontSeriesChangeRule {lx}{sb} {sbx} {bx} +\DeclareFontSeriesChangeRule {lx}{b} {bx} {} +\DeclareFontSeriesChangeRule {lx}{eb} {ebx} {bx} +\DeclareFontSeriesChangeRule {lx}{ub} {ubx} {bx} +\DeclareFontSeriesChangeRule {lx}{uc} {luc} {} +\DeclareFontSeriesChangeRule {lx}{ec} {lec} {} +\DeclareFontSeriesChangeRule {lx}{c} {lc} {} +\DeclareFontSeriesChangeRule {lx}{sc} {lsc} {} +\DeclareFontSeriesChangeRule {lx}{sx} {lsx} {} +\DeclareFontSeriesChangeRule {lx}{x} {lx} {} +\DeclareFontSeriesChangeRule {lx}{ex} {lex} {} +\DeclareFontSeriesChangeRule {lx}{ux} {lux} {} +\DeclareFontSeriesChangeRule {lex}{ul} {ulex} {} +\DeclareFontSeriesChangeRule {lex}{el} {elex} {} +\DeclareFontSeriesChangeRule {lex}{l} {lex} {} +\DeclareFontSeriesChangeRule {lex}{sl} {slex} {} +\DeclareFontSeriesChangeRule {lex}{sb} {sbex} {bex} +\DeclareFontSeriesChangeRule {lex}{b} {bex} {} +\DeclareFontSeriesChangeRule {lex}{eb} {ebex} {bex} +\DeclareFontSeriesChangeRule {lex}{ub} {ubex} {bex} +\DeclareFontSeriesChangeRule {lex}{uc} {luc} {} +\DeclareFontSeriesChangeRule {lex}{ec} {lec} {} +\DeclareFontSeriesChangeRule {lex}{c} {lc} {} +\DeclareFontSeriesChangeRule {lex}{sc} {lsc} {} +\DeclareFontSeriesChangeRule {lex}{sx} {lsx} {} +\DeclareFontSeriesChangeRule {lex}{x} {lx} {} +\DeclareFontSeriesChangeRule {lex}{ex} {lex} {} +\DeclareFontSeriesChangeRule {lex}{ux} {lux} {} +\DeclareFontSeriesChangeRule {lux}{ul} {ulux} {} +\DeclareFontSeriesChangeRule {lux}{el} {elux} {} +\DeclareFontSeriesChangeRule {lux}{l} {lux} {} +\DeclareFontSeriesChangeRule {lux}{sl} {slux} {} +\DeclareFontSeriesChangeRule {lux}{sb} {sbux} {bux} +\DeclareFontSeriesChangeRule {lux}{b} {bux} {} +\DeclareFontSeriesChangeRule {lux}{eb} {ebux} {bux} +\DeclareFontSeriesChangeRule {lux}{ub} {ubux} {bux} +\DeclareFontSeriesChangeRule {lux}{uc} {luc} {} +\DeclareFontSeriesChangeRule {lux}{ec} {lec} {} +\DeclareFontSeriesChangeRule {lux}{c} {lc} {} +\DeclareFontSeriesChangeRule {lux}{sc} {lsc} {} +\DeclareFontSeriesChangeRule {lux}{sx} {lsx} {} +\DeclareFontSeriesChangeRule {lux}{x} {lx} {} +\DeclareFontSeriesChangeRule {lux}{ex} {lex} {} +\DeclareFontSeriesChangeRule {lux}{ux} {lux} {} +\DeclareFontSeriesChangeRule {sluc}{ul} {uluc} {} +\DeclareFontSeriesChangeRule {sluc}{el} {eluc} {} +\DeclareFontSeriesChangeRule {sluc}{l} {luc} {} +\DeclareFontSeriesChangeRule {sluc}{sl} {sluc} {} +\DeclareFontSeriesChangeRule {sluc}{sb} {sbuc} {buc} +\DeclareFontSeriesChangeRule {sluc}{b} {buc} {} +\DeclareFontSeriesChangeRule {sluc}{eb} {ebuc} {buc} +\DeclareFontSeriesChangeRule {sluc}{ub} {ubuc} {buc} +\DeclareFontSeriesChangeRule {sluc}{uc} {sluc} {} +\DeclareFontSeriesChangeRule {sluc}{ec} {slec} {} +\DeclareFontSeriesChangeRule {sluc}{c} {slc} {} +\DeclareFontSeriesChangeRule {sluc}{sc} {slsc} {} +\DeclareFontSeriesChangeRule {sluc}{sx} {slsx} {} +\DeclareFontSeriesChangeRule {sluc}{x} {slx} {} +\DeclareFontSeriesChangeRule {sluc}{ex} {slex} {} +\DeclareFontSeriesChangeRule {sluc}{ux} {slux} {} +\DeclareFontSeriesChangeRule {slec}{ul} {ulec} {} +\DeclareFontSeriesChangeRule {slec}{el} {elec} {} +\DeclareFontSeriesChangeRule {slec}{l} {lec} {} +\DeclareFontSeriesChangeRule {slec}{sl} {slec} {} +\DeclareFontSeriesChangeRule {slec}{sb} {sbec} {bec} +\DeclareFontSeriesChangeRule {slec}{b} {bec} {} +\DeclareFontSeriesChangeRule {slec}{eb} {ebec} {bec} +\DeclareFontSeriesChangeRule {slec}{ub} {ubec} {bec} +\DeclareFontSeriesChangeRule {slec}{uc} {sluc} {} +\DeclareFontSeriesChangeRule {slec}{ec} {slec} {} +\DeclareFontSeriesChangeRule {slec}{c} {slc} {} +\DeclareFontSeriesChangeRule {slec}{sc} {slsc} {} +\DeclareFontSeriesChangeRule {slec}{sx} {slsx} {} +\DeclareFontSeriesChangeRule {slec}{x} {slx} {} +\DeclareFontSeriesChangeRule {slec}{ex} {slex} {} +\DeclareFontSeriesChangeRule {slec}{ux} {slux} {} +\DeclareFontSeriesChangeRule {slc}{ul} {ulc} {} +\DeclareFontSeriesChangeRule {slc}{el} {elc} {} +\DeclareFontSeriesChangeRule {slc}{l} {lc} {} +\DeclareFontSeriesChangeRule {slc}{sl} {slc} {} +\DeclareFontSeriesChangeRule {slc}{sb} {sbc} {bc} +\DeclareFontSeriesChangeRule {slc}{b} {bc} {} +\DeclareFontSeriesChangeRule {slc}{eb} {ebc} {bc} +\DeclareFontSeriesChangeRule {slc}{ub} {ubc} {bc} +\DeclareFontSeriesChangeRule {slc}{uc} {sluc} {} +\DeclareFontSeriesChangeRule {slc}{ec} {slec} {} +\DeclareFontSeriesChangeRule {slc}{c} {slc} {} +\DeclareFontSeriesChangeRule {slc}{sc} {slsc} {} +\DeclareFontSeriesChangeRule {slc}{sx} {slsx} {} +\DeclareFontSeriesChangeRule {slc}{x} {slx} {} +\DeclareFontSeriesChangeRule {slc}{ex} {slex} {} +\DeclareFontSeriesChangeRule {slc}{ux} {slux} {} +\DeclareFontSeriesChangeRule {slsc}{ul} {ulsc} {} +\DeclareFontSeriesChangeRule {slsc}{el} {elsc} {} +\DeclareFontSeriesChangeRule {slsc}{l} {lsc} {} +\DeclareFontSeriesChangeRule {slsc}{sl} {slsc} {} +\DeclareFontSeriesChangeRule {slsc}{sb} {sbsc} {bsc} +\DeclareFontSeriesChangeRule {slsc}{b} {bsc} {} +\DeclareFontSeriesChangeRule {slsc}{eb} {ebsc} {bsc} +\DeclareFontSeriesChangeRule {slsc}{ub} {ubsc} {bsc} +\DeclareFontSeriesChangeRule {slsc}{uc} {sluc} {} +\DeclareFontSeriesChangeRule {slsc}{ec} {slec} {} +\DeclareFontSeriesChangeRule {slsc}{c} {slc} {} +\DeclareFontSeriesChangeRule {slsc}{sc} {slsc} {} +\DeclareFontSeriesChangeRule {slsc}{sx} {slsx} {} +\DeclareFontSeriesChangeRule {slsc}{x} {slx} {} +\DeclareFontSeriesChangeRule {slsc}{ex} {slex} {} +\DeclareFontSeriesChangeRule {slsc}{ux} {slux} {} +\DeclareFontSeriesChangeRule {sl}{uc} {sluc} {} +\DeclareFontSeriesChangeRule {sl}{ec} {slec} {} +\DeclareFontSeriesChangeRule {sl}{c} {slc} {} +\DeclareFontSeriesChangeRule {sl}{sc} {slsc} {} +\DeclareFontSeriesChangeRule {sl}{sx} {slsx} {} +\DeclareFontSeriesChangeRule {sl}{x} {slx} {} +\DeclareFontSeriesChangeRule {sl}{ex} {slex} {} +\DeclareFontSeriesChangeRule {sl}{ux} {slux} {} +\DeclareFontSeriesChangeRule {sl}{sb} {sb} {b} +\DeclareFontSeriesChangeRule {sl}{eb} {eb} {b} +\DeclareFontSeriesChangeRule {sl}{ub} {ub} {b} +\DeclareFontSeriesChangeRule {slsx}{ul} {ulsx} {} +\DeclareFontSeriesChangeRule {slsx}{el} {elsx} {} +\DeclareFontSeriesChangeRule {slsx}{l} {lsx} {} +\DeclareFontSeriesChangeRule {slsx}{sl} {slsx} {} +\DeclareFontSeriesChangeRule {slsx}{sb} {sbsx} {bsx} +\DeclareFontSeriesChangeRule {slsx}{b} {bsx} {} +\DeclareFontSeriesChangeRule {slsx}{eb} {ebsx} {bsx} +\DeclareFontSeriesChangeRule {slsx}{ub} {ubsx} {bsx} +\DeclareFontSeriesChangeRule {slsx}{uc} {sluc} {} +\DeclareFontSeriesChangeRule {slsx}{ec} {slec} {} +\DeclareFontSeriesChangeRule {slsx}{c} {slc} {} +\DeclareFontSeriesChangeRule {slsx}{sc} {slsc} {} +\DeclareFontSeriesChangeRule {slsx}{sx} {slsx} {} +\DeclareFontSeriesChangeRule {slsx}{x} {slx} {} +\DeclareFontSeriesChangeRule {slsx}{ex} {slex} {} +\DeclareFontSeriesChangeRule {slsx}{ux} {slux} {} +\DeclareFontSeriesChangeRule {slx}{ul} {ulx} {} +\DeclareFontSeriesChangeRule {slx}{el} {elx} {} +\DeclareFontSeriesChangeRule {slx}{l} {lx} {} +\DeclareFontSeriesChangeRule {slx}{sl} {slx} {} +\DeclareFontSeriesChangeRule {slx}{sb} {sbx} {bx} +\DeclareFontSeriesChangeRule {slx}{b} {bx} {} +\DeclareFontSeriesChangeRule {slx}{eb} {ebx} {bx} +\DeclareFontSeriesChangeRule {slx}{ub} {ubx} {bx} +\DeclareFontSeriesChangeRule {slx}{uc} {sluc} {} +\DeclareFontSeriesChangeRule {slx}{ec} {slec} {} +\DeclareFontSeriesChangeRule {slx}{c} {slc} {} +\DeclareFontSeriesChangeRule {slx}{sc} {slsc} {} +\DeclareFontSeriesChangeRule {slx}{sx} {slsx} {} +\DeclareFontSeriesChangeRule {slx}{x} {slx} {} +\DeclareFontSeriesChangeRule {slx}{ex} {slex} {} +\DeclareFontSeriesChangeRule {slx}{ux} {slux} {} +\DeclareFontSeriesChangeRule {slex}{ul} {ulex} {} +\DeclareFontSeriesChangeRule {slex}{el} {elex} {} +\DeclareFontSeriesChangeRule {slex}{l} {lex} {} +\DeclareFontSeriesChangeRule {slex}{sl} {slex} {} +\DeclareFontSeriesChangeRule {slex}{sb} {sbex} {bex} +\DeclareFontSeriesChangeRule {slex}{b} {bex} {} +\DeclareFontSeriesChangeRule {slex}{eb} {ebex} {bex} +\DeclareFontSeriesChangeRule {slex}{ub} {ubex} {bex} +\DeclareFontSeriesChangeRule {slex}{uc} {sluc} {} +\DeclareFontSeriesChangeRule {slex}{ec} {slec} {} +\DeclareFontSeriesChangeRule {slex}{c} {slc} {} +\DeclareFontSeriesChangeRule {slex}{sc} {slsc} {} +\DeclareFontSeriesChangeRule {slex}{sx} {slsx} {} +\DeclareFontSeriesChangeRule {slex}{x} {slx} {} +\DeclareFontSeriesChangeRule {slex}{ex} {slex} {} +\DeclareFontSeriesChangeRule {slex}{ux} {slux} {} +\DeclareFontSeriesChangeRule {slux}{ul} {ulux} {} +\DeclareFontSeriesChangeRule {slux}{el} {elux} {} +\DeclareFontSeriesChangeRule {slux}{l} {lux} {} +\DeclareFontSeriesChangeRule {slux}{sl} {slux} {} +\DeclareFontSeriesChangeRule {slux}{sb} {sbux} {bux} +\DeclareFontSeriesChangeRule {slux}{b} {bux} {} +\DeclareFontSeriesChangeRule {slux}{eb} {ebux} {bux} +\DeclareFontSeriesChangeRule {slux}{ub} {ubux} {bux} +\DeclareFontSeriesChangeRule {slux}{uc} {sluc} {} +\DeclareFontSeriesChangeRule {slux}{ec} {slec} {} +\DeclareFontSeriesChangeRule {slux}{c} {slc} {} +\DeclareFontSeriesChangeRule {slux}{sc} {slsc} {} +\DeclareFontSeriesChangeRule {slux}{sx} {slsx} {} +\DeclareFontSeriesChangeRule {slux}{x} {slx} {} +\DeclareFontSeriesChangeRule {slux}{ex} {slex} {} +\DeclareFontSeriesChangeRule {slux}{ux} {slux} {} +\DeclareFontSeriesChangeRule {uc}{ul} {uluc} {} +\DeclareFontSeriesChangeRule {uc}{el} {eluc} {} +\DeclareFontSeriesChangeRule {uc}{l} {luc} {} +\DeclareFontSeriesChangeRule {uc}{sl} {sluc} {} +\DeclareFontSeriesChangeRule {uc}{sb} {sbuc} {buc} +\DeclareFontSeriesChangeRule {uc}{b} {buc} {} +\DeclareFontSeriesChangeRule {uc}{eb} {ebuc} {buc} +\DeclareFontSeriesChangeRule {uc}{ub} {ubuc} {buc} +\DeclareFontSeriesChangeRule {ec}{ul} {ulec} {} +\DeclareFontSeriesChangeRule {ec}{el} {elec} {} +\DeclareFontSeriesChangeRule {ec}{l} {lec} {} +\DeclareFontSeriesChangeRule {ec}{sl} {slec} {} +\DeclareFontSeriesChangeRule {ec}{sb} {sbec} {bec} +\DeclareFontSeriesChangeRule {ec}{b} {bec} {} +\DeclareFontSeriesChangeRule {ec}{eb} {ebec} {bec} +\DeclareFontSeriesChangeRule {ec}{ub} {ubec} {bec} +\DeclareFontSeriesChangeRule {c}{ul} {ulc} {c} +\DeclareFontSeriesChangeRule {c}{el} {elc} {c} +\DeclareFontSeriesChangeRule {c}{l} {lc} {c} +\DeclareFontSeriesChangeRule {c}{sl} {slc} {c} +\DeclareFontSeriesChangeRule {c}{sb} {sbc} {bc} +\DeclareFontSeriesChangeRule {c}{b} {bc} {} +\DeclareFontSeriesChangeRule {c}{eb} {ebc} {bc} +\DeclareFontSeriesChangeRule {c}{ub} {ubc} {bc} +\DeclareFontSeriesChangeRule {c}{uc} {uc} {c} +\DeclareFontSeriesChangeRule {c}{ec} {ec} {c} +\DeclareFontSeriesChangeRule {c}{sc} {sc} {c} +\DeclareFontSeriesChangeRule {sc}{ul} {ulsc} {} +\DeclareFontSeriesChangeRule {sc}{el} {elsc} {} +\DeclareFontSeriesChangeRule {sc}{l} {lsc} {} +\DeclareFontSeriesChangeRule {sc}{sl} {slsc} {} +\DeclareFontSeriesChangeRule {sc}{sb} {sbsc} {bsc} +\DeclareFontSeriesChangeRule {sc}{b} {bsc} {} +\DeclareFontSeriesChangeRule {sc}{eb} {ebsc} {bsc} +\DeclareFontSeriesChangeRule {sc}{ub} {ubsc} {bsc} +\DeclareFontSeriesChangeRule {m}{sb} {sb} {b} +\DeclareFontSeriesChangeRule {m}{eb} {eb} {b} +\DeclareFontSeriesChangeRule {m}{ub} {ub} {b} +\DeclareFontSeriesChangeRule {m}{b} {b} {bx} +\DeclareFontSeriesChangeRule {sx}{ul} {ulsx} {} +\DeclareFontSeriesChangeRule {sx}{el} {elsx} {} +\DeclareFontSeriesChangeRule {sx}{l} {lsx} {} +\DeclareFontSeriesChangeRule {sx}{sl} {slsx} {} +\DeclareFontSeriesChangeRule {sx}{sb} {sbsx} {bsx} +\DeclareFontSeriesChangeRule {sx}{b} {bsx} {} +\DeclareFontSeriesChangeRule {sx}{eb} {ebsx} {bsx} +\DeclareFontSeriesChangeRule {sx}{ub} {ubsx} {bsx} +\DeclareFontSeriesChangeRule {x}{ul} {ulx} {} +\DeclareFontSeriesChangeRule {x}{el} {elx} {} +\DeclareFontSeriesChangeRule {x}{l} {lx} {} +\DeclareFontSeriesChangeRule {x}{sl} {slx} {} +\DeclareFontSeriesChangeRule {x}{sb} {sbx} {bx} +\DeclareFontSeriesChangeRule {x}{b} {bx} {} +\DeclareFontSeriesChangeRule {x}{eb} {ebx} {bx} +\DeclareFontSeriesChangeRule {x}{ub} {ubx} {bx} +\DeclareFontSeriesChangeRule {ex}{ul} {ulex} {} +\DeclareFontSeriesChangeRule {ex}{el} {elex} {} +\DeclareFontSeriesChangeRule {ex}{l} {lex} {} +\DeclareFontSeriesChangeRule {ex}{sl} {slex} {} +\DeclareFontSeriesChangeRule {ex}{sb} {sbex} {bex} +\DeclareFontSeriesChangeRule {ex}{b} {bex} {} +\DeclareFontSeriesChangeRule {ex}{eb} {ebex} {bex} +\DeclareFontSeriesChangeRule {ex}{ub} {ubex} {bex} +\DeclareFontSeriesChangeRule {ux}{ul} {ulux} {} +\DeclareFontSeriesChangeRule {ux}{el} {elux} {} +\DeclareFontSeriesChangeRule {ux}{l} {lux} {} +\DeclareFontSeriesChangeRule {ux}{sl} {slux} {} +\DeclareFontSeriesChangeRule {ux}{sb} {sbux} {bux} +\DeclareFontSeriesChangeRule {ux}{b} {bux} {} +\DeclareFontSeriesChangeRule {ux}{eb} {ebux} {bux} +\DeclareFontSeriesChangeRule {ux}{ub} {ubux} {bux} +\DeclareFontSeriesChangeRule {sbuc}{ul} {uluc} {} +\DeclareFontSeriesChangeRule {sbuc}{el} {eluc} {} +\DeclareFontSeriesChangeRule {sbuc}{l} {luc} {} +\DeclareFontSeriesChangeRule {sbuc}{sl} {sluc} {} +\DeclareFontSeriesChangeRule {sbuc}{sb} {sbuc} {} +\DeclareFontSeriesChangeRule {sbuc}{b} {buc} {} +\DeclareFontSeriesChangeRule {sbuc}{eb} {ebuc} {buc} +\DeclareFontSeriesChangeRule {sbuc}{ub} {ubuc} {buc} +\DeclareFontSeriesChangeRule {sbuc}{uc} {sbuc} {} +\DeclareFontSeriesChangeRule {sbuc}{ec} {sbec} {} +\DeclareFontSeriesChangeRule {sbuc}{c} {sbc} {} +\DeclareFontSeriesChangeRule {sbuc}{sc} {sbsc} {} +\DeclareFontSeriesChangeRule {sbuc}{sx} {sbsx} {} +\DeclareFontSeriesChangeRule {sbuc}{x} {sbx} {} +\DeclareFontSeriesChangeRule {sbuc}{ex} {sbex} {} +\DeclareFontSeriesChangeRule {sbuc}{ux} {sbux} {} +\DeclareFontSeriesChangeRule {sbec}{ul} {ulec} {} +\DeclareFontSeriesChangeRule {sbec}{el} {elec} {} +\DeclareFontSeriesChangeRule {sbec}{l} {lec} {} +\DeclareFontSeriesChangeRule {sbec}{sl} {slec} {} +\DeclareFontSeriesChangeRule {sbec}{sb} {sbec} {} +\DeclareFontSeriesChangeRule {sbec}{b} {bec} {} +\DeclareFontSeriesChangeRule {sbec}{eb} {ebec} {bec} +\DeclareFontSeriesChangeRule {sbec}{ub} {ubec} {bec} +\DeclareFontSeriesChangeRule {sbec}{uc} {sbuc} {} +\DeclareFontSeriesChangeRule {sbec}{ec} {sbec} {} +\DeclareFontSeriesChangeRule {sbec}{c} {sbc} {} +\DeclareFontSeriesChangeRule {sbec}{sc} {sbsc} {} +\DeclareFontSeriesChangeRule {sbec}{sx} {sbsx} {} +\DeclareFontSeriesChangeRule {sbec}{x} {sbx} {} +\DeclareFontSeriesChangeRule {sbec}{ex} {sbex} {} +\DeclareFontSeriesChangeRule {sbec}{ux} {sbux} {} +\DeclareFontSeriesChangeRule {sbc}{ul} {ulc} {} +\DeclareFontSeriesChangeRule {sbc}{el} {elc} {} +\DeclareFontSeriesChangeRule {sbc}{l} {lc} {} +\DeclareFontSeriesChangeRule {sbc}{sl} {slc} {} +\DeclareFontSeriesChangeRule {sbc}{sb} {sbc} {} +\DeclareFontSeriesChangeRule {sbc}{b} {bc} {} +\DeclareFontSeriesChangeRule {sbc}{eb} {ebc} {bc} +\DeclareFontSeriesChangeRule {sbc}{ub} {ubc} {bc} +\DeclareFontSeriesChangeRule {sbc}{uc} {sbuc} {} +\DeclareFontSeriesChangeRule {sbc}{ec} {sbec} {} +\DeclareFontSeriesChangeRule {sbc}{c} {sbc} {} +\DeclareFontSeriesChangeRule {sbc}{sc} {sbsc} {} +\DeclareFontSeriesChangeRule {sbc}{sx} {sbsx} {} +\DeclareFontSeriesChangeRule {sbc}{x} {sbx} {} +\DeclareFontSeriesChangeRule {sbc}{ex} {sbex} {} +\DeclareFontSeriesChangeRule {sbc}{ux} {sbux} {} +\DeclareFontSeriesChangeRule {sbsc}{ul} {ulsc} {} +\DeclareFontSeriesChangeRule {sbsc}{el} {elsc} {} +\DeclareFontSeriesChangeRule {sbsc}{l} {lsc} {} +\DeclareFontSeriesChangeRule {sbsc}{sl} {slsc} {} +\DeclareFontSeriesChangeRule {sbsc}{sb} {sbsc} {} +\DeclareFontSeriesChangeRule {sbsc}{b} {bsc} {} +\DeclareFontSeriesChangeRule {sbsc}{eb} {ebsc} {bsc} +\DeclareFontSeriesChangeRule {sbsc}{ub} {ubsc} {bsc} +\DeclareFontSeriesChangeRule {sbsc}{uc} {sbuc} {} +\DeclareFontSeriesChangeRule {sbsc}{ec} {sbec} {} +\DeclareFontSeriesChangeRule {sbsc}{c} {sbc} {} +\DeclareFontSeriesChangeRule {sbsc}{sc} {sbsc} {} +\DeclareFontSeriesChangeRule {sbsc}{sx} {sbsx} {} +\DeclareFontSeriesChangeRule {sbsc}{x} {sbx} {} +\DeclareFontSeriesChangeRule {sbsc}{ex} {sbex} {} +\DeclareFontSeriesChangeRule {sbsc}{ux} {sbux} {} +\DeclareFontSeriesChangeRule {sb}{uc} {sbuc} {} +\DeclareFontSeriesChangeRule {sb}{ec} {sbec} {} +\DeclareFontSeriesChangeRule {sb}{c} {sbc} {} +\DeclareFontSeriesChangeRule {sb}{sc} {sbsc} {} +\DeclareFontSeriesChangeRule {sb}{sx} {sbsx} {} +\DeclareFontSeriesChangeRule {sb}{x} {sbx} {} +\DeclareFontSeriesChangeRule {sb}{ex} {sbex} {} +\DeclareFontSeriesChangeRule {sb}{ux} {sbux} {} +\DeclareFontSeriesChangeRule {sb}{eb} {eb} {b} +\DeclareFontSeriesChangeRule {sb}{ub} {ub} {b} +\DeclareFontSeriesChangeRule {sbsx}{ul} {ulsx} {} +\DeclareFontSeriesChangeRule {sbsx}{el} {elsx} {} +\DeclareFontSeriesChangeRule {sbsx}{l} {lsx} {} +\DeclareFontSeriesChangeRule {sbsx}{sl} {slsx} {} +\DeclareFontSeriesChangeRule {sbsx}{sb} {sbsx} {} +\DeclareFontSeriesChangeRule {sbsx}{b} {bsx} {} +\DeclareFontSeriesChangeRule {sbsx}{eb} {ebsx} {bsx} +\DeclareFontSeriesChangeRule {sbsx}{ub} {ubsx} {bsx} +\DeclareFontSeriesChangeRule {sbsx}{uc} {sbuc} {} +\DeclareFontSeriesChangeRule {sbsx}{ec} {sbec} {} +\DeclareFontSeriesChangeRule {sbsx}{c} {sbc} {} +\DeclareFontSeriesChangeRule {sbsx}{sc} {sbsc} {} +\DeclareFontSeriesChangeRule {sbsx}{sx} {sbsx} {} +\DeclareFontSeriesChangeRule {sbsx}{x} {sbx} {} +\DeclareFontSeriesChangeRule {sbsx}{ex} {sbex} {} +\DeclareFontSeriesChangeRule {sbsx}{ux} {sbux} {} +\DeclareFontSeriesChangeRule {sbx}{ul} {ulx} {} +\DeclareFontSeriesChangeRule {sbx}{el} {elx} {} +\DeclareFontSeriesChangeRule {sbx}{l} {lx} {} +\DeclareFontSeriesChangeRule {sbx}{sl} {slx} {} +\DeclareFontSeriesChangeRule {sbx}{sb} {sbx} {} +\DeclareFontSeriesChangeRule {sbx}{b} {bx} {} +\DeclareFontSeriesChangeRule {sbx}{eb} {ebx} {bx} +\DeclareFontSeriesChangeRule {sbx}{ub} {ubx} {bx} +\DeclareFontSeriesChangeRule {sbx}{uc} {sbuc} {} +\DeclareFontSeriesChangeRule {sbx}{ec} {sbec} {} +\DeclareFontSeriesChangeRule {sbx}{c} {sbc} {} +\DeclareFontSeriesChangeRule {sbx}{sc} {sbsc} {} +\DeclareFontSeriesChangeRule {sbx}{sx} {sbsx} {} +\DeclareFontSeriesChangeRule {sbx}{x} {sbx} {} +\DeclareFontSeriesChangeRule {sbx}{ex} {sbex} {} +\DeclareFontSeriesChangeRule {sbx}{ux} {sbux} {} +\DeclareFontSeriesChangeRule {sbex}{ul} {ulex} {} +\DeclareFontSeriesChangeRule {sbex}{el} {elex} {} +\DeclareFontSeriesChangeRule {sbex}{l} {lex} {} +\DeclareFontSeriesChangeRule {sbex}{sl} {slex} {} +\DeclareFontSeriesChangeRule {sbex}{sb} {sbex} {} +\DeclareFontSeriesChangeRule {sbex}{b} {bex} {} +\DeclareFontSeriesChangeRule {sbex}{eb} {ebex} {bex} +\DeclareFontSeriesChangeRule {sbex}{ub} {ubex} {bex} +\DeclareFontSeriesChangeRule {sbex}{uc} {sbuc} {} +\DeclareFontSeriesChangeRule {sbex}{ec} {sbec} {} +\DeclareFontSeriesChangeRule {sbex}{c} {sbc} {} +\DeclareFontSeriesChangeRule {sbex}{sc} {sbsc} {} +\DeclareFontSeriesChangeRule {sbex}{sx} {sbsx} {} +\DeclareFontSeriesChangeRule {sbex}{x} {sbx} {} +\DeclareFontSeriesChangeRule {sbex}{ex} {sbex} {} +\DeclareFontSeriesChangeRule {sbex}{ux} {sbux} {} +\DeclareFontSeriesChangeRule {sbux}{ul} {ulux} {} +\DeclareFontSeriesChangeRule {sbux}{el} {elux} {} +\DeclareFontSeriesChangeRule {sbux}{l} {lux} {} +\DeclareFontSeriesChangeRule {sbux}{sl} {slux} {} +\DeclareFontSeriesChangeRule {sbux}{sb} {sbux} {} +\DeclareFontSeriesChangeRule {sbux}{b} {bux} {} +\DeclareFontSeriesChangeRule {sbux}{eb} {ebux} {bux} +\DeclareFontSeriesChangeRule {sbux}{ub} {ubux} {bux} +\DeclareFontSeriesChangeRule {sbux}{uc} {sbuc} {} +\DeclareFontSeriesChangeRule {sbux}{ec} {sbec} {} +\DeclareFontSeriesChangeRule {sbux}{c} {sbc} {} +\DeclareFontSeriesChangeRule {sbux}{sc} {sbsc} {} +\DeclareFontSeriesChangeRule {sbux}{sx} {sbsx} {} +\DeclareFontSeriesChangeRule {sbux}{x} {sbx} {} +\DeclareFontSeriesChangeRule {sbux}{ex} {sbex} {} +\DeclareFontSeriesChangeRule {sbux}{ux} {sbux} {} +\DeclareFontSeriesChangeRule {buc}{ul} {uluc} {} +\DeclareFontSeriesChangeRule {buc}{el} {eluc} {} +\DeclareFontSeriesChangeRule {buc}{l} {luc} {} +\DeclareFontSeriesChangeRule {buc}{sl} {sluc} {} +\DeclareFontSeriesChangeRule {buc}{sb} {sbuc} {buc} +\DeclareFontSeriesChangeRule {buc}{b} {buc} {} +\DeclareFontSeriesChangeRule {buc}{eb} {ebuc} {buc} +\DeclareFontSeriesChangeRule {buc}{ub} {ubuc} {buc} +\DeclareFontSeriesChangeRule {buc}{uc} {buc} {} +\DeclareFontSeriesChangeRule {buc}{ec} {bec} {} +\DeclareFontSeriesChangeRule {buc}{c} {bc} {} +\DeclareFontSeriesChangeRule {buc}{sc} {bsc} {} +\DeclareFontSeriesChangeRule {buc}{sx} {bsx} {} +\DeclareFontSeriesChangeRule {buc}{x} {bx} {} +\DeclareFontSeriesChangeRule {buc}{ex} {bex} {} +\DeclareFontSeriesChangeRule {buc}{ux} {bux} {} +\DeclareFontSeriesChangeRule {bec}{ul} {ulec} {} +\DeclareFontSeriesChangeRule {bec}{el} {elec} {} +\DeclareFontSeriesChangeRule {bec}{l} {lec} {} +\DeclareFontSeriesChangeRule {bec}{sl} {slec} {} +\DeclareFontSeriesChangeRule {bec}{sb} {sbec} {bec} +\DeclareFontSeriesChangeRule {bec}{b} {bec} {} +\DeclareFontSeriesChangeRule {bec}{eb} {ebec} {bec} +\DeclareFontSeriesChangeRule {bec}{ub} {ubec} {bec} +\DeclareFontSeriesChangeRule {bec}{uc} {buc} {} +\DeclareFontSeriesChangeRule {bec}{ec} {bec} {} +\DeclareFontSeriesChangeRule {bec}{c} {bc} {} +\DeclareFontSeriesChangeRule {bec}{sc} {bsc} {} +\DeclareFontSeriesChangeRule {bec}{sx} {bsx} {} +\DeclareFontSeriesChangeRule {bec}{x} {bx} {} +\DeclareFontSeriesChangeRule {bec}{ex} {bex} {} +\DeclareFontSeriesChangeRule {bec}{ux} {bux} {} +\DeclareFontSeriesChangeRule {bc}{ul} {ulc} {} +\DeclareFontSeriesChangeRule {bc}{el} {elc} {} +\DeclareFontSeriesChangeRule {bc}{l} {lc} {} +\DeclareFontSeriesChangeRule {bc}{sl} {slc} {} +\DeclareFontSeriesChangeRule {bc}{sb} {sbc} {bc} +\DeclareFontSeriesChangeRule {bc}{b} {bc} {} +\DeclareFontSeriesChangeRule {bc}{eb} {ebc} {bc} +\DeclareFontSeriesChangeRule {bc}{ub} {ubc} {bc} +\DeclareFontSeriesChangeRule {bc}{uc} {buc} {} +\DeclareFontSeriesChangeRule {bc}{ec} {bec} {} +\DeclareFontSeriesChangeRule {bc}{c} {bc} {} +\DeclareFontSeriesChangeRule {bc}{sc} {bsc} {} +\DeclareFontSeriesChangeRule {bc}{sx} {bsx} {} +\DeclareFontSeriesChangeRule {bc}{x} {bx} {} +\DeclareFontSeriesChangeRule {bc}{ex} {bex} {} +\DeclareFontSeriesChangeRule {bc}{ux} {bux} {} +\DeclareFontSeriesChangeRule {bsc}{ul} {ulsc} {} +\DeclareFontSeriesChangeRule {bsc}{el} {elsc} {} +\DeclareFontSeriesChangeRule {bsc}{l} {lsc} {} +\DeclareFontSeriesChangeRule {bsc}{sl} {slsc} {} +\DeclareFontSeriesChangeRule {bsc}{sb} {sbsc} {bsc} +\DeclareFontSeriesChangeRule {bsc}{b} {bsc} {} +\DeclareFontSeriesChangeRule {bsc}{eb} {ebsc} {bsc} +\DeclareFontSeriesChangeRule {bsc}{ub} {ubsc} {bsc} +\DeclareFontSeriesChangeRule {bsc}{uc} {buc} {} +\DeclareFontSeriesChangeRule {bsc}{ec} {bec} {} +\DeclareFontSeriesChangeRule {bsc}{c} {bc} {} +\DeclareFontSeriesChangeRule {bsc}{sc} {bsc} {} +\DeclareFontSeriesChangeRule {bsc}{sx} {bsx} {} +\DeclareFontSeriesChangeRule {bsc}{x} {bx} {} +\DeclareFontSeriesChangeRule {bsc}{ex} {bex} {} +\DeclareFontSeriesChangeRule {bsc}{ux} {bux} {} +\DeclareFontSeriesChangeRule {b}{uc} {buc} {b} +\DeclareFontSeriesChangeRule {b}{ec} {bec} {b} +\DeclareFontSeriesChangeRule {b}{c} {bc} {b} +\DeclareFontSeriesChangeRule {b}{sc} {bsc} {b} +\DeclareFontSeriesChangeRule {b}{sx} {bsx} {b} +\DeclareFontSeriesChangeRule {b}{x} {bx} {b} +\DeclareFontSeriesChangeRule {b}{ex} {bex} {b} +\DeclareFontSeriesChangeRule {b}{ux} {bux} {b} +\DeclareFontSeriesChangeRule {b}{sb} {sb} {b} +\DeclareFontSeriesChangeRule {b}{eb} {eb} {b} +\DeclareFontSeriesChangeRule {b}{ub} {ub} {b} +\DeclareFontSeriesChangeRule {bsx}{ul} {ulsx} {} +\DeclareFontSeriesChangeRule {bsx}{el} {elsx} {} +\DeclareFontSeriesChangeRule {bsx}{l} {lsx} {} +\DeclareFontSeriesChangeRule {bsx}{sl} {slsx} {} +\DeclareFontSeriesChangeRule {bsx}{sb} {sbsx} {bsx} +\DeclareFontSeriesChangeRule {bsx}{b} {bsx} {} +\DeclareFontSeriesChangeRule {bsx}{eb} {ebsx} {bsx} +\DeclareFontSeriesChangeRule {bsx}{ub} {ubsx} {bsx} +\DeclareFontSeriesChangeRule {bsx}{uc} {buc} {} +\DeclareFontSeriesChangeRule {bsx}{ec} {bec} {} +\DeclareFontSeriesChangeRule {bsx}{c} {bc} {} +\DeclareFontSeriesChangeRule {bsx}{sc} {bsc} {} +\DeclareFontSeriesChangeRule {bsx}{sx} {bsx} {} +\DeclareFontSeriesChangeRule {bsx}{x} {bx} {} +\DeclareFontSeriesChangeRule {bsx}{ex} {bex} {} +\DeclareFontSeriesChangeRule {bsx}{ux} {bux} {} +\DeclareFontSeriesChangeRule {bx}{ul} {ulx} {} +\DeclareFontSeriesChangeRule {bx}{el} {elx} {} +\DeclareFontSeriesChangeRule {bx}{l} {lx} {} +\DeclareFontSeriesChangeRule {bx}{sl} {slx} {} +\DeclareFontSeriesChangeRule {bx}{sb} {sbx} {bx} +\DeclareFontSeriesChangeRule {bx}{b} {bx} {} +\DeclareFontSeriesChangeRule {bx}{eb} {ebx} {bx} +\DeclareFontSeriesChangeRule {bx}{ub} {ubx} {bx} +\DeclareFontSeriesChangeRule {bx}{uc} {buc} {} +\DeclareFontSeriesChangeRule {bx}{ec} {bec} {} +\DeclareFontSeriesChangeRule {bx}{c} {bc} {} +\DeclareFontSeriesChangeRule {bx}{sc} {bsc} {} +\DeclareFontSeriesChangeRule {bx}{sx} {bsx} {} +\DeclareFontSeriesChangeRule {bx}{x} {bx} {} +\DeclareFontSeriesChangeRule {bx}{ex} {bex} {} +\DeclareFontSeriesChangeRule {bx}{ux} {bux} {} +\DeclareFontSeriesChangeRule {bex}{ul} {ulex} {} +\DeclareFontSeriesChangeRule {bex}{el} {elex} {} +\DeclareFontSeriesChangeRule {bex}{l} {lex} {} +\DeclareFontSeriesChangeRule {bex}{sl} {slex} {} +\DeclareFontSeriesChangeRule {bex}{sb} {sbex} {bex} +\DeclareFontSeriesChangeRule {bex}{b} {bex} {} +\DeclareFontSeriesChangeRule {bex}{eb} {ebex} {bex} +\DeclareFontSeriesChangeRule {bex}{ub} {ubex} {bex} +\DeclareFontSeriesChangeRule {bex}{uc} {buc} {} +\DeclareFontSeriesChangeRule {bex}{ec} {bec} {} +\DeclareFontSeriesChangeRule {bex}{c} {bc} {} +\DeclareFontSeriesChangeRule {bex}{sc} {bsc} {} +\DeclareFontSeriesChangeRule {bex}{sx} {bsx} {} +\DeclareFontSeriesChangeRule {bex}{x} {bx} {} +\DeclareFontSeriesChangeRule {bex}{ex} {bex} {} +\DeclareFontSeriesChangeRule {bex}{ux} {bux} {} +\DeclareFontSeriesChangeRule {bux}{ul} {ulux} {} +\DeclareFontSeriesChangeRule {bux}{el} {elux} {} +\DeclareFontSeriesChangeRule {bux}{l} {lux} {} +\DeclareFontSeriesChangeRule {bux}{sl} {slux} {} +\DeclareFontSeriesChangeRule {bux}{sb} {sbux} {bux} +\DeclareFontSeriesChangeRule {bux}{b} {bux} {} +\DeclareFontSeriesChangeRule {bux}{eb} {ebux} {bux} +\DeclareFontSeriesChangeRule {bux}{ub} {ubux} {bux} +\DeclareFontSeriesChangeRule {bux}{uc} {buc} {} +\DeclareFontSeriesChangeRule {bux}{ec} {bec} {} +\DeclareFontSeriesChangeRule {bux}{c} {bc} {} +\DeclareFontSeriesChangeRule {bux}{sc} {bsc} {} +\DeclareFontSeriesChangeRule {bux}{sx} {bsx} {} +\DeclareFontSeriesChangeRule {bux}{x} {bx} {} +\DeclareFontSeriesChangeRule {bux}{ex} {bex} {} +\DeclareFontSeriesChangeRule {bux}{ux} {bux} {} +\DeclareFontSeriesChangeRule {ebuc}{ul} {uluc} {} +\DeclareFontSeriesChangeRule {ebuc}{el} {eluc} {} +\DeclareFontSeriesChangeRule {ebuc}{l} {luc} {} +\DeclareFontSeriesChangeRule {ebuc}{sl} {sluc} {} +\DeclareFontSeriesChangeRule {ebuc}{sb} {sbuc} {buc} +\DeclareFontSeriesChangeRule {ebuc}{b} {buc} {} +\DeclareFontSeriesChangeRule {ebuc}{eb} {ebuc} {} +\DeclareFontSeriesChangeRule {ebuc}{ub} {ubuc} {ebuc} +\DeclareFontSeriesChangeRule {ebuc}{uc} {ebuc} {} +\DeclareFontSeriesChangeRule {ebuc}{ec} {ebec} {} +\DeclareFontSeriesChangeRule {ebuc}{c} {ebc} {} +\DeclareFontSeriesChangeRule {ebuc}{sc} {ebsc} {} +\DeclareFontSeriesChangeRule {ebuc}{sx} {ebsx} {} +\DeclareFontSeriesChangeRule {ebuc}{x} {ebx} {} +\DeclareFontSeriesChangeRule {ebuc}{ex} {ebex} {} +\DeclareFontSeriesChangeRule {ebuc}{ux} {ebux} {} +\DeclareFontSeriesChangeRule {ebec}{ul} {ulec} {} +\DeclareFontSeriesChangeRule {ebec}{el} {elec} {} +\DeclareFontSeriesChangeRule {ebec}{l} {lec} {} +\DeclareFontSeriesChangeRule {ebec}{sl} {slec} {} +\DeclareFontSeriesChangeRule {ebec}{sb} {sbec} {bec} +\DeclareFontSeriesChangeRule {ebec}{b} {bec} {} +\DeclareFontSeriesChangeRule {ebec}{eb} {ebec} {} +\DeclareFontSeriesChangeRule {ebec}{ub} {ubec} {ebec} +\DeclareFontSeriesChangeRule {ebec}{uc} {ebuc} {} +\DeclareFontSeriesChangeRule {ebec}{ec} {ebec} {} +\DeclareFontSeriesChangeRule {ebec}{c} {ebc} {} +\DeclareFontSeriesChangeRule {ebec}{sc} {ebsc} {} +\DeclareFontSeriesChangeRule {ebec}{sx} {ebsx} {} +\DeclareFontSeriesChangeRule {ebec}{x} {ebx} {} +\DeclareFontSeriesChangeRule {ebec}{ex} {ebex} {} +\DeclareFontSeriesChangeRule {ebec}{ux} {ebux} {} +\DeclareFontSeriesChangeRule {ebc}{ul} {ulc} {} +\DeclareFontSeriesChangeRule {ebc}{el} {elc} {} +\DeclareFontSeriesChangeRule {ebc}{l} {lc} {} +\DeclareFontSeriesChangeRule {ebc}{sl} {slc} {} +\DeclareFontSeriesChangeRule {ebc}{sb} {sbc} {bc} +\DeclareFontSeriesChangeRule {ebc}{b} {bc} {} +\DeclareFontSeriesChangeRule {ebc}{eb} {ebc} {} +\DeclareFontSeriesChangeRule {ebc}{ub} {ubc} {ebc} +\DeclareFontSeriesChangeRule {ebc}{uc} {ebuc} {} +\DeclareFontSeriesChangeRule {ebc}{ec} {ebec} {} +\DeclareFontSeriesChangeRule {ebc}{c} {ebc} {} +\DeclareFontSeriesChangeRule {ebc}{sc} {ebsc} {} +\DeclareFontSeriesChangeRule {ebc}{sx} {ebsx} {} +\DeclareFontSeriesChangeRule {ebc}{x} {ebx} {} +\DeclareFontSeriesChangeRule {ebc}{ex} {ebex} {} +\DeclareFontSeriesChangeRule {ebc}{ux} {ebux} {} +\DeclareFontSeriesChangeRule {ebsc}{ul} {ulsc} {} +\DeclareFontSeriesChangeRule {ebsc}{el} {elsc} {} +\DeclareFontSeriesChangeRule {ebsc}{l} {lsc} {} +\DeclareFontSeriesChangeRule {ebsc}{sl} {slsc} {} +\DeclareFontSeriesChangeRule {ebsc}{sb} {sbsc} {bsc} +\DeclareFontSeriesChangeRule {ebsc}{b} {bsc} {} +\DeclareFontSeriesChangeRule {ebsc}{eb} {ebsc} {} +\DeclareFontSeriesChangeRule {ebsc}{ub} {ubsc} {ebsc} +\DeclareFontSeriesChangeRule {ebsc}{uc} {ebuc} {} +\DeclareFontSeriesChangeRule {ebsc}{ec} {ebec} {} +\DeclareFontSeriesChangeRule {ebsc}{c} {ebc} {} +\DeclareFontSeriesChangeRule {ebsc}{sc} {ebsc} {} +\DeclareFontSeriesChangeRule {ebsc}{sx} {ebsx} {} +\DeclareFontSeriesChangeRule {ebsc}{x} {ebx} {} +\DeclareFontSeriesChangeRule {ebsc}{ex} {ebex} {} +\DeclareFontSeriesChangeRule {ebsc}{ux} {ebux} {} +\DeclareFontSeriesChangeRule {eb}{uc} {ebuc} {} +\DeclareFontSeriesChangeRule {eb}{ec} {ebec} {} +\DeclareFontSeriesChangeRule {eb}{c} {ebc} {} +\DeclareFontSeriesChangeRule {eb}{sc} {ebsc} {} +\DeclareFontSeriesChangeRule {eb}{sx} {ebsx} {} +\DeclareFontSeriesChangeRule {eb}{x} {ebx} {} +\DeclareFontSeriesChangeRule {eb}{ex} {ebex} {} +\DeclareFontSeriesChangeRule {eb}{ux} {ebux} {} +\DeclareFontSeriesChangeRule {eb}{sb} {sb} {b} +\DeclareFontSeriesChangeRule {eb}{ub} {ub} {eb} +\DeclareFontSeriesChangeRule {ebsx}{ul} {ulsx} {} +\DeclareFontSeriesChangeRule {ebsx}{el} {elsx} {} +\DeclareFontSeriesChangeRule {ebsx}{l} {lsx} {} +\DeclareFontSeriesChangeRule {ebsx}{sl} {slsx} {} +\DeclareFontSeriesChangeRule {ebsx}{sb} {sbsx} {bsx} +\DeclareFontSeriesChangeRule {ebsx}{b} {bsx} {} +\DeclareFontSeriesChangeRule {ebsx}{eb} {ebsx} {} +\DeclareFontSeriesChangeRule {ebsx}{ub} {ubsx} {ebsx} +\DeclareFontSeriesChangeRule {ebsx}{uc} {ebuc} {} +\DeclareFontSeriesChangeRule {ebsx}{ec} {ebec} {} +\DeclareFontSeriesChangeRule {ebsx}{c} {ebc} {} +\DeclareFontSeriesChangeRule {ebsx}{sc} {ebsc} {} +\DeclareFontSeriesChangeRule {ebsx}{sx} {ebsx} {} +\DeclareFontSeriesChangeRule {ebsx}{x} {ebx} {} +\DeclareFontSeriesChangeRule {ebsx}{ex} {ebex} {} +\DeclareFontSeriesChangeRule {ebsx}{ux} {ebux} {} +\DeclareFontSeriesChangeRule {ebx}{ul} {ulx} {} +\DeclareFontSeriesChangeRule {ebx}{el} {elx} {} +\DeclareFontSeriesChangeRule {ebx}{l} {lx} {} +\DeclareFontSeriesChangeRule {ebx}{sl} {slx} {} +\DeclareFontSeriesChangeRule {ebx}{sb} {sbx} {bx} +\DeclareFontSeriesChangeRule {ebx}{b} {bx} {} +\DeclareFontSeriesChangeRule {ebx}{eb} {ebx} {} +\DeclareFontSeriesChangeRule {ebx}{ub} {ubx} {ebx} +\DeclareFontSeriesChangeRule {ebx}{uc} {ebuc} {} +\DeclareFontSeriesChangeRule {ebx}{ec} {ebec} {} +\DeclareFontSeriesChangeRule {ebx}{c} {ebc} {} +\DeclareFontSeriesChangeRule {ebx}{sc} {ebsc} {} +\DeclareFontSeriesChangeRule {ebx}{sx} {ebsx} {} +\DeclareFontSeriesChangeRule {ebx}{x} {ebx} {} +\DeclareFontSeriesChangeRule {ebx}{ex} {ebex} {} +\DeclareFontSeriesChangeRule {ebx}{ux} {ebux} {} +\DeclareFontSeriesChangeRule {ebex}{ul} {ulex} {} +\DeclareFontSeriesChangeRule {ebex}{el} {elex} {} +\DeclareFontSeriesChangeRule {ebex}{l} {lex} {} +\DeclareFontSeriesChangeRule {ebex}{sl} {slex} {} +\DeclareFontSeriesChangeRule {ebex}{sb} {sbex} {bex} +\DeclareFontSeriesChangeRule {ebex}{b} {bex} {} +\DeclareFontSeriesChangeRule {ebex}{eb} {ebex} {} +\DeclareFontSeriesChangeRule {ebex}{ub} {ubex} {ebex} +\DeclareFontSeriesChangeRule {ebex}{uc} {ebuc} {} +\DeclareFontSeriesChangeRule {ebex}{ec} {ebec} {} +\DeclareFontSeriesChangeRule {ebex}{c} {ebc} {} +\DeclareFontSeriesChangeRule {ebex}{sc} {ebsc} {} +\DeclareFontSeriesChangeRule {ebex}{sx} {ebsx} {} +\DeclareFontSeriesChangeRule {ebex}{x} {ebx} {} +\DeclareFontSeriesChangeRule {ebex}{ex} {ebex} {} +\DeclareFontSeriesChangeRule {ebex}{ux} {ebux} {} +\DeclareFontSeriesChangeRule {ebux}{ul} {ulux} {} +\DeclareFontSeriesChangeRule {ebux}{el} {elux} {} +\DeclareFontSeriesChangeRule {ebux}{l} {lux} {} +\DeclareFontSeriesChangeRule {ebux}{sl} {slux} {} +\DeclareFontSeriesChangeRule {ebux}{sb} {sbux} {bux} +\DeclareFontSeriesChangeRule {ebux}{b} {bux} {} +\DeclareFontSeriesChangeRule {ebux}{eb} {ebux} {} +\DeclareFontSeriesChangeRule {ebux}{ub} {ubux} {ebux} +\DeclareFontSeriesChangeRule {ebux}{uc} {ebuc} {} +\DeclareFontSeriesChangeRule {ebux}{ec} {ebec} {} +\DeclareFontSeriesChangeRule {ebux}{c} {ebc} {} +\DeclareFontSeriesChangeRule {ebux}{sc} {ebsc} {} +\DeclareFontSeriesChangeRule {ebux}{sx} {ebsx} {} +\DeclareFontSeriesChangeRule {ebux}{x} {ebx} {} +\DeclareFontSeriesChangeRule {ebux}{ex} {ebex} {} +\DeclareFontSeriesChangeRule {ebux}{ux} {ebux} {} +\DeclareFontSeriesChangeRule {ubuc}{ul} {uluc} {} +\DeclareFontSeriesChangeRule {ubuc}{el} {eluc} {} +\DeclareFontSeriesChangeRule {ubuc}{l} {luc} {} +\DeclareFontSeriesChangeRule {ubuc}{sl} {sluc} {} +\DeclareFontSeriesChangeRule {ubuc}{sb} {sbuc} {buc} +\DeclareFontSeriesChangeRule {ubuc}{b} {buc} {} +\DeclareFontSeriesChangeRule {ubuc}{eb} {ebuc} {ubuc} +\DeclareFontSeriesChangeRule {ubuc}{ub} {ubuc} {} +\DeclareFontSeriesChangeRule {ubuc}{uc} {ubuc} {} +\DeclareFontSeriesChangeRule {ubuc}{ec} {ubec} {} +\DeclareFontSeriesChangeRule {ubuc}{c} {ubc} {} +\DeclareFontSeriesChangeRule {ubuc}{sc} {ubsc} {} +\DeclareFontSeriesChangeRule {ubuc}{sx} {ubsx} {} +\DeclareFontSeriesChangeRule {ubuc}{x} {ubx} {} +\DeclareFontSeriesChangeRule {ubuc}{ex} {ubex} {} +\DeclareFontSeriesChangeRule {ubuc}{ux} {ubux} {} +\DeclareFontSeriesChangeRule {ubec}{ul} {ulec} {} +\DeclareFontSeriesChangeRule {ubec}{el} {elec} {} +\DeclareFontSeriesChangeRule {ubec}{l} {lec} {} +\DeclareFontSeriesChangeRule {ubec}{sl} {slec} {} +\DeclareFontSeriesChangeRule {ubec}{sb} {sbec} {bec} +\DeclareFontSeriesChangeRule {ubec}{b} {bec} {} +\DeclareFontSeriesChangeRule {ubec}{eb} {ebec} {ubec} +\DeclareFontSeriesChangeRule {ubec}{ub} {ubec} {} +\DeclareFontSeriesChangeRule {ubec}{uc} {ubuc} {} +\DeclareFontSeriesChangeRule {ubec}{ec} {ubec} {} +\DeclareFontSeriesChangeRule {ubec}{c} {ubc} {} +\DeclareFontSeriesChangeRule {ubec}{sc} {ubsc} {} +\DeclareFontSeriesChangeRule {ubec}{sx} {ubsx} {} +\DeclareFontSeriesChangeRule {ubec}{x} {ubx} {} +\DeclareFontSeriesChangeRule {ubec}{ex} {ubex} {} +\DeclareFontSeriesChangeRule {ubec}{ux} {ubux} {} +\DeclareFontSeriesChangeRule {ubc}{ul} {ulc} {} +\DeclareFontSeriesChangeRule {ubc}{el} {elc} {} +\DeclareFontSeriesChangeRule {ubc}{l} {lc} {} +\DeclareFontSeriesChangeRule {ubc}{sl} {slc} {} +\DeclareFontSeriesChangeRule {ubc}{sb} {sbc} {bc} +\DeclareFontSeriesChangeRule {ubc}{b} {bc} {} +\DeclareFontSeriesChangeRule {ubc}{eb} {ebc} {ubc} +\DeclareFontSeriesChangeRule {ubc}{ub} {ubc} {} +\DeclareFontSeriesChangeRule {ubc}{uc} {ubuc} {} +\DeclareFontSeriesChangeRule {ubc}{ec} {ubec} {} +\DeclareFontSeriesChangeRule {ubc}{c} {ubc} {} +\DeclareFontSeriesChangeRule {ubc}{sc} {ubsc} {} +\DeclareFontSeriesChangeRule {ubc}{sx} {ubsx} {} +\DeclareFontSeriesChangeRule {ubc}{x} {ubx} {} +\DeclareFontSeriesChangeRule {ubc}{ex} {ubex} {} +\DeclareFontSeriesChangeRule {ubc}{ux} {ubux} {} +\DeclareFontSeriesChangeRule {ubsc}{ul} {ulsc} {} +\DeclareFontSeriesChangeRule {ubsc}{el} {elsc} {} +\DeclareFontSeriesChangeRule {ubsc}{l} {lsc} {} +\DeclareFontSeriesChangeRule {ubsc}{sl} {slsc} {} +\DeclareFontSeriesChangeRule {ubsc}{sb} {sbsc} {bsc} +\DeclareFontSeriesChangeRule {ubsc}{b} {bsc} {} +\DeclareFontSeriesChangeRule {ubsc}{eb} {ebsc} {ubsc} +\DeclareFontSeriesChangeRule {ubsc}{ub} {ubsc} {} +\DeclareFontSeriesChangeRule {ubsc}{uc} {ubuc} {} +\DeclareFontSeriesChangeRule {ubsc}{ec} {ubec} {} +\DeclareFontSeriesChangeRule {ubsc}{c} {ubc} {} +\DeclareFontSeriesChangeRule {ubsc}{sc} {ubsc} {} +\DeclareFontSeriesChangeRule {ubsc}{sx} {ubsx} {} +\DeclareFontSeriesChangeRule {ubsc}{x} {ubx} {} +\DeclareFontSeriesChangeRule {ubsc}{ex} {ubex} {} +\DeclareFontSeriesChangeRule {ubsc}{ux} {ubux} {} +\DeclareFontSeriesChangeRule {ub}{uc} {ubuc} {} +\DeclareFontSeriesChangeRule {ub}{ec} {ubec} {} +\DeclareFontSeriesChangeRule {ub}{c} {ubc} {} +\DeclareFontSeriesChangeRule {ub}{sc} {ubsc} {} +\DeclareFontSeriesChangeRule {ub}{sx} {ubsx} {} +\DeclareFontSeriesChangeRule {ub}{x} {ubx} {} +\DeclareFontSeriesChangeRule {ub}{ex} {ubex} {} +\DeclareFontSeriesChangeRule {ub}{ux} {ubux} {} +\DeclareFontSeriesChangeRule {ub}{sb} {sb} {b} +\DeclareFontSeriesChangeRule {ub}{eb} {eb} {ub} +\DeclareFontSeriesChangeRule {ubsx}{ul} {ulsx} {} +\DeclareFontSeriesChangeRule {ubsx}{el} {elsx} {} +\DeclareFontSeriesChangeRule {ubsx}{l} {lsx} {} +\DeclareFontSeriesChangeRule {ubsx}{sl} {slsx} {} +\DeclareFontSeriesChangeRule {ubsx}{sb} {sbsx} {bsx} +\DeclareFontSeriesChangeRule {ubsx}{b} {bsx} {} +\DeclareFontSeriesChangeRule {ubsx}{eb} {ebsx} {ubsx} +\DeclareFontSeriesChangeRule {ubsx}{ub} {ubsx} {} +\DeclareFontSeriesChangeRule {ubsx}{uc} {ubuc} {} +\DeclareFontSeriesChangeRule {ubsx}{ec} {ubec} {} +\DeclareFontSeriesChangeRule {ubsx}{c} {ubc} {} +\DeclareFontSeriesChangeRule {ubsx}{sc} {ubsc} {} +\DeclareFontSeriesChangeRule {ubsx}{sx} {ubsx} {} +\DeclareFontSeriesChangeRule {ubsx}{x} {ubx} {} +\DeclareFontSeriesChangeRule {ubsx}{ex} {ubex} {} +\DeclareFontSeriesChangeRule {ubsx}{ux} {ubux} {} +\DeclareFontSeriesChangeRule {ubx}{ul} {ulx} {} +\DeclareFontSeriesChangeRule {ubx}{el} {elx} {} +\DeclareFontSeriesChangeRule {ubx}{l} {lx} {} +\DeclareFontSeriesChangeRule {ubx}{sl} {slx} {} +\DeclareFontSeriesChangeRule {ubx}{sb} {sbx} {bx} +\DeclareFontSeriesChangeRule {ubx}{b} {bx} {} +\DeclareFontSeriesChangeRule {ubx}{eb} {ebx} {ubx} +\DeclareFontSeriesChangeRule {ubx}{ub} {ubx} {} +\DeclareFontSeriesChangeRule {ubx}{uc} {ubuc} {} +\DeclareFontSeriesChangeRule {ubx}{ec} {ubec} {} +\DeclareFontSeriesChangeRule {ubx}{c} {ubc} {} +\DeclareFontSeriesChangeRule {ubx}{sc} {ubsc} {} +\DeclareFontSeriesChangeRule {ubx}{sx} {ubsx} {} +\DeclareFontSeriesChangeRule {ubx}{x} {ubx} {} +\DeclareFontSeriesChangeRule {ubx}{ex} {ubex} {} +\DeclareFontSeriesChangeRule {ubx}{ux} {ubux} {} +\DeclareFontSeriesChangeRule {ubex}{ul} {ulex} {} +\DeclareFontSeriesChangeRule {ubex}{el} {elex} {} +\DeclareFontSeriesChangeRule {ubex}{l} {lex} {} +\DeclareFontSeriesChangeRule {ubex}{sl} {slex} {} +\DeclareFontSeriesChangeRule {ubex}{sb} {sbex} {bex} +\DeclareFontSeriesChangeRule {ubex}{b} {bex} {} +\DeclareFontSeriesChangeRule {ubex}{eb} {ebex} {ubex} +\DeclareFontSeriesChangeRule {ubex}{ub} {ubex} {} +\DeclareFontSeriesChangeRule {ubex}{uc} {ubuc} {} +\DeclareFontSeriesChangeRule {ubex}{ec} {ubec} {} +\DeclareFontSeriesChangeRule {ubex}{c} {ubc} {} +\DeclareFontSeriesChangeRule {ubex}{sc} {ubsc} {} +\DeclareFontSeriesChangeRule {ubex}{sx} {ubsx} {} +\DeclareFontSeriesChangeRule {ubex}{x} {ubx} {} +\DeclareFontSeriesChangeRule {ubex}{ex} {ubex} {} +\DeclareFontSeriesChangeRule {ubex}{ux} {ubux} {} +\DeclareFontSeriesChangeRule {ubux}{ul} {ulux} {} +\DeclareFontSeriesChangeRule {ubux}{el} {elux} {} +\DeclareFontSeriesChangeRule {ubux}{l} {lux} {} +\DeclareFontSeriesChangeRule {ubux}{sl} {slux} {} +\DeclareFontSeriesChangeRule {ubux}{sb} {sbux} {bux} +\DeclareFontSeriesChangeRule {ubux}{b} {bux} {} +\DeclareFontSeriesChangeRule {ubux}{eb} {ebux} {ubux} +\DeclareFontSeriesChangeRule {ubux}{ub} {ubux} {} +\DeclareFontSeriesChangeRule {ubux}{uc} {ubuc} {} +\DeclareFontSeriesChangeRule {ubux}{ec} {ubec} {} +\DeclareFontSeriesChangeRule {ubux}{c} {ubc} {} +\DeclareFontSeriesChangeRule {ubux}{sc} {ubsc} {} +\DeclareFontSeriesChangeRule {ubux}{sx} {ubsx} {} +\DeclareFontSeriesChangeRule {ubux}{x} {ubx} {} +\DeclareFontSeriesChangeRule {ubux}{ex} {ubex} {} +\DeclareFontSeriesChangeRule {ubux}{ux} {ubux} {} +\DeclareFontSeriesChangeRule {uluc}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {ulec}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {ulc}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {ulsc}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {ul}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {ulsx}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {ulx}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {ulex}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {ulux}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {eluc}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {elec}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {elc}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {elsc}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {el}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {elsx}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {elx}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {elex}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {elux}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {luc}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {lec}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {lc}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {lsc}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {l}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {lsx}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {lx}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {lex}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {lux}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {sluc}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {slec}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {slc}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {slsc}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {sl}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {slsx}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {slx}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {slex}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {slux}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {sbuc}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {sbec}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {sbc}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {sbsc}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {sb}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {sbsx}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {sbx}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {sbex}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {sbux}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {buc}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {bec}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {bc}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {bsc}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {b}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {bsx}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {bx}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {bex}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {bux}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {ebuc}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {ebec}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {ebc}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {ebsc}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {eb}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {ebsx}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {ebx}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {ebex}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {ebux}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {ubuc}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {ubec}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {ubc}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {ubsc}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {ub}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {ubsx}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {ubx}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {ubex}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {ubux}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {uc}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {ec}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {c}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {sc}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {m}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {sx}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {x}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {ex}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {ux}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {uluc}{m?} {uc} {} +\DeclareFontSeriesChangeRule {ulec}{m?} {ec} {} +\DeclareFontSeriesChangeRule {ulc}{m?} {c} {} +\DeclareFontSeriesChangeRule {ulsc}{m?} {sc} {} +\DeclareFontSeriesChangeRule {ul}{m?} {m} {} +\DeclareFontSeriesChangeRule {ulsx}{m?} {sx} {} +\DeclareFontSeriesChangeRule {ulx}{m?} {x} {} +\DeclareFontSeriesChangeRule {ulex}{m?} {ex} {} +\DeclareFontSeriesChangeRule {ulux}{m?} {ux} {} +\DeclareFontSeriesChangeRule {eluc}{m?} {uc} {} +\DeclareFontSeriesChangeRule {elec}{m?} {ec} {} +\DeclareFontSeriesChangeRule {elc}{m?} {c} {} +\DeclareFontSeriesChangeRule {elsc}{m?} {sc} {} +\DeclareFontSeriesChangeRule {el}{m?} {m} {} +\DeclareFontSeriesChangeRule {elsx}{m?} {sx} {} +\DeclareFontSeriesChangeRule {elx}{m?} {x} {} +\DeclareFontSeriesChangeRule {elex}{m?} {ex} {} +\DeclareFontSeriesChangeRule {elux}{m?} {ux} {} +\DeclareFontSeriesChangeRule {luc}{m?} {uc} {} +\DeclareFontSeriesChangeRule {lec}{m?} {ec} {} +\DeclareFontSeriesChangeRule {lc}{m?} {c} {} +\DeclareFontSeriesChangeRule {lsc}{m?} {sc} {} +\DeclareFontSeriesChangeRule {l}{m?} {m} {} +\DeclareFontSeriesChangeRule {lsx}{m?} {sx} {} +\DeclareFontSeriesChangeRule {lx}{m?} {x} {} +\DeclareFontSeriesChangeRule {lex}{m?} {ex} {} +\DeclareFontSeriesChangeRule {lux}{m?} {ux} {} +\DeclareFontSeriesChangeRule {sluc}{m?} {uc} {} +\DeclareFontSeriesChangeRule {slec}{m?} {ec} {} +\DeclareFontSeriesChangeRule {slc}{m?} {c} {} +\DeclareFontSeriesChangeRule {slsc}{m?} {sc} {} +\DeclareFontSeriesChangeRule {sl}{m?} {m} {} +\DeclareFontSeriesChangeRule {slsx}{m?} {sx} {} +\DeclareFontSeriesChangeRule {slx}{m?} {x} {} +\DeclareFontSeriesChangeRule {slex}{m?} {ex} {} +\DeclareFontSeriesChangeRule {slux}{m?} {ux} {} +\DeclareFontSeriesChangeRule {uc}{m?} {uc} {} +\DeclareFontSeriesChangeRule {ec}{m?} {ec} {} +\DeclareFontSeriesChangeRule {c}{m?} {c} {} +\DeclareFontSeriesChangeRule {sc}{m?} {sc} {} +\DeclareFontSeriesChangeRule {m}{m?} {m} {} +\DeclareFontSeriesChangeRule {sx}{m?} {sx} {} +\DeclareFontSeriesChangeRule {x}{m?} {x} {} +\DeclareFontSeriesChangeRule {ex}{m?} {ex} {} +\DeclareFontSeriesChangeRule {ux}{m?} {ux} {} +\DeclareFontSeriesChangeRule {sbuc}{m?} {uc} {} +\DeclareFontSeriesChangeRule {sbec}{m?} {ec} {} +\DeclareFontSeriesChangeRule {sbc}{m?} {c} {} +\DeclareFontSeriesChangeRule {sbsc}{m?} {sc} {} +\DeclareFontSeriesChangeRule {sb}{m?} {m} {} +\DeclareFontSeriesChangeRule {sbsx}{m?} {sx} {} +\DeclareFontSeriesChangeRule {sbx}{m?} {x} {} +\DeclareFontSeriesChangeRule {sbex}{m?} {ex} {} +\DeclareFontSeriesChangeRule {sbux}{m?} {ux} {} +\DeclareFontSeriesChangeRule {buc}{m?} {uc} {} +\DeclareFontSeriesChangeRule {bec}{m?} {ec} {} +\DeclareFontSeriesChangeRule {bc}{m?} {c} {} +\DeclareFontSeriesChangeRule {bsc}{m?} {sc} {} +\DeclareFontSeriesChangeRule {b}{m?} {m} {} +\DeclareFontSeriesChangeRule {bsx}{m?} {sx} {} +\DeclareFontSeriesChangeRule {bx}{m?} {x} {} +\DeclareFontSeriesChangeRule {bex}{m?} {ex} {} +\DeclareFontSeriesChangeRule {bux}{m?} {ux} {} +\DeclareFontSeriesChangeRule {ebuc}{m?} {uc} {} +\DeclareFontSeriesChangeRule {ebec}{m?} {ec} {} +\DeclareFontSeriesChangeRule {ebc}{m?} {c} {} +\DeclareFontSeriesChangeRule {ebsc}{m?} {sc} {} +\DeclareFontSeriesChangeRule {eb}{m?} {m} {} +\DeclareFontSeriesChangeRule {ebsx}{m?} {sx} {} +\DeclareFontSeriesChangeRule {ebx}{m?} {x} {} +\DeclareFontSeriesChangeRule {ebex}{m?} {ex} {} +\DeclareFontSeriesChangeRule {ebux}{m?} {ux} {} +\DeclareFontSeriesChangeRule {ubuc}{m?} {uc} {} +\DeclareFontSeriesChangeRule {ubec}{m?} {ec} {} +\DeclareFontSeriesChangeRule {ubc}{m?} {c} {} +\DeclareFontSeriesChangeRule {ubsc}{m?} {sc} {} +\DeclareFontSeriesChangeRule {ub}{m?} {m} {} +\DeclareFontSeriesChangeRule {ubsx}{m?} {sx} {} +\DeclareFontSeriesChangeRule {ubx}{m?} {x} {} +\DeclareFontSeriesChangeRule {ubex}{m?} {ex} {} +\DeclareFontSeriesChangeRule {ubux}{m?} {ux} {} +\DeclareFontSeriesChangeRule {uluc}{?m} {ul} {} +\DeclareFontSeriesChangeRule {ulec}{?m} {ul} {} +\DeclareFontSeriesChangeRule {ulc}{?m} {ul} {} +\DeclareFontSeriesChangeRule {ulsc}{?m} {ul} {} +\DeclareFontSeriesChangeRule {ul}{?m} {ul} {} +\DeclareFontSeriesChangeRule {ulsx}{?m} {ul} {} +\DeclareFontSeriesChangeRule {ulx}{?m} {ul} {} +\DeclareFontSeriesChangeRule {ulex}{?m} {ul} {} +\DeclareFontSeriesChangeRule {ulux}{?m} {ul} {} +\DeclareFontSeriesChangeRule {eluc}{?m} {el} {} +\DeclareFontSeriesChangeRule {elec}{?m} {el} {} +\DeclareFontSeriesChangeRule {elc}{?m} {el} {} +\DeclareFontSeriesChangeRule {elsc}{?m} {el} {} +\DeclareFontSeriesChangeRule {el}{?m} {el} {} +\DeclareFontSeriesChangeRule {elsx}{?m} {el} {} +\DeclareFontSeriesChangeRule {elx}{?m} {el} {} +\DeclareFontSeriesChangeRule {elex}{?m} {el} {} +\DeclareFontSeriesChangeRule {elux}{?m} {el} {} +\DeclareFontSeriesChangeRule {luc}{?m} {l} {} +\DeclareFontSeriesChangeRule {lec}{?m} {l} {} +\DeclareFontSeriesChangeRule {lc}{?m} {l} {} +\DeclareFontSeriesChangeRule {lsc}{?m} {l} {} +\DeclareFontSeriesChangeRule {l}{?m} {l} {} +\DeclareFontSeriesChangeRule {lsx}{?m} {l} {} +\DeclareFontSeriesChangeRule {lx}{?m} {l} {} +\DeclareFontSeriesChangeRule {lex}{?m} {l} {} +\DeclareFontSeriesChangeRule {lux}{?m} {l} {} +\DeclareFontSeriesChangeRule {sluc}{?m} {sl} {} +\DeclareFontSeriesChangeRule {slec}{?m} {sl} {} +\DeclareFontSeriesChangeRule {slc}{?m} {sl} {} +\DeclareFontSeriesChangeRule {slsc}{?m} {sl} {} +\DeclareFontSeriesChangeRule {sl}{?m} {sl} {} +\DeclareFontSeriesChangeRule {slsx}{?m} {sl} {} +\DeclareFontSeriesChangeRule {slx}{?m} {sl} {} +\DeclareFontSeriesChangeRule {slex}{?m} {sl} {} +\DeclareFontSeriesChangeRule {slux}{?m} {sl} {} +\DeclareFontSeriesChangeRule {uc}{?m} {m} {} +\DeclareFontSeriesChangeRule {ec}{?m} {m} {} +\DeclareFontSeriesChangeRule {c}{?m} {m} {} +\DeclareFontSeriesChangeRule {sc}{?m} {m} {} +\DeclareFontSeriesChangeRule {m}{?m} {m} {} +\DeclareFontSeriesChangeRule {sx}{?m} {m} {} +\DeclareFontSeriesChangeRule {x}{?m} {m} {} +\DeclareFontSeriesChangeRule {ex}{?m} {m} {} +\DeclareFontSeriesChangeRule {ux}{?m} {m} {} +\DeclareFontSeriesChangeRule {sbuc}{?m} {sb} {} +\DeclareFontSeriesChangeRule {sbec}{?m} {sb} {} +\DeclareFontSeriesChangeRule {sbc}{?m} {sb} {} +\DeclareFontSeriesChangeRule {sbsc}{?m} {sb} {} +\DeclareFontSeriesChangeRule {sb}{?m} {sb} {} +\DeclareFontSeriesChangeRule {sbsx}{?m} {sb} {} +\DeclareFontSeriesChangeRule {sbx}{?m} {sb} {} +\DeclareFontSeriesChangeRule {sbex}{?m} {sb} {} +\DeclareFontSeriesChangeRule {sbux}{?m} {sb} {} +\DeclareFontSeriesChangeRule {buc}{?m} {b} {} +\DeclareFontSeriesChangeRule {bec}{?m} {b} {} +\DeclareFontSeriesChangeRule {bc}{?m} {b} {} +\DeclareFontSeriesChangeRule {bsc}{?m} {b} {} +\DeclareFontSeriesChangeRule {b}{?m} {b} {} +\DeclareFontSeriesChangeRule {bsx}{?m} {b} {} +\DeclareFontSeriesChangeRule {bx}{?m} {b} {} +\DeclareFontSeriesChangeRule {bex}{?m} {b} {} +\DeclareFontSeriesChangeRule {bux}{?m} {b} {} +\DeclareFontSeriesChangeRule {ebuc}{?m} {eb} {} +\DeclareFontSeriesChangeRule {ebec}{?m} {eb} {} +\DeclareFontSeriesChangeRule {ebc}{?m} {eb} {} +\DeclareFontSeriesChangeRule {ebsc}{?m} {eb} {} +\DeclareFontSeriesChangeRule {eb}{?m} {eb} {} +\DeclareFontSeriesChangeRule {ebsx}{?m} {eb} {} +\DeclareFontSeriesChangeRule {ebx}{?m} {eb} {} +\DeclareFontSeriesChangeRule {ebex}{?m} {eb} {} +\DeclareFontSeriesChangeRule {ebux}{?m} {eb} {} +\DeclareFontSeriesChangeRule {ubuc}{?m} {ub} {} +\DeclareFontSeriesChangeRule {ubec}{?m} {ub} {} +\DeclareFontSeriesChangeRule {ubc}{?m} {ub} {} +\DeclareFontSeriesChangeRule {ubsc}{?m} {ub} {} +\DeclareFontSeriesChangeRule {ub}{?m} {ub} {} +\DeclareFontSeriesChangeRule {ubsx}{?m} {ub} {} +\DeclareFontSeriesChangeRule {ubx}{?m} {ub} {} +\DeclareFontSeriesChangeRule {ubex}{?m} {ub} {} +\DeclareFontSeriesChangeRule {ubux}{?m} {ub} {} \DeclareRobustCommand\fontseries[1]{\@forced@seriesfalse \expandafter\def\expandafter\delayed@f@adjustment\expandafter {\delayed@f@adjustment\delayed@merge@font@series{#1}}} @@ -10844,42 +12229,79 @@ Type H for immediate help.}% \newcommand\sscdefault{ssc} \DeclareFontShapeChangeRule {n}{it} {it} {sl} \DeclareFontShapeChangeRule {n}{sl} {sl} {it} +\DeclareFontShapeChangeRule {n}{sw} {sw} {it} \DeclareFontShapeChangeRule {n}{ulc} {n} {} -\DeclareFontShapeChangeRule {n}{up} {n} {} +\DeclareFontShapeChangeRule {n}{up} {n} {} +\DeclareFontShapeChangeRule {n}{ssc} {ssc} {sc} \DeclareFontShapeChangeRule {it}{sl} {sl} {it} +\DeclareFontShapeChangeRule {it}{sw} {sw} {it} \DeclareFontShapeChangeRule {it}{sc} {scit} {scsl} \DeclareFontShapeChangeRule {it}{ulc} {it} {} -\DeclareFontShapeChangeRule {it}{up} {n} {} +\DeclareFontShapeChangeRule {it}{up} {n} {} +\DeclareFontShapeChangeRule {it}{ssc} {sscit} {scit} \DeclareFontShapeChangeRule {sl}{it} {it} {sl} +\DeclareFontShapeChangeRule {sl}{sw} {sw} {it} \DeclareFontShapeChangeRule {sl}{sc} {scsl} {scit} \DeclareFontShapeChangeRule {sl}{ulc} {sl} {} -\DeclareFontShapeChangeRule {sl}{up} {n} {} +\DeclareFontShapeChangeRule {sl}{up} {n} {} +\DeclareFontShapeChangeRule {sl}{ssc} {sscsl} {scsl} \DeclareFontShapeChangeRule {sc}{it} {scit} {scsl} \DeclareFontShapeChangeRule {sc}{sl} {scsl} {scit} -\DeclareFontShapeChangeRule {sc}{sw} {scsw} {sw} -\DeclareFontShapeChangeRule {sc}{ulc} {n} {} +\DeclareFontShapeChangeRule {sc}{sw} {scsw} {scit} +\DeclareFontShapeChangeRule {sc}{ulc} {n} {} \DeclareFontShapeChangeRule {sc}{up} {n} {} \DeclareFontShapeChangeRule {scit}{it} {scit} {} \DeclareFontShapeChangeRule {scit}{sl} {scsl} {scit} -\DeclareFontShapeChangeRule {scit}{sw} {scsw} {sc} % or scit? +\DeclareFontShapeChangeRule {scit}{sw} {scsw} {scit} \DeclareFontShapeChangeRule {scit}{sc} {scit} {} \DeclareFontShapeChangeRule {scit}{ulc} {it} {} -\DeclareFontShapeChangeRule {scit}{up} {sc} {} +\DeclareFontShapeChangeRule {scit}{up} {sc} {} +\DeclareFontShapeChangeRule {scit}{ssc} {sscit} {scit} \DeclareFontShapeChangeRule {scsl}{it} {scit} {scsl} \DeclareFontShapeChangeRule {scsl}{sl} {scsl} {} -\DeclareFontShapeChangeRule {scsl}{sw} {scsw} {sc} % or scsl? +\DeclareFontShapeChangeRule {scsl}{sw} {scsw} {scsl} \DeclareFontShapeChangeRule {scsl}{sc} {scsl} {} \DeclareFontShapeChangeRule {scsl}{ulc} {sl} {} -\DeclareFontShapeChangeRule {scsl}{up} {sc} {} +\DeclareFontShapeChangeRule {scsl}{up} {sc} {} +\DeclareFontShapeChangeRule {scsl}{ssc} {sscsl} {scsl} \DeclareFontShapeChangeRule {scsw}{it} {scit} {scsw} \DeclareFontShapeChangeRule {scsw}{sl} {scsl} {} \DeclareFontShapeChangeRule {scsw}{sw} {scsw} {} \DeclareFontShapeChangeRule {scsw}{sc} {scsw} {} \DeclareFontShapeChangeRule {scsw}{ulc} {sw} {} -\DeclareFontShapeChangeRule {scsw}{up} {sc} {} -\DeclareFontShapeChangeRule {sw}{sc} {scsw} {} +\DeclareFontShapeChangeRule {scsw}{up} {sc} {} +\DeclareFontShapeChangeRule {scsw}{ssc} {sscsw} {scsw} +\DeclareFontShapeChangeRule {sw}{sc} {scsw} {scit} \DeclareFontShapeChangeRule {sw}{ulc} {sw} {} -\DeclareFontShapeChangeRule {sw}{up} {n} {} +\DeclareFontShapeChangeRule {sw}{up} {n} {} +\DeclareFontShapeChangeRule {sw}{ssc} {sscsw} {scsw} +\DeclareFontShapeChangeRule {ssc}{it} {sscit} {sscsl} +\DeclareFontShapeChangeRule {ssc}{sl} {sscsl} {sscit} +\DeclareFontShapeChangeRule {ssc}{sw} {sscsw} {sscit} +\DeclareFontShapeChangeRule {ssc}{sc} {sc} {} +\DeclareFontShapeChangeRule {ssc}{ulc} {n} {} +\DeclareFontShapeChangeRule {ssc}{up} {n} {} +\DeclareFontShapeChangeRule {sscit}{it} {sscit} {} +\DeclareFontShapeChangeRule {sscit}{sl} {sscsl} {sscit} +\DeclareFontShapeChangeRule {sscit}{sw} {sscsw} {sscit} +\DeclareFontShapeChangeRule {sscit}{ssc} {sscit} {} +\DeclareFontShapeChangeRule {sscit}{sc} {scit} {} +\DeclareFontShapeChangeRule {sscit}{ulc} {it} {} +\DeclareFontShapeChangeRule {sscit}{up} {ssc} {} +\DeclareFontShapeChangeRule {sscsl}{it} {sscit} {sscsl} +\DeclareFontShapeChangeRule {sscsl}{sl} {sscsl} {} +\DeclareFontShapeChangeRule {sscsl}{sw} {sscsw} {sscit} +\DeclareFontShapeChangeRule {sscsl}{sc} {scsl} {} +\DeclareFontShapeChangeRule {sscsl}{ulc} {sl} {} +\DeclareFontShapeChangeRule {sscsl}{up} {ssc} {} +\DeclareFontShapeChangeRule {sscsw}{it} {sscit} {sscsl} +\DeclareFontShapeChangeRule {sscsw}{sl} {sscsl} {sscit} +\DeclareFontShapeChangeRule {sscsw}{sw} {sscsw} {} +\DeclareFontShapeChangeRule {sscsw}{ssc} {sscsw} {} +\DeclareFontShapeChangeRule {sscsw}{sc} {scsw} {scit} +\DeclareFontShapeChangeRule {sscsw}{ulc} {sw} {it} +\DeclareFontShapeChangeRule {sscsw}{up} {ssc} {} + \DeclareRobustCommand\fontshape[1] {\expandafter\def\expandafter\delayed@f@adjustment\expandafter {\delayed@f@adjustment\delayed@merge@font@shape{#1}}} @@ -11432,20 +12854,35 @@ Type H for immediate help.}% \tl_gset:cx { g__nfss_frozen_mv_ #1 _tl }{ \int_use:c { c@mv@#1 } } \cs_gset:cpn{mv@#1@reset} { + \int_compare:nNnTF \@math@level = 0 + { \int_compare:nNnTF { \int_use:c{c@mv@#1} } > { \tl_use:c{g__nfss_frozen_mv_ #1 _tl} } { - \@font@info{Undo~ math~ alphabet~ allocation~ in~ version~ #1} + \@font@info{ Undo~ math~ alphabet~ allocation~ in~ version~ #1 } \cs_gset_eq:cc { mv@#1 }{ mv@#1@frozen } \int_gset:cn { c@mv@#1 }{ \tl_use:c {g__nfss_frozen_mv_ #1 _tl} } - \group_begin: - \cs_set_eq:NN \getanddefine@fonts \use_none:nn - \use:c {mv@#1} - \group_end: + \tl_if_eq:NnTF \math@version {#1} + { + \group_begin: + \cs_set_eq:NN \getanddefine@fonts \use_none:nn + \use:c {mv@ \math@version } + \group_end: + } + { + \@font@info{ ...~ but~ do~ not~ reset~ the~ + top-level~ math~ alphabet~ definitions } + } } { - \@font@info{No~ math~ alphabet~ change~ to~ frozen~ version~ #1} + \@font@info{ No~ math~ alphabet~ change~ + to~ frozen~ version~ #1 } } + } + { + \@font@info{ Nested~ math:~ keeping~ math~ alphabet~ + allocation~ in~ version~ #1} + } \if@ignore \ignorespaces \fi } } @@ -13336,6 +14773,7 @@ Type H for immediate help.}% {\@currentlabelname}{\@currentHref}{\@kernel@reserved@label@data}}}% \endgroup \@esphack} +\def\ltx@star@counter{*} \def\@currentcounter{} \NewSocket{refstepcounter}{1} \NewSocket{refstepcounter/target}{1} @@ -13345,7 +14783,10 @@ Type H for immediate help.}% \def\refstepcounter#1{% \UseSocket{refstepcounter}{% \stepcounter{#1}% - \edef\@currentcounter{#1}% + \edef\reserved@a{#1}% + \ifx\reserved@a\ltx@star@counter\else + \let\@currentcounter\reserved@a + \fi \protected@edef\@currentlabel {\csname p@#1\expandafter\endcsname\csname the#1\endcsname}% \UseSocket{refstepcounter/target}{#1}% @@ -13355,14 +14796,17 @@ Type H for immediate help.}% \def\@kernel@refstepcounter#1{% \UseSocket{refstepcounter}{% \stepcounter{#1}% - \edef\@currentcounter{#1}% + \edef\reserved@a{#1}% + \ifx\reserved@a\ltx@star@counter\else + \let\@currentcounter\reserved@a + \fi \protected@edef\@currentlabel {\csname p@#1\expandafter\endcsname\csname the#1\endcsname}}}% \def\labelformat#1{\expandafter\def\csname p@#1\endcsname##1} -\def\@kernel@Ref#1{\protected@edef\@tempa{\@kernel@ref{#1}}% - \expandafter\MakeUppercase\@tempa} -\def\@kernel@sRef#1{\protected@edef\@tempa{\@kernel@sref{#1}}% - \expandafter\MakeUppercase\@tempa} +\def\@kernel@Ref#1{\protected@edef\reserved@a{\@kernel@ref{#1}}% + \expandafter\MakeUppercase\reserved@a} +\def\@kernel@sRef#1{\protected@edef\reserved@a{\@kernel@sref{#1}}% + \expandafter\MakeUppercase\reserved@a} \NewDocumentCommand\Ref{s} {\IfBooleanTF{#1}{\@kernel@sRef}{\@kernel@Ref}} \def\@currentlabel{} @@ -14323,9 +15767,16 @@ Type H for immediate help.}% \def\@endpefalse{\global\let\if@endpe\iffalse} \def\@endpetrue {% \global\let\if@endpe\iftrue - \ifnum\currentgrouplevel>\z@ - \aftergroup\propagate@doendpe - \fi + \ifnum\currentgrouptype =14 % semi-simple group + \aftergroup\propagate@doendpe + \else + \ifnum\currentgrouptype =\z@ % no group: top-level + \else + \ifnum\currentgrouptype =\@ne % simple group + \aftergroup\propagate@doendpe + \fi + \fi + \fi } \def\propagate@doendpe{\if@endpe \@doendpe \fi} \def\@mklab#1{\hfil #1} @@ -15719,9 +17170,15 @@ Type H for immediate help.}% \def\addcontentsline#1#2#3{% \addtocontents{#1}{\protect\contentsline{#2}{#3}{\thepage}{}% \protected@file@percent}} +\DeclareExpandableDocumentCommand\@gobble@om{+o+m}{} +\DeclareExpandableDocumentCommand\@gobble@som{s+o+m}{} +\DeclareDocumentCommand\@gobble@with@sphack@om{+o+m}{\@bsphack\@esphack} +\DeclareDocumentCommand\@gobble@with@sphack@som{s+o+m}{\@bsphack\@esphack} \long\def\addtocontents#1#2{% \protected@write\@auxout - {\let\label\@gobble \let\index\@gobble \let\glossary\@gobble}% + {\let\label\@gobble@om + \let\index\@gobble@som + \let\glossary\@gobble@om}% {\string\@writefile{#1}{#2}}} \def\contentsline#1#2#3#4{\gdef\@contentsline@destination{#4}% \csname l@#1\endcsname{#2}{#3}} @@ -16161,7 +17618,7 @@ Type H for immediate help.}% \let\@cite@ofmt\hbox \def\@biblabel#1{[#1]} %% File: ltmarks.dtx -%% Copyright (C) 2022-2024 +%% Copyright (C) 2022-2025 %% Frank Mittelbach, The LaTeX Project %%% From File: ltmarks.dtx @@ -16216,9 +17673,9 @@ Type H for immediate help.}% \tl_new:c { g__mark_#1_top_ #2 _tl } \tl_new:c { g__mark_#1_first_ #2 _tl } \tl_new:c { g__mark_#1_last_ #2 _tl } - \tl_set_eq:cN { g__mark_#1_top_ #2 _tl } \c__mark_empty_tl - \tl_set_eq:cN { g__mark_#1_first_ #2 _tl } \c__mark_empty_tl - \tl_set_eq:cN { g__mark_#1_last_ #2 _tl } \c__mark_empty_tl + \tl_gset_eq:cN { g__mark_#1_top_ #2 _tl } \c__mark_empty_tl + \tl_gset_eq:cN { g__mark_#1_first_ #2 _tl } \c__mark_empty_tl + \tl_gset_eq:cN { g__mark_#1_last_ #2 _tl } \c__mark_empty_tl } \tl_const:Nn \c__mark_empty_tl { \__mark_value:nn{0}{} } \box_new:N \l__mark_box @@ -16327,13 +17784,15 @@ Type H for immediate help.}% } { \__mark_debug:n { \iow_term:x { Marks:~ extract~ last~ - mark~ for~ class~ '##1'~ =~ \g__mark_tmp_tl } } + mark~ for~ class~ '##1'~ =~ \exp_not:o \g__mark_tmp_tl } } \tl_gput_right:Ne \g__mark_last_marks_tl { \mark_insert:nn {##1} { \__mark_drop_id:o { \g__mark_tmp_tl } } } - \__mark_debug:n { \iow_term:x { Marks:~ extract~ first~ - mark~ for~ class~ '##1'~ =~ - \tex_splitfirstmarks:D + \__mark_debug:n { \iow_term:x { + Marks:~ extract~ first~ mark~ for~ class~ '##1'~ =~ + \exp_not:o { + \tex_splitfirstmarks:D \use:c { c__mark_class_##1_mark } + } } } \tl_gput_right:Ne \g__mark_first_marks_tl { \mark_insert:nn {##1} @@ -17238,7 +18697,6 @@ Type H for immediate help.}% \@onlypreamble\AtEndOfClass \DeclareRobustCommand\AtBeginDocument{\AddToHook{begindocument}} \DeclareRobustCommand\AtEndDocument {\AddToHook{enddocument}} -\@onlypreamble\AtBeginDocument \def\@cls@pkg{% \ifx\@currext\@clsextension document class% @@ -17688,11 +19146,14 @@ Type H for immediate help.}% { \__keys_options_expand_module:Nn \__keys_options_aux:n {#1} } \cs_new_protected:Npn \__keys_options_aux:n #1 { - \cs_gset_protected:cpn { opt@handler@\@currname.\@currext } - { \ProcessKeyOptions [ #1 ] } \cs_set_protected:Npn \__keys_option_end: { } \clist_clear:N \l__keys_options_clist - \__keys_options_global:n {#1} + \cs_if_exist:cF { opt@handler@ \@currname . \@currext } + { + \__keys_options_global:n {#1} + \cs_gset_protected:cpn { opt@handler@ \@currname . \@currext } + { \ProcessKeyOptions [ #1 ] } + } \__keys_options_local: \keys_if_exist:nnF {#1} { unknown } { @@ -18170,7 +19631,7 @@ Type H for immediate help.}% \declare@file@substitution{atveryend.sty}{atveryend-ltx.sty} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% -%% Copyright (C) 2020-2024 +%% Copyright (C) 2020-2025 %% Frank Mittelbach, The LaTeX Project %% %%% From File: ltshipout.dtx @@ -18607,7 +20068,6 @@ Type H for immediate help.}% \declare@file@substitution{atbegshi.sty}{atbegshi-ltx.sty} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%% From File: ltoutput.dtx -\expandafter\let\csname ver@autoout1.sty\endcsname\fmtversion \message{output,} \maxdeadcycles = 100 \let\@elt\relax @@ -18940,50 +20400,35 @@ Type H for immediate help.}% \global \@mparbottom \z@ \global \@textfloatsheight \z@ \@floatplacement } -\gdef \@makecol {% - \ifvoid\footins - \setbox\@outputbox \box\@cclv - \else - \setbox\@outputbox \vbox {% - \boxmaxdepth \@maxdepth - \unvbox \@cclv - \vskip \skip\footins - \color@begingroup - \normalcolor - \footnoterule - \unvbox \footins - \color@endgroup - }% - \fi - \let\@elt\relax - \xdef\@freelist{\@freelist\@midlist}% - \global \let \@midlist \@empty - \@combinefloats - \ifvbox\@kludgeins - \@makespecialcolbox - \else - \setbox\@outputbox \vbox to\@colht {% +\def \@makecol {% + \UseHook {build/column/before}% + \setbox\@outputbox \box\@cclv + \@outputbox@removebskip + \UseTaggingSocket{build/column/outputbox}% + \let\@elt\relax + \xdef\@freelist{\@freelist\@midlist}% + \global \let \@midlist \@empty + \UseSocket {build/column/outputbox}% + \ifvbox\@kludgeins + \@make@specialcolbox + \else + \@make@normalcolbox + \fi + \global \maxdepth \@maxdepth + \UseHook {build/column/after}% +} +\newdimen\@outputbox@depth +\def \@make@normalcolbox {% + \setbox\@outputbox \vbox to\@colht {% \@texttop - \dimen@ \dp\@outputbox + \@outputbox@depth \dp\@outputbox \unvbox \@outputbox - \vskip -\dimen@ + \vskip -\@outputbox@depth \@textbottom - }% - \fi - \global \maxdepth \@maxdepth -} -\gdef \@reinserts{% - \ifvoid\footins\else\insert\footins{\unvbox\footins}\fi - \ifvbox\@kludgeins\insert\@kludgeins - {\unvbox\@kludgeins}\fi + }% } -\gdef \@makespecialcolbox {% - \setbox\@outputbox \vbox {% - \@texttop - \dimen@ \dp\@outputbox - \unvbox\@outputbox - \vskip-\dimen@ - }% +\def \@make@specialcolbox {% + \@outputbox@append {\vskip-\@outputbox@depth}% \@tempdima \@colht \ifdim \wd\@kludgeins>\z@ \advance \@tempdima -\ht\@outputbox @@ -19003,6 +20448,140 @@ Type H for immediate help.}% \fi {\setbox \@tempboxa \box \@kludgeins}% } +\def\@outputbox@removebskip{% + \ifx\@textbottom\relax \else + \ifvoid \@outputbox + \global\let\@outputbox@reinsertbskip\relax + \else + \@outputbox@append{% + \@tempskipa\lastskip + \ifnum \gluestretchorder\@tempskipa>\z@ + \unskip + \xdef\@outputbox@reinsertbskip + {\noexpand\@outputbox@append{\vskip\the\@tempskipa}}% + \else + \global\let\@outputbox@reinsertbskip\relax + \fi + }% + \fi + \fi +} +\let \@outputbox@reinsertbskip \relax +\def\@outputbox@append #1{% + \setbox\@outputbox \vbox {% + \boxmaxdepth \@maxdepth + \@outputbox@depth\dp\@outputbox % if needed in #1 + \unvbox \@outputbox + #1% + }% +} +\def\@outputbox@appendfootnotes {% + \ifvoid\footins \else + \@makecol@handlesplitfootnotes + \UseSocket{build/column/footnotes}% + \@outputbox@append{% + \vskip \skip\footins + \UseTaggingSocket{build/column/footins}% + \color@begingroup + \normalcolor + \footnoterule + \csname pdfcolfoot@current\endcsname + \unvbox \footins + \color@endgroup + }% + \fi +} +\let \@makecol@handlesplitfootnotes \@empty +\def \@outputbox@attachfloats {% + \ifx \@toplist\@empty \else \@cflt \fi + \ifx \@botlist\@empty \else \@cflb \fi +} +\def \@outputbox@attachtopfloats {% + \ifx \@toplist\@empty \else \@cflt \fi +} +\def \@outputbox@attachbottomfloats {% + \ifx \@botlist\@empty \else \@cflb \fi +} +\def\@if@flushbottom@TF{% + \ifx\@textbottom\relax + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi +} +\def\@if@footnotes@TF{% + \ifvoid\footins + \expandafter\@secondoftwo + \else + \expandafter\@firstoftwo + \fi +} +\def\@if@bottomfloats@TF{% + \ifx \@botlist\@empty + \expandafter\@secondoftwo + \else + \expandafter\@firstoftwo + \fi +} +\NewSocket{build/column/outputbox}{0} +\NewSocketPlug {build/column/outputbox}{space-footnotes-floats} {% + \@if@footnotes@TF + {\@outputbox@append{\vfill}}% + {\@if@bottomfloats@TF + {\@outputbox@append{\vfill}}% + {\@outputbox@reinsertbskip}% + }% + \@outputbox@appendfootnotes + \@outputbox@attachfloats +} +\NewSocketPlug {build/column/outputbox}{footnotes-space-floats} {% + \@outputbox@appendfootnotes + \@if@bottomfloats@TF + {\@outputbox@append{\vfill}}% + {\@outputbox@reinsertbskip}% + \@outputbox@attachfloats +} +\NewSocketPlug {build/column/outputbox}{floats-space-footnotes} {% + \@outputbox@attachfloats + \@if@footnotes@TF + {\@outputbox@append{\vfill}}% + {\@outputbox@reinsertbskip}% + \@outputbox@appendfootnotes +} +\NewSocketPlug {build/column/outputbox}{space-floats-footnotes} {% + \@if@footnotes@TF + {\@outputbox@append{\vfill}}% + {\@if@bottomfloats@TF + {\@outputbox@append{\vfill}}% + {\@outputbox@reinsertbskip}}% + \@outputbox@attachfloats + \@outputbox@appendfootnotes +} +\NewSocketPlug {build/column/outputbox}{floats-footnotes} {% + \@outputbox@attachfloats + \@outputbox@appendfootnotes + \@outputbox@reinsertbskip +} +\NewSocketPlug {build/column/outputbox}{footnotes-floats} {% + \@outputbox@appendfootnotes + \@outputbox@attachfloats + \@outputbox@reinsertbskip +} +\NewSocketPlug {build/column/outputbox}{footnotes-floats-legacy} {% + \@outputbox@reinsertbskip + \@outputbox@appendfootnotes + \@outputbox@attachfloats +} +\AssignSocketPlug {build/column/outputbox}{footnotes-floats-legacy} +\NewSocket{build/column/footnotes}{0} +\NewMirroredHookPair{build/page/before}{build/page/after} +\NewHook {build/page/reset} +\NewMirroredHookPair{build/column/before}{build/column/after} +\gdef \@reinserts{% + \ifvoid\footins\else\insert\footins{\unvbox\footins}\fi + \ifvbox\@kludgeins\insert\@kludgeins + {\unvbox\@kludgeins}\fi +} \let \@texttop \relax \let \@textbottom \relax \def\@activechar@info #1{% @@ -19020,7 +20599,10 @@ Type H for immediate help.}% \def {\@activechar@info{space}\space}% \let'\active@math@prime}% \endgroup -\def\@outputpage{% +\protected \def \pdfannot@link@on@@ { \csname pdfannot_link_on:\endcsname } +\protected \def \pdfannot@link@off@@ { \csname pdfannot_link_off:\endcsname } +\def \@outputpage {% + \UseHook {build/page/before}% \begingroup \let \protect \noexpand \language\document@default@language @@ -19028,60 +20610,77 @@ Type H for immediate help.}% \global\let\@@if@newlist\if@newlist \global\@newlistfalse \@parboxrestore + \UseHook {build/page/reset}% \shipout \vbox{% \set@typeset@protect \aftergroup \endgroup \aftergroup \set@typeset@protect \if@specialpage - \global\@specialpagefalse\@nameuse{ps@\@specialstyle}% + \global \@specialpagefalse + \@nameuse {ps@\@specialstyle}% \fi \if@twoside - \ifodd\count\z@ \let\@thehead\@oddhead \let\@thefoot\@oddfoot - \let\@themargin\oddsidemargin - \else \let\@thehead\@evenhead - \let\@thefoot\@evenfoot \let\@themargin\evensidemargin + \ifodd\count\z@ + \let \@thehead \@oddhead + \let \@thefoot \@oddfoot + \let \@themargin \oddsidemargin + \else + \let \@thehead \@evenhead + \let \@thefoot \@evenfoot + \let \@themargin \evensidemargin \fi \fi \reset@font \normalsize \normalsfcodes - \let\label\@gobble - \let\index\@gobble - \let\glossary\@gobble - \baselineskip\z@skip \lineskip\z@skip \lineskiplimit\z@ + \let \label \@gobble@with@sphack@om + \let \index \@gobble@with@sphack@som + \let \glossary \@gobble@with@sphack@om + \baselineskip \z@skip + \lineskip \z@skip + \lineskiplimit \z@ \@begindvi \vskip \topmargin \moveright\@themargin \vbox {% - \setbox\@tempboxa \vbox to\headheight{% + \setbox\@tempboxa \vbox to\headheight {% \vfil - \color@hbox - \normalcolor - \hb@xt@\textwidth{\@thehead}% - \color@endbox - }% - \dp\@tempboxa \z@ - \box\@tempboxa + \pdfannot@link@off@@ + \UseTaggingSocket{build/page/header}{}% + { + \color@hbox + \normalcolor + \hb@xt@ \textwidth {\@thehead }% + \color@endbox + } + \pdfannot@link@on@@ + } + \dp \@tempboxa \z@ + \box \@tempboxa \vskip \headsep - \box\@outputbox + \box \@outputbox \baselineskip \footskip - \color@hbox - \normalcolor - \hb@xt@\textwidth{\@thefoot}% - \color@endbox - }% - }% - \global\let\if@newlist\@@if@newlist + \pdfannot@link@off@@ + \UseTaggingSocket{build/page/footer}{}% + { + \color@hbox + \normalcolor + \hb@xt@ \textwidth {\@thefoot }% + \color@endbox + } + \pdfannot@link@on@@ + } + } + \global \let \if@newlist \@@if@newlist \global \@colht \textheight \stepcounter{page}% + \UseHook {build/page/after}% } \def \@begindvi{% \unvbox \@begindvibox \global\let \@begindvi \@empty } -\def \@combinefloats {% - \ifx \@toplist\@empty \else \@cflt \fi - \ifx \@botlist\@empty \else \@cflb \fi -} +\let \@combinefloats \@outputbox@attachfloats + \def \@cflt{% \let \@elt \@comflelt \setbox\@tempboxa \vbox{}% @@ -19297,6 +20896,7 @@ Type H for immediate help.}% \@reqcolroom \@textmin \fi \advance \@reqcolroom \ht\@currbox + \saved@reqcolroom \@reqcolroom \ifdim \@colroom>\@reqcolroom \@flsetnum \@colnum \ifnum \@colnum>\z@ @@ -19358,6 +20958,7 @@ Type H for immediate help.}% \@flsettextmin \@reqcolroom \ht\@currbox \advance \@reqcolroom \@textmin + \saved@reqcolroom \@reqcolroom \ifdim \@colroom>\@reqcolroom \@flsetnum \@colnum \ifnum\@colnum>\z@ @@ -19461,6 +21062,7 @@ Type H for immediate help.}% \box\@marbox \hss}% \nointerlineskip \hbox{\vrule \@height\z@ \@width\z@ \@depth\@pagedp}} +%% Similar to |\enlargethispage| but it tries to squeeze the column to \newinsert \@kludgeins \global\dimen\@kludgeins \maxdimen \global\count\@kludgeins 1000 @@ -19523,6 +21125,7 @@ Type H for immediate help.}% \newcount \@fpstype \newdimen \@reqcolroom \newdimen \@textfloatsheight +\newdimen \saved@reqcolroom \def \@fpsadddefault {% \edef \@fps {\@fps\csname fps@\@captype \endcsname}% \@latex@warning {% @@ -19584,6 +21187,7 @@ Type H for immediate help.}% \fi } \def \@flcheckspace #1#2{% + \@reqcolroom \saved@reqcolroom \advance \@reqcolroom \ifx #2\@empty \textfloatsep \else \floatsep \fi \ifdim \@colroom>\@reqcolroom @@ -19707,6 +21311,8 @@ Type H for immediate help.}% } \ERRORusetaggingsocket % that should get a proper error message } +\cs_new_protected:Npn\MathCollectTrue{} +\cs_new_protected:Npn\MathCollectFalse{} \int_new:N \l__tag_block_flattened_level_int \NewSocket{tagsupport/para/restore}{0} \NewSocketPlug{tagsupport/para/restore}{default} @@ -19736,10 +21342,17 @@ Type H for immediate help.}% \NewSocket{tagsupport/toc/contentsline/before}{1} \NewSocket{tagsupport/toc/contentsline/after}{1} +\AssignSocketPlug{tagsupport/toc/contentsline/before}{noop} +\AssignSocketPlug{tagsupport/toc/contentsline/after}{noop} \NewSocket{tagsupport/toc/starttoc/before}{1} \NewSocket{tagsupport/toc/starttoc/after}{1} +\AssignSocketPlug{tagsupport/toc/starttoc/before}{noop} +\AssignSocketPlug{tagsupport/toc/starttoc/after}{noop} \NewSocket{tagsupport/toc/leaders/before}{0} \NewSocket{tagsupport/toc/leaders/after}{0} +\NewSocket{tagsupport/marginpar/begin}{0} +\NewSocket{tagsupport/marginpar/end}{0} + \NewSocket{tagsupport/tbl/cell/begin}{0} \NewSocket{tagsupport/tbl/cell/end}{0} \NewSocket{tagsupport/tbl/row/begin}{0} @@ -19752,6 +21365,7 @@ Type H for immediate help.}% \NewSocket{tagsupport/tbl/restore/celldata}{0} \NewSocket{tagsupport/tbl/colspan}{1} +\AssignSocketPlug{tagsupport/tbl/colspan}{noop} \NewSocket{tagsupport/tbl/hmode/begin}{0} \NewSocket{tagsupport/tbl/hmode/end}{0} @@ -19769,8 +21383,66 @@ Type H for immediate help.}% \NewSocket{tagsupport/float/end}{0} \NewSocket{tagsupport/caption/begin}{1} \NewSocket{tagsupport/caption/end}{0} +\AssignSocketPlug{tagsupport/caption/begin}{noop} \NewSocket{tagsupport/caption/label/begin}{0} \NewSocket{tagsupport/caption/label/end}{0} +\NewSocket{tagsupport/build/page/header}{2} +\NewSocket{tagsupport/build/page/footer}{2} +\NewSocketPlug{tagsupport/build/page/header}{transparent}{#2} +\NewSocketPlug{tagsupport/build/page/footer}{transparent}{#2} +\AssignSocketPlug{tagsupport/build/page/header}{transparent} +\AssignSocketPlug{tagsupport/build/page/footer}{transparent} +\NewSocket{tagsupport/build/column/outputbox}{0} +\NewSocket{tagsupport/build/column/footins}{0} +\NewSocket{tagsupport/math/inline/begin}{0} +\NewSocket{tagsupport/math/inline/end}{0} +\NewSocket{tagsupport/math/inline/formula/begin}{2} +\NewSocket{tagsupport/math/inline/formula/end}{0} +\NewSocket{tagsupport/math/display/begin}{0} +\NewSocket{tagsupport/math/display/end}{0} +\NewSocket{tagsupport/math/display/formula/begin}{2} +\NewSocket{tagsupport/math/display/formula/end}{0} +\NewSocket{tagsupport/math/display/tag/begin}{0} +\NewSocket{tagsupport/math/display/tag/end}{0} +\NewSocketPlug{tagsupport/math/inline/formula/begin}{transparent}{#2} +\AssignSocketPlug{tagsupport/math/inline/formula/begin}{transparent} +\NewSocketPlug{tagsupport/math/display/formula/begin}{transparent}{#2} +\AssignSocketPlug{tagsupport/math/display/formula/begin}{transparent} +\NewSocket{tagsupport/math/luamml/save/nn}{1} +\AssignSocketPlug{tagsupport/math/luamml/save/nn}{noop} +\NewSocket{tagsupport/math/luamml/save/nNn}{1} +\AssignSocketPlug{tagsupport/math/luamml/save/nNn}{noop} +\NewSocket{tagsupport/math/luamml/annotate/false}{2} +\NewSocketPlug{tagsupport/math/luamml/annotate/false}{transparent}{#2} +\AssignSocketPlug{tagsupport/math/luamml/annotate/false}{transparent} +\NewSocket{tagsupport/math/luamml/array/save}{0} +\NewSocket{tagsupport/math/luamml/array/finalize}{0} +\NewSocket{tagsupport/math/luamml/array/initcol}{0} +\NewSocket{tagsupport/math/luamml/array/finalizecol}{1} +\AssignSocketPlug{tagsupport/math/luamml/array/finalizecol}{noop} +\NewSocket{tagsupport/math/luamml/mtable/finalizecol}{1} +\AssignSocketPlug{tagsupport/math/luamml/mtable/finalizecol}{noop} +\NewSocket{tagsupport/math/luamml/mtable/finalize}{1} +\AssignSocketPlug{tagsupport/math/luamml/mtable/finalize}{noop} +\NewSocket{tagsupport/math/luamml/mtable/aligncol}{1} +\AssignSocketPlug{tagsupport/math/luamml/mtable/aligncol}{noop} + +\NewSocket{tagsupport/math/luamml/mtable/innertable/save}{0} +\NewSocket{tagsupport/math/luamml/mtable/smallmatrix/save}{0} +\NewSocket{tagsupport/math/luamml/mtable/innertable/finalize}{0} +\NewSocket{tagsupport/math/luamml/mtable/tag/save}{0} + +\NewSocket{tagsupport/math/luamml/mtable/tag/set}{0} +\NewSocket{tagsupport/math/luamml/hbox}{2} +\NewSocketPlug{tagsupport/math/luamml/hbox}{transparent}{#2} +\AssignSocketPlug{tagsupport/math/luamml/hbox}{transparent} +\NewSocket{tagsupport/math/luamml/finph@nt}{2} +\NewSocketPlug{tagsupport/math/luamml/finph@nt}{transparent}{#2} +\AssignSocketPlug{tagsupport/math/luamml/finph@nt}{transparent} +\NewSocket{tagsupport/math/luamml/finsm@sh}{2} +\NewSocketPlug{tagsupport/math/luamml/finsm@sh}{transparent}{#2} +\AssignSocketPlug{tagsupport/math/luamml/finsm@sh}{transparent} +\NewSocket{tagsupport/math/luamml/artifact}{0} \ExplSyntaxOn \int_new:N \g__tbl_col_int \int_new:N \g__tbl_row_int diff --git a/Master/texmf-dist/tex/latex-dev/base/latex209.def b/Master/texmf-dist/tex/latex-dev/base/latex209.def index c4a6450ac4f..d8443efe944 100644 --- a/Master/texmf-dist/tex/latex-dev/base/latex209.def +++ b/Master/texmf-dist/tex/latex-dev/base/latex209.def @@ -15,7 +15,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/base/latexrelease.sty b/Master/texmf-dist/tex/latex-dev/base/latexrelease.sty index 8a463b97ddb..f47bf743f4e 100644 --- a/Master/texmf-dist/tex/latex-dev/base/latexrelease.sty +++ b/Master/texmf-dist/tex/latex-dev/base/latexrelease.sty @@ -68,7 +68,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% @@ -432,7 +432,7 @@ \@skipping@modulefalse \fi} \ProvidesPackage{latexrelease} - [2024/08/11 v1.0p LaTeX release emulation and tests + [2025/01/31 v1.0q LaTeX release emulation and tests (including releases up to \latexreleaseversion)] \NeedsTeXFormat{LaTeX2e}[1996/06/01] \@ifundefined{sourceLaTeXdate}{% @@ -556,6 +556,8 @@ of this package available from CTAN} \q_recursion_stop \msg_redirect_name:nnn { hooks } { exists } { none } \msg_redirect_name:nnn { mark } { class-already-defined }{ none } +\msg_redirect_name:nnn { socket } { already-declared } { none } +\msg_redirect_name:nnn { socket } { plug-already-declared } { none } \cs_gset_protected:Npn \latexrelease@postltcmd { \__latexrelease_redefines:w @@ -1990,18 +1992,20 @@ of this package available from CTAN} \EndIncludeInRelease %%% From File: ltcmd.dtx -\def\ltcmdversion{v1.2f} -\def\ltcmddate{2024-07-06} +\def\ltcmdversion{v1.3b} +\def\ltcmddate{2025-02-01} \edef\@latexrelease@catcode@null{\the\catcode`\^^@ } \catcode`\^^@=12 \ExplSyntaxOn \NewModuleRelease{2020/10/01}{ltcmd} {Document~command~parser}% +\cs_generate_variant:Nn \tl_head:n { e } \tl_new:N \l__cmd_arg_spec_tl \tl_new:N \l__cmd_args_tl \tl_new:N \l__cmd_args_i_tl \tl_new:N \l__cmd_args_ii_tl \int_new:N \l__cmd_current_arg_int +\int_new:N \l__cmd_total_args_int \bool_new:N \l__cmd_defaults_bool \tl_new:N \l__cmd_defaults_tl \bool_new:N \l__cmd_environment_bool @@ -2032,6 +2036,7 @@ of this package available from CTAN} \bool_new:N \l__cmd_some_obey_spaces_bool \bool_new:N \l__cmd_some_long_bool \bool_new:N \l__cmd_some_short_bool +\bool_new:N \l__cmd_final_verb_bool \quark_new:N \q__cmd_recursion_tail \quark_new:N \q__cmd_recursion_stop \__kernel_quark_new_test:N \__cmd_if_recursion_tail_stop_do:Nn @@ -2642,17 +2647,22 @@ of this package available from CTAN} \__cmd_normalize_arg_spec_loop:n } \cs_new_protected:Npn \__cmd_normalize_type_b:w #1 + { \__cmd_normalize_type_b_or_c:nn {#1} { b } } +\cs_new_protected:Npn \__cmd_normalize_type_c:w #1 + { \__cmd_normalize_type_b_or_c:nn {#1} { c } } +\cs_new_protected:Npn \__cmd_normalize_type_b_or_c:nn #1#2 { \bool_if:NF \l__cmd_environment_bool { \msg_error:nnxx { cmd } { invalid-command-arg } - { \__cmd_environment_or_command: } { b } + { \__cmd_environment_or_command: } {#2} \__cmd_bad_def:wn } \tl_clear:N \l__cmd_last_delimiters_tl - \__cmd_add_arg_spec:n { b } + \__cmd_add_arg_spec:n {#2} \quark_if_recursion_tail_stop:n {#1} - \msg_error:nnxx { cmd } { arg-after-body } + \msg_error:nnxxx { cmd } { arg-after-body } + {#2} { \__cmd_environment_or_command: } { \tl_to_str:n {#1} } \__cmd_bad_def:wn @@ -2743,7 +2753,10 @@ of this package available from CTAN} { \bool_set_true:N \l__cmd_some_short_bool } \tl_put_right:Nx \l__cmd_arg_spec_tl { - \bool_if:NT \l__cmd_long_bool { + } + \bool_lazy_and:nnT + { \l__cmd_long_bool } + { ! \str_if_eq_p:nn {#1} { c } } + { + } \bool_if:NT \l__cmd_obey_spaces_bool { ! } \exp_not:n {#1} } @@ -2768,6 +2781,7 @@ of this package available from CTAN} } \cs_new_protected:Npn \__cmd_prepare_signature:n #1 { + \int_set_eq:NN \l__cmd_total_args_int \l__cmd_current_arg_int \int_zero:N \l__cmd_current_arg_int \bool_set_false:N \l__cmd_long_bool \bool_set_false:N \l__cmd_obey_spaces_bool @@ -2779,9 +2793,16 @@ of this package available from CTAN} \tl_clear:N \l__cmd_process_one_tl \bool_set_false:N \l__cmd_process_some_bool \tl_clear:N \l__cmd_signature_tl + \__cmd_prepare_signature_verb_chk:n {#1} \__cmd_prepare_signature:N #1 \q_recursion_tail \q_recursion_stop \bool_if:NF \l__cmd_expandable_bool { \__cmd_flush_m_args: } } +\cs_new_protected:Npn \__cmd_prepare_signature_verb_chk:n #1 + { + \str_if_eq:eeTF { \tl_head:e { \tl_reverse:n {#1} } } { c } + { \bool_set_true:N \l__cmd_final_verb_bool } + { \bool_set_false:N \l__cmd_final_verb_bool } + } \cs_new_protected:Npn \__cmd_prepare_signature:N { \bool_set_false:N \l__cmd_prefixed_bool @@ -2830,10 +2851,14 @@ of this package available from CTAN} \__cmd_prepare_signature_bypass:N } \cs_new_protected:Npn \__cmd_add_type_b:w + { \__cmd_add_type_b_or_c:N b } +\cs_new_protected:Npn \__cmd_add_type_c:w + { \__cmd_add_type_b_or_c:N c } +\cs_new_protected:Npn \__cmd_add_type_b_or_c:N #1 { \__cmd_flush_m_args: \__cmd_add_default: - \__cmd_add_grabber:N b + \__cmd_add_grabber:N #1 \__cmd_prepare_signature:N } \cs_new_protected:Npn \__cmd_add_type_D:w #1#2#3 @@ -2923,12 +2948,23 @@ of this package available from CTAN} { \l__cmd_suppress_strip_bool } { \str_if_eq_p:nn {#1} { D } } { _no_strip } + \bool_lazy_all:nT + { + { \l__cmd_final_verb_bool } + { \str_if_eq_p:nn {#1} { D } } + { + \int_compare_p:nNn \l__cmd_current_arg_int + = { \l__cmd_total_args_int - 1 } + } + } + { _verb_safe } :w } } \bool_set_false:N \l__cmd_long_bool \bool_set_false:N \l__cmd_obey_spaces_bool \bool_set_false:N \l__cmd_suppress_strip_bool + \bool_set_false:N \l__cmd_verb_safe_bool \tl_put_right:Nx \l__cmd_process_all_tl { { @@ -3538,56 +3574,249 @@ of this package available from CTAN} \__cmd_run_code: \end } -\cs_new_protected:Npn \__cmd_grab_D:w #1#2#3 \__cmd_run_code: +\cs_new_protected:Npn \__cmd_grab_c:w #1 \__cmd_run_code: { - \__cmd_grab_D_aux:NNnNNN #1 #2 {#3} \cs_set_protected_nopar:Npn - \__cmd_peek_nonspace_remove:NTF \use_ii:nn + \bool_set_false:N \l__cmd_obey_spaces_bool + \__cmd_grab_c_start:n {#1} } -\cs_new_protected:Npn \__cmd_grab_D_long:w #1#2#3 \__cmd_run_code: +\cs_new_protected:Npn \__cmd_grab_c_obey_spaces:w #1 \__cmd_run_code: { - \__cmd_grab_D_aux:NNnNNN #1 #2 {#3} \cs_set_protected:Npn - \__cmd_peek_nonspace_remove:NTF \use_ii:nn + \bool_set_true:N \l__cmd_obey_spaces_bool + \__cmd_grab_c_start:n {#1} } -\cs_new_protected:Npn \__cmd_grab_D_obey_spaces:w #1#2#3 \__cmd_run_code: +\cs_new_protected:Npn \__cmd_grab_c_start:n #1 { - \__cmd_grab_D_aux:NNnNNN #1 #2 {#3} \cs_set_protected_nopar:Npn - \__cmd_peek_meaning_remove:NTF \use_ii:nn + \tl_set:Nn \l__cmd_signature_tl {#1} + \group_begin: + \tl_clear:N \l__cmd_v_arg_tl + \tex_escapechar:D = 92 \scan_stop: + \tex_endlinechar:D = `\^^M \scan_stop: + \cs_set_eq:NN \do \char_set_catcode_other:N + \dospecials + \char_set_catcode_other:n { `\^^M } + \__cmd_grab_c_first:w } -\cs_new_protected:Npn \__cmd_grab_D_long_obey_spaces:w #1#2#3 \__cmd_run_code: +\group_begin: + \char_set_catcode_other:N \^^M % + \cs_new_protected:Npn \__cmd_grab_c_first:w #1 ^^M % + { % + \tl_if_blank:nF {#1} % + { % + \msg_warning:nnee { cmd } { chars-dropped-first-line } % + { \exp_not:n {#1} } % + { \exp_not:V \@currenvir } % + } % + \__cmd_grab_c_loop:w #1 ^^M % + } % + \cs_new_protected:Npe \__cmd_grab_c_loop:w #1 ^^M % + { % + \exp_not:N \__cmd_grab_c_auxi:w #1 % + \c_backslash_str end % + \scan_stop: % + } % +\group_end: +\use:e { - \__cmd_grab_D_aux:NNnNNN #1 #2 {#3} \cs_set_protected:Npn - \__cmd_peek_meaning_remove:NTF \use_ii:nn + \cs_new_protected:Npn \exp_not:N \__cmd_grab_c_auxi:w + #1 \c_backslash_str end #2 \scan_stop: } -\cs_new_protected:Npn \__cmd_grab_D_no_strip:w - #1#2#3 \__cmd_run_code: { - \__cmd_grab_D_aux:NNnNNN #1 #2 {#3} \cs_set_protected_nopar:Npn - \__cmd_peek_nonspace_remove:NTF \use_none:n + \tl_put_right:Nn \l__cmd_v_arg_tl {#1} + \tl_if_empty:nTF {#2} + { + \tl_put_right:Nn \l__cmd_v_arg_tl { \obeyedline } + \__cmd_grab_c_loop:w + } + { \__cmd_grab_c_auxii:w #2 \scan_stop: } } -\cs_new_protected:Npn \__cmd_grab_D_long_no_strip:w - #1#2#3 \__cmd_run_code: +\group_begin: + \char_set_catcode_other:N \^^M % + \use:e % + { % + \cs_new_protected:Npe \exp_not:N \__cmd_grab_c_auxii:w % + #1 \c_backslash_str end \scan_stop: % + } % + { % + \tl_set:Nn \exp_not:N \l__cmd_tmpa_tl + { \c_backslash_str end } % + \exp_not:N \__cmd_grab_c_auxiii:N #1 ^^M % + } % + \cs_new_protected:Npn \__cmd_grab_c_auxiii:N #1 % + { % + \token_case_charcode:NnF #1 % + { % + ^^M % + { \__cmd_grab_c_auxiv: } % + \c_space_token % + { % + \tl_put_right:Nn \l__cmd_tmpa_tl {#1} % + \__cmd_grab_c_auxiii:N % + } % + \c_group_begin_token % + { % + \tl_set:Nn \l__cmd_tmpb_tl {#1} % + \__cmd_grab_c_auxvi:N % + } % + } % + { \__cmd_grab_c_auxv: } % + } % +\group_end: +\cs_new_protected:Npn \__cmd_grab_c_auxiv: { - \__cmd_grab_D_aux:NNnNNN #1 #2 {#3} \cs_set_protected:Npn - \__cmd_peek_nonspace_remove:NTF \use_none:n + \tl_put_right:Ne \l__cmd_v_arg_tl + { + \exp_not:V \l__cmd_tmpa_tl + \exp_not:N \obeyedline + } + \__cmd_grab_c_loop:w } -\cs_new_protected:Npn \__cmd_grab_D_obey_spaces_no_strip:w - #1#2#3 \__cmd_run_code: +\cs_new_protected:Npn \__cmd_grab_c_auxv: { - \__cmd_grab_D_aux:NNnNNN #1 #2 {#3} \cs_set_protected_nopar:Npn - \__cmd_peek_meaning_remove:NTF \use_none:n + \tl_put_right:NV \l__cmd_v_arg_tl \l__cmd_tmpa_tl + \__cmd_grab_c_loop:w } -\cs_new_protected:Npn \__cmd_grab_D_long_obey_spaces_no_strip:w - #1#2#3 \__cmd_run_code: - { - \__cmd_grab_D_aux:NNnNNN #1 #2 {#3} \cs_set_protected:Npn - \__cmd_peek_meaning_remove:NTF \use_none:n +\group_begin: + \char_set_catcode_other:N \^^M % + \cs_new_protected:Npe \__cmd_grab_c_auxvi:N #1 % + { % + \exp_not:N \token_case_charcode:NnF #1 % + { % + ^^M % + { + \exp_not:N \__cmd_grab_c_auxvii: % + \exp_not:N \__cmd_grab_c_auxiv: % + }% + \c_backslash_str % + { % + \exp_not:N \__cmd_grab_c_auxvii: % + \exp_not:N \__cmd_grab_c_auxv: #1 + } % + \c_group_end_token % + { % + \tl_put_right:Nn \exp_not:N \l__cmd_tmpb_tl {#1} % + \exp_not:N \__cmd_grab_c_auxviii: % + } % + } % + { % + \tl_put_right:Nn \exp_not:N \l__cmd_tmpb_tl {#1} % + \exp_not:N \__cmd_grab_c_auxvi:N % + } % + } % +\group_end: % +\cs_new_protected:Npn \__cmd_grab_c_auxvii: + { \tl_put_right:NV \l__cmd_tmpa_tl \l__cmd_tmpb_tl } +\cs_new_protected:Npn \__cmd_grab_c_auxviii: + { + \str_if_eq:eeTF { \exp_not:V \l__cmd_tmpb_tl } { { \@currenvir } } + { \__cmd_grab_c_end:w } + { + \__cmd_grab_c_auxvii: + \__cmd_grab_c_auxv: + } + } +\group_begin: + \char_set_catcode_other:N \^^M % + \cs_new_protected:Npn \__cmd_grab_c_end:w #1 ^^M % + { % + \tl_if_blank:nF {#1} % + { % + \msg_warning:nnee { cmd } { chars-dropped-last-line } % + { \exp_not:n {#1} } % + { \exp_not:V \@currenvir } % + } % + \exp_args:NNNo \group_end: % + \tl_set:Nn \l__cmd_v_arg_tl { \l__cmd_v_arg_tl } % + \__cmd_add_arg:x % + { % + \bool_if:NTF \l__cmd_obey_spaces_bool % + { \exp_not:V } % + { \exp_args:NV \__cmd_grab_c_end:n } % + \l__cmd_v_arg_tl % + } % + \exp_args:NV \end \@currenvir % + } % +\group_end: % +\cs_new:Npn \__cmd_grab_c_end:n #1 + { + \__cmd_grab_c_end_auxi:w \q_nil #1 \q_nil + \obeyedline \obeyedline \q_nil \q_stop + } +\cs_new:Npn \__cmd_grab_c_end_auxi:w #1 \q_nil \obeyedline + { \__cmd_grab_c_end_auxii:w #1 \q_nil } +\cs_new:Npn \__cmd_grab_c_end_auxii:w \q_nil #1 \obeyedline \q_nil + { \__cmd_grab_c_end_auxiii:w #1 \q_nil } +\cs_new:Npn \__cmd_grab_c_end_auxiii:w #1 \q_nil #2 \q_stop + { \exp_not:n {#1} } +\tl_map_inline:nn { { } { _long } } + { + \tl_map_inline:nn { { } { _obey_spaces } } + { + \tl_map_inline:nn { { } { _no_strip } } + { + \tl_map_inline:nn { { } { _verb_safe } } + { + \cs_new_protected:cpe { __cmd_grab_D #1 ##1 ####1 ########1 :w } + ################1################2################3 + \__cmd_run_code: + { + \exp_not:N \__cmd_grab_D_aux:NNnNNNN + ################1 ################2 {################3} + \str_if_eq:nnTF {#1} { _long } + \cs_set_protected:Npn + \cs_set_protected_nopar:Npn + \str_if_eq:nnTF {##1} { _obey_spaces } + { \exp_not:N \__cmd_peek_meaning_remove:NTF } + { \exp_not:N \__cmd_peek_nonspace_remove:NTF } + \str_if_eq:nnTF {####1} { _no_strip } + { \exp_not:N \use_none:n } + { \exp_not:N \use_ii:nn } + \str_if_eq:nnTF {########1} { _verb_safe } + { \exp_not:N \use:n } + { \exp_not:N \use_none:n } + } + } + } + } } -\cs_new_protected:Npn \__cmd_grab_D_aux:NNnNNN #1#2#3#4#5#6 +\group_begin: + \char_set_catcode_other:N \^^M + \cs_new_protected:Npn \__cmd_grab_D_aux:NNnNNNN #1#2#3#4#5#6#7 + { + \__cmd_grab_D_aux:NNnNN #1#2 {#3} #4 #6 + #7 + { + \group_begin: + \__cmd_grab_D_verb_safe:NN #1#5 + } + #5 #1 + { + #7 { \group_end: } + \__cmd_grab_D_call:Nw #1 + } + { + #7 { \group_end: } + \__cmd_add_arg:o \c_novalue_tl + } + } +\group_end: +\cs_new_protected:Npn \__cmd_grab_D_verb_safe:NN #1#2 { - \__cmd_grab_D_aux:NNnNN #1#2 {#3} #4 #6 - #5 #1 - { \__cmd_grab_D_call:Nw #1 } - { \__cmd_add_arg:o \c_novalue_tl } + \cs_set_eq:NN \do \char_set_catcode_other:N + \dospecials + \char_set_catcode_other:N \^^M + \token_if_eq_meaning:NNT #2 \__cmd_peek_nonspace_remove:NTF + { \char_set_catcode_space:n { `\ } } + \use:c + { + char_set_catcode_ + \if_catcode:w \c_math_toggle_token #1 math_toggle \else: + \if_catcode:w ^ #1 math_superscript \else: + \if_catcode:w \c_math_subscript_token #1 math_subscript \else: + \if_catcode:w A #1 letter \else: + other \fi: \fi: \fi: \fi: + :N + } + #1 } \cs_new_protected:Npn \__cmd_grab_D_aux:NNnNN #1#2#3#4#5 { @@ -3935,6 +4164,21 @@ of this package available from CTAN} } { \__cmd_grab_v_aux_abort:n {#1} #1 } } +\IncludeInRelease{2025/06/01}{\__cmd_grab_v_aux_catcodes:}% + {Active~spaces~and~tabs} +\cs_new_protected:Npn \__cmd_grab_v_aux_catcodes: + { + \cs_set_eq:NN \do \char_set_catcode_other:N + \dospecials + \char_set_catcode_active:n { `\ } + \char_set_catcode_active:n { `\^^I } + \bool_if:NTF \l__cmd_long_bool + { \char_set_catcode_other:n { \tex_endlinechar:D } } + { \char_set_catcode_parameter:n { \tex_endlinechar:D } } + } +\EndIncludeInRelease +\IncludeInRelease{2020/10/01}{\__cmd_grab_v_aux_catcodes:}% + {Active~spaces~and~tabs} \cs_new_protected:Npn \__cmd_grab_v_aux_catcodes: { \cs_set_eq:NN \do \char_set_catcode_other:N @@ -3943,6 +4187,7 @@ of this package available from CTAN} { \char_set_catcode_other:n { \tex_endlinechar:D } } { \char_set_catcode_parameter:n { \tex_endlinechar:D } } } +\EndIncludeInRelease \cs_new_protected:Npn \__cmd_grab_v_aux_abort:n #1 { \__cmd_grab_v_group_end: @@ -3963,6 +4208,18 @@ of this package available from CTAN} \__cmd_add_arg:o \c_novalue_tl } } +\IncludeInRelease{2025-06-01}{\__cmd_grab_v_aux_put:N}% + {Use~more~std~catcodes} +\cs_new_protected:Npn \__cmd_grab_v_aux_put:N #1 + { + \tl_put_right:Nx \l__cmd_v_arg_tl + { + \int_compare:nNnTF {`#1} = \tex_endlinechar:D + { \exp_not:N \obeyedline } + { \exp_not:N #1 } + } + } +\EndIncludeInRelease \IncludeInRelease{2024/06/01}{\__cmd_grab_v_aux_put:N}% {Endlines~as~\obeyedline} \cs_new_protected:Npn \__cmd_grab_v_aux_put:N #1 @@ -4543,10 +4800,10 @@ of this package available from CTAN} } } \msg_new:nnnn { cmd } { arg-after-body } - { Argument~type~'b'~must~be~last~in~#1. } + { Argument~type~'#1'~must~be~last~in~#2. } { - The~'b'~argument~type~must~come~last~but~it~is~followed~ - by~'#2'~in~the~argument~specification.~This~is~not~allowed. + The~'#1'~argument~type~must~come~last~but~it~is~followed~ + by~'#3'~in~the~argument~specification.~This~is~not~allowed. \c__cmd_ignore_def_tl } \msg_new:nnnn { cmd } { bad-arg-spec } @@ -4570,6 +4827,18 @@ of this package available from CTAN} with~a~command~that~was~never~defined. \c__cmd_ignore_def_tl } +\msg_new:nnnn { cmd } { chars-dropped-first-line } + { Characters~'#1'~dropped~on~first~line~of~#2~environment. } + { + LaTeX~was~collecting~a~verbatim-like~environment,~and~the~characters~ + '#1'~were~found~after~'\begin{#2}~on~the~first~line:~this~is~not~supported. + } +\msg_new:nnnn { cmd } { chars-dropped-last-line } + { Characters~'#1'~dropped~after~end~of~#2~environment. } + { + LaTeX~was~collecting~a~verbatim-like~environment,~and~the~characters~ + '#1'~were~found~after~\end{#2}~on~the~last~line:~this~is~not~supported. + } \msg_new:nnnn { cmd } { env-already-defined } { Environment~'#1'~already~defined. } { @@ -4990,7 +5259,7 @@ of this package available from CTAN} \cs_new_eq:NN \SplitArgument \__cmd_split_argument:nnn \cs_new_eq:NN \SplitList \__cmd_split_list:nn \cs_new_eq:NN \TrimSpaces \__cmd_trim_spaces:n -\cs_new_eq:NN \ProcessList \tl_map_function:nN +\cs_new_eq:NN \ProcessList \tl_map_tokens:nn \cs_gset_eq:NN \__kernel_chk_if_free_cs:N \__cmd_chk_if_free_cs:N \cs_undefine:N \__cmd_chk_if_free_cs:N @@ -5532,10 +5801,11 @@ of this package available from CTAN} } \cs_new_protected:Npn \__hook_hook_gput_code_do:nnn #1 #2 #3 { - \__hook_debug:n{\iow_term:x{****~ Add~ to~ + \__hook_debug:n{\iow_term:x{[lthooks]~ Add~ to~ \__hook_if_usable:nF {#1} { undeclared~ } - hook~ #1~ (#2) - \on@line\space <-~ \tl_to_str:n{#3}} } + hook~ '#1'~ (#2) \on@line + ^^J [lthooks] \@spaces + <-~ \tl_to_str:n{#3}} } \str_if_eq:nnTF {#2} { top-level } { \str_if_eq:eeTF { top-level } { \__hook_currname_or_default: } @@ -5677,7 +5947,7 @@ of this package available from CTAN} \EndIncludeInRelease \IncludeInRelease{2021/11/15} {\__hook_try_declaring_generic_hook:nnn} - {Standardise~generic~hook~names} + {Standardize~generic~hook~names} \cs_gset_protected:Npn \__hook_try_declaring_generic_hook:nnn #1 { \__hook_try_declaring_generic_hook:wnTF #1 / / / \scan_stop: @@ -5698,7 +5968,7 @@ of this package available from CTAN} \EndIncludeInRelease \IncludeInRelease{2020/10/01} {\__hook_try_declaring_generic_hook:nnn} - {Standardise~generic~hook~names} + {Standardize~generic~hook~names} \cs_new_protected:Npn \__hook_try_declaring_generic_hook:nnn #1 { @@ -5790,7 +6060,7 @@ of this package available from CTAN} \EndIncludeInRelease \IncludeInRelease{2021/11/15} {\__hook_try_declaring_generic_hook:wn} - {Standardise~generic~hook~names} + {Standardize~generic~hook~names} \prg_new_protected_conditional:Npnn \__hook_try_declaring_generic_hook:wn #1 / #2 / #3 / #4 \scan_stop: #5 { TF } @@ -5878,10 +6148,10 @@ of this package available from CTAN} } \EndIncludeInRelease \IncludeInRelease{2021/11/15}{\__hook_if_file_hook:w} - {Standardise~generic~hook~names} + {Standardize~generic~hook~names} \EndIncludeInRelease \IncludeInRelease{2020/10/01}{\__hook_if_file_hook:w} - {Standardise~generic~hook~names} + {Standardize~generic~hook~names} \prg_new_conditional:Npnn \__hook_if_file_hook:w #1 / #2 / #3 \s__hook_mark { TF } { @@ -5901,10 +6171,10 @@ of this package available from CTAN} } \EndIncludeInRelease \IncludeInRelease{2021/11/15}{\__hook_file_hook_normalize:n} - {Standardise~generic~hook~names} + {Standardize~generic~hook~names} \EndIncludeInRelease \IncludeInRelease{2020/10/01}{\__hook_file_hook_normalize:n} - {Standardise~generic~hook~names} + {Standardize~generic~hook~names} \cs_new:Npn \__hook_file_hook_normalize:n #1 { \__hook_strip_double_slash:n {#1} } \cs_new:Npn \__hook_strip_double_slash:n #1 @@ -5917,7 +6187,7 @@ of this package available from CTAN} } \EndIncludeInRelease \IncludeInRelease{2021/11/15}{\c__hook_generics_prop} - {Standardise~generic~hook~names} + {Standardize~generic~hook~names} \clist_map_inline:nn { cmd , env , file , package , class , include } { \tl_const:cn { c__hook_generic_#1/./before_tl } { + } @@ -5935,15 +6205,15 @@ of this package available from CTAN} \tl_const:cn { c__hook_deprecated_include/./end_tl } { } \EndIncludeInRelease \IncludeInRelease{2020/10/01}{\c__hook_generics_prop} - {Standardise~generic~hook~names} + {Standardize~generic~hook~names} \prop_const_from_keyval:Nn \c__hook_generics_prop {cmd=,env=,file=,package=,class=,include=} \EndIncludeInRelease \IncludeInRelease{2021/11/15}{\c__hook_generics_reversed_ii_prop} - {Standardise~generic~hook~names} + {Standardize~generic~hook~names} \EndIncludeInRelease \IncludeInRelease{2020/10/01}{\c__hook_generics_reversed_ii_prop} - {Standardise~generic~hook~names} + {Standardize~generic~hook~names} \prop_const_from_keyval:Nn \c__hook_generics_reversed_ii_prop {after=,end=} \prop_const_from_keyval:Nn @@ -6437,7 +6707,7 @@ of this package available from CTAN} } \__hook_debug:n { - \iow_term:x { ^^J All~initialized~(non-empty)~hooks: } + \iow_term:x { ^^J[lthooks]~ All~initialized~(non-empty)~hooks: } \prop_map_inline:Nn \g__hook_used_prop { \iow_term:x @@ -6477,7 +6747,7 @@ of this package available from CTAN} \cs_new_protected:Npn \__hook_initialize_hook_code:n #1 { \__hook_debug:n - { \iow_term:x { ^^J Update~code~for~hook~'#1' \on@line :^^J } } + { \iow_term:x { ^^J[lthooks]~ Update~code~for~hook~'#1' \on@line :^^J } } \__hook_include_legacy_code_chunk:n {#1} \__hook_if_usable:nT {#1} { @@ -6597,7 +6867,7 @@ of this package available from CTAN} \prop_get:NVN \l__hook_work_prop \l__hook_front_tl \l__hook_return_tl \exp_args:NNV \__hook_tl_gput:Nn #1 \l__hook_return_tl \__hook_clist_gput:NV #2 \l__hook_front_tl - \__hook_debug:n{ \iow_term:x{Handled~ code~ for~ \l__hook_front_tl} } + \__hook_debug:n{ \iow_term:x{[lthooks]~ Handled~ code~ for~ \l__hook_front_tl} } \seq_map_inline:cn { \__hook_seq_csname:n { \l__hook_front_tl } } { \tl_set:cx { \__hook_tl_csname:n {##1} } @@ -7126,12 +7396,28 @@ of this package available from CTAN} { \__hook_replacing_args_false: \__hook_normalize_hook_args:Nn \__hook_gput_next_code:nn {#1} {#2} + \__hook_debug:n{\iow_term:x{[lthooks]~ Add~ to~ + \__hook_if_usable:nF {#1} { undeclared~ } + hook~ '#1'~ ( next~ invocation~ only ) + \on@line + ^^J [lthooks] \@spaces + <-~ \tl_to_str:n{#2} + } + } \__hook_replacing_args_reset: } \cs_new_protected:Npn \hook_gput_next_code_with_args:nn #1 #2 { \__hook_replacing_args_true: \__hook_normalize_hook_args:Nn \__hook_gput_next_code:nn {#1} {#2} + \__hook_debug:n{\iow_term:x{[lthooks]~ Add~ to~ + \__hook_if_usable:nF {#1} { undeclared~ } + hook~ '#1'~ ( next~ invocation~ only ) + \on@line + ^^J [lthooks] \@spaces + <-~ \tl_to_str:n{#2} + } + } \__hook_replacing_args_reset: } \EndIncludeInRelease @@ -7217,7 +7503,7 @@ of this package available from CTAN} } \EndIncludeInRelease \IncludeInRelease{2021/11/15}{\hook_use:n} - {Standardise~generic~hook~names} + {Standardize~generic~hook~names} \cs_new_protected:Npn \hook_use:n #1 { \tl_if_exist:cT { __hook~#1 } @@ -7237,7 +7523,7 @@ of this package available from CTAN} \cs_new:Npn \hook_use:nnw #1 { } \EndIncludeInRelease \IncludeInRelease{2020/10/01}{\hook_use:n} - {Standardise~generic~hook~names} + {Standardize~generic~hook~names} \cs_new_protected:Npn \hook_use:n #1 { \tl_if_exist:cTF { __hook~#1 } @@ -7304,10 +7590,10 @@ of this package available from CTAN} \cs_undefine:N \__hook_post_initialization_defs: \EndIncludeInRelease \IncludeInRelease{2021/11/15}{\__hook_use:wn} - {Standardise~generic~hook~names} + {Standardize~generic~hook~names} \EndIncludeInRelease \IncludeInRelease{2020/10/01}{\__hook_use:wn} - {Standardise~generic~hook~names} + {Standardize~generic~hook~names} \cs_new:Npn \__hook_use:wn #1 / #2 \s__hook_mark #3 { \str_if_eq:nnTF {#1} { file } @@ -7950,7 +8236,7 @@ of this package available from CTAN} \ExplSyntaxOff %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% From File: ltcmdhooks.dtx -%% Copyright (C) 2020-2024 +%% Copyright (C) 2020-2025 %% Frank Mittelbach, Phelype Oleinik, The LaTeX Project %%% From File: lthooks.dtx \ExplSyntaxOn @@ -7971,6 +8257,23 @@ of this package available from CTAN} \cs_new_protected:Npn \__hook_patch_debug:x #1 { \__hook_debug:n { \iow_term:x { [lthooks]~#1 } } } \cs_generate_variant:Nn \tl_rescan:nn { nV } +\IncludeInRelease{2024/12/22}{\__hook_try_put_cmd_hook:n}% + {Don't~define~command} +\cs_new_protected:Npn \__hook_try_put_cmd_hook:n #1 + { \__hook_try_put_cmd_hook:w #1 / / / \s__hook_mark {#1} } +\cs_new_protected:Npn \__hook_try_put_cmd_hook:w + #1 / #2 / #3 / #4 \s__hook_mark #5 + { + \__hook_debug:n { \iow_term:n { ->~Adding~cmd~hook~to~'#2'~(#3): } } + \group_begin: + \exp_after:wN + \group_end: + \exp_after:wN + \__hook_patch_cmd_or_delay:Nnn + \cs:w #2\cs_end: + {#2} {#3} + } +\EndIncludeInRelease \IncludeInRelease{2021/11/15}{\__hook_try_put_cmd_hook:n}% {Standardise~generic~hook~names} \cs_new_protected:Npn \__hook_try_put_cmd_hook:n #1 @@ -8587,7 +8890,7 @@ of this package available from CTAN} { \iow_term:x { ^^J [Sockets]~ ==>~ ##1} } } } \cs_new_protected:Npn \socket_new:nn #1 #2 { - \str_if_exist:cTF { l__socket_#1_plug_str } + \socket_if_exist:nTF {#1} { \msg_error:nnn { socket } { already-declared } {#1} } @@ -8612,9 +8915,14 @@ of this package available from CTAN} } } } +\prg_new_conditional:Npnn \socket_if_exist:n #1 { p , T , F , TF } + { \str_if_exist:cTF { l__socket_#1_plug_str } + \prg_return_true: + \prg_return_false: + } \cs_new_protected:Npn \socket_log:n #1 { \typeout{ Socket~ #1:} - \str_if_exist:cTF { l__socket_#1_plug_str } + \socket_if_exist:nTF {#1} { \typeout{ \@spaces number~ of~ inputs~ =~ \int_use:c { c__socket_#1_args_int } } @@ -8633,9 +8941,9 @@ of this package available from CTAN} } \cs_new_protected:Npn \socket_show:n #1 {\socket_log:n {#1} \errmessage{}} \cs_new_protected:Npn \socket_new_plug:nnn #1#2#3 { - \str_if_exist:cTF { l__socket_#1_plug_str } + \socket_if_exist:nTF {#1} { - \cs_if_exist:cTF { __socket_#1_plug_#2:w } + \socket_if_plug_exist:nnTF {#1} {#2} { \msg_error:nnnn { socket } { plug-already-declared } {#1} {#2} } @@ -8650,14 +8958,12 @@ of this package available from CTAN} { Plug~ '#2'~ for~ socket~ '#1'~ declared. } } } - { - \msg_error:nnn { socket } { undeclared } {#1} - } + { \msg_error:nnn { socket } { undeclared } {#1} } } \cs_new_protected:Npn \socket_set_plug:nnn #1#2#3 { - \str_if_exist:cTF { l__socket_#1_plug_str } + \socket_if_exist:nTF {#1} { - \cs_if_exist:cTF { __socket_#1_plug_#2:w } + \socket_if_plug_exist:nnTF {#1} {#2} { \cs_generate_from_arg_count:cNnn { __socket_#1_plug_#2:w } @@ -8671,14 +8977,17 @@ of this package available from CTAN} \msg_error:nnnn { socket } { plug-undeclared } {#1} {#2} } } - { - \msg_error:nnn { socket } { undeclared } {#1} - } + { \msg_error:nnn { socket } { undeclared } {#1} } } +\prg_new_conditional:Npnn \socket_if_plug_exist:nn #1#2 { p , T , F , TF } + { \cs_if_exist:cTF { __socket_#1_plug_#2:w } + \prg_return_true: + \prg_return_false: + } \cs_new_protected:Npn \socket_assign_plug:nn #1 #2 { - \str_if_exist:cTF { l__socket_#1_plug_str } + \socket_if_exist:nTF {#1} { - \cs_if_exist:cTF { __socket_#1_plug_#2:w } + \socket_if_plug_exist:nnTF {#1} {#2} { \__socket_debug_term:n { Replacing~ plug~ '\str_use:c { l__socket_#1_plug_str }'~ @@ -8691,6 +9000,12 @@ of this package available from CTAN} } { \msg_error:nnn { socket } { undeclared } {#1} } } +\prg_new_conditional:Npnn \socket_if_plug_assigned:nn #1#2 { p , T , F , TF } + { \exp_args:Ne + \str_if_eq:nvTF {#2} { l__socket_#1_plug_str } + \prg_return_true: + \prg_return_false: + } \cs_new_protected:Npn \socket_use:nw #1 { \__socket_debug_term:n { Socket~ '#1'~ containing~ plug~ @@ -8738,6 +9053,15 @@ of this package available from CTAN} \cs_new_eq:NN \UseSocket \socket_use:nw \cs_new_eq:NN \DebugSocketsOn \socket_debug_on: \cs_new_eq:NN \DebugSocketsOff \socket_debug_off: +\cs_new_eq:NN \IfSocketExistsTF \socket_if_exist:nTF +\cs_new_eq:NN \IfSocketExistsT \socket_if_exist:nT +\cs_new_eq:NN \IfSocketExistsF \socket_if_exist:nF +\cs_new_eq:NN \IfSocketPlugExistsTF \socket_if_plug_exist:nnTF +\cs_new_eq:NN \IfSocketPlugExistsT \socket_if_plug_exist:nnT +\cs_new_eq:NN \IfSocketPlugExistsF \socket_if_plug_exist:nnF +\cs_new_eq:NN \IfSocketPlugAssignedTF \socket_if_plug_assigned:nnTF +\cs_new_eq:NN \IfSocketPlugAssignedT \socket_if_plug_assigned:nnT +\cs_new_eq:NN \IfSocketPlugAssignedF \socket_if_plug_assigned:nnF \IncludeInRelease{0000/00/00}{ltsockets} {The~socket~management~(undo)}% @@ -8752,10 +9076,21 @@ of this package available from CTAN} \let \DebugSocketsOn \@undefined \let \DebugSocketsOff \@undefined +\let \IfSocketExistsTF \@undefined +\let \IfSocketExistsT \@undefined +\let \IfSocketExistsF \@undefined +\let \IfSocketPlugExistsTF \@undefined +\let \IfSocketPlugExistsT \@undefined +\let \IfSocketPlugExistsF \@undefined +\let \IfSocketPlugAssignedTF \@undefined +\let \IfSocketPlugAssignedT \@undefined +\let \IfSocketPlugAssignedF \@undefined + \EndModuleRelease \ExplSyntaxOff %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%% From File: lttemplates.dtx + \ExplSyntaxOn \NewModuleRelease{2024/06/01}{lttemplates} {Prototype~document~commands}% @@ -9133,8 +9468,15 @@ of this package available from CTAN} \__template_if_keys_exist:nnT {#1} {#2} { \__template_store_key_implementation:nnn {#1} {#2} {#4} - \regex_match:nnTF { \c { AssignTemplateKeys } } {#5} - { \__template_declare_template_code:nnnn {#1} {#2} {#3} {#5} } + \str_if_in:nnTF {#5} { AssignTemplateKeys } + { + \regex_match:nnTF { \c { AssignTemplateKeys } } {#5} + { \__template_declare_template_code:nnnn {#1} {#2} {#3} {#5} } + { + \__template_declare_template_code:nnnn + {#1} {#2} {#3} { \AssignTemplateKeys #5 } + } + } { \__template_declare_template_code:nnnn {#1} {#2} {#3} { \AssignTemplateKeys #5 } @@ -9944,8 +10286,24 @@ of this package available from CTAN} { \__template_if_instance_exist:nnF {#1} {#2} } \cs_new_protected:Npn \KeyValue #1 {#1} \cs_new_protected:Npn \AssignTemplateKeys { \__template_assignments_pop: } +\cs_new_protected:Npn \SetKnownTemplateKeys #1#2#3 + { + \tl_if_empty:oTF {#3} + { + \tl_set_eq:NN \UnusedTemplateKeys \c_empty_tl + } + { + \keys_set_known:noN { template / #1 / #2 } {#3} \UnusedTemplateKeys + } + } \cs_new_protected:Npn \SetTemplateKeys #1#2#3 - { \keys_set_known:nnN { template / #1 / #2 } {#3} \l__template_tmp_clist } + { + \tl_if_empty:oF {#3} + { + \keys_set:no { template / #1 / #2 } {#3} + } + } +\tl_new:N \UnusedTemplateKeys \IncludeInRelease{0000/00/00}{lttemplates}% {Prototype~document~commands}% @@ -9997,7 +10355,7 @@ of this package available from CTAN} \EndIncludeInRelease %%% From File: ltpar.dtx %% File: ltpara.dtx -%% Copyright (C) 2020-2024 +%% Copyright (C) 2020-2025 %% Frank Mittelbach, The LaTeX Project %%% From File: ltpara.dtx @@ -10186,7 +10544,7 @@ of this package available from CTAN} \ExplSyntaxOff %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% File: ltmeta.dtx -%% Copyright (C) 2021-2024 +%% Copyright (C) 2021-2025 %% Frank Mittelbach, The LaTeX Project %%% From File: ltmeta.dtx \NewModuleRelease{2022/06/01}{ltmeta} @@ -11291,8 +11649,8 @@ of this package available from CTAN} \expandafter\let\expandafter\reserved@a\csname#2\string#1\endcsname \ifx\reserved@a\relax \DeclareTextCommand#1{#2}{% - \@latex@error{\string#1 undeclared in encoding #2}\@eha}% - \@latex@info{Composite with undeclared \string#1 in encoding #2}% + \@latex@error{Text composite \string#1 undeclared in encoding #2}\@eha}% + \@enc@info{Text composite with undeclared \string#1 in encoding #2}% \expandafter\let\expandafter\reserved@a\csname#2\string#1\endcsname \fi \expandafter\expandafter\expandafter\ifx @@ -11407,7 +11765,6 @@ of this package available from CTAN} \EndIncludeInRelease %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%% From File: ltcounts.dtx - \IncludeInRelease{2015/01/01}{\@stpelt} {Reset nested counters}% \def\@stpelt#1{\global\csname c@#1\endcsname \m@ne\stepcounter{#1}}% @@ -11478,13 +11835,15 @@ of this package available from CTAN} \expandafter\xdef\csname cl@#2\endcsname {\csname cl@#2\endcsname}% \endgroup}} - +\begingroup\catcode`\*=11 \lowercase{\endgroup \def\@ifbothcounters#1#2#3{% + \begingroup\let\c@*\@undefined \@ifundefined{c@#1}{\@nocounterr{#1}}% {% else counter is defined \@ifundefined{c@#2}{\@nocounterr{#2}}% {% else both counter and within are defined - #3}}} + #3}}% + \endgroup}} \EndIncludeInRelease \IncludeInRelease{0000-00-00} {\@removefromreset}{Add interfaces}% @@ -11657,6 +12016,46 @@ of this package available from CTAN} \fi } \EndIncludeInRelease +\IncludeInRelease{2025/06/01}% + {\CheckEncodingSubset}{preload .fd file}% +\def\CheckEncodingSubset#1#2#3#4#5{% + \expandafter\ifx\csname #2:\f@family\endcsname\relax + \LoadFontDefinitionFile{#2}\f@family + \fi + \ifnum #4>% + \expandafter\ifx\csname #2:\f@family\endcsname\relax + 0\csname #2:?\endcsname + \else + \csname #2:\f@family\endcsname + \fi + \relax + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi + {#1{#2}}{#3}% + #5% +} +\EndIncludeInRelease +\IncludeInRelease{0000/00/00}% + {\CheckEncodingSubset}{preload .fd file}% + +\def\CheckEncodingSubset#1#2#3#4#5{% + \ifnum #4>% + \expandafter\ifx\csname #2:\f@family\endcsname\relax + 0\csname #2:?\endcsname + \else + \csname #2:\f@family\endcsname + \fi + \relax + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi + {#1{#2}}{#3}% + #5% +} +\EndIncludeInRelease \IncludeInRelease{2015/01/01}{\@DeclareMathSizes}% {Arbitrary units in \DeclareMathSizes}% \def\@DeclareMathSizes #1#2#3#4#5{% @@ -11728,11 +12127,13 @@ of this package available from CTAN} {\frozen@everydisplay}{Handle spaces after math}% \frozen@everydisplay = {% \aftergroup\@ignoretrue \aftergroup\ignorespaces + \advance\@math@level\@ne \check@mathfonts \the\everydisplay} \frozen@everymath = {% \aftergroup\@ignorefalse + \advance\@math@level\@ne \check@mathfonts \the\everymath} \EndIncludeInRelease @@ -11968,388 +12369,2775 @@ of this package available from CTAN} \EndIncludeInRelease %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%% From File: ltfssaxes.dtx -%% Copyright (C) 2019-2020 Frank Mittelbach +%% Copyright (C) 2019-2020 Frank Mittelbach (initial implementation) +\IncludeInRelease{2025/06/01}% + {\DeclareFontSeriesChangeRule}{Series change rules}% +\def\DeclareFontSeriesChangeRule#1#2#3#4{% + \@namedef{series@#1@#2}{{#3}{#4}}} +\DeclareFontSeriesChangeRule {uluc}{ul} {uluc} {} +\DeclareFontSeriesChangeRule {uluc}{el} {eluc} {} +\DeclareFontSeriesChangeRule {uluc}{l} {luc} {} +\DeclareFontSeriesChangeRule {uluc}{sl} {sluc} {} +\DeclareFontSeriesChangeRule {uluc}{sb} {sbuc} {buc} +\DeclareFontSeriesChangeRule {uluc}{b} {buc} {} +\DeclareFontSeriesChangeRule {uluc}{eb} {ebuc} {buc} +\DeclareFontSeriesChangeRule {uluc}{ub} {ubuc} {buc} +\DeclareFontSeriesChangeRule {uluc}{uc} {uluc} {} +\DeclareFontSeriesChangeRule {uluc}{ec} {ulec} {} +\DeclareFontSeriesChangeRule {uluc}{c} {ulc} {} +\DeclareFontSeriesChangeRule {uluc}{sc} {ulsc} {} +\DeclareFontSeriesChangeRule {uluc}{sx} {ulsx} {} +\DeclareFontSeriesChangeRule {uluc}{x} {ulx} {} +\DeclareFontSeriesChangeRule {uluc}{ex} {ulex} {} +\DeclareFontSeriesChangeRule {uluc}{ux} {ulux} {} +\DeclareFontSeriesChangeRule {ulec}{ul} {ulec} {} +\DeclareFontSeriesChangeRule {ulec}{el} {elec} {} +\DeclareFontSeriesChangeRule {ulec}{l} {lec} {} +\DeclareFontSeriesChangeRule {ulec}{sl} {slec} {} +\DeclareFontSeriesChangeRule {ulec}{sb} {sbec} {bec} +\DeclareFontSeriesChangeRule {ulec}{b} {bec} {} +\DeclareFontSeriesChangeRule {ulec}{eb} {ebec} {bec} +\DeclareFontSeriesChangeRule {ulec}{ub} {ubec} {bec} +\DeclareFontSeriesChangeRule {ulec}{uc} {uluc} {} +\DeclareFontSeriesChangeRule {ulec}{ec} {ulec} {} +\DeclareFontSeriesChangeRule {ulec}{c} {ulc} {} +\DeclareFontSeriesChangeRule {ulec}{sc} {ulsc} {} +\DeclareFontSeriesChangeRule {ulec}{sx} {ulsx} {} +\DeclareFontSeriesChangeRule {ulec}{x} {ulx} {} +\DeclareFontSeriesChangeRule {ulec}{ex} {ulex} {} +\DeclareFontSeriesChangeRule {ulec}{ux} {ulux} {} +\DeclareFontSeriesChangeRule {ulc}{ul} {ulc} {} +\DeclareFontSeriesChangeRule {ulc}{el} {elc} {} +\DeclareFontSeriesChangeRule {ulc}{l} {lc} {} +\DeclareFontSeriesChangeRule {ulc}{sl} {slc} {} +\DeclareFontSeriesChangeRule {ulc}{sb} {sbc} {bc} +\DeclareFontSeriesChangeRule {ulc}{b} {bc} {} +\DeclareFontSeriesChangeRule {ulc}{eb} {ebc} {bc} +\DeclareFontSeriesChangeRule {ulc}{ub} {ubc} {bc} +\DeclareFontSeriesChangeRule {ulc}{uc} {uluc} {} +\DeclareFontSeriesChangeRule {ulc}{ec} {ulec} {} +\DeclareFontSeriesChangeRule {ulc}{c} {ulc} {} +\DeclareFontSeriesChangeRule {ulc}{sc} {ulsc} {} +\DeclareFontSeriesChangeRule {ulc}{sx} {ulsx} {} +\DeclareFontSeriesChangeRule {ulc}{x} {ulx} {} +\DeclareFontSeriesChangeRule {ulc}{ex} {ulex} {} +\DeclareFontSeriesChangeRule {ulc}{ux} {ulux} {} +\DeclareFontSeriesChangeRule {ulsc}{ul} {ulsc} {} +\DeclareFontSeriesChangeRule {ulsc}{el} {elsc} {} +\DeclareFontSeriesChangeRule {ulsc}{l} {lsc} {} +\DeclareFontSeriesChangeRule {ulsc}{sl} {slsc} {} +\DeclareFontSeriesChangeRule {ulsc}{sb} {sbsc} {bsc} +\DeclareFontSeriesChangeRule {ulsc}{b} {bsc} {} +\DeclareFontSeriesChangeRule {ulsc}{eb} {ebsc} {bsc} +\DeclareFontSeriesChangeRule {ulsc}{ub} {ubsc} {bsc} +\DeclareFontSeriesChangeRule {ulsc}{uc} {uluc} {} +\DeclareFontSeriesChangeRule {ulsc}{ec} {ulec} {} +\DeclareFontSeriesChangeRule {ulsc}{c} {ulc} {} +\DeclareFontSeriesChangeRule {ulsc}{sc} {ulsc} {} +\DeclareFontSeriesChangeRule {ulsc}{sx} {ulsx} {} +\DeclareFontSeriesChangeRule {ulsc}{x} {ulx} {} +\DeclareFontSeriesChangeRule {ulsc}{ex} {ulex} {} +\DeclareFontSeriesChangeRule {ulsc}{ux} {ulux} {} +\DeclareFontSeriesChangeRule {ul}{uc} {uluc} {} +\DeclareFontSeriesChangeRule {ul}{ec} {ulec} {} +\DeclareFontSeriesChangeRule {ul}{c} {ulc} {} +\DeclareFontSeriesChangeRule {ul}{sc} {ulsc} {} +\DeclareFontSeriesChangeRule {ul}{sx} {ulsx} {} +\DeclareFontSeriesChangeRule {ul}{x} {ulx} {} +\DeclareFontSeriesChangeRule {ul}{ex} {ulex} {} +\DeclareFontSeriesChangeRule {ul}{ux} {ulux} {} +\DeclareFontSeriesChangeRule {ul}{sb} {sb} {b} +\DeclareFontSeriesChangeRule {ul}{eb} {eb} {b} +\DeclareFontSeriesChangeRule {ul}{ub} {ub} {b} +\DeclareFontSeriesChangeRule {ulsx}{ul} {ulsx} {} +\DeclareFontSeriesChangeRule {ulsx}{el} {elsx} {} +\DeclareFontSeriesChangeRule {ulsx}{l} {lsx} {} +\DeclareFontSeriesChangeRule {ulsx}{sl} {slsx} {} +\DeclareFontSeriesChangeRule {ulsx}{sb} {sbsx} {bsx} +\DeclareFontSeriesChangeRule {ulsx}{b} {bsx} {} +\DeclareFontSeriesChangeRule {ulsx}{eb} {ebsx} {bsx} +\DeclareFontSeriesChangeRule {ulsx}{ub} {ubsx} {bsx} +\DeclareFontSeriesChangeRule {ulsx}{uc} {uluc} {} +\DeclareFontSeriesChangeRule {ulsx}{ec} {ulec} {} +\DeclareFontSeriesChangeRule {ulsx}{c} {ulc} {} +\DeclareFontSeriesChangeRule {ulsx}{sc} {ulsc} {} +\DeclareFontSeriesChangeRule {ulsx}{sx} {ulsx} {} +\DeclareFontSeriesChangeRule {ulsx}{x} {ulx} {} +\DeclareFontSeriesChangeRule {ulsx}{ex} {ulex} {} +\DeclareFontSeriesChangeRule {ulsx}{ux} {ulux} {} +\DeclareFontSeriesChangeRule {ulx}{ul} {ulx} {} +\DeclareFontSeriesChangeRule {ulx}{el} {elx} {} +\DeclareFontSeriesChangeRule {ulx}{l} {lx} {} +\DeclareFontSeriesChangeRule {ulx}{sl} {slx} {} +\DeclareFontSeriesChangeRule {ulx}{sb} {sbx} {bx} +\DeclareFontSeriesChangeRule {ulx}{b} {bx} {} +\DeclareFontSeriesChangeRule {ulx}{eb} {ebx} {bx} +\DeclareFontSeriesChangeRule {ulx}{ub} {ubx} {bx} +\DeclareFontSeriesChangeRule {ulx}{uc} {uluc} {} +\DeclareFontSeriesChangeRule {ulx}{ec} {ulec} {} +\DeclareFontSeriesChangeRule {ulx}{c} {ulc} {} +\DeclareFontSeriesChangeRule {ulx}{sc} {ulsc} {} +\DeclareFontSeriesChangeRule {ulx}{sx} {ulsx} {} +\DeclareFontSeriesChangeRule {ulx}{x} {ulx} {} +\DeclareFontSeriesChangeRule {ulx}{ex} {ulex} {} +\DeclareFontSeriesChangeRule {ulx}{ux} {ulux} {} +\DeclareFontSeriesChangeRule {ulex}{ul} {ulex} {} +\DeclareFontSeriesChangeRule {ulex}{el} {elex} {} +\DeclareFontSeriesChangeRule {ulex}{l} {lex} {} +\DeclareFontSeriesChangeRule {ulex}{sl} {slex} {} +\DeclareFontSeriesChangeRule {ulex}{sb} {sbex} {bex} +\DeclareFontSeriesChangeRule {ulex}{b} {bex} {} +\DeclareFontSeriesChangeRule {ulex}{eb} {ebex} {bex} +\DeclareFontSeriesChangeRule {ulex}{ub} {ubex} {bex} +\DeclareFontSeriesChangeRule {ulex}{uc} {uluc} {} +\DeclareFontSeriesChangeRule {ulex}{ec} {ulec} {} +\DeclareFontSeriesChangeRule {ulex}{c} {ulc} {} +\DeclareFontSeriesChangeRule {ulex}{sc} {ulsc} {} +\DeclareFontSeriesChangeRule {ulex}{sx} {ulsx} {} +\DeclareFontSeriesChangeRule {ulex}{x} {ulx} {} +\DeclareFontSeriesChangeRule {ulex}{ex} {ulex} {} +\DeclareFontSeriesChangeRule {ulex}{ux} {ulux} {} +\DeclareFontSeriesChangeRule {ulux}{ul} {ulux} {} +\DeclareFontSeriesChangeRule {ulux}{el} {elux} {} +\DeclareFontSeriesChangeRule {ulux}{l} {lux} {} +\DeclareFontSeriesChangeRule {ulux}{sl} {slux} {} +\DeclareFontSeriesChangeRule {ulux}{sb} {sbux} {bux} +\DeclareFontSeriesChangeRule {ulux}{b} {bux} {} +\DeclareFontSeriesChangeRule {ulux}{eb} {ebux} {bux} +\DeclareFontSeriesChangeRule {ulux}{ub} {ubux} {bux} +\DeclareFontSeriesChangeRule {ulux}{uc} {uluc} {} +\DeclareFontSeriesChangeRule {ulux}{ec} {ulec} {} +\DeclareFontSeriesChangeRule {ulux}{c} {ulc} {} +\DeclareFontSeriesChangeRule {ulux}{sc} {ulsc} {} +\DeclareFontSeriesChangeRule {ulux}{sx} {ulsx} {} +\DeclareFontSeriesChangeRule {ulux}{x} {ulx} {} +\DeclareFontSeriesChangeRule {ulux}{ex} {ulex} {} +\DeclareFontSeriesChangeRule {ulux}{ux} {ulux} {} +\DeclareFontSeriesChangeRule {eluc}{ul} {uluc} {} +\DeclareFontSeriesChangeRule {eluc}{el} {eluc} {} +\DeclareFontSeriesChangeRule {eluc}{l} {luc} {} +\DeclareFontSeriesChangeRule {eluc}{sl} {sluc} {} +\DeclareFontSeriesChangeRule {eluc}{sb} {sbuc} {buc} +\DeclareFontSeriesChangeRule {eluc}{b} {buc} {} +\DeclareFontSeriesChangeRule {eluc}{eb} {ebuc} {buc} +\DeclareFontSeriesChangeRule {eluc}{ub} {ubuc} {buc} +\DeclareFontSeriesChangeRule {eluc}{uc} {eluc} {} +\DeclareFontSeriesChangeRule {eluc}{ec} {elec} {} +\DeclareFontSeriesChangeRule {eluc}{c} {elc} {} +\DeclareFontSeriesChangeRule {eluc}{sc} {elsc} {} +\DeclareFontSeriesChangeRule {eluc}{sx} {elsx} {} +\DeclareFontSeriesChangeRule {eluc}{x} {elx} {} +\DeclareFontSeriesChangeRule {eluc}{ex} {elex} {} +\DeclareFontSeriesChangeRule {eluc}{ux} {elux} {} +\DeclareFontSeriesChangeRule {elec}{ul} {ulec} {} +\DeclareFontSeriesChangeRule {elec}{el} {elec} {} +\DeclareFontSeriesChangeRule {elec}{l} {lec} {} +\DeclareFontSeriesChangeRule {elec}{sl} {slec} {} +\DeclareFontSeriesChangeRule {elec}{sb} {sbec} {bec} +\DeclareFontSeriesChangeRule {elec}{b} {bec} {} +\DeclareFontSeriesChangeRule {elec}{eb} {ebec} {bec} +\DeclareFontSeriesChangeRule {elec}{ub} {ubec} {bec} +\DeclareFontSeriesChangeRule {elec}{uc} {eluc} {} +\DeclareFontSeriesChangeRule {elec}{ec} {elec} {} +\DeclareFontSeriesChangeRule {elec}{c} {elc} {} +\DeclareFontSeriesChangeRule {elec}{sc} {elsc} {} +\DeclareFontSeriesChangeRule {elec}{sx} {elsx} {} +\DeclareFontSeriesChangeRule {elec}{x} {elx} {} +\DeclareFontSeriesChangeRule {elec}{ex} {elex} {} +\DeclareFontSeriesChangeRule {elec}{ux} {elux} {} +\DeclareFontSeriesChangeRule {elc}{ul} {ulc} {} +\DeclareFontSeriesChangeRule {elc}{el} {elc} {} +\DeclareFontSeriesChangeRule {elc}{l} {lc} {} +\DeclareFontSeriesChangeRule {elc}{sl} {slc} {} +\DeclareFontSeriesChangeRule {elc}{sb} {sbc} {bc} +\DeclareFontSeriesChangeRule {elc}{b} {bc} {} +\DeclareFontSeriesChangeRule {elc}{eb} {ebc} {bc} +\DeclareFontSeriesChangeRule {elc}{ub} {ubc} {bc} +\DeclareFontSeriesChangeRule {elc}{uc} {eluc} {} +\DeclareFontSeriesChangeRule {elc}{ec} {elec} {} +\DeclareFontSeriesChangeRule {elc}{c} {elc} {} +\DeclareFontSeriesChangeRule {elc}{sc} {elsc} {} +\DeclareFontSeriesChangeRule {elc}{sx} {elsx} {} +\DeclareFontSeriesChangeRule {elc}{x} {elx} {} +\DeclareFontSeriesChangeRule {elc}{ex} {elex} {} +\DeclareFontSeriesChangeRule {elc}{ux} {elux} {} +\DeclareFontSeriesChangeRule {elsc}{ul} {ulsc} {} +\DeclareFontSeriesChangeRule {elsc}{el} {elsc} {} +\DeclareFontSeriesChangeRule {elsc}{l} {lsc} {} +\DeclareFontSeriesChangeRule {elsc}{sl} {slsc} {} +\DeclareFontSeriesChangeRule {elsc}{sb} {sbsc} {bsc} +\DeclareFontSeriesChangeRule {elsc}{b} {bsc} {} +\DeclareFontSeriesChangeRule {elsc}{eb} {ebsc} {bsc} +\DeclareFontSeriesChangeRule {elsc}{ub} {ubsc} {bsc} +\DeclareFontSeriesChangeRule {elsc}{uc} {eluc} {} +\DeclareFontSeriesChangeRule {elsc}{ec} {elec} {} +\DeclareFontSeriesChangeRule {elsc}{c} {elc} {} +\DeclareFontSeriesChangeRule {elsc}{sc} {elsc} {} +\DeclareFontSeriesChangeRule {elsc}{sx} {elsx} {} +\DeclareFontSeriesChangeRule {elsc}{x} {elx} {} +\DeclareFontSeriesChangeRule {elsc}{ex} {elex} {} +\DeclareFontSeriesChangeRule {elsc}{ux} {elux} {} +\DeclareFontSeriesChangeRule {el}{uc} {eluc} {} +\DeclareFontSeriesChangeRule {el}{ec} {elec} {} +\DeclareFontSeriesChangeRule {el}{c} {elc} {} +\DeclareFontSeriesChangeRule {el}{sc} {elsc} {} +\DeclareFontSeriesChangeRule {el}{sx} {elsx} {} +\DeclareFontSeriesChangeRule {el}{x} {elx} {} +\DeclareFontSeriesChangeRule {el}{ex} {elex} {} +\DeclareFontSeriesChangeRule {el}{ux} {elux} {} +\DeclareFontSeriesChangeRule {el}{sb} {sb} {b} +\DeclareFontSeriesChangeRule {el}{eb} {eb} {b} +\DeclareFontSeriesChangeRule {el}{ub} {ub} {b} +\DeclareFontSeriesChangeRule {elsx}{ul} {ulsx} {} +\DeclareFontSeriesChangeRule {elsx}{el} {elsx} {} +\DeclareFontSeriesChangeRule {elsx}{l} {lsx} {} +\DeclareFontSeriesChangeRule {elsx}{sl} {slsx} {} +\DeclareFontSeriesChangeRule {elsx}{sb} {sbsx} {bsx} +\DeclareFontSeriesChangeRule {elsx}{b} {bsx} {} +\DeclareFontSeriesChangeRule {elsx}{eb} {ebsx} {bsx} +\DeclareFontSeriesChangeRule {elsx}{ub} {ubsx} {bsx} +\DeclareFontSeriesChangeRule {elsx}{uc} {eluc} {} +\DeclareFontSeriesChangeRule {elsx}{ec} {elec} {} +\DeclareFontSeriesChangeRule {elsx}{c} {elc} {} +\DeclareFontSeriesChangeRule {elsx}{sc} {elsc} {} +\DeclareFontSeriesChangeRule {elsx}{sx} {elsx} {} +\DeclareFontSeriesChangeRule {elsx}{x} {elx} {} +\DeclareFontSeriesChangeRule {elsx}{ex} {elex} {} +\DeclareFontSeriesChangeRule {elsx}{ux} {elux} {} +\DeclareFontSeriesChangeRule {elx}{ul} {ulx} {} +\DeclareFontSeriesChangeRule {elx}{el} {elx} {} +\DeclareFontSeriesChangeRule {elx}{l} {lx} {} +\DeclareFontSeriesChangeRule {elx}{sl} {slx} {} +\DeclareFontSeriesChangeRule {elx}{sb} {sbx} {bx} +\DeclareFontSeriesChangeRule {elx}{b} {bx} {} +\DeclareFontSeriesChangeRule {elx}{eb} {ebx} {bx} +\DeclareFontSeriesChangeRule {elx}{ub} {ubx} {bx} +\DeclareFontSeriesChangeRule {elx}{uc} {eluc} {} +\DeclareFontSeriesChangeRule {elx}{ec} {elec} {} +\DeclareFontSeriesChangeRule {elx}{c} {elc} {} +\DeclareFontSeriesChangeRule {elx}{sc} {elsc} {} +\DeclareFontSeriesChangeRule {elx}{sx} {elsx} {} +\DeclareFontSeriesChangeRule {elx}{x} {elx} {} +\DeclareFontSeriesChangeRule {elx}{ex} {elex} {} +\DeclareFontSeriesChangeRule {elx}{ux} {elux} {} +\DeclareFontSeriesChangeRule {elex}{ul} {ulex} {} +\DeclareFontSeriesChangeRule {elex}{el} {elex} {} +\DeclareFontSeriesChangeRule {elex}{l} {lex} {} +\DeclareFontSeriesChangeRule {elex}{sl} {slex} {} +\DeclareFontSeriesChangeRule {elex}{sb} {sbex} {bex} +\DeclareFontSeriesChangeRule {elex}{b} {bex} {} +\DeclareFontSeriesChangeRule {elex}{eb} {ebex} {bex} +\DeclareFontSeriesChangeRule {elex}{ub} {ubex} {bex} +\DeclareFontSeriesChangeRule {elex}{uc} {eluc} {} +\DeclareFontSeriesChangeRule {elex}{ec} {elec} {} +\DeclareFontSeriesChangeRule {elex}{c} {elc} {} +\DeclareFontSeriesChangeRule {elex}{sc} {elsc} {} +\DeclareFontSeriesChangeRule {elex}{sx} {elsx} {} +\DeclareFontSeriesChangeRule {elex}{x} {elx} {} +\DeclareFontSeriesChangeRule {elex}{ex} {elex} {} +\DeclareFontSeriesChangeRule {elex}{ux} {elux} {} +\DeclareFontSeriesChangeRule {elux}{ul} {ulux} {} +\DeclareFontSeriesChangeRule {elux}{el} {elux} {} +\DeclareFontSeriesChangeRule {elux}{l} {lux} {} +\DeclareFontSeriesChangeRule {elux}{sl} {slux} {} +\DeclareFontSeriesChangeRule {elux}{sb} {sbux} {bux} +\DeclareFontSeriesChangeRule {elux}{b} {bux} {} +\DeclareFontSeriesChangeRule {elux}{eb} {ebux} {bux} +\DeclareFontSeriesChangeRule {elux}{ub} {ubux} {bux} +\DeclareFontSeriesChangeRule {elux}{uc} {eluc} {} +\DeclareFontSeriesChangeRule {elux}{ec} {elec} {} +\DeclareFontSeriesChangeRule {elux}{c} {elc} {} +\DeclareFontSeriesChangeRule {elux}{sc} {elsc} {} +\DeclareFontSeriesChangeRule {elux}{sx} {elsx} {} +\DeclareFontSeriesChangeRule {elux}{x} {elx} {} +\DeclareFontSeriesChangeRule {elux}{ex} {elex} {} +\DeclareFontSeriesChangeRule {elux}{ux} {elux} {} +\DeclareFontSeriesChangeRule {luc}{ul} {uluc} {} +\DeclareFontSeriesChangeRule {luc}{el} {eluc} {} +\DeclareFontSeriesChangeRule {luc}{l} {luc} {} +\DeclareFontSeriesChangeRule {luc}{sl} {sluc} {} +\DeclareFontSeriesChangeRule {luc}{sb} {sbuc} {buc} +\DeclareFontSeriesChangeRule {luc}{b} {buc} {} +\DeclareFontSeriesChangeRule {luc}{eb} {ebuc} {buc} +\DeclareFontSeriesChangeRule {luc}{ub} {ubuc} {buc} +\DeclareFontSeriesChangeRule {luc}{uc} {luc} {} +\DeclareFontSeriesChangeRule {luc}{ec} {lec} {} +\DeclareFontSeriesChangeRule {luc}{c} {lc} {} +\DeclareFontSeriesChangeRule {luc}{sc} {lsc} {} +\DeclareFontSeriesChangeRule {luc}{sx} {lsx} {} +\DeclareFontSeriesChangeRule {luc}{x} {lx} {} +\DeclareFontSeriesChangeRule {luc}{ex} {lex} {} +\DeclareFontSeriesChangeRule {luc}{ux} {lux} {} +\DeclareFontSeriesChangeRule {lec}{ul} {ulec} {} +\DeclareFontSeriesChangeRule {lec}{el} {elec} {} +\DeclareFontSeriesChangeRule {lec}{l} {lec} {} +\DeclareFontSeriesChangeRule {lec}{sl} {slec} {} +\DeclareFontSeriesChangeRule {lec}{sb} {sbec} {bec} +\DeclareFontSeriesChangeRule {lec}{b} {bec} {} +\DeclareFontSeriesChangeRule {lec}{eb} {ebec} {bec} +\DeclareFontSeriesChangeRule {lec}{ub} {ubec} {bec} +\DeclareFontSeriesChangeRule {lec}{uc} {luc} {} +\DeclareFontSeriesChangeRule {lec}{ec} {lec} {} +\DeclareFontSeriesChangeRule {lec}{c} {lc} {} +\DeclareFontSeriesChangeRule {lec}{sc} {lsc} {} +\DeclareFontSeriesChangeRule {lec}{sx} {lsx} {} +\DeclareFontSeriesChangeRule {lec}{x} {lx} {} +\DeclareFontSeriesChangeRule {lec}{ex} {lex} {} +\DeclareFontSeriesChangeRule {lec}{ux} {lux} {} +\DeclareFontSeriesChangeRule {lc}{ul} {ulc} {} +\DeclareFontSeriesChangeRule {lc}{el} {elc} {} +\DeclareFontSeriesChangeRule {lc}{l} {lc} {} +\DeclareFontSeriesChangeRule {lc}{sl} {slc} {} +\DeclareFontSeriesChangeRule {lc}{sb} {sbc} {bc} +\DeclareFontSeriesChangeRule {lc}{b} {bc} {} +\DeclareFontSeriesChangeRule {lc}{eb} {ebc} {bc} +\DeclareFontSeriesChangeRule {lc}{ub} {ubc} {bc} +\DeclareFontSeriesChangeRule {lc}{uc} {luc} {} +\DeclareFontSeriesChangeRule {lc}{ec} {lec} {} +\DeclareFontSeriesChangeRule {lc}{c} {lc} {} +\DeclareFontSeriesChangeRule {lc}{sc} {lsc} {} +\DeclareFontSeriesChangeRule {lc}{sx} {lsx} {} +\DeclareFontSeriesChangeRule {lc}{x} {lx} {} +\DeclareFontSeriesChangeRule {lc}{ex} {lex} {} +\DeclareFontSeriesChangeRule {lc}{ux} {lux} {} +\DeclareFontSeriesChangeRule {lsc}{ul} {ulsc} {} +\DeclareFontSeriesChangeRule {lsc}{el} {elsc} {} +\DeclareFontSeriesChangeRule {lsc}{l} {lsc} {} +\DeclareFontSeriesChangeRule {lsc}{sl} {slsc} {} +\DeclareFontSeriesChangeRule {lsc}{sb} {sbsc} {bsc} +\DeclareFontSeriesChangeRule {lsc}{b} {bsc} {} +\DeclareFontSeriesChangeRule {lsc}{eb} {ebsc} {bsc} +\DeclareFontSeriesChangeRule {lsc}{ub} {ubsc} {bsc} +\DeclareFontSeriesChangeRule {lsc}{uc} {luc} {} +\DeclareFontSeriesChangeRule {lsc}{ec} {lec} {} +\DeclareFontSeriesChangeRule {lsc}{c} {lc} {} +\DeclareFontSeriesChangeRule {lsc}{sc} {lsc} {} +\DeclareFontSeriesChangeRule {lsc}{sx} {lsx} {} +\DeclareFontSeriesChangeRule {lsc}{x} {lx} {} +\DeclareFontSeriesChangeRule {lsc}{ex} {lex} {} +\DeclareFontSeriesChangeRule {lsc}{ux} {lux} {} +\DeclareFontSeriesChangeRule {l}{uc} {luc} {} +\DeclareFontSeriesChangeRule {l}{ec} {lec} {} +\DeclareFontSeriesChangeRule {l}{c} {lc} {} +\DeclareFontSeriesChangeRule {l}{sc} {lsc} {} +\DeclareFontSeriesChangeRule {l}{sx} {lsx} {} +\DeclareFontSeriesChangeRule {l}{x} {lx} {} +\DeclareFontSeriesChangeRule {l}{ex} {lex} {} +\DeclareFontSeriesChangeRule {l}{ux} {lux} {} +\DeclareFontSeriesChangeRule {l}{sb} {sb} {b} +\DeclareFontSeriesChangeRule {l}{eb} {eb} {b} +\DeclareFontSeriesChangeRule {l}{ub} {ub} {b} +\DeclareFontSeriesChangeRule {lsx}{ul} {ulsx} {} +\DeclareFontSeriesChangeRule {lsx}{el} {elsx} {} +\DeclareFontSeriesChangeRule {lsx}{l} {lsx} {} +\DeclareFontSeriesChangeRule {lsx}{sl} {slsx} {} +\DeclareFontSeriesChangeRule {lsx}{sb} {sbsx} {bsx} +\DeclareFontSeriesChangeRule {lsx}{b} {bsx} {} +\DeclareFontSeriesChangeRule {lsx}{eb} {ebsx} {bsx} +\DeclareFontSeriesChangeRule {lsx}{ub} {ubsx} {bsx} +\DeclareFontSeriesChangeRule {lsx}{uc} {luc} {} +\DeclareFontSeriesChangeRule {lsx}{ec} {lec} {} +\DeclareFontSeriesChangeRule {lsx}{c} {lc} {} +\DeclareFontSeriesChangeRule {lsx}{sc} {lsc} {} +\DeclareFontSeriesChangeRule {lsx}{sx} {lsx} {} +\DeclareFontSeriesChangeRule {lsx}{x} {lx} {} +\DeclareFontSeriesChangeRule {lsx}{ex} {lex} {} +\DeclareFontSeriesChangeRule {lsx}{ux} {lux} {} +\DeclareFontSeriesChangeRule {lx}{ul} {ulx} {} +\DeclareFontSeriesChangeRule {lx}{el} {elx} {} +\DeclareFontSeriesChangeRule {lx}{l} {lx} {} +\DeclareFontSeriesChangeRule {lx}{sl} {slx} {} +\DeclareFontSeriesChangeRule {lx}{sb} {sbx} {bx} +\DeclareFontSeriesChangeRule {lx}{b} {bx} {} +\DeclareFontSeriesChangeRule {lx}{eb} {ebx} {bx} +\DeclareFontSeriesChangeRule {lx}{ub} {ubx} {bx} +\DeclareFontSeriesChangeRule {lx}{uc} {luc} {} +\DeclareFontSeriesChangeRule {lx}{ec} {lec} {} +\DeclareFontSeriesChangeRule {lx}{c} {lc} {} +\DeclareFontSeriesChangeRule {lx}{sc} {lsc} {} +\DeclareFontSeriesChangeRule {lx}{sx} {lsx} {} +\DeclareFontSeriesChangeRule {lx}{x} {lx} {} +\DeclareFontSeriesChangeRule {lx}{ex} {lex} {} +\DeclareFontSeriesChangeRule {lx}{ux} {lux} {} +\DeclareFontSeriesChangeRule {lex}{ul} {ulex} {} +\DeclareFontSeriesChangeRule {lex}{el} {elex} {} +\DeclareFontSeriesChangeRule {lex}{l} {lex} {} +\DeclareFontSeriesChangeRule {lex}{sl} {slex} {} +\DeclareFontSeriesChangeRule {lex}{sb} {sbex} {bex} +\DeclareFontSeriesChangeRule {lex}{b} {bex} {} +\DeclareFontSeriesChangeRule {lex}{eb} {ebex} {bex} +\DeclareFontSeriesChangeRule {lex}{ub} {ubex} {bex} +\DeclareFontSeriesChangeRule {lex}{uc} {luc} {} +\DeclareFontSeriesChangeRule {lex}{ec} {lec} {} +\DeclareFontSeriesChangeRule {lex}{c} {lc} {} +\DeclareFontSeriesChangeRule {lex}{sc} {lsc} {} +\DeclareFontSeriesChangeRule {lex}{sx} {lsx} {} +\DeclareFontSeriesChangeRule {lex}{x} {lx} {} +\DeclareFontSeriesChangeRule {lex}{ex} {lex} {} +\DeclareFontSeriesChangeRule {lex}{ux} {lux} {} +\DeclareFontSeriesChangeRule {lux}{ul} {ulux} {} +\DeclareFontSeriesChangeRule {lux}{el} {elux} {} +\DeclareFontSeriesChangeRule {lux}{l} {lux} {} +\DeclareFontSeriesChangeRule {lux}{sl} {slux} {} +\DeclareFontSeriesChangeRule {lux}{sb} {sbux} {bux} +\DeclareFontSeriesChangeRule {lux}{b} {bux} {} +\DeclareFontSeriesChangeRule {lux}{eb} {ebux} {bux} +\DeclareFontSeriesChangeRule {lux}{ub} {ubux} {bux} +\DeclareFontSeriesChangeRule {lux}{uc} {luc} {} +\DeclareFontSeriesChangeRule {lux}{ec} {lec} {} +\DeclareFontSeriesChangeRule {lux}{c} {lc} {} +\DeclareFontSeriesChangeRule {lux}{sc} {lsc} {} +\DeclareFontSeriesChangeRule {lux}{sx} {lsx} {} +\DeclareFontSeriesChangeRule {lux}{x} {lx} {} +\DeclareFontSeriesChangeRule {lux}{ex} {lex} {} +\DeclareFontSeriesChangeRule {lux}{ux} {lux} {} +\DeclareFontSeriesChangeRule {sluc}{ul} {uluc} {} +\DeclareFontSeriesChangeRule {sluc}{el} {eluc} {} +\DeclareFontSeriesChangeRule {sluc}{l} {luc} {} +\DeclareFontSeriesChangeRule {sluc}{sl} {sluc} {} +\DeclareFontSeriesChangeRule {sluc}{sb} {sbuc} {buc} +\DeclareFontSeriesChangeRule {sluc}{b} {buc} {} +\DeclareFontSeriesChangeRule {sluc}{eb} {ebuc} {buc} +\DeclareFontSeriesChangeRule {sluc}{ub} {ubuc} {buc} +\DeclareFontSeriesChangeRule {sluc}{uc} {sluc} {} +\DeclareFontSeriesChangeRule {sluc}{ec} {slec} {} +\DeclareFontSeriesChangeRule {sluc}{c} {slc} {} +\DeclareFontSeriesChangeRule {sluc}{sc} {slsc} {} +\DeclareFontSeriesChangeRule {sluc}{sx} {slsx} {} +\DeclareFontSeriesChangeRule {sluc}{x} {slx} {} +\DeclareFontSeriesChangeRule {sluc}{ex} {slex} {} +\DeclareFontSeriesChangeRule {sluc}{ux} {slux} {} +\DeclareFontSeriesChangeRule {slec}{ul} {ulec} {} +\DeclareFontSeriesChangeRule {slec}{el} {elec} {} +\DeclareFontSeriesChangeRule {slec}{l} {lec} {} +\DeclareFontSeriesChangeRule {slec}{sl} {slec} {} +\DeclareFontSeriesChangeRule {slec}{sb} {sbec} {bec} +\DeclareFontSeriesChangeRule {slec}{b} {bec} {} +\DeclareFontSeriesChangeRule {slec}{eb} {ebec} {bec} +\DeclareFontSeriesChangeRule {slec}{ub} {ubec} {bec} +\DeclareFontSeriesChangeRule {slec}{uc} {sluc} {} +\DeclareFontSeriesChangeRule {slec}{ec} {slec} {} +\DeclareFontSeriesChangeRule {slec}{c} {slc} {} +\DeclareFontSeriesChangeRule {slec}{sc} {slsc} {} +\DeclareFontSeriesChangeRule {slec}{sx} {slsx} {} +\DeclareFontSeriesChangeRule {slec}{x} {slx} {} +\DeclareFontSeriesChangeRule {slec}{ex} {slex} {} +\DeclareFontSeriesChangeRule {slec}{ux} {slux} {} +\DeclareFontSeriesChangeRule {slc}{ul} {ulc} {} +\DeclareFontSeriesChangeRule {slc}{el} {elc} {} +\DeclareFontSeriesChangeRule {slc}{l} {lc} {} +\DeclareFontSeriesChangeRule {slc}{sl} {slc} {} +\DeclareFontSeriesChangeRule {slc}{sb} {sbc} {bc} +\DeclareFontSeriesChangeRule {slc}{b} {bc} {} +\DeclareFontSeriesChangeRule {slc}{eb} {ebc} {bc} +\DeclareFontSeriesChangeRule {slc}{ub} {ubc} {bc} +\DeclareFontSeriesChangeRule {slc}{uc} {sluc} {} +\DeclareFontSeriesChangeRule {slc}{ec} {slec} {} +\DeclareFontSeriesChangeRule {slc}{c} {slc} {} +\DeclareFontSeriesChangeRule {slc}{sc} {slsc} {} +\DeclareFontSeriesChangeRule {slc}{sx} {slsx} {} +\DeclareFontSeriesChangeRule {slc}{x} {slx} {} +\DeclareFontSeriesChangeRule {slc}{ex} {slex} {} +\DeclareFontSeriesChangeRule {slc}{ux} {slux} {} +\DeclareFontSeriesChangeRule {slsc}{ul} {ulsc} {} +\DeclareFontSeriesChangeRule {slsc}{el} {elsc} {} +\DeclareFontSeriesChangeRule {slsc}{l} {lsc} {} +\DeclareFontSeriesChangeRule {slsc}{sl} {slsc} {} +\DeclareFontSeriesChangeRule {slsc}{sb} {sbsc} {bsc} +\DeclareFontSeriesChangeRule {slsc}{b} {bsc} {} +\DeclareFontSeriesChangeRule {slsc}{eb} {ebsc} {bsc} +\DeclareFontSeriesChangeRule {slsc}{ub} {ubsc} {bsc} +\DeclareFontSeriesChangeRule {slsc}{uc} {sluc} {} +\DeclareFontSeriesChangeRule {slsc}{ec} {slec} {} +\DeclareFontSeriesChangeRule {slsc}{c} {slc} {} +\DeclareFontSeriesChangeRule {slsc}{sc} {slsc} {} +\DeclareFontSeriesChangeRule {slsc}{sx} {slsx} {} +\DeclareFontSeriesChangeRule {slsc}{x} {slx} {} +\DeclareFontSeriesChangeRule {slsc}{ex} {slex} {} +\DeclareFontSeriesChangeRule {slsc}{ux} {slux} {} +\DeclareFontSeriesChangeRule {sl}{uc} {sluc} {} +\DeclareFontSeriesChangeRule {sl}{ec} {slec} {} +\DeclareFontSeriesChangeRule {sl}{c} {slc} {} +\DeclareFontSeriesChangeRule {sl}{sc} {slsc} {} +\DeclareFontSeriesChangeRule {sl}{sx} {slsx} {} +\DeclareFontSeriesChangeRule {sl}{x} {slx} {} +\DeclareFontSeriesChangeRule {sl}{ex} {slex} {} +\DeclareFontSeriesChangeRule {sl}{ux} {slux} {} +\DeclareFontSeriesChangeRule {sl}{sb} {sb} {b} +\DeclareFontSeriesChangeRule {sl}{eb} {eb} {b} +\DeclareFontSeriesChangeRule {sl}{ub} {ub} {b} +\DeclareFontSeriesChangeRule {slsx}{ul} {ulsx} {} +\DeclareFontSeriesChangeRule {slsx}{el} {elsx} {} +\DeclareFontSeriesChangeRule {slsx}{l} {lsx} {} +\DeclareFontSeriesChangeRule {slsx}{sl} {slsx} {} +\DeclareFontSeriesChangeRule {slsx}{sb} {sbsx} {bsx} +\DeclareFontSeriesChangeRule {slsx}{b} {bsx} {} +\DeclareFontSeriesChangeRule {slsx}{eb} {ebsx} {bsx} +\DeclareFontSeriesChangeRule {slsx}{ub} {ubsx} {bsx} +\DeclareFontSeriesChangeRule {slsx}{uc} {sluc} {} +\DeclareFontSeriesChangeRule {slsx}{ec} {slec} {} +\DeclareFontSeriesChangeRule {slsx}{c} {slc} {} +\DeclareFontSeriesChangeRule {slsx}{sc} {slsc} {} +\DeclareFontSeriesChangeRule {slsx}{sx} {slsx} {} +\DeclareFontSeriesChangeRule {slsx}{x} {slx} {} +\DeclareFontSeriesChangeRule {slsx}{ex} {slex} {} +\DeclareFontSeriesChangeRule {slsx}{ux} {slux} {} +\DeclareFontSeriesChangeRule {slx}{ul} {ulx} {} +\DeclareFontSeriesChangeRule {slx}{el} {elx} {} +\DeclareFontSeriesChangeRule {slx}{l} {lx} {} +\DeclareFontSeriesChangeRule {slx}{sl} {slx} {} +\DeclareFontSeriesChangeRule {slx}{sb} {sbx} {bx} +\DeclareFontSeriesChangeRule {slx}{b} {bx} {} +\DeclareFontSeriesChangeRule {slx}{eb} {ebx} {bx} +\DeclareFontSeriesChangeRule {slx}{ub} {ubx} {bx} +\DeclareFontSeriesChangeRule {slx}{uc} {sluc} {} +\DeclareFontSeriesChangeRule {slx}{ec} {slec} {} +\DeclareFontSeriesChangeRule {slx}{c} {slc} {} +\DeclareFontSeriesChangeRule {slx}{sc} {slsc} {} +\DeclareFontSeriesChangeRule {slx}{sx} {slsx} {} +\DeclareFontSeriesChangeRule {slx}{x} {slx} {} +\DeclareFontSeriesChangeRule {slx}{ex} {slex} {} +\DeclareFontSeriesChangeRule {slx}{ux} {slux} {} +\DeclareFontSeriesChangeRule {slex}{ul} {ulex} {} +\DeclareFontSeriesChangeRule {slex}{el} {elex} {} +\DeclareFontSeriesChangeRule {slex}{l} {lex} {} +\DeclareFontSeriesChangeRule {slex}{sl} {slex} {} +\DeclareFontSeriesChangeRule {slex}{sb} {sbex} {bex} +\DeclareFontSeriesChangeRule {slex}{b} {bex} {} +\DeclareFontSeriesChangeRule {slex}{eb} {ebex} {bex} +\DeclareFontSeriesChangeRule {slex}{ub} {ubex} {bex} +\DeclareFontSeriesChangeRule {slex}{uc} {sluc} {} +\DeclareFontSeriesChangeRule {slex}{ec} {slec} {} +\DeclareFontSeriesChangeRule {slex}{c} {slc} {} +\DeclareFontSeriesChangeRule {slex}{sc} {slsc} {} +\DeclareFontSeriesChangeRule {slex}{sx} {slsx} {} +\DeclareFontSeriesChangeRule {slex}{x} {slx} {} +\DeclareFontSeriesChangeRule {slex}{ex} {slex} {} +\DeclareFontSeriesChangeRule {slex}{ux} {slux} {} +\DeclareFontSeriesChangeRule {slux}{ul} {ulux} {} +\DeclareFontSeriesChangeRule {slux}{el} {elux} {} +\DeclareFontSeriesChangeRule {slux}{l} {lux} {} +\DeclareFontSeriesChangeRule {slux}{sl} {slux} {} +\DeclareFontSeriesChangeRule {slux}{sb} {sbux} {bux} +\DeclareFontSeriesChangeRule {slux}{b} {bux} {} +\DeclareFontSeriesChangeRule {slux}{eb} {ebux} {bux} +\DeclareFontSeriesChangeRule {slux}{ub} {ubux} {bux} +\DeclareFontSeriesChangeRule {slux}{uc} {sluc} {} +\DeclareFontSeriesChangeRule {slux}{ec} {slec} {} +\DeclareFontSeriesChangeRule {slux}{c} {slc} {} +\DeclareFontSeriesChangeRule {slux}{sc} {slsc} {} +\DeclareFontSeriesChangeRule {slux}{sx} {slsx} {} +\DeclareFontSeriesChangeRule {slux}{x} {slx} {} +\DeclareFontSeriesChangeRule {slux}{ex} {slex} {} +\DeclareFontSeriesChangeRule {slux}{ux} {slux} {} +\DeclareFontSeriesChangeRule {uc}{ul} {uluc} {} +\DeclareFontSeriesChangeRule {uc}{el} {eluc} {} +\DeclareFontSeriesChangeRule {uc}{l} {luc} {} +\DeclareFontSeriesChangeRule {uc}{sl} {sluc} {} +\DeclareFontSeriesChangeRule {uc}{sb} {sbuc} {buc} +\DeclareFontSeriesChangeRule {uc}{b} {buc} {} +\DeclareFontSeriesChangeRule {uc}{eb} {ebuc} {buc} +\DeclareFontSeriesChangeRule {uc}{ub} {ubuc} {buc} +\DeclareFontSeriesChangeRule {ec}{ul} {ulec} {} +\DeclareFontSeriesChangeRule {ec}{el} {elec} {} +\DeclareFontSeriesChangeRule {ec}{l} {lec} {} +\DeclareFontSeriesChangeRule {ec}{sl} {slec} {} +\DeclareFontSeriesChangeRule {ec}{sb} {sbec} {bec} +\DeclareFontSeriesChangeRule {ec}{b} {bec} {} +\DeclareFontSeriesChangeRule {ec}{eb} {ebec} {bec} +\DeclareFontSeriesChangeRule {ec}{ub} {ubec} {bec} +\DeclareFontSeriesChangeRule {c}{ul} {ulc} {c} +\DeclareFontSeriesChangeRule {c}{el} {elc} {c} +\DeclareFontSeriesChangeRule {c}{l} {lc} {c} +\DeclareFontSeriesChangeRule {c}{sl} {slc} {c} +\DeclareFontSeriesChangeRule {c}{sb} {sbc} {bc} +\DeclareFontSeriesChangeRule {c}{b} {bc} {} +\DeclareFontSeriesChangeRule {c}{eb} {ebc} {bc} +\DeclareFontSeriesChangeRule {c}{ub} {ubc} {bc} +\DeclareFontSeriesChangeRule {c}{uc} {uc} {c} +\DeclareFontSeriesChangeRule {c}{ec} {ec} {c} +\DeclareFontSeriesChangeRule {c}{sc} {sc} {c} +\DeclareFontSeriesChangeRule {sc}{ul} {ulsc} {} +\DeclareFontSeriesChangeRule {sc}{el} {elsc} {} +\DeclareFontSeriesChangeRule {sc}{l} {lsc} {} +\DeclareFontSeriesChangeRule {sc}{sl} {slsc} {} +\DeclareFontSeriesChangeRule {sc}{sb} {sbsc} {bsc} +\DeclareFontSeriesChangeRule {sc}{b} {bsc} {} +\DeclareFontSeriesChangeRule {sc}{eb} {ebsc} {bsc} +\DeclareFontSeriesChangeRule {sc}{ub} {ubsc} {bsc} +\DeclareFontSeriesChangeRule {m}{sb} {sb} {b} +\DeclareFontSeriesChangeRule {m}{eb} {eb} {b} +\DeclareFontSeriesChangeRule {m}{ub} {ub} {b} +\DeclareFontSeriesChangeRule {m}{b} {b} {bx} +\DeclareFontSeriesChangeRule {sx}{ul} {ulsx} {} +\DeclareFontSeriesChangeRule {sx}{el} {elsx} {} +\DeclareFontSeriesChangeRule {sx}{l} {lsx} {} +\DeclareFontSeriesChangeRule {sx}{sl} {slsx} {} +\DeclareFontSeriesChangeRule {sx}{sb} {sbsx} {bsx} +\DeclareFontSeriesChangeRule {sx}{b} {bsx} {} +\DeclareFontSeriesChangeRule {sx}{eb} {ebsx} {bsx} +\DeclareFontSeriesChangeRule {sx}{ub} {ubsx} {bsx} +\DeclareFontSeriesChangeRule {x}{ul} {ulx} {} +\DeclareFontSeriesChangeRule {x}{el} {elx} {} +\DeclareFontSeriesChangeRule {x}{l} {lx} {} +\DeclareFontSeriesChangeRule {x}{sl} {slx} {} +\DeclareFontSeriesChangeRule {x}{sb} {sbx} {bx} +\DeclareFontSeriesChangeRule {x}{b} {bx} {} +\DeclareFontSeriesChangeRule {x}{eb} {ebx} {bx} +\DeclareFontSeriesChangeRule {x}{ub} {ubx} {bx} +\DeclareFontSeriesChangeRule {ex}{ul} {ulex} {} +\DeclareFontSeriesChangeRule {ex}{el} {elex} {} +\DeclareFontSeriesChangeRule {ex}{l} {lex} {} +\DeclareFontSeriesChangeRule {ex}{sl} {slex} {} +\DeclareFontSeriesChangeRule {ex}{sb} {sbex} {bex} +\DeclareFontSeriesChangeRule {ex}{b} {bex} {} +\DeclareFontSeriesChangeRule {ex}{eb} {ebex} {bex} +\DeclareFontSeriesChangeRule {ex}{ub} {ubex} {bex} +\DeclareFontSeriesChangeRule {ux}{ul} {ulux} {} +\DeclareFontSeriesChangeRule {ux}{el} {elux} {} +\DeclareFontSeriesChangeRule {ux}{l} {lux} {} +\DeclareFontSeriesChangeRule {ux}{sl} {slux} {} +\DeclareFontSeriesChangeRule {ux}{sb} {sbux} {bux} +\DeclareFontSeriesChangeRule {ux}{b} {bux} {} +\DeclareFontSeriesChangeRule {ux}{eb} {ebux} {bux} +\DeclareFontSeriesChangeRule {ux}{ub} {ubux} {bux} +\DeclareFontSeriesChangeRule {sbuc}{ul} {uluc} {} +\DeclareFontSeriesChangeRule {sbuc}{el} {eluc} {} +\DeclareFontSeriesChangeRule {sbuc}{l} {luc} {} +\DeclareFontSeriesChangeRule {sbuc}{sl} {sluc} {} +\DeclareFontSeriesChangeRule {sbuc}{sb} {sbuc} {} +\DeclareFontSeriesChangeRule {sbuc}{b} {buc} {} +\DeclareFontSeriesChangeRule {sbuc}{eb} {ebuc} {buc} +\DeclareFontSeriesChangeRule {sbuc}{ub} {ubuc} {buc} +\DeclareFontSeriesChangeRule {sbuc}{uc} {sbuc} {} +\DeclareFontSeriesChangeRule {sbuc}{ec} {sbec} {} +\DeclareFontSeriesChangeRule {sbuc}{c} {sbc} {} +\DeclareFontSeriesChangeRule {sbuc}{sc} {sbsc} {} +\DeclareFontSeriesChangeRule {sbuc}{sx} {sbsx} {} +\DeclareFontSeriesChangeRule {sbuc}{x} {sbx} {} +\DeclareFontSeriesChangeRule {sbuc}{ex} {sbex} {} +\DeclareFontSeriesChangeRule {sbuc}{ux} {sbux} {} +\DeclareFontSeriesChangeRule {sbec}{ul} {ulec} {} +\DeclareFontSeriesChangeRule {sbec}{el} {elec} {} +\DeclareFontSeriesChangeRule {sbec}{l} {lec} {} +\DeclareFontSeriesChangeRule {sbec}{sl} {slec} {} +\DeclareFontSeriesChangeRule {sbec}{sb} {sbec} {} +\DeclareFontSeriesChangeRule {sbec}{b} {bec} {} +\DeclareFontSeriesChangeRule {sbec}{eb} {ebec} {bec} +\DeclareFontSeriesChangeRule {sbec}{ub} {ubec} {bec} +\DeclareFontSeriesChangeRule {sbec}{uc} {sbuc} {} +\DeclareFontSeriesChangeRule {sbec}{ec} {sbec} {} +\DeclareFontSeriesChangeRule {sbec}{c} {sbc} {} +\DeclareFontSeriesChangeRule {sbec}{sc} {sbsc} {} +\DeclareFontSeriesChangeRule {sbec}{sx} {sbsx} {} +\DeclareFontSeriesChangeRule {sbec}{x} {sbx} {} +\DeclareFontSeriesChangeRule {sbec}{ex} {sbex} {} +\DeclareFontSeriesChangeRule {sbec}{ux} {sbux} {} +\DeclareFontSeriesChangeRule {sbc}{ul} {ulc} {} +\DeclareFontSeriesChangeRule {sbc}{el} {elc} {} +\DeclareFontSeriesChangeRule {sbc}{l} {lc} {} +\DeclareFontSeriesChangeRule {sbc}{sl} {slc} {} +\DeclareFontSeriesChangeRule {sbc}{sb} {sbc} {} +\DeclareFontSeriesChangeRule {sbc}{b} {bc} {} +\DeclareFontSeriesChangeRule {sbc}{eb} {ebc} {bc} +\DeclareFontSeriesChangeRule {sbc}{ub} {ubc} {bc} +\DeclareFontSeriesChangeRule {sbc}{uc} {sbuc} {} +\DeclareFontSeriesChangeRule {sbc}{ec} {sbec} {} +\DeclareFontSeriesChangeRule {sbc}{c} {sbc} {} +\DeclareFontSeriesChangeRule {sbc}{sc} {sbsc} {} +\DeclareFontSeriesChangeRule {sbc}{sx} {sbsx} {} +\DeclareFontSeriesChangeRule {sbc}{x} {sbx} {} +\DeclareFontSeriesChangeRule {sbc}{ex} {sbex} {} +\DeclareFontSeriesChangeRule {sbc}{ux} {sbux} {} +\DeclareFontSeriesChangeRule {sbsc}{ul} {ulsc} {} +\DeclareFontSeriesChangeRule {sbsc}{el} {elsc} {} +\DeclareFontSeriesChangeRule {sbsc}{l} {lsc} {} +\DeclareFontSeriesChangeRule {sbsc}{sl} {slsc} {} +\DeclareFontSeriesChangeRule {sbsc}{sb} {sbsc} {} +\DeclareFontSeriesChangeRule {sbsc}{b} {bsc} {} +\DeclareFontSeriesChangeRule {sbsc}{eb} {ebsc} {bsc} +\DeclareFontSeriesChangeRule {sbsc}{ub} {ubsc} {bsc} +\DeclareFontSeriesChangeRule {sbsc}{uc} {sbuc} {} +\DeclareFontSeriesChangeRule {sbsc}{ec} {sbec} {} +\DeclareFontSeriesChangeRule {sbsc}{c} {sbc} {} +\DeclareFontSeriesChangeRule {sbsc}{sc} {sbsc} {} +\DeclareFontSeriesChangeRule {sbsc}{sx} {sbsx} {} +\DeclareFontSeriesChangeRule {sbsc}{x} {sbx} {} +\DeclareFontSeriesChangeRule {sbsc}{ex} {sbex} {} +\DeclareFontSeriesChangeRule {sbsc}{ux} {sbux} {} +\DeclareFontSeriesChangeRule {sb}{uc} {sbuc} {} +\DeclareFontSeriesChangeRule {sb}{ec} {sbec} {} +\DeclareFontSeriesChangeRule {sb}{c} {sbc} {} +\DeclareFontSeriesChangeRule {sb}{sc} {sbsc} {} +\DeclareFontSeriesChangeRule {sb}{sx} {sbsx} {} +\DeclareFontSeriesChangeRule {sb}{x} {sbx} {} +\DeclareFontSeriesChangeRule {sb}{ex} {sbex} {} +\DeclareFontSeriesChangeRule {sb}{ux} {sbux} {} +\DeclareFontSeriesChangeRule {sb}{eb} {eb} {b} +\DeclareFontSeriesChangeRule {sb}{ub} {ub} {b} +\DeclareFontSeriesChangeRule {sbsx}{ul} {ulsx} {} +\DeclareFontSeriesChangeRule {sbsx}{el} {elsx} {} +\DeclareFontSeriesChangeRule {sbsx}{l} {lsx} {} +\DeclareFontSeriesChangeRule {sbsx}{sl} {slsx} {} +\DeclareFontSeriesChangeRule {sbsx}{sb} {sbsx} {} +\DeclareFontSeriesChangeRule {sbsx}{b} {bsx} {} +\DeclareFontSeriesChangeRule {sbsx}{eb} {ebsx} {bsx} +\DeclareFontSeriesChangeRule {sbsx}{ub} {ubsx} {bsx} +\DeclareFontSeriesChangeRule {sbsx}{uc} {sbuc} {} +\DeclareFontSeriesChangeRule {sbsx}{ec} {sbec} {} +\DeclareFontSeriesChangeRule {sbsx}{c} {sbc} {} +\DeclareFontSeriesChangeRule {sbsx}{sc} {sbsc} {} +\DeclareFontSeriesChangeRule {sbsx}{sx} {sbsx} {} +\DeclareFontSeriesChangeRule {sbsx}{x} {sbx} {} +\DeclareFontSeriesChangeRule {sbsx}{ex} {sbex} {} +\DeclareFontSeriesChangeRule {sbsx}{ux} {sbux} {} +\DeclareFontSeriesChangeRule {sbx}{ul} {ulx} {} +\DeclareFontSeriesChangeRule {sbx}{el} {elx} {} +\DeclareFontSeriesChangeRule {sbx}{l} {lx} {} +\DeclareFontSeriesChangeRule {sbx}{sl} {slx} {} +\DeclareFontSeriesChangeRule {sbx}{sb} {sbx} {} +\DeclareFontSeriesChangeRule {sbx}{b} {bx} {} +\DeclareFontSeriesChangeRule {sbx}{eb} {ebx} {bx} +\DeclareFontSeriesChangeRule {sbx}{ub} {ubx} {bx} +\DeclareFontSeriesChangeRule {sbx}{uc} {sbuc} {} +\DeclareFontSeriesChangeRule {sbx}{ec} {sbec} {} +\DeclareFontSeriesChangeRule {sbx}{c} {sbc} {} +\DeclareFontSeriesChangeRule {sbx}{sc} {sbsc} {} +\DeclareFontSeriesChangeRule {sbx}{sx} {sbsx} {} +\DeclareFontSeriesChangeRule {sbx}{x} {sbx} {} +\DeclareFontSeriesChangeRule {sbx}{ex} {sbex} {} +\DeclareFontSeriesChangeRule {sbx}{ux} {sbux} {} +\DeclareFontSeriesChangeRule {sbex}{ul} {ulex} {} +\DeclareFontSeriesChangeRule {sbex}{el} {elex} {} +\DeclareFontSeriesChangeRule {sbex}{l} {lex} {} +\DeclareFontSeriesChangeRule {sbex}{sl} {slex} {} +\DeclareFontSeriesChangeRule {sbex}{sb} {sbex} {} +\DeclareFontSeriesChangeRule {sbex}{b} {bex} {} +\DeclareFontSeriesChangeRule {sbex}{eb} {ebex} {bex} +\DeclareFontSeriesChangeRule {sbex}{ub} {ubex} {bex} +\DeclareFontSeriesChangeRule {sbex}{uc} {sbuc} {} +\DeclareFontSeriesChangeRule {sbex}{ec} {sbec} {} +\DeclareFontSeriesChangeRule {sbex}{c} {sbc} {} +\DeclareFontSeriesChangeRule {sbex}{sc} {sbsc} {} +\DeclareFontSeriesChangeRule {sbex}{sx} {sbsx} {} +\DeclareFontSeriesChangeRule {sbex}{x} {sbx} {} +\DeclareFontSeriesChangeRule {sbex}{ex} {sbex} {} +\DeclareFontSeriesChangeRule {sbex}{ux} {sbux} {} +\DeclareFontSeriesChangeRule {sbux}{ul} {ulux} {} +\DeclareFontSeriesChangeRule {sbux}{el} {elux} {} +\DeclareFontSeriesChangeRule {sbux}{l} {lux} {} +\DeclareFontSeriesChangeRule {sbux}{sl} {slux} {} +\DeclareFontSeriesChangeRule {sbux}{sb} {sbux} {} +\DeclareFontSeriesChangeRule {sbux}{b} {bux} {} +\DeclareFontSeriesChangeRule {sbux}{eb} {ebux} {bux} +\DeclareFontSeriesChangeRule {sbux}{ub} {ubux} {bux} +\DeclareFontSeriesChangeRule {sbux}{uc} {sbuc} {} +\DeclareFontSeriesChangeRule {sbux}{ec} {sbec} {} +\DeclareFontSeriesChangeRule {sbux}{c} {sbc} {} +\DeclareFontSeriesChangeRule {sbux}{sc} {sbsc} {} +\DeclareFontSeriesChangeRule {sbux}{sx} {sbsx} {} +\DeclareFontSeriesChangeRule {sbux}{x} {sbx} {} +\DeclareFontSeriesChangeRule {sbux}{ex} {sbex} {} +\DeclareFontSeriesChangeRule {sbux}{ux} {sbux} {} +\DeclareFontSeriesChangeRule {buc}{ul} {uluc} {} +\DeclareFontSeriesChangeRule {buc}{el} {eluc} {} +\DeclareFontSeriesChangeRule {buc}{l} {luc} {} +\DeclareFontSeriesChangeRule {buc}{sl} {sluc} {} +\DeclareFontSeriesChangeRule {buc}{sb} {sbuc} {buc} +\DeclareFontSeriesChangeRule {buc}{b} {buc} {} +\DeclareFontSeriesChangeRule {buc}{eb} {ebuc} {buc} +\DeclareFontSeriesChangeRule {buc}{ub} {ubuc} {buc} +\DeclareFontSeriesChangeRule {buc}{uc} {buc} {} +\DeclareFontSeriesChangeRule {buc}{ec} {bec} {} +\DeclareFontSeriesChangeRule {buc}{c} {bc} {} +\DeclareFontSeriesChangeRule {buc}{sc} {bsc} {} +\DeclareFontSeriesChangeRule {buc}{sx} {bsx} {} +\DeclareFontSeriesChangeRule {buc}{x} {bx} {} +\DeclareFontSeriesChangeRule {buc}{ex} {bex} {} +\DeclareFontSeriesChangeRule {buc}{ux} {bux} {} +\DeclareFontSeriesChangeRule {bec}{ul} {ulec} {} +\DeclareFontSeriesChangeRule {bec}{el} {elec} {} +\DeclareFontSeriesChangeRule {bec}{l} {lec} {} +\DeclareFontSeriesChangeRule {bec}{sl} {slec} {} +\DeclareFontSeriesChangeRule {bec}{sb} {sbec} {bec} +\DeclareFontSeriesChangeRule {bec}{b} {bec} {} +\DeclareFontSeriesChangeRule {bec}{eb} {ebec} {bec} +\DeclareFontSeriesChangeRule {bec}{ub} {ubec} {bec} +\DeclareFontSeriesChangeRule {bec}{uc} {buc} {} +\DeclareFontSeriesChangeRule {bec}{ec} {bec} {} +\DeclareFontSeriesChangeRule {bec}{c} {bc} {} +\DeclareFontSeriesChangeRule {bec}{sc} {bsc} {} +\DeclareFontSeriesChangeRule {bec}{sx} {bsx} {} +\DeclareFontSeriesChangeRule {bec}{x} {bx} {} +\DeclareFontSeriesChangeRule {bec}{ex} {bex} {} +\DeclareFontSeriesChangeRule {bec}{ux} {bux} {} +\DeclareFontSeriesChangeRule {bc}{ul} {ulc} {} +\DeclareFontSeriesChangeRule {bc}{el} {elc} {} +\DeclareFontSeriesChangeRule {bc}{l} {lc} {} +\DeclareFontSeriesChangeRule {bc}{sl} {slc} {} +\DeclareFontSeriesChangeRule {bc}{sb} {sbc} {bc} +\DeclareFontSeriesChangeRule {bc}{b} {bc} {} +\DeclareFontSeriesChangeRule {bc}{eb} {ebc} {bc} +\DeclareFontSeriesChangeRule {bc}{ub} {ubc} {bc} +\DeclareFontSeriesChangeRule {bc}{uc} {buc} {} +\DeclareFontSeriesChangeRule {bc}{ec} {bec} {} +\DeclareFontSeriesChangeRule {bc}{c} {bc} {} +\DeclareFontSeriesChangeRule {bc}{sc} {bsc} {} +\DeclareFontSeriesChangeRule {bc}{sx} {bsx} {} +\DeclareFontSeriesChangeRule {bc}{x} {bx} {} +\DeclareFontSeriesChangeRule {bc}{ex} {bex} {} +\DeclareFontSeriesChangeRule {bc}{ux} {bux} {} +\DeclareFontSeriesChangeRule {bsc}{ul} {ulsc} {} +\DeclareFontSeriesChangeRule {bsc}{el} {elsc} {} +\DeclareFontSeriesChangeRule {bsc}{l} {lsc} {} +\DeclareFontSeriesChangeRule {bsc}{sl} {slsc} {} +\DeclareFontSeriesChangeRule {bsc}{sb} {sbsc} {bsc} +\DeclareFontSeriesChangeRule {bsc}{b} {bsc} {} +\DeclareFontSeriesChangeRule {bsc}{eb} {ebsc} {bsc} +\DeclareFontSeriesChangeRule {bsc}{ub} {ubsc} {bsc} +\DeclareFontSeriesChangeRule {bsc}{uc} {buc} {} +\DeclareFontSeriesChangeRule {bsc}{ec} {bec} {} +\DeclareFontSeriesChangeRule {bsc}{c} {bc} {} +\DeclareFontSeriesChangeRule {bsc}{sc} {bsc} {} +\DeclareFontSeriesChangeRule {bsc}{sx} {bsx} {} +\DeclareFontSeriesChangeRule {bsc}{x} {bx} {} +\DeclareFontSeriesChangeRule {bsc}{ex} {bex} {} +\DeclareFontSeriesChangeRule {bsc}{ux} {bux} {} +\DeclareFontSeriesChangeRule {b}{uc} {buc} {b} +\DeclareFontSeriesChangeRule {b}{ec} {bec} {b} +\DeclareFontSeriesChangeRule {b}{c} {bc} {b} +\DeclareFontSeriesChangeRule {b}{sc} {bsc} {b} +\DeclareFontSeriesChangeRule {b}{sx} {bsx} {b} +\DeclareFontSeriesChangeRule {b}{x} {bx} {b} +\DeclareFontSeriesChangeRule {b}{ex} {bex} {b} +\DeclareFontSeriesChangeRule {b}{ux} {bux} {b} +\DeclareFontSeriesChangeRule {b}{sb} {sb} {b} +\DeclareFontSeriesChangeRule {b}{eb} {eb} {b} +\DeclareFontSeriesChangeRule {b}{ub} {ub} {b} +\DeclareFontSeriesChangeRule {bsx}{ul} {ulsx} {} +\DeclareFontSeriesChangeRule {bsx}{el} {elsx} {} +\DeclareFontSeriesChangeRule {bsx}{l} {lsx} {} +\DeclareFontSeriesChangeRule {bsx}{sl} {slsx} {} +\DeclareFontSeriesChangeRule {bsx}{sb} {sbsx} {bsx} +\DeclareFontSeriesChangeRule {bsx}{b} {bsx} {} +\DeclareFontSeriesChangeRule {bsx}{eb} {ebsx} {bsx} +\DeclareFontSeriesChangeRule {bsx}{ub} {ubsx} {bsx} +\DeclareFontSeriesChangeRule {bsx}{uc} {buc} {} +\DeclareFontSeriesChangeRule {bsx}{ec} {bec} {} +\DeclareFontSeriesChangeRule {bsx}{c} {bc} {} +\DeclareFontSeriesChangeRule {bsx}{sc} {bsc} {} +\DeclareFontSeriesChangeRule {bsx}{sx} {bsx} {} +\DeclareFontSeriesChangeRule {bsx}{x} {bx} {} +\DeclareFontSeriesChangeRule {bsx}{ex} {bex} {} +\DeclareFontSeriesChangeRule {bsx}{ux} {bux} {} +\DeclareFontSeriesChangeRule {bx}{ul} {ulx} {} +\DeclareFontSeriesChangeRule {bx}{el} {elx} {} +\DeclareFontSeriesChangeRule {bx}{l} {lx} {} +\DeclareFontSeriesChangeRule {bx}{sl} {slx} {} +\DeclareFontSeriesChangeRule {bx}{sb} {sbx} {bx} +\DeclareFontSeriesChangeRule {bx}{b} {bx} {} +\DeclareFontSeriesChangeRule {bx}{eb} {ebx} {bx} +\DeclareFontSeriesChangeRule {bx}{ub} {ubx} {bx} +\DeclareFontSeriesChangeRule {bx}{uc} {buc} {} +\DeclareFontSeriesChangeRule {bx}{ec} {bec} {} +\DeclareFontSeriesChangeRule {bx}{c} {bc} {} +\DeclareFontSeriesChangeRule {bx}{sc} {bsc} {} +\DeclareFontSeriesChangeRule {bx}{sx} {bsx} {} +\DeclareFontSeriesChangeRule {bx}{x} {bx} {} +\DeclareFontSeriesChangeRule {bx}{ex} {bex} {} +\DeclareFontSeriesChangeRule {bx}{ux} {bux} {} +\DeclareFontSeriesChangeRule {bex}{ul} {ulex} {} +\DeclareFontSeriesChangeRule {bex}{el} {elex} {} +\DeclareFontSeriesChangeRule {bex}{l} {lex} {} +\DeclareFontSeriesChangeRule {bex}{sl} {slex} {} +\DeclareFontSeriesChangeRule {bex}{sb} {sbex} {bex} +\DeclareFontSeriesChangeRule {bex}{b} {bex} {} +\DeclareFontSeriesChangeRule {bex}{eb} {ebex} {bex} +\DeclareFontSeriesChangeRule {bex}{ub} {ubex} {bex} +\DeclareFontSeriesChangeRule {bex}{uc} {buc} {} +\DeclareFontSeriesChangeRule {bex}{ec} {bec} {} +\DeclareFontSeriesChangeRule {bex}{c} {bc} {} +\DeclareFontSeriesChangeRule {bex}{sc} {bsc} {} +\DeclareFontSeriesChangeRule {bex}{sx} {bsx} {} +\DeclareFontSeriesChangeRule {bex}{x} {bx} {} +\DeclareFontSeriesChangeRule {bex}{ex} {bex} {} +\DeclareFontSeriesChangeRule {bex}{ux} {bux} {} +\DeclareFontSeriesChangeRule {bux}{ul} {ulux} {} +\DeclareFontSeriesChangeRule {bux}{el} {elux} {} +\DeclareFontSeriesChangeRule {bux}{l} {lux} {} +\DeclareFontSeriesChangeRule {bux}{sl} {slux} {} +\DeclareFontSeriesChangeRule {bux}{sb} {sbux} {bux} +\DeclareFontSeriesChangeRule {bux}{b} {bux} {} +\DeclareFontSeriesChangeRule {bux}{eb} {ebux} {bux} +\DeclareFontSeriesChangeRule {bux}{ub} {ubux} {bux} +\DeclareFontSeriesChangeRule {bux}{uc} {buc} {} +\DeclareFontSeriesChangeRule {bux}{ec} {bec} {} +\DeclareFontSeriesChangeRule {bux}{c} {bc} {} +\DeclareFontSeriesChangeRule {bux}{sc} {bsc} {} +\DeclareFontSeriesChangeRule {bux}{sx} {bsx} {} +\DeclareFontSeriesChangeRule {bux}{x} {bx} {} +\DeclareFontSeriesChangeRule {bux}{ex} {bex} {} +\DeclareFontSeriesChangeRule {bux}{ux} {bux} {} +\DeclareFontSeriesChangeRule {ebuc}{ul} {uluc} {} +\DeclareFontSeriesChangeRule {ebuc}{el} {eluc} {} +\DeclareFontSeriesChangeRule {ebuc}{l} {luc} {} +\DeclareFontSeriesChangeRule {ebuc}{sl} {sluc} {} +\DeclareFontSeriesChangeRule {ebuc}{sb} {sbuc} {buc} +\DeclareFontSeriesChangeRule {ebuc}{b} {buc} {} +\DeclareFontSeriesChangeRule {ebuc}{eb} {ebuc} {} +\DeclareFontSeriesChangeRule {ebuc}{ub} {ubuc} {ebuc} +\DeclareFontSeriesChangeRule {ebuc}{uc} {ebuc} {} +\DeclareFontSeriesChangeRule {ebuc}{ec} {ebec} {} +\DeclareFontSeriesChangeRule {ebuc}{c} {ebc} {} +\DeclareFontSeriesChangeRule {ebuc}{sc} {ebsc} {} +\DeclareFontSeriesChangeRule {ebuc}{sx} {ebsx} {} +\DeclareFontSeriesChangeRule {ebuc}{x} {ebx} {} +\DeclareFontSeriesChangeRule {ebuc}{ex} {ebex} {} +\DeclareFontSeriesChangeRule {ebuc}{ux} {ebux} {} +\DeclareFontSeriesChangeRule {ebec}{ul} {ulec} {} +\DeclareFontSeriesChangeRule {ebec}{el} {elec} {} +\DeclareFontSeriesChangeRule {ebec}{l} {lec} {} +\DeclareFontSeriesChangeRule {ebec}{sl} {slec} {} +\DeclareFontSeriesChangeRule {ebec}{sb} {sbec} {bec} +\DeclareFontSeriesChangeRule {ebec}{b} {bec} {} +\DeclareFontSeriesChangeRule {ebec}{eb} {ebec} {} +\DeclareFontSeriesChangeRule {ebec}{ub} {ubec} {ebec} +\DeclareFontSeriesChangeRule {ebec}{uc} {ebuc} {} +\DeclareFontSeriesChangeRule {ebec}{ec} {ebec} {} +\DeclareFontSeriesChangeRule {ebec}{c} {ebc} {} +\DeclareFontSeriesChangeRule {ebec}{sc} {ebsc} {} +\DeclareFontSeriesChangeRule {ebec}{sx} {ebsx} {} +\DeclareFontSeriesChangeRule {ebec}{x} {ebx} {} +\DeclareFontSeriesChangeRule {ebec}{ex} {ebex} {} +\DeclareFontSeriesChangeRule {ebec}{ux} {ebux} {} +\DeclareFontSeriesChangeRule {ebc}{ul} {ulc} {} +\DeclareFontSeriesChangeRule {ebc}{el} {elc} {} +\DeclareFontSeriesChangeRule {ebc}{l} {lc} {} +\DeclareFontSeriesChangeRule {ebc}{sl} {slc} {} +\DeclareFontSeriesChangeRule {ebc}{sb} {sbc} {bc} +\DeclareFontSeriesChangeRule {ebc}{b} {bc} {} +\DeclareFontSeriesChangeRule {ebc}{eb} {ebc} {} +\DeclareFontSeriesChangeRule {ebc}{ub} {ubc} {ebc} +\DeclareFontSeriesChangeRule {ebc}{uc} {ebuc} {} +\DeclareFontSeriesChangeRule {ebc}{ec} {ebec} {} +\DeclareFontSeriesChangeRule {ebc}{c} {ebc} {} +\DeclareFontSeriesChangeRule {ebc}{sc} {ebsc} {} +\DeclareFontSeriesChangeRule {ebc}{sx} {ebsx} {} +\DeclareFontSeriesChangeRule {ebc}{x} {ebx} {} +\DeclareFontSeriesChangeRule {ebc}{ex} {ebex} {} +\DeclareFontSeriesChangeRule {ebc}{ux} {ebux} {} +\DeclareFontSeriesChangeRule {ebsc}{ul} {ulsc} {} +\DeclareFontSeriesChangeRule {ebsc}{el} {elsc} {} +\DeclareFontSeriesChangeRule {ebsc}{l} {lsc} {} +\DeclareFontSeriesChangeRule {ebsc}{sl} {slsc} {} +\DeclareFontSeriesChangeRule {ebsc}{sb} {sbsc} {bsc} +\DeclareFontSeriesChangeRule {ebsc}{b} {bsc} {} +\DeclareFontSeriesChangeRule {ebsc}{eb} {ebsc} {} +\DeclareFontSeriesChangeRule {ebsc}{ub} {ubsc} {ebsc} +\DeclareFontSeriesChangeRule {ebsc}{uc} {ebuc} {} +\DeclareFontSeriesChangeRule {ebsc}{ec} {ebec} {} +\DeclareFontSeriesChangeRule {ebsc}{c} {ebc} {} +\DeclareFontSeriesChangeRule {ebsc}{sc} {ebsc} {} +\DeclareFontSeriesChangeRule {ebsc}{sx} {ebsx} {} +\DeclareFontSeriesChangeRule {ebsc}{x} {ebx} {} +\DeclareFontSeriesChangeRule {ebsc}{ex} {ebex} {} +\DeclareFontSeriesChangeRule {ebsc}{ux} {ebux} {} +\DeclareFontSeriesChangeRule {eb}{uc} {ebuc} {} +\DeclareFontSeriesChangeRule {eb}{ec} {ebec} {} +\DeclareFontSeriesChangeRule {eb}{c} {ebc} {} +\DeclareFontSeriesChangeRule {eb}{sc} {ebsc} {} +\DeclareFontSeriesChangeRule {eb}{sx} {ebsx} {} +\DeclareFontSeriesChangeRule {eb}{x} {ebx} {} +\DeclareFontSeriesChangeRule {eb}{ex} {ebex} {} +\DeclareFontSeriesChangeRule {eb}{ux} {ebux} {} +\DeclareFontSeriesChangeRule {eb}{sb} {sb} {b} +\DeclareFontSeriesChangeRule {eb}{ub} {ub} {eb} +\DeclareFontSeriesChangeRule {ebsx}{ul} {ulsx} {} +\DeclareFontSeriesChangeRule {ebsx}{el} {elsx} {} +\DeclareFontSeriesChangeRule {ebsx}{l} {lsx} {} +\DeclareFontSeriesChangeRule {ebsx}{sl} {slsx} {} +\DeclareFontSeriesChangeRule {ebsx}{sb} {sbsx} {bsx} +\DeclareFontSeriesChangeRule {ebsx}{b} {bsx} {} +\DeclareFontSeriesChangeRule {ebsx}{eb} {ebsx} {} +\DeclareFontSeriesChangeRule {ebsx}{ub} {ubsx} {ebsx} +\DeclareFontSeriesChangeRule {ebsx}{uc} {ebuc} {} +\DeclareFontSeriesChangeRule {ebsx}{ec} {ebec} {} +\DeclareFontSeriesChangeRule {ebsx}{c} {ebc} {} +\DeclareFontSeriesChangeRule {ebsx}{sc} {ebsc} {} +\DeclareFontSeriesChangeRule {ebsx}{sx} {ebsx} {} +\DeclareFontSeriesChangeRule {ebsx}{x} {ebx} {} +\DeclareFontSeriesChangeRule {ebsx}{ex} {ebex} {} +\DeclareFontSeriesChangeRule {ebsx}{ux} {ebux} {} +\DeclareFontSeriesChangeRule {ebx}{ul} {ulx} {} +\DeclareFontSeriesChangeRule {ebx}{el} {elx} {} +\DeclareFontSeriesChangeRule {ebx}{l} {lx} {} +\DeclareFontSeriesChangeRule {ebx}{sl} {slx} {} +\DeclareFontSeriesChangeRule {ebx}{sb} {sbx} {bx} +\DeclareFontSeriesChangeRule {ebx}{b} {bx} {} +\DeclareFontSeriesChangeRule {ebx}{eb} {ebx} {} +\DeclareFontSeriesChangeRule {ebx}{ub} {ubx} {ebx} +\DeclareFontSeriesChangeRule {ebx}{uc} {ebuc} {} +\DeclareFontSeriesChangeRule {ebx}{ec} {ebec} {} +\DeclareFontSeriesChangeRule {ebx}{c} {ebc} {} +\DeclareFontSeriesChangeRule {ebx}{sc} {ebsc} {} +\DeclareFontSeriesChangeRule {ebx}{sx} {ebsx} {} +\DeclareFontSeriesChangeRule {ebx}{x} {ebx} {} +\DeclareFontSeriesChangeRule {ebx}{ex} {ebex} {} +\DeclareFontSeriesChangeRule {ebx}{ux} {ebux} {} +\DeclareFontSeriesChangeRule {ebex}{ul} {ulex} {} +\DeclareFontSeriesChangeRule {ebex}{el} {elex} {} +\DeclareFontSeriesChangeRule {ebex}{l} {lex} {} +\DeclareFontSeriesChangeRule {ebex}{sl} {slex} {} +\DeclareFontSeriesChangeRule {ebex}{sb} {sbex} {bex} +\DeclareFontSeriesChangeRule {ebex}{b} {bex} {} +\DeclareFontSeriesChangeRule {ebex}{eb} {ebex} {} +\DeclareFontSeriesChangeRule {ebex}{ub} {ubex} {ebex} +\DeclareFontSeriesChangeRule {ebex}{uc} {ebuc} {} +\DeclareFontSeriesChangeRule {ebex}{ec} {ebec} {} +\DeclareFontSeriesChangeRule {ebex}{c} {ebc} {} +\DeclareFontSeriesChangeRule {ebex}{sc} {ebsc} {} +\DeclareFontSeriesChangeRule {ebex}{sx} {ebsx} {} +\DeclareFontSeriesChangeRule {ebex}{x} {ebx} {} +\DeclareFontSeriesChangeRule {ebex}{ex} {ebex} {} +\DeclareFontSeriesChangeRule {ebex}{ux} {ebux} {} +\DeclareFontSeriesChangeRule {ebux}{ul} {ulux} {} +\DeclareFontSeriesChangeRule {ebux}{el} {elux} {} +\DeclareFontSeriesChangeRule {ebux}{l} {lux} {} +\DeclareFontSeriesChangeRule {ebux}{sl} {slux} {} +\DeclareFontSeriesChangeRule {ebux}{sb} {sbux} {bux} +\DeclareFontSeriesChangeRule {ebux}{b} {bux} {} +\DeclareFontSeriesChangeRule {ebux}{eb} {ebux} {} +\DeclareFontSeriesChangeRule {ebux}{ub} {ubux} {ebux} +\DeclareFontSeriesChangeRule {ebux}{uc} {ebuc} {} +\DeclareFontSeriesChangeRule {ebux}{ec} {ebec} {} +\DeclareFontSeriesChangeRule {ebux}{c} {ebc} {} +\DeclareFontSeriesChangeRule {ebux}{sc} {ebsc} {} +\DeclareFontSeriesChangeRule {ebux}{sx} {ebsx} {} +\DeclareFontSeriesChangeRule {ebux}{x} {ebx} {} +\DeclareFontSeriesChangeRule {ebux}{ex} {ebex} {} +\DeclareFontSeriesChangeRule {ebux}{ux} {ebux} {} +\DeclareFontSeriesChangeRule {ubuc}{ul} {uluc} {} +\DeclareFontSeriesChangeRule {ubuc}{el} {eluc} {} +\DeclareFontSeriesChangeRule {ubuc}{l} {luc} {} +\DeclareFontSeriesChangeRule {ubuc}{sl} {sluc} {} +\DeclareFontSeriesChangeRule {ubuc}{sb} {sbuc} {buc} +\DeclareFontSeriesChangeRule {ubuc}{b} {buc} {} +\DeclareFontSeriesChangeRule {ubuc}{eb} {ebuc} {ubuc} +\DeclareFontSeriesChangeRule {ubuc}{ub} {ubuc} {} +\DeclareFontSeriesChangeRule {ubuc}{uc} {ubuc} {} +\DeclareFontSeriesChangeRule {ubuc}{ec} {ubec} {} +\DeclareFontSeriesChangeRule {ubuc}{c} {ubc} {} +\DeclareFontSeriesChangeRule {ubuc}{sc} {ubsc} {} +\DeclareFontSeriesChangeRule {ubuc}{sx} {ubsx} {} +\DeclareFontSeriesChangeRule {ubuc}{x} {ubx} {} +\DeclareFontSeriesChangeRule {ubuc}{ex} {ubex} {} +\DeclareFontSeriesChangeRule {ubuc}{ux} {ubux} {} +\DeclareFontSeriesChangeRule {ubec}{ul} {ulec} {} +\DeclareFontSeriesChangeRule {ubec}{el} {elec} {} +\DeclareFontSeriesChangeRule {ubec}{l} {lec} {} +\DeclareFontSeriesChangeRule {ubec}{sl} {slec} {} +\DeclareFontSeriesChangeRule {ubec}{sb} {sbec} {bec} +\DeclareFontSeriesChangeRule {ubec}{b} {bec} {} +\DeclareFontSeriesChangeRule {ubec}{eb} {ebec} {ubec} +\DeclareFontSeriesChangeRule {ubec}{ub} {ubec} {} +\DeclareFontSeriesChangeRule {ubec}{uc} {ubuc} {} +\DeclareFontSeriesChangeRule {ubec}{ec} {ubec} {} +\DeclareFontSeriesChangeRule {ubec}{c} {ubc} {} +\DeclareFontSeriesChangeRule {ubec}{sc} {ubsc} {} +\DeclareFontSeriesChangeRule {ubec}{sx} {ubsx} {} +\DeclareFontSeriesChangeRule {ubec}{x} {ubx} {} +\DeclareFontSeriesChangeRule {ubec}{ex} {ubex} {} +\DeclareFontSeriesChangeRule {ubec}{ux} {ubux} {} +\DeclareFontSeriesChangeRule {ubc}{ul} {ulc} {} +\DeclareFontSeriesChangeRule {ubc}{el} {elc} {} +\DeclareFontSeriesChangeRule {ubc}{l} {lc} {} +\DeclareFontSeriesChangeRule {ubc}{sl} {slc} {} +\DeclareFontSeriesChangeRule {ubc}{sb} {sbc} {bc} +\DeclareFontSeriesChangeRule {ubc}{b} {bc} {} +\DeclareFontSeriesChangeRule {ubc}{eb} {ebc} {ubc} +\DeclareFontSeriesChangeRule {ubc}{ub} {ubc} {} +\DeclareFontSeriesChangeRule {ubc}{uc} {ubuc} {} +\DeclareFontSeriesChangeRule {ubc}{ec} {ubec} {} +\DeclareFontSeriesChangeRule {ubc}{c} {ubc} {} +\DeclareFontSeriesChangeRule {ubc}{sc} {ubsc} {} +\DeclareFontSeriesChangeRule {ubc}{sx} {ubsx} {} +\DeclareFontSeriesChangeRule {ubc}{x} {ubx} {} +\DeclareFontSeriesChangeRule {ubc}{ex} {ubex} {} +\DeclareFontSeriesChangeRule {ubc}{ux} {ubux} {} +\DeclareFontSeriesChangeRule {ubsc}{ul} {ulsc} {} +\DeclareFontSeriesChangeRule {ubsc}{el} {elsc} {} +\DeclareFontSeriesChangeRule {ubsc}{l} {lsc} {} +\DeclareFontSeriesChangeRule {ubsc}{sl} {slsc} {} +\DeclareFontSeriesChangeRule {ubsc}{sb} {sbsc} {bsc} +\DeclareFontSeriesChangeRule {ubsc}{b} {bsc} {} +\DeclareFontSeriesChangeRule {ubsc}{eb} {ebsc} {ubsc} +\DeclareFontSeriesChangeRule {ubsc}{ub} {ubsc} {} +\DeclareFontSeriesChangeRule {ubsc}{uc} {ubuc} {} +\DeclareFontSeriesChangeRule {ubsc}{ec} {ubec} {} +\DeclareFontSeriesChangeRule {ubsc}{c} {ubc} {} +\DeclareFontSeriesChangeRule {ubsc}{sc} {ubsc} {} +\DeclareFontSeriesChangeRule {ubsc}{sx} {ubsx} {} +\DeclareFontSeriesChangeRule {ubsc}{x} {ubx} {} +\DeclareFontSeriesChangeRule {ubsc}{ex} {ubex} {} +\DeclareFontSeriesChangeRule {ubsc}{ux} {ubux} {} +\DeclareFontSeriesChangeRule {ub}{uc} {ubuc} {} +\DeclareFontSeriesChangeRule {ub}{ec} {ubec} {} +\DeclareFontSeriesChangeRule {ub}{c} {ubc} {} +\DeclareFontSeriesChangeRule {ub}{sc} {ubsc} {} +\DeclareFontSeriesChangeRule {ub}{sx} {ubsx} {} +\DeclareFontSeriesChangeRule {ub}{x} {ubx} {} +\DeclareFontSeriesChangeRule {ub}{ex} {ubex} {} +\DeclareFontSeriesChangeRule {ub}{ux} {ubux} {} +\DeclareFontSeriesChangeRule {ub}{sb} {sb} {b} +\DeclareFontSeriesChangeRule {ub}{eb} {eb} {ub} +\DeclareFontSeriesChangeRule {ubsx}{ul} {ulsx} {} +\DeclareFontSeriesChangeRule {ubsx}{el} {elsx} {} +\DeclareFontSeriesChangeRule {ubsx}{l} {lsx} {} +\DeclareFontSeriesChangeRule {ubsx}{sl} {slsx} {} +\DeclareFontSeriesChangeRule {ubsx}{sb} {sbsx} {bsx} +\DeclareFontSeriesChangeRule {ubsx}{b} {bsx} {} +\DeclareFontSeriesChangeRule {ubsx}{eb} {ebsx} {ubsx} +\DeclareFontSeriesChangeRule {ubsx}{ub} {ubsx} {} +\DeclareFontSeriesChangeRule {ubsx}{uc} {ubuc} {} +\DeclareFontSeriesChangeRule {ubsx}{ec} {ubec} {} +\DeclareFontSeriesChangeRule {ubsx}{c} {ubc} {} +\DeclareFontSeriesChangeRule {ubsx}{sc} {ubsc} {} +\DeclareFontSeriesChangeRule {ubsx}{sx} {ubsx} {} +\DeclareFontSeriesChangeRule {ubsx}{x} {ubx} {} +\DeclareFontSeriesChangeRule {ubsx}{ex} {ubex} {} +\DeclareFontSeriesChangeRule {ubsx}{ux} {ubux} {} +\DeclareFontSeriesChangeRule {ubx}{ul} {ulx} {} +\DeclareFontSeriesChangeRule {ubx}{el} {elx} {} +\DeclareFontSeriesChangeRule {ubx}{l} {lx} {} +\DeclareFontSeriesChangeRule {ubx}{sl} {slx} {} +\DeclareFontSeriesChangeRule {ubx}{sb} {sbx} {bx} +\DeclareFontSeriesChangeRule {ubx}{b} {bx} {} +\DeclareFontSeriesChangeRule {ubx}{eb} {ebx} {ubx} +\DeclareFontSeriesChangeRule {ubx}{ub} {ubx} {} +\DeclareFontSeriesChangeRule {ubx}{uc} {ubuc} {} +\DeclareFontSeriesChangeRule {ubx}{ec} {ubec} {} +\DeclareFontSeriesChangeRule {ubx}{c} {ubc} {} +\DeclareFontSeriesChangeRule {ubx}{sc} {ubsc} {} +\DeclareFontSeriesChangeRule {ubx}{sx} {ubsx} {} +\DeclareFontSeriesChangeRule {ubx}{x} {ubx} {} +\DeclareFontSeriesChangeRule {ubx}{ex} {ubex} {} +\DeclareFontSeriesChangeRule {ubx}{ux} {ubux} {} +\DeclareFontSeriesChangeRule {ubex}{ul} {ulex} {} +\DeclareFontSeriesChangeRule {ubex}{el} {elex} {} +\DeclareFontSeriesChangeRule {ubex}{l} {lex} {} +\DeclareFontSeriesChangeRule {ubex}{sl} {slex} {} +\DeclareFontSeriesChangeRule {ubex}{sb} {sbex} {bex} +\DeclareFontSeriesChangeRule {ubex}{b} {bex} {} +\DeclareFontSeriesChangeRule {ubex}{eb} {ebex} {ubex} +\DeclareFontSeriesChangeRule {ubex}{ub} {ubex} {} +\DeclareFontSeriesChangeRule {ubex}{uc} {ubuc} {} +\DeclareFontSeriesChangeRule {ubex}{ec} {ubec} {} +\DeclareFontSeriesChangeRule {ubex}{c} {ubc} {} +\DeclareFontSeriesChangeRule {ubex}{sc} {ubsc} {} +\DeclareFontSeriesChangeRule {ubex}{sx} {ubsx} {} +\DeclareFontSeriesChangeRule {ubex}{x} {ubx} {} +\DeclareFontSeriesChangeRule {ubex}{ex} {ubex} {} +\DeclareFontSeriesChangeRule {ubex}{ux} {ubux} {} +\DeclareFontSeriesChangeRule {ubux}{ul} {ulux} {} +\DeclareFontSeriesChangeRule {ubux}{el} {elux} {} +\DeclareFontSeriesChangeRule {ubux}{l} {lux} {} +\DeclareFontSeriesChangeRule {ubux}{sl} {slux} {} +\DeclareFontSeriesChangeRule {ubux}{sb} {sbux} {bux} +\DeclareFontSeriesChangeRule {ubux}{b} {bux} {} +\DeclareFontSeriesChangeRule {ubux}{eb} {ebux} {ubux} +\DeclareFontSeriesChangeRule {ubux}{ub} {ubux} {} +\DeclareFontSeriesChangeRule {ubux}{uc} {ubuc} {} +\DeclareFontSeriesChangeRule {ubux}{ec} {ubec} {} +\DeclareFontSeriesChangeRule {ubux}{c} {ubc} {} +\DeclareFontSeriesChangeRule {ubux}{sc} {ubsc} {} +\DeclareFontSeriesChangeRule {ubux}{sx} {ubsx} {} +\DeclareFontSeriesChangeRule {ubux}{x} {ubx} {} +\DeclareFontSeriesChangeRule {ubux}{ex} {ubex} {} +\DeclareFontSeriesChangeRule {ubux}{ux} {ubux} {} +\DeclareFontSeriesChangeRule {uluc}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {ulec}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {ulc}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {ulsc}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {ul}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {ulsx}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {ulx}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {ulex}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {ulux}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {eluc}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {elec}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {elc}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {elsc}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {el}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {elsx}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {elx}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {elex}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {elux}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {luc}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {lec}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {lc}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {lsc}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {l}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {lsx}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {lx}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {lex}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {lux}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {sluc}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {slec}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {slc}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {slsc}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {sl}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {slsx}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {slx}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {slex}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {slux}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {sbuc}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {sbec}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {sbc}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {sbsc}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {sb}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {sbsx}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {sbx}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {sbex}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {sbux}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {buc}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {bec}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {bc}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {bsc}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {b}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {bsx}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {bx}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {bex}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {bux}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {ebuc}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {ebec}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {ebc}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {ebsc}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {eb}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {ebsx}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {ebx}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {ebex}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {ebux}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {ubuc}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {ubec}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {ubc}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {ubsc}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {ub}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {ubsx}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {ubx}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {ubex}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {ubux}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {uc}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {ec}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {c}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {sc}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {m}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {sx}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {x}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {ex}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {ux}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {uluc}{m?} {uc} {} +\DeclareFontSeriesChangeRule {ulec}{m?} {ec} {} +\DeclareFontSeriesChangeRule {ulc}{m?} {c} {} +\DeclareFontSeriesChangeRule {ulsc}{m?} {sc} {} +\DeclareFontSeriesChangeRule {ul}{m?} {m} {} +\DeclareFontSeriesChangeRule {ulsx}{m?} {sx} {} +\DeclareFontSeriesChangeRule {ulx}{m?} {x} {} +\DeclareFontSeriesChangeRule {ulex}{m?} {ex} {} +\DeclareFontSeriesChangeRule {ulux}{m?} {ux} {} +\DeclareFontSeriesChangeRule {eluc}{m?} {uc} {} +\DeclareFontSeriesChangeRule {elec}{m?} {ec} {} +\DeclareFontSeriesChangeRule {elc}{m?} {c} {} +\DeclareFontSeriesChangeRule {elsc}{m?} {sc} {} +\DeclareFontSeriesChangeRule {el}{m?} {m} {} +\DeclareFontSeriesChangeRule {elsx}{m?} {sx} {} +\DeclareFontSeriesChangeRule {elx}{m?} {x} {} +\DeclareFontSeriesChangeRule {elex}{m?} {ex} {} +\DeclareFontSeriesChangeRule {elux}{m?} {ux} {} +\DeclareFontSeriesChangeRule {luc}{m?} {uc} {} +\DeclareFontSeriesChangeRule {lec}{m?} {ec} {} +\DeclareFontSeriesChangeRule {lc}{m?} {c} {} +\DeclareFontSeriesChangeRule {lsc}{m?} {sc} {} +\DeclareFontSeriesChangeRule {l}{m?} {m} {} +\DeclareFontSeriesChangeRule {lsx}{m?} {sx} {} +\DeclareFontSeriesChangeRule {lx}{m?} {x} {} +\DeclareFontSeriesChangeRule {lex}{m?} {ex} {} +\DeclareFontSeriesChangeRule {lux}{m?} {ux} {} +\DeclareFontSeriesChangeRule {sluc}{m?} {uc} {} +\DeclareFontSeriesChangeRule {slec}{m?} {ec} {} +\DeclareFontSeriesChangeRule {slc}{m?} {c} {} +\DeclareFontSeriesChangeRule {slsc}{m?} {sc} {} +\DeclareFontSeriesChangeRule {sl}{m?} {m} {} +\DeclareFontSeriesChangeRule {slsx}{m?} {sx} {} +\DeclareFontSeriesChangeRule {slx}{m?} {x} {} +\DeclareFontSeriesChangeRule {slex}{m?} {ex} {} +\DeclareFontSeriesChangeRule {slux}{m?} {ux} {} +\DeclareFontSeriesChangeRule {uc}{m?} {uc} {} +\DeclareFontSeriesChangeRule {ec}{m?} {ec} {} +\DeclareFontSeriesChangeRule {c}{m?} {c} {} +\DeclareFontSeriesChangeRule {sc}{m?} {sc} {} +\DeclareFontSeriesChangeRule {m}{m?} {m} {} +\DeclareFontSeriesChangeRule {sx}{m?} {sx} {} +\DeclareFontSeriesChangeRule {x}{m?} {x} {} +\DeclareFontSeriesChangeRule {ex}{m?} {ex} {} +\DeclareFontSeriesChangeRule {ux}{m?} {ux} {} +\DeclareFontSeriesChangeRule {sbuc}{m?} {uc} {} +\DeclareFontSeriesChangeRule {sbec}{m?} {ec} {} +\DeclareFontSeriesChangeRule {sbc}{m?} {c} {} +\DeclareFontSeriesChangeRule {sbsc}{m?} {sc} {} +\DeclareFontSeriesChangeRule {sb}{m?} {m} {} +\DeclareFontSeriesChangeRule {sbsx}{m?} {sx} {} +\DeclareFontSeriesChangeRule {sbx}{m?} {x} {} +\DeclareFontSeriesChangeRule {sbex}{m?} {ex} {} +\DeclareFontSeriesChangeRule {sbux}{m?} {ux} {} +\DeclareFontSeriesChangeRule {buc}{m?} {uc} {} +\DeclareFontSeriesChangeRule {bec}{m?} {ec} {} +\DeclareFontSeriesChangeRule {bc}{m?} {c} {} +\DeclareFontSeriesChangeRule {bsc}{m?} {sc} {} +\DeclareFontSeriesChangeRule {b}{m?} {m} {} +\DeclareFontSeriesChangeRule {bsx}{m?} {sx} {} +\DeclareFontSeriesChangeRule {bx}{m?} {x} {} +\DeclareFontSeriesChangeRule {bex}{m?} {ex} {} +\DeclareFontSeriesChangeRule {bux}{m?} {ux} {} +\DeclareFontSeriesChangeRule {ebuc}{m?} {uc} {} +\DeclareFontSeriesChangeRule {ebec}{m?} {ec} {} +\DeclareFontSeriesChangeRule {ebc}{m?} {c} {} +\DeclareFontSeriesChangeRule {ebsc}{m?} {sc} {} +\DeclareFontSeriesChangeRule {eb}{m?} {m} {} +\DeclareFontSeriesChangeRule {ebsx}{m?} {sx} {} +\DeclareFontSeriesChangeRule {ebx}{m?} {x} {} +\DeclareFontSeriesChangeRule {ebex}{m?} {ex} {} +\DeclareFontSeriesChangeRule {ebux}{m?} {ux} {} +\DeclareFontSeriesChangeRule {ubuc}{m?} {uc} {} +\DeclareFontSeriesChangeRule {ubec}{m?} {ec} {} +\DeclareFontSeriesChangeRule {ubc}{m?} {c} {} +\DeclareFontSeriesChangeRule {ubsc}{m?} {sc} {} +\DeclareFontSeriesChangeRule {ub}{m?} {m} {} +\DeclareFontSeriesChangeRule {ubsx}{m?} {sx} {} +\DeclareFontSeriesChangeRule {ubx}{m?} {x} {} +\DeclareFontSeriesChangeRule {ubex}{m?} {ex} {} +\DeclareFontSeriesChangeRule {ubux}{m?} {ux} {} +\DeclareFontSeriesChangeRule {uluc}{?m} {ul} {} +\DeclareFontSeriesChangeRule {ulec}{?m} {ul} {} +\DeclareFontSeriesChangeRule {ulc}{?m} {ul} {} +\DeclareFontSeriesChangeRule {ulsc}{?m} {ul} {} +\DeclareFontSeriesChangeRule {ul}{?m} {ul} {} +\DeclareFontSeriesChangeRule {ulsx}{?m} {ul} {} +\DeclareFontSeriesChangeRule {ulx}{?m} {ul} {} +\DeclareFontSeriesChangeRule {ulex}{?m} {ul} {} +\DeclareFontSeriesChangeRule {ulux}{?m} {ul} {} +\DeclareFontSeriesChangeRule {eluc}{?m} {el} {} +\DeclareFontSeriesChangeRule {elec}{?m} {el} {} +\DeclareFontSeriesChangeRule {elc}{?m} {el} {} +\DeclareFontSeriesChangeRule {elsc}{?m} {el} {} +\DeclareFontSeriesChangeRule {el}{?m} {el} {} +\DeclareFontSeriesChangeRule {elsx}{?m} {el} {} +\DeclareFontSeriesChangeRule {elx}{?m} {el} {} +\DeclareFontSeriesChangeRule {elex}{?m} {el} {} +\DeclareFontSeriesChangeRule {elux}{?m} {el} {} +\DeclareFontSeriesChangeRule {luc}{?m} {l} {} +\DeclareFontSeriesChangeRule {lec}{?m} {l} {} +\DeclareFontSeriesChangeRule {lc}{?m} {l} {} +\DeclareFontSeriesChangeRule {lsc}{?m} {l} {} +\DeclareFontSeriesChangeRule {l}{?m} {l} {} +\DeclareFontSeriesChangeRule {lsx}{?m} {l} {} +\DeclareFontSeriesChangeRule {lx}{?m} {l} {} +\DeclareFontSeriesChangeRule {lex}{?m} {l} {} +\DeclareFontSeriesChangeRule {lux}{?m} {l} {} +\DeclareFontSeriesChangeRule {sluc}{?m} {sl} {} +\DeclareFontSeriesChangeRule {slec}{?m} {sl} {} +\DeclareFontSeriesChangeRule {slc}{?m} {sl} {} +\DeclareFontSeriesChangeRule {slsc}{?m} {sl} {} +\DeclareFontSeriesChangeRule {sl}{?m} {sl} {} +\DeclareFontSeriesChangeRule {slsx}{?m} {sl} {} +\DeclareFontSeriesChangeRule {slx}{?m} {sl} {} +\DeclareFontSeriesChangeRule {slex}{?m} {sl} {} +\DeclareFontSeriesChangeRule {slux}{?m} {sl} {} +\DeclareFontSeriesChangeRule {uc}{?m} {m} {} +\DeclareFontSeriesChangeRule {ec}{?m} {m} {} +\DeclareFontSeriesChangeRule {c}{?m} {m} {} +\DeclareFontSeriesChangeRule {sc}{?m} {m} {} +\DeclareFontSeriesChangeRule {m}{?m} {m} {} +\DeclareFontSeriesChangeRule {sx}{?m} {m} {} +\DeclareFontSeriesChangeRule {x}{?m} {m} {} +\DeclareFontSeriesChangeRule {ex}{?m} {m} {} +\DeclareFontSeriesChangeRule {ux}{?m} {m} {} +\DeclareFontSeriesChangeRule {sbuc}{?m} {sb} {} +\DeclareFontSeriesChangeRule {sbec}{?m} {sb} {} +\DeclareFontSeriesChangeRule {sbc}{?m} {sb} {} +\DeclareFontSeriesChangeRule {sbsc}{?m} {sb} {} +\DeclareFontSeriesChangeRule {sb}{?m} {sb} {} +\DeclareFontSeriesChangeRule {sbsx}{?m} {sb} {} +\DeclareFontSeriesChangeRule {sbx}{?m} {sb} {} +\DeclareFontSeriesChangeRule {sbex}{?m} {sb} {} +\DeclareFontSeriesChangeRule {sbux}{?m} {sb} {} +\DeclareFontSeriesChangeRule {buc}{?m} {b} {} +\DeclareFontSeriesChangeRule {bec}{?m} {b} {} +\DeclareFontSeriesChangeRule {bc}{?m} {b} {} +\DeclareFontSeriesChangeRule {bsc}{?m} {b} {} +\DeclareFontSeriesChangeRule {b}{?m} {b} {} +\DeclareFontSeriesChangeRule {bsx}{?m} {b} {} +\DeclareFontSeriesChangeRule {bx}{?m} {b} {} +\DeclareFontSeriesChangeRule {bex}{?m} {b} {} +\DeclareFontSeriesChangeRule {bux}{?m} {b} {} +\DeclareFontSeriesChangeRule {ebuc}{?m} {eb} {} +\DeclareFontSeriesChangeRule {ebec}{?m} {eb} {} +\DeclareFontSeriesChangeRule {ebc}{?m} {eb} {} +\DeclareFontSeriesChangeRule {ebsc}{?m} {eb} {} +\DeclareFontSeriesChangeRule {eb}{?m} {eb} {} +\DeclareFontSeriesChangeRule {ebsx}{?m} {eb} {} +\DeclareFontSeriesChangeRule {ebx}{?m} {eb} {} +\DeclareFontSeriesChangeRule {ebex}{?m} {eb} {} +\DeclareFontSeriesChangeRule {ebux}{?m} {eb} {} +\DeclareFontSeriesChangeRule {ubuc}{?m} {ub} {} +\DeclareFontSeriesChangeRule {ubec}{?m} {ub} {} +\DeclareFontSeriesChangeRule {ubc}{?m} {ub} {} +\DeclareFontSeriesChangeRule {ubsc}{?m} {ub} {} +\DeclareFontSeriesChangeRule {ub}{?m} {ub} {} +\DeclareFontSeriesChangeRule {ubsx}{?m} {ub} {} +\DeclareFontSeriesChangeRule {ubx}{?m} {ub} {} +\DeclareFontSeriesChangeRule {ubex}{?m} {ub} {} +\DeclareFontSeriesChangeRule {ubux}{?m} {ub} {} +\EndIncludeInRelease \IncludeInRelease{2020/02/02}% {\DeclareFontSeriesChangeRule}{Series change rules}% + \def\DeclareFontSeriesChangeRule#1#2#3#4{% \@namedef{series@#1@#2}{{#3}{#4}}} + +\DeclareFontSeriesChangeRule {bc}{bx} {} {} \DeclareFontSeriesChangeRule {bc}{b}{bc}{} \DeclareFontSeriesChangeRule {bc}{c}{bc}{} \DeclareFontSeriesChangeRule {bc}{eb}{ebc}{} \DeclareFontSeriesChangeRule {bc}{ec}{bec} {bc} \DeclareFontSeriesChangeRule {bc}{el}{elc}{} +\DeclareFontSeriesChangeRule {bc}{ex} {} {} \DeclareFontSeriesChangeRule {bc}{l}{lc}{} \DeclareFontSeriesChangeRule {bc}{sb}{sbc}{} \DeclareFontSeriesChangeRule {bc}{sc}{bsc} {bc} \DeclareFontSeriesChangeRule {bc}{sl}{slc}{} +\DeclareFontSeriesChangeRule {bc}{sx} {} {} \DeclareFontSeriesChangeRule {bc}{ub}{ubc}{} +\DeclareFontSeriesChangeRule {bc}{uc} {} {} \DeclareFontSeriesChangeRule {bc}{ul}{ulc}{} +\DeclareFontSeriesChangeRule {bc}{ux} {} {} \DeclareFontSeriesChangeRule {bc}{x}{bx}{} +\DeclareFontSeriesChangeRule {bec}{bx} {} {} +\DeclareFontSeriesChangeRule {bec}{b} {} {} +\DeclareFontSeriesChangeRule {bec}{c} {} {} +\DeclareFontSeriesChangeRule {bec}{eb} {} {} +\DeclareFontSeriesChangeRule {bec}{ec} {} {} +\DeclareFontSeriesChangeRule {bec}{el} {} {} +\DeclareFontSeriesChangeRule {bec}{ex} {} {} +\DeclareFontSeriesChangeRule {bec}{l} {} {} +\DeclareFontSeriesChangeRule {bec}{sb} {} {} +\DeclareFontSeriesChangeRule {bec}{sc} {} {} +\DeclareFontSeriesChangeRule {bec}{sl} {} {} +\DeclareFontSeriesChangeRule {bec}{sx} {} {} +\DeclareFontSeriesChangeRule {bec}{ub} {} {} +\DeclareFontSeriesChangeRule {bec}{uc} {} {} +\DeclareFontSeriesChangeRule {bec}{ul} {} {} +\DeclareFontSeriesChangeRule {bec}{ux} {} {} +\DeclareFontSeriesChangeRule {bec}{x} {} {} +\DeclareFontSeriesChangeRule {bex}{?m} {} {} +\DeclareFontSeriesChangeRule {bex}{bx} {} {} +\DeclareFontSeriesChangeRule {bex}{b} {} {} +\DeclareFontSeriesChangeRule {bex}{c} {} {} +\DeclareFontSeriesChangeRule {bex}{eb} {} {} +\DeclareFontSeriesChangeRule {bex}{ec} {} {} +\DeclareFontSeriesChangeRule {bex}{el} {} {} +\DeclareFontSeriesChangeRule {bex}{ex} {} {} +\DeclareFontSeriesChangeRule {bex}{l} {} {} +\DeclareFontSeriesChangeRule {bex}{m?} {} {} +\DeclareFontSeriesChangeRule {bex}{sb} {} {} +\DeclareFontSeriesChangeRule {bex}{sc} {} {} +\DeclareFontSeriesChangeRule {bex}{sl} {} {} +\DeclareFontSeriesChangeRule {bex}{sx} {} {} +\DeclareFontSeriesChangeRule {bex}{ub} {} {} +\DeclareFontSeriesChangeRule {bex}{uc} {} {} +\DeclareFontSeriesChangeRule {bex}{ul} {} {} +\DeclareFontSeriesChangeRule {bex}{ux} {} {} +\DeclareFontSeriesChangeRule {bex}{x} {} {} +\DeclareFontSeriesChangeRule {bsc}{bx} {} {} +\DeclareFontSeriesChangeRule {bsc}{b} {} {} +\DeclareFontSeriesChangeRule {bsc}{c} {} {} +\DeclareFontSeriesChangeRule {bsc}{eb} {} {} +\DeclareFontSeriesChangeRule {bsc}{ec} {} {} +\DeclareFontSeriesChangeRule {bsc}{el} {} {} +\DeclareFontSeriesChangeRule {bsc}{ex} {} {} +\DeclareFontSeriesChangeRule {bsc}{l} {} {} +\DeclareFontSeriesChangeRule {bsc}{sb} {} {} +\DeclareFontSeriesChangeRule {bsc}{sc} {} {} +\DeclareFontSeriesChangeRule {bsc}{sl} {} {} +\DeclareFontSeriesChangeRule {bsc}{sx} {} {} +\DeclareFontSeriesChangeRule {bsc}{ub} {} {} +\DeclareFontSeriesChangeRule {bsc}{uc} {} {} +\DeclareFontSeriesChangeRule {bsc}{ul} {} {} +\DeclareFontSeriesChangeRule {bsc}{ux} {} {} +\DeclareFontSeriesChangeRule {bsc}{x} {} {} +\DeclareFontSeriesChangeRule {bsx}{?m} {} {} +\DeclareFontSeriesChangeRule {bsx}{bx} {} {} +\DeclareFontSeriesChangeRule {bsx}{b} {} {} +\DeclareFontSeriesChangeRule {bsx}{c} {} {} +\DeclareFontSeriesChangeRule {bsx}{eb} {} {} +\DeclareFontSeriesChangeRule {bsx}{ec} {} {} +\DeclareFontSeriesChangeRule {bsx}{el} {} {} +\DeclareFontSeriesChangeRule {bsx}{ex} {} {} +\DeclareFontSeriesChangeRule {bsx}{l} {} {} +\DeclareFontSeriesChangeRule {bsx}{m?} {} {} +\DeclareFontSeriesChangeRule {bsx}{sb} {} {} +\DeclareFontSeriesChangeRule {bsx}{sc} {} {} +\DeclareFontSeriesChangeRule {bsx}{sl} {} {} +\DeclareFontSeriesChangeRule {bsx}{sx} {} {} +\DeclareFontSeriesChangeRule {bsx}{ub} {} {} +\DeclareFontSeriesChangeRule {bsx}{uc} {} {} +\DeclareFontSeriesChangeRule {bsx}{ul} {} {} +\DeclareFontSeriesChangeRule {bsx}{ux} {} {} +\DeclareFontSeriesChangeRule {bsx}{x} {} {} +\DeclareFontSeriesChangeRule {buc}{?m} {} {} +\DeclareFontSeriesChangeRule {buc}{bx} {} {} +\DeclareFontSeriesChangeRule {buc}{b} {} {} +\DeclareFontSeriesChangeRule {buc}{c} {} {} +\DeclareFontSeriesChangeRule {buc}{eb} {} {} +\DeclareFontSeriesChangeRule {buc}{ec} {} {} +\DeclareFontSeriesChangeRule {buc}{el} {} {} +\DeclareFontSeriesChangeRule {buc}{ex} {} {} +\DeclareFontSeriesChangeRule {buc}{l} {} {} +\DeclareFontSeriesChangeRule {buc}{m?} {} {} +\DeclareFontSeriesChangeRule {buc}{sb} {} {} +\DeclareFontSeriesChangeRule {buc}{sc} {} {} +\DeclareFontSeriesChangeRule {buc}{sl} {} {} +\DeclareFontSeriesChangeRule {buc}{sx} {} {} +\DeclareFontSeriesChangeRule {buc}{ub} {} {} +\DeclareFontSeriesChangeRule {buc}{uc} {} {} +\DeclareFontSeriesChangeRule {buc}{ul} {} {} +\DeclareFontSeriesChangeRule {buc}{ux} {} {} +\DeclareFontSeriesChangeRule {buc}{x} {} {} +\DeclareFontSeriesChangeRule {bux}{?m} {} {} +\DeclareFontSeriesChangeRule {bux}{bx} {} {} +\DeclareFontSeriesChangeRule {bux}{b} {} {} +\DeclareFontSeriesChangeRule {bux}{c} {} {} +\DeclareFontSeriesChangeRule {bux}{eb} {} {} +\DeclareFontSeriesChangeRule {bux}{ec} {} {} +\DeclareFontSeriesChangeRule {bux}{el} {} {} +\DeclareFontSeriesChangeRule {bux}{ex} {} {} +\DeclareFontSeriesChangeRule {bux}{l} {} {} +\DeclareFontSeriesChangeRule {bux}{m?} {} {} +\DeclareFontSeriesChangeRule {bux}{sb} {} {} +\DeclareFontSeriesChangeRule {bux}{sc} {} {} +\DeclareFontSeriesChangeRule {bux}{sl} {} {} +\DeclareFontSeriesChangeRule {bux}{sx} {} {} +\DeclareFontSeriesChangeRule {bux}{ub} {} {} +\DeclareFontSeriesChangeRule {bux}{uc} {} {} +\DeclareFontSeriesChangeRule {bux}{ul} {} {} +\DeclareFontSeriesChangeRule {bux}{ux} {} {} +\DeclareFontSeriesChangeRule {bux}{x} {} {} +\DeclareFontSeriesChangeRule {bx}{bx} {} {} \DeclareFontSeriesChangeRule {bx}{b}{bx}{} -\DeclareFontSeriesChangeRule {bx}{c} {bc} {bx} %<----- +\DeclareFontSeriesChangeRule {bx}{c} {bc} {bx} \DeclareFontSeriesChangeRule {bx}{eb}{ebx}{} -\DeclareFontSeriesChangeRule {bx}{ec} {bec} {bx} %<----- +\DeclareFontSeriesChangeRule {bx}{ec} {bec} {bx} \DeclareFontSeriesChangeRule {bx}{el}{elx}{} +\DeclareFontSeriesChangeRule {bx}{ex} {} {} \DeclareFontSeriesChangeRule {bx}{l}{lx}{} \DeclareFontSeriesChangeRule {bx}{sb} {sbx} {} -\DeclareFontSeriesChangeRule {bx}{sc} {bsc} {bx} %<----- +\DeclareFontSeriesChangeRule {bx}{sc} {bsc} {bx} \DeclareFontSeriesChangeRule {bx}{sl}{slx} {} +\DeclareFontSeriesChangeRule {bx}{sx} {} {} \DeclareFontSeriesChangeRule {bx}{ub}{ubx}{} +\DeclareFontSeriesChangeRule {bx}{uc} {} {} \DeclareFontSeriesChangeRule {bx}{ul}{ulx}{} +\DeclareFontSeriesChangeRule {bx}{ux} {} {} \DeclareFontSeriesChangeRule {bx}{x}{bx}{} -\DeclareFontSeriesChangeRule {b}{bx} {bx} {b} %<----- -\DeclareFontSeriesChangeRule {b}{c} {bc} {b} %<----- -\DeclareFontSeriesChangeRule {b}{ec} {bec} {b} %<----- -\DeclareFontSeriesChangeRule {b}{sb} {sb} {b} %<----- -\DeclareFontSeriesChangeRule {b}{sc} {bsc} {b} %<----- -\DeclareFontSeriesChangeRule {b}{x} {bx} {b} %<----- -\DeclareFontSeriesChangeRule {c}{bx} {bx} {b} %<----- +\DeclareFontSeriesChangeRule {b}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {b}{c} {bc} {b} +\DeclareFontSeriesChangeRule {b}{eb} {} {} +\DeclareFontSeriesChangeRule {b}{ec} {bec} {b} +\DeclareFontSeriesChangeRule {b}{ex} {} {} +\DeclareFontSeriesChangeRule {b}{sb} {sb} {b} +\DeclareFontSeriesChangeRule {b}{sc} {bsc} {b} +\DeclareFontSeriesChangeRule {b}{sx} {} {} +\DeclareFontSeriesChangeRule {b}{ub} {} {} +\DeclareFontSeriesChangeRule {b}{uc} {} {} +\DeclareFontSeriesChangeRule {b}{ux} {} {} +\DeclareFontSeriesChangeRule {b}{x} {bx} {b} +\DeclareFontSeriesChangeRule {c}{bx} {bx} {b} \DeclareFontSeriesChangeRule {c}{b}{bc}{} \DeclareFontSeriesChangeRule {c}{eb}{ebc}{} +\DeclareFontSeriesChangeRule {c}{ec} {} {} \DeclareFontSeriesChangeRule {c}{el}{elc}{} \DeclareFontSeriesChangeRule {c}{l}{lc}{} \DeclareFontSeriesChangeRule {c}{sb}{sbc}{} +\DeclareFontSeriesChangeRule {c}{sc} {} {} \DeclareFontSeriesChangeRule {c}{sl}{slc}{} \DeclareFontSeriesChangeRule {c}{ub}{ubc}{} -\DeclareFontSeriesChangeRule {c}{ul}{ulc}{} -\DeclareFontSeriesChangeRule {c}{x}{x}{m} %<----- +\DeclareFontSeriesChangeRule {c}{uc} {} {} +\DeclareFontSeriesChangeRule {c}{x}{x}{m} +\DeclareFontSeriesChangeRule {ebc}{bx} {} {} \DeclareFontSeriesChangeRule {ebc}{b}{bc}{} \DeclareFontSeriesChangeRule {ebc}{c}{ebc}{} \DeclareFontSeriesChangeRule {ebc}{eb}{ebc}{} \DeclareFontSeriesChangeRule {ebc}{ec}{ebec}{ebc} \DeclareFontSeriesChangeRule {ebc}{el}{elc}{} +\DeclareFontSeriesChangeRule {ebc}{ex} {} {} \DeclareFontSeriesChangeRule {ebc}{l}{lc}{} \DeclareFontSeriesChangeRule {ebc}{sb}{sbc}{} \DeclareFontSeriesChangeRule {ebc}{sc}{ebsc}{ebc} \DeclareFontSeriesChangeRule {ebc}{sl}{slc}{} +\DeclareFontSeriesChangeRule {ebc}{sx} {} {} \DeclareFontSeriesChangeRule {ebc}{ub}{ubc}{} +\DeclareFontSeriesChangeRule {ebc}{uc} {} {} \DeclareFontSeriesChangeRule {ebc}{ul}{ulc}{} +\DeclareFontSeriesChangeRule {ebc}{ux} {} {} \DeclareFontSeriesChangeRule {ebc}{x}{ebx}{} -\DeclareFontSeriesChangeRule {ec}{bx} {bx} {b} %<----- -\DeclareFontSeriesChangeRule {ec}{b}{bec}{} -\DeclareFontSeriesChangeRule {ec}{eb}{ebec}{} -\DeclareFontSeriesChangeRule {ec}{el}{elec}{} -\DeclareFontSeriesChangeRule {ec}{l}{lec}{} -\DeclareFontSeriesChangeRule {ec}{sb}{sbec}{} -\DeclareFontSeriesChangeRule {ec}{sl}{slec}{} -\DeclareFontSeriesChangeRule {ec}{ub}{ubec}{} -\DeclareFontSeriesChangeRule {ec}{ul}{ulec}{} -\DeclareFontSeriesChangeRule {ec}{x}{x}{m} %<----- -\DeclareFontSeriesChangeRule {sc}{bx} {bx} {b} %<----- -\DeclareFontSeriesChangeRule {sc}{b}{bsc}{} -\DeclareFontSeriesChangeRule {sc}{eb}{ebsc}{} -\DeclareFontSeriesChangeRule {sc}{el}{elsc}{} -\DeclareFontSeriesChangeRule {sc}{l}{lsc}{} -\DeclareFontSeriesChangeRule {sc}{sb}{sbsc}{} -\DeclareFontSeriesChangeRule {sc}{sl}{slsc}{} -\DeclareFontSeriesChangeRule {sc}{ub}{ubsc}{} -\DeclareFontSeriesChangeRule {sc}{ul}{ulsc}{} -\DeclareFontSeriesChangeRule {sc}{x}{x}{m} %<----- +\DeclareFontSeriesChangeRule {ebec}{bx} {} {} +\DeclareFontSeriesChangeRule {ebec}{b} {} {} +\DeclareFontSeriesChangeRule {ebec}{c} {} {} +\DeclareFontSeriesChangeRule {ebec}{eb} {} {} +\DeclareFontSeriesChangeRule {ebec}{ec} {} {} +\DeclareFontSeriesChangeRule {ebec}{el} {} {} +\DeclareFontSeriesChangeRule {ebec}{ex} {} {} +\DeclareFontSeriesChangeRule {ebec}{l} {} {} +\DeclareFontSeriesChangeRule {ebec}{sb} {} {} +\DeclareFontSeriesChangeRule {ebec}{sc} {} {} +\DeclareFontSeriesChangeRule {ebec}{sl} {} {} +\DeclareFontSeriesChangeRule {ebec}{sx} {} {} +\DeclareFontSeriesChangeRule {ebec}{ub} {} {} +\DeclareFontSeriesChangeRule {ebec}{uc} {} {} +\DeclareFontSeriesChangeRule {ebec}{ul} {} {} +\DeclareFontSeriesChangeRule {ebec}{ux} {} {} +\DeclareFontSeriesChangeRule {ebec}{x} {} {} +\DeclareFontSeriesChangeRule {ebex}{?m} {} {} +\DeclareFontSeriesChangeRule {ebex}{bx} {} {} +\DeclareFontSeriesChangeRule {ebex}{b} {} {} +\DeclareFontSeriesChangeRule {ebex}{c} {} {} +\DeclareFontSeriesChangeRule {ebex}{eb} {} {} +\DeclareFontSeriesChangeRule {ebex}{ec} {} {} +\DeclareFontSeriesChangeRule {ebex}{el} {} {} +\DeclareFontSeriesChangeRule {ebex}{ex} {} {} +\DeclareFontSeriesChangeRule {ebex}{l} {} {} +\DeclareFontSeriesChangeRule {ebex}{m?} {} {} +\DeclareFontSeriesChangeRule {ebex}{sb} {} {} +\DeclareFontSeriesChangeRule {ebex}{sc} {} {} +\DeclareFontSeriesChangeRule {ebex}{sl} {} {} +\DeclareFontSeriesChangeRule {ebex}{sx} {} {} +\DeclareFontSeriesChangeRule {ebex}{ub} {} {} +\DeclareFontSeriesChangeRule {ebex}{uc} {} {} +\DeclareFontSeriesChangeRule {ebex}{ul} {} {} +\DeclareFontSeriesChangeRule {ebex}{ux} {} {} +\DeclareFontSeriesChangeRule {ebex}{x} {} {} +\DeclareFontSeriesChangeRule {ebsc}{bx} {} {} +\DeclareFontSeriesChangeRule {ebsc}{b} {} {} +\DeclareFontSeriesChangeRule {ebsc}{c} {} {} +\DeclareFontSeriesChangeRule {ebsc}{eb} {} {} +\DeclareFontSeriesChangeRule {ebsc}{ec} {} {} +\DeclareFontSeriesChangeRule {ebsc}{el} {} {} +\DeclareFontSeriesChangeRule {ebsc}{ex} {} {} +\DeclareFontSeriesChangeRule {ebsc}{l} {} {} +\DeclareFontSeriesChangeRule {ebsc}{sb} {} {} +\DeclareFontSeriesChangeRule {ebsc}{sc} {} {} +\DeclareFontSeriesChangeRule {ebsc}{sl} {} {} +\DeclareFontSeriesChangeRule {ebsc}{sx} {} {} +\DeclareFontSeriesChangeRule {ebsc}{ub} {} {} +\DeclareFontSeriesChangeRule {ebsc}{uc} {} {} +\DeclareFontSeriesChangeRule {ebsc}{ul} {} {} +\DeclareFontSeriesChangeRule {ebsc}{ux} {} {} +\DeclareFontSeriesChangeRule {ebsc}{x} {} {} +\DeclareFontSeriesChangeRule {ebsx}{?m} {} {} +\DeclareFontSeriesChangeRule {ebsx}{bx} {} {} +\DeclareFontSeriesChangeRule {ebsx}{b} {} {} +\DeclareFontSeriesChangeRule {ebsx}{c} {} {} +\DeclareFontSeriesChangeRule {ebsx}{eb} {} {} +\DeclareFontSeriesChangeRule {ebsx}{ec} {} {} +\DeclareFontSeriesChangeRule {ebsx}{el} {} {} +\DeclareFontSeriesChangeRule {ebsx}{ex} {} {} +\DeclareFontSeriesChangeRule {ebsx}{l} {} {} +\DeclareFontSeriesChangeRule {ebsx}{m?} {} {} +\DeclareFontSeriesChangeRule {ebsx}{sb} {} {} +\DeclareFontSeriesChangeRule {ebsx}{sc} {} {} +\DeclareFontSeriesChangeRule {ebsx}{sl} {} {} +\DeclareFontSeriesChangeRule {ebsx}{sx} {} {} +\DeclareFontSeriesChangeRule {ebsx}{ub} {} {} +\DeclareFontSeriesChangeRule {ebsx}{uc} {} {} +\DeclareFontSeriesChangeRule {ebsx}{ul} {} {} +\DeclareFontSeriesChangeRule {ebsx}{ux} {} {} +\DeclareFontSeriesChangeRule {ebsx}{x} {} {} +\DeclareFontSeriesChangeRule {ebuc}{?m} {} {} +\DeclareFontSeriesChangeRule {ebuc}{bx} {} {} +\DeclareFontSeriesChangeRule {ebuc}{b} {} {} +\DeclareFontSeriesChangeRule {ebuc}{c} {} {} +\DeclareFontSeriesChangeRule {ebuc}{eb} {} {} +\DeclareFontSeriesChangeRule {ebuc}{ec} {} {} +\DeclareFontSeriesChangeRule {ebuc}{el} {} {} +\DeclareFontSeriesChangeRule {ebuc}{ex} {} {} +\DeclareFontSeriesChangeRule {ebuc}{l} {} {} +\DeclareFontSeriesChangeRule {ebuc}{m?} {} {} +\DeclareFontSeriesChangeRule {ebuc}{sb} {} {} +\DeclareFontSeriesChangeRule {ebuc}{sc} {} {} +\DeclareFontSeriesChangeRule {ebuc}{sl} {} {} +\DeclareFontSeriesChangeRule {ebuc}{sx} {} {} +\DeclareFontSeriesChangeRule {ebuc}{ub} {} {} +\DeclareFontSeriesChangeRule {ebuc}{uc} {} {} +\DeclareFontSeriesChangeRule {ebuc}{ul} {} {} +\DeclareFontSeriesChangeRule {ebuc}{ux} {} {} +\DeclareFontSeriesChangeRule {ebuc}{x} {} {} +\DeclareFontSeriesChangeRule {ebux}{?m} {} {} +\DeclareFontSeriesChangeRule {ebux}{bx} {} {} +\DeclareFontSeriesChangeRule {ebux}{b} {} {} +\DeclareFontSeriesChangeRule {ebux}{c} {} {} +\DeclareFontSeriesChangeRule {ebux}{eb} {} {} +\DeclareFontSeriesChangeRule {ebux}{ec} {} {} +\DeclareFontSeriesChangeRule {ebux}{el} {} {} +\DeclareFontSeriesChangeRule {ebux}{ex} {} {} +\DeclareFontSeriesChangeRule {ebux}{l} {} {} +\DeclareFontSeriesChangeRule {ebux}{m?} {} {} +\DeclareFontSeriesChangeRule {ebux}{sb} {} {} +\DeclareFontSeriesChangeRule {ebux}{sc} {} {} +\DeclareFontSeriesChangeRule {ebux}{sl} {} {} +\DeclareFontSeriesChangeRule {ebux}{sx} {} {} +\DeclareFontSeriesChangeRule {ebux}{ub} {} {} +\DeclareFontSeriesChangeRule {ebux}{uc} {} {} +\DeclareFontSeriesChangeRule {ebux}{ul} {} {} +\DeclareFontSeriesChangeRule {ebux}{ux} {} {} +\DeclareFontSeriesChangeRule {ebux}{x} {} {} +\DeclareFontSeriesChangeRule {ebx}{bx} {} {} \DeclareFontSeriesChangeRule {ebx}{b}{bx}{} \DeclareFontSeriesChangeRule {ebx}{c}{ebc}{} \DeclareFontSeriesChangeRule {ebx}{eb}{ebx}{} \DeclareFontSeriesChangeRule {ebx}{ec}{ebec}{} \DeclareFontSeriesChangeRule {ebx}{el}{elx}{} +\DeclareFontSeriesChangeRule {ebx}{ex} {} {} \DeclareFontSeriesChangeRule {ebx}{l}{lx}{} \DeclareFontSeriesChangeRule {ebx}{sb}{sbx}{} \DeclareFontSeriesChangeRule {ebx}{sc}{ebsc}{} \DeclareFontSeriesChangeRule {ebx}{sl}{slx}{} +\DeclareFontSeriesChangeRule {ebx}{sx} {} {} \DeclareFontSeriesChangeRule {ebx}{ub}{ubx}{} +\DeclareFontSeriesChangeRule {ebx}{uc} {} {} \DeclareFontSeriesChangeRule {ebx}{ul}{ulx}{} +\DeclareFontSeriesChangeRule {ebx}{ux} {} {} \DeclareFontSeriesChangeRule {ebx}{x}{ebx}{} +\DeclareFontSeriesChangeRule {eb}{bx} {} {} \DeclareFontSeriesChangeRule {eb}{c}{ebc}{} \DeclareFontSeriesChangeRule {eb}{ec}{ebec}{} +\DeclareFontSeriesChangeRule {eb}{ex} {} {} +\DeclareFontSeriesChangeRule {eb}{sb} {} {} \DeclareFontSeriesChangeRule {eb}{sc}{ebsc}{} +\DeclareFontSeriesChangeRule {eb}{sx} {} {} +\DeclareFontSeriesChangeRule {eb}{ub} {} {} +\DeclareFontSeriesChangeRule {eb}{uc} {} {} +\DeclareFontSeriesChangeRule {eb}{ux} {} {} \DeclareFontSeriesChangeRule {eb}{x}{ebx}{} +\DeclareFontSeriesChangeRule {ec}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {ec}{b}{bec}{} +\DeclareFontSeriesChangeRule {ec}{eb}{ebec}{} +\DeclareFontSeriesChangeRule {ec}{el}{elec}{} +\DeclareFontSeriesChangeRule {ec}{l}{lec}{} +\DeclareFontSeriesChangeRule {ec}{sb}{sbec}{} +\DeclareFontSeriesChangeRule {ec}{sl}{slec}{} +\DeclareFontSeriesChangeRule {ec}{ub}{ubec}{} +\DeclareFontSeriesChangeRule {ec}{x}{x}{m} +\DeclareFontSeriesChangeRule {elc}{bx} {} {} \DeclareFontSeriesChangeRule {elc}{b}{bc}{} \DeclareFontSeriesChangeRule {elc}{c}{elc}{} \DeclareFontSeriesChangeRule {elc}{eb}{ebc}{} \DeclareFontSeriesChangeRule {elc}{ec}{elec}{} \DeclareFontSeriesChangeRule {elc}{el}{elc}{} +\DeclareFontSeriesChangeRule {elc}{ex} {} {} \DeclareFontSeriesChangeRule {elc}{l}{lc}{} \DeclareFontSeriesChangeRule {elc}{sb}{sbc}{} \DeclareFontSeriesChangeRule {elc}{sc}{elsc}{} \DeclareFontSeriesChangeRule {elc}{sl}{slc}{} +\DeclareFontSeriesChangeRule {elc}{sx} {} {} \DeclareFontSeriesChangeRule {elc}{ub}{ubc}{} +\DeclareFontSeriesChangeRule {elc}{uc} {} {} \DeclareFontSeriesChangeRule {elc}{ul}{ulc}{} +\DeclareFontSeriesChangeRule {elc}{ux} {} {} \DeclareFontSeriesChangeRule {elc}{x}{elx}{} +\DeclareFontSeriesChangeRule {elec}{bx} {} {} +\DeclareFontSeriesChangeRule {elec}{b} {} {} +\DeclareFontSeriesChangeRule {elec}{c} {} {} +\DeclareFontSeriesChangeRule {elec}{eb} {} {} +\DeclareFontSeriesChangeRule {elec}{ec} {} {} +\DeclareFontSeriesChangeRule {elec}{el} {} {} +\DeclareFontSeriesChangeRule {elec}{ex} {} {} +\DeclareFontSeriesChangeRule {elec}{l} {} {} +\DeclareFontSeriesChangeRule {elec}{sb} {} {} +\DeclareFontSeriesChangeRule {elec}{sc} {} {} +\DeclareFontSeriesChangeRule {elec}{sl} {} {} +\DeclareFontSeriesChangeRule {elec}{sx} {} {} +\DeclareFontSeriesChangeRule {elec}{ub} {} {} +\DeclareFontSeriesChangeRule {elec}{uc} {} {} +\DeclareFontSeriesChangeRule {elec}{ul} {} {} +\DeclareFontSeriesChangeRule {elec}{ux} {} {} +\DeclareFontSeriesChangeRule {elec}{x} {} {} +\DeclareFontSeriesChangeRule {elex}{?m} {} {} +\DeclareFontSeriesChangeRule {elex}{bx} {} {} +\DeclareFontSeriesChangeRule {elex}{b} {} {} +\DeclareFontSeriesChangeRule {elex}{c} {} {} +\DeclareFontSeriesChangeRule {elex}{eb} {} {} +\DeclareFontSeriesChangeRule {elex}{ec} {} {} +\DeclareFontSeriesChangeRule {elex}{el} {} {} +\DeclareFontSeriesChangeRule {elex}{ex} {} {} +\DeclareFontSeriesChangeRule {elex}{l} {} {} +\DeclareFontSeriesChangeRule {elex}{m?} {} {} +\DeclareFontSeriesChangeRule {elex}{sb} {} {} +\DeclareFontSeriesChangeRule {elex}{sc} {} {} +\DeclareFontSeriesChangeRule {elex}{sl} {} {} +\DeclareFontSeriesChangeRule {elex}{sx} {} {} +\DeclareFontSeriesChangeRule {elex}{ub} {} {} +\DeclareFontSeriesChangeRule {elex}{uc} {} {} +\DeclareFontSeriesChangeRule {elex}{ul} {} {} +\DeclareFontSeriesChangeRule {elex}{ux} {} {} +\DeclareFontSeriesChangeRule {elex}{x} {} {} +\DeclareFontSeriesChangeRule {elsc}{bx} {} {} +\DeclareFontSeriesChangeRule {elsc}{b} {} {} +\DeclareFontSeriesChangeRule {elsc}{c} {} {} +\DeclareFontSeriesChangeRule {elsc}{eb} {} {} +\DeclareFontSeriesChangeRule {elsc}{ec} {} {} +\DeclareFontSeriesChangeRule {elsc}{el} {} {} +\DeclareFontSeriesChangeRule {elsc}{ex} {} {} +\DeclareFontSeriesChangeRule {elsc}{l} {} {} +\DeclareFontSeriesChangeRule {elsc}{sb} {} {} +\DeclareFontSeriesChangeRule {elsc}{sc} {} {} +\DeclareFontSeriesChangeRule {elsc}{sl} {} {} +\DeclareFontSeriesChangeRule {elsc}{sx} {} {} +\DeclareFontSeriesChangeRule {elsc}{ub} {} {} +\DeclareFontSeriesChangeRule {elsc}{uc} {} {} +\DeclareFontSeriesChangeRule {elsc}{ul} {} {} +\DeclareFontSeriesChangeRule {elsc}{ux} {} {} +\DeclareFontSeriesChangeRule {elsc}{x} {} {} +\DeclareFontSeriesChangeRule {elsx}{?m} {} {} +\DeclareFontSeriesChangeRule {elsx}{bx} {} {} +\DeclareFontSeriesChangeRule {elsx}{b} {} {} +\DeclareFontSeriesChangeRule {elsx}{c} {} {} +\DeclareFontSeriesChangeRule {elsx}{eb} {} {} +\DeclareFontSeriesChangeRule {elsx}{ec} {} {} +\DeclareFontSeriesChangeRule {elsx}{el} {} {} +\DeclareFontSeriesChangeRule {elsx}{ex} {} {} +\DeclareFontSeriesChangeRule {elsx}{l} {} {} +\DeclareFontSeriesChangeRule {elsx}{m?} {} {} +\DeclareFontSeriesChangeRule {elsx}{sb} {} {} +\DeclareFontSeriesChangeRule {elsx}{sc} {} {} +\DeclareFontSeriesChangeRule {elsx}{sl} {} {} +\DeclareFontSeriesChangeRule {elsx}{sx} {} {} +\DeclareFontSeriesChangeRule {elsx}{ub} {} {} +\DeclareFontSeriesChangeRule {elsx}{uc} {} {} +\DeclareFontSeriesChangeRule {elsx}{ul} {} {} +\DeclareFontSeriesChangeRule {elsx}{ux} {} {} +\DeclareFontSeriesChangeRule {elsx}{x} {} {} +\DeclareFontSeriesChangeRule {eluc}{?m} {} {} +\DeclareFontSeriesChangeRule {eluc}{bx} {} {} +\DeclareFontSeriesChangeRule {eluc}{b} {} {} +\DeclareFontSeriesChangeRule {eluc}{c} {} {} +\DeclareFontSeriesChangeRule {eluc}{eb} {} {} +\DeclareFontSeriesChangeRule {eluc}{ec} {} {} +\DeclareFontSeriesChangeRule {eluc}{el} {} {} +\DeclareFontSeriesChangeRule {eluc}{ex} {} {} +\DeclareFontSeriesChangeRule {eluc}{l} {} {} +\DeclareFontSeriesChangeRule {eluc}{m?} {} {} +\DeclareFontSeriesChangeRule {eluc}{sb} {} {} +\DeclareFontSeriesChangeRule {eluc}{sc} {} {} +\DeclareFontSeriesChangeRule {eluc}{sl} {} {} +\DeclareFontSeriesChangeRule {eluc}{sx} {} {} +\DeclareFontSeriesChangeRule {eluc}{ub} {} {} +\DeclareFontSeriesChangeRule {eluc}{uc} {} {} +\DeclareFontSeriesChangeRule {eluc}{ul} {} {} +\DeclareFontSeriesChangeRule {eluc}{ux} {} {} +\DeclareFontSeriesChangeRule {eluc}{x} {} {} +\DeclareFontSeriesChangeRule {elux}{?m} {} {} +\DeclareFontSeriesChangeRule {elux}{bx} {} {} +\DeclareFontSeriesChangeRule {elux}{b} {} {} +\DeclareFontSeriesChangeRule {elux}{c} {} {} +\DeclareFontSeriesChangeRule {elux}{eb} {} {} +\DeclareFontSeriesChangeRule {elux}{ec} {} {} +\DeclareFontSeriesChangeRule {elux}{el} {} {} +\DeclareFontSeriesChangeRule {elux}{ex} {} {} +\DeclareFontSeriesChangeRule {elux}{l} {} {} +\DeclareFontSeriesChangeRule {elux}{m?} {} {} +\DeclareFontSeriesChangeRule {elux}{sb} {} {} +\DeclareFontSeriesChangeRule {elux}{sc} {} {} +\DeclareFontSeriesChangeRule {elux}{sl} {} {} +\DeclareFontSeriesChangeRule {elux}{sx} {} {} +\DeclareFontSeriesChangeRule {elux}{ub} {} {} +\DeclareFontSeriesChangeRule {elux}{uc} {} {} +\DeclareFontSeriesChangeRule {elux}{ul} {} {} +\DeclareFontSeriesChangeRule {elux}{ux} {} {} +\DeclareFontSeriesChangeRule {elux}{x} {} {} +\DeclareFontSeriesChangeRule {elx}{bx} {} {} \DeclareFontSeriesChangeRule {elx}{b}{bx}{} \DeclareFontSeriesChangeRule {elx}{c}{elc}{} \DeclareFontSeriesChangeRule {elx}{eb}{ebx}{} \DeclareFontSeriesChangeRule {elx}{ec}{elec}{} \DeclareFontSeriesChangeRule {elx}{el}{elx}{} +\DeclareFontSeriesChangeRule {elx}{ex} {} {} \DeclareFontSeriesChangeRule {elx}{l}{lx}{} \DeclareFontSeriesChangeRule {elx}{sb}{sbx}{} \DeclareFontSeriesChangeRule {elx}{sc}{elsc}{} \DeclareFontSeriesChangeRule {elx}{sl}{slx}{} +\DeclareFontSeriesChangeRule {elx}{sx} {} {} \DeclareFontSeriesChangeRule {elx}{ub}{ubx}{} +\DeclareFontSeriesChangeRule {elx}{uc} {} {} \DeclareFontSeriesChangeRule {elx}{ul}{ulx}{} +\DeclareFontSeriesChangeRule {elx}{ux} {} {} \DeclareFontSeriesChangeRule {elx}{x}{elx}{} +\DeclareFontSeriesChangeRule {el}{bx} {} {} \DeclareFontSeriesChangeRule {el}{c}{elc}{} +\DeclareFontSeriesChangeRule {el}{eb} {} {} \DeclareFontSeriesChangeRule {el}{ec}{elec}{} +\DeclareFontSeriesChangeRule {el}{ex} {} {} +\DeclareFontSeriesChangeRule {el}{sb} {} {} \DeclareFontSeriesChangeRule {el}{sc}{elsc}{} +\DeclareFontSeriesChangeRule {el}{sx} {} {} +\DeclareFontSeriesChangeRule {el}{ub} {} {} +\DeclareFontSeriesChangeRule {el}{uc} {} {} +\DeclareFontSeriesChangeRule {el}{ux} {} {} \DeclareFontSeriesChangeRule {el}{x}{elx}{} +\DeclareFontSeriesChangeRule {ex}{?m} {} {} +\DeclareFontSeriesChangeRule {ex}{bx} {} {} +\DeclareFontSeriesChangeRule {ex}{b} {} {} +\DeclareFontSeriesChangeRule {ex}{eb} {} {} +\DeclareFontSeriesChangeRule {ex}{el} {} {} +\DeclareFontSeriesChangeRule {ex}{l} {} {} +\DeclareFontSeriesChangeRule {ex}{m?} {} {} +\DeclareFontSeriesChangeRule {ex}{sb} {} {} +\DeclareFontSeriesChangeRule {ex}{sl} {} {} +\DeclareFontSeriesChangeRule {ex}{ub} {} {} +\DeclareFontSeriesChangeRule {ex}{ul} {} {} +\DeclareFontSeriesChangeRule {lc}{bx} {} {} \DeclareFontSeriesChangeRule {lc}{b}{bc}{} \DeclareFontSeriesChangeRule {lc}{c}{lc}{} \DeclareFontSeriesChangeRule {lc}{eb}{ebc}{} \DeclareFontSeriesChangeRule {lc}{ec}{lec}{} \DeclareFontSeriesChangeRule {lc}{el}{elc}{} +\DeclareFontSeriesChangeRule {lc}{ex} {} {} \DeclareFontSeriesChangeRule {lc}{l}{lc}{} \DeclareFontSeriesChangeRule {lc}{sb}{sbc}{} \DeclareFontSeriesChangeRule {lc}{sc}{lsc}{} \DeclareFontSeriesChangeRule {lc}{sl}{slc}{} +\DeclareFontSeriesChangeRule {lc}{sx} {} {} \DeclareFontSeriesChangeRule {lc}{ub}{ubc}{} +\DeclareFontSeriesChangeRule {lc}{uc} {} {} \DeclareFontSeriesChangeRule {lc}{ul}{ulc}{} +\DeclareFontSeriesChangeRule {lc}{ux} {} {} \DeclareFontSeriesChangeRule {lc}{x}{lx}{} +\DeclareFontSeriesChangeRule {lec}{bx} {} {} +\DeclareFontSeriesChangeRule {lec}{b} {} {} +\DeclareFontSeriesChangeRule {lec}{c} {} {} +\DeclareFontSeriesChangeRule {lec}{eb} {} {} +\DeclareFontSeriesChangeRule {lec}{ec} {} {} +\DeclareFontSeriesChangeRule {lec}{el} {} {} +\DeclareFontSeriesChangeRule {lec}{ex} {} {} +\DeclareFontSeriesChangeRule {lec}{l} {} {} +\DeclareFontSeriesChangeRule {lec}{sb} {} {} +\DeclareFontSeriesChangeRule {lec}{sc} {} {} +\DeclareFontSeriesChangeRule {lec}{sl} {} {} +\DeclareFontSeriesChangeRule {lec}{sx} {} {} +\DeclareFontSeriesChangeRule {lec}{ub} {} {} +\DeclareFontSeriesChangeRule {lec}{uc} {} {} +\DeclareFontSeriesChangeRule {lec}{ul} {} {} +\DeclareFontSeriesChangeRule {lec}{ux} {} {} +\DeclareFontSeriesChangeRule {lec}{x} {} {} +\DeclareFontSeriesChangeRule {lex}{?m} {} {} +\DeclareFontSeriesChangeRule {lex}{bx} {} {} +\DeclareFontSeriesChangeRule {lex}{b} {} {} +\DeclareFontSeriesChangeRule {lex}{c} {} {} +\DeclareFontSeriesChangeRule {lex}{eb} {} {} +\DeclareFontSeriesChangeRule {lex}{ec} {} {} +\DeclareFontSeriesChangeRule {lex}{el} {} {} +\DeclareFontSeriesChangeRule {lex}{ex} {} {} +\DeclareFontSeriesChangeRule {lex}{l} {} {} +\DeclareFontSeriesChangeRule {lex}{m?} {} {} +\DeclareFontSeriesChangeRule {lex}{sb} {} {} +\DeclareFontSeriesChangeRule {lex}{sc} {} {} +\DeclareFontSeriesChangeRule {lex}{sl} {} {} +\DeclareFontSeriesChangeRule {lex}{sx} {} {} +\DeclareFontSeriesChangeRule {lex}{ub} {} {} +\DeclareFontSeriesChangeRule {lex}{uc} {} {} +\DeclareFontSeriesChangeRule {lex}{ul} {} {} +\DeclareFontSeriesChangeRule {lex}{ux} {} {} +\DeclareFontSeriesChangeRule {lex}{x} {} {} +\DeclareFontSeriesChangeRule {lsc}{bx} {} {} +\DeclareFontSeriesChangeRule {lsc}{b} {} {} +\DeclareFontSeriesChangeRule {lsc}{c} {} {} +\DeclareFontSeriesChangeRule {lsc}{eb} {} {} +\DeclareFontSeriesChangeRule {lsc}{ec} {} {} +\DeclareFontSeriesChangeRule {lsc}{el} {} {} +\DeclareFontSeriesChangeRule {lsc}{ex} {} {} +\DeclareFontSeriesChangeRule {lsc}{l} {} {} +\DeclareFontSeriesChangeRule {lsc}{sb} {} {} +\DeclareFontSeriesChangeRule {lsc}{sc} {} {} +\DeclareFontSeriesChangeRule {lsc}{sl} {} {} +\DeclareFontSeriesChangeRule {lsc}{sx} {} {} +\DeclareFontSeriesChangeRule {lsc}{ub} {} {} +\DeclareFontSeriesChangeRule {lsc}{uc} {} {} +\DeclareFontSeriesChangeRule {lsc}{ul} {} {} +\DeclareFontSeriesChangeRule {lsc}{ux} {} {} +\DeclareFontSeriesChangeRule {lsc}{x} {} {} +\DeclareFontSeriesChangeRule {lsx}{?m} {} {} +\DeclareFontSeriesChangeRule {lsx}{bx} {} {} +\DeclareFontSeriesChangeRule {lsx}{b} {} {} +\DeclareFontSeriesChangeRule {lsx}{c} {} {} +\DeclareFontSeriesChangeRule {lsx}{eb} {} {} +\DeclareFontSeriesChangeRule {lsx}{ec} {} {} +\DeclareFontSeriesChangeRule {lsx}{el} {} {} +\DeclareFontSeriesChangeRule {lsx}{ex} {} {} +\DeclareFontSeriesChangeRule {lsx}{l} {} {} +\DeclareFontSeriesChangeRule {lsx}{m?} {} {} +\DeclareFontSeriesChangeRule {lsx}{sb} {} {} +\DeclareFontSeriesChangeRule {lsx}{sc} {} {} +\DeclareFontSeriesChangeRule {lsx}{sl} {} {} +\DeclareFontSeriesChangeRule {lsx}{sx} {} {} +\DeclareFontSeriesChangeRule {lsx}{ub} {} {} +\DeclareFontSeriesChangeRule {lsx}{uc} {} {} +\DeclareFontSeriesChangeRule {lsx}{ul} {} {} +\DeclareFontSeriesChangeRule {lsx}{ux} {} {} +\DeclareFontSeriesChangeRule {lsx}{x} {} {} +\DeclareFontSeriesChangeRule {luc}{?m} {} {} +\DeclareFontSeriesChangeRule {luc}{bx} {} {} +\DeclareFontSeriesChangeRule {luc}{b} {} {} +\DeclareFontSeriesChangeRule {luc}{c} {} {} +\DeclareFontSeriesChangeRule {luc}{eb} {} {} +\DeclareFontSeriesChangeRule {luc}{ec} {} {} +\DeclareFontSeriesChangeRule {luc}{el} {} {} +\DeclareFontSeriesChangeRule {luc}{ex} {} {} +\DeclareFontSeriesChangeRule {luc}{l} {} {} +\DeclareFontSeriesChangeRule {luc}{m?} {} {} +\DeclareFontSeriesChangeRule {luc}{sb} {} {} +\DeclareFontSeriesChangeRule {luc}{sc} {} {} +\DeclareFontSeriesChangeRule {luc}{sl} {} {} +\DeclareFontSeriesChangeRule {luc}{sx} {} {} +\DeclareFontSeriesChangeRule {luc}{ub} {} {} +\DeclareFontSeriesChangeRule {luc}{uc} {} {} +\DeclareFontSeriesChangeRule {luc}{ul} {} {} +\DeclareFontSeriesChangeRule {luc}{ux} {} {} +\DeclareFontSeriesChangeRule {luc}{x} {} {} +\DeclareFontSeriesChangeRule {lux}{?m} {} {} +\DeclareFontSeriesChangeRule {lux}{bx} {} {} +\DeclareFontSeriesChangeRule {lux}{b} {} {} +\DeclareFontSeriesChangeRule {lux}{c} {} {} +\DeclareFontSeriesChangeRule {lux}{eb} {} {} +\DeclareFontSeriesChangeRule {lux}{ec} {} {} +\DeclareFontSeriesChangeRule {lux}{el} {} {} +\DeclareFontSeriesChangeRule {lux}{ex} {} {} +\DeclareFontSeriesChangeRule {lux}{l} {} {} +\DeclareFontSeriesChangeRule {lux}{m?} {} {} +\DeclareFontSeriesChangeRule {lux}{sb} {} {} +\DeclareFontSeriesChangeRule {lux}{sc} {} {} +\DeclareFontSeriesChangeRule {lux}{sl} {} {} +\DeclareFontSeriesChangeRule {lux}{sx} {} {} +\DeclareFontSeriesChangeRule {lux}{ub} {} {} +\DeclareFontSeriesChangeRule {lux}{uc} {} {} +\DeclareFontSeriesChangeRule {lux}{ul} {} {} +\DeclareFontSeriesChangeRule {lux}{ux} {} {} +\DeclareFontSeriesChangeRule {lux}{x} {} {} +\DeclareFontSeriesChangeRule {lx}{bx} {} {} \DeclareFontSeriesChangeRule {lx}{b}{bx}{} \DeclareFontSeriesChangeRule {lx}{c}{lc}{} \DeclareFontSeriesChangeRule {lx}{eb}{ebx}{} \DeclareFontSeriesChangeRule {lx}{ec}{lec}{} \DeclareFontSeriesChangeRule {lx}{el}{elx}{} +\DeclareFontSeriesChangeRule {lx}{ex} {} {} \DeclareFontSeriesChangeRule {lx}{l}{lx}{} \DeclareFontSeriesChangeRule {lx}{sb}{sbx}{} \DeclareFontSeriesChangeRule {lx}{sc}{lsc}{} \DeclareFontSeriesChangeRule {lx}{sl}{slx}{} +\DeclareFontSeriesChangeRule {lx}{sx} {} {} \DeclareFontSeriesChangeRule {lx}{ub}{ubx}{} +\DeclareFontSeriesChangeRule {lx}{uc} {} {} \DeclareFontSeriesChangeRule {lx}{ul}{ulx}{} +\DeclareFontSeriesChangeRule {lx}{ux} {} {} \DeclareFontSeriesChangeRule {lx}{x}{lx}{} -\DeclareFontSeriesChangeRule {l}{bx} {bx} {b} %<----- -\DeclareFontSeriesChangeRule {l}{b} {b} {bx} %<----- -\DeclareFontSeriesChangeRule {l}{c} {lc} {l} % ? %<----- -\DeclareFontSeriesChangeRule {l}{ec} {lec} {l} % ? %<----- -\DeclareFontSeriesChangeRule {l}{sb} {sb} {b} % ? %<----- -\DeclareFontSeriesChangeRule {l}{sc} {lsc} {l} % ? %<----- -\DeclareFontSeriesChangeRule {l}{x} {lx} {l} % ? %<----- -\DeclareFontSeriesChangeRule {m}{bx} {bx} {b} %<----- -\DeclareFontSeriesChangeRule {m}{b} {b} {bx} %<----- -\DeclareFontSeriesChangeRule {m}{c} {c} {m} %<----- -\DeclareFontSeriesChangeRule {m}{ec} {ec} {m} %<----- -\DeclareFontSeriesChangeRule {m}{l} {l} {m} %<----- -\DeclareFontSeriesChangeRule {m}{sb} {sb} {b} %<----- -\DeclareFontSeriesChangeRule {m}{sc} {sc} {m} %<----- -\DeclareFontSeriesChangeRule {m}{x} {x} {m} %<----- +\DeclareFontSeriesChangeRule {l}{b} {b} {bx} +\DeclareFontSeriesChangeRule {l}{c} {lc} {l} +\DeclareFontSeriesChangeRule {l}{eb} {} {} +\DeclareFontSeriesChangeRule {l}{ec} {lec} {l} +\DeclareFontSeriesChangeRule {l}{ex} {} {} +\DeclareFontSeriesChangeRule {l}{sb} {sb} {b} +\DeclareFontSeriesChangeRule {l}{sc} {lsc} {l} +\DeclareFontSeriesChangeRule {l}{sx} {} {} +\DeclareFontSeriesChangeRule {l}{ub} {} {} +\DeclareFontSeriesChangeRule {l}{uc} {} {} +\DeclareFontSeriesChangeRule {l}{ux} {} {} +\DeclareFontSeriesChangeRule {l}{x} {lx} {l} +\DeclareFontSeriesChangeRule {m}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {m}{c} {c} {m} +\DeclareFontSeriesChangeRule {m}{l} {l} {m} +\DeclareFontSeriesChangeRule {m}{sc} {sc} {m} +\DeclareFontSeriesChangeRule {m}{x} {x} {m} +\DeclareFontSeriesChangeRule {sbc}{bx} {} {} \DeclareFontSeriesChangeRule {sbc}{b}{bc}{} \DeclareFontSeriesChangeRule {sbc}{c}{sbc}{} \DeclareFontSeriesChangeRule {sbc}{eb}{ebc}{} \DeclareFontSeriesChangeRule {sbc}{ec}{sbec}{sbc} \DeclareFontSeriesChangeRule {sbc}{el}{elc}{} +\DeclareFontSeriesChangeRule {sbc}{ex} {} {} \DeclareFontSeriesChangeRule {sbc}{l}{lc}{} \DeclareFontSeriesChangeRule {sbc}{sb}{sbc}{} \DeclareFontSeriesChangeRule {sbc}{sc}{sbsc}{sbc} \DeclareFontSeriesChangeRule {sbc}{sl}{slc}{} +\DeclareFontSeriesChangeRule {sbc}{sx} {} {} \DeclareFontSeriesChangeRule {sbc}{ub}{ubc}{} +\DeclareFontSeriesChangeRule {sbc}{uc} {} {} \DeclareFontSeriesChangeRule {sbc}{ul}{ulc}{} +\DeclareFontSeriesChangeRule {sbc}{ux} {} {} \DeclareFontSeriesChangeRule {sbc}{x}{sbx}{} +\DeclareFontSeriesChangeRule {sbec}{bx} {} {} +\DeclareFontSeriesChangeRule {sbec}{b} {} {} +\DeclareFontSeriesChangeRule {sbec}{c} {} {} +\DeclareFontSeriesChangeRule {sbec}{eb} {} {} +\DeclareFontSeriesChangeRule {sbec}{ec} {} {} +\DeclareFontSeriesChangeRule {sbec}{el} {} {} +\DeclareFontSeriesChangeRule {sbec}{ex} {} {} +\DeclareFontSeriesChangeRule {sbec}{l} {} {} +\DeclareFontSeriesChangeRule {sbec}{sb} {} {} +\DeclareFontSeriesChangeRule {sbec}{sc} {} {} +\DeclareFontSeriesChangeRule {sbec}{sl} {} {} +\DeclareFontSeriesChangeRule {sbec}{sx} {} {} +\DeclareFontSeriesChangeRule {sbec}{ub} {} {} +\DeclareFontSeriesChangeRule {sbec}{uc} {} {} +\DeclareFontSeriesChangeRule {sbec}{ul} {} {} +\DeclareFontSeriesChangeRule {sbec}{ux} {} {} +\DeclareFontSeriesChangeRule {sbec}{x} {} {} +\DeclareFontSeriesChangeRule {sbex}{?m} {} {} +\DeclareFontSeriesChangeRule {sbex}{bx} {} {} +\DeclareFontSeriesChangeRule {sbex}{b} {} {} +\DeclareFontSeriesChangeRule {sbex}{c} {} {} +\DeclareFontSeriesChangeRule {sbex}{eb} {} {} +\DeclareFontSeriesChangeRule {sbex}{ec} {} {} +\DeclareFontSeriesChangeRule {sbex}{el} {} {} +\DeclareFontSeriesChangeRule {sbex}{ex} {} {} +\DeclareFontSeriesChangeRule {sbex}{l} {} {} +\DeclareFontSeriesChangeRule {sbex}{m?} {} {} +\DeclareFontSeriesChangeRule {sbex}{sb} {} {} +\DeclareFontSeriesChangeRule {sbex}{sc} {} {} +\DeclareFontSeriesChangeRule {sbex}{sl} {} {} +\DeclareFontSeriesChangeRule {sbex}{sx} {} {} +\DeclareFontSeriesChangeRule {sbex}{ub} {} {} +\DeclareFontSeriesChangeRule {sbex}{uc} {} {} +\DeclareFontSeriesChangeRule {sbex}{ul} {} {} +\DeclareFontSeriesChangeRule {sbex}{ux} {} {} +\DeclareFontSeriesChangeRule {sbex}{x} {} {} +\DeclareFontSeriesChangeRule {sbsc}{bx} {} {} +\DeclareFontSeriesChangeRule {sbsc}{b} {} {} +\DeclareFontSeriesChangeRule {sbsc}{c} {} {} +\DeclareFontSeriesChangeRule {sbsc}{eb} {} {} +\DeclareFontSeriesChangeRule {sbsc}{ec} {} {} +\DeclareFontSeriesChangeRule {sbsc}{el} {} {} +\DeclareFontSeriesChangeRule {sbsc}{ex} {} {} +\DeclareFontSeriesChangeRule {sbsc}{l} {} {} +\DeclareFontSeriesChangeRule {sbsc}{sb} {} {} +\DeclareFontSeriesChangeRule {sbsc}{sc} {} {} +\DeclareFontSeriesChangeRule {sbsc}{sl} {} {} +\DeclareFontSeriesChangeRule {sbsc}{sx} {} {} +\DeclareFontSeriesChangeRule {sbsc}{ub} {} {} +\DeclareFontSeriesChangeRule {sbsc}{uc} {} {} +\DeclareFontSeriesChangeRule {sbsc}{ul} {} {} +\DeclareFontSeriesChangeRule {sbsc}{ux} {} {} +\DeclareFontSeriesChangeRule {sbsc}{x} {} {} +\DeclareFontSeriesChangeRule {sbsx}{?m} {} {} +\DeclareFontSeriesChangeRule {sbsx}{bx} {} {} +\DeclareFontSeriesChangeRule {sbsx}{b} {} {} +\DeclareFontSeriesChangeRule {sbsx}{c} {} {} +\DeclareFontSeriesChangeRule {sbsx}{eb} {} {} +\DeclareFontSeriesChangeRule {sbsx}{ec} {} {} +\DeclareFontSeriesChangeRule {sbsx}{el} {} {} +\DeclareFontSeriesChangeRule {sbsx}{ex} {} {} +\DeclareFontSeriesChangeRule {sbsx}{l} {} {} +\DeclareFontSeriesChangeRule {sbsx}{m?} {} {} +\DeclareFontSeriesChangeRule {sbsx}{sb} {} {} +\DeclareFontSeriesChangeRule {sbsx}{sc} {} {} +\DeclareFontSeriesChangeRule {sbsx}{sl} {} {} +\DeclareFontSeriesChangeRule {sbsx}{sx} {} {} +\DeclareFontSeriesChangeRule {sbsx}{ub} {} {} +\DeclareFontSeriesChangeRule {sbsx}{uc} {} {} +\DeclareFontSeriesChangeRule {sbsx}{ul} {} {} +\DeclareFontSeriesChangeRule {sbsx}{ux} {} {} +\DeclareFontSeriesChangeRule {sbsx}{x} {} {} +\DeclareFontSeriesChangeRule {sbuc}{?m} {} {} +\DeclareFontSeriesChangeRule {sbuc}{bx} {} {} +\DeclareFontSeriesChangeRule {sbuc}{b} {} {} +\DeclareFontSeriesChangeRule {sbuc}{c} {} {} +\DeclareFontSeriesChangeRule {sbuc}{eb} {} {} +\DeclareFontSeriesChangeRule {sbuc}{ec} {} {} +\DeclareFontSeriesChangeRule {sbuc}{el} {} {} +\DeclareFontSeriesChangeRule {sbuc}{ex} {} {} +\DeclareFontSeriesChangeRule {sbuc}{l} {} {} +\DeclareFontSeriesChangeRule {sbuc}{m?} {} {} +\DeclareFontSeriesChangeRule {sbuc}{sb} {} {} +\DeclareFontSeriesChangeRule {sbuc}{sc} {} {} +\DeclareFontSeriesChangeRule {sbuc}{sl} {} {} +\DeclareFontSeriesChangeRule {sbuc}{sx} {} {} +\DeclareFontSeriesChangeRule {sbuc}{ub} {} {} +\DeclareFontSeriesChangeRule {sbuc}{uc} {} {} +\DeclareFontSeriesChangeRule {sbuc}{ul} {} {} +\DeclareFontSeriesChangeRule {sbuc}{ux} {} {} +\DeclareFontSeriesChangeRule {sbuc}{x} {} {} +\DeclareFontSeriesChangeRule {sbux}{?m} {} {} +\DeclareFontSeriesChangeRule {sbux}{bx} {} {} +\DeclareFontSeriesChangeRule {sbux}{b} {} {} +\DeclareFontSeriesChangeRule {sbux}{c} {} {} +\DeclareFontSeriesChangeRule {sbux}{eb} {} {} +\DeclareFontSeriesChangeRule {sbux}{ec} {} {} +\DeclareFontSeriesChangeRule {sbux}{el} {} {} +\DeclareFontSeriesChangeRule {sbux}{ex} {} {} +\DeclareFontSeriesChangeRule {sbux}{l} {} {} +\DeclareFontSeriesChangeRule {sbux}{m?} {} {} +\DeclareFontSeriesChangeRule {sbux}{sb} {} {} +\DeclareFontSeriesChangeRule {sbux}{sc} {} {} +\DeclareFontSeriesChangeRule {sbux}{sl} {} {} +\DeclareFontSeriesChangeRule {sbux}{sx} {} {} +\DeclareFontSeriesChangeRule {sbux}{ub} {} {} +\DeclareFontSeriesChangeRule {sbux}{uc} {} {} +\DeclareFontSeriesChangeRule {sbux}{ul} {} {} +\DeclareFontSeriesChangeRule {sbux}{ux} {} {} +\DeclareFontSeriesChangeRule {sbux}{x} {} {} +\DeclareFontSeriesChangeRule {sbx}{bx} {} {} \DeclareFontSeriesChangeRule {sbx}{b}{bx}{} \DeclareFontSeriesChangeRule {sbx}{c}{sbc}{} \DeclareFontSeriesChangeRule {sbx}{eb}{ebx}{} \DeclareFontSeriesChangeRule {sbx}{ec}{sbec}{} \DeclareFontSeriesChangeRule {sbx}{el}{elx}{} +\DeclareFontSeriesChangeRule {sbx}{ex} {} {} \DeclareFontSeriesChangeRule {sbx}{l}{lx}{} \DeclareFontSeriesChangeRule {sbx}{sb}{sbx}{} \DeclareFontSeriesChangeRule {sbx}{sc}{sbsc}{} \DeclareFontSeriesChangeRule {sbx}{sl}{slx}{} +\DeclareFontSeriesChangeRule {sbx}{sx} {} {} \DeclareFontSeriesChangeRule {sbx}{ub}{ubx}{} +\DeclareFontSeriesChangeRule {sbx}{uc} {} {} \DeclareFontSeriesChangeRule {sbx}{ul}{ulx}{} +\DeclareFontSeriesChangeRule {sbx}{ux} {} {} \DeclareFontSeriesChangeRule {sbx}{x}{sbx}{} -\DeclareFontSeriesChangeRule {sb}{c} {sbc} {bc} %? %<----- -\DeclareFontSeriesChangeRule {sb}{ec} {sbec} {sbc} %? %<----- -\DeclareFontSeriesChangeRule {sb}{sc} {sbsc} {sbc} %? %<----- -\DeclareFontSeriesChangeRule {sb}{x} {sbx} {bx} %? %<----- +\DeclareFontSeriesChangeRule {sb}{bx} {} {} +\DeclareFontSeriesChangeRule {sb}{c} {sbc} {bc} +\DeclareFontSeriesChangeRule {sb}{eb} {} {} +\DeclareFontSeriesChangeRule {sb}{ec} {sbec} {sbc} +\DeclareFontSeriesChangeRule {sb}{ex} {} {} +\DeclareFontSeriesChangeRule {sb}{sc} {sbsc} {sbc} +\DeclareFontSeriesChangeRule {sb}{sx} {} {} +\DeclareFontSeriesChangeRule {sb}{ub} {} {} +\DeclareFontSeriesChangeRule {sb}{uc} {} {} +\DeclareFontSeriesChangeRule {sb}{ux} {} {} +\DeclareFontSeriesChangeRule {sb}{x} {sbx} {bx} +\DeclareFontSeriesChangeRule {sc}{bx} {bx} {b} +\DeclareFontSeriesChangeRule {sc}{b}{bsc}{} +\DeclareFontSeriesChangeRule {sc}{eb}{ebsc}{} +\DeclareFontSeriesChangeRule {sc}{el}{elsc}{} +\DeclareFontSeriesChangeRule {sc}{l}{lsc}{} +\DeclareFontSeriesChangeRule {sc}{sb}{sbsc}{} +\DeclareFontSeriesChangeRule {sc}{sl}{slsc}{} +\DeclareFontSeriesChangeRule {sc}{ub}{ubsc}{} +\DeclareFontSeriesChangeRule {sc}{x}{x}{m} +\DeclareFontSeriesChangeRule {slc}{bx} {} {} \DeclareFontSeriesChangeRule {slc}{b}{bc}{} \DeclareFontSeriesChangeRule {slc}{c}{slc}{} \DeclareFontSeriesChangeRule {slc}{eb}{ebc}{} \DeclareFontSeriesChangeRule {slc}{ec}{slec}{} \DeclareFontSeriesChangeRule {slc}{el}{elc}{} +\DeclareFontSeriesChangeRule {slc}{ex} {} {} \DeclareFontSeriesChangeRule {slc}{l}{lc}{} \DeclareFontSeriesChangeRule {slc}{sb}{sbc}{} \DeclareFontSeriesChangeRule {slc}{sc}{slsc}{} \DeclareFontSeriesChangeRule {slc}{sl}{slc}{} +\DeclareFontSeriesChangeRule {slc}{sx} {} {} \DeclareFontSeriesChangeRule {slc}{ub}{ubc}{} +\DeclareFontSeriesChangeRule {slc}{uc} {} {} \DeclareFontSeriesChangeRule {slc}{ul}{ulc}{} +\DeclareFontSeriesChangeRule {slc}{ux} {} {} \DeclareFontSeriesChangeRule {slc}{x}{slx}{} +\DeclareFontSeriesChangeRule {slec}{bx} {} {} +\DeclareFontSeriesChangeRule {slec}{b} {} {} +\DeclareFontSeriesChangeRule {slec}{c} {} {} +\DeclareFontSeriesChangeRule {slec}{eb} {} {} +\DeclareFontSeriesChangeRule {slec}{ec} {} {} +\DeclareFontSeriesChangeRule {slec}{el} {} {} +\DeclareFontSeriesChangeRule {slec}{ex} {} {} +\DeclareFontSeriesChangeRule {slec}{l} {} {} +\DeclareFontSeriesChangeRule {slec}{sb} {} {} +\DeclareFontSeriesChangeRule {slec}{sc} {} {} +\DeclareFontSeriesChangeRule {slec}{sl} {} {} +\DeclareFontSeriesChangeRule {slec}{sx} {} {} +\DeclareFontSeriesChangeRule {slec}{ub} {} {} +\DeclareFontSeriesChangeRule {slec}{uc} {} {} +\DeclareFontSeriesChangeRule {slec}{ul} {} {} +\DeclareFontSeriesChangeRule {slec}{ux} {} {} +\DeclareFontSeriesChangeRule {slec}{x} {} {} +\DeclareFontSeriesChangeRule {slex}{?m} {} {} +\DeclareFontSeriesChangeRule {slex}{bx} {} {} +\DeclareFontSeriesChangeRule {slex}{b} {} {} +\DeclareFontSeriesChangeRule {slex}{c} {} {} +\DeclareFontSeriesChangeRule {slex}{eb} {} {} +\DeclareFontSeriesChangeRule {slex}{ec} {} {} +\DeclareFontSeriesChangeRule {slex}{el} {} {} +\DeclareFontSeriesChangeRule {slex}{ex} {} {} +\DeclareFontSeriesChangeRule {slex}{l} {} {} +\DeclareFontSeriesChangeRule {slex}{m?} {} {} +\DeclareFontSeriesChangeRule {slex}{sb} {} {} +\DeclareFontSeriesChangeRule {slex}{sc} {} {} +\DeclareFontSeriesChangeRule {slex}{sl} {} {} +\DeclareFontSeriesChangeRule {slex}{sx} {} {} +\DeclareFontSeriesChangeRule {slex}{ub} {} {} +\DeclareFontSeriesChangeRule {slex}{uc} {} {} +\DeclareFontSeriesChangeRule {slex}{ul} {} {} +\DeclareFontSeriesChangeRule {slex}{ux} {} {} +\DeclareFontSeriesChangeRule {slex}{x} {} {} +\DeclareFontSeriesChangeRule {slsc}{bx} {} {} +\DeclareFontSeriesChangeRule {slsc}{b} {} {} +\DeclareFontSeriesChangeRule {slsc}{c} {} {} +\DeclareFontSeriesChangeRule {slsc}{eb} {} {} +\DeclareFontSeriesChangeRule {slsc}{ec} {} {} +\DeclareFontSeriesChangeRule {slsc}{el} {} {} +\DeclareFontSeriesChangeRule {slsc}{ex} {} {} +\DeclareFontSeriesChangeRule {slsc}{l} {} {} +\DeclareFontSeriesChangeRule {slsc}{sb} {} {} +\DeclareFontSeriesChangeRule {slsc}{sc} {} {} +\DeclareFontSeriesChangeRule {slsc}{sl} {} {} +\DeclareFontSeriesChangeRule {slsc}{sx} {} {} +\DeclareFontSeriesChangeRule {slsc}{ub} {} {} +\DeclareFontSeriesChangeRule {slsc}{uc} {} {} +\DeclareFontSeriesChangeRule {slsc}{ul} {} {} +\DeclareFontSeriesChangeRule {slsc}{ux} {} {} +\DeclareFontSeriesChangeRule {slsc}{x} {} {} +\DeclareFontSeriesChangeRule {slsx}{?m} {} {} +\DeclareFontSeriesChangeRule {slsx}{bx} {} {} +\DeclareFontSeriesChangeRule {slsx}{b} {} {} +\DeclareFontSeriesChangeRule {slsx}{c} {} {} +\DeclareFontSeriesChangeRule {slsx}{eb} {} {} +\DeclareFontSeriesChangeRule {slsx}{ec} {} {} +\DeclareFontSeriesChangeRule {slsx}{el} {} {} +\DeclareFontSeriesChangeRule {slsx}{ex} {} {} +\DeclareFontSeriesChangeRule {slsx}{l} {} {} +\DeclareFontSeriesChangeRule {slsx}{m?} {} {} +\DeclareFontSeriesChangeRule {slsx}{sb} {} {} +\DeclareFontSeriesChangeRule {slsx}{sc} {} {} +\DeclareFontSeriesChangeRule {slsx}{sl} {} {} +\DeclareFontSeriesChangeRule {slsx}{sx} {} {} +\DeclareFontSeriesChangeRule {slsx}{ub} {} {} +\DeclareFontSeriesChangeRule {slsx}{uc} {} {} +\DeclareFontSeriesChangeRule {slsx}{ul} {} {} +\DeclareFontSeriesChangeRule {slsx}{ux} {} {} +\DeclareFontSeriesChangeRule {slsx}{x} {} {} +\DeclareFontSeriesChangeRule {sluc}{?m} {} {} +\DeclareFontSeriesChangeRule {sluc}{bx} {} {} +\DeclareFontSeriesChangeRule {sluc}{b} {} {} +\DeclareFontSeriesChangeRule {sluc}{c} {} {} +\DeclareFontSeriesChangeRule {sluc}{eb} {} {} +\DeclareFontSeriesChangeRule {sluc}{ec} {} {} +\DeclareFontSeriesChangeRule {sluc}{el} {} {} +\DeclareFontSeriesChangeRule {sluc}{ex} {} {} +\DeclareFontSeriesChangeRule {sluc}{l} {} {} +\DeclareFontSeriesChangeRule {sluc}{m?} {} {} +\DeclareFontSeriesChangeRule {sluc}{sb} {} {} +\DeclareFontSeriesChangeRule {sluc}{sc} {} {} +\DeclareFontSeriesChangeRule {sluc}{sl} {} {} +\DeclareFontSeriesChangeRule {sluc}{sx} {} {} +\DeclareFontSeriesChangeRule {sluc}{ub} {} {} +\DeclareFontSeriesChangeRule {sluc}{uc} {} {} +\DeclareFontSeriesChangeRule {sluc}{ul} {} {} +\DeclareFontSeriesChangeRule {sluc}{ux} {} {} +\DeclareFontSeriesChangeRule {sluc}{x} {} {} +\DeclareFontSeriesChangeRule {slux}{?m} {} {} +\DeclareFontSeriesChangeRule {slux}{bx} {} {} +\DeclareFontSeriesChangeRule {slux}{b} {} {} +\DeclareFontSeriesChangeRule {slux}{c} {} {} +\DeclareFontSeriesChangeRule {slux}{eb} {} {} +\DeclareFontSeriesChangeRule {slux}{ec} {} {} +\DeclareFontSeriesChangeRule {slux}{el} {} {} +\DeclareFontSeriesChangeRule {slux}{ex} {} {} +\DeclareFontSeriesChangeRule {slux}{l} {} {} +\DeclareFontSeriesChangeRule {slux}{m?} {} {} +\DeclareFontSeriesChangeRule {slux}{sb} {} {} +\DeclareFontSeriesChangeRule {slux}{sc} {} {} +\DeclareFontSeriesChangeRule {slux}{sl} {} {} +\DeclareFontSeriesChangeRule {slux}{sx} {} {} +\DeclareFontSeriesChangeRule {slux}{ub} {} {} +\DeclareFontSeriesChangeRule {slux}{uc} {} {} +\DeclareFontSeriesChangeRule {slux}{ul} {} {} +\DeclareFontSeriesChangeRule {slux}{ux} {} {} +\DeclareFontSeriesChangeRule {slux}{x} {} {} +\DeclareFontSeriesChangeRule {slx}{bx} {} {} \DeclareFontSeriesChangeRule {slx}{b}{bx}{} \DeclareFontSeriesChangeRule {slx}{c}{slc}{} \DeclareFontSeriesChangeRule {slx}{eb}{ebx}{} \DeclareFontSeriesChangeRule {slx}{ec}{slec}{} \DeclareFontSeriesChangeRule {slx}{el}{elx}{} +\DeclareFontSeriesChangeRule {slx}{ex} {} {} \DeclareFontSeriesChangeRule {slx}{l}{lx}{} \DeclareFontSeriesChangeRule {slx}{sb}{sbx}{} \DeclareFontSeriesChangeRule {slx}{sc}{slsc}{} \DeclareFontSeriesChangeRule {slx}{sl}{slx}{} +\DeclareFontSeriesChangeRule {slx}{sx} {} {} \DeclareFontSeriesChangeRule {slx}{ub}{ubx}{} +\DeclareFontSeriesChangeRule {slx}{uc} {} {} \DeclareFontSeriesChangeRule {slx}{ul}{ulx}{} +\DeclareFontSeriesChangeRule {slx}{ux} {} {} \DeclareFontSeriesChangeRule {slx}{x}{slx}{} +\DeclareFontSeriesChangeRule {sl}{bx} {} {} \DeclareFontSeriesChangeRule {sl}{c}{slc}{} +\DeclareFontSeriesChangeRule {sl}{eb} {} {} \DeclareFontSeriesChangeRule {sl}{ec}{slec}{} +\DeclareFontSeriesChangeRule {sl}{ex} {} {} +\DeclareFontSeriesChangeRule {sl}{sb} {} {} \DeclareFontSeriesChangeRule {sl}{sc}{slsc}{} +\DeclareFontSeriesChangeRule {sl}{sx} {} {} +\DeclareFontSeriesChangeRule {sl}{ub} {} {} +\DeclareFontSeriesChangeRule {sl}{uc} {} {} +\DeclareFontSeriesChangeRule {sl}{ux} {} {} \DeclareFontSeriesChangeRule {sl}{x}{slx}{} +\DeclareFontSeriesChangeRule {sx}{?m} {} {} +\DeclareFontSeriesChangeRule {sx}{bx} {} {} +\DeclareFontSeriesChangeRule {sx}{b} {} {} +\DeclareFontSeriesChangeRule {sx}{eb} {} {} +\DeclareFontSeriesChangeRule {sx}{el} {} {} +\DeclareFontSeriesChangeRule {sx}{l} {} {} +\DeclareFontSeriesChangeRule {sx}{m?} {} {} +\DeclareFontSeriesChangeRule {sx}{sb} {} {} +\DeclareFontSeriesChangeRule {sx}{sl} {} {} +\DeclareFontSeriesChangeRule {sx}{ub} {} {} +\DeclareFontSeriesChangeRule {sx}{ul} {} {} +\DeclareFontSeriesChangeRule {ubc}{bx} {} {} \DeclareFontSeriesChangeRule {ubc}{b}{bc}{} \DeclareFontSeriesChangeRule {ubc}{c}{ubc}{} \DeclareFontSeriesChangeRule {ubc}{eb}{ebc}{} \DeclareFontSeriesChangeRule {ubc}{ec}{ubec}{} \DeclareFontSeriesChangeRule {ubc}{el}{elc}{} +\DeclareFontSeriesChangeRule {ubc}{ex} {} {} \DeclareFontSeriesChangeRule {ubc}{l}{lc}{} \DeclareFontSeriesChangeRule {ubc}{sb}{sbc}{} \DeclareFontSeriesChangeRule {ubc}{sc}{ubsc}{} \DeclareFontSeriesChangeRule {ubc}{sl}{slc}{} +\DeclareFontSeriesChangeRule {ubc}{sx} {} {} \DeclareFontSeriesChangeRule {ubc}{ub}{ubc}{} +\DeclareFontSeriesChangeRule {ubc}{uc} {} {} \DeclareFontSeriesChangeRule {ubc}{ul}{ulc}{} +\DeclareFontSeriesChangeRule {ubc}{ux} {} {} \DeclareFontSeriesChangeRule {ubc}{x}{ubx}{} +\DeclareFontSeriesChangeRule {ubec}{bx} {} {} +\DeclareFontSeriesChangeRule {ubec}{b} {} {} +\DeclareFontSeriesChangeRule {ubec}{c} {} {} +\DeclareFontSeriesChangeRule {ubec}{eb} {} {} +\DeclareFontSeriesChangeRule {ubec}{ec} {} {} +\DeclareFontSeriesChangeRule {ubec}{el} {} {} +\DeclareFontSeriesChangeRule {ubec}{ex} {} {} +\DeclareFontSeriesChangeRule {ubec}{l} {} {} +\DeclareFontSeriesChangeRule {ubec}{sb} {} {} +\DeclareFontSeriesChangeRule {ubec}{sc} {} {} +\DeclareFontSeriesChangeRule {ubec}{sl} {} {} +\DeclareFontSeriesChangeRule {ubec}{sx} {} {} +\DeclareFontSeriesChangeRule {ubec}{ub} {} {} +\DeclareFontSeriesChangeRule {ubec}{uc} {} {} +\DeclareFontSeriesChangeRule {ubec}{ul} {} {} +\DeclareFontSeriesChangeRule {ubec}{ux} {} {} +\DeclareFontSeriesChangeRule {ubec}{x} {} {} +\DeclareFontSeriesChangeRule {ubex}{?m} {} {} +\DeclareFontSeriesChangeRule {ubex}{bx} {} {} +\DeclareFontSeriesChangeRule {ubex}{b} {} {} +\DeclareFontSeriesChangeRule {ubex}{c} {} {} +\DeclareFontSeriesChangeRule {ubex}{eb} {} {} +\DeclareFontSeriesChangeRule {ubex}{ec} {} {} +\DeclareFontSeriesChangeRule {ubex}{el} {} {} +\DeclareFontSeriesChangeRule {ubex}{ex} {} {} +\DeclareFontSeriesChangeRule {ubex}{l} {} {} +\DeclareFontSeriesChangeRule {ubex}{m?} {} {} +\DeclareFontSeriesChangeRule {ubex}{sb} {} {} +\DeclareFontSeriesChangeRule {ubex}{sc} {} {} +\DeclareFontSeriesChangeRule {ubex}{sl} {} {} +\DeclareFontSeriesChangeRule {ubex}{sx} {} {} +\DeclareFontSeriesChangeRule {ubex}{ub} {} {} +\DeclareFontSeriesChangeRule {ubex}{uc} {} {} +\DeclareFontSeriesChangeRule {ubex}{ul} {} {} +\DeclareFontSeriesChangeRule {ubex}{ux} {} {} +\DeclareFontSeriesChangeRule {ubex}{x} {} {} +\DeclareFontSeriesChangeRule {ubsc}{bx} {} {} +\DeclareFontSeriesChangeRule {ubsc}{b} {} {} +\DeclareFontSeriesChangeRule {ubsc}{c} {} {} +\DeclareFontSeriesChangeRule {ubsc}{eb} {} {} +\DeclareFontSeriesChangeRule {ubsc}{ec} {} {} +\DeclareFontSeriesChangeRule {ubsc}{el} {} {} +\DeclareFontSeriesChangeRule {ubsc}{ex} {} {} +\DeclareFontSeriesChangeRule {ubsc}{l} {} {} +\DeclareFontSeriesChangeRule {ubsc}{sb} {} {} +\DeclareFontSeriesChangeRule {ubsc}{sc} {} {} +\DeclareFontSeriesChangeRule {ubsc}{sl} {} {} +\DeclareFontSeriesChangeRule {ubsc}{sx} {} {} +\DeclareFontSeriesChangeRule {ubsc}{ub} {} {} +\DeclareFontSeriesChangeRule {ubsc}{uc} {} {} +\DeclareFontSeriesChangeRule {ubsc}{ul} {} {} +\DeclareFontSeriesChangeRule {ubsc}{ux} {} {} +\DeclareFontSeriesChangeRule {ubsc}{x} {} {} +\DeclareFontSeriesChangeRule {ubsx}{?m} {} {} +\DeclareFontSeriesChangeRule {ubsx}{bx} {} {} +\DeclareFontSeriesChangeRule {ubsx}{b} {} {} +\DeclareFontSeriesChangeRule {ubsx}{c} {} {} +\DeclareFontSeriesChangeRule {ubsx}{eb} {} {} +\DeclareFontSeriesChangeRule {ubsx}{ec} {} {} +\DeclareFontSeriesChangeRule {ubsx}{el} {} {} +\DeclareFontSeriesChangeRule {ubsx}{ex} {} {} +\DeclareFontSeriesChangeRule {ubsx}{l} {} {} +\DeclareFontSeriesChangeRule {ubsx}{m?} {} {} +\DeclareFontSeriesChangeRule {ubsx}{sb} {} {} +\DeclareFontSeriesChangeRule {ubsx}{sc} {} {} +\DeclareFontSeriesChangeRule {ubsx}{sl} {} {} +\DeclareFontSeriesChangeRule {ubsx}{sx} {} {} +\DeclareFontSeriesChangeRule {ubsx}{ub} {} {} +\DeclareFontSeriesChangeRule {ubsx}{uc} {} {} +\DeclareFontSeriesChangeRule {ubsx}{ul} {} {} +\DeclareFontSeriesChangeRule {ubsx}{ux} {} {} +\DeclareFontSeriesChangeRule {ubsx}{x} {} {} +\DeclareFontSeriesChangeRule {ubuc}{?m} {} {} +\DeclareFontSeriesChangeRule {ubuc}{bx} {} {} +\DeclareFontSeriesChangeRule {ubuc}{b} {} {} +\DeclareFontSeriesChangeRule {ubuc}{c} {} {} +\DeclareFontSeriesChangeRule {ubuc}{eb} {} {} +\DeclareFontSeriesChangeRule {ubuc}{ec} {} {} +\DeclareFontSeriesChangeRule {ubuc}{el} {} {} +\DeclareFontSeriesChangeRule {ubuc}{ex} {} {} +\DeclareFontSeriesChangeRule {ubuc}{l} {} {} +\DeclareFontSeriesChangeRule {ubuc}{m?} {} {} +\DeclareFontSeriesChangeRule {ubuc}{sb} {} {} +\DeclareFontSeriesChangeRule {ubuc}{sc} {} {} +\DeclareFontSeriesChangeRule {ubuc}{sl} {} {} +\DeclareFontSeriesChangeRule {ubuc}{sx} {} {} +\DeclareFontSeriesChangeRule {ubuc}{ub} {} {} +\DeclareFontSeriesChangeRule {ubuc}{uc} {} {} +\DeclareFontSeriesChangeRule {ubuc}{ul} {} {} +\DeclareFontSeriesChangeRule {ubuc}{ux} {} {} +\DeclareFontSeriesChangeRule {ubuc}{x} {} {} +\DeclareFontSeriesChangeRule {ubux}{?m} {} {} +\DeclareFontSeriesChangeRule {ubux}{bx} {} {} +\DeclareFontSeriesChangeRule {ubux}{b} {} {} +\DeclareFontSeriesChangeRule {ubux}{c} {} {} +\DeclareFontSeriesChangeRule {ubux}{eb} {} {} +\DeclareFontSeriesChangeRule {ubux}{ec} {} {} +\DeclareFontSeriesChangeRule {ubux}{el} {} {} +\DeclareFontSeriesChangeRule {ubux}{ex} {} {} +\DeclareFontSeriesChangeRule {ubux}{l} {} {} +\DeclareFontSeriesChangeRule {ubux}{m?} {} {} +\DeclareFontSeriesChangeRule {ubux}{sb} {} {} +\DeclareFontSeriesChangeRule {ubux}{sc} {} {} +\DeclareFontSeriesChangeRule {ubux}{sl} {} {} +\DeclareFontSeriesChangeRule {ubux}{sx} {} {} +\DeclareFontSeriesChangeRule {ubux}{ub} {} {} +\DeclareFontSeriesChangeRule {ubux}{uc} {} {} +\DeclareFontSeriesChangeRule {ubux}{ul} {} {} +\DeclareFontSeriesChangeRule {ubux}{ux} {} {} +\DeclareFontSeriesChangeRule {ubux}{x} {} {} +\DeclareFontSeriesChangeRule {ubx}{bx} {} {} \DeclareFontSeriesChangeRule {ubx}{b}{bx}{} \DeclareFontSeriesChangeRule {ubx}{c}{ubc}{} \DeclareFontSeriesChangeRule {ubx}{eb}{ebx}{} \DeclareFontSeriesChangeRule {ubx}{ec}{ubec}{} \DeclareFontSeriesChangeRule {ubx}{el}{elx}{} +\DeclareFontSeriesChangeRule {ubx}{ex} {} {} \DeclareFontSeriesChangeRule {ubx}{l}{lx}{} \DeclareFontSeriesChangeRule {ubx}{sb}{sbx}{} \DeclareFontSeriesChangeRule {ubx}{sc}{ubsc}{} \DeclareFontSeriesChangeRule {ubx}{sl}{slx}{} +\DeclareFontSeriesChangeRule {ubx}{sx} {} {} \DeclareFontSeriesChangeRule {ubx}{ub}{ubx}{} +\DeclareFontSeriesChangeRule {ubx}{uc} {} {} \DeclareFontSeriesChangeRule {ubx}{ul}{ulx}{} +\DeclareFontSeriesChangeRule {ubx}{ux} {} {} \DeclareFontSeriesChangeRule {ubx}{x}{ubx}{} +\DeclareFontSeriesChangeRule {ub}{bx} {} {} \DeclareFontSeriesChangeRule {ub}{c}{ubc}{} +\DeclareFontSeriesChangeRule {ub}{eb} {} {} \DeclareFontSeriesChangeRule {ub}{ec}{ubec}{} +\DeclareFontSeriesChangeRule {ub}{ex} {} {} +\DeclareFontSeriesChangeRule {ub}{sb} {} {} \DeclareFontSeriesChangeRule {ub}{sc}{ubsc}{} +\DeclareFontSeriesChangeRule {ub}{sx} {} {} +\DeclareFontSeriesChangeRule {ub}{uc} {} {} +\DeclareFontSeriesChangeRule {ub}{ux} {} {} \DeclareFontSeriesChangeRule {ub}{x}{ubx}{} +\DeclareFontSeriesChangeRule {uc}{?m} {} {} +\DeclareFontSeriesChangeRule {uc}{bx} {} {} +\DeclareFontSeriesChangeRule {uc}{b} {} {} +\DeclareFontSeriesChangeRule {uc}{eb} {} {} +\DeclareFontSeriesChangeRule {uc}{el} {} {} +\DeclareFontSeriesChangeRule {uc}{l} {} {} +\DeclareFontSeriesChangeRule {uc}{m?} {} {} +\DeclareFontSeriesChangeRule {uc}{sb} {} {} +\DeclareFontSeriesChangeRule {uc}{sl} {} {} +\DeclareFontSeriesChangeRule {uc}{ub} {} {} +\DeclareFontSeriesChangeRule {uc}{ul} {} {} +\DeclareFontSeriesChangeRule {ulc}{bx} {} {} \DeclareFontSeriesChangeRule {ulc}{b}{bc}{} \DeclareFontSeriesChangeRule {ulc}{c}{ulc}{} \DeclareFontSeriesChangeRule {ulc}{eb}{ebc}{} \DeclareFontSeriesChangeRule {ulc}{ec}{ulec}{ulc} \DeclareFontSeriesChangeRule {ulc}{el}{elc}{} +\DeclareFontSeriesChangeRule {ulc}{ex} {} {} \DeclareFontSeriesChangeRule {ulc}{l}{lc}{} \DeclareFontSeriesChangeRule {ulc}{sb}{sbc}{} \DeclareFontSeriesChangeRule {ulc}{sc}{ulsc}{ulc} \DeclareFontSeriesChangeRule {ulc}{sl}{slc}{} +\DeclareFontSeriesChangeRule {ulc}{sx} {} {} \DeclareFontSeriesChangeRule {ulc}{ub}{ubc}{} +\DeclareFontSeriesChangeRule {ulc}{uc} {} {} \DeclareFontSeriesChangeRule {ulc}{ul}{ulc}{} +\DeclareFontSeriesChangeRule {ulc}{ux} {} {} \DeclareFontSeriesChangeRule {ulc}{x}{ulx}{} +\DeclareFontSeriesChangeRule {ulec}{bx} {} {} +\DeclareFontSeriesChangeRule {ulec}{b} {} {} +\DeclareFontSeriesChangeRule {ulec}{c} {} {} +\DeclareFontSeriesChangeRule {ulec}{eb} {} {} +\DeclareFontSeriesChangeRule {ulec}{ec} {} {} +\DeclareFontSeriesChangeRule {ulec}{el} {} {} +\DeclareFontSeriesChangeRule {ulec}{ex} {} {} +\DeclareFontSeriesChangeRule {ulec}{l} {} {} +\DeclareFontSeriesChangeRule {ulec}{sb} {} {} +\DeclareFontSeriesChangeRule {ulec}{sc} {} {} +\DeclareFontSeriesChangeRule {ulec}{sl} {} {} +\DeclareFontSeriesChangeRule {ulec}{sx} {} {} +\DeclareFontSeriesChangeRule {ulec}{ub} {} {} +\DeclareFontSeriesChangeRule {ulec}{uc} {} {} +\DeclareFontSeriesChangeRule {ulec}{ul} {} {} +\DeclareFontSeriesChangeRule {ulec}{ux} {} {} +\DeclareFontSeriesChangeRule {ulec}{x} {} {} +\DeclareFontSeriesChangeRule {ulex}{?m} {} {} +\DeclareFontSeriesChangeRule {ulex}{bx} {} {} +\DeclareFontSeriesChangeRule {ulex}{b} {} {} +\DeclareFontSeriesChangeRule {ulex}{c} {} {} +\DeclareFontSeriesChangeRule {ulex}{eb} {} {} +\DeclareFontSeriesChangeRule {ulex}{ec} {} {} +\DeclareFontSeriesChangeRule {ulex}{el} {} {} +\DeclareFontSeriesChangeRule {ulex}{ex} {} {} +\DeclareFontSeriesChangeRule {ulex}{l} {} {} +\DeclareFontSeriesChangeRule {ulex}{m?} {} {} +\DeclareFontSeriesChangeRule {ulex}{sb} {} {} +\DeclareFontSeriesChangeRule {ulex}{sc} {} {} +\DeclareFontSeriesChangeRule {ulex}{sl} {} {} +\DeclareFontSeriesChangeRule {ulex}{sx} {} {} +\DeclareFontSeriesChangeRule {ulex}{ub} {} {} +\DeclareFontSeriesChangeRule {ulex}{uc} {} {} +\DeclareFontSeriesChangeRule {ulex}{ul} {} {} +\DeclareFontSeriesChangeRule {ulex}{ux} {} {} +\DeclareFontSeriesChangeRule {ulex}{x} {} {} +\DeclareFontSeriesChangeRule {ulsc}{bx} {} {} +\DeclareFontSeriesChangeRule {ulsc}{b} {} {} +\DeclareFontSeriesChangeRule {ulsc}{c} {} {} +\DeclareFontSeriesChangeRule {ulsc}{eb} {} {} +\DeclareFontSeriesChangeRule {ulsc}{ec} {} {} +\DeclareFontSeriesChangeRule {ulsc}{el} {} {} +\DeclareFontSeriesChangeRule {ulsc}{ex} {} {} +\DeclareFontSeriesChangeRule {ulsc}{l} {} {} +\DeclareFontSeriesChangeRule {ulsc}{sb} {} {} +\DeclareFontSeriesChangeRule {ulsc}{sc} {} {} +\DeclareFontSeriesChangeRule {ulsc}{sl} {} {} +\DeclareFontSeriesChangeRule {ulsc}{sx} {} {} +\DeclareFontSeriesChangeRule {ulsc}{ub} {} {} +\DeclareFontSeriesChangeRule {ulsc}{uc} {} {} +\DeclareFontSeriesChangeRule {ulsc}{ul} {} {} +\DeclareFontSeriesChangeRule {ulsc}{ux} {} {} +\DeclareFontSeriesChangeRule {ulsc}{x} {} {} +\DeclareFontSeriesChangeRule {ulsx}{?m} {} {} +\DeclareFontSeriesChangeRule {ulsx}{bx} {} {} +\DeclareFontSeriesChangeRule {ulsx}{b} {} {} +\DeclareFontSeriesChangeRule {ulsx}{c} {} {} +\DeclareFontSeriesChangeRule {ulsx}{eb} {} {} +\DeclareFontSeriesChangeRule {ulsx}{ec} {} {} +\DeclareFontSeriesChangeRule {ulsx}{el} {} {} +\DeclareFontSeriesChangeRule {ulsx}{ex} {} {} +\DeclareFontSeriesChangeRule {ulsx}{l} {} {} +\DeclareFontSeriesChangeRule {ulsx}{m?} {} {} +\DeclareFontSeriesChangeRule {ulsx}{sb} {} {} +\DeclareFontSeriesChangeRule {ulsx}{sc} {} {} +\DeclareFontSeriesChangeRule {ulsx}{sl} {} {} +\DeclareFontSeriesChangeRule {ulsx}{sx} {} {} +\DeclareFontSeriesChangeRule {ulsx}{ub} {} {} +\DeclareFontSeriesChangeRule {ulsx}{uc} {} {} +\DeclareFontSeriesChangeRule {ulsx}{ul} {} {} +\DeclareFontSeriesChangeRule {ulsx}{ux} {} {} +\DeclareFontSeriesChangeRule {ulsx}{x} {} {} +\DeclareFontSeriesChangeRule {uluc}{?m} {} {} +\DeclareFontSeriesChangeRule {uluc}{bx} {} {} +\DeclareFontSeriesChangeRule {uluc}{b} {} {} +\DeclareFontSeriesChangeRule {uluc}{c} {} {} +\DeclareFontSeriesChangeRule {uluc}{eb} {} {} +\DeclareFontSeriesChangeRule {uluc}{ec} {} {} +\DeclareFontSeriesChangeRule {uluc}{el} {} {} +\DeclareFontSeriesChangeRule {uluc}{ex} {} {} +\DeclareFontSeriesChangeRule {uluc}{l} {} {} +\DeclareFontSeriesChangeRule {uluc}{m?} {} {} +\DeclareFontSeriesChangeRule {uluc}{sb} {} {} +\DeclareFontSeriesChangeRule {uluc}{sc} {} {} +\DeclareFontSeriesChangeRule {uluc}{sl} {} {} +\DeclareFontSeriesChangeRule {uluc}{sx} {} {} +\DeclareFontSeriesChangeRule {uluc}{ub} {} {} +\DeclareFontSeriesChangeRule {uluc}{uc} {} {} +\DeclareFontSeriesChangeRule {uluc}{ul} {} {} +\DeclareFontSeriesChangeRule {uluc}{ux} {} {} +\DeclareFontSeriesChangeRule {uluc}{x} {} {} +\DeclareFontSeriesChangeRule {ulux}{?m} {} {} +\DeclareFontSeriesChangeRule {ulux}{bx} {} {} +\DeclareFontSeriesChangeRule {ulux}{b} {} {} +\DeclareFontSeriesChangeRule {ulux}{c} {} {} +\DeclareFontSeriesChangeRule {ulux}{eb} {} {} +\DeclareFontSeriesChangeRule {ulux}{ec} {} {} +\DeclareFontSeriesChangeRule {ulux}{el} {} {} +\DeclareFontSeriesChangeRule {ulux}{ex} {} {} +\DeclareFontSeriesChangeRule {ulux}{l} {} {} +\DeclareFontSeriesChangeRule {ulux}{m?} {} {} +\DeclareFontSeriesChangeRule {ulux}{sb} {} {} +\DeclareFontSeriesChangeRule {ulux}{sc} {} {} +\DeclareFontSeriesChangeRule {ulux}{sl} {} {} +\DeclareFontSeriesChangeRule {ulux}{sx} {} {} +\DeclareFontSeriesChangeRule {ulux}{ub} {} {} +\DeclareFontSeriesChangeRule {ulux}{uc} {} {} +\DeclareFontSeriesChangeRule {ulux}{ul} {} {} +\DeclareFontSeriesChangeRule {ulux}{ux} {} {} +\DeclareFontSeriesChangeRule {ulux}{x} {} {} +\DeclareFontSeriesChangeRule {ulx}{bx} {} {} \DeclareFontSeriesChangeRule {ulx}{b}{bx}{} \DeclareFontSeriesChangeRule {ulx}{c}{ulc}{} \DeclareFontSeriesChangeRule {ulx}{eb}{ebx}{} \DeclareFontSeriesChangeRule {ulx}{ec}{ulec}{} \DeclareFontSeriesChangeRule {ulx}{el}{elx}{} +\DeclareFontSeriesChangeRule {ulx}{ex} {} {} \DeclareFontSeriesChangeRule {ulx}{l}{lx}{} \DeclareFontSeriesChangeRule {ulx}{sb}{sbx}{} \DeclareFontSeriesChangeRule {ulx}{sc}{ulsc}{} \DeclareFontSeriesChangeRule {ulx}{sl}{slx}{} +\DeclareFontSeriesChangeRule {ulx}{sx} {} {} \DeclareFontSeriesChangeRule {ulx}{ub}{ubx}{} +\DeclareFontSeriesChangeRule {ulx}{uc} {} {} \DeclareFontSeriesChangeRule {ulx}{ul}{ulx}{} +\DeclareFontSeriesChangeRule {ulx}{ux} {} {} \DeclareFontSeriesChangeRule {ulx}{x}{ulx}{} +\DeclareFontSeriesChangeRule {ul}{bx} {} {} \DeclareFontSeriesChangeRule {ul}{c}{ulc}{} +\DeclareFontSeriesChangeRule {ul}{eb} {} {} \DeclareFontSeriesChangeRule {ul}{ec}{ulec}{} +\DeclareFontSeriesChangeRule {ul}{ex} {} {} +\DeclareFontSeriesChangeRule {ul}{sb} {} {} \DeclareFontSeriesChangeRule {ul}{sc}{ulsc}{} +\DeclareFontSeriesChangeRule {ul}{sx} {} {} +\DeclareFontSeriesChangeRule {ul}{ub} {} {} +\DeclareFontSeriesChangeRule {ul}{uc} {} {} +\DeclareFontSeriesChangeRule {ul}{ux} {} {} \DeclareFontSeriesChangeRule {ul}{x}{ulx}{} -\DeclareFontSeriesChangeRule {x}{b}{bx}{} +\DeclareFontSeriesChangeRule {ux}{?m} {} {} +\DeclareFontSeriesChangeRule {ux}{bx} {} {} +\DeclareFontSeriesChangeRule {ux}{b} {} {} +\DeclareFontSeriesChangeRule {ux}{eb} {} {} +\DeclareFontSeriesChangeRule {ux}{el} {} {} +\DeclareFontSeriesChangeRule {ux}{l} {} {} +\DeclareFontSeriesChangeRule {ux}{m?} {} {} +\DeclareFontSeriesChangeRule {ux}{sb} {} {} +\DeclareFontSeriesChangeRule {ux}{sl} {} {} +\DeclareFontSeriesChangeRule {ux}{ub} {} {} +\DeclareFontSeriesChangeRule {ux}{ul} {} {} +\DeclareFontSeriesChangeRule {x}{bx} {} {} \DeclareFontSeriesChangeRule {x}{c}{c}{} -\DeclareFontSeriesChangeRule {x}{eb}{ebx}{} \DeclareFontSeriesChangeRule {x}{ec}{ec}{} \DeclareFontSeriesChangeRule {x}{el}{elx}{} \DeclareFontSeriesChangeRule {x}{l}{lx}{} -\DeclareFontSeriesChangeRule {x}{sb}{sbx}{} \DeclareFontSeriesChangeRule {x}{sc}{sc}{} \DeclareFontSeriesChangeRule {x}{sl}{slx}{} \DeclareFontSeriesChangeRule {x}{ub}{ubx}{} \DeclareFontSeriesChangeRule {x}{ul}{ulx}{} -\DeclareFontSeriesChangeRule {bc}{m?}{c}{} -\DeclareFontSeriesChangeRule {bec}{m?}{ec}{} -\DeclareFontSeriesChangeRule {bsc}{m?}{sc}{} -\DeclareFontSeriesChangeRule {bx}{m?}{x}{} -\DeclareFontSeriesChangeRule {b}{m?}{m}{} -\DeclareFontSeriesChangeRule {c}{m?}{c}{} -\DeclareFontSeriesChangeRule {ebc}{m?}{c}{} -\DeclareFontSeriesChangeRule {ebec}{m?}{ec}{} -\DeclareFontSeriesChangeRule {ebsc}{m?}{sc}{} -\DeclareFontSeriesChangeRule {ebx}{m?}{x}{} -\DeclareFontSeriesChangeRule {eb}{m?}{m}{} -\DeclareFontSeriesChangeRule {ec}{m?}{ec}{} -\DeclareFontSeriesChangeRule {elc}{m?}{c}{} -\DeclareFontSeriesChangeRule {elec}{m?}{ec}{} -\DeclareFontSeriesChangeRule {elsc}{m?}{sc}{} -\DeclareFontSeriesChangeRule {elx}{m?}{x}{} -\DeclareFontSeriesChangeRule {el}{m?}{m}{} -\DeclareFontSeriesChangeRule {lc}{m?}{c}{} -\DeclareFontSeriesChangeRule {lec}{m?}{ec}{} -\DeclareFontSeriesChangeRule {lsc}{m?}{sc}{} -\DeclareFontSeriesChangeRule {lx}{m?}{x}{} -\DeclareFontSeriesChangeRule {l}{m?}{m}{} -\DeclareFontSeriesChangeRule {m}{m?}{m}{} -\DeclareFontSeriesChangeRule {sbc}{m?}{c}{} -\DeclareFontSeriesChangeRule {sbec}{m?}{ec}{} -\DeclareFontSeriesChangeRule {sbsc}{m?}{sc}{} -\DeclareFontSeriesChangeRule {sbx}{m?}{x}{} -\DeclareFontSeriesChangeRule {sb}{m?}{m}{} -\DeclareFontSeriesChangeRule {sc}{m?}{sc}{} -\DeclareFontSeriesChangeRule {slc}{m?}{c}{} -\DeclareFontSeriesChangeRule {slec}{m?}{ec}{} -\DeclareFontSeriesChangeRule {slsc}{m?}{sc}{} -\DeclareFontSeriesChangeRule {slx}{m?}{x}{} -\DeclareFontSeriesChangeRule {sl}{m?}{m}{} -\DeclareFontSeriesChangeRule {ubc}{m?}{c}{} -\DeclareFontSeriesChangeRule {ubec}{m?}{ec}{} -\DeclareFontSeriesChangeRule {ubsc}{m?}{sc}{} -\DeclareFontSeriesChangeRule {ubx}{m?}{x}{} -\DeclareFontSeriesChangeRule {ub}{m?}{ub}{} -\DeclareFontSeriesChangeRule {ulc}{m?}{c}{} -\DeclareFontSeriesChangeRule {ulec}{m?}{ec}{} -\DeclareFontSeriesChangeRule {ulsc}{m?}{sc}{} -\DeclareFontSeriesChangeRule {ulx}{m?}{x}{} -\DeclareFontSeriesChangeRule {ul}{m?}{m}{} -\DeclareFontSeriesChangeRule {x}{m?}{x}{} -\DeclareFontSeriesChangeRule {bc}{?m}{b}{} -\DeclareFontSeriesChangeRule {bec}{?m}{b}{} -\DeclareFontSeriesChangeRule {bsc}{?m}{b}{} -\DeclareFontSeriesChangeRule {bsc}{?m}{b}{} -\DeclareFontSeriesChangeRule {bx}{?m}{b}{} -\DeclareFontSeriesChangeRule {b}{?m}{b}{} -\DeclareFontSeriesChangeRule {c}{?m}{m}{} -\DeclareFontSeriesChangeRule {ebc}{?m}{eb}{} -\DeclareFontSeriesChangeRule {ebec}{?m}{eb}{} -\DeclareFontSeriesChangeRule {ebsc}{?m}{eb}{} -\DeclareFontSeriesChangeRule {ebsc}{?m}{eb}{} -\DeclareFontSeriesChangeRule {ebx}{?m}{eb}{} -\DeclareFontSeriesChangeRule {eb}{?m}{eb}{} -\DeclareFontSeriesChangeRule {ec}{?m}{m}{} -\DeclareFontSeriesChangeRule {elc}{?m}{el}{} -\DeclareFontSeriesChangeRule {elec}{?m}{el}{} -\DeclareFontSeriesChangeRule {elsc}{?m}{el}{} -\DeclareFontSeriesChangeRule {elsc}{?m}{el}{} -\DeclareFontSeriesChangeRule {elx}{?m}{el}{} -\DeclareFontSeriesChangeRule {el}{?m}{el}{} -\DeclareFontSeriesChangeRule {lc}{?m}{l}{} -\DeclareFontSeriesChangeRule {lec}{?m}{l}{} -\DeclareFontSeriesChangeRule {lsc}{?m}{l}{} -\DeclareFontSeriesChangeRule {lsc}{?m}{l}{} -\DeclareFontSeriesChangeRule {lx}{?m}{l}{} -\DeclareFontSeriesChangeRule {l}{?m}{l}{} -\DeclareFontSeriesChangeRule {m}{?m}{m}{} -\DeclareFontSeriesChangeRule {sbc}{?m}{sb}{} -\DeclareFontSeriesChangeRule {sbec}{?m}{sb}{} -\DeclareFontSeriesChangeRule {sbsc}{?m}{sb}{} -\DeclareFontSeriesChangeRule {sbsc}{?m}{sb}{} -\DeclareFontSeriesChangeRule {sbx}{?m}{sb}{} -\DeclareFontSeriesChangeRule {sb}{?m}{sb}{} -\DeclareFontSeriesChangeRule {sc}{?m}{m}{} -\DeclareFontSeriesChangeRule {sc}{?m}{m}{} -\DeclareFontSeriesChangeRule {slc}{?m}{sl}{} -\DeclareFontSeriesChangeRule {slec}{?m}{sl}{} -\DeclareFontSeriesChangeRule {slsc}{?m}{sl}{} -\DeclareFontSeriesChangeRule {slsc}{?m}{sl}{} -\DeclareFontSeriesChangeRule {slx}{?m}{sl}{} -\DeclareFontSeriesChangeRule {sl}{?m}{sl}{} -\DeclareFontSeriesChangeRule {ubc}{?m}{ub}{} -\DeclareFontSeriesChangeRule {ubec}{?m}{ub}{} -\DeclareFontSeriesChangeRule {ubsc}{?m}{ub}{} -\DeclareFontSeriesChangeRule {ubsc}{?m}{ub}{} -\DeclareFontSeriesChangeRule {ubx}{?m}{ub}{} -\DeclareFontSeriesChangeRule {ub}{?m}{m}{} -\DeclareFontSeriesChangeRule {ulc}{?m}{ul}{} -\DeclareFontSeriesChangeRule {ulec}{?m}{ul}{} -\DeclareFontSeriesChangeRule {ulsc}{?m}{ul}{} -\DeclareFontSeriesChangeRule {ulsc}{?m}{ul}{} -\DeclareFontSeriesChangeRule {ulx}{?m}{ul}{} -\DeclareFontSeriesChangeRule {ul}{?m}{ul}{} -\DeclareFontSeriesChangeRule {x}{?m}{m}{} + \EndIncludeInRelease \IncludeInRelease{0000/00/00}% {\DeclareFontSeriesChangeRule}{Series change rules}% @@ -12483,7 +15271,7 @@ of this package available from CTAN} \EndIncludeInRelease \IncludeInRelease{2020/02/02}% - {\DeclareFontShapeChangeRule}{Font shape change rules}% + {\ulcshape}{Font shape change rules}% \def\DeclareFontShapeChangeRule #1#2#3#4{% \@namedef{shape@#1@#2}{{#3}{#4}}} \DeclareRobustCommand\ulcshape @@ -12501,6 +15289,99 @@ of this package available from CTAN} \fontshape\sscdefault\selectfont} \let\sscdefault\@undefined % for rollback \newcommand\sscdefault{ssc} +\EndIncludeInRelease +\IncludeInRelease{0000/00/00}% + {\ulcshape}{Font shape change rules}% + +\let\DeclareFontShapeChangeRule\@undefined +\let\ulcshape\@undefined +\let\ulcdefault\@undefined +\let\swshape\@undefined +\let\swdefault\@undefined +\let\sscshape\@undefined +\let\sscdefault\@undefined + +\EndIncludeInRelease +\IncludeInRelease{2025/06/01}% + {\DeclareFontShapeChangeRule}{Rules for ssc and sw}% +\DeclareFontShapeChangeRule {n}{it} {it} {sl} +\DeclareFontShapeChangeRule {n}{sl} {sl} {it} +\DeclareFontShapeChangeRule {n}{sw} {sw} {it} +\DeclareFontShapeChangeRule {n}{ulc} {n} {} +\DeclareFontShapeChangeRule {n}{up} {n} {} +\DeclareFontShapeChangeRule {n}{ssc} {ssc} {sc} +\DeclareFontShapeChangeRule {it}{sl} {sl} {it} +\DeclareFontShapeChangeRule {it}{sw} {sw} {it} +\DeclareFontShapeChangeRule {it}{sc} {scit} {scsl} +\DeclareFontShapeChangeRule {it}{ulc} {it} {} +\DeclareFontShapeChangeRule {it}{up} {n} {} +\DeclareFontShapeChangeRule {it}{ssc} {sscit} {scit} +\DeclareFontShapeChangeRule {sl}{it} {it} {sl} +\DeclareFontShapeChangeRule {sl}{sw} {sw} {it} +\DeclareFontShapeChangeRule {sl}{sc} {scsl} {scit} +\DeclareFontShapeChangeRule {sl}{ulc} {sl} {} +\DeclareFontShapeChangeRule {sl}{up} {n} {} +\DeclareFontShapeChangeRule {sl}{ssc} {sscsl} {scsl} +\DeclareFontShapeChangeRule {sc}{it} {scit} {scsl} +\DeclareFontShapeChangeRule {sc}{sl} {scsl} {scit} +\DeclareFontShapeChangeRule {sc}{sw} {scsw} {scit} +\DeclareFontShapeChangeRule {sc}{ulc} {n} {} +\DeclareFontShapeChangeRule {sc}{up} {n} {} +\DeclareFontShapeChangeRule {scit}{it} {scit} {} +\DeclareFontShapeChangeRule {scit}{sl} {scsl} {scit} +\DeclareFontShapeChangeRule {scit}{sw} {scsw} {scit} +\DeclareFontShapeChangeRule {scit}{sc} {scit} {} +\DeclareFontShapeChangeRule {scit}{ulc} {it} {} +\DeclareFontShapeChangeRule {scit}{up} {sc} {} +\DeclareFontShapeChangeRule {scit}{ssc} {sscit} {scit} +\DeclareFontShapeChangeRule {scsl}{it} {scit} {scsl} +\DeclareFontShapeChangeRule {scsl}{sl} {scsl} {} +\DeclareFontShapeChangeRule {scsl}{sw} {scsw} {scsl} +\DeclareFontShapeChangeRule {scsl}{sc} {scsl} {} +\DeclareFontShapeChangeRule {scsl}{ulc} {sl} {} +\DeclareFontShapeChangeRule {scsl}{up} {sc} {} +\DeclareFontShapeChangeRule {scsl}{ssc} {sscsl} {scsl} +\DeclareFontShapeChangeRule {scsw}{it} {scit} {scsw} +\DeclareFontShapeChangeRule {scsw}{sl} {scsl} {} +\DeclareFontShapeChangeRule {scsw}{sw} {scsw} {} +\DeclareFontShapeChangeRule {scsw}{sc} {scsw} {} +\DeclareFontShapeChangeRule {scsw}{ulc} {sw} {} +\DeclareFontShapeChangeRule {scsw}{up} {sc} {} +\DeclareFontShapeChangeRule {scsw}{ssc} {sscsw} {scsw} +\DeclareFontShapeChangeRule {sw}{sc} {scsw} {scit} +\DeclareFontShapeChangeRule {sw}{ulc} {sw} {} +\DeclareFontShapeChangeRule {sw}{up} {n} {} +\DeclareFontShapeChangeRule {sw}{ssc} {sscsw} {scsw} +\DeclareFontShapeChangeRule {ssc}{it} {sscit} {sscsl} +\DeclareFontShapeChangeRule {ssc}{sl} {sscsl} {sscit} +\DeclareFontShapeChangeRule {ssc}{sw} {sscsw} {sscit} +\DeclareFontShapeChangeRule {ssc}{sc} {sc} {} +\DeclareFontShapeChangeRule {ssc}{ulc} {n} {} +\DeclareFontShapeChangeRule {ssc}{up} {n} {} +\DeclareFontShapeChangeRule {sscit}{it} {sscit} {} +\DeclareFontShapeChangeRule {sscit}{sl} {sscsl} {sscit} +\DeclareFontShapeChangeRule {sscit}{sw} {sscsw} {sscit} +\DeclareFontShapeChangeRule {sscit}{ssc} {sscit} {} +\DeclareFontShapeChangeRule {sscit}{sc} {scit} {} +\DeclareFontShapeChangeRule {sscit}{ulc} {it} {} +\DeclareFontShapeChangeRule {sscit}{up} {ssc} {} +\DeclareFontShapeChangeRule {sscsl}{it} {sscit} {sscsl} +\DeclareFontShapeChangeRule {sscsl}{sl} {sscsl} {} +\DeclareFontShapeChangeRule {sscsl}{sw} {sscsw} {sscit} +\DeclareFontShapeChangeRule {sscsl}{sc} {scsl} {} +\DeclareFontShapeChangeRule {sscsl}{ulc} {sl} {} +\DeclareFontShapeChangeRule {sscsl}{up} {ssc} {} +\DeclareFontShapeChangeRule {sscsw}{it} {sscit} {sscsl} +\DeclareFontShapeChangeRule {sscsw}{sl} {sscsl} {sscit} +\DeclareFontShapeChangeRule {sscsw}{sw} {sscsw} {} +\DeclareFontShapeChangeRule {sscsw}{ssc} {sscsw} {} +\DeclareFontShapeChangeRule {sscsw}{sc} {scsw} {scit} +\DeclareFontShapeChangeRule {sscsw}{ulc} {sw} {it} +\DeclareFontShapeChangeRule {sscsw}{up} {ssc} {} +\EndIncludeInRelease +\IncludeInRelease{2020/02/02}% + {\DeclareFontShapeChangeRule}{Rules for ssc and sw}% + \DeclareFontShapeChangeRule {n}{it} {it} {sl} \DeclareFontShapeChangeRule {n}{sl} {sl} {it} \DeclareFontShapeChangeRule {n}{ulc} {n} {} @@ -12539,19 +15420,50 @@ of this package available from CTAN} \DeclareFontShapeChangeRule {sw}{sc} {scsw} {} \DeclareFontShapeChangeRule {sw}{ulc} {sw} {} \DeclareFontShapeChangeRule {sw}{up} {n} {} + +\DeclareFontShapeChangeRule {n}{ssc} {ssc} {} +\DeclareFontShapeChangeRule {it}{ssc} {ssc} {} +\DeclareFontShapeChangeRule {sl}{ssc} {ssc} {} +\DeclareFontShapeChangeRule {sw}{ssc} {ssc} {} + +\DeclareFontShapeChangeRule {scit}{ssc}{ssc} {} +\DeclareFontShapeChangeRule {scsl}{ssc}{ssc} {} +\DeclareFontShapeChangeRule {scsw}{ssc}{ssc} {} + +\DeclareFontShapeChangeRule {ssc}{it} {it} {} +\DeclareFontShapeChangeRule {ssc}{sl} {sl} {} +\DeclareFontShapeChangeRule {ssc}{sw} {sw} {} +\DeclareFontShapeChangeRule {ssc}{sc} {sc} {} +\DeclareFontShapeChangeRule {ssc}{ulc} {n} {} +\DeclareFontShapeChangeRule {ssc}{up} {n} {} + +\DeclareFontShapeChangeRule {sscit}{it} {it} {} +\DeclareFontShapeChangeRule {sscit}{sl} {sl} {} +\DeclareFontShapeChangeRule {sscit}{sw} {sw} {} +\DeclareFontShapeChangeRule {sscit}{ssc} {ssc}{} +\DeclareFontShapeChangeRule {sscit}{sc} {sc} {} +\DeclareFontShapeChangeRule {sscit}{ulc} {n} {} +\DeclareFontShapeChangeRule {sscit}{up} {ssc}{} + +\DeclareFontShapeChangeRule {sscsl}{it} {it} {} +\DeclareFontShapeChangeRule {sscsl}{sl} {sl} {} +\DeclareFontShapeChangeRule {sscsl}{sw} {sw} {} +\DeclareFontShapeChangeRule {sscsl}{sc} {sc} {} +\DeclareFontShapeChangeRule {sscsl}{ulc} {n} {} +\DeclareFontShapeChangeRule {sscsl}{up} {ssc}{} + +\DeclareFontShapeChangeRule {sscsw}{it} {it} {} +\DeclareFontShapeChangeRule {sscsw}{sl} {sl} {} +\DeclareFontShapeChangeRule {sscsw}{sw} {sw} {} +\DeclareFontShapeChangeRule {sscsw}{ssc} {ssc}{} +\DeclareFontShapeChangeRule {sscsw}{sc} {sc} {} +\DeclareFontShapeChangeRule {sscsw}{ulc} {n} {} +\DeclareFontShapeChangeRule {sscsw}{up} {ssc}{} \EndIncludeInRelease \IncludeInRelease{0000/00/00}% - {\DeclareFontShapeChangeRule}{Font shape change rules}% - -\let\DeclareFontShapeChangeRule\@undefined -\let\ulcshape\@undefined -\let\ulcdefault\@undefined -\let\swshape\@undefined -\let\swdefault\@undefined -\let\sscshape\@undefined -\let\sscdefault\@undefined - + {\DeclareFontShapeChangeRule}{Rules for ssc and sw}% \EndIncludeInRelease + \IncludeInRelease{2021/06/01}% {\fontshape}{Font shape change}% \DeclareRobustCommand\fontshape[1] @@ -12950,20 +15862,35 @@ of this package available from CTAN} \tl_gset:cx { g__nfss_frozen_mv_ #1 _tl }{ \int_use:c { c@mv@#1 } } \cs_gset:cpn{mv@#1@reset} { + \int_compare:nNnTF \@math@level = 0 + { \int_compare:nNnTF { \int_use:c{c@mv@#1} } > { \tl_use:c{g__nfss_frozen_mv_ #1 _tl} } { - \@font@info{Undo~ math~ alphabet~ allocation~ in~ version~ #1} + \@font@info{ Undo~ math~ alphabet~ allocation~ in~ version~ #1 } \cs_gset_eq:cc { mv@#1 }{ mv@#1@frozen } \int_gset:cn { c@mv@#1 }{ \tl_use:c {g__nfss_frozen_mv_ #1 _tl} } - \group_begin: - \cs_set_eq:NN \getanddefine@fonts \use_none:nn - \use:c {mv@#1} - \group_end: + \tl_if_eq:NnTF \math@version {#1} + { + \group_begin: + \cs_set_eq:NN \getanddefine@fonts \use_none:nn + \use:c {mv@ \math@version } + \group_end: + } + { + \@font@info{ ...~ but~ do~ not~ reset~ the~ + top-level~ math~ alphabet~ definitions } + } } { - \@font@info{No~ math~ alphabet~ change~ to~ frozen~ version~ #1} + \@font@info{ No~ math~ alphabet~ change~ + to~ frozen~ version~ #1 } } + } + { + \@font@info{ Nested~ math:~ keeping~ math~ alphabet~ + allocation~ in~ version~ #1} + } \if@ignore \ignorespaces \fi } } @@ -14778,6 +17705,7 @@ of this package available from CTAN} \endgroup \@esphack} \EndIncludeInRelease +\def\ltx@star@counter{*} \IncludeInRelease{2022/06/01}% {\Ref}{Add starred version}% \def\@currentcounter{} @@ -14792,7 +17720,10 @@ of this package available from CTAN} \def\refstepcounter#1{% \UseSocket{refstepcounter}{% \stepcounter{#1}% - \edef\@currentcounter{#1}% + \edef\reserved@a{#1}% + \ifx\reserved@a\ltx@star@counter\else + \let\@currentcounter\reserved@a + \fi \protected@edef\@currentlabel {\csname p@#1\expandafter\endcsname\csname the#1\endcsname}% \UseSocket{refstepcounter/target}{#1}% @@ -14802,7 +17733,10 @@ of this package available from CTAN} \def\@kernel@refstepcounter#1{% \UseSocket{refstepcounter}{% \stepcounter{#1}% - \edef\@currentcounter{#1}% + \edef\reserved@a{#1}% + \ifx\reserved@a\ltx@star@counter\else + \let\@currentcounter\reserved@a + \fi \protected@edef\@currentlabel {\csname p@#1\expandafter\endcsname\csname the#1\endcsname}}}% \EndIncludeInRelease @@ -14818,10 +17752,10 @@ of this package available from CTAN} \IncludeInRelease{2022/06/01}% {\Ref}{Add starred version}% \def\labelformat#1{\expandafter\def\csname p@#1\endcsname##1} -\def\@kernel@Ref#1{\protected@edef\@tempa{\@kernel@ref{#1}}% - \expandafter\MakeUppercase\@tempa} -\def\@kernel@sRef#1{\protected@edef\@tempa{\@kernel@sref{#1}}% - \expandafter\MakeUppercase\@tempa} +\def\@kernel@Ref#1{\protected@edef\reserved@a{\@kernel@ref{#1}}% + \expandafter\MakeUppercase\reserved@a} +\def\@kernel@sRef#1{\protected@edef\reserved@a{\@kernel@sref{#1}}% + \expandafter\MakeUppercase\reserved@a} \NewDocumentCommand\Ref{s} {\IfBooleanTF{#1}{\@kernel@sRef}{\@kernel@Ref}} \EndIncludeInRelease @@ -14844,8 +17778,8 @@ of this package available from CTAN} {\csname p@#1\expandafter\endcsname\csname the#1\endcsname}% } \def\labelformat#1{\expandafter\def\csname p@#1\endcsname##1} -\DeclareRobustCommand\Ref[1]{\protected@edef\@tempa{\ref{#1}}% - \expandafter\MakeUppercase\@tempa} +\DeclareRobustCommand\Ref[1]{\protected@edef\reserved@a{\ref{#1}}% + \expandafter\MakeUppercase\reserved@a} \EndIncludeInRelease \IncludeInRelease{2019/10/01}% {\refstepcounter}{Add \labelformat and \Ref}% @@ -14855,8 +17789,8 @@ of this package available from CTAN} {\csname p@#1\expandafter\endcsname\csname the#1\endcsname}% } \def\labelformat#1{\expandafter\def\csname p@#1\endcsname##1} -\DeclareRobustCommand\Ref[1]{\protected@edef\@tempa{\ref{#1}}% - \expandafter\MakeUppercase\@tempa} +\DeclareRobustCommand\Ref[1]{\protected@edef\reserved@a{\ref{#1}}% + \expandafter\MakeUppercase\reserved@a} \EndIncludeInRelease \IncludeInRelease{0000/00/00}% {\refstepcounter}{Add \labelformat and \Ref}% @@ -15958,9 +18892,16 @@ of this package available from CTAN} \def\@endpefalse{\global\let\if@endpe\iffalse} \def\@endpetrue {% \global\let\if@endpe\iftrue - \ifnum\currentgrouplevel>\z@ - \aftergroup\propagate@doendpe - \fi + \ifnum\currentgrouptype =14 % semi-simple group + \aftergroup\propagate@doendpe + \else + \ifnum\currentgrouptype =\z@ % no group: top-level + \else + \ifnum\currentgrouptype =\@ne % simple group + \aftergroup\propagate@doendpe + \fi + \fi + \fi } \def\propagate@doendpe{\if@endpe \@doendpe \fi} \EndIncludeInRelease @@ -17028,6 +19969,31 @@ of this package available from CTAN} \def\addcontentsline#1#2#3{% \addtocontents{#1}{\protect\contentsline{#2}{#3}{\thepage}}} \EndIncludeInRelease +\IncludeInRelease{2025/06/01}% + {\@gobble@som}{Extended index/label}% +\DeclareExpandableDocumentCommand\@gobble@om{+o+m}{} +\DeclareExpandableDocumentCommand\@gobble@som{s+o+m}{} +\DeclareDocumentCommand\@gobble@with@sphack@om{+o+m}{\@bsphack\@esphack} +\DeclareDocumentCommand\@gobble@with@sphack@som{s+o+m}{\@bsphack\@esphack} +\long\def\addtocontents#1#2{% + \protected@write\@auxout + {\let\label\@gobble@om + \let\index\@gobble@som + \let\glossary\@gobble@om}% + {\string\@writefile{#1}{#2}}} +\EndIncludeInRelease +\IncludeInRelease{0000/00/00}% + {\@gobble@som}{Extended index/label}% +\long\def\addtocontents#1#2{% + \protected@write\@auxout + {\let\label\@gobble \let\index\@gobble \let\glossary\@gobble}% + {\string\@writefile{#1}{#2}}} + +\let\@gobble@om\@undefined +\let\@gobble@som\@undefined +\let\@gobble@with@sphack@om\@undefined +\let\@gobble@with@sphack@som\@undefined +\EndIncludeInRelease \IncludeInRelease{2021/11/15}% {\contentsline}{Four arguments}% \def\contentsline#1#2#3#4{\gdef\@contentsline@destination{#4}% @@ -17473,7 +20439,7 @@ of this package available from CTAN} \EndIncludeInRelease %% File: ltmarks.dtx -%% Copyright (C) 2022-2024 +%% Copyright (C) 2022-2025 %% Frank Mittelbach, The LaTeX Project %%% From File: ltmarks.dtx @@ -17529,9 +20495,9 @@ of this package available from CTAN} \tl_new:c { g__mark_#1_top_ #2 _tl } \tl_new:c { g__mark_#1_first_ #2 _tl } \tl_new:c { g__mark_#1_last_ #2 _tl } - \tl_set_eq:cN { g__mark_#1_top_ #2 _tl } \c__mark_empty_tl - \tl_set_eq:cN { g__mark_#1_first_ #2 _tl } \c__mark_empty_tl - \tl_set_eq:cN { g__mark_#1_last_ #2 _tl } \c__mark_empty_tl + \tl_gset_eq:cN { g__mark_#1_top_ #2 _tl } \c__mark_empty_tl + \tl_gset_eq:cN { g__mark_#1_first_ #2 _tl } \c__mark_empty_tl + \tl_gset_eq:cN { g__mark_#1_last_ #2 _tl } \c__mark_empty_tl } \tl_const:Nn \c__mark_empty_tl { \__mark_value:nn{0}{} } \box_new:N \l__mark_box @@ -19560,7 +22526,7 @@ of this package available from CTAN} \fi} \EndIncludeInRelease \IncludeInRelease{2020/10/01}% - {@@_set_curr_file:nNN}{Set curr file}% + {\__filehook_set_curr_file:nNN}{Set curr file}% \ExplSyntaxOn \cs_new_protected:Npn \__filehook_set_curr_file:nNN #1 { @@ -19690,7 +22656,7 @@ of this package available from CTAN} \EndIncludeInRelease %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% -%% Copyright (C) 2020-2024 +%% Copyright (C) 2020-2025 %% Frank Mittelbach, The LaTeX Project %% %%% From File: ltshipout.dtx @@ -20345,9 +23311,271 @@ of this package available from CTAN} \fi }% \EndIncludeInRelease +\IncludeInRelease{2025/06/01}% + {\@makecol}{\@makecol adding hooks/sockets}% +\def \@makecol {% + \UseHook {build/column/before}% + \setbox\@outputbox \box\@cclv + \@outputbox@removebskip + \UseTaggingSocket{build/column/outputbox}% + \let\@elt\relax + \xdef\@freelist{\@freelist\@midlist}% + \global \let \@midlist \@empty + \UseSocket {build/column/outputbox}% + \ifvbox\@kludgeins + \@make@specialcolbox + \else + \@make@normalcolbox + \fi + \global \maxdepth \@maxdepth + \UseHook {build/column/after}% +} +\newdimen\@outputbox@depth +\def \@make@normalcolbox {% + \setbox\@outputbox \vbox to\@colht {% + \@texttop + \@outputbox@depth \dp\@outputbox + \unvbox \@outputbox + \vskip -\@outputbox@depth + \@textbottom + }% +} +\def \@make@specialcolbox {% + \@outputbox@append {\vskip-\@outputbox@depth}% + \@tempdima \@colht + \ifdim \wd\@kludgeins>\z@ + \advance \@tempdima -\ht\@outputbox + \advance \@tempdima \pageshrink + \setbox\@outputbox \vbox to \@colht {% + \unvbox\@outputbox + \vskip \@tempdima + \@textbottom + }% + \else + \advance \@tempdima -\ht\@kludgeins + \setbox \@outputbox \vbox to \@colht {% + \vbox to \@tempdima {% + \unvbox\@outputbox + \@textbottom}% + \vss}% + \fi + {\setbox \@tempboxa \box \@kludgeins}% +} +\def\@outputbox@removebskip{% + \ifx\@textbottom\relax \else + \ifvoid \@outputbox + \global\let\@outputbox@reinsertbskip\relax + \else + \@outputbox@append{% + \@tempskipa\lastskip + \ifnum \gluestretchorder\@tempskipa>\z@ + \unskip + \xdef\@outputbox@reinsertbskip + {\noexpand\@outputbox@append{\vskip\the\@tempskipa}}% + \else + \global\let\@outputbox@reinsertbskip\relax + \fi + }% + \fi + \fi +} +\let \@outputbox@reinsertbskip \relax +\def\@outputbox@append #1{% + \setbox\@outputbox \vbox {% + \boxmaxdepth \@maxdepth + \@outputbox@depth\dp\@outputbox % if needed in #1 + \unvbox \@outputbox + #1% + }% +} +\def\@outputbox@appendfootnotes {% + \ifvoid\footins \else + \@makecol@handlesplitfootnotes + \UseSocket{build/column/footnotes}% + \@outputbox@append{% + \vskip \skip\footins + \UseTaggingSocket{build/column/footins}% + \color@begingroup + \normalcolor + \footnoterule + \csname pdfcolfoot@current\endcsname + \unvbox \footins + \color@endgroup + }% + \fi +} +\let \@makecol@handlesplitfootnotes \@empty +\def \@outputbox@attachfloats {% + \ifx \@toplist\@empty \else \@cflt \fi + \ifx \@botlist\@empty \else \@cflb \fi +} +\def \@outputbox@attachtopfloats {% + \ifx \@toplist\@empty \else \@cflt \fi +} +\def \@outputbox@attachbottomfloats {% + \ifx \@botlist\@empty \else \@cflb \fi +} +\def\@if@flushbottom@TF{% + \ifx\@textbottom\relax + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi +} +\def\@if@footnotes@TF{% + \ifvoid\footins + \expandafter\@secondoftwo + \else + \expandafter\@firstoftwo + \fi +} +\def\@if@bottomfloats@TF{% + \ifx \@botlist\@empty + \expandafter\@secondoftwo + \else + \expandafter\@firstoftwo + \fi +} +\NewSocket{build/column/outputbox}{0} +\NewSocketPlug {build/column/outputbox}{space-footnotes-floats} {% + \@if@footnotes@TF + {\@outputbox@append{\vfill}}% + {\@if@bottomfloats@TF + {\@outputbox@append{\vfill}}% + {\@outputbox@reinsertbskip}% + }% + \@outputbox@appendfootnotes + \@outputbox@attachfloats +} +\NewSocketPlug {build/column/outputbox}{footnotes-space-floats} {% + \@outputbox@appendfootnotes + \@if@bottomfloats@TF + {\@outputbox@append{\vfill}}% + {\@outputbox@reinsertbskip}% + \@outputbox@attachfloats +} +\NewSocketPlug {build/column/outputbox}{floats-space-footnotes} {% + \@outputbox@attachfloats + \@if@footnotes@TF + {\@outputbox@append{\vfill}}% + {\@outputbox@reinsertbskip}% + \@outputbox@appendfootnotes +} +\NewSocketPlug {build/column/outputbox}{space-floats-footnotes} {% + \@if@footnotes@TF + {\@outputbox@append{\vfill}}% + {\@if@bottomfloats@TF + {\@outputbox@append{\vfill}}% + {\@outputbox@reinsertbskip}}% + \@outputbox@attachfloats + \@outputbox@appendfootnotes +} +\NewSocketPlug {build/column/outputbox}{floats-footnotes} {% + \@outputbox@attachfloats + \@outputbox@appendfootnotes + \@outputbox@reinsertbskip +} +\NewSocketPlug {build/column/outputbox}{footnotes-floats} {% + \@outputbox@appendfootnotes + \@outputbox@attachfloats + \@outputbox@reinsertbskip +} +\NewSocketPlug {build/column/outputbox}{footnotes-floats-legacy} {% + \@outputbox@reinsertbskip + \@outputbox@appendfootnotes + \@outputbox@attachfloats +} +\AssignSocketPlug {build/column/outputbox}{footnotes-floats-legacy} +\NewSocket{build/column/footnotes}{0} +\NewMirroredHookPair{build/page/before}{build/page/after} +\NewHook {build/page/reset} +\NewMirroredHookPair{build/column/before}{build/column/after} +\EndIncludeInRelease +\IncludeInRelease{0000/00/00}% + {\@makecol}{\@makecol adding hooks/sockets}% + +\gdef \@makecol {% + \ifvoid\footins + \setbox\@outputbox \box\@cclv + \else + \setbox\@outputbox \vbox {% + \boxmaxdepth \@maxdepth + \unvbox \@cclv + \vskip \skip\footins + \color@begingroup + \normalcolor + \footnoterule + \unvbox \footins + \color@endgroup + }% + \fi + \let\@elt\relax + \xdef\@freelist{\@freelist\@midlist}% + \global \let \@midlist \@empty + \@combinefloats + \ifvbox\@kludgeins + \@makespecialcolbox + \else + \setbox\@outputbox \vbox to\@colht {% + \@texttop + \dimen@ \dp\@outputbox + \unvbox \@outputbox + \vskip -\dimen@ + \@textbottom + }% + \fi + \global \maxdepth \@maxdepth +} + +\gdef \@makespecialcolbox {% + \setbox\@outputbox \vbox {% + \@texttop + \dimen@ \dp\@outputbox + \unvbox\@outputbox + \vskip-\dimen@ + }% + \@tempdima \@colht + \ifdim \wd\@kludgeins>\z@ + \advance \@tempdima -\ht\@outputbox + \advance \@tempdima \pageshrink + \setbox\@outputbox \vbox to \@colht {% + \unvbox\@outputbox + \vskip \@tempdima + \@textbottom + }% + \else + \advance \@tempdima -\ht\@kludgeins + \setbox \@outputbox \vbox to \@colht {% + \vbox to \@tempdima {% + \unvbox\@outputbox + \@textbottom}% + \vss}% + \fi + {\setbox \@tempboxa \box \@kludgeins}% +} + + \let \@make@normalcolbox \@undefined + \let \@make@specialcolbox \@undefined + \let \@outputbox@removebskip \@undefined + \let \@outputbox@reinsertbskip \@undefined + + \let \@outputbox@append \@undefined + \let \@outputbox@appendfootnotes \@undefined + \let \@outputbox@attachfloats \@undefined + \let \@outputbox@attachtopfloats \@undefined + \let \@outputbox@attachbottomfloats \@undefined + + \let \@if@flushbottom@TF \@undefined + \let \@if@footnotes@TF \@undefined + \let \@if@bottomfloats@TF \@undefined + +\EndIncludeInRelease \IncludeInRelease{2025/06/01}% {\@outputpage}{Use new mark mechanism}% -\def\@outputpage{% +\protected \def \pdfannot@link@on@@ { \csname pdfannot_link_on:\endcsname } +\protected \def \pdfannot@link@off@@ { \csname pdfannot_link_off:\endcsname } +\def \@outputpage {% + \UseHook {build/page/before}% \begingroup \let \protect \noexpand \language\document@default@language @@ -20355,51 +23583,70 @@ of this package available from CTAN} \global\let\@@if@newlist\if@newlist \global\@newlistfalse \@parboxrestore + \UseHook {build/page/reset}% \shipout \vbox{% \set@typeset@protect \aftergroup \endgroup \aftergroup \set@typeset@protect \if@specialpage - \global\@specialpagefalse\@nameuse{ps@\@specialstyle}% + \global \@specialpagefalse + \@nameuse {ps@\@specialstyle}% \fi \if@twoside - \ifodd\count\z@ \let\@thehead\@oddhead \let\@thefoot\@oddfoot - \let\@themargin\oddsidemargin - \else \let\@thehead\@evenhead - \let\@thefoot\@evenfoot \let\@themargin\evensidemargin + \ifodd\count\z@ + \let \@thehead \@oddhead + \let \@thefoot \@oddfoot + \let \@themargin \oddsidemargin + \else + \let \@thehead \@evenhead + \let \@thefoot \@evenfoot + \let \@themargin \evensidemargin \fi \fi \reset@font \normalsize \normalsfcodes - \let\label\@gobble - \let\index\@gobble - \let\glossary\@gobble - \baselineskip\z@skip \lineskip\z@skip \lineskiplimit\z@ + \let \label \@gobble@with@sphack@om + \let \index \@gobble@with@sphack@som + \let \glossary \@gobble@with@sphack@om + \baselineskip \z@skip + \lineskip \z@skip + \lineskiplimit \z@ \@begindvi \vskip \topmargin \moveright\@themargin \vbox {% - \setbox\@tempboxa \vbox to\headheight{% + \setbox\@tempboxa \vbox to\headheight {% \vfil - \color@hbox - \normalcolor - \hb@xt@\textwidth{\@thehead}% - \color@endbox - }% - \dp\@tempboxa \z@ - \box\@tempboxa + \pdfannot@link@off@@ + \UseTaggingSocket{build/page/header}{}% + { + \color@hbox + \normalcolor + \hb@xt@ \textwidth {\@thehead }% + \color@endbox + } + \pdfannot@link@on@@ + } + \dp \@tempboxa \z@ + \box \@tempboxa \vskip \headsep - \box\@outputbox + \box \@outputbox \baselineskip \footskip - \color@hbox - \normalcolor - \hb@xt@\textwidth{\@thefoot}% - \color@endbox - }% - }% - \global\let\if@newlist\@@if@newlist + \pdfannot@link@off@@ + \UseTaggingSocket{build/page/footer}{}% + { + \color@hbox + \normalcolor + \hb@xt@ \textwidth {\@thefoot }% + \color@endbox + } + \pdfannot@link@on@@ + } + } + \global \let \if@newlist \@@if@newlist \global \@colht \textheight \stepcounter{page}% + \UseHook {build/page/after}% } \EndIncludeInRelease \IncludeInRelease{2017/04/15}% @@ -20629,6 +23876,74 @@ of this package available from CTAN} \@tempdima\@tempdimb \fi}% \EndIncludeInRelease +\IncludeInRelease{2025/06/01}% + {\@addtocurcol}{float order in 2-column}% +\def \@addtocurcol {% + \@insertfalse + \@setfloattypecounts + \ifnum \@fpstype=8 + \else + \ifnum \@fpstype=24 + \else + \@flsettextmin + \advance \@textmin \@textfloatsheight + \@reqcolroom \@pageht + \ifdim \@textmin>\@reqcolroom + \@reqcolroom \@textmin + \fi + \advance \@reqcolroom \ht\@currbox + \saved@reqcolroom \@reqcolroom + \ifdim \@colroom>\@reqcolroom + \@flsetnum \@colnum + \ifnum \@colnum>\z@ + \@bitor\@currtype\@deferlist + \@testwrongwidth\@currbox + \if@test + \else + \@bitor\@currtype\@botlist + \if@test + \@addtobot + \else + \ifodd \count\@currbox + \advance \@reqcolroom \intextsep + \ifdim \@colroom>\@reqcolroom + \global \advance \@colnum \m@ne + \global \advance \@textfloatsheight \ht\@currbox + \global \advance \@textfloatsheight 2\intextsep + \@cons \@midlist \@currbox + \if@nobreak + \nobreak + \@nobreakfalse + \everypar{}% + \else + \addpenalty \interlinepenalty + \fi + \vskip \intextsep + \box\@currbox + \penalty\interlinepenalty + \vskip\intextsep + \ifnum\outputpenalty <-\@Mii \vskip -\parskip\fi + \outputpenalty \z@ + \@inserttrue + \fi + \fi + \if@insert + \else + \@addtotoporbot + \fi + \fi + \fi + \fi + \fi + \fi + \fi + \if@insert + \else + \@resethfps + \@cons\@deferlist\@currbox + \fi +}% +\EndIncludeInRelease \IncludeInRelease{2015/01/01}% {\@addtocurcol}{float order in 2-column}% \def \@addtocurcol {% @@ -20766,6 +24081,40 @@ of this package available from CTAN} \fi }% \EndIncludeInRelease +\IncludeInRelease{2025/06/01} + {\@addtonextcol}{float order in 2-column}% +\def\@addtonextcol{% + \begingroup + \@insertfalse + \@setfloattypecounts + \ifnum \@fpstype=8 + \else + \ifnum \@fpstype=24 + \else + \@flsettextmin + \@reqcolroom \ht\@currbox + \advance \@reqcolroom \@textmin + \saved@reqcolroom \@reqcolroom + \ifdim \@colroom>\@reqcolroom + \@flsetnum \@colnum + \ifnum\@colnum>\z@ + \@bitor\@currtype\@deferlist + \@testwrongwidth\@currbox + \if@test + \else + \@addtotoporbot + \fi + \fi + \fi + \fi + \fi + \if@insert + \else + \@cons\@deferlist\@currbox + \fi + \endgroup +}% +\EndIncludeInRelease \IncludeInRelease{2015/01/01} {\@addtonextcol}{float order in 2-column}% \def\@addtonextcol{% @@ -20955,6 +24304,48 @@ of this package available from CTAN} \let\fl@traceval\@undefined \let\fl@tracemessage\@undefined \EndIncludeInRelease +\IncludeInRelease{2025/06/01}% + {\saved@reqcolroom}{float placement calculation}% +\newdimen \saved@reqcolroom +\EndIncludeInRelease +\IncludeInRelease{0000/00/00}% + {\saved@reqcolroom}{float placement calculation}% +\let \saved@reqcolroom \@undefined +\EndIncludeInRelease +\IncludeInRelease{2025/06/01}% + {\@flcheckspace}{float placement calculation}% +\def \@flcheckspace #1#2{% + \@reqcolroom \saved@reqcolroom + \advance \@reqcolroom + \ifx #2\@empty \textfloatsep \else \floatsep \fi + \ifdim \@colroom>\@reqcolroom + \ifdim #1>\ht\@currbox + \@tempswatrue + \else + \ifnum \@fpstype<\sixt@@n + \@tempswatrue + \fi + \fi + \fi +} +\EndIncludeInRelease +\IncludeInRelease{0000/00/00}% + {\@flcheckspace}{float placement calculation}% + +\def \@flcheckspace #1#2{% + \advance \@reqcolroom + \ifx #2\@empty \textfloatsep \else \floatsep \fi + \ifdim \@colroom>\@reqcolroom + \ifdim #1>\ht\@currbox + \@tempswatrue + \else + \ifnum \@fpstype<\sixt@@n + \@tempswatrue + \fi + \fi + \fi +} +\EndIncludeInRelease \IncludeInRelease{2017/01/01}% {\@makefcolumn}{negative height floats}% \def\@makefcolumn #1{% @@ -21556,6 +24947,8 @@ of this package available from CTAN} \tl_clear:N \l__latexrelease_restores_tl \msg_redirect_name:nnn { hooks } { exists } { } \msg_redirect_name:nnn { mark } { class-already-defined } { } +\msg_redirect_name:nnn { socket } { already-declared } { } +\msg_redirect_name:nnn { socket } { plug-already-declared } { } \ExplSyntaxOff}% \endinput %% diff --git a/Master/texmf-dist/tex/latex-dev/base/latexsym.sty b/Master/texmf-dist/tex/latex-dev/base/latexsym.sty index 25d6b0e52e4..4d126b86f29 100644 --- a/Master/texmf-dist/tex/latex-dev/base/latexsym.sty +++ b/Master/texmf-dist/tex/latex-dev/base/latexsym.sty @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/base/latin1.def b/Master/texmf-dist/tex/latex-dev/base/latin1.def index b4784628978..f283f007d9c 100644 --- a/Master/texmf-dist/tex/latex-dev/base/latin1.def +++ b/Master/texmf-dist/tex/latex-dev/base/latin1.def @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/base/latin10.def b/Master/texmf-dist/tex/latex-dev/base/latin10.def index 457b7112ab5..9c94bc98e7e 100644 --- a/Master/texmf-dist/tex/latex-dev/base/latin10.def +++ b/Master/texmf-dist/tex/latex-dev/base/latin10.def @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/base/latin2.def b/Master/texmf-dist/tex/latex-dev/base/latin2.def index 764c5d0de5d..845ed31a476 100644 --- a/Master/texmf-dist/tex/latex-dev/base/latin2.def +++ b/Master/texmf-dist/tex/latex-dev/base/latin2.def @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/base/latin3.def b/Master/texmf-dist/tex/latex-dev/base/latin3.def index 04e1030b37c..a9c32412acc 100644 --- a/Master/texmf-dist/tex/latex-dev/base/latin3.def +++ b/Master/texmf-dist/tex/latex-dev/base/latin3.def @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/base/latin4.def b/Master/texmf-dist/tex/latex-dev/base/latin4.def index 6e2739c8704..9e1d5913a00 100644 --- a/Master/texmf-dist/tex/latex-dev/base/latin4.def +++ b/Master/texmf-dist/tex/latex-dev/base/latin4.def @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/base/latin5.def b/Master/texmf-dist/tex/latex-dev/base/latin5.def index 8a6fb46905b..26399768e99 100644 --- a/Master/texmf-dist/tex/latex-dev/base/latin5.def +++ b/Master/texmf-dist/tex/latex-dev/base/latin5.def @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/base/latin9.def b/Master/texmf-dist/tex/latex-dev/base/latin9.def index 35e87e2e564..3701c84ae7b 100644 --- a/Master/texmf-dist/tex/latex-dev/base/latin9.def +++ b/Master/texmf-dist/tex/latex-dev/base/latin9.def @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/base/lcyenc.dfu b/Master/texmf-dist/tex/latex-dev/base/lcyenc.dfu index 60b8482da17..565f970d713 100644 --- a/Master/texmf-dist/tex/latex-dev/base/lcyenc.dfu +++ b/Master/texmf-dist/tex/latex-dev/base/lcyenc.dfu @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/base/leqno.clo b/Master/texmf-dist/tex/latex-dev/base/leqno.clo index 37e057bc7a4..3b65c07c0eb 100644 --- a/Master/texmf-dist/tex/latex-dev/base/leqno.clo +++ b/Master/texmf-dist/tex/latex-dev/base/leqno.clo @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/base/leqno.sty b/Master/texmf-dist/tex/latex-dev/base/leqno.sty index 8622218b9f3..93146debd9c 100644 --- a/Master/texmf-dist/tex/latex-dev/base/leqno.sty +++ b/Master/texmf-dist/tex/latex-dev/base/leqno.sty @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/base/letter.cls b/Master/texmf-dist/tex/latex-dev/base/letter.cls index 484203d5777..d97813cfa06 100644 --- a/Master/texmf-dist/tex/latex-dev/base/letter.cls +++ b/Master/texmf-dist/tex/latex-dev/base/letter.cls @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/base/letter.sty b/Master/texmf-dist/tex/latex-dev/base/letter.sty index 687f7ca76a2..6735fc0bb9e 100644 --- a/Master/texmf-dist/tex/latex-dev/base/letter.sty +++ b/Master/texmf-dist/tex/latex-dev/base/letter.sty @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/base/ltluatex.lua b/Master/texmf-dist/tex/latex-dev/base/ltluatex.lua index 8a650531558..db7a1e850c0 100644 --- a/Master/texmf-dist/tex/latex-dev/base/ltluatex.lua +++ b/Master/texmf-dist/tex/latex-dev/base/ltluatex.lua @@ -13,7 +13,7 @@ -- (but please observe conditions on bug reports sent to that address!) -- -- --- Copyright (C) 2015-2024 +-- Copyright (C) 2015-2025 -- The LaTeX Project and any individual authors listed elsewhere -- in this file. -- diff --git a/Master/texmf-dist/tex/latex-dev/base/ltluatex.tex b/Master/texmf-dist/tex/latex-dev/base/ltluatex.tex index fc23e470097..b2b7b9489f5 100644 --- a/Master/texmf-dist/tex/latex-dev/base/ltluatex.tex +++ b/Master/texmf-dist/tex/latex-dev/base/ltluatex.tex @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% @@ -47,7 +47,7 @@ #1#2[#3]{\endgroup\immediate\write-1{File: #1 #3}} \fi \ProvidesFile{ltluatex.tex} -[2024/08/16 v1.2e +[2025/01/11 v1.2e LuaTeX support for plain TeX (core)% ] \edef\etatcatcode{\the\catcode`\@} diff --git a/Master/texmf-dist/tex/latex-dev/base/ltnews.cls b/Master/texmf-dist/tex/latex-dev/base/ltnews.cls index fa86ce17b72..fef89a60df2 100644 --- a/Master/texmf-dist/tex/latex-dev/base/ltnews.cls +++ b/Master/texmf-dist/tex/latex-dev/base/ltnews.cls @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2024 +% Copyright (C) 1993-2025 % The LaTeX Project and any individual authors listed elsewhere % in this file. % diff --git a/Master/texmf-dist/tex/latex-dev/base/ltxcheck.tex b/Master/texmf-dist/tex/latex-dev/base/ltxcheck.tex index 244bddffceb..d383af1f4df 100644 --- a/Master/texmf-dist/tex/latex-dev/base/ltxcheck.tex +++ b/Master/texmf-dist/tex/latex-dev/base/ltxcheck.tex @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2024 +% Copyright (C) 1993-2025 % The LaTeX Project and any individual authors listed elsewhere % in this file. % diff --git a/Master/texmf-dist/tex/latex-dev/base/ltxdoc.cfg b/Master/texmf-dist/tex/latex-dev/base/ltxdoc.cfg index edf3638e08d..d7231d4120c 100644 --- a/Master/texmf-dist/tex/latex-dev/base/ltxdoc.cfg +++ b/Master/texmf-dist/tex/latex-dev/base/ltxdoc.cfg @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/base/ltxdoc.cls b/Master/texmf-dist/tex/latex-dev/base/ltxdoc.cls index adee1bf9604..f9eac389d85 100644 --- a/Master/texmf-dist/tex/latex-dev/base/ltxdoc.cls +++ b/Master/texmf-dist/tex/latex-dev/base/ltxdoc.cls @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/base/ltxguide.cls b/Master/texmf-dist/tex/latex-dev/base/ltxguide.cls index c202b56acb5..4402a5a56b4 100644 --- a/Master/texmf-dist/tex/latex-dev/base/ltxguide.cls +++ b/Master/texmf-dist/tex/latex-dev/base/ltxguide.cls @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2024 +% Copyright (C) 1993-2025 % The LaTeX Project and any individual authors listed elsewhere % in this file. % diff --git a/Master/texmf-dist/tex/latex-dev/base/ly1enc.dfu b/Master/texmf-dist/tex/latex-dev/base/ly1enc.dfu index 4a530edee59..e4f199185cf 100644 --- a/Master/texmf-dist/tex/latex-dev/base/ly1enc.dfu +++ b/Master/texmf-dist/tex/latex-dev/base/ly1enc.dfu @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/base/macce.def b/Master/texmf-dist/tex/latex-dev/base/macce.def index 49b810b1320..7edccd8034b 100644 --- a/Master/texmf-dist/tex/latex-dev/base/macce.def +++ b/Master/texmf-dist/tex/latex-dev/base/macce.def @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/base/makeidx.sty b/Master/texmf-dist/tex/latex-dev/base/makeidx.sty index c1c1e7db523..23c6495a4d5 100644 --- a/Master/texmf-dist/tex/latex-dev/base/makeidx.sty +++ b/Master/texmf-dist/tex/latex-dev/base/makeidx.sty @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/base/minimal.cls b/Master/texmf-dist/tex/latex-dev/base/minimal.cls index 64efdd5287f..c7d420494f8 100644 --- a/Master/texmf-dist/tex/latex-dev/base/minimal.cls +++ b/Master/texmf-dist/tex/latex-dev/base/minimal.cls @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2024 +% Copyright (C) 1993-2025 % The LaTeX Project and any individual authors listed elsewhere % in this file. % diff --git a/Master/texmf-dist/tex/latex-dev/base/newlfont.sty b/Master/texmf-dist/tex/latex-dev/base/newlfont.sty index 30e629743e1..0fa43ad4a32 100644 --- a/Master/texmf-dist/tex/latex-dev/base/newlfont.sty +++ b/Master/texmf-dist/tex/latex-dev/base/newlfont.sty @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/base/next.def b/Master/texmf-dist/tex/latex-dev/base/next.def index 6cc4d6aaae7..25f7842acd8 100644 --- a/Master/texmf-dist/tex/latex-dev/base/next.def +++ b/Master/texmf-dist/tex/latex-dev/base/next.def @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/base/nfssfont.tex b/Master/texmf-dist/tex/latex-dev/base/nfssfont.tex index 464b881ffbb..d83ff4a1f76 100644 --- a/Master/texmf-dist/tex/latex-dev/base/nfssfont.tex +++ b/Master/texmf-dist/tex/latex-dev/base/nfssfont.tex @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/base/oldlfont.sty b/Master/texmf-dist/tex/latex-dev/base/oldlfont.sty index ae886f9bf9a..4c1f5fb7409 100644 --- a/Master/texmf-dist/tex/latex-dev/base/oldlfont.sty +++ b/Master/texmf-dist/tex/latex-dev/base/oldlfont.sty @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/base/omlcmm.fd b/Master/texmf-dist/tex/latex-dev/base/omlcmm.fd index bf6ad9d0a7c..2ec66c54e49 100644 --- a/Master/texmf-dist/tex/latex-dev/base/omlcmm.fd +++ b/Master/texmf-dist/tex/latex-dev/base/omlcmm.fd @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/base/omlcmr.fd b/Master/texmf-dist/tex/latex-dev/base/omlcmr.fd index 98b20aedd0d..231a10309f3 100644 --- a/Master/texmf-dist/tex/latex-dev/base/omlcmr.fd +++ b/Master/texmf-dist/tex/latex-dev/base/omlcmr.fd @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/base/omlenc.def b/Master/texmf-dist/tex/latex-dev/base/omlenc.def index e1df971f089..88c9eb94234 100644 --- a/Master/texmf-dist/tex/latex-dev/base/omlenc.def +++ b/Master/texmf-dist/tex/latex-dev/base/omlenc.def @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% @@ -43,7 +43,7 @@ %% extension .ins) which are part of the distribution. %%% From File: ltoutenc.dtx \ProvidesFile{omlenc.def} - [2024/11/06 v2.1b + [2024/12/21 v2.1c Standard LaTeX file] \DeclareFontEncoding{OML}{}{} \DeclareTextSymbol{\textless}{OML}{`\<} diff --git a/Master/texmf-dist/tex/latex-dev/base/omllcmm.fd b/Master/texmf-dist/tex/latex-dev/base/omllcmm.fd index 322903455a3..ef76469428e 100644 --- a/Master/texmf-dist/tex/latex-dev/base/omllcmm.fd +++ b/Master/texmf-dist/tex/latex-dev/base/omllcmm.fd @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/base/omscmr.fd b/Master/texmf-dist/tex/latex-dev/base/omscmr.fd index 707ace394f1..b50c1aaa182 100644 --- a/Master/texmf-dist/tex/latex-dev/base/omscmr.fd +++ b/Master/texmf-dist/tex/latex-dev/base/omscmr.fd @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/base/omscmsy.fd b/Master/texmf-dist/tex/latex-dev/base/omscmsy.fd index b4389f2e858..f1e221b0941 100644 --- a/Master/texmf-dist/tex/latex-dev/base/omscmsy.fd +++ b/Master/texmf-dist/tex/latex-dev/base/omscmsy.fd @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/base/omsenc.def b/Master/texmf-dist/tex/latex-dev/base/omsenc.def index 6bb512e53f7..cdf6c965f55 100644 --- a/Master/texmf-dist/tex/latex-dev/base/omsenc.def +++ b/Master/texmf-dist/tex/latex-dev/base/omsenc.def @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% @@ -43,7 +43,7 @@ %% extension .ins) which are part of the distribution. %%% From File: ltoutenc.dtx \ProvidesFile{omsenc.def} - [2024/11/06 v2.1b + [2024/12/21 v2.1c Standard LaTeX file] \DeclareFontEncoding{OMS}{}{} \DeclareTextSymbol{\textasteriskcentered}{OMS}{3} % "03 diff --git a/Master/texmf-dist/tex/latex-dev/base/omsenc.dfu b/Master/texmf-dist/tex/latex-dev/base/omsenc.dfu index d834c655fde..d378a9ce453 100644 --- a/Master/texmf-dist/tex/latex-dev/base/omsenc.dfu +++ b/Master/texmf-dist/tex/latex-dev/base/omsenc.dfu @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/base/omslcmsy.fd b/Master/texmf-dist/tex/latex-dev/base/omslcmsy.fd index 89295e21cd7..1d55ec731cc 100644 --- a/Master/texmf-dist/tex/latex-dev/base/omslcmsy.fd +++ b/Master/texmf-dist/tex/latex-dev/base/omslcmsy.fd @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/base/omxcmex.fd b/Master/texmf-dist/tex/latex-dev/base/omxcmex.fd index 5e32aebc6db..4e36e120dbb 100644 --- a/Master/texmf-dist/tex/latex-dev/base/omxcmex.fd +++ b/Master/texmf-dist/tex/latex-dev/base/omxcmex.fd @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/base/omxlcmex.fd b/Master/texmf-dist/tex/latex-dev/base/omxlcmex.fd index 12315a1fceb..3d1548bf949 100644 --- a/Master/texmf-dist/tex/latex-dev/base/omxlcmex.fd +++ b/Master/texmf-dist/tex/latex-dev/base/omxlcmex.fd @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/base/openbib.sty b/Master/texmf-dist/tex/latex-dev/base/openbib.sty index 0d269866872..5b9dc4a045a 100644 --- a/Master/texmf-dist/tex/latex-dev/base/openbib.sty +++ b/Master/texmf-dist/tex/latex-dev/base/openbib.sty @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/base/ot1cmdh.fd b/Master/texmf-dist/tex/latex-dev/base/ot1cmdh.fd index 935344838ad..84e94766c1e 100644 --- a/Master/texmf-dist/tex/latex-dev/base/ot1cmdh.fd +++ b/Master/texmf-dist/tex/latex-dev/base/ot1cmdh.fd @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/base/ot1cmfib.fd b/Master/texmf-dist/tex/latex-dev/base/ot1cmfib.fd index 77373fbb58e..3badc1b6d19 100644 --- a/Master/texmf-dist/tex/latex-dev/base/ot1cmfib.fd +++ b/Master/texmf-dist/tex/latex-dev/base/ot1cmfib.fd @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/base/ot1cmfr.fd b/Master/texmf-dist/tex/latex-dev/base/ot1cmfr.fd index bd4d21551d5..f09fdd7e456 100644 --- a/Master/texmf-dist/tex/latex-dev/base/ot1cmfr.fd +++ b/Master/texmf-dist/tex/latex-dev/base/ot1cmfr.fd @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/base/ot1cmr.fd b/Master/texmf-dist/tex/latex-dev/base/ot1cmr.fd index 2393e7caedd..0b039577741 100644 --- a/Master/texmf-dist/tex/latex-dev/base/ot1cmr.fd +++ b/Master/texmf-dist/tex/latex-dev/base/ot1cmr.fd @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/base/ot1cmss.fd b/Master/texmf-dist/tex/latex-dev/base/ot1cmss.fd index 6c724c2effe..11a152d68cd 100644 --- a/Master/texmf-dist/tex/latex-dev/base/ot1cmss.fd +++ b/Master/texmf-dist/tex/latex-dev/base/ot1cmss.fd @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/base/ot1cmtt.fd b/Master/texmf-dist/tex/latex-dev/base/ot1cmtt.fd index 2716074395a..281af704ddf 100644 --- a/Master/texmf-dist/tex/latex-dev/base/ot1cmtt.fd +++ b/Master/texmf-dist/tex/latex-dev/base/ot1cmtt.fd @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/base/ot1cmvtt.fd b/Master/texmf-dist/tex/latex-dev/base/ot1cmvtt.fd index b787fea9dfc..06c00f8b163 100644 --- a/Master/texmf-dist/tex/latex-dev/base/ot1cmvtt.fd +++ b/Master/texmf-dist/tex/latex-dev/base/ot1cmvtt.fd @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/base/ot1enc.def b/Master/texmf-dist/tex/latex-dev/base/ot1enc.def index 634b28158f3..4777baf81ce 100644 --- a/Master/texmf-dist/tex/latex-dev/base/ot1enc.def +++ b/Master/texmf-dist/tex/latex-dev/base/ot1enc.def @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% @@ -43,7 +43,7 @@ %% extension .ins) which are part of the distribution. %%% From File: ltoutenc.dtx \ProvidesFile{ot1enc.def} - [2024/11/06 v2.1b + [2024/12/21 v2.1c Standard LaTeX file] \DeclareFontEncoding{OT1}{}{} \DeclareTextAccent{\"}{OT1}{127} diff --git a/Master/texmf-dist/tex/latex-dev/base/ot1enc.dfu b/Master/texmf-dist/tex/latex-dev/base/ot1enc.dfu index f5f012d3f07..59046763a15 100644 --- a/Master/texmf-dist/tex/latex-dev/base/ot1enc.dfu +++ b/Master/texmf-dist/tex/latex-dev/base/ot1enc.dfu @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/base/ot1lcmss.fd b/Master/texmf-dist/tex/latex-dev/base/ot1lcmss.fd index d7a5cb11f79..73474e95d40 100644 --- a/Master/texmf-dist/tex/latex-dev/base/ot1lcmss.fd +++ b/Master/texmf-dist/tex/latex-dev/base/ot1lcmss.fd @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/base/ot1lcmtt.fd b/Master/texmf-dist/tex/latex-dev/base/ot1lcmtt.fd index 2d6d825ffe8..94dda67ffd5 100644 --- a/Master/texmf-dist/tex/latex-dev/base/ot1lcmtt.fd +++ b/Master/texmf-dist/tex/latex-dev/base/ot1lcmtt.fd @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/base/ot2enc.dfu b/Master/texmf-dist/tex/latex-dev/base/ot2enc.dfu index b239d2833f5..80ac4a2aa98 100644 --- a/Master/texmf-dist/tex/latex-dev/base/ot2enc.dfu +++ b/Master/texmf-dist/tex/latex-dev/base/ot2enc.dfu @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/base/ot4enc.def b/Master/texmf-dist/tex/latex-dev/base/ot4enc.def index 75ab485f172..7558e0fe98a 100644 --- a/Master/texmf-dist/tex/latex-dev/base/ot4enc.def +++ b/Master/texmf-dist/tex/latex-dev/base/ot4enc.def @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% @@ -43,7 +43,7 @@ %% extension .ins) which are part of the distribution. %%% From File: ltoutenc.dtx \ProvidesFile{ot4enc.def} - [2024/11/06 v2.1b + [2024/12/21 v2.1c Standard LaTeX file] \DeclareFontEncoding{OT4}{}{} \DeclareFontSubstitution{OT4}{cmr}{m}{n} diff --git a/Master/texmf-dist/tex/latex-dev/base/preload.cfg b/Master/texmf-dist/tex/latex-dev/base/preload.cfg index 2c128ff0719..0021b410d4e 100644 --- a/Master/texmf-dist/tex/latex-dev/base/preload.cfg +++ b/Master/texmf-dist/tex/latex-dev/base/preload.cfg @@ -8,7 +8,7 @@ %% %% This is a generated file. %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/base/preload.ltx b/Master/texmf-dist/tex/latex-dev/base/preload.ltx index a63a1ebde85..253c91b80ea 100644 --- a/Master/texmf-dist/tex/latex-dev/base/preload.ltx +++ b/Master/texmf-dist/tex/latex-dev/base/preload.ltx @@ -8,7 +8,7 @@ %% %% This is a generated file. %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/base/proc.cls b/Master/texmf-dist/tex/latex-dev/base/proc.cls index 6d287880a19..f1e7c6aeb35 100644 --- a/Master/texmf-dist/tex/latex-dev/base/proc.cls +++ b/Master/texmf-dist/tex/latex-dev/base/proc.cls @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/base/proc.sty b/Master/texmf-dist/tex/latex-dev/base/proc.sty index 043ad962730..78a0add7e06 100644 --- a/Master/texmf-dist/tex/latex-dev/base/proc.sty +++ b/Master/texmf-dist/tex/latex-dev/base/proc.sty @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/base/report.cls b/Master/texmf-dist/tex/latex-dev/base/report.cls index b0f60a1f5db..402b3673b04 100644 --- a/Master/texmf-dist/tex/latex-dev/base/report.cls +++ b/Master/texmf-dist/tex/latex-dev/base/report.cls @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% @@ -43,7 +43,7 @@ %% extension .ins) which are part of the distribution. \NeedsTeXFormat{LaTeX2e}[1995/12/01] \ProvidesClass{report} - [2024/06/29 v1.4n + [2025/01/22 v1.4n Standard LaTeX document class] \newcommand\@ptsize{} \newif\if@restonecol diff --git a/Master/texmf-dist/tex/latex-dev/base/report.sty b/Master/texmf-dist/tex/latex-dev/base/report.sty index 855e160f245..ee44bcdea71 100644 --- a/Master/texmf-dist/tex/latex-dev/base/report.sty +++ b/Master/texmf-dist/tex/latex-dev/base/report.sty @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/base/sfonts.def b/Master/texmf-dist/tex/latex-dev/base/sfonts.def index f95ded8243e..98ec9518f10 100644 --- a/Master/texmf-dist/tex/latex-dev/base/sfonts.def +++ b/Master/texmf-dist/tex/latex-dev/base/sfonts.def @@ -8,7 +8,7 @@ %% %% This is a generated file. %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/base/shortvrb.sty b/Master/texmf-dist/tex/latex-dev/base/shortvrb.sty index 4a9ae8833df..1354536a46d 100644 --- a/Master/texmf-dist/tex/latex-dev/base/shortvrb.sty +++ b/Master/texmf-dist/tex/latex-dev/base/shortvrb.sty @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% @@ -43,7 +43,7 @@ %% extension .ins) which are part of the distribution. \NeedsTeXFormat{LaTeX2e}[1994/12/01] \ProvidesPackage{shortvrb} - [2024/10/23 v3.0q + [2024/12/25 v3.0q Standard LaTeX documentation package V3 (FMi)] %% %% Package `doc' to use with LaTeX 2e @@ -53,6 +53,7 @@ + \def\MakeShortVerb{% \@ifstar {\def\@shortvrbdef{\verb*}\@MakeShortVerb}% diff --git a/Master/texmf-dist/tex/latex-dev/base/showidx.sty b/Master/texmf-dist/tex/latex-dev/base/showidx.sty index 911b1d762e5..dbeb3459405 100644 --- a/Master/texmf-dist/tex/latex-dev/base/showidx.sty +++ b/Master/texmf-dist/tex/latex-dev/base/showidx.sty @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/base/size10.clo b/Master/texmf-dist/tex/latex-dev/base/size10.clo index a2c22c047f8..2835447c09f 100644 --- a/Master/texmf-dist/tex/latex-dev/base/size10.clo +++ b/Master/texmf-dist/tex/latex-dev/base/size10.clo @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% @@ -42,7 +42,7 @@ %% and covered by LPPL is defined by the unpacking scripts (with %% extension .ins) which are part of the distribution. \ProvidesFile{size10.clo} - [2024/06/29 v1.4n + [2025/01/22 v1.4n Standard LaTeX file (size option)] \renewcommand\normalsize{% \@setfontsize\normalsize\@xpt\@xiipt diff --git a/Master/texmf-dist/tex/latex-dev/base/size11.clo b/Master/texmf-dist/tex/latex-dev/base/size11.clo index 0259727c40c..ccde0fb6049 100644 --- a/Master/texmf-dist/tex/latex-dev/base/size11.clo +++ b/Master/texmf-dist/tex/latex-dev/base/size11.clo @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% @@ -42,7 +42,7 @@ %% and covered by LPPL is defined by the unpacking scripts (with %% extension .ins) which are part of the distribution. \ProvidesFile{size11.clo} - [2024/06/29 v1.4n + [2025/01/22 v1.4n Standard LaTeX file (size option)] \renewcommand\normalsize{% \@setfontsize\normalsize\@xipt{13.6}% diff --git a/Master/texmf-dist/tex/latex-dev/base/size12.clo b/Master/texmf-dist/tex/latex-dev/base/size12.clo index e1dd32b0325..6f73a9b41b3 100644 --- a/Master/texmf-dist/tex/latex-dev/base/size12.clo +++ b/Master/texmf-dist/tex/latex-dev/base/size12.clo @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% @@ -42,7 +42,7 @@ %% and covered by LPPL is defined by the unpacking scripts (with %% extension .ins) which are part of the distribution. \ProvidesFile{size12.clo} - [2024/06/29 v1.4n + [2025/01/22 v1.4n Standard LaTeX file (size option)] \renewcommand\normalsize{% \@setfontsize\normalsize\@xiipt{14.5}% diff --git a/Master/texmf-dist/tex/latex-dev/base/slides.cls b/Master/texmf-dist/tex/latex-dev/base/slides.cls index df4cd3a3b68..c97a0436cfe 100644 --- a/Master/texmf-dist/tex/latex-dev/base/slides.cls +++ b/Master/texmf-dist/tex/latex-dev/base/slides.cls @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/base/slides.def b/Master/texmf-dist/tex/latex-dev/base/slides.def index d8e5e34fb71..f740db83331 100644 --- a/Master/texmf-dist/tex/latex-dev/base/slides.def +++ b/Master/texmf-dist/tex/latex-dev/base/slides.def @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/base/slides.sty b/Master/texmf-dist/tex/latex-dev/base/slides.sty index 5208aa6eadd..250dcf7412a 100644 --- a/Master/texmf-dist/tex/latex-dev/base/slides.sty +++ b/Master/texmf-dist/tex/latex-dev/base/slides.sty @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/base/structuredlog.sty b/Master/texmf-dist/tex/latex-dev/base/structuredlog.sty index 6473fbc96fd..1faa3b18d47 100644 --- a/Master/texmf-dist/tex/latex-dev/base/structuredlog.sty +++ b/Master/texmf-dist/tex/latex-dev/base/structuredlog.sty @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% @@ -42,7 +42,7 @@ %% and covered by LPPL is defined by the unpacking scripts (with %% extension .ins) which are part of the distribution. %%% From File: ltfilehook.dtx -\def\ltfilehookdate{2024/03/13} +\def\ltfilehookdate{2025/01/25} \def\ltfilehookversion{v1.0o} \ProvidesExplPackage {structuredlog}{\ltfilehookdate}{\ltfilehookversion} diff --git a/Master/texmf-dist/tex/latex-dev/base/syntonly.sty b/Master/texmf-dist/tex/latex-dev/base/syntonly.sty index 4d8aa24f88f..4b0a29783da 100644 --- a/Master/texmf-dist/tex/latex-dev/base/syntonly.sty +++ b/Master/texmf-dist/tex/latex-dev/base/syntonly.sty @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/base/t1cmdh.fd b/Master/texmf-dist/tex/latex-dev/base/t1cmdh.fd index 3ae4a12f0a0..d6f8085632a 100644 --- a/Master/texmf-dist/tex/latex-dev/base/t1cmdh.fd +++ b/Master/texmf-dist/tex/latex-dev/base/t1cmdh.fd @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/base/t1cmfib.fd b/Master/texmf-dist/tex/latex-dev/base/t1cmfib.fd index 04c5389628f..c78b29a70a9 100644 --- a/Master/texmf-dist/tex/latex-dev/base/t1cmfib.fd +++ b/Master/texmf-dist/tex/latex-dev/base/t1cmfib.fd @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/base/t1cmfr.fd b/Master/texmf-dist/tex/latex-dev/base/t1cmfr.fd index 1278f2b65ab..b7b43ac661f 100644 --- a/Master/texmf-dist/tex/latex-dev/base/t1cmfr.fd +++ b/Master/texmf-dist/tex/latex-dev/base/t1cmfr.fd @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/base/t1cmr.fd b/Master/texmf-dist/tex/latex-dev/base/t1cmr.fd index 698686aa6e8..7d68639b1e6 100644 --- a/Master/texmf-dist/tex/latex-dev/base/t1cmr.fd +++ b/Master/texmf-dist/tex/latex-dev/base/t1cmr.fd @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/base/t1cmss.fd b/Master/texmf-dist/tex/latex-dev/base/t1cmss.fd index 5bc389b29aa..1d8763a923c 100644 --- a/Master/texmf-dist/tex/latex-dev/base/t1cmss.fd +++ b/Master/texmf-dist/tex/latex-dev/base/t1cmss.fd @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/base/t1cmtt.fd b/Master/texmf-dist/tex/latex-dev/base/t1cmtt.fd index 044c63a222d..36c5d173523 100644 --- a/Master/texmf-dist/tex/latex-dev/base/t1cmtt.fd +++ b/Master/texmf-dist/tex/latex-dev/base/t1cmtt.fd @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/base/t1cmvtt.fd b/Master/texmf-dist/tex/latex-dev/base/t1cmvtt.fd index ffdbeade0c7..c4ae105c965 100644 --- a/Master/texmf-dist/tex/latex-dev/base/t1cmvtt.fd +++ b/Master/texmf-dist/tex/latex-dev/base/t1cmvtt.fd @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/base/t1enc.def b/Master/texmf-dist/tex/latex-dev/base/t1enc.def index 6178c89a96c..9f80c177b64 100644 --- a/Master/texmf-dist/tex/latex-dev/base/t1enc.def +++ b/Master/texmf-dist/tex/latex-dev/base/t1enc.def @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% @@ -43,7 +43,7 @@ %% extension .ins) which are part of the distribution. %%% From File: ltoutenc.dtx \ProvidesFile{t1enc.def} - [2024/11/06 v2.1b + [2024/12/21 v2.1c Standard LaTeX file] \DeclareFontEncoding{T1}{}{} \DeclareTextAccent{\`}{T1}{0} @@ -291,7 +291,7 @@ \DeclareTextCompositeCommand{\c}{T1}{R}{\textcommabelow{R}} \DeclareTextCompositeCommand{\c}{T1}{r}{\textcommabelow{r}} \fi -\DeclareTextCompositeCommand{\=}{T1}{\i}{\=\i} +\DeclareTextCompositeCommand{\=}{T1}{i}{\=\i} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \endinput %% diff --git a/Master/texmf-dist/tex/latex-dev/base/t1enc.dfu b/Master/texmf-dist/tex/latex-dev/base/t1enc.dfu index 0ca48c54712..fb3847d384e 100644 --- a/Master/texmf-dist/tex/latex-dev/base/t1enc.dfu +++ b/Master/texmf-dist/tex/latex-dev/base/t1enc.dfu @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/base/t1enc.sty b/Master/texmf-dist/tex/latex-dev/base/t1enc.sty index 50d9897d906..60c6c04f6fb 100644 --- a/Master/texmf-dist/tex/latex-dev/base/t1enc.sty +++ b/Master/texmf-dist/tex/latex-dev/base/t1enc.sty @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/base/t1lcmss.fd b/Master/texmf-dist/tex/latex-dev/base/t1lcmss.fd index 17e05a62eb5..6b2c980d258 100644 --- a/Master/texmf-dist/tex/latex-dev/base/t1lcmss.fd +++ b/Master/texmf-dist/tex/latex-dev/base/t1lcmss.fd @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/base/t1lcmtt.fd b/Master/texmf-dist/tex/latex-dev/base/t1lcmtt.fd index 72ad4664b2e..c0e8fb9d301 100644 --- a/Master/texmf-dist/tex/latex-dev/base/t1lcmtt.fd +++ b/Master/texmf-dist/tex/latex-dev/base/t1lcmtt.fd @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/base/t2aenc.dfu b/Master/texmf-dist/tex/latex-dev/base/t2aenc.dfu index aae8bfa09e3..8fd1a7a5f31 100644 --- a/Master/texmf-dist/tex/latex-dev/base/t2aenc.dfu +++ b/Master/texmf-dist/tex/latex-dev/base/t2aenc.dfu @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/base/t2benc.dfu b/Master/texmf-dist/tex/latex-dev/base/t2benc.dfu index 884997b63da..ae17c6cd5d0 100644 --- a/Master/texmf-dist/tex/latex-dev/base/t2benc.dfu +++ b/Master/texmf-dist/tex/latex-dev/base/t2benc.dfu @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/base/t2cenc.dfu b/Master/texmf-dist/tex/latex-dev/base/t2cenc.dfu index 0a62592f495..c520e0de460 100644 --- a/Master/texmf-dist/tex/latex-dev/base/t2cenc.dfu +++ b/Master/texmf-dist/tex/latex-dev/base/t2cenc.dfu @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/base/testpage.tex b/Master/texmf-dist/tex/latex-dev/base/testpage.tex index e8f06313fbf..77f955b7980 100644 --- a/Master/texmf-dist/tex/latex-dev/base/testpage.tex +++ b/Master/texmf-dist/tex/latex-dev/base/testpage.tex @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2024 +% Copyright (C) 1993-2025 % The LaTeX Project and any individual authors listed elsewhere % in this file. % diff --git a/Master/texmf-dist/tex/latex-dev/base/textcomp-2018-08-11.sty b/Master/texmf-dist/tex/latex-dev/base/textcomp-2018-08-11.sty index 3108e802e95..ea88385b6be 100644 --- a/Master/texmf-dist/tex/latex-dev/base/textcomp-2018-08-11.sty +++ b/Master/texmf-dist/tex/latex-dev/base/textcomp-2018-08-11.sty @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/base/textcomp.sty b/Master/texmf-dist/tex/latex-dev/base/textcomp.sty index df0d53634de..736b280bb18 100644 --- a/Master/texmf-dist/tex/latex-dev/base/textcomp.sty +++ b/Master/texmf-dist/tex/latex-dev/base/textcomp.sty @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/base/tracefnt.sty b/Master/texmf-dist/tex/latex-dev/base/tracefnt.sty index 70180dcbcc9..d1eea5cff4b 100644 --- a/Master/texmf-dist/tex/latex-dev/base/tracefnt.sty +++ b/Master/texmf-dist/tex/latex-dev/base/tracefnt.sty @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/base/ts1cmr.fd b/Master/texmf-dist/tex/latex-dev/base/ts1cmr.fd index fb97c97abeb..321e927fa5b 100644 --- a/Master/texmf-dist/tex/latex-dev/base/ts1cmr.fd +++ b/Master/texmf-dist/tex/latex-dev/base/ts1cmr.fd @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/base/ts1cmss.fd b/Master/texmf-dist/tex/latex-dev/base/ts1cmss.fd index 98a5d38e738..151bbfdefe1 100644 --- a/Master/texmf-dist/tex/latex-dev/base/ts1cmss.fd +++ b/Master/texmf-dist/tex/latex-dev/base/ts1cmss.fd @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/base/ts1cmtt.fd b/Master/texmf-dist/tex/latex-dev/base/ts1cmtt.fd index 1d6ae48c351..37d38abb89b 100644 --- a/Master/texmf-dist/tex/latex-dev/base/ts1cmtt.fd +++ b/Master/texmf-dist/tex/latex-dev/base/ts1cmtt.fd @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/base/ts1cmvtt.fd b/Master/texmf-dist/tex/latex-dev/base/ts1cmvtt.fd index fce8290fb12..005a56cb374 100644 --- a/Master/texmf-dist/tex/latex-dev/base/ts1cmvtt.fd +++ b/Master/texmf-dist/tex/latex-dev/base/ts1cmvtt.fd @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/base/ts1enc.def b/Master/texmf-dist/tex/latex-dev/base/ts1enc.def index 5cd97fb8357..9769bec5e17 100644 --- a/Master/texmf-dist/tex/latex-dev/base/ts1enc.def +++ b/Master/texmf-dist/tex/latex-dev/base/ts1enc.def @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/base/ts1enc.dfu b/Master/texmf-dist/tex/latex-dev/base/ts1enc.dfu index 9615fb36d96..c94dfdb06f3 100644 --- a/Master/texmf-dist/tex/latex-dev/base/ts1enc.dfu +++ b/Master/texmf-dist/tex/latex-dev/base/ts1enc.dfu @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/base/tuenc.def b/Master/texmf-dist/tex/latex-dev/base/tuenc.def index c85c620c6bb..84cf8d103f8 100644 --- a/Master/texmf-dist/tex/latex-dev/base/tuenc.def +++ b/Master/texmf-dist/tex/latex-dev/base/tuenc.def @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% @@ -43,7 +43,7 @@ %% extension .ins) which are part of the distribution. %%% From File: ltoutenc.dtx \ProvidesFile{tuenc.def} - [2024/11/06 v2.1b + [2024/12/21 v2.1c Standard LaTeX file] \providecommand\UnicodeEncodingName{TU} \begingroup\expandafter\expandafter\expandafter\endgroup diff --git a/Master/texmf-dist/tex/latex-dev/base/tulmdh.fd b/Master/texmf-dist/tex/latex-dev/base/tulmdh.fd index 3d7993d8aae..b7d93f17a56 100644 --- a/Master/texmf-dist/tex/latex-dev/base/tulmdh.fd +++ b/Master/texmf-dist/tex/latex-dev/base/tulmdh.fd @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 2016-2024 +%% Copyright (C) 2016-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/base/tulmr.fd b/Master/texmf-dist/tex/latex-dev/base/tulmr.fd index 7e77b3cfdb9..579548cb95e 100644 --- a/Master/texmf-dist/tex/latex-dev/base/tulmr.fd +++ b/Master/texmf-dist/tex/latex-dev/base/tulmr.fd @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 2016-2024 +%% Copyright (C) 2016-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/base/tulmss.fd b/Master/texmf-dist/tex/latex-dev/base/tulmss.fd index 0927f951ba3..26e852760f6 100644 --- a/Master/texmf-dist/tex/latex-dev/base/tulmss.fd +++ b/Master/texmf-dist/tex/latex-dev/base/tulmss.fd @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 2016-2024 +%% Copyright (C) 2016-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/base/tulmssq.fd b/Master/texmf-dist/tex/latex-dev/base/tulmssq.fd index 3d19e8d06ca..f14388dc7bf 100644 --- a/Master/texmf-dist/tex/latex-dev/base/tulmssq.fd +++ b/Master/texmf-dist/tex/latex-dev/base/tulmssq.fd @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 2016-2024 +%% Copyright (C) 2016-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/base/tulmtt.fd b/Master/texmf-dist/tex/latex-dev/base/tulmtt.fd index 28ad4efa9e1..bb0f9285129 100644 --- a/Master/texmf-dist/tex/latex-dev/base/tulmtt.fd +++ b/Master/texmf-dist/tex/latex-dev/base/tulmtt.fd @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 2016-2024 +%% Copyright (C) 2016-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/base/tulmvtt.fd b/Master/texmf-dist/tex/latex-dev/base/tulmvtt.fd index 6d0ba2299ab..17aaa7c9123 100644 --- a/Master/texmf-dist/tex/latex-dev/base/tulmvtt.fd +++ b/Master/texmf-dist/tex/latex-dev/base/tulmvtt.fd @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 2016-2024 +%% Copyright (C) 2016-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/base/ucmr.fd b/Master/texmf-dist/tex/latex-dev/base/ucmr.fd index 367aab2f0e4..a83e477bdb1 100644 --- a/Master/texmf-dist/tex/latex-dev/base/ucmr.fd +++ b/Master/texmf-dist/tex/latex-dev/base/ucmr.fd @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/base/ucmss.fd b/Master/texmf-dist/tex/latex-dev/base/ucmss.fd index 24c6e14bf3b..450efb2f4ff 100644 --- a/Master/texmf-dist/tex/latex-dev/base/ucmss.fd +++ b/Master/texmf-dist/tex/latex-dev/base/ucmss.fd @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/base/ucmtt.fd b/Master/texmf-dist/tex/latex-dev/base/ucmtt.fd index cd9cd439b0d..3fa1107e213 100644 --- a/Master/texmf-dist/tex/latex-dev/base/ucmtt.fd +++ b/Master/texmf-dist/tex/latex-dev/base/ucmtt.fd @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/base/ulasy.fd b/Master/texmf-dist/tex/latex-dev/base/ulasy.fd index da1be444688..d7d9ae0ea14 100644 --- a/Master/texmf-dist/tex/latex-dev/base/ulasy.fd +++ b/Master/texmf-dist/tex/latex-dev/base/ulasy.fd @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/base/ullasy.fd b/Master/texmf-dist/tex/latex-dev/base/ullasy.fd index f244ab86e46..1f5b0cf7105 100644 --- a/Master/texmf-dist/tex/latex-dev/base/ullasy.fd +++ b/Master/texmf-dist/tex/latex-dev/base/ullasy.fd @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/base/utf8-2018.def b/Master/texmf-dist/tex/latex-dev/base/utf8-2018.def index 6e6f97feaba..76041f9ee4f 100644 --- a/Master/texmf-dist/tex/latex-dev/base/utf8-2018.def +++ b/Master/texmf-dist/tex/latex-dev/base/utf8-2018.def @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/base/utf8.def b/Master/texmf-dist/tex/latex-dev/base/utf8.def index 58308e13a07..e46edd2ee0b 100644 --- a/Master/texmf-dist/tex/latex-dev/base/utf8.def +++ b/Master/texmf-dist/tex/latex-dev/base/utf8.def @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/base/utf8enc.dfu b/Master/texmf-dist/tex/latex-dev/base/utf8enc.dfu index 668359b4742..f868941e894 100644 --- a/Master/texmf-dist/tex/latex-dev/base/utf8enc.dfu +++ b/Master/texmf-dist/tex/latex-dev/base/utf8enc.dfu @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/base/x2enc.dfu b/Master/texmf-dist/tex/latex-dev/base/x2enc.dfu index 1b26bf5dee4..3cb1363d98c 100644 --- a/Master/texmf-dist/tex/latex-dev/base/x2enc.dfu +++ b/Master/texmf-dist/tex/latex-dev/base/x2enc.dfu @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/firstaid/filehook-ltx.sty b/Master/texmf-dist/tex/latex-dev/firstaid/filehook-ltx.sty index 3b41426d703..11d894c2116 100644 --- a/Master/texmf-dist/tex/latex-dev/firstaid/filehook-ltx.sty +++ b/Master/texmf-dist/tex/latex-dev/firstaid/filehook-ltx.sty @@ -11,7 +11,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 2020-2024 +%% Copyright (C) 2020-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% @@ -30,7 +30,7 @@ %% `First Aid Bundle'. You may however distribute the LaTeX `First Aid Bundle' %% without such generated files. %% -%% File: latex2e-first-aid-for-external-files.dtx (C) Copyright 2020-2024 +%% File: latex2e-first-aid-for-external-files.dtx (C) Copyright 2020-2025 %% %% The LaTeX Project and any individual authors listed elsewhere %% in this file. diff --git a/Master/texmf-dist/tex/latex-dev/firstaid/latex2e-first-aid-for-external-files.ltx b/Master/texmf-dist/tex/latex-dev/firstaid/latex2e-first-aid-for-external-files.ltx index 6e008fb9f04..362f29c71d1 100644 --- a/Master/texmf-dist/tex/latex-dev/firstaid/latex2e-first-aid-for-external-files.ltx +++ b/Master/texmf-dist/tex/latex-dev/firstaid/latex2e-first-aid-for-external-files.ltx @@ -11,7 +11,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 2020-2024 +%% Copyright (C) 2020-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% @@ -30,18 +30,19 @@ %% `First Aid Bundle'. You may however distribute the LaTeX `First Aid Bundle' %% without such generated files. %% -%% File: latex2e-first-aid-for-external-files.dtx (C) Copyright 2020-2024 +%% File: latex2e-first-aid-for-external-files.dtx (C) Copyright 2020-2025 %% %% The LaTeX Project and any individual authors listed elsewhere %% in this file. -\def\LaTeXFirstAidDate{2024/11/24} -\def\LaTeXFirstAidVersion{v1.1j} +\def\LaTeXFirstAidDate{2025/02/16} +\def\LaTeXFirstAidVersion{v1.1m} \ProvidesFile{latex2e-first-aid-for-external-files.ltx} [\LaTeXFirstAidDate\space \LaTeXFirstAidVersion\space LaTeX kernel fixes to external files and packages] \ExplSyntaxOn \cs_new:Npn\FirstAidNeededT#1#2#3{ - \exp_args:Ncx\str_if_eq:onF{ver@#1.#2}{#3} + \exp_args:Ncx\str_if_eq:onTF{ver@#1.#2}{#3} + { \typeout{==>~ First~ Aid~ for~ #1.#2~ applied! } } { \typeout{==>~ First~ Aid~ for~ #1.#2~ no~ longer~ applied!^^J \@spaces Expected:^^J \@spaces\@spaces #3^^J @@ -59,7 +60,7 @@ \AddToHook{package/unicode-math/after}{% \AddToHook{cmd/mod@math@codes/after}{\mathcode`\|=28796 }} \ExplSyntaxOn -\AddToHook{file/pgfpages.sty/after}[firstaid]{% +\AddToHook{file/pgfpages.sty/after}[firstaid]{ \cs_gset_eq:NN \shipout \pgfpages@originalshipout \cs_set_eq:NN \pgfpages@originalshipout \tex_shipout:D \cs_set_eq:NN \tex_shipout:D \pgfpages@interceptshipout diff --git a/Master/texmf-dist/tex/latex-dev/firstaid/underscore-ltx.sty b/Master/texmf-dist/tex/latex-dev/firstaid/underscore-ltx.sty index 0c5afe8215b..5a858cdf4c8 100644 --- a/Master/texmf-dist/tex/latex-dev/firstaid/underscore-ltx.sty +++ b/Master/texmf-dist/tex/latex-dev/firstaid/underscore-ltx.sty @@ -11,7 +11,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 2020-2024 +%% Copyright (C) 2020-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% @@ -30,7 +30,7 @@ %% `First Aid Bundle'. You may however distribute the LaTeX `First Aid Bundle' %% without such generated files. %% -%% File: latex2e-first-aid-for-external-files.dtx (C) Copyright 2020-2024 +%% File: latex2e-first-aid-for-external-files.dtx (C) Copyright 2020-2025 %% %% The LaTeX Project and any individual authors listed elsewhere %% in this file. diff --git a/Master/texmf-dist/tex/latex-dev/graphics/color.sty b/Master/texmf-dist/tex/latex-dev/graphics/color.sty index 6eac5d7e41a..72e94be15ce 100644 --- a/Master/texmf-dist/tex/latex-dev/graphics/color.sty +++ b/Master/texmf-dist/tex/latex-dev/graphics/color.sty @@ -12,7 +12,7 @@ %% %% %% color.dtx Copyright (C) 1994--1999 David Carlisle -%% Copyright (C) 2005-2024 LaTeX Project +%% Copyright (C) 2005-2025 LaTeX Project %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% @@ -25,7 +25,7 @@ %% \NeedsTeXFormat{LaTeX2e}[1995/12/01] \ProvidesPackage{color} - [2024/06/23 v1.3e Standard LaTeX Color (DPC)] + [2025/01/14 v1.3e Standard LaTeX Color (DPC)] \edef\Gin@codes{% \catcode`\noexpand\^^A\the\catcode`\^^A\relax \catcode`\noexpand\"\the\catcode`\"\relax diff --git a/Master/texmf-dist/tex/latex-dev/graphics/dvipdf.def b/Master/texmf-dist/tex/latex-dev/graphics/dvipdf.def index 54f14b9116d..bce08742bd3 100644 --- a/Master/texmf-dist/tex/latex-dev/graphics/dvipdf.def +++ b/Master/texmf-dist/tex/latex-dev/graphics/dvipdf.def @@ -8,7 +8,7 @@ %% %% drivers.dtx Copyright (C) 1994 David Carlisle Sebastian Rahtz %% Copyright (C) 1995 1996 1997 1998 1999 David Carlisle -%% Copyright (C) 2000-2024 LaTeX Project +%% Copyright (C) 2000-2025 LaTeX Project %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/graphics/dvipsnam.def b/Master/texmf-dist/tex/latex-dev/graphics/dvipsnam.def index 9c3e261c281..fb67b3bac03 100644 --- a/Master/texmf-dist/tex/latex-dev/graphics/dvipsnam.def +++ b/Master/texmf-dist/tex/latex-dev/graphics/dvipsnam.def @@ -8,7 +8,7 @@ %% %% drivers.dtx Copyright (C) 1994 David Carlisle Sebastian Rahtz %% Copyright (C) 1995 1996 1997 1998 1999 David Carlisle -%% Copyright (C) 2000-2024 LaTeX Project +%% Copyright (C) 2000-2025 LaTeX Project %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/graphics/dvipsone.def b/Master/texmf-dist/tex/latex-dev/graphics/dvipsone.def index 0b052c068fd..f2e689b455c 100644 --- a/Master/texmf-dist/tex/latex-dev/graphics/dvipsone.def +++ b/Master/texmf-dist/tex/latex-dev/graphics/dvipsone.def @@ -8,7 +8,7 @@ %% %% drivers.dtx Copyright (C) 1994 David Carlisle Sebastian Rahtz %% Copyright (C) 1995 1996 1997 1998 1999 David Carlisle -%% Copyright (C) 2000-2024 LaTeX Project +%% Copyright (C) 2000-2025 LaTeX Project %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/graphics/dviwin.def b/Master/texmf-dist/tex/latex-dev/graphics/dviwin.def index 6dd22108a49..fb8378704c5 100644 --- a/Master/texmf-dist/tex/latex-dev/graphics/dviwin.def +++ b/Master/texmf-dist/tex/latex-dev/graphics/dviwin.def @@ -8,7 +8,7 @@ %% %% drivers.dtx Copyright (C) 1994 David Carlisle Sebastian Rahtz %% Copyright (C) 1995 1996 1997 1998 1999 David Carlisle -%% Copyright (C) 2000-2024 LaTeX Project +%% Copyright (C) 2000-2025 LaTeX Project %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/graphics/emtex.def b/Master/texmf-dist/tex/latex-dev/graphics/emtex.def index 2bb0144563d..a6ad73429ef 100644 --- a/Master/texmf-dist/tex/latex-dev/graphics/emtex.def +++ b/Master/texmf-dist/tex/latex-dev/graphics/emtex.def @@ -8,7 +8,7 @@ %% %% drivers.dtx Copyright (C) 1994 David Carlisle Sebastian Rahtz %% Copyright (C) 1995 1996 1997 1998 1999 David Carlisle -%% Copyright (C) 2000-2024 LaTeX Project +%% Copyright (C) 2000-2025 LaTeX Project %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/graphics/epsfig.sty b/Master/texmf-dist/tex/latex-dev/graphics/epsfig.sty index 10bc2aa88e1..2b31dfc2023 100644 --- a/Master/texmf-dist/tex/latex-dev/graphics/epsfig.sty +++ b/Master/texmf-dist/tex/latex-dev/graphics/epsfig.sty @@ -12,7 +12,7 @@ %% %% %% epsfig.dtx Copyright (C) 1994-1996 1999 Sebastian Rahtz -%% Copyright (C) 2000-2024 LaTeX Project +%% Copyright (C) 2000-2025 LaTeX Project %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/graphics/graphics.sty b/Master/texmf-dist/tex/latex-dev/graphics/graphics.sty index bbbe11f3325..f07e7c6f40c 100644 --- a/Master/texmf-dist/tex/latex-dev/graphics/graphics.sty +++ b/Master/texmf-dist/tex/latex-dev/graphics/graphics.sty @@ -12,7 +12,7 @@ %% %% %% graphics.dtx Copyright (C) 1994 David Carlisle Sebastian Rahtz -%% Copyright (C) 1995-2024 LaTeX Project +%% Copyright (C) 1995-2025 LaTeX Project %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/graphics/graphicx.sty b/Master/texmf-dist/tex/latex-dev/graphics/graphicx.sty index de9d178cb06..c3af63def6d 100644 --- a/Master/texmf-dist/tex/latex-dev/graphics/graphicx.sty +++ b/Master/texmf-dist/tex/latex-dev/graphics/graphicx.sty @@ -12,7 +12,7 @@ %% %% %% graphicx.dtx Copyright (C) 1994 David Carlisle Sebastian Rahtz -%% Copyright (C) 1995-2024 LaTeX Project +%% Copyright (C) 1995-2025 LaTeX Project %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% @@ -23,7 +23,7 @@ %% \NeedsTeXFormat{LaTeX2e}[1995/12/01] \ProvidesPackage{graphicx} - [2021/09/16 v1.2d Enhanced LaTeX Graphics (DPC,SPQR)] + [2024/12/31 v1.2e Enhanced LaTeX Graphics (DPC,SPQR)] \DeclareOption{unknownkeysallowed} {\PassOptionsToPackage\CurrentOption{keyval}} \DeclareOption*{\PassOptionsToPackage\CurrentOption{graphics}} @@ -131,6 +131,9 @@ \def\Gin@pagebox@trimbox{trimbox}% \def\Gin@pagebox@artbox{artbox}% \define@key{Gin}{alt}{} +\define@key{Gin}{actualtext}{} +\define@key{Gin}{artifact}[true]{% + \lowercase{\Gin@boolkey{#1}}{artifact}} \def\Gin@boolkey#1#2{% \csname Gin@#2\ifx\relax#1\relax true\else#1\fi\endcsname} \def\Gin@eresize{\height} diff --git a/Master/texmf-dist/tex/latex-dev/graphics/keyval.sty b/Master/texmf-dist/tex/latex-dev/graphics/keyval.sty index c422add543c..02b89b74b63 100644 --- a/Master/texmf-dist/tex/latex-dev/graphics/keyval.sty +++ b/Master/texmf-dist/tex/latex-dev/graphics/keyval.sty @@ -12,7 +12,7 @@ %% %% %% keyval.dtx Copyright (C) 1993 1994 1995 1997 1998 1999 David Carlisle -%% Copyright (C) 2000-2024 David Carlisle, LaTeX Project +%% Copyright (C) 2000-2025 David Carlisle, LaTeX Project %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/graphics/lscape.sty b/Master/texmf-dist/tex/latex-dev/graphics/lscape.sty index 372fdcea132..676fdff2cce 100644 --- a/Master/texmf-dist/tex/latex-dev/graphics/lscape.sty +++ b/Master/texmf-dist/tex/latex-dev/graphics/lscape.sty @@ -12,7 +12,7 @@ %% %% %% lscape.dtx Copyright (C) 1994 1999-2000 David Carlisle -%% Copyright (C) 2000-2024 LaTeX Project +%% Copyright (C) 2000-2025 LaTeX Project %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/graphics/pctex32.def b/Master/texmf-dist/tex/latex-dev/graphics/pctex32.def index 92943879a60..6c6f711556d 100644 --- a/Master/texmf-dist/tex/latex-dev/graphics/pctex32.def +++ b/Master/texmf-dist/tex/latex-dev/graphics/pctex32.def @@ -8,7 +8,7 @@ %% %% drivers.dtx Copyright (C) 1994 David Carlisle Sebastian Rahtz %% Copyright (C) 1995 1996 1997 1998 1999 David Carlisle -%% Copyright (C) 2000-2024 LaTeX Project +%% Copyright (C) 2000-2025 LaTeX Project %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/graphics/pctexhp.def b/Master/texmf-dist/tex/latex-dev/graphics/pctexhp.def index f334eb179ab..25b168ad94f 100644 --- a/Master/texmf-dist/tex/latex-dev/graphics/pctexhp.def +++ b/Master/texmf-dist/tex/latex-dev/graphics/pctexhp.def @@ -8,7 +8,7 @@ %% %% drivers.dtx Copyright (C) 1994 David Carlisle Sebastian Rahtz %% Copyright (C) 1995 1996 1997 1998 1999 David Carlisle -%% Copyright (C) 2000-2024 LaTeX Project +%% Copyright (C) 2000-2025 LaTeX Project %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/graphics/pctexps.def b/Master/texmf-dist/tex/latex-dev/graphics/pctexps.def index d8c324574b0..6409bc90c31 100644 --- a/Master/texmf-dist/tex/latex-dev/graphics/pctexps.def +++ b/Master/texmf-dist/tex/latex-dev/graphics/pctexps.def @@ -8,7 +8,7 @@ %% %% drivers.dtx Copyright (C) 1994 David Carlisle Sebastian Rahtz %% Copyright (C) 1995 1996 1997 1998 1999 David Carlisle -%% Copyright (C) 2000-2024 LaTeX Project +%% Copyright (C) 2000-2025 LaTeX Project %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/graphics/pctexwin.def b/Master/texmf-dist/tex/latex-dev/graphics/pctexwin.def index a25c2a7265b..3361192568e 100644 --- a/Master/texmf-dist/tex/latex-dev/graphics/pctexwin.def +++ b/Master/texmf-dist/tex/latex-dev/graphics/pctexwin.def @@ -8,7 +8,7 @@ %% %% drivers.dtx Copyright (C) 1994 David Carlisle Sebastian Rahtz %% Copyright (C) 1995 1996 1997 1998 1999 David Carlisle -%% Copyright (C) 2000-2024 LaTeX Project +%% Copyright (C) 2000-2025 LaTeX Project %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/graphics/rotating.sty b/Master/texmf-dist/tex/latex-dev/graphics/rotating.sty index 5d4596be493..6f423ce791c 100644 --- a/Master/texmf-dist/tex/latex-dev/graphics/rotating.sty +++ b/Master/texmf-dist/tex/latex-dev/graphics/rotating.sty @@ -13,12 +13,12 @@ %% %% Copyright (C) 1995-1999 Sebastian Rahtz and Leonor Barroca %% Copyright (C) 2001-2003,2007-2009 Robin Fairbairns -%% Copyright (C) 2016-2024 LaTeX Project +%% Copyright (C) 2016-2025 LaTeX Project %% The LaTeX Project and any individual authors listed elsewhere %% in this file. \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{rotating}% - [2016/08/11 v2.16d + [2025/01/14 v2.16e rotated objects in LaTeX% ] \DeclareOption{clockwise}{% @@ -67,6 +67,7 @@ \newskip\rotFPtop \rotFPtop=\@fptop \newskip\rotFPbot \rotFPbot=\@fpbot \def\sideways{% + \leavevmode \Grot@setangle{90}% \setbox\z@\color@hbox\ignorespaces} \def\endsideways{% @@ -76,6 +77,7 @@ \Grot@box } \def\turn#1{% + \leavevmode \Grot@setangle{#1}% \setbox\z@\color@hbox\ignorespaces} \def\endturn{% @@ -85,6 +87,7 @@ \Grot@box } \def\rotate#1{% + \leavevmode \Grot@setangle{#1}% \setbox\z@\color@hbox\ignorespaces} \def\endrotate{% @@ -95,6 +98,7 @@ \Grot@box } \def\turnbox#1#2{% + \leavevmode \Grot@setangle{#1}% \setbox\z@\hbox{{#2}}% \Grot@x\z@\Grot@y\z@ @@ -110,10 +114,16 @@ \def\@xrotfloat#1[#2]{% \@float{#1}[#2]% \begin{lrbox}\rot@float@box + \SuspendTagging{\minipage}% \begin{minipage}\textheight + \ResumeTagging{\minipage}% + \UseTaggingSocket{para/restore}% } \def\end@rotfloat{% - \end{minipage}\end{lrbox}% + \par\SuspendTagging{\minipage}% + \end{minipage}% + \ResumeTagging{\minipage}% + \end{lrbox}% \stepcounter{r@tfl@t}% \rot@label{RF\ther@tfl@t}% \rot@pageref{RF\ther@tfl@t}{\R@@page}% diff --git a/Master/texmf-dist/tex/latex-dev/graphics/tcidvi.def b/Master/texmf-dist/tex/latex-dev/graphics/tcidvi.def index 2e0a032dcfc..a4a964e22ae 100644 --- a/Master/texmf-dist/tex/latex-dev/graphics/tcidvi.def +++ b/Master/texmf-dist/tex/latex-dev/graphics/tcidvi.def @@ -8,7 +8,7 @@ %% %% drivers.dtx Copyright (C) 1994 David Carlisle Sebastian Rahtz %% Copyright (C) 1995 1996 1997 1998 1999 David Carlisle -%% Copyright (C) 2000-2024 LaTeX Project +%% Copyright (C) 2000-2025 LaTeX Project %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/graphics/trig.sty b/Master/texmf-dist/tex/latex-dev/graphics/trig.sty index b5114838368..a3412372517 100644 --- a/Master/texmf-dist/tex/latex-dev/graphics/trig.sty +++ b/Master/texmf-dist/tex/latex-dev/graphics/trig.sty @@ -12,7 +12,7 @@ %% %% %% File: trig.dtx Copyright (C) 1993-1999 David Carlisle -%% Copyright (C) 2000-2024 LaTeX Project +%% Copyright (C) 2000-2025 LaTeX Project %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/graphics/truetex.def b/Master/texmf-dist/tex/latex-dev/graphics/truetex.def index 28f11e78c86..305901385c7 100644 --- a/Master/texmf-dist/tex/latex-dev/graphics/truetex.def +++ b/Master/texmf-dist/tex/latex-dev/graphics/truetex.def @@ -8,7 +8,7 @@ %% %% drivers.dtx Copyright (C) 1994 David Carlisle Sebastian Rahtz %% Copyright (C) 1995 1996 1997 1998 1999 David Carlisle -%% Copyright (C) 2000-2024 LaTeX Project +%% Copyright (C) 2000-2025 LaTeX Project %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/bib-latex-lab-testphase.ltx b/Master/texmf-dist/tex/latex-dev/latex-lab/bib-latex-lab-testphase.ltx index d0fb0b78fa5..be1475f9536 100644 --- a/Master/texmf-dist/tex/latex-dev/latex-lab/bib-latex-lab-testphase.ltx +++ b/Master/texmf-dist/tex/latex-dev/latex-lab/bib-latex-lab-testphase.ltx @@ -8,7 +8,7 @@ %% %% This is a generated file. %% -%% Copyright 2021-2023 LaTeX Project +%% Copyright 2021-2025 LaTeX Project %% %% This file was generated from file(s) of the `LaTeX-lab Bundle'. %% ------------------------------------------------------------------------------------ diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/block-latex-lab-testphase.ltx b/Master/texmf-dist/tex/latex-dev/latex-lab/block-latex-lab-testphase.ltx index 41d2430e8e6..ec39578cc46 100644 --- a/Master/texmf-dist/tex/latex-dev/latex-lab/block-latex-lab-testphase.ltx +++ b/Master/texmf-dist/tex/latex-dev/latex-lab/block-latex-lab-testphase.ltx @@ -8,7 +8,7 @@ %% %% This is a generated file. %% -%% Copyright 2021-2023 LaTeX Project +%% Copyright 2021-2025 LaTeX Project %% %% This file was generated from file(s) of the `LaTeX-lab Bundle'. %% ------------------------------------------------------------------------------------ @@ -32,9 +32,10 @@ %% where one can also log issues in case there are any. %% %% -%% File: latex-lab-block.dtx (C) Copyright 2021-2024 LaTeX Project -\def\ltlabblockdate{2024-11-25} -\def\ltlabblockversion{0.8w} +%% File: latex-lab-block.dtx (C) Copyright 2021-2025 LaTeX Project +\def\ltlabblockdate{2025-01-20} +\def\ltlabblockversion{0.9a} + \ProvidesFile{block-latex-lab-testphase.ltx} [\ltlabblockdate\space v\ltlabblockversion\space blockenv implementation] diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/documentmetadata-support.ltx b/Master/texmf-dist/tex/latex-dev/latex-lab/documentmetadata-support.ltx index 765755ee106..37e18ac70b6 100644 --- a/Master/texmf-dist/tex/latex-dev/latex-lab/documentmetadata-support.ltx +++ b/Master/texmf-dist/tex/latex-dev/latex-lab/documentmetadata-support.ltx @@ -8,7 +8,7 @@ %% %% This is a generated file. %% -%% Copyright 2021-2023 LaTeX Project +%% Copyright 2021-2025 LaTeX Project %% %% This file was generated from file(s) of the `LaTeX-lab Bundle'. %% ------------------------------------------------------------------------------------ @@ -33,8 +33,8 @@ %% %% %% File: documentmetadata-support.dtx -\def\documentmetadatasupportversion{1.0j} -\def\documentmetadatasupportdate{2024-09-13} +\def\documentmetadatasupportversion{1.0m} +\def\documentmetadatasupportdate{2025-02-17} \RequirePackage{pdfmanagement-testphase} @@ -68,7 +68,8 @@ \ExplSyntaxOn\makeatletter \file_input:n {l3backend-testphase-\c_sys_backend_str.def} \ExplSyntaxOff\makeatother - \keys_set_filter:nnn { document / metadata } { init } { #1 } + \pdf_version_gset:n { 2.0 } + \keys_set_exclude_groups:nnn { document / metadata } { init } { #1 } \bool_if:NT \g__pdfmanagement_active_bool { \PassOptionsToPackage{customdriver=hgeneric-testphase}{hyperref} @@ -90,7 +91,7 @@ \hook_use_once:n {pdfmanagement/add} \cs_set_protected:Npn \DocumentMetadata ##1 { - \keys_set_filter:nnn { document / metadata } { init } { ##1 } + \keys_set_exclude_groups:nnn { document / metadata } { init } { ##1 } \str_remove_all:cn {opt@hyperref.sty}{customdriver=hgeneric-testphase} \bool_if:NT \g__pdfmanagement_active_bool { @@ -139,34 +140,17 @@ ,_pdfstandard .choices:nn = {A-1B,A-2A,A-2B,A-2U,A-3A,A-3B,A-3U,A-4} { - \prop_if_exist:cT { g__pdfmeta_standard_pdf/#1_prop } - { - \prop_gset_eq:Nc \g__pdfmeta_standard_prop { g__pdfmeta_standard_pdf/#1 _prop } - } + \prop_gset_eq:Nc \g__pdfmeta_standard_prop { g__pdfmeta_standard_pdf/#1 _prop } \AddToDocumentProperties [document]{pdfstandard}{#1} } ,_pdfstandard / A-4F .code:n = { - \prop_if_exist:cTF { g__pdfmeta_standard_pdf/A-4F_prop } - { - \prop_gset_eq:Nc \g__pdfmeta_standard_prop { g__pdfmeta_standard_pdf/A-4F_prop } - } - { - \prop_gset_eq:Nc \g__pdfmeta_standard_prop { g__pdfmeta_standard_pdf/A-4_prop } - \prop_gput:Nnn \g__pdfmeta_standard_prop{conformance}{F} - } + \prop_gset_eq:Nc \g__pdfmeta_standard_prop { g__pdfmeta_standard_pdf/A-4F_prop } \AddToDocumentProperties [document]{pdfstandard}{A-4F} } ,_pdfstandard / A-4E .code:n = { - \prop_if_exist:cTF { g__pdfmeta_standard_pdf/A-4E_prop } - { - \prop_gset_eq:Nc \g__pdfmeta_standard_prop { g__pdfmeta_standard_pdf/A-4E_prop } - } - { - \prop_gset_eq:Nc \g__pdfmeta_standard_prop { g__pdfmeta_standard_pdf/A-4_prop } - \prop_gput:Nnn \g__pdfmeta_standard_prop{conformance}{E} - } + \prop_gset_eq:Nc \g__pdfmeta_standard_prop { g__pdfmeta_standard_pdf/A-4E_prop } \AddToDocumentProperties [document]{pdfstandard}{A-4E} } ,_pdfstandard / unknown .code:n = @@ -174,6 +158,14 @@ \msg_error:nnn{pdf}{unknown-standard}{#1} } ,testphase .multichoice: + ,testphase / latest .code:n = + { + \keys_set:nn + {document / metadata} + {testphase={phase-III,title,table,math,firstaid}} + \msg_note:nnn { meta } { testphase-latest-loading } + { phase-III,~title,~table,~math,~firstaid } + } ,testphase / tagpdf .code:n = { \tl_gput_right:Nn\g__pdfmanagement_testphase_tl @@ -267,6 +259,11 @@ The~language~has~not~been~set~in~\token_to_str:N \DocumentMetadata.\\Setting~it~to~'#1'~as~fallback. } +\msg_new:nnn { meta } { testphase-latest-loading } + { + Loading~testphase~modules\\ + #1 + } \ExplSyntaxOff\makeatother \endinput %% diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/firstaid-latex-lab-testphase.ltx b/Master/texmf-dist/tex/latex-dev/latex-lab/firstaid-latex-lab-testphase.ltx index 6103a8fd9d6..7c010fccea1 100644 --- a/Master/texmf-dist/tex/latex-dev/latex-lab/firstaid-latex-lab-testphase.ltx +++ b/Master/texmf-dist/tex/latex-dev/latex-lab/firstaid-latex-lab-testphase.ltx @@ -8,7 +8,7 @@ %% %% This is a generated file. %% -%% Copyright 2021-2023 LaTeX Project +%% Copyright 2021-2025 LaTeX Project %% %% This file was generated from file(s) of the `LaTeX-lab Bundle'. %% ------------------------------------------------------------------------------------ @@ -32,8 +32,8 @@ %% where one can also log issues in case there are any. %% %% -%% File: latex-lab-firstaid.dtx (C) Copyright 2023-2024 LaTeX Project -\def\ltlabfirstaiddate{2024-11-23} +%% File: latex-lab-firstaid.dtx (C) Copyright 2023-2025 LaTeX Project +\def\ltlabfirstaiddate{2025-01-27} \def\ltlabfirstaidversion{0.85i} \ProvidesFile{firstaid-latex-lab-testphase.ltx} [\ltlabfirstaiddate\space v\ltlabfirstaidversion\space diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/float-latex-lab-testphase.ltx b/Master/texmf-dist/tex/latex-dev/latex-lab/float-latex-lab-testphase.ltx index 9dff3eac3ec..fc3fd41c502 100644 --- a/Master/texmf-dist/tex/latex-dev/latex-lab/float-latex-lab-testphase.ltx +++ b/Master/texmf-dist/tex/latex-dev/latex-lab/float-latex-lab-testphase.ltx @@ -8,7 +8,7 @@ %% %% This is a generated file. %% -%% Copyright 2021-2023 LaTeX Project +%% Copyright 2021-2025 LaTeX Project %% %% This file was generated from file(s) of the `LaTeX-lab Bundle'. %% ------------------------------------------------------------------------------------ @@ -33,8 +33,8 @@ %% %% %% File: latex-lab-float.dtx (C) Copyright 2023 LaTeX Project -\def\ltlabfloatdate{2024-11-21} -\def\ltlabfloatversion{0.81g} +\def\ltlabfloatdate{2024-12-27} +\def\ltlabfloatversion{0.81h} \ProvidesFile{float-latex-lab-testphase.ltx} [\ltlabfloatdate\space v\ltlabfloatversion\space latex-lab wrapper float] diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/graphic-latex-lab-testphase.ltx b/Master/texmf-dist/tex/latex-dev/latex-lab/graphic-latex-lab-testphase.ltx index 30d6cd9efd0..6ecbdcf2103 100644 --- a/Master/texmf-dist/tex/latex-dev/latex-lab/graphic-latex-lab-testphase.ltx +++ b/Master/texmf-dist/tex/latex-dev/latex-lab/graphic-latex-lab-testphase.ltx @@ -8,7 +8,7 @@ %% %% This is a generated file. %% -%% Copyright 2021-2023 LaTeX Project +%% Copyright 2021-2025 LaTeX Project %% %% This file was generated from file(s) of the `LaTeX-lab Bundle'. %% ------------------------------------------------------------------------------------ @@ -32,7 +32,7 @@ %% where one can also log issues in case there are any. %% %% -%% File: latex-lab-graphic.dtx (C) Copyright 2022-2024 LaTeX Project +%% File: latex-lab-graphic.dtx (C) Copyright 2022-2025 LaTeX Project \def\ltlabgraphicdate{2024-09-18} \def\ltlabgraphicversion{0.80e} diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-amsmath.ltx b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-amsmath.ltx index 0ca17cffdce..1f51c7e360c 100644 --- a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-amsmath.ltx +++ b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-amsmath.ltx @@ -8,7 +8,7 @@ %% %% This is a generated file. %% -%% Copyright 2021-2023 LaTeX Project +%% Copyright 2021-2025 LaTeX Project %% %% This file was generated from file(s) of the `LaTeX-lab Bundle'. %% ------------------------------------------------------------------------------------ @@ -34,38 +34,678 @@ %% %% File: latex-lab-amsmath.dtx \ProvidesFile{latex-lab-amsmath.ltx} - [2024-09-18 v0.1c amsmath adaptions] + [2025-01-31 v0.1e amsmath adaptions] \RequirePackage{tagpdf-base} \ExplSyntaxOn -\AddToHook{package/amsmath/after} +\def\measuring@true{\let\ifmeasuring@\iftrue\tag_suspend:n{\measuring}\luamml_ignore:} +\def\maketag@@@#1 + {% + \ifmeasuring@ + \hbox{\m@th\normalfont#1}% + \else + \UseTaggingSocket{math/display/tag/begin} + \hbox{\m@th\normalfont#1 + \UseTaggingSocket{math/luamml/mtable/tag/save} + }% + \UseTaggingSocket{math/display/tag/end} + \fi + } +\def\maketag@@@notag#1{\hbox{\m@th\normalfont#1}} +\DeclareRobustCommand{\eqref}[1] + {\textup{\let\maketag@@@\maketag@@@notag\tagform@{\ref{#1}}}} +\def\common@align@ending { + \math@cr \black@\totwidth@ + \UseExpandableTaggingSocket {math/luamml/mtable/finalize} {align} + \egroup + \ifingather@ + \restorealignstate@ + \egroup + \nonumber + \ifnum0=`{\fi\iffalse}\fi + \else + $$% + \fi + \ignorespacesafterend +} +\renewenvironment{align}{% + \start@align\@ne\st@rredfalse\m@ne +}{% + \common@align@ending +} +\renewenvironment{align*}{% + \start@align\@ne\st@rredtrue\m@ne +}{% + \common@align@ending +} +\renewenvironment{alignat}{% + \start@align\z@\st@rredfalse +}{% + \common@align@ending +} +\renewenvironment{alignat*}{% + \start@align\z@\st@rredtrue +}{% + \common@align@ending +} +\renewenvironment{flalign}{% + \start@align\tw@\st@rredfalse\m@ne +}{% + \common@align@ending +} +\renewenvironment{flalign*}{% + \start@align\tw@\st@rredtrue\m@ne +}{% + \common@align@ending +} +\renewenvironment{xalignat}{% + \start@align\@ne\st@rredfalse +}{% + \common@align@ending +} +\renewenvironment{xalignat*}{% + \start@align\@ne\st@rredtrue +}{% + \common@align@ending +} +\renewenvironment{xxalignat}{% + \start@align\tw@\st@rredtrue +}{% + \common@align@ending +} + \math_register_halign_env:nn {align}{} + \math_register_halign_env:nn {align*}{} + \math_register_halign_env:nn {alignat}{} + \math_register_halign_env:nn {alignat*}{} + \math_register_halign_env:nn {flalign}{} + \math_register_halign_env:nn {flalign*}{} + \math_register_halign_env:nn {xalignat}{} + \math_register_halign_env:nn {xalignat*}{} + \math_register_halign_env:nn {xxalignat}{} +\def\align@preamble{% + &\hfil + \strut@ + \setboxz@h + { + \@lign + $ + \m@th\displaystyle{##} + \ifmeasuring@ + \luamml_ignore: + \else + \UseTaggingSocket{math/luamml/save/nNn}{ {} \displaystyle {mtd} } + \fi + $ + }% + \ifmeasuring@ + \savefieldlength@ + \else + \UseTaggingSocket{math/luamml/mtable/finalizecol}{box} + \fi + \set@field + \tabskip\z@skip + &\setboxz@h + { + \@lign + $ + \m@th\displaystyle{{}##} + \ifmeasuring@ + \luamml_ignore: + \else + \UseTaggingSocket{math/luamml/save/nNn}{ {} \displaystyle {mtd} } + \fi + $ + }% + \ifmeasuring@ + \savefieldlength@ + \else + \UseTaggingSocket{math/luamml/mtable/finalizecol}{box} + \fi + \set@field + \hfil + \tabskip\alignsep@ +} +\def\math@cr@@@align{% + \ifst@rred\nonumber\fi + \if@eqnsw \global\tag@true \fi + \global\advance\row@\@ne + \add@amps\maxfields@ + \omit + \kern-\alignsep@ + \iftag@ + \setboxz@h{\@lign\strut@{\make@display@tag}}% + \place@tag + \fi + \UseTaggingSocket{math/luamml/mtable/tag/set} + \ifst@rred\else\global\@eqnswtrue\fi + \global\lineht@\z@ + \cr +} +\def\gather@#1{% + \ingather@true \let\split\insplit@ + \let\tag\tag@in@align \let\label\label@in@display + \chardef\dspbrk@context\z@ + \intertext@ \displ@y@ \Let@ + \let\math@cr@@@\math@cr@@@gather + \gmeasure@{#1}% + \global\shifttag@false + \tabskip\z@skip + \global\row@\@ne + \halign to\displaywidth\bgroup + \strut@ + \setboxz@h + { + $\m@th\displaystyle{##} + \UseTaggingSocket{math/luamml/save/nNn}{ {} \displaystyle {mtd} } + $ + }% + \UseTaggingSocket{math/luamml/mtable/finalizecol}{box} + \calc@shift@gather + \set@gather@field + \tabskip\@centering + &\setboxz@h{\strut@{##}}% + \place@tag@gather + \UseTaggingSocket{math/luamml/mtable/tag/set} + \tabskip \iftagsleft@ \gdisplaywidth@ \else \z@skip \span\fi + \crcr + #1% +} +\def\endgather{ + \math@cr + \black@ \totwidth@ + \UseExpandableTaggingSocket{math/luamml/mtable/finalize} {gather} + \egroup + $$ + \ignorespacesafterend +} +\renewenvironment{gather*} + { + \start@gather\st@rredtrue + } + { + \math@cr + \black@\totwidth@ + \UseExpandableTaggingSocket{math/luamml/mtable/finalize} {gather} + \egroup + $$\ignorespacesafterend + } +\math_register_halign_env:nn {gather}{} +\math_register_halign_env:nn {gather*}{} +\renewcommand{\start@aligned}[2]{ + \RIfM@ + \else + \nonmatherr@ {\begin{\@currenvir}} + \fi + \savecolumn@ % Assumption: called inside a group + \UseTaggingSocket{math/luamml/annotate/false}{}{ \alignedspace@left } + \ams@start@box {#1} \bgroup + \maxfields@ #2 \relax + \ifnum \maxfields@ > \m@ne + \multiply \maxfields@ \tw@ + \let \math@cr@@@ \math@cr@@@alignedat + \alignsep@ \z@skip + \else + \let \math@cr@@@ \math@cr@@@aligned + \alignsep@ \minalignsep + \fi + \Let@ \chardef \dspbrk@context \@ne + \default@tag + \spread@equation % no-op if already called + \global \column@ \z@ + \ialign \bgroup + & \column@plus + \hfil + \strut@ + $ + \m@th + \displaystyle + {##} + \UseTaggingSocket{math/luamml/save/nNn}{ {} \displaystyle {mtd} } + $ + \UseTaggingSocket{math/luamml/mtable/finalizecol}{last} + \tabskip \z@skip + & \column@plus + $ + \m@th + \displaystyle + { + {} + ## + } + \UseTaggingSocket{math/luamml/save/nNn}{ {} \displaystyle {mtd} } + $ + \UseTaggingSocket{math/luamml/mtable/finalizecol}{last} + \hfil + \tabskip\alignsep@ + \crcr + \ams@return@opt@arg +} +\renewenvironment{gathered}[1][c]{% + \RIfM@\else + \nonmatherr@{\begin{gathered}}% + \fi + \UseTaggingSocket{ math/luamml/annotate/false } {}{ \alignedspace@left } + \ams@start@box{#1}\bgroup + \Let@ \chardef\dspbrk@context\@ne \restore@math@cr + \spread@equation + \ialign\bgroup + \hfil\strut@$\m@th\displaystyle## + \UseTaggingSocket{math/luamml/save/nNn}{ {} \displaystyle {mtd} } + $ + \UseTaggingSocket{math/luamml/mtable/finalizecol}{last} + \hfil + \crcr + \ams@return@opt@arg +}{% + \endaligned +} +\def\endaligned { - \def\intertext@{% - \def\intertext##1{% - \ifvmode\else\\\@empty\fi - \noalign{% - \penalty\postdisplaypenalty\vskip-\belowdisplayskip - \vbox{ - \ifmeasuring@\tag_suspend:n{\measuring}\fi - \normalbaselines - \ifdim\linewidth=\columnwidth - \else \parshape\@ne \@totalleftmargin \linewidth + \crcr + \UseExpandableTaggingSocket{math/luamml/mtable/innertable/save} + \egroup + \restorecolumn@ + \egroup + \UseTaggingSocket{math/luamml/mtable/innertable/finalize} + } +\renewenvironment{multline*}{\start@multline\st@rredtrue} + {% + \iftagsleft@ \@xp\lendmultline@ \else \@xp\rendmultline@ \fi + \ignorespacesafterend + } +\math_register_halign_env:nn {multline}{} +\math_register_halign_env:nn {multline*}{} +\def\multline@#1{% + \Let@ + \@display@init{\global\advance\row@\@ne \global\dspbrk@lvl\m@ne}% + \chardef\dspbrk@context\z@ + \restore@math@cr + \let\tag\tag@in@align + \global\tag@false \global\let\raise@tag\@empty + \mmeasure@{#1}% + \let\tag\gobble@tag \let\label\@gobble + \tabskip \if@fleqn \@mathmargin \else \z@skip \fi + \totwidth@\displaywidth + \if@fleqn + \advance\totwidth@-\@mathmargin + \fi + \halign\bgroup + \hbox to\totwidth@{% + \if@fleqn + \hskip \@centering \relax + \else + \hfil \fi - \tag_mc_end_push: - \tagpdfsetup{para/tag=P}% - \tagpdfparaOn - \noindent\ignorespaces##1\par - \tag_mc_begin_pop:n{}}% - \penalty\predisplaypenalty\vskip\abovedisplayskip% + \strut@ + $\m@th\displaystyle{}##\endmultline@math + \hfil }% - }} - } + \crcr + \if@fleqn + \hskip-\@mathmargin + \def\multline@indent{\hskip\@mathmargin}% put it back + \else + \hfilneg + \def\multline@indent{\hskip\multlinegap}% + \fi + \iftagsleft@ + \iftag@ + \begingroup + \ifshifttag@ + \rlap{\vbox{% + \normalbaselines + \hbox{% + \strut@ + \make@display@tag + }% + \vbox to\lineht@{}% + \raise@tag + }}% + \multline@indent + \else + \setbox\z@\hbox{\make@display@tag}% + \dimen@\@mathmargin \advance\dimen@-\wd\z@ + \ifdim\dimen@<\multlinetaggap + \dimen@\multlinetaggap + \fi + \box\z@ \hskip\dimen@\relax + \fi + \endgroup + \else + \multline@indent + \fi + \else + \multline@indent + \fi + \ifmeasuring@ \else + \UseTaggingSocket{math/luamml/mtable/aligncol} {left} + \fi + #1% + \ifmeasuring@ \else + \UseTaggingSocket{math/luamml/mtable/aligncol} {right} + \fi +} +\def\endmultline@math + { + \UseTaggingSocket{math/luamml/save/nNn}{ {} \displaystyle {mtd} } + $ + \UseTaggingSocket{math/luamml/mtable/finalizecol}{last} + } +\def\rendmultline@{% + \iftag@ + \UseTaggingSocket{math/luamml/save/nNn}{ {} \displaystyle {mtd} } + $ + \UseTaggingSocket{math/luamml/mtable/finalizecol}{last} + \let\endmultline@math\relax + \ifshifttag@ + \hskip\multlinegap + \llap{\vtop{% + \raise@tag + \normalbaselines + \setbox\@ne\null + \dp\@ne\lineht@ + \box\@ne + \hbox{\strut@\make@display@tag}% + }}% + \else + \hskip\multlinetaggap + \make@display@tag + \fi + \UseTaggingSocket{math/luamml/mtable/tag/set} + \else + \hskip\multlinegap + \fi + \hfilneg + \math@cr + \UseExpandableTaggingSocket {math/luamml/mtable/finalize} {multline} + \egroup$$% +} +\def\lendmultline@{% + \hfilneg + \hskip\multlinegap + \math@cr + \UseExpandableTaggingSocket {math/luamml/mtable/finalize} {multline} + \egroup + $$% +} +\def\env@cases{% + \let\@ifnextchar\new@ifnextchar + \left\lbrace + \def\arraystretch{1.2}% + \array{@{}l@{\quad}l@{\luamml_ignore:}}% +} + +\renewenvironment {smallmatrix} { + \UseTaggingSocket{ math/luamml/annotate/false } {} { \null\, } + \vcenter \bgroup + \Let@ + \restore@math@cr + \default@tag + \baselineskip 6 \ex@ + \lineskip 1.5 \ex@ + \lineskiplimit \lineskip + \ialign \bgroup + \hfil + $ + \m@th + \scriptstyle + ## + % No \scriptsize here since we want to add the mstyle nodes + \UseTaggingSocket{math/luamml/save/nn}{ {} {mtd} } + $ + \UseTaggingSocket{math/luamml/mtable/finalizecol}{last} + \hfil + && + \thickspace + \hfil + $ + \m@th + \scriptstyle + ## + % No \scriptsize here since we want to add the mstyle nodes + \UseTaggingSocket{math/luamml/save/nn}{ {} {mtd} } + $ + \UseTaggingSocket{math/luamml/mtable/finalizecol}{last} + \hfil + \crcr +}{% + \crcr + \UseExpandableTaggingSocket{math/luamml/mtable/smallmatrix/save} + \egroup + \egroup + \UseTaggingSocket{math/luamml/mtable/innertable/finalize} + \UseTaggingSocket{ math/luamml/annotate/false } {}{ \, } +} +\cs_new:Npn\__math_split_debug_typeout:n#1{\use_none:n{#1}} +\bool_new:N\l__math_gathersplit_bool +\renewenvironment{split}{% + \__math_split_debug_typeout:n {begin~split} + \if@display + \ifinner + \@xp\@xp\@xp\split@aligned + \else + \ifst@rred \else \global\@eqnswtrue \fi + \fi + \else + \let\endsplit\@empty \@xp\collect@body\@xp\split@err + \fi + \collect@body\gather@split +}{\__math_split_debug_typeout:n{end~split}% + \crcr + \UseExpandableTaggingSocket{math/luamml/mtable/innertable/save}% + \egroup + \egroup + \iftagsleft@ \@xp\lendsplit@ \else \@xp\rendsplit@ \fi +} +\def\gather@split#1#2#3{ + \__math_split_debug_typeout:n{gather@split}% + \@xp\endgroup \reset@equation % math@cr will handle equation numbering + \iftag@ + \toks@\@xp{\df@tag}% + \edef\split@tag{% + \gdef\@nx\df@tag{\the\toks@}% + \global\@nx\tag@true \@nx\nonumber + }% + \else \let\split@tag\@empty + \fi + \bool_set_true:N\l__math_gathersplit_bool + \spread@equation + \vcenter\bgroup + \gather@{\split@tag + \begin{split}#1\end{split}}% + \def\endmathdisplay@a{% + \__math_split_debug_typeout:n{endmathdisplay@a} + \__math_split_debug_typeout:n{finalize~innertable~endmathdisplay@a} + \math@cr + \black@ \totwidth@ + \egroup + \egroup + \UseExpandableTaggingSocket{math/luamml/mtable/innertable/finalize}% + }% +} +\def\insplit@{\__math_split_debug_typeout:n{insplit@}% + \global\setbox\z@\vbox\bgroup + \Let@ \chardef\dspbrk@context\@ne \restore@math@cr + \default@tag % disallow use of \tag here + \ialign\bgroup + \hfil + \strut@ + $\m@th\displaystyle {##}% + \UseTaggingSocket{math/luamml/save/nNn}{ {} \displaystyle {mtd} }% + $% + \UseTaggingSocket{math/luamml/mtable/finalizecol}{last}% + &$\m@th\displaystyle {{}##}% + \UseTaggingSocket{math/luamml/save/nNn}{ {} \displaystyle {mtd} }% + $% + \UseTaggingSocket{math/luamml/mtable/finalizecol}{last}% + \hfill % Why not \hfil?---dmj, 1994/12/28 + \crcr +} +\def\lendsplit@{% + \global\setbox9\vtop{\unvcopy\z@}% + \ifinalign@ + \setbox\@ne\vbox{% + \unvcopy\z@ + \global\setbox8\lastbox + }% + \setbox\@ne\hbox{% + \unhcopy8% + \unskip + \setbox\tw@\lastbox + \unskip + \global\setbox\thr@@\lastbox + }% + \__math_split_debug_typeout:n{lendsplit@/aligncase} + \ifctagsplit@ + \__math_split_debug_typeout:n{lendsplit@/aligncase/centertags} + \gdef\split@{% + \hbox to\wd\thr@@{}% + &\vcenter{\vbox{\moveleft\wd\thr@@\box9}}% + \__math_split_debug_typeout:n{finalize~innertable~aligncase} + \UseTaggingSocket{math/luamml/mtable/innertable/finalize}% + }% + \else + %TODO, not correct yet. + \__math_split_debug_typeout:n{lendsplit@/aligncase/tbtags} + \gdef\split@{% + \hbox to\wd\thr@@{}% + &\vbox{\moveleft\wd\thr@@\box9}% + \__math_split_debug_typeout:n{finalize~innertable~aligncase} + \UseTaggingSocket{math/luamml/mtable/innertable/finalize}% + }% + \fi + \else + \ifctagsplit@ + \bool_if:NTF \l__math_gathersplit_bool + { + \__math_split_debug_typeout:n{lendsplit/equationcase/centertags} + \gdef\split@% + {\UseTaggingSocket{math/luamml/annotate/false}{}{\vcenter{\box9}}} + } + { + \__math_split_debug_typeout:n {lendsplit/gathercase/centertags} + \gdef\split@{\vcenter{\box9}% + \__math_split_debug_typeout:n {finalize~innertable~gathercase} + \UseTaggingSocket{math/luamml/mtable/innertable/finalize}} + } + \else + % TODO tbtags not correct yet. + \bool_if:NTF \l__math_gathersplit_bool + { + \__math_split_debug_typeout:n {lendsplit/equationcase/tbtags} + \gdef\split@% + {\UseTaggingSocket{math/luamml/annotate/false}{}{\box9}} + } + { + \__math_split_debug_typeout:n {lendsplit/gathercase/tbtags} + \gdef\split@{ + \box9% + \__math_split_debug_typeout:n {finalize~innertable~gathercase} + \UseTaggingSocket{math/luamml/mtable/innertable/finalize}} + } + \fi + \fi + \aftergroup\split@ +} +\def\rendsplit@{% + \ifinalign@ + \global\setbox9 \vtop{% + \unvcopy\z@ + \global\setbox8 \lastbox + \unskip + }% + \setbox\@ne\hbox{% + \unhcopy8 + \unskip + \global\setbox\tw@\lastbox + \unskip + \global\setbox\thr@@\lastbox + }% + \ifctagsplit@ + \gdef\split@{% + \hbox to\wd\thr@@{} + &\vcenter{\vbox{\moveleft\wd\thr@@\boxz@}}% + \__math_split_debug_typeout:n {rendsplit/aligncase/centertags} + \__math_split_debug_typeout:n {finalize~innertable~aligncase} + \UseTaggingSocket{math/luamml/mtable/innertable/finalize} + }% + \else + \__math_split_debug_typeout:n{rendsplit@/aligncase/tbtags} + %TODO tbtags is not correct yet + \global\setbox7 \hbox{\unhbox\tw@\unskip}% + \gdef\split@{% + \global\@tempcnta\column@ + &\setboxz@h{}% + \savetaglength@ + \global\advance\row@\@ne + \vbox{\moveleft\wd\thr@@\box9}% + \crcr + \noalign{\global\lineht@\z@}% + \add@amps\@tempcnta + \UseTaggingSocket{math/luamml/annotate/false}{}{\box\thr@@} + &\box7 + \__math_split_debug_typeout:n {finalize~innertable~aligncase} + \UseTaggingSocket{math/luamml/mtable/innertable/finalize}% + }% + \fi + \else + \ifctagsplit@ + \bool_if:NTF \l__math_gathersplit_bool + { + \__math_split_debug_typeout:n {rendsplit/equationcase/centertags} + \gdef\split@% + {\UseTaggingSocket{math/luamml/annotate/false}{}{\vcenter{\boxz@}}} + } + { + \__math_split_debug_typeout:n {rendsplit/gathercase/centertags} + \gdef\split@{\vcenter{\boxz@}% + \__math_split_debug_typeout:n {finalize~innertable~gathercase} + \UseTaggingSocket{math/luamml/mtable/innertable/finalize}} + } + \else + \bool_if:NTF \l__math_gathersplit_bool + { + \__math_split_debug_typeout:n {rendsplit/equationcase/tbtags} + \gdef\split@{% + \UseTaggingSocket{math/luamml/annotate/false}{}{\boxz@}} + } + { + \__math_split_debug_typeout:n {rendsplit/gathercase/tbtags} + \gdef\split@{% + \boxz@ + \UseTaggingSocket{math/luamml/mtable/innertable/finalize}} + } + \fi + \fi + \aftergroup\split@ +} +\def\intertext@{% + \def\intertext##1{% + \ifvmode\else\\\@empty\fi + \noalign{% + \penalty\postdisplaypenalty\vskip-\belowdisplayskip + \vbox{ + \ifmeasuring@\tag_suspend:n{\measuring}\fi + \normalbaselines + \ifdim\linewidth=\columnwidth + \else \parshape\@ne \@totalleftmargin \linewidth + \fi + \tag_mc_end_push: + \tagpdfsetup{para/tag=P}% + \tagpdfparaOn + \noindent\ignorespaces##1\par + \tag_mc_begin_pop:n{}}% + \penalty\predisplaypenalty\vskip\abovedisplayskip% + }% +}} \AddToHook{package/amstext/after} { \tag_if_active:T { \sys_if_engine_luatex:TF { - \def\text@#1{{% + \def\text@#1{ + \tag_socket_use:nnn {math/luamml/hbox}{} + {{% \ifcase\mathstyle \hbox{{#1}}\or \hbox{{#1}}\or @@ -78,7 +718,7 @@ \ERROR \fi \check@mathfonts - }} + }}} } { \def\text@#1 @@ -109,25 +749,25 @@ } \AddToHook{package/amsbsy/after} { - \def\pmb@@#1#2#3{\leavevmode\hbox_set:Nn\l__math_tmpa_box{xxx#3} - \dimen@-\box_wd:N\l__math_tmpa_box - \kern-.5\ex@\box_use:N\l__math_tmpa_box + \def\pmb@@#1#2#3{\leavevmode\hbox_set:Nn\l_@@_tmpa_box{xxx#3} + \dimen@-\box_wd:N\l_@@_tmpa_box + \kern-.5\ex@\box_use:N\l_@@_tmpa_box \tag_mc_end:\tag_mc_begin:n{artifact} - \tag_mc_reset_box:N\l__math_tmpa_box - \kern\dimen@\kern.25\ex@\raise.4\ex@\box_use:N\l__math_tmpa_box - \kern\dimen@\kern.25\ex@\box_use_drop:N\l__math_tmpa_box + \tag_mc_reset_box:N\l_@@_tmpa_box + \kern\dimen@\kern.25\ex@\raise.4\ex@\box_use:N\l_@@_tmpa_box + \kern\dimen@\kern.25\ex@\box_use_drop:N\l_@@_tmpa_box \tag_mc_end:\tag_mc_begin:n{} } - \def\pmb@#1#2{\hbox_set:Nn\l__math_tmpa_box{$\m@th#1{#2}$} + \def\pmb@#1#2{\hbox_set:Nn\l_@@_tmpa_box{$\m@th#1{#2}$} \setboxz@h{$\m@th#1\mkern.5mu$}\pmbraise@\wdz@ \binrel@{#2} - \dimen@-\box_wd:N\l__math_tmpa_box + \dimen@-\box_wd:N\l_@@_tmpa_box \binrel@@{ - \mkern-.8mu\box_use:N\l__math_tmpa_box + \mkern-.8mu\box_use:N\l_@@_tmpa_box \tag_mc_end:\tag_mc_begin:n{artifact} - \tag_mc_reset_box:N\l__math_tmpa_box - \kern\dimen@\mkern.4mu\raise\pmbraise@\box_use:N\l__math_tmpa_box - \kern\dimen@\mkern.4mu\box_use_drop:N\l__math_tmpa_box + \tag_mc_reset_box:N\l_@@_tmpa_box + \kern\dimen@\mkern.4mu\raise\pmbraise@\box_use:N\l_@@_tmpa_box + \kern\dimen@\mkern.4mu\box_use_drop:N\l_@@_tmpa_box \tag_mc_end:\tag_mc_begin:n{} } } diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-footmisc.ltx b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-footmisc.ltx index 3fb53a3934a..34a8969084b 100644 --- a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-footmisc.ltx +++ b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-footmisc.ltx @@ -8,7 +8,7 @@ %% %% This is a generated file. %% -%% Copyright 2021-2023 LaTeX Project +%% Copyright 2021-2025 LaTeX Project %% %% This file was generated from file(s) of the `LaTeX-lab Bundle'. %% ------------------------------------------------------------------------------------ @@ -33,8 +33,8 @@ %% %% %% File: latex-lab-footnotes.dtx -\def\ltlabfootnotedate{2024-09-30} -\def\ltlabfootnoteversion{0.8g} +\def\ltlabfootnotedate{2025-02-20} +\def\ltlabfootnoteversion{0.8k} %% %% Copyright (c) 1995-2011 Robin Fairbairns @@ -60,7 +60,7 @@ \DeclareRelease{v5}{2011-06-06}{footmisc-2011-06-06.sty} \DeclareCurrentRelease{}{2022-02-14} \ProvidesPackage{latex-lab-footmisc}% - [2022/03/08 v6.0d + [2025/02/20 v6.0e a miscellany of footnote facilities -- latex-lab version% ] @@ -167,10 +167,10 @@ \DeclareOption{multiple}{\FN@multiplefootnotetrue} \ProcessOptions \ifFN@para - \NewSocketPlug{@makecol/footnotes}{para}{% + \NewSocketPlug{build/column/footnotes}{para}{% \global\setbox\footins\vbox{\FN@makefootnoteparagraph}% } - \AssignSocketPlug{@makecol/footnotes}{para} + \AssignSocketPlug{build/column/footnotes}{para} \fi \ifFN@fixskip \def\@outputbox@removebskip{% @@ -194,23 +194,23 @@ \fi \ifcase \FN@bottomcases\relax \ERROR -\or %1 +\or %1 bottom option \ifFN@abovefloats - \AssignSocketPlug {@makecol/outputbox}{space-footnotes-floats} + \AssignSocketPlug {build/column/outputbox}{space-footnotes-floats} \else - \AssignSocketPlug {@makecol/outputbox}{floats-footnotes-space} + \AssignSocketPlug {build/column/outputbox}{floats-space-footnotes} \fi -\or %2 +\or %2 bottomfloats \ifFN@abovefloats - \AssignSocketPlug {@makecol/outputbox}{footnotes-space-floats} + \AssignSocketPlug {build/column/outputbox}{footnotes-space-floats} \else - \AssignSocketPlug {@makecol/outputbox}{space-floats-footnotes} + \AssignSocketPlug {build/column/outputbox}{space-floats-footnotes} \fi -\or %3 +\or %3 neither bottom nor bottomfloats \ifFN@abovefloats - \AssignSocketPlug {@makecol/outputbox}{footnotes-floats} + \AssignSocketPlug {build/column/outputbox}{footnotes-floats} \else - \AssignSocketPlug {@makecol/outputbox}{floats-footnotes} + \AssignSocketPlug {build/column/outputbox}{floats-footnotes} \fi \else \ERROR diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-footnotes.ltx b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-footnotes.ltx index 85a3b2b32a7..5e2e1306f11 100644 --- a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-footnotes.ltx +++ b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-footnotes.ltx @@ -8,7 +8,7 @@ %% %% This is a generated file. %% -%% Copyright 2021-2023 LaTeX Project +%% Copyright 2021-2025 LaTeX Project %% %% This file was generated from file(s) of the `LaTeX-lab Bundle'. %% ------------------------------------------------------------------------------------ @@ -33,8 +33,8 @@ %% %% %% File: latex-lab-footnotes.dtx -\def\ltlabfootnotedate{2024-09-30} -\def\ltlabfootnoteversion{0.8g} +\def\ltlabfootnotedate{2025-02-20} +\def\ltlabfootnoteversion{0.8k} \ProvidesFile{latex-lab-footnotes.ltx} [\ltlabfootnotedate\space v\ltlabfootnoteversion\space @@ -157,7 +157,7 @@ \cs_new_eq:NN \__fnote_footnotemark_finish: \__fnote_footnotemark_default_finish: \NewSocket{tagsupport/fnmark}{1} \cs_set_eq:NN \@footnotemark \fnote_footnotemark: -\str_if_exist:cF { l__socket_tagsupport/para/restore_plug_str } +\socket_if_exist:nF {tagsupport/para/restore} { \NewSocket{tagsupport/para/restore}{0} \NewSocketPlug{tagsupport/para/restore}{default} diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-kernel-changes.sty b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-kernel-changes.sty index 762391f091f..e9d3c8acd1e 100644 --- a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-kernel-changes.sty +++ b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-kernel-changes.sty @@ -9,7 +9,7 @@ %% %% This is a generated file. %% -%% Copyright 2021-2023 LaTeX Project +%% Copyright 2021-2025 LaTeX Project %% %% This file was generated from file(s) of the `LaTeX-lab Bundle'. %% ------------------------------------------------------------------------------------ @@ -33,9 +33,9 @@ %% where one can also log issues in case there are any. %% %% -%% File: latex-lab-toc-kernel-changes.dtx (C) Copyright 2022-2024 LaTeX Project -\def\ltlabkerneldate{2024-07-11} -\def\ltlabkernelversion{0.85d} +%% File: latex-lab-toc-kernel-changes.dtx (C) Copyright 2022-2025 LaTeX Project +\def\ltlabkerneldate{2024-12-27} +\def\ltlabkernelversion{0.85e} \ProvidesPackage{latex-lab-kernel-changes} [\ltlabkerneldate\space v\ltlabkernelversion\space General kernel and class changes] @@ -66,9 +66,9 @@ } } \ExplSyntaxOff -%% File: latex-lab-sec.dtx (C) Copyright 2022-2024 LaTeX Project -\def\ltlabsecdate{2024-10-04} -\def\ltlabsecversion{0.84f} +%% File: latex-lab-sec.dtx (C) Copyright 2022-2025 LaTeX Project +\def\ltlabsecdate{2025-02-18} +\def\ltlabsecversion{0.84i} \ifdefined\directlua \ifnum\outputmode > 0 \pdfvariable gentounicode =1 diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-math.ltx b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-math.ltx index e76fcff474e..b57ea34becd 100644 --- a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-math.ltx +++ b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-math.ltx @@ -8,7 +8,7 @@ %% %% This is a generated file. %% -%% Copyright 2021-2023 LaTeX Project +%% Copyright 2021-2025 LaTeX Project %% %% This file was generated from file(s) of the `LaTeX-lab Bundle'. %% ------------------------------------------------------------------------------------ @@ -33,8 +33,9 @@ %% %% %% File: latex-lab-math.dtx -\def\ltlabmathdate{2024-11-26} -\def\ltlabmathversion{0.6j} + +\def\ltlabmathdate{2025-02-20} +\def\ltlabmathversion{0.6l} \ProvidesFile{latex-lab-math.ltx} [\ltlabmathdate\space v\ltlabmathversion\space @@ -115,7 +116,7 @@ { \iow_newline: - + \iow_newline: } \tl_new:N \l__math_mathml_write_before_tl @@ -168,103 +169,12 @@ } \sys_if_engine_luatex:TF { - \cs_new_protected:Npn \__math_correct_luamml_array_patches: - { - \AddToHook{package/array/after} - { - \cs_set:Npn \endarray - { - \tbl_crcr:n{endarray} - \__luamml_array_save_array: - \egroup - \UseTaggingSocket{tbl/finalize} - \tbl_restore_outer_cell_data: - \egroup - \mode_if_math:T { \__luamml_array_finalize_array: } - \@arrayright - \gdef \@preamble {} - } - \cs_set:Npn \@classz - { - \@classx - \@tempcnta \count@ - \prepnext@tok - \@addtopreamble { - \ifcase \@chnum - \hfil - \hskip 1sp - \d@llarbegin - \cs_if_eq:NNTF \d@llarbegin \begingroup { - \insert@column - \d@llarend - } { - \__luamml_array_init_col: - \insert@column - \luamml_flag_save:nn {} {mtd} - \d@llarend - \__luamml_array_finalize_col:w 0~ - } - \do@row@strut - \hfil - \or - \hskip 1sp - \d@llarbegin - \cs_if_eq:NNTF \d@llarbegin \begingroup { - \insert@column - \d@llarend - } { - \__luamml_array_init_col: - \insert@column - \luamml_flag_save:nn {} {mtd} - \d@llarend - \__luamml_array_finalize_col:w 1~ - } - \do@row@strut - \hfil - \or - \hfil - \hskip 1sp - \d@llarbegin - \cs_if_eq:NNTF \d@llarbegin \begingroup { - \insert@column - \d@llarend - } { - \__luamml_array_init_col: - \insert@column - \luamml_flag_save:nn {} {mtd} - \d@llarend - \__luamml_array_finalize_col:w 2~ - } - \do@row@strut - \or - \setbox \ar@mcellbox \vbox \@startpbox { \@nextchar } - \insert@pcolumn - \@endpbox - \ar@align@mcell - \do@row@strut - \or - \vtop \@startpbox { \@nextchar } - \insert@pcolumn - \@endpbox - \do@row@strut - \or - \vbox \@startpbox { \@nextchar } - \insert@pcolumn - \@endpbox - \do@row@strut - \fi - } - \prepnext@tok - } - } - } \AddToHook{begindocument/before} { \str_case:on \g__math_luamml_load_tl { { 1 } { \RequirePackage { luamml } - \__math_correct_luamml_array_patches: \AddToHook{begindocument/end} { \__math_luamml_activate_write: @@ -282,7 +192,6 @@ \@ifpackageloaded { unicode-math } { \RequirePackage { luamml } - \__math_correct_luamml_array_patches: \AddToHook{begindocument/end} { \__math_luamml_activate_write: @@ -295,7 +204,10 @@ } } { - \__math_provide_luamml_commands: + \AddToHook{begindocument/before} + { + \__math_provide_luamml_commands: + } } \msg_new:nnn { tag }{ luamml-status } { @@ -319,8 +231,6 @@ \bool_gset_true:N\g__tag_math_mathml_AF_bool \AssignSocketPlug{tagsupport/math/struct/begin}{mathml-AF} \AssignSocketPlug{tagsupport/math/struct/end}{mathml-AF} - \AssignSocketPlug{tagsupport/math/substruct/begin}{single} - \AssignSocketPlug{tagsupport/math/substruct/end}{single} \int_set:Nn \l__luamml_pretty_int { 7 } \RegisterFamilyMapping\symsymbols{oms} \RegisterFamilyMapping\symletters{oml} @@ -332,6 +242,9 @@ { \tl_if_empty:NF \l__math_mathml_write_before_tl { + \int_compare:nNnF + { \@math@level } = { 1 } + { \tl_put_right:Ne \l__math_content_hash_tl {-INNER} } \iow_now:Ne \g__math_luamml_iow { \l__math_mathml_write_before_tl @@ -408,7 +321,7 @@ \iow_now:Ne \g__math_writedummy_iow { \l__math_mathml_write_before_tl - + \c__math_mathml_write_after_tl } } @@ -470,8 +383,6 @@ \typeout{Info:~Activating~mathml~support} \AssignSocketPlug{tagsupport/math/struct/begin}{mathml-AF} \AssignSocketPlug{tagsupport/math/struct/end}{mathml-AF} - \AssignSocketPlug{tagsupport/math/substruct/begin}{single} - \AssignSocketPlug{tagsupport/math/substruct/end}{single} \AddToHook{enddocument/info} { \iow_term:n{MathML~statistic} @@ -532,10 +443,54 @@ \bool_set_true:N\l__tag_math_alt_bool } } -\socket_new:nn {tagsupport/math/inline/begin}{0} -\socket_new:nn {tagsupport/math/inline/end}{0} -\socket_new:nn {tagsupport/math/inline/formula/begin}{2} % -\socket_new:nn {tagsupport/math/inline/formula/end}{0} +\keys_define:nn {__tag / setup} + { + math/setup .code:n = + { + %deactivate loading of luamml + \tl_gset:Nn \g__math_luamml_load_tl{-1} + \keys_set:nn {__tag / setup} + { + %deactivate tex source AF + math/tex/AF = false, + %deactivate reading of mathml-AF + math/mathml/sources=, + math/mathml/AF=false, + %deactivate structelem + math/mathml/structelem=false, + %handle value + } + \clist_map_inline:nn { #1} + { + \keys_set:nn {__tag/ setup}{math/__setup/##1} + } + }, + math/__setup / mathml-SE .code:n = + { + \tl_gset:Nn \g__math_luamml_load_tl{1} + \keys_set:nn {__tag / setup} + { + math/mathml/structelem=true + } + }, + math/__setup / mathml-AF .code:n = + { + \tl_gset:Nn \g__math_luamml_load_tl{1} + \clist_put_right:Ne\l__tag_math_mathml_files_clist + {\c_sys_jobname_str-mathml,\c_sys_jobname_str-luamml-mathml} + \keys_set:nn {__tag / setup} + { + math/mathml/AF=true + } + }, + math/__setup / tex-AF .code:n = + { + \keys_set:nn {__tag / setup} + { + math/tex/AF =true + } + }, + } \socket_new_plug:nnn {tagsupport/math/inline/begin} {MC} @@ -551,8 +506,6 @@ \__math_luamml_structelem: \tag_socket_use:n{math/content} \tag_socket_use:n{math/struct/begin} - % inner formula if multiple parts (not really implemented yet) - \tag_socket_use:n{math/substruct/begin} #2 \tag_socket_use:n{math/end} } @@ -560,13 +513,8 @@ {tagsupport/math/inline/formula/end} {default} { - \socket_use:n{tagsupport/math/substruct/end} \socket_use:n{tagsupport/math/struct/end} } -\socket_new:nn {tagsupport/math/display/begin}{0} -\socket_new:nn {tagsupport/math/display/end}{0} -\socket_new:nn {tagsupport/math/display/formula/begin}{2} % -\socket_new:nn {tagsupport/math/display/formula/end}{0} \socket_new_plug:nnn {tagsupport/math/display/begin} @@ -586,7 +534,6 @@ \__math_luamml_structelem: \tag_socket_use:n{math/content} \tag_socket_use:n{math/struct/begin} - \tag_socket_use:n{math/substruct/begin} #2 \tag_socket_use:n{math/end} } @@ -594,9 +541,26 @@ {tagsupport/math/display/formula/end} {default} { - \socket_use:n{tagsupport/math/substruct/end} \socket_use:n{tagsupport/math/struct/end} } +\socket_new_plug:nnn + {tagsupport/math/display/tag/begin} + {default} + { + \tag_mc_end: + \tag_struct_begin:n {tag=Lbl} + \tag_mc_begin:n {} + } +\socket_new_plug:nnn + {tagsupport/math/display/tag/end} + {default} + { + \tag_mc_end: + \tag_struct_end: + \tag_mc_begin:n{} + } +\socket_assign_plug:nn {tagsupport/math/display/tag/begin}{default} +\socket_assign_plug:nn {tagsupport/math/display/tag/end}{default} \tl_new:N\l__math_content_template_tl \tl_set:Nn \l__math_content_template_tl { @@ -685,11 +649,13 @@ actualtext = \l__math_content_actual_tl, alt = \l__math_content_alt_tl } + \typeout{====>grabbed~math=\meaning\g__math_grabbed_math_tl} + \tag_mc_begin:n{} } \socket_new_plug:nnn {tagsupport/math/struct/end} {default} - { \tag_struct_end: } + { \tag_mc_end: \tag_struct_end: } \socket_assign_plug:nn {tagsupport/math/struct/begin}{default} \socket_assign_plug:nn {tagsupport/math/struct/end}{default} @@ -749,43 +715,16 @@ title-o = \g__math_grabbed_env_tl, % alt = \l__math_content_alt_tl } + \typeout{====>grabbed~math=\meaning\g__math_grabbed_math_tl} + \tag_mc_begin:n{} } \socket_new_plug:nnn {tagsupport/math/struct/end} {mathml-AF} { + \tag_mc_end: \tag_struct_end: } -\socket_new:nn {tagsupport/math/substruct/begin}{0} -\socket_new:nn {tagsupport/math/substruct/end}{0} -\socket_new_plug:nnn - {tagsupport/math/substruct/begin} - {default} - { \grabaformulapartandstart } -\socket_new_plug:nnn - {tagsupport/math/substruct/end} - {default} - { - \tagmcend - \if@subformulas - \tagstructend - \fi - } -\socket_assign_plug:nn {tagsupport/math/substruct/begin}{default} -\socket_assign_plug:nn {tagsupport/math/substruct/end}{default} - -\socket_new_plug:nnn - {tagsupport/math/substruct/begin} - {single} - { - \typeout{====>subpart~splitting~deactivated} - \typeout{====>grabbed~math=\meaning\g__math_grabbed_math_tl} - \tag_mc_begin:n{} - } -\socket_new_plug:nnn - {tagsupport/math/substruct/end} - {single} - { \tag_mc_end:} \socket_new:nn {tagsupport/math/end}{0} \socket_assign_plug:nn {tagsupport/math/inline/begin}{MC} \socket_assign_plug:nn {tagsupport/math/inline/end}{MC} @@ -814,6 +753,8 @@ \cs_new_protected:Npn \__math_process_auxii:nn #1#2 { } \cs_new_protected:Npn \math_processor:n #1 { \cs_set_protected:Npn \__math_process_auxii:nn ##1##2 {#1} } +\cs_set_protected:Npn\MathCollectTrue{\bool_set_false:N \l__math_collected_bool} +\cs_set_protected:Npn\MathCollectFalse{\bool_set_true:N \l__math_collected_bool} \cs_new_protected:Npn \__math_grab_dollar:w { \__math_grab_dollar_delim:w } \cs_new_protected:Npn \__math_grab_dollar:n #1 { @@ -857,10 +798,12 @@ \l__math_tmpa_skip \lastskip \tag_socket_use:n{math/display/formula/end} \nobreak - \skip_vertical:n { -\l__math_tmpa_skip } % remove the negative belowdisplayskip + \skip_vertical:n { -\l__math_tmpa_skip } \penalty \postdisplaypenalty \skip_vertical:n { -\l__math_tmpa_skip } % insert the correct skip - \@doendpe % this has no \end{...} to take care of it + \skip_vertical:n { -\tex_parskip:D } + \@domathendpetrue + \@doendpe % this has no \end{...} to take care of it } \cs_new_protected:Npn \__math_grab_inline:w % \( @@ -992,7 +935,6 @@ { } } - \cs_new_protected:Npn \math_register_halign_env:nn #1#2 { \tl_set:Nn \l__math_env_name_tl {#1} @@ -1051,7 +993,6 @@ } } - \cs_new:Npn \@kernel@math@registered@begin { \mode_if_vertical:TF { @@ -1149,19 +1090,10 @@ \math_register_env:n { eqnarray } \math_register_env:n { eqnarray* } \RequirePackage{array} -\tl_if_in:NnT\@tabular{$} +\tl_if_exist:NT\@kernel@tabular@init { - \def\@tabular{% - \leavevmode - \UseTaggingSocket{tbl/hmode/begin}% - \hbox \bgroup - \bool_set_true:N \l__math_collected_bool - $ - \bool_set_false:N \l__math_collected_bool - \col@sep\tabcolsep \let\d@llarbegin\begingroup - \let\d@llarend\endgroup - \cs_set_protected:Npn \__math_grab_dollar:w { \__math_grab_dollar_loop: } - \@tabarray} + \tl_put_right:Nn\@kernel@tabular@init + {\cs_set_protected:Npn \__math_grab_dollar:w { \__math_grab_dollar_loop: }} } \cs_new_eq:NN \__math_m@th: \m@th \cs_gset_protected:Npn \m@th @@ -1169,6 +1101,25 @@ \bool_set_true:N \l__math_collected_bool \__math_m@th: } +\sys_if_engine_luatex:T + { + \def\mathpalette#1#2{% + \ifcase\mathstyle + #1\displaystyle{#2}\or + #1\displaystyle{#2}\or + #1\textstyle{#2}\or + #1\textstyle{#2}\or + #1\scriptstyle{#2}\or + #1\scriptstyle{#2}\or + #1\scriptscriptstyle{#2}\or + #1\scriptscriptstyle{#2} + \fi} + } +\def\mathsm@sh#1#2{% + \setbox\z@\hbox{$\m@th#1{#2} + \UseTaggingSocket{math/luamml/save/nNn}{{mathsmash} #1 {mpadded}} + $}% + \UseTaggingSocket{math/luamml/finsm@sh}{}{{}\finsm@sh}} \tl_gput_right:Nn\@kernel@before@begindocument { \bool_set_true:N\l__math_collected_bool @@ -1177,259 +1128,6 @@ { \bool_set_false:N\l__math_collected_bool } - -\tl_gput_right:Nn \@kernel@before@begindocument { -\renewenvironment{gather*}{% - \start@gather\st@rredtrue -} -{% - % \endgather - \math@cr \black@\totwidth@ \egroup - $$\ignorespacesafterend -} -\def\common@align@ending { - \math@cr \black@\totwidth@ - \egroup - \ifingather@ - \restorealignstate@ - \egroup - \nonumber - \ifnum0=`{\fi\iffalse}\fi - \else - $$% - \fi - \ignorespacesafterend -} -\renewenvironment{alignat}{% - \start@align\z@\st@rredfalse -}{% - \common@align@ending -} -\renewenvironment{alignat*}{% - \start@align\z@\st@rredtrue -}{% - \common@align@ending -} -\renewenvironment{xalignat}{% - \start@align\@ne\st@rredfalse -}{% - \common@align@ending -} -\renewenvironment{xalignat*}{% - \start@align\@ne\st@rredtrue -}{% - \common@align@ending -} -\renewenvironment{xxalignat}{% - \start@align\tw@\st@rredtrue -}{% - \common@align@ending -} -\renewenvironment{align}{% - \start@align\@ne\st@rredfalse\m@ne -}{% - \common@align@ending -} -\renewenvironment{align*}{% - \start@align\@ne\st@rredtrue\m@ne -}{% - \common@align@ending -} -\renewenvironment{flalign}{% - \start@align\tw@\st@rredfalse\m@ne -}{% - \common@align@ending -} -\renewenvironment{flalign*}{% - \start@align\tw@\st@rredtrue\m@ne -}{% - \common@align@ending -} -\renewenvironment{multline*}{\start@multline\st@rredtrue} -{% - \iftagsleft@ \@xp\lendmultline@ \else \@xp\rendmultline@ \fi - \ignorespacesafterend -} -\def\measuring@true{\let\ifmeasuring@\iftrue\tag_suspend:n{\measuring}} - \math_register_halign_env:nn {align}{} - \math_register_halign_env:nn {align*}{} - \math_register_halign_env:nn {alignat}{} - \math_register_halign_env:nn {alignat*}{} - \math_register_halign_env:nn {flalign}{} - \math_register_halign_env:nn {flalign*}{} - \math_register_halign_env:nn {gather}{} - \math_register_halign_env:nn {gather*}{} - \math_register_halign_env:nn {multline}{} - \math_register_halign_env:nn {multline*}{} - \math_register_halign_env:nn {xalignat}{} - \math_register_halign_env:nn {xalignat*}{} - \math_register_halign_env:nn {xxalignat}{} - % - \@namedef{maketag @ @ @} #1{% - \ifmeasuring@ - \hbox{\m@th\normalfont#1}% - \else - \tagmcend \tagstructbegin{tag=Lbl}% - \tagmcbegin{tag=Lbl}% - \hbox{\m@th\normalfont#1}% - \tagmcend \tagstructend \tagmcbegin{}% - \fi - } -\@namedef{math@cr @ @ @ gather}{% - \ifst@rred\nonumber\fi - &\relax - \make@display@tag - \maybestartnewformulatag - \ifst@rred\else\global\@eqnswtrue\fi - \global\advance\row@\@ne - \cr -} -\@namedef{math@cr @ @ @ align}{% - \ifst@rred\nonumber\fi - \if@eqnsw \global\tag@true \fi - \global\advance\row@\@ne - \add@amps\maxfields@ - \omit - \kern-\alignsep@ - \iftag@ - \setboxz@h{\@lign\strut@{\make@display@tag}}% - \place@tag - \fi - \maybestartnewformulatag - \ifst@rred\else\global\@eqnswtrue\fi - \global\lineht@\z@ - \cr -} -\def\restore@math@cr{\@namedef{math@cr @ @ @}{ - \maybestartnewformulatag - \cr}} -\restore@math@cr -} - -\cs_new:Npn \__math_split_at_nl:NN #1#2 { - \tl_set:Nf \l__math_tmpa_tl { - \exp_after:wN \__math_split_at_nl_first:w #1 \\ \q_nil \\ \s_stop } - \exp_after:wN \__math_split_at_nl_aux:nnNN \l__math_tmpa_tl #1 #2 -} -\cs_new:Npn \__math_split_at_nl_first:w #1 \\ #2 \\ #3 \s_stop - { - \quark_if_nil:nTF {#2} - { {#1} { } } - { - \__math_split_chk_if_begin:ww #1 \begin \q_nil \s_mark - #2 \\ #3 \s_stop - } - } - -\cs_new_protected:Npn \__math_split_at_nl_aux:nnNN #1 #2 #3 #4 - { - \tl_gset:Nn #4 {#1} - \tl_gset:Nn #3 {#2} - } - -\cs_new:Npn \__math_split_chk_if_begin:ww - #1 \begin #2 #3 \s_mark #4 \\ \q_nil \\ \s_stop - { - \quark_if_nil:nTF {#2} - { {#1} {#4} } - { - \exp_after:wN \__math_split_collect_one_end:w - \__math_split_cleanup_begin_q_nil:w #1 \begin{#2} #3 \\ #4 \s_stop - { } { 1 } - } - } - -\cs_new:Npn \__math_split_cleanup_begin_q_nil:w #1 \begin \q_nil {#1} - -\cs_new:Npn \__math_split_collect_one_end:w #1 \end #2 #3 \s_stop #4 #5 - { - \exp_args:Nf \__math_split_check_count_begins:nnnn - { \__math_split_count_begins:n { #4 #1 } } {#5} - { #4 #1 \end{#2} } {#3} - } -\cs_new:Npn \__math_split_count_begins:n #1 - { \int_eval:n { 0 \__math_split_count_begins:w #1 \begin \q_nil } } - -\cs_new:Npn \__math_split_count_begins:w #1 \begin #2 - { \quark_if_nil:nF {#2} { +1 \__math_split_count_begins:w } } - -\cs_new:Npn \__math_split_check_count_begins:nnnn #1 #2 #3 #4 - { - \int_compare:nNnTF {#1} = {#2} - { - \exp_last_unbraced:Nf \__math_split_final_cleanup:nn - { \__math_split:n { \__math_split_guard:n {#3} #4 } } - } - { - \exp_args:No \use_ii_i:nn - { \exp_after:wN { \int_value:w \int_eval:n { #2 + 1 } } } - { \__math_split_collect_one_end:w #4 \s_stop {#3} } - } - } -\cs_new:Npn \__math_split_final_cleanup:nn #1 #2 - { - \exp:w \__math_split_final_cleanup:w #1 - \__math_split_guard:n \q_nil \s_mark { } - {#2} - } -\cs_new:Npn \__math_split_final_cleanup:w #1 \__math_split_guard:n #2 #3 \s_mark #4 - { - \quark_if_nil:nTF {#2} - { \exp_end: { #4 #1 } } - { \__math_split_final_cleanup:w #3 \s_mark { #4 #1 #2 } } - } - -\cs_new:Npn \__math_split:n #1 { - \__math_split_at_nl_first:w #1 \\ \q_nil \\ \s_stop } - - -\newif\if@subformulas -\tl_new:N \result - -\cs_new_protected:Npn\grabaformulapartandstart { - \__math_split_at_nl:NN \g__math_grabbed_math_tl \result - \typeout{====>first-result=\meaning\result} - \typeout{====>first-tmpmathcontent=\meaning\g__math_grabbed_math_tl} - \tl_if_empty:NTF \g__math_grabbed_math_tl - { - \typeout{====>formula~ has~ no~ subparts} - \global\@subformulasfalse - } - { - \typeout{====>formula~ has~ subparts} - \global\@subformulastrue - \edef\resulttitle{\g__math_grabbed_env_tl\space (part)} - \tagstructbegin{tag=Formula, - alt = subformula, - title-o=\resulttitle - } - } - \tagmcbegin{} -} - -\cs_new_protected:Npn\grabaformulapartandmayberestart { - \__math_split_at_nl:NN \g__math_grabbed_math_tl \result - \typeout{====>result=\meaning\result} - \typeout{====>tmpmathcontent=\meaning\g__math_grabbed_math_tl} - \edef\resulttitle{\g__math_grabbed_env_tl\space (part)} - \tagstructbegin{tag=Formula, - alt=\result, - title-o=\resulttitle - } - \tagmcbegin{} -} -\def\maybestartnewformulatag { -\if@subformulas - \ifmeasuring@\else - \tl_if_empty:NF \g__math_grabbed_math_tl - { - \tagmcend - \tagstructend - \grabaformulapartandmayberestart - } - \fi -\fi -} \ExplSyntaxOff \endinput %% diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-mathintent.ltx b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-mathintent.ltx new file mode 100644 index 00000000000..394d63c7b5d --- /dev/null +++ b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-mathintent.ltx @@ -0,0 +1,60 @@ +%% +%% This is file `latex-lab-mathintent.ltx', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% latex-lab-mathintent.dtx (with options: `kernel') +%% +%% This is a generated file. +%% +%% Copyright 2021-2025 LaTeX Project +%% +%% This file was generated from file(s) of the `LaTeX-lab Bundle'. +%% ------------------------------------------------------------------------------------ +%% +%% It may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either version 1.3c +%% of this license or (at your option) any later version. +%% The latest version of this license is in +%% http://www.latex-project.org/lppl.txt +%% and version 1.3c or later is part of all distributions of LaTeX +%% version 2008 or later. +%% +%% This file may only be distributed together with a copy of the LaTeX +%% `LaTeX-lab Bundle'. You may however distribute the `LaTeX-lab Bundle' +%% without such generated files. +%% +%% The newest sources can be found below +%% +%% https://github.com/latex3/latex2e/required/latex-lab +%% +%% where one can also log issues in case there are any. +%% +%% +%% File: latex-lab-mathintent.dtx +\ProvidesFile{latex-lab-mathintent.ltx} + [2025-01-17 v0.1a intent experiments] +\ExplSyntaxOn +\protected\def\invisibletimes{ +\if_cs_exist:N\luamml_annotate:en + \luamml_annotate:en { + core = {[0] = 'mo', intent="times","^^^^2062"}, +}{ + \latelua{} +} +\fi: +} +\protected\def\functionapplication{ +\if_cs_exist:N\luamml_annotate:en + \luamml_annotate:en { + core = {[0] = 'mo', intent="applied_to","^^^^2061"}, +}{ + \latelua{} +} +\fi: +} +\ExplSyntaxOff +\endinput +%% +%% End of file `latex-lab-mathintent.ltx'. diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-mathpkg.ltx b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-mathpkg.ltx index 71a110c602f..c033d6e3648 100644 --- a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-mathpkg.ltx +++ b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-mathpkg.ltx @@ -8,7 +8,7 @@ %% %% This is a generated file. %% -%% Copyright 2021-2023 LaTeX Project +%% Copyright 2021-2025 LaTeX Project %% %% This file was generated from file(s) of the `LaTeX-lab Bundle'. %% ------------------------------------------------------------------------------------ diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-mathtools.ltx b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-mathtools.ltx index ec0624be4d6..4fc9554672f 100644 --- a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-mathtools.ltx +++ b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-mathtools.ltx @@ -8,7 +8,7 @@ %% %% This is a generated file. %% -%% Copyright 2021-2023 LaTeX Project +%% Copyright 2021-2025 LaTeX Project %% %% This file was generated from file(s) of the `LaTeX-lab Bundle'. %% ------------------------------------------------------------------------------------ @@ -40,116 +40,141 @@ \RequirePackage{tagpdf-base} \ExplSyntaxOn \tl_new:N\l__math_mathtools_init_tl -\AddToHook{package/mathtools/after} - {% - \cs_if_eq:NNTF\intertext@ \MT_intertext: - { - \tl_set:Nn \l__math_mathtools_init_tl {\MT_orig_intertext_false:} - } - { - \tl_set:Nn \l__math_mathtools_init_tl {\MT_orig_intertext_true:} - } - \cs_if_eq:NNTF\shortintertext@ \MT_shortintertext:n - { - \tl_put_right:Nn \l__math_mathtools_init_tl - {\MT_orig_shortintertext_false:} - } - { - \tl_put_right:Nn \l__math_mathtools_init_tl - {\MT_orig_shortintertext_true:} - } - \def\MT_intertext: {% - \def\intertext##1{% - \ifvmode\else\\\@empty\fi - \noalign{% - \penalty\postdisplaypenalty\vskip-\belowdisplayskip - \vskip-\lineskiplimit % CCS - \vskip\normallineskiplimit % CCS - \vskip\l_MT_above_intertext_sep - \vbox{% - \ifmeasuring@\tag_suspend:n{\measuring}\fi - \normalbaselines - \ifdim - \ifdim\@totalleftmargin=\z@ - \linewidth - \else - -\maxdimen - \fi - =\columnwidth - \else \parshape\@ne \@totalleftmargin \linewidth - \fi - \tag_mc_end_push: - \tagpdfsetup{para/tag=Span} - \noindent\ignorespaces##1\par - \tag_mc_begin_pop:n{}}% - \penalty\predisplaypenalty\vskip\abovedisplayskip% - \vskip-\lineskiplimit % CCS - \vskip\normallineskiplimit % CCS - \vskip\l_MT_below_intertext_sep - }% - }% - \MH_let:NwN \shortintertext \shortintertext@ - } - \def\MT_orig_shortintertext:n #1{% - \ifvmode\else\\\@empty\fi - \noalign{% - \penalty\postdisplaypenalty\vskip\abovedisplayshortskip - \vbox{% - \ifmeasuring@\tag_suspend:n{\measuring}\fi - \normalbaselines - \MH_if_dim:w - \MH_if_dim:w \@totalleftmargin=\z@ - \linewidth - \MH_else: - -\maxdimen - \MH_fi: - =\columnwidth - \MH_else: - \parshape\@ne \@totalleftmargin \linewidth - \MH_fi: - \tag_mc_end_push: - \tagpdfsetup{para/tag=Span} - \tagpdfparaOn - \noindent\ignorespaces#1\par - \tag_mc_begin_pop:n{}} - \penalty\predisplaypenalty\vskip\abovedisplayshortskip% - }% - } - - \def\MT_shortintertext:n #1{% - \ifvmode\else\\\@empty\fi - \noalign{% - \penalty\postdisplaypenalty\vskip\abovedisplayshortskip - \vskip-\lineskiplimit - \vskip\normallineskiplimit - \vskip\l_MT_above_shortintertext_sep +\cs_if_eq:NNTF\intertext@ \MT_intertext: + { + \tl_set:Nn \l__math_mathtools_init_tl {\MT_orig_intertext_false:} + } + { + \tl_set:Nn \l__math_mathtools_init_tl {\MT_orig_intertext_true:} + } +\cs_if_eq:NNTF\shortintertext@ \MT_shortintertext:n + { + \tl_put_right:Nn \l__math_mathtools_init_tl + {\MT_orig_shortintertext_false:} + } + { + \tl_put_right:Nn \l__math_mathtools_init_tl + {\MT_orig_shortintertext_true:} + } +\def\MT_intertext: {% + \def\intertext##1{% + \ifvmode\else\\\@empty\fi + \noalign{% + \penalty\postdisplaypenalty\vskip-\belowdisplayskip + \vskip-\lineskiplimit % CCS + \vskip\normallineskiplimit % CCS + \vskip\l_MT_above_intertext_sep \vbox{% - \ifmeasuring@\tag_suspend:n{\measuring}\fi - \normalbaselines - \MH_if_dim:w - \MH_if_dim:w \@totalleftmargin=\z@ - \linewidth - \MH_else: - -\maxdimen - \MH_fi: - =\columnwidth - \MH_else: - \parshape\@ne \@totalleftmargin \linewidth - \MH_fi: - \tag_mc_end_push: - \tagpdfsetup{para/tag=P} - \tagpdfparaOn - \noindent\ignorespaces#1\par - \tag_mc_begin_pop:n{}}% - \penalty\predisplaypenalty\vskip\abovedisplayshortskip% - \vskip-\lineskiplimit - \vskip\normallineskiplimit - \vskip\l_MT_below_shortintertext_sep - }% - } - - \l__math_mathtools_init_tl + \ifmeasuring@\tag_suspend:n{\measuring}\fi + \normalbaselines + \ifdim + \ifdim\@totalleftmargin=\z@ + \linewidth + \else + -\maxdimen + \fi + =\columnwidth + \else \parshape\@ne \@totalleftmargin \linewidth + \fi + \tag_mc_end_push: + \tagpdfsetup{para/tag=Span} + \noindent\ignorespaces##1\par + \tag_mc_begin_pop:n{}}% + \penalty\predisplaypenalty\vskip\abovedisplayskip% + \vskip-\lineskiplimit % CCS + \vskip\normallineskiplimit % CCS + \vskip\l_MT_below_intertext_sep + }% + }% + \MH_let:NwN \shortintertext \shortintertext@ +} +\def\MT_orig_shortintertext:n #1{% + \ifvmode\else\\\@empty\fi + \noalign{% + \penalty\postdisplaypenalty\vskip\abovedisplayshortskip + \vbox{% + \ifmeasuring@\tag_suspend:n{\measuring}\fi + \normalbaselines + \MH_if_dim:w + \MH_if_dim:w \@totalleftmargin=\z@ + \linewidth + \MH_else: + -\maxdimen + \MH_fi: + =\columnwidth + \MH_else: + \parshape\@ne \@totalleftmargin \linewidth + \MH_fi: + \tag_mc_end_push: + \tagpdfsetup{para/tag=Span} + \tagpdfparaOn + \noindent\ignorespaces#1\par + \tag_mc_begin_pop:n{}} + \penalty\predisplaypenalty\vskip\abovedisplayshortskip% + }% } +\def\MT_shortintertext:n #1{% + \ifvmode\else\\\@empty\fi + \noalign{% + \penalty\postdisplaypenalty\vskip\abovedisplayshortskip + \vskip-\lineskiplimit + \vskip\normallineskiplimit + \vskip\l_MT_above_shortintertext_sep + \vbox{% + \ifmeasuring@\tag_suspend:n{\measuring}\fi + \normalbaselines + \MH_if_dim:w + \MH_if_dim:w \@totalleftmargin=\z@ + \linewidth + \MH_else: + -\maxdimen + \MH_fi: + =\columnwidth + \MH_else: + \parshape\@ne \@totalleftmargin \linewidth + \MH_fi: + \tag_mc_end_push: + \tagpdfsetup{para/tag=P} + \tagpdfparaOn + \noindent\ignorespaces#1\par + \tag_mc_begin_pop:n{}}% + \penalty\predisplaypenalty\vskip\abovedisplayshortskip% + \vskip-\lineskiplimit + \vskip\normallineskiplimit + \vskip\l_MT_below_shortintertext_sep + }% +} + \renewcommand*\MT_mult_internal:n [1]{ + \MH_if_boolean:nF {outer_mult}{\alignedspace@left} %<-- requires amsmath 2016/11/05 + \MT_next: + \bgroup + \Let@ + \def\l_MT_multline_lastline_fint{0 } + \chardef\dspbrk@context\@ne \restore@math@cr + \MH_let:NwN \math@cr__math\MT_mult_mathcr_atat:w + \MH_let:NwN \shoveleft\MT_shoveleft:wn + \MH_let:NwN \shoveright\MT_shoveright:wn + \spread@equation + \MH_set_boolean_F:n {mult_firstline} + \MT_measure_mult:n {#1} + \MH_if_dim:w \l_MT_multwidth_dim<\l_MT_multline_measure_fdim + \MH_setlength:dn \l_MT_multwidth_dim{\l_MT_multline_measure_fdim} + \fi + \MH_set_boolean_T:n {mult_firstline} + \MH_if_num:w \l_MT_multline_lastline_fint=\@ne + \MH_let:NwN \math@cr__math \MT_mult_firstandlast_mathcr:w + \MH_fi: + \ialign\bgroup + \hfil\strut@$\m@th\displaystyle{}## + \UseTaggingSocket{math/luamml/save/nNn}{ {} \displaystyle {mtd}} + $ + \UseTaggingSocket{math/luamml/mtable/finalizecol}{last} + \hfil + \crcr + \hfilneg + #1 + } + \l__math_mathtools_init_tl \ExplSyntaxOff \endinput %% diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-bib.sty b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-bib.sty index 49f0207bc39..60a1c0a2ab3 100644 --- a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-bib.sty +++ b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-bib.sty @@ -8,7 +8,7 @@ %% %% This is a generated file. %% -%% Copyright 2021-2023 LaTeX Project +%% Copyright 2021-2025 LaTeX Project %% %% This file was generated from file(s) of the `LaTeX-lab Bundle'. %% ------------------------------------------------------------------------------------ diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-block.sty b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-block.sty index e3b4f050f3e..dcfaf9fec48 100644 --- a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-block.sty +++ b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-block.sty @@ -8,7 +8,7 @@ %% %% This is a generated file. %% -%% Copyright 2021-2023 LaTeX Project +%% Copyright 2021-2025 LaTeX Project %% %% This file was generated from file(s) of the `LaTeX-lab Bundle'. %% ------------------------------------------------------------------------------------ @@ -32,9 +32,10 @@ %% where one can also log issues in case there are any. %% %% -%% File: latex-lab-block.dtx (C) Copyright 2021-2024 LaTeX Project -\def\ltlabblockdate{2024-11-25} -\def\ltlabblockversion{0.8w} +%% File: latex-lab-block.dtx (C) Copyright 2021-2025 LaTeX Project +\def\ltlabblockdate{2025-01-20} +\def\ltlabblockversion{0.9a} + \ProvidesPackage {latex-lab-testphase-block} [\ltlabblockdate\space v\ltlabblockversion\space blockenv implementation] @@ -43,6 +44,10 @@ \def\@doendpe{\@endpetrue \def\par { + \if@domathendpe + \skip_vertical:n { \tex_parskip:D } + \@domathendpefalse + \fi \@restorepar \clubpenalty\@clubpenalty \__kernel_displayblock_doendpe: @@ -53,9 +58,13 @@ \everypar{{\setbox\z@\lastbox} \everypar{} \@endpefalse + \@domathendpefalse } } \cs_new_eq:NN \__kernel_displayblock_doendpe: \prg_do_nothing: +\newif\if@domathendpe +\def\@domathendpefalse{\global\let\if@domathendpe\iffalse} +\def\@domathendpetrue {\global\let\if@domathendpe\iftrue} \NewTemplateType{blockenv}{1} \NewTemplateType{block}{1} \NewTemplateType{para}{1} @@ -182,7 +191,7 @@ } { \__block_debug_typeout:n{\l__block_env_name_tl -env-start} - \tl_if_empty:nF {#1} { \SetTemplateKeys{blockenv}{display}{#1} } + \SetKnownTemplateKeys{blockenv}{display}{#1} % \begin{macrocode} \int_compare:nNnTF \l__tag_block_flattened_level_int > 0 { @@ -223,7 +232,8 @@ \UseInstance{block} { \l__block_block_instance_tl - \int_use:N \g_block_nesting_depth_int } - {#1} + \UnusedTemplateKeys + \tl_set_eq:NN \l__block_unused_blockenv_keys_tl \UnusedTemplateKeys \tl_if_empty:NF \l__block_para_instance_tl { \__block_debug_typeout:n{ use~ para~ instance:~ @@ -241,10 +251,16 @@ % not clean use "o"? { - \int_use:N \l__block_inner_level_counter_tl } } - {#1} + \l__block_unused_blockenv_keys_tl + \tl_set_eq:NN \l__block_unused_blockenv_keys_tl \UnusedTemplateKeys + } + \tl_if_empty:NF \l__block_unused_blockenv_keys_tl + { + % check if only item template keys remain } \l__block_final_code_tl } +\tl_new:N \l__block_unused_blockenv_keys_tl \int_if_exist:NF \l__tag_block_flattened_level_int { \int_new:N \l__tag_block_flattened_level_int @@ -303,7 +319,7 @@ para-class = \l__tag_para_attr_class_tl , } { - \tl_if_empty:nF {#1} { \SetTemplateKeys{para}{std}{#1} } + \SetTemplateKeys{para}{std}{#1} \skip_set:Nn \@rightskip \rightskip } \DeclareTemplateCode{block}{display}{1} @@ -322,7 +338,7 @@ parindent = \l__block_parindent_dim , } { - \tl_if_empty:nF {#1} { \SetTemplateKeys{block}{display}{#1} } + \SetKnownTemplateKeys{block}{display}{#1} \tl_if_blank:oF \l__block_heading_tl { \mode_leave_vertical: \textbf{\l__block_heading_tl} } % TODO customize @@ -437,12 +453,23 @@ } { \__block_debug_typeout:n{template:list:std} - \tl_if_empty:nTF {#1} + \tl_if_empty:oTF {#1} { \cs_set_eq:NN \__block_evaluate_saved_user_keys:nn \use_none:nn } { - \SetTemplateKeys{list}{std}{#1} + \SetKnownTemplateKeys{list}{std}{#1} \cs_set:Npe \__block_evaluate_saved_user_keys:nn ##1##2 - { \SetTemplateKeys{##1}{##2}{ \exp_not:n{#1} } } + { \SetKnownTemplateKeys{##1}{##2}{ + \exp_not:o { \UnusedTemplateKeys } + } + \exp_not:n { + \tl_if_empty:NF \UnusedTemplateKeys + { + \msg_error:nnee { block } { unknown-keys } + { \l__block_env_name_tl \space environment} + \UnusedTemplateKeys + } + } + } } \tl_if_empty:NTF \l__block_counter_tl { @@ -472,6 +499,15 @@ \cs_set_eq:NN \__block_item_everypar: \__block_item_everypar_first: \__block_debug_typeout:n{template:list:std~end} } +\msg_new:nnnn { block } { unknown-keys } + { Some~ keys~ specified~ on~ the~ #1~ are~ unknown. } + { + The~ following~ keys~ are~ unknown~ and~ their~ + values~ are~ ignored:\\ + \space\space #2\\ + Perhaps~ a~ misspelling~ or~ the~ current~ template~ + instance~ uses~ special~ keys. + } \keys_define:nn { template/list/std } { ,nosep .code:n = @@ -507,7 +543,14 @@ \__block_debug_typeout:n{template:item:std} \tl_set_eq:NN \l__block_label_given_tl \c_novalue_tl \__block_evaluate_saved_user_keys:nn {item}{std} - \tl_if_empty:nF{#1}{ \SetTemplateKeys{item}{std}{#1} } + % \begin{macrocode} + \SetKnownTemplateKeys{item}{std}{#1} + \tl_if_empty:NF \UnusedTemplateKeys + { + \msg_error:nnee { block } { unknown-keys } + { \noexpand\item command } + \UnusedTemplateKeys + } \tl_if_novalue:oTF \l__block_label_given_tl { \tl_if_blank:oF \@listctr { \@kernel@refstepcounter \@listctr } @@ -1021,8 +1064,7 @@ \let\do\@makeother \dospecials \obeylines \verbatim@font \@noligs \everypar \expandafter{\the\everypar \unpenalty}% - \tl_set:Nn \l__tag_para_main_tag_tl {codeline} - \tagtool{paratag=Code}% oder faster: \tl_set:Nn\l__tag_para_tag_tl{Code} + \tl_set:Nn \l__tag_para_tag_tl {codeline} } \newcommand\@setupverbinvisiblespace{} \tag_if_active:T { @@ -1294,6 +1336,7 @@ tag-name = verbatim, tag-class = , tagging-recipe = standard, + para-flattened = true, inner-level-counter = , level-increase = false, setup-code = , diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-firstaid.sty b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-firstaid.sty index 465eaf84795..8dcdce9f4ff 100644 --- a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-firstaid.sty +++ b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-firstaid.sty @@ -8,7 +8,7 @@ %% %% This is a generated file. %% -%% Copyright 2021-2023 LaTeX Project +%% Copyright 2021-2025 LaTeX Project %% %% This file was generated from file(s) of the `LaTeX-lab Bundle'. %% ------------------------------------------------------------------------------------ @@ -32,8 +32,8 @@ %% where one can also log issues in case there are any. %% %% -%% File: latex-lab-firstaid.dtx (C) Copyright 2023-2024 LaTeX Project -\def\ltlabfirstaiddate{2024-11-23} +%% File: latex-lab-firstaid.dtx (C) Copyright 2023-2025 LaTeX Project +\def\ltlabfirstaiddate{2025-01-27} \def\ltlabfirstaidversion{0.85i} \ProvidesPackage {latex-lab-testphase-firstaid} [% \ltlabfirstaiddate\space v\ltlabfirstaiddate\space @@ -58,13 +58,36 @@ \AddToHook{class/amsproc/after} {\def\@author{\authors}} \AddToHook{class/amsart/after}[latex-lab-testphase-firstaid/amsthm] - {\tag_if_active:T{\__tag_firstaid_amsthm:}} + {\tag_if_active:T{\__tag_firstaid_amsthm:}\__tag_firstaid_ams_abstract:} \AddToHook{class/amsbook/after}[latex-lab-testphase-firstaid/amsthm] - {\tag_if_active:T{\__tag_firstaid_amsthm:}} + {\tag_if_active:T{\__tag_firstaid_amsthm:}\__tag_firstaid_ams_abstract:} \AddToHook{class/amsproc/after}[latex-lab-testphase-firstaid/amsthm] {\tag_if_active:T{\__tag_firstaid_amsthm:}} \AddToHook{package/amsthm/after}[latex-lab-testphase-firstaid/amsthm] {\tag_if_active:T{\__tag_firstaid_amsthm:}} +\cs_new_protected:Npn \__tag_firstaid_ams_abstract: + { +\renewenvironment{abstract}{% + \ifx\maketitle\relax + \ClassWarning{\@classname}{Abstract~ should~ precede~ + \protect\maketitle\space in~ AMS~ document~ classes;~ reported}% + \fi + \global\setbox\abstractbox=\vtop \bgroup + \normalfont\Small + \list{}{\labelwidth\z@ + \leftmargin3pc \rightmargin\leftmargin + \listparindent\normalparindent \itemindent\z@ + \parsep\z@ \@plus\p@ + \let\fullwidthdisplay\relax + }% + \item[\hskip\labelsep\scshape\abstractname.]% +}{% + \endlist + \par % <--- added + \egroup + \ifx\@setabstract\relax \@setabstracta \fi +} + } \cs_new_protected:Npn \__tag_firstaid_amsthm: { \def\@endtheorem{\endblockenv} @@ -282,6 +305,7 @@ \hbox to \hsize{% \kern\leftmargin \hbox to \linewidth{% + \tag_struct_begin:n{tag=codeline} \cs_if_exist:NT \FV@LeftListNumber { \tag_struct_begin:n{tag=Lbl} @@ -296,7 +320,6 @@ \FV@LeftListFrame \tag_mc_end: } - \tag_struct_begin:n{tag=codeline} \tag_mc_begin:n{}% \FancyVerbFormatLine{#1}% \tag_mc_end: diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-float.sty b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-float.sty index 71d5e771574..4599f621a26 100644 --- a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-float.sty +++ b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-float.sty @@ -8,7 +8,7 @@ %% %% This is a generated file. %% -%% Copyright 2021-2023 LaTeX Project +%% Copyright 2021-2025 LaTeX Project %% %% This file was generated from file(s) of the `LaTeX-lab Bundle'. %% ------------------------------------------------------------------------------------ @@ -33,8 +33,8 @@ %% %% %% File: latex-lab-float.dtx (C) Copyright 2023 LaTeX Project -\def\ltlabfloatdate{2024-11-21} -\def\ltlabfloatversion{0.81g} +\def\ltlabfloatdate{2024-12-27} +\def\ltlabfloatversion{0.81h} \ProvidesExplPackage {latex-lab-testphase-float} {\ltlabfloatdate} {\ltlabfloatversion} {Code related to the tagging of floats} \prop_new:N \g__tag_float_sect_prop @@ -103,7 +103,7 @@ \MakeLinkTarget*{floatstructure.\@current@float@struct} } } -\str_if_exist:cF { l__socket_tagsupport/float/begin_plug_str } +\socket_if_exist:nF {tagsupport/float/begin} { \NewSocket{tagsupport/float/hmode/begin}{0} \NewSocket{tagsupport/float/hmode/end}{0} @@ -276,14 +276,14 @@ }% \ExplSyntaxOn \def\hyper@nopatch@caption{} -\str_if_exist:cF { l__socket_tagsupport/caption/begin_plug_str } +\socket_if_exist:nF {tagsupport/caption/begin} { \NewSocket{tagsupport/caption/begin}{1} \NewSocket{tagsupport/caption/end}{0} \NewSocket{tagsupport/caption/label/begin}{0} \NewSocket{tagsupport/caption/label/end}{0} } -\str_if_exist:cF { l__socket_tagsupport/para/begin_plug_str } +\socket_if_exist:nF {tagsupport/para/begin} { \NewSocket{tagsupport/para/begin}{0} \NewSocket{tagsupport/para/end}{0} diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-graphic.sty b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-graphic.sty index 942f2deeddf..391f242fcf0 100644 --- a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-graphic.sty +++ b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-graphic.sty @@ -8,7 +8,7 @@ %% %% This is a generated file. %% -%% Copyright 2021-2023 LaTeX Project +%% Copyright 2021-2025 LaTeX Project %% %% This file was generated from file(s) of the `LaTeX-lab Bundle'. %% ------------------------------------------------------------------------------------ @@ -32,7 +32,7 @@ %% where one can also log issues in case there are any. %% %% -%% File: latex-lab-graphic.dtx (C) Copyright 2022-2024 LaTeX Project +%% File: latex-lab-graphic.dtx (C) Copyright 2022-2025 LaTeX Project \def\ltlabgraphicdate{2024-09-18} \def\ltlabgraphicversion{0.80e} \ProvidesExplPackage {latex-lab-testphase-graphic} {\ltlabgraphicdate} {\ltlabgraphicversion} diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-marginpar.sty b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-marginpar.sty index 0f8001ce861..662a06bded4 100644 --- a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-marginpar.sty +++ b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-marginpar.sty @@ -8,7 +8,7 @@ %% %% This is a generated file. %% -%% Copyright 2021-2023 LaTeX Project +%% Copyright 2021-2025 LaTeX Project %% %% This file was generated from file(s) of the `LaTeX-lab Bundle'. %% ------------------------------------------------------------------------------------ @@ -34,14 +34,12 @@ %% %% File: latex-lab-marginpar.dtx %% -\def\ltlabmarginpardate{2024-09-18} -\def\ltlabmarginparversion{0.85d} +\def\ltlabmarginpardate{2025-02-21} +\def\ltlabmarginparversion{0.85e} \ProvidesExplPackage {latex-lab-testphase-marginpar} {\ltlabmarginpardate} {\ltlabmarginparversion} {Changes related to the tagging of the margin notes} \int_new:N \g__kernel_marginpar_int -\socket_new:nn {tagsupport/marginpar/begin}{0} -\socket_new:nn {tagsupport/marginpar/end}{0} \cs_new_protected:Npn\__tag_get_marginpar_parent_aux:nn #1 #2 { \str_if_eq:eeT{\use_ii:nn #1}{Part}{\seq_put_right:Nn\l__tag_tmpa_seq {#2}} diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-math.sty b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-math.sty index 592dca80c1b..4abdbc9a911 100644 --- a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-math.sty +++ b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-math.sty @@ -8,7 +8,7 @@ %% %% This is a generated file. %% -%% Copyright 2021-2023 LaTeX Project +%% Copyright 2021-2025 LaTeX Project %% %% This file was generated from file(s) of the `LaTeX-lab Bundle'. %% ------------------------------------------------------------------------------------ @@ -36,11 +36,13 @@ \ProvidesPackage{latex-lab-testphase-math} - [2023-07-20 v0.8a code related to the math tagging] + [2025-01-24 v0.8c code related to the math tagging] \input{latex-lab-math.ltx} -\input{latex-lab-amsmath.ltx} -\input{latex-lab-mathtools.ltx} +\AddToHook{package/amsmath/after}{\input{latex-lab-amsmath.ltx}} +\AddToHook{package/mathtools/after}{\input{latex-lab-mathtools.ltx}} \input{latex-lab-mathpkg.ltx} +\input{latex-lab-mathintent.ltx} +\AddToHook{package/unicode-math/after}{\input{latex-lab-unicode-math.ltx}} \endinput %% %% End of file `latex-lab-testphase-math.sty'. diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-minipage.sty b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-minipage.sty index a82944e5d10..d364a45814d 100644 --- a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-minipage.sty +++ b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-minipage.sty @@ -8,7 +8,7 @@ %% %% This is a generated file. %% -%% Copyright 2021-2023 LaTeX Project +%% Copyright 2021-2025 LaTeX Project %% %% This file was generated from file(s) of the `LaTeX-lab Bundle'. %% ------------------------------------------------------------------------------------ diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-new-or-1.sty b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-new-or-1.sty index 1a46498b353..d68f431f91b 100644 --- a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-new-or-1.sty +++ b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-new-or-1.sty @@ -8,7 +8,7 @@ %% %% This is a generated file. %% -%% Copyright 2021-2023 LaTeX Project +%% Copyright 2021-2025 LaTeX Project %% %% This file was generated from file(s) of the `LaTeX-lab Bundle'. %% ------------------------------------------------------------------------------------ @@ -32,64 +32,12 @@ %% where one can also log issues in case there are any. %% %% -%% File: latex-lab-new-or-1.dtx (C) Copyright 2020-2024 Frank Mittelbach -\def\ltlabneworIdate{2024-11-12} -\def\ltlabneworIversion{0.85b} +%% File: latex-lab-new-or-1.dtx (C) Copyright 2020-2025 Frank Mittelbach +\def\ltlabneworIdate{2025-02-11} +\def\ltlabneworIversion{0.85c} \ProvidesPackage{latex-lab-testphase-new-or-1} [\ltlabneworIdate\space v\ltlabneworIversion\space - Temporary output patches for tagging and better link support] -\RequirePackage{etoolbox} -\providecommand\@kernel@before@head{} -\providecommand\@kernel@before@foot{} -\providecommand\@kernel@after@head{} -\providecommand\@kernel@after@foot{} -\providecommand\@mult@ptagging@hook{}% should be replaced with a socket, eventually - -\patchcmd\@outputpage - {\vfil\color@hbox\normalcolor\hb@xt@\textwidth{\@thehead}\color@endbox} - {\vfil\@kernel@before@head\color@hbox\normalcolor\hb@xt@\textwidth{\@thehead}\color@endbox\@kernel@after@head} - {\typeout{Patching header in \string\@outputpage}}{\PATCHerror } - -\patchcmd\@outputpage - {\color@hbox\normalcolor\hb@xt@\textwidth{\@thefoot}\color@endbox} - {\@kernel@before@foot\color@hbox\normalcolor\hb@xt@\textwidth{\@thefoot}\color@endbox\@kernel@after@foot} - {\typeout{Patching footer in \string\@outputpage}}{\PATCHerror } -\providecommand\@kernel@before@footins{} -\providecommand\@kernel@tagsupport@@makecol{} - -\patchcmd\@makecol - {\vskip\skip\footins} - {\vskip\skip\footins\@kernel@before@footins} - {\typeout{Patching \string\@makecol\space for tagging}}{\PATCHerror } - -\patchcmd\@makecol - {\let\@elt\relax} - {\@kernel@tagsupport@@makecol\let\@elt\relax} - {\typeout{Patching \string\@makecol\space for tagging}}{\PATCHerror } - -\AddToHook{package/footmisc/after} - {% - \def\@makecol{% - \setbox\@outputbox \box\@cclv - \@outputbox@removebskip - \@kernel@tagsupport@@makecol - \let\@elt\relax - \xdef\@freelist{\@freelist\@midlist}% - \global \let \@midlist \@empty - \@makecol@appendblocks - \ifvbox\@kludgeins - \@makespecialcolbox - \else - \@makenormalcolbox - \fi - \global \maxdepth \@maxdepth} -} -\ExplSyntaxOn -\def\@kernel@before@head{\pdfannot_link_off:} -\def\@kernel@before@foot{\pdfannot_link_off:} -\def\@kernel@after@head {\pdfannot_link_on:} -\def\@kernel@after@foot {\pdfannot_link_on:} -\ExplSyntaxOff + Temporary output patches for tagging and better link support -- no longer active] \endinput %% %% End of file `latex-lab-testphase-new-or-1.sty'. diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-new-or-2.sty b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-new-or-2.sty index cb81b74c017..6b37bc654e5 100644 --- a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-new-or-2.sty +++ b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-new-or-2.sty @@ -8,7 +8,7 @@ %% %% This is a generated file. %% -%% Copyright 2021-2023 LaTeX Project +%% Copyright 2021-2025 LaTeX Project %% %% This file was generated from file(s) of the `LaTeX-lab Bundle'. %% ------------------------------------------------------------------------------------ @@ -33,179 +33,51 @@ %% %% %% File: latex-lab-new-or-2.dtx -\def\ltlabneworIIdate{2023-09-04} -\def\ltlabneworIIversion{0.85c} +\def\ltlabneworIIdate{2025-02-12} +\def\ltlabneworIIversion{0.86b} \ProvidesPackage{latex-lab-testphase-new-or-2} [\ltlabneworIIdate\space v\ltlabneworIIversion\space Changes to the output routine] -\def \@makecol {% - \setbox\@outputbox \box\@cclv - \@outputbox@removebskip - \@kernel@tagsupport@@makecol - \let\@elt\relax - \xdef\@freelist{\@freelist\@midlist}% - \global \let \@midlist \@empty - \UseSocket{@makecol/outputbox}% - \ifvbox\@kludgeins - \@make@specialcolbox - \else - \@make@normalcolbox - \fi - \global \maxdepth \@maxdepth -} -\newdimen\@outputbox@depth -\def \@make@normalcolbox {% - \setbox\@outputbox \vbox to\@colht {% - \@texttop - \@outputbox@depth \dp\@outputbox - \unvbox \@outputbox - \vskip -\@outputbox@depth - \@textbottom - }% -} -\def \@make@specialcolbox {% - \@outputbox@append {\vskip-\@outputbox@depth}% - \@tempdima \@colht - \ifdim \wd\@kludgeins>\z@ - \advance \@tempdima -\ht\@outputbox - \advance \@tempdima \pageshrink - \setbox\@outputbox \vbox to \@colht {% - \unvbox\@outputbox - \vskip \@tempdima - \@textbottom - }% - \else - \advance \@tempdima -\ht\@kludgeins - \setbox \@outputbox \vbox to \@colht {% - \vbox to \@tempdima {% - \unvbox\@outputbox - \@textbottom}% - \vss}% - \fi - {\setbox \@tempboxa \box \@kludgeins}% -} -\def\@outputbox@removebskip{% - \ifx\@textbottom\relax \else - \@outputbox@append{% - \@tempskipa\lastskip - \ifnum \gluestretchorder\@tempskipa>\z@ - \vskip-\@tempskipa - \xdef\@outputbox@reinsertbskip - {\noexpand\@outputbox@append{\vskip\the\@tempskipa}}% - \else - \global\let\@outputbox@reinsertbskip\relax - \fi - }% - \fi -} -\let\@outputbox@reinsertbskip\relax -\providecommand\@kernel@before@cclv{} -\providecommand\@kernel@before@footins{} -\def\@outputbox@append #1{% - \setbox\@outputbox \vbox {% - \boxmaxdepth \@maxdepth - \@outputbox@depth\dp\@outputbox % if needed in #1 - \unvbox \@outputbox - #1% - }% -} -\def\@outputbox@appendfootnotes {% - \ifvoid\footins \else - \@makecol@handlesplitfootnotes - \UseSocket{@makecol/footnotes}% - \@outputbox@append{% - \vskip \skip\footins - \@kernel@before@footins - \color@begingroup - \normalcolor - \footnoterule - \csname pdfcolfoot@current\endcsname - \unvbox \footins - \color@endgroup - }% - \fi -} -\let \@outputbox@attachfloats \@combinefloats -\def \@outputbox@attachtopfloats {% - \ifx \@toplist\@empty \else \@cflt \fi -} -\def \@outputbox@attachbottomfloats {% - \ifx \@botlist\@empty \else \@cflb \fi -} +\AssignSocketPlug {build/column/outputbox}{footnotes-floats} \def\@makecol@handlesplitfootnotes {% \ifnum\insertpenalties>\z@ \@makecol@splitfootnotemessagehook \fi } \let \@makecol@splitfootnotemessagehook \@empty -\NewSocket{@makecol/footnotes}{0} -\def\@if@flushbottom@TF{% - \ifx\@textbottom\relax - \expandafter\@firstoftwo - \else - \expandafter\@secondoftwo - \fi -} -\def\@if@footnotes@TF{% - \ifvoid\footins - \expandafter\@secondoftwo - \else - \expandafter\@firstoftwo - \fi -} -\def\@if@bfloats@TF{% - \ifx \@botlist\@empty - \expandafter\@secondoftwo - \else - \expandafter\@firstoftwo - \fi -} -\NewSocket{@makecol/outputbox}{0} -\NewSocketPlug {@makecol/outputbox}{space-footnotes-floats} {% - \@if@footnotes@TF - {\@outputbox@append{\vfill}}% - {\@if@bfloats@TF - {\@outputbox@append{\vfill}}% - {\@outputbox@reinsertbskip}% - }% - \@outputbox@appendfootnotes - \@outputbox@attachfloats -} -\NewSocketPlug {@makecol/outputbox}{floats-footnotes-space} {% - \@outputbox@attachfloats - \@if@footnotes@TF - {\@outputbox@append{\vfill}}% - {\@outputbox@reinsertbskip}% - \@outputbox@appendfootnotes -} -\NewSocketPlug {@makecol/outputbox}{footnotes-space-floats} {% - \@outputbox@appendfootnotes - \@if@bfloats@TF - {\@outputbox@append{\vfill}}% - {\@outputbox@reinsertbskip}% - \@outputbox@attachfloats -} -\NewSocketPlug {@makecol/outputbox}{space-floats-footnotes} {% - \@if@footnotes@TF - {\@outputbox@append{\vfill}}% - {\@if@bfloats@TF - {\@outputbox@append{\vfill}}% - {\@outputbox@reinsertbskip}}% - \@outputbox@attachfloats - \@outputbox@appendfootnotes -} -\NewSocketPlug {@makecol/outputbox}{floats-footnotes} {% - \@outputbox@attachfloats - \@outputbox@appendfootnotes - \@outputbox@reinsertbskip -} -\NewSocketPlug {@makecol/outputbox}{footnotes-floats} {% - \@outputbox@appendfootnotes - \@outputbox@attachfloats - \@outputbox@reinsertbskip -} -\AssignSocketPlug {@makecol/outputbox}{footnotes-floats} +\ExplSyntaxOn +\NewSocketPlug{tagsupport/build/page/header}{default} + { + \__tag_hook_kernel_before_head: + #2 + \__tag_hook_kernel_after_head: + } +\AssignSocketPlug{tagsupport/build/page/header}{default} + +\NewSocketPlug{tagsupport/build/page/footer}{default} + { + \__tag_hook_kernel_before_foot: + #2 + \__tag_hook_kernel_after_foot: + } +\AssignSocketPlug{tagsupport/build/page/footer}{default} + +\NewSocketPlug{tagsupport/build/column/outputbox}{default} + { + \__tag_check_typeout_v:n { ====>~In~\token_to_str:N \@makecol + \c_space_tl\the\c@page } + \tag_mc_add_missing_to_stream:Nn \@outputbox {main} + } +\NewSocketPlug{tagsupport/build/column/footins}{default} + { \tag_mc_add_missing_to_stream:Nn \footins {footnote} } +\sys_if_engine_luatex:F + { + \AssignSocketPlug{tagsupport/build/column/outputbox}{default} + \AssignSocketPlug{tagsupport/build/column/footins}{default} + } +\ExplSyntaxOff + \declare@file@substitution{footmisc.sty}{latex-lab-footmisc.ltx} \input{latex-lab-footnotes.ltx} \endinput diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-sec.sty b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-sec.sty index b0c5a1c2fd4..af840b4c42a 100644 --- a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-sec.sty +++ b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-sec.sty @@ -8,7 +8,7 @@ %% %% This is a generated file. %% -%% Copyright 2021-2023 LaTeX Project +%% Copyright 2021-2025 LaTeX Project %% %% This file was generated from file(s) of the `LaTeX-lab Bundle'. %% ------------------------------------------------------------------------------------ @@ -32,9 +32,9 @@ %% where one can also log issues in case there are any. %% %% -%% File: latex-lab-sec.dtx (C) Copyright 2022-2024 LaTeX Project -\def\ltlabsecdate{2024-10-04} -\def\ltlabsecversion{0.84f} +%% File: latex-lab-sec.dtx (C) Copyright 2022-2025 LaTeX Project +\def\ltlabsecdate{2025-02-18} +\def\ltlabsecversion{0.84i} \ProvidesExplPackage {latex-lab-testphase-sec} {\ltlabsecdate} {\ltlabsecversion} {Code related to the tagging of sectioning commands} \RequirePackage{latex-lab-kernel-changes} @@ -106,10 +106,10 @@ } \hook_gput_code:nnn{tagpdf/finish/before}{tagpdf/sec}{\__tag_sec_end:n{-10}} \hook_gset_rule:nnnn {tagpdf/finish/before}{tagpdf/sec}{before}{tagpdf} -\AddToHook{cmd/frontmatter/before}{\__tag_sec_end:n{-10}} -\AddToHook{cmd/mainmatter/before} {\__tag_sec_end:n{-10}} -\AddToHook{cmd/backmatter/before} {\__tag_sec_end:n{-10}} -\AddToHook{cmd/appendix/before} {\__tag_sec_end:n{-10}} +\AddToHook{cmd/frontmatter/before}{\par\__tag_sec_end:n{-10}} +\AddToHook{cmd/mainmatter/before} {\par\__tag_sec_end:n{-10}} +\AddToHook{cmd/backmatter/before} {\par\__tag_sec_end:n{-10}} +\AddToHook{cmd/appendix/before} {\par\__tag_sec_end:n{-10}} \cs_if_free:NT \tag_tool:n { \cs_new_protected:Npn \tag_tool:n #1 @@ -293,18 +293,19 @@ \@ifstar {\@ssect{#3}{#4}{#5}{#6}}% {\@dblarg{\@sect{#1}{#2}{#3}{#4}{#5}{#6}}}} +\RemoveFromHook{package/latex-lab-testphase-sec/after}[tagpdf] \cs_new_protected:Npn \@kernel@tag@hangfrom #1 { \tagstructbegin{tag=\l__tag_para_tag_tl} \cs_if_exist_use:N \__tag_gincr_para_begin_int: - \tagstructbegin{tag=Lbl} + \tagstructbegin{tag=section-number} \setbox\@tempboxa \hbox { \bool_lazy_and:nnT {\tag_if_active_p:} {\g__tag_mode_lua_bool} - {\tagmcbegin{tag=Lbl}} + {\tagmcbegin{tag=section-number}} {#1} } \tag_suspend:n{hangfrom} @@ -314,7 +315,7 @@ \cs_new_protected:Npn \@kernel@tag@svsec { \tag_mc_end_push: - \tag_struct_begin:n{tag=Lbl} + \tag_struct_begin:n{tag=section-number} \tag_mc_begin:n{} \@svsec \tag_mc_end: @@ -323,12 +324,12 @@ } \def\@sect#1#2#3#4#5#6[#7]#8{% \ifnum #2>\c@secnumdepth - \def\@svsec{\@hyp@section@target@nnn{[section]}{}{#3}} + \def\@svsec{\NoCaseChange{\@hyp@section@target@nnn{[section]}{}{#3}}} \else \LinkTargetOff \refstepcounter{#1}% \LinkTargetOn - \protected@edef\@svsec{\@hyp@section@target@nnn{}{#1}{#3}\@seccntformat{#1}\relax}% + \protected@edef\@svsec{\NoCaseChange{\@hyp@section@target@nnn{}{#1}{#3}}\@seccntformat{#1}\relax}% \fi \@tempskipa #5\relax \ifdim \@tempskipa>\z@ @@ -370,11 +371,11 @@ \begingroup \tagtool{para-flattened=true} #4{% - \@hangfrom{\hskip #1\relax\@hyp@section@target@nnn{[section]}{}{#1}}% + \@hangfrom{\hskip #1\relax\NoCaseChange{\@hyp@section@target@nnn{[section]}{}{#1}}}% \interlinepenalty \@M #5\@@par}% \endgroup \else - \def\@svsechd{#4{\hskip #1\relax\@hyp@section@target@nnn{[section]}{}{#3}\relax #5}}% + \def\@svsechd{#4{\hskip #1\relax\NoCaseChange{\@hyp@section@target@nnn{[section]}{}{#3}}\relax #5}}% \fi \@xsect{#3}} \def\@xsect#1{% diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-table.sty b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-table.sty index 91a750b20a5..bd5cd4db5c4 100644 --- a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-table.sty +++ b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-table.sty @@ -8,7 +8,7 @@ %% %% This is a generated file. %% -%% Copyright 2021-2023 LaTeX Project +%% Copyright 2021-2025 LaTeX Project %% %% This file was generated from file(s) of the `LaTeX-lab Bundle'. %% ------------------------------------------------------------------------------------ @@ -32,9 +32,9 @@ %% where one can also log issues in case there are any. %% %% -%% File: latex-lab-table.dtx (C) Copyright 2023-2024 LaTeX Project -\def\ltlabtbldate{2024-09-18} -\def\ltlabtblversion{0.85n} +%% File: latex-lab-table.dtx (C) Copyright 2023-2025 LaTeX Project +\def\ltlabtbldate{2025-01-05} +\def\ltlabtblversion{0.85p} \ProvidesExplPackage {latex-lab-testphase-table} {\ltlabtbldate} {\ltlabtblversion} {Code related to the tagging of tables} \RequirePackage{array} @@ -55,7 +55,7 @@ \clist_new:N \l__tbl_tmpa_clist \tl_new:N \l__tbl_tmpa_tl \str_new:N \l__tbl_tmpa_str -\str_if_exist:cF { l__socket_tagsupport/tbl/init/celldata_plug_str } +\socket_if_exist:nF {tagsupport/tbl/init/celldata} { \NewSocket{tagsupport/tbl/init/celldata}{0} \NewSocket{tagsupport/tbl/restore/celldata}{0} @@ -349,6 +349,15 @@ \tag_struct_begin:n {tag=\l__tbl_tabletag_tl} \tl_gset:Ne \g__tbl_struct_table_tl { \tag_get:n {struct_num} } } +\NewSocketPlug{tagsupport/tbl/hmode/begin}{LayoutTable} + { + \tag_mc_end_push: + \bool_lazy_and:nnT + { \bool_if_exist_p:N \l__tag_para_bool } { \l__tag_para_bool } + { \tag_struct_end:n { text } } + \tag_struct_begin:n {tag=\l__tbl_tabletag_tl,attribute-class=ARIA-role-presentation} + \tl_gset:Ne \g__tbl_struct_table_tl { \tag_get:n {struct_num} } + } \NewSocketPlug{tagsupport/tbl/hmode/end}{Table} { \tag_struct_end: @@ -362,6 +371,11 @@ \tag_struct_begin:n {tag=\l__tbl_tabletag_tl} \tl_gset:Ne \g__tbl_struct_table_tl { \tag_get:n {struct_num} } } +\NewSocketPlug{tagsupport/tbl/vmode/begin}{LayoutTable} + { + \tag_struct_begin:n {tag=\l__tbl_tabletag_tl,attribute-class=ARIA-role-presentation} + \tl_gset:Ne \g__tbl_struct_table_tl { \tag_get:n {struct_num} } + } \NewSocketPlug{tagsupport/tbl/vmode/end}{Table} { \tag_struct_end: @@ -440,24 +454,50 @@ \AssignSocketPlug{tagsupport/tbl/leaders/begin}{code} \AssignSocketPlug{tagsupport/tbl/leaders/end}{code} } +\cs_new_protected:Npn\__tbl_init_tagnames_default: + { + \tl_set:Nn\l__tbl_rowtag_tl {TR} + \tl_set:Nn\l__tbl_pcelltag_tl {TD} + \tl_set:Nn\l__tbl_celltag_tl {TD} + \tl_set:Nn\l__tbl_tabletag_tl {Table} + } + +\cs_new_protected:Npn\__tbl_init_tagnames_div: + { + \tl_set:Nn\l__tbl_rowtag_tl {NonStruct} + \tl_set:Nn\l__tbl_pcelltag_tl {NonStruct} + \tl_set:Nn\l__tbl_celltag_tl {text} + \tl_set:Nn\l__tbl_tabletag_tl {Div} + } \keys_define:nn { __tag / setup } { table/tagging .choices:nn = { true, on } - { \__tag_tbl_enable: }, + { + \__tag_tbl_enable: + \__tbl_init_tagnames_default: + }, table/tagging .choices:nn = { false, off } { \__tag_tbl_disable: }, table/tagging .choice:, table/tagging / presentation .code:n = - { - \__tag_tbl_enable: - \tl_set:Nn\l__tbl_rowtag_tl {NonStruct} - \tl_set:Nn\l__tbl_pcelltag_tl {NonStruct} - \tl_set:Nn\l__tbl_celltag_tl {text} - \tl_set:Nn\l__tbl_tabletag_tl {Div} - \clist_clear:N \l__tbl_header_rows_clist - \clist_clear:N \l__tbl_header_columns_clist - }, + { + \__tag_tbl_enable: + \__tbl_init_tagnames_default: + \AssignSocketPlug{tagsupport/tbl/hmode/begin}{LayoutTable} + \AssignSocketPlug{tagsupport/tbl/vmode/begin}{LayoutTable} + \clist_clear:N \l__tbl_header_rows_clist + \clist_clear:N \l__tbl_header_columns_clist + }, + table/tagging / div .code:n = + { + \__tag_tbl_enable: + \__tbl_init_tagnames_div: + \AssignSocketPlug{tagsupport/tbl/hmode/begin}{LayoutTable} + \AssignSocketPlug{tagsupport/tbl/vmode/begin}{LayoutTable} + \clist_clear:N \l__tbl_header_rows_clist + \clist_clear:N \l__tbl_header_columns_clist + }, table/tagging .default:n = true, table/tagging .initial:n = true } @@ -477,6 +517,8 @@ {TH-row}{/O /Table /Scope /Row}, role/new-attribute = {TH-both}{/O /Table /Scope /Both}, + role/new-attribute = + {ARIA-role-presentation}{/O /ARIA-1.1/role (presentation)} } \seq_gput_left:Ne\g__tag_attr_class_used_seq {\pdf_name_from_unicode_e:n{TH-col}} diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-text.sty b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-text.sty index 2eea229b6d5..39b0e34397d 100644 --- a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-text.sty +++ b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-text.sty @@ -8,7 +8,7 @@ %% %% This is a generated file. %% -%% Copyright 2021-2023 LaTeX Project +%% Copyright 2021-2025 LaTeX Project %% %% This file was generated from file(s) of the `LaTeX-lab Bundle'. %% ------------------------------------------------------------------------------------ @@ -32,9 +32,9 @@ %% where one can also log issues in case there are any. %% %% -%% File: latex-lab-text.dtx (C) Copyright 2023-2024 LaTeX Project -\def\ltlabtextdate{2024-09-18} -\def\ltlabtextversion{0.85b} +%% File: latex-lab-text.dtx (C) Copyright 2023-2025 LaTeX Project +\def\ltlabtextdate{2025-02-18} +\def\ltlabtextversion{0.85e} \ProvidesExplPackage {latex-lab-testphase-text} {\ltlabtextdate} {\ltlabtextversion} {Code related to the tagging of various small text commands} @@ -43,7 +43,7 @@ { \mode_leave_vertical: \tag_mc_end_push: - \tag_struct_begin:n{tag=Span,actualtext=LaTeX} + \tag_struct_begin:n{tag=Span,actualtext=LaTeX,phoneme=[ˈlaːtɛx]} \tag_mc_begin:n{} \tag_suspend:n{LaTeX} } @@ -81,6 +81,47 @@ \tag_struct_end: \tag_mc_begin_pop:n{} } +\DeclareRobustCommand\mbox[1] + { + \leavevmode + \tag_socket_use:nnn {math/luamml/hbox} + {}{ \hbox{#1} } + } +\long\def\@imakebox[#1][#2]#3{% + \tag_socket_use:nnn {math/luamml/hbox}{} + { + \@begin@tempboxa\hbox{#3}% + \setlength\@tempdima{#1}% support calc + \hb@xt@\@tempdima{% + \expandafter\ifx\csname bm@#2\endcsname\relax + \bm@c + \@latex@warning{Unexpected~alignment~#2}% + \else + \csname bm@#2\endcsname + \fi}% + \@end@tempboxa + }} +\def\makeph@nt#1{% + \setbox\z@\hbox + {\SuspendTagging{\makeph@nt}% + \color@begingroup#1\color@endgroup\ResumeTagging{\makeph@nt}}\finph@nt} +\def\@kernel@mathph@nt#1#2{% + \setbox\z@\hbox{\SuspendTagging{\mathph@nt}$\m@th#1{#2}$\ResumeTagging{\mathph@nt}}\finph@nt} +\def\mathph@nt#1#2 + { + \setbox \z@ = \hbox { + $ + \m@th + #1 + { + \let\mathph@nt\@kernel@mathph@nt + #2 + } + \UseTaggingSocket{math/luamml/save/nNn}{{mathphant} #1 {mphantom}} + $ + } + \UseTaggingSocket{math/luamml/finph@nt}{}{\finph@nt} + } \endinput %% %% End of file `latex-lab-testphase-text.sty'. diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-title.sty b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-title.sty index f3518622dfa..725b88c5b4f 100644 --- a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-title.sty +++ b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-title.sty @@ -8,7 +8,7 @@ %% %% This is a generated file. %% -%% Copyright 2021-2023 LaTeX Project +%% Copyright 2021-2025 LaTeX Project %% %% This file was generated from file(s) of the `LaTeX-lab Bundle'. %% ------------------------------------------------------------------------------------ @@ -32,8 +32,8 @@ %% where one can also log issues in case there are any. %% %% -%% File: latex-lab-title.dtx (C) Copyright 2023-2024 LaTeX Project -\def\ltlabtitledate{2024-02-09} +%% File: latex-lab-title.dtx (C) Copyright 2023-2025 LaTeX Project +\def\ltlabtitledate{2024-12-12} \def\ltlabtitleversion{0.85c} diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-toc.sty b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-toc.sty index 558041fccc4..6faa0c2f1d8 100644 --- a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-toc.sty +++ b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-toc.sty @@ -11,7 +11,7 @@ %% %% This is a generated file. %% -%% Copyright 2021-2023 LaTeX Project +%% Copyright 2021-2025 LaTeX Project %% %% This file was generated from file(s) of the `LaTeX-lab Bundle'. %% ------------------------------------------------------------------------------------ @@ -35,16 +35,16 @@ %% where one can also log issues in case there are any. %% %% -%% File: latex-lab-toc.dtx (C) Copyright 2022-2024 LaTeX Project -\def\ltlabtocdate{2024-09-26} +%% File: latex-lab-toc.dtx (C) Copyright 2022-2025 LaTeX Project +\def\ltlabtocdate{2024-12-27} \def\ltlabtocversion{0.85e} \ProvidesExplPackage {latex-lab-testphase-toc} {\ltlabtocdate} {\ltlabtocversion} { Code related to the tagging of toc-like lists} -%% File: latex-lab-toc-kernel-changes.dtx (C) Copyright 2022-2024 LaTeX Project -\def\ltlabkerneldate{2024-07-11} -\def\ltlabkernelversion{0.85d} +%% File: latex-lab-toc-kernel-changes.dtx (C) Copyright 2022-2025 LaTeX Project +\def\ltlabkerneldate{2024-12-27} +\def\ltlabkernelversion{0.85e} \RequirePackage{latex-lab-kernel-changes} -\str_if_exist:cF { l__socket_tagsupport/toc/contentsline/before_plug_str } +\socket_if_exist:nF {tagsupport/toc/contentsline/before} { \NewSocket{tagsupport/toc/contentsline/before}{1} \NewSocket{tagsupport/toc/contentsline/after}{1} @@ -60,7 +60,7 @@ \addtocontents{#1}{% \protect\contentsline{#2}{#3}{\thepage}{\@currentHref}\protected@file@percent }} -\str_if_exist:cF { l__socket_tagsupport/toc/starttoc/before_plug_str } +\socket_if_exist:nF {tagsupport/toc/starttoc/before} { \NewSocket{tagsupport/toc/starttoc/before}{1} \NewSocket{tagsupport/toc/starttoc/after}{1} @@ -80,7 +80,7 @@ \NewMirroredHookPairWithArguments{contentsline/number/before}{contentsline/number/after}{1}% \NewMirroredHookPairWithArguments{contentsline/text/before}{contentsline/text/after}{4}% \NewMirroredHookPairWithArguments{contentsline/page/before}{contentsline/page/after}{4}% -\str_if_exist:cF { l__socket_tagsupport/toc/leaders/before_plug_str } +\socket_if_exist:nF {tagsupport/toc/leaders/before} { \NewSocket{tagsupport/toc/leaders/before}{0} \NewSocket{tagsupport/toc/leaders/after}{0} @@ -285,8 +285,8 @@ \endgroup \fi} } -%% File: latex-lab-toc.dtx (C) Copyright 2022-2024 LaTeX Project -\def\ltlabtocdate{2024-09-26} +%% File: latex-lab-toc.dtx (C) Copyright 2022-2025 LaTeX Project +\def\ltlabtocdate{2024-12-27} \def\ltlabtocversion{0.85e} \tl_new:N \l__tag_toc_tmpa_tl \str_if_exist:cF { l__socket_tagsupport/recordtarget_plug_str } @@ -436,7 +436,7 @@ {\nobreak\tag_mc_end:} \AssignSocketPlug{tagsupport/toc/leaders/before}{artifact} \AssignSocketPlug{tagsupport/toc/leaders/after}{artifact} -%% File: latex-lab-toc-hyperref-changes.dtx (C) Copyright 2022-2024 LaTeX Project +%% File: latex-lab-toc-hyperref-changes.dtx (C) Copyright 2022-2025 LaTeX Project \def\ltlabtochyperdate{2023-07-20} \def\ltlabtochyperversion{0.85a} \def\hyper@nopatch@toc{} diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-unicode-math.ltx b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-unicode-math.ltx new file mode 100644 index 00000000000..52b6594c3a3 --- /dev/null +++ b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-unicode-math.ltx @@ -0,0 +1,92 @@ +%% +%% This is file `latex-lab-unicode-math.ltx', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% latex-lab-unicode-math.dtx (with options: `kernel') +%% +%% This is a generated file. +%% +%% Copyright 2021-2025 LaTeX Project +%% +%% This file was generated from file(s) of the `LaTeX-lab Bundle'. +%% ------------------------------------------------------------------------------------ +%% +%% It may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either version 1.3c +%% of this license or (at your option) any later version. +%% The latest version of this license is in +%% http://www.latex-project.org/lppl.txt +%% and version 1.3c or later is part of all distributions of LaTeX +%% version 2008 or later. +%% +%% This file may only be distributed together with a copy of the LaTeX +%% `LaTeX-lab Bundle'. You may however distribute the `LaTeX-lab Bundle' +%% without such generated files. +%% +%% The newest sources can be found below +%% +%% https://github.com/latex3/latex2e/required/latex-lab +%% +%% where one can also log issues in case there are any. +%% +%% +%% File: latex-lab-unicode-math.dtx +\ProvidesExplFile + {latex-lab-unicode-math.ltx} + {2025-02-00} + {0.1b} + {unicode-math adaptions} +\str_if_exist:cF { l__socket_tagsupport/math/luamml/artifact_plug_str } + { + \NewSocket{tagsupport/math/luamml/artifact}{0} + } +\def\bBigg@#1#2 + {{\ensuremath {\Uvextensible height~#1 \big@size axis~exact~#2}}} +\protected\def\varinjlim + {{\Udelimiterunder 0 "2192 {\qopname\relax o{\luamml_ignore:\mathstrut lim}}}} +\protected\def\varprojlim + {{\Udelimiterunder 0 "2190 {\qopname\relax o{\luamml_ignore:\mathstrut lim}}}} +\protected\def\varlimsup + {{\overline{\qopname\relax o{\luamml_ignore:\mathstrut lim}}}} +\protected\def\varliminf + {{\underline{\qopname\relax o{lim}}}} +\AtBeginDocument + { + \cs_gset_protected_nopar:Npn \sqrtsign + { + \tag_socket_use:n {math/luamml/artifact} + \tex_Uradical:D \symoperators "0221A\scan_stop: + } + } +\cs_set_nopar:Npn \plainroot@ #1 \of #2 + { + \bool_if:nTF + { + \__um_int_if_zero_p:n \uproot@ && \__um_int_if_zero_p:n \leftroot@ + } + { + \tag_socket_use:n {math/luamml/artifact} + \Uroot \c__um_radical_sqrt_tl { #1 } { #2 } + } + { + \hbox_set:Nn \rootbox + { + \c_math_toggle_token \m@th + \scriptscriptstyle { #1 } + \c_math_toggle_token + } + \mathchoice + { \r@@t \displaystyle { #2 } } + { \r@@t \textstyle { #2 } } + { \r@@t \scriptstyle { #2 } } + { \r@@t \scriptscriptstyle { #2 } } + } + \c_group_end_token + } +\DeclareRobustCommand {\frac}[2] + {{\tag_socket_use:n{math/luamml/artifact}\Ustack{\begingroup#1\endgroup\@@over#2}}} +\endinput +%% +%% End of file `latex-lab-unicode-math.ltx'. diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/marginpar-latex-lab-testphase.ltx b/Master/texmf-dist/tex/latex-dev/latex-lab/marginpar-latex-lab-testphase.ltx index 0c55110f9d5..507ac0311b2 100644 --- a/Master/texmf-dist/tex/latex-dev/latex-lab/marginpar-latex-lab-testphase.ltx +++ b/Master/texmf-dist/tex/latex-dev/latex-lab/marginpar-latex-lab-testphase.ltx @@ -8,7 +8,7 @@ %% %% This is a generated file. %% -%% Copyright 2021-2023 LaTeX Project +%% Copyright 2021-2025 LaTeX Project %% %% This file was generated from file(s) of the `LaTeX-lab Bundle'. %% ------------------------------------------------------------------------------------ @@ -34,8 +34,8 @@ %% %% File: latex-lab-marginpar.dtx %% -\def\ltlabmarginpardate{2024-09-18} -\def\ltlabmarginparversion{0.85d} +\def\ltlabmarginpardate{2025-02-21} +\def\ltlabmarginparversion{0.85e} \ProvidesFile{marginpar-latex-lab-testphase.ltx} [\ltlabmarginpardate\space v\ltlabmarginparversion\space diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/math-latex-lab-testphase.ltx b/Master/texmf-dist/tex/latex-dev/latex-lab/math-latex-lab-testphase.ltx index 2c89d19d494..9189ea9f24e 100644 --- a/Master/texmf-dist/tex/latex-dev/latex-lab/math-latex-lab-testphase.ltx +++ b/Master/texmf-dist/tex/latex-dev/latex-lab/math-latex-lab-testphase.ltx @@ -8,7 +8,7 @@ %% %% This is a generated file. %% -%% Copyright 2021-2023 LaTeX Project +%% Copyright 2021-2025 LaTeX Project %% %% This file was generated from file(s) of the `LaTeX-lab Bundle'. %% ------------------------------------------------------------------------------------ diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/minipage-latex-lab-testphase.ltx b/Master/texmf-dist/tex/latex-dev/latex-lab/minipage-latex-lab-testphase.ltx index b11a23987c1..f62654143cb 100644 --- a/Master/texmf-dist/tex/latex-dev/latex-lab/minipage-latex-lab-testphase.ltx +++ b/Master/texmf-dist/tex/latex-dev/latex-lab/minipage-latex-lab-testphase.ltx @@ -8,7 +8,7 @@ %% %% This is a generated file. %% -%% Copyright 2021-2023 LaTeX Project +%% Copyright 2021-2025 LaTeX Project %% %% This file was generated from file(s) of the `LaTeX-lab Bundle'. %% ------------------------------------------------------------------------------------ diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/new-or-1-latex-lab-testphase.ltx b/Master/texmf-dist/tex/latex-dev/latex-lab/new-or-1-latex-lab-testphase.ltx index b4e311b2e2a..a1edb929183 100644 --- a/Master/texmf-dist/tex/latex-dev/latex-lab/new-or-1-latex-lab-testphase.ltx +++ b/Master/texmf-dist/tex/latex-dev/latex-lab/new-or-1-latex-lab-testphase.ltx @@ -8,7 +8,7 @@ %% %% This is a generated file. %% -%% Copyright 2021-2023 LaTeX Project +%% Copyright 2021-2025 LaTeX Project %% %% This file was generated from file(s) of the `LaTeX-lab Bundle'. %% ------------------------------------------------------------------------------------ @@ -32,9 +32,9 @@ %% where one can also log issues in case there are any. %% %% -%% File: latex-lab-new-or-1.dtx (C) Copyright 2020-2024 Frank Mittelbach -\def\ltlabneworIdate{2024-11-12} -\def\ltlabneworIversion{0.85b} +%% File: latex-lab-new-or-1.dtx (C) Copyright 2020-2025 Frank Mittelbach +\def\ltlabneworIdate{2025-02-11} +\def\ltlabneworIversion{0.85c} \ProvidesFile{new-or-1-latex-lab-testphase.ltx} [\ltlabneworIdate\space v\ltlabneworIversion\space latex-lab wrapper new-or-1] diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/new-or-latex-lab-testphase.ltx b/Master/texmf-dist/tex/latex-dev/latex-lab/new-or-latex-lab-testphase.ltx index 45354f15d36..7c666fc8d6b 100644 --- a/Master/texmf-dist/tex/latex-dev/latex-lab/new-or-latex-lab-testphase.ltx +++ b/Master/texmf-dist/tex/latex-dev/latex-lab/new-or-latex-lab-testphase.ltx @@ -8,7 +8,7 @@ %% %% This is a generated file. %% -%% Copyright 2021-2023 LaTeX Project +%% Copyright 2021-2025 LaTeX Project %% %% This file was generated from file(s) of the `LaTeX-lab Bundle'. %% ------------------------------------------------------------------------------------ diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/phase-I-latex-lab-testphase.ltx b/Master/texmf-dist/tex/latex-dev/latex-lab/phase-I-latex-lab-testphase.ltx index a672afc5968..c54861e2123 100644 --- a/Master/texmf-dist/tex/latex-dev/latex-lab/phase-I-latex-lab-testphase.ltx +++ b/Master/texmf-dist/tex/latex-dev/latex-lab/phase-I-latex-lab-testphase.ltx @@ -8,7 +8,7 @@ %% %% This is a generated file. %% -%% Copyright 2021-2023 LaTeX Project +%% Copyright 2021-2025 LaTeX Project %% %% This file was generated from file(s) of the `LaTeX-lab Bundle'. %% ------------------------------------------------------------------------------------ diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/phase-II-latex-lab-testphase.ltx b/Master/texmf-dist/tex/latex-dev/latex-lab/phase-II-latex-lab-testphase.ltx index 0958d99b119..dadb14f9242 100644 --- a/Master/texmf-dist/tex/latex-dev/latex-lab/phase-II-latex-lab-testphase.ltx +++ b/Master/texmf-dist/tex/latex-dev/latex-lab/phase-II-latex-lab-testphase.ltx @@ -8,7 +8,7 @@ %% %% This is a generated file. %% -%% Copyright 2021-2023 LaTeX Project +%% Copyright 2021-2025 LaTeX Project %% %% This file was generated from file(s) of the `LaTeX-lab Bundle'. %% ------------------------------------------------------------------------------------ diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/phase-III-latex-lab-testphase.ltx b/Master/texmf-dist/tex/latex-dev/latex-lab/phase-III-latex-lab-testphase.ltx index c782abde3ad..2e3a55d8415 100644 --- a/Master/texmf-dist/tex/latex-dev/latex-lab/phase-III-latex-lab-testphase.ltx +++ b/Master/texmf-dist/tex/latex-dev/latex-lab/phase-III-latex-lab-testphase.ltx @@ -8,7 +8,7 @@ %% %% This is a generated file. %% -%% Copyright 2021-2023 LaTeX Project +%% Copyright 2021-2025 LaTeX Project %% %% This file was generated from file(s) of the `LaTeX-lab Bundle'. %% ------------------------------------------------------------------------------------ diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/sec-latex-lab-testphase.ltx b/Master/texmf-dist/tex/latex-dev/latex-lab/sec-latex-lab-testphase.ltx index fa037aca3bf..7e3be98dbf1 100644 --- a/Master/texmf-dist/tex/latex-dev/latex-lab/sec-latex-lab-testphase.ltx +++ b/Master/texmf-dist/tex/latex-dev/latex-lab/sec-latex-lab-testphase.ltx @@ -8,7 +8,7 @@ %% %% This is a generated file. %% -%% Copyright 2021-2023 LaTeX Project +%% Copyright 2021-2025 LaTeX Project %% %% This file was generated from file(s) of the `LaTeX-lab Bundle'. %% ------------------------------------------------------------------------------------ @@ -32,9 +32,9 @@ %% where one can also log issues in case there are any. %% %% -%% File: latex-lab-sec.dtx (C) Copyright 2022-2024 LaTeX Project -\def\ltlabsecdate{2024-10-04} -\def\ltlabsecversion{0.84f} +%% File: latex-lab-sec.dtx (C) Copyright 2022-2025 LaTeX Project +\def\ltlabsecdate{2025-02-18} +\def\ltlabsecversion{0.84i} \ProvidesFile{sec-latex-lab-testphase.ltx} [\ltlabsecdate\space v\ltlabsecversion\space latex-lab wrapper sec] diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/table-latex-lab-testphase.ltx b/Master/texmf-dist/tex/latex-dev/latex-lab/table-latex-lab-testphase.ltx index eee19904436..2746edd5882 100644 --- a/Master/texmf-dist/tex/latex-dev/latex-lab/table-latex-lab-testphase.ltx +++ b/Master/texmf-dist/tex/latex-dev/latex-lab/table-latex-lab-testphase.ltx @@ -8,7 +8,7 @@ %% %% This is a generated file. %% -%% Copyright 2021-2023 LaTeX Project +%% Copyright 2021-2025 LaTeX Project %% %% This file was generated from file(s) of the `LaTeX-lab Bundle'. %% ------------------------------------------------------------------------------------ @@ -32,9 +32,9 @@ %% where one can also log issues in case there are any. %% %% -%% File: latex-lab-table.dtx (C) Copyright 2023-2024 LaTeX Project -\def\ltlabtbldate{2024-09-18} -\def\ltlabtblversion{0.85n} +%% File: latex-lab-table.dtx (C) Copyright 2023-2025 LaTeX Project +\def\ltlabtbldate{2025-01-05} +\def\ltlabtblversion{0.85p} \ProvidesFile{table-latex-lab-testphase.ltx} [\ltlabtbldate\space v\ltlabtblversion\space latex-lab wrapper table] \RequirePackage{latex-lab-testphase-table} diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/tabular-latex-lab-testphase.ltx b/Master/texmf-dist/tex/latex-dev/latex-lab/tabular-latex-lab-testphase.ltx index 093b38ef924..13fad4dfc1f 100644 --- a/Master/texmf-dist/tex/latex-dev/latex-lab/tabular-latex-lab-testphase.ltx +++ b/Master/texmf-dist/tex/latex-dev/latex-lab/tabular-latex-lab-testphase.ltx @@ -8,7 +8,7 @@ %% %% This is a generated file. %% -%% Copyright 2021-2023 LaTeX Project +%% Copyright 2021-2025 LaTeX Project %% %% This file was generated from file(s) of the `LaTeX-lab Bundle'. %% ------------------------------------------------------------------------------------ @@ -32,9 +32,9 @@ %% where one can also log issues in case there are any. %% %% -%% File: latex-lab-table.dtx (C) Copyright 2023-2024 LaTeX Project -\def\ltlabtbldate{2024-09-18} -\def\ltlabtblversion{0.85n} +%% File: latex-lab-table.dtx (C) Copyright 2023-2025 LaTeX Project +\def\ltlabtbldate{2025-01-05} +\def\ltlabtblversion{0.85p} \ProvidesFile{tabular-latex-lab-testphase.ltx} [\ltlabtbldate\space v\ltlabtblversion\space latex-lab wrapper tabular] diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/tagpdf-latex-lab-testphase.ltx b/Master/texmf-dist/tex/latex-dev/latex-lab/tagpdf-latex-lab-testphase.ltx index e7303e398e0..7979e9202e5 100644 --- a/Master/texmf-dist/tex/latex-dev/latex-lab/tagpdf-latex-lab-testphase.ltx +++ b/Master/texmf-dist/tex/latex-dev/latex-lab/tagpdf-latex-lab-testphase.ltx @@ -8,7 +8,7 @@ %% %% This is a generated file. %% -%% Copyright 2021-2023 LaTeX Project +%% Copyright 2021-2025 LaTeX Project %% %% This file was generated from file(s) of the `LaTeX-lab Bundle'. %% ------------------------------------------------------------------------------------ diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/tagpdf-ns-latex-lab.def b/Master/texmf-dist/tex/latex-dev/latex-lab/tagpdf-ns-latex-lab.def index 13054a4f295..8e83e8180d9 100644 --- a/Master/texmf-dist/tex/latex-dev/latex-lab/tagpdf-ns-latex-lab.def +++ b/Master/texmf-dist/tex/latex-dev/latex-lab/tagpdf-ns-latex-lab.def @@ -23,7 +23,7 @@ enumerate, L, pdf2, description, L, pdf2, quote, BlockQuote,pdf, quotation, BlockQuote,pdf, -verbatim, Div, pdf2, % overwritten by block +verbatim, Code, pdf, % overwritten by block item, LI, pdf2, itemlabel, Lbl, pdf2, itembody, LBody, pdf2, @@ -32,8 +32,9 @@ footnotemark, Lbl, pdf2, footnotelabel,Lbl, pdf2, text-unit, Part, pdf2, text, P, pdf2, +section-number, Span, pdf2, theorem-like, Sect, pdf2, -verbatim, P, pdf2, +verbatim, Code, pdf, codeline, Sub, pdf2, float, Aside, pdf2, figures, Sect, pdf2, diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/text-latex-lab-testphase.ltx b/Master/texmf-dist/tex/latex-dev/latex-lab/text-latex-lab-testphase.ltx index 290c185f0d2..0bbe89f883f 100644 --- a/Master/texmf-dist/tex/latex-dev/latex-lab/text-latex-lab-testphase.ltx +++ b/Master/texmf-dist/tex/latex-dev/latex-lab/text-latex-lab-testphase.ltx @@ -8,7 +8,7 @@ %% %% This is a generated file. %% -%% Copyright 2021-2023 LaTeX Project +%% Copyright 2021-2025 LaTeX Project %% %% This file was generated from file(s) of the `LaTeX-lab Bundle'. %% ------------------------------------------------------------------------------------ @@ -32,9 +32,9 @@ %% where one can also log issues in case there are any. %% %% -%% File: latex-lab-text.dtx (C) Copyright 2023-2024 LaTeX Project -\def\ltlabtextdate{2024-09-18} -\def\ltlabtextversion{0.85b} +%% File: latex-lab-text.dtx (C) Copyright 2023-2025 LaTeX Project +\def\ltlabtextdate{2025-02-18} +\def\ltlabtextversion{0.85e} \ProvidesFile{text-latex-lab-testphase.ltx} [\ltlabtextdate\space v\ltlabtextversion\space diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/title-latex-lab-testphase.ltx b/Master/texmf-dist/tex/latex-dev/latex-lab/title-latex-lab-testphase.ltx index 17f603db23e..b47484be696 100644 --- a/Master/texmf-dist/tex/latex-dev/latex-lab/title-latex-lab-testphase.ltx +++ b/Master/texmf-dist/tex/latex-dev/latex-lab/title-latex-lab-testphase.ltx @@ -8,7 +8,7 @@ %% %% This is a generated file. %% -%% Copyright 2021-2023 LaTeX Project +%% Copyright 2021-2025 LaTeX Project %% %% This file was generated from file(s) of the `LaTeX-lab Bundle'. %% ------------------------------------------------------------------------------------ @@ -32,8 +32,8 @@ %% where one can also log issues in case there are any. %% %% -%% File: latex-lab-title.dtx (C) Copyright 2023-2024 LaTeX Project -\def\ltlabtitledate{2024-02-09} +%% File: latex-lab-title.dtx (C) Copyright 2023-2025 LaTeX Project +\def\ltlabtitledate{2024-12-12} \def\ltlabtitleversion{0.85c} diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/toc-latex-lab-testphase.ltx b/Master/texmf-dist/tex/latex-dev/latex-lab/toc-latex-lab-testphase.ltx index 8985e57bc7b..20b27d88e5d 100644 --- a/Master/texmf-dist/tex/latex-dev/latex-lab/toc-latex-lab-testphase.ltx +++ b/Master/texmf-dist/tex/latex-dev/latex-lab/toc-latex-lab-testphase.ltx @@ -8,7 +8,7 @@ %% %% This is a generated file. %% -%% Copyright 2021-2023 LaTeX Project +%% Copyright 2021-2025 LaTeX Project %% %% This file was generated from file(s) of the `LaTeX-lab Bundle'. %% ------------------------------------------------------------------------------------ @@ -32,8 +32,8 @@ %% where one can also log issues in case there are any. %% %% -%% File: latex-lab-toc.dtx (C) Copyright 2022-2024 LaTeX Project -\def\ltlabtocdate{2024-09-26} +%% File: latex-lab-toc.dtx (C) Copyright 2022-2025 LaTeX Project +\def\ltlabtocdate{2024-12-27} \def\ltlabtocversion{0.85e} \ProvidesFile{toc-latex-lab-testphase.ltx} [\ltlabtocdate\space v\ltlabtocversion latex-lab wrapper toc] diff --git a/Master/texmf-dist/tex/latex-dev/tools/.tex b/Master/texmf-dist/tex/latex-dev/tools/.tex index a6b7144e01d..798f86a095c 100644 --- a/Master/texmf-dist/tex/latex-dev/tools/.tex +++ b/Master/texmf-dist/tex/latex-dev/tools/.tex @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/tools/afterpage.sty b/Master/texmf-dist/tex/latex-dev/tools/afterpage.sty index 2a487eac7e9..46bb6f38ce5 100644 --- a/Master/texmf-dist/tex/latex-dev/tools/afterpage.sty +++ b/Master/texmf-dist/tex/latex-dev/tools/afterpage.sty @@ -12,7 +12,7 @@ %% reports for it can be opened at https://latex-project.org/bugs/ %% (but please observe conditions on bug reports sent to that address!) %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/tools/array.sty b/Master/texmf-dist/tex/latex-dev/tools/array.sty index a190c9f7714..d58db3f1a2f 100644 --- a/Master/texmf-dist/tex/latex-dev/tools/array.sty +++ b/Master/texmf-dist/tex/latex-dev/tools/array.sty @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% @@ -47,7 +47,7 @@ \NeedsTeXFormat{LaTeX2e}[2024/06/01] \ProvidesPackage{array} - [2024/10/17 v2.6g Tabular extension package (FMi)] + [2025/02/18 v2.6h Tabular extension package (FMi)] %% \ExplSyntaxOn @@ -129,6 +129,14 @@ \@acol \@firstampfalse \or \@addamp \fi} +\str_if_exist:cF { l__socket_tagsupport/math/luamml/array/save_plug_str } + { + \NewSocket{tagsupport/math/luamml/array/save}{0} + \NewSocket{tagsupport/math/luamml/array/finalize}{0} + \NewSocket{tagsupport/math/luamml/array/initcol}{0} + \NewSocket{tagsupport/math/luamml/array/finalizecol}{1} + \AssignSocketPlug{tagsupport/math/luamml/array/finalizecol}{noop} + } \def\@classz{\@classx \@tempcnta \count@ \prepnext@tok @@ -137,9 +145,12 @@ \hskip1sp% \d@llarbegin \insert@column - \d@llarend \do@row@strut \hfil \or - \hskip1sp\d@llarbegin \insert@column \d@llarend \do@row@strut \hfil \or - \hfil\hskip1sp\d@llarbegin \insert@column \d@llarend \do@row@strut \or + \d@llarend + \do@row@strut \hfil \or + \hskip1sp\d@llarbegin\insert@column\d@llarend + \do@row@strut \hfil \or + \hfil\hskip1sp\d@llarbegin\insert@column\d@llarend + \do@row@strut \or \setbox\ar@mcellbox\vbox \@startpbox{\@nextchar}\insert@pcolumn \@endpbox \ar@align@mcell @@ -182,6 +193,7 @@ \vrule \@height \ht\@arstrutbox \@width \z@ \everypar{}}% } +\let\@startpbox@action\@startpbox \def\@endpbox{\@finalstrut\@arstrutbox \par \color@endgroup \egroup\hfil} \def\@array[#1]#2{ \@tempdima \ht \strutbox @@ -258,23 +270,39 @@ \let\d@llarbegin\begingroup \let\d@llarend\endgroup \def\array{\col@sep\arraycolsep - \def\d@llarbegin{$}\let\d@llarend\d@llarbegin\def\@halignto{}% + \def\d@llarbegin{$\tag_socket_use:n { math/luamml/array/initcol }} + \def\d@llarend + { + \tag_socket_use:nn { math/luamml/save/nn }{{}{mtd}} + $ + \tag_socket_use:nn { math/luamml/array/finalizecol}{\the\@chnum} + } + \def\@halignto{}% \@tabarray} \def\tabular{\def\@halignto{}\@tabular} \expandafter\def\csname tabular*\endcsname#1{% \setlength\dimen@{#1}% \edef\@halignto{to\the\dimen@}\@tabular} +\providecommand\MathCollectTrue{} +\providecommand\MathCollectFalse{} +\providecommand\@kernel@tabular@init{} \def\@tabular{% \leavevmode \UseTaggingSocket{tbl/hmode/begin}% - \hbox \bgroup $\col@sep\tabcolsep \let\d@llarbegin\begingroup + \hbox \bgroup + \MathCollectFalse$\MathCollectTrue + \col@sep\tabcolsep \let\d@llarbegin\begingroup \let\d@llarend\endgroup + \@kernel@tabular@init \@tabarray} \def\endarray { - \tbl_crcr:n{endarray} \egroup - \UseTaggingSocket{tbl/finalize} + \tbl_crcr:n{endarray} + \tag_socket_use_expandable:n { math/luamml/array/save } + \egroup + \tag_socket_use:n { tbl/finalize } \tbl_restore_outer_cell_data: \egroup + \tag_socket_use:n { math/luamml/array/finalize } \@arrayright \gdef\@preamble{}% } \def\endtabular{\endarray\m@th $\egroup @@ -348,7 +376,9 @@ \def\@mkpream#1{\gdef\@preamble{}\@lastchclass 4 \@firstamptrue \let\@sharp\relax \def\@startpbox##1{\unexpanded\expandafter{\expandafter - \@startpbox\expandafter{##1}}}\let\@endpbox\relax + \@startpbox@action\expandafter{##1}}}% + \def\@startpbox@action##1{\unexpanded{\@startpbox@action{##1}}}% + \let\@endpbox\relax \let\do@row@strut\relax \let\ar@align@mcell\relax \@temptokena{#1}\@tempswatrue diff --git a/Master/texmf-dist/tex/latex-dev/tools/bm.sty b/Master/texmf-dist/tex/latex-dev/tools/bm.sty index 175a3c6e84e..7f479ac47ca 100644 --- a/Master/texmf-dist/tex/latex-dev/tools/bm.sty +++ b/Master/texmf-dist/tex/latex-dev/tools/bm.sty @@ -12,7 +12,7 @@ %% reports for it can be opened at https://latex-project.org/bugs/ %% (but please observe conditions on bug reports sent to that address!) %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/tools/calc.sty b/Master/texmf-dist/tex/latex-dev/tools/calc.sty index dfb61a5b942..38768af2781 100644 --- a/Master/texmf-dist/tex/latex-dev/tools/calc.sty +++ b/Master/texmf-dist/tex/latex-dev/tools/calc.sty @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/tools/dcolumn.sty b/Master/texmf-dist/tex/latex-dev/tools/dcolumn.sty index 552e282aa81..2d3555242e6 100644 --- a/Master/texmf-dist/tex/latex-dev/tools/dcolumn.sty +++ b/Master/texmf-dist/tex/latex-dev/tools/dcolumn.sty @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/tools/delarray.sty b/Master/texmf-dist/tex/latex-dev/tools/delarray.sty index a5b7f5c43fe..ed9dd267338 100644 --- a/Master/texmf-dist/tex/latex-dev/tools/delarray.sty +++ b/Master/texmf-dist/tex/latex-dev/tools/delarray.sty @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/tools/e.tex b/Master/texmf-dist/tex/latex-dev/tools/e.tex index 987b7fc8fcf..b7e888fbe5e 100644 --- a/Master/texmf-dist/tex/latex-dev/tools/e.tex +++ b/Master/texmf-dist/tex/latex-dev/tools/e.tex @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/tools/enumerate.sty b/Master/texmf-dist/tex/latex-dev/tools/enumerate.sty index 189b630df7d..dd0c3280af6 100644 --- a/Master/texmf-dist/tex/latex-dev/tools/enumerate.sty +++ b/Master/texmf-dist/tex/latex-dev/tools/enumerate.sty @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/tools/fontsmpl.sty b/Master/texmf-dist/tex/latex-dev/tools/fontsmpl.sty index 781e333f1e5..a3445dfb85f 100644 --- a/Master/texmf-dist/tex/latex-dev/tools/fontsmpl.sty +++ b/Master/texmf-dist/tex/latex-dev/tools/fontsmpl.sty @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/tools/fontsmpl.tex b/Master/texmf-dist/tex/latex-dev/tools/fontsmpl.tex index 8c1671492fd..f9a9d2df27a 100644 --- a/Master/texmf-dist/tex/latex-dev/tools/fontsmpl.tex +++ b/Master/texmf-dist/tex/latex-dev/tools/fontsmpl.tex @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/tools/ftnright.sty b/Master/texmf-dist/tex/latex-dev/tools/ftnright.sty index 06d26677fbc..a17fddceefc 100644 --- a/Master/texmf-dist/tex/latex-dev/tools/ftnright.sty +++ b/Master/texmf-dist/tex/latex-dev/tools/ftnright.sty @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/tools/h.tex b/Master/texmf-dist/tex/latex-dev/tools/h.tex index e17174333b4..cf398b8a340 100644 --- a/Master/texmf-dist/tex/latex-dev/tools/h.tex +++ b/Master/texmf-dist/tex/latex-dev/tools/h.tex @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/tools/hhline.sty b/Master/texmf-dist/tex/latex-dev/tools/hhline.sty index e4fb937acb8..dbed1739da4 100644 --- a/Master/texmf-dist/tex/latex-dev/tools/hhline.sty +++ b/Master/texmf-dist/tex/latex-dev/tools/hhline.sty @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/tools/indentfirst.sty b/Master/texmf-dist/tex/latex-dev/tools/indentfirst.sty index 68ba4564107..14cd6433da6 100644 --- a/Master/texmf-dist/tex/latex-dev/tools/indentfirst.sty +++ b/Master/texmf-dist/tex/latex-dev/tools/indentfirst.sty @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/tools/l3sys-query.sty b/Master/texmf-dist/tex/latex-dev/tools/l3sys-query.sty index 792ef9c0416..f493a434f04 100644 --- a/Master/texmf-dist/tex/latex-dev/tools/l3sys-query.sty +++ b/Master/texmf-dist/tex/latex-dev/tools/l3sys-query.sty @@ -12,7 +12,7 @@ %% reports for it can be opened at https://latex-project.org/bugs/ %% (but please observe conditions on bug reports sent to that address!) %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% @@ -35,7 +35,7 @@ %% given in the file `manifest.txt'. %% %% Source File: l3sys-query.dtx -%% Copyright (C) 2024 +%% Copyright (C) 2024-2025 %% %% The LaTeX Project and any individual authors listed elsewhere %% in this file. diff --git a/Master/texmf-dist/tex/latex-dev/tools/layout.sty b/Master/texmf-dist/tex/latex-dev/tools/layout.sty index 33d9bd36333..ff38eb4fb79 100644 --- a/Master/texmf-dist/tex/latex-dev/tools/layout.sty +++ b/Master/texmf-dist/tex/latex-dev/tools/layout.sty @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/tools/longtable.sty b/Master/texmf-dist/tex/latex-dev/tools/longtable.sty index 0bc422eb465..5824ecb2e0a 100644 --- a/Master/texmf-dist/tex/latex-dev/tools/longtable.sty +++ b/Master/texmf-dist/tex/latex-dev/tools/longtable.sty @@ -12,7 +12,7 @@ %% reports for it can be opened at https://latex-project.org/bugs/ %% (but please observe conditions on bug reports sent to that address!) %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% @@ -43,7 +43,7 @@ \DeclareCurrentRelease{}{2020-02-07} \ProvidesPackage{longtable} - [2024-10-27 v4.22 Multi-page Table package (DPC)] + [2024-12-18 v4.23 Multi-page Table package (DPC)] \def\LT@err{\PackageError{longtable}} \def\LT@warn{\PackageWarning{longtable}} \def\LT@final@warn{% @@ -148,7 +148,8 @@ \else \advance\@tempdima\extrarowheight \col@sep\tabcolsep - \let\@startpbox\LT@startpbox\let\LT@LL@FM@cr\@arraycr + \let\@startpbox@action\LT@startpbox + \let\LT@LL@FM@cr\@arraycr \fi \setbox\@arstrutbox\hbox{\vrule \@height \arraystretch \@tempdima diff --git a/Master/texmf-dist/tex/latex-dev/tools/multicol.sty b/Master/texmf-dist/tex/latex-dev/tools/multicol.sty index 3cc9d82e039..c5e34ca2211 100644 --- a/Master/texmf-dist/tex/latex-dev/tools/multicol.sty +++ b/Master/texmf-dist/tex/latex-dev/tools/multicol.sty @@ -12,7 +12,7 @@ %% reports for it can be opened at https://latex-project.org/bugs/ %% (but please observe conditions on bug reports sent to that address!) %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% @@ -35,7 +35,7 @@ %% given in the file `manifest.txt'. %% %% Package `multicol' to use with LaTeX2e -%% Copyright 1989-2024 Frank Mittelbach +%% Copyright 1989-2025 Frank Mittelbach %% %% In addition to the terms of LPPL any distributed version %% (unchanged or modified) of multicol has to keep the statement @@ -106,7 +106,7 @@ \DeclareCurrentRelease{}{2021-11-15} \ProvidesPackage{multicol} - [2024/11/21 v2.0a multicolumn formatting (FMi)] + [2024/11/27 v2.0a multicolumn formatting (FMi)] \DeclareOption{twocolumn} {\PackageWarning{multicol}{May not work diff --git a/Master/texmf-dist/tex/latex-dev/tools/q.tex b/Master/texmf-dist/tex/latex-dev/tools/q.tex index ef93425302e..0868d65f9f8 100644 --- a/Master/texmf-dist/tex/latex-dev/tools/q.tex +++ b/Master/texmf-dist/tex/latex-dev/tools/q.tex @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/tools/r.tex b/Master/texmf-dist/tex/latex-dev/tools/r.tex index 0031b8b56f8..c578198e815 100644 --- a/Master/texmf-dist/tex/latex-dev/tools/r.tex +++ b/Master/texmf-dist/tex/latex-dev/tools/r.tex @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/tools/rawfonts.sty b/Master/texmf-dist/tex/latex-dev/tools/rawfonts.sty index 1dec5d108fa..9bb9b651219 100644 --- a/Master/texmf-dist/tex/latex-dev/tools/rawfonts.sty +++ b/Master/texmf-dist/tex/latex-dev/tools/rawfonts.sty @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/tools/s.tex b/Master/texmf-dist/tex/latex-dev/tools/s.tex index 67068e8f3ee..ecdd420948f 100644 --- a/Master/texmf-dist/tex/latex-dev/tools/s.tex +++ b/Master/texmf-dist/tex/latex-dev/tools/s.tex @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/tools/shellesc.sty b/Master/texmf-dist/tex/latex-dev/tools/shellesc.sty index ddeb937bb21..07cf35881e2 100644 --- a/Master/texmf-dist/tex/latex-dev/tools/shellesc.sty +++ b/Master/texmf-dist/tex/latex-dev/tools/shellesc.sty @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% @@ -36,7 +36,7 @@ %% given in the file `manifest.txt'. %% %% Source File: shellesc.dtx -%% Copyright (C) 2015-2024 +%% Copyright (C) 2015-2025 %% %% The LaTeX Project and any individual authors listed elsewhere %% in this file. diff --git a/Master/texmf-dist/tex/latex-dev/tools/showkeys.sty b/Master/texmf-dist/tex/latex-dev/tools/showkeys.sty index 67811019e39..588833a1c64 100644 --- a/Master/texmf-dist/tex/latex-dev/tools/showkeys.sty +++ b/Master/texmf-dist/tex/latex-dev/tools/showkeys.sty @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% @@ -36,7 +36,7 @@ %% given in the file `manifest.txt'. %% %% File: showkeys.dtx Copyright (C) 1992-1997 David Carlisle -%% File: showkeys.dtx Copyright (C) 2006-2024 David Carlisle, LaTeX Project +%% File: showkeys.dtx Copyright (C) 2006-2025 David Carlisle, LaTeX Project \NeedsTeXFormat{LaTeX2e} \DeclareRelease{}{1994-06-01}{showkeys-2014-10-28.sty} diff --git a/Master/texmf-dist/tex/latex-dev/tools/somedefs.sty b/Master/texmf-dist/tex/latex-dev/tools/somedefs.sty index 8c5226d39bc..6ffa977355f 100644 --- a/Master/texmf-dist/tex/latex-dev/tools/somedefs.sty +++ b/Master/texmf-dist/tex/latex-dev/tools/somedefs.sty @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/tools/tabularx.sty b/Master/texmf-dist/tex/latex-dev/tools/tabularx.sty index 9cedcd02754..5b836cc27ea 100644 --- a/Master/texmf-dist/tex/latex-dev/tools/tabularx.sty +++ b/Master/texmf-dist/tex/latex-dev/tools/tabularx.sty @@ -12,7 +12,7 @@ %% reports for it can be opened at https://latex-project.org/bugs/ %% (but please observe conditions on bug reports sent to that address!) %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/tools/thb.sty b/Master/texmf-dist/tex/latex-dev/tools/thb.sty index c7c01d6d8f8..e028a445060 100644 --- a/Master/texmf-dist/tex/latex-dev/tools/thb.sty +++ b/Master/texmf-dist/tex/latex-dev/tools/thb.sty @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/tools/thc.sty b/Master/texmf-dist/tex/latex-dev/tools/thc.sty index 77b0c88c478..85daccb109e 100644 --- a/Master/texmf-dist/tex/latex-dev/tools/thc.sty +++ b/Master/texmf-dist/tex/latex-dev/tools/thc.sty @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/tools/thcb.sty b/Master/texmf-dist/tex/latex-dev/tools/thcb.sty index e02fb365d80..8fee05b235a 100644 --- a/Master/texmf-dist/tex/latex-dev/tools/thcb.sty +++ b/Master/texmf-dist/tex/latex-dev/tools/thcb.sty @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/tools/theorem.sty b/Master/texmf-dist/tex/latex-dev/tools/theorem.sty index 474a44eacca..3dd191b993b 100644 --- a/Master/texmf-dist/tex/latex-dev/tools/theorem.sty +++ b/Master/texmf-dist/tex/latex-dev/tools/theorem.sty @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/tools/thm.sty b/Master/texmf-dist/tex/latex-dev/tools/thm.sty index 18837285335..c441d455918 100644 --- a/Master/texmf-dist/tex/latex-dev/tools/thm.sty +++ b/Master/texmf-dist/tex/latex-dev/tools/thm.sty @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/tools/thmb.sty b/Master/texmf-dist/tex/latex-dev/tools/thmb.sty index d5f9b089190..20206f28d2a 100644 --- a/Master/texmf-dist/tex/latex-dev/tools/thmb.sty +++ b/Master/texmf-dist/tex/latex-dev/tools/thmb.sty @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/tools/thp.sty b/Master/texmf-dist/tex/latex-dev/tools/thp.sty index 16f97840d6a..00914b1fca0 100644 --- a/Master/texmf-dist/tex/latex-dev/tools/thp.sty +++ b/Master/texmf-dist/tex/latex-dev/tools/thp.sty @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/tools/trace.sty b/Master/texmf-dist/tex/latex-dev/tools/trace.sty index 00d42ef7af4..f4692c49a2a 100644 --- a/Master/texmf-dist/tex/latex-dev/tools/trace.sty +++ b/Master/texmf-dist/tex/latex-dev/tools/trace.sty @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/tools/varioref.sty b/Master/texmf-dist/tex/latex-dev/tools/varioref.sty index 6b2f7cfd7ac..f6bba5ed333 100644 --- a/Master/texmf-dist/tex/latex-dev/tools/varioref.sty +++ b/Master/texmf-dist/tex/latex-dev/tools/varioref.sty @@ -12,7 +12,7 @@ %% reports for it can be opened at https://latex-project.org/bugs/ %% (but please observe conditions on bug reports sent to that address!) %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% @@ -51,7 +51,7 @@ \DeclareCurrentRelease{}{2019-10-01} \ProvidesPackage{varioref} - [2024/05/23 v1.6g package for extended references (FMi)] + [2025/01/14 v1.6g package for extended references (FMi)] %% diff --git a/Master/texmf-dist/tex/latex-dev/tools/verbatim.sty b/Master/texmf-dist/tex/latex-dev/tools/verbatim.sty index 069ed64286b..81ac99c1609 100644 --- a/Master/texmf-dist/tex/latex-dev/tools/verbatim.sty +++ b/Master/texmf-dist/tex/latex-dev/tools/verbatim.sty @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/tools/verbtest.tex b/Master/texmf-dist/tex/latex-dev/tools/verbtest.tex index a5c40684c96..0c9b9f20a33 100644 --- a/Master/texmf-dist/tex/latex-dev/tools/verbtest.tex +++ b/Master/texmf-dist/tex/latex-dev/tools/verbtest.tex @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/tools/x.tex b/Master/texmf-dist/tex/latex-dev/tools/x.tex index 8c5e356a45b..39a01c6bcda 100644 --- a/Master/texmf-dist/tex/latex-dev/tools/x.tex +++ b/Master/texmf-dist/tex/latex-dev/tools/x.tex @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex-dev/tools/xr.sty b/Master/texmf-dist/tex/latex-dev/tools/xr.sty index 9e3f16cd92b..5fdf97d0cee 100644 --- a/Master/texmf-dist/tex/latex-dev/tools/xr.sty +++ b/Master/texmf-dist/tex/latex-dev/tools/xr.sty @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% @@ -35,12 +35,12 @@ %% The list of all files belonging to the LaTeX `Tools Bundle' is %% given in the file `manifest.txt'. %% -%% File: xr.dtx Copyright (C) 1993-2024 David Carlisle +%% File: xr.dtx Copyright (C) 1993-2025 David Carlisle \NeedsTeXFormat{LaTeX2e} \DeclareRelease{v5}{2023-07-04}{xr-2023-07-04.sty} -\DeclareCurrentRelease{}{2024-04-10} +\DeclareCurrentRelease{}{2024-12-22} \ProvidesPackage{xr} - [2024-04-10 v6.00 eXternal References (DPC)] + [2024-12-22 v6.00 eXternal References (DPC)] \def\externaldocument{\@testopt\XR@cite{}} \let\externalcitedocument\externaldocument \def\XR@cite[#1]{\@testopt{\XR@[#1]}{}} diff --git a/Master/texmf-dist/tex/latex-dev/tools/xspace.sty b/Master/texmf-dist/tex/latex-dev/tools/xspace.sty index 7c4532b2a07..1aa10c6fc44 100644 --- a/Master/texmf-dist/tex/latex-dev/tools/xspace.sty +++ b/Master/texmf-dist/tex/latex-dev/tools/xspace.sty @@ -13,7 +13,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 1993-2024 +%% Copyright (C) 1993-2025 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% -- cgit v1.2.3