From db067c611b78f0cf73619c2e040f8151e853aaa6 Mon Sep 17 00:00:00 2001 From: Norbert Preining Date: Sun, 16 Jun 2024 03:02:21 +0000 Subject: CTAN sync 202406160302 --- FILES.byname | 287 ++++----- FILES.byname.gz | Bin 2661513 -> 2661177 bytes FILES.last07days | 184 ++++-- biblio/ctan-bibdata/ctan.bib | 22 +- .../tkz-grapheur/doc/tkz-grapheur-doc-fr.pdf | Bin 767807 -> 801892 bytes .../tkz-grapheur/doc/tkz-grapheur-doc-fr.tex | 55 +- .../pgf/contrib/tkz-grapheur/tex/tkz-grapheur.sty | 49 +- info/ptex-manual/LICENSE | 2 +- info/ptex-manual/README.md | 2 +- info/ptex-manual/eptexdoc.pdf | Bin 380927 -> 381916 bytes info/ptex-manual/eptexdoc.tex | 26 +- info/ptex-manual/jfm.pdf | Bin 231315 -> 235593 bytes info/ptex-manual/jfm.tex | 56 +- info/ptex-manual/ptex-guide-en.pdf | Bin 115974 -> 115730 bytes info/ptex-manual/ptex-guide-en.tex | 11 - info/ptex-manual/ptex-manual.pdf | Bin 391671 -> 404345 bytes info/ptex-manual/ptex-manual.sty | 23 +- info/ptex-manual/ptex-manual.tex | 662 ++++++++++++--------- macros/latex/contrib/scontents/README.md | 6 +- macros/latex/contrib/scontents/scontents.dtx | 638 ++++++++++++++++---- macros/latex/contrib/scontents/scontents.ins | 8 +- macros/latex/contrib/scontents/scontents.pdf | Bin 385642 -> 429100 bytes support/TeX4ht/source/ChangeLog | 6 + support/TeX4ht/source/tex4ht-4ht.tex | 13 +- support/latexindent/LatexIndent/GetYamlSettings.pm | 32 +- support/latexindent/LatexIndent/Logger.pm | 2 +- support/latexindent/LatexIndent/Special.pm | 4 +- .../latexindent/LatexIndent/TrailingComments.pm | 32 +- .../LatexIndent/UTF8CmdLineArgsFileOperation.pm | 40 +- support/latexindent/LatexIndent/Version.pm | 4 +- support/latexindent/README | 2 +- support/latexindent/bin/linux/latexindent | Bin 7847681 -> 7875395 bytes support/latexindent/bin/macos/latexindent | Bin 7564693 -> 7569205 bytes support/latexindent/defaultSettings.yaml | 4 +- support/latexindent/documentation/contributors.bib | 11 + .../documentation/latexindent-yaml-schema.json | 9 +- support/latexindent/documentation/latexindent.pdf | Bin 1298414 -> 1297627 bytes support/latexindent/documentation/latexindent.tex | 72 ++- support/latexindent/latexindent.pl | 2 +- .../texlive/tlnet/tlpkg/installer/ctan-mirrors.pl | 7 +- systems/texlive/tlnet/tlpkg/texlive.tlpdb | 99 ++- systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5 | 2 +- systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512 | 2 +- .../texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc | 16 +- systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz | Bin 2577396 -> 2580108 bytes timestamp | 2 +- 46 files changed, 1567 insertions(+), 825 deletions(-) diff --git a/FILES.byname b/FILES.byname index 700ef6ef8a..444859ccd3 100644 --- a/FILES.byname +++ b/FILES.byname @@ -2078,12 +2078,12 @@ 2024/06/09 | 1837 | biblio/citation-style-language/README.md 2024/06/09 | 12878 | biblio/citation-style-language/vancouver.csl 2024/06/09 | 4562284 | biblio/citation-style-language.zip -2024/06/14 | 1678 | biblio/ctan-bibdata/biblatex-ctan/ctan.bbx +2024/06/15 | 1678 | biblio/ctan-bibdata/biblatex-ctan/ctan.bbx 2022/10/08 | 127 | biblio/ctan-bibdata/biblatex-ctan/ctan.cbx -2024/06/14 | 2873098 | biblio/ctan-bibdata/ctan.bib -2024/06/14 | 3708800 | biblio/ctan-bibdata/ctan.pdf +2024/06/15 | 2873038 | biblio/ctan-bibdata/ctan.bib +2024/06/15 | 3708800 | biblio/ctan-bibdata/ctan.pdf 2023/01/16 | 1489 | biblio/ctan-bibdata/README -2024/06/14 | 4122445 | biblio/ctan-bibdata.zip +2024/06/15 | 4122446 | biblio/ctan-bibdata.zip 2023/02/23 | 3126 | biblio/pbibtex/pbibtex-base/cpp.awk 2023/02/23 | 1009 | biblio/pbibtex/pbibtex-base/generate.sh 2023/02/23 | 22362 | biblio/pbibtex/pbibtex-base/jabbrv.bst @@ -5445,7 +5445,7 @@ 1990/10/02 | 5440 | dviware/vutex/vaxvms.hlp 1990/10/02 | 812 | dviware/vutex/vaxvms.ins 1990/10/02 | 127576 | dviware/vutex/vutex.web -2024/06/14 | 114802 | FILES.last07days +2024/06/15 | 122487 | FILES.last07days 2021/07/24 | 1139410 | fonts/aboensis/Aboensis.glyphs 2021/07/24 | 18907382 | fonts/aboensis/aboensis.pdf 2021/07/24 | 137860 | fonts/aboensis/Aboensis-Regular.otf @@ -174293,13 +174293,13 @@ 2023/09/09 | 474 | graphics/pgf/contrib/tkz-bernoulli/README.md 2023/11/05 | 11097 | graphics/pgf/contrib/tkz-bernoulli/tex/tkz-bernoulli.sty 2023/11/05 | 196410 | graphics/pgf/contrib/tkz-bernoulli.zip -2024/06/06 | 767807 | graphics/pgf/contrib/tkz-grapheur/doc/tkz-grapheur-doc-fr.pdf -2024/06/06 | 72531 | graphics/pgf/contrib/tkz-grapheur/doc/tkz-grapheur-doc-fr.tex +2024/06/15 | 801892 | graphics/pgf/contrib/tkz-grapheur/doc/tkz-grapheur-doc-fr.pdf +2024/06/15 | 74691 | graphics/pgf/contrib/tkz-grapheur/doc/tkz-grapheur-doc-fr.tex 2024/05/28 | 141384 | graphics/pgf/contrib/tkz-grapheur/doc/tkz-grapheur-exemples-integrales.pdf 2024/05/28 | 10208 | graphics/pgf/contrib/tkz-grapheur/doc/tkz-grapheur-exemples-integrales.tex 2024/05/11 | 472 | graphics/pgf/contrib/tkz-grapheur/README.md -2024/06/05 | 73930 | graphics/pgf/contrib/tkz-grapheur/tex/tkz-grapheur.sty -2024/06/06 | 919004 | graphics/pgf/contrib/tkz-grapheur.zip +2024/06/15 | 74552 | graphics/pgf/contrib/tkz-grapheur/tex/tkz-grapheur.sty +2024/06/15 | 951902 | graphics/pgf/contrib/tkz-grapheur.zip 2016/01/15 | 951 | graphics/pgf/contrib/tkz-orm/LICENSE 2016/01/15 | 4601 | graphics/pgf/contrib/tkz-orm/Makefile 2010/01/25 | 7949 | graphics/pgf/contrib/tkz-orm/pgfmanualstyle.sty @@ -205351,30 +205351,30 @@ 2014/06/23 | 584 | info/pstricks_calcnotes/README 2014/04/03 | 652952 | info/pstricks_calcnotes/ThreeAppsPDF.pdf 2014/06/22 | 2060099 | info/pstricks_calcnotes.zip -2023/09/02 | 380927 | info/ptex-manual/eptexdoc.pdf -2023/09/02 | 77869 | info/ptex-manual/eptexdoc.tex -2023/09/02 | 1012994 | info/ptex-manual/eptex_resume.pdf -2023/09/02 | 95260 | info/ptex-manual/eptex_resume.tex -2023/09/02 | 3173 | info/ptex-manual/fam256d.tex -2023/09/02 | 3372 | info/ptex-manual/fam256p.tex -2023/09/02 | 231315 | info/ptex-manual/jfm.pdf -2023/09/02 | 47453 | info/ptex-manual/jfm.tex -2023/09/02 | 251872 | info/ptex-manual/jtex_asciimw.pdf -2023/09/02 | 35293 | info/ptex-manual/jtex_asciimw.tex -2023/09/02 | 145704 | info/ptex-manual/jtexdoc_asciimw.pdf -2023/09/02 | 20341 | info/ptex-manual/jtexdoc_asciimw.tex -2023/09/02 | 1516 | info/ptex-manual/LICENSE -2023/09/02 | 264764 | info/ptex-manual/ptexdoc_asciimw.pdf -2023/09/02 | 42357 | info/ptex-manual/ptexdoc_asciimw.tex -2023/09/02 | 115974 | info/ptex-manual/ptex-guide-en.pdf -2023/09/02 | 49092 | info/ptex-manual/ptex-guide-en.tex -2023/09/02 | 391671 | info/ptex-manual/ptex-manual.pdf -2023/09/02 | 5001 | info/ptex-manual/ptex-manual.sty -2023/09/02 | 137430 | info/ptex-manual/ptex-manual.tex -2023/09/02 | 164929 | info/ptex-manual/ptexskip_asciimw.pdf -2023/09/02 | 19615 | info/ptex-manual/ptexskip_asciimw.tex -2023/09/02 | 1206 | info/ptex-manual/README.md -2023/09/02 | 3069194 | info/ptex-manual.zip +2024/06/15 | 381916 | info/ptex-manual/eptexdoc.pdf +2024/06/15 | 78046 | info/ptex-manual/eptexdoc.tex +2024/06/15 | 1012994 | info/ptex-manual/eptex_resume.pdf +2024/06/15 | 95260 | info/ptex-manual/eptex_resume.tex +2024/06/15 | 3173 | info/ptex-manual/fam256d.tex +2024/06/15 | 3372 | info/ptex-manual/fam256p.tex +2024/06/15 | 235593 | info/ptex-manual/jfm.pdf +2024/06/15 | 48981 | info/ptex-manual/jfm.tex +2024/06/15 | 251872 | info/ptex-manual/jtex_asciimw.pdf +2024/06/15 | 35293 | info/ptex-manual/jtex_asciimw.tex +2024/06/15 | 145704 | info/ptex-manual/jtexdoc_asciimw.pdf +2024/06/15 | 20341 | info/ptex-manual/jtexdoc_asciimw.tex +2024/06/15 | 1516 | info/ptex-manual/LICENSE +2024/06/15 | 264764 | info/ptex-manual/ptexdoc_asciimw.pdf +2024/06/15 | 42357 | info/ptex-manual/ptexdoc_asciimw.tex +2024/06/15 | 115730 | info/ptex-manual/ptex-guide-en.pdf +2024/06/15 | 48698 | info/ptex-manual/ptex-guide-en.tex +2024/06/15 | 404345 | info/ptex-manual/ptex-manual.pdf +2024/06/15 | 5742 | info/ptex-manual/ptex-manual.sty +2024/06/15 | 145802 | info/ptex-manual/ptex-manual.tex +2024/06/15 | 164929 | info/ptex-manual/ptexskip_asciimw.pdf +2024/06/15 | 19615 | info/ptex-manual/ptexskip_asciimw.tex +2024/06/15 | 1206 | info/ptex-manual/README.md +2024/06/15 | 3089922 | info/ptex-manual.zip 1994/01/21 | 22111 | info/qh2winh.zip 2021/04/25 | 3133138 | info/russian/basiclatex-ru/BasicLatex.pdf 2021/07/05 | 628 | info/russian/basiclatex-ru/README @@ -214538,7 +214538,7 @@ 2013/04/01 | 14776 | macros/context/contrib/context-visualcounter/tex/context/third/visualcounter/t-visualcounter.mkvi 2018/03/05 | 11 | macros/context/contrib/context-visualcounter/VERSION 2018/03/22 | 276789 | macros/context/contrib/context-visualcounter.zip -2024/05/31 | 122901555 | macros/context/latest/cont-tmf.zip +2024/06/14 | 134450644 | macros/context/latest/cont-tmf.zip 2016/04/21 | 32846 | macros/cstex/base/cmexb.tar.gz 2016/06/26 | 1728262 | macros/cstex/base/csfonts-t1.tar.gz 2007/03/01 | 187106 | macros/cstex/base/csfonts.tar.gz @@ -249697,11 +249697,11 @@ 2014/08/31 | 2171 | macros/latex/contrib/sclang-prettifier/sclang-prettifier.ins 2014/08/31 | 513246 | macros/latex/contrib/sclang-prettifier/sclang-prettifier.pdf 2014/09/01 | 521589 | macros/latex/contrib/sclang-prettifier.zip -2022/04/03 | 2342 | macros/latex/contrib/scontents/README.md -2022/04/03 | 135079 | macros/latex/contrib/scontents/scontents.dtx -2022/04/03 | 2223 | macros/latex/contrib/scontents/scontents.ins -2022/04/03 | 385642 | macros/latex/contrib/scontents/scontents.pdf -2022/04/04 | 398398 | macros/latex/contrib/scontents.zip +2024/06/15 | 2350 | macros/latex/contrib/scontents/README.md +2024/06/15 | 148019 | macros/latex/contrib/scontents/scontents.dtx +2024/06/15 | 2224 | macros/latex/contrib/scontents/scontents.ins +2024/06/15 | 429100 | macros/latex/contrib/scontents/scontents.pdf +2024/06/15 | 440419 | macros/latex/contrib/scontents.zip 2021/09/26 | 833 | macros/latex/contrib/scrambledenvs/README.md 2021/09/26 | 22002 | macros/latex/contrib/scrambledenvs/scrambledenvs.dtx 2021/09/26 | 198912 | macros/latex/contrib/scrambledenvs/scrambledenvs.pdf @@ -299249,62 +299249,62 @@ 2024/05/31 | 1327 | support/latex-git-log/po/de.po 2024/05/31 | 3554 | support/latex-git-log/README.md 2024/05/31 | 66988 | support/latex-git-log.zip -2024/05/12 | 7847681 | support/latexindent/bin/linux/latexindent -2024/05/12 | 7564693 | support/latexindent/bin/macos/latexindent -2024/05/12 | 9468184 | support/latexindent/bin/windows/latexindent.exe -2024/05/12 | 22229 | support/latexindent/defaultSettings.yaml -2024/05/12 | 6664 | support/latexindent/documentation/contributors.bib -2024/05/12 | 7161 | support/latexindent/documentation/figure-schematic.png -2024/05/12 | 4402 | support/latexindent/documentation/latex-indent.bib -2024/05/12 | 1298414 | support/latexindent/documentation/latexindent.pdf -2024/05/12 | 446337 | support/latexindent/documentation/latexindent.tex -2024/05/12 | 61245 | support/latexindent/documentation/latexindent-yaml-schema.json -2024/05/12 | 44096 | support/latexindent/documentation/logo.png -2024/05/12 | 68177 | support/latexindent/LatexIndent/AlignmentAtAmpersand.pm -2024/05/12 | 24449 | support/latexindent/LatexIndent/Arguments.pm -2024/05/12 | 6616 | support/latexindent/LatexIndent/BackUpFileProcedure.pm -2024/05/12 | 4860 | support/latexindent/LatexIndent/BlankLines.pm -2024/05/12 | 12653 | support/latexindent/LatexIndent/Braces.pm -2024/05/12 | 5432 | support/latexindent/LatexIndent/Check.pm -2024/05/12 | 10648 | support/latexindent/LatexIndent/Command.pm -2024/05/12 | 25865 | support/latexindent/LatexIndent/Document.pm -2024/05/12 | 1500 | support/latexindent/LatexIndent/DoubleBackSlash.pm -2024/05/12 | 6391 | support/latexindent/LatexIndent/Else.pm -2024/05/12 | 8346 | support/latexindent/LatexIndent/Environment.pm -2024/05/12 | 11509 | support/latexindent/LatexIndent/FileContents.pm -2024/05/12 | 9005 | support/latexindent/LatexIndent/FileExtension.pm -2024/05/12 | 57020 | support/latexindent/LatexIndent/GetYamlSettings.pm -2024/05/12 | 11206 | support/latexindent/LatexIndent/Heading.pm -2024/05/12 | 13470 | support/latexindent/LatexIndent/HiddenChildren.pm -2024/05/12 | 3517 | support/latexindent/LatexIndent/HorizontalWhiteSpace.pm -2024/05/12 | 8893 | support/latexindent/LatexIndent/IfElseFi.pm -2024/05/12 | 20870 | support/latexindent/LatexIndent/Indent.pm -2024/05/12 | 6890 | support/latexindent/LatexIndent/Item.pm -2024/05/12 | 5478 | support/latexindent/LatexIndent/KeyEqualsValuesBraces.pm -2024/05/12 | 9859 | support/latexindent/LatexIndent/Lines.pm -2024/05/12 | 14059 | support/latexindent/LatexIndent/LogFile.pm -2024/05/12 | 2320 | support/latexindent/LatexIndent/Logger.pm -2024/05/12 | 7379 | support/latexindent/LatexIndent/MandatoryArgument.pm -2024/05/12 | 18591 | support/latexindent/LatexIndent/ModifyLineBreaks.pm -2024/05/12 | 1558 | support/latexindent/latexindent-module-installer.pl -2024/05/12 | 4388 | support/latexindent/LatexIndent/NamedGroupingBracesBrackets.pm -2024/05/12 | 6620 | support/latexindent/LatexIndent/OptionalArgument.pm -2024/05/12 | 4946 | support/latexindent/latexindent.pl -2024/05/12 | 2733 | support/latexindent/LatexIndent/Preamble.pm -2024/05/12 | 3515 | support/latexindent/LatexIndent/Replacement.pm -2024/05/12 | 4404 | support/latexindent/LatexIndent/RoundBrackets.pm -2024/05/12 | 22345 | support/latexindent/LatexIndent/Sentence.pm -2024/05/12 | 13935 | support/latexindent/LatexIndent/Special.pm -2024/05/12 | 2712 | support/latexindent/LatexIndent/Switches.pm -2024/05/12 | 3353 | support/latexindent/LatexIndent/Tokens.pm -2024/05/12 | 6953 | support/latexindent/LatexIndent/TrailingComments.pm -2024/05/12 | 5857 | support/latexindent/LatexIndent/UnNamedGroupingBracesBrackets.pm -2024/05/12 | 5883 | support/latexindent/LatexIndent/UTF8CmdLineArgsFileOperation.pm -2024/05/12 | 27422 | support/latexindent/LatexIndent/Verbatim.pm -2024/05/12 | 838 | support/latexindent/LatexIndent/Version.pm -2024/05/12 | 35225 | support/latexindent/LatexIndent/Wrap.pm -2024/05/12 | 2008 | support/latexindent/README -2024/05/12 | 12919204 | support/latexindent.zip +2024/06/15 | 7875395 | support/latexindent/bin/linux/latexindent +2024/06/15 | 7569205 | support/latexindent/bin/macos/latexindent +2024/06/15 | 9482185 | support/latexindent/bin/windows/latexindent.exe +2024/06/15 | 22228 | support/latexindent/defaultSettings.yaml +2024/06/15 | 6892 | support/latexindent/documentation/contributors.bib +2024/06/15 | 7161 | support/latexindent/documentation/figure-schematic.png +2024/06/15 | 4402 | support/latexindent/documentation/latex-indent.bib +2024/06/15 | 1297627 | support/latexindent/documentation/latexindent.pdf +2024/06/15 | 446500 | support/latexindent/documentation/latexindent.tex +2024/06/15 | 61421 | support/latexindent/documentation/latexindent-yaml-schema.json +2024/06/15 | 44096 | support/latexindent/documentation/logo.png +2024/06/15 | 68177 | support/latexindent/LatexIndent/AlignmentAtAmpersand.pm +2024/06/15 | 24449 | support/latexindent/LatexIndent/Arguments.pm +2024/06/15 | 6616 | support/latexindent/LatexIndent/BackUpFileProcedure.pm +2024/06/15 | 4860 | support/latexindent/LatexIndent/BlankLines.pm +2024/06/15 | 12653 | support/latexindent/LatexIndent/Braces.pm +2024/06/15 | 5432 | support/latexindent/LatexIndent/Check.pm +2024/06/15 | 10648 | support/latexindent/LatexIndent/Command.pm +2024/06/15 | 25865 | support/latexindent/LatexIndent/Document.pm +2024/06/15 | 1500 | support/latexindent/LatexIndent/DoubleBackSlash.pm +2024/06/15 | 6391 | support/latexindent/LatexIndent/Else.pm +2024/06/15 | 8346 | support/latexindent/LatexIndent/Environment.pm +2024/06/15 | 11509 | support/latexindent/LatexIndent/FileContents.pm +2024/06/15 | 9005 | support/latexindent/LatexIndent/FileExtension.pm +2024/06/15 | 55478 | support/latexindent/LatexIndent/GetYamlSettings.pm +2024/06/15 | 11206 | support/latexindent/LatexIndent/Heading.pm +2024/06/15 | 13470 | support/latexindent/LatexIndent/HiddenChildren.pm +2024/06/15 | 3517 | support/latexindent/LatexIndent/HorizontalWhiteSpace.pm +2024/06/15 | 8893 | support/latexindent/LatexIndent/IfElseFi.pm +2024/06/15 | 20870 | support/latexindent/LatexIndent/Indent.pm +2024/06/15 | 6890 | support/latexindent/LatexIndent/Item.pm +2024/06/15 | 5478 | support/latexindent/LatexIndent/KeyEqualsValuesBraces.pm +2024/06/15 | 9859 | support/latexindent/LatexIndent/Lines.pm +2024/06/15 | 14059 | support/latexindent/LatexIndent/LogFile.pm +2024/06/15 | 2331 | support/latexindent/LatexIndent/Logger.pm +2024/06/15 | 7379 | support/latexindent/LatexIndent/MandatoryArgument.pm +2024/06/15 | 18591 | support/latexindent/LatexIndent/ModifyLineBreaks.pm +2024/06/15 | 1558 | support/latexindent/latexindent-module-installer.pl +2024/06/15 | 4388 | support/latexindent/LatexIndent/NamedGroupingBracesBrackets.pm +2024/06/15 | 6620 | support/latexindent/LatexIndent/OptionalArgument.pm +2024/06/15 | 4946 | support/latexindent/latexindent.pl +2024/06/15 | 2733 | support/latexindent/LatexIndent/Preamble.pm +2024/06/15 | 3515 | support/latexindent/LatexIndent/Replacement.pm +2024/06/15 | 4404 | support/latexindent/LatexIndent/RoundBrackets.pm +2024/06/15 | 22345 | support/latexindent/LatexIndent/Sentence.pm +2024/06/15 | 13923 | support/latexindent/LatexIndent/Special.pm +2024/06/15 | 2712 | support/latexindent/LatexIndent/Switches.pm +2024/06/15 | 3353 | support/latexindent/LatexIndent/Tokens.pm +2024/06/15 | 7180 | support/latexindent/LatexIndent/TrailingComments.pm +2024/06/15 | 5857 | support/latexindent/LatexIndent/UnNamedGroupingBracesBrackets.pm +2024/06/15 | 6520 | support/latexindent/LatexIndent/UTF8CmdLineArgsFileOperation.pm +2024/06/15 | 27422 | support/latexindent/LatexIndent/Verbatim.pm +2024/06/15 | 838 | support/latexindent/LatexIndent/Version.pm +2024/06/15 | 35225 | support/latexindent/LatexIndent/Wrap.pm +2024/06/15 | 2008 | support/latexindent/README +2024/06/15 | 12969815 | support/latexindent.zip 2021/10/26 | 16439 | support/latex-make/figlatex.dtx 2021/10/26 | 238535 | support/latex-make/figlatex.pdf 2001/06/07 | 302 | support/latexmake/latexmake.diz @@ -308433,9 +308433,9 @@ 2020/03/04 | 408 | systems/texlive/tlnet/archive/collection-langpolish.r54074.tar.xz 2023/05/16 | 400 | systems/texlive/tlnet/archive/collection-langportuguese.r67125.tar.xz 2023/06/09 | 396 | systems/texlive/tlnet/archive/collection-langspanish.r67307.tar.xz -2024/06/14 | 7220 | systems/texlive/tlnet/archive/collection-latexextra.r71514.tar.xz +2024/06/15 | 7224 | systems/texlive/tlnet/archive/collection-latexextra.r71526.tar.xz 2023/12/14 | 704 | systems/texlive/tlnet/archive/collection-latex.r69131.tar.xz -2024/02/14 | 740 | systems/texlive/tlnet/archive/collection-latexrecommended.r69841.tar.xz +2024/06/15 | 740 | systems/texlive/tlnet/archive/collection-latexrecommended.r71527.tar.xz 2024/05/20 | 1044 | systems/texlive/tlnet/archive/collection-luatex.r71305.tar.xz 2024/06/11 | 1764 | systems/texlive/tlnet/archive/collection-mathscience.r71466.tar.xz 2024/05/23 | 572 | systems/texlive/tlnet/archive/collection-metapost.r71319.tar.xz @@ -308717,6 +308717,9 @@ 2019/02/28 | 968 | systems/texlive/tlnet/archive/coseoul.r23862.tar.xz 2023/08/13 | 203544 | systems/texlive/tlnet/archive/couleurs-fr.doc.r67901.tar.xz 2023/08/13 | 11444 | systems/texlive/tlnet/archive/couleurs-fr.r67901.tar.xz +2024/06/15 | 539720 | systems/texlive/tlnet/archive/count1to.doc.r71526.tar.xz +2024/06/15 | 1700 | systems/texlive/tlnet/archive/count1to.r71526.tar.xz +2024/06/15 | 6148 | systems/texlive/tlnet/archive/count1to.source.r71526.tar.xz 2023/06/11 | 315768 | systems/texlive/tlnet/archive/counterz.doc.r67335.tar.xz 2023/06/11 | 2488 | systems/texlive/tlnet/archive/counterz.r67335.tar.xz 2023/06/11 | 10872 | systems/texlive/tlnet/archive/counterz.source.r67335.tar.xz @@ -308922,11 +308925,11 @@ 2019/02/28 | 348 | systems/texlive/tlnet/archive/ctanupload.x86_64-linuxmusl.r46840.tar.xz 2019/02/28 | 344 | systems/texlive/tlnet/archive/ctanupload.x86_64-linux.r23866.tar.xz 2019/02/28 | 344 | systems/texlive/tlnet/archive/ctanupload.x86_64-solaris.r23866.tar.xz -2023/02/24 | 1143636 | systems/texlive/tlnet/archive/ctex.doc.r66115.tar.xz +2024/06/15 | 1143636 | systems/texlive/tlnet/archive/ctex.doc.r71527.tar.xz 2019/02/28 | 474648 | systems/texlive/tlnet/archive/ctex-faq.doc.r15878.tar.xz 2019/02/28 | 432 | systems/texlive/tlnet/archive/ctex-faq.r15878.tar.xz -2023/02/24 | 130980 | systems/texlive/tlnet/archive/ctex.r66115.tar.xz -2023/02/24 | 89524 | systems/texlive/tlnet/archive/ctex.source.r66115.tar.xz +2024/06/15 | 130984 | systems/texlive/tlnet/archive/ctex.r71527.tar.xz +2024/06/15 | 89520 | systems/texlive/tlnet/archive/ctex.source.r71527.tar.xz 2019/02/28 | 217796 | systems/texlive/tlnet/archive/ctib.doc.r15878.tar.xz 2019/02/28 | 116552 | systems/texlive/tlnet/archive/ctib.r15878.tar.xz 2019/02/28 | 8532 | systems/texlive/tlnet/archive/ctib.source.r15878.tar.xz @@ -309821,9 +309824,9 @@ 2021/07/19 | 313228 | systems/texlive/tlnet/archive/easing.doc.r59975.tar.xz 2021/07/19 | 2220 | systems/texlive/tlnet/archive/easing.r59975.tar.xz 2021/07/19 | 7876 | systems/texlive/tlnet/archive/easing.source.r59975.tar.xz -2024/06/14 | 654508 | systems/texlive/tlnet/archive/easybook.doc.r71511.tar.xz -2024/06/14 | 18352 | systems/texlive/tlnet/archive/easybook.r71511.tar.xz -2024/06/14 | 18244 | systems/texlive/tlnet/archive/easybook.source.r71511.tar.xz +2024/06/15 | 655276 | systems/texlive/tlnet/archive/easybook.doc.r71519.tar.xz +2024/06/15 | 18388 | systems/texlive/tlnet/archive/easybook.r71519.tar.xz +2024/06/15 | 18292 | systems/texlive/tlnet/archive/easybook.source.r71519.tar.xz 2019/02/28 | 4540 | systems/texlive/tlnet/archive/easy.doc.r19440.tar.xz 2023/10/12 | 344 | systems/texlive/tlnet/archive/easydtx.aarch64-linux.r68514.tar.xz 2023/10/12 | 344 | systems/texlive/tlnet/archive/easydtx.amd64-freebsd.r68514.tar.xz @@ -313507,9 +313510,9 @@ 2022/07/12 | 12872 | systems/texlive/tlnet/archive/luamesh.r63875.tar.xz 2023/11/19 | 205824 | systems/texlive/tlnet/archive/luamodulartables.doc.r68893.tar.xz 2023/11/19 | 1384 | systems/texlive/tlnet/archive/luamodulartables.r68893.tar.xz -2024/06/14 | 217040 | systems/texlive/tlnet/archive/luamplib.doc.r71512.tar.xz -2024/06/14 | 21288 | systems/texlive/tlnet/archive/luamplib.r71512.tar.xz -2024/06/14 | 40024 | systems/texlive/tlnet/archive/luamplib.source.r71512.tar.xz +2024/06/15 | 217072 | systems/texlive/tlnet/archive/luamplib.doc.r71524.tar.xz +2024/06/15 | 21292 | systems/texlive/tlnet/archive/luamplib.r71524.tar.xz +2024/06/15 | 40020 | systems/texlive/tlnet/archive/luamplib.source.r71524.tar.xz 2023/11/21 | 137048 | systems/texlive/tlnet/archive/luanumint.doc.r68918.tar.xz 2023/11/21 | 2332 | systems/texlive/tlnet/archive/luanumint.r68918.tar.xz 2022/10/31 | 32152 | systems/texlive/tlnet/archive/luaoptions.doc.r64870.tar.xz @@ -314449,14 +314452,11 @@ 2024/04/09 | 11920 | systems/texlive/tlnet/archive/mptrees.r70887.tar.xz 2023/07/24 | 251380 | systems/texlive/tlnet/archive/msc.doc.r67718.tar.xz 2023/07/24 | 20168 | systems/texlive/tlnet/archive/msc.r67718.tar.xz -2021/01/20 | 573400 | systems/texlive/tlnet/archive/ms.doc.r57473.tar.xz 2019/02/28 | 763960 | systems/texlive/tlnet/archive/msg.doc.r49578.tar.xz 2019/02/28 | 7808 | systems/texlive/tlnet/archive/msg.r49578.tar.xz 2019/02/28 | 18688 | systems/texlive/tlnet/archive/msg.source.r49578.tar.xz 2020/03/04 | 277424 | systems/texlive/tlnet/archive/mslapa.doc.r54080.tar.xz 2020/03/04 | 8972 | systems/texlive/tlnet/archive/mslapa.r54080.tar.xz -2021/01/20 | 3064 | systems/texlive/tlnet/archive/ms.r57473.tar.xz -2021/01/20 | 10948 | systems/texlive/tlnet/archive/ms.source.r57473.tar.xz 2024/06/11 | 540456 | systems/texlive/tlnet/archive/msu-thesis.doc.r71472.tar.xz 2024/06/11 | 13744 | systems/texlive/tlnet/archive/msu-thesis.r71472.tar.xz 2019/02/28 | 160144 | systems/texlive/tlnet/archive/mtgreek.doc.r17967.tar.xz @@ -314548,6 +314548,9 @@ 2021/03/16 | 600192 | systems/texlive/tlnet/archive/multirow.doc.r58396.tar.xz 2021/03/16 | 2796 | systems/texlive/tlnet/archive/multirow.r58396.tar.xz 2021/03/16 | 20244 | systems/texlive/tlnet/archive/multirow.source.r58396.tar.xz +2024/06/15 | 276500 | systems/texlive/tlnet/archive/multitoc.doc.r71520.tar.xz +2024/06/15 | 1512 | systems/texlive/tlnet/archive/multitoc.r71520.tar.xz +2024/06/15 | 5780 | systems/texlive/tlnet/archive/multitoc.source.r71520.tar.xz 2019/02/28 | 276956 | systems/texlive/tlnet/archive/munich.doc.r15878.tar.xz 2019/02/28 | 6916 | systems/texlive/tlnet/archive/munich.r15878.tar.xz 2020/04/16 | 80296 | systems/texlive/tlnet/archive/musical.doc.r54758.tar.xz @@ -315573,7 +315576,7 @@ 2020/03/24 | 242488 | systems/texlive/tlnet/archive/pgf-blur.doc.r54512.tar.xz 2020/03/24 | 2628 | systems/texlive/tlnet/archive/pgf-blur.r54512.tar.xz 2020/03/24 | 9236 | systems/texlive/tlnet/archive/pgf-blur.source.r54512.tar.xz -2023/01/16 | 9995120 | systems/texlive/tlnet/archive/pgf.doc.r65553.tar.xz +2024/06/15 | 9995120 | systems/texlive/tlnet/archive/pgf.doc.r71527.tar.xz 2019/11/07 | 929720 | systems/texlive/tlnet/archive/pgfgantt.doc.r52662.tar.xz 2019/11/07 | 7928 | systems/texlive/tlnet/archive/pgfgantt.r52662.tar.xz 2019/11/07 | 37128 | systems/texlive/tlnet/archive/pgfgantt.source.r52662.tar.xz @@ -315605,7 +315608,7 @@ 2022/01/24 | 13086868 | systems/texlive/tlnet/archive/pgfplots.doc.r61719.tar.xz 2022/01/24 | 529468 | systems/texlive/tlnet/archive/pgfplots.r61719.tar.xz 2022/01/24 | 1768536 | systems/texlive/tlnet/archive/pgfplots.source.r61719.tar.xz -2023/01/16 | 717460 | systems/texlive/tlnet/archive/pgf.r65553.tar.xz +2024/06/15 | 717460 | systems/texlive/tlnet/archive/pgf.r71527.tar.xz 2019/02/28 | 351348 | systems/texlive/tlnet/archive/pgf-soroban.doc.r32269.tar.xz 2019/02/28 | 1852 | systems/texlive/tlnet/archive/pgf-soroban.r32269.tar.xz 2023/04/29 | 2231980 | systems/texlive/tlnet/archive/pgf-spectra.doc.r66961.tar.xz @@ -317258,8 +317261,8 @@ 2019/02/28 | 292656 | systems/texlive/tlnet/archive/simplecv.doc.r35537.tar.xz 2019/02/28 | 2112 | systems/texlive/tlnet/archive/simplecv.r35537.tar.xz 2019/02/28 | 5844 | systems/texlive/tlnet/archive/simplecv.source.r35537.tar.xz -2024/06/11 | 2563368 | systems/texlive/tlnet/archive/simpleicons.doc.r71475.tar.xz -2024/06/11 | 3512312 | systems/texlive/tlnet/archive/simpleicons.r71475.tar.xz +2024/06/15 | 2572176 | systems/texlive/tlnet/archive/simpleicons.doc.r71518.tar.xz +2024/06/15 | 3524676 | systems/texlive/tlnet/archive/simpleicons.r71518.tar.xz 2019/02/28 | 224844 | systems/texlive/tlnet/archive/simpleinvoice.doc.r45673.tar.xz 2019/02/28 | 2420 | systems/texlive/tlnet/archive/simpleinvoice.r45673.tar.xz 2023/10/03 | 142696 | systems/texlive/tlnet/archive/simplekv.doc.r68439.tar.xz @@ -317295,9 +317298,9 @@ 2021/06/26 | 250232 | systems/texlive/tlnet/archive/siunits.doc.r59702.tar.xz 2021/06/26 | 6040 | systems/texlive/tlnet/archive/siunits.r59702.tar.xz 2021/06/26 | 34532 | systems/texlive/tlnet/archive/siunits.source.r59702.tar.xz -2024/05/07 | 1286820 | systems/texlive/tlnet/archive/siunitx.doc.r71193.tar.xz -2024/05/07 | 67920 | systems/texlive/tlnet/archive/siunitx.r71193.tar.xz -2024/05/07 | 123104 | systems/texlive/tlnet/archive/siunitx.source.r71193.tar.xz +2024/06/15 | 1286784 | systems/texlive/tlnet/archive/siunitx.doc.r71521.tar.xz +2024/06/15 | 67904 | systems/texlive/tlnet/archive/siunitx.r71521.tar.xz +2024/06/15 | 123128 | systems/texlive/tlnet/archive/siunitx.source.r71521.tar.xz 2024/04/06 | 709888 | systems/texlive/tlnet/archive/sjtutex.doc.r70867.tar.xz 2024/04/06 | 154544 | systems/texlive/tlnet/archive/sjtutex.r70867.tar.xz 2024/04/06 | 39888 | systems/texlive/tlnet/archive/sjtutex.source.r70867.tar.xz @@ -318242,7 +318245,7 @@ 2022/09/13 | 600 | systems/texlive/tlnet/archive/texlive-scripts.amd64-freebsd.r64356.tar.xz 2022/09/13 | 596 | systems/texlive/tlnet/archive/texlive-scripts.amd64-netbsd.r64356.tar.xz 2022/09/13 | 596 | systems/texlive/tlnet/archive/texlive-scripts.armhf-linux.r64356.tar.xz -2024/06/14 | 436236 | systems/texlive/tlnet/archive/texlive-scripts.doc.r71516.tar.xz +2024/06/15 | 436256 | systems/texlive/tlnet/archive/texlive-scripts.doc.r71528.tar.xz 2020/01/27 | 916 | systems/texlive/tlnet/archive/texlive-scripts-extra.aarch64-linux.r53577.tar.xz 2020/01/27 | 924 | systems/texlive/tlnet/archive/texlive-scripts-extra.amd64-freebsd.r53577.tar.xz 2020/01/27 | 916 | systems/texlive/tlnet/archive/texlive-scripts-extra.amd64-netbsd.r53577.tar.xz @@ -318264,7 +318267,7 @@ 2022/09/13 | 592 | systems/texlive/tlnet/archive/texlive-scripts.i386-linux.r64356.tar.xz 2022/09/13 | 596 | systems/texlive/tlnet/archive/texlive-scripts.i386-netbsd.r64356.tar.xz 2022/09/13 | 596 | systems/texlive/tlnet/archive/texlive-scripts.i386-solaris.r64356.tar.xz -2024/06/14 | 114412 | systems/texlive/tlnet/archive/texlive-scripts.r71516.tar.xz +2024/06/15 | 114376 | systems/texlive/tlnet/archive/texlive-scripts.r71528.tar.xz 2022/09/13 | 580 | systems/texlive/tlnet/archive/texlive-scripts.universal-darwin.r64356.tar.xz 2024/05/10 | 60592 | systems/texlive/tlnet/archive/texlive-scripts.windows.r71215.tar.xz 2022/09/13 | 596 | systems/texlive/tlnet/archive/texlive-scripts.x86_64-cygwin.r64356.tar.xz @@ -318300,12 +318303,12 @@ 2022/01/29 | 344 | systems/texlive/tlnet/archive/texlogfilter.amd64-freebsd.r61780.tar.xz 2022/01/29 | 340 | systems/texlive/tlnet/archive/texlogfilter.amd64-netbsd.r61780.tar.xz 2022/01/29 | 340 | systems/texlive/tlnet/archive/texlogfilter.armhf-linux.r61780.tar.xz -2024/02/17 | 29452 | systems/texlive/tlnet/archive/texlogfilter.doc.r69918.tar.xz +2024/06/15 | 29540 | systems/texlive/tlnet/archive/texlogfilter.doc.r71525.tar.xz 2022/01/29 | 340 | systems/texlive/tlnet/archive/texlogfilter.i386-freebsd.r61780.tar.xz 2022/01/29 | 336 | systems/texlive/tlnet/archive/texlogfilter.i386-linux.r61780.tar.xz 2022/01/29 | 340 | systems/texlive/tlnet/archive/texlogfilter.i386-netbsd.r61780.tar.xz 2022/01/29 | 340 | systems/texlive/tlnet/archive/texlogfilter.i386-solaris.r61780.tar.xz -2024/02/17 | 3884 | systems/texlive/tlnet/archive/texlogfilter.r69918.tar.xz +2024/06/15 | 3944 | systems/texlive/tlnet/archive/texlogfilter.r71525.tar.xz 2022/01/29 | 344 | systems/texlive/tlnet/archive/texlogfilter.universal-darwin.r61780.tar.xz 2023/02/20 | 2308 | systems/texlive/tlnet/archive/texlogfilter.windows.r65891.tar.xz 2022/01/29 | 344 | systems/texlive/tlnet/archive/texlogfilter.x86_64-cygwin.r61780.tar.xz @@ -318498,9 +318501,9 @@ 2024/01/10 | 2524 | systems/texlive/tlnet/archive/thematicpuzzle.r69356.tar.xz 2020/03/24 | 333032 | systems/texlive/tlnet/archive/theoremref.doc.r54512.tar.xz 2020/03/24 | 4104 | systems/texlive/tlnet/archive/theoremref.r54512.tar.xz -2023/12/11 | 266980 | systems/texlive/tlnet/archive/thermodynamics.doc.r69086.tar.xz -2023/12/11 | 9176 | systems/texlive/tlnet/archive/thermodynamics.r69086.tar.xz -2023/12/11 | 34088 | systems/texlive/tlnet/archive/thermodynamics.source.r69086.tar.xz +2024/06/15 | 328944 | systems/texlive/tlnet/archive/thermodynamics.doc.r71522.tar.xz +2024/06/15 | 11124 | systems/texlive/tlnet/archive/thermodynamics.r71522.tar.xz +2024/06/15 | 42000 | systems/texlive/tlnet/archive/thermodynamics.source.r71522.tar.xz 2024/04/19 | 197892 | systems/texlive/tlnet/archive/thesis-ekf.doc.r70980.tar.xz 2024/04/19 | 113128 | systems/texlive/tlnet/archive/thesis-ekf.r70980.tar.xz 2024/04/19 | 8944 | systems/texlive/tlnet/archive/thesis-ekf.source.r70980.tar.xz @@ -318873,9 +318876,9 @@ 2019/02/28 | 142452 | systems/texlive/tlnet/archive/toolbox.doc.r32260.tar.xz 2019/02/28 | 3052 | systems/texlive/tlnet/archive/toolbox.r32260.tar.xz 2019/02/28 | 24148 | systems/texlive/tlnet/archive/toolbox.source.r32260.tar.xz -2024/06/03 | 6310328 | systems/texlive/tlnet/archive/tools.doc.r71408.tar.xz -2024/06/03 | 45880 | systems/texlive/tlnet/archive/tools.r71408.tar.xz -2024/06/03 | 241352 | systems/texlive/tlnet/archive/tools.source.r71408.tar.xz +2024/06/15 | 6310444 | systems/texlive/tlnet/archive/tools.doc.r71523.tar.xz +2024/06/15 | 45888 | systems/texlive/tlnet/archive/tools.r71523.tar.xz +2024/06/15 | 241392 | systems/texlive/tlnet/archive/tools.source.r71523.tar.xz 2019/02/28 | 40340 | systems/texlive/tlnet/archive/topfloat.doc.r19084.tar.xz 2019/02/28 | 1392 | systems/texlive/tlnet/archive/topfloat.r19084.tar.xz 2020/04/16 | 379756 | systems/texlive/tlnet/archive/topiclongtable.doc.r54758.tar.xz @@ -320213,16 +320216,16 @@ 2020/07/18 | 47816 | systems/texlive/tlnet/archive/zztex.doc.r55862.tar.xz 2020/07/18 | 101724 | systems/texlive/tlnet/archive/zztex.r55862.tar.xz 2024/05/02 | 125808 | systems/texlive/tlnet/install-tl -2024/06/14 | 5752962 | systems/texlive/tlnet/install-tl-unx.tar.gz -2024/06/14 | 152 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512 -2024/06/14 | 488 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512.asc +2024/06/15 | 5752802 | systems/texlive/tlnet/install-tl-unx.tar.gz +2024/06/15 | 152 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512 +2024/06/15 | 488 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512.asc 2024/04/13 | 5743 | systems/texlive/tlnet/install-tl-windows.bat -2024/06/14 | 27718687 | systems/texlive/tlnet/install-tl-windows.exe -2024/06/14 | 153 | systems/texlive/tlnet/install-tl-windows.exe.sha512 -2024/06/14 | 488 | systems/texlive/tlnet/install-tl-windows.exe.sha512.asc -2024/06/14 | 34426660 | systems/texlive/tlnet/install-tl.zip -2024/06/14 | 145 | systems/texlive/tlnet/install-tl.zip.sha512 -2024/06/14 | 488 | systems/texlive/tlnet/install-tl.zip.sha512.asc +2024/06/15 | 27718492 | systems/texlive/tlnet/install-tl-windows.exe +2024/06/15 | 153 | systems/texlive/tlnet/install-tl-windows.exe.sha512 +2024/06/15 | 488 | systems/texlive/tlnet/install-tl-windows.exe.sha512.asc +2024/06/15 | 34426635 | systems/texlive/tlnet/install-tl.zip +2024/06/15 | 145 | systems/texlive/tlnet/install-tl.zip.sha512 +2024/06/15 | 488 | systems/texlive/tlnet/install-tl.zip.sha512.asc 2024/03/13 | 1229 | systems/texlive/tlnet/README.md 2024/03/13 | 0 | systems/texlive/tlnet/TEXLIVE_2024 2024/01/02 | 9011 | systems/texlive/tlnet/tlpkg/gpg/pubring.gpg @@ -320232,7 +320235,7 @@ 2024/01/02 | 1280 | systems/texlive/tlnet/tlpkg/gpg/trustdb.gpg 2024/01/16 | 50726 | systems/texlive/tlnet/tlpkg/installer/config.guess 2010/11/11 | 11651 | systems/texlive/tlnet/tlpkg/installer/COPYING.MinGW-runtime.txt -2024/06/14 | 7312 | systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl +2024/06/15 | 7141 | systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl 2024/03/15 | 229654 | systems/texlive/tlnet/tlpkg/installer/curl/curl-ca-bundle.crt 2020/04/15 | 2606592 | systems/texlive/tlnet/tlpkg/installer/curl/curl.exe 2017/04/16 | 2629 | systems/texlive/tlnet/tlpkg/installer/installer-options.txt @@ -320274,12 +320277,12 @@ 2023/02/21 | 20371 | systems/texlive/tlnet/tlpkg/TeXLive/TLCrypto.pm 2024/05/02 | 5898 | systems/texlive/tlnet/tlpkg/TeXLive/TLDownload.pm 2023/04/08 | 28167 | systems/texlive/tlnet/tlpkg/TeXLive/TLPaper.pm -2024/06/14 | 19511356 | systems/texlive/tlnet/tlpkg/texlive.tlpdb -2024/06/14 | 48 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5 +2024/06/15 | 19512783 | systems/texlive/tlnet/tlpkg/texlive.tlpdb +2024/06/15 | 48 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5 2024/05/02 | 87729 | systems/texlive/tlnet/tlpkg/TeXLive/TLPDB.pm -2024/06/14 | 144 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512 -2024/06/14 | 488 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc -2024/06/14 | 2582532 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz +2024/06/15 | 144 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512 +2024/06/15 | 488 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc +2024/06/15 | 2577396 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz 2023/02/20 | 58928 | systems/texlive/tlnet/tlpkg/TeXLive/TLPOBJ.pm 2023/06/11 | 42749 | systems/texlive/tlnet/tlpkg/TeXLive/TLPSRC.pm 2023/02/21 | 16138 | systems/texlive/tlnet/tlpkg/TeXLive/TLTREE.pm @@ -331843,7 +331846,7 @@ 2014/07/05 | 611 | systems/win32/yandy/README 2014/07/05 | 1004628 | systems/win32/yandy/yandy-src.tar.xz 2014/07/05 | 1012416 | systems/win32/yandy.zip -2024/06/15 | 186 | timestamp +2024/06/16 | 186 | timestamp 2002/08/26 | 61898 | usergrps/dante/antrag.pdf 2002/08/26 | 118217 | usergrps/dante/antrag.ps 2021/11/11 | 917 | usergrps/dante/dtk/doc/beispiel.bib diff --git a/FILES.byname.gz b/FILES.byname.gz index 65d5438158..9eb4c0f45a 100644 Binary files a/FILES.byname.gz and b/FILES.byname.gz differ diff --git a/FILES.last07days b/FILES.last07days index d1e6ed7413..c1e5e373ec 100644 --- a/FILES.last07days +++ b/FILES.last07days @@ -1,3 +1,145 @@ +2024/06/15 | 9995120 | systems/texlive/tlnet/archive/pgf.doc.r71527.tar.xz +2024/06/15 | 9859 | support/latexindent/LatexIndent/Lines.pm +2024/06/15 | 95260 | info/ptex-manual/eptex_resume.tex +2024/06/15 | 951902 | graphics/pgf/contrib/tkz-grapheur.zip +2024/06/15 | 9482185 | support/latexindent/bin/windows/latexindent.exe +2024/06/15 | 9005 | support/latexindent/LatexIndent/FileExtension.pm +2024/06/15 | 89520 | systems/texlive/tlnet/archive/ctex.source.r71527.tar.xz +2024/06/15 | 8893 | support/latexindent/LatexIndent/IfElseFi.pm +2024/06/15 | 838 | support/latexindent/LatexIndent/Version.pm +2024/06/15 | 8346 | support/latexindent/LatexIndent/Environment.pm +2024/06/15 | 801892 | graphics/pgf/contrib/tkz-grapheur/doc/tkz-grapheur-doc-fr.pdf +2024/06/15 | 7875395 | support/latexindent/bin/linux/latexindent +2024/06/15 | 78046 | info/ptex-manual/eptexdoc.tex +2024/06/15 | 7569205 | support/latexindent/bin/macos/latexindent +2024/06/15 | 74691 | graphics/pgf/contrib/tkz-grapheur/doc/tkz-grapheur-doc-fr.tex +2024/06/15 | 74552 | graphics/pgf/contrib/tkz-grapheur/tex/tkz-grapheur.sty +2024/06/15 | 740 | systems/texlive/tlnet/archive/collection-latexrecommended.r71527.tar.xz +2024/06/15 | 7379 | support/latexindent/LatexIndent/MandatoryArgument.pm +2024/06/15 | 7224 | systems/texlive/tlnet/archive/collection-latexextra.r71526.tar.xz +2024/06/15 | 7180 | support/latexindent/LatexIndent/TrailingComments.pm +2024/06/15 | 717460 | systems/texlive/tlnet/archive/pgf.r71527.tar.xz +2024/06/15 | 7161 | support/latexindent/documentation/figure-schematic.png +2024/06/15 | 7141 | systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl +2024/06/15 | 6892 | support/latexindent/documentation/contributors.bib +2024/06/15 | 6890 | support/latexindent/LatexIndent/Item.pm +2024/06/15 | 68177 | support/latexindent/LatexIndent/AlignmentAtAmpersand.pm +2024/06/15 | 67904 | systems/texlive/tlnet/archive/siunitx.r71521.tar.xz +2024/06/15 | 6620 | support/latexindent/LatexIndent/OptionalArgument.pm +2024/06/15 | 6616 | support/latexindent/LatexIndent/BackUpFileProcedure.pm +2024/06/15 | 655276 | systems/texlive/tlnet/archive/easybook.doc.r71519.tar.xz +2024/06/15 | 6520 | support/latexindent/LatexIndent/UTF8CmdLineArgsFileOperation.pm +2024/06/15 | 6391 | support/latexindent/LatexIndent/Else.pm +2024/06/15 | 6310444 | systems/texlive/tlnet/archive/tools.doc.r71523.tar.xz +2024/06/15 | 6148 | systems/texlive/tlnet/archive/count1to.source.r71526.tar.xz +2024/06/15 | 61421 | support/latexindent/documentation/latexindent-yaml-schema.json +2024/06/15 | 5857 | support/latexindent/LatexIndent/UnNamedGroupingBracesBrackets.pm +2024/06/15 | 5780 | systems/texlive/tlnet/archive/multitoc.source.r71520.tar.xz +2024/06/15 | 5752802 | systems/texlive/tlnet/install-tl-unx.tar.gz +2024/06/15 | 5742 | info/ptex-manual/ptex-manual.sty +2024/06/15 | 55478 | support/latexindent/LatexIndent/GetYamlSettings.pm +2024/06/15 | 5478 | support/latexindent/LatexIndent/KeyEqualsValuesBraces.pm +2024/06/15 | 5432 | support/latexindent/LatexIndent/Check.pm +2024/06/15 | 539720 | systems/texlive/tlnet/archive/count1to.doc.r71526.tar.xz +2024/06/15 | 4946 | support/latexindent/latexindent.pl +2024/06/15 | 48 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5 +2024/06/15 | 48981 | info/ptex-manual/jfm.tex +2024/06/15 | 488 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc +2024/06/15 | 488 | systems/texlive/tlnet/install-tl.zip.sha512.asc +2024/06/15 | 488 | systems/texlive/tlnet/install-tl-windows.exe.sha512.asc +2024/06/15 | 488 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512.asc +2024/06/15 | 48698 | info/ptex-manual/ptex-guide-en.tex +2024/06/15 | 4860 | support/latexindent/LatexIndent/BlankLines.pm +2024/06/15 | 45888 | systems/texlive/tlnet/archive/tools.r71523.tar.xz +2024/06/15 | 446500 | support/latexindent/documentation/latexindent.tex +2024/06/15 | 44096 | support/latexindent/documentation/logo.png +2024/06/15 | 4404 | support/latexindent/LatexIndent/RoundBrackets.pm +2024/06/15 | 440419 | macros/latex/contrib/scontents.zip +2024/06/15 | 4402 | support/latexindent/documentation/latex-indent.bib +2024/06/15 | 4388 | support/latexindent/LatexIndent/NamedGroupingBracesBrackets.pm +2024/06/15 | 436256 | systems/texlive/tlnet/archive/texlive-scripts.doc.r71528.tar.xz +2024/06/15 | 429100 | macros/latex/contrib/scontents/scontents.pdf +2024/06/15 | 42357 | info/ptex-manual/ptexdoc_asciimw.tex +2024/06/15 | 42000 | systems/texlive/tlnet/archive/thermodynamics.source.r71522.tar.xz +2024/06/15 | 4122446 | biblio/ctan-bibdata.zip +2024/06/15 | 404345 | info/ptex-manual/ptex-manual.pdf +2024/06/15 | 40020 | systems/texlive/tlnet/archive/luamplib.source.r71524.tar.xz +2024/06/15 | 3944 | systems/texlive/tlnet/archive/texlogfilter.r71525.tar.xz +2024/06/15 | 381916 | info/ptex-manual/eptexdoc.pdf +2024/06/15 | 3708800 | biblio/ctan-bibdata/ctan.pdf +2024/06/15 | 35293 | info/ptex-manual/jtex_asciimw.tex +2024/06/15 | 3524676 | systems/texlive/tlnet/archive/simpleicons.r71518.tar.xz +2024/06/15 | 35225 | support/latexindent/LatexIndent/Wrap.pm +2024/06/15 | 3517 | support/latexindent/LatexIndent/HorizontalWhiteSpace.pm +2024/06/15 | 3515 | support/latexindent/LatexIndent/Replacement.pm +2024/06/15 | 34426635 | systems/texlive/tlnet/install-tl.zip +2024/06/15 | 3372 | info/ptex-manual/fam256p.tex +2024/06/15 | 3353 | support/latexindent/LatexIndent/Tokens.pm +2024/06/15 | 328944 | systems/texlive/tlnet/archive/thermodynamics.doc.r71522.tar.xz +2024/06/15 | 3173 | info/ptex-manual/fam256d.tex +2024/06/15 | 3089922 | info/ptex-manual.zip +2024/06/15 | 29540 | systems/texlive/tlnet/archive/texlogfilter.doc.r71525.tar.xz +2024/06/15 | 2873038 | biblio/ctan-bibdata/ctan.bib +2024/06/15 | 27718492 | systems/texlive/tlnet/install-tl-windows.exe +2024/06/15 | 276500 | systems/texlive/tlnet/archive/multitoc.doc.r71520.tar.xz +2024/06/15 | 27422 | support/latexindent/LatexIndent/Verbatim.pm +2024/06/15 | 2733 | support/latexindent/LatexIndent/Preamble.pm +2024/06/15 | 2712 | support/latexindent/LatexIndent/Switches.pm +2024/06/15 | 264764 | info/ptex-manual/ptexdoc_asciimw.pdf +2024/06/15 | 25865 | support/latexindent/LatexIndent/Document.pm +2024/06/15 | 2577396 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz +2024/06/15 | 2572176 | systems/texlive/tlnet/archive/simpleicons.doc.r71518.tar.xz +2024/06/15 | 251872 | info/ptex-manual/jtex_asciimw.pdf +2024/06/15 | 24449 | support/latexindent/LatexIndent/Arguments.pm +2024/06/15 | 241392 | systems/texlive/tlnet/archive/tools.source.r71523.tar.xz +2024/06/15 | 235593 | info/ptex-manual/jfm.pdf +2024/06/15 | 2350 | macros/latex/contrib/scontents/README.md +2024/06/15 | 2331 | support/latexindent/LatexIndent/Logger.pm +2024/06/15 | 22345 | support/latexindent/LatexIndent/Sentence.pm +2024/06/15 | 2224 | macros/latex/contrib/scontents/scontents.ins +2024/06/15 | 22228 | support/latexindent/defaultSettings.yaml +2024/06/15 | 217072 | systems/texlive/tlnet/archive/luamplib.doc.r71524.tar.xz +2024/06/15 | 21292 | systems/texlive/tlnet/archive/luamplib.r71524.tar.xz +2024/06/15 | 20870 | support/latexindent/LatexIndent/Indent.pm +2024/06/15 | 20341 | info/ptex-manual/jtexdoc_asciimw.tex +2024/06/15 | 2008 | support/latexindent/README +2024/06/15 | 19615 | info/ptex-manual/ptexskip_asciimw.tex +2024/06/15 | 19512783 | systems/texlive/tlnet/tlpkg/texlive.tlpdb +2024/06/15 | 18591 | support/latexindent/LatexIndent/ModifyLineBreaks.pm +2024/06/15 | 18388 | systems/texlive/tlnet/archive/easybook.r71519.tar.xz +2024/06/15 | 18292 | systems/texlive/tlnet/archive/easybook.source.r71519.tar.xz +2024/06/15 | 1700 | systems/texlive/tlnet/archive/count1to.r71526.tar.xz +2024/06/15 | 1678 | biblio/ctan-bibdata/biblatex-ctan/ctan.bbx +2024/06/15 | 164929 | info/ptex-manual/ptexskip_asciimw.pdf +2024/06/15 | 1558 | support/latexindent/latexindent-module-installer.pl +2024/06/15 | 153 | systems/texlive/tlnet/install-tl-windows.exe.sha512 +2024/06/15 | 152 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512 +2024/06/15 | 1516 | info/ptex-manual/LICENSE +2024/06/15 | 1512 | systems/texlive/tlnet/archive/multitoc.r71520.tar.xz +2024/06/15 | 1500 | support/latexindent/LatexIndent/DoubleBackSlash.pm +2024/06/15 | 148019 | macros/latex/contrib/scontents/scontents.dtx +2024/06/15 | 145 | systems/texlive/tlnet/install-tl.zip.sha512 +2024/06/15 | 145802 | info/ptex-manual/ptex-manual.tex +2024/06/15 | 145704 | info/ptex-manual/jtexdoc_asciimw.pdf +2024/06/15 | 144 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512 +2024/06/15 | 14059 | support/latexindent/LatexIndent/LogFile.pm +2024/06/15 | 13923 | support/latexindent/LatexIndent/Special.pm +2024/06/15 | 13470 | support/latexindent/LatexIndent/HiddenChildren.pm +2024/06/15 | 130984 | systems/texlive/tlnet/archive/ctex.r71527.tar.xz +2024/06/15 | 1297627 | support/latexindent/documentation/latexindent.pdf +2024/06/15 | 12969815 | support/latexindent.zip +2024/06/15 | 1286784 | systems/texlive/tlnet/archive/siunitx.doc.r71521.tar.xz +2024/06/15 | 12653 | support/latexindent/LatexIndent/Braces.pm +2024/06/15 | 123128 | systems/texlive/tlnet/archive/siunitx.source.r71521.tar.xz +2024/06/15 | 1206 | info/ptex-manual/README.md +2024/06/15 | 115730 | info/ptex-manual/ptex-guide-en.pdf +2024/06/15 | 11509 | support/latexindent/LatexIndent/FileContents.pm +2024/06/15 | 114376 | systems/texlive/tlnet/archive/texlive-scripts.r71528.tar.xz +2024/06/15 | 1143636 | systems/texlive/tlnet/archive/ctex.doc.r71527.tar.xz +2024/06/15 | 11206 | support/latexindent/LatexIndent/Heading.pm +2024/06/15 | 11124 | systems/texlive/tlnet/archive/thermodynamics.r71522.tar.xz +2024/06/15 | 10648 | support/latexindent/LatexIndent/Command.pm +2024/06/15 | 1012994 | info/ptex-manual/eptex_resume.pdf 2024/06/14 | 9620 | systems/texlive/tlnet/archive/afm2pl.r71515.tar.xz 2024/06/14 | 9559 | macros/latex/required/tools/shellesc.dtx 2024/06/14 | 9443 | macros/latex/contrib/siunitx/siunitx-symbol.dtx @@ -15,15 +157,12 @@ 2024/06/14 | 777 | macros/latex/contrib/count1to/README.md 2024/06/14 | 73673 | macros/latex/required/tools/tools-overview.pdf 2024/06/14 | 732 | systems/texlive/tlnet/archive/texworks.doc.r71515.tar.xz -2024/06/14 | 7312 | systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl 2024/06/14 | 72911 | macros/latex/required/tools/verbatim.dtx -2024/06/14 | 7220 | systems/texlive/tlnet/archive/collection-latexextra.r71514.tar.xz 2024/06/14 | 703908 | macros/latex/contrib/siunitx/siunitx.pdf 2024/06/14 | 6789 | macros/latex/required/tools/delarray.dtx 2024/06/14 | 677334 | macros/latex/contrib/easybook.zip 2024/06/14 | 66063 | macros/latex/required/tools/changes.txt 2024/06/14 | 656 | systems/texlive/tlnet/archive/collection-xetex.r71515.tar.xz -2024/06/14 | 654508 | systems/texlive/tlnet/archive/easybook.doc.r71511.tar.xz 2024/06/14 | 645866 | macros/latex/contrib/siunitx/siunitx-code.pdf 2024/06/14 | 643100 | systems/texlive/tlnet/archive/texlive-common.doc.r71516.tar.xz 2024/06/14 | 6424314 | fonts/simpleicons.zip @@ -33,7 +172,6 @@ 2024/06/14 | 5816 | macros/latex/contrib/siunitx/siunitx-locale.dtx 2024/06/14 | 5791 | macros/latex/required/tools/somedefs.dtx 2024/06/14 | 5771 | macros/latex/required/tools/tools.ins -2024/06/14 | 5752962 | systems/texlive/tlnet/install-tl-unx.tar.gz 2024/06/14 | 55714 | macros/latex/contrib/siunitx/siunitx-table.dtx 2024/06/14 | 552995 | macros/latex/contrib/count1to/count1to.pdf 2024/06/14 | 544801 | macros/latex/contrib/count1to.zip @@ -43,21 +181,13 @@ 2024/06/14 | 5211 | macros/latex/required/tools/tools-overview.tex 2024/06/14 | 4959 | macros/latex/required/tools/fileerr.dtx 2024/06/14 | 492 | systems/texlive/tlnet/archive/texworks.r71515.tar.xz -2024/06/14 | 48 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5 -2024/06/14 | 488 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc -2024/06/14 | 488 | systems/texlive/tlnet/install-tl.zip.sha512.asc -2024/06/14 | 488 | systems/texlive/tlnet/install-tl-windows.exe.sha512.asc -2024/06/14 | 488 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512.asc 2024/06/14 | 482622 | macros/latex/required/tools/l3sys-query.pdf 2024/06/14 | 4748 | macros/latex/contrib/siunitx/siunitx-abbreviations.cfg 2024/06/14 | 43854 | macros/latex/contrib/siunitx/siunitx-compound.dtx -2024/06/14 | 436236 | systems/texlive/tlnet/archive/texlive-scripts.doc.r71516.tar.xz 2024/06/14 | 43446 | macros/latex/required/tools/theorem.dtx 2024/06/14 | 41300 | systems/texlive/tlnet/archive/afm2pl.doc.r71515.tar.xz -2024/06/14 | 4122445 | biblio/ctan-bibdata.zip 2024/06/14 | 4079 | support/texlogfilter/texlogfilter.html 2024/06/14 | 4072 | systems/texlive/tlnet/archive/spelatex.r71514.tar.xz -2024/06/14 | 40024 | systems/texlive/tlnet/archive/luamplib.source.r71512.tar.xz 2024/06/14 | 399651 | macros/latex/required/tools/longtable.pdf 2024/06/14 | 39697 | macros/latex/required/tools/ftnright.dtx 2024/06/14 | 3938 | fonts/simpleicons/enc/simpleiconsfive.enc @@ -71,7 +201,6 @@ 2024/06/14 | 37462 | macros/latex/required/tools/tabularx.dtx 2024/06/14 | 374324 | macros/latex/contrib/thermodynamics.zip 2024/06/14 | 3727 | fonts/simpleicons/enc/simpleiconsoneone.enc -2024/06/14 | 3708800 | biblio/ctan-bibdata/ctan.pdf 2024/06/14 | 370660 | macros/latex/required/tools/calc.pdf 2024/06/14 | 3684 | fonts/simpleicons/enc/simpleiconsonezero.enc 2024/06/14 | 3682 | macros/latex/contrib/siunitx/siunitx.ins @@ -83,7 +212,6 @@ 2024/06/14 | 3544 | fonts/simpleicons/enc/simpleiconseight.enc 2024/06/14 | 351671 | macros/latex/required/tools/theorem.pdf 2024/06/14 | 348 | systems/texlive/tlnet/archive/texlive-common.r71516.tar.xz -2024/06/14 | 34426660 | systems/texlive/tlnet/install-tl.zip 2024/06/14 | 340 | systems/texlive/tlnet/archive/collection-texworks.r71515.tar.xz 2024/06/14 | 3401 | fonts/simpleicons/enc/simpleiconssix.enc 2024/06/14 | 34011 | macros/latex/required/tools/varioref-2016-02-16.sty @@ -104,11 +232,9 @@ 2024/06/14 | 29812 | macros/latex/required/tools/multicol-2017-04-11.sty 2024/06/14 | 2941 | macros/latex/contrib/siunitx/siunitx-binary.dtx 2024/06/14 | 289601 | macros/latex/required/tools/tabularx.pdf -2024/06/14 | 2873098 | biblio/ctan-bibdata/ctan.bib 2024/06/14 | 285181 | macros/latex/contrib/multitoc/multitoc.pdf 2024/06/14 | 281130 | macros/latex/contrib/multitoc.zip 2024/06/14 | 279 | fonts/simpleicons/tex/usimpleiconsonethree.fd -2024/06/14 | 27718687 | systems/texlive/tlnet/install-tl-windows.exe 2024/06/14 | 274 | fonts/simpleicons/tex/usimpleiconsonezero.fd 2024/06/14 | 2749 | macros/latex/required/tools/xr-2023-07-04.sty 2024/06/14 | 2748 | fonts/simpleicons/enc/simpleiconsonethree.enc @@ -124,7 +250,6 @@ 2024/06/14 | 259 | fonts/simpleicons/tex/usimpleiconsnine.fd 2024/06/14 | 259 | fonts/simpleicons/tex/usimpleiconsfour.fd 2024/06/14 | 259 | fonts/simpleicons/tex/usimpleiconsfive.fd -2024/06/14 | 2582532 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz 2024/06/14 | 2576 | macros/latex/required/tools/multicol.ins 2024/06/14 | 257027 | macros/latex/required/tools/xspace.pdf 2024/06/14 | 2560887 | fonts/simpleicons/doc/simpleicons.pdf @@ -147,21 +272,16 @@ 2024/06/14 | 222074 | macros/latex/required/tools/trace.pdf 2024/06/14 | 2219 | macros/latex/required/tools/indentfirst.dtx 2024/06/14 | 221038 | macros/latex/required/tools/dcolumn.pdf -2024/06/14 | 217040 | systems/texlive/tlnet/archive/luamplib.doc.r71512.tar.xz 2024/06/14 | 215077 | macros/latex/required/tools/enumerate.pdf -2024/06/14 | 21288 | systems/texlive/tlnet/archive/luamplib.r71512.tar.xz 2024/06/14 | 21076 | macros/latex/required/tools/l3sys-query.dtx 2024/06/14 | 20624 | systems/texlive/tlnet/archive/spelatex.source.r71514.tar.xz 2024/06/14 | 198100 | macros/latex/required/tools/afterpage.pdf -2024/06/14 | 19511356 | systems/texlive/tlnet/tlpkg/texlive.tlpdb 2024/06/14 | 191058 | macros/latex/required/tools/delarray.pdf 2024/06/14 | 189678 | macros/latex/required/tools/hhline.pdf 2024/06/14 | 188159 | macros/latex/required/tools/multicol.dtx 2024/06/14 | 187633 | macros/latex/required/tools/fileerr.pdf 2024/06/14 | 18426 | macros/latex/contrib/siunitx/siunitx-angle.dtx -2024/06/14 | 18352 | systems/texlive/tlnet/archive/easybook.r71511.tar.xz 2024/06/14 | 182611 | fonts/simpleicons/doc/bindings.tex -2024/06/14 | 18244 | systems/texlive/tlnet/archive/easybook.source.r71511.tar.xz 2024/06/14 | 1812 | fonts/simpleicons/doc/simpleicons.tex 2024/06/14 | 17856 | macros/latex/required/tools/xspace.dtx 2024/06/14 | 17624 | macros/latex/contrib/count1to/count1to.dtx @@ -170,28 +290,24 @@ 2024/06/14 | 1729 | macros/latex/contrib/siunitx/siunitx-binary.cfg 2024/06/14 | 16905 | macros/latex/contrib/multitoc/multitoc.dtx 2024/06/14 | 168559 | macros/latex/contrib/siunitx/siunitx.tex -2024/06/14 | 1678 | biblio/ctan-bibdata/biblatex-ctan/ctan.bbx 2024/06/14 | 167583 | macros/latex/required/tools/somedefs.pdf 2024/06/14 | 1651 | macros/latex/required/tools/README.md 2024/06/14 | 163202 | macros/latex/contrib/siunitx/siunitx-number.dtx 2024/06/14 | 1591628 | install/macros/latex/contrib/siunitx.tds.zip 2024/06/14 | 157352 | macros/latex/required/tools/indentfirst.pdf 2024/06/14 | 1544090 | macros/latex/contrib/siunitx.zip -2024/06/14 | 153 | systems/texlive/tlnet/install-tl-windows.exe.sha512 -2024/06/14 | 152 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512 2024/06/14 | 15296 | macros/latex/contrib/siunitx/siunitx-quantity.dtx 2024/06/14 | 15280 | systems/texlive/tlnet/archive/pdfxup.r71513.tar.xz 2024/06/14 | 152056 | systems/texlive/tlnet/archive/texlive-msg-translations.r71515.tar.xz 2024/06/14 | 1476 | fonts/simpleicons/map/simpleicons.map 2024/06/14 | 146438 | macros/latex/required/tools/fontsmpl.pdf -2024/06/14 | 145 | systems/texlive/tlnet/install-tl.zip.sha512 -2024/06/14 | 144 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512 2024/06/14 | 1413 | macros/latex/contrib/count1to/count1to.ins 2024/06/14 | 1412 | macros/latex/contrib/multitoc/multitoc.ins 2024/06/14 | 14075 | macros/latex/required/tools/afterpage.dtx 2024/06/14 | 140114 | macros/latex/required/tools/array.dtx 2024/06/14 | 138956 | macros/latex/required/tools/rawfonts.pdf 2024/06/14 | 13459 | support/texlogfilter.zip +2024/06/14 | 134450644 | macros/context/latest/cont-tmf.zip 2024/06/14 | 1318 | macros/latex/contrib/multitoc/README.md 2024/06/14 | 12830 | support/texlogfilter/texlogfilter 2024/06/14 | 12706 | macros/latex/required/tools/dcolumn.dtx @@ -216,7 +332,6 @@ 2024/06/14 | 11849 | macros/latex/required/tools/array-2016-10-06.sty 2024/06/14 | 1166 | macros/latex/contrib/siunitx/README.md 2024/06/14 | 114484 | macros/latex/required/tools/varioref.dtx -2024/06/14 | 114412 | systems/texlive/tlnet/archive/texlive-scripts.r71516.tar.xz 2024/06/14 | 11252 | macros/latex/contrib/siunitx/siunitx-abbreviation.dtx 2024/06/14 | 11148 | macros/latex/required/tools/hhline.dtx 2024/06/14 | 10771 | macros/latex/required/tools/fontsmpl.dtx @@ -1286,7 +1401,6 @@ 2024/06/11 | 36134 | macros/latex/base/ltnews39.tex 2024/06/11 | 35431 | macros/latex/base/ltdirchk.dtx 2024/06/11 | 353555 | macros/latex/base/utf8ienc.pdf -2024/06/11 | 3512312 | systems/texlive/tlnet/archive/simpleicons.r71475.tar.xz 2024/06/11 | 3434 | macros/latex/base/makeindx.ins 2024/06/11 | 34139 | macros/latex/base/ltproperties.dtx 2024/06/11 | 3401 | macros/latex/base/proc.ins @@ -1340,7 +1454,6 @@ 2024/06/11 | 26000 | systems/texlive/tlnet/archive/se2thesis.source.r71473.tar.xz 2024/06/11 | 257825 | macros/latex/base/modguide.pdf 2024/06/11 | 257359 | macros/latex/base/cyrguide.pdf -2024/06/11 | 2563368 | systems/texlive/tlnet/archive/simpleicons.doc.r71475.tar.xz 2024/06/11 | 2561 | macros/latex/contrib/beamer-contrib/themes/beamertheme-arguelles/beamerthemeArguelles.sty 2024/06/11 | 254384 | systems/texlive/tlnet/archive/citation-style-language.doc.r71468.tar.xz 2024/06/11 | 252519 | macros/latex/base/lb2.pdf @@ -1531,7 +1644,6 @@ 2024/06/09 | 64261 | biblio/citation-style-language/citeproc-output.lua 2024/06/09 | 6212 | biblio/citation-style-language/citeproc-ir-node.lua 2024/06/09 | 62104 | macros/latex/contrib/aomart/aomsample1.tex -2024/06/09 | 61992 | macros/latex/contrib/aomart/aomsample.tex 2024/06/09 | 617 | biblio/citation-style-language/citeproc-lua.1 2024/06/09 | 60592 | macros/latex/contrib/biblatex-contrib/biblatex-sbl/biblatex-sbl-ibid.pdf 2024/06/09 | 5834 | biblio/citation-style-language/nature.csl @@ -1655,13 +1767,3 @@ 2024/06/09 | 10723 | biblio/citation-style-language/harvard-cite-them-right.csl 2024/06/09 | 10588 | biblio/citation-style-language/american-chemical-society.csl 2024/06/09 | 10095 | biblio/citation-style-language/citation-style-language-init.sty -2024/06/08 | 564444 | macros/latex/contrib/msu-thesis.zip -2024/06/08 | 35944 | graphics/pgf/contrib/argumentation/argumentation-doc.tex -2024/06/08 | 313388 | systems/texlive/tlnet/archive/pst-optic.doc.r71455.tar.xz -2024/06/08 | 307239 | graphics/pgf/contrib/argumentation/argumentation-doc.pdf -2024/06/08 | 306578 | graphics/pgf/contrib/argumentation.zip -2024/06/08 | 302 | graphics/pgf/contrib/argumentation/README.md -2024/06/08 | 2529796 | systems/texlive/tlnet/archive/circuitikz.doc.r71455.tar.xz -2024/06/08 | 180304 | systems/texlive/tlnet/archive/circuitikz.r71455.tar.xz -2024/06/08 | 14696 | systems/texlive/tlnet/archive/pst-optic.r71455.tar.xz -2024/06/08 | 11356 | graphics/pgf/contrib/argumentation/argumentation.sty diff --git a/biblio/ctan-bibdata/ctan.bib b/biblio/ctan-bibdata/ctan.bib index 2688445df7..e0f83a8637 100644 --- a/biblio/ctan-bibdata/ctan.bib +++ b/biblio/ctan-bibdata/ctan.bib @@ -1,7 +1,7 @@ %% bib file of all CTAN packages %% (C) Herbert Voß %% -%% created at 15-06-2024, 02:00:03 +%% created at 16-06-2024, 02:00:03 %% %% This file is provided under the terms of the LPPL v1.3 or @@ -15949,7 +15949,7 @@ title = {The \texttt{count1to} package}, subtitle = {Make use of count1 to count9}, author = {Martin Schröder and Marei Peischl}, - date = {2024-06-14}, + date = {2024-06-15}, version = {2.11}, license = {lppl}, mirror = {https://mirror.ctan.org/macros/latex/contrib/count1to}, @@ -39023,8 +39023,8 @@ title = {The \texttt{latexindent} package}, subtitle = {Indent a \LaTeX{} document, highlighting the programming structure}, author = {Chris Hughes}, - date = {2024-05-12}, - version = {3.24.1}, + date = {2024-06-15}, + version = {3.24.2}, license = {gpl3}, mirror = {https://mirror.ctan.org/support/latexindent}, url = {https://ctan.org/pkg/latexindent}, @@ -47575,7 +47575,7 @@ title = {The \texttt{ms} package}, subtitle = {Various \LaTeX{} packages by Martin Schröder}, author = {Martin Schröder}, - date = {2024-06-14}, + date = {2024-06-15}, license = {lppl}, url = {https://ctan.org/pkg/ms}, } @@ -47993,7 +47993,7 @@ title = {The \texttt{multitoc} package}, subtitle = {Set table of contents in multiple columns}, author = {Martin Schröder and Marei Peischl}, - date = {2024-06-14}, + date = {2024-06-15}, version = {2.02}, license = {lppl}, mirror = {https://mirror.ctan.org/macros/latex/contrib/multitoc}, @@ -58179,7 +58179,7 @@ title = {The \texttt{ptex-manual} package}, subtitle = {Japanese pTeX manual}, author = {{Japanese TeX Development Community}}, - date = {2023-09-02}, + date = {2024-06-15}, version = {}, license = {bsd3}, mirror = {https://mirror.ctan.org/info/ptex-manual}, @@ -62025,8 +62025,8 @@ title = {The \texttt{scontents} package}, subtitle = {Stores \LaTeX{} contents in memory or files}, author = {Pablo González Luengo}, - date = {2022-04-04}, - version = {2.0}, + date = {2024-06-15}, + version = {2.1}, license = {lppl1.3c}, mirror = {https://mirror.ctan.org/macros/latex/contrib/scontents}, url = {https://ctan.org/pkg/scontents}, @@ -72206,8 +72206,8 @@ title = {The \texttt{tkz-grapheur} package}, subtitle = {A \LaTeX{} package with tools for graph plotting (and TikZ)}, author = {Cédric Pierquet}, - date = {2024-06-06}, - version = {0.1.3}, + date = {2024-06-15}, + version = {0.1.4}, license = {lppl1.3c}, mirror = {https://mirror.ctan.org/graphics/pgf/contrib/tkz-grapheur}, url = {https://ctan.org/pkg/tkz-grapheur}, diff --git a/graphics/pgf/contrib/tkz-grapheur/doc/tkz-grapheur-doc-fr.pdf b/graphics/pgf/contrib/tkz-grapheur/doc/tkz-grapheur-doc-fr.pdf index 808c1421a7..83fcc4e4f5 100644 Binary files a/graphics/pgf/contrib/tkz-grapheur/doc/tkz-grapheur-doc-fr.pdf and b/graphics/pgf/contrib/tkz-grapheur/doc/tkz-grapheur-doc-fr.pdf differ diff --git a/graphics/pgf/contrib/tkz-grapheur/doc/tkz-grapheur-doc-fr.tex b/graphics/pgf/contrib/tkz-grapheur/doc/tkz-grapheur-doc-fr.tex index 4d58cdb3ac..1a79a83cf8 100644 --- a/graphics/pgf/contrib/tkz-grapheur/doc/tkz-grapheur-doc-fr.tex +++ b/graphics/pgf/contrib/tkz-grapheur/doc/tkz-grapheur-doc-fr.tex @@ -29,8 +29,8 @@ \hypersetup{pdfborder=0 0 0} \usepackage[margin=2cm]{geometry} \setlength{\parindent}{0pt} -\def\TPversion{0.1.3} -\def\TPdate{06/06/2024} +\def\TPversion{0.1.4} +\def\TPdate{15/06/2024} \usepackage{soul} \usepackage{codehigh} \usepackage{tabularray} @@ -150,6 +150,7 @@ \vfill +\hfill{\footnotesize\textit{\ttfamily À mon papa.}} \vspace*{5mm} @@ -331,10 +332,11 @@ Concernant les styles des \textit{objets}, ils sont donnés ci-dessous. \tikzset{pflgrilles/.style={very thin,lightgray}} \tikzset{pflaxes/.style={line width=0.8pt,->,>=latex}} -%style des points (courbe / nuage) +%style des points (courbe / nuage /labels) \tikzset{pflpoint/.style={line width=0.95pt}} \tikzset{pflpointc/.style={radius=1.75pt}} \tikzset{pflpointnuage/.style={radius=1.75pt}} +\tikzset{pflnoeud/.style={}} %pour les inner sep par exemple :-) %style des courbes \tikzset{pflcourbe/.style={line width=1.05pt}} @@ -762,8 +764,8 @@ Les \MontreCode{[clés]}, optionnelles, disponibles sont : \end{itemize} \begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5} -\begin{GraphiqueTikz}[x=1.5cm,y=1.5cm] - \TracerAxesGrilles[Agrandir=2.5mm]{auto}{auto} +\begin{GraphiqueTikz}[x=1.5cm,y=1.5cm,Ymin=-2] + \TracerAxesGrilles[Elargir=2.5mm]{auto}{auto} \DefinirPts{A/1.75,-1.25}\MarquerPts[Couleur=pink]{(A)/A/below} %rond (par défaut) \MarquerPts[Couleur=teal]{(1,1)/M/below} \MarquerPts[Couleur=red,Style=x]{(1.25,1)/$A$/below} %croix @@ -778,8 +780,25 @@ Les \MontreCode{[clés]}, optionnelles, disponibles sont : \end{GraphiqueTikz} \end{tcblisting} +À noter qu'il est également possible de modifier la taille des marques \MontreCode{o/x/+/c} via les \MontreCode{[clés]} : + +\begin{itemize} + \item \MontreCode{Taillex=...} (\MontreCode{2pt} par défaut) pour les points \textit{croix} ; + \item \MontreCode{Tailleo=...} (\MontreCode{1.75pt} par défaut) pour les points \textit{cercle} ; + \item \MontreCode{Taillec=...} (\MontreCode{2pt} par défaut) pour les points \textit{carré}. +\end{itemize} + \pagebreak +\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5} +\begin{GraphiqueTikz}[x=1cm,y=1cm,Xmin=0,Ymin=0] + \TracerAxesGrilles[Elargir=2.5mm]{auto}{auto} + \MarquerPts[Couleur=red,Style=x,Taillex=3.5pt]{(1.25,1.25)/$A$/below} + \MarquerPts[Couleur=teal,Tailleo=2.5pt]{(2,2)/$A$/right} + \MarquerPts*[Couleur=orange,Style=c,Taillec=4pt]{(0.5,2.5)} +\end{GraphiqueTikz} +\end{tcblisting} + \subsection{Récupérer les coordonnées de nœuds}\label{recupcoordo} Il est également possible, dans l'optique d'une réutilisation de coordonnées, de récupérer les coordonnées d'un nœud (défini ou déterminé). @@ -795,6 +814,30 @@ Les calculs étant effectués en flottant en fonction des unités (re)calculées \RecupererCoordonnees{nœud}[\macrox][\macroy] \end{tcblisting} +\subsection{Placer du texte}\label{placetxt} + +À noter qu'une commande de placement de texte est disponible. + +\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only} +%dans l'environnement GraphiqueTikz +\PlacerTexte[clés]{(nœud ou coordonnées)}{texte} +\end{tcblisting} + +Les \MontreCode{[clés]} disponibles sont : + +\begin{itemize} + \item \MontreCode{Police=...} (\MontreCode{\textbackslash normalsize\textbackslash normalfont} par défaut) pour la police ; + \item \MontreCode{Couleur=...} (\MontreCode{black} par défaut) pour la couleur ; + \item \MontreCode{Position=...} (\MontreCode{vide} par défaut) pour la position du texte par rapport aux coordonnées. +\end{itemize} + +\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5} + \begin{GraphiqueTikz}[x=1cm,y=1cm,Xmin=0,Xmax=5,Ymin=0,Ymax=1] + \TracerAxesGrilles[Elargir=2.5mm]{auto}{auto} + \PlacerTexte[Couleur=red,Police=\LARGE,Position=right]{(1.5,0.5)}{courbe $C_1$} + \end{GraphiqueTikz} +\end{tcblisting} + \pagebreak \section{Commandes spécifiques d'exploitation des courbes} @@ -1702,6 +1745,7 @@ Les commandes disponibles sont : \lstcmd{tracé droite~~~}{\TracerDroite}{tracdroite} \lstcmd{def points~~~~~}{\DefinirPts}{defpts} \lstcmd{marq pts~~~~~~~}{\MarquerPts}{markpts} + \lstcmd{placer txt~~~~~}{\PlacerTexte}{placetxt} \lstcmd{récup absc~~~~~}{\RecupererAbscisse}{recupcoordo} \lstcmd{récup ordo~~~~~}{\RecupererOrdonnee}{recupcoordo} \lstcmd{récup coordos~~}{\RecupererCoordonnees}{recupcoordo} @@ -1729,6 +1773,7 @@ Les commandes disponibles sont : \begin{quote} \begin{verbatim} +0.1.4 : Placement de texte 0.1.3 : Ajout de régressions avec le package xint-regression 0.1.2 : Droites + Extremums 0.1.1 : Densité loi normale et khi deux + Marquage points + Améliorations diff --git a/graphics/pgf/contrib/tkz-grapheur/tex/tkz-grapheur.sty b/graphics/pgf/contrib/tkz-grapheur/tex/tkz-grapheur.sty index 1efc551b5b..7fc03cde3c 100644 --- a/graphics/pgf/contrib/tkz-grapheur/tex/tkz-grapheur.sty +++ b/graphics/pgf/contrib/tkz-grapheur/tex/tkz-grapheur.sty @@ -2,9 +2,10 @@ % licence : Released under the LaTeX Project Public License v1.3c or later, see http://www.latex-project.org/lppl.txtf \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{tkz-grapheur}[2024/06/06 0.1.3.Des outils en TikZ pour travailler comme avec un grapheur] +\ProvidesPackage{tkz-grapheur}[2024/06/15 0.1.4.Des outils en TikZ pour travailler comme avec un grapheur] %====HISTORIQUE +% v 0.1.4 Ajout des placements de textes % v 0.1.3 Régressions, avec xintreg (désactivable) % v 0.1.2 Max/Min + Droites % v 0.1.1 Densité loi normale + khi deux + Améliorations diverses @@ -85,6 +86,7 @@ }% %====STYLES DE BASE +\tikzset{pflnoeud/.style={}} \tikzset{pflpoint/.style={line width=0.95pt}} \tikzset{pflpointc/.style={radius=1.75pt}} \tikzset{pflpointnuage/.style={radius=1.75pt}} @@ -437,7 +439,7 @@ %origine \ifboolKV[GraphiqueTikzAxes]{Origine}% {% - \draw ({\pflOx},{\pflOy}) node[below left,font={\useKV[GraphiqueTikzAxes]{Police}}] {\FormatterValeurAxex{\pflformataxex}{\pflOx}} ; + \draw ({\pflOx},{\pflOy}) node[pflnoeud,below left,font={\useKV[GraphiqueTikzAxes]{Police}}] {\FormatterValeurAxex{\pflformataxex}{\pflOx}} ; %\draw (\pflOx,\pflOy) node[below left,font={\useKV[GraphiqueTikzAxes]{Police}}] {\ifboolKV[GraphiqueTikzAxes]{Num}{\num{\pflOx}}{\pflOx}} ; }% {}% @@ -445,22 +447,22 @@ \foreach \x in \tmprangexvalues {% \IfBooleanTF{#1}% {% - \xintifboolexpr{\x == \pflOx}{}{\draw ([yshift=-\pflthickgrad]{\x},{\pflOy}) node[below,font={\useKV[GraphiqueTikzAxes]{Police}}] {\FormatterValeurAxex{\pflformataxex}{\x}} ;} + \xintifboolexpr{\x == \pflOx}{}{\draw ([yshift=-\pflthickgrad]{\x},{\pflOy}) node[pflnoeud,below,font={\useKV[GraphiqueTikzAxes]{Police}}] {\FormatterValeurAxex{\pflformataxex}{\x}} ;} %\xintifboolexpr{\x == \pflOx}{}{\draw ([yshift=-\pflthickgrad]\x,\pflOy) node[below,font={\useKV[GraphiqueTikzAxes]{Police}}] {\ifboolKV[GraphiqueTikzAxes]{Num}{\num{\x}}{\x}} ;} }% {% - \draw ([yshift=-\pflthickgrad]{\x},{\pflOy}) node[below,font={\useKV[GraphiqueTikzAxes]{Police}}] {\FormatterValeurAxex{\pflformataxex}{\x}} ; + \draw ([yshift=-\pflthickgrad]{\x},{\pflOy}) node[pflnoeud,below,font={\useKV[GraphiqueTikzAxes]{Police}}] {\FormatterValeurAxex{\pflformataxex}{\x}} ; %\draw ([yshift=-\pflthickgrad]\x,\pflOy) node[below,font={\useKV[GraphiqueTikzAxes]{Police}}] {\ifboolKV[GraphiqueTikzAxes]{Num}{\num{\x}}{\x}} ; }% }% \foreach \y in \tmprangeyvalues {% \IfBooleanTF{#1}% {% - \xintifboolexpr{\y == \pflOy}{}{\draw ([xshift=-\pflthickgrad]{\pflOx},{\y}) node[left,font={\useKV[GraphiqueTikzAxes]{Police}}] {\FormatterValeurAxey{\pflformataxey}{\y}} ;} + \xintifboolexpr{\y == \pflOy}{}{\draw ([xshift=-\pflthickgrad]{\pflOx},{\y}) node[pflnoeud,left,font={\useKV[GraphiqueTikzAxes]{Police}}] {\FormatterValeurAxey{\pflformataxey}{\y}} ;} %\xintifboolexpr{\y == \pflOy}{}{\draw ([xshift=-\pflthickgrad]\pflOx,\y) node[left,font={\useKV[GraphiqueTikzAxes]{Police}}] {\ifboolKV[GraphiqueTikzAxes]{Num}{\num{\y}}{\y}} ;} }% {% - \draw ([xshift=-\pflthickgrad]{\pflOx},{\y}) node[left,font={\useKV[GraphiqueTikzAxes]{Police}}] {\FormatterValeurAxey{\pflformataxey}{\y}} ; + \draw ([xshift=-\pflthickgrad]{\pflOx},{\y}) node[pflnoeud,left,font={\useKV[GraphiqueTikzAxes]{Police}}] {\FormatterValeurAxey{\pflformataxey}{\y}} ; %\draw ([xshift=-\pflthickgrad]\pflOx,\y) node[left,font={\useKV[GraphiqueTikzAxes]{Police}}] {\ifboolKV[GraphiqueTikzAxes]{Num}{\num{\y}}{\y}} ; }% }% @@ -589,7 +591,7 @@ \draw[{\useKV[GraphiqueTikzMarkPoints]{Couleur}},pfltraitantec] let \p1 = \Point in ({\x1},{\pflOy}) |- ({\pflOx},{\y1}) ; }% {}% - \draw[{\useKV[GraphiqueTikzMarkPoints]{Couleur}}] \Point pic{pflptcroix={\useKV[GraphiqueTikzMarkPoints]{Taillex}}/45} node[\Pos,font=#3] {\Label} ; + \draw[{\useKV[GraphiqueTikzMarkPoints]{Couleur}}] \Point pic{pflptcroix={\useKV[GraphiqueTikzMarkPoints]{Taillex}}/45} node[pflnoeud,\Pos,font=#3] {\Label} ; }% }% {}% @@ -601,7 +603,7 @@ \draw[{\useKV[GraphiqueTikzMarkPoints]{Couleur}},pfltraitantec] let \p1 = \Point in ({\x1},{\pflOy}) |- ({\pflOx},{\y1}) ; }% {}% - \draw[{\useKV[GraphiqueTikzMarkPoints]{Couleur}}] \Point pic{pflptcroix={\useKV[GraphiqueTikzMarkPoints]{Taillex}}/90} node[\Pos,font=#3] {\Label} ; + \draw[{\useKV[GraphiqueTikzMarkPoints]{Couleur}}] \Point pic{pflptcroix={\useKV[GraphiqueTikzMarkPoints]{Taillex}}/90} node[pflnoeud,\Pos,font=#3] {\Label} ; }% }% {}% @@ -613,7 +615,7 @@ \draw[{\useKV[GraphiqueTikzMarkPoints]{Couleur}},pfltraitantec] let \p1 = \Point in ({\x1},{\pflOy}) |- ({\pflOx},{\y1}) ; }% {}% - \filldraw[draw=none,fill={\useKV[GraphiqueTikzMarkPoints]{Couleur}}] \Point pic{pflptcarre={\useKV[GraphiqueTikzMarkPoints]{Taillec}}/0} node[\Pos,{\useKV[GraphiqueTikzMarkPoints]{Couleur}},font=#3] {\Label} ; + \filldraw[draw=none,fill={\useKV[GraphiqueTikzMarkPoints]{Couleur}}] \Point pic{pflptcarre={\useKV[GraphiqueTikzMarkPoints]{Taillec}}/0} node[pflnoeud,\Pos,{\useKV[GraphiqueTikzMarkPoints]{Couleur}},font=#3] {\Label} ; }% }% {}% @@ -625,7 +627,7 @@ \draw[{\useKV[GraphiqueTikzMarkPoints]{Couleur}},pfltraitantec] let \p1 = \Point in ({\x1},{\pflOy}) |- ({\pflOx},{\y1}) ; }% {}% - \filldraw[draw=none,fill={\useKV[GraphiqueTikzMarkPoints]{Couleur}}] \Point pic{pflptcarre={\useKV[GraphiqueTikzMarkPoints]{Tailleo}}/45} node[\Pos,{\useKV[GraphiqueTikzMarkPoints]{Couleur}},font=#3] {\Label} ; + \filldraw[draw=none,fill={\useKV[GraphiqueTikzMarkPoints]{Couleur}}] \Point pic{pflptcarre={\useKV[GraphiqueTikzMarkPoints]{Tailleo}}/45} node[pflnoeud,\Pos,{\useKV[GraphiqueTikzMarkPoints]{Couleur}},font=#3] {\Label} ; }% }% {}% @@ -640,7 +642,7 @@ \draw[{\useKV[GraphiqueTikzMarkPoints]{Couleur}},pfltraitantec] let \p1 = \Point in ({\x1},{\pflOy}) |- ({\pflOx},{\y1}) ; }% {}% - \draw[pfltrait,\pflcouleurpointsA,fill=\pflcouleurpointsB] \Point circle[radius={\useKV[GraphiqueTikzMarkPoints]{Tailleo}}] node[\Pos,font=#3] {\Label} ; + \draw[pfltrait,\pflcouleurpointsA,fill=\pflcouleurpointsB] \Point circle[radius={\useKV[GraphiqueTikzMarkPoints]{Tailleo}}] node[pflnoeud,\Pos,font=#3] {\Label} ; }% }% {% @@ -650,7 +652,7 @@ \draw[{\useKV[GraphiqueTikzMarkPoints]{Couleur}},pfltraitantec] let \p1 = \Point in ({\x1},{\pflOy}) |- ({\pflOx},{\y1}) ; }% {}% - \filldraw[\pflcouleurpoints] \Point circle[radius={\useKV[GraphiqueTikzMarkPoints]{Tailleo}}] node[\Pos,font=#3] {\Label} ; + \filldraw[\pflcouleurpoints] \Point circle[radius={\useKV[GraphiqueTikzMarkPoints]{Tailleo}}] node[pflnoeud,\Pos,font=#3] {\Label} ; }% }% }% @@ -668,7 +670,7 @@ \foreach \i in {1,...,\LstValXlen}{% \itemtomacro\LstValX[\i]\mavalx% \itemtomacro\LstValFmtX[\i]\mavalfmtx% - \draw ([yshift=-\pflthickgrad]{\mavalx},{\pflOy}) node[below,font={\useKV[GraphiqueTikzAxes]{Police}}] {\mavalfmtx} ; + \draw ([yshift=-\pflthickgrad]{\mavalx},{\pflOy}) node[pflnoeud,below,font={\useKV[GraphiqueTikzAxes]{Police}}] {\mavalfmtx} ; }% } @@ -681,7 +683,7 @@ \foreach \i in {1,...,\LstValXlen}{% \itemtomacro\LstValY[\i]\mavaly% \itemtomacro\LstValFmtY[\i]\mavalfmty% - \draw ([xshift=-\pflthickgrad]{\pflOx},{\mavaly}) node[left,font={\useKV[GraphiqueTikzAxes]{Police}}] {\mavalfmty} ; + \draw ([xshift=-\pflthickgrad]{\pflOx},{\mavaly}) node[pflnoeud,left,font={\useKV[GraphiqueTikzAxes]{Police}}] {\mavalfmty} ; }% } @@ -1287,7 +1289,7 @@ }% {% \foreach \Point/\Pos/\Label in {#4}{% - \filldraw[#2] \Point circle[pflpointc] node[\Pos,font=#3] {\Label} ; + \filldraw[#2] \Point circle[pflpointc] node[pflnoeud,\Pos,font=#3] {\Label} ; } }% } @@ -2014,4 +2016,21 @@ \end{scope} } +%====TEXTES +\defKV[GraphiqueTikzNode]{% + Couleur=\def\pflnodecol{#1},% + Police=\def\pflnodefonte{#1},% + Position=\def\pfnodepos{#1} +} +\setKVdefault[GraphiqueTikzNode]{% + Couleur=black,% + Debut={\normalfont\normalsize},% + Position={} +} +\NewDocumentCommand\PlacerTexte{ O{} m m }{% + \restoreKV[GraphiqueTikzNode]% + \setKV[GraphiqueTikzNode]{#1}% + \draw #2 node[pflnoeud,font=\pflnodefonte,text=\pflnodecol,\pfnodepos] {#3} ; +} + \endinput \ No newline at end of file diff --git a/info/ptex-manual/LICENSE b/info/ptex-manual/LICENSE index 75ba828650..ca91de652c 100644 --- a/info/ptex-manual/LICENSE +++ b/info/ptex-manual/LICENSE @@ -1,4 +1,4 @@ -Copyright (C) 2017-2023 Japanese TeX Development Community +Copyright (C) 2017-2024 Japanese TeX Development Community All rights reserved. Redistribution and use in source and binary forms, with or without diff --git a/info/ptex-manual/README.md b/info/ptex-manual/README.md index 979ba3ba92..7e3eadc629 100644 --- a/info/ptex-manual/README.md +++ b/info/ptex-manual/README.md @@ -36,6 +36,6 @@ the 3-clause BSD license (see [LICENSE](./LICENSE)). ## Release Date -2023-09-02 +2024-06-15 Japanese TeX Development Community diff --git a/info/ptex-manual/eptexdoc.pdf b/info/ptex-manual/eptexdoc.pdf index 3c6017f971..a833601d95 100644 Binary files a/info/ptex-manual/eptexdoc.pdf and b/info/ptex-manual/eptexdoc.pdf differ diff --git a/info/ptex-manual/eptexdoc.tex b/info/ptex-manual/eptexdoc.tex index 3fa8e0c573..5955b33582 100644 --- a/info/ptex-manual/eptexdoc.tex +++ b/info/ptex-manual/eptexdoc.tex @@ -27,12 +27,16 @@ \MakeShortVerb*{|} %%%%%%%%%%%%%%%% -\makeatletter +\makeatletter % adjust for lmodern {\lccode`\!=`\_ \lowercase{% \protected\gdef\_{\ifdefstrequal{\f@family}{\ttdefault}{!}% {\leavevmode\vrule width .45em height -.2ex depth .3ex\relax}% }} +\global\let\adj@underbar@\_ +\catcode`\_=13 +\gdef\adj@underbar{% depend on ptex-manual.sty + \catcode`\_=13 \let_\adj@underbar@} } \makeatother @@ -41,7 +45,7 @@ \begin{document} \title{\emph{\epTeX について}} \author{北川 弘典\null -\thanks{\url{http://osdn.jp/projects/eptex/wiki/},\ +\thanks{\url{https://github.com/h-kitagawa/eptex-wiki/blob/main/README.md},\ e-mail: \texttt{h\_kitagawa2001(at)yahoo.co.jp}}} \date{version \the\epTeXversion,\today} \maketitle @@ -208,18 +212,18 @@ tracing機能や条件判断文の強化などあるが,そこら辺はパッ 以下,\eTeX 拡張を\pTeX 拡張とマージするにあたって調整した箇所を述べる. \begin{cslist} \csitem[\.{lastnodetype} (read-only integer)] - \pTeX 拡張では,\TeX と比較して\node{dir\_node}と\node{disp\_node}という2種類のノードが + \pTeX 拡張では,\TeX と比較して\node{dir_node}と\node{disp_node}という2種類のノードが 追加された.前者は,現在のリストの中に違う組方向のboxを挿入する際に寸法を補正するために作られ, \.{hbox}や\.{vbox}のコンテナとなっている. また後者は,欧文文字のベースライン補正のために使われる. \epTeX~110102まではこれらのノードも\.{lastnodetype}の値として出力させるようにした. しかし,両者ともに\epTeX が自動的に挿入する(ユーザーが意識する必要はない)ノードであることから, - \epTeX~110227以降では\node{dir\_node}と\node{disp\_node}は + \epTeX~110227以降では\node{dir_node}と\node{disp_node}は \.{lastnodetype}の対象とする「最後のノード」とはならないようにしている \footnote{% - 最後のノードが\node{dir\_node}であった場合,\.{lastnodetype}はそのノードが格納している - \node{hlist\_node}か\node{vlist\_node}の種類を返す. + 最後のノードが\node{dir_node}であった場合,\.{lastnodetype}はそのノードが格納している + \node{hlist_node}か\node{vlist_node}の種類を返す. }.\\ \parbox{.9\linewidth}{% \begin{multilist}{3}{\hfil\hskip1.5zw#:&\quad#\qquad\hfil} @@ -300,8 +304,8 @@ tracing機能や条件判断文の強化などあるが,そこら辺はパッ 上記で「和文文字コードとして有効かどうか」は,関数|is_char_kanji|を参照. この関数は内部コードによって異なるため,マクロで実装するのは面倒であるが, \epTeX~190709以降では\.{iffontchar}で容易に実現できる. - なお,内部Unicodeの\upTeX では任意の非負の値が和文文字コードとして有効なため, - |is_char_kanji|は非負かどうかの判定になっている. + なお,内部Unicodeの\upTeX では0以上0xFFFFFF以下の値が和文文字コードとして + 有効である.% https://github.com/texjporg/tex-jp-build/issues/160 \end{dangerous} @@ -685,7 +689,7 @@ p\number\ptexversion.\number\ptexminorversion\ptexrevision-% 「,」の後の半角空きと,「『」の前の半角空きが両方 入ってしまうという\pTeX の和文処理の仕様 \footnote{% - \TeX82 の欧文のカーニングや合字処理も同じような仕様になっている. + \TeX82の欧文のカーニングや合字処理も同じような仕様になっている. 例えば\texttt{W\.{relax}\ oWo}からはW\relax oWoという出力になり, Wとoの間のカーニングが\.{relax}によって挿入されなくなったことがわかる. }による. @@ -1351,7 +1355,7 @@ $3$\,sp)だが,どこか気になるところである. \begin{thebibliography}{99} \bibitem{h7k} 北川 弘典,「計算数学II 作業記録」,2008.\\ \url{https://osdn.jp/projects/eptex/document/resume/ja/1/resume.pdf}ほか, - 本pdfと同じディレクトリにある\texttt{eptex\_resume.pdf}がそれにあたる. + 本PDFと同じディレクトリにある\file{eptex_resume.pdf}がそれにあたる. \bibitem{yamamoto} 山本 和義,「数式famの制限とluatex」, 掲示板「\TeX\ Q\ \&\ A」,2009/02/12.\\ \url{https://oku.edu.mie-u.ac.jp/~okumura/texfaq/qa/52744.html} @@ -1378,7 +1382,7 @@ $3$\,sp)だが,どこか気になるところである. |\lastnodechar| の実装」,\TeX~Forum,2014/11/19. \url{https://okumuralab.org/tex/mod/forum/discuss.php?d=1435#p8053} \bibitem{lnc} 北川 弘典,「|\lastnodechar| プリミティブについて」,2014/12/15.\\ - \url{https://ja.osdn.net/projects/eptex/wiki/lastnodechar} + \url{https://github.com/h-kitagawa/eptex-wiki/blob/main/lastnodechar/README.md} \bibitem{xe5} Joseph Wright, ``[XeTeX] |\(pdf)mdfivesum|'', 2015/07/01,\\ \url{http://tug.org/pipermail/xetex/2015-July/026044.html} diff --git a/info/ptex-manual/jfm.pdf b/info/ptex-manual/jfm.pdf index b86833c46c..2e9d3b35cc 100644 Binary files a/info/ptex-manual/jfm.pdf and b/info/ptex-manual/jfm.pdf differ diff --git a/info/ptex-manual/jfm.tex b/info/ptex-manual/jfm.tex index b3852a69fc..0d9e25817d 100644 --- a/info/ptex-manual/jfm.tex +++ b/info/ptex-manual/jfm.tex @@ -12,8 +12,6 @@ \MakeShortVerb*{|} \def\size#1{\mathit{#1}} -\def\code#1{\texttt{#1}} -\def\codechar#1{\ensuremath{\langle\mbox{\kern0pt\code{#1}\kern0pt}\rangle}} \title{\emph{JFMファイルフォーマット}} \author{ASCII Corporation \& Japanese \TeX\ Development Community} @@ -24,7 +22,7 @@ \pTeX で和文フォントを扱うためのフォントメトリックであり, オリジナルの\TeX のTFM (\TeX\ Font Metric)に相当する. \pTeX と同じく株式会社アスキーによって開発され, -この文書も\pTeX に付属していたものであるが,ここでは2018年に +この文書も\pTeX に付属していたものであるが,ここでは2018年以降に 日本語\TeX 開発コミュニティによって拡張されたJFMフォーマットに 基づいて説明する. @@ -93,8 +91,8 @@ JFMファイルでもTFMファイルと同じく,拡張子は\code{.tfm}が用 このテーブルの各エントリーは1ワード(=4バイト)で構成され, 上位3バイトに文字コード(符号位置),下位1バイトに文字タイプを持つ -\footnote{日本語\TeX{}開発コミュニティによる新仕様; -詳細は第\ref{jfm-new}節を参照.}. +\footnote{文字コードを3バイトで持つのは,日本語\TeX{}開発コミュニティによる +新仕様.詳細は第\ref{jfm-new}節を参照.}. 文字コードは,それが16進数24bit(3バイト)で\code{0xABcdef}と表されるとき, \node{char\_type}テーブルには\code{cd ef AB}として格納される. テーブル内にはコードの値の順番に収められていなければならない. @@ -142,7 +140,7 @@ JFMでは$\size{bc}$は必ずゼロ\footnote{前節にあるとおり,文字 % 文字タイプの連続性についてはどこにも明記されていない気がする…) \subsection{\node{glue\_kern}テーブル} -特定の文字タイプの組み合せ時に挿入すべき\node{glue}又は\node{kern}を +特定の文字タイプの組み合わせ時に挿入すべき\node{glue}又は\node{kern}を 簡単なプログラム言語によって指定する. 各命令は,以下の4バイトで構成される. \begin{description}\itemindent=2zw @@ -153,8 +151,8 @@ JFMでは$\size{bc}$は必ずゼロ\footnote{前節にあるとおり,文字 である場合は,実際の\node{glue\_kern}プログラムが \node{glue\_kern}[$256\times\size{op\_byte}+\size{remainder}$]から 収められている(すなわち,再配置されている)ことを示す - \footnote{日本語\TeX{}開発コミュニティによって新たにサポート; - 詳細は第\ref{jfm-new}節を参照.}. + \footnote{再配置は,日本語\TeX{}開発コミュニティによって + 新たにサポート.詳細は第\ref{jfm-new}節を参照.}. 最初のワードでない場合(すなわち,既に再配置先あるいは プログラムのステップを開始した後のワードである場合)は, その場でプログラムを終了する. @@ -163,8 +161,8 @@ JFMでは$\size{bc}$は必ずゼロ\footnote{前節にあるとおり,文字 \item 128より小さいとき\\ このワードを実行した後,次のステップまでスキップする ワード数を示す - \footnote{日本語\TeX{}開発コミュニティによって新たにサポート; - 詳細は第\ref{jfm-new}節を参照.}. + \footnote{スキップは,日本語\TeX{}開発コミュニティによって + 新たにサポート.詳細は第\ref{jfm-new}節を参照.}. \end{itemize} \item[第2バイト] (\node{char\_type}) \begin{itemize} @@ -176,14 +174,18 @@ JFMでは$\size{bc}$は必ずゼロ\footnote{前節にあるとおり,文字 \item そうでなければ次のステップへ. \end{itemize} \item[第3バイト] (\node{op\_byte})\\ - この値によってグルーを扱うかカーンを扱うかを規定する. + この値によってグルーを扱うかカーンを扱うかを規定するとともに, + インデックスの一部を兼ねる + \footnote{インデックスの一部を兼ねることで + 256種類以上を扱う仕様は,日本語\TeX{}開発コミュニティによって + 新たにサポート.詳細は第\ref{jfm-new}節を参照.}. \begin{itemize} - \item 127以下の場合\node{glue}[$\size{remainder}\times 3$]のグルーを挿入. - \item 128以上の場合\node{kern}[$\size{remainder}$]のカーンを挿入. + \item 127以下の場合\node{glue}[$(\size{op\_byte}\times256+\size{remainder})\times 3$]のグルーを挿入. + \item 128以上の場合\node{kern}[$(\size{op\_byte}-128)\times256+\size{remainder}$]のカーンを挿入. \end{itemize} \item[第4バイト] (\node{remainder})\\ 第3バイトにより規定される - \node{glue}または\node{kern}へのインデックスを示す. + \node{glue}または\node{kern}へのインデックスの一部をなす. \end{description} \subsection{\node{glue}テーブル} @@ -231,6 +233,12 @@ JFMフォーマットの仕様を拡張した. \item \node{glue\_kern}テーブルでの再配置(rearrangement) \end{enumerate} 和文JFMでこれらの拡張機能が使われている場合は\pTeX~p3.8.0以上が必要である. +% https://github.com/texjporg/tex-jp-build/issues/8 +% https://github.com/texjporg/tex-jp-build/pull/47 + +また,2023年9月に「\node{glue\_kern}テーブルへの256種類以上の +グルー又はカーンの格納」をサポートした. +% https://github.com/texjporg/tex-jp-build/pull/162 \subsubsection{\node{char\_type}テーブルへの3バイトの文字コード格納} \node{char\_type}テーブルの各エントリーは1ワード(=4バイト)で @@ -271,6 +279,17 @@ JFMで扱うことができなかった.また,オリジナルの仕様で それと同様である.2018年2月に日本語\TeX{}開発コミュニティによって, \pTeX{}及びpPLtoTFで新たにサポートされた. +\subsubsection{\node{glue\_kern}テーブルへの256種類以上のグルー又はカーンの格納} +上記の「再配置」サポートによってグルーやカーンを挿入する文字の組み合わせを +多種類定義できるようになったが,依然そのグルーやカーンの寸法は256種類に +限られていた.これは従来のJFMでインデックスを第4バイト(\node{remainder})のみで +「\node{glue}[$\size{remainder}\times 3$]のグルー」 +「\node{kern}[$\size{remainder}$]のカーン」 +と規定していたためである. +欧文TFMの\node{lig\_kern}テーブルでは5,000種類のカーンを扱えたので, +2023年9月以降の日本語\TeX{}開発コミュニティの改修でこれを取り入れ, +第3バイト(\node{op\_byte})も活用してインデックスの範囲を増やした. + \subsection{JFMフォーマットの制約事項} 冒頭に述べたとおり,文字タイプ(\node{char\_type})の上限は255であり, @@ -562,18 +581,19 @@ $ chkdvifont upjisr-v.tfm \paragraph{和文JFMの拡張機能が使われている場合} 第\ref{jfm-new}節で述べたとおり,日本語\TeX 開発コミュニティによって -下記の3点につきJFMフォーマットの仕様が拡張されている. +下記の4点につきJFMフォーマットの仕様が拡張されている. \begin{enumerate} \item \node{char\_type}テーブルへの3バイトの文字コード格納 \item \node{glue\_kern}テーブルでのスキップ(SKIP)コマンド使用 \item \node{glue\_kern}テーブルでの再配置(rearrangement) + \item \node{glue\_kern}テーブルへの256種類以上のグルー又はカーンの格納 \end{enumerate} -和文JFMでこれらの拡張機能が使われている場合は\pTeX~p3.8.0以上が必要であるが, -この情報も表示される(下の例は再配置あり): +もしこれらの拡張機能が使われていれば,情報として表示される +(下の例は再配置あり): \begin{verbatim} $ chkdvifont upphiraminw3-h.tfm "upphiraminw3-h" is a jfm file : 0 -> 146 - New features in pTeX p3.8.0 / JFM 2.0: + New features in Community pTeX / JFM 2.0: + rearrangement in glue_kern checksum = 00000000 design size = 10485760 2^{-20} points = 10 points diff --git a/info/ptex-manual/ptex-guide-en.pdf b/info/ptex-manual/ptex-guide-en.pdf index d7d1a15136..06930809cd 100644 Binary files a/info/ptex-manual/ptex-guide-en.pdf and b/info/ptex-manual/ptex-guide-en.pdf differ diff --git a/info/ptex-manual/ptex-guide-en.tex b/info/ptex-manual/ptex-guide-en.tex index dace64fcc7..999ce22caa 100644 --- a/info/ptex-manual/ptex-guide-en.tex +++ b/info/ptex-manual/ptex-guide-en.tex @@ -33,20 +33,11 @@ } \makeatother -\def\file#1{\textsf{#1}} -\def\code#1{\texttt{#1}} - %%%%%%%%%%%%%%%% \makeatletter \setlist{leftmargin=2zw} \setlist[description]{labelwidth=2zw,labelindent=1zw,topsep=\medskipamount} -\def\>{\ifhmode\hskip\xkanjiskip\fi} - -\def\tsp{_{\mbox{\fontsize\sf@size\z@\ttfamily \char32}}} -\def\tpar{_{\mbox{\fontsize\sf@size\z@\ttfamily \string\par}}} -\def\tign{_{\mbox{\fontsize\sf@size\z@\selectfont --}}} - \usepackage{shortvrb} \MakeShortVerb*{|} %%%%%%%%%%%%%%%% @@ -829,8 +820,6 @@ is as follows: % "7FFF = 32767 \item 32768--134217727: \.{omathchardef} (only for \epTeX/\eupTeX) % "7FFFFFF = 134217727 - \item (optional) 256--2147483647: \.{chardef} (only for \upTeX/\eupTeX) - % "7FFFFFFF = 2147483647 (+1 => ! Number too big.) \end{itemize} %%% 指定のコードの和文トークンを得る方法 diff --git a/info/ptex-manual/ptex-manual.pdf b/info/ptex-manual/ptex-manual.pdf index cfeefbae6f..d0ba0689fb 100644 Binary files a/info/ptex-manual/ptex-manual.pdf and b/info/ptex-manual/ptex-manual.pdf differ diff --git a/info/ptex-manual/ptex-manual.sty b/info/ptex-manual/ptex-manual.sty index 74fc75c8c3..5bbe7172b8 100644 --- a/info/ptex-manual/ptex-manual.sty +++ b/info/ptex-manual/ptex-manual.sty @@ -1,6 +1,5 @@ %%% common macros for ptex-manual documents \def\headfont{\normalfont\mathversion{bold}\sffamily} -\def\node#1{\textit{#1}} \def\.#1{\texorpdfstring{% \leavevmode\hbox{\texttt{\textbackslash#1}}\ifmmode\else\textcompwordmark\fi}{\textbackslash #1}} @@ -24,12 +23,28 @@ \def\paragraph#1{\par\medskip\par\noindent\emph{■#1}\par\nobreak} \def\Pkg#1{\textsf{#1}} +\def\adj@underbar{\catcode`\_=12 } +\def\code{\begingroup\adj@underbar\code@} +\def\code@#1{\endgroup\texttt{#1}} +\def\file{\begingroup\adj@underbar\file@} +\def\file@#1{\endgroup\textsf{#1}} +\def\node{\begingroup\adj@underbar\node@} +\def\node@#1{\endgroup\textit{#1}} +\def\hex#1{\ifmmode\mbox\fi{\texttt{"#1}}}%" +\def\codechar#1{\ensuremath{\langle\mbox{\kern0pt\code{#1}\kern0pt}\rangle}} +\def\>{\ifhmode\hskip\xkanjiskip\fi} + +% print character code in hexadecimal +\def\codeHEX#1{\code{\omathchardef\omc@=#1\relax\strip@omch@r{\meaning\omc@}}} +{\escapechar-1 \xdef\omch@r{\string\omathchar}} +\def\strip@omch@r#1{\expandafter\strip@omch@r@#1} +\expandafter\def\expandafter\strip@omch@r@\expandafter#\expandafter1\omch@r#2{#2} + \let\@lessthan < \begingroup \catcode`\<=13 \gdef<{\ifmmode\@lessthan\else\expandafter\@@meta\fi} \gdef\@@meta#1>{\ensuremath{\langle\hbox{\normalfont\textit{#1}}\rangle}} -\gdef\hex#1{\ifmmode\mbox\fi{\texttt{"#1}}}%" \endgroup \AtBeginDocument{\catcode`\<=13\relax} \let\OR | @@ -37,6 +52,7 @@ \xspcode`\\=3 \xspcode`\*=3 \xspcode`\-=3 +\xspcode`\"=3 \xspcode23=3 % \textcompwordmark \normalsize @@ -152,4 +168,7 @@ \def\TL{\TeX\ Live\xspace} \AtBeginDocument{\providecommand{\texorpdfstring}[2]{#1}} +% ptex-manual check +\def\ptErr#1{\errhelp{}\errmessage{ptex-manual: #1}} + %%% EOF diff --git a/info/ptex-manual/ptex-manual.tex b/info/ptex-manual/ptex-manual.tex index bf968264c7..4cad105e60 100644 --- a/info/ptex-manual/ptex-manual.tex +++ b/info/ptex-manual/ptex-manual.tex @@ -19,16 +19,11 @@ % common \usepackage{ptex-manual} -\def\size#1{\mathit{#1}} -\def\code#1{\texttt{#1}} - %%%%%%%%%%%%%%%% \makeatletter \setlist{leftmargin=2zw} \setlist[description]{labelwidth=2zw,labelindent=1zw,topsep=\medskipamount} -\def\>{\ifhmode\hskip\xkanjiskip\fi} - \def\tsp{_{\mbox{\fontsize\sf@size\z@\ttfamily \char32}}} \def\tpar{_{\mbox{\fontsize\sf@size\z@\ttfamily \string\par}}} \def\tign{_{\mbox{\fontsize\sf@size\z@\selectfont --}}} @@ -80,7 +75,7 @@ p3.1.11 (2009/08/17).\url{https://asciidwango.github.io/ptex/}}ので, 本ドキュメント(\jobname.pdf)では,\pTeX 系列における共通機能と \upTeX による拡張を説明する.% 和文文字トークンの扱いが異なる -\epTeX による拡張についてはeptexdoc.pdfを参照されたい. +\epTeX/\eupTeX による拡張についてはeptexdoc.pdfを参照されたい. \begin{itemize} \item コミュニティ版\pTeX の開発元:\\ @@ -117,7 +112,7 @@ p3.1.11 (2009/08/17).\url{https://asciidwango.github.io/ptex/}}ので, \section*{\TeX~Liveにおける配布} \def\MODEext{{\tiny 拡張モード}} -\the\year 現在,\TeX~Liveで配布されている主要なエンジンと +現在,\TeX~Liveで配布されている主要なエンジンと \pTeX 系列の関係性は以下の図で表される. 独立したプログラム(バイナリ)として配布されているものを \fbox{枠}で囲んである.\par\vskip-35pt @@ -125,7 +120,7 @@ p3.1.11 (2009/08/17).\url{https://asciidwango.github.io/ptex/}}ので, \xymatrix@ur{ \text{\fbox{\TeX}} \ar[r]\ar[d] & \text{\eTeX} \ar[r]\ar[d]\ar[rd] & \text{\fbox{\pdfTeX}} \ar[rd] & \\ - \text{\pTeX} \ar[r]\ar[d] & \text{\fbox{\epTeX}} \ar[d] + \text{\pTeX} \ar[r]\ar[d] & \text{\epTeX} \ar[d] & \text{\fbox{\hologo{XeTeX}}} & \text{\fbox{Lua\TeX}} \\ \text{\upTeX} \ar[r] & \text{\fbox{\eupTeX}} & & %\\ &&& } @@ -135,23 +130,45 @@ p3.1.11 (2009/08/17).\url{https://asciidwango.github.io/ptex/}}ので, \pTeX, \upTeX, \epTeX, \eupTeX の4種類のエンジンが 独立したプログラムとして配布されていたが, \TeX~Live 2023では素の\pTeX と\upTeX の配布が停止され, -それぞれ\epTeX と\eupTeX の互換モード(\code{-etex}スイッチ無効, -すなわちextended modeでない状態)に置き換えられた -\footnote{例えば,2022年まではコマンド\code{ptex}で -\code{This is pTeX, Version ...}が起動していたが,2023年は -\code{This is e-pTeX, Version ...}が起動する. -ここだけ見るとコマンド\code{eptex}と似ているが,\code{eptex}では -直後に\code{entering extended mode}と拡張モードに入るのと異なり, -\code{ptex}では拡張モードに入らないので,\eTeX 特有の -機能およびプリミティブは無効化された状態となる.}. +それぞれ\epTeX と\eupTeX の互換モードに置き換えられた. +さらに\TeX~Live 2024ではオリジナルの\epTeX の配布も停止され, +4種類のエンジンは全て\eupTeX という単一のプログラムによる +エミュレートへと整理された.表にまとめると次のようになる. + +\begin{description}\small + \item[互換モード] + \eTeX の拡張モード(extended mode)でない状態, + すなわち\code{-etex}スイッチ無効状態.\\ + 例えば,2022年まではコマンド\code{ptex}で + \code{This is pTeX, Version ...}が起動していたが,2023年は + \code{This is e-pTeX, Version ...}が起動する. + ここだけ見るとコマンド\code{eptex}と似ているが,\code{eptex}では + 直後に\code{entering extended mode}と拡張モードに入るのと異なり, + \code{ptex}では拡張モードに入らないので,\eTeX 特有の + 機能およびプリミティブは無効化された状態となる. + \item[内部レガシー] + (\eTeXpre)\upTeX が文字コードに関する内部処理を + Unicodeではなく(\eTeXpre)\pTeX 同様の + レガシーエンコーディング(EUC-JPやShift-JIS)で行うことを指す. + 内部コードの差異だけであり,その他の(\eTeXpre)\upTeX 特有の + 機能およびプリミティブは利用可能な状態である. + 本文中\code{-kanji-internal}の説明も参照.\\ + 例えば,2023年のコマンド\code{eptex}が + \code{This is e-pTeX, Version ... (utf8.euc)}であったならば, + 2024年には + \code{This is e-upTeX, Version ... (utf8.euc)}に変わっている. + 一方\code{euptex}は + \code{This is e-upTeX, Version ... (utf8.uptex)}であるから + 内部コードが異なる. +\end{description} \begin{table}[ht] \centering - \begin{tabular}{ccc} - \code{コマンド名} & \TeX~Live 2022まで & \TeX~Live 2023 \\ - \code{ptex} & \pTeX & \epTeX の互換モード \\ - \code{uptex} & \upTeX & \eupTeX の互換モード \\ - \code{eptex} & \epTeX\MODEext & →変更なし \\ - \code{euptex} & \eupTeX\MODEext & →変更なし \\ + \begin{tabular}{cccc}\hline + \code{コマンド名} & \TeX~Live 2022まで & \TeX~Live 2023 & \TeX~Live 2024以降 \\ \hline + \code{ptex} & \pTeX & \epTeX の互換モード & \eupTeX の内部レガシーの互換モード \\ + \code{uptex} & \upTeX & \eupTeX の互換モード & →変更なし \\ + \code{eptex} & \epTeX\MODEext & →変更なし & \eupTeX の内部レガシー \\ + \code{euptex} & \eupTeX\MODEext & →変更なし & →変更なし \\ \hline \end{tabular} \end{table} @@ -182,21 +199,14 @@ p3.1.11 (2009/08/17).\url{https://asciidwango.github.io/ptex/}}ので, \TeX~Liveでのエンジン利用状況は以下の通りである. ここで,2023-06-01以降は\code{platex}で\epTeX ではなく -「\eupTeX の内部処理をレガシーなEUC-JP/Shift-JISに変更した状態」 -が起動することに注意\footnote{(\eTeXpre)\upTeX は -通常のコマンド名\code{uptex}や\code{euptex}で起動されると -内部処理をUnicodeで行うが, -コマンド名\code{ptex}や\code{eptex}で起動されると -内部処理を(\eTeXpre)\pTeX 同様のレガシーエンコーディングで行う. -内部コードの差異だけであり,その他の(\eTeXpre)\upTeX 特有の -機能およびプリミティブは利用可能な状態である. -本文中\code{-kanji-internal}の説明も参照.}. +\eupTeX の内部レガシーが起動することに注意 +(\code{eptex}より一足早く変更された). \begin{table}[ht] \centering - \begin{tabular}{ccc} - \code{コマンド名} & \TeX~Live 2012から2023初期まで & \TeX~Live 2023の2023-06-01以降 \\ + \begin{tabular}{ccc}\hline + \code{コマンド名} & \TeX~Live 2012から2023初期まで & \TeX~Live 2023の2023-06-01以降 \\ \hline \code{platex} & \epTeX\MODEext & \eupTeX\MODEext の内部レガシー \\ - \code{uplatex} & \eupTeX\MODEext & →変更なし \\ + \code{uplatex} & \eupTeX\MODEext & →変更なし \\ \hline \end{tabular} \end{table} @@ -217,7 +227,8 @@ p3.1.11 (2009/08/17).\url{https://asciidwango.github.io/ptex/}}ので, % http://ajt.ktug.org/assets/2008/5/1/0201tsuchimura_kuroki.pdf % https://okumuralab.org/tex/mod/forum/discuss.php?d=460 -\TeX82で扱える文字コードの範囲は0--255であった. +オリジナルの\TeX で扱える文字コードの範囲は0--255であった +\footnote{当初の\TeX82では7-bitだった:\TeX90で8-bitになった.}. \pTeX 系列では,日本語の文字を(\LaTeX の\code{inpuenc}のようなアクティブ化 によらず)直接扱えるように,文字コードとして有効な範囲を拡張している. 以降では,従来の枠組みで扱える文字を\emph{欧文文字}, @@ -269,11 +280,11 @@ WindowsではShift-JIS,それ以外ではUTF-8であった. なお,ISO-2022-JPでエンコードされた文字は現在のエンコードによらず正しく読まれる. % ISO-2022-JP (JIS) でエンコードされたバイト列は 7 ビットであって, -% 他の 3 つのエンコードと明らかに区別ができるため。 +% 他の 3 つのエンコードと明らかに区別ができるため. % 実際には,他のエンコードのファイルの途中に JIS の文字列が混ざっていても -% 全て正常に読み込まれる。 +% 全て正常に読み込まれる. % https://qiita.com/zr_tex8r/items/beda5a7702b84409436e -また,\eTeXpre(u)\pTeX の|\epTeXinputencoding|を使用すればその次の行から +また,\eTeXpre(u)\pTeX の\.{epTeXinputencoding}を使用すればその次の行から 新しいエンコードで読まれる(\texttt{./eptexdoc.pdf}を参照). \begin{dangerous} @@ -286,13 +297,14 @@ EUC-JP,Shift-JIS,ISO-2022-JPのどれか一つのファイルしか処理で % JIS のファイルなら EUC/SJIS どちらの ptex でも読み込めますが, % これも最初からではなく p2.1.5 (1997年) 以降のようで, % それまではスタイルファイルも EUC や SJIS にしておく必要があったようです. -|-kanji| オプションが追加され,一つの\pTeX バイナリで複数のエンコードを +|-kanji|オプションが追加され,一つの\pTeX バイナリで複数のエンコードを 選択処理できるようになったのは\pTeX~3.0.1と3.0.4の間(2002年10月頃)である. % http://tutimura.ath.cx/ptexlive/?ptexenc%2FDetails % の土村さんのコメント (2008-02-23) より コミュニティ版\pTeX は,UNIX向け日本語\TeX ディストリビューション -pte\TeX\footnote{土村展之さんによって2004年から2009年まで開発. +pte\TeX\footnote{Thomas Esserさんによるte\TeX をベースとして, +土村展之さんによって2004年から2009年まで開発. その後継のptexliveは,2010年に\pTeX が\TeX~Liveに取り込まれる際のベースに なった.}の開発過程で誕生した. % コミュニティ版という呼称は2004年当初からのものではなく @@ -369,7 +381,7 @@ virtual modeでは,起動直後にバナーを表示してから,フォー そして,以下の規則により和文文字と欧文文字に区別して取り扱われる. \begin{itemize} \item 7ビットASCII文字集合は\emph{欧文文字}として扱われる. - また,\TeX82互換の「|^^|記法」という間接的な入力法 + また,\TeX90互換の「|^^|記法」という間接的な入力法 \footnote{|^^ab|のようにカテゴリーコード7の文字2つに続いて |0|--|9|, |a|--|f|のいずれかが2つ続くと, それを16進文字コードとする文字入力がなされたのと同じ処理に回る.}も @@ -378,6 +390,10 @@ virtual modeでは,起動直後にバナーを表示してから,フォー \pTeX~3.1.8で制御綴内での扱いが改善された.また, コミュニティ版\pTeX~4.0.0で文字列化においても常に欧文扱いするように改修した. これについては\ref{sec:printkanji16bit}節を参照.}. + % |^^|記法は,|^^@|のようにASCII一文字(0--9,~a-f以外)が続くものと + % |^^ab|のように16進数2桁が続くものがある. + % 前者は\TeX82からあったもので,後者が\TeX90で追加された. + % 参考:Knuth, TUGboat, Volume 10 (1989), No.~3, p.325 \item 最上位ビットが1の場合,そのバイトで始まる列について ファイルのエンコードから内部コード(EUC-JPまたはShift-JIS)への 変換を試みる(同一コードなら恒等変換). @@ -410,7 +426,7 @@ virtual modeでは,起動直後にバナーを表示してから,フォー \code{ptexenc}による前処理には 「内部コードに変換できない入力のバイト列を|^^ab|形式に変換」も 含まれるが,この時点ではカテゴリーコードについて知らないため, -文字|^|の|\catcode|が7かどうかは関係なく|^^|が用いられる. +文字|^|の\.{catcode}が7かどうかは関係なく|^^|が用いられる. \end{dangerous} \pTeX における有効な文字コードの範囲は @@ -429,14 +445,25 @@ virtual modeでは,起動直後にバナーを表示してから,フォー \begin{itemize} \item Unicodeでのバラツキを同一視する多対一変換(表\ref{table:jis_uni_var}) \footnote{例えば,ソースファイル中の全角ダーシ(\code{U+2015})と - EMダーシ(\code{U+2014})は同一視され,内部的にはJISコード\code{"213D}と + EMダーシ(\code{U+2014})は同一視され,内部的にはJISコード\hex{213D}と して扱われ,ファイルに書き出される時は\code{U+2015}になる.} \item BOMの無視(ファイル先頭に限らず) \item 結合濁点(\code{U+3099})・半濁点(\code{U+309A})の合字処理 \item JIS外のため変換できない文字を|^^ab|形式に変換 \footnote{例えば,ソースファイル中にçのようなJIS~X~0208外の文字を直接書くと, - これは和文文字の内部コードに変換できないため|ç|に変換されて欧文扱いされる.}% => ^^c3^^a7 - …★ + これは和文文字の内部コードに変換できないため|ç|に変換されて欧文扱いされる.}…★ + %%% + % [動作チェック!] + % 上の行の説明文では |ç| が『ptexenc による |^^| 形式への変換』を経て + % 欧文 8 文字 |^^c3^^a7| としてリテラル印字されることを期待している! + % 本ソースを pLaTeX で処理すれば真. + % 内部 Unicode の upLaTeX では『ptexenc による |^^| 形式への変換』が起こらず + % 内部コード 0xE7 としてバッファに格納される. + % そして \kcatcode"E7=15 なのでインプットプロセッサの段階で欧文扱いされる. + % 既定の inputenc UTF-8 ならばこれは "E7 の欧文 1 文字になる. + % もし \UseRawInputEncoding ならば "C3 "A7 の欧文 2 文字になる. + \setbox0=\hbox{|ç|}\unless\ifdim\wd0>2em\ptErr{Check above: pLaTeX assumed}\fi + %%% \end{itemize} なお,UTF-8ファイル出力時にはこのような加工の逆変換は行わない(入力時に 加工されたままで出力される). @@ -451,16 +478,16 @@ virtual modeでは,起動直後にバナーを表示してから,フォー JIS~X~0213で規定された「85区1点」の位置の文字を入力ファイル中に書いた場合, \begin{description} - \item[エンコードがEUC,~Shift-JISの場合] DVIには29985~(\texttt{"7521})%" + \item[エンコードがEUC,~Shift-JISの場合] DVIには29985~(\hex{7521})%" 番の文字として出力される. - \item[エンコードがJISの場合] 「\verb+! Missing $ inserted.+」というエラーが発生する. + \item[エンコードがJISの場合] ``\verb|! Missing $ inserted.|''というエラーが発生する. これは,\pTeX がJIS~X~0213の1面を指示するエスケープシーケンス \texttt{1B 24 28 4F} (JIS2000), \texttt{1B 24 28 51} (JIS2004)を認識せず, \texttt{24}~(\texttt{\$})を数式モード区切りと解釈してしまうためである. \item[エンコードがUTF-8の場合] UTF-8のバイト列\texttt{E6 93 84}として読み込まれる. \end{description} - なお,\.{char}により「\verb+\char\kuten"5521+」%" - のようにして区点コードを指定した場合は,DVIには29985~(\texttt{"7521})%" + なお,\.{char}により「\verb|\char\kuten"5521|」%" + のようにして区点コードを指定した場合は,DVIには29985~(\hex{7521})%" 番の文字として出力される. また,DVIに文字として出力されたからといって,それをPostScriptやPDFに変換したときに 意図通りに出力されるかは全くの別問題である. @@ -482,7 +509,7 @@ virtual modeでは,起動直後にバナーを表示してから,フォー % \begin{itemize} \item 7ビットASCII文字集合は欧文文字として扱われる. - また,\TeX82互換の「|^^|記法」という間接的な入力法も + また,\TeX90互換の「|^^|記法」という間接的な入力法も 常に欧文扱いされる.(\pTeX と同様) \item 最上位ビットが1の場合,そのバイトで始まる列について ファイルのエンコードから内部コードへの変換を試みる(同一コードなら恒等変換). @@ -523,35 +550,7 @@ virtual modeでは,起動直後にバナーを表示してから,フォー % \end{itemize} -\upTeX における有効な文字コードの範囲は -「欧文文字として有効な文字コード(0--255)」と -「和文文字として有効な文字コード」の和集合である. -内部レガシーの場合は\pTeX と全く同じであり, -前者は1バイト・後者は2バイトなので互いに重ならない. -内部Unicodeの場合は後者がUnicode全体(0以上0x10FFFF以下 -\footnote{実は上限が0x10FFFFというのは嘘である:24bit整数値が -有効であり,0x110000以上0x1000000未満は特殊な用途で利用される. -内部コードUnicode (\code{uptex})の -\upTeX では,和文文字トークンおよび和文文字ノードにおいて -文字コードをUTF-32の下位24bitで格納する. -DVI出力時には「文字コード mod 0x110000」で書き込まれる. -これはUnicodeの正規の文字コード(0x10FFFF以下)のカテゴリーコードや -禁則ペナルティのしがらみの影響を受けない目的でOTFパッケージで使われる.}の -整数値)となるので,\emph{0--255の範囲は重なっており -和文・欧文どちらの文字コードとしても有効である}ことに注意. -% 内部コードの範囲:kanji.c の |is_char_kanji| の実装 -% 0x110000 以上の扱い:0x1000000 以下は otf で意図的に利用. -% https://okumuralab.org/~okumura/texfaq/qa/50036.html -% [TODO] 実装上「0..0x1000000」よりも広い「TeX が扱える 0 以上の整数値全体」が有効? -% https://gist.github.com/aminophen/43b5f7f8592fc66210935f67d4d88391 - -いずれの場合も,\upTeX は -オリジナルの\TeX や\pdfTeX などの欧文\TeX とは入力に関して必ずしも -互換でない(内部UnicodeへのUTF-8入力に限っても「BOMの無視」と -「結合濁点・半濁点の合字処理」だけは起こる)が, -\pTeX と比較すれば幾分差異が軽減されている. - -\begin{table}[tbp] +\begin{table}[bp] \caption{JIS⇔Unicode一対多変換.Unicode→JIS変換では複数の文字が同一視 される.JIS→Unicode変換では複数候補のうち\emph{太字}が選択される.} \label{table:jis_uni_var} @@ -559,40 +558,97 @@ DVI出力時には「文字コード mod 0x110000」で書き込まれる. % http://www.t-lab.opal.ne.jp/tex/jis_uni_variation_uptex.html % 下記ZRは https://github.com/texjporg/jsclasses/issues/49 で言及あり \centering\small -\begin{tabular}{cccc} +\begin{tabular}{ccccc} \toprule -区点 & Character Name & JIS~X~0208 & Unicode \\ +区点 & Character Name & 文字 & JIS~X~0208 & Unicode \\ \midrule -1-17 & \code{OVERLINE} +1-17 & \code{OVERLINE} & \kchar\jis"2131 & \code{0x2131} & \code{U+203E}, \emph{\code{U+FFE3}} \\ -1-29 & \code{EM DASH} +1-29 & \code{EM DASH} & \kchar\jis"213D & \code{0x213D} & \code{U+2014}, \emph{\code{U+2015}} \\ %ZR -1-33 & \code{WAVE DASH} +1-33 & \code{WAVE DASH} & \kchar\jis"2141 & \code{0x2141} & \emph{\code{U+301C}}, \code{U+FF5E} \\ %ZR -1-34 & \code{DOUBLE VERTICAL LINE} +1-34 & \code{DOUBLE VERTICAL LINE} & \kchar\jis"2142 & \code{0x2142} & \emph{\code{U+2016}}, \code{U+2225} \\ %ZR -1-36 & \code{HORIZONTAL ELLIPSIS} +1-36 & \code{HORIZONTAL ELLIPSIS} & \kchar\jis"2144 & \code{0x2144} & \emph{\code{U+2026}}, \code{U+22EF} \\ -1-61 & \code{MINUS SIGN} +1-61 & \code{MINUS SIGN} & \kchar\jis"215D & \code{0x215D} & \emph{\code{U+2212}}, \code{U+FF0D} \\ %ZR -1-79 & \code{YEN SIGN} +1-79 & \code{YEN SIGN} & \kchar\jis"216F & \code{0x216F} & \code{U+00A5}, \emph{\code{U+FFE5}} \\ -1-81 & \code{CENT SIGN} +1-81 & \code{CENT SIGN} & \kchar\jis"2171 & \code{0x2171} & \code{U+00A2}, \emph{\code{U+FFE0}} \\ %ZR -1-82 & \code{POUND SIGN} +1-82 & \code{POUND SIGN} & \kchar\jis"2172 & \code{0x2172} & \code{U+00A3}, \emph{\code{U+FFE1}} \\ %ZR -2-44 & \code{NOT SIGN} +2-44 & \code{NOT SIGN} & \kchar\jis"224C & \code{0x224C} & \code{U+00AC}, \emph{\code{U+FFE2}} \\ %ZR \bottomrule \end{tabular} \end{table} +\upTeX における有効な文字コードの範囲は +「欧文文字として有効な文字コード(0--255)」と +「和文文字として有効な文字コード」の和集合である. +内部レガシーの場合は\pTeX と全く同じであり, +前者は1バイト・後者は2バイトなので互いに重ならない. +内部Unicodeの場合は後者がUnicode全体(0以上0x10FFFF以下の +整数値)となるので,\emph{0--255の範囲は重なっており +和文・欧文どちらの文字コードとしても有効である}ことに注意. +% 内部コードの範囲:kanji.c の |is_char_kanji| の実装 + +いずれの場合も,\upTeX は +オリジナルの\TeX や\pdfTeX などの欧文\TeX とは入力に関して必ずしも +互換でない(内部UnicodeへのUTF-8入力に限っても「BOMの無視」と +「結合濁点・半濁点の合字処理」だけは起こる)が, +\pTeX と比較すれば幾分差異が軽減されている. + +\begin{dangerous} + 内部コードUnicode (\code{uptex})の場合の上限が0x10FFFFというのは + 実は嘘である.24bit整数値が有効であり,うち0x110000以上0xFFFFFF以下は + 特殊な用途で利用できるよう留保されている. + \begin{itemize} + \item \verb|Bad character code|エラーが出ない範囲:0以上0xFFFFFF以下 + \footnote{\verb|Invalid KANSUJI char|エラーが出ない範囲も同じ.} + \item 和文文字トークンの文字コードとして可能な範囲:0以上0x10FFFF以下 + \item 和文文字ノードの文字コードとして可能な範囲:0以上0xFFFFFF以下 + \end{itemize} + % + \upTeX では和文文字トークンおよび和文文字ノードにおいて + 文字コードをUTF-32の下位24bitで格納する仕様となっている. + Unicode文字入力で0x110000以上0xFFFFFF以下の文字コードはありえないが, + 文字コードを数値で指定する場合の扱いは以下としている: + \begin{itemize} + \item \.{char}, \.{chardef}及び\.{kchar}, \.{kchardef}: + 文字コードが0x110000以上でもそのままの値で和文文字ノードを生成する. + DVI出力時には「文字コード mod 0x110000」で書き込まれる. + % Output node |p| ... の処理で toDVI() + \item \.{kansujichar}への文字コード代入: + 値の格納時に「文字コード mod 0x110000」を行うので, + 以降の\.{kansuji}により生成する文字トークンは0以上0x10FFFF以下. + % eqtb テーブル格納時に toDVI() + \item \eTeXpre(u)\pTeX の\.{Uchar}, \.{Ucharcat}: + 文字トークン生成時に「文字コード mod 0x110000」を行うので, + やはり0以上0x10FFFF以下になる. + % print_kanji() の処理で toUCS() + \end{itemize} + 特に\.{kchar}の上記仕様はOTFパッケージで使われている. + これは,|\CID| (Adobe-Japan1)のような + Unicodeでない文字コードを扱う内部処理において + Unicodeの正規の文字コード(0x10FFFF以下)の + カテゴリーコードや禁則ペナルティのしがらみの影響を受けない目的である. + % 0x110000 以上の扱い:現状では otf で意図的に利用. + % 将来的に異体字対応の内部コードに使う可能性を留保. + % https://okumuralab.org/~okumura/texfaq/qa/50036.html + % https://github.com/texjporg/tex-jp-build/issues/160 + % https://github.com/texjporg/tex-jp-build/issues/46 +\end{dangerous} + \subsection{文字コードの取得と指定}\label{sec:getcode} (u)\pTeX では「文字コードを引数にとるプリミティブ」といっても,状況によって \begin{itemize} - \item 欧文文字の文字コード0--255をとる(例:|\catcode|) - \item 和文文字の内部コードをとる(例:|\inhibitxspcode|) - \item 上記2つのどちらでもとれる(例:|\prebreakpenalty|) + \item 欧文文字の文字コード0--255をとる(例:\.{catcode}) + \item 和文文字の内部コードをとる(例:\.{inhibitxspcode}) + \item 上記2つのどちらでもとれる(例:\.{prebreakpenalty}) \end{itemize} のいずれの場合もありうる. @@ -686,7 +742,7 @@ DVI出力時には「文字コード mod 0x110000」で書き込まれる. 「|\!|」のような欧文コントロールシンボルと同様に改行由来の空白が追加されてしまい, 和文文字直後の改行は何も発生しないという原則に反していたが, これは\TeX~Live 2019の\pTeX~3.8.2で修正された\cite{tjb37}.}. - \item 後で説明する|\jcharwidowpenalty|は,カテゴリーコードの値が16,~17の + \item 後で説明する\.{jcharwidowpenalty}は,カテゴリーコードの値が16,~17の 和文文字の前にのみ挿入されうるもので,値が18の和文文字の前には挿入されない. \item いずれにせよ,和文文字は決して“アクティブ”(欧文文字における カテゴリーコード13のような状態)にはならない. @@ -703,7 +759,7 @@ DVI出力時には「文字コード mod 0x110000」で書き込まれる. 和文カテゴリーコードを取得・設定するプリミティブが\.{kcatcode}である. \begin{cslist} \csitem[\.{kcatcode} =<16--18>] - コミュニティ版\pTeX では,和文カテゴリーコード(|\kcatcode|)は + コミュニティ版\pTeX では,和文カテゴリーコード(\.{kcatcode})は DVI中の上位バイトごと(すなわち,JISコードでいう区ごと)に値が設定可能である \footnote{% オリジナルのアスキー\pTeX では,内部コードの上位バイトごとに値が設定可能であった. @@ -712,21 +768,21 @@ DVI出力時には「文字コード mod 0x110000」で書き込まれる. $2n-1$区・$2n$区($1\leq n\leq 47$)は同一のカテゴリーコードを持つことになる. }.\end{cslist} \begin{dangerous} - |\kcatcode|では欧文文字の文字コード(0--255)も指定することができるが, + \.{kcatcode}では欧文文字の文字コード(0--255)も指定することができるが, その場合「0区扱い」として扱われる. - \pTeX の処理でこの「0区」の|\kcatcode|が使われることはないので, + \pTeX の処理でこの「0区」の\.{kcatcode}が使われることはないので, 事実上は「16--18のどれかを格納可能な追加レジスタ」程度の使い方しかない. \end{dangerous} しかし, -\pTeX においては,|\kcatcode|を文書の処理途中で変更することは想定されていない. +\pTeX においては,\.{kcatcode}を文書の処理途中で変更することは想定されていない. というのも,\pTeX では(\upTeX と異なり)和文文字トークンに カテゴリーコードの情報は保存されず, 和文文字が処理対象となるたびにカテゴリーコードの値が随時算出されるためである. ただし,\pTeX でも |\let\CS=あ| などとして和文文字トークンを|\let|すると,|\CS|には -その時のカテゴリーコード(|\kcatcode|)が保存される\footnote{コミュニティ版\pTeX では, +その時のカテゴリーコード(\.{kcatcode})が保存される\footnote{コミュニティ版\pTeX では, 一時的に「和文文字トークンを|\let|した|\CS|においても,それが処理対象となるたびに カテゴリーコードの値を再取得する」という挙動に変更しようとした(r51021). -しかし,この変更が不完全で「|\ifcat|では再取得するが,|\ifx|では再取得しない」という +しかし,この変更が不完全で「\.{ifcat}では再取得するが,\.{ifx}では再取得しない」という 不統一な状態となってしまったため,r59699で従来の挙動に戻した(アスキー版と同じ). 結果的に,\TeX~Live 2019--2021では「ただし,…」が当てはまらない\cite{man4}.}. % 不統一な挙動になっているのは以下のバージョン. @@ -752,7 +808,7 @@ DVI出力時には「文字コード mod 0x110000」で書き込まれる. CJK文字トークン(CJKトークン)と呼ぶべきだが,本文書では単純化のため \pTeX と同じ用語を用いる.}: \begin{itemize} - \item |\kcatcode|プリミティブに和文文字の役割の分類だけでなく, + \item \.{kcatcode}プリミティブに和文文字の役割の分類だけでなく, トークン列生成における和文文字と欧文文字の区別という機能も付与する. 具体的には,\emph{\.{kcatcode}に特別な値として15~}($\mathit{not\_cjk})$\emph{を 設定すると,それは8ビット欧文文字のバイト列として扱われ,和文扱いされなくなる}. @@ -769,17 +825,42 @@ CJK文字トークン(CJKトークン)と呼ぶべきだが,本文書で \csitem[\.{kcatcode} =<15--19>] 内部レガシーの\upTeX では,\pTeX と同様に JISコードでいう区ごとに値が設定可能. - 内部Unicodeの\upTeX では,和文カテゴリーコード(|\kcatcode|)は + 内部Unicodeの\upTeX では,和文カテゴリーコード(\.{kcatcode})は 概ねUnicodeのブロックごと(※一部のブロックは分割してある)に値が設定可能である. % 分割状況: https://github.com/texjporg/tex-jp-build/issues/43 \end{cslist} +このように内部Unicodeの\upTeX では\.{kcatcode}の設定が +Unicodeのブロックごとであるので, +\pTeX のJISコードの区ごとに設定したものとは分類が必ずしも一致しない. +各ブロックの初期値については +\href{https://github.com/texjporg/uptex-base}{\file{uptex-base}}で配布している +\file{01uptex_doc_utf8.txt}を参照のこと. +\begin{dangerous} +例えば長音記号「ー」はJISコードで\codeHEX{\tojis`ー}% JIS 0x213C +であり,記号として1区に含まれるから\pTeX での\.{kcatcode}は18である +(内部レガシーの\upTeX でも同様).一方Unicodeでは\codeHEX{\toucs`ー}% U+30FC +であり,カタカナと同じブロックに含まれるから内部Unicodeの\upTeX での +\.{kcatcode}は17である.すなわち,\pTeX では「ー」をコントロールワード中に +含められないが,\upTeX では許される. +\begin{verbatim} +\def\黄マーカー{...} + % => pTeX では「\黄マ」という命令と「ーカー」という終端 + % => upTeX では「\黄マーカー」という命令が定義される +\newcommand{\黄マーカー}[1]{...}% => pTeX ではエラー,upTeX では通る +\end{verbatim} +% https://okumuralab.org/tex/mod/forum/discuss.php?d=2703 +もちろんこの逆の例もあり, +\pTeX では全角数字とアルファベット(Halfwidth and Fullwidth Forms), +ギリシャ文字が17であったが,\upTeX では(キリル文字と同じく)18としている. +\end{dangerous} + なお\ref{sec:uptex_code}節で述べた通り,\upTeX では内部コードによらず 0--127の7ビットASCII文字集合は常に欧文文字トークンとして扱うこととしている. 裏を返せば\emph{和文文字トークンで文字コードが0--127という状況は 起こりえない}\footnote{和文文字ノードとしては文字コード0--127も可能: \ref{sec:kchar}節で出てくる\.{kchar}で生成される.}し, -このブロックの|\kcatcode|を15以外に設定しても和文扱いはされない. +このブロックの\.{kcatcode}を15以外に設定しても和文扱いはされない. \begin{dangerous} 例えば\upTeX の既定(内部Unicode)から |\kcatcode`あ=15| を実行すると, 以降の「|あ|\relax」は |^^e3^^81^^82| を入力したとみなされる @@ -870,7 +951,7 @@ CJK文字トークン(CJKトークン)と呼ぶべきだが,本文書で \autoref{fig:ptex_input}は\emph{\pTeX~4.0.0既定時}における入力プロセッサの状態遷移図である. \TeX82から拡張された点,および説明が必要な点を以下に述べる. \begin{description} - \item[内部状態の追加] \TeX82 では状態\textit{N} (new line),状態\textit{M} (middle of line), + \item[内部状態の追加] \TeX82では状態\textit{N} (new line),状態\textit{M} (middle of line), 状態\textit{S} (skipping spaces)という3状態であったが,\pTeX では 次の2状態が追加された: \begin{description} @@ -1117,19 +1198,22 @@ CJK文字トークン(CJKトークン)と呼ぶべきだが,本文書で \subsection{和文文字の文字列化の挙動}% \pTeX~4.0.0での改修を含む \label{sec:printkanji16bit} -|\string|や|\meaning|などの文字トークン列生成については以下の通りである. +\.{meaning}や\.{string}などの文字トークン列生成(いわゆる“\.{the}-文字列化”)に +ついては以下の通りである. \begin{itemize} \item 欧文文字は\TeX82と同様で,(文字コード32の空白を除き) - すべてカテゴリーコード12の文字トークンになるが, - 和文文字は16--18のいずれかのカテゴリーコードを持つ. - \item 「コントロールワードの文字列化では後ろに空白文字を補い, + すべてカテゴリーコード12の欧文文字トークンになるが, + 和文文字は和文文字トークンになる.その和文カテゴリーコードは + \pTeX では随時算出により,\upTeX では「その時の\.{kcatcode}の値」(ただし + それが15の場合は18)になる. + \item 制御綴名の文字列化において「コントロールワードの文字列化では後ろに空白文字を補い, コントロールシンボルの文字列化では空白文字を補わない」という点は, 和文文字を含む場合も同様である \footnote{「|\】|」のように和文文字からなるコントロールシンボルを文字列化する際に, バージョンp3.7.2以前の\pTeX では「|\】 |」と後ろに余計な空白文字を補ってしまう という問題があった. \TeX~Live 2018の\pTeX~3.8.1でこの問題は修正された\cite{tjb37}.}. - \item 和文文字はそのカテゴリーコードによらず,|\meaning|すると + \item 和文文字はそのカテゴリーコードによらず,\.{meaning}すると \begin{itemize}% すべて "kanji character " になる \item \the\kcatcode`漢:\quad \texttt{\meaning 漢} \item \the\kcatcode`あ:\quad \texttt{\meaning あ} @@ -1138,11 +1222,27 @@ CJK文字トークン(CJKトークン)と呼ぶべきだが,本文書で となる. \end{itemize} -さて,\pTeX~version 3系列(\TeX~Live 2021まで)では|\meaning|,|\string|等の +さて,\pTeX~version 3系列(\TeX~Live 2021まで)では\.{meaning},\.{string}等の 文字列化や制御綴名において和文文字と欧文文字の区別が失われてしまうケースがあった. % 途中の結果を一旦配列 |str_pool| に格納する処理で和欧文の区別が失われていた. \emph{\pTeX~4.0.0以降}(\TeX~Live 2022)では,この状況でも 和欧文の区別が維持される\cite{tjb81}. +\begin{dangerous} +\eTeX 由来の\.{scantokens}(\eTeXpre(u)\pTeX で利用可能)は +和文文字と欧文文字の区別が維持されない. +例えば\.{forcecjktoken}の状態で欧文バイト列を\.{scantokens}すると和文になる +\footnote{\.{scantokens}は,引数のトークン列を脱トークン化して, +改めて字句解析対象となる文字列として読み込む展開可能プリミティブである. +基本的にはトークン列を一旦(仮想的な)ファイルに書き出して +それをすぐに読み込んだのと同じになるが, +% https://qiita.com/zr_tex8r/items/0cc96144dd46c212a989 +「引数を文字列化→bufferに書き戻し→それを入力として扱う」という動作手順のうち +bufferに書き戻す時点で和欧文の区別が失われる. +実際に一旦ファイルに書いて読み込む場合は,欧文バイトは +|^^|形式で書き出されて欧文のままになるので,それとは異なる.}. +% [TODO] -translate-file=cp8bit なら 8bit 全部が printable になるので ^^ab 形式にはならない. +\end{dangerous} + \begin{dangerous} \TeX~Live 2021では,ファイルのエンコードUTF-8,内部コードEUC-JPの場合に例えば \begin{verbatim} @@ -1151,7 +1251,7 @@ CJK文字トークン(CJKトークン)と呼ぶべきだが,本文書で \end{verbatim} と入力すると,一行目は\def\fuga{^^c3^^bf 耽}「\code{\fuga}」であるのに対し 二行目は「\code{macro:->耽 耽}」となっていた(\char\euc"C3BFはEUC-JPで -\code{"C3BF}である.|^^c3^^bf|の代わりに直接\code{ÿ}と入力しても同様). +\hex{C3BF}である.|^^c3^^bf|の代わりに直接\code{ÿ}と入力しても同様). また \begin{verbatim} \catcode"C3=11 \catcode"BF=11 @@ -1165,6 +1265,12 @@ CJK文字トークン(CJKトークン)と呼ぶべきだが,本文書で \def\耽{P} \def\^^c3^^bf{Q} 「\code{\meaning\耽}」% 和欧文が区別されるので "P" になるはず となる. + %%% + % [動作チェック!] + % 上の行の説明文では |\耽| と |\^^c3^^bf| が区別される TL2022 以降を期待している! + \def\XXXX{P}\unless\ifx\耽\XXXX\ptErr{Check above: pTeX 4.x assumed}\fi + %%% +\end{dangerous} % メモ:上の例は「^^c5^^bf <=> 顛」でもよかったのだが, % マニュアルの欧文フォント newtx/newpx で表示可能な文字にした. % 外部ファイル出力の変化例: @@ -1172,7 +1278,6 @@ CJK文字トークン(CJKトークン)と呼ぶべきだが,本文書で % \label{^^c3^^9f}% % TL2021: ^^9f => TL2022: ^^c3^^9f % \label{ÿ}% % TL2021: 耽 => TL2022: ^^c3^^bf % \label{^^c3^^bf}% % TL2021: 耽 => TL2022: ^^c3^^bf -\end{dangerous} \section{和文文字の出力}\label{sec:outchar} @@ -1204,9 +1309,9 @@ CJK文字トークン(CJKトークン)と呼ぶべきだが,本文書で % 段落終了を意味する|\par|命令や空行を見つけると, % 段落最後の行を作って元の垂直モードに復帰する. -欧文文字ノードは1つの$\size{char\_node}$に +欧文文字ノードは1つの\node{char_node}に フォントと文字コードの情報を格納している. -和文文字ノードは内部的には連続する2つの$\size{char\_node}$を用いて +和文文字ノードは内部的には連続する2つの\node{char_node}を用いて \begin{itemize} \item 1つ目にフォントと文字タイプの情報 \item 2つ目に文字コードの情報(\upTeX ではさらに\.{kcatcode}の情報も) @@ -1293,20 +1398,20 @@ JFMファイルもTFMファイルと同様の情報を持つが, \begin{cslist} \csitem[\.{jfont}, \.{tfont}] - 欧文フォントを定義したり,現在の欧文フォントを取得したりする|\font|の和文版である. - 一応|\jfont|が「和文の横組用フォント」の,|\tfont|が「和文の縦組用フォント」のために + 欧文フォントを定義したり,現在の欧文フォントを取得したりする\.{font}の和文版である. + 一応\.{jfont}が「和文の横組用フォント」の,\.{tfont}が「和文の縦組用フォント」のために 用いる命令である. \begin{itemize} \item フォントを定義する際は,欧文フォント・和文の横組用フォント・ 和文の縦組用フォントのいずれも - |\font|, |\jfont|, |\tfont|のどれを用いても定義できる + \.{tfont}, \.{jfont}, \.{tfont}のどれを用いても定義できる (要求された実際のTFM/JFMに応じて,自動的にアサインされる). 書式については後述. - \item |\the|等で「現在のフォント」を取得する際には, - |\jfont|で「和文の横組用フォント」を, - |\tfont|で「和文の縦組用フォント」を返す. - \item |\nullfont|は全ての文字が未定義な「空フォント」を指すが, - これは欧文フォントであり,和文版|\nullfont|という概念は存在しない. + \item \.{the}等で「現在のフォント」を取得する際には, + \.{jfont}で「和文の横組用フォント」を, + \.{tfont}で「和文の縦組用フォント」を返す. + \item \.{nullfont}は全ての文字が未定義な「空フォント」を指すが, + これは欧文フォントであり,和文版\.{nullfont}という概念は存在しない. これは,\pTeX では「全ての和文フォントには,和文文字コードとして有効な 全ての文字が存在する」という扱いになっているためである. \end{itemize} @@ -1319,10 +1424,10 @@ JFMファイルもTFMファイルと同様の情報を持つが, $\.{tracinglostchars}>0$でも \code{Missing character: There is no あ in font nullfont!}のような 警告は出ない.}ので, - 「和文版|\nullfont|が選択されている」と言えなくもない. + 「和文版\.{nullfont}が選択されている」と言えなくもない. ただ,いったん実際の和文フォントを選択した後に - 「和文版|\nullfont|を選択する」という制御綴は作れないと思われる. - % つまり,tikzpicture 環境のように|\selectfont|を|\nullfont|に + 「和文版\.{nullfont}を選択する」という制御綴は作れないと思われる. + % つまり,tikzpicture環境のように|\selectfont|を\.{nullfont}に % 再定義した状態では,和文文字だけ消えずに残る. % https://tex.stackexchange.com/questions/18602/ % https://twitter.com/doraTeX/status/1098584763277824000 @@ -1388,15 +1493,15 @@ so I use .notdef glyph instead. Missing character警告と違ってノードは破棄されないのでlostという 名称は微妙だが….また,JIS範囲外の警告が発生するタイミングは Missing character警告(ノード生成失敗時に発生)とは異なるので, - \.{shipout}時の\.{tracinglostchars}の値に依ることになる.}が発生し, - DVIには豆腐(\verb+set2 0+)が書かれる. + |\shipout|時の\.{tracinglostchars}の値に依ることになる.}が発生し, + DVIには豆腐(\verb|set2 0|)が書かれる. \end{dangerous} \begin{dangerous} なお,\TeX82における読込済フォントの判定 (「同じTFMファイル名」かつ「同じサイズ」)は (u)\pTeX でも変更していないため, - エンコード無指定・\verb+in jis+指定・\verb+in ucs+指定だけを変えて + エンコード無指定・\verb|in jis|指定・\verb|in ucs|指定だけを変えて 複数回読み込もうとしても,新しいフォント識別子(font identifier)は 発行されないし,最初のエンコードが常に使われる. \begin{verbatim} @@ -1425,8 +1530,8 @@ so I use .notdef glyph instead. \begin{cslist} \csitem[\.{ifjfont} <\,font>, \.{iftfont} <\,font>] - |\ifjfont|はが和文の横組用フォントかどうか, - |\iftfont|は和文の縦組用フォントかどうかを判定する. + \.{ifjfont}はが和文の横組用フォントかどうか, + \.{iftfont}は和文の縦組用フォントかどうかを判定する. 2020-02-05のコミット(r53681)で追加され, \TeX~Live 2020の\pTeX~(p3.8.3)で利用可能である. @@ -1445,7 +1550,7 @@ so I use .notdef glyph instead. \begin{dangerous} 上述の通り,欧文フォント・和文の横組用フォント・ - 和文の縦組用フォントのいずれも|\font|一つで定義可能だが, + 和文の縦組用フォントのいずれも\.{font}一つで定義可能だが, 定義したフォントが実際にどの種類だったかを知る手段は バージョンp3.8.2までの\pTeX には存在しなかった. % https://github.com/texjporg/tex-jp-build/pull/97 @@ -1454,21 +1559,21 @@ so I use .notdef glyph instead. \begin{dangerous} ちなみに,\epTeX, \eupTeX には\.{iffontchar}プリミティブが存在する. しかし,<\,font>が和文フォントか否かを判定するために - \texttt{\.{iffontchar}~<\,font>~256}などと第二引数に256以上の値を指定することはできない. + \code{\.{iffontchar}~<\,font>~256}などと第二引数に256以上の値を指定することはできない. なぜなら,欧文フォントに対し第二引数に0--255以外の値を指定すると - 「\verb+! Bad character code (...).+」エラーが発生するからである. + ``\verb|! Bad character code (...).|''エラーが発生するからである. \end{dangerous} \begin{cslist} \csitem[\.{jfam}=] 現在の和文数式フォントファミリの番号を格納する \footnote{\pTeX,~\upTeX では0--15の範囲が許される. - \epTeX, \eupTeX では欧文の|\fam|と共に0--255に範囲が拡張されている.}. - 現在の欧文数式ファミリの番号を格納する|\fam|と原理的に同じ番号を指定することは + \epTeX, \eupTeX では欧文の\.{fam}と共に0--255に範囲が拡張されている.}. + 現在の欧文数式ファミリの番号を格納する\.{fam}と原理的に同じ番号を指定することは 原理的には可能だが,数式ファミリは和文・欧文共用であるので実際には 異なる値を指定することになる. - 欧文フォントが設定されている数式ファミリの番号を|\jfam|に指定し, + 欧文フォントが設定されている数式ファミリの番号を\.{jfam}に指定し, 数式中で和文文字を記述すると \begin{verbatim} ! Not two-byte family. @@ -1493,7 +1598,7 @@ so I use .notdef glyph instead. \item 値を2以上に設定すると,追加で(u)\pTeX 特有の以下の情報を表示する. \begin{itemize} \item 和文フォント(JFM)の横組(|/YOKO|)・縦組(|/TATE|)の区別 - \item 明示的なエンコード指定(\verb+in jis+ → |+JIS| / \verb+in ucs+ → |+Unicode|) + \item 明示的なエンコード指定(\verb|in jis| → |+JIS| / \verb|in ucs| → |+Unicode|) \end{itemize} \end{itemize} 書式は以下のようになる. @@ -1515,16 +1620,16 @@ so I use .notdef glyph instead. また,和文フォントに対しては追加情報として以下も表示する. \begin{itemize} \item 和文フォント(JFM)の場合は横組・縦組の情報を表示 - \item 明示的に\verb+in jis+/\verb+in ucs+が指定された場合に限ってエンコードを表示 + \item 明示的に\verb|in jis|/\verb|in ucs|が指定された場合に限ってエンコードを表示 \end{itemize} 書式は\.{ptextracingfonts}と同じであるが,その値は\.{ptexfontname}の出力に影響しない. ここでは例を示そう. \begin{itemize} - \item |\font\x=cmr10 at 7pt| → {\font\x=cmr10 at 7pt \code{\ptexfontname\x}} - \item |\font\x=nmin10| → {\font\x=nmin10 \code{\ptexfontname\x}} - \item |\font\x=min10 at 8pt| → {\font\x=min10 at 8pt \code{\ptexfontname\x}} - \item |\font in jis \x=ngoth10 at 6pt| → {\font in jis \x=ngoth10 at 6pt \code{\ptexfontname\x}} - \item |\font in ucs \x=utgoth10| → {\font in ucs \x=utgoth10 \code{\ptexfontname\x}} + \item \verb|\font\x=cmr10 at 7pt| → {\font\x=cmr10 at 7pt \code{\ptexfontname\x}} + \item \verb|\font\x=nmin10| → {\font\x=nmin10 \code{\ptexfontname\x}} + \item \verb|\font\x=min10 at 8pt| → {\font\x=min10 at 8pt \code{\ptexfontname\x}} + \item \verb|\font in jis \x=ngoth10 at 6pt| → {\font in jis \x=ngoth10 at 6pt \code{\ptexfontname\x}} + \item \verb|\font in ucs \x=utgoth10| → {\font in ucs \x=utgoth10 \code{\ptexfontname\x}} \end{itemize} これにより 「そのフォントがJISコードとUnicodeのどちらでDVI出力されるか」 @@ -1575,7 +1680,6 @@ so I use .notdef glyph instead. 禁則テーブルに情報を登録する手段として, 以下のプリミティブが追加されている. -% アスキー公式サイトのプリミティブ一覧から適当にまとめ \begin{cslist} \csitem[\.{prebreakpenalty} =] 指定した文字の前方にペナルティを挿入する. @@ -1590,27 +1694,27 @@ so I use .notdef glyph instead. 直後に10000のペナルティが付けられ,行末禁則文字の対象となる. \end{cslist} -|\prebreakpenalty|, |\postbreakpenalty|は +\.{prebreakpenalty}, \.{postbreakpenalty}は 和文文字,欧文文字の区別無しに指定できる. ただし,欧文文字に設定されたこれらのペナルティが実際に挿入されるのは 以下の場合に限られる(つまり,欧文組版だけの範囲では挿入されない). \begin{itemize} \item 当該の欧文文字の直後が和文文字(前方に禁則ペナルティを伴っても構わない)の - 場合に限り,その欧文文字に設定された|\postbreakpenalty|を挿入する. + 場合に限り,その欧文文字に設定された\.{postbreakpenalty}を挿入する. \item 当該の欧文文字の直前が和文文字(後方に禁則ペナルティを伴っても構わない)の - 場合に限り,その欧文文字に設定された|\prebreakpenalty|を挿入する. + 場合に限り,その欧文文字に設定された\.{prebreakpenalty}を挿入する. \end{itemize} \iffalse %%%%% [TODO] \begin{dangerous} 上記の「欧文文字に設定された禁則ペナルティが挿入される状況」は 欧文文字と和文文字の境界であり, ベースライン補正(\ref{sec:baselineshift}節を参照)を実現する -|disp_node|の挿入箇所でもある. -ベースライン補正がゼロでないとき,|penalty_node|と|disp_node|の +\node{disp_node}の挿入箇所でもある. +ベースライン補正がゼロでないとき,\node{penalty_node}と\node{disp_node}の 挿入順序は以下のようにしている. % tex-jp-build@2c83eb0 \begin{itemize} - \item 欧文→和文文字間: |disp_node| → |penalty_node| (\.{postbreakpenalty}) の順 - \item 和文→欧文文字間: |penalty_node| (\.{prebreakpenalty}) → |disp_node| の順 + \item 欧文→和文文字間: \node{disp_node} → \node{penalty_node} (\.{postbreakpenalty}) の順 + \item 和文→欧文文字間: \node{penalty_node} (\.{prebreakpenalty}) → \node{disp_node} の順 \end{itemize} \end{dangerous} \fi %%%%% @@ -1637,7 +1741,7 @@ so I use .notdef glyph instead. 原理的に\.{lastpenalty}で取得できないし,\.{unpenalty}で取り除くこともできない. \end{dangerous} -同一の文字に対して|\prebreakpenalty|と|\postbreakpenalty|の両方を +同一の文字に対して\.{prebreakpenalty}と\.{postbreakpenalty}の両方を 同時に与えるような指定はできない (もし両方指定された場合,後から指定されたものに置き換えられる). 禁則テーブルには1,024文字分の領域しかないので, @@ -1664,18 +1768,18 @@ so I use .notdef glyph instead. % 「段落が和文文字の1つ以上の連続% % \footnote{% % 正確には,和文文字を1つ以上含むような - % 「和文文字,ペナルティ,グルー,カーン,文中数式の境界,\textit{mark\_node}, - % \textit{adjust\_node}, \textit{whatsit\_node}, \textit{disp\_node}」の1つ以上の連続. + % 「和文文字,ペナルティ,グルー,カーン,文中数式の境界,\node{mark_node}, + % \node{adjust_node}, \node{whatsit_node}, \node{disp_node}」の1つ以上の連続. % ただし,アクセント本体は無視される. % }で終わる場合, - % その中の最後にある|\kcatcode|が16(漢字)または17(仮名)の文字% + % その中の最後にある\.{kcatcode}が16(漢字)または17(仮名)の文字% % \footnote{% % \pTeX の初期値では,1,~2,~7--8区\emph{以外}に含まれる文字. % }の直前」に挿入される. % % 警告:現行の pTeX では,この仕様に沿っていません(欧文が絡んだ場合). % % 仕様を明確に決めるとしたらこんな感じになるしょうか. % % - % また,その位置がすでにペナルティであった場合は,|\jcharwidowpenalty|の値が合算される. + % また,その位置がすでにペナルティであった場合は,\.{jcharwidowpenalty}の値が合算される. \end{cslist} \subsection{文字間のスペース} @@ -1700,7 +1804,7 @@ so I use .notdef glyph instead. [TODO] JFMグルーの挿入規則について \begin{itemize} \item メトリック由来空白の挿入処理は展開不能トークンが来たら中断 - \item 展開不能トークンや欧文文字は「文字クラス0」扱い.「\verb+)\relax(+」の例 + \item 展開不能トークンや欧文文字は「文字クラス0」扱い.「\verb|)\relax(+|の例 \item 禁則ペナルティ(\.{prebreakpenalty}や\.{postbreakpenalty})と が同じ箇所に発行される場合は 「禁則ペナルティ→JFM由来空白」の順に発行される. @@ -1716,7 +1820,7 @@ so I use .notdef glyph instead. 切替時には挿入されない.}% tex-jp-build/78c8605 で解決 \end{itemize} \fi %%%%% - \item もし水平ボックス(\.{hbox})や\.{noindent}で開始された段落がJFM由来グルーで始まった + \item もし水平ボックス(|\hbox|)や|\noindent|で開始された段落がJFM由来グルーで始まった 場合は,そのグルーは取り除かれる(カーンは除かれない). また水平ボックスがJFM由来グルーで終了した場合は,そのグルーは自然長・伸び量・縮み量の すべてが0となる. @@ -1729,23 +1833,23 @@ so I use .notdef glyph instead. \end{cslist} \begin{dangerous} - 和文文字を表すノードが連続した場合,その間に|\kanjiskip|があるものとして行分割や - ボックスの寸法計算が行われる.|\kanjiskip|の大部分はこのように暗黙のうちに挿入 + 和文文字を表すノードが連続した場合,その間に\.{kanjiskip}があるものとして行分割や + ボックスの寸法計算が行われる.\.{kanjiskip}の大部分はこのように暗黙のうちに挿入 されるものであるので,|\lastskip|などで取得することはできないし, |\showlists|や|\showbox|でも表示されない. - その一方で,ノードの形で明示的に挿入される|\kanjiskip|も存在する. + その一方で,ノードの形で明示的に挿入される\.{kanjiskip}も存在する. このようになるのは次の場合である: \begin{itemize} \item 水平ボックス(|\hbox|)が和文文字で開始しており,そのボックスの直前が - 和文文字であった場合,ボックスの直前に|\kanjiskip|が挿入される. + 和文文字であった場合,ボックスの直前に\.{kanjiskip}が挿入される. \item 水平ボックス(|\hbox|)が和文文字で終了しており,そのボックスの直後が - 和文文字であった場合,ボックスの直後に|\kanjiskip|が挿入される. - \item 連続した和文文字の間にペナルティがあった場合,暗黙の|\kanjiskip|が + 和文文字であった場合,ボックスの直後に\.{kanjiskip}が挿入される. + \item 連続した和文文字の間にペナルティがあった場合,暗黙の\.{kanjiskip}が 挿入されないので明示的にノードが作られる. \end{itemize} なお,水平ボックスであっても|\raise|, |\lower|で上下位置をシフトさせた場合は - 上記で述べた|\kanjiskip|を前後に挿入処理の対象にはならない. + 上記で述べた\.{kanjiskip}を前後に挿入処理の対象にはならない. \end{dangerous} \begin{dangerous} しばしば @@ -1765,9 +1869,9 @@ so I use .notdef glyph instead. \end{minipage} \noindent - のように|\kanjiskip|に無限の伸長度を持たせることで均等割付を行おうとする + のように\.{kanjiskip}に無限の伸長度を持たせることで均等割付を行おうとする コードを見かけるが,連続する和文文字の間にはメトリック由来の空白と - |\kanjiskip|は同時には入らないので,上に書いたコードは不適切である + \.{kanjiskip}は同時には入らないので,上に書いたコードは不適切である \footnote{実際,開き括弧の前・閉じ括弧(全角コンマを含む)の後には JFMグルーが入っているので半角しかない. }. @@ -1780,35 +1884,35 @@ so I use .notdef glyph instead. 段落終了時の値が段落全体にわたって用いられる. \end{cslist} \begin{dangerous} - |\kanjiskip|と異なり,|\xkanjiskip|はノードの形で挿入される. + \.{kanjiskip}と異なり,\.{xkanjiskip}はノードの形で挿入される. この挿入処理は段落の行分割処理の直前や,|\hbox|を閉じるときに行われるので, - 「どこに|\xkanjiskip|が入っているか」を知るためには現在の段落や|\hbox|を + 「どこに\.{xkanjiskip}が入っているか」を知るためには現在の段落や|\hbox|を 終了させる必要がある. \end{dangerous} \begin{cslist} \csitem[\.{xspcode} <8-bit number>=<0--3>] - コード番号が<8-bit number>の欧文文字の周囲に|\xkanjiskip|が + コード番号が<8-bit number>の欧文文字の周囲に\.{xkanjiskip}が 挿入可能が否かを0--3の値で指定する.それぞれの意味は次の通り: \begin{description} - \item[0] 欧文文字の前側,後側ともに|\xkanjiskip|の挿入を禁止する. - \item[1] 欧文文字の前側にのみ|\xkanjiskip|の挿入を許可する.後側は禁止. - \item[2] 欧文文字の後側にのみ|\xkanjiskip|の挿入を許可する.前側は禁止. - \item[3] 欧文文字の前側,後側ともに|\xkanjiskip|の挿入を許可する. + \item[0] 欧文文字の前側,後側ともに\.{xkanjiskip}の挿入を禁止する. + \item[1] 欧文文字の前側にのみ\.{xkanjiskip}の挿入を許可する.後側は禁止. + \item[2] 欧文文字の後側にのみ\.{xkanjiskip}の挿入を許可する.前側は禁止. + \item[3] 欧文文字の前側,後側ともに\.{xkanjiskip}の挿入を許可する. \end{description} \pTeX の標準値は,数字0--9と英文字A--Z, a--zに対する値は3(両側許可), その他の文字に対しては0(両側禁止). \csitem[\.{inhibitxspcode} =<0--3>] - コード番号がの和文文字の周囲に|\xkanjiskip|が + コード番号がの和文文字の周囲に\.{xkanjiskip}が 挿入可能が否かを0--3の値で指定する.それぞれの意味は次の通り: \begin{description} - \item[0] 和文文字の前側,後側ともに|\xkanjiskip|の挿入を禁止する. - \item[1] 和文文字の後側にのみ|\xkanjiskip|の挿入を許可する.前側は禁止. - \item[2] 和文文字の前側にのみ|\xkanjiskip|の挿入を許可する.後側は禁止. - \item[3] 和文文字の前側,後側ともに|\xkanjiskip|の挿入を許可する. + \item[0] 和文文字の前側,後側ともに\.{xkanjiskip}の挿入を禁止する. + \item[1] 和文文字の後側にのみ\.{xkanjiskip}の挿入を許可する.前側は禁止. + \item[2] 和文文字の前側にのみ\.{xkanjiskip}の挿入を許可する.後側は禁止. + \item[3] 和文文字の前側,後側ともに\.{xkanjiskip}の挿入を許可する. \end{description} - この|\inhibitxspcode|の設定値の情報は1,024文字分のテーブルに格納されている + この\.{inhibitxspcode}の設定値の情報は1,024文字分のテーブルに格納されている \footnote{最大1,024文字となったのは\TeX~Live 2023 (r65236--65248)以降. なお,\TeX~Live 2022までは256文字分のテーブルしかなかった.}. 未登録時は3(両側許可)であるとみなされ,またグローバルに3を代入するか,あるいは @@ -1816,7 +1920,7 @@ so I use .notdef glyph instead. (禁則テーブルからの削除と同様の規則). \end{cslist} \begin{dangerous} - |\xspcode|と|\inhibitxspcode|では,一見すると + \.{xspcode}と\.{inhibitxspcode}では,一見すると 設定値1と2の意味が反対のように感じるかもしれない.しかし,実は両者とも \begin{quote} 1: 「和文文字→欧文文字」の場合のみ許可.「欧文文字→和文文字」の場合は禁止.\\ @@ -1827,43 +1931,43 @@ so I use .notdef glyph instead. \begin{cslist} \csitem[\.{autospacing}, \.{noautospacing}] - 連続する和文文字間に,標準で|\kanjiskip|で指定されただけのグルーを - 挿入する(|\autospacing|)か挿入しない(|\noautospacing|)を設定する. + 連続する和文文字間に,標準で\.{kanjiskip}で指定されただけのグルーを + 挿入する(\.{autospacing})か挿入しない(\.{noautospacing})を設定する. 段落途中でこの値を変えても影響はなく,段落終了時の値が段落全体にわたって用いられる. \csitem[\.{autoxspacing}, \.{noautoxspacing}] - 和文文字と欧文文字の間に,標準で|\xkanjiskip|で指定されただけのグルーを - 挿入する(|\autoxspacing|)か挿入しない(|\noautoxspacing|)を設定する. + 和文文字と欧文文字の間に,標準で\.{xkanjiskip}で指定されただけのグルーを + 挿入する(\.{autoxspacing})か挿入しない(\.{noautoxspacing})を設定する. 段落途中でこの値を変えても影響はなく,段落終了時の値が段落全体にわたって用いられる. \end{cslist} -どちらの設定も標準では有効(|\autospacing|, |\autoxspacing|)である. +どちらの設定も標準では有効(\.{autospacing}, \.{autoxspacing})である. \begin{dangerous} - すでに述べたように,|\kanjiskip|の一部と|\xkanjiskip|はノードの形で挿入される. - |\noautospacing|や|\noautoxspacing|を指定しても,このノードの形での挿入自体は行われる - (ただノードが|\kanjiskip|や|\xkanjiskip|の代わりに長さ0のグルーを表すだけ). + すでに述べたように,\.{kanjiskip}の一部と\.{xkanjiskip}はノードの形で挿入される. + \.{noautospacing}や\.{noautoxspacing}を指定しても,このノードの形での挿入自体は行われる + (ただノードが\.{kanjiskip}や\.{xkanjiskip}の代わりに長さ0のグルーを表すだけ). - これにより,例えば|\noautoxspacing|状況下で「|あa|」と + これにより,例えば\.{noautoxspacing}状況下で「|あa|」と 入力しても,間に長さ0のグルーがあるため「あ」と「a」の間で改行可能となることに注意. \end{dangerous} \begin{cslist} \csitem[\.{showmode}] - |\kanjiskip|の挿入や|\xkanjiskip|の挿入が有効になっているか否かを + \.{kanjiskip}の挿入や\.{xkanjiskip}の挿入が有効になっているか否かを \begin{verbatim} > auto spacing mode; > no auto xspacing mode. \end{verbatim} - という形式(上の例では|\autospacing|かつ|\noautoxspacing|の状況)で端末やログに表示する. + という形式(上の例では\.{autospacing}かつ\.{noautoxspacing}の状況)で端末やログに表示する. \csitem[\.{inhibitglue}] この命令が実行された位置において,メトリック由来の空白の挿入を禁止する.以下の点に注意. \begin{itemize} \item メトリック由来の空白が挿入されないだけであり, - その代わりに|\kanjiskip|や|\xkanjiskip|が挿入されることは禁止していない. + その代わりに\.{kanjiskip}や\.{xkanjiskip}が挿入されることは禁止していない. \item 本命令は現在のモードが(非限定,限定問わず)水平モードのときしか効力を発揮しない (数式モードでも効かない). - 段落が和文文字「\verb+【+」で始まり,その文字の直前にメトリック由来の空白が入ることを抑止 - したい場合は,次のように一旦段落を開始してから|\inhibitglue|を実行する必要がある. + 段落が和文文字「\verb|【|」で始まり,その文字の直前にメトリック由来の空白が入ることを抑止 + したい場合は,次のように一旦段落を開始してから\.{inhibitglue}を実行する必要がある. \begin{verbatim} \leavevmode\inhibitglue 【 \end{verbatim} @@ -1872,10 +1976,10 @@ so I use .notdef glyph instead. \TeX~Live 2019の\pTeX~3.8.2以降では,明確に\emph{新たなノードが追加されない限り},と 定めた\cite{tjb28,forum_2566}.すなわち, \begin{enumerate} - \item |\inhibitglue|は,ノード挿入処理を行う命令 + \item \.{inhibitglue}は,ノード挿入処理を行う命令 (|\null|,~|\hskip|, |\kern|, |\vrule|,~\dots)が後ろに来た場合は無効化される. \item 一方,|\relax|やレジスタへの代入などのノードを作らない処理では無効化されない. - \item |\inhibitglue|の効果は別レベルのリストには波及しない. + \item \.{inhibitglue}の効果は別レベルのリストには波及しない. \end{enumerate} \end{cslist} \begin{dangerous} @@ -1902,7 +2006,7 @@ so I use .notdef glyph instead. \end{minipage} \end{dangerous} \begin{dangerous} - p\LaTeX~2017-10-28以降では,|\inhibitglue|の短縮として|\<|が次のように + p\LaTeX~2017-10-28以降では,\.{inhibitglue}の短縮として|\<|が次のように 定義されている(|\protected|は\eTeX 拡張の機能だが,現在では\LaTeX 自体が \eTeX 拡張を要求している). \begin{verbatim} @@ -1911,7 +2015,7 @@ so I use .notdef glyph instead. \end{dangerous} \begin{cslist} \csitem[\.{disinhibitglue}] - |\inhibitglue|の効果を無効化(つまり,メトリック由来の空白の挿入を許可)する. + \.{inhibitglue}の効果を無効化(つまり,メトリック由来の空白の挿入を許可)する. \pTeX~3.8.2で新しく追加された. \end{cslist} @@ -1955,7 +2059,7 @@ DtoU方向での数式ディレクションはそれぞれ非数式の場合と 命令&|\yoko|&|\tate|&|\dtou|&---\\ 字送り方向&水平右向き(→)&垂直下向き(↓)&垂直上向き(↑)&垂直下向き(↓)\\ 行送り方向&垂直下向き(↓)&水平左向き(←)&水平右向き(→)&水平左向き(←)\\ -\parbox[t]{6zw}{使用する和文フォント}&横組用(|\jfont|)&縦組用(|\tfont|)& +\parbox[t]{6zw}{使用する和文フォント}&横組用(\.{jfont})&縦組用(\.{tfont})& \multicolumn{2}{c}{% 横組用(\texttt{\string\jfont})の$90^\circ$回転}\\[\smallskipamount] 組版例 &\obox{\yoko}&\obox{\tate}&\obox{\dtou}&\def\mathmode{$}\obox{\tate}\\ @@ -1964,10 +2068,8 @@ DtoU方向での数式ディレクションはそれぞれ非数式の場合と \end{tabular} \end{table} - 以下が,組方向の変更や現在の組方向判定に関わるプリミティブの一覧である. -% アスキー公式サイトのプリミティブ一覧から適当にまとめ \begin{cslist} \csitem[\.{tate}, \.{yoko}, \.{dtou}] 組方向をそれぞれ縦組,横組,DtoU方向に変更する. @@ -2031,15 +2133,15 @@ DtoU方向での数式ディレクションはそれぞれ非数式の場合と \end{cslist} \begin{dangerous} |\discretionary|命令では -|\discretionary|\texttt{\{
\}\{\}\{\}}と3つの引数を指
- 定するが,この3引数の中で組方向を変更することはできない(常に周囲の組方向が使われる).
+ |\discretionary|\code{\{
\}\{\}\{\}}と3つの引数を
+ 指定するが,この3引数の中で組方向を変更することはできない(常に周囲の組方向が使われる).
 \end{dangerous}
 
 \begin{cslist}
 \csitem[\.{iftdir}, \.{ifydir}, \.{ifddir}, \.{ifmdir}]
