diff options
author | Norbert Preining <norbert@preining.info> | 2024-12-23 03:04:00 +0000 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2024-12-23 03:04:00 +0000 |
commit | 35102b68291783e779cfef5f390ec522610e2786 (patch) | |
tree | 2fdb2c5fc96e75ba93f189fc420e29d7a992e423 /macros/latex | |
parent | e85f83d7d39665d2b21098bd5bd2f1be4caf4dd2 (diff) |
Diffstat (limited to 'macros/latex')
128 files changed, 715 insertions, 247 deletions
diff --git a/macros/latex/contrib/acmart/ACM-Reference-Format.bst b/macros/latex/contrib/acmart/ACM-Reference-Format.bst index dca222184c..9c5498a082 100644 --- a/macros/latex/contrib/acmart/ACM-Reference-Format.bst +++ b/macros/latex/contrib/acmart/ACM-Reference-Format.bst @@ -630,11 +630,8 @@ FUNCTION { output.doi } % UTAH doi empty.or.unknown { } { - %% Use \urldef here for the same reason it is used in output.url, - %% see output.url for further discussion. - "\urldef\tempurl%" writeln - "\url{https://doi.org/" strip.doi * "}" * writeln - "\showDOI{\tempurl}" writeln + "\href{https://doi.org/" strip.doi * "}{doi:\nolinkurl{" * + strip.doi * "}}" * writeln } if$ } @@ -3015,16 +3012,16 @@ FUNCTION { begin.bib } "%%% NOTE TO THE USER: you can override these defaults by providing" writeln "%%% customized versions of any of these macros before the \bibliography" writeln "%%% command. Each of them MUST provide its own final punctuation," writeln - "%%% except for \shownote{}, \showDOI{}, and \showURL{}. The latter two" writeln + "%%% except for \shownote{} and \showURL{}. The latter two" writeln "%%% do not use final punctuation, in order to avoid confusing it with" writeln "%%% the Web address." writeln "%%%" writeln "%%% To suppress output of a particular field, define its macro to expand" writeln "%%% to an empty string, or better, \unskip, like this:" writeln "%%%" writeln - "%%% \newcommand{\showDOI}[1]{\unskip} % LaTeX syntax" writeln + "%%% \newcommand{\showURL}[1]{\unskip} % LaTeX syntax" writeln "%%%" writeln - "%%% \def \showDOI #1{\unskip} % plain TeX syntax" writeln + "%%% \def \showURL #1{\unskip} % plain TeX syntax" writeln "%%%" writeln "%%% ====================================================================" writeln "" writeln @@ -3046,7 +3043,6 @@ FUNCTION { begin.bib } %% \newcommand{\showLCCN}[1]{LCCN #1.} "\ifx \showCODEN \undefined \def \showCODEN #1{\unskip} \fi" writeln - "\ifx \showDOI \undefined \def \showDOI #1{#1}\fi" writeln % ACM styles omit ISBNs, but they can be included by suitable definitions of % \showISBNx and \showISBNxiii before the .bbl file is read "\ifx \showISBNx \undefined \def \showISBNx #1{\unskip} \fi" writeln diff --git a/macros/latex/contrib/acmart/Makefile b/macros/latex/contrib/acmart/Makefile index c81d355446..5d90dbdd57 100644 --- a/macros/latex/contrib/acmart/Makefile +++ b/macros/latex/contrib/acmart/Makefile @@ -144,7 +144,7 @@ docclean: samples/$(PACKAGE)-tagged.cls \ samples/ACM-Reference-Format.bst \ samples/*.log samples/*.aux samples/*.out \ - samples/*.bbl samples/*.blg samples/*.cut \ + samples/*.bbl samples/*.blg samples/*.cut *.toc \ samples/acm-jdslogo.png \ samples/*.run.xml samples/*.bcf $(SAMPLEBIBLATEXFILES) diff --git a/macros/latex/contrib/acmart/README b/macros/latex/contrib/acmart/README index 2518ab0f9a..ceaf5b9f7d 100644 --- a/macros/latex/contrib/acmart/README +++ b/macros/latex/contrib/acmart/README @@ -12,6 +12,12 @@ The production version is the one on CTAN and ACM sites. Changes +Version 2.11 Conference date is no longer printed in bibstrip. + ISBN now uses 4-digit year + DOI in bibliography is now output as doi:XX.XXXX/XXXXX.XXXX + Changed URL in Creative Commons licenses (deleted + trailing /legalcode) + Version 2.10. Bug fixes. Documentation update. Version 2.09. Experimental tagging code is now in the main branch. diff --git a/macros/latex/contrib/acmart/acmart.dtx b/macros/latex/contrib/acmart/acmart.dtx index 842ba3fd3f..b5cda36236 100644 --- a/macros/latex/contrib/acmart/acmart.dtx +++ b/macros/latex/contrib/acmart/acmart.dtx @@ -2256,7 +2256,7 @@ %</gobble> %<class&!tagged>\ProvidesClass{acmart} %<tagged>\ProvidesClass{acmart-tagged} -[2024/10/19 v2.10 Typesetting articles for the Association for Computing Machinery] +[2024/12/07 v2.11 Typesetting articles for the Association for Computing Machinery] % \end{macrocode} % % \changes{v1.00}{2016/04/14}{First released version} @@ -5366,7 +5366,7 @@ % The book ISBN % \begin{macrocode} \def\acmISBN#1{\def\@acmISBN{#1}} -\acmISBN{978-x-xxxx-xxxx-x/YY/MM} +\acmISBN{978-x-xxxx-xxxx-x/YYYY/MM} % \end{macrocode} % % \end{macro} @@ -6036,6 +6036,7 @@ % non-acm or ACM engage publications} % \changes{v2.09}{2024/08/25}{Deleted checking whether CC licenses are % allowed} +% \changes{v2.11}{2024/12/21}{Changed URL for CC licenses} % The canned permission block. % \begin{macrocode} \def\@copyrightpermission{% @@ -6167,8 +6168,8 @@ the appropriate attribution. \or % CC \IfEq{\ACM@cc@type}{zero}{% - \def\ACM@CC@Url{https://creativecommons.org/publicdomain/zero/1.0/legalcode}}{% - \edef\ACM@CC@Url{https://creativecommons.org/licenses/\ACM@cc@type/\ACM@cc@version/legalcode}}% + \def\ACM@CC@Url{https://creativecommons.org/publicdomain/zero/1.0}}{% + \edef\ACM@CC@Url{https://creativecommons.org/licenses/\ACM@cc@type/\ACM@cc@version}}% \href{\ACM@CC@Url}{\includegraphics[height=5ex]{doclicense-CC-\ACM@cc@type-88x31}}\\ \href{\ACM@CC@Url}{% This work is licensed under a Creative Commons @@ -6358,7 +6359,9 @@ % publications} % \changes{v2.00}{2023/10/24}{Deleted acmPrice} % \changes{v2.00}{2023/11/05}{Added ``ACM'' for papers} -% \changes{v2.03}{2024/12/04}{Special processing for conferences in TOG} +% \changes{v2.03}{2023/12/04}{Special processing for conferences in +% TOG} +% \changes{v2.11}{2024/12/07}{Deleted conference date from bibstrip} % The (in)famous \cs{maketitle}. Note that in |sigchi-a| mode, authors % are \emph{not} in the title box. % @@ -6427,7 +6430,7 @@ \if@ACM@engage {\itshape \@acmBooktitle, \@acmYear.}\par \else - {\itshape \acmConference@shortname, \acmConference@date, \acmConference@venue}\par + {\itshape \acmConference@shortname, \acmConference@venue}\par \fi \fi \fi diff --git a/macros/latex/contrib/acmart/acmart.pdf b/macros/latex/contrib/acmart/acmart.pdf Binary files differindex 8fad04317a..a9b9425af1 100644 --- a/macros/latex/contrib/acmart/acmart.pdf +++ b/macros/latex/contrib/acmart/acmart.pdf diff --git a/macros/latex/contrib/acmart/acmauthoryear.bbx b/macros/latex/contrib/acmart/acmauthoryear.bbx index de5e3c6c06..b3800b9683 100644 --- a/macros/latex/contrib/acmart/acmauthoryear.bbx +++ b/macros/latex/contrib/acmart/acmauthoryear.bbx @@ -898,3 +898,11 @@ license=false, language=american } + +% We use lowercase DOI + +\DeclareFieldFormat{doi}{% + doi\addcolon + \ifhyperref + {\href{https://doi.org/#1}{\nolinkurl{#1}}} + {\nolinkurl{#1}}} diff --git a/macros/latex/contrib/acmart/acmguide.pdf b/macros/latex/contrib/acmart/acmguide.pdf Binary files differindex 0547dea05d..e2f4d07816 100644 --- a/macros/latex/contrib/acmart/acmguide.pdf +++ b/macros/latex/contrib/acmart/acmguide.pdf diff --git a/macros/latex/contrib/acmart/acmnumeric.bbx b/macros/latex/contrib/acmart/acmnumeric.bbx index c13e40137f..d83a5a10bc 100644 --- a/macros/latex/contrib/acmart/acmnumeric.bbx +++ b/macros/latex/contrib/acmart/acmnumeric.bbx @@ -882,4 +882,12 @@ vcs=true, license=false, language=american - }
\ No newline at end of file + } + +% We use lowercase DOI + +\DeclareFieldFormat{doi}{% + doi\addcolon + \ifhyperref + {\href{https://doi.org/#1}{\nolinkurl{#1}}} + {\nolinkurl{#1}}} diff --git a/macros/latex/contrib/acmart/samples/sample-acmcp.pdf b/macros/latex/contrib/acmart/samples/sample-acmcp.pdf Binary files differindex abe3641f7c..df09178b23 100644 --- a/macros/latex/contrib/acmart/samples/sample-acmcp.pdf +++ b/macros/latex/contrib/acmart/samples/sample-acmcp.pdf diff --git a/macros/latex/contrib/acmart/samples/sample-acmengage.pdf b/macros/latex/contrib/acmart/samples/sample-acmengage.pdf Binary files differindex 743cf52163..f1cfe0669b 100644 --- a/macros/latex/contrib/acmart/samples/sample-acmengage.pdf +++ b/macros/latex/contrib/acmart/samples/sample-acmengage.pdf diff --git a/macros/latex/contrib/acmart/samples/sample-acmlarge.pdf b/macros/latex/contrib/acmart/samples/sample-acmlarge.pdf Binary files differindex 5efdb94ea9..5d0512d6c6 100644 --- a/macros/latex/contrib/acmart/samples/sample-acmlarge.pdf +++ b/macros/latex/contrib/acmart/samples/sample-acmlarge.pdf diff --git a/macros/latex/contrib/acmart/samples/sample-acmsmall-biblatex.pdf b/macros/latex/contrib/acmart/samples/sample-acmsmall-biblatex.pdf Binary files differindex b5bb9c99fc..426b1fa017 100644 --- a/macros/latex/contrib/acmart/samples/sample-acmsmall-biblatex.pdf +++ b/macros/latex/contrib/acmart/samples/sample-acmsmall-biblatex.pdf diff --git a/macros/latex/contrib/acmart/samples/sample-acmsmall-conf.pdf b/macros/latex/contrib/acmart/samples/sample-acmsmall-conf.pdf Binary files differindex a4ea84762a..6ccf1723c2 100644 --- a/macros/latex/contrib/acmart/samples/sample-acmsmall-conf.pdf +++ b/macros/latex/contrib/acmart/samples/sample-acmsmall-conf.pdf diff --git a/macros/latex/contrib/acmart/samples/sample-acmsmall-submission.pdf b/macros/latex/contrib/acmart/samples/sample-acmsmall-submission.pdf Binary files differindex 54f291a9a8..10c4335179 100644 --- a/macros/latex/contrib/acmart/samples/sample-acmsmall-submission.pdf +++ b/macros/latex/contrib/acmart/samples/sample-acmsmall-submission.pdf diff --git a/macros/latex/contrib/acmart/samples/sample-acmsmall-tagged.pdf b/macros/latex/contrib/acmart/samples/sample-acmsmall-tagged.pdf Binary files differindex 8019ce4bee..948f3cd113 100644 --- a/macros/latex/contrib/acmart/samples/sample-acmsmall-tagged.pdf +++ b/macros/latex/contrib/acmart/samples/sample-acmsmall-tagged.pdf diff --git a/macros/latex/contrib/acmart/samples/sample-acmsmall.pdf b/macros/latex/contrib/acmart/samples/sample-acmsmall.pdf Binary files differindex 15ecfd3fab..9f952c7919 100644 --- a/macros/latex/contrib/acmart/samples/sample-acmsmall.pdf +++ b/macros/latex/contrib/acmart/samples/sample-acmsmall.pdf diff --git a/macros/latex/contrib/acmart/samples/sample-acmtog-conf.pdf b/macros/latex/contrib/acmart/samples/sample-acmtog-conf.pdf Binary files differindex 2d7124b6e1..298fa63e05 100644 --- a/macros/latex/contrib/acmart/samples/sample-acmtog-conf.pdf +++ b/macros/latex/contrib/acmart/samples/sample-acmtog-conf.pdf diff --git a/macros/latex/contrib/acmart/samples/sample-acmtog.pdf b/macros/latex/contrib/acmart/samples/sample-acmtog.pdf Binary files differindex c883560427..203294e6ae 100644 --- a/macros/latex/contrib/acmart/samples/sample-acmtog.pdf +++ b/macros/latex/contrib/acmart/samples/sample-acmtog.pdf diff --git a/macros/latex/contrib/acmart/samples/sample-manuscript.pdf b/macros/latex/contrib/acmart/samples/sample-manuscript.pdf Binary files differindex ed04e4c1eb..37f110af37 100644 --- a/macros/latex/contrib/acmart/samples/sample-manuscript.pdf +++ b/macros/latex/contrib/acmart/samples/sample-manuscript.pdf diff --git a/macros/latex/contrib/acmart/samples/sample-sigconf-authordraft.pdf b/macros/latex/contrib/acmart/samples/sample-sigconf-authordraft.pdf Binary files differindex 3bebdeadd4..adcbd6e036 100644 --- a/macros/latex/contrib/acmart/samples/sample-sigconf-authordraft.pdf +++ b/macros/latex/contrib/acmart/samples/sample-sigconf-authordraft.pdf diff --git a/macros/latex/contrib/acmart/samples/sample-sigconf-biblatex.pdf b/macros/latex/contrib/acmart/samples/sample-sigconf-biblatex.pdf Binary files differindex e812ffd86c..92379f363d 100644 --- a/macros/latex/contrib/acmart/samples/sample-sigconf-biblatex.pdf +++ b/macros/latex/contrib/acmart/samples/sample-sigconf-biblatex.pdf diff --git a/macros/latex/contrib/acmart/samples/sample-sigconf-i13n.pdf b/macros/latex/contrib/acmart/samples/sample-sigconf-i13n.pdf Binary files differindex 793196e0ee..9769dd3d5b 100644 --- a/macros/latex/contrib/acmart/samples/sample-sigconf-i13n.pdf +++ b/macros/latex/contrib/acmart/samples/sample-sigconf-i13n.pdf diff --git a/macros/latex/contrib/acmart/samples/sample-sigconf.pdf b/macros/latex/contrib/acmart/samples/sample-sigconf.pdf Binary files differindex 25f3d13f20..35ade96582 100644 --- a/macros/latex/contrib/acmart/samples/sample-sigconf.pdf +++ b/macros/latex/contrib/acmart/samples/sample-sigconf.pdf diff --git a/macros/latex/contrib/acmart/samples/sample-sigplan.pdf b/macros/latex/contrib/acmart/samples/sample-sigplan.pdf Binary files differindex f2adcfeaa1..8dcab36660 100644 --- a/macros/latex/contrib/acmart/samples/sample-sigplan.pdf +++ b/macros/latex/contrib/acmart/samples/sample-sigplan.pdf diff --git a/macros/latex/contrib/acmart/samples/samples.dtx b/macros/latex/contrib/acmart/samples/samples.dtx index b94128f870..d9353cad92 100644 --- a/macros/latex/contrib/acmart/samples/samples.dtx +++ b/macros/latex/contrib/acmart/samples/samples.dtx @@ -83,7 +83,7 @@ %% %%\acmBooktitle{Woodstock '18: ACM Symposium on Neural Gaze Detection, %% June 03--05, 2018, Woodstock, NY} -\acmISBN{978-1-4503-XXXX-X/18/06} +\acmISBN{978-1-4503-XXXX-X/2018/06} %</proceedings> %<*journal> diff --git a/macros/latex/contrib/easybook/README.md b/macros/latex/contrib/easybook/README.md index 032d3f4b01..dce421d3b4 100644 --- a/macros/latex/contrib/easybook/README.md +++ b/macros/latex/contrib/easybook/README.md @@ -1,5 +1,5 @@ # The `easybook` document class -Easily typesetting Chinese theses or books (v2024hw) +Easily typesetting Chinese theses or books (v2024hx) ## Abstract `easybook` is a pure academic template created based on the `ctexbook` book document class. It also has the functions of `book` and `article` document class. Combined with the general framework design of the theses of many universities in China, providing multiple commands and interfaces allows users to easily customize the theses templates. Its basic macro package `easybase` can also be used with `ctex` and standard document classes. diff --git a/macros/latex/contrib/easybook/easybook.dtx b/macros/latex/contrib/easybook/easybook.dtx index 47e65db022..2cd88bcc15 100644 --- a/macros/latex/contrib/easybook/easybook.dtx +++ b/macros/latex/contrib/easybook/easybook.dtx @@ -14,7 +14,7 @@ % This work has the LPPL maintenance status `maintained'. %<class|package>\NeedsTeXFormat{LaTeX2e}[2021/11/15] %<*class> -\ProvidesExplClass{easybook}{2024/12/21}{2024hw} +\ProvidesExplClass{easybook}{2024/12/22}{2024hx} {Easily typesetting Chinese theses or books} \bool_new:N \l__eb_compile_draft_bool @@ -35,7 +35,7 @@ { \tl_set:Nn \l__eb_font_value_tl {#1} }, font .value_required:n = true, font .initial:n = auto, - cjkfont .code:n = \eb_put_ctexbook:n { fontset = #1 }, + cjkfont .code:n = \eb_put_ctexbook:n { fontset = {#1} }, mathfont .tl_set:N = \l__eb_mathfont_value_tl, mathfont .initial:n = times, configs .clist_gset:N = \g__eb_configs_file_clist, @@ -308,7 +308,7 @@ %</class> %<*package> \RequirePackage{etoolbox} -\ProvidesExplPackage{easybase}{2024/12/21}{2024hw} +\ProvidesExplPackage{easybase}{2024/12/22}{2024hx} {Easily typesetting Chinese theses or books} \cs_generate_variant:Nn \dim_set:Nn { NV } @@ -1512,8 +1512,8 @@ } \tl_new:N \eb@bitoc@title \bool_new:N \l__eb_toc_notitle_bool -\newbool{bitoc} -\cs_new:Npn \ebifbitoc { \ifbool{bitoc} } +\newbool{@bitoc} +\cs_new:Npn \ebifbitoc { \ifbool{@bitoc} } \seq_new:N \l__eb_level_tmpa_seq \tl_new:N \l__eb_level_tmpa_tl \cs_generate_variant:Nn \regex_extract_all:nnN { no } @@ -1586,9 +1586,9 @@ \str_if_eq:nnTF {#1} { mix } { \AddToHook{cmd/CTEX@addtocline/before}[bitoc] - {\addtocontents{toc}{\boolfalse{bitoc}}} + {\addtocontents{toc}{\boolfalse{@bitoc}}} \AddToHook{cmd/CTEX@addbitocline/before}[bitoc] - {\addtocontents{toc}{\booltrue{bitoc}}} + {\addtocontents{toc}{\booltrue{@bitoc}}} } { \IfHookEmptyTF{cmd/CTEX@addtocline/before}{} @@ -1614,9 +1614,7 @@ \cs_new_protected:Npn \eb_toc_assign_title_judge:nn #1#2 { \tl_set:Nn \eb@toc@title {#1} - \tl_if_novalue:nTF {#2} - { \tl_clear:N \eb@bitoc@title } - { \tl_set:Nn \eb@bitoc@title {#2} } + \tl_if_novalue:nF {#2} { \tl_set:Nn \eb@bitoc@title {#2} } } \cs_new_protected:Npn \eb_toc_start_multi_column_ext:n #1 { @@ -1649,12 +1647,16 @@ \clist_if_exist:cT { l__eb_toc_outer_kv_#1_clist } { \keys_set:nv { eb/tocouter } { l__eb_toc_outer_kv_#1_clist } } } +\cs_new_protected:Npn \eb_toc_kv_set:nn + { + \eb_toc_outer_kv_initial:n {#1} + \IfValueT{#2}{\keys_set:nn { eb/tocouter } {#2}} + } \cs_new_protected:Npn \eb_toc_list_struct_parse:nnnnn #1#2#3#4#5 { \group_begin: \tl_set_eq:Nc \eb@toc@title { list#4name } - \eb_toc_outer_kv_initial:n {#5} - \IfValueT{#3}{\keys_set:nn { eb/tocouter } {#3}} + \eb_toc_kv_set:nn {#5} {#3} \eb_toc_title_level_cmd:n {#1} \eb_toc_if_title_between_hook:nn {#1} {#4} \eb_toc_start_multi_column_ext:n {#5} @@ -1720,18 +1722,18 @@ { \section* } } } - \eb_toc_outer_kv_initial:n { toc } - \IfValueT{#3}{\keys_set:nn { eb/tocouter } {#3}} \bool_if:NT \l__eb_toc_plan_cn_bool { + \eb_toc_kv_set:nn { toc } {#3} \IfBooleanF{#1}{\eb@toc@title@level{\eb@toc@title}{}} \eb_toc_if_title_between_hook:nn {#1} { title } - \eb_toc_start_multi_column_ext:n { toc }#4 + \eb_toc_start_multi_column_ext:n { toc } } \bool_if:NT \l__eb_toc_plan_bi_bool { \tl_if_eq:NnF \g__eb_bilist_permute_value_tl { mix } { + \eb_toc_kv_set:nn { tec } {#3}#4 \IfBooleanF{#1}{\eb@toc@title@level{\eb@bitoc@title}{}} \eb_toc_if_title_between_hook:nn {#1} { bititle } \eb_toc_start_multi_column_ext:n { tec } @@ -3006,7 +3008,7 @@ } %</package> %<*tcolorbox> -\ProvidesExplFile{eb-tcolorbox.cfg}{2024/12/21}{2024hw} +\ProvidesExplFile{eb-tcolorbox.cfg}{2024/12/22}{2024hx} {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 Binary files differindex fd8cf9173e..686760c0a4 100644 --- a/macros/latex/contrib/easybook/easybook.pdf +++ b/macros/latex/contrib/easybook/easybook.pdf diff --git a/macros/latex/contrib/easybook/easybook.tex b/macros/latex/contrib/easybook/easybook.tex index c38e7f441f..2ca7066d43 100644 --- a/macros/latex/contrib/easybook/easybook.tex +++ b/macros/latex/contrib/easybook/easybook.tex @@ -23,8 +23,8 @@ name = easybook, color-scheme = blue, title = EASYBOOK使用手册, - version = v2024hw, - date = 2024/12/21, + version = v2024hx, + date = 2024/12/22, authors = 瞿毅, info = 简便地排版中文学位论文或书籍, email = toquyi@163.com, diff --git a/macros/latex/contrib/fontscale/CHANGELOG.md b/macros/latex/contrib/fontscale/CHANGELOG.md index 5fbaa9e247..7ee3fe0362 100644 --- a/macros/latex/contrib/fontscale/CHANGELOG.md +++ b/macros/latex/contrib/fontscale/CHANGELOG.md @@ -7,6 +7,13 @@ Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to ## [Unreleased] +## [v3.0.4] - 2024-12-22 + +### Changed +- `\PrintFontSizeParameters` and `\PrintAllFontSizeParamters` now print the + font step and font scale rounded to 5 decimal places. (`\CurrentFontStep` and + `\CurrentFontScale` are unchanged.) + ## [v3.0.3] - 2024-12-09 ### Changed diff --git a/macros/latex/contrib/fontscale/beery.cls b/macros/latex/contrib/fontscale/beery.cls index 51bad377c0..ba449ee039 100644 --- a/macros/latex/contrib/fontscale/beery.cls +++ b/macros/latex/contrib/fontscale/beery.cls @@ -4,7 +4,7 @@ \NeedsTeXFormat{LaTeX2e}[2023-11-01] \ProvidesExplClass {beery} - {2024-12-09} + {2024-12-22} {} {} diff --git a/macros/latex/contrib/fontscale/fontscale-table-classic.tex b/macros/latex/contrib/fontscale/fontscale-table-classic.tex index 2d3d344926..37e31d0784 100644 --- a/macros/latex/contrib/fontscale/fontscale-table-classic.tex +++ b/macros/latex/contrib/fontscale/fontscale-table-classic.tex @@ -1,4 +1,4 @@ -\ProvidesFile{fontscale-table-classic.tex}[2024-12-09] +\ProvidesFile{fontscale-table-classic.tex}[2024-12-22] \begin{table} \centering diff --git a/macros/latex/contrib/fontscale/fontscale-table-font-steps.tex b/macros/latex/contrib/fontscale/fontscale-table-font-steps.tex index 13797a3863..ecf029b48f 100644 --- a/macros/latex/contrib/fontscale/fontscale-table-font-steps.tex +++ b/macros/latex/contrib/fontscale/fontscale-table-font-steps.tex @@ -1,4 +1,4 @@ -\ProvidesFile{fontscale-table-font-steps.tex}[2024-12-09] +\ProvidesFile{fontscale-table-font-steps.tex}[2024-12-22] \begin{table} \centering diff --git a/macros/latex/contrib/fontscale/fontscale-table-musical.tex b/macros/latex/contrib/fontscale/fontscale-table-musical.tex index 999212da86..a97a66e596 100644 --- a/macros/latex/contrib/fontscale/fontscale-table-musical.tex +++ b/macros/latex/contrib/fontscale/fontscale-table-musical.tex @@ -1,4 +1,4 @@ -\ProvidesFile{fontscale-table-musical.tex}[2024-12-09] +\ProvidesFile{fontscale-table-musical.tex}[2024-12-22] \begin{table} \centering diff --git a/macros/latex/contrib/fontscale/fontscale.pdf b/macros/latex/contrib/fontscale/fontscale.pdf Binary files differindex 16e0650fc5..6274624043 100644 --- a/macros/latex/contrib/fontscale/fontscale.pdf +++ b/macros/latex/contrib/fontscale/fontscale.pdf diff --git a/macros/latex/contrib/fontscale/fontscale.sty b/macros/latex/contrib/fontscale/fontscale.sty index 12764b579f..fe18d8d96a 100644 --- a/macros/latex/contrib/fontscale/fontscale.sty +++ b/macros/latex/contrib/fontscale/fontscale.sty @@ -8,8 +8,8 @@ \NeedsTeXFormat{LaTeX2e}[2023-11-01] \ProvidesExplPackage {fontscale} - {2024-12-09} - {3.0.3} + {2024-12-22} + {3.0.4} {A flexible interface for setting font sizes} % l3kernel version 2023-10-10 added many 'e'-variants. @@ -195,21 +195,16 @@ { \f@size / \l__fontscale_normalsize_size_fp } \str_if_eq:VnTF \l__fontscale_typographic_scale_str { musical } { - \dim_compare:nNnTF \l__fontscale_musical_base_dim = - \l_fontscale_normalsize_size_dim + \fp_set:Nn \l_fontscale_step_fp { - \fp_set:Nn \l_fontscale_step_fp - { - \l__fontscale_musical_selectfont_fp - * ln ( \l_fontscale_scale_fp ) - } - } - { - \fp_set:Nn \l_fontscale_step_fp - { - \l__fontscale_musical_selectfont_fp - * ln ( \f@size / \l__fontscale_musical_base_fp ) - } + \l__fontscale_musical_selectfont_fp + * ln + ( + \dim_compare:nNnTF \l__fontscale_musical_base_dim = + \l_fontscale_normalsize_size_dim + { \l_fontscale_scale_fp } + { \f@size / \l__fontscale_musical_base_fp } + ) } } { \fp_set_eq:NN \l_fontscale_step_fp \c_nan_fp } @@ -266,7 +261,8 @@ \tl_set:NV \ProcessedArgument \l__fontscale_arg_process_skip } % Used to define \tiny to \Huge. Sets \@currsize only for compatibility. Need -% \dim_use:N only for compatibility with the microtype package. +% \dim_use:N only for compatibility with versions of the microtype package +% older than v3.2 2024-12-12. \cs_new_protected:Npn \__fontscale_name:NNN #1#2#3 { \cs_set_eq:NN \@currsize #1 @@ -277,8 +273,7 @@ % unit of 'pt'. % (2) Avoids the issue where \f@size is set to the new font size before the % second argument is expanded. -% (3) Issues a user-friendly error message if the font size is not a positive -% length. +% (3) Issues a user-friendly error message if the font size is not positive. \cs_new_protected:Npn \__fontscale_set_font_size:nn #1#2 { \use:e @@ -385,6 +380,16 @@ \dim_new:N \l__fontscale_musical_base_dim \int_new:N \l__fontscale_musical_notes_int +\cs_new_protected:Npn \__fontscale_keys_code_musical_base: + { + \__fontscale_dim_set_from_user:Nn \l__fontscale_musical_base_dim + { \l_keys_value_tl } + } +\cs_new_protected:Npn \__fontscale_keys_code_musical_notes: + { + \__fontscale_int_set_from_user:Nn \l__fontscale_musical_notes_int + { \l_keys_value_tl } + } \cs_new_protected:Npn \__fontscale_keys_code_name: { \tl_if_in:NnTF \l_keys_value_tl { / } @@ -428,15 +433,13 @@ } \keys_define:nn { fontscale / musical } { - base .code:n = - \__fontscale_dim_set_from_user:Nn \l__fontscale_musical_base_dim {#1} + base .code:n = \__fontscale_keys_code_musical_base: , base .value_required:n = true , ratio .fp_set:N = \l__fontscale_musical_ratio_fp , ratio .value_required:n = true - , notes .code:n = - \__fontscale_int_set_from_user:Nn \l__fontscale_musical_notes_int {#1} + , notes .code:n = \__fontscale_keys_code_musical_notes: , notes .value_required:n = true } \keys_define:nn { fontscale / normalsize } @@ -581,7 +584,7 @@ % Pre-compiles the keys with their initial values and then sets the keys to % their initial values. This is significantly faster than using .initial:n and -% \keys_precompile:nnN. The value of \q_no_value is used to test if the +% \keys_precompile:nnN. The special value of \q_no_value is used to test if the % corresponding key has been set by the user. \cs_new_protected:Npn \__fontscale_keys_set_initial: { @@ -1231,10 +1234,11 @@ { \__fontscale_print_font_size_parameters: } \cs_new_protected:Npn \__fontscale_print_font_size_parameters: { - step ~=~ \__fontscale_step: ,~ - scale ~=~ \__fontscale_scale: ,~ - size ~=~ \__fontscale_size: ,~ - baselineskip ~=~ \__fontscale_baselineskip: + step~ =~ \fp_if_nan:nF { \l_fontscale_step_fp } + { \fp_eval:n { round ( \l_fontscale_step_fp , 5 ) } } ,~ + scale~ =~ \fp_eval:n { round ( \l_fontscale_scale_fp , 5 ) } ,~ + size~ =~ \dim_use:N \l_fontscale_size_dim ,~ + baselineskip~ =~ \skip_use:N \l_fontscale_baselineskip_skip } \NewDocumentCommand \PrintAllFontSizeParameters { } @@ -1256,8 +1260,9 @@ { \token_to_str:c {##1} \@ \c_colon_str \c_space_tl step~ =~ \fp_use:c { c_fontscale_##1_step_fp } ,~ - scale~ =~ \str_if_eq:nnTF {##1} { normalsize } - { 1 } { \fp_use:c { l_fontscale_##1_scale_fp } } ,~ + scale~ =~ \str_if_eq:nnTF {##1} { normalsize } { 1 } + { \fp_eval:n { round ( \use:c { l_fontscale_##1_scale_fp } , 5 ) } } + ,~ size~ =~ \dim_use:c { l_fontscale_##1_size_dim } ,~ baselineskip~ =~ \skip_use:c { l_fontscale_##1_baselineskip_skip } \str_if_eq:nnF {##1} { Huge } { \newline } diff --git a/macros/latex/contrib/fontscale/fontscale.tex b/macros/latex/contrib/fontscale/fontscale.tex index 0e806e564f..3d3500fec0 100644 --- a/macros/latex/contrib/fontscale/fontscale.tex +++ b/macros/latex/contrib/fontscale/fontscale.tex @@ -14,7 +14,7 @@ A flexible interface for setting font sizes Oliver Beery -Version 3.0.3\quad{}9 December 2024 +Version 3.0.4\quad{}22 December 2024 \section{Introduction} @@ -204,7 +204,8 @@ Sets the font baselineskip set by \cs{SetFontStep}, \cs{SetFontScale}, and \cs{S \subsection{Overwriting the previous keys} \label{subsec:overwriting} -This subsection documents keys for directly setting the font scales, font sizes, and font baselineskips of the font size commands from \cs{tiny} to \cs{Huge}. +This subsection documents keys for directly setting the font sizes and font baselineskips of the font size commands from \cs{tiny} to \cs{Huge}. +The font sizes can also be set by setting the font scale. The user should take care to ensure that the lengths of the font sizes remain correctly ordered from \cs{tiny} to \cs{Huge}. This is important for typographic and syntactic consistency. @@ -366,7 +367,7 @@ Does nothing, except issue a warning, if used in math mode. \subsection{Testing and debugging} \label{subsec:debug} -The commands documented here are intended primarily for testing and debugging. +This subsection documents commands that are intended primarily for testing and debugging. I have used them often when developing this package so I think users will find them helpful. \begin{mydisplaycode} @@ -374,14 +375,17 @@ I have used them often when developing this package so I think users will find t \end{mydisplaycode} Prints the current font size parameters\---the font step, font scale, font size, and font baselineskip. -The current font step will be left blank if it is undefined (as explained for \cs{CurrentFontStep} in \S\ref{subsec:expandable}). -\pagebreak%manual +The printed font step and font scale are rounded to \num{5} decimal places. +To print with more decimal places, use \cs{CurrentFontStep} and \cs{CurrentFontScale} (\S\ref{subsec:expandable}). +The printed font step will be left blank if it is undefined (as explained for \cs{CurrentFontStep} in \S\ref{subsec:expandable}). \begin{mydisplaycode} \cs{PrintAllFontSizeParameters} \end{mydisplaycode} Prints the font step, font scale, font size, and font baselineskip of each font size command from \cs{tiny} to \cs{Huge}. +The printed font scale is rounded to \num{5} decimal places. +To print with more decimal places, use \cs{CurrentFontScale} (\S\ref{subsec:expandable}). \begin{mydisplaycode} \cs{PrintSampleText} \sarg{} \marg{text} diff --git a/macros/latex/required/l3kernel/CHANGELOG.md b/macros/latex/required/l3kernel/CHANGELOG.md index 80629d5ef5..7cfd571a6c 100644 --- a/macros/latex/required/l3kernel/CHANGELOG.md +++ b/macros/latex/required/l3kernel/CHANGELOG.md @@ -7,6 +7,28 @@ this project uses date-based 'snapshot' version identifiers. ## [Unreleased] +## [2024-12-09] + +### Added +- `\bitset_use:N` and `\clist_use:N`: this clarifies that bitsets and clists + can be used with `V`-type expansion +- `\sys_if_engine_opentype:(TF)` +- Add equivalent interfaces for regex functions: + - `\int_(g)set_regex_count:Nnn`, `\int_(g)set_regex_count:NNn` + - `\seq_(g)set_regex_extract_once:Nnn`, `\seq_(g)set_regex_extract_once:NNn` + - `\seq_(g)set_regex_extract_all:Nnn`, `\seq_(g)set_regex_extract_all:NNn` + - `\seq_(g)set_regex_split:Nnn`, `\seq_(g)set_regex_split:NNn` + - `\tl_if_regex_match:nn(TF)`, `\tl_if_regex_match:nN(TF)` + - `\tl_regex_(g)replace_once:Nnn`, `\tl_regex_(g)replace_once:NNn` + - `\tl_regex_(g)replace_all:Nnn`, `\tl_regex_(g)replace_all:NNn` + +### Fixed +- `\prop_item:Nn` result not returned in `\exp_not:n` for linked properties + (#1630) + +### Removed +- `\c_catcode_active_tl`: was missing a `_`, always intended to be internal + ## [2024-11-02] ### Added @@ -1793,7 +1815,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/2024-11-02...HEAD +[Unreleased]: https://github.com/latex3/latex3/compare/2024-12-09...HEAD +[2024-12-09]: https://github.com/latex3/latex3/compare/2024-11-02...2024-12-09 [2024-11-02]: https://github.com/latex3/latex3/compare/2024-10-09...2024-11-02 [2024-10-09]: https://github.com/latex3/latex3/compare/2024-09-10...2024-10-09 [2024-09-10]: https://github.com/latex3/latex3/compare/2024-08-30...2024-09-10 diff --git a/macros/latex/required/l3kernel/README.md b/macros/latex/required/l3kernel/README.md index d048951c6d..4721d6ca8c 100644 --- a/macros/latex/required/l3kernel/README.md +++ b/macros/latex/required/l3kernel/README.md @@ -1,7 +1,7 @@ LaTeX3 Programming Conventions ============================== -Release 2024-11-02 +Release 2024-12-09 Overview -------- diff --git a/macros/latex/required/l3kernel/expl3.dtx b/macros/latex/required/l3kernel/expl3.dtx index 2d0a15de88..4662bdbe0b 100644 --- a/macros/latex/required/l3kernel/expl3.dtx +++ b/macros/latex/required/l3kernel/expl3.dtx @@ -24,7 +24,7 @@ % %<*driver|generic|package|2ekernel> %</driver|generic|package|2ekernel> -\def\ExplFileDate{2024-11-02}% +\def\ExplFileDate{2024-12-09}% %<*driver> \documentclass[full]{l3doc} \usepackage{graphicx} @@ -51,7 +51,7 @@ % }^^A % } % -% \date{Released 2024-11-02} +% \date{Released 2024-12-09} % % \maketitle % diff --git a/macros/latex/required/l3kernel/expl3.pdf b/macros/latex/required/l3kernel/expl3.pdf Binary files differindex 611d4ad06f..888e6d3af4 100644 --- a/macros/latex/required/l3kernel/expl3.pdf +++ b/macros/latex/required/l3kernel/expl3.pdf diff --git a/macros/latex/required/l3kernel/interface3.pdf b/macros/latex/required/l3kernel/interface3.pdf Binary files differindex ca71fc3daf..241f71b581 100644 --- a/macros/latex/required/l3kernel/interface3.pdf +++ b/macros/latex/required/l3kernel/interface3.pdf diff --git a/macros/latex/required/l3kernel/interface3.tex b/macros/latex/required/l3kernel/interface3.tex index 91576320b0..c5286fdb34 100644 --- a/macros/latex/required/l3kernel/interface3.tex +++ b/macros/latex/required/l3kernel/interface3.tex @@ -58,7 +58,7 @@ for those people who are interested. {latex-team@latex-project.org}% }% } -\date{Released 2024-11-02} +\date{Released 2024-12-09} \pagenumbering{roman} \maketitle diff --git a/macros/latex/required/l3kernel/l3basics.dtx b/macros/latex/required/l3kernel/l3basics.dtx index 934bffb39f..728ac55c46 100644 --- a/macros/latex/required/l3kernel/l3basics.dtx +++ b/macros/latex/required/l3kernel/l3basics.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-11-02} +% \date{Released 2024-12-09} % % \maketitle % diff --git a/macros/latex/required/l3kernel/l3bitset.dtx b/macros/latex/required/l3kernel/l3bitset.dtx index 79a5a21b4d..fa518d50d3 100644 --- a/macros/latex/required/l3kernel/l3bitset.dtx +++ b/macros/latex/required/l3kernel/l3bitset.dtx @@ -42,7 +42,7 @@ % }^^A % } % -% \date{Released 2024-11-02} +% \date{Released 2024-12-09} % % \maketitle % @@ -240,6 +240,16 @@ % implementation based on \cs{fp_eval:n} otherwise. % \end{function} % +% \begin{function}[EXP, added = 2024-11-12]{\bitset_use:N, \bitset_use:c} +% \begin{syntax} +% \cs{bitset_use:N} \meta{bitset var} +% \end{syntax} +% This leaves the current value of the bitset expressed as +% a binary (string) number in the input stream. +% If no bit has been set yet, the output is zero. This is +% functionally equivalent to \cs{bitset_to_bin:N}. +% \end{function} +% % \begin{function}[added = 2023-11-15] % {\bitset_show:N, \bitset_show:c} % \begin{syntax} @@ -524,6 +534,13 @@ % \end{macro} % \end{macro} % +% \begin{macro}{\bitset_use:N, \bitset_use:c} +% \begin{macrocode} +\cs_new_eq:NN \bitset_use:N \tl_use:N +\cs_generate_variant:Nn \bitset_use:N { c } +% \end{macrocode} +% \end{macro} +% % \begin{macro} % { % \bitset_item:Nn, \bitset_item:cn diff --git a/macros/latex/required/l3kernel/l3bootstrap.dtx b/macros/latex/required/l3kernel/l3bootstrap.dtx index 105304afe4..f7a7f3feab 100644 --- a/macros/latex/required/l3kernel/l3bootstrap.dtx +++ b/macros/latex/required/l3kernel/l3bootstrap.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-11-02} +% \date{Released 2024-12-09} % % \maketitle % diff --git a/macros/latex/required/l3kernel/l3box.dtx b/macros/latex/required/l3kernel/l3box.dtx index 6499104961..0170e91ff0 100644 --- a/macros/latex/required/l3kernel/l3box.dtx +++ b/macros/latex/required/l3kernel/l3box.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-11-02} +% \date{Released 2024-12-09} % % \maketitle % diff --git a/macros/latex/required/l3kernel/l3cctab.dtx b/macros/latex/required/l3kernel/l3cctab.dtx index 53db15109b..112f79e9ac 100644 --- a/macros/latex/required/l3kernel/l3cctab.dtx +++ b/macros/latex/required/l3kernel/l3cctab.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-11-02} +% \date{Released 2024-12-09} % % \maketitle % @@ -866,8 +866,7 @@ \group_begin: \int_set:Nn \tex_endlinechar:D { 32 } \char_set_catcode_invalid:n { 0 } - \bool_lazy_or:nnTF - { \sys_if_engine_xetex_p: } { \sys_if_engine_luatex_p: } + \sys_if_engine_opentype:TF { \int_step_function:nN { 31 } \char_set_catcode_invalid:n } { \int_step_function:nN { 31 } \char_set_catcode_active:n } \int_step_function:nnN { 33 } { 64 } \char_set_catcode_other:n @@ -892,8 +891,7 @@ \char_set_catcode_group_end:n { 125 } % right brace \char_set_catcode_space:n { 126 } % tilde \char_set_catcode_invalid:n { 127 } % ^^? - \bool_lazy_or:nnF - { \sys_if_engine_xetex_p: } { \sys_if_engine_luatex_p: } + \sys_if_engine_opentype:F { \int_step_function:nnN { 128 } { 255 } \char_set_catcode_active:n } \@@_gset:n { \c_code_cctab } \group_end: diff --git a/macros/latex/required/l3kernel/l3clist.dtx b/macros/latex/required/l3kernel/l3clist.dtx index dc6caccf0d..0ab53da5fc 100644 --- a/macros/latex/required/l3kernel/l3clist.dtx +++ b/macros/latex/required/l3kernel/l3clist.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2024-11-02} +% \date{Released 2024-12-09} % % \maketitle % @@ -619,6 +619,22 @@ % \end{texnote} % \end{function} % +% \begin{function}[EXP, added = 2024-11-12]{\clist_use:N, \clist_use:c} +% \begin{syntax} +% \cs{clist_use:N} \meta{clist~var} +% \end{syntax} +% Places the contents of the \meta{clist~var} in the input stream, +% with a comma between each item. The result is exaclty the stored +% \meta{clist}, which will include braces around (for example) +% entries with retained spaces at the ends. +% \begin{texnote} +% The result is returned as-is, in the same way as \cs{tl_use:N} +% and \emph{without} protection from expansion, +% cf.~\cs{clist_use:Nnnnn}, etc. It is equivalent to \texttt{V}-type +% expansion of a \texttt{clist}. +% \end{texnote} +% \end{function} +% % \begin{function}[EXP, added = 2021-05-10]{\clist_use:nnnn, \clist_use:nn} % \begin{syntax} % \cs{clist_use:nnnn} \Arg{comma~list} \Arg{separator~between~two} \\ @@ -2008,6 +2024,13 @@ % \end{macro} % \end{macro} % +% \begin{macro}{\clist_use:N, \clist_use:c} +% \begin{macrocode} +\cs_new_eq:NN \clist_use:N \tl_use:N +\cs_generate_variant:Nn \clist_use:N { c } +% \end{macrocode} +% \end{macro} +% % \begin{macro} % { % \clist_use:nnnn, \clist_use:nn, \@@_use:Nw, diff --git a/macros/latex/required/l3kernel/l3coffins.dtx b/macros/latex/required/l3kernel/l3coffins.dtx index 7eda18d6e7..a50e5c48b4 100644 --- a/macros/latex/required/l3kernel/l3coffins.dtx +++ b/macros/latex/required/l3kernel/l3coffins.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-11-02} +% \date{Released 2024-12-09} % % \maketitle % diff --git a/macros/latex/required/l3kernel/l3color.dtx b/macros/latex/required/l3kernel/l3color.dtx index 99c81e4980..f8d42a4091 100644 --- a/macros/latex/required/l3kernel/l3color.dtx +++ b/macros/latex/required/l3kernel/l3color.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-11-02} +% \date{Released 2024-12-09} % % \maketitle % diff --git a/macros/latex/required/l3kernel/l3debug.dtx b/macros/latex/required/l3kernel/l3debug.dtx index c3554aab6d..b44f39329f 100644 --- a/macros/latex/required/l3kernel/l3debug.dtx +++ b/macros/latex/required/l3kernel/l3debug.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-11-02} +% \date{Released 2024-12-09} % % \maketitle % @@ -69,7 +69,7 @@ % % Standard file identification. % \begin{macrocode} -\ProvidesExplFile{l3debug.def}{2024-11-02}{}{L3 Debugging support} +\ProvidesExplFile{l3debug.def}{2024-12-09}{}{L3 Debugging support} % \end{macrocode} % % \begin{variable}{\s_@@_stop} diff --git a/macros/latex/required/l3kernel/l3deprecation.dtx b/macros/latex/required/l3kernel/l3deprecation.dtx index 87c7708eb8..330237292b 100644 --- a/macros/latex/required/l3kernel/l3deprecation.dtx +++ b/macros/latex/required/l3kernel/l3deprecation.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-11-02} +% \date{Released 2024-12-09} % % \maketitle % diff --git a/macros/latex/required/l3kernel/l3doc.dtx b/macros/latex/required/l3kernel/l3doc.dtx index 1f7a29efa5..5341bc93e5 100644 --- a/macros/latex/required/l3kernel/l3doc.dtx +++ b/macros/latex/required/l3kernel/l3doc.dtx @@ -71,7 +71,7 @@ and all files in that bundle must be distributed together. % This isn't included in the typeset documentation because it's a bit % ugly: %<*class> -\ProvidesExplClass{l3doc}{2024-11-02}{} +\ProvidesExplClass{l3doc}{2024-12-09}{} {L3 Experimental documentation class} %</class> % \fi @@ -84,7 +84,7 @@ and all files in that bundle must be distributed together. % require you to do updates, if the class changes.}} % % \author{\Team} -% \date{Released 2024-11-02} +% \date{Released 2024-12-09} % \maketitle % \tableofcontents % @@ -1531,8 +1531,7 @@ and all files in that bundle must be distributed together. % \begin{macrocode} \bool_if:NT \g_@@_lmodern_bool { - \bool_lazy_or:nnTF - { \sys_if_engine_luatex_p: }{ \sys_if_engine_xetex_p: } + \sys_if_engine_opentype:TF { \group_begin: \ttfamily @@ -3609,7 +3608,7 @@ and all files in that bundle must be distributed together. % \begin{macrocode} \newenvironment{TemplateInterfaceDescription}[1] { - \subsection{The~object~type~`#1'} + \subsection{The~template~type~`#1'} \begingroup \@beginparpenalty\@M \description @@ -3628,7 +3627,7 @@ and all files in that bundle must be distributed together. % \begin{macrocode} \newenvironment{TemplateDescription}[2] { - \subsection{The~template~`#2'~(object~type~#1)} + \subsection{The~template~`#2'~(template~type~#1)} \subsubsection*{Attributes:} \begingroup \@beginparpenalty\@M @@ -4717,7 +4716,7 @@ and all files in that bundle must be distributed together. % \begin{macrocode} \tl_const:Nn \Team { - The~\LaTeX3~Project\thanks + The~\LaTeX~Project~team\thanks {\url{https://www.latex-project.org/latex3/}} } % \end{macrocode} @@ -4731,7 +4730,7 @@ and all files in that bundle must be distributed together. } \author { - The~\LaTeX3~Project\thanks{E-mail:~ + The~\LaTeX~Project~team\thanks{E-mail:~ \href{mailto:latex-l@listserv.uni-heidelberg.de} {latex-l@listserv.uni-heidelberg.de}} } diff --git a/macros/latex/required/l3kernel/l3doc.pdf b/macros/latex/required/l3kernel/l3doc.pdf Binary files differindex de0bcf60e8..2e0ebf63db 100644 --- a/macros/latex/required/l3kernel/l3doc.pdf +++ b/macros/latex/required/l3kernel/l3doc.pdf diff --git a/macros/latex/required/l3kernel/l3docstrip.dtx b/macros/latex/required/l3kernel/l3docstrip.dtx index fb69b714fb..3f3458e4a8 100644 --- a/macros/latex/required/l3kernel/l3docstrip.dtx +++ b/macros/latex/required/l3kernel/l3docstrip.dtx @@ -63,7 +63,7 @@ % }^^A % } % -% \date{Released 2024-11-02} +% \date{Released 2024-12-09} % % \maketitle % diff --git a/macros/latex/required/l3kernel/l3docstrip.pdf b/macros/latex/required/l3kernel/l3docstrip.pdf Binary files differindex 061cd6fc44..8039326289 100644 --- a/macros/latex/required/l3kernel/l3docstrip.pdf +++ b/macros/latex/required/l3kernel/l3docstrip.pdf diff --git a/macros/latex/required/l3kernel/l3expan.dtx b/macros/latex/required/l3kernel/l3expan.dtx index 3ca2c517b1..81ad6ef3b7 100644 --- a/macros/latex/required/l3kernel/l3expan.dtx +++ b/macros/latex/required/l3kernel/l3expan.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-11-02} +% \date{Released 2024-12-09} % % \maketitle % diff --git a/macros/latex/required/l3kernel/l3file.dtx b/macros/latex/required/l3kernel/l3file.dtx index ceadf34dc0..4cf93f65f5 100644 --- a/macros/latex/required/l3kernel/l3file.dtx +++ b/macros/latex/required/l3kernel/l3file.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2024-11-02} +% \date{Released 2024-12-09} % % \maketitle % diff --git a/macros/latex/required/l3kernel/l3flag.dtx b/macros/latex/required/l3kernel/l3flag.dtx index 7741a9b0da..358c29b0b5 100644 --- a/macros/latex/required/l3kernel/l3flag.dtx +++ b/macros/latex/required/l3kernel/l3flag.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-11-02} +% \date{Released 2024-12-09} % % \maketitle % diff --git a/macros/latex/required/l3kernel/l3fp-assign.dtx b/macros/latex/required/l3kernel/l3fp-assign.dtx index 4fcaf71864..6f74942930 100644 --- a/macros/latex/required/l3kernel/l3fp-assign.dtx +++ b/macros/latex/required/l3kernel/l3fp-assign.dtx @@ -42,7 +42,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2024-11-02} +% \date{Released 2024-12-09} % \maketitle % % \begin{documentation} diff --git a/macros/latex/required/l3kernel/l3fp-aux.dtx b/macros/latex/required/l3kernel/l3fp-aux.dtx index 807710de08..ee7f02d8ff 100644 --- a/macros/latex/required/l3kernel/l3fp-aux.dtx +++ b/macros/latex/required/l3kernel/l3fp-aux.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-11-02} +% \date{Released 2024-12-09} % % \maketitle % diff --git a/macros/latex/required/l3kernel/l3fp-basics.dtx b/macros/latex/required/l3kernel/l3fp-basics.dtx index 11c244aa1f..cdb02dc1a5 100644 --- a/macros/latex/required/l3kernel/l3fp-basics.dtx +++ b/macros/latex/required/l3kernel/l3fp-basics.dtx @@ -42,7 +42,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2024-11-02} +% \date{Released 2024-12-09} % % \maketitle % diff --git a/macros/latex/required/l3kernel/l3fp-convert.dtx b/macros/latex/required/l3kernel/l3fp-convert.dtx index 23f7a2213d..d810f49b70 100644 --- a/macros/latex/required/l3kernel/l3fp-convert.dtx +++ b/macros/latex/required/l3kernel/l3fp-convert.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-11-02} +% \date{Released 2024-12-09} % % \maketitle % diff --git a/macros/latex/required/l3kernel/l3fp-expo.dtx b/macros/latex/required/l3kernel/l3fp-expo.dtx index d65a147e15..ec74bf42fe 100644 --- a/macros/latex/required/l3kernel/l3fp-expo.dtx +++ b/macros/latex/required/l3kernel/l3fp-expo.dtx @@ -42,7 +42,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2024-11-02} +% \date{Released 2024-12-09} % % \maketitle % diff --git a/macros/latex/required/l3kernel/l3fp-extended.dtx b/macros/latex/required/l3kernel/l3fp-extended.dtx index cedbc91888..ef7c829873 100644 --- a/macros/latex/required/l3kernel/l3fp-extended.dtx +++ b/macros/latex/required/l3kernel/l3fp-extended.dtx @@ -42,7 +42,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2024-11-02} +% \date{Released 2024-12-09} % % \maketitle % diff --git a/macros/latex/required/l3kernel/l3fp-functions.dtx b/macros/latex/required/l3kernel/l3fp-functions.dtx index 444e8189fa..e37c12fcd6 100644 --- a/macros/latex/required/l3kernel/l3fp-functions.dtx +++ b/macros/latex/required/l3kernel/l3fp-functions.dtx @@ -42,7 +42,7 @@ % }^^A % } % -% \date{Released 2024-11-02} +% \date{Released 2024-12-09} % % \maketitle % diff --git a/macros/latex/required/l3kernel/l3fp-logic.dtx b/macros/latex/required/l3kernel/l3fp-logic.dtx index baa08b4216..2862456150 100644 --- a/macros/latex/required/l3kernel/l3fp-logic.dtx +++ b/macros/latex/required/l3kernel/l3fp-logic.dtx @@ -42,7 +42,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2024-11-02} +% \date{Released 2024-12-09} % % \maketitle % diff --git a/macros/latex/required/l3kernel/l3fp-parse.dtx b/macros/latex/required/l3kernel/l3fp-parse.dtx index d272cadf11..85832288cb 100644 --- a/macros/latex/required/l3kernel/l3fp-parse.dtx +++ b/macros/latex/required/l3kernel/l3fp-parse.dtx @@ -42,7 +42,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2024-11-02} +% \date{Released 2024-12-09} % % \maketitle % diff --git a/macros/latex/required/l3kernel/l3fp-random.dtx b/macros/latex/required/l3kernel/l3fp-random.dtx index 91c3a20477..c23b49afba 100644 --- a/macros/latex/required/l3kernel/l3fp-random.dtx +++ b/macros/latex/required/l3kernel/l3fp-random.dtx @@ -42,7 +42,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2024-11-02} +% \date{Released 2024-12-09} % % \maketitle % diff --git a/macros/latex/required/l3kernel/l3fp-round.dtx b/macros/latex/required/l3kernel/l3fp-round.dtx index a4202b4fea..b2df6a5309 100644 --- a/macros/latex/required/l3kernel/l3fp-round.dtx +++ b/macros/latex/required/l3kernel/l3fp-round.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-11-02} +% \date{Released 2024-12-09} % % \maketitle % diff --git a/macros/latex/required/l3kernel/l3fp-symbolic.dtx b/macros/latex/required/l3kernel/l3fp-symbolic.dtx index 0db79ef775..a5c03d61b4 100644 --- a/macros/latex/required/l3kernel/l3fp-symbolic.dtx +++ b/macros/latex/required/l3kernel/l3fp-symbolic.dtx @@ -42,7 +42,7 @@ % }^^A % } % -% \date{Released 2024-11-02} +% \date{Released 2024-12-09} % % \maketitle % diff --git a/macros/latex/required/l3kernel/l3fp-traps.dtx b/macros/latex/required/l3kernel/l3fp-traps.dtx index b300528ec5..84760238bf 100644 --- a/macros/latex/required/l3kernel/l3fp-traps.dtx +++ b/macros/latex/required/l3kernel/l3fp-traps.dtx @@ -42,7 +42,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2024-11-02} +% \date{Released 2024-12-09} % \maketitle % % \begin{documentation} diff --git a/macros/latex/required/l3kernel/l3fp-trig.dtx b/macros/latex/required/l3kernel/l3fp-trig.dtx index 46cad5c8f9..6a0af100a3 100644 --- a/macros/latex/required/l3kernel/l3fp-trig.dtx +++ b/macros/latex/required/l3kernel/l3fp-trig.dtx @@ -42,7 +42,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2024-11-02} +% \date{Released 2024-12-09} % % \maketitle % diff --git a/macros/latex/required/l3kernel/l3fp-types.dtx b/macros/latex/required/l3kernel/l3fp-types.dtx index 049a6eea82..e1456c153f 100644 --- a/macros/latex/required/l3kernel/l3fp-types.dtx +++ b/macros/latex/required/l3kernel/l3fp-types.dtx @@ -42,7 +42,7 @@ % }^^A % } % -% \date{Released 2024-11-02} +% \date{Released 2024-12-09} % % \maketitle % diff --git a/macros/latex/required/l3kernel/l3fp.dtx b/macros/latex/required/l3kernel/l3fp.dtx index 0cbfd20153..09e46944f3 100644 --- a/macros/latex/required/l3kernel/l3fp.dtx +++ b/macros/latex/required/l3kernel/l3fp.dtx @@ -49,7 +49,7 @@ % }^^A % } % -% \date{Released 2024-11-02} +% \date{Released 2024-12-09} % % \maketitle % diff --git a/macros/latex/required/l3kernel/l3fparray.dtx b/macros/latex/required/l3kernel/l3fparray.dtx index 52b91d1296..93ea3d75f8 100644 --- a/macros/latex/required/l3kernel/l3fparray.dtx +++ b/macros/latex/required/l3kernel/l3fparray.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2024-11-02} +% \date{Released 2024-12-09} % % \maketitle % diff --git a/macros/latex/required/l3kernel/l3int.dtx b/macros/latex/required/l3kernel/l3int.dtx index 9782fe452c..9c6835bc76 100644 --- a/macros/latex/required/l3kernel/l3int.dtx +++ b/macros/latex/required/l3kernel/l3int.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-11-02} +% \date{Released 2024-12-09} % % \maketitle % @@ -297,7 +297,7 @@ % \begin{function}[updated = 2011-10-22] % { % \int_set:Nn, \int_set:cn, \int_set:NV, \int_set:cV, -% \int_gset:Nn, \int_gset:cn, \int_gset:MV, \int_gset:cV +% \int_gset:Nn, \int_gset:cn, \int_gset:NV, \int_gset:cV % } % \begin{syntax} % \cs{int_set:Nn} \meta{integer} \Arg{int expr} @@ -307,6 +307,37 @@ % \cs{int_eval:n}). % \end{function} % +% \begin{function}[added = 2024-12-08] +% { +% \int_set_regex_count:Nnn, \int_set_regex_count:cnn, +% \int_set_regex_count:NNn, \int_set_regex_count:cNn, +% \int_gset_regex_count:Nnn, \int_gset_regex_count:cnn, +% \int_gset_regex_count:NNn, \int_gset_regex_count:cNn, +% } +% \begin{syntax} +% \cs{int_set_regex_count:Nnn} \meta{int var} \Arg{regex} \Arg{token list} +% \cs{int_set_regex_count:NNn} \meta{int var} \meta{regex~var} \Arg{token list} +% \end{syntax} +% Sets \meta{int var} equal to the number of times +% \meta{regular expression} appears in \meta{token list}. +% The search starts by finding the left-most longest match, +% respecting greedy and lazy (non-greedy) operators. Then the search +% starts again from the character following the last character +% of the previous match, until reaching the end of the token list. +% Infinite loops are prevented in the case where the regular expression +% can match an empty token list: then we count one match between each +% pair of characters. +% For instance, +% \begin{verbatim} +% \int_set_regex_count:Nnn \l_foo_int { (b+|c) } { abbababcbb } +% \end{verbatim} +% results in \cs[no-index]{l_foo_int} taking the value $5$. +% Theses are alternative names for \cs{regex_count:nnN} and friends, +% with arguments re-ordered for \meta{int~var} setting; +% see \pkg{l3regex} chapter for more details of the \meta{regex} +% format. +% \end{function} +% % \begin{function}[updated = 2011-10-22] % {\int_sub:Nn, \int_sub:cn, \int_gsub:Nn, \int_gsub:cn} % \begin{syntax} @@ -1495,6 +1526,45 @@ % \end{macro} % \end{macro} % +% \begin{macro} +% { +% \int_set_regex_count:Nnn, \int_set_regex_count:cnn, +% \int_gset_regex_count:Nnn, \int_gset_regex_count:cnn +% } +% \begin{macro} +% { +% \int_set_regex_count:NNn, \int_set_regex_count:cNn, +% \int_gset_regex_count:NNn, \int_set_gregex_count:cNn +% } +% \begin{macrocode} +\cs_new_protected:Npn \int_set_regex_count:Nnn #1#2#3 + { \regex_count:nnN {#2} {#3} #1 } +\cs_generate_variant:Nn \int_set_regex_count:Nnn { c } +\cs_new_protected:Npn \int_gset_regex_count:Nnn #1#2#3 + { + \group_begin: + \int_set_eq:NN \l_@@_internal_a_int #1 + \regex_count:nnN {#2} {#3} \l_@@_internal_a_int + \int_gset_eq:NN #1 \l_@@_internal_a_int + \group_end: + } +\cs_generate_variant:Nn \int_gset_regex_count:Nnn { c } +\cs_new_protected:Npn \int_set_regex_count:NNn #1#2#3 + { \regex_count:NnN #2 {#3} #1 } +\cs_generate_variant:Nn \int_set_regex_count:Nnn { c } +\cs_new_protected:Npn \int_gset_regex_count:NNn #1#2#3 + { + \group_begin: + \int_set_eq:NN \l_@@_internal_a_int #1 + \regex_count:NnN #2 {#3} \l_@@_internal_a_int + \int_gset_eq:NN #1 \l_@@_internal_a_int + \group_end: + } +\cs_generate_variant:Nn \int_gset_regex_count:NNn { c } +% \end{macrocode} +% \end{macro} +% \end{macro} +% % \subsection{Using integers} % % \begin{macro}{\int_use:N, \int_use:c} diff --git a/macros/latex/required/l3kernel/l3intarray.dtx b/macros/latex/required/l3kernel/l3intarray.dtx index 9a9a5d64e8..0c7a5d3343 100644 --- a/macros/latex/required/l3kernel/l3intarray.dtx +++ b/macros/latex/required/l3kernel/l3intarray.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2024-11-02} +% \date{Released 2024-12-09} % % \maketitle % diff --git a/macros/latex/required/l3kernel/l3kernel-functions.dtx b/macros/latex/required/l3kernel/l3kernel-functions.dtx index 2678f3f965..d176fd5cb4 100644 --- a/macros/latex/required/l3kernel/l3kernel-functions.dtx +++ b/macros/latex/required/l3kernel/l3kernel-functions.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-11-02} +% \date{Released 2024-12-09} % % \maketitle % diff --git a/macros/latex/required/l3kernel/l3keys.dtx b/macros/latex/required/l3kernel/l3keys.dtx index c9220d7279..5228a9c19e 100644 --- a/macros/latex/required/l3kernel/l3keys.dtx +++ b/macros/latex/required/l3kernel/l3keys.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-11-02} +% \date{Released 2024-12-09} % % \maketitle % @@ -921,7 +921,7 @@ % The correct list is returned by nested calls. % \end{function} % -% \section{Digesting keys} +% \section{Precompiling keys} % % \begin{function}[added = 2022-03-09]{\keys_precompile:nnN} % \begin{syntax} @@ -931,6 +931,14 @@ % resulting code for those which set variables or functions into the % \meta{tl~var}. Thus this function \enquote{precompiles} the keyval list into % a set of results which can be applied rapidly. +% +% It is important to note that when precompiling keys, no expansion of variables +% takes place. This means that any key setting which simply stores variable names, +% rather than variable values, will not work correctly. Most notably, any +% key setting which uses \cs{l_keys_key_str}, \cs{l_keys_path_str} or +% \cs{l_keys_value_tl} will yield unpredictable outcomes. As such, keys +% intended to be precompiled should fully expand any values at the point of +% setting. % \end{function} % % \section{Utility functions for keys} diff --git a/macros/latex/required/l3kernel/l3legacy.dtx b/macros/latex/required/l3kernel/l3legacy.dtx index b76516d1b0..d8c66993a1 100644 --- a/macros/latex/required/l3kernel/l3legacy.dtx +++ b/macros/latex/required/l3kernel/l3legacy.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-11-02} +% \date{Released 2024-12-09} % % \maketitle % diff --git a/macros/latex/required/l3kernel/l3luatex.dtx b/macros/latex/required/l3kernel/l3luatex.dtx index d7a6058a15..e9cabf83ed 100644 --- a/macros/latex/required/l3kernel/l3luatex.dtx +++ b/macros/latex/required/l3kernel/l3luatex.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-11-02} +% \date{Released 2024-12-09} % % \maketitle % diff --git a/macros/latex/required/l3kernel/l3msg.dtx b/macros/latex/required/l3kernel/l3msg.dtx index 68058724e8..14b90a24da 100644 --- a/macros/latex/required/l3kernel/l3msg.dtx +++ b/macros/latex/required/l3kernel/l3msg.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-11-02} +% \date{Released 2024-12-09} % % \maketitle % diff --git a/macros/latex/required/l3kernel/l3names.dtx b/macros/latex/required/l3kernel/l3names.dtx index 95aeafe4a6..1ace7919a7 100644 --- a/macros/latex/required/l3kernel/l3names.dtx +++ b/macros/latex/required/l3kernel/l3names.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-11-02} +% \date{Released 2024-12-09} % % \maketitle % diff --git a/macros/latex/required/l3kernel/l3news.pdf b/macros/latex/required/l3kernel/l3news.pdf Binary files differindex 6082a4a8f0..2ed90b59e3 100644 --- a/macros/latex/required/l3kernel/l3news.pdf +++ b/macros/latex/required/l3kernel/l3news.pdf diff --git a/macros/latex/required/l3kernel/l3news01.pdf b/macros/latex/required/l3kernel/l3news01.pdf Binary files differindex ab42ee7d9e..51c7ab3882 100644 --- a/macros/latex/required/l3kernel/l3news01.pdf +++ b/macros/latex/required/l3kernel/l3news01.pdf diff --git a/macros/latex/required/l3kernel/l3news02.pdf b/macros/latex/required/l3kernel/l3news02.pdf Binary files differindex 0dc154f266..662d3927d5 100644 --- a/macros/latex/required/l3kernel/l3news02.pdf +++ b/macros/latex/required/l3kernel/l3news02.pdf diff --git a/macros/latex/required/l3kernel/l3news03.pdf b/macros/latex/required/l3kernel/l3news03.pdf Binary files differindex b65c38e4da..d8159114d1 100644 --- a/macros/latex/required/l3kernel/l3news03.pdf +++ b/macros/latex/required/l3kernel/l3news03.pdf diff --git a/macros/latex/required/l3kernel/l3news04.pdf b/macros/latex/required/l3kernel/l3news04.pdf Binary files differindex 72b0bd7508..56df9fa8c9 100644 --- a/macros/latex/required/l3kernel/l3news04.pdf +++ b/macros/latex/required/l3kernel/l3news04.pdf diff --git a/macros/latex/required/l3kernel/l3news05.pdf b/macros/latex/required/l3kernel/l3news05.pdf Binary files differindex 1ee5999389..781cbe546f 100644 --- a/macros/latex/required/l3kernel/l3news05.pdf +++ b/macros/latex/required/l3kernel/l3news05.pdf diff --git a/macros/latex/required/l3kernel/l3news06.pdf b/macros/latex/required/l3kernel/l3news06.pdf Binary files differindex 796821593a..b79bd3b3cc 100644 --- a/macros/latex/required/l3kernel/l3news06.pdf +++ b/macros/latex/required/l3kernel/l3news06.pdf diff --git a/macros/latex/required/l3kernel/l3news07.pdf b/macros/latex/required/l3kernel/l3news07.pdf Binary files differindex 545b732f7a..c2e10cd77a 100644 --- a/macros/latex/required/l3kernel/l3news07.pdf +++ b/macros/latex/required/l3kernel/l3news07.pdf diff --git a/macros/latex/required/l3kernel/l3news08.pdf b/macros/latex/required/l3kernel/l3news08.pdf Binary files differindex 66d91ae341..2d1503dda9 100644 --- a/macros/latex/required/l3kernel/l3news08.pdf +++ b/macros/latex/required/l3kernel/l3news08.pdf diff --git a/macros/latex/required/l3kernel/l3news09.pdf b/macros/latex/required/l3kernel/l3news09.pdf Binary files differindex 1e56ef2837..5da780b048 100644 --- a/macros/latex/required/l3kernel/l3news09.pdf +++ b/macros/latex/required/l3kernel/l3news09.pdf diff --git a/macros/latex/required/l3kernel/l3news10.pdf b/macros/latex/required/l3kernel/l3news10.pdf Binary files differindex 1d50364e6e..b1fbb7286b 100644 --- a/macros/latex/required/l3kernel/l3news10.pdf +++ b/macros/latex/required/l3kernel/l3news10.pdf diff --git a/macros/latex/required/l3kernel/l3news11.pdf b/macros/latex/required/l3kernel/l3news11.pdf Binary files differindex c5460e4ca7..ff66366fde 100644 --- a/macros/latex/required/l3kernel/l3news11.pdf +++ b/macros/latex/required/l3kernel/l3news11.pdf diff --git a/macros/latex/required/l3kernel/l3news12.pdf b/macros/latex/required/l3kernel/l3news12.pdf Binary files differindex 517857c7dd..f2c8092f9b 100644 --- a/macros/latex/required/l3kernel/l3news12.pdf +++ b/macros/latex/required/l3kernel/l3news12.pdf diff --git a/macros/latex/required/l3kernel/l3pdf.dtx b/macros/latex/required/l3kernel/l3pdf.dtx index 624fd08326..63517d8640 100644 --- a/macros/latex/required/l3kernel/l3pdf.dtx +++ b/macros/latex/required/l3kernel/l3pdf.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-11-02} +% \date{Released 2024-12-09} % % \maketitle % diff --git a/macros/latex/required/l3kernel/l3prefixes.csv b/macros/latex/required/l3kernel/l3prefixes.csv index e9835fb3f0..4fad000211 100644 --- a/macros/latex/required/l3kernel/l3prefixes.csv +++ b/macros/latex/required/l3kernel/l3prefixes.csv @@ -75,6 +75,7 @@ emoji,emoji,Xiangdong Zeng,https://github.com/stone-zeng/latex-emoji,https://git emojicite,emojicite,Leon Sixt,https://github.com/berleon/emojicite,https://github.com/berleon/emojicite.git,https://github.com/berleon/emojicite/issues/,2020-04-14,2020-04-20, empty,l3kernel,The LaTeX Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2018-05-12,2018-05-12, enotez,enotez,Clemens Niederberger,https://github.com/cgnieder/enotez/,https://github.com/cgnieder/enotez.git,https://github.com/cgnieder/enotez/issues,2013-03-16,2020-04-14, +enumext,enumext,Pablo González,https://github.com/pablgonz/enumext,git@github.com:pablgonz/enumext.git,https://github.com/pablgonz/enumext/issues,2024-11-18,2024-11-18, etex,l3kernel,The LaTeX Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2012-09-27,2012-09-27, etl,etl,Jonathan P. Spratte,https://github.com/Skillmon/ltx_etl,git@github.com:Skillmon/ltx_etl.git,https://github.com/Skillmon/ltx_etl/issues,2021-08-16,2021-08-16, exp,l3kernel,The LaTeX Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2012-09-27,2012-09-27, @@ -231,6 +232,7 @@ rivbook,rivbook,Julien Rivaud,,,,2018-06-13,2018-06-14, rivmath,rivmath,Julien Rivaud,,,,2018-06-13,2018-06-13, rpgicons,rpgicons,Jasper Habicht,https://github.com/jasperhabicht/rpgicons,https://github.com/jasperhabicht/rpgicons/rpgicons.git,https://github.com/jasperhabicht/rpgicons/issues,2024-04-29,2024-04-29, sanuml,sanitize-umlaut,Thomas F. Sturm,https://github.com/T-F-S/sanitize-umlaut,https://github.com/T-F-S/sanitize-umlaut.git,https://github.com/T-F-S/sanitize-umlaut/issues,2022-07-19,2022-07-19, +scaletextbullet,scaletextbullet,Oliver Beery,https://github.com/beeryoliver/scaletextbullet,https://github.com/beeryoliver/scaletextbullet/scaletextbullet.git,https://github.com/beeryoliver/scaletextbullet/issues,2024-11-15,2024-11-15, scan,l3kernel,The LaTeX Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2012-09-27,2012-09-27, schulma,schulmathematik,Keno Wehr,https://ctan.org/pkg/schulmathematik,,,2021-08-23,2021-08-23, scontents,scontents,Pablo González,https://github.com/pablgonz/scontents,git@github.com:pablgonz/scontents.git,https://github.com/pablgonz/scontents/issues,2019-12-05,2019-12-05, diff --git a/macros/latex/required/l3kernel/l3prefixes.pdf b/macros/latex/required/l3kernel/l3prefixes.pdf Binary files differindex 3063489a71..c50af16ac6 100644 --- a/macros/latex/required/l3kernel/l3prefixes.pdf +++ b/macros/latex/required/l3kernel/l3prefixes.pdf diff --git a/macros/latex/required/l3kernel/l3prg.dtx b/macros/latex/required/l3kernel/l3prg.dtx index c4f2ab1fa0..2ab7c0a065 100644 --- a/macros/latex/required/l3kernel/l3prg.dtx +++ b/macros/latex/required/l3kernel/l3prg.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-11-02} +% \date{Released 2024-12-09} % % \maketitle % @@ -79,41 +79,28 @@ % \begin{function}[updated = 2022-11-01] % { % \prg_new_conditional:Npnn, \prg_set_conditional:Npnn, \prg_gset_conditional:Npnn, -% \prg_new_conditional:Nnn, \prg_set_conditional:Nnn, \prg_gset_conditional:Nnn +% \prg_new_protected_conditional:Npnn, \prg_set_protected_conditional:Npnn, \prg_gset_protected_conditional:Npnn, +% \prg_new_conditional:Nnn, \prg_set_conditional:Nnn, \prg_gset_conditional:Nnn, +% \prg_new_protected_conditional:Nnn, \prg_set_protected_conditional:Nnn, \prg_gset_protected_conditional:Nnn % } % \begin{syntax} % \cs{prg_new_conditional:Npnn} \cs[no-index]{\meta{name}:\meta{arg spec}} \meta{parameters} \Arg{conditions} \Arg{code} \\ % \cs{prg_new_conditional:Nnn} \cs[no-index]{\meta{name}:\meta{arg spec}} \Arg{conditions} \Arg{code} % \end{syntax} % These functions create a family of conditionals using the same -% \Arg{code} to perform the test created. Those conditionals are -% expandable if \meta{code} is. The \texttt{new} versions check +% \meta{code} to perform the test created. Those non-protected +% conditionals are expandable if \meta{code} is. +% The \texttt{new} versions check % for existing definitions and perform assignments globally % (\emph{cf.}~\cs{cs_new:Npn}) whereas the \texttt{set} versions do no % check and perform assignments locally (\emph{cf.}~\cs{cs_set:Npn}). % The conditionals created are dependent on the comma-separated list -% of \meta{conditions}, which should be one or more of \texttt{p}, -% \texttt{T}, \texttt{F} and \texttt{TF}. -% \end{function} -% -% \begin{function}[updated = 2012-02-06] -% { -% \prg_new_protected_conditional:Npnn, \prg_set_protected_conditional:Npnn, \prg_gset_protected_conditional:Npnn, -% \prg_new_protected_conditional:Nnn, \prg_set_protected_conditional:Nnn, \prg_gset_protected_conditional:Nnn -% } -% \begin{syntax} -% \cs{prg_new_protected_conditional:Npnn} \cs[no-index]{\meta{name}:\meta{arg spec}} \meta{parameters} \Arg{conditions} \Arg{code} \\ -% \cs{prg_new_protected_conditional:Nnn} \cs[no-index]{\meta{name}:\meta{arg spec}} \Arg{conditions} \Arg{code} -% \end{syntax} -% These functions create a family of protected conditionals using the -% same \Arg{code} to perform the test created. The \meta{code} does -% not need to be expandable. The \texttt{new} version check for -% existing definitions and perform assignments globally -% (\emph{cf.}~\cs{cs_new:Npn}) whereas the \texttt{set} version do -% not (\emph{cf.}~\cs{cs_set:Npn}). The conditionals created are -% depended on the comma-separated list of \meta{conditions}, which -% should be one or more of \texttt{T}, \texttt{F} and \texttt{TF} (not -% \texttt{p}). +% of \meta{conditions}, which should be one or more of +% \texttt{T}, \texttt{F} and \texttt{TF}, and for non-protected conditionals +% \texttt{p}. +% For public conditionals, a full set of forms should be provided: +% this contrasts with strictly internal conditionals, where only the +% required subset need be defined. % \end{function} % % The conditionals are defined by \cs{prg_new_conditional:Npnn} and @@ -182,7 +169,7 @@ % \prg_gset_eq_conditional:NNn % } % \begin{syntax} -% \cs{prg_new_eq_conditional:NNn} \cs[no-index]{\meta{name_1}:\meta{arg spec_1}} \cs[no-index]{\meta{name_2}:\meta{arg spec_2}} \Arg{conditions} +% \cs{prg_new_eq_conditional:NNn} \cs[no-index]{\meta{name_1}:\meta{arg spec}} \cs[no-index]{\meta{name_2}:\meta{arg spec}} \Arg{conditions} % \end{syntax} % These functions copy a family of conditionals. The \texttt{new} version % checks for existing definitions (\emph{cf.}~\cs{cs_new_eq:NN}) whereas diff --git a/macros/latex/required/l3kernel/l3prop.dtx b/macros/latex/required/l3kernel/l3prop.dtx index 47cd52320c..4f13ed32d4 100644 --- a/macros/latex/required/l3kernel/l3prop.dtx +++ b/macros/latex/required/l3kernel/l3prop.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-11-02} +% \date{Released 2024-12-09} % % \maketitle % @@ -1724,7 +1724,7 @@ \exp_after:wN { \tl_to_str:n {#2} } } } - { \exp_after:wN \@@_get_linked:w #1 {#2} \use:n { } { } } + { \exp_after:wN \@@_get_linked:w #1 {#2} \exp_not:n { } { } } } \cs_new:Npn \@@_item:nnn #1#2#3 { diff --git a/macros/latex/required/l3kernel/l3quark.dtx b/macros/latex/required/l3kernel/l3quark.dtx index 5c6b0ca2d4..4bc8b55ebb 100644 --- a/macros/latex/required/l3kernel/l3quark.dtx +++ b/macros/latex/required/l3kernel/l3quark.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-11-02} +% \date{Released 2024-12-09} % % \maketitle % diff --git a/macros/latex/required/l3kernel/l3regex.dtx b/macros/latex/required/l3kernel/l3regex.dtx index 1fa9f71f08..f334252751 100644 --- a/macros/latex/required/l3kernel/l3regex.dtx +++ b/macros/latex/required/l3kernel/l3regex.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-11-02} +% \date{Released 2024-12-09} % % \maketitle % @@ -541,7 +541,7 @@ % \begin{syntax} % \cs{regex_set:Nn} \meta{regex~var} \Arg{regex} % \end{syntax} -% Stores a compiled version of the \meta{regular expression} in the +% Stores a compiled version of the \meta{regex} in the % \meta{regex~var}. The assignment is local for \cs{regex_set:Nn} and % global for \cs{regex_gset:Nn}. For instance, this function can be % used as @@ -557,7 +557,7 @@ % \end{syntax} % Creates a new constant \meta{regex~var} or raises an error if the name % is already taken. The value of the \meta{regex~var} is set -% globally to the compiled version of the \meta{regular expression}. +% globally to the compiled version of the \meta{regex}. % \end{function} % % \begin{function}[added = 2021-04-26, updated = 2021-04-29] @@ -595,7 +595,7 @@ % \begin{syntax} % \cs{regex_match:nnTF} \Arg{regex} \Arg{token list} \Arg{true code} \Arg{false code} % \end{syntax} -% Tests whether the \meta{regular expression} matches any part +% Tests whether the \meta{regex} matches any part % of the \meta{token list}. For instance, % \begin{verbatim} % \regex_match:nnTF { b [cde]* } { abecdcx } { TRUE } { FALSE } @@ -614,7 +614,7 @@ % \end{syntax} % Sets \meta{int var} within the current \TeX{} group level % equal to the number of times -% \meta{regular expression} appears in \meta{token list}. +% \meta{regex} appears in \meta{token list}. % The search starts by finding the left-most longest match, % respecting greedy and lazy (non-greedy) operators. Then the search % starts again from the character following the last character @@ -673,7 +673,7 @@ % \cs{regex_extract_once:nnN} \Arg{regex} \Arg{token list} \meta{seq~var} % \cs{regex_extract_once:nnNTF} \Arg{regex} \Arg{token list} \meta{seq~var} \Arg{true code} \Arg{false code} % \end{syntax} -% Finds the first match of the \meta{regular expression} in the +% Finds the first match of the \meta{regex} in the % \meta{token list}. If it exists, the match is stored as the first % item of the \meta{seq~var}, and further items are the contents of % capturing groups, in the order of their opening parenthesis. The @@ -707,7 +707,7 @@ % \cs{regex_extract_all:nnN} \Arg{regex} \Arg{token list} \meta{seq~var} % \cs{regex_extract_all:nnNTF} \Arg{regex} \Arg{token list} \meta{seq~var} \Arg{true code} \Arg{false code} % \end{syntax} -% Finds all matches of the \meta{regular expression} +% Finds all matches of the \meta{regex} % in the \meta{token list}, and stores all the submatch information % in a single sequence (concatenating the results of % multiple \cs{regex_extract_once:nnN} calls). @@ -731,15 +731,15 @@ % \regex_split:NnN, \regex_split:NVN, % } % \begin{syntax} -% \cs{regex_split:nnN} \Arg{regular expression} \Arg{token list} \meta{seq~var} -% \cs{regex_split:nnNTF} \Arg{regular expression} \Arg{token list} \meta{seq~var} \Arg{true code} \Arg{false code} +% \cs{regex_split:nnN} \Arg{regex} \Arg{token list} \meta{seq~var} +% \cs{regex_split:nnNTF} \Arg{regex} \Arg{token list} \meta{seq~var} \Arg{true code} \Arg{false code} % \end{syntax} % Splits the \meta{token list} into a sequence of parts, delimited by -% matches of the \meta{regular expression}. If the \meta{regular expression} +% matches of the \meta{regex}. If the \meta{regex} % has capturing groups, then the token lists that they match are stored as % items of the sequence as well. The assignment to \meta{seq~var} is local. % If no match is found the resulting \meta{seq~var} has the -% \meta{token list} as its sole item. If the \meta{regular expression} +% \meta{token list} as its sole item. If the \meta{regex} % matches the empty token list, then the \meta{token list} is split % into single tokens. % The testing versions insert the \meta{true code} into the input @@ -763,10 +763,10 @@ % \regex_replace_once:NnN,\regex_replace_once:NVN % } % \begin{syntax} -% \cs{regex_replace_once:nnN} \Arg{regular expression} \Arg{replacement} \meta{tl~var} -% \cs{regex_replace_once:nnNTF} \Arg{regular expression} \Arg{replacement} \meta{tl~var} \Arg{true code} \Arg{false code} +% \cs{regex_replace_once:nnN} \Arg{regex} \Arg{replacement} \meta{tl~var} +% \cs{regex_replace_once:nnNTF} \Arg{regex} \Arg{replacement} \meta{tl~var} \Arg{true code} \Arg{false code} % \end{syntax} -% Searches for the \meta{regular expression} in the contents of the +% Searches for the \meta{regex} in the contents of the % \meta{tl~var} and replaces the first match with the % \meta{replacement}. In the \meta{replacement}, % |\0| represents the full match, |\1| represent the contents of the @@ -780,10 +780,10 @@ % \regex_replace_all:NnN,\regex_replace_all:NVN % } % \begin{syntax} -% \cs{regex_replace_all:nnN} \Arg{regular expression} \Arg{replacement} \meta{tl~var} -% \cs{regex_replace_all:nnNTF} \Arg{regular expression} \Arg{replacement} \meta{tl~var} \Arg{true code} \Arg{false code} +% \cs{regex_replace_all:nnN} \Arg{regex} \Arg{replacement} \meta{tl~var} +% \cs{regex_replace_all:nnNTF} \Arg{regex} \Arg{replacement} \meta{tl~var} \Arg{true code} \Arg{false code} % \end{syntax} -% Replaces all occurrences of the \meta{regular expression} in the +% Replaces all occurrences of the \meta{regex} in the % contents of the \meta{tl~var} % by the \meta{replacement}, where |\0| represents % the full match, |\1| represent the contents of the first capturing diff --git a/macros/latex/required/l3kernel/l3seq.dtx b/macros/latex/required/l3kernel/l3seq.dtx index 120081197b..d9aa396570 100644 --- a/macros/latex/required/l3kernel/l3seq.dtx +++ b/macros/latex/required/l3kernel/l3seq.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-11-02} +% \date{Released 2024-12-09} % % \maketitle % @@ -189,6 +189,81 @@ % \end{texnote} % \end{function} % +% \begin{function}[added = 2024-12-08] +% { +% \seq_set_regex_extract_once:Nnn, \seq_set_regex_extract_once:cnn, +% \seq_set_regex_extract_once:NNn, \seq_set_regex_extract_once:cNn, +% \seq_gset_regex_extract_once:Nnn, \seq_gset_regex_extract_once:cnn, +% \seq_gset_regex_extract_once:NNn, \seq_gset_regex_extract_once:cNn, +% } +% \begin{syntax} +% \cs{seq_set_regex_extract_once:Nnn} \meta{seq~var} \Arg{regex} \Arg{token list} +% \cs{seq_set_regex_extract_once:NNn} \meta{seq~var} \meta{regex~var} \Arg{token list} +% \end{syntax} +% Finds the first match of the \meta{regex} in the +% \meta{token list}. If it exists, the match is stored as the first +% item of the \meta{seq~var}, and further items are the contents of +% capturing groups, in the order of their opening parenthesis. +% If there is no match, the \meta{seq~var} is cleared. +% Theses are alternative names for \cs{regex_extract_once:nnN} and friends, +% with arguments re-ordered for \meta{seq~var} setting; +% see \pkg{l3regex} chapter for more details of the \meta{regex} +% format. +% \end{function} +% +% \begin{function}[added = 2024-12-08] +% { +% \seq_set_regex_extract_all:Nnn, \seq_set_regex_extract_all:cnn, +% \seq_set_regex_extract_all:NNn, \seq_set_regex_extract_all:cNn, +% \seq_gset_regex_extract_all:Nnn, \seq_gset_regex_extract_all:cnn, +% \seq_gset_regex_extract_all:NNn, \seq_gset_regex_extract_all:cNn, +% } +% \begin{syntax} +% \cs{seq_set_regex_extract_all:Nnn} \meta{seq~var} \Arg{regex} \Arg{token list} +% \cs{seq_set_regex_extract_all:NNn} \meta{seq~var} \meta{regex~var} \Arg{token list} +% \end{syntax} +% Finds all matches of the \meta{regex} in the +% \meta{token list}, and stores all the submatch information +% in a single sequence (concatenating the results of +% multiple \cs{seq_set_regex_extract_all:Nnn} calls). +% If there is no match, the \meta{seq~var} is cleared. +% Theses are alternative names for \cs{regex_extract_all:nnN} and friends, +% with arguments re-ordered for \meta{seq~var} setting; +% see \pkg{l3regex} chapter for more details of the \meta{regex} +% format. +% \end{function} +% +% \begin{function}[added = 2024-12-08] +% { +% \seq_set_regex_split:Nnn, \seq_set_regex_split:cnn, +% \seq_set_regex_split:NNn, \seq_set_regex_split:cNn, +% \seq_gset_regex_split:Nnn, \seq_gset_regex_split:cnn, +% \seq_gset_regex_split:NNn, \seq_gset_regex_split:cNn, +% } +% \begin{syntax} +% \cs{seq_set_regex_split:Nnn} \meta{seq~var} \Arg{regex} \Arg{token list} +% \cs{seq_set_regex_split:NNn} \meta{seq~var} \meta{regex~var} \Arg{token list} +% \end{syntax} +% Splits the \meta{token list} into a sequence of parts, delimited by +% matches of the \meta{regular expression}. If the \meta{regular expression} +% has capturing groups, then the token lists that they match are stored as +% items of the sequence as well. +% If no match is found the resulting \meta{seq~var} has the +% \meta{token list} as its sole item. If the \meta{regular expression} +% matches the empty token list, then the \meta{token list} is split +% into single tokens. +% For example, after +% \begin{verbatim} +% \seq_set_regex_split:Nnn \l_path_seq { / } { the/path/for/this/file.tex } +% \end{verbatim} +% the sequence |\l_path_seq| contains the items |{the}|, |{path}|, +% |{for}|, |{this}|, and |{file.tex}|. +% Theses are alternative names for \cs{regex_split:nnN} and friends, +% with arguments re-ordered for \meta{seq~var} setting; +% see \pkg{l3regex} chapter for more details of the \meta{regex} +% format. +% \end{function} +% % \begin{function} % {\seq_concat:NNN, \seq_concat:ccc, \seq_gconcat:NNN, \seq_gconcat:ccc} % \begin{syntax} @@ -1411,6 +1486,84 @@ % \end{macro} % \end{macro} % +% \begin{macro} +% { +% \seq_set_regex_extract_once:Nnn, \seq_set_regex_extract_once:cnn, +% \seq_gset_regex_extract_once:Nnn, \seq_gset_regex_extract_once:cnn +% } +% \begin{macro} +% { +% \seq_set_regex_extract_all:Nnn, \seq_set_regex_extract_all:cnn, +% \seq_gset_regex_extract_all:Nnn, \seq_gset_regex_extract_all:cnn +% } +% \begin{macro} +% { +% \seq_set_regex_extract_once:NNn, \seq_set_regex_extract_once:cNn, +% \seq_gset_regex_extract_once:NNn, \seq_gset_regex_extract_once:cNn +% } +% \begin{macro} +% { +% \seq_set_regex_extract_all:NNn, \seq_set_regex_extract_all:cNn, +% \seq_gset_regex_extract_all:NNn, \seq_gset_regex_extract_all:cNn +% } +% \begin{macro} +% { +% \seq_set_regex_split:Nnn, \seq_set_regex_split:cnn, +% \seq_gset_regex_split:Nnn, \seq_gset_regex_split:cnn +% } +% \begin{macro} +% { +% \seq_set_regex_split:NNn, \seq_set_regex_split:cNn, +% \seq_gset_regex_split:NNn, \seq_gset_regex_split:cNn +% } +% \begin{macrocode} +\cs_new_protected:Npn \seq_set_regex_extract_once:Nnn #1#2#3 + { \regex_extract_once:nnN {#2} {#3} #1 } +\cs_generate_variant:Nn \seq_set_regex_extract_once:Nnn { c } +\cs_new_protected:Npn \seq_set_regex_extract_once:NNn #1#2#3 + { \regex_extract_once:NnN #2 {#3} #1 } +\cs_generate_variant:Nn \seq_set_regex_extract_once:NNn { c } +\cs_new_protected:Npn \seq_set_regex_extract_all:Nnn #1#2#3 + { \regex_extract_all:nnN {#2} {#3} #1 } +\cs_generate_variant:Nn \seq_set_regex_extract_all:Nnn { c } +\cs_new_protected:Npn \seq_set_regex_extract_all:NNn #1#2#3 + { \regex_extract_all:NnN #2 {#3} #1 } +\cs_generate_variant:Nn \seq_set_regex_extract_all:NNn { c } +\cs_new_protected:Npn \seq_set_regex_split:Nnn #1#2#3 + { \regex_split:nnN {#2} {#3} #1 } +\cs_generate_variant:Nn \seq_set_regex_split:Nnn { c } +\cs_new_protected:Npn \seq_set_regex_split:NNn #1#2#3 + { \regex_split:NnN #2 {#3} #1 } +\cs_generate_variant:Nn \seq_set_regex_split:NNn { c } +\group_begin: + \cs_set_protected:Npn \@@_tmp:w #1#2#3 + { + \cs_new_protected:cpe { seq_gset_regex_ #1 :N #2 n } ##1##2##3 + { + \group_begin: + \seq_set_eq:NN \exp_not:N \l_@@_tmp_seq ##1 + \exp_not:c { regex_ #1 :Nn #2 } + #3 {##2} {##3} \exp_not:N \l_@@_tmp_seq + \seq_gset_eq:NN ##1 \exp_not:N \l_@@_tmp_seq + \group_end: + } + \cs_generate_variant:cn { seq_gset_regex_ #1 :N #2 n } { c } + } + \@@_tmp:w { extract_once } n { } + \@@_tmp:w { extract_once } N \use:n + \@@_tmp:w { extract_all } n { } + \@@_tmp:w { extract_all } N \use:n + \@@_tmp:w { split } n { } + \@@_tmp:w { split } N \use:n +\group_end: +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% % \begin{macro}{\seq_concat:NNN, \seq_concat:ccc} % \UnitTested % \begin{macro}{\seq_gconcat:NNN, \seq_gconcat:ccc} @@ -1525,10 +1678,10 @@ % \end{macrocode} % \end{macro} % -% \begin{variable}{\l_@@_remove_seq} +% \begin{variable}{\l_@@_tmp_seq} % An internal sequence for the removal routines. % \begin{macrocode} -\seq_new:N \l_@@_remove_seq +\seq_new:N \l_@@_tmp_seq % \end{macrocode} % \end{variable} % @@ -1545,13 +1698,13 @@ { \@@_remove_duplicates:NN \seq_gset_eq:NN } \cs_new_protected:Npn \@@_remove_duplicates:NN #1#2 { - \seq_clear:N \l_@@_remove_seq + \seq_clear:N \l_@@_tmp_seq \seq_map_inline:Nn #2 { - \seq_if_in:NnF \l_@@_remove_seq {##1} - { \seq_put_right:Nn \l_@@_remove_seq {##1} } + \seq_if_in:NnF \l_@@_tmp_seq {##1} + { \seq_put_right:Nn \l_@@_tmp_seq {##1} } } - #1 #2 \l_@@_remove_seq + #1 #2 \l_@@_tmp_seq } \cs_generate_variant:Nn \seq_remove_duplicates:N { c } \cs_generate_variant:Nn \seq_gremove_duplicates:N { c } diff --git a/macros/latex/required/l3kernel/l3skip.dtx b/macros/latex/required/l3kernel/l3skip.dtx index 2e15eb2866..27fc10b4c1 100644 --- a/macros/latex/required/l3kernel/l3skip.dtx +++ b/macros/latex/required/l3kernel/l3skip.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2024-11-02} +% \date{Released 2024-12-09} % % \maketitle % @@ -769,7 +769,7 @@ % \end{syntax} % Sets \meta{skip} to the value of \meta{skip expr}, which % must evaluate to a length with units and may include a rubber -% component (for example |1 cm plus 0.5 cm|. +% component (for example |1 cm plus 0.5 cm|). % \end{function} % % \begin{function} @@ -1000,7 +1000,7 @@ % % \begin{function}[updated = 2011-10-22] % { -% \muskip_set:Nn, \muskip_set:cn, \muskip_set:Nn, \muskip_set:cn, +% \muskip_set:Nn, \muskip_set:cn, \muskip_set:NV, \muskip_set:cV, % \muskip_gset:Nn, \muskip_gset:cn, \muskip_gset:NV, \muskip_gset:cV % } % \begin{syntax} diff --git a/macros/latex/required/l3kernel/l3sort.dtx b/macros/latex/required/l3kernel/l3sort.dtx index c599739d56..7161e10525 100644 --- a/macros/latex/required/l3kernel/l3sort.dtx +++ b/macros/latex/required/l3kernel/l3sort.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-11-02} +% \date{Released 2024-12-09} % % \maketitle % diff --git a/macros/latex/required/l3kernel/l3str-convert.dtx b/macros/latex/required/l3kernel/l3str-convert.dtx index 1976b092b1..095ec90e18 100644 --- a/macros/latex/required/l3kernel/l3str-convert.dtx +++ b/macros/latex/required/l3kernel/l3str-convert.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2024-11-02} +% \date{Released 2024-12-09} % % \maketitle % @@ -2624,9 +2624,7 @@ \exp_args:Ne \tl_to_str:n { \str_map_function:nN {#1} \@@_convert_pdfname:n } } -\bool_lazy_or:nnTF - { \sys_if_engine_luatex_p: } - { \sys_if_engine_xetex_p: } +\sys_if_engine_opentype:TF { \cs_new:Npn \@@_convert_pdfname:n #1 { diff --git a/macros/latex/required/l3kernel/l3str.dtx b/macros/latex/required/l3kernel/l3str.dtx index 94a74b17d1..39fb3f0677 100644 --- a/macros/latex/required/l3kernel/l3str.dtx +++ b/macros/latex/required/l3kernel/l3str.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-11-02} +% \date{Released 2024-12-09} % % \maketitle % diff --git a/macros/latex/required/l3kernel/l3styleguide.pdf b/macros/latex/required/l3kernel/l3styleguide.pdf Binary files differindex 3bc937254f..42a51a2545 100644 --- a/macros/latex/required/l3kernel/l3styleguide.pdf +++ b/macros/latex/required/l3kernel/l3styleguide.pdf diff --git a/macros/latex/required/l3kernel/l3styleguide.tex b/macros/latex/required/l3kernel/l3styleguide.tex index 32395f1377..6395c2b433 100644 --- a/macros/latex/required/l3kernel/l3styleguide.tex +++ b/macros/latex/required/l3kernel/l3styleguide.tex @@ -32,7 +32,7 @@ The released version of this bundle is available from CTAN. {latex-team@latex-project.org}% }% } -\date{Released 2024-11-02} +\date{Released 2024-12-09} \begin{document} diff --git a/macros/latex/required/l3kernel/l3syntax-changes.pdf b/macros/latex/required/l3kernel/l3syntax-changes.pdf Binary files differindex 5d7b4faff4..ff471740cd 100644 --- a/macros/latex/required/l3kernel/l3syntax-changes.pdf +++ b/macros/latex/required/l3kernel/l3syntax-changes.pdf diff --git a/macros/latex/required/l3kernel/l3syntax-changes.tex b/macros/latex/required/l3kernel/l3syntax-changes.tex index d86cba73d8..4ef884a5ba 100644 --- a/macros/latex/required/l3kernel/l3syntax-changes.tex +++ b/macros/latex/required/l3kernel/l3syntax-changes.tex @@ -32,7 +32,7 @@ The released version of this bundle is available from CTAN. {latex-team@latex-project.org}% }% } -\date{Released 2024-11-02} +\date{Released 2024-12-09} \newcommand{\TF}{\textit{(TF)}} diff --git a/macros/latex/required/l3kernel/l3sys.dtx b/macros/latex/required/l3kernel/l3sys.dtx index 4a600987da..1188381940 100644 --- a/macros/latex/required/l3kernel/l3sys.dtx +++ b/macros/latex/required/l3kernel/l3sys.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-11-02} +% \date{Released 2024-12-09} % % \maketitle % @@ -107,6 +107,26 @@ % |\sys_if_engine_ptex_p:| is true for \epTeX{} but false for \eupTeX{}. % \end{function} % +% \begin{function}[added = 2024-11-05, pTF]{\sys_if_engine_opentype:} +% \begin{syntax} +% \cs{sys_if_engine_opentype_p:} +% \cs{sys_if_engine_opentype:TF} \Arg{true code} \Arg{false code} +% \end{syntax} +% Conditional which allows functionality-specific code to be used. +% The test is true for engines which can use OpenType fonts and +% thus full Unicode typesetting. This tests for features not engine +% name, but currently is equivalent to requiring either +% \XeTeX{} or \LuaTeX{}. +% \begin{texnote} +% The underlying test here checks for \tn{Umathcode}, which +% is used to implement OpenType math font typesetting. Any +% engine which should give a \texttt{true} result here needs +% to provide general Unicode support (accepting the full UTF-8 +% range for character codes), a mechanism to load system fonts +% and a suitable interface for math mode typesetting. +% \end{texnote} +% \end{function} +% % \begin{variable}[added = 2015-09-19]{\c_sys_engine_str} % The current engine given as a lower case string: one of % |luatex|, |pdftex|, |ptex|, |uptex| or |xetex|. @@ -514,6 +534,14 @@ % \end{variable} % \end{macro} % +% \begin{function}[pTF]{\sys_if_engine_opentype:} +% \begin{macrocode} +\@@_const:nn + { sys_if_engine_opentype } + { \cs_if_exist_p:N \tex_Umathcode:D } +% \end{macrocode} +% \end{function} +% % \begin{variable}{\c_sys_engine_exec_str,\c_sys_engine_format_str} % Take the functions defined above, and set up the engine and format % names. \cs{c_sys_engine_exec_str} differs from \cs{c_sys_engine_str} diff --git a/macros/latex/required/l3kernel/l3term-glossary.pdf b/macros/latex/required/l3kernel/l3term-glossary.pdf Binary files differindex 921a8a0614..b1faa18338 100644 --- a/macros/latex/required/l3kernel/l3term-glossary.pdf +++ b/macros/latex/required/l3kernel/l3term-glossary.pdf diff --git a/macros/latex/required/l3kernel/l3term-glossary.tex b/macros/latex/required/l3kernel/l3term-glossary.tex index cb01e6f812..735af0146c 100644 --- a/macros/latex/required/l3kernel/l3term-glossary.tex +++ b/macros/latex/required/l3kernel/l3term-glossary.tex @@ -32,7 +32,7 @@ The released version of this bundle is available from CTAN. {latex-team@latex-project.org}% }% } -\date{Released 2024-11-02} +\date{Released 2024-12-09} \newcommand{\TF}{\textit{(TF)}} diff --git a/macros/latex/required/l3kernel/l3text-case.dtx b/macros/latex/required/l3kernel/l3text-case.dtx index a9847bf900..47fc71efc5 100644 --- a/macros/latex/required/l3kernel/l3text-case.dtx +++ b/macros/latex/required/l3kernel/l3text-case.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-11-02} +% \date{Released 2024-12-09} % % \maketitle % @@ -801,9 +801,7 @@ % the standard catcode. If neither are true, we set as 13 on the grounds that % this will be what is used anyway! % \begin{macrocode} -\bool_lazy_or:nnTF - { \sys_if_engine_luatex_p: } - { \sys_if_engine_xetex_p: } +\sys_if_engine_opentype:TF { \cs_new:Npn \@@_change_case_catcode:nn #1#2 { \@@_char_catcode:N #1 } @@ -2319,9 +2317,7 @@ % A few adjustments to case mapping for combining chars: these are not needed % for the Unicode engines % \begin{macrocode} -\bool_lazy_or:nnF - { \sys_if_engine_luatex_p: } - { \sys_if_engine_xetex_p: } +\sys_if_engine_opentype:F { \text_declare_uppercase_mapping:nn { "01F0 } { \v { J } } } diff --git a/macros/latex/required/l3kernel/l3text-map.dtx b/macros/latex/required/l3kernel/l3text-map.dtx index 52e304ec15..3a24accbf9 100644 --- a/macros/latex/required/l3kernel/l3text-map.dtx +++ b/macros/latex/required/l3kernel/l3text-map.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-11-02} +% \date{Released 2024-12-09} % % \maketitle % diff --git a/macros/latex/required/l3kernel/l3text-purify.dtx b/macros/latex/required/l3kernel/l3text-purify.dtx index 8163fead6a..ca70f75fab 100644 --- a/macros/latex/required/l3kernel/l3text-purify.dtx +++ b/macros/latex/required/l3kernel/l3text-purify.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-11-02} +% \date{Released 2024-12-09} % % \maketitle % diff --git a/macros/latex/required/l3kernel/l3text.dtx b/macros/latex/required/l3kernel/l3text.dtx index 559bc158ae..1513949280 100644 --- a/macros/latex/required/l3kernel/l3text.dtx +++ b/macros/latex/required/l3kernel/l3text.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-11-02} +% \date{Released 2024-12-09} % % \maketitle % @@ -654,9 +654,7 @@ % Grab a codepoint and apply some code to it: here |#1| should expect one % following \emph{balanced text}. % \begin{macrocode} -\bool_lazy_or:nnTF - { \sys_if_engine_luatex_p: } - { \sys_if_engine_xetex_p: } +\sys_if_engine_opentype:TF { \cs_new:Npn \@@_codepoint_process:nN #1#2 { #1 {#2} } } @@ -710,9 +708,7 @@ % Allows comparison for all engines using a first \enquote{character} followed % by a codepoint. % \begin{macrocode} -\bool_lazy_or:nnTF - { \sys_if_engine_luatex_p: } - { \sys_if_engine_xetex_p: } +\sys_if_engine_opentype:TF { \prg_new_conditional:Npnn \@@_codepoint_compare:nNn #1#2#3 { TF , p } diff --git a/macros/latex/required/l3kernel/l3tl-analysis.dtx b/macros/latex/required/l3kernel/l3tl-analysis.dtx index d3342eb876..900540e055 100644 --- a/macros/latex/required/l3kernel/l3tl-analysis.dtx +++ b/macros/latex/required/l3kernel/l3tl-analysis.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2024-11-02} +% \date{Released 2024-12-09} % % \maketitle % diff --git a/macros/latex/required/l3kernel/l3tl-build.dtx b/macros/latex/required/l3kernel/l3tl-build.dtx index e3c615f5b2..aa7c9486f1 100644 --- a/macros/latex/required/l3kernel/l3tl-build.dtx +++ b/macros/latex/required/l3kernel/l3tl-build.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-11-02} +% \date{Released 2024-12-09} % % \maketitle % diff --git a/macros/latex/required/l3kernel/l3tl.dtx b/macros/latex/required/l3kernel/l3tl.dtx index 3d08f2354b..44dc9d8de2 100644 --- a/macros/latex/required/l3kernel/l3tl.dtx +++ b/macros/latex/required/l3kernel/l3tl.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-11-02} +% \date{Released 2024-12-09} % % \maketitle % @@ -333,8 +333,8 @@ % Tests if the \meta{token list} and the special \cs{c_novalue_tl} marker % contain the same list of tokens, both in respect of character codes and % category codes. This means that -% \cs{exp_args:No} \cs{tl_if_novalue:nTF} \{ \cs{c_novalue_tl} \} is -% logically \texttt{true} but \cs{tl_if_novalue:nTF} \{ \cs{c_novalue_tl} \} +% \cs{exp_args:No} \cs{tl_if_novalue:nTF} \texttt\{ \cs{c_novalue_tl} \texttt\} is +% logically \texttt{true} but \cs{tl_if_novalue:nTF} \texttt\{ \cs{c_novalue_tl} \texttt\} % is logically \texttt{false}. % This function is intended to allow construction % of flexible document interface structures in which missing optional @@ -376,6 +376,28 @@ % Token groups (|{|\ldots|}|) are not single tokens. % \end{function} % +% \begin{function}[TF, added = 2024-12-08] +% { +% \tl_if_regex_match:nn, \tl_if_regex_match:Vn, +% \tl_if_regex_match:nN, \tl_if_regex_match:VN, +% } +% \begin{syntax} +% \cs{tl_if_regex_match:nnTF} \Arg{token list} \Arg{regex} \Arg{true code} \Arg{false code} +% \cs{tl_if_regex_match:nNTF} \Arg{token list} \meta{regex~var} \Arg{true code} \Arg{false code} +% \end{syntax} +% Tests whether the \meta{regular expression} matches any part +% of the \meta{token list}. For instance, +% \begin{verbatim} +% \tl_if_regex_match:nnTF { abecdcx } { b [cde]* } { TRUE } { FALSE } +% \tl_if_regex_match:nnTF { example } { [b-dq-w] } { TRUE } { FALSE } +% \end{verbatim} +% leaves \texttt{TRUE} then \texttt{FALSE} in the input stream. +% Theses are alternative names for \cs{regex_match:nnTF} and friends, +% with arguments re-ordered for \meta{token list} testing; +% see \pkg{l3regex} chapter for more details of the \meta{regex} +% format. +% \end{function} +% % \subsection{Testing the first token} % % \begin{function}[updated = 2012-07-09, EXP, pTF] @@ -1158,6 +1180,51 @@ % for an example). % \end{function} % +% \begin{function}[added = 2024-12-08] +% { +% \tl_regex_replace_once:Nnn, \tl_regex_replace_once:cnn, +% \tl_regex_replace_once:NNn, \tl_regex_replace_once:cNn, +% \tl_regex_greplace_once:Nnn, \tl_regex_greplace_once:cnn, +% \tl_regex_greplace_once:NNn, \tl_regex_greplace_once:cNn +% } +% \begin{syntax} +% \cs{tl_regex_replace_once:Nnn} \meta{tl~var} \Arg{regex} \Arg{replacement} +% \cs{tl_regex_replace_once:NNn} \meta{tl~var} \meta{regex~var} \Arg{replacement} +% \end{syntax} +% Searches for the \meta{regular expression} in the contents of the +% \meta{tl~var} and replaces the first match with the +% \meta{replacement}. In the \meta{replacement}, +% |\0| represents the full match, |\1| represent the contents of the +% first capturing group, |\2| of the second, \emph{etc.} +% Theses are alternative names for \cs{regex_replace_once:nnN} and friends, +% with arguments re-ordered for \meta{tl~var} setting; +% See \pkg{l3regex} chapter for more details of the \meta{regex} +% format. +% \end{function} +% +% \begin{function}[added = 2024-12-08] +% { +% \tl_regex_replace_all:Nnn, \tl_regex_replace_all:cnn, +% \tl_regex_replace_all:NNn, \tl_regex_replace_all:cNn, +% \tl_regex_greplace_all:Nnn, \tl_regex_greplace_all:cnn, +% \tl_regex_greplace_all:NNn, \tl_regex_greplace_all:cNn +% } +% \begin{syntax} +% \cs{tl_regex_replace_all:Nnn} \meta{tl~var} \Arg{regex} \Arg{replacement} +% \cs{tl_regex_replace_all:NNn} \meta{tl~var} \meta{regex~var} \Arg{replacement} +% \end{syntax} +% Replaces all occurrences of the \meta{regular expression} in the +% contents of the \meta{tl~var} +% by the \meta{replacement}, where |\0| represents +% the full match, |\1| represent the contents of the first capturing +% group, |\2| of the second, \emph{etc.} Every match is treated +% independently, and matches cannot overlap. +% Theses are alternative names for \cs{regex_replace_all:nnN} and friends, +% with arguments re-ordered for \meta{tl~var} setting; +% see \pkg{l3regex} chapter for more details of the \meta{regex} +% format. +% \end{function} +% % \begin{function}[updated = 2011-08-11] % { % \tl_remove_once:Nn, \tl_remove_once:NV, \tl_remove_once:Ne, @@ -2249,6 +2316,57 @@ % % \begin{macro} % { +% \tl_regex_replace_once:Nnn, \tl_regex_replace_once:cnn, +% \tl_regex_replace_once:NNn, \tl_regex_replace_once:cNn, +% \tl_regex_greplace_once:Nnn, \tl_regex_greplace_once:cnn, +% \tl_regex_greplace_once:NNn, \tl_regex_greplace_once:cNn +% } +% \begin{macro} +% { +% \tl_regex_replace_all:Nnn, \tl_regex_replace_all:cnn, +% \tl_regex_replace_all:NNn, \tl_regex_replace_all:cNn, +% \tl_regex_greplace_all:Nnn, \tl_regex_greplace_all:cnn, +% \tl_regex_greplace_all:NNn, \tl_regex_greplace_all:cNn +% } +% Wrappers. +% \begin{macrocode} +\cs_new_protected:Npn \tl_regex_replace_once:Nnn #1#2#3 + { \regex_replace_once:nnN {#2} {#3} #1 } +\cs_generate_variant:Nn \tl_regex_replace_once:Nnn { c } +\cs_new_protected:Npn \tl_regex_replace_once:NNn #1#2#3 + { \regex_replace_once:NnN #2 {#3} #1 } +\cs_generate_variant:Nn \tl_regex_replace_once:NNn { c } +\cs_new_protected:Npn \tl_regex_replace_all:Nnn #1#2#3 + { \regex_replace_all:nnN {#2} {#3} #1 } +\cs_generate_variant:Nn \tl_regex_replace_all:Nnn { c } +\cs_new_protected:Npn \tl_regex_replace_all:NNn #1#2#3 + { \regex_replace_all:NnN #2 {#3} #1 } +\cs_generate_variant:Nn \tl_regex_replace_all:NNn { c } +\group_begin: + \cs_set_protected:Npn \@@_tmp:w #1#2#3 + { + \cs_new_protected:cpe { tl_regex_greplace_ #1 :N #2 n } ##1##2##3 + { + \group_begin: + \tl_set_eq:NN \exp_not:N \l_@@_internal_a_tl ##1 + \exp_not:c { regex_replace_ #1 :Nn #2 } + #3 {##2} {##3} \exp_not:N \l_@@_internal_a_tl + \tl_gset_eq:NN ##1 \exp_not:N \l_@@_internal_a_tl + \group_end: + } + \cs_generate_variant:cn { tl_regex_greplace_ #1 :N #2 n } { c } + } + \@@_tmp:w { once } n { } + \@@_tmp:w { once } N \use:n + \@@_tmp:w { all } n { } + \@@_tmp:w { all } N \use:n +\group_end: +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro} +% { % \tl_remove_once:Nn, \tl_remove_once:NV, \tl_remove_once:Ne, % \tl_remove_once:cn, \tl_remove_once:cV, \tl_remove_once:ce % } @@ -2611,6 +2729,29 @@ % \end{macrocode} % \end{macro} % +% \begin{macro} +% { +% \tl_if_regex_match:nn, \tl_if_regex_match:Vn, +% \tl_if_regex_match:nN, \tl_if_regex_match:VN, +% } +% \begin{macrocode} +\prg_new_protected_conditional:Npnn \tl_if_regex_match:nn #1#2 { TF , T , F } + { + \regex_match:nnTF {#2} {#1} + \prg_return_true: \prg_return_false: + } +\prg_generate_conditional_variant:Nnn \tl_if_regex_match:nn + { V } { TF , T , F } +\prg_new_protected_conditional:Npnn \tl_if_regex_match:nN #1#2 { TF , T , F } + { + \regex_match:nNTF {#2} #1 + \prg_return_true: \prg_return_false: + } +\prg_generate_conditional_variant:Nnn \tl_if_regex_match:nN + { V } { TF , T , F } +% \end{macrocode} +% \end{macro} +% % \subsection{Mapping over token lists} % % \begin{macro} diff --git a/macros/latex/required/l3kernel/l3token.dtx b/macros/latex/required/l3kernel/l3token.dtx index 8dc792cab5..2833a71ca1 100644 --- a/macros/latex/required/l3kernel/l3token.dtx +++ b/macros/latex/required/l3kernel/l3token.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-11-02} +% \date{Released 2024-12-09} % % \maketitle % @@ -151,7 +151,7 @@ % $0$ is not allowed. % Active characters cannot be generated in older versions of \XeTeX{}. % Another way to build token lists with unusual category codes is -% \cs{regex_replace:nnN} |{.*}| \Arg{replacement} \meta{tl~var}. +% \cs{regex_replace_all:nnN} |{.*}| \Arg{replacement} \meta{tl~var}. % \begin{texnote} % Exactly two expansions are needed to produce the character. % \end{texnote} @@ -443,12 +443,6 @@ % not be used other than for category code tests. % \end{variable} % -% \begin{variable}{\c_catcode_active_tl} -% A token list containing an active token. This is used internally -% for test purposes and should not be used other than in -% appropriately-constructed category code tests. -% \end{variable} -% % \section{Converting tokens} % % \begin{function}[EXP]{\token_to_meaning:N, \token_to_meaning:c} @@ -799,7 +793,7 @@ % stream while leaving it in place. This is handled using the % \enquote{peek} functions. The generic \cs{peek_after:Nw} is provided % along with a family of predefined tests for common cases. Peeking -% ahead does \emph{not} skip spaces: rather, \cs{peek_remove_spaces:n}. +% ahead does \emph{not} skip spaces: rather, \cs{peek_remove_spaces:n} % should be used. In addition, using \cs{peek_analysis_map_inline:n}, % one can map through the following tokens in the input stream and % repeatedly perform some tests. @@ -1833,12 +1827,12 @@ % \end{macrocode} % \end{macro} % -% \begin{variable}{\c_catcode_active_tl} +% \begin{variable}{\c_@@_active_tl} % Not an implicit token! % \begin{macrocode} \group_begin: \char_set_catcode_active:N \* - \tl_const:Nn \c_catcode_active_tl { \exp_not:N * } + \tl_const:Nn \c_@@_active_tl { \exp_not:N * } \group_end: % \end{macrocode} % \end{variable} @@ -1975,13 +1969,13 @@ % % \begin{macro}[pTF]{\token_if_active:N} % Check if token is an active char token. We use the constant -% \cs{c_catcode_active_tl} for this. A technical point is that -% \cs{c_catcode_active_tl} is in fact a macro expanding to +% \cs{c_@@_active_tl} for this. A technical point is that +% \cs{c_@@_active_tl} is in fact a macro expanding to % |\exp_not:N *|, where |*| is active. % \begin{macrocode} \prg_new_conditional:Npnn \token_if_active:N #1 { p , T , F , TF } { - \if_catcode:w \exp_not:N #1 \c_catcode_active_tl + \if_catcode:w \exp_not:N #1 \c_@@_active_tl \prg_return_true: \else: \prg_return_false: \fi: } % \end{macrocode} @@ -2833,7 +2827,7 @@ end % \peek_meaning_remove:N, % } % The public functions themselves cannot be defined using -% \cs{prg_new_conditional:Npnn}. Instead, the |TF|, |T|, |F| variants +% \cs{prg_new_protected_conditional:Npnn}. Instead, the |TF|, |T|, |F| variants % are defined in terms of corresponding variants of % \cs{@@_token_generic:NNTF} or \cs{@@_token_remove_generic:NNTF}, % with first argument one of \cs{@@_execute_branches_catcode:}, diff --git a/macros/latex/required/l3kernel/l3unicode.dtx b/macros/latex/required/l3kernel/l3unicode.dtx index 5708992806..b0c96acd98 100644 --- a/macros/latex/required/l3kernel/l3unicode.dtx +++ b/macros/latex/required/l3kernel/l3unicode.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-11-02} +% \date{Released 2024-12-09} % % \maketitle % @@ -162,9 +162,7 @@ % can generate character tokens for document use: those are defined below, % in the data recovery setup. % \begin{macrocode} -\bool_lazy_or:nnTF - { \sys_if_engine_luatex_p: } - { \sys_if_engine_xetex_p: } +\sys_if_engine_opentype:TF { \cs_new:Npn \codepoint_str_generate:n #1 { @@ -390,9 +388,7 @@ { \exp_args:Ne \@@_to_nfd:n { \int_eval:n {#1} } } \cs_new:Npn \@@_to_nfd:n #1 { \@@_to_nfd:nn {#1} { \char_value_catcode:n {#1} } } -\bool_lazy_or:nnF - { \sys_if_engine_luatex_p: } - { \sys_if_engine_xetex_p: } +\sys_if_engine_opentype:F { \cs_gset:Npn \@@_to_nfd:n #1 { diff --git a/macros/latex/required/l3kernel/source3.pdf b/macros/latex/required/l3kernel/source3.pdf Binary files differindex 463d639fb0..20488fc15d 100644 --- a/macros/latex/required/l3kernel/source3.pdf +++ b/macros/latex/required/l3kernel/source3.pdf diff --git a/macros/latex/required/l3kernel/source3.tex b/macros/latex/required/l3kernel/source3.tex index 08d3319b5e..ef6244f6cc 100644 --- a/macros/latex/required/l3kernel/source3.tex +++ b/macros/latex/required/l3kernel/source3.tex @@ -57,7 +57,7 @@ for those people who are interested. {latex-team@latex-project.org}% }% } -\date{Released 2024-11-02} +\date{Released 2024-12-09} \pagenumbering{roman} \maketitle |