summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--FILES.byname156
-rw-r--r--FILES.byname.gzbin2512336 -> 2512336 bytes
-rw-r--r--FILES.last07days219
-rw-r--r--biblio/ctan-bibdata/ctan.bib20
-rw-r--r--biblio/ctan-bibdata/ctan.pdfbin3641911 -> 3642831 bytes
-rw-r--r--macros/generic/xstring/README4
-rw-r--r--macros/generic/xstring/test_etex.pdfbin99781 -> 99781 bytes
-rw-r--r--macros/generic/xstring/test_latex.pdfbin155263 -> 154972 bytes
-rw-r--r--macros/generic/xstring/xstring-en.pdfbin199536 -> 336458 bytes
-rw-r--r--macros/generic/xstring/xstring-fr.pdfbin215317 -> 341138 bytes
-rw-r--r--macros/generic/xstring/xstring.tex15
-rw-r--r--macros/latex/contrib/etoc/README.md32
-rw-r--r--macros/latex/contrib/etoc/etoc.dtx1699
-rw-r--r--macros/latex/contrib/etoc/etoc.pdfbin890715 -> 850065 bytes
-rw-r--r--macros/luatex/latex/letgut/README.md2
-rw-r--r--macros/luatex/latex/letgut/doc/letgut-banner-code.pdfbin154201 -> 152973 bytes
-rw-r--r--macros/luatex/latex/letgut/doc/letgut-code.pdfbin702257 -> 787519 bytes
-rw-r--r--macros/luatex/latex/letgut/doc/letgut.pdfbin379438 -> 391120 bytes
-rw-r--r--macros/luatex/latex/letgut/doc/letgut.tex373
-rw-r--r--macros/luatex/latex/letgut/source/letgut.org1527
-rw-r--r--macros/luatex/latex/pyluatex/pyluatex-interpreter.py37
-rw-r--r--macros/luatex/latex/pyluatex/pyluatex.lua17
-rw-r--r--macros/luatex/latex/pyluatex/pyluatex.pdfbin82073 -> 83049 bytes
-rw-r--r--macros/luatex/latex/pyluatex/pyluatex.sty2
-rw-r--r--macros/luatex/latex/pyluatex/pyluatex.tex19
-rw-r--r--systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl1
-rw-r--r--systems/texlive/tlnet/tlpkg/texlive.tlpdb40
-rw-r--r--systems/texlive/tlnet/tlpkg/texlive.tlpdb.md52
-rw-r--r--systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha5122
-rw-r--r--systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc14
-rw-r--r--systems/texlive/tlnet/tlpkg/texlive.tlpdb.xzbin2447672 -> 2447920 bytes
-rw-r--r--timestamp2
32 files changed, 2518 insertions, 1665 deletions
diff --git a/FILES.byname b/FILES.byname
index 225184a084..030dd04b7f 100644
--- a/FILES.byname
+++ b/FILES.byname
@@ -2048,12 +2048,12 @@
2022/12/25 | 1673 | biblio/citation-style-language/README.md
2022/12/25 | 11958 | biblio/citation-style-language/vancouver.csl
2022/12/25 | 604004 | biblio/citation-style-language.zip
-2023/01/13 | 1678 | biblio/ctan-bibdata/biblatex-ctan/ctan.bbx
+2023/01/14 | 1678 | biblio/ctan-bibdata/biblatex-ctan/ctan.bbx
2022/10/08 | 127 | biblio/ctan-bibdata/biblatex-ctan/ctan.cbx
-2023/01/13 | 2760087 | biblio/ctan-bibdata/ctan.bib
-2023/01/13 | 3642851 | biblio/ctan-bibdata/ctan.pdf
+2023/01/14 | 2760087 | biblio/ctan-bibdata/ctan.bib
+2023/01/14 | 3641911 | biblio/ctan-bibdata/ctan.pdf
2022/10/08 | 1415 | biblio/ctan-bibdata/README
-2023/01/13 | 4036248 | biblio/ctan-bibdata.zip
+2023/01/14 | 4035863 | biblio/ctan-bibdata.zip
2022/02/06 | 3110 | biblio/pbibtex/pbibtex-base/cpp.awk
2022/02/06 | 1009 | biblio/pbibtex/pbibtex-base/generate.sh
2022/02/06 | 22422 | biblio/pbibtex/pbibtex-base/jabbrv.bst
@@ -5407,7 +5407,7 @@
1990/10/02 | 5440 | dviware/vutex/vaxvms.hlp
1990/10/02 | 812 | dviware/vutex/vaxvms.ins
1990/10/02 | 127576 | dviware/vutex/vutex.web
-2023/01/13 | 89095 | FILES.last07days
+2023/01/14 | 88113 | 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
@@ -193756,7 +193756,7 @@
2020/03/23 | 891718 | install/macros/luatex/latex/arabluatex.tds.zip
2021/11/21 | 970369 | install/macros/luatex/latex/ekdosis.tds.zip
2021/07/17 | 1183440 | install/macros/luatex/latex/emoji.tds.zip
-2022/10/03 | 1430525 | install/macros/luatex/latex/letgut.tds.zip
+2023/01/14 | 1535734 | install/macros/luatex/latex/letgut.tds.zip
2013/09/26 | 155171 | install/macros/luatex/latex/luabibentry.tds.zip
2022/11/16 | 802013 | install/macros/luatex/latex/luacas.tds.zip
2012/01/23 | 423265 | install/macros/luatex/latex/luacode.tds.zip
@@ -202834,18 +202834,18 @@
2020/11/11 | 719 | macros/generic/xlop/tex/xlop.sty
2020/11/11 | 126743 | macros/generic/xlop/tex/xlop.tex
2020/11/11 | 609317 | macros/generic/xlop.zip
-2021/07/21 | 3828 | macros/generic/xstring/README
-2021/07/21 | 99781 | macros/generic/xstring/test_etex.pdf
-2021/07/21 | 37798 | macros/generic/xstring/test_etex.tex
-2021/07/21 | 155263 | macros/generic/xstring/test_latex.pdf
-2021/07/21 | 41390 | macros/generic/xstring/test_latex.tex
-2021/07/21 | 199536 | macros/generic/xstring/xstring-en.pdf
-2021/07/21 | 91079 | macros/generic/xstring/xstring-en.tex
-2021/07/21 | 215317 | macros/generic/xstring/xstring-fr.pdf
-2021/07/21 | 103753 | macros/generic/xstring/xstring-fr.tex
-2021/07/21 | 123 | macros/generic/xstring/xstring.sty
-2021/07/21 | 48190 | macros/generic/xstring/xstring.tex
-2021/07/21 | 713300 | macros/generic/xstring.zip
+2023/01/14 | 3828 | macros/generic/xstring/README
+2023/01/14 | 99781 | macros/generic/xstring/test_etex.pdf
+2023/01/14 | 37798 | macros/generic/xstring/test_etex.tex
+2023/01/14 | 154972 | macros/generic/xstring/test_latex.pdf
+2023/01/14 | 41390 | macros/generic/xstring/test_latex.tex
+2023/01/14 | 336458 | macros/generic/xstring/xstring-en.pdf
+2023/01/14 | 91079 | macros/generic/xstring/xstring-en.tex
+2023/01/14 | 341138 | macros/generic/xstring/xstring-fr.pdf
+2023/01/14 | 103753 | macros/generic/xstring/xstring-fr.tex
+2023/01/14 | 123 | macros/generic/xstring/xstring.sty
+2023/01/14 | 48215 | macros/generic/xstring/xstring.tex
+2023/01/14 | 975334 | macros/generic/xstring.zip
2011/01/22 | 845 | macros/generic/yax/README
2011/01/22 | 654 | macros/generic/yax/t-yax.tex
2011/01/22 | 113177 | macros/generic/yax/yax-doc.pdf
@@ -219794,10 +219794,10 @@
2021/11/07 | 368175 | macros/latex/contrib/etl/etl.pdf
2021/11/07 | 1380 | macros/latex/contrib/etl/README.md
2021/11/07 | 372730 | macros/latex/contrib/etl.zip
-2022/11/21 | 421490 | macros/latex/contrib/etoc/etoc.dtx
-2022/11/21 | 890715 | macros/latex/contrib/etoc/etoc.pdf
-2022/11/21 | 5509 | macros/latex/contrib/etoc/README.md
-2022/11/21 | 965661 | macros/latex/contrib/etoc.zip
+2023/01/14 | 394094 | macros/latex/contrib/etoc/etoc.dtx
+2023/01/14 | 850065 | macros/latex/contrib/etoc/etoc.pdf
+2023/01/14 | 6739 | macros/latex/contrib/etoc/README.md
+2023/01/14 | 919558 | macros/latex/contrib/etoc.zip
2020/10/05 | 2379 | macros/latex/contrib/etoolbox/etoolbox.def
2020/10/05 | 227785 | macros/latex/contrib/etoolbox/etoolbox.pdf
2020/10/05 | 46845 | macros/latex/contrib/etoolbox/etoolbox.sty
@@ -243204,21 +243204,21 @@
2022/10/10 | 77362 | macros/luatex/latex/japanese-mathformulas/japanese-mathformulas.tex
2022/10/06 | 1739 | macros/luatex/latex/japanese-mathformulas/README.txt
2022/10/10 | 725993 | macros/luatex/latex/japanese-mathformulas.zip
-2022/10/03 | 19444 | macros/luatex/latex/letgut/doc/exemple-nouveautes.pdf
-2022/10/03 | 1221 | macros/luatex/latex/letgut/doc/latexmkrc
-2022/10/03 | 154201 | macros/luatex/latex/letgut/doc/letgut-banner-code.pdf
-2022/10/03 | 274 | macros/luatex/latex/letgut/doc/letgut.bib
-2022/10/03 | 702257 | macros/luatex/latex/letgut/doc/letgut-code.pdf
-2022/10/03 | 379438 | macros/luatex/latex/letgut/doc/letgut.pdf
-2022/10/03 | 71341 | macros/luatex/latex/letgut/doc/letgut.tex
-2022/10/03 | 255 | macros/luatex/latex/letgut/doc/listings-conf.tex
-2022/10/03 | 3956 | macros/luatex/latex/letgut/doc/localconf.tex
-2022/10/03 | 2702 | macros/luatex/latex/letgut/doc/xindex-letgut.lua
-2022/10/03 | 461 | macros/luatex/latex/letgut/README.md
-2022/10/03 | 1520 | macros/luatex/latex/letgut/source/HOWTO.md
-2022/10/03 | 25212 | macros/luatex/latex/letgut/source/letgut-banner.org
-2022/10/03 | 286599 | macros/luatex/latex/letgut/source/letgut.org
-2022/10/03 | 1301733 | macros/luatex/latex/letgut.zip
+2023/01/14 | 19444 | macros/luatex/latex/letgut/doc/exemple-nouveautes.pdf
+2023/01/14 | 1221 | macros/luatex/latex/letgut/doc/latexmkrc
+2023/01/14 | 152973 | macros/luatex/latex/letgut/doc/letgut-banner-code.pdf
+2023/01/14 | 274 | macros/luatex/latex/letgut/doc/letgut.bib
+2023/01/14 | 787519 | macros/luatex/latex/letgut/doc/letgut-code.pdf
+2023/01/14 | 391120 | macros/luatex/latex/letgut/doc/letgut.pdf
+2023/01/14 | 78706 | macros/luatex/latex/letgut/doc/letgut.tex
+2023/01/14 | 255 | macros/luatex/latex/letgut/doc/listings-conf.tex
+2023/01/14 | 3956 | macros/luatex/latex/letgut/doc/localconf.tex
+2023/01/14 | 2702 | macros/luatex/latex/letgut/doc/xindex-letgut.lua
+2023/01/14 | 461 | macros/luatex/latex/letgut/README.md
+2023/01/14 | 1520 | macros/luatex/latex/letgut/source/HOWTO.md
+2023/01/14 | 25212 | macros/luatex/latex/letgut/source/letgut-banner.org
+2023/01/14 | 322224 | macros/luatex/latex/letgut/source/letgut.org
+2023/01/14 | 1398256 | macros/luatex/latex/letgut.zip
2022/06/11 | 8 | macros/luatex/latex/ligtype/DEPENDS.txt
2022/06/13 | 91797 | macros/luatex/latex/ligtype/ligtype.lua
2022/06/13 | 101610 | macros/luatex/latex/ligtype/ligtype.pdf
@@ -243734,25 +243734,25 @@
2020/05/19 | 3051 | macros/luatex/latex/plantuml/README.md
2020/05/19 | 396 | macros/luatex/latex/plantuml/release.sh
2020/05/19 | 70541 | macros/luatex/latex/plantuml.zip
-2023/01/03 | 3315 | macros/luatex/latex/pyluatex/example/beamer.tex
-2023/01/03 | 4328 | macros/luatex/latex/pyluatex/example/data-visualization.tex
-2023/01/03 | 1527 | macros/luatex/latex/pyluatex/example/matplotlib-external.tex
-2023/01/03 | 1849 | macros/luatex/latex/pyluatex/example/matplotlib-pgf.tex
-2023/01/03 | 39167 | macros/luatex/latex/pyluatex/example/population.csv
-2023/01/03 | 628 | macros/luatex/latex/pyluatex/example/readme-custom-env.tex
-2023/01/03 | 717 | macros/luatex/latex/pyluatex/example/readme-example.tex
-2023/01/03 | 2310 | macros/luatex/latex/pyluatex/example/repl.tex
-2023/01/03 | 1429 | macros/luatex/latex/pyluatex/example/sessions.tex
-2023/01/03 | 1049 | macros/luatex/latex/pyluatex/example/typesetting-example.tex
-2023/01/03 | 2400 | macros/luatex/latex/pyluatex/example/typesetting-listings.tex
-2023/01/03 | 2105 | macros/luatex/latex/pyluatex/example/typesetting-minted.tex
-2023/01/03 | 4291 | macros/luatex/latex/pyluatex/pyluatex-interpreter.py
-2023/01/03 | 7673 | macros/luatex/latex/pyluatex/pyluatex.lua
-2023/01/03 | 82073 | macros/luatex/latex/pyluatex/pyluatex.pdf
-2023/01/03 | 3193 | macros/luatex/latex/pyluatex/pyluatex.sty
-2023/01/03 | 13410 | macros/luatex/latex/pyluatex/pyluatex.tex
-2023/01/03 | 1534 | macros/luatex/latex/pyluatex/README.md
-2023/01/03 | 116101 | macros/luatex/latex/pyluatex.zip
+2023/01/14 | 3315 | macros/luatex/latex/pyluatex/example/beamer.tex
+2023/01/14 | 4328 | macros/luatex/latex/pyluatex/example/data-visualization.tex
+2023/01/14 | 1527 | macros/luatex/latex/pyluatex/example/matplotlib-external.tex
+2023/01/14 | 1849 | macros/luatex/latex/pyluatex/example/matplotlib-pgf.tex
+2023/01/14 | 39167 | macros/luatex/latex/pyluatex/example/population.csv
+2023/01/14 | 628 | macros/luatex/latex/pyluatex/example/readme-custom-env.tex
+2023/01/14 | 717 | macros/luatex/latex/pyluatex/example/readme-example.tex
+2023/01/14 | 2310 | macros/luatex/latex/pyluatex/example/repl.tex
+2023/01/14 | 1429 | macros/luatex/latex/pyluatex/example/sessions.tex
+2023/01/14 | 1049 | macros/luatex/latex/pyluatex/example/typesetting-example.tex
+2023/01/14 | 2400 | macros/luatex/latex/pyluatex/example/typesetting-listings.tex
+2023/01/14 | 2105 | macros/luatex/latex/pyluatex/example/typesetting-minted.tex
+2023/01/14 | 5086 | macros/luatex/latex/pyluatex/pyluatex-interpreter.py
+2023/01/14 | 7699 | macros/luatex/latex/pyluatex/pyluatex.lua
+2023/01/14 | 83049 | macros/luatex/latex/pyluatex/pyluatex.pdf
+2023/01/14 | 3193 | macros/luatex/latex/pyluatex/pyluatex.sty
+2023/01/14 | 14045 | macros/luatex/latex/pyluatex/pyluatex.tex
+2023/01/14 | 1534 | macros/luatex/latex/pyluatex/README.md
+2023/01/14 | 117485 | macros/luatex/latex/pyluatex.zip
2022/12/11 | 1071 | macros/luatex/latex/scikgtex/LICENSE
2022/12/11 | 718 | macros/luatex/latex/scikgtex/README
2022/10/23 | 21905 | macros/luatex/latex/scikgtex/scikgtex.lua
@@ -294766,8 +294766,8 @@
2022/03/13 | 2266876 | systems/texlive/tlnet/archive/luajittex.x86_64-darwinlegacy.r62668.tar.xz
2022/03/13 | 3967112 | systems/texlive/tlnet/archive/luajittex.x86_64-linuxmusl.r62668.tar.xz
2022/03/13 | 2766096 | systems/texlive/tlnet/archive/luajittex.x86_64-linux.r62668.tar.xz
-2023/01/06 | 437888 | systems/texlive/tlnet/archive/luakeys.doc.r65468.tar.xz
-2023/01/06 | 12912 | systems/texlive/tlnet/archive/luakeys.r65468.tar.xz
+2023/01/14 | 435504 | systems/texlive/tlnet/archive/luakeys.doc.r65533.tar.xz
+2023/01/14 | 14240 | systems/texlive/tlnet/archive/luakeys.r65533.tar.xz
2019/02/28 | 137620 | systems/texlive/tlnet/archive/lualatex-doc-de.doc.r30474.tar.xz
2019/02/28 | 536 | systems/texlive/tlnet/archive/lualatex-doc-de.r30474.tar.xz
2019/02/28 | 112928 | systems/texlive/tlnet/archive/lualatex-doc.doc.r30473.tar.xz
@@ -299341,7 +299341,7 @@
2022/09/13 | 600 | systems/texlive/tlnet/archive/texlive-scripts.amd64-freebsd.r64356.tar.xz
2022/09/13 | 596 | systems/texlive/tlnet/archive/texlive-scripts.amd64-netbsd.r64356.tar.xz
2022/09/13 | 596 | systems/texlive/tlnet/archive/texlive-scripts.armhf-linux.r64356.tar.xz
-2023/01/13 | 424104 | systems/texlive/tlnet/archive/texlive-scripts.doc.r65525.tar.xz
+2023/01/14 | 424104 | systems/texlive/tlnet/archive/texlive-scripts.doc.r65531.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
@@ -299365,7 +299365,7 @@
2022/09/13 | 592 | systems/texlive/tlnet/archive/texlive-scripts.i386-linux.r64356.tar.xz
2022/09/13 | 596 | systems/texlive/tlnet/archive/texlive-scripts.i386-netbsd.r64356.tar.xz
2022/09/13 | 596 | systems/texlive/tlnet/archive/texlive-scripts.i386-solaris.r64356.tar.xz
-2023/01/13 | 113684 | systems/texlive/tlnet/archive/texlive-scripts.r65525.tar.xz
+2023/01/14 | 113676 | systems/texlive/tlnet/archive/texlive-scripts.r65531.tar.xz
2022/09/13 | 580 | systems/texlive/tlnet/archive/texlive-scripts.universal-darwin.r64356.tar.xz
2022/11/29 | 36264 | systems/texlive/tlnet/archive/texlive-scripts.win32.r65128.tar.xz
2022/09/13 | 596 | systems/texlive/tlnet/archive/texlive-scripts.x86_64-cygwin.r64356.tar.xz
@@ -300213,8 +300213,8 @@
2019/02/28 | 3948 | systems/texlive/tlnet/archive/uebungsblatt.r15878.tar.xz
2019/02/28 | 4250444 | systems/texlive/tlnet/archive/uestcthesis.doc.r36371.tar.xz
2019/02/28 | 17228 | systems/texlive/tlnet/archive/uestcthesis.r36371.tar.xz
-2022/12/31 | 484044 | systems/texlive/tlnet/archive/ufrgscca.doc.r65406.tar.xz
-2022/12/31 | 32108 | systems/texlive/tlnet/archive/ufrgscca.r65406.tar.xz
+2023/01/14 | 484732 | systems/texlive/tlnet/archive/ufrgscca.doc.r65532.tar.xz
+2023/01/14 | 32188 | systems/texlive/tlnet/archive/ufrgscca.r65532.tar.xz
2019/02/28 | 872 | systems/texlive/tlnet/archive/uhc.doc.r16791.tar.xz
2019/02/28 | 3600148 | systems/texlive/tlnet/archive/uhc.r16791.tar.xz
2019/02/28 | 380280 | systems/texlive/tlnet/archive/uhhassignment.doc.r44026.tar.xz
@@ -301238,16 +301238,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
2022/07/17 | 124404 | systems/texlive/tlnet/install-tl
-2023/01/13 | 5828982 | systems/texlive/tlnet/install-tl-unx.tar.gz
-2023/01/13 | 152 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512
-2023/01/13 | 455 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512.asc
+2023/01/14 | 5828591 | systems/texlive/tlnet/install-tl-unx.tar.gz
+2023/01/14 | 152 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512
+2023/01/14 | 455 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512.asc
2021/04/11 | 4945 | systems/texlive/tlnet/install-tl-windows.bat
-2023/01/13 | 20435400 | systems/texlive/tlnet/install-tl-windows.exe
-2023/01/13 | 153 | systems/texlive/tlnet/install-tl-windows.exe.sha512
-2023/01/13 | 455 | systems/texlive/tlnet/install-tl-windows.exe.sha512.asc
-2023/01/13 | 25513437 | systems/texlive/tlnet/install-tl.zip
-2023/01/13 | 145 | systems/texlive/tlnet/install-tl.zip.sha512
-2023/01/13 | 455 | systems/texlive/tlnet/install-tl.zip.sha512.asc
+2023/01/14 | 20437506 | systems/texlive/tlnet/install-tl-windows.exe
+2023/01/14 | 153 | systems/texlive/tlnet/install-tl-windows.exe.sha512
+2023/01/14 | 455 | systems/texlive/tlnet/install-tl-windows.exe.sha512.asc
+2023/01/14 | 25513434 | systems/texlive/tlnet/install-tl.zip
+2023/01/14 | 145 | systems/texlive/tlnet/install-tl.zip.sha512
+2023/01/14 | 455 | systems/texlive/tlnet/install-tl.zip.sha512.asc
2022/04/03 | 1229 | systems/texlive/tlnet/README.md
2022/04/03 | 0 | systems/texlive/tlnet/TEXLIVE_2022
2022/02/28 | 7791 | systems/texlive/tlnet/tlpkg/gpg/pubring.gpg
@@ -301257,7 +301257,7 @@
2022/02/28 | 1280 | systems/texlive/tlnet/tlpkg/gpg/trustdb.gpg
2022/10/09 | 49938 | systems/texlive/tlnet/tlpkg/installer/config.guess
2010/11/11 | 11651 | systems/texlive/tlnet/tlpkg/installer/COPYING.MinGW-runtime.txt
-2023/01/12 | 7247 | systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl
+2023/01/13 | 7199 | systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl
2023/01/11 | 216583 | 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
@@ -301300,12 +301300,12 @@
2021/05/16 | 20371 | systems/texlive/tlnet/tlpkg/TeXLive/TLCrypto.pm
2021/12/21 | 5429 | systems/texlive/tlnet/tlpkg/TeXLive/TLDownload.pm
2021/12/21 | 27582 | systems/texlive/tlnet/tlpkg/TeXLive/TLPaper.pm
-2023/01/13 | 18026403 | systems/texlive/tlnet/tlpkg/texlive.tlpdb
-2023/01/13 | 48 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5
+2023/01/14 | 18026403 | systems/texlive/tlnet/tlpkg/texlive.tlpdb
+2023/01/14 | 48 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5
2022/04/18 | 86658 | systems/texlive/tlnet/tlpkg/TeXLive/TLPDB.pm
-2023/01/13 | 144 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512
-2023/01/13 | 455 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc
-2023/01/13 | 2447672 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz
+2023/01/14 | 144 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512
+2023/01/14 | 455 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc
+2023/01/14 | 2447920 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz
2022/09/14 | 58922 | systems/texlive/tlnet/tlpkg/TeXLive/TLPOBJ.pm
2022/10/04 | 42404 | systems/texlive/tlnet/tlpkg/TeXLive/TLPSRC.pm
2021/12/21 | 16130 | systems/texlive/tlnet/tlpkg/TeXLive/TLTREE.pm
@@ -311531,7 +311531,7 @@
2014/07/05 | 611 | systems/win32/yandy/README
2014/07/05 | 1004628 | systems/win32/yandy/yandy-src.tar.xz
2014/07/05 | 1012416 | systems/win32/yandy.zip
-2023/01/14 | 186 | timestamp
+2023/01/15 | 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 a2dd2c3403..fc9eda49c5 100644
--- a/FILES.byname.gz
+++ b/FILES.byname.gz
Binary files differ
diff --git a/FILES.last07days b/FILES.last07days
index a37187c61f..c60fcc492f 100644
--- a/FILES.last07days
+++ b/FILES.last07days
@@ -1,3 +1,78 @@
+2023/01/14 | 99781 | macros/generic/xstring/test_etex.pdf
+2023/01/14 | 975334 | macros/generic/xstring.zip
+2023/01/14 | 919558 | macros/latex/contrib/etoc.zip
+2023/01/14 | 91079 | macros/generic/xstring/xstring-en.tex
+2023/01/14 | 850065 | macros/latex/contrib/etoc/etoc.pdf
+2023/01/14 | 83049 | macros/luatex/latex/pyluatex/pyluatex.pdf
+2023/01/14 | 787519 | macros/luatex/latex/letgut/doc/letgut-code.pdf
+2023/01/14 | 78706 | macros/luatex/latex/letgut/doc/letgut.tex
+2023/01/14 | 7699 | macros/luatex/latex/pyluatex/pyluatex.lua
+2023/01/14 | 717 | macros/luatex/latex/pyluatex/example/readme-example.tex
+2023/01/14 | 6739 | macros/latex/contrib/etoc/README.md
+2023/01/14 | 628 | macros/luatex/latex/pyluatex/example/readme-custom-env.tex
+2023/01/14 | 5828591 | systems/texlive/tlnet/install-tl-unx.tar.gz
+2023/01/14 | 5086 | macros/luatex/latex/pyluatex/pyluatex-interpreter.py
+2023/01/14 | 48 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5
+2023/01/14 | 484732 | systems/texlive/tlnet/archive/ufrgscca.doc.r65532.tar.xz
+2023/01/14 | 48215 | macros/generic/xstring/xstring.tex
+2023/01/14 | 461 | macros/luatex/latex/letgut/README.md
+2023/01/14 | 455 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc
+2023/01/14 | 455 | systems/texlive/tlnet/install-tl.zip.sha512.asc
+2023/01/14 | 455 | systems/texlive/tlnet/install-tl-windows.exe.sha512.asc
+2023/01/14 | 455 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512.asc
+2023/01/14 | 435504 | systems/texlive/tlnet/archive/luakeys.doc.r65533.tar.xz
+2023/01/14 | 4328 | macros/luatex/latex/pyluatex/example/data-visualization.tex
+2023/01/14 | 424104 | systems/texlive/tlnet/archive/texlive-scripts.doc.r65531.tar.xz
+2023/01/14 | 41390 | macros/generic/xstring/test_latex.tex
+2023/01/14 | 4035863 | biblio/ctan-bibdata.zip
+2023/01/14 | 3956 | macros/luatex/latex/letgut/doc/localconf.tex
+2023/01/14 | 394094 | macros/latex/contrib/etoc/etoc.dtx
+2023/01/14 | 39167 | macros/luatex/latex/pyluatex/example/population.csv
+2023/01/14 | 391120 | macros/luatex/latex/letgut/doc/letgut.pdf
+2023/01/14 | 3828 | macros/generic/xstring/README
+2023/01/14 | 37798 | macros/generic/xstring/test_etex.tex
+2023/01/14 | 3641911 | biblio/ctan-bibdata/ctan.pdf
+2023/01/14 | 341138 | macros/generic/xstring/xstring-fr.pdf
+2023/01/14 | 336458 | macros/generic/xstring/xstring-en.pdf
+2023/01/14 | 3315 | macros/luatex/latex/pyluatex/example/beamer.tex
+2023/01/14 | 322224 | macros/luatex/latex/letgut/source/letgut.org
+2023/01/14 | 32188 | systems/texlive/tlnet/archive/ufrgscca.r65532.tar.xz
+2023/01/14 | 3193 | macros/luatex/latex/pyluatex/pyluatex.sty
+2023/01/14 | 2760087 | biblio/ctan-bibdata/ctan.bib
+2023/01/14 | 274 | macros/luatex/latex/letgut/doc/letgut.bib
+2023/01/14 | 2702 | macros/luatex/latex/letgut/doc/xindex-letgut.lua
+2023/01/14 | 255 | macros/luatex/latex/letgut/doc/listings-conf.tex
+2023/01/14 | 25513434 | systems/texlive/tlnet/install-tl.zip
+2023/01/14 | 25212 | macros/luatex/latex/letgut/source/letgut-banner.org
+2023/01/14 | 2447920 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz
+2023/01/14 | 2400 | macros/luatex/latex/pyluatex/example/typesetting-listings.tex
+2023/01/14 | 2310 | macros/luatex/latex/pyluatex/example/repl.tex
+2023/01/14 | 2105 | macros/luatex/latex/pyluatex/example/typesetting-minted.tex
+2023/01/14 | 20437506 | systems/texlive/tlnet/install-tl-windows.exe
+2023/01/14 | 19444 | macros/luatex/latex/letgut/doc/exemple-nouveautes.pdf
+2023/01/14 | 1849 | macros/luatex/latex/pyluatex/example/matplotlib-pgf.tex
+2023/01/14 | 18026403 | systems/texlive/tlnet/tlpkg/texlive.tlpdb
+2023/01/14 | 1678 | biblio/ctan-bibdata/biblatex-ctan/ctan.bbx
+2023/01/14 | 154972 | macros/generic/xstring/test_latex.pdf
+2023/01/14 | 153 | systems/texlive/tlnet/install-tl-windows.exe.sha512
+2023/01/14 | 1535734 | install/macros/luatex/latex/letgut.tds.zip
+2023/01/14 | 1534 | macros/luatex/latex/pyluatex/README.md
+2023/01/14 | 152 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512
+2023/01/14 | 152973 | macros/luatex/latex/letgut/doc/letgut-banner-code.pdf
+2023/01/14 | 1527 | macros/luatex/latex/pyluatex/example/matplotlib-external.tex
+2023/01/14 | 1520 | macros/luatex/latex/letgut/source/HOWTO.md
+2023/01/14 | 145 | systems/texlive/tlnet/install-tl.zip.sha512
+2023/01/14 | 144 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512
+2023/01/14 | 1429 | macros/luatex/latex/pyluatex/example/sessions.tex
+2023/01/14 | 14240 | systems/texlive/tlnet/archive/luakeys.r65533.tar.xz
+2023/01/14 | 14045 | macros/luatex/latex/pyluatex/pyluatex.tex
+2023/01/14 | 1398256 | macros/luatex/latex/letgut.zip
+2023/01/14 | 123 | macros/generic/xstring/xstring.sty
+2023/01/14 | 1221 | macros/luatex/latex/letgut/doc/latexmkrc
+2023/01/14 | 117485 | macros/luatex/latex/pyluatex.zip
+2023/01/14 | 113676 | systems/texlive/tlnet/archive/texlive-scripts.r65531.tar.xz
+2023/01/14 | 1049 | macros/luatex/latex/pyluatex/example/typesetting-example.tex
+2023/01/14 | 103753 | macros/generic/xstring/xstring-fr.tex
2023/01/13 | 9804 | systems/texlive/tlnet/archive/uptex-base.r65527.tar.xz
2023/01/13 | 979 | systems/win32/miktex/tm/packages/pr.ini
2023/01/13 | 977056 | systems/texlive/tlnet/archive/tex4ht.r65529.tar.xz
@@ -33,6 +108,7 @@
2023/01/13 | 73545 | systems/win32/miktex/tm/packages/ntgclass__source.tar.lzma
2023/01/13 | 73330 | systems/win32/miktex/tm/packages/next/miktex-graphite2-bin-x64-2.9.tar.lzma
2023/01/13 | 72830 | systems/win32/miktex/tm/packages/next/miktex-ps2pk-bin-x64-2.9.tar.lzma
+2023/01/13 | 7199 | systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl
2023/01/13 | 7167 | systems/win32/miktex/tm/packages/pst-flags__source.tar.lzma
2023/01/13 | 71261 | systems/win32/miktex/tm/packages/next/miktex-tex4ht-bin-x64-2.9.tar.lzma
2023/01/13 | 702204 | systems/win32/miktex/tm/packages/next/miktex-lcdf-typetools-bin-x64-2.9.tar.lzma
@@ -54,7 +130,6 @@
2023/01/13 | 601956 | systems/win32/miktex/tm/packages/next/miktex-libressl-bin-x64-2.9.tar.lzma
2023/01/13 | 59945 | macros/luatex/generic/luakeys/luakeys.lua
2023/01/13 | 58501 | systems/win32/miktex/tm/packages/next/miktex-psutils-bin-x64-2.9.tar.lzma
-2023/01/13 | 5828982 | systems/texlive/tlnet/install-tl-unx.tar.gz
2023/01/13 | 5812 | systems/win32/miktex/tm/packages/pdfcolfoot__source.tar.lzma
2023/01/13 | 57844 | systems/win32/miktex/tm/packages/next/miktex-cjkutils-bin-x64-2.9.tar.lzma
2023/01/13 | 57434 | systems/win32/miktex/tm/packages/next/miktex-xml2pmx-bin-x64.tar.lzma
@@ -75,17 +150,12 @@
2023/01/13 | 52519 | systems/win32/miktex/tm/packages/next/miktex-m-tx-bin-x64-2.9.tar.lzma
2023/01/13 | 5144 | systems/texlive/tlnet/archive/embedfile.r65528.tar.xz
2023/01/13 | 5140740 | systems/win32/miktex/tm/packages/musixtex-fonts.tar.lzma
-2023/01/13 | 48 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5
2023/01/13 | 48923 | systems/win32/miktex/tm/packages/next/miktex-expat-bin-x64-2.9.tar.lzma
2023/01/13 | 4851 | macros/latex/contrib/ufrgscca/latex/ufrgscca-gen.sty
2023/01/13 | 48198 | systems/win32/miktex/tm/packages/next/miktex-mtprint-bin-x64-2.9.tar.lzma
2023/01/13 | 472890 | systems/win32/miktex/tm/packages/next/miktex-doc.tar.lzma
2023/01/13 | 4613 | macros/latex/contrib/ufrgscca/README.md
2023/01/13 | 45840 | systems/win32/miktex/tm/packages/next/miktex-dvipng-bin-x64-2.9.tar.lzma
-2023/01/13 | 455 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc
-2023/01/13 | 455 | systems/texlive/tlnet/install-tl.zip.sha512.asc
-2023/01/13 | 455 | systems/texlive/tlnet/install-tl-windows.exe.sha512.asc
-2023/01/13 | 455 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512.asc
2023/01/13 | 451943 | macros/luatex/generic/luakeys.zip
2023/01/13 | 44095 | systems/win32/miktex/tm/packages/next/miktex-gsf2pk-bin-x64-2.9.tar.lzma
2023/01/13 | 43850 | systems/win32/miktex/tm/packages/next/miktex-mthelp-bin-x64-2.9.tar.lzma
@@ -93,20 +163,17 @@
2023/01/13 | 434957 | systems/win32/miktex/tm/packages/pythonimmediate__doc.tar.lzma
2023/01/13 | 425955 | macros/luatex/generic/luakeys/luakeys.pdf
2023/01/13 | 42483 | systems/win32/miktex/tm/packages/next/miktex-upmendex-bin-x64.tar.lzma
-2023/01/13 | 424104 | systems/texlive/tlnet/archive/texlive-scripts.doc.r65525.tar.xz
2023/01/13 | 41732 | systems/win32/miktex/tm/packages/next/miktex-patgen-bin-x64.tar.lzma
2023/01/13 | 4113 | macros/latex/contrib/ufrgscca/latex/ufrgscca-curr-graph.sty
2023/01/13 | 407664 | systems/texlive/tlnet/archive/embedfile.doc.r65528.tar.xz
2023/01/13 | 407162 | systems/win32/miktex/tm/packages/embedfile__doc.tar.lzma
2023/01/13 | 4070 | macros/latex/contrib/ufrgscca/latex/ufrgscca-ptBR-core.def
-2023/01/13 | 4036248 | biblio/ctan-bibdata.zip
2023/01/13 | 40142 | systems/win32/miktex/tm/packages/oberdiek.tar.lzma
2023/01/13 | 395039 | systems/win32/miktex/tm/packages/next/miktex-cairo-bin-x64-2.9.tar.lzma
2023/01/13 | 3769 | systems/win32/miktex/tm/packages/sagetex.tar.lzma
2023/01/13 | 37398 | systems/win32/miktex/tm/packages/next/miktex-posix-bin-x64-2.9.tar.lzma
2023/01/13 | 37065 | systems/win32/miktex/tm/packages/next/miktex-chktex-bin-x64-2.9.tar.lzma
2023/01/13 | 37026 | systems/win32/miktex/tm/packages/mcf2graph__source.tar.lzma
-2023/01/13 | 3642851 | biblio/ctan-bibdata/ctan.pdf
2023/01/13 | 35288 | systems/win32/miktex/tm/packages/next/miktex-axohelp-bin-x64-2.9.tar.lzma
2023/01/13 | 352519 | systems/win32/miktex/tm/packages/next/miktex-xetex-bin-x64-2.9.tar.lzma
2023/01/13 | 35214 | systems/win32/miktex/tm/packages/next/miktex-mspack-bin-x64-2.9.tar.lzma
@@ -133,17 +200,14 @@
2023/01/13 | 287080 | systems/win32/miktex/tm/packages/next/miktex-metapost-bin-x64-2.9.tar.lzma
2023/01/13 | 2831885 | systems/win32/miktex/tm/packages/next/miktex-texworks-bin-x64-2.9.tar.lzma
2023/01/13 | 27693 | systems/win32/miktex/tm/packages/next/miktex-teckit-bin-x64-2.9.tar.lzma
-2023/01/13 | 2760087 | biblio/ctan-bibdata/ctan.bib
2023/01/13 | 27524 | systems/win32/miktex/tm/packages/proflycee.tar.lzma
2023/01/13 | 271309 | systems/win32/miktex/tm/packages/next/miktex-console-bin-x64-2.9.tar.lzma
2023/01/13 | 2695 | macros/latex/contrib/ufrgscca/latex/ufrgscca-lists.sty
2023/01/13 | 25912 | systems/win32/miktex/tm/packages/repere.tar.lzma
-2023/01/13 | 25513437 | systems/texlive/tlnet/install-tl.zip
2023/01/13 | 25206 | systems/win32/miktex/tm/packages/next/miktex-fribidixetex-bin-x64-2.9.tar.lzma
2023/01/13 | 2482 | macros/latex/contrib/ufrgscca/latex/ufrgscca-en-core.def
2023/01/13 | 247489 | systems/win32/miktex/tm/packages/next/miktex-hitex-bin-x64.tar.lzma
2023/01/13 | 245711 | systems/win32/miktex/tm/packages/next/miktex-pmx-bin-x64-2.9.tar.lzma
-2023/01/13 | 2447672 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz
2023/01/13 | 24068 | systems/win32/miktex/tm/packages/next/miktex-devnag-bin-x64-2.9.tar.lzma
2023/01/13 | 24026 | systems/win32/miktex/tm/packages/next/miktex-popt-bin-x64-2.9.tar.lzma
2023/01/13 | 23541 | systems/win32/miktex/tm/packages/scripture__source.tar.lzma
@@ -157,7 +221,6 @@
2023/01/13 | 20963 | systems/win32/miktex/tm/packages/se2thesis__source.tar.lzma
2023/01/13 | 209049 | systems/win32/miktex/tm/packages/next/miktex-metafont-bin-x64-2.9.tar.lzma
2023/01/13 | 20484 | macros/latex/contrib/ufrgscca/latex/ufrgscca-ppc.sty
-2023/01/13 | 20435400 | systems/texlive/tlnet/install-tl-windows.exe
2023/01/13 | 203534 | systems/win32/miktex/tm/packages/next/miktex-pixman-bin-x64-2.9.tar.lzma
2023/01/13 | 2013443 | systems/win32/miktex/tm/packages/next/miktex-luatex-bin-x64-2.9.tar.lzma
2023/01/13 | 196558 | systems/win32/miktex/tm/packages/next/miktex-curl-bin-x64-2.9.tar.lzma
@@ -170,11 +233,9 @@
2023/01/13 | 18362 | systems/win32/miktex/tm/packages/next/miktex-kpathsea-bin-x64-2.9.tar.lzma
2023/01/13 | 181695 | systems/win32/miktex/tm/packages/next/miktex-mpfr-bin-x64-2.9.tar.lzma
2023/01/13 | 180621 | systems/win32/miktex/tm/packages/maze__doc.tar.lzma
-2023/01/13 | 18026403 | systems/texlive/tlnet/tlpkg/texlive.tlpdb
2023/01/13 | 175393 | systems/win32/miktex/tm/packages/next/miktex-hunspell-bin-x64-2.9.tar.lzma
2023/01/13 | 173425 | systems/win32/miktex/tm/packages/next/miktex-tex-bin-x64-2.9.tar.lzma
2023/01/13 | 16914 | systems/win32/miktex/tm/packages/unimath-plain-xetex__source.tar.lzma
-2023/01/13 | 1678 | biblio/ctan-bibdata/biblatex-ctan/ctan.bbx
2023/01/13 | 1645800 | systems/win32/miktex/tm/packages/ntgclass__doc.tar.lzma
2023/01/13 | 16429 | macros/latex/contrib/ufrgscca/latex/ufrgscca-abnt.sty
2023/01/13 | 1638568 | systems/win32/miktex/tm/packages/next/miktex-zzdb3-2.9.tar.lzma
@@ -184,12 +245,8 @@
2023/01/13 | 160308 | systems/texlive/tlnet/archive/uptex-base.doc.r65527.tar.xz
2023/01/13 | 155954 | systems/win32/miktex/tm/packages/next/miktex-fontconfig-bin-x64-2.9.tar.lzma
2023/01/13 | 1555 | systems/win32/miktex/tm/packages/maze.tar.lzma
-2023/01/13 | 153 | systems/texlive/tlnet/install-tl-windows.exe.sha512
-2023/01/13 | 152 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512
2023/01/13 | 1514923 | systems/win32/miktex/tm/packages/next/miktex-runtime-bin-x64-2.9.tar.lzma
2023/01/13 | 147421 | systems/win32/miktex/tm/packages/luasseq__doc.tar.lzma
-2023/01/13 | 145 | systems/texlive/tlnet/install-tl.zip.sha512
-2023/01/13 | 144 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512
2023/01/13 | 1447272 | systems/win32/miktex/tm/packages/next/miktex-dvisvgm-bin-x64-2.9.tar.lzma
2023/01/13 | 14444 | systems/win32/miktex/tm/packages/next/miktex-zzip-bin-x64-2.9.tar.lzma
2023/01/13 | 14437 | macros/latex/contrib/ufrgscca/latex/ufrgscca-ptBR-forms.def
@@ -214,7 +271,6 @@
2023/01/13 | 115725 | systems/win32/miktex/tm/packages/next/miktex-gregorio-bin-x64-2.9.tar.lzma
2023/01/13 | 1150 | systems/win32/miktex/tm/packages/next/pr.ini
2023/01/13 | 11488 | macros/latex/contrib/ufrgscca/latex/ufrgscca-cover.sty
-2023/01/13 | 113684 | systems/texlive/tlnet/archive/texlive-scripts.r65525.tar.xz
2023/01/13 | 11364 | macros/latex/contrib/ufrgscca/latex/ufrgscca-core.sty
2023/01/13 | 113277 | systems/win32/miktex/tm/packages/next/miktex-gd-bin-x64-2.9.tar.lzma
2023/01/13 | 11203 | systems/win32/miktex/tm/packages/diffcoeff.tar.lzma
@@ -232,7 +288,6 @@
2023/01/12 | 9012 | systems/texlive/tlnet/archive/musixtex.source.r65519.tar.xz
2023/01/12 | 8434 | support/TeX4ht/source/mktex4ht-cnf.tex
2023/01/12 | 8042572 | systems/texlive/tlnet/archive/oberdiek.doc.r65521.tar.xz
-2023/01/12 | 7247 | systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl
2023/01/12 | 61752 | systems/texlive/tlnet/archive/unimath-plain-xetex.doc.r65518.tar.xz
2023/01/12 | 58767 | macros/latex/contrib/embedfile/embedfile.dtx
2023/01/12 | 55736 | systems/texlive/tlnet/archive/ntgclass.source.r65522.tar.xz
@@ -1075,125 +1130,3 @@
2023/01/08 | 10960 | systems/texlive/tlnet/archive/functional.r65485.tar.xz
2023/01/08 | 108100 | systems/texlive/tlnet/archive/latexmk.r65485.tar.xz
2023/01/08 | 0 | macros/latex/contrib/nicefilelist/source/empty.f
-2023/01/07 | 9839 | support/latexindent/LatexIndent/Lines.pm
-2023/01/07 | 97504 | macros/latex/contrib/jwjournal.zip
-2023/01/07 | 9091 | systems/win32/miktex/tm/packages/projlib__doc.tar.lzma
-2023/01/07 | 8829 | support/latexindent/LatexIndent/IfElseFi.pm
-2023/01/07 | 8703009 | support/latexindent/bin/windows/latexindent.exe
-2023/01/07 | 8684 | systems/texlive/tlnet/archive/projlib.doc.r65475.tar.xz
-2023/01/07 | 860824 | macros/latex/contrib/functional/functional.pdf
-2023/01/07 | 8462 | support/latexindent/LatexIndent/FileExtension.pm
-2023/01/07 | 838 | support/latexindent/LatexIndent/Version.pm
-2023/01/07 | 83821 | macros/latex/contrib/functional/functional.sty
-2023/01/07 | 7946 | systems/win32/miktex/tm/packages/minimalist__doc.tar.lzma
-2023/01/07 | 7910 | systems/win32/miktex/tm/packages/colorist__doc.tar.lzma
-2023/01/07 | 78844 | graphics/mcf2graph/mcf_exa_code.pdf
-2023/01/07 | 753751 | macros/latex/contrib/functional.zip
-2023/01/07 | 7517 | systems/win32/miktex/tm/packages/lebhart__doc.tar.lzma
-2023/01/07 | 7474 | systems/win32/miktex/tm/packages/beaulivre__doc.tar.lzma
-2023/01/07 | 7440 | systems/texlive/tlnet/archive/minimalist.doc.r65475.tar.xz
-2023/01/07 | 7393 | macros/latex/contrib/jwjournal/jwjournal.cls
-2023/01/07 | 7329 | support/latexindent/LatexIndent/BackUpFileProcedure.pm
-2023/01/07 | 7280 | support/latexindent/LatexIndent/MandatoryArgument.pm
-2023/01/07 | 7165 | macros/latex/contrib/simplebnf/simplebnf.sty
-2023/01/07 | 7161 | support/latexindent/documentation/figure-schematic.png
-2023/01/07 | 7080 | systems/texlive/tlnet/archive/einfart.doc.r65475.tar.xz
-2023/01/07 | 7076 | systems/texlive/tlnet/archive/lebhart.doc.r65475.tar.xz
-2023/01/07 | 7056 | systems/texlive/tlnet/archive/simplivre.doc.r65475.tar.xz
-2023/01/07 | 7052 | systems/texlive/tlnet/archive/beaulivre.doc.r65475.tar.xz
-2023/01/07 | 6882 | support/latexindent/LatexIndent/TrailingComments.pm
-2023/01/07 | 6807 | support/latexindent/LatexIndent/Environment.pm
-2023/01/07 | 6694 | support/latexindent/LatexIndent/Item.pm
-2023/01/07 | 6609 | macros/latex/contrib/jwjournal/README.md
-2023/01/07 | 6522 | support/latexindent/LatexIndent/OptionalArgument.pm
-2023/01/07 | 65059 | support/latexindent/LatexIndent/AlignmentAtAmpersand.pm
-2023/01/07 | 6392568 | support/latexindent/bin/macos/latexindent
-2023/01/07 | 617578 | macros/luatex/latex/piton.zip
-2023/01/07 | 6163359 | support/latexindent/bin/linux/latexindent
-2023/01/07 | 6022 | support/latexindent/LatexIndent/Else.pm
-2023/01/07 | 580 | systems/texlive/tlnet/archive/collection-games.r65474.tar.xz
-2023/01/07 | 5808 | support/latexindent/LatexIndent/UnNamedGroupingBracesBrackets.pm
-2023/01/07 | 5454 | support/latexindent/documentation/contributors.bib
-2023/01/07 | 54385 | support/latexindent/documentation/latexindent-yaml-schema.json
-2023/01/07 | 5429 | support/latexindent/LatexIndent/KeyEqualsValuesBraces.pm
-2023/01/07 | 540465 | macros/luatex/latex/piton/piton.pdf
-2023/01/07 | 5390 | support/latexindent/LatexIndent/Check.pm
-2023/01/07 | 52505 | support/latexindent/LatexIndent/GetYamlSettings.pm
-2023/01/07 | 501448 | support/latexmk.zip
-2023/01/07 | 4943 | systems/win32/miktex/tm/packages/lebhart.tar.lzma
-2023/01/07 | 4921 | systems/win32/miktex/tm/packages/beaulivre.tar.lzma
-2023/01/07 | 4892 | systems/texlive/tlnet/archive/einfart.r65475.tar.xz
-2023/01/07 | 4864 | systems/texlive/tlnet/archive/simplivre.r65475.tar.xz
-2023/01/07 | 4816 | support/latexindent/LatexIndent/BlankLines.pm
-2023/01/07 | 4772 | systems/texlive/tlnet/archive/lebhart.r65475.tar.xz
-2023/01/07 | 4760 | systems/texlive/tlnet/archive/beaulivre.r65475.tar.xz
-2023/01/07 | 471288 | support/latexmk/latexmk.pl
-2023/01/07 | 470 | macros/latex/contrib/hopatch/README.md
-2023/01/07 | 4707 | macros/latex/contrib/simplebnf/simplebnf-doc.tex
-2023/01/07 | 46598 | macros/latex/contrib/jwjournal/jwjournal-demo-cn.pdf
-2023/01/07 | 44096 | support/latexindent/documentation/logo.png
-2023/01/07 | 4402 | support/latexindent/documentation/latex-indent.bib
-2023/01/07 | 4365 | support/latexindent/LatexIndent/RoundBrackets.pm
-2023/01/07 | 4339 | support/latexindent/LatexIndent/NamedGroupingBracesBrackets.pm
-2023/01/07 | 430280 | support/latexindent/documentation/latexindent.tex
-2023/01/07 | 42997 | macros/luatex/latex/piton/piton-french.tex
-2023/01/07 | 3747 | support/latexindent/LatexIndent/Replacement.pm
-2023/01/07 | 3482 | support/latexindent/LatexIndent/HorizontalWhiteSpace.pm
-2023/01/07 | 3413 | support/latexindent/latexindent.pl
-2023/01/07 | 3385 | systems/win32/miktex/tm/packages/mismath.tar.lzma
-2023/01/07 | 3339 | support/latexindent/LatexIndent/Tokens.pm
-2023/01/07 | 3320 | graphics/mcf2graph/README
-2023/01/07 | 327701 | macros/latex/contrib/hopatch/hopatch.pdf
-2023/01/07 | 323582 | macros/latex/contrib/hopatch.zip
-2023/01/07 | 312 | macros/latex/contrib/functional/README.txt
-2023/01/07 | 31080 | support/latexindent/LatexIndent/Wrap.pm
-2023/01/07 | 300667 | macros/latex/contrib/functional/functional.tex
-2023/01/07 | 27328 | support/latexindent/LatexIndent/Verbatim.pm
-2023/01/07 | 2701 | support/latexindent/LatexIndent/Switches.pm
-2023/01/07 | 26911 | systems/win32/miktex/tm/packages/projlib__source.tar.lzma
-2023/01/07 | 2690 | support/latexindent/LatexIndent/Preamble.pm
-2023/01/07 | 265680 | macros/luatex/latex/piton/piton-french.pdf
-2023/01/07 | 26537 | systems/win32/miktex/tm/packages/projlib.tar.lzma
-2023/01/07 | 26412 | systems/texlive/tlnet/archive/projlib.source.r65475.tar.xz
-2023/01/07 | 26248 | systems/texlive/tlnet/archive/projlib.r65475.tar.xz
-2023/01/07 | 2505 | support/latexmk/README
-2023/01/07 | 24759 | support/latexindent/LatexIndent/Document.pm
-2023/01/07 | 24410 | support/latexindent/LatexIndent/Arguments.pm
-2023/01/07 | 2320 | support/latexindent/LatexIndent/Logger.pm
-2023/01/07 | 229079 | support/latexmk/latexmk.txt
-2023/01/07 | 22804 | support/latexindent/defaultSettings.yaml
-2023/01/07 | 227112 | systems/win32/miktex/tm/packages/mismath__doc.tar.lzma
-2023/01/07 | 21769 | macros/latex/contrib/hopatch/hopatch.dtx
-2023/01/07 | 21564 | support/latexindent/LatexIndent/Indent.pm
-2023/01/07 | 208391 | support/latexmk/latexmk.pdf
-2023/01/07 | 20766 | support/latexindent/LatexIndent/Sentence.pm
-2023/01/07 | 2008 | support/latexindent/README
-2023/01/07 | 19833 | macros/latex/contrib/jwjournal/jwjournal-demo-fr.pdf
-2023/01/07 | 19484 | macros/latex/contrib/jwjournal/jwjournal-demo-en.pdf
-2023/01/07 | 19106 | macros/latex/contrib/jwjournal/LICENSE
-2023/01/07 | 18522 | support/latexindent/LatexIndent/ModifyLineBreaks.pm
-2023/01/07 | 184993 | support/latexmk/latexmk.1
-2023/01/07 | 1837 | macros/latex/contrib/jwjournal/jwjournal-demo-fr.tex
-2023/01/07 | 17951 | support/latexmk/INSTALL
-2023/01/07 | 17313 | systems/win32/miktex/tm/packages/mismath__source.tar.lzma
-2023/01/07 | 1592 | macros/latex/contrib/jwjournal/jwjournal-demo-en.tex
-2023/01/07 | 156192 | macros/latex/contrib/simplebnf.zip
-2023/01/07 | 156004 | macros/latex/contrib/simplebnf/simplebnf-doc.pdf
-2023/01/07 | 1558 | support/latexindent/latexindent-module-installer.pl
-2023/01/07 | 1517 | macros/latex/contrib/jwjournal/jwjournal-demo-cn.tex
-2023/01/07 | 1485 | support/latexindent/LatexIndent/DoubleBackSlash.pm
-2023/01/07 | 13890 | support/latexindent/LatexIndent/Special.pm
-2023/01/07 | 13419 | support/latexindent/LatexIndent/HiddenChildren.pm
-2023/01/07 | 12 | macros/latex/contrib/jwjournal/DEPENDS.txt
-2023/01/07 | 12898 | support/latexindent/LatexIndent/LogFile.pm
-2023/01/07 | 12646 | support/latexindent/LatexIndent/Braces.pm
-2023/01/07 | 1241201 | support/latexindent/documentation/latexindent.pdf
-2023/01/07 | 122532 | macros/luatex/latex/piton/piton.dtx
-2023/01/07 | 11968 | systems/win32/miktex/tm/packages/minimalist.tar.lzma
-2023/01/07 | 11816 | systems/texlive/tlnet/archive/minimalist.r65475.tar.xz
-2023/01/07 | 11300 | support/latexindent/LatexIndent/FileContents.pm
-2023/01/07 | 11157566 | support/latexindent.zip
-2023/01/07 | 11142 | support/latexindent/LatexIndent/Heading.pm
-2023/01/07 | 1100 | macros/latex/contrib/simplebnf/LICENSE
-2023/01/07 | 10620 | support/latexindent/LatexIndent/Command.pm
-2023/01/07 | 102449 | graphics/mcf2graph/mcf2graph.mp
diff --git a/biblio/ctan-bibdata/ctan.bib b/biblio/ctan-bibdata/ctan.bib
index 8615ffb43c..83772929d4 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 14-01-2023, 02:02:04
+%% created at 15-01-2023, 02:01:19
%%
%% This file is provided under the terms of the LPPL v1.3 or
@@ -22862,8 +22862,8 @@
title = {The \texttt{etoc} package},
subtitle = {Completely customisable TOCs},
author = {Jean-François Burnol},
- date = {2022-11-21},
- version = {1.09i},
+ date = {2023-01-14},
+ version = {1.1a},
license = {lppl1.3c},
mirror = {https://mirror.ctan.org/macros/latex/contrib/etoc},
url = {https://ctan.org/pkg/etoc},
@@ -38174,8 +38174,8 @@
title = {The \texttt{letgut} package},
subtitle = {Class for the newsletter “La Lettre GUTenberg” of the French \TeX{} User Group GUTenberg},
author = {{Association GUTenberg}},
- date = {2022-10-03},
- version = {0.9.4},
+ date = {2023-01-14},
+ version = {0.9.6},
license = {lppl1.3c},
mirror = {https://mirror.ctan.org/macros/luatex/latex/letgut},
url = {https://ctan.org/pkg/letgut},
@@ -50840,7 +50840,7 @@
title = {The \texttt{pdfcolfoot} package},
subtitle = {Separate color stack for footnotes with pdfTeX},
author = {Heiko Oberdiek},
- date = {2023-01-11},
+ date = {2023-01-14},
version = {1.4},
license = {lppl1.3},
mirror = {https://mirror.ctan.org/macros/latex/contrib/pdfcolfoot},
@@ -56535,8 +56535,8 @@
title = {The \texttt{PyLuaTeX} package},
subtitle = {Execute Python code on the fly in your \LaTeX{} documents},
author = {Tobias Enderle},
- date = {2023-01-03},
- version = {0.5.2},
+ date = {2023-01-14},
+ version = {0.6.0},
license = {mit,lppl1.3c},
mirror = {https://mirror.ctan.org/macros/luatex/latex/pyluatex},
url = {https://ctan.org/pkg/pyluatex},
@@ -76399,8 +76399,8 @@
title = {The \texttt{xstring} package},
subtitle = {String manipulation for (La)TeX},
author = {Christian Tellechea},
- date = {2021-07-21},
- version = {1.84},
+ date = {2023-01-14},
+ version = {1.85},
license = {lppl1.3c},
mirror = {https://mirror.ctan.org/macros/generic/xstring},
url = {https://ctan.org/pkg/xstring},
diff --git a/biblio/ctan-bibdata/ctan.pdf b/biblio/ctan-bibdata/ctan.pdf
index ae5e66857b..7f273c8245 100644
--- a/biblio/ctan-bibdata/ctan.pdf
+++ b/biblio/ctan-bibdata/ctan.pdf
Binary files differ
diff --git a/macros/generic/xstring/README b/macros/generic/xstring/README
index ce2ea5d24e..812db6aaf2 100644
--- a/macros/generic/xstring/README
+++ b/macros/generic/xstring/README
@@ -1,8 +1,8 @@
_________________
xstring package
- v 1.84
- 2021/07/21
+ v 1.85
+ 2023/01/14
_________________
This package provides macros manipulating strings for programming use.
diff --git a/macros/generic/xstring/test_etex.pdf b/macros/generic/xstring/test_etex.pdf
index 17cb0ae3ac..0f00223840 100644
--- a/macros/generic/xstring/test_etex.pdf
+++ b/macros/generic/xstring/test_etex.pdf
Binary files differ
diff --git a/macros/generic/xstring/test_latex.pdf b/macros/generic/xstring/test_latex.pdf
index 8a1ee001e8..2a01937b6c 100644
--- a/macros/generic/xstring/test_latex.pdf
+++ b/macros/generic/xstring/test_latex.pdf
Binary files differ
diff --git a/macros/generic/xstring/xstring-en.pdf b/macros/generic/xstring/xstring-en.pdf
index 7a9da7b093..554faf4cea 100644
--- a/macros/generic/xstring/xstring-en.pdf
+++ b/macros/generic/xstring/xstring-en.pdf
Binary files differ
diff --git a/macros/generic/xstring/xstring-fr.pdf b/macros/generic/xstring/xstring-fr.pdf
index 0550b0393d..703674d7c6 100644
--- a/macros/generic/xstring/xstring-fr.pdf
+++ b/macros/generic/xstring/xstring-fr.pdf
Binary files differ
diff --git a/macros/generic/xstring/xstring.tex b/macros/generic/xstring/xstring.tex
index d5dcd6354f..920a76933c 100644
--- a/macros/generic/xstring/xstring.tex
+++ b/macros/generic/xstring/xstring.tex
@@ -4,9 +4,9 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %
\def\xstringname {xstring} %
-\def\xstringversion {1.84} %
+\def\xstringversion {1.85} %
% %
-\def\xstringdate {2021/07/21} %
+\def\xstringdate {2023/01/14} %
% %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %
@@ -15,9 +15,7 @@
% Maintainer : Christian Tellechea %
% Email : unbonpetit@netc.fr %
% Package URL: https://www.ctan.org/pkg/xstring %
-% Bug tracker: https://framagit.org/unbonpetit/xstring/issues %
-% Repository : https://framagit.org/unbonpetit/xstring/tree/master %
-% Copyright : Christian Tellechea 2008-2019 %
+% Copyright : Christian Tellechea 2008-2023 %
% Licence : Released under the LaTeX Project Public License v1.3c %
% or later, see http://www.latex-project.org/lppl.txt %
% Files : 1) xstring.tex %
@@ -1006,7 +1004,7 @@
\xs_StrExpand_i{#1}% Appel de la macro récursive
}
{\def\xs_reserved_B{#2}%
- }
+ }% <-- bugfix 1.85
\expandafter
\endgroup
\expandafter\def\expandafter#3\expandafter{\xs_reserved_B}%
@@ -1021,7 +1019,7 @@
\def\xs_reserved_A{\xs_exparg\xs_StrExpand_i{\number\numexpr#1-1}}%
}
{\let\xs_reserved_A\relax
- }%
+ }% <-- bugfix 1.85
\xs_reserved_A
}
@@ -1228,3 +1226,6 @@ v1.83 06/02/2019
------------------------------------------------------------------------------
v1.84 21/07/2021
- encodage du fichier xstring.tex en UTF-8
+ ------------------------------------------------------------------------------
+v1.85 14/01/2023
+ - 2 espaces parasites corrigés
diff --git a/macros/latex/contrib/etoc/README.md b/macros/latex/contrib/etoc/README.md
index 96322539d8..e431588369 100644
--- a/macros/latex/contrib/etoc/README.md
+++ b/macros/latex/contrib/etoc/README.md
@@ -1,10 +1,10 @@
<!-- -->
- Source: etoc.dtx (1.09i)
+ Source: etoc.dtx (1.1a)
Author: Jean-Francois Burnol
Info: Completely customisable TOCs
License: LPPL 1.3c
- Copyright (C) 2012-2022 Jean-Francois Burnol.
+ Copyright (C) 2012-2023 Jean-Francois Burnol.
<jfbu at free dot fr>
ABSTRACT
@@ -97,6 +97,34 @@ etoc.sty, etoc.tex, etoc.pdf, etoc.dvi.
RECENT CHANGES
==============
+1.1a \[2023/01/14\]
+----------------------
+
+This version brings no new functionality, despite the number bump.
+It implements a complete rewrite of old legacy core internals.
+Formerly, etoc waited for
+[hyperref](https://ctan.org/pkg/hyperref)
+(if present) to have added hyperlinks via its patch to LaTeX's
+`\contentsline`. etoc examined the arguments of `\l@section` and
+other commands to extract hyperlinking information, if any.
+With this release etoc decides earlier according to
+[hyperref](https://ctan.org/pkg/hyperref)
+linktoc status whether section names and page numbers
+should be hyperlinked, and add links itself via `\hyperlink`.
+etoc is thus now immune to the details of how hyperref patches
+the `\contentsline` command, which is not executed anymore.
+Overall, the code is greatly simplified.
+
+`\etoclink` now wraps its argument in an hyperlink even if
+[hyperref](https://ctan.org/pkg/hyperref) is configured via
+`linktoc=none`. Formerly no hyperlink was added then.
+
+Deprecation of `\etocsavedsectiontocline` and similarly named
+commands. They are not needed as `\l@section` et al. are with this
+release left unmodified during the table of contents typesetting.
+
+LaTeX kernel from `2020/10/01` or later is required.
+
1.09i \[2022/11/21\]
--------------------
diff --git a/macros/latex/contrib/etoc/etoc.dtx b/macros/latex/contrib/etoc/etoc.dtx
index 5e19538d9f..89e7b3a109 100644
--- a/macros/latex/contrib/etoc/etoc.dtx
+++ b/macros/latex/contrib/etoc/etoc.dtx
@@ -2,20 +2,20 @@
% N.B.: this dtx file is NOT for use with \DocInput. The latex source of the
% user manual is not prefixed with percent signs.
%<*none>
-\def\etocdtxtimestamp {Time-stamp: <21-11-2022 at 19:35:48 CET>}%
+\def\etocdtxtimestamp {Time-stamp: <14-01-2023 at 21:26:57 CET>}%
%</none>
%<*!readme>
%%
%% Package: etoc
-%% Version: 1.09i
+%% Version: 1.1a
%% License: LPPL 1.3c
-%% Copyright (C) 2012-2022 Jean-Francois Burnol
+%% Copyright (C) 2012-2023 Jean-Francois Burnol
%% <jfbu at free dot fr>
%</!readme>
%<*none>
-\def\etocpkgdate {2022/11/21}
-\def\etocdocdate {2022/11/21}
-\def\etocpkgversion {1.09i}
+\def\etocpkgdate {2023/01/14}
+\def\etocdocdate {2023/01/14}
+\def\etocpkgversion {1.1a}
\def\etocpkgdescription {Completely customisable TOCs (JFB)}
%% German translation was last udpated on April 2015 and all new material
%% was included since in English. During 2020/2021/2022 emerged a still
@@ -33,9 +33,9 @@
\catcode32=13\catcode`\\=12^^Brelax^^A
^^Bfirstofone{^^Bendgroup^^Bdef^^BetocLicense^^A
{% Package: etoc
-% Version: 1.09i
+% Version: 1.1a
% License: LPPL 1.3c
-% Copyright (C) 2012-2022 Jean-Francois Burnol <jfbu at free dot fr>
+% Copyright (C) 2012-2023 Jean-Francois Burnol <jfbu at free dot fr>
%
% This Work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, in its
@@ -60,11 +60,11 @@
%<*readme>
<!-- -->
- Source: etoc.dtx (1.09i)
+ Source: etoc.dtx (1.1a)
Author: Jean-Francois Burnol
Info: Completely customisable TOCs
License: LPPL 1.3c
- Copyright (C) 2012-2022 Jean-Francois Burnol.
+ Copyright (C) 2012-2023 Jean-Francois Burnol.
<jfbu at free dot fr>
ABSTRACT
@@ -157,6 +157,34 @@ etoc.sty, etoc.tex, etoc.pdf, etoc.dvi.
RECENT CHANGES
==============
+1.1a \[2023/01/14\]
+----------------------
+
+This version brings no new functionality, despite the number bump.
+It implements a complete rewrite of old legacy core internals.
+Formerly, etoc waited for
+[hyperref](https://ctan.org/pkg/hyperref)
+(if present) to have added hyperlinks via its patch to LaTeX's
+`\contentsline`. etoc examined the arguments of `\l@section` and
+other commands to extract hyperlinking information, if any.
+With this release etoc decides earlier according to
+[hyperref](https://ctan.org/pkg/hyperref)
+linktoc status whether section names and page numbers
+should be hyperlinked, and add links itself via `\hyperlink`.
+etoc is thus now immune to the details of how hyperref patches
+the `\contentsline` command, which is not executed anymore.
+Overall, the code is greatly simplified.
+
+`\etoclink` now wraps its argument in an hyperlink even if
+[hyperref](https://ctan.org/pkg/hyperref) is configured via
+`linktoc=none`. Formerly no hyperlink was added then.
+
+Deprecation of `\etocsavedsectiontocline` and similarly named
+commands. They are not needed as `\l@section` et al. are with this
+release left unmodified during the table of contents typesetting.
+
+LaTeX kernel from `2020/10/01` or later is required.
+
1.09i \[2022/11/21\]
--------------------
@@ -732,7 +760,8 @@ mechanism.
\usepackage{hyperref}% I had used [pdfencoding=pdfdoc] until 1.09f
\hypersetup{%
-linktoc=all,% why is the important stuff
+linktoc=all,%
+%%linktoc=none,% STRESS TEST OF 1.1a
%% bookmarksdepth=3,% (not needeed anymore now, 1.07g)
breaklinks=true,%
colorlinks,%
@@ -794,10 +823,12 @@ pdfstartview=FitH,%
% je mette un mécanisme plus robuste pour cette TOC.
% ATTENTION AUSSI AUX CODES VERBATIM
% màj pour 1.08k: \etocsavedsectiontocline etc...
+% màj pour 1.1-deev: emploi de \l@section etc...
\makeatletter
\newcommand*{\MyQuasiStandardTOC}[1]{%
\begingroup
- \etocsetstyle{section}{}
+ \etocsetstyle{section}
+ {}
{\ifnum\etocthenumber=4 % <- check this if new sections added to user manual
\etocsetstyle{subsection}
{\par\nopagebreak\begingroup
@@ -810,16 +841,21 @@ pdfstartview=FitH,%
{\etocname\ \textup{(\etocnumber)}}
{.\par\endgroup}%
\else
- \etocsetstyle{subsection}{}{}
- {\etocsavedsubsectiontocline{\numberline{\etocnumber}\etocname}{\etocpage}}{}%
- \fi}
- {\etocsavedsectiontocline
- {\numberline{{\color{cyan}\etocthenumber}}\etocname}{\etocpage}}
+ \etocsetstyle{subsection}
+ {}%
+ {}%
+ {\l@subsection{\numberline{\etocnumber}\etocname}{\etocpage}}%
+ {}%
+ \fi
+ }% prefix for section sets the style dynamically for subsections!
+ % direct usage of \l@subsection, \l@section allowed here since 1.1a
+ {\l@section{\numberline{{\color{cyan}\etocthenumber}}\etocname}{\etocpage}}%
{}%
\etocstandarddisplaystyle
\etocsetnexttocdepth {2}%
\tableofcontents #1
- \endgroup}
+ \endgroup
+}
\makeatother
%--------
% Statistics on sections and subsections in a part \thispartstats:
@@ -2836,12 +2872,23 @@ the document class defaults:
\item do either of the above only for some portions of the table of contents.
\end{enumerate}
-Here is how to proceed.
+One only needs%
+%
+\marginpar{\normalfont\footnotesize\itshape Modified at \texttt{1.1a}}
+%
+to use the \LaTeX{} standard \csa{l@chapter}, \csa{l@section},
+etc... commands inside the TOC line style definitions via \csb{etocsetstyle},
+re-constituting their arguments using \csb{etocname}, \csb{etocnumber},
+\csb{etocpage} as one wishes.
+
+The aliases \csb{etocsavedsectiontocline}, \csb{etocsavedchaptertocline}
+etc... are set to have the exact same meanings as the \LaTeX{} |\l@chapter|,
+|\l@section|, etc... commands each time a TOC is typeset. They are
+\fbox{DEPRECATED} as the latter \LaTeX\ commands are not modified (nor used) by
+\etoc since release |1.1a|.
-This has become easier since release |1.08k| as now \etoc preserves
-automatically in \csb{etocsavedsectiontocline}, \csb{etocsavedchaptertocline}
-etc... the meaning of the \LaTeX\ |\l@section|, |\l@chapter|, etc... macros as
-they were at the time the TOC is typeset.
+You should use directly |\l@chapter|, etc... within suitable
+|\makeatletter/\makeatother|. Here is an example.
\begin{filecontentshere}{etocsnippet-\snippetno.tex}
\makeatletter
@@ -2849,17 +2896,17 @@ they were at the time the TOC is typeset.
\begingroup
% for the book or article classes:
%\etocsetstyle{part}{}{}
- % {\etocsavedparttocline{\etocnumber\hspace{1em}\etocname}{\etocpage}}{}%
+ % {\l@part{\etocnumber\hspace{1em}\etocname}{\etocpage}}{}%
% for the scrbook or scrartcl classes:
\etocsetstyle{part}{}{}
- {\etocsavedparttocline{\numberline{\etocnumber}\etocname}{\etocpage}}{}%
+ {\l@part{\numberline{\etocnumber}\etocname}{\etocpage}}{}%
% following is identical in book/article/scrbook/scrartcl classes:
\etocsetstyle{chapter}{}{} %%% only for book and scrbook
- {\etocsavedchaptertocline{\numberline{\etocnumber}\etocname}{\etocpage}}{}%
+ {\l@chapter{\numberline{\etocnumber}\etocname}{\etocpage}}{}%
\etocsetstyle{section}{}{}
- {\etocsavedsectiontocline{\numberline{\etocnumber}\etocname}{\etocpage}}{}%
+ {\l@section{\numberline{\etocnumber}\etocname}{\etocpage}}{}%
\etocsetstyle{subsection}{}{}
- {\etocsavedsubsectiontocline{\numberline{\etocnumber}\etocname}{\etocpage}}{}%
+ {\l@subsection{\numberline{\etocnumber}\etocname}{\etocpage}}{}%
% etc... if further sectioning units are used
\etocstandarddisplaystyle % this is for the title, page-marks, etc...
\tableofcontents
@@ -2897,39 +2944,51 @@ the subsections as in the default, \emph{except} for those of one specific
section, for which the layout is completely modified:
\MyQuasiStandardTOC{\ref{toc:overview}}
\bigskip
-This example only has sections and subsections, and the code used in \csa{MyStandardTOC} was:
+This example only has sections and subsections (assumed to be numbered), and
+the code used was:
\begin{filecontentshere}{etocsnippet-\snippetno.tex}
-\etocsetstyle{section}{}
- {\ifnum\etocthenumber=4
+\makeatletter
+\newcommand*{\MyQuasiStandardTOC}[1]{%
+ \begingroup
+ \etocsetstyle{section}
+ {}
+ {\ifnum\etocthenumber=4
\etocsetstyle{subsection}
{\par\nopagebreak\begingroup
- \leftskip1.5em \rightskip\@tocrmarg \parfillskip\@flushglue
- \parindent 0pt \normalfont\normalsize\rmfamily\itshape
- % \columnsep1em
- % \begin{minipage}{\dimexpr\linewidth-\leftskip-\rightskip\relax}%
- % \begin{multicols}{2}%
+ \leftskip1.5em \rightskip\@tocrmarg
+ \parfillskip \@flushglue
+ \parindent 0pt
+ \normalfont\normalsize\rmfamily\itshape
\etocskipfirstprefix}
{\allowbreak\,--\,}
{\etocname\ \textup{(\etocnumber)}}
{.\par\endgroup}%
- % {.\par\end{multicols}\end{minipage}\par\endgroup}%
- \else
- \etocsetstyle{subsection}
- {}{}
- {\etocsavedsubsectiontocline{\numberline{\etocnumber}\etocname}{\etocpage}}
- {}%
- \fi}
- {\etocsavedsectiontocline{\numberline{{\color{cyan}\etocthenumber}}\etocname}{\etocpage}}
- {}%
+ \else
+ \etocsetstyle{subsection}
+ {}%
+ {}%
+ {\l@subsection{\numberline{\etocnumber}\etocname}{\etocpage}}%
+ {}%
+ \fi
+ }% prefix for section sets the style dynamically for subsections!
+ {\l@section{\numberline{{\color{cyan}\etocthenumber}}\etocname}{\etocpage}}%
+ {}%
+ \etocstandarddisplaystyle
+ \etocsetnexttocdepth {2}%
+ \tableofcontents #1
+ \endgroup
+}
+\makeatother
\end{filecontentshere}
\marginattach{-B}
-Notice the page head-mark added by this standard TOC. Sections and subsections
-are printed exactly as in the default (except for the subsections of one
-specific user-chosen section and except for the color of the section numbers),
-with no need to specify explicitely any length, font or other formatting
-instructions. But we had to examine the \ctanpkg{scrartcl} sources to determine what to
-use for \csa{leftskip} and \csa{rightskip} for our customized section
-entries.
+
+The page heading (on the page where this TOC appears) may have been modified
+as is expected from usage of \csb{etocstandarddisplaystyle} in the code.
+Sections and subsections are printed exactly as in the default, \emph{except}
+for the subsections of one specific user-chosen section and except for the
+color of the section numbers. We had to examine the \ctanpkg{scrartcl} sources
+to determine what to use for \csa{leftskip} and \csa{rightskip} for our
+customized section entry (the one wih number 4).
\section{Emulating the book class}\label{sec:thirdexample}
@@ -4429,11 +4488,14 @@ and page number of the corresponding toc entry. If package \ctanpkg{hyperref} is
active in the document and has added hyperlinks to the TOC data, then these
links are kept in the commands \csb{etocname}, \csb{etocnumber} and
\csb{etocpage} (this last one will have a link only if \ctanpkg{hyperref} was passed
-option \emph{linktoc=all}.)%
+either option \emph{linktoc=all} or option \emph{linktoc=page}.)%
%
-\footnote{In case of \emph{linktoc=page}, only \csb{etocpage} is an hyperlink;
-see the discussion of \csb{etoclink} on how to create (possibly also with the
-\emph{name} or \emph{number}) hyperlinks with the same target.}
+\footnote{As expected, in case of \emph{linktoc=page}, only \csb{etocpage} is
+an hyperlink, not \csb{etocname} nor \csb{etocnumber}. See \csb{etoclink} on
+how to create hyperlinks with the entry target.}
+%
+In accordance with the \ctanpkg{hyperref} native behavior, no
+link gets incorporated into \csb{etocpage} if the page number is empty.
\section{The \csbhyp{etocskipfirstprefix} and \csbhyp{etociffirst} commands}
\label{etocskipfirstprefix}
@@ -4541,26 +4603,27 @@ preceded by |\protect|.
The command \csb{etoclink}\marg{text} can be used in the line style
specifications in a manner analogous to \csb{etocname}, \csb{etocnumber} and
-\csb{etocpage}. It creates a link (if such a link was added by \ctanpkg{hyperref} to
-the |.toc| file entry) whose target is the corresponding document unit and
+\csb{etocpage}. It creates a link (if \ctanpkg{hyperref} is present%
+%
+\footnote{Prior to \texttt{1.1a}, no such link was added if the \texttt{.toc}
+ file entry was encountered
+ with \ctanpkg{hyperref}'s option \texttt{linktoc} set to \texttt{none}.})
+%
+whose target is the corresponding document unit and
whose name is the given \meta{text} mandatory argument.
Hence |\etoclink{\etocthename}| is under default conditions of \ctanpkg{hyperref} like
-the original |\etocname|, because the latter is already hyperlinked. Under
+the original \csb{etocname}, because the latter is already hyperlinked. Under
\emph{linktoc=page} context |\etoclink{\etocthename}| adds the hyperlink which
is missing from \csb{etocname}. Similarly under the default \ctanpkg{hyperref}
-condition (\emph{linktoc=section}) \csb{etocpage} is not an hyperlink, but one
+condition (i.e.\@ \emph{linktoc=section}) \csb{etocpage} is not an hyperlink, but one
can use |\etoclink{\etocthepage}|.
-If \csa{hypersetup} is used with \emph{linktoc=none} then no miracle happens,
-\csb{etoclink} does nothing special and none of \csb{etocname},
-\csb{etocnumber} and \csb{etocpage} are links.
-
-
+The command \csb{etoclink} is robust.
-The command \csb{etoclink} is robust. Since |etoc 1.08j| it contains the link
-destination in an already expanded form, so for example can be used even after
-a |&| in a tabular construction, if \csb{etocglobaldefs} was issued.
+% Since |etoc 1.08j| it contains the link
+% destination in an already expanded form, so for example can be used even after
+% a |&| in a tabular construction, if \csb{etocglobaldefs} was issued.
% Sadly the [] syntax influences both the header and the entry in the TOC
@@ -4592,25 +4655,43 @@ a |&| in a tabular construction, if \csb{etocglobaldefs} was issued.
\makeatletter\scr@activate@xsection{0}\makeatother
-These macros are fragile and contain the link destination in already expanded
-form. So their meaning can be stored for delayed usage. For example this is
-done here when doing the \hyperref[tocastree]{examples with trees}.
+The meanings of these commands
+can be stored for delayed usage. For example this is
+done in the \hyperref[tocastree]{examples with trees}.
+
+Notice though the following facts:
+\begin{itemize}[noitemsep]
+\item \csb{etocthelinkednumber} and \csb{etocthelinkedname} are hyperlinks
+ only if \ctanpkg{hyperref} was configured via |linktoc=all| or
+ |linktoc=section| (the default),
+\item \csb{etocthelinkedpage} is an hyperlink only if \ctanpkg{hyperref} was
+ configured via |linktoc=all| or |linktoc=page|. \emph{Furthermore}, the
+ page number must not be empty: if it is empty no hyperlink is added (this
+ matches the \ctanpkg{hyperref} behavior when \etoc is not loaded).
+\end{itemize}
-Notice though that \csb{etocthelinkednumber} and \csb{etocthelinkedname} are
-hyperlinks only if \ctanpkg{hyperref} was configured to let the heading name be
-linked (this is the default). So under \ctanpkg{hyperref} option \emph{linktoc=page},
-both \csb{etocthelinkednumber} and \csb{etocthelinkedname} are no different
-from respectively \csb{etocthenumber} and \csb{etocthename}.
+It may be a bit strange that the link is not sytematically added despite the
+command names, but this is legacy behavior of the package. It is coherent
+with the commands \csb{etocname}, \csb{etocnumber}, and \csb{etocpage} being
+their robust variants.
-For this reason, a further macro is provided: \csb{etocthelink} will fetch
-the link destination if available be it from the name or from the page number.
-Then |\etocthelink{foo}| hyperlinks an arbitrary text to the target destination
-inside the produced PDF.
-All these commands are fragile. The \csb{etocname}, \csb{etocnumber},
-\csb{etocpage} and \csb{etoclink} are simply their robust variants. They too
-contain the hyperlink destination in already expanded form since |1.08a| for
-the first three, since |1.08j| for \csb{etoclink}.
+A further command is provided: \csb{etocthelink}, which wraps%
+%
+\footnote{Prior to \texttt{1.1a}, there was a link added only if \ctanpkg{hyperref} option \texttt{linktoc} was not \texttt{none}.}
+%
+an hyperlink around its argument: |\etocthelink|\marg{foo} hyperlinks an
+arbitrary text \meta{foo} to the target sectioning unit in the document.
+The command \csb{etoclink} is its robust variant.
+
+Thus, \csb{etocthelinkednumber} is essentially
+\csb{etocthelink}|{|\csb{etocthenumber}|}| if |linktoc| is |all| or the
+default |section|, else it is an alias to \csb{etocthenumber}. Similarly for
+the other two.
+
+% They too
+% contain the hyperlink destination in already expanded form since |1.08a| for
+% the first three, since |1.08j| for \csb{etoclink}.
Obsolete example of \begingroup
\etocsetstyle {section}
@@ -4676,17 +4757,25 @@ Example of
\etocinline\tableofcontents \ref{toc:globalcmds}
\endgroup
-\section{The \csbhyp{etocsavedsectiontocline}, etc... commands.}
+\section{DEPRECATED \csbhyp{etocsavedsectiontocline}, etc... commands.}
\label{etocsavedsectiontocline}
\label{etocsavedchaptertocline}
-Since |1.08k| \etoc preserves
-automatically in \csb{etocsavedsectiontocline}, \csb{etocsavedchaptertocline}
-etc... the meaning of the \LaTeX\ |\l@section|, |\l@chapter|, etc... in force
-at the time each \csb{tableofcontents} or \csb{localtableofcontents}
-macro is executed.
+Prior to |1.1a|, \etoc modified (locally) at each \csb{tableofcontents} or
+\csb{localtableofcontents} encountered the meaning of the \LaTeX\ internal
+commands |\l@part|, |\l@chapter|, |\l@section|, etc... It stored (since |1.08k|)
+their original meanings (at the time of the encountered TOC), into
+\csb{etocsavedchaptertocline}, \csb{etocsavedsectiontocline}, etc... commands,
+which allowed to do some simple changes via \etoc of the rendering via the
+technique explained in \autoref{sec:anothercompat}.
-See \autoref{sec:anothercompat} for usage.
+This is all obsolete at |1.1a| because \etoc does not modify anymore (even
+locally) |\l@part|, |\l@chapter|, |\l@section|, etc... so they can be used
+directly in the context of the techniques of \autoref{sec:anothercompat}.
+
+Thus \csb{etocsavedchaptertocline}, \csb{etocsavedsectiontocline},
+etc... raise some warning that they will be removed at some later release and
+that you should stop using them.
\section{The \csbhyp{etocsetlevel} command}
\label{etocsetlevel}
@@ -4700,7 +4789,7 @@ command with \csb{etocsetlevel}. For example:
\etocsetlevel{atom}{2}
\etocsetlevel{nucleus}{3}
\end{verbatim}
-In compatibility mode, it will be assumed that the macros |\l@cell|,
+In compatibility mode, it will be assumed that the commands |\l@cell|,
|\l@molecule|, ..., have been defined somewhere either by the user or a class:
doing only |\etocsetlevel| is not enough for the corresponding level to work
out-of-the-box in compatibility mode.
@@ -6240,14 +6329,16 @@ updated since.
\label{etocscrbookstyle}
\label{etocscrreprtstyle}
-Not really tested. But nominally supported, as the code contains this
+Not really tested... well, tested by this document with its dozens of \etoc
+TOCs and which uses \ctanpkg{scrartcl}! The package code contains
\begin{verbatim}
\@ifclassloaded{scrartcl}
{\renewcommand*\etocstandarddisplaystyle{\etocscrartclstyle}}{}
\end{verbatim}
-and \cs{etocscrartclstyle} tries to emulate the global display style of the
-\cs{tableofcontents} command with the class \ctanpkg{scrartcl}. It was last updated
-at |1.09f|.
+with \cs{etocscrartclstyle} trying to emulate the global display style of the
+\cs{tableofcontents} within the class \ctanpkg{scrartcl}. Thus \etoc is ready
+for basic usage in compatibility mode (last updated
+at |1.09f|).
\subsection{Compatibility with the \ctanpkg{memoir} class}
\label{ssec:memoir}
@@ -6411,17 +6502,25 @@ Unknown. (not tested a.t.t.o.w).
\section{\TeX nical matters}
The \csb{etocname}, \csb{etocnumber}, \csb{etocpage} commands are protected
-against premature expansion. They contain suitable \ctanpkg{hyperref} links if package
-\ctanpkg{hyperref} is loaded and active for the TOC. The commands \csb{etoclink} and
-\csb{etocifnumbered} are also protected against premature expansion. Also
-\csb{etociffirst} and \csb{etoctoccontentsline}.
+against premature expansion. They are hyperlinks if package \ctanpkg{hyperref}
+is loaded and depending on its option |linktoc| value; under the default
+|linktoc=section|, only name and number are hyperlinked, not the page
+number.
On the other hand \csb{etocthename}, \csb{etocthenumber}, \csb{etocthepage}
are \emph{not} protected against expansion. And neither are
\csb{etocthelinkedname}, \csb{etocthelinkednumber}, \csb{etocthelinkedpage}.
-The latter contain hyperlink data, if present in the |.toc| file.
+The latter three are hyperlinks only if \ctanpkg{hyperref} |linktoc| option
+has the suitable value: |section| (which is default) or |all| for name and
+number to be hyperlinks, |page| or |all| for the page number (which must not
+be empty). The commands \csb{etocname}, \csb{etocnumber}, and \csb{etocpage}
+are their robust variants.
+
+The commands \csb{etoclink} and \csb{etocifnumbered} are also
+protected against premature expansion. Also \csb{etociffirst} and
+\csb{etoctoccontentsline}.
-The commands such as \csb{etocsetstyle}, \csb{etocsetlevel},
+Commands such as \csb{etocsetstyle}, \csb{etocsetlevel},
\csb{etocsettocstyle}, \csb{etocmulticolstyle},
\csb{etocruledstyle}, \csb{etocframedstyle} obey \LaTeX{}'s
groups. All TOCs are typeset inside groups.
@@ -6545,6 +6644,8 @@ version is \texttt{\etocpkgversion}, of \texttt{\etocpkgdate}.
\def\1{\vskip\baselineskip 1}% ajouté 2015/05/09; faudra trouver mieux.
% 2022/08/26, stop using \frenchspacing
% \frenchspacing
+% 2023/01/14
+ \def\2##1.{\ctanpkg{##1}}%
% 2022/08/26. I realized that rendering was broken, and finally identified
% the bad commit to be in LaTeX 2022/06/01 release. Its \obeyspaces not only
% makes the ascii32 \active but it also redefines it! Solution could be to
@@ -6576,7 +6677,32 @@ version is \texttt{\etocpkgversion}, of \texttt{\etocpkgdate}.
\def {\ifvmode\advance\jfverbadim.5em\relax\else\expandafter\jfverbaspace\fi}}\x
\makeatother
\begin{jfverbatim}
-1.09i [2022/11/21]^
+1.1a [2023/01/14]^
+
+ This version brings no new functionality, despite the number bump.
+ It implements a complete rewrite of old legacy core internals.
+ Formerly, etoc waited for ~2hyperref. (if present) to have added
+ hyperlinks via its patch to LaTeX's \contentsline.
+ etoc examined the arguments of \l@section and other commands to extract
+ hyperlinking information, if any.
+ With this release etoc decides earlier according to
+ ~2hyperref. linktoc status whether section names and page numbers
+ should be hyperlinked, and add links itself via \hyperlink. etoc
+ is thus now immune to the details of how ~2hyperref. patches the
+ \contentsline command, which is not executed anymore.
+ Overall, the code is greatly simplified.
+
+ \etoclink now wraps its argument in an hyperlink even if
+ ~2hyperref. is configured via
+ linktoc=none. Formerly no hyperlink was added then.
+
+ Deprecation of \etocsavedsectiontocline and similarly named
+ commands. They are not needed as \l@section et al. are with this
+ release left unmodified during the table of contents typesetting.
+
+ ~LaTeX kernel from 2020/10/01 or later is required.
+
+~1.09i [2022/11/21]^
Fix bug showing when a document uses both \etocchecksemptiness and
\etocsetlocaltop.toc: the start and finish parts of some levels were
@@ -7423,54 +7549,74 @@ the syntax highlighting automatization.
\fi }%
}
-Warning: the author's brain reboots frequently, and more and more often.
-Hence most comments are not for the general reader, they are for the author
-himself and they document more the history of the package than its actual
-functioning, because the historical evolution is the way the author can
-remember and understand the code. There are a few precious isolated
-paragraphs which may prove vaguely useful to people who are not the author.
+% Warning: the author's brain reboots frequently, and more and more often.
+% Hence most comments are not for the general reader, they are for the author
+% himself and they document more the history of the package than its actual
+% functioning, because the historical evolution is the way the author can
+% remember and understand the code. There are a few precious isolated
+% paragraphs which may prove vaguely useful to people who are not the author.
-\etoc,\normalmarginpar\marginpar{\footnotesize\rmfamily\itshape\RaggedRight
+Apology: the code comments served mainly as a record for the author's benefit
+of the historical evolution of the package and rarely as a description of what
+the macros do. At |1.1a| I have removed almost all code comments which had
+accumulated as in a palimpsest. As a result, very few comments actually
+remain.
+
+
+\etoc,%
+%
+\normalmarginpar\marginpar{\footnotesize\rmfamily\itshape\RaggedRight
This paragraph and the next were added very late in the history of the
- package, at 1.09h.\par} when not left in compatibility mode, hijacks the
-\csa{contentsline} expansion so as to not execute \csa{l@chapter},
-\csa{l@section} etc..., but use \csbc{Etoc@lxyz}, which will parse the data and
-extract from it the name, number and page number. Indeed, for legacy reasons
-the \LaTeX{} |.toc| data is \emph{not structured}, but already to some extent
-oriented towards typesetting tasks, in an already pre-decided orderly manner.
-This part of \etoc maneuvers is fragile as 1) it requires the |.toc| file to
-be built from \csa{contentsline} entries, and 2) and relies on
-\csa{contentsline} to hand over the job to \csa{l@chapter}, \csa{l@section},
-etc... macros. Of course \etoc can be easily broken if changes happen to how
-data is stored there, in particular to how the text (which in \etoc lingua is
-called the \emph{name}) and the number (this one is called by us also
-\emph{number}) are put together. Things would have been much easier for \etoc
-in 2012 if the \csa{contentsline} arguments separated text (name) and number;
-unfortunately some mix is prepared, which may depend on the document class
-also, and typically handles \csa{part} levels very differently (and with more
-hard-coded stuff). Anyway, fortunately upstream changes happen rarely. The
-|7.00u| release of \ctanpkg{hyperref} was such an instance.
+ package, at 1.09h.\par}
+%
+when not left in compatibility mode, hijacks the \csa{contentsline} expansion
+so as to not execute \csa{l@chapter}, \csa{l@section} etc..., but rather to
+parse the date and extract from it the \emph{name}, \emph{number}, and
+\emph{page number}.
+%
+The \LaTeX{} |.toc| data
+is \emph{not structured}, but contains already typesetting mark-up.
+The
+\etoc maneuvers to disentangle \emph{name} and \emph{number} are somewhat
+fragile as they expect the |.toc| file to contain the
+\csa{contentsline} arguments to be arranged in a certain manner.%
+%
+\normalmarginpar\marginpar{\footnotesize\rmfamily\itshape\RaggedRight
+Prior to \texttt{1.1a}, \etoc aliased \csa{l@chapter}, \csa{l@section},
+etc... (at the time of TOC typesetting only) to its own \csbc{Etoc@lxyz} in order to leave time to
+\ctanpkg{hyperref} to add its marks-up. Thus the disentangling was
+more complex than it is now. With \texttt{1.1a}, \etoc leaves
+\csa{l@chapter} etc... unmodified and inserts itself hyperlinks via \csa{hyperlink}.}
+%
+Of course \etoc can be easily broken if changes happen to how data is stored
+there. Things would have been much easier for \etoc in 2012 if the
+\csa{contentsline} arguments had considered the section titles (aka
+\emph{name} for \etoc) and their numbers (which are not numbers in the sense
+of things with which \TeX\ can compute, in general) separately, each providing
+an argument to \csa{contentsline}. But some mix is prepared, which may depend
+on the document class also, and besides usually handles \csa{part} levels very
+differently. Fortunately upstream changes happen rarely.
The other core part of \etoc present from day one of the package is that it
-creates (but only virtually, and dynamically, not statically) a tree-like
-structure of the sectioning levels present in the |.toc| file. It could be
-fun to actually implement officially such a tree (where the children of a
-sectioning title are the sectioning levels at a greater depth such as
-subsections versus a section). Let us recall that \LaTeX{} provides zero
-means to know from a subsection for example, what is the title of the section
-containing it, or chapter, or part. To do this one has to create a really
-structured document which neither core \LaTeX{} nor the main document classes
-do. This remark was given for document body, but it also applies to |.toc|
-data. But \etoc adds at least some kind of follow-up to the successive
-encountered sectioning titles, and is thus able, to ``on-the-fly'' add some
-kind of structure and follow the succession of levels. Ultimately this is why
-the \csbc{etocsetstyle} offers \marg{start} and \marg{finish} parts in
-additions to \marg{contents} (which I divided into a \marg{prefix} and a
-\marg{contents}). At some point one could imagine that a really
-\emph{structured} document (in opposition to what core \LaTeX{} from thirty
-years ago up to nowadays realizes) would store in the |.toc| data directly a
-tree structure, where each node would have attributes name, number, page
-number, completely separated from any typesetting. Once this exists then
+creates a tree-like structure of the sectioning levels present in the |.toc|
+file. But this is purely virtual, and handled via a notion of ``level'' and
+\TeX\ conditionals. It could be fun to implement officially such a tree
+(where the children of a sectioning title are the sectioning levels at a
+greater depth such as subsections versus a section). Let us recall that
+\LaTeX{} provides zero means to know from a subsection for example, what is
+the title of the section containing it, or chapter, or part. To do this one
+has to create a really structured document which neither core \LaTeX{} nor the
+main document classes do. This remark was given for document body, but it
+also applies to the |.toc| data. But \etoc adds at least some kind of
+follow-up to the successive encountered sectioning titles, and is thus able,
+to ``on-the-fly'' add some kind of structure and follow the chaining of
+levels. Ultimately this is why the \csbc{etocsetstyle} offers \marg{start}
+and \marg{finish} parts in additions to \marg{contents} (which I divided into
+a \marg{prefix} and a \marg{contents}). At some point one could imagine that
+a really \emph{structured} document (in opposition to what core \LaTeX{} from
+thirty years ago up to nowadays realizes) would store in the |.toc| data
+directly a tree structure, where each node would have attributes name, number,
+page number, completely separated from any typesetting. Once this exists then
basically \etoc disappears. In brief, once \etoc ideas will have permeated
the society, it will disappear as its was born only to palliate the absence of
real structure in the |.toc| file (which is sort of inherited from the absence
@@ -7517,28 +7663,28 @@ of real structure in a \LaTeX{} document body).
%
%</none>
%<*package>
+% |1.1a| implements a radical change to all internals for compatibility
+% with (attow future) \ctanpkg{hyperref}. In order to facilitate this
+% overhaul, we require \LaTeX{} 2020/10/01 for the fourth argument to
+% \cs{contentsline} lines in the |.toc| file to be always present.
% \begin{macrocode}
-\NeedsTeXFormat{LaTeX2e}
+\NeedsTeXFormat{LaTeX2e}[2020/10/01]
\ProvidesPackage{etoc}
-[2022/11/21 v1.09i Completely customisable TOCs (JFB)]
+[2023/01/14 v1.1a Completely customisable TOCs (JFB)]
\RequirePackage{multicol}
\DeclareOption*{\PackageWarning{etoc}{Option `\CurrentOption' is unknown.}}
\ProcessOptions\relax
-% \end{macrocode}
-% |1.08| suppresses |\ifEtoc@part| and defines |\ifEtoc@skipprefix|. It
-% also defines \csbc{etocglobaldefs}, \csbc{etoclocaldefs} and \csbc{Etoc@global}.
-% \begin{macrocode}
\newtoks\Etoc@toctoks
\def\Etoc@par{\par}
\def\etocinline{\def\Etoc@par{}}
\let\etocnopar\etocinline
-\def\etocdisplay{\def\Etoc@par{\par}}% 1.07m 2015/01/23
+\def\etocdisplay{\def\Etoc@par{\par}}
% \end{macrocode}
% \csbc{etocglobaldefs} should be used only for special things such as TOC as a
% table; it should be put in a group to limit its scope. If used in the
% preamble, it must come \emph{after} \ctanpkg{tableof} if the latter is loaded too.
% \begin{macrocode}
-\let\Etoc@global\@empty % 1.08 2015/03/10
+\let\Etoc@global\@empty
\def\etocglobaldefs{\let\Etoc@global\global\let\tof@global\global}
\def\etoclocaldefs {\let\Etoc@global\@empty\let\tof@global\@empty}
\newif\ifEtoc@jj % book
@@ -7551,38 +7697,26 @@ of real structure in a \LaTeX{} document body).
\newif\ifEtoc@v % subparagraph
\newif\ifEtoc@number
\newif\ifEtoc@hyperref
-\newif\ifEtoc@parskip % 1.07d
+\newif\ifEtoc@parskip
\newif\ifEtoc@tocwithid
\newif\ifEtoc@standard
-\newif\ifEtoc@skipprefix % 1.08
-\newif\ifEtoc@isfirst % 1.08
+\newif\ifEtoc@skipprefix
+\newif\ifEtoc@isfirst
\newif\ifEtoc@localtoc
\newif\ifEtoc@skipthisone
\newif\ifEtoc@stoptoc
\newif\ifEtoc@notactive
\newif\ifEtoc@mustclosegroup
-\newif\ifEtoc@emptytoc % 1.08e
-\newif\ifEtoc@checksemptiness % 1.08e. Default is 'no checks'.
+\newif\ifEtoc@emptytoc
+\newif\ifEtoc@checksemptiness
\def\etocchecksemptiness {\Etoc@checksemptinesstrue }
-\def\etocdoesnotcheckemptiness {\Etoc@checksemptinessfalse }% 1.08i
-\newif\ifEtoc@notocifnotoc % 1.08e
+\def\etocdoesnotcheckemptiness {\Etoc@checksemptinessfalse }
+\newif\ifEtoc@notocifnotoc
\def\etocnotocifnotoc {\Etoc@checksemptinesstrue\Etoc@notocifnotoctrue }
\def\etoc@{\etoc@}
-\newif\ifEtoc@bracedname % 1.08p
-% \end{macrocode}
-% |1.07g| uses a second counter; this could be avoided, but ok, let's not be
-% that strict.
-% \begin{macrocode}
+\newif\ifEtoc@bracedname
\newcounter{etoc@tocid}
-\newcounter{etoc@tocdepth}% 1.07g
-% \end{macrocode}
-% |2015/03/08| Why do I use |jj| in the flags and |minustwo| here? and
-% is there an entity full of forgiveness out there to save my soul even
-% if taking into consideration my use of single and doubled |@|'s ?
-% Although I desperately need to waste time I miraculously decided not
-% to change everything today and thus the somewhat dispendious set-up
-% below is maintained.
-% \begin{macrocode}
+\newcounter{etoc@tocdepth}
\@ifclassloaded{memoir}{\def\Etoc@minf{-\thr@@}}{\def\Etoc@minf{-\tw@}}
\def\Etoc@@minustwo@@{-\tw@}
\let\Etoc@@minusone@@\m@ne
@@ -7601,9 +7735,6 @@ of real structure in a \LaTeX{} document body).
\def\Etoc@@three@ {three}
\def\Etoc@@four@ {four}
\def\Etoc@@five@ {five}
-% \end{macrocode}
-% |1.07g|.
-% \begin{macrocode}
\expandafter\def\csname Etoc@-3@@\endcsname {-\thr@@}
\expandafter\let\csname Etoc@-2@@\endcsname \Etoc@@minustwo@@
\expandafter\let\csname Etoc@-1@@\endcsname \Etoc@@minusone@@
@@ -7617,17 +7748,9 @@ of real structure in a \LaTeX{} document body).
\let\Etoc@all@@ \Etoc@@five@@
\let\Etoc@none@@ \Etoc@minf
% \end{macrocode}
-% Versions earlier than |1.08| did \csbc{Etoc@newlevel} in a quite
-% embarrassing way with an |\edef|.
-%
-% |1.08f|'s \csbc{etocsetlevel} avoids multiple insertions of the same level
-% in the \csbc{Etoc@levellist} list.
-%
-% |1.08k| modified \csbc{Etoc@newlevel}: formerly a token |\l@#1| was stored in
-% place of braced name |{#1}|. This changed is to facilitate creation of the
-% \csa{etocsavedsectiontocline} etc... type macros later on, at each TOC. But the
-% stored |#1| is not expanded immediately, although it is in other parts of
-% \csbc{etocsetlevel}, which may cause timing problems if |#1| is a macro.
+% At |1.1a|, the \csa{etocsavedsectiontocline} and cousins are deprecated and
+% when they will be removed, \csbc{Etoc@levelist} will be too as it now serves
+% only for their definitions.
% \begin{macrocode}
\let\Etoc@levellist\@empty
\def\Etoc@newlevel #1{\expandafter\def\expandafter\Etoc@levellist\expandafter
@@ -7680,104 +7803,24 @@ of real structure in a \LaTeX{} document body).
\etocsetlevel{paragraph}{4}
\etocsetlevel{subparagraph}{5}
% \end{macrocode}
-% The first two parameters of \csbc{Etoc@et@hop} are exchanged in |1.08|
-% compared to earlier versions; this is in relation to changes done in
-% \csbc{Etoc@etoccontentsline}.
-%
-% |1.08i 2016/09/29| has a |fourorthree| rather than as formerly a |sixorfive|.
-%
-% \LaTeX\ of November 2021 will have its |\contentsline| always grab four
-% arguments. So we must adjust \csbc{Etoc@et@hop} et al., else usage of \etoc
-% without hyperref will be broken. Done at |1.09e 2021/09/23|.
-%
-%^^A Side note to myself: I see there is now a |\@gobblethree| in latex.ltx and
-%^^A I wonder since when. No time to lose on checking that.
-%^^A Answer: 2020-02-27 ltdefns.dtx 1.5g |\@gobblethree|: Macro added
-%
% |1.09g| adapts to \ctanpkg{hyperref} depending on
% whether the latter is at |7.00u| or earlier. Indeed internal changes to
% \ctanpkg{hyperref} at |7.00u| broke \etoc. Thanks to Denis~\textsc{Bitouzé} for
% reporting the issue.
+%
+% But |1.1a| radically simplifies matters at \etoc core, and with it the
+% breakage induced from \ctanpkg{hyperref} |7.00u| would not have happened.
% \begin{macrocode}
\AtBeginDocument{%
\@ifpackageloaded{parskip}{\Etoc@parskiptrue}{}%
-\@ifpackageloaded{hyperref}{%
- \Etoc@hyperreftrue
- \@ifpackagelater{hyperref}{2022/11/13}%
- {%
- \def\Etoc@getthepage {%
- \ifx\Hy@toclinkstart\Etoc@getthepage@token
- \expandafter\expandafter\expandafter\Etoc@getthepage@hyp
- \else
- \expandafter\Etoc@getthepage@nohyp
- \fi}%
- \def\Etoc@getnb@a {%
- \ifx\Hy@toclinkstart\Etoc@getnb@token
- \expandafter\expandafter\expandafter\Etoc@getnb@hyp
- \else
- \expandafter\Etoc@getnb@nohyp
- \fi}%
- \def\Etoc@getit {%
- \ifx\Hy@toclinkstart\Etoc@getit@token
- \expandafter\expandafter\expandafter\Etoc@getit@hyp
- \else
- \expandafter\Etoc@getit@nohyp
- \fi}%
- }%
- {%
- \def\Etoc@getthepage {%
- \ifx\hyper@linkstart\Etoc@getthepage@token
- \expandafter\Etoc@getthepage@hyp
- \else
- \expandafter\Etoc@getthepage@nohyp
- \fi}%
- \def\Etoc@getnb@a {%
- \ifx\hyper@linkstart\Etoc@getnb@token
- \expandafter\Etoc@getnb@hyp
- \else
- \expandafter\Etoc@getnb@nohyp
- \fi}%
- \def\Etoc@getit {%
- \ifx\hyper@linkstart\Etoc@getit@token
- \expandafter\Etoc@getit@hyp
- \else
- \expandafter\Etoc@getit@nohyp
- \fi}%
- }%
- \def\Etoc@et@hop#1#2#3#4#5{#2{#3}{#4}{#5}#1}%
- \let\Etoc@gobblefourorthree\@gobblefour
- }%
- {%
- \let\Etoc@getthepage\Etoc@getthepage@nohyp
- \let\Etoc@getnb@a\Etoc@getnb@nohyp
- \let\Etoc@getit \Etoc@getit@nohyp
- \def\Etoc@et@hop#1#2#3#4{#2{#3}{#4}#1}%
- \long\def\Etoc@gobblefourorthree#1#2#3{}%
- }%
-% \end{macrocode}
-% Until |1.09i| the date threshold was erroneously set to 2021/11/15.
-% In practice this meant that for some version of \LaTeX{} \etoc was
-% a bit sloppy and left some empty brace pairs |{}|, which however
-% could possibly impact I think only TOCs executed in math mode... not
-% very frequent!
-% \begin{macrocode}
-\@ifl@t@r\fmtversion{2020/10/01}%
- {%
- \def\Etoc@et@hop#1#2#3#4#5{#2{#3}{#4}{#5}#1}%
- \let\Etoc@gobblefourorthree\@gobblefour
- }%
- {}%
+\@ifpackageloaded{hyperref}{\Etoc@hyperreftrue}{}%
}
% \end{macrocode}
% |2015/03/08| One has to be careful about the |Etoc@end@<level>| user
% defined macros which may close groups. This has always been the reason
% for the |\global|'s here and elsewhere.
%
-% |1.08| uses \csbc{Etoc@level} rather than a |#1| which used to be anyhow always
-% the |\Etoc@tmp|. Now \csbc{Etoc@level} is what was called formerly |\Etoc@tmp|
-% in \csbc{Etoc@etoccontentsline}.
-%
-% Attention that \csbc{Etoc@setflags} must not modify |\Etoc@next|!
+% Attention that \csbc{Etoc@setflags} must not modify \csa{Etoc@next}!
% \begin{macrocode}
\def\Etoc@setflags {%
\ifcase \Etoc@level
@@ -7823,12 +7866,10 @@ of real structure in a \LaTeX{} document body).
\fi
}
% \end{macrocode}
-% |1.08| This was originally in \csbc{Etoc@etoccontentsline}, intermixed
-% with the definitions of \csbc{Etoc@contents} and \csbc{Etoc@prefix}. Separated
-% here for clarity of code. One has to be careful that this may close
+% One has to be careful that this may close
% groups. The conditionals are all global. The \csbc{Etoc@level} has been
% |\global\let| to a |\chardef| variable. The final |\else| of the
-% |\ifcase| assumes none of the |\Etoc@end@..| routines modify it,
+% |\ifcase| assumes none of the \csa{Etoc@end@..} routines modify it,
% naturally.
% \begin{macrocode}
\def\Etoc@doends {%
@@ -7866,25 +7907,11 @@ of real structure in a \LaTeX{} document body).
\fi
}
% \end{macrocode}
-% |1.08| the |\Etoc@next| will (possibly) execute the |begin| code,
-% \emph{before} \csbc{Etoc@contents} and \csbc{Etoc@prefix} get defined,
-% contrarily to what I did in earlier versions. I still reset the flags
-% before execution of the |begin| codes (although the flags are not
-% supposed to be used therein anyhow).
-%
-% Also the \meta{begin} code does \csa{Etoc@isfirsttrue}.
-%
-% |1.08k| This was originally in \csbc{Etoc@etoccontentsline}. Extracted for
-% re-use by \csbc{etocsetlocaltop.toc}. Calls \csbc{Etoc@setflags} which must not
-% modify |\Etoc@next|.
+% Calls \csbc{Etoc@setflags} which must not modify \csa{Etoc@next}.
% \begin{macrocode}
\def\Etoc@dobegins{%
\let\Etoc@next\@empty
\Etoc@global\Etoc@isfirstfalse
-% \end{macrocode}
-% |2015/03/08| If my naming scheme had not been so baroque, I could easily do
-% things in a more concise way here...
-% \begin{macrocode}
\ifcase\Etoc@level
\ifEtoc@
\else
@@ -7931,79 +7958,9 @@ of real structure in a \LaTeX{} document body).
\Etoc@setflags
\Etoc@next
}
-% \end{macrocode}
-% Heart of \etoc hack into execution of |.toc| file. The |.toc|
-% file must contain (at least indirectly via expansion)
-% |\contentsline {<unit>}...| instructions, with
-% the standard meaning of executing |\l@unit| (the hyperref
-% modifications are taken into account). It is the various |\l@unit|'s
-% which are (locally) |\let| to \csbc{Etoc@lxyz} and it is \csbc{Etoc@lxyz}
-% which does the parsing of the arguments in order to extract name,
-% number and page number. Once they are obtained, via the execution of
-% this indirectly hacked |\contentsline|, the code executes the
-% \csbc{Etoc@prefix} and \csbc{Etoc@contents} corresponding to that unit level,
-% according to the user \csbc{etocsetstyle} declarations. Before that the
-% begin part is executed when \etoc first encounters that level
-% coming from a higher one and the end part will be executed when
-% hitting a more important level.
-%
-% \csbc{etocskipfirstprefix} was already part of the very first release of
-% \etoc. Up to |1.07n| it was just an elegant |\@thirdofthree| possibly
-% executed just before a |\@firstoftwo{\Etoc@swa{#1}}{\Etoc@swb{#1}}|
-% line. But this made it impossible for me to execute things after the
-% |begin| parts.
-%
-% Executing stuff before |begin| is now a potential problem because the user
-% can close some group in the |begin| code (this was in fact impossible in
-% versions |<1.08| because this would have erased the definitions of
-% \csbc{Etoc@contents} and \csbc{Etoc@prefix}). Thus I am not so free now to define
-% things before execution of begin, if I allow people to close a group
-% therein, except if I make them global.
-%
-% The mechanism of \csbc{etocskipfirstprefix} made it impossible to add
-% anything at the end of the |begin| codes. Thus I changed it in |1.08|
-% to simply work with a (global) boolean flag. This gives user the
-% freedom to use \csbc{etocskipfirstprefix} anywhere in the |begin| code and
-% it made room for a delimited macro I called \csa{etoconlyonfirst}. But
-% then I dropped it in favor of definition of the \csbc{etociffirst}
-% conditional.
-%
-% Macros |\Etoc@swa| and |\Etoc@swb| which did the \csbc{Etoc@et@hop} thing have
-% been suppressed, their effect is incorporated to the end of
-% \csbc{Etoc@etoccontentsline}.
-% \begin{macrocode}
\def\etocskipfirstprefix {\global\Etoc@skipprefixtrue }
% \end{macrocode}
-% |2015/03/08| let's record that \csbc{Etoc@level} used to be called
-% |\Etoc@tmp| in versions earlier than |1.08| (and |\Etoc@tmp| is used
-% in the completely different ulterior \csbc{Etoc@lxyz} context). The code
-% sets it for example to be \csa{Etoc@section@@} which has been let by
-% \csbc{etocsetlevel} to |\@ne|, thus is always self-terminating in
-% |\ifnum..\fi| contexts.
-%
-% |1.08i-2016/09/29| makes some changes in the organization of the
-% conditionals. It could happen in certain special circumstances (created by
-% that part in \csbc{Etoc@localtableofcontents} which is executed after the test
-% of emptiness) that \csa{Etoc@localtop} was still undefined. Earlier version of
-% the code was a bit lazy and did not avoid some unneeded |\ifnum| with
-% \csa{Etoc@localtop} in context where the flag \csbc{ifEtoc@stoptoc} was |\iftrue|;
-% this was not an issue when code was first written, \csa{Etoc@localtop} was
-% always initialized back then. But the code in \csbc{Etoc@localtableofcontents}
-% handling local TOCs with unrecognized ids would call execution of the |.toc|
-% file under some special context with flag \csbc{ifEtoc@stoptoc} artificially set
-% to true. If \csa{Etoc@localtop} had not been initialized an undefined control
-% sequence error would occur. Furthermore as |\ifEtoc@notactive| was also set
-% to true, the case of no error leads then to unneededly expand \csbc{Etoc@setflags}
-% code slowing down compilation.
-%
-% Also |1.08i| splits the macro into two, with accompanying slight
-% refactoring. I had such problems with the behaviour of TeX booleans in
-% 2011/12 that I got excessively cautious then, and was using an |\Etoc@next|
-% for the \csbc{Etoc@setflags} rather than leaving it like here deep inside
-% conditional branches.
-%
-% Attention! |1.09|'s \csbc{etoclocaltop} is the former \csa{Etoc@localtop}
-% \emph{minus one}. Hence some slight change in conditional here.
+% Heart of \etoc hack into execution of |.toc| file.
% \begin{macrocode}
\def\Etoc@etoccontentsline #1{%
\global\expandafter\let\expandafter\Etoc@level\csname Etoc@#1@@\endcsname
@@ -8026,7 +7983,7 @@ of real structure in a \LaTeX{} document body).
\fi
\fi
\fi
- \let\Etoc@next\Etoc@gobblefourorthree
+ \let\Etoc@next\@gobblefour
\ifEtoc@skipthisone
\else
\unless\ifnum\c@tocdepth<\Etoc@level
@@ -8040,49 +7997,22 @@ of real structure in a \LaTeX{} document body).
\Etoc@next{#1}%
}
% \end{macrocode}
-% |1.08| New way to handle the compatibility mode. One has to worry
-% only for the local tables of contents (in inactive state, which still
-% must be parsed for global level flags) but in this case
-% \csbc{Etoc@setflags} was done above already. Earlier method proceeded with
-% dummy empty line styles.
-%
% |2015/03/08| Ever since the first release of \etoc, the code has
% to be careful that the |\Etoc@end@<level>| user defined macros may
% close groups. This is the reason why some assignments have to be done
-% globally. The |\let\Etoc@next\Etoc@gobblesixorfive| above could be
-% local, because it is used only in case the stuff below is skipped,
-% inclusive of \csbc{Etoc@doends} which may close groups. (code has changed since,
-% slightly).
-%
-% |1.08| extracts to a separate macro \csbc{Etoc@doends}. Earlier code
-% did |\global\let\Etoc@next\relax| but we can now give a default |\relax|
-% value to |\Etoc@next| with no need of a |\global| prefix.
-%
-% |1.08k| extracts \csbc{Etoc@dobegins}.
-% \begin{macrocode}
-\def\Etoc@etoccontentsline@ #1{%
- \Etoc@doends % separated since 1.08
- \Etoc@dobegins % separated since 1.08k. Does \Etoc@setflags.
-% \end{macrocode}
-% |1.08|:
-% \begin{enumerate}
-% \item separates the definition of \csbc{Etoc@prefix} and
-% \csbc{Etoc@contents} from the execution of the |end| parts. And it does
-% the definition with some |\csname|'s.
-%
-% \item implements \csbc{etocskipfirstprefix} with a boolean, this is less slick
-% but more flexible than the earlier method.
-%
-% \item defines the \csbc{etociffirst} conditional.
-%
-% \item has \csbc{Etoc@level} rather than |\Etoc@tmp| and thus we can dispense
-% with the |\ifEtoc@part| switch as we will be able to test the equality
-% |\Etoc@level=-1| inside of \csbc{Etoc@lxyz}.
-%
-% \item adds the \csbc{Etoc@global} prefix.
-% \end{enumerate}
-% |1.08i| uses an |\edef| rather than |\def| with a chain of |\expandafter|.
+% globally
+%
+% |1.1a| implements a radical change to all internals for compatibility
+% with (attow future) \ctanpkg{hyperref}. Formerly this macro fetched only
+% the first argument. It now also fetches all four (the fourth argument of
+% \csa{contentsline} is always present since \LaTeX{} |2020/10/01|). The
+% \csbc{Etoc@lxyz} used to receive only two arguments like \csa{l@chapter},
+% \csa{l@section}, etc... which were formerly |\let| to it. It now also
+% receives the fourth argument of \csa{contentsline}.
% \begin{macrocode}
+\def\Etoc@etoccontentsline@ #1#2#3#4{%
+ \Etoc@doends
+ \Etoc@dobegins
\Etoc@global\edef\Etoc@prefix {\expandafter\noexpand
\csname Etoc@prefix@\csname Etoc@#1@\endcsname\endcsname }%
\Etoc@global\edef\Etoc@contents{\expandafter\noexpand
@@ -8090,174 +8020,156 @@ of real structure in a \LaTeX{} document body).
\ifEtoc@skipprefix \Etoc@global\let\Etoc@prefix\@empty\fi
\global\Etoc@skipprefixfalse
% \end{macrocode}
-% |1.08| modifies the ending to not use the |\Etoc@swa| and |\Etoc@swb|
-% things. With this version, the |\Etoc@next| here is only to gobble
-% everything if it has to (or gobble only the \etoc things, when in
-% compatibility mode).
-%
-% For the record we don't do |\csname l@#1\endcsname| mainly because
-% hyperref patches |\contentsline|.
-%
-% The location where \csbc{Etoc@savedcontentsline} is |\let| to
-% |\contentsline| has been moved with release |1.08| to before the
-% title as set by \csbc{etocsettocstyle}, thus it is now possible to open a
-% tabular in this part. And with the |\Etoc@global| prefix the user may
-% opt for global definitions of \csbc{etocname} and the like, thus use
-% freely |&| and other group closing things. Also, some care has been
-% put into doing only expandable things after expansion of the
-% \meta{prefix} and \meta{contents} parts of a sectioning unit
-% style.
-%
-% |1.09e| prepares for LaTeX November 2021 upcoming release
-% whose |\contentsline| will always grab four arguments whether or
-% not hyperref is loaded. The \csbc{Etoc@et@hop} definition done at
-% begin document must now swap the same number of arguments
-% whether or not hyperref is loaded (else \etoc would be broken in
-% absence of hyperref).
+% |1.1a| made core rewrites for \ctanpkg{hyperref} compatibility, and
+% simplified the logic. The code does not execute the original
+% \csa{contentsline} in a custom wrapper, which needed to have aliased all
+% \csa{l@section} etc... to \csbc{Etoc@lxyz}. Now the \etoc custom
+% \csa{contentsline} passes over directly to \csbc{Etoc@lxyz} which will do
+% itself the job of adding hyperlinking according to the status of
+% \ctanpkg{hyperref}'s \csa{Hy@linktoc}.
+%
+% This is a breaking change if a user hacked \csa{contentsline} to do some
+% specific pre-processing of the data, as this extra will now be ignored. The
+% kind of hack one can think of is perhaps to pre-process the section title to
+% turn it into uppercase, this kind of things, but why do such things when one
+% is using \etoc which precisely provides a general interface for such
+% customization? Besides as the \LaTeX{} legacy set-up already mixes up in
+% various ways name and number in the second argument of \csa{contentsline},
+% doing such hacks in a non-breaking way was not easy, and could have broken
+% \etoc easily anyhow.
+%
+% The major hacker was \ctanpkg{hyperref}... Indeed in 2012 when I started
+% work on \etoc, it was not clear to me how \ctanpkg{hyperref} would end up
+% using the fourth argument of \csa{contentsline} and I did not want to spend
+% too much time tracing hyperref code. So I simply let \ctanpkg{hyperref} do
+% its stuff, and added specific post-processing branches to unravel it.
+% It looks quite dumb in retrospect (at this time the |.toc| file lines
+% with \csa{contentsline} had either three or four arguments which contributed
+% for the design decisions back then).
+%
+% All \ctanpkg{hyperref} specific branches are now gone, replaced by extra
+% code added depending on the status of the \csbc{ifEtoc@hyperref} boolean.
+% We also check the \csa{Hy@linktoc} \csa{chardef} status and (imitating
+% \ctanpkg{hyperref} do not hyperlink the page number argument if it turns out
+% empty. This maintains backwards-compatibility with earlier releases of
+% \etoc.
% \begin{macrocode}
- \Etoc@et@hop{\Etoc@prefix\Etoc@contents}{\Etoc@savedcontentsline{#1}}%
+ \Etoc@lxyz{#2}{#3}{#4}%
+ \Etoc@prefix\Etoc@contents
}
% \end{macrocode}
-% START OF MAINLY OBSOLETE COMMENTS
-%
-% |2013/03/07|: up to |1.06| \etoc defined only \csbc{etocname}, \csbc{etocnumber} and
-% \csbc{etocpage}. The \ctanpkg{hyperref} added data is recycled in the simplest
-% manner, prefixing it with \csa{leavevmode}. The included
-% \csa{Hy@tocdestname} is (was, see below |1.07f| and |1.08a|) left
-% unexpanded. We have to spend some time with delimited macros to dis-entangle
-% the |.toc| data, and reconstruct the possible \ctanpkg{hyperref} data. If the page
-% number is not hyperlinked, \csbc{etocpage} does \emph{not} add the link found
-% possibly in the name.
-%
-% |1.07| adds \csbc{etocthename}, \csbc{etocthenumber}, \csbc{etocthepage} which
-% are left fragile and do not have the links data, and
-% \csbc{etoclink}\marg{linkname} which is robust and reconstructs an
-% arbitrarily named link.
-%
-% A need (for things like building up a token list to be used in a
-% |tikzpicture|) arose later to have some form of the link which could be
-% saved by a simple command like one can do
-% |\global\let\lastname\etocthename|, and avoid having to manipulate
-% \csa{Hy@tocdestname}. So |1.07f| adds \csbc{etocthelinkedname},
-% \csbc{etocthelinkednumber}, \csbc{etocthelinkedpage}, \csbc{etocthelink}: they
-% use \csa{hyperlink} with an expanded \csa{Hy@tocdestname}.
-%
-% |1.07f| also adds \csa{leavevmode} to \csbc{etoclink} which
-% should have been done earlier, as it was included in \csbc{etocname} etc...
-% attention, \csa{@namedef}|{A}{B}| and not \csa{@namedef}|{A} {B}| !!
-% on the other hand this gives a simple way to insert a space as the first
-% token in the paramaters. For \csbc{Etoc@again} (which appears later in the
-% code), a \csa{@firstofone} construct is however the simplest of all.
-%
-% END OF MAINLY OBSOLETE COMMENTS
-%
-% |1.08| adds \csbc{Etoc@global} prefix (|2015/03/09|).
-%
-% |1.08a| drops the original constructions of \csbc{etocname} etc... The obvious
-% decision to convert \csbc{etocname}, etc ... to be the robust versions of
-% \csbc{etocthelinkedname}, etc ... was delayed two years
-% (from |1.07f 2013/03/07| to |1.08a 2015/03/13|) for sentimental reason. But
-% the original
-% versions contained the hyperref destination only in unexpanded form, this
-% forced to use \csbc{etocthelinkedname}, etc... in cases when the thing had to
-% be stored for delayed use. Now the user can do this directly with
-% \csbc{etocname}, \csbc{etocnumber}, \csbc{etocpage} (taking into account though
-% that these are robust macros, thus perhaps using something like |\LetLtxMacro|.)
-%
-% |1.08j| turns \csbc{etoclink} into the robust version of \csbc{etocthelink}. Indeed
-% so far only \csbc{etocthelink} contained |\Hy@tocdestname| expanded. But
-% \csbc{etoclink} did not, and thus it could not be used after a group was
-% closed for example by a |&| from the sectioning style, even if having used
-% \csbc{etocglobaldefs}.
-%
-% |1.08n| adds |\futurelet|-based methods to avoid unbracing things.
-%
-% |1.08p| uses \csbc{Etoc@@getnb} (and \csbc{Etoc@@getit}) to intercept cases
-% when |\numberline| is hidden behind braces
-% (\url{https://github.com/ho-tex/hyperref/issues/65}).
+% |1.1a| makes a core rewrite for compatibility with \ctanpkg{hyperref}.
+% In particular \csbc{Etoc@lxyz} now has a third argument which was the
+% fourth argument of \csa{contentsline}. All various ``|@hyp|'' code
+% branches have been removed. We only check the \csbc{ifEtoc@hyperref}
+% boolean here.
+%
+% A \textbf{breaking change} is made at |1.1a|: \csbc{etoclink} will always
+% create an hyperlink, even in case of \ctanpkg{hyperref} being (possibly
+% locally) configured to obey |linktoc=none|. Formerly, in such case,
+% \csbc{etoclink} added no hyperlink because \etoc identified the hyperlink
+% target from
+% the \ctanpkg{hyperref} hacked arguments of \csa{l@section} et al, rather
+% than picking it from the fourth argument of \csa{contentsline}.
+% \begin{macrocode}
+\def\Etoc@lxyz #1#2#3{%
+ \ifEtoc@hyperref
+ \Etoc@global\def\etocthelink##1{\hyperlink{#3}{##1}}%
+ \else
+ \Etoc@global\let\etocthelink\@firstofone
+ \fi
+ \Etoc@global\def\etocthepage {#2}%
+ \ifEtoc@hyperref
+ \ifx\etocthepage\ltx@empty
+ \Etoc@global\let\etocthelinkedpage\etocthepage
+ \else
+ \Etoc@global\def\etocthelinkedpage{\hyperlink {#3}{#2}}%
+ \fi
+ \else
+ \Etoc@global\let\etocthelinkedpage\etocthepage
+ \fi
+% \end{macrocode}
+% Define \cs{etocthename} and \cs{etocthelinkedname}, but this will
+% perhaps be redone later if it is found out that the entry was numbered.
+% \begin{macrocode}
+ \Etoc@global\def\etocthename{#1}%
+ \ifEtoc@hyperref
+ \Etoc@global\def\etocthelinkedname{\hyperlink{#3}{#1}}%
+ \else
+ \Etoc@global\let\etocthelinkedname\etocthename
+ \fi
+% \end{macrocode}
+% Now we check if the entry was numbered and then disentangle the number from the name.
% \begin{macrocode}
-\def\Etoc@lxyz #1#2{%
- \Etoc@global\let\etocthelink\@firstofone % fall-back, was let \@empty up to 1.08i (inc.)
- \Etoc@global\def\etocthename {#1}% (if linked, will be removed later)
- \Etoc@global\def\etocthelinkedname {#1}% (probably redefined later)
- \futurelet\Etoc@getthepage@token
- \Etoc@getthepage #2\etoc@ % defines \etocthelinkedpage
\futurelet\Etoc@getnb@token
- \Etoc@@getnb #1\relax\relax\etoc@ % sets number, name, and \etocthelink
+ \Etoc@@getnb #1\relax\relax\etoc@
+% \end{macrocode}
+% We may believe the entry was not numbered due it being a \cs{part} entry
+% which has a specific format. So we need to do some additional job in
+% such cases.
+% \begin{macrocode}
\ifEtoc@number
\else
\ifnum\Etoc@level=\m@ne
\futurelet\Etoc@getit@token
- \Etoc@@getit #1\hspace\relax\etoc@ % additional job for parts
+ \Etoc@@getit #1\hspace\relax\etoc@
\fi
\fi
- \Etoc@global\expandafter\let\csname etoclink \endcsname\etocthelink
- \Etoc@global\expandafter\let\csname etocname \endcsname\etocthelinkedname
- \Etoc@global\expandafter\let\csname etocnumber \endcsname\etocthelinkednumber
- \Etoc@global\expandafter\let\csname etocpage \endcsname\etocthelinkedpage
- }
% \end{macrocode}
-% |1.08| adds the \csbc{Etoc@global}'s.
-%
-% |1.08j| fixes an old |\ifx #1\hyperlink@start| bug.
-%
-% Potential (but rather exotic) brace removal problems avoided at |1.08n|.
-%
-% |1.09g| delays definition of \csbc{Etoc@getthepage} to \csa{AtBeginDocument} to
-% check if \ctanpkg{hyperref} is at version |7.00u 2022-11-13| or later, as that
-% version replaced \csa{hyper@linkstart} with \csa{protected} macro
-% \csa{Hy@toclinkstart} which furthermore requires one more expansion step.
-% Formerly, the \csbc{ifEtoc@hyperref} test was executed via the expansion of
-% \csbc{Etoc@getthepage} but now this test is tacitly done only once at begin
-% document to define appropriately \csbc{Etoc@getthepage}. Falls back to
-% \csbc{Etoc@getthepage@nohyp}.
+% If there was a number the \csbc{etocthename} and \csbc{etocthenumber} got
+% redefined. We know need to give proper definition to \csbc{etocthelinkedname}
+% and \csbc{etocthelinkednumber}.
% \begin{macrocode}
-\def\Etoc@getthepage@nohyp #1\etoc@ {%
- \Etoc@global\def\etocthepage {#1}%
- \Etoc@global\def\etocthelinkedpage {#1}%
+ \ifEtoc@number
+ \ifEtoc@hyperref
+ \def\Etoc@tmp##1##2{\Etoc@global\def##2{\hyperlink{#3}{##1}}}%
+ \expandafter\Etoc@tmp\expandafter{\etocthename}\etocthelinkedname
+ \expandafter\Etoc@tmp\expandafter{\etocthenumber}\etocthelinkednumber
+ \else
+ \Etoc@global\let\etocthelinkedname\etocthename
+ \Etoc@global\let\etocthelinkednumber\etocthenumber
+ \fi
+ \else
+ \Etoc@global\let\etocthenumber\@empty
+ \Etoc@global\let\etocthelinkednumber\@empty
+ \fi
+ \Etoc@global\expandafter\let\csname etoclink \endcsname\etocthelink
+ \Etoc@global\expandafter\let\csname etocname \endcsname\etocthename
+ \Etoc@global\expandafter\let\csname etocnumber \endcsname\etocthenumber
+ \Etoc@global\expandafter\let\csname etocpage \endcsname\etocthepage
+ \ifEtoc@hyperref
+ \Etoc@lxyz@hyper
+ \fi
}
% \end{macrocode}
-% |1.07k| corrects a bug here with an extra space before |##1| in
-% |\@namedef{etoclink } ##1|. In 99.99\% of use cases however, the
-% macro gets redefined at a later stage, thus the bug did not show.
-%
-% |1.07n| replaces use of |\toks@| by macro |\Etoc@tmp|. Thus, the user has
-% the (not so recommended) possibility to use |\toks@| in the styles, even to
-% store information whose scope extends beyond the execution of each
-% |\contentsline|.
-%
-% |1.08| adds the \csbc{Etoc@global}'s.
+% In presence of \ctanpkg{hyperref}, \etoc |1.1a| adds the hyperlinks
+% itself. For this it imitates the \ctanpkg{hyperref} own logic and tests
+% \csa{Hy@linktoc} and if the page number is empty. This adds a dependency
+% that \csa{Hy@linktoc} should exist and have the expected interpretation.
%
-% |1.08j| does not define \csa{etoclink<space>} anymore, only \csbc{etocthelink}
-% which contains the |\Hy@tocdestname| already expanded.
+% Matters of tagging will have to wait for \LaTeX\ itself to show me what it
+% does in \csa{l@section} etc... so that I can imitate.
% \begin{macrocode}
-\def\Etoc@getthepage@hyp #1#2#3#4#5\etoc@ {%
- \Etoc@global\def\etocthepage {#4}%
- \edef\Etoc@tmp {{#3}}%
- \Etoc@global\expandafter\def\expandafter\etocthelinkedpage\expandafter
- {\expandafter\hyperlink \Etoc@tmp{#4}}%
- \Etoc@global\edef\etocthelink##1{\noexpand\hyperlink\Etoc@tmp{##1}}%
+\def\Etoc@lxyz@hyper{%
+ \ifcase\Hy@linktoc
+ % none: nothing to do
+ \or % section (aka name for etoc): link name and number
+ \Etoc@global\expandafter\let\csname etocname \endcsname\etocthelinkedname
+ \Etoc@global\expandafter\let\csname etocnumber \endcsname\etocthelinkednumber
+ \or % page. Do as hyperref: add a link only if page number isn't empty.
+ \ifx\etocthepage\ltx@empty
+ \else
+ \Etoc@global\expandafter\let\csname etocpage \endcsname\etocthelinkedpage
+ \fi
+ \else % all
+ \Etoc@global\expandafter\let\csname etocname \endcsname\etocthelinkedname
+ \Etoc@global\expandafter\let\csname etocnumber \endcsname\etocthelinkednumber
+ \ifx\etocthepage\ltx@empty
+ \else
+ \Etoc@global\expandafter\let\csname etocpage \endcsname\etocthelinkedpage
+ \fi
+ \fi
}
-% \end{macrocode}
-% |1.08j| fixes an old buggy |\ifx #1\hyper@linkstart|. This could show if
-% hyperref was present with |linktoc=page| option for example, because in that
-% case |#1| could be some tokens within braces. As this is rare case though,
-% no bug was reported.
-%
-% Anyway I refactored the whole thing at |1.08n|.
-%
-% |1.08p| adds workaround for an extra brace pair inserted by hyperref
-% in case of |linktoc=page| option
-% \centeredline{\url{https://github.com/ho-tex/hyperref/issues/65}}
-%
-% |1.09f| examines also if next token in a space token; if it is we know
-% that we are not with a hyperref-customized entry and that we do not have a
-% numbered entry. We thus jump directly to \csbc{Etoc@getnb@nohyp@nonbr}, so
-% \csbc{etocthename} is certainly not redefined and there is no risk of space
-% gobbling and brace removal. This precaution is a bit academic though as
-% code from previous release could derail (i.e. mis-interpret data) only in
-% especially crafted circumstances.
-% \begin{macrocode}
\def\Etoc@@getnb {%
\Etoc@bracednamefalse
\let\Etoc@next\Etoc@getnb
@@ -8280,43 +8192,23 @@ of real structure in a \LaTeX{} document body).
\futurelet\Etoc@getnb@token\Etoc@getnb
}
% \end{macrocode}
-% |1.09g| adds an \csa{Etoc@getnb@a} which
-% gets defined only at begin document to adapt to \ctanpkg{hyperref} depending on
-% whether the latter is at |7.00u| or earlier. In absence of \ctanpkg{hyperref}
-% it is \csa{let} to \csbc{Etoc@getnb@nohyp}.
+% The |@nohyp| in the macro names is a legacy of pre-|1.1a| code.
% \begin{macrocode}
\def\Etoc@getnb {%
\ifx\Etoc@getnb@token\bgroup
\expandafter\Etoc@getnb@nohyp@nonbr
\else
- \expandafter\Etoc@getnb@a
+ \expandafter\Etoc@getnb@nohyp
\fi
}
% \end{macrocode}
-% |1.08| adds the \csbc{Etoc@global}'s.
-%
-% |1.08j| corrects an old |\ifx#1\numberline| into |\ifx\numberline#1|.
-%
-% |1.08k| uses a delimited macro to identify \csa{numberline},
-% \csa{chapternumberline} etc... in one go, avoiding
-% the |\let\chapternumberline\numberline| etc... which were done formerly
-% in \csbc{Etoc@tableofcontents}. Currently \etoc does not yet use \eTeX.
-%
-% |1.08m| fixes incompatibility of |1.08k|'s delimited macro method with KOMA's
-% \csa{nonumberline}.
-%
-% Both |1.08k| and
-% |1.08m| actually would have needed some |\detokenize| for complete safety
-% and so far \etoc does not use e-\TeX. So here at |1.08n| I refactored the
-% whole thing. And I added a |\futurelet|-based brace detection in
-% \csbc{Etoc@getnb} so here |#1| is guaranteed not braced now.
-%
-% |1.08n| tries to handle reasonably the |\nonumberline| of \ctanpkg{KOMA-script}.
+% |1.08n| tries to handle reasonably the \csa{nonumberline} of \ctanpkg{KOMA-script}.
% If it expands to |\numberline{}|, \etoc will thus consider the line
% numbered with an empty number.
%
-% At |1.09f| complications to get rid of a \ctanpkg{KOMA-script} |\nonumberline|
-% even though its meaning is |\empty| then, but for case of delayed use.
+% At |1.09f| complications to get rid of a \ctanpkg{KOMA-script} \csa{nonumberline}
+% even though its meaning is \csa{empty} then, but let's get rid of it in case
+% the tokens are stored by the user section styles for delayed use.
% \begin{macrocode}
\def\Etoc@getnb@nohyp #1{%
\in@{#1}{\numberline\chapternumberline\partnumberline\booknumberline}%
@@ -8356,8 +8248,8 @@ of real structure in a \LaTeX{} document body).
\Etoc@global\let\etocthelinkednumber \@empty
}
% \end{macrocode}
-% Special KOMA branch: |#1| starts with |\nonumberline| which has here same
-% meaning as |\empty|. It is in the current provisory definition of
+% Special KOMA branch: |#1| starts with \csa{nonumberline} which has here same
+% meaning as \csa{empty}. It is in the current provisory definition of
% \csbc{etocthename}. We get rid of this token, in case usage is delayed,
% to avoid improbable problems.
% \begin{macrocode}
@@ -8374,138 +8266,18 @@ of real structure in a \LaTeX{} document body).
\Etoc@global\let\etocthelinkedname \etocthename
}
% \end{macrocode}
-% |1.07n| replaces use of |\toks@| by macro |\Etoc@tmp|. |1.08| adds
-% the \csbc{Etoc@global}'s.
-%
-% |1.08j| corrects the old |\ifx#1\numberline| into |\ifx\numberline#1|.
-%
-% |1.08k| uses a delimited macro to identify \csa{numberline},
-% \csa{chapternumberline} etc... in one go.
-%
-% But anyway this was completely refactored at |1.08n|. Unfortunately
-% bad macro naming scheme caused a typo in a macro name, and it was
-% left undefined.
-% Fixed at |1.08o|.
-%
-% At |1.08p| which fixed an hyperref problem in case of |linktoc=page|
-% we are lazy because the problem with extra braces should not happen
-% in this branch (hyperref does not brace the hyperlink). So we ignore
-% the |\ifEtoc@bracedname| setting.
-%
-% At |1.09f| complications to get rid of a \ctanpkg{KOMA-script} |\nonumberline|
-% even though its meaning is |\empty| then, but for case of delayed use.
-%
-% At |1.09h| I converted the |#5#6| into |#5|, the |#5#6| had been kept
-% around for ages here, perhaps a legacy of early versions, anyway
-% here the macro really wants the |#4| anyhow only (and |#3|) and there
-% can be only one \csa{etoc@}.
-%
-% The |7.00u| \ctanpkg{hyperref} has modified the mark-up, but \csa{Etoc@getnb@a}
-% defined at begin document has caused the expansion of \csa{Hy@toclinkstart}
-% so we are back to the |<7.00u| situation; and \csa{Hy@toclinkend} is anyhow
-% gobbled as part of |#5| as was formerly \csa{hyper@linkend} so we don't have
-% to worry about that \ctanpkg{hyperref} change.
-% \begin{macrocode}
-\def\Etoc@getnb@hyp #1#2#3#4#5\etoc@ {%
- \edef\Etoc@tmp {{#3}}%
- \Etoc@global\edef\etocthelink ##1{\noexpand\hyperlink {#3}{##1}}%
- \Etoc@global\def\etocthename {#4}% temporary definition
- \Etoc@global\expandafter\def\expandafter\etocthelinkedname
- \expandafter {\expandafter\hyperlink \Etoc@tmp{#4}}%
- \futurelet\Etoc@hyp@getnb@token\Etoc@getnb@hyp@a #4\relax\relax\etoc@
-}
-% \end{macrocode}
-% In case of an upfront brace, the sectioning heading is not numbered, so we
-% can avoid potential brace removal problems by jumping now to the not
-% numbered branch not hyperlinked branch; indeed \csbc{etocthelinkedname} has
-% already been defined with the |\hyperlink| so we can bail out.
-% \begin{macrocode}
-\def\Etoc@getnb@hyp@a {%
- \ifx\Etoc@hyp@getnb@token\bgroup
- \expandafter\Etoc@getnb@nohyp@nonbr
- \else
- \expandafter\Etoc@getnb@hyp@b
- \fi
-}
-\def\Etoc@getnb@hyp@b #1{%
- \in@{#1}{\numberline\chapternumberline\partnumberline\booknumberline}%
- \ifin@
- \let\Etoc@next\Etoc@getnb@hyp@nmbrd
- \else
-% \end{macrocode}
-% If not numbered we can bail out to the "nohyp" branch, as
-% \csbc{etocthelinkedname} has already been defined with the |\hyperlink|.
-% \begin{macrocode}
- \let\Etoc@next\Etoc@getnb@nohyp@nonbr
- \in@{#1}{\nonumberline}%
- \ifin@
-% \end{macrocode}
-% In case of presence of KOMA \csa{nonumberline} we need to expand it
-% once, and then execute the numbered branch which will redefine
-% \csbc{etocthename} as well. But in case it is empty we will have to
-% correct \csbc{etocthename}, just to be perfect.
-% \begin{macrocode}
- \ifx\nonumberline\empty
- \let\Etoc@next\Etoc@getnb@hyp@nonumberline
- \else
- \def\Etoc@next{\expandafter\Etoc@getnb@hyp@nmbrd}%
- \fi
- \fi
- \fi
- \Etoc@next #1%
-}
-\def\Etoc@getnb@hyp@nmbrd #1#2#3\relax\relax\etoc@ {%
- \Etoc@global\Etoc@numbertrue
- \Etoc@global\def\etocthenumber {#2}%
- \Etoc@global\expandafter\def\expandafter\etocthelinkednumber
- \expandafter{\expandafter\hyperlink \Etoc@tmp{#2}}%
- \Etoc@global\def\etocthename {#3}%
- \Etoc@global\expandafter\def\expandafter\etocthelinkedname
- \expandafter{\expandafter\hyperlink \Etoc@tmp{#3}}%
-}
-% \end{macrocode}
-% Special KOMA branch: |#1| starts with |\nonumberline| which has here same
-% meaning as |\empty|. We need to remove it.
-% \begin{macrocode}
-\def\Etoc@getnb@hyp@nonumberline #1\relax\relax\etoc@ {%
- \Etoc@global\Etoc@numberfalse
- \Etoc@global\let\etocthenumber \@empty
- \Etoc@global\let\etocthelinkednumber \@empty
- \ifEtoc@bracedname
- \Etoc@global\expandafter\def\expandafter\etocthename
- \expandafter{\expandafter{#1}}%
- \else
- \Etoc@global\expandafter\def\expandafter\etocthename\expandafter{#1}%
- \fi
- \Etoc@global\expandafter\expandafter\expandafter\def
- \expandafter\expandafter\expandafter\etocthelinkedname
- \expandafter\expandafter\expandafter{%
- \expandafter\expandafter\expandafter\hyperlink
- \expandafter\Etoc@tmp\expandafter{\etocthename}}%
-}
-% \end{macrocode}
-% |1.08| adds the \csbc{Etoc@global}'s.
-%
-% |1.08n| refactors this but it is still not extremely robust.
-%
-% |1.08p| completes the fix of |linktoc=page| problematic hyperref. If
-% the name was found to be braced, keep the brace pair on extracted
-% name. But not for extracted number... don't ask why, I did not want
-% spending ages on working around hyperref's bug.
+% |1.1a| maps directly to \csbc{Etoc@getit@nohyp}, and the |@nohyp| will
+% perhaps be removed from its name at some later stage.
% \begin{macrocode}
\def\Etoc@@getit{%
\ifEtoc@bracedname
\expandafter\expandafter\expandafter\Etoc@getit@nameisbraced
\expandafter\@firstofone
\else
- \expandafter\Etoc@getit
+ \expandafter\Etoc@getit@nohyp
\fi
}
-\def\Etoc@getit@nameisbraced {\futurelet\Etoc@getit@token\Etoc@getit }
-% \end{macrocode}
-% |1.09g| delays defining \csbc{Etoc@getit} to at begin document to adapt to
-% \ctanpkg{hyperref} depending on whether the latter is at |7.00u| or earlier.
-% \begin{macrocode}
+\def\Etoc@getit@nameisbraced {\futurelet\Etoc@getit@token\Etoc@getit@nohyp }
\def\Etoc@getit@nohyp #1\hspace#2#3\etoc@ {%
\ifx\relax#2%
\else
@@ -8524,51 +8296,6 @@ of real structure in a \LaTeX{} document body).
\Etoc@global\let\etocthelinkedname\etocthename
}
% \end{macrocode}
-% |1.07n| replaces use of |\toks@| by macro |\Etoc@tmp|. |1.08| adds
-% the \csbc{Etoc@global}'s.
-%
-% |1.08j| adds \csbc{etocthelink} definition here which was missing. This bug
-% showed in case hyperref was used with option |linktoc=page|, for |part|
-% styles: the \csbc{etocthelink} would not create a link if used therein. But the
-% |linktoc=page| condition could easily however trigger the more serious
-% |\ifx| bug in \csbc{Etoc@getnb} also fixed at |1.08j|, and this would have
-% overshadowed this one by a real compilation error rather than a missing link
-% in the procuced PDF.
-%
-% |1.08n| refactors the whole thing. |1.08o| chooses better names for
-% macros.
-%
-% For |1.08p| fix of hyperref's extra brace (see \csbc{Etoc@@getnb},
-% \csbc{Etoc@@getit}), this branch should not suffer the issue, hence I
-% don't bother checking |\ifEtoc@bracedname| status.
-%
-% At |1.09h| the |#5#6| becomes |#5|, the |#5#6| was for some legacy reason
-% I guess, but here the macro really wants the |#4| anyhow only (and |#3|).
-% \begin{macrocode}
-\def\Etoc@getit@hyp #1#2#3#4#5\etoc@ {%
- \edef\Etoc@tmp {{#3}}%
- \Etoc@global\edef\etocthelink ##1{\noexpand\hyperlink \Etoc@tmp{##1}}%
- \Etoc@global\def\etocthename {#4}% temporary definition
- \Etoc@global\expandafter\def\expandafter\etocthelinkedname
- \expandafter{\expandafter\hyperlink \Etoc@tmp{#4}}%
- \Etoc@getit@hyp@a #4\hspace\relax\etoc@
-}
-\def\Etoc@getit@hyp@a #1\hspace#2#3\etoc@ {%
- \ifx\relax#2% not extremely safe
- \else
- \Etoc@global\Etoc@numbertrue
- \Etoc@global\def\etocthenumber {#1}%
- \Etoc@global\expandafter\def\expandafter\etocthelinkednumber
- \expandafter{\expandafter\hyperlink \Etoc@tmp{#1}}%
- \Etoc@getit@hyp@getname #3\etoc@
- \fi
-}
-\def\Etoc@getit@hyp@getname #1\hspace\relax\etoc@ {%
- \Etoc@global\def\etocthename {#1}%
- \Etoc@global\expandafter\def\expandafter\etocthelinkedname
- \expandafter{\expandafter\hyperlink \Etoc@tmp{#1}}%
-}%
-% \end{macrocode}
% |1.08a| of |2015/03/12| does the long-postponed thing to let \csbc{etocname}
% etc.. be simply the robust variant of \csbc{etocthelinkedname} etc...
% \begin{macrocode}
@@ -8578,7 +8305,7 @@ of real structure in a \LaTeX{} document body).
\let\etocthelinkedname \@empty
\let\etocthelinkednumber \@empty
\let\etocthelinkedpage \@empty
-\let\etocthelink \@firstofone % prior to 1.08j its was \let to \@empty
+\let\etocthelink \@firstofone
\DeclareRobustCommand*{\etocname} {}
\DeclareRobustCommand*{\etocnumber}{}
\DeclareRobustCommand*{\etocpage} {}
@@ -8586,15 +8313,9 @@ of real structure in a \LaTeX{} document body).
\DeclareRobustCommand*{\etocifnumbered}
{\ifEtoc@number\expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi}
\expandafter\let\expandafter\etocxifnumbered\csname etocifnumbered \endcsname
-% \end{macrocode}
-% |1.08| defines \csbc{etociffirst}
-% \begin{macrocode}
\DeclareRobustCommand*{\etociffirst}
{\ifEtoc@isfirst\expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi}
\expandafter\let\expandafter\etocxiffirst\csname etociffirst \endcsname
-% \end{macrocode}
-% |1.07j| modifies \csbc{Etoc@readtoc}.
-% \begin{macrocode}
\def\Etoc@readtoc {%
\ifeof \Etoc@tf
\else
@@ -8618,9 +8339,6 @@ of real structure in a \LaTeX{} document body).
\global\Etoc@toctoks=\expandafter{\the\Etoc@toctoks}%
\closein\Etoc@tf}}
{\typeout{No file \jobname.toc.}}}
-% \end{macrocode}
-% 1.07d: parskip and |\@nobreakfalse| stuff moved to \csbc{Etoc@tableofcontents}
-% \begin{macrocode}
\def\Etoc@openouttoc{%
\ifEtoc@hyperref
\ifx\hyper@last\@undefined
@@ -8638,16 +8356,6 @@ of real structure in a \LaTeX{} document body).
\fi
\global\let\Etoc@openouttoc\empty
}
-% \end{macrocode}
-% |1.08| has a new way to handle |\Etoc@standardtrue|.
-%
-% Also the expansion of \csbc{Etoc@levellist} is moved to inside
-% \csbc{Etoc@tableofcontents} as set-up by \csbc{etocsettocstyle}. This opens up
-% the possibility for the user to open a group in the title (for example
-% start a tabular) which would be closed (by the first |&|) sometime
-% later. In combination with \csbc{etocglobaldefs} it will be now much
-% easier to typeset TOC as tables with \etoc!
-% \begin{macrocode}
\def\Etoc@toctoc{%
\global\Etoc@vfalse
\global\Etoc@ivfalse
@@ -8671,27 +8379,12 @@ of real structure in a \LaTeX{} document body).
\fi
}
% \end{macrocode}
-% Slightly better coded in |1.08b|. Had some bad experiences with TeX
-% conditionals back in 2011/2012 when I started LaTeX programming, and the
-% code was a remnant of extra cautious attitude. Also, now
-% \csbc{etoc@@startlocaltoc} is expandable if it does nothing.
-%
-% |2015/04/16|: |1.08e| removes a \csbc{ifEtoc@notactive} test as |\ifnum| can
-% be positive only once anyhow; although the \csbc{ifEtoc@notactive} boolean
-% could be faster than an |\ifnum|, it adds to it as long as the local toc id
-% is not yet found.
-%
-% I replace (|1.08e|) the \csbc{Etoc@global}'s for \csa{Etoc@localtop} by
-% |\global|'s. The |\relax| is needed because |#2| may sometimes be a count,
-% sometimes tokens.
-%
-% Attention! |1.09| defines a public \csbc{etoclocaltop} in replacement of old
-% \csa{Etoc@localtop} \emph{minus one}. Memo: \csbc{etoclocaltop} has only
+% Memo: \csbc{etoclocaltop} has only
% meaningful meaning when the local toc has its "active" flag set. Except that
% I used a "notactive" flag to torture myself, so: has the "notactive" flag
% off.
%
-% Also attention |1.09| now sets the |\c@tocdepth| there in relation to
+% Also attention |1.09| now sets the \csa{c@tocdepth} there in relation to
% implementation of \localtocwrdp. This is needed for line styles in
% compatibility mode as the code from standard classes checks the tocdepth
% counter.
@@ -8722,53 +8415,27 @@ of real structure in a \LaTeX{} document body).
}
\let\etoc@startlocaltoc\@gobble
% \end{macrocode}
-% |2015/03/16|: |1.08e| tests if a local table of contents turns out empty.
-% The \csa{Etoc@localtop} there does not have the same meaning as when set-up
-% by the regular \csbc{etoc@@startlocaltoc}. It is off by 1 (in general). THIS
-% IS OBSOLETE since |1.09|: a \csbc{etoclocaltop} is used with same meaning in
-% all code branches.
-%
-% After some hesitation I opted for making and obeying the test always (*) for
-% local tables of contents, and do it also for global tables of contents but
-% for the latter the user must issue \csbc{etocnotocifnotoc} for the emptiness
-% test to be obeyed. The emptiness tests are to be trusted only when the
-% compilations have stabilized.
-%
-% (*) finally the user must issue \csbc{etocchecksemptiness} once.
-%
% \csbc{Etoc@tocid} is the number of the toc (possibly gotten via a |\ref|
% following a \csbc{tableofcontents}), or it is |\z@| if the emptiness test is
% from a global toc. Until the compilations stabilize, some local TOCs can get
% printed at wrong locations naturally and emptiness tests can not be trusted
-% either. Releases earlier than |1.08e| authorized
-% \csbc{tableofcontents}|\ref{foo}| with |foo| the label of a \emph{global}
-% toc. But as it was impossible (without much complications) to discriminate,
-% until auxiliary files have stabilized, between a |\ref| to a local toc whose
-% id is not yet in the |.toc| file and a |\ref| to a global toc whose id will
-% in the end definitely not be in the |.toc| file, I decided that this silly
-% possibility should not be supported anymore. This allowed to remove a few
-% tokens from \csbc{Etoc@tableofcontents} as well. And it also allowed
-% improvements to \csbc{Etoc@localtableofcontents}.
+% either.
%
% Note: (|1.08i 2016/09/29|) the code has to handle both local and total toc.
-% Hence the flag \csbc{ifEtoc@notactive} has to be set prior to it. For a global
-% toc, the \csbc{Etoc@tocid} was set to |\z@|, and the |\ifnum| in
-% \csbc{etoc@startlocaltoc} did always fail, but I now prefer to simply nullify
-% the \csbc{etoc@startlocaltoc}. As its default fallback is |\@gobble| I simply
-% test here for the \csbc{ifEtoc@localtoc} flag. The \csbc{Etoc@tocid} will be undefined for a
-% global toc but it is not tested anymore.
+% Hence the flag \csbc{ifEtoc@notactive} has to be set prior to it. For a
+% global toc, the \csbc{Etoc@tocid} was set to |\z@|, and the |\ifnum| in
+% \csbc{etoc@startlocaltoc} did always fail, but I now prefer to simply
+% nullify the \csbc{etoc@startlocaltoc}. As its default fallback is
+% |\@gobble| I simply test here for the \csbc{ifEtoc@localtoc} flag. The
+% \csbc{Etoc@tocid} will be undefined for a global toc but it is not tested
+% anymore.
%
% Note: the mechanism for recognizing the level when a local toc is
% encountered is different from the one in \csbc{etoc@@startlocaltoc} which uses
% the level flags. Here we just record in \csbc{Etoc@level} where we last stood.
% The initialization |\global\let\Etoc@level\Etoc@minf| is thus needed in case
% the |.toc| file contains an \csbc{etoc@startlocaltoc} before any
-% |\contentsline|.
-%
-% |1.08i| has two |testingcontentsline| macros, one for local, one for global.
-%
-% |1.09| renames the \csa{Etoc@localtop} which was used here to a public
-% \csbc{etoclocaltop} to make it usable in \csbc{etocsettocstyle}.
+% \csa{contentsline}.
% \begin{macrocode}
\def\Etoc@setemptytocbool {%
\global\Etoc@emptytoctrue
@@ -8805,14 +8472,11 @@ of real structure in a \LaTeX{} document body).
\else
\global\expandafter\let\expandafter\Etoc@level\csname Etoc@#1@@\endcsname
% \end{macrocode}
-% |\ifEtoc@notactive| set to False by \csbc{etoc@startlocaltoc} with right id. It
+% \csbc{ifEtoc@notactive} set to False by \csbc{etoc@startlocaltoc} with right id. It
% that happened, check level of hit against unit. Will decide if empty or not.
% Set \csbc{ifEtoc@stoptoc} flag afterwards in all cases. \csa{Etoc@localtop} will have been
% initialized by \csbc{etoc@@startlocaltoc} as \csbc{ifEtoc@notactive} flag can be
% false only then.
-%
-% |1.09| renamed the \csa{Etoc@localtop} as formerly here to \csbc{etoclocaltop}
-% and adds support for \localtocwrdp.
% \begin{macrocode}
\ifEtoc@notactive
\else
@@ -8827,7 +8491,7 @@ of real structure in a \LaTeX{} document body).
\fi
\fi
\fi
- \Etoc@gobblefourorthree\relax
+ \@gobblefour\relax
}
\def\Etoc@testingcontentsline #1{%
\ifEtoc@stoptoc
@@ -8840,22 +8504,9 @@ of real structure in a \LaTeX{} document body).
\fi
\fi
\fi
- \Etoc@gobblefourorthree\relax
+ \@gobblefour\relax
}
% \end{macrocode}
-% |1.07g| suppresses the printing of |--unknown etoc ref: run latex again--| as
-% sometimes one uses \csbc{localtableofcontents} to prepare something else, and one
-% does not want any text output even in intermediate runs.
-%
-% Also |1.07g| adds \csbc{etocaftertochook} to help with
-% \csbc{invisiblelocaltableofcontents} (and then I did \csbc{etocsetnexttocdepth}).
-% |1.07h| makes the hook used by \csbc{etocsetnexttocdepth} private.
-%
-% |2015/03/14|: |1.08b| suppresses a space token from an unprotected end of
-% line at the end after the replacement text of \csbc{etoc@startlocaltoc} (bug
-% dating back to |1.03 2012/11/23|). I didn't see it due to the originally
-% badly formatted source of |\Etoc@next|.
-%
% |2015/03/16|: |1.08e| lets \csbc{localtableofcontents} do a first scan of the
% |.toc| file (as stored in \csbc{Etoc@toctoks}) to determine if the table of
% contents will in fact end up empty. In that case, nothing is typeset. The
@@ -8899,7 +8550,7 @@ of real structure in a \LaTeX{} document body).
% TOC needing more compilations. The emptiness status is undecided, the code
% declares the TOC non empty.
%
-% |1.08i-2016/09/29| now does |\Etoc@localtoctrue| right at the start (the
+% |1.08i-2016/09/29| now does \csa{Etoc@localtoctrue} right at the start (the
% earlier code could have to handle table of contents which were actually
% global, via the |\label/\ref| mechanism.) It does not rely on the |\ifnum|
% automatically false in \csbc{etoc@@startlocaltoc} due to the special values |0|
@@ -8914,7 +8565,7 @@ of real structure in a \LaTeX{} document body).
%
% I hesitated with |1.08i| to write something to aux file in order to let
% \LaTeX\ prompt the user for extra pass, after insertion of some new
-% |\localtableofcontents|, but finally I prefer to only trick \LaTeX\ into
+% \csa{localtableofcontents}, but finally I prefer to only trick \LaTeX\ into
% telling about undefined references.
%
% The \csa{PackageWarning} approach has the advantage
@@ -8925,7 +8576,7 @@ of real structure in a \LaTeX{} document body).
% second approach. (edit |2017/10/23|: good thing I documented that! I had
% completely forgotten that rationale, but I wonder if it is correct.)
%
-% Also the |\PackageWarning| does not trigger a visible message
+% Also the \csa{PackageWarning} does not trigger a visible message
% near the end of the log file or console output, contrarily to a
% \centeredline{|LaTeX Warning: There were undefined references.|}
% followed by a
@@ -8940,43 +8591,35 @@ of real structure in a \LaTeX{} document body).
\global\Etoc@emptytocfalse
\edef\Etoc@tocid{#1}%
\ifnum\Etoc@tocid<\@ne
- %\PackageWarning{etoc}{Unknown toc reference \@secondoftwo#1. Run LaTeX again}%
\setbox0\hbox{\ref{Unknown toc ref \@secondoftwo#1. Rerun LaTeX}}%
- %\if@filesw\immediate\write\@mainaux{\noexpand\@tempswatrue}\fi
- \global\Etoc@stoptoctrue % do only heading
+% \end{macrocode}
+% Do only heading, skip all the rest.
+% \begin{macrocode}
+ \global\Etoc@stoptoctrue
\gdef\etoclocaltop{-\thr@@}%
\Etoc@tableofcontents
- \expandafter\Etoc@gobbletoetoc@ % skip all the rest
+ \expandafter\Etoc@gobbletoetoc@
\fi
\global\Etoc@notactivetrue
-% \end{macrocode}
-% |1.08i|'s \csbc{Etoc@setemptytocbool} now checks |localtoc| flag.
-% \begin{macrocode}
\ifEtoc@checksemptiness
\Etoc@setemptytocbool
\fi
\ifEtoc@emptytoc
\ifEtoc@notactive
- %\PackageWarning{etoc}{Unknown toc ID \number\Etoc@tocid. Run LaTeX again}%
\setbox0\hbox{\ref{Unknown toc ID \number\Etoc@tocid. Rerun LaTeX}}%
- %\if@filesw\immediate\write\@mainaux{\noexpand\@tempswatrue}\fi
- \global\Etoc@emptytocfalse % assume real one will be non-empty
- \global\Etoc@stoptoctrue % and print only heading for this pass
+% \end{macrocode}
+% Assume real one will be non-empty and print only heading for this pass.
+% \begin{macrocode}
+ \global\Etoc@emptytocfalse
+ \global\Etoc@stoptoctrue
\gdef\etoclocaltop{-\thr@@}%
\Etoc@tableofcontents
\expandafter\expandafter\expandafter\Etoc@gobbletoetoc@
- \else
- %% \PackageWarning{etoc}{This toc is apparently empty}%
\fi
\else
\global\Etoc@stoptocfalse
\global\Etoc@notactivetrue
% \end{macrocode}
-% Prior to |1.09| a \csa{Etoc@localtop} was reset here. This has now been
-% moved to \csbc{Etoc@tableofcontents} and \csa{Etoc@localtop} replaced by a
-% public \csbc{etoclocaltop} usable in line styles, and in \csbc{etocsettocstyle}
-% (under checksemptinesstrue regime).
-%
% We can end up here either if the emptiness check was done and turned
% negative (then \csbc{etoclocaltop} has the correct level for usage in first
% argument of \csbc{etocsettocstyle}), or if the emptiness check was not done.
@@ -8988,15 +8631,15 @@ of real structure in a \LaTeX{} document body).
\fi
\@gobble\etoc@
\endgroup\ifEtoc@mustclosegroup\endgroup\fi
- \Etoc@tocdepthreset % 1.07h, renamed 1.08h
- \etocaftertochook % 1.07g
+ \Etoc@tocdepthreset
+ \etocaftertochook
% \end{macrocode}
% |1.09| hesitates about putting this before of after the
% \csbc{etocaftertochook}. The information of the used tocdepth is lost if
% puuting it first. The usage of \csbc{etocaftertochook} may be broken if
% unexpected tokens follows.
% \begin{macrocode}
- \let\Etoc@localtocdepth\c@tocdepth % 1.09
+ \let\Etoc@localtocdepth\c@tocdepth
}% \Etoc@localtableofcontents
% \end{macrocode}
% |2013/03/07|: I discover a \csa{@namedef} trick to construct the
@@ -9004,7 +8647,7 @@ of real structure in a \LaTeX{} document body).
% | \@namedef {Etoc@again} {...stuff...}|\\
% Original version was (copied from analogous stuff in |source2e|):\\
% | {\def\1{\Etoc@again}\expandafter\gdef\1 {...stuff...}}|\\
-% and in the end (now that I think about it) I simply use |\@firstofone|.\par
+% and in the end (now that I think about it) I simply use \csa{@firstofone}.\par
% \begin{macrocode}
\def\Etoc@getrefno #1#2\etoc@ {#1}
\def\Etoc@getref #1{\@ifundefined{r@#1}{0}{\expandafter\expandafter\expandafter
@@ -9013,14 +8656,9 @@ of real structure in a \LaTeX{} document body).
\def\Etoc@label#1{\label{#1}\futurelet\Etoc@nexttoken\Etoc@t@bleofcontents}
\@firstofone{\def\Etoc@again} {\futurelet\Etoc@nexttoken\Etoc@t@bleofcontents}
% \end{macrocode}
-% |1.08e| adds test for emptiness. And uses another coding style for
-% conditional branching. Easier to read. Not tested for efficiency.
-%
-% Also, |\ref{foo}| expects |foo| to be a label to a \emph{local} TOC. Earlier
-% versions accepted a reference to a global TOC, I have removed the support
-% from \csbc{Etoc@tableofcontents}.
+% |\ref{foo}| expects |foo| to be a label to a \emph{local} TOC.
%
-% The syntax \csbc{localtableofcontents}|\ref{foo}| is now accepted.
+% The syntax \csbc{localtableofcontents}|\ref{foo}| is supported.
% \begin{macrocode}
\def\Etoc@dothis #1#2\etoc@ {\fi #1}
\def\Etoc@t@bleofcontents{%
@@ -9030,8 +8668,7 @@ of real structure in a \LaTeX{} document body).
% \end{macrocode}
% \csbc{Etoc@ref} will hand over directly to \csbc{Etoc@localtableofcontents}.
% Argument will be (or rather expand to) zero if the reference is non-existent
-% yet. There was an \csa{Etoc@tocwithidfalse} flag which |1.08i| suppresses as it
-% is not used afterwards (since |1.08e| I think.)
+% yet.
% \begin{macrocode}
\ifx\Etoc@nexttoken\ref\Etoc@dothis{\expandafter\Etoc@ref\@gobble}\fi
% \end{macrocode}
@@ -9055,22 +8692,16 @@ of real structure in a \LaTeX{} document body).
\fi
\Etoc@tableofcontents
\endgroup\ifEtoc@mustclosegroup\endgroup\fi
- \Etoc@tocdepthreset % 1.07h, renamed 1.08h
- \etocaftertochook % 1.07g
+ \Etoc@tocdepthreset
+ \etocaftertochook
\@gobble\etoc@
}% \Etoc@t@bleofcontents
% \end{macrocode}
-% |1.07g| for consistency Etoc@ prefix added.
-%
-% |1.08c| does not use |\arabic| in the |\addtocontents| since I have seen
+% |1.08c| does not use |\arabic| in the \csa{addtocontents} since I have seen
% that in some circumstances (for some right to left languages with
% polyglossia or babel), one can not rely on |\arabic| having its default
% definition. As the number written here will be used later in an \csa{ifnum}, I
% should not have used it in the first place (done |2015/03/30|).
-%
-% |1.08i| moves elsewhere definition of \csbc{etoc@startlocaltoc}. In
-% \csbc{Etoc@table@fcontents} case it remains to be seen if a |\ref| follows which
-% could turn the TOC into a local one. Handled by \csbc{Etoc@t@bleofcontents}.
% \begin{macrocode}
\def\Etoc@table@fcontents{%
\refstepcounter{etoc@tocid}%
@@ -9081,13 +8712,6 @@ of real structure in a \LaTeX{} document body).
\addtocontents{toc}{\string\etoc@startlocaltoc{\the\c@etoc@tocid}}%
\Etoc@tocwithidtrue
\futurelet\Etoc@nexttoken\Etoc@t@bleofcontents}
-% \end{macrocode}
-% |1.07g| defines \csbc{etoctableofcontents} to be able to undo the evil and
-% brutal doings of some packages with |\tableofcontents|.
-%
-% |1.08| patches \ctanpkg{tableof}'s influence. Version |1.4a| or later of \ctanpkg{tableof}
-% is needed.
-% \begin{macrocode}
\let\etocaftertitlehook \@empty
\let\etocaftercontentshook \@empty
% \end{macrocode}
@@ -9098,18 +8722,18 @@ of real structure in a \LaTeX{} document body).
% \begin{macrocode}
\def\etoctableofcontents{%
\Etoc@openouttoc
- \Etoc@tocdepthset % new with 1.08h (\etocsetnexttocdepth)
- \begingroup % closed in \Etoc@t@bleofcontents or \Etoc@localtableofcontents
+ \Etoc@tocdepthset
+ \begingroup
% \end{macrocode}
-% Prior to its release |1.4c|, \ctanpkg{tableof} added a group pair via |\tof@begin|
-% and |\tof@finish|. This was removed at |1.4c|. So no need to do anything now
-% here about silencing |\tof@begingroup| and |\tof@endgroup|: they are
+% This group will be closed in \csbc{Etoc@t@bleofcontents} or
+% \csbc{Etoc@localtableofcontents}.
+%
+% Prior to its release |1.4c|, \ctanpkg{tableof} added a group pair via \csa{tof@begin}
+% and \csa{tof@finish}. This was removed at |1.4c|. So no need to do anything now
+% here about silencing \csa{tof@begingroup} and \csa{tof@endgroup}: they are
% inserted only in the \ctanpkg{tableof} private copy of the |.toc| file which is
% used by its own table of contents typesetting command.
%
-% |1.08i| removes definition of \csbc{etoc@startlocaltoc} from here. It is done
-% in \csbc{Etoc@localtableofcontents} or uses its default of |\@gobble|.
-%
% |1.09b| uses a |\def| in non-starred variant for allowing tricks to
% recognize later on if we are in a starred or non-starred case, whatever the
% user definition of \csbc{etocaftertitlehook} may be.
@@ -9126,9 +8750,10 @@ of real structure in a \LaTeX{} document body).
\let\tableofcontents\etoctableofcontents
\newcommand*\localtableofcontents{%
\Etoc@openouttoc
- \Etoc@tocdepthset % new with 1.08h (\etocsetnexttocdepth)
- \begingroup % closed in \Etoc@t@bleofcontents or \Etoc@localtableofcontents
+ \Etoc@tocdepthset
+ \begingroup
% \end{macrocode}
+% This group closed in \csbc{Etoc@t@bleofcontents} or \csbc{Etoc@localtableofcontents}.
% Same comment relative to \ctanpkg{tableof}. No need to do anything here.
% \begin{macrocode}
\@ifstar
@@ -9152,33 +8777,9 @@ of real structure in a \LaTeX{} document body).
}% \localtableofcontentswithrelativedepth
\let\Etoc@localtocdepth\c@tocdepth
% \end{macrocode}
-% |1.08| moves earlier the definitions of \csbc{Etoc@savedcontentsline} as
-% well as \csbc{Etoc@levellist}. It will thus not be operative to do
-% \csbc{etocsetlevel} from inside the title now. But perhaps it will be
-% easier to deal with tables.
-%
-% Also I remove a big |\@firstofone|, and use rather
-% \csbc{Etoc@gobbletoetoc@} for the gobbling case.
-%
-% Also, |1.08| modifies the code to do only expandable things after
+% The code does only expandable things after
% \csbc{Etoc@toctoc}, in order to allow opening of an alignment in the first
-% argument and closing in the second. Earlier versions had an
-% |\Etoc@@next| initially set to relax after the first \csbc{Etoc@toctoc}. I
-% was in 2012/2013 quite uneasy with the TeX conditionals hence wanted
-% for safety to move the things for the second invocation of
-% \csbc{Etoc@toctoc} after the |\fi\fi\fi|. I could define an |\afterfififi|
-% macro, but it should be ok as it is done here.
-%
-% |1.08e| moved the \csbc{Etoc@par} to \csbc{Etoc@tableofcontents}. This was needed
-% for the implementation of the emptiness test. It might have some impact in
-% fringe cases as the \csa{refstepcounter} is now done before the |\par| is
-% issued.
-%
-% |1.08e| suppresses the possibility to do a \csbc{tableofcontents}|\ref{foo}|
-% with |foo| the label of a global TOC: issueing \csbc{tableofcontents} alone
-% suffices. Allowed to simplify some code.
-%
-% |1.08g| moves \csbc{Etoc@par} to before \csbc{etocbeforetitlehook}, not after.
+% argument and closing in the second.
% \begin{macrocode}
\long\def\Etoc@gobbletoetoc@ #1\etoc@ {}
\newcommand\etocsettocstyle[2]{%
@@ -9189,27 +8790,30 @@ of real structure in a \LaTeX{} document body).
\expandafter\Etoc@gobbletoetoc@
\fi
\Etoc@par
- \etocbeforetitlehook % 1.07m
- \Etoc@storetocdepth % 1.07g
- \let\Etoc@savedcontentsline\contentsline % moved up here 1.08
+ \etocbeforetitlehook
+ \Etoc@storetocdepth
+ \let\Etoc@savedcontentsline\contentsline
\let\contentsline\Etoc@etoccontentsline
\ifEtoc@standard
- \else % moved here from \Etoc@toctoc (1.08)
+ \else
% \end{macrocode}
-% Prior to |1.08|, this was done in \csbc{Etoc@toctoc}
-%
-% |1.08k| defines here |\etocsavedchaptertocline|, |\etocsavedsectiontocline|,
-% and so on for all declared level names, again at each TOC and for the
-% duration of it.
+% |1.1a|'s \csbc{Etoc@lxyz} now fetches 3 not 2 arguments and the
+% \csa{l@section} etc... are not |\let| to it anymore, as they used to be here
+% formerly. For backwards compatibility the \csa{etocsavedchaptertocline}
+% etc... are still defined, but raise a deprecation warning.
% \begin{macrocode}
\def\Etoc@levellist@elt####1{%
- \expandafter\let\csname etocsaved####1tocline\expandafter\endcsname
- \csname l@####1\endcsname
- \expandafter\let\csname l@####1\endcsname\Etoc@lxyz}%
+ \expandafter\def\csname etocsaved####1tocline\endcsname
+ {\PackageWarning{etoc}{\expandafter\string\csname
+ etocsaved####1tocline\endcsname\space is deprecated
+ and to be\MessageBreak soon removed from etoc.
+ Use directly \expandafter\string\csname l@####1\endcsname\MessageBreak }%
+ \expandafter\let\csname etocsaved####1tocline\expandafter\endcsname
+ \csname l@####1\endcsname
+ \csname l@####1\endcsname
+ }%
+ }%
\Etoc@levellist
-% \end{macrocode}
-% |1.08k| removes |\let\chapternumberline\numberline| etc... done formerly here
-% \begin{macrocode}
\fi
% \end{macrocode}
% |1.09| makes \csbc{etocsetnexttocdepth} usable in |#1| (but this is not 100\%
@@ -9220,7 +8824,7 @@ of real structure in a \LaTeX{} document body).
% \begin{macrocode}
#1%
\Etoc@tocdepthset
- \ifEtoc@parskip\parskip\z@skip\fi %1.07d
+ \ifEtoc@parskip\parskip\z@skip\fi
\Etoc@aftertitlehook
% \end{macrocode}
% |1.09| has replaced former \csa{Etoc@localtop} (\emph{minus one}) by
@@ -9232,28 +8836,24 @@ of real structure in a \LaTeX{} document body).
\gdef\etoclocaltop{-\thr@@}%
\Etoc@toctoc
\etocaftercontentshook
- #2\@nobreakfalse % 1.07d: \@nobreakfalse moved here
- \Etoc@restoretocdepth % 1.07g. moved here from before #2 by 1.08
+ #2\@nobreakfalse
+ \Etoc@restoretocdepth
% \end{macrocode}
-% |\contentsline| was set to \csbc{Etoc@etoccontentsline} by a non-global |\let|,
+% \csa{contentsline} was set to \csbc{Etoc@etoccontentsline} by a non-global |\let|,
% and it will recover its normal value from exiting a scope limiting group.
-% But \ctanpkg{tableof} (since |1.4a|) under |\etocglobaldefstrue| does a global
-% redefinition of |\contentsline|. Its |\tof@finish| then does a global
-% restore of |\contentsline|, but it will be to the \etoc set
-% value. |\tof@finish| is active only if either the table of contents was
-% typeset using |\tableof|, |\tablenotof|, |\tableoftaggedcontents|, or
-% |\nextocwithtags| was used. If not active it is either undefined (no
+% But \ctanpkg{tableof} (since |1.4a|) under \csa{etocglobaldefstrue} does a global
+% redefinition of \csa{contentsline}. Its \csa{tof@finish} then does a global
+% restore of \csa{contentsline}, but it will be to the \etoc set
+% value. \csa{tof@finish} is active only if either the table of contents was
+% typeset using \csa{tableof}, \csa{tablenotof}, \csa{tableoftaggedcontents}, or
+% \csa{nextocwithtags} was used. If not active it is either undefined (no
% package \ctanpkg{tableof}) or |\@empty|. Prior to \ctanpkg{tableof} |1.4c|, the
-% |\tof@finish| closed a group and could be undefined as well, but not if
-% |\etocglobaldefstrue|.
-%
-% \etoc |1.09c| tested here only equality to |\@empty| to decide if it is
-% needed to globally restore |\contentsline| but this meant the global restore
-% was done systematically in case of absence of package \ctanpkg{tableof}.
+% \csa{tof@finish} closed a group and could be undefined as well, but not if
+% \csa{etocglobaldefstrue}.
%
-% If rather than |\@empty| the |\tof@finish| fall-back was |\relax| we could
-% use here |\@ifundefined| to check in one go (matters of speaking because
-% expansion of |\@ifundefined| is not in "one-go"). Maybe I should update
+% If rather than |\@empty| the \csa{tof@finish} fall-back was |\relax| we could
+% use here \csa{@ifundefined} to check in one go (matters of speaking because
+% expansion of \csa{@ifundefined} is not in "one-go"). Maybe I should update
% \ctanpkg{tableof}, but for time being I will simply add an extra test. All this is
% probably lots of time on irrelevant issue.
% \begin{macrocode}
@@ -9269,13 +8869,6 @@ of real structure in a \LaTeX{} document body).
\@gobble\etoc@
}% end of \Etoc@tableofcontents definition by \etocsettocstyle
}
-% \end{macrocode}
-% |1.08| hacks the begin parts to update therein the \csbc{ifEtoc@isfirst} flag
-% (|2015/03/09|).
-%
-% |1.08c| removes unneeded |\long| from the |\def|'s inside \csbc{etoc@setstyle}
-% (|2015/03/29|).
-% \begin{macrocode}
\def\etocsetstyle{\Etoc@standardfalse\etoc@setstyle}
\long\def\etoc@setstyle#1#2#3#4#5{%
\expandafter\def
@@ -9329,29 +8922,24 @@ of real structure in a \LaTeX{} document body).
% \ctanpkg{babel} and \ctanpkg{babel-french}, because \csa{frenchpartname} does things depending on
% the current value of the counter |part|. The code in recent \ctanpkg{babel-french} (but
% not yet |v2.5a| when \csbc{etocpartname} was introduced) constructs control
-% sequences |\ordinali|, etc... If the part counter is zero, this gives
-% |\ordinal|. Usually this is not defined, hence no error happens (as it is
+% sequences \csa{ordinali}, etc... If the part counter is zero, this gives
+% \csa{ordinal}. Usually this is not defined, hence no error happens (as it is
% constructed via |\csname|), but under class \ctanpkg{memoir} the bug showed up. All
% this to explain that I found out about this long lasting problem only on
% |2015/03/14|. Probably a sign that \etoc's own line styles are rarely
% used...
% \begin{macrocode}
-\def\etocpartname {Part}% modified 1.08b
+\def\etocpartname {Part}
\def\etocbookname {Book}
% \end{macrocode}
-% placeholder for comments
% The macro \csbc{etocdefaultlines} was initially called \csbc{etoctoclines}. Now
% \csbc{etoctoclines} just does \csa{Etoc@standardfalse}.
-% Version |1.07e| has rewritten entirely the stuff related to penalties and
-% \csa{addvspace}, as this was not satisfactory in the earlier versions, which
-% were written at a early stage in the development of the
-% package. Actually I am not fully satisfied with these line styles.
%
% Version |1.09f| wraps \csbc{etocbookname}, respectively
% \csbc{etocpartname}, in the book, resp. part, line styles inside a
% (potential) hyperlink together with the number.
% \begin{macrocode}
-\def\etocdefaultlines{\Etoc@standardfalse %
+\def\etocdefaultlines{\Etoc@standardfalse
%% `book':
\etoc@setstyle{@minustwo}
{\addpenalty\@M\etocskipfirstprefix}
@@ -9424,7 +9012,7 @@ of real structure in a \LaTeX{} document body).
\vbox{\etocname~%
\leaders\box\z@\hfil\box\tw@
\baselineskip\etocbaselinespreadone\baselineskip
- \par}% 1.08b adds the % here
+ \par}%
\else
\vbox{\etocname~%
\leaders\copy\z@\hfil\break
@@ -9486,7 +9074,7 @@ of real structure in a \LaTeX{} document body).
% \begin{macrocode}
\etoc@setstyle{@four}{}{}{}{}%
\etoc@setstyle{@five}{}{}{}{}%
-} % end of \etocdefaultlines!
+}
% \end{macrocode}
% The \csbc{etocinnertopsep} default value is too big as well as \csbc{etocbelowtocskip}
% and \csbc{etocabovetocskip}, I guess, but if I am remember correctly I chose them
@@ -9500,14 +9088,6 @@ of real structure in a \LaTeX{} document body).
\def\etocmulticoltolerance{200}
\def\etocdefaultnbcol{2}
\def\etocinnertopsep{2ex}
-% \end{macrocode}
-% |1.07i| adds a |\nobreak| before the \csbc{etocinnertopsep} and a test of vertical
-% mode to see if truly adding a |\par| is a reasonable idea, in the
-% case of single-column mode.
-%
-% |1.08b| revisits this old code written perhaps at a time I didn't know about
-% |\expandafter| !
-% \begin{macrocode}
\newcommand\etocmulticolstyle[2][\etocdefaultnbcol]{%
\etocsettocstyle
{\let\etocoldpar\par
@@ -9550,8 +9130,7 @@ of real structure in a \LaTeX{} document body).
\def\etocleftrulecolorcmd{\relax}
\def\etocrightrulecolorcmd{\relax}
% \end{macrocode}
-% |1.07i| moves the |\nobreak| to before the |\vskip\etocinnertopsep|
-% (especially important for the single column case).
+% placeholder
% \begin{macrocode}
\def\etoc@ruledheading #1{%
\hb@xt@\linewidth{\color@begingroup
@@ -9581,12 +9160,7 @@ of real structure in a \LaTeX{} document body).
{\end{multicols}}%
\addvspace{\etocbelowtocskip}}}
% \end{macrocode}
-% |1.07k| defines \csbc{Etoc@relax} and \csbc{etocbkgcolorcmd} as |\long|: the user
-% manual says to use |\renewcommand\etocbkgcolorcmd|, and an |\ifx| test is used
-% in the framed style. It was thus a bug to have non-long definitions before. Or
-% I could have said in the user manual to use |\renewcommand*|, or in
-% \csbc{etocframedstyle} I should test for the two, or I should pause to try to
-% remember about this code and think about it.
+% placeholder
% \begin{macrocode}
\def\etocframedmphook{\relax}
\long\def\etocbkgcolorcmd{\relax}
@@ -9806,7 +9380,9 @@ of real structure in a \LaTeX{} document body).
{\ensureonecol \par \begingroup \phantomsection
\ifx\Etoc@aftertitlehook\@empty
\else
- % non-starred variant
+% \end{macrocode}
+% non-starred variant
+% \begin{macrocode}
\ifmem@em@starred@listof
\else
\Etoc@addsuitablecontentsline
@@ -9828,7 +9404,7 @@ of real structure in a \LaTeX{} document body).
{\@nameuse {cfttocafterlisthook}\endgroup\restorefromonecol}}
% \end{macrocode}
% |1.09c| (|2020/05/15|) does an update as \ctanpkg{KOMA-script} has deprecated
-% |\iftocfeature|. Thanks to Bilel Omrani for report. I did not check
+% \csa{iftocfeature}. Thanks to Bilel Omrani for report. I did not check
% if cloning of KOMA code required some further updates.
%
% Finally |1.09f| added some such updates.
@@ -9841,9 +9417,6 @@ of real structure in a \LaTeX{} document body).
\def\etocscrartclstyle{%
\etocsettocstyle
{\let\if@dynlist\if@tocleft
-% \end{macrocode}
-% Added at |1.07m 2015/01/23|.
-% \begin{macrocode}
\def\@currext{toc}%
% \end{macrocode}
% |1.09f| adds this \csa{list@fname} definition hunk although
@@ -9858,10 +9431,6 @@ of real structure in a \LaTeX{} document body).
{}
{\if@twocolumn \aftergroup \twocolumn \onecolumn \fi }}
{}%
-% \end{macrocode}
-% |1.07k|: next line to do as within current |scrartcl 2013/12/19 v3.12|
-% KOMA-Script article class.^^A motivated \par in the env/macrocode/before hook
-% \begin{macrocode}
\etoc@Iftocfeature {toc}{numberline}{\def \nonumberline {\numberline {}}}{}%
\expandafter\tocbasic@listhead\expandafter {\list@fname}%
\begingroup \expandafter \expandafter \expandafter
@@ -9964,25 +9533,12 @@ of real structure in a \LaTeX{} document body).
{\renewcommand*\etocfontone{\normalfont\normalsize}
\renewcommand*\etocstandarddisplaystyle{\etocscrreprtstyle}
\Etoc@redefetocstyle{chapter}}{}
-% \end{macrocode}
-%|1.07k (2014/03/06)| adds the |appendix| to the list of known levels if class
-%\ctanpkg{memoir} is detected.
-% \begin{macrocode}
\@ifclassloaded{memoir}
{\etocsetlevel{appendix}{0}%
\renewcommand*\etocfontone{\normalfont\normalsize}
\etocmemoirtoctotocfmt{chapter}{\contentsname}%
\renewcommand*\etocstandarddisplaystyle{\etocmemoirstyle}
\Etoc@redefetocstyle{chapter}}{}
-% \end{macrocode}
-%|1.07k (2014/03/06)| adds the compatibility with the \ctanpkg{tocloft} package; in
-% compatibility mode etoc will obey the \ctanpkg{tocloft} customisation for the division
-% headings as well as for the toc title.
-%
-%|1.07l (2014/04/02)| fixes the bug from the \ctanpkg{tocloft} compatibility layer which
-%was \ctanpkg{memoir} incompatible: \ctanpkg{memoir} has its version of \ctanpkg{tocloft} which doesn't
-%have the |\if@cftnctoc| boolean.
-% \begin{macrocode}
\def\etoctocloftstyle {%
\etocsettocstyle
{\@cfttocstart\par\begingroup
@@ -10012,18 +9568,18 @@ of real structure in a \LaTeX{} document body).
}%
}
% \end{macrocode}
-% \LaTeX\ 2021 fall release lets |\contentsline| always grab four arguments,
-% so with |1.09e 2021/09/23| we make sure our |\addtocontents| will always
-% provide |\contentsline| with four arguments. This extra |{}| is done
+% \LaTeX\ 2021 fall release lets \csa{contentsline} always grab four arguments,
+% so with |1.09e 2021/09/23| we make sure our \csa{addtocontents} will always
+% provide \csa{contentsline} with four arguments. This extra |{}| is done
% without checking LaTeX's version by laziness, as an impact on documents
% compiled with former LaTeX could be visible only with very special contexts
% that only the author himself would ever consider.
%
-% Let's also add |\protected@file@percent| at |1.09e| although this is a
+% Let's also add \csa{protected@file@percent} at |1.09e| although this is a
% priori of no relevance as \etoc reads the toc file with |\endlinechar=-1|
% regime.
%
-% When using |\addcontentsline| nothing needs to be done as both things are
+% When using \csa{addcontentsline} nothing needs to be done as both things are
% handled by \LaTeX\ upstream.
% \begin{macrocode}
\def\Etoc@addtocontents #1#2%
@@ -10044,9 +9600,6 @@ of real structure in a \LaTeX{} document body).
}
\DeclareRobustCommand*{\etoctoccontentsline}
{\@ifstar{\Etoc@addcontentsline@}{\Etoc@addtocontents}}
-% \end{macrocode}
-% |1.09f| adds \csbc{etocimmediatetoccontentsline}.
-% \begin{macrocode}
\def\Etoc@addtocontents@immediately#1#2{%
\begingroup
\let\Etoc@originalwrite\write
@@ -10064,32 +9617,7 @@ of real structure in a \LaTeX{} document body).
\DeclareRobustCommand*{\etocimmediatetoccontentsline}
{\@ifstar{\Etoc@addcontentsline@@immediately}{\Etoc@addtocontents@immediately}}
% \end{macrocode}
-% All the following added for version |1.07g [2013/10/13]|. Motivated by
-% a demand about |tovsec2|. But it is impossible to make \ctanpkg{tocvsec2}
-% compatible, if not re-doing all `toc' macros in \ctanpkg{tocvsec2}
-% (|1.3, 2011/08/07|). I do not retain the stack idea, which does not convince
-% me as useful. The empty line in the |.toc| file is put there by
-% \ctanpkg{tocvsec2} (see its code line 143).
-%
-% I take this opportunity to add to the start of the toc file
-% |\let\etoc@startlocaltoc\@gobble| in case \etoc is not detected, I should
-% possibly have done that long ago (like I did in \ctanpkg{tableof}).
-%
-% In |1.07h| I decide that I should not have used |\Etoc@| but |\etoc@| for
-% \csa{Etoc@settocdepth}. So I now use lowercase and add a temporary line for
-% transition in the very improbable situation that someone actually did already
-% use the just released |1.07g|.
-%
-% In |1.07i| the deactivation of \csbc{etoc@settocdepth} done at the start
-% of the |.toc| file (for the case this file is used after having
-% removed \etoc from the document, or imported in another document) is
-% done via letting it to |\@gobble| rather than |\count@| (which would
-% not be ok, as what follows would be undefined too). The reason for the
-% |\count@| also used originally in \csbc{etocignoretoctocdepth} is that
-% when I first worked on |1.07g| I possibly had more than one token
-% after \csbc{etoc@settocdepth}, but I changed that later.
-%
-% |1.09| renames \csa{Etoc@resettocdepth} to \csbc{Etoc@restoretocdepth}.
+% placeholder
% \begin{macrocode}
\def\Etoc@storetocdepth {\global\c@etoc@tocdepth\c@tocdepth }
\def\Etoc@restoretocdepth {\global\c@tocdepth\c@etoc@tocdepth }
@@ -10117,7 +9645,7 @@ of real structure in a \LaTeX{} document body).
{\protect\etoc@settocdepth\expandafter\protect\csname Etoc@#1@@\endcsname}}%
}
% \end{macrocode}
-% |1.09f| adds \csbc{etocimmediatesettocdepth.toc}.
+% placeholder
% \begin{macrocode}
\def\etocimmediatesettocdepth #1#{\Etoc@set@toctocdepth@immediately}
\def\Etoc@set@toctocdepth@immediately #1{%
@@ -10134,16 +9662,9 @@ of real structure in a \LaTeX{} document body).
}%
}
% \end{macrocode}
-% |1.07h| adds the depth tags, and an even more general mechanism could be added
-% at some point: we could insert `action' tags and have the user map them to
-% arbitrary commands. For the time being we just provide
-% \csbc{etocdepthtag.toc}\marg{name} and \csbc{etocsettagdepth}\marg{tag\_name}\marg{level} where
-% level is numeric or
-% alphabetical. The numeric
-% level |-3| is now again not accepted by \csbc{etocsetlevel}, it can be used with
-% \csbc{etocsettagdepth} (which accepts equivalently |none|).
+% placeholder
% \begin{macrocode}
-\def\etocdepthtag #1#{\Etoc@depthtag } % \etocdepthtag.toc {name}
+\def\etocdepthtag #1#{\Etoc@depthtag }
\def\Etoc@depthtag #1{\addtocontents {toc}{\protect\etoc@depthtag {#1}}}
% \end{macrocode}
% |1.09f| adds \csbc{etocimmediatedepthtag.toc}. This can serve in some
@@ -10173,9 +9694,7 @@ of real structure in a \LaTeX{} document body).
% \end{macrocode}
% We must cancel all \ctanpkg{tocvsec2} toc-related actions. But a check must be done
% for the memoir class, as its \ctanpkg{tocvsec2} emulation does not have the
-% incompatible things etoc needs to revert. This extra check added with etoc
-% |1.07l|. Release |1.08g| modifies the info message under class memoir (and
-% downgrades it from warning to info).
+% incompatible things etoc needs to revert.
% \begin{macrocode}
\def\Etoc@tocvsec@err #1{\PackageError {etoc}
{the command \protect#1\space is incompatible with etoc}
@@ -10196,8 +9715,11 @@ of real structure in a \LaTeX{} document body).
\def\resettocdepth {\@ifstar {\Etoc@tocvsec@err \resettocdepth }%
{\Etoc@tocvsec@err \resettocdepth }%
}%
- \def\save@tocdepth #1#2#3{}% % if etoc is added to file previously
- \let\reset@tocdepth\relax % using tocvsec2
+% \end{macrocode}
+% If \etoc is added to a \LaTeX{} document using already \ctanpkg{tocvsec2}.
+% \begin{macrocode}
+ \def\save@tocdepth #1#2#3{}%
+ \let\reset@tocdepth\relax
\let\remax@tocdepth\relax
\let\tableofcontents\etoctableofcontents
\PackageWarning {etoc}
@@ -10208,22 +9730,7 @@ of real structure in a \LaTeX{} document body).
}%
}%
% \end{macrocode}
-% |1.07g|. Initial version of \csbc{etocsetnexttocdepth}.
-%
-% |1.08h|: avoid after-effect of consecutive uses of \csbc{etocsetnexttocdepth}
-% with no intervening TOC, due to the fact that the command did an immediate
-% modification of the |tocdepth counter|. This is now delayed until
-% the actual TOC typesetting.
-%
-% |1.09|: slight refactoring of \csbc{etocsetnexttocdepth} to let it be usable
-% from first argument of \csbc{etocsettocstyle} although it is even simpler to
-% use \csbc{etocsettocdepth} there, because the setting is automatically undone
-% at end of TOC.
-%
-% Recall that etoc allows to change all numeric
-% levels assigned to sectioning names, and the one used by
-% \csbc{etocsetnexttocdepth} is determined at time of next toc only, when
-% \csbc{Etoc@tocdepthset} will expand.
+% placeholder
% \begin{macrocode}
\def\invisibletableofcontents {\etocsetnexttocdepth {-3}\tableofcontents }%
\def\invisiblelocaltableofcontents
@@ -10245,13 +9752,8 @@ of real structure in a \LaTeX{} document body).
\global\let\Etoc@tocdepthset\@empty
}%
}%
-\let\Etoc@tocdepthreset\@empty % new 1.08h functioning of \etocsetnexttocdepth
-\let\Etoc@tocdepthset \@empty %
-% \end{macrocode}
-% |1.08k|. Serves to make local TOCs even after headings which were not added
-% to the |.toc| file; but of course the local TOCs can only display
-% sub-headings which made their way into the |.toc| file...
-% \begin{macrocode}
+\let\Etoc@tocdepthreset\@empty
+\let\Etoc@tocdepthset \@empty
\def\etocsetlocaltop #1#{\Etoc@set@localtop}%
\def\Etoc@set@localtop #1{%
\@ifundefined{Etoc@#1@@}%
@@ -10261,7 +9763,7 @@ of real structure in a \LaTeX{} document body).
{\protect\etoc@setlocaltop\expandafter\protect\csname Etoc@#1@@\endcsname}}%
}%
% \end{macrocode}
-% |1.09f| adds \csbc{etocimmediatesetlocaltop.toc}.
+% placeholder
% \begin{macrocode}
\def\etocimmediatesetlocaltop #1#{\Etoc@set@localtop@immediately}%
\def\Etoc@set@localtop@immediately #1{%
@@ -10346,11 +9848,6 @@ of real structure in a \LaTeX{} document body).
}%
\def\Etoc@setlocaltop@doends@dobegins
{\Etoc@doends\Etoc@dobegins\global\Etoc@skipprefixfalse}%
-% \end{macrocode}
-% \begin{macrocode}
-% |1.07h|. In order for the |.toc| file to be usable without error even
-% without etoc. In |1.07i| use of |\@gobble| for \csbc{etoc@settocdepth}.
-% \begin{macrocode}
\addtocontents {toc}{\protect\@ifundefined{etoctocstyle}%
{\let\protect\etoc@startlocaltoc\protect\@gobble
\let\protect\etoc@settocdepth\protect\@gobble
@@ -10366,11 +9863,11 @@ of real structure in a \LaTeX{} document body).
\etocstandarddisplaystyle
\etocobeytoctocdepth
\etocobeydepthtags
-\let\etocaftertochook \@empty % public for end user.
-\let\etocbeforetitlehook \@empty % new with 1.07m
+\let\etocaftertochook \@empty
+\let\etocbeforetitlehook \@empty
% \end{macrocode}
-% |listings| abuses |\tableofcontents| for its |\lstlistoflistings|. It
-% doesn't seem worth to let my version of |\tableofcontents| have to check for
+% |listings| abuses \csa{tableofcontents} for its \csa{lstlistoflistings}. It
+% doesn't seem worth to let my version of \csbc{tableofcontents} have to check for
% this special circumstance. So at |1.09d|, simply add this (and induced
% annoying updates to documentation at at least two locations):
% \begin{macrocode}
diff --git a/macros/latex/contrib/etoc/etoc.pdf b/macros/latex/contrib/etoc/etoc.pdf
index 1b24ab3fc6..545546bd53 100644
--- a/macros/latex/contrib/etoc/etoc.pdf
+++ b/macros/latex/contrib/etoc/etoc.pdf
Binary files differ
diff --git a/macros/luatex/latex/letgut/README.md b/macros/luatex/latex/letgut/README.md
index e38b789e5e..13ebf86e3e 100644
--- a/macros/luatex/latex/letgut/README.md
+++ b/macros/luatex/latex/letgut/README.md
@@ -8,7 +8,7 @@ to the newsletter “La Lettre GUTenberg” of GUTenberg, the French TeX User Gr
Release
-------
-2022-10-03 v0.9.4
+2023-01-14 v0.9.6
Development
-----------
diff --git a/macros/luatex/latex/letgut/doc/letgut-banner-code.pdf b/macros/luatex/latex/letgut/doc/letgut-banner-code.pdf
index b232420d44..9499196c47 100644
--- a/macros/luatex/latex/letgut/doc/letgut-banner-code.pdf
+++ b/macros/luatex/latex/letgut/doc/letgut-banner-code.pdf
Binary files differ
diff --git a/macros/luatex/latex/letgut/doc/letgut-code.pdf b/macros/luatex/latex/letgut/doc/letgut-code.pdf
index 1e8e46f241..b8f926da80 100644
--- a/macros/luatex/latex/letgut/doc/letgut-code.pdf
+++ b/macros/luatex/latex/letgut/doc/letgut-code.pdf
Binary files differ
diff --git a/macros/luatex/latex/letgut/doc/letgut.pdf b/macros/luatex/latex/letgut/doc/letgut.pdf
index 23f2bf4091..235ae56383 100644
--- a/macros/luatex/latex/letgut/doc/letgut.pdf
+++ b/macros/luatex/latex/letgut/doc/letgut.pdf
Binary files differ
diff --git a/macros/luatex/latex/letgut/doc/letgut.tex b/macros/luatex/latex/letgut/doc/letgut.tex
index 91006a60ea..01fbebb836 100644
--- a/macros/luatex/latex/letgut/doc/letgut.tex
+++ b/macros/luatex/latex/letgut/doc/letgut.tex
@@ -67,7 +67,7 @@
}
\author{Association GUTenberg}
\date{%
- Version 0.9.4 en date du \today%
+ Version 0.9.6 en date du \today%
\texorpdfstring{%
\\
\url{https://framagit.org/gutenberg/letgut}%
@@ -205,7 +205,9 @@ Les options de la \letgutcls{} peuvent être spécifiées de deux façons :
\item éditorial\footnote{Ou avertissement s'il n'est pas trouvé.} (cf. clé
\refKey{editorial}) ;
\item informations sur \gut{}\footnote{Ou avertissement si elles ne sont pas
- trouvées.} (cf. clé \refKey{informations}).
+ trouvées.} (cf. clé \refKey{informations}) ;
+ \item fichiers attachés au \pdf{} produit (cf. clé
+ \refKey{reverse-files-attachement}).
\end{itemize}
\end{itemize}
\end{docKeys}
@@ -280,7 +282,7 @@ Les options de la \letgutcls{} peuvent être spécifiées de deux façons :
\begin{itemize}
\item n'est pas employée (les mois et année en cours sont alors
utilisés) ;
- \item est employée sous la forme \refKey*{date}⅛=⅛\meta{année}⅛-⅛\meta{mois}
+ \item est employée sous la forme \refKey*{date}™=™\meta{année}™-™\meta{mois}
où \meta{année} et \meta{mois} doivent être des nombres entiers
positifs. Les garde-fous suivants sont mis en place :
\begin{itemize}
@@ -291,7 +293,7 @@ Les options de la \letgutcls{} peuvent être spécifiées de deux façons :
\end{itemize}
\end{itemize}
\item \enquote{\meta{texte}} si l'option est employée sous la forme
- \refKey*{date}⅛=⅛\meta{texte}.
+ \refKey*{date}™=™\meta{texte}.
\end{itemize}
\end{docKey}
}
@@ -342,16 +344,30 @@ Les options de la \letgutcls{} peuvent être spécifiées de deux façons :
a pour effet que cette table des matières est détaillée au maximum (son niveau
de profondeur allant jusqu'aux sous-paragraphes), ce qui peut être utile lors
de la conception d'un numéro de la \lettre{}.
+
+ \begin{dbremark}{Tables des matières locales}{}
+ Chaque article peut contenir une table des matières locale, affichée au
+ moyen de la commande \docAuxCommand{localtableofcontents} (fournie par le
+ \package*{etoc} chargé en sous-main par la \letgutcls{}). Le niveau de
+ profondeur est par défaut celui des sections mais cela peut être modifié en
+ la faisant précéder de la commande \docAuxCommand{etocsetnexttocdepth} (dont
+ l'argument est par exemple ™subsection™).
+ \end{dbremark}
\end{docKey}
-\begin{dbremark}{Tables des matières locales}{}
- Chaque article peut contenir une table des matières locale, affichée au moyen
- de la commande \docAuxCommand{localtableofcontents} (fournie par le
- \package*{etoc} chargé en sous-main par la \letgutcls{}). Le niveau de
- profondeur est par défaut celui des sections mais cela peut être modifié en la
- faisant précéder de la commande \docAuxCommand{etocsetnexttocdepth} (dont
- l'argument est par exemple ⅛subsection⅛).
-\end{dbremark}
+\begin{docKey}{reverse-files-attachement}{}{\valinitdef[pas de valeur]}
+ Si, et seulement si, la \lettre{} est à la fois en version pour les lecteurs
+ (cf. \refKey{for-readers}) et en sortie écran (cf. \refKey{screen}), chacun
+ des fichiers nécessaires (et suffisants) à la compilation d'un de ses articles
+ est :
+ \begin{itemize}
+ \item attaché au \pdf{} produit ;
+ \item accessible en cliquant sur l'hyperlien correspondant en forme de
+ trombone : \noattachfile[icon=Paperclip] ;
+ \end{itemize}
+ L'option \refKey{reverse-files-attachement} inverse ce comportement par
+ défaut.
+\end{docKey}
\subsection{Options autres}
\label{sec:options-autres}
@@ -382,7 +398,7 @@ Si la commande \docAuxCommand{title}\marg{titre} est
\begin{dbwarning}{\docAuxCommand{title} et \docAuxCommand{author}
$\neq$ avant et après \lstinline+\\begin\{document\}+}{}
Les commandes \docAuxCommand{title} et \docAuxCommand{author} ne se comportent
- pas de la même façon avant et après ⅛\begin{document}⅛ (cf. sections
+ pas de la même façon avant et après ™\begin{document}™ (cf. sections
\nameref{sec:structuration} \vpageref{sec:structuration} et
\nameref{sec:sign-des-articl} \vpageref{sec:sign-des-articl}).
\end{dbwarning}
@@ -404,12 +420,29 @@ Si la commande \docAuxCommand{title}\marg{titre} est
\end{itemize}
\end{dbwarning}
-\begin{docCommand}{inputarticle}{\marg{fichier enfant}}
+\begin{docCommands}
+ {
+ {
+ doc name = inputarticle,
+ doc parameter = \marg{fichier enfant},
+ },
+ {
+ doc name = inputarticle*,
+ doc parameter = \marg{fichier enfant},
+ },
+ }
Cette commande permet d'importer le contenu d'un article stocké dans un
\meta{fichier enfant}\file{.tex}.
+ En version étoilée, les fichiers nécessaires (et suffisants) à la compilation
+ de l'article ne sont pas attachés au \pdf{} produit (cf. clé
+ \refKey{reverse-files-attachement}).
+
En plus de l'importation proprement dite, cette commande procède à un certain
nombre de réinitialisations.
+\end{docCommands}
+
+\begin{docCommand}{inputarticle}{\marg{fichier enfant}}
\end{docCommand}
\section{Structuration}
@@ -484,6 +517,10 @@ On lira avec intérêt la section \enquote{\nameref{sec:acronymes}}
doc parameter = \brackets{\meta{données$_1$} and \meta{données$_2$}[ and ...]}
},
{
+ doc name = person*,
+ doc parameter = \brackets{\meta{données$_1$} and \meta{données$_2$}[ and ...]}
+ },
+ {
doc name = author,
doc parameter = \marg{données}
},
@@ -491,6 +528,10 @@ On lira avec intérêt la section \enquote{\nameref{sec:acronymes}}
doc name = author,
doc parameter = \brackets{\meta{données$_1$} and \meta{données$_2$}[ and ...]}
},
+ {
+ doc name = author*,
+ doc parameter = \brackets{\meta{données$_1$} and \meta{données$_2$}[ and ...]}
+ },
}
\index{auteur}
\index{personne}
@@ -501,18 +542,20 @@ On lira avec intérêt la section \enquote{\nameref{sec:acronymes}}
étant spécifiées :
\begin{description}
\item[pour un individu unique] selon l'un des formats suivants :
- \begin{itemize}
- \item \meta{nom}
- \item \meta{nom}⅛, ⅛\meta{prénom}
- \item \meta{nom}⅛, ⅛\meta{prénom}⅛, ⅛\meta{titre}
- \end{itemize}
-\item[pour des individus multiples :]\leavevmode
- \begin{itemize}
- \item selon le même schéma que pour un individu unique ;
- \item les \meta{données} de chacun des individus étant séparées par le mot clé
- ⅛and⅛.
- \end{itemize}
+ \begin{itemize}
+ \item \meta{nom}
+ \item \meta{nom}™, ™\meta{prénom}
+ \item \meta{nom}™, ™\meta{prénom}™, ™\meta{titre}
+ \end{itemize}
+ \item[pour des individus multiples :]\leavevmode
+ \begin{itemize}
+ \item selon le même schéma que pour un individu unique ;
+ \item les \meta{données} de chacun des individus étant séparées par le mot clé
+ ™and™.
+ \end{itemize}
\end{description}
+ Les version étoilées de ces commandes trient alphabétiquement les listes de
+ personnes ou d'auteurs.
\end{docCommands}
Indépendamment de la casse utilisée en entrée, pour chaque \meta{nom} et
@@ -665,8 +708,10 @@ Unicode a prévu le caractère \Ucode[symbole numéro]{2116}.
{
{ doc name = gutenberg },
{ doc name = gut },
- % { doc name = lettre },
- % { doc name = lettregut },
+ { doc name = assogut },
+ { doc name = Assogut },
+ { doc name = lettres },
+ { doc name = lettresgut },
{ doc name = cahier },
{ doc name = cahiers },
{ doc name = cahiergut },
@@ -689,23 +734,25 @@ Unicode a prévu le caractère \Ucode[symbole numéro]{2116}.
\centering
\begin{tabular}{ll}
\toprule
- \refCom{gutenberg} & \gutenberg \\
- \refCom{gut} & \gut \\
- % \refCom{lettre} & \lettre \\
- % \refCom{lettregut} & \lettregut \\
- \refCom{cahier} & \cahier \\
- \refCom{cahiergut} & \cahiergut \\
- \refCom{cahiers} & \cahiers \\
- \refCom{cahiersgut} & \cahiersgut \\ \midrule
- \refCom{letgut} & \letgut \\
- \refCom{letgutcls} & \letgutcls \\ \midrule
- \refCom{knuth} & \knuth \\
- \refCom{lamport} & \lamport \\
- \refCom{tl} & \tl \\
- \refCom{tugboat} & \tugboat \\ \midrule
- \refCom{linux} & \linux \\
- \refCom{macos} & \macos \\
- \refCom{windows} & \windows \\ \bottomrule
+ \refCom{gutenberg} & \gutenberg \\
+ \refCom{gut} & \gut \\
+ \refCom{assogut} & \assogut \\
+ \refCom{Assogut} & \Assogut \\
+ \refCom{lettres} & \lettres \\
+ \refCom{lettresgut} & \lettresgut \\
+ \refCom{cahier} & \cahier \\
+ \refCom{cahiergut} & \cahiergut \\
+ \refCom{cahiers} & \cahiers \\
+ \refCom{cahiersgut} & \cahiersgut \\ \midrule
+ \refCom{letgut} & \letgut \\
+ \refCom{letgutcls} & \letgutcls \\ \midrule
+ \refCom{knuth} & \knuth \\
+ \refCom{lamport} & \lamport \\
+ \refCom{tl} & \tl \\
+ \refCom{tugboat} & \tugboat \\ \midrule
+ \refCom{linux} & \linux \\
+ \refCom{macos} & \macos \\
+ \refCom{windows} & \windows \\ \bottomrule
\end{tabular}
\caption{Effet des commandes de raccourcis}
\label{tab:raccourcis}
@@ -754,7 +801,8 @@ de \docAuxCommand{section}%
\ExplSyntaxOff
\begin{ltx-code-result}[title addon=emploi de la commande \refCom{lettrenumber},listing options app={deletekeywords={[6]{cours,lettre}}}]
-Si le numéro de la \lettre{} en cours est 46, celui de la \lettre
+Si le numéro de la \lettre{} en cours est 46,
+celui de la \lettre :
\begin{enumerate}
\item en cours est \lettrenumber ;
\item en cours est le \lettrenumber* ;
@@ -777,7 +825,7 @@ Si le numéro de la \lettre{} en cours est 46, celui de la \lettre
\enquote{\lettre} et \enquote{\lettregut}, le cas échéant suivies du numéro
de la \lettre{} :
\begin{description}
- \item[en cours] si l'\meta{argument optionnel} est un point (⅛.⅛) ;
+ \item[en cours] si l'\meta{argument optionnel} est un point (™.™) ;
\item[décalé de celui en cours] de ce qui est spécifié si l'\meta{argument optionnel} est un
entier relatif signé\footref{entier-signe} ;
\item[spécifié] si l'\meta{argument optionnel} est autre.
@@ -801,8 +849,7 @@ Si le numéro de la \lettre{} en cours est 46, on a :
\item \lettre*[43]
\item \lettre*
\end{enumerate}
-On fait usage de ces commandes
-dans la \lettregut*[.].
+On fait usage de ces commandes dans la \lettregut*[.].
\end{ltx-code-result}
\subsection{Touches de clavier}
@@ -810,7 +857,7 @@ dans la \lettregut*[.].
Afin de disposer d'un moyen simple, riche et élégant pour composer des touches
de clavier, la \letgutcls{} s'appuie sur le \package*{biolinum} et notamment sa
-commande ⅛\LKey⅛. Cette dernière a été légèrement étendue de façon à faciliter
+commande ™\LKey™. Cette dernière a été légèrement étendue de façon à faciliter
la saisie pour toutes les touches des diacritiques utilisés en français.
\begin{ltx-code-result}[title addon=touches de clavier]
@@ -899,7 +946,7 @@ environnements \enquote{verbatim} suivants.
ces codes et résulats :
\begin{itemize}
\item l'un sous l'autre par défaut ;
- \item l'un à gauche de l'autre si l'option ⅛sidebyside⅛ est
+ \item l'un à gauche de l'autre si l'option ™sidebyside™ est
employée.
\end{itemize}
\end{enumerate}
@@ -907,7 +954,7 @@ environnements \enquote{verbatim} suivants.
\begin{dbwarning}{Exemples de codes avec résultats : possiblement
flottants}{exemples-flottants}
- Si l'option ⅛sidebyside⅛ est passée à l'un ou l'autre des
+ Si l'option ™sidebyside™ est passée à l'un ou l'autre des
environnements \refEnv{ltx-code-result} et \refEnv{ltx-code-external-result},
l'exemple :
\begin{itemize}
@@ -932,7 +979,7 @@ Ces trois environnements admettent des \meta{options} :
\begin{itemize}
\item (toutes) celles acceptées par l'environnement
\docAuxEnvironment{tcblisting} et la commande \docAuxCommand{newtcblisting}
- fournis par la bibliothèque ⅛listings⅛ du
+ fournis par la bibliothèque ™listings™ du
\package*{tcolorbox}\footnote{Et, aussi, les commandes
\docAuxCommand{DeclareTCBListing} et assimilées fournies par la bibliothèque
\lstinline+xparse+ de ce package.}. Elles permettent notamment de surcharger
@@ -940,29 +987,29 @@ Ces trois environnements admettent des \meta{options} :
\begin{itemize}
\item de faire figurer l'éventuel résultat, non pas sous le code comme c'est
le cas par défaut, mais en regard (à droite) au moyen de l'option
- ⅛sidebyside⅛ ;
+ ™sidebyside™ ;
\item de supprimer les numéros de ligne au moyen de l'option
\begin{ltx-code}
listing options={numbers=none}
\end{ltx-code}
\end{itemize}
\item trois spécifiques à ces environnements :
- \begin{docKey*}{title addon}{=\meta{supplément au titre}}{\valinitdef}
- Cette option permet d'adjoindre un \meta{supplément au titre} de ces
- exemples, qui sont par défaut et automatiquement \enquote{Exemple \meta{n}}.
- \end{docKey*}
- \begin{docKey*}{result width}{=\meta{longueur}}{\valinitdef[\docAuxCommand*{linewidth}]}
+ \begin{docKey}{title addon}{=\meta{supplément}}{\valinitdef}
+ Cette option permet d'adjoindre au titre de ces exemples, qui sont par
+ défaut et automatiquement \enquote{Exemple \meta{n}}, un \meta{supplément}.
+ \end{docKey}
+ \begin{docKey}{result width}{=\meta{longueur}}{\valinitdef[\docAuxCommand*{linewidth}]}
Cette option, utile seulement pour l'environnement
\refEnv{ltx-code-external-result}, permet de spécifier une largeur autre que
celle initiale pour le fichier image du résultat, compilé indépendamment de
la \lettre{}.
- \end{docKey*}
- \begin{docKey*}{reference text}{=\meta{texte}}{\valinitdef[Cf. exemple \meta{n} page \meta{q}.]}
+ \end{docKey}
+ \begin{docKey}{reference text}{=\meta{texte}}{\valinitdef[Cf. exemple \meta{n} page \meta{q}.]}
Cette option n'a d'effet que :
\begin{itemize}
\item avec l'un ou l'autre des environnements \refEnv{ltx-code-result} et
\refEnv{ltx-code-external-result} ;
- \item lorsque l'option ⅛sidebyside⅛ leur est passée ;
+ \item lorsque l'option ™sidebyside™ leur est passée ;
\item lorsque l'exemple s'avère se trouver sur une page autre que
celle de son point d'insertion.
\end{itemize}
@@ -972,9 +1019,9 @@ listing options={numbers=none}
s'affranchir de ce texte en recourant à \lstinline+reference text=\{\}+.}.
\begin{dbwarning}{\refKey{reference text} avant \lstinline+sidebyside+}{}
Pour qu'elle soit prise en compte, l'option \refKey{reference text} doit
- être passée \emph{avant} l'option ⅛sidebyside⅛.
+ être passée \emph{avant} l'option ™sidebyside™.
\end{dbwarning}
- \end{docKey*}
+ \end{docKey}
\end{itemize}
\subsubsection{Coloration syntaxique}
@@ -984,16 +1031,16 @@ Par défaut, en début de document et de chaque fichier importé au moyen de
\refCom{inputarticle}, le langage supposé dans ces exemples de codes est
\hologo{TeX}, chargé (seulement) avec ses \enquote{dialectes} :
\begin{itemize}
-\item ⅛primitive⅛, ⅛common⅛, ⅛plain⅛, ⅛LaTeX⅛, ⅛AlLaTeX⅛ fournis par le
+\item ™primitive™, ™common™, ™plain™, ™LaTeX™, ™AlLaTeX™ fournis par le
\package*{listings} ;
-\item ⅛classes⅛ fourni par \letgutcls{} (répertoriant les classes disponibles
+\item ™classes™ fourni par \letgutcls{} (répertoriant les classes disponibles
sur le \ctan{}).
\end{itemize}
Une conséquence notable est la suivante :
\begin{dbwarning}{Coloration syntaxique réduite par défaut}{}
La coloration syntaxique dans les exemples de codes n'est par défaut active
- que pour le langage \hologo{TeX} et ses dialectes ⅛primitive⅛, ⅛common⅛,
- ⅛plain⅛, ⅛LaTeX⅛, ⅛AlLaTeX⅛ et ⅛classes⅛.
+ que pour le langage \hologo{TeX} et ses dialectes ™primitive™, ™common™,
+ ™plain™, ™LaTeX™, ™AlLaTeX™ et ™classes™.
\end{dbwarning}
Il est néanmoins possible de spécifier d'autres langages et dialectes au moyen
@@ -1049,7 +1096,7 @@ fournit la commande à arguments \enquote{verbatim} suivante.
Il est possible de surcharger les réglages par défaut de cette commande au
moyen d'\meta{options} qui sont (toutes) celles acceptées par l'environnement
\docAuxEnvironment{tcblisting} et la commande \docAuxCommand{newtcblisting}
- fournis par la bibliothèque ⅛listings⅛ du \package*{tcolorbox}\footnote{Et,
+ fournis par la bibliothèque ™listings™ du \package*{tcolorbox}\footnote{Et,
aussi, les commandes \docAuxCommand{DeclareTCBListing} et assimilées
fournies par la bibliothèque \lstinline+xparse+ de ce package.}.
\end{docCommand}
@@ -1113,7 +1160,7 @@ rg -g 0,25s user 0,23s system 320% cpu 0,150 total
\begin{dbwarning}{Caractère d'échappement des listings}{}
\lstset{escapechar=}%
- La \letgutcls{} définit ⅛£⅛ comme caractère d'échappement dans \LaTeX{} au
+ La \letgutcls{} définit ™£™ comme caractère d'échappement dans \LaTeX{} au
sein d'un listing.
\end{dbwarning}
@@ -1127,37 +1174,38 @@ Au besoin, on pourra désactiver ce caractère actif au moyen de
\docAuxCommand{lstinline} du \package*{listings} mais, pour
simplifier la tâche, la \letgutcls{} définit comme équivalent court
de \docAuxCommand{lstinline} le caractère unicode %
- \lstDeleteShortInline⅛%
- \texttt{⅛} %
- \lstMakeShortInline⅛%
- (U+215B)\footnote{Peu susceptible d'être utilisé dans du texte
+ \lstDeleteShortInline™%
+ \texttt{™} %
+ \lstMakeShortInline™%
+ (\Ucode{2122})\footnote{Peu susceptible d'être utilisé dans du texte
ordinaire.}.
\end{dbwarning}
Autrement dit, la \letgutcls{} contient l'instruction\footnote{À peu
de choses près.} :
- \lstDeleteShortInline⅛
+ \lstDeleteShortInline™
\begin{ltx-code}
-\lstMakeShortInline£\texttt{⅛}£
+\lstMakeShortInline£\texttt{™}£
\end{ltx-code}
Au besoin, on pourra désactiver ce caractère actif au moyen de :
\begin{ltx-code}
-\lstDeleteShortInline£\texttt{⅛}£
+\lstDeleteShortInline£\texttt{™}£
\end{ltx-code}
-\begin{dbremark}{Obtention du caractère \texttt{⅛}}{}
+\begin{dbremark}{Obtention du caractère \texttt{™}}{}
Le caractère %
-\texttt{⅛} %
+\texttt{™} %
s'obtient :
\begin{itemize}
-\item sous \linux{} : \LKeyShiftAltGrX{2}\footnote{Touche \LKey{2} du clavier principal.} ;
+\item sous \linux{} : \LKeyShiftAltGrX{8}\footnote{Touche \LKey{8} du clavier
+ principal.} ;
\item sous \macos{} : à l'aide du visualiseur de caractères\footnote{Et
possiblement de raccourcis claviers personnels.} ;
-\item sous \windows{} : \LKeyAltX{8}+\LKey{5}+\LKey{3}+\LKey{9}.
+\item sous \windows{} : \LKeyAltX{0}+\LKey{1}+\LKey{5}+\LKey{3}.
\end{itemize}
\end{dbremark}
- \lstMakeShortInline⅛%
+ \lstMakeShortInline™%
\section{Nouveautés apparues sur le \ctan}
\label{sec:rubr-cons-aux}
@@ -1229,6 +1277,16 @@ Les fiches de lecture d'un livre sont créées au moyen de l'environnement
\begin{docKey}{bibkey}{=\meta{clé}}{\valinitdef}
Cette clé permet de spécifier la \meta{clé} identifiant l'entrée d'un
\file*{.bib} contenant les données bibliographiques du document rapporté.
+ \begin{dbwarning}{Fichier de bibliographie}{}
+ Ces données bibliographiques doivent se trouver dans un fichier
+ \meta{bibliographie}\file{.bib}, structurées selon le format du
+ \package*{biblatex} et chargées en préambule (par exemple dans le
+ fichier local de configuration, cf. \vpageref{sec:fichier-local-de}) au
+ moyen de la commande :
+\begin{ltx-code}
+\addbibressource{£\meta{bibliographie}£.bib}
+\end{ltx-code}
+ \end{dbwarning}
\end{docKey}
\item[fortement conseillée :]
\begin{docKey}{frontcover}{=\meta{fichier}}{\valinitdef}
@@ -1280,10 +1338,10 @@ commande dédiée \refCom{letgutacro}.
être employé au moyen des commandes fournies par le \package*{acro}, par
exemple :
\begin{itemize}
- \item ⅛\ac{⅛\meta{court}⅛}⅛\footnote{Acronyme automatiquement affiché sous sa
+ \item ™\ac{™\meta{court}™}™\footnote{Acronyme automatiquement affiché sous sa
forme complète à sa 1\iere{} occurrence, sous sa forme courte à ses
occurrences suivantes.} ;
- \item ⅛\acs{⅛\meta{court}⅛}⅛\footnote{Acronyme affiché sous sa forme courte
+ \item ™\acs{™\meta{court}™}™\footnote{Acronyme affiché sous sa forme courte
seulement.}.
\end{itemize}
Toutefois, pour simplifier l'usage de ces acronymes, la \letgutcls{} crée
@@ -1301,8 +1359,8 @@ commande dédiée \refCom{letgutacro}.
%
qui agit comme :
\begin{itemize}
- \item ⅛\ac{⅛\meta{court}⅛}⅛ en version non étoilée ;
- \item ⅛\acs{⅛\meta{court}⅛}⅛ en version étoilée.
+ \item ™\ac{™\meta{court}™}™ en version non étoilée ;
+ \item ™\acs{™\meta{court}™}™ en version étoilée.
\end{itemize}
\end{docCommand}
Ainsi, l'acronyme utilisé via \docAuxCommand{\meta{court}} figure, pour ses
@@ -1412,6 +1470,143 @@ insère un filet horizontal.
Cette commande permet d'accentuer la séparation entre deux articles.
\end{docCommand}
+\section{Annonces}
+\label{sec:annonces}
+
+Afin de présenter aisément et de façon homogène les annonces à paraître dans la
+\lettre{}, la \letgutcls{} fournit l'environnement \refEnv{announcement}.
+
+\begin{docEnvironment}[doclang/environment content=annonce]{announcement}{\oarg{couleur}\marg{titre}}
+ Cet environnement est dédié aux \meta{annonce}s. La spécification :
+ \begin{itemize}
+ \item d'un \meta{titre} (pouvant toutefois être vide) est obligatoire ;
+ \item d'une \meta{couleur} (du tire et des ornements) autre que celle (noire)
+ par défaut est possible.
+ \end{itemize}
+\end{docEnvironment}
+
+\begin{ltx-code-result}[title addon=annonces]
+\begin{announcement}[red!35!black]{Convocation \acs{ag} ordinaire}
+ Les adhérents de l'\assogut{} sont invités à participer à
+ l'\textbf{assemblée générale \emph{ordinaire}} de l'association
+ le \textbf{dimanche 11 décembre 2022}.
+\end{announcement}
+\end{ltx-code-result}
+
+\section{Rébus}
+\label{sec:rebus}
+
+\tcbstartrecording\relax
+Afin de présenter aisément et de façon homogène les rébus à paraître dans la
+\lettre{}, la \letgutcls{} fournit l'environnement \refEnv{rebus}.
+
+\begin{docEnvironment}[doclang/environment content=rébus]{rebus}{\oarg{options}}
+ Cet environnement affiche un \meta{rébus} et s'emploie différemment selon que
+ la solution est prévue de figurer dans la \lettre{} :
+ \begin{description}
+ \item[en cours :] le rébus et sa solution doivent alors être séparées par
+ la commande \refCom{solution} ;
+ \item[suivante :] l'option \refKey{no solution} doit alors être employée.
+ \end{description}
+ La boîte contenant le rébus mentionne que sa solution se trouve,
+ respectivement :
+ \begin{itemize}
+ \item \enquote{page \meta{n}} ou \enquote{ci-dessous} ;
+ \item \enquote{dans la prochaine \lettre{}}.
+ \end{itemize}
+
+ La commande séparant le rébus et sa solution prévue de figurer dans la
+ \lettre{} en cours est :
+ \begin{docCommand}{solution}{}
+ Cette commande débute la solution d'un rébus à l'intérieur d'un environment
+ \refEnv{rebus}.
+ \end{docCommand}
+
+ En outre, cet environnement admet des \meta{options} :
+ \begin{itemize}
+ \item (toutes) celles acceptées par les environnements \refAux{tcolorbox} et
+ assimilés du \package*{tcolorbox}, destinées à, le cas échéant, modifier la
+ mise en forme par défaut de la boîte contenant le rébus ;
+ \item deux qui lui sont propres :
+ \begin{docKey}{title addon}{=\meta{supplément}}{\valinitdef}
+ Cette option permet d'adjoindre au titre d'un rébus, qui est par défaut et
+ automatiquement \enquote{Rébus}, un \meta{supplément} alors en italique et
+ entre parenthèses.
+ \end{docKey}
+ \begin{docKey}{no solution}{}{\valinitdef[\docValue*{false}][\docValue*{true}]}
+ Cette option est à spécifier pour un rébus dont la solution ne doit figurer
+ que dans la prochaine \lettre{}.
+ \end{docKey}
+ \end{itemize}
+\end{docEnvironment}
+
+Ainsi le code :
+
+\begin{ltx-code}[title addon=rébus]
+\begin{rebus}[no solution]
+ Rébus \emph{sans} solution dans le présent numéro.
+\end{rebus}
+\begin{rebus}
+ Rébus \emph{avec} solution dans le présent numéro.
+ \solution
+ Solution du rébus.
+\end{rebus}
+\end{ltx-code}
+
+donne-t-il les résultats suivants\footnote{Éventuellement pas immédiatement à la
+ suite car les boîtes contenant les rébus sont flottantes.}.
+
+\begin{rebus}[no solution,nofloat]
+ Rébus \emph{sans} solution dans le présent numéro.
+\end{rebus}
+\begin{rebus}[nofloat]
+ Rébus \emph{avec} solution dans le présent numéro.
+ \solution
+ Solution du rébus.
+\end{rebus}
+
+La \letgutcls{} fournit bien sûr le moyen d'afficher les solutions des rébus de
+la \lettre{}
+soit en cours, soit précédente.
+
+\begin{docCommand}{rebussolution}{\oarg{solution}\oarg{numéro}\oarg{options}}
+ Cette commande affiche la ou les solutions du ou des rébus qui figurent dans
+ la \lettre{} :
+ \begin{description}
+ \item[en cours :] (commande \refCom{solution}) si ses 1\ier{} et
+ 2\ieme{} arguments optionnels \meta{solution} et \meta{numéro} sont
+ inutilisés ;
+ \item[précédente :] si son 1\ier{} argument optionnel \meta{solution} est
+ utilisé. Selon que 2\ieme{} argument optionnel \meta{numéro} est spécifié ou
+ pas, il est indiqué que la \meta{solution} est celle d'un rébus figurant
+ dans la \lettre{} :
+ \begin{itemize}
+ \item \meta{numéro} ;
+ \item précédente.
+ \end{itemize}
+ \end{description}
+ Cette commande admet comme \meta{options} (toutes) celles acceptées par les
+ environnements \refAux{tcolorbox} et assimilés du \package*{tcolorbox},
+ destinées à, le cas échéant, modifier la mise en forme par défaut de la boîte
+ contenant la solution du rébus.
+\end{docCommand}
+
+Ainsi le code :
+
+\begin{ltx-code}[title addon=solution de rébus]
+\rebussolution
+\rebussolution[Solution du rébus]
+\rebussolution[Solution du rébus][49]
+\end{ltx-code}
+
+donne-t-il donne-t-il les résultats suivants\footnote{Éventuellement pas
+ immédiatement à la suite car les boîtes contenant les solutions des rébus sont
+ flottantes.}.
+
+\rebussolution
+\rebussolution[Solution du rébus]
+\rebussolution[Solution du rébus][49]
+
\section{Boîtes d'alertes}
\label{sec:boites-dalertes}
@@ -1607,7 +1802,7 @@ dressons ci-après la liste en les regroupant selon ces deux catégories.
\item[babel] support multilingue.
\begin{description}
\item[Options :] \docAuxKey*{english}, \docAuxKey*{french} ;
- \item[Configuration] ⅛\renewcommand*\frenchtablename{Tableau}⅛.
+ \item[Configuration] ™\renewcommand*\frenchtablename{Tableau}™.
\end{description}
\item[varioref] références de pages intelligentes.
\begin{description}
@@ -1647,11 +1842,11 @@ dressons ci-après la liste en les regroupant selon ces deux catégories.
\item[Options :]\leavevmode{}
\begin{itemize}
\item \docAuxKey*{first-style=footnote} ;
- \item \docAuxKey*{format/short=}⅛\scshape⅛ ;
- \item \docAuxKey*{format/foreign=}⅛\em⅛ ;
+ \item \docAuxKey*{format/short=}™\scshape™ ;
+ \item \docAuxKey*{format/foreign=}™\em™ ;
\item \docAuxKey*{foreign/display} ;
\item \docAuxKey*{locale/display} ;
- \item \docAuxKey*{locale/format=}⅛\upshape⅛.
+ \item \docAuxKey*{locale/format=}™\upshape™.
\end{itemize}
\end{description}
\item[hyperref] prise en charge étendue de l'hypertexte.
diff --git a/macros/luatex/latex/letgut/source/letgut.org b/macros/luatex/latex/letgut/source/letgut.org
index dd76cbe8d7..fb91c08587 100644
--- a/macros/luatex/latex/letgut/source/letgut.org
+++ b/macros/luatex/latex/letgut/source/letgut.org
@@ -54,7 +54,7 @@ new versions of the class on CTAN.
% This field contains the version of the package.
% The value is optional.
% The value is restricted to 32 characters.
- \version{0.9.4 2022-10-03}
+ \version{0.9.6 2023-01-14}
% -------------------------------------------------------------------------
% This field contains the name of the author(s).
% The value is optional.
@@ -131,15 +131,8 @@ new versions of the class on CTAN.
% The value is optional.
% The value is restricted to 8192 characters.
\begin{announcement}
- ## [0.9.4] - 2022-10-03
-
- ### Added
- - Command `\lettrenumber` that displays various Lettre numbers related to the one of the current issue.
- - Options of `\lettre` and `\lettregut` that add various Lettre numbers related to the one of the current issue.
- - Command `\Ucode` for points and names of Unicode characters.
-
- ### Changed
- - Documentation completed and improved.
+ ### Fixed
+ Hot fix for the attachment of the Lettre's source files to its PDF.
\end{announcement}
% -------------------------------------------------------------------------
% This field contains the one-liner for the package.
@@ -186,6 +179,7 @@ new versions of the class on CTAN.
% The value is optional.
% The value is restricted to 2048 characters.
\begin{note}
+ I am sorry for new this (corrective) update, so close to the previous one!
\end{note}
% -------------------------------------------------------------------------
% This field contains the archive file.
@@ -209,12 +203,41 @@ new versions of the class on CTAN.
## [Unreleased]
+ ## [0.9.6] - 2023-01-14
+
+ ### Fixed
+ Hot fix for the attachment to the Lettre's PDF of its source files.
+
+ ## [0.9.5] - 2023-01-13
+
+ ### Added
+ - Files (`.tex` source, images files, bibliographic files, etc.) used to typeset
+ an article possibly attached to the Lettre's PDF.
+ - Starred version of `\inputarticle` that prevents the previous feature.
+ - Boolean option that (un)forces the previous feature.
+ - Plural forms `\lettres` and `\lettresgut` of `\lettre` and `\lettregut`.
+ - Shortcuts for “(a|A)ssociation GUTenberg”.
+ - Starred versions of `\person` and `\author` that sort the lists of
+ persons/authors in alphabetic order.
+ - Environment for announcements.
+ - Environments and commands for rebus and their solutions.
+
+ ### Changed
+ - `⅛` replaced by `™` as a short equivalent of ~\lstinline~ (the former is
+ considered as math if ~unicode-math~ is loaded).
+ - Documentation updated.
+
+ ### Fixed
+ Several bugs and sub-optimalities.
+
## [0.9.4] - 2022-10-03
### Added
- - Command `\lettrenumber` that displays various Lettre numbers related to the one of the current issue.
- - Options of `\lettre` and `\lettregut` that add various Lettre numbers related to the one of the current issue.
- - Command `\Ucode` for points and names of Unicode characters.
+ - Command `\lettrenumber` that displays various Lettre numbers related to the
+ one of the current issue.
+ - Options of `\lettre` and `\lettregut` that add various Lettre numbers related
+ to the one of the current issue.
+ - Command `\Ucode` for points and names of Unicode characters.
### Changed
- Documentation improved.
@@ -222,7 +245,8 @@ new versions of the class on CTAN.
## [0.9.3] - 2022-09-02
### Changed
- - Local conf. file doesn't require anymore to start with \ExplSyntaxOff in some instances.
+ - Local conf. file doesn't require anymore to start with \ExplSyntaxOff in some
+ instances.
- Documentation improved.
## [0.9.2] - 2022-06-18
@@ -280,7 +304,7 @@ to the newsletter “La Lettre GUTenberg” of GUTenberg, the French TeX User Gr
Release
-------
-2022-10-03 v0.9.4
+2023-01-14 v0.9.6
Development
-----------
@@ -359,7 +383,7 @@ the corresponding `.tex` file (which doesn't derive from an Org Mode file).
% | v1.3c or later
% See:| http://www.latex-project.org/lppl.txt
%
-% Copyright (C) 1994-2022 by Association GUTenberg
+% Copyright (C) 1994-2023 by Association GUTenberg
% <secretariat@gutenberg.eu.org>
%
% This work may be distributed and/or modified under the
@@ -405,7 +429,11 @@ We define some constant token lists immediately useful.
#+begin_src latex
\ExplSyntaxOn
\tl_const:Nn \c__letgut_Lettre_tl { \emph{ Lettre } }
+ \tl_const:Nn \c__letgut_Lettres_tl {
+ \c__letgut_Lettre_tl \emph{ s }
+ }
\tl_const:Nn \c__letgut_gutenberg_tl { GUTenberg }
+ \tl_const:Nn \c__letgut_association_tl { association }
\tl_const:Nn \c__letgut_Lettre_gutenberg_tl {
\c__letgut_Lettre_tl~\c_space_tl \c__letgut_gutenberg_tl
}
@@ -422,8 +450,8 @@ Now, we can announce the class name and its version:
#+begin_src latex
\ProvidesExplClass{letgut}
- {2022-10-03}
- {0.9.4}
+ {2023-01-14}
+ {0.9.6}
{
Class for the newsletter “The GUTenberg Letter”
}
@@ -528,6 +556,18 @@ Some messages are declared for future use.
#+begin_src latex
\bool_new:N \g__letgut_draft_bool
#+end_src
+- For the included files to (not) be attached.
+ #+begin_src latex
+ \bool_new:N \g__letgut_included_files_attached_bool
+ #+end_src
+- For the acronym definitions file to (not) be attached.
+ #+begin_src latex
+ \bool_new:N \g__letgut_acronyms_file_attached_bool
+ #+end_src
+- For the listings language file to (not) be attached.
+ #+begin_src latex
+ \bool_new:N \g__letgut_lstlanguage_file_attached_bool
+ #+end_src
*** Dimensions
:PROPERTIES:
@@ -714,7 +754,6 @@ We close the ~\AddToHook{begindocument/before}~ argument.
}
#+end_src
-
*** Integers
:PROPERTIES:
:CUSTOM_ID: ImplementationDeclarationsIntegers-7pag55h0jlj0
@@ -830,13 +869,14 @@ We close the ~\AddToHook{begindocument/before}~ argument.
:END:
#+begin_src latex
- \tl_new:N \g__letgut_mark_tl
- \tl_new:N \g__letgut_title_tl
- \tl_new:N \l_letgut_last_name_tl
- \tl_new:N \l_letgut_first_name_tl
- \tl_new:N \l_letgut_title_tl
- \tl_new:N \l__letgut_title_addon_tl
- \tl_new:N \l__letgut_reference_text_tl
+ \tl_new:N \g__letgut_mark_tl
+ \tl_new:N \g__letgut_title_tl
+ \tl_new:N \l_letgut_last_name_tl
+ \tl_new:N \l_letgut_first_name_tl
+ \tl_new:N \l_letgut_title_tl
+ \tl_new:N \l__letgut_title_addon_tl
+ \tl_new:N \l__letgut_reference_text_tl
+ \tl_new:N \g__letgut_effective_acronyms_file_tl
#+end_src
*** Comma separated lists
@@ -859,6 +899,8 @@ We close the ~\AddToHook{begindocument/before}~ argument.
#+begin_src latex
\seq_new:N \l__letgut_first_last_names_items_seq
+ \seq_new:N \g__letgut_included_files_seq
+ \seq_new:N \g__letgut_added_bib_resources_seq
#+end_src
** Class options
@@ -1053,10 +1095,18 @@ We now load some packages.
#+begin_src latex
\RequirePackage{titlesec}
#+end_src
+- Driver-independent color extensions.
+ #+begin_src latex
+ \RequirePackage[table]{xcolor}
+ #+end_src
- Several logos and ornaments.
#+begin_src latex
\RequirePackage{fourier-orns}
#+end_src
+- Drawing of Vectorian ornaments.
+ #+begin_src latex
+\RequirePackage{pgfornament}
+ #+end_src
- Control float placement.
#+begin_src latex
\RequirePackage[section,above]{placeins}
@@ -1088,18 +1138,23 @@ We now load some packages.
#+begin_src latex
\RequirePackage{siunitx}
#+end_src
-- A collection of logos with bookmark support.
+- Additional TeX-family logos (which loads and extends \package{hologo} which is
+ collection of logos with bookmark support).
#+begin_src latex
- \RequirePackage{hologo}
- #+end_src
-- Driver-independent color extensions.
- #+begin_src latex
- \RequirePackage[table]{xcolor}
+ \RequirePackage{bxtexlogo}
#+end_src
- Coloured boxes, for LaTeX examples and theorems, etc.
#+begin_src latex
\RequirePackage{tcolorbox}
#+end_src
+- Compile \TeX{} code stand-alone or as part of a document.
+ #+begin_src latex
+ \RequirePackage[group=false,subpreambles,sort]{standalone}
+ #+end_src
+- Attach arbitrary files to a PDF document.
+ #+begin_src latex
+ \RequirePackage[icon=Paperclip]{attachfile2}
+ #+end_src
- Expandable macros to extract the data from references and allow counter
assignments or calculations.
#+begin_src latex
@@ -1146,6 +1201,10 @@ We now load some packages.
#+begin_src latex
\RequirePackage{acro}
#+end_src
+- Allow URL breaks at any alphanumerical character.
+ #+begin_src latex
+\RequirePackage{xurl}
+ #+end_src
The following packages have to be the last ones loaded. So we ensure this by
loading them just before the begining of the document:
@@ -1226,6 +1285,9 @@ We close the ~\AddToHook{begindocument/before}~ argument.
\RenewDocumentCommand {\printbibliography} { O{} } {
\phantomsection
\__letgut_old_printbibliography[#1]
+ \bool_if:NT \g__letgut_included_files_attached_bool {
+ \seq_map_inline:Nn \g__letgut_added_bib_resources_seq {\seq_gput_right:Nn \g__letgut_included_files_seq {#1}}
+ }
}
#+end_src
For printing the bibliography, we define two new bibheadings for the
@@ -1236,37 +1298,45 @@ We close the ~\AddToHook{begindocument/before}~ argument.
\defbibheading{subtitle}[\refname]{%
\subtitle{#1}}
#+end_src
-- The acronyms will be typset in footnote, with small caps shape. When they are
+- The acronyms will be typset in its short form, with small caps shape. When they are
(English) foreign, it will be specified and the translation will be added.
#+begin_src latex
\acsetup{
- first-style=footnote,
+ first-style=short,
format/short = {\scshape},
format/foreign = {\em},
foreign/display,
locale/format = {\upshape},
locale/display,
+ make-links = true,
+ link-only-first = true
}
#+end_src
- Moreover, we redefine the private macro ~\acro_footnote:n~ of the
- \package*{acro} in order to make the footnotes displaying the long forms of the
- acronyms ended by a period (like ordinary footnotes).
+
+ We currently have to work around an ~acro~ bug (see \url{https://tex.stackexchange.com/q/661966/18401}).
+
#+begin_src latex
- \cs_undefine:N \acro_footnote:n
- \cs_new_protected:Npn \acro_footnote:n #1
- {
- \tl_set:Ne \l__acro_tmpa_tl {
- \l__acro_fnpct_check_tl
- }
- \exp_last_unbraced:Nno
- \footnote {#1.}
- \l__acro_tmpa_tl
- }
+ \AddToHook{cmd/printacronyms/before}{\bool_set_false:N\l__acro_link_only_first_bool}
+ #+end_src
+
+ In case the long form of an acronym is explicited in footnote, we want this
+ footnot to be ended with a period.
+ #+begin_src latex
+ \ProvideDocumentCommand \acroendfootnote {} {.}
#+end_src
The following settings for packages that have to be the last ones loaded are
also done just before the begining of the document.
+- (Temporary?) workaround that moves `standalone` code in hook `begindocument`
+ to `begindocument/before` in order to get rid of the issue
+ \url{https://tex.stackexchange.com/q/670638/18401}.
+
+#+begin_src latex
+ \RemoveFromHook{begindocument}[standalone]
+ \ExpandArgs{nv}\AddToHook{begindocument/before}{l__hook_return_tl}
+#+end_src
+
#+begin_src latex
\AddToHook{begindocument/before}{
#+end_src
@@ -1287,16 +1357,17 @@ We close the ~\AddToHook{begindocument/before}~ argument.
secondly in the parent directory, thirdly in the TDS).
#+begin_src latex
\file_if_exist:nTF {./\c__letgut_acronyms_file_tl}{
- \file_input:n {./\c__letgut_acronyms_file_tl}
+ \tl_gset:Nn \g__letgut_effective_acronyms_file_tl {./\c__letgut_acronyms_file_tl}
}{
\file_if_exist:nTF {../\c__letgut_acronyms_file_tl}{
- \file_input:n {../\c__letgut_acronyms_file_tl}
+ \tl_gset:Nn \g__letgut_effective_acronyms_file_tl {../\c__letgut_acronyms_file_tl}
}{
\file_if_exist:nT {\c__letgut_acronyms_file_tl}{
- \file_input:n {\c__letgut_acronyms_file_tl}
+ \tl_gset:Nn \g__letgut_effective_acronyms_file_tl {\c__letgut_acronyms_file_tl}
}
}
}
+ \input {\g__letgut_effective_acronyms_file_tl}
#+end_src
- Depending on some chosen class options, some packages have to be loaded,
@@ -1425,9 +1496,8 @@ We now define the options of the class:
#+begin_src latex
\keys_define:nn { letgut }
{
- , for-readers .bool_gset:N = \g__letgut_for_readers_bool
+ , for-readers .bool_gset:N = \g__letgut_for_readers_bool
, for-readers .initial:n = { true }
- , for-readers .default:n = { true }
, for-authors .bool_gset_inverse:N = \g__letgut_for_readers_bool
, draft .bool_gset:N = \g__letgut_draft_bool
, draft .initial:n = { true }
@@ -1439,7 +1509,9 @@ We now define the options of the class:
\clist_set_eq:NN \g__letgut_pagecolor_clist
\c__letgut_default_pagecolor_paper_clist
}
- , screen .bool_gset_inverse:N = \g__letgut_paper_bool
+ , screen .code:n = {
+ \bool_gset_false:N \g__letgut_paper_bool
+ }
, number .int_gset:N = \g__letgut_number_int
, date .code:n = { \__letgut_date_parse:n { #1 } }
, date .initial:x = {\the\year-\the\month}
@@ -1472,8 +1544,26 @@ We now define the options of the class:
, informations .initial:n = { true }
, detailedtoc .bool_gset:N = \g__letgut_detailedtoc_bool
, detailedtoc .initial:n = { false }
+ , reverse-files-attachement .code:n = {
+ \AddToHook{begindocument/before}{
+ \bool_lazy_and:nnTF {\g__letgut_for_readers_bool} {!\g__letgut_paper_bool}
+ {
+ \bool_gset_false:N \g__letgut_included_files_attached_bool
+ }{
+ \bool_gset_true:N \g__letgut_included_files_attached_bool
+ }
+ }
+ }
}
\ProcessKeysOptions { letgut }
+ \AddToHook{begindocument/before}{
+ \bool_lazy_and:nnTF {\g__letgut_for_readers_bool} {!\g__letgut_paper_bool}
+ {
+ \bool_gset_true:N \g__letgut_included_files_attached_bool
+ }{
+ \bool_gset_false:N \g__letgut_included_files_attached_bool
+ }
+ }
#+end_src
#+begin_src latex
@@ -1583,7 +1673,6 @@ We now define the headers.
We create a box to display alerts.
#+begin_src latex
- \tcbuselibrary{xparse}
\DeclareTCBox{\alertbox}{}{
nobeforeafter,
colback=red!5!white,
@@ -1647,6 +1736,137 @@ We now define the headers.
}
#+end_src
+** Announcements
+:PROPERTIES:
+:CUSTOM_ID: ImplementationAnnounces-nahckb909pj0
+:END:
+#+begin_src latex
+\DeclareTColorBox{announcement}{ O{black} m }
+{
+ colframe=#1,
+ coltitle=#1,
+ borderline~ west={1cm}{0pt}{#1},
+ IfBlankF={#2}{
+ title=\hypersetup{hidelinks}#2,
+ phantom={\phantomsection\addcontentsline{toc}{title}{#2}},
+ },
+ enhanced,
+ sharp~ corners,
+ boxrule=0mm,
+ leftrule=1cm,
+ bottomrule=1cm,
+ toptitle=20pt,
+ bottomtitle=20pt,
+ center~ title,
+ fonttitle=\scshape\bfseries\huge,
+ fontupper=\Large,
+ fontlower=\Large,
+ skin=empty,
+ segmentation~ style=solid,
+ halign=center,
+ overlay~ unbroken~ and~ first ={
+ \node[color=#1]~ at~ ([yshift=8pt]title.south)
+ {\pgfornament[width=0.4\linewidth]{88}};
+ \node[color=white,anchor=north~ west]~ at~ (frame.north~ west) {\huge\bfseries\aldineright{}};
+ },
+}
+#+end_src
+
+** Rebus
+ :PROPERTIES:
+ :CUSTOM_ID: ImplementationRebus-osw8m3f0cpj0
+ :END:
+
+#+begin_src latex
+ \NewDocumentCommand{\solution}{}{\tcblower}
+ \NewDocumentCommand{\displaysolutions}{}{%
+ \tcbstoprecording\tcbinputrecords%
+ }
+ \tcbset{%
+ rebus~ style/.style={%
+ enhanced,
+ boxrule=0pt,
+ frame~hidden,
+ fonttitle=\normalfont\large\bfseries,
+ before~ title={\lefthand\c_space_tl},
+ halign=center,
+ title~ addon/.store~ in=\l__letgut_title_addon_tl,
+ after~ title={
+ \tl_if_empty:NF {\l__letgut_title_addon_tl}{
+ \c_space_tl(\emph{\l__letgut_title_addon_tl})
+ }
+ },
+ float = bh,
+ colback = __letgut_background_terminal_stdout,
+ colbacktitle = __letgut_background_terminal_stdin,
+ coltitle = black
+ }
+ }
+ \tcbset{
+ no~ solution/.style={
+ no~ recording,
+ after~ upper=dans~ la~ prochaine~ \lettre{},
+ after~ upper~ pre={
+ \par\bigskip\hfill\scriptsize\itshape
+ Solution\c_space_tl
+ },
+ }
+ }
+ \NewTColorBox[auto~ counter]{rebus}{+!O{}}{%
+ rebus~ style,
+ fonttitle=\bfseries,
+ title={Rébus},
+ label={rebus@\thetcbcounter},
+ after~ upper={\vpageref[ci-dessous]{solution@\thetcbcounter}},
+ after~ upper~ pre={
+ \par\bigskip\hfill\scriptsize\itshape
+ Solution\c_space_tl
+ },
+ lowerbox=ignored,
+ savelowerto=rebus-\thetcbcounter.tex,
+ record={\string\rebussolution*[\thetcbcounter][][]},
+ #1
+ }
+ \NewDocumentCommand{\rebussolution}{s +o o O{}}{%
+ \IfValueTF{#2}{
+ \begin{tcolorbox}[
+ rebus~ style,
+ halign=justify,
+ before~ title={\lefthand{}~Solution~ du~ rébus\c_space_tl},
+ title={
+ \IfBooleanTF{#1}{
+ \vpageref[ci-dessus]{rebus@#2}
+ }{
+ de~la~\lettre{}\c_space_tl
+ \IfValueTF{#3}{
+ #3
+ }{
+ précédente
+ }
+ }
+ },
+ phantomlabel={
+ \IfBooleanT{#1}{
+ solution@#2
+ }
+ },
+ #4
+ ]
+ \IfBooleanTF{#1}{
+ \file_if_exist_input:n {rebus-#2.tex}
+ }{
+ #2
+ }
+ \end{tcolorbox}
+ }{
+ \IfValueF{#3}{
+ \tcbstoprecording
+ \tcbinputrecords
+ }
+ }
+ }
+#+end_src
+
** “Title” and marks
:PROPERTIES:
:CUSTOM_ID: ImplementationTitleandmarks-5ylg55h0jlj0
@@ -1728,7 +1948,7 @@ Lettre.
{
\begin{picture}(0,0)
\put(-2cm,-25.275cm){
- \includegraphics[scale=0.96]{
+ \includegraphics*[scale=0.96]{
\c__letgut_banner_file_tl.pdf
}
}
@@ -1904,15 +2124,13 @@ Here starts what is automatically added at the beginning of the document.
#+begin_src latex
\bool_if:NTF \g__letgut_editorial_bool {
\file_if_exist:nTF {./\c__letgut_editorial_file_tl}{
- \RenewDocumentCommand\author{ m } {
- \__letgut_author:n { #1 }
+ \RenewDocumentCommand\author{ s m } {
+ \__letgut_author:nn { #1 } {#2}
}
\pdfbookmark[1]{Éditorial}{
\c__letgut_editorial_file_tl
}
- \__letgut_input_article:n {./\c__letgut_editorial_file_tl}
- % % \int_set:N \l_tmpa_int {\pagenumber}
- % % \int_compare:nNnT \l_tmpa_int = 1 { \newpage }
+ \inputarticle{./\c__letgut_editorial_file_tl}
#+end_src
# < (Just not to disturb the parentheses balancing
@@ -1969,12 +2187,15 @@ Membership reminder.
:CUSTOM_ID: ImplementationLastpagehandling-jbng55h0jlj0
:END:
-The last page is special: it should automatically contain some informations about
-\gutenberg.
+The last pages are special: they should automatically contain
+# the list of the acronyms used in the \lettre, and
+some informations about \gutenberg.
#+begin_src latex
\AddToHook{enddocument}
{
+ % \clearpage
+ % \printacronyms[heading=title,display=used]
#+end_src
Conditionally to the fact the ~informations~ option is not set to ~false~: if
the \file*{informations-gut.tex} which contains the informations about
@@ -1985,17 +2206,17 @@ directory, thirdly in the TDS). Otherwise, a warning is displayed.
\clearpage
\phantomsection
\file_if_exist:nTF {./\c__letgut_informations_gutenberg_file_tl}{
- \__letgut_input_article:n {
+ \inputarticle*{
./\c__letgut_informations_gutenberg_file_tl
}
}{
\file_if_exist:nTF {../\c__letgut_informations_gutenberg_file_tl}{
- \__letgut_input_article:n {
+ \inputarticle*{
../\c__letgut_informations_gutenberg_file_tl
}
}{
\file_if_exist:nTF {\c__letgut_informations_gutenberg_file_tl}{
- \__letgut_input_article:n {
+ \inputarticle*{
\c__letgut_informations_gutenberg_file_tl
}
}{
@@ -2041,8 +2262,32 @@ the author(s) of the “Lettre”.
:CUSTOM_ID: ImplementationSectionssubsectionsetcFormat-tapg55h0jlj0
:END:
+When used in titles, ~\hologo~ needs to be protected. In order to not bother the
+user with this peticularity, we make this the default for it.
+
+ #+begin_src latex
+ % \AddToHook{cmd/hologo/before}{\protect}
+ \NewCommandCopy{\__letgut_old_hologo}{\hologo}
+ \RenewDocumentCommand {\hologo} { m }{
+ \protect\__letgut_old_hologo { #1 }
+ }
+ #+end_src
+
+We want the \package{hologo}'s ~\hologo~ command to have its mandatory argument
+not uppercased in the context of ~\text_uppercase:n~ (as in titles, cf. just
+below).
+
+ #+begin_src latex
+ \tl_put_right:Nn \l_text_case_exclude_arg_tl { \hologo }
+ % \tl_put_right:Nn \l_text_case_exclude_arg_tl { \ac }
+ % \tl_put_right:Nn \l_text_case_exclude_arg_tl { \acs }
+ % \tl_put_right:Nn \l_text_case_exclude_arg_tl { \acl }
+ % \tl_put_right:Nn \l_text_case_exclude_arg_tl { \acf }
+ #+end_src
+
- We create the new level ~\title~ for the titles of the articles. They are
displayed uppercased.
+
#+begin_src latex
\AddToHook{begindocument/before}{%
\titleclass{\title}{straight}[\part]
@@ -2050,10 +2295,9 @@ the author(s) of the “Lettre”.
\normalfont
\LARGE
\bfseries
- \text_uppercase:n
}{}{1em}{
- \aldineleft\c_space_tl
- }{}
+ \aldineleft\c_space_tl\text_uppercase:n
+ }
\etocsetlevel{title}{0}
\def\toclevel@title{0}%
\etocsetstyle {title}
@@ -2239,14 +2483,14 @@ We define the command that lets us specify the newsletter setup.
#+begin_src latex
\NewDocumentCommand {\francophony} { } {
\raisebox{-1.5pt}{
- \includegraphics[width=\f@size pt]{
+ \includegraphics*[width=\f@size pt]{
letgut-francophony-icon
}
}
}
#+end_src
-*** Persons and authors
+*** Persons, authors and list of participants
:PROPERTIES:
:CUSTOM_ID: ImplementationDocumentcommandsPersonsandauthors-h5sg55h0jlj0
:END:
@@ -2259,19 +2503,19 @@ For both persons and authors, the argument of:
a single one, separated by a semicolon.
#+begin_src latex
- \NewDocumentCommand {\person} { m } {
- \__letgut_process_list:n {#1}
+ \NewDocumentCommand {\person} { s m } {
+ \__letgut_process_list:nn {#1} {#2}
}
- \cs_new_protected:Npn \__letgut_author:n #1
+ \cs_new_protected:Npn \__letgut_author:nn #1 #2
{
\nopagebreak
\begin{flushright}
- \__letgut_process_list:n {#1}
+ \__letgut_process_list:nn {#1} {#2}
\end{flushright}
}
\AddToHook{begindocument/end}{%
- \RenewDocumentCommand\author{ m } {
- \__letgut_author:n { #1 }
+ \RenewDocumentCommand\author{ s m } {
+ \__letgut_author:nn { #1 } { #2 }
}
}
#+end_src
@@ -2320,10 +2564,18 @@ For both persons and authors, the argument of:
(#3)
}
\seq_new:N \l__letgut_items_seq
- \cs_new_protected:Npn \__letgut_process_list:n #1
+ \cs_new_protected:Npn \__letgut_process_list:nn #1 #2
{
\seq_clear:N \l__letgut_items_seq
- \seq_set_split:Nnn \l_tmpa_seq {~and~} {#1}
+ \seq_set_split:Nnn \l_tmpa_seq {~and~} {#2}
+ \IfBooleanT{#1}{
+ \seq_sort:Nn \l_tmpa_seq
+ {
+ \str_compare:nNnTF { ##1 } > { ##2 }
+ { \sort_return_swapped: }
+ { \sort_return_same: }
+ }
+ }
\seq_map_inline:Nn \l_tmpa_seq {
\seq_set_from_clist:Nn \l_tmpb_seq {##1}
\seq_pop_left:NN \l_tmpb_seq \l_letgut_last_name_tl
@@ -2354,6 +2606,39 @@ For both persons and authors, the argument of:
}
#+end_src
+The list of contributors (possibly the masthead) will be the list of the persons
+who contributed to the current issue of the \lettre{}, with both a pre- and
+a post-text, the whole in a centered boxed minipage.
+
+ #+begin_src latex
+ \tl_const:Nn \c__letgut_preamble_list_of_contributors_tl {
+ De~ près,~ de~ loin,~ par~ leurs~ avis~ éclairés,~ par~ leurs~ remarques~
+ pertinentes~ ou~ par~ leurs~ articles,~ ont~ contribué~ à~ cette~
+ \lettre{}~ :~ %
+ }
+ \tl_const:Nn \c__letgut_postamble_list_of_contributors_tl {
+ \c_space_tl (et~ nous~ espérons~ n'avoir~ oublié~ personne).
+ }
+ \cs_new_protected:Nn \__letgut_list_of_contributors:nnn
+ {
+ \par
+ \fbox{
+ \begin{minipage}[t]{\linewidth-2\fboxsep-2\fboxrule}
+ #1
+ \person*{#3}
+ #2
+ \end{minipage}
+ }
+ }
+ \NewDocumentCommand {\listofcontributors} {
+ O{\c__letgut_preamble_list_of_contributors_tl}
+ O{\c__letgut_postamble_list_of_contributors_tl}
+ m
+ } {
+ \__letgut_list_of_contributors:nnn {#1} {#2} {#3}
+ }
+ #+end_src
+
*** Horizontal rule
:PROPERTIES:
:CUSTOM_ID: ImplementationDocumentcommandsHorizontalrule-8vsg55h0jlj0
@@ -2429,11 +2714,19 @@ https://github.com/latex3/hyperref/issues/188#issuecomment-826302843.
}
\cs_new_protected:Nn \__letgut_software:nn
{
+ #+end_src
+
+We split the software's name at spaces in order to apply the dedicated
+font switch (~\ttfamily~) to all of it except to the spaces.
+
+ #+begin_src latex
+ \seq_set_split:Nnn \l_tmpa_seq { ~ } { #2 }
+ \seq_set_map:NNn \l_tmpb_seq \l_tmpa_seq {{\l__letgut_softwares_font_switch_tl ##1}}
\tl_if_empty:nTF {#1}
{
- {\l__letgut_softwares_font_switch_tl #2}
+ \seq_use:Nn \l_tmpb_seq { ~ }
}{
- \href{#1}{{\l__letgut_softwares_font_switch_tl #2}}
+ \href{#1}{ \seq_use:Nn \l_tmpb_seq { ~ } }
}
}
\cs_new_protected:Nn \__letgut_file:n
@@ -2480,63 +2773,69 @@ frequently used. The more the users will resort to these commands, the less
will be inconsistently typesetted these names and expressions.
#+begin_src latex
- \NewExpandableDocumentCommand { \gutenberg } { } {
- \c__letgut_gutenberg_tl
- }
- \NewExpandableDocumentCommand { \gut } { } {
- \c__letgut_gutenberg_tl
- }
- % \NewExpandableDocumentCommand { \lettre } { } {
- % \c__letgut_Lettre_tl
- % }
- % \NewExpandableDocumentCommand { \lettregut } { } {
- % \lettre \c_space_tl \gutenberg
- % }
- \NewExpandableDocumentCommand { \Cahier } { } {
- \c__letgut_cahier_tl
- }
- \NewExpandableDocumentCommand { \Cahiers } { } {
- \c__letgut_cahiers_tl
- }
- \NewExpandableDocumentCommand { \cahier } { } {
- \c__letgut_cahier_tl
- }
- \NewExpandableDocumentCommand { \cahiers } { } {
- \c__letgut_cahiers_tl
- }
- \NewExpandableDocumentCommand { \cahiergut } { } {
- \cahier \c_space_tl \gutenberg
- }
- \NewExpandableDocumentCommand { \cahiersgut } { } {
- \cahiers \c_space_tl \gutenberg
- }
- \NewExpandableDocumentCommand { \letgut } { } {
- \class{letgut}
- }
- \NewExpandableDocumentCommand { \letgutcls } { } {
- \class*{letgut}
- }
- \NewExpandableDocumentCommand { \tugboat } { } {
- \c__letgut_tugboat_tl
- }
- \NewExpandableDocumentCommand { \knuth } { } {
- \person{Knuth,~ Donald~ E.}
- }
- \NewExpandableDocumentCommand { \lamport } { } {
- \person{Lamport,~ Leslie}
- }
- \NewExpandableDocumentCommand { \tl } { } {
- \c__letgut_tex_live_tl
- }
- \NewExpandableDocumentCommand { \linux } { } {
- \c__letgut_gnu_linux_tl
- }
- \NewExpandableDocumentCommand { \macos } { } {
- \c__letgut_macOS_tl
- }
- \NewExpandableDocumentCommand { \windows } { } {
- \c__letgut_windows_tl
- }
+ \NewExpandableDocumentCommand { \gutenberg } { } {
+ \c__letgut_gutenberg_tl
+ }
+ \NewExpandableDocumentCommand { \gut } { } {
+ \c__letgut_gutenberg_tl
+ }
+ \NewExpandableDocumentCommand { \assogut } { } {
+ \c__letgut_association_tl \c_space_tl \c__letgut_gutenberg_tl
+ }
+ \NewExpandableDocumentCommand { \Assogut } { } {
+ \text_titlecase_first:n {\assogut}
+ }
+ \NewExpandableDocumentCommand { \lettres } { } {
+ \c__letgut_Lettres_tl
+ }
+ \NewExpandableDocumentCommand { \lettresgut } { } {
+ \c__letgut_Lettres_tl \c_space_tl \c__letgut_gutenberg_tl
+ }
+ \NewExpandableDocumentCommand { \Cahier } { } {
+ \c__letgut_cahier_tl
+ }
+ \NewExpandableDocumentCommand { \Cahiers } { } {
+ \c__letgut_cahiers_tl
+ }
+ \NewExpandableDocumentCommand { \cahier } { } {
+ \c__letgut_cahier_tl
+ }
+ \NewExpandableDocumentCommand { \cahiers } { } {
+ \c__letgut_cahiers_tl
+ }
+ \NewExpandableDocumentCommand { \cahiergut } { } {
+ \cahier \c_space_tl \gutenberg
+ }
+ \NewExpandableDocumentCommand { \cahiersgut } { } {
+ \cahiers \c_space_tl \gutenberg
+ }
+ \NewExpandableDocumentCommand { \letgut } { } {
+ \class{letgut}
+ }
+ \NewExpandableDocumentCommand { \letgutcls } { } {
+ \class*{letgut}
+ }
+ \NewExpandableDocumentCommand { \tugboat } { } {
+ \c__letgut_tugboat_tl
+ }
+ \NewExpandableDocumentCommand { \knuth } { } {
+ \person{Knuth,~ Donald~ E.}
+ }
+ \NewExpandableDocumentCommand { \lamport } { } {
+ \person{Lamport,~ Leslie}
+ }
+ \NewExpandableDocumentCommand { \tl } { } {
+ \c__letgut_tex_live_tl
+ }
+ \NewExpandableDocumentCommand { \linux } { } {
+ \c__letgut_gnu_linux_tl
+ }
+ \NewExpandableDocumentCommand { \macos } { } {
+ \c__letgut_macOS_tl
+ }
+ \NewExpandableDocumentCommand { \windows } { } {
+ \c__letgut_windows_tl
+ }
#+end_src
We define the command ~\lettrenumber~ that displays the number of
@@ -2600,7 +2899,7 @@ resp. “\lettre” and “\lettregut”:
\tl_if_empty:nF {#1}
{
#3
- \c_space_tl
+ \nobreakspace
\__letgut_get_lettre_number:n {#1}
}
}
@@ -3063,6 +3362,9 @@ extensions of the ~graphicx~ package.
\par
}{
\exp_args:NV \author{\g__letgut_bookreview_reviewer_tl}
+ \bool_if:NT \g__letgut_included_files_attached_bool {
+ \seq_map_inline:Nn \g__letgut_added_bib_resources_seq {\seq_gput_right:Nn \g__letgut_included_files_seq {##1}}
+ }
}
#+end_src
@@ -3126,7 +3428,7 @@ for usual characters on French keyboards.
- We specify the possible hyphenations of \enquote{\gutenberg}.
#+begin_src latex
- \hyphenation{GUT-enberg}
+ \hyphenation{GUTen-berg}
#+end_src
*** ISSN
@@ -3192,6 +3494,215 @@ watermarks.
}
#+end_src
+*** Input of articles
+:PROPERTIES:
+:CUSTOM_ID: ImplementationMiscellanousInputofarticles-aqok3ja00pj0
+:END:
+
+We create our own ~\input~ command for the articles of the Lettre with the
+following characteristics:
+
+- The previous style is applied automatically. Hence, the keywords defined in
+ a previous file (by loading some peticular (La)TeX dialects, i.e. control
+ sequences and keywords specific to some class or packages) won't interfere
+ with the ones of the current file.
+- All the acronyms are reset (each acronym is developped at its first occurrence).
+- The source file of the article is attached to the \pdf{} (if desired,
+ otherwise, use the starred version).
+
+#+begin_src latex
+ \cs_new_protected:Npn \__letgut_input_article:nn #1 #2
+ {
+ \lstset{ style=__letgut_reset_listings_styles }
+ \acresetall%
+ \input{#2}%
+ \bool_if:NT \g__letgut_included_files_attached_bool {
+ \IfBooleanF {#1}{
+ \seq_gput_left:Nn \g__letgut_included_files_seq {
+ \attachfile[
+ description={Source~ du~ présent~ article~ (fichier~ `#2.tex`)},
+ mimetype=application/x-tex]%
+ {#2.tex}%
+ }
+ \bool_if:NT \g__letgut_acronyms_file_attached_bool {
+ \seq_gput_right:No \g__letgut_included_files_seq {
+ \c__letgut_acronyms_file_attached_tl
+ }
+ }
+ \bool_if:NT \g__letgut_lstlanguage_file_attached_bool {
+ \seq_gput_right:No \g__letgut_included_files_seq {
+ \c__letgut_lstlanguage_file_attached_tl
+ }
+ }
+ \seq_remove_duplicates:N \g__letgut_included_files_seq
+ \marginpar{\seq_use:Nn \g__letgut_included_files_seq { } }
+ \seq_clear:N \g__letgut_included_files_seq
+ \bool_gset_false:N \g__letgut_acronyms_file_attached_bool
+ \bool_gset_false:N \g__letgut_lstlanguage_file_attached_bool
+ }
+ }
+ }
+ \NewDocumentCommand{\inputarticle}{ s m }{
+ \__letgut_input_article:nn { #1 } { #2 }
+ }
+#+end_src
+
+*** Included graphics attached to the \pdf
+:PROPERTIES:
+:CUSTOM_ID: ImplementationMiscellanousIncludedgraphicsattachedtothe\pdf-xoc34ja00pj0
+:END:
+
+We hack the ~\includegraphics~ command in order to attach the included graphics
+to the \pdf{} (if desired, otherwise, use the starred version).
+
+#+begin_src latex
+ \NewCommandCopy {\__letgut_orig_includegraphics} {\includegraphics}
+ \clist_set:Nx \l_tmpa_clist {\Gin@extensions}
+ \cs_new_protected:Npn \__letgut_includegraphics:nnn #1 #2 #3
+ {
+ \file_if_exist:nTF {#3} {
+ \bool_if:NT \g__letgut_included_files_attached_bool {
+ \IfBooleanF {#1}{
+ \seq_gput_left:Nn \g__letgut_included_files_seq {
+ \attachfile[
+ description={
+ Fichier~ image~ inclus~ dans~ le~
+ présent~ article~ (fichier~ `#3`)
+ },
+ mimetype=image
+ ]
+ {#3}
+ }
+ }
+ }
+ \__letgut_orig_includegraphics[#2]{#3}
+ }{
+ \bool_gset_false:N \g_tmpa_bool
+ \clist_map_inline:Nn \l_tmpa_clist {%
+ \file_if_exist:nTF {#3##1} {
+ \clist_map_break:n {
+ \bool_if:NT \g__letgut_included_files_attached_bool {
+ \IfBooleanF {#1}{
+ \seq_gput_left:Nn \g__letgut_included_files_seq {
+ \attachfile[
+ description={Fichier~ image~ inclus~ dans~ le~ présent~ article~ (fichier~ `#3##1`)},
+ mimetype=image/##1
+ ]
+ {#3##1}
+ }
+ }
+ }
+ \__letgut_orig_includegraphics[#2]{#3}
+ \bool_gset_true:N \g_tmpa_bool
+ }
+ }
+ }
+ \bool_if:NF \g_tmpa_bool {
+ \@latex@error{File~ `#3'~ not~ found}%
+ {I~ could~ not~ locate~ the~ file~ with~ any~ of~ these~ extensions:^^J%
+ \clist_use:Nn \l_tmpa_clist { ~ }^^J\@ehc}%
+ }
+ }
+ }
+ \RenewDocumentCommand {\includegraphics} {s O{} m } {
+ \__letgut_includegraphics:nnn {#1} {#2} {#3}
+ }
+#+end_src
+
+*** Added bibliographic ressources attached to the \pdf
+:PROPERTIES:
+:CUSTOM_ID: ImplementationMiscellanousAddedbibliographicressourcesattachedtothe\pdf-l4e34ja00pj0
+:END:
+
+We hack the ~\addbibresource~ command in order to attach the bibliographic
+ressources to the \pdf{} (if desired, otherwise, use the starred version).
+
+#+begin_src latex
+ \NewCommandCopy {\__letgut_orig_addbibresource} {\addbibresource}
+ \cs_new_protected:Npn \__letgut_addbibresource:nnn #1 #2 #3
+ {
+ \file_if_exist:nT {#3} {
+ \IfBooleanF {#1}{
+ \seq_gput_left:Nn \g__letgut_added_bib_resources_seq {
+ \attachfile[
+ description={
+ Source~ du~ fichier~ bibliographique~ utilisé~
+ dans~ le~ présent~ article~ (fichier~ `#3`)
+ },
+ mimetype=application/x-bibtex
+ ]%
+ {#3}%
+ }
+ }
+ }
+ \__letgut_orig_addbibresource[#2]{#3}
+ }
+ \RenewDocumentCommand {\addbibresource} { s O{} m } {
+ \__letgut_addbibresource:nnn {#1} {#2} {#3}
+ }
+#+end_src
+
+*** Added acronym definitions file attached to the \pdf
+:PROPERTIES:
+:CUSTOM_ID: ImplementationMiscellanousAddedbibliographicressourcesattachedtothe\pdf-l4e34ja00pj0
+:END:
+
+We hack the ~\ac~ and ~\acs~ commands in order to attach the acronym definitions
+file to the \pdf{}.
+
+#+begin_src latex
+ \bool_if:NT \g__letgut_included_files_attached_bool {
+ \tl_const:Nn \c__letgut_acronyms_file_attached_tl {
+ \attachfile[
+ description={
+ Source~ du~ fichier~ d'acronymes~ utilisé~ dans~
+ le~ présent~ article~
+ (fichier~ `\c__letgut_acronyms_file_tl.tex`)
+ },
+ mimetype=application/x-tex]%
+ {\g__letgut_effective_acronyms_file_tl}%
+ }
+ \AddToHook{cmd/ac/before}{
+ \bool_gset_true:N \g__letgut_acronyms_file_attached_bool
+ }
+ \AddToHook{cmd/acs/before}{
+ \bool_gset_true:N \g__letgut_acronyms_file_attached_bool
+ }
+ }
+#+end_src
+
+*** Added letgut listings language file attached to the \pdf
+:PROPERTIES:
+:CUSTOM_ID: ImplementationMiscellanousAddedbibliographicressourcesattachedtothe\pdf-l4e34ja00pj0
+:END:
+
+We hack the ~\ac~ and ~\acs~ commands in order to attach the acronym definitions
+file to the \pdf{}.
+
+#+begin_src latex
+ \bool_if:NT \g__letgut_included_files_attached_bool {
+ \tl_const:Nn \c__letgut_lstlanguage_file_attached_tl {
+ \attachfile[
+ description={
+ Source~ du~ fichier~ de~ langages~ informatiques~ utilisé~
+ dans~ le~ présent~ article~
+ (fichier~ `\c__letgut_lstlanguage_file_tl`)
+ },
+ mimetype=application/x-tex]%
+ {../\c__letgut_lstlanguage_file_tl}%
+ }
+ \AddToHook{env/ltx-code/before}{
+ \bool_gset_true:N \g__letgut_lstlanguage_file_attached_bool
+ }
+ \AddToHook{env/ltx-code-result/before}{
+ \bool_gset_true:N \g__letgut_lstlanguage_file_attached_bool
+ }
+ \AddToHook{env/ltx-code-external-result/before}{
+ \bool_gset_true:N \g__letgut_lstlanguage_file_attached_bool
+ }
+ }
+#+end_src
+
** Listings
:PROPERTIES:
:CUSTOM_ID: ImplementationListings-514h55h0jlj0
@@ -3244,10 +3755,10 @@ same for the above skip.
#+end_src
We define as short equivalent of ~\lstinline~ the character
-\lstDeleteShortInline⅛\texttt{⅛} which is unlikely to be used in ordinary text.
+\lstDeleteShortInline™\texttt{™} which is unlikely to be used in ordinary text.
#+begin_src latex
-\lstMakeShortInline[breaklines=false]⅛
+\lstMakeShortInline[breaklines=false]™
#+end_src
We start with an empty listings style.
@@ -3256,27 +3767,6 @@ We start with an empty listings style.
\lstset{ style=__letgut_reset_listings_styles }
#+end_src
-We create our own ~\input~ command for the articles of the Lettre with the
-following characteristics:
-
-- The previous style is applied automatically. Hence, the keywords defined in
- a previous file (by loading some peticular (La)TeX dialects, i.e. control
- sequences and keywords specific to some class or packages) won't interfere
- with the ones of the current file.
-- All the acronyms are reset (each acronym is developped at its first occurrence).
-
-#+begin_src latex
- \cs_new_protected:Npn \__letgut_input_article:n #1
- {
- \lstset{ style=__letgut_reset_listings_styles }
- \acresetall%
- \file_input:n{#1}%
- }
- \NewDocumentCommand{\inputarticle}{m}{
- \__letgut_input_article:n { #1 }
- }
-#+end_src
-
*** LaTeX listings and examples
:PROPERTIES:
:CUSTOM_ID: ImplementationListingsLaTeXlistingsandexamples-xt4h55h0jlj0
@@ -3303,13 +3793,13 @@ in the current directory, secondly in the parent directory, thirdly in the TDS.
#+begin_src latex
\def\lstlanguagefiles{
- lstlang0.sty,
+ % lstlang0.sty,
lstlang1.sty,
lstlang2.sty,
lstlang3.sty,
./\c__letgut_lstlanguage_file_tl,
../\c__letgut_lstlanguage_file_tl,
- \c__letgut_lstlanguage_file_tl
+ \c__letgut_lstlanguage_file_tl,
}
#+end_src
@@ -3323,7 +3813,7 @@ We define a listing style specific to LaTeX listings.
alsolanguage=[plain]TeX,%
alsolanguage=[common]TeX,%
alsolanguage=[primitive]TeX,%
- alsolanguage=[extLaTeX]TeX,%
+ alsolanguage=[extendedLaTeX]TeX,%
alsolanguage=[classes]TeX,%
texcsstyle=*\color{__letgut_texcs},
commentstyle=\color{__letgut_comment}\itshape,
@@ -3341,7 +3831,7 @@ order 1. This would force us to do the same in our own language driver file but
would ruin our effort to stylize in a special way (in red) other keywords (see
~otherkeywords={...}~) that are stylized as keywords of order 1. Hence, we
delete these keywords of order 1 and will add them as keywords of order 2 like
-all the environments in our own language driver file (in the ~extLaTeX~ dialect
+all the environments in our own language driver file (in the ~extendedLaTeX~ dialect
that we load by default).
#+begin_src latex
@@ -3375,7 +3865,7 @@ For the listings and examples, we rely on \package*{tcolorbox}, and more
specifically on some of its libraries.
#+begin_src latex
- \tcbuselibrary{listings,xparse,breakable,skins,hooks}
+ \tcbuselibrary{listings,breakable,skins,hooks,documentation}
#+end_src
We want some common settings for all the ~tcolorbox~es.
@@ -3964,6 +4454,7 @@ https://tex.stackexchange.com/a/25396).
^^f0^^f1^^f2^^f3^^f4^^f5^^f6^^f7^^f8^^f9^^fa^^fb^^fc^^fd^^fe^^ff%
^^^^201c^^^^201d% for “ and ”
^^^^215b% for ⅛
+ ^^^^2122% for ™
^^00%
}
\lst@RestoreCatcodes
@@ -3987,7 +4478,7 @@ at its beginning.
\file_if_exist:nT {./\c__letgut_local_config_file_tl}{
\@pushfilename
\xdef\@currname{\c__letgut_local_config_file_tl}
- \file_input:n {./\c__letgut_local_config_file_tl}
+ \input {./\c__letgut_local_config_file_tl}
\@popfilename
}
#+end_src
@@ -4014,7 +4505,7 @@ several purposes:
- the books advertisements.
#+begin_src latex :tangle ../../../tex/lualatex/letgut/letgut.lbx :exports both
-\ProvidesFile{letgut.lbx}[2022-10-03 v0.9.4 letgut localization]
+\ProvidesFile{letgut.lbx}[2023-01-14 v0.9.6 letgut localization]
\InheritBibliographyExtras{french}
\DeclareBibliographyStrings{
inherit = {french},
@@ -4028,7 +4519,7 @@ several purposes:
create the corresponding new entry).
#+begin_src latex :tangle ../../../tex/lualatex/letgut/letgut.dbx :exports both
- \ProvidesFile{letgut.dbx}[2022-10-03 v0.9.4 letgut data model macros]
+ \ProvidesFile{letgut.dbx}[2023-01-14 v0.9.6 letgut data model macros]
\DeclareBibliographyDriver{bookreview}{%
\usebibmacro{bibindex}%
\usebibmacro{begentry}%
@@ -4083,7 +4574,7 @@ several purposes:
We provide a specific ~biblatex~ citation style .
#+begin_src latex :tangle ../../../tex/lualatex/letgut/letgut.cbx :exports both
- \ProvidesFile{letgut.cbx}[2022-10-03 v0.9.4 letgut base citation style]
+ \ProvidesFile{letgut.cbx}[2023-01-14 v0.9.6 letgut base citation style]
\RequireCitationStyle{numeric}
#+end_src
@@ -4193,6 +4684,14 @@ well...
% % permet l'option `detailedtoc`.
%
% , detailedtoc
+ %
+ % % Les fichiers sources sont attachés au PDF si et seulement si la Lettre est
+ % % à la fois en version pour les lecteurs (option `for-readers' activée par
+ % % défaut) et en sortie écran (option `screen' activée par défaut). L'option
+ % % `reverse-files-attachement' inverse ce comportement par défaut.
+ %
+ % , reverse-files-attachement
+ %
}
\setmainfont{TeX Gyre Schola} % Par exemple
@@ -4248,7 +4747,7 @@ well...
\hspace*{-1.5cm}%
\raisebox{-\height+0.7\baselineskip}{%
\begin{minipage}[t]{.6\textwidth}%\vspace{0pt}%
- \includegraphics[width=\linewidth]{logo-gut.pdf}
+ \includegraphics*[width=\linewidth]{logo-gut.pdf}
\end{minipage}%
}%
\hfill%
@@ -4701,7 +5200,7 @@ well...
:END:
#+begin_src latex :tangle ../../../tex/lualatex/letgut/letgut-lstlang.sty :exports both
- % \lst@definelanguage[...]{TeX}{%
+ % \lst@definelanguage[...]{TeX}{%
% % Control sequences names
% moretexcs={%
% },%
@@ -4733,7 +5232,659 @@ well...
% % alsodigit={},%
% % alsoother={},%
% sensitive,%
- % }[keywords,tex,comments%]
+ % }[keywords,tex,comments]
+
+ \lst@definelanguage[Scrabble]{TeX}{%
+ % Control sequences names
+ moretexcs={%
+ PlateauScrabble,ScrabblePlaceMot,%
+ ScrabbleBoard,ScrabblePutWord,%
+ },%
+ % Keywords of class 1 : keywords that contain other characters
+ % (since of the same class as the ones specified as 'otherkeywords')
+ morekeywords={%
+ },%
+ % Keywords of class 2 : environments names
+ morekeywords=[2]{%
+ EnvScrabble,%
+ },%
+ % Keywords of class 3 : mandatory arguments (not environments) &
+ % optional arguments which are keys (in key=value)
+ morekeywords=[3]{%
+ FR,EN,DE,ES,GR,SP,%
+ Echelle,Echellelabels,Cadre,Labels,Aide,%
+ Scale,ScaleLabels,Border,Help,%
+ },%
+ % Keywords of class 4 : values of keys (in key=value)
+ morekeywords=[4]{%
+ },%
+ % Keywords of class 5 : arguments specifications (after ":" in expl3
+ % syntax)
+ morekeywords=[5]{%
+ },%
+ % Keywords of class 6 : current package name (and possibly derived
+ % packages)
+ morekeywords=[6]{%
+ Scrabble%
+ },%
+ % otherkeywords={},
+ % alsoletter={},
+ % alsodigit={},%
+ % alsoother={},%
+ sensitive,%
+ }[keywords,tex,comments]
+
+ \lst@definelanguage[FiraSans]{TeX}{%
+ % Control sequences names
+ moretexcs={%
+ sufigures,firaoldstyle,firalining,firatabular,firaproportional,
+ firathin,firalight,firaextralight,firaultralight,firamedium,firabook,
+ firasemibold,firaextrabold,firaheavy,%
+ }%
+ % Keywords of class 1 : keywords that contain other characters
+ % (since of the same class as the ones specified as 'otherkeywords')
+ morekeywords={%
+ },%
+ % Keywords of class 2 : environments names
+ morekeywords=[2]{%
+ },%
+ % Keywords of class 3 : mandatory arguments (not environments) &
+ % optional arguments which are keys (in key=value)
+ morekeywords=[3]{%
+ sfdefault,scaled,scale,type1,lining,lf,oldstyle,osf,tabular,t,proportional,%
+ p,book,medium,mb,semibold,sb,light,l,extralight,ultralight,thin,%
+ extrabold,heavy,default,%
+ },%
+ % Keywords of class 4 : values of keys (in key=value)
+ morekeywords=[4]{%
+ },%
+ % Keywords of class 5 : arguments specifications (after ":" in expl3
+ % syntax)
+ morekeywords=[5]{%
+ },%
+ % Keywords of class 6 : current package name (and possibly derived
+ % packages)
+ morekeywords=[6]{%
+ FiraSans%
+ },%
+ % otherkeywords={},
+ alsoletter={1},
+ % alsodigit={},%
+ % alsoother={},%
+ sensitive,%
+ }[keywords,tex,comments]
+
+ \lst@definelanguage[luagcd]{TeX}{%
+ % Control sequences names
+ moretexcs={%
+ luagcdwithsteps,%
+ },%
+ % Keywords of class 1 : keywords that contain other characters
+ % (since of the same class as the ones specified as 'otherkeywords')
+ morekeywords={%
+ },%
+ % Keywords of class 2 : environments names
+ morekeywords=[2]{%
+ },%
+ % Keywords of class 3 : mandatory arguments (not environments) &
+ % optional arguments which are keys (in key=value)
+ morekeywords=[3]{%
+ },%
+ % Keywords of class 4 : values of keys (in key=value)
+ morekeywords=[4]{%
+ },%
+ % Keywords of class 5 : arguments specifications (after ":" in expl3
+ % syntax)
+ morekeywords=[5]{%
+ },%
+ % Keywords of class 6 : current package name (and possibly derived
+ % packages)
+ morekeywords=[6]{%
+ luagcd%
+ },%
+ % otherkeywords={},
+ % alsoletter={},
+ % alsodigit={},%
+ % alsoother={},%
+ sensitive,%
+ }[keywords,tex,comments]
+
+ \lst@definelanguage[maze]{TeX}{%
+ % Control sequences names
+ moretexcs={%
+ maze,%
+ },%
+ % Keywords of class 1 : keywords that contain other characters
+ % (since of the same class as the ones specified as 'otherkeywords')
+ morekeywords={%
+ },%
+ % Keywords of class 2 : environments names
+ morekeywords=[2]{%
+ },%
+ % Keywords of class 3 : mandatory arguments (not environments) &
+ % optional arguments which are keys (in key=value)
+ morekeywords=[3]{%
+ },%
+ % Keywords of class 4 : values of keys (in key=value)
+ morekeywords=[4]{%
+ },%
+ % Keywords of class 5 : arguments specifications (after ":" in expl3
+ % syntax)
+ morekeywords=[5]{%
+ },%
+ % Keywords of class 6 : current package name (and possibly derived
+ % packages)
+ morekeywords=[6]{%
+ maze%
+ },%
+ % otherkeywords={},
+ % alsoletter={},
+ % alsodigit={},%
+ % alsoother={},%
+ sensitive,%
+ }[keywords,tex,comments]
+
+ \lst@definelanguage[animate]{TeX}{%
+ % Control sequences names
+ moretexcs={%
+ multiframe,%
+ },%
+ % Keywords of class 1 : keywords that contain other characters
+ % (since of the same class as the ones specified as 'otherkeywords')
+ morekeywords={%
+ },%
+ % Keywords of class 2 : environments names
+ morekeywords=[2]{%
+ animateinline,
+ },%
+ % Keywords of class 3 : mandatory arguments (not environments) &
+ % optional arguments which are keys (in key=value)
+ morekeywords=[3]{%
+ poster,controls,palindrome,bb,rx,%
+ },%
+ % Keywords of class 4 : values of keys (in key=value)
+ morekeywords=[4]{%
+ first,%
+ },%
+ % Keywords of class 5 : arguments specifications (after ":" in expl3
+ % syntax)
+ morekeywords=[5]{%
+ },%
+ % Keywords of class 6 : current package name (and possibly derived
+ % packages)
+ morekeywords=[6]{%
+ animate%
+ },%
+ % otherkeywords={},
+ % alsoletter={},
+ % alsodigit={},%
+ % alsoother={},%
+ sensitive,%
+ }[keywords,tex,comments]
+
+ \lst@definelanguage[tikz-mirror-lens]{TeX}{%
+ % Control sequences names
+ moretexcs={%
+ lensSphGaussFixed,%
+ },%
+ % Keywords of class 1 : keywords that contain other characters
+ % (since of the same class as the ones specified as 'otherkeywords')
+ morekeywords={%
+ },%
+ % Keywords of class 2 : environments names
+ morekeywords=[2]{%
+ },%
+ % Keywords of class 3 : mandatory arguments (not environments) &
+ % optional arguments which are keys (in key=value)
+ morekeywords=[3]{%
+ },%
+ % Keywords of class 4 : values of keys (in key=value)
+ morekeywords=[4]{%
+ },%
+ % Keywords of class 5 : arguments specifications (after ":" in expl3
+ % syntax)
+ morekeywords=[5]{%
+ },%
+ % Keywords of class 6 : current package name (and possibly derived
+ % packages)
+ morekeywords=[6]{%
+ tikz-mirror-lens%
+ },%
+ % otherkeywords={},
+ alsoletter={-},
+ % alsodigit={},%
+ % alsoother={},%
+ sensitive,%
+ }[keywords,tex,comments]
+
+ \lst@definelanguage[jeuxcartes]{TeX}{%
+ % Control sequences names
+ moretexcs={%
+ MainCartesJeu,%
+ },%
+ % Keywords of class 1 : keywords that contain other characters
+ % (since of the same class as the ones specified as 'otherkeywords')
+ morekeywords={%
+ },%
+ % Keywords of class 2 : environments names
+ morekeywords=[2]{%
+ },%
+ % Keywords of class 3 : mandatory arguments (not environments) &
+ % optional arguments which are keys (in key=value)
+ morekeywords=[3]{%
+ Eventail,10C,10K,AC,AT,AP,%
+ },%
+ % Keywords of class 4 : values of keys (in key=value)
+ morekeywords=[4]{%
+ },%
+ % Keywords of class 5 : arguments specifications (after ":" in expl3
+ % syntax)
+ morekeywords=[5]{%
+ },%
+ % Keywords of class 6 : current package name (and possibly derived
+ % packages)
+ morekeywords=[6]{%
+ jeuxcartes%
+ },%
+ % otherkeywords={},
+ alsoletter={0123456789},
+ % alsodigit={},%
+ % alsoother={},%
+ sensitive,%
+ }[keywords,tex,comments]
+
+ \lst@definelanguage[plex-otf]{TeX}{%
+ % Control sequences names
+ moretexcs={%
+ },%
+ % Keywords of class 1 : keywords that contain other characters
+ % (since of the same class as the ones specified as 'otherkeywords')
+ morekeywords={%
+ },%
+ % Keywords of class 2 : environments names
+ morekeywords=[2]{%
+ },%
+ % Keywords of class 3 : mandatory arguments (not environments) &
+ % optional arguments which are keys (in key=value)
+ morekeywords=[3]{%
+ RM
+ },%
+ % Keywords of class 4 : values of keys (in key=value)
+ morekeywords=[4]{%
+ },%
+ % Keywords of class 5 : arguments specifications (after ":" in expl3
+ % syntax)
+ morekeywords=[5]{%
+ },%
+ % Keywords of class 6 : current package name (and possibly derived
+ % packages)
+ morekeywords=[6]{%
+ plex-otf%
+ },%
+ % otherkeywords={},
+ % alsoletter={},
+ % alsodigit={},%
+ % alsoother={},%
+ sensitive,%
+ }[keywords,tex,comments]
+
+ \lst@definelanguage[mathtools]{TeX}{%
+ % Control sequences names
+ moretexcs={%
+ mathclap,DeclarePairedDelimiter,%
+ },%
+ % Keywords of class 1 : keywords that contain other characters
+ % (since of the same class as the ones specified as 'otherkeywords')
+ morekeywords={%
+ },%
+ % Keywords of class 2 : environments names
+ morekeywords=[2]{%
+ },%
+ % Keywords of class 3 : mandatory arguments (not environments) &
+ % optional arguments which are keys (in key=value)
+ morekeywords=[3]{%
+ },%
+ % Keywords of class 4 : values of keys (in key=value)
+ morekeywords=[4]{%
+ },%
+ % Keywords of class 5 : arguments specifications (after ":" in expl3
+ % syntax)
+ morekeywords=[5]{%
+ },%
+ % Keywords of class 6 : current package name (and possibly derived
+ % packages)
+ morekeywords=[6]{%
+ %
+ },%
+ % otherkeywords={},
+ % alsoletter={},
+ % alsodigit={},%
+ % alsoother={},%
+ sensitive,%
+ }[keywords,tex,comments]
+
+ \lst@definelanguage[tikz-ext]{TeX}{%
+ % Control sequences names
+ moretexcs={%
+ },%
+ % Keywords of class 1 : keywords that contain other characters
+ % (since of the same class as the ones specified as 'otherkeywords')
+ morekeywords={%
+ },%
+ % Keywords of class 2 : environments names
+ morekeywords=[2]{%
+ },%
+ % Keywords of class 3 : mandatory arguments (not environments) &
+ % optional arguments which are keys (in key=value)
+ morekeywords=[3]{%
+ distancebetween,%
+ },%
+ % Keywords of class 4 : values of keys (in key=value)
+ morekeywords=[4]{%
+ },%
+ % Keywords of class 5 : arguments specifications (after ":" in expl3
+ % syntax)
+ morekeywords=[5]{%
+ },%
+ % Keywords of class 6 : current package name (and possibly derived
+ % packages)
+ morekeywords=[6]{%
+ tikz-ext%
+ },%
+ % otherkeywords={},
+ % alsoletter={},
+ % alsodigit={},%
+ % alsoother={},%
+ sensitive,%
+ }[keywords,tex,comments]
+
+ \lst@definelanguage[tikzfill]{TeX}{%
+ % Control sequences names
+ moretexcs={%
+ },%
+ % Keywords of class 1 : keywords that contain other characters
+ % (since of the same class as the ones specified as 'otherkeywords')
+ morekeywords={%
+ },%
+ % Keywords of class 2 : environments names
+ morekeywords=[2]{%
+ },%
+ % Keywords of class 3 : mandatory arguments (not environments) &
+ % optional arguments which are keys (in key=value)
+ morekeywords=[3]{%
+ pattern,hexagon,cycle,color,
+ },%
+ % Keywords of class 4 : values of keys (in key=value)
+ morekeywords=[4]{%
+ },%
+ % Keywords of class 5 : arguments specifications (after ":" in expl3
+ % syntax)
+ morekeywords=[5]{%
+ },%
+ % Keywords of class 6 : current package name (and possibly derived
+ % packages)
+ morekeywords=[6]{%
+ tikzfill
+ },%
+ % otherkeywords={},
+ % alsoletter={},
+ % alsodigit={},%
+ % alsoother={},%
+ sensitive,%
+ }[keywords,tex,comments]
+
+ \lst@definelanguage[unicodemath]{TeX}{%
+ % Control sequences names
+ moretexcs={%
+ symscr,symbb,symfrak,symsfup,symsfit,symtt,setmathfont,%
+ },%
+ % Keywords of class 1 : keywords that contain other characters
+ % (since of the same class as the ones specified as 'otherkeywords')
+ morekeywords={%
+ },%
+ % Keywords of class 2 : environments names
+ morekeywords=[2]{%
+ },%
+ % Keywords of class 3 : mandatory arguments (not environments) &
+ % optional arguments which are keys (in key=value)
+ morekeywords=[3]{%
+ range,mathrm,%
+ },%
+ % Keywords of class 4 : values of keys (in key=value)
+ morekeywords=[4]{%
+ up,it,bb,bbit,scr,cal,bfcal,frak,tt,sfup ,sfit,bfup,bfit,bfscr,bffrak,%
+ bfsfup,bfsfit,sym,%
+ },%
+ % Keywords of class 5 : arguments specifications (after ":" in expl3
+ % syntax)
+ morekeywords=[5]{%
+ },%
+ % Keywords of class 6 : current package name (and possibly derived
+ % packages)
+ morekeywords=[6]{%
+ unicode-math
+ },%
+ % otherkeywords={},
+ alsoletter={-},
+ % alsodigit={},%
+ % alsoother={},%
+ sensitive,%
+ }[keywords,tex,comments]
+
+ \lst@definelanguage[xcharter-otf]{TeX}{%
+ % Control sequences names
+ moretexcs={%
+ Bbbone,Bbbk,%
+ },%
+ % Keywords of class 1 : keywords that contain other characters
+ % (since of the same class as the ones specified as 'otherkeywords')
+ morekeywords={%
+ },%
+ % Keywords of class 2 : environments names
+ morekeywords=[2]{%
+ },%
+ % Keywords of class 3 : mandatory arguments (not environments) &
+ % optional arguments which are keys (in key=value)
+ morekeywords=[3]{%
+ range
+ },%
+ % Keywords of class 4 : values of keys (in key=value)
+ morekeywords=[4]{%
+ },%
+ % Keywords of class 5 : arguments specifications (after ":" in expl3
+ % syntax)
+ morekeywords=[5]{%
+ },%
+ % Keywords of class 6 : current package name (and possibly derived
+ % packages)
+ morekeywords=[6]{%
+ xcharter-otf
+ },%
+ % otherkeywords={},
+ alsoletter={-},
+ % alsodigit={},%
+ % alsoother={},%
+ sensitive,%
+ }[keywords,tex,comments]
+
+ \lst@definelanguage[braille]{TeX}{%
+ % Control sequences names
+ moretexcs={%
+ braille
+ },%
+ % Keywords of class 1 : keywords that contain other characters
+ % (since of the same class as the ones specified as 'otherkeywords')
+ morekeywords={%
+ },%
+ % Keywords of class 2 : environments names
+ morekeywords=[2]{%
+ },%
+ % Keywords of class 3 : mandatory arguments (not environments) &
+ % optional arguments which are keys (in key=value)
+ morekeywords=[3]{%
+ },%
+ % Keywords of class 4 : values of keys (in key=value)
+ morekeywords=[4]{%
+ },%
+ % Keywords of class 5 : arguments specifications (after ":" in expl3
+ % syntax)
+ morekeywords=[5]{%
+ },%
+ % Keywords of class 6 : current package name (and possibly derived
+ % packages)
+ morekeywords=[6]{%
+ %
+ },%
+ % otherkeywords={},
+ % alsoletter={},
+ % alsodigit={},%
+ % alsoother={},%
+ sensitive,%
+ }[keywords,tex,comments]
+
+ \lst@definelanguage[swungdash]{TeX}{%
+ % Control sequences names
+ moretexcs={%
+ swungdash
+ },%
+ % Keywords of class 1 : keywords that contain other characters
+ % (since of the same class as the ones specified as 'otherkeywords')
+ morekeywords={%
+ },%
+ % Keywords of class 2 : environments names
+ morekeywords=[2]{%
+ },%
+ % Keywords of class 3 : mandatory arguments (not environments) &
+ % optional arguments which are keys (in key=value)
+ morekeywords=[3]{%
+ },%
+ % Keywords of class 4 : values of keys (in key=value)
+ morekeywords=[4]{%
+ },%
+ % Keywords of class 5 : arguments specifications (after ":" in expl3
+ % syntax)
+ morekeywords=[5]{%
+ },%
+ % Keywords of class 6 : current package name (and possibly derived
+ % packages)
+ morekeywords=[6]{%
+ %
+ },%
+ % otherkeywords={},
+ % alsoletter={},
+ % alsodigit={},%
+ % alsoother={},%
+ sensitive,%
+ }[keywords,tex,comments]
+
+
+ \lst@definelanguage[simples-matrices]{TeX}{%
+ % Control sequences names
+ moretexcs={%
+ matrice
+ },%
+ % Keywords of class 1 : keywords that contain other characters
+ % (since of the same class as the ones specified as 'otherkeywords')
+ morekeywords={%
+ },%
+ % Keywords of class 2 : environments names
+ morekeywords=[2]{%
+ },%
+ % Keywords of class 3 : mandatory arguments (not environments) &
+ % optional arguments which are keys (in key=value)
+ morekeywords=[3]{%
+ b,%
+ },%
+ % Keywords of class 4 : values of keys (in key=value)
+ morekeywords=[4]{%
+ },%
+ % Keywords of class 5 : arguments specifications (after ":" in expl3
+ % syntax)
+ morekeywords=[5]{%
+ },%
+ % Keywords of class 6 : current package name (and possibly derived
+ % packages)
+ morekeywords=[6]{%
+ %
+ },%
+ % otherkeywords={},
+ % alsoletter={},
+ % alsodigit={},%
+ % alsoother={},%
+ sensitive,%
+ }[keywords,tex,comments]
+
+ \lst@definelanguage[customdice]{TeX}{%
+ % Control sequences names
+ moretexcs={%
+ dice
+ },%
+ % Keywords of class 1 : keywords that contain other characters
+ % (since of the same class as the ones specified as 'otherkeywords')
+ morekeywords={%
+ },%
+ % Keywords of class 2 : environments names
+ morekeywords=[2]{%
+ },%
+ % Keywords of class 3 : mandatory arguments (not environments) &
+ % optional arguments which are keys (in key=value)
+ morekeywords=[3]{%
+ violet,yellow
+ },%
+ % Keywords of class 4 : values of keys (in key=value)
+ morekeywords=[4]{%
+ },%
+ % Keywords of class 5 : arguments specifications (after ":" in expl3
+ % syntax)
+ morekeywords=[5]{%
+ },%
+ % Keywords of class 6 : current package name (and possibly derived
+ % packages)
+ morekeywords=[6]{%
+ %
+ },%
+ % otherkeywords={},
+ % alsoletter={},
+ % alsodigit={},%
+ % alsoother={},%
+ sensitive,%
+ }[keywords,tex,comments]
+
+ \lst@definelanguage[pingu]{TeX}{%
+ % Control sequences names
+ moretexcs={%
+ pingu
+ },%
+ % Keywords of class 1 : keywords that contain other characters
+ % (since of the same class as the ones specified as 'otherkeywords')
+ morekeywords={%
+ },%
+ % Keywords of class 2 : environments names
+ morekeywords=[2]{%
+ },%
+ % Keywords of class 3 : mandatory arguments (not environments) &
+ % optional arguments which are keys (in key=value)
+ morekeywords=[3]{%
+ left,wing,wave,right,grab,eyes,shiny,cup,%
+ },%
+ % Keywords of class 4 : values of keys (in key=value)
+ morekeywords=[4]{%
+ },%
+ % Keywords of class 5 : arguments specifications (after ":" in expl3
+ % syntax)
+ morekeywords=[5]{%
+ },%
+ % Keywords of class 6 : current package name (and possibly derived
+ % packages)
+ morekeywords=[6]{%
+ %
+ },%
+ % otherkeywords={},
+ % alsoletter={},
+ % alsodigit={},%
+ % alsoother={},%
+ sensitive,%
+ }[keywords,tex,comments]%
\lst@definelanguage[letgut]{TeX}{%
% Control sequences names
@@ -4742,7 +5893,8 @@ well...
package,package*,class,class*,software,software*,file,file*,%
foreignloc,latinloc,gutenberg,gut,lettre,lettregut,Cahier,%
Cahiers,letgut,letgutcls,knuth,lamport,tugboat,item*,letgutacro,%
- separator,alertbox,terminal,inputarticle,lettrenumber,%
+ separator,alertbox,terminal,inputarticle,lettrenumber,solution,%
+ rebussolution,%
},%
% Keywords of class 1 : keywords that contain other characters (since
% of the same class as the ones specified as 'otherkeywords')
@@ -4751,7 +5903,7 @@ well...
% Keywords of class 2 : environments names
morekeywords=[2]{%
ctannews,ltx-code,ltx-code-result,ltx-code-external-result,%
- bookreview,%
+ bookreview,announcement,rebus,%
},%
% Keywords of class 3 : mandatory arguments (not environments) &
% optional arguments which are keys (in key=value)
@@ -4759,7 +5911,7 @@ well...
for-authors,for-readers,draft,final,screen,paper,number,date,%
pagecolor,allcolorslinks,membership-reminder,editorial,informations,%
title,addon,result width,reference,text,title,reviewer,bibkey,%
- frontcover,price,result,and,%
+ frontcover,price,result,and,no,solution,%
},%
% Keywords of class 4 : values of keys (in key=value)
morekeywords=[4]{%
@@ -4784,7 +5936,7 @@ well...
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% LaTeX texcs and keywords that are missing in `listings` driver file
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- \lst@definelanguage[extLaTeX]{TeX}{%
+ \lst@definelanguage[extendedLaTeX]{TeX}{%
% Control sequences names
moretexcs={%
Huge,LARGE,Large,LoadClass,NewCommandCopy,RequirePackage,%
@@ -5343,7 +6495,7 @@ well...
% syntax)
morekeywords=[5]{%
D,N,Nn,NF,NN,Nx,NT,NTF,NNn,NnV,Nnn,Npn,Nnnn,V,c,e,en,f,n,nF,%
- nn,nT,nnn,nnF,nnV,nTF,nnnn,nNnF,nNnT,nnVV,o,p,v,w,x,%
+ nn,nT,nnn,nnF,nnV,nTF,nnnn,nNnF,nNnT,nnVV,o,p,v,w,x,nnTF,%
},%
% Keywords of class 6 : current package name (and possibly derived
% packages)
@@ -6006,7 +7158,8 @@ well...
\lst@definelanguage[tikz]{TeX}{%
% Control sequences names
moretexcs={%
- usetikzlibrary,draw,node,matrix,fill,foreach,tikz,%
+ usetikzlibrary,draw,node,matrix,fill,foreach,tikz,pgfmathsetmacro,%
+ path,%
},%
% Keywords of class 1 : keywords that contain other characters (since
% of the same class as the ones specified as 'otherkeywords')
@@ -6020,12 +7173,13 @@ well...
% optional arguments which are keys (in key=value)
morekeywords=[3]{%
pic,rotate,xshift,yshift,every node,inner sep,blend mode,fill,%
- fit,circle,anchor,in,count,x,y,matrix,of,math,nodes,above
- right,at,--,-|,|-,%
+ fit,circle,anchor,in,count,x,y,matrix,of,math,nodes,above right,%
+ at,--,-|,|-,thick,size,angle,circle,through,intersection,of,%
+ draw,coordinate,shift,and,cycle,cs:A,node,barycentric,%
},%
% Keywords of class 4 : values of keys (in key=value)
morekeywords=[4]{%
- multiply,lightgray,base,%
+ multiply,lightgray,base,red%
},%
% Keywords of class 5 : arguments specifications (after ":" in expl3
% syntax)
@@ -6037,7 +7191,7 @@ well...
tikz,%
},%
% otherkeywords={},%
- alsoletter={-| \ },%
+ alsoletter={-| \ :},%
% alsodigit={},%
% alsoother={},%
sensitive,%
@@ -6197,6 +7351,7 @@ well...
% optional arguments which are keys (in key=value)
morekeywords=[3]{%
log-declarations,%
+ m,r,R,v,b,o,d,O,D,s,t,e,E,%
},%
% Keywords of class 4 : values of keys (in key=value)
morekeywords=[4]{%
@@ -6672,7 +7827,7 @@ well...
morekeywords=[3]{%
Alternate,Annotation,AutoFakeBold,AutoFakeSlant,BoldFeatures,%
BoldFont,BoldItalicFeatures,BoldItalicFont,BoldSlantedFeatures,%
- BoldSlantedFont,BoldSwashFeatures,BoldSwashFont,CJKShape,%
+ BoldSlantedFont,BoldSwashFeatures,BoldSwashFont,CJKShape,ItalicFeatures,%
CharacterVariant,CharacterWidth,Color,Colour,Contextuals,%
Diacritics,Extension,FakeBold,FakeSlant,FakeStretch,Font,FontFace,%
Fractions,HyphenChar,IgnoreFontspecFileItalicFeatures,ItalicFont,%
@@ -6701,7 +7856,7 @@ well...
TeX,Thurd,Titling,Traditional,Unicase,Uppercase,UppercaseOff,%
UppercasePetiteCaps,UppercaseSmallCaps,VerticalKana,WordFinal,%
WordInitial,ResetAll,c2sc,scmp,sinf,sups,zero,ss06,ss01,%
- ss04,-liga,frac,titl,swsh,hist,hlig%
+ ss04,-liga,frac,titl,swsh,hist,hlig,MatchUppercase,MatchLowercase,%
},%
% Keywords of class 5 : arguments specifications (after ":" in expl3
% syntax)
diff --git a/macros/luatex/latex/pyluatex/pyluatex-interpreter.py b/macros/luatex/latex/pyluatex/pyluatex-interpreter.py
index 28ec28e12e..341c2ace04 100644
--- a/macros/luatex/latex/pyluatex/pyluatex-interpreter.py
+++ b/macros/luatex/latex/pyluatex/pyluatex-interpreter.py
@@ -34,7 +34,30 @@ import re
import os
import sys
+class PyLTTex:
+ def __init__(self):
+ self._log_buffer = []
+
+ def log(self, *objects, sep=' ', end='\n'):
+ try:
+ objects = [str(v) for v in objects]
+ except Exception as exc:
+ raise RuntimeError(
+ 'The object to log could not be transformed to a string.',
+ ) from exc
+ self._log_buffer.append(sep.join(objects))
+ self._log_buffer.append(end)
+
+ def _log_message(self):
+ msg = ''.join(self._log_buffer)
+ self._log_buffer = []
+ return msg
+
class Interpreter(InteractiveInterpreter):
+ def __init__(self):
+ self.tex = PyLTTex()
+ super().__init__({'tex': self.tex})
+
def execute_repl(self, code, ignore_errors):
self.success = True
output = ''
@@ -60,7 +83,7 @@ class Interpreter(InteractiveInterpreter):
output += out.getvalue()
if not ignore_errors and not self.success:
return False, output
- return self.success, output
+ return self.success, output, self.tex._log_message()
def execute(self, code):
with StringIO() as out, redirect_stdout(out), redirect_stderr(out):
@@ -75,7 +98,7 @@ class Interpreter(InteractiveInterpreter):
except:
traceback.print_exc()
self.success = False
- return self.success, out.getvalue()
+ return self.success, out.getvalue(), self.tex._log_message()
def showtraceback(self):
super().showtraceback()
@@ -95,13 +118,17 @@ class Handler(socketserver.StreamRequestHandler):
interpreter = interpreters[data['session']]
code = textwrap.dedent(data['code'])
if data['repl_mode']:
- success, output = interpreter.execute_repl(
+ success, output, log_msg = interpreter.execute_repl(
code,
data['ignore_errors']
)
else:
- success, output = interpreter.execute(code)
- response = { 'success': success, 'output': output }
+ success, output, log_msg = interpreter.execute(code)
+ response = {
+ 'success': success,
+ 'output': output,
+ 'log_msg': log_msg
+ }
self.wfile.write((json.dumps(response) + '\n').encode('utf-8'))
if __name__ == '__main__':
diff --git a/macros/luatex/latex/pyluatex/pyluatex.lua b/macros/luatex/latex/pyluatex/pyluatex.lua
index 9f7d5f7936..c12faa5cc8 100644
--- a/macros/luatex/latex/pyluatex/pyluatex.lua
+++ b/macros/luatex/latex/pyluatex/pyluatex.lua
@@ -118,8 +118,7 @@ end
local function request(data)
tcp:send(utilities.json.tostring(data) .. "\n")
local output = tcp:receive("*l")
- local response = utilities.json.tolua(output)
- return response.success, response.output
+ return utilities.json.tolua(output)
end
local function log_input(code)
@@ -152,7 +151,7 @@ function pyluatex.execute(code, auto_print, write, repl_mode, store)
if pyluatex.verbose then log_input(full_code) end
- local success, output = request(
+ local resp = request(
{
session = pyluatex.session,
code = full_code,
@@ -160,27 +159,29 @@ function pyluatex.execute(code, auto_print, write, repl_mode, store)
ignore_errors = pyluatex.ignore_errors
}
)
- local output_lines = split_lines(output)
+ local output_lines = split_lines(resp.output)
if store then
last_code = split_lines(code)
last_output = output_lines
end
- if success or pyluatex.ignore_errors then
- if pyluatex.verbose or not success then log_output(output) end
+ if resp.success or pyluatex.ignore_errors then
+ if pyluatex.verbose or not resp.success then log_output(resp.output) end
if write then
tex.print(output_lines)
end
else
if not pyluatex.verbose then log_input(full_code) end
- log_output(output)
+ log_output(resp.output)
if write then
tex.sprint(err_cmd("Python error (see above)"))
end
end
- return success
+ if resp.log_msg ~= "" then texio.write(resp.log_msg) end
+
+ return resp.success
end
function pyluatex.print_env()
diff --git a/macros/luatex/latex/pyluatex/pyluatex.pdf b/macros/luatex/latex/pyluatex/pyluatex.pdf
index 69fe67558e..bc41fa99e4 100644
--- a/macros/luatex/latex/pyluatex/pyluatex.pdf
+++ b/macros/luatex/latex/pyluatex/pyluatex.pdf
Binary files differ
diff --git a/macros/luatex/latex/pyluatex/pyluatex.sty b/macros/luatex/latex/pyluatex/pyluatex.sty
index a5adf62973..db5654e6b8 100644
--- a/macros/luatex/latex/pyluatex/pyluatex.sty
+++ b/macros/luatex/latex/pyluatex/pyluatex.sty
@@ -9,7 +9,7 @@
%% version 2005/12/01 or later.
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{pyluatex}[2023/01/03 v0.5.2 Execute Python code on the fly]
+\ProvidesPackage{pyluatex}[2023/01/14 v0.6.0 Execute Python code on the fly]
\RequirePackage{expl3}
\ExplSyntaxOn
diff --git a/macros/luatex/latex/pyluatex/pyluatex.tex b/macros/luatex/latex/pyluatex/pyluatex.tex
index 12c539d660..4dc0c09e35 100644
--- a/macros/luatex/latex/pyluatex/pyluatex.tex
+++ b/macros/luatex/latex/pyluatex/pyluatex.tex
@@ -15,7 +15,7 @@
\usepackage{url}
\title{The \emph{pyluatex} package}
\author{Tobias Enderle\\\url{https://github.com/tndrle/PyLuaTeX}}
-\date{v0.5.2 (2023/01/03)}
+\date{v0.6.0 (2023/01/14)}
\begin{document}
\maketitle
\raggedright
@@ -196,6 +196,23 @@ in your environment definition, e.g.
{\end{python}}
\end{tcblisting}
+\subsection{Logging from Python}
+\begin{tcblisting}{breakable,listing only,
+ size=fbox,colframe=black!8,boxrule=3pt,colback=black!8}
+tex.log(*objects, sep=' ', end='\n')
+\end{tcblisting}
+Writes \inlcode|objects| to the TeX log, separated by \inlcode|sep| and followed by \inlcode|end|.
+All elements in \inlcode|objects| are converted to strings using \inlcode|str()|.
+Both \inlcode|sep| and \inlcode|end| must be strings.
+
+\textit{Example:}
+\begin{tcblisting}{breakable,listing only,
+ size=fbox,colframe=black!8,boxrule=3pt,colback=black!8}
+\begin{python}
+tex.log('This text goes to the TeX log.')
+\end{python}
+\end{tcblisting}
+
\section{Requirements}
\begin{itemize}
\item Lua\LaTeX{}
diff --git a/systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl b/systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl
index b2c5e931a5..d8bcb610de 100644
--- a/systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl
+++ b/systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl
@@ -171,7 +171,6 @@ $mirrors = {
},
'North America' => {
'Canada' => {
- 'https://ctan.math.ca/tex-archive/' => 1,
'https://ctan.mirror.globo.tech/' => 1,
'https://ctan.mirror.rafal.ca/' => 1,
'https://mirror.csclub.uwaterloo.ca/CTAN/' => 1,
diff --git a/systems/texlive/tlnet/tlpkg/texlive.tlpdb b/systems/texlive/tlnet/tlpkg/texlive.tlpdb
index a6e0d6bac5..ccaf34b1d5 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/2022
-depend revision/65529
+depend revision/65533
name 00texlive.image
category TLCore
@@ -4693,7 +4693,7 @@ depend setting_available_architectures:aarch64-linux amd64-freebsd amd64-netbsd
name 00texlive.installer
category TLCore
-revision 65525
+revision 65531
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
@@ -195131,7 +195131,7 @@ binfiles arch=x86_64-linuxmusl size=3921
name luakeys
category Package
-revision 65468
+revision 65533
shortdesc A Lua module for parsing key-value options
relocated 1
longdesc This package provides a Lua module that can parse key-value
@@ -195141,15 +195141,15 @@ longdesc entirely by using the Lua language and does not rely on TeX.
longdesc Therefore this package can only be used with the TeX engine
longdesc LuaTeX. Since luakeys uses LPeg, the parsing mechanism should
longdesc be pretty robust.
-containersize 12912
-containerchecksum ae4c6385d522308c04676f1776ac5d39e39160486af0322932c83186a00779b1d6efccca7b09ac3156be4573d52924a127c91f935281e8ef33fb637f136b4d7d
-doccontainersize 437888
-doccontainerchecksum e48091336b4f834e7ca665aa401192f1a01af9f42c311a5f51115742c73038645055583fe7c324a46fc14fd12b46362178b382a87c7a71bd5e37151f6c8fb03b
-docfiles size=123
+containersize 14240
+containerchecksum 618719877ab11bb672c319bcc078a625bc92b4d3a783eff8414f6c9597ec8ea3225822afbeb0d1bb04e8889cc3003f4a1ed8063e1ecca410ec6f0170fa55eb00
+doccontainersize 435504
+doccontainerchecksum be88aac81b85730c0cd85ab76541b8af01ca85326a4449168062ff80690db7d90669dff794b3f5926f1344a0de03289958fd4d2cf0cd2eb4b593dd052577e01c
+docfiles size=121
RELOC/doc/luatex/luakeys/README.md details="Readme"
RELOC/doc/luatex/luakeys/documentation.tex
RELOC/doc/luatex/luakeys/luakeys.pdf details="Package documentation"
-runfiles size=18
+runfiles size=19
RELOC/tex/luatex/luakeys/luakeys-debug.sty
RELOC/tex/luatex/luakeys/luakeys-debug.tex
RELOC/tex/luatex/luakeys/luakeys.lua
@@ -195160,7 +195160,7 @@ catalogue-contact-repository https://github.com/Josef-Friedrich/luakeys
catalogue-ctan /macros/luatex/generic/luakeys
catalogue-license lppl1.3c
catalogue-topics keyval luatex
-catalogue-version 0.12.0
+catalogue-version 0.13.0
name lualatex-doc
category Package
@@ -311784,7 +311784,7 @@ docfiles size=376
name texlive-scripts
category TLCore
-revision 65525
+revision 65531
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.
@@ -311792,10 +311792,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 113684
-containerchecksum 6e2329241223fff59a8688034de3196d6b369369bf406f854858030fa67fb976eefb96372424ec934824f902ceca6638214451e71e70149043c0cd7faef0a9c3
+containersize 113676
+containerchecksum af6adcd7d8be559bf52ad423faf58846bd5f349aae585cc1dd7f1499c7f56f18bc305c6b22fc35150e241688eae014f7324a10edf0c86008fd30575a95dea212
doccontainersize 424104
-doccontainerchecksum 6f02e39c2b74aeb5c9196880f2ab0c90028f5518e5158a3d4cf6adad5115e2260b1ca0930bdac5dd562024f1e9bd0a995d49a63c9a422f269a439637e9ce4d5d
+doccontainerchecksum cc63098c0e06d8ef46c2392ea48ff60e6424918531a1207e2ba20eb2b75f5db2e9f6128c1e2ce644f7d0e5fa2883c1d9b828d5f94122fdddc18cec1e675a137f
docfiles size=533
doc.html
texmf-dist/doc/man/man1/fmtutil-sys.1
@@ -332176,7 +332176,7 @@ catalogue-version 1.1.0
name ufrgscca
category Package
-revision 65406
+revision 65532
shortdesc A bundle for undergraduate students final work/report (tcc) at UFRGS/EE
relocated 1
longdesc This bundled is aimed at producing undergraduate students'
@@ -332185,10 +332185,10 @@ longdesc Federal University of Rio Grande do Sul), closely following
longdesc ABNT rules (Brazilian Association for Technical Norms). It is
longdesc composed of a main class, ufrgscca, and a set of auxiliary
longdesc packages, some of which can be used independently.
-containersize 32108
-containerchecksum fe7325e6af69f77c5f4966832b41426add54758dad4e0e59f2b8d75aa5c884017be2d8b754b6f7f42dbb97c4246553980d581abb252e8b63f69b01c89864499e
-doccontainersize 484044
-doccontainerchecksum dc6635e2ba97bb4fdcb35fb6db4f74c5d2034b47aaca98263e9fc0b4695c5b3271fd198cfdaf2db3361b96b033af807da5aa33b689775ead04c48e16f865ca61
+containersize 32188
+containerchecksum 22803c0015f6804d3e0f613faa3703a2cdf3be441bce7df4c38232b449781caf891149fdba307a43adc0db953b3071e1b8ada8ecf94fb827ec6f52735c6441d1
+doccontainersize 484732
+doccontainerchecksum 4aba1e88bd44176f9e416272f7539450fa2067e8620d7aec77f76f917da53f282db2c5b91122933bcb6e3badd6a93f99b2dd15107a46dc55cbbe877fa922ce97
docfiles size=153
RELOC/doc/latex/ufrgscca/README.md details="Readme"
RELOC/doc/latex/ufrgscca/ufrgscca.pdf details="Package documentation"
@@ -332219,7 +332219,7 @@ catalogue-contact-repository https://github.com/alceu-frigeri/ufrgscca
catalogue-ctan /macros/latex/contrib/ufrgscca
catalogue-license lppl1.3c gpl
catalogue-topics dissertation portuguese-br
-catalogue-version 1.0.5
+catalogue-version 1.0.6
name uhc
category Package
diff --git a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5 b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5
index 06c62af5c3..65399f67aa 100644
--- a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5
+++ b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5
@@ -1 +1 @@
-f5f6dac20f4ab2fd319b0d560ae1937c texlive.tlpdb
+6396cddbf1b00d7f032d3f40803d972f texlive.tlpdb
diff --git a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512 b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512
index 2110f12f9c..9f8765ce42 100644
--- a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512
+++ b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512
@@ -1 +1 @@
-c2d5a7e72552d96666f6bb38292aa866f3bcda14b8c1da1dc64929e45f375bcedeef8db8cbfba9deb150311f5af155be2bad2daf165f4020b4103871c45ee7cf texlive.tlpdb
+770d7fd9b00c02d836385e66e108e566c40816af515de9af178bf8d43c426690c0da4a293139dbbe9fafd1458509a3cd0775016910481bb1dd8411a3e4eb6598 texlive.tlpdb
diff --git a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc
index 722ee24a09..bfa0f2e10e 100644
--- a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc
+++ b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc
@@ -1,10 +1,10 @@
-----BEGIN PGP SIGNATURE-----
-iQEcBAEBCgAGBQJjwKuyAAoJEEzhh34ZQ4xwMP4H/0th2ztwLmQqVzXZmDOTCMiO
-zmToQStEWBM3bB0KM6MM65JjD7o6wMSzNUUUHjfw6Em8px5fvq+Fh8VZ4wMei2pB
-3LQ757Rr+VjVOCDpFMcrEXwQ64zrSrBG6T41AHlIvx90oKXYFUWauvYTNLWN84w3
-CkoNUN/f9hlvZR9f/2RCocKkswD/YYp6NXWwPADuLO+w8ES0MI+EyRK2fIDKKK3C
-F9QFn5OQ1z40amzvlSk4g4sjHa2IU0WpY0K84MDrIAegV1qiBHSflGvVShQkwUC8
-fOu2wM/KNlkSp0xgOvVnWeG3s8Pge4NZcBEQwj3iqMrR7uGqa2v5cxIm5p14e5E=
-=KqoN
+iQEcBAEBCgAGBQJjwfzkAAoJEEzhh34ZQ4xw+uYH/jOdrV7JjqsfeEFjfildu3GS
+rc95ZamfAWj9zGHsr/7ujAggUq3Kh7Sz5KZ22AG/tVvcu/1V+ygec0TapD34Qy23
+Kn90z71LVAGqf4Gn+39+046snlqfXtvNMMkBdFOuEIIsKfkF9QP97h0fEgw9aFDz
+pxqkRaHybSMEcoQfHpFYjxYjD0eron9pdpg1PM8s0bXfvJlzi6Tlvq+fyGiVUxJT
+Wpo9LyU7KO+C2hgqjez1gv7KUocFMaIA6rb8T+fjcN2STL7gs+Dh4Tuf0UfFC9xR
+EsvkY8ECMYw40EGF0tI2fOyJIFFFWBy3sF0FE5C9686OrVe91of4jUtvl9HhlRI=
+=Ag8m
-----END PGP SIGNATURE-----
diff --git a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz
index ef5e0ae7fc..2c5699e1d1 100644
--- a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz
+++ b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz
Binary files differ
diff --git a/timestamp b/timestamp
index 5a3630bd05..619c9895b2 100644
--- a/timestamp
+++ b/timestamp
@@ -2,4 +2,4 @@
# The source CTAN of this site's material:
dante.ctan.org
# The year-month-day-hour-minute of this site's material:
-2023-01-14-02-02
+2023-01-15-02-02