-  現在の組方向を判定する.|\iftdir|, |\ifydir|, |\ifddir|はそれぞれ
+  現在の組方向を判定する.\.{iftdir}, \.{ifydir}, \.{ifddir}はそれぞれ
   縦組,横組,DtoU方向であるかどうかを判定する(数式ディレクションであるかは問わない).
-  一方,|\ifmdir|は数式ディレクションであるかどうかを判定する.
+  一方,\.{ifmdir}は数式ディレクションであるかどうかを判定する.
 
   従って,\autoref{tab-dir}に示した4つの状況のどれに属するかは以下のようにして判定できることになる.
   \begin{verbatim}
@@ -2063,7 +2165,7 @@ DtoU方向での数式ディレクションはそれぞれ非数式の場合と
   通常の縦組で組まれているのか,それとも縦数式ディレクションで組まれているのか
   という情報が失われていた.しかし,それでは後述の「ベースライン補正の戻し量」を
   誤り,欧文の垂直位置が揃わないという問題が生じた\cite{tatemath}.
-  この問題を解決する副産物として,バージョンp3.7.1で|\ifmbox|プリミティブが実装された.
+  この問題を解決する副産物として,バージョンp3.7.1で\.{ifmbox}プリミティブが実装された.
 \end{cslist}
 
 \subsection{ベースライン補正}
