summaryrefslogtreecommitdiff
path: root/macros
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2020-09-12 03:03:44 +0000
committerNorbert Preining <norbert@preining.info>2020-09-12 03:03:44 +0000
commit206f46fee13b7233673f40672f21b29a61c70cd9 (patch)
tree61e874e278eec407b2a151098c3822f788dcc1ed /macros
parent026bcd88f082ea4bb3f2ddbac395339309f00a63 (diff)
CTAN sync 202009120303
Diffstat (limited to 'macros')
-rw-r--r--macros/latex-dev/base/README.md2
-rw-r--r--macros/latex-dev/base/alltt.pdfbin173079 -> 173079 bytes
-rw-r--r--macros/latex-dev/base/cfgguide.pdfbin220217 -> 220217 bytes
-rw-r--r--macros/latex-dev/base/changes.txt10
-rw-r--r--macros/latex-dev/base/classes.pdfbin520851 -> 520851 bytes
-rw-r--r--macros/latex-dev/base/clsguide.pdfbin372555 -> 372555 bytes
-rw-r--r--macros/latex-dev/base/cmfonts.pdfbin264505 -> 264505 bytes
-rw-r--r--macros/latex-dev/base/cyrguide.pdfbin216997 -> 216997 bytes
-rw-r--r--macros/latex-dev/base/doc.pdfbin631616 -> 631285 bytes
-rw-r--r--macros/latex-dev/base/docstrip.pdfbin479710 -> 479704 bytes
-rw-r--r--macros/latex-dev/base/encguide.pdfbin1532144 -> 1532144 bytes
-rw-r--r--macros/latex-dev/base/exscale.pdfbin195877 -> 195877 bytes
-rw-r--r--macros/latex-dev/base/fix-cm.pdfbin262059 -> 262059 bytes
-rw-r--r--macros/latex-dev/base/fntguide.pdfbin417861 -> 417861 bytes
-rw-r--r--macros/latex-dev/base/graphpap.pdfbin156277 -> 156277 bytes
-rw-r--r--macros/latex-dev/base/ifthen.pdfbin205213 -> 205213 bytes
-rw-r--r--macros/latex-dev/base/inputenc.pdfbin294900 -> 294900 bytes
-rw-r--r--macros/latex-dev/base/latexchanges.pdfbin232390 -> 232390 bytes
-rw-r--r--macros/latex-dev/base/latexrelease.pdfbin246195 -> 246195 bytes
-rw-r--r--macros/latex-dev/base/latexsym.pdfbin192297 -> 192297 bytes
-rw-r--r--macros/latex-dev/base/lb2.pdfbin138219 -> 138219 bytes
-rw-r--r--macros/latex-dev/base/letter.pdfbin306068 -> 305441 bytes
-rw-r--r--macros/latex-dev/base/lgc2.pdfbin101343 -> 101343 bytes
-rw-r--r--macros/latex-dev/base/lppl.pdfbin125830 -> 125830 bytes
-rw-r--r--macros/latex-dev/base/ltclass.dtx61
-rw-r--r--macros/latex-dev/base/ltdefns.dtx53
-rw-r--r--macros/latex-dev/base/ltexpl.dtx14
-rw-r--r--macros/latex-dev/base/ltfilehook-code.pdfbin747549 -> 747033 bytes
-rw-r--r--macros/latex-dev/base/ltfilehook-doc.pdfbin517421 -> 516967 bytes
-rw-r--r--macros/latex-dev/base/ltfilehook.dtx8
-rw-r--r--macros/latex-dev/base/ltfiles.dtx2
-rw-r--r--macros/latex-dev/base/lthooks-code.pdfbin871310 -> 896523 bytes
-rw-r--r--macros/latex-dev/base/lthooks-doc.pdfbin602334 -> 603179 bytes
-rw-r--r--macros/latex-dev/base/lthooks.dtx698
-rw-r--r--macros/latex-dev/base/ltluatex.pdfbin305256 -> 305256 bytes
-rw-r--r--macros/latex-dev/base/ltnews.pdfbin988811 -> 988811 bytes
-rw-r--r--macros/latex-dev/base/ltnews01.pdfbin150020 -> 150020 bytes
-rw-r--r--macros/latex-dev/base/ltnews02.pdfbin134751 -> 134751 bytes
-rw-r--r--macros/latex-dev/base/ltnews03.pdfbin134742 -> 134742 bytes
-rw-r--r--macros/latex-dev/base/ltnews04.pdfbin128772 -> 128772 bytes
-rw-r--r--macros/latex-dev/base/ltnews05.pdfbin157181 -> 157181 bytes
-rw-r--r--macros/latex-dev/base/ltnews06.pdfbin133138 -> 133138 bytes
-rw-r--r--macros/latex-dev/base/ltnews07.pdfbin124029 -> 124029 bytes
-rw-r--r--macros/latex-dev/base/ltnews08.pdfbin144482 -> 144482 bytes
-rw-r--r--macros/latex-dev/base/ltnews09.pdfbin120222 -> 120222 bytes
-rw-r--r--macros/latex-dev/base/ltnews10.pdfbin147946 -> 147946 bytes
-rw-r--r--macros/latex-dev/base/ltnews11.pdfbin104936 -> 104936 bytes
-rw-r--r--macros/latex-dev/base/ltnews12.pdfbin137919 -> 137919 bytes
-rw-r--r--macros/latex-dev/base/ltnews13.pdfbin161065 -> 161065 bytes
-rw-r--r--macros/latex-dev/base/ltnews14.pdfbin150907 -> 150907 bytes
-rw-r--r--macros/latex-dev/base/ltnews15.pdfbin122092 -> 122092 bytes
-rw-r--r--macros/latex-dev/base/ltnews16.pdfbin130687 -> 130687 bytes
-rw-r--r--macros/latex-dev/base/ltnews17.pdfbin149838 -> 149838 bytes
-rw-r--r--macros/latex-dev/base/ltnews18.pdfbin36005 -> 36005 bytes
-rw-r--r--macros/latex-dev/base/ltnews19.pdfbin235073 -> 235073 bytes
-rw-r--r--macros/latex-dev/base/ltnews20.pdfbin283318 -> 283318 bytes
-rw-r--r--macros/latex-dev/base/ltnews21.pdfbin233492 -> 233492 bytes
-rw-r--r--macros/latex-dev/base/ltnews22.pdfbin302836 -> 302836 bytes
-rw-r--r--macros/latex-dev/base/ltnews23.pdfbin274459 -> 274459 bytes
-rw-r--r--macros/latex-dev/base/ltnews24.pdfbin252645 -> 252645 bytes
-rw-r--r--macros/latex-dev/base/ltnews25.pdfbin196326 -> 196326 bytes
-rw-r--r--macros/latex-dev/base/ltnews26.pdfbin362839 -> 362839 bytes
-rw-r--r--macros/latex-dev/base/ltnews27.pdfbin239758 -> 239758 bytes
-rw-r--r--macros/latex-dev/base/ltnews28.pdfbin368226 -> 368226 bytes
-rw-r--r--macros/latex-dev/base/ltnews29.pdfbin433004 -> 433004 bytes
-rw-r--r--macros/latex-dev/base/ltnews30.pdfbin491246 -> 491246 bytes
-rw-r--r--macros/latex-dev/base/ltnews31.pdfbin500919 -> 500919 bytes
-rw-r--r--macros/latex-dev/base/ltnews32.pdfbin529433 -> 529433 bytes
-rw-r--r--macros/latex-dev/base/ltshipout-code.pdfbin749702 -> 749381 bytes
-rw-r--r--macros/latex-dev/base/ltshipout-doc.pdfbin504786 -> 504055 bytes
-rw-r--r--macros/latex-dev/base/ltshipout.dtx23
-rw-r--r--macros/latex-dev/base/ltvers.dtx2
-rw-r--r--macros/latex-dev/base/ltx3info.pdfbin191527 -> 191527 bytes
-rw-r--r--macros/latex-dev/base/ltxdoc.pdfbin215134 -> 215134 bytes
-rw-r--r--macros/latex-dev/base/makeindx.pdfbin160667 -> 160667 bytes
-rw-r--r--macros/latex-dev/base/manual.pdfbin151347 -> 151347 bytes
-rw-r--r--macros/latex-dev/base/modguide.pdfbin220388 -> 220388 bytes
-rw-r--r--macros/latex-dev/base/nfssfont.pdfbin202451 -> 202451 bytes
-rw-r--r--macros/latex-dev/base/proc.pdfbin216877 -> 216877 bytes
-rw-r--r--macros/latex-dev/base/slides.pdfbin351586 -> 351586 bytes
-rw-r--r--macros/latex-dev/base/slifonts.pdfbin214710 -> 214710 bytes
-rw-r--r--macros/latex-dev/base/source2e.pdfbin4320779 -> 4353699 bytes
-rw-r--r--macros/latex-dev/base/syntonly.pdfbin181980 -> 181450 bytes
-rw-r--r--macros/latex-dev/base/tlc2.pdfbin164947 -> 164947 bytes
-rw-r--r--macros/latex-dev/base/tulm.pdfbin156546 -> 156546 bytes
-rw-r--r--macros/latex-dev/base/usrguide.pdfbin399035 -> 399035 bytes
-rw-r--r--macros/latex-dev/base/utf8ienc.pdfbin331397 -> 331094 bytes
-rw-r--r--macros/latex-dev/base/webcomp.pdfbin136159 -> 136159 bytes
-rw-r--r--macros/latex/contrib/caption/README2
-rw-r--r--macros/latex/contrib/caption/caption3.dtx80
-rw-r--r--macros/latex/contrib/l3backend/CHANGELOG.md13
-rw-r--r--macros/latex/contrib/l3backend/README.md2
-rw-r--r--macros/latex/contrib/l3backend/l3backend-basics.dtx18
-rw-r--r--macros/latex/contrib/l3backend/l3backend-box.dtx6
-rw-r--r--macros/latex/contrib/l3backend/l3backend-color.dtx291
-rw-r--r--macros/latex/contrib/l3backend/l3backend-draw.dtx6
-rw-r--r--macros/latex/contrib/l3backend/l3backend-graphics.dtx2
-rw-r--r--macros/latex/contrib/l3backend/l3backend-header.dtx6
-rw-r--r--macros/latex/contrib/l3backend/l3backend-pdf.dtx14
-rw-r--r--macros/latex/contrib/l3experimental/CHANGELOG.md11
-rw-r--r--macros/latex/contrib/l3experimental/README.md2
-rw-r--r--macros/latex/contrib/l3experimental/l3benchmark.dtx4
-rw-r--r--macros/latex/contrib/l3experimental/l3benchmark.pdfbin314255 -> 314255 bytes
-rw-r--r--macros/latex/contrib/l3experimental/l3color.dtx105
-rw-r--r--macros/latex/contrib/l3experimental/l3color.pdfbin367535 -> 368703 bytes
-rw-r--r--macros/latex/contrib/l3experimental/l3draw-boxes.dtx2
-rw-r--r--macros/latex/contrib/l3experimental/l3draw-code.pdfbin606612 -> 606606 bytes
-rw-r--r--macros/latex/contrib/l3experimental/l3draw-layers.dtx2
-rw-r--r--macros/latex/contrib/l3experimental/l3draw-paths.dtx2
-rw-r--r--macros/latex/contrib/l3experimental/l3draw-points.dtx2
-rw-r--r--macros/latex/contrib/l3experimental/l3draw-scopes.dtx2
-rw-r--r--macros/latex/contrib/l3experimental/l3draw-softpath.dtx2
-rw-r--r--macros/latex/contrib/l3experimental/l3draw-state.dtx2
-rw-r--r--macros/latex/contrib/l3experimental/l3draw-transforms.dtx2
-rw-r--r--macros/latex/contrib/l3experimental/l3draw.dtx4
-rw-r--r--macros/latex/contrib/l3experimental/l3draw.pdfbin489817 -> 489817 bytes
-rw-r--r--macros/latex/contrib/l3experimental/l3galley.dtx4
-rw-r--r--macros/latex/contrib/l3experimental/l3galley.pdfbin385764 -> 385762 bytes
-rw-r--r--macros/latex/contrib/l3experimental/l3graphics.dtx4
-rw-r--r--macros/latex/contrib/l3experimental/l3graphics.pdfbin363123 -> 363123 bytes
-rw-r--r--macros/latex/contrib/l3experimental/l3pdf-code.pdfbin276730 -> 276730 bytes
-rw-r--r--macros/latex/contrib/l3experimental/l3pdf.dtx4
-rw-r--r--macros/latex/contrib/l3experimental/l3pdf.pdfbin350795 -> 350792 bytes
-rw-r--r--macros/latex/contrib/l3experimental/l3str-format.dtx4
-rw-r--r--macros/latex/contrib/l3experimental/l3str-format.pdfbin344898 -> 344898 bytes
-rw-r--r--macros/latex/contrib/l3experimental/l3sys-shell.dtx4
-rw-r--r--macros/latex/contrib/l3experimental/l3sys-shell.pdfbin311734 -> 311734 bytes
-rw-r--r--macros/latex/contrib/l3experimental/xcoffins.dtx4
-rw-r--r--macros/latex/contrib/l3experimental/xcoffins.pdfbin372890 -> 372890 bytes
-rw-r--r--macros/latex/contrib/l3experimental/xgalley.dtx4
-rw-r--r--macros/latex/contrib/l3experimental/xgalley.pdfbin285681 -> 285679 bytes
-rw-r--r--macros/latex/contrib/qyxf-book/LICENSE2
-rw-r--r--macros/latex/contrib/qyxf-book/README.md3
-rw-r--r--macros/latex/contrib/qyxf-book/README.zh.md19
-rw-r--r--macros/latex/contrib/qyxf-book/colors/black.tex23
-rw-r--r--macros/latex/contrib/qyxf-book/colors/bootstrap-v4.tex29
-rw-r--r--macros/latex/contrib/qyxf-book/colors/rbb.tex24
-rw-r--r--macros/latex/contrib/qyxf-book/demo.pdfbin318147 -> 0 bytes
-rw-r--r--macros/latex/contrib/qyxf-book/figure/qyxf-cover.pdf (renamed from macros/latex/contrib/qyxf-book/figure/cover.pdf)bin44533 -> 44533 bytes
-rw-r--r--macros/latex/contrib/qyxf-book/qyxf-book-doc.pdfbin0 -> 329877 bytes
-rw-r--r--macros/latex/contrib/qyxf-book/qyxf-book-doc.tex (renamed from macros/latex/contrib/qyxf-book/demo.tex)126
-rw-r--r--macros/latex/contrib/qyxf-book/qyxf-book.cls241
-rw-r--r--macros/latex/contrib/tuda-ci/README.md3
-rw-r--r--macros/latex/contrib/tuda-ci/doc/DEMO-TUDaAnnouncement.pdfbin574097 -> 574097 bytes
-rw-r--r--macros/latex/contrib/tuda-ci/doc/DEMO-TUDaBeamer.pdfbin622105 -> 622105 bytes
-rw-r--r--macros/latex/contrib/tuda-ci/doc/DEMO-TUDaExercise.pdfbin577127 -> 577127 bytes
-rw-r--r--macros/latex/contrib/tuda-ci/doc/DEMO-TUDaLeaflet.pdfbin583236 -> 583236 bytes
-rw-r--r--macros/latex/contrib/tuda-ci/doc/DEMO-TUDaLetter.pdfbin589030 -> 589030 bytes
-rw-r--r--macros/latex/contrib/tuda-ci/doc/DEMO-TUDaPhD.pdfbin782397 -> 781381 bytes
-rw-r--r--macros/latex/contrib/tuda-ci/doc/DEMO-TUDaPoster.pdfbin558962 -> 558962 bytes
-rw-r--r--macros/latex/contrib/tuda-ci/doc/DEMO-TUDaPub.pdfbin818282 -> 817583 bytes
-rw-r--r--macros/latex/contrib/tuda-ci/doc/DEMO-TUDaReport.pdfbin550915 -> 550581 bytes
-rw-r--r--macros/latex/contrib/tuda-ci/doc/DEMO-TUDaSciPoster.pdfbin586726 -> 586726 bytes
-rw-r--r--macros/latex/contrib/tuda-ci/doc/DEMO-TUDaThesis.pdfbin772852 -> 772854 bytes
-rw-r--r--macros/latex/contrib/tuda-ci/example/DEMO-TUDaAnnouncement.tex2
-rw-r--r--macros/latex/contrib/tuda-ci/example/DEMO-TUDaBeamer.tex2
-rw-r--r--macros/latex/contrib/tuda-ci/example/DEMO-TUDaBibliography.bib2
-rw-r--r--macros/latex/contrib/tuda-ci/example/DEMO-TUDaExercise.tex2
-rw-r--r--macros/latex/contrib/tuda-ci/example/DEMO-TUDaFromaddress.lco2
-rw-r--r--macros/latex/contrib/tuda-ci/example/DEMO-TUDaLeaflet.tex2
-rw-r--r--macros/latex/contrib/tuda-ci/example/DEMO-TUDaLetter.tex2
-rw-r--r--macros/latex/contrib/tuda-ci/example/DEMO-TUDaPhD.tex2
-rw-r--r--macros/latex/contrib/tuda-ci/example/DEMO-TUDaPoster.tex2
-rw-r--r--macros/latex/contrib/tuda-ci/example/DEMO-TUDaPub.tex2
-rw-r--r--macros/latex/contrib/tuda-ci/example/DEMO-TUDaReport.tex2
-rw-r--r--macros/latex/contrib/tuda-ci/example/DEMO-TUDaSciPoster.tex2
-rw-r--r--macros/latex/contrib/tuda-ci/example/DEMO-TUDaThesis.tex2
-rw-r--r--macros/latex/contrib/tuda-ci/tex/beamercolorthemeTUDa.sty6
-rw-r--r--macros/latex/contrib/tuda-ci/tex/beamerfontthemeTUDa.sty6
-rw-r--r--macros/latex/contrib/tuda-ci/tex/beamerinnerthemeTUDa.sty6
-rw-r--r--macros/latex/contrib/tuda-ci/tex/beamerouterthemeTUDa.sty6
-rw-r--r--macros/latex/contrib/tuda-ci/tex/beamerthemeTUDa-mecheng.sty6
-rw-r--r--macros/latex/contrib/tuda-ci/tex/beamerthemeTUDa.sty6
-rw-r--r--macros/latex/contrib/tuda-ci/tex/tuda-a0paper.clo6
-rw-r--r--macros/latex/contrib/tuda-ci/tex/tuda-a1paper.clo6
-rw-r--r--macros/latex/contrib/tuda-ci/tex/tuda-a2paper.clo6
-rw-r--r--macros/latex/contrib/tuda-ci/tex/tuda-a3paper.clo6
-rw-r--r--macros/latex/contrib/tuda-ci/tex/tuda-a4paper.clo6
-rw-r--r--macros/latex/contrib/tuda-ci/tex/tuda-a5paper.clo6
-rw-r--r--macros/latex/contrib/tuda-ci/tex/tuda-pgfplots.sty6
-rw-r--r--macros/latex/contrib/tuda-ci/tex/tudabeamer.cls6
-rw-r--r--macros/latex/contrib/tuda-ci/tex/tudacolors.def6
-rw-r--r--macros/latex/contrib/tuda-ci/tex/tudacolors.sty6
-rw-r--r--macros/latex/contrib/tuda-ci/tex/tudaexercise.cls24
-rw-r--r--macros/latex/contrib/tuda-ci/tex/tudafonts.sty6
-rw-r--r--macros/latex/contrib/tuda-ci/tex/tudaleaflet.cls6
-rw-r--r--macros/latex/contrib/tuda-ci/tex/tudaletter.cls6
-rw-r--r--macros/latex/contrib/tuda-ci/tex/tudalettersize10pt.clo6
-rw-r--r--macros/latex/contrib/tuda-ci/tex/tudamecheng.cfg6
-rw-r--r--macros/latex/contrib/tuda-ci/tex/tudaposter.cls6
-rw-r--r--macros/latex/contrib/tuda-ci/tex/tudapub.cls6
-rw-r--r--macros/latex/contrib/tuda-ci/tex/tudarules.sty6
-rw-r--r--macros/latex/contrib/tuda-ci/tex/tudasciposter.cls6
-rw-r--r--macros/latex/contrib/tuda-ci/tex/tudasize9pt.clo6
-rw-r--r--macros/latex/contrib/tuda-ci/tex/tudathesis.cfg8
195 files changed, 1388 insertions, 779 deletions
diff --git a/macros/latex-dev/base/README.md b/macros/latex-dev/base/README.md
index 0f451408e0..fe45ec06c8 100644
--- a/macros/latex-dev/base/README.md
+++ b/macros/latex-dev/base/README.md
@@ -1,7 +1,7 @@
The LaTeX kernel
================
-Release 2020-10-01 pre-release 8
+Release 2020-10-01 pre-release 9
Overview
--------
diff --git a/macros/latex-dev/base/alltt.pdf b/macros/latex-dev/base/alltt.pdf
index 6cd049bbf9..ecaf4094e2 100644
--- a/macros/latex-dev/base/alltt.pdf
+++ b/macros/latex-dev/base/alltt.pdf
Binary files differ
diff --git a/macros/latex-dev/base/cfgguide.pdf b/macros/latex-dev/base/cfgguide.pdf
index 481b0118f0..a5cc634a01 100644
--- a/macros/latex-dev/base/cfgguide.pdf
+++ b/macros/latex-dev/base/cfgguide.pdf
Binary files differ
diff --git a/macros/latex-dev/base/changes.txt b/macros/latex-dev/base/changes.txt
index e20ac7dfd5..ef9406cd7d 100644
--- a/macros/latex-dev/base/changes.txt
+++ b/macros/latex-dev/base/changes.txt
@@ -6,6 +6,16 @@ completeness or accuracy and it contains some references to files that
are not part of the distribution.
================================================================================
+2020-09-09 Frank Mittelbach <Frank.Mittelbach@latex-project.org>
+
+ * ltshipout.dtx (subsection{Emulating \pkg{atbegshi}}):
+ Avoid unnecessary overfull box warnings (gh/387)
+
+2020-09-06 Phelype Oleinik <phelype.oleinik@latex-project.org>
+
+ * ltclass.dtx:
+ Correct option passing when a file is replaced
+
2020-08-24 Frank Mittelbach <Frank.Mittelbach@latex-project.org>
* ltfssini.dtx:
diff --git a/macros/latex-dev/base/classes.pdf b/macros/latex-dev/base/classes.pdf
index a9595955b4..6264b55524 100644
--- a/macros/latex-dev/base/classes.pdf
+++ b/macros/latex-dev/base/classes.pdf
Binary files differ
diff --git a/macros/latex-dev/base/clsguide.pdf b/macros/latex-dev/base/clsguide.pdf
index 36e252ad1b..9d1176d4a0 100644
--- a/macros/latex-dev/base/clsguide.pdf
+++ b/macros/latex-dev/base/clsguide.pdf
Binary files differ
diff --git a/macros/latex-dev/base/cmfonts.pdf b/macros/latex-dev/base/cmfonts.pdf
index b1e605544e..6bcb317a11 100644
--- a/macros/latex-dev/base/cmfonts.pdf
+++ b/macros/latex-dev/base/cmfonts.pdf
Binary files differ
diff --git a/macros/latex-dev/base/cyrguide.pdf b/macros/latex-dev/base/cyrguide.pdf
index a7d11ca8f8..a43d1356ed 100644
--- a/macros/latex-dev/base/cyrguide.pdf
+++ b/macros/latex-dev/base/cyrguide.pdf
Binary files differ
diff --git a/macros/latex-dev/base/doc.pdf b/macros/latex-dev/base/doc.pdf
index e50c8ce8b2..8dea440f33 100644
--- a/macros/latex-dev/base/doc.pdf
+++ b/macros/latex-dev/base/doc.pdf
Binary files differ
diff --git a/macros/latex-dev/base/docstrip.pdf b/macros/latex-dev/base/docstrip.pdf
index 71bf27ba33..a85a0091cb 100644
--- a/macros/latex-dev/base/docstrip.pdf
+++ b/macros/latex-dev/base/docstrip.pdf
Binary files differ
diff --git a/macros/latex-dev/base/encguide.pdf b/macros/latex-dev/base/encguide.pdf
index 5b48fb4ae2..5186a6f248 100644
--- a/macros/latex-dev/base/encguide.pdf
+++ b/macros/latex-dev/base/encguide.pdf
Binary files differ
diff --git a/macros/latex-dev/base/exscale.pdf b/macros/latex-dev/base/exscale.pdf
index 316da084e6..8f23dd4da8 100644
--- a/macros/latex-dev/base/exscale.pdf
+++ b/macros/latex-dev/base/exscale.pdf
Binary files differ
diff --git a/macros/latex-dev/base/fix-cm.pdf b/macros/latex-dev/base/fix-cm.pdf
index 08dde0ae9f..b66dba3040 100644
--- a/macros/latex-dev/base/fix-cm.pdf
+++ b/macros/latex-dev/base/fix-cm.pdf
Binary files differ
diff --git a/macros/latex-dev/base/fntguide.pdf b/macros/latex-dev/base/fntguide.pdf
index 349303e6d4..c3d23a6ca4 100644
--- a/macros/latex-dev/base/fntguide.pdf
+++ b/macros/latex-dev/base/fntguide.pdf
Binary files differ
diff --git a/macros/latex-dev/base/graphpap.pdf b/macros/latex-dev/base/graphpap.pdf
index 274b50ae08..81caf6f37a 100644
--- a/macros/latex-dev/base/graphpap.pdf
+++ b/macros/latex-dev/base/graphpap.pdf
Binary files differ
diff --git a/macros/latex-dev/base/ifthen.pdf b/macros/latex-dev/base/ifthen.pdf
index 9e3fc6c42f..cc28e46720 100644
--- a/macros/latex-dev/base/ifthen.pdf
+++ b/macros/latex-dev/base/ifthen.pdf
Binary files differ
diff --git a/macros/latex-dev/base/inputenc.pdf b/macros/latex-dev/base/inputenc.pdf
index 30351e71e5..7915900cb7 100644
--- a/macros/latex-dev/base/inputenc.pdf
+++ b/macros/latex-dev/base/inputenc.pdf
Binary files differ
diff --git a/macros/latex-dev/base/latexchanges.pdf b/macros/latex-dev/base/latexchanges.pdf
index 6179a01f11..c64b18bcf2 100644
--- a/macros/latex-dev/base/latexchanges.pdf
+++ b/macros/latex-dev/base/latexchanges.pdf
Binary files differ
diff --git a/macros/latex-dev/base/latexrelease.pdf b/macros/latex-dev/base/latexrelease.pdf
index becb06fbb4..08cdbd51c2 100644
--- a/macros/latex-dev/base/latexrelease.pdf
+++ b/macros/latex-dev/base/latexrelease.pdf
Binary files differ
diff --git a/macros/latex-dev/base/latexsym.pdf b/macros/latex-dev/base/latexsym.pdf
index 46dbdde61a..80c5469414 100644
--- a/macros/latex-dev/base/latexsym.pdf
+++ b/macros/latex-dev/base/latexsym.pdf
Binary files differ
diff --git a/macros/latex-dev/base/lb2.pdf b/macros/latex-dev/base/lb2.pdf
index 7c639fccb2..a80c2ee580 100644
--- a/macros/latex-dev/base/lb2.pdf
+++ b/macros/latex-dev/base/lb2.pdf
Binary files differ
diff --git a/macros/latex-dev/base/letter.pdf b/macros/latex-dev/base/letter.pdf
index 7670c796fe..54cc1c43b5 100644
--- a/macros/latex-dev/base/letter.pdf
+++ b/macros/latex-dev/base/letter.pdf
Binary files differ
diff --git a/macros/latex-dev/base/lgc2.pdf b/macros/latex-dev/base/lgc2.pdf
index 9c29edd755..d8e1e6a518 100644
--- a/macros/latex-dev/base/lgc2.pdf
+++ b/macros/latex-dev/base/lgc2.pdf
Binary files differ
diff --git a/macros/latex-dev/base/lppl.pdf b/macros/latex-dev/base/lppl.pdf
index 1d3697bc5b..86e4515dd4 100644
--- a/macros/latex-dev/base/lppl.pdf
+++ b/macros/latex-dev/base/lppl.pdf
Binary files differ
diff --git a/macros/latex-dev/base/ltclass.dtx b/macros/latex-dev/base/ltclass.dtx
index 7b1dbc8127..44fe0f8856 100644
--- a/macros/latex-dev/base/ltclass.dtx
+++ b/macros/latex-dev/base/ltclass.dtx
@@ -33,7 +33,7 @@
%<*driver>
% \fi
\ProvidesFile{ltclass.dtx}
- [2020/08/29 v1.3p LaTeX Kernel (Class & Package Interface)]
+ [2020/09/06 v1.3q LaTeX Kernel (Class & Package Interface)]
% \iffalse
\documentclass{ltxdoc}
\GetFileInfo{ltclass.dtx}
@@ -1021,11 +1021,28 @@
% If the package has been loaded, we check that it was first loaded with
% the options. Otherwise we add the option list to that of the package.
% \begin{macrocode}
+%</2ekernel>
+%<latexrelease>\IncludeInRelease{2020/10/01}{\@pass@ptions}
+%<latexrelease> {Add file replacement in \@pass@ptions}%
+%<*2ekernel|latexrelease>
\def\@pass@ptions#1#2#3{%
- \expandafter\xdef\csname opt@#3.#1\endcsname{%
- \@ifundefined{opt@#3.#1}\@empty
- {\csname opt@#3.#1\endcsname,}%
+ \edef\reserved@a{\@expl@@@filehook@resolve@file@subst@@w #3.#1\@nil}%
+ \expandafter\xdef\csname opt@\reserved@a\endcsname{%
+ \@ifundefined{opt@\reserved@a}\@empty
+ {\csname opt@\reserved@a\endcsname,}%
\zap@space#2 \@empty}}
+%</2ekernel|latexrelease>
+%<latexrelease>\EndIncludeInRelease
+%
+%<latexrelease>\IncludeInRelease{0000/00/00}{\@pass@ptions}
+%<latexrelease> {\@pass@ptions}%
+%<latexrelease>\def\@pass@ptions#1#2#3{%
+%<latexrelease> \expandafter\xdef\csname opt@#3.#1\endcsname{%
+%<latexrelease> \@ifundefined{opt@#3.#1}\@empty
+%<latexrelease> {\csname opt@#3.#1\endcsname,}%
+%<latexrelease> \zap@space#2 \@empty}}
+%<latexrelease>\EndIncludeInRelease
+%<*2ekernel>
\@onlypreamble\@pass@ptions
% \end{macrocode}
%
@@ -1633,8 +1650,6 @@
\@onlypreamble\@fileswith@pti@ns
% \end{macrocode}
%
-
-
% \begin{macro}{\load@onefilewithoptions}
% This macro is used when loading packages or classes.
%
@@ -1727,6 +1742,29 @@
{\@expl@@@filehook@file@push@@
\set@curr@file{\@currname.\@currext}%
\@filehook@set@CurrentFile
+% \end{macrocode}
+% \changes{v1.3q}{2020/09/06}
+% {Save \cs{@currpkg@reqd} so that we don't lose track of
+% package substitutions.}
+% The \cs{set@curr@file} line above might have replaced the file, so
+% \cs{@currname} and \cs{@currext} may no longer hold the actual
+% package being loaded, so in that case we need to update these two
+% token lists (\cs{@curr@file} holds the file name after replacement,
+% so we parse that).
+%
+% The requested file is saved in \cs{@currpkg@reqd} to be used in
+% \cs{InputIfFileExists} later: if the updated \cs{@currname} and
+% \cs{@currext} are used we lose track of the substitution, so
+% \cs{CurrentFile} and \cs{CurrentFileUsed} will be (incorrectly)
+% the same.
+% \begin{macrocode}
+ \edef\@currpkg@reqd{\@currname.\@currext}%
+ \ifx\CurrentFile\CurrentFileUsed
+ \else
+ \filename@parse\@curr@file
+ \edef\@currname{\string@makeletter\filename@base}%
+ \edef\@currext{\string@makeletter\filename@ext}%
+ \fi
\load@onefile@withoptions{#2}%
% \end{macrocode}
% Now just clean up and exit.
@@ -1761,11 +1799,10 @@
%
% The kernel no longer uses \cs{@unprocessedoptions}
% \begin{macrocode}
-\let\@unprocessedoptions\@undefined
+\let\@unprocessedoptions\@undefined
% \end{macrocode}
% \end{macro}
-
-
+%
% \begin{macro}{\@missing@onefilewithoptions}
% Now the action taken when a file is not found.
% \begin{macrocode}
@@ -1817,7 +1854,9 @@
% Now actually load the file (at this point we are certain it exists,
% but use \cs{InputIfFileExists} so that file hooks are executed):
% \begin{macrocode}
- \InputIfFileExists{\@currname.\@currext}{}{}%
+ \InputIfFileExists{\@currpkg@reqd}{}%
+ {\@latex@error
+ {The \@cls@pkg\space\@currpkg@reqd\space failed to load.}\@ehd}%
%-----------------------------------------
% \end{macrocode}
% In older versions of the code |\@unprocessedoptions| would
@@ -1878,7 +1917,7 @@
\fi
\fi}%
%-----------------------------------------
- \reserved@a}
+ \@ifl@aded\@currext\@currname{}{\reserved@a}}
% \end{macrocode}
% \end{macro}
%
diff --git a/macros/latex-dev/base/ltdefns.dtx b/macros/latex-dev/base/ltdefns.dtx
index ea6a924f98..476d102ae4 100644
--- a/macros/latex-dev/base/ltdefns.dtx
+++ b/macros/latex-dev/base/ltdefns.dtx
@@ -32,7 +32,7 @@
%<*driver>
% \fi
\ProvidesFile{ltdefns.dtx}
- [2020/08/21 v1.5m LaTeX Kernel (definition commands)]
+ [2020/09/06 v1.5n LaTeX Kernel (definition commands)]
% \iffalse
\documentclass{ltxdoc}
\GetFileInfo{ltdefns.dtx}
@@ -2194,6 +2194,56 @@
% \end{macro}
%
%
+% \begin{macro}{\string@makeletter}
+% \begin{macro}{\@string@makeletter}
+% \begin{macro}{\char@if@alph}
+% Iterates through a string, turning each alphabetic character into
+% a catcode-11 token (partly undoes a \cs{detokenize}). Useful for
+% \cs{ifx}-based string comparisons where \cs{detokenize}-ing the
+% other string would break too much code.
+%
+% \changes{v1.5n}{2020/09/06}
+% {Macro added}
+%
+% The macro uses \textsf{expl3}'s \cs{@expl@str@map@function@@NN} to
+% iterate on the string (without losing spaces) and applies
+% \cs{@string@makeletter} on each character. The latter checks if
+% character is between a--z or A--Z, and uses \cs{@alph} or \cs{@Alph}
+% to get the corresponding catcode-11 token. Other tokens are passed
+% through unchanged.
+% \begin{macrocode}
+%</2ekernel>
+%<latexrelease>\IncludeInRelease{2020/10/01}{\string@makeletter}
+%<latexrelease> {Add \string@makeletter}%
+%<*2ekernel|latexrelease>
+\def\string@makeletter#1{%
+ \@expl@str@map@function@@NN#1\@string@makeletter}
+\def\@string@makeletter#1{%
+ \char@if@alph{#1}%
+ {\@expl@char@generate@@nn{`#1}{11}}%
+ {#1}}
+\def\char@if@alph#1{%
+ \ifnum0\ifnum`#1<`A 1\fi\ifnum`#1>`z 1\fi
+ \if\ifnum`#1>`Z @\fi\ifnum`#1<`a @\fi01\fi>0
+ \expandafter\@secondoftwo
+ \else
+ \expandafter\@firstoftwo
+ \fi}
+%</2ekernel|latexrelease>
+%<latexrelease>\EndIncludeInRelease
+%
+%<latexrelease>\IncludeInRelease{0000/00/00}{\string@makeletter}
+%<latexrelease> {Undefine \string@makeletter}%
+%<latexrelease>\let\string@makeletter\@undefined
+%<latexrelease>\let\@string@makeletter\@undefined
+%<latexrelease>\let\char@if@alph\@undefined
+%<latexrelease>\EndIncludeInRelease
+%<*2ekernel>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
%
% \begin{macro}{\makeatletter}
% \begin{macro}{\makeatother}
@@ -2207,7 +2257,6 @@
% \end{macro}
% \end{macro}
%
-
%
% \section{Discretionary Hyphenation}
% \begin{macro}{\-}
diff --git a/macros/latex-dev/base/ltexpl.dtx b/macros/latex-dev/base/ltexpl.dtx
index 16ca26095c..4100da79c2 100644
--- a/macros/latex-dev/base/ltexpl.dtx
+++ b/macros/latex-dev/base/ltexpl.dtx
@@ -33,7 +33,7 @@
%<*driver>
% \fi
\ProvidesFile{ltexpl.dtx}
- [2020/08/21 v1.2e LaTeX Kernel (expl3-dependent code)]
+ [2020/09/06 v1.2f LaTeX Kernel (expl3-dependent code)]
% \iffalse
\documentclass{ltxdoc}
\GetFileInfo{ltexpl.dtx}
@@ -272,7 +272,7 @@
% \end{macrocode}
%
% \changes{v1.2e}{2020/08/19}
-% {Add \cs{\@expl@cs@\meta{thing}@spec@@N}
+% {Add \cs{@expl@cs@\meta{thing}@spec@@N}
% for \cs{ShowCommand} (gh/373)}
% \begin{macrocode}
\cs_gset_eq:NN \@expl@cs@prefix@spec@@N \cs_prefix_spec:N
@@ -280,6 +280,15 @@
\cs_gset_eq:NN \@expl@cs@replacement@spec@@N \cs_replacement_spec:N
% \end{macrocode}
%
+% \changes{v1.2f}{2020/09/06}
+% {Add \cs{@expl@str@map@function@@NN
+% and \cs{@expl@char@generate@@nn}}
+% for \cs{string@makeletter} (gh/386)}
+% \begin{macrocode}
+\cs_gset_eq:NN \@expl@str@map@function@@NN \str_map_function:NN
+\cs_gset_eq:NN \@expl@char@generate@@nn \char_generate:nn
+% \end{macrocode}
+%
% \begin{macrocode}
%<latexrelease>\EndIncludeInRelease
%<latexrelease>\IncludeInRelease{0000/00/00}{expl3~2020-10-01}%
@@ -289,6 +298,7 @@
%<latexrelease>\cs_undefine:N \@expl@cs@prefix@spec@@N
%<latexrelease>\cs_undefine:N \@expl@cs@argument@spec@@N
%<latexrelease>\cs_undefine:N \@expl@cs@replacement@spec@@N
+%<latexrelease>\cs_undefine:N \@expl@str@map@function@@NN
%<latexrelease>\EndIncludeInRelease
%</2ekernel|latexrelease>
% \end{macrocode}
diff --git a/macros/latex-dev/base/ltfilehook-code.pdf b/macros/latex-dev/base/ltfilehook-code.pdf
index 12d6fbbd3a..b70786fabf 100644
--- a/macros/latex-dev/base/ltfilehook-code.pdf
+++ b/macros/latex-dev/base/ltfilehook-code.pdf
Binary files differ
diff --git a/macros/latex-dev/base/ltfilehook-doc.pdf b/macros/latex-dev/base/ltfilehook-doc.pdf
index f5d37d4e9b..34ad7a782d 100644
--- a/macros/latex-dev/base/ltfilehook-doc.pdf
+++ b/macros/latex-dev/base/ltfilehook-doc.pdf
Binary files differ
diff --git a/macros/latex-dev/base/ltfilehook.dtx b/macros/latex-dev/base/ltfilehook.dtx
index 73018c682d..26dba35165 100644
--- a/macros/latex-dev/base/ltfilehook.dtx
+++ b/macros/latex-dev/base/ltfilehook.dtx
@@ -28,7 +28,7 @@
%
% \iffalse
%
-%%% From File: ltshipout.dtx
+%%% From File: ltfilehook.dtx
%
% \begin{macrocode}
\providecommand\ltfilehookversion{v1.0a}
@@ -1357,7 +1357,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\cs_new_eq:NN \@expl@@@filehook@file@push@@
+\cs_new_eq:NN \@expl@@@filehook@file@push@@
\__filehook_file_push:
% \end{macrocode}
%
@@ -1434,7 +1434,7 @@
% If there was a file replacement, show that as well:
% \begin{macrocode}
\str_if_eq:NNF \CurrentFileUsed \CurrentFile
- { ~ ( \CurrentFile \space requested ) }
+ { ~ ( \CurrentFile \c_space_tl requested ) }
\iow_newline:
}
\str_if_eq:nnT {#1} {STOP} { \int_gdecr:N \g_@@_nesting_level_int }
@@ -1485,7 +1485,7 @@
% Here is the package file we point to:
% \begin{macrocode}
%<*atveryend-ltx>
-\ProvidesPackage{atveryend}
+\ProvidesPackage{atveryend-ltx}
[2020/08/19 v1.0a
Emulation of the original atvery package^^Jwith kernel methods]
% \end{macrocode}
diff --git a/macros/latex-dev/base/ltfiles.dtx b/macros/latex-dev/base/ltfiles.dtx
index a5ad754bfd..835f600e32 100644
--- a/macros/latex-dev/base/ltfiles.dtx
+++ b/macros/latex-dev/base/ltfiles.dtx
@@ -461,7 +461,7 @@
% \begin{macrocode}
\edef \@kernel@after@begindocument@before {%
\let\expandafter\noexpand\csname
- g__hook_env/document/begin_code_tl\endcsname
+ __hook env/document/begin\endcsname
\noexpand\@empty}
% \end{macrocode}
%
diff --git a/macros/latex-dev/base/lthooks-code.pdf b/macros/latex-dev/base/lthooks-code.pdf
index 03052d0545..960872ce86 100644
--- a/macros/latex-dev/base/lthooks-code.pdf
+++ b/macros/latex-dev/base/lthooks-code.pdf
Binary files differ
diff --git a/macros/latex-dev/base/lthooks-doc.pdf b/macros/latex-dev/base/lthooks-doc.pdf
index adc99b3169..ec308ee62d 100644
--- a/macros/latex-dev/base/lthooks-doc.pdf
+++ b/macros/latex-dev/base/lthooks-doc.pdf
Binary files differ
diff --git a/macros/latex-dev/base/lthooks.dtx b/macros/latex-dev/base/lthooks.dtx
index b1e3985704..17c3262a4c 100644
--- a/macros/latex-dev/base/lthooks.dtx
+++ b/macros/latex-dev/base/lthooks.dtx
@@ -32,7 +32,7 @@
%
% \begin{macrocode}
\def\lthooksversion{v1.0a}
-\def\lthooksdate{2020/08/31}
+\def\lthooksdate{2020/09/10}
% \end{macrocode}
%
%<*driver>
@@ -351,6 +351,21 @@
% \meta{label} throughout the sub-packages in order to avoid
% that the labels change if you internally reorganize your code.
%
+% Except for \cs{UseHook}, \cs{UseOneTimeHook}, \cs{IfHookEmptyTF}, and
+% \cs{IfHookExistsTF} (and their \pkg{expl3} interfaces \cs{hook_use:n},
+% \cs{hook_use_once:n}, \cs{hook_if_empty:nTF}, and
+% \cs{hook_if_exist:nTF}), all \meta{hook}
+% and \meta{label} arguments are processed in the same way: first,
+% spaces are trimmed around the argument, then it is fully expanded
+% until only character tokens remain. If the full expansion of the
+% \meta{hook} or \meta{label} contains a non-expandable non-character
+% token, a low-level \TeX{} error is raised (namely, the \meta{hook} is
+% expanded using \TeX's \cs{csname}\ldots\cs{endcsname}, as such,
+% Unicode characters are allowed in \meta{hook} and \meta{label}
+% arguments). The arguments of \cs{UseHook} and \cs{UseOneTimeHook} are
+% processed much in the same way except that spaces are not trimmed
+% around the argument, for better performance.
+%
% It is not enforced, but highly recommended that the hooks defined by
% a package, and the \meta{labels} used to add code to other hooks
% contain the package name to easily identify the source of the code
@@ -599,6 +614,10 @@
% to adding and removing code from it, so this test should be used
% sparingly.
%
+% Generic hooks are declared at the time code is added to them, so the
+% result of \cs{hook_if_exist:n} will change once code is added to
+% said hook (unless the hook was previously declared).
+%
% The \meta{hook} \emph{cannot} be specified using the dot-syntax.
% A leading |.| is treated literally.
% \end{function}
@@ -611,7 +630,7 @@
% rule it is helpful to get some information about the code
% associated with a hook, its current order and the existing rules.
%
-% \begin{function}{\ShowHook}
+% \begin{function}{\ShowHook,\LogHook}
% \begin{syntax}
% \cs{ShowHook} \Arg{hook}
% \end{syntax}
@@ -627,6 +646,10 @@
% any code executed on the next invocation only.
% \end{itemize}
%
+% \cs{LogHook} prints the information to the |.log| file, and
+% \cs{ShowHook} prints them to the terminal/command window and starts
+% \TeX's prompt (only if \cs{errorstopmode}) to wait for user action.
+%
% The \meta{hook} can be specified using the dot-syntax to denote
% the current package name. See section~\ref{sec:default-label}.
% \end{function}
@@ -796,18 +819,43 @@
% branches to either \meta{true code} or \meta{false code} depending
% on the result.
%
-% \fmi{what are the results for generic hooks that do not need to be declared?}
-%
% The existence of a hook usually doesn't mean much from the viewpoint
% of code that tries to add/remove code from that hook, since package
% loading order may vary, thus the creation of hooks is asynchronous
% to adding and removing code from it, so this test should be used
% sparingly.
%
+% Generic hooks are declared at the time code is added to them, so the
+% result of \cs{hook_if_exist:n} will change once code is added to
+% said hook (unless the hook was previously declared).
+%
% The \meta{hook} \emph{cannot} be specified using the dot-syntax.
% A leading |.| is treated literally.
% \end{function}
%
+% \begin{function}{\hook_show:n,\hook_log:n}
+% \begin{syntax}
+% \cs{hook_show:n} \Arg{hook}
+% \end{syntax}
+% Displays information about the \meta{hook} such as
+% \begin{itemize}
+% \item
+% the code chunks (and their labels) added to it,
+% \item
+% any rules set up to order them,
+% \item
+% the computed order in which the chunks are executed,
+% \item
+% any code executed on the next invocation only.
+% \end{itemize}
+%
+% \cs{hook_log:n} prints the information to the |.log| file, and
+% \cs{hook_show:n} prints them to the terminal/command window and starts
+% \TeX's prompt (only if \cs{errorstopmode}) to wait for user action.
+%
+% The \meta{hook} can be specified using the dot-syntax to denote
+% the current package name. See section~\ref{sec:default-label}.
+% \end{function}
%
% \begin{function}{\hook_debug_on:,\hook_debug_off:}
% \begin{syntax}
@@ -1586,6 +1634,20 @@
% \end{macrocode}
% \end{macro}
%
+% \begin{macro}{\g_@@_execute_immediately_prop}
+% List of hooks that from no on should not longer receive code.
+% \begin{macrocode}
+\prop_new:N \g_@@_execute_immediately_prop
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\g_@@_used_prop}
+% All hooks that receive code (for use in debugging display).
+% \begin{macrocode}
+\prop_new:N \g_@@_used_prop
+% \end{macrocode}
+% \end{macro}
+%
% \begin{macro}{\g_@@_hook_curr_name_tl,\g_@@_name_stack_seq}
% Default label used for hook commands, and a stack to keep track of
% packages within packages.
@@ -1602,10 +1664,12 @@
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{\tl_gremove_once:Nx}
+% \begin{macro}{\tl_gremove_once:Nx,\tl_show:x,\tl_log:x}
% Some variants of \pkg{expl3} functions. \fmi{should be moved to expl3}
% \begin{macrocode}
\cs_generate_variant:Nn \tl_gremove_once:Nn { Nx }
+\cs_generate_variant:Nn \tl_show:n { x }
+\cs_generate_variant:Nn \tl_log:n { x }
% \end{macrocode}
% \end{macro}
%
@@ -1619,7 +1683,7 @@
%
% \subsection{Providing new hooks}
%
-% \begin{macro}{\g_@@_..._code_prop,\g_@@_..._code_tl,\g_@@_..._code_next_tl}
+% \begin{macro}{\g_@@_..._code_prop,\@@~...,\@@_next~...}
%
% Hooks have a \meta{name} and for each hook we have to provide a number of
% data structures. These are
@@ -1635,10 +1699,14 @@
% (reverse) sorted to ensure that two labels always point to the same
% token list. For global rules, the \meta{name} is |??|.
%
-% \item[\cs{g_@@_\meta{name}_code_tl}] The code that is actually executed
+% \item[\cs{@@~\meta{name}}] The code that is actually executed
% when the hook is called in the document is stored in this token
% list. It is constructed from the code chunks applying the
% information.
+% This token list is named like that so that in case of an error
+% inside the hook, the reported token list in the error is shorter,
+% and to make it simpler to normalize hook names in
+% \cs{@@_make_name:n}.
%
% \item[\cs{g_@@_\meta{name}_reversed_tl}] Some hooks are
% \enquote{reversed}. This token list stores a |-| for such hook
@@ -1646,14 +1714,15 @@
% $\meta{reversed}1$ is $+1$ for normal hooks and $-1$ for reversed
% ones.
%
-% \item[\cs{g_@@_\meta{name}_code_next_tl}] Finally there is extra code
+% \item[\cs{@@_next~\meta{name}}] Finally there is extra code
% (normally empty) that is used on the next invocation of the hook
% (and then deleted). This can be used to define some special
% behavior for a single occasion from within the document. This token
-% list is called |code_next| rather than |next_code| because otherwise
-% a hook called \meta{name}|_next| would have its code-token list
-% named \cs[no-index]{g_@@_\meta{name}_code_next_tl}, which would
-% clash with the next code-token list of a hook called \meta{name}.
+% list follows the same naming scheme than the main \cs{@@~\meta{name}}
+% token list. It is called \cs{@@_next~\meta{name}} rather than
+% \cs{@@~next_\meta{name}} because otherwise a hook whose name is
+% |next_|\meta{name} would clash with the next code-token list of the
+% hook called \meta{name}.
%
% \end{description}
% \end{macro}
@@ -1667,42 +1736,41 @@
% \hook{begindocument}.
% \begin{macrocode}
\cs_new_protected:Npn \hook_new:n #1
+ { \@@_normalize_hook_args:Nn \@@_new:n {#1} }
+\cs_new_protected:Npn \@@_new:n #1
{
- \exp_args:Nx \@@_new:n
- { \@@_parse_label_default:nn {#1} { top-level } }
- }
-\cs_new_protected:Npn \@@_new:n #1 {
% \end{macrocode}
% We check for one of the internal data structures and if it
% already exists we complain.
% \begin{macrocode}
- \hook_if_exist:nTF {#1}
- { \msg_error:nnn { hooks } { exists } {#1} }
+ \hook_if_exist:nTF {#1}
+ { \msg_error:nnn { hooks } { exists } {#1} }
% \end{macrocode}
% Otherwise we add the hook name to the list of all hooks and
% allocate the necessary data structures for the new hook.
% \begin{macrocode}
- { \seq_gput_right:Nn \g_@@_all_seq {#1}
+ {
+ \seq_gput_right:Nn \g_@@_all_seq {#1}
% \end{macrocode}
% This is only used by the actual code of the current hook, so
% declare it normally:
% \begin{macrocode}
- \tl_new:c { g_@@_#1_code_tl }
+ \tl_new:c { @@~#1 }
% \end{macrocode}
% Now ensure that the base data structure for the hook exists:
% \begin{macrocode}
- \@@_declare:n {#1}
+ \@@_declare:n {#1}
% \end{macrocode}
% The \cs{g_@@_\meta{hook}_labels_clist} holds the sorted list of
% labels (once it got sorted). This is used only for debugging.
% \begin{macrocode}
- \clist_new:c {g_@@_#1_labels_clist}
+ \clist_new:c {g_@@_#1_labels_clist}
% \end{macrocode}
% Some hooks should reverse the default order of code chunks. To
% signal this we have a token list which is empty for normal hooks
% and contains a \verb=-= for reversed hooks.
% \begin{macrocode}
- \tl_new:c { g_@@_#1_reversed_tl }
+ \tl_new:c { g_@@_#1_reversed_tl }
% \end{macrocode}
% The above is all in L3 convention, but we also provide an
% interface to legacy \LaTeXe{} hooks of the form \cs{@...hook},
@@ -1717,9 +1785,9 @@
% \end{quote}
%
% \begin{macrocode}
- \@@_include_legacy_code_chunk:n {#1}
+ \@@_include_legacy_code_chunk:n {#1}
}
-}
+ }
% \end{macrocode}
% \end{macro}
%
@@ -1737,7 +1805,7 @@
\@@_if_exist:nF {#1}
{
\prop_new:c { g_@@_#1_code_prop }
- \tl_new:c { g_@@_#1_code_next_tl }
+ \tl_new:c { @@_next~#1 }
}
}
% \end{macrocode}
@@ -1745,29 +1813,31 @@
%
%
%
-% \begin{macro}{\hook_new_reversed:n}
+% \begin{macro}{\hook_new_reversed:n,\@@_new_reversed:n}
%
% Declare a new hook. The default ordering of code chunks is
% reversed, signaled by setting the token list to a minus sign.
% \begin{macrocode}
-\cs_new_protected:Npn \hook_new_reversed:n #1 {
- \hook_new:n {#1}
+\cs_new_protected:Npn \hook_new_reversed:n #1
+ { \@@_normalize_hook_args:Nn \@@_new_reversed:n {#1} }
+\cs_new_protected:Npn \@@_new_reversed:n #1
+ {
+ \@@_new:n {#1}
% \end{macrocode}
% If the hook already exists the above will generate an error
% message, so the next line should be executed (but it is --- too
% bad).
% \begin{macrocode}
- \tl_gset:cn { g_@@_#1_reversed_tl } { - }
-}
+ \tl_gset:cn { g_@@_#1_reversed_tl } { - }
+ }
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\hook_new_pair:nn}
% A shorthand for declaring a normal and a (matching) reversed hook in one go.
% \begin{macrocode}
-\cs_new_protected:Npn \hook_new_pair:nn #1#2 {
- \hook_new:n {#1} \hook_new_reversed:n {#2}
-}
+\cs_new_protected:Npn \hook_new_pair:nn #1#2
+ { \hook_new:n {#1} \hook_new_reversed:n {#2} }
% \end{macrocode}
% \end{macro}
%
@@ -1823,19 +1893,24 @@
%
% \subsection{Parsing a label}
%
-% \begin{macro}[EXP]{\@@_parse_label_default:nn,\@@_parse_label_default:Vn}
+% \begin{macro}[EXP]{\@@_parse_label_default:n}
% This macro checks if a label was given (not \cs{c_novalue_tl}), and
% if so, tries to parse the label looking for a leading \verb|.| to
% replace for \cs{@currname}. Otherwise \cs{@@_currname_or_default:n}
% is used to pick \cs{@currname} or the fallback value.
+%
+% The default |top-level| is hard-coded here. It once was an
+% argument, but it's no longer needed. \pho{can't remember why}
% \begin{macrocode}
-\cs_new:Npn \@@_parse_label_default:nn #1 #2
+\cs_new:Npn \@@_parse_label_default:n #1
{
\tl_if_novalue:nTF {#1}
- { \@@_currname_or_default:n {#2} }
- { \tl_trim_spaces_apply:nN {#1} \@@_parse_dot_label:nn {#2} }
+ { \@@_currname_or_default:n { top-level } }
+ {
+ \tl_trim_spaces_apply:nN {#1}
+ \@@_parse_dot_label:nn { top-level }
+ }
}
-\cs_generate_variant:Nn \@@_parse_label_default:nn { V }
% \end{macrocode}
% \end{macro}
%
@@ -1862,7 +1937,7 @@
}
{
\str_if_eq:nnTF {#1} { . }
- { \@@_currname_or_default:n {#1} }
+ { \@@_currname_or_default:n {#2} }
{ \@@_parse_dot_label:nw {#2} #1 ./ \s_@@_mark }
}
}
@@ -1872,13 +1947,13 @@
{ \@@_parse_dot_label_aux:nw {#1} #3 \s_@@_mark }
{
\tl_if_empty:nTF {#3}
- {#2}
+ { \@@_make_name:n {#2} }
{ \@@_parse_dot_label_cleanup:w #2 ./ #3 \s_@@_mark }
}
}
\cs_new:Npn \@@_parse_dot_label_cleanup:w #1 ./ \s_@@_mark {#1}
\cs_new:Npn \@@_parse_dot_label_aux:nw #1 #2 ./ \s_@@_mark
- { \@@_currname_or_default:n {#1} / #2 }
+ { \@@_currname_or_default:n {#1} / \@@_make_name:n {#2} }
% \end{macrocode}
% \end{macro}
% \end{macro}
@@ -1893,7 +1968,7 @@
\tl_if_empty:NTF \g_@@_hook_curr_name_tl
{
\tl_if_empty:NTF \@currname
- {#1}
+ { \@@_make_name:n {#1} }
{ \@currname }
}
{ \g_@@_hook_curr_name_tl }
@@ -1901,7 +1976,73 @@
% \end{macrocode}
% \end{macro}
%
+% \begin{macro}[EXP]{\@@_make_name:n,\@@_make_name:w}
+% Provides a standard sanitisation of a hook's name.
+% It uses \cs{cs:w} to build a control sequence out of the hook name,
+% then uses \cs{cs_to_str:N} to get the string representation of that,
+% without the escape character. \cs{cs:w}-based expansion is used
+% instead of |e|-based because Unicode characters don't behave well
+% inside \cs{expanded}. The macro adds the \cs{@@~} prefix to the
+% hook name to reuse the hook's code token list to build the csname
+% and avoid leaving \enquote{public} control sequences defined
+% (as~\cs{relax}) in TeX's memory.
+% \begin{macrocode}
+\cs_new:Npn \@@_make_name:n #1
+ {
+ \exp_after:wN \exp_after:wN \exp_after:wN \@@_make_name:w
+ \exp_after:wN \token_to_str:N \cs:w @@~ #1 \cs_end:
+ }
+\exp_last_unbraced:NNNNo
+\cs_new:Npn \@@_make_name:w #1 \tl_to_str:n { @@~ } { }
+% \end{macrocode}
+% \end{macro}
%
+% \begin{macro}{\@@_normalize_hook_args:Nn}
+% \begin{macro}{\@@_normalize_hook_args:Nnn}
+% \begin{macro}{\@@_normalize_hook_rule_args:Nnnnn}
+% \begin{macro}{\@@_normalize_hook_args_aux:Nn}
+% Standard route for normalising hook and label arguments. The main
+% macro does the entire operation within a group so that csnames made
+% by \cs{@@_make_name:n} are wiped off before continuing. This means
+% that this function cannot be used for \cs{hook_use:n}!
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_normalize_hook_args_aux:Nn #1 #2
+ {
+ \group_begin:
+ \use:e
+ {
+ \group_end:
+ \exp_not:N #1 #2
+ }
+ }
+\cs_new_protected:Npn \@@_normalize_hook_args:Nn #1 #2
+ {
+ \@@_normalize_hook_args_aux:Nn #1
+ { { \@@_parse_label_default:n {#2} } }
+ }
+\cs_new_protected:Npn \@@_normalize_hook_args:Nnn #1 #2 #3
+ {
+ \@@_normalize_hook_args_aux:Nn #1
+ {
+ { \@@_parse_label_default:n {#2} }
+ { \@@_parse_label_default:n {#3} }
+ }
+ }
+\cs_new_protected:Npn \@@_normalize_hook_rule_args:Nnnnn #1 #2 #3 #4 #5
+ {
+ \@@_normalize_hook_args_aux:Nn #1
+ {
+ { \@@_parse_label_default:n {#2} }
+ { \@@_parse_label_default:n {#3} }
+ { \tl_trim_spaces:n {#4} }
+ { \@@_parse_label_default:n {#5} }
+ }
+ }
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
%
%
% \begin{macro}{\hook_gput_code:nnn}
@@ -1912,50 +2053,53 @@
% with \meta{label}.
% \begin{macrocode}
\cs_new_protected:Npn \hook_gput_code:nnn #1 #2
- {
- \exp_args:Nxx \@@_gput_code:nnn
- { \@@_parse_label_default:nn {#1} { top-level } }
- { \@@_parse_label_default:nn {#2} { top-level } }
- }
+ { \@@_normalize_hook_args:Nnn \@@_gput_code:nnn {#1} {#2} }
\cs_new_protected:Npn \@@_gput_code:nnn #1 #2 #3
{
% \end{macrocode}
-% First check if the current \meta{hook}/\meta{label} pair was marked
+% First check if the hook was used as a one-time hook:
+% \begin{macrocode}
+ \prop_if_in:NnTF \g_@@_execute_immediately_prop {#1}
+ {#3}
+ {
+% \end{macrocode}
+% Then check if the current \meta{hook}/\meta{label} pair was marked
% for removal, in which case \cs{@@_unmark_removal:nn} is used to
% remove that mark (once). This may happen when a package removes
% code from another package which was not yet loaded: the removal
% order is stored, and at this stage it is executed by not adding to
% the hook.
% \begin{macrocode}
- \@@_if_marked_removal:nnTF {#1} {#2}
- { \@@_unmark_removal:nn {#1} {#2} }
- {
+ \@@_if_marked_removal:nnTF {#1} {#2}
+ { \@@_unmark_removal:nn {#1} {#2} }
+ {
% \end{macrocode}
% If no removal is queued, we are free to add. Start by checking if
% the hook exists.
% \begin{macrocode}
- \hook_if_exist:nTF {#1}
+ \hook_if_exist:nTF {#1}
% \end{macrocode}
% If so we simply add (or append) the new code to the property list
% holding different chunks for the hook. At \verb=\begin{document}=
% this is then sorted into a token list for fast execution.
% \begin{macrocode}
- {
- \@@_hook_gput_code_do:nnn {#1} {#2} {#3}
+ {
+ \@@_hook_gput_code_do:nnn {#1} {#2} {#3}
% \end{macrocode}
% However, if there is an update within the document we need to alter
% this execution code which is done by
% \cs{@@_update_hook_code:n}. In the preamble this does nothing.
% \begin{macrocode}
- \@@_update_hook_code:n {#1}
- }
+ \@@_update_hook_code:n {#1}
+ }
% \end{macrocode}
%
% If the hook does not exist, however, before giving up try to
% declare it as a generic hook, if its name matches one of the valid
% patterns.
% \begin{macrocode}
- { \@@_try_declaring_generic_hook:nnn {#1} {#2} {#3} }
+ { \@@_try_declaring_generic_hook:nnn {#1} {#2} {#3} }
+ }
}
}
\cs_generate_variant:Nn \@@_gput_code:nnn { nxv }
@@ -2187,11 +2331,7 @@
% for \meta{hook} stored under \meta{label} is removed.
% \begin{macrocode}
\cs_new_protected:Npn \hook_gremove_code:nn #1 #2
- {
- \exp_args:Nxx \@@_gremove_code:nn
- { \@@_parse_label_default:nn {#1} { top-level } }
- { \@@_parse_label_default:nn {#2} { top-level } }
- }
+ { \@@_normalize_hook_args:Nnn \@@_gremove_code:nn {#1} {#2} }
\cs_new_protected:Npn \@@_gremove_code:nn #1 #2
{
% \end{macrocode}
@@ -2250,6 +2390,10 @@
% \cs{tl_gremove_once:Nx} is fairly efficient even for longer token
% lists, so we use a single global token list, rather than one for
% each hook.
+%
+% A hand-crafted token list is used here because property lists don't
+% hold repeated items, so multiple usages of \cs{@@_mark_removal:nn}
+% would be cancelled by a single \cs{@@_unmark_removal:nn}.
% \begin{macrocode}
\cs_new_protected:Npn \@@_mark_removal:nn #1 #2
{
@@ -2300,7 +2444,7 @@
%
% \begin{macro}{
% \g_@@_??_code_prop,
-% \g_@@_??_code_tl,
+% \@@~??,
% \g_@@_??_reversed_tl,
% }
%
@@ -2315,11 +2459,11 @@
% lot things should be fast, so this is not done with \texttt{c}
% expansion in the code later on.
%
-% \cs{g_@@_??_code_tl} isn't used, but it has to be defined to trick
+% \cs{@@~??} isn't used, but it has to be defined to trick
% the code into thinking that \verb=??= is actually a hook.
% \begin{macrocode}
\prop_new:c {g_@@_??_code_prop}
-\prop_new:c {g_@@_??_code_tl}
+\prop_new:c {@@~??}
% \end{macrocode}
%
% Default rules are always given in normal ordering (never in
@@ -2347,14 +2491,8 @@
% \begin{macrocode}
\cs_new_protected:Npn \hook_gset_rule:nnnn #1#2#3#4
{
- \use:x
- {
- \@@_gset_rule:nnnn
- { \@@_parse_label_default:nn {#1} { top-level } }
- { \@@_parse_label_default:nn {#2} { top-level } }
- {#3}
- { \@@_parse_label_default:nn {#4} { top-level } }
- }
+ \@@_normalize_hook_rule_args:Nnnnn \@@_gset_rule:nnnn
+ {#1} {#2} {#3} {#4}
}
% \end{macrocode}
%
@@ -2544,7 +2682,7 @@
{ \iow_term:x{^^JAll~ initialized~ (non-empty)~ hooks:}
\prop_map_inline:Nn \g_@@_used_prop
{ \iow_term:x{^^J~ ##1~ ->~
- \exp_not:v {g_@@_##1_code_tl}~ }
+ \exp_not:v {@@~##1}~ }
}
}
% \end{macrocode}
@@ -2566,9 +2704,11 @@
% and at \verb=\begin{document}= this is done for all hooks and
% afterwards only if the hook code changes.
% \begin{macrocode}
-\cs_new_protected:Npn \@@_initialize_hook_code:n #1 {
- \@@_debug:n{ \iow_term:x{^^JUpdate~ code~ for~ hook~
- '#1' \on@line :^^J} }
+\cs_new_protected:Npn \@@_initialize_hook_code:n #1
+ {
+ \debug_suspend:
+ \@@_debug:n{ \iow_term:x{^^JUpdate~ code~ for~ hook~
+ '#1' \on@line :^^J} }
% \end{macrocode}
% This does the sorting and the updates.
% First thing we do is to check if a legacy hook macro exists and
@@ -2576,23 +2716,23 @@
% might make the hook non-empty so we have to do this before
% the then following test.
% \begin{macrocode}
- \@@_include_legacy_code_chunk:n {#1}
+ \@@_include_legacy_code_chunk:n {#1}
% \end{macrocode}
% If there aren't any code
% chunks for the current hook, there is no point in even starting
% the sorting routine so we make a quick test for that and in that
-% case just update \cs{g_@@_\meta{hook}_code_tl} to hold the next
+% case just update \cs{@@~\meta{hook}} to hold the next
% code. If there are code chunks we call
% \cs{@@_initialize_single:NNNn} and pass to it ready made csnames
% as they are needed several times inside. This way we save a bit
% on processing time if we do that up front.
% \begin{macrocode}
- \hook_if_exist:nT {#1}
- {
- \prop_if_empty:cTF {g_@@_#1_code_prop}
- { \tl_gset:co {g_@@_#1_code_tl}
- {\cs:w g_@@_#1_code_next_tl \cs_end: } }
- {
+ \hook_if_exist:nT {#1}
+ {
+ \prop_if_empty:cTF {g_@@_#1_code_prop}
+ { \tl_gset:co { @@~#1 }
+ { \cs:w @@_next~#1 \cs_end: } }
+ {
% \end{macrocode}
% By default the algorithm sorts the code chunks and then saves the
% result in a token list for fast execution by adding the code one
@@ -2601,11 +2741,11 @@
% the opposite order into the token list. So all we have to do
% in preparation is to change two definitions used later on.
% \begin{macrocode}
- \@@_if_reversed:nTF {#1}
- { \cs_set_eq:NN \@@_tl_gput:NV \tl_gput_left:NV
- \cs_set_eq:NN \@@_clist_gput:NV \clist_gput_left:NV }
- { \cs_set_eq:NN \@@_tl_gput:NV \tl_gput_right:NV
- \cs_set_eq:NN \@@_clist_gput:NV \clist_gput_right:NV }
+ \@@_if_reversed:nTF {#1}
+ { \cs_set_eq:NN \@@_tl_gput:NV \tl_gput_left:NV
+ \cs_set_eq:NN \@@_clist_gput:NV \clist_gput_left:NV }
+ { \cs_set_eq:NN \@@_tl_gput:NV \tl_gput_right:NV
+ \cs_set_eq:NN \@@_clist_gput:NV \clist_gput_right:NV }
% \end{macrocode}
%
% When sorting, some relations (namely \verb|voids|) need to
@@ -2613,10 +2753,10 @@
% shouldn't appear in the sorted hook token list, so we temporarily
% save the old code property list so that it can be restored later.
% \begin{macrocode}
- \prop_set_eq:Nc \l_@@_work_prop { g_@@_#1_code_prop }
- \@@_initialize_single:cccn
- { g_@@_#1_code_tl } { g_@@_#1_code_next_tl }
- { g_@@_#1_labels_clist } {#1}
+ \prop_set_eq:Nc \l_@@_work_prop { g_@@_#1_code_prop }
+ \@@_initialize_single:cccn
+ { @@~#1 } { @@_next~#1 }
+ { g_@@_#1_labels_clist } {#1}
% \end{macrocode}
% For debug display we want to keep track of those hooks that
% actually got code added to them, so we record that in plist. We
@@ -2624,24 +2764,16 @@
% i.e., we are only interested in storing the keys and the value is
% arbitrary.
% \begin{macrocode}
- \@@_debug:n{ \exp_args:NNx \prop_gput:Nnn
- \g_@@_used_prop {#1}{} }
- }
- }
-}
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \begin{macro}{\g_@@_used_prop}
-% All hooks that receive code (for use in debugging display).
-% \begin{macrocode}
-\prop_new:N\g_@@_used_prop
+ \@@_debug:n{ \exp_args:NNx \prop_gput:Nnn
+ \g_@@_used_prop {#1}{} }
+ }
+ }
+ \debug_resume:
+ }
% \end{macrocode}
% \end{macro}
%
%
-%
% \begin{macro}[EXP]{\@@_tl_csname:n,\@@_seq_csname:n}
% It is faster to pass a single token and expand it when necessary
% than to pass a bunch of character tokens around.
@@ -2653,8 +2785,6 @@
% \end{macro}
%
%
-%
-%
% \begin{macro}{\l_@@_labels_seq,\l_@@_labels_int,\l_@@_front_tl,
% \l_@@_rear_tl,\l_@@_label_0_tl}
%
@@ -2712,21 +2842,18 @@
% the moment: a label can't be equal to the number 0! \fmi{Needs
% checking for, just in case}
% \begin{macrocode}
-\cs_new_protected:Npn \@@_initialize_single:NNNn #1#2#3#4 {
-% \end{macrocode}
-%
-% \begin{macrocode}
- \debug_suspend:
+\cs_new_protected:Npn \@@_initialize_single:NNNn #1#2#3#4
+ {
% \end{macrocode}
% Step T1: Initialize the data structure \ldots
% \begin{macrocode}
- \seq_clear:N \l_@@_labels_seq
- \int_zero:N \l_@@_labels_int
+ \seq_clear:N \l_@@_labels_seq
+ \int_zero:N \l_@@_labels_int
% \end{macrocode}
%
% Store the name of the hook:
% \begin{macrocode}
- \tl_set:Nn \l_@@_cur_hook_tl {#4}
+ \tl_set:Nn \l_@@_cur_hook_tl {#4}
% \end{macrocode}
%
% We loop over the property list holding the code and record all
@@ -2736,13 +2863,13 @@
% to ensure that labels named |front|, |rear|, |labels|, or |return|
% don't interact with our code.
% \begin{macrocode}
- \prop_map_inline:Nn \l_@@_work_prop
- {
- \int_incr:N \l_@@_labels_int
- \seq_put_right:Nn \l_@@_labels_seq {##1}
- \tl_set:cn { \@@_tl_csname:n {##1} }{0}
- \seq_clear_new:c { \@@_seq_csname:n {##1} }
- }
+ \prop_map_inline:Nn \l_@@_work_prop
+ {
+ \int_incr:N \l_@@_labels_int
+ \seq_put_right:Nn \l_@@_labels_seq {##1}
+ \tl_set:cn { \@@_tl_csname:n {##1} }{0}
+ \seq_clear_new:c { \@@_seq_csname:n {##1} }
+ }
% \end{macrocode}
% Steps T2 and T3: Sort the relevant rules into the data structure\ldots
%
@@ -2758,30 +2885,30 @@
% \cs{@@_apply_label_pair:nnn}, which takes the properly-ordered pair
% of labels as argument.
% \begin{macrocode}
- \prop_map_inline:Nn \l_@@_work_prop
- {
- \prop_map_inline:Nn \l_@@_work_prop
- {
- \@@_if_label_case:nnnnn {##1} {####1}
- { \prop_map_break: }
- { \@@_apply_label_pair:nnn {##1} {####1} }
- { \@@_apply_label_pair:nnn {####1} {##1} }
- {#4}
- }
- }
+ \prop_map_inline:Nn \l_@@_work_prop
+ {
+ \prop_map_inline:Nn \l_@@_work_prop
+ {
+ \@@_if_label_case:nnnnn {##1} {####1}
+ { \prop_map_break: }
+ { \@@_apply_label_pair:nnn {##1} {####1} }
+ { \@@_apply_label_pair:nnn {####1} {##1} }
+ {#4}
+ }
+ }
% \end{macrocode}
% Take a breath and take a look at the data structures that have
% been set up:
% \begin{macrocode}
- \@@_debug:n { \@@_debug_label_data:N \l_@@_work_prop }
+ \@@_debug:n { \@@_debug_label_data:N \l_@@_work_prop }
% \end{macrocode}
%
%
% Step T4:
% \begin{macrocode}
- \tl_set:Nn \l_@@_rear_tl { 0 }
- \tl_set:cn { \@@_tl_csname:n { 0 } } { 0 }
- \seq_map_inline:Nn \l_@@_labels_seq
+ \tl_set:Nn \l_@@_rear_tl { 0 }
+ \tl_set:cn { \@@_tl_csname:n { 0 } } { 0 }
+ \seq_map_inline:Nn \l_@@_labels_seq
{
\int_compare:nNnT { \cs:w \@@_tl_csname:n {##1} \cs_end: } = 0
{
@@ -2789,61 +2916,61 @@
\tl_set:Nn \l_@@_rear_tl {##1}
}
}
- \tl_set_eq:Nc \l_@@_front_tl { \@@_tl_csname:n { 0 } }
+ \tl_set_eq:Nc \l_@@_front_tl { \@@_tl_csname:n { 0 } }
% \end{macrocode}
%
% \begin{macrocode}
- \tl_gclear:N #1
- \clist_gclear:N #3
+ \tl_gclear:N #1
+ \clist_gclear:N #3
% \end{macrocode}
%
% The whole loop combines steps T5--T7:
% \begin{macrocode}
- \bool_while_do:nn { ! \str_if_eq_p:Vn \l_@@_front_tl { 0 } }
- {
+ \bool_while_do:nn { ! \str_if_eq_p:Vn \l_@@_front_tl { 0 } }
+ {
% \end{macrocode}
% This part is step T5:
% \begin{macrocode}
- \int_decr:N \l_@@_labels_int
- \prop_get:NVN \l_@@_work_prop \l_@@_front_tl \l_@@_return_tl
- \@@_tl_gput:NV #1 \l_@@_return_tl
+ \int_decr:N \l_@@_labels_int
+ \prop_get:NVN \l_@@_work_prop \l_@@_front_tl \l_@@_return_tl
+ \@@_tl_gput:NV #1 \l_@@_return_tl
% \end{macrocode}
%
% \begin{macrocode}
- \@@_clist_gput:NV #3 \l_@@_front_tl
- \@@_debug:n{ \iow_term:x{Handled~ code~ for~ \l_@@_front_tl} }
+ \@@_clist_gput:NV #3 \l_@@_front_tl
+ \@@_debug:n{ \iow_term:x{Handled~ code~ for~ \l_@@_front_tl} }
% \end{macrocode}
%
% This is step T6 except that we don't use a pointer $P$ to move
% through the successors, but instead use \verb=##1= of the mapping
% function.
% \begin{macrocode}
- \seq_map_inline:cn { \@@_seq_csname:n { \l_@@_front_tl } }
- {
- \tl_set:cx { \@@_tl_csname:n {##1} }
- { \int_eval:n
- { \cs:w \@@_tl_csname:n {##1} \cs_end: - 1 }
- }
- \int_compare:nNnT
- { \cs:w \@@_tl_csname:n {##1} \cs_end: } = 0
- {
- \tl_set:cn { \@@_tl_csname:n { \l_@@_rear_tl } } {##1}
- \tl_set:Nn \l_@@_rear_tl {##1}
- }
- }
+ \seq_map_inline:cn { \@@_seq_csname:n { \l_@@_front_tl } }
+ {
+ \tl_set:cx { \@@_tl_csname:n {##1} }
+ { \int_eval:n
+ { \cs:w \@@_tl_csname:n {##1} \cs_end: - 1 }
+ }
+ \int_compare:nNnT
+ { \cs:w \@@_tl_csname:n {##1} \cs_end: } = 0
+ {
+ \tl_set:cn { \@@_tl_csname:n { \l_@@_rear_tl } } {##1}
+ \tl_set:Nn \l_@@_rear_tl {##1}
+ }
+ }
% \end{macrocode}
% and step T7:
% \begin{macrocode}
- \tl_set_eq:Nc \l_@@_front_tl
- { \@@_tl_csname:n { \l_@@_front_tl } }
+ \tl_set_eq:Nc \l_@@_front_tl
+ { \@@_tl_csname:n { \l_@@_front_tl } }
% \end{macrocode}
%
% This is step T8: If we haven't moved the code for all labels
% (i.e., if \cs{l_@@_labels_int} is still greater than zero) we
% have a loop and our partial order can't be flattened out.
% \begin{macrocode}
- }
- \int_compare:nNnF \l_@@_labels_int = 0
+ }
+ \int_compare:nNnF \l_@@_labels_int = 0
{
\iow_term:x{====================}
\iow_term:x{Error:~ label~ rules~ are~ incompatible:}
@@ -2860,12 +2987,8 @@
% with adding extra code for a one time execution. That is stored
% in \verb=#2= but is normally empty.
% \begin{macrocode}
- \tl_gput_right:Nn #1 {#2}
-% \end{macrocode}
-%
-% \begin{macrocode}
- \debug_resume:
-}
+ \tl_gput_right:Nn #1 {#2}
+ }
% \end{macrocode}
%
% \begin{macrocode}
@@ -3099,101 +3222,134 @@
%
%
%
-% \begin{macro}{\hook_log:n}
-% This writes out information about the hook given in its argument
-% onto the terminal and the \texttt{.log} file.
+% \begin{macro}{\hook_show:n,\hook_log:n}
+% \begin{macro}{\@@_log_line:x,\@@_log_line_indent:x}
+% \begin{macro}{\@@_log:nN}
+% This writes out information about the hook given in its argument
+% onto the \texttt{.log} file and the terminal, if \cs{show_hook:n} is
+% used. Internally both share the same structure, except that at the
+% end, \cs{hook_show:n} triggers \TeX's prompt.
% \begin{macrocode}
\cs_new_protected:Npn \hook_log:n #1
{
- \exp_args:Nx \@@_log:n
- { \@@_parse_label_default:nn {#1} { top-level } }
+ \cs_set_eq:NN \@@_log_cmd:x \iow_log:x
+ \@@_normalize_hook_args:Nn \@@_log:nN {#1} \tl_log:x
+ }
+\cs_new_protected:Npn \hook_show:n #1
+ {
+ \cs_set_eq:NN \@@_log_cmd:x \iow_term:x
+ \@@_normalize_hook_args:Nn \@@_log:nN {#1} \tl_show:x
}
-\cs_new_protected:Npn \@@_log:n #1
+\cs_new_protected:Npn \@@_log_line:x #1
+ { \@@_log_cmd:x { >~#1 } }
+\cs_new_protected:Npn \@@_log_line_indent:x #1
+ { \@@_log_cmd:x { >~\@spaces #1 } }
+\cs_new_protected:Npn \@@_log:nN #1 #2
{
\@@_preamble_hook:n {#1}
- \iow_term:x{^^JThe~ hook~ '#1':}
+ \iow_term:x { ^^J ->~The~hook~'#1': }
% \end{macrocode}
%
% \begin{macrocode}
\hook_if_exist:nF {#1}
- { \iow_term:x {~Hook~ is~ not~ declared!} }
+ { \@@_log_line:x { is~not~declared! } }
\@@_if_exist:nTF {#1}
{
- \iow_term:x{~Code~ chunks:}
- \prop_if_empty:cTF {g_@@_#1_code_prop}
- { \iow_term:x{\@spaces ---} }
+ \@@_log_line:x { Code~chunks: }
+ \prop_if_empty:cTF { g_@@_#1_code_prop }
+ { \@@_log_line_indent:x { --- } }
{
- \prop_map_inline:cn {g_@@_#1_code_prop}
- { \iow_term:x{\@spaces ##1~ ->~ \tl_to_str:n{##2} } }
+ \prop_map_inline:cn { g_@@_#1_code_prop }
+ { \@@_log_line_indent:x { ##1~->~\tl_to_str:n {##2} } }
}
% \end{macrocode}
%
% \begin{macrocode}
- \iow_term:x{~Extra~ code~ next~ invocation:}
- \iow_term:x{\@spaces
- \tl_if_empty:cTF { g_@@_#1_code_next_tl }
- {---}
+ \@@_log_line:x { Extra~code~for~next~invocation:}
+ \@@_log_line_indent:x
+ {
+ \tl_if_empty:cTF { @@_next~#1 }
+ { --- }
% \end{macrocode}
+%
% If the token list is not empty we want to display it but without
% the first tokens (the code to clear itself) so we call a helper
% command to get rid of them.
% \begin{macrocode}
- {->~ \exp_args:Nv
- \@@_log_next_code:n {g_@@_#1_code_next_tl} } }
+ { ->~ \exp_args:Nv \@@_log_next_code:n { @@_next~#1 } }
+ }
% \end{macrocode}
%
% Loop through the rules in a hook and for every rule found, print it.
% If no rule is there, print |---|. The boolean \cs{l_@@_tmpa_bool}
% here indicates if the hook has no rules.
% \begin{macrocode}
- \iow_term:x { ~Rules: }
+ \@@_log_line:x { Rules: }
\bool_set_true:N \l_@@_tmpa_bool
\@@_list_rules:nn {#1}
{
\bool_set_false:N \l_@@_tmpa_bool
- \iow_term:x
+ \@@_log_line_indent:x
{
- \@spaces ##2~ with~
+ ##2~ with~
\str_if_eq:nnT {##3} {??} { default~ }
- relation~ ##1 }
+ relation~ ##1
+ }
}
\bool_if:NT \l_@@_tmpa_bool
- { \iow_term:x { \@spaces --- } }
+ { \@@_log_line_indent:x { --- } }
% \end{macrocode}
-%
+%
+% When the hook is declared (that is, the sorting algorithm is applied
+% to that hook) and not empty
% \begin{macrocode}
- \bool_lazy_and:nnT
+ \bool_lazy_and:nnTF
{ \hook_if_exist_p:n {#1} }
{ ! \hook_if_empty_p:n {#1} }
- { \iow_term:x { ~Execution~ order
- \bool_if:NTF \l_@@_tmpa_bool
- { \@@_if_reversed:nT {#1}
- { ~ (after~ reversal) }
- }
- { ~ (after~
- \@@_if_reversed:nT {#1} {reversal~ and~}
- applying~ rules)
- }
- :
+ {
+ \@@_log_line:x
+ {
+ Execution~order
+ \bool_if:NTF \l_@@_tmpa_bool
+ { \@@_if_reversed:nT {#1} { ~(after~reversal) } }
+ { ~(after~
+ \@@_if_reversed:nT {#1} { reversal~and~ }
+ applying~rules)
+ } :
+ }
+ #2 % \tl_show:n
+ {
+ \@spaces
+ \clist_if_empty:cTF { g_@@_#1_labels_clist }
+ { --- }
+ { \clist_use:cn {g_@@_#1_labels_clist} { ,~ } }
+ }
+ }
+ {
+ #2
+ {
+ Hook~ \hook_if_exist:nTF {#1}
+ {code~pool~empty} {not~declared}
}
- \iow_term:x
- { \@spaces \clist_use:cn {g_@@_#1_labels_clist} { ,~ } }
}
}
- { \iow_term:n { ~The~hook~is~empty. } }
- \iow_term:n { }
+ { #2 { The~hook~is~empty. } }
}
% \end{macrocode}
%
+% \begin{macro}{\@@_log_next_code:n}
% To display the code for next invocation only (i.e., from
% \cs{AddToHookNext} we have to remove the first two tokens at the
% front which are \cs{tl_gclear:N} and the token list to clear.
% \begin{macrocode}
-\cs_new:Npn \@@_log_next_code:n #1 {
- \exp_args:No \tl_to_str:n {\use_none:nn #1}
-}
+\cs_new:Npn \@@_log_next_code:n #1
+ { \exp_args:No \tl_to_str:n { \use_none:nn #1 } }
% \end{macrocode}
-% \end{macro}
+% \end{macro}
+%
+% \end{macro}
+% \end{macro}
+% \end{macro}
%
% \begin{macro}{\@@_list_rules:nn}
% \begin{macro}{\@@_list_one_rule:nnn,\@@_list_if_rule_exists:nnnF}
@@ -3266,25 +3422,29 @@
%
% \subsection{Specifying code for next invocation}
%
-% \begin{macro}{\hook_gput_next_code:nn}
-%
+% \begin{macro}{\hook_gput_next_code:nn}
+% \begin{macro}{%
+% \@@_gput_next_code:nn,
+% \@@_gput_next_do:nn,
+% \@@_gput_next_do:Nnn,
+% \@@_clear_next:n
+% }
% \begin{macrocode}
\cs_new_protected:Npn \hook_gput_next_code:nn #1
- {
- \exp_args:Nx \@@_gput_next_code:nn
- { \@@_parse_label_default:nn {#1} { top-level } }
- }
+ { \@@_normalize_hook_args:Nn \@@_gput_next_code:nn {#1} }
\cs_new_protected:Npn \@@_gput_next_code:nn #1 #2
{
+ \debug_suspend:
\@@_declare:n {#1}
\hook_if_exist:nTF {#1}
{ \@@_gput_next_do:nn {#1} {#2} }
{ \@@_try_declaring_generic_next_hook:nn {#1} {#2} }
+ \debug_resume:
}
\cs_new_protected:Npn \@@_gput_next_do:nn #1
{
\exp_args:Nc \@@_gput_next_do:Nnn
- { g_@@_#1_code_next_tl } {#1}
+ { @@_next~#1 } {#1}
}
% \end{macrocode}
% First check if the ``next code'' token list is empty: if so we need
@@ -3299,20 +3459,24 @@
% \begin{macrocode}
\cs_new_protected:Npn \@@_gput_next_do:Nnn #1 #2
{
- \tl_if_empty:cT { g_@@_#2_code_tl }
+ \tl_if_empty:cT { @@~#2 }
{ \@@_update_hook_code:n {#2} }
\tl_if_empty:NT #1
- { \tl_gset:Nn #1 { \tl_gclear:c { g_@@_#2_code_next_tl } } }
+ { \tl_gset:Nn #1 { \@@_clear_next:n {#2} } }
\tl_gput_right:Nn #1
}
+\cs_new_protected:Npn \@@_clear_next:n #1
+ { \cs_gset_eq:cN { @@_next~#1 } \c_empty_tl }
% \end{macrocode}
% \end{macro}
+% \end{macro}
%
%
% \subsection{Using the hook}
%
% \begin{macro}{\hook_use:n}
% \begin{macro}[EXP]{\@@_use_initialized:n}
+% \begin{macro}{\@@_use_undefined:w,\@@_use_end:}
% \begin{macro}{\@@_preamble_hook:n}
% \cs{hook_use:n} as defined here is used in the preamble, where
% hooks aren't initialized by default. \cs{@@_use_initialized:n} is
@@ -3340,25 +3504,34 @@
% \begin{macrocode}
\cs_new_protected:Npn \hook_use:n #1
{
- \tl_if_exist:cTF { g_@@_#1_code_tl }
+ \tl_if_exist:cTF { @@~#1 }
{
\@@_preamble_hook:n {#1}
- \cs:w g_@@_#1_code_tl \cs_end:
+ \cs:w @@~#1 \cs_end:
}
{ \@@_use:wn #1 / \s_@@_mark {#1} }
}
\cs_new:Npn \@@_use_initialized:n #1
{
- \tl_if_exist:cTF { g_@@_#1_code_tl }
- { \cs:w g_@@_#1_code_tl \cs_end: }
- { \@@_use:wn #1 / \s_@@_mark {#1} }
+ \if_cs_exist:w @@~#1 \cs_end:
+ \else:
+ \@@_use_undefined:w
+ \fi:
+ \cs:w @@~#1 \@@_use_end:
+ }
+\cs_new:Npn \@@_use_undefined:w #1 #2 @@~#3 \@@_use_end:
+ {
+ #1 % fi
+ \@@_use:wn #3 / \s_@@_mark {#3}
}
\cs_new_protected:Npn \@@_preamble_hook:n #1
{ \@@_initialize_hook_code:n {#1} }
+\cs_new_eq:NN \@@_use_end: \cs_end:
% \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
+% \end{macro}
%
% \begin{macro}[EXP]{\@@_use:wn}
% \begin{macro}{\@@_try_file_hook:n,\@@_if_exist_use:n}
@@ -3391,10 +3564,10 @@
}
\cs_new_protected:Npn \@@_if_exist_use:n #1
{
- \tl_if_exist:cT { g_@@_#1_code_tl }
+ \tl_if_exist:cT { @@~#1 }
{
\@@_preamble_hook:n {#1}
- \cs:w g_@@_#1_code_tl \cs_end:
+ \cs:w @@~#1 \cs_end:
}
}
% \end{macrocode}
@@ -3404,18 +3577,28 @@
% \begin{macro}{\hook_use_once:n}
% For hooks that can and should be used only once we have a special
% use command that remembers the hook name in
-% \cs{g_@@_execute_immediately_clist}. This has the effect that any
+% \cs{g_@@_execute_immediately_prop}. This has the effect that any
% further code added to the hook is executed immediately rather
% than stored in the hook.
+%
+% The code needs some gymnastics to prevent space trimming from the
+% hook name, since \cs{hook_use:n} and \cs{hook_use_once:n} are
+% documented to not trim spaces.
+%
+% \pho{Should this raise an error if the hook doesn't exist?}
% \begin{macrocode}
\cs_new_protected:Npn \hook_use_once:n #1
{
- \tl_if_exist:cT { g_@@_#1_code_tl }
+ \tl_if_exist:cT { @@~#1 }
{
- \clist_gput_left:Nn \g_@@_execute_immediately_clist {#1}
+ \tl_set:Nn \l_@@_return_tl {#1}
+ \@@_normalize_hook_args:Nn \@@_use_once_store:n
+ { \l_@@_return_tl }
\hook_use:n {#1}
}
}
+\cs_new_protected:Npn \@@_use_once_store:n #1
+ { \prop_gput:Nnn \g_@@_execute_immediately_prop {#1} { } }
% \end{macrocode}
% \end{macro}
%
@@ -3445,7 +3628,7 @@
% Test if a hook is empty (that is, no code was added to that hook).
% A hook being empty means that \emph{both} its
% \cs[no-index]{g_@@_\meta{hook}_code_prop} and its
-% \cs[no-index]{g_@@_\meta{hook}_code_next_tl} are empty.
+% \cs[no-index]{@@_next~\meta{hook}} are empty.
% \begin{macrocode}
\prg_new_conditional:Npnn \hook_if_empty:n #1 { p , T , F , TF }
{
@@ -3453,7 +3636,7 @@
{
\bool_lazy_and:nnTF
{ \prop_if_empty_p:c { g_@@_#1_code_prop } }
- { \tl_if_empty_p:c { g_@@_#1_code_next_tl } }
+ { \tl_if_empty_p:c { @@_next~#1 } }
{ \prg_return_true: }
{ \prg_return_false: }
}
@@ -3465,7 +3648,7 @@
% \begin{macro}[pTF]{\hook_if_exist:n}
% A canonical way to test if a hook exists. A hook exists if the
% token list that stores the sorted code for that hook,
-% \cs[no-index]{g_@@_\meta{hook}_code_tl}, exists. The property list
+% \cs[no-index]{@@~\meta{hook}}, exists. The property list
% \cs[no-index]{g_@@_\meta{hook}_code_prop} cannot be used here
% because often it is necessary to add code to a hook without knowing
% if such hook was already declared, or even if it will ever be
@@ -3473,7 +3656,7 @@
% \begin{macrocode}
\prg_new_conditional:Npnn \hook_if_exist:n #1 { p , T , F , TF }
{
- \tl_if_exist:cTF { g_@@_#1_code_tl }
+ \tl_if_exist:cTF { @@~#1 }
{ \prg_return_true: }
{ \prg_return_false: }
}
@@ -3510,13 +3693,6 @@
% \end{macro}
%
%
-% \begin{macro}{\g_@@_execute_immediately_clist}
-% List of hooks that from no on should not longer receive code.
-% \begin{macrocode}
-\clist_new:N \g_@@_execute_immediately_clist
-% \end{macrocode}
-% \end{macro}
-%
% \subsection{Messages}
%
% \begin{macrocode}
@@ -3588,11 +3764,7 @@
%
% \begin{macrocode}
\NewDocumentCommand \AddToHook { m o +m }
- {
- \clist_if_in:NnTF \g_@@_execute_immediately_clist {#1}
- {#3}
- { \hook_gput_code:nnn {#1} {#2} {#3} }
- }
+ { \hook_gput_code:nnn {#1} {#2} {#3} }
% \end{macrocode}
% \end{macro}
%
@@ -3685,19 +3857,19 @@
% Avoid the overhead of \pkg{xparse} and its protection that we
% don't want here (since the hook should vanish without trace if empty)!
% \begin{macrocode}
-\newcommand \UseHook { \hook_use:n }
-\newcommand \UseOneTimeHook { \hook_use_once:n }
+\cs_new:Npn \UseHook { \hook_use:n }
+\cs_new:Npn \UseOneTimeHook { \hook_use_once:n }
% \end{macrocode}
% \end{macro}
%
%
%
-% \begin{macro}{\ShowHook}
-%
+% \begin{macro}{\ShowHook,\LogHook}
% \begin{macrocode}
-\cs_new_protected:Npn \ShowHook { \hook_log:n }
+\cs_new_protected:Npn \ShowHook { \hook_show:n }
+\cs_new_protected:Npn \LogHook { \hook_log:n }
% \end{macrocode}
-% \end{macro}
+% \end{macro}
%
% \begin{macro}{\DebugHooksOn,\DebugHooksOff}
%
@@ -3722,7 +3894,7 @@
% \begin{macrocode}
\NewDocumentCommand \DeclareDefaultHookRule { m m m }
{ \hook_gset_rule:nnnn {??}{#1}{#2}{#3} }
-\@onlypreamble\DeclareDefaultHookRule
+\@onlypreamble\DeclareDefaultHookRule
% \end{macrocode}
% \end{macro}
%
@@ -3766,12 +3938,12 @@
%
% \begin{macrocode}
\cs_new_eq:NN \@expl@@@initialize@all@@
- \__hook_initialize_all:
+ \__hook_initialize_all:
% \end{macrocode}
%
% \begin{macrocode}
-\cs_new_eq:NN \@expl@@@hook@curr@name@push@@n
- \__hook_curr_name_push:n
+\cs_new_eq:NN \@expl@@@hook@curr@name@push@@n
+ \__hook_curr_name_push:n
% \end{macrocode}
%
% \begin{macrocode}
diff --git a/macros/latex-dev/base/ltluatex.pdf b/macros/latex-dev/base/ltluatex.pdf
index f6c98b2b9f..3b1e49da26 100644
--- a/macros/latex-dev/base/ltluatex.pdf
+++ b/macros/latex-dev/base/ltluatex.pdf
Binary files differ
diff --git a/macros/latex-dev/base/ltnews.pdf b/macros/latex-dev/base/ltnews.pdf
index 5fa6b9b855..a890a221d1 100644
--- a/macros/latex-dev/base/ltnews.pdf
+++ b/macros/latex-dev/base/ltnews.pdf
Binary files differ
diff --git a/macros/latex-dev/base/ltnews01.pdf b/macros/latex-dev/base/ltnews01.pdf
index 132c99241c..0c4cda302e 100644
--- a/macros/latex-dev/base/ltnews01.pdf
+++ b/macros/latex-dev/base/ltnews01.pdf
Binary files differ
diff --git a/macros/latex-dev/base/ltnews02.pdf b/macros/latex-dev/base/ltnews02.pdf
index 3cb443cacc..7fb62414db 100644
--- a/macros/latex-dev/base/ltnews02.pdf
+++ b/macros/latex-dev/base/ltnews02.pdf
Binary files differ
diff --git a/macros/latex-dev/base/ltnews03.pdf b/macros/latex-dev/base/ltnews03.pdf
index 489ba8fbfb..d3d6d5104e 100644
--- a/macros/latex-dev/base/ltnews03.pdf
+++ b/macros/latex-dev/base/ltnews03.pdf
Binary files differ
diff --git a/macros/latex-dev/base/ltnews04.pdf b/macros/latex-dev/base/ltnews04.pdf
index d19579de3e..ed2708170a 100644
--- a/macros/latex-dev/base/ltnews04.pdf
+++ b/macros/latex-dev/base/ltnews04.pdf
Binary files differ
diff --git a/macros/latex-dev/base/ltnews05.pdf b/macros/latex-dev/base/ltnews05.pdf
index 07cf7ae8a5..55d21d641b 100644
--- a/macros/latex-dev/base/ltnews05.pdf
+++ b/macros/latex-dev/base/ltnews05.pdf
Binary files differ
diff --git a/macros/latex-dev/base/ltnews06.pdf b/macros/latex-dev/base/ltnews06.pdf
index 526c9dc167..99ab73bba7 100644
--- a/macros/latex-dev/base/ltnews06.pdf
+++ b/macros/latex-dev/base/ltnews06.pdf
Binary files differ
diff --git a/macros/latex-dev/base/ltnews07.pdf b/macros/latex-dev/base/ltnews07.pdf
index 9bdb3c44fa..dc6913b4d6 100644
--- a/macros/latex-dev/base/ltnews07.pdf
+++ b/macros/latex-dev/base/ltnews07.pdf
Binary files differ
diff --git a/macros/latex-dev/base/ltnews08.pdf b/macros/latex-dev/base/ltnews08.pdf
index a5305c0439..90d3b71e74 100644
--- a/macros/latex-dev/base/ltnews08.pdf
+++ b/macros/latex-dev/base/ltnews08.pdf
Binary files differ
diff --git a/macros/latex-dev/base/ltnews09.pdf b/macros/latex-dev/base/ltnews09.pdf
index 25bcf3b22d..8cbf054743 100644
--- a/macros/latex-dev/base/ltnews09.pdf
+++ b/macros/latex-dev/base/ltnews09.pdf
Binary files differ
diff --git a/macros/latex-dev/base/ltnews10.pdf b/macros/latex-dev/base/ltnews10.pdf
index d0cd783491..bb03c0497a 100644
--- a/macros/latex-dev/base/ltnews10.pdf
+++ b/macros/latex-dev/base/ltnews10.pdf
Binary files differ
diff --git a/macros/latex-dev/base/ltnews11.pdf b/macros/latex-dev/base/ltnews11.pdf
index c7ba9f8feb..b34534a9e4 100644
--- a/macros/latex-dev/base/ltnews11.pdf
+++ b/macros/latex-dev/base/ltnews11.pdf
Binary files differ
diff --git a/macros/latex-dev/base/ltnews12.pdf b/macros/latex-dev/base/ltnews12.pdf
index 3899b9d294..3ce0db8cf5 100644
--- a/macros/latex-dev/base/ltnews12.pdf
+++ b/macros/latex-dev/base/ltnews12.pdf
Binary files differ
diff --git a/macros/latex-dev/base/ltnews13.pdf b/macros/latex-dev/base/ltnews13.pdf
index 9a6656aa30..24e3509509 100644
--- a/macros/latex-dev/base/ltnews13.pdf
+++ b/macros/latex-dev/base/ltnews13.pdf
Binary files differ
diff --git a/macros/latex-dev/base/ltnews14.pdf b/macros/latex-dev/base/ltnews14.pdf
index 0d3906f63d..9e714d1446 100644
--- a/macros/latex-dev/base/ltnews14.pdf
+++ b/macros/latex-dev/base/ltnews14.pdf
Binary files differ
diff --git a/macros/latex-dev/base/ltnews15.pdf b/macros/latex-dev/base/ltnews15.pdf
index c94d07f167..bb345d0b9a 100644
--- a/macros/latex-dev/base/ltnews15.pdf
+++ b/macros/latex-dev/base/ltnews15.pdf
Binary files differ
diff --git a/macros/latex-dev/base/ltnews16.pdf b/macros/latex-dev/base/ltnews16.pdf
index afaa2d49d3..1f05a76075 100644
--- a/macros/latex-dev/base/ltnews16.pdf
+++ b/macros/latex-dev/base/ltnews16.pdf
Binary files differ
diff --git a/macros/latex-dev/base/ltnews17.pdf b/macros/latex-dev/base/ltnews17.pdf
index 0e5e08732e..8bfb542a8a 100644
--- a/macros/latex-dev/base/ltnews17.pdf
+++ b/macros/latex-dev/base/ltnews17.pdf
Binary files differ
diff --git a/macros/latex-dev/base/ltnews18.pdf b/macros/latex-dev/base/ltnews18.pdf
index d81914117e..8e17971dc9 100644
--- a/macros/latex-dev/base/ltnews18.pdf
+++ b/macros/latex-dev/base/ltnews18.pdf
Binary files differ
diff --git a/macros/latex-dev/base/ltnews19.pdf b/macros/latex-dev/base/ltnews19.pdf
index 8a27941114..6b61682b7e 100644
--- a/macros/latex-dev/base/ltnews19.pdf
+++ b/macros/latex-dev/base/ltnews19.pdf
Binary files differ
diff --git a/macros/latex-dev/base/ltnews20.pdf b/macros/latex-dev/base/ltnews20.pdf
index 9c35861a8b..9655c58045 100644
--- a/macros/latex-dev/base/ltnews20.pdf
+++ b/macros/latex-dev/base/ltnews20.pdf
Binary files differ
diff --git a/macros/latex-dev/base/ltnews21.pdf b/macros/latex-dev/base/ltnews21.pdf
index a708475e95..97e68f9023 100644
--- a/macros/latex-dev/base/ltnews21.pdf
+++ b/macros/latex-dev/base/ltnews21.pdf
Binary files differ
diff --git a/macros/latex-dev/base/ltnews22.pdf b/macros/latex-dev/base/ltnews22.pdf
index 96dba3bd9e..280960478d 100644
--- a/macros/latex-dev/base/ltnews22.pdf
+++ b/macros/latex-dev/base/ltnews22.pdf
Binary files differ
diff --git a/macros/latex-dev/base/ltnews23.pdf b/macros/latex-dev/base/ltnews23.pdf
index 4b60f97a9c..6d28bb490e 100644
--- a/macros/latex-dev/base/ltnews23.pdf
+++ b/macros/latex-dev/base/ltnews23.pdf
Binary files differ
diff --git a/macros/latex-dev/base/ltnews24.pdf b/macros/latex-dev/base/ltnews24.pdf
index c9f4d83b64..19ab77e716 100644
--- a/macros/latex-dev/base/ltnews24.pdf
+++ b/macros/latex-dev/base/ltnews24.pdf
Binary files differ
diff --git a/macros/latex-dev/base/ltnews25.pdf b/macros/latex-dev/base/ltnews25.pdf
index 2cd7928a24..f4d721b98d 100644
--- a/macros/latex-dev/base/ltnews25.pdf
+++ b/macros/latex-dev/base/ltnews25.pdf
Binary files differ
diff --git a/macros/latex-dev/base/ltnews26.pdf b/macros/latex-dev/base/ltnews26.pdf
index d41d1e92a2..0e2c54327b 100644
--- a/macros/latex-dev/base/ltnews26.pdf
+++ b/macros/latex-dev/base/ltnews26.pdf
Binary files differ
diff --git a/macros/latex-dev/base/ltnews27.pdf b/macros/latex-dev/base/ltnews27.pdf
index d9fdef0d3c..6aabf9663e 100644
--- a/macros/latex-dev/base/ltnews27.pdf
+++ b/macros/latex-dev/base/ltnews27.pdf
Binary files differ
diff --git a/macros/latex-dev/base/ltnews28.pdf b/macros/latex-dev/base/ltnews28.pdf
index 3b61224d22..116a4e1a6b 100644
--- a/macros/latex-dev/base/ltnews28.pdf
+++ b/macros/latex-dev/base/ltnews28.pdf
Binary files differ
diff --git a/macros/latex-dev/base/ltnews29.pdf b/macros/latex-dev/base/ltnews29.pdf
index 973a052b7e..72a351406e 100644
--- a/macros/latex-dev/base/ltnews29.pdf
+++ b/macros/latex-dev/base/ltnews29.pdf
Binary files differ
diff --git a/macros/latex-dev/base/ltnews30.pdf b/macros/latex-dev/base/ltnews30.pdf
index 5d16b19cb0..6d6495a007 100644
--- a/macros/latex-dev/base/ltnews30.pdf
+++ b/macros/latex-dev/base/ltnews30.pdf
Binary files differ
diff --git a/macros/latex-dev/base/ltnews31.pdf b/macros/latex-dev/base/ltnews31.pdf
index f3219cff44..035d2259c1 100644
--- a/macros/latex-dev/base/ltnews31.pdf
+++ b/macros/latex-dev/base/ltnews31.pdf
Binary files differ
diff --git a/macros/latex-dev/base/ltnews32.pdf b/macros/latex-dev/base/ltnews32.pdf
index 5e3d9ff899..850d3dbf79 100644
--- a/macros/latex-dev/base/ltnews32.pdf
+++ b/macros/latex-dev/base/ltnews32.pdf
Binary files differ
diff --git a/macros/latex-dev/base/ltshipout-code.pdf b/macros/latex-dev/base/ltshipout-code.pdf
index 0456d62a50..13d7a72414 100644
--- a/macros/latex-dev/base/ltshipout-code.pdf
+++ b/macros/latex-dev/base/ltshipout-code.pdf
Binary files differ
diff --git a/macros/latex-dev/base/ltshipout-doc.pdf b/macros/latex-dev/base/ltshipout-doc.pdf
index da5dfd5080..9970447b2b 100644
--- a/macros/latex-dev/base/ltshipout-doc.pdf
+++ b/macros/latex-dev/base/ltshipout-doc.pdf
Binary files differ
diff --git a/macros/latex-dev/base/ltshipout.dtx b/macros/latex-dev/base/ltshipout.dtx
index 650c46866e..95d740279d 100644
--- a/macros/latex-dev/base/ltshipout.dtx
+++ b/macros/latex-dev/base/ltshipout.dtx
@@ -31,8 +31,8 @@
%%% From File: ltshipout.dtx
%
% \begin{macrocode}
-\providecommand\ltshipoutversion{v1.0a}
-\providecommand\ltshipoutdate{2020/08/31}
+\providecommand\ltshipoutversion{v1.0b}
+\providecommand\ltshipoutdate{2020/09/09}
% \end{macrocode}
%
%<*driver>
@@ -412,7 +412,7 @@
%
% \begin{function}{\AtBeginShipoutInit}
% By default \pkg{atbegshi} delayed its action until
-% \verb=\beg{document}=. This command was forcing it in an earlier
+% \verb=\begin{document}=. This command was forcing it in an earlier
% place. With the new concept it does nothing.
% \end{function}
%
@@ -1085,7 +1085,7 @@
% Put the argument into a \texttt{picture} environment that doesn't take up
% any size and uses \texttt{1pt} for \cs{unitlength}.
% \fmi{Could perhaps be generalized as it might be useful elsewhere. For
-% not it is not.}
+% now it is not.}
% \begin{macrocode}
\cs_new:Npn \@@_picture_overlay:n #1 {
% \end{macrocode}
@@ -1100,8 +1100,15 @@
\vbox_to_zero:n {
\kern -\c_@@_vorigin_tl \scan_stop:
\unitlength 1pt \scan_stop:
- \hbox_set_to_wd:Nnn \l_@@_tmp_box \c_zero_dim { \ignorespaces #1 }
-% \box_set_wd:Nn \l_@@_tmp_box \c_zero_dim
+% \end{macrocode}
+% This mimics a simple zero-sized picture environment. The \cs{hss}
+% is need in case there is horizontal material (without using
+% \cs{put} with a positive width.
+% \changes{v1.0b}{2020/09/09}
+% {Prevent overfull box warnings (gh/387)}
+% \begin{macrocode}
+ \hbox_set_to_wd:Nnn \l_@@_tmp_box \c_zero_dim
+ { \ignorespaces #1 \hss }
\box_set_ht:Nn \l_@@_tmp_box \c_zero_dim
\box_set_dp:Nn \l_@@_tmp_box \c_zero_dim
\box_use:N \l_@@_tmp_box
@@ -1567,7 +1574,7 @@
%
% \begin{macrocode}
%<*atbegshi-ltx>
-\ProvidesPackage{atbegshi}
+\ProvidesPackage{atbegshi-ltx}
[2020/08/17 v1.0a
Emulation of the original atbegshi package^^Jwith kernel methods]
% \end{macrocode}
@@ -1673,7 +1680,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesPackage{everyshi}
+\ProvidesPackage{everyshi-ltx}
[2020/08/17 v1.0a
Emulation of the original everyshi package^^Jwith kernel methods]
% \end{macrocode}
diff --git a/macros/latex-dev/base/ltvers.dtx b/macros/latex-dev/base/ltvers.dtx
index f02a9cdc47..83cdf1850d 100644
--- a/macros/latex-dev/base/ltvers.dtx
+++ b/macros/latex-dev/base/ltvers.dtx
@@ -115,7 +115,7 @@
{2020-10-01}
%</2ekernel|latexrelease>
%<*2ekernel>
-\def\patch@level{-8}
+\def\patch@level{-9}
% \end{macrocode}
%
% \begin{macro}{\development@branch@name}
diff --git a/macros/latex-dev/base/ltx3info.pdf b/macros/latex-dev/base/ltx3info.pdf
index 66f3630d67..420058561e 100644
--- a/macros/latex-dev/base/ltx3info.pdf
+++ b/macros/latex-dev/base/ltx3info.pdf
Binary files differ
diff --git a/macros/latex-dev/base/ltxdoc.pdf b/macros/latex-dev/base/ltxdoc.pdf
index a366dd9d9e..02b74f93ba 100644
--- a/macros/latex-dev/base/ltxdoc.pdf
+++ b/macros/latex-dev/base/ltxdoc.pdf
Binary files differ
diff --git a/macros/latex-dev/base/makeindx.pdf b/macros/latex-dev/base/makeindx.pdf
index c95d21b584..c1774541c1 100644
--- a/macros/latex-dev/base/makeindx.pdf
+++ b/macros/latex-dev/base/makeindx.pdf
Binary files differ
diff --git a/macros/latex-dev/base/manual.pdf b/macros/latex-dev/base/manual.pdf
index f18a49e872..cb07d3d20c 100644
--- a/macros/latex-dev/base/manual.pdf
+++ b/macros/latex-dev/base/manual.pdf
Binary files differ
diff --git a/macros/latex-dev/base/modguide.pdf b/macros/latex-dev/base/modguide.pdf
index f898b44b83..1c0a657082 100644
--- a/macros/latex-dev/base/modguide.pdf
+++ b/macros/latex-dev/base/modguide.pdf
Binary files differ
diff --git a/macros/latex-dev/base/nfssfont.pdf b/macros/latex-dev/base/nfssfont.pdf
index cb94d382b9..538cf60589 100644
--- a/macros/latex-dev/base/nfssfont.pdf
+++ b/macros/latex-dev/base/nfssfont.pdf
Binary files differ
diff --git a/macros/latex-dev/base/proc.pdf b/macros/latex-dev/base/proc.pdf
index a2cf1a4b2e..284b07fea0 100644
--- a/macros/latex-dev/base/proc.pdf
+++ b/macros/latex-dev/base/proc.pdf
Binary files differ
diff --git a/macros/latex-dev/base/slides.pdf b/macros/latex-dev/base/slides.pdf
index 43cd65b902..e7c9c947bf 100644
--- a/macros/latex-dev/base/slides.pdf
+++ b/macros/latex-dev/base/slides.pdf
Binary files differ
diff --git a/macros/latex-dev/base/slifonts.pdf b/macros/latex-dev/base/slifonts.pdf
index 5343749f64..ebd1eed1d3 100644
--- a/macros/latex-dev/base/slifonts.pdf
+++ b/macros/latex-dev/base/slifonts.pdf
Binary files differ
diff --git a/macros/latex-dev/base/source2e.pdf b/macros/latex-dev/base/source2e.pdf
index 671b4cf280..f563c90f69 100644
--- a/macros/latex-dev/base/source2e.pdf
+++ b/macros/latex-dev/base/source2e.pdf
Binary files differ
diff --git a/macros/latex-dev/base/syntonly.pdf b/macros/latex-dev/base/syntonly.pdf
index 7b13311d3e..badd366452 100644
--- a/macros/latex-dev/base/syntonly.pdf
+++ b/macros/latex-dev/base/syntonly.pdf
Binary files differ
diff --git a/macros/latex-dev/base/tlc2.pdf b/macros/latex-dev/base/tlc2.pdf
index e8d6d2374a..e879e9e7ed 100644
--- a/macros/latex-dev/base/tlc2.pdf
+++ b/macros/latex-dev/base/tlc2.pdf
Binary files differ
diff --git a/macros/latex-dev/base/tulm.pdf b/macros/latex-dev/base/tulm.pdf
index f1d66d765c..93e4fd65c6 100644
--- a/macros/latex-dev/base/tulm.pdf
+++ b/macros/latex-dev/base/tulm.pdf
Binary files differ
diff --git a/macros/latex-dev/base/usrguide.pdf b/macros/latex-dev/base/usrguide.pdf
index 6d5beb8320..2dd6844667 100644
--- a/macros/latex-dev/base/usrguide.pdf
+++ b/macros/latex-dev/base/usrguide.pdf
Binary files differ
diff --git a/macros/latex-dev/base/utf8ienc.pdf b/macros/latex-dev/base/utf8ienc.pdf
index 8e2035df46..cbd563ad22 100644
--- a/macros/latex-dev/base/utf8ienc.pdf
+++ b/macros/latex-dev/base/utf8ienc.pdf
Binary files differ
diff --git a/macros/latex-dev/base/webcomp.pdf b/macros/latex-dev/base/webcomp.pdf
index 6025350189..0687dc796e 100644
--- a/macros/latex-dev/base/webcomp.pdf
+++ b/macros/latex-dev/base/webcomp.pdf
Binary files differ
diff --git a/macros/latex/contrib/caption/README b/macros/latex/contrib/caption/README
index ca3df1b169..c89bc341d7 100644
--- a/macros/latex/contrib/caption/README
+++ b/macros/latex/contrib/caption/README
@@ -1,7 +1,7 @@
==========================================================================
The `caption' package bundle
-Release 2020-09-02
+Release 2020-09-11
Copyright (C) 1994-2020 Axel Sommerfeldt (axel.sommerfeldt@f-m.fm)
License: LPPL = LaTeX Project Public Licence
diff --git a/macros/latex/contrib/caption/caption3.dtx b/macros/latex/contrib/caption/caption3.dtx
index 5f2823ac0b..956cc40eb8 100644
--- a/macros/latex/contrib/caption/caption3.dtx
+++ b/macros/latex/contrib/caption/caption3.dtx
@@ -32,7 +32,7 @@
% caption-deu.tex, caption-eng.tex, caption-rus.tex.
%
% \fi
-% \CheckSum{3636}
+% \CheckSum{3646}
%
% \iffalse
%<*driver>
@@ -192,7 +192,7 @@
%
% \begin{macrocode}
\NeedsTeXFormat{LaTeX2e}[1994/12/01]
-\ProvidesPackage{caption3}[2020/08/30 v2.0 caption3 kernel (AR)]
+\ProvidesPackage{caption3}[2020/09/11 v2.0b caption3 kernel (AR)]
% \end{macrocode}
%
% \section{Generic helpers}
@@ -3078,13 +3078,12 @@
% \changes{v1.1}{2006/05/14}{\package{frenchb} babel support added}
% \changes{v2.0}{2020/08/01}{\package{french} babel support updated}
%
-% We provide a dummy `french' caption label separator (so |labelsep=french| works fine);
-% it will be re-defined dependant on the `french' package used later on.
+% We provide a `french' caption label separator.
+% |\caption@french@label|\-|separator| will be defined later on,
+% dependent on the `french' package used later on.
+%
% \begin{macrocode}
-\caption@ifdecl{labelseparator}{french}
- {\let\caption@french@labelseparator\@undefined}%
- {\caption@@set{labelseparator}{labelseparator@french}{default}%
- \let\caption@french@labelseparator\caption@labelseparator@french}
+\DeclareCaptionLabelSeparator{french}{\caption@french@labelseparator}
% \end{macrocode}
%
% \begin{macro}{\caption@IfBabelFrench}
@@ -3103,26 +3102,46 @@
\caption@IfBabelFrench{%
% \end{macrocode}
%
-% If the language `french' is selected, we switch the default label separator to `french'
-% which uses |\if|\-|FB|\-|Customise|\-|Fig|\-|Tab|\-|Captions| and |\Caption|\-|Separator|.
+% The \package{babel-french} package uses |\Caption|\-|Separator| as label separator.
%
% \begin{macrocode}
- \ifx\caption@french@labelseparator\caption@labelseparator@french % still set to dummy label separator?
- \DeclareCaptionLabelSeparator{french}{%
- \ifFBCustomiseFigTabCaptions
- \CaptionSeparator
- \else
- \space : %
- \fi}%
- \fi
- \caption@ifdefined\extrasfrench{%
- \addto\extrasfrench{%
- \caption@switchdefault{labelseparator}{\babel@save #1}{french}}}{}%
+ \providecommand\caption@french@labelseparator{\CaptionSeparator}%
% \end{macrocode}
%
-% Suppress the warning about load order (since it's not longer valid anymore).
+% Add a space before the label separator `colon' in French
+% in order to avoid problems when |Auto|\-|Space|\-|Punctuation| is set to |false|.
+%
% \begin{macrocode}
- \caption@AtBeginDocument{\@nameuse{@FBwarning@capsepfalse}}%
+ \DeclareCaptionLabelSeparator{colon}{\autospace@beforeFDP : }%
+% \end{macrocode}
+%
+% We switch the default label separator to `french', dependant on the switches
+% |Customise|\-|Fig|\-|Tab|\-|Captions| and |Old|\-|Fig|\-|Tab|\-|Captions|.
+%
+% \begin{macrocode}
+ \ifFBOldFigTabCaptions
+ \typeout{OldFigTabCaptions=true}% %%%%%%%%%%% <= needs to be removed
+ \caption@ifdefined\extrasfrench{%
+ \addto\extrasfrench{%
+ \caption@switchdefault{labelseparator}{\babel@save #1}{french}}}{}%
+ \caption@ifdefined\extrasacadian{%
+ \addto\extrasacadian{%
+ \caption@switchdefault{labelseparator}{\babel@save #1}{french}}}{}%
+ \else
+ \typeout{OldFigTabCaptions=false}% %%%%%%%%%%% <= needs to be removed
+ \ifFBCustomiseFigTabCaptions
+ \typeout{CustomiseFigTabCaptions=true}% %%%%%%%%%%% <= needs to be removed
+ \caption@AtBeginDocument{%
+ \ifFB@mainlanguage@FR
+ \typeout{mainlanguage=FR}%
+ \SetCaptionDefault{labelseparator}{french}%
+ \else
+ \typeout{mainlanguage=other}% %%%%%%%%%%% <= needs to be removed
+ \fi}%
+ \else
+ \typeout{CustomiseFigTabCaptions=false}% %%%%%%%%%%% <= needs to be removed
+ \fi
+ \fi
% \end{macrocode}
%
% \begin{macrocode}
@@ -3149,13 +3168,16 @@
\caption@IfFrenchLe{%
% \end{macrocode}
%
-% If the language `french' is selected, we switch the default label separator to `french'
-% which uses |\caption|\-|separator|, and switch the default font to `it' and the default label font to `up'.
+% The \package{frenchle} package uses |\caption|\-|separator| plus |\space| as label separator.
+%
+% \begin{macrocode}
+ \providecommand\caption@french@labelseparator{\captionseparator\space}%
+% \end{macrocode}
+%
+% If the language `french' is selected, we switch the default label separator to `french',
+% and switch the default font to `it' and the default label font to `up'.
%
% \begin{macrocode}
- \ifx\caption@french@labelseparator\caption@labelseparator@french % still set to dummy label separator?
- \DeclareCaptionLabelSeparator{french}{\captionseparator\space}%
- \fi
\g@addto@macro\extrasfrench{%
\caption@switchdefault{labelseparator}{\let\caption@original@labelseparator#1}{french}%
\caption@switchdefault{font}{\let\caption@original@font#1}{it}%
@@ -3578,6 +3600,7 @@
% \subsection{The subfig package}
% \changes{v1.1}{2007/07/07}{Adaptions to the \package{subfig} package added}
% \changes{v1.4a}{2011/11/01}{Test for the \package{subfig} package revised}
+% \changes{v2.0a}{2020/09/07}{Re-definition of \cs{sf@ifpositiontop} added}
%
% Since the \package{subfig} package is not maintained anymore,
% we have to make adaptions to \thispackage~\version{1.1} here.
@@ -3595,6 +3618,7 @@
\let\caption@setfloattype\@gobble
\let\@dottedxxxline\sf@NEW@dottedxxxline
\let\sf@subfloat\sf@NEW@subfloat
+ \let\sf@ifpositiontop\caption@iftop
% \end{macrocode}
% \begin{macrocode}
\fi
diff --git a/macros/latex/contrib/l3backend/CHANGELOG.md b/macros/latex/contrib/l3backend/CHANGELOG.md
index 5937d8be02..959212901a 100644
--- a/macros/latex/contrib/l3backend/CHANGELOG.md
+++ b/macros/latex/contrib/l3backend/CHANGELOG.md
@@ -6,6 +6,16 @@ this project uses date-based 'snapshot' version identifiers.
## [Unreleased]
+## [2020-09-11]
+
+### Added
+- Support for CIELAB separations with `dvips`
+
+### Fixed
+- Some PDF object functions
+- Separation color selection for `dvipdfmx`/XeTeX
+- Logic for some aspects of CIELAB Separation color
+
## [2020-09-01]
### Changed
@@ -110,7 +120,8 @@ this project uses date-based 'snapshot' version identifiers.
- Include `l3backend` in file names
- Moved backend code to internal for each 'parent' module
-[Unreleased]: https://github.com/latex3/latex3/compare/2020-09-01...HEAD
+[Unreleased]: https://github.com/latex3/latex3/compare/2020-09-11...HEAD
+[2020-09-11]: https://github.com/latex3/latex3/compare/2020-09-01...2020-09-11
[2020-09-01]: https://github.com/latex3/latex3/compare/2020-08-07...2020-09-01
[2020-08-07]: https://github.com/latex3/latex3/compare/2020-06-29...2020-08-07
[2020-06-29]: https://github.com/latex3/latex3/compare/2020-06-23...2020-06-29
diff --git a/macros/latex/contrib/l3backend/README.md b/macros/latex/contrib/l3backend/README.md
index 86d0912e2c..20a0301cf2 100644
--- a/macros/latex/contrib/l3backend/README.md
+++ b/macros/latex/contrib/l3backend/README.md
@@ -1,7 +1,7 @@
LaTeX3 Backend Drivers
======================
-Release 2020-09-01
+Release 2020-09-11
This package forms parts of `expl3`, and contains the code used to interface
with backends (drivers) across the `expl3` codebase. The functions here are
diff --git a/macros/latex/contrib/l3backend/l3backend-basics.dtx b/macros/latex/contrib/l3backend/l3backend-basics.dtx
index a90cd6bb05..abd972dca0 100644
--- a/macros/latex/contrib/l3backend/l3backend-basics.dtx
+++ b/macros/latex/contrib/l3backend/l3backend-basics.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2020-09-01}
+% \date{Released 2020-09-11}
%
% \maketitle
%
@@ -70,27 +70,27 @@
% \begin{macrocode}
\ProvidesExplFile
%<*dvipdfmx>
- {l3backend-dvipdfmx.def}{2020-09-01}{}
+ {l3backend-dvipdfmx.def}{2020-09-11}{}
{L3 backend support: dvipdfmx}
%</dvipdfmx>
%<*dvips>
- {l3backend-dvips.def}{2020-09-01}{}
+ {l3backend-dvips.def}{2020-09-11}{}
{L3 backend support: dvips}
%</dvips>
%<*dvisvgm>
- {l3backend-dvisvgm.def}{2020-09-01}{}
+ {l3backend-dvisvgm.def}{2020-09-11}{}
{L3 backend support: dvisvgm}
%</dvisvgm>
%<*luatex>
- {l3backend-luatex.def}{2020-09-01}{}
+ {l3backend-luatex.def}{2020-09-11}{}
{L3 backend support: PDF output (LuaTeX)}
%</luatex>
%<*pdftex>
- {l3backend-pdftex.def}{2020-09-01}{}
+ {l3backend-pdftex.def}{2020-09-11}{}
{L3 backend support: PDF output (pdfTeX)}
%</pdftex>
%<*xetex>
- {l3backend-xetex.def}{2020-09-01}{}
+ {l3backend-xetex.def}{2020-09-11}{}
{L3 backend support: XeTeX}
%</xetex>
% \end{macrocode}
@@ -367,7 +367,9 @@
% \end{macro}
%
% \begin{macro}{\__kernel_backend_scope_begin:, \__kernel_backend_scope_end:}
-% Scoping is done using the backend-specific specials.
+% Scoping is done using the backend-specific specials. We use the versions
+% originally from \texttt{xdvidfpmx} (\texttt{x:}) as these are well-tested
+% \enquote{in the wild}.
% \begin{macrocode}
\cs_new_protected:Npn \__kernel_backend_scope_begin:
{ \__kernel_backend_literal:n { x:gsave } }
diff --git a/macros/latex/contrib/l3backend/l3backend-box.dtx b/macros/latex/contrib/l3backend/l3backend-box.dtx
index 78cf2d9ebb..039fa38c85 100644
--- a/macros/latex/contrib/l3backend/l3backend-box.dtx
+++ b/macros/latex/contrib/l3backend/l3backend-box.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2020-09-01}
+% \date{Released 2020-09-11}
%
% \maketitle
%
@@ -250,7 +250,7 @@
%</luatex|pdftex>
% \end{macrocode}
%
-% \subsection{\texttt{dvipdfmx} backend}
+% \subsection{\texttt{dvipdfmx}/\XeTeX{} backend}
%
% \begin{macrocode}
%<*dvipdfmx|xetex>
@@ -280,7 +280,7 @@
%
% \begin{macro}{\@@_backend_rotate:Nn}
% \begin{macro}{\@@_backend_rotate_aux:Nn}
-% Rotating in \texttt{(x)}dvipdmfx can be implemented using either PDF or
+% Rotating in \texttt{dvipdmfx}/\XeTeX{} can be implemented using either PDF or
% backend-specific code. The former approach however is not \enquote{aware}
% of the content of boxes: this means that any embedded links would not be
% adjusted by the rotation. As such, the backend-native approach is preferred:
diff --git a/macros/latex/contrib/l3backend/l3backend-color.dtx b/macros/latex/contrib/l3backend/l3backend-color.dtx
index 165313c04b..a9a86daebb 100644
--- a/macros/latex/contrib/l3backend/l3backend-color.dtx
+++ b/macros/latex/contrib/l3backend/l3backend-color.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2020-09-01}
+% \date{Released 2020-09-11}
%
% \maketitle
%
@@ -311,57 +311,223 @@
% \begin{macro}{\@@_backend_select_separation:nn}
% \begin{macrocode}
\cs_new_protected:Npn \@@_backend_select_separation:nn #1#2
- { \@@_backend_select:n { setspotcolor ~ #1 ~ #2 } }
+ { \@@_backend_select:n { separation ~ #1 ~ #2 } }
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{\@@_backend_separation_init:nnnnn}
-% \begin{macro}{\@@_backend_separation_init:nnn}
-% \begin{macro}[EXP]{\@@_backend_separation_init:n}
+% \begin{macro}
+% {
+% \@@_backend_separation_init:nnnnn,
+% \@@_backend_separation_init:nxxnn,
+% \@@_backend_separation_init_aux:nnnnn
+% }
+% \begin{macro}[EXP]
+% {
+% \@@_backend_separation_init_/DeviceCMYK:nnn ,
+% \@@_backend_separation_init_/DeviceGray:nnn ,
+% \@@_backend_separation_init_/DeviceRGB:nnn
+% }
+% \begin{macro}[EXP]{\@@_backend_separation_init_Device:Nn}
+% \begin{macro}[EXP]{\@@_backend_separation_init:nnn}
+% \begin{macro}[EXP]{\@@_backend_separation_init_count:n}
+% \begin{macro}[EXP]{\@@_backend_separation_init_count:w}
+% \begin{macro}[EXP]{\@@_backend_separation_init:nnnn}
% \begin{macro}[EXP]{\@@_backend_separation_init:w}
-% \begin{macro}{\@@_backend_separation_init_cielab:nnnnn}
-% \begin{macro}{\@@_backend_separation_init_cielab:n}
+% \begin{macro}[EXP]{\@@_backend_separation_init:n}
+% \begin{macro}[EXP]{\@@_backend_separation_init:nw}
+% \begin{macro}{\@@_backend_separation_init_CIELAB:nnn}
% Initialising here means creating a small header set up plus massaging
% some data. This comes about as we have to deal with PDF-focussed data,
% which makes most sense \enquote{higher-up}. The approach is based on
-% ideas from \url{https://tex.stackexchange.com/q/560093}.
+% ideas from \url{https://tex.stackexchange.com/q/560093} plus using
+% the PostScript manual for other aspects.
% \begin{macrocode}
\cs_new_protected:Npx \@@_backend_separation_init:nnnnn #1#2#3#4#5
{
\bool_if:NT \g__kernel_backend_header_bool
{
\cs_if_exist:NTF \AtBeginDvi
- { \AtBeginDvi }
+ { \exp_not:N \AtBeginDvi }
{ \use:n }
{
- \exp_not:N \@@_backend_separation_init:nnn
- {#1} {#2} {#5}
+ \exp_not:N \@@_backend_separation_init_aux:nnnnn
+ {#1} {#2} {#3} {#4} {#5}
}
}
}
-\cs_new_protected:Npn \@@_backend_separation_init:nnn #1#2#3
+\cs_generate_variant:Nn \@@_backend_separation_init:nnnnn { nxx }
+\cs_new_protected:Npn \@@_backend_separation_init_aux:nnnnn #1#2#3#4#5
{
\__kernel_backend_literal:e
{
!
TeXDict ~ begin ~
- /color \int_use:N \g_@@_separation_int \c_space_tl
- [#3] ~ aload ~ pop ~ ( \str_convert_pdfname:n {#1} ) ~
- find \@@_backend_separation_init:n {#2} customcolor ~ def ~
+ /color \int_use:N \g_@@_separation_int
+ {
+ [ ~
+ /Separation ~ ( \str_convert_pdfname:n {#1} ) ~
+ [ ~ #2 ~ ] ~
+ {
+ \cs_if_exist_use:cF { @@_backend_separation_init_ #2 :nnn }
+ { \@@_backend_separation_init:nnn }
+ {#3} {#4} {#5}
+ }
+ ] ~ setcolorspace
+ } ~ def ~
end
}
}
+\cs_new:cpn { @@_backend_separation_init_ /DeviceCMYK :nnn } #1#2#3
+ { \@@_backend_separation_init_Device:Nn 4 {#3} }
+\cs_new:cpn { @@_backend_separation_init_ /DeviceGray :nnn } #1#2#3
+ { \@@_backend_separation_init_Device:Nn 1 {#3} }
+\cs_new:cpn { @@_backend_separation_init_ /DeviceRGB :nnn } #1#2#3
+ { \@@_backend_separation_init_Device:Nn 2 {#3} }
+\cs_new:Npn \@@_backend_separation_init_Device:Nn #1#2
+ {
+ #2 ~
+ \prg_replicate:nn {#1}
+ { #1 ~ index ~ mul ~ #1 ~ 1 ~ roll ~ }
+ \int_eval:n { #1 + 1 } ~ -1 ~ roll ~ pop
+ }
+% \end{macrocode}
+% For the generic case, we cannot use |/FunctionType 2| unfortunately, so
+% we have to code that idea up in PostScript. Here, we will therefore assume
+% that a range is \emph{always} given. First, we count values in each argument:
+% at the backend level, we can assume there are always well-behaved with
+% spaces present.
+% \begin{macrocode}
+\cs_new:Npn \@@_backend_separation_init:nnn #1#2#3
+ {
+ \exp_args:Ne \@@_backend_separation_init:nnnn
+ { \@@_backend_separation_init_count:n {#2} }
+ {#1} {#2} {#3}
+ }
+\cs_new:Npn \@@_backend_separation_init_count:n #1
+ { \int_eval:n { 0 \@@_backend_separation_init_count:w #1 ~ \s_@@_stop } }
+\cs_new:Npn \@@_backend_separation_init_count:w #1 ~ #2 \s_@@_stop
+ {
+ +1
+ \tl_if_blank:nF {#2}
+ { \@@_backend_separation_init_count:w #2 \s_@@_stop }
+ }
+% \end{macrocode}
+% Now we implement the algorithm. In the terms in the PostScript manual,
+% we have $\mathbf{N} = 1$ and $\mathbf{Domain} = [0~1]$, with
+% $\mathbf{Range}$ as |#2|, $\mathbf{C0}$ as |#3| and $\mathbf{C1}$
+% as |#4|, with the number of output components in |#1|. So all we have
+% to do is implement $y_{i} = \mathbf{C0}_{i} + x(\mathbf{C1}_{i} -
+% \mathbf{C0}_{i})$ with lots of stack manipulation, then check the
+% ranges. That's done by adding everything to the stack first, then using
+% the fact we know all of the offsets. As manipulating the stack is tricky,
+% we start by re-formatting the $\mathbf{C0}$ and $\mathbf{C1}$ arrays to
+% be interleaved, and add a \texttt{0} to each pair: this is used
+% to keep the stack of constant length while we are doing the first pass of
+% mathematics. We then working through that list, calculating from the
+% last to the first value before tidying up by removing all of the input
+% values. We do that by first copying all of the final $y$ values to the
+% end of the stack, then rolling everything so we can pop the now-unneeded
+% material.
+% \begin{macrocode}
+\cs_new:Npn \@@_backend_separation_init:nnnn #1#2#3#4
+ {
+ \@@_backend_separation_init:w #3 ~ \s_@@_stop #4 ~ \s_@@_stop
+ \prg_replicate:nn {#1}
+ {
+ pop ~ 1 ~ index ~ neg ~ 1 ~ index ~ add ~
+ \int_eval:n { 3 * #1 } ~ index ~ mul ~
+ 2 ~ index ~ add ~
+ \int_eval:n { 3 * #1 } ~ #1 ~ roll ~
+ }
+ \int_step_function:nnnN {#1} { -1 } { 1 }
+ \@@_backend_separation_init:n
+ \int_eval:n { 4 * #1 + 1 } ~ #1 ~ roll ~
+ \prg_replicate:nn { 3 * #1 + 1 } { pop ~ }
+ \tl_if_blank:nF {#2}
+ { \@@_backend_separation_init:nw {#1} #2 ~ \s_@@_stop }
+ }
+\cs_new:Npn \@@_backend_separation_init:w
+ #1 ~ #2 \s_@@_stop #3 ~ #4 \s_@@_stop
+ {
+ #1 ~ #3 ~ 0 ~
+ \tl_if_blank:nF {#2}
+ { \@@_backend_separation_init:w #2 \s_@@_stop #4 \s_@@_stop }
+ }
\cs_new:Npn \@@_backend_separation_init:n #1
+ { \int_eval:n { #1 * 2 } ~ index ~ }
+% \end{macrocode}
+% Finally, we deal with the range limit if required. This is handled
+% by splitting the range into pairs. It's then just a question of doing
+% the comparisons, this time dropping everything except the desired
+% result.
+% \begin{macrocode}
+\cs_new:Npn \@@_backend_separation_init:nw #1#2 ~ #3 ~ #4 \s_@@_stop
{
- \@@_backend_separation_init:w #1 /Device #1 /Device \s_@@_stop
+ #2 ~ #3 ~
+ 2 ~ index ~ 2 ~ index ~ lt ~
+ { ~ pop ~ exch ~ pop ~ } ~
+ { ~
+ 2 ~ index ~ 1 ~ index ~ gt ~
+ { ~ exch ~ pop ~ exch ~ pop ~ } ~
+ { ~ pop ~ pop ~ } ~
+ ifelse ~
+ }
+ ifelse ~
+ #1 ~ 1 ~ roll ~
+ \tl_if_blank:nF {#4}
+ { \@@_backend_separation_init:nw {#1} #4 \s_@@_stop }
}
-\cs_new:Npn \@@_backend_separation_init:w #1 /Device #2 /Device #3 \s_@@_stop
- { \str_lowercase:n {#2} }
% \end{macrocode}
-% Currently no CIELAB support.
+% CIELAB support uses the detail from the PostScript reference, page 227;
+% other than that block of PostScript, this is the same as for PDF-based
+% routes.
% \begin{macrocode}
-\cs_new_protected:Npn \@@_backend_separation_init_cielab:nnnnn #1#2#3#4#5 { }
-\cs_new_protected:Npn \@@_backend_separation_init_cielab:n #1 { }
+\cs_new_protected:Npn \@@_backend_separation_init_CIELAB:nnn #1#2#3
+ {
+ \@@_backend_separation_init:nxxnn
+ {#2}
+ {
+ /CIEBasedABC ~
+ << ~
+ /RangeABC ~ [ ~ \c_@@_model_range_CIELAB_tl \c_space_tl ] ~
+ /DecodeABC ~
+ [ ~
+ { ~ 16 ~ add ~ 116 ~ div ~ } ~ bind ~
+ { ~ 500 ~ div ~ } ~ bind ~
+ { ~ 200 ~ div ~ } ~ bind ~
+ ] ~
+ /MatrixABC ~ [ ~ 1 ~ 1 ~ 1 ~ 1 ~ 0 ~ 0 ~ 0 ~ 0 ~ -1 ~ ] ~
+ /DecodeLMN ~
+ [ ~
+ { ~
+ dup ~ 6 ~ 29 ~ div ~ ge ~
+ { ~ dup ~ dup ~ mul ~ mul ~ ~ } ~
+ { ~ 4 ~ 29 ~ div ~ sub ~ 108 ~ 841 ~ div ~ mul ~ } ~
+ ifelse ~
+ 0.9505 ~ mul ~
+ } ~ bind ~
+ { ~
+ dup ~ 6 ~ 29 ~ div ~ ge ~
+ { ~ dup ~ dup ~ mul ~ mul ~ } ~
+ { ~ 4 ~ 29 ~ div ~ sub ~ 108 ~ 841 ~ div ~ mul ~ } ~
+ ifelse ~
+ } ~ bind ~
+ { ~
+ dup ~ 6 ~ 29 ~ div ~ ge ~
+ { ~ dup ~ dup ~ mul ~ mul ~ } ~
+ { ~ 4 ~ 29 ~ div ~ sub ~ 108 ~ 841 ~ div ~ mul ~ } ~
+ ifelse ~
+ 1.0890 ~ mul ~
+ } ~ bind
+ ] ~
+ /WhitePoint ~
+ [ ~ \tl_use:c { c_@@_model_whitepoint_CIELAB_ #1 _tl } ~ ] ~
+ >>
+ }
+ { \c_@@_model_range_CIELAB_tl }
+ { 100 ~ 0 ~ 0 }
+ {#3}
+ }
% \end{macrocode}
% \end{macro}
% \end{macro}
@@ -369,6 +535,11 @@
% \end{macro}
% \end{macro}
% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
%
% \begin{macrocode}
%</dvips>
@@ -386,16 +557,13 @@
% \end{macro}
%
% \begin{macro}
-% {\@@_backend_separation_init:nnnnn, \@@_backend_separation_init_cielab:nnnnn}
-% \begin{macro}{\@@_backend_separation_init_cielab:n}
+% {\@@_backend_separation_init:nnnnn, \@@_backend_separation_init_CIELAB:nnn}
% No support at present.
% \begin{macrocode}
\cs_new_protected:Npn \@@_backend_separation_init:nnnnn #1#2#3#4#5 { }
-\cs_new_protected:Npn \@@_backend_separation_init_cielab:nnnnn #1#2#3#4#5 { }
-\cs_new_protected:Npn \@@_backend_separation_init_cielab:n #1 { }
+\cs_new_protected:Npn \@@_backend_separation_init_CIELAB:nnnnnn #1#2#3 { }
% \end{macrocode}
% \end{macro}
-% \end{macro}
%
% \begin{macrocode}
%</dvisvgm>
@@ -406,6 +574,7 @@
% \end{macrocode}
%
% \begin{macro}{\@@_backend_select_separation:nn}
+% \begin{macro}{\@@_backend_select:n}
% Different syntaxes here as the stacks are accessed very differently.
% \begin{macrocode}
\cs_new_protected:Npn \@@_backend_select_separation:nn #1#2
@@ -415,32 +584,42 @@
%<*luatex|pdftex>
{ \@@_backend_select:n { /#1 ~ cs ~ /#1 ~ CS ~ #2 ~ scn ~ #2 ~ SCN } }
%</luatex|pdftex>
+%<*dvipdfmx|xetex>
+\cs_new_protected:Npn \@@_backend_select:n #1
+ {
+ \__kernel_backend_literal:n { pdf: bc ~ #1 }
+ \group_insert_after:N \@@_backend_reset:
+ }
+%</dvipdfmx|xetex>
% \end{macrocode}
% \end{macro}
+% \end{macro}
%
% \begin{macro}{\@@_backend_separation_init:nnnnn}
% \begin{macro}{\@@_backend_separation_init:n}
-% \begin{macro}{\@@_backend_separation_init_cielab:nnnnn}
-% \begin{macro}{\@@_backend_separation_init_cielab:n}
+% \begin{macro}{\@@_backend_separation_init_CIELAB:nnn}
% Initialising the PDF structures needs two parts: creating an object
% containing the \enquote{real} name of the Separation, then adding a reference
% to that to each page. The latter uses the internal name of the \texttt{cs}.
% For \texttt{dvipdfmx}/\XeTeX{}, the backend does most of the work so we need a
-% simplified version.
+% simplified version. We use a separate object for the tint transformation
+% following the model in the PDF reference.
% \begin{macrocode}
\cs_new_protected:Npn \@@_backend_separation_init:nnnnn #1#2#3#4#5
{
+ \pdf_object_now:nx { dict }
+ {
+ /FunctionType ~ 2
+ /Domain ~ [0 ~ 1]
+ \tl_if_blank:nF {#3} { /Range ~ [#3] }
+ /C0 ~ [#4] ~
+ /C1 ~ [#5] /N ~ 1
+ }
\@@_backend_separation_init:n
{
/Separation
/ \str_convert_pdfname:n {#1} ~ #2 ~
- <<
- /FunctionType ~ 2
- /Domain ~ [0 ~ 1]
- \tl_if_blank:nF {#3} { /Range ~ [#3] }
- /C0 ~ [#4] ~
- /C1 ~ [#5] /N ~ 1
- >>
+ \pdf_object_last:
}
%<*luatex|pdftex>
\use:x
@@ -459,7 +638,7 @@
%<*dvipdfmx|xetex>
\__kernel_backend_literal:x
{
- pdf:obj ~ @ color \int_use:N \g_@@_separation_int \c_space_tl
+ pdf:obj ~ @color \int_use:N \g_@@_separation_int \c_space_tl
[#1]
}
%</dvipdfmx|xetex>
@@ -471,37 +650,37 @@
% For CIELAB colors, we need one object per document for the illuminant,
% plus initialisation of the color space referencing that object.
% \begin{macrocode}
-\cs_new_protected:Npn \@@_backend_separation_init_cielab:nnnnn #1#2#3#4#5
+\cs_new_protected:Npn \@@_backend_separation_init_CIELAB:nnn #1#2#3
{
+ \pdf_object_if_exist:nF { @@_illuminant_CIELAB_ #1 }
+ {
+ \pdf_object_new:nn { @@_illuminant_CIELAB_ #1 } { array }
+ \pdf_object_write:nx { @@_illuminant_CIELAB_ #1 }
+ {
+ /Lab ~
+ <<
+ /WhitePoint ~
+ [ \tl_use:c { c_@@_model_whitepoint_CIELAB_ #1 _tl } ]
+ /Range ~ [ \c_@@_model_range_CIELAB_tl ]
+ >>
+ }
+ }
\@@_backend_separation_init:nnnnn
{#2}
- { \pdf_object_ref:n { @@_illuminant_cielab_ #1 } }
- { \c_@@_model_range_lab_tl }
+ { \pdf_object_ref:n { @@_illuminant_CIELAB_ #1 } }
+ { \c_@@_model_range_CIELAB_tl }
{ 100 ~ 0 ~ 0 }
- { #3 ~ #4 ~ #5 }
+ {#3}
}
\cs_if_exist:NF \pdf_object_now:nn
- { \cs_gset_protected:Npn \@@_backend_separation_init_cielab:nnnnn #1#2#3#4#5 { } }
-\cs_new_protected:Npn \@@_backend_separation_init_cielab:n #1
{
- \pdf_object_new:nn { @@_illuminant_cielab_ #1 } { array }
- \pdf_object_write:nx { @@_illuminant_cielab_ #1 }
- {
- /Lab ~
- <<
- /WhitePoint ~
- [ \tl_use:c { c_@@_model_whitepoint_cielab_ #1 _tl } ]
- /Range ~ [ \c_@@_model_range_lab_tl ]
- >>
- }
+ \cs_gset_protected:Npn \@@_backend_separation_init_CIELAB:nnn #1#2#3
+ { }
}
-\cs_if_exist:NF \pdf_object_new:nn
- { \cs_gset_protected:Npn \@@_backend_separation_init_cielab:n #1 { } }
% \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
-% \end{macro}
%
% \begin{macrocode}
%</dvipdfmx|luatex|pdftex|xetex>
diff --git a/macros/latex/contrib/l3backend/l3backend-draw.dtx b/macros/latex/contrib/l3backend/l3backend-draw.dtx
index 00e9144e4a..f28bfd13bf 100644
--- a/macros/latex/contrib/l3backend/l3backend-draw.dtx
+++ b/macros/latex/contrib/l3backend/l3backend-draw.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2020-09-01}
+% \date{Released 2020-09-11}
%
% \maketitle
%
@@ -581,7 +581,9 @@
% matrix into rotations and a scaling, then use those operations as they
% are handled by the backend. (There is backend support for matrix operations in
% \texttt{dvipdfmx}/\XeTeX{}, but as a matched pair so not suitable for the
-% \enquote{stand alone} transformation set up here.)
+% \enquote{stand alone} transformation set up here.) The specials used here
+% are from \texttt{xdvipdfmx} originally: they are well-tested, but probably
+% equivalent to the \texttt{pdf:} versions!
% \begin{macrocode}
\cs_new_protected:Npn \@@_backend_cm:nnnn #1#2#3#4
{
diff --git a/macros/latex/contrib/l3backend/l3backend-graphics.dtx b/macros/latex/contrib/l3backend/l3backend-graphics.dtx
index f4eeebbfcb..bac80fa884 100644
--- a/macros/latex/contrib/l3backend/l3backend-graphics.dtx
+++ b/macros/latex/contrib/l3backend/l3backend-graphics.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2020-09-01}
+% \date{Released 2020-09-11}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3backend/l3backend-header.dtx b/macros/latex/contrib/l3backend/l3backend-header.dtx
index c2d0f87452..73cf1bc5ad 100644
--- a/macros/latex/contrib/l3backend/l3backend-header.dtx
+++ b/macros/latex/contrib/l3backend/l3backend-header.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2020-09-01}
+% \date{Released 2020-09-11}
%
% \maketitle
%
@@ -67,12 +67,12 @@
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{TeXcolorsetspotcolor, setspotcolor}
+% \begin{macro}{TeXcolorseparation, separation}
% Support for separation/spot colors: this strange naming is so
% things work with the color stack.
% \begin{macrocode}
TeXDict begin
-/TeXcolorsetspotcolor { setcustomcolor } def
+/TeXcolorseparation { setcolor } def
end
% \end{macrocode}
% \end{macro}
diff --git a/macros/latex/contrib/l3backend/l3backend-pdf.dtx b/macros/latex/contrib/l3backend/l3backend-pdf.dtx
index f0f20e1b9a..0763c411eb 100644
--- a/macros/latex/contrib/l3backend/l3backend-pdf.dtx
+++ b/macros/latex/contrib/l3backend/l3backend-pdf.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2020-09-01}
+% \date{Released 2020-09-11}
%
% \maketitle
%
@@ -773,16 +773,18 @@
%
% \begin{macro}[EXP]{\@@_backend_annotation_last:}
% A tiny amount of extra data gets added here; we use \texttt{x}-type
-% expansion to get the space in the right place and form.
+% expansion to get the space in the right place and form. The \enquote{extra}
+% space in the \LuaTeX{} version is \emph{required} as it is consumed in
+% finding the end of the keyword.
% \begin{macrocode}
\cs_new:Npx \@@_backend_annotation_last:
{
\exp_not:N \int_value:w
%<*luatex>
- \exp_not:N \tex_pdffeedback:D lastannot
+ \exp_not:N \tex_pdffeedback:D lastannot ~
%</luatex>
%<*pdftex>
- \exp_not:N \tex_pdfannot:D
+ \exp_not:N \tex_pdflastannot:D
%</pdftex>
\c_space_tl 0 ~ R
}
@@ -831,7 +833,7 @@
{
\exp_not:N \int_value:w
%<*luatex>
- \exp_not:N \tex_pdffeedback:D lastlink
+ \exp_not:N \tex_pdffeedback:D lastlink ~
%</luatex>
%<*pdftex>
\exp_not:N \tex_pdflastlink:D
@@ -964,7 +966,7 @@
%<*pdftex>
{ \tex_pdflastobj:D }
%</pdftex>
- \prop_gput:Nnn \exp_not:N \g_@@_backend_object_prop {#1} {#2}
+ \prop_gput:Nnn \g_@@_backend_object_prop {#1} {#2}
}
\cs_new:Npn \@@_backend_object_ref:n #1
{ \int_use:c { c_@@_backend_object_ \tl_to_str:n {#1} _int } ~ 0 ~ R }
diff --git a/macros/latex/contrib/l3experimental/CHANGELOG.md b/macros/latex/contrib/l3experimental/CHANGELOG.md
index 4a8085effb..362059210b 100644
--- a/macros/latex/contrib/l3experimental/CHANGELOG.md
+++ b/macros/latex/contrib/l3experimental/CHANGELOG.md
@@ -7,6 +7,11 @@ this project uses date-based 'snapshot' version identifiers.
## [Unreleased]
+## [2020-09-11]
+
+### Fixed
+- Typos in CIELAB support
+
## [2020-09-01]
### Added
@@ -24,7 +29,8 @@ this project uses date-based 'snapshot' version identifiers.
### Changed
- Move drawing color functions to `l3color`, generalising the approach
- with better `dvips` support
+ with better `dvips` support (viz. `\draw_color:n` becomes `\color_select:n`,
+ `\draw_color_[fill|stroke]:n` become `\color_[fill|stroke]:n`)
## [2020-07-17]
@@ -168,7 +174,8 @@ this project uses date-based 'snapshot' version identifiers.
- New `l3color` module using `xcolor`-like expression syntax
- New `l3draw` module, based on `pgf` layer of the TikZ system
-[Unreleased]: https://github.com/latex3/latex3/compare/2020-09-01...HEAD
+[Unreleased]: https://github.com/latex3/latex3/compare/2020-09-11...HEAD
+[2020-09-11]: https://github.com/latex3/latex3/compare/2020-09-01...2020-09-11
[2020-09-01]: https://github.com/latex3/latex3/compare/2020-08-07...2020-09-01
[2020-08-07]: https://github.com/latex3/latex3/compare/2020-07-17...2020-08-07
[2020-07-17]: https://github.com/latex3/latex3/compare/2020-06-18...2020-07-17
diff --git a/macros/latex/contrib/l3experimental/README.md b/macros/latex/contrib/l3experimental/README.md
index a84954d21f..7f96887610 100644
--- a/macros/latex/contrib/l3experimental/README.md
+++ b/macros/latex/contrib/l3experimental/README.md
@@ -1,7 +1,7 @@
Experimental LaTeX3 Concepts
============================
-Release 2020-09-01
+Release 2020-09-11
Overview
--------
diff --git a/macros/latex/contrib/l3experimental/l3benchmark.dtx b/macros/latex/contrib/l3experimental/l3benchmark.dtx
index 80079c1c41..370723ec90 100644
--- a/macros/latex/contrib/l3experimental/l3benchmark.dtx
+++ b/macros/latex/contrib/l3experimental/l3benchmark.dtx
@@ -46,7 +46,7 @@
% }^^A
% }
%
-% \date{Released 2020-09-01}
+% \date{Released 2020-09-11}
%
% \maketitle
%
@@ -129,7 +129,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{l3benchmark}{2020-09-01}{}
+\ProvidesExplPackage{l3benchmark}{2020-09-11}{}
{L3 Experimental benchmarking}
% \end{macrocode}
%
diff --git a/macros/latex/contrib/l3experimental/l3benchmark.pdf b/macros/latex/contrib/l3experimental/l3benchmark.pdf
index f16030cee7..197eb04aa1 100644
--- a/macros/latex/contrib/l3experimental/l3benchmark.pdf
+++ b/macros/latex/contrib/l3experimental/l3benchmark.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3experimental/l3color.dtx b/macros/latex/contrib/l3experimental/l3color.dtx
index ec8266d06f..f644bf5fde 100644
--- a/macros/latex/contrib/l3experimental/l3color.dtx
+++ b/macros/latex/contrib/l3experimental/l3color.dtx
@@ -46,7 +46,7 @@
% }^^A
% }
%
-% \date{Released 2020-09-01}
+% \date{Released 2020-09-11}
%
% \maketitle
%
@@ -350,9 +350,10 @@
% example those involving separations (see
% \url{https://helpx.adobe.com/indesign/using/spot-process-colors.html}
% for details of the use of separations in print). Color models may be split
-% into families; in the case of the basic \texttt{cmyk}, \texttt{gray}
-% and \texttt{rgb} models, the family and the model itself are synonymous. This
-% is not generally the case: see the PDF reference for more details.
+% into families; for the standard device-based color models (\texttt{DeviceCMYK},
+% \texttt{DeviceRGB}, \texttt{DeviceGray}), these are synonymous. This
+% is not generally the case: see the PDF reference for more details. (Note that
+% \pkg{l3color} uses the shorter names \texttt{cmyk}, etc.)
%
% \begin{function}{\color_model_new:nnn}
% \begin{syntax}
@@ -375,7 +376,7 @@
% name of a spot color ink. Such a \meta{name} may contain spaces, etc.,
% which are not permitted in the \meta{model}.
% \item \texttt{alternative-model} An alternative device colorspace, one of
-% \texttt{cmyk}, \texttt{rgb}, \texttt{gray} or \texttt{cielab}. The three
+% \texttt{cmyk}, \texttt{rgb}, \texttt{gray} or \texttt{CIELAB}. The three
% parameter-based models work as described above; see below for
% details of CIELAB colors.
% \item \texttt{alternative-values} A comma-separated list of values
@@ -384,7 +385,7 @@
% \end{itemize}
%
% CIELAB color separations are created using the
-% \texttt{alternative-model = cielab} setting. These colors must also have an
+% \texttt{alternative-model = CIELAB} setting. These colors must also have an
% \texttt{illuminant} key, one of \texttt{a}, \texttt{c}, \texttt{e},
% \texttt{d50}, \texttt{d55}, \texttt{d65} or \texttt{d75}. The
% \texttt{alternative-values} in this case are the three parameters $L*$, $a*$
@@ -412,7 +413,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{l3color}{2020-09-01}{}
+\ProvidesExplPackage{l3color}{2020-09-11}{}
{L3 Experimental color support}
% \end{macrocode}
%
@@ -1525,47 +1526,34 @@
%
% \begin{variable}
% {
-% \c_@@_model_whitepoint_cielab_a_tl ,
-% \c_@@_model_whitepoint_cielab_b_tl ,
-% \c_@@_model_whitepoint_cielab_e_tl ,
-% \c_@@_model_whitepoint_cielab_d50_tl ,
-% \c_@@_model_whitepoint_cielab_d55_tl ,
-% \c_@@_model_whitepoint_cielab_d65_tl ,
-% \c_@@_model_whitepoint_cielab_d75_tl
+% \c_@@_model_whitepoint_CIELAB_a_tl ,
+% \c_@@_model_whitepoint_CIELAB_b_tl ,
+% \c_@@_model_whitepoint_CIELAB_e_tl ,
+% \c_@@_model_whitepoint_CIELAB_d50_tl ,
+% \c_@@_model_whitepoint_CIELAB_d55_tl ,
+% \c_@@_model_whitepoint_CIELAB_d65_tl ,
+% \c_@@_model_whitepoint_CIELAB_d75_tl
% }
% Whitepoint data for the CIELAB profiles.
% \begin{macrocode}
-\tl_const:Nn \c_@@_model_whitepoint_cielab_a_tl { 1.0985 ~ 1 ~ 0.3558 }
-\tl_const:Nn \c_@@_model_whitepoint_cielab_b_tl { 0.9807~ 1 ~ 1.1822 }
-\tl_const:Nn \c_@@_model_whitepoint_cielab_e_tl { 1 ~ 1 ~ 1 }
-\tl_const:cn { c_@@_model_whitepoint_cielab_d50_tl } { 0.9642 ~, 1 ~ 0.8251 }
-\tl_const:cn { c_@@_model_whitepoint_cielab_d55_tl } { 0.9568 ~ 1 ~ 0.9214 }
-\tl_const:cn { c_@@_model_whitepoint_cielab_d65_tl } { 0.9504 ~ 1 ~ 1.0888 }
-\tl_const:cn { c_@@_model_whitepoint_cielab_d75_tl } { 0.9497 ~ 1 ~ 1.2261 }
+\tl_const:Nn \c_@@_model_whitepoint_CIELAB_a_tl { 1.0985 ~ 1 ~ 0.3558 }
+\tl_const:Nn \c_@@_model_whitepoint_CIELAB_b_tl { 0.9807 ~ 1 ~ 1.1822 }
+\tl_const:Nn \c_@@_model_whitepoint_CIELAB_e_tl { 1 ~ 1 ~ 1 }
+\tl_const:cn { c_@@_model_whitepoint_CIELAB_d50_tl } { 0.9642 ~ 1 ~ 0.8251 }
+\tl_const:cn { c_@@_model_whitepoint_CIELAB_d55_tl } { 0.9568 ~ 1 ~ 0.9214 }
+\tl_const:cn { c_@@_model_whitepoint_CIELAB_d65_tl } { 0.9504 ~ 1 ~ 1.0888 }
+\tl_const:cn { c_@@_model_whitepoint_CIELAB_d75_tl } { 0.9497 ~ 1 ~ 1.2261 }
% \end{macrocode}
% \end{variable}
%
-% \begin{variable}{\c_@@_model_range_cielab_tl}
+% \begin{variable}{\c_@@_model_range_CIELAB_tl}
% The range for CIELAB color spaces.
% \begin{macrocode}
-\tl_const:Nn \c_@@_model_range_cielab_tl { -128 ~ 127 ~ -128 ~ 127 }
+\tl_const:Nn \c_@@_model_range_CIELAB_tl { 0 ~ 100 ~ -128 ~ 127 ~ -128 ~ 127 }
% \end{macrocode}
% \end{variable}
%
% \begin{macro}{\color_model_new:nnn, \@@_model_new:nnn}
-% \begin{macro}{\@@_model_separation:n}
-% \begin{macro}{\@@_model_separation:nn}
-% \begin{macro}{\@@_model_separation:nnn}
-% \begin{macro}{\@@_model_separation:w}
-% \begin{macro}
-% {
-% \@@_model_separation_cmyk:nnnnnn ,
-% \@@_model_separation_gray:nnnnnn ,
-% \@@_model_separation_rgb:nnnnnn
-% }
-% \begin{macro}{\@@_model_convert:nnn}
-% \begin{macro}{\@@_model_separation_cielab:nnnnnn}
-% \begin{macro}{\@@_model_separation_cielab:nnnnnnn}
% Set up a new model: in general this has to be handled by a family-dependent
% function. To avoid some \enquote{interesting} questions with casing, we
% fold the case of the family name. The key--value list should always be
@@ -1596,6 +1584,21 @@
}
}
% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_model_separation:n}
+% \begin{macro}{\@@_model_separation:nn}
+% \begin{macro}{\@@_model_separation:nnn}
+% \begin{macro}{\@@_model_separation:w}
+% \begin{macro}
+% {
+% \@@_model_separation_cmyk:nnnnnn ,
+% \@@_model_separation_gray:nnnnnn ,
+% \@@_model_separation_rgb:nnnnnn
+% }
+% \begin{macro}{\@@_model_convert:nnn}
+% \begin{macro}{\@@_model_separation_CIELAB:nnnnnn}
+% \begin{macro}{\@@_model_separation_CIELAB:nnnnnnn}
% Separations must have a \enquote{real} name, which is pretty easy to find.
% \begin{macrocode}
\cs_new_protected:Npn \@@_model_separation:n #1
@@ -1748,16 +1751,16 @@
% Setting up for CIELAB needs a bit more work: there is the illuminant and
% the need for an appropriate object.
% \begin{macrocode}
-\cs_new_protected:Npn \@@_model_separation_cielab:nnnnnn #1#2#3#4#5#6
+\cs_new_protected:Npn \@@_model_separation_CIELAB:nnnnnn #1#2#3#4#5#6
{
\prop_get:NnNF \l_@@_internal_prop { illuminant }
\l_@@_internal_tl
{
\__kernel_msg_error:nnn { color }
- { cielab-requires-illuminant } {#1}
+ { CIELAB-requires-illuminant } {#1}
\tl_set:Nn \l_@@_internal_tl { d50 }
}
- \exp_args:NV \@@_model_separation_cielab:nnnnnnn
+ \exp_args:NV \@@_model_separation_CIELAB:nnnnnnn
\l_@@_internal_tl {#1} {#2} {#3} {#4} {#5} {#6}
}
% \end{macrocode}
@@ -1767,12 +1770,11 @@
% cannot be converted to anything else, we fallback to producing black: the
% user should set up a second model for colors set up this way.
% \begin{macrocode}
-\cs_new_protected:Npn \@@_model_separation_cielab:nnnnnnn #1#2#3#4#5#6#7
+\cs_new_protected:Npn \@@_model_separation_CIELAB:nnnnnnn #1#2#3#4#5#6#7
{
- \tl_if_exist:cTF { c_@@_model_whitepoint_cielab_ #1 _tl }
+ \tl_if_exist:cTF { c_@@_model_whitepoint_CIELAB_ #1 _tl }
{
- \@@_backend_separation_init_cielab:n {#1}
- \@@_backend_separation_init_cielab:nnnnn {#2} {#3} {#4} {#5} {#6}
+ \@@_backend_separation_init_CIELAB:nnn {#1} {#3} { #4 ~ #5 ~ #6 }
\cs_new:cpn { @@_convert_ #2 _cmyk:w } ##1 ~ ##2 \s_@@_stop
{ 0 ~ 0 ~ 0 ~ 1 }
\cs_new:cpn { @@_convert_ #2 _rgb:w } ##1 ~ ##2 \s_@@_stop
@@ -1782,7 +1784,7 @@
}
{
\__kernel_msg_error:nnn { color }
- { unknown-cielab-illuminant } {#1}
+ { unknown-CIELAB-illuminant } {#1}
}
}
% \end{macrocode}
@@ -1794,7 +1796,6 @@
% \end{macro}
% \end{macro}
% \end{macro}
-% \end{macro}
%
% \subsection{Diagnostics}
%
@@ -1830,12 +1831,12 @@
% \subsection{Messages}
%
% \begin{macrocode}
-\__kernel_msg_new:nnnn { color } { cielab-requires-illuminant }
+\__kernel_msg_new:nnnn { color } { CIELAB-requires-illuminant }
{ CIELAB~color~space~'#1'~require~an~illuminant. }
{
LaTeX~has~been~asked~to~create~a~separation~color~space~using~
CIELAB~specifications,~but~no~\\ \\
- \iow_indent:n { illuminant = <basis> }
+ \iow_indent:n { illuminant~=~<basis> }
\\ \\
key~was~given~with~the~correct~information.~LaTeX~will~use~illuminant~
'd50'~for~recovery.
@@ -1857,7 +1858,7 @@
{
LaTeX~has~been~asked~to~create~a~separation~color~space,~
but~no~\\ \\
- \iow_indent:n { alternative-model = <model> }
+ \iow_indent:n { alternative-model~=~<model> }
\\ \\
key~was~given~with~the~correct~information.
}
@@ -1866,7 +1867,7 @@
{
LaTeX~has~been~asked~to~create~a~separation~color~space,~
but~no~\\ \\
- \iow_indent:n { alternative-values = <model> }
+ \iow_indent:n { alternative-values~=~<model> }
\\ \\
key~was~given~with~the~correct~information.
}
@@ -1875,7 +1876,7 @@
{
LaTeX~has~been~asked~to~create~a~separation~color~space,~
but~no~\\ \\
- \iow_indent:n { name = <formal~name> }
+ \iow_indent:n { name~=~<formal~name> }
\\ \\
key~was~given~with~the~correct~information.
}
@@ -1890,7 +1891,7 @@
{
LaTeX~has~been~asked~to~create~a~separation~color~space,~
but~the~model~given~as\\ \\
- \iow_indent:n { alternative-model = <model> }
+ \iow_indent:n { alternative-model~=~<model> }
\\ \\
is~unknown.
}
@@ -1900,7 +1901,7 @@
LaTeX~has~been~asked~to~export~a~color~in~format~'#1',~
but~this~has~never~been~defined.
}
-\__kernel_msg_new:nnnn { color } { unknown-cielab-illuminant }
+\__kernel_msg_new:nnnn { color } { unknown-CIELAB-illuminant }
{ Unknown~illuminant~model~'#1'. }
{
LaTeX~has~been~asked~to~use~create~a~color~space~using~CIELAB~
diff --git a/macros/latex/contrib/l3experimental/l3color.pdf b/macros/latex/contrib/l3experimental/l3color.pdf
index 304b1941e3..f2a6933a84 100644
--- a/macros/latex/contrib/l3experimental/l3color.pdf
+++ b/macros/latex/contrib/l3experimental/l3color.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3experimental/l3draw-boxes.dtx b/macros/latex/contrib/l3experimental/l3draw-boxes.dtx
index 940dd8c31d..afc4616dfb 100644
--- a/macros/latex/contrib/l3experimental/l3draw-boxes.dtx
+++ b/macros/latex/contrib/l3experimental/l3draw-boxes.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2020-09-01}
+% \date{Released 2020-09-11}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3experimental/l3draw-code.pdf b/macros/latex/contrib/l3experimental/l3draw-code.pdf
index 196604bf26..2226678a0e 100644
--- a/macros/latex/contrib/l3experimental/l3draw-code.pdf
+++ b/macros/latex/contrib/l3experimental/l3draw-code.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3experimental/l3draw-layers.dtx b/macros/latex/contrib/l3experimental/l3draw-layers.dtx
index 50a8fd81c1..ffe0cd9588 100644
--- a/macros/latex/contrib/l3experimental/l3draw-layers.dtx
+++ b/macros/latex/contrib/l3experimental/l3draw-layers.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2020-09-01}
+% \date{Released 2020-09-11}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3experimental/l3draw-paths.dtx b/macros/latex/contrib/l3experimental/l3draw-paths.dtx
index cba6efdb76..9f87bf357c 100644
--- a/macros/latex/contrib/l3experimental/l3draw-paths.dtx
+++ b/macros/latex/contrib/l3experimental/l3draw-paths.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2020-09-01}
+% \date{Released 2020-09-11}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3experimental/l3draw-points.dtx b/macros/latex/contrib/l3experimental/l3draw-points.dtx
index b6d9ba0837..aafe12bcc2 100644
--- a/macros/latex/contrib/l3experimental/l3draw-points.dtx
+++ b/macros/latex/contrib/l3experimental/l3draw-points.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2020-09-01}
+% \date{Released 2020-09-11}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3experimental/l3draw-scopes.dtx b/macros/latex/contrib/l3experimental/l3draw-scopes.dtx
index 88d0888884..99edbf1992 100644
--- a/macros/latex/contrib/l3experimental/l3draw-scopes.dtx
+++ b/macros/latex/contrib/l3experimental/l3draw-scopes.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2020-09-01}
+% \date{Released 2020-09-11}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3experimental/l3draw-softpath.dtx b/macros/latex/contrib/l3experimental/l3draw-softpath.dtx
index 0ca26af807..e6b35bf790 100644
--- a/macros/latex/contrib/l3experimental/l3draw-softpath.dtx
+++ b/macros/latex/contrib/l3experimental/l3draw-softpath.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2020-09-01}
+% \date{Released 2020-09-11}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3experimental/l3draw-state.dtx b/macros/latex/contrib/l3experimental/l3draw-state.dtx
index 4b3298e0d1..53cc03b98e 100644
--- a/macros/latex/contrib/l3experimental/l3draw-state.dtx
+++ b/macros/latex/contrib/l3experimental/l3draw-state.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2020-09-01}
+% \date{Released 2020-09-11}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3experimental/l3draw-transforms.dtx b/macros/latex/contrib/l3experimental/l3draw-transforms.dtx
index 6329c05fb9..e30bcf6d19 100644
--- a/macros/latex/contrib/l3experimental/l3draw-transforms.dtx
+++ b/macros/latex/contrib/l3experimental/l3draw-transforms.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2020-09-01}
+% \date{Released 2020-09-11}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3experimental/l3draw.dtx b/macros/latex/contrib/l3experimental/l3draw.dtx
index 841eae28c0..6d1e5e96aa 100644
--- a/macros/latex/contrib/l3experimental/l3draw.dtx
+++ b/macros/latex/contrib/l3experimental/l3draw.dtx
@@ -110,7 +110,7 @@
% }^^A
% }
%
-% \date{Released 2020-09-01}
+% \date{Released 2020-09-11}
%
% \maketitle
%
@@ -1136,7 +1136,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{l3draw}{2020-09-01}{}
+\ProvidesExplPackage{l3draw}{2020-09-11}{}
{L3 Experimental core drawing support}
% \end{macrocode}
%
diff --git a/macros/latex/contrib/l3experimental/l3draw.pdf b/macros/latex/contrib/l3experimental/l3draw.pdf
index e094bdd4ad..ea0c2c3cd2 100644
--- a/macros/latex/contrib/l3experimental/l3draw.pdf
+++ b/macros/latex/contrib/l3experimental/l3draw.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3experimental/l3galley.dtx b/macros/latex/contrib/l3experimental/l3galley.dtx
index 73779d70a3..5de6c7c4aa 100644
--- a/macros/latex/contrib/l3experimental/l3galley.dtx
+++ b/macros/latex/contrib/l3experimental/l3galley.dtx
@@ -61,7 +61,7 @@
% }^^A
% }
%
-% \date{Released 2020-09-01}
+% \date{Released 2020-09-11}
%
% \maketitle
%
@@ -686,7 +686,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{l3galley}{2020-09-01}{}
+\ProvidesExplPackage{l3galley}{2020-09-11}{}
{L3 Experimental galley code}
% \end{macrocode}
%
diff --git a/macros/latex/contrib/l3experimental/l3galley.pdf b/macros/latex/contrib/l3experimental/l3galley.pdf
index 0987073e2b..aeb2cb074f 100644
--- a/macros/latex/contrib/l3experimental/l3galley.pdf
+++ b/macros/latex/contrib/l3experimental/l3galley.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3experimental/l3graphics.dtx b/macros/latex/contrib/l3experimental/l3graphics.dtx
index 15f963e60d..6d74ceebb9 100644
--- a/macros/latex/contrib/l3experimental/l3graphics.dtx
+++ b/macros/latex/contrib/l3experimental/l3graphics.dtx
@@ -46,7 +46,7 @@
% }^^A
% }
%
-% \date{Released 2020-09-01}
+% \date{Released 2020-09-11}
%
% \maketitle
%
@@ -240,7 +240,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{l3graphics}{2020-09-01}{}
+\ProvidesExplPackage{l3graphics}{2020-09-11}{}
{L3 Experimental graphics inclusion support}
% \end{macrocode}
%
diff --git a/macros/latex/contrib/l3experimental/l3graphics.pdf b/macros/latex/contrib/l3experimental/l3graphics.pdf
index 2faf2c17dc..824722260e 100644
--- a/macros/latex/contrib/l3experimental/l3graphics.pdf
+++ b/macros/latex/contrib/l3experimental/l3graphics.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3experimental/l3pdf-code.pdf b/macros/latex/contrib/l3experimental/l3pdf-code.pdf
index 7f78070720..b9936cc61e 100644
--- a/macros/latex/contrib/l3experimental/l3pdf-code.pdf
+++ b/macros/latex/contrib/l3experimental/l3pdf-code.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3experimental/l3pdf.dtx b/macros/latex/contrib/l3experimental/l3pdf.dtx
index 7be0907d0b..e5af45a9b8 100644
--- a/macros/latex/contrib/l3experimental/l3pdf.dtx
+++ b/macros/latex/contrib/l3experimental/l3pdf.dtx
@@ -46,7 +46,7 @@
% }^^A
% }
%
-% \date{Released 2020-09-01}
+% \date{Released 2020-09-11}
%
% \maketitle
%
@@ -190,7 +190,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{l3pdf}{2020-09-01}{}
+\ProvidesExplPackage{l3pdf}{2020-09-11}{}
{L3 Experimental core PDF support}
% \end{macrocode}
%
diff --git a/macros/latex/contrib/l3experimental/l3pdf.pdf b/macros/latex/contrib/l3experimental/l3pdf.pdf
index c52018c46a..50f9afafa4 100644
--- a/macros/latex/contrib/l3experimental/l3pdf.pdf
+++ b/macros/latex/contrib/l3experimental/l3pdf.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3experimental/l3str-format.dtx b/macros/latex/contrib/l3experimental/l3str-format.dtx
index 8264409fb4..775e5d809f 100644
--- a/macros/latex/contrib/l3experimental/l3str-format.dtx
+++ b/macros/latex/contrib/l3experimental/l3str-format.dtx
@@ -48,7 +48,7 @@
% }^^A
% }
%
-% \date{Released 2020-09-01}
+% \date{Released 2020-09-11}
%
% \maketitle
%
@@ -166,7 +166,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{l3str-format}{2020-09-01}{}
+\ProvidesExplPackage{l3str-format}{2020-09-11}{}
{L3 Experimental string formatting}
% \end{macrocode}
%
diff --git a/macros/latex/contrib/l3experimental/l3str-format.pdf b/macros/latex/contrib/l3experimental/l3str-format.pdf
index d245bb68bc..9cde8e0e97 100644
--- a/macros/latex/contrib/l3experimental/l3str-format.pdf
+++ b/macros/latex/contrib/l3experimental/l3str-format.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3experimental/l3sys-shell.dtx b/macros/latex/contrib/l3experimental/l3sys-shell.dtx
index f3a06c643b..807e7383d3 100644
--- a/macros/latex/contrib/l3experimental/l3sys-shell.dtx
+++ b/macros/latex/contrib/l3experimental/l3sys-shell.dtx
@@ -46,7 +46,7 @@
% }^^A
% }
%
-% \date{Released 2020-09-01}
+% \date{Released 2020-09-11}
%
% \maketitle
%
@@ -135,7 +135,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{l3sys-shell}{2020-09-01}{}
+\ProvidesExplPackage{l3sys-shell}{2020-09-11}{}
{L3 Experimental system shell functions}
% \end{macrocode}
%
diff --git a/macros/latex/contrib/l3experimental/l3sys-shell.pdf b/macros/latex/contrib/l3experimental/l3sys-shell.pdf
index 98c66b8421..6939e5e38e 100644
--- a/macros/latex/contrib/l3experimental/l3sys-shell.pdf
+++ b/macros/latex/contrib/l3experimental/l3sys-shell.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3experimental/xcoffins.dtx b/macros/latex/contrib/l3experimental/xcoffins.dtx
index d890d28428..4286442045 100644
--- a/macros/latex/contrib/l3experimental/xcoffins.dtx
+++ b/macros/latex/contrib/l3experimental/xcoffins.dtx
@@ -56,7 +56,7 @@
% }^^A
% }
%
-% \date{Released 2020-09-01}
+% \date{Released 2020-09-11}
%
% \maketitle
%
@@ -675,7 +675,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{xcoffins}{2020-09-01}{}
+\ProvidesExplPackage{xcoffins}{2020-09-11}{}
{L3 Experimental design level coffins}
% \end{macrocode}
%
diff --git a/macros/latex/contrib/l3experimental/xcoffins.pdf b/macros/latex/contrib/l3experimental/xcoffins.pdf
index b13cdfe00c..3872ed532b 100644
--- a/macros/latex/contrib/l3experimental/xcoffins.pdf
+++ b/macros/latex/contrib/l3experimental/xcoffins.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3experimental/xgalley.dtx b/macros/latex/contrib/l3experimental/xgalley.dtx
index 77557731ad..52667441b6 100644
--- a/macros/latex/contrib/l3experimental/xgalley.dtx
+++ b/macros/latex/contrib/l3experimental/xgalley.dtx
@@ -47,7 +47,7 @@
% }^^A
% }
%
-% \date{Released 2020-09-01}
+% \date{Released 2020-09-11}
%
% \maketitle
%
@@ -734,7 +734,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{xgalley}{2020-09-01}{}
+\ProvidesExplPackage{xgalley}{2020-09-11}{}
{L3 Experimental galley}
\RequirePackage{xparse,xtemplate,l3galley}
% \end{macrocode}
diff --git a/macros/latex/contrib/l3experimental/xgalley.pdf b/macros/latex/contrib/l3experimental/xgalley.pdf
index 4935f6eded..9a3af8e4dc 100644
--- a/macros/latex/contrib/l3experimental/xgalley.pdf
+++ b/macros/latex/contrib/l3experimental/xgalley.pdf
Binary files differ
diff --git a/macros/latex/contrib/qyxf-book/LICENSE b/macros/latex/contrib/qyxf-book/LICENSE
index 510db3d20d..e44b3e3479 100644
--- a/macros/latex/contrib/qyxf-book/LICENSE
+++ b/macros/latex/contrib/qyxf-book/LICENSE
@@ -1,6 +1,6 @@
MIT License
-Copyright (c) 2020 钱院学辅
+Copyright (c) 2020 Qian Yuan Xue Fu
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
diff --git a/macros/latex/contrib/qyxf-book/README.md b/macros/latex/contrib/qyxf-book/README.md
index 5b5d3e1abe..3fd3a3a8cd 100644
--- a/macros/latex/contrib/qyxf-book/README.md
+++ b/macros/latex/contrib/qyxf-book/README.md
@@ -1,5 +1,8 @@
# qyxf-book: Book Template for Qian Yuan Xue Fu
+![version](https://img.shields.io/ctan/v/qyxf-book?style=flat-square)
+![license](https://img.shields.io/ctan/l/qyxf-book?style=flat-square)
+
> Warning: The template (including demo and docs) is currently designed only for Chinese typesetting. If you would like to use the template in other languages, please contact with us and offer help on that. Thanks.
`qyxf-book` is a LaTeX document class (template) developed by *Qian Yuan Xue Fu* (QYXF), a student club of *Xi'an Jiaotong University* (XJTU). Up to now, the template is applied in several academic counseling materials ("course helpers") written by members of QYXF, including:
diff --git a/macros/latex/contrib/qyxf-book/README.zh.md b/macros/latex/contrib/qyxf-book/README.zh.md
index 488491fcb5..a1210cf225 100644
--- a/macros/latex/contrib/qyxf-book/README.zh.md
+++ b/macros/latex/contrib/qyxf-book/README.zh.md
@@ -1,11 +1,12 @@
# 钱院学辅 LaTeX 书ç±æ¨¡æ¿
+![version](https://img.shields.io/ctan/v/qyxf-book?style=flat-square)
+![license](https://img.shields.io/ctan/l/qyxf-book?style=flat-square)
+
`qyxf-book` 是由钱院学辅开å‘çš„ã€ç”¨äºŽæŽ’版中等以上体é‡èµ„料的 LaTeX 文类。目å‰ï¼Œè¯¥æ¨¡æ¿å·²è¢«ç”¨äºŽç¼–写了[《大学物ç†é¢˜è§£ã€‹](https://github.com/qyxf/university-physics)ã€ã€Šç†è®ºåŠ›å­¦é¢˜è§£ã€‹ã€[《计算方法撷英》](https://qyxf.site/2019/11/26/notes-on-computing-methods-published)等诸多资料。
本份模æ¿åŽŸåœ¨ [qyxf-sets å®é›†](https://github.com/qyxf/qyxf-sets)项目中开å‘;因维护æˆæœ¬è¿‡é«˜ã€æ•ˆæžœä¸ç†æƒ³ï¼ŒçŽ°ç‹¬ç«‹ç»´æŠ¤ï¼Œå¹¶ä¸å†ä½¿ç”¨ä¹‹å‰çš„ doc/doctrip æ–¹å¼ã€‚现采用 MIT å议许å¯ï¼Œè¯·å¤§å®¶æ”¾å¿ƒåœ° forkã€ä¿®æ”¹ã€‚
-![thumbnail](figure/thumbnail.png)
-
## 特点
- æ ·å¼ç®€æ´ã€å¹²å‡€ï¼Œé€‚于排版学习资料;
@@ -16,4 +17,16 @@
## 使用说明
-ç›®å½•ä¸‹é™„å¸¦ä¸€ä»½æ ·ä¾‹ä»£ç  `demo.tex`,编译å³å¯å¾—模æ¿è¯´æ˜Žä¹¦åŠå†…容示例,请根æ®ä»£ç å’Œç¼–译得到的说明书学习使用本模æ¿ã€‚ \ No newline at end of file
+ç›®å½•ä¸‹é™„å¸¦ä¸€ä»½æ ·ä¾‹ä»£ç  `demo.tex`(在 CTAN å‘行的版本中为 `qyxf-book-doc.tex`),编译å³å¯å¾—模æ¿è¯´æ˜Žä¹¦åŠå†…容示例,请根æ®ä»£ç å’Œç¼–译得到的说明书学习使用本模æ¿ã€‚
+
+![thumbnail](figure/thumbnail.png)
+
+## å‘布平å°
+
+模æ¿åˆ†åˆ«åœ¨ï¼š
+
+- Gitee:<https://gitee.com/qyxf/qyxf-book>
+- GitHub:<https://github.com/qyxf/qyxf-book>
+- CTAN:<https://www.ctan.org/pkg/qyxf-book>
+
+å‘布,Gitee 为主è¦å¼€å‘å¹³å°ï¼ŒåŽä¸¤è€…æ›´æ–°ç¨æ…¢ï¼ˆCTAN 上的代ç ç›®å½•ç»“æž„ã€æ–‡ä»¶å称与å¦ä¸¤è€…略有区别)。 \ No newline at end of file
diff --git a/macros/latex/contrib/qyxf-book/colors/black.tex b/macros/latex/contrib/qyxf-book/colors/black.tex
deleted file mode 100644
index 2c0c8063e1..0000000000
--- a/macros/latex/contrib/qyxf-book/colors/black.tex
+++ /dev/null
@@ -1,23 +0,0 @@
-% color-scheme: black
-% author-by: xjtu-blacksmith
-% create-on: 2020/8/19
-
-% main colors
-\newcommand\@primary@color{black} % 修改此处颜色å³å¯å®žçŽ°åŒè‰²ä¹¦æ•ˆæžœ
-% for titles amd text
-\renewcommand\@title@color{\@primary@color}
-\renewcommand\@list@color{\@primary@color}
-\renewcommand\@caption@color{\@primary@color}
-\renewcommand\@link@color{\@primary@color}
-\renewcommand\@misc@color{\@primary@color}
-% for boxes
-\renewcommand\@box@background{white}
-\renewcommand\@box@title@color{\@primary@color}
-\renewcommand\@box@title@background{white}
-\renewcommand\@box@frame{\@primary@color}
-\renewcommand\@alert@title@color{white}
-\renewcommand\@alert@title@background{\@primary@color}
-% for theorems
-\renewcommand\@define@frame{\@primary@color}
-\renewcommand\@theorem@background{white}
-\renewcommand\@theorem@frame{\@primary@color} \ No newline at end of file
diff --git a/macros/latex/contrib/qyxf-book/colors/bootstrap-v4.tex b/macros/latex/contrib/qyxf-book/colors/bootstrap-v4.tex
deleted file mode 100644
index c13a8c40ad..0000000000
--- a/macros/latex/contrib/qyxf-book/colors/bootstrap-v4.tex
+++ /dev/null
@@ -1,29 +0,0 @@
-% color-scheme: bootstrap-v4
-% author-by: xjtu-blacksmith
-% create-on: 2020/8/19
-
-% main colors
-\newcommand\@primary@color{blue!50!cyan}
-\newcommand\@info@color{cyan!80!olive}
-% for titles amd text
-\renewcommand\@title@color{black!85}
-\renewcommand\@list@color{\@primary@color}
-\renewcommand\@caption@color{\@info@color}
-\renewcommand\@link@color{blue!67!green!}
-\renewcommand\@misc@color{\@primary@color}
-% for boxes
-\renewcommand\@box@background{cyan!20!white}
-\renewcommand\@box@frame{blue!30!teal}
-\renewcommand\@box@title@background{blue!55!cyan}
-\renewcommand\@box@color{blue!45!teal!80!black}
-\renewcommand\@alert@background{red!10!white}
-\renewcommand\@alert@color{red!40!black!90!white}
-\renewcommand\@alert@frame{red!75!teal}
-\renewcommand\@alert@title@background{red!80!cyan}
-% for theorems
-\renewcommand\@define@background{green!8!white!94!black}
-\renewcommand\@define@frame{green!10!white!90!black}
-\renewcommand\@define@color{green!40!black!90!white}
-\renewcommand\@theorem@background{-blue!20!black!96!green}
-\renewcommand\@theorem@frame{-blue!30!black!90!green}
-\renewcommand\@theorem@color{red!57!green!90!black} \ No newline at end of file
diff --git a/macros/latex/contrib/qyxf-book/colors/rbb.tex b/macros/latex/contrib/qyxf-book/colors/rbb.tex
deleted file mode 100644
index 98257f8de9..0000000000
--- a/macros/latex/contrib/qyxf-book/colors/rbb.tex
+++ /dev/null
@@ -1,24 +0,0 @@
-% color-scheme: rbb
-% author-by: xjtu-blacksmith
-% create-on: 2020/8/19
-
-% main colors
-\newcommand\@primary@color{blue}
-\newcommand\@info@color{red}
-% for titles amd text
-\renewcommand\@title@color{\@primary@color}
-\renewcommand\@list@color{\@primary@color}
-\renewcommand\@caption@color{\@primary@color}
-\renewcommand\@link@color{\@info@color}
-\renewcommand\@misc@color{\@primary@color}
-% for boxes
-\renewcommand\@box@background{white}
-\renewcommand\@box@frame{\@primary@color}
-\renewcommand\@box@title@background{\@primary@color}
-\renewcommand\@alert@color{\@info@color}
-\renewcommand\@alert@frame{\@info@color}
-\renewcommand\@alert@title@background{\@info@color}
-% for theorems
-\renewcommand\@define@frame{black}
-\renewcommand\@theorem@background{white}
-\renewcommand\@theorem@frame{\@primary@color} \ No newline at end of file
diff --git a/macros/latex/contrib/qyxf-book/demo.pdf b/macros/latex/contrib/qyxf-book/demo.pdf
deleted file mode 100644
index af296de229..0000000000
--- a/macros/latex/contrib/qyxf-book/demo.pdf
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/qyxf-book/figure/cover.pdf b/macros/latex/contrib/qyxf-book/figure/qyxf-cover.pdf
index 4250c9dd72..4250c9dd72 100644
--- a/macros/latex/contrib/qyxf-book/figure/cover.pdf
+++ b/macros/latex/contrib/qyxf-book/figure/qyxf-cover.pdf
Binary files differ
diff --git a/macros/latex/contrib/qyxf-book/qyxf-book-doc.pdf b/macros/latex/contrib/qyxf-book/qyxf-book-doc.pdf
new file mode 100644
index 0000000000..82d3c3fb0d
--- /dev/null
+++ b/macros/latex/contrib/qyxf-book/qyxf-book-doc.pdf
Binary files differ
diff --git a/macros/latex/contrib/qyxf-book/demo.tex b/macros/latex/contrib/qyxf-book/qyxf-book-doc.tex
index e9828c9617..d063f7558c 100644
--- a/macros/latex/contrib/qyxf-book/demo.tex
+++ b/macros/latex/contrib/qyxf-book/qyxf-book-doc.tex
@@ -4,7 +4,7 @@
twoside,
openany,
b5paper, % 以上å‡ä¸º ctexbook æ供的文类选项
- colorscheme = basic % 请根æ®éœ€è¦é€‰æ‹©æˆ–定制é…色方案
+ colorscheme = basic, % 请根æ®éœ€è¦é€‰æ‹©æˆ–定制é…色方案
]{qyxf-book}
\title{钱院学辅 \LaTeX 书ç±æ¨¡æ¿}
@@ -90,7 +90,7 @@
当å‰ç‰ˆæœ¬ã€‚在 V2 版本之上进一步改进了之å‰çš„问题,并å‘通用ã€å¯å®šåˆ¶çš„æ–¹å‘å‰è¿›ä¸€å¤§æ­¥ã€‚
-在字体方é¢ï¼Œç§»é™¤äº†ä¸­æ–‡å­—体备选项,完全采用 C\TeX å®é›†çš„默认设置;西文åŠæ•°å­¦å†…容采用 \TeX å‘行版附带的 XITS 字体,由此使模æ¿æœ¬èº«å®Œå…¨æ‘†è„±å¯¹å¤–部字体的ä¾èµ–\footnote{字体的定制交由用户完æˆï¼Œæœ¬æ¨¡æ¿ä¸å‚与其中。}。
+在字体方é¢ï¼Œç§»é™¤äº†ä¸­æ–‡å­—体备选项,完全采用 C\TeX å®é›†çš„默认设置;西文åŠæ•°å­¦å†…容采用 \TeX å‘行版附带的 XITS 字体,使模æ¿è¿›ä¸€æ­¥å‡å°‘了对外部字体的ä¾èµ–\footnote{字体的定制交由用户完æˆï¼Œæœ¬æ¨¡æ¿ä¸å‚与其中。}。
在样å¼æ–¹é¢ï¼Œç»¼åˆè‹¥å¹²ä¹¦ç±åŠç½‘页模æ¿é‡è®¾äº†å„类元素的尺寸ã€é—´è·ï¼Œå¹¶å®Œå…¨ç§»é™¤äº†åŽŸç”± \verb|pgfornament| 与 \verb|pgfornament-han| å®åŒ…所实现的装饰\footnote{一方é¢ï¼Œæ˜¯å› ä¸º \TeX Live 2020 中这两个å®åŒ…未被容纳进æ¥ï¼›å¦ä¸€æ–¹é¢ï¼Œç›®å‰ä¹Ÿå‘现装饰的存在ä¸åˆ©äºŽæ ·å¼çš„修改ã€å®šåˆ¶ï¼Œä¸”对阅读效果并无明显改善。}。
@@ -98,8 +98,7 @@
\subsection{我该用哪一个版本?}
-若需è¦ç¼–译由钱院学辅 2020 å¹´ 8 月å‰å‘布的资料之 \LaTeX æºç ï¼Œè¯·ç›´æŽ¥ç”¨æºç ä¸­é™„带的 \verb|qyxf-book.cls| 文件编译,或下载 V2 系列最新版本 v2.3\footnote{链接:\url{https://gitee.com/qyxf/qyxf-book/releases/2.3}}。å¦åˆ™ï¼Œè¯·é‡‡ç”¨æœ€æ–°ç‰ˆæœ¬çš„模æ¿å¥—装\footnote{包括模æ¿æ–‡ä»¶ \texttt{qyxf-book.cls} åŠå›¾ç‰‡ã€é…色方案等附件。}。
-
+若需è¦ç¼–译由钱院学辅 2020 å¹´ 8 月å‰å‘布的资料之 \LaTeX æºç ï¼Œè¯·ç›´æŽ¥ç”¨æºç ä¸­é™„带的 \verb|qyxf-book.cls| 文件编译,或下载 V2 系列最新版本 v2.3\footnote{链接:\url{https://gitee.com/qyxf/qyxf-book/releases/2.3}}。å¦åˆ™ï¼Œè¯·é‡‡ç”¨æœ€æ–°ç‰ˆæœ¬çš„模æ¿æ–‡ä»¶ã€‚
\begin{alert}
请采用 \hologo{XeLaTeX} 编译使用本模æ¿ï¼Œå…¶ä»–场åˆä¸‹ä¸ä¿è¯æœ¬æ¨¡æ¿çš„功能正常;模æ¿æœªæ¥çš„å¼€å‘之中也ä¸ä¼šè€ƒè™‘对其他 \LaTeX 引擎的支æŒ
@@ -117,8 +116,10 @@
\footnote{模æ¿ä¸­æ²¡æœ‰ä¸ºè¿™ä¸ªå‘½ä»¤è®¾ç½®è‡ªåŠ¨ç¼–å·ï¼Œä¸»è¦æ˜¯å› ä¸ºç¼–写题解的过程中常出现选题ã€
跳题的情况,且自动编å·ä¸‹ä¸æ˜“从æºä»£ç ä¸­æ‰¾åˆ°å¯¹åº”题目。}
(å¯ç•™ç©ºï¼‰ï¼Œå¦‚ \verb|\exercise{1}| 将生æˆï¼š\exercise{1}。
- \item \verb|\solve|:生æˆä¸€ä¸ªã€Œè§£ã€çš„标记:\solve。
- \item \verb|\analysis|:生æˆä¸€ä¸ªã€Œåˆ†æžã€çš„标记:\analysis。
+ \item \verb|\solve|:生æˆä¸€ä¸ªã€Œè§£ã€çš„标记:\solve。(其å¯ä»¥æŽ¥å—一个å¯é€‰å‚æ•°æ¥æ›¿æ¢ã€Œè§£ã€å­—
+ \footnote{ä½ å¯ä»¥é€šè¿‡è¿™ä¸ªç‰¹æ€§å®šä¹‰è‡ªå·±éœ€è¦çš„标记命令,下é¢çš„分æžæ ‡è®°åŒç†ã€‚})
+ ,如 \verb|\solve[ç­”]| 将生æˆï¼š\solve[ç­”]。
+ \item \verb|\analysis|:生æˆä¸€ä¸ªã€Œåˆ†æžã€çš„标记:\analysis。(其å¯ä»¥æŽ¥å—一个å‚æ•°æ¥æ›¿æ¢ã€Œåˆ†æžã€äºŒå­—,如 \verb|\analysis[注记]| 将生æˆï¼š\analysis[注记]。)
\end{itemize}
除此之外,还æ供了常è§çš„用户环境,包括:
@@ -127,7 +128,7 @@
\item 定义类环境:定义 \verb|definition|
\item 其他环境:注记 \verb|note|ã€è­¦å‘Š \verb|alert|
\end{itemize}
-其中,定ç†ã€å®šä¹‰ç±»çŽ¯å¢ƒå±žäºŽæ•°å­¦çŽ¯å¢ƒï¼Œé‡‡ç”¨ \LaTeX 原生机制定义,仅在外围包裹一层装饰用的盒å­ï¼›å› æ­¤ï¼Œå¯æŒ‰ç…§é€šå¸¸çš„写法编写数学环境,如:
+其中,定ç†ã€å®šä¹‰ç±»çŽ¯å¢ƒå±žäºŽæ•°å­¦ç±»çŽ¯å¢ƒï¼Œé‡‡ç”¨ \LaTeX 原生机制定义,仅在外围包裹一层装饰用的盒å­ï¼›å› æ­¤ï¼Œå¯æŒ‰ç…§é€šå¸¸çš„写法编写数学类环境,如:
\begin{tcolorbox}
\begin{verbatim}
\begin{theorem}[L'H\^opital 法则]
@@ -148,24 +149,54 @@
\subsection{é…色方案定制}
-本模æ¿æ”¯æŒç”¨æˆ·è‡ªå®šä¹‰çš„é…色方案,写法请å‚考å‘布版本中 \verb|colors| 目录下的文件。目å‰éšæ¨¡æ¿ä¸€åŒå‘布的é…色方案包括:
+\subsubsection{预定义é…色方案}
+
+ç›®å‰ï¼Œæ¨¡æ¿ä¸­å·²é¢„定义的é…色方案包括:
\begin{itemize}
- \item \verb|basic|:基本的ç°åº¦é…色方案,仿效于 \verb|qyxf-book| V2 版本的设计,默认值。
+ \item \verb|basic|:默认的ç°åº¦é…色方案,与 \verb|qyxf-book| V2 版本中的é…色接近。
+ \item \verb|black|:åªæœ‰é»‘白两色的é…色方案。å¯ä»¥å¾ˆå®¹æ˜“的调整为\emph{自定义åŒè‰²æ–¹æ¡ˆ}。
+ \item \verb|rbb|:红色 + è“色 + 黑色(Red Blue Black)的é…色方案。å¯ä»¥å¾ˆå®¹æ˜“的调整为\emph{自定义三色方案}。
\item \verb|bootstrap-v4|:借鉴 BootStrap V4 中的é…色方案。
- \item \verb|black|:åªæœ‰é»‘白两色,éžå¸¸é€‚åˆæ”¹é€ æˆå…¶ä»–çš„åŒè‰²é…色方案。
- \item \verb|rbb|:红色 + è“色 + 黑色(Red Blue Black),在å±å¹•ä¸Šæ¯”较醒目。
\end{itemize}
-
-é…色方案定制完æˆåŽï¼Œè¯·åœ¨æ–‡æ¡£ç±»ä¸­é€šè¿‡é”®å€¼å¯¹çš„å½¢å¼å¼•ç”¨ï¼Œå¦‚
+欲使用以上的方案,请在文档类中通过键值对的形å¼å¼•ç”¨ï¼Œå¦‚
\begin{tcolorbox}
\verb|colorsheme = rbb|
\end{tcolorbox}
å°†å¯ç”¨ \verb|rbb| é…色方案。
-é…色方案文件请\textbf{务必}放在待编译文件所在目录的 \verb|colors| å­ç›®å½•ä¸‹ã€‚
+\subsubsection{åŒè‰²\&三色方案快速生æˆ}
+为方便用户快速修改预定义é…色方案,模æ¿ä¸ºåŒè‰²æ–¹æ¡ˆ \verb|black| 和三色方案 \verb|rbb| 设计了两个文类选项:
+\begin{itemize}
+ \item \verb|primary|:主色,相当于 \verb|black| ä¸­çš„é»‘è‰²åŠ \verb|rbb| 中的è“色;
+ \item \verb|seconadry|:辅助色,åªå¯¹ \verb|rbb| 方案生效,相当于 \verb|rbb| 中的红色。
+\end{itemize}
+若您想快速定义一个自己的åŒè‰²æˆ–三色é…色方案,å¯ç›´æŽ¥é€šè¿‡ä»¥ä¸Šä¸¤ä¸ªæ–‡ç±»é€‰é¡¹è®¾ç½®ã€‚例如,若您希望使用橙 + 黑的åŒè‰²ä¸»é¢˜ï¼Œå¯é€šè¿‡ä»¥ä¸‹çš„文类选项实现:
+\begin{tcolorbox}
+\begin{verbatim}
+\documentclass[
+ colorscheme = black, % 载入åŒè‰²ä¸»é¢˜ï¼Œæ­¤æ—¶ä¸»è‰²ä¸ºé»‘色
+ primary = orange % 将主色改为橙色
+]{qyxf-book}
+\end{verbatim}
+\end{tcolorbox}
+而如果您希望使用橙 + ç´« + 黑的三色主题,则å¯é€šè¿‡ä»¥ä¸‹çš„文类选项实现:
+\begin{tcolorbox}
+\begin{verbatim}
+ \documentclass[
+ colorscheme = rbb, % 载入三色主题
+ primary = orange, % 将主色改为橙色
+ secondary = violet % 将辅助色改为紫色
+ ]{qyxf-book}
+\end{verbatim}
+\end{tcolorbox}
+
+\begin{alert}
+请采用 \verb|xcolor| å®åŒ…所æ供的混色语法(如 \verb|red!50!blue|)设置对应的值,其他写法目å‰å°šä¸æ”¯æŒã€‚下åŒã€‚
+\end{alert}
-若您需è¦ç¼–写自己的é…色方案,请å‚考表 \ref{tab:color-scheme} 所示的å„项接å£ï¼›å»ºè®®æ‚¨é‡‡ç”¨ \verb|xcolor| å®åŒ…所æ供的混色语法(如 \verb|red!50!blue|)设置对应的值,其他写法目å‰å°šä¸æ”¯æŒã€‚
+\subsubsection{自定义é…色方案}
+若您需è¦ç¼–写自己的é…色方案,请通过 \verb|\renewcommand| 命令修改表 \ref{tab:color-scheme} 所示的å„项接å£ï¼Œåœ¨é¢„定义主题的基础上修改相应颜色值。
\begin{table}[htbp]
\centering\small
\caption{é…色方案接å£è¡¨}\label{tab:color-scheme}
@@ -173,33 +204,43 @@
\toprule
æ¡ç›® & 接å£å® & \parbox{5em}{\centering \texttt{basic}\\方案默认值} & 备注 \\
\midrule
-标题文字 & \verb|\@title@color| & \verb|black| & \\
-列表标记 & \verb|\@list@color| & \verb|black| & \\
-图表标题文字 & \verb|\@caption@color| & \verb|black| & \\
-链接文字 & \verb|\@link@color| & \verb|black| & \\
-æ‚项文字 & \verb|\@misc@color| & \verb|black| & \parbox{7em}{页ç ã€å¼•ç”¨æ ‡è®°ã€å¼•å¯¼æ ‡è®°ç­‰} \\
+标题文字 & \verb|\TitleColor| & \verb|black| & \\
+列表标记 & \verb|\ListColor| & \verb|black| & \\
+图表标题文字 & \verb|\CaptionColor| & \verb|black| & \\
+链接文字 & \verb|\LinkColor| & \verb|black| & \\
+æ‚项文字 & \verb|\MiscColor| & \verb|black| & \parbox{7em}{页ç ã€å¼•ç”¨æ ‡è®°ã€å¼•å¯¼æ ‡è®°ç­‰} \\
\midrule
-ç›’å­èƒŒæ™¯ & \verb|\@box@background| & \verb|white| & \parbox{7em}{\texttt{tcolorbox} 环境默认定义,下åŒ} \\
-ç›’å­è¾¹æ¡† & \verb|\@box@frame| & \verb|black!75| & \\
-ç›’å­æ ‡é¢˜æ–‡å­— & \verb|\@box@title@color| & \verb|white| & \\
-ç›’å­æ ‡é¢˜èƒŒæ™¯ & \verb|\@box@title@background| & \verb|black!50| & \\
-ç›’å­æ–‡å­— & \verb|\@box@color| & \verb|black| & \\
-警告盒å­èƒŒæ™¯ & \verb|\@alert@background| & \verb|white| & \parbox{7em}{对 \texttt{alert} 环境定义,下åŒ} \\
-警告盒å­æ–‡å­— & \verb|\@alert@color| & \verb|black| & \\
-警告盒å­è¾¹æ¡† & \verb|\@alert@frame| & \verb|black| & \\
-警告盒å­æ ‡é¢˜èƒŒæ™¯ & \verb|\@alert@title@background| & \verb|black| & \\
-警告盒å­æ ‡é¢˜æ–‡å­— & \verb|\@alert@title@color| & \verb|white| & \\
+ç›’å­èƒŒæ™¯ & \verb|\BoxBackground| & \verb|white| & \parbox{7em}{\texttt{tcolorbox} 环境默认定义,下åŒ} \\
+ç›’å­è¾¹æ¡† & \verb|\BoxFrame| & \verb|black!75| & \\
+ç›’å­æ ‡é¢˜æ–‡å­— & \verb|\BoxTitleColor| & \verb|white| & \\
+ç›’å­æ ‡é¢˜èƒŒæ™¯ & \verb|\BoxTitleBackground| & \verb|black!50| & \\
+ç›’å­æ–‡å­— & \verb|\BoxColor| & \verb|black| & \\
+警告盒å­èƒŒæ™¯ & \verb|\AlertBackground| & \verb|white| & \parbox{7em}{对 \texttt{alert} 环境定义,下åŒ} \\
+警告盒å­æ–‡å­— & \verb|\AlertColor| & \verb|black| & \\
+警告盒å­è¾¹æ¡† & \verb|\AlertFrame| & \verb|black| & \\
+警告盒å­æ ‡é¢˜èƒŒæ™¯ & \verb|\AlertTitleBackground| & \verb|black| & \\
+警告盒å­æ ‡é¢˜æ–‡å­— & \verb|\AlertTitleColor| & \verb|white| & \\
\midrule
-定义环境背景 & \verb|\@define@background| & \verb|white| & \parbox{7em}{对 \texttt{define} 环境定义,下åŒ} \\
-定义环境边框 & \verb|\@define@frame| & \verb|black!40| & \\
-定义环境文字 & \verb|\@define@color| & \verb|black| & \\
-定ç†çŽ¯å¢ƒèƒŒæ™¯ & \verb|\@theorem@background| & \verb|black!10| & \parbox{7em}{对å„定ç†ç±»çŽ¯å¢ƒå®šä¹‰ï¼Œä¸‹åŒ} \\
-定ç†çŽ¯å¢ƒè¾¹æ¡† & \verb|\@theorem@frame| & \verb|black!80| & \\
-定ç†çŽ¯å¢ƒæ–‡å­— & \verb|\@theorem@color| & \verb|black| & \\
+定义环境背景 & \verb|\DefineBackground| & \verb|white| & \parbox{7em}{对 \texttt{define} 环境定义,下åŒ} \\
+定义环境边框 & \verb|\DefineFrame| & \verb|black!40| & \\
+定义环境文字 & \verb|\DefineColor| & \verb|black| & \\
+定ç†çŽ¯å¢ƒèƒŒæ™¯ & \verb|\TheoremBackground| & \verb|black!10| & \parbox{7em}{对å„定ç†ç±»çŽ¯å¢ƒå®šä¹‰ï¼Œä¸‹åŒ} \\
+定ç†çŽ¯å¢ƒè¾¹æ¡† & \verb|\TheoremFrame| & \verb|black!80| & \\
+定ç†çŽ¯å¢ƒæ–‡å­— & \verb|\TheoremColor| & \verb|black| & \\
\bottomrule
\end{tabular}
\end{table}
+需è¦æ³¨æ„的是,在é‡å®šä¹‰é“¾æŽ¥åŠç›’å­çŽ¯å¢ƒçš„é…色时,å¯èƒ½å› è®¾ç½®å‘½ä»¤æå‰å±•å¼€æŽ¥å£è€Œæ— æ³•ç”Ÿæ•ˆï¼›åœ¨æ­¤æƒ…况下,请使用 \verb|\selectcolor| 命令强制更新这些颜色的值。例如,è¦å˜æ›´é“¾æŽ¥é¢œè‰² \verb|\LinkColor| åŠç›’å­æ–‡å­—颜色 \verb|\BoxColor| 为 \verb|red!50|,请通过以下命令实现:
+
+\begin{tcolorbox}
+\begin{verbatim}
+\renewcommand{\LinkColor}{red!50}
+\renewcommand{\BoxColor}{red!50}
+\selectcolor % 更新颜色
+\end{verbatim}
+\end{tcolorbox}
+
\subsection{元信æ¯å®šåˆ¶}
本模æ¿ä¸­è¦æ±‚填写几项元信æ¯ï¼Œå¦‚表 \ref{tab:metadata} 所示。请在使用时填写完整,以é¿å…出现预料之外的情况。
@@ -240,18 +281,19 @@
\subsection{å°é¢å®šåˆ¶}
-本模æ¿æ供了简易的å°é¢å®šåˆ¶æŽ¥å£ï¼Œé€šè¿‡ \verb|\cover| 命令æ¥å¡«å†™å°é¢ä¸Šéœ€è¦çš„内容。例如,需è¦å°†æœ¬æ¨¡æ¿ä¸­è‡ªå¸¦çš„ \verb|cover.pdf| 文件æ’入到å°é¢ä¸­å¿ƒï¼Œé€šè¿‡ä»¥ä¸‹å‘½ä»¤å³å¯ï¼š
+本模æ¿æ供了简易的å°é¢å®šåˆ¶æŽ¥å£ï¼Œé€šè¿‡ \verb|\cover| 命令æ¥å¡«å†™å°é¢ä¸Šéœ€è¦çš„内容。例如,需è¦å°†æœ¬æ¨¡æ¿ä¸­è‡ªå¸¦çš„ \verb|qyxf-logo.pdf| 文件æ’入到å°é¢ä¸­å¿ƒï¼Œé€šè¿‡ä»¥ä¸‹å‘½ä»¤å³å¯ï¼š
\begin{tcolorbox}
\begin{verbatim}
-\cover{\includegraphics[width=0.5\textwidth]{figure/cover.pdf}}
+\cover{\includegraphics[width=0.5\textwidth]%
+{figure/qyxf-logo.pdf}}
\end{verbatim}
\end{tcolorbox}
若您希望使æ’入元素é å‘上侧,则å¯è¿™æ ·å®žçŽ°ï¼š
\begin{tcolorbox}
\begin{verbatim}
-\cover{\includegraphics[width=0.5\textwidth]{figure/cover.pdf}%
-\vfill}
+\cover{\includegraphics[width=0.5\textwidth]%
+{figure/qyxf-logo.pdf}\vfill}
\end{verbatim}
\end{tcolorbox}
åŽä¾§çš„ \verb|\vfill| 会将æ’入元素å‘上挤压。在å¦ä¸€æ–¹å‘上åŒç†ã€‚除了æ’入图片之外,您也å¯ä»¥ä½¿ç”¨ \verb|\cover| 命令在首页上æ’入全局性命令,或使用 Ti$k$Z 环境按页é¢å®šä½æ’入图片。
@@ -289,7 +331,7 @@
\subsection{西文字体设置}
-西文字体方é¢ï¼Œç›®å‰é‡‡ç”¨ XITS 系列字体
+西文字体方é¢ï¼Œç›®å‰é‡‡ç”¨ä¸Ž Times 系列字体相近的 XITS 系列字体
\footnote{无衬线体采用接近于 Helvetica 的 \TeX{} Gyre Heros。}
。如您想å˜æ›´è¥¿æ–‡å­—体,请完æˆä»¥ä¸‹ä¸¤ä¸ªæ­¥éª¤ï¼š
@@ -456,7 +498,7 @@ C\TeX å®é›†æ供了几ç§é¢„定义的字体设置,除系统字体之外还åŒ
\begin{figure}[htbp]
\centering
- \includegraphics[width=.3\textwidth]{cover.pdf}
+ \includegraphics[width=.3\textwidth]{qyxf-cover.pdf}
\caption{V2 版本的å°é¢å›¾ç‰‡}
\label{fig:qyxf-logo}
\end{figure}
diff --git a/macros/latex/contrib/qyxf-book/qyxf-book.cls b/macros/latex/contrib/qyxf-book/qyxf-book.cls
index f69f186620..8dfc56085a 100644
--- a/macros/latex/contrib/qyxf-book/qyxf-book.cls
+++ b/macros/latex/contrib/qyxf-book/qyxf-book.cls
@@ -4,10 +4,10 @@
% --------------------------
\NeedsTeXFormat{LaTeX2e}[2005/12/01]
-\newcommand{\styversion}{3.0}
+\newcommand{\styversion}{3.1.0}
\newcommand{\styname}{qyxf-book}
\ProvidesClass{qyxf-book}
- [2020/08/27 v3.0 Qian Yuan Xue Fu book template]
+ [2020/09/11 v3.1.0 Qian Yuan Xue Fu book template]
\typeout{The book template provided by Qian Yuan Xue Fu}
% 设定 key-val 选项
@@ -16,6 +16,8 @@
% 选项定制与处ç†
\DeclareStringOption[basic]{colorscheme}[basic]
+\DeclareStringOption{primary}
+\DeclareStringOption{secondary}
\DeclareBoolOption[true]{xits}
\DeclareVoidOption{noCJKfont}{\PassOptionsToClass{fontset=none}{ctexbook}}
@@ -46,9 +48,6 @@
\fi
\RequirePackage{hologo}
-% etoolbox
-\RequirePackage{etoolbox}
-
% 正文样å¼è®¾ç½®
\RequirePackage[normalem]{ulem}
@@ -67,54 +66,128 @@
% caption æ ·å¼è®¾å®š
\RequirePackage{caption}
-\DeclareCaptionFormat{colored}{\small{\bfseries\color{\@caption@color}#1} #3}
+\DeclareCaptionFormat{colored}{\small{\bfseries\color{\CaptionColor}#1} #3}
\captionsetup{
format = colored,
skip = 1ex
}
+% 处ç†é…色方案
+\RequirePackage{etoolbox}
+\ifdefempty{\QYXF@primary}{\relax}{\newcommand{\PrimaryColor}{\QYXF@primary}}
+\ifdefempty{\QYXF@secondary}{\relax}{\newcommand{\SecondaryColor}{\QYXF@secondary}}
+
% color scheme 默认值
+
% for titles amd text
-\newcommand{\@title@color}{black}
-\newcommand{\@list@color}{black}
-\newcommand{\@caption@color}{black}
-\newcommand{\@link@color}{black}
-\newcommand{\@misc@color}{black}
+\newcommand{\TitleColor}{black}
+\newcommand{\ListColor}{black}
+\newcommand{\CaptionColor}{black}
+\newcommand{\LinkColor}{black}
+\newcommand{\MiscColor}{black}
% for boxes
-\newcommand{\@box@background}{white}
-\newcommand{\@box@frame}{black!75}
-\newcommand{\@box@title@color}{white}
-\newcommand{\@box@title@background}{black!50}
-\newcommand{\@box@color}{black}
-\newcommand{\@alert@background}{white}
-\newcommand{\@alert@color}{black}
-\newcommand{\@alert@frame}{black}
-\newcommand{\@alert@title@background}{black}
-\newcommand{\@alert@title@color}{white}
+\newcommand{\BoxBackground}{white}
+\newcommand{\BoxFrame}{black!75}
+\newcommand{\BoxTitleColor}{white}
+\newcommand{\BoxTitleBackground}{black!50}
+\newcommand{\BoxColor}{black}
+\newcommand{\AlertBackground}{white}
+\newcommand{\AlertColor}{black}
+\newcommand{\AlertFrame}{black}
+\newcommand{\AlertTitleBackground}{black}
+\newcommand{\AlertTitleColor}{white}
% for theorems
-\newcommand{\@define@background}{white}
-\newcommand{\@define@frame}{black!40}
-\newcommand{\@define@color}{black}
-\newcommand{\@theorem@background}{black!10}
-\newcommand{\@theorem@frame}{black!80}
-\newcommand{\@theorem@color}{black}
+\newcommand{\DefineBackground}{white}
+\newcommand{\DefineFrame}{black!40}
+\newcommand{\DefineColor}{black}
+\newcommand{\TheoremBackground}{black!10}
+\newcommand{\TheoremFrame}{black!80}
+\newcommand{\TheoremColor}{black}
% è¯»å– color scheme
-\ifdefstring{\QYXF@colorscheme}{basic}{\relax}{%
- \newcommand\schemepath{colors/\QYXF@colorscheme.tex}
- \input{\schemepath}}
+\RequirePackage{xstring}
+\IfEqCase{\QYXF@colorscheme}{%
+ {basic}{\relax}% Basic theme
+ {black}{% BLack theme (bicolor)
+ % main colors
+ \providecommand\PrimaryColor{black}
+ % for titles amd text
+ \renewcommand\TitleColor{\PrimaryColor}
+ \renewcommand\ListColor{\PrimaryColor}
+ \renewcommand\CaptionColor{\PrimaryColor}
+ \renewcommand\LinkColor{\PrimaryColor}
+ \renewcommand\MiscColor{\PrimaryColor}
+ % for boxes
+ \renewcommand\BoxBackground{white}
+ \renewcommand\BoxTitleColor{\PrimaryColor}
+ \renewcommand\BoxTitleBackground{white}
+ \renewcommand\BoxFrame{\PrimaryColor}
+ \renewcommand\AlertTitleColor{white}
+ \renewcommand\AlertTitleBackground{\PrimaryColor}
+ % for theorems
+ \renewcommand\DefineFrame{\PrimaryColor}
+ \renewcommand\TheoremBackground{white}
+ \renewcommand\TheoremFrame{\PrimaryColor}
+ }%
+ {rbb}{% Red-Blue-Black theme (tricolor)
+ % main colors
+ \providecommand\PrimaryColor{blue}
+ \providecommand\SecondaryColor{red}
+ % for titles amd text
+ \renewcommand\TitleColor{\PrimaryColor}
+ \renewcommand\ListColor{\PrimaryColor}
+ \renewcommand\CaptionColor{\PrimaryColor}
+ \renewcommand\LinkColor{\SecondaryColor}
+ \renewcommand\MiscColor{\PrimaryColor}
+ % for boxes
+ \renewcommand\BoxBackground{white}
+ \renewcommand\BoxFrame{\PrimaryColor}
+ \renewcommand\BoxTitleBackground{\PrimaryColor}
+ \renewcommand\AlertColor{\SecondaryColor}
+ \renewcommand\AlertFrame{\SecondaryColor}
+ \renewcommand\AlertTitleBackground{\SecondaryColor}
+ % for theorems
+ \renewcommand\DefineFrame{black}
+ \renewcommand\TheoremBackground{white}
+ \renewcommand\TheoremFrame{\PrimaryColor}
+ }%
+ {bootstrap-v4}{% Bootstrap V4 theme
+ % for titles amd text
+ \renewcommand\TitleColor{black!85}
+ \renewcommand\ListColor{blue!50!cyan}
+ \renewcommand\CaptionColor{cyan!80!olive}
+ \renewcommand\LinkColor{blue!67!green!}
+ \renewcommand\MiscColor{blue!50!cyan}
+ % for boxes
+ \renewcommand\BoxBackground{cyan!20!white}
+ \renewcommand\BoxFrame{blue!30!teal}
+ \renewcommand\BoxTitleBackground{blue!55!cyan}
+ \renewcommand\BoxColor{blue!45!teal!80!black}
+ \renewcommand\AlertBackground{red!10!white}
+ \renewcommand\AlertColor{red!40!black!90!white}
+ \renewcommand\AlertFrame{red!75!teal}
+ \renewcommand\AlertTitleBackground{red!80!cyan}
+ % for theorems
+ \renewcommand\DefineBackground{green!8!white!94!black}
+ \renewcommand\DefineFrame{green!10!white!90!black}
+ \renewcommand\DefineColor{green!40!black!90!white}
+ \renewcommand\TheoremBackground{-blue!20!black!96!green}
+ \renewcommand\TheoremFrame{-blue!30!black!90!green}
+ \renewcommand\TheoremColor{red!57!green!90!black}
+ }%
+}[\ClassWarning{\styname}{Color scheme `\QYXF@colorscheme' not found, `basic' theme is used then.}]
% tcolorbox æ ·å¼è®¾å®š
\tcbset{
enhanced,
noparskip,
after = \noindent,
- colback = \@box@background,
+ colback = \BoxBackground,
title filled,
- colbacktitle = \@box@title@background,
- colframe = \@box@frame,
- coltitle = \@box@title@color,
- coltext = \@box@color,
+ colbacktitle = \BoxTitleBackground,
+ colframe = \BoxFrame,
+ coltitle = \BoxTitleColor,
+ coltext = \BoxColor,
fonttitle = \bfseries,
arc = 0.25em,
boxrule = 0.5pt,
@@ -130,28 +203,28 @@
}
% 引导命令
-\newcommand{\exercise}[1]{\noindent\textbf{\color{\@misc@color}练习 #1}\ }
-\newcommand{\solve}{\noindent\textbf{\color{\@misc@color}\uline{解}}\ }
-\newcommand{\analysis}{\noindent\textbf{\color{\@misc@color}\uline{分æž}}\ }
+\newcommand{\exercise}[1]{\noindent\textbf{\color{\MiscColor}练习 #1}\ }
+\newcommand{\solve}[1][解]{\noindent\textbf{\color{\MiscColor}#1}\ }
+\newcommand{\analysis}[1][分æž]{\noindent\emph{\color{\MiscColor}#1}\ }
% 定ç†çŽ¯å¢ƒåŠæ ·å¼è®¾å®š
\newtheorem{theorem}{定ç†}
\newtheorem{lemma}[theorem]{引ç†}
\newtheorem{define}{定义}
-\BeforeBeginEnvironment{theorem}{\begin{tcolorbox}[colback=\@theorem@background,colframe=\@theorem@frame,coltext=\@theorem@color]}
+\BeforeBeginEnvironment{theorem}{\begin{tcolorbox}[colback=\TheoremBackground,colframe=\TheoremFrame,coltext=\TheoremColor]}
\AfterEndEnvironment{theorem}{\end{tcolorbox}}
-\BeforeBeginEnvironment{lemma}{\begin{tcolorbox}[colback=\@theorem@background,colframe=\@theorem@frame,coltext=\@theorem@color]}
+\BeforeBeginEnvironment{lemma}{\begin{tcolorbox}[colback=\TheoremBackground,colframe=\TheoremFrame,coltext=\TheoremColor]}
\AfterEndEnvironment{lemma}{\end{tcolorbox}}
-\BeforeBeginEnvironment{define}{\begin{tcolorbox}[colback=\@define@background,colframe=\@define@frame,coltext=\@define@color]}
+\BeforeBeginEnvironment{define}{\begin{tcolorbox}[colback=\DefineBackground,colframe=\DefineFrame,coltext=\DefineColor]}
\AfterEndEnvironment{define}{\end{tcolorbox}}
\newtcolorbox{note}{title={注记}}
\newtcolorbox{alert}{
title = {警告},
- colback = \@alert@background,
- colframe = \@alert@frame,
- colbacktitle = \@alert@title@background,
- coltitle = \@alert@title@color,
- coltext = \@alert@color
+ colback = \AlertBackground,
+ colframe = \AlertFrame,
+ colbacktitle = \AlertTitleBackground,
+ coltitle = \AlertTitleColor,
+ coltext = \AlertColor
}
% 页é¢è®¾ç½®
@@ -174,18 +247,21 @@
}
\hypersetup{
colorlinks = true,
- linkcolor = \@link@color,
- anchorcolor = \@misc@color,
- urlcolor = \@link@color,
- citecolor = \@misc@color
+ linkcolor = \LinkColor,
+ anchorcolor = \MiscColor,
+ urlcolor = \LinkColor,
+ citecolor = \MiscColor
}
% 章节标题与目录样å¼
\RequirePackage{titlesec,titletoc}
\ctexset{section={name={\S,}}}
-\titleformat{\chapter}[block]{\color{\@title@color}\centering\bfseries\fontsize{2.25em}{1.2ex}}{\CTEXthechapter}{1em}{}
-\titleformat*{\section}{\color{\@title@color}\fontsize{1.75em}{1.225ex}\bfseries\centering}
-\titleformat*{\subsection}{\color{\@title@color}\fontsize{1.5em}{1.43ex}\bfseries}
+\titleformat{\chapter}[block]{\color{\TitleColor}\centering\bfseries\fontsize{2.25em}{1.2ex}}{\CTEXthechapter}{1em}{}
+\titleformat*{\section}{\color{\TitleColor}\fontsize{1.75em}{1.225ex}\bfseries\centering}
+\titleformat*{\subsection}{\color{\TitleColor}\fontsize{1.5em}{1.43ex}\bfseries}
+\titleformat*{\subsubsection}{\color{\TitleColor}\fontsize{1.25em}{1.4ex}\bfseries}
+\titleformat*{\paragraph}{\color{\TitleColor}\bfseries}
+\titleformat*{\subparagraph}{\color{\TitleColor}}
\titlespacing{\chapter}{0pt}{*1}{*4}
\titlecontents{chapter}[24pt]{\hspace{-2pc}\filright}
{\normalsize\bfseries\contentspush{\thecontentslabel\ }}
@@ -200,7 +276,7 @@
% 页眉页脚设置
\newcommand{\footerbox}{%
- {\color{\@misc@color}\bfseries\thepage}\\[-\baselineskip]
+ {\color{\MiscColor}\bfseries\thepage}\\[-\baselineskip]
\uline{\hphantom{\@footorginfo}}\\
\@footorginfo}
\RequirePackage{fancyhdr}
@@ -218,20 +294,19 @@
% 列表样å¼è®¾ç½®
\RequirePackage[shortlabels]{enumitem}
\RequirePackage{pifont}
-\newcommand{\arrowmark}{\ding{228}}
\setlist{nosep, partopsep=0.5ex}
-\setlist[itemize,1]{label={\color{\@list@color}\arrowmark}, left=0.8em}
-\setlist[itemize,2]{label={\color{\@list@color}\ding{111}}, left=2.8em}
-\setlist[itemize,3]{label={\color{\@list@color}\ding{109}}, left=4.8em}
-\setlist[enumerate,1]{label={\color{\@list@color}\textbf{\arabic*}.}, left=0.8em}
-\setlist[enumerate,2]{label={\color{\@list@color}{\arabic*}.}, left=2.8em}
-\setlist[enumerate,3]{label={\color{\@list@color}({\arabic*})}, left=4.8em}
-\setlist[description]{style=nextline, font=\color{\@list@color}\bfseries}
+\setlist[itemize,1]{label={\color{\ListColor}\ding{228}}, left=0.8em}
+\setlist[itemize,2]{label={\color{\ListColor}\ding{111}}, left=2.8em}
+\setlist[itemize,3]{label={\color{\ListColor}\ding{109}}, left=4.8em}
+\setlist[enumerate,1]{label={\color{\ListColor}\textbf{\arabic*}.}, left=0.8em}
+\setlist[enumerate,2]{label={\color{\ListColor}{\arabic*}.}, left=2.8em}
+\setlist[enumerate,3]{label={\color{\ListColor}({\arabic*})}, left=4.8em}
+\setlist[description]{style=nextline, font=\color{\ListColor}\bfseries}
% å‚考文献定制
\RequirePackage[square,numbers]{natbib}
-\renewcommand{\citenumfont}[1]{{\color{\@link@color}#1}}
-\renewcommand{\bibnumfmt}[1]{{\color{\@list@color}[#1]}}
+\renewcommand{\citenumfont}[1]{{\color{\LinkColor}#1}}
+\renewcommand{\bibnumfmt}[1]{{\color{\ListColor}[#1]}}
\AtBeginEnvironment{thebibliography}{\addcontentsline{toc}{chapter}{\bibname}}
% æ‚项
@@ -274,12 +349,12 @@
\begin{titlepage}
\null
\begin{center}\large
- \begin{tcolorbox}[blanker,borderline west={1mm}{0pt}{\@box@frame},%
+ \begin{tcolorbox}[blanker,borderline west={1mm}{0pt}{\BoxFrame},%
left=20pt,top=1ex,bottom=1ex,after skip=0pt,no shadow]
- {\color{\@title@color}\titlefont\@title}
- \ifdefempty\@subtitle{}{\\[1ex]{\color{\@title@color}\subtitlefont\@subtitle}}
+ {\color{\TitleColor}\titlefont\@title}
+ \ifdefempty\@subtitle{}{\\[1ex]{\color{\TitleColor}\subtitlefont\@subtitle}}
\end{tcolorbox}
- \begin{tcolorbox}[blanker,borderline west={1mm}{0pt}{\@title@color},%
+ \begin{tcolorbox}[blanker,borderline west={1mm}{0pt}{\TitleColor},%
left=20pt,top=2ex,bottom=1ex,before skip=0pt,after skip=0pt,no shadow]
{\authorfont\@author}\\\datefont\@date
\end{tcolorbox}
@@ -293,12 +368,13 @@
\hypersetup{pageanchor=true}
\null\vfill
\begin{tcolorbox}[title={\bfseries 作å“ä¿¡æ¯}]
- \arrowmark \textbf{标题:}\@title{}
- \ifdefempty\@subtitle{}{: \textit{\@subtitle}}\\
- \arrowmark \textbf{作者:}\@author\\
- \ifdefempty{\@typo}{}{\arrowmark \textbf{校对排版:}\@typo\\}
- \arrowmark \textbf{出å“时间:}\@date\\
- \arrowmark \textbf{总页数:}\pageref{LastPage}
+ \begin{itemize}
+ \item \textbf{标题:}\@title{}\ifdefempty\@subtitle{}{: \textit{\@subtitle}}
+ \item \textbf{作者:}\@author%
+ \ifdefempty{\@typo}{}{\item \textbf{校对排版:}\@typo}
+ \item \textbf{出å“时间:}\@date
+ \item \textbf{总页数:}\pageref{LastPage}
+ \end{itemize}
\end{tcolorbox}
\ifdefempty\@licenseinfo{}{%
\begin{tcolorbox}[title={\bfseries 许å¯è¯è¯´æ˜Ž}]
@@ -330,4 +406,21 @@
\setcounter{page}{1}
}
+% 修正é…色方案é‡å®šä¹‰é—®é¢˜
+\newcommand{\selectcolor}{
+ \hypersetup{
+ linkcolor = \LinkColor,
+ anchorcolor = \MiscColor,
+ urlcolor = \LinkColor,
+ citecolor = \MiscColor
+ }
+ \tcbset{
+ colback = \BoxBackground,
+ colbacktitle = \BoxTitleBackground,
+ colframe = \BoxFrame,
+ coltitle = \BoxTitleColor,
+ coltext = \BoxColor
+ }
+}
+
\endinput
diff --git a/macros/latex/contrib/tuda-ci/README.md b/macros/latex/contrib/tuda-ci/README.md
index 4c6724968f..edf2a42812 100644
--- a/macros/latex/contrib/tuda-ci/README.md
+++ b/macros/latex/contrib/tuda-ci/README.md
@@ -2,7 +2,7 @@
Copyright (C) Marei Peischl <marei@peitex.de>, 2018–2020
- tuda-ci 2020/09/08 v3.00
+ tuda-ci 2020/09/11 v3.01
***************************************************************************
@@ -201,4 +201,5 @@ leaflets | DEMO-TUDaLeaflet.tex | tudaleaflet.cls
- feature enhancement for more flexible usage and department specific requirements
- introduce department specific mode *mecheng*
- restructure internals (ptxcd module)
+ * v3.01 (2020-09-11) small bugfixes caused by the internal restructuring
diff --git a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaAnnouncement.pdf b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaAnnouncement.pdf
index 50213a8ac9..34bb10305f 100644
--- a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaAnnouncement.pdf
+++ b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaAnnouncement.pdf
Binary files differ
diff --git a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaBeamer.pdf b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaBeamer.pdf
index 68764d87f6..072e89f28f 100644
--- a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaBeamer.pdf
+++ b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaBeamer.pdf
Binary files differ
diff --git a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaExercise.pdf b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaExercise.pdf
index f3c103b9e4..245bfb3a71 100644
--- a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaExercise.pdf
+++ b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaExercise.pdf
Binary files differ
diff --git a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaLeaflet.pdf b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaLeaflet.pdf
index d69a00ec77..dd3649d595 100644
--- a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaLeaflet.pdf
+++ b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaLeaflet.pdf
Binary files differ
diff --git a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaLetter.pdf b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaLetter.pdf
index df674ecd0f..d7b14a8403 100644
--- a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaLetter.pdf
+++ b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaLetter.pdf
Binary files differ
diff --git a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaPhD.pdf b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaPhD.pdf
index 09ef857e5b..5883532298 100644
--- a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaPhD.pdf
+++ b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaPhD.pdf
Binary files differ
diff --git a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaPoster.pdf b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaPoster.pdf
index 99febac9d2..f4668e5ace 100644
--- a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaPoster.pdf
+++ b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaPoster.pdf
Binary files differ
diff --git a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaPub.pdf b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaPub.pdf
index 03643e3c5b..4d6e024c04 100644
--- a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaPub.pdf
+++ b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaPub.pdf
Binary files differ
diff --git a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaReport.pdf b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaReport.pdf
index dc0aa5e068..d9fd1be1b5 100644
--- a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaReport.pdf
+++ b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaReport.pdf
Binary files differ
diff --git a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaSciPoster.pdf b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaSciPoster.pdf
index 1bae4c4b70..69dd572d5a 100644
--- a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaSciPoster.pdf
+++ b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaSciPoster.pdf
Binary files differ
diff --git a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaThesis.pdf b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaThesis.pdf
index 573843d80c..7786c7783c 100644
--- a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaThesis.pdf
+++ b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaThesis.pdf
Binary files differ
diff --git a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaAnnouncement.tex b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaAnnouncement.tex
index 247edf87f7..5422de95e5 100644
--- a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaAnnouncement.tex
+++ b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaAnnouncement.tex
@@ -1,4 +1,4 @@
-%% This is file `DEMO-TUDaAnnouncement.tex' version 3.00 (2020/09/08),
+%% This is file `DEMO-TUDaAnnouncement.tex' version 3.01 (2020/09/11),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
diff --git a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaBeamer.tex b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaBeamer.tex
index bbbad88530..3dfe74b7d4 100644
--- a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaBeamer.tex
+++ b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaBeamer.tex
@@ -1,4 +1,4 @@
-%% This is file `DEMO-TUDaBeamer.tex' version 3.00 (2020/09/08),
+%% This is file `DEMO-TUDaBeamer.tex' version 3.01 (2020/09/11),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
diff --git a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaBibliography.bib b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaBibliography.bib
index 9f46ebad38..d2de3494d4 100644
--- a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaBibliography.bib
+++ b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaBibliography.bib
@@ -1,4 +1,4 @@
-%% This is file `DEMO-TUDaBibliography.bib' version 3.00 (2020/09/08),
+%% This is file `DEMO-TUDaBibliography.bib' version 3.01 (2020/09/11),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
diff --git a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaExercise.tex b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaExercise.tex
index 2792e0dbd1..0781cbf1aa 100644
--- a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaExercise.tex
+++ b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaExercise.tex
@@ -1,4 +1,4 @@
-%% This is file `DEMO-TUDaExercise.tex' version 3.00 (2020/09/08),
+%% This is file `DEMO-TUDaExercise.tex' version 3.01 (2020/09/11),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
diff --git a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaFromaddress.lco b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaFromaddress.lco
index cb1029b6c6..cc419fa4f2 100644
--- a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaFromaddress.lco
+++ b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaFromaddress.lco
@@ -1,4 +1,4 @@
-%% This is file `DEMO-TUDaFromaddress.lco' version 3.00 (2020/09/08),
+%% This is file `DEMO-TUDaFromaddress.lco' version 3.01 (2020/09/11),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
diff --git a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaLeaflet.tex b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaLeaflet.tex
index b78481ec43..d2241e94d1 100644
--- a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaLeaflet.tex
+++ b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaLeaflet.tex
@@ -1,4 +1,4 @@
-%% This is file `DEMO-TUDaLeaflet.tex' version 3.00 (2020/09/08),
+%% This is file `DEMO-TUDaLeaflet.tex' version 3.01 (2020/09/11),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
diff --git a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaLetter.tex b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaLetter.tex
index 4d96be1be3..ced11ca34d 100644
--- a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaLetter.tex
+++ b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaLetter.tex
@@ -1,4 +1,4 @@
-%% This is file `DEMO-TUDaLetter.tex' version 3.00 (2020/09/08),
+%% This is file `DEMO-TUDaLetter.tex' version 3.01 (2020/09/11),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
diff --git a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaPhD.tex b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaPhD.tex
index f25fc6101b..a8563699da 100644
--- a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaPhD.tex
+++ b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaPhD.tex
@@ -1,4 +1,4 @@
-%% This is file `DEMO-TUDaPhD.tex' version 3.00 (2020/09/08),
+%% This is file `DEMO-TUDaPhD.tex' version 3.01 (2020/09/11),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
diff --git a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaPoster.tex b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaPoster.tex
index 95e79a3cc8..a760f22930 100644
--- a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaPoster.tex
+++ b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaPoster.tex
@@ -1,4 +1,4 @@
-%% This is file `DEMO-TUDaPoster.tex' version 3.00 (2020/09/08),
+%% This is file `DEMO-TUDaPoster.tex' version 3.01 (2020/09/11),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
diff --git a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaPub.tex b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaPub.tex
index 5d05b18732..3d879db32b 100644
--- a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaPub.tex
+++ b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaPub.tex
@@ -1,4 +1,4 @@
-%% This is file `DEMO-TUDaPub.tex' version 3.00 (2020/09/08),
+%% This is file `DEMO-TUDaPub.tex' version 3.01 (2020/09/11),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
diff --git a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaReport.tex b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaReport.tex
index 68873f04fb..3c490ab572 100644
--- a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaReport.tex
+++ b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaReport.tex
@@ -1,4 +1,4 @@
-%% This is file `DEMO-TUDaReport.tex' version 3.00 (2020/09/08),
+%% This is file `DEMO-TUDaReport.tex' version 3.01 (2020/09/11),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
diff --git a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaSciPoster.tex b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaSciPoster.tex
index 9c7b9b5f4d..273dbe6e91 100644
--- a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaSciPoster.tex
+++ b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaSciPoster.tex
@@ -1,4 +1,4 @@
-%% This is file `DEMO-TUDaSciPoster.tex' version 3.00 (2020/09/08),
+%% This is file `DEMO-TUDaSciPoster.tex' version 3.01 (2020/09/11),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
diff --git a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaThesis.tex b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaThesis.tex
index 297b2bda39..bfc801e909 100644
--- a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaThesis.tex
+++ b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaThesis.tex
@@ -1,4 +1,4 @@
-%% This is file `DEMO-TUDaThesis.tex' version 3.00 (2020/09/08),
+%% This is file `DEMO-TUDaThesis.tex' version 3.01 (2020/09/11),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
diff --git a/macros/latex/contrib/tuda-ci/tex/beamercolorthemeTUDa.sty b/macros/latex/contrib/tuda-ci/tex/beamercolorthemeTUDa.sty
index 3436437533..c5588e0cb2 100644
--- a/macros/latex/contrib/tuda-ci/tex/beamercolorthemeTUDa.sty
+++ b/macros/latex/contrib/tuda-ci/tex/beamercolorthemeTUDa.sty
@@ -1,4 +1,4 @@
-%% This is file `beamercolorthemeTUDa.sty' version 3.00 (2020/09/08),
+%% This is file `beamercolorthemeTUDa.sty' version 3.01 (2020/09/11),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -26,8 +26,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.00}
-\def\filedate{2020/09/08}
+\def\fileversion{3.01}
+\def\filedate{2020/09/11}
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{beamercolorthemeTUDa}
[\filedate\space\fileversion]
diff --git a/macros/latex/contrib/tuda-ci/tex/beamerfontthemeTUDa.sty b/macros/latex/contrib/tuda-ci/tex/beamerfontthemeTUDa.sty
index ceb211eff7..13492005b7 100644
--- a/macros/latex/contrib/tuda-ci/tex/beamerfontthemeTUDa.sty
+++ b/macros/latex/contrib/tuda-ci/tex/beamerfontthemeTUDa.sty
@@ -1,4 +1,4 @@
-%% This is file `beamerfontthemeTUDa.sty' version 3.00 (2020/09/08),
+%% This is file `beamerfontthemeTUDa.sty' version 3.01 (2020/09/11),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -26,8 +26,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.00}
-\def\filedate{2020/09/08}
+\def\fileversion{3.01}
+\def\filedate{2020/09/11}
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{beamerfontthemeTUDa}
[\filedate\space\fileversion]
diff --git a/macros/latex/contrib/tuda-ci/tex/beamerinnerthemeTUDa.sty b/macros/latex/contrib/tuda-ci/tex/beamerinnerthemeTUDa.sty
index aa7404b629..fa6ded28cb 100644
--- a/macros/latex/contrib/tuda-ci/tex/beamerinnerthemeTUDa.sty
+++ b/macros/latex/contrib/tuda-ci/tex/beamerinnerthemeTUDa.sty
@@ -1,4 +1,4 @@
-%% This is file `beamerinnerthemeTUDa.sty' version 3.00 (2020/09/08),
+%% This is file `beamerinnerthemeTUDa.sty' version 3.01 (2020/09/11),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -26,8 +26,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.00}
-\def\filedate{2020/09/08}
+\def\fileversion{3.01}
+\def\filedate{2020/09/11}
\NeedsTeXFormat{LaTeX2e}
\ProvidesExplPackage{beamerinnerthemeTUDa}{\filedate}{\fileversion}{Inner~beamer~theme~of~tuda-ci}
diff --git a/macros/latex/contrib/tuda-ci/tex/beamerouterthemeTUDa.sty b/macros/latex/contrib/tuda-ci/tex/beamerouterthemeTUDa.sty
index 88558b2a85..1fa20b6bfb 100644
--- a/macros/latex/contrib/tuda-ci/tex/beamerouterthemeTUDa.sty
+++ b/macros/latex/contrib/tuda-ci/tex/beamerouterthemeTUDa.sty
@@ -1,4 +1,4 @@
-%% This is file `beamerouterthemeTUDa.sty' version 3.00 (2020/09/08),
+%% This is file `beamerouterthemeTUDa.sty' version 3.01 (2020/09/11),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -26,8 +26,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.00}
-\def\filedate{2020/09/08}
+\def\fileversion{3.01}
+\def\filedate{2020/09/11}
\NeedsTeXFormat{LaTeX2e}
\ProvidesExplPackage{beamerouterthemeTUDa}{\filedate}{\fileversion}{Outer~beamer~theme~of~tuda-ci}
diff --git a/macros/latex/contrib/tuda-ci/tex/beamerthemeTUDa-mecheng.sty b/macros/latex/contrib/tuda-ci/tex/beamerthemeTUDa-mecheng.sty
index 745b113ed7..03ceb27b48 100644
--- a/macros/latex/contrib/tuda-ci/tex/beamerthemeTUDa-mecheng.sty
+++ b/macros/latex/contrib/tuda-ci/tex/beamerthemeTUDa-mecheng.sty
@@ -1,4 +1,4 @@
-%% This is file `beamerthemeTUDa-mecheng.sty' version 3.00 (2020/09/08),
+%% This is file `beamerthemeTUDa-mecheng.sty' version 3.01 (2020/09/11),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -26,8 +26,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.00}
-\def\filedate{2020/09/08}
+\def\fileversion{3.01}
+\def\filedate{2020/09/11}
\RequirePackage{expl3}
\ProvidesExplPackage{beamerthemeTUDa-mecheng}{\filedate}{\fileversion}{specific tudabeamer configuration for the department of mechanical engineering}
diff --git a/macros/latex/contrib/tuda-ci/tex/beamerthemeTUDa.sty b/macros/latex/contrib/tuda-ci/tex/beamerthemeTUDa.sty
index 9f61b08382..733e7cece1 100644
--- a/macros/latex/contrib/tuda-ci/tex/beamerthemeTUDa.sty
+++ b/macros/latex/contrib/tuda-ci/tex/beamerthemeTUDa.sty
@@ -1,4 +1,4 @@
-%% This is file `beamerthemeTUDa.sty' version 3.00 (2020/09/08),
+%% This is file `beamerthemeTUDa.sty' version 3.01 (2020/09/11),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -26,8 +26,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.00}
-\def\filedate{2020/09/08}
+\def\fileversion{3.01}
+\def\filedate{2020/09/11}
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{beamerthemeTUDa}
[\filedate\space\fileversion\space beamer theme using the Corporate Design of TU Darmstadt]
diff --git a/macros/latex/contrib/tuda-ci/tex/tuda-a0paper.clo b/macros/latex/contrib/tuda-ci/tex/tuda-a0paper.clo
index 96dcf95d8d..fb8a684e41 100644
--- a/macros/latex/contrib/tuda-ci/tex/tuda-a0paper.clo
+++ b/macros/latex/contrib/tuda-ci/tex/tuda-a0paper.clo
@@ -1,4 +1,4 @@
-%% This is file `tuda-a0paper.clo' version 3.00 (2020/09/08),
+%% This is file `tuda-a0paper.clo' version 3.01 (2020/09/11),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -26,8 +26,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.00}
-\def\filedate{2020/09/08}
+\def\fileversion{3.01}
+\def\filedate{2020/09/11}
\ProvidesExplFile{tuda-a0paper.clo}{\filedate}{\fileversion}{tuda-ci~size~adjustments~for~a0paper}
\cs_set:Nn \ptxcd_setup_title_sizes: {
\cs_set:Nn \ptxcd_title_fontsize: {{125pt}{165pt}}
diff --git a/macros/latex/contrib/tuda-ci/tex/tuda-a1paper.clo b/macros/latex/contrib/tuda-ci/tex/tuda-a1paper.clo
index 9671c338ad..f3d3719396 100644
--- a/macros/latex/contrib/tuda-ci/tex/tuda-a1paper.clo
+++ b/macros/latex/contrib/tuda-ci/tex/tuda-a1paper.clo
@@ -1,4 +1,4 @@
-%% This is file `tuda-a1paper.clo' version 3.00 (2020/09/08),
+%% This is file `tuda-a1paper.clo' version 3.01 (2020/09/11),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -26,8 +26,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.00}
-\def\filedate{2020/09/08}
+\def\fileversion{3.01}
+\def\filedate{2020/09/11}
\ProvidesExplFile{tuda-a1paper.clo}{\filedate}{\fileversion}{tuda-ci~size~adjustments~for~a0paper}
\cs_set:Nn \ptxcd_setup_title_sizes: {
\cs_set:Nn \ptxcd_title_fontsize: {{86pt}{120pt}}
diff --git a/macros/latex/contrib/tuda-ci/tex/tuda-a2paper.clo b/macros/latex/contrib/tuda-ci/tex/tuda-a2paper.clo
index 649804ee10..7ca8f3f4ee 100644
--- a/macros/latex/contrib/tuda-ci/tex/tuda-a2paper.clo
+++ b/macros/latex/contrib/tuda-ci/tex/tuda-a2paper.clo
@@ -1,4 +1,4 @@
-%% This is file `tuda-a2paper.clo' version 3.00 (2020/09/08),
+%% This is file `tuda-a2paper.clo' version 3.01 (2020/09/11),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -26,8 +26,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.00}
-\def\filedate{2020/09/08}
+\def\fileversion{3.01}
+\def\filedate{2020/09/11}
\ProvidesExplFile{tuda-a2paper.clo}{\filedate}{\fileversion}{tuda-ci~size~adjustments~for~a0paper}
\cs_set:Nn \ptxcd_setup_title_sizes: {
\cs_set:Nn \ptxcd_title_fontsize: {{65pt}{82pt}}
diff --git a/macros/latex/contrib/tuda-ci/tex/tuda-a3paper.clo b/macros/latex/contrib/tuda-ci/tex/tuda-a3paper.clo
index 7eb16621da..b0219f5b9f 100644
--- a/macros/latex/contrib/tuda-ci/tex/tuda-a3paper.clo
+++ b/macros/latex/contrib/tuda-ci/tex/tuda-a3paper.clo
@@ -1,4 +1,4 @@
-%% This is file `tuda-a3paper.clo' version 3.00 (2020/09/08),
+%% This is file `tuda-a3paper.clo' version 3.01 (2020/09/11),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -26,8 +26,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.00}
-\def\filedate{2020/09/08}
+\def\fileversion{3.01}
+\def\filedate{2020/09/11}
\ProvidesExplFile{tuda-a3paper.clo}{\filedate}{\fileversion}{tuda-ci~size~adjustments~for~a3paper}
\cs_set:Nn \ptxcd_setup_title_sizes: {
\cs_set:Nn \ptxcd_title_fontsize: {{47pt}{61pt}}
diff --git a/macros/latex/contrib/tuda-ci/tex/tuda-a4paper.clo b/macros/latex/contrib/tuda-ci/tex/tuda-a4paper.clo
index 00f4d4e110..320b87ac6f 100644
--- a/macros/latex/contrib/tuda-ci/tex/tuda-a4paper.clo
+++ b/macros/latex/contrib/tuda-ci/tex/tuda-a4paper.clo
@@ -1,4 +1,4 @@
-%% This is file `tuda-a4paper.clo' version 3.00 (2020/09/08),
+%% This is file `tuda-a4paper.clo' version 3.01 (2020/09/11),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -26,8 +26,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.00}
-\def\filedate{2020/09/08}
+\def\fileversion{3.01}
+\def\filedate{2020/09/11}
\ProvidesExplFile{tuda-a4paper.clo}{\filedate}{\fileversion}{tuda-ci~size~adjustments~for~a4paper}
\cs_set:Nn \ptxcd_setup_title_sizes: {
\cs_set:Nn \ptxcd_title_fontsize: {{36pt}{47pt}}
diff --git a/macros/latex/contrib/tuda-ci/tex/tuda-a5paper.clo b/macros/latex/contrib/tuda-ci/tex/tuda-a5paper.clo
index 608441280b..d46e44a70c 100644
--- a/macros/latex/contrib/tuda-ci/tex/tuda-a5paper.clo
+++ b/macros/latex/contrib/tuda-ci/tex/tuda-a5paper.clo
@@ -1,4 +1,4 @@
-%% This is file `tuda-a5paper.clo' version 3.00 (2020/09/08),
+%% This is file `tuda-a5paper.clo' version 3.01 (2020/09/11),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -26,8 +26,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.00}
-\def\filedate{2020/09/08}
+\def\fileversion{3.01}
+\def\filedate{2020/09/11}
\ProvidesExplFile{tuda-a5paper.clo}{\filedate}{\fileversion}{tuda-ci~size~adjustments~for~a5paper}
\cs_set:Nn \ptxcd_setup_title_sizes: {
\cs_set:Nn \ptxcd_title_fontsize: {{22pt}{28pt}}
diff --git a/macros/latex/contrib/tuda-ci/tex/tuda-pgfplots.sty b/macros/latex/contrib/tuda-ci/tex/tuda-pgfplots.sty
index cf6400471b..c001aa8e7e 100644
--- a/macros/latex/contrib/tuda-ci/tex/tuda-pgfplots.sty
+++ b/macros/latex/contrib/tuda-ci/tex/tuda-pgfplots.sty
@@ -1,4 +1,4 @@
-%% This is file `tuda-pgfplots.sty' version 3.00 (2020/09/08),
+%% This is file `tuda-pgfplots.sty' version 3.01 (2020/09/11),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -26,8 +26,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.00}
-\def\filedate{2020/09/08}
+\def\fileversion{3.01}
+\def\filedate{2020/09/11}
% Special thanks to: Sebastian Schöps Institut Theorie Elektromagnetischer Felder (TEMF), TU Darmstadt
% The original version of this file has been inspired by the colorscheme in the Metropolis beamer theme by Matthias Vogelgesang https://github.com/matze/mtheme
\ProvidesPackage{tuda-pgfplots}[\filedate\space\fileversion\space tuda-ci pgfplots color schemes]
diff --git a/macros/latex/contrib/tuda-ci/tex/tudabeamer.cls b/macros/latex/contrib/tuda-ci/tex/tudabeamer.cls
index f7ba16e972..0acce3eecd 100644
--- a/macros/latex/contrib/tuda-ci/tex/tudabeamer.cls
+++ b/macros/latex/contrib/tuda-ci/tex/tudabeamer.cls
@@ -1,4 +1,4 @@
-%% This is file `tudabeamer.cls' version 3.00 (2020/09/08),
+%% This is file `tudabeamer.cls' version 3.01 (2020/09/11),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -26,8 +26,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.00}
-\def\filedate{2020/09/08}
+\def\fileversion{3.01}
+\def\filedate{2020/09/11}
\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{tudabeamer}
[\filedate\space\fileversion\space]
diff --git a/macros/latex/contrib/tuda-ci/tex/tudacolors.def b/macros/latex/contrib/tuda-ci/tex/tudacolors.def
index b54b0455c4..6aada4e67c 100644
--- a/macros/latex/contrib/tuda-ci/tex/tudacolors.def
+++ b/macros/latex/contrib/tuda-ci/tex/tudacolors.def
@@ -1,4 +1,4 @@
-%% This is file `tudacolors.def' version 3.00 (2020/09/08),
+%% This is file `tudacolors.def' version 3.01 (2020/09/11),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -26,8 +26,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.00}
-\def\filedate{2020/09/08}
+\def\fileversion{3.01}
+\def\filedate{2020/09/11}
\ProvidesFile{tudacolors.def}
[\filedate\space\fileversion\space Color definitions for tuda-ci]
diff --git a/macros/latex/contrib/tuda-ci/tex/tudacolors.sty b/macros/latex/contrib/tuda-ci/tex/tudacolors.sty
index 87094ee3c1..21cd4be4cb 100644
--- a/macros/latex/contrib/tuda-ci/tex/tudacolors.sty
+++ b/macros/latex/contrib/tuda-ci/tex/tudacolors.sty
@@ -1,4 +1,4 @@
-%% This is file `tudacolors.sty' version 3.00 (2020/09/08),
+%% This is file `tudacolors.sty' version 3.01 (2020/09/11),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -26,8 +26,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.00}
-\def\filedate{2020/09/08}
+\def\fileversion{3.01}
+\def\filedate{2020/09/11}
\NeedsTeXFormat{LaTeX2e}
\RequirePackage{expl3}
\ProvidesExplPackage{tudacolors}{\filedate}{\fileversion}{Color definition for TU Darmstadt's tuda-ci bundle}
diff --git a/macros/latex/contrib/tuda-ci/tex/tudaexercise.cls b/macros/latex/contrib/tuda-ci/tex/tudaexercise.cls
index 7f7be57b7f..ecfab8442d 100644
--- a/macros/latex/contrib/tuda-ci/tex/tudaexercise.cls
+++ b/macros/latex/contrib/tuda-ci/tex/tudaexercise.cls
@@ -1,4 +1,4 @@
-%% This is file `tudaexercise.cls' version 3.00 (2020/09/08),
+%% This is file `tudaexercise.cls' version 3.01 (2020/09/11),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -26,8 +26,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.00}
-\def\filedate{2020/09/08}
+\def\fileversion{3.01}
+\def\filedate{2020/09/11}
\NeedsTeXFormat{LaTeX2e}
\RequirePackage{expl3}
\ProvidesExplClass{tudaexercise}
@@ -51,6 +51,24 @@
\bool_new:N \g_ptxcd_smalltitle_bool
\str_new:N \g_ptxcd_department_str
+\RequirePackage{environ}
+
+\def\solution{\ptxcd_ex_solutionheader:}
+\def\endsolution{}
+
+\cs_new:Nn \ptxcd_setup_solution: {
+ \bool_if:NTF \l_ptxcd_ex_solution_bool {
+ \def\solution{\ptxcd_ex_solutionheader:}
+ \def\endsolution{}
+ }{
+ \RenewEnviron{solution}{
+ \if_false:
+ \BODY
+ \fi:
+ }
+ }
+}
+
%Message Declaration for option processing
\msg_new:nnn{tudaexercise} {titlepage-option-disabled} {
You~set~the~titlepage~option~to~#1.\\
diff --git a/macros/latex/contrib/tuda-ci/tex/tudafonts.sty b/macros/latex/contrib/tuda-ci/tex/tudafonts.sty
index c2baab0e0e..97a5495ae1 100644
--- a/macros/latex/contrib/tuda-ci/tex/tudafonts.sty
+++ b/macros/latex/contrib/tuda-ci/tex/tudafonts.sty
@@ -1,4 +1,4 @@
-%% This is file `tudafonts.sty' version 3.00 (2020/09/08),
+%% This is file `tudafonts.sty' version 3.01 (2020/09/11),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -26,8 +26,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.00}
-\def\filedate{2020/09/08}
+\def\fileversion{3.01}
+\def\filedate{2020/09/11}
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{tudafonts}
[\filedate\space\fileversion\space
diff --git a/macros/latex/contrib/tuda-ci/tex/tudaleaflet.cls b/macros/latex/contrib/tuda-ci/tex/tudaleaflet.cls
index 2b64756059..419463abd7 100644
--- a/macros/latex/contrib/tuda-ci/tex/tudaleaflet.cls
+++ b/macros/latex/contrib/tuda-ci/tex/tudaleaflet.cls
@@ -1,4 +1,4 @@
-%% This is file `tudaleaflet.cls' version 3.00 (2020/09/08),
+%% This is file `tudaleaflet.cls' version 3.01 (2020/09/11),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -26,8 +26,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.00}
-\def\filedate{2020/09/08}
+\def\fileversion{3.01}
+\def\filedate{2020/09/11}
\NeedsTeXFormat{LaTeX2e}
\RequirePackage{expl3}
\ProvidesExplPackage{tudaleaflet}{\filedate}{\fileversion}{Leaflets using the Corporate Design of TU Darmstadt}
diff --git a/macros/latex/contrib/tuda-ci/tex/tudaletter.cls b/macros/latex/contrib/tuda-ci/tex/tudaletter.cls
index 3d92b60f21..c38a133cd1 100644
--- a/macros/latex/contrib/tuda-ci/tex/tudaletter.cls
+++ b/macros/latex/contrib/tuda-ci/tex/tudaletter.cls
@@ -1,4 +1,4 @@
-%% This is file `tudaletter.cls' version 3.00 (2020/09/08),
+%% This is file `tudaletter.cls' version 3.01 (2020/09/11),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -26,8 +26,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.00}
-\def\filedate{2020/09/08}
+\def\fileversion{3.01}
+\def\filedate{2020/09/11}
\NeedsTeXFormat{LaTeX2e}
\RequirePackage{expl3}
\ProvidesExplClass{tudaletter}
diff --git a/macros/latex/contrib/tuda-ci/tex/tudalettersize10pt.clo b/macros/latex/contrib/tuda-ci/tex/tudalettersize10pt.clo
index 831defc19a..47137fc3eb 100644
--- a/macros/latex/contrib/tuda-ci/tex/tudalettersize10pt.clo
+++ b/macros/latex/contrib/tuda-ci/tex/tudalettersize10pt.clo
@@ -1,4 +1,4 @@
-%% This is file `tudalettersize10pt.clo' version 3.00 (2020/09/08),
+%% This is file `tudalettersize10pt.clo' version 3.01 (2020/09/11),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -26,8 +26,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.00}
-\def\filedate{2020/09/08}
+\def\fileversion{3.01}
+\def\filedate{2020/09/11}
%% This is file `tudalettersize10pt.clo' version 1.0 (2018/12/12),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
diff --git a/macros/latex/contrib/tuda-ci/tex/tudamecheng.cfg b/macros/latex/contrib/tuda-ci/tex/tudamecheng.cfg
index d3bf8ed08a..fd78f4d8da 100644
--- a/macros/latex/contrib/tuda-ci/tex/tudamecheng.cfg
+++ b/macros/latex/contrib/tuda-ci/tex/tudamecheng.cfg
@@ -1,4 +1,4 @@
-%% This is file `tudamecheng.cfg' version 3.00 (2020/09/08),
+%% This is file `tudamecheng.cfg' version 3.01 (2020/09/11),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -26,8 +26,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.00}
-\def\filedate{2020/09/08}
+\def\fileversion{3.01}
+\def\filedate{2020/09/11}
\RequirePackage{expl3}
\ProvidesExplFile{tudamecheng.cfg}
{\filedate}{\fileversion}{Special Features the department of mechanical engineering of Darmstadt's Corporate Design (tuda-ci)}
diff --git a/macros/latex/contrib/tuda-ci/tex/tudaposter.cls b/macros/latex/contrib/tuda-ci/tex/tudaposter.cls
index 81581aa1bf..6fced2f628 100644
--- a/macros/latex/contrib/tuda-ci/tex/tudaposter.cls
+++ b/macros/latex/contrib/tuda-ci/tex/tudaposter.cls
@@ -1,4 +1,4 @@
-%% This is file `tudaposter.cls' version 3.00 (2020/09/08),
+%% This is file `tudaposter.cls' version 3.01 (2020/09/11),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -26,8 +26,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.00}
-\def\filedate{2020/09/08}
+\def\fileversion{3.01}
+\def\filedate{2020/09/11}
\NeedsTeXFormat{LaTeX2e}
\RequirePackage{expl3}
\ProvidesExplPackage{tudaposter}{\filedate}{\fileversion}{Poster Layouts for the Corporate Design of TU Darmstadt}
diff --git a/macros/latex/contrib/tuda-ci/tex/tudapub.cls b/macros/latex/contrib/tuda-ci/tex/tudapub.cls
index f42c037891..40998a4887 100644
--- a/macros/latex/contrib/tuda-ci/tex/tudapub.cls
+++ b/macros/latex/contrib/tuda-ci/tex/tudapub.cls
@@ -1,4 +1,4 @@
-%% This is file `tudapub.cls' version 3.00 (2020/09/08),
+%% This is file `tudapub.cls' version 3.01 (2020/09/11),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -26,8 +26,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.00}
-\def\filedate{2020/09/08}
+\def\fileversion{3.01}
+\def\filedate{2020/09/11}
\NeedsTeXFormat{LaTeX2e}
\RequirePackage{expl3}
\ProvidesExplClass{tudapub}
diff --git a/macros/latex/contrib/tuda-ci/tex/tudarules.sty b/macros/latex/contrib/tuda-ci/tex/tudarules.sty
index 464e43bd6a..371b1e5ae9 100644
--- a/macros/latex/contrib/tuda-ci/tex/tudarules.sty
+++ b/macros/latex/contrib/tuda-ci/tex/tudarules.sty
@@ -1,4 +1,4 @@
-%% This is file `tudarules.sty' version 3.00 (2020/09/08),
+%% This is file `tudarules.sty' version 3.01 (2020/09/11),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -26,8 +26,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.00}
-\def\filedate{2020/09/08}
+\def\fileversion{3.01}
+\def\filedate{2020/09/11}
\NeedsTeXFormat{LaTeX2e}
\RequirePackage{expl3}
\ProvidesExplPackage{tudarules}{\filedate}{\fileversion}{Creation of colored bars for tuda-ci bundle}
diff --git a/macros/latex/contrib/tuda-ci/tex/tudasciposter.cls b/macros/latex/contrib/tuda-ci/tex/tudasciposter.cls
index 4308a4603a..c0a71c56d7 100644
--- a/macros/latex/contrib/tuda-ci/tex/tudasciposter.cls
+++ b/macros/latex/contrib/tuda-ci/tex/tudasciposter.cls
@@ -1,4 +1,4 @@
-%% This is file `tudasciposter.cls' version 3.00 (2020/09/08),
+%% This is file `tudasciposter.cls' version 3.01 (2020/09/11),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -26,8 +26,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.00}
-\def\filedate{2020/09/08}
+\def\fileversion{3.01}
+\def\filedate{2020/09/11}
\NeedsTeXFormat{LaTeX2e}
\RequirePackage{expl3}
\ProvidesExplPackage{tudasciposter}{\filedate}{\fileversion}{Scientific Poster Layout for TU Darmstadt}
diff --git a/macros/latex/contrib/tuda-ci/tex/tudasize9pt.clo b/macros/latex/contrib/tuda-ci/tex/tudasize9pt.clo
index 320499f748..2fecc8d907 100644
--- a/macros/latex/contrib/tuda-ci/tex/tudasize9pt.clo
+++ b/macros/latex/contrib/tuda-ci/tex/tudasize9pt.clo
@@ -1,4 +1,4 @@
-%% This is file `tudasize9pt.clo' version 3.00 (2020/09/08),
+%% This is file `tudasize9pt.clo' version 3.01 (2020/09/11),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -26,8 +26,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.00}
-\def\filedate{2020/09/08}
+\def\fileversion{3.01}
+\def\filedate{2020/09/11}
%% This is file `tudasize9pt.clo' version 1.0 (2018/12/12),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
diff --git a/macros/latex/contrib/tuda-ci/tex/tudathesis.cfg b/macros/latex/contrib/tuda-ci/tex/tudathesis.cfg
index cd4b4c647c..efbe4816dd 100644
--- a/macros/latex/contrib/tuda-ci/tex/tudathesis.cfg
+++ b/macros/latex/contrib/tuda-ci/tex/tudathesis.cfg
@@ -1,4 +1,4 @@
-%% This is file `tudathesis.cfg' version 3.00 (2020/09/08),
+%% This is file `tudathesis.cfg' version 3.01 (2020/09/11),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -26,8 +26,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.00}
-\def\filedate{2020/09/08}
+\def\fileversion{3.01}
+\def\filedate{2020/09/11}
\RequirePackage{expl3}
\ProvidesExplFile{tudathesis.cfg}
{\filedate}{\fileversion}{Special Features for publication type 'thesis' using TU Darmstadt's Corporate Design (tuda-ci)}
@@ -578,7 +578,7 @@ Bei einer Thesis des Fachbereichs Architektur entspricht die eingereichte elektr
\newcommand*{\AffidavitSignature}[1][Darmstadt]{
\par
\bigskip
- #1, \ptxcd_submissiondate\hfill\SignatureBox{\ptxcd_signature}\\\strut
+ #1,~ \ptxcd_submissiondate\hfill\SignatureBox{\ptxcd_signature}\\\strut
}
\newcommand*{\SignatureBox}[2][5cm]{\parbox[t]{#1}{\centering\rule{\linewidth}{.3pt}\\\makebox[0pt][c]{#2}}}