summaryrefslogtreecommitdiff
path: root/macros/latex
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2022-01-13 03:01:10 +0000
committerNorbert Preining <norbert@preining.info>2022-01-13 03:01:10 +0000
commitee3f9ca89b21a2174f7e427d9d48247b1912e130 (patch)
treef5d80e1343bcf96a0e16a7d4412526b8182b7525 /macros/latex
parent1f69e7b43c51a713b615b5ce4ed8adbcdaf9080e (diff)
CTAN sync 202201130301
Diffstat (limited to 'macros/latex')
-rw-r--r--macros/latex/contrib/easybook/easybook.dtx79
-rw-r--r--macros/latex/contrib/easybook/easybook.pdfbin593760 -> 595053 bytes
-rw-r--r--macros/latex/contrib/easybook/easybook.tex67
-rw-r--r--macros/latex/contrib/knowledge/README.md6
-rw-r--r--macros/latex/contrib/knowledge/knowledge-code.dtx12
-rw-r--r--macros/latex/contrib/knowledge/knowledge-example.tex77
-rw-r--r--macros/latex/contrib/knowledge/knowledge.pdfbin767239 -> 770976 bytes
-rw-r--r--macros/latex/contrib/knowledge/knowledge.tex158
-rw-r--r--macros/latex/contrib/l3backend/CHANGELOG.md8
-rw-r--r--macros/latex/contrib/l3backend/README.md4
-rw-r--r--macros/latex/contrib/l3backend/l3backend-basics.dtx16
-rw-r--r--macros/latex/contrib/l3backend/l3backend-box.dtx4
-rw-r--r--macros/latex/contrib/l3backend/l3backend-code.pdfbin897083 -> 896473 bytes
-rw-r--r--macros/latex/contrib/l3backend/l3backend-color.dtx11
-rw-r--r--macros/latex/contrib/l3backend/l3backend-draw.dtx4
-rw-r--r--macros/latex/contrib/l3backend/l3backend-graphics.dtx4
-rw-r--r--macros/latex/contrib/l3backend/l3backend-header.dtx4
-rw-r--r--macros/latex/contrib/l3backend/l3backend-opacity.dtx4
-rw-r--r--macros/latex/contrib/l3backend/l3backend-pdf.dtx4
-rw-r--r--macros/latex/contrib/l3backend/l3backend.ins4
-rw-r--r--macros/latex/contrib/l3kernel/CHANGELOG.md34
-rw-r--r--macros/latex/contrib/l3kernel/README.md4
-rw-r--r--macros/latex/contrib/l3kernel/expl3.dtx18
-rw-r--r--macros/latex/contrib/l3kernel/expl3.pdfbin623104 -> 622339 bytes
-rw-r--r--macros/latex/contrib/l3kernel/interface3.pdfbin1759054 -> 1764734 bytes
-rw-r--r--macros/latex/contrib/l3kernel/interface3.tex4
-rw-r--r--macros/latex/contrib/l3kernel/l3.ins9
-rw-r--r--macros/latex/contrib/l3kernel/l3basics.dtx4
-rw-r--r--macros/latex/contrib/l3kernel/l3bootstrap.dtx4
-rw-r--r--macros/latex/contrib/l3kernel/l3box.dtx4
-rw-r--r--macros/latex/contrib/l3kernel/l3candidates.dtx4
-rw-r--r--macros/latex/contrib/l3kernel/l3cctab.dtx4
-rw-r--r--macros/latex/contrib/l3kernel/l3clist.dtx24
-rw-r--r--macros/latex/contrib/l3kernel/l3coffins.dtx4
-rw-r--r--macros/latex/contrib/l3kernel/l3color.dtx197
-rw-r--r--macros/latex/contrib/l3kernel/l3debug.dtx4
-rw-r--r--macros/latex/contrib/l3kernel/l3deprecation.dtx382
-rw-r--r--macros/latex/contrib/l3kernel/l3doc.dtx35
-rw-r--r--macros/latex/contrib/l3kernel/l3docstrip.dtx4
-rw-r--r--macros/latex/contrib/l3kernel/l3docstrip.pdfbin151359 -> 151363 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3expan.dtx4
-rw-r--r--macros/latex/contrib/l3kernel/l3file.dtx4
-rw-r--r--macros/latex/contrib/l3kernel/l3flag.dtx4
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-assign.dtx4
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-aux.dtx4
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-basics.dtx4
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-convert.dtx4
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-expo.dtx4
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-extended.dtx4
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-logic.dtx4
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-parse.dtx4
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-random.dtx4
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-round.dtx4
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-traps.dtx4
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-trig.dtx4
-rw-r--r--macros/latex/contrib/l3kernel/l3fp.dtx4
-rw-r--r--macros/latex/contrib/l3kernel/l3fparray.dtx4
-rw-r--r--macros/latex/contrib/l3kernel/l3int.dtx4
-rw-r--r--macros/latex/contrib/l3kernel/l3intarray.dtx4
-rw-r--r--macros/latex/contrib/l3kernel/l3kernel-functions.dtx4
-rw-r--r--macros/latex/contrib/l3kernel/l3keys.dtx177
-rw-r--r--macros/latex/contrib/l3kernel/l3legacy.dtx4
-rw-r--r--macros/latex/contrib/l3kernel/l3luatex.dtx173
-rw-r--r--macros/latex/contrib/l3kernel/l3msg.dtx4
-rw-r--r--macros/latex/contrib/l3kernel/l3names.dtx4
-rw-r--r--macros/latex/contrib/l3kernel/l3news.pdfbin395907 -> 395879 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3news01.pdfbin122713 -> 122710 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3news02.pdfbin150672 -> 150676 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3news03.pdfbin148707 -> 148702 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3news04.pdfbin114588 -> 114588 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3news05.pdfbin112485 -> 112487 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3news06.pdfbin151572 -> 151573 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3news07.pdfbin128312 -> 128309 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3news08.pdfbin163455 -> 163454 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3news09.pdfbin250134 -> 250139 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3news10.pdfbin150289 -> 150279 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3news11.pdfbin170069 -> 170063 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3news12.pdfbin204992 -> 204990 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3pdf.dtx4
-rw-r--r--macros/latex/contrib/l3kernel/l3prefixes.csv1
-rw-r--r--macros/latex/contrib/l3kernel/l3prefixes.pdfbin80876 -> 80898 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3prg.dtx4
-rw-r--r--macros/latex/contrib/l3kernel/l3prop.dtx92
-rw-r--r--macros/latex/contrib/l3kernel/l3quark.dtx4
-rw-r--r--macros/latex/contrib/l3kernel/l3regex.dtx479
-rw-r--r--macros/latex/contrib/l3kernel/l3seq.dtx4
-rw-r--r--macros/latex/contrib/l3kernel/l3skip.dtx4
-rw-r--r--macros/latex/contrib/l3kernel/l3sort.dtx4
-rw-r--r--macros/latex/contrib/l3kernel/l3str-convert.dtx4
-rw-r--r--macros/latex/contrib/l3kernel/l3str.dtx4
-rw-r--r--macros/latex/contrib/l3kernel/l3styleguide.pdfbin295815 -> 295820 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3styleguide.tex4
-rw-r--r--macros/latex/contrib/l3kernel/l3syntax-changes.pdfbin242490 -> 242489 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3syntax-changes.tex4
-rw-r--r--macros/latex/contrib/l3kernel/l3sys.dtx25
-rw-r--r--macros/latex/contrib/l3kernel/l3term-glossary.pdfbin230879 -> 230882 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3term-glossary.tex4
-rw-r--r--macros/latex/contrib/l3kernel/l3text-case.dtx4
-rw-r--r--macros/latex/contrib/l3kernel/l3text-purify.dtx4
-rw-r--r--macros/latex/contrib/l3kernel/l3text.dtx4
-rw-r--r--macros/latex/contrib/l3kernel/l3tl-analysis.dtx4
-rw-r--r--macros/latex/contrib/l3kernel/l3tl.dtx9
-rw-r--r--macros/latex/contrib/l3kernel/l3token.dtx205
-rw-r--r--macros/latex/contrib/l3kernel/l3unicode.dtx4
-rw-r--r--macros/latex/contrib/l3kernel/source3.pdfbin6890688 -> 6919466 bytes
-rw-r--r--macros/latex/contrib/l3kernel/source3.tex4
-rw-r--r--macros/latex/contrib/l3packages/CHANGELOG.md9
-rw-r--r--macros/latex/contrib/l3packages/README.md8
-rw-r--r--macros/latex/contrib/l3packages/l3keys2e.dtx6
-rw-r--r--macros/latex/contrib/l3packages/l3keys2e.ins4
-rw-r--r--macros/latex/contrib/l3packages/l3keys2e.pdfbin368966 -> 368967 bytes
-rw-r--r--macros/latex/contrib/l3packages/xfp.dtx20
-rw-r--r--macros/latex/contrib/l3packages/xfp.ins4
-rw-r--r--macros/latex/contrib/l3packages/xfp.pdfbin331336 -> 331698 bytes
-rw-r--r--macros/latex/contrib/l3packages/xfrac.dtx6
-rw-r--r--macros/latex/contrib/l3packages/xfrac.ins4
-rw-r--r--macros/latex/contrib/l3packages/xfrac.pdfbin484489 -> 484490 bytes
-rw-r--r--macros/latex/contrib/l3packages/xparse.dtx6
-rw-r--r--macros/latex/contrib/l3packages/xparse.ins4
-rw-r--r--macros/latex/contrib/l3packages/xparse.pdfbin533911 -> 533919 bytes
-rw-r--r--macros/latex/contrib/l3packages/xtemplate.dtx6
-rw-r--r--macros/latex/contrib/l3packages/xtemplate.ins4
-rw-r--r--macros/latex/contrib/l3packages/xtemplate.pdfbin439713 -> 439710 bytes
-rw-r--r--macros/latex/contrib/sillypage/sillywalk-map.pngbin6039 -> 6060 bytes
-rw-r--r--macros/latex/contrib/siunitx/CHANGELOG.md846
-rw-r--r--macros/latex/contrib/siunitx/siunitx-code.pdfbin608193 -> 607583 bytes
-rw-r--r--macros/latex/contrib/siunitx/siunitx-complex.dtx2
-rw-r--r--macros/latex/contrib/siunitx/siunitx-number.dtx2
-rw-r--r--macros/latex/contrib/siunitx/siunitx-table.dtx29
-rw-r--r--macros/latex/contrib/siunitx/siunitx.dtx2
-rw-r--r--macros/latex/contrib/siunitx/siunitx.pdfbin638333 -> 638333 bytes
-rw-r--r--macros/latex/contrib/tuda-ci/README.md8
-rw-r--r--macros/latex/contrib/tuda-ci/doc/DEMO-TUDaAnnouncement.pdfbin552104 -> 551947 bytes
-rw-r--r--macros/latex/contrib/tuda-ci/doc/DEMO-TUDaBeamer.pdfbin598747 -> 598742 bytes
-rw-r--r--macros/latex/contrib/tuda-ci/doc/DEMO-TUDaExercise.pdfbin571494 -> 571482 bytes
-rw-r--r--macros/latex/contrib/tuda-ci/doc/DEMO-TUDaLeaflet.pdfbin559865 -> 559870 bytes
-rw-r--r--macros/latex/contrib/tuda-ci/doc/DEMO-TUDaLetter.pdfbin566760 -> 567142 bytes
-rw-r--r--macros/latex/contrib/tuda-ci/doc/DEMO-TUDaPhD.pdfbin634102 -> 634181 bytes
-rw-r--r--macros/latex/contrib/tuda-ci/doc/DEMO-TUDaPoster.pdfbin536024 -> 536118 bytes
-rw-r--r--macros/latex/contrib/tuda-ci/doc/DEMO-TUDaPub.pdfbin661840 -> 661929 bytes
-rw-r--r--macros/latex/contrib/tuda-ci/doc/DEMO-TUDaReport.pdfbin527277 -> 527117 bytes
-rw-r--r--macros/latex/contrib/tuda-ci/doc/DEMO-TUDaSciPoster.pdfbin563525 -> 563531 bytes
-rw-r--r--macros/latex/contrib/tuda-ci/doc/DEMO-TUDaThesis.pdfbin627457 -> 627484 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.tex6
-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.clo36
-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.cls35
-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.cls6
-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.cls31
-rw-r--r--macros/latex/contrib/tuda-ci/tex/tudalettersize10pt.clo2
-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.cls62
-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.clo11
-rw-r--r--macros/latex/contrib/tuda-ci/tex/tudathesis.cfg6
184 files changed, 2092 insertions, 1743 deletions
diff --git a/macros/latex/contrib/easybook/easybook.dtx b/macros/latex/contrib/easybook/easybook.dtx
index 7f0054c846..a162847fa6 100644
--- a/macros/latex/contrib/easybook/easybook.dtx
+++ b/macros/latex/contrib/easybook/easybook.dtx
@@ -15,7 +15,7 @@
%<*class>
\NeedsTeXFormat{LaTeX2e}[2020/10/01]
\RequirePackage{l3keys2e}
-\ProvidesExplClass{easybook}{2022/01/08}{1.45}
+\ProvidesExplClass{easybook}{2022/01/12}{1.46}
{Typeset Chinese theses or books}
\bool_set_false:N \l__eb_compile_draft_bool
@@ -306,7 +306,7 @@
%<*package>
\NeedsTeXFormat{LaTeX2e}[2020/10/01]
\RequirePackage{l3keys2e,etoolbox}
-\ProvidesExplPackage{easybase}{2022/01/08}{1.45}
+\ProvidesExplPackage{easybase}{2022/01/12}{1.46}
{Typeset Chinese theses or books}
\cs_generate_variant:Nn \dim_set:Nn { NV }
@@ -804,6 +804,7 @@
}
{ \exp_not:N \c@footnote }
}
+ \cs_set_eq:NN \thedownfootnote \thefootnote
}
\cs_new_protected:Npn \eb_fnmate_short_label_set:Nn #1#2
{
@@ -819,6 +820,7 @@
}
}
\cs_set_eq:NN #1 \l__eb_fnmate_short_tokens_tl
+ \cs_set_eq:NN \thedownfootnote \thefootnote
}
\cs_new_protected:Npn \eb_footnote_value_handle:n #1
{
@@ -895,9 +897,9 @@
fnmark-num .choices:nn =
{ plain,pifont,pifont*,pifont-sans,pifont-sans* }
- { \eb_fnmate_normal_label_set:Nn \the@up@footnote {#1} },
+ { \eb_fnmate_normal_label_set:Nn \theupfootnote {#1} },
fnmark-num .value_required:n = true,
- fnmark-num/unknown .code:n = \eb_fnmate_short_label_set:Nn \the@up@footnote {#1},
+ fnmark-num/unknown .code:n = \eb_fnmate_short_label_set:Nn \theupfootnote {#1},
fntext-num .choices:nn =
{ plain,pifont,pifont*,pifont-sans,pifont-sans* }
{ \eb_fnmate_normal_label_set:Nn \thefootnote {#1} },
@@ -1048,9 +1050,9 @@
{ \@xfootnote }
{
\exp_args:NV \stepcounter \@mpfn
- \eb_current_label:n { @up@footnote }
+ \eb_current_label:n { upfootnote }
\protected@xdef\@thefnmark{\thempfn}
- \protected@xdef\@the@up@fnmark{\the@up@footnote}
+ \protected@xdef\@the@up@fnmark{\theupfootnote}
\@footnotemark
\@footnotetext
}
@@ -1061,7 +1063,7 @@
{ \@xfootnotemark }
{
\stepcounter{footnote}
- \protected@xdef\@the@up@fnmark{\the@up@footnote}
+ \protected@xdef\@the@up@fnmark{\theupfootnote}
\@footnotemark
}
}
@@ -1077,7 +1079,7 @@
{
\group_begin:
\setcounter{footnote}{#1}
- \unrestored@protected@xdef\@the@up@fnmark{\the@up@footnote}
+ \unrestored@protected@xdef\@the@up@fnmark{\theupfootnote}
\group_end:
\H@@footnotemark
}
@@ -1096,6 +1098,9 @@
]
}
}
+\bool_set_true:N \l__eb_normal_footnote_bool
+\bool_new:N \l__eb_fnmate_format_match_bool
+\bool_new:N \l__eb_fncust_format_match_bool
\cs_new_protected:Npn \eb_fnmate_format_initial:
{
\bool_if:NTF \l__eb_normal_footnote_bool
@@ -1110,34 +1115,29 @@
\bool_if:NF \l__eb_fnmate_format_match_bool { \spbset{spcmd = { }} }
\tl_use:N \l__eb_subfont_footnote_tl
}
-\bool_set_true:N \l__eb_normal_footnote_bool
-\bool_new:N \l__eb_fnmate_format_match_bool
-\bool_new:N \l__eb_fncust_format_match_bool
-\cs_set:Npn \@makefnmark
+\cs_new_protected:Npn \defupfntmark #1
+ { \cs_set:Npn \@makefnmark { \hbox:n {#1} } }
+\cs_new_protected:Npn \defdownfntmark #1
+ { \cs_set:Npn \eb@makefnmark { \hbox:n {#1} } }
+\defupfntmark
{
- \hbox:n
- {
- \eb_fnmate_format_initial:
- \tl_if_eq:NnTF \@mpfn { footnote }
- { \eb@fnmate@super{\@the@up@fnmark} }
- { \eb@fnmate@super{\@thefnmark} }
- }
+ \eb_fnmate_format_initial:
+ \tl_if_eq:NnTF \@mpfn { footnote }
+ { \eb@fnmate@super{\@the@up@fnmark} }
+ { \eb@fnmate@super{\@thefnmark} }
}
-\cs_new:Npn \eb@makefnmark
+\defdownfntmark
{
- \hbox:n
+ \eb_fnmate_format_initial:
+ \tl_if_eq:NnT \l__eb_fntext_position_tl { super }
+ { \eb@fnmate@super* }
{
- \eb_fnmate_format_initial:
- \tl_if_eq:NnT \l__eb_fntext_position_tl { super }
- { \eb@fnmate@super* }
- {
- \tl_use:N \l__eb_fntext_before_tl
- \bgroup
- \l__eb_fnmate_format_tl{\@thefnmark}
- \egroup
- }
- \tl_use:N \l__eb_fntext_after_tl
+ \tl_use:N \l__eb_fntext_before_tl
+ \bgroup
+ \l__eb_fnmate_format_tl{\@thefnmark}
+ \egroup
}
+ \tl_use:N \l__eb_fntext_after_tl
}
\tl_clear:N \@thefnmark
@@ -1437,7 +1437,10 @@
\def\CTEX@thechapter{\CTEX@bichapter@number}
\def\CTEX@postchapter{\CTEX@postbichapter}
\eb@before@addbitoc@hook
- \addcontentsline{tec}{#1}{\use:c { CTEX@#1@tocline }{#1}{#2}}
+ \tl_if_eq:NnTF \g__eb_bilist_permute_value_tl { mix }
+ { \addcontentsline{toc}{#1} }
+ { \addcontentsline{tec}{#1} }
+ { \use:c { CTEX@#1@tocline }{#1}{#2} }
\group_end:
}
\eb_seq_map_inline:nn
@@ -1515,7 +1518,8 @@
multoc .default:n = 2,
multoc .initial:n = 1,
columns .meta:n = { multoc = #1 },
- title .code:n = \eb_assign_toc_title:n {#1}
+ title .code:n = \eb_assign_toc_title:n {#1},
+ bilist .tl_gset:N = \g__eb_bilist_permute_value_tl
}
\bool_if:NTF \l__eb_class_mode_book_bool
{ \keys_define:nn { } { eb/listoc .inherit:n = ctex/chapter } }
@@ -1842,8 +1846,8 @@
\SetEnumitemValue{font}{sf}{\color{ctex@emph}\normalfont\sffamily}
\SetEnumitemValue{ref}{enumii}{\arabic{enumi}.\alph*}
\SetEnumitemValue{ref}{enumiii}{\arabic{enumi}.\alph{enumii}.\roman*}
-\setlist{nosep,align = left,mode = unboxed}
-\setlist*{leftmargin = *,labelsep = 0.5em,listparindent = 2em}
+\setlist{nosep,labelsep = 0.5em,listparindent = 2em}
+\setlist[1]{leftmargin = *,align = left,mode = unboxed}
\setlist[itemize,1]{label = bullet}
\setlist[itemize,2]{label = endash}
\setlist[itemize,3]{label = asterisk}
@@ -2064,6 +2068,7 @@
number-mode = match,
range-phrase = \ensuremath{\sim},
range-units = single,
+ print-unity-mantissa = false,
table-alignment-mode = none,
group-digits = none
}
@@ -2389,7 +2394,6 @@
lstlistlistingname = 代码索引,
lstlistingname = 代码
}
- \labelformat{equation}{式(#1)}
\labelformat{section}{节 #1}
\labelformat{subsection}{小节 #1}
}
@@ -2400,13 +2404,12 @@
lstlistlistingname = List~of~Codes,
lstlistingname = Code
}
- \labelformat{equation}{Equation~(#1)}
\labelformat{section}{Section~#1}
\labelformat{subsection}{Subsection~#1}
}
%</package>
%<*tcolorbox>
-\ProvidesExplFile{eb-tcolorbox.cfg}{2022/01/08}{1.45}
+\ProvidesExplFile{eb-tcolorbox.cfg}{2022/01/12}{1.46}
{Customization of tcolorbox for easybook}
\cs_set_protected:Npn \addtotcbstyle #1#2
diff --git a/macros/latex/contrib/easybook/easybook.pdf b/macros/latex/contrib/easybook/easybook.pdf
index 97c5f3df65..dcc34fda60 100644
--- a/macros/latex/contrib/easybook/easybook.pdf
+++ b/macros/latex/contrib/easybook/easybook.pdf
Binary files differ
diff --git a/macros/latex/contrib/easybook/easybook.tex b/macros/latex/contrib/easybook/easybook.tex
index f54b553500..f611890603 100644
--- a/macros/latex/contrib/easybook/easybook.tex
+++ b/macros/latex/contrib/easybook/easybook.tex
@@ -8,11 +8,11 @@
}
\definecolorscheme{blue}
{
- cs => purple,
- option => black!10!teal,
+ cs => Plum,
+ option => PineGreen,
cnltx => Blue,
link => OrangeRed,
- module => violet,
+ module => Brown,
meta => black
}
\setcnltx
@@ -20,8 +20,8 @@
name = easybook,
color-scheme = blue,
title = EASYBOOK 使用手册,
- version = v1.45,
- date = 2022/01/08,
+ version = v1.46,
+ date = 2022/01/12,
authors = 瞿毅,
info = 排版简体中文学位论文和书籍,
email = q1jx@foxmail.com,
@@ -44,8 +44,10 @@
\addtokomafont{subsubsection}{\normalfont\sffamily}
\DeclareTOCStyleEntry[entryformat = \sffamily]{default}{section}
\geometry{margin = 1in,marginparwidth = 0.65in}
-\setlist{nosep,labelindent = \parindent,leftmargin = *,labelsep = 0.5em}
-\setlist[itemize,1]{label = \small\color{Blue}\textbullet}
+\SetEnumitemValue{label}{smallbullet}{\small\color{Blue}\textbullet}
+\setlist{nosep,topsep = \smallskipamount,labelsep = 0.5em}
+\setlist[1]{labelindent = \parindent}
+\setlist[itemize,1]{label = smallbullet,leftmargin = *}
\setcounter{tocdepth}{2}
\SetTblrInner{hline{1,Z} = {0.8pt,Blue}}
@@ -74,7 +76,7 @@
\newcommand{#2}[1]
{\code{\textcolor{argument}{#3\textnormal{#1{##1}}#4}}}
}
-\newarg[\color{violet}\code]\Carg{\{}{\}}
+\newarg[\color{Plum}\code]\Carg{\{}{\}}
\newsplitarg{\splitoarg}{[}{]}
\newsplitarg{\splitdarg}{(}{)}
\newsplitarg{\splitmarg}{\{}{\}}
@@ -100,8 +102,8 @@
\setlength{\itemindent}{-1em}
\setlength{\labelsep}{0em}
\setlength{\listparindent}{2em}
- \setlength{\topsep}{0.75ex plus .1ex}
- \setlength{\itemsep}{0.75ex plus .1ex}
+ \setlength{\topsep}{\smallskipamount}
+ \setlength{\itemsep}{\smallskipamount}
\setlength{\partopsep}{0ex}
\setlength{\parsep}{0ex}
}
@@ -323,7 +325,9 @@
\keyval-{multoc}{整数}\Default{2}
与 \module*{style} 模块的 \option{multoc} 选项具有相同的效果,但是具有优先性且可单独设置不同类型目录的排版栏数。\meta{整数} 为目录栏数,不指定栏数值则默认为双栏。
\kvsplit{title}{中文目录标题,英文目录标题}\newline
- 用于更改目录的标题,标题之间用一个英文逗号分开,也可以只有一部分,表示中文目录的标题。当设置了英文目录标题时,英文目录标题将会自动加入文档主目录 \cs*{tableofcontents}\parg{} 命令。
+ 用于更改目录的标题。标题之间用一个英文逗号分开,也可以只有一部分,表示中文目录的标题。当设置了英文目录标题时,英文目录标题将会自动加入文档主目录 \cs*{tableofcontents}\parg{} 命令。
+ \keychoice{bilist}{mix,new}\Default{new}
+ 确定文档主目录中双语标题列表的输出排列方式。选项 \code{mix} 使每个英文标题条目在中文目录中跟随对应的中文标题输出,\code{new} 则新建一个英文目录输出英文标题。
\keyval-{format}{目录标题格式}
在 \cls*{book} 模式且 \option{chapter} 选项开启或者 \cls*{article} 模式的情况下,\option{format} 用于设置目录标题的格式。
\keyval-{aftertitle}{目录标题格式}\Default
@@ -654,20 +658,24 @@
\tcolorboxenvironment{caixiang}{tc-theorem}
\end{ctexexam}
\command{deftheorem}[\marg{环境名}\oarg{英文标题}\marg{中文标题}\darg{盒子风格}\oarg{键值列表}]
- 定理环境定义命令 \cs{deftheorem} 更加便捷,\meta{键值列表} 中支持的选项与命令 \cs{declaretheorem} 完全相同。但它与后者命令有以下几个区别:
- \begin{itemize}
+ 定理环境定义命令 \cs{deftheorem} 更加便捷,\meta{键值列表} 中支持的选项与命令 \cs{declaretheorem} 完全相同。但它与 \cs{declaretheorem} 命令有以下几点区别:
+\end{commands}
+
+\begin{itemize}
\item 可以重复定义已存在的定理环境而不会报错。
- \item 中英文模式下定理标题自动切换。针对中文定理标题的特点将 \meta{中文标题} 设计为必选参数,\meta{英文标题} 则默认为首字母大写的 \meta{环境名}。
\item 自动定义交叉引用的格式,标签引用前缀为相应定理名。
- \item 定理盒子选项 \option{tcbwrap} 仍然生效,\meta{盒子风格} 可以使用 \cs{deftcbstyle} 命令创建。
\item 新建定理环境默认使用的 \meta{定理样式} 为 \code{fancy},而不是 \pkg*{thmtools} 的默认样式。
- \end{itemize}
+ \item 定理盒子选项 \option{tcbwrap} 仍然生效,\meta{盒子风格} 可以使用 \cs{deftcbstyle} 命令创建。
+ \item 定理标题根据语言自动切换,根据中文定理标题的特点将 \meta{中文标题} 设计为必选参数。
+\end{itemize}
- 下面新建一个与\ref{exam:new theorem env} 相同的定理环境猜想,并使用 \cs{addtotcbstyle} 命令调整 \option{tcbwrap} 开启时默认的盒子风格。它的第一个参数为 \code{tc-theorem},关于命令的介绍在\ref{subsec:box}。
- \begin{ctexexam}
+下面新建一个与\ref{exam:new theorem env} 相同的定理环境猜想,并使用 \cs{addtotcbstyle} 命令调整 \option{tcbwrap} 开启时默认的盒子风格。它的第一个参数为 \code{tc-theorem},关于命令的介绍在\ref{subsec:box}。
+\begin{ctexexam}
\deftheorem{caixiang}{猜想}[style = mythm]
\addtotcbstyle{tc-theorem}{colback = GreenYellow}
- \end{ctexexam}
+\end{ctexexam}
+
+\begin{commands}
\command{declaretheoremstyle}[\oarg{键值列表1}\marg{定理样式}\oarg{键值列表2}]
定理样式声明命令,键值列表支持 \pkg*{thmtools} 宏包中原命令以及 \cs{declaretheorem} 的所有选项。可选参数的 \meta{键值列表1} 与 \meta{键值列表2} 等效,用法与原来的同名命令一致。下面定义一个名为 \code{mythm} 的定理样式用于 \cs{declaretheorem} 的 \option*{style} 选项:
\begin{ctexexam}[labelref = exam:new theorem sty]
@@ -814,6 +822,20 @@
fnmate-form = \tiny\Circled
}
\end{ctexexam}
+ \begin{commands}
+ \command{defupfntmark}[\marg{脚注正文标记格式}]
+ 定义脚注正文标记的格式,与正文标记编号命令 \cs{theupfootnote} 配合使用。
+ \command{defdownfntmark}[\marg{脚注内容标记格式}]
+ 定义脚注内容标记的格式,与内容标记编号命令 \cs{thedownfootnote} 配合使用。
+ \command{theupfootnote}
+ 保存正文标记编号类型选项 \option{fnmark-num} 指定的正文标记。
+ \command{thedownfootnote}
+ 保存内容标记编号类型选项 \option{fnmtext-num} 指定的内容标记。
+ \end{commands}
+ \begin{ctexexam}
+ \defupfntmark{\super[vmove = 2pt]{\theupfootnote}}
+ \defdownfntmark{\textcolor{blue}{\thedownfootnote}}
+ \end{ctexexam}
\keychoice{fncust-form}{format code,match}\Default
单独设定自定义脚注标记的格式,选项 \code{match} 可以匹配 \option*{spcmd} 全局的值。自定义脚注的命令与用法可以见下方的介绍。
\begin{commands}\noitemsep
@@ -990,7 +1012,7 @@
{
colspec = @{}*{6}{c}@{},
hline{3} = {0.5pt,Blue},
- row{1,3} = {font = \sffamily,,belowsep = 0pt},
+ row{1,3} = {font = \sffamily,belowsep = 0pt},
row{2,4} = {cmd = \env}
}{
定理 & 定义 & 引理 & 推论 & 性质 & 例 \\
@@ -1247,6 +1269,11 @@
\appendix
\begin{changelog}[title = 更新日志]
\shortversion{v = 1.45,date = 2022/01/08,changes = 经过前期各模块的功能调整和错误修复,稳定版本正式发布。}
+ \begin{version}[v = 1.46,date = 2022/01/12]
+ \added
+ \item 增加定义脚注正文和内容标记格式的命令 \cs{defupfntmark} 和 \cs{defdownfntmark}。
+ \item 新增文档主目录中双语标题列表的输出排列方式选项 \option{bilist}。
+ \end{version}
\end{changelog}
\nocite{*}
diff --git a/macros/latex/contrib/knowledge/README.md b/macros/latex/contrib/knowledge/README.md
index aeb2b6ed6d..93d3a6adb0 100644
--- a/macros/latex/contrib/knowledge/README.md
+++ b/macros/latex/contrib/knowledge/README.md
@@ -3,11 +3,11 @@ This directory contains the package
name: knowledge
license: LaTeX Project Public License version 1.2 or above
- version: v1.26
- date: 2021/12/20
+ version: v1.27
+ date: 2022/01/12
author: Thomas Colcombet
mail: thomas.colcombet@irif.fr
- web: https://www.irif.fr/~colcombe/knowledge_en.html
+ web: https://ctan.org/pkg/knowledge
### Purpose:
The knowledge package for LaTeX offers a systematic way to handle
diff --git a/macros/latex/contrib/knowledge/knowledge-code.dtx b/macros/latex/contrib/knowledge/knowledge-code.dtx
index 3b9b18e8a2..0f66f049d1 100644
--- a/macros/latex/contrib/knowledge/knowledge-code.dtx
+++ b/macros/latex/contrib/knowledge/knowledge-code.dtx
@@ -23,7 +23,7 @@
%
% \iffalse
%<head>\usepackage{expl3}
-%<head>\ProvidesExplPackage{knowledge}{2021/12/20}{1.26}{}
+%<head>\ProvidesExplPackage{knowledge}{2022/01/12}{1.27}{}
%<*driver>
\def\knowledgecode{active}
\input{knowledge.tex}
@@ -59,6 +59,7 @@
% \changes{1.24}{2020/09/22}{silent option} %
% \changes{1.25}{2021/03/31}{bug correction} %
% \changes{1.26}{2021/12/20}{enhanced math+other functionalities+extra options} %
+% \changes{1.27}{2022/01/12}{doc changes} %
% \GetFileInfo{knowledge.sty} %
% \DoNotIndex{}
%
@@ -78,11 +79,11 @@ This directory contains the package
name: knowledge
license: LaTeX Project Public License version 1.2 or above
- version: v1.26
- date: 2021/12/20
+ version: v1.27
+ date: 2022/01/12
author: Thomas Colcombet
mail: thomas.colcombet@irif.fr
- web: https://www.irif.fr/~colcombe/knowledge_en.html
+ web: https://ctan.org/pkg/knowledge
### Purpose:
The knowledge package for LaTeX offers a systematic way to handle
@@ -575,7 +576,7 @@ This directory contains the package
\cs_new:Nn \knowledge_set_anchor_point_shape:n{
\tl_set:Nn\l_tmpa_tl{#1}
\tl_case:NnTF\l_tmpa_tl{
- \knowledge_APshape_name_corner_t
+ \knowledge_APshape_name_corner_tl
{\tl_set:Nn\knowledge_option_anchor_point_shape_tl{\knowledge_anchor_point_corner:n{0.5}}}
\knowledge_APshape_name_tinycorner_tl
{\tl_set:Nn\knowledge_option_anchor_point_shape_tl{\knowledge_anchor_point_corner:n{0.1}}}
@@ -3470,6 +3471,7 @@ This directory contains the package
\bool_if:NT\kl_invisible_bool
{\tl_gclear:N\knowledge_display_code_tl}
}
+\def\ensuretext#1{\ensuremath{\text{#1}}}
% \end{macrocode}
% \begin{macrocode}
\cs_new:Nn\knowledge_kl_compute_code_xcolor:{
diff --git a/macros/latex/contrib/knowledge/knowledge-example.tex b/macros/latex/contrib/knowledge/knowledge-example.tex
index 3c050812be..7d86805131 100644
--- a/macros/latex/contrib/knowledge/knowledge-example.tex
+++ b/macros/latex/contrib/knowledge/knowledge-example.tex
@@ -1,10 +1,22 @@
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
+% If the output is a PDF (avoids some display problems, in particular in arXiv).
+\pdfoutput = 1
+
+%
+% This is the file
%
-% The documentation of the _knowledge package_ can be found at:
+% knowledge-example.tex
%
-% http://www.irif.fr/~colcombe/knowledge_en.html
+% and is part of the LaTeX package _knowledge_.
+% It can be used as a starting point for creating a document using the _knowledge_ package.
+%
+% The documentation of the _knowledge_ package can be found:
+% - in your tex distribution, using the command
+% texdoc knowledge
+% - or at the address
+%. https://ctan.org/pkg/knowledge
%
%
% Loading other packages before knowledge activates features.
@@ -24,7 +36,7 @@
% well as agives other pieces of information. It should always
% be used but when the paper is ready.
%
-\usepackage[scope]{knowledge} % default
+\usepackage{knowledge} % default
%\usepackage[scope,electronic]{knowledge} % final version to be read electronically
%\usepackage[scope,paper]{knowledge} % final version in black and white for printing
%
@@ -40,29 +52,50 @@
% It is convenient now to provide a list of \knowledge in the preamble
% (or in an external file) according to the following syntax:
%
+% \knowledge{directives}
+% | main knowledge
+% | synonym_1
+% | synonym_2
+% | ...
+%
+% or using the older syntax (which should be used in macros)
+%
% \knowledge{knowledge text}[synonym 1|synonym 2|...]{directives}
%
% The most common directive in a science paper is 'notion': knowledges that
% are used in the body with \intro and \kl commands/""...""" and "..." notatation:
-\knowledge{anchor point}[anchor points|Anchor points]{notion}
-\knowledge{diagnose file}{notion}
-\knowledge{knowledge package}{notion,typewriter}
-\knowledge{paper mode}{notion}
-\knowledge{electronic mode}{notion}
-\knowledge{composition mode}{notion}
+\knowledge{notion}
+ | anchor point
+ | anchor points
+ | Anchor points
+\knowledge{notion}
+ | diagnose file
+\knowledge{notion,typewriter}
+ | knowledge package
+\knowledge{notion}
+ | paper mode
+\knowledge{notion}
+ | electronic mode
+\knowledge{notion}
+ | composition mode
% the synonym directive can replace the [...] syntax
-\knowledge{knowledge}{notion}
-\knowledge{knowledges}{synonym}
-\knowledge{Knowledges}{synonym}
+\knowledge{notion}
+ | knowledge
+ | knowledges
+ | Knowledges
% Some other configurations are possible, such as external url's or replacement texts:
-\knowledge{LaTeX}[latex|LATEX|Latex]{url={https://fr.wikipedia.org/wiki/LaTeX}, text=\LaTeX}
-
+\knowledge{url={https://fr.wikipedia.org/wiki/LaTeX}, text=\LaTeX}
+ | LaTeX
+ | latex
+ | LATEX
+ | Latex
% Configurations can also be made contextual. For instance, the
% following knowledge is only accessible directly in the introduction.
% It can nevertheless be used from elsewhere using "pdflatex@@section:introduction",
-\knowledge{pdflatex}{scope={section:example},url={https://en.wikipedia.org/wiki/PdfTeX}, typewriter}
+\knowledge{url={https://en.wikipedia.org/wiki/PdfTeX}, typewriter}
+ | pdflatex@example
% or \kl(section:introduction){pdflatex}. See 'scoping' in the documetation for more details.
% Scoping can be used in the preamble. For instance:
@@ -80,7 +113,7 @@
\begin{document}
\maketitle
\begin{abstract}
-\AP This document provides an elementary example of the "knowledge package" for "latex".
+\AP This document provides an elementary example of the "knowledge package" for "latex" and can be used as a starting point for creating one's own document.
\end{abstract}
\section{Introduction}
@@ -97,7 +130,7 @@ Primarily, the goal of the "knowledge@@package" is for the production of scienti
\section{Example running}
\label{section:example}
-Try compiling this document (two compilation phases to have proper links) using "pdflatex", and see how some notions are hyperlinked to their introduction point (some viewers make it more obvious than others by displaying a preview of the target of a link inside a document; since there is only one page in this example, this may be worth zooming in this case).
+Try compiling this document (two compilation phases to have proper links) using "pdflatex@@example", and see how some notions are hyperlinked to their introduction point (some viewers make it more obvious than others by displaying a preview of the target of a link inside a document; since there is only one page in this example, this may be worth zooming in this case).
\AP When the "paper mode" is not active, links are clearly identified in blue. Try then compiling it in ""paper mode"" (an option of the "knowledge package"); it now looks like a regular paper (but the links are still there). In ""electronic mode"",
the links are still colored, but some other hints disappear like "anchor points".
@@ -119,9 +152,13 @@ The `@' symbol allows some flexibility by having a displayed text different from
\knowledgeconfigure{quotation}
\AP These concepts are referred to as ""knowledges"". "Knowledges" are to be defined (in general in the preamble of the document) using a command of the form:
-\begin{quote}
-\verb|\knowledge|\texttt{\{name\}[synonym1|synonym2|...]\{directives\}}
-\end{quote}
+\begin{verbatim}
+ \knowledge{directives}
+ | name
+ | synonym1
+ | synonym2
+ | ...
+\end{verbatim}
However, using undefined "knowledges" will not cause compile time errors, but be displayed as in the following `"unknown knowledge"' (i.e. in non-"paper mode" in brown, but in regular black in "paper mode" or "electronic mode"). \AP The ""diagnose file"" (that ends with a \texttt{.diagnose} extension) contains detailed information about these warnings, and should be read often when finalizing the document.
\AP Small red corners called ""anchor points"" are visible in the margin, and represent the precise location in a pdf document where an internal link jumps. These are introduced
diff --git a/macros/latex/contrib/knowledge/knowledge.pdf b/macros/latex/contrib/knowledge/knowledge.pdf
index 3937cecefa..124bdf88ca 100644
--- a/macros/latex/contrib/knowledge/knowledge.pdf
+++ b/macros/latex/contrib/knowledge/knowledge.pdf
Binary files differ
diff --git a/macros/latex/contrib/knowledge/knowledge.tex b/macros/latex/contrib/knowledge/knowledge.tex
index b0d40485a8..aca0ea97dd 100644
--- a/macros/latex/contrib/knowledge/knowledge.tex
+++ b/macros/latex/contrib/knowledge/knowledge.tex
@@ -85,6 +85,8 @@
\let\subsubsubsection\paragraph
+\knowledge{[...]}{italic,color=gray}
+
\knowledge{notion}
| semigroup@ex1
| semigroups@ex1
@@ -96,7 +98,7 @@
\knowledge{not implemented}{link=to be done}
\knowledge{to be done}{color=DarkRed}
\knowledge{|}{text=\vbar}
-\knowledge{[...]}{italic,color=gray,md}
+\knowledge{"[...]"}{italic,color=gray,md}
% Macros defined by knowledge
\knowledgedirective{kenvironment}{autoref,style=cs,intro style=csintro}
@@ -640,7 +642,7 @@ This allows to easily link the use of a notion to its definition, to add it to
\texttt{date:}&\texttt{\filedate}
(documentation produced \today)\\
\texttt{license:}&\texttt{LaTeX Project Public License 1.2}\\
-\texttt{web:}&\url{https://www.irif.fr/~colcombe/knowledge_en.html}\\
+\texttt{web:}&\url{https://ctan.org/pkg/knowledge}\\
\texttt{CTAN:}&\url{https://www.ctan.org/pkg/knowledge}
\end{tabular}
\end{quote}
@@ -689,13 +691,13 @@ I have seen Till Tantau who explained me how to test whether a material is displ
\item[2017-01-13] The package \kl{scope option} can now be omitted. This in particular avoid clashes with the over-restriction on the structure of the document it entails. It should be improved to stop overloading the \cs{\begin} command.
\item[2017-01-14] The overloading of \cs{\begin} and \cs{\end} was done as protected commands, which should not be the case to be consistent with the behaviour of LaTeX (for instance, this was giving an extra line in the title in the conference mode of the class IEEEtran). Corrected: these commands are not protected anymore.
\item[2017-01-15] A workaround for an incompatibility between the "hyperref@@package" and the two-column mode as been added in the macro
-\cs{\knowledgeFixHyperrefTwocolumn} (thanks to Daniela Petrisan).
+\cs{\knowledgeFixHyperrefTwocolumn} (thanks to Daniela Petri\c san).
\item[2017-01-15] Added the \kl[\knowledge directives]{directive} \kl{synonym}.
\item[2017-01-15] Added the \texttt{noknowledge package} for minimizing the effects of not having "knowledge@@package" activated.
\item[2017-01-17] Changed the way options are handled, decoupling the package options (options of \cs{\usepackage}) from the configuration options (see \cs{\knowledgeconfigure}).
\item[2017-01-17] Proper treatment of `final' option and \kl[composition mode]{composition} options.
\item[2017-01-17] Added \cs{\IfKnowledgeFinalMode}\texttt{[TF]} commands for the user.
-\item[2017-01-17] Added the option \kl{fix hyperref twocolumn} as a shorthand for calling \cs{\knowledgeFixHyperrefTwocolumn} (thanks to Daniela Petrisan and Luca Reggio).
+\item[2017-01-17] Added the option \kl{fix hyperref twocolumn} as a shorthand for calling \cs{\knowledgeFixHyperrefTwocolumn} (thanks to Daniela Petri\c san and Luca Reggio).
\item[2017-01-18] Added the configuration option \kl(option){notion} that offers a basic configuration compatible with \kl(package){xcolor} or not, and \texttt{final} and \kl{composition} modes.
\item[2017-01-19] Added \cs{\phantomintro} and an explanation on how to deal with \kl{align*}.
\item[2017-02-20] Removed the warnings of latex for unknown labels in \kl{autoref}.
@@ -731,7 +733,7 @@ I have seen Till Tantau who explained me how to test whether a material is displ
\item [2017-07-01] Corrected a conflict between the "scope@@option" and "makeidx@@option" option.
\item [2017-07-03] Scoping becomes operational.
\item [2017-07-04] The documentation for "notion@@style" and "intro notion@@style" are added (thanks to Fabian Reiter).
-\item [2017-07-09] Added boolean \cs{environment_bool} field to "areas",in order to resolve an incompatibility with the package "standalone@@package" noticed by Fabian Reiter.
+\item [2017-07-09] Added boolean \cs{environment_bool} field to "areas", in order to resolve an incompatibility with the package "standalone@@package" noticed by Fabian Reiter.
\item [2017-07-20] "Scoping" becomes fully operational, with the parenthesis notation of \cs{\kl} and \cs{\intro}. The use of scope has been recoded. Now scope links reuse implicitly the key as a link. Documentation updated.
\item[2017-07-26] File and line numbers added in the "kaux file". Added the option "diagnose line=" to deactivate it.
\item[2017-07-26] Corrections to the documentation. Version 1.03 on CTAN.
@@ -761,7 +763,7 @@ I have seen Till Tantau who explained me how to test whether a material is displ
\item[2019-10-27] Bug correction and added the `\textbf{patch label}' configuration directive (thanks to \href{https://becca.ooo/}{Rebecca Turner}). V1.18.
\item[2019-11-19] Now the labels are evaluated before being written to the "kaux file" in a \cs\KAuxNewLinkScopetagInstance\ command (bug fix). V1.19.
\item[2019-11-29] Help added in the "diagnose file". \textbf{bar suggestion} (still working) renamed to "diagnose bar", and activated by default. \textbf{patch label} is renamed into "label scope".
-\item[2019-12-02] The "kaux file" is now checked for completeness befor being used. This should avoid errors when the previous compilation failed.
+\item[2019-12-02] The "kaux file" is now checked for completeness before being used. This should avoid errors when the previous compilation failed.
\item[2019-12-03] Corrected bug in the scope access. V1.20.
\item[2020-01-25] Corrected bug when "knowledge@@package" is used without "hyperref@@package" (thanks to Rémi Nollet).
\item[2020-01-25] Corrected bug that made the kaux file not stabilize (thanks to Rémi Nollet). V1.21 on CTAN.
@@ -774,7 +776,9 @@ I have seen Till Tantau who explained me how to test whether a material is displ
\item[2021-05-26] Corrected wrongly used default parameter in \cs\knowledgedirective.
\item[2021-05-27] The explicit text given in a \cs\kl-command now overrides the "text=" directive.
\item[2021-07-18] Adding the "no index" directive.
-\item[2021-12-20] Adding options "anchor point shape", "anchor point color", "anchor point shift" (rom request of Rémi Morvan).
+\item[2021-12-20] Adding options "anchor point shape", "anchor point color", "anchor point shift" (request of Rémi Morvan).
+\item[2021-12-27] Bug correction for corner shape, and doc update (thanks to Rémi Morvan).
+\item[2022-01-12] Minor changes. Removing dead link for the webpage. V1.27
\end{compactdesc}
\normalsize
%\restoregeometry
@@ -955,9 +959,9 @@ Then write the document using \cs{\intro} (or \kl{""...""} if \kl(option){quotat
\begin{code}[12cm]
\cs\AP{}
A \cs\intro\{semigroup\} is an ordered pair \verb|$(S,\cdot)$| in which \verb|$S$| is a set and \verb|$\cdot$| is an
-associative binary operator over~\verb|$S$|. A \cs\intro\{semigroup morphism\} is \kl{[...]}\\
-\kl{[...]}\\
-Consider a \cs\kl\{semigroup morphism\} between \cs\kl\{semigroups\} \verb|$S$| and \verb|$T$|. \kl{[...]}
+associative binary operator over~\verb|$S$|. A \cs\intro\{semigroup morphism\} is "[...]"\\
+"[...]"\\
+Consider a \cs\kl\{semigroup morphism\} between \cs\kl\{semigroups\} \verb|$S$| and \verb|$T$|. "[...]"
\end{code}
\noindent or when the "quotation notation" is activated:
\begin{code}[12cm]
@@ -965,9 +969,9 @@ Consider a \cs\kl\{semigroup morphism\} between \cs\kl\{semigroups\} \verb|$S$|
A \kl{""}semigroup\kl{""} is an ordered pair \verb|$(S,\cdot)$| in which \verb|$S$| is a set and \verb|$\cdot$| is an
associative binary operator over~\verb|$S$|.
\cs\AP{}
-A \kl{""}semigroup morphism\kl{""} is \kl{[...]}\\
-\kl{[...]}\\
-Consider a \kl"semigroup morphism\kl" between \kl"semigroups\kl" \verb|$S$| and \verb|$T$|. \kl{[...]}
+A \kl{""}semigroup morphism\kl{""} is "[...]"\\
+"[...]"\\
+Consider a \kl"semigroup morphism\kl" between \kl"semigroups\kl" \verb|$S$| and \verb|$T$|. "[...]"
\end{code}
This yields
@@ -976,9 +980,9 @@ This yields
\begin{PDFoutput}[11cm]
\AP A \intro[_semigroup]{semigroup} is an ordered pair $(S,\cdot)$ in which~$S$ is a set and $\cdot$ is an
associative binary operator over~$S$.
-\AP A \intro[_semigroup morphism]{semigroup morphism} is \kl{[...]}\\
-\kl{[...]}\\
-Consider a \kl[_semigroup morphism]{semigroup morphism} between \kl[_semigroups]{semigroups} $S$ and $T$. \kl{[...]}
+\AP A \intro[_semigroup morphism]{semigroup morphism} is "[...]"\\
+"[...]"\\
+Consider a \kl[_semigroup morphism]{semigroup morphism} between \kl[_semigroups]{semigroups} $S$ and $T$. "[...]"
\end{PDFoutput}
\knowledgeconfigure{visible anchor points=false}%
\marginpar{"Undefined knowledges" also yield warnings during the compilation. These can be avoided using the "silent" option.}%
@@ -1012,9 +1016,9 @@ The result is then (after two compilations):
\begin{PDFoutput}[11cm]
\AP A \intro(ex1){semigroup} is an ordered pair $(S,\cdot)$ in which~$S$ is a set and $\cdot$ is an
associative binary operator over~$S$.
-\AP A \intro(ex1){semigroup morphism} is \kl{[...]}\\
-\kl{[...]}\\
-Consider a \kl(ex1){semigroup morphism} between \kl(ex1){semigroups} $S$ and $T$. \kl{[...]}
+\AP A \intro(ex1){semigroup morphism} is "[...]"\\
+"[...]"\\
+Consider a \kl(ex1){semigroup morphism} between \kl(ex1){semigroups} $S$ and $T$. "[...]"
\end{PDFoutput}
\knowledgeconfigure{visible anchor points=false}%
%
@@ -1044,11 +1048,11 @@ which is properly linked to a semigroup morphism.
One can in particular imagine that \smallcode{\kl"morphism@@RG\kl"} would instead represent ring morphisms.
Sometimes, one does not want to expand the knowledge base because the word is not specific. For instance
- \smallcode{These \cs\kl[semigroup]\{algebraic objects\} \kl{[...]}}, or
- \smallcode{These \kl"algebraic objects@semigroup\kl"\} \kl{[...]}},
+ \smallcode{These \cs\kl[semigroup]\{algebraic objects\} "[...]"}, or
+ \smallcode{These \kl"algebraic objects@semigroup\kl"\} "[...]"},
yields
\begin{PDFoutput}[6cm]
-These \kl(ex1)[semigroup]{algebraic objects} \kl{[...]}
+These \kl(ex1)[semigroup]{algebraic objects} "[...]"
\end{PDFoutput}\noindent
The term is properly linked to the definition of semigroups.
@@ -1090,16 +1094,20 @@ See \kCref(option){makeidx} for more details on making an index.
\label{subsection:mathematics scenario}
The examples above show various techniques for using \kl{knowledges} for enhancing the information associated to terms. In fact, these techniques are not incompatible with mathematics. Some special syntax is even offered:
-\begin{code}[9cm]
+\begin{code}[12.6cm]
\cs\knowledgenewrobustcmd\cs\closure[1]\{\cs\cmdkl\{\cs\langle\}\#1\cs\cmdkl\{\cs\rangle\}\}\}\\
-{[...]}\\
-The closure of~\$X\$ under product is denoted~\$\cs\intro*\cs\closure\{X\}\$
+"[...]"\\
+The closure of~\$X\$ under product is denoted~\$\cs\intro*\cs\closure\{X\}\$.\\
+"[...]"\\
+ Consider now \$\cs\closure\{\cs\{a,b,c\cs\}\}\$.
\end{code}\noindent
\noindent
would yield:
-\begin{PDFoutput}[4cm]
-\knowledgenewrobustcmd \monoid{\cmdkl{\mathcal M}}
-A monoid is $\monoid$ !
+\begin{PDFoutput}[8cm]
+ \knowledgenewrobustcmd \closure[1]{\cmdkl{\langle}#1\cmdkl{\rangle}}
+ \AP The closure of~$X$ under product is denoted $\intro*\closure X$.\\
+ "[...]"\\
+ Consider now $\closure{\{a,b,c\}}$.
\end{PDFoutput}
\begin{problem}
But I want more. I want to be able to introduce variables.
@@ -1112,14 +1120,14 @@ attached to a particular context. This is particularly true when typesetting mat
The following code gives an idea of what is possible using \kl{scoping}:
\begin{code}
\cs\knowledgeconfigureenvironment\{theorem,lemma,proof\}\{\}\par\noindent
-\kl{[...]}\par\noindent
+"[...]"\par\noindent
\cs\begin\{lemma\}\cs\label\{theorem:main\}\par\noindent
~~~~\cs\knowledge\{n\}\{\kl{notion}\}\par\noindent
-~~~~For all number~\$\cs\intro\ n\$, \kl{[...]}\par\noindent
+~~~~For all number~\$\cs\intro\ n\$, "[...]"\par\noindent
\cs\end\{lemma\}\par\noindent
-\kl{[...]}\par\noindent
+"[...]"\par\noindent
Here \$\cs\kl\ n\$ is an undefined knowledge.\par\noindent
-\kl{[...]}\par\noindent
+"[...]"\par\noindent
\cs\begin\{proof\}[Proof of theorem\~\space\{theorem:main\}]\par\noindent
~~~~\cs\knowledgeimport\{theorem:main\}\par\noindent
~~~~Inside the proof, \$\cs\kl\ n\$ is hyperlinked to the theorem...\par\noindent
@@ -1477,12 +1485,12 @@ usable in \cs{\knowledge} commands, that amounts to execute the comma separated
a default value. For instance:
\begin{code}
\cs\knowledgedirective\{highlight\}[brown]\{\kl{color=}\{\#1\},\kl{emphasize},\kl{md}\}\\{}
-\kl{[...]}\\{}
+"[...]"\\{}
\cs\knowledge\{notion A\}\{highlight\}\\
\cs\knowledge\{notion B\}\{highlight\}\\
\cs\knowledge\{notion C\}\{highlight\}\\
\cs\knowledge\{important notion D\}\{highlight=red\}\\{}
-\cs{[...]}\\
+"[...]"\\
We shall now see \cs\kl\{notion A\}, \cs\kl\{notion B\}, \cs\kl\{notion C\}, as well as the \cs\kl\{important notion D\}.
\end{code}
\noindent
@@ -1935,7 +1943,7 @@ It is often the case in a text, that one has to locally break the nesting struct
\begin{code}
\textcolor{gray}{\% We declare first in the preamble the environments that use knowledge.}\\
\cs\knowledgeconfigureenvironment\{definition\}\{knowledge=attracts\}\par\indent
-{[...]}\\
+"[...]"\\
\indent
\cs\begin\{definition\}\cs\label\{somewhere\}\\
\indent~~\cs\knowledge\{something\}\{notion\}\\
@@ -1963,14 +1971,14 @@ accessible until the closure of the current \kl{scope}.
For instance:
\begin{code}[9cm]
\cs\knowledgeconfigureenvironment\{theorem,proof\}\{\}\par\indent
-{[...]}\par\indent
+"[...]"\par\indent
\cs\begin\{theorem\}\cs\label\{theorem:1\}\par\noindent
~~\cs\knowledge\verb|\alpha|\{\kl{autoref},\kl{color=}red\}\par\noindent
-~~Let \$\cs\intro\verb|\alpha|\$ be an integer [...]\par\noindent
+~~Let \$\cs\intro\verb|\alpha|\$ be an integer "[...]"\par\noindent
\cs\end\{theorem\}\par\noindent
-{[...]}\par\indent
+"[...]"\par\indent
Here \$\cs\kl\verb|\alpha|\$ is unknown.\par\noindent
-{[...]}\par\indent
+"[...]"\par\indent
\cs\begin\{proof\}\par\noindent
~~\cs\knowledgeimport\{theorem:1\}\par\noindent
~~But now \$\cs\kl\verb|\alpha|\$ points to its definition.\par\noindent
@@ -2210,26 +2218,26 @@ A typical use looks as follows:
\end{hint}}
\begin{code}
\cs\knowledge\{house\}[Houses\vbar houses]\{\kl{autoref}\}\\~
-\kl{[...]}\\
+"[...]"\\
\cs\begin\{document\}\\~
-\kl{[...]}\\
+"[...]"\\
In this document, we will see the very important notion of \kl{"}houses\kl{"}.\\~
-\kl{[...]}\\
+"[...]"\\
\cs\AP\\
Let us define a \kl{""}house\kl{""} to be a building that functions as a home.\\~
-\kl{[...]}\\
+"[...]"\\
\cs\end\{document\}
\end{code}\noindent
yields
\begin{PDFoutput}
\knowledge{house}[Houses| houses]{autoref}%
-\kl{[...]}\\
+"[...]"\\
In this document, we will see the very important notion of \kl{houses}.\\~
-\kl{[...]}\\
+"[...]"\\
\AP
Let us define a \intro{house} to be a building that functions as a home.
\\~
-\kl{[...]}
+"[...]"
\end{PDFoutput}
\AP
@@ -2237,10 +2245,10 @@ The variant \csintro{\intro*} makes the next \cs{\kl} command behave like \cs{\i
\begin{code}
\cs\newcommand\kl[@token]\monoid\{\cs\kl[\kl[@token]\monoid]\{\cs\mathcal M\}\}\\
\cs\knowledge\kl[@token]\monoid\{autoref\}\\~
-\kl{[...]}\\
+"[...]"\\
\cs\AP\\~
Let now \$\cs{\intro*}\kl[@token]\monoid\$ be a monoid.\\~
-\kl{[...]}\\
+"[...]"\\
Remember now who is \$\kl[@token]\monoid\$.
\end{code}
%
@@ -2251,7 +2259,7 @@ Section~\ref{section:amsmath questions} gives some solutions. \end{hint}}
\knowledge\moonoid{autoref}
\AP
Let now $\intro*\moonoid$ be a monoid.\\~
-\kl{[...]}\\
+"[...]"\\
Remember now who is $\moonoid$.
\end{PDFoutput}
@@ -2339,7 +2347,7 @@ For instance:
\cs\AP\\
In order to describe what is a \cs\kl\{monoid\}, let us us first define
a \cs\intro\{product\} to be an associative binary operator,
-and a \cs\intro\{unit\} to be \kl{[...]}
+and a \cs\intro\{unit\} to be "[...]"
\bigskip
\cs\begin\{description\}\\
@@ -2361,7 +2369,7 @@ yields
\AP In order to describe what is a \kl{monoid2}, let us us first define
a \intro{product2} to be an associative binary operator,
and a \intro{unit2} to be
-\kl{[...]}\par
+"[...]"\par
\begin{description}
\itemAP[A \intro{semigroup2}] is a set equipped with a \kl{product2}.
\itemAP[A \intro{monoid2}] is a \kl{semigroup2} that has a \kl{unit2}.
@@ -2590,9 +2598,9 @@ Imagine that you use the norms $1$ and $2$ of a function:
Now, the norm $1$ and the norm $2$ can be defined in different places since "knowledge" is specific to each case.
\begin{code}
\cs\AP\ The norm~\$1\$ of a function~\$f\$ is denoted \$\cs\intro*\cs\norm1f\$.\\
- {}[...]\\
+ "[...]"\\
\cs\AP\ The norm~\$2\$ of a function~\$f\$ is denoted \$\cs\intro*\cs\norm2f\$.\\
- {}[...]\\
+ "[...]"\\
Here, \$\cs\norm 1g\$ and \$\cs\norm2h\$ link to the proper place, while\\\$\cs\norm3g\$ is an undefined knowledge.
\end{code}
@@ -2616,9 +2624,9 @@ We shall use it in the advanced examples below. It allows:
\begin{code}
\cs\renewmathcommand\cs\pi\{\cs\kl[\cs\pi]\{\cs\LaTeXpi\}\}\\
\cs\knowledge\cs\pi\{notion\}\\
- {[...]}\\
+ "[...]"\\
\cs\AP\ Let \$\cs{\intro*}\cs\pi=3.1415\$.\\
- {[...]}\\
+ "[...]"\\
Now \$\cs\pi\$ points to the above sentence.
\end{code}
This code works because a different name \cs\LaTeXpi\ stores the original macro. Using~\cs\pi\ instead would yield an infinite loop.
@@ -2656,9 +2664,9 @@ Five points have to be kept in mind:
These five points are illustrated in the following code:
\begin{code}
\cs\knowledgenewrobustcmd\cs\comp\{\cs\mathrel\{\cs\cmdkl\{\cs\circ\}\}\}\\
-{[...]}\\
+"[...]"\\
\cs\AP\ Composition is denoted \$\cs{\intro*}\cs\comp\$.\\
-{[...]}\\
+"[...]"\\
Now, each use of \$\cs\comp\$ points to its introduction.
\end{code}
@@ -2681,9 +2689,9 @@ Another situation is that one would like to use the \cs\circ\ control sequence f
In this case, the "mathcommand@@package" package can also be of some help:
\begin{code}
\cs\knowledgerenewmathcommand\cs\circ\{\cs\mathrel\{\cs\cmdkl\{\cs\LaTeXcirc\}\}\}\\
-{[...]}\\
+"[...]"\\
\cs\AP\ Let \$g\cs{\intro*}\cs\circ\ f\$ denote the composition of functions.\\
-{[...]}\\
+"[...]"\\
Now, each use of \$\cs\circ\$ points to its introduction.
\end{code}
\noindent
@@ -2740,7 +2748,7 @@ A typical document using notion could start by the following commands:
\cs\usepackage\{\kl(package){hyperref}\}\\
\cs\usepackage[\kl{electronic}]\{"knowledge@@package"\}\\
\cs\knowledgeconfigure\{"notion@@option"\}\\
-{[...]}\\
+"[...]"\\
\cs\knowledge\{some text\}\{notion\}
\end{code}\noindent
Then the paper is displayed in a colorful way.
@@ -2790,13 +2798,13 @@ The notation \kl{"..."} does not have this issue.
\cs\knowledge\{\robustdisplay\Ltwo-space\}[\robustdisplay\Ltwo-spaces]\{autoref\}\\
\cs\knowledge\{\'etale topology\}[\'Etale topology]\par
~~~~~~~\{\kl{url=}\{https://en.wikipedia.org/wiki/\'Etale\_topology\}\}\\
-{[...]}\\
+{"[...]"}\\
\cs\begin\{document\}\\
\cs\tableofcontents\\
\cs\section\{On \cs\kl\{\robustdisplay\Ltwo-spaces\}\\
-{[...]}\\
+{"[...]"}\\
\cs\section\{On the \cs\kl\{\'etale topology\}\}\\
-{[...]}\\
+{"[...]"}\\
\cs\end\{document\}
\end{code}\end{center}\noindent
will result in that both \kl{knowledges} are considered unknown in the table of contents.
@@ -2810,14 +2818,14 @@ solves the first problem.
\item Using an equivalent text that does not have the problem:
\begin{code}
\cs\knowledge\{$\backslash$'etale topology\}\{\kl{link=}\'etale topology\}\\
- {[...]}\\
+ {"[...]"}\\
\cs\section\{On the \cs\kl\{$\backslash$'etale topology\}\}
\end{code}
\item Both problems can be solved using synonyms/links that have no problem. For instance:
\begin{code}
\cs\knowledge\{Ltwo-space\}\{\kl{link=}\robustdisplay\Ltwo-space\}\\
\cs\knowledge\{etale topology\}\{\kl{link=}\'etale topology\}\\
- {[...]}\\
+ {"[...]"}\\
\cs\section\{On \cs\kl[Ltwo-space]\{\robustdisplay\Ltwo-spaces\}\}\\
\cs\section\{On the \cs\kl[etale topology]\{étale topology\}\}
\end{code}
@@ -2909,11 +2917,11 @@ The problem has to be resolved by hand. The two following solutions are quick ha
\cs\usepackage\{\kl(package){complexity}\}\\
\cs\let\cs\compAP\robustdisplay\AP\\
\cs\let\robustdisplay\AP\cs\undefined\\
-\cs\usepackage[...]\{"knowledge@@package"\}
+\cs\usepackage"[...]"\{"knowledge@@package"\}
\end{code}
&&
\begin{code}[5.2cm]
-\cs\usepackage[...]\{"knowledge@@package"\}\\
+\cs\usepackage"[...]"\{"knowledge@@package"\}\\
\cs\let\cs\kAP\robustdisplay\AP\\
\cs\let\robustdisplay\AP\cs\undefined\\
\cs\usepackage\{\kl(package){complexity}\}
@@ -2934,13 +2942,19 @@ at the end of lines. This is an issue with the \kl(package){hyperref} package. T
The preamble thus looks like:
\begin{code}[9cm]
-\cs\documentclass\{\kl{[...]}\}\par\noindent
+\cs\documentclass\{"[...]"\}\par\noindent
\cs\pdfoutput=1\par\noindent
-\kl{[...]}\par\noindent
+"[...]"\par\noindent
\cs\usepackage[\kl{breaklinks}]\{\kl(package){hyperref}\}\par\noindent
-\kl{[...]}\par\noindent
+"[...]"\par\noindent
\cs\usepackage\{\kl(package){knowledge}\}\par\noindent
-\kl{[...]}\par\noindent
+"[...]"\par\noindent
+\end{code}
+
+\subsection{Display errors in pdf output, in particular "arXiv"}
+Again, try in the preamble:
+\begin{code}[9cm]
+\cs\pdfoutput=1
\end{code}
\subsubsection{Red boxes around links}
@@ -2980,7 +2994,7 @@ A simple hack to treat this situation:
\cs\let\cs\section\cs\SUPERsection\\
\cs\begin\{"thebibliography@@env"\}\\
\cs\bibitem\dots\\
-{}[...]\\
+{}"[...]"\\
\cs\end\{"thebibliography@@env"\}\\
\cs\let\cs\section\cs\NEWsection
\end{code}
diff --git a/macros/latex/contrib/l3backend/CHANGELOG.md b/macros/latex/contrib/l3backend/CHANGELOG.md
index 15826624b8..6611281878 100644
--- a/macros/latex/contrib/l3backend/CHANGELOG.md
+++ b/macros/latex/contrib/l3backend/CHANGELOG.md
@@ -6,6 +6,11 @@ this project uses date-based 'snapshot' version identifiers.
## [Unreleased]
+## [2022-01-12]
+
+### Changed
+- Move some functions to `l3color`
+
## [2021-12-14]
### Fixed
@@ -207,7 +212,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/2021-12-14...HEAD
+[Unreleased]: https://github.com/latex3/latex3/compare/2022-01-12...HEAD
+[2022-01-12]: https://github.com/latex3/latex3/compare/2021-12-14...2022-01-12
[2021-12-14]: https://github.com/latex3/latex3/compare/2021-10-17...2021-12-14
[2021-10-17]: https://github.com/latex3/latex3/compare/2021-10-12...2021-10-17
[2021-10-12]: https://github.com/latex3/latex3/compare/2021-08-04...2021-10-12
diff --git a/macros/latex/contrib/l3backend/README.md b/macros/latex/contrib/l3backend/README.md
index 4e713baec6..686bcf7c21 100644
--- a/macros/latex/contrib/l3backend/README.md
+++ b/macros/latex/contrib/l3backend/README.md
@@ -1,7 +1,7 @@
LaTeX3 Backend Drivers
======================
-Release 2021-12-14
+Release 2022-01-12
This package forms parts of `expl3`, and contains the code used to interface
with backends (drivers) across the `expl3` codebase. The functions here are
@@ -11,6 +11,6 @@ on an independent schedule.
-----
-<p>Copyright (C) 2019-2021 The LaTeX Project <br />
+<p>Copyright (C) 2019-2022 The LaTeX Project <br />
<a href="http://latex-project.org/">http://latex-project.org/</a> <br />
All rights reserved.</p>
diff --git a/macros/latex/contrib/l3backend/l3backend-basics.dtx b/macros/latex/contrib/l3backend/l3backend-basics.dtx
index 48a8673e39..cc3ca4c925 100644
--- a/macros/latex/contrib/l3backend/l3backend-basics.dtx
+++ b/macros/latex/contrib/l3backend/l3backend-basics.dtx
@@ -2,7 +2,7 @@
%
%% File: l3backend-basics.dtx
%
-% Copyright (C) 2019-2021 The LaTeX Project
+% Copyright (C) 2019-2022 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2021-12-14}
+% \date{Released 2022-01-12}
%
% \maketitle
%
@@ -70,27 +70,27 @@
% \begin{macrocode}
\ProvidesExplFile
%<*dvipdfmx>
- {l3backend-dvipdfmx.def}{2021-12-14}{}
+ {l3backend-dvipdfmx.def}{2022-01-12}{}
{L3 backend support: dvipdfmx}
%</dvipdfmx>
%<*dvips>
- {l3backend-dvips.def}{2021-12-14}{}
+ {l3backend-dvips.def}{2022-01-12}{}
{L3 backend support: dvips}
%</dvips>
%<*dvisvgm>
- {l3backend-dvisvgm.def}{2021-12-14}{}
+ {l3backend-dvisvgm.def}{2022-01-12}{}
{L3 backend support: dvisvgm}
%</dvisvgm>
%<*luatex>
- {l3backend-luatex.def}{2021-12-14}{}
+ {l3backend-luatex.def}{2022-01-12}{}
{L3 backend support: PDF output (LuaTeX)}
%</luatex>
%<*pdftex>
- {l3backend-pdftex.def}{2021-12-14}{}
+ {l3backend-pdftex.def}{2022-01-12}{}
{L3 backend support: PDF output (pdfTeX)}
%</pdftex>
%<*xetex>
- {l3backend-xetex.def}{2021-12-14}{}
+ {l3backend-xetex.def}{2022-01-12}{}
{L3 backend support: XeTeX}
%</xetex>
% \end{macrocode}
diff --git a/macros/latex/contrib/l3backend/l3backend-box.dtx b/macros/latex/contrib/l3backend/l3backend-box.dtx
index 29a20a8ceb..5dcafc8c88 100644
--- a/macros/latex/contrib/l3backend/l3backend-box.dtx
+++ b/macros/latex/contrib/l3backend/l3backend-box.dtx
@@ -2,7 +2,7 @@
%
%% File: l3backend-box.dtx
%
-% Copyright (C) 2019-2021 The LaTeX Project
+% Copyright (C) 2019-2022 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2021-12-14}
+% \date{Released 2022-01-12}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3backend/l3backend-code.pdf b/macros/latex/contrib/l3backend/l3backend-code.pdf
index ac30cca198..9860b3d626 100644
--- a/macros/latex/contrib/l3backend/l3backend-code.pdf
+++ b/macros/latex/contrib/l3backend/l3backend-code.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3backend/l3backend-color.dtx b/macros/latex/contrib/l3backend/l3backend-color.dtx
index b9185ea80b..6bf3a80976 100644
--- a/macros/latex/contrib/l3backend/l3backend-color.dtx
+++ b/macros/latex/contrib/l3backend/l3backend-color.dtx
@@ -2,7 +2,7 @@
%
%% File: l3backend-color.dtx
%
-% Copyright (C) 2019-2021 The LaTeX Project
+% Copyright (C) 2019-2022 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2021-12-14}
+% \date{Released 2022-01-12}
%
% \maketitle
%
@@ -377,7 +377,6 @@
%<*dvips>
\__kernel_backend_postscript:n { /color.sc ~ { } ~ def }
%</dvips>
- \group_insert_after:N \@@_backend_reset:
}
\cs_new_protected:Npn \@@_backend_reset:
{ \__kernel_backend_literal:n { color~pop } }
@@ -424,7 +423,6 @@
\tl_set:Nn \l_@@_backend_fill_tl {#1}
\tl_set:Nn \l_@@_backend_stroke_tl {#2}
\__kernel_color_backend_stack_push:nn \l_@@_backend_stack_int { #1 ~ #2 }
- \group_insert_after:N \@@_backend_reset:
}
\cs_new_protected:Npn \@@_backend_reset:
{ \__kernel_color_backend_stack_pop:n \l_@@_backend_stack_int }
@@ -463,10 +461,7 @@
\int_compare:nNnT \c__kernel_sys_dvipdfmx_version_int < { 20201111 }
{
\cs_gset_protected:Npn \@@_backend_select_cmyk:n #1
- {
- \__kernel_backend_literal:n { pdf: bc ~ [#1] }
- \group_insert_after:N \@@_backend_reset:
- }
+ { \__kernel_backend_literal:n { pdf: bc ~ [#1] } }
\cs_gset_eq:NN \@@_backend_select_gray:n \@@_backend_select_cmyk:n
\cs_gset_eq:NN \@@_backend_select_rgb:n \@@_backend_select_cmyk:n
\cs_gset_protected:Npn \@@_backend_reset:
diff --git a/macros/latex/contrib/l3backend/l3backend-draw.dtx b/macros/latex/contrib/l3backend/l3backend-draw.dtx
index 6a9ac910c3..41466652e1 100644
--- a/macros/latex/contrib/l3backend/l3backend-draw.dtx
+++ b/macros/latex/contrib/l3backend/l3backend-draw.dtx
@@ -2,7 +2,7 @@
%
%% File: l3backend-draw.dtx
%
-% Copyright (C) 2019-2021 The LaTeX Project
+% Copyright (C) 2019-2022 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2021-12-14}
+% \date{Released 2022-01-12}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3backend/l3backend-graphics.dtx b/macros/latex/contrib/l3backend/l3backend-graphics.dtx
index 57cac24006..63d01c70f3 100644
--- a/macros/latex/contrib/l3backend/l3backend-graphics.dtx
+++ b/macros/latex/contrib/l3backend/l3backend-graphics.dtx
@@ -2,7 +2,7 @@
%
%% File: l3backend-graphics.dtx
%
-% Copyright (C) 2019-2021 The LaTeX Project
+% Copyright (C) 2019-2022 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2021-12-14}
+% \date{Released 2022-01-12}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3backend/l3backend-header.dtx b/macros/latex/contrib/l3backend/l3backend-header.dtx
index 6692fec9bf..2e48498792 100644
--- a/macros/latex/contrib/l3backend/l3backend-header.dtx
+++ b/macros/latex/contrib/l3backend/l3backend-header.dtx
@@ -2,7 +2,7 @@
%
%% File: l3backend-header.dtx
%
-% Copyright (C) 2019-2021 The LaTeX Project
+% Copyright (C) 2019-2022 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2021-12-14}
+% \date{Released 2022-01-12}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3backend/l3backend-opacity.dtx b/macros/latex/contrib/l3backend/l3backend-opacity.dtx
index ed811bd7b7..d401e24735 100644
--- a/macros/latex/contrib/l3backend/l3backend-opacity.dtx
+++ b/macros/latex/contrib/l3backend/l3backend-opacity.dtx
@@ -2,7 +2,7 @@
%
%% File: l3backend-opacity.dtx
%
-% Copyright (C) 2021 The LaTeX Project
+% Copyright (C) 2021,2022 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2021-12-14}
+% \date{Released 2022-01-12}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3backend/l3backend-pdf.dtx b/macros/latex/contrib/l3backend/l3backend-pdf.dtx
index 2d09226bf1..f9d12695e4 100644
--- a/macros/latex/contrib/l3backend/l3backend-pdf.dtx
+++ b/macros/latex/contrib/l3backend/l3backend-pdf.dtx
@@ -2,7 +2,7 @@
%
%% File: l3backend-pdf.dtx
%
-% Copyright (C) 2019-2021 The LaTeX Project
+% Copyright (C) 2019-2022 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2021-12-14}
+% \date{Released 2022-01-12}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3backend/l3backend.ins b/macros/latex/contrib/l3backend/l3backend.ins
index 8e316be0f0..c08a111ab6 100644
--- a/macros/latex/contrib/l3backend/l3backend.ins
+++ b/macros/latex/contrib/l3backend/l3backend.ins
@@ -2,7 +2,7 @@
File l3backend.ins
-Copyright (C) 2019-2021 The LaTeX Project
+Copyright (C) 2019-2022 The LaTeX Project
It may be distributed and/or modified under the conditions of the
LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -35,7 +35,7 @@ license information is placed in the derived files.
\preamble
-Copyright (C) 2019-2021 The LaTeX Project
+Copyright (C) 2019-2022 The LaTeX Project
It may be distributed and/or modified under the conditions of
the LaTeX Project Public License (LPPL), either version 1.3c of
diff --git a/macros/latex/contrib/l3kernel/CHANGELOG.md b/macros/latex/contrib/l3kernel/CHANGELOG.md
index 53a9a1ae39..af2276e2e8 100644
--- a/macros/latex/contrib/l3kernel/CHANGELOG.md
+++ b/macros/latex/contrib/l3kernel/CHANGELOG.md
@@ -7,6 +7,30 @@ this project uses date-based 'snapshot' version identifiers.
## [Unreleased]
+## [2022-01-12]
+
+### Added
+- Support for validity scope for keys
+- `\peek_remove_filler:n`
+- `\prop_to_keyval:N`
+- `\regex_match_case:nn(TF)`, `\regex_replace_case_once:nN(TF)`,
+ `\regex_replace_case_all:nN(TF)`
+
+### Changed
+- Policy change: functions will no longer be removed after deprecation,
+ thus the Lua functions noted below are the *last* 'stable' code to be
+ removed from `l3kernel` after deprecation
+- Allow indirect conversions between colorspaces through fallback models
+- Move some color functions from `l3backend`
+
+### Deprecated
+- `\peek_..._ignore_spaces:N(TF)` functions
+- `\sys_load_deprecation:`
+- Option `undo-recent-deprecations`
+
+### Removed
+- Lua functions in `l3kernel` table
+
## [2021-11-22]
### Added
@@ -14,7 +38,8 @@ this project uses date-based 'snapshot' version identifiers.
### Changed
- Documentation improvements
-- Implementation of `intarray` data tyep with LuaTeX
+- Implementation of `intarray` data type with LuaTeX
+- Better support for LuaMetaTeX
## [2021-11-12]
@@ -93,6 +118,10 @@ this project uses date-based 'snapshot' version identifiers.
`\ior_show:N`, `\ior_log:N`, `\iow_show:N`, `\iow_log:N`,
`\tl_log_analysis:N`, `\tl_log_analysis:n`
- `\legacy_if_set_true:n`, `\legacy_if_set_false:n`, `\legacy_if_set:nn`
+- Matching multiple regex at the same time (issue #433):
+ `\regex_case_match:nn(TF)`,
+ `\regex_case_replace_once:nN(TF)`,
+ `\regex_case_replace_all:nN(TF)`
### Fixed
- Checking brace balance in all regex functions (issue #377)
@@ -993,7 +1022,8 @@ this project uses date-based 'snapshot' version identifiers.
- Step functions have been added for dim variables,
e.g. `\dim_step_inline:nnnn`
-[Unreleased]: https://github.com/latex3/latex3/compare/2021-11-22...HEAD
+[Unreleased]: https://github.com/latex3/latex3/compare/2022-01-12...HEAD
+[2022-01-12]: https://github.com/latex3/latex3/compare/2021-11-22...2022-01-12
[2021-11-22]: https://github.com/latex3/latex3/compare/2021-11-12...2021-11-22
[2021-11-12]: https://github.com/latex3/latex3/compare/2021-10-18...2021-11-12
[2021-10-18]: https://github.com/latex3/latex3/compare/2021-10-17...2021-10-18
diff --git a/macros/latex/contrib/l3kernel/README.md b/macros/latex/contrib/l3kernel/README.md
index 77d5204b40..162fcc8113 100644
--- a/macros/latex/contrib/l3kernel/README.md
+++ b/macros/latex/contrib/l3kernel/README.md
@@ -1,7 +1,7 @@
LaTeX3 Programming Conventions
==============================
-Release 2021-11-22
+Release 2022-01-12
Overview
--------
@@ -80,6 +80,6 @@ the [LaTeX-L list](#Discussion) should be used.
-----
-<p>Copyright (C) 1998-2012,2015-2021 The LaTeX Project <br />
+<p>Copyright (C) 1998-2012,2015-2022 The LaTeX Project <br />
<a href="http://latex-project.org/">http://latex-project.org/</a> <br />
All rights reserved.</p>
diff --git a/macros/latex/contrib/l3kernel/expl3.dtx b/macros/latex/contrib/l3kernel/expl3.dtx
index 21b528db1e..b8cc780f0c 100644
--- a/macros/latex/contrib/l3kernel/expl3.dtx
+++ b/macros/latex/contrib/l3kernel/expl3.dtx
@@ -2,7 +2,7 @@
%
%% File: expl3.dtx
%
-% Copyright (C) 1990-2021 The LaTeX Project
+% Copyright (C) 1990-2022 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -24,7 +24,7 @@
%
%<*driver|generic|package|2ekernel>
%</driver|generic|package|2ekernel>
-\def\ExplFileDate{2021-11-22}%
+\def\ExplFileDate{2022-01-12}%
%<*driver>
\documentclass[full]{l3doc}
\usepackage{graphicx}
@@ -51,7 +51,7 @@
% }^^A
% }
%
-% \date{Released 2021-11-22}
+% \date{Released 2022-01-12}
%
% \maketitle
%
@@ -897,12 +897,6 @@
% the option name alone is equivalent to using the option with the
% \texttt{true} value.
%
-% \DescribeOption{undo-recent-deprecations}
-% The \texttt{undo-recent-deprecations} option suppresses deprecation
-% errors for the first six months after a command is deprecated. It is
-% intended as a last resort measure for users of packages that were not
-% updated in time.
-%
% \DescribeOption{check-declarations}
% All variables used in \pkg{expl3} code should be declared. This is enforced
% by \TeX{} for variable types based on \TeX{} registers, but not for those
@@ -1408,11 +1402,7 @@
suppress-backend-headers .bool_gset_inverse:N
= \g__kernel_backend_header_bool ,
suppress-backend-headers .initial:n = false ,
- undo-recent-deprecations .code:n =
- {
- \bool_gset_true:N \g__kernel_deprecation_undo_recent_bool
- \sys_load_deprecation:
- }
+ undo-recent-deprecations .code:n = {} % A stub
}
% \end{macrocode}
%
diff --git a/macros/latex/contrib/l3kernel/expl3.pdf b/macros/latex/contrib/l3kernel/expl3.pdf
index d474bf6c3f..aafcc00ee1 100644
--- a/macros/latex/contrib/l3kernel/expl3.pdf
+++ b/macros/latex/contrib/l3kernel/expl3.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/interface3.pdf b/macros/latex/contrib/l3kernel/interface3.pdf
index e478d744a7..52d13e7717 100644
--- a/macros/latex/contrib/l3kernel/interface3.pdf
+++ b/macros/latex/contrib/l3kernel/interface3.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/interface3.tex b/macros/latex/contrib/l3kernel/interface3.tex
index c1f20d955f..8f64d339ae 100644
--- a/macros/latex/contrib/l3kernel/interface3.tex
+++ b/macros/latex/contrib/l3kernel/interface3.tex
@@ -2,7 +2,7 @@
File: interface3.tex
-Copyright (C) 1990-2011,2017-2021 The LaTeX Project
+Copyright (C) 1990-2011,2017-2022 The LaTeX Project
It may be distributed and/or modified under the conditions of the
LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -54,7 +54,7 @@ for those people who are interested.
{latex-team@latex-project.org}%
}%
}
-\date{Released 2021-11-22}
+\date{Released 2022-01-12}
\pagenumbering{roman}
\maketitle
diff --git a/macros/latex/contrib/l3kernel/l3.ins b/macros/latex/contrib/l3kernel/l3.ins
index 265fde8ac9..fbcc815d9f 100644
--- a/macros/latex/contrib/l3kernel/l3.ins
+++ b/macros/latex/contrib/l3kernel/l3.ins
@@ -2,7 +2,7 @@
File l3.ins
-Copyright (C) 2011,2012,2014-2021 The LaTeX Project
+Copyright (C) 2011,2012,2014-2022 The LaTeX Project
It may be distributed and/or modified under the conditions of the
LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -35,7 +35,7 @@ license information is placed in the derived files.
\preamble
-Copyright (C) 1990-2021 The LaTeX Project
+Copyright (C) 1990-2022 The LaTeX Project
It may be distributed and/or modified under the conditions of
the LaTeX Project Public License (LPPL), either version 1.3c of
@@ -109,7 +109,7 @@ and all files in that bundle must be distributed together.
\from{l3text-purify.dtx}{package}
\from{l3candidates.dtx} {package}
\from{l3legacy.dtx} {package}
- \from{l3deprecation.dtx}{package,kernel}
+ \from{l3deprecation.dtx}{package}
}
}
@@ -141,7 +141,6 @@ and all files in that bundle must be distributed together.
}
\generate{\file{l3debug.def} {\from{l3debug.dtx} {package}}}
-\generate{\file{l3deprecation.def}{\from{l3deprecation.dtx}{package,patches}}}
\generate{\file{l3docstrip.tex} {\from{l3docstrip.dtx} {program}}}
@@ -152,7 +151,7 @@ and all files in that bundle must be distributed together.
\def\MetaPrefix{--}
\preamble
-Copyright (C) 1990-2021 The LaTeX Project
+Copyright (C) 1990-2022 The LaTeX Project
It may be distributed and/or modified under the conditions of
the LaTeX Project Public License (LPPL), either version 1.3c of
diff --git a/macros/latex/contrib/l3kernel/l3basics.dtx b/macros/latex/contrib/l3kernel/l3basics.dtx
index 9b2e96aa90..d986ce162d 100644
--- a/macros/latex/contrib/l3kernel/l3basics.dtx
+++ b/macros/latex/contrib/l3kernel/l3basics.dtx
@@ -2,7 +2,7 @@
%
%% File: l3basics.dtx
%
-% Copyright (C) 1990-2021 The LaTeX Project
+% Copyright (C) 1990-2022 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2021-11-22}
+% \date{Released 2022-01-12}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3bootstrap.dtx b/macros/latex/contrib/l3kernel/l3bootstrap.dtx
index 5303ec5943..56aa0da33e 100644
--- a/macros/latex/contrib/l3kernel/l3bootstrap.dtx
+++ b/macros/latex/contrib/l3kernel/l3bootstrap.dtx
@@ -2,7 +2,7 @@
%
%% File: l3bootstrap.dtx
%
-% Copyright (C) 2011-2021 The LaTeX Project
+% Copyright (C) 2011-2022 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2021-11-22}
+% \date{Released 2022-01-12}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3box.dtx b/macros/latex/contrib/l3kernel/l3box.dtx
index d0d647be84..7159cb08c4 100644
--- a/macros/latex/contrib/l3kernel/l3box.dtx
+++ b/macros/latex/contrib/l3kernel/l3box.dtx
@@ -2,7 +2,7 @@
%
%% File: l3box.dtx
%
-% Copyright (C) 2005-2021 The LaTeX Project
+% Copyright (C) 2005-2022 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2021-11-22}
+% \date{Released 2022-01-12}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3candidates.dtx b/macros/latex/contrib/l3kernel/l3candidates.dtx
index a9c9dee7f0..df95ed2051 100644
--- a/macros/latex/contrib/l3kernel/l3candidates.dtx
+++ b/macros/latex/contrib/l3kernel/l3candidates.dtx
@@ -2,7 +2,7 @@
%
%% File: l3candidates.dtx
%
-% Copyright (C) 2012-2021 The LaTeX Project
+% Copyright (C) 2012-2022 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2021-11-22}
+% \date{Released 2022-01-12}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3cctab.dtx b/macros/latex/contrib/l3kernel/l3cctab.dtx
index b8202b7534..4c74e3bde5 100644
--- a/macros/latex/contrib/l3kernel/l3cctab.dtx
+++ b/macros/latex/contrib/l3kernel/l3cctab.dtx
@@ -2,7 +2,7 @@
%
%% File: l3cctab.dtx
%
-% Copyright (C) 2018-2021 The LaTeX Project
+% Copyright (C) 2018-2022 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2021-11-22}
+% \date{Released 2022-01-12}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3clist.dtx b/macros/latex/contrib/l3kernel/l3clist.dtx
index a823141054..c91922e6a7 100644
--- a/macros/latex/contrib/l3kernel/l3clist.dtx
+++ b/macros/latex/contrib/l3kernel/l3clist.dtx
@@ -3,7 +3,7 @@
%% File: l3clist.dtx
%
% Copyright (C) 2004-2011 Frank Mittelbach, The LaTeX Project
-% (C) 2012-2021 The LaTeX Project
+% (C) 2012-2022 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2021-11-22}
+% \date{Released 2022-01-12}
%
% \maketitle
%
@@ -315,7 +315,9 @@
% \begin{function}[updated = 2011-09-06]
% {
% \clist_remove_all:Nn, \clist_remove_all:cn,
-% \clist_gremove_all:Nn, \clist_gremove_all:cn
+% \clist_remove_all:NV, \clist_remove_all:cV,
+% \clist_gremove_all:Nn, \clist_gremove_all:cn,
+% \clist_gremove_all:NV, \clist_gremove_all:cV
% }
% \begin{syntax}
% \cs{clist_remove_all:Nn} \meta{comma list} \Arg{item}
@@ -1407,9 +1409,17 @@
% \end{macro}
% \end{macro}
%
-% \begin{macro}{\clist_remove_all:Nn, \clist_remove_all:cn}
+% \begin{macro}
+% {
+% \clist_remove_all:Nn, \clist_remove_all:cn,
+% \clist_remove_all:NV, \clist_remove_all:cV
+% }
% \UnitTested
-% \begin{macro}{\clist_gremove_all:Nn, \clist_gremove_all:cn}
+% \begin{macro}
+% {
+% \clist_gremove_all:Nn, \clist_gremove_all:cn,
+% \clist_gremove_all:NV, \clist_remove_all:cV
+% }
% \UnitTested
% \begin{macro}{\@@_remove_all:NNNn}
% \begin{macro}{\@@_remove_all:w}
@@ -1482,8 +1492,8 @@
\cs_new:Npn \@@_remove_all:
{ \exp_after:wN \@@_remove_all:w \@@_tmp:w , }
\cs_new:Npn \@@_remove_all:w #1 , \s_@@_mark , #2 , { \exp_not:n {#1} }
-\cs_generate_variant:Nn \clist_remove_all:Nn { c }
-\cs_generate_variant:Nn \clist_gremove_all:Nn { c }
+\cs_generate_variant:Nn \clist_remove_all:Nn { c , NV , cV }
+\cs_generate_variant:Nn \clist_gremove_all:Nn { c , NV , cV }
% \end{macrocode}
% \end{macro}
% \end{macro}
diff --git a/macros/latex/contrib/l3kernel/l3coffins.dtx b/macros/latex/contrib/l3kernel/l3coffins.dtx
index 56c296c175..38e9cf2339 100644
--- a/macros/latex/contrib/l3kernel/l3coffins.dtx
+++ b/macros/latex/contrib/l3kernel/l3coffins.dtx
@@ -2,7 +2,7 @@
%
%% File: l3coffins.dtx
%
-% Copyright (C) 2010-2021 The LaTeX Project
+% Copyright (C) 2010-2022 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2021-11-22}
+% \date{Released 2022-01-12}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3color.dtx b/macros/latex/contrib/l3kernel/l3color.dtx
index f77304a0a5..c6c8eb3262 100644
--- a/macros/latex/contrib/l3kernel/l3color.dtx
+++ b/macros/latex/contrib/l3kernel/l3color.dtx
@@ -2,7 +2,7 @@
%
%% File: l3color.dtx
%
-% Copyright (C) 2017-2021 The LaTeX Project
+% Copyright (C) 2017-2022 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2021-11-22}
+% \date{Released 2022-01-12}
%
% \maketitle
%
@@ -249,6 +249,9 @@
% General selection of color is safe when split across pages: a stack is
% used to ensure that the correct color is re-selected on the new page.
%
+% These commands set the current color (|.|): other more specialised functions
+% such as fill and stroke selectors do \emph{not} adjust this value.
+%
% \begin{function}{\color_select:n}
% \begin{syntax}
% \cs{color_select:n} \Arg{color expression}
@@ -281,9 +284,6 @@
% support this, and so color will need to be contained within a scope, such
% as \cs{draw_begin:}/\cs{draw_end:}.
%
-% Note that the \emph{current color} is the fill color, as this is used for
-% running text.
-%
% \begin{function}{\color_fill:n, \color_stroke:n}
% \begin{syntax}
% \cs{color_fill:n} \Arg{color expression}
@@ -538,12 +538,15 @@
% \begin{macro}{\@@_select:nn}
% Take an internal color specification and pass it to the driver. This code
% is needed to ensure the current color but will also be used by the
-% higher-level experimental material.
+% higher-level material.
% \begin{macrocode}
\cs_new_protected:Npn \@@_select:N #1
{ \exp_after:wN \@@_select:nn #1 }
\cs_new_protected:Npn \@@_select:nn #1#2
- { \use:c { @@_backend_select_ #1 :n } {#2} }
+ {
+ \use:c { @@_backend_select_ #1 :n } {#2}
+ \group_insert_after:N \@@_backend_reset:
+ }
% \end{macrocode}
% \end{macro}
% \end{macro}
@@ -595,7 +598,7 @@
%
% \subsection{Utility functions}
%
-% \begin{macro}[int, TF, EXP]{\@@_if_defined:n}
+% \begin{macro}[TF, EXP]{\@@_if_defined:n}
% A simple wrapper to avoid needing to have the lookup repeated in too many
% places.
% \begin{macrocode}
@@ -632,33 +635,63 @@
%
% \begin{macro}{\@@_convert:nnN, \@@_convert:VVN}
% \begin{macro}{\@@_convert:nnnN, \@@_convert:nVnN, \@@_convert:nnVN}
-% \begin{macro}[aux, EXP]
+% \begin{macro}[EXP]
% {
+% \@@_convert_gray_gray:w
% \@@_convert_gray_rgb:w
% \@@_convert_gray_cmyk:w
% \@@_convert_cmyk_gray:w
% \@@_convert_cmyk_rgb:w
+% \@@_convert_cmyk_cmyk:w
% \@@_convert_rgb_gray:w
+% \@@_convert_rgb_rgb:w
% \@@_convert_rgb_cmyk:w
% }
-% \begin{macro}[aux, EXP]{\@@_convert_rgb_cmyk:nnnn}
-% Model conversion is carried out using standard formulae, as described in
-% the manual for \pkg{xcolor} (see also the \emph{PostScript Language
-% Reference Manual}).
+% \begin{macro}[EXP]{\@@_convert_rgb_cmyk:nnnn}
+% Model conversion is carried out using standard formulae for base models,
+% as described in the manual for \pkg{xcolor} (see also the \emph{PostScript
+% Language Reference Manual}). For other models direct conversion might not
+% be defined, so we go through the fallback models if necessary.
% \begin{macrocode}
\cs_new_protected:Npn \@@_convert:nnN #1#2#3
{ \@@_convert:nnVN {#1} {#2} #3 #3 }
\cs_generate_variant:Nn \@@_convert:nnN { VV }
+\cs_generate_variant:Nn \exp_last_unbraced:Nf { c }
\cs_new_protected:Npn \@@_convert:nnnN #1#2#3#4
{
\tl_set:Nx #4
{
- \cs_if_exist:cTF { @@_convert_ #1 _ #2 :w }
- { \use:c { @@_convert_ #1 _ #2 :w } #3 \s_@@_stop }
- { \use:c { c_@@_fallback_ #2 _tl } }
+ \cs_if_exist_use:cTF { @@_convert_ #1 _ #2 :w }
+ { #3 \s_@@_stop }
+ {
+ \cs_if_exist:cTF { @@_convert_ \use:c { c_@@_fallback_ #1 _tl } _ #2 :w }
+ {
+ \exp_last_unbraced:cf
+ { @@_convert_ \use:c { c_@@_fallback_ #1 _tl } _ #2 :w }
+ { \use:c { @@_convert_ #1 _ \use:c { c_@@_fallback_ #1 _tl } :w } #3 \s_@@_stop }
+ \s_@@_stop
+ }
+ {
+ \exp_last_unbraced:cf
+ { @@_convert_ \use:c { c_@@_fallback_ #2 _tl } _ #2 :w }
+ {
+ \cs_if_exist_use:cTF { @@_convert_ #1 _ \use:c { c_@@_fallback_ #2 _tl } :w }
+ { #3 \s_@@_stop }
+ {
+ \exp_last_unbraced:cf
+ { @@_convert_ \use:c { c_@@_fallback_ #1 _tl } _ \use:c { c_@@_fallback_ #2 _tl } :w }
+ { \use:c { @@_convert_ #1 _ \use:c { c_@@_fallback_ #1 _tl } :w } #3 \s_@@_stop }
+ \s_@@_stop
+ }
+ }
+ \s_@@_stop
+ }
+ }
}
}
\cs_generate_variant:Nn \@@_convert:nnnN { nV , nnV }
+\cs_new:Npn \@@_convert_gray_gray:w #1 \s_@@_stop
+ { #1 }
\cs_new:Npn \@@_convert_gray_rgb:w #1 \s_@@_stop
{ #1 ~ #1 ~ #1 }
\cs_new:Npn \@@_convert_gray_cmyk:w #1 \s_@@_stop
@@ -669,6 +702,8 @@
% \begin{macrocode}
\cs_new:Npn \@@_convert_rgb_gray:w #1 ~ #2 ~ #3 \s_@@_stop
{ \fp_eval:n { 0.3 * #1 + 0.59 * #2 + 0.11 * #3 } }
+\cs_new:Npn \@@_convert_rgb_rgb:w #1 \s_@@_stop
+ { #1 }
% \end{macrocode}
% The conversion from |rgb| to |cmyk| is the most complex: a two-step
% procedure which requires \emph{black generation} and \emph{undercolor
@@ -697,6 +732,8 @@
\fp_eval:n { 1 - min ( 1 , #2 + #4 ) } \c_space_tl
\fp_eval:n { 1 - min ( 1 , #3 + #4 ) }
}
+\cs_new:Npn \@@_convert_cmyk_cmyk:w #1 \s_@@_stop
+ { #1 }
% \end{macrocode}
% \end{macro}
% \end{macro}
@@ -728,9 +765,9 @@
% \begin{macro}{\@@_parse_gray:n, \@@_parse_std:n}
% \begin{macro}{\@@_parse_break:w}
% \begin{macro}{\@@_parse_end:}
-% \begin{macro}[aux, EXP]{\@@_parse_mix:Nnnn, \@@_parse_mix:NVVn}
-% \begin{macro}[aux, EXP]{\@@_parse_mix:nNnn}
-% \begin{macro}[aux, EXP]
+% \begin{macro}[EXP]{\@@_parse_mix:Nnnn, \@@_parse_mix:NVVn}
+% \begin{macro}[EXP]{\@@_parse_mix:nNnn}
+% \begin{macro}[EXP]
% {
% \@@_parse_mix_gray:nw ,
% \@@_parse_mix_rgb:nw ,
@@ -1222,13 +1259,13 @@
% \end{macro}
% \end{macro}
%
-% \begin{macro}{\@@_select:}
+% \begin{macro}{\@@_finalise_current:}
% A backend-neutral location for \enquote{last minute} manipulations before
% handing off to the backend code. We set the special |.| syntax here: this
% will therefore always be available. The finalisation is separate from the
% main function so it can also be applied to \emph{e.g.}~page color.
% \begin{macrocode}
-\cs_new_protected:Npx \@@_select:
+\cs_new_protected:Npx \@@_finalise_current:
{
\tl_set:Nx \exp_not:c { l_@@_named_ . _tl }
{ \exp_not:N \@@_model:N \exp_not:N \l_@@_current_tl }
@@ -1236,7 +1273,6 @@
\prop_put:NVx \exp_not:c { l_@@_named_ . _prop }
\exp_not:c { l_@@_named_ . _tl }
{ \exp_not:N \@@_values:N \exp_not:N \l_@@_current_tl }
- \@@_select:N \exp_not:N \l_@@_current_tl
}
% \end{macrocode}
% \end{macro}
@@ -1254,13 +1290,15 @@
\cs_new_protected:Npn \color_select:n #1
{
\@@_parse:nN {#1} \l_@@_current_tl
- \@@_select:
+ \@@_finalise_current:
+ \@@_select:N \l_@@_current_tl
}
\cs_new_protected:Npn \color_select:nn #1#2
{
\@@_select_main:Nw \l_@@_current_tl
#1 / / \s_@@_mark #2 / / \s_@@_stop
- \@@_select:
+ \@@_finalise_current:
+ \@@_select:N \l_@@_current_tl
}
% \end{macrocode}
% If the first color model is the fixed one, or if there is no fixed
@@ -1692,12 +1730,12 @@
%
% \begin{variable}
% {\c_@@_fallback_cmyk_tl, \c_@@_fallback_gray_tl, \c_@@_fallback_rgb_tl}
-% Conversion from Separation or DeviceN spaces may not be possible; have
-% a fallback to black.
+% For every colorspace, we define one of the base colorspaces as a fallback.
+% The base colorspaces themselves are their own fallback.
% \begin{macrocode}
-\tl_const:Nn \c_@@_fallback_cmyk_tl { 0 ~ 0 ~ 0 ~ 1 }
-\tl_const:Nn \c_@@_fallback_gray_tl { 1 }
-\tl_const:Nn \c_@@_fallback_rgb_tl { 1 ~ 1 ~ 1 }
+\tl_const:Nn \c_@@_fallback_cmyk_tl { cmyk }
+\tl_const:Nn \c_@@_fallback_gray_tl { gray }
+\tl_const:Nn \c_@@_fallback_rgb_tl { rgb }
% \end{macrocode}
% \end{variable}
%
@@ -1803,14 +1841,13 @@
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{\@@_model_init:nn}
+% \begin{macro}{\@@_model_init:nnnn, \@@_model_init:nnnx}
% A shared auxiliary to do the basics of setting up a new model: reserve a
-% number, create a fallback and white-equivalent, set up links to the backend.
+% number, create a white-equivalent, set up links to the backend.
% \begin{macrocode}
-\cs_new_protected:Npn \@@_model_init:nnnnn #1#2#3#4#5
+\cs_new_protected:Npn \@@_model_init:nnnn #1#2#3#4
{
\int_gincr:N \g_@@_model_int
- \tl_const:cn { c_@@_fallback_ #1 _tl } { #4 }
\clist_map_inline:nn { fill , stroke , select }
{
\cs_new_protected:cpx { @@_backend_ ##1 _ #1 :n } ####1
@@ -1822,23 +1859,13 @@
\cs_new_protected:cpx { @@_model_ #1 _white: }
{
\prop_put:Nnn \exp_not:N \l_@@_named_white_prop {#1}
- { \exp_not:n {#5} }
+ { \exp_not:n {#4} }
\exp_not:N \int_compare:nNnF { \tex_currentgrouplevel:D } = 0
{ \group_insert_after:N \exp_not:c { @@_model_ #1 _ white: } }
}
\use:c { @@_model_ #1 _white: }
}
-\cs_generate_variant:Nn \@@_model_init:nnnnn { nnnxx }
-\cs_new_protected:Npn \@@_model_init:nnn #1#2#3
- {
- \@@_model_init:nnnxx { #1 } { #2 } { #3 }
- {
- 1 \prg_replicate:nn { #2 - 1 } { ~ 1 }
- }
- {
- 0 \prg_replicate:nn { #2 - 1 } { ~ 0 }
- }
- }
+\cs_generate_variant:Nn \@@_model_init:nnnn { nnnx }
% \end{macrocode}
% \end{macro}
%
@@ -1921,7 +1948,7 @@
\cs_new_protected:Npn \@@_model_separation:w
#1 , #2 , #3 , #4 , #5 \s_@@_stop #6#7#8
{
- \@@_model_init:nnn {#6} { 1 } { separation }
+ \@@_model_init:nnnn {#6} { 1 } { separation } { 0 }
\cs_new_eq:cN { @@_parse_mix_ #6 :nw } \@@_parse_mix_gray:nw
\cs_new:cpn { @@_parse_model_ #6 :w } ##1 , ##2 \s_@@_stop
{ {#6} { \@@_parse_number:n {##1} } }
@@ -1933,6 +1960,7 @@
}
\cs_new_protected:Npn \@@_model_separation_cmyk:nnnnnn #1#2#3#4#5#6
{
+ \tl_const:cn { c_@@_fallback_ #1 _tl } { cmyk }
\cs_new:cpn { @@_convert_ #1 _cmyk:w } ##1 \s_@@_stop
{
\fp_eval:n {##1 * #3} ~
@@ -1940,43 +1968,31 @@
\fp_eval:n {##1 * #5} ~
\fp_eval:n {##1 * #6}
}
- \@@_model_convert:nnn {#1} { cmyk } { rgb }
- \@@_model_convert:nnn {#1} { cmyk } { gray }
+ \cs_new:cpn { @@_convert_cmyk_ #1 :w } ##1 \s_@@_stop { 1 }
\prop_gput:Nnn \g_@@_alternative_values_prop {#1} { #3 , #4 , #5 , #6 }
\@@_backend_separation_init:nnnnn {#2} { /DeviceCMYK } { }
{ 0 ~ 0 ~ 0 ~ 0 } { #3 ~ #4 ~ #5 ~ #6 }
}
\cs_new_protected:Npn \@@_model_separation_rgb:nnnnnn #1#2#3#4#5#6
{
+ \tl_const:cn { c_@@_fallback_ #1 _tl } { rgb }
\cs_new:cpn { @@_convert_ #1 _rgb:w } ##1 \s_@@_stop
{
\fp_eval:n {##1 * #3} ~
\fp_eval:n {##1 * #4} ~
\fp_eval:n {##1 * #5}
}
- \@@_model_convert:nnn {#1} { rgb } { cmyk }
- \@@_model_convert:nnn {#1} { rgb } { gray }
+ \cs_new:cpn { @@_convert_rgb_ #1 :w } ##1 \s_@@_stop { 1 }
\prop_gput:Nnn \g_@@_alternative_values_prop {#1} { #3 , #4 , #5 }
\@@_backend_separation_init:nnnnn {#2} { /DeviceRGB } { }
{ 0 ~ 0 ~ 0 } { #3 ~ #4 ~ #5 }
}
\cs_new_protected:Npn \@@_model_separation_gray:nnnnnn #1#2#3#4#5#6
{
- \cs_new:cpn { @@_convert_ #1 _cmyk:w } ##1 \s_@@_stop
- {
- \fp_eval:n {##1 * #3} ~
- \fp_eval:n {##1 * #3} ~
- \fp_eval:n {##1 * #3} ~
- \fp_eval:n {##1 * #3}
- }
+ \tl_const:cn { c_@@_fallback_ #1 _tl } { gray }
\cs_new:cpn { @@_convert_ #1 _gray:w } ##1 \s_@@_stop
{ \fp_eval:n {##1 * #3} }
- \cs_new:cpn { @@_convert_ #1 _rgb:w } ##1 \s_@@_stop
- {
- \fp_eval:n {##1 * #3} ~
- \fp_eval:n {##1 * #3} ~
- \fp_eval:n {##1 * #3}
- }
+ \cs_new:cpn { @@_convert_gray_ #1 :w } ##1 \s_@@_stop { 1 }
\prop_gput:Nnn \g_@@_alternative_values_prop {#1} {#3}
\@@_backend_separation_init:nnnnn {#2} { /DeviceGray } { } { 0 } {#3}
}
@@ -2013,19 +2029,18 @@
% If a CIELAB space is being set up, we need the illuminant, then create
% the appropriate set up. At present, this doesn't include \texttt{BlackPoint}
% or \texttt{Range} data, but that may be added later. As CIELAB colors
-% 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.
+% cannot be converted to anything else, we fallback to producing black in the
+% gray colorspace: 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
{
\tl_if_exist:cTF { c_@@_model_whitepoint_CIELAB_ #1 _tl }
{
\@@_backend_separation_init_CIELAB:nnn {#1} {#3} { #4 ~ #5 ~ #6 }
- \cs_new:cpn { @@_convert_ #2 _cmyk:w } ##1 \s_@@_stop
- { 0 ~ 0 ~ 0 ~ 1 }
- \cs_new:cpn { @@_convert_ #2 _rgb:w } ##1 \s_@@_stop
- { 1 ~ 1 ~ 1 }
+ \tl_const:cn { c_@@_fallback_ #2 _tl } { gray }
\cs_new:cpn { @@_convert_ #2 _gray:w } ##1 \s_@@_stop
+ { 0 }
+ \cs_new:cpn { @@_convert_gray_ #2 :w } ##1 \s_@@_stop
{ 1 }
}
{
@@ -2162,12 +2177,18 @@
% \begin{macrocode}
\cs_new_protected:Npn \@@_model_devicen:nnnn #1#2#3#4
{
- \@@_model_init:nnn {#4} {#1} { devicen }
+ \@@_model_init:nnnx {#4} {#1} { devicen }
+ {
+ 0 \prg_replicate:nn { #1 - 1 } { ~ 0 }
+ }
\cs_if_exist_use:cF { @@_model_devicen_parse_ #1 :nn }
{ \@@_model_devicen_parse_generic:nn }
{#4} {#1}
\@@_model_devicen_init:nnn {#1} {#2} {#3}
- \@@_model_devicen_convert:nnn {#4} {#2} {#3}
+ \@@_model_devicen_convert:nnnx {#4} {#2} {#3}
+ {
+ 1 \prg_replicate:nn { #1 - 1 } { ~ 1 }
+ }
}
% \end{macrocode}
% For short lists of DeviceN colors, we can use hand-tuned parsing. This
@@ -2382,30 +2403,29 @@
% to other parameter-based spaces. Essentially the approach is exactly the same
% as the PostScript, just expressed in \TeX{} terms.
% \begin{macrocode}
-\cs_new_protected:Npn \@@_model_devicen_convert:nnn #1#2#3
+\cs_new_protected:Npn \@@_model_devicen_convert:nnnn #1#2#3
{
- \use:c { @@_model_devicen_convert_ #2 :nn } {#1} {#3}
+ \use:c { @@_model_devicen_convert_ #2 :nnn } {#1} {#3}
}
-\cs_new_protected:Npn \@@_model_devicen_convert_cmyk:nn #1#2
+\cs_generate_variant:Nn \@@_model_devicen_convert:nnnn { nnnx }
+\cs_new_protected:Npn \@@_model_devicen_convert_cmyk:nnn #1#2
{
- \@@_model_convert:nnn {#1} { cmyk } { gray }
- \@@_model_convert:nnn {#1} { cmyk } { rgb }
- \@@_model_devicen_convert:nnnn {#1} { cmyk } { 4 } {#2}
+ \tl_const:cn { c_@@_fallback_ #1 _tl } { cmyk }
+ \@@_model_devicen_convert:nnnnn {#1} { cmyk } { 4 } {#2}
}
-\cs_new_protected:Npn \@@_model_devicen_convert_gray:nn #1#2
+\cs_new_protected:Npn \@@_model_devicen_convert_gray:nnn #1#2
{
- \@@_model_convert:nnn {#1} { gray } { cmyk }
- \@@_model_convert:nnn {#1} { gray } { rgb }
- \@@_model_devicen_convert:nnnn {#1} { gray } { 1 } {#2}
+ \tl_const:cn { c_@@_fallback_ #1 _tl } { gray }
+ \@@_model_devicen_convert:nnnnn {#1} { gray } { 1 } {#2}
}
-\cs_new_protected:Npn \@@_model_devicen_convert_rgb:nn #1#2
+\cs_new_protected:Npn \@@_model_devicen_convert_rgb:nnn #1#2
{
- \@@_model_convert:nnn {#1} { rgb } { cmyk }
- \@@_model_convert:nnn {#1} { rgb } { gray }
- \@@_model_devicen_convert:nnnn {#1} { rgb } { 3 } {#2}
+ \tl_const:cn { c_@@_fallback_ #1 _tl } { rgb }
+ \@@_model_devicen_convert:nnnnn {#1} { rgb } { 3 } {#2}
}
-\cs_new_protected:Npn \@@_model_devicen_convert:nnnn #1#2#3#4
+\cs_new_protected:Npn \@@_model_devicen_convert:nnnnn #1#2#3#4#5
{
+ \cs_new:cpn { @@_convert_ #2 _ #1 :w } ##1 \s_@@_stop {#5}
\cs_new:cpx { @@_convert_ #1 _ #2 :w } ##1 \s_@@_stop
{
\exp_not:c { @@_convert_devicen_ #2 : \prg_replicate:nn {#3} { n } w }
@@ -2607,7 +2627,10 @@
% \begin{macrocode}
\cs_new_protected:Npn \@@_model_iccbased_aux:nnnnnn #1#2#3#4#5#6
{
- \@@_model_init:nnnnn {#5} {#1} { iccbased } {#2} {#3}
+ \@@_model_init:nnnn {#5} {#1} { iccbased } {#3}
+ \tl_const:cn { c_@@_fallback_ #5 _tl } { gray }
+ \cs_new:cpn { @@_convert_ #5 _gray:w } ##1 \s_@@_stop { 0 }
+ \cs_new:cpn { @@_convert_gray_ #5 :w } ##1 \s_@@_stop { #2 }
\use:c { @@_model_devicen_parse_ #1 :nn } {#5} {#1}
\exp_args:Nx \@@_backend_iccbased_init:nnn
{ \file_full_name:n {#6} } {#1} {#4}
diff --git a/macros/latex/contrib/l3kernel/l3debug.dtx b/macros/latex/contrib/l3kernel/l3debug.dtx
index e9bf590f29..04fee8a23c 100644
--- a/macros/latex/contrib/l3kernel/l3debug.dtx
+++ b/macros/latex/contrib/l3kernel/l3debug.dtx
@@ -2,7 +2,7 @@
%
%% File: l3debug.dtx
%
-% Copyright (C) 2019-2021 The LaTeX Project
+% Copyright (C) 2019-2022 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2021-11-22}
+% \date{Released 2022-01-12}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3deprecation.dtx b/macros/latex/contrib/l3kernel/l3deprecation.dtx
index 903c8280bc..f4123a42c2 100644
--- a/macros/latex/contrib/l3kernel/l3deprecation.dtx
+++ b/macros/latex/contrib/l3kernel/l3deprecation.dtx
@@ -2,7 +2,7 @@
%
%% File: l3deprecation.dtx
%
-% Copyright (C) 2017-2021 The LaTeX Project
+% Copyright (C) 2017-2022 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2021-11-22}
+% \date{Released 2022-01-12}
%
% \maketitle
%
@@ -54,31 +54,6 @@
% A few commands have had to be deprecated over the years. This module
% defines deprecated and deleted commands to produce an error.
%
-% The life of a deprecated command has several stages.
-% \begin{itemize}
-% \item When we decide it should be eventually removed the command's
-% definition is put in this file \pkg{l3deprecation.dtx} and the name
-% of the command is added to the list in \pkg{l3obsolete.txt}. The
-% command remains defined by default for $12$ or more months,
-% typically until the end of a year. During that time, if \pkg{expl3}
-% is loaded with any of the options \texttt{check-declarations} or
-% \texttt{log-functions} or \texttt{enable-debug} typically used in
-% package test files, the command will produce a warning.
-% \item Then by default the command produces an error for all users,
-% which can be suppressed for $6$ months through the option
-% \texttt{undo-recent-deprecations}.
-% \item After this $6$-month grace period, the command irreversibly
-% produces an error. Its original definition can then be removed from
-% the sources, leaving only the error definition. In
-% \pkg{l3obsolete.txt} its name is moved from the \enquote{Deprecated
-% functions and variables} list to the \enquote{Removed functions and
-% variables} list.
-% \end{itemize}
-% Package authors are encouraged to have a test file with
-% \cs{debug_on:n} |{deprecation}|, which makes commands at all stages of
-% this list into errors. This helps detect uses of deprecated commands
-% before user complain.
-%
% \end{documentation}
%
% \begin{implementation}
@@ -90,97 +65,9 @@
% \end{macrocode}
%
% \begin{macrocode}
-%<*kernel>
-% \end{macrocode}
-%
-% \begin{macrocode}
%<@@=deprecation>
% \end{macrocode}
%
-% \subsection{Helpers and variables}
-%
-% \begin{variable}{\l_@@_grace_period_bool}
-% This is set to \texttt{true} when the deprecated command that is
-% being defined is in its grace period, meaning between the time it
-% becomes an error by default and the time $6$~months later where even
-% \texttt{undo-recent-deprecations} stops restoring it.
-% \begin{macrocode}
-\bool_new:N \l_@@_grace_period_bool
-% \end{macrocode}
-% \end{variable}
-%
-% \begin{variable}{\s_@@_mark,\s_@@_stop}
-% Internal scan marks.
-% \begin{macrocode}
-\scan_new:N \s_@@_mark
-\scan_new:N \s_@@_stop
-% \end{macrocode}
-% \end{variable}
-%
-% \begin{macro}[EXP]{\@@_date_compare:nNnTF, \@@_date_compare_aux:w}
-% Expects |#1| and |#3| to be dates in the format YYYY-MM-DD (but
-% accepts YYYY or YYYY-MM too, filling in zeros for the missing data).
-% Compares them using |#2| (one of |<|, |=|, |>|).
-% \begin{macrocode}
-\cs_new:Npn \@@_date_compare:nNnTF #1#2#3
- { \@@_date_compare_aux:w #1 -0-0- \s_@@_mark #2 #3 -0-0- \s_@@_stop }
-\cs_new:Npn \@@_date_compare_aux:w
- #1 - #2 - #3 - #4 \s_@@_mark #5 #6 - #7 - #8 - #9 \s_@@_stop
- {
- \int_compare:nNnTF {#1} = {#6}
- {
- \int_compare:nNnTF {#2} = {#7}
- { \int_compare:nNnTF {#3} #5 {#8} }
- { \int_compare:nNnTF {#2} #5 {#7} }
- }
- { \int_compare:nNnTF {#1} #5 {#6} }
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{variable}{\g__kernel_deprecation_undo_recent_bool}
-% \begin{macrocode}
-\bool_new:N \g__kernel_deprecation_undo_recent_bool
-% \end{macrocode}
-% \end{variable}
-%
-% \begin{macro}{\@@_not_yet_deprecated:nTF, \@@_minus_six_months:w}
-% Receives a deprecation \meta{date} and runs the \texttt{true}
-% (\texttt{false}) branch if the \pkg{expl3} date is earlier (later)
-% than \meta{date}. If \texttt{undo-recent-deprecations} is used we
-% subtract $6$ months to the \pkg{expl3} date (equivalently add $6$
-% months to the \meta{date}). In addition, if the \pkg{expl3} date is
-% between \meta{date} and \meta{date} plus $6$ months,
-% \cs{l_@@_grace_period_bool} is set to \texttt{true}, otherwise
-% \texttt{false}.
-% \begin{macrocode}
-\cs_new_protected:Npn \@@_not_yet_deprecated:nTF #1
- {
- \bool_set_false:N \l_@@_grace_period_bool
- \exp_args:No \@@_date_compare:nNnTF { \ExplLoaderFileDate } < {#1}
- { \use_i:nn }
- {
- \exp_args:Nf \@@_date_compare:nNnTF
- {
- \exp_after:wN \@@_minus_six_months:w
- \ExplLoaderFileDate -0-0- \s_@@_stop
- } < {#1}
- {
- \bool_set_true:N \l_@@_grace_period_bool
- \bool_if:NTF \g__kernel_deprecation_undo_recent_bool
- }
- { \use_ii:nn }
- }
- }
-\cs_new:Npn \@@_minus_six_months:w #1 - #2 - #3 - #4 \s_@@_stop
- {
- \int_compare:nNnTF {#2} > 6
- { #1 - \int_eval:n { #2 - 6 } - #3 }
- { \int_eval:n { #1 - 1 } - \int_eval:n { #2 + 6 } - #3 }
- }
-% \end{macrocode}
-% \end{macro}
-%
% \subsection{Patching definitions to deprecate}
%
% \begin{quote}
@@ -231,20 +118,6 @@
% In both scenarios we the \meta{function} may be \tn{outer} so we
% undefine it with \cs{tex_let:D} before redefining it, with
% \cs{__kernel_deprecation_error:Nnn} or with some code added shortly.
-%
-% Then check the date (taking into account
-% \texttt{undo-recent-deprecations}) to see if the command should be
-% deprecated right away (\texttt{false} branch of
-% \cs{@@_not_yet_deprecated:nTF}), in which case
-% \cs{@@_just_error:nnNN} makes \meta{function} into an error (not
-% \tn{outer}), ignoring its \meta{parameters} and \meta{code}
-% completely.
-%
-% Otherwise distinguish cases where we should give a warning from
-% those where we shouldn't: warnings can only happen for protected
-% commands, and we only want them if either
-% \texttt{undo-recent-deprecations} or \texttt{enable-debug} is in
-% force, not for standard users.
% \begin{macrocode}
\cs_new_protected:Npn \__kernel_patch_deprecation:nnNNpn #1#2#3#4#5#
{ \@@_patch_aux:nnNNnn {#1} {#2} #3 #4 {#5} }
@@ -256,18 +129,9 @@
\__kernel_deprecation_error:Nnn #4 {#2} {#1}
}
{ \tex_let:D #4 \scan_stop: }
- \@@_not_yet_deprecated:nTF {#1}
- {
- \bool_if:nTF
- {
- \cs_if_eq_p:NN #3 \cs_gset_protected:Npn &&
- \__kernel_if_debug:TF
- { \c_true_bool } { \g__kernel_deprecation_undo_recent_bool }
- }
- { \@@_warn_once:nnNnn {#1} {#2} #4 {#5} {#6} }
- { \@@_patch_aux:Nn #3 { #4 #5 {#6} } }
- }
- { \@@_just_error:nnNN {#1} {#2} #3 #4 }
+ \cs_if_eq:NNTF #3 \cs_gset_protected:Npn
+ { \@@_warn_once:nnNnn {#1} {#2} #4 {#5} {#6} }
+ { \@@_patch_aux:Nn #3 { #4 #5 {#6} } }
}
% \end{macrocode}
% In case we want a warning, the \meta{function} is defined to produce
@@ -315,32 +179,6 @@
{ \__kernel_deprecation_code:nn { } { \cs_set:Npn #2 } }
}
% \end{macrocode}
-% Finally, if we want an error we reuse the same \cs{@@_patch_aux:Nn}
-% as the previous case. Indeed, we want \cs{debug_off:n}
-% |{deprecation}| to make the \meta{function} into an error, just like
-% it is by default. The error is expandable or not, and the last
-% argument of the error message is empty or is \texttt{grace} to
-% denote the case where we are in the $6$~month grace period, in which
-% case the error message is more detailed.
-% \begin{macrocode}
-\cs_new_protected:Npn \@@_just_error:nnNN #1#2#3#4
- {
- \exp_args:NNx \@@_patch_aux:Nn #3
- {
- \exp_not:N #4
- {
- \cs_if_eq:NNTF #3 \cs_gset_protected:Npn
- { \exp_not:N \msg_error:nnnnnn }
- { \exp_not:N \msg_expandable_error:nnnnnn }
- { deprecation } { deprecated-command }
- {#1}
- { \token_to_str:N #4 }
- { \tl_to_str:n {#2} }
- { \bool_if:NT \l_@@_grace_period_bool { grace } }
- }
- }
- }
-% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\__kernel_deprecation_error:Nnn}
@@ -368,13 +206,6 @@
{
\tl_if_blank:nF {#3} { Use~ \tl_trim_spaces:n {#3} ~not~ }
#2~deprecated~on~#1.
- \str_if_eq:nnT {#4} { grace }
- {
- \c_space_tl
- For~6~months~after~that~date~one~can~restore~a~deprecated~
- command~by~loading~the~expl3~package~with~the~option~
- 'undo-recent-deprecations'.
- }
}
% \end{macrocode}
%
@@ -382,7 +213,7 @@
%
% \begin{macro}{\@@_old_protected:Nnn, \@@_old:Nnn}
% Short-hands for old commands whose definition does not matter
-% anymore, i.e., commands past the grace period.
+% any more as they were removed.
% \begin{macrocode}
\cs_new_protected:Npn \@@_old_protected:Nnn #1#2#3
{
@@ -394,9 +225,13 @@
\__kernel_patch_deprecation:nnNNpn {#3} {#2}
\cs_gset:Npn #1 { }
}
-\@@_old:Nnn \box_resize:Nnn
+\@@_old_protected:Nnn \box_gset_eq_clear:NN
+ { \box_gset_eq_drop:NN } { 2021-07-01 }
+\@@_old_protected:Nnn \box_set_eq_clear:NN
+ { \box_set_eq_drop:NN } { 2021-07-01 }
+\@@_old_protected:Nnn \box_resize:Nnn
{ \box_resize_to_wd_and_ht_plus_dp:Nnn } { 2019-01-01 }
-\@@_old:Nnn \box_use_clear:N
+\@@_old_protected:Nnn \box_use_clear:N
{ \box_use_drop:N } { 2019-01-01 }
\@@_old:Nnn \c_job_name_tl
{ \c_sys_jobname_str } { 2017-01-01 }
@@ -448,22 +283,26 @@
{ 1000 } { 2020-01-01 }
\@@_old:Nnn \c_ten_thousand
{ 10000 } { 2020-01-01 }
+\@@_old:Nnn \c_term_ior
+ { -1 } { 2021-07-01 }
\@@_old:Nnn \dim_case:nnn
{ \dim_case:nnF } { 2015-07-14 }
-\@@_old:Nnn \file_add_path:nN
+\@@_old_protected:Nnn \file_add_path:nN
{ \file_get_full_name:nN } { 2019-01-01 }
\@@_old_protected:Nnn \file_if_exist_input:nT
{ \file_if_exist:nT and~ \file_input:n } { 2018-03-05 }
\@@_old_protected:Nnn \file_if_exist_input:nTF
{ \file_if_exist:nT and~ \file_input:n } { 2018-03-05 }
-\@@_old:Nnn \file_list:
+\@@_old_protected:Nnn \file_list:
{ \file_log_list: } { 2019-01-01 }
\@@_old:Nnn \file_path_include:n
{ \seq_put_right:Nn \l_file_search_path_seq } { 2019-01-01 }
-\@@_old:Nnn \file_path_remove:n
+\@@_old_protected:Nnn \file_path_remove:n
{ \seq_remove_all:Nn \l_file_search_path_seq } { 2019-01-01 }
\@@_old:Nnn \g_file_current_name_tl
{ \g_file_curr_name_str } { 2019-01-01 }
+\@@_old_protected:Nnn \hbox_unpack_clear:N
+ { \hbox_unpack_drop:N } { 2021-07-01 }
\@@_old:Nnn \int_case:nnn
{ \int_case:nnF } { 2015-07-14 }
\@@_old:Nnn \int_from_binary:n
@@ -480,13 +319,13 @@
{ \int_to_oct:n } { 2016-01-05 }
\@@_old_protected:Nnn \ior_get_str:NN
{ \ior_str_get:NN } { 2018-03-05 }
-\@@_old:Nnn \ior_list_streams:
+\@@_old_protected:Nnn \ior_list_streams:
{ \ior_show_list: } { 2019-01-01 }
-\@@_old:Nnn \ior_log_streams:
+\@@_old_protected:Nnn \ior_log_streams:
{ \ior_log_list: } { 2019-01-01 }
-\@@_old:Nnn \iow_list_streams:
+\@@_old_protected:Nnn \iow_list_streams:
{ \iow_show_list: } { 2019-01-01 }
-\@@_old:Nnn \iow_log_streams:
+\@@_old_protected:Nnn \iow_log_streams:
{ \iow_log_list: } { 2019-01-01 }
\@@_old:Nnn \lua_escape_x:n
{ \lua_escape:e } { 2020-01-01 }
@@ -560,12 +399,28 @@
{ \tl_case:cnF } { 2015-07-14 }
\@@_old:Nnn \tl_case:Nnn
{ \tl_case:NnF } { 2015-07-14 }
+\@@_old_protected:Nnn \tl_gset_from_file:Nnn
+ { \file_get:nnN } { 2021-07-01 }
+\@@_old_protected:Nnn \tl_gset_from_file_x:Nnn
+ { \file_get:nnN } { 2021-07-01 }
+\@@_old_protected:Nnn \tl_set_from_file:Nnn
+ { \file_get:nnN } { 2021-07-01 }
+\@@_old_protected:Nnn \tl_set_from_file_x:Nnn
+ { \file_get:nnN } { 2021-07-01 }
\@@_old_protected:Nnn \tl_to_lowercase:n
{ \tex_lowercase:D } { 2018-03-05 }
\@@_old_protected:Nnn \tl_to_uppercase:n
{ \tex_uppercase:D } { 2018-03-05 }
-\@@_old:Nnn \token_new:Nn
+\@@_old:Nnn \token_get_arg_spec:N
+ { \cs_argument_spec:N } { 2021-07-01 }
+\@@_old:Nnn \token_get_prefix_spec:N
+ { \cs_prefix_spec:N } { 2021-07-01 }
+\@@_old:Nnn \token_get_replacement_spec:N
+ { \cs_replacement_spec:N } { 2021-07-01 }
+\@@_old_protected:Nnn \token_new:Nn
{ \cs_new_eq:NN } { 2019-01-01 }
+\@@_old_protected:Nnn \vbox_unpack_clear:N
+ { \vbox_unpack_drop:N } { 2021-07-01 }
\@@_old:Nnn \xetex_if_engine_p:
{ \sys_if_engine_xetex_p: } { 2017-01-01 }
\@@_old:Nnn \xetex_if_engine:F
@@ -577,81 +432,41 @@
% \end{macrocode}
% \end{macro}
%
-% \subsection{Loading the patches}
-%
-% When loaded first, the patches are simply read here.
-% Here the deprecation code is loaded with the lower-level |\__kernel_...|
-% macro because we don't want it to flip the \cs{g__sys_deprecation_bool}
-% boolean, so that the deprecation code can be re-loaded later (when using
-% \texttt{undo-recent-deprecations}).
-%
-% \begin{macrocode}
-\group_begin:
-\cs_set_protected:Npn \ProvidesExplFile
- {
- \char_set_catcode_space:n { `\ }
- \ProvidesExplFileAux
- }
-\cs_set_protected:Npx \ProvidesExplFileAux #1#2#3#4
- {
- \group_end:
- \cs_if_exist:NTF \ProvidesFile
- { \exp_not:N \ProvidesFile {#1} [ #2~v#3~#4 ] }
- { \iow_log:x { File:~#1~#2~v#3~#4 } }
- }
-\cs_gset_protected:Npn \__kernel_sys_configuration_load:n #1
- { \file_input:n { #1 .def } }
-\__kernel_sys_configuration_load:n { l3deprecation }
-% \end{macrocode}
-%
-% \begin{macrocode}
-%</kernel>
-% \end{macrocode}
-%
-% \begin{macrocode}
-%<*patches>
-% \end{macrocode}
-%
-% Standard file identification.
-% \begin{macrocode}
-\ProvidesExplFile{l3deprecation.def}{2019-04-06}{}{L3 Deprecated functions}
-% \end{macrocode}
-%
% \subsection{Deprecated \pkg{l3str} functions}
%
% \begin{macrocode}
%<@@=str>
% \end{macrocode}
%
-% \begin{macro}[EXP, deprecated = 2022-07-01]
+% \begin{macro}[EXP]
% {
% \str_lower_case:n, \str_lower_case:f,
% \str_upper_case:n, \str_upper_case:f,
% \str_fold_case:n, \str_fold_case:V
% }
% \begin{macrocode}
-\__kernel_patch_deprecation:nnNNpn { 2022-01-01 } { \str_lowercase:n }
+\__kernel_patch_deprecation:nnNNpn { 2020-01-03 } { \str_lowercase:n }
\cs_gset:Npn \str_lower_case:n { \str_lowercase:n }
-\__kernel_patch_deprecation:nnNNpn { 2022-01-01 } { \str_lowercase:f }
+\__kernel_patch_deprecation:nnNNpn { 2020-01-03 } { \str_lowercase:f }
\cs_gset:Npn \str_lower_case:f { \str_lowercase:f }
-\__kernel_patch_deprecation:nnNNpn { 2022-01-01 } { \str_uppercase:n }
+\__kernel_patch_deprecation:nnNNpn { 2020-01-03 } { \str_uppercase:n }
\cs_gset:Npn \str_upper_case:n { \str_uppercase:n }
-\__kernel_patch_deprecation:nnNNpn { 2022-01-01 } { \str_uppercase:f }
+\__kernel_patch_deprecation:nnNNpn { 2020-01-03 } { \str_uppercase:f }
\cs_gset:Npn \str_upper_case:f { \str_uppercase:f }
-\__kernel_patch_deprecation:nnNNpn { 2022-01-01 } { \str_foldcase:n }
+\__kernel_patch_deprecation:nnNNpn { 2020-01-03 } { \str_foldcase:n }
\cs_gset:Npn \str_fold_case:n { \str_foldcase:n }
-\__kernel_patch_deprecation:nnNNpn { 2022-01-01 } { \str_foldcase:V }
+\__kernel_patch_deprecation:nnNNpn { 2020-01-03 } { \str_foldcase:V }
\cs_gset:Npn \str_fold_case:V { \str_foldcase:V }
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}[EXP, deprecated = 2022-07-01]
+% \begin{macro}[EXP]
% {\str_declare_eight_bit_encoding:nnn}
% This command was made internal, with one more argument. There is no
% easy way to compute a reasonable value for that extra argument so we
-% take a value that is big enough to accomodate all of Unicode.
+% take a value that is big enough to accommodate all of Unicode.
% \begin{macrocode}
-\__kernel_patch_deprecation:nnNNpn { 2022-01-01 } { }
+\__kernel_patch_deprecation:nnNNpn { 2020-08-20 } { }
\cs_gset_protected:Npn \str_declare_eight_bit_encoding:nnn #1
{ \@@_declare_eight_bit_encoding:nnnn {#1} { 1114112 } }
% \end{macrocode}
@@ -659,17 +474,30 @@
%
% \subsection{Deprecated \pkg{l3seq} functions}
%
-% \begin{macro}[EXP, deprecated = 2023-01-01]
-% {
-% \seq_indexed_map_inline:Nn, \seq_indexed_map_function:NN
-% }
+% \begin{macro}{\seq_indexed_map_inline:Nn}
+% \begin{macro}[EXP]{ \seq_indexed_map_function:NN}
% \begin{macrocode}
-\__kernel_patch_deprecation:nnNNpn { 2022-07-01 } { \seq_map_indexed_inline:Nn }
-\cs_gset:Npn \seq_indexed_map_inline:Nn { \seq_map_indexed_inline:Nn }
-\__kernel_patch_deprecation:nnNNpn { 2022-07-01 } { \seq_map_indexed_function:NN }
+\__kernel_patch_deprecation:nnNNpn { 2020-06-18 } { \seq_map_indexed_inline:Nn }
+\cs_gset_protected:Npn \seq_indexed_map_inline:Nn { \seq_map_indexed_inline:Nn }
+\__kernel_patch_deprecation:nnNNpn { 2020-06-18 } { \seq_map_indexed_function:NN }
\cs_gset:Npn \seq_indexed_map_function:NN { \seq_map_indexed_function:NN }
% \end{macrocode}
% \end{macro}
+% \end{macro}
+%
+% \subsection{Deprecated \pkg{l3sys} functions}
+%
+% \begin{macro}{\sys_load_deprecation:}
+% \begin{macrocode}
+\__kernel_patch_deprecation:nnNNpn { 2021-01-11 } { (no~longer~required) }
+\cs_gset_protected:Npn \sys_load_deprecation:
+ {
+ \bool_if:NF \g_@@_deprecation_bool
+ { \__kernel_sys_configuration_load:n { l3deprecation } }
+ \bool_gset_true:N \g_@@_deprecation_bool
+ }
+% \end{macrocode}
+% \end{macro}
%
% \subsection{Deprecated \pkg{l3tl} functions}
%
@@ -677,29 +505,29 @@
%<@@=tl>
% \end{macrocode}
%
-% \begin{macro}[deprecated = 2022-07-01]
+% \begin{macro}
% {
% \tl_lower_case:n, \tl_lower_case:nn,
% \tl_upper_case:n, \tl_upper_case:nn,
% \tl_mixed_case:n, \tl_mixed_case:nn,
% }
% \begin{macrocode}
-\__kernel_patch_deprecation:nnNNpn { 2022-01-01 } { \text_lowercase:n }
+\__kernel_patch_deprecation:nnNNpn { 2020-01-03 } { \text_lowercase:n }
\cs_gset:Npn \tl_lower_case:n #1
{ \text_lowercase:n {#1} }
-\__kernel_patch_deprecation:nnNNpn { 2022-01-01 } { \text_lowercase:nn }
+\__kernel_patch_deprecation:nnNNpn { 2020-01-03 } { \text_lowercase:nn }
\cs_gset:Npn \tl_lower_case:nn #1#2
{ \text_lowercase:nn {#1} {#2} }
-\__kernel_patch_deprecation:nnNNpn { 2022-01-01 } { \text_uppercase:n }
+\__kernel_patch_deprecation:nnNNpn { 2020-01-03 } { \text_uppercase:n }
\cs_gset:Npn \tl_upper_case:n #1
{ \text_uppercase:n {#1} }
-\__kernel_patch_deprecation:nnNNpn { 2022-01-01 } { \text_uppercase:nn }
+\__kernel_patch_deprecation:nnNNpn { 2020-01-03 } { \text_uppercase:nn }
\cs_gset:Npn \tl_upper_case:nn #1#2
{ \text_uppercase:nn {#1} {#2} }
-\__kernel_patch_deprecation:nnNNpn { 2022-01-01 } { \text_titlecase:n }
+\__kernel_patch_deprecation:nnNNpn { 2020-01-03 } { \text_titlecase:n }
\cs_gset:Npn \tl_mixed_case:n #1
{ \text_titlecase:n {#1} }
-\__kernel_patch_deprecation:nnNNpn { 2022-01-01 } { \text_titlecase:nn }
+\__kernel_patch_deprecation:nnNNpn { 2020-01-03 } { \text_titlecase:nn }
\cs_gset:Npn \tl_mixed_case:nn #1#2
{ \text_titlecase:nn {#1} {#2} }
% \end{macrocode}
@@ -707,7 +535,7 @@
%
% \subsection{Deprecated \pkg{l3token} functions}
%
-% \begin{macro}[EXP, deprecated = 2022-07-01]
+% \begin{macro}[EXP]
% {
% \char_lower_case:N, \char_upper_case:N,
% \char_mixed_case:Nn, \char_fold_case:N,
@@ -715,28 +543,64 @@
% \char_str_mixed_case:Nn, \char_str_fold_case:N,
% }
% \begin{macrocode}
-\__kernel_patch_deprecation:nnNNpn { 2022-01-01 } { \char_lowercase:N }
+\__kernel_patch_deprecation:nnNNpn { 2020-01-03 } { \char_lowercase:N }
\cs_gset:Npn \char_lower_case:N { \char_lowercase:N }
-\__kernel_patch_deprecation:nnNNpn { 2022-01-01 } { \char_uppercase:N }
+\__kernel_patch_deprecation:nnNNpn { 2020-01-03 } { \char_uppercase:N }
\cs_gset:Npn \char_upper_case:N { \char_uppercase:N }
-\__kernel_patch_deprecation:nnNNpn { 2022-01-01 } { \char_titlecase:N }
+\__kernel_patch_deprecation:nnNNpn { 2020-01-03 } { \char_titlecase:N }
\cs_gset:Npn \char_mixed_case:N { \char_titlecase:N }
-\__kernel_patch_deprecation:nnNNpn { 2022-01-01 } { \char_foldcase:N }
+\__kernel_patch_deprecation:nnNNpn { 2020-01-03 } { \char_foldcase:N }
\cs_gset:Npn \char_fold_case:N { \char_foldcase:N }
-\__kernel_patch_deprecation:nnNNpn { 2022-01-01 } { \char_str_lowercase:N }
+\__kernel_patch_deprecation:nnNNpn { 2020-01-03 } { \char_str_lowercase:N }
\cs_gset:Npn \char_str_lower_case:N { \char_str_lowercase:N }
-\__kernel_patch_deprecation:nnNNpn { 2022-01-01 } { \char_str_uppercase:N }
+\__kernel_patch_deprecation:nnNNpn { 2020-01-03 } { \char_str_uppercase:N }
\cs_gset:Npn \char_str_upper_case:N { \char_str_uppercase:N }
-\__kernel_patch_deprecation:nnNNpn { 2022-01-01 } { \char_str_titlecase:N }
+\__kernel_patch_deprecation:nnNNpn { 2020-01-03 } { \char_str_titlecase:N }
\cs_gset:Npn \char_str_mixed_case:N { \char_str_titlecase:N }
-\__kernel_patch_deprecation:nnNNpn { 2022-01-01 } { \char_str_foldcase:N }
+\__kernel_patch_deprecation:nnNNpn { 2020-01-03 } { \char_str_foldcase:N }
\cs_gset:Npn \char_str_fold_case:N { \char_str_foldcase:N }
% \end{macrocode}
% \end{macro}
%
+% \begin{macro}[TF]
+% {
+% \peek_catcode_ignore_spaces:N, \peek_catcode_remove_ignore_spaces:N,
+% \peek_charcode_ignore_spaces:N, \peek_charcode_remove_ignore_spaces:N,
+% \peek_meaning_ignore_spaces:N, \peek_meaning_remove_ignore_spaces:N
+% }
+% A little extra fun here to deal with the expansion.
% \begin{macrocode}
-%</patches>
+\tl_map_inline:nn
+ {
+ { catcode } { catcode_remove }
+ { charcode } { charcode_remove }
+ { meaning } { meaning_remove }
+ }
+ {
+ \use:x
+ {
+ \__kernel_patch_deprecation:nnNNpn { 2022-01-11 } { \peek_remove_spaces:n }
+ \cs_gset_protected:Npn \exp_not:c { peek_ #1 _ignore_spaces:NTF } ####1####2####3
+ {
+ \peek_remove_spaces:n
+ { \exp_not:c { peek_ #1 :NTF } ####1 {####2} {####3} }
+ }
+ \__kernel_patch_deprecation:nnNNpn { 2022-01-11 } { \peek_remove_spaces:n }
+ \cs_gset_protected:Npn \exp_not:c { peek_ #1 _ignore_spaces:NT } ####1####2
+ {
+ \peek_remove_spaces:n
+ { \exp_not:c { peek_ #1 :NT } ####1 {####2} }
+ }
+ \__kernel_patch_deprecation:nnNNpn { 2022-01-11 } { \peek_remove_spaces:n }
+ \cs_gset_protected:Npn \exp_not:c { peek_ #1 _ignore_spaces:NF } ####1####2
+ {
+ \peek_remove_spaces:n
+ { \exp_not:c { peek_ #1 :NF } ####1 {####2} }
+ }
+ }
+ }
% \end{macrocode}
+% \end{macro}
%
% \begin{macrocode}
%</package>
diff --git a/macros/latex/contrib/l3kernel/l3doc.dtx b/macros/latex/contrib/l3kernel/l3doc.dtx
index dfbb2abbf3..eb67bd70b3 100644
--- a/macros/latex/contrib/l3kernel/l3doc.dtx
+++ b/macros/latex/contrib/l3kernel/l3doc.dtx
@@ -2,7 +2,7 @@
%
%% File: l3doc.dtx
%
-% Copyright (C) 1990-2021 The LaTeX Project
+% Copyright (C) 1990-2022 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -31,7 +31,7 @@
\askforoverwritefalse
\preamble
-Copyright (C) 1990-2021 The LaTeX Project
+Copyright (C) 1990-2022 The LaTeX Project
It may be distributed and/or modified under the conditions of
the LaTeX Project Public License (LPPL), either version 1.3c of
@@ -79,7 +79,7 @@ and all files in that bundle must be distributed together.
%
% \title{The \cls{l3doc} class}
% \author{\Team}
-% \date{Released 2021-11-22}
+% \date{Released 2022-01-12}
% \maketitle
% \tableofcontents
%
@@ -1370,8 +1370,6 @@ and all files in that bundle must be distributed together.
':'~hence~it~is~not~clear~where~to~add~'_p'~or~'TF'.~
Please~follow~expl3~naming~conventions.
}
-\msg_new:nnn { l3doc } { deprecated-function }
- { The~deprecated~function(s)~'#1'~should~have~been~removed~on~#2. }
\msg_new:nnn { l3doc } { date-format }
{ The~date~'#1'~should~be~given~in~YYYY-MM-DD~format. }
\msg_new:nnn { l3doc } { future-date }
@@ -2420,7 +2418,7 @@ and all files in that bundle must be distributed together.
} ,
added .code:n = { \@@_date_set_past:Nn \l_@@_date_added_tl {#1} },
updated .code:n = { \@@_date_set_past:Nn \l_@@_date_updated_tl {#1} } ,
- deprecated .code:n = { \@@_deprecated_on:n {#1} } ,
+ deprecated .code:n = {} , % A stub
tested .code:n = { } ,
label .code:n =
{
@@ -2464,29 +2462,6 @@ and all files in that bundle must be distributed together.
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{\@@_deprecated_on:n}
-% The date comparison function expects two dates in the YYYY-MM-DD
-% format (|-|~is not subtraction here).
-% Complain if a deprecated function should have been removed earlier.
-% In any case, mark it as internal to suppress the text
-% \enquote{documented on page \ldots{}}.
-% \begin{macrocode}
-\cs_new_protected:Npn \@@_deprecated_on:n #1
- {
- \@@_date_set:Nn \l_@@_tmpa_tl {#1}
- \exp_args:No \@@_date_compare:nNnT
- { \l_@@_tmpa_tl } < { \c_sys_year_int - \c_sys_month_int - \c_sys_day_int }
- {
- \msg_error:nnxx { l3doc } { deprecated-function }
- { \tl_to_str:N \l_@@_macro_argument_tl }
- { \l_@@_tmpa_tl }
- }
- \bool_set_true:N \l_@@_macro_internal_bool
- \bool_set_true:N \l_@@_macro_internal_set_bool
- }
-% \end{macrocode}
-% \end{macro}
-%
% \begin{macro}{\@@_function:nnw}
% \begin{arguments}
% \item Key--value list.
@@ -2922,7 +2897,7 @@ and all files in that bundle must be distributed together.
} ,
added .code:n = {} , % TODO
updated .code:n = {} , % TODO
- deprecated .code:n = { \@@_deprecated_on:n {#1} } ,
+ deprecated .code:n = {} , % A stub
verb .bool_set:N = \l_@@_names_verb_bool ,
module .tl_set:N = \l_@@_override_module_tl ,
documented-as .tl_set:N = \l_@@_macro_documented_tl ,
diff --git a/macros/latex/contrib/l3kernel/l3docstrip.dtx b/macros/latex/contrib/l3kernel/l3docstrip.dtx
index 1f4c4061da..c654fad889 100644
--- a/macros/latex/contrib/l3kernel/l3docstrip.dtx
+++ b/macros/latex/contrib/l3kernel/l3docstrip.dtx
@@ -2,7 +2,7 @@
%
%% File l3dosctrip.dtx
%
-% Copyright (C) 2012,2014-2021 The LaTeX Project
+% Copyright (C) 2012,2014-2022 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -63,7 +63,7 @@
% }^^A
% }
%
-% \date{Released 2021-11-22}
+% \date{Released 2022-01-12}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3docstrip.pdf b/macros/latex/contrib/l3kernel/l3docstrip.pdf
index f49d237424..7e544dfa12 100644
--- a/macros/latex/contrib/l3kernel/l3docstrip.pdf
+++ b/macros/latex/contrib/l3kernel/l3docstrip.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3expan.dtx b/macros/latex/contrib/l3kernel/l3expan.dtx
index 12e55bfc50..584707639f 100644
--- a/macros/latex/contrib/l3kernel/l3expan.dtx
+++ b/macros/latex/contrib/l3kernel/l3expan.dtx
@@ -2,7 +2,7 @@
%
%% File: l3expan.dtx
%
-% Copyright (C) 1990-2021 The LaTeX Project
+% Copyright (C) 1990-2022 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2021-11-22}
+% \date{Released 2022-01-12}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3file.dtx b/macros/latex/contrib/l3kernel/l3file.dtx
index 07dffc2904..2dd6b3706e 100644
--- a/macros/latex/contrib/l3kernel/l3file.dtx
+++ b/macros/latex/contrib/l3kernel/l3file.dtx
@@ -2,7 +2,7 @@
%
%% File: l3file.dtx
%
-% Copyright (C) 1990-2021 The LaTeX Project
+% Copyright (C) 1990-2022 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2021-11-22}
+% \date{Released 2022-01-12}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3flag.dtx b/macros/latex/contrib/l3kernel/l3flag.dtx
index 668cded03b..737df31630 100644
--- a/macros/latex/contrib/l3kernel/l3flag.dtx
+++ b/macros/latex/contrib/l3kernel/l3flag.dtx
@@ -2,7 +2,7 @@
%
%% File: l3flag.dtx
%
-% Copyright (C) 2011-2021 The LaTeX Project
+% Copyright (C) 2011-2022 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2021-11-22}
+% \date{Released 2022-01-12}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp-assign.dtx b/macros/latex/contrib/l3kernel/l3fp-assign.dtx
index 4f8573e266..74658c8588 100644
--- a/macros/latex/contrib/l3kernel/l3fp-assign.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-assign.dtx
@@ -2,7 +2,7 @@
%
%% File: l3fp-assign.dtx
%
-% Copyright (C) 2011-2021 The LaTeX Project
+% Copyright (C) 2011-2022 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -40,7 +40,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2021-11-22}
+% \date{Released 2022-01-12}
% \maketitle
%
% \begin{documentation}
diff --git a/macros/latex/contrib/l3kernel/l3fp-aux.dtx b/macros/latex/contrib/l3kernel/l3fp-aux.dtx
index 9df90f504b..c516234aed 100644
--- a/macros/latex/contrib/l3kernel/l3fp-aux.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-aux.dtx
@@ -2,7 +2,7 @@
%
%% File: l3fp-aux.dtx
%
-% Copyright (C) 2011-2021 The LaTeX Project
+% Copyright (C) 2011-2022 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2021-11-22}
+% \date{Released 2022-01-12}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp-basics.dtx b/macros/latex/contrib/l3kernel/l3fp-basics.dtx
index dd34a0e6d7..6bfc75990e 100644
--- a/macros/latex/contrib/l3kernel/l3fp-basics.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-basics.dtx
@@ -2,7 +2,7 @@
%
%% File: l3fp-basics.dtx
%
-% Copyright (C) 2011-2014,2016-2021 The LaTeX Project
+% Copyright (C) 2011-2014,2016-2022 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -40,7 +40,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2021-11-22}
+% \date{Released 2022-01-12}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp-convert.dtx b/macros/latex/contrib/l3kernel/l3fp-convert.dtx
index db755b3947..c462700dc0 100644
--- a/macros/latex/contrib/l3kernel/l3fp-convert.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-convert.dtx
@@ -2,7 +2,7 @@
%
%% File: l3fp-convert.dtx
%
-% Copyright (C) 2011-2021 The LaTeX Project
+% Copyright (C) 2011-2022 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2021-11-22}
+% \date{Released 2022-01-12}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp-expo.dtx b/macros/latex/contrib/l3kernel/l3fp-expo.dtx
index d28f28258a..e39ae9b9ea 100644
--- a/macros/latex/contrib/l3kernel/l3fp-expo.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-expo.dtx
@@ -2,7 +2,7 @@
%
%% File: l3fp-expo.dtx
%
-% Copyright (C) 2011-2021 The LaTeX Project
+% Copyright (C) 2011-2022 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -40,7 +40,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2021-11-22}
+% \date{Released 2022-01-12}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp-extended.dtx b/macros/latex/contrib/l3kernel/l3fp-extended.dtx
index 7ce778ccff..e5ee0bfbb9 100644
--- a/macros/latex/contrib/l3kernel/l3fp-extended.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-extended.dtx
@@ -2,7 +2,7 @@
%
%% File: l3fp-extended.dtx
%
-% Copyright (C) 2011-2021 The LaTeX Project
+% Copyright (C) 2011-2022 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -40,7 +40,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2021-11-22}
+% \date{Released 2022-01-12}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp-logic.dtx b/macros/latex/contrib/l3kernel/l3fp-logic.dtx
index 5145278e6b..8603c45e7f 100644
--- a/macros/latex/contrib/l3kernel/l3fp-logic.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-logic.dtx
@@ -2,7 +2,7 @@
%
%% File: l3fp-logic.dtx
%
-% Copyright (C) 2011-2021 The LaTeX Project
+% Copyright (C) 2011-2022 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -40,7 +40,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2021-11-22}
+% \date{Released 2022-01-12}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp-parse.dtx b/macros/latex/contrib/l3kernel/l3fp-parse.dtx
index cc255e06f8..30df6a7b14 100644
--- a/macros/latex/contrib/l3kernel/l3fp-parse.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-parse.dtx
@@ -2,7 +2,7 @@
%
%% File: l3fp-parse.dtx
%
-% Copyright (C) 2011-2021 The LaTeX Project
+% Copyright (C) 2011-2022 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -40,7 +40,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2021-11-22}
+% \date{Released 2022-01-12}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp-random.dtx b/macros/latex/contrib/l3kernel/l3fp-random.dtx
index a25e8fbfee..83efd217f9 100644
--- a/macros/latex/contrib/l3kernel/l3fp-random.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-random.dtx
@@ -2,7 +2,7 @@
%
%% File: l3fp-random.dtx
%
-% Copyright (C) 2016-2021 The LaTeX Project
+% Copyright (C) 2016-2022 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -40,7 +40,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2021-11-22}
+% \date{Released 2022-01-12}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp-round.dtx b/macros/latex/contrib/l3kernel/l3fp-round.dtx
index 5bcd63e93a..a4c3121ee1 100644
--- a/macros/latex/contrib/l3kernel/l3fp-round.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-round.dtx
@@ -2,7 +2,7 @@
%
%% File: l3fp-round.dtx
%
-% Copyright (C) 2011-2021 The LaTeX Project
+% Copyright (C) 2011-2022 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2021-11-22}
+% \date{Released 2022-01-12}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp-traps.dtx b/macros/latex/contrib/l3kernel/l3fp-traps.dtx
index 9a66600ace..f52c248f1c 100644
--- a/macros/latex/contrib/l3kernel/l3fp-traps.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-traps.dtx
@@ -2,7 +2,7 @@
%
%% File: l3fp-traps.dtx
%
-% Copyright (C) 2011-2014,2016-2021 The LaTeX Project
+% Copyright (C) 2011-2014,2016-2022 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -40,7 +40,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2021-11-22}
+% \date{Released 2022-01-12}
% \maketitle
%
% \begin{documentation}
diff --git a/macros/latex/contrib/l3kernel/l3fp-trig.dtx b/macros/latex/contrib/l3kernel/l3fp-trig.dtx
index 7f32c26d5e..c46866fa3c 100644
--- a/macros/latex/contrib/l3kernel/l3fp-trig.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-trig.dtx
@@ -2,7 +2,7 @@
%
%% File: l3fp-trig.dtx
%
-% Copyright (C) 2011-2021 The LaTeX Project
+% Copyright (C) 2011-2022 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -40,7 +40,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2021-11-22}
+% \date{Released 2022-01-12}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp.dtx b/macros/latex/contrib/l3kernel/l3fp.dtx
index d5be93e21b..94560b4ba8 100644
--- a/macros/latex/contrib/l3kernel/l3fp.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp.dtx
@@ -2,7 +2,7 @@
%
%% File: l3fp.dtx
%
-% Copyright (C) 2011-2021 The LaTeX Project
+% Copyright (C) 2011-2022 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -49,7 +49,7 @@
% }^^A
% }
%
-% \date{Released 2021-11-22}
+% \date{Released 2022-01-12}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fparray.dtx b/macros/latex/contrib/l3kernel/l3fparray.dtx
index f03c04bb4e..d37c1663f9 100644
--- a/macros/latex/contrib/l3kernel/l3fparray.dtx
+++ b/macros/latex/contrib/l3kernel/l3fparray.dtx
@@ -2,7 +2,7 @@
%
%% File: l3fparray.dtx
%
-% Copyright (C) 2018-2021 The LaTeX Project
+% Copyright (C) 2018-2022 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2021-11-22}
+% \date{Released 2022-01-12}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3int.dtx b/macros/latex/contrib/l3kernel/l3int.dtx
index fedb4617f9..9d21602f79 100644
--- a/macros/latex/contrib/l3kernel/l3int.dtx
+++ b/macros/latex/contrib/l3kernel/l3int.dtx
@@ -2,7 +2,7 @@
%
%% File: l3int.dtx
%
-% Copyright (C) 1990-2021 The LaTeX Project
+% Copyright (C) 1990-2022 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2021-11-22}
+% \date{Released 2022-01-12}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3intarray.dtx b/macros/latex/contrib/l3kernel/l3intarray.dtx
index 8f0976fb25..ffd2bf0c84 100644
--- a/macros/latex/contrib/l3kernel/l3intarray.dtx
+++ b/macros/latex/contrib/l3kernel/l3intarray.dtx
@@ -2,7 +2,7 @@
%
%% File: l3intarray.dtx
%
-% Copyright (C) 2017-2021 The LaTeX Project
+% Copyright (C) 2017-2022 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2021-11-22}
+% \date{Released 2022-01-12}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3kernel-functions.dtx b/macros/latex/contrib/l3kernel/l3kernel-functions.dtx
index bfd7174feb..5dc90baa73 100644
--- a/macros/latex/contrib/l3kernel/l3kernel-functions.dtx
+++ b/macros/latex/contrib/l3kernel/l3kernel-functions.dtx
@@ -2,7 +2,7 @@
%
%% File: l3kernel-functions.dtx
%
-% Copyright (C) 2018-2021 The LaTeX Project
+% Copyright (C) 2018-2022 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2021-11-22}
+% \date{Released 2022-01-12}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3keys.dtx b/macros/latex/contrib/l3kernel/l3keys.dtx
index 51bfbec712..dab5a8f423 100644
--- a/macros/latex/contrib/l3kernel/l3keys.dtx
+++ b/macros/latex/contrib/l3kernel/l3keys.dtx
@@ -2,7 +2,7 @@
%
%% File: l3keys.dtx
%
-% Copyright (C) 2006-2021 The LaTeX Project
+% Copyright (C) 2006-2022 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2021-11-22}
+% \date{Released 2022-01-12}
%
% \maketitle
%
@@ -358,6 +358,24 @@
% require a value at point-of-use unless a default is set.
% \end{function}
%
+% \begin{function}[updated = 2021-11-22]
+% {
+% .legacy_if_set:n, .legacy_if_gset:n,
+% .legacy_if_set_inverse:n, .legacy_if_gset_inverse:n
+% }
+% \begin{syntax}
+% \meta{key} .legacy_if_set:n = \meta{switch}
+% \end{syntax}
+% Defines \meta{key} to set legacy \cs{if} \meta{switch} to \meta{value}
+% (which must be either \enquote{\texttt{true}} or \enquote{\texttt{false}}).
+% The \meta{switch} is the name of the switch \emph{without the leading
+% \cs{if}}. Note that in contrast to \pkg{expl3} variables, the \meta{switch}
+% will \emph{not} be created if it does not exist.
+%
+% The \texttt{inverse} versions will set the \meta{switch} to the logical
+% opposite of the \meta{value}.
+% \end{function}
+%
% \begin{function}[updated = 2013-07-10]{.meta:n}
% \begin{syntax}
% \meta{key} .meta:n = \Arg{keyval list}
@@ -661,6 +679,31 @@
% \cs{l_keys_choice_tl} and \cs{l_keys_choice_int} in exactly
% the same way as described for \texttt{.choices:nn}.
%
+% \subsection{Key usage scope}
+%
+% Some keys will be used as settings which have a strictly limited scope
+% of usage. Some will be only available once, others will only be valid
+% until typesetting begins. To allow formats to support this in a structured
+% way, \pkg{l3keys} allows this information to be specified using the
+% \texttt{.usage:n} property.
+%
+% \begin{function}[added = 2022-01-10]{.usage:n}
+% \begin{syntax}
+% \meta{key} .usage:n = \meta{scope}
+% \end{syntax}
+% Defines the \meta{key} to have usage within the \meta{scope}, which
+% should be one of \texttt{general}, \texttt{preamble} or \texttt{load}.
+% \end{function}
+%
+% \begin{variable}[added = 2022-01-10]
+% {\l_keys_usage_load_prop, \l_keys_usage_preamble_prop}
+% \pkg{l3keys} itself does \emph{not} attempt to redefine keys based on the
+% usage scope. Rather, this information is made available with these
+% two property lists. These hold an entry for each module (prefix); the
+% value of each entry is a comma-separated list of the usage-restricted
+% key(s).
+% \end{variable}
+%
% \section{Setting keys}
%
% \begin{function}[updated = 2017-11-14]
@@ -831,7 +874,8 @@
%
% \section{Utility functions for keys}
%
-% \begin{function}[EXP, pTF, updated = 2017-11-14]{\keys_if_exist:nn}
+% \begin{function}[EXP, pTF, updated = 2022-01-10]
+% {\keys_if_exist:nn, \keys_if_exist:ne}
% \begin{syntax}
% \cs{keys_if_exist_p:nn} \Arg{module} \Arg{key} \\
% \cs{keys_if_exist:nnTF} \Arg{module} \Arg{key} \Arg{true code} \Arg{false code}
@@ -1461,20 +1505,20 @@
% \begin{variable}
% {
% \c_@@_code_root_str ,
+% \c_@@_check_root_str ,
% \c_@@_default_root_str ,
% \c_@@_groups_root_str ,
-% \c_@@_inherit_root_str ,
-% \c_@@_type_root_str ,
-% \c_@@_validate_root_str
+% \c_@@_inherit_root_str ,
+% \c_@@_type_root_str
% }
% Various storage areas for the different data which make up keys.
% \begin{macrocode}
\str_const:Nn \c_@@_code_root_str { key~code~>~ }
+\str_const:Nn \c_@@_check_root_str { key~check~>~ }
\str_const:Nn \c_@@_default_root_str { key~default~>~ }
\str_const:Nn \c_@@_groups_root_str { key~groups~>~ }
\str_const:Nn \c_@@_inherit_root_str { key~inherit~>~ }
\str_const:Nn \c_@@_type_root_str { key~type~>~ }
-\str_const:Nn \c_@@_validate_root_str { key~validate~>~ }
% \end{macrocode}
% \end{variable}
%
@@ -1607,6 +1651,14 @@
% \end{macrocode}
% \end{variable}
%
+% \begin{variable}{\l_keys_usage_load_prop, \l_keys_usage_preamble_prop}
+% Global data for document-level information.
+% \begin{macrocode}
+\prop_new:N \l_keys_usage_load_prop
+\prop_new:N \l_keys_usage_preamble_prop
+% \end{macrocode}
+% \end{variable}
+%
% \subsubsection{Internal auxiliaries}
%
% \begin{variable}{\s_@@_nil,\s_@@_mark,\s_@@_stop}
@@ -1916,7 +1968,7 @@
% \end{macro}
%
% \begin{macro}{\@@_default_set:n}
-% Setting a default value is easy. These are stored using \cs{cs_set:cpx} as this
+% Setting a default value is easy. These are stored using \cs{cs_set_nopar:cpx} as this
% avoids any worries about whether a token list exists.
% \begin{macrocode}
\cs_new_protected:Npn \@@_default_set:n #1
@@ -2060,7 +2112,7 @@
\cs_new_protected:Npn \@@_undefine:
{
\clist_map_inline:nn
- { code , default , groups , inherit , type , validate }
+ { code , default , groups , inherit , type , check }
{
\cs_set_eq:cN
{ \tl_use:c { c_@@_ ##1 _root_str } \l_keys_path_str }
@@ -2071,7 +2123,7 @@
% \end{macro}
%
% \begin{macro}{\@@_value_requirement:nn}
-% \begin{macro}{\@@_validate_forbidden:, \@@_validate_required:}
+% \begin{macro}{\@@_check_forbidden:, \@@_check_required:}
% Validating key input is done using a second function which runs before
% the main key code. Setting that up means setting it equal to a generic
% stub which does the check. This approach makes the lookup very fast at
@@ -2085,17 +2137,17 @@
{ true }
{
\cs_set_eq:cc
- { \c_@@_validate_root_str \l_keys_path_str }
- { @@_validate_ #1 : }
+ { \c_@@_check_root_str \l_keys_path_str }
+ { @@_check_ #1 : }
}
{ false }
{
\cs_if_eq:ccT
- { \c_@@_validate_root_str \l_keys_path_str }
- { @@_validate_ #1 : }
+ { \c_@@_check_root_str \l_keys_path_str }
+ { @@_check_ #1 : }
{
\cs_set_eq:cN
- { \c_@@_validate_root_str \l_keys_path_str }
+ { \c_@@_check_root_str \l_keys_path_str }
\tex_undefined:D
}
}
@@ -2106,7 +2158,7 @@
{ .value_ #1 :n }
}
}
-\cs_new_protected:Npn \@@_validate_forbidden:
+\cs_new_protected:Npn \@@_check_forbidden:
{
\bool_if:NF \l_@@_no_value_bool
{
@@ -2115,7 +2167,7 @@
\use_none:nnn
}
}
-\cs_new_protected:Npn \@@_validate_required:
+\cs_new_protected:Npn \@@_check_required:
{
\bool_if:NT \l_@@_no_value_bool
{
@@ -2128,6 +2180,62 @@
% \end{macro}
% \end{macro}
%
+% \begin{macro}{\@@_usage:n}
+% \begin{macro}{\@@_usage:NN}
+% \begin{macro}{\@@_usage:w}
+% Save the relevant data.
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_usage:n #1
+ {
+ \str_case:nnF {#1}
+ {
+ { general }
+ {
+ \@@_usage:NN \l_keys_usage_load_prop
+ \c_false_bool
+ \@@_usage:NN \l_keys_usage_preamble_prop
+ \c_false_bool
+ }
+ { load }
+ {
+ \@@_usage:NN \l_keys_usage_load_prop
+ \c_true_bool
+ \@@_usage:NN \l_keys_usage_preamble_prop
+ \c_false_bool
+ }
+ { preamble }
+ {
+ \@@_usage:NN \l_keys_usage_load_prop
+ \c_false_bool
+ \@@_usage:NN \l_keys_usage_preamble_prop
+ \c_true_bool
+ }
+ }
+ {
+ \msg_error:nnnn { keys }
+ { choice-unknown }
+ { .usage:n }
+ {#1}
+ }
+ }
+\cs_new_protected:Npn \@@_usage:NN #1#2
+ {
+ \prop_get:NVNF #1 \l_@@_module_str \l_@@_tmpa_tl
+ { \tl_clear:N \l_@@_tmpa_tl }
+ \tl_set:Nx \l_@@_tmpb_tl
+ { \exp_after:wN \@@_usage:w \l_keys_path_str \s_@@_stop }
+ \bool_if:NTF #2
+ { \clist_put_right:NV \l_@@_tmpa_tl \l_@@_tmpb_tl }
+ { \clist_remove_all:NV \l_@@_tmpa_tl \l_@@_tmpb_tl }
+ \prop_put:NVV #1 \l_@@_module_str
+ \l_@@_tmpa_tl
+ }
+\cs_new:Npn \@@_usage:w #1 / #2 \s_@@_stop {#2}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
% \begin{macro}{\@@_variable_set:NnnN, \@@_variable_set:cnnN}
% \begin{macro}{\@@_variable_set_required:NnnN, \@@_variable_set_required:cnnN}
% Setting a variable takes the type and scope separately so that
@@ -2529,6 +2637,13 @@
% \end{macrocode}
% \end{macro}
%
+% \begin{macro}{.usage:n}
+% \begin{macrocode}
+\cs_new_protected:cpn { \c_@@_props_root_str .usage:n } #1
+ { \@@_usage:n {#1} }
+% \end{macrocode}
+% \end{macro}
+%
% \begin{macro}{.value_forbidden:n}
% \begin{macro}{.value_required:n}
% These are very similar, so both call the same function.
@@ -2541,6 +2656,29 @@
% \end{macro}
% \end{macro}
%
+% \subsection{Key properties for \LaTeXe{} options}
+%
+% \begin{macro}{.if, .store, .usage}
+% \begin{macrocode}
+\group_begin:
+ \cs_set_protected:Npn \@@_tmp:nn #1#2
+ {
+ \quark_if_recursion_tail_stop:n {#1}
+ \cs_new_eq:cc
+ { \c_@@_props_root_str . #2 }
+ { \c_@@_props_root_str . #1 }
+ \@@_tmp:nn
+ }
+ \@@_tmp:nn
+ { legacy_if:n } { if }
+ { tl_set:N } { store }
+ { usage:n } { usage }
+ { \q_recursion_tail } { }
+ \q_recursion_stop
+\group_end:
+% \end{macrocode}
+% \end{macro}
+%
% \subsection{Setting keys}
%
% \begin{macro}
@@ -2968,7 +3106,7 @@
{
\cs_if_exist:cTF { \c_@@_code_root_str \l_keys_path_str }
{
- \cs_if_exist_use:c { \c_@@_validate_root_str \l_keys_path_str }
+ \cs_if_exist_use:c { \c_@@_check_root_str \l_keys_path_str }
\@@_execute:no \l_keys_path_str \l_keys_value_tl
}
{
@@ -2992,7 +3130,7 @@
{ \c_@@_code_root_str ##1 / \l_keys_key_str }
{
\str_set:Nn \l_@@_inherit_str {##1}
- \cs_if_exist_use:c { \c_@@_validate_root_str ##1 / \l_keys_key_str }
+ \cs_if_exist_use:c { \c_@@_check_root_str ##1 / \l_keys_key_str }
\@@_execute:no { ##1 / \l_keys_key_str } \l_keys_value_tl
\clist_map_break:n \use_none:n
}
@@ -3231,6 +3369,7 @@
{ \prg_return_true: }
{ \prg_return_false: }
}
+\prg_generate_conditional_variant:Nnn \keys_if_exist:nn { ne } { T , F , TF }
% \end{macrocode}
% \end{macro}
%
diff --git a/macros/latex/contrib/l3kernel/l3legacy.dtx b/macros/latex/contrib/l3kernel/l3legacy.dtx
index 91492a6813..9ffbb1c1e6 100644
--- a/macros/latex/contrib/l3kernel/l3legacy.dtx
+++ b/macros/latex/contrib/l3kernel/l3legacy.dtx
@@ -2,7 +2,7 @@
%
%% File: l3legacy.dtx
%
-% Copyright (C) 2019-2021 The LaTeX Project
+% Copyright (C) 2019-2022 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2021-11-22}
+% \date{Released 2022-01-12}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3luatex.dtx b/macros/latex/contrib/l3kernel/l3luatex.dtx
index 918f36c3ac..f3afe0a091 100644
--- a/macros/latex/contrib/l3kernel/l3luatex.dtx
+++ b/macros/latex/contrib/l3kernel/l3luatex.dtx
@@ -2,7 +2,7 @@
%
%% File: l3luatex.dtx
%
-% Copyright (C) 2010-2021 The LaTeX Project
+% Copyright (C) 2010-2022 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2021-11-22}
+% \date{Released 2022-01-12}
%
% \maketitle
%
@@ -125,34 +125,9 @@
% |ltx.utils| table.
% \end{function}
%
-% \begin{function}[deprecated = 2021-12-31]{l3kernel}
-% For compatibility reasons, there are also some deprecated interfaces provided
-% in the |l3kernel| table. These do not return their result as Lua values but
-% instead print them to \TeX.
-% \end{function}
-%
-% \begin{function}{l3kernel.charcat}
-% \begin{syntax}
-% |l3kernel.charcat(|\meta{charcode}, \meta{catcode}|)|
-% \end{syntax}
-% Constructs a character of \meta{charcode} and \meta{catcode} and returns
-% the result to \TeX{}.
-% \end{function}
-%
-% \begin{function}{l3kernel.elapsedtime}
-% \begin{syntax}
-% |l3kernel.elapsedtime()|
-% \end{syntax}
-% Returns the CPU time in \meta{scaled seconds} since the start of the
-% \TeX{} run or since |l3kernel.resettimer| was issued. This only
-% measures the time used by the CPU, not the real time, e.g., waiting
-% for user input.
-% \end{function}
-%
-% \begin{function}{ltx.utils.filedump, l3kernel.filedump}
+% \begin{function}{ltx.utils.filedump}
% \begin{syntax}
% \meta{dump}| = ltx.utils.filedump(|\meta{file}|,|\meta{offset}|,|\meta{length}|)| \\
-% |l3kernel.filedump(|\meta{file}|,|\meta{offset}|,|\meta{length}|)|
% \end{syntax}
% Returns the uppercase hexadecimal representation of the content of the
% \meta{file} read as bytes. If the \meta{length} is given, only this part
@@ -161,10 +136,9 @@
% is read starting at the \meta{offset}.
% \end{function}
%
-% \begin{function}{ltx.utils.filemd5sum, l3kernel.filemdfivesum}
+% \begin{function}{ltx.utils.filemd5sum}
% \begin{syntax}
% \meta{hash}| = ltx.utils.filemd5sum(|\meta{file}|)| \\
-% |l3kernel.filemdfivesum(|\meta{file}|)|
% \end{syntax}
% Returns the MD5 sum of the file contents read as bytes; note that
% the result will depend on the nature of the line endings used in the file,
@@ -172,10 +146,9 @@
% nothing is returned with \emph{no error raised}.
% \end{function}
%
-% \begin{function}{ltx.utils.filemoddate, l3kernel.filemoddate}
+% \begin{function}{ltx.utils.filemoddate}
% \begin{syntax}
% \meta{date}| = ltx.utils.filemoddate(|\meta{file}|)| \\
-% |l3kernel.filemoddate(|\meta{file}|)|
% \end{syntax}
% Returns the date/time of last modification of the \meta{file} in the
% format
@@ -188,37 +161,14 @@
% not found, nothing is returned with \emph{no error raised}.
% \end{function}
%
-% \begin{function}{ltx.utils.filesize, l3kernel.filesize}
+% \begin{function}{ltx.utils.filesize}
% \begin{syntax}
% |size = ltx.utils.filesize(|\meta{file}|)| \\
-% |l3kernel.filesize(|\meta{file}|)|
% \end{syntax}
% Returns the size of the \meta{file} in bytes. If the \meta{file} is not
% found, nothing is returned with \emph{no error raised}.
% \end{function}
%
-% \begin{function}{l3kernel.resettimer}
-% \begin{syntax}
-% |l3kernel.resettimer()|
-% \end{syntax}
-% Resets the timer used by |l3kernel.elapsetime|.
-% \end{function}
-%
-% \begin{function}{l3kernel.shellescape}
-% \begin{syntax}
-% |l3kernel.shellescape(|\meta{cmd}|)|
-% \end{syntax}
-% Executes the \meta{cmd} and prints to the log as for \pdfTeX{}.
-% \end{function}
-%
-% \begin{function}{l3kernel.strcmp}
-% \begin{syntax}
-% |l3kernel.strcmp(|\meta{str one}, \meta{str two}|)|
-% \end{syntax}
-% Compares the two strings and returns |0| to \TeX{}
-% if the two are identical.
-% \end{function}
-%
% \end{documentation}
%
% \begin{implementation}
@@ -322,18 +272,14 @@
% Most of the emulation of \pdfTeX{} here is based heavily on Heiko Oberdiek's
% \pkg{pdftexcmds} package.
%
-% \begin{macro}{l3kernel}
% \begin{macro}{ltx.utils}
% Create a table for the kernel's own use.
% \begin{macrocode}
-l3kernel = l3kernel or { }
-local l3kernel = l3kernel
ltx = ltx or {utils={}}
ltx.utils = ltx.utils or { }
local ltxutils = ltx.utils
% \end{macrocode}
% \end{macro}
-% \end{macro}
%
% Local copies of global tables.
% \begin{macrocode}
@@ -413,16 +359,6 @@ if not command_id and tokens and tokens.commands then
end
% \end{macrocode}
%
-% \begin{macrocode}
-local function deprecated(table, name, func)
- table[name] = function(...)
- write_nl(format("Calling deprecated Lua function %s", name))
- table[name] = func
- return func(...)
- end
-end
-% \end{macrocode
-%
% Deal with Con\TeX{}t: doesn't use |kpse| library.
% \begin{macrocode}
local kpse_find = (resolvers and resolvers.findfile) or kpse.find_file
@@ -440,40 +376,7 @@ end
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{l3kernel.charcat}
-% Creating arbitrary chars using |tex.cprint|.
-% The alternative approach using |token.put_next(token.create(...))|
-% would be about 10\% slower.
-% \begin{macrocode}
-deprecated(l3kernel, 'charcat', function(charcode, catcode)
- cprint(catcode, utf8_char(charcode))
-end)
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{l3kernel.elapsedtime, l3kernel.resettimer}
-% Simple timing set up: give the result from the system clock in scaled
-% seconds.
-% \begin{macrocode}
-local os_clock = os.clock
-local base_clock_time = 0
-local function elapsedtime()
- local val = (os_clock() - base_clock_time) * 65536 + 0.5
- if val > 2147483647 then
- val = 2147483647
- end
- write(format("%d",floor(val)))
-end
-l3kernel.elapsedtime = elapsedtime
-local function resettimer()
- base_clock_time = os_clock()
-end
-l3kernel.resettimer = resettimer
-% \end{macrocode}
-% \end{macro}
-%
% \begin{macro}{ltx.utils.filedump}
-% \begin{macro}{l3kernel.filedump}
% Similar comments here to the next function: read the file in binary mode
% to avoid any line-end weirdness.
% \begin{macrocode}
@@ -490,15 +393,8 @@ local function filedump(name,offset,length)
return escapehex(data)
end
ltxutils.filedump = filedump
-deprecated(l3kernel, "filedump", function(name, offset, length)
- local dump = filedump(name, tonumber(offset), tonumber(length))
- if dump then
- write(dump)
- end
-end)
% \end{macrocode}
% \end{macro}
-% \end{macro}
%
% \begin{macro}{md5.HEX}
% Hash a string and return the hash in uppercase hexadecimal format.
@@ -516,7 +412,6 @@ end
% \end{macrocode}
% \end{macro}
% \begin{macro}{ltx.utils.filemd5sum}
-% \begin{macro}{l3kernel.filemdfivesum}
% Read an entire file and hash it: the hash function itself is a built-in.
% As Lua is byte-based there is no work needed here in terms of UTF-8
% (see \pkg{pdftexcmds} and how it handles strings that have passed through
@@ -532,18 +427,10 @@ local function filemd5sum(name)
return md5_HEX(data)
end
ltxutils.filemd5sum = filemd5sum
-deprecated(l3kernel, "filemdfivesum", function(name)
- local hash = filemd5sum(name)
- if hash then
- write(hash)
- end
-end)
% \end{macrocode}
% \end{macro}
-% \end{macro}
%
% \begin{macro}{ltx.utils.filemoddate}
-% \begin{macro}{l3kernel.filemoddate}
% There are two cases: If the C standard library is C99 compliant,
% we can use |%z| to get the timezone in almost the right format.
% We only have to add primes and replace a zero or missing offset
@@ -607,18 +494,10 @@ else
end
end
ltxutils.filemoddate = filemoddate
-deprecated(l3kernel, "filemoddate", function(name)
- local hash = filemoddate(name)
- if hash then
- write(hash)
- end
-end)
% \end{macrocode}
% \end{macro}
-% \end{macro}
%
% \begin{macro}{ltx.utils.filesize}
-% \begin{macro}{l3kernel.filesize}
% A simple disk lookup.
% \begin{macrocode}
local function filesize(name)
@@ -631,46 +510,6 @@ local function filesize(name)
end
end
ltxutils.filesize = filesize
-deprecated(l3kernel, "filesize", function(name)
- local size = filesize(name)
- if size then
- write(size)
- end
-end)
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{l3kernel.strcmp}
-% String comparison which gives the same results as \pdfTeX{}'s
-% \tn{pdfstrcmp}, although the ordering should likely not be relied upon!
-% \begin{macrocode}
-deprecated(l3kernel, "strcmp", function (A, B)
- if A == B then
- write("0")
- elseif A < B then
- write("-1")
- else
- write("1")
- end
-end)
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{l3kernel.shellescape}
-% Replicating the \pdfTeX{} log interaction for shell escape.
-% \begin{macrocode}
-local os_exec = os.execute
-deprecated(l3kernel, "shellescape", function(cmd)
- local status,msg = os_exec(cmd)
- if status == nil then
- write_nl("log","runsystem(" .. cmd .. ")...(" .. msg .. ")\n")
- elseif status == 0 then
- write_nl("log","runsystem(" .. cmd .. ")...executed\n")
- else
- write_nl("log","runsystem(" .. cmd .. ")...failed " .. (msg or "") .. "\n")
- end
-end)
% \end{macrocode}
% \end{macro}
%
diff --git a/macros/latex/contrib/l3kernel/l3msg.dtx b/macros/latex/contrib/l3kernel/l3msg.dtx
index d9c76ed8c4..7e0e798ac7 100644
--- a/macros/latex/contrib/l3kernel/l3msg.dtx
+++ b/macros/latex/contrib/l3kernel/l3msg.dtx
@@ -2,7 +2,7 @@
%
%% File: l3msg.dtx
%
-% Copyright (C) 2009-2021 The LaTeX Project
+% Copyright (C) 2009-2022 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2021-11-22}
+% \date{Released 2022-01-12}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3names.dtx b/macros/latex/contrib/l3kernel/l3names.dtx
index e046dd2c80..b113b69e93 100644
--- a/macros/latex/contrib/l3kernel/l3names.dtx
+++ b/macros/latex/contrib/l3kernel/l3names.dtx
@@ -2,7 +2,7 @@
%
%% File: l3names.dtx
%
-% Copyright (C) 1990-2021 The LaTeX Project
+% Copyright (C) 1990-2022 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2021-11-22}
+% \date{Released 2022-01-12}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3news.pdf b/macros/latex/contrib/l3kernel/l3news.pdf
index befc45d0ef..d7f913f988 100644
--- a/macros/latex/contrib/l3kernel/l3news.pdf
+++ b/macros/latex/contrib/l3kernel/l3news.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3news01.pdf b/macros/latex/contrib/l3kernel/l3news01.pdf
index 67f3c2859f..202742981e 100644
--- a/macros/latex/contrib/l3kernel/l3news01.pdf
+++ b/macros/latex/contrib/l3kernel/l3news01.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3news02.pdf b/macros/latex/contrib/l3kernel/l3news02.pdf
index 058c3263ae..209a08c442 100644
--- a/macros/latex/contrib/l3kernel/l3news02.pdf
+++ b/macros/latex/contrib/l3kernel/l3news02.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3news03.pdf b/macros/latex/contrib/l3kernel/l3news03.pdf
index d80bb50b83..21a90825e1 100644
--- a/macros/latex/contrib/l3kernel/l3news03.pdf
+++ b/macros/latex/contrib/l3kernel/l3news03.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3news04.pdf b/macros/latex/contrib/l3kernel/l3news04.pdf
index ac9eda59d7..0cb5536160 100644
--- a/macros/latex/contrib/l3kernel/l3news04.pdf
+++ b/macros/latex/contrib/l3kernel/l3news04.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3news05.pdf b/macros/latex/contrib/l3kernel/l3news05.pdf
index c39fc69f01..d3faca5a8d 100644
--- a/macros/latex/contrib/l3kernel/l3news05.pdf
+++ b/macros/latex/contrib/l3kernel/l3news05.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3news06.pdf b/macros/latex/contrib/l3kernel/l3news06.pdf
index 27ec18702f..302c2b956f 100644
--- a/macros/latex/contrib/l3kernel/l3news06.pdf
+++ b/macros/latex/contrib/l3kernel/l3news06.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3news07.pdf b/macros/latex/contrib/l3kernel/l3news07.pdf
index 1772b26283..5d1e200625 100644
--- a/macros/latex/contrib/l3kernel/l3news07.pdf
+++ b/macros/latex/contrib/l3kernel/l3news07.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3news08.pdf b/macros/latex/contrib/l3kernel/l3news08.pdf
index ede1cc84f3..ea2cdec89f 100644
--- a/macros/latex/contrib/l3kernel/l3news08.pdf
+++ b/macros/latex/contrib/l3kernel/l3news08.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3news09.pdf b/macros/latex/contrib/l3kernel/l3news09.pdf
index bd439b8050..5e07a5b3e0 100644
--- a/macros/latex/contrib/l3kernel/l3news09.pdf
+++ b/macros/latex/contrib/l3kernel/l3news09.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3news10.pdf b/macros/latex/contrib/l3kernel/l3news10.pdf
index b30bfd1a14..f75b24a68a 100644
--- a/macros/latex/contrib/l3kernel/l3news10.pdf
+++ b/macros/latex/contrib/l3kernel/l3news10.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3news11.pdf b/macros/latex/contrib/l3kernel/l3news11.pdf
index bc4097ea8e..4607fc620d 100644
--- a/macros/latex/contrib/l3kernel/l3news11.pdf
+++ b/macros/latex/contrib/l3kernel/l3news11.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3news12.pdf b/macros/latex/contrib/l3kernel/l3news12.pdf
index 306dab5abf..3f9deea149 100644
--- a/macros/latex/contrib/l3kernel/l3news12.pdf
+++ b/macros/latex/contrib/l3kernel/l3news12.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3pdf.dtx b/macros/latex/contrib/l3kernel/l3pdf.dtx
index 5d7779ff4f..347c801e50 100644
--- a/macros/latex/contrib/l3kernel/l3pdf.dtx
+++ b/macros/latex/contrib/l3kernel/l3pdf.dtx
@@ -2,7 +2,7 @@
%
%% File: l3pdf.dtx
%
-% Copyright(C) 2019-2021 The LaTeX Project
+% Copyright(C) 2019-2022 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2021-11-22}
+% \date{Released 2022-01-12}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3prefixes.csv b/macros/latex/contrib/l3kernel/l3prefixes.csv
index d09186e1f2..fa11cc8e3e 100644
--- a/macros/latex/contrib/l3kernel/l3prefixes.csv
+++ b/macros/latex/contrib/l3kernel/l3prefixes.csv
@@ -256,4 +256,5 @@ zero,l3kernel,The LaTeX Project,https://www.latex-project.org/latex3.html,https:
zhlipsum,zhlipsum,Xiangdong Zeng,https://github.com/stone-zeng/zhlipsum,https://github.com/stone-zeng/zhlipsum.git,https://github.com/stone-zeng/zhlipsum/issues,2018-06-14,2018-06-14,
zhnum,zhnumber,Qing Lee,https://github.com/CTeX-org/ctex-kit,https://github.com/CTeX-org/ctex-kit.git,https://github.com/CTeX-org/ctex-kit/issues,2013-03-16,2013-05-26,
zrefcheck,zref-check,Gustavo Barros,https://github.com/gusbrs/zref-check,https://github.com/gusbrs/zref-check,https://github.com/gusbrs/zref-check/issues,2021-08-05,2021-08-05,
+zrefclever,zref-clever,Gustavo Barros,https://github.com/gusbrs/zref-clever,https://github.com/gusbrs/zref-clever,https://github.com/gusbrs/zref-clever/issues,2021-11-29,2021-11-29,
zxjt,zxjatype,Takayuki Yato,,,,2013-03-16,2013-03-16,
diff --git a/macros/latex/contrib/l3kernel/l3prefixes.pdf b/macros/latex/contrib/l3kernel/l3prefixes.pdf
index 3a34636037..b65973c082 100644
--- a/macros/latex/contrib/l3kernel/l3prefixes.pdf
+++ b/macros/latex/contrib/l3kernel/l3prefixes.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3prg.dtx b/macros/latex/contrib/l3kernel/l3prg.dtx
index f6eb57c901..dbeddb192b 100644
--- a/macros/latex/contrib/l3kernel/l3prg.dtx
+++ b/macros/latex/contrib/l3kernel/l3prg.dtx
@@ -2,7 +2,7 @@
%
%% File: l3prg.dtx
%
-% Copyright (C) 2005-2021 The LaTeX Project
+% Copyright (C) 2005-2022 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2021-11-22}
+% \date{Released 2022-01-12}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3prop.dtx b/macros/latex/contrib/l3kernel/l3prop.dtx
index 55d962b292..16db6a427b 100644
--- a/macros/latex/contrib/l3kernel/l3prop.dtx
+++ b/macros/latex/contrib/l3kernel/l3prop.dtx
@@ -2,7 +2,7 @@
%
%% File: l3prop.dtx
%
-% Copyright (C) 1990-2021 The LaTeX Project
+% Copyright (C) 1990-2022 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2021-11-22}
+% \date{Released 2022-01-12}
%
% \maketitle
%
@@ -311,6 +311,21 @@
% the input stream as an \meta{integer denotation}.
% \end{function}
%
+% \begin{function}[EXP]{\prop_to_keyval:N}
+% \begin{syntax}
+% \cs{prop_to_keyval:N} \meta{property list}
+% \end{syntax}
+% Expands to the \meta{property list} in a key--value notation. Keep in mind
+% that a \meta{property list} is \emph{unordered}, while key--value interfaces
+% don't necessarily are, so this can't be used for arbitrary interfaces.
+% \begin{texnote}
+% The result is returned within the \tn{unexpanded} primitive
+% (\cs{exp_not:n}), which means that the key--value list does not expand
+% further when appearing in an \texttt{x}-type argument expansion.
+% It also needs exactly two steps of expansion.
+% \end{texnote}
+% \end{function}
+%
% \section{Modifying property lists}
%
% \begin{function}[added = 2012-05-12]
@@ -1055,6 +1070,79 @@
% \end{macro}
% \end{macro}
%
+% \begin{macro}[EXP]{\prop_to_keyval:N}
+% \begin{macro}[EXP]
+% {\@@_to_keyval_exp_after:wN, \@@_to_keyval:nn, \@@_to_keyval:nnw}
+% Each property name and value pair will be returned in the form
+% \verb*| |\marg{name}\verb*|= |\marg{value}. As one of the main use cases for
+% this macro is to pass the \meta{property list} on to a key--value parser, we
+% have to make sure that the behaviour is as good as possible. Using a space
+% before the opening brace we get the correct brace stripping behaviour for
+% most of the key--value parsers available in \LaTeX.
+% If \cs{tex_expanded:D} is available this function makes use of it, so there
+% are two different implementations here. They both start with
+% \cs{__kernel_exp_not:w} to start the expansion context to expand in two
+% steps. If the \meta{property list} is empty they just leave an empty set of
+% braces in the input stream for \cs{__kernel_exp_not:w}.
+% \begin{macrocode}
+\cs_if_exist:NTF \tex_expanded:D
+ {
+% \end{macrocode}
+% The variant using \cs{tex_expanded:D} can just iterate over the
+% \meta{property list} and remove the leading comma afterwards. Only the value
+% has to be protected in \cs{__kernel_exp_not:w} as the property name is
+% always a string. After the loop the leading comma is removed by
+% \cs{use_none:n} and afterwards \cs{__kernel_exp_not:w} eventually finds the
+% opening brace of its argument.
+% \begin{macrocode}
+ \cs_new:Npn \prop_to_keyval:N #1
+ {
+ \__kernel_exp_not:w
+ \prop_if_empty:NTF #1
+ { {} }
+ {
+ \exp_after:wN \exp_after:wN \exp_after:wN
+ {
+ \tex_expanded:D
+ {
+ \__kernel_exp_not:w { \use_none:n }
+ \prop_map_function:NN #1 \@@_to_keyval:nn
+ }
+ }
+ }
+ }
+ \cs_new:Npn \@@_to_keyval:nn #1#2
+ { , ~ {#1} =~ { \__kernel_exp_not:w {#2} } }
+ }
+% \end{macrocode}
+% The other variant will iterate over the \meta{property list} and has to
+% output the result in a group after the marker
+% \cs{@@_to_keyval_exp_after:wN}. As a result this is considerably slower than
+% the \cs{tex_expanded:D} using variant as it has to read the entire contents
+% of the \meta{property list} for each item. Since the marker is just
+% \cs{exp_after:wN} with another name, after the loop the leading comma is
+% gobbled by \cs{use_none:n}, leaving the result as the argument to
+% \cs{__kernel_exp_not:w}.
+% \begin{macrocode}
+ {
+ \cs_new:Npn \prop_to_keyval:N #1
+ {
+ \__kernel_exp_not:w
+ \prop_if_empty:NTF #1
+ { {} }
+ {
+ \prop_map_function:NN #1 \@@_to_keyval:nnw
+ \@@_to_keyval_exp_after:wN { \use_none:n }
+ }
+ }
+ \cs_new_eq:NN \@@_to_keyval_exp_after:wN \exp_after:wN
+ \cs_new:Npn \@@_to_keyval:nnw #1#2#3 \@@_to_keyval_exp_after:wN #4
+ { #3 \@@_to_keyval_exp_after:wN { #4 , ~ {#1} =~ {#2} } }
+ }
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
% \begin{macro}[TF, tested = m3prop004]
% {\prop_pop:NnN, \prop_pop:cnN, \prop_gpop:NnN, \prop_gpop:cnN}
% Popping an item from a property list, keeping track of whether
diff --git a/macros/latex/contrib/l3kernel/l3quark.dtx b/macros/latex/contrib/l3kernel/l3quark.dtx
index cfa9a985da..2b1bb4eacb 100644
--- a/macros/latex/contrib/l3kernel/l3quark.dtx
+++ b/macros/latex/contrib/l3kernel/l3quark.dtx
@@ -2,7 +2,7 @@
%
%% File: l3quark.dtx
%
-% Copyright (C) 1990-2021 The LaTeX Project
+% Copyright (C) 1990-2022 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2021-11-22}
+% \date{Released 2022-01-12}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3regex.dtx b/macros/latex/contrib/l3kernel/l3regex.dtx
index dd95825c87..cab4d738bf 100644
--- a/macros/latex/contrib/l3kernel/l3regex.dtx
+++ b/macros/latex/contrib/l3kernel/l3regex.dtx
@@ -2,7 +2,7 @@
%
%% File: l3regex.dtx
%
-% Copyright (C) 2011-2021 The LaTeX Project
+% Copyright (C) 2011-2022 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2021-11-22}
+% \date{Released 2022-01-12}
%
% \maketitle
%
@@ -99,7 +99,7 @@
%
% \section{Syntax of regular expressions}
%
-% \subsection{Regex examples}
+% \subsection{Regular expression examples}
%
% We start with a few examples, and encourage the reader to apply
% \cs{regex_show:n} to these regular expressions.
@@ -620,6 +620,38 @@
% results in \cs[no-index]{l_foo_int} taking the value $5$.
% \end{function}
%
+% \begin{function}[noTF, added = 2022-01-10]{\regex_match_case:nn}
+% \begin{syntax}
+% \cs{regex_match_case:nnTF}
+% ~~|{| \\
+% ~~~~\Arg{regex_1} \Arg{code case_1} \\
+% ~~~~\Arg{regex_2} \Arg{code case_2} \\
+% ~~~~\ldots \\
+% ~~~~\Arg{regex_n} \Arg{code case_n} \\
+% ~~|}| \Arg{token list}
+% ~~\Arg{true code} \Arg{false code}
+% \end{syntax}
+% Determines which of the \meta{regular expressions} matches at the
+% earliest point in the \meta{token list}, and leaves the
+% corresponding \meta{code_i} followed by the \meta{true code} in the
+% input stream. If several \meta{regex} match starting at the same
+% point, then the first one in the list is selected and the others are
+% discarded. If none of the \meta{regex} match, the \meta{false code}
+% is left in the input stream. Each \meta{regex} can either be given
+% as a regex variable or as an explicit regular expression.
+%
+% In detail, for each starting position in the \meta{token list}, each
+% of the \meta{regex} is searched in turn. If one of them matches
+% then the corresponding \meta{code} is used and everything else is
+% discarded, while if none of the \meta{regex} match at a given
+% position then the next starting position is attempted. If none of
+% the \meta{regex} match anywhere in the \meta{token list} then
+% nothing is left in the input stream. Note that this differs from
+% nested \cs{regex_match:nnTF} statements since all \meta{regex} are
+% attempted at each position rather than attempting to match
+% \meta{regex_1} at every position before moving on to \meta{regex_2}.
+% \end{function}
+%
% \section{Submatch extraction}
%
% \begin{function}[noTF, added = 2017-05-26]
@@ -734,6 +766,74 @@
% locally to \meta{tl~var}.
% \end{function}
%
+% \begin{function}[noTF, added = 2022-01-10]{\regex_replace_case_once:nN}
+% \begin{syntax}
+% \cs{regex_replace_case_once:nNTF}
+% ~~|{| \\
+% ~~~~\Arg{regex_1} \Arg{replacement_1} \\
+% ~~~~\Arg{regex_2} \Arg{replacement_2} \\
+% ~~~~\ldots \\
+% ~~~~\Arg{regex_n} \Arg{replacement_n} \\
+% ~~|}| \meta{tl~var}
+% ~~\Arg{true code} \Arg{false code}
+% \end{syntax}
+% Replaces the earliest match of the regular expression
+% "(?|"\meta{regex_1}"|"\dots"|"\meta{regex_n}")" in the \meta{token
+% list variable} by the \meta{replacement} corresponding to which
+% \meta{regex_i} matched, then leaves the \meta{true code} in the
+% input stream. If none of the \meta{regex} match, then the
+% \meta{tl~var} is not modified, and the \meta{false code} is left in
+% the input stream. Each \meta{regex} can either be given as a regex
+% variable or as an explicit regular expression.
+%
+% In detail, for each starting position in the \meta{token list}, each
+% of the \meta{regex} is searched in turn. If one of them matches
+% then it is replaced by the corresponding \meta{replacement} as
+% described for \cs{regex_replace_once:nnN}. This is equivalent to
+% checking with \cs{regex_match_case:nn} which \meta{regex} matches,
+% then performing the replacement with \cs{regex_replace_once:nnN}.
+% \end{function}
+%
+% \begin{function}[noTF, added = 2022-01-10]{\regex_replace_case_all:nN}
+% \begin{syntax}
+% \cs{regex_replace_case_all:nNTF}
+% ~~|{| \\
+% ~~~~\Arg{regex_1} \Arg{replacement_1} \\
+% ~~~~\Arg{regex_2} \Arg{replacement_2} \\
+% ~~~~\ldots \\
+% ~~~~\Arg{regex_n} \Arg{replacement_n} \\
+% ~~|}| \meta{tl~var}
+% ~~\Arg{true code} \Arg{false code}
+% \end{syntax}
+% Replaces all occurrences of all \meta{regex} in the \meta{token
+% list} by the corresponding \meta{replacement}. Every match is
+% treated independently, and matches cannot overlap. The result is
+% assigned locally to \meta{tl~var}, and the \meta{true code} or
+% \meta{false code} is left in the input stream depending on whether
+% any replacement was made or not.
+%
+% In detail, for each starting position in the \meta{token list}, each
+% of the \meta{regex} is searched in turn. If one of them matches
+% then it is replaced by the corresponding \meta{replacement}, and the
+% search resumes at the position that follows this match (and
+% replacement). For instance
+% \begin{verbatim}
+% \tl_set:Nn \l_tmpa_tl { Hello,~world! }
+% \regex_replace_case_all:nN
+% {
+% { [A-Za-z]+ } { ``\0'' }
+% { \b } { --- }
+% { . } { [\0] }
+% } \l_tmpa_tl
+% \end{verbatim}
+% results in \cs{l_tmpa_tl} having the contents
+% \verb*|``Hello''---[,][ ]``world''---[!]|. Note in particular that
+% the word-boundary assertion |\b| did not match at the start of words
+% because the case |[A-Za-z]+| matched at these positions. To change
+% this, one could simply swap the order of the two cases in the
+% argument of \cs{regex_replace_case_all:nN}.
+% \end{function}
+%
% \section{Scratch regular expressions}
%
% \begin{variable}[added = 2017-12-11]{\l_tmpa_regex, \l_tmpb_regex}
@@ -786,7 +886,7 @@
% \texttt{curr_state} and \texttt{curr_submatches}.
% \item If possible, when a state is reused by the same thread, kill
% other subthreads.
-% \item Use an array rather than \cs[no-index]{l__regex_balance_tl}
+% \item Use an array rather than \cs[no-index]{g__regex_balance_tl}
% to build the function \cs[no-index]{__regex_replacement_balance_one_match:n}.
% \item Reduce the number of epsilon-transitions in alternatives.
% \item Optimize simple strings: use less states (|abcade| should give
@@ -1100,6 +1200,26 @@
% \end{macrocode}
% \end{macro}
%
+% \begin{macro}{\@@_tl_odd_items:n, \@@_tl_even_items:n, \@@_tl_even_items_loop:nn}
+% Map through a token list one pair at a time, leaving the
+% odd-numbered or even-numbered items (the first item is
+% numbered~$1$).
+% \begin{macrocode}
+\cs_new:Npn \@@_tl_odd_items:n #1 { \@@_tl_even_items:n { ? #1 } }
+\cs_new:Npn \@@_tl_even_items:n #1
+ {
+ \@@_tl_even_items_loop:nn #1 \q_@@_nil \q_@@_nil
+ \prg_break_point:
+ }
+\cs_new:Npn \@@_tl_even_items_loop:nn #1#2
+ {
+ \@@_use_none_delimit_by_q_nil:w #2 \prg_break: \q_@@_nil
+ { \exp_not:n {#2} }
+ \@@_tl_even_items_loop:nn
+ }
+% \end{macrocode}
+% \end{macro}
+%
% \subsubsection{Constants and variables}
%
% \begin{macro}{\@@_tmp:w}
@@ -1186,9 +1306,17 @@
% \end{macrocode}
% \end{variable}
%
+% \begin{variable}{\q_@@_nil}
+% Internal quarks.
+% \begin{macrocode}
+\quark_new:N \q_@@_nil
+% \end{macrocode}
+% \end{variable}
+%
% \begin{macro}[EXP]{
% \@@_use_none_delimit_by_q_recursion_stop:w,
-% \@@_use_i_delimit_by_q_recursion_stop:nw
+% \@@_use_i_delimit_by_q_recursion_stop:nw,
+% \@@_use_none_delimit_by_q_nil:w,
% }
% Functions to gobble up to a quark.
% \begin{macrocode}
@@ -1196,16 +1324,10 @@
#1 \q_@@_recursion_stop { }
\cs_new:Npn \@@_use_i_delimit_by_q_recursion_stop:nw
#1 #2 \q_@@_recursion_stop {#1}
+\cs_new:Npn \@@_use_none_delimit_by_q_nil:w #1 \q_@@_nil { }
% \end{macrocode}
% \end{macro}
%
-% \begin{variable}{\q_@@_nil}
-% Internal quarks.
-% \begin{macrocode}
-\quark_new:N \q_@@_nil
-% \end{macrocode}
-% \end{variable}
-%
% \begin{macro}[pTF]{\@@_quark_if_nil:n}
% Branching quark conditional.
% \begin{macrocode}
@@ -2343,6 +2465,29 @@
% \end{macrocode}
% \end{macro}
%
+% \begin{macro}{\@@_compile_use:n}
+% Use a regex, regardless of whether it is given as a string (in which
+% case we need to compile) or as a regex variable. This is used for
+% \cs{regex_match_case:nn} and related functions to allow a mixture of
+% explicit regex and regex variables.
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_compile_use:n #1
+ {
+ \tl_if_single_token:nT {#1}
+ {
+ \exp_after:wN \@@_compile_use_aux:w
+ \token_to_meaning:N #1 ~ \q_@@_nil
+ }
+ \@@_compile:n {#1} \l_@@_internal_regex
+ }
+\cs_new_protected:Npn \@@_compile_use_aux:w #1 ~ #2 \q_@@_nil
+ {
+ \str_if_eq:nnT { #1 ~ } { macro:->\@@_branch:n }
+ { \use_ii:nnn }
+ }
+% \end{macrocode}
+% \end{macro}
+%
% \begin{macro}{\@@_compile_escaped:N, \@@_compile_special:N}
% If the special character or escaped alphanumeric has a particular
% meaning in regexes, the corresponding function is used. Otherwise,
@@ -4154,6 +4299,80 @@
% \end{macrocode}
% \end{macro}
%
+% \begin{variable}{\g_@@_case_int}
+% Case number that was successfully matched in
+% \cs{regex_match_case:nn} and related functions.
+% \begin{macrocode}
+\int_new:N \g_@@_case_int
+% \end{macrocode}
+% \end{variable}
+%
+% \begin{variable}{\l_@@_case_max_group_int}
+% The largest group number appearing in any of the \meta{regex} in the
+% argument of \cs{regex_match_case:nn} and related functions.
+% \begin{macrocode}
+\int_new:N \l_@@_case_max_group_int
+% \end{macrocode}
+% \end{variable}
+%
+% \begin{macro}{\@@_case_build:n, \@@_case_build:x, \@@_case_build_aux:Nn, \@@_case_build_loop:n}
+% See \cs{@@_build:n}, but with a loop.
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_case_build:n #1
+ {
+ \@@_case_build_aux:Nn \c_true_bool {#1}
+ \int_gzero:N \g_@@_case_int
+ }
+\cs_generate_variant:Nn \@@_case_build:n { x }
+\cs_new_protected:Npn \@@_case_build_aux:Nn #1#2
+ {
+ \@@_standard_escapechar:
+ \int_set_eq:NN \l_@@_max_state_int \l_@@_min_state_int
+ \@@_build_new_state:
+ \@@_build_new_state:
+ \@@_toks_put_right:Nn \l_@@_left_state_int
+ { \@@_action_start_wildcard:N #1 }
+ %
+ \@@_build_new_state:
+ \@@_toks_put_left:Nx \l_@@_left_state_int
+ { \@@_action_submatch:nN { 0 } < }
+ \@@_push_lr_states:
+ \int_zero:N \l_@@_case_max_group_int
+ \int_gzero:N \g_@@_case_int
+ \tl_map_inline:nn {#2}
+ {
+ \int_gincr:N \g_@@_case_int
+ \@@_case_build_loop:n {##1}
+ }
+ \int_set_eq:NN \l_@@_capturing_group_int \l_@@_case_max_group_int
+ \@@_pop_lr_states:
+ }
+\cs_new_protected:Npn \@@_case_build_loop:n #1
+ {
+ \int_set:Nn \l_@@_capturing_group_int { 1 }
+ \@@_compile_use:n {#1}
+ \int_set:Nn \l_@@_case_max_group_int
+ {
+ \int_max:nn { \l_@@_case_max_group_int }
+ { \l_@@_capturing_group_int }
+ }
+ \seq_pop:NN \l_@@_right_state_seq \l_@@_internal_a_tl
+ \int_set:Nn \l_@@_right_state_int \l_@@_internal_a_tl
+ \@@_toks_put_left:Nx \l_@@_right_state_int
+ {
+ \@@_action_submatch:nN { 0 } >
+ \int_gset:Nn \g_@@_case_int
+ { \int_use:N \g_@@_case_int }
+ \@@_action_success:
+ }
+ \@@_toks_clear:N \l_@@_max_state_int
+ \seq_push:No \l_@@_right_state_seq
+ { \int_use:N \l_@@_max_state_int }
+ \int_incr:N \l_@@_max_state_int
+ }
+% \end{macrocode}
+% \end{macro}
+%
% \begin{macro}{\@@_build_for_cs:n}
% The matching code relies on some global intarray variables, but only
% uses a range of their entries. Specifically,
@@ -4495,7 +4714,7 @@
% the group, and leaves \texttt{internal_a} pointing to the left end
% of the last repetition. We only record the submatch information at
% the last repetition. Finally, add a state at the end (the transition
-% to it has been taken care of by the replicating auxiliary.
+% to it has been taken care of by the replicating auxiliary).
% \begin{macrocode}
\cs_new_protected:Npn \@@_group_repeat:nn #1#2
{
@@ -5425,12 +5644,12 @@
% \end{macrocode}
% \end{variable}
%
-% \begin{variable}{\l_@@_balance_tl}
+% \begin{variable}{\g_@@_balance_tl}
% This token list holds the replacement text for
% \cs{@@_replacement_balance_one_match:n} while it is being built
% incrementally.
% \begin{macrocode}
-\tl_new:N \l_@@_balance_tl
+\tl_new:N \g_@@_balance_tl
% \end{macrocode}
% \end{variable}
%
@@ -5573,11 +5792,11 @@
%
% \subsubsection{Framework}
%
-% \begin{macro}{\@@_replacement:n}
-% \begin{macro}{\@@_replacement_aux:n}
+% \begin{macro}{\@@_replacement:n, \@@_replacement:x}
+% \begin{macro}{\@@_replacement_apply:Nn, \@@_replacement_set:n}
% The replacement text is built incrementally. We keep track in
% \cs{l_@@_balance_int} of the balance of explicit begin- and
-% end-group tokens and we store in \cs{l_@@_balance_tl} some
+% end-group tokens and we store in \cs{g_@@_balance_tl} some
% code to compute the brace balance from submatches (see its
% description). Detect unescaped right braces, and escaped characters,
% with trailing \cs{prg_do_nothing:} because some of the later
@@ -5585,12 +5804,14 @@
% parsed, make sure that there is no open csname. Finally, define the
% \texttt{balance_one_match} and \texttt{do_one_match} functions.
% \begin{macrocode}
-\cs_new_protected:Npn \@@_replacement:n #1
+\cs_new_protected:Npn \@@_replacement:n
+ { \@@_replacement_apply:Nn \@@_replacement_set:n }
+\cs_new_protected:Npn \@@_replacement_apply:Nn #1#2
{
\group_begin:
\tl_build_begin:N \l_@@_build_tl
\int_zero:N \l_@@_balance_int
- \tl_clear:N \l_@@_balance_tl
+ \tl_gclear:N \g_@@_balance_tl
\@@_escape_use:nnnn
{
\if_charcode:w \c_right_brace_str ##1
@@ -5606,7 +5827,7 @@
}
{ \@@_replacement_escaped:N ##1 }
{ \@@_replacement_normal:n ##1 }
- {#1}
+ {#2}
\prg_do_nothing: \prg_do_nothing:
\if_int_compare:w \l_@@_replacement_csnames_int > \c_zero_int
\msg_error:nnx { regex } { replacement-missing-rbrace }
@@ -5620,18 +5841,15 @@
{ \seq_count:N \l_@@_replacement_category_seq }
\seq_clear:N \l_@@_replacement_category_seq
}
- \cs_gset:Npx \@@_replacement_balance_one_match:n ##1
- {
- + \int_use:N \l_@@_balance_int
- \l_@@_balance_tl
- - \@@_submatch_balance:n {##1}
- }
+ \tl_gput_right:Nx \g_@@_balance_tl
+ { + \int_use:N \l_@@_balance_int }
\tl_build_end:N \l_@@_build_tl
\exp_args:NNo
\group_end:
- \@@_replacement_aux:n \l_@@_build_tl
+ #1 \l_@@_build_tl
}
-\cs_new_protected:Npn \@@_replacement_aux:n #1
+\cs_generate_variant:Nn \@@_replacement:n { x }
+\cs_new_protected:Npn \@@_replacement_set:n #1
{
\cs_set:Npn \@@_replacement_do_one_match:n ##1
{
@@ -5646,11 +5864,47 @@
}
#1
}
+ \exp_args:Nno \use:n
+ { \cs_gset:Npn \@@_replacement_balance_one_match:n ##1 }
+ {
+ \g_@@_balance_tl
+ - \@@_submatch_balance:n {##1}
+ }
}
% \end{macrocode}
% \end{macro}
% \end{macro}
%
+% \begin{macro}{\@@_case_replacement:n, \@@_case_replacement:x}
+% \begin{macrocode}
+\tl_new:N \g_@@_case_replacement_tl
+\tl_new:N \g_@@_case_balance_tl
+\cs_new_protected:Npn \@@_case_replacement:n #1
+ {
+ \tl_gset:Nn \g_@@_case_balance_tl
+ {
+ \if_case:w
+ \__kernel_intarray_item:Nn
+ \g_@@_submatch_case_intarray {##1}
+ }
+ \tl_gset_eq:NN \g_@@_case_replacement_tl \g_@@_case_balance_tl
+ \tl_map_tokens:nn {#1}
+ { \@@_replacement_apply:Nn \@@_case_replacement_aux:n }
+ \tl_gset:No \g_@@_balance_tl
+ { \g_@@_case_balance_tl \fi: }
+ \exp_args:No \@@_replacement_set:n
+ { \g_@@_case_replacement_tl \fi: }
+ }
+\cs_generate_variant:Nn \@@_case_replacement:n { x }
+\cs_new_protected:Npn \@@_case_replacement_aux:n #1
+ {
+ \tl_gput_right:Nn \g_@@_case_replacement_tl { \or: #1 }
+ \tl_gput_right:No \g_@@_case_balance_tl
+ { \exp_after:wN \or: \g_@@_balance_tl }
+ }
+% \end{macrocode}
+% \end{macro}
+%
% \begin{macro}{\@@_replacement_put:n}
% This gets redefined for \cs{peek_regex_replace_once:nnTF}.
% \begin{macrocode}
@@ -5751,7 +6005,7 @@
% construction, it must be taken into account in the brace balance.
% Later on, |##1| will be replaced by a pointer to the $0$-th submatch for a
% given match. There is an \cs{exp_not:N} here as at the point-of-use
-% of \cs{l_@@_balance_tl} there is an \texttt{x}-type expansion which is needed
+% of \cs{g_@@_balance_tl} there is an \texttt{x}-type expansion which is needed
% to get |##1| in correctly.
% \begin{macrocode}
\cs_new_protected:Npn \@@_replacement_put_submatch:n #1
@@ -5768,11 +6022,8 @@
\tl_build_put_right:Nn \l_@@_build_tl
{ \@@_query_submatch:n { \int_eval:n { #1 + ##1 } } }
\if_int_compare:w \l_@@_replacement_csnames_int = \c_zero_int
- \tl_put_right:Nn \l_@@_balance_tl
- {
- + \@@_submatch_balance:n
- { \exp_not:N \int_eval:n { #1 + ##1 } }
- }
+ \tl_gput_right:Nn \g_@@_balance_tl
+ { + \@@_submatch_balance:n { \int_eval:n { #1 + ##1 } } }
\fi:
}
% \end{macrocode}
@@ -6269,6 +6520,29 @@
% \end{macrocode}
% \end{macro}
%
+% \begin{macro}[noTF]{\regex_match_case:nn}
+% The auxiliary errors if |#1| has an odd number of items, and
+% otherwise it sets \cs{g_@@_case_int} according to which case was
+% found (zero if not found). The \texttt{true} branch leaves the
+% corresponding code in the input stream.
+% \begin{macrocode}
+\cs_new_protected:Npn \regex_match_case:nnTF #1#2#3
+ {
+ \@@_match_case:nnTF {#1} {#2}
+ {
+ \tl_item:nn {#1} { 2 * \g_@@_case_int }
+ #3
+ }
+ }
+\cs_new_protected:Npn \regex_match_case:nn #1#2
+ { \regex_match_case:nnTF {#1} {#2} { } { } }
+\cs_new_protected:Npn \regex_match_case:nnT #1#2#3
+ { \regex_match_case:nnTF {#1} {#2} {#3} { } }
+\cs_new_protected:Npn \regex_match_case:nnF #1#2
+ { \regex_match_case:nnTF {#1} {#2} { } }
+% \end{macrocode}
+% \end{macro}
+%
% \begin{macro}[noTF]
% {
% \regex_extract_once:nnN, \regex_extract_once:NnN,
@@ -6306,6 +6580,72 @@
% \end{macrocode}
% \end{macro}
%
+% \begin{macro}[noTF]{\regex_replace_case_once:nN}
+% If the input is bad (odd number of items) then take the false
+% branch. Otherwise, use the same auxiliary as
+% \cs{regex_replace_once:nnN}, but with more complicated code to build
+% the automaton, and to find what replacement text to use. The
+% \cs{tl_item:nn} is only expanded once we know the value of
+% \cs{g_@@_case_int}, namely which case matched.
+% \begin{macrocode}
+\cs_new_protected:Npn \regex_replace_case_once:nNTF #1#2
+ {
+ \int_if_odd:nTF { \tl_count:n {#1} }
+ {
+ \msg_error:nnxxxx { regex } { case-odd }
+ { \token_to_str:N \regex_replace_case_once:nN(TF) } { code }
+ { \tl_count:n {#1} } { \tl_to_str:n {#1} }
+ \use_ii:nn
+ }
+ {
+ \@@_replace_once_aux:nnN
+ { \@@_case_build:x { \@@_tl_odd_items:n {#1} } }
+ { \@@_replacement:x { \tl_item:nn {#1} { 2 * \g_@@_case_int } } }
+ #2
+ \bool_if:NTF \g_@@_success_bool
+ }
+ }
+\cs_new_protected:Npn \regex_replace_case_once:nN #1#2
+ { \regex_replace_case_once:nNTF {#1} {#2} { } { } }
+\cs_new_protected:Npn \regex_replace_case_once:nNT #1#2#3
+ { \regex_replace_case_once:nNTF {#1} {#2} {#3} { } }
+\cs_new_protected:Npn \regex_replace_case_once:nNF #1#2
+ { \regex_replace_case_once:nNTF {#1} {#2} { } }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}[noTF]{\regex_case_replace_all:nN}
+% If the input is bad (odd number of items) then take the false
+% branch. Otherwise, use the same auxiliary as
+% \cs{regex_replace_all:nnN}, but with more complicated code to build
+% the automaton, and to find what replacement text to use.
+% \begin{macrocode}
+\cs_new_protected:Npn \regex_replace_case_all:nNTF #1#2
+ {
+ \int_if_odd:nTF { \tl_count:n {#1} }
+ {
+ \msg_error:nnxxxx { regex } { case-odd }
+ { \token_to_str:N \regex_replace_case_all:nN(TF) } { code }
+ { \tl_count:n {#1} } { \tl_to_str:n {#1} }
+ \use_ii:nn
+ }
+ {
+ \@@_replace_all_aux:nnN
+ { \@@_case_build:x { \@@_tl_odd_items:n {#1} } }
+ { \@@_case_replacement:x { \@@_tl_even_items:n {#1} } }
+ #2
+ \bool_if:NTF \g_@@_success_bool
+ }
+ }
+\cs_new_protected:Npn \regex_replace_case_all:nN #1#2
+ { \regex_replace_case_all:nNTF {#1} {#2} { } { } }
+\cs_new_protected:Npn \regex_replace_case_all:nNT #1#2#3
+ { \regex_replace_case_all:nNTF {#1} {#2} {#3} { } }
+\cs_new_protected:Npn \regex_replace_case_all:nNF #1#2
+ { \regex_replace_case_all:nNTF {#1} {#2} { } }
+% \end{macrocode}
+% \end{macro}
+%
% \subsubsection{Variables and helpers for user functions}
%
% \begin{variable}{\l_@@_match_count_int}
@@ -6343,12 +6683,14 @@
% \end{macrocode}
% \end{variable}
%
-% \begin{variable}{\g_@@_submatch_prev_intarray, \g_@@_submatch_begin_intarray, \g_@@_submatch_end_intarray}
-% Hold the place where the match attempt begun and the end-points of each submatch.
+% \begin{variable}{\g_@@_submatch_prev_intarray, \g_@@_submatch_begin_intarray, \g_@@_submatch_end_intarray, \g_@@_submatch_case_intarray}
+% Hold the place where the match attempt begun, the end-points of each
+% submatch, and which regex case the match corresponds to, respectively.
% \begin{macrocode}
\intarray_new:Nn \g_@@_submatch_prev_intarray { 65536 }
\intarray_new:Nn \g_@@_submatch_begin_intarray { 65536 }
\intarray_new:Nn \g_@@_submatch_end_intarray { 65536 }
+\intarray_new:Nn \g_@@_submatch_case_intarray { 65536 }
% \end{macrocode}
% \end{variable}
%
@@ -6433,6 +6775,34 @@
% \end{macrocode}
% \end{macro}
%
+% \begin{macro}{\@@_match_case:nnTF}
+% \begin{macro}[EXP]{\@@_match_case_aux:nn}
+% The code would get badly messed up if the number of items in |#1|
+% were not even, so we catch this case, then follow the same code as
+% \cs{regex_match:nnTF} but using \cs{@@_case_build:n} and without
+% returning a result.
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_match_case:nnTF #1#2
+ {
+ \int_if_odd:nTF { \tl_count:n {#1} }
+ {
+ \msg_error:nnxxxx { regex } { case-odd }
+ { \token_to_str:N \regex_match_case:nn(TF) } { code }
+ { \tl_count:n {#1} } { \tl_to_str:n {#1} }
+ \use_ii:nn
+ }
+ {
+ \@@_if_match:nn
+ { \@@_case_build:x { \@@_tl_odd_items:n {#1} } }
+ {#2}
+ \bool_if:NTF \g_@@_success_bool
+ }
+ }
+\cs_new:Npn \@@_match_case_aux:nn #1#2 { \exp_not:n { {#1} } }
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
% \begin{macro}{\@@_count:nnN}
% Again, we don't care about submatches. Instead of aborting after the
% first \enquote{longest match} is found, we search for multiple
@@ -6739,10 +7109,14 @@
{
\__kernel_intarray_gset:Nnn \g_@@_submatch_prev_intarray
{ \l_@@_submatch_int } { 0 }
+ \__kernel_intarray_gset:Nnn \g_@@_submatch_case_intarray
+ { \l_@@_submatch_int } { 0 }
\int_incr:N \l_@@_submatch_int
}
\__kernel_intarray_gset:Nnn \g_@@_submatch_prev_intarray
{ \l_@@_zeroth_submatch_int } { \l_@@_start_pos_int }
+ \__kernel_intarray_gset:Nnn \g_@@_submatch_case_intarray
+ { \l_@@_zeroth_submatch_int } { \g_@@_case_int }
\int_zero:N \l_@@_internal_a_int
\exp_after:wN \@@_extract_aux:w \l_@@_success_submatches_tl
\prg_break_point: \@@_use_none_delimit_by_q_recursion_stop:w ,
@@ -6767,7 +7141,7 @@
%
% \subsubsection{Replacement}
%
-% \begin{macro}{\@@_replace_once:nnN}
+% \begin{macro}{\@@_replace_once:nnN, \@@_replace_once_aux:nnN}
% Build the \textsc{nfa} and the replacement functions, then find a
% single match. If the match failed, simply exit the
% group. Otherwise, we do the replacement. Extract submatches. Compute
@@ -6781,18 +7155,19 @@
% \texttt{x}-expansion, and checks that braces are balanced in the
% final result.
% \begin{macrocode}
-\cs_new_protected:Npn \@@_replace_once:nnN #1#2#3
+\cs_new_protected:Npn \@@_replace_once:nnN #1#2
+ { \@@_replace_once_aux:nnN {#1} { \@@_replacement:n {#2} } }
+\cs_new_protected:Npn \@@_replace_once_aux:nnN #1#2#3
{
\group_begin:
\@@_single_match:
#1
\exp_args:No \@@_match:n {#3}
- \if_meaning:w \c_false_bool \g_@@_success_bool
- \group_end:
- \else:
+ \bool_if:NTF \g_@@_success_bool
+ {
\@@_extract:
\exp_args:No \@@_query_set:n {#3}
- \@@_replacement:n {#2}
+ #2
\int_set:Nn \l_@@_balance_int
{
\@@_replacement_balance_one_match:n
@@ -6810,7 +7185,8 @@
{ \l_@@_max_pos_int }
}
\@@_group_end_replace:N #3
- \fi:
+ }
+ { \group_end: }
}
% \end{macrocode}
% \end{macro}
@@ -6827,14 +7203,16 @@
% match. Join together the replacement texts for each match (including
% the part of the query before the match), and the end of the query.
% \begin{macrocode}
-\cs_new_protected:Npn \@@_replace_all:nnN #1#2#3
+\cs_new_protected:Npn \@@_replace_all:nnN #1#2
+ { \@@_replace_all_aux:nnN {#1} { \@@_replacement:n {#2} } }
+\cs_new_protected:Npn \@@_replace_all_aux:nnN #1#2#3
{
\group_begin:
\@@_multi_match:n { \@@_extract: }
#1
\exp_args:No \@@_match:n {#3}
\exp_args:No \@@_query_set:n {#3}
- \@@_replacement:n {#2}
+ #2
\int_set:Nn \l_@@_balance_int
{
0
@@ -7617,8 +7995,15 @@
{ The~values~given~in~a~quantifier~must~be~in~order. }
% \end{macrocode}
%
-% Used when showing a regex.
+% Used in user commands, and when showing a regex.
% \begin{macrocode}
+\msg_new:nnnn { regex } { case-odd }
+ { #1~with~odd~number~of~items }
+ {
+ There~must~be~a~#2~part~for~each~regex:~
+ found~odd~number~of~items~(#3)~in\\
+ \iow_indent:n {#4}
+ }
\msg_new:nnn { regex } { show }
{
>~Compiled~regex~
diff --git a/macros/latex/contrib/l3kernel/l3seq.dtx b/macros/latex/contrib/l3kernel/l3seq.dtx
index f6d5611de6..3800fc99d8 100644
--- a/macros/latex/contrib/l3kernel/l3seq.dtx
+++ b/macros/latex/contrib/l3kernel/l3seq.dtx
@@ -2,7 +2,7 @@
%
%% File: l3seq.dtx
%
-% Copyright (C) 1990-2021 The LaTeX Project
+% Copyright (C) 1990-2022 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2021-11-22}
+% \date{Released 2022-01-12}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3skip.dtx b/macros/latex/contrib/l3kernel/l3skip.dtx
index 0f00ceb209..7e98d77f3e 100644
--- a/macros/latex/contrib/l3kernel/l3skip.dtx
+++ b/macros/latex/contrib/l3kernel/l3skip.dtx
@@ -3,7 +3,7 @@
%% File: l3skip.dtx
%
% Copyright (C) 2004-2011 Frank Mittelbach, The LaTeX Project
-% (C) 2012-2021 The LaTeX Project
+% (C) 2012-2022 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2021-11-22}
+% \date{Released 2022-01-12}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3sort.dtx b/macros/latex/contrib/l3kernel/l3sort.dtx
index 04d00e83d9..7781995193 100644
--- a/macros/latex/contrib/l3kernel/l3sort.dtx
+++ b/macros/latex/contrib/l3kernel/l3sort.dtx
@@ -2,7 +2,7 @@
%
%% File l3sort.dtx
%
-% Copyright (C) 2012-2021 The LaTeX Project
+% Copyright (C) 2012-2022 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2021-11-22}
+% \date{Released 2022-01-12}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3str-convert.dtx b/macros/latex/contrib/l3kernel/l3str-convert.dtx
index 50e5e82ccb..49e0ef8d49 100644
--- a/macros/latex/contrib/l3kernel/l3str-convert.dtx
+++ b/macros/latex/contrib/l3kernel/l3str-convert.dtx
@@ -2,7 +2,7 @@
%
%% File: l3str-convert.dtx
%
-% Copyright (C) 2013-2021 The LaTeX Project
+% Copyright (C) 2013-2022 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2021-11-22}
+% \date{Released 2022-01-12}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3str.dtx b/macros/latex/contrib/l3kernel/l3str.dtx
index 89f7177e00..637d892b4e 100644
--- a/macros/latex/contrib/l3kernel/l3str.dtx
+++ b/macros/latex/contrib/l3kernel/l3str.dtx
@@ -2,7 +2,7 @@
%
%% File: l3str.dtx
%
-% Copyright (C) 2011-2021 The LaTeX Project
+% Copyright (C) 2011-2022 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2021-11-22}
+% \date{Released 2022-01-12}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3styleguide.pdf b/macros/latex/contrib/l3kernel/l3styleguide.pdf
index 383e2b5f33..9ca98b7eea 100644
--- a/macros/latex/contrib/l3kernel/l3styleguide.pdf
+++ b/macros/latex/contrib/l3kernel/l3styleguide.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3styleguide.tex b/macros/latex/contrib/l3kernel/l3styleguide.tex
index 5c36e4d647..87c4379363 100644
--- a/macros/latex/contrib/l3kernel/l3styleguide.tex
+++ b/macros/latex/contrib/l3kernel/l3styleguide.tex
@@ -2,7 +2,7 @@
File: l3styleguide.tex
-Copyright (C) 2011,2012,2014-2021 The LaTeX Project
+Copyright (C) 2011,2012,2014-2022 The LaTeX Project
It may be distributed and/or modified under the conditions of the
LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -32,7 +32,7 @@ The released version of this bundle is available from CTAN.
{latex-team@latex-project.org}%
}%
}
-\date{Released 2021-11-22}
+\date{Released 2022-01-12}
\begin{document}
diff --git a/macros/latex/contrib/l3kernel/l3syntax-changes.pdf b/macros/latex/contrib/l3kernel/l3syntax-changes.pdf
index cc2d914659..04d8a36d4f 100644
--- a/macros/latex/contrib/l3kernel/l3syntax-changes.pdf
+++ b/macros/latex/contrib/l3kernel/l3syntax-changes.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3syntax-changes.tex b/macros/latex/contrib/l3kernel/l3syntax-changes.tex
index 50d639996a..138501a6c0 100644
--- a/macros/latex/contrib/l3kernel/l3syntax-changes.tex
+++ b/macros/latex/contrib/l3kernel/l3syntax-changes.tex
@@ -2,7 +2,7 @@
File: l3syntax-changes.tex
-Copyright (C) 2011,2012,2017-2021 The LaTeX Project
+Copyright (C) 2011,2012,2017-2022 The LaTeX Project
It may be distributed and/or modified under the conditions of the
LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -32,7 +32,7 @@ The released version of this bundle is available from CTAN.
{latex-team@latex-project.org}%
}%
}
-\date{Released 2021-11-22}
+\date{Released 2022-01-12}
\newcommand{\TF}{\textit{(TF)}}
diff --git a/macros/latex/contrib/l3kernel/l3sys.dtx b/macros/latex/contrib/l3kernel/l3sys.dtx
index cbffa7e7ec..5d5d5ae9b1 100644
--- a/macros/latex/contrib/l3kernel/l3sys.dtx
+++ b/macros/latex/contrib/l3kernel/l3sys.dtx
@@ -2,7 +2,7 @@
%
%% File: l3sys.dtx
%
-% Copyright (C) 2015-2021 The LaTeX Project
+% Copyright (C) 2015-2022 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2021-11-22}
+% \date{Released 2022-01-12}
%
% \maketitle
%
@@ -220,8 +220,8 @@
% \cs{q_no_value} in the non-branching version.
% Note that quote characters (|"|) \emph{cannot} be used inside the
% \meta{shell command}. The \cs{sys_get_shell:nnNTF} conditional
-% returns \texttt{true} if the shell is available and no quote is
-% detected, and \texttt{false} otherwise.
+% inserts the \texttt{true code} if the shell is available and no quote is
+% detected, and the \texttt{false code} otherwise.
% \end{function}
%
% \begin{variable}[added = 2017-05-27]{\c_sys_shell_escape_int}
@@ -295,13 +295,11 @@
% issued.
% \end{variable}
%
-% \begin{function}[added = 2019-09-12]{\sys_load_debug:, \sys_load_deprecation:}
+% \begin{function}[added = 2019-09-12]{\sys_load_debug:}
% \begin{syntax}
% \cs{sys_load_debug:}
-% \cs{sys_load_deprecation:}
% \end{syntax}
-% Load the additional configuration files for debugging support and rolling
-% back deprecations, respectively.
+% Load the additional configuration file for debugging support.
% \end{function}
%
% \subsection{Final settings}
@@ -563,14 +561,13 @@
% \end{macro}
% \end{macro}
%
-% \begin{variable}{\g_@@_debug_bool, \g_@@_deprecation_bool}
+% \begin{variable}{\g_@@_debug_bool}
% \begin{macrocode}
\bool_new:N \g_@@_debug_bool
-\bool_new:N \g_@@_deprecation_bool
% \end{macrocode}
% \end{variable}
%
-% \begin{macro}{\sys_load_debug:, \sys_load_deprecation:}
+% \begin{macro}{\sys_load_debug:}
% Simple.
% \begin{macrocode}
\cs_new_protected:Npn \sys_load_debug:
@@ -579,12 +576,6 @@
{ \__kernel_sys_configuration_load:n { l3debug } }
\bool_gset_true:N \g_@@_debug_bool
}
-\cs_new_protected:Npn \sys_load_deprecation:
- {
- \bool_if:NF \g_@@_deprecation_bool
- { \__kernel_sys_configuration_load:n { l3deprecation } }
- \bool_gset_true:N \g_@@_deprecation_bool
- }
% \end{macrocode}
% \end{macro}
%
diff --git a/macros/latex/contrib/l3kernel/l3term-glossary.pdf b/macros/latex/contrib/l3kernel/l3term-glossary.pdf
index f3025a3d5f..2fe07a36fd 100644
--- a/macros/latex/contrib/l3kernel/l3term-glossary.pdf
+++ b/macros/latex/contrib/l3kernel/l3term-glossary.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3term-glossary.tex b/macros/latex/contrib/l3kernel/l3term-glossary.tex
index ef67f02213..2fa5ae58e6 100644
--- a/macros/latex/contrib/l3kernel/l3term-glossary.tex
+++ b/macros/latex/contrib/l3kernel/l3term-glossary.tex
@@ -2,7 +2,7 @@
File: l3term-glossary.tex
-Copyright (C) 2018-2021 The LaTeX Project
+Copyright (C) 2018-2022 The LaTeX Project
It may be distributed and/or modified under the conditions of the
LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -32,7 +32,7 @@ The released version of this bundle is available from CTAN.
{latex-team@latex-project.org}%
}%
}
-\date{Released 2021-11-22}
+\date{Released 2022-01-12}
\newcommand{\TF}{\textit{(TF)}}
diff --git a/macros/latex/contrib/l3kernel/l3text-case.dtx b/macros/latex/contrib/l3kernel/l3text-case.dtx
index 914e725f0d..07131772c1 100644
--- a/macros/latex/contrib/l3kernel/l3text-case.dtx
+++ b/macros/latex/contrib/l3kernel/l3text-case.dtx
@@ -2,7 +2,7 @@
%
%% File: l3text-case.dtx
%
-% Copyright (C) 2020,2021 The LaTeX Project
+% Copyright (C) 2020-2022 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2021-11-22}
+% \date{Released 2022-01-12}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3text-purify.dtx b/macros/latex/contrib/l3kernel/l3text-purify.dtx
index a3349bea86..63ccc84610 100644
--- a/macros/latex/contrib/l3kernel/l3text-purify.dtx
+++ b/macros/latex/contrib/l3kernel/l3text-purify.dtx
@@ -2,7 +2,7 @@
%
%% File: l3text-purify.dtx
%
-% Copyright (C) 2020,2021 The LaTeX Project
+% Copyright (C) 2020-2022 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2021-11-22}
+% \date{Released 2022-01-12}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3text.dtx b/macros/latex/contrib/l3kernel/l3text.dtx
index 638d9f47b9..0be16822a6 100644
--- a/macros/latex/contrib/l3kernel/l3text.dtx
+++ b/macros/latex/contrib/l3kernel/l3text.dtx
@@ -2,7 +2,7 @@
%
%% File: l3text.dtx
%
-% Copyright (C) 2020,2021 The LaTeX Project
+% Copyright (C) 2020-2022 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2021-11-22}
+% \date{Released 2022-01-12}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3tl-analysis.dtx b/macros/latex/contrib/l3kernel/l3tl-analysis.dtx
index 733ca76352..c8ceb1d531 100644
--- a/macros/latex/contrib/l3kernel/l3tl-analysis.dtx
+++ b/macros/latex/contrib/l3kernel/l3tl-analysis.dtx
@@ -2,7 +2,7 @@
%
%% File: l3tl-analysis.dtx
%
-% Copyright (C) 2011-2021 The LaTeX Project
+% Copyright (C) 2011-2022 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2021-11-22}
+% \date{Released 2022-01-12}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3tl.dtx b/macros/latex/contrib/l3kernel/l3tl.dtx
index 1f2c4eed3b..39f98f5e28 100644
--- a/macros/latex/contrib/l3kernel/l3tl.dtx
+++ b/macros/latex/contrib/l3kernel/l3tl.dtx
@@ -2,7 +2,7 @@
%
%% File: l3tl.dtx
%
-% Copyright (C) 1990-2021 The LaTeX Project
+% Copyright (C) 1990-2022 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2021-11-22}
+% \date{Released 2022-01-12}
%
% \maketitle
%
@@ -301,6 +301,7 @@
% The \meta{token list_2} cannot contain the tokens |{|, |}| or |#|
% (more precisely, explicit character tokens with category code $1$
% (begin-group) or $2$ (end-group), and tokens with category code $6$).
+% The search does \emph{not} enter brace (category code $1$/$2$) groups.
% \end{function}
%
% \begin{function}[added = 2017-11-14, EXP,pTF]{\tl_if_novalue:n}
@@ -1072,6 +1073,10 @@
%
% \subsection{Replacing tokens}
%
+% Within token lists, replacement takes place at the top level: there is
+% no recursion into brace groups (more precisely, within a group defined by
+% a categroy code $1$/$2$ pair).
+%
% \begin{function}[updated = 2011-08-11]
% {
% \tl_replace_once:Nnn, \tl_replace_once:cnn,
diff --git a/macros/latex/contrib/l3kernel/l3token.dtx b/macros/latex/contrib/l3kernel/l3token.dtx
index e438173651..42236e0021 100644
--- a/macros/latex/contrib/l3kernel/l3token.dtx
+++ b/macros/latex/contrib/l3kernel/l3token.dtx
@@ -2,7 +2,7 @@
%
%% File: l3token.dtx
%
-% Copyright (C) 2005-2021 The LaTeX Project
+% Copyright (C) 2005-2022 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2021-11-22}
+% \date{Released 2022-01-12}
%
% \maketitle
%
@@ -841,19 +841,6 @@
% result of the test).
% \end{function}
%
-% \begin{function}[updated = 2012-12-20, TF]{\peek_catcode_ignore_spaces:N}
-% \begin{syntax}
-% \cs{peek_catcode_ignore_spaces:NTF} \meta{test token} \Arg{true code} \Arg{false code}
-% \end{syntax}
-% Tests if the next non-space \meta{token} in the input stream has the
-% same category code as the \meta{test token} (as defined by the test
-% \cs{token_if_eq_catcode:NNTF}). Explicit and implicit space tokens
-% (with character code 32 and category code 10) are ignored and
-% removed by the test and the \meta{token} is left in the input
-% stream after the \meta{true code} or \meta{false code} (as
-% appropriate to the result of the test).
-% \end{function}
-%
% \begin{function}[updated = 2012-12-20, TF]{\peek_catcode_remove:N}
% \begin{syntax}
% \cs{peek_catcode_remove:NTF} \meta{test token} \Arg{true code} \Arg{false code}
@@ -867,21 +854,6 @@
% appropriate to the result of the test).
% \end{function}
%
-% \begin{function}[updated = 2012-12-20, TF]
-% {\peek_catcode_remove_ignore_spaces:N}
-% \begin{syntax}
-% \cs{peek_catcode_remove_ignore_spaces:NTF} \meta{test token} \Arg{true code} \Arg{false code}
-% \end{syntax}
-% Tests if the next non-space \meta{token} in the input stream has the
-% same category code as the \meta{test token} (as defined by the test
-% \cs{token_if_eq_catcode:NNTF}). Explicit and implicit space tokens
-% (with character code 32 and category code 10) are ignored and
-% removed by the test and the \meta{token} is removed from the
-% input stream if the test is true. The function then places
-% either the \meta{true code} or \meta{false code} in the input stream
-% (as appropriate to the result of the test).
-% \end{function}
-%
% \begin{function}[updated = 2012-12-20, TF]{\peek_charcode:N}
% \begin{syntax}
% \cs{peek_charcode:NTF} \meta{test token} \Arg{true code} \Arg{false code}
@@ -894,19 +866,6 @@
% result of the test).
% \end{function}
%
-% \begin{function}[updated = 2012-12-20, TF]{\peek_charcode_ignore_spaces:N}
-% \begin{syntax}
-% \cs{peek_charcode_ignore_spaces:NTF} \meta{test token} \Arg{true code} \Arg{false code}
-% \end{syntax}
-% Tests if the next non-space \meta{token} in the input stream has the
-% same character code as the \meta{test token} (as defined by the test
-% \cs{token_if_eq_charcode:NNTF}). Explicit and implicit space tokens
-% (with character code 32 and category code 10) are ignored and removed by
-% the test and the \meta{token} is left in the input stream after
-% the \meta{true code} or \meta{false code} (as appropriate to the
-% result of the test).
-% \end{function}
-%
% \begin{function}[updated = 2012-12-20, TF]{\peek_charcode_remove:N}
% \begin{syntax}
% \cs{peek_charcode_remove:NTF} \meta{test token} \Arg{true code} \Arg{false code}
@@ -920,22 +879,6 @@
% appropriate to the result of the test).
% \end{function}
%
-% \begin{function}[updated = 2012-12-20, TF]
-% {\peek_charcode_remove_ignore_spaces:N}
-% \begin{syntax}
-% \cs{peek_charcode_remove_ignore_spaces:NTF} \meta{test token}
-% ~~\Arg{true code} \Arg{false code}
-% \end{syntax}
-% Tests if the next non-space \meta{token} in the input stream has the
-% same character code as the \meta{test token} (as defined by the test
-% \cs{token_if_eq_charcode:NNTF}). Explicit and implicit space tokens
-% (with character code 32 and category code 10) are ignored and
-% removed by the test and the \meta{token} is removed from the
-% input stream if the test is true. The function then places
-% either the \meta{true code} or \meta{false code} in the input stream
-% (as appropriate to the result of the test).
-% \end{function}
-%
% \begin{function}[updated = 2011-07-02, TF]{\peek_meaning:N}
% \begin{syntax}
% \cs{peek_meaning:NTF} \meta{test token} \Arg{true code} \Arg{false code}
@@ -948,19 +891,6 @@
% result of the test).
% \end{function}
%
-% \begin{function}[updated = 2012-12-05, TF]{\peek_meaning_ignore_spaces:N}
-% \begin{syntax}
-% \cs{peek_meaning_ignore_spaces:NTF} \meta{test token} \Arg{true code} \Arg{false code}
-% \end{syntax}
-% Tests if the next non-space \meta{token} in the input stream has the
-% same meaning as the \meta{test token} (as defined by the test
-% \cs{token_if_eq_meaning:NNTF}). Explicit and implicit space tokens
-% (with character code 32 and category code 10) are ignored and
-% removed by the test and the \meta{token} is left in the input
-% stream after the \meta{true code} or \meta{false code} (as
-% appropriate to the result of the test).
-% \end{function}
-%
% \begin{function}[updated = 2011-07-02, TF]{\peek_meaning_remove:N}
% \begin{syntax}
% \cs{peek_meaning_remove:NTF} \meta{test token} \Arg{true code} \Arg{false code}
@@ -974,6 +904,40 @@
% appropriate to the result of the test).
% \end{function}
%
+% \begin{function}[added = 2018-10-01]{\peek_remove_spaces:n}
+% \begin{syntax}
+% \cs{peek_remove_spaces:n} \Arg{code}
+% \end{syntax}
+% Peeks ahead and detect if the following token is a space (category code
+% $10$ and character code $32$). If so, removes the token and checks the
+% next token. Once a non-space token is found, the \meta{code} will be
+% inserted into the input stream. Typically this will contain a \texttt{peek}
+% operation, but this is not required.
+% \end{function}
+%
+% \begin{function}[added = 2022-01-10]{\peek_remove_filler:n}
+% \begin{syntax}
+% \cs{peek_remove_filler:n} \Arg{code}
+% \end{syntax}
+% Peeks ahead and detect if the following token is a space (category code
+% $10$) or has meaning equal to \cs{scan_stop:}. If so,
+% removes the token and checks the next token. If neither of these cases
+% apply, expands the next token using \texttt{f}-type expansion, then checks
+% the resulting leading token in the same way. If after expansion the next
+% token is neither of the two test cases, the \meta{code} will be inserted
+% into the input stream. Typically this will contain a \texttt{peek}
+% operation, but this is not required.
+% \begin{texnote}
+% This is essentially a macro-based implementation of how \TeX{} handles
+% the search for a left brace after for example \tn{everypar}, except that
+% any non-expandable token cleanly ends the \meta{filler} (i.e.~it does not
+% lead to a \TeX{} error).
+%
+% In contrast to \TeX{}'s filler removal, a construct
+% \verb|\exp_not:N \foo| will be treated in the same way as \verb|\foo|.
+% \end{texnote}
+% \end{function}
+%
% \begin{function}[updated = 2012-12-05, TF]
% {\peek_meaning_remove_ignore_spaces:N}
% \begin{syntax}
@@ -2914,6 +2878,68 @@ end
% \end{macrocode}
% \end{macro}
%
+% \begin{macro}{\peek_remove_filler:n}
+% \begin{macro}{\@@_remove_filler:w}
+% \begin{macro}{\@@_remove_filler:}
+% \begin{macro}{\@@_remove_filler_expand:w}
+% Here we expand the input, removing spaces and \cs{scan_stop:} tokens until
+% we reach a non-expandable token. At that stage we re-insert the payload.
+% To deal with the problem of |&| tokens, we have to put the align-safe
+% group in the correct place.
+% \begin{macrocode}
+\cs_new_protected:Npn \peek_remove_filler:n #1
+ {
+ \cs_set:Npn \@@_true_aux:w { \@@_remove_filler:w }
+ \cs_set:Npx \@@_false:w
+ {
+ \exp_not:N \group_align_safe_end:
+ \exp_not:n {#1}
+ }
+ \group_align_safe_begin:
+ \@@_remove_filler:w
+ }
+\cs_new_protected:Npn \@@_remove_filler:w
+ {
+ \exp_after:wN \peek_after:Nw \exp_after:wN \@@_remove_filler:
+ \exp:w \exp_end_continue_f:w
+ }
+% \end{macrocode}
+% Here we can nest conditionals as \cs{l_peek_token} is only skipped over in
+% the nested one if it's a space: no problems with conditionals or outer
+% tokens.
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_remove_filler:
+ {
+ \if_catcode:w \exp_not:N \l_peek_token \c_space_token
+ \exp_after:wN \@@_true_remove:w
+ \else:
+ \if_meaning:w \l_peek_token \scan_stop:
+ \exp_after:wN \exp_after:wN \exp_after:wN
+ \@@_true_remove:w
+ \else:
+ \exp_after:wN \exp_after:wN \exp_after:wN
+ \@@_remove_filler_expand:w
+ \fi:
+ \fi:
+ }
+% \end{macrocode}
+% To deal with undefined control sequences in the same way \TeX{} does,
+% we need to check for expansion manually.
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_remove_filler_expand:w
+ {
+ \exp_after:wN \if_meaning:w \exp_not:N \l_peek_token \l_peek_token
+ \exp_after:wN \@@_false:w
+ \else:
+ \exp_after:wN \@@_remove_filler:w
+ \fi:
+ }
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
% \begin{macro}{\@@_token_generic_aux:NNNTF}
% The generic functions store the test token in both implicit and
% explicit modes, and the \texttt{true} and \texttt{false} code as
@@ -3080,41 +3106,6 @@ end
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}[TF]
-% {
-% \peek_catcode_ignore_spaces:N, \peek_catcode_remove_ignore_spaces:N,
-% \peek_charcode_ignore_spaces:N, \peek_charcode_remove_ignore_spaces:N,
-% \peek_meaning_ignore_spaces:N, \peek_meaning_remove_ignore_spaces:N
-% }
-% To ignore spaces, remove them using \cs{peek_remove_spaces:n}
-% before running the tests.
-% \begin{macrocode}
-\tl_map_inline:nn
- {
- { catcode } { catcode_remove }
- { charcode } { charcode_remove }
- { meaning } { meaning_remove }
- }
- {
- \cs_new_protected:cpx { peek_#1_ignore_spaces:NTF } ##1##2##3
- {
- \peek_remove_spaces:n
- { \exp_not:c { peek_#1:NTF } ##1 {##2} {##3} }
- }
- \cs_new_protected:cpx { peek_#1_ignore_spaces:NT } ##1##2
- {
- \peek_remove_spaces:n
- { \exp_not:c { peek_#1:NT } ##1 {##2} }
- }
- \cs_new_protected:cpx { peek_#1_ignore_spaces:NF } ##1##2
- {
- \peek_remove_spaces:n
- { \exp_not:c { peek_#1:NF } ##1 {##2} }
- }
- }
-% \end{macrocode}
-% \end{macro}
-%
% \begin{macro}[TF]{\peek_N_type:}
% \begin{macro}
% {\@@_execute_branches_N_type:, \@@_N_type:w, \@@_N_type_aux:nnw}
diff --git a/macros/latex/contrib/l3kernel/l3unicode.dtx b/macros/latex/contrib/l3kernel/l3unicode.dtx
index 476eeb02bb..452281b735 100644
--- a/macros/latex/contrib/l3kernel/l3unicode.dtx
+++ b/macros/latex/contrib/l3kernel/l3unicode.dtx
@@ -2,7 +2,7 @@
%
%% File: l3unicode.dtx
%
-% Copyright (C) 2018-2021 The LaTeX Project
+% Copyright (C) 2018-2022 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2021-11-22}
+% \date{Released 2022-01-12}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/source3.pdf b/macros/latex/contrib/l3kernel/source3.pdf
index 79f625cf94..24cf79a855 100644
--- a/macros/latex/contrib/l3kernel/source3.pdf
+++ b/macros/latex/contrib/l3kernel/source3.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/source3.tex b/macros/latex/contrib/l3kernel/source3.tex
index 99f8aca9d8..2d9ae512d0 100644
--- a/macros/latex/contrib/l3kernel/source3.tex
+++ b/macros/latex/contrib/l3kernel/source3.tex
@@ -2,7 +2,7 @@
File: source3.tex
-Copyright (C) 1990-2012,2017-2021 The LaTeX Project
+Copyright (C) 1990-2012,2017-2022 The LaTeX Project
It may be distributed and/or modified under the conditions of the
LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -53,7 +53,7 @@ for those people who are interested.
{latex-team@latex-project.org}%
}%
}
-\date{Released 2021-11-22}
+\date{Released 2022-01-12}
\pagenumbering{roman}
\maketitle
diff --git a/macros/latex/contrib/l3packages/CHANGELOG.md b/macros/latex/contrib/l3packages/CHANGELOG.md
index a5a54eeed0..b2a8dedbdc 100644
--- a/macros/latex/contrib/l3packages/CHANGELOG.md
+++ b/macros/latex/contrib/l3packages/CHANGELOG.md
@@ -7,6 +7,12 @@ this project uses date-based 'snapshot' version identifiers.
## [Unreleased]
+## [2022-01-12]
+
+### Changed
+- Use `\ProvideExp...` in `xfp` because the package will soon no longer be needed
+ and just remains so that old documents still compile correctly.
+
## [2021-11-12]
### Added
@@ -164,7 +170,8 @@ this project uses date-based 'snapshot' version identifiers.
- Switch to ISO date format
- Improve cross-module use of internal functions
-[Unreleased]: https://github.com/latex3/latex3/compare/2021-11-12...HEAD
+[Unreleased]: https://github.com/latex3/latex3/compare/2022-01-12...HEAD
+[2022-01-12]: https://github.com/latex3/latex3/compare/2021-11-12...2022-01-12
[2021-11-12]: https://github.com/latex3/latex3/compare/2021-08-27...2021-11-12
[2021-08-27]: https://github.com/latex3/latex3/compare/2021-08-04...2021-08-27
[2021-08-04]: https://github.com/latex3/latex3/compare/2021-06-18...2021-08-04
diff --git a/macros/latex/contrib/l3packages/README.md b/macros/latex/contrib/l3packages/README.md
index d71cfcc584..8b3a45ddf5 100644
--- a/macros/latex/contrib/l3packages/README.md
+++ b/macros/latex/contrib/l3packages/README.md
@@ -1,7 +1,7 @@
LaTeX3 High-Level Concepts
==========================
-Release 2021-11-12
+Release 2022-01-12
Overview
--------
@@ -21,7 +21,7 @@ updated at the same time.
Currently included in the CTAN release of `l3packages` are the following
bundles:
* `l3keys2e`
-* `xfp`
+* `xfp` (from 2022-06-01 part of the LaTeX format)
* `xfrac`
* `xparse`
* `xtemplate`
@@ -42,6 +42,8 @@ FPU. As such, it is a wrapper around the core `\fp_eval:n` function
but does not require code syntax. It provides the expandable command
`\fpeval`, which can be used inside for example `\edef` or contexts
where TeX requires a number.
+From 2022-06-01 release if LaTeX this will be included in the format
+so that the package doesn't need loading any longer.
`xfrac`
-------
@@ -107,6 +109,6 @@ the [LaTeX-L list](#Discussion) should be used.
-----
-<p>Copyright (C) 1998-2012,2015-2021 The LaTeX Project <br />
+<p>Copyright (C) 1998-2012,2015-2022 The LaTeX Project <br />
<a href="http://latex-project.org/">http://latex-project.org/</a> <br />
All rights reserved.</p>
diff --git a/macros/latex/contrib/l3packages/l3keys2e.dtx b/macros/latex/contrib/l3packages/l3keys2e.dtx
index 6aeaba3229..675b914f44 100644
--- a/macros/latex/contrib/l3packages/l3keys2e.dtx
+++ b/macros/latex/contrib/l3packages/l3keys2e.dtx
@@ -2,7 +2,7 @@
%
%% File: l3keys2e.dtx
%
-% Copyright (C) 2009,2011-2021 The LaTeX Project
+% Copyright (C) 2009,2011-2022 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -62,7 +62,7 @@
% }^^A
% }
%
-% \date{Released 2021-11-12}
+% \date{Released 2022-01-12}
%
% \maketitle
%
@@ -139,7 +139,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{l3keys2e}{2021-11-12}{}
+\ProvidesExplPackage{l3keys2e}{2022-01-12}{}
{LaTeX2e option processing using LaTeX3 keys}
% \end{macrocode}
%
diff --git a/macros/latex/contrib/l3packages/l3keys2e.ins b/macros/latex/contrib/l3packages/l3keys2e.ins
index 3c437d8ee8..b475045073 100644
--- a/macros/latex/contrib/l3packages/l3keys2e.ins
+++ b/macros/latex/contrib/l3packages/l3keys2e.ins
@@ -2,7 +2,7 @@
File: l3keys2e.ins
-Copyright (C) 2009,2011,2012,2016,2017,2019-2021 The LaTeX Project
+Copyright (C) 2009,2011,2012,2016,2017,2019-2022 The LaTeX Project
It may be distributed and/or modified under the conditions of the
LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -23,7 +23,7 @@ The released version of this bundle is available from CTAN.
\preamble
-Copyright (C) 2009-2021 The LaTeX Project
+Copyright (C) 2009-2022 The LaTeX Project
It may be distributed and/or modified under the conditions of
the LaTeX Project Public License (LPPL), either version 1.3c of
diff --git a/macros/latex/contrib/l3packages/l3keys2e.pdf b/macros/latex/contrib/l3packages/l3keys2e.pdf
index 8cece1c69c..c4ad006e71 100644
--- a/macros/latex/contrib/l3packages/l3keys2e.pdf
+++ b/macros/latex/contrib/l3packages/l3keys2e.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3packages/xfp.dtx b/macros/latex/contrib/l3packages/xfp.dtx
index c3ba90bb14..5863f1579d 100644
--- a/macros/latex/contrib/l3packages/xfp.dtx
+++ b/macros/latex/contrib/l3packages/xfp.dtx
@@ -2,7 +2,7 @@
%
%% File: xfp.dtx
%
-% Copyright (C) 2017-2021 The LaTeX Project
+% Copyright (C) 2017-2022 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -63,12 +63,17 @@
% }^^A
% }
%
-% \date{Released 2021-11-12}
+% \date{Released 2022-01-12}
%
% \maketitle
%
% \begin{documentation}
%
+% The two functions provided by this package are part of the \LaTeX{}
+% format starting with 2022-06-01 release. This package is
+% therefore no longer needed and only provided to be able to
+% process older documents loading.
+%
% This package provides a \LaTeXe{} document-level interface to the \LaTeX{}3
% floating point unit (part of \pkg{expl3}). It also provides a parallel
% integer expression interface for convenience.
@@ -166,21 +171,24 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{xfp}{2021-11-12}{}
+\ProvidesExplPackage{xfp}{2022-01-12}{}
{L3 Floating point unit}
% \end{macrocode}
%
% \begin{macro}{\fpeval}
-% A document level wrapper around the code level function.
+% A document level wrapper around the code level function. This
+% definition will be moved to the \LaTeXe{} format so we just
+% ``provide'' it in case this package gets loaded in documents
+% processed with a new format.
% \begin{macrocode}
-\NewExpandableDocumentCommand \fpeval { m } { \fp_eval:n {#1} }
+\ProvideExpandableDocumentCommand \fpeval { m } { \fp_eval:n {#1} }
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\inteval}
% A second one, this time around an \eTeX{} primitive.
% \begin{macrocode}
-\NewExpandableDocumentCommand \inteval { m } { \int_eval:n {#1} }
+\ProvideExpandableDocumentCommand \inteval { m } { \int_eval:n {#1} }
% \end{macrocode}
% \end{macro}
%
diff --git a/macros/latex/contrib/l3packages/xfp.ins b/macros/latex/contrib/l3packages/xfp.ins
index b5c1d4eea9..b91fbaa6b6 100644
--- a/macros/latex/contrib/l3packages/xfp.ins
+++ b/macros/latex/contrib/l3packages/xfp.ins
@@ -2,7 +2,7 @@
File: xfp.ins
-Copyright (C) 2017,2019-2021 The LaTeX Project
+Copyright (C) 2017,2019-2022 The LaTeX Project
It may be distributed and/or modified under the conditions of the
LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -23,7 +23,7 @@ The released version of this bundle is available from CTAN.
\preamble
-Copyright (C) 2017-2021 The LaTeX Project
+Copyright (C) 2017-2022 The LaTeX Project
It may be distributed and/or modified under the conditions of
the LaTeX Project Public License (LPPL), either version 1.3c of
diff --git a/macros/latex/contrib/l3packages/xfp.pdf b/macros/latex/contrib/l3packages/xfp.pdf
index 0e0dc875b7..1ab1072a41 100644
--- a/macros/latex/contrib/l3packages/xfp.pdf
+++ b/macros/latex/contrib/l3packages/xfp.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3packages/xfrac.dtx b/macros/latex/contrib/l3packages/xfrac.dtx
index efe75c161a..4fb469ae59 100644
--- a/macros/latex/contrib/l3packages/xfrac.dtx
+++ b/macros/latex/contrib/l3packages/xfrac.dtx
@@ -3,7 +3,7 @@
%% File: xfrac.dtx
%
% Copyright (C) 2004,2008-2010 Morten Hoegholm
-% (C) 2011,2012,2014-2021 The LaTeX Project
+% (C) 2011,2012,2014-2022 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -65,7 +65,7 @@
% }^^A
% }
%
-% \date{Released 2021-11-12}
+% \date{Released 2022-01-12}
%
% \maketitle
%
@@ -535,7 +535,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{xfrac}{2021-11-12}{}
+\ProvidesExplPackage{xfrac}{2022-01-12}{}
{L3 Experimental split-level fractions}
% \end{macrocode}
%
diff --git a/macros/latex/contrib/l3packages/xfrac.ins b/macros/latex/contrib/l3packages/xfrac.ins
index 20d01acd7b..aee872b588 100644
--- a/macros/latex/contrib/l3packages/xfrac.ins
+++ b/macros/latex/contrib/l3packages/xfrac.ins
@@ -3,7 +3,7 @@
File: xfrac.ins
Copyright (C) 2004,2008-2010 Morten Hoegholm
- (C) 2011,2012,2016,2017,2019-2021 The LaTeX Project
+ (C) 2011,2012,2016,2017,2019-2022 The LaTeX Project
It may be distributed and/or modified under the conditions of the
LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -25,7 +25,7 @@ The released version of this bundle is available from CTAN.
\preamble
Copyright (C) 2004,2008-2010 Morten Hoegholm
- (C) 2011-2021 The LaTeX Project
+ (C) 2011-2022 The LaTeX Project
It may be distributed and/or modified under the conditions of
the LaTeX Project Public License (LPPL), either version 1.3c of
diff --git a/macros/latex/contrib/l3packages/xfrac.pdf b/macros/latex/contrib/l3packages/xfrac.pdf
index b5b461116e..33722acc5d 100644
--- a/macros/latex/contrib/l3packages/xfrac.pdf
+++ b/macros/latex/contrib/l3packages/xfrac.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3packages/xparse.dtx b/macros/latex/contrib/l3packages/xparse.dtx
index f601bd9c5f..03243ec0e2 100644
--- a/macros/latex/contrib/l3packages/xparse.dtx
+++ b/macros/latex/contrib/l3packages/xparse.dtx
@@ -4,7 +4,7 @@
%
% Copyright (C) 1999 Frank Mittelbach, Chris Rowley, David Carlisle
% (C) 2004-2008 Frank Mittelbach, The LaTeX Project
-% (C) 2009-2021 The LaTeX Project
+% (C) 2009-2022 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -67,7 +67,7 @@
% }^^A
% }
%
-% \date{Released 2021-11-12}
+% \date{Released 2022-01-12}
%
% \maketitle
%
@@ -1064,7 +1064,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{xparse}{2021-11-12}{}
+\ProvidesExplPackage{xparse}{2022-01-12}{}
{L3 Experimental document command parser}
% \end{macrocode}
%
diff --git a/macros/latex/contrib/l3packages/xparse.ins b/macros/latex/contrib/l3packages/xparse.ins
index 98a6dd8a39..c69d316de7 100644
--- a/macros/latex/contrib/l3packages/xparse.ins
+++ b/macros/latex/contrib/l3packages/xparse.ins
@@ -2,7 +2,7 @@
File: xparse.ins
-Copyright (C) 2000-2012,2016,2017,2019-2021 The LaTeX Project
+Copyright (C) 2000-2012,2016,2017,2019-2022 The LaTeX Project
It may be distributed and/or modified under the conditions of the
LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -23,7 +23,7 @@ The released version of this bundle is available from CTAN.
\preamble
-Copyright (C) 2009-2021 The LaTeX Project
+Copyright (C) 2009-2022 The LaTeX Project
It may be distributed and/or modified under the conditions of
the LaTeX Project Public License (LPPL), either version 1.3c of
diff --git a/macros/latex/contrib/l3packages/xparse.pdf b/macros/latex/contrib/l3packages/xparse.pdf
index f7075f0b22..87b141c5d2 100644
--- a/macros/latex/contrib/l3packages/xparse.pdf
+++ b/macros/latex/contrib/l3packages/xparse.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3packages/xtemplate.dtx b/macros/latex/contrib/l3packages/xtemplate.dtx
index 8dfe79ec34..987e20b6dd 100644
--- a/macros/latex/contrib/l3packages/xtemplate.dtx
+++ b/macros/latex/contrib/l3packages/xtemplate.dtx
@@ -4,7 +4,7 @@
%
% Copyright (C) 1999 Frank Mittelbach, Chris Rowley, David Carlisle
% (C) 2004-2010 Frank Mittelbach, The LaTeX Project
-% (C) 2011-2021 The LaTeX Project
+% (C) 2011-2022 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -63,7 +63,7 @@
% }^^A
% }
%
-% \date{Released 2021-11-12}
+% \date{Released 2022-01-12}
%
% \maketitle
%
@@ -682,7 +682,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{xtemplate}{2021-11-12}{}
+\ProvidesExplPackage{xtemplate}{2022-01-12}{}
{L3 Experimental prototype document functions}
% \end{macrocode}
%
diff --git a/macros/latex/contrib/l3packages/xtemplate.ins b/macros/latex/contrib/l3packages/xtemplate.ins
index 2e459227f7..48eea78c7f 100644
--- a/macros/latex/contrib/l3packages/xtemplate.ins
+++ b/macros/latex/contrib/l3packages/xtemplate.ins
@@ -2,7 +2,7 @@
File: xtemplate.ins
-Copyright (C) 2000-2012,2016,2017,2019-2021 The LaTeX Project
+Copyright (C) 2000-2012,2016,2017,2019-2022 The LaTeX Project
It may be distributed and/or modified under the conditions of the
LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -34,7 +34,7 @@ license information is placed in the derived files.
\preamble
-Copyright (C) 2011-2021 The LaTeX Project
+Copyright (C) 2011-2022 The LaTeX Project
It may be distributed and/or modified under the conditions of
the LaTeX Project Public License (LPPL), either version 1.3c of
diff --git a/macros/latex/contrib/l3packages/xtemplate.pdf b/macros/latex/contrib/l3packages/xtemplate.pdf
index 10bea564f7..7e726a0126 100644
--- a/macros/latex/contrib/l3packages/xtemplate.pdf
+++ b/macros/latex/contrib/l3packages/xtemplate.pdf
Binary files differ
diff --git a/macros/latex/contrib/sillypage/sillywalk-map.png b/macros/latex/contrib/sillypage/sillywalk-map.png
index 62f43c11b1..229d85f828 100644
--- a/macros/latex/contrib/sillypage/sillywalk-map.png
+++ b/macros/latex/contrib/sillypage/sillywalk-map.png
Binary files differ
diff --git a/macros/latex/contrib/siunitx/CHANGELOG.md b/macros/latex/contrib/siunitx/CHANGELOG.md
index 93a82bfb26..4c603b08ae 100644
--- a/macros/latex/contrib/siunitx/CHANGELOG.md
+++ b/macros/latex/contrib/siunitx/CHANGELOG.md
@@ -7,24 +7,29 @@ Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to
## [Unreleased]
-## [v3.0.39]: 2022-01-05
+## [v3.0.40]: 2022-01-12
+
+### Changed
+- Remove a deprecated `expl3` function
+
+## [v3.0.39] - 2022-01-05
### Fixed
- Differentiate unity- and missing mantissa values (see issue
- [#565](https://github.com/josephwright/siunitx/issues/565))
+ [\#565](https://github.com/josephwright/siunitx/issues/565))
-## [v3.0.38]: 2022-01-04
+## [v3.0.38] - 2022-01-04
### Changed
- Allow for empty values in lists and ranges (see issue
- [#566](https://github.com/josephwright/siunitx/issues/566))
+ [\#566](https://github.com/josephwright/siunitx/issues/566))
-## [v3.0.37]: 2021-12-04
+## [v3.0.37] - 2021-12-04
### Changed
- Documentation and warning improvements for "drop-exponent" option
-## [v3.0.36]: 2021-11-18
+## [v3.0.36] - 2021-11-18
### Changed
- Internal changes to tabular code to improve visual output when integer part
@@ -32,196 +37,196 @@ Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to
### Fixed
- Printing fractional units using `\sfrac` (see issue
- [#558](https://github.com/josephwright/siunitx/issues/558))
+ [\#558](https://github.com/josephwright/siunitx/issues/558))
-## [v3.0.35]: 2021-11-03
+## [v3.0.35] - 2021-11-03
### Changed
- Delay loading of `color` package to `begindocument` hook
### Fixed
- Text mode replacement of `\mathrm` in super/subscripts (see issue
- [#556](https://github.com/josephwright/siunitx/issues/556))
+ [\#556](https://github.com/josephwright/siunitx/issues/556))
-## [v3.0.34]: 2021-10-26
+## [v3.0.34] - 2021-10-26
### Fixed
- Printing of exponent for complex values when converting to a prefix (see
- issue [#555](https://github.com/josephwright/siunitx/issues/555))
+ issue [\#555](https://github.com/josephwright/siunitx/issues/555))
-## [v3.0.33]: 2021-10-15
+## [v3.0.33] - 2021-10-15
### Changed
- Further improvements to degree symbol in math mode
### Fixed
- Handling of comparators when `mode = text` (see issue
- [#551](https://github.com/josephwright/siunitx/issues/551)
+ [\#551](https://github.com/josephwright/siunitx/issues/551)
- Handling of combination of `mode = text` with `tight-spacing` (see issue
- [#553](https://github.com/josephwright/siunitx/issues/553)
+ [\#553](https://github.com/josephwright/siunitx/issues/553)
-## [v3.0.32]: 2021-09-29
+## [v3.0.32] - 2021-09-29
### Added
- Hint concerning non-standard font encodings (see issues
- [#547](https://github.com/josephwright/siunitx/issues/547) and
- [#550](https://github.com/josephwright/siunitx/issues/550))
+ [\#547](https://github.com/josephwright/siunitx/issues/547) and
+ [\#550](https://github.com/josephwright/siunitx/issues/550))
### Changed
- Use math mode symbol for degree where possible (see issue
- [#550](https://github.com/josephwright/siunitx/issues/550))
+ [\#550](https://github.com/josephwright/siunitx/issues/550))
-## [v3.0.31]: 2021-09-22
+## [v3.0.31] - 2021-09-22
### Fixed
- Avoid infinite loop with `tex4ht` (issue
- [#549](https://github.com/josephwright/siunitx/issues/549))
+ [\#549](https://github.com/josephwright/siunitx/issues/549))
-## [v3.0.30]: 2021-09-14
+## [v3.0.30] - 2021-09-14
### Changed
- Delay selection of math mode to better support `tex4ht` (issue
- [#530](https://github.com/josephwright/siunitx/issues/530))
+ [\#530](https://github.com/josephwright/siunitx/issues/530))
### Fixed
- Ensure that units contain `\text` are correctly formatted when printing
in math mode (issue
- [#542](https://github.com/josephwright/siunitx/issues/542))
+ [\#542](https://github.com/josephwright/siunitx/issues/542))
- Use `\ExplLoaderFileDate` to test for `expl3` version (issue
- [#544](https://github.com/josephwright/siunitx/issues/544))
+ [\#544](https://github.com/josephwright/siunitx/issues/544))
- Apply number processing options to angles (issue
- [#546](https://github.com/josephwright/siunitx/issues/546))
+ [\#546](https://github.com/josephwright/siunitx/issues/546))
-## [v3.0.29]: 2021-09-06
+## [v3.0.29] - 2021-09-06
### Fixed
- Only apply `text-series-to-math` when the math version is
`normal` (issue
- [#541](https://github.com/josephwright/siunitx/issues/541))
+ [\#541](https://github.com/josephwright/siunitx/issues/541))
-## [v3.0.28]: 2021-08-27
+## [v3.0.28] - 2021-08-27
### Fixed
- Pre-spacing for free-standing units (issue
- [#538](https://github.com/josephwright/siunitx/issues/538))
+ [\#538](https://github.com/josephwright/siunitx/issues/538))
-## [v3.0.27]: 2021-08-22
+## [v3.0.27] - 2021-08-22
### Fixed
- Detection of unchanged symbols when font is sanserif (issue
- [#535](https://github.com/josephwright/siunitx/issues/535))
+ [\#535](https://github.com/josephwright/siunitx/issues/535))
-## [v3.0.26]: 2021-08-21
+## [v3.0.26] - 2021-08-21
### Fixed
- Accidental printing of `T@TS1` with `beamer` (issue
- [#534](https://github.com/josephwright/siunitx/issues/534))
+ [\#534](https://github.com/josephwright/siunitx/issues/534))
-## [v3.0.25]: 2021-08-16
+## [v3.0.25] - 2021-08-16
### Changed
- Default to sanserif units if `\familydefault` is `\sfdefault`
- (issue [#516](https://github.com/josephwright/siunitx/issues/516))
+ (issue [\#516](https://github.com/josephwright/siunitx/issues/516))
### Fixed
- Rounding to an uncertainty of the same magnitude as the
value (issue
- [#524](https://github.com/josephwright/siunitx/issues/524))
+ [\#524](https://github.com/josephwright/siunitx/issues/524))
- Extend `propogate-math-font` to cover `\mathbf` and `\mathit`
- (issue [#525](https://github.com/josephwright/siunitx/issues/525))
+ (issue [\#525](https://github.com/josephwright/siunitx/issues/525))
- Position of non-aligned non-numeric material in table cells when
centering decimal marker (issue
- [#526](https://github.com/josephwright/siunitx/issues/526))
+ [\#526](https://github.com/josephwright/siunitx/issues/526))
- Treatment of multiple tokens for `input-ignore` (issue
- [#531](https://github.com/josephwright/siunitx/issues/531))
+ [\#531](https://github.com/josephwright/siunitx/issues/531))
-## [v3.0.24]: 2021-08-04
+## [v3.0.24] - 2021-08-04
### Fixed
- Option setting `round-half = even` (issue
- [#519](https://github.com/josephwright/siunitx/issues/519))
+ [\#519](https://github.com/josephwright/siunitx/issues/519))
- Handling of standard deviation-like uncertainties where decimal is longer than
- main part (issue [#522](https://github.com/josephwright/siunitx/issues/522))
+ main part (issue [\#522](https://github.com/josephwright/siunitx/issues/522))
- Rounding to uncertainty in the integer part (issue
- [#523](https://github.com/josephwright/siunitx/issues/523))
+ [\#523](https://github.com/josephwright/siunitx/issues/523))
-## [v3.0.23]: 2021-07-26
+## [v3.0.23] - 2021-07-26
### Fixed
- Load order of `xparse` (issue
- [#518](https://github.com/josephwright/siunitx/issues/518))
+ [\#518](https://github.com/josephwright/siunitx/issues/518))
-## [v3.0.22]: 2021-07-22
+## [v3.0.22] - 2021-07-22
### Changed
- Support `table-text-alignment = none` for interoperation with
`tabularray` (issue
- [#510](https://github.com/josephwright/siunitx/issues/510))
+ [\#510](https://github.com/josephwright/siunitx/issues/510))
### Fixed
- Support for `input-remove` (issue
- [#511](https://github.com/josephwright/siunitx/issues/511))
+ [\#511](https://github.com/josephwright/siunitx/issues/511))
- Interaction with `cellspace` package (issue
- [#512](https://github.com/josephwright/siunitx/issues/512))
+ [\#512](https://github.com/josephwright/siunitx/issues/512))
-## [v3.0.21]: 2021-07-20
+## [v3.0.21] - 2021-07-20
### Fixed
- Print degree symbol if `fontspec` package is loaded with
`no-math` option (issue
- [#505](https://github.com/josephwright/siunitx/issues/505))
+ [\#505](https://github.com/josephwright/siunitx/issues/505))
- Handling of 'over-long' separated uncertainties (issue
- [#506](https://github.com/josephwright/siunitx/issues/506))
+ [\#506](https://github.com/josephwright/siunitx/issues/506))
- Symbol for arcs in text mode (issue
- [#507](https://github.com/josephwright/siunitx/issues/507))
+ [\#507](https://github.com/josephwright/siunitx/issues/507))
-## [v3.0.20]: 2021-07-14
+## [v3.0.20] - 2021-07-14
### Fixed
- Interaction with `kotex` (issue
- [#502](https://github.com/josephwright/siunitx/issues/502))
+ [\#502](https://github.com/josephwright/siunitx/issues/502))
- Handling of groups in literal units (issue
- [#503](https://github.com/josephwright/siunitx/issues/503))
+ [\#503](https://github.com/josephwright/siunitx/issues/503))
-## [v3.0.19]: 2021-07-06
+## [v3.0.19] - 2021-07-06
### Fixed
- Emulation for `\SendSettingsToPgf` (issue
- [#501](https://github.com/josephwright/siunitx/issues/501))
+ [\#501](https://github.com/josephwright/siunitx/issues/501))
-## [v3.0.18]: 2021-07-04
+## [v3.0.18] - 2021-07-04
### Fixed
- Printing of reciprocal units when `per-mode = symbol` is active
- (issue [#500](https://github.com/josephwright/siunitx/issues/500))
+ (issue [\#500](https://github.com/josephwright/siunitx/issues/500))
-## [v3.0.17]: 2021-06-29
+## [v3.0.17] - 2021-06-29
### Fixed
- Load order issue with `soulpos` (issue
- [#498](https://github.com/josephwright/siunitx/issues/498))
+ [\#498](https://github.com/josephwright/siunitx/issues/498))
-## [v3.0.16]: 2021-06-24
+## [v3.0.16] - 2021-06-24
### Fixed
- Treatment of spaces before `/` in literal units (issue
- [#495](https://github.com/josephwright/siunitx/issues/495))
+ [\#495](https://github.com/josephwright/siunitx/issues/495))
- Printing of `\mathchoice` entries in text mode (issue
- [#497](https://github.com/josephwright/siunitx/issues/497))
+ [\#497](https://github.com/josephwright/siunitx/issues/497))
-## [v3.0.15]: 2021-06-22
+## [v3.0.15] - 2021-06-22
### Fixed
- Bracketing of complex quantities (issue
- [#491](https://github.com/josephwright/siunitx/issues/491))
+ [\#491](https://github.com/josephwright/siunitx/issues/491))
- Printing of `\ohm` with `fontspec` (issue
- [#492](https://github.com/josephwright/siunitx/issues/492))
+ [\#492](https://github.com/josephwright/siunitx/issues/492))
- Suppress printing implicit plus for zero exponents (issue
- [#493](https://github.com/josephwright/siunitx/issues/493))
+ [\#493](https://github.com/josephwright/siunitx/issues/493))
- Engineering exponents with some exponent values (issue
- [#494](https://github.com/josephwright/siunitx/issues/494))
+ [\#494](https://github.com/josephwright/siunitx/issues/494))
-## [v3.0.14]: 2021-06-17
+## [v3.0.14] - 2021-06-17
### Changed
- Auto-enable `table-fixed-width` when setting `table-column-width`
@@ -230,64 +235,64 @@ Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to
### Fixed
- Incorrect handling of `{}` in literal units (issue
- [#487](https://github.com/josephwright/siunitx/issues/487))
+ [\#487](https://github.com/josephwright/siunitx/issues/487))
- Placement of sign in some complex numbers (issue
- [#488](https://github.com/josephwright/siunitx/issues/488))
+ [\#488](https://github.com/josephwright/siunitx/issues/488))
- Printing of units in quantities when `uncertainty-mode` is
`separate` and an exponent is present (issue
- [#490](https://github.com/josephwright/siunitx/issues/490))
+ [\#490](https://github.com/josephwright/siunitx/issues/490))
-## [v3.0.13]: 2021-06-14
+## [v3.0.13] - 2021-06-14
### Added
- Catalan translations for lists and ranges
### Fixed
- Position of complex root when no real part is present (issue
- [#481](https://github.com/josephwright/siunitx/issues/481))
+ [\#481](https://github.com/josephwright/siunitx/issues/481))
- Skip defining `\unit` if the `units` package is loaded (issue
- [#482](https://github.com/josephwright/siunitx/issues/482))
+ [\#482](https://github.com/josephwright/siunitx/issues/482))
- Printing units in compound quantities when `parse-numbers` is
- false (issue [#484](https://github.com/josephwright/siunitx/issues/484))
+ false (issue [\#484](https://github.com/josephwright/siunitx/issues/484))
- Printing of `1` when both `print-zero-exponent` and
`print-unity-mantissa` are false (issue
- [#485](https://github.com/josephwright/siunitx/issues/485))
+ [\#485](https://github.com/josephwright/siunitx/issues/485))
- Printing of ohm symbol in text mode with `fourier` package (issue
- [#486](https://github.com/josephwright/siunitx/issues/486))
+ [\#486](https://github.com/josephwright/siunitx/issues/486))
-## [v3.0.12]: 2021-06-09
+## [v3.0.12] - 2021-06-09
### Fixed
- Modify warning message (fixes
- [#476](https://github.com/josephwright/siunitx/issues/476))
+ [\#476](https://github.com/josephwright/siunitx/issues/476))
- Rounding zero values to a fixed number of places (issue
- [#477](https://github.com/josephwright/siunitx/issues/477))
+ [\#477](https://github.com/josephwright/siunitx/issues/477))
- Remove stray debug code in symbol allocation (issue
- [#478](https://github.com/josephwright/siunitx/issues/478))
+ [\#478](https://github.com/josephwright/siunitx/issues/478))
-## [v3.0.11]: 2021-06-07
+## [v3.0.11] - 2021-06-07
### Changed
- Improve some fallback unit definitions
### Fixed
- Printing of symbols with encodings other than UTF-8 (issue
- [#470](https://github.com/josephwright/siunitx/issues/470))
+ [\#470](https://github.com/josephwright/siunitx/issues/470))
- Argument order for `\DeclareSIPrefix` (issue
- [#471](https://github.com/josephwright/siunitx/issues/471))
+ [\#471](https://github.com/josephwright/siunitx/issues/471))
- Emulation of `number-unit-separator` (issue
- [#473](https://github.com/josephwright/siunitx/issues/473))
+ [\#473](https://github.com/josephwright/siunitx/issues/473))
-## [v3.0.10]: 2021-06-04
+## [v3.0.10] - 2021-06-04
### Changed
- Documentation improvements
### Fixed
- Incompatibility with REVTeX (issue
- [#469](https://github.com/josephwright/siunitx/issues/469))
+ [\#469](https://github.com/josephwright/siunitx/issues/469))
-## [v3.0.9]: 2021-06-01
+## [v3.0.9] - 2021-06-01
### Changed
- Documentation improvements
@@ -297,15 +302,15 @@ Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to
- Suppress some spurious overfull box warnings
- Issue an error with `output-product`
- Rounding of uncertainties falling in the integer part (issue
- [#454](https://github.com/josephwright/siunitx/issues/454))
+ [\#454](https://github.com/josephwright/siunitx/issues/454))
- Printing in text mode for compound quantities (issue
- [#463](https://github.com/josephwright/siunitx/issues/463))
+ [\#463](https://github.com/josephwright/siunitx/issues/463))
- Correctly handle `\protect` in literal units (issue
- [#464](https://github.com/josephwright/siunitx/issues/464))
+ [\#464](https://github.com/josephwright/siunitx/issues/464))
- Interpretation of uncertainties in integers (issue
- [#465](https://github.com/josephwright/siunitx/issues/465))
+ [\#465](https://github.com/josephwright/siunitx/issues/465))
-## [v3.0.8]: 2021-05-31
+## [v3.0.8] - 2021-05-31
### Changed
- Documentation improvements
@@ -314,49 +319,49 @@ Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to
### Fixed
- Correct printing of `10^{0}` (issue
- [#459](https://github.com/josephwright/siunitx/issues/459))
+ [\#459](https://github.com/josephwright/siunitx/issues/459))
- Emulation of `group-four-digits` (issue
- [#461](https://github.com/josephwright/siunitx/issues/461))
+ [\#461](https://github.com/josephwright/siunitx/issues/461))
-## [v3.0.7]: 2021-05-28
+## [v3.0.7] - 2021-05-28
### Fixed
- Formatting of some literal units (issue
- [#449](https://github.com/josephwright/siunitx/issues/449))
+ [\#449](https://github.com/josephwright/siunitx/issues/449))
- Issue a warning for removed option `load-configurations` (issue
- [#455](https://github.com/josephwright/siunitx/issues/455))
+ [\#455](https://github.com/josephwright/siunitx/issues/455))
- Printing of `\times` and `\cdot` in text mode when using a locale
- (issue [#457](https://github.com/josephwright/siunitx/issues/457))
+ (issue [\#457](https://github.com/josephwright/siunitx/issues/457))
- Implement missing `output-exponent-marker` (issue
- [#458](https://github.com/josephwright/siunitx/issues/458))
+ [\#458](https://github.com/josephwright/siunitx/issues/458))
-## [v3.0.6]: 2021-05-25
+## [v3.0.6] - 2021-05-25
### Changed
- Documentation improvements
### Fixed
- Avoid error if `forbid-literal-units` is set in the preamble (issue
- [#452](https://github.com/josephwright/siunitx/issues/452))
+ [\#452](https://github.com/josephwright/siunitx/issues/452))
- Format separate uncertainty correctly where it falls purely in the integer
- part (issue [#454](https://github.com/josephwright/siunitx/issues/454))
+ part (issue [\#454](https://github.com/josephwright/siunitx/issues/454))
-## [v3.0.5]: 2021-05-24
+## [v3.0.5] - 2021-05-24
### Changed
- Documentation improvements
### Fixed
- Bracket separate uncertainties in compound quantities (issue
- [#441](https://github.com/josephwright/siunitx/issues/441))
+ [\#441](https://github.com/josephwright/siunitx/issues/441))
- Color negative values in table cells correctly (issue
- [#444](https://github.com/josephwright/siunitx/issues/444))
+ [\#444](https://github.com/josephwright/siunitx/issues/444))
- Avoid consumption of any math alphabets (issue
- [#445](https://github.com/josephwright/siunitx/issues/445))
+ [\#445](https://github.com/josephwright/siunitx/issues/445))
- Mark `\bar` as removed (issue
- [#448](https://github.com/josephwright/siunitx/issues/448))
+ [\#448](https://github.com/josephwright/siunitx/issues/448))
-## [v3.0.4]: 2021-05-21
+## [v3.0.4] - 2021-05-21
### Changed
- Standardise and document the position of `\color` in negative values
@@ -364,9 +369,9 @@ Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to
### Fixed
- Alignment of integers in tables when `parse-numbers = tables` (issue
- [#442](https://github.com/josephwright/siunitx/issues/442))
+ [\#442](https://github.com/josephwright/siunitx/issues/442))
-## [v3.0.3]: 2021-05-20
+## [v3.0.3] - 2021-05-20
### Changed
- Documentation improvements
@@ -374,11 +379,11 @@ Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to
### Fixed
- Emulation of `input-symbols` (fixes #431)
- Standard setting for `group-minimum-digits` (issue
- [#436](https://github.com/josephwright/siunitx/issues/436))
+ [\#436](https://github.com/josephwright/siunitx/issues/436))
- Application of negative color in table cells (issue
- [#439](https://github.com/josephwright/siunitx/issues/439))
+ [\#439](https://github.com/josephwright/siunitx/issues/439))
-## [v3.0.2]: 2021-05-19
+## [v3.0.2] - 2021-05-19
### Changed
- Documentation improvements
@@ -386,22 +391,22 @@ Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to
### Fixed
- Option settings `group-digits = true` and `group-digits = false` (issue
- [#422](https://github.com/josephwright/siunitx/issues/422))
+ [\#422](https://github.com/josephwright/siunitx/issues/422))
- Correct position of decimal marker in some tables (issue
- [#423](https://github.com/josephwright/siunitx/issues/423))
+ [\#423](https://github.com/josephwright/siunitx/issues/423))
- Coloring of negative numbers in tables (issue
- [#424](https://github.com/josephwright/siunitx/issues/424))
+ [\#424](https://github.com/josephwright/siunitx/issues/424))
- Alignment of numbers when printing without a `table-format` (issue
- [#424](https://github.com/josephwright/siunitx/issues/424))
+ [\#424](https://github.com/josephwright/siunitx/issues/424))
- Emulation of `\celsius` (issue
- [#426](https://github.com/josephwright/siunitx/issues/426))
+ [\#426](https://github.com/josephwright/siunitx/issues/426))
- Allow `\cdot` to work in text mode (issue
- [#430](https://github.com/josephwright/siunitx/issues/430))
+ [\#430](https://github.com/josephwright/siunitx/issues/430))
### Deprecated
- Unit macro `\celsius`
-## [v3.0.1]: 2021-05-18
+## [v3.0.1] - 2021-05-18
### Added
- Public `\l_siunitx_unit_fraction_tl` variable
@@ -411,13 +416,13 @@ Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to
### Fixed
- Printing of fractional units in text mode (issue
- [#418](https://github.com/josephwright/siunitx/issues/418))
+ [\#418](https://github.com/josephwright/siunitx/issues/418))
- Include `siunitx-abbreviations.cfg` in fallback v2 files (issue
- [#419](https://github.com/josephwright/siunitx/issues/419))
+ [\#419](https://github.com/josephwright/siunitx/issues/419))
- French translation of 'to' for ranges (issue
- [#421](https://github.com/josephwright/siunitx/issues/421))
+ [\#421](https://github.com/josephwright/siunitx/issues/421))
-## [v3.0.0]: 2021-05-17
+## [v3.0.0] - 2021-05-17
### Added
- `\complexnum`
@@ -600,91 +605,91 @@ Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to
- Option `unit-text-tt`
- Option `version-1-compatibility`
-## [v2.8e]: 2021-04-17
+## [v2.8e] - 2021-04-17
### Fixed
- Missing setting in emulation of v1 option `repeatunits`
-## [v2.8d]: 2021-04-09
+## [v2.8d] - 2021-04-09
### Changed
- Correct file dates for configuration files
-## [v2.8c]: 2021-03-27
+## [v2.8c] - 2021-03-27
### Changed
- Updates to follow LaTeX2e kernel revisions
- No longer apply `\addtocontents` patch
-## [v2.8b]: 2020-02-25
+## [v2.8b] - 2020-02-25
### Fixed
- Correct `\ohm` when `newtxmath` is loaded
-## [v2.8a]: 2020-02-23
+## [v2.8a] - 2020-02-23
### Fixed
-- Correct `\ohm` when `unicode-math` is loaded (issue [#377](https://github.com/josephwright/siunitx/issues/377))
+- Correct `\ohm` when `unicode-math` is loaded (issue [\#377](https://github.com/josephwright/siunitx/issues/377))
-## [v2.8]: 2020-02-20
+## [v2.8] - 2020-02-20
### Changed
- Use companion font symbols/force `textcomp` loading
-## [v2.7v]: 2020-02-19 [UNUSED]
+## [v2.7v] - 2020-02-19 [UNUSED]
### Fixed
- Appearance of superscript decimals with comma decimal marker
-## [v2.7u]: 2020-01-15
+## [v2.7u] - 2020-01-15
### Changed
- Modified internals to track `expl3` changes
-## [v2.7t]: 2019-10-10
+## [v2.7t] - 2019-10-10
### Fixed
- Combination of `round-half = even` with `round-precision = 0`
- Include sign in astronomy-style angles
-## [v2.7s]: 2018-05-17
+## [v2.7s] - 2018-05-17
### Changed
- Revert package date format change in v2.7l
-## [v2.7r]: 2018-05-16
+## [v2.7r] - 2018-05-16
### Changed
- Modified internals to track `expl3` changes
### Fixed
- Collect tokens before `\ignorespaces` in tabulars (esp. with
- REVTeX) (issue [#337](https://github.com/josephwright/siunitx/issues/337))
+ REVTeX) (issue [\#337](https://github.com/josephwright/siunitx/issues/337))
-## [v2.7q]: 2018-05-11
+## [v2.7q] - 2018-05-11
### Fixed
-- Allow for `cellspace` "column" option (issue [#315](https://github.com/josephwright/siunitx/issues/315))
+- Allow for `cellspace` "column" option (issue [\#315](https://github.com/josephwright/siunitx/issues/315))
-## [v2.7p]: 2018-05-10
+## [v2.7p] - 2018-05-10
### Changed
- Avoid an `expl3` internal function
- Better approach to removing `\ignorespaces`
-## [v2.7o]: 2018-05-02 [UNUSED]
+## [v2.7o] - 2018-05-02 [UNUSED]
-## [v2.7n]: 2018-04-27
+## [v2.7n] - 2018-04-27
### Fixed
- Issue with symbolic input and digit grouping
-## [v2.7m]: 2018-03-20
+## [v2.7m] - 2018-03-20
### Changed
-- Update `\astronomicalunit` symbol (issue [#332](https://github.com/josephwright/siunitx/issues/332))
+- Update `\astronomicalunit` symbol (issue [\#332](https://github.com/josephwright/siunitx/issues/332))
-## [v2.7l]: 2018-03-11
+## [v2.7l] - 2018-03-11
### Added
- Abbreviations for milli/microjoule
@@ -693,32 +698,32 @@ Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to
- Switch package date format to ISO
### Fixed
-- Scope of some internal variable corrected (issue [#327](https://github.com/josephwright/siunitx/issues/327))
-- Track `unicode-math` changes (issue [#331](https://github.com/josephwright/siunitx/issues/331))
+- Scope of some internal variable corrected (issue [\#327](https://github.com/josephwright/siunitx/issues/327))
+- Track `unicode-math` changes (issue [\#331](https://github.com/josephwright/siunitx/issues/331))
-## [v2.7k]: 2017-11-26
+## [v2.7k] - 2017-11-26
### Fixed
-- Incorrect internal variable renamed (issue [#320](https://github.com/josephwright/siunitx/issues/320))
-- Suppress leading "1" when units are not parsed (issue [#318](https://github.com/josephwright/siunitx/issues/318))
-- Correct default value for `arc-separator` (issue [#319](https://github.com/josephwright/siunitx/issues/319))
+- Incorrect internal variable renamed (issue [\#320](https://github.com/josephwright/siunitx/issues/320))
+- Suppress leading "1" when units are not parsed (issue [\#318](https://github.com/josephwright/siunitx/issues/318))
+- Correct default value for `arc-separator` (issue [\#319](https://github.com/josephwright/siunitx/issues/319))
-## [v2.7j]: 2017-08-02
+## [v2.7j] - 2017-08-02
### Fixed
- Use correct name for internal boolean
-## [v2.7i]: 2017-07-23
+## [v2.7i] - 2017-07-23
### Fixed
-- Incorrect internal variable renamed (issue [#311](https://github.com/josephwright/siunitx/issues/311))
+- Incorrect internal variable renamed (issue [\#311](https://github.com/josephwright/siunitx/issues/311))
-## [v2.7h]: 2017-06-13
+## [v2.7h] - 2017-06-13
### Changed
-- Some abuses of `expl3` box functions removed (issue [#309](https://github.com/josephwright/siunitx/issues/309))
+- Some abuses of `expl3` box functions removed (issue [\#309](https://github.com/josephwright/siunitx/issues/309))
-## [v2.7g]: 2017-05-19
+## [v2.7g] - 2017-05-19
### Changed
- Use new `expl3` functions for some internal tests
@@ -727,7 +732,7 @@ Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to
- Change box collection following `expl3` update
- Links to BIPM website
-## [v2.7f]: 2017-03-23
+## [v2.7f] - 2017-03-23
### Changed
- Name of 'hidden' function used by for bookmark generation
@@ -735,32 +740,32 @@ Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to
### Fixed
- Spacing when option `per-mode = reciprocal-positive-first` is active
-## [v2.7e]: 2017-03-06
+## [v2.7e] - 2017-03-06
### Fixed
-- Properly handle signs in `table-format` key (issue [#303](https://github.com/josephwright/siunitx/issues/303))
+- Properly handle signs in `table-format` key (issue [\#303](https://github.com/josephwright/siunitx/issues/303))
-## [v2.7d]: 2017-02-19
+## [v2.7d] - 2017-02-19
### Fixed
- Avoid doubled tokens in pre-number part of tables
-## [v2.7c]: 2017-02-01
+## [v2.7c] - 2017-02-01
### Fixed
-- Correct integer alignment in tables (issue [#302](https://github.com/josephwright/siunitx/issues/302))
+- Correct integer alignment in tables (issue [\#302](https://github.com/josephwright/siunitx/issues/302))
-## [v2.7b]: 2017-01-28
+## [v2.7b] - 2017-01-28
### Fixed
-- Fix an issue with large numbers in scientific mode (issue [#301](https://github.com/josephwright/siunitx/issues/301))
+- Fix an issue with large numbers in scientific mode (issue [\#301](https://github.com/josephwright/siunitx/issues/301))
-## [v2.7a]: 2017-01-01
+## [v2.7a] - 2017-01-01
### Changed
- Track `expl3` changes regarding key-value management
-## [v2.7]: 2017-01-01
+## [v2.7] - 2017-01-01
### Added
- Code-level API variable `\l_siunitx_unit_symbolic_seq`
@@ -768,24 +773,24 @@ Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to
### Fixed
- Allow for `cellspace` package in math mode
-## [v2.6s]: 2016-09-02
+## [v2.6s] - 2016-09-02
### Changed
- Improved a warning concerning `color` package
-## [v2.6r]: 2016-08-22
+## [v2.6r] - 2016-08-22
### Changed
-- Warn if `color` is not loaded (issue [#289](https://github.com/josephwright/siunitx/issues/289))
-- Document some aspects of internal number processing (issue [#294](https://github.com/josephwright/siunitx/issues/294))
+- Warn if `color` is not loaded (issue [\#289](https://github.com/josephwright/siunitx/issues/289))
+- Document some aspects of internal number processing (issue [\#294](https://github.com/josephwright/siunitx/issues/294))
- Minor `expl3` fixes including tracking deprecations
### Fixed
-- Handling of `e0` input (issue [#292](https://github.com/josephwright/siunitx/issues/292))
+- Handling of `e0` input (issue [\#292](https://github.com/josephwright/siunitx/issues/292))
- Added some missing internal variable declarations
-## [v2.6q]: 2016-03-01
+## [v2.6q] - 2016-03-01
### Fixed
- Correct detection of font inside cells
@@ -793,67 +798,67 @@ Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to
### Changed
- Index formatting
-## [v2.6p]: 2016-01-19
+## [v2.6p] - 2016-01-19
### Fixed
-- Formatting of `\degreeCelsius` (issue [#285](https://github.com/josephwright/siunitx/issues/285))
+- Formatting of `\degreeCelsius` (issue [\#285](https://github.com/josephwright/siunitx/issues/285))
- Allow input unit with prefix and `\per` in `exponent-to-prefix` (issue 283)
-## [v2.6o]: 2016-01-05
+## [v2.6o] - 2016-01-05
### Fixed
- Allow for unit powers when converting exponents to prefixes
-## [v2.6n]: 2015-12-31
+## [v2.6n] - 2015-12-31
### Changed
-- Formatting of `\degreeCelsius` (issue [#282](https://github.com/josephwright/siunitx/issues/282))
+- Formatting of `\degreeCelsius` (issue [\#282](https://github.com/josephwright/siunitx/issues/282))
### Fixed
-- Appearance of ångström with LuaTeX (issue [#280](https://github.com/josephwright/siunitx/issues/280))
+- Appearance of ångström with LuaTeX (issue [\#280](https://github.com/josephwright/siunitx/issues/280))
-## [v2.6m]: 2015-10-15
+## [v2.6m] - 2015-10-15
### Fixed
- Interaction with `mwtab` in some table cells
-## [v2.6l]: 2015-09-14
+## [v2.6l] - 2015-09-14
### Fixed
- An internal error in literal unit formatting
-## [v2.6k]: 2015-09-12
+## [v2.6k] - 2015-09-12
### Changed
- Track/exploit `expl3` updates
-## [v2.6j]: 2015-09-01
+## [v2.6j] - 2015-09-01
### Fixed
- Treatment of `\pm` when `exponent-to-prefix` is true
- Print all units when `exponent-to-prefix` is true
-## [v2.6i]: 2015-08-18
+## [v2.6i] - 2015-08-18
### Changed
- Performance improvements
- Removed one deprecated `expl3` functions
### Fixed
-- Use of `\cancel` in math mode (issue [#264](https://github.com/josephwright/siunitx/issues/264))
-- Cope better with large numbers when rounding (issue [#198](https://github.com/josephwright/siunitx/issues/198))
+- Use of `\cancel` in math mode (issue [\#264](https://github.com/josephwright/siunitx/issues/264))
+- Cope better with large numbers when rounding (issue [\#198](https://github.com/josephwright/siunitx/issues/198))
-## [v2.6h]: 2015-07-17
+## [v2.6h] - 2015-07-17
### Changed
- Track `expl3` changes
-## [v2.6g]: 2015-06-25
+## [v2.6g] - 2015-06-25
### Fixed
-- Handling of empty table cells (issue [#271](https://github.com/josephwright/siunitx/issues/271))
+- Handling of empty table cells (issue [\#271](https://github.com/josephwright/siunitx/issues/271))
-## [v2.6f]: 2015-06-16
+## [v2.6f] - 2015-06-16
### Added
- Spanish coverage for translations
@@ -866,22 +871,22 @@ Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to
- Behaviour of `table-sign-exponent` and `table-sign-mantissa` when set
false
-## [v2.6e]: 2015-01-21
+## [v2.6e] - 2015-01-21
### Changed
- Auto-detect `mathspec`/`eulervm`
-## [v2.6d]: 2014-10-28
+## [v2.6d] - 2014-10-28
### Fixed
- Fix conversation of uncertainty part with integer mantissas
-## [v2.6c]: 2014-10-01
+## [v2.6c] - 2014-10-01
### Fixed
- `\micro` when `fontspec` is loaded
-## [v2.6b]: 2014-09-27
+## [v2.6b] - 2014-09-27
### Changed
- Method for font shape detection to allow for, _e.g._ `\scshape`
@@ -889,84 +894,84 @@ Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to
### Fixed
- Typo in standard `input-protect-tokens` options
-## [v2.6a]: 2014-09-15
+## [v2.6a] - 2014-09-15
### Changed
- Improved Unicode math symbol coverage
-## [v2.6]: 2014-09-05
+## [v2.6] - 2014-09-05
### Changes
- Switch to math mode by default for all printing
- Use `\mathord` before comparators
- Only apply 'tight' spacing to `\mathbin` cases
- Use a 'real' minus with `tex4ht`
-- Use a full width space between number and unit (issue [#230](https://github.com/josephwright/siunitx/issues/230))
-- Note that colour for printing powers is set by `power-font` (issue [#240](https://github.com/josephwright/siunitx/issues/240))
-- Use `\mathord` to get 'tight' spacing for signs (issue [#241](https://github.com/josephwright/siunitx/issues/241))
-- Old `repeatunits` option is partly coved by `range-units` (issue [#254](https://github.com/josephwright/siunitx/issues/254))
+- Use a full width space between number and unit (issue [\#230](https://github.com/josephwright/siunitx/issues/230))
+- Note that colour for printing powers is set by `power-font` (issue [\#240](https://github.com/josephwright/siunitx/issues/240))
+- Use `\mathord` to get 'tight' spacing for signs (issue [\#241](https://github.com/josephwright/siunitx/issues/241))
+- Old `repeatunits` option is partly coved by `range-units` (issue [\#254](https://github.com/josephwright/siunitx/issues/254))
### Fixed
- Loading when `mdwtab` is in use
- Appearance of minus sign when `tex4ht` is in use
- Spacing when printing comparators
-- Preserve `\fg` in bookmarks (issue [#226](https://github.com/josephwright/siunitx/issues/226))
-- Allow for `output-exponent-marker` option in tables (issue [#232](https://github.com/josephwright/siunitx/issues/232))
+- Preserve `\fg` in bookmarks (issue [\#226](https://github.com/josephwright/siunitx/issues/226))
+- Allow for `output-exponent-marker` option in tables (issue [\#232](https://github.com/josephwright/siunitx/issues/232))
- Conversion of integer with separate uncertainty to 'compact' form
- (issue [#233](https://github.com/josephwright/siunitx/issues/233))
-- Option name wrong in v1 table (issue [#240](https://github.com/josephwright/siunitx/issues/240))
-- Use `\textpm` in text mode if `textcomp` package is loaded (issue [#249](https://github.com/josephwright/siunitx/issues/249))
-- Ignore hard spaces in `\num` (issue [#256](https://github.com/josephwright/siunitx/issues/256))
-- Use `\mathord` for tight spacing on 'in line' exponent (issue [#257](https://github.com/josephwright/siunitx/issues/257))
+ (issue [\#233](https://github.com/josephwright/siunitx/issues/233))
+- Option name wrong in v1 table (issue [\#240](https://github.com/josephwright/siunitx/issues/240))
+- Use `\textpm` in text mode if `textcomp` package is loaded (issue [\#249](https://github.com/josephwright/siunitx/issues/249))
+- Ignore hard spaces in `\num` (issue [\#256](https://github.com/josephwright/siunitx/issues/256))
+- Use `\mathord` for tight spacing on 'in line' exponent (issue [\#257](https://github.com/josephwright/siunitx/issues/257))
-## [v2.5s]: 2013-07-31
+## [v2.5s] - 2013-07-31
### Fixed
- Internal issue with one key
-## [v2.5r]: 2013-07-11
+## [v2.5r] - 2013-07-11
## Fixed
- Update internals to remove deprecated key support
-## [v2.5q]: 2013-03-11
+## [v2.5q] - 2013-03-11
### Changed
- Issue warning if `cellspace` column letter is moved
### Fixed
-- Reorder creation of unit wrappers and option setting (issue [#218](https://github.com/josephwright/siunitx/issues/218))
-- Replace active hyphen with 'other' one (issue [#222](https://github.com/josephwright/siunitx/issues/222))
+- Reorder creation of unit wrappers and option setting (issue [\#218](https://github.com/josephwright/siunitx/issues/218))
+- Replace active hyphen with 'other' one (issue [\#222](https://github.com/josephwright/siunitx/issues/222))
-## [v2.5p]: 2013-02-01
+## [v2.5p] - 2013-02-01
### Fixed
- Search/replace `\pm` and `\mp` in text mode printing
-## [v2.5o]: 2013-01-09
+## [v2.5o] - 2013-01-09
### Changed
- Track `expl3` changes
-## [v2.5n]: 2012-12-29
+## [v2.5n] - 2012-12-29
### Fixed
-- Correctly calculate grouping data to send to `pgf` (issue [#211](https://github.com/josephwright/siunitx/issues/211))
+- Correctly calculate grouping data to send to `pgf` (issue [\#211](https://github.com/josephwright/siunitx/issues/211))
-## [v2.5m]: 2012-11-27
+## [v2.5m] - 2012-11-27
### Fixed
- Allow for `bidi`/RTL when applying `\text`
- Search-and-replace in UTF-8 literal units
-- Load binary-units only when requested (issue [#201](https://github.com/josephwright/siunitx/issues/201))
-- Disable `\hightlight` in bookmarks (issue [#207](https://github.com/josephwright/siunitx/issues/207))
+- Load binary-units only when requested (issue [\#201](https://github.com/josephwright/siunitx/issues/201))
+- Disable `\hightlight` in bookmarks (issue [\#207](https://github.com/josephwright/siunitx/issues/207))
-## [v2.5l]: 2012-11-21
+## [v2.5l] - 2012-11-21
### Changed
- Track `expl3` changes
-## [v2.5k]: 2012-11-13
+## [v2.5k] - 2012-11-13
### Changed
- Explicitly require `xparse`
@@ -974,14 +979,14 @@ Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to
### Fixed
- Skip white space after `\begin{document}`
- Correct use of fixed dimension/skip values internally
-- Store name of `\frac` function, don't `\let` it (issue [#203](https://github.com/josephwright/siunitx/issues/203))
+- Store name of `\frac` function, don't `\let` it (issue [\#203](https://github.com/josephwright/siunitx/issues/203))
-## [v2.5j]: 2012-09-18
+## [v2.5j] - 2012-09-18
### Fixed
-- Erroneous branch in test for rounding removed (issue [#202](https://github.com/josephwright/siunitx/issues/202))
+- Erroneous branch in test for rounding removed (issue [\#202](https://github.com/josephwright/siunitx/issues/202))
-## [v2.5i]: 2012-09-11
+## [v2.5i] - 2012-09-11
### Changed
- Internal search for first token in some strings
@@ -990,101 +995,101 @@ Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to
- Align numbers with no uncertainties correctly when space is reserved
for uncertainty part
-## [v2.5h]: 2012-08-28
+## [v2.5h] - 2012-08-28
### Changed
- Test literal units for being 'blank' not 'empty'
-## [v2.5g]: 2012-07-22
+## [v2.5g] - 2012-07-22
### Fixed
- Function of `binary-units` option
-## [v2.5f]: 2012-07-16
+## [v2.5f] - 2012-07-16
### Changed
- Track `expl3` changes
-## [v2.5e]: 2012-06-13
+## [v2.5e] - 2012-06-13
### Fixed
- An internal error in unit expansion (introduced in v2.4f)
-## [v2.5d]: 2012-06-11
+## [v2.5d] - 2012-06-11
### Added
- Extend qualifier system to cover 'phrases'
### Changed
-- Extend UTF-8 support (issue [#199](https://github.com/josephwright/siunitx/issues/199))
+- Extend UTF-8 support (issue [\#199](https://github.com/josephwright/siunitx/issues/199))
- Track `expl3` changes
-## [v2.5c]: 2012-05-03
+## [v2.5c] - 2012-05-03
### Fixed
-- Detect and skip empty `s`-column cells (issue [#197](https://github.com/josephwright/siunitx/issues/197))
-- Detection of zero input with fixed exponent (issue [#198](https://github.com/josephwright/siunitx/issues/198))
+- Detect and skip empty `s`-column cells (issue [\#197](https://github.com/josephwright/siunitx/issues/197))
+- Detection of zero input with fixed exponent (issue [\#198](https://github.com/josephwright/siunitx/issues/198))
-## [v2.5b]: 2012-04-21
+## [v2.5b] - 2012-04-21
### Fixed
-- Detect eulervm package (issue [#195](https://github.com/josephwright/siunitx/issues/195))
+- Detect eulervm package (issue [\#195](https://github.com/josephwright/siunitx/issues/195))
- Search-and-replace for category 'other' "_' and "^" in literal
- units (issue [#196](https://github.com/josephwright/siunitx/issues/196))
+ units (issue [\#196](https://github.com/josephwright/siunitx/issues/196))
-## [v2.5a]: 2012-04-19
+## [v2.5a] - 2012-04-19
### Fixed
- When creating free-standing unit, allow for dynamic nature of
spacing (bug introduced in v2.5)
-## [v2.5]: 2012-04-15
+## [v2.5] - 2012-04-15
### Added
-- Option `zero-decimal-to-integer` (issue [#178](https://github.com/josephwright/siunitx/issues/178))
-- Option to omit uncertainly entirely (issue [#180](https://github.com/josephwright/siunitx/issues/180))
+- Option `zero-decimal-to-integer` (issue [\#178](https://github.com/josephwright/siunitx/issues/178))
+- Option to omit uncertainly entirely (issue [\#180](https://github.com/josephwright/siunitx/issues/180))
### Changed
- Reduce use of implicit math mode
-- Document that `round-mode = places` acts on the mantissa (issue [#193](https://github.com/josephwright/siunitx/issues/193))
-- Rearrange processing code such that exponents can be dropped (issue [#192](https://github.com/josephwright/siunitx/issues/192))
+- Document that `round-mode = places` acts on the mantissa (issue [\#193](https://github.com/josephwright/siunitx/issues/193))
+- Rearrange processing code such that exponents can be dropped (issue [\#192](https://github.com/josephwright/siunitx/issues/192))
### Fixed
-- Use a standard-width comparator for tables (issue [#183](https://github.com/josephwright/siunitx/issues/183))
+- Use a standard-width comparator for tables (issue [\#183](https://github.com/josephwright/siunitx/issues/183))
-## [v2.4n]: 2012-04-12
+## [v2.4n] - 2012-04-12
### Changed
- Extend scientific notation code to better handle large numbers of digits
-## [v2.4m]: 2012-04-04
+## [v2.4m] - 2012-04-04
### Fixed
- Handling of a single entry in `\SIlist`
-## [v2.4l]: 2012-03-23
+## [v2.4l] - 2012-03-23
### Fixed
- Load ordering with `soulpos`
-## [v2.4k]: 2012-03-22
+## [v2.4k] - 2012-03-22
### Fixed
-- Interaction of `^` and `_` with `breqn` (issue [#191](https://github.com/josephwright/siunitx/issues/191))
-- Adapted `list-pair-separator` for `translator` package (issue [#190](https://github.com/josephwright/siunitx/issues/190))
+- Interaction of `^` and `_` with `breqn` (issue [\#191](https://github.com/josephwright/siunitx/issues/191))
+- Adapted `list-pair-separator` for `translator` package (issue [\#190](https://github.com/josephwright/siunitx/issues/190))
- Check for `round-minimum` with large values
-## [v2.4j]: 2012-01-26
+## [v2.4j] - 2012-01-26
### Fixed
- Ensure that typesetting is in hmode
-## [v2.4i]: 2012-01-19
+## [v2.4i] - 2012-01-19
### Fixed
-- Check for zero decimal part (issue [#186](https://github.com/josephwright/siunitx/issues/186))
+- Check for zero decimal part (issue [\#186](https://github.com/josephwright/siunitx/issues/186))
-## [v2.4h]: 2012-01-15
+## [v2.4h] - 2012-01-15
### Changed
- Shortened an internal code path
@@ -1092,12 +1097,12 @@ Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to
### Fixed
- Bug in `reciprocal-positive-first` implementation
-## [v2.4g]: 2012-01-06
+## [v2.4g] - 2012-01-06
### Changed
-- Internal changes due to update to `expl3` (issue [#131](https://github.com/josephwright/siunitx/issues/131))
+- Internal changes due to update to `expl3` (issue [\#131](https://github.com/josephwright/siunitx/issues/131))
-## [v2.4f]: 2011-12-24
+## [v2.4f] - 2011-12-24
### Changed
- Improve performance in an internal mapping
@@ -1107,12 +1112,12 @@ Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to
- Force font update in table cells
- One incorrect internal variable name
-## [v2.4e]: 2011-12-11
+## [v2.4e] - 2011-12-11
### Fixed
- Replacements used with `latin1` encoding
-## [v2.4d]: 2011-12-09
+## [v2.4d] - 2011-12-09
### Changed
- Source formatting
@@ -1120,67 +1125,67 @@ Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to
### Fixed
- Free-standing units using `xspace` in captions
-## [v2.4c]: 2011-12-09
+## [v2.4c] - 2011-12-09
### Fixed
- Test for text mode font
-## [v2.4b]: 2011-12-09
+## [v2.4b] - 2011-12-09
### Fixed
- Incorrect doubling of `#` tokens
-## [v2.4a]: 2011-12-04
+## [v2.4a] - 2011-12-04
### Changed
- Extend search-and-replace in units to cover UTF-8 symbols
-- Symbols used with UTF-8 engines (issue [#176](https://github.com/josephwright/siunitx/issues/176))
+- Symbols used with UTF-8 engines (issue [\#176](https://github.com/josephwright/siunitx/issues/176))
### Fixed
-- Interaction of `textcomp` with user symbol changes (issue [#181](https://github.com/josephwright/siunitx/issues/181))
+- Interaction of `textcomp` with user symbol changes (issue [\#181](https://github.com/josephwright/siunitx/issues/181))
## [v2.4] - 2012-04-15
### Added
-- Option `round-half = even` (issue [#40](https://github.com/josephwright/siunitx/issues/40))
-- Option `list-pair-separator` (issue [#136](https://github.com/josephwright/siunitx/issues/136))
-- Auto-conversion for prefixes (issue [#173](https://github.com/josephwright/siunitx/issues/173))
+- Option `round-half = even` (issue [\#40](https://github.com/josephwright/siunitx/issues/40))
+- Option `list-pair-separator` (issue [\#136](https://github.com/josephwright/siunitx/issues/136))
+- Auto-conversion for prefixes (issue [\#173](https://github.com/josephwright/siunitx/issues/173))
- Notes for upgraders
### Changed
-- Automatically 'compress' exponents (issue [#62](https://github.com/josephwright/siunitx/issues/62))
+- Automatically 'compress' exponents (issue [\#62](https://github.com/josephwright/siunitx/issues/62))
- Clean up internal `expl3` usage
- Removed remaining 'math' options
### Fixed
-- Replace minus sign in text mode (issue [#161](https://github.com/josephwright/siunitx/issues/161))
+- Replace minus sign in text mode (issue [\#161](https://github.com/josephwright/siunitx/issues/161))
-## [v2.3h]: 2011-10-14
+## [v2.3h] - 2011-10-14
### Changed
- Internal logic improved
- Explicitly load `xfac` as part of documentation
### Fixed
-- Select math mode with `tex4ht` (issue [#170](https://github.com/josephwright/siunitx/issues/170))
-- Print superscripts using HTML tags with `tex4ht` (issue [#171](https://github.com/josephwright/siunitx/issues/171))
+- Select math mode with `tex4ht` (issue [\#170](https://github.com/josephwright/siunitx/issues/170))
+- Print superscripts using HTML tags with `tex4ht` (issue [\#171](https://github.com/josephwright/siunitx/issues/171))
-## [v2.3g]: 2011-10-06
+## [v2.3g] - 2011-10-06
### Changed
- Mark-up in documentation
### Fixed
- Check for leading zero when dealing with rounding 'large' exponents
- (issue [#168](https://github.com/josephwright/siunitx/issues/168))
+ (issue [\#168](https://github.com/josephwright/siunitx/issues/168))
- Internal issue with undeclared variable
-## [v2.3f]: 2011-09-13
+## [v2.3f] - 2011-09-13
### Fixed
-- Trap erroneous numbers in tables (issue [#167](https://github.com/josephwright/siunitx/issues/167))
+- Trap erroneous numbers in tables (issue [\#167](https://github.com/josephwright/siunitx/issues/167))
-## [v2.3e]: 2011-09-09
+## [v2.3e] - 2011-09-09
### Added
- Advice on local installation
@@ -1189,25 +1194,25 @@ Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to
- Remove deprecated `expl3` functions
- Performance improvements
-## [v2.3d]: 2011-08-18
+## [v2.3d] - 2011-08-18
### Fixed
- Bad csname for superscripts in literal mode
-## [v2.3c]: 2011-08-12
+## [v2.3c] - 2011-08-12
### Fixed
-- Use correct `\pm` for units in literal mode (issue [#163](https://github.com/josephwright/siunitx/issues/163))
+- Use correct `\pm` for units in literal mode (issue [\#163](https://github.com/josephwright/siunitx/issues/163))
-## [v2.3b]: 2011-08-08
+## [v2.3b] - 2011-08-08
### Added
-- Additional abbreviated units (issue [#162](https://github.com/josephwright/siunitx/issues/162))
+- Additional abbreviated units (issue [\#162](https://github.com/josephwright/siunitx/issues/162))
### Fixed
- Definition of abbreviations using option `free-standing-units`
-## [v2.3a]: 2011-07-17
+## [v2.3a] - 2011-07-17
### Changed
- Internal `expl3` updates
@@ -1215,12 +1220,12 @@ Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to
### Fixed
- Restore changes from v2.2l, missed in v2.3
-## [v2.3]: 2011-07-09
+## [v2.3] - 2011-07-09
### Added
-- Supported for powers in literal units (issue [#152](https://github.com/josephwright/siunitx/issues/152))
+- Supported for powers in literal units (issue [\#152](https://github.com/josephwright/siunitx/issues/152))
- Unit abbreviation `\hl`/`\hL`
-- Demo for 'closing up' not after an integer (issue [#151](https://github.com/josephwright/siunitx/issues/151))
+- Demo for 'closing up' not after an integer (issue [\#151](https://github.com/josephwright/siunitx/issues/151))
### Changed
- Load binary units as an option
@@ -1234,71 +1239,71 @@ Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to
### Fixed
- Behavior of `table-auto-round` option
- Missing deactivation in `strict` option
-- Grouping digits (issue [#133](https://github.com/josephwright/siunitx/issues/133))
-- Addition of explicit sign to mantissa (issue [#139](https://github.com/josephwright/siunitx/issues/139))
+- Grouping digits (issue [\#133](https://github.com/josephwright/siunitx/issues/133))
+- Addition of explicit sign to mantissa (issue [\#139](https://github.com/josephwright/siunitx/issues/139))
- Various issues with tabular alignment
-## [v2.2l]: 2011-06-30
+## [v2.2l] - 2011-06-30
### Fixed
-- Group pre-unit parsing (issue [#158](https://github.com/josephwright/siunitx/issues/158))
+- Group pre-unit parsing (issue [\#158](https://github.com/josephwright/siunitx/issues/158))
-## [v2.2k]: 2011-06-27
+## [v2.2k] - 2011-06-27
### Fixed
-- Avoid `\peek_...` inside the print routine (issue [#157](https://github.com/josephwright/siunitx/issues/157))
+- Avoid `\peek_...` inside the print routine (issue [\#157](https://github.com/josephwright/siunitx/issues/157))
-## [v2.2j]: 2011-06-26
+## [v2.2j] - 2011-06-26
### Fixed
-- Avoid box for range phrase (issue [#156](https://github.com/josephwright/siunitx/issues/156))
+- Avoid box for range phrase (issue [\#156](https://github.com/josephwright/siunitx/issues/156))
-## [v2.2i]: 2011-06-15
+## [v2.2i] - 2011-06-15
### Fixed
-- Detect font in table cells before boxing up (issue [#153](https://github.com/josephwright/siunitx/issues/153))
+- Detect font in table cells before boxing up (issue [\#153](https://github.com/josephwright/siunitx/issues/153))
-## [v2.2h]: 2011-06-03
+## [v2.2h] - 2011-06-03
### Fixed
-- Deal correctly with 'roll-over' in rounding integer part (issue [#150](https://github.com/josephwright/siunitx/issues/150))
+- Deal correctly with 'roll-over' in rounding integer part (issue [\#150](https://github.com/josephwright/siunitx/issues/150))
-## [v2.2g]: 2011-06-02
+## [v2.2g] - 2011-06-02
### Fixed
- Set per-unit options for list/range units when a single unit is used
- (issue [#149](https://github.com/josephwright/siunitx/issues/149))
+ (issue [\#149](https://github.com/josephwright/siunitx/issues/149))
- Add test for `parse-numbers = false` to `\tablenum` code
-## [v2.2f]: 2011-05-25
+## [v2.2f] - 2011-05-25
### Fixed
-- `table-column-width = 0pt` (issue [#146](https://github.com/josephwright/siunitx/issues/146))
+- `table-column-width = 0pt` (issue [\#146](https://github.com/josephwright/siunitx/issues/146))
-## [v2.2e]: 2011-05-23
+## [v2.2e] - 2011-05-23
### Fixed
-- Remove 'mantissa' marker for numbers with no real part (issue [#145](https://github.com/josephwright/siunitx/issues/145))
+- Remove 'mantissa' marker for numbers with no real part (issue [\#145](https://github.com/josephwright/siunitx/issues/145))
-## [v2.2d]: 2011-04-28
+## [v2.2d] - 2011-04-28
### Fixed
-- The `strict` option (issue [#143](https://github.com/josephwright/siunitx/issues/143))
-- Add `\dots` to protected symbols (issue [#131](https://github.com/josephwright/siunitx/issues/131))
+- The `strict` option (issue [\#143](https://github.com/josephwright/siunitx/issues/143))
+- Add `\dots` to protected symbols (issue [\#131](https://github.com/josephwright/siunitx/issues/131))
-## [v2.2c]: 2011-04-20
+## [v2.2c] - 2011-04-20
### Fixed
-- Bad expansion of toks (issue [#141](https://github.com/josephwright/siunitx/issues/141))
+- Bad expansion of toks (issue [\#141](https://github.com/josephwright/siunitx/issues/141))
-## [v2.2b]: 2011-04-19
+## [v2.2b] - 2011-04-19
### Fixed
- Bad formatting of negative exponents when using 'E' output
-- Internally one argument if `color` is not loaded (issue [#138](https://github.com/josephwright/siunitx/issues/138))
-- Make `\of` expandable in literal contexts (issue [#137](https://github.com/josephwright/siunitx/issues/137))
+- Internally one argument if `color` is not loaded (issue [\#138](https://github.com/josephwright/siunitx/issues/138))
+- Make `\of` expandable in literal contexts (issue [\#137](https://github.com/josephwright/siunitx/issues/137))
-## [v2.2a]: 2011-04-16
+## [v2.2a] - 2011-04-16
### Changed
- Make full text for tables, etc., hyperlinks in docs
@@ -1306,58 +1311,58 @@ Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to
- Performance enhancements
### Fixed
-- Auto-insertion of "1" when literal mode is on (issue [#135](https://github.com/josephwright/siunitx/issues/135))
-- Detect `\end` macro and print output correctly (issue [#134](https://github.com/josephwright/siunitx/issues/134))
-- Group digits for input containing symbolic entries (issue [#131](https://github.com/josephwright/siunitx/issues/131))
-- Specify a default for `group-digits` (issue [#130](https://github.com/josephwright/siunitx/issues/130))
-- Correctly expand macros with arguments in tables (issue [#129](https://github.com/josephwright/siunitx/issues/129))
+- Auto-insertion of "1" when literal mode is on (issue [\#135](https://github.com/josephwright/siunitx/issues/135))
+- Detect `\end` macro and print output correctly (issue [\#134](https://github.com/josephwright/siunitx/issues/134))
+- Group digits for input containing symbolic entries (issue [\#131](https://github.com/josephwright/siunitx/issues/131))
+- Specify a default for `group-digits` (issue [\#130](https://github.com/josephwright/siunitx/issues/130))
+- Correctly expand macros with arguments in tables (issue [\#129](https://github.com/josephwright/siunitx/issues/129))
- Ensure that `*` in tabular preamble works correctly with `S`/`s` columns
- (issue [#128](https://github.com/josephwright/siunitx/issues/128))
+ (issue [\#128](https://github.com/josephwright/siunitx/issues/128))
-## [v2.2]: 2011-04-13
+## [v2.2] - 2011-04-13
### Added
- `\tablenum` command (issue ##117)
-- Parse separated uncertainties (issue [#57](https://github.com/josephwright/siunitx/issues/57))
-- Allow `\cancel` in units (issue [#4](https://github.com/josephwright/siunitx/issues/4))
+- Parse separated uncertainties (issue [\#57](https://github.com/josephwright/siunitx/issues/57))
+- Allow `\cancel` in units (issue [\#4](https://github.com/josephwright/siunitx/issues/4))
- Allow `\highlight` in units
-- Option `table-column-width` (issue [#105](https://github.com/josephwright/siunitx/issues/105))
-- Option `bracket-negative-numbers` (issue [#5](https://github.com/josephwright/siunitx/issues/5))
-- Option `table-align-comparators` (issue [#86](https://github.com/josephwright/siunitx/issues/86))
-- Option `minimum-integer-digits` (issue [#112](https://github.com/josephwright/siunitx/issues/112))
-- Option to print exponent marker literally (issue [#113](https://github.com/josephwright/siunitx/issues/113))
-- Support for engineering-style number output (issue [#114](https://github.com/josephwright/siunitx/issues/114))
-- Example of centring a right-aligned column (issue [#85](https://github.com/josephwright/siunitx/issues/85))
+- Option `table-column-width` (issue [\#105](https://github.com/josephwright/siunitx/issues/105))
+- Option `bracket-negative-numbers` (issue [\#5](https://github.com/josephwright/siunitx/issues/5))
+- Option `table-align-comparators` (issue [\#86](https://github.com/josephwright/siunitx/issues/86))
+- Option `minimum-integer-digits` (issue [\#112](https://github.com/josephwright/siunitx/issues/112))
+- Option to print exponent marker literally (issue [\#113](https://github.com/josephwright/siunitx/issues/113))
+- Support for engineering-style number output (issue [\#114](https://github.com/josephwright/siunitx/issues/114))
+- Example of centring a right-aligned column (issue [\#85](https://github.com/josephwright/siunitx/issues/85))
- Various unit abbreviations
### Changed
- Renamed `...-separator` options to `...-product` where appropriate
### Fixed
-- Allow `\DeclareSIUnit` to take optional argument (issue [#121](https://github.com/josephwright/siunitx/issues/121))
+- Allow `\DeclareSIUnit` to take optional argument (issue [\#121](https://github.com/josephwright/siunitx/issues/121))
- Latent issue with micro symbol when `fontspec` is loaded
- Right-alignment in fixed-width columns
- Print leading `1` when units start `\per` and `per-mode = symbol`
- (issue [#125](https://github.com/josephwright/siunitx/issues/125))
+ (issue [\#125](https://github.com/josephwright/siunitx/issues/125))
-## [v2.1p]: 2011-04-04
+## [v2.1p] - 2011-04-04
### Fixed
- Two bugs in comparator code
-## [v2.1o]: 2011-04-03
+## [v2.1o] - 2011-04-03
### Fixed
-- Detect arev package (issue [#122](https://github.com/josephwright/siunitx/issues/122))
-- Allow for negative fixed exponents (issue [#123](https://github.com/josephwright/siunitx/issues/123))
+- Detect arev package (issue [\#122](https://github.com/josephwright/siunitx/issues/122))
+- Allow for negative fixed exponents (issue [\#123](https://github.com/josephwright/siunitx/issues/123))
-## [v2.1n]: 2011-03-31
+## [v2.1n] - 2011-03-31
### Fixed
-- Rounding to zero significant figures should always give a 0 (issue [#119](https://github.com/josephwright/siunitx/issues/119))
+- Rounding to zero significant figures should always give a 0 (issue [\#119](https://github.com/josephwright/siunitx/issues/119))
- `round-integer-to-decimal` when `round-precision = 0`
-## [v2.1m]: 2011-03-20
+## [v2.1m] - 2011-03-20
### Added
- `\J` as an abbreviation for `\joule`
@@ -1368,14 +1373,14 @@ Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to
### Fixed
- Ensure that some output occurs in when `round-precision = 0` and
- `round-mode = places` (issue [#111](https://github.com/josephwright/siunitx/issues/111))
+ `round-mode = places` (issue [\#111](https://github.com/josephwright/siunitx/issues/111))
-## [v2.1l]: 2011-02-10
+## [v2.1l] - 2011-02-10
### Fixed
- A couple of errant 'weight' => 'family' changes
-## [v2.1k]: 2011-02-09
+## [v2.1k] - 2011-02-09
### Added
- Option `detect-inine-family`
@@ -1383,86 +1388,86 @@ Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to
### Changed
- Use an internal integer for text minus
-## [v2.1j]: 2011-02-01
+## [v2.1j] - 2011-02-01
### Fixed
- Check for `\inputencodingname` macro rather than `inputenc` package
- (issue [#107](https://github.com/josephwright/siunitx/issues/107))
+ (issue [\#107](https://github.com/josephwright/siunitx/issues/107))
-## [v2.1i]: 2011-01-27
+## [v2.1i] - 2011-01-27
### Changed
- New approach for `detect-display-math`
### Fixed
-- New approach to `symbol-or-fraction` (issue [#104](https://github.com/josephwright/siunitx/issues/104))
+- New approach to `symbol-or-fraction` (issue [\#104](https://github.com/josephwright/siunitx/issues/104))
-## [v2.1h]: 2011-01-18
+## [v2.1h] - 2011-01-18
### Changed
- Detect AMS display-like environments
-## [v2.1g]: 2010-12-21
+## [v2.1g] - 2010-12-21
### Changed
- Update test for `expl3` and `xparse`
-## [v2.1f]: 2010-11-24
+## [v2.1f] - 2010-11-24
### Fixed
-- One-letter typo (issue [#101](https://github.com/josephwright/siunitx/issues/101))
+- One-letter typo (issue [\#101](https://github.com/josephwright/siunitx/issues/101))
-## [v2.1e]: 2010-11-22
+## [v2.1e] - 2010-11-22
### Fixed
-- Issue with free-standing unit options (issue [#99](https://github.com/josephwright/siunitx/issues/99))
-- Text mode symbols with `fontspec` (issue [#98](https://github.com/josephwright/siunitx/issues/98))
+- Issue with free-standing unit options (issue [\#99](https://github.com/josephwright/siunitx/issues/99))
+- Text mode symbols with `fontspec` (issue [\#98](https://github.com/josephwright/siunitx/issues/98))
-## [v2.1d]: 2010-11-14
+## [v2.1d] - 2010-11-14
### Fixed
-- Apply options for units when in free-standing mode (issue [#97](https://github.com/josephwright/siunitx/issues/97))
+- Apply options for units when in free-standing mode (issue [\#97](https://github.com/josephwright/siunitx/issues/97))
- Typo in v1 configuration file
-## [v2.1c]: 2010-11-14
+## [v2.1c] - 2010-11-14
### Added
-- Choice `text` for `qualifier-mode` option (issue [#95](https://github.com/josephwright/siunitx/issues/95))
+- Choice `text` for `qualifier-mode` option (issue [\#95](https://github.com/josephwright/siunitx/issues/95))
### Changed
- Discourage line break between number and unit even when it is permitted
- (issue [#92](https://github.com/josephwright/siunitx/issues/92))
+ (issue [\#92](https://github.com/josephwright/siunitx/issues/92))
- Ensure that lists can break across lines
- Restrict range and list functions to text mode
-- Auto-detect math mode in tables (issue [#94](https://github.com/josephwright/siunitx/issues/94))
+- Auto-detect math mode in tables (issue [\#94](https://github.com/josephwright/siunitx/issues/94))
-## [v2.1b]: 2010-11-05
+## [v2.1b] - 2010-11-05
### Changed
-- Improve hyphen to minus correction (issue [#89](https://github.com/josephwright/siunitx/issues/89))
+- Improve hyphen to minus correction (issue [\#89](https://github.com/josephwright/siunitx/issues/89))
### Fixed
-- One wrong variable used (issue [#90](https://github.com/josephwright/siunitx/issues/90))
+- One wrong variable used (issue [\#90](https://github.com/josephwright/siunitx/issues/90))
-## [v2.1a]: 2010-11-05
+## [v2.1a] - 2010-11-05
### Changed
- Internal `expl3` improvements
### Fixed
-- Print list separators in text mode (issue [#87](https://github.com/josephwright/siunitx/issues/87))
-- Add in some missing `\ensuremath` statements (issue [#88](https://github.com/josephwright/siunitx/issues/88))
+- Print list separators in text mode (issue [\#87](https://github.com/josephwright/siunitx/issues/87))
+- Add in some missing `\ensuremath` statements (issue [\#88](https://github.com/josephwright/siunitx/issues/88))
-## [v2.1]: 2010-10-31
+## [v2.1] - 2010-10-31
### Added
-- Option `copy-complex-root` (issue [#63](https://github.com/josephwright/siunitx/issues/63))
-- Option `table-align-exponent` and `table-align-uncertainty` (issue [#60](https://github.com/josephwright/siunitx/issues/60))
-- Option `power-font` (issue [#69](https://github.com/josephwright/siunitx/issues/69))
-- Option `scientific-notation` (issue [#11](https://github.com/josephwright/siunitx/issues/11))
-- Option `round-integer-to-decimal` (issue [#55](https://github.com/josephwright/siunitx/issues/55))
-- Option `input-comparators` (issue [#16](https://github.com/josephwright/siunitx/issues/16))
-- Option `round-minimum` (issue [#17](https://github.com/josephwright/siunitx/issues/17))
+- Option `copy-complex-root` (issue [\#63](https://github.com/josephwright/siunitx/issues/63))
+- Option `table-align-exponent` and `table-align-uncertainty` (issue [\#60](https://github.com/josephwright/siunitx/issues/60))
+- Option `power-font` (issue [\#69](https://github.com/josephwright/siunitx/issues/69))
+- Option `scientific-notation` (issue [\#11](https://github.com/josephwright/siunitx/issues/11))
+- Option `round-integer-to-decimal` (issue [\#55](https://github.com/josephwright/siunitx/issues/55))
+- Option `input-comparators` (issue [\#16](https://github.com/josephwright/siunitx/issues/16))
+- Option `round-minimum` (issue [\#17](https://github.com/josephwright/siunitx/issues/17))
### Changed
- Internal `expl3` improvements
@@ -1473,67 +1478,67 @@ Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to
- Bug with rounding check if decimal part is empty
- Remove decimal marker if rounding gives an empty decimal part
-## [v2.0y]: 2010-10-11
+## [v2.0y] - 2010-10-11
### Fixed
- Bug with `tight-spacing` option
-## [v2.0x]: 2010-10-05
+## [v2.0x] - 2010-10-05
### Fixed
- Make single-prefix detection work with non-symbolic prefixes
- (issue [#81](https://github.com/josephwright/siunitx/issues/81))
+ (issue [\#81](https://github.com/josephwright/siunitx/issues/81))
-## [v2.0w]: 2010-09-29
+## [v2.0w] - 2010-09-29
### Fixed
-- Problem with REVTeX and S columns (issue [#80](https://github.com/josephwright/siunitx/issues/80))
+- Problem with REVTeX and S columns (issue [\#80](https://github.com/josephwright/siunitx/issues/80))
-## [v2.0v]: 2010-09-26
+## [v2.0v] - 2010-09-26
### Changed
- Track `expl3` changes
-## [v2.0u]: 2010-09-14
+## [v2.0u] - 2010-09-14
### Fixed
-- Issue with `textpos` (issue [#74](https://github.com/josephwright/siunitx/issues/74))
-- Prevent infinite loop when using `\SI{}{...}` (issue [#78](https://github.com/josephwright/siunitx/issues/78))
+- Issue with `textpos` (issue [\#74](https://github.com/josephwright/siunitx/issues/74))
+- Prevent infinite loop when using `\SI{}{...}` (issue [\#78](https://github.com/josephwright/siunitx/issues/78))
-## [v2.0t]: 2010-08-24
+## [v2.0t] - 2010-08-24
### Fixed
-- Correct `\exp_after:wN` (issue [#77](https://github.com/josephwright/siunitx/issues/77))
+- Correct `\exp_after:wN` (issue [\#77](https://github.com/josephwright/siunitx/issues/77))
-## [v2.0s]: 2010-08-12
+## [v2.0s] - 2010-08-12
### Added
- Demo for headers in tables
### Fixed
-- Bug in rounding code for zero decimal place (issue [#76](https://github.com/josephwright/siunitx/issues/76))
+- Bug in rounding code for zero decimal place (issue [\#76](https://github.com/josephwright/siunitx/issues/76))
-## [v2.0r]: 2010-08-02
+## [v2.0r] - 2010-08-02
### Fixed
- Bug in v1 `decimalsymbol` emulation
-## [v2.0q]: 2010-07-29
+## [v2.0q] - 2010-07-29
### Fixed
- Errors with free-standing units
-## [v2.0p]: 2010-07-28
+## [v2.0p] - 2010-07-28
### Fixed
- Shape detection
-## [v2.0o]: 2010-07-22
+## [v2.0o] - 2010-07-22
### Added
-- Extend detect-italic to slanted shape (issue [#73](https://github.com/josephwright/siunitx/issues/73))
+- Extend detect-italic to slanted shape (issue [\#73](https://github.com/josephwright/siunitx/issues/73))
-## [v2.0n]: 2010-07-15
+## [v2.0n] - 2010-07-15
### Added
- Various abbreviations
@@ -1541,12 +1546,12 @@ Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to
### Changed
- Documentation section on tables where rows have different units
-## [v2.0m]: 2010-07-09
+## [v2.0m] - 2010-07-09
### Added
- Option `locale` and notes on use with `babel`
-## [v2.0l]: 2010-07-07
+## [v2.0l] - 2010-07-07
### Changed
- Updated documentation for v1 options
@@ -1554,12 +1559,12 @@ Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to
### Fixed
- Move test for `\fg` so that it works independent of `babel` load order
-## [v2.0k]: 2010-07-04
+## [v2.0k] - 2010-07-04
### Fixed
-- Issue with `babel` (issue [#68](https://github.com/josephwright/siunitx/issues/68))
+- Issue with `babel` (issue [\#68](https://github.com/josephwright/siunitx/issues/68))
-## [v2.0j]: 2010-06-30
+## [v2.0j] - 2010-06-30
### Changed
- Force `input-symbols` to print in math mode
@@ -1567,48 +1572,48 @@ Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to
### Fixed
- Correct appearance of `\hartree`
-## [v2.0i]: 2010-06-29
+## [v2.0i] - 2010-06-29
### Fixed
-- Two missed `_` from `expl3` style switch (issue [#67](https://github.com/josephwright/siunitx/issues/67))
+- Two missed `_` from `expl3` style switch (issue [\#67](https://github.com/josephwright/siunitx/issues/67))
-## [v2.0h]: 2010-06-29
+## [v2.0h] - 2010-06-29
### Fixed
- Issue with localisation
-## [v2.0g]: 2010-06-28
+## [v2.0g] - 2010-06-28
### Added
-- First approach to localisation (issue [#61](https://github.com/josephwright/siunitx/issues/61))
-- Restore 'bracket-numbers' option (issue [#65](https://github.com/josephwright/siunitx/issues/65))
+- First approach to localisation (issue [\#61](https://github.com/josephwright/siunitx/issues/61))
+- Restore 'bracket-numbers' option (issue [\#65](https://github.com/josephwright/siunitx/issues/65))
### Changed
- Alter complex root output so that it always resets the math font
### Fixed
-- Bracket complex numbers in numerator of quotient (issue [#66](https://github.com/josephwright/siunitx/issues/66))
+- Bracket complex numbers in numerator of quotient (issue [\#66](https://github.com/josephwright/siunitx/issues/66))
-## [v2.0f]: 2010-06-27
+## [v2.0f] - 2010-06-27
### Fixed
-- Spacing with `\times` in text mode (issue [#64](https://github.com/josephwright/siunitx/issues/64))
+- Spacing with `\times` in text mode (issue [\#64](https://github.com/josephwright/siunitx/issues/64))
-## [v2.0e]: 2010-06-20
+## [v2.0e] - 2010-06-20
### Fixed
-- Move save/restore of `\pm` (issue [#58](https://github.com/josephwright/siunitx/issues/58))
+- Move save/restore of `\pm` (issue [\#58](https://github.com/josephwright/siunitx/issues/58))
-## [v2.0d]: 2010-06-10
+## [v2.0d] - 2010-06-10
### Changed
-- Document use of `\cr` in tables (issue [#53](https://github.com/josephwright/siunitx/issues/53))
+- Document use of `\cr` in tables (issue [\#53](https://github.com/josephwright/siunitx/issues/53))
- Internal `expl3` improvements
### Fixed
-- `table-exponent` option's handling of exponent signs (issue [#56](https://github.com/josephwright/siunitx/issues/56))
+- `table-exponent` option's handling of exponent signs (issue [\#56](https://github.com/josephwright/siunitx/issues/56))
-## [v2.0c]: 2010-06-07
+## [v2.0c] - 2010-06-07
### Changed
- Improve emulation of v1 material
@@ -1618,21 +1623,21 @@ Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to
### Fixed
- Test for bottoming-out units and ensure that any 'hidden' literal units
- print (issue [#50](https://github.com/josephwright/siunitx/issues/50))
+ print (issue [\#50](https://github.com/josephwright/siunitx/issues/50))
-## [v2.0b]: 2010-06-01
+## [v2.0b] - 2010-06-01
### Added
- Complete emulation of v1 options
-## [v2.0a]: 2010-05-28
+## [v2.0a] - 2010-05-28
### Changed
- Allow `\SendSettingsToPgf` in the document body
- Several improvements in v1 emulation
### Fixed
-- Allow `\newunit` to take optional arguments (issue [#45](https://github.com/josephwright/siunitx/issues/45))
+- Allow `\newunit` to take optional arguments (issue [\#45](https://github.com/josephwright/siunitx/issues/45))
## v2.0
@@ -1649,7 +1654,8 @@ Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to
### Added
- First public testing release (as `si`)
-[Unreleased]: https://github.com/josephwright/siunitx/compare/v3.0.39...HEAD
+[Unreleased]: https://github.com/josephwright/siunitx/compare/v3.0.40...HEAD
+[v3.0.40]: https://github.com/josephwright/siunitx/compare/v3.0.39...v3.0.40
[v3.0.39]: https://github.com/josephwright/siunitx/compare/v3.0.38...v3.0.39
[v3.0.38]: https://github.com/josephwright/siunitx/compare/v3.0.37...v3.0.38
[v3.0.37]: https://github.com/josephwright/siunitx/compare/v3.0.36...v3.0.37
diff --git a/macros/latex/contrib/siunitx/siunitx-code.pdf b/macros/latex/contrib/siunitx/siunitx-code.pdf
index 9f60ecef85..a03f199dd8 100644
--- a/macros/latex/contrib/siunitx/siunitx-code.pdf
+++ b/macros/latex/contrib/siunitx/siunitx-code.pdf
Binary files differ
diff --git a/macros/latex/contrib/siunitx/siunitx-complex.dtx b/macros/latex/contrib/siunitx/siunitx-complex.dtx
index 8aa6e8ebc1..d81e27f4ac 100644
--- a/macros/latex/contrib/siunitx/siunitx-complex.dtx
+++ b/macros/latex/contrib/siunitx/siunitx-complex.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% File: siunitx-complex.dtx Copyright (C) 2021 Joseph Wright
+% File: siunitx-complex.dtx Copyright (C) 2021,2022 Joseph Wright
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
diff --git a/macros/latex/contrib/siunitx/siunitx-number.dtx b/macros/latex/contrib/siunitx/siunitx-number.dtx
index 6b457a2ff8..97600d5d4b 100644
--- a/macros/latex/contrib/siunitx/siunitx-number.dtx
+++ b/macros/latex/contrib/siunitx/siunitx-number.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% File: siunitx-number.dtx Copyright (C) 2014-2019,2021 Joseph Wright
+% File: siunitx-number.dtx Copyright (C) 2014-2019,2021,2022 Joseph Wright
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
diff --git a/macros/latex/contrib/siunitx/siunitx-table.dtx b/macros/latex/contrib/siunitx/siunitx-table.dtx
index 386e497052..45b6689f66 100644
--- a/macros/latex/contrib/siunitx/siunitx-table.dtx
+++ b/macros/latex/contrib/siunitx/siunitx-table.dtx
@@ -332,9 +332,12 @@
% \begin{macrocode}
\cs_new_protected:Npn \@@_collect_loop:
{
- \peek_catcode_ignore_spaces:NTF \c_group_begin_token
- { \@@_collect_group:n }
- { \@@_collect_token:N }
+ \peek_remove_spaces:n
+ {
+ \peek_catcode:NTF \c_group_begin_token
+ { \@@_collect_group:n }
+ { \@@_collect_token:N }
+ }
}
\cs_new_protected:Npn \@@_collect_group:n #1
{
@@ -493,9 +496,12 @@
}
\cs_new_protected:Npn \@@_split_loop:NNN #1#2#3
{
- \peek_catcode_ignore_spaces:NTF \c_group_begin_token
- { \@@_split_group:NNNn #1#2#3 }
- { \@@_split_token:NNNN #1#2#3 }
+ \peek_remove_spaces:n
+ {
+ \peek_catcode:NTF \c_group_begin_token
+ { \@@_split_group:NNNn #1#2#3 }
+ { \@@_split_token:NNNN #1#2#3 }
+ }
}
\cs_new_protected:Npn \@@_split_group:NNNn #1#2#3#4
{
@@ -956,11 +962,14 @@
\cs_new_protected:Npn \@@_direct_begin:w #1 \ignorespaces
{
#1
- \peek_catcode_ignore_spaces:NTF \c_group_begin_token
- { \@@_print_text:n }
+ \peek_remove_spaces:n
{
- \m@th
- \use:c { @@_direct_ \l_@@_align_mode_tl : }
+ \peek_catcode:NTF \c_group_begin_token
+ { \@@_print_text:n }
+ {
+ \m@th
+ \use:c { @@_direct_ \l_@@_align_mode_tl : }
+ }
}
}
\cs_new_protected:Npn \@@_direct_end:
diff --git a/macros/latex/contrib/siunitx/siunitx.dtx b/macros/latex/contrib/siunitx/siunitx.dtx
index 7ef3f726df..2381945c38 100644
--- a/macros/latex/contrib/siunitx/siunitx.dtx
+++ b/macros/latex/contrib/siunitx/siunitx.dtx
@@ -121,7 +121,7 @@
%
% Identify the package and give the over all version information.
% \begin{macrocode}
-\ProvidesExplPackage {siunitx} {2022-01-05} {3.0.39}
+\ProvidesExplPackage {siunitx} {2022-01-12} {3.0.40}
{A comprehensive (SI) units package}
% \end{macrocode}
%
diff --git a/macros/latex/contrib/siunitx/siunitx.pdf b/macros/latex/contrib/siunitx/siunitx.pdf
index 049b99b62e..86ccfbcd8a 100644
--- a/macros/latex/contrib/siunitx/siunitx.pdf
+++ b/macros/latex/contrib/siunitx/siunitx.pdf
Binary files differ
diff --git a/macros/latex/contrib/tuda-ci/README.md b/macros/latex/contrib/tuda-ci/README.md
index 18036a4f9f..f78ef6ffb9 100644
--- a/macros/latex/contrib/tuda-ci/README.md
+++ b/macros/latex/contrib/tuda-ci/README.md
@@ -1,8 +1,8 @@
# TUDa-CI – Corporate Design LaTeX-Templates for TU Darmstadt
- Copyright (C) Marei Peischl <marei@peitex.de>, 2018–2021
+ Copyright (C) Marei Peischl <marei@peitex.de>, 2018–2022
- tuda-ci 2021/10/12 v3.20
+ tuda-ci 2022/01/11 v3.21
***************************************************************************
@@ -298,3 +298,7 @@ leaflets | DEMO-TUDaLeaflet.tex | tudaleaflet.cls
* 3.20 (2021-10-12)
- add signature-image mechanism for affidavit
- unify \titlegraphic mechanism in tudapub and tudabeamer
+ * 3.21 (2022-01-11)
+ - fix title width for the combination of `custommargins=geometry` and `titlepage=false`
+ - remove some obsolete warnings
+ - improve TUDaLetter documentation
diff --git a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaAnnouncement.pdf b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaAnnouncement.pdf
index c933c5c133..17c0d522e9 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 2e9654f479..b8801e62ce 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 ebc50820ce..734587fb4a 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 1e085fce50..c14f47da87 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 6aba21696a..e1e1f2572b 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 ca0ec2dd6c..22ddb66ff9 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 fc197f4c1e..ac56796018 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 6240567b1c..f4041615fb 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 bcf8e70b6c..97e29a4419 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 a1dd930f04..630a41e464 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 25713d2ebd..4e00393b7b 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 0f70661961..3761557e82 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.20 (2021/10/12),
+%% This is file `DEMO-TUDaAnnouncement.tex' version 3.21 (2022/01/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 3a0370970c..252bff80ef 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.20 (2021/10/12),
+%% This is file `DEMO-TUDaBeamer.tex' version 3.21 (2022/01/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 44ebcdbd93..dd998ad799 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.20 (2021/10/12),
+%% This is file `DEMO-TUDaBibliography.bib' version 3.21 (2022/01/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 48f96ca2f6..d3df62ab51 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.20 (2021/10/12),
+%% This is file `DEMO-TUDaExercise.tex' version 3.21 (2022/01/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 61285867f8..b0bff2da20 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.20 (2021/10/12),
+%% This is file `DEMO-TUDaFromaddress.lco' version 3.21 (2022/01/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 2b3acf7487..8c5d12e20f 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.20 (2021/10/12),
+%% This is file `DEMO-TUDaLeaflet.tex' version 3.21 (2022/01/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 68b232db3a..3fe97e9ad5 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.20 (2021/10/12),
+%% This is file `DEMO-TUDaLetter.tex' version 3.21 (2022/01/11),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -80,7 +80,7 @@ Zusätzliche Optionen sind im Folgenden aufgelistet:\\
\item[firstpagenumber=true/false] Aktiviert/deaktiviert die Angabe der Seitenzahl auf der ersten Seite. Voreinstellung ist true.
\item[raggedright=true/false] Brieftext linksbündig. Voreinstellung ist false. Dies entspricht Blocksatz.
\item[logo=true/false] Logo auf Folgeseiten aktiviert/deaktiviert. Voreinstellung ist true.
- \item[texwidth=narrow/wide] Schaltet zwischen der Anpassung der Textbreite nach der ersten Seite um. Voreinstellung ist wide, da dies den Richtlinien entspricht.
+ \item[texwidth=narrow/wide] Schaltet zwischen der Anpassung der Textbreite nach der ersten Seite um. Voreinstellung ist wide, da dies den Richtlinien entspricht. Die Textbreite der ersten Seite bestimmt auch die Breite der Betreffzeile.
\end{description}
}
@@ -89,7 +89,7 @@ Für Wiederverwendung der Absenderadresse wurde die Datei \enquote{DEMO"=TUDaFro
Die Adressdatei wird üblicherweise lokal im System installiert, um sie nicht immer mit allen anderen Dateien kopieren zu müssen. Falls Sie dies durchführen möchten, findet sich eine entsprechende Erklärung am Ende der DEMO"=TUDaFromaddress.lco"=Datei.
-Eine Besonderheit der Klasse tudaletter stellt der Unterschied in der Zeilenlänge zwischen der ersten und den folgenden Seiten dar. Da \LaTeX{} grundsätzlich keine Änderung der Zeilenlänge innerhalb eines Absatzes unterstützt, ist hier eine komplexe Implementierung nötig. In einigen speziellen Fällen kann dieser Mechanismus fehlschlagen. Eine Sammlung an Sonderfällen ist bereits implementiert. Sollten Sie jedoch auf weitere stoßen, werden wir uns um eine Erweiterung der Implementierung bemühen.
+Eine Besonderheit der Klasse tudaletter stellt der Unterschied in der Zeilenlänge zwischen der ersten und den folgenden Seiten dar. Da \LaTeX{} grundsätzlich keine Änderung der Zeilenlänge innerhalb eines Absatzes unterstützt, ist hier eine komplexe Implementierung nötig. In einigen speziellen Fällen kann dieser Mechanismus fehlschlagen. Eine Sammlung an Sonderfällen ist bereits implementiert. Sollten Sie jedoch auf weitere stoßen, werden wir uns um eine Erweiterung der Implementierung bemühen. Der Mechanismus kann bei Problemen auch durch \verb+textwidth=narrow+ abgechaltet oder Mithilfe eines manuellen Seitenumbruchs umgangen werden.
Der einfachste Fall, um solche Schwierigkeiten zu beheben, ist in diesem Beispiel mithilfe des Befehls parbox bei der Auflistung gezeigt.
diff --git a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaPhD.tex b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaPhD.tex
index d56d39f71c..acbf0a36a4 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.20 (2021/10/12),
+%% This is file `DEMO-TUDaPhD.tex' version 3.21 (2022/01/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 987cbc9b2f..cc158b1cb2 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.20 (2021/10/12),
+%% This is file `DEMO-TUDaPoster.tex' version 3.21 (2022/01/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 e8d95765c9..9e6f201dd6 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.20 (2021/10/12),
+%% This is file `DEMO-TUDaPub.tex' version 3.21 (2022/01/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 ad6535ff66..2e109c86f6 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.20 (2021/10/12),
+%% This is file `DEMO-TUDaReport.tex' version 3.21 (2022/01/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 b64dd83870..94d56b0cdc 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.20 (2021/10/12),
+%% This is file `DEMO-TUDaSciPoster.tex' version 3.21 (2022/01/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 df6cc07f19..c2b822efe7 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.20 (2021/10/12),
+%% This is file `DEMO-TUDaThesis.tex' version 3.21 (2022/01/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 61f8742721..336de7a6f9 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.20 (2021/10/12),
+%% This is file `beamercolorthemeTUDa.sty' version 3.21 (2022/01/11),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -26,8 +26,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.20}
-\def\filedate{2021/10/12}
+\def\fileversion{3.21}
+\def\filedate{2022/01/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 551169c630..8c391ad1ad 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.20 (2021/10/12),
+%% This is file `beamerfontthemeTUDa.sty' version 3.21 (2022/01/11),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -26,8 +26,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.20}
-\def\filedate{2021/10/12}
+\def\fileversion{3.21}
+\def\filedate{2022/01/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 8ee2144e3d..bb2631d52b 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.20 (2021/10/12),
+%% This is file `beamerinnerthemeTUDa.sty' version 3.21 (2022/01/11),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -26,8 +26,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.20}
-\def\filedate{2021/10/12}
+\def\fileversion{3.21}
+\def\filedate{2022/01/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 4404268042..5f89098dbd 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.20 (2021/10/12),
+%% This is file `beamerouterthemeTUDa.sty' version 3.21 (2022/01/11),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -26,8 +26,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.20}
-\def\filedate{2021/10/12}
+\def\fileversion{3.21}
+\def\filedate{2022/01/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 9286867413..611d897f2d 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.20 (2021/10/12),
+%% This is file `beamerthemeTUDa-mecheng.sty' version 3.21 (2022/01/11),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -26,8 +26,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.20}
-\def\filedate{2021/10/12}
+\def\fileversion{3.21}
+\def\filedate{2022/01/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 6875310815..95d10bca5d 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.20 (2021/10/12),
+%% This is file `beamerthemeTUDa.sty' version 3.21 (2022/01/11),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -26,8 +26,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.20}
-\def\filedate{2021/10/12}
+\def\fileversion{3.21}
+\def\filedate{2022/01/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 8f65f5a279..e0fa3fad0c 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.20 (2021/10/12),
+%% This is file `tuda-a0paper.clo' version 3.21 (2022/01/11),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -26,38 +26,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.20}
-\def\filedate{2021/10/12}
-%% This is file `tuda-a0paper.clo' version 3.20 (2021/10/12),
-%% it is part of
-%% TUDa-CI -- Corporate Design for TU Darmstadt
-%% ----------------------------------------------------------------------------
-%%
-%% Copyright (C) 2018--2021 by Marei Peischl <marei@peitex.de>
-%%
-%% ============================================================================
-%% This work may be distributed and/or modified under the
-%% conditions of the LaTeX Project Public License, either version 1.3c
-%% of this license or (at your option) any later version.
-%% The latest version of this license is in
-%% http://www.latex-project.org/lppl.txt
-%% and version 1.3c or later is part of all distributions of LaTeX
-%% version 2008/05/04 or later.
-%%
-%% This work has the LPPL maintenance status `maintained'.
-%%
-%% The Current Maintainers of this work are
-%% Marei Peischl <tuda-ci@peitex.de>
-%% Markus Lazanowski <latex@ce.tu-darmstadt.de>
-%%
-%% The development respository can be found at
-%% https://github.com/tudace/tuda_latex_templates
-%% Please use the issue tracker for feedback!
-%%
-%% ============================================================================
-%%
-\def\fileversion{3.20}
-\def\filedate{2021/10/12}
+\def\fileversion{3.21}
+\def\filedate{2022/01/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 3c0b79ac04..5e11ac41ac 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.20 (2021/10/12),
+%% This is file `tuda-a1paper.clo' version 3.21 (2022/01/11),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -26,8 +26,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.20}
-\def\filedate{2021/10/12}
+\def\fileversion{3.21}
+\def\filedate{2022/01/11}
\ProvidesExplFile{tuda-a1paper.clo}{\filedate}{\fileversion}{tuda-ci~size~adjustments~for~a1paper}
\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 6e9bb1ea43..972b49dcab 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.20 (2021/10/12),
+%% This is file `tuda-a2paper.clo' version 3.21 (2022/01/11),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -26,8 +26,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.20}
-\def\filedate{2021/10/12}
+\def\fileversion{3.21}
+\def\filedate{2022/01/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 432dfb65a9..b1cd25ae1f 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.20 (2021/10/12),
+%% This is file `tuda-a3paper.clo' version 3.21 (2022/01/11),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -26,8 +26,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.20}
-\def\filedate{2021/10/12}
+\def\fileversion{3.21}
+\def\filedate{2022/01/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 e9ef9916e6..29fbafe2ea 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.20 (2021/10/12),
+%% This is file `tuda-a4paper.clo' version 3.21 (2022/01/11),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -26,8 +26,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.20}
-\def\filedate{2021/10/12}
+\def\fileversion{3.21}
+\def\filedate{2022/01/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 ec89f6408d..b42da85022 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.20 (2021/10/12),
+%% This is file `tuda-a5paper.clo' version 3.21 (2022/01/11),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -26,8 +26,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.20}
-\def\filedate{2021/10/12}
+\def\fileversion{3.21}
+\def\filedate{2022/01/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 4577ea3315..ebb7016f76 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.20 (2021/10/12),
+%% This is file `tuda-pgfplots.sty' version 3.21 (2022/01/11),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -26,8 +26,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.20}
-\def\filedate{2021/10/12}
+\def\fileversion{3.21}
+\def\filedate{2022/01/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 6dc094b9f2..f0b61510cb 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.20 (2021/10/12),
+%% This is file `tudabeamer.cls' version 3.21 (2022/01/11),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -26,8 +26,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.20}
-\def\filedate{2021/10/12}
+\def\fileversion{3.21}
+\def\filedate{2022/01/11}
\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{tudabeamer}
[\filedate\space\fileversion\space]
@@ -113,33 +113,8 @@
\ExplSyntaxOn
\bool_if:NT \g_ptxcd_pdfa_bool {
\UnPreventPackageFromLoading{hyperref}
- %only apply the hack if pdfx is older than the working version
- \@ifpackagelater{pdfx}{2021/07/06}{
- \PassOptionsToPackage{a-2b}{pdfx}
- \RequirePackage{pdfx}
- } {
- \msg_new:nnnn{tudapub} {dirty-hack-pdfa} {
- I~have~to~use~a~dirty~hack~to~workaround~some~incompatibilites~between~your~LaTeX~version~and~the~pdfa-mode.\\
- Please~use~pdfa=true~only~if~you~really~need~it.\\
- We~will~remove~this~hack~as~soon~as~all~incompatibilities~have~been~patched.
- } {
- See~the~corresponding~GitHub~Issue~for~more~information:~https://github.com/tudace/tuda_latex_templates/issues/321
- }
- \msg_warning:nn {tudapub} {dirty-hack-pdfa}
- %check if \par is expanable and add a dirty hack
- %Thanks to Ross Moore for the support
- \expandafter\ifx\csname tex_par:D\endcsname \relax
- \let\pdfx@par\par
- \else
- \expandafter\let\expandafter\pdfx@par\csname tex_par:D\endcsname
- \fi
- \let\orig@par\par
- \let\par\pdfx@par
- \PassOptionsToPackage{a-2b}{pdfx}
- \RequirePackage{pdfx}
- %restore\par
- \let\par\orig@par
- }
+ \PassOptionsToPackage{a-2b}{pdfx}
+ \RequirePackage{pdfx}
}
\hypersetup{hidelinks, unicode}
diff --git a/macros/latex/contrib/tuda-ci/tex/tudacolors.def b/macros/latex/contrib/tuda-ci/tex/tudacolors.def
index e5f2b37615..f4cf2ccbd1 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.20 (2021/10/12),
+%% This is file `tudacolors.def' version 3.21 (2022/01/11),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -26,8 +26,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.20}
-\def\filedate{2021/10/12}
+\def\fileversion{3.21}
+\def\filedate{2022/01/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 0b8aa19028..59a27eb1cc 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.20 (2021/10/12),
+%% This is file `tudacolors.sty' version 3.21 (2022/01/11),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -26,8 +26,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.20}
-\def\filedate{2021/10/12}
+\def\fileversion{3.21}
+\def\filedate{2022/01/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 1cce50f06c..4f05217ad3 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.20 (2021/10/12),
+%% This is file `tudaexercise.cls' version 3.21 (2022/01/11),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -26,8 +26,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.20}
-\def\filedate{2021/10/12}
+\def\fileversion{3.21}
+\def\filedate{2022/01/11}
\NeedsTeXFormat{LaTeX2e}
\RequirePackage{expl3}
\ProvidesExplClass{tudaexercise}
diff --git a/macros/latex/contrib/tuda-ci/tex/tudafonts.sty b/macros/latex/contrib/tuda-ci/tex/tudafonts.sty
index 969d5d68da..54cb00109a 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.20 (2021/10/12),
+%% This is file `tudafonts.sty' version 3.21 (2022/01/11),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -26,8 +26,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.20}
-\def\filedate{2021/10/12}
+\def\fileversion{3.21}
+\def\filedate{2022/01/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 6b40481770..4e268133a7 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.20 (2021/10/12),
+%% This is file `tudaleaflet.cls' version 3.21 (2022/01/11),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -26,8 +26,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.20}
-\def\filedate{2021/10/12}
+\def\fileversion{3.21}
+\def\filedate{2022/01/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 5720a9e77a..4ff6a0e5bc 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.20 (2021/10/12),
+%% This is file `tudaletter.cls' version 3.21 (2022/01/11),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -26,8 +26,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.20}
-\def\filedate{2021/10/12}
+\def\fileversion{3.21}
+\def\filedate{2022/01/11}
\NeedsTeXFormat{LaTeX2e}
\RequirePackage{expl3}
\ProvidesExplClass{tudaletter}
@@ -428,33 +428,8 @@
%pdfa
\if_bool:N \g_ptxcd_pdfa_bool
- %only apply the hack if pdfx is older than the working version
-\@ifpackagelater{pdfx}{2021/07/06}{
\PassOptionsToPackage{a-2b}{pdfx}
\RequirePackage{pdfx}
-} {
- \msg_new:nnnn{tudapub} {dirty-hack-pdfa} {
- I~have~to~use~a~dirty~hack~to~workaround~some~incompatibilites~between~your~LaTeX~version~and~the~pdfa-mode.\\
- Please~use~pdfa=true~only~if~you~really~need~it.\\
- We~will~remove~this~hack~as~soon~as~all~incompatibilities~have~been~patched.
- } {
- See~the~corresponding~GitHub~Issue~for~more~information:~https://github.com/tudace/tuda_latex_templates/issues/321
- }
- \msg_warning:nn {tudapub} {dirty-hack-pdfa}
- %check if \par is expanable and add a dirty hack
- %Thanks to Ross Moore for the support
- \expandafter\ifx\csname tex_par:D\endcsname \relax
- \let\pdfx@par\par
- \else
- \expandafter\let\expandafter\pdfx@par\csname tex_par:D\endcsname
- \fi
- \let\orig@par\par
- \let\par\pdfx@par
- \PassOptionsToPackage{a-2b}{pdfx}
- \RequirePackage{pdfx}
- %restore\par
- \let\par\orig@par
-}
%%hyperref
\hypersetup{hidelinks, unicode}
\iow_new:N \ptxcd_xmpdata_stream
diff --git a/macros/latex/contrib/tuda-ci/tex/tudalettersize10pt.clo b/macros/latex/contrib/tuda-ci/tex/tudalettersize10pt.clo
index de8bf782b9..327c046aae 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.20 (2021/10/12),
+%% This is file `tudalettersize10pt.clo' version 3.21 (2022/01/11),
%% 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 896af139d5..d1b173392f 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.20 (2021/10/12),
+%% This is file `tudamecheng.cfg' version 3.21 (2022/01/11),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -26,8 +26,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.20}
-\def\filedate{2021/10/12}
+\def\fileversion{3.21}
+\def\filedate{2022/01/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 fa9c0d9828..69e739a9b3 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.20 (2021/10/12),
+%% This is file `tudaposter.cls' version 3.21 (2022/01/11),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -26,8 +26,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.20}
-\def\filedate{2021/10/12}
+\def\fileversion{3.21}
+\def\filedate{2022/01/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 7ccb4fd236..5a8f082f26 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.20 (2021/10/12),
+%% This is file `tudapub.cls' version 3.21 (2022/01/11),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -26,8 +26,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.20}
-\def\filedate{2021/10/12}
+\def\fileversion{3.21}
+\def\filedate{2022/01/11}
\NeedsTeXFormat{LaTeX2e}
\RequirePackage{expl3}
\ProvidesExplClass{tudapub}
@@ -381,7 +381,14 @@
\savegeometry{TUDa-marginpar}
\bool_if:NTF \g_ptxcd_custommargins_bool {
- \AtBeginDocument{\savegeometry{TUDa-default}}
+ \AtBeginDocument{
+ \savegeometry{TUDa-default}
+ \bool_if:NTF \g_ptxcd_marginpar_bool {
+ \dim_gset:Nn \g_ptxcd_headwidth_dim {\textwidth+\marginparwidth+\marginparsep}
+ }{
+ \dim_gset:Nn \g_ptxcd_headwidth_dim {\textwidth}
+ }
+ }
\tl_const:Nn \c_ptxcd_default_geometry_tl {TUDa-default}
}{
\bool_if:NTF \g_ptxcd_marginpar_bool {
@@ -835,50 +842,31 @@
You~should~prefer~using~lualatex.
}
%only apply the hack if pdfx is older than the working version
- \@ifpackagelater{pdfx}{2021/07/06}{
- \PassOptionsToPackage{a-2b}{pdfx}
- \RequirePackage{pdfx}
- } {
- \msg_new:nnnn{tudapub} {dirty-hack-pdfa} {
- I~have~to~use~a~dirty~hack~to~workaround~some~incompatibilites~between~your~LaTeX~version~and~the~pdfa-mode.\\
- Please~use~pdfa=true~only~if~you~really~need~it.\\
- We~will~remove~this~hack~as~soon~as~all~incompatibilities~have~been~patched.
- } {
- See~the~corresponding~GitHub~Issue~for~more~information:~https://github.com/tudace/tuda_latex_templates/issues/321
- }
- \msg_warning:nn {tudapub} {dirty-hack-pdfa}
- %check if \par is expanable and add a dirty hack
- %Thanks to Ross Moore for the support
- \expandafter\ifx\csname tex_par:D\endcsname \relax
- \let\pdfx@par\par
- \else
- \expandafter\let\expandafter\pdfx@par\csname tex_par:D\endcsname
- \fi
- \let\orig@par\par
- \let\par\pdfx@par
- \PassOptionsToPackage{a-2b}{pdfx}
- \RequirePackage{pdfx}
- %restore\par
- \let\par\orig@par
- }
+ \PassOptionsToPackage{a-2b}{pdfx}
+ \RequirePackage{pdfx}
+
+ \msg_new:nnnn{tudapub} {outdated-package-pdfa} {
+ Your~Version~of~the~#1-package~is~too~old~to~support~all~methods~required~by~tudapubs~pdfa-mode.\\
+ Either~update~your~TeX-distribution~or~switch~to~pdfa=false.
+ }{See~DEMO-tudapub~for~further~information.}
+
\sys_if_engine_pdftex:T {
\msg_warning:nnn{tudapub} {prefer-lualatex} {PDFTeX}
}
- \sys_if_engine_pdftex:T {
+ \sys_if_engine_xetex:T {
\msg_warning:nnn{tudapub} {prefer-lualatex} {XeTeX}
}
-
+ \@ifpackagelater{xmpincl}{2021/09/22}{
+ }{
+ \msg_error:nn{tudapub} {outdated-package-pdfa} {xmpincl}
+ }
\@ifpackagelater{pdfx}{2018/12/01}{
}{
- \msg_new:nnnn{tudapub} {outdated-pdfx} {
- Your~Version~of~the~PDFx-package~is~too~old~to~support~all~methods~required~by~tudapubs~pdfa-mode.\\
- Either~update~your~TeX-distribution~or~switch~to~pdfa=false.
- }{See~DEMO-tudapub~for~further~information.}
- \msg_error:nn{tudapub} {outdated-pdfx}
+ \msg_error:nn{tudapub} {outdated-package-pdfa} {pdfx}
}
diff --git a/macros/latex/contrib/tuda-ci/tex/tudarules.sty b/macros/latex/contrib/tuda-ci/tex/tudarules.sty
index 30d394e63e..3709dc0d80 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.20 (2021/10/12),
+%% This is file `tudarules.sty' version 3.21 (2022/01/11),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -26,8 +26,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.20}
-\def\filedate{2021/10/12}
+\def\fileversion{3.21}
+\def\filedate{2022/01/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 6c6b9eb5fe..7b61f44027 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.20 (2021/10/12),
+%% This is file `tudasciposter.cls' version 3.21 (2022/01/11),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -26,8 +26,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.20}
-\def\filedate{2021/10/12}
+\def\fileversion{3.21}
+\def\filedate{2022/01/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 d985ca36c0..89c5614f4d 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.20 (2021/10/12),
+%% This is file `tudasize9pt.clo' version 3.21 (2022/01/11),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -6,15 +6,6 @@
%% Copyright (C) 2018--2021 by Marei Peischl <marei@peitex.de>
%%
%% ============================================================================
-%% This is file `tudasize9pt.clo' version 1.0 (2018/12/12),
-%% it is part of
-%% TUDa-CI -- Corporate Design for TU Darmstadt
-%% ----------------------------------------------------------------------------
-%%
-%% Copyright (c) 2018 by Marei Peischl <marei@peitex.de>
-%%
-%% ============================================================================
-%%
%% This file is a slightly modified version of scrsize10pt.clo
%% generated with the docstrip utility, extended by scrdocstrip.
%% modified by Marei Peischl <marei@peitex.de>
diff --git a/macros/latex/contrib/tuda-ci/tex/tudathesis.cfg b/macros/latex/contrib/tuda-ci/tex/tudathesis.cfg
index ef323b801f..6e596ff699 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.20 (2021/10/12),
+%% This is file `tudathesis.cfg' version 3.21 (2022/01/11),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -26,8 +26,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.20}
-\def\filedate{2021/10/12}
+\def\fileversion{3.21}
+\def\filedate{2022/01/11}
\RequirePackage{expl3}
\ProvidesExplFile{tudathesis.cfg}
{\filedate}{\fileversion}{Special Features for publication type 'thesis' using TU Darmstadt's Corporate Design (tuda-ci)}