@@ -2079,9 +2181,9 @@ DtoU方向での数式ディレクションはそれぞれ非数式の場合と
 \csitem[\.{tbaselineshift}=, \.{ybaselineshift}=]
  指定した箇所以降の欧文文字のベースラインシフト量を格納する.両者の使い分けは
  \begin{description}
-  \item[\texttt{\string\tbaselineshift}]
+  \item[\.{tbaselineshift}]
          縦組用和文フォントが使われるとき(つまり組方向が縦組のとき),
-  \item[\texttt{\string\ybaselineshift}]
+  \item[\.{ybaselineshift}]
          横組用和文フォントが使われるとき(横組,DtoU方向,縦数式ディレクション)
  \end{description}
  となっている.
@@ -2090,11 +2192,11 @@ DtoU方向での数式ディレクションはそれぞれ非数式の場合と
 \end{cslist}
 
 \begin{dangerous}
- |disp_node|
+ \node{disp_node}%%% [TODO]
 \end{dangerous}
 
 欧文文字だけでなく,文中数式(|$...$|)もベースライン補正の対象である.
-文中数式は全体に|\tbaselineshift|(もしくは|\ybaselineshift|)だけの
+文中数式は全体に\.{tbaselineshift}(もしくは\.{ybaselineshift})だけの
 ベースライン補正がかかるが,それだけでは
 \begin{quote}
  数式中のボックスの欧文は(文中数式全体にかかる分も合わせて)
@@ -2120,7 +2222,7 @@ DtoU方向での数式ディレクションはそれぞれ非数式の場合と
 \TeX~Live 2015以前の動作に戻すには,上記の3プリミティブに全て0を指定すれば良い.
 
 \begin{dangerous}
-|\scriptbaselineshiftfactor|を設定するときには,|\scriptstyle|下で追加するボックス内の
+\.{scriptbaselineshiftfactor}を設定するときには,|\scriptstyle|下で追加するボックス内の
 ベースライン補正量をどうするかを常に気にしないといけない.
 例えば次のコードを考える:
 \begin{verbatim}
@@ -2151,7 +2253,7 @@ DtoU方向での数式ディレクションはそれぞれ非数式の場合と
 だけ上に移動するので,結果として「y」は添字内に直書きした「$b$」と上下位置が
 $10\,\mathrm{pt}-7\,\mathrm{pt}=3\,\mathrm{pt}$だけ上に配置されてしまっている.
 
-なお,|\scriptscriptbaselineshiftfactor|についても全く同様の注意が当てはまる.
+なお,\.{scriptscriptbaselineshiftfactor}についても全く同様の注意が当てはまる.
 \end{dangerous}
 
 \section{その他の補助機能}
@@ -2164,8 +2266,10 @@ $10\,\mathrm{pt}-7\,\mathrm{pt}=3\,\mathrm{pt}$だけ上に配置されてしま
 異なるエンコード間でも同じ文字を数値で直接表現できるように,
 文字コード変換を行うプリミティブが用意されている.
 また,漢数字を出力するプリミティブも用意されている\footnote{%
-実は|\kansuji|, |\kansujichar|プリミティブはp3.1.1でいったん削除され,
+実は\.{kansuji}, \.{kansujichar}プリミティブはp3.1.1でいったん削除され,
 p3.1.2で復活したという経緯がある.}.
+これらのプリミティブも\code{ptexenc}を使用しているので,
+Unicodeとレガシーエンコードの間の変換では表\ref{table:jis_uni_var}に従う.
 
 % jtexdoc.tex の「追加されたプリミティブ」を簡略化
 \begin{cslist}
@@ -2190,10 +2294,14 @@ p3.1.2で復活したという経緯がある.}.
   内部コードからJISコードへの変換を行う.\pTeX~4.1.0で追加した.
 \end{cslist}
 
+文字コードとして不正な値を与えても
+``\verb|! Bad character code (...).|''エラーは発生しない(下記参照).
+なお,JISコード,EUCコード,Shift-JISコードについて扱えるのは
+JIS~X~0208の範囲に限られる(\ref{sec:ptexchar}節でも述べた通り.
+すなわちJIS~X~0213には非対応).
+
 \begin{dangerous}
-  \ref{sec:ptexchar}節でも述べたように,
-  \emph{\pTeX はJIS~X~0213には対応せず,JIS~X~0208の範囲のみ扱える}.
-  なお,\pTeX~3.9.1以前では,不正な文字コードを与えたときの挙動が
+  \pTeX~3.9.1以前では,不正な文字コードを与えたときの挙動が
   不統一で,特に以下の値を返すケースもあった:
   \begin{itemize}
     \item 区点コード表のJIS~X~0208における最初の未定義位置
@@ -2207,8 +2315,9 @@ p3.1.2で復活したという経緯がある.}.
     \item $-1$…文字コードとして無効.
           % 発生状況:KUTENtoJIS(不正)→JIStoEUC(-1)
   \end{itemize}
-  \pTeX~3.10.0では\.{ucs}と\.{toucs}を追加し,さらに不正な文字コードを
-  容易に判別できるように以下の仕様にした:
+  \pTeX~3.10.0以降では,% \.{ucs}と\.{toucs}を追加したと同時に,
+  不正な文字コードを容易に判別できるように以下の仕様にした:
+  % これは\pTeX~4.1.0で追加した\.{tojis}も同様である.
   \begin{itemize}
     \item 文字コード変換が\emph{不要}なケース\footnote{内部eucにおける\.{euc},
         内部sjisにおける\.{sjis},および\upTeX で内部uptexにおける\.{ucs}と
@@ -2217,7 +2326,6 @@ p3.1.2で復活したという経緯がある.}.
     \item 文字コード変換が\emph{必要}なケース…
         不正な文字コードを与えると$-1$を返す.(返り値を統一)
   \end{itemize}
-  これは\pTeX~4.1.0で追加した\.{tojis}も同様である.
 %%%
 %
 % pTeX-3.10.0 での実装メモ (2021-06-29 @aminophen)
@@ -2239,8 +2347,8 @@ p3.1.2で復活したという経緯がある.}.
 
 \begin{cslist}
 \csitem[\.{kansuji} , \.{kansujichar} <0--9>=]
-  |\kansuji|は,続く数値を漢数字の文字列で出力する.
-  出力される文字は|\kansujichar|で指定できる(デフォルトは「〇一二三四五六七八九」).
+  \.{kansuji}は,続く数値を漢数字の文字列で出力する.
+  出力される文字は\.{kansujichar}で指定できる(デフォルトは「〇一二三四五六七八九」).
   たとえば
 \begin{verbatim}
 \kansuji 1978年
@@ -2254,34 +2362,36 @@ p3.1.2で復活したという経緯がある.}.
 \end{verbatim}
   は「{\kansujichar1=`壱 \kansujichar2=\euc"C6F5\relax
        \kansujichar3=\jis"3B32\relax \kansuji 1234}」と出力される.
-  なお,|\kansuji|に続く数値が負の場合は,空文字列になる
-  (ちょうど|\romannumeral|にゼロまたは負の値を与えた場合と同様).
+  なお,\.{kansuji}に続く数値が負の場合は,空文字列になる
+  (ちょうど\.{romannumeral}にゼロまたは負の値を与えた場合と同様).
+\end{cslist}
 
-  |\kansujichar|で指定できるのは「和文文字の内部コードとして有効な値」であり,
+\begin{dangerous}
+  \.{kansujichar}で指定できるのは「和文文字の内部コードとして有効な値」であり,
   例えば\pTeX で|\kansujichar1=`A|のように無効な値(\pTeX において|`A|は
   欧文文字コードであり,和文文字コードではない)を指定すると
 \begin{verbatim}
 ! Invalid KANSUJI char ("41).
 \end{verbatim}
-  というエラーが発生する\footnote{\upTeX では0--127も含め,
+  というエラーが発生する\footnote{内部Unicodeの\upTeX では0--127も含め,
   Unicodeの文字コードすべてが和文文字コードとして有効であり
-  (|\kchar|で任意の文字コードを和文文字ノードに変換して出力できる),
+  (\.{kchar}で任意の文字コードを和文文字ノードに変換して出力できる),
   基本的にこのエラーは発生しない.}.
-  また,|\kansujichar|の引数に許される値は0--9に限られ,
+  また,\.{kansujichar}の引数に許される値は0--9に限られ,
   例えば|\kansujichar10=`拾|とすると
 \begin{verbatim}
 ! Invalid KANSUJI number (10).
 \end{verbatim}
   というエラーが発生する.
-  % エラーからのリカバリで,他の TeX82 プリミティブが
+  % エラーからのリカバリで,他の\TeX82プリミティブが
   %   I changed this one to zero.
   % とするのに対し,\kansujichar では
   %   I'm skipping this control sequences.
   % とスキップされ,値の代入は行われない.
-\end{cslist}
+\end{dangerous}
 
 \begin{dangerous}
-  |\kansujichar|は整数値パラメータであるが,p3.8.2までは
+  \.{kansujichar}は整数値パラメータであるが,p3.8.2までは
   「代入できるが取得はできない」という挙動であった
   (例えば|\count255=\kansujichar1|はエラー).
   \pTeX~3.8.3で取得もできるように修正された\cite{tjb93}が,
@@ -2293,12 +2403,15 @@ p3.1.2で復活したという経緯がある.}.
   % これは \kansujichar の代入時の挙動に合わせたものである.
 \end{dangerous}
 
-% luatexja.dtx より pTeX 用に移植
 \begin{dangerous}
-  以上に挙げたプリミティブ(|\kuten|, |\jis|, |\euc|, |\sjis|, |\ucs|,
-  |\toucs|, |\kansuji|)は展開可能(expandable)であり,
+  以上のプリミティブ(\.{kansujichar}を除くすべて)は
+  展開可能(expandable)であり,
   内部整数を引数にとるが,実行結果は\emph{文字列}であることに注意
-  (\TeX82の|\number|, |\romannumeral|と同様).
+  (\TeX82の\.{number}, \.{romannumeral}と同様).
+  以下の例は内部コード
+  \ifnum\jis"2121="3000 Unicode\else
+  \ifnum\jis"2121="A1A1 EUC-JP\else
+  \ifnum\jis"2121="8140 Shift-JIS\else\ptErr{Check here}\fi\fi\fi の場合.
 
 \medskip\noindent
 \begin{minipage}{.6\linewidth}
@@ -2318,13 +2431,26 @@ p3.1.2で復活したという経緯がある.}.
     \kansuji1701
 \end{minipage}\medskip
 
-  以上の挙動から,|\kansuji|を
+\begin{itemize}
+ \item \.{kuten}, \.{jis}, \.{euc}, \.{sjis}, \.{ucs}, \.{toucs}, \.{tojis}
+   → 変換結果をカテゴリーコード12の欧文文字トークン列で返す.
+ \item \.{kansuji}
+   → 変換結果を和文文字トークン列で返す\footnote{例外的に,
+   内部Unicodeの\upTeX で0--127の文字コードを\.{kansujichar}で指定した
+   場合のみ,\.{kansuji}で生成されるトークンはカテゴリーコード12の
+   欧文文字トークンになる\cite{tjb36}.
+   % 文字コードが0--127の和文文字トークンは存在しない,という一貫性.
+   % \.{kchar}が和文文字トークンを経ずに直接和文文字ノードになるのとは異なる.
+   また,\upTeX では生成する和文文字トークンに
+   その時点での和文カテゴリーコードが与えられるが,
+   もし\.{kcatcode}が15ならば18扱いになる(\.{forcecjktoken}と同様).}.
+\end{itemize}
+
+  \medskip
+  以上の挙動から,\.{kansuji}を
   「整数値をその符号値をもつ和文文字トークンに変換する」という目的に
-  用いることもでき\footnote{ただし,\upTeX で
-  0--127の文字コードを|\kansujichar|で指定した場合のみ,
-  |\kansuji|で生成されるトークンはカテゴリーコード12の
-  欧文文字トークンになる\cite{tjb36}.},
-  これは時に“|\kansuji|トリック”と呼ばれる.例えば
+  用いることもでき,
+  これは時に“\.{kansuji}トリック”と呼ばれる.例えば
 \begin{verbatim}
   \kansujichar1=\jis"2422 \edef\X{\kansuji1}
 \end{verbatim}
@@ -2366,7 +2492,7 @@ p3.1.2で復活したという経緯がある.}.
   すなわち正方形のボディに収まるようにデザインされているから,これと合致しない.
   したがって,単位\texttt{zh}はあまり意味のある値とはいえない.
 
-  なお,japanese-otf(OTFパッケージ)が用いているフォントメトリックは
+  なお,\Pkg{japanese-otf}(OTFパッケージ)が用いているフォントメトリックは
   $1\,\mathrm{zw}=1\,\mathrm{zh}$である.
 \end{dangerous}
 
@@ -2382,8 +2508,8 @@ p3.1.2で復活したという経緯がある.}.
 \begin{cslist}
 \csitem[\.{ptexversion}, \.{ptexminorversion}, \.{ptexrevision}]
   \pTeX のバージョン番号はp$x{.}y{.}z$の形式となっており,それらを取得するための命令である.
-  |\ptexversion|, |\ptexminorversion|は
-  それぞれ$x$,~$y$の値を内部整数で返し,|\ptexrevision|はその後ろの「${.}z$」を文字列で返す.
+  \.{ptexversion}, \.{ptexminorversion}は
+  それぞれ$x$,~$y$の値を内部整数で返し,\.{ptexrevision}はその後ろの「${.}z$」を文字列で返す.
   従って,全部合わせた\pTeX のバージョン番号は
 \begin{verbatim}
 \number\ptexversion.\number\ptexminorversion\ptexrevision
@@ -2392,7 +2518,7 @@ p3.1.2で復活したという経緯がある.}.
 \end{cslist}
 この追加と同時に,(\eTeXpre)\upTeX では以下が追加されている.
 \begin{cslist}
- \csitem[\.{uptexversion}, \.{uptexrevision}]
+ \csitem[\.{uptexversion}, \.{uptexrevision}(\emph{\upTeX のみ})]
   \upTeX のバージョン番号はu$x{.}y$の形式となっており,
   それらを取得するための命令である.
   \.{uptexversion}は$x$の値を内部整数で返し,
@@ -2414,7 +2540,7 @@ p3.1.2で復活したという経緯がある.}.
   \ifx\epTeXversion\undefined\else -\the\epTeXversion
   -\the\eTeXversion\eTeXrevision\fi}
 \end{quote}
-となる.
+となる.最後の「-\the\eTeXversion\eTeXrevision」は\eTeX のバージョン番号である.
 
 \newpage
 
@@ -2437,9 +2563,9 @@ p3.1.2で復活したという経緯がある.}.
 \end{quote}
 違反すると
 \begin{verbatim}
-! Bad character code (42146).
+! Bad character code (...).
 \end{verbatim}
-というエラーが発生する.
+というエラーが発生する(|...|はその文字コード).
 \begin{dangerous}
 以前の\pTeX では,
 これらの命令の文字コード部分に和文文字の内部コードを指定することもでき,
@@ -2473,7 +2599,7 @@ p3.1.2で復活したという経緯がある.}.
   和文文字の内部コードを指定した場合は和文文字を出力する.
 
  \csitem[\.{font}, \.{fontname}, \.{fontdimen}]
-  |\font|については\ref{sec:jfont}節を参照.
+  \.{tfont}については\ref{sec:jfont}節を参照.
   |\fontname|は和文フォントからもフォント名を取得でき,
   |\fontdimen|は和文フォントのパラメータ表(JFMで定義される\node{param}テーブル)からも
   値を取得できる.
@@ -2490,21 +2616,21 @@ p3.1.2で復活したという経緯がある.}.
     特に意味を持たない\footnote{欧文フォントではx-heightである.}ためである.
   \item 和文文字にアクセントをつけた場合,
     \begin{itemize}
-     \item 前側にはJFMグルーや|\kanjiskip|は挿入されない
-           (ただし|\xkanjiskip|は挿入されうる).
+     \item 前側にはJFMグルーや\.{kanjiskip}は挿入されない
+           (ただし\.{xkanjiskip}は挿入されうる).
      \item 後側にはJFMグルーは挿入されない
-           (ただし|\kanjiskip|, |\xkanjiskip|は挿入されうる).
+           (ただし\.{kanjiskip}, \.{xkanjiskip}は挿入されうる).
     \end{itemize}
  \end{itemize}
 
  \csitem[\.{if}  , \.{ifcat}  ]
-  文字トークンを指定する場合,その文字コードは\TeX82では0--255のみが許されるが,
+  文字トークンを指定する場合,その文字コードはオリジナルの\TeX では0--255のみが許されるが,
   \pTeX では和文文字トークンも指定することができる.
 
-  |\if|による判定では,欧文文字トークン・和文文字トークンともに
+  \.{if}による判定では,欧文文字トークン・和文文字トークンともに
   その文字コードが比較される.
-  |\ifcat|による判定では,欧文文字トークンについては|\catcode|,
-  和文文字トークンについては|\kcatcode|が比較される.
+  \.{ifcat}による判定では,欧文文字トークンについては\.{catcode},
+  和文文字トークンについては\.{kcatcode}が比較される.
   % [TODO] TeX Live 2018 の upTeX では,
   % ^^ab 形式での文字コード指定は欧文扱いされるので,
   % \ifcat 判定では \catcode が読み出される.
@@ -2514,7 +2640,7 @@ p3.1.2で復活したという経緯がある.}.
 \end{cslist}
 
 \begin{dangerous}
-\TeX bookには,オリジナルの\TeX における|\if|と|\ifcat|の説明として
+\TeX bookには,オリジナルの\TeX における\.{if}と\.{ifcat}の説明として
 \begin{quote}
 If either token is a control sequence,
 \TeX\ considers it to have character code 256 and category code 16,
@@ -2523,16 +2649,16 @@ has been |\let| equal to a non-active character token.
 \end{quote}
 とある.すなわち
 \begin{quote}
-|\if|や|\ifcat|の判定では(実装の便宜上)
+\.{if}や\.{ifcat}の判定では(実装の便宜上)
 コントロールシークエンスは文字コード256,
 カテゴリーコード16を持つとみなされる
 \end{quote}
 というのである.ところが,tex.webの実装はこの通りでなく,
 コントロールシークエンスをカテゴリーコード0とみなしている.
-そのため,\pTeX 系列において和文文字トークンの|\kcatcode|の値が
-16である場合も,|\ifcat|判定でコントロールシークエンスと混同されることはない.
+そのため,\pTeX 系列において和文文字トークンの\.{kcatcode}の値が
+16である場合も,\.{ifcat}判定でコントロールシークエンスと混同されることはない.
 
-一方,文字コードについては,確かにtex.webは|\if|判定において
+一方,文字コードについては,確かにtex.webは\.{if}判定において
 コントロールシークエンスを256とみなしている.しかし,\upTeX では
 文字コード256の和文文字と衝突するので,2019-05-06のコミット(r51021)で
 「原理的に文字コードが取り得ない値」に変更した\cite{tjb68}.
@@ -2582,7 +2708,7 @@ has been |\let| equal to a non-active character token.
  \bibitem{tatemath} aminophen, 「縦数式ディレクションとベースライン補正」,
   2016/09/05,\\
   \url{https://github.com/texjporg/platex/issues/22}
- \bibitem{tjb26} h-kitagawa, 「禁則テーブル,|\inhibitxspcode| 情報テーブルからのエントリ削除」,
+ \bibitem{tjb26} h-kitagawa, 「禁則テーブル,\.{inhibitxspcode}情報テーブルからのエントリ削除」,
   2017/09/10,\\
   \url{https://github.com/texjporg/tex-jp-build/pull/26}
  \bibitem{tjb57} Man-Ting-Fang, \textit{[upTeX] Unexpected behaviour in kinsoku processing},
@@ -2591,13 +2717,13 @@ has been |\let| equal to a non-active character token.
  \bibitem{tjb11} aminophen, 「pTeX の後禁則ペナルティ」,
   2017/04/05,\\
   \url{https://github.com/texjporg/tex-jp-build/issues/11}
- \bibitem{tjb28} h-kitagawa, 「[ptex] |\inhibitglue|の効力」,
+ \bibitem{tjb28} h-kitagawa, 「[ptex] \.{inhibitglue}の効力」,
   2017/09/20,\\
   \url{https://github.com/texjporg/tex-jp-build/issues/28}
- \bibitem{tjb36} aminophen, 「欧文文字の|\kansujichar|,|\inhibitxspcode|」,
+ \bibitem{tjb36} aminophen, 「欧文文字の\.{kansujichar},\.{inhibitxspcode}」,
   2017/11/26,\\
   \url{https://github.com/texjporg/tex-jp-build/issues/36}
- \bibitem{tjb93} aminophen, 「[ptex] reading |\kansujichar|」,
+ \bibitem{tjb93} aminophen, 「[ptex] reading \.{kansujichar}」,
   2019/10/14,\\
   \url{https://github.com/texjporg/tex-jp-build/issues/93}
  \bibitem{tjb37} aminophen, 「和文のコントロールシンボル」,
@@ -2606,7 +2732,7 @@ has been |\let| equal to a non-active character token.
  \bibitem{tjb55} aminophen, 「[(u)pTeX] 内部コードの -kanji-internal オプション」,
   2018/04/03,\\
   \url{https://github.com/texjporg/tex-jp-build/issues/55}
- \bibitem{forum_2566} aminophen, 「\TeX~Live 2019 での |\inhibitglue| の挙動変更【予定】」,
+ \bibitem{forum_2566} aminophen, 「\TeX~Live 2019 での \.{inhibitglue} の挙動変更【予定】」,
   2019/02/06,\\
   \url{https://okumuralab.org/tex/mod/forum/discuss.php?d=2566}
  \bibitem{tjb68} aminophen, 「upTeX の |\if| と |\ifcat|」,
diff --git a/macros/latex/contrib/scontents/README.md b/macros/latex/contrib/scontents/README.md
index 95b0291960..b3424b02e6 100644
--- a/macros/latex/contrib/scontents/README.md
+++ b/macros/latex/contrib/scontents/README.md
@@ -1,6 +1,6 @@
 ## scontents — Stores LaTeX contents in memory or files
 
-Release v2.0 \[2022-04-04\]
+Release v2.1 \[2024-06-14\]
 
 ## Description
 
@@ -13,7 +13,7 @@ or show it in <verbatim style>.
 
 The package loads and depends on updated versions of:
 - [expl3](https://ctan.org/pkg/expl3)
-- [l3keys2e](https://ctan.org/pkg/l3keys2e)
+- [latex-base](https://www.ctan.org/pkg/latex-base)
 
 ## Installation
 
@@ -68,4 +68,4 @@ conditions of the [LaTeX Project Public License](https://www.latex-project.org/l
 
 ## Author and copyright
 
-Copyright 2019-2022 by Pablo González L.
+Copyright 2019-2023 by Pablo González L.
diff --git a/macros/latex/contrib/scontents/scontents.dtx b/macros/latex/contrib/scontents/scontents.dtx
index d82fec48c0..e7dd0b4e1a 100644
--- a/macros/latex/contrib/scontents/scontents.dtx
+++ b/macros/latex/contrib/scontents/scontents.dtx
@@ -1,12 +1,12 @@
 % \iffalse meta-comment
 %
-% Copyright (C) 2019-2022 by Pablo González L 
+% Copyright (C) 2019-2024 by Pablo González L 
 %
 % This work may be distributed and/or modified under the conditions of the
 % LaTeX Project Public License, either version 1.3c of this license or (at
 % your option) any later version. The latest version of this license is in
 %
-%  http://www.latex-project.org/lppl.txt
+%  https://www.latex-project.org/lppl.txt
 %
 % and version 1.3c or later is part of all distributions of LaTeX version
 % 2005/12/01 or later.
@@ -32,6 +32,7 @@
 % so that entries written to both streams end up in the same file.
 \usepackage[english]{babel}
 \usepackage[top=0.5in,bottom=0.3in,left=2in,right=0.7in,footskip=0.2in,headheight=1cm,headsep=0.27cm]{geometry}
+\usepackage[llscaled=0.95]{libertine} % need by setup-texlive-action@v3
 \usepackage[osf,nomath,mono=false,ScaleSF=0.95,ScaleRM=0.95]{libertinus-otf}
 % Set Monospace font, fix 'quotes' in verbatim
 \usepackage{sourcecodepro}
@@ -64,7 +65,7 @@
 % a letter `j'. The doc package ensures that mathcode and the | actually prints
 % a j inside docstrip guards. This changes the mathcode of | to 07C:
 \makeatletter
-\def\mod@math@codes{\mathcode`\|="207C \mathcode`\&="2026
+\def\mod@math@codes{\mathcode`\|="207C \mathcode`\&="2026 %
                     \mathcode`\-="702D \mathcode`\+="702B
                     \mathcode`\:="703A \mathcode`\=="703D }
 \makeatother
@@ -73,7 +74,7 @@
 \newfontfamily\fetamontotf{ffmw10.otf}[
    Scale             = 0.95,%
    RawFeature        = {+latn,+rand,+kern,+size},%
-   FontFace          = {b}{n}{ffmw10.otf},% fix raplece font
+   FontFace          = {b}{n}{ffmw10.otf},% fix replace font
    ]
 \usepackage[svgnames]{xcolor}
 \usepackage[sf,bf,compact,medium,pagestyles]{titlesec}
@@ -173,7 +174,7 @@
 % User level commands
 \ExplSyntaxOn
 % Logo with fetamont font
-\NewDocumentCommand{\pkglogo}{}
+\NewDocumentCommand \pkglogo {}
   {
     \group_begin:
     \fetamontotf{\textcolor{pkgcolor}{s}\textcolor{OrangeRed}{content}\textcolor{pkgcolor}{s}}
@@ -181,15 +182,15 @@
   }
 
 % Custom \meta[...]{...}, \marg[...]{...} and \oarg[...]{...} with color
-\NewDocumentCommand{\mymeta}{O{}m}
+\NewDocumentCommand \mymeta {O{}m}
   {
     \userdoc_meta_generic:Nnn \userdoc_meta:n { #1 } { #2 }
   }
-\NewDocumentCommand{\mymarg}{O{}m}
+\NewDocumentCommand \mymarg {O{}m}
   {
     \userdoc_meta_generic:Nnn \userdoc_marg:n { #1 } { #2 }
   }
-\NewDocumentCommand{\myoarg}{O{}m}
+\NewDocumentCommand \myoarg {O{}m}
   {
     \userdoc_meta_generic:Nnn \userdoc_oarg:n { #1 } { #2 }
   }
@@ -263,7 +264,7 @@
   }
 % \envexamp{m}
 \newsavebox{\boxexaenv}
-\NewDocumentCommand{\envexamp}{m}
+\NewDocumentCommand \envexamp {m}
   {
    \begin{lrbox}{\boxexaenv}%
     \begin{minipage}[t]{\marginparwidth}%
@@ -276,7 +277,7 @@
    \end{lrbox}%
    \usebox{\boxexaenv}
   }
-\NewDocumentCommand{\envexaplain}{O{} m O{end}}
+\NewDocumentCommand \envexaplain {O{} m O{end}}
   {
    \begin{lrbox}{\boxexaenv}%
     \begin{minipage}[t]{\marginparwidth}%
@@ -291,7 +292,7 @@
   }
 
 % \cmdexamp{s m o m o}
-\DeclareDocumentCommand{\cmdexamp}{o m o m o}
+\DeclareDocumentCommand \cmdexamp {o m o m o}
   {
     \group_begin:
     \small\ttfamily
@@ -309,57 +310,62 @@
     \group_end:
   }
 
-% \keyexamp{mmm}
-\DeclareDocumentCommand{\keyexamp}{ m m m }
+% \keyexamp*{m m m}
+\NewDocumentCommand \keyexamp{s m m m }
   {
-    \par
-    \adjustbox{outer=-\marginparsep}{\textcolor{black}{\small\ttfamily{#1}}}
-    \textcolor{gray}{\,\bfseries\texttt{=}}\,{}
-    \mymarg[type=tt,cbc=gray,ac=lightgray,cf=optcolor]{\small{#2}}
-    \hfill\textcolor{gray}{\small\textsf{default}:~\emph{#3}}
-    \par
-    \MYSortIndex{Keys}{Keys>\texttt{#1}}%
+    \adjustbox{outer=-\marginparsep}{\textcolor{optcolor}{\small\ttfamily{#2}}}
+    \IfBooleanTF{#1}
+      {
+        \hphantom{\textcolor{white}{\,\bfseries\texttt{=}}\,{}}
+        \mymeta[type=tt,cbc=gray,ac=lightgray,cf=lightgray]{\small{#3}}
+      }
+      {
+        \textcolor{gray}{\,\bfseries\texttt{=}}\,{}
+        \mymarg[type=tt,cbc=gray,ac=lightgray,cf=optcolor]{\small{#3}}
+      }
+    \hfill\textcolor{gray}{\small\textsf{default}:~\emph{#4}}\par%
+    \MYSortIndex{Keys}{Keys ~ provide ~ by ~ \pkglogo :>\texttt{#2}}
   }
 
 % \mykey{m}
-\DeclareDocumentCommand{\mykey}{ m }
+\NewDocumentCommand \mykey { m }
   {
     \textcolor{optcolor}{\texttt{#1}}
-    \MYSortIndex{Keys}{Keys>\texttt{#1}}%
+    \MYSortIndex{Keys}{Keys ~ provide ~ by ~\pkglogo :>\texttt{#1}}%
   }
 
 % \mypkg{sm}
-\NewDocumentCommand{\mypkg}{sm}
+\NewDocumentCommand \mypkg {sm}
   {
     \group_begin:
     \IfBooleanTF{#1}
       {
         \pkglogo
-        \MYSortIndex{packages}{Packages>\texttt{#2}}
+        \MYSortIndex{packages}{Packages:>\texttt{#2}}
       }
       {
         \textcolor{darkgray}{\textsf{#2}}
-        \MYSortIndex{packages}{Packages>\texttt{#2}}%
+        \MYSortIndex{packages}{Packages:>\texttt{#2}}%
       }
      \group_end:
   }
 
 % \myenv{sm}
-\DeclareDocumentCommand{\myenv}{sm}
+\NewDocumentCommand \myenv {sm}
   {
     \IfBooleanTF{#1}
       {
         \textcolor{pkgcolor}{\ttfamily{#2}}%
-        \MYSortIndex{environment}{ Environment ~ provide ~ by ~\pkglogo :>\texttt{#2}}
+        \MYSortIndex{environment}{Environments ~ provide ~ by ~\pkglogo :>\texttt{#2}}
       }
       {
         \textcolor{darkgray}{\ttfamily{#2}}%
-        \MYSortIndex{environment}{Environments>\texttt{#2}}
+        \MYSortIndex{environment}{Environments:>\texttt{#2}}
       }
   }
 
 % \ics{sm}
-\DeclareDocumentCommand{\ics}{sm}
+\NewDocumentCommand \ics {sm}
   {
     \IfBooleanTF{#1}
       {
@@ -373,6 +379,27 @@
         \MYSortIndex{#2}{\texttt{\textbackslash#2}}
       }
   }
+% \bomba
+\NewDocumentCommand \bomba { }
+  {
+    \par\hspace*{-0.5\marginparsep}%
+    \makebox[0pt][r]
+      {
+        \makebox[\marginparsep][r]
+          {
+            \footnotesize\textcolor{pkgcolor}{\faIcon{bomb}}
+          }
+      }
+    \hskip 0.5\marginparsep
+  }
+\NewDocumentEnvironment{important}{ s }
+  {
+    \sffamily
+    \bomba%
+    \IfBooleanTF{#1}
+      { \small }
+      { \color{OrangeRed}\Large }
+  }{}
 \ExplSyntaxOff
 
 % email https://tex.stackexchange.com/a/663
@@ -429,7 +456,7 @@
     keywords      = [3]{document,article,setlength,pagestyle,definecolor},%
 % Reserved words 4 (scontents pkg)
     keywordstyle  = [4]{\color{pkgcolor}},%
-    keywords      = [4]{scontents,Scontents,getstored,typestored,verbatimsc,%
+    keywords      = [4]{scontents,Scontents,getstored,typestored,verbatimsc, mergesc, %
                     endverbatimsc,countsc,meaningsc,foreachsc,macros,newenvsc,
                     endscontents,startscontents,stopscontents,scontents.tex},%
 % Reserved words 5 (in red)
@@ -483,7 +510,7 @@
                     {.8}{{\textcolor{MediumOrchid}{.8}}}{2}
                     {.9}{{\textcolor{MediumOrchid}{.9}}}{2}
                     {=}{{\textcolor{gray}{=}}}{1},%
-}[keywords,tex,comments,strings]% end languaje
+}[keywords,tex,comments,strings]% end language
 
 % \begin{examplecode}[key=val]...\end{examplecode}
 \lstnewenvironment{examplecode}[1][]{%
@@ -550,7 +577,7 @@
 }
 \setfoot{\rlap{\hskip\dimexpr-\oddsidemargin-1in\relax%
          \parbox{1.93\paperwidth}{\hfil\thepage\,/\,\pageref{LastPage}}}}%
-        {\parbox{\textwidth}{\raggedright \textcolor{gray}{\raisebox{-1pt}{\textcopyright}{}2019--2022 by Pablo González}}}%
+        {\parbox{\textwidth}{\raggedright \textcolor{gray}{\raisebox{-1pt}{\textcopyright}{}2019--2024 by Pablo González}}}%
         {}%
 \sethead{\llap{\raisebox{0.55cm}{\parbox{\dimexpr\oddsidemargin+1in\relax}{\makebox[0pt][l]{\hspace{15pt}\pkglogo\space\fileversion}}}}}
         {\raisebox{0.55cm}{\parbox{\textwidth}{\hspace*{-\oddsidemargin}\centering\small\S.\thesection\space\sectiontitle}}}%
@@ -605,7 +632,7 @@
 %    \filedate.}\\[25pt]
 %    \author{
 %    \large
-%    \raisebox{-1pt}{\textcopyright}{}2019--2022 by Pablo González\thanks{
+%    \raisebox{-1pt}{\textcopyright}{}2019--2024 by Pablo González\thanks{
 %    E-mail: \textcolor{OrangeRed}{\textsf{\guillemotleft}}\email{pablgonz@educarchile.cl}\textcolor{OrangeRed}{\textsf{\guillemotright}}.
 %       }%
 %    }
@@ -628,6 +655,10 @@
 %
 % \tableofcontents
 %
+% \begin{important}
+% The next update removes compatibility with versions prior to 2024.
+% \end{important}
+%
 % \setlength{\parskip}{3pt}
 %
 % \section{Description of the package}
@@ -681,12 +712,14 @@
 %
 % Permission is granted to copy, distribute and/or modify this software under
 % the terms of the LaTeX Project Public License (lppl), version 1.3 or later
-% (\url{http://www.latex-project.org/lppl.txt}). The software has the status
+% (\url{https://www.latex-project.org/lppl.txt}). The software has the status
 % \enquote{maintained}.
 %
-% The \mypkg*{scontents} package loads \mypkg{expl3} (minimum version 2020-02-08) and
-% \mypkg{l3keys2e}. This package can be used with "plain", "context", "xelatex",
-% "lualatex", "pdflatex" and the classical workflow §latex>dvips>ps2pdf§.
+% The The \mypkg*{scontents} package is written (mostly) using
+% \mypkg{expl3}, it requires an updated version of \LaTeX{} to work
+% (minimum version 2022-06-01). This package can be used with "plain",
+% "context", "xelatex", "lualatex", "pdflatex" and the classical workflow
+% §latex>dvips>ps2pdf§.
 %
 % \section{The \texttt{scontents} package}
 % \label{sec:pkgscontents}
@@ -772,6 +805,10 @@
 %
 % \fi
 %
+% \begin{important}*
+% \hologo{ConTeXt} users should use |-luatex|, the implementation does not support LuaMetaTeX.
+% \end{important}
+%
 % \subsection{The TAB character}
 % \label{sec:tabcharacter}
 %
@@ -984,6 +1021,7 @@ This text is in the outer environment (after nested).
 %   \envexaplain[start]{scontents}[stop]
 %   \end{syntax}
 % \end{function}
+%
 % \subsection*{Options for environment}
 %
 % The environment options can be configured globally using option
@@ -1184,45 +1222,43 @@ This text is in the outer environment (after nested).
 % on the contents stored in \mymarg{seq name}. If you pass without options run
 % §\getstored§ on all contents stored in \mymarg{seq name}.
 %
-% \subsection*{Options for command}
+% \subsubsection*{Options for command}
 % \label{sec:optcmdfor}
 %
 % \keyexamp{sep}{code}{empty}
-% Establishes the separation between each content stored in \mymarg{seq name}.
+% Establishes the separation between each content stored in \mymarg[type=tt]{seq name}.
 % For example, you can use §sep={\\[10pt]}§ for vertical separation of stored
 % contents.
 %
 % \keyexamp{step}{integer}{1}
 % Sets the increment (\mymeta{step}) applied to the value set by key §start§
-% for each element stored in the \mymarg{seq name}. The value must be a
+% for each element stored in the \mymarg[type=tt]{seq name}. The value must be a
 % \mymeta{positive integer}.
 %
 % \keyexamp{start}{integer}{1}
-% Sets the \mymeta{index} number of the \mymarg{seq name} from which execution
+% Sets the \mymeta{index} number of the \mymarg[type=tt]{seq name} from which execution
 % will start. The value must be a \mymeta{positive integer}.
 %
 % \keyexamp{stop}{integer}{total}
-% Sets the \mymeta{index} number of the \mymarg{seq name} from which execution
+% Sets the \mymeta{index} number of the \mymarg[type=tt]{seq name} from which execution
 % it will finish executing. The value must be a \mymeta{positive integer}.
 %
 % \keyexamp{before}{code}{empty}
-% Sets the \mymarg{code} that will be executed \mymeta{before} each content stored
-% in \mymarg{seq name}. The \mymarg{code} must be passed between braces.
-%
-% \medskip
+% Sets the \mymarg[type=tt]{code} that will be executed \mymeta{before} each content stored
+% in \mymarg[type=tt]{seq name}. The \mymarg[type=tt]{code} must be passed between braces.
 %
 % \keyexamp{after}{code}{empty}
-% Sets the \mymarg{code} that will be executed \mymeta{after} each content stored
-% in \mymarg{seq name}. The \mymarg{code} must be passed between braces.
+% Sets the \mymarg[type=tt]{code} that will be executed \mymeta{after} each content stored
+% in \mymarg[type=tt]{seq name}. The \mymarg[type=tt]{code} must be passed between braces.
 %
 % \newsavebox{\hashbox}
 % \begin{lrbox}{\hashbox}
-% \lstinline[language=scontents-doc,basicstyle=\ttfamily]+{#1}+
+% \lstinline[language=scontents-doc,basicstyle=\small\ttfamily]+{#1}+
 % \end{lrbox}
 %
 % \keyexamp{wrapper}{code{} \space\usebox{\hashbox} more code}{empty}
-% Wraps the content stored in \mymarg{seq name} referenced by §{#1}§.
-% The \mymarg{code} must be passed between braces. For example
+% Wraps the content stored in \mymarg[type=tt]{seq name} referenced by §{#1}§.
+% The \mymarg[type=tt]{code} must be passed between braces. For example
 % §\foreachsc[wrapper={\makebox[1em][l]{#1}}]{contents}§.
 %
 %
@@ -1233,17 +1269,51 @@ This text is in the outer environment (after nested).
 %
 % \begin{function}{\typestored}
 %   \begin{syntax}
-%      \cmdexamp{typestored}[index\textnormal{\textcolor{gray}{,}} width-tab \textnormal{\textcolor{gray}{=}} number]{seq name}
+%      \cmdexamp{typestored}[index\textnormal{\textcolor{gray}{,}} 1-end\textnormal{\textcolor{gray}{,}} width-tab \textnormal{\textcolor{gray}{=}} number]{seq name}
 %   \end{syntax}
 % The command \ics*{typestored} internally places the content stored in
-% the \mymarg{seq name} into the \myenv*{verbatimsc} environment. The \mymeta{index}
-% corresponds to the position in which the content is stored in the \mymarg{seq name}.
+% the \mymarg[type=tt]{seq name} into the \myenv*{verbatimsc} environment. The \mymeta{index}
+% corresponds to the position in which the content is stored in the \mymarg[type=tt]{seq name},
+% if \mymeta[type=tt]{1-end} is used \emph{\enquote{all}} content stored in \mymarg[type=tt]{seq name} will be printed.
 % \end{function}
 %
 % If the optional argument is not passed it defaults to the first element
-% stored in the \mymarg{seq name}. The key \mykey{width-tab} is available for
+% stored in the \mymarg[type=tt]{seq name}. The key \mykey{width-tab} is available for
 % this command.
 %
+% \subsection{The command \cs{mergesc}}
+% \label{sec:mergesc}
+%
+% \vspace*{-10pt}
+%
+% \newsavebox{\argmergesc}
+% \begin{lrbox}{\argmergesc}
+% \small\mymarg[type=tt]{seq A}\myoarg[type=tt]{index}\textcolor{gray}{, }\mymarg[type=tt]{seq B}\myoarg[type=tt]{start \textcolor{gray}{-} stop}\textcolor{gray}{, }\mymarg[type=tt]{seq C}\myoarg[type=tt]{1-end}
+% \end{lrbox}
+%
+% \begin{function}{\mergesc}
+%   \begin{syntax}
+%      \cmdexamp{mergesc}[typestored \textnormal{\textcolor{lightgray}{\textbar}} meaningsc\textcolor{lightgray}{, }keys]{\usebox{\argmergesc}}
+%   \end{syntax}
+% The command \ics*{mergesc} internally assembles the content stored in
+% the \mymarg[type=tt]{seq A}§[1]§, \mymarg[type=tt]{seq B}§[2-5]§ and \mymarg[type=tt]{seq C}§[1-end]§ into a temporary internal
+% \mymeta[type=tt]{seq temp}.
+% \end{function}
+%
+% The use of the keys \mykey{typestored} or \mykey{menaingsc} are
+% \emph{\enquote{mandatory}} and disjoint from each other, the rest of the
+% accepted \mymeta{keys} are \mykey{print-cmd}, \mykey{write-out},
+% \mykey{width-tab} and \mykey{overwrite}.
+%
+% The use of the \mykey{write-out} key with this command follows the same
+% rules already described, the main advantage is that it allows to join
+% stored content \emph{without rewriting} the file over and over again,
+% by design \hologo{TeX} does not have an append mode for writing
+% files, this effectively allows you to write chunks of code and then
+% merge them into a single file.
+%
+% \newpage
+%
 % \subsection{The environment \env{verbatimsc}}
 % \label{sec:verbatimsc}
 %
@@ -1537,10 +1607,10 @@ seventies that the \NSA\ has known that for 40 years.\par
 \usepackage{tikz}
 \setlength{\parindent}{0pt}
 \pagestyle{empty}
-\Scontents*{\matrix{ \node (a) {$a$} ; & \node (b) {$b$} ; \\ } ;}
-\Scontents*{\matrix[ampersand replacement=\&]
+\Scontents{\matrix{ \node (a) {$a$} ; & \node (b) {$b$} ; \\ } ;}
+\Scontents{\matrix[ampersand replacement=\&]
 { \node (a) {$a$} ; \& \node (b) {$b$} ; \\ } ;}
-\Scontents*{\matrix{\node (a) {$a$} ; & \node (b) {$b$} ; \\ } ; }
+\Scontents{\matrix{\node (a) {$a$} ; & \node (b) {$b$} ; \\ } ; }
 \begin{document}
 \section{tikzpicture}
 \begin{tikzpicture}
@@ -1706,9 +1776,9 @@ Something in the whole course.
 %<*example>
 % \fi
 \begin{scontents}[write-out=scexamp7.ltx]
-\documentclass{article}
 % arara: pdflatex
 % arara: clean: { extensions: [ aux, log] }
+\documentclass{article}
 \usepackage{scontents}
 \makeatletter
 \let\verbatimsc\@undefined
@@ -1728,20 +1798,20 @@ breakaftersymbolpre={\,\tiny\ensuremath{\rfloor}}]}%
 \setlength{\parindent}{0pt}
 \pagestyle{empty}
 \begin{document}
-\section{Test \texttt{\textbackslash begin\{scontents\}} whit \texttt{fancyvrb}}
+\section{Test \texttt{\textbackslash begin\{scontents\}} with \texttt{fancyvrb}}
 Test \verb+{scontents}+ \par
 
 \begin{scontents}
 Using \verb+scontents+ env no \verb+[key=val]+, save in seq \verb+contents+
 with index 1.
 
-Prove new \Verb*{ fancyvrb whit braces } and environment \verb+Verbatim*+
+Prove new \Verb*{ fancyvrb with braces } and environment \verb+Verbatim*+
 \begin{verbatim}
  verbatim  environment
 \end{verbatim}
 \end{scontents}
 
-\section{Test \texttt{\textbackslash Scontents} whit \texttt{fancyvrb}}
+\section{Test \texttt{\textbackslash Scontents} with \texttt{fancyvrb}}
 \Scontents{ We have coded this in \LaTeX: $E=mc^2$.}
 
 \section{Test \texttt{\textbackslash getstored}}
@@ -1798,7 +1868,7 @@ Prove new \Verb*{ fancyvrb whit braces } and environment \verb+Verbatim*+
 \setlength{\parindent}{0pt}
 \pagestyle{empty}
 \begin{document}
-\section{Test \texttt{\textbackslash begin\{scontents\}} whit \texttt{listings}}
+\section{Test \texttt{\textbackslash begin\{scontents\}} with \texttt{listings}}
 Test \verb+{scontents}+ \par
 
 \begin{scontents}
@@ -1810,7 +1880,7 @@ Prove \lstinline[basicstyle=\ttfamily]| lstinline | and environment \verb+Verbat
 \end{verbatim}
 \end{scontents}
 
-\section{Test \texttt{\textbackslash Scontents*} whit \texttt{listings}}
+\section{Test \texttt{\textbackslash Scontents*} with \texttt{listings}}
 
 \Scontents*+ We have coded this in \lstinline[basicstyle=\ttfamily]|\LaTeX: $E=mc^2$|
 and more.+
@@ -1852,14 +1922,14 @@ and more.+
 \pagestyle{empty}
 \setlength{\parindent}{0pt}
 \begin{document}
-\section{Test \texttt{\textbackslash begin\{scontents\}} whit \texttt{minted}}
+\section{Test \texttt{\textbackslash begin\{scontents\}} with \texttt{minted}}
 Test \verb+{scontents}+ \par
 
 \begin{scontents}[overwrite,write-env=\jobname.tsc,force-eol=true]
 Using \verb+scontents+ env no \verb+[key=val]+, save in seq \verb+contents+
 with index 1.\par
 
-Prove new \Verb*{ new fvextra whit braces } and environment \verb+Verbatim*+
+Prove new \Verb*{ new fvextra with braces } and environment \verb+Verbatim*+
 \begin{Verbatim}[obeytabs, showtabs, tab=\rightarrowfill, tabcolor=red]
 No tab
 	One real tab
@@ -1871,7 +1941,7 @@ No tab
 Read \Verb{\jobname.tsc} (shows TABs as red arrows):
 \VerbatimInput[obeytabs, showtabs, tab=\rightarrowfill, tabcolor=red]{\jobname.tsc}
 
-\section{Test \texttt{\textbackslash Scontents} whit \texttt{minted}}
+\section{Test \texttt{\textbackslash Scontents} with \texttt{minted}}
 
 \Scontents{ We have coded \par this in \LaTeX: $E=mc^2$.}
 
@@ -1892,6 +1962,90 @@ Read \Verb{\jobname.tsc} (shows TABs as red arrows):
 % \textattachfile[color=linkcolor,print=false]{scexamp9.ltx}{\faFile*[regular]}.
 % \lstinputlisting[language=scontents-doc,numbers=left]{scexamp9.ltx}
 %
+% \subsection{The command \texttt{\textbackslash{}mergesc} in action}
+%
+% \iffalse
+%<*example>
+% \fi
+\begin{scontents}[write-out=scexamp10.ltx]
+% arara: pdflatex
+% arara: clean: { extensions: [ aux, log] }
+\documentclass{article}
+\usepackage{scontents}
+% Fix part of a MCE that should go before babel's loading
+\begin{scontents}[store-env=mce]
+\documentclass[french]{article}
+\usepackage[T1]{fontenc}
+\usepackage[utf8]{inputenc}
+\usepackage{lmodern}
+\usepackage[a4paper]{geometry}
+\end{scontents}
+% Fix part of a MCE that should go after (>=) babel's loading
+\begin{scontents}[store-env=mce]
+\usepackage{babel}
+\begin{document}
+\end{scontents}
+% Fix part of a MCE that should go after its body
+\begin{scontents}[store-env=mce]
+\end{document}
+\end{scontents}
+\begin{document}
+\section{First annswer}
+% Variable part of a MCE that should added to the fixed preamble, before babel's loading
+\begin{scontents}[store-env=mce-1]
+\usepackage{amsmath}
+\end{scontents}
+% Variable part of a MCE being the code snippet
+\begin{scontents}[store-env=mce-1]
+\begin{align}
+  0 & \neq 1 \\
+  1 & \neq 0
+\end{align}
+\end{scontents}
+\begin{description}
+\item[Preamble's addition]\leavevmode
+  \typestored[1]{mce-1}
+\item[Code snippet]\leavevmode
+  \typestored[2]{mce-1}
+\item[MCE]\leavevmode
+  \mergesc[typestored, print-cmd=true]
+    {
+      {mce}[1], {mce-1}[1], {mce}[2], {mce-1}[2], {mce}[3]
+    }
+\end{description}
+\section{Second annswer}
+% Variable part of a MCE that should added to the fixed preamble, before babel's loading
+\begin{scontents}[store-env=mce-2]
+\usepackage{amsmath}
+\end{scontents}
+% Variable part of a MCE being the code snippet
+\begin{scontents}[store-env=mce-2]
+\begin{flalign}
+  0 & \neq 1 \\
+  1 & \neq 0
+\end{flalign}
+\end{scontents}
+
+\begin{description}
+\item[Preamble's addition]\leavevmode
+  \typestored[1]{mce-2}
+\item[Code snippet]\leavevmode
+  \typestored[2]{mce-2}
+\item[MCE]\leavevmode
+  \mergesc[typestored, print-cmd=true, write-out=mce.txt, overwrite=true]
+    {
+      {mce}[1], {mce-2}[1], {mce}[2], {mce-2}[2], {mce}[3]
+    }
+\end{description}
+\end{document}
+\end{scontents}
+% \iffalse
+%
+% \fi
+% The command §\mergesc§ in action, adapted from Denis Bitouzé request at \url{https://github.com/pablgonz/scontents/issues/2}
+% \textattachfile[color=linkcolor,print=false]{scexamp9.ltx}{\faFile*[regular]}.
+% \lstinputlisting[language=scontents-doc,numbers=left]{scexamp10.ltx}
+%
 % \newpage
 %
 % \section{Change history}
@@ -1910,37 +2064,47 @@ Read \Verb{\jobname.tsc} (shows TABs as red arrows):
 % \begin{description}[font=\small\sffamily,wide=0pt,style=multiline,leftmargin=\descrwidth,nosep,noitemsep]
 % \item [\fileversion{} (ctan), \filedate]
 %    \begin{itemize}
-%    \item Adapting the |verbatimsc| environment (compatibility |verbatim| package).
-%    \item Removed compatibility layer for older \hologo{LaTeX} releases.
-%    \item Fix loader in \hologo{plainTeX} and \hologo{ConTeXt}.
-%    \item Minor adjustments in the documentation.
+%        \item Fix |\cleansc| command.
+%        \item Add |\mergesc| command.
+%        \item Fix internal definition for seq var.
+%        \item Fix internal code for |\typestored|.
+%        \item Replace |\cs_argument_spec:N| by |\cs_parameter_spec:N|.
+%        \item Detect |l3keys2e| package (obsolete in june 2022 \LaTeX{} release).
+%        \item Minor adjustments in the documentation.
+%    \end{itemize}
+% \item [v2.0 (ctan), 2022-04-04]
+%    \begin{itemize}
+%        \item Adapting the |verbatimsc| environment (compatibility |verbatim| package).
+%        \item Removed compatibility layer for older \hologo{LaTeX} releases.
+%        \item Fix loader in \hologo{plainTeX} and \hologo{ConTeXt}.
+%        \item Minor adjustments in the documentation.
 %    \end{itemize}
 % \item [v1.9 (ctan), 2020-01-21]
 %    \begin{itemize}
-%    \item Update and improvements in the internal code.
-%    \item Updating the generic code for |I/O| verification.
-%    \item Add |write-cmd| and |write-out| keys for |\Scontents*|.
-%    \item Fix |sep| key in |\foreachsc|.
+%        \item Update and improvements in the internal code.
+%        \item Updating the generic code for |I/O| verification.
+%        \item Add |write-cmd| and |write-out| keys for |\Scontents*|.
+%        \item Fix |sep| key in |\foreachsc|.
 %    \end{itemize}
 % \item [v1.8 (ctan), 2019-11-18]
 %    \begin{itemize}
-%    \item Add |\newenvsc| command.
-%    \item Fix nested environment in \hologo{plainTeX} and \hologo{ConTeXt}.
-%    \item Modified default value in |\getstored|.
-%    \item Add |overwrite| key to reduce |I/O| operations.
-%    \item Deleted an unnecessary group in the code.
+%        \item Add |\newenvsc| command.
+%        \item Fix nested environment in \hologo{plainTeX} and \hologo{ConTeXt}.
+%        \item Modified default value in |\getstored|.
+%        \item Add |overwrite| key to reduce |I/O| operations.
+%        \item Deleted an unnecessary group in the code.
 %    \end{itemize}
 % \item [v1.7 (ctan), 2019-10-29]
 %    \begin{itemize}
-%    \item The |verbatimsc| environment was rewritten.
-%    \item Minor adjustments in documentation.
+%        \item The |verbatimsc| environment was rewritten.
+%        \item Minor adjustments in documentation.
 %    \end{itemize}
 % \item [v1.6 (ctan), 2019-10-26]
 %    \begin{itemize}
-%    \item The internal behavior of |\getstored| has been modified.
-%    \item The internal behavior of |\foreachsc| has been modified.
-%    \item Corrected file extension for \hologo{ConTeXt}.
-%    \item Remove spurious warning.
+%        \item The internal behavior of |\getstored| has been modified.
+%        \item The internal behavior of |\foreachsc| has been modified.
+%        \item Corrected file extension for \hologo{ConTeXt}.
+%        \item Remove spurious warning.
 %    \end{itemize}
 % \item [v1.5 (ctan), 2019-10-24]
 %    \begin{itemize}
@@ -1998,15 +2162,15 @@ Read \Verb{\jobname.tsc} (shows TABs as red arrows):
 % \begin{thebibliography}{9}
 % \bibitem{expl3} The \hologo{LaTeX} Project. \enquote{The \textsf{expl3}
 % package}. Available from
-% \textsc{ctan}, \url{https://www.ctan.org/pkg/expl3}, 2020.
+% \textsc{ctan}, \url{https://www.ctan.org/pkg/expl3}, 2023.
 %
 % \bibitem{xparse} The \hologo{LaTeX} Project. \enquote{The \textsf{xparse}
 % package}. Available from
-% \textsc{ctan}, \url{https://www.ctan.org/pkg/xparse}, 2020.
+% \textsc{ctan}, \url{https://www.ctan.org/pkg/xparse}, 2023.
 %
 % \bibitem{l3keys} The \hologo{LaTeX} Project. \enquote{The \textsf{l3keys2e}
 % package}. Available from
-% \textsc{ctan}, \url{https://www.ctan.org/pkg/l3keys2e}, 2020.
+% \textsc{ctan}, \url{https://www.ctan.org/pkg/l3keys2e}, 2022.
 %
 % \bibitem{keyval} \textsc{Wright, Joseph}. \enquote{Programming
 % \textsf{key–value} in \textsf{expl3}}. Available from
@@ -2053,10 +2217,10 @@ Read \Verb{\jobname.tsc} (shows TABs as red arrows):
 %
 % Now we define some common macros to hold the package date and version:
 %    \begin{macrocode}
-%\def\ScontentsFileDate{2022-04-04}%
-%\def\ScontentsCoreFileDate{2022-04-04}%
+%\def\ScontentsFileDate{2024-06-14}%
+%\def\ScontentsCoreFileDate{2024-06-14}%
 %<*loader>
-\def\ScontentsFileVersion{2.0}%
+\def\ScontentsFileVersion{2.1}%
 \def\ScontentsFileDescription{Stores LaTeX contents in memory or files}%
 %    \end{macrocode}
 %
@@ -2065,7 +2229,15 @@ Read \Verb{\jobname.tsc} (shows TABs as red arrows):
 %
 %    \begin{macrocode}
 %<*latex>
-\RequirePackage{l3keys2e}[2020/02/08]
+\IfFormatAtLeastTF { 2022-06-01 }
+  { }
+  {
+    \RequirePackage{l3keys2e}[2020/02/08]
+    \PackageWarning { scontents }
+      {
+        The next update removes compatibility with versions prior to 2024.
+      }
+  }
 \ProvidesExplPackage
   {scontents} {\ScontentsFileDate} {\ScontentsFileVersion} {\ScontentsFileDescription}
 %
@@ -2229,6 +2401,13 @@ Read \Verb{\jobname.tsc} (shows TABs as red arrows):
 %    \end{macrocode}
 % \end{macro}
 %
+% \begin{macro}{\l_@@_keys_tl}
+%   Stores unused keys to be frwarded to other commands.
+%    \begin{macrocode}
+\tl_new:N \l_@@_keys_tl
+%    \end{macrocode}
+% \end{macro}
+%
 % \subsection{Compatibility layer with \hologo{plainTeX} and \hologo{ConTeXt}}
 %
 % When loading the package outside of \LaTeX{} we can't usually use
@@ -2292,9 +2471,14 @@ Read \Verb{\jobname.tsc} (shows TABs as red arrows):
 % In \LaTeX{} mode we load \mypkg{l3keys2e} process the \mymeta{keys}
 % as options passed on to the package, the package \pkg{l3keys2e} will
 % verify the \mymeta{keys} and will return an error when they are
-% \emph{unknown}.
 %    \begin{macrocode}
-%\ProcessKeysOptions { scontents }
+%<*latex>
+\IfFormatAtLeastTF { 2022-06-01 }
+  {
+    \ProcessKeyOptions [ scontents ]
+  }
+  { \ProcessKeysOptions { scontents } }
+%
 %<*core>
 %    \end{macrocode}
 %
@@ -2333,8 +2517,8 @@ Read \Verb{\jobname.tsc} (shows TABs as red arrows):
 %    \end{macrocode}
 % \end{macro}
 %
-% \begin{macro}{\l_@@_seq_item_int,\l_@@_env_nesting_int,\l_@@_foreach_stop_int}
-%   \cs{l_@@_seq_item_int} stores the index in the sequence of the item
+% \begin{macro}{\l_@@_env_nesting_int,\l_@@_foreach_stop_int}
+%   \cs{l_@@_seq_item_seq} stores the indexes in the sequence of the items
 %   requested to §\typestored§ or §\meaningsc§. \cs{l_@@_env_nesting_int}
 %   stores the current nesting level of the \env{scontents} environment.
 %   \cs{l_@@_foreach_stop_int} will save the value at which the §\foreachsc§
@@ -2342,7 +2526,7 @@ Read \Verb{\jobname.tsc} (shows TABs as red arrows):
 %
 %    \begin{macrocode}
 \int_new:N \l_@@_foreach_stop_int
-\int_new:N \l_@@_seq_item_int
+\seq_new:N \l_@@_seq_item_seq
 \int_new:N \l_@@_env_nesting_int
 %    \end{macrocode}
 % \end{macro}
@@ -2382,6 +2566,7 @@ Read \Verb{\jobname.tsc} (shows TABs as red arrows):
 %
 %    \begin{macrocode}
 \seq_new:N \l_@@_foreach_print_seq
+\seq_new:c { g_@@_name_sc!internal_seq }
 %    \end{macrocode}
 % \end{macro}
 %
@@ -2407,6 +2592,27 @@ Read \Verb{\jobname.tsc} (shows TABs as red arrows):
 %    \end{macrocode}
 % \end{macro}
 %
+% \begin{macro}{\s_@@_stop,\s_@@_mark}
+%    \begin{macrocode}
+\scan_new:N \s_@@_stop
+\scan_new:N \s_@@_mark
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\l_@@_cur_seq_name_str}
+%    \begin{macrocode}
+\str_new:N \l_@@_cur_seq_name_str
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_use_i_delimit_by_s_stop:nw,\@@_use_none_delimit_by_s_stop:w}
+%    \begin{macrocode}
+\cs_new:Npn \@@_use_delimit_by_s_stop:nw #1 \s_@@_stop {#1}
+\cs_new:Npn \@@_use_i_delimit_by_s_stop:nw #1 #2 \s_@@_stop {#1}
+\cs_new:Npn \@@_use_none_delimit_by_s_stop:w #1 \s_@@_stop { }
+%    \end{macrocode}
+% \end{macro}
+%
 % \begin{macro}{\l_@@_save_sf_int,\l_@@_save_skip}
 %   Internal variables used by functions \cs{@@_bsphack:} and \cs{@@_esphack:}.
 %
@@ -2450,7 +2656,7 @@ Read \Verb{\jobname.tsc} (shows TABs as red arrows):
 \cs_generate_variant:Nn \tl_remove_once:Nn { NV }
 \cs_generate_variant:Nn \tl_replace_all:Nnn { Nx, Nxx, Nnx }
 \cs_generate_variant:Nn \msg_error:nnnn { nnx }
-\prg_generate_conditional_variant:Nnn \tl_if_empty:n { f } { TF }
+\prg_generate_conditional_variant:Nnn \tl_if_empty:n { f } { p, TF }
 %    \end{macrocode}
 % \end{macro}
 %
@@ -2566,16 +2772,25 @@ Read \Verb{\jobname.tsc} (shows TABs as red arrows):
 % a common \mymeta{key}.
 %
 %    \begin{macrocode}
+\bool_new:N \l_@@_print_aux_bool
+\bool_set_true:N  \l_@@_print_aux_bool
 \keys_define:nn { scontents / typemeaning }
   {
-    width-tab .meta:nn = { scontents } { width-tab = #1 },
-    unknown   .code:n  = { \@@_parse_type_meaning_key:n {#1} }
+    width-tab .meta:nn   = { scontents } { width-tab = #1 },
+    write-out .code:n    = {
+                             \bool_set_false:N \l_@@_storing_bool
+                             \bool_set_true:N  \l_@@_writing_bool
+                             \tl_set:Nn \l_@@_fname_out_tl {#1}
+                           },
+    overwrite .meta:nn   = { scontents } { overwrite = #1 },
+    overwrite .default:n = true,
+    unknown   .code:n    = { \@@_parse_type_meaning_key:n {#1} }
   }
 %    \end{macrocode}
 %
 % \subsection{Handling undefined keys}
 %
-% The \mymeta{keys} are stored in the token list variable \cs{l_keys_key_str},
+% The \mymeta{keys} are stored in the string variable \cs{l_keys_key_str},
 % and the value (if any) is passed as an argument to each \mymeta{function}.
 %
 % \subsubsection{Undefined keys for environment \env{scontents}}
@@ -2666,16 +2881,42 @@ Read \Verb{\jobname.tsc} (shows TABs as red arrows):
   { \exp_args:NV \@@_parse_type_meaning_key:nn \l_keys_key_str {#1} }
 \cs_new_protected:Npn \@@_parse_type_meaning_key:nn #1#2
   {
-    \tl_if_empty:fTF { \int_to_roman:n { -0 #1 } }
+    \tl_if_blank:nTF {#2}
+      { \@@_parse_type_meaning_range:w #1 - \q_@@_mark - \s_@@_mark }
+      { \msg_error:nnnn { scontents } { type-key-value-unknown } {#1} {#2} }
+  }
+\cs_new_protected:Npn \@@_parse_type_meaning_range:w #1 - #2 - #3 \s_@@_mark
+  {
+    \@@_range_parser:nnxn {#1} {#2}
+      { \seq_count:c { g_@@_name_\l_@@_cur_seq_name_str _seq } }
+      { \msg_error:nnn { scontents } { type-key-unknown } }
+  }
+\cs_generate_variant:Nn \@@_range_parser:nnnn { nnx }
+\cs_new_protected:Npn \@@_range_parser:nnnn #1 #2 #3
+  {
+    \exp_args:Nxx \@@_range_parser_aux:nnn
+      { \str_if_eq:nnTF {#1} { end } {#3} { \exp_not:n {#1} } }
+      { \str_if_eq:nnTF {#2} { end } {#3} { \exp_not:n {#2} } }
+  }
+\cs_new_protected:Npn \@@_range_parser_aux:nnn #1 #2 #3
+  {
+    \@@_tl_if_head_is_q_mark:nTF {#2}
       {
-        \tl_if_blank:nTF {#2}
-          { \int_set:Nn \l_@@_seq_item_int {#1} }
-          { \msg_error:nnnn { scontents } { type-key-value-unknown } {#1} {#2} }
+        \tl_if_empty:fTF { \int_to_roman:n { -0 #1 } }
+          { \seq_put_right:Nx \l_@@_seq_item_seq { \int_eval:n {#1} } }
+          { #3 {#1} }
       }
       {
-        \tl_if_blank:nTF {#2}
-          { \msg_error:nnn { scontents } { type-key-unknown } {#1} }
-          { \msg_error:nnnn { scontents } { type-key-value-unknown } {#1} {#2} }
+        \bool_lazy_and:nnTF
+            { \tl_if_empty_p:f { \int_to_roman:n { -0 #1 } } }
+            { \tl_if_empty_p:f { \int_to_roman:n { -0 #2 } } }
+          {
+            \int_compare:nNnTF {#2} > {#1}
+              { \int_step_inline:nnnn {#1} { 1 } {#2} }
+              { \int_step_inline:nnnn {#1} { -1 } {#2} }
+                { \seq_put_right:Nn \l_@@_seq_item_seq {##1} }
+          }
+          { #3 { #1-#2 } }
       }
   }
 %    \end{macrocode}
@@ -2704,11 +2945,24 @@ Read \Verb{\jobname.tsc} (shows TABs as red arrows):
 %    \end{macrocode}
 % \end{macro}
 %
-% \begin{macro}{\@@_getfrom_seq:nn,\@@_getfrom_seq:nnn}
+% \begin{macro}{\@@_getfrom_seq:nn,\@@_getfrom_seq:Nn,\@@_getfrom_seq:nnn}
 %   The function \cs{@@_getfrom_seq:nn} retrieves the saved item from the
 %   sequence.
 %
 %    \begin{macrocode}
+\cs_new:Npn \@@_getfrom_seq:Nn #1#2
+  {
+    \seq_if_exist:cTF { g_@@_name_#2_seq }
+      {
+        \exp_args:Nf \@@_getfrom_seq:nNn
+          { \seq_count:c { g_@@_name_#2_seq } } #1 {#2}
+      }
+      { \msg_expandable_error:nnn { scontents } { undefined-storage } {#2} }
+  }
+\cs_new:Npn \@@_getfrom_seq:nNn #1 #2 #3
+  { \seq_map_tokens:Nn #2 { \@@_getfrom_seq_aux:nnn {#1} {#3} } }
+\cs_new:Npn \@@_getfrom_seq_aux:nnn #1 #2 #3
+  { \exp_args:Nnf \use:n { \@@_getfrom_seq:nnn {#1} } { \int_eval:n {#3} } {#2} }
 \cs_new:Npn \@@_getfrom_seq:nn #1#2
   {
     \seq_if_exist:cTF { g_@@_name_#2_seq }
@@ -2765,7 +3019,7 @@ Read \Verb{\jobname.tsc} (shows TABs as red arrows):
 %
 % In order to be able to define environments that behave similarly to
 % \myenv{scontents}, we define a generic environment and make all other
-% environment as wappers around that one.
+% environment as wrappers around that one.
 %
 % \subsubsection{The command \cs{newenvsc}}
 %
@@ -2853,7 +3107,7 @@ Read \Verb{\jobname.tsc} (shows TABs as red arrows):
 %     \startscontents,
 %     \stopscontents,
 %   }
-%   Finaly defining the \myenv{scontents} environment should be easy :)
+%   Finally defining the \myenv{scontents} environment should be easy :)
 %    \begin{macrocode}
 %
 %\newenvsc{scontents}
@@ -2910,7 +3164,7 @@ Read \Verb{\jobname.tsc} (shows TABs as red arrows):
 %   The function \cs{@@_start_after_option:w} also checks for trailing
 %   tokens after the optional argument and issues an error if any.
 %
-%   In all cases, the function \cs{@@_check_line_process:xn} ckecks that
+%   In all cases, the function \cs{@@_check_line_process:xn} checks that
 %   everything past §\begin{scontents}§ is empty and then process
 %   the environment.
 %
@@ -3407,7 +3661,7 @@ Read \Verb{\jobname.tsc} (shows TABs as red arrows):
 %    \end{macrocode}
 %
 %   The function \cs{@@_norm_arg:n} grabs a normal argument, adds it to
-%   the |seq| varaible and optionally prints it.
+%   the |seq| variable and optionally prints it.
 %
 %    \begin{macrocode}
 \cs_new_protected:Npn \@@_norm_arg:n #1
@@ -3438,7 +3692,7 @@ Read \Verb{\jobname.tsc} (shows TABs as red arrows):
 %   }
 %
 %   The function \cs{@@_verb_arg_internal:n} replace all §\^^M§ by
-%   §\^^J§ then adds it to the |seq| varaible.
+%   §\^^J§ then adds it to the |seq| variable.
 %
 %    \begin{macrocode}
 \cs_new_protected:Npn \@@_verb_arg_internal:n #1
@@ -3593,21 +3847,36 @@ Read \Verb{\jobname.tsc} (shows TABs as red arrows):
 %<*core>
 \cs_new_protected:Npn \@@_typestored_internal:nn #1 #2
   {
+    \@@_bsphack:
     \group_begin:
-      \int_set:Nn \l_@@_seq_item_int { 1 }
+      \seq_clear:N \l_@@_seq_item_seq
+      \str_set:Nx \l_@@_cur_seq_name_str {#2}
       \tl_if_novalue:nF {#1} { \keys_set:nn { scontents / typemeaning } {#1} }
+      \seq_if_empty:NT \l_@@_seq_item_seq
+        { \seq_set_from_clist:Nn \l_@@_seq_item_seq { 1 } }
       \tl_set:Nx \l_@@_temp_tl
-        { \exp_args:NV \@@_getfrom_seq:nn \l_@@_seq_item_int {#2} }
-      \tl_remove_once:NV \l_@@_temp_tl \c_@@_hidden_space_str
+        { \@@_getfrom_seq:Nn \l_@@_seq_item_seq {#2} }
+      \@@_remove_trailing_eol:N \l_@@_temp_tl
+      \tl_replace_all:Nxn \l_@@_temp_tl \c_@@_hidden_space_str { ^^J }
       \tl_log:N \l_@@_temp_tl
       \tl_if_empty:NF \l_@@_temp_tl
-        { \@@_verb_print:N \l_@@_temp_tl }
+        {
+          \bool_if:NT \l_@@_print_aux_bool
+            {
+              \@@_verb_print:N \l_@@_temp_tl
+            }
+        }
+      \@@_file_write_cmd:VV \l_@@_fname_out_tl \l_@@_temp_tl
+      \use:x
+        {
     \group_end:
+    \bool_if:NF \l_@@_print_aux_bool { \@@_esphack: }
+        }
   }
 %    \end{macrocode}
 %
 %   The \cs{@@_verb_print:N} macro is defined with active carriage return
-%   (\textsc{ascii} 13) characters to mimick an actual verbatim environment
+%   (\textsc{ascii} 13) characters to mimic an actual verbatim environment
 %   \enquote{on the loose}. The contents of the environment are placed in a
 %   §verbatimsc§ environment and rescanned using \cs{@@_rescan_tokens:x}.
 %
@@ -3645,6 +3914,109 @@ Read \Verb{\jobname.tsc} (shows TABs as red arrows):
 %    \end{macrocode}
 % \end{macro}
 %
+% \subsection{The command \cs{mergesc}}
+%
+% \begin{macro}{\mergesc}
+%   The §\mergesc§ command parses a list given as argument, and just assembles
+%   it as a temporary internal sequence, then passes it to the requested command.
+%    \begin{macrocode}
+%<*loader>
+\NewDocumentCommand \mergesc { o m }
+  { \@@_mergesc_internal:nn {#1} {#2} }
+%
+%<*core>
+\keys_define:nn { scontents / mergesc }
+  {
+    , typestored .code:n =
+        { \cs_set_eq:NN \@@_mergesc_output_cmd:nn \@@_typestored_internal:nn }
+    , meaningsc .code:n =
+        { \cs_set_eq:NN \@@_mergesc_output_cmd:nn \@@_meaningsc_internal:nn }
+  }
+\cs_new_protected:Npn \@@_mergesc_output_cmd:nn #1 #2
+  { \msg_error:nn { scontents } { mergesc-missing-cmd } }
+\msg_new:nnn { scontents } { mergesc-missing-cmd }
+  { Missing~output~command~for~\iow_char:N\\mergesc~\msg_line_context:. }
+\cs_new_protected:Npn \@@_mergesc_internal:nn #1 #2
+  {
+    \group_begin:
+      \tl_clear:N \l_@@_keys_tl
+      \tl_if_novalue:nF {#1}
+        {
+          % Add print-cmd here :D
+          \keys_define:nn { scontents / typemeaning }
+            {
+              print-cmd .bool_set:N = \l_@@_print_aux_bool,
+              print-cmd .initial:n = false,
+              print-cmd .default:n = true,
+            }
+          \keys_set_known:nnN { scontents / mergesc } {#1} \l_@@_keys_tl
+         }
+      \seq_gclear:c { g_@@_name_sc!internal_seq }
+      \@@_mergesc_parse_list:n {#2}
+      \exp_args:Nx \@@_mergesc_output_cmd:nn
+        { 1-end, \exp_not:V \l_@@_keys_tl } { sc!internal }
+    \group_end:
+  }
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+\cs_new_protected:Npn \@@_mergesc_parse_list:n #1
+  {
+    \clist_map_inline:nn {#1} { \@@_parse_mergesc:nw ##1 \s_@@_stop }
+    \seq_gpop_right:cN { g_@@_name_sc!internal_seq } \l_@@_temp_tl
+    \@@_remove_trailing_eol:N \l_@@_temp_tl
+    \seq_gput_right:cV { g_@@_name_sc!internal_seq } \l_@@_temp_tl
+  }
+\cs_new_protected:Npx \@@_remove_trailing_eol:N #1
+  {
+    \exp_not:N \exp_after:wN \exp_not:N \@@_remove_trailing_eol:w
+      #1 \s_@@_stop \c_@@_hidden_space_str \s_@@_stop \s_@@_mark #1
+  }
+\use:e
+  {
+    \cs_new_protected:Npn \exp_not:N \@@_remove_trailing_eol:w #1
+        \c_@@_hidden_space_str \s_@@_stop #2 \s_@@_mark #3
+  }   {
+        \tl_set:Nx #3
+          {
+            \tl_if_empty:nTF {#2}
+              { \exp_not:o { \@@_use_delimit_by_s_stop:nw #1 } }
+              { \exp_not:n {#1} }
+          }
+      }
+\cs_new_protected:Npn \@@_parse_mergesc:nw #1
+  {
+    \peek_charcode_ignore_spaces:NTF [ % ]
+      { \@@_parse_mergesc_aux:nw {#1} }
+      { \@@_parse_mergesc_aux:nw {#1} [ 1-\seq_count:c { g_@@_name_#1_seq } ] }
+  }
+\cs_new_protected:Npn \@@_parse_mergesc_aux:nw #1 [#2]
+  {
+    \seq_clear:N \l_@@_seq_item_seq
+    \clist_map_inline:nn {#2}
+      { \@@_parse_mergesc_range:nw {#1} ##1 - \q_@@_mark - \s_@@_mark }
+    \seq_map_inline:Nn \l_@@_seq_item_seq
+      {
+        \seq_gput_right:cx { g_@@_name_sc!internal_seq }
+          { \seq_item:cn { g_@@_name_#1_seq } {##1} }
+      }
+    \@@_use_none_delimit_by_s_stop:w
+  }
+\cs_new_protected:Npn \@@_parse_mergesc_range:nw #1 #2 - #3 - #4 \s_@@_mark
+  {
+    \cs_set_protected:Npn \@@_tmp:w ##1
+      {
+        \msg_error:nnxxx { scontents } { index-out-of-range }
+          {##1} {#1} { \seq_count:c { g_@@_name_#1_seq } }
+      }
+    \@@_range_parser:nnxn {#2} {#3}
+      { \seq_count:c { g_@@_name_#1_seq } }
+      { \@@_tmp:w }
+  }
+%
+%    \end{macrocode}
+% \end{macro}
+%
 % \begin{macro}{verbatimsc,\startverbatimsc,\stopverbatimsc}
 %   Finally the \hologo{LaTeX} and \hologo{ConTeXt} version of
 %   §verbatimsc§ environment is defined.
@@ -3697,20 +4069,20 @@ Read \Verb{\jobname.tsc} (shows TABs as red arrows):
 %   §\do@noligs§ which makes sure to not consume following space
 %   tokens. The \LaTeXe{} version ends with §\char`#1§, which
 %   leaves \TeX{} still looking for an \mymeta{optional~space}.
-%   This version uses \cs{char_generate:nn} to ensure that doesn't
-%   happen.
-%
+%^^A   This version uses \cs{char_generate:nn} to ensure that doesn't
+%^^A   happen.
+%^^A   Maintain documentation at this point.
 %    \begin{macrocode}
-\cs_new:Npn \@@_do_noligs:N #1
+\cs_new_protected:Npn \@@_do_noligs:N #1
   {
     \char_set_catcode_active:N #1
-    \char_set_active_eq:Nc #1 { @@_active_char_ \token_to_str:N #1 : }
     \cs_set:cpx { @@_active_char_ \token_to_str:N #1 : }
       {
         \mode_leave_vertical:
         \tex_kern:D \c_zero_dim
-        \char_generate:nn { `#1 } { 12 }
+        \tex_char:D `\exp_not:N #1
       }
+    \char_set_active_eq:Nc #1 { @@_active_char_ \token_to_str:N #1 : }
   }
 %    \end{macrocode}
 % \end{macro}
@@ -3721,7 +4093,8 @@ Read \Verb{\jobname.tsc} (shows TABs as red arrows):
 \prg_new_protected_conditional:Npnn \@@_tl_if_head_is_q_mark:n #1
   { T, F, TF }
   {
-    \if_meaning:w \q_@@_mark #1 \scan_stop:
+    \exp_after:wN \if_meaning:w
+      \exp_after:wN \q_@@_mark \@@_use_i_delimit_by_s_stop:nw #1 ? \s_@@_stop
       \prg_return_true:
     \else:
       \prg_return_false:
@@ -3805,8 +4178,11 @@ Read \Verb{\jobname.tsc} (shows TABs as red arrows):
 \cs_new_protected:Npn \@@_meaningsc_internal:nn #1 #2
   {
     \group_begin:
-      \int_set:Nn \l_@@_seq_item_int { 1 }
+      \seq_clear:N \l_@@_seq_item_seq
+      \str_set:Nx \l_@@_cur_seq_name_str {#2}
       \tl_if_novalue:nF {#1} { \keys_set:nn { scontents / typemeaning } {#1} }
+      \seq_if_empty:NT \l_@@_seq_item_seq
+        { \seq_set_from_clist:Nn \l_@@_seq_item_seq { 1 } }
       \@@_meaningsc:n {#2}
     \group_end:
   }
@@ -3815,9 +4191,9 @@ Read \Verb{\jobname.tsc} (shows TABs as red arrows):
   \cs_new_protected:Npn \@@_meaningsc:n #1
     {
       \tl_set:Nx \l_@@_temp_tl
-        { \exp_args:NV \@@_getfrom_seq:nn \l_@@_seq_item_int {#1} }
+        { \@@_getfrom_seq:Nn \l_@@_seq_item_seq {#1} }
       \tl_replace_all:Nxn \l_@@_temp_tl { \iow_char:N \^^J } { ~ }
-      \tl_remove_once:NV  \l_@@_temp_tl \c_@@_hidden_space_str
+      \tl_replace_all:Nxn \l_@@_temp_tl \c_@@_hidden_space_str { ~ }
       \tl_log:N \l_@@_temp_tl
       \tl_use:N \l_@@_verb_font_tl
       \tl_replace_all:Nnx \l_@@_temp_tl { ^^I } { \@@_tabs_to_spaces: }
@@ -3852,7 +4228,7 @@ Read \Verb{\jobname.tsc} (shows TABs as red arrows):
 %
 %<*loader>
 \NewDocumentCommand \cleanseqsc { m }
-  { \seq_clear_new:c { g_@@_name_#1_seq } }
+  { \seq_gclear_new:c { g_@@_name_#1_seq } }
 %
 %<*core>
 %    \end{macrocode}
diff --git a/macros/latex/contrib/scontents/scontents.ins b/macros/latex/contrib/scontents/scontents.ins
index 32b3e52331..39ec569e83 100644
--- a/macros/latex/contrib/scontents/scontents.ins
+++ b/macros/latex/contrib/scontents/scontents.ins
@@ -3,13 +3,13 @@
 \askforoverwritefalse
 \declarepreamble\standard
 
-Copyright (C) 2019-2022 by Pablo González L 
+Copyright (C) 2019-2024 by Pablo González L 
 
 This work may be distributed and/or modified under the conditions of the
 LaTeX Project Public License, either version 1.3c of this license or (at
 your option) any later version. The latest version of this license is in
 
- http://www.latex-project.org/lppl.txt
+ https://www.latex-project.org/lppl.txt
 
 and version 1.3c or later is part of all distributions of LaTeX version
 2005/12/01 or later.
@@ -33,11 +33,11 @@ and the derived files           scontents.sty,
 \declarepreamble\context
  \string\module
    [     file=t-scontents,
-      version=2.0,
+      version=2.1,
         title=\string\CONTEXT\ User Module,
      subtitle=Storing Contents,
        author=Pablo González,
-         date=2022-04-04,
+         date=2024-06-14,
     copyright=Pablo González,
         email=pablgonz@educarchile.cl,
       license=LPPL]
diff --git a/macros/latex/contrib/scontents/scontents.pdf b/macros/latex/contrib/scontents/scontents.pdf
index 73255df198..44bf07e5ce 100644
Binary files a/macros/latex/contrib/scontents/scontents.pdf and b/macros/latex/contrib/scontents/scontents.pdf differ
diff --git a/support/TeX4ht/source/ChangeLog b/support/TeX4ht/source/ChangeLog
index d9cfcceeac..08cc3090c3 100644
--- a/support/TeX4ht/source/ChangeLog
+++ b/support/TeX4ht/source/ChangeLog
@@ -1,3 +1,9 @@
+2024-06-15  Michal Hoftich  
+
+	* tex4ht-4ht.tex (nameref.4ht): use \@currentlabelname if \NR:Title
+	is not set.
+	https://tex.stackexchange.com/a/720647/2891
+
 2024-06-10  Michal Hoftich  
 
 	* tex4ht-4ht.tex (babel-sty-hooks.4ht): use \ProvideDocumentCommand
diff --git a/support/TeX4ht/source/tex4ht-4ht.tex b/support/TeX4ht/source/tex4ht-4ht.tex
index 998a21722f..8c5eca3dc9 100644
--- a/support/TeX4ht/source/tex4ht-4ht.tex
+++ b/support/TeX4ht/source/tex4ht-4ht.tex
@@ -1,4 +1,4 @@
-% $Id: tex4ht-4ht.tex 1528 2024-06-10 18:18:47Z michal_h21 $
+% $Id: tex4ht-4ht.tex 1529 2024-06-15 17:59:08Z michal_h21 $
 % tex tex4ht-4ht   or   ht tex tex4ht-4ht
 %
 % Copyright 2009-2024 TeX Users Group    
@@ -3487,11 +3487,20 @@ configuration until now. It seems to be useful when we need to inject something
 into the environment without messing the existing \`|\ConfigureEnv|
 definitions.
 
+% Michal 2024-06-15
+% I've added use of \a:newlabel{\@currentlabelname} if \NR:Type is empty. 
+% It seems to add support for name ref labels that are not supported yet
+% We need to empty \NR:Type after \label. I hope this doesn't break anything.
+% https://tex.stackexchange.com/a/720647/2891
+
 \<<<
 \let\NR:Type\relax
 \let\ltx@label\label
-\def\prf:label{{\ifx \NR:Title\:UnDef \else \NR:Title\fi}%
+\def\prf:label{{\ifx \NR:Title\:UnDef \a:newlabel{\@currentlabelname}\else \NR:Title\fi}%
                {\ifx \NR:Type\relax \else \NR:Type .1\fi}{}}%
+
+\append:defI\label{\let\NR:Title\undefined}
+
 \let\NR:StartSec\:StartSec
 \let\NR:no@sect\no@sect
 \def\no@sect#1#2#3#4#5#6[#7]#8{\gdef\NR:Title{\a:newlabel{#7}}%
diff --git a/support/latexindent/LatexIndent/GetYamlSettings.pm b/support/latexindent/LatexIndent/GetYamlSettings.pm
index 4d4940371d..6365e0fd93 100644
--- a/support/latexindent/LatexIndent/GetYamlSettings.pm
+++ b/support/latexindent/LatexIndent/GetYamlSettings.pm
@@ -389,36 +389,8 @@ sub yaml_read_settings {
                 # output the contents of indentconfig to the log file
                 $logger->info( Dump \%{ $userSettings->[0] } );
 
-                # change the encoding of the paths according to the field `encoding`
-                if ( $userSettings and ( ref( $userSettings->[0] ) eq 'HASH' ) and $userSettings->[0]->{encoding} ) {
-                    use Encode;
-                    my $encoding       = $userSettings->[0]->{encoding};
-                    my $encodingObject = find_encoding($encoding);
-
-                    # Check if the encoding is valid.
-                    if ( ref($encodingObject) ) {
-                        $logger->info("*Encoding of the paths is $encoding");
-                        foreach ( @{ $userSettings->[0]->{paths} } ) {
-                            my $temp = $encodingObject->encode("$_");
-                            $logger->info("Transform file encoding: $_ -> $temp");
-                            push( @absPaths, $temp );
-                        }
-                    }
-                    else {
-                        $logger->warn("*encoding \"$encoding\" not found");
-                        $logger->warn("Ignore this setting and will take the default encoding.");
-                        @absPaths = @{ $userSettings->[0]->{paths} };
-                        foreach ( @{ $userSettings->[0]->{paths} } ) {
-                            push( @absPaths, $_ );
-                        }
-                    }
-                }
-                else    # No such setting, and will take the default
-                {
-                    # $logger->info("*Encoding of the paths takes the default.");
-                    foreach ( @{ $userSettings->[0]->{paths} } ) {
-                        push( @absPaths, $_ );
-                    }
+                foreach ( @{ $userSettings->[0]->{paths} } ) {
+                    push( @absPaths, $_ );
                 }
             }
 
diff --git a/support/latexindent/LatexIndent/Logger.pm b/support/latexindent/LatexIndent/Logger.pm
index 425c8eae07..7c4352a95f 100644
--- a/support/latexindent/LatexIndent/Logger.pm
+++ b/support/latexindent/LatexIndent/Logger.pm
@@ -18,7 +18,7 @@ package LatexIndent::Logger;
 
 use strict;
 use warnings;
-use Exporter;
+use Exporter qw/import/;
 use LatexIndent::Switches qw/%switches/;
 our @ISA       = "LatexIndent::Document";    # class inheritance, Programming Perl, pg 321
 our @EXPORT_OK = qw/@logFileLines/;
diff --git a/support/latexindent/LatexIndent/Special.pm b/support/latexindent/LatexIndent/Special.pm
index 096d2935c9..8dac47bfc0 100644
--- a/support/latexindent/LatexIndent/Special.pm
+++ b/support/latexindent/LatexIndent/Special.pm
@@ -17,14 +17,14 @@ package LatexIndent::Special;
 #	For all communication, please visit: https://github.com/cmhughes/latexindent.pl
 use strict;
 use warnings;
+use Exporter                      qw/import/;
 use LatexIndent::Tokens           qw/%tokens/;
 use LatexIndent::TrailingComments qw/$trailingCommentRegExp/;
 use LatexIndent::GetYamlSettings  qw/%mainSettings/;
 use LatexIndent::Switches         qw/$is_t_switch_active $is_tt_switch_active/;
 use LatexIndent::LogFile          qw/$logger/;
-use LatexIndent::IfElseFi         qw/$ifElseFiBasicRegExp/;
+use LatexIndent::IfElseFi;
 use Data::Dumper;
-use Exporter qw/import/;
 our @ISA = "LatexIndent::Document";    # class inheritance, Programming Perl, pg 321
 our @EXPORT_OK
     = qw/find_special construct_special_begin $specialBeginAndBracesBracketsBasicRegExp $specialBeginBasicRegExp/;
diff --git a/support/latexindent/LatexIndent/TrailingComments.pm b/support/latexindent/LatexIndent/TrailingComments.pm
index 9d6532500a..5e47ae3f3f 100644
--- a/support/latexindent/LatexIndent/TrailingComments.pm
+++ b/support/latexindent/LatexIndent/TrailingComments.pm
@@ -27,12 +27,20 @@ our @EXPORT_OK
     = qw/remove_trailing_comments put_trailing_comments_back_in $trailingCommentRegExp add_comment_symbol construct_trailing_comment_regexp @trailingComments/;
 our @trailingComments;
 our $commentCounter = 0;
+our $notPrecededByRegExp;
 our $trailingCommentRegExp;
 
 sub construct_trailing_comment_regexp {
-    my $notPreceededBy = qr/${${$mainSettings{fineTuning}}{trailingComments}}{notPreceededBy}/;
+    $notPrecededByRegExp = qr/${${$mainSettings{fineTuning}}{trailingComments}}{notPrecededBy}/;
+    my $notPreceededBy = ${${mainSettings{fineTuning}}{trailingComments}}{notPreceededBy};
 
-    $trailingCommentRegExp = qr/$notPreceededBy%$tokens{trailingComment}\d+$tokens{endOfToken}/;
+    if ( $notPreceededBy ) {
+        $logger->warn(
+            "*fineTuning:trailingComments:notPreceededBy is ok for now, but in future versions, fineTuning:trailingComments:notPrecededBy will be used" );
+        $notPrecededByRegExp = qr/$notPreceededBy/;
+    }
+
+    $trailingCommentRegExp = qr/$notPrecededByRegExp%$tokens{trailingComment}\d+$tokens{endOfToken}/;
 }
 
 sub add_comment_symbol {
@@ -66,17 +74,16 @@ sub remove_trailing_comments {
 
     $logger->trace("*Storing trailing comments") if $is_t_switch_active;
 
-    my $notPreceededBy = qr/${${$mainSettings{fineTuning}}{trailingComments}}{notPreceededBy}/;
-    my $afterComment   = qr/${${$mainSettings{fineTuning}}{trailingComments}}{afterComment}/;
+    my $afterComment = qr/${${$mainSettings{fineTuning}}{trailingComments}}{afterComment}/;
 
     # perform the substitution
     ${$self}{body} =~ s/
-                            $notPreceededBy   # not preceded by a \
-                            %                 # % 
+                            $notPrecededByRegExp  # not preceded by a \
+                            %                     # % 
                             (
-                                $afterComment # anything else
+                                $afterComment     # anything else
                             )
-                            $                 # up to the end of a line
+                            $                     # up to the end of a line
                         /   
                             # increment comment counter and store comment
                             $commentCounter++;
@@ -134,14 +141,13 @@ sub put_trailing_comments_back_in {
             # replace the line-broken trailing comment ID with a non-broken trailing comment ID
             ${$self}{body} =~ s/%\R?$trailingcommentIDwithLineBreaksRegExp/%$trailingcommentID/s;
         }
-        my $notPreceededBy = qr/${${$mainSettings{fineTuning}}{trailingComments}}{notPreceededBy}/;
         if (${$self}{body} =~ m/%$trailingcommentID
                               (
-                                  (?!                  # not immediately preceded by 
-                                      $notPreceededBy  # \
-                                      %                # %
+                                  (?!                       # not immediately preceded by 
+                                      $notPrecededByRegExp  # \
+                                      %                     # %
                                   ).*?
-                              )                        # captured into $1
+                              )                             # captured into $1
                               (\h*)?$                
                           /mx and $1 ne ''
             )
diff --git a/support/latexindent/LatexIndent/UTF8CmdLineArgsFileOperation.pm b/support/latexindent/LatexIndent/UTF8CmdLineArgsFileOperation.pm
index 45a2b6f538..d6d8b595c0 100644
--- a/support/latexindent/LatexIndent/UTF8CmdLineArgsFileOperation.pm
+++ b/support/latexindent/LatexIndent/UTF8CmdLineArgsFileOperation.pm
@@ -5,22 +5,39 @@ use warnings;
 use feature qw( say state );
 use utf8;
 use Config qw( %Config );
-use Encode qw( decode encode );
+use Encode qw(find_encoding decode encode );
 
 use Exporter qw/import/;
 our @EXPORT_OK
     = qw/commandlineargs_with_encode @new_args copy_with_encode exist_with_encode open_with_encode zero_with_encode read_yaml_with_encode isdir_with_encode mkdir_with_encode/;
 
+our $encodingObject;  
+
+if ($^O eq 'MSWin32') {
+    my $encoding_sys = 'cp' . Win32::GetACP();
+    $encodingObject = find_encoding( $encoding_sys );
+    
+    # Check if the encoding is valid.
+    unless ( ref($encodingObject) ) {
+        $encodingObject = find_encoding( 'utf-8' );
+    }
+}
+else {
+    $encodingObject = find_encoding( 'utf-8' );
+}
+
 sub copy_with_encode {
     use File::Copy;
     my ( $source, $destination ) = @_;
 
-    if ( $FindBin::Script eq 'latexindent.exe' ) {
+    if ( $FindBin::Script =~ /\.exe$/ ) {
         require Win32::Unicode::File;
         Win32::Unicode::File->import(qw(copyW));
         copyW( $source, $destination, 1 );
     }
     else {
+        $source = $encodingObject->encode($source);
+        $destination = $encodingObject->encode($destination);
         copy( $source, $destination );
     }
 }
@@ -28,12 +45,13 @@ sub copy_with_encode {
 sub exist_with_encode {
     my ($filename) = @_;
 
-    if ( $FindBin::Script eq 'latexindent.exe' ) {
+    if ( $FindBin::Script =~ /\.exe$/ ) {
         require Win32::Unicode::File;
         Win32::Unicode::File->import(qw(statW));
         return statW($filename);
     }
     else {
+        $filename = $encodingObject->encode($filename);
         return -e $filename;
     }
 }
@@ -41,7 +59,7 @@ sub exist_with_encode {
 sub zero_with_encode {
     my ($filename) = @_;
 
-    if ( $FindBin::Script eq 'latexindent.exe' ) {
+    if ( $FindBin::Script =~ /\.exe$/ ) {
         require Win32::Unicode::File;
         Win32::Unicode::File->import(qw(file_size));
         my $size = file_size($filename);
@@ -53,6 +71,7 @@ sub zero_with_encode {
         }
     }
     else {
+        $filename = $encodingObject->encode($filename);
         return -z $filename;
     }
 }
@@ -62,7 +81,7 @@ sub open_with_encode {
     my $filename = shift;
     my $fh;
 
-    if ( $FindBin::Script eq 'latexindent.exe' ) {
+    if ( $FindBin::Script =~ /\.exe$/ ) {
         require Win32::Unicode::File;
         Win32::Unicode::File->import;
         $fh = Win32::Unicode::File->new;
@@ -74,6 +93,7 @@ sub open_with_encode {
         }
     }
     else {
+        $filename = $encodingObject->encode($filename);
         if ( open( $fh, $mode, $filename ) ) {
             return $fh;
         }
@@ -95,13 +115,14 @@ sub read_yaml_with_encode {
 sub isdir_with_encode {
     my $path = shift;
 
-    if ( $FindBin::Script eq 'latexindent.exe' ) {
+    if ( $FindBin::Script =~ /\.exe$/ ) {
         require Win32::Unicode::File;
         Win32::Unicode::File->import(qw(file_type));
 
         return file_type( 'd', $path );
     }
     else {
+        $path = $encodingObject->encode($path);
         return -d $path;
     }
 }
@@ -109,7 +130,7 @@ sub isdir_with_encode {
 sub mkdir_with_encode {
     my $path = shift;
 
-    if ( $FindBin::Script eq 'latexindent.exe' ) {
+    if ( $FindBin::Script =~ /\.exe$/ ) {
         require Win32::Unicode::Dir;
         Win32::Unicode::Dir->import(qw(mkdirW));
 
@@ -118,7 +139,7 @@ sub mkdir_with_encode {
     else {
         require File::Path;
         File::Path->import(qw(make_path));
-
+        $path = $encodingObject->encode($path);
         make_path($path);
     }
 }
@@ -126,7 +147,7 @@ sub mkdir_with_encode {
 #https://stackoverflow.com/a/63868721
 #https://stackoverflow.com/a/44489228
 sub commandlineargs_with_encode {
-    if ( $FindBin::Script eq 'latexindent.exe' ) {
+    if ( $FindBin::Script =~ /\.exe$/ ) {
         require Win32::API;
         import Win32::API qw( ReadMemory );
 
@@ -207,7 +228,6 @@ sub commandlineargs_with_encode {
         @ARGV = @{$args};
     }
     else {
-        my $encodingObject = "utf-8";
         @ARGV = map { decode( $encodingObject, $_ ) } @ARGV;
         our @new_args = @ARGV;
     }
diff --git a/support/latexindent/LatexIndent/Version.pm b/support/latexindent/LatexIndent/Version.pm
index 0198585f92..5232967fb9 100644
--- a/support/latexindent/LatexIndent/Version.pm
+++ b/support/latexindent/LatexIndent/Version.pm
@@ -20,6 +20,6 @@ use warnings;
 use Exporter qw/import/;
 our @EXPORT_OK = qw/$versionNumber $versionDate/;
 
-our $versionNumber = '3.24.1';
-our $versionDate   = '2024-05-12';
+our $versionNumber = '3.24.2';
+our $versionDate   = '2024-06-15';
 1
diff --git a/support/latexindent/README b/support/latexindent/README
index ec2f300c52..0b58c4ee72 100644
--- a/support/latexindent/README
+++ b/support/latexindent/README
@@ -1,5 +1,5 @@
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-    latexindent.pl, version 3.24.1, 2024-05-12
+    latexindent.pl, version 3.24.2, 2024-06-15
 
     PERL script to indent code within environments, and align delimited 
     environments in .tex files.
diff --git a/support/latexindent/bin/linux/latexindent b/support/latexindent/bin/linux/latexindent
index f2077b8920..00a6b1c1ae 100644
Binary files a/support/latexindent/bin/linux/latexindent and b/support/latexindent/bin/linux/latexindent differ
diff --git a/support/latexindent/bin/macos/latexindent b/support/latexindent/bin/macos/latexindent
index 884fcefe84..649392d07e 100644
Binary files a/support/latexindent/bin/macos/latexindent and b/support/latexindent/bin/macos/latexindent differ
diff --git a/support/latexindent/defaultSettings.yaml b/support/latexindent/defaultSettings.yaml
index 80120978ed..15073c2f98 100644
--- a/support/latexindent/defaultSettings.yaml
+++ b/support/latexindent/defaultSettings.yaml
@@ -1,5 +1,5 @@
 #
-# latexindent.pl, version 3.24.1, 2024-05-12
+# latexindent.pl, version 3.24.2, 2024-06-15
 #
 # defaultSettings.yaml, the default settings for latexindent.pl
 #
@@ -649,7 +649,7 @@ fineTuning:
     before: (?:#\d\h*;?,?\/?)+|\<.*?\>
     between: _|\^|\*
   trailingComments:
-    notPreceededBy: (? {
     'China' => {
+      'https://mirror.bjtu.edu.cn/CTAN/' => 1,
       'https://mirror.nyist.edu.cn/CTAN/' => 1,
       'https://mirrors.aliyun.com/CTAN/' => 1,
       'https://mirrors.bfsu.edu.cn/CTAN/' => 1,
@@ -38,6 +39,7 @@ $mirrors = {
     },
     'Japan' => {
       'http://ring.airnet.ne.jp/archives/text/CTAN/' => 1,
+      'https://ftp.jaist.ac.jp/pub/CTAN/' => 1,
       'https://ftp.kddilabs.jp/CTAN/' => 1,
       'https://ftp.yz.yamagata-u.ac.jp/pub/CTAN/' => 1,
       'https://jp.mirrors.cicku.me/ctan/' => 1,
@@ -68,6 +70,10 @@ $mirrors = {
     'Belarus' => {
       'https://mirror.datacenter.by/pub/mirrors/CTAN/' => 1,
     },
+    'Bulgaria' => {
+      'https://mirrors.neterra.net/CTAN/' => 1,
+      'https://mirrors.netix.net/CTAN/' => 1,
+    },
     'Czech Republic' => {
       'http://ftp.cvut.cz/tex-archive/' => 1,
       'https://mirrors.nic.cz/tex-archive/' => 1,
@@ -133,7 +139,6 @@ $mirrors = {
     'Poland' => {
       'https://ctan.gust.org.pl/tex-archive/' => 1,
       'https://polish-mirror.evolution-host.com/ctan/' => 1,
-      'https://sunsite.icm.edu.pl/pub/CTAN/' => 1,
     },
     'Portugal' => {
       'https://ftp.eq.uc.pt/software/TeX/' => 1,
diff --git a/systems/texlive/tlnet/tlpkg/texlive.tlpdb b/systems/texlive/tlnet/tlpkg/texlive.tlpdb
index 49b00e30fb..b7c060e732 100644
--- a/systems/texlive/tlnet/tlpkg/texlive.tlpdb
+++ b/systems/texlive/tlnet/tlpkg/texlive.tlpdb
@@ -26,7 +26,7 @@ depend container_split_src_files/1
 depend frozen/0
 depend minrelease/2016
 depend release/2024
-depend revision/71528
+depend revision/71537
 
 name 00texlive.image
 category TLCore
@@ -4913,7 +4913,7 @@ depend setting_available_architectures:aarch64-linux amd64-freebsd amd64-netbsd
 
 name 00texlive.installer
 category TLCore
-revision 71528
+revision 71537
 shortdesc TeX Live standalone installer package
 longdesc This package defines the files to go into the installer
 longdesc archives (install-tl-unx.tar.gz, install-tl.zip) built by the
@@ -186927,17 +186927,17 @@ catalogue-topics version-control doc-mgmt
 
 name latexindent
 category Package
-revision 71245
+revision 71532
 shortdesc Indent a LaTeX document, highlighting the programming structure
 longdesc The Perl script processes a LaTeX file, indenting parts so as
 longdesc to highlight the structure for the reader. Included are also
 longdesc binary (executable) files for Windows, Ubuntu Linux, and macOS.
 depend latexindent.ARCH
-containersize 76412
-containerchecksum b696b07137914f78cf523aa5d9364024729894aa1c61d6a61ae575f964c85ccf8f4c89c60c7c2adb2f340b88ddcc2979994826684ac469a35ed8722cd6f649b7
-doccontainersize 1373928
-doccontainerchecksum 866152a59dd9a5dea0e82c9a00a5840df143b1164300c8668e8fc58b949fc93b34f676f76f3fcdd1bf35cf6012da137c44043cd3a76caad60b0101030a1f53de
-docfiles size=460
+containersize 76472
+containerchecksum 38bd3fe5c0b918350af0c730e148110d2bfb20e828cdf32dc281b0082a67a1c840cd6ba4eb433e59264a9b111f07f86d32bfa05de17b17bdca5593cf111390e0
+doccontainersize 1372876
+doccontainerchecksum cfe890d0534d99bea034281ce68df79f5b3c3af5999da52793f790fe8b0b32037cf2fff4f6454149c8bbac89c1a8032f02ee4592890a770674404e67e7b10770
+docfiles size=461
  texmf-dist/doc/support/latexindent/README details="Readme"
  texmf-dist/doc/support/latexindent/contributors.bib
  texmf-dist/doc/support/latexindent/figure-schematic.png
@@ -186997,7 +186997,7 @@ catalogue-contact-repository https://github.com/cmhughes/latexindent.pl
 catalogue-ctan /support/latexindent
 catalogue-license gpl3
 catalogue-topics code-layout
-catalogue-version 3.24.1
+catalogue-version 3.24.2
 
 name latexindent.aarch64-linux
 category Package
@@ -187082,11 +187082,11 @@ binfiles arch=universal-darwin size=1
 
 name latexindent.windows
 category Package
-revision 71245
+revision 71532
 shortdesc windows files of latexindent
-containersize 3853220
-containerchecksum c2ce9c54239e95a6edd0fc0512516c65eea1fd9d5753b1c90b6bfb88bf601310bfd11ed1e31285c83921c2bf98f8566bb36488623e0827b467916e3f8bbfddcb
-binfiles arch=windows size=2312
+containersize 3859712
+containerchecksum 89bdff573ad1ec538b80b4b4fb7629aeb39333a651ec1ba30550d21139797d5485cee980cc428c1a9b1d0b7c27e909f63a2b050c8fc0e4eec01bb5670a723206
+binfiles arch=windows size=2315
  bin/windows/latexindent.exe
 
 name latexindent.x86_64-cygwin
@@ -276117,16 +276117,16 @@ catalogue-topics font-cjk
 
 name ptex-manual
 category Package
-revision 68147
+revision 71534
 shortdesc Japanese pTeX manual
 relocated 1
 longdesc This package contains the Japanese pTeX manual. Feedback is
 longdesc welcome!
 containersize 392
-containerchecksum ffad7c7c67e7c6c92ec7b814cba8ca8cd7fc9935d5b6c7f685ee83b97cca56ac410ee2c15f8d86f4bbf443508f2e2224603c9abc64e734451ee94ce968425d62
-doccontainersize 3035368
-doccontainerchecksum dc2643c258a98410d9a456e16794d70bf6de6e1a40b8db2bcf7fb40e20953bbe482cb26cf3e65b0caa19806e915cfdd3787ddcbf69108e2af0d83e03d3b0104b
-docfiles size=865
+containerchecksum 0b73845dd889b31bc8e24fa9ea2f614eb9f568bc79d789de1e5d8f36bc4f6d8f0b7e8e216bb76cfd3d255c3701e7615f832b389ac34dd8e8289bc5e186bff199
+doccontainersize 3053112
+doccontainerchecksum 7e1c447f93d57adc54bb10fee6b4ac253058294d2d213c92c90a99bf2407f2f1ed9f8d69b3cf0a4b4ceb20089204bf108bdbb0b7daed811d0bec16ddeee60bae
+docfiles size=872
  RELOC/doc/ptex/ptex-manual/LICENSE
  RELOC/doc/ptex/ptex-manual/README.md details="Readme"
  RELOC/doc/ptex/ptex-manual/eptex_resume.pdf
@@ -293726,36 +293726,36 @@ catalogue-version 0.1
 
 name scontents
 category Package
-revision 62902
+revision 71533
 shortdesc Stores LaTeX contents in memory or files
 relocated 1
 longdesc This package stores valid LaTeX code in memory (sequences)
 longdesc using the l3seq module of expl3. The stored content (including
 longdesc verbatim) can be used as many times as desired in the document,
 longdesc additionally can be written to external files if desired.
-containersize 8172
-containerchecksum 692fbbe0cfe9153bb4782eabe8f1713e646d5a93d4b1b2fe0f7662bd995bfae25b8200acb9eccd0057b53bff7c33c0f9ff621cd37596e9aa4cd51f84c2a30dc7
-doccontainersize 367028
-doccontainerchecksum f978650de27e8306d70612331c2c98b5e0c047bbf91908c9968c6d613311c034dd00816afdc30b63d7673a8627651467af64a99fb7fd3978947113f8fb6eb563
-docfiles size=96
+containersize 9164
+containerchecksum 39b17762b4803864c40e1d32b5b1ed5c60dab7e902858c2009e6b915c79f2132f01d5d7043c3d2f0a10dc853c236b2d7e5ac0b16def5e326a678c3fa21a0e07e
+doccontainersize 405976
+doccontainerchecksum aabf3b39218e4c9157b4418b5c5e702123a608933aa5fb30406aa860c01d1edd1861842b817dff274f7862c413f8a8953c731638794674afa80915d12d47682b
+docfiles size=106
  RELOC/doc/latex/scontents/README.md details="Readme"
  RELOC/doc/latex/scontents/scontents.pdf details="Package documentation"
-srccontainersize 29640
-srccontainerchecksum d23c98c16b7f60a1a77c0dba32eb7886f5834c1d05455a172f38f984c7bb61ffc84bae147fa7d143c196179fd719887b160718e04ff3474c5ef176af4d99165a
-srcfiles size=34
+srccontainersize 31868
+srccontainerchecksum cec5f2c0e7b043a53e0f25480ad22ef6df1a39ac0f07335e81a8a53fbfd0821a1f482aef4fbe8a077e6def0e3a22a11580b9361c8643e4cd33fd34babf620114
+srcfiles size=38
  RELOC/source/latex/scontents/scontents.dtx
  RELOC/source/latex/scontents/scontents.ins
-runfiles size=14
+runfiles size=17
  RELOC/tex/context/third/scontents/t-scontents.mkiv
  RELOC/tex/generic/scontents/scontents-code.tex
  RELOC/tex/generic/scontents/scontents.tex
  RELOC/tex/latex/scontents/scontents.sty
-catalogue-contact-bugs https://github.com/pablgonz/scontents/issues
 catalogue-contact-repository https://github.com/pablgonz/scontents
+catalogue-contact-support https://github.com/pablgonz/scontents/issues
 catalogue-ctan /macros/latex/contrib/scontents
 catalogue-license lppl1.3c
 catalogue-topics file-mgmt expl3
-catalogue-version 2.0
+catalogue-version 2.1
 
 name scrabble
 category Package
@@ -315313,7 +315313,7 @@ binfiles arch=x86_64-solaris size=1
 
 name tex4ht
 category Package
-revision 71480
+revision 71536
 shortdesc Convert (La)TeX to HTML/XML
 longdesc A converter from TeX and LaTeX to SGML-based formats such as
 longdesc (X)HTML, MathML, OpenDocument, and Docbook, providing a
@@ -315334,10 +315334,10 @@ longdesc files from them is nontrivial, and generally done with the
 longdesc Makefile in development, from which the TeX4ht package in TeX
 longdesc Live is updated.
 depend tex4ht.ARCH
-containersize 1133076
-containerchecksum 8a38cd293026c446db173e253e576eed2a2e3cebd6a51efc0bdcbb671cb3b26bdcde4da268c761e0ab022eb5dca2ceb23ba2a41e09b321c45c4901d0e9e6abdc
+containersize 1132948
+containerchecksum f26d226f9fc7f77ea7b78e78356247bf1bc3d6abe90eae89f69d1a15c8ccdda6061b25c3b07fb39f589dda144afd0a9e14ae84b86c9ff653099c212a3b5754dc
 doccontainersize 136384
-doccontainerchecksum f175b46d45b4b6b7863d93ea825b780e0294c46b56ab5fd664815a6c9ce07bc83ebe9b1c27b8a07620c468b57bb88590ebec2c71fc000c33cc123cba090a4d2e
+doccontainerchecksum 9568216343b49af0afc6eac98bd9af946369aefc253f47a1c9dfa248afc207405acc11d83af7bf802b8eda32375b7d801da71472f0a26d221f5a5d8e83e49744
 docfiles size=260
  texmf-dist/doc/generic/tex4ht/Makefile
  texmf-dist/doc/generic/tex4ht/README details="Readme"
@@ -315409,8 +315409,8 @@ docfiles size=260
  texmf-dist/doc/generic/tex4ht/mn56.html
  texmf-dist/doc/generic/tex4ht/mn5x.png
  texmf-dist/doc/generic/tex4ht/mn6x.png
-srccontainersize 1487096
-srccontainerchecksum d901929025f192cf6330e4076838a9c0f09ea3960494a46f1ea69e7e363f7d27ad078bc84ccdb8122ee319273f9005c868c009a7506ae211056c4db0bbfbb0b6
+srccontainersize 1493684
+srccontainerchecksum fc11cf7311929a1ad27cdd962309c420f3011ffc1be7bdfd1be9a42d5766e5ff8da3cdd8058a3754ba3fae9919654be176dea093d42f5ad3e2216109c09a2ba5
 srcfiles size=4651
  texmf-dist/source/generic/tex4ht/ChangeLog
  texmf-dist/source/generic/tex4ht/Makefile
@@ -327842,7 +327842,7 @@ docfiles size=376
 
 name texlive-scripts
 category TLCore
-revision 71528
+revision 71537
 shortdesc TeX Live infrastructure programs
 longdesc Includes install-tl, tl-portable, rungs, etc.; not needed for
 longdesc tlmgr to run but still ours. Not included in tlcritical.
@@ -327850,10 +327850,10 @@ depend texlive-scripts.ARCH
 depend texlive.infra
 execute addMap mathpple.map
 postaction shortcut type=menu name="TeX Live command-line"   cmd=TEXDIR/tlpkg/installer/tl-cmd.bat
-containersize 114376
-containerchecksum 105323f3bbcffba47dcc9d159a22f7e2510aee07325ac72d7267b36bb6b73ed2abe7580b3052093e2405ba6cd7c54b9366145d4893be3be63bd8f6302c943594
-doccontainersize 436256
-doccontainerchecksum 32cfb016c34575362812e17c07e15f70b337c7930726746b731eaac94921791494bf7407330baf974838d4052634a8deb72b6336eeef176e9e5881236642d999
+containersize 114392
+containerchecksum ef3ede9ea41668d9734b1ab29a69d0f2d4c3daff26da4c7364bd5dc2a506db870fb5d2ef5abbdc95b1fb33b8a99324f6cbae36a668b549855f2af935024264dd
+doccontainersize 436220
+doccontainerchecksum c8812c8b7b0c12e057dfdc1838af6679d048daf73c62f357fe29842ffc229c7725f4bd9f9433665a9029b27ffbd1a2bed161fd2544e1349cbade73fa89e647da
 docfiles size=571
  doc.html
  texmf-dist/doc/man/man1/fmtutil-sys.1
@@ -337215,7 +337215,7 @@ catalogue-version 2.0
 
 name tkz-grapheur
 category Package
-revision 71476
+revision 71535
 shortdesc A LaTeX package with tools for graph plotting (and TikZ)
 relocated 1
 longdesc This package provides some commands to help French mathematics
@@ -337224,11 +337224,11 @@ longdesc and draw functions and interpolations curves work with
 longdesc integrals, tangents, intersersections get coordinates of points
 longdesc ... The syntax is rather explicit, like \DefinirCourbe,
 longdesc \RecupererCoordonnees,\TrouverIntersections, etc.
-containersize 11728
-containerchecksum 331d02d4100c7512780d8fceaaa072246e5622fc21c7d9800777818a141287ad85a6b337c99f8f85a758161b7e8be680af3222825e6e84a4effa121276972d5d
-doccontainersize 903332
-doccontainerchecksum 8c10a600e650b8eb29bc368ce3eac1ed20345dc9a0f4fa683c62a7a40aac0b58302e184b4b28629062703b485fc6dd46cdec5fa703e7ff372110e55923746dfb
-docfiles size=245
+containersize 11868
+containerchecksum 1e974db21b4c486244500484fe2c6d95d9466286e428da2e63772fd6a5733b40dc0b417b5ffe07f176afb81178714d4a702043ea91a256ea6478461d29f8d76b
+doccontainersize 936388
+doccontainerchecksum 657765b734d83107702b54103693b3be379bb409be087436d086ae637b2b07080a752986bea09b37019b25a10e8221cad8f4ba34a9d2a5e76df50cbf02bdb957
+docfiles size=254
  RELOC/doc/latex/tkz-grapheur/README.md details="Readme"
  RELOC/doc/latex/tkz-grapheur/tkz-grapheur-doc-fr.pdf details="Package documentation"
  RELOC/doc/latex/tkz-grapheur/tkz-grapheur-doc-fr.tex
@@ -337236,12 +337236,11 @@ docfiles size=245
  RELOC/doc/latex/tkz-grapheur/tkz-grapheur-exemples-integrales.tex
 runfiles size=19
  RELOC/tex/latex/tkz-grapheur/tkz-grapheur.sty
-catalogue-contact-home https://forge.apps.education.fr/pierquetcedric/package-latex-tkz-grapheur
 catalogue-contact-repository https://forge.apps.education.fr/pierquetcedric/package-latex-tkz-grapheur
 catalogue-ctan /graphics/pgf/contrib/tkz-grapheur
 catalogue-license lppl1.3c
-catalogue-topics graphics maths pgf-tikz
-catalogue-version 0.1.3
+catalogue-topics graphics maths graphics-plotfn pgf-tikz
+catalogue-version 0.1.4
 
 name tkz-orm
 category Package
diff --git a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5 b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5
index 949bcd334b..dfdf1c1a73 100644
--- a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5
+++ b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5
@@ -1 +1 @@
-f2be80cbf6dfc67800b2dbc72c5317ea  texlive.tlpdb
+26a0304b1472e7411e6d5c3d3b49cb16  texlive.tlpdb
diff --git a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512 b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512
index 613ddbb661..9f729e76c5 100644
--- a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512
+++ b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512
@@ -1 +1 @@
-f8c1c2cf7a3018e970033314492a377b37dfa9d5ec58844c72f385451130fe6d4b70bc5c645a529f9e08645aea5477b308ee26a37f7dab1ec8594566de32dfd7  texlive.tlpdb
+ef21442d6710c9c858dce73b70ce5969022758b8d06c00b78a74a68eec74190166b8e2bfb7ebaa21c104c796776973c12950fd0960b56d8c07ffc1a88ab15ef6  texlive.tlpdb
diff --git a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc
index 706f9fa52a..a3a4f293a4 100644
--- a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc
+++ b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc
@@ -1,11 +1,11 @@
 -----BEGIN PGP SIGNATURE-----
 
-iQEzBAEBCgAdFiEE2PL4YFeoV+QqiBBqTOGHfhlDjHAFAmZs1sQACgkQTOGHfhlD
-jHCh0wf/XToZRwJYEDQyn7I482QFiMguobtfIqe2MLxrgftKfK/iOG2/QCkDqOex
-FBhcuqM+yxzbziYS2upnu3MLdzOVS63KtbxjoOMmqwxURaWz3p9BAJz2Bo5hzHxX
-n3KXNqGavQTkX+vWYO/NKANA7hpCT29I5rafWAkQmyXvglPpK7SAZgpYUaGTxAep
-u9MuVZmqVKL5la8GYyp1lFVxmXxuxQg89AAS64IEvI8yh8JvsVjyuzOOOFPJEiw6
-xEg1NfRkS+UC9Zm9h/5NAOnsQ90dMxg2ZrXjthJ0EZWjfgkt9GI9jOgqIZB2rXM2
-HbmVl/wEddNLsrZ2Ypq7fK6GP8809g==
-=+WCL
+iQEzBAEBCgAdFiEE2PL4YFeoV+QqiBBqTOGHfhlDjHAFAmZuKgUACgkQTOGHfhlD
+jHA2Egf/RWGffiIioOXMPUIKCEYNflOTpd3otp7M3fYEYjRVGZPEytV8bqbiSmM7
+jVQUCa0LQ+bz+z6TY+B5zKvY73oJlLae8BMXpudqkv3pcl1v2ha2Qx1VDfWD2RY4
+2eAbCzXM7jdLavXr1yvee/xfuA0ztBcQXqccoBkkRMrESgqTLwalLctQkA/lIDxW
+p2SAdCHOAyABsjMk/hbjKjSvrNZE3RP2zZIGaIPN2r8G5pT6L+hCUIxguUnkiXgo
+5X6EvM7iO7SQgJ6uAmBuUjyjI3CBdggQVpeX2Bqa/5VRK9Xe6DwCurrGDSRQya4D
+xU4sUqf1XkSuN2ufK0vLVcY+wbpiXA==
+=lbtr
 -----END PGP SIGNATURE-----
diff --git a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz
index d39c961d18..98b83ddf05 100644
Binary files a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz and b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz differ
diff --git a/timestamp b/timestamp
index fa03b86da1..0b54017207 100644
--- a/timestamp
+++ b/timestamp
@@ -2,4 +2,4 @@
 #   The source CTAN of this site's material:
 dante.ctan.org
 #   The year-month-day-hour-minute of this site's material:
-2024-06-15-02-02
+2024-06-16-02-02
-- 
cgit v1.2.3