summaryrefslogtreecommitdiff
path: root/macros/latex
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2024-01-06 03:01:33 +0000
committerNorbert Preining <norbert@preining.info>2024-01-06 03:01:33 +0000
commit949a85bb8707bf1aaa2b23b018e24d5001d38e52 (patch)
treec5af6ca7487e0e439195d0308276267088b67352 /macros/latex
parent387961768f65ec00d171b3781d4b87ea94bb19f5 (diff)
CTAN sync 202401060301
Diffstat (limited to 'macros/latex')
-rw-r--r--macros/latex/contrib/easybook/easybook.dtx13
-rw-r--r--macros/latex/contrib/easybook/easybook.pdfbin589428 -> 590446 bytes
-rw-r--r--macros/latex/contrib/easybook/easybook.tex63
-rw-r--r--macros/latex/contrib/l3backend/CHANGELOG.md10
-rw-r--r--macros/latex/contrib/l3backend/README.md4
-rw-r--r--macros/latex/contrib/l3backend/l3backend-basics.dtx18
-rw-r--r--macros/latex/contrib/l3backend/l3backend-box.dtx16
-rw-r--r--macros/latex/contrib/l3backend/l3backend-code.pdfbin934856 -> 910529 bytes
-rw-r--r--macros/latex/contrib/l3backend/l3backend-color.dtx56
-rw-r--r--macros/latex/contrib/l3backend/l3backend-draw.dtx28
-rw-r--r--macros/latex/contrib/l3backend/l3backend-graphics.dtx24
-rw-r--r--macros/latex/contrib/l3backend/l3backend-header.dtx176
-rw-r--r--macros/latex/contrib/l3backend/l3backend-opacity.dtx26
-rw-r--r--macros/latex/contrib/l3backend/l3backend-pdf.dtx49
-rw-r--r--macros/latex/contrib/l3backend/l3backend.ins6
-rw-r--r--macros/latex/contrib/l3experimental/CHANGELOG.md12
-rw-r--r--macros/latex/contrib/l3experimental/README.md4
-rw-r--r--macros/latex/contrib/l3experimental/l3benchmark.dtx6
-rw-r--r--macros/latex/contrib/l3experimental/l3benchmark.ins4
-rw-r--r--macros/latex/contrib/l3experimental/l3benchmark.pdfbin308820 -> 308420 bytes
-rw-r--r--macros/latex/contrib/l3experimental/l3draw-boxes.dtx4
-rw-r--r--macros/latex/contrib/l3experimental/l3draw-code.pdfbin682740 -> 684116 bytes
-rw-r--r--macros/latex/contrib/l3experimental/l3draw-layers.dtx4
-rw-r--r--macros/latex/contrib/l3experimental/l3draw-paths.dtx114
-rw-r--r--macros/latex/contrib/l3experimental/l3draw-points.dtx201
-rw-r--r--macros/latex/contrib/l3experimental/l3draw-scopes.dtx6
-rw-r--r--macros/latex/contrib/l3experimental/l3draw-softpath.dtx18
-rw-r--r--macros/latex/contrib/l3experimental/l3draw-state.dtx4
-rw-r--r--macros/latex/contrib/l3experimental/l3draw-transforms.dtx60
-rw-r--r--macros/latex/contrib/l3experimental/l3draw.dtx21
-rw-r--r--macros/latex/contrib/l3experimental/l3draw.ins4
-rw-r--r--macros/latex/contrib/l3experimental/l3draw.pdfbin518932 -> 518609 bytes
-rw-r--r--macros/latex/contrib/l3experimental/l3galley.dtx46
-rw-r--r--macros/latex/contrib/l3experimental/l3galley.pdfbin409197 -> 408796 bytes
-rw-r--r--macros/latex/contrib/l3experimental/l3graphics.dtx16
-rw-r--r--macros/latex/contrib/l3experimental/l3graphics.ins4
-rw-r--r--macros/latex/contrib/l3experimental/l3graphics.pdfbin383921 -> 383526 bytes
-rw-r--r--macros/latex/contrib/l3experimental/l3opacity.dtx8
-rw-r--r--macros/latex/contrib/l3experimental/l3opacity.ins4
-rw-r--r--macros/latex/contrib/l3experimental/l3opacity.pdfbin313872 -> 313477 bytes
-rw-r--r--macros/latex/contrib/l3experimental/l3str-format.dtx8
-rw-r--r--macros/latex/contrib/l3experimental/l3str-format.pdfbin368314 -> 367974 bytes
-rw-r--r--macros/latex/contrib/l3experimental/l3str.ins4
-rw-r--r--macros/latex/contrib/l3experimental/l3sys-shell.dtx8
-rw-r--r--macros/latex/contrib/l3experimental/l3sys-shell.ins4
-rw-r--r--macros/latex/contrib/l3experimental/l3sys-shell.pdfbin348328 -> 347930 bytes
-rw-r--r--macros/latex/contrib/l3experimental/xcoffins.dtx14
-rw-r--r--macros/latex/contrib/l3experimental/xcoffins.ins4
-rw-r--r--macros/latex/contrib/l3experimental/xcoffins.pdfbin394766 -> 394367 bytes
-rw-r--r--macros/latex/contrib/l3experimental/xgalley.dtx10
-rw-r--r--macros/latex/contrib/l3experimental/xgalley.ins4
-rw-r--r--macros/latex/contrib/l3experimental/xgalley.pdfbin299916 -> 299509 bytes
-rw-r--r--macros/latex/contrib/l3kernel/CHANGELOG.md34
-rw-r--r--macros/latex/contrib/l3kernel/README.md5
-rw-r--r--macros/latex/contrib/l3kernel/expl3.dtx6
-rw-r--r--macros/latex/contrib/l3kernel/expl3.pdfbin623156 -> 623018 bytes
-rw-r--r--macros/latex/contrib/l3kernel/interface3.pdfbin1774220 -> 1776647 bytes
-rw-r--r--macros/latex/contrib/l3kernel/interface3.tex4
-rw-r--r--macros/latex/contrib/l3kernel/l3.ins8
-rw-r--r--macros/latex/contrib/l3kernel/l3basics.dtx35
-rw-r--r--macros/latex/contrib/l3kernel/l3bitset.dtx172
-rw-r--r--macros/latex/contrib/l3kernel/l3bootstrap.dtx6
-rw-r--r--macros/latex/contrib/l3kernel/l3box.dtx14
-rw-r--r--macros/latex/contrib/l3kernel/l3candidates.dtx34
-rw-r--r--macros/latex/contrib/l3kernel/l3cctab.dtx6
-rw-r--r--macros/latex/contrib/l3kernel/l3clist.dtx6
-rw-r--r--macros/latex/contrib/l3kernel/l3coffins.dtx34
-rw-r--r--macros/latex/contrib/l3kernel/l3color.dtx48
-rw-r--r--macros/latex/contrib/l3kernel/l3debug.dtx14
-rw-r--r--macros/latex/contrib/l3kernel/l3deprecation.dtx19
-rw-r--r--macros/latex/contrib/l3kernel/l3doc.dtx140
-rw-r--r--macros/latex/contrib/l3kernel/l3doc.pdfbin563591 -> 563777 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3docstrip.dtx6
-rw-r--r--macros/latex/contrib/l3kernel/l3docstrip.pdfbin151750 -> 150985 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3expan.dtx8
-rw-r--r--macros/latex/contrib/l3kernel/l3file.dtx34
-rw-r--r--macros/latex/contrib/l3kernel/l3flag.dtx8
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-assign.dtx6
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-aux.dtx8
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-basics.dtx6
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-convert.dtx6
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-expo.dtx6
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-extended.dtx6
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-functions.dtx4
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-logic.dtx6
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-parse.dtx6
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-random.dtx16
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-round.dtx6
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-symbolic.dtx10
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-traps.dtx14
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-trig.dtx6
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-types.dtx4
-rw-r--r--macros/latex/contrib/l3kernel/l3fp.dtx16
-rw-r--r--macros/latex/contrib/l3kernel/l3fparray.dtx6
-rw-r--r--macros/latex/contrib/l3kernel/l3int.dtx6
-rw-r--r--macros/latex/contrib/l3kernel/l3intarray.dtx8
-rw-r--r--macros/latex/contrib/l3kernel/l3kernel-functions.dtx6
-rw-r--r--macros/latex/contrib/l3kernel/l3keys.dtx82
-rw-r--r--macros/latex/contrib/l3kernel/l3legacy.dtx6
-rw-r--r--macros/latex/contrib/l3kernel/l3luatex.dtx6
-rw-r--r--macros/latex/contrib/l3kernel/l3msg.dtx36
-rw-r--r--macros/latex/contrib/l3kernel/l3names.dtx10
-rw-r--r--macros/latex/contrib/l3kernel/l3news.pdfbin396222 -> 396222 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3news01.pdfbin122959 -> 122959 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3news02.pdfbin150919 -> 150919 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3news03.pdfbin148747 -> 148747 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3news04.pdfbin114754 -> 114754 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3news05.pdfbin112524 -> 112524 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3news06.pdfbin151591 -> 151591 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3news07.pdfbin128344 -> 128344 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3news08.pdfbin163484 -> 163484 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3news09.pdfbin250159 -> 250159 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3news10.pdfbin150302 -> 150302 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3news11.pdfbin170102 -> 170102 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3news12.pdfbin205020 -> 205020 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3pdf.dtx64
-rw-r--r--macros/latex/contrib/l3kernel/l3prefixes.csv4
-rw-r--r--macros/latex/contrib/l3kernel/l3prefixes.pdfbin82696 -> 82696 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3prg.dtx6
-rw-r--r--macros/latex/contrib/l3kernel/l3prop.dtx6
-rw-r--r--macros/latex/contrib/l3kernel/l3quark.dtx6
-rw-r--r--macros/latex/contrib/l3kernel/l3regex.dtx16
-rw-r--r--macros/latex/contrib/l3kernel/l3seq.dtx14
-rw-r--r--macros/latex/contrib/l3kernel/l3skip.dtx10
-rw-r--r--macros/latex/contrib/l3kernel/l3sort.dtx6
-rw-r--r--macros/latex/contrib/l3kernel/l3str-convert.dtx36
-rw-r--r--macros/latex/contrib/l3kernel/l3str.dtx14
-rw-r--r--macros/latex/contrib/l3kernel/l3styleguide.pdfbin296516 -> 296516 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3styleguide.tex2
-rw-r--r--macros/latex/contrib/l3kernel/l3syntax-changes.pdfbin243162 -> 243162 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3syntax-changes.tex2
-rw-r--r--macros/latex/contrib/l3kernel/l3sys.dtx10
-rw-r--r--macros/latex/contrib/l3kernel/l3term-glossary.pdfbin218315 -> 218315 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3term-glossary.tex2
-rw-r--r--macros/latex/contrib/l3kernel/l3text-case.dtx86
-rw-r--r--macros/latex/contrib/l3kernel/l3text-map.dtx6
-rw-r--r--macros/latex/contrib/l3kernel/l3text-purify.dtx8
-rw-r--r--macros/latex/contrib/l3kernel/l3text.dtx38
-rw-r--r--macros/latex/contrib/l3kernel/l3tl-analysis.dtx6
-rw-r--r--macros/latex/contrib/l3kernel/l3tl-build.dtx24
-rw-r--r--macros/latex/contrib/l3kernel/l3tl.dtx17
-rw-r--r--macros/latex/contrib/l3kernel/l3token.dtx6
-rw-r--r--macros/latex/contrib/l3kernel/l3unicode.dtx76
-rw-r--r--macros/latex/contrib/l3kernel/source3.pdfbin7510840 -> 7514579 bytes
-rw-r--r--macros/latex/contrib/l3kernel/source3.tex4
-rw-r--r--macros/latex/contrib/lwarp/README.txt7
-rw-r--r--macros/latex/contrib/lwarp/lwarp.dtx2175
-rw-r--r--macros/latex/contrib/lwarp/lwarp.ins1
-rw-r--r--macros/latex/contrib/lwarp/lwarp.pdfbin3405893 -> 3442544 bytes
-rwxr-xr-xmacros/latex/contrib/lwarp/lwarpmk.lua4
-rw-r--r--macros/latex/contrib/morewrites/README.md18
-rw-r--r--macros/latex/contrib/morewrites/morewrites.dtx272
-rw-r--r--macros/latex/contrib/morewrites/morewrites.ins6
-rw-r--r--macros/latex/contrib/morewrites/morewrites.pdfbin715831 -> 748706 bytes
-rw-r--r--macros/latex/contrib/morewrites/primargs.dtx32
-rw-r--r--macros/latex/contrib/morewrites/primargs.pdfbin601061 -> 635774 bytes
-rw-r--r--macros/latex/contrib/unbtex/README.md8
-rw-r--r--macros/latex/contrib/unbtex/unbtex-example.pdfbin600842 -> 590243 bytes
-rw-r--r--macros/latex/contrib/unbtex/unbtex-example.tex26
-rw-r--r--macros/latex/contrib/unbtex/unbtex-example/anexo-a.tex3
-rw-r--r--macros/latex/contrib/unbtex/unbtex-example/anexo-b.tex11
-rw-r--r--macros/latex/contrib/unbtex/unbtex-example/capitulo2.tex15
-rw-r--r--macros/latex/contrib/unbtex/unbtex-example/capitulo3.tex4
-rw-r--r--macros/latex/contrib/unbtex/unbtex-example/codigos/blockdiagram.tex3
-rw-r--r--macros/latex/contrib/unbtex/unbtex-example/figuras/bodediagram.pdfbin38806 -> 38649 bytes
-rw-r--r--macros/latex/contrib/unbtex/unbtex-example/referencias.bib26
-rw-r--r--macros/latex/contrib/unbtex/unbtex.cls48
-rw-r--r--macros/latex/contrib/unravel/README.md3
-rw-r--r--macros/latex/contrib/unravel/unravel.dtx749
-rw-r--r--macros/latex/contrib/unravel/unravel.pdfbin880287 -> 908970 bytes
170 files changed, 3716 insertions, 2182 deletions
diff --git a/macros/latex/contrib/easybook/easybook.dtx b/macros/latex/contrib/easybook/easybook.dtx
index 17b0945a04..4dd844a0d3 100644
--- a/macros/latex/contrib/easybook/easybook.dtx
+++ b/macros/latex/contrib/easybook/easybook.dtx
@@ -15,7 +15,7 @@
%<*class>
\NeedsTeXFormat{LaTeX2e}[2020/10/01]
\RequirePackage{l3keys2e}
-\ProvidesExplClass{easybook}{2024/01/04}{2024A}
+\ProvidesExplClass{easybook}{2024/01/05}{2024B}
{Easily typesetting Chinese theses or books}
\bool_set_false:N \l__eb_compile_draft_bool
@@ -397,7 +397,6 @@
\seq_map_function:NN
\l_tmpb_seq \eb_match_load_package:n
}
-\cs_gset_eq:NN \PackageWarning \PackageInfo
\msg_redirect_module:nnn { hooks } { warning } { info }
\bool_set_true:N \l__eb_class_mode_book_bool
@@ -1187,7 +1186,6 @@
}
\cs_new_protected:Npn \eb_fncustom_format_initial:
{
- % \ebhdrset{fntext-code = { }}
\bool_set_false:N \l__eb_normal_footnote_bool
\bool_if:NF \l__eb_fncustom_format_match_bool
{
@@ -1652,8 +1650,8 @@
{
biname .code:n = \ctex_assign_heading_name:nn { bichapter } {#1},
biname .initial:n = Chapter\space,
- binmuber .tl_set:N = \CTEX@bichapter@number,
- binmuber .initial:n = \arabic{chapter}
+ binumber .tl_set:N = \CTEX@bichapter@number,
+ binumber .initial:n = \arabic{chapter}
}
\cs_new_protected:Npn \eb_counter_zero:n #1
{ \eb_seq_map_inline:nn {#1} { \setcounter{##1}{0} } }
@@ -1805,8 +1803,6 @@
\skip_set:Nn \textfloatsep { 12pt plus 4pt minus 3pt }
\skip_set:Nn \dbltextfloatsep { 12pt plus 4pt minus 3pt }
\skip_set:Nn \multicolsep { 12pt plus 4pt minus 3pt }
-%% \int_gset:Nn \vbadness { 10000 }
-%% \int_gset:Nn \hbadness { 10000 }
\setcounter{topnumber}{4}
\setcounter{bottomnumber}{4}
\setcounter{totalnumber}{8}
@@ -2113,7 +2109,6 @@
{
breaklines = true,
resetmargins = true,
- % numbers = left,
numberstyle = \footnotesize,
basewidth = 0.5em,
columns = flexible,
@@ -2335,7 +2330,7 @@
}
%</package>
%<*tcolorbox>
-\ProvidesExplFile{eb-tcolorbox.cfg}{2024/01/04}{2024A}
+\ProvidesExplFile{eb-tcolorbox.cfg}{2024/01/05}{2024B}
{Customization of tcolorbox for easybook}
\cs_set_protected:Npn \addtotcbstyle #1#2
diff --git a/macros/latex/contrib/easybook/easybook.pdf b/macros/latex/contrib/easybook/easybook.pdf
index d6455ad028..953c8df90c 100644
--- a/macros/latex/contrib/easybook/easybook.pdf
+++ b/macros/latex/contrib/easybook/easybook.pdf
Binary files differ
diff --git a/macros/latex/contrib/easybook/easybook.tex b/macros/latex/contrib/easybook/easybook.tex
index cb18b47540..e3c4306e2c 100644
--- a/macros/latex/contrib/easybook/easybook.tex
+++ b/macros/latex/contrib/easybook/easybook.tex
@@ -11,7 +11,7 @@
{
cs => violet,
option => Green,
- cnltx => MediumBlue,
+ cnltx => NavyBlue,
link => DeepPink,
module => FireBrick,
beginend => FireBrick,
@@ -23,8 +23,8 @@
name = easybook,
color-scheme = blue,
title = EASYBOOK使用手册,
- version = v2024A,
- date = 2024/01/04,
+ version = v2024B,
+ date = 2024/01/05,
authors = 瞿毅,
info = 简便地排版中文学位论文或书籍,
email = toquyi@163.com,
@@ -40,20 +40,20 @@
}
\KOMAoptions{numbers = noenddot}
\setfootnoterule[0.5pt]{0.4\columnwidth}
-\addtokomafont{headsepline}{\color{MediumBlue}}
-\addtokomafont{footnoterule}{\color{MediumBlue}}
+\addtokomafont{headsepline}{\color{NavyBlue}}
+\addtokomafont{footnoterule}{\color{NavyBlue}}
\addtokomafont{section}{\normalfont\sffamily}
\addtokomafont{subsection}{\normalfont\sffamily}
\addtokomafont{subsubsection}{\normalfont\sffamily}
\DeclareTOCStyleEntry[entryformat = \sffamily]{default}{section}
\DeclareFieldFormat[book]{title}{\textsf{#1}}
\geometry{margin = 1in,marginparwidth = 0.6in}
-\SetEnumitemValue{label}{smallbullet}{\small\color{MediumBlue}\textbullet}
+\SetEnumitemValue{label}{smallbullet}{\small\color{NavyBlue}\textbullet}
\setlist{nosep,topsep = \smallskipamount,labelsep = 0.5em}
\setlist[1]{labelindent = \parindent}
\setlist[itemize,1]{label = smallbullet,leftmargin = *}
\setcounter{tocdepth}{2}
-\SetTblrInner[talltblr]{hline{1,Z} = {0.8pt,blue}}
+\SetTblrInner[talltblr]{hline{1,Z} = {0.8pt,NavyBlue}}
\SetTblrTemplate{caption}{empty}
\DefTblrTemplate{remark-sep}{default}{\space}
\SetTblrStyle{remark}{font = \small\normalfont}
@@ -143,7 +143,7 @@
baselinestretch = 1.2,
gobble = 2,
fontsize = \small,
- rulecolor = \color{MediumBlue},
+ rulecolor = \color{NavyBlue},
framerule = 0.5pt,
frame = single,
framesep = 6pt
@@ -291,7 +291,7 @@
remark{\ding{72}} = \code{times*} 方案为 \textsf{windows} 系统的预置字体。
]{
colspec = @{}*{4}{c}@{},
- hline{2} = {0.5pt,blue},
+ hline{2} = {0.5pt,NavyBlue},
row{1} = {font = \sffamily},
column{1} = {cmd = \code}
}{
@@ -328,7 +328,7 @@
\insertalltblr
{
colspec = @{}*{5}{c}@{},
- hline{3} = {0.5pt,blue},
+ hline{3} = {0.5pt,NavyBlue},
row{1,3} = {font = \sffamily,belowsep = 0pt},
row{2,4} = {cmd = \module*}
}{
@@ -639,8 +639,8 @@
标题标记命令 \cs*{sectionmark} 的内容,包括了标签选项 \option{sec-label} 的内容。
\keyval{subsec-mark}{标题标记}
标题标记命令 \cs*{subsectionmark} 的内容,包括了标签选项 \option{subsec-label} 的内容。
- \kvsplit-{chap-label}{\oarg{数字输出命令}\marg{距离命令}}\Default{\cs*{hspace}\Marg{1em}}
- 标题标记命令 \cs*{chaptermark} 内容的标签(标题有编号时)。比标题标记选项更常用,可选参数是对应于章节编号计数器的输出命令,必选参数是编号与标题之间的距离命令:
+ \kvsplit-{chap-label}{\oarg{编号输出命令}\marg{距离命令}}\Default{\cs*{hspace}\Marg{1em}}
+ 标题标记命令 \cs*{chaptermark} 内容的标签(标题有编号时)。比标题标记选项更常用,可选参数是对应章编号计数器值的输出命令,必选参数是编号与标题之间的距离命令:
\begin{ctexexam}
\ebhdrset
{
@@ -648,9 +648,9 @@
sec-mark = \CTEXifname{\CTEXthesection——}{}#1
}
\end{ctexexam}
- \kvsplit-{sec-label}{\oarg{数字输出命令}\marg{距离命令}}\Default{\cs*{hspace}\Marg{0.5em}}
+ \kvsplit-{sec-label}{\oarg{编号输出命令}\marg{距离命令}}\Default{\cs*{hspace}\Marg{0.5em}}
标题标记命令 \cs*{sectionmark} 内容的标签,用法与 \option{chap-label} 类似。
- \kvsplit-{subsec-label}{\oarg{数字输出命令}\marg{距离命令}}\Default{\cs*{hspace}\Marg{0.5em}}
+ \kvsplit-{subsec-label}{\oarg{编号输出命令}\marg{距离命令}}\Default{\cs*{hspace}\Marg{0.5em}}
标题标记命令内容 \cs*{subsectionmark} 的标签,用法与 \option{chap-label} 类似。
\keyval{headrule}{横线命令}
绘制页眉横线的选项,可以使用 \cs*{hrule} 或下述 \cs{markrule} 等画线命令来绘制横线。
@@ -708,7 +708,7 @@
\keychoice{fnmark-num}{plain,pifont,pifont*,pisans,pisans*,short num}\Default{plain}
脚注正文标记编号的类型。默认为原生样式 \code{plain},还可以改为 \code{pifont} 的各个版本,从左往右依次为普通版、阴文衬线版、阳文无衬线版和阴文无衬线版,缺点是它们的编号仅包括1-10。
- 短编号的形式与列表环境类似,不过增加了中文数字 \code{c} 和符号 \code{s} 格式参数。原生样式 \code{plain} 等同于单独使用数字 \code{1} 参数。这个选项可以用在正文中改变其后脚注编号类型。
+ 短编号的参数与列表环境类似,有1、A、a、I和i,除此之外还增加了中文数字 \code{c} 和符号 \code{s} 格式。原生样式 \code{plain} 等同于单独使用数字 \code{1} 参数。这个选项可以用在正文中改变其后脚注编号类型。
\begin{commands}
\command{footref}[\marg{脚注标签名}]
在当前位置对自动编号的脚注进行引用,与被引用的正文标记共享一个编号与格式。
@@ -832,7 +832,7 @@
\command{contentsuse}[\marg{条目名}\marg{扩展名}]
激活名称为 \meta{条目名} 的浮动环境目录定制功能,它使用的目录文件后缀为 \meta{扩展名}。需要在激活条目后再使用命令 \cs{RegisterTocName} 注册选项。
\command{DeclareFloatList}[\marg{条目名}\marg{扩展名}]\newtag%
- 声明一个新的 \cs*{listof}\meta{条目名}\code{\textcolor{cs}{s}} 的浮动环境目录命令,并且支持\ref{subsec:directory command} 中图表目录命令的机制。使用这个命令要确保将条目加入目录的机制已经存在,推荐搭配 \pkg*{newfloat} 宏包创建新的浮动环境。选项前有符号 \textcolor{red}{\ding{73}} 表示在声明后可用。下面举一个声明算法目录的例子:
+ 声明一个浮动环境题注的目录命令 \cs*{listof}\meta{条目名}\code{\textcolor{cs}{s}},并且支持\ref{subsec:directory command} 中图表目录命令的机制。使用这个命令要确保将条目加入目录的机制已经存在,推荐搭配 \pkg*{newfloat} 宏包创建新的浮动环境。选项前有符号 \textcolor{red}{\ding{73}} 表示在声明后可用。下面举一个声明算法目录的例子:
\begin{ctexexam}
\usepackage{newfloat}
\DeclareFloatingEnvironment[
@@ -843,7 +843,7 @@
\listofalgorithms[multoc] % 在正文中输出双栏算法目录
\end{ctexexam}
\command{listnumberline}[\marg{条目名}]
- 在图表等浮动环境目录中插入条目标签和编号,默认标签可以由格式命令 \cs{labelformat} 设置。注意其中 \meta{条目名} 需要用对应名称\textbf{显示指定}。
+ 在图表等浮动环境目录中插入条目标签和编号,默认标签可以由格式命令 \cs{labelformat} 设置。注意其中 \meta{条目名} 需要用对应名称\textbf{显式指定}。
\begin{ctexexam}
\ctexset
{
@@ -879,7 +879,7 @@
\subsection{文区命令}
\begin{commands}
\command{frontmatter}[\sarg\oarg{编号格式}]\Default{Roman}
- 前言区命令。使部分和章标题不编号,带有星号的变体命令不使用 \cs{cleardoublepage} 命令。页码 \meta{编号格式} 可设置为例如 \code{roman} 或 \code{Alph} 等形式。
+ 前言区命令。使部分和章标题不编号,带有星号的变体命令不使用 \cs{cleardoublepage} 命令。页码 \meta{编号格式} 可设置为 \code{arabic}、\code{Alph}、\code{alph}、\code{Roman}、\code{roman} 和 \code{chinese} 形式。
\command{mainmatter}[\sarg]
主文区命令。章标题正常编号且页码为从1开始计数的阿拉伯数字,带有星号的变体命令不使用 \cs{cleardoublepage} 清双页命令。
\command{backmatter}
@@ -894,7 +894,7 @@
\label{subsec:directory command}
\begin{commands}
\command{tableofcontents}[\sarg\oarg{键值列表}\darg{代码钩子}]
- 文档主目录命令。带有星号参数的命令不输出目录标题。\meta{代码钩子} 是当方案 \keyis{plan}{both} 时中文与英文目录之间执行的代码,可以插入目录样式和换页等命令。
+ 文档主目录命令,支持中英文双语标题目录输出。带有星号参数不输出目录条目上方的标题。\meta{代码钩子} 是当方案 \keyis{plan}{both} 时中文与英文目录之间执行的代码,可以插入目录样式和换页等命令。
\begin{options}
\keychoice{plan}{cn,bi,both}\Default{cn}\newtag[Exp]%
文档主目录的输出方案。\code{cn} 只输出中文目录,\code{bi} 只输出英文目录。\code{both} 同时连续输出中文和英文目录,需要与双语目录标题命令 \cs{bichapter} 等或双语标题选项 \option{title} 配合使用。
@@ -932,7 +932,7 @@
\end{commands}
\subsection[双语标题]{双语标题\smodule{chapter}}
-双语目录标题命令目前设置了常用的三个级别,它们将中文标题正常输出,并使中英文标题加入双语目录。类似于标准文档类,这三个标题命令分别具有独立的计数器\footnote{默认情况下与普通标题命令共享使用计数器。},并对应 \cs*{the}\meta{计数器} 的值,可以用于 \option{binumber} 选项更改英文目录中的编号。这个功能是为国内一些高校的学位论文模板的要求设计,在一般情况和英文模式下\textbf{不需要使用}。
+双语目录标题命令目前设置了常用的三个级别,它们将中文标题正常输出,并使中英文标题加入双语目录。类似于标准文档类,这三个标题命令分别具有独立的计数器\footnote{默认情况下与普通标题命令共享使用计数器。},并对应 \cs*{the}\meta{计数器} 的值,可以用于 \option{number} 选项更改英文目录中标题的编号格式。这个功能是为国内一些高校的学位论文模板的要求设计,在一般情况和英文模式下\textbf{不需要使用}。
\begin{commands}
\command{bichapter}[\sarg\oarg{目录中文标题}\marg{中文标题}\marg{目录英文标题}]
\code{chapter} 章级别的双语目录标题命令,具有独立的 \code{bichapter} 计数器。
@@ -941,20 +941,29 @@
\command{bisubsection}[\sarg\oarg{目录中文标题}\marg{中文标题}\marg{目录英文标题}]
\code{subsection} 小节级别的双语目录标题命令,具有独立的 \code{bisubsection} 计数器。
- 它们的星号变体命令使文中标题不编号,但是仍然加入双语目录,若英文标题参数空置那么仅加入中文目录而不加入英文目录,这一特点与 \cs*{chapter}\sarg{} 等命令的行为不太一样,在一些情况下会用到。可选参数是目录中的中文标题,默认与中文标题一致,正文标题过长时可用它设置在目录中显示的标题。默认情况下双语目录的格式是一致的,共享使用 \module*{tocset} 模块的设置,英文目录的章级别标题名及编号的修改方式如下:
+ 它们的星号变体命令使文中标题不编号,但是仍然加入双语目录,若英文标题参数空置那么仅加入中文目录而不加入英文目录,这一特点与 \cs*{chapter}\sarg{} 等命令的行为不太一样,在一些情况下会用到。可选参数是目录中的中文条目,默认与中文标题一致,正文标题过长时可用它设置在目录中显示的标题。默认情况下双语目录条目的格式是一致的,共享使用 \module*{tocset} 模块的设置。提供了两个选项 \option{biname} 和 \option{binumber} 修改英文目录章标题条目的名字及编号:
\begin{options}
\kvsplit{biname}{英文目录前名字,英文目录后名字}\Default{Chapter\cs*{space}}
更改英文目录 \code{chapter} 级别的标题编号前后名字,类似于 \CTeX 的 \option*{name} 选项。
- \keyval{binmuber}{英文目录数字输出命令}\Default{\cs*{arabic}\Marg{chapter}}
- 更改英文目录 \code{chapter} 级别的标题编号输出格式,类似于 \CTeX 的 \option*{number} 选项。
+ \keyval{binumber}{英文目录编号输出命令}\Default{\cs*{arabic}\Marg{chapter}}
+ 更改英文目录 \code{chapter} 级别的标题编号输出格式,类似于 \CTeX 的 \option*{number} 选项。下面两种设置英文目录中章标题编号的方式等效:
\end{options}
+ \begin{ctexexam}
+ \bisection{zhtitle}{entitle}
+ \ctexset{chapter/binumber = \arabic{chapter}}
+ \BeforeAddBitoc{\ctexset{chapter/nmuber = \arabic{chapter}}}
+ \end{ctexexam}
\end{commands}
\begin{commands}
- \command{appendix}[\splitoarg{前名字,后名字}\darg{数字输出命令}]
- 附录起始命令,其后的章节标题变为附录形式。英文目录中附录标题的 \meta{前名字} 为英文附录目录前名字,\meta{后名字} 为英文附录目录后名字。前后名字之间用一个半角逗号分开,也可以只有一部分,表示英文附录目录前名字。\meta{数字输出命令} 为附录标题计数器在英文目录中的编号命令。
+ \command{appendix}[\splitoarg{前名字,后名字}\darg{编号输出命令}]
+ 附录起始命令,其后的章节标题变为附录形式。\meta{前名字} 为英文目录中附录标题的前名字,同理 \meta{后名字} 为英文目录中附录标题的后名字。前后名字之间用一个半角逗号分开,也可以只有一部分,表示英文目录中附录标题前名字。\meta{编号输出命令} 为附录标题计数器在英文目录中的编号命令。注意这两个参数仅对 \code{bichapter} 级别的标题生效。
\command{BeforeAddBitoc}[\sarg\marg{英文标题加入目录前的代码}]
- 作用于局部范围的英文目录钩子,可以插入标题或目录设置的命令改变英文目录中标题的显示格式,也可以覆盖上述的目录前后名字和编号等设置,带有星号的命令会重置之前的代码,放置在导言区或 \cs{bichapter} 等命令前生效。
+ 作用于局部范围的英文目录钩子,可以插入标题或目录设置的命令改变英文目录中标题的显示格式,也可以覆盖上述的目录前后名字和编号等设置,带有星号的命令会重置之前的代码,放置在导言区或 \cs{bichapter} 等双语标题命令前生效。这个命令在设置英文目录标题格式中有最高优先级。举一个在英文目录节标题编号前添加 \code{Section} 字符串的例子:
+ \begin{ctexexam}
+ \BeforeAddBitoc{\ctexset{section/name = Section}}
+ \bisection{zhtitle}{entitle}
+ \end{ctexexam}
\end{commands}
\subsection[上标和下标]{上标和下标\smodule{style}}
@@ -1327,7 +1336,7 @@
\shortversion{v = 1.638,date = 2022/03/04,changes = 增加目录条目样式选项注册命令 \cs{RegisterTocName}。}
\shortversion{v = 1.644,date = 2022/03/10,changes = 增加浮动环境目录声明命令 \cs{DeclareFloatList} 配合 \pkg*{caption} 宏包。}
\shortversion{v = 1.682,date = 2022/05/01,changes = 将迷你页判断命令 \cs*{notminipage} 改为被保护命令兼容 \pkg*{circledtext} 宏包。}
- \shortversion{v = 2024A,date = 2024/01/04,changes = 核对依赖宏包的更新改动,优化使用手册的内容细节。}
+ \shortversion{v = 2024B,date = 2024/01/05,changes = 核对依赖宏包的更新改动,优化使用手册的内容细节。}
\end{changelog}
\nocite{*}
diff --git a/macros/latex/contrib/l3backend/CHANGELOG.md b/macros/latex/contrib/l3backend/CHANGELOG.md
index ddccab9d20..0adcd7fb84 100644
--- a/macros/latex/contrib/l3backend/CHANGELOG.md
+++ b/macros/latex/contrib/l3backend/CHANGELOG.md
@@ -6,6 +6,11 @@ this project uses date-based 'snapshot' version identifiers.
## [Unreleased]
+## [2024-01-04]
+
+### Changed
+- Documentation tweaks
+
## [2023-11-09]
### Changed
@@ -133,7 +138,7 @@ this project uses date-based 'snapshot' version identifiers.
## [2021-08-04]
-## Changed
+### Changed
- Only use `pdfmanagement` module if active
## [2021-07-12]
@@ -316,7 +321,8 @@ this project uses date-based 'snapshot' version identifiers.
- Include `l3backend` in file names
- Moved backend code to internal for each 'parent' module
-[Unreleased]: https://github.com/latex3/latex3/compare/2023-11-09...HEAD
+[Unreleased]: https://github.com/latex3/latex3/compare/2024-01-04...HEAD
+[2024-01-04]: https://github.com/latex3/latex3/compare/2023-11-09...2024-01-04
[2023-11-09]: https://github.com/latex3/latex3/compare/2023-11-04...2023-11-09
[2023-11-04]: https://github.com/latex3/latex3/compare/2023-10-23...2023-11-04
[2023-10-23]: https://github.com/latex3/latex3/compare/2023-10-10...2023-10-23
diff --git a/macros/latex/contrib/l3backend/README.md b/macros/latex/contrib/l3backend/README.md
index 0dd36a404c..ad12f364be 100644
--- a/macros/latex/contrib/l3backend/README.md
+++ b/macros/latex/contrib/l3backend/README.md
@@ -1,7 +1,7 @@
LaTeX3 Backend Drivers
======================
-Release 2023-11-09
+Release 2024-01-04
This package forms parts of `expl3`, and contains the code used to interface
with backends (drivers) across the `expl3` codebase. The functions here are
@@ -11,6 +11,6 @@ on an independent schedule.
-----
-<p>Copyright (C) 2019-2023 The LaTeX Project <br />
+<p>Copyright (C) 2019-2024 The LaTeX Project <br />
<a href="http://latex-project.org/">http://latex-project.org/</a> <br />
All rights reserved.</p>
diff --git a/macros/latex/contrib/l3backend/l3backend-basics.dtx b/macros/latex/contrib/l3backend/l3backend-basics.dtx
index add8305061..948a9eadfc 100644
--- a/macros/latex/contrib/l3backend/l3backend-basics.dtx
+++ b/macros/latex/contrib/l3backend/l3backend-basics.dtx
@@ -2,7 +2,7 @@
%
%% File: l3backend-basics.dtx
%
-% Copyright (C) 2019-2023 The LaTeX Project
+% Copyright (C) 2019-2024 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -31,7 +31,7 @@
% \fi
%
% \title{^^A
-% The \textsf{l3backend-basics} package\\ Backend basics^^A
+% The \pkg{l3backend-basics} module\\ Backend basics^^A
% }
%
% \author{^^A
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-11-09}
+% \date{Released 2024-01-04}
%
% \maketitle
%
@@ -70,27 +70,27 @@
% \begin{macrocode}
\ProvidesExplFile
%<*dvipdfmx>
- {l3backend-dvipdfmx.def}{2023-11-09}{}
+ {l3backend-dvipdfmx.def}{2024-01-04}{}
{L3 backend support: dvipdfmx}
%</dvipdfmx>
%<*dvips>
- {l3backend-dvips.def}{2023-11-09}{}
+ {l3backend-dvips.def}{2024-01-04}{}
{L3 backend support: dvips}
%</dvips>
%<*dvisvgm>
- {l3backend-dvisvgm.def}{2023-11-09}{}
+ {l3backend-dvisvgm.def}{2024-01-04}{}
{L3 backend support: dvisvgm}
%</dvisvgm>
%<*luatex>
- {l3backend-luatex.def}{2023-11-09}{}
+ {l3backend-luatex.def}{2024-01-04}{}
{L3 backend support: PDF output (LuaTeX)}
%</luatex>
%<*pdftex>
- {l3backend-pdftex.def}{2023-11-09}{}
+ {l3backend-pdftex.def}{2024-01-04}{}
{L3 backend support: PDF output (pdfTeX)}
%</pdftex>
%<*xetex>
- {l3backend-xetex.def}{2023-11-09}{}
+ {l3backend-xetex.def}{2024-01-04}{}
{L3 backend support: XeTeX}
%</xetex>
% \end{macrocode}
diff --git a/macros/latex/contrib/l3backend/l3backend-box.dtx b/macros/latex/contrib/l3backend/l3backend-box.dtx
index cf91e71bed..7dbacb0044 100644
--- a/macros/latex/contrib/l3backend/l3backend-box.dtx
+++ b/macros/latex/contrib/l3backend/l3backend-box.dtx
@@ -2,7 +2,7 @@
%
%% File: l3backend-box.dtx
%
-% Copyright (C) 2019-2023 The LaTeX Project
+% Copyright (C) 2019-2024 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -31,7 +31,7 @@
% \fi
%
% \title{^^A
-% The \textsf{l3backend-box} package\\ Backend box support^^A
+% The \pkg{l3backend-box} package\\ Backend box support^^A
% }
%
% \author{^^A
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-11-09}
+% \date{Released 2024-01-04}
%
% \maketitle
%
@@ -118,9 +118,9 @@
{ \fp_eval:n { round ( -(#2) , 5 ) } } ~
rotate
}
- \__kernel_backend_align_end:
- \box_use:N #1
- \__kernel_backend_scope_end:
+ \__kernel_backend_align_end:
+ \box_use:N #1
+ \__kernel_backend_scope_end:
}
% \end{macrocode}
% \end{macro}
@@ -217,8 +217,8 @@
\c_space_tl
\fp_use:N \l_@@_backend_cos_fp
}
- \box_use:N #1
- \__kernel_backend_scope_end:
+ \box_use:N #1
+ \__kernel_backend_scope_end:
}
\fp_new:N \l_@@_backend_cos_fp
\fp_new:N \l_@@_backend_sin_fp
diff --git a/macros/latex/contrib/l3backend/l3backend-code.pdf b/macros/latex/contrib/l3backend/l3backend-code.pdf
index dc7099b579..3617a446d2 100644
--- a/macros/latex/contrib/l3backend/l3backend-code.pdf
+++ b/macros/latex/contrib/l3backend/l3backend-code.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3backend/l3backend-color.dtx b/macros/latex/contrib/l3backend/l3backend-color.dtx
index cca4f54383..94a09ae916 100644
--- a/macros/latex/contrib/l3backend/l3backend-color.dtx
+++ b/macros/latex/contrib/l3backend/l3backend-color.dtx
@@ -2,7 +2,7 @@
%
%% File: l3backend-color.dtx
%
-% Copyright (C) 2019-2023 The LaTeX Project
+% Copyright (C) 2019-2024 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -31,7 +31,7 @@
% \fi
%
% \title{^^A
-% The \textsf{l3backend-color} package\\ Backend color support^^A
+% The \pkg{l3backend-color} module\\ Backend color support^^A
% }
%
% \author{^^A
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-11-09}
+% \date{Released 2024-01-04}
%
% \maketitle
%
@@ -169,7 +169,6 @@
% \@@_backend_select:n
% }
% \begin{macro}{\@@_backend_reset:}
-% \begin{macro}{color.sc}
% Push the data to the stack. In the case of \texttt{dvips} also saves the
% drawing color in raw PostScript. The |spot| model is for handling data
% in classical format.
@@ -194,7 +193,6 @@
% \end{macrocode}
% \end{macro}
% \end{macro}
-% \end{macro}
%
% \begin{macrocode}
%</dvips|dvisvgm>
@@ -467,9 +465,9 @@
% \begin{macrocode}
\cs_new:Npn \@@_backend_separation_init:nnn #1#2#3
{
- \exp_args:Ne \@@_backend_separation_init:nnnn
- { \@@_backend_separation_init_count:n {#2} }
- {#1} {#2} {#3}
+ \exp_args:Ne \@@_backend_separation_init:nnnn
+ { \@@_backend_separation_init_count:n {#2} }
+ {#1} {#2} {#3}
}
\cs_new:Npn \@@_backend_separation_init_count:n #1
{ \int_eval:n { 0 \@@_backend_separation_init_count:w #1 ~ \s_@@_stop } }
@@ -531,15 +529,15 @@
% \begin{macrocode}
\cs_new:Npn \@@_backend_separation_init:nw #1#2 ~ #3 ~ #4 \s_@@_stop
{
- #2 ~ #3 ~
- 2 ~ index ~ 2 ~ index ~ lt ~
- { ~ pop ~ exch ~ pop ~ } ~
- { ~
- 2 ~ index ~ 1 ~ index ~ gt ~
- { ~ exch ~ pop ~ exch ~ pop ~ } ~
- { ~ pop ~ pop ~ } ~
- ifelse ~
- }
+ #2 ~ #3 ~
+ 2 ~ index ~ 2 ~ index ~ lt ~
+ { ~ pop ~ exch ~ pop ~ } ~
+ { ~
+ 2 ~ index ~ 1 ~ index ~ gt ~
+ { ~ exch ~ pop ~ exch ~ pop ~ } ~
+ { ~ pop ~ pop ~ } ~
+ ifelse ~
+ }
ifelse ~
#1 ~ 1 ~ roll ~
\tl_if_blank:nF {#4}
@@ -795,9 +793,9 @@
{
/Lab ~
<<
- /WhitePoint ~
- [ \tl_use:c { c_@@_model_whitepoint_CIELAB_ #1 _tl } ]
- /Range ~ [ \c_@@_model_range_CIELAB_tl ]
+ /WhitePoint ~
+ [ \tl_use:c { c_@@_model_whitepoint_CIELAB_ #1 _tl } ]
+ /Range ~ [ \c_@@_model_range_CIELAB_tl ]
>>
}
}
@@ -841,7 +839,7 @@
]
}
{ {#3} }
- }
+ }
\use:e
{
\pdf_object_new:n { color \int_use:N \g_@@_model_int }
@@ -1207,14 +1205,14 @@
\__kernel_backend_scope:n
{
stroke =
- "
- rgb
- (
- #1 \c_percent_str ,
- #2 \c_percent_str ,
- #3 \c_percent_str
- )
- "
+ "
+ rgb
+ (
+ #1 \c_percent_str ,
+ #2 \c_percent_str ,
+ #3 \c_percent_str
+ )
+ "
}
}
% \end{macrocode}
diff --git a/macros/latex/contrib/l3backend/l3backend-draw.dtx b/macros/latex/contrib/l3backend/l3backend-draw.dtx
index 46b0e2af1d..93a4c09b44 100644
--- a/macros/latex/contrib/l3backend/l3backend-draw.dtx
+++ b/macros/latex/contrib/l3backend/l3backend-draw.dtx
@@ -2,7 +2,7 @@
%
%% File: l3backend-draw.dtx
%
-% Copyright (C) 2019-2023 The LaTeX Project
+% Copyright (C) 2019-2024 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -31,7 +31,7 @@
% \fi
%
% \title{^^A
-% The \textsf{l3backend-draw} package\\ Backend drawing support^^A
+% The \pkg{l3backend-draw} package\\ Backend drawing support^^A
% }
%
% \author{^^A
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-11-09}
+% \date{Released 2024-01-04}
%
% \maketitle
%
@@ -141,11 +141,11 @@
}
\cs_new_protected:Npn \@@_backend_rectangle:nnnn #1#2#3#4
{
- \@@_backend_literal:e
- {
- \dim_to_decimal_in_bp:n {#4} ~ \dim_to_decimal_in_bp:n {#3} ~
- \dim_to_decimal_in_bp:n {#1} ~ \dim_to_decimal_in_bp:n {#2} ~
- moveto~dup~0~rlineto~exch~0~exch~rlineto~neg~0~rlineto~closepath
+ \@@_backend_literal:e
+ {
+ \dim_to_decimal_in_bp:n {#4} ~ \dim_to_decimal_in_bp:n {#3} ~
+ \dim_to_decimal_in_bp:n {#1} ~ \dim_to_decimal_in_bp:n {#2} ~
+ moveto~dup~0~rlineto~exch~0~exch~rlineto~neg~0~rlineto~closepath
}
}
\cs_new_protected:Npn \@@_backend_curveto:nnnnnn #1#2#3#4#5#6
@@ -157,7 +157,7 @@
\dim_to_decimal_in_bp:n {#5} ~ \dim_to_decimal_in_bp:n {#6} ~
curveto
}
- }
+ }
% \end{macrocode}
% \end{macro}
% \end{macro}
@@ -451,10 +451,10 @@
\dim_to_decimal_in_bp:n {#5} ~ \dim_to_decimal_in_bp:n {#6} ~
c
}
- }
+ }
\cs_new_protected:Npn \@@_backend_rectangle:nnnn #1#2#3#4
{
- \@@_backend_literal:e
+ \@@_backend_literal:e
{
\dim_to_decimal_in_bp:n {#1} ~ \dim_to_decimal_in_bp:n {#2} ~
\dim_to_decimal_in_bp:n {#3} ~ \dim_to_decimal_in_bp:n {#4} ~
@@ -698,7 +698,7 @@
{ \fp_eval:n { atand ( #3 , #2 ) } }
{ \fp_eval:n { atand ( #4 , #1 ) } }
}
- #5
+ #5
}
\cs_new_protected:Npn \@@_backend_cm_decompose_auxii:nnnnN #1#2#3#4#5
{
@@ -1022,8 +1022,8 @@
{
\__kernel_backend_scope:n
{
- transform =
- " matrix ( #1 , #2 , #3 , #4 , 0pt , 0pt ) "
+ transform =
+ " matrix ( #1 , #2 , #3 , #4 , 0pt , 0pt ) "
}
}
% \end{macrocode}
diff --git a/macros/latex/contrib/l3backend/l3backend-graphics.dtx b/macros/latex/contrib/l3backend/l3backend-graphics.dtx
index ce2e00a405..b1b7e6ea89 100644
--- a/macros/latex/contrib/l3backend/l3backend-graphics.dtx
+++ b/macros/latex/contrib/l3backend/l3backend-graphics.dtx
@@ -2,7 +2,7 @@
%
%% File: l3backend-graphics.dtx
%
-% Copyright (C) 2019-2023 The LaTeX Project
+% Copyright (C) 2019-2024 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -31,7 +31,7 @@
% \fi
%
% \title{^^A
-% The \textsf{l3backend-graphics} package\\ Backend graphics support^^A
+% The \pkg{l3backend-graphics} module\\ Backend graphics support^^A
% }
%
% \author{^^A
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-11-09}
+% \date{Released 2024-01-04}
%
% \maketitle
%
@@ -83,7 +83,7 @@
%<*dvips>
% \end{macrocode}
%
-% \begin{variable}{\l_graphics_search_ext_seq}
+% \begin{variable}[no-user-doc]{\l_graphics_search_ext_seq}
% \begin{macrocode}
\@@_backend_loaded:n
{ \seq_set_from_clist:Nn \l_graphics_search_ext_seq { .eps , .ps } }
@@ -137,7 +137,7 @@
%<*luatex|pdftex>
% \end{macrocode}
%
-% \begin{variable}{\l_graphics_search_ext_seq}
+% \begin{variable}[no-user-doc]{\l_graphics_search_ext_seq}
% \begin{macrocode}
\@@_backend_loaded:n
{
@@ -320,7 +320,7 @@
}
}
{#1}
- }
+ }
\cs_new_eq:NN \@@_backend_getbb_ps:n \@@_backend_getbb_eps:n
\cs_new_protected:Npn \@@_backend_getbb_eps:nn #1#2
{
@@ -376,13 +376,13 @@
%<*dvipdfmx|xetex>
% \end{macrocode}
%
-% \begin{variable}{\l_graphics_search_ext_seq}
+% \begin{variable}[no-user-doc]{\l_graphics_search_ext_seq}
% \begin{macrocode}
\@@_backend_loaded:n
{
\seq_set_from_clist:Nn \l_graphics_search_ext_seq
{ .pdf , .eps , .ps , .png , .jpg , .jpeg , .bmp }
- }
+ }
% \end{macrocode}
% \end{variable}
%
@@ -481,7 +481,7 @@
\tl_if_empty:NF \l_@@_decodearray_str
{ :D \l_@@_decodearray_str }
\bool_if:NT \l_@@_interpolate_bool
- { :I }
+ { :I }
}
{#1} {#2}
}
@@ -686,7 +686,7 @@
%<*dvisvgm>
% \end{macrocode}
%
-% \begin{variable}{\l_graphics_search_ext_seq}
+% \begin{variable}[no-user-doc]{\l_graphics_search_ext_seq}
% \begin{macrocode}
\@@_backend_loaded:n
{
@@ -768,7 +768,7 @@
{ \@@_backend_getbb_svg_auxiv:Nw #2 }
{ \@@_backend_getbb_svg_auxv:Nw #2 }
}
- }
+ }
##2 \s_@@_stop
}
}
@@ -777,7 +777,7 @@
\@@_backend_getbb_svg_auxii:w #3
\tl_to_str:n {#1} = \tl_to_str:n {#1} =
\s_@@_stop
- }
+ }
}
\cs_new_protected:Npn \@@_backend_getbb_svg_auxii:w { }
\cs_new_protected:Npn \@@_backend_getbb_svg_auxiii:Nw #1 ' #2 ' #3 \s_@@_stop
diff --git a/macros/latex/contrib/l3backend/l3backend-header.dtx b/macros/latex/contrib/l3backend/l3backend-header.dtx
index 8fe469e639..a16f8cee31 100644
--- a/macros/latex/contrib/l3backend/l3backend-header.dtx
+++ b/macros/latex/contrib/l3backend/l3backend-header.dtx
@@ -2,7 +2,7 @@
%
%% File: l3backend-header.dtx
%
-% Copyright (C) 2019-2023 The LaTeX Project
+% Copyright (C) 2019-2024 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -31,7 +31,7 @@
% \fi
%
% \title{^^A
-% The \textsf{l3backend-header} package\\ Backend graphics support^^A
+% The \pkg{l3backend-header} module\\ Backend graphics support^^A
% }
%
% \author{^^A
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-11-09}
+% \date{Released 2024-01-04}
%
% \maketitle
%
@@ -59,24 +59,24 @@
%<*dvips&header>
% \end{macrocode}
%
-% \begin{macro}{color.sc}
+% \begin{macro}[no-user-doc]{color.sc}
% Empty definition for color at the top level.
-% \begin{macrocode}
+% \begin{macrocode}
/color.sc { } def
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{TeXcolorseparation, separation}
+% \begin{macro}[int]{TeXcolorseparation, separation}
% Support for separation/spot colors: this strange naming is so
% things work with the color stack.
-% \begin{macrocode}
+% \begin{macrocode}
TeXDict begin
/TeXcolorseparation { setcolor } def
end
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{pdf.globaldict}
+% \begin{macro}[int]{pdf.globaldict}
% A small global dictionary for backend use.
% \begin{macrocode}
true setglobal
@@ -85,7 +85,7 @@ false setglobal
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}
+% \begin{macro}[int]
% {
% pdf.cvs ,
% pdf.dvi.pt ,
@@ -103,7 +103,7 @@ false setglobal
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{pdf.linkmargin, pdf.linkdp.pad, pdf.linkht.pad}
+% \begin{macro}[int]{pdf.linkmargin, pdf.linkdp.pad, pdf.linkht.pad}
% Settings which are defined up-front in |SDict|.
% \begin{macrocode}
/pdf.linkmargin { 1 pdf.pt.dvi } def
@@ -112,7 +112,7 @@ false setglobal
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}
+% \begin{macro}[int]
% {
% pdf.rect ,
% pdf.save.ll ,
@@ -167,7 +167,7 @@ false setglobal
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}
+% \begin{macro}[int]
% {
% pdf.dest.anchor ,
% pdf.dest.x ,
@@ -219,14 +219,14 @@ false setglobal
pdf.dest.y pdf.tmpc mul add
pdf.dev.x add
pdf.dest.x pdf.tmpb mul
- pdf.dest.y pdf.tmpd mul add
- pdf.dev.y add
+ pdf.dest.y pdf.tmpd mul add
+ pdf.dev.y add
}
def
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}
+% \begin{macro}[int]
% {
% pdf.bordertracking ,
% pdf.bordertracking.begin ,
@@ -388,7 +388,7 @@ false setglobal
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}
+% \begin{macro}[int]
% {
% pdf.breaklink ,
% pdf.breaklink.write ,
@@ -409,83 +409,83 @@ false setglobal
{
counttomark /pdf.count exch def
{
- pdf.count 0 eq { exit } if
- counttomark 2 roll
- 1 index /Rect eq
- {
- dup 4 array copy
- dup dup
- 1 get
- pdf.outerbox pdf.rect.ht
- pdf.linkmargin 2 mul add sub
- 3 exch put
- dup
- pdf.outerbox 2 get
- pdf.linkmargin add
- 2 exch put
- dup dup
- 3 get
- pdf.outerbox pdf.rect.ht
- pdf.linkmargin 2 mul add add
- 1 exch put
- /pdf.currentrect exch def
- pdf.breaklink.write
- {
- pdf.currentrect
- dup
- pdf.outerbox 0 get
- pdf.linkmargin sub
- 0 exch put
- dup
- pdf.outerbox 2 get
- pdf.linkmargin add
- 2 exch put
- dup dup
- 1 get
- pdf.baselineskip add
- 1 exch put
- dup dup
- 3 get
- pdf.baselineskip add
- 3 exch put
- /pdf.currentrect exch def
- pdf.breaklink.write
+ pdf.count 0 eq { exit } if
+ counttomark 2 roll
+ 1 index /Rect eq
+ {
+ dup 4 array copy
+ dup dup
+ 1 get
+ pdf.outerbox pdf.rect.ht
+ pdf.linkmargin 2 mul add sub
+ 3 exch put
+ dup
+ pdf.outerbox 2 get
+ pdf.linkmargin add
+ 2 exch put
+ dup dup
+ 3 get
+ pdf.outerbox pdf.rect.ht
+ pdf.linkmargin 2 mul add add
+ 1 exch put
+ /pdf.currentrect exch def
+ pdf.breaklink.write
+ {
+ pdf.currentrect
+ dup
+ pdf.outerbox 0 get
+ pdf.linkmargin sub
+ 0 exch put
+ dup
+ pdf.outerbox 2 get
+ pdf.linkmargin add
+ 2 exch put
+ dup dup
+ 1 get
+ pdf.baselineskip add
+ 1 exch put
+ dup dup
+ 3 get
+ pdf.baselineskip add
+ 3 exch put
+ /pdf.currentrect exch def
+ pdf.breaklink.write
}
1 index 3 get
pdf.linkmargin 2 mul add
pdf.outerbox pdf.rect.ht add
2 index 1 get sub
pdf.baselineskip div round cvi 1 sub
- exch
- repeat
- pdf.currentrect
- dup
- pdf.outerbox 0 get
- pdf.linkmargin sub
- 0 exch put
- dup dup
- 1 get
- pdf.baselineskip add
- 1 exch put
- dup dup
- 3 get
- pdf.baselineskip add
- 3 exch put
- dup 2 index 2 get 2 exch put
- /pdf.currentrect exch def
- pdf.breaklink.write
- SDict /pdf.pdfmark.good false put
- exit
- }
- { pdf.count 2 sub /pdf.count exch def }
- ifelse
- }
- loop
- }
- if
- /ANN
-}
- def
+ exch
+ repeat
+ pdf.currentrect
+ dup
+ pdf.outerbox 0 get
+ pdf.linkmargin sub
+ 0 exch put
+ dup dup
+ 1 get
+ pdf.baselineskip add
+ 1 exch put
+ dup dup
+ 3 get
+ pdf.baselineskip add
+ 3 exch put
+ dup 2 index 2 get 2 exch put
+ /pdf.currentrect exch def
+ pdf.breaklink.write
+ SDict /pdf.pdfmark.good false put
+ exit
+ }
+ { pdf.count 2 sub /pdf.count exch def }
+ ifelse
+ }
+ loop
+ }
+ if
+ /ANN
+ }
+ def
/pdf.breaklink.write
{
counttomark 1 sub
@@ -509,7 +509,7 @@ false setglobal
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}
+% \begin{macro}[int]
% {
% pdf.pdfmark ,
% pdf.pdfmark.good ,
diff --git a/macros/latex/contrib/l3backend/l3backend-opacity.dtx b/macros/latex/contrib/l3backend/l3backend-opacity.dtx
index 440becf760..728b18ca6d 100644
--- a/macros/latex/contrib/l3backend/l3backend-opacity.dtx
+++ b/macros/latex/contrib/l3backend/l3backend-opacity.dtx
@@ -2,7 +2,7 @@
%
%% File: l3backend-opacity.dtx
%
-% Copyright (C) 2021-2023 The LaTeX Project
+% Copyright (C) 2021-2024 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -31,7 +31,7 @@
% \fi
%
% \title{^^A
-% The \textsf{l3backend-opacity} package\\ Backend opacity support^^A
+% The \pkg{l3backend-opacity} module\\ Backend opacity support^^A
% }
%
% \author{^^A
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-11-09}
+% \date{Released 2024-01-04}
%
% \maketitle
%
@@ -169,10 +169,10 @@
% same as color.
% \begin{macrocode}
\cs_new_protected:Npn \@@_backend_select:n #1
- {
- \exp_args:Ne \@@_backend_select_aux:n
- { \fp_eval:n { min(max(0,#1),1) } }
- }
+ {
+ \exp_args:Ne \@@_backend_select_aux:n
+ { \fp_eval:n { min(max(0,#1),1) } }
+ }
\cs_new_protected:Npn \@@_backend_select_aux:n #1
{
\tl_set:Nn \l_@@_backend_fill_tl {#1}
@@ -196,15 +196,15 @@
\cs_gset_protected:Npn \@@_backend_select_aux:n #1 { }
}
\cs_new_protected:Npn \@@_backend_reset:
- {
+ {
%<*dvipdfmx|xetex>
- \__kernel_backend_literal_pdf:n
+ \__kernel_backend_literal_pdf:n
{ /opacity1 ~ gs }
%</dvipdfmx|xetex>
%<*luatex|pdftex>
\__kernel_color_backend_stack_pop:n \c_@@_backend_stack_int
%</luatex|pdftex>
- }
+ }
% \end{macrocode}
% \end{macro}
% \end{macro}
@@ -240,12 +240,12 @@
{ opacity.stroke #1 }
{ << /CA ~ #2 >> }
%<*dvipdfmx|xetex>
- \__kernel_backend_literal_pdf:n
+ \__kernel_backend_literal_pdf:n
%</dvipdfmx|xetex>
%<*luatex|pdftex>
- \__kernel_color_backend_stack_push:nn \c_@@_backend_stack_int
+ \__kernel_color_backend_stack_push:nn \c_@@_backend_stack_int
%</luatex|pdftex>
- { /opacity.fill #1 ~ gs /opacity.stroke #2 ~ gs }
+ { /opacity.fill #1 ~ gs /opacity.stroke #2 ~ gs }
\group_insert_after:N \@@_backend_reset:
}
}
diff --git a/macros/latex/contrib/l3backend/l3backend-pdf.dtx b/macros/latex/contrib/l3backend/l3backend-pdf.dtx
index e787ab7c25..19ab02daaa 100644
--- a/macros/latex/contrib/l3backend/l3backend-pdf.dtx
+++ b/macros/latex/contrib/l3backend/l3backend-pdf.dtx
@@ -2,7 +2,7 @@
%
%% File: l3backend-pdf.dtx
%
-% Copyright (C) 2019-2023 The LaTeX Project
+% Copyright (C) 2019-2024 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -31,7 +31,7 @@
% \fi
%
% \title{^^A
-% The \textsf{l3backend-pdf} package\\ Backend PDF features^^A
+% The \pkg{l3backend-pdf} module\\ Backend PDF features^^A
% }
%
% \author{^^A
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-11-09}
+% \date{Released 2024-01-04}
%
% \maketitle
%
@@ -388,16 +388,6 @@
% \begin{macro}{\@@_backend_link_minima:}
% \begin{macro}{\@@_backend_link_outerbox:n}
% \begin{macro}{\@@_backend_link_sf_save:, \@@_backend_link_sf_restore:}
-% \begin{macro}
-% {
-% pdf.linkdp.pad ,
-% pdf.linkht.pad ,
-% pdf.llx, pdf.lly ,
-% pdf.ury, pdf.ury ,
-% pdf.link.dict ,
-% pdf.outerbox ,
-% pdf.baselineskip
-% }
% Links are crated like annotations but with dedicated code to allow for
% adjusting the size of the rectangle. In contrast to \pkg{hyperref}, we
% grab the link content as a box which can then unbox: this allows the same
@@ -470,9 +460,9 @@
\hbox_set:Nn \l_@@_backend_model_box { Gg }
\exp_args:Ne \@@_backend_link_outerbox:n
{
- \int_if_odd:nTF { \value { page } }
- { \oddsidemargin }
- { \evensidemargin }
+ \int_if_odd:nTF { \value { page } }
+ { \oddsidemargin }
+ { \evensidemargin }
}
\box_move_down:nn { \box_dp:N \l_@@_backend_content_box }
{ \hbox:n { \__kernel_backend_postscript:n { pdf.save.linkll } } }
@@ -569,9 +559,7 @@
% \end{macro}
% \end{macro}
% \end{macro}
-% \end{macro}
%
-% \begin{macro}{\@makecol@hook}
% Hooks to allow link breaking: something will be needed in format mode
% at some stage. At present this code is disabled as there is an open
% question about the name of the hook: to be resolved at the \LaTeXe{}
@@ -605,7 +593,6 @@
}
}
% \end{macrocode}
-% \end{macro}
%
% \begin{macro}{\@@_backend_link_last:}
% The same as annotations, but with a custom integer.
@@ -711,7 +698,7 @@
\__kernel_backend_literal_postscript:n
{
/setdistillerparams ~ where
- { pop << /CompressPages ~ false >> setdistillerparams }
+ { pop << /CompressPages ~ false >> setdistillerparams }
if
}
}
@@ -723,7 +710,7 @@
\__kernel_backend_literal_postscript:n
{
/setdistillerparams ~ where
- { pop << /CompressStreams ~ false >> setdistillerparams }
+ { pop << /CompressStreams ~ false >> setdistillerparams }
if
}
}
@@ -1336,7 +1323,7 @@
% \begin{macro}{\@@_backend_object_last:}
% \begin{macrocode}
\cs_new:Npn \@@_backend_object_last:
- { @pdf.obj \int_use:N \g_@@_backend_object_int }
+ { @pdf.obj \int_use:N \g_@@_backend_object_int }
% \end{macrocode}
% \end{macro}
%
@@ -1379,7 +1366,7 @@
% \begin{macro}{\@@_backend_annotation_last:}
% \begin{macrocode}
\cs_new:Npn \@@_backend_annotation_last:
- { @pdf.obj \int_use:N \g_@@_backend_annotation_int }
+ { @pdf.obj \int_use:N \g_@@_backend_annotation_int }
% \end{macrocode}
% \end{macro}
%
@@ -1405,14 +1392,14 @@
\exp_not:N \int_gincr:N \exp_not:N \g_@@_backend_link_int
\@@_backend:e
{
- bann ~
- @pdf.lnk
- \exp_not:N \int_use:N \exp_not:N \g_@@_backend_link_int
- \c_space_tl
- <<
- /Type /Annot
- #1
- >>
+ bann ~
+ @pdf.lnk
+ \exp_not:N \int_use:N \exp_not:N \g_@@_backend_link_int
+ \c_space_tl
+ <<
+ /Type /Annot
+ #1
+ >>
}
}
\cs_new_protected:Npn \@@_backend_link_end:
diff --git a/macros/latex/contrib/l3backend/l3backend.ins b/macros/latex/contrib/l3backend/l3backend.ins
index 5b8945f012..e24c41d236 100644
--- a/macros/latex/contrib/l3backend/l3backend.ins
+++ b/macros/latex/contrib/l3backend/l3backend.ins
@@ -2,7 +2,7 @@
File l3backend.ins
-Copyright (C) 2019-2023 The LaTeX Project
+Copyright (C) 2019-2024 The LaTeX Project
It may be distributed and/or modified under the conditions of the
LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -35,7 +35,7 @@ license information is placed in the derived files.
\preamble
-Copyright (C) 2019-2023 The LaTeX Project
+Copyright (C) 2019-2024 The LaTeX Project
It may be distributed and/or modified under the conditions of
the LaTeX Project Public License (LPPL), either version 1.3c of
@@ -142,7 +142,7 @@ and all files in that bundle must be distributed together.
\def\MetaPrefix{--}
\preamble
-Copyright (C) 2023 The LaTeX Project
+Copyright (C) 2023,2024 The LaTeX Project
It may be distributed and/or modified under the conditions of
the LaTeX Project Public License (LPPL), either version 1.3c of
diff --git a/macros/latex/contrib/l3experimental/CHANGELOG.md b/macros/latex/contrib/l3experimental/CHANGELOG.md
index d6e3645c59..449a9889a6 100644
--- a/macros/latex/contrib/l3experimental/CHANGELOG.md
+++ b/macros/latex/contrib/l3experimental/CHANGELOG.md
@@ -7,6 +7,15 @@ this project uses date-based 'snapshot' version identifiers.
## [Unreleased]
+## [2024-01-04]
+
+### Changed
+- Apply transformation matrix to drawing shifts
+
+### Fixed
+- Remove a stray scaling in `\draw_path_rectangle:nn` (issue \#1386)
+- Correct baseline calculations in some `l3draw` cases (issue \#1400)
+
## [2023-12-08]
### Added
@@ -293,7 +302,8 @@ this project uses date-based 'snapshot' version identifiers.
- New `l3color` module using `xcolor`-like expression syntax
- New `l3draw` module, based on `pgf` layer of the TikZ system
-[Unreleased]: https://github.com/latex3/latex3/compare/2023-12-08...HEAD
+[Unreleased]: https://github.com/latex3/latex3/compare/2024-01-04...HEAD
+[2024-01-04]: https://github.com/latex3/latex3/compare/2023-12-08...2024-01-04
[2023-12-08]: https://github.com/latex3/latex3/compare/2023-11-01...2023-12-08
[2023-11-01]: https://github.com/latex3/latex3/compare/2023-10-10...2023-11-01
[2023-10-10]: https://github.com/latex3/latex3/compare/2023-05-11...2023-10-10
diff --git a/macros/latex/contrib/l3experimental/README.md b/macros/latex/contrib/l3experimental/README.md
index 52c7d97926..1a4d3a4650 100644
--- a/macros/latex/contrib/l3experimental/README.md
+++ b/macros/latex/contrib/l3experimental/README.md
@@ -1,7 +1,7 @@
Experimental LaTeX3 Concepts
============================
-Release 2023-12-08
+Release 2024-01-04
Overview
--------
@@ -124,6 +124,6 @@ the [LaTeX-L list](#Discussion) should be used.
-----
-<p>Copyright (C) 1998-2004,2008-2012,2014-2023 The LaTeX Project <br />
+<p>Copyright (C) 1998-2004,2008-2012,2014-2024 The LaTeX Project <br />
<a href="http://latex-project.org/">http://latex-project.org/</a> <br />
All rights reserved.</p>
diff --git a/macros/latex/contrib/l3experimental/l3benchmark.dtx b/macros/latex/contrib/l3experimental/l3benchmark.dtx
index bc21191d4b..2eb979c660 100644
--- a/macros/latex/contrib/l3experimental/l3benchmark.dtx
+++ b/macros/latex/contrib/l3experimental/l3benchmark.dtx
@@ -2,7 +2,7 @@
%
%% File: l3benchmark.dtx
%
-% Copyright (C) 2011-2023 The LaTeX Project
+% Copyright (C) 2011-2024 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -46,7 +46,7 @@
% }^^A
% }
%
-% \date{Released 2023-12-08}
+% \date{Released 2024-01-04}
%
% \maketitle
%
@@ -122,7 +122,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{l3benchmark}{2023-12-08}{}
+\ProvidesExplPackage{l3benchmark}{2024-01-04}{}
{L3 Experimental benchmarking}
% \end{macrocode}
%
diff --git a/macros/latex/contrib/l3experimental/l3benchmark.ins b/macros/latex/contrib/l3experimental/l3benchmark.ins
index cfef0f0600..2c4c6908df 100644
--- a/macros/latex/contrib/l3experimental/l3benchmark.ins
+++ b/macros/latex/contrib/l3experimental/l3benchmark.ins
@@ -2,7 +2,7 @@
File: l3benchmark.ins
-Copyright (C) 2011,2018-2023 The LaTeX Project
+Copyright (C) 2011,2018-2024 The LaTeX Project
It may be distributed and/or modified under the conditions of the
LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -34,7 +34,7 @@ license information is placed in the derived files.
\preamble
-Copyright (C) 2018-2023 The LaTeX Project
+Copyright (C) 2018-2024 The LaTeX Project
It may be distributed and/or modified under the conditions of
the LaTeX Project Public License (LPPL), either version 1.3c of
diff --git a/macros/latex/contrib/l3experimental/l3benchmark.pdf b/macros/latex/contrib/l3experimental/l3benchmark.pdf
index 83471b67fd..9da3c2ae15 100644
--- a/macros/latex/contrib/l3experimental/l3benchmark.pdf
+++ b/macros/latex/contrib/l3experimental/l3benchmark.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3experimental/l3draw-boxes.dtx b/macros/latex/contrib/l3experimental/l3draw-boxes.dtx
index b8f68e90a8..8f481aada9 100644
--- a/macros/latex/contrib/l3experimental/l3draw-boxes.dtx
+++ b/macros/latex/contrib/l3experimental/l3draw-boxes.dtx
@@ -2,7 +2,7 @@
%
%% File: l3draw-boxes.dtx
%
-% Copyright (C) 2018-2023 The LaTeX Project
+% Copyright (C) 2018-2024 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2023-12-08}
+% \date{Released 2024-01-04}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3experimental/l3draw-code.pdf b/macros/latex/contrib/l3experimental/l3draw-code.pdf
index c2e80fc340..db5ed76836 100644
--- a/macros/latex/contrib/l3experimental/l3draw-code.pdf
+++ b/macros/latex/contrib/l3experimental/l3draw-code.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3experimental/l3draw-layers.dtx b/macros/latex/contrib/l3experimental/l3draw-layers.dtx
index cf2c2091cb..6e71f93ade 100644
--- a/macros/latex/contrib/l3experimental/l3draw-layers.dtx
+++ b/macros/latex/contrib/l3experimental/l3draw-layers.dtx
@@ -2,7 +2,7 @@
%
%% File: l3draw-layers.dtx
%
-% Copyright (C) 2019-2023 The LaTeX Project
+% Copyright (C) 2019-2024 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2023-12-08}
+% \date{Released 2024-01-04}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3experimental/l3draw-paths.dtx b/macros/latex/contrib/l3experimental/l3draw-paths.dtx
index 53032f4d61..735db2d23e 100644
--- a/macros/latex/contrib/l3experimental/l3draw-paths.dtx
+++ b/macros/latex/contrib/l3experimental/l3draw-paths.dtx
@@ -2,7 +2,7 @@
%
%% File: l3draw-paths.dtx
%
-% Copyright (C) 2018-2023 The LaTeX Project
+% Copyright (C) 2018-2024 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2023-12-08}
+% \date{Released 2024-01-04}
%
% \maketitle
%
@@ -235,9 +235,9 @@
}
\cs_new_protected:Npn \@@_path_moveto:nn #1#2
{
- \@@_path_update_limits:nn {#1} {#2}
- \@@_softpath_moveto:nn {#1} {#2}
- \@@_path_update_last:nn {#1} {#2}
+ \@@_path_update_limits:nn {#1} {#2}
+ \@@_softpath_moveto:nn {#1} {#2}
+ \@@_path_update_last:nn {#1} {#2}
}
\cs_new_protected:Npn \draw_path_lineto:n #1
{
@@ -247,10 +247,10 @@
}
\cs_new_protected:Npn \@@_path_lineto:nn #1#2
{
- \@@_path_mark_corner:
- \@@_path_update_limits:nn {#1} {#2}
- \@@_softpath_lineto:nn {#1} {#2}
- \@@_path_update_last:nn {#1} {#2}
+ \@@_path_mark_corner:
+ \@@_path_update_limits:nn {#1} {#2}
+ \@@_softpath_lineto:nn {#1} {#2}
+ \@@_path_update_last:nn {#1} {#2}
}
\cs_new_protected:Npn \draw_path_curveto:nnn #1#2#3
{
@@ -265,11 +265,11 @@
}
\cs_new_protected:Npn \@@_path_curveto:nnnnnn #1#2#3#4#5#6
{
- \@@_path_update_limits:nn {#1} {#2}
- \@@_path_update_limits:nn {#3} {#4}
- \@@_path_update_limits:nn {#5} {#6}
- \@@_softpath_curveto:nnnnnn {#1} {#2} {#3} {#4} {#5} {#6}
- \@@_path_update_last:nn {#5} {#6}
+ \@@_path_update_limits:nn {#1} {#2}
+ \@@_path_update_limits:nn {#3} {#4}
+ \@@_path_update_limits:nn {#5} {#6}
+ \@@_softpath_curveto:nnnnnn {#1} {#2} {#3} {#4} {#5} {#6}
+ \@@_path_update_last:nn {#5} {#6}
}
% \end{macrocode}
% \end{macro}
@@ -348,32 +348,32 @@
\fp_set:Nn \l_@@_path_tmpb_fp { \c_@@_path_curveto_b_fp * #2 }
\use:e
{
- \@@_path_mark_corner:
- \@@_path_curveto:nnnnnn
- {
- \fp_to_dim:n
- {
- \c_@@_path_curveto_a_fp * \g_@@_path_lastx_dim
- + \l_@@_path_tmpa_fp
- }
- }
- {
- \fp_to_dim:n
- {
- \c_@@_path_curveto_a_fp * \g_@@_path_lasty_dim
- + \l_@@_path_tmpb_fp
- }
- }
- {
- \fp_to_dim:n
- { \c_@@_path_curveto_a_fp * #3 + \l_@@_path_tmpa_fp }
- }
- {
- \fp_to_dim:n
- { \c_@@_path_curveto_a_fp * #4 + \l_@@_path_tmpb_fp }
- }
- {#3}
- {#4}
+ \@@_path_mark_corner:
+ \@@_path_curveto:nnnnnn
+ {
+ \fp_to_dim:n
+ {
+ \c_@@_path_curveto_a_fp * \g_@@_path_lastx_dim
+ + \l_@@_path_tmpa_fp
+ }
+ }
+ {
+ \fp_to_dim:n
+ {
+ \c_@@_path_curveto_a_fp * \g_@@_path_lasty_dim
+ + \l_@@_path_tmpb_fp
+ }
+ }
+ {
+ \fp_to_dim:n
+ { \c_@@_path_curveto_a_fp * #3 + \l_@@_path_tmpa_fp }
+ }
+ {
+ \fp_to_dim:n
+ { \c_@@_path_curveto_a_fp * #4 + \l_@@_path_tmpb_fp }
+ }
+ {#3}
+ {#4}
}
}
\fp_const:Nn \c_@@_path_curveto_a_fp { 1 / 3 }
@@ -390,8 +390,8 @@
% \begin{macro}
% {
% \@@_path_arc_auxi:nnnnNnn,
-% \@@_path_arc_auxi:fnnnNnn,
-% \@@_path_arc_auxi:fnfnNnn
+% \@@_path_arc_auxi:enenNnn,
+% \@@_path_arc_auxi:eennNnn
% }
% \begin{macro}{\@@_path_arc_auxii:nnnNnnnn}
% \begin{macro}{\@@_path_arc_auxiii:nn}
@@ -416,7 +416,7 @@
{ \fp_eval:n {#2} }
{ \fp_to_dim:n {#3} }
{ \fp_to_dim:n {#4} }
- }
+ }
}
\cs_new_protected:Npn \@@_path_arc:nnnn #1#2#3#4
{
@@ -432,14 +432,14 @@
{
\fp_compare:nNnTF \l_@@_path_arc_delta_fp > { 115 }
{
- \@@_path_arc_auxi:ffnnNnn
+ \@@_path_arc_auxi:eennNnn
{ \fp_to_decimal:N \l_@@_path_arc_start_fp }
{ \fp_eval:n { \l_@@_path_arc_start_fp #3 90 } }
{ 90 } {#2}
#3 {#4} {#5}
}
{
- \@@_path_arc_auxi:ffnnNnn
+ \@@_path_arc_auxi:eennNnn
{ \fp_to_decimal:N \l_@@_path_arc_start_fp }
{ \fp_eval:n { \l_@@_path_arc_start_fp #3 60 } }
{ 60 } {#2}
@@ -447,7 +447,7 @@
}
}
\@@_path_mark_corner:
- \@@_path_arc_auxi:fnfnNnn
+ \@@_path_arc_auxi:enenNnn
{ \fp_to_decimal:N \l_@@_path_arc_start_fp }
{#2}
{ \fp_eval:n { abs( \l_@@_path_arc_start_fp - #2 ) } }
@@ -488,10 +488,10 @@
}
}
}
-\cs_generate_variant:Nn \@@_path_arc_auxi:nnnnNnn { fnf , ff }
+\cs_generate_variant:Nn \@@_path_arc_auxi:nnnnNnn { ene , ee }
% \end{macrocode}
% We can now calculate the required points. As everything here is
-% non-expandable, that is best done by using \texttt{x}-type expansion
+% non-expandable, that is best done by using \texttt{e}-type expansion
% to build up the tokens. The three points are calculated out-of-order,
% since finding the second control point needs the position of the end
% point. Once the points are found, fire-off the fundamental path
@@ -708,7 +708,7 @@
{ \@@_path_rectangle_rounded:nnnn }
{ \@@_path_rectangle:nnnn }
}
- { \draw_point_transform:n {#1} }
+ {#1}
{#2}
}
\cs_new_protected:Npn \@@_path_rectangle:nnnn #1#2#3#4
@@ -752,12 +752,12 @@
% \begin{macro}{\draw_path_grid:nnnn}
% \begin{macro}
% {
-% \@@_path_grid_auxi:nnnnnn, \@@_path_grid_auxi:ffnnnn,
+% \@@_path_grid_auxi:nnnnnn, \@@_path_grid_auxi:eennnn,
% \@@_path_grid_auxii:nnnnnn,
-% \@@_path_grid_auxiii:nnnnnn, \@@_path_grid_auxiiii:ffnnnn
+% \@@_path_grid_auxiii:nnnnnn, \@@_path_grid_auxiiii:eennnn
% }
% \begin{macro}
-% {\@@_path_grid_auxiv:nnnnnnnn, \@@_path_grid_auxiv:ffnnnnnn}
+% {\@@_path_grid_auxiv:nnnnnnnn, \@@_path_grid_auxiv:eennnnnn}
% The main complexity here is lining up the grid correctly.
% To keep it simple, we tidy up the argument ordering first.
% \begin{macrocode}
@@ -765,7 +765,7 @@
{
\@@_point_process:nnn
{
- \@@_path_grid_auxi:ffnnnn
+ \@@_path_grid_auxi:eennnn
{ \dim_eval:n { \dim_abs:n {#1} } }
{ \dim_eval:n { \dim_abs:n {#2} } }
}
@@ -777,7 +777,7 @@
{ \@@_path_grid_auxii:nnnnnn {#1} {#2} {#5} {#4} {#3} {#6} }
{ \@@_path_grid_auxii:nnnnnn {#1} {#2} {#3} {#4} {#5} {#6} }
}
-\cs_generate_variant:Nn \@@_path_grid_auxi:nnnnnn { ff }
+\cs_generate_variant:Nn \@@_path_grid_auxi:nnnnnn { ee }
\cs_new_protected:Npn \@@_path_grid_auxii:nnnnnn #1#2#3#4#5#6
{
\dim_compare:nNnTF {#4} > {#6}
@@ -786,7 +786,7 @@
}
\cs_new_protected:Npn \@@_path_grid_auxiii:nnnnnn #1#2#3#4#5#6
{
- \@@_path_grid_auxiv:ffnnnnnn
+ \@@_path_grid_auxiv:eennnnnn
{ \fp_to_dim:n { #1 * trunc(#3/(#1)) } }
{ \fp_to_dim:n { #2 * trunc(#4/(#2)) } }
{#1} {#2} {#3} {#4} {#5} {#6}
@@ -810,7 +810,7 @@
\draw_path_lineto:n { #7 , ##1 }
}
}
-\cs_generate_variant:Nn \@@_path_grid_auxiv:nnnnnnnn { ff }
+\cs_generate_variant:Nn \@@_path_grid_auxiv:nnnnnnnn { ee }
% \end{macrocode}
% \end{macro}
% \end{macro}
@@ -864,7 +864,7 @@
\@@_path_reset_limits:
}
{ \@@_path_use:n { #1 , clear } }
- }
+ }
% \end{macrocode}
% Map over the actions and set up the data: mainly just booleans,
% but with the possibility to cover more complex cases. The business end
diff --git a/macros/latex/contrib/l3experimental/l3draw-points.dtx b/macros/latex/contrib/l3experimental/l3draw-points.dtx
index f722873237..19e69d4b38 100644
--- a/macros/latex/contrib/l3experimental/l3draw-points.dtx
+++ b/macros/latex/contrib/l3experimental/l3draw-points.dtx
@@ -2,7 +2,7 @@
%
%% File: l3draw-points.dtx
%
-% Copyright (C) 2018-2023 The LaTeX Project
+% Copyright (C) 2018-2024 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2023-12-08}
+% \date{Released 2024-01-04}
%
% \maketitle
%
@@ -70,10 +70,10 @@
% \item \cs{pgfpointadd}, \cs{pgfpointdiff},
% \cs{pgfpointscale}: Can be given explicitly.
% \item \cs{pgfextractx}, \cs{pgfextracty}: Available by applying
-% \cs{use_i:nn}/\cs{use_ii:nn} or similar to the \texttt{x}-type
+% \cs{use_i:nn}/\cs{use_ii:nn} or similar to the \texttt{e}-type
% expansion of a point expression.
% \item \cs{pgfgetlastxy}: Unused in the entire \pkg{pgf} core, may be
-% emulated by \texttt{x}-type expansion of a point expression, then using
+% emulated by \texttt{e}-type expansion of a point expression, then using
% the result.
% \end{itemize}
% In addition, equivalents of the following \emph{may} be added in future but
@@ -93,16 +93,18 @@
% \subsection{Support functions}
%
% \begin{macro}[EXP]{\@@_point_process:nn}
-% \begin{macro}[EXP]{\@@_point_process_auxi:nn}
+% \begin{macro}[EXP]{\@@_point_process_auxi:nn, \@@_point_process_auxi:en}
% \begin{macro}[EXP]{\@@_point_process_auxii:nw}
% \begin{macro}[EXP]{\@@_point_process:nnn}
-% \begin{macro}[EXP]{\@@_point_process_auxiii:nnn}
+% \begin{macro}[EXP]{\@@_point_process_auxiii:nnn, \@@_point_process_auxiii:een}
% \begin{macro}[EXP]{\@@_point_process_auxiv:nw}
% \begin{macro}[EXP]{\@@_point_process:nnnn}
-% \begin{macro}[EXP]{\@@_point_process_auxv:nnnn}
+% \begin{macro}[EXP]
+% {\@@_point_process_auxv:nnnn, \@@_point_process_auxv:eeen}
% \begin{macro}[EXP]{\@@_point_process_auxvi:nw}
% \begin{macro}[EXP]{\@@_point_process:nnnnn}
-% \begin{macro}[EXP]{\@@_point_process_auxvii:nnnnn}
+% \begin{macro}[EXP]
+% {\@@_point_process_auxvii:nnnnn, \@@_point_process_auxvii:eeeen}
% \begin{macro}[EXP]{\@@_point_process_auxviii:nw}
% Execute whatever code is passed to extract the $x$ and $y$ co-ordinates.
% The first argument here should itself absorb two arguments. There is
@@ -111,28 +113,30 @@
% \begin{macrocode}
\cs_new:Npn \@@_point_process:nn #1#2
{
- \exp_args:Nf \@@_point_process_auxi:nn
+ \@@_point_process_auxi:en
{ \draw_point:n {#2} }
{#1}
}
\cs_new:Npn \@@_point_process_auxi:nn #1#2
{ \@@_point_process_auxii:nw {#2} #1 \s_@@_stop }
+\cs_generate_variant:Nn \@@_point_process_auxi:nn { e }
\cs_new:Npn \@@_point_process_auxii:nw #1 #2 , #3 \s_@@_stop
{ #1 {#2} {#3} }
\cs_new:Npn \@@_point_process:nnn #1#2#3
{
- \exp_args:Nff \@@_point_process_auxiii:nnn
+ \@@_point_process_auxiii:een
{ \draw_point:n {#2} }
{ \draw_point:n {#3} }
{#1}
}
\cs_new:Npn \@@_point_process_auxiii:nnn #1#2#3
{ \@@_point_process_auxiv:nw {#3} #1 \s_@@_mark #2 \s_@@_stop }
+\cs_generate_variant:Nn \@@_point_process_auxiii:nnn { ee }
\cs_new:Npn \@@_point_process_auxiv:nw #1 #2 , #3 \s_@@_mark #4 , #5 \s_@@_stop
{ #1 {#2} {#3} {#4} {#5} }
\cs_new:Npn \@@_point_process:nnnn #1#2#3#4
{
- \exp_args:Nfff \@@_point_process_auxv:nnnn
+ \@@_point_process_auxv:eeen
{ \draw_point:n {#2} }
{ \draw_point:n {#3} }
{ \draw_point:n {#4} }
@@ -140,12 +144,13 @@
}
\cs_new:Npn \@@_point_process_auxv:nnnn #1#2#3#4
{ \@@_point_process_auxvi:nw {#4} #1 \s_@@_mark #2 \s_@@_mark #3 \s_@@_stop }
+\cs_generate_variant:Nn \@@_point_process_auxv:nnnn { eee }
\cs_new:Npn \@@_point_process_auxvi:nw
#1 #2 , #3 \s_@@_mark #4 , #5 \s_@@_mark #6 , #7 \s_@@_stop
{ #1 {#2} {#3} {#4} {#5} {#6} {#7} }
\cs_new:Npn \@@_point_process:nnnnn #1#2#3#4#5
{
- \exp_args:Nffff \@@_point_process_auxvii:nnnnn
+ \@@_point_process_auxvii:eeeen
{ \draw_point:n {#2} }
{ \draw_point:n {#3} }
{ \draw_point:n {#4} }
@@ -157,6 +162,7 @@
\@@_point_process_auxviii:nw
{#5} #1 \s_@@_mark #2 \s_@@_mark #3 \s_@@_mark #4 \s_@@_stop
}
+\cs_generate_variant:Nn \@@_point_process_auxvii:nnnnn { eeee }
\cs_new:Npn \@@_point_process_auxviii:nw
#1 #2 , #3 \s_@@_mark #4 , #5 \s_@@_mark #6 , #7 \s_@@_mark #8 , #9 \s_@@_stop
{ #1 {#2} {#3} {#4} {#5} {#6} {#7} {#8} {#9} }
@@ -177,15 +183,15 @@
% \subsection{Basic points}
%
% \begin{macro}[EXP]{\draw_point:n}
-% \begin{macro}[EXP]{\@@_point_to_dim:n, \@@_point_to_dim:f}
+% \begin{macro}[EXP]{\@@_point_to_dim:n, \@@_point_to_dim:e}
% \begin{macro}[EXP]{\@@_point_to_dim:w}
% Co-ordinates are always returned as two dimensions.
% \begin{macrocode}
\cs_new:Npn \draw_point:n #1
- { \@@_point_to_dim:f { \fp_eval:n {#1} } }
+ { \@@_point_to_dim:e { \fp_eval:n {#1} } }
\cs_new:Npn \@@_point_to_dim:n #1
{ \@@_point_to_dim:w #1 }
-\cs_generate_variant:Nn \@@_point_to_dim:n { f }
+\cs_generate_variant:Nn \@@_point_to_dim:n { e }
\cs_new:Npn \@@_point_to_dim:w ( #1 , ~ #2 ) { #1pt , #2pt }
% \end{macrocode}
% \end{macro}
@@ -195,7 +201,7 @@
%
% \begin{macro}[EXP]{\draw_point_polar:nn}
% \begin{macro}[EXP]{\draw_point_polar:nnn}
-% \begin{macro}[EXP]{\@@_draw_polar:nnn, \@@_draw_polar:fnn}
+% \begin{macro}[EXP]{\@@_draw_polar:nnn, \@@_draw_polar:enn}
% Polar co-ordinates may have either one or two lengths, so there is a need
% to do a simple split before the calculation. As the angle gets used twice,
% save on any expression evaluation there and force expansion.
@@ -203,10 +209,10 @@
\cs_new:Npn \draw_point_polar:nn #1#2
{ \draw_point_polar:nnn {#1} {#1} {#2} }
\cs_new:Npn \draw_point_polar:nnn #1#2#3
- { \@@_draw_polar:fnn { \fp_eval:n {#3} } {#1} {#2} }
+ { \@@_draw_polar:enn { \fp_eval:n {#3} } {#1} {#2} }
\cs_new:Npn \@@_draw_polar:nnn #1#2#3
{ \draw_point:n { cosd(#1) * (#2) , sind(#1) * (#3) } }
-\cs_generate_variant:Nn \@@_draw_polar:nnn { f }
+\cs_generate_variant:Nn \@@_draw_polar:nnn { e }
% \end{macrocode}
% \end{macro}
% \end{macro}
@@ -218,7 +224,7 @@
%
% \begin{macro}[EXP]{\draw_point_unit_vector:n}
% \begin{macro}[EXP]{\@@_point_unit_vector:nn}
-% \begin{macro}[EXP]{\@@_point_unit_vector:nnn}
+% \begin{macro}[EXP]{\@@_point_unit_vector:nnn, \@@_point_unit_vector:enn}
% The outcome is the normalised vector from $(0,0)$ in the direction of
% the point, \emph{i.e.}
% \[
@@ -232,7 +238,7 @@
{ \@@_point_process:nn { \@@_point_unit_vector:nn } {#1} }
\cs_new:Npn \@@_point_unit_vector:nn #1#2
{
- \exp_args:Nf \@@_point_unit_vector:nnn
+ \@@_point_unit_vector:nnn
{ \fp_eval:n { (sqrt(#1 * #1 + #2 * #2)) } }
{#1} {#2}
}
@@ -245,6 +251,7 @@
{ ( #2 , #3 ) / #1 }
}
}
+\cs_generate_variant:Nn \@@_point_unit_vector:nnn { e }
% \end{macrocode}
% \end{macro}
% \end{macro}
@@ -256,7 +263,7 @@
% \begin{macro}[EXP]{\@@_point_intersect_lines:nnnnnn}
% \begin{macro}[EXP]{\@@_point_intersect_lines:nnnnnnnn}
% \begin{macro}[EXP]
-% {\@@_point_intersect_lines_aux:nnnnnn, \@@_point_intersect_lines_aux:ffffff}
+% {\@@_point_intersect_lines_aux:nnnnnn, \@@_point_intersect_lines_aux:eeeeee}
% The intersection point~$P$ between a line joining points $(x_{1}, y_{1})$
% and $(x_{2}, y_{2})$ with a second line joining points $(x_{3}, y_{3})$
% and $(x_{4}, y_{4})$ can be calculated using the formulae
@@ -300,7 +307,7 @@
% \begin{macrocode}
\cs_new:Npn \@@_point_intersect_lines:nnnnnnnn #1#2#3#4#5#6#7#8
{
- \@@_point_intersect_lines_aux:ffffff
+ \@@_point_intersect_lines_aux:eeeeee
{ \fp_eval:n { #1 * #4 - #2 * #3 } }
{ \fp_eval:n { #5 * #8 - #6 * #7 } }
{ \fp_eval:n { #1 - #3 } }
@@ -316,7 +323,7 @@
/ ( #4 * #5 - #6 * #3 )
}
}
-\cs_generate_variant:Nn \@@_point_intersect_lines_aux:nnnnnn { ffffff }
+\cs_generate_variant:Nn \@@_point_intersect_lines_aux:nnnnnn { eeeeee }
% \end{macrocode}
% \end{macro}
% \end{macro}
@@ -328,29 +335,29 @@
% \begin{macro}[EXP]
% {
% \@@_point_intersect_circles_auxii:nnnnnnn,
-% \@@_point_intersect_circles_auxii:ffnnnnn,
+% \@@_point_intersect_circles_auxii:eennnnn,
% \@@_point_intersect_circles_auxiii:nnnnnnn,
-% \@@_point_intersect_circles_auxiii:ffnnnnn
+% \@@_point_intersect_circles_auxiii:eennnnn
% }
% \begin{macro}[EXP]
% {
% \@@_point_intersect_circles_auxiv:nnnnnnnn,
-% \@@_point_intersect_circles_auxiv:fnnnnnnn
+% \@@_point_intersect_circles_auxiv:ennnnnnn
% }
% \begin{macro}[EXP]
% {
% \@@_point_intersect_circles_auxv:nnnnnnnnn,
-% \@@_point_intersect_circles_auxv:ffnnnnnnn
+% \@@_point_intersect_circles_auxv:eennnnnnn
% }
% \begin{macro}[EXP]
% {
% \@@_point_intersect_circles_auxvi:nnnnnnnn,
-% \@@_point_intersect_circles_auxvi:fnnnnnnn
+% \@@_point_intersect_circles_auxvi:ennnnnnn
% }
% \begin{macro}[EXP]
% {
% \@@_point_intersect_circles_auxvii:nnnnnnn,
-% \@@_point_intersect_circles_auxvii:fffnnnn
+% \@@_point_intersect_circles_auxvii:eeennnn
% }
% Another long expansion chain to get the values in the right places.
% We have two circles, the first with center $(a, b)$ and radius~$r$,
@@ -383,7 +390,7 @@
}
\cs_new:Npn \@@_point_intersect_circles_auxi:nnnnnnn #1#2#3#4#5#6#7
{
- \@@_point_intersect_circles_auxii:ffnnnnn
+ \@@_point_intersect_circles_auxii:eennnnn
{ \fp_eval:n {#1} } { \fp_eval:n {#2} } {#4} {#5} {#6} {#7} {#3}
}
% \end{macrocode}
@@ -403,19 +410,19 @@
% \begin{macrocode}
\cs_new:Npn \@@_point_intersect_circles_auxii:nnnnnnn #1#2#3#4#5#6#7
{
- \@@_point_intersect_circles_auxiii:ffnnnnn
+ \@@_point_intersect_circles_auxiii:eennnnn
{ \fp_eval:n { #5 - #3 } }
{ \fp_eval:n { #6 - #4 } }
{#1} {#2} {#3} {#4} {#7}
}
-\cs_generate_variant:Nn \@@_point_intersect_circles_auxii:nnnnnnn { ff }
+\cs_generate_variant:Nn \@@_point_intersect_circles_auxii:nnnnnnn { ee }
\cs_new:Npn \@@_point_intersect_circles_auxiii:nnnnnnn #1#2#3#4#5#6#7
{
- \@@_point_intersect_circles_auxiv:fnnnnnnn
+ \@@_point_intersect_circles_auxiv:ennnnnnn
{ \fp_eval:n { sqrt( #1 * #1 + #2 * #2 ) } }
{#1} {#2} {#3} {#4} {#5} {#6} {#7}
}
-\cs_generate_variant:Nn \@@_point_intersect_circles_auxiii:nnnnnnn { ff }
+\cs_generate_variant:Nn \@@_point_intersect_circles_auxiii:nnnnnnn { ee }
% \end{macrocode}
% We now have $p$: we pre-calculate $1/p$ as it is needed a few times and
% is relatively expensive. We also need $r^{2}$ twice so deal with that
@@ -423,19 +430,19 @@
% \begin{macrocode}
\cs_new:Npn \@@_point_intersect_circles_auxiv:nnnnnnnn #1#2#3#4#5#6#7#8
{
- \@@_point_intersect_circles_auxv:ffnnnnnnn
+ \@@_point_intersect_circles_auxv:eennnnnnn
{ \fp_eval:n { 1 / #1 } }
{ \fp_eval:n { #4 * #4 } }
{#1} {#2} {#3} {#5} {#6} {#7} {#8}
}
-\cs_generate_variant:Nn \@@_point_intersect_circles_auxiv:nnnnnnnn { f }
+\cs_generate_variant:Nn \@@_point_intersect_circles_auxiv:nnnnnnnn { e }
\cs_new:Npn \@@_point_intersect_circles_auxv:nnnnnnnnn #1#2#3#4#5#6#7#8#9
{
- \@@_point_intersect_circles_auxvi:fnnnnnnn
+ \@@_point_intersect_circles_auxvi:ennnnnnn
{ \fp_eval:n { 0.5 * #1 * ( #2 + #3 * #3 - #6 * #6 ) } }
{#1} {#2} {#4} {#5} {#7} {#8} {#9}
}
-\cs_generate_variant:Nn \@@_point_intersect_circles_auxv:nnnnnnnnn { ff }
+\cs_generate_variant:Nn \@@_point_intersect_circles_auxv:nnnnnnnnn { ee }
% \end{macrocode}
% We now have all of the intermediate values we require, with one division
% carried out up-front to avoid doing this expensive step twice:
@@ -455,19 +462,19 @@
% \begin{macrocode}
\cs_new:Npn \@@_point_intersect_circles_auxvi:nnnnnnnn #1#2#3#4#5#6#7#8
{
- \@@_point_intersect_circles_auxvii:fffnnnn
+ \@@_point_intersect_circles_auxvii:eeennnn
{ \fp_eval:n { #1 * #2 } }
{ \int_if_odd:nTF {#8} { 1 } { -1 } }
{ \fp_eval:n { sqrt ( #3 - #1 * #1 ) * #2 } }
{#4} {#5} {#6} {#7}
}
-\cs_generate_variant:Nn \@@_point_intersect_circles_auxvi:nnnnnnnn { f }
+\cs_generate_variant:Nn \@@_point_intersect_circles_auxvi:nnnnnnnn { e }
\cs_new:Npn \@@_point_intersect_circles_auxvii:nnnnnnn #1#2#3#4#5#6#7
{
\draw_point:n
{ #6 + #4 * #1 + #2 * #3 * #5 , #7 + #5 * #1 + -1 * #2 * #3 * #4 }
}
-\cs_generate_variant:Nn \@@_point_intersect_circles_auxvii:nnnnnnn { fff }
+\cs_generate_variant:Nn \@@_point_intersect_circles_auxvii:nnnnnnn { eee }
% \end{macrocode}
% \end{macro}
% \end{macro}
@@ -482,19 +489,19 @@
% \begin{macro}[EXP]
% {
% \@@_point_intersect_line_circle_auxii:nnnnnnnn,
-% \@@_point_intersect_line_circle_auxii:fnnnnnnn,
+% \@@_point_intersect_line_circle_auxii:ennnnnnn,
% \@@_point_intersect_line_circle_auxiii:nnnnnnnn,
-% \@@_point_intersect_line_circle_auxiii:fffnnnnn
+% \@@_point_intersect_line_circle_auxiii:eeennnnn
% }
% \begin{macro}[EXP]
% {
% \@@_point_intersect_line_circle_auxiv:nnnnnnnn,
-% \@@_point_intersect_line_circle_auxiv:ffnnnnnn
+% \@@_point_intersect_line_circle_auxiv:eennnnnn
% }
% \begin{macro}[EXP]
% {
% \@@_point_intersect_line_circle_auxv:nnnnn,
-% \@@_point_intersect_line_circle_auxv:fnnnn
+% \@@_point_intersect_line_circle_auxv:ennnn
% }
% The intersection points~$P_{1}$ and~$P_{2}$ between
% a line joining points $(x_{1}, y_{1})$ and $(x_{2}, y_{2})$
@@ -531,7 +538,7 @@
}
\cs_new:Npn \@@_point_intersect_line_circle_auxi:nnnnnnnn #1#2#3#4#5#6#7#8
{
- \@@_point_intersect_line_circle_auxii:fnnnnnnn
+ \@@_point_intersect_line_circle_auxii:ennnnnnn
{ \fp_eval:n {#1} } {#3} {#4} {#5} {#6} {#7} {#8} {#2}
}
% \end{macrocode}
@@ -552,24 +559,24 @@
% \begin{macrocode}
\cs_new:Npn \@@_point_intersect_line_circle_auxii:nnnnnnnn #1#2#3#4#5#6#7#8
{
- \@@_point_intersect_line_circle_auxiii:fffnnnnn
+ \@@_point_intersect_line_circle_auxiii:eeennnnn
{ \fp_eval:n { (#4-#2)*(#4-#2)+(#5-#3)*(#5-#3) } }
{ \fp_eval:n { 2*((#4-#2)*(#2-#6)+(#5-#3)*(#3-#7)) } }
{ \fp_eval:n { (#6*#6+#7*#7)+(#2*#2+#3*#3)-(2*(#6*#2+#7*#3))-(#1*#1) } }
{#2} {#3} {#4} {#5} {#8}
}
-\cs_generate_variant:Nn \@@_point_intersect_line_circle_auxii:nnnnnnnn { f }
+\cs_generate_variant:Nn \@@_point_intersect_line_circle_auxii:nnnnnnnn { e }
% \end{macrocode}
% then we can get $d = b^{2} - 4\times a \times c$ and the usage of $n$.
% \begin{macrocode}
\cs_new:Npn \@@_point_intersect_line_circle_auxiii:nnnnnnnn #1#2#3#4#5#6#7#8
{
- \@@_point_intersect_line_circle_auxiv:ffnnnnnn
+ \@@_point_intersect_line_circle_auxiv:eennnnnn
{ \fp_eval:n { #2 * #2 - 4 * #1 * #3 } }
{ \int_if_odd:nTF {#8} { 1 } { -1 } }
{#1} {#2} {#4} {#5} {#6} {#7}
}
-\cs_generate_variant:Nn \@@_point_intersect_line_circle_auxiii:nnnnnnnn { fff }
+\cs_generate_variant:Nn \@@_point_intersect_line_circle_auxiii:nnnnnnnn { eee }
% \end{macrocode}
% We now have all of the intermediate values we require, with one division
% carried out up-front to avoid doing this expensive step twice:
@@ -590,17 +597,17 @@
% \begin{macrocode}
\cs_new:Npn \@@_point_intersect_line_circle_auxiv:nnnnnnnn #1#2#3#4#5#6#7#8
{
- \@@_point_intersect_line_circle_auxv:fnnnn
+ \@@_point_intersect_line_circle_auxv:ennnn
{ \fp_eval:n { (-1 * #4 + #2 * sqrt(#1)) / (2 * #3) } }
{#5} {#6} {#7} {#8}
}
-\cs_generate_variant:Nn \@@_point_intersect_line_circle_auxiv:nnnnnnnn { ff }
+\cs_generate_variant:Nn \@@_point_intersect_line_circle_auxiv:nnnnnnnn { ee }
\cs_new:Npn \@@_point_intersect_line_circle_auxv:nnnnn #1#2#3#4#5
{
\draw_point:n
{ #2 + #1 * (#4 - #2), #3 + #1 * (#5 - #3) }
}
-\cs_generate_variant:Nn \@@_point_intersect_line_circle_auxv:nnnnn { f }
+\cs_generate_variant:Nn \@@_point_intersect_line_circle_auxv:nnnnn { e }
% \end{macrocode}
% \end{macro}
% \end{macro}
@@ -614,30 +621,30 @@
% \begin{macro}[EXP]
% {
% \@@_point_interpolate_line_aux:nnnnn,
-% \@@_point_interpolate_line_aux:fnnnn,
+% \@@_point_interpolate_line_aux:ennnn,
% }
% \begin{macro}[EXP]
% {
% \@@_point_interpolate_line_aux:nnnnnn,
-% \@@_point_interpolate_line_aux:fnnnnn,
+% \@@_point_interpolate_line_aux:ennnnn,
% }
% Simple maths after expansion.
% \begin{macrocode}
\cs_new:Npn \draw_point_interpolate_line:nnn #1#2#3
{
\@@_point_process:nnn
- { \@@_point_interpolate_line_aux:fnnnn { \fp_eval:n {#1} } }
+ { \@@_point_interpolate_line_aux:ennnn { \fp_eval:n {#1} } }
{#2} {#3}
}
\cs_new:Npn \@@_point_interpolate_line_aux:nnnnn #1#2#3#4#5
{
- \@@_point_interpolate_line_aux:fnnnnn { \fp_eval:n { 1 - #1 } }
+ \@@_point_interpolate_line_aux:ennnnn { \fp_eval:n { 1 - #1 } }
{#1} {#2} {#3} {#4} {#5}
}
-\cs_generate_variant:Nn \@@_point_interpolate_line_aux:nnnnn { f }
+\cs_generate_variant:Nn \@@_point_interpolate_line_aux:nnnnn { e }
\cs_new:Npn \@@_point_interpolate_line_aux:nnnnnn #1#2#3#4#5#6
{ \draw_point:n { #2 * #3 + #1 * #5 , #2 * #4 + #1 * #6 } }
-\cs_generate_variant:Nn \@@_point_interpolate_line_aux:nnnnnn { f }
+\cs_generate_variant:Nn \@@_point_interpolate_line_aux:nnnnnn { e }
% \end{macrocode}
% \end{macro}
% \end{macro}
@@ -648,7 +655,7 @@
% \begin{macro}[EXP]
% {
% \@@_point_interpolate_distance:nnnnnn,
-% \@@_point_interpolate_distance:fnnnnn,
+% \@@_point_interpolate_distance:ennnnn,
% }
% Same idea but using the normalised length to obtain the scale factor.
% The start point is needed twice, so we force evaluation, but the end
@@ -664,14 +671,14 @@
{
\@@_point_process:nn
{
- \@@_point_interpolate_distance:fnnnn
+ \@@_point_interpolate_distance:ennnn
{ \fp_eval:n {#1} } {#3} {#4}
}
{ \draw_point_unit_vector:n { ( #2 ) - ( #3 , #4 ) } }
}
\cs_new:Npn \@@_point_interpolate_distance:nnnnn #1#2#3#4#5
{ \draw_point:n { #2 + #1 * #4 , #3 + #1 * #5 } }
-\cs_generate_variant:Nn \@@_point_interpolate_distance:nnnnn { f }
+\cs_generate_variant:Nn \@@_point_interpolate_distance:nnnnn { e }
% \end{macrocode}
% \end{macro}
% \end{macro}
@@ -683,17 +690,17 @@
% \begin{macro}[EXP]
% {
% \@@_point_interpolate_arcaxes_auxii:nnnnnnnnn,
-% \@@_point_interpolate_arcaxes_auxii:fnnnnnnnn
+% \@@_point_interpolate_arcaxes_auxii:ennnnnnnn
% }
% \begin{macro}[EXP]
% {
% \@@_point_interpolate_arcaxes_auxiii:nnnnnnn,
-% \@@_point_interpolate_arcaxes_auxiii:fnnnnnn
+% \@@_point_interpolate_arcaxes_auxiii:ennnnnn
% }
% \begin{macro}[EXP]
% {
% \@@_point_interpolate_arcaxes_auxiv:nnnnnnnn,
-% \@@_point_interpolate_arcaxes_auxiv:ffnnnnnn
+% \@@_point_interpolate_arcaxes_auxiv:eennnnnn
% }
% Finding a point on an ellipse arc is relatively easy: find the correct
% angle between the two given, use the sine and cosine of that angle,
@@ -708,7 +715,7 @@
}
\cs_new:Npn \@@_point_interpolate_arcaxes_auxi:nnnnnnnnn #1#2#3#4#5#6#7#8#9
{
- \@@_point_interpolate_arcaxes_auxii:fnnnnnnnn
+ \@@_point_interpolate_arcaxes_auxii:ennnnnnnn
{ \fp_eval:n {#1} } {#2} {#3} {#4} {#5} {#6} {#7} {#8} {#9}
}
% \end{macrocode}
@@ -730,25 +737,25 @@
% \begin{macrocode}
\cs_new:Npn \@@_point_interpolate_arcaxes_auxii:nnnnnnnnn #1#2#3#4#5#6#7#8#9
{
- \@@_point_interpolate_arcaxes_auxiii:fnnnnnn
+ \@@_point_interpolate_arcaxes_auxiii:ennnnnn
{ \fp_eval:n { #1 * (#3) + ( 1 - #1 ) * (#2) } }
{#4} {#5} {#6} {#7} {#8} {#9}
}
-\cs_generate_variant:Nn \@@_point_interpolate_arcaxes_auxii:nnnnnnnnn { f }
+\cs_generate_variant:Nn \@@_point_interpolate_arcaxes_auxii:nnnnnnnnn { e }
\cs_new:Npn \@@_point_interpolate_arcaxes_auxiii:nnnnnnn #1#2#3#4#5#6#7
{
- \@@_point_interpolate_arcaxes_auxiv:ffnnnnnn
+ \@@_point_interpolate_arcaxes_auxiv:eennnnnn
{ \fp_eval:n { cosd (#1) } }
{ \fp_eval:n { sind (#1) } }
{#2} {#3} {#4} {#5} {#6} {#7}
}
-\cs_generate_variant:Nn \@@_point_interpolate_arcaxes_auxiii:nnnnnnn { f }
+\cs_generate_variant:Nn \@@_point_interpolate_arcaxes_auxiii:nnnnnnn { e }
\cs_new:Npn \@@_point_interpolate_arcaxes_auxiv:nnnnnnnn #1#2#3#4#5#6#7#8
{
\draw_point:n
{ #3 + #1 * #5 + #2 * #7 , #4 + #1 * #6 + #2 * #8 }
}
-\cs_generate_variant:Nn \@@_point_interpolate_arcaxes_auxiv:nnnnnnnn { ff }
+\cs_generate_variant:Nn \@@_point_interpolate_arcaxes_auxiv:nnnnnnnn { ee }
% \end{macrocode}
% \end{macro}
% \end{macro}
@@ -761,25 +768,25 @@
% \begin{macro}[EXP]
% {
% \draw_point_interpolate_curve_auxii:nnnnnnnnn,
-% \draw_point_interpolate_curve_auxii:fnnnnnnnn,
+% \draw_point_interpolate_curve_auxii:ennnnnnnn,
% }
% \begin{macro}[EXP]
% {
% \draw_point_interpolate_curve_auxiii:nnnnnn,
-% \draw_point_interpolate_curve_auxiii:fnnnnn,
+% \draw_point_interpolate_curve_auxiii:ennnnn,
% }
% \begin{macro}[EXP]{\draw_point_interpolate_curve_auxiv:nnnnnn}
% \begin{macro}[EXP]
% {
% \draw_point_interpolate_curve_auxv:nnw,
-% \draw_point_interpolate_curve_auxv:ffw,
+% \draw_point_interpolate_curve_auxv:eew,
% }
% \begin{macro}[EXP]{\draw_point_interpolate_curve_auxvi:n}
% \begin{macro}[EXP]{\draw_point_interpolate_curve_auxvii:nnnnnnnn}
% \begin{macro}[EXP]
% {
% \draw_point_interpolate_curve_auxviii:nnnnnn,
-% \draw_point_interpolate_curve_auxviii:ffnnnn,
+% \draw_point_interpolate_curve_auxviii:eennnn,
% }
% Here we start with a proportion of the curve ($p$) and four points
% \begin{enumerate}
@@ -798,7 +805,7 @@
}
\cs_new:Npn \@@_point_interpolate_curve_auxi:nnnnnnnnn #1#2#3#4#5#6#7#8#9
{
- \@@_point_interpolate_curve_auxii:fnnnnnnnn
+ \@@_point_interpolate_curve_auxii:ennnnnnnn
{ \fp_eval:n {#1} }
{#2} {#3} {#4} {#5} {#6} {#7} {#8} {#9}
}
@@ -831,15 +838,15 @@
\cs_new:Npn \@@_point_interpolate_curve_auxii:nnnnnnnnn
#1#2#3#4#5#6#7#8#9
{
- \@@_point_interpolate_curve_auxiii:fnnnnn
+ \@@_point_interpolate_curve_auxiii:ennnnn
{ \fp_eval:n { 1 - #1 } }
{#1}
{ {#2} {#3} } { {#4} {#5} } { {#6} {#7} } { {#8} {#9} }
}
-\cs_generate_variant:Nn \@@_point_interpolate_curve_auxii:nnnnnnnnn { f }
+\cs_generate_variant:Nn \@@_point_interpolate_curve_auxii:nnnnnnnnn { e }
% \begin{macrocode}
% We need to do the first cycle, but haven't got enough arguments to keep
-% everything in play at once. So her ewe use a but of argument re-ordering
+% everything in play at once. So here we use a bit of argument re-ordering
% and a single auxiliary to get the job done.
% \begin{macrocode}
\cs_new:Npn \@@_point_interpolate_curve_auxiii:nnnnnn #1#2#3#4#5#6
@@ -850,10 +857,10 @@
\prg_do_nothing:
\@@_point_interpolate_curve_auxvi:n { {#1} {#2} }
}
-\cs_generate_variant:Nn \@@_point_interpolate_curve_auxiii:nnnnnn { f }
+\cs_generate_variant:Nn \@@_point_interpolate_curve_auxiii:nnnnnn { e }
\cs_new:Npn \@@_point_interpolate_curve_auxiv:nnnnnn #1#2#3#4#5#6
{
- \@@_point_interpolate_curve_auxv:ffw
+ \@@_point_interpolate_curve_auxv:eew
{ \fp_eval:n { #1 * #3 + #2 * #5 } }
{ \fp_eval:n { #1 * #4 + #2 * #6 } }
}
@@ -864,7 +871,7 @@
\prg_do_nothing:
#4 { #5 {#1} {#2} }
}
-\cs_generate_variant:Nn \@@_point_interpolate_curve_auxv:nnw { ff }
+\cs_generate_variant:Nn \@@_point_interpolate_curve_auxv:nnw { ee }
% \begin{macrocode}
% Get the arguments back into the right places and to the second and
% third cycles directly.
@@ -873,7 +880,7 @@
{ \@@_point_interpolate_curve_auxvii:nnnnnnnn #1 }
\cs_new:Npn \@@_point_interpolate_curve_auxvii:nnnnnnnn #1#2#3#4#5#6#7#8
{
- \@@_point_interpolate_curve_auxviii:ffffnn
+ \@@_point_interpolate_curve_auxviii:eeeenn
{ \fp_eval:n { #1 * #5 + #2 * #3 } }
{ \fp_eval:n { #1 * #6 + #2 * #4 } }
{ \fp_eval:n { #1 * #7 + #2 * #5 } }
@@ -885,7 +892,7 @@
\draw_point:n
{ #5 * #3 + #6 * #1 , #5 * #4 + #6 * #2 }
}
-\cs_generate_variant:Nn \@@_point_interpolate_curve_auxviii:nnnnnn { ffff }
+\cs_generate_variant:Nn \@@_point_interpolate_curve_auxviii:nnnnnn { eeee }
% \end{macrocode}
% \end{macro}
% \end{macro}
@@ -954,14 +961,14 @@
% \end{macrocode}
%
% \begin{macro}[EXP]{\draw_point_vec:nn}
-% \begin{macro}[EXP]{\@@_point_vec:nn, \@@_point_vec:ff}
+% \begin{macro}[EXP]{\@@_point_vec:nn, \@@_point_vec:ee}
% \begin{macro}[EXP]{\draw_point_vec:nnn}
-% \begin{macro}[EXP]{\@@_point_vec:nnn, \@@_point_vec:fff}
+% \begin{macro}[EXP]{\@@_point_vec:nnn, \@@_point_vec:eee}
% Force a single evaluation of each factor, then use these to work out the
% underlying point.
% \begin{macrocode}
\cs_new:Npn \draw_point_vec:nn #1#2
- { \@@_point_vec:ff { \fp_eval:n {#1} } { \fp_eval:n {#2} } }
+ { \@@_point_vec:ee { \fp_eval:n {#1} } { \fp_eval:n {#2} } }
\cs_new:Npn \@@_point_vec:nn #1#2
{
\draw_point:n
@@ -970,26 +977,26 @@
#1 * \l_@@_xvec_y_dim + #2 * \l_@@_yvec_y_dim
}
}
-\cs_generate_variant:Nn \@@_point_vec:nn { ff }
+\cs_generate_variant:Nn \@@_point_vec:nn { ee }
\cs_new:Npn \draw_point_vec:nnn #1#2#3
{
- \@@_point_vec:fff
+ \@@_point_vec:eee
{ \fp_eval:n {#1} } { \fp_eval:n {#2} } { \fp_eval:n {#3} }
}
\cs_new:Npn \@@_point_vec:nnn #1#2#3
{
\draw_point:n
{
- #1 * \l_@@_xvec_x_dim
- + #2 * \l_@@_yvec_x_dim
- + #3 * \l_@@_zvec_x_dim
+ #1 * \l_@@_xvec_x_dim
+ + #2 * \l_@@_yvec_x_dim
+ + #3 * \l_@@_zvec_x_dim
,
#1 * \l_@@_xvec_y_dim
+ #2 * \l_@@_yvec_y_dim
+ #3 * \l_@@_zvec_y_dim
}
}
-\cs_generate_variant:Nn \@@_point_vec:nnn { fff }
+\cs_generate_variant:Nn \@@_point_vec:nnn { eee }
% \end{macrocode}
% \end{macro}
% \end{macro}
@@ -998,22 +1005,22 @@
%
% \begin{macro}[EXP]{\draw_point_vec_polar:nn}
% \begin{macro}[EXP]{\draw_point_vec_polar:nnn}
-% \begin{macro}[EXP]{\@@_point_vec_polar:nnn, \@@_point_vec_polar:fnn}
+% \begin{macro}[EXP]{\@@_point_vec_polar:nnn, \@@_point_vec_polar:enn}
% Much the same as the core polar approach.
% \begin{macrocode}
\cs_new:Npn \draw_point_vec_polar:nn #1#2
{ \draw_point_vec_polar:nnn {#1} {#1} {#2} }
\cs_new:Npn \draw_point_vec_polar:nnn #1#2#3
- { \@@_draw_vec_polar:fnn { \fp_eval:n {#3} } {#1} {#2} }
+ { \@@_draw_vec_polar:enn { \fp_eval:n {#3} } {#1} {#2} }
\cs_new:Npn \@@_draw_vec_polar:nnn #1#2#3
{
\draw_point:n
{
cosd(#1) * (#2) * \l_@@_xvec_x_dim ,
sind(#1) * (#3) * \l_@@_yvec_y_dim
- }
+ }
}
-\cs_generate_variant:Nn \@@_draw_vec_polar:nnn { f }
+\cs_generate_variant:Nn \@@_draw_vec_polar:nnn { e }
% \end{macrocode}
% \end{macro}
% \end{macro}
diff --git a/macros/latex/contrib/l3experimental/l3draw-scopes.dtx b/macros/latex/contrib/l3experimental/l3draw-scopes.dtx
index ae8869d6b7..7906bc12e9 100644
--- a/macros/latex/contrib/l3experimental/l3draw-scopes.dtx
+++ b/macros/latex/contrib/l3experimental/l3draw-scopes.dtx
@@ -2,7 +2,7 @@
%
%% File: l3draw-scopes.dtx
%
-% Copyright (C) 2018-2023 The LaTeX Project
+% Copyright (C) 2018-2024 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2023-12-08}
+% \date{Released 2024-01-04}
%
% \maketitle
%
@@ -210,7 +210,7 @@
{ 0pt }
}
\box_set_ht:Nn \l_@@_main_box
- { \g_@@_ymax_dim + #1 }
+ { \g_@@_ymax_dim - #1 }
}
% \end{macrocode}
% \end{macro}
diff --git a/macros/latex/contrib/l3experimental/l3draw-softpath.dtx b/macros/latex/contrib/l3experimental/l3draw-softpath.dtx
index 56a7c78d9d..0b8f731ca5 100644
--- a/macros/latex/contrib/l3experimental/l3draw-softpath.dtx
+++ b/macros/latex/contrib/l3experimental/l3draw-softpath.dtx
@@ -2,7 +2,7 @@
%
%% File: l3draw-softpath.dtx
%
-% Copyright (C) 2018-2023 The LaTeX Project
+% Copyright (C) 2018-2024 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2023-12-08}
+% \date{Released 2024-01-04}
%
% \maketitle
%
@@ -109,12 +109,10 @@
% \begin{macrocode}
\cs_new_protected:Npn \@@_softpath_use:
{
- \tl_build_gend:N \g_@@_softpath_main_tl
- \tl_set_eq:NN \l_@@_softpath_tmp_tl \g_@@_softpath_main_tl
+ \tl_build_get_intermediate:NN
+ \g_@@_softpath_main_tl
+ \l_@@_softpath_tmp_tl
\l_@@_softpath_tmp_tl
- \tl_build_gbegin:N \g_@@_softpath_main_tl
- \exp_args:NNV \tl_build_gput_right:Nn
- \g_@@_softpath_main_tl \l_@@_softpath_tmp_tl
}
\cs_new_protected:Npn \@@_softpath_clear:
{
@@ -330,7 +328,7 @@
% \begin{macro}{\@@_softpath_round_roundpoint:NnnNnnNnn}
% \begin{macro}{\@@_softpath_round_calc:NnnNnn}
% \begin{macro}[EXP]
-% {\@@_softpath_round_calc:nnnnnn, \@@_softpath_round_calc:fVnnnn}
+% {\@@_softpath_round_calc:nnnnnn, \@@_softpath_round_calc:eVnnnn}
% \begin{macro}[EXP]{\@@_softpath_round_calc:nnnnw}
% \begin{macro}{\@@_softpath_round_close:nn}
% \begin{macro}[EXP]{\@@_softpath_round_close:w}
@@ -509,7 +507,7 @@
\tl_put_right:Ne \l_@@_softpath_part_tl
{
\exp_not:N #4
- \@@_softpath_round_calc:fVnnnn
+ \@@_softpath_round_calc:eVnnnn
{
\draw_point_interpolate_distance:nnn
\l_@@_softpath_corneri_dim
@@ -535,7 +533,7 @@
\@@_softpath_round_calc:nnnnw {#3} {#4} {#5} {#6}
#1 \s_@@_mark #2 \s_@@_stop
}
-\cs_generate_variant:Nn \@@_softpath_round_calc:nnnnnn { fV }
+\cs_generate_variant:Nn \@@_softpath_round_calc:nnnnnn { eV }
% \end{macrocode}
% The calculations themselves are relatively straight-forward, as we use a
% quadratic Bézier curve.
diff --git a/macros/latex/contrib/l3experimental/l3draw-state.dtx b/macros/latex/contrib/l3experimental/l3draw-state.dtx
index c288fe0c58..e3f6dba452 100644
--- a/macros/latex/contrib/l3experimental/l3draw-state.dtx
+++ b/macros/latex/contrib/l3experimental/l3draw-state.dtx
@@ -2,7 +2,7 @@
%
%% File: l3draw-state.dtx
%
-% Copyright (C) 2018-2023 The LaTeX Project
+% Copyright (C) 2018-2024 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2023-12-08}
+% \date{Released 2024-01-04}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3experimental/l3draw-transforms.dtx b/macros/latex/contrib/l3experimental/l3draw-transforms.dtx
index 8115e1c4fc..df9f07af18 100644
--- a/macros/latex/contrib/l3experimental/l3draw-transforms.dtx
+++ b/macros/latex/contrib/l3experimental/l3draw-transforms.dtx
@@ -2,7 +2,7 @@
%
%% File: l3draw-transforms.dtx
%
-% Copyright (C) 2018-2023 The LaTeX Project
+% Copyright (C) 2018-2024 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2023-12-08}
+% \date{Released 2024-01-04}
%
% \maketitle
%
@@ -154,10 +154,7 @@
{ \@@_transform_shift_absolute:nn } {#1}
}
\cs_new_protected:Npn \@@_transform_shift_absolute:nn #1#2
- {
- \dim_set:Nn \l_@@_xshift_dim {#1}
- \dim_set:Nn \l_@@_yshift_dim {#2}
- }
+ { \@@_transform_shift:nnnn { 0pt } { 0pt } {#1} {#2} }
% \end{macrocode}
% \end{macro}
% \end{macro}
@@ -199,8 +196,10 @@
}
\cs_new_protected:Npn \@@_transform_shift:nn #1#2
{
- \dim_set:Nn \l_@@_xshift_dim { \l_@@_xshift_dim + #1 }
- \dim_set:Nn \l_@@_yshift_dim { \l_@@_yshift_dim + #2 }
+ \@@_transform_shift:nnnn
+ \l_@@_xshift_dim
+ \l_@@_yshift_dim
+ {#1} {#2}
}
% \end{macrocode}
% \end{macro}
@@ -208,8 +207,35 @@
% \end{macro}
% \end{macro}
%
+% \begin{macro}{\@@_transform_shift:nnnn}
+% Apply the current transformation matrix to the shift, then store
+% the resulting values: we may or may not have a none-zero starting
+% point here.
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_transform_shift:nnnn #1#2#3#4
+ {
+ \dim_set:Nn \l_@@_xshift_dim
+ {
+ \fp_to_dim:n
+ {
+ #1 +
+ ( #3 * \l_@@_matrix_a_fp + #4 * \l_@@_matrix_b_fp )
+ }
+ }
+ \dim_set:Nn \l_@@_yshift_dim
+ {
+ \fp_to_dim:n
+ {
+ #2 +
+ ( #3 * \l_@@_matrix_c_fp + #4 * \l_@@_matrix_d_fp )
+ }
+ }
+ }
+% \end{macrocode}
+% \end{macro}
+%
% \begin{macro}{\draw_transform_matrix_invert:}
-% \begin{macro}{\@@_transform_invert:n, \@@_transform_invert:f}
+% \begin{macro}{\@@_transform_invert:n, \@@_transform_invert:e}
% \begin{macro}{\draw_transform_shift_invert:}
% Standard mathematics: calculate the inverse matrix and use that, then
% undo the shifts.
@@ -218,7 +244,7 @@
{
\bool_if:NT \l_@@_matrix_active_bool
{
- \@@_transform_invert:f
+ \@@_transform_invert:e
{
\fp_eval:n
{
@@ -242,7 +268,7 @@
\fp_set:Nn \l_@@_matrix_d_fp
{ \l_@@_matrix_a_fp * #1 }
}
-\cs_generate_variant:Nn \@@_transform_invert:n { f }
+\cs_generate_variant:Nn \@@_transform_invert:n { e }
\cs_new_protected:Npn \draw_transform_shift_invert:
{
\dim_set:Nn \l_@@_xshift_dim { -\l_@@_xshift_dim }
@@ -312,24 +338,24 @@
% \begin{macro}{\draw_transform_rotate:n}
% \begin{macro}
% {
-% \@@_transform_rotate:n, \@@_transform_rotate:f,
-% \@@_transform_rotate:nn, \@@_transform_rotate:ff
+% \@@_transform_rotate:n, \@@_transform_rotate:e,
+% \@@_transform_rotate:nn, \@@_transform_rotate:ee
% }
% Slightly more involved: evaluate the angle only once, and the sine and
% cosine only once.
% \begin{macrocode}
\cs_new_protected:Npn \draw_transform_rotate:n #1
- { \@@_transform_rotate:f { \fp_eval:n {#1} } }
+ { \@@_transform_rotate:e { \fp_eval:n {#1} } }
\cs_new_protected:Npn \@@_transform_rotate:n #1
{
- \@@_transform_rotate:ff
+ \@@_transform_rotate:ee
{ \fp_eval:n { cosd(#1) } }
{ \fp_eval:n { sind(#1) } }
}
-\cs_generate_variant:Nn \@@_transform_rotate:n { f }
+\cs_generate_variant:Nn \@@_transform_rotate:n { e }
\cs_new_protected:Npn \@@_transform_rotate:nn #1#2
{ \draw_transform_matrix:nnnn {#1} {#2} { -#2 } { #1 } }
-\cs_generate_variant:Nn \@@_transform_rotate:nn { ff }
+\cs_generate_variant:Nn \@@_transform_rotate:nn { ee }
% \end{macrocode}
% \end{macro}
% \end{macro}
diff --git a/macros/latex/contrib/l3experimental/l3draw.dtx b/macros/latex/contrib/l3experimental/l3draw.dtx
index e0cbdff3d4..2fae7afc74 100644
--- a/macros/latex/contrib/l3experimental/l3draw.dtx
+++ b/macros/latex/contrib/l3experimental/l3draw.dtx
@@ -2,7 +2,7 @@
%
%% File: l3draw.dtx
%
-% Copyright(C) 2018-2023 The LaTeX Project
+% Copyright(C) 2018-2024 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -50,10 +50,10 @@
\newcommand*\demo@common{%
\setkeys{lst}
{%
- basicstyle = \small\ttfamily,
- basewidth = 0.51em,
- gobble = 5,
- language = [LaTeX]{TeX},
+ basicstyle = \small\ttfamily,
+ basewidth = 0.51em,
+ gobble = 5,
+ language = [LaTeX]{TeX},
}%
}
\newcommand*\demo@input{%
@@ -110,7 +110,7 @@
% }^^A
% }
%
-% \date{Released 2023-12-08}
+% \date{Released 2024-01-04}
%
% \maketitle
%
@@ -259,7 +259,7 @@
% will appear. Note that these all apply \emph{globally}, though some are
% rest at the start of each drawing (\cs{draw_begin:}).
%
-% \begin{variable}{\g_draw_linewidth_default_dim}
+% \begin{variable}{\l_draw_default_linewidth_dim}
% The default value of the linewidth for stokes, set at the start
% of every drawing (\cs{draw_begin:}).
% \end{variable}
@@ -369,7 +369,7 @@
% \end{syntax}
% Creates a scope for localisation of state settings within a drawing.
% A scope forms a \TeX{} group but will also localise global state
-% variables (such as \cs{g_draw_linewidth_default_dim}), and driver-level
+% variables (such as \cs{l_draw_default_linewidth_dim}), and driver-level
% concepts such as the termination of lines.
% \begin{demo}
% \draw_begin:
@@ -1046,7 +1046,8 @@
% \end{syntax}
% Applies the transformation \meta{vector} to points.
% The basic applies the vector in addition to those active; the
-% |absolute| version overwrites any active vector.
+% |absolute| version overwrites any active vector. Any active
+% transformation matrix is applied to the shifts each time they are adjusted.
% This assignment is local.
% \end{function}
%
@@ -1180,7 +1181,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{l3draw}{2023-12-08}{}
+\ProvidesExplPackage{l3draw}{2024-01-04}{}
{L3 Experimental core drawing support}
% \end{macrocode}
%
diff --git a/macros/latex/contrib/l3experimental/l3draw.ins b/macros/latex/contrib/l3experimental/l3draw.ins
index 7183607c2d..d4e505ef75 100644
--- a/macros/latex/contrib/l3experimental/l3draw.ins
+++ b/macros/latex/contrib/l3experimental/l3draw.ins
@@ -2,7 +2,7 @@
File: l3draw.ins
-Copyright (C) 2018-2023 The LaTeX Project
+Copyright (C) 2018-2024 The LaTeX Project
It may be distributed and/or modified under the conditions of the
LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -34,7 +34,7 @@ license information is placed in the derived files.
\preamble
-Copyright (C) 2018-2023 The LaTeX Project
+Copyright (C) 2018-2024 The LaTeX Project
It may be distributed and/or modified under the conditions of
the LaTeX Project Public License (LPPL), either version 1.3c of
diff --git a/macros/latex/contrib/l3experimental/l3draw.pdf b/macros/latex/contrib/l3experimental/l3draw.pdf
index 6b8a5e9a92..4beda52c98 100644
--- a/macros/latex/contrib/l3experimental/l3draw.pdf
+++ b/macros/latex/contrib/l3experimental/l3draw.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3experimental/l3galley.dtx b/macros/latex/contrib/l3experimental/l3galley.dtx
index 7b150d5dc5..3bafa455b4 100644
--- a/macros/latex/contrib/l3experimental/l3galley.dtx
+++ b/macros/latex/contrib/l3experimental/l3galley.dtx
@@ -3,7 +3,7 @@
%% File: l3galley.dtx
%
% Copyright (C) 1999-2001,2004-2009 Frank Mittelbach
-% (C) 2010-2023 The LaTeX Project
+% (C) 2010-2024 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -49,7 +49,7 @@
% \fi
%
% \title{^^A
-% The \textsf{l3galley} package\\ Galley code^^A
+% The \pkg{l3galley} package\\ Galley code^^A
% }
%
% \author{^^A
@@ -61,7 +61,7 @@
% }^^A
% }
%
-% \date{Released 2023-12-08}
+% \date{Released 2024-01-04}
%
% \maketitle
%
@@ -686,7 +686,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{l3galley}{2023-12-08}{}
+\ProvidesExplPackage{l3galley}{2024-01-04}{}
{L3 Experimental galley code}
% \end{macrocode}
%
@@ -1323,27 +1323,27 @@
% \begin{macrocode}
\cs_new_protected:Npn \@@_display_penalty:N #1
{
- \tl_if_empty:NF #1
- {
- \tl_gput_right:Ne \g_galley_restore_running_tl
- {
- \int_gset:Nn \exp_not:N \g_galley_penalty_int
- { \int_use:N \g_galley_penalty_int }
- }
- \int_gset:Nn \g_galley_penalty_int {#1}
- }
+ \tl_if_empty:NF #1
+ {
+ \tl_gput_right:Ne \g_galley_restore_running_tl
+ {
+ \int_gset:Nn \exp_not:N \g_galley_penalty_int
+ { \int_use:N \g_galley_penalty_int }
+ }
+ \int_gset:Nn \g_galley_penalty_int {#1}
+ }
}
\cs_new_protected:Npn \@@_display_vspace:N #1
{
- \tl_if_empty:NF #1
- {
- \tl_gput_right:Ne \g_galley_restore_running_tl
- {
- \skip_gset:Nn \exp_not:N \g_galley_vspace_skip
- { \skip_use:N \g_galley_vspace_skip }
- }
- \skip_gset:Nn \g_galley_vspace_int {#1}
- }
+ \tl_if_empty:NF #1
+ {
+ \tl_gput_right:Ne \g_galley_restore_running_tl
+ {
+ \skip_gset:Nn \exp_not:N \g_galley_vspace_skip
+ { \skip_use:N \g_galley_vspace_skip }
+ }
+ \skip_gset:Nn \g_galley_vspace_int {#1}
+ }
}
% \end{macrocode}
% The \cs{par} token at the end of the display needs to go in at the same
@@ -1896,7 +1896,7 @@
\seq_get_right:NNF \g_@@_tmpb_seq \l_@@_tmp_tl
{ \tl_clear:N \l_@@_tmp_tl }
\tl_if_empty:NT \l_@@_tmp_tl
- { \tl_set:Nn \l_@@_tmp_tl { 0pt } }
+ { \tl_set:Nn \l_@@_tmp_tl { 0pt } }
\int_set:Nn \l_@@_tmp_int
{
\seq_count:N \g_@@_tmpa_seq
diff --git a/macros/latex/contrib/l3experimental/l3galley.pdf b/macros/latex/contrib/l3experimental/l3galley.pdf
index bd9bf88c83..a633e46628 100644
--- a/macros/latex/contrib/l3experimental/l3galley.pdf
+++ b/macros/latex/contrib/l3experimental/l3galley.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3experimental/l3graphics.dtx b/macros/latex/contrib/l3experimental/l3graphics.dtx
index 5a45b88d9c..9f59b4ec05 100644
--- a/macros/latex/contrib/l3experimental/l3graphics.dtx
+++ b/macros/latex/contrib/l3experimental/l3graphics.dtx
@@ -2,7 +2,7 @@
%
%% File: l3graphics.dtx
%
-% Copyright (C) 2017-2023 The LaTeX Project
+% Copyright (C) 2017-2024 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-12-08}
+% \date{Released 2024-01-04}
%
% \maketitle
%
@@ -184,7 +184,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{l3graphics}{2023-12-08}{}
+\ProvidesExplPackage{l3graphics}{2024-01-04}{}
{L3 Experimental graphics inclusion support}
% \end{macrocode}
%
@@ -237,7 +237,7 @@
{ art , bleed , crop , media , trim }
{
\tl_set:Ne \l_@@_pagebox_tl
- { \l_keys_choice_tl box }
+ { \l_keys_choice_tl box }
} ,
pagebox .initial:n =
crop ,
@@ -536,8 +536,8 @@
\exp_args:Ne \str_tail:n
{ \str_casefold:V \l_@@_ext_str }
}
- }
- { \@@_include_auxi:e { \l_@@_type_str } }
+ }
+ { \@@_include_auxi:e { \l_@@_type_str } }
}
\cs_new_protected:Npn \@@_include_auxi:n #1
{
@@ -553,7 +553,7 @@
{
\tl_set_eq:NN \l_@@_final_name_str \l_@@_full_name_str
\str_set:Ne \l_@@_full_name_str
- { \exp_args:NV \__kernel_file_name_quote:n \l_@@_full_name_str }
+ { \exp_args:NV \__kernel_file_name_quote:n \l_@@_full_name_str }
\exp_args:NnV \use:c { @@_backend_getbb_ #1 :n }
\l_@@_full_name_str
\seq_gput_right:NV \g_@@_record_seq \l_@@_final_name_str
@@ -601,7 +601,7 @@
\box_set_dp:Nn \l_@@_internal_box { 0pt }
\box_set_ht:Nn \l_@@_internal_box
{ \l_@@_ury_dim - \l_@@_lly_dim }
- \box_set_wd:Nn \l_@@_internal_box
+ \box_set_wd:Nn \l_@@_internal_box
{ \l_@@_urx_dim - \l_@@_llx_dim }
\box_use_drop:N \l_@@_internal_box
}
diff --git a/macros/latex/contrib/l3experimental/l3graphics.ins b/macros/latex/contrib/l3experimental/l3graphics.ins
index 40f03e569d..8798dce73c 100644
--- a/macros/latex/contrib/l3experimental/l3graphics.ins
+++ b/macros/latex/contrib/l3experimental/l3graphics.ins
@@ -1,6 +1,6 @@
\iffalse meta-comment
-File l3graphics.ins Copyright (C) 2017,2019-2023 The LaTeX Project
+File l3graphics.ins Copyright (C) 2017,2019-2024 The LaTeX Project
It may be distributed and/or modified under the conditions of the
LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -32,7 +32,7 @@ license information is placed in the derived files.
\preamble
-Copyright (C) 2019-2023 The LaTeX Project
+Copyright (C) 2019-2024 The LaTeX Project
It may be distributed and/or modified under the conditions of
the LaTeX Project Public License (LPPL), either version 1.3c of
diff --git a/macros/latex/contrib/l3experimental/l3graphics.pdf b/macros/latex/contrib/l3experimental/l3graphics.pdf
index 66ce45d710..42212b3f64 100644
--- a/macros/latex/contrib/l3experimental/l3graphics.pdf
+++ b/macros/latex/contrib/l3experimental/l3graphics.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3experimental/l3opacity.dtx b/macros/latex/contrib/l3experimental/l3opacity.dtx
index 9ed6f5e6a4..f4abdacd81 100644
--- a/macros/latex/contrib/l3experimental/l3opacity.dtx
+++ b/macros/latex/contrib/l3experimental/l3opacity.dtx
@@ -2,7 +2,7 @@
%
%% File: l3opacity.dtx
%
-% Copyright (C) 2021-2023 The LaTeX Project
+% Copyright (C) 2021-2024 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -34,7 +34,7 @@
% \fi
%
% \title{^^A
-% The \textsf{l3opacity} package\\ Experimental opacity (transparency) support^^A
+% The \pkg{l3opacity} package\\ Experimental opacity (transparency) support^^A
% }
%
% \author{^^A
@@ -46,7 +46,7 @@
% }^^A
% }
%
-% \date{Released 2023-12-08}
+% \date{Released 2024-01-04}
%
% \maketitle
%
@@ -96,7 +96,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{l3opacity}{2023-12-08}{}
+\ProvidesExplPackage{l3opacity}{2024-01-04}{}
{L3 Experimental opacity support}
% \end{macrocode}
%
diff --git a/macros/latex/contrib/l3experimental/l3opacity.ins b/macros/latex/contrib/l3experimental/l3opacity.ins
index 1a5e5de20a..58b33fff7c 100644
--- a/macros/latex/contrib/l3experimental/l3opacity.ins
+++ b/macros/latex/contrib/l3experimental/l3opacity.ins
@@ -2,7 +2,7 @@
File: l3opacity.ins
-Copyright (C) 2021-2023 The LaTeX Project
+Copyright (C) 2021-2024 The LaTeX Project
It may be distributed and/or modified under the conditions of the
LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -34,7 +34,7 @@ license information is placed in the derived files.
\preamble
-Copyright (C) 2021-2023 The LaTeX Project
+Copyright (C) 2021-2024 The LaTeX Project
It may be distributed and/or modified under the conditions of
the LaTeX Project Public License (LPPL), either version 1.3c of
diff --git a/macros/latex/contrib/l3experimental/l3opacity.pdf b/macros/latex/contrib/l3experimental/l3opacity.pdf
index 096288c14a..0898e6463c 100644
--- a/macros/latex/contrib/l3experimental/l3opacity.pdf
+++ b/macros/latex/contrib/l3experimental/l3opacity.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3experimental/l3str-format.dtx b/macros/latex/contrib/l3experimental/l3str-format.dtx
index 03a6145239..6304ce3ec2 100644
--- a/macros/latex/contrib/l3experimental/l3str-format.dtx
+++ b/macros/latex/contrib/l3experimental/l3str-format.dtx
@@ -2,7 +2,7 @@
%
%% File: l3str-format.dtx
%
-% Copyright (C) 2012-2023 The LaTeX Project
+% Copyright (C) 2012-2024 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -36,7 +36,7 @@
%
%
% \title{^^A
-% The \textsf{l3str-format} package: formatting strings of characters^^A
+% The \pkg{l3str-format} package\\ Formatting strings of characters^^A
% }
%
% \author{^^A
@@ -48,7 +48,7 @@
% }^^A
% }
%
-% \date{Released 2023-12-08}
+% \date{Released 2024-01-04}
%
% \maketitle
%
@@ -166,7 +166,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{l3str-format}{2023-12-08}{}
+\ProvidesExplPackage{l3str-format}{2024-01-04}{}
{L3 Experimental string formatting}
% \end{macrocode}
%
diff --git a/macros/latex/contrib/l3experimental/l3str-format.pdf b/macros/latex/contrib/l3experimental/l3str-format.pdf
index 83b57b975b..367a84e099 100644
--- a/macros/latex/contrib/l3experimental/l3str-format.pdf
+++ b/macros/latex/contrib/l3experimental/l3str-format.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3experimental/l3str.ins b/macros/latex/contrib/l3experimental/l3str.ins
index fa070c69ec..fd77436304 100644
--- a/macros/latex/contrib/l3experimental/l3str.ins
+++ b/macros/latex/contrib/l3experimental/l3str.ins
@@ -2,7 +2,7 @@
File l3str.ins
-Copyright (C) 2011-2017,2019-2023 The LaTeX Project
+Copyright (C) 2011-2017,2019-2024 The LaTeX Project
It may be distributed and/or modified under the conditions of the
LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -34,7 +34,7 @@ license information is placed in the derived files.
\preamble
-Copyright (C) 2011-2023 The LaTeX Project
+Copyright (C) 2011-2024 The LaTeX Project
It may be distributed and/or modified under the conditions of
the LaTeX Project Public License (LPPL), either version 1.3c of
diff --git a/macros/latex/contrib/l3experimental/l3sys-shell.dtx b/macros/latex/contrib/l3experimental/l3sys-shell.dtx
index 4c05998e37..ad1733ab77 100644
--- a/macros/latex/contrib/l3experimental/l3sys-shell.dtx
+++ b/macros/latex/contrib/l3experimental/l3sys-shell.dtx
@@ -2,7 +2,7 @@
%
%% File: l3sys-shell.dtx
%
-% Copyright (C) 2018-2023 The LaTeX Project
+% Copyright (C) 2018-2024 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -46,7 +46,7 @@
% }^^A
% }
%
-% \date{Released 2023-12-08}
+% \date{Released 2024-01-04}
%
% \maketitle
%
@@ -151,7 +151,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{l3sys-shell}{2023-12-08}{}
+\ProvidesExplPackage{l3sys-shell}{2024-01-04}{}
{L3 Experimental system shell functions}
% \end{macrocode}
%
@@ -201,7 +201,7 @@
\token_if_eq_meaning:NNTF #1 /
{ \c_backslash_str }
{#1}
- \@@_path_to_win:N
+ \@@_path_to_win:N
}
}
% \end{macrocode}
diff --git a/macros/latex/contrib/l3experimental/l3sys-shell.ins b/macros/latex/contrib/l3experimental/l3sys-shell.ins
index c546801d05..8e5e7169d9 100644
--- a/macros/latex/contrib/l3experimental/l3sys-shell.ins
+++ b/macros/latex/contrib/l3experimental/l3sys-shell.ins
@@ -2,7 +2,7 @@
File: l3sys-shell.ins
-Copyright (C) 2018-2023 The LaTeX Project
+Copyright (C) 2018-2024 The LaTeX Project
It may be distributed and/or modified under the conditions of the
LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -34,7 +34,7 @@ license information is placed in the derived files.
\preamble
-Copyright (C) 2018-2023 The LaTeX Project
+Copyright (C) 2018-2024 The LaTeX Project
It may be distributed and/or modified under the conditions of
the LaTeX Project Public License (LPPL), either version 1.3c of
diff --git a/macros/latex/contrib/l3experimental/l3sys-shell.pdf b/macros/latex/contrib/l3experimental/l3sys-shell.pdf
index 3152e29a00..1d1c41221a 100644
--- a/macros/latex/contrib/l3experimental/l3sys-shell.pdf
+++ b/macros/latex/contrib/l3experimental/l3sys-shell.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3experimental/xcoffins.dtx b/macros/latex/contrib/l3experimental/xcoffins.dtx
index 9ca534e86c..a18ade7abd 100644
--- a/macros/latex/contrib/l3experimental/xcoffins.dtx
+++ b/macros/latex/contrib/l3experimental/xcoffins.dtx
@@ -2,7 +2,7 @@
%
%% File: xcoffins.dtx
%
-% Copyright (C) 2010-2023 The LaTeX Project
+% Copyright (C) 2010-2024 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -41,7 +41,7 @@
% \fi
%
% \title{^^A
-% The \textsf{xcoffins} package\\ Design-level coffins^^A
+% The \pkg{xcoffins} package\\ Design-level coffins^^A
% }
%
% \author{^^A
@@ -53,7 +53,7 @@
% }^^A
% }
%
-% \date{Released 2023-12-08}
+% \date{Released 2024-01-04}
%
% \maketitle
%
@@ -672,7 +672,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{xcoffins}{2023-12-08}{}
+\ProvidesExplPackage{xcoffins}{2024-01-04}{}
{L3 Experimental design level coffins}
% \end{macrocode}
%
@@ -859,9 +859,9 @@
% \begin{macrocode}
\NewDocumentCommand \TypesetCoffin
{
- m
- > { \SplitArgument { 1 } { , } } O { H , l }
- > { \SplitArgument { 1 } { , } } D ( ) { 0 pt , 0 pt }
+ m
+ > { \SplitArgument { 1 } { , } } O { H , l }
+ > { \SplitArgument { 1 } { , } } D ( ) { 0 pt , 0 pt }
}
{ \coffin_typeset:Nnnnn #1 #2 #3 }
% \end{macrocode}
diff --git a/macros/latex/contrib/l3experimental/xcoffins.ins b/macros/latex/contrib/l3experimental/xcoffins.ins
index 224e77b5d6..326f21e4a5 100644
--- a/macros/latex/contrib/l3experimental/xcoffins.ins
+++ b/macros/latex/contrib/l3experimental/xcoffins.ins
@@ -2,7 +2,7 @@
File: xcoffins.ins
-Copyright (C) 2010,2011,2012,2016,2017,2019-2023 The LaTeX Project
+Copyright (C) 2010,2011,2012,2016,2017,2019-2024 The LaTeX Project
It may be distributed and/or modified under the conditions of the
LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -34,7 +34,7 @@ license information is placed in the derived files.
\preamble
-Copyright (C) 2010-2023 The LaTeX Project
+Copyright (C) 2010-2024 The LaTeX Project
It may be distributed and/or modified under the conditions of
the LaTeX Project Public License (LPPL), either version 1.3c of
diff --git a/macros/latex/contrib/l3experimental/xcoffins.pdf b/macros/latex/contrib/l3experimental/xcoffins.pdf
index 98b321ae28..bee04ded96 100644
--- a/macros/latex/contrib/l3experimental/xcoffins.pdf
+++ b/macros/latex/contrib/l3experimental/xcoffins.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3experimental/xgalley.dtx b/macros/latex/contrib/l3experimental/xgalley.dtx
index eb704906db..76e8242f4e 100644
--- a/macros/latex/contrib/l3experimental/xgalley.dtx
+++ b/macros/latex/contrib/l3experimental/xgalley.dtx
@@ -3,7 +3,7 @@
%% File: xgalley.dtx
%
% Copyright (C) 1999-2001,2004-2009 Frank Mittelbach
-% (C) 2010-2012,2014,2016-2023 The LaTeX Project
+% (C) 2010-2012,2014,2016-2024 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -32,7 +32,7 @@
% \fi
%
% \title{^^A
-% The \textsf{xgalley} package\\ Galley^^A
+% The \pkg{xgalley} package\\ Galley^^A
% }
%
% \author{^^A
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2023-12-08}
+% \date{Released 2024-01-04}
%
% \maketitle
%
@@ -731,7 +731,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{xgalley}{2023-12-08}{}
+\ProvidesExplPackage{xgalley}{2024-01-04}{}
{L3 Experimental galley}
\RequirePackage{xtemplate,l3galley}
% \end{macrocode}
@@ -829,7 +829,7 @@
lines : integer = 1
}
\DeclareTemplateInterface { parshape } { initial } { 0 }
- {
+ {
indent : length = 0pt ,
on-left-side : boolean = true ,
lines : integer = 2
diff --git a/macros/latex/contrib/l3experimental/xgalley.ins b/macros/latex/contrib/l3experimental/xgalley.ins
index 82ae4c7728..53ecd1bbdc 100644
--- a/macros/latex/contrib/l3experimental/xgalley.ins
+++ b/macros/latex/contrib/l3experimental/xgalley.ins
@@ -2,7 +2,7 @@
File: xgalley.ins
-Copyright (C) 2010-2012,2016,2017,2019-2023 The LaTeX Project
+Copyright (C) 2010-2012,2016,2017,2019-2024 The LaTeX Project
It may be distributed and/or modified under the conditions of the
LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -34,7 +34,7 @@ license information is placed in the derived files.
\preamble
-Copyright (C) 2010-2023 The LaTeX Project
+Copyright (C) 2010-2024 The LaTeX Project
It may be distributed and/or modified under the conditions of
the LaTeX Project Public License (LPPL), either version 1.3c of
diff --git a/macros/latex/contrib/l3experimental/xgalley.pdf b/macros/latex/contrib/l3experimental/xgalley.pdf
index e1964e85ee..50375b414b 100644
--- a/macros/latex/contrib/l3experimental/xgalley.pdf
+++ b/macros/latex/contrib/l3experimental/xgalley.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/CHANGELOG.md b/macros/latex/contrib/l3kernel/CHANGELOG.md
index 726d647298..0c9d02efe4 100644
--- a/macros/latex/contrib/l3kernel/CHANGELOG.md
+++ b/macros/latex/contrib/l3kernel/CHANGELOG.md
@@ -7,17 +7,35 @@ this project uses date-based 'snapshot' version identifiers.
## [Unreleased]
-## [2023-12-11]
+## [2024-01-04]
+
+### Added
+- Documentation for `\bitset_show_named_index:N` (issue \#1372)
+- `\bitset_log_named_index:N`
+- `\tl_build_get_intermediate:NN`
+- Support for `.default:n` values for the `unknown` handler (see issue \#67)
+
+### Changed
+- Improved method to suppress `l3bitset` where required
+- Clarify behavior of `\tl_if_novalue:n(TF)` (see issue \#1402)
-## [2023-12-12]
+### Deprecated
+- `\tl_build_get:NN` in favor of `\tl_build_get_intermediate:NN`
### Fixed
-- Support for deprecated `pdf` module functions (issue \#1373)
-- Generate stub `l3bitset` for transitional support
+- Handling of `documented-as` variants in `l3doc` indexing
+ (see issue \#1345)
+- Missing trailing `TF` in single variant of conditional functions (issue \#1398)
+
+## [2023-12-11]
### Changed
- Use keyval handler for `l3doc` class options
+### Fixed
+- Support for deprecated `pdf` module functions (issue \#1373)
+- Generate stub `l3bitset` for transitional support
+
## [2023-12-08]
### Added
@@ -35,7 +53,7 @@ this project uses date-based 'snapshot' version identifiers.
- Documentation for `\c_nan_fp`
- `\str_case_e:en(TF)`
-### Changes
+### Changed
- Speed up `\str_(g)set:Nn`, `\str_const:Nn`, `\str_(g)put_left:Nn`,
and `\str_(g)put_right:Nn`
@@ -1617,9 +1635,9 @@ 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/2023-12-11...HEAD
-[2023-12-11]: https://github.com/latex3/latex3/compare/2023-12-12...2023-12-11
-[2023-12-12]: https://github.com/latex3/latex3/compare/2023-12-08...2023-12-12
+[Unreleased]: https://github.com/latex3/latex3/compare/2024-01-04...HEAD
+[2024-01-04]: https://github.com/latex3/latex3/compare/2023-12-11...2024-01-04
+[2023-12-11]: https://github.com/latex3/latex3/compare/2023-12-08...2023-12-11
[2023-12-08]: https://github.com/latex3/latex3/compare/2023-11-09...2023-12-08
[2023-11-09]: https://github.com/latex3/latex3/compare/2023-11-01...2023-11-09
[2023-11-01]: https://github.com/latex3/latex3/compare/2023-10-23...2023-11-01
diff --git a/macros/latex/contrib/l3kernel/README.md b/macros/latex/contrib/l3kernel/README.md
index 3ad1051d46..1173d3966f 100644
--- a/macros/latex/contrib/l3kernel/README.md
+++ b/macros/latex/contrib/l3kernel/README.md
@@ -1,7 +1,7 @@
LaTeX3 Programming Conventions
==============================
-Release 2023-12-11
+Release 2024-01-04
Overview
--------
@@ -30,6 +30,7 @@ The `l3kernel` bundle requires the e-TeX extensions and a number of additional
particular, the functionality equivalent to the following pdfTeX primitives must
be available
+- `\ifincsname`
- `\ifpdfprimitive`
- `\pdfcreationdate`
- `\pdfelapsedtime`
@@ -90,6 +91,6 @@ by e-mail: <latex-team@latex-project.org>.
-----
-<p>Copyright (C) 1998-2012,2015-2023 The LaTeX Project <br />
+<p>Copyright (C) 1998-2012,2015-2024 The LaTeX Project <br />
<a href="http://latex-project.org/">http://latex-project.org/</a> <br />
All rights reserved.</p>
diff --git a/macros/latex/contrib/l3kernel/expl3.dtx b/macros/latex/contrib/l3kernel/expl3.dtx
index 7c6ffe952b..c62a81f8ad 100644
--- a/macros/latex/contrib/l3kernel/expl3.dtx
+++ b/macros/latex/contrib/l3kernel/expl3.dtx
@@ -2,7 +2,7 @@
%
%% File: expl3.dtx
%
-% Copyright (C) 1990-2023 The LaTeX Project
+% Copyright (C) 1990-2024 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -24,7 +24,7 @@
%
%<*driver|generic|package|2ekernel>
%</driver|generic|package|2ekernel>
-\def\ExplFileDate{2023-12-11}%
+\def\ExplFileDate{2024-01-04}%
%<*driver>
\documentclass[full]{l3doc}
\usepackage{graphicx}
@@ -51,7 +51,7 @@
% }^^A
% }
%
-% \date{Released 2023-12-11}
+% \date{Released 2024-01-04}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/expl3.pdf b/macros/latex/contrib/l3kernel/expl3.pdf
index 6981f1fc34..123d474f9b 100644
--- a/macros/latex/contrib/l3kernel/expl3.pdf
+++ b/macros/latex/contrib/l3kernel/expl3.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/interface3.pdf b/macros/latex/contrib/l3kernel/interface3.pdf
index b7598e7082..3144931ce4 100644
--- a/macros/latex/contrib/l3kernel/interface3.pdf
+++ b/macros/latex/contrib/l3kernel/interface3.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/interface3.tex b/macros/latex/contrib/l3kernel/interface3.tex
index f9f461a288..06b8b3d8a6 100644
--- a/macros/latex/contrib/l3kernel/interface3.tex
+++ b/macros/latex/contrib/l3kernel/interface3.tex
@@ -2,7 +2,7 @@
File: interface3.tex
-Copyright (C) 1990-2011,2017-2023 The LaTeX Project
+Copyright (C) 1990-2011,2017-2024 The LaTeX Project
It may be distributed and/or modified under the conditions of the
LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -29,7 +29,7 @@ for those people who are interested.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% This document typesets the LaTeX3 interface descriptions a single document.
-% This produces quite a large file (more than 170 pages currently).
+% This produces quite a large file (more than 360 pages as of Dec 2023).
%
% There is also a full version of the sources (source3.tex) which additionally
% also typesets the command implementations.
diff --git a/macros/latex/contrib/l3kernel/l3.ins b/macros/latex/contrib/l3kernel/l3.ins
index 7f1d882f8c..776e777c46 100644
--- a/macros/latex/contrib/l3kernel/l3.ins
+++ b/macros/latex/contrib/l3kernel/l3.ins
@@ -2,7 +2,7 @@
File l3.ins
-Copyright (C) 2011,2012,2014-2023 The LaTeX Project
+Copyright (C) 2011,2012,2014-2024 The LaTeX Project
It may be distributed and/or modified under the conditions of the
LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -35,7 +35,7 @@ license information is placed in the derived files.
\preamble
-Copyright (C) 1990-2023 The LaTeX Project
+Copyright (C) 1990-2024 The LaTeX Project
It may be distributed and/or modified under the conditions of
the LaTeX Project Public License (LPPL), either version 1.3c of
@@ -152,14 +152,12 @@ and all files in that bundle must be distributed together.
\generate{\file{l3names.def} {\from{l3names.dtx} {names}}}
-\generate{\file{l3bitset.sty} {\from{l3bitset.dtx} {stub}}}
-
% Lua code
\def\MetaPrefix{--}
\preamble
-Copyright (C) 1990-2023 The LaTeX Project
+Copyright (C) 1990-2024 The LaTeX Project
It may be distributed and/or modified under the conditions of
the LaTeX Project Public License (LPPL), either version 1.3c of
diff --git a/macros/latex/contrib/l3kernel/l3basics.dtx b/macros/latex/contrib/l3kernel/l3basics.dtx
index 716edf4c7c..761aa46a79 100644
--- a/macros/latex/contrib/l3kernel/l3basics.dtx
+++ b/macros/latex/contrib/l3kernel/l3basics.dtx
@@ -2,7 +2,7 @@
%
%% File: l3basics.dtx
%
-% Copyright (C) 1990-2023 The LaTeX Project
+% Copyright (C) 1990-2024 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -31,7 +31,7 @@
% \fi
%
% \title{^^A
-% The \pkg{l3basics} package\\ Basic definitions^^A
+% The \pkg{l3basics} module\\ Basic definitions^^A
% }
%
% \author{^^A
@@ -43,17 +43,17 @@
% }^^A
% }
%
-% \date{Released 2023-12-11}
+% \date{Released 2024-01-04}
%
% \maketitle
%
% \begin{documentation}
%
-% As the name suggest this package holds some basic definitions which
-% are needed by most or all other packages in this set.
+% As the name suggests, this module holds some basic definitions which
+% are needed by most or all other modules in this set.
%
-% Here we describe those functions that are used all over the place. With
-% that we mean functions dealing with the construction and testing of
+% Here we describe those functions that are used all over the place.
+% By that, we mean functions dealing with the construction and testing of
% control sequences. Furthermore the basic parts of conditional
% processing are covered; conditional processing dealing with specific
% data types is described in the modules specific for the respective
@@ -957,7 +957,7 @@
% \begin{function}[EXP]
% {
% \use_i:nn, \use_ii:nn ,
-% \use_i:nnn , \use_ii:nnn , \use_iii:nnn , \use_i_ii:nnn ,
+% \use_i:nnn , \use_ii:nnn , \use_iii:nnn ,
% \use_i:nnnn, \use_ii:nnnn, \use_iii:nnnn, \use_iv:nnnn ,
% \use_i:nnnnn, \use_ii:nnnnn, \use_iii:nnnnn, \use_iv:nnnnn ,
% \use_v:nnnnn ,
@@ -966,7 +966,7 @@
% \use_i:nnnnnnn, \use_ii:nnnnnnn, \use_iii:nnnnnnn, \use_iv:nnnnnnn ,
% \use_v:nnnnnnn , \use_vi:nnnnnnn , \use_vii:nnnnnnn ,
% \use_i:nnnnnnnn, \use_ii:nnnnnnnn, \use_iii:nnnnnnnn, \use_iv:nnnnnnnn ,
-% \use_v:nnnnnnnn , \use_vi:nnnnnnnn , \use_vii:nnnnnnnn , \use_vii:nnnnnnnn ,
+% \use_v:nnnnnnnn , \use_vi:nnnnnnnn , \use_vii:nnnnnnnn , \use_viii:nnnnnnnn ,
% \use_i:nnnnnnnnn, \use_ii:nnnnnnnnn, \use_iii:nnnnnnnnn, \use_iv:nnnnnnnnn ,
% \use_v:nnnnnnnnn , \use_vi:nnnnnnnnn , \use_vii:nnnnnnnnn , \use_viii:nnnnnnnnn ,
% \use_ix:nnnnnnnnn
@@ -1678,7 +1678,7 @@
%
% \begin{macro}[EXP]
% {
-% \use_i:nnn , \use_ii:nnn , \use_iii:nnn , \use_i_ii:nnn ,
+% \use_i:nnn , \use_ii:nnn , \use_iii:nnn ,
% \use_i:nnnn, \use_ii:nnnn, \use_iii:nnnn, \use_iv:nnnn ,
% \use_i:nnnnn, \use_ii:nnnnn, \use_iii:nnnnn, \use_iv:nnnnn ,
% \use_v:nnnnn ,
@@ -1687,7 +1687,7 @@
% \use_i:nnnnnnn, \use_ii:nnnnnnn, \use_iii:nnnnnnn, \use_iv:nnnnnnn ,
% \use_v:nnnnnnn , \use_vi:nnnnnnn , \use_vii:nnnnnnn ,
% \use_i:nnnnnnnn, \use_ii:nnnnnnnn, \use_iii:nnnnnnnn, \use_iv:nnnnnnnn ,
-% \use_v:nnnnnnnn , \use_vi:nnnnnnnn , \use_vii:nnnnnnnn , \use_vii:nnnnnnnn ,
+% \use_v:nnnnnnnn , \use_vi:nnnnnnnn , \use_vii:nnnnnnnn , \use_viii:nnnnnnnn ,
% \use_i:nnnnnnnnn, \use_ii:nnnnnnnnn, \use_iii:nnnnnnnnn, \use_iv:nnnnnnnnn ,
% \use_v:nnnnnnnnn , \use_vi:nnnnnnnnn , \use_vii:nnnnnnnnn , \use_viii:nnnnnnnnn ,
% \use_ix:nnnnnnnnn
@@ -1697,7 +1697,6 @@
\cs_set:Npn \use_i:nnn #1#2#3 {#1}
\cs_set:Npn \use_ii:nnn #1#2#3 {#2}
\cs_set:Npn \use_iii:nnn #1#2#3 {#3}
-\cs_set:Npn \use_i_ii:nnn #1#2#3 {#1#2}
\cs_set:Npn \use_i:nnnn #1#2#3#4 {#1}
\cs_set:Npn \use_ii:nnnn #1#2#3#4 {#2}
\cs_set:Npn \use_iii:nnnn #1#2#3#4 {#3}
@@ -1740,6 +1739,12 @@
% \end{macrocode}
% \end{macro}
%
+% \begin{macro}[EXP]{\use_i_ii:nnn}
+% \begin{macrocode}
+\cs_set:Npn \use_i_ii:nnn #1#2#3 {#1#2}
+% \end{macrocode}
+% \end{macro}
+%
% \begin{macro}[EXP]{\use_ii_i:nn}
% \begin{macrocode}
\cs_set:Npn \use_ii_i:nn #1#2 { #2 #1 }
@@ -2656,9 +2661,9 @@
\cs_set:Npn \@@_tmp:w #1#2
{
\cs_set_protected:Npn #1 ##1
- {
- \__kernel_chk_if_free_cs:N ##1
- #2 ##1
+ {
+ \__kernel_chk_if_free_cs:N ##1
+ #2 ##1
}
}
\@@_tmp:w \cs_new_nopar:Npn \cs_gset_nopar:Npn
diff --git a/macros/latex/contrib/l3kernel/l3bitset.dtx b/macros/latex/contrib/l3kernel/l3bitset.dtx
index 545d7c3357..d362d59adb 100644
--- a/macros/latex/contrib/l3kernel/l3bitset.dtx
+++ b/macros/latex/contrib/l3kernel/l3bitset.dtx
@@ -2,7 +2,7 @@
%
%% File: l3bitset.dtx
%
-% Copyright (C) 2020-2023 The LaTeX Project
+% Copyright (C) 2020-2024 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -30,7 +30,7 @@
%</driver>
% \fi
% \title{^^A
-% The \pkg{l3bitset} package\\ Bitsets^^A
+% The \pkg{l3bitset} module\\ Bitsets^^A
% }
%
% \author{^^A
@@ -42,13 +42,13 @@
% }^^A
% }
%
-% \date{Released 2023-12-11}
+% \date{Released 2024-01-04}
%
% \maketitle
%
% \begin{documentation}
%
-% This package defines and implements the data type \texttt{bitset}, a vector of
+% This module defines and implements the data type \texttt{bitset}, a vector of
% bits. The size of the vector may grow dynamically.
% Individual bits can be set and unset by names pointing to an index position.
% The names |1|, |2|, |3|, \ldots\ are predeclared and point to the
@@ -64,11 +64,11 @@
% The bitset is stored as a string (but one shouldn't rely on the internal
% representation) and so the vector size is theoretically
% unlimited, only restricted by \TeX-memory. But the functions to set and clear
-% bits uses integer functions for the index so bitsets can't be longer
+% bits use integer functions for the index so bitsets can't be longer
% than $2^{31} - 1$.
% The export function
% \cs{bitset_to_arabic:N} can use functions from the \texttt{int} module only if
-% the largest index used for this bitset is smaller then $32$, for longer
+% the largest index used for this bitset is smaller than $32$, for longer
% bitsets \texttt{fp} is used and this is slower.
%
% \section{Creating bitsets}
@@ -79,8 +79,8 @@
% \cs{bitset_new:N} \meta{bitset var} \\
% \cs{bitset_new:Nn} \meta{bitset var}
% ~~\{
-% ~~~~\meta{name1} |=| \meta{index1} |,|
-% ~~~~\meta{name2} |=| \meta{index2} |,| \ldots{}
+% ~~~~\meta{name_1} |=| \meta{index_1} |,|
+% ~~~~\meta{name_2} |=| \meta{index_2} |,| \ldots{}
% ~~\}
% \end{syntax}
% Creates a new \meta{bitset var} or raises an error if the name is already taken.
@@ -101,7 +101,7 @@
%
% \meta{index\ldots} should be a positive number or an
% \meta{integer expression} which evaluates to a positive number.
-% The expression is evaluated when the index is used, not a declaration time.
+% The expression is evaluated when the index is used, not at declaration time.
% The names \meta{name\ldots}
% should be unique. Using a number as name, e.g.~|10=1|, is allowed, it
% then overwrites the predeclared name |10|,
@@ -117,8 +117,8 @@
% \begin{syntax}
% \cs{bitset_addto_named_index:Nn} \meta{bitset var}
% ~~\{
-% ~~~~\meta{name1} |=| \meta{index1} |,|
-% ~~~~\meta{name2} |=| \meta{index2} |,| \ldots{}
+% ~~~~\meta{name_1} |=| \meta{index_1} |,|
+% ~~~~\meta{name_2} |=| \meta{index_2} |,| \ldots{}
% ~~\}
% \end{syntax}
% This extends or changes the name--index pairs for \meta{bitset var}
@@ -145,7 +145,7 @@
% print = 3
% }
% \end{verbatim}
-% it is possible to set bit $3$ by using any of this alternatives:
+% it is possible to set bit $3$ by using any of these alternatives:
% \begin{verbatim}
% \bitset_set_true:Nn \l_pdfannot_F_bitset {Print}
% \bitset_set_true:Nn \l_pdfannot_F_bitset {print}
@@ -156,7 +156,7 @@
% {\bitset_if_exist:N, \bitset_if_exist:c}
% \begin{syntax}
% \cs{bitset_if_exist_p:N} \meta{bitset var}
-% \cs{bitset_if_exist:NTF} \meta{bitset var} \Arg{true code} \Arg{false code}%
+% \cs{bitset_if_exist:NTF} \meta{bitset var} \Arg{true code} \Arg{false code}
% \end{syntax}
% Tests whether the \meta{bitset var} exist.
% \end{function}
@@ -172,7 +172,7 @@
% \cs{bitset_set_true:Nn} \meta{bitset var} \Arg{name}
% \end{syntax}
% This sets the bit of the index position represented by \Arg{name} to $1$.
-% \Arg{name} should be either one of the predeclared names
+% \meta{name} should be either one of the predeclared names
% |1|, |2|, |3|, \ldots, or one of the names added manually.
% Index position are 1-based.
% If needed the length of the bit vector is enlarged.
@@ -188,7 +188,7 @@
% \end{syntax}
% This unsets the bit of the index position represented by \Arg{name} (sets
% it to $0$).
-% \Arg{name} should be either one of the predeclared names
+% \meta{name} should be either one of the predeclared names
% |1|, |2|, |3|, \ldots, or one of the names added manually.
% The index is $1$-based. If the index position is larger
% than the current length of the bit vector
@@ -213,8 +213,8 @@
% \cs{bitset_item:Nn} \meta{bitset var} \Arg{name}
% \end{syntax}
% \cs{bitset_item:Nn} outputs \texttt{1} if the bit with
-% the index number represented by \Arg{name} is set and \texttt{0} otherwise.
-% \Arg{name} is either one of the predeclared names
+% the index number represented by \meta{name} is set and \texttt{0} otherwise.
+% \meta{name} is either one of the predeclared names
% |1|, |2|, |3|, \ldots, or one of the names added manually.
% \end{function}
%
@@ -236,8 +236,8 @@
% This leaves the current value of the bitset expressed as
% a decimal number in the input stream. If no bit has been set yet,
% the output is zero. The function uses \cs{int_from_bin:n} if the largest
-% index that have been set or unset is smaller then $32$, and a slower implementation
-% based on \cs{fp_eval:n} otherwise.
+% index that have been set or unset is smaller than $32$, and a slower
+% implementation based on \cs{fp_eval:n} otherwise.
% \end{function}
%
% \begin{function}[added = 2023-11-15]
@@ -245,7 +245,8 @@
% \begin{syntax}
% \cs{bitset_show:N} \meta{bitset var}
% \end{syntax}
-% Displays the binary and decimal value of the \meta{bitset var} on the terminal,
+% Displays the binary and decimal values of the \meta{bitset var}
+% on the terminal.
% \end{function}
%
% \begin{function}[added = 2023-11-15]
@@ -253,7 +254,30 @@
% \begin{syntax}
% \cs{bitset_log:N} \meta{bitset var}
% \end{syntax}
-% Writes the value of the \meta{bitset var} in the log file.
+% Writes the binary and decimal values of the \meta{bitset var}
+% in the log file.
+% \end{function}
+%
+% \begin{function}[added = 2023-11-15]
+% {
+% \bitset_show_named_index:N, \bitset_show_named_index:c
+% }
+% \begin{syntax}
+% \cs{bitset_show_named_index:N} \meta{bitset var}
+% \end{syntax}
+% Displays declared name--index pairs of the \meta{bitset var}
+% on the terminal.
+% \end{function}
+%
+% \begin{function}[added = 2023-12-11]
+% {
+% \bitset_log_named_index:N, \bitset_log_named_index:c
+% }
+% \begin{syntax}
+% \cs{bitset_log_named_index:N} \meta{bitset var}
+% \end{syntax}
+% Writes declared name--index pairs of the \meta{bitset var}
+% in the log file.
% \end{function}
%
% \end{documentation}
@@ -270,6 +294,15 @@
%<@@=bitset>
% \end{macrocode}
%
+% Transitional support.
+% \begin{macrocode}
+\cs_if_exist:NT \@expl@finalise@setup@@@@
+ {
+ \tl_gput_right:Nn \@expl@finalise@setup@@@@
+ { \declare@file@substitution { l3bitset.sty } { null.tex } }
+ }
+% \end{macrocode}
+%
% A bitset is a string variable.
% \begin{macro}{\bitset_new:N, \bitset_new:c}
% \begin{macro}{\bitset_new:Nn, \bitset_new:cn}
@@ -280,40 +313,27 @@
\cs_gset_eq:NN #1 \c_zero_str
\prop_new:c { g__bitset_ \cs_to_str:N #1 _name_prop }
}
-
\cs_new_protected:Npn \bitset_new:Nn #1 #2
{
\__kernel_chk_if_free_cs:N #1
\cs_gset_eq:NN #1 \c_zero_str
\prop_new:c { g__bitset_ \cs_to_str:N #1 _name_prop }
\prop_gset_from_keyval:cn
- { g__bitset_ \cs_to_str:N #1 _name_prop }
- {#2}
+ { g__bitset_ \cs_to_str:N #1 _name_prop }
+ {#2}
}
\cs_generate_variant:Nn \bitset_new:N { c }
+\cs_generate_variant:Nn \bitset_new:Nn { c }
% \end{macrocode}
% \end{macro}
% \end{macro}
%
-% \begin{variable}{\l_@@_tmp_prop}
-% A scratch prop to be able to extend the names properties.
-% \begin{macrocode}
-\prop_new:N \l_@@_tmp_prop
-% \end{macrocode}
-% \end{variable}
-%
% \begin{macro}{\bitset_addto_named_index:Nn}
% \begin{macrocode}
\cs_new_protected:Npn \bitset_addto_named_index:Nn #1#2
{
- \prop_set_from_keyval:Nn \l_@@_tmp_prop {#2}
- \prop_map_inline:Nn \l_@@_tmp_prop
- {
- \prop_gput:cnn
- { g_@@_ \cs_to_str:N #1 _name_prop }
- {##1}
- {##2}
- }
+ \prop_gput_from_keyval:cn
+ { g_@@_ \cs_to_str:N #1 _name_prop } { #2 }
}
% \end{macrocode}
% \end{macro}
@@ -329,6 +349,7 @@
\bitset_if_exist:c \str_if_exist:c { p , T , F , TF }
% \end{macrocode}
% \end{macro}
+%
% \begin{macro}{\@@_set_true:Nn, \@@_gset_true:Nn, \@@_set_false:Nn, \@@_gset_false:Nn}
% \begin{macro}{\@@_set:NNnN}
% The internal command uses only numbers (integer expressions) for the
@@ -358,12 +379,12 @@
}
}
{
- #1 #2
+ #1 #2
{
\str_range:Nnn #2 { 1 } { -1 - (#3) }
#4
\str_range:Nnn #2 { 1 - (#3) } { -1 }
- }
+ }
}
}
}
@@ -379,7 +400,7 @@
%
% \begin{macro}[TF]{\@@_test_digits:n}
% \begin{macro}{\@@_test_digits_end:n}
-% \begin{macro}{\@@_test_digits:wn}
+% \begin{macro}{\@@_test_digits:w}
% \url{https://chat.stackexchange.com/transcript/message/56878159#56878159}
% \begin{macrocode}
\prg_new_protected_conditional:Npnn \@@_test_digits:n #1 { TF }
@@ -468,14 +489,16 @@
\cs_generate_variant:Nn \bitset_gclear:N { c }
% \end{macrocode}
% \end{macro}
-% \begin{macro}
+%
+% \begin{macro}[EXP]
% {
% \bitset_to_arabic:N, \bitset_to_arabic:c,
% \bitset_to_bin:N, \bitset_to_bin:c,
% }
+% \begin{macro}[EXP]{\@@_to_int:nN}
% The naming of the commands follow the names in the \texttt{int} module.
% \cs{bitset_to_arabic:N} uses \cs{int_from_bin:n} if the string is shorter
-% then $32$ and the slower \cs{fp_eval} for larger bitsets.
+% than $32$ and the slower \cs{fp_eval:n} for larger bitsets.
% \begin{macrocode}
\cs_new:Npn \bitset_to_arabic:N #1
{
@@ -486,13 +509,11 @@
#1 \q_recursion_tail \q_recursion_stop
}
}
-
\cs_new:Npn \@@_to_int:nN #1#2
{
\quark_if_recursion_tail_stop_do:Nn #2 {#1}
\exp_args:Nf \@@_to_int:nN { \fp_eval:n { #1 * 2 + #2 } }
}
-
\cs_new:Npn \bitset_to_bin:N #1
{
#1
@@ -501,6 +522,8 @@
\cs_generate_variant:Nn \bitset_to_bin:N { c }
% \end{macrocode}
% \end{macro}
+% \end{macro}
+%
% \begin{macro}
% {
% \bitset_item:Nn, \bitset_item:cn
@@ -518,10 +541,10 @@
{ 0 - ( \prop_item:cn { g_@@_ \cs_to_str:N #1 _name_prop } {#2} ) }
+0
}
- }
- {
- 0
- }
+ }
+ {
+ 0
+ }
}
\cs_generate_variant:Nn \bitset_item:Nn { c }
% \end{macrocode}
@@ -537,28 +560,40 @@
\cs_generate_variant:Nn \bitset_show:N { c }
\cs_new_protected:Npn \bitset_log:N { \@@_show:NN \msg_log:nneeee }
\cs_generate_variant:Nn \bitset_log:N { c }
-\cs_new_protected:Npn \bitset_show_named_index:N { \@@_show_named_index:NN \msg_show:nneeee }
-\cs_generate_variant:Nn \bitset_show_named_index:N { c }
\cs_new_protected:Npn \@@_show:NN #1#2
{
\__kernel_chk_defined:NT #2
{
#1 { bitset } { show }
- { \token_to_str:N #2 }
- { \bitset_to_bin:N #2 }
- { \bitset_to_arabic:N #2 }
- { }
+ { \token_to_str:N #2 }
+ { \bitset_to_bin:N #2 }
+ { \bitset_to_arabic:N #2 }
+ { }
}
}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}
+% {
+% \bitset_show_named_index:N, \bitset_show_named_index:c,
+% \bitset_log_named_index:N, \bitset_log_named_index:c
+% }
+% \begin{macrocode}
+\cs_new_protected:Npn \bitset_show_named_index:N
+ { \@@_show_named_index:NN \msg_show:nneeee }
+\cs_generate_variant:Nn \bitset_show_named_index:N { c }
+\cs_new_protected:Npn \bitset_log_named_index:N
+ { \@@_show_named_index:NN \msg_log:nneeee }
+\cs_generate_variant:Nn \bitset_log_named_index:N { c }
\cs_new_protected:Npn \@@_show_named_index:NN #1#2
{
\__kernel_chk_defined:NT #2
{
#1 { bitset } { show-names }
- { \token_to_str:N #2 }
- { \prop_map_function:cN { g_@@_ \cs_to_str:N #2 _name_prop } \msg_show_item:nn }
- { }
- { }
+ { \token_to_str:N #2 }
+ { \prop_map_function:cN { g_@@_ \cs_to_str:N #2 _name_prop } \msg_show_item:nn }
+ { } { }
}
}
% \end{macrocode}
@@ -566,7 +601,7 @@
%
% \subsection{Messages}
% \begin{macrocode}
- \msg_new:nnn { bitset } { show }
+\msg_new:nnn { bitset } { show }
{
The~bitset~#1~has~the~representation: \\
>~binary:~#2 \\
@@ -589,21 +624,6 @@
%</package>
% \end{macrocode}
%
-% \subsection{Stub package}
-%
-% \begin{macrocode}
-%<*stub>
-% \end{macrocode}
-%
-% \begin{macrocode}
-\ProvidesExplPackage{l3bitset}{2023-12-11}{}
- {L3 Experimental bitset support}
-% \end{macrocode}
-%
-% \begin{macrocode}
-%</stub>
-% \end{macrocode}
-%
% \end{implementation}
%
% \PrintIndex
diff --git a/macros/latex/contrib/l3kernel/l3bootstrap.dtx b/macros/latex/contrib/l3kernel/l3bootstrap.dtx
index 1b9a6e18e6..1e8af0f79e 100644
--- a/macros/latex/contrib/l3kernel/l3bootstrap.dtx
+++ b/macros/latex/contrib/l3kernel/l3bootstrap.dtx
@@ -2,7 +2,7 @@
%
%% File: l3bootstrap.dtx
%
-% Copyright (C) 2011-2023 The LaTeX Project
+% Copyright (C) 2011-2024 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -31,7 +31,7 @@
% \fi
%
% \title{^^A
-% The \pkg{l3bootstrap} package\\ Bootstrap code^^A
+% The \pkg{l3bootstrap} module\\ Bootstrap code^^A
% }
%
% \author{^^A
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-12-11}
+% \date{Released 2024-01-04}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3box.dtx b/macros/latex/contrib/l3kernel/l3box.dtx
index 25de02e6fb..82041737ef 100644
--- a/macros/latex/contrib/l3kernel/l3box.dtx
+++ b/macros/latex/contrib/l3kernel/l3box.dtx
@@ -2,7 +2,7 @@
%
%% File: l3box.dtx
%
-% Copyright (C) 2005-2023 The LaTeX Project
+% Copyright (C) 2005-2024 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -31,7 +31,7 @@
% \fi
%
% \title{^^A
-% The \pkg{l3box} package\\ Boxes^^A
+% The \pkg{l3box} module\\ Boxes^^A
% }
%
% \author{^^A
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-12-11}
+% \date{Released 2024-01-04}
%
% \maketitle
%
@@ -1493,10 +1493,10 @@
% Put a horizontal box directly into the input stream.
% \begin{macrocode}
\cs_new_protected:Npn \hbox_to_wd:nn #1#2
- {
- \tex_hbox:D to \@@_dim_eval:n {#1}
- { \color_group_begin: #2 \color_group_end: }
- }
+ {
+ \tex_hbox:D to \@@_dim_eval:n {#1}
+ { \color_group_begin: #2 \color_group_end: }
+ }
\cs_new_protected:Npn \hbox_to_zero:n #1
{
\tex_hbox:D to \c_zero_dim
diff --git a/macros/latex/contrib/l3kernel/l3candidates.dtx b/macros/latex/contrib/l3kernel/l3candidates.dtx
index 044f23b41d..05e3fdc23a 100644
--- a/macros/latex/contrib/l3kernel/l3candidates.dtx
+++ b/macros/latex/contrib/l3kernel/l3candidates.dtx
@@ -2,7 +2,7 @@
%
%% File: l3candidates.dtx
%
-% Copyright (C) 2012-2023 The LaTeX Project
+% Copyright (C) 2012-2024 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -31,7 +31,7 @@
% \fi
%
% \title{^^A
-% The \pkg{l3candidates} package\\ Experimental additions to
+% The \pkg{l3candidates} module\\ Experimental additions to
% \pkg{l3kernel}^^A
% }
%
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2023-12-11}
+% \date{Released 2024-01-04}
%
% \maketitle
%
@@ -101,19 +101,6 @@
% \end{texnote}
% \end{function}
%
-% \section{Additions to \pkg{l3tl}}
-%
-% \begin{function}[added = 2018-04-01]{\tl_build_get:NN}
-% \begin{syntax}
-% \cs{tl_build_get:NN} \meta{tl~var_1} \meta{tl~var_2}
-% \end{syntax}
-% Stores the contents of the \meta{tl~var_1} in the \meta{tl~var_2}.
-% The \meta{tl~var_1} must have been set up with \cs{tl_build_begin:N}
-% or \cs{tl_build_gbegin:N}. The \meta{tl~var_2} is a
-% \enquote{normal} token list variable, assigned locally using
-% \cs{tl_set:Nn}.
-% \end{function}
-%
% \end{documentation}
%
% \begin{implementation}
@@ -154,21 +141,6 @@
% \end{macro}
% \end{macro}
%
-% \subsection{Additions to \pkg{l3tl}}
-%
-% \subsubsection{Building a token list}
-%
-% \begin{macrocode}
-%<@@=tl>
-% \end{macrocode}
-%
-% \begin{macro}{\tl_build_get:NN}
-% \begin{macrocode}
-\cs_new_protected:Npn \tl_build_get:NN
- { \@@_build_get:NNN \__kernel_tl_set:Ne }
-% \end{macrocode}
-% \end{macro}
-%
% \begin{macrocode}
%</package>
% \end{macrocode}
diff --git a/macros/latex/contrib/l3kernel/l3cctab.dtx b/macros/latex/contrib/l3kernel/l3cctab.dtx
index 03e6b6f8b5..325d4616df 100644
--- a/macros/latex/contrib/l3kernel/l3cctab.dtx
+++ b/macros/latex/contrib/l3kernel/l3cctab.dtx
@@ -2,7 +2,7 @@
%
%% File: l3cctab.dtx
%
-% Copyright (C) 2018-2023 The LaTeX Project
+% Copyright (C) 2018-2024 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -31,7 +31,7 @@
% \fi
%
% \title{^^A
-% The \pkg{l3cctab} package\\ Category code tables^^A
+% The \pkg{l3cctab} module\\ Category code tables^^A
% }
%
% \author{^^A
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-12-11}
+% \date{Released 2024-01-04}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3clist.dtx b/macros/latex/contrib/l3kernel/l3clist.dtx
index 4783ba761f..7b64db9863 100644
--- a/macros/latex/contrib/l3kernel/l3clist.dtx
+++ b/macros/latex/contrib/l3kernel/l3clist.dtx
@@ -3,7 +3,7 @@
%% File: l3clist.dtx
%
% Copyright (C) 2004-2011 Frank Mittelbach, The LaTeX Project
-% (C) 2012-2023 The LaTeX Project
+% (C) 2012-2024 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -32,7 +32,7 @@
% \fi
%
% \title{^^A
-% The \pkg{l3clist} package\\ Comma separated lists^^A
+% The \pkg{l3clist} module\\ Comma separated lists^^A
% }
%
% \author{^^A
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2023-12-11}
+% \date{Released 2024-01-04}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3coffins.dtx b/macros/latex/contrib/l3kernel/l3coffins.dtx
index 217fd933c2..e3d23ea537 100644
--- a/macros/latex/contrib/l3kernel/l3coffins.dtx
+++ b/macros/latex/contrib/l3kernel/l3coffins.dtx
@@ -2,7 +2,7 @@
%
%% File: l3coffins.dtx
%
-% Copyright (C) 2010-2023 The LaTeX Project
+% Copyright (C) 2010-2024 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -31,7 +31,7 @@
% \fi
%
% \title{^^A
-% The \pkg{l3coffins} package\\ Coffin code layer^^A
+% The \pkg{l3coffins} module\\ Coffin code layer^^A
% }
%
% \author{^^A
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-12-11}
+% \date{Released 2024-01-04}
%
% \maketitle
%
@@ -871,7 +871,7 @@
\box_set_eq:NN #1 #2
\prop_set_eq:cc { coffin ~ \@@_to_value:N #1 ~ corners }
{ coffin ~ \@@_to_value:N #2 ~ corners }
- \prop_set_eq:cc { coffin ~ \@@_to_value:N #1 ~ poles }
+ \prop_set_eq:cc { coffin ~ \@@_to_value:N #1 ~ poles }
{ coffin ~ \@@_to_value:N #2 ~ poles }
}
}
@@ -883,7 +883,7 @@
\box_gset_eq:NN #1 #2
\prop_gset_eq:cc { coffin ~ \@@_to_value:N #1 ~ corners }
{ coffin ~ \@@_to_value:N #2 ~ corners }
- \prop_gset_eq:cc { coffin ~ \@@_to_value:N #1 ~ poles }
+ \prop_gset_eq:cc { coffin ~ \@@_to_value:N #1 ~ poles }
{ coffin ~ \@@_to_value:N #2 ~ poles }
}
}
@@ -1266,7 +1266,7 @@
{
( \dim_to_fp:n {#7} / \dim_to_fp:n {#8} )
* ( \dim_to_fp:n {#4} - \dim_to_fp:n {#6} )
- + \dim_to_fp:n {#5}
+ + \dim_to_fp:n {#5}
}
}
}
@@ -1606,13 +1606,13 @@
\cs_new_protected:Npn \@@_find_corner_maxima_aux:nn #1#2
{
\dim_set:Nn \l_@@_left_corner_dim
- { \dim_min:nn { \l_@@_left_corner_dim } {#1} }
+ { \dim_min:nn { \l_@@_left_corner_dim } {#1} }
\dim_set:Nn \l_@@_right_corner_dim
- { \dim_max:nn { \l_@@_right_corner_dim } {#1} }
+ { \dim_max:nn { \l_@@_right_corner_dim } {#1} }
\dim_set:Nn \l_@@_bottom_corner_dim
- { \dim_min:nn { \l_@@_bottom_corner_dim } {#2} }
+ { \dim_min:nn { \l_@@_bottom_corner_dim } {#2} }
\dim_set:Nn \l_@@_top_corner_dim
- { \dim_max:nn { \l_@@_top_corner_dim } {#2} }
+ { \dim_max:nn { \l_@@_top_corner_dim } {#2} }
}
% \end{macrocode}
% \end{macro}
@@ -1915,13 +1915,13 @@
% The coffin structure is reset, and the corners are cleared: only
% those from the two parent coffins are needed.
% \begin{macrocode}
- \@@_reset_structure:N \l_@@_aligned_coffin
- \prop_clear:c
- {
- coffin ~ \@@_to_value:N \l_@@_aligned_coffin
- \c_space_tl corners
- }
- \@@_update_poles:N \l_@@_aligned_coffin
+ \@@_reset_structure:N \l_@@_aligned_coffin
+ \prop_clear:c
+ {
+ coffin ~ \@@_to_value:N \l_@@_aligned_coffin
+ \c_space_tl corners
+ }
+ \@@_update_poles:N \l_@@_aligned_coffin
% \end{macrocode}
% The structures of the parent coffins are now transferred to the new
% coffin, which requires that the appropriate offsets are applied. That
diff --git a/macros/latex/contrib/l3kernel/l3color.dtx b/macros/latex/contrib/l3kernel/l3color.dtx
index 2fa59821b4..7f9e36e6df 100644
--- a/macros/latex/contrib/l3kernel/l3color.dtx
+++ b/macros/latex/contrib/l3kernel/l3color.dtx
@@ -2,7 +2,7 @@
%
%% File: l3color.dtx
%
-% Copyright (C) 2017-2023 The LaTeX Project
+% Copyright (C) 2017-2024 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -31,7 +31,7 @@
% \fi
%
% \title{^^A
-% The \pkg{l3color} package\\ Color support^^A
+% The \pkg{l3color} module\\ Color support^^A
% }
%
% \author{^^A
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-12-11}
+% \date{Released 2024-01-04}
%
% \maketitle
%
@@ -779,9 +779,9 @@
\cs_new:Npn \@@_convert_rgb_cmyk:w #1 ~ #2 ~ #3 \s_@@_stop
{
\exp_args:Neee \@@_convert_rgb_cmyk:nnn
- { \fp_eval:n { 1 - #1 } }
- { \fp_eval:n { 1 - #2 } }
- { \fp_eval:n { 1 - #3 } }
+ { \fp_eval:n { 1 - #1 } }
+ { \fp_eval:n { 1 - #2 } }
+ { \fp_eval:n { 1 - #3 } }
}
\cs_new:Npn \@@_convert_rgb_cmyk:nnn #1#2#3
{
@@ -875,9 +875,9 @@
\cs_new_protected:Npn \@@_parse_set_eq:Nn #1#2
{
\tl_if_empty:NTF \l_color_fixed_model_tl
- { \exp_args:Nv \@@_parse_set_eq:nNn { l_@@_named_ #2 _tl } }
- { \exp_args:NV \@@_parse_set_eq:nNn \l_color_fixed_model_tl }
- #1 {#2}
+ { \exp_args:Nv \@@_parse_set_eq:nNn { l_@@_named_ #2 _tl } }
+ { \exp_args:NV \@@_parse_set_eq:nNn \l_color_fixed_model_tl }
+ #1 {#2}
}
% \end{macrocode}
% Here, we have to allow for the case where there is a fixed model:
@@ -894,8 +894,8 @@
\tl_set_eq:Nc \l_@@_model_tl { l_@@_named_ #3 _tl }
\prop_get:cVN { l_@@_named_ #3 _prop } \l_@@_model_tl
\l_@@_value_tl
- \@@_convert:nnN
- \l_@@_model_tl {#1} \l_@@_value_tl
+ \@@_convert:nnN
+ \l_@@_model_tl {#1} \l_@@_value_tl
\tl_set:Ne #2
{
{#1}
@@ -1190,11 +1190,11 @@
\use:e
{
\exp_not:N \@@_parse_model_hsb_aux:nnnnn
- { \@@_parse_number:n {#4} }
- { \fp_eval:n { round(#4 * (1 - #3) ,5) } }
- { \fp_eval:n { round(#4 * ( 1 - #3 * #2 ) ,5) } }
- { \fp_eval:n { round(#4 * ( 1 - #3 * (1 - #2) ) ,5) } }
- {#1}
+ { \@@_parse_number:n {#4} }
+ { \fp_eval:n { round(#4 * (1 - #3) ,5) } }
+ { \fp_eval:n { round(#4 * ( 1 - #3 * #2 ) ,5) } }
+ { \fp_eval:n { round(#4 * ( 1 - #3 * (1 - #2) ) ,5) } }
+ {#1}
}
}
\cs_new:Npn \@@_parse_model_hsb_aux:nnnnn #1#2#3#4#5
@@ -2317,10 +2317,10 @@
\tl_const:cn { c_@@_fallback_ #1 _tl } { cmyk }
\cs_new:cpn { @@_convert_ #1 _cmyk:w } ##1 \s_@@_stop
{
- \fp_eval:n {##1 * #3} ~
- \fp_eval:n {##1 * #4} ~
- \fp_eval:n {##1 * #5} ~
- \fp_eval:n {##1 * #6}
+ \fp_eval:n {##1 * #3} ~
+ \fp_eval:n {##1 * #4} ~
+ \fp_eval:n {##1 * #5} ~
+ \fp_eval:n {##1 * #6}
}
\cs_new:cpn { @@_convert_cmyk_ #1 :w } ##1 \s_@@_stop { 1 }
\prop_gput:Nnn \g_@@_alternative_values_prop {#1} { #3 , #4 , #5 , #6 }
@@ -2332,9 +2332,9 @@
\tl_const:cn { c_@@_fallback_ #1 _tl } { rgb }
\cs_new:cpn { @@_convert_ #1 _rgb:w } ##1 \s_@@_stop
{
- \fp_eval:n {##1 * #3} ~
- \fp_eval:n {##1 * #4} ~
- \fp_eval:n {##1 * #5}
+ \fp_eval:n {##1 * #3} ~
+ \fp_eval:n {##1 * #4} ~
+ \fp_eval:n {##1 * #5}
}
\cs_new:cpn { @@_convert_rgb_ #1 :w } ##1 \s_@@_stop { 1 }
\prop_gput:Nnn \g_@@_alternative_values_prop {#1} { #3 , #4 , #5 }
@@ -2495,7 +2495,7 @@
{#2}
\clist_map_break:n { \use_none:nnnn }
}
- }
+ }
}
{
\str_if_eq:nnF {##1} { none }
diff --git a/macros/latex/contrib/l3kernel/l3debug.dtx b/macros/latex/contrib/l3kernel/l3debug.dtx
index 884ecdf6ac..423ffd5577 100644
--- a/macros/latex/contrib/l3kernel/l3debug.dtx
+++ b/macros/latex/contrib/l3kernel/l3debug.dtx
@@ -2,7 +2,7 @@
%
%% File: l3debug.dtx
%
-% Copyright (C) 2019-2023 The LaTeX Project
+% Copyright (C) 2019-2024 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -31,7 +31,7 @@
% \fi
%
% \title{^^A
-% The \pkg{l3debug} package\\ Debugging support^^A
+% The \pkg{l3debug} module\\ Debugging support^^A
% }
%
% \author{^^A
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-12-11}
+% \date{Released 2024-01-04}
%
% \maketitle
%
@@ -128,7 +128,7 @@
%
% Standard file identification.
% \begin{macrocode}
-\ProvidesExplFile{l3debug.def}{2023-12-11}{}{L3 Debugging support}
+\ProvidesExplFile{l3debug.def}{2024-01-04}{}{L3 Debugging support}
% \end{macrocode}
%
% \begin{variable}{\s_@@_stop}
@@ -165,12 +165,12 @@
% \begin{macro}{\debug_on:n, \debug_off:n, \@@_all_on:, \@@_all_off:}
% \begin{macrocode}
\cs_set_protected:Npn \debug_on:n #1
- {
+ {
\exp_args:No \clist_map_inline:nn { \tl_to_str:n {#1} }
- {
+ {
\cs_if_exist_use:cF { @@_ ##1 _on: }
{ \msg_error:nnn { debug } { debug } {##1} }
- }
+ }
}
\cs_set_protected:Npn \debug_off:n #1
{
diff --git a/macros/latex/contrib/l3kernel/l3deprecation.dtx b/macros/latex/contrib/l3kernel/l3deprecation.dtx
index f046e4a263..59007c6725 100644
--- a/macros/latex/contrib/l3kernel/l3deprecation.dtx
+++ b/macros/latex/contrib/l3kernel/l3deprecation.dtx
@@ -2,7 +2,7 @@
%
%% File: l3deprecation.dtx
%
-% Copyright (C) 2017-2023 The LaTeX Project
+% Copyright (C) 2017-2024 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -31,7 +31,7 @@
% \fi
%
% \title{^^A
-% The \pkg{l3deprecation} package\\ Deprecation errors^^A
+% The \pkg{l3deprecation} module\\ Deprecation errors^^A
% }
%
% \author{^^A
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-12-11}
+% \date{Released 2024-01-04}
%
% \maketitle
%
@@ -129,9 +129,9 @@
\__kernel_deprecation_error:Nnn #4 {#2} {#1}
}
{ \tex_let:D #4 \scan_stop: }
- \cs_if_eq:NNTF #3 \cs_gset_protected:Npn
- { \@@_warn_once:nnNnn {#1} {#2} #4 {#5} {#6} }
- { \@@_patch_aux:Nn #3 { #4 #5 {#6} } }
+ \cs_if_eq:NNTF #3 \cs_gset_protected:Npn
+ { \@@_warn_once:nnNnn {#1} {#2} #4 {#5} {#6} }
+ { \@@_patch_aux:Nn #3 { #4 #5 {#6} } }
}
% \end{macrocode}
% In case we want a warning, the \meta{function} is defined to produce
@@ -729,6 +729,13 @@
% \end{macrocode}
% \end{macro}
%
+% \begin{macro}{\tl_build_get:NN}
+% \begin{macrocode}
+\__kernel_patch_deprecation:nnNNpn { 2023-10-25 } { \tl_build_get_intermediate:NN }
+\cs_new_protected:Npn \tl_build_get:NN { \tl_build_get_intermediate:NN }
+% \end{macrocode}
+% \end{macro}
+%
% \subsection{Deprecated \pkg{l3token} functions}
%
% \begin{macrocode}
diff --git a/macros/latex/contrib/l3kernel/l3doc.dtx b/macros/latex/contrib/l3kernel/l3doc.dtx
index 983df56fab..d24fcce4f8 100644
--- a/macros/latex/contrib/l3kernel/l3doc.dtx
+++ b/macros/latex/contrib/l3kernel/l3doc.dtx
@@ -2,7 +2,7 @@
%
%% File: l3doc.dtx
%
-% Copyright (C) 1990-2023 The LaTeX Project
+% Copyright (C) 1990-2024 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -31,7 +31,7 @@
\askforoverwritefalse
\preamble
-Copyright (C) 1990-2023 The LaTeX Project
+Copyright (C) 1990-2024 The LaTeX Project
It may be distributed and/or modified under the conditions of
the LaTeX Project Public License (LPPL), either version 1.3c of
@@ -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}{2023-12-11}{}
+\ProvidesExplClass{l3doc}{2024-01-04}{}
{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 2023-12-11}
+% \date{Released 2024-01-04}
% \maketitle
% \tableofcontents
%
@@ -1443,11 +1443,11 @@ and all files in that bundle must be distributed together.
\bool_gset_true:N \g_@@_typeset_documentation_bool
\bool_gset_true:N \g_@@_typeset_implementation_bool
} ,
- onlydoc .code:n =
- {
- \bool_gset_true:N \g_@@_typeset_documentation_bool
- \bool_gset_false:N \g_@@_typeset_implementation_bool
- } ,
+ onlydoc .code:n =
+ {
+ \bool_gset_true:N \g_@@_typeset_documentation_bool
+ \bool_gset_false:N \g_@@_typeset_implementation_bool
+ } ,
check .bool_gset:N = \g_@@_checkfunc_bool ,
checktest .bool_gset:N = \g_@@_checktest_bool ,
kernel .bool_gset:N = \g_@@_kernel_bool ,
@@ -2015,28 +2015,28 @@ and all files in that bundle must be distributed together.
% Indexing.
% \begin{macrocode}
\bool_if:NT \l_@@_allow_indexing_bool
- {
- \bool_if:NF \l_@@_cmd_noindex_bool
- {
- \quark_if_no_value:NF \l_@@_cmd_index_tl
- {
- \__kernel_tl_set:Ne \l_@@_cmd_tl
- { \c_backslash_str \exp_not:o { \l_@@_cmd_index_tl } }
- }
- \exp_args:No \@@_key_get:n { \l_@@_cmd_tl }
- \quark_if_no_value:NF \l_@@_cmd_module_tl
+ {
+ \bool_if:NF \l_@@_cmd_noindex_bool
{
- \__kernel_tl_set:Ne \l_@@_index_module_tl
- { \tl_to_str:N \l_@@_cmd_module_tl }
+ \quark_if_no_value:NF \l_@@_cmd_index_tl
+ {
+ \__kernel_tl_set:Ne \l_@@_cmd_tl
+ { \c_backslash_str \exp_not:o { \l_@@_cmd_index_tl } }
+ }
+ \exp_args:No \@@_key_get:n { \l_@@_cmd_tl }
+ \quark_if_no_value:NF \l_@@_cmd_module_tl
+ {
+ \__kernel_tl_set:Ne \l_@@_index_module_tl
+ { \tl_to_str:N \l_@@_cmd_module_tl }
+ }
+ \@@_special_index_module:ooonN
+ { \l_@@_index_key_tl }
+ { \l_@@_index_macro_tl }
+ { \l_@@_index_module_tl }
+ { usage }
+ \l_@@_index_internal_bool
}
- \@@_special_index_module:ooonN
- { \l_@@_index_key_tl }
- { \l_@@_index_macro_tl }
- { \l_@@_index_module_tl }
- { usage }
- \l_@@_index_internal_bool
- }
- }
+ }
}
\cs_generate_variant:Nn \@@_cmd:nn { no }
% \end{macrocode}
@@ -2729,7 +2729,10 @@ and all files in that bundle must be distributed together.
\@@_typeset_aux:n { \@@_get_function_name:n {#1} }
:
\int_compare:nTF { \seq_count:N \g_@@_variants_seq == 1 }
- { \seq_use:Nn \g_@@_variants_seq { } }
+ {
+ \seq_use:Nn \g_@@_variants_seq { }
+ \bool_if:NT #2 { \@@_typeset_TF: }
+ }
{
\hbox_set:Nn \l_tmpa_box
{ \seq_use:Nn \g__@@_variants_seq { \textrm| \nolinebreak[2] } }
@@ -2997,10 +3000,13 @@ and all files in that bundle must be distributed together.
% \end{macro}
%
% \begin{macro}{\@@_macro_save_names:}
+% \begin{macro}[EXP]{\@@_macro_save_names_aux:w}
% The list of names defined in a set of \env{macro} environments is
% eventually used to display on which page they are documented. If
% the |documented-as| key is given, use that, otherwise find names in
-% \cs{l_@@_names_block_tl}.
+% \cs{l_@@_names_block_tl}. The |documented-as| needs to be detokenized
+% without adding a space, so it has to be treated in a slightly awkward
+% way.
% \begin{macrocode}
\cs_new_protected:Npn \@@_macro_save_names:
{
@@ -3008,13 +3014,19 @@ and all files in that bundle must be distributed together.
{ \@@_names_block_base_map:N \@@_macro_save_names_aux:n }
{
\seq_gput_right:Ne \g_@@_nested_names_seq
- { \tl_to_str:N \l_@@_macro_documented_tl }
+ {
+ \exp_after:wN \@@_macro_save_names_aux:w
+ \l_@@_macro_documented_tl \q_@@_stop
+ }
}
}
+\cs_new:Npn \@@_macro_save_names_aux:w #1#2 \q_@@_stop
+ { \token_to_str:N #1 \tl_to_str:n {#2} }
\cs_new_protected:Npn \@@_macro_save_names_aux:n #1
{ \seq_gput_right:Nn \g_@@_nested_names_seq {#1} }
% \end{macrocode}
% \end{macro}
+% \end{macro}
%
% \begin{macro}{\@@_macro_exclude_index:}
% Some control sequences in a \env{macrocode} environment shouldn't
@@ -3316,21 +3328,21 @@ and all files in that bundle must be distributed together.
\cs_new_protected:Npn \@@_macro_end_check_tested:
{
\bool_lazy_all:nT
- {
- { \g_@@_checktest_bool }
- { ! \l_@@_macro_var_bool }
- { ! \l_@@_macro_tested_bool }
- }
- {
- \seq_set_filter:NNn \l_@@_tmpa_seq \l_@@_names_seq
- { ! \@@_if_macro_internal_p:n {##1} }
- \seq_gput_right:Ne \g_@@_not_tested_seq
- {
- \seq_use:Nn \l_@@_tmpa_seq { , }
- \bool_if:NTF \l_@@_macro_pTF_bool {~(pTF)}
- { \bool_if:NT \l_@@_macro_TF_bool {~(TF)} }
- }
- }
+ {
+ { \g_@@_checktest_bool }
+ { ! \l_@@_macro_var_bool }
+ { ! \l_@@_macro_tested_bool }
+ }
+ {
+ \seq_set_filter:NNn \l_@@_tmpa_seq \l_@@_names_seq
+ { ! \@@_if_macro_internal_p:n {##1} }
+ \seq_gput_right:Ne \g_@@_not_tested_seq
+ {
+ \seq_use:Nn \l_@@_tmpa_seq { , }
+ \bool_if:NTF \l_@@_macro_pTF_bool {~(pTF)}
+ { \bool_if:NT \l_@@_macro_TF_bool {~(TF)} }
+ }
+ }
}
% \end{macrocode}
% \end{macro}
@@ -3535,17 +3547,17 @@ and all files in that bundle must be distributed together.
\providecommand\Hy@footnote@currentHref{}
\prop_new:N\g_@@_fnmark_prop
\cs_new_protected:Npn \@@_fn_store:
- {
- \prop_gput:Nee\g_@@_fnmark_prop
- {fn\int_use:N\c@footnote}{{\Hy@footnote@currentHref}{\int_use:N\c@footnote}}
- }
+ {
+ \prop_gput:Nee\g_@@_fnmark_prop
+ {fn\int_use:N\c@footnote}{{\Hy@footnote@currentHref}{\int_use:N\c@footnote}}
+ }
\cs_new_protected:Npn \@@_fn_restore:n #1
- {
- \prop_get:NnN \g_@@_fnmark_prop {fn#1}\l_@@_tmpa_tl
- \tl_gset:Ne\Hy@footnote@currentHref
- {\exp_last_unbraced:NV\use_i:nn \l_@@_tmpa_tl }
- \setcounter{footnote}{\exp_last_unbraced:NV\use_ii:nn \l_@@_tmpa_tl}
- }
+ {
+ \prop_get:NnN \g_@@_fnmark_prop {fn#1}\l_@@_tmpa_tl
+ \tl_gset:Ne\Hy@footnote@currentHref
+ {\exp_last_unbraced:NV\use_i:nn \l_@@_tmpa_tl }
+ \setcounter{footnote}{\exp_last_unbraced:NV\use_ii:nn \l_@@_tmpa_tl}
+ }
\cs_generate_variant:Nn \hook_gput_next_code:nn {ne}
\cs_new_protected:Npn \@@_fn_footnote:nn #1 #2
@@ -3656,7 +3668,7 @@ and all files in that bundle must be distributed together.
% (which may not be the case).
% \begin{macrocode}
\cs_if_exist:NT \MaybeStop
- { \RenewCommandCopy \MaybeStop \StopEventually }
+ { \RenewCommandCopy \MaybeStop \StopEventually }
% \end{macrocode}
%
% \begin{macrocode}
@@ -4664,13 +4676,13 @@ and all files in that bundle must be distributed together.
{
\title
{
- The~\pkg{#1}~package \\ #2
+ The~\pkg{#1}~package \\ #2
}
\author
{
- The~\LaTeX3~Project\thanks{E-mail:~
- \href{mailto:latex-l@listserv.uni-heidelberg.de}
- {latex-l@listserv.uni-heidelberg.de}}
+ The~\LaTeX3~Project\thanks{E-mail:~
+ \href{mailto:latex-l@listserv.uni-heidelberg.de}
+ {latex-l@listserv.uni-heidelberg.de}}
}
\date{Released~\ExplFileDate}
\maketitle
@@ -4686,8 +4698,8 @@ and all files in that bundle must be distributed together.
{
\clist_map_inline:nn
{
- asin, acos, atan, acot,
- asinh, acosh, atanh, acoth, round, floor, ceil
+ asin, acos, atan, acot,
+ asinh, acosh, atanh, acoth, round, floor, ceil
}
{ \exp_args:Nc \DeclareMathOperator{#1}{#1} }
}
diff --git a/macros/latex/contrib/l3kernel/l3doc.pdf b/macros/latex/contrib/l3kernel/l3doc.pdf
index 2ca0d9cbc4..9201da42ef 100644
--- a/macros/latex/contrib/l3kernel/l3doc.pdf
+++ b/macros/latex/contrib/l3kernel/l3doc.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3docstrip.dtx b/macros/latex/contrib/l3kernel/l3docstrip.dtx
index 0d21cb4833..9e28f867c2 100644
--- a/macros/latex/contrib/l3kernel/l3docstrip.dtx
+++ b/macros/latex/contrib/l3kernel/l3docstrip.dtx
@@ -2,7 +2,7 @@
%
%% File l3dosctrip.dtx
%
-% Copyright (C) 2012-2023 The LaTeX Project
+% Copyright (C) 2012-2024 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -51,7 +51,7 @@
% \fi
%
% \title{^^A
-% The \pkg{l3docstrip} package\\ Code extraction and manipulation^^A
+% The \pkg{l3docstrip} module\\ Code extraction and manipulation^^A
% }
%
% \author{^^A
@@ -63,7 +63,7 @@
% }^^A
% }
%
-% \date{Released 2023-12-11}
+% \date{Released 2024-01-04}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3docstrip.pdf b/macros/latex/contrib/l3kernel/l3docstrip.pdf
index 887d4d5247..cb2d544930 100644
--- a/macros/latex/contrib/l3kernel/l3docstrip.pdf
+++ b/macros/latex/contrib/l3kernel/l3docstrip.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3expan.dtx b/macros/latex/contrib/l3kernel/l3expan.dtx
index e4b8a9967d..dd682a37d8 100644
--- a/macros/latex/contrib/l3kernel/l3expan.dtx
+++ b/macros/latex/contrib/l3kernel/l3expan.dtx
@@ -2,7 +2,7 @@
%
%% File: l3expan.dtx
%
-% Copyright (C) 1990-2023 The LaTeX Project
+% Copyright (C) 1990-2024 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -31,7 +31,7 @@
% \fi
%
% \title{^^A
-% The \pkg{l3expan} package\\ Argument expansion^^A
+% The \pkg{l3expan} module\\ Argument expansion^^A
% }
%
% \author{^^A
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-12-11}
+% \date{Released 2024-01-04}
%
% \maketitle
%
@@ -1525,7 +1525,7 @@
\cs_new:Npn \exp_last_two_unbraced:Noo #1#2#3
{ \exp_after:wN \@@_last_two_unbraced:noN \exp_after:wN {#3} {#2} #1 }
\cs_new:Npn \@@_last_two_unbraced:noN #1#2#3
- { \exp_after:wN #3 #2 #1 }
+ { \exp_after:wN #3 #2 #1 }
% \end{macrocode}
% \end{macro}
% \end{macro}
diff --git a/macros/latex/contrib/l3kernel/l3file.dtx b/macros/latex/contrib/l3kernel/l3file.dtx
index d33fe899d8..c715b4da65 100644
--- a/macros/latex/contrib/l3kernel/l3file.dtx
+++ b/macros/latex/contrib/l3kernel/l3file.dtx
@@ -2,7 +2,7 @@
%
%% File: l3file.dtx
%
-% Copyright (C) 1990-2023 The LaTeX Project
+% Copyright (C) 1990-2024 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -32,7 +32,7 @@
% \fi
%
% \title{^^A
-% The \pkg{l3file} package\\ File and I/O operations^^A
+% The \pkg{l3file} module\\ File and I/O operations^^A
% }
%
% \author{^^A
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2023-12-11}
+% \date{Released 2024-01-04}
%
% \maketitle
%
@@ -2158,12 +2158,12 @@
% \end{macrocode}
% Sanity check.
% \begin{macrocode}
- \int_compare:nNnT { \l_@@_line_target_int } < 0
- {
- \tl_set:Nn \l_@@_newline_tl { \iow_newline: }
- \int_set:Nn \l_@@_line_target_int
- { \l_iow_line_count_int + 1 }
- }
+ \int_compare:nNnT { \l_@@_line_target_int } < 0
+ {
+ \tl_set:Nn \l_@@_newline_tl { \iow_newline: }
+ \int_set:Nn \l_@@_line_target_int
+ { \l_iow_line_count_int + 1 }
+ }
% \end{macrocode}
% There is then a loop over the input, which stores the wrapped
% result in \cs{l_@@_wrap_tl}. After the loop, the resulting text is
@@ -3372,7 +3372,7 @@
{ \file_full_name:n {#1} }
{ \file_full_name:n {#3} }
#2
- }
+ }
\prg_generate_conditional_variant:Nnn \file_compare_timestamp:nNn
{ nNV , V , VNV } { p , T , F , TF }
\cs_new:Npn \@@_compare_timestamp:nnN #1#2#3
@@ -3388,11 +3388,11 @@
{
\tl_if_blank:nTF {#2}
{
- \if_charcode:w #3 >
- \prg_return_true:
- \else:
- \prg_return_false:
- \fi:
+ \if_charcode:w #3 >
+ \prg_return_true:
+ \else:
+ \prg_return_false:
+ \fi:
}
{
\if_int_compare:w
@@ -3825,8 +3825,8 @@
{
\exp_args:NV \@@_kernel_dependency_compare:nnn
\c__kernel_expl_date_tl {#1}
- }
- { \@@_kernel_dependency_compare:nnn { 0000-00-00 } {#1} }
+ }
+ { \@@_kernel_dependency_compare:nnn { 0000-00-00 } {#1} }
}
\cs_new_protected:Npn \@@_kernel_dependency_compare:nnn #1 #2 #3
{
diff --git a/macros/latex/contrib/l3kernel/l3flag.dtx b/macros/latex/contrib/l3kernel/l3flag.dtx
index d0203d5209..05768ae069 100644
--- a/macros/latex/contrib/l3kernel/l3flag.dtx
+++ b/macros/latex/contrib/l3kernel/l3flag.dtx
@@ -2,7 +2,7 @@
%
%% File: l3flag.dtx
%
-% Copyright (C) 2011-2023 The LaTeX Project
+% Copyright (C) 2011-2024 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -31,7 +31,7 @@
% \fi
%
% \title{^^A
-% The \pkg{l3flag} package\\ Expandable flags^^A
+% The \pkg{l3flag} module\\ Expandable flags^^A
% }
%
% \author{^^A
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-12-11}
+% \date{Released 2024-01-04}
%
% \maketitle
%
@@ -61,7 +61,7 @@
% to zero requires non-expandable assignments.
%
% Flag variables are always local. They are referenced by a \meta{flag
-% name} such as \texttt{@@_missing}. The \meta{flag name} is used as
+% name} such as \texttt{fp_overflow}. The \meta{flag name} is used as
% part of \cs{use:c} constructions hence is expanded at point of use.
% It must expand to character tokens only, with no spaces.
%
diff --git a/macros/latex/contrib/l3kernel/l3fp-assign.dtx b/macros/latex/contrib/l3kernel/l3fp-assign.dtx
index f5d3e6bb38..5784537889 100644
--- a/macros/latex/contrib/l3kernel/l3fp-assign.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-assign.dtx
@@ -2,7 +2,7 @@
%
%% File: l3fp-assign.dtx
%
-% Copyright (C) 2011-2023 The LaTeX Project
+% Copyright (C) 2011-2024 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -31,7 +31,7 @@
% \fi
%
% \title{^^A
-% The \pkg{l3fp-assign} package\\
+% The \pkg{l3fp-assign} module\\
% Floating point expressions^^A
% }
% \author{^^A
@@ -42,7 +42,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2023-12-11}
+% \date{Released 2024-01-04}
% \maketitle
%
% \begin{documentation}
diff --git a/macros/latex/contrib/l3kernel/l3fp-aux.dtx b/macros/latex/contrib/l3kernel/l3fp-aux.dtx
index 20c68b2964..1efa9da7cb 100644
--- a/macros/latex/contrib/l3kernel/l3fp-aux.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-aux.dtx
@@ -2,7 +2,7 @@
%
%% File: l3fp-aux.dtx
%
-% Copyright (C) 2011-2023 The LaTeX Project
+% Copyright (C) 2011-2024 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -31,7 +31,7 @@
% \fi
%
% \title{^^A
-% The \pkg{l3fp-aux} package\\ Support for floating points^^A
+% The \pkg{l3fp-aux} module\\ Support for floating points^^A
% }
%
% \author{^^A
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-12-11}
+% \date{Released 2024-01-04}
%
% \maketitle
%
@@ -906,7 +906,7 @@
#2#3#4; {#5} ;
}
\cs_new:Npn \@@_basics_pack_weird_high:NNNNNNNNw
- 1 #1#2#3#4 #5#6#7#8 #9; { ; {#1#2#3#4} {#5#6#7#8} {#9} }
+ 1 #1#2#3#4 #5#6#7#8 #9; { ; {#1#2#3#4} {#5#6#7#8} {#9} }
% \end{macrocode}
% \end{macro}
%
diff --git a/macros/latex/contrib/l3kernel/l3fp-basics.dtx b/macros/latex/contrib/l3kernel/l3fp-basics.dtx
index 7d2c3527d2..f50bded4d4 100644
--- a/macros/latex/contrib/l3kernel/l3fp-basics.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-basics.dtx
@@ -2,7 +2,7 @@
%
%% File: l3fp-basics.dtx
%
-% Copyright (C) 2011-2023 The LaTeX Project
+% Copyright (C) 2011-2024 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -31,7 +31,7 @@
% \fi
%
% \title{^^A
-% The \pkg{l3fp-basics} package\\
+% The \pkg{l3fp-basics} module\\
% Floating point arithmetic^^A
% }
% \author{^^A
@@ -42,7 +42,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2023-12-11}
+% \date{Released 2024-01-04}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp-convert.dtx b/macros/latex/contrib/l3kernel/l3fp-convert.dtx
index 4a1c9f2211..30cff3bb38 100644
--- a/macros/latex/contrib/l3kernel/l3fp-convert.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-convert.dtx
@@ -2,7 +2,7 @@
%
%% File: l3fp-convert.dtx
%
-% Copyright (C) 2011-2023 The LaTeX Project
+% Copyright (C) 2011-2024 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -31,7 +31,7 @@
% \fi
%
% \title{^^A
-% The \pkg{l3fp-convert} package\\ Floating point conversion^^A
+% The \pkg{l3fp-convert} module\\ Floating point conversion^^A
% }
%
% \author{^^A
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-12-11}
+% \date{Released 2024-01-04}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp-expo.dtx b/macros/latex/contrib/l3kernel/l3fp-expo.dtx
index bf385275ef..3a7616d3b9 100644
--- a/macros/latex/contrib/l3kernel/l3fp-expo.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-expo.dtx
@@ -2,7 +2,7 @@
%
%% File: l3fp-expo.dtx
%
-% Copyright (C) 2011-2023 The LaTeX Project
+% Copyright (C) 2011-2024 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -31,7 +31,7 @@
% \fi
%
% \title{^^A
-% The \pkg{l3fp-expo} package\\
+% The \pkg{l3fp-expo} module\\
% Floating point exponential-related functions^^A
% }
% \author{^^A
@@ -42,7 +42,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2023-12-11}
+% \date{Released 2024-01-04}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp-extended.dtx b/macros/latex/contrib/l3kernel/l3fp-extended.dtx
index 9350c1c41b..d65b1a1160 100644
--- a/macros/latex/contrib/l3kernel/l3fp-extended.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-extended.dtx
@@ -2,7 +2,7 @@
%
%% File: l3fp-extended.dtx
%
-% Copyright (C) 2011-2023 The LaTeX Project
+% Copyright (C) 2011-2024 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -31,7 +31,7 @@
% \fi
%
% \title{^^A
-% The \pkg{l3fp-extended} package\\
+% The \pkg{l3fp-extended} module\\
% Manipulating numbers with extended precision, for internal use^^A
% }
% \author{^^A
@@ -42,7 +42,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2023-12-11}
+% \date{Released 2024-01-04}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp-functions.dtx b/macros/latex/contrib/l3kernel/l3fp-functions.dtx
index 3ed473a097..d140af6758 100644
--- a/macros/latex/contrib/l3kernel/l3fp-functions.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-functions.dtx
@@ -30,7 +30,7 @@
% \fi
%
% \title{^^A
-% The \pkg{l3fp-functions} package\\ Floating point functions^^A
+% The \pkg{l3fp-functions} module\\ Floating point functions^^A
% }
%
% \author{^^A
@@ -42,7 +42,7 @@
% }^^A
% }
%
-% \date{Released 2023-12-11}
+% \date{Released 2024-01-04}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp-logic.dtx b/macros/latex/contrib/l3kernel/l3fp-logic.dtx
index 004290b05d..31cd180c39 100644
--- a/macros/latex/contrib/l3kernel/l3fp-logic.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-logic.dtx
@@ -2,7 +2,7 @@
%
%% File: l3fp-logic.dtx
%
-% Copyright (C) 2011-2023 The LaTeX Project
+% Copyright (C) 2011-2024 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -31,7 +31,7 @@
% \fi
%
% \title{^^A
-% The \pkg{l3fp-logic} package\\
+% The \pkg{l3fp-logic} module\\
% Floating point conditionals^^A
% }
% \author{^^A
@@ -42,7 +42,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2023-12-11}
+% \date{Released 2024-01-04}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp-parse.dtx b/macros/latex/contrib/l3kernel/l3fp-parse.dtx
index 0bc6861903..a4d2979c1e 100644
--- a/macros/latex/contrib/l3kernel/l3fp-parse.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-parse.dtx
@@ -2,7 +2,7 @@
%
%% File: l3fp-parse.dtx
%
-% Copyright (C) 2011-2023 The LaTeX Project
+% Copyright (C) 2011-2024 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -31,7 +31,7 @@
% \fi
%
% \title{^^A
-% The \pkg{l3fp-parse} package\\
+% The \pkg{l3fp-parse} module\\
% Floating point expression parsing^^A
% }
% \author{^^A
@@ -42,7 +42,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2023-12-11}
+% \date{Released 2024-01-04}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp-random.dtx b/macros/latex/contrib/l3kernel/l3fp-random.dtx
index 28a9d11dde..95671bce21 100644
--- a/macros/latex/contrib/l3kernel/l3fp-random.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-random.dtx
@@ -2,7 +2,7 @@
%
%% File: l3fp-random.dtx
%
-% Copyright (C) 2016-2023 The LaTeX Project
+% Copyright (C) 2016-2024 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -31,7 +31,7 @@
% \fi
%
% \title{^^A
-% The \pkg{l3fp-random} package\\
+% The \pkg{l3fp-random} module\\
% Floating point random numbers
% }
% \author{^^A
@@ -42,7 +42,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2023-12-11}
+% \date{Released 2024-01-04}
%
% \maketitle
%
@@ -434,10 +434,10 @@
\cs_new:Npn \@@_randint_auxiv_o:ww #1#2#3#4#5 ; #6#7#8#9
{
\if_int_compare:w
- \if_int_compare:w #1#2 > #6#7 \exp_stop_f: 1 \else:
+ \if_int_compare:w #1#2 > #6#7 \exp_stop_f: 1 \else:
\if_int_compare:w #1#2 < #6#7 \exp_stop_f: - \fi: \fi:
- #3#4 > #8#9 \exp_stop_f:
- \@@_use_i_until_s:nw
+ #3#4 > #8#9 \exp_stop_f:
+ \@@_use_i_until_s:nw
\fi:
\@@_randint_auxv_o:w {#1}{#2}{#3}{#4}#5
}
@@ -567,8 +567,8 @@
\exp_after:wN \@@_randint_wide_auxii:w
\int_value:w \@@_int_eval:w #5 * #3 + #6 * #1 +
(#5 * #4 + #6 * #3 + #7 * #1 +
- (#5 * #2 + #7 * #3 +
- (16384 * #6 + #7) * (16384 * #4 + #2) / 268435456) / 16384
+ (#5 * #2 + #7 * #3 +
+ (16384 * #6 + #7) * (16384 * #4 + #2) / 268435456) / 16384
) / 16384 \exp_after:wN ;
\int_value:w \@@_int_eval:w (#5 + #6) * 16384 + #7 ;
#1 ; #5 ;
diff --git a/macros/latex/contrib/l3kernel/l3fp-round.dtx b/macros/latex/contrib/l3kernel/l3fp-round.dtx
index 4fbc392922..8061147f0a 100644
--- a/macros/latex/contrib/l3kernel/l3fp-round.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-round.dtx
@@ -2,7 +2,7 @@
%
%% File: l3fp-round.dtx
%
-% Copyright (C) 2011-2023 The LaTeX Project
+% Copyright (C) 2011-2024 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -31,7 +31,7 @@
% \fi
%
% \title{^^A
-% The \pkg{l3fp-round} package\\ Rounding floating points^^A
+% The \pkg{l3fp-round} module\\ Rounding floating points^^A
% }
%
% \author{^^A
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-12-11}
+% \date{Released 2024-01-04}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp-symbolic.dtx b/macros/latex/contrib/l3kernel/l3fp-symbolic.dtx
index 596eb65a22..22b9585e5d 100644
--- a/macros/latex/contrib/l3kernel/l3fp-symbolic.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-symbolic.dtx
@@ -30,7 +30,7 @@
% \fi
%
% \title{^^A
-% The \pkg{l3fp-symbolic} package\\ Symbolic expressions^^A
+% The \pkg{l3fp-symbolic} module\\ Symbolic expressions^^A
% }
%
% \author{^^A
@@ -42,7 +42,7 @@
% }^^A
% }
%
-% \date{Released 2023-12-11}
+% \date{Released 2024-01-04}
%
% \maketitle
%
@@ -599,8 +599,8 @@
% \end{macro}
% \end{macro}
%
-% \begin{macro}{\fp_set_variable:nn}
-% \begin{macro}{\@@_set_variable:nn}
+% \begin{variable}{@@_symbolic}
+% \begin{macro}{\fp_set_variable:nn, \@@_set_variable:nn}
% Refuse invalid identifiers. If the variable does not exist yet,
% define it just as in \cs{fp_new_variable:n} (but without unnecessary
% checks). Then evaluate~|#2|. If the result contains the
@@ -642,7 +642,7 @@
}
% \end{macrocode}
% \end{macro}
-% \end{macro}
+% \end{variable}
%
% \subsection{Messages}
%
diff --git a/macros/latex/contrib/l3kernel/l3fp-traps.dtx b/macros/latex/contrib/l3kernel/l3fp-traps.dtx
index e2ce4ea35a..983fb91171 100644
--- a/macros/latex/contrib/l3kernel/l3fp-traps.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-traps.dtx
@@ -2,7 +2,7 @@
%
%% File: l3fp-traps.dtx
%
-% Copyright (C) 2011-2023 The LaTeX Project
+% Copyright (C) 2011-2024 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -31,7 +31,7 @@
% \fi
%
% \title{^^A
-% The \pkg{l3fp-traps} package\\
+% The \pkg{l3fp-traps} module\\
% Trapping floating-point exceptions^^A
% }
% \author{^^A
@@ -42,7 +42,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2023-12-11}
+% \date{Released 2024-01-04}
% \maketitle
%
% \begin{documentation}
@@ -74,10 +74,10 @@
%
% \begin{variable}[module = fp]
% {
-% flag fp_invalid_operation,
-% flag fp_division_by_zero,
-% flag fp_overflow,
-% flag fp_underflow
+% fp_invalid_operation,
+% fp_division_by_zero,
+% fp_overflow,
+% fp_underflow
% }
% Flags to denote exceptions.
% \begin{macrocode}
diff --git a/macros/latex/contrib/l3kernel/l3fp-trig.dtx b/macros/latex/contrib/l3kernel/l3fp-trig.dtx
index 9c329e4b95..78e1403da0 100644
--- a/macros/latex/contrib/l3kernel/l3fp-trig.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-trig.dtx
@@ -2,7 +2,7 @@
%
%% File: l3fp-trig.dtx
%
-% Copyright (C) 2011-2023 The LaTeX Project
+% Copyright (C) 2011-2024 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -31,7 +31,7 @@
% \fi
%
% \title{^^A
-% The \pkg{l3fp-trig} package\\
+% The \pkg{l3fp-trig} module\\
% Floating point trigonometric functions^^A
% }
% \author{^^A
@@ -42,7 +42,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2023-12-11}
+% \date{Released 2024-01-04}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp-types.dtx b/macros/latex/contrib/l3kernel/l3fp-types.dtx
index 46fe0c19c3..cf76b2747b 100644
--- a/macros/latex/contrib/l3kernel/l3fp-types.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-types.dtx
@@ -30,7 +30,7 @@
% \fi
%
% \title{^^A
-% The \pkg{l3fp-types} package\\ Floating point types^^A
+% The \pkg{l3fp-types} module\\ Floating point types^^A
% }
%
% \author{^^A
@@ -42,7 +42,7 @@
% }^^A
% }
%
-% \date{Released 2023-12-11}
+% \date{Released 2024-01-04}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp.dtx b/macros/latex/contrib/l3kernel/l3fp.dtx
index 3da05f4d19..4f4fee8af6 100644
--- a/macros/latex/contrib/l3kernel/l3fp.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp.dtx
@@ -2,7 +2,7 @@
%
%% File: l3fp.dtx
%
-% Copyright (C) 2011-2023 The LaTeX Project
+% Copyright (C) 2011-2024 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -37,7 +37,7 @@
%
%
% \title{^^A
-% The \pkg{l3fp} package\\ Floating points^^A
+% The \pkg{l3fp} module\\ Floating points^^A
% }
%
% \author{^^A
@@ -49,7 +49,7 @@
% }^^A
% }
%
-% \date{Released 2023-12-11}
+% \date{Released 2024-01-04}
%
% \maketitle
%
@@ -909,10 +909,10 @@
%
% \begin{variable}[module = fp]
% {
-% flag fp_overflow,
-% flag fp_underflow,
-% flag fp_invalid_operation,
-% flag fp_division_by_zero
+% fp_overflow,
+% fp_underflow,
+% fp_invalid_operation,
+% fp_division_by_zero
% }
% Flags denoting the occurrence of various floating-point exceptions.
% \end{variable}
@@ -1567,7 +1567,7 @@
%
% \section{Disclaimer and roadmap}
%
-% The package may break down if the escape character is among
+% This module may break if the escape character is among
% |0123456789_+|, or if it receives a \TeX{} primitive conditional affected
% by \cs{exp_not:N}.
%
diff --git a/macros/latex/contrib/l3kernel/l3fparray.dtx b/macros/latex/contrib/l3kernel/l3fparray.dtx
index 61c5fce745..6f8e1c4c0e 100644
--- a/macros/latex/contrib/l3kernel/l3fparray.dtx
+++ b/macros/latex/contrib/l3kernel/l3fparray.dtx
@@ -2,7 +2,7 @@
%
%% File: l3fparray.dtx
%
-% Copyright (C) 2018-2023 The LaTeX Project
+% Copyright (C) 2018-2024 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -32,7 +32,7 @@
%
%
% \title{^^A
-% The \pkg{l3fparray} package\\ Fast global floating point arrays^^A
+% The \pkg{l3fparray} module\\ Fast global floating point arrays^^A
% }
%
% \author{^^A
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2023-12-11}
+% \date{Released 2024-01-04}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3int.dtx b/macros/latex/contrib/l3kernel/l3int.dtx
index b3282ff9da..e0be12a51e 100644
--- a/macros/latex/contrib/l3kernel/l3int.dtx
+++ b/macros/latex/contrib/l3kernel/l3int.dtx
@@ -2,7 +2,7 @@
%
%% File: l3int.dtx
%
-% Copyright (C) 1990-2023 The LaTeX Project
+% Copyright (C) 1990-2024 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -31,7 +31,7 @@
% \fi
%
% \title{^^A
-% The \pkg{l3int} package\\ Integers^^A
+% The \pkg{l3int} module\\ Integers^^A
% }
%
% \author{^^A
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-12-11}
+% \date{Released 2024-01-04}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3intarray.dtx b/macros/latex/contrib/l3kernel/l3intarray.dtx
index 130da0503e..c29930bd79 100644
--- a/macros/latex/contrib/l3kernel/l3intarray.dtx
+++ b/macros/latex/contrib/l3kernel/l3intarray.dtx
@@ -2,7 +2,7 @@
%
%% File: l3intarray.dtx
%
-% Copyright (C) 2017-2023 The LaTeX Project
+% Copyright (C) 2017-2024 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -32,7 +32,7 @@
%
%
% \title{^^A
-% The \pkg{l3intarray} package\\ Fast global integer arrays^^A
+% The \pkg{l3intarray} module\\ Fast global integer arrays^^A
% }
%
% \author{^^A
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2023-12-11}
+% \date{Released 2024-01-04}
%
% \maketitle
%
@@ -151,7 +151,7 @@
% $2^{30}-1$). In contrast to \pkg{l3seq} sequences the access to
% individual entries is done in constant time rather than linear time,
% but only integers can be stored. More precisely, the primitive
-% \tn{fontdimen} stores dimensions but the \pkg{l3intarray} package
+% \tn{fontdimen} stores dimensions but the \pkg{l3intarray} module
% transparently converts these from/to integers. Assignments are always
% global.
%
diff --git a/macros/latex/contrib/l3kernel/l3kernel-functions.dtx b/macros/latex/contrib/l3kernel/l3kernel-functions.dtx
index b9602fd17c..509abeedd6 100644
--- a/macros/latex/contrib/l3kernel/l3kernel-functions.dtx
+++ b/macros/latex/contrib/l3kernel/l3kernel-functions.dtx
@@ -2,7 +2,7 @@
%
%% File: l3kernel-functions.dtx
%
-% Copyright (C) 2018-2023 The LaTeX Project
+% Copyright (C) 2018-2024 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -31,7 +31,7 @@
% \fi
%
% \title{^^A
-% The \pkg{l3kernel-functions} package\\ Kernel-reserved functions^^A
+% The \pkg{l3kernel-functions} module\\ Kernel-reserved functions^^A
% }
%
% \author{^^A
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-12-11}
+% \date{Released 2024-01-04}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3keys.dtx b/macros/latex/contrib/l3kernel/l3keys.dtx
index c300e3e5ee..9919abfd86 100644
--- a/macros/latex/contrib/l3kernel/l3keys.dtx
+++ b/macros/latex/contrib/l3kernel/l3keys.dtx
@@ -2,7 +2,7 @@
%
%% File: l3keys.dtx
%
-% Copyright (C) 2006-2023 The LaTeX Project
+% Copyright (C) 2006-2024 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -31,7 +31,7 @@
% \fi
%
% \title{^^A
-% The \pkg{l3keys} package\\ Key--value interfaces^^A
+% The \pkg{l3keys} module\\ Key--value interfaces^^A
% }
%
% \author{^^A
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-12-11}
+% \date{Released 2024-01-04}
%
% \maketitle
%
@@ -775,12 +775,14 @@
% If a key has not previously been defined (is unknown), \cs{keys_set:nn}
% looks for a special \texttt{unknown} key for the same module, and if this is
% not defined raises an error indicating that the key name was unknown. This
-% mechanism can be used for example to issue custom error texts.
+% mechanism can be used for example to issue custom error texts. The
+% \texttt{unknown} key also supports the \texttt{.default:n} property.
% \begin{verbatim}
% \keys_define:nn { mymodule }
% {
% unknown .code:n =
-% You~tried~to~set~key~'\l_keys_key_str'~to~'#1'.
+% You~tried~to~set~key~'\l_keys_key_str'~to~'#1'. ,
+% unknown .default:V = \c_novalue_tl
% }
% \end{verbatim}
%
@@ -1344,9 +1346,9 @@
% \begin{macrocode}
\cs_new:Npn \@@_misplaced_equal_after_active_error:w
\s_@@_mark ##1 \s_@@_stop \s_@@_mark ##2 \s_@@_nil
- = \s_@@_mark \@@_split_active_auxii:w
- \s_@@_mark ##3 \s_@@_nil
- #2 \s_@@_mark \@@_clean_up_active:w
+ = \s_@@_mark \@@_split_active_auxii:w
+ \s_@@_mark ##3 \s_@@_nil
+ #2 \s_@@_mark \@@_clean_up_active:w
{
\msg_expandable_error:nn
{ keyval } { misplaced-equals-sign }
@@ -1813,28 +1815,29 @@
% \end{macro}
%
% \begin{macro}{\@@_property_find:n}
-% \begin{macro}
+% \begin{macro}[EXP]{\@@_property_find_auxi:w}
+% \begin{macro}{\@@_property_find_auxii:w}
+% \begin{macro}[EXP]
% {
-% \@@_property_find_auxi:w ,
-% \@@_property_find_auxii:w ,
% \@@_property_find_auxiii:w ,
% \@@_property_find_auxiv:w
% }
+% \begin{macro}{\@@_property_find_err:w}
% Searching for a property means finding the last |.| in the input,
-% and storing the text before and after it. Everything is turned into
-% strings, so there is no problem using an \texttt{e}-type expansion. Since
-% \cs{@@_trim_spaces:n} will turn its argument into a string anyway, this
-% function uses \cs{cs_set_nopar:Npe} instead of \cs{tl_set:Ne} to gain some
-% speed.
+% and storing the text before and after it. Everything is first turned into
+% strings, so there is no problem using \cs{cs_set_nopar:Npe} instead of
+% \cs{str_set:Ne} to set \cs{l_keys_path_str}. To gain further speed, brace
+% tricks are used and \cs{@@_property_find_auxiv:w} is defined as expandable.
+% Since spaces will already be trimmed from the module we can omit it from the
+% argument to \cs{@@_trim_spaces:n}.
% \begin{macrocode}
\cs_new_protected:Npn \@@_property_find:n #1
{
- \cs_set_nopar:Npe \l_@@_property_str { \@@_trim_spaces:n { #1 } }
- \exp_after:wN \@@_property_find_auxi:w \l_@@_property_str
+ \exp_after:wN \@@_property_find_auxi:w \tl_to_str:n {#1}
\s_@@_nil \@@_property_find_auxii:w
. \s_@@_nil \@@_property_find_err:w
}
-\cs_new_protected:Npn \@@_property_find_auxi:w #1 . #2 \s_@@_nil #3
+\cs_new:Npn \@@_property_find_auxi:w #1 . #2 \s_@@_nil #3
{
#3 #1 \s_@@_mark #2 \s_@@_nil #3
}
@@ -1843,22 +1846,24 @@
\@@_property_find_err:w
{
\cs_set_nopar:Npe \l_keys_path_str
- { \str_if_empty:NF \l_@@_module_str { \l_@@_module_str / } #1 }
- \@@_property_find_auxi:w #2 \s_@@_nil \@@_property_find_auxiii:w . \s_@@_nil
- \@@_property_find_auxiv:w
+ {
+ \str_if_empty:NF \l_@@_module_str { \l_@@_module_str / }
+ \exp_after:wN \@@_trim_spaces:n \tex_expanded:D {{
+ #1
+ \if_false: }}} \fi:
+ \@@_property_find_auxi:w #2 \s_@@_nil \@@_property_find_auxiii:w
+ . \s_@@_nil \@@_property_find_auxiv:w
}
-\cs_new_protected:Npn \@@_property_find_auxiii:w #1 \s_@@_mark
+\cs_new:Npn \@@_property_find_auxiii:w #1 \s_@@_mark #2 . #3 \s_@@_nil #4
{
- \cs_set_nopar:Npe \l_keys_path_str { \l_keys_path_str . #1 }
- \@@_property_find_auxi:w
+ . #1 #4 #2 \s_@@_mark #3 \s_@@_nil #4
}
-\cs_new_protected:Npn \@@_property_find_auxiv:w
+\cs_new:Npn \@@_property_find_auxiv:w
#1 \s_@@_nil \@@_property_find_auxiii:w
\s_@@_mark \s_@@_nil \@@_property_find_auxiv:w
{
+ \if_false: {{{ \fi: }}}
\cs_set_nopar:Npe \l_@@_property_str { . #1 }
- \cs_set_nopar:Npe \l_keys_path_str
- { \exp_after:wN \@@_trim_spaces:n \exp_after:wN { \l_keys_path_str } }
\tl_set_eq:NN \l_keys_path_tl \l_keys_path_str
}
\cs_new_protected:Npn \@@_property_find_err:w
@@ -1870,6 +1875,9 @@
% \end{macrocode}
% \end{macro}
% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
%
% \begin{macro}{\@@_define_code:n}
% \begin{macro}[EXP]{\@@_define_code:w}
@@ -2154,8 +2162,8 @@
\@@_default_set:n { true }
\cs_if_exist:cF { if#1 }
{
- \cs:w newif \exp_after:wN \cs_end:
- \cs:w if#1 \cs_end:
+ \cs:w newif \exp_after:wN \cs_end:
+ \cs:w if#1 \cs_end:
}
}
% \end{macrocode}
@@ -3242,7 +3250,19 @@
{
\cs_if_exist:cTF
{ \c_@@_code_root_str \l_@@_module_str / unknown }
- { \@@_execute:no { \l_@@_module_str / unknown } \l_keys_value_tl }
+ {
+ \bool_if:NT \l_@@_no_value_bool
+ {
+ \cs_if_exist:cT
+ { \c_@@_default_root_str \l_@@_module_str / unknown }
+ {
+ \tl_set_eq:Nc
+ \l_keys_value_tl
+ { \c_@@_default_root_str \l_@@_module_str / unknown }
+ }
+ }
+ \@@_execute:no { \l_@@_module_str / unknown } \l_keys_value_tl
+ }
{
\msg_error:nnee { keys } { unknown }
\l_keys_path_str \l_@@_module_str
diff --git a/macros/latex/contrib/l3kernel/l3legacy.dtx b/macros/latex/contrib/l3kernel/l3legacy.dtx
index 2311d28bba..8f72634dc5 100644
--- a/macros/latex/contrib/l3kernel/l3legacy.dtx
+++ b/macros/latex/contrib/l3kernel/l3legacy.dtx
@@ -2,7 +2,7 @@
%
%% File: l3legacy.dtx
%
-% Copyright (C) 2019-2023 The LaTeX Project
+% Copyright (C) 2019-2024 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -31,7 +31,7 @@
% \fi
%
% \title{^^A
-% The \pkg{l3legacy} package\\ Interfaces to legacy concepts^^A
+% The \pkg{l3legacy} module\\ Interfaces to legacy concepts^^A
% }
%
% \author{^^A
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-12-11}
+% \date{Released 2024-01-04}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3luatex.dtx b/macros/latex/contrib/l3kernel/l3luatex.dtx
index d3be98cb59..59e49857e7 100644
--- a/macros/latex/contrib/l3kernel/l3luatex.dtx
+++ b/macros/latex/contrib/l3kernel/l3luatex.dtx
@@ -2,7 +2,7 @@
%
%% File: l3luatex.dtx
%
-% Copyright (C) 2010-2023 The LaTeX Project
+% Copyright (C) 2010-2024 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -31,7 +31,7 @@
% \fi
%
% \title{^^A
-% The \pkg{l3luatex} package\\ \LuaTeX-specific functions^^A
+% The \pkg{l3luatex} module\\ \LuaTeX-specific functions^^A
% }
%
% \author{^^A
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-12-11}
+% \date{Released 2024-01-04}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3msg.dtx b/macros/latex/contrib/l3kernel/l3msg.dtx
index f9c4dd9945..b504e402f7 100644
--- a/macros/latex/contrib/l3kernel/l3msg.dtx
+++ b/macros/latex/contrib/l3kernel/l3msg.dtx
@@ -2,7 +2,7 @@
%
%% File: l3msg.dtx
%
-% Copyright (C) 2009-2023 The LaTeX Project
+% Copyright (C) 2009-2024 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -31,7 +31,7 @@
% \fi
%
% \title{^^A
-% The \pkg{l3msg} package\\ Messages^^A
+% The \pkg{l3msg} module\\ Messages^^A
% }
%
% \author{^^A
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-12-11}
+% \date{Released 2024-01-04}
%
% \maketitle
%
@@ -936,9 +936,9 @@
{ \use:c { \c_@@_text_prefix_tl #2 / #3 } #4 }
{ \c_@@_continue_text_tl }
{
- \c_@@_no_info_text_tl
- \tl_if_empty:NF #5
- { \\ \\ #5 }
+ \c_@@_no_info_text_tl
+ \tl_if_empty:NF #5
+ { \\ \\ #5 }
}
}
{
@@ -946,9 +946,9 @@
{ \use:c { \c_@@_text_prefix_tl #2 / #3 } #4 }
{ \c_@@_help_text_tl }
{
- \use:c { \c_@@_more_text_prefix_tl #2 / #3 } #4
- \tl_if_empty:NF #5
- { \\ \\ #5 }
+ \use:c { \c_@@_more_text_prefix_tl #2 / #3 } #4
+ \tl_if_empty:NF #5
+ { \\ \\ #5 }
}
}
}
@@ -1189,7 +1189,7 @@
{ nnVV , nnVn , nnnV , nnne , nnnx , nnee , nnxx }
\cs_generate_variant:cn { msg_ #1 :nnnnn }
{ nnnee , nnnxx , nneee , nnxxx }
- \cs_generate_variant:cn { msg_ #1 :nnnnnn } { nneeee , nnxxxx }
+ \cs_generate_variant:cn { msg_ #1 :nnnnnn } { nneeee , nnxxxx }
}
% \end{macrocode}
% \end{macro}
@@ -1403,14 +1403,14 @@
{
( \l_@@_name_str )
\prg_replicate:nn
- {
- \str_count:N \l_@@_text_str
- - \str_count:N \l_@@_name_str
- }
+ {
+ \str_count:N \l_@@_text_str
+ - \str_count:N \l_@@_name_str
+ }
{ ~ }
- }
- { } #1
- #1 { }
+ }
+ { } #1
+ #1 { }
}
\@@_class_new:nn { warning }
{
@@ -2042,7 +2042,7 @@
\msg_new:nnnn { kernel } { no-elapsed-time }
{ No~clock~detected~for~#1. }
{ The~current~engine~provides~no~way~to~access~the~system~time. }
- }
+ }
\msg_new:nnnn { kernel } { non-base-function }
{ Function~'#1'~is~not~a~base~function }
{
diff --git a/macros/latex/contrib/l3kernel/l3names.dtx b/macros/latex/contrib/l3kernel/l3names.dtx
index c1478161d6..58c7828ac9 100644
--- a/macros/latex/contrib/l3kernel/l3names.dtx
+++ b/macros/latex/contrib/l3kernel/l3names.dtx
@@ -2,7 +2,7 @@
%
%% File: l3names.dtx
%
-% Copyright (C) 1990-2023 The LaTeX Project
+% Copyright (C) 1990-2024 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -31,7 +31,7 @@
% \fi
%
% \title{^^A
-% The \pkg{l3names} package\\ Namespace for primitives^^A
+% The \pkg{l3names} module\\ Namespace for primitives^^A
% }
%
% \author{^^A
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-12-11}
+% \date{Released 2024-01-04}
%
% \maketitle
%
@@ -117,7 +117,7 @@
%<*names|package>
% \end{macrocode}
%
-% In the current incarnation of this package, all \TeX{} primitives
+% In the current incarnation of this module, all \TeX{} primitives
% are given a new name of the form |\tex_|\emph{oldname}|:D|.
% But first three special cases which have symbolic original names.
% These are given modified new names, so that they may be entered
@@ -1096,7 +1096,7 @@
\@@_primitive:NN \Umathoverbarrule \tex_Umathoverbarrule:D
\@@_primitive:NN \Umathoverbarvgap \tex_Umathoverbarvgap:D
\@@_primitive:NN \Umathoverdelimiterbgap
- \tex_Umathoverdelimiterbgap:D
+ \tex_Umathoverdelimiterbgap:D
\@@_primitive:NN \Umathoverdelimitervgap
\tex_Umathoverdelimitervgap:D
\@@_primitive:NN \Umathpunctbinspacing \tex_Umathpunctbinspacing:D
diff --git a/macros/latex/contrib/l3kernel/l3news.pdf b/macros/latex/contrib/l3kernel/l3news.pdf
index 2c87f4f00c..0a5bc3794d 100644
--- a/macros/latex/contrib/l3kernel/l3news.pdf
+++ b/macros/latex/contrib/l3kernel/l3news.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3news01.pdf b/macros/latex/contrib/l3kernel/l3news01.pdf
index 2caf5448b9..ca854aca2d 100644
--- a/macros/latex/contrib/l3kernel/l3news01.pdf
+++ b/macros/latex/contrib/l3kernel/l3news01.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3news02.pdf b/macros/latex/contrib/l3kernel/l3news02.pdf
index 7bf6c3b5b7..abc710c5e8 100644
--- a/macros/latex/contrib/l3kernel/l3news02.pdf
+++ b/macros/latex/contrib/l3kernel/l3news02.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3news03.pdf b/macros/latex/contrib/l3kernel/l3news03.pdf
index 7e790309ac..67c3c65908 100644
--- a/macros/latex/contrib/l3kernel/l3news03.pdf
+++ b/macros/latex/contrib/l3kernel/l3news03.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3news04.pdf b/macros/latex/contrib/l3kernel/l3news04.pdf
index c0e7744a12..aeae2e688f 100644
--- a/macros/latex/contrib/l3kernel/l3news04.pdf
+++ b/macros/latex/contrib/l3kernel/l3news04.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3news05.pdf b/macros/latex/contrib/l3kernel/l3news05.pdf
index 09a8a17473..33026d2cdc 100644
--- a/macros/latex/contrib/l3kernel/l3news05.pdf
+++ b/macros/latex/contrib/l3kernel/l3news05.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3news06.pdf b/macros/latex/contrib/l3kernel/l3news06.pdf
index e17d4ba600..cab5c11273 100644
--- a/macros/latex/contrib/l3kernel/l3news06.pdf
+++ b/macros/latex/contrib/l3kernel/l3news06.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3news07.pdf b/macros/latex/contrib/l3kernel/l3news07.pdf
index ee3855783f..c5a3d300a5 100644
--- a/macros/latex/contrib/l3kernel/l3news07.pdf
+++ b/macros/latex/contrib/l3kernel/l3news07.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3news08.pdf b/macros/latex/contrib/l3kernel/l3news08.pdf
index 8673d4a078..5a5517c002 100644
--- a/macros/latex/contrib/l3kernel/l3news08.pdf
+++ b/macros/latex/contrib/l3kernel/l3news08.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3news09.pdf b/macros/latex/contrib/l3kernel/l3news09.pdf
index 00fff384ee..95f1aa0ee5 100644
--- a/macros/latex/contrib/l3kernel/l3news09.pdf
+++ b/macros/latex/contrib/l3kernel/l3news09.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3news10.pdf b/macros/latex/contrib/l3kernel/l3news10.pdf
index dcac23758d..1b8dc9af29 100644
--- a/macros/latex/contrib/l3kernel/l3news10.pdf
+++ b/macros/latex/contrib/l3kernel/l3news10.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3news11.pdf b/macros/latex/contrib/l3kernel/l3news11.pdf
index 1a3a1038f6..bfb59818be 100644
--- a/macros/latex/contrib/l3kernel/l3news11.pdf
+++ b/macros/latex/contrib/l3kernel/l3news11.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3news12.pdf b/macros/latex/contrib/l3kernel/l3news12.pdf
index 5ff84d3990..eddbad6dca 100644
--- a/macros/latex/contrib/l3kernel/l3news12.pdf
+++ b/macros/latex/contrib/l3kernel/l3news12.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3pdf.dtx b/macros/latex/contrib/l3kernel/l3pdf.dtx
index 09013a7a7f..863d3681c3 100644
--- a/macros/latex/contrib/l3kernel/l3pdf.dtx
+++ b/macros/latex/contrib/l3kernel/l3pdf.dtx
@@ -2,7 +2,7 @@
%
%% File: l3pdf.dtx
%
-% Copyright(C) 2019-2023 The LaTeX Project
+% Copyright(C) 2019-2024 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -31,7 +31,7 @@
% \fi
%
% \title{^^A
-% The \pkg{l3pdf} package\\ Core PDF support^^A
+% The \pkg{l3pdf} module\\ Core PDF support^^A
% }
%
% \author{^^A
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-12-11}
+% \date{Released 2024-01-04}
%
% \maketitle
%
@@ -382,37 +382,37 @@
\prg_new_conditional:Npnn \pdf_version_compare:Nn #1#2 { p , T , F , TF }
{ \use:c { @@_version_compare_ #1 :w } #2 . . \s_@@_stop }
\cs_new:cpn { @@_version_compare_=:w } #1 . #2 . #3 \s_@@_stop
- {
- \bool_lazy_and:nnTF
- { \int_compare_p:nNn \@@_backend_version_major: = {#1} }
- { \int_compare_p:nNn \@@_backend_version_minor: = {#2} }
- { \prg_return_true: }
- { \prg_return_false: }
- }
+ {
+ \bool_lazy_and:nnTF
+ { \int_compare_p:nNn \@@_backend_version_major: = {#1} }
+ { \int_compare_p:nNn \@@_backend_version_minor: = {#2} }
+ { \prg_return_true: }
+ { \prg_return_false: }
+ }
\cs_new:cpn { @@_version_compare_<:w } #1 . #2 . #3 \s_@@_stop
- {
- \bool_lazy_or:nnTF
- { \int_compare_p:nNn \@@_backend_version_major: < {#1} }
- {
- \bool_lazy_and_p:nn
- { \int_compare_p:nNn \@@_backend_version_major: = {#1} }
- { \int_compare_p:nNn \@@_backend_version_minor: < {#2} }
- }
- { \prg_return_true: }
- { \prg_return_false: }
- }
+ {
+ \bool_lazy_or:nnTF
+ { \int_compare_p:nNn \@@_backend_version_major: < {#1} }
+ {
+ \bool_lazy_and_p:nn
+ { \int_compare_p:nNn \@@_backend_version_major: = {#1} }
+ { \int_compare_p:nNn \@@_backend_version_minor: < {#2} }
+ }
+ { \prg_return_true: }
+ { \prg_return_false: }
+ }
\cs_new:cpn { @@_version_compare_>:w } #1 . #2 . #3 \s_@@_stop
- {
- \bool_lazy_or:nnTF
- { \int_compare_p:nNn \@@_backend_version_major: > {#1} }
- {
- \bool_lazy_and_p:nn
- { \int_compare_p:nNn \@@_backend_version_major: = {#1} }
- { \int_compare_p:nNn \@@_backend_version_minor: > {#2} }
- }
- { \prg_return_true: }
- { \prg_return_false: }
- }
+ {
+ \bool_lazy_or:nnTF
+ { \int_compare_p:nNn \@@_backend_version_major: > {#1} }
+ {
+ \bool_lazy_and_p:nn
+ { \int_compare_p:nNn \@@_backend_version_major: = {#1} }
+ { \int_compare_p:nNn \@@_backend_version_minor: > {#2} }
+ }
+ { \prg_return_true: }
+ { \prg_return_false: }
+ }
% \end{macrocode}
% \end{macro}
% \end{macro}
diff --git a/macros/latex/contrib/l3kernel/l3prefixes.csv b/macros/latex/contrib/l3kernel/l3prefixes.csv
index 1baf489209..e3512672ff 100644
--- a/macros/latex/contrib/l3kernel/l3prefixes.csv
+++ b/macros/latex/contrib/l3kernel/l3prefixes.csv
@@ -12,7 +12,7 @@ alloc,l3kernel,The LaTeX Project,https://www.latex-project.org/latex3.html,https
ampersand,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,
apfs,apfontspec,Qing Lee,https://github.com/CTeX-org/apfontspec,https://github.com/CTeX-org/apfontspec.git,https://github.com/CTeX-org/apfontspec/issues,2020-05-17,2020-05-17,
arch,archaeologie,Lukas C. Bossert,http://www.biblatex-archaeologie.de,https://github.com/LukasCBossert/biblatex-archaeologie.git,https://github.com/LukasCBossert/biblatex-archaeologie/issues,2017-03-24,2017-03-24,
-arsenal,arsenal,Boris Veytsman,https://github.com/borisveytsman/arsenal,https://github.com/borisveytsman/arsenal,https://github.com/borisveytsman/arsenal/issues
+arsenal,arsenal,Boris Veytsman,https://github.com/borisveytsman/arsenal,https://github.com/borisveytsman/arsenal,https://github.com/borisveytsman/arsenal/issues,2023-09-04,2023-09-04,
array,hobby,Andrew Stacey,https://github.com/loopspace/hobby,https://github.com/loopspace/hobby,https://github.com/loopspace/hobby/issues,2013-03-16,2020-10-29,
atsign,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,
avm,langsci-avm,Felix Kopecky,https://ctan.org/pkg/langsci-avm,https://github.com/langsci/langsci-avm,https://github.com/langsci/langsci-avm/issues,2020-03-11,2020-03-11,
@@ -123,7 +123,7 @@ intarray,l3kernel,The LaTeX Project,https://www.latex-project.org/latex3.html,ht
ior,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,
iot,iot,Island of TeX,https://islandoftex.gitlab.io,https://gitlab.com/islandoftex/texmf,https://gitlab.com/groups/islandoftex/texmf/-/issues,2023-07-18,2023-07-18,
iow,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,
-iwonamath,iwonamath,Boris Veytsman,https://github.com/borisveytsman/iwonamath,https://github.com/borisveytsman/iwonamath,https://github.com/borisveytsman/iwonamath/issues
+iwonamath,iwonamath,Boris Veytsman,https://github.com/borisveytsman/iwonamath,https://github.com/borisveytsman/iwonamath,https://github.com/borisveytsman/iwonamath/issues,2023-09-04,2023-09-04,
jiazhu,jiazhu,Qing Lee,https://github.com/CTeX-org/ctex-kit,https://github.com/CTeX-org/ctex-kit.git,https://github.com/CTeX-org/ctex-kit/issues,2020-05-17,2020-05-17,
job,l3kernel,The LaTeX Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2021-04-23,2021-04-23,
kernel,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,
diff --git a/macros/latex/contrib/l3kernel/l3prefixes.pdf b/macros/latex/contrib/l3kernel/l3prefixes.pdf
index f174ef9e0f..4a23b2563d 100644
--- a/macros/latex/contrib/l3kernel/l3prefixes.pdf
+++ b/macros/latex/contrib/l3kernel/l3prefixes.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3prg.dtx b/macros/latex/contrib/l3kernel/l3prg.dtx
index 668bf41d08..866537f904 100644
--- a/macros/latex/contrib/l3kernel/l3prg.dtx
+++ b/macros/latex/contrib/l3kernel/l3prg.dtx
@@ -2,7 +2,7 @@
%
%% File: l3prg.dtx
%
-% Copyright (C) 2005-2023 The LaTeX Project
+% Copyright (C) 2005-2024 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -31,7 +31,7 @@
% \fi
%
% \title{^^A
-% The \pkg{l3prg} package\\ Control structures^^A
+% The \pkg{l3prg} module\\ Control structures^^A
% }
%
% \author{^^A
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-12-11}
+% \date{Released 2024-01-04}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3prop.dtx b/macros/latex/contrib/l3kernel/l3prop.dtx
index 91e8c07fbf..f8bb23e765 100644
--- a/macros/latex/contrib/l3kernel/l3prop.dtx
+++ b/macros/latex/contrib/l3kernel/l3prop.dtx
@@ -2,7 +2,7 @@
%
%% File: l3prop.dtx
%
-% Copyright (C) 1990-2023 The LaTeX Project
+% Copyright (C) 1990-2024 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -31,7 +31,7 @@
% \fi
%
% \title{^^A
-% The \pkg{l3prop} package\\ Property lists^^A
+% The \pkg{l3prop} module\\ Property lists^^A
% }
%
% \author{^^A
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-12-11}
+% \date{Released 2024-01-04}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3quark.dtx b/macros/latex/contrib/l3kernel/l3quark.dtx
index 10fa3584aa..80b953353f 100644
--- a/macros/latex/contrib/l3kernel/l3quark.dtx
+++ b/macros/latex/contrib/l3kernel/l3quark.dtx
@@ -2,7 +2,7 @@
%
%% File: l3quark.dtx
%
-% Copyright (C) 1990-2023 The LaTeX Project
+% Copyright (C) 1990-2024 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -31,7 +31,7 @@
% \fi
%
% \title{^^A
-% The \pkg{l3quark} package\\ Quarks and scan marks^^A
+% The \pkg{l3quark} module\\ Quarks and scan marks^^A
% }
%
% \author{^^A
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-12-11}
+% \date{Released 2024-01-04}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3regex.dtx b/macros/latex/contrib/l3kernel/l3regex.dtx
index 900a1c2c82..37245cb0b9 100644
--- a/macros/latex/contrib/l3kernel/l3regex.dtx
+++ b/macros/latex/contrib/l3kernel/l3regex.dtx
@@ -2,7 +2,7 @@
%
%% File: l3regex.dtx
%
-% Copyright (C) 2011-2023 The LaTeX Project
+% Copyright (C) 2011-2024 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -31,7 +31,7 @@
% \fi
%
% \title{^^A
-% The \pkg{l3regex} package\\ Regular expressions in \TeX{}^^A
+% The \pkg{l3regex} module\\ Regular expressions in \TeX{}^^A
% }
%
% \author{^^A
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-12-11}
+% \date{Released 2024-01-04}
%
% \maketitle
%
@@ -52,7 +52,7 @@
% {\begin{itemize}\def\\{\char`\\}\def\makelabel##1{\hss\llap{\ttfamily##1}}}
% {\end{itemize}}
%
-% The \pkg{l3regex} package provides regular expression testing,
+% The \pkg{l3regex} module provides regular expression testing,
% extraction of submatches, splitting, and replacement, all acting
% on token lists. The syntax of regular expressions is mostly a subset
% of the \textsc{pcre} syntax (and very close to \textsc{posix}),
@@ -1377,7 +1377,7 @@
% in the input stream.
% \begin{macrocode}
\cs_new_protected:Npn \@@_break_true:w
- #1 \@@_break_point:TF #2 #3 {#2}
+ #1 \@@_break_point:TF #2 #3 {#2}
\cs_new_protected:Npn \@@_break_point:TF #1 #2 { #2 }
% \end{macrocode}
% \end{macro}
@@ -3510,6 +3510,7 @@
% \end{macrocode}
% \end{macro}
%
+% \begin{variable}{@@_cs}
% \begin{macro}+\@@_compile_}:+
% \begin{macro}{\@@_compile_end_cs:}
% \begin{macro}[EXP]{\@@_compile_cs_aux:Nn, \@@_compile_cs_aux:NNnnnN}
@@ -3592,6 +3593,7 @@
% \end{macro}
% \end{macro}
% \end{macro}
+% \end{variable}
%
% \subsubsection{Raw token lists with \cs[no-index]{u}}
%
@@ -5354,7 +5356,7 @@
\int_set:Nn \l_@@_curr_pos_int
{ \l_@@_start_pos_int - 1 }
\int_set_eq:NN \l_@@_curr_char_int \l_@@_last_char_success_int
- \tl_build_get:NN \l_@@_matched_analysis_tl \l_@@_internal_a_tl
+ \tl_build_get_intermediate:NN \l_@@_matched_analysis_tl \l_@@_internal_a_tl
\exp_args:NNf \@@_match_once_init_aux:
\tl_map_inline:nn
{ \exp_after:wN \l_@@_internal_a_tl \l_@@_curr_analysis_tl }
@@ -8113,7 +8115,7 @@
\cs_new_protected:Npn \@@_trace_push:nnN #1#2#3
{ \@@_trace:nne {#1} {#2} { entering~ \token_to_str:N #3 } }
\cs_new_protected:Npn \@@_trace_pop:nnN #1#2#3
- { \@@_trace:nne {#1} {#2} { leaving~ \token_to_str:N #3 } }
+ { \@@_trace:nne {#1} {#2} { leaving~ \token_to_str:N #3 } }
\cs_new_protected:Npn \@@_trace:nne #1#2#3
{
\int_compare:nNnF
diff --git a/macros/latex/contrib/l3kernel/l3seq.dtx b/macros/latex/contrib/l3kernel/l3seq.dtx
index c32985545a..debdd81397 100644
--- a/macros/latex/contrib/l3kernel/l3seq.dtx
+++ b/macros/latex/contrib/l3kernel/l3seq.dtx
@@ -2,7 +2,7 @@
%
%% File: l3seq.dtx
%
-% Copyright (C) 1990-2023 The LaTeX Project
+% Copyright (C) 1990-2024 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -31,7 +31,7 @@
% \fi
%
% \title{^^A
-% The \pkg{l3seq} package\\ Sequences and stacks^^A
+% The \pkg{l3seq} module\\ Sequences and stacks^^A
% }
%
% \author{^^A
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-12-11}
+% \date{Released 2024-01-04}
%
% \maketitle
%
@@ -1565,10 +1565,10 @@
\if_false: { \fi: }
\tl_set:Nn \l_@@_internal_b_tl {##1}
#1 #2
- { \if_false: } \fi:
- \exp_not:o {#2}
- \tl_if_eq:NNT \l_@@_internal_a_tl \l_@@_internal_b_tl
- { \use_none:nn }
+ { \if_false: } \fi:
+ \exp_not:o {#2}
+ \tl_if_eq:NNT \l_@@_internal_a_tl \l_@@_internal_b_tl
+ { \use_none:nn }
}
\@@_wrap_item:n {##1}
}
diff --git a/macros/latex/contrib/l3kernel/l3skip.dtx b/macros/latex/contrib/l3kernel/l3skip.dtx
index cac06a49ea..226debac9d 100644
--- a/macros/latex/contrib/l3kernel/l3skip.dtx
+++ b/macros/latex/contrib/l3kernel/l3skip.dtx
@@ -3,7 +3,7 @@
%% File: l3skip.dtx
%
% Copyright (C) 2004-2011 Frank Mittelbach, The LaTeX Project
-% (C) 2012-2023 The LaTeX Project
+% (C) 2012-2024 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -32,7 +32,7 @@
% \fi
%
% \title{^^A
-% The \pkg{l3skip} package\\ Dimensions and skips^^A
+% The \pkg{l3skip} module\\ Dimensions and skips^^A
% }
%
% \author{^^A
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2023-12-11}
+% \date{Released 2024-01-04}
%
% \maketitle
%
@@ -2269,8 +2269,8 @@
\prg_new_conditional:Npnn \skip_if_eq:nn #1#2 { p , T , F , TF }
{
\str_if_eq:eeTF { \skip_eval:n {#1} } { \skip_eval:n {#2} }
- { \prg_return_true: }
- { \prg_return_false: }
+ { \prg_return_true: }
+ { \prg_return_false: }
}
% \end{macrocode}
% \end{macro}
diff --git a/macros/latex/contrib/l3kernel/l3sort.dtx b/macros/latex/contrib/l3kernel/l3sort.dtx
index ab7531a313..71d28c4433 100644
--- a/macros/latex/contrib/l3kernel/l3sort.dtx
+++ b/macros/latex/contrib/l3kernel/l3sort.dtx
@@ -2,7 +2,7 @@
%
%% File l3sort.dtx
%
-% Copyright (C) 2012-2023 The LaTeX Project
+% Copyright (C) 2012-2024 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -31,7 +31,7 @@
% \fi
%
% \title{^^A
-% The \pkg{l3sort} package\\ Sorting functions^^A
+% The \pkg{l3sort} module\\ Sorting functions^^A
% }
%
% \author{^^A
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-12-11}
+% \date{Released 2024-01-04}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3str-convert.dtx b/macros/latex/contrib/l3kernel/l3str-convert.dtx
index ff4cacf868..90eb26afbb 100644
--- a/macros/latex/contrib/l3kernel/l3str-convert.dtx
+++ b/macros/latex/contrib/l3kernel/l3str-convert.dtx
@@ -2,7 +2,7 @@
%
%% File: l3str-convert.dtx
%
-% Copyright (C) 2013-2023 The LaTeX Project
+% Copyright (C) 2013-2024 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -32,7 +32,7 @@
%
%
% \title{^^A
-% The \pkg{l3str-convert} package\\ String encoding conversions^^A
+% The \pkg{l3str-convert} module\\ String encoding conversions^^A
% }
%
% \author{^^A
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2023-12-11}
+% \date{Released 2024-01-04}
%
% \maketitle
%
@@ -469,14 +469,14 @@
% \begin{macrocode}
\group_begin:
\__kernel_tl_set:Ne \l_@@_internal_tl { \tl_to_str:n { 0123456789ABCDEF } }
- \tl_map_inline:Nn \l_@@_internal_tl
- {
- \tl_map_inline:Nn \l_@@_internal_tl
- {
- \tl_const:ce { c_@@_byte_ \int_eval:n {"#1##1} _tl }
- { \char_generate:nn { "#1##1 } { 12 } #1 ##1 }
- }
- }
+ \tl_map_inline:Nn \l_@@_internal_tl
+ {
+ \tl_map_inline:Nn \l_@@_internal_tl
+ {
+ \tl_const:ce { c_@@_byte_ \int_eval:n {"#1##1} _tl }
+ { \char_generate:nn { "#1##1 } { 12 } #1 ##1 }
+ }
+ }
\group_end:
\tl_const:cn { c_@@_byte_-1_tl } { { } \use_none:n { } }
% \end{macrocode}
@@ -1818,10 +1818,10 @@
%
% \begin{variable}
% {
-% \l_@@_missing_flag ,
-% \l_@@_extra_flag ,
-% \l_@@_overlong_flag ,
-% \l_@@_overflow_flag ,
+% @@_missing ,
+% @@_extra ,
+% @@_overlong ,
+% @@_overflow ,
% }
% When decoding a string that is purportedly in the \textsc{utf-8}
% encoding, four different errors can occur, signalled by a specific
@@ -2148,9 +2148,9 @@
%
% \begin{variable}
% {
-% \l_@@_missing_flag ,
-% \l_@@_extra_flag ,
-% \l_@@_end_flag ,
+% @@_missing ,
+% @@_extra ,
+% @@_end ,
% }
% When encoding a Unicode string to \textsc{utf-16}, only one error
% can occur: code points in the range $[\hexnum{D800},
diff --git a/macros/latex/contrib/l3kernel/l3str.dtx b/macros/latex/contrib/l3kernel/l3str.dtx
index fa26d53426..dbb2180516 100644
--- a/macros/latex/contrib/l3kernel/l3str.dtx
+++ b/macros/latex/contrib/l3kernel/l3str.dtx
@@ -2,7 +2,7 @@
%
%% File: l3str.dtx
%
-% Copyright (C) 2011-2023 The LaTeX Project
+% Copyright (C) 2011-2024 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -31,7 +31,7 @@
% \fi
%
% \title{^^A
-% The \pkg{l3str} package\\ Strings^^A
+% The \pkg{l3str} module\\ Strings^^A
% }
%
% \author{^^A
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-12-11}
+% \date{Released 2024-01-04}
%
% \maketitle
%
@@ -2051,9 +2051,9 @@
\int_compare:nNnTF {`#2} < { "E0 }
{ \@@_change_case_codepoint:nNN }
{
- \int_compare:nNnTF {`#2} < { "F0 }
- { \@@_change_case_codepoint:nNNN }
- { \@@_change_case_codepoint:nNNNNN }
+ \int_compare:nNnTF {`#2} < { "F0 }
+ { \@@_change_case_codepoint:nNNN }
+ { \@@_change_case_codepoint:nNNNNN }
}
{#1} #2
}
@@ -2113,7 +2113,7 @@
{
\codepoint_str_generate:n {#2}
\tl_if_blank:nF {#3}
- { \codepoint_str_generate:n {#3} }
+ { \codepoint_str_generate:n {#3} }
}
}
}
diff --git a/macros/latex/contrib/l3kernel/l3styleguide.pdf b/macros/latex/contrib/l3kernel/l3styleguide.pdf
index 6bf6d1bc46..7e379d5eae 100644
--- a/macros/latex/contrib/l3kernel/l3styleguide.pdf
+++ b/macros/latex/contrib/l3kernel/l3styleguide.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3styleguide.tex b/macros/latex/contrib/l3kernel/l3styleguide.tex
index 9f8d8733c8..c66e0df5d1 100644
--- a/macros/latex/contrib/l3kernel/l3styleguide.tex
+++ b/macros/latex/contrib/l3kernel/l3styleguide.tex
@@ -2,7 +2,7 @@
File: l3styleguide.tex
-Copyright (C) 2011,2012,2014-2023 The LaTeX Project
+Copyright (C) 2011,2012,2014-2024 The LaTeX Project
It may be distributed and/or modified under the conditions of the
LaTeX Project Public License (LPPL), either version 1.3c of this
diff --git a/macros/latex/contrib/l3kernel/l3syntax-changes.pdf b/macros/latex/contrib/l3kernel/l3syntax-changes.pdf
index 63f01138b7..5fc4a89708 100644
--- a/macros/latex/contrib/l3kernel/l3syntax-changes.pdf
+++ b/macros/latex/contrib/l3kernel/l3syntax-changes.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3syntax-changes.tex b/macros/latex/contrib/l3kernel/l3syntax-changes.tex
index db3fab7f7b..1fbac1e5b4 100644
--- a/macros/latex/contrib/l3kernel/l3syntax-changes.tex
+++ b/macros/latex/contrib/l3kernel/l3syntax-changes.tex
@@ -2,7 +2,7 @@
File: l3syntax-changes.tex
-Copyright (C) 2011,2012,2017-2023 The LaTeX Project
+Copyright (C) 2011,2012,2017-2024 The LaTeX Project
It may be distributed and/or modified under the conditions of the
LaTeX Project Public License (LPPL), either version 1.3c of this
diff --git a/macros/latex/contrib/l3kernel/l3sys.dtx b/macros/latex/contrib/l3kernel/l3sys.dtx
index 8ae4bbb18d..0195a6e781 100644
--- a/macros/latex/contrib/l3kernel/l3sys.dtx
+++ b/macros/latex/contrib/l3kernel/l3sys.dtx
@@ -2,7 +2,7 @@
%
%% File: l3sys.dtx
%
-% Copyright (C) 2015-2023 The LaTeX Project
+% Copyright (C) 2015-2024 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -31,7 +31,7 @@
% \fi
%
% \title{^^A
-% The \pkg{l3sys} package\\ System/runtime functions^^A
+% The \pkg{l3sys} module\\ System/runtime functions^^A
% }
%
% \author{^^A
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-12-11}
+% \date{Released 2024-01-04}
%
% \maketitle
%
@@ -1147,14 +1147,14 @@ end
\sys_if_engine_xetex:TF
{ xetex }
{
- \sys_if_output_pdf:TF
+ \sys_if_output_pdf:TF
{
\sys_if_engine_pdftex:TF
{ pdftex }
{ luatex }
}
{ dvips }
- }
+ }
}
}
% \end{macrocode}
diff --git a/macros/latex/contrib/l3kernel/l3term-glossary.pdf b/macros/latex/contrib/l3kernel/l3term-glossary.pdf
index 8e3ca84f08..2e4db4a60c 100644
--- a/macros/latex/contrib/l3kernel/l3term-glossary.pdf
+++ b/macros/latex/contrib/l3kernel/l3term-glossary.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3term-glossary.tex b/macros/latex/contrib/l3kernel/l3term-glossary.tex
index e3277b964e..f26cf48fbe 100644
--- a/macros/latex/contrib/l3kernel/l3term-glossary.tex
+++ b/macros/latex/contrib/l3kernel/l3term-glossary.tex
@@ -2,7 +2,7 @@
File: l3term-glossary.tex
-Copyright (C) 2018-2023 The LaTeX Project
+Copyright (C) 2018-2024 The LaTeX Project
It may be distributed and/or modified under the conditions of the
LaTeX Project Public License (LPPL), either version 1.3c of this
diff --git a/macros/latex/contrib/l3kernel/l3text-case.dtx b/macros/latex/contrib/l3kernel/l3text-case.dtx
index b09f9f2108..e5d854ff18 100644
--- a/macros/latex/contrib/l3kernel/l3text-case.dtx
+++ b/macros/latex/contrib/l3kernel/l3text-case.dtx
@@ -2,7 +2,7 @@
%
%% File: l3text-case.dtx
%
-% Copyright (C) 2020-2023 The LaTeX Project
+% Copyright (C) 2020-2024 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -31,7 +31,7 @@
% \fi
%
% \title{^^A
-% The \pkg{l3text-case} package\\ Text processing (case changing)^^A
+% The \pkg{l3text-case} module\\ Text processing (case changing)^^A
% }
%
% \author{^^A
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-12-11}
+% \date{Released 2024-01-04}
%
% \maketitle
%
@@ -238,7 +238,7 @@
% \begin{macrocode}
\cs_new:Npn \@@_change_case:nnnn #1#2#3#4
{
- \__kernel_exp_not:w \exp_after:wN
+ \__kernel_exp_not:w \exp_after:wN
{
\exp:w
\exp_args:Ne \@@_change_case_auxi:nnnn
@@ -402,10 +402,10 @@
\token_if_eq_meaning:NNTF #4 #5
{
\@@_use_i_delimit_by_q_recursion_stop:nw
- {
- \@@_change_case_store:n {#4}
- \@@_change_case_math_loop:nnnNw {#1} {#2} {#3} #6
- }
+ {
+ \@@_change_case_store:n {#4}
+ \@@_change_case_math_loop:nnnNw {#1} {#2} {#3} #6
+ }
}
{ \@@_change_case_math_search:nnnNNN {#1} {#2} {#3} #4 }
}
@@ -494,8 +494,8 @@
\cs_new:Npn \@@_change_case_exclude:nnnNnn #1#2#3#4#5#6
{
\tl_if_blank:nTF {#5}
- { \@@_change_case_store:n { #4 {#6} } }
- {
+ { \@@_change_case_store:n { #4 {#6} } }
+ {
\@@_change_case_store:o
{
\exp_after:wN #4
@@ -592,7 +592,7 @@
{
\@@_change_case_store:v
{ c_@@_ #1 case_ \token_to_str:N #6 _tl }
- \use:c { @@_change_case_next_ #2 :nnn } {#2} {#4} {#5}
+ \use:c { @@_change_case_next_ #2 :nnn } {#2} {#4} {#5}
}
{
\@@_change_case_store:n {#6}
@@ -786,10 +786,10 @@
\codepoint_generate:nn {#2}
{ \char_value_catcode:n {#2} }
\tl_if_blank:nF {#3}
- {
- \codepoint_generate:nn {#3}
- { \char_value_catcode:n {#3} }
- }
+ {
+ \codepoint_generate:nn {#3}
+ { \char_value_catcode:n {#3} }
+ }
}
}
}
@@ -982,10 +982,10 @@
\@@_codepoint_compare:nNnTF {#5} = { "00DF }
{
\@@_change_case_store:e
- {
- \codepoint_generate:nn { "1E9E }
- { \@@_change_case_catcode:nn {#5} { "1E9E } }
- }
+ {
+ \codepoint_generate:nn { "1E9E }
+ { \@@_change_case_catcode:nn {#5} { "1E9E } }
+ }
\use:c { @@_change_case_next_ #2 :nnn }
{#2} {#3} {#4}
}
@@ -1482,7 +1482,7 @@
\else:
\if_int_compare:w #1 = "1FCF \exp_stop_f:
\prg_return_true:
- \else:
+ \else:
\if_int_compare:w #1 = "1FDD \exp_stop_f:
\prg_return_true:
\else:
@@ -1745,15 +1745,15 @@
\cs_new:Npn \@@_change_case_breathing:nnnnnnw #1#2#3#4#5#6#7 \q_mark
{
\tl_if_blank:nTF {#7}
- {
- \@@_change_case_breathing_aux:nnnnnn
- {#1} {#2} {#3} {#4} {#5} {#6}
- }
- {
- \@@_codepoint_process:nN
- { \@@_change_case_breathing:nnnnnnw {#1} {#2} {#3} {#4} {#5} }
- #7 \q_mark
- }
+ {
+ \@@_change_case_breathing_aux:nnnnnn
+ {#1} {#2} {#3} {#4} {#5} {#6}
+ }
+ {
+ \@@_codepoint_process:nN
+ { \@@_change_case_breathing:nnnnnnw {#1} {#2} {#3} {#4} {#5} }
+ #7 \q_mark
+ }
}
\cs_new:Npn \@@_change_case_breathing_aux:nnnnnn #1#2#3#4#5#6
{
@@ -1786,12 +1786,12 @@
}
\cs_new:Npn \@@_change_case_breathing_dialytika:nnnn #1#2#3#4
{
- \@@_change_case_if_takes_dialytika:nTF {#4}
- {
- \@@_change_case_upper_el_dialytika:n {#4}
- \@@_change_case_loop:nnnw {#1} {#2} {#3}
- }
- { \@@_change_case_loop:nnnw {#1} {#2} {#3} #4 }
+ \@@_change_case_if_takes_dialytika:nTF {#4}
+ {
+ \@@_change_case_upper_el_dialytika:n {#4}
+ \@@_change_case_loop:nnnw {#1} {#2} {#3}
+ }
+ { \@@_change_case_loop:nnnw {#1} {#2} {#3} #4 }
}
% \end{macrocode}
% \end{macro}
@@ -1972,7 +1972,7 @@
\tl_if_head_is_N_type:nTF {#4}
{ \@@_change_case_lower_lt:nnnN }
{ \@@_change_case_loop:nnnw }
- {#1} {#2} {#3} #4 \q_@@_recursion_stop
+ {#1} {#2} {#3} #4 \q_@@_recursion_stop
}
\cs_new:Npn \@@_change_case_lower_lt:nnnN #1#2#3#4
{
@@ -2021,7 +2021,7 @@
% combining char: drop it if present.
% \begin{macrocode}
\cs_new:Npn \@@_change_case_upper_lt:nnnnn #1#2#3#4#5
- {
+ {
\exp_args:Ne \@@_change_case_upper_lt_aux:nnnnn
{
\int_case:nn { \@@_codepoint_from_chars:Nw #5 }
@@ -2031,7 +2031,7 @@
{ "012F } { "012E }
}
}
- {#2} {#3} {#4} {#5}
+ {#2} {#3} {#4} {#5}
}
\cs_new:Npn \@@_change_case_upper_lt_aux:nnnnn #1#2#3#4#5
{
@@ -2320,11 +2320,11 @@
% for the Unicode engines
% \begin{macrocode}
\bool_lazy_or:nnF
- { \sys_if_engine_luatex_p: }
- { \sys_if_engine_xetex_p: }
- {
- \text_declare_uppercase_mapping:nn { "01F0 } { \v { J } }
- }
+ { \sys_if_engine_luatex_p: }
+ { \sys_if_engine_xetex_p: }
+ {
+ \text_declare_uppercase_mapping:nn { "01F0 } { \v { J } }
+ }
% \end{macrocode}
%
% \begin{macrocode}
diff --git a/macros/latex/contrib/l3kernel/l3text-map.dtx b/macros/latex/contrib/l3kernel/l3text-map.dtx
index 6dbb1a9950..bec0df2943 100644
--- a/macros/latex/contrib/l3kernel/l3text-map.dtx
+++ b/macros/latex/contrib/l3kernel/l3text-map.dtx
@@ -2,7 +2,7 @@
%
%% File: l3text-map.dtx
%
-% Copyright (C) 2022-2023 The LaTeX Project
+% Copyright (C) 2022-2024 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -31,7 +31,7 @@
% \fi
%
% \title{^^A
-% The \pkg{l3text-map} package\\ Text processing (mapping)^^A
+% The \pkg{l3text-map} module\\ Text processing (mapping)^^A
% }
%
% \author{^^A
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-12-11}
+% \date{Released 2024-01-04}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3text-purify.dtx b/macros/latex/contrib/l3kernel/l3text-purify.dtx
index 854cbb7e26..6f8be11b3a 100644
--- a/macros/latex/contrib/l3kernel/l3text-purify.dtx
+++ b/macros/latex/contrib/l3kernel/l3text-purify.dtx
@@ -2,7 +2,7 @@
%
%% File: l3text-purify.dtx
%
-% Copyright (C) 2020-2023 The LaTeX Project
+% Copyright (C) 2020-2024 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -31,7 +31,7 @@
% \fi
%
% \title{^^A
-% The \pkg{l3text-purify} package\\ Text processing (purification)^^A
+% The \pkg{l3text-purify} module\\ Text processing (purification)^^A
% }
%
% \author{^^A
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-12-11}
+% \date{Released 2024-01-04}
%
% \maketitle
%
@@ -174,7 +174,7 @@
\token_if_eq_meaning:NNTF #1 #2
{
\@@_use_i_delimit_by_q_recursion_stop:nw
- { \@@_purify_math_start:NNw #2 #3 }
+ { \@@_purify_math_start:NNw #2 #3 }
}
{ \@@_purify_math_search:NNN #1 }
}
diff --git a/macros/latex/contrib/l3kernel/l3text.dtx b/macros/latex/contrib/l3kernel/l3text.dtx
index d47eb59825..61de77d6ab 100644
--- a/macros/latex/contrib/l3kernel/l3text.dtx
+++ b/macros/latex/contrib/l3kernel/l3text.dtx
@@ -2,7 +2,7 @@
%
%% File: l3text.dtx
%
-% Copyright (C) 2020-2023 The LaTeX Project
+% Copyright (C) 2020-2024 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -31,7 +31,7 @@
% \fi
%
% \title{^^A
-% The \pkg{l3text} package\\ Text processing^^A
+% The \pkg{l3text} module\\ Text processing^^A
% }
%
% \author{^^A
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-12-11}
+% \date{Released 2024-01-04}
%
% \maketitle
%
@@ -605,15 +605,15 @@
\if_catcode:w \exp_not:N #1 \c_space_token
10
\else:
- \if_catcode:w \exp_not:N #1 \c_catcode_letter_token
- 11
- \else:
- \if_catcode:w \exp_not:N #1 \c_catcode_other_token
- 12
- \else:
- 13
- \fi:
- \fi:
+ \if_catcode:w \exp_not:N #1 \c_catcode_letter_token
+ 11
+ \else:
+ \if_catcode:w \exp_not:N #1 \c_catcode_other_token
+ 12
+ \else:
+ 13
+ \fi:
+ \fi:
\fi:
\fi:
\fi:
@@ -683,9 +683,9 @@
\int_compare:nNnTF { `#2 } < { "E0 }
{ \@@_codepoint_process:nNN }
{
- \int_compare:nNnTF { `#2 } < { "F0 }
- { \@@_codepoint_process:nNNN }
- { \@@_codepoint_process:nNNNN }
+ \int_compare:nNnTF { `#2 } < { "F0 }
+ { \@@_codepoint_process:nNNN }
+ { \@@_codepoint_process:nNNNN }
}
{#1} #2
}
@@ -1045,10 +1045,10 @@
\token_if_eq_meaning:NNTF #1 #2
{
\@@_use_i_delimit_by_q_recursion_stop:nw
- {
- \@@_expand_store:n {#1}
- \@@_expand_math_loop:Nw #3
- }
+ {
+ \@@_expand_store:n {#1}
+ \@@_expand_math_loop:Nw #3
+ }
}
{ \@@_expand_math_search:NNN #1 }
}
diff --git a/macros/latex/contrib/l3kernel/l3tl-analysis.dtx b/macros/latex/contrib/l3kernel/l3tl-analysis.dtx
index 14d7bcacb9..99469d92c4 100644
--- a/macros/latex/contrib/l3kernel/l3tl-analysis.dtx
+++ b/macros/latex/contrib/l3kernel/l3tl-analysis.dtx
@@ -2,7 +2,7 @@
%
%% File: l3tl-analysis.dtx
%
-% Copyright (C) 2011-2023 The LaTeX Project
+% Copyright (C) 2011-2024 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -32,7 +32,7 @@
%
%
% \title{^^A
-% The \pkg{l3tl-analysis} package\\ Analysing token lists^^A
+% The \pkg{l3tl-analysis} module\\ Analysing token lists^^A
% }
%
% \author{^^A
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2023-12-11}
+% \date{Released 2024-01-04}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3tl-build.dtx b/macros/latex/contrib/l3kernel/l3tl-build.dtx
index ad8e56b739..645f052d15 100644
--- a/macros/latex/contrib/l3kernel/l3tl-build.dtx
+++ b/macros/latex/contrib/l3kernel/l3tl-build.dtx
@@ -2,7 +2,7 @@
%
%% File: l3tl-build.dtx
%
-% Copyright (C) 2018-2023 The LaTeX Project
+% Copyright (C) 2018-2024 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -31,7 +31,7 @@
% \fi
%
% \title{^^A
-% The \pkg{l3tl-build} package\\ Piecewise \texttt{tl} constructions^^A
+% The \pkg{l3tl-build} module\\ Piecewise \texttt{tl} constructions^^A
% }
%
% \author{^^A
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-12-11}
+% \date{Released 2024-01-04}
%
% \maketitle
%
@@ -106,6 +106,17 @@
% \texttt{tl} functions.
% \end{function}
%
+% \begin{function}[added = 2023-12-14]{\tl_build_get_intermediate:NN}
+% \begin{syntax}
+% \cs{tl_build_get_intermediate:NN} \meta{tl~var_1} \meta{tl~var_2}
+% \end{syntax}
+% Stores the contents of the \meta{tl~var_1} in the \meta{tl~var_2}.
+% The \meta{tl~var_1} must have been set up with \cs{tl_build_begin:N}
+% or \cs{tl_build_gbegin:N}. The \meta{tl~var_2} is a
+% \enquote{normal} token list variable, assigned locally using
+% \cs{tl_set:Nn}.
+% \end{function}
+%
% \end{documentation}
%
% \begin{implementation}
@@ -294,6 +305,13 @@
% \end{macro}
% \end{macro}
%
+% \begin{macro}{\tl_build_get_intermediate:NN}
+% \begin{macrocode}
+\cs_new_protected:Npn \tl_build_get_intermediate:NN
+ { \@@_build_get:NNN \__kernel_tl_set:Ne }
+% \end{macrocode}
+% \end{macro}
+%
% \begin{macro}{\@@_build_get:NNN}
% \begin{macro}{\@@_build_get:w, \@@_build_get_end:w}
% The idea is to expand the \meta{tl~var} then the \meta{next~tl} and
diff --git a/macros/latex/contrib/l3kernel/l3tl.dtx b/macros/latex/contrib/l3kernel/l3tl.dtx
index 682f2cdcf5..0249c36aef 100644
--- a/macros/latex/contrib/l3kernel/l3tl.dtx
+++ b/macros/latex/contrib/l3kernel/l3tl.dtx
@@ -2,7 +2,7 @@
%
%% File: l3tl.dtx
%
-% Copyright (C) 1990-2023 The LaTeX Project
+% Copyright (C) 1990-2024 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -31,7 +31,7 @@
% \fi
%
% \title{^^A
-% The \pkg{l3tl} package\\ Token lists^^A
+% The \pkg{l3tl} module\\ Token lists^^A
% }
%
% \author{^^A
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-12-11}
+% \date{Released 2024-01-04}
%
% \maketitle
%
@@ -330,8 +330,13 @@
% \cs{tl_if_novalue_p:n} \Arg{token list}
% \cs{tl_if_novalue:nTF} \Arg{token list} \Arg{true code} \Arg{false code}
% \end{syntax}
-% Tests if the \meta{token list} is exactly equal to the special
-% \cs{c_novalue_tl} marker. This function is intended to allow construction
+% 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} \}
+% is logically \texttt{false}.
+% This function is intended to allow construction
% of flexible document interface structures in which missing optional
% arguments are detected.
% \end{function}
@@ -2361,7 +2366,7 @@
\else:
\prg_return_false:
\fi:
- }
+ }
% \end{macrocode}
% \end{macro}
% \end{macro}
diff --git a/macros/latex/contrib/l3kernel/l3token.dtx b/macros/latex/contrib/l3kernel/l3token.dtx
index 30ae67a205..1f3113a659 100644
--- a/macros/latex/contrib/l3kernel/l3token.dtx
+++ b/macros/latex/contrib/l3kernel/l3token.dtx
@@ -2,7 +2,7 @@
%
%% File: l3token.dtx
%
-% Copyright (C) 2005-2023 The LaTeX Project
+% Copyright (C) 2005-2024 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -31,7 +31,7 @@
% \fi
%
% \title{^^A
-% The \pkg{l3token} package\\ Token manipulation^^A
+% The \pkg{l3token} module\\ Token manipulation^^A
% }
%
% \author{^^A
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-12-11}
+% \date{Released 2024-01-04}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3unicode.dtx b/macros/latex/contrib/l3kernel/l3unicode.dtx
index f2b1983c41..df2a5189db 100644
--- a/macros/latex/contrib/l3kernel/l3unicode.dtx
+++ b/macros/latex/contrib/l3kernel/l3unicode.dtx
@@ -2,7 +2,7 @@
%
%% File: l3unicode.dtx
%
-% Copyright (C) 2018-2023 The LaTeX Project
+% Copyright (C) 2018-2024 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -31,7 +31,7 @@
% \fi
%
% \title{^^A
-% The \pkg{l3unicode} package\\ Unicode support functions^^A
+% The \pkg{l3unicode} module\\ Unicode support functions^^A
% }
%
% \author{^^A
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-12-11}
+% \date{Released 2024-01-04}
%
% \maketitle
%
@@ -172,7 +172,7 @@
{ ~ }
{ \char_generate:nn {#1} { 12 } }
}
- \cs_new:Npn \codepoint_generate:nn #1#2
+ \cs_new:Npn \codepoint_generate:nn #1#2
{
\int_compare:nNnTF {#1} = { `\ }
{ ~ }
@@ -245,11 +245,11 @@
}
}
}
- \cs_new:Npn \@@_generate:n #1
- {
- \__kernel_exp_not:w \exp_after:wN \exp_after:wN \exp_after:wN
- { \char_generate:nn {#1} { 13 } }
- }
+ \cs_new:Npn \@@_generate:n #1
+ {
+ \__kernel_exp_not:w \exp_after:wN \exp_after:wN \exp_after:wN
+ { \char_generate:nn {#1} { 13 } }
+ }
}
% \end{macrocode}
% \end{macro}
@@ -304,7 +304,7 @@
\@@_to_bytes_outputi:nw
{
\@@_to_bytes_auxii:Nnn F
- {#1} { 64 * 64 * 64 }
+ {#1} { 64 * 64 * 64 }
}
\@@_to_bytes_outputii:nw
{
@@ -628,18 +628,18 @@
% \begin{macrocode}
\cs_set_protected:Npe \@@_data_auxv:nnnnw #1#2#3#4#5 Last> #6 \q_stop
{
- \exp_not:N \tl_if_blank:nTF {#6}
- {
- \exp_not:N \@@_range:nnn {#1} { category }
- { \exp_not:V \l_@@_category_Cn_tl }
- \exp_not:N \@@_range:nnn {#1} { uppercase } { 0 }
- \exp_not:N \@@_range:nnn {#1} { lowercase } { 0 }
- }
- {
- \exp_not:N \@@_range:nnn {#1} { category } {#2}
- \exp_not:N \@@_range:nnn {#1} { uppercase } {#3}
- \exp_not:N \@@_range:nnn {#1} { lowercase } {#4}
- }
+ \exp_not:N \tl_if_blank:nTF {#6}
+ {
+ \exp_not:N \@@_range:nnn {#1} { category }
+ { \exp_not:V \l_@@_category_Cn_tl }
+ \exp_not:N \@@_range:nnn {#1} { uppercase } { 0 }
+ \exp_not:N \@@_range:nnn {#1} { lowercase } { 0 }
+ }
+ {
+ \exp_not:N \@@_range:nnn {#1} { category } {#2}
+ \exp_not:N \@@_range:nnn {#1} { uppercase } {#3}
+ \exp_not:N \@@_range:nnn {#1} { lowercase } {#4}
+ }
}
% \end{macrocode}
% Calculated the length of the range and the space remaining in the current
@@ -676,20 +676,20 @@
\int_compare:nNnT { \clist_count:c { l_@@_ #3 _block_clist } }
= \c_@@_block_size_int
{ \@@_save_blocks:nn {#3} { 1 } }
- \int_compare:nNnF
- { \int_div_truncate:nn { #2 - #1 } \c_@@_block_size_int } = 0
- {
- \tl_set:ce { l_@@_ #3 _block_clist }
- {
- \exp_args:NNe \use:nn \use_none:n
- { \prg_replicate:nn { \c_@@_block_size_int } { , #4 } }
- }
- \@@_save_blocks:nn {#3}
- { \int_div_truncate:nn { (#2 - #1) } \c_@@_block_size_int }
- }
- \prg_replicate:nn
- { \int_mod:nn { #2 - #1 } \c_@@_block_size_int }
- { \clist_put_right:ce { l_@@_ #3 _block_clist } {#4} }
+ \int_compare:nNnF
+ { \int_div_truncate:nn { #2 - #1 } \c_@@_block_size_int } = 0
+ {
+ \tl_set:ce { l_@@_ #3 _block_clist }
+ {
+ \exp_args:NNe \use:nn \use_none:n
+ { \prg_replicate:nn { \c_@@_block_size_int } { , #4 } }
+ }
+ \@@_save_blocks:nn {#3}
+ { \int_div_truncate:nn { (#2 - #1) } \c_@@_block_size_int }
+ }
+ \prg_replicate:nn
+ { \int_mod:nn { #2 - #1 } \c_@@_block_size_int }
+ { \clist_put_right:ce { l_@@_ #3 _block_clist } {#4} }
}
% \end{macrocode}
% To allow rapid comparison, each completed block is stored locally as a
@@ -742,13 +742,13 @@
\@@_range:nnn { 110000 } {##1} { 0 }
\@@_finalise_blocks:n {##1}
}
- }
+ }
\cs_set_protected:Npn \@@_finalise_blocks:n #1
{
\cs_gset_eq:cc { c_@@_ #1 _index_intarray } { g_@@_ #1 _index_intarray }
\cs_undefine:c { g_@@_ #1 _index_intarray }
\intarray_new:cn { g_@@_ #1 _blocks_intarray }
- { ( \tl_use:c { l_@@_ #1 _block_tl } - 1 ) * \c_@@_block_size_int }
+ { ( \tl_use:c { l_@@_ #1 _block_tl } - 1 ) * \c_@@_block_size_int }
\int_step_inline:nn { \tl_use:c { l_@@_ #1 _block_tl } - 1 }
{
\exp_args:Nv \@@_finalise_blocks:nnn
diff --git a/macros/latex/contrib/l3kernel/source3.pdf b/macros/latex/contrib/l3kernel/source3.pdf
index fc0be1908b..8485500fb3 100644
--- a/macros/latex/contrib/l3kernel/source3.pdf
+++ b/macros/latex/contrib/l3kernel/source3.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/source3.tex b/macros/latex/contrib/l3kernel/source3.tex
index 0df48640b4..5aae34aba2 100644
--- a/macros/latex/contrib/l3kernel/source3.tex
+++ b/macros/latex/contrib/l3kernel/source3.tex
@@ -2,7 +2,7 @@
File: source3.tex
-Copyright (C) 1990-2012,2017-2023 The LaTeX Project
+Copyright (C) 1990-2012,2017-2024 The LaTeX Project
It may be distributed and/or modified under the conditions of the
LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -29,7 +29,7 @@ for those people who are interested.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% This document typesets the LaTeX3 sources as a single document.
-% This produces quite a large file (more than 780 pages).
+% This produces quite a large file (more than 1670 pages as of Dec 2023).
%
% There is also a shorter version (interface3.tex) that only typesets the
% command % interface descriptions.
diff --git a/macros/latex/contrib/lwarp/README.txt b/macros/latex/contrib/lwarp/README.txt
index 3918deb3e5..5d40622028 100644
--- a/macros/latex/contrib/lwarp/README.txt
+++ b/macros/latex/contrib/lwarp/README.txt
@@ -1,5 +1,5 @@
-LaTeX lwarp package v0.912 README.txt
+LaTeX lwarp package v0.913 README.txt
Files included are:
@@ -41,7 +41,6 @@ and version 1.3 or later is part of all distributions of LaTeX
version 2005/12/01 or later.
-Copyright 2016-2023 Brian Dunn
+Copyright 2016-2024 Brian Dunn
-Homepage: http://BDTechConcepts.com
-Email: bd@BDTechConcepts.com
+GitHub: https://github.com/bdtc/lwarp
diff --git a/macros/latex/contrib/lwarp/lwarp.dtx b/macros/latex/contrib/lwarp/lwarp.dtx
index d7f79fc3cf..efd097b79c 100644
--- a/macros/latex/contrib/lwarp/lwarp.dtx
+++ b/macros/latex/contrib/lwarp/lwarp.dtx
@@ -1,7 +1,7 @@
%
% \iffalse meta-comment
%
-% Copyright 2016-2023 Brian Dunn
+% Copyright 2016-2024 Brian Dunn
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either version 1.3
@@ -16,7 +16,7 @@
% \iffalse
%<package>\NeedsTeXFormat{LaTeX2e}[1999/12/01]
%<package>\ProvidesPackage{lwarp}
-%<package> [2023/08/28 v0.912 Allows LaTeX to directly produce HTML5 output.]
+%<package> [2024/01/05 v0.913 Allows LaTeX to directly produce HTML5 output.]
%
%<*driver>
\documentclass{ltxdoc}
@@ -88,7 +88,7 @@
% \usepackage[log-declarations=false]{xparse}
\usepackage{xparse}
-\usepackage{ifptex}% *8* remove later
+\usepackage{ifptex}% in case TL2019 or earlier
\usepackage[lwarpmk, warpdisable]{lwarp}
@@ -534,23 +534,6 @@ used when converting \LaTeX\ \PDF\ output with \HTML\ tags into
a plain-text file with \HTML\ tags.
}
-\newcommand{\limitsbibtex}{%
-When enough authors are cited for a source,
-\watchout[Modify *.bib]
-\trouble{Improper \cs{prevdepth}>bibtex=\pkg{bibtex}}
-\trouble{bibtex=\pkg{bibtex}>Improper \cs{prevdepth}}
-\trouble{bibtex=\pkg{bibtex}>\cs{etalchar}}
-\trouble{etalchar=\cs{etalchar}}
-\BibTeX\ may use the \cs{etalchar} command
-to display a math superscript with a $+$ character to indicate ``and others''.
-Without modification, this will result in an ``Improper \cs{prevdepth}'' error.
-At present, \pkg{lwarp} requires that \cs{etalchar} be replaced by a text superscript.
-To do so, add to the start of the \filenm{.bib} file the following:
-\begin{sourcedisplay}
-\hspace*{-6em}@PREAMBLE\{"\cs{let}\cs{etalchar}\cs{relax}
-\cs{newcommand}\{\cs{etalchar}\}[1]\{\cs{textsuperscript}\{\#1\}\}"\}
-\end{sourcedisplay}
-}
\newcommand{\limitsgloss}{%
To process the \HTML\ glossary:
@@ -798,23 +781,39 @@ but \cs{bfseries}, etc.\ work only in some situations.
\trouble[HTML special chars]{HTML>entities}
\trouble{HTML>\&, \textless, \textgreater}
\trouble{text>\&, \textless, \textgreater}
+\trouble{HTML>sanitization}
have special meanings in \HTML.
If \cs{\&}, \cs{textless}, and \cs{textgreater} are used, proper
\HTML\ entities will be used, but there may be \HTML\ parsing problems
if these special characters occur unescaped in program listings
or other verbatim text.
+\trouble{listings>HTML sanitization}
+\trouble{program listings>HTML sanitization}
+\trouble{HTML>sanitization}
+\trouble{verbatim=\pkg{verbatim}}
+\gindex{listings>HTML sanitization}
+\gindex{program listings>HTML sanitization}
+\gindex{HTML>sanitization}
For program listings, the \pkg{listings} package is supported,
\margintag{program listings}
-and its \optn{literate} option is used to convert
+and its \optn{literate} option is used to automatically convert
\texttt{\&}, \texttt{\textless}, and \texttt{\textgreater}
to proper \HTML\ entities.
-The various \env{verbatim}-related environments do not convert
-\texttt{\&}, \texttt{\textless}, and \texttt{\textgreater},
-\margintag{verbatim}
+\pkg{minted} sanitizes \HTML\ automatically by its colorizing,
+which splits the special characters from the rest of the tag.
+
+The \pkg{fancyvrb} and \pkg{fvextra} packages automatically sanitize \HTML\ entities,
+\trouble[verbatim]{verbatim>HTML sanitization}
+but the core \LaTeX\ \env{verbatim}-related environments do not,
+nor does the \pkg{verbatim} package,
so care must be taken to avoid accidentally including valid \HTML\ code inside
-these environments. Adding a space on either side may be sufficient.
+these environments. It may be sufficient to add a space on either side of
+\texttt{\&}, \texttt{\textless}, and \texttt{\textgreater}.
+
+\pkg{fancyvrb} does not sanitize \HTML\ when using the \optn{gobble} option.
+\watchout[\optn{gobble}]
}
\newcommand{\limitstextcomp}{%
@@ -985,9 +984,6 @@ use \cs{footnotemark} and \cs{footnotetext}:
\textred{\cs{footnotetext}}\{A footnote with \cs{verb}+verbtim+.\} \\
\end{sourcedisplay}
and likewise for equations or display math.
-
-At present there is a bug such that paragraph closing tags are not present in
-footnotes when \cs{VerbatimFootnotes} are selected. The browser usually compensates.
}
\newcommand{\limitsmanyfootbigfoot}{%
@@ -1369,8 +1365,8 @@ Limitations when using \MathJax\ include:
\item Math appearing inside a lateximage,
\margintag{lateximage}
and therefore also inside a \TikZ\ or \env{picture}
- environment, is rendered as \SVG\ math even if \MathJax
- is used in the rest of the document.
+ environment, is rendered as \SVG\ math even if \MathJax\ is
+ used in the rest of the document.
\item For \pkg{siunitx},
\margintag{\pkg{siunitx}}
@@ -1461,9 +1457,8 @@ Yet another problem is math packages which are only partially emulated
in \MathJax.
The macro \cs{inlinemathother} may be used before a sequence of dynamic or complicated
math expressions, and \cs{inlinemathnormal} after. Doing so tells \pkg{lwarp} to
-use unhashed \SVG\ math images for those particular expressins, even if \MathJax
-is otherwise in use.
-See \cref{sec:localizingdynamicmath}.
+use unhashed \SVG\ math images for those particular expressins, even if \MathJax\ is
+otherwise in use. See \cref{sec:localizingdynamicmath}.
}
\newcommand*{\limitsmathdisplay}{
@@ -2037,9 +2032,6 @@ Color definitions, models, and mixing are fully supported
\margintag{color support}
without any changes required.
-\cs{rowcolors} is supported, except that the optional argument is ignored so far.
-\margintag{colored tables}
-
\cs{textcolor}, \cs{colorbox}, and \cs{fcolorbox} are supported.
\margintag{colored text and boxes}
@@ -2576,6 +2568,9 @@ in that order.
\trouble[row/cell color]{colortbl=\pkg{colortbl}}
\pkg{colortbl} ignores the overhang arguments.
+
+\cs{rowcolors} is supported, except that the optional argument is ignored so far.
+\margintag{colored tables}
}
\newcommand{\limitsctable}{%
@@ -2768,6 +2763,9 @@ may be defined as:
\margintag{indented alignment}
space which may not line up exactly with what \prog{pdftotext} detects.
Some lines may be off slightly in their left edge.
+
+\pkg{lwarp} sanitizes \HTML\ for \pkg{fancybox} verbatims, except for
+the contents of \cs{VerbBox} and any \cs{verb} inside.
}
\newcommand{\limitsmdframed}{%
@@ -3211,6 +3209,12 @@ after \cmds{lwarpmk html} use \cmds{lwarpmk cleanlimages} a single time,
and then \cmds{lwarpmk limages} to generate the new images.
}
+\newcommand*{\newlabelsystem}{
+Due to changes in cross referencing, \watchout[New labels]
+\textred{execute \cmds{lwarpmk clean} before recompiling.}
+}
+
+
\newcommand*{\describehashing}{%
If starred, a hashed filename is used.\margintag{image filename hashing}
@@ -3424,6 +3428,7 @@ This boolean may be tested by the user for later use.
% \changes{v0.910}{2023/01/03}{\ 2023/01/03}
% \changes{v0.911}{2023/02/28}{\ 2023/02/28}
% \changes{v0.912}{2023/08/28}{\ 2023/08/28}
+% \changes{v0.913}{2024/01/05}{\ 2024/01/05}
@@ -3456,7 +3461,9 @@ This boolean may be tested by the user for later use.
%
% \fileversion{} \Dash \filedate
%
-% {\small\textcopyright{} 2016--2023} Brian Dunn\\ \small \texttt{bd@BDTechConcepts.com}
+% {\small\textcopyright{} 2016--2024} Brian Dunn
+%
+% GitHub: \url{https://github.com/bdtc/lwarp}
%
% \end{center}
%
@@ -3542,6 +3549,8 @@ This boolean may be tested by the user for later use.
%
% To update existing projects, see \cref{sec:updates}: \nameref{sec:updates}.
%
+% Need help? See the \nameref{sec:indexgen} or the \nameref{sec:indextrb}.
+%
% \color{red!30!black}\bfseries
% \pkg{Lwarp} is still in development. Changes are likely.
%
@@ -3657,8 +3666,22 @@ This boolean may be tested by the user for later use.
% see the end of the Change History on page \pageref{sec:changesend}.
%
% \begin{description}
+% \item[v0.913:] \HTML\ sanitization for verbatims.
+% \begin{itemize}
+% \item Now at GitHub: \url{https://github.com/bdtc/lwarp}
+% \item Added bibliography usage info to docs and tutorial.
+% \item \cs{verb} now uses a \CSS\ class of \attribute{verb}
+% instead of \attribute{texttt}.
+% \item Improved \HTML\ sanitization for hyperlinks,
+% \pkg{fancybox}, \pkg{fancyvrb}, \pkg{fvextra}, \pkg{minted}.
+% \item Updated \pkg{fancyvrb}, \pkg{fvextra}, \pkg{simplebnf}.
+% \item \pkg{siunitx}: Updated, and improved complex i,j.
+% \item Added \pkg{doipubmed}.
+% \end{itemize}
+% \needspace{2\baselineskip}
% \item[v0.912:] Updated for new \LaTeX\ label system.
% \begin{itemize}
+% \item \newlabelsystem
% \item Fixed for updated kernel label system, name and back references.
% \item Updated \pkg{memoir}, \pkg{tcolorbox}.
% \item \pkg{nameref}: Now allowed to load before \pkg{lwarp}, such as by \pkg{memoir}.
@@ -3815,8 +3838,7 @@ This boolean may be tested by the user for later use.
% \needspace{2\baselineskip}
% \item[v0.896:] Back references, accessibility.
% \begin{itemize}
-% \item \textred{Due to changes in cross referencing, \watchout
-% execute \cmds{lwarpmk clean} before recompiling.}
+% \item \newlabelsystem
% \item Increased sectioning nesting stack depth. Error if overflow stack.
% \item Fixed footnotes at the end of the document,
% or inside a \env{description} label.
@@ -6080,7 +6102,7 @@ This boolean may be tested by the user for later use.
% due to native \LaTeX\ processing.\\
%
% Theorems: & Native \LaTeX\ theorems,
-% \mpkg{amsthm}, \spkg{apxproof}, \mpkg{ntheorem}, \mpkg{shadethm},
+% \mpkg{amsthm}, \mpkg{apxproof}, \mpkg{ntheorem}, \mpkg{shadethm},
% \mpkg{theorem}, \mpkg{thmbox}, \mpkg{thmtools}. \\
%
% Additional math: & Math fonts via \SVG\ images,
@@ -6294,8 +6316,8 @@ This boolean may be tested by the user for later use.
% \mpkg{axodraw2}, \mpkg{bitpattern}, \spkg{blochsphere}, \spkg{bodegraph},
% \spkg{bohr}, \mpkg{bytefield},
% \mpkg{chemfig}, \mpkg{chemformula}, \mpkg{chemgreek},
-% \mpkg{chemmacros}, \mpkg{chemnum},
-% \spkg{circuitikz}, \spkg{econometrics}\ejax, \spkg{elements},
+% \mpkg{chemmacros}, \mpkg{chemnum}, \spkg{circuitikz},
+% \mpkg{doipubmed}, \spkg{econometrics}\ejax, \spkg{elements},
% \mpkg{engtlc}\ejax, \spkg{fast-diagram}, \mpkg{ghsystem},
% \spkg{hepnicenames}, \spkg{heppennames}, \spkg{hepunits}\ejax,
% \mpkg{isotope}\ejax,
@@ -6971,6 +6993,7 @@ This boolean may be tested by the user for later use.
%
% \section{Tutorial}
% \label{sec:tutorial}
+% ^^A *tutorial
%
% This section shows an example of how to create an \pkg{lwarp} document.
%
@@ -7447,6 +7470,20 @@ This boolean may be tested by the user for later use.
%
% \clearpage
%
+% \subsection{Using a bibliography}
+%
+% \changes{v0.913}{2023/10/01}{Docs: Update a bibliography.}
+%
+% To process the bibliography for the \HTML\ version:
+% \userentry{bibtex <filename>\_html}
+% or
+% \userentry{biber <filename>\_html}
+%
+% To see the bibliography in the \HTML\ version:
+% \userentry{lwarpmk html1}
+% as many times as neccesary.
+%
+%
% \subsection{Using a glossary}
%
% \changes{v0.29}{2017/04/15}{Docs: Using a glossary}
@@ -7889,7 +7926,7 @@ This boolean may be tested by the user for later use.
% \DescribePackage{lmodern}
% To use Latin Modern instead, add
% \begin{sourcedisplay}
-% |usepackage{lmodern}|
+% |\usepackage{lmodern}|
% \end{sourcedisplay}
% to the preamble.
%
@@ -7908,7 +7945,7 @@ This boolean may be tested by the user for later use.
% \margintag{\prog{latex}, \prog{pdflatex}, T1, UTF8}
% \pkg{lwarp} automatically loads \pkg{fontenc} with T1 encoding.
% \pkg{fontenc} may be loaded with an additional encoding after \pkg{lwarp}.
-% \pkg{inputenc} is automatically loaded with UTF8 encoding if if has not yet been loaded,
+% \pkg{inputenc} is automatically loaded with UTF8 encoding if it has not yet been loaded,
% but may also be specified with another encoding such as |latin1|.
% See the next section regarding index encoding.
%
@@ -8273,7 +8310,7 @@ This boolean may be tested by the user for later use.
% \margintag{automatic setting}
% to sensible values for each of those programs while compiling a single index.
% \pkg{lwarp}'s \optn{makeindexStyle}, \optn{xindyStyle},
-% \optn{xindyLanuage}, and \optn{xindyCodepage} options will be used if specified.
+% \optn{xindyLanguage}, and \optn{xindyCodepage} options will be used if specified.
%
% If specifying \optn{PrintIndexCmd} manually,
% \trouble{PrintIndexCmd}
@@ -8313,7 +8350,7 @@ This boolean may be tested by the user for later use.
% \margintag{automatic setting}
% to sensible values for each of those programs while compiling a single index.
% \pkg{lwarp}'s \optn{makeindexStyle}, \optn{xindyStyle},
-% \optn{xindyLanuage}, and \optn{xindyCodepage} options will be used if specified.
+% \optn{xindyLanguage}, and \optn{xindyCodepage} options will be used if specified.
%
% If specifying \optn{HTMLIndexCmd} manually,
% \trouble[xindy]{xindy=\prog{xindy}>options>HTMLIndexCmd=\optn{HTMLIndexCmd}}
@@ -8344,7 +8381,7 @@ This boolean may be tested by the user for later use.
% \margintag{automatic setting}
% to either of the two settings show above.
% \pkg{lwarp}'s \optn{makeindexStyle}, \optn{xindyStyle},
-% \optn{xindyLanuage}, and \optn{xindyCodepage} options will be used if specified.
+% \optn{xindyLanguage}, and \optn{xindyCodepage} options will be used if specified.
% Unlike \optn{PrintIndexCmd} and \optn{HTMLIndexCmd},
% \prog{latexmk} uses either of the single-line settings of \optn{LatexmkIndexCmd}
% shown above to compile each of multiple indexes if necessary.
@@ -8677,7 +8714,7 @@ This boolean may be tested by the user for later use.
% of the section names. If false, web pages are numbered.
% Either way, the \optn{HTMLFilename} option is used as a prefix.
% See \cref{sec:filenameexamples} for examples of naming and numbering \HTML\ files.
-% The user must ensure that filenames are unique after begin sanitized.
+% The user must ensure that filenames are unique after being sanitized.
% \trouble[Unique filename!]{HTML>missing pages>filename not unique}
% For example, math in the section name is removed before creating the filename,
% so the rest of the filename must be sufficiently unique to avoid name collisions.
@@ -8728,7 +8765,7 @@ This boolean may be tested by the user for later use.
% \begin{description}
% \ItemDescribeMacro{\CSSFilename} \marg{filename.css} \DescribeDefault{lwarp.css} \quad
% Sets the \CSS\ file to use for the following
-% files. May be changed before each each sectioning command which would
+% files. May be changed before each sectioning command which would
% cause a file split.
%
% The \CSS\ styles of the web pages are set by the \cs{CSSFilename} command.
@@ -8737,12 +8774,12 @@ This boolean may be tested by the user for later use.
% in this tutorial. Change it to |lwarp_formal.css| for a more formal look,
% or comment out the \cs{CSSFilename} command to see the default.
% \cs{CSSFilename} may be used before each file break to set the \CSS\ for
-% individual pagess of the website.
+% individual pages of the website.
%
% \ItemDescribeMacro{\MathJaxFilename} \marg{filename}
% \DescribeDefault{\filenm{lwarp_mathjax.txt}} \quad
% Sets the \MathJax\ script file to use for the following
-% files. May be changed before each each sectioning command which would
+% files. May be changed before each sectioning command which would
% cause a file split.
%
% The \MathJax\ script file is copied into the head of each \HTML\ file.
@@ -8792,7 +8829,7 @@ This boolean may be tested by the user for later use.
%
% \ItemDescribeMacro{\HTMLDescription} \marg{description} \DescribeDefault{<empty>} \quad
% Sets the \HTML\ \attribute{description} tag for
-% the following files. May be changed before each each sectioning command which would
+% the following files. May be changed before each sectioning command which would
% cause a file split.
%
% \ItemDescribeMacro{\HTMLPageTop} \marg{contents} \DescribeDefault{<empty>} \quad
@@ -9144,8 +9181,8 @@ This boolean may be tested by the user for later use.
% Performs the given actions only when \HTML\ output is being generated.
%
% \DescribeEnv{warpMathJax}
-% Anything which is to be done only while using \HTML\ output with \MathJax
-% is surrounded by a \env{warpMathJax} environment.
+% Anything which is to be done only while using \HTML\ output with \MathJax\ is
+% surrounded by a \env{warpMathJax} environment.
% Usually, this is \cs{CustomizeMathJax}, used to add emulation macros.
% |\end{warpMathJax}| must appear on its own line.
% \trouble[\texttt{\cs{end}\{warpMathJax\}}]{warpMathJax}
@@ -9943,10 +9980,44 @@ This boolean may be tested by the user for later use.
%
% \subsubsection{\prog{BibTeX}}
% \label{sec:limitsbibtex}
+%
+% \trouble{bibtex=\pkg{bibtex}>Update bibliography}
+% \trouble{bibliography>update}
+% \gindex{bibtex=\pkg{bibtex}>Update bibliography}
+% \gindex{bibliography>update}
+% To update the \HTML\ version of the bibliography:
+% \userentry{bibtex <filename>\_html}
+% \changes{v0.913}{2023/10/01}{Docs: Update a bibliography.}
+%
% \DescribeMacro{\etalchar} Displays a superscript ``+'' to indicate ``and others''.
% \changes{v0.54}{2018/03/09}{Docs: BibTeX.}
%
-% \limitsbibtex
+% When enough authors are cited for a source,
+% \watchout[Modify *.bib]
+% \trouble{Improper \cs{prevdepth}>bibtex=\pkg{bibtex}}
+% \trouble{bibtex=\pkg{bibtex}>Improper \cs{prevdepth}}
+% \trouble{bibtex=\pkg{bibtex}>\cs{etalchar}}
+% \trouble{etalchar=\cs{etalchar}}
+% \BibTeX\ may use the \cs{etalchar} command
+% to display a math superscript with a $+$ character to indicate ``and others''.
+% Without modification, this will result in an ``Improper \cs{prevdepth}'' error.
+% At present, \pkg{lwarp} requires that \cs{etalchar} be replaced by a text superscript.
+% To do so, add to the start of the \filenm{.bib} file the following:
+% \begin{sourcedisplay}
+% \hspace*{-6em}@PREAMBLE\{"\cs{let}\cs{etalchar}\cs{relax}
+% \cs{newcommand}\{\cs{etalchar}\}[1]\{\cs{textsuperscript}\{\#1\}\}"\}
+% \end{sourcedisplay}
+%
+%
+% \subsubsection{\prog{biber}}
+%
+%\trouble{biber=\pkg{biber}>Update bibliography}
+%\trouble{bibliography>update}
+%\gindex{biber=\pkg{biber}>Update bibliography}
+%\gindex{bibliography>update}
+% To update the \HTML\ version of the bibliography:
+% \userentry{biber <filename>\_html}
+% \changes{v0.913}{2023/10/01}{Docs: Update a bibliography.}
%
%
% \subsubsection{\pkg{xcite} package}
@@ -12258,7 +12329,6 @@ This boolean may be tested by the user for later use.
% \begin{enumerate}
% \item Change the source in \filenm{lwarp.dtx}.
% \item |pdflatex lwarp.ins| -or- |pdflatex core.ins|
-% \item |pdflatex lwarp.dtx|
% \item If modifying \prog{lwarpmk} the new version should now be active.
% \item If modifying \CSS\ files or other files generated by \pkg{lwarp}:
% \begin{enumerate}
@@ -12266,6 +12336,7 @@ This boolean may be tested by the user for later use.
% in the project.
% \item Reload the \HTML\ document to see the effect of the new \CSS\ files.
% \end{enumerate}
+% \item If done testing, |pdflatex lwarp.dtx| to update the \pkg{lwarp} documentation.
% \end{enumerate}
%
% Sometimes it is worth checking the |<project>_html.pdf| file, which is the
@@ -13073,7 +13144,7 @@ This boolean may be tested by the user for later use.
% \begin{macrocode}
\RequirePackage{iftex}[2019/11/07]
\RequirePackage{ifpdf}
-\RequirePackage{ifptex}
+\RequirePackage{ifptex}% in case TL2019 or earlier
\newif\ifxetexorluatex
@@ -13615,6 +13686,7 @@ This boolean may be tested by the user for later use.
\LWR@loadafter{anonchap}
\LWR@loadafter{anysize}
\LWR@notmemoirloadafter{appendix}
+\LWR@loadafter{apxproof}
\LWR@loadafter{ar}
\LWR@loadafter{arabicfront}
\LWR@notmemoirloadafter{array}
@@ -13702,6 +13774,7 @@ This boolean may be tested by the user for later use.
\LWR@loadafter{decorule}
\LWR@loadafter{diagbox}
\LWR@loadafter{dingbat}
+\LWR@loadafter{doipubmed}
\LWR@loadafter{DotArrow}
\LWR@loadafter{dotlessi}
\LWR@loadafter{dprogress}
@@ -14194,8 +14267,11 @@ This boolean may be tested by the user for later use.
%
% The default for \pdfLaTeX, \dviLaTeX, up\LaTeX, etc:
% \changes{v0.63}{2018/11/30}{Fix: Default \cs{LWR@mdfive}.}
+% \changes{v0.913}{2023/12/09}{Fix: Default \cs{LWR@mdfive}.}
% \begin{macrocode}
-\let\LWR@mdfive\pdfmdfivesum
+\ifdef{\pdfmdfivesum}
+ {\let\LWR@mdfive\pdfmdfivesum}
+ {}
% \end{macrocode}
%
% For \LuaLaTeX:
@@ -14601,11 +14677,12 @@ This boolean may be tested by the user for later use.
%
% \begin{macro}{\LWR@maybe@orignewpage}
% Only do \cs{LWR@orignewpage} if not inside a \TeX\ box.
+% Avoids nested paragraph tags.
% \changes{v0.88}{2020/06/06}{Added.}
% \begin{macrocode}
\newcommand*{\LWR@maybe@orignewpage}{%
\LWR@traceinfo{LWR@maybe@orignewpage}%
- \ifnumgreater{\value{LWR@texboxdepth}}{0}
+ \ifnumgreater{\value{LWR@texboxdepth}}{0}%
{}%
{\LWR@orignewpage}%
\LWR@traceinfo{LWR@maybe@orignewpage done}%
@@ -17128,6 +17205,8 @@ This boolean may be tested by the user for later use.
%
%
% \begin{macro}{\LWR@formatted@checkname} \marg{name}
+%
+% Verify that a print and \HTML\ version exist.
% \changes{v0.893}{2020/11/15}{Added.}
% \changes{v0.901}{2021/08/18}{Improved error handling.}
% \begin{macrocode}
@@ -17506,12 +17585,14 @@ This boolean may be tested by the user for later use.
% be remembered here.
% \changes{v0.51}{2018/03/12}{Fix: Remember original \cs{\#} in case is redefined.}
% \changes{v0.72}{2019/05/24}{Use \cs{LWR@formatted} for \cs{bfseries}, etc.}
+% \changes{v0.913}{2023/12/09}{Added \cs{nobreakspace}.}
% \begin{macrocode}
\chardef\LWR@origpound=`\#
% \end{macrocode}
% \begin{macrocode}
\let\LWR@origcomma\,
-\let\LWR@origtilde~
+\LetLtxMacro\LWR@origtilde~
+\LetLtxMacro\LWR@orignobreakspace\nobreakspace
\let\LWR@orighfil\hfil
\let\LWR@orighss\hss
\let\LWR@origllap\llap
@@ -18268,6 +18349,8 @@ This boolean may be tested by the user for later use.
% \changes{v0.902}{2021/09/15}{\filenm{lwarp.css}: Added \pkg{beamerarticle}.}
% \changes{v0.902}{2021/09/28}{\filenm{lwarp.css}: Added \attribute{textnormal}.}
% \changes{v0.903}{2022/01/02}{\filenm{lwarp.css}: Improved pars in lists.}
+% \changes{v0.913}{2023/09/27}{\filenm{lwarp.css}: Improved \pkg{fancyvrb}.}
+% \changes{v0.913}{2023/09/27}{\filenm{lwarp.css}: Added complex number i,j format.}
%
% ^^A *lwarp.css
%
@@ -18371,6 +18454,12 @@ span.textup, div.textup {
font-variant-numeric: normal ;
}
+
+/* For complex number i,j symbols */
+span.ijit {font-style: italic; font-variant: normal}
+span.ijup {font-style: normal; font-variant: normal}
+
+
span.textsc, div.textsc {
font-variant: small-caps;
font-variant-numeric: oldstyle-nums ;
@@ -18944,8 +19033,10 @@ span.abstractrunintitle{
}
.fancyvrb {
- font-size:.85em ;
- margin: 3ex 0pt 3ex 0pt
+ margin: 3ex 0pt 3ex 0pt ;
+ font-family: "DejaVu Mono", "Bitstream Vera Mono", "Lucida Console",
+ "Nimbus Mono L", "Liberation Mono", "FreeMono", "Andale Mono",
+ "Courier New", monospace;
}
.fancyvrblabel {
@@ -19511,7 +19602,7 @@ div.programlisting pre.verbatim span.callout{
font-size: .85em ;
}
-span.verbatim {
+span.verbatim, span.verb {
font-family: "DejaVu Mono", "Bitstream Vera Mono", "Lucida Console",
"Nimbus Mono L", "Liberation Mono", "FreeMono", "Andale Mono",
"Courier New", monospace;
@@ -21137,10 +21228,10 @@ MathJax = {
\begin{filecontents*}[overwrite]{lwarpmk.lua}
#!/usr/bin/env texlua
--- Copyright 2016-2023 Brian Dunn
+-- Copyright 2016-2024 Brian Dunn
-printversion = "v0.912"
+printversion = "v0.913"
requiredconfversion = "2" -- also at *lwarpmk.conf
function printhelp ()
@@ -25188,7 +25279,7 @@ end -- not --version
% \changes{v0.902}{2021/09/20}{Improved \pkg{footnote} par tags.}
% \begin{macrocode}
\ifbool{LWR@spewingnotes}{}{%
- \LWR@origtilde\LWR@orignewline%
+ \LWR@orignobreakspace\LWR@orignewline%
\LWR@htmltagc{/\LWR@tagregularparagraph}%
\LWR@orignewline%
}%
@@ -25999,6 +26090,33 @@ end -- not --version
% \end{macrocode}
% \end{macro}
+
+% \DescribeBoolean{LWR@HTMLsanitize@tmpb@enable}
+% Allow to disable sanitization while inside a \env{lateximage},
+% or while using \pkg{minted}.
+% \watchout
+% \HTML\ sanitizaiton was occurring too early,
+% and \pkg{minted} would then colorize the sanitized results,
+% breaking the \HTML\ entities in \pkg{lwarp}'s \HTML\ output.
+% \changes{v0.913}{2023/11/17}{\bool{LWR@HTMLsanitize@tmpb@enable} added.}
+% \begin{macrocode}
+\newbool{LWR@HTMLsanitize@tmpb@enable}
+\booltrue{LWR@HTMLsanitize@tmpb@enable}
+% \end{macrocode}
+
+% \DescribeBoolean{LWR@HTMLsanitize@tmpb@removebackslash}
+%
+% Allow to enable \Slash disable sanitization of the
+% macros \cs{\%}, \cs{\#}, \cs{\%}.
+% This is usually enabled to allow the user to enter these macros in
+% \URL{}s, for example, but is disabled for ALT tags and
+% \MathJax\ output where the literal \LaTeX\ source must be preserved.
+% \changes{v0.913}{2023/11/25}{\bool{LWR@HTMLsanitize@tmpb@removebackslash} added.}
+% \begin{macrocode}
+\newbool{LWR@HTMLsanitize@tmpb@removebackslash}
+\booltrue{LWR@HTMLsanitize@tmpb@removebackslash}
+% \end{macrocode}
+
% \DescribeBoolean{LWR@MathJax@silentquotes}
% If true, double quotes (\cs{"} and |"|) are removed (used for \pkg{mathspec}).
% This unfortunately includes double quotes used inside \cs{text} with \MathJax.
@@ -26009,11 +26127,94 @@ end -- not --version
% \end{macrocode}
+% \begin{macro}{\LWR@HTMLsanitize@tmpb} Sanitizes \HTML\ for \cs{tmpb}.
+% These characters may be interpreted by the browser.
+% \changes{v0.913}{2023/10/01}{Added.}
+% \begin{macrocode}
+\catcode`\&=12
+\newcommand*{\LWR@HTMLsanitize@tmpb}{%
+ \ifbool{LWR@HTMLsanitize@tmpb@enable}%
+ {%
+% \end{macrocode}
+%
+% \HTML\ entities:
+% \begin{macrocode}
+ \LWR@replacestrings{&}{&amp;}% must be first because & is used for lt, gt, etc.
+ \LWR@replacestrings{<}{&lt;}%
+ \LWR@replacestrings{>}{&gt;}%
+ \LWR@replacestrings{'}{&apos;}%
+ \LWR@replacestrings{`}{&grave;}%
+ \LWR@replacestrings{_}{\detokenize{_}}%
+% \end{macrocode}
+% ^^A \StrSubstitute[100]{\tmpb}{\LWRpercent}{&percnt;}[\tmpb]%
+%
+% Neutralize \cs{\%}, \cs{\#}, \cs{\&} in case used by the author.
+%
+% \cs{@tempa} is built to be
+% \begin{Verbatim}[gobble=2,obeytabs,tabsize=4,frame=lines]
+% \LWR@replacestrings{\#}{#}
+% \end{Verbatim}
+% and similar for |%| and |&|.
+% \changes{v0.913}{2023/11/25}{Neutralize \cs{\%}, \cs{\#}, \cs{\&} in \URL.}
+% \begin{macrocode}
+ \ifbool{LWR@HTMLsanitize@tmpb@removebackslash}%
+ {%
+ \def\@tempa{\LWR@replacestrings}%
+ \expandafter\appto\expandafter\@tempa\expandafter{\expandafter{\detokenize{\#}}}%
+ \expandafter\appto\expandafter\@tempa\expandafter{\expandafter{\LWRhash}}%
+ \@tempa%
+ \def\@tempa{\LWR@replacestrings}%
+ \expandafter\appto\expandafter\@tempa\expandafter{\expandafter{\detokenize{\%}}}%
+ \expandafter\appto\expandafter\@tempa\expandafter{\expandafter{\LWRpercent}}%
+ \@tempa%
+ \def\@tempa{\LWR@replacestrings}%
+ \expandafter\appto\expandafter\@tempa\expandafter{\expandafter{\detokenize{\&}}}%
+ \expandafter\appto\expandafter\@tempa\expandafter{\expandafter{\LWRamp}}%
+ \@tempa%
+ }%
+ {}%
+% \end{macrocode}
+%
+% The quotes occasionally causes problems.
+% For \pkg{MathJax}, also allow neutralization of \cs{"} and the |"| character.
+% \changes{v0.891}{2020/09/09}{Neutralized quotes.}
+% \changes{v0.893}{2020/11/22}{Optionally neutralized quotes.}
+% \begin{macrocode}
+ \ifbool{LWR@MathJax@silentquotes}
+ {%
+ \expandafter\LWR@replacestrings\expandafter{\LWRbackslash"}{}%
+ \LWR@replacestrings{"}{}%
+ }%
+ {\LWR@replacestrings{"}{&quot;}}%
+ }% enabled
+ {}% not enabled
+}
+\catcode`\&=4
+% \end{macrocode}
+% \end{macro}
+
+
+% \begin{macro}{\LWR@HTMLsanitize@use@tmpb} \marg{text}
+%
+% Sanitizes via \cs{LWR@HTMLsanitize@tmpb} and then immediately uses the result.
+% \begin{macrocode}
+\newcommand{\LWR@HTMLsanitize@use@tmpb}[1]{%
+ \ifbool{LWR@HTMLsanitize@tmpb@enable}%
+ {%
+ \def\tmpb{#1}%
+ \LWR@HTMLsanitize@tmpb%
+ \tmpb%
+ }%
+ {#1}%
+}
+% \end{macrocode}
+% \end{macro}
+
% \begin{macro}{\LWR@subHTMLsanitize}
%
-% \cs{LWR@strresult} must first be set by \cs{LWR@HTMLsanitize},
-% \cs{LWR@HTMLsanitizeexpand}, or \cs{CustomizeMathJax}.
+% \cs{LWR@strresult} must first be set by \cs{LWR@HTMLsanitizedetokenized},
+% \cs{LWR@HTMLsanitizeexpanded}, or \cs{CustomizeMathJax}.
%
% \changes{v0.36}{2017/08/16}{Fix for \pkg{babel-french}.}
% \changes{v0.51}{2018/03/07}{Fix: Escapes double quotes.}
@@ -26021,30 +26222,9 @@ end -- not --version
% \changes{v0.81}{2020/02/24}{Faster.}
% \begin{macrocode}
\catcode`\#=12
-\catcode`\&=12
\newcommand{\LWR@subHTMLsanitize}{%
-% \end{macrocode}
-% The |&|, |<|, and |>| may be interpreted by the browser:
-%
-% \begin{macrocode}
\edef\tmpb{\detokenize\expandafter{\LWR@strresult}}%
- \LWR@replacestrings{&}{&amp;}%
- \LWR@replacestrings{<}{&lt;}%
- \LWR@replacestrings{>}{&gt;}%
-% \end{macrocode}
-% The quotes occasionally causes problems.
-% For \pkg{mathspec}, also allow neutralization of \cs{"} and the |"| character.
-% \changes{v0.891}{2020/09/09}{Neutralized single quotes.}
-% \changes{v0.893}{2020/11/22}{Optionally neutralized single quotes.}
-% \begin{macrocode}
- \ifbool{LWR@MathJax@silentquotes}
- {%
- \expandafter\LWR@replacestrings\expandafter{\LWRbackslash"}{}%
- \LWR@replacestrings{"}{}%
- }%
- {\LWR@replacestrings{"}{&quot;}}%
- \LWR@replacestrings{'}{&apos;}%
- \LWR@replacestrings{`}{&grave;}%
+ \LWR@HTMLsanitize@tmpb%
% \end{macrocode}
% \MathJax\ allows expressions to be defined with \cs{newcommand}.
% These expressions would appear with |##| for each argument,
@@ -26056,7 +26236,6 @@ end -- not --version
\edef\LWR@strresult{\detokenize\expandafter{\tmpb}}%
}
\catcode`\#=6
-\catcode`\&=4
% \end{macrocode}
% \end{macro}
@@ -26163,6 +26342,7 @@ end -- not --version
\newcommand*{\LWR@subcustomizedmathjax}[1]{%
\begingroup%
\LWR@hook@processingtags%
+ \boolfalse{LWR@HTMLsanitize@tmpb@removebackslash}%
\edef\LWR@strresult{\detokenize{#1}}%
\LWR@subHTMLsanitize%
\xdef\LWR@customizedMathJax{%
@@ -27892,6 +28072,7 @@ end -- not --version
\begingroup%
\LWR@restoreoriglists%
\boolfalse{LWR@verbtags}%
+ \boolfalse{LWR@HTMLsanitize@tmpb@removebackslash}%
% \end{macrocode}
% ^^A \ifbool{mathKaTeX}{%
% ^^A \verbatiminput{lwarp_KaTeX.txt}%
@@ -27912,7 +28093,6 @@ end -- not --version
% \end{macrocode}
% ^^A }%
% \begin{macrocode}
- \booltrue{LWR@verbtags}%
\endgroup%
\LWR@stoppars%
}% end of mathjax
@@ -28234,11 +28414,11 @@ end -- not --version
% \changes{v0.65}{2018/12/18}{Improved \CSS\ for page layout.}
% \changes{v0.84}{2020/04/24}{Added prev/next links.}
%
-% (The \cs{LWR@origtilde} is in case no autopage is required for the label,
+% (The \cs{LWR@orignobreakspace} is in case no autopage is required for the label,
% which would not print anything, and something must be printed before the newline.)
%
% \begin{macrocode}
-\label{\BaseJobname-autofile-last}\LWR@origtilde\LWR@orignewline
+\label{\BaseJobname-autofile-last}\LWR@orignobreakspace\LWR@orignewline
% \end{macrocode}
%
% \changes{v0.896}{2021/03/04}{Added \element{main}.}
@@ -29321,8 +29501,26 @@ end -- not --version
\begin{warpHTML}
% \end{macrocode}
+
+% \begin{macro}{\@setupverbvisiblespace}
+% For \XeTeX\ or \LuaTeX, the default visible space was drawn in \PDF,
+% but not a text character which could be copied to \HTML.
+% \changes{v0.913}{2023/11/27}{Fixed \XeTeX, \LuaTeX\ visible space.}
+% \begin{macrocode}
+\ifxetexorluatex
+
+\newcommand*{\LWR@HTML@@setupverbvisiblespace}{\let\@xobeysp\textvisiblespace}
+
+\LWR@formatted{@setupverbvisiblespace}
+
+\fi
+% \end{macrocode}
+% \end{macro}
+
+
% \DescribeBoolean{LWR@verbtags} Used to temporarily turn off verbatim tags
-% while doing \cs{verbatiminput} in the \HTML\ head.
+% while doing \cs{verbatiminput} in the \HTML\ head, or during \MathJax.
+% Verbatim tags are also disabled separately inside an \HTML\ span.
% \begin{macrocode}
\newbool{LWR@verbtags}
\booltrue{LWR@verbtags}
@@ -29332,25 +29530,31 @@ end -- not --version
% \begin{macro}{\verb}
%
% Patched to encapsulate the verbatim text inside span
-% with a class of \attribute{texttt}.
+% with a class of \attribute{verb}.
%
-% \changes{v0.891}{2020/09/12}{\cs{verb} as \cs{texttt}.}
% \begin{macrocode}
\LetLtxMacro\LWR@orig@verb@egroup\verb@egroup
\def\LWR@verb@egroup@endspan{%
\LWR@orig@verb@egroup%
- \LWR@htmltag{/span}%
+ \ifbool{LWR@verbtags}%
+ {\LWR@htmltag{/span}}%
+ {}%
\endgroup%
}
% \end{macrocode}
%
+% \changes{v0.891}{2020/09/12}{\cs{verb} as class \attribute{texttt}.}
% \changes{v0.895}{2021/01/14}{Improved \HTML\ quotes.}
+% \changes{v0.913}{2023/12/07}{\cs{verb} as class \attribute{verb}.}
+% \changes{v0.913}{2023/12/09}{\cs{verb} in a \env{lateximage}.}
% \begin{macrocode}
\xpretocmd{\verb}
{%
\begingroup%
- \LWR@htmltag{span class=\textquotedbl{}texttt\textquotedbl}%
+ \ifbool{LWR@verbtags}%
+ {\LWR@htmltag{span class=\textquotedbl{}verb\textquotedbl}}%
+ {}%
\let\verb@egroup\LWR@verb@egroup@endspan%
}
{}
@@ -29393,13 +29597,20 @@ end -- not --version
%
% Create a new |pre| of the given class.
% The tags may temporarily be turned off for internal use, such
-% as loading the \MathJax\ script.
+% as loading the \MathJax\ script, or inside a \element{span}.
+% \changes{v0.913}{2023/11/07}{Fix: No \element{pre} tags if inside a \element{span}.}
% \begin{macrocode}
-\ifbool{LWR@verbtags}{%
- \LWR@htmltag{pre class=\textquotedbl#2\textquotedbl%
- \ifthenelse{\equal{#1}{}}{}{ style=\textquotedbl#1\textquotedbl}%
+\ifbool{LWR@verbtags}%
+{%
+ \ifnumcomp{\value{LWR@spandepth}}{=}{0}{%
+ \LWR@htmltag{pre class=\textquotedbl#2\textquotedbl%
+ \ifthenelse{\equal{#1}{}}{}{ style=\textquotedbl#1\textquotedbl}%
+ }%
+ \par%
+ }%
+ {% in a span
+ \LWR@spanwarnformat{verbatim}%
}%
- \par%
}{}%
% \end{macrocode}
%
@@ -29416,20 +29627,36 @@ end -- not --version
% \begin{macrocode}
\LWR@print@normalfont%
\LWR@origttfamily%
-\LWR@print@scriptsize%
% \end{macrocode}
+%
+% If not inside a \env{lateximage},
+% use a small font to avoid line overflow.
+% \changes{v0.913}{2023/12/11}{Fix: Verbatim font size in a \env{lateximage}.}
+% \begin{macrocode}
+\ifnumcomp{\value{LWR@lateximagedepth}}{=}{0}%
+ {\LWR@print@scriptsize}%
+ {}%
+% \end{macrocode}
+%
% Since inside a \element{pre}, restore the original list processing:
% \begin{macrocode}
\LWR@restoreoriglists%
% \end{macrocode}
+%
% Turn off \pkg{babel-french} extra space before punctuation:
% \begin{macrocode}
\LWR@hook@processingtags%
% \end{macrocode}
+%
% Do not produce \HTML\ tags for \cs{hspace} inside a verse |par|.
% Restore plain \LaTeX{} \cs{hspace} functionality:
% \begin{macrocode}
\let\hspace\LWR@print@hspace%
+% \end{macrocode}
+%
+% Do not produce \HTML\ tags for \cs{nbsp}.
+% \begin{macrocode}
+\boolfalse{LWR@HTMLsanitize@nobreakspace}%
}
% \end{macrocode}
% \end{macro}
@@ -29446,7 +29673,11 @@ end -- not --version
% \end{macrocode}
% At the end of the environment, close the |pre|:
% \begin{macrocode}
-\ifbool{LWR@verbtags}{%
+\ifboolexpr{
+ bool{LWR@verbtags} and
+ test {\ifnumcomp{\value{LWR@spandepth}}{=}{0}}
+}%
+{%
\noindent\LWR@htmltag{/pre}\par% pre
}{}%
% \end{macrocode}
@@ -29533,6 +29764,7 @@ end -- not --version
% \changes{v0.84}{2020/04/17}{Restore spacing.}
% \changes{v0.903}{2021/12/20}{Converted to env.}
% \changes{v0.906}{2022/06/10}{Used \cs{LWR@formatted} for more items.}
+% \changes{v0.913}{2023/12/09}{Added \cs{nobreakspace}.}
% \begin{macrocode}
\newenvironment*{LWR@HTML@tabbing}
{%
@@ -29541,7 +29773,8 @@ end -- not --version
\let\enskip\LWR@print@enskip%
\let\quad\LWR@print@quad%
\let\qquad\LWR@print@qquad%
- \let~\LWR@origtilde%
+ \LetLtxMacro~\LWR@origtilde%
+ \LetLtxMacro\nobreakspace\LWR@orignobreakspace%
\let\,\LWR@origcomma%
\let\thinspace\LWR@print@thinspace%
\let\negthinspace\LWR@print@negthinspace%
@@ -32444,7 +32677,7 @@ end -- not --version
% \end{macrocode}
% Print the class with left and right trim letters appended:
% \begin{macrocode}
- \LWR@origtilde tdrule#1#2%
+ \space tdrule#1#2%
% \end{macrocode}
% Remember the width of the rule:
% \begin{macrocode}
@@ -35241,6 +35474,17 @@ end -- not --version
% \end{macro}
+% \begin{macro}{\NR@gettitle} \marg{text}
+% From \pkg{nameref}, used by \pkg{caption}.
+% \changes{v0.913}{2023/11/22}{Fix for recent changes in \pkg{caption} with \cs{nameref}.}
+% \begin{macrocode}
+\def\NR@gettitle#1{%
+ \GetTitleString{#1}%
+ \let\@currentlabelname\GetTitleStringResult
+}
+% \end{macrocode}
+% \end{macro}
+
% \subsection{Hyper-references}
%
@@ -35329,12 +35573,14 @@ end -- not --version
% \changes{v0.45}{2017/12/29}{Improved URLs with underscores.}
% \changes{v0.57}{2018/06/05}{Fix: Text catcodes.}
% \changes{v0.895}{2021/01/14}{Improved \HTML\ quotes.}
+% \changes{v0.913}{2023/10/01}{Improved \HTML\ sanitization.}
% \begin{macrocode}
\NewDocumentCommand{\LWR@subhyperref}{m}{%
\LWR@traceinfo{LWR@subhyperref !#1!}%
- \LWR@sanitize{#1}%
+ \edef\tmpb{\detokenize\expandafter{#1}}%
+ \LWR@HTMLsanitize@tmpb%
\LWR@htmltag{%
- a href=\textquotedbl\LWR@sanitized\textquotedbl\ % space
+ a href=\textquotedbl\tmpb\textquotedbl\ % space
\LWR@addlinktitle % space
target=\textquotedbl\_{}blank\textquotedbl\ % space
}%
@@ -35342,14 +35588,33 @@ end -- not --version
% \end{macrocode}
% \end{macro}
-% \begin{macro}{\LWR@subhyperreftext} \marg{text}
+% \begin{macro}{\LWR@subhyperreftext@sanizited} \marg{text}
%
% Finishes the hyperref for \cs{LWR@hrefb}. Catcodes must have been restored already.
% To be used after \cs{LWR@subhyperref}, and after its group has been closed.
%
% \changes{v0.57}{2018/06/05}{Fix: Text catcodes.}
+% \changes{v0.913}{2023/10/01}{Improved \HTML\ sanitization.}
% \begin{macrocode}
-\newcommand{\LWR@subhyperreftext}[1]{%
+\newcommand{\LWR@subhyperreftext@sanitized}[1]{%
+ \edef\tmpb{#1}%
+ \LWR@HTMLsanitize@tmpb%
+ \tmpb%
+ \LWR@htmltag{/a}%
+ \LWR@ensuredoingapar%
+}
+% \end{macrocode}
+% \end{macro}
+
+
+% \begin{macro}{\LWR@subhyperreftext@unsanitized} \marg{text}
+%
+% Finishes the hyperref for \cs{LWR@hrefb}. Catcodes must have been restored already.
+% To be used after \cs{LWR@subhyperref}, and after its group has been closed.
+%
+% \changes{v0.57}{2018/06/05}{Fix: Text catcodes.}
+% \begin{macrocode}
+\newcommand{\LWR@subhyperreftext@unsanitized}[1]{%
#1%
\LWR@htmltag{/a}%
\LWR@ensuredoingapar%
@@ -35358,6 +35623,8 @@ end -- not --version
% \end{macro}
+
+
% \begin{macro}{\LWR@subhyperrefclass} \marg{URL} \marg{text} \marg{htmlclass}
% \changes{v0.18}{2016/04/14}{Improved \HTML\ output linebreaks.}
% \changes{v0.45}{2017/12/29}{Improved URLs with underscores.}
@@ -35383,7 +35650,8 @@ end -- not --version
% \begin{macro}{\LWR@href} \oarg{options} \marg{URL} \marg{text}
%
-% Create a link with accompanying text:
+% Create a link with accompanying text.
+% The accompanyting text is sanitized for \HTML.
%
% \changes{v0.43}{2017/10/31}{Made robust.}
% \changes{v0.49}{2018/02/18}{Fix: Adapt to classes.}
@@ -35395,7 +35663,12 @@ end -- not --version
\LWR@ensuredoingapar%
\LWR@subhyperref{#2}%
\endgroup% restore catcodes
- \LWR@subhyperreftext%
+% \end{macrocode}
+% If use \cs{LWR@subhyperreftext@sanitized} here,
+% some forms of text may not expand correctly, and thus break.
+% ^^A \LWR@subhyperreftext@sanitized% takes the following text as an argument
+% \begin{macrocode}
+ \LWR@subhyperreftext@unsanitized% takes the following text as an argument
}
\newrobustcmd*{\LWR@href}{%
@@ -35404,6 +35677,54 @@ end -- not --version
\LWR@hrefb%
}
% \end{macrocode}
+
+% A version which sanitizes both the \acro{URL} and the text.
+% Used by \cs{LWR@url}.
+% \changes{v0.913}{2023/10/04}{Improved \HTML\ sanitization.}
+% \begin{macrocode}
+\DeclareDocumentCommand{\LWR@hrefb@sanitized}{O{} m}{%
+ \LWR@ensuredoingapar%
+ \LWR@subhyperref{#2}%
+ \endgroup% restore catcodes
+% \end{macrocode}
+% Used by \cs{LWR@url} to sanitize the text argument before printing.
+% \begin{macrocode}
+ \LWR@subhyperreftext@sanitized% takes the following text as an argument
+}
+
+\newrobustcmd*{\LWR@href@sanitized}{%
+ \begingroup%
+ \LWR@linkcatcodes%
+ \LWR@hrefb@sanitized%
+}
+% \end{macrocode}
+% \end{macro}
+
+% \begin{macro}{\LWR@href@partsanitized} \oarg{options} \marg{URL} \marg{text}
+%
+% Create a link with accompanying text.
+% The accompanyting text is not sanitized,
+% for use internally with algorithmically derived tags.
+%
+% \changes{v0.43}{2017/10/31}{Made robust.}
+% \changes{v0.49}{2018/02/18}{Fix: Adapt to classes.}
+% \changes{v0.52}{2018/03/26}{Fix: \progcode{\#}, \progcode{\%}, \progcode{\&}, \progcode{\~}, \progcode{\_} in \URL.}
+% \changes{v0.57}{2018/06/05}{Fix: Text catcodes.}
+% \changes{v0.86}{2020/05/07}{\pkg{hyperref}: Adjusted emulation.}
+% \begin{macrocode}
+\DeclareDocumentCommand{\LWR@hrefb@partsanitized}{O{} m}{%
+ \LWR@ensuredoingapar%
+ \LWR@subhyperref{#2}%
+ \endgroup% restore catcodes
+ \LWR@subhyperreftext@unsanitized% takes the following text as an argument
+}
+
+\newrobustcmd*{\LWR@href@partsanitized}{%
+ \begingroup%
+ \LWR@linkcatcodes%
+ \LWR@hrefb@partsanitized%
+}
+% \end{macrocode}
% \end{macro}
% \begin{macro}{\LWR@nolinkurl} \marg{URL}
@@ -35413,12 +35734,13 @@ end -- not --version
% \changes{v0.45}{2017/12/29}{Fix: Underscore in \URL.}
% \changes{v0.52}{2018/03/26}{Fix: \progcode{\#}, \progcode{\%}, \progcode{\&}, \progcode{\~}, \progcode{\_} in \URL.}
% \changes{v0.86}{2020/05/07}{\pkg{hyperref}: Adjusted emulation.}
+% \changes{v0.913}{2023/10/01}{Improved \HTML\ sanitization.}
% \begin{macrocode}
\newcommand*{\LWR@nolinkurlb}[1]{%
\LWR@ensuredoingapar%
- \def\LWR@templink{#1}%
- \@onelevel@sanitize\LWR@templink%
- \LWR@templink%
+ \edef\tmpb{#1}%
+ \LWR@HTMLsanitize@tmpb%
+ \tmpb%
\endgroup%
}
@@ -35446,9 +35768,7 @@ end -- not --version
% \begin{macrocode}
\DeclareDocumentCommand{\LWR@urlb}{m}{%
\LWR@ensuredoingapar%
- \def\LWR@templink{#1}%
- \@onelevel@sanitize\LWR@templink%
- \LWR@href{\LWR@templink}{\LWR@templink}%
+ \LWR@href@sanitized{#1}{#1}%
\endgroup%
}
@@ -35471,8 +35791,11 @@ end -- not --version
% \changes{v0.74}{2019/08/20}{Add \cs{ThisAltText}.}
% \changes{v0.895}{2021/01/14}{Improved \HTML\ quotes.}
% \changes{v0.896}{2021/03/05}{Added \ARIA\ role.}
+% \changes{v0.913}{2023/11/25}{\bool{LWR@HTMLsanitize@tmpb@removebackslash} added.}
% \begin{macrocode}
\newcommand*{\LWR@subinlineimage}[6]{%
+ \begingroup%
+ \boolfalse{LWR@HTMLsanitize@tmpb@removebackslash}%
\ifblank{#6}%
{\renewcommand*{\LWR@tempone}{}}%
{\renewcommand*{\LWR@tempone}{role="#6"\LWR@indentHTML}}%
@@ -35495,6 +35818,7 @@ end -- not --version
class=\textquotedbl#2\textquotedbl \LWR@orignewline
}%
}%
+ \endgroup%
}
% \end{macrocode}
% \end{macro}
@@ -37511,13 +37835,15 @@ end -- not --version
\let\&\LWR@origampersand%
% \end{macrocode}
% \changes{v0.72}{2019/05/24}{Use \cs{LWR@formatted} for \cs{bfseries}, etc.}
+% \changes{v0.013}{2023/12/09}{Added \cs{nobreakspace}.}
% \begin{macrocode}
\LetLtxMacro\em\LWR@origem%
\LetLtxMacro\normalfont\LWR@orignormalfont%
\let\sp\LWR@origsp%
\let\sb\LWR@origsb%
\LetLtxMacro\underline\LWR@origunderline%
- \let~\LWR@origtilde%
+ \LetLtxMacro~\LWR@origtilde%
+ \LetLtxMacro\nobreakspace\LWR@orignobreakspace%
% \end{macrocode}
%
% \cs{endtabular} must be restored to its original,
@@ -38491,6 +38817,7 @@ end -- not --version
{%
\LWR@traceinfo{LWR@subsingledollar: Mathjax}%
{%
+ \boolfalse{LWR@HTMLsanitize@tmpb@removebackslash}%
\textbackslash(%
{%
% \end{macrocode}
@@ -38583,6 +38910,7 @@ end -- not --version
% \begin{macrocode}
{% intentional blank line:
+ \begingroup%
\IfSubStr{\detokenize\expandafter{#1}}{\detokenize{note}}{%
% \end{macrocode}
%
@@ -38597,6 +38925,7 @@ end -- not --version
% \changes{v0.903}{2021/12/18}{Improved math sanitization.}
% \begin{macrocode}
\InlineClass{hidden}{\LWR@syncnotenumbers}%
+ \boolfalse{LWR@HTMLsanitize@tmpb@removebackslash}%
\textbackslash[%
{%
\LWR@print@ttfamily%
@@ -38604,14 +38933,17 @@ end -- not --version
}%
\textbackslash]
\InlineClass{hidden}{\LWR@syncnotenames}%
- }{%
+ }% yes note
+ {% no note
+ \boolfalse{LWR@HTMLsanitize@tmpb@removebackslash}%
\textbackslash[%
{%
\LWR@print@ttfamily%
\LWR@HTMLsanitizedetokenized{\detokenize{#1}}%
}%
\textbackslash]
- }%
+ }% no note
+ \endgroup%
}% mathjax
% \end{macrocode}
@@ -38666,6 +38998,8 @@ end -- not --version
\protected\gdef\LWR@singledollar#1${%
\LWR@traceinfo{LWR@singledollar}%
\ifbool{mathjax}{%
+ \begingroup%
+ \boolfalse{LWR@HTMLsanitize@tmpb@removebackslash}%
\LWR@subsingledollar*%
{% alt tag
\textbackslash( %
@@ -38674,6 +39008,7 @@ end -- not --version
}%
{singledollar}% add'l hashing
{#1}% contents
+ \endgroup%
}{% not mathjax
\LWR@subsingledollar*%
{% alt tag
@@ -38735,6 +39070,8 @@ end -- not --version
\renewcommand{\@ensuredmath}[1]{%
\ifbool{mathjax}{%
+ \begingroup%
+ \boolfalse{LWR@HTMLsanitize@tmpb@removebackslash}%
\LWR@subsingledollar*{\AltTextOpen\MathImageAltText\AltTextClose}%
{%
\protect\LWR@HTMLsanitizedetokenized{\detokenize\expandafter{#1}}%
@@ -38743,6 +39080,7 @@ end -- not --version
\relax%
\LWR@origensuredmath{#1}%
}%
+ \endgroup%
}{% SVG math
% \end{macrocode}
% If already inside a \env{lateximage} in math mode, continue as-is.
@@ -39034,7 +39372,7 @@ end -- not --version
\NewDocumentCommand{\LWR@addmathjax}{m +m}{%
% \end{macrocode}
% \begin{macrocode}
- \LWR@origtilde\LWR@orignewline
+ \LWR@orignobreakspace\LWR@orignewline
% \end{macrocode}
% Enclose the \MathJax\ environment inside printed ``\cs{(}'' and ``\cs{)}'' characters.
% Print the environment name and contents, sanitizing for \HTML\ special characters.
@@ -39060,6 +39398,7 @@ end -- not --version
% The environment contents and \cs{end}:
% \begin{macrocode}
\LWR@orignewline%
+ \boolfalse{LWR@HTMLsanitize@tmpb@removebackslash}%
\LWR@HTMLsanitizeexpanded{\detokenize\expandafter{#2}}%
\LWR@orignewline%
\textbackslash{}end\{#1\}
@@ -39299,8 +39638,8 @@ end -- not --version
% \end{environment}
-% Remember the ``less'' version of \env{equation}, which uses \MathJax
-% and \attribute{alt} tags, but does not support complicated contents such as
+% Remember the ``less'' version of \env{equation}, which uses \MathJax\ and
+% \attribute{alt} tags, but does not support complicated contents such as
% some \TikZ\ expressions.
% \begin{macrocode}
\AtBeginDocument{
@@ -39410,7 +39749,7 @@ end -- not --version
% \begin{macrocode}
\newcommand*{\LWR@beginhideamsmath}{
\LWR@stoppars
- \LWR@origtilde\LWR@orignewline
+ \LWR@orignobreakspace\LWR@orignewline
\LWR@htmlopencomment
\begingroup
@@ -39503,6 +39842,7 @@ end -- not --version
% \begin{macrocode}
\LWR@syncmathjax%
\boolfalse{LWR@amsmultline}%
+ \boolfalse{LWR@HTMLsanitize@tmpb@removebackslash}%
\ifbool{LWR@numbereqnarray}%
{%
% \end{macrocode}
@@ -40028,6 +40368,14 @@ end -- not --version
% \begin{macrocode}
\boolfalse{mathjax}%
% \end{macrocode}
+%
+% While inside a lateximage, do not use \HTML\ tags for verbatim content,
+% and do not sanitize \HTML\ tags for |<|, |>|, |&|, etc.
+% \begin{macrocode}
+ \boolfalse{LWR@verbtags}%
+ \boolfalse{LWR@HTMLsanitize@tmpb@enable}%
+% \end{macrocode}
+%
% Be sure that are doing a paragraph:
% \begin{macrocode}
\LWR@ensuredoingapar%
@@ -42233,9 +42581,9 @@ color:\LWR@origpound\LWR@tempcolor%
{\InlineClass{textnormal}{#1}}%
{%
\InlineClass{%
- text\LWR@f@family\LWR@origtilde{}%
- text\LWR@f@series\LWR@origtilde{}%
- text\LWR@f@shape\LWR@origtilde{}%
+ text\LWR@f@family\LWR@orignobreakspace{}%
+ text\LWR@f@series\LWR@orignobreakspace{}%
+ text\LWR@f@shape\LWR@orignobreakspace{}%
text\LWR@f@shapecaps%
}%
{#1}%
@@ -42256,9 +42604,9 @@ color:\LWR@origpound\LWR@tempcolor%
\newenvironment*{LWR@blocktextcurrentfont}{%
\LWR@stoppars%
\BlockClass{%
- text\LWR@f@family\LWR@origtilde{}%
- text\LWR@f@series\LWR@origtilde{}%
- text\LWR@f@shape\LWR@origtilde{}%
+ text\LWR@f@family\LWR@orignobreakspace{}%
+ text\LWR@f@series\LWR@orignobreakspace{}%
+ text\LWR@f@shape\LWR@orignobreakspace{}%
text\LWR@f@shapecaps%
}%
}{\endBlockClass\LWR@startpars}
@@ -42675,6 +43023,19 @@ color:\LWR@origpound\LWR@tempcolor%
\begin{warpHTML}
% \end{macrocode}
%
+%
+% \DescribeBoolean{LWR@HTMLsanitize@nobreakspace}
+% Used to disable the |nbsp| entity inside verbatims \element{pre} sections,
+% but not inside inline verbatims where spacing must be preserved by \element{nbsp}.
+%
+% (\pkg{fvextra} used |~| which showed as \element{nbsp}.)
+% \changes{v0.913}{2023/12/16}{Disable \element{nbsp} inside verbatims.}
+% \begin{macrocode}
+\newbool{LWR@HTMLsanitize@nobreakspace}
+\booltrue{LWR@HTMLsanitize@nobreakspace}
+% \end{macrocode}
+%
+%
% \cs{,} and \cs{thinspace} may be redefined by other packages, so
% are redefined \cs{AtBeginDocument} here.
%
@@ -42685,19 +43046,44 @@ color:\LWR@origpound\LWR@tempcolor%
% \changes{v0.61}{2018/09/23}{Spaces redefined \cs{AtBeginDocument}.}
% \changes{v0.88}{2020/07/03}{Added \cs{vdots}.}
% \changes{v0.906}{2022/06/10}{Used \cs{LWR@formatted} for more items.}
+% \changes{v0.913}{2023/12/09}{Added \cs{nobreakspace}.}
% \begin{macrocode}
\AtBeginDocument{%
+%
\renewrobustcmd*{\,}{\HTMLunicode{202f}}% HTML thin non-breakable space, not using LWR@formatted
+%
\newrobustcmd*{\LWR@HTML@thinspace}{\HTMLunicode{202f}}% HTML thin non-breakable space
\LWR@formatted{thinspace}
+%
\newrobustcmd*{\LWR@HTML@negthinspace}{\HTMLunicode{202f}} % HTML thin non-breakable space
\LWR@formatted{negthinspace}
-\renewrobustcmd*{~}{\HTMLentity{nbsp}}% cannot use \LWR@formatted
+% \end{macrocode}
+%
+% Cannot use \cs{LWR@formatted} for |~| or \cs{nobreakspace}.
+% \begin{macrocode}
+\renewrobustcmd*{~}{%
+ \ifbool{LWR@HTMLsanitize@nobreakspace}%
+ {\leavevmode\nobreak\HTMLentity{nbsp}}%
+ {\LWR@orignobreakspace}%
+}
+
+\LetLtxMacro\nobreakspace~
+% \end{macrocode}
+%
+% \cs{?-\string\nobreakspace} seems to be necessary for packages such as \pkg{ctexbook},
+% where this is used at the end of the document.
+% \begin{macrocode}
+\expandafter\LetLtxMacro\csname ?-\string\nobreakspace\endcsname~
+% \end{macrocode}
+%
+% \begin{macrocode}
\newrobustcmd*{\LWR@HTML@textellipsis}{\HTMLunicode{2026}}
\LWR@formatted{textellipsis}
+%
\newrobustcmd*{\LWR@HTML@vdots}{\HTMLunicode{22EE}}
\LWR@formatted{vdots}
-}
+%
+}% AtBeginDocument
% \end{macrocode}
%
% Direct-formatting font sizes are remembered for future use:
@@ -45787,7 +46173,7 @@ color:\LWR@origpound\LWR@tempcolor%
{
\LWR@endhideamsmath
\boolfalse{LWR@amsmultline}
- \LWR@addmathjax{#2}{\the\@envbody}
+ \LWR@addmathjax{#2}{\the\@envbody}%
}
{\LWR@amsmathenv@@after}
% \end{macrocode}
@@ -46384,6 +46770,42 @@ color:\LWR@origpound\LWR@tempcolor%
%
%
%
+% \iffalse
+%<*apxproof>
+% \fi
+%
+% \part{lwarp-apxproof.sty}
+%
+% \section{apxproof}
+%
+% \credits{Pierre Senellart}
+%
+% \DescribePackage{apxproof}
+% \pkg{apxproof} is patched for use by \pkg{lwarp}.
+%
+% \changes{v0.913}{2024/01/02}{\pkg{apxproof}: Added for \pkg{fancyvrb} changes.}
+%
+% \codehtml
+%
+% \begin{macrocode}
+\LWR@ProvidesPackagePass{apxproof}[2022/10/14]
+% \end{macrocode}
+%
+% \begin{macrocode}
+\xpatchcmd{\FVB@axp@VerbatimOut}
+ {\FV@Scan}
+ {\boolfalse{LWR@HTMLsanitize@tmpb@enable}\FV@Scan}
+ {}
+ {\LWR@patcherror{apxproof}{FVB@axp@VerbatimOut}}
+% \end{macrocode}
+%
+% \iffalse
+%</apxproof>
+% \fi
+%
+%
+%
+%
%
% \iffalse
%<*ar>
@@ -46917,7 +47339,7 @@ color:\LWR@origpound\LWR@tempcolor%
% A file annotation becomes a reference:
% \begin{macrocode}
\DeclareRobustCommand{\atfi@insert@file@annot}[1]{%
- \LWR@href{#1}{\LWR@attachfile@appearance}%
+ \LWR@href@partsanitized{#1}{\LWR@attachfile@appearance}%
}
% \end{macrocode}
@@ -47015,7 +47437,7 @@ color:\LWR@origpound\LWR@tempcolor%
% A file annotation becomes a reference:
% \begin{macrocode}
\DeclareRobustCommand{\atfi@insert@file@annot}[1]{%
- \LWR@href{#1}{\LWR@attachfile@appearance}%
+ \LWR@href@partsanitized{#1}{\LWR@attachfile@appearance}%
}
% \end{macrocode}
%
@@ -49082,7 +49504,12 @@ color:\LWR@origpound\LWR@tempcolor%
\NewDocumentCommand{\LWR@burlaltb}{O{} +m m}{%
\LWR@ensuredoingapar%
\LWR@subhyperref{#2}%
- \LWR@subhyperreftext{#3}%
+% \end{macrocode}
+% If use \cs{LWR@subhyperreftext@sanitized} here,
+% some forms of text may not expand correctly, and thus break.
+% ^^A \LWR@subhyperreftext@sanitized% takes the following text as an argument
+% \begin{macrocode}
+ \LWR@subhyperreftext@unsanitized{#3}%
\endgroup% restore catcodes
}
@@ -49268,7 +49695,10 @@ color:\LWR@origpound\LWR@tempcolor%
\CustomizeMathJax{\require{bussproofs}}
\NewEnviron{LWR@HTML@prooftree}%
- {\LWR@doequation{\BODY}{prooftree}}%
+ {%
+ \boolfalse{LWR@HTMLsanitize@tmpb@removebackslash}%
+ \LWR@doequation{\BODY}{prooftree}%
+ }%
[\LWR@doendequation{prooftree}]
\LWR@formattedenv{prooftree}
}{% SVG HTML
@@ -49478,6 +49908,7 @@ s%
% \changes{v0.84}{2020/04/20}{\pkg{caption}: Non-width \cs{parbox}es.}
% \changes{v0.89}{2020/08/25}{\pkg{caption}: Adapt to v3.5.}
% \changes{v0.893}{2020/11/26}{\pkg{caption}: Updated date to v3.5g.}
+% \changes{v0.913}{2023/11/24}{\pkg{caption}: Updated to v3.6o.}
%
% \codehtml
%
@@ -49490,7 +49921,7 @@ s%
\typeout{instead of: \protect\usepackage[options]\protect{caption\protect}.}
\typeout{---}
-\LWR@ProvidesPackagePass{caption}[2020/10/26]
+\LWR@ProvidesPackagePass{caption}[2023/08/05]
% \end{macrocode}
%
% ^^A This could be given a permanent standardized name, then redefined by lwarp.
@@ -49500,7 +49931,7 @@ s%
\caption@iiibox{#1}{#2}{#3}%
% [\wd\@tempboxa]%
[]% lwarp
- [\captionbox@hj@default]%
+ [\captionbox@innerpos@default]%
% {\unhbox\@tempboxa}%
{{#4}}% lwarp
}
@@ -49524,7 +49955,7 @@ s%
% #2%
{\caption#4{#5}}%
% \captionbox@hrule
-% \csname caption@hj@#7\endcsname
+% \csname caption@justification@#7\endcsname
#8%
}%
}{%
@@ -49539,7 +49970,7 @@ s%
\parbox[b]{\linewidth}{% lwarp
#1\relax
\caption@setposition b%
-% \csname caption@hj@#7\endcsname
+% \csname caption@justification@#7\endcsname
#8%
% \captionbox@hrule
% #3
@@ -49633,11 +50064,12 @@ s%
%
% \changes{v0.89}{2020/08/25}{\pkg{caption3}: Split from \pkg{lwarp-caption}.}
% \changes{v0.893}{2020/11/26}{\pkg{caption3}: Updated date to v2.2e.}
+% \changes{v0.913}{2023/11/24}{\pkg{caption3}: Updated to v2.4d.}
%
% \codehtml
%
% \begin{macrocode}
-\LWR@ProvidesPackagePass{caption3}[2020/10/21]
+\LWR@ProvidesPackagePass{caption3}[2023/07/31]
% \end{macrocode}
%
%
@@ -49659,10 +50091,25 @@ s%
% ^^A This could be factored out into a macro with a standard name
% ^^A which lwarp could nullify:
% \begin{macrocode}
-% \sbox\@tempboxa{#1}%
-% \ifdim\wd\@tempboxa=\z@
-% \caption@set{labelseparator}{none}%
-% \fi
+% \ifx\caption@fmt\@undefined\caption@format\fi
+% \let\caption@lfmt\caption@labelformat
+% \global\def\caption@tempa{gobbletwo}%
+% \global\def\caption@tempb{}%
+% \sbox\@tempboxa{%
+% \let\caption@ignorespaces\ignorespaces
+% \def\ignorespaces{%
+% \global\def\caption@tempb{two}% "gobble" -> "gobbletwo"
+% % if \ignorespaces is used addtionally
+% \caption@ignorespaces}%
+% #1%
+% {\global\let\caption@tempa\@undefined\aftergroup\@gobble}%
+% {\global\def\caption@tempa{gobble\caption@tempb}}}%
+% \ifdim\wd\@tempboxa=\z@
+% \gdef\caption@tempa{none}%
+% \fi
+% \ifx\caption@tempa\@undefined \else
+% \@expandtwoargs\caption@set{labelseparator}{\caption@tempa}%
+% \fi
\caption@ifempty{#2}{%
\caption@set{labelseparator}{none}%
\caption@set{textformat}{simple}%
@@ -53286,6 +53733,89 @@ name = \chemmacros_translate:n {scheme-name}
% \end{macrocode}
% \end{noindmacro}
+
+
+% \begin{noindmacro}{\rowc@l@rs} \oarg{cmds} \marg{startrow} \marg{odd color} \marg{even color}
+% \changes{v0.913}{2024/01/03}{\pkg{colortbl}: Moved row colors code from \pkg{xcolor}.}
+% \begin{macrocode}
+\newcommand*{\LWR@xcolortempcolor}{}
+
+\def\rowc@l@rs[#1]#2#3#4%
+{%
+ \rownum=1%
+ \@rowcolorstrue%
+ \@ifxempty{#3}%
+ {\def\@oddrowcolor{\@norowcolor}}%
+ {%
+ \convertcolorspec{named}{#3}{HTML}\LWR@xcolortempcolor%
+ \edef\@oddrowcolor{%
+ \csdef{LWR@xcolorrowHTMLcolor}{\LWR@xcolortempcolor}%
+ }%
+ }%
+ \@ifxempty{#4}%
+ {\def\@evenrowcolor{\@norowcolor}}%
+ {%
+ \convertcolorspec{named}{#4}{HTML}\LWR@xcolortempcolor%
+ \edef\@evenrowcolor{%
+ \csdef{LWR@xcolorrowHTMLcolor}{\LWR@xcolortempcolor}%
+ }%
+ }%
+ \if@rowcmd
+ \def\@rowcolors
+ {%
+% #1%
+ \if@rowcolors
+% \noalign{%
+ \relax\ifnum\rownum<#2\@norowcolor\else
+ \ifodd\rownum\@oddrowcolor\else\@evenrowcolor\fi\fi%
+% }%
+ \fi%
+ }%
+ \else
+ \def\@rowcolors
+ {%
+ \if@rowcolors
+ \ifnum\rownum<#2%
+% \noalign{%
+ \@norowcolor
+% }
+ \else
+% #1%
+% \noalign{%
+ \ifodd\rownum\@oddrowcolor\else\@evenrowcolor\fi%
+% }%
+ \fi
+ \fi%
+ }%
+ \fi
+ \ignorespaces%
+}
+% \end{macrocode}
+% \end{noindmacro}
+%
+% \begin{noindmacro}{\@norowcolor} Turns off color for this row.
+% \begin{macrocode}
+\def\@norowcolor{%
+ \renewcommand{\LWR@xcolorrowHTMLcolor}{}%
+}
+% \end{macrocode}
+% \end{noindmacro}
+%
+
+% \begin{noindmacro}{\@rowc@lors} Executed at the end of each row.
+% \changes{v0.79}{2020/01/18}{\pkg{xcolor}: Fix: Nested \env{tabular}s.}
+% \begin{macrocode}
+\def\@rowc@lors{%
+% \noalign{%
+ \advance\rownum\@ne%
+% }%
+ \@rowcolors%
+}
+% \end{macrocode}
+% \end{noindmacro}
+
+
+
% For \MathJax, use the \MathJax\ package.
% The unused macro options are ignored.
% \changes{v0.894}{2020/12/22}{\pkg{colortbl}: Added \MathJax\ emulation.}
@@ -54082,6 +54612,62 @@ name = \chemmacros_translate:n {scheme-name}
%
%
%
+%
+% \iffalse
+%<*doipubmed>
+% \fi
+%
+% \part{lwarp-doipubmed.sty}
+%
+% \section{doipubmed}
+%
+% \credits{Nicola Talbot}
+%
+% \DescribePackage{doipubmed}
+% \pkg{doipubmed} is patched for use by \pkg{lwarp}.
+%
+% \changes{v0.913}{2023/11/23}{\pkg{doipubmed}: Added.}
+%
+% \codehtml
+%
+% \begin{macrocode}
+\LWR@ProvidesPackagePass{doipubmed}[2007/08/20]
+% \end{macrocode}
+%
+% \begin{macrocode}
+\renewcommand*{\doi}[1]{%
+\def\@doi@code{}%
+\@doi@linksubs#1\#\@@\@doi@code
+\@onelevel@sanitize{\@doi@code}%
+\def\@doi@text{}%
+\@doi@textsubs#1\@nil\@@\@doi@text
+\xpretocmd{\@doi@code}{http://dx.doi.org/}%
+\href\expandafter{\@doi@code}{\doitext{\@doi@text}}}
+% \end{macrocode}
+%
+% Must not modify catcodes before using \cs{url}:
+% \begin{macrocode}
+\DeclareDocumentCommand{\LWR@citeurlb}{m}{%
+ \LWR@ensuredoingapar%
+ \textless%
+ \LWR@href@sanitized{#1}{#1}%
+ \textgreater%
+ \endgroup%
+}
+
+\renewrobustcmd*{\citeurl}{%
+ \begingroup%
+ \LWR@linkcatcodes%
+ \LWR@citeurlb%
+}
+% \end{macrocode}
+%
+% \iffalse
+%</doipubmed>
+% \fi
+%
+%
+%
% \iffalse
%<*DotArrow>
% \fi
@@ -56525,7 +57111,7 @@ name = \chemmacros_translate:n {scheme-name}
% \changes{v0.902}{2021/09/29}{\pkg{fancybox}: Improved footnote par tags.}
% \begin{macrocode}
\def\V@@@footnotetext{%
- \LWR@origtilde\LWR@orignewline%
+ \LWR@orignobreakspace\LWR@orignewline%
\LWR@htmltagc{/\LWR@tagregularparagraph}\LWR@orignewline%
\strut\egroup%
}
@@ -56598,7 +57184,7 @@ name = \chemmacros_translate:n {scheme-name}
% This is a tabular, and does not use \cs{item}.
%
% \begin{noindmacro}{Btrivlist} \marg{l/c/r} \oarg{t/c/b}
-% \changes{v0.73}{2019/06/24}{\pkg{fancyvrb}: \env{Btrivlist}: Fixed paragraph tags.}
+% \changes{v0.73}{2019/06/24}{\pkg{fancybox}: \env{Btrivlist}: Fixed paragraph tags.}
% \begin{macrocode}
\RenewDocumentEnvironment{Btrivlist}{m o}
{%
@@ -56716,7 +57302,44 @@ name = \chemmacros_translate:n {scheme-name}
%
% Low-level patches for \env{UseVerbatim} and friends:
%
-% \begin{macrocode}
+% \changes{v0.903}{2024/01/03}{\pkg{fancybox}: Sanitize verbatim.}
+% \begin{macrocode}
+\def\Verbatim@List#1{%
+ \if@minipage\else\vskip\parskip\fi
+ \leftskip\@totalleftmargin
+ \@rightskip\@flushglue \rightskip\@rightskip
+ \parindent\z@
+ \parskip\z@
+ \parfillskip\@flushglue
+ \hfuzz\VerbatimFuzz\relax
+ \@@par
+ \global\@inlabelfalse %Prevents vspace from being inserted when
+ \Verbatim@Prep %first line exceeds \hsize.
+% #1%
+ \expandafter\def\expandafter\tmpb\expandafter{#1}% lwarp
+ \LWR@HTMLsanitize@tmpb% lwarp
+ \tmpb% lwarp
+ \Verbatim@Par}%
+
+\def\Verbatim@@Input{%
+ \let\protect\noexpand
+ \LetLtxMacro\tmpb\The@Verbatim% lwarp
+ \LWR@HTMLsanitize@tmpb% lwarp
+ \edef\The@Verbatim{%
+ \noexpand\Every@VerbatimLine
+% \The@Verbatim
+ \tmpb% lwarp
+ \ifeof\Verbatim@Infile\else\noexpand\Verbatim@Par\fi}%
+ \let\protect\relax
+ \The@Verbatim
+ \ifeof\Verbatim@Infile\else
+ \let\The@Verbatim\The@GVerbatim
+ \def\The@GVerbatim{}\Verbatim@NextLine
+ \expandafter\Verbatim@@Input
+ \fi}%
+
+
+
\let\LWRFB@UseVerbatim\UseVerbatim
\renewcommand*{\UseVerbatim}[1]{%
\LWR@atbeginverbatim{Verbatim}%
@@ -57020,17 +57643,21 @@ name = \chemmacros_translate:n {scheme-name}
% The label is placed inside a \element{div} of class \attribute{fancyvrblabel}.
% The verbatim text itself is placed inside a \element{div} of class \attribute{verbatim}.
%
+% For an inline \cs{Verb}, the verbatim is placee inside a \element{span}
+% of class \attribute{fancyvrb}.
+%
% \limitsverbatimfootnotes
%
% \changes{v0.34}{2017/07/27}{\pkg{fancyvrb}: Added, no longer required.}
% \changes{v0.45}{2018/01/07}{\pkg{fancyvrb}: Improvements.}
% \changes{v0.52}{2018/03/29}{\pkg{fancyvrb}: Initial support for \cs{VerbatimFootnotes}.}
+% \changes{v0.913}{2023/12/04}{\pkg{fancyvrb}: Updated to v4.5b.}
%
%
% \begin{macrocode}
\AtBeginDocument{\RequirePackage{xcolor}}% for \convertcolorspec
-\LWR@ProvidesPackagePass{fancyvrb}[2008/02/07]
+\LWR@ProvidesPackagePass{fancyvrb}[2023/11/06]
% \end{macrocode}
%
% Initial default patch for fancyvrb:
@@ -57038,13 +57665,303 @@ name = \chemmacros_translate:n {scheme-name}
\fvset{frame=none}%
% \end{macrocode}
%
-% After the preamble is loaded, after any patches to \env{Verbatim}:
+
+% Gobble does not work with \HTML\ sanitization,
+% so if gobbling is non-zero then turn off \HTML\ sanitization.
% \begin{macrocode}
-\AfterEndPreamble{
-\LWR@traceinfo{Patching fancyvrb.}
+\define@key{FV}{gobble}{%
+ \@tempcnta=#1\relax
+ \ifnum\@tempcnta<\@ne
+ \let\FV@Gobble\relax
+ \else
+ \ifnum\@tempcnta>9
+ \FV@Error{gobble parameter must be less than 10}\FV@eha
+ \else
+ \renewcommand{\FV@@@@Gobble}[\@tempcnta]{}%
+ \let\FV@Gobble\FV@@Gobble%
+ \boolfalse{LWR@HTMLsanitize@tmpb@enable}% lwarp
+ \fi
+ \fi}
+% \end{macrocode}
+
+
+
+% \begin{noindmacro}{\FancyVerbSpace}
+% Force the use of a vibible space instead of an empty box.
+% \changes{v0.913}{2023/12/04}{\pkg{fancyvrb}: Fixed visible space from kernel change.}
+% \begin{macrocode}
+\ifxetexorluatex
+\def\LWR@HTML@FancyVerbSpace{\textvisiblespace}
+\else
+\@ifundefined{verbvisiblespace}%
+ {%
+ \@ifundefined{textvisiblespace}%
+ {\begingroup\catcode`\ =12 \gdef\LWR@HTML@FancyVerbSpace{\tt }\endgroup}
+ {\def\LWR@HTML@FancyVerbSpace{\textvisiblespace}}
+ }%
+ {\def\LWR@HTML@FancyVerbSpace{\verbvisiblespace}}
+\fi
+\LWR@formatted{FancyVerbSpace}
+% \end{macrocode}
+% \end{noindmacro}
+
+
+% \begin{noindmacro}{\FancyVerbTab}
+% Set the visible tab.
+% Unicode |240B| (SYMBOL FOR HORIZONTAL TABULATION)
+% and |21E5| (RIGHTWARDS ARROW TO BAR)
+% both gave unindended new lines at each tab,
+% so a simple pipe character is used instead.
+%
+% For the print mode, the \pkg{fancyvrb} definition does not copy,
+% so a simplified version is used.
+% \changes{v0.913}{2023/12/04}{\pkg{fancyvrb}: Set visible tab character.}
+% \begin{macrocode}
+\def\LWR@print@FancyVerbTab{|}
+\def\LWR@HTML@FancyVerbTab{|}%
+\LWR@formatted{FancyVerbTab}
+% \end{macrocode}
+% \end{noindmacro}
+
+
+% \begin{macrocode}
+\fvset{tabsize=8,showtabs=false}
+% \end{macrocode}
+
+
+%
+% \begin{noindmacro}{\FV@CatCodes}
+% \begin{macrocode}
+\def\FV@CatCodes{%
+ \let\do\@makeother\dospecials % The usual stuff.
+ \FV@ActiveWhiteSpace % See below.
+ \FV@FontScanPrep % See below.
+ \FV@CatCodesHook % A style hook.
+ \FancyVerbCodes % A user-defined hook.
+ \catcode`\>=12% % lwarp
+ \catcode`\<=12% % lwarp
+}
% \end{macrocode}
+% \end{noindmacro}
+%
%
+% \begin{noindmacro}{\FV@GetLine}
+% Added the catcode changes for |<| and|>| to avoid
+% the effect of \cs{@noligs} for these characters.
+% They were being made active and thus would not be sensed by the
+% search/replace to sanitize.
%
+% This code is sensitive to the use of |%|, and for some reason does not work
+% \watchout
+% if \cs{expandafter} immediately follows the |<| catcode change.
+% \changes{v0.913}{2023/10/04}{\pkg{fancyvrb}: Sanitize \HTML.}
+% \begin{macrocode}
+\def\FV@GetLine{%
+ \@noligs%
+ \catcode`\>=12% lwarp, and the next line as well
+% for some reason, there must not be a % after the following 12:
+ \catcode`\<=12
+%
+ \expandafter\FV@CheckScan\FancyVerbGetLine%
+}
+% \end{macrocode}
+
+% Modified to sanitize \HTML.
+% \cs{LWR@HTMLsanitize@tmpb} is included in \cs{FV@Line},
+% so it will adjust if used inside an \env{lateximage}.
+% \changes{v0.913}{2023/10/11}{\pkg{fancyvrb}: Sanitize \HTML.}
+% \begin{macrocode}
+\begingroup
+\catcode`\^^M=\active%
+\gdef\FancyVerbGetLine#1^^M{%
+ \@nil%
+ \FV@CheckEnd{#1}%
+ \ifx\@tempa\FV@EnvironName% % True if end is found
+ \ifx\@tempb\FV@@@CheckEnd\else\FV@BadEndError\fi%
+ \let\next\FV@EndScanning%
+ \else%
+ \ifbool{LWR@HTMLsanitize@tmpb@enable}% lwarp
+ {\def\FV@Line{\LWR@HTMLsanitize@use@tmpb{#1}}}% lwarp
+ {\def\FV@Line{#1}}% lwarp
+ \def\next{\FV@PreProcessLine\FV@GetLine}%
+ \fi%
+ \next}%
+\endgroup
+% \end{macrocode}
+% \end{noindmacro}
+%
+%
+%
+% \begin{noindmacro}{\FV@List} \marg{R/L margin 0/1}
+%
+% Modified to always allow line wrapping because added \HTML\ tags may
+% make run off the end of the line in the \PDF\ output file before conversion to \HTML.
+% \begin{macrocode}
+\def\FV@List#1{%
+ \begingroup
+ \FV@UseKeyValues
+ \FV@LeaveVMode
+ \if@inlabel\else\setbox\@labels=\box\voidb@x\fi
+ \FV@ListNesting{#1}%
+ \FV@ListParameterHook
+ \FV@ListVSpace
+ \FV@SetLineWidth
+ \FV@InterLinePenalty
+% \let\FV@ProcessLine\FV@ListProcessLine@i
+ \let\FV@ProcessLine\FV@ListProcessLine% lwarp
+ \FV@CatCodes
+ \FV@FormattingPrep
+ \FV@ObeyTabsInit
+ \FV@BeginListFrame}
+% \end{macrocode}
+% \end{noindmacro}
+%
+% \begin{noindmacro}{\FV@ListProcessLine} \marg{text}
+%
+% Processes each line, adding optional line numbers.
+% Modified to always allow line wrapping because added \HTML\ tags may
+% make run off the end of the line in the \PDF\ output file before conversion to \HTML.
+% \begin{macrocode}
+\def\FV@ListProcessLine#1{%
+ \hbox to \hsize{%
+% \kern\leftmargin
+ \hbox to \VerbatimHTMLWidth {%
+ \ifcsvoid{FV@LeftListNumber}{}{\kern 2.5em}%
+ \FV@LeftListNumber%
+% \FV@LeftListFrame
+ \FancyVerbFormatLine{#1}%
+ \hss%
+% \FV@RightListFrame
+ \FV@RightListNumber%
+ }%
+ \hss% required to avoid underfull hboxes
+}
+}
+% \end{macrocode}
+% \end{noindmacro}
+
+% \begin{noindmacro}{\FVC@SaveVerb} \marg{name} \marg{character}
+%
+% Modified to sanitize \HTML\ when stored.
+% Sanitizing on use would be too late to adjust catcodes.
+% \cs{LWR@HTMLsanitize@tmpb} is included in the saved macro, so
+% if inside a \env{lateximage}, \cs{LWR@HTMLsanitize@tmp} does nothing.
+% \changes{v0.913}{2023/10/11}{\pkg{fancyvrb}: Sanitize \HTML.}
+% \begin{macrocode}
+\begingroup
+\catcode`\^^M=\active%
+\gdef\FVC@SaveVerb#1#2{%
+ \@namedef{FV@SV@#1}{}%
+ \begingroup%
+ \FV@UseKeyValues%
+ \FV@CatCodes%
+ \outer\def^^M{\FV@EOL}%
+ \global\let\@tempg\FancyVerbAfterSave%
+ \catcode`#2=12%
+ \def\@tempa{\def\FancyVerbGetVerb####1####2}%
+% \expandafter\@tempa\string#2{\endgroup\@namedef{FV@SV@#1}{##2}\@tempg}%
+ \expandafter\@tempa\string#2{%
+ \endgroup%
+ \@namedef{FV@SV@#1}{%
+% ##2%
+ \LWR@HTMLsanitize@use@tmpb{##2}% lwarp
+ }\@tempg%
+ }%
+ \FancyVerbGetVerb\FV@EOL}%
+\endgroup
+% \end{macrocode}
+% \end{noindmacro}
+
+
+% \begin{noindmacro}{\FV@UseVerb} \marg{macro}
+%
+% Adds a \element{span}.
+% \begin{macrocode}
+\def\FV@UseVerb#1{%
+ \ifbool{LWR@verbtags}% lwarp
+ {\LWR@htmltag{span class=\textquotedbl{}fancyvrb\textquotedbl}}% lwarp
+ {}% lwarp
+ \mbox{\FV@UseKeyValues\FV@FormattingPrep#1}%
+ \ifbool{LWR@verbtags}% lwarp
+ {\LWR@htmltag{/span}}% lwarp
+ {}% lwarp
+}
+% \end{macrocode}
+% \end{noindmacro}
+
+
+
+%
+%
+% \begin{noindmacro}{\FVC@Verb} \marg{character}
+%
+% Modified to sanitize \HTML.
+% \changes{v0.913}{2023/10/04}{\pkg{fancyvrb}: Sanitize \HTML.}
+% \begin{macrocode}
+\begingroup
+\catcode`\^^M=\active%
+\gdef\FVC@Verb#1{%
+ \begingroup%
+ \FV@UseKeyValues%
+ \FV@FormattingPrep%
+ \FV@CatCodes%
+ \outer\def^^M{}%
+ \catcode`#1=12%
+ \def\@tempa{\def\FancyVerbGetVerb####1####2}%
+ \expandafter\@tempa\string#1{%
+ \ifbool{LWR@verbtags}% lwarp
+ {% lwarp
+ \LWR@htmltag{span class=\textquotedbl{}fancyvrb\textquotedbl}% lwarp
+ \def\tmpb{##2}% lwarp
+ \LWR@HTMLsanitize@tmpb% lwarp
+ \mbox{\tmpb}% lwarp
+ \LWR@htmltag{/span}% lwarp
+ }% lwarp
+ {\mbox{##2}}%
+ \endgroup%
+ }%
+ \FancyVerbGetVerb\FV@EOL%
+}%
+\endgroup
+% \end{macrocode}
+% \end{noindmacro}
+%
+%
+%
+% \begin{noindmacro}{\FV@ReadLine}
+% Modified to sanitize \HTML.
+% \changes{v0.913}{2023/10/08}{\pkg{fancyvrb}: Sanitize \HTML.}
+% \begin{macrocode}
+\begingroup
+\catcode`\^^M=\active
+\gdef\FV@ReadLine{%
+ \ifeof\FV@InFile\else
+% \immediate\read\FV@InFile to\@tempa%
+% \expandafter\FV@@ReadLine\@tempa^^M\relax^^M\@nil%
+ \immediate\read\FV@InFile to\tmpb%
+ \LWR@HTMLsanitize@tmpb%
+ \expandafter\FV@@ReadLine\tmpb^^M\relax^^M\@nil%
+ \fi}
+\endgroup
+% \end{macrocode}
+% \end{noindmacro}
+%
+%
+% \begin{noindmacro}{\LWR@FVstyle} Holds the style of the verbatim.
+% \begin{macrocode}
+\newcommand*{\LWR@FVstyle}{}
+% \end{macrocode}
+% \end{noindmacro}
+%
+%
+% After the preamble is loaded, after any patches to \env{Verbatim},
+% such as by \pkg{fvextra}:
+% \begin{macrocode}
+\AfterEndPreamble{
+
+\LWR@traceinfo{Patching fancyvrb.}
+% \end{macrocode}
+
% \begin{noindmacro}{\VerbatimFootnotes}
% Patched to use the new version.
% \begin{macrocode}
@@ -57090,8 +58007,19 @@ name = \chemmacros_translate:n {scheme-name}
% \begin{macrocode}
\renewrobustcmd{\textsuperscript}[1]{\LWR@htmlspan{sup}{##1}}%
% \end{macrocode}
+%
+% Verbatim tags and \HTML\ sanitization will have been turned off
+% inside a \env{lateximage}, such as in \SVG\ math,
+% so turn them on here so they will be active in the \HTML\ footnotes.
+% \changes{v0.913}{2023/12/09}{\pkg{fancyvrb}: Improved \HTML\ sanitization.}
+% \begin{macrocode}
+ \booltrue{LWR@verbtags}%
+ \booltrue{LWR@HTMLsanitize@tmpb@enable}%
+% \end{macrocode}
+
+
% Use paragraph tags if in a tabular data cell or a \env{lateximage}:
-% \changes{v0.66}{2019/02/02}{Improved \HTML\ formatting.}
+% \changes{v0.66}{2019/02/02}{\pkg{fancyvrb}: Improved \HTML\ formatting.}
% \changes{v0.902}{2021/09/29}{\pkg{fancyvrb}: Improved footnote par tags.}
% \begin{macrocode}
\LWR@htmltagc{\LWR@tagregularparagraph}\LWR@orignewline%
@@ -57118,10 +58046,11 @@ name = \chemmacros_translate:n {scheme-name}
% \end{noindmacro}
%
% \begin{noindmacro}{\V@@@footnotetext}
+% Improves \element{par}.
% \changes{v0.902}{2021/09/29}{\pkg{fancyvrb}: Improved footnote par tags.}
% \begin{macrocode}
\def\V@@@footnotetext{%
- \LWR@origtilde\LWR@orignewline%
+ \LWR@orignobreakspace\LWR@orignewline%
\LWR@htmltagc{/\LWR@tagregularparagraph}\LWR@orignewline%
\strut\egroup%
}
@@ -57129,76 +58058,116 @@ name = \chemmacros_translate:n {scheme-name}
% \end{noindmacro}
%
%
+% \begin{noindmacro}{\FVB@Verbatim}
+% \begin{noindmacro}{\FVB@LVerbatim}
+% Prevents unexpected page break in the \PDF\ output before \HTML\ conversion.
% \changes{v0.45}{2018/01/07}{\pkg{fancyvrb}: Improvements.}
% \begin{macrocode}
\preto\FVB@Verbatim{\LWR@forcenewpage}
\preto\FVB@LVerbatim{\LWR@forcenewpage}
% \preto\FVB@BVerbatim{\LWR@forcenewpage}% Fails, so done below.
% \end{macrocode}
+% \end{noindmacro}
+% \end{noindmacro}
+%
%
% Simplified to remove \PDF\ formatting:
% \changes{v0.45}{2018/01/07}{\pkg{fancyvrb}: Improvements.}
% \begin{macrocode}
-\def\FV@BeginListFrame@Single{%
+\def\LWR@HTML@FV@BeginListFrame@Single{%
\FV@SingleFrameLine{\z@}%
}
+\LWR@formatted{FV@BeginListFrame@Single}
-\def\FV@EndListFrame@Single{%
+\def\LWR@HTML@FV@EndListFrame@Single{%
\FV@SingleFrameLine{\@ne}%
}
+\LWR@formatted{FV@EndListFrame@Single}
-\def\FV@BeginListFrame@Lines{%
+\def\LWR@HTML@FV@BeginListFrame@Lines{%
\FV@SingleFrameLine{\z@}%
}
+\LWR@formatted{FV@BeginListFrame@Lines}
-\def\FV@EndListFrame@Lines{%
+\def\LWR@HTML@FV@EndListFrame@Lines{%
\FV@SingleFrameLine{\@ne}%
}
+\LWR@formatted{FV@EndListFrame@Lines}
-\renewcommand*{\FV@SingleFrameSep}{}
+\newcommand*{\LWR@HTML@FV@SingleFrameSep}{}%
+\LWR@formatted{FV@SingleFrameSep}
% \end{macrocode}
%
-% Adds \HTML\ formatting:
-% \changes{v0.891}{2020/09/12}{\pkg{fancyvrb}: Fix: \env{BVerbatim} with labels.}
-% \begin{macrocode}
-\def\FV@BUseVerbatim#1{%
- \FV@BVerbatimBegin#1\FV@BVerbatimEnd%
-}
-% \end{macrocode}
-% \begin{macro}{\LWR@FVstyle} Holds the style of the verbatim.
-% \begin{macrocode}
-\newcommand*{\LWR@FVstyle}{}
-% \end{macrocode}
-% \end{macro}
%
% The following patches to \env{Verbatim} are executed at the
% start and end of the environment, depending on the choice of |frame|.
-% Original code is from the \pkg{fancyvrb} package.
+%
+% \begin{noindmacro}{\LWR@fvstartnone}
+% Wraps label in a \element{div} of class \attribute{fancyvrblabel}.
% \changes{v0.73}{2019/06/26}{\pkg{fancyvrb}: Fix: Nested \element{div}/\element{pre}.}
-% \changes{v0.895}{2021/01/14}{Improved \HTML\ quotes.}
+% \changes{v0.895}{2021/01/14}{\pkg{fancyvrb}: Improved \HTML\ quotes.}
% \begin{macrocode}
\newcommand*{\LWR@fvstartnone}{%
\LWR@traceinfo{fvstartnone}%
% \hbox to\z@{
-\BlockClass[\LWR@FVstyle]{fancyvrb}
+% \end{macrocode}
+%
+% If the current text sytle is empty, do not print an \HTML\ style.
+% \changes{v0.913}{2023/12/04}{\pkg{fancyvrb}: No style if empty.}
+% \begin{macrocode}
+ \ifdefstring{\LWR@FVstyle}{\LWR@currenttextcolorstyle}%
+ {%
+ \LWR@findcurrenttextcolor%
+ \ifdefstring{\LWR@tempcolor}{000000}%
+ {\BlockClass{fancyvrb}}%
+ {\BlockClass[\LWR@FVstyle]{fancyvrb}}%
+ }%
+ {%
+ \BlockClass[\LWR@FVstyle]{fancyvrb}%
+ }%
+% \BlockClass[\LWR@FVstyle]{fancyvrb}%
+% \end{macrocode}
+%
+% \changes{v0.913}{2023/12/04}{\pkg{fancyvrb}: Color style.}
+% \begin{macrocode}
\LWR@stoppars
\ifx\FV@LabelPositionTopLine\relax\else
\ifx\FV@LabelBegin\relax\else
\FancyVerbRuleColor{\LWR@FVfindbordercolor}
- \LWR@htmltagc{%
- div class=\textquotedbl{}fancyvrblabel\textquotedbl\ % space
- style=\textquotedbl{}color: \LWR@origpound\LWR@tempcolor\textquotedbl%
- }
+ \ifbool{LWR@verbtags}% lwarp
+ {% lwarp
+ \LWR@findcurrenttextcolor%
+ \LWR@htmltagc{% lwarp
+ div class=\textquotedbl{}fancyvrblabel\textquotedbl\ % space
+ style=\textquotedbl{}%
+ color: \LWR@origpound\LWR@tempcolor%
+ \textquotedbl%
+ }%
+ \LWR@orignewline% lwarp
+ }% lwarp
+ {}% lwarp
\LWR@print@textrm{\FV@LabelBegin}% \textrm preserves emdash
- \LWR@htmltagc{/div}\LWR@orignewline%
+ \LWR@orignewline% lwarp
+ \ifbool{LWR@verbtags}% lwarp
+ {% lwarp
+ \LWR@htmltagc{/div}% lwarp
+ \LWR@orignewline% lwarp
+ }% lwarp
+ {}% lwarp
\fi
\fi
\LWR@atbeginverbatim{verbatim}%
-% }%
+% }% hbox
}
+% \end{macrocode}
+% \end{noindmacro}
+% \begin{noindmacro}{\LWR@fvendnone}
+% Wraps label in a \element{div} of class \attribute{fancyvrblabel}.
+% \changes{v0.913}{2023/12/04}{\pkg{fancyvrb}: Color style.}
+% \begin{macrocode}
\newcommand*{\LWR@fvendnone}{%
\LWR@traceinfo{fvendnone}%
% \hbox to\z@{
@@ -57206,18 +58175,36 @@ name = \chemmacros_translate:n {scheme-name}
\LWR@stoppars%
\ifx\FV@LabelPositionBottomLine\relax\else
\ifx\FV@LabelEnd\relax\else
- \FancyVerbRuleColor{\LWR@FVfindbordercolor}
- \LWR@htmltagc{%
- div class=\textquotedbl{}fancyvrblabel\textquotedbl\ % space
- style=\textquotedbl{}color: \LWR@origpound\LWR@tempcolor\textquotedbl%
- }
- \LWR@print@textrm{\FV@LabelEnd}
- \LWR@htmltagc{/div}\LWR@orignewline%
+ \FancyVerbRuleColor{\LWR@FVfindbordercolor}% lwarp
+ \ifbool{LWR@verbtags}% lwarp
+ {% lwarp
+ \LWR@findcurrenttextcolor%
+ \LWR@htmltagc{% lwarp
+ div class=\textquotedbl{}fancyvrblabel\textquotedbl\ % space
+ style=\textquotedbl{}%
+ color: \LWR@origpound\LWR@tempcolor%
+ \textquotedbl%
+ }%
+ \LWR@orignewline% lwarp
+ }% lwarp
+ {}% lwarp
+ \LWR@print@textrm{\FV@LabelEnd}% lwarp
+ \LWR@orignewline% lwarp
+ \ifbool{LWR@verbtags}% lwarp
+ {% lwarp
+ \LWR@htmltagc{/div}% lwarp
+ \LWR@orignewline% lwarp
+ }% lwarp
+ {}% lwarp
\fi
\fi
-\endBlockClass
+\endBlockClass% lwarp
+% }% hbox
}
+% \end{macrocode}
+% \end{noindmacro}
+% \begin{macrocode}
\newcommand*{\LWR@fvstartsingle}{%
\LWR@traceinfo{fvstartsingle}%
\LWR@fvstartnone%
@@ -57248,7 +58235,6 @@ name = \chemmacros_translate:n {scheme-name}
%
% The following patches select the start/left/right/end
% behaviors depending on |frame|.
-% Original code is from the \pkg{fancyvrb} package.
% \begin{macrocode}
\newcommand*{\LWR@FVfindbordercolor}{%
\FancyVerbRuleColor%
@@ -57264,16 +58250,17 @@ border#1: \strip@pt\dimexpr \FV@FrameRule\relax\relax pt % space
solid {\FancyVerbRuleColor{\LWR@origpound\LWR@tempcolor}} ; % space
}
-\def\FV@Frame@none{%
+\def\LWR@HTML@FV@Frame@none{%
\renewcommand*{\LWR@FVstyle}{\LWR@currenttextcolorstyle}%
\let\FV@BeginListFrame\LWR@fvstartnone%
\let\FV@LeftListFrame\relax%
\let\FV@RightListFrame\relax%
\let\FV@EndListFrame\LWR@fvendnone}
+\LWR@formatted{FV@Frame@none}
\FV@Frame@none% default values
-\def\FV@Frame@single{%
+\def\LWR@HTML@FV@Frame@single{%
\renewcommand*{\LWR@FVstyle}{%
\LWR@currenttextcolorstyle\LWR@indentHTMLtwo%
\LWR@FVborderstyle{}%
@@ -57282,8 +58269,9 @@ solid {\FancyVerbRuleColor{\LWR@origpound\LWR@tempcolor}} ; % space
\let\FV@LeftListFrame\FV@LeftListFrame@Single%
\let\FV@RightListFrame\FV@RightListFrame@Single%
\let\FV@EndListFrame\LWR@fvendsingle}
+\LWR@formatted{FV@Frame@single}
-\def\FV@Frame@lines{%
+\def\LWR@HTML@FV@Frame@lines{%
\renewcommand*{\LWR@FVstyle}{%
\LWR@currenttextcolorstyle\LWR@indentHTMLtwo%
\LWR@FVborderstyle{-top}%
@@ -57294,8 +58282,9 @@ solid {\FancyVerbRuleColor{\LWR@origpound\LWR@tempcolor}} ; % space
\let\FV@LeftListFrame\relax%
\let\FV@RightListFrame\relax%
\let\FV@EndListFrame\LWR@fvendline}
+\LWR@formatted{FV@Frame@lines}
-\def\FV@Frame@topline{%
+\def\LWR@HTML@FV@Frame@topline{%
\renewcommand*{\LWR@FVstyle}{%
\LWR@currenttextcolorstyle\LWR@indentHTMLtwo%
\LWR@FVborderstyle{-top}%
@@ -57304,8 +58293,9 @@ solid {\FancyVerbRuleColor{\LWR@origpound\LWR@tempcolor}} ; % space
\let\FV@LeftListFrame\relax%
\let\FV@RightListFrame\relax%
\let\FV@EndListFrame\LWR@fvendnone}
+\LWR@formatted{FV@Frame@topline}
-\def\FV@Frame@bottomline{%
+\def\LWR@HTML@FV@Frame@bottomline{%
\renewcommand*{\LWR@FVstyle}{%
\LWR@currenttextcolorstyle\LWR@indentHTMLtwo%
\LWR@FVborderstyle{-bottom}%
@@ -57314,20 +58304,26 @@ solid {\FancyVerbRuleColor{\LWR@origpound\LWR@tempcolor}} ; % space
\let\FV@LeftListFrame\relax%
\let\FV@RightListFrame\relax%
\let\FV@EndListFrame\LWR@fvendline}
+\LWR@formatted{FV@Frame@bottomline}
% \end{macrocode}
%
-% Seems to be required in some situations:
+% Seems to be required in some situations.
+% Is not \cs{LWR@formatted} because it is defined as needed.
% \changes{v0.892}{2020/10/06}{\pkg{fancyvrb}: Provided \cs{FV@FrameFillLine}.}
% \begin{macrocode}
-\def\FV@FrameFillLine{}%
+\def\FV@FrameFillLine{}
% \end{macrocode}
+%
% \begin{macrocode}
-\def\FV@Frame@leftline{%
+\def\LWR@HTML@FV@Frame@leftline{%
\renewcommand*{\LWR@FVstyle}{%
\LWR@currenttextcolorstyle\LWR@indentHTMLtwo%
\LWR@FVborderstyle{-left}%
}%
-% To define the \FV@FrameFillLine macro (from \FV@BeginListFrame)
+% \end{macrocode}
+%
+% To define the \cs{FV@FrameFillLine} macro (from \cs{FV@BeginListFrame})
+% \begin{macrocode}
\ifx\FancyVerbFillColor\relax%
\let\FV@FrameFillLine\relax%
\else%
@@ -57341,13 +58337,14 @@ solid {\FancyVerbRuleColor{\LWR@origpound\LWR@tempcolor}} ; % space
\let\FV@LeftListFrame\FV@LeftListFrame@Single%
\let\FV@RightListFrame\relax%
\let\FV@EndListFrame\LWR@fvendnone}
+\LWR@formatted{FV@Frame@leftline}
% \end{macrocode}
%
+% \begin{noindmacro}{\FV@SingleFrameLine}
% Adds the optional label to the top and bottom edges.
-% Original code is from the \pkg{fancyvrb} package.
% \changes{v0.73}{2019/06/26}{\pkg{fancyvrb}: Fix: Nested \element{div}/\element{pre}.}
% \begin{macrocode}
-\def\FV@SingleFrameLine#1{%
+\def\LWR@HTML@FV@SingleFrameLine#1{%
% \hbox to\z@{%
% \kern\leftmargin
\ifnum#1=\z@\relax
@@ -57373,54 +58370,19 @@ solid {\FancyVerbRuleColor{\LWR@origpound\LWR@tempcolor}} ; % space
% \hss
% }
}
+\LWR@formatted{FV@SingleFrameLine}
% \end{macrocode}
+% \end{noindmacro}
%
-% Processes each line, adding optional line numbers.
-% Original code is from the \pkg{fancyvrb} package.
-% \begin{macrocode}
-\def\FV@ListProcessLine#1{%
- \hbox to \hsize{%
-% \kern\leftmargin
- \hbox to \VerbatimHTMLWidth {%
- \ifcsvoid{FV@LeftListNumber}{}{\kern 2.5em}%
- \FV@LeftListNumber%
-% \FV@LeftListFrame
- \FancyVerbFormatLine{#1}%
- \hss%
-% \FV@RightListFrame
- \FV@RightListNumber%
- }%
- \hss% required to avoid underfull hboxes
-}
-}
-% \end{macrocode}
-% \changes{v0.892}{2020/10/05}{\pkg{fancyvrb}: Adapted to \pkg{fvextra}.}
-% \begin{macrocode}
-\def\FV@ListProcessLine@i#1{%
-% \hbox{%
- \ifvoid\@labels\else
- \hbox to \z@{\kern\@totalleftmargin\box\@labels\hss}%
- \fi
- \FV@ListProcessLine{#1}%
-% }%
-% \let\FV@ProcessLine\FV@ListProcessLine@ii%
-}
-% \end{macrocode}
-
-% \changes{v0.892}{2020/10/05}{\pkg{fancyvrb}: Adapted to \pkg{fvextra}.}
-% \begin{macrocode}
-\def\FV@ListProcessLastLine{}
-% \end{macrocode}
-
-% \begin{environment}{BVerbatim}
+% \begin{noindenvironment}{BVerbatim}
+% Adds \pkg{lwarp} verbatim patches.
% \changes{v0.891}{2020/09/12}{\pkg{fancyvrb}: Fix: \env{BVerbatim} with labels.}
% \begin{macrocode}
-
\xpretocmd{\FV@BeginVBox}
{%
- \LWR@forcenewpage% instead of \preto
+ \LWR@forcenewpage%
\LWR@atbeginverbatim{bverbatim}%
}
{}
@@ -57433,13 +58395,34 @@ solid {\FancyVerbRuleColor{\LWR@origpound\LWR@tempcolor}} ; % space
{}
{\LWR@patcherror{fancyvrb}{FV@EndVBox}}
% \end{macrocode}
-% \end{environment}
+% \end{noindenvironment}
% End of the modifications to make at the end of the preamble:
% \begin{macrocode}
} % \AfterEndPreamble
% \end{macrocode}
+
+
+% \begin{macrocode}
+\def\FVB@VerbatimOut#1{%
+ \@bsphack
+ \begingroup
+ \FV@UseKeyValues
+ \FV@DefineWhiteSpace
+ \def\FV@Space{\space}%
+ \FV@DefineTabOut
+ \def\FV@ProcessLine{\immediate\write\FV@OutFile}%
+ \immediate\openout\FV@OutFile #1\relax
+ \let\FV@FontScanPrep\relax
+%% DG/SR modification begin - May. 18, 1998 (to avoid problems with ligatures)
+ \let\@noligs\relax
+%% DG/SR modification end
+ \boolfalse{LWR@HTMLsanitize@tmpb@enable}% lwarp
+ \FV@Scan}
+% \end{macrocode}
+
+
% \iffalse
%</fancyvrb>
% \fi
@@ -59292,9 +60275,9 @@ solid {\FancyVerbRuleColor{\LWR@origpound\LWR@tempcolor}} ; % space
% \let\fn@endnote\color@endgroup% *** conflicts with lwarp
\def\fn@endnote{%
- \LWR@origtilde\LWR@orignewline%
+ \LWR@orignobreakspace\LWR@orignewline%
\LWR@htmltagc{/\LWR@tagregularparagraph}\LWR@orignewline%
- \LWR@origtilde\LWR@orignewline%
+ \LWR@orignobreakspace\LWR@orignewline%
}
% \end{macrocode}
%
@@ -59319,7 +60302,7 @@ solid {\FancyVerbRuleColor{\LWR@origpound\LWR@tempcolor}} ; % space
% \begin{macrocode}
\def\fn@endfntext{%
\fn@postfntext%
- \LWR@origtilde\LWR@orignewline%
+ \LWR@orignobreakspace\LWR@orignewline%
\LWR@htmltagc{/\LWR@tagregularparagraph}%
\LWR@orignewline%
\egroup%
@@ -60106,46 +61089,44 @@ solid {\FancyVerbRuleColor{\LWR@origpound\LWR@tempcolor}} ; % space
%
% \changes{v0.892}{2020/10/05}{\pkg{fvextra}: Added.}
% \changes{v0.910}{2022/12/15}{\pkg{fvextra}: Updated to v1.5.}
+% \changes{v0.913}{2023/12/05}{\pkg{fvextra}: Updated to v1.6.1.}
%
% \codehtml
%
% \begin{macrocode}
-\LWR@ProvidesPackagePass{fvextra}[2022/11/30]
+\LWR@ProvidesPackagePass{fvextra}[2023/11/28]
% \end{macrocode}
%
-% Ignored are \optn{highlight},
-% \optn{showtabs}, \optn{obeytabs}, \optn{tab}, \optn{tabcolor}.
-% Also ignored are all options regarding line breaking
-% except \optn{breaklines}, which is emulated as true.
-%
-% \optn{tabsize} is honored.
-%
% If line numbers on the right side are used along with \optn{breaklines},
% the line numbers will not be aligned.
% \begin{macrocode}
\define@booleankey{FV}{obeytabs}%
% {\let\FV@ObeyTabsInit\FV@@ObeyTabsInit}%
+ {\let\FV@ObeyTabsInit\relax}% lwarp
{\let\FV@ObeyTabsInit\relax}
- {\let\FV@ObeyTabsInit\relax}
-
-\define@key{FV}{tabcolor}%
- {}
+% \end{macrocode}
-\define@key{FV}{tab}{}
+% \optn{tabcolor} causes extra \HTML\ tags, destroying the verbatim text alignment,
+% so \optn{tabcolor} is ignored.
+% \begin{macrocode}
+\define@key{FV}{tabcolor}{}%
+% \end{macrocode}
+% \changes{v0.910}{2023/12/04}{\pkg{fvextra}: Improved tabs.}
+% \begin{macrocode}
\define@booleankey{FV}{showtabs}%
-% {\def\FV@TabChar{\FV@TabColor{\FancyVerbTab}}}%
- {\let\FV@TabChar\relax}
+ {\def\FV@TabChar{\FV@TabColor{\FancyVerbTab}}}%
{\let\FV@TabChar\relax}
\newbool{LWR@FV@breaklines}
\define@booleankey{FV}{breaklines}%
- {\boolfalse{FV@breaklines}
- \booltrue{LWR@FV@breaklines}
- \let\FV@ListProcessLine\FV@ListProcessLine@NoBreak}
- {\boolfalse{FV@breaklines}
- \boolfalse{LWR@FV@breaklines}
+ {\boolfalse{FV@breaklines}%
+ \booltrue{LWR@FV@breaklines}% lwarp
+% \let\FV@ListProcessLine\FV@ListProcessLine@Break}%
+ \let\FV@ListProcessLine\FV@ListProcessLine@NoBreak}% lwarp
+ {\boolfalse{FV@breaklines}%
+ \boolfalse{LWR@FV@breaklines}% lwarp
\let\FV@ListProcessLine\FV@ListProcessLine@NoBreak}
% \fvset{breaklines}
@@ -60175,7 +61156,52 @@ solid {\FancyVerbRuleColor{\LWR@origpound\LWR@tempcolor}} ; % space
\define@key{FV}{breaksymbolright}{\def\FancyVerbBreakSymbolRight{}}
\fvset{breaksymbolright={}}
+% \end{macrocode}
+
+
+% Modified to insert a fixed-width space (\cs{nobreakspace}) to indent the
+% left margin on indented code, but also allow a line break if needed (\cs{allowbreaK}),
+% to allow for break lines.
+% \changes{v0.913}{2023/11/26}{\pkg{fvextra}: Improved indentation.}
+% \begin{macrocode}
+\def\FV@DefFVSpace{%
+ \ifbool{FV@showspaces}%
+ {%
+ \def\FV@Space{%
+ \FV@SpaceColor{\FancyVerbSpace}%
+ \allowbreak%
+ }%
+ }%
+ {\def\FV@Space{\nobreakspace\allowbreak}}%
+}
+% \end{macrocode}
+
+
+% \begin{noindmacro}{\FancyVerbSpace}
+% Force the use of a vibible space instead of an empty box.
+% From \pkg{fancyvrb}.
+% \changes{v0.913}{2023/11/25}{\pkg{fvextra}: Fixed visible space from kernel change.}
+% \begin{macrocode}
+\ifxetexorluatex
+\def\FancyVerbSpace{\textvisiblespace}
+\else
+\@ifundefined{verbvisiblespace}%
+ {%
+ \@ifundefined{textvisiblespace}%
+ {\begingroup\catcode`\ =12 \gdef\FancyVerbSpace{\tt }\endgroup}
+ {\def\FancyVerbSpace{\textvisiblespace}}
+ }%
+ {\def\FancyVerbSpace{\verbvisiblespace}}
+\fi
+% \end{macrocode}
+% \end{noindmacro}
+
+% \begin{noindmacro}{\FV@ListProcessLine@NoBreak} \marg{text}
+%
+% Modified to always allow line wrapping because added \HTML\ tags may
+% make run off the end of the line in the \PDF\ output file before conversion to \HTML.
+% \begin{macrocode}
\def\FV@ListProcessLine@NoBreak#1{%
% \hbox to \hsize{%
% \kern\leftmargin
@@ -60191,8 +61217,10 @@ solid {\FancyVerbRuleColor{\LWR@origpound\LWR@tempcolor}} ; % space
% \hss}%
\null\par% lwarp
}
-
-
+% \end{macrocode}
+% \end{noindmacro}
+%
+% \begin{macrocode}
\newcommand*{\LWR@FV@linethensep}{%
\ifbool{LWR@FV@breaklines}%
{\theFancyVerbLine\kern\FV@NumberSep}%
@@ -60205,79 +61233,249 @@ solid {\FancyVerbRuleColor{\LWR@origpound\LWR@tempcolor}} ; % space
{\hbox to\z@{\kern\FV@NumberSep\theFancyVerbLine\hss}}%
}
-\xpatchcmd{\FV@Numbers@left}
+\xpatchcmd{\FV@Numbers@left}%
{\hbox to\z@{\hss\theFancyVerbLine\kern\FV@NumberSep}}
{\LWR@FV@linethensep}
{}
{\LWR@patcherror{fvextra}{FV@Numbers@left A}}
-\xpatchcmd{\FV@Numbers@left}
+\xpatchcmd{\FV@Numbers@left}%
{\hbox to\z@{\hss\theFancyVerbLine\kern\FV@NumberSep}}
{\LWR@FV@linethensep}
{}
{\LWR@patcherror{fvextra}{FV@Numbers@left B}}
-\xpatchcmd{\FV@Numbers@left}
+\xpatchcmd{\FV@Numbers@left}%
{\hbox to\z@{\hss\theFancyVerbLine\kern\FV@NumberSep}}
{\LWR@FV@linethensep}
{}
{\LWR@patcherror{fvextra}{FV@Numbers@left C}}
-\xpatchcmd{\FV@Numbers@right}
+\xpatchcmd{\FV@Numbers@right}%
{\hbox to\z@{\kern\FV@NumberSep\theFancyVerbLine\hss}}
{\LWR@FV@septhenline}
{}
{\LWR@patcherror{fvextra}{FV@Numbers@right A}}
-\xpatchcmd{\FV@Numbers@right}
+\xpatchcmd{\FV@Numbers@right}%
{\hbox to\z@{\kern\FV@NumberSep\theFancyVerbLine\hss}}
{\LWR@FV@septhenline}
{}
{\LWR@patcherror{fvextra}{FV@Numbers@right B}}
-\xpatchcmd{\FV@Numbers@right}
+\xpatchcmd{\FV@Numbers@right}%
{\hbox to\z@{\hss\theFancyVerbLine\kern\FV@NumberSep}}
{\LWR@FV@linethensep}
{}
{\LWR@patcherror{fvextra}{FV@Numbers@right C}}
-\xpatchcmd{\FV@Numbers@both}
+\xpatchcmd{\FV@Numbers@both}%
{\hbox to\z@{\hss\theFancyVerbLine\kern\FV@NumberSep}}
{\LWR@FV@linethensep}
{}
{\LWR@patcherror{fvextra}{FV@Numbers@both A}}
-\xpatchcmd{\FV@Numbers@both}
+\xpatchcmd{\FV@Numbers@both}%
{\hbox to\z@{\hss\theFancyVerbLine\kern\FV@NumberSep}}
{\LWR@FV@linethensep}
{}
{\LWR@patcherror{fvextra}{FV@Numbers@both B}}
-\xpatchcmd{\FV@Numbers@both}
+\xpatchcmd{\FV@Numbers@both}%
{\hbox to\z@{\hss\theFancyVerbLine\kern\FV@NumberSep}}
{\LWR@FV@linethensep}
{}
{\LWR@patcherror{fvextra}{FV@Numbers@both C}}
-\xpatchcmd{\FV@Numbers@both}
+\xpatchcmd{\FV@Numbers@both}%
{\hbox to\z@{\kern\FV@NumberSep\theFancyVerbLine\hss}}
{\LWR@FV@septhenline}
{}
{\LWR@patcherror{fvextra}{FV@Numbers@both D}}
-\xpatchcmd{\FV@Numbers@both}
+\xpatchcmd{\FV@Numbers@both}%
{\hbox to\z@{\kern\FV@NumberSep\theFancyVerbLine\hss}}
{\LWR@FV@septhenline}
{}
{\LWR@patcherror{fvextra}{FV@Numbers@both E}}
-\xpatchcmd{\FV@Numbers@both}
+\xpatchcmd{\FV@Numbers@both}%
{\hbox to\z@{\hss\theFancyVerbLine\kern\FV@NumberSep}}
{\LWR@FV@linethensep}
{}
{\LWR@patcherror{fvextra}{FV@Numbers@both F}}
% \end{macrocode}
+
+% \begin{noindmacro}{\FVC@SaveVerb@Extra@ii} \marg{name} \marg{raw text} \marg{text}
%
+% Modified to add \cs{LWR@HTMLsanitize@use@tmb} to the stored macro.
+% This is used on recall to sanitize for \HTML\ unless in a \env{lateximage}.
+% \changes{v0.913}{2023/10/01}{\pkg{fvextra}: Improved \HTML\ sanitization.}
+% \begin{macrocode}
+\def\FVC@SaveVerb@Extra@ii#1#2#3{%
+ \global\let\FV@AfterSave\FancyVerbAfterSave
+ \endgroup
+% \@namedef{FV@SV@#1}{#3}%
+ \@namedef{FV@SV@#1}{\LWR@HTMLsanitize@use@tmpb{#3}}% lwarp
+% \@namedef{FV@SVRaw@#1}{#2}%
+ \@namedef{FV@SVRaw@#1}{\LWR@HTMLsanitize@use@tmpb{#2}}% lwarp
+ \FV@AfterSave}%
+% \end{macrocode}
+% \end{noindmacro}
+
+% \begin{noindmacro}{\FV@UseVerb@Extra} \marg{text}
+%
+% Adds the opening and closing tags.
+% \begin{macrocode}
+\def\FV@UseVerb@Extra#1{%
+ \ifbool{LWR@verbtags}% lwarp
+ {\LWR@htmltag{span class=\textquotedbl{}fancyvrb\textquotedbl}}% lwarp
+ {}% lwarp
+ \ifFV@breaklines
+ \expandafter\@firstoftwo
+ \else
+ \expandafter\@secondoftwo
+ \fi
+ {\FV@InsertBreaks{\FancyVerbFormatInline}{#1}}%
+ {\mbox{#1}}%
+ \ifbool{LWR@verbtags}% lwarp
+ {\LWR@htmltag{/span}}% lwarp
+ {}% lwarp
+ \endgroup}
+% \end{macrocode}
+% \end{noindmacro}
+
+% \begin{noindmacro}{\FVC@Verb@Extra@ii} \marg{text}
+%
+% Sanitize \HTML.
+% \begin{macrocode}
+\def\FVC@Verb@Extra@ii#1{%
+ \def\tmpb{#1}% lwarp
+ \ifbool{LWR@verbtags}% lwarp
+ {\LWR@htmltag{span class=\textquotedbl{}fancyvrb\textquotedbl}}% lwarp
+ {}% lwarp
+ \LWR@HTMLsanitize@tmpb% lwarp
+ \ifFV@breaklines
+ \expandafter\@firstoftwo
+ \else
+ \expandafter\@secondoftwo
+ \fi
+ {\FV@InsertBreaks{\FancyVerbFormatInline}{\tmpb}}% lwarp
+ {\mbox{\tmpb}}% lwarp
+ \ifbool{LWR@verbtags}% lwarp
+ {\LWR@htmltag{/span}}% lwarp
+ {}% lwarp
+ \endgroup}
+% \end{macrocode}
+% \end{noindmacro}
+
+% \begin{noindmacro}{\FVC@EscVerb@ii} \marg{text}
+%
+% Santize \HTML.
+% \changes{v0.913}{2023/12/07}{\pkg{fvextra}: Updated to v1.6.1.}
+% \begin{macrocode}
+\def\FVC@EscVerb@ii#1{%
+ \def\tmpb{#1}% lwarp
+ \ifbool{LWR@verbtags}% lwarp
+ {\LWR@htmltag{span class=\textquotedbl{}fancyvrb\textquotedbl}}% lwarp
+ {}% lwarp
+ \LWR@HTMLsanitize@tmpb% lwarp
+ \ifFV@breaklines
+ \expandafter\@firstoftwo
+ \else
+ \expandafter\@secondoftwo
+ \fi
+% {\FV@InsertBreaks{\FancyVerbFormatInline}{#1}}%
+% {\mbox{#1}}%
+ {\FV@InsertBreaks{\FancyVerbFormatInline}{\tmpb}}% lwarp
+ {\mbox{\tmpb}}% lwarp
+ \ifbool{LWR@verbtags}% lwarp
+ {\LWR@htmltag{/span}}% lwarp
+ {}% lwarp
+ \endgroup}
+% \end{macrocode}
+% \end{noindmacro}
+
+% \begin{noindmacro}{\FVB@VerbatimWrite}
+% Disable santizing \HTML\ while writing the file.
+% \HTML\ will be sanitized on \cs{VerbatimInput}.
+% \changes{v0.913}{2023/12/07}{\pkg{fvextra}: Updated to v1.6.1.}
+% \begin{macrocode}
+\xpatchcmd{\FVB@VerbatimWrite}
+ {\FV@Scan}
+ {\boolfalse{LWR@HTMLsanitize@tmpb@enable}\FV@Scan}
+ {}
+ {\LWR@patcherror{fvextra}{FVB@VerbatimWrite}}
+% \end{macrocode}
+% \end{noindmacro}
+
+% \begin{noindmacro}{\FVB@VerbatimBuffer}
+% Disable santizing \HTML\ while writing the buffer.
+% \HTML\ will be sanitized on \cs{VerbatimInsertBuffer}.
+% \changes{v0.913}{2023/12/07}{\pkg{fvextra}: Updated to v1.6.1.}
+% \begin{macrocode}
+\xpatchcmd{\FVB@VerbatimBuffer}
+ {\FV@Scan}
+ {\boolfalse{LWR@HTMLsanitize@tmpb@enable}\FV@Scan}
+ {}
+ {\LWR@patcherror{fvextra}{FVB@VerbatimBuffer}}
+% \end{macrocode}
+% \end{noindmacro}
+
+
+% \begin{noindmacro}{\VerbatimInsertBuffer}
+% \changes{v0.913}{2023/12/28}{\pkg{fvextra}: Updated to v1.6.1.}
+% \begin{macrocode}
+\renewcommand{\VerbatimInsertBuffer}[1][]{%
+ \begingroup
+ \def\FV@KeyValues{#1}%
+ \def\FV@Scan{%
+ \FV@CatCodes
+ \xdef\FV@EnvironName{Verbatim}%
+ \ifnum\expandafter\value\expandafter{\FV@bufferlengthname}=\z@\relax
+ \PackageError{fvextra}%
+ {Buffer length counter \FV@bufferlengthname\space is invalid or zero}%
+ {}%
+ \let\FV@GetLine\relax
+ \fi
+ \FV@GetLine}%
+ \let\FV@CheckScan\relax
+ \setcounter{FancyVerbBufferIndex}{1}%
+ \def\VerbatimInsertBuffer@def@FV@Line##1{%
+ \FVExtraRetokenizeVArg{\def\FV@Line}{}{##1}%
+ \LetLtxMacro\tmpb\FV@Line% lwarp
+ \LWR@HTMLsanitize@tmpb% lwarp
+ \LetLtxMacro\FV@Line\tmpb% lwarp
+ }%
+ \def\FancyVerbGetLine{%
+ \ifnum\value{FancyVerbBufferIndex}>%
+ \expandafter\value\expandafter{\FV@bufferlengthname}\relax
+ \global\let\FV@EnvironName\relax
+ \let\next\relax
+ \else
+ \ifcsname \FancyVerbBufferLineName\arabic{FancyVerbBufferIndex}\endcsname
+ \expandafter\let\expandafter\FV@Line@Buffer
+ \csname\FancyVerbBufferLineName\arabic{FancyVerbBufferIndex}\endcsname
+ \expandafter\VerbatimInsertBuffer@def@FV@Line\expandafter{\FV@Line@Buffer}%
+ \def\next{\FV@PreProcessLine\FV@GetLine}%
+ \stepcounter{FancyVerbBufferIndex}%
+ \else
+ \def\next{%
+ \PackageError{fvextra}%
+ {Buffer with line macro named
+ "\FancyVerbBufferLineName\arabic{FancyVerbBufferIndex}" does not exist}%
+ {Check bufferlinename, bufferlengthname, and globalbuffer settings}%
+ }%
+ \fi
+ \fi
+ \next}%
+ \FVB@Verbatim
+ \FVE@Verbatim
+ \setcounter{FancyVerbBufferIndex}{0}%
+ \endgroup}
+% \end{macrocode}
+% \end{noindmacro}
+
% \iffalse
%</fvextra>
% \fi
@@ -61292,7 +62490,7 @@ solid {\FancyVerbRuleColor{\LWR@origpound\LWR@tempcolor}} ; % space
% \end{macrocode}
% Start the image tag on a new line, allow \PDF\ output word wrap:
% \begin{macrocode}
- \LWR@origtilde \LWR@orignewline%
+ \LWR@orignobreakspace \LWR@orignewline%
% \end{macrocode}
% Temporarily compute \cs{linewidth}, \cs{textwidth}, \cs{textheight} arguments with a 6x9 inch size
% until the next \cs{endgroup}.
@@ -61397,9 +62595,11 @@ solid {\FancyVerbRuleColor{\LWR@origpound\LWR@tempcolor}} ; % space
%
% Create the \HTML\ reference with the graphicspath, filename, extension,
% alt tag, style, and class:
+% \changes{v0.913}{2023/11/25}{\pkg{graphics}: \bool{LWR@HTMLsanitize@tmpb@removebackslash} added.}
% \begin{macrocode}
\LWR@traceinfo{LWR@includegraphicsb: about to create href}%
- \LWR@href{\LWR@parsedfilename}%
+ \boolfalse{LWR@HTMLsanitize@tmpb@removebackslash}%
+ \LWR@href@partsanitized{\LWR@parsedfilename}%
{% start of href
\LWR@traceinfo{LWR@includegraphicsb: about to LWR@htmltag}%
\LWR@htmltag{\LWR@ig@htmltag}%
@@ -62641,13 +63841,14 @@ do not attempt to patch lwarp's version of `hyperref'.)\MessageBreak}
% \changes{v0.45}{2017/12/29}{\pkg{hyperref}: Fix: Underscore in \URL.}
% \changes{v0.52}{2018/03/26}{\pkg{hyperref}: Fix: \progcode{\#}, \progcode{\%}, \progcode{\&}, \progcode{\~}, \progcode{\_} in \URL.}
% \changes{v0.895}{2021/01/14}{Improved \HTML\ quotes.}
+% \changes{v0.913}{2023/10/01}{Improved \HTML\ sanitization.}
% \begin{macrocode}
\NewDocumentCommand{\LWR@hyperimageb}{m +m}{%
\LWR@ensuredoingapar%
- \def\LWR@templink{#1}%
- \@onelevel@sanitize\LWR@templink%
+ \edef\tmpb{#1}%
+ \LWR@HTMLsanitize@tmpb%
\LWR@htmltag{%
- img src=\textquotedbl\LWR@templink\textquotedbl\ %
+ img src=\textquotedbl\tmpb\textquotedbl\ %
alt=\textquotedbl#2\textquotedbl\ %
class=\textquotedbl{}hyperimage\textquotedbl%
}%
@@ -70440,13 +71641,16 @@ background:
% \changes{v0.892}{2020/10/07}{\pkg{minted}: Added.}
% \changes{v0.903}{2022/01/02}{\pkg{minted}: Updated to v2.6.}
% \changes{v0.910}{2022/12/15}{\pkg{minted}: Updated to v2.7.}
+% \changes{v0.913}{2023/11/17}{\pkg{minted}: Updated to v2.8.}
+% \changes{v0.913}{2023/11/17}{\pkg{minted}: Added \HTML\ sanitization.}
%
% \codehtml
%
% \begin{macrocode}
-\LWR@ProvidesPackagePass{minted}[2022/12/12]
+\LWR@ProvidesPackagePass{minted}[2023/09/12]
% \end{macrocode}
%
+% Several options are forced, since they are unsupported by \pkg{lwarp}.
% \begin{macrocode}
\renewcommand{\setminted}[2][]{%
\ifthenelse{\equal{#1}{}}%
@@ -70471,7 +71675,14 @@ background:
#2,
mathescape=false,breaklines,texcomments=false,highlightlines={}% lwarp
}}}
-
+% \end{macrocode}
+%
+% \bool{LWR@HTMLsanitize@tmpb@enable} is used to turn off
+% \HTML\ sanitization early in the verbatim conversion,
+% otherwise \pkg{minted} would then colorize the sanitized results,
+% breaking the \HTML\ entities in \pkg{lwarp}'s \HTML\ output.
+%
+% \begin{macrocode}
\xpatchcmd{\RobustMintInlineProcess}
{\setkeys{minted@opt@cmd}{#1}}
{%
@@ -70479,6 +71690,9 @@ background:
#1,%
mathescape=false,breaklines,texcomments=false,highlightlines={}%
}%
+ \ifbool{minted@draft}%
+ {\booltrue{LWR@HTMLsanitize@tmpb@enable}}%
+ {\boolfalse{LWR@HTMLsanitize@tmpb@enable}}%
}
{}
{\LWR@patcherror{minted}{minted}}
@@ -70490,6 +71704,9 @@ background:
#1,%
mathescape=false,breaklines,texcomments=false,highlightlines={}%
}%
+ \ifbool{minted@draft}%
+ {\booltrue{LWR@HTMLsanitize@tmpb@enable}}%
+ {\boolfalse{LWR@HTMLsanitize@tmpb@enable}}%
}
{}
{\LWR@patcherror{minted}{minted}}
@@ -70501,6 +71718,9 @@ background:
#1,%
mathescape=false,breaklines,texcomments=false,highlightlines={}%
}%
+ \ifbool{minted@draft}%
+ {\booltrue{LWR@HTMLsanitize@tmpb@enable}}%
+ {\boolfalse{LWR@HTMLsanitize@tmpb@enable}}%
}
{}
{\LWR@patcherror{minted}{minted}}
@@ -70511,33 +71731,16 @@ background:
#1,%
mathescape=false,breaklines,texcomments=false,highlightlines={}%
}%
+ \ifbool{minted@draft}%
+ {\booltrue{LWR@HTMLsanitize@tmpb@enable}}%
+ {\boolfalse{LWR@HTMLsanitize@tmpb@enable}}%
}
{}
{\LWR@patcherror{minted}{inputminted}}
+% \end{macrocode}
-
-%\xpatchcmd{\mintinline}
-% {\setkeys{minted@opt@cmd}{#1}}
-% {\setkeys{minted@opt@cmd}{%
-% #1,%
-% mathescape=false,breaklines,texcomments=false,highlightlines={}%
-% }%
-% }
-% {}
-% {\LWR@patcherror{minted}{mintinline}}
-
-%\xpatchcmd{\mint}
-% {\setkeys{minted@opt@cmd}{#1}}
-% {%
-% \setkeys{minted@opt@cmd}{%
-% #1,%
-% mathescape=false,breaklines,texcomments=false,highlightlines={}%
-% }%
-% }
-% {}
-% {\LWR@patcherror{minted}{mint}}
-
+% \begin{macrocode}
\renewenvironment{minted@snugshade*}[1]%
{%
\colorlet{shadecolor}{#1}%
@@ -70547,6 +71750,34 @@ background:
\end{snugshade*}%
}
% \end{macrocode}
+
+
+% To add sanitization during the final output,
+% adjust several characters to use \HTML\ entities
+% when loading the pygmentized results,
+% \begin{macrocode}
+\xpatchcmd{\minted@input}
+ {\input{#1}}
+ {%
+ \LWR@minted@overrides%
+ \input{#1}%
+ }
+ {}
+ {\LWR@patcherror{minted}{minted@input}}
+% \end{macrocode}
+
+% These macros are used inside the \filenm{*.pygtex} files
+% to format several individual characters.
+% These are revised to use \HTML\ entities.
+% The backquote |grave| is not supported by \pkg{pygments}.
+% \begin{macrocode}
+\newcommand*{\LWR@minted@overrides}{
+\def\PYGZam{\char`\&amp;}
+\def\PYGZlt{\char`\&lt;}
+\def\PYGZgt{\char`\&gt;}
+\def\PYGZsq{\char`\&apos;}
+}
+% \end{macrocode}
%
% \iffalse
%</minted>
@@ -71664,6 +72895,7 @@ background:
% \changes{v0.62}{2017/11/12}{\pkg{musicography}: Added.}
% \changes{v0.73}{2019/06/09}{\pkg{musicography}: Updated to 2019/05/28.
% Now supports \env{lateximage}s.}
+% \changes{v0.913}{2023/11/24}{\pkg{musicography}: Fix for \cs{musMeter}.}
%
% \codehtml
%
@@ -71706,7 +72938,7 @@ background:
\LWR@formatted{musDottedNote}
\NewDocumentCommand{\LWR@HTML@musMeter}{ m m }{%
-\begin{lateximage}*[#1/#2][#1#2]*%
+\begin{lateximage}*[#1/#2]*[#1#2]%
\musStack{#1 #2}\kern0.05em%
\end{lateximage}%
}
@@ -79766,11 +80998,12 @@ remember to convert PDF images to SVG using 'lwarpmk pdftosvg *-fig.pdf',
% \pkg{simplebnf} is patched for use by \pkg{lwarp}.
%
% \changes{v0.893}{2020/10/29}{\pkg{simplebnf}: Added.}
+% \changes{v0.913}{2023/12/08}{\pkg{simplebnf}: Updated to v1.0.0.}
%
% \codehtml
%
% \begin{macrocode}
-\LWR@ProvidesPackagePass{simplebnf}[2022/05/08]
+\LWR@ProvidesPackagePass{simplebnf}[2023-11-25]
% \end{macrocode}
%
% The entire object is placed inside a \env{lateximage} whose
@@ -79778,78 +81011,32 @@ remember to convert PDF images to SVG using 'lwarpmk pdftosvg *-fig.pdf',
% \begin{macrocode}
\ExplSyntaxOn
-\RenewDocumentEnvironment { bnfgrammar } { O{llcll} O{[^\|]\|[^\|]} O{\|\|} +b }
+\RenewDocumentEnvironment { bnf } { d() O{llcll} +b }
{
- \regex_gset:Nn \g_simplebnf_rhs_newline_r { #2 }
- \regex_gset:Nn \g_simplebnf_rhs_nb_r { #3 }
+ \begin{lateximage}[bnf:\space\detokenize{#3}]% lwarp
- %% \l__input_seq is a list of term definitions.
- \regex_split:nnN { ;; } { #4 } \l__input_seq
- \begin{center}
- \begin{lateximage}[#4]% lwarp
- \tl_set:Nn \l__table_tl
- {
- \begin{tabular}{#1}
- }
+ \IfNoValueF { #1 }
+ { \keys_set:nn { simplebnf } { #1 } }
- \bool_set_true:N \l_tmp_first_term % Is this the first term in this grammar?
- \seq_map_inline:Nn \l__input_seq
- {
- %% If not-first, add newline
- \bool_if:NTF \l_tmp_first_term
- {
- \bool_set_false:N \l_tmp_first_term
- }
- {
- \tl_put_right:Nn \l__table_tl { \\ }
- }
-
- \regex_split:nnNTF { ::= } { ##1 } \l__term_seq
- % Parse a ::= definition
- {
- %% \l__term_seq - (lhs, rhses)...
- %% \l__term_tl - lhs
- %% \l__keypairs_tl - rhses
- \seq_pop_left:NN \l__term_seq \l__term_tl
- \seq_pop_left:NN \l__term_seq \l__keypairs_tl
-
- \simplebnf_typeset_lhs:n{\l__term_tl}
- \tl_put_right:Nn \l__table_tl
- {
- & \SimpleBNFDefEq &
- }
- %% \l__keypairs_seq - (rhs:annot | rhs)...
- \regex_split:NVN \g_simplebnf_rhs_newline_r \l__keypairs_tl \l__keypairs_seq
+ \__simplebnf_build_grammar:n { #3 }
- \bool_set_true:N \l__first_rhs
- \seq_map_function:NN \l__keypairs_seq \simplebnf_typeset_rhs:n
- }
- {
- % Else, parse a \in declaration
- \regex_split:nnNTF { \c{in} } { ##1 } \l__term_seq
- {
- %% \l__term_seq - (lhs, rhs)
- \seq_pop_left:NN \l__term_seq \l_tmpa_tl
-
- \simplebnf_typeset_lhs:n{\l_tmpa_tl}
- \tl_put_right:Nn \l__table_tl
- {
- & $\in$ & $
- }
- \seq_pop_left:NN \l__term_seq \l_tmpa_tl
- \tl_put_right:NV \l__table_tl \l_tmpa_tl
- \tl_put_right:Nn \l__table_tl
- {
- $ &
- }
- }
- { \msg_error:nn {simplebnf} { Could not parser ##1 } }
- }
- }
+ \begin{@simplebnf_tblr_env}[expand=\l__simplebnf_table_tl]{#2}
+ \tl_use:N \l__simplebnf_table_tl
+ \end{@simplebnf_tblr_env}
+ \end{lateximage}% lwarp
+ }
+ { }
- \tl_put_right:Nn \l__table_tl { \end{tabular} }
- \tl_use:N \l__table_tl
- \end{lateximage}% lwarp
+\RenewDocumentEnvironment { bnfgrammar } { O{llcll} O{[^\|]\|[^\|]} O{\|\|} +b }
+ {
+ \msg_warning:nn { simplebnf } { dep }
+ \begin{center}
+ \begin{lateximage}[bnf:\space\detokenize{#4}]% lwarp
+ \begin{tabular}{#1}
+ \@dep__simplebnf_typeset_grammar:nnn { #2 } { #3 } { #4 }
+ \tl_use:N \l__simplebnf_table_tl
+ \end{tabular}
+ \end{lateximage}% lwarp
\end{center}
}
{ }
@@ -79888,8 +81075,8 @@ remember to convert PDF images to SVG using 'lwarpmk pdftosvg *-fig.pdf',
% since \cs{ensuremath} is used in the original defintions,
% and \cs{ensuremath} often has expressions which do not work well in \MathJax,
% so it is always forced to an \SVG\ image.
-% If, however, \cs{unit} is used, the result is expressed with \MathJax
-% instead of an \SVG\ image.
+% If, however, \cs{unit} is used, the result is expressed with \MathJax\ instead
+% of an \SVG\ image.
%
% \changes{v0.59}{2018/07/11}{\pkg{SIunits}: Added.}
% \changes{v0.81}{2020/02/23}{\pkg{SIunits}: Improved \cs{unit}. Fixed in math mode.
@@ -79906,6 +81093,8 @@ remember to convert PDF images to SVG using 'lwarpmk pdftosvg *-fig.pdf',
% \begin{macrocode}
\ifbool{mathjax}{
\DeclareRobustCommand{\LWR@HTML@unit}[2]{%
+ \begingroup%
+ \boolfalse{LWR@HTMLsanitize@tmpb@removebackslash}%
\LWR@subsingledollar*% lwarp
{% alt tag
\textbackslash{}unit%
@@ -79916,6 +81105,7 @@ remember to convert PDF images to SVG using 'lwarpmk pdftosvg *-fig.pdf',
{%
#1\,{#2}%
}% contents
+ \endgroup%
}
}{% not MathJax
\DeclareRobustCommand{\LWR@HTML@unit}[2]{%
@@ -80378,6 +81568,7 @@ remember to convert PDF images to SVG using 'lwarpmk pdftosvg *-fig.pdf',
%
% \changes{v0.897}{2021/05/23}{\pkg{siunitx}: Rollback for v2.}
% \changes{v0.904}{2022/02/19}{\pkg{siunitx}: Added v3.}
+% \changes{v0.913}{2023/11/24}{\pkg{siunitx}: Updated to v3.3.9.}
%
% \codehtml
%
@@ -80391,7 +81582,7 @@ remember to convert PDF images to SVG using 'lwarpmk pdftosvg *-fig.pdf',
\RequirePackage{xcolor}% for \convertcolorspec
-\LWR@ProvidesPackagePass{siunitx}[2022-02-15]
+\LWR@ProvidesPackagePass{siunitx}[2023-11-14]
\ExplSyntaxOn
% \end{macrocode}
@@ -80441,13 +81632,14 @@ remember to convert PDF images to SVG using 'lwarpmk pdftosvg *-fig.pdf',
{
\tl_set:Nn \l__siunitx_number_outputted_tl
{
+ \boolfalse{mathjax}% lwarp
\LWR@subsingledollar{% lwarp
- \textbackslash( % space
+ \textbackslash( % space lwarp ALT text
\LWR@HTMLsanitizedetokenized{%
\detokenize{#1}%
} \textbackslash)% lwarp
}%
- {siunitx unparsed}%
+ {siunitx unparsed}% lwarp add'l hashing
{\ensuremath{#1}}% lwarp
}
}
@@ -80463,13 +81655,14 @@ remember to convert PDF images to SVG using 'lwarpmk pdftosvg *-fig.pdf',
\tl_if_blank:nF {#1}
{ \seq_put_right:Nn \l__siunitx_compound_tmp_seq
{
+ \boolfalse{mathjax}% lwarp
\LWR@subsingledollar{% lwarp
- \textbackslash( % space
+ \textbackslash( % space lwarp ALT tag
\LWR@HTMLsanitizedetokenized{%
\detokenize{#1}%
} \textbackslash)% lwarp
}%
- {siunitx unparsed}%
+ {siunitx unparsed}% lwarp add'l hashing
{\ensuremath{#1}}% lwarp
}
}
@@ -80477,60 +81670,79 @@ remember to convert PDF images to SVG using 'lwarpmk pdftosvg *-fig.pdf',
% \end{macrocode}
%
%
+% \begin{noindmacro}{\LWR@siunitx@mathrm} \marg{text}
+%
+% If in text mode, use \cs{textrm} instead.
+% Avoids crashing while using \cs{mathrm} in text mode.
+% \begin{macrocode}
+\LetLtxMacro\LWR@siunitx@orig@mathrm\mathrm
+
+\newcommand*{\LWR@siunitx@mathrm}[1]{%
+ \ifmmode{\LWR@siunitx@orig@mathrm{#1}}\else{#1}\fi%
+}
+% \end{macrocode}
+% \end{noindmacro}
+%
% If not in a \env{lateximage}, always use text mode.
% Ignore current text font if resetting text family, series, and shape.
% \begin{macrocode}
\cs_set_protected:Npn \__siunitx_print_aux:nn #1#2
{
- \tl_if_empty:cTF { l__siunitx_print_ #1 _color_tl }
- { \use:n }
- { \exp_args:Nv \textcolor { l__siunitx_print_ #1 _color_tl } }
- {
- \ifnumcomp{\value{LWR@lateximagedepth}}{>}{0}% lwarp
- {
- \use:c
- {
- siunitx_print_
- \tl_use:c { l__siunitx_print_ #1 _mode_tl } :n
- }
- {#2}
- }
+ \LetLtxMacro\mathrm\LWR@siunitx@mathrm% lwarp
+ \tl_if_empty:oF {#2}
+ {
+ \tl_if_empty:cTF { l__siunitx_print_ #1 _color_tl }
+ { \use:n }
+ { \exp_args:Nv \textcolor { l__siunitx_print_ #1 _color_tl } }
{
- \bool_lazy_all:nTF% lwarp
- {
- {\l__siunitx_print_text_family_bool}
- {\l__siunitx_print_text_series_bool}
- {\l__siunitx_print_text_shape_bool}
- }
- {% No font control if reset-text-family/series/shape
- \use:c
- {
- siunitx_print_% lwarp
- text% lwarp
- :n% lwarp
- }% lwarp
- {#2}% lwarp
- }
- {
- \LWR@textcurrentfont{% lwarp
+ \ifnumcomp{\value{LWR@lateximagedepth}}{>}{0}% lwarp
+ {
+ \use:c
+ {
+ siunitx_print_
+ \tl_use:c { l__siunitx_print_ #1 _mode_tl } :n
+ }
+ {#2}
+ }
+ {
+ \bool_lazy_all:nTF% lwarp
+ {
+ {\l__siunitx_print_text_family_bool}
+ {\l__siunitx_print_text_series_bool}
+ {\l__siunitx_print_text_shape_bool}
+ }
+ {% No font control if reset-text-family/series/shape
\use:c
{
- siunitx_print_% lwarp
- text% lwarp
- :n% lwarp
- }% lwarp
- {#2}% lwarp
+ siunitx_print_% lwarp
+ text% lwarp
+ :n% lwarp
+ }% lwarp
+ {#2}% lwarp
}
- }
+ {
+ \LWR@textcurrentfont{% lwarp
+ \use:c
+ {
+ siunitx_print_% lwarp
+ text% lwarp
+ :n% lwarp
+ }% lwarp
+ {#2}% lwarp
+ }
+ }
+ }
}
- }
- }
+ }
+}
% \end{macrocode}
%
%
% To determine whether to make a complex root be italic or upright,
% \cs{l\_\_siunitx\_complex\_output\_root\_tl} is compared to
-% \cs{LWR@siunitx@complexrm<i/j>}, and the \CSS\ style is set appropriately.
+% \cs{LWR@siunitx@complexrm<i/j>}, and the \CSS\ style for i,j is set
+% to |ijit| or |ijup|.
+% \changes{v0.913}{2023/11/24}{\pkg{siunitx}: \CSS\ for complex number i,j.}
% \begin{macrocode}
\newcommand*{\LWR@siunitx@complexrootstyle}{textrm}
@@ -80538,21 +81750,21 @@ remember to convert PDF images to SVG using 'lwarpmk pdftosvg *-fig.pdf',
\newcommand*{\LWR@siunitx@complexrmj}{\mathrm{j}}
\newcommand*{\LWR@siunitx@setcomplexroot}{%
- \renewcommand*{\LWR@siunitx@complexrootstyle}{textit}%
+ \renewcommand*{\LWR@siunitx@complexrootstyle}{ijit}%
\ifdefequal{\l__siunitx_complex_output_root_tl}{\LWR@siunitx@complexrmi}%
- {\renewcommand*{\LWR@siunitx@complexrootstyle}{textrm}}%
+ {\renewcommand*{\LWR@siunitx@complexrootstyle}{ijup}}%
{}%
\ifdefequal{\l__siunitx_complex_output_root_tl}{\LWR@siunitx@complexrmj}%
- {\renewcommand*{\LWR@siunitx@complexrootstyle}{textrm}}%
+ {\renewcommand*{\LWR@siunitx@complexrootstyle}{ijup}}%
{}%
}
% \end{macrocode}
%
% \begin{macrocode}
-\cs_set_protected:Npn \__siunitx_complex_format_auxii:n #1
+\cs_set_protected:Npn \__siunitx_complex_format_cartesian_auxii:n #1
{
\LWR@siunitx@setcomplexroot% lwarp
- \__siunitx_complex_format_units:n {#1}
+ \__siunitx_complex_format_cartesian_units:n {#1}
\tl_if_empty:NF \l__siunitx_complex_real_tl
{ \exp_after:wN \__siunitx_complex_drop_exponent:nnnnnnn \l__siunitx_complex_real_tl }
\exp_after:wN \__siunitx_complex_format_sign:nnnnnnn \l__siunitx_complex_img_tl
@@ -80763,13 +81975,14 @@ remember to convert PDF images to SVG using 'lwarpmk pdftosvg *-fig.pdf',
{ \__siunitx_quantity_parsed:nn {#1} {#2} }
{
\tl_set:Nn \l__siunitx_quantity_number_tl {
+ \boolfalse{mathjax}% lwarp
\LWR@subsingledollar{% lwarp
- \textbackslash( % space
+ \textbackslash( % space lwaro ALT tag
\LWR@HTMLsanitizedetokenized{%
\detokenize{#1}%
} \textbackslash)% lwarp
}%
- {siunitx unparsed}%
+ {siunitx unparsed}% lwarp add'l hashing
{\ensuremath{#1}}% lwarp
}
\siunitx_unit_format:nN {#2} \l__siunitx_quantity_unit_tl
@@ -85536,7 +86749,7 @@ remember to convert PDF images to SVG using 'lwarpmk pdftosvg *-fig.pdf',
% \codehtml
%
% \begin{macrocode}
-\LWR@ProvidesPackagePass{tcolorbox}[2023/02/12]
+\LWR@ProvidesPackagePass{tcolorbox}[2023/06/19]
% \end{macrocode}
%
% \begin{macrocode}
@@ -91741,8 +92954,8 @@ remember to convert PDF images to SVG using 'lwarpmk pdftosvg *-fig.pdf',
\newcommand*{\LWR@currenttextcolorstyle}{%
\LWR@findcurrenttextcolor%
\ifdefstring{\LWR@tempcolor}{000000}%
- {}%
- {color: \LWR@origpound\LWR@tempcolor ; }%
+ {}%
+ {color: \LWR@origpound\LWR@tempcolor ; }%
}
% \end{macrocode}
% \end{noindmacro}
@@ -92138,90 +93351,6 @@ remember to convert PDF images to SVG using 'lwarpmk pdftosvg *-fig.pdf',
% \end{macrocode}
% \end{macro}
%
-%
-% \subsection{Row colors}
-% \changes{v0.49}{2018/02/17}{\pkg{xcolor}: Added tabular row colors.}
-% \changes{v0.79}{2020/01/18}{\pkg{xcolor}: Fix: Nested \env{tabular}s.}
-%
-% \begin{noindmacro}{\rowc@l@rs} \oarg{cmds} \marg{startrow} \marg{odd color} \marg{even color}
-% \begin{macrocode}
-\newcommand*{\LWR@xcolortempcolor}{}
-
-\def\rowc@l@rs[#1]#2#3#4%
-{%
- \rownum=1%
- \@rowcolorstrue%
- \@ifxempty{#3}%
- {\def\@oddrowcolor{\@norowcolor}}%
- {%
- \convertcolorspec{named}{#3}{HTML}\LWR@xcolortempcolor%
- \edef\@oddrowcolor{%
- \csdef{LWR@xcolorrowHTMLcolor}{\LWR@xcolortempcolor}%
- }%
- }%
- \@ifxempty{#4}%
- {\def\@evenrowcolor{\@norowcolor}}%
- {%
- \convertcolorspec{named}{#4}{HTML}\LWR@xcolortempcolor%
- \edef\@evenrowcolor{%
- \csdef{LWR@xcolorrowHTMLcolor}{\LWR@xcolortempcolor}%
- }%
- }%
- \if@rowcmd
- \def\@rowcolors
- {%
-% #1%
- \if@rowcolors
-% \noalign{%
- \relax\ifnum\rownum<#2\@norowcolor\else
- \ifodd\rownum\@oddrowcolor\else\@evenrowcolor\fi\fi%
-% }%
- \fi%
- }%
- \else
- \def\@rowcolors
- {%
- \if@rowcolors
- \ifnum\rownum<#2%
-% \noalign{%
- \@norowcolor
-% }
- \else
-% #1%
-% \noalign{%
- \ifodd\rownum\@oddrowcolor\else\@evenrowcolor\fi%
-% }%
- \fi
- \fi%
- }%
- \fi
- \ignorespaces%
-}
-% \end{macrocode}
-% \end{noindmacro}
-%
-% \begin{noindmacro}{\@norowcolor} Turns off color for this row.
-% \begin{macrocode}
-\def\@norowcolor{%
- \renewcommand{\LWR@xcolorrowHTMLcolor}{}%
-}
-% \end{macrocode}
-% \end{noindmacro}
-%
-
-% \begin{noindmacro}{\@rowc@lors} Executed at the end of each row.
-% \changes{v0.79}{2020/01/18}{\pkg{xcolor}: Fix: Nested \env{tabular}s.}
-% \begin{macrocode}
-\def\@rowc@lors{%
-% \noalign{%
- \advance\rownum\@ne%
-% }%
- \@rowcolors%
-}
-% \end{macrocode}
-% \end{noindmacro}
-%
-%
% \iffalse
%</xcolor>
% \fi
@@ -94628,13 +95757,19 @@ remember to convert PDF images to SVG using 'lwarpmk pdftosvg *-fig.pdf',
\renewcommand*{\hangsubcaption}{}
\renewcommand*{\shortsubcaption}{}
\renewcommand*{\normalsubcaption}{}
+% \end{macrocode}
+% \cs{AfterEndPreamble} now required for \env{sidecaption}.
+% \changes{v0.913}{2023/11/23}{\pkg{lwarp-patch-memoir}: Fixed change in \env{sidecaption}.}
+% \begin{macrocode}
+\AfterEndPreamble{%
\RenewDocumentEnvironment{sidecaption}{o m o}
{}
{%
\IfValueTF{#1}{\caption[#1]{#2}}{\caption{#2}}%
\IfValueT{#3}{\label{#3}}%
}
+}
% \newlength{\sidecapwidth}
% \newlength{\sidecapsep}
diff --git a/macros/latex/contrib/lwarp/lwarp.ins b/macros/latex/contrib/lwarp/lwarp.ins
index fde9f9f976..a16143215b 100644
--- a/macros/latex/contrib/lwarp/lwarp.ins
+++ b/macros/latex/contrib/lwarp/lwarp.ins
@@ -57,6 +57,7 @@ version 2005/12/01 or later.
\file{lwarp-anonchap.sty}{\from{lwarp.dtx}{anonchap}}
\file{lwarp-anysize.sty}{\from{lwarp.dtx}{anysize}}
\file{lwarp-appendix.sty}{\from{lwarp.dtx}{appendix}}
+\file{lwarp-apxproof.sty}{\from{lwarp.dtx}{apxproof}}
\file{lwarp-ar.sty}{\from{lwarp.dtx}{ar}}
\file{lwarp-arabicfront.sty}{\from{lwarp.dtx}{arabicfront}}
\file{lwarp-array.sty}{\from{lwarp.dtx}{array}}
diff --git a/macros/latex/contrib/lwarp/lwarp.pdf b/macros/latex/contrib/lwarp/lwarp.pdf
index 550c9096d7..1b5170fb92 100644
--- a/macros/latex/contrib/lwarp/lwarp.pdf
+++ b/macros/latex/contrib/lwarp/lwarp.pdf
Binary files differ
diff --git a/macros/latex/contrib/lwarp/lwarpmk.lua b/macros/latex/contrib/lwarp/lwarpmk.lua
index 1d47893217..2c1709a5b9 100755
--- a/macros/latex/contrib/lwarp/lwarpmk.lua
+++ b/macros/latex/contrib/lwarp/lwarpmk.lua
@@ -1,8 +1,8 @@
#!/usr/bin/env texlua
--- Copyright 2016-2023 Brian Dunn
+-- Copyright 2016-2024 Brian Dunn
-printversion = "v0.912"
+printversion = "v0.913"
requiredconfversion = "2" -- also at *lwarpmk.conf
function printhelp ()
diff --git a/macros/latex/contrib/morewrites/README.md b/macros/latex/contrib/morewrites/README.md
index aa31c5370a..eca82dee12 100644
--- a/macros/latex/contrib/morewrites/README.md
+++ b/macros/latex/contrib/morewrites/README.md
@@ -1,16 +1,16 @@
-Provide more writing streams in LaTeX
+Always room for a new write stream
=====================================
-* E-mail: blflatex+morewrites@gmail.com
+* E-mail: blflatex@gmail.com
* Released under the LaTeX Project Public License v1.3c or later
See http://www.latex-project.org/lppl.txt
-The morewrites LaTeX package should be used when encountering the
-`No room for a new \write ` error. This is done by redefining a
-few TeX primitives related to output.
+The morewrites package silently hooks into the TeX primitives
+responsible for writing to files to lift the restriction on
+the number of files open at the same time (16). Load the package
+with `\usepackage{morewrites}` as early as possible to avoid the
+`No room for a new \write ` error.
-This package uses the `l3kernel` bundle.
-
-This is work in progress, all suggestions/comments/bug reports
-are welcome! See https://github.com/blefloch/latex-morewrites
+Suggestions/comments/bug reports welcome at
+https://github.com/blefloch/latex-morewrites
diff --git a/macros/latex/contrib/morewrites/morewrites.dtx b/macros/latex/contrib/morewrites/morewrites.dtx
index 6e52eff394..1bd5e0f6b3 100644
--- a/macros/latex/contrib/morewrites/morewrites.dtx
+++ b/macros/latex/contrib/morewrites/morewrites.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-%% File: morewrites.dtx Copyright (C) 2011-2018 Bruno Le Floch
+%% File: morewrites.dtx Copyright (C) 2011-2024 Bruno Le Floch
%%
%% It may be distributed and/or modified under the conditions of the
%% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -28,7 +28,7 @@
% \title{The \textsf{morewrites} package: \\
% Always room for a new \tn{write}}
% \author{Bruno Le Floch}
-% \date{2018/12/29}
+% \date{2024/01/05}
%
% \maketitle
% \tableofcontents
@@ -60,11 +60,13 @@
% \item This package loads the \pkg{expl3} package, hence the
% \pkg{l3kernel} bundle needs to be up to date.
% \item This package uses an auxiliary file, \meta{job~name}|.mw|,
-% which can safely be deleted. Versions from 2015 and later will only
-% use the auxiliary file if it is originally empty, to avoid
-% destroying data (such as |.mw| files used by Maple). This means
-% that |.mw| files generated by versions before 2015 should be
-% deleted by hand.
+% which can safely be deleted. The package only overwrites this
+% auxiliary file if it is empty, and otherwise uses a modified
+% file name, obtained by adding an integer to the name (previously
+% it was obtained by appending additional copies of |.mw| to the
+% name). Such files can be safely deleted. Be careful though to
+% not delete a Maple worksheet by accident when cleaning up your
+% files.
% \item \LuaTeX{} allows $128$ \tn{write} streams, so this package does
% nothing (with a warning) when used with \LuaTeX{}.
% \end{itemize}
@@ -88,7 +90,7 @@
% \pkg{morewrites}.
% \end{function}
%
-% \begin{function}[added = 2014-07-26, updated = 2015-08-01]{file}
+% \begin{function}[added = 2014-07-26, updated = 2024-01-05]{file}
% \begin{syntax}
% \cs{morewritessetup} |{| |file| |=| \meta{file name} |}|
% \end{syntax}
@@ -100,13 +102,23 @@
% remaining.
% \end{function}
%
+% \begin{function}[added = 2024-01-05]{verbose}
+% \begin{syntax}
+% \cs{morewritessetup} |{| |verbose| |}|
+% \end{syntax}
+% This boolean option (\texttt{false} by default) makes the package
+% write to the terminal all of the operations that it performs. This
+% can render \pkg{morewrites} useful for debugging some file-writing
+% operations.
+% \end{function}
+%
% \begin{function}[updated = 2015-08-01]{\newwrite}
% This macro is redefined by \pkg{morewrites}. Since \pkg{morewrites}
% allows more than~$16$ write streams, it removes the corresponding
% restrictions in \tn{newwrite}.
% \begin{texnote}
% The revised \tn{newwrite} allocate stream numbers starting at
-% $19$. This might break some code that expects stream numbers to
+% $129$. This might break some code that expects stream numbers to
% be less than $16$.
% \end{texnote}
% \end{function}
@@ -153,10 +165,9 @@
%
%<*package>
% \begin{macrocode}
-\RequirePackage {expl3} [2018/02/21]
-\RequirePackage {primargs} [2018/12/29]
+\RequirePackage {primargs} [2024/01/05]
\ProvidesExplPackage
- {morewrites} {2018/12/29} {} {Always room for a new write}
+ {morewrites} {2024/01/05} {} {Always room for a new write}
% \end{macrocode}
%
% Quit early under \LuaTeX{}.
@@ -195,15 +206,18 @@
%
% Henceforth, ``\TeX{} stream'' will refer to stream numbers in the
% range $[0,15]$ provided to \TeX{}'s write primitives, while
-% ``user stream'' will denote stream numbers in $[0,15]\cup[19,\infty)$
+% ``user stream'' will denote stream numbers in $[0,15]\cup[129,\infty)$
% manipulated by the redefined \tn{openout}, \tn{write}, \tn{closeout},
% and \tn{newwrite}. A user stream in $[0,15]$ (reserved by \LaTeXe{}
% or allocated by \pkg{expl3}) is mapped to the same \TeX{} stream
-% number, while a user stream in $[19,\infty)$ is mapped to a \TeX{}
+% number, while a user stream in $[129,\infty)$ is mapped to a \TeX{}
% stream according to the property list (with integer keys and values)
% \cs{l_@@_write_prop}. Stream numbers $16$,
% $17$ and $18$ are unused because \tn{write}16 is often used to write
% to the terminal, and \tn{write}18 sends its argument to a shell.
+% The stream number $128$ is also often used like $16$ to avoid
+% distinguishing \LuaTeX{}. Rather than special-casing it we skip
+% directly to larger stream numbers.
%
% The primitives \tn{openout}, \tn{write}, and \tn{closeout} expect to
% be followed by an \meta{integer}, normally in the range $[0,15]$, then
@@ -313,21 +327,20 @@
%
% \subsubsection{Variants}
%
-% \begin{macro}{\prop_gpop:NVNT, \prop_gput:NVx, \tl_gput_right:Nv}
% We need these variants.
% \begin{macrocode}
\cs_generate_variant:Nn \prop_gpop:NnNT { NV }
\cs_generate_variant:Nn \prop_gput:Nnn { NVx }
\cs_generate_variant:Nn \tl_gput_right:Nn { Nv }
% \end{macrocode}
-% \end{macro}
%
% \subsubsection{Variables}
%
-% \begin{variable}{\l_@@_internal_tl}
+% \begin{variable}{\l_@@_internal_tl, \l_@@_internal_seq}
% Used for temporary scratch purposes.
% \begin{macrocode}
\tl_new:N \l_@@_internal_tl
+\seq_new:N \l_@@_internal_seq
% \end{macrocode}
% \end{variable}
%
@@ -338,6 +351,13 @@
% \end{macrocode}
% \end{variable}
%
+% \begin{variable}{\l_@@_verbose_bool}
+% When this boolean is set true, \pkg{morewrites} will print to the terminal all of the operations that it does.
+% \begin{macrocode}
+\bool_new:N \l_@@_verbose_bool
+% \end{macrocode}
+% \end{variable}
+%
% \begin{variable}{\g_@@_later_int}
% The integer \cs{g_@@_later_int} labels the various
% non-immediate operations in the order in which they appear in the
@@ -458,12 +478,25 @@
% \end{macrocode}
% \end{variable}
%
+% \subsubsection{Verbosity}
+%
+% \begin{macro}{\@@_verbose:n}
+% Messages to put in the terminal if the \texttt{verbose} option is
+% selected.
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_verbose:n #1
+ { \bool_if:NT \l_@@_verbose_bool { \iow_term:e { morewrites:~#1 } } }
+% \end{macrocode}
+% \end{macro}
+%
% \subsubsection{Helpers for auxiliary file}
%
% \begin{macro}{\@@_set_file:n}
% Sets \cs{g_@@_tmp_file_tl} to the given value (initially
-% \cs{c_sys_jobname_str}|.mw|). Mark that the file has not been
-% checked.
+% \cs{c_sys_jobname_str}|.mw|). We do not yet expand, delaying that
+% to the time where we start opening/closing the file, in case |#1|
+% contains something that has not yet been fixed. Mark that the file
+% has not been checked.
% \begin{macrocode}
\cs_new_protected:Npn \@@_set_file:n #1
{
@@ -474,7 +507,7 @@
% \end{macro}
%
% \begin{macro}{\@@_empty_file:n}
-% Empties the file \cs{g_@@_tmp_file_tl} by opening it and closing it
+% Empties a file by opening it and closing it
% right away. This is used when performing \tn{immediate}
% \tn{openout}. It is also used to ensure the file used by
% \pkg{morewrites} is left empty. We do this every time the auxiliary
@@ -483,7 +516,7 @@
\cs_new_protected:Npn \@@_empty_file:n #1
{
\@@_tex_immediate:w \@@_tex_openout:w
- \g_@@_iow = #1 \scan_stop:
+ \g_@@_iow = {#1} \scan_stop:
\@@_tex_immediate:w \@@_tex_closeout:w
\g_@@_iow
}
@@ -503,7 +536,7 @@
\prg_new_conditional:Npnn \@@_if_file_trivial:n #1 { TF }
{
\group_begin:
- \tex_openin:D \g_@@_ior = #1 \scan_stop:
+ \tex_openin:D \g_@@_ior = {#1}
\if_eof:w \g_@@_ior
\cs_gset_eq:NN \@@_tmp:w \prg_return_true:
\else:
@@ -523,22 +556,41 @@
% \end{macro}
%
% \begin{macro}{\@@_chk_file:}
-% Check that the file \cs{g_@@_tmp_file_tl} does not exist or is blank.
-% If not, try the file name obtained by adding |.mw|.
+% Expand the file name in \cs{g_@@_tmp_file_tl} once and for all.
+% Check that the file does not exist or is
+% blank. If not, try another file name obtained as follows: if it
+% ends with |.mw| pick up any number that lies just before |.mw| and
+% increment it, and otherwise just add |.mw| at the end of the file.
% This avoids clobbering files that the user would not want to lose.
% \begin{macrocode}
\cs_new_protected:Npn \@@_chk_file:
{
+ \tl_gset:Ne \g_@@_tmp_file_tl
+ { \tl_to_str:e { \g_@@_tmp_file_tl } }
\@@_if_file_trivial:nTF { \g_@@_tmp_file_tl }
{ \bool_gset_true:N \g_@@_tmp_file_bool }
{
+ \@@_chk_file_aux:
\msg_warning:nnxx { morewrites } { file-exists }
- { \g_@@_tmp_file_tl }
- { \g_@@_tmp_file_tl .mw }
- \tl_gput_right:Nn \g_@@_tmp_file_tl { .mw }
+ { \g_@@_tmp_file_tl } { \l_@@_internal_tl }
+ \tl_gset_eq:NN \g_@@_tmp_file_tl \l_@@_internal_tl
\@@_chk_file:
}
}
+\cs_new_protected:Npn \@@_chk_file_aux:
+ {
+ \regex_extract_once:nVNTF
+ { \A (\D*) (\d*) .mw \Z } \g_@@_tmp_file_tl \l_@@_internal_seq
+ {
+ \tl_set:Ne \l_@@_internal_tl
+ {
+ \seq_item:Nn \l_@@_internal_seq { 2 }
+ \int_eval:n { \seq_item:Nn \l_@@_internal_seq { 3 } + 1 }
+ .mw
+ }
+ }
+ { \tl_set:Ne \l_@@_internal_tl { \g_@@_tmp_file_tl .mw } }
+ }
\msg_new:nnnn { morewrites } { file-exists }
{ File~'#1'~exists,~using~'#2'~instead. }
{
@@ -564,7 +616,7 @@
\cs_new_protected:Npn \@@_equals_file:N #1
{
\group_begin:
- \tex_aftergroup:D \primargs_get_file_name:N
+ \tex_aftergroup:D \primargs_get_input_file_name:N
\tex_aftergroup:D #1
\primargs_remove_equals:N \group_end:
}
@@ -588,9 +640,9 @@
% \begin{macro}{\@@_user_to_tstr:NTF}
% The goal is to go from a user stream \cs{l_@@_user_int} to a \TeX{}
% stream \cs{l_@@_tstr_tl} (it defaults to the user stream). Streams
-% less than $19$ are not managed by \pkg{morewrites}: actual \TeX{}
+% less than $129$ are not managed by \pkg{morewrites}: actual \TeX{}
% streams in $[0,15]$; negative for writing to \texttt{log}; $16$,
-% $17$ for writing to terminal; $18$ for shell escape. Larger stream
+% $17$, $128$ for writing to terminal; $18$ for shell escape. Larger stream
% numbers are looked up in the property list |#1|, namely
% \cs{g_@@_write_prop}. If present, use the corresponding value as
% the \TeX{} stream, otherwise run the \texttt{false} branch.
@@ -598,7 +650,7 @@
\cs_new_protected:Npn \@@_user_to_tstr:NTF #1
{
\tl_set:NV \l_@@_tstr_tl \l_@@_user_int
- \int_compare:nNnTF { \l_@@_user_int } < { 19 }
+ \int_compare:nNnTF { \l_@@_user_int } < { 129 }
{ \use_i:nn }
{ \prop_get:NVNTF #1 \l_@@_user_int \l_@@_tstr_tl }
}
@@ -724,9 +776,10 @@
% then test for \tn{openout}, \tn{write}, and \tn{closeout}. More
% precisely we test for the marker \cs{s_@@} and run the appropriate
% code as described above. Otherwise we call the primitive, for cases
-% where the next token is \tn{pdfobj} or similar. This code performs
-% too much expansion for some nonsensical uses of \tn{noexpand} after
-% \tn{immediate}.
+% where the next token is \tn{pdfobj} or similar. In contrived
+% situations involving nonsensical uses of \tn{noexpand} after
+% \tn{immediate}, this code does not perfectly match how \TeX{}
+% expands.
% \begin{macrocode}
\cs_new_protected:Npn \@@_immediate:w
{ \primargs_read_x_token:N \@@_immediate_auxii: }
@@ -734,7 +787,11 @@
{
\token_if_eq_meaning:NNTF \g_primargs_token \s_@@
{ \@@_immediate_auxiii:N }
- { \@@_tex_immediate:w }
+ {
+ \@@_verbose:n
+ { \tl_to_str:n { \immediate } \token_to_meaning:N \g_primargs_token }
+ \@@_tex_immediate:w
+ }
}
\cs_new_protected:Npn \@@_immediate_auxiii:N #1
{ \str_if_eq:nnTF { #1 } { \s_@@ } { \use_iii:nnn } { #1 } }
@@ -746,9 +803,10 @@
%
% The \tn{openout}, \tn{write}, and \tn{closeout} primitive can be
% either delayed or immediate. In all cases they begin by looking for a
-% user stream. Here, we implement the immediate versions only.
+% user stream. In this subsubsection we implement the immediate versions
+% only.
%
-% \begin{macro}{\@@_closeout:w, \@@_closeout_now:, \@@_closeout_now:nn}
+% \begin{macro}{\@@_closeout:w, \@@_closeout_now:, \@@_closeout_now_silent:, \@@_closeout_now:nn}
% In the immediate case \cs{@@_closeout_now:}, there are three cases.
% The stream may point to a \TeX{} stream, in which case it is closed,
% removed from \cs{g_@@_write_prop}, and put back in the list of
@@ -771,6 +829,11 @@
}
\cs_new_protected:Npn \@@_closeout_now:
{
+ \@@_verbose:n { \tl_to_str:n { \immediate \closeout } \int_use:N \l_@@_user_int }
+ \@@_closeout_now_silent:
+ }
+\cs_new_protected:Npn \@@_closeout_now_silent:
+ {
\@@_user_to_tstr:NTF \g_@@_write_prop
{
\@@_tex_immediate:w \@@_tex_closeout:w \l_@@_tstr_tl \exp_stop_f:
@@ -787,7 +850,7 @@
}
\cs_new_protected:Npn \@@_closeout_now:nn #1#2
{
- \@@_tex_immediate:w \@@_tex_openout:w \g_@@_iow = #2 \scan_stop:
+ \@@_tex_immediate:w \@@_tex_openout:w \g_@@_iow = {#2}
\group_begin:
\int_set:Nn \tex_newlinechar:D { -1 }
\tl_use:c { \@@_user_tl_name:n {#1} }
@@ -798,7 +861,7 @@
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{\@@_openout:w, \@@_openout_now:n}
+% \begin{macro}{\@@_openout:w, \@@_openout_now:n, \@@_openout_now_silent:n}
% In the immediate case find a file name, then allocate a \TeX{}
% stream if possible, and otherwise point the user stream to a token
% list. In all cases, close the stream to avoid losing any material
@@ -814,18 +877,28 @@
}
\cs_new_protected:Npn \@@_openout_now:n #1
{
- \@@_closeout_now:
- \int_compare:nNnTF { \l_@@_user_int } < { 19 }
+ \@@_verbose:n
+ {
+ \tl_to_str:n { \immediate\openout }
+ \int_use:N \l_@@_user_int
+ \c_space_tl = ~ {#1}
+ }
+ \@@_openout_now_silent:n {#1}
+ }
+\cs_new_protected:Npn \@@_openout_now_silent:n #1
+ {
+ \@@_closeout_now_silent:
+ \int_compare:nNnTF { \l_@@_user_int } < { 129 }
{
\@@_tex_immediate:w \@@_tex_openout:w \l_@@_user_int
- = \tl_to_str:n {#1} \scan_stop:
+ = { \tl_to_str:n {#1} }
}
{
\seq_gpop:NNTF \g_@@_write_seq \l_@@_tstr_tl
{
\prop_gput:NVV \g_@@_write_prop \l_@@_user_int \l_@@_tstr_tl
\@@_tex_immediate:w \@@_tex_openout:w \l_@@_tstr_tl \exp_stop_f:
- = \tl_to_str:n {#1} \scan_stop:
+ = { \tl_to_str:n {#1} }
}
{
\@@_empty_file:n {#1}
@@ -854,14 +927,41 @@
\cs_new_protected:Npn \@@_write_now:w
{
\@@_user_to_tstr:NTF \g_@@_write_prop
- { \@@_tex_immediate:w \@@_tex_write:w \l_@@_tstr_tl \exp_stop_f: }
+ {
+ \int_compare:nNnT \l_@@_user_int = { 18 } { \use_iii:nnn }
+ \int_compare:nT { -1 < \l_@@_user_int < 16 }
+ {
+ \@@_verbose:n
+ {
+ \tl_to_str:n { \immediate \write }
+ \int_use:N \l_@@_user_int
+ }
+ }
+ \@@_tex_immediate:w \@@_tex_write:w \l_@@_tstr_tl \exp_stop_f:
+ }
{ \primargs_get_general_text:N \@@_write_now:n }
}
-\cs_new_protected:Npn \@@_write_now:n
+\cs_new_protected:Npn \@@_write_now:n #1
{
\prop_get:NVNTF \g_@@_write_file_prop \l_@@_user_int \l_@@_internal_tl
- { \@@_write_now_open:n }
- { \@@_tex_immediate:w \@@_tex_write:w 16 }
+ {
+ \@@_verbose:n
+ {
+ \tl_to_str:n { \immediate \write }
+ \int_use:N \l_@@_user_int
+ \tl_to_str:n { ~ {#1} }
+ }
+ \@@_write_now_open:n {#1}
+ }
+ {
+ \@@_verbose:n
+ {
+ \tl_to_str:n { \immediate \write }
+ \int_use:N \l_@@_user_int
+ \tl_to_str:n { ~ (closed) ~ {#1} }
+ }
+ \@@_tex_immediate:w \@@_tex_write:w 16 {#1}
+ }
}
% \end{macrocode}
% \end{macro}
@@ -885,14 +985,14 @@
{
\bool_if:NF \g_@@_tmp_file_bool { \@@_chk_file: }
\@@_tex_immediate:w \@@_tex_openout:w
- \g_@@_iow = \g_@@_tmp_file_tl \scan_stop:
+ \g_@@_iow = { \g_@@_tmp_file_tl }
\@@_tex_immediate:w \@@_tex_write:w
\g_@@_iow {#1}
\@@_tex_immediate:w \@@_tex_closeout:w
\g_@@_iow
\group_begin:
\int_set:Nn \tex_endlinechar:D { -1 }
- \tex_openin:D \g_@@_ior = \g_@@_tmp_file_tl \scan_stop:
+ \tex_openin:D \g_@@_ior = { \g_@@_tmp_file_tl }
\@@_write_now_loop:
\tex_closein:D \g_@@_ior
\@@_collect_gput_right:c
@@ -949,29 +1049,41 @@
%
% \begin{macro}{\@@_closeout_later:}
% If the user stream is a \TeX{} stream, use the primitive, otherwise
-% save \cs{@@_closeout_now:} for later.
+% save \cs{@@_closeout_now_silent:} for later.
% \begin{macrocode}
\cs_new_protected:Npn \@@_closeout_later:
{
- \int_compare:nNnTF \l_@@_user_int < { 19 }
+ \@@_verbose:n { \tl_to_str:n { \closeout (later) ~ } \int_use:N \l_@@_user_int }
+ \int_compare:nNnTF \l_@@_user_int < { 129 }
{ \@@_tex_closeout:w \l_@@_user_int }
- { \@@_later:n { \@@_closeout_now: } }
+ { \@@_later:n { \@@_closeout_now_silent: } }
}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@@_openout_later:w, \@@_openout_later:n}
% If the user stream is a \TeX{} stream use the primitive, otherwise
-% find a file name and call \cs{@@_openout_now:n} later.
+% find a file name and call \cs{@@_openout_now_silent:n} later.
% \begin{macrocode}
\cs_new_protected:Npn \@@_openout_later:w
{
- \int_compare:nNnTF \l_@@_user_int < { 19 }
- { \@@_tex_openout:w \l_@@_user_int }
+ \int_compare:nNnTF \l_@@_user_int < { 129 }
+ {
+ \@@_verbose:n { \tl_to_str:n { \openout (later) ~ } \int_use:N \l_@@_user_int }
+ \@@_tex_openout:w \l_@@_user_int
+ }
{ \@@_equals_file:N \@@_openout_later:n }
}
\cs_new_protected:Npn \@@_openout_later:n #1
- { \@@_later:n { \@@_openout_now:n {#1} } }
+ {
+ \@@_verbose:n
+ {
+ \tl_to_str:n { \openout (later)~ }
+ \int_use:N \l_@@_user_int
+ \c_space_tl = ~ {#1}
+ }
+ \@@_later:n { \@@_openout_now_silent:n {#1} }
+ }
% \end{macrocode}
% \end{macro}
%
@@ -982,17 +1094,32 @@
% \begin{macrocode}
\cs_new_protected:Npn \@@_write_later:w
{
- \int_compare:nNnTF \l_@@_user_int < { 19 }
- { \@@_tex_write:w \l_@@_user_int }
+ \int_compare:nNnTF \l_@@_user_int < { 129 }
+ {
+ \@@_verbose:n { \tl_to_str:n { \write (later)~ } \int_use:N \l_@@_user_int }
+ \@@_tex_write:w \l_@@_user_int
+ }
{ \primargs_get_general_text:N \@@_write_later:n }
}
\cs_new_protected:Npn \@@_write_later:n #1
- { \@@_later:n { \@@_write_later_aux:n {#1} } }
+ {
+ \@@_verbose:n
+ {
+ \tl_to_str:n { \write (later)~ }
+ \int_use:N \l_@@_user_int
+ \tl_to_str:n { ~ {#1} }
+ }
+ \@@_later:n { \@@_write_later_aux:n {#1} }
+ }
\cs_new_protected:Npn \@@_write_later_aux:n
{
\@@_user_to_tstr:NTF \g_@@_write_prop
{ \@@_tex_immediate:w \@@_tex_write:w \l_@@_tstr_tl \exp_stop_f: }
- { \@@_write_now:n }
+ {
+ \prop_get:NVNTF \g_@@_write_file_prop \l_@@_user_int \l_@@_internal_tl
+ { \@@_write_now_open:n }
+ { \@@_tex_immediate:w \@@_tex_write:w 16 \exp_stop_f: }
+ }
}
% \end{macrocode}
% \end{macro}
@@ -1022,7 +1149,7 @@
{
\bool_if:NF \g_@@_tmp_file_bool { \@@_chk_file: }
\@@_tex_immediate:w \@@_tex_openout:w
- \g_@@_iow = \g_@@_tmp_file_tl \scan_stop:
+ \g_@@_iow = { \g_@@_tmp_file_tl }
}
% \end{macrocode}
% \end{macro}
@@ -1059,7 +1186,7 @@
\tl_set:Nx \l_@@_internal_tl
{
\exp_after:wN \@@_after_shipout_loop:ww
- \tex_input:D \g_@@_tmp_file_tl \c_space_tl
+ \tex_input:D { \g_@@_tmp_file_tl }
}
\@@_empty_file:n { \g_@@_tmp_file_tl }
\exp_args:NNo
@@ -1165,7 +1292,10 @@
\cs_new_protected:Npn \@@_close_all:
{
\prop_map_inline:Nn \g_@@_write_prop
- { \@@_tex_immediate:w \@@_tex_closeout:w ##2 \scan_stop: }
+ {
+ \@@_verbose:n { \tl_to_str:n { \immediate \closeout } ##1 ~ (at~end) }
+ \@@_tex_immediate:w \@@_tex_closeout:w ##2 \scan_stop:
+ }
\prop_gclear:N \g_@@_write_prop
\prop_map_function:NN \g_@@_write_file_prop
\@@_closeout_now:nn
@@ -1197,13 +1327,16 @@
% \subsubsection{Modified \tn{newwrite}}
%
% \begin{variable}{\g_@@_alloc_write_int}
-% Counter to allocate user streams. Initialized to $18$ so that the
-% first user stream allocated by \pkg{morewrites} is $19$. Indeed,
-% $18$ is reserved for shell commands and packages may expect $16$ or
-% $17$ to write to the terminal.
+% Counter to allocate user streams. We used to initialize it to $18$
+% so that the first user stream allocated by \pkg{morewrites} was
+% $19$. Indeed, $18$ is reserved for shell commands and packages may
+% expect $16$ or $17$ to write to the terminal. This is now changed
+% to start allocation at $129$, since some packages that do not want
+% to distinguish \LuaTeX{} from other engines simply use $128$ as a
+% never-open stream.
% \begin{macrocode}
\int_new:N \g_@@_alloc_write_int
-\int_gset:Nn \g_@@_alloc_write_int { 18 }
+\int_gset:Nn \g_@@_alloc_write_int { 128 }
% \end{macrocode}
% \end{variable}
%
@@ -1265,7 +1398,8 @@
{
allocate .code:n = \@@_allocate:n {#1} ,
file .code:n = \@@_set_file:n {#1} ,
- file .initial:n = \c_sys_jobname_str .mw
+ file .initial:n = \c_sys_jobname_str .mw ,
+ verbose .bool_set:N = \l_@@_verbose_bool
}
% \end{macrocode}
% \end{macro}
diff --git a/macros/latex/contrib/morewrites/morewrites.ins b/macros/latex/contrib/morewrites/morewrites.ins
index d9e17d55e0..6cb78787a2 100644
--- a/macros/latex/contrib/morewrites/morewrites.ins
+++ b/macros/latex/contrib/morewrites/morewrites.ins
@@ -1,6 +1,6 @@
\iffalse meta-comment
-File morewrites.ins Copyright (C) 2012 Bruno Le Floch
+File morewrites.ins Copyright (C) 2012-2024 Bruno Le Floch
It may be distributed and/or modified under the conditions of the
LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -22,8 +22,8 @@ The released version of this bundle is available from CTAN.
\preamble
-Communicate any suggestions for changing this package
-to Bruno Le Floch (blflatex@gmail.com).
+Suggestions/comments/bug reports welcome at
+https://github.com/blefloch/latex-morewrites
\endpreamble
% stop docstrip adding \endinput
diff --git a/macros/latex/contrib/morewrites/morewrites.pdf b/macros/latex/contrib/morewrites/morewrites.pdf
index 4b838b6779..20632fc76d 100644
--- a/macros/latex/contrib/morewrites/morewrites.pdf
+++ b/macros/latex/contrib/morewrites/morewrites.pdf
Binary files differ
diff --git a/macros/latex/contrib/morewrites/primargs.dtx b/macros/latex/contrib/morewrites/primargs.dtx
index 5ba63d5e85..132b01e6b6 100644
--- a/macros/latex/contrib/morewrites/primargs.dtx
+++ b/macros/latex/contrib/morewrites/primargs.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-%% File: primargs.dtx Copyright (C) 2012-2018 Bruno Le Floch
+%% File: primargs.dtx Copyright (C) 2012-2024 Bruno Le Floch
%%
%% It may be distributed and/or modified under the conditions of the
%% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -25,7 +25,7 @@
% \title{The \textsf{primargs} package: \\
% Parsing arguments of primitives}
% \author{Bruno Le Floch}
-% \date{2018/12/29}
+% \date{2024/01/05}
%
% \maketitle
% \tableofcontents
@@ -167,17 +167,19 @@
% argument.
% \end{function}
%
-% \begin{function}[updated = 2017-04-10, tested = primargs004]{\primargs_get_file_name:N, \primargs_get_input_file_name:N}
+% \begin{function}[updated = 2024-01-05, tested = primargs004]{\primargs_get_file_name:N, \primargs_get_input_file_name:N}
% \begin{syntax}
% \cs{primargs_get_file_name:N} \meta{function}
% \cs{primargs_get_input_file_name:N} \meta{function}
% \end{syntax}
% Reads a \meta{file name} following the \meta{function} and calls the
% \meta{function} with this \meta{file name} as a braced argument.
-% The two functions are identical except in the \LuaTeX{} engine where
-% \cs{primargs_get_input_file_name:N} allows braced file names:
-% \LuaTeX{} allows such braced file names for some primitives (\tn{input}
-% and \tn{openin}) but not others (\tn{openout}).
+% The first function only allows for the historical unbraced file
+% names that plain \TeX{} supports. The second one also allows braced
+% file names. Historically this was first supported in \LuaTeX{} for
+% \tn{input} and related primitives, hence the name. Now all main
+% engines (in \TeX{}Live at least) support both syntaxes for all
+% primitives that take file names.
% \begin{texnote}
% When braced file names are disallowed, the file name is obtained
% by discarding \meta{optional spaces} then repeatedly doing the
@@ -250,9 +252,8 @@
%
%<*package>
% \begin{macrocode}
-\RequirePackage {expl3} [2018/02/21]
\ProvidesExplPackage
- {primargs} {2018/12/29} {} {Parsing arguments of primitives}
+ {primargs} {2024/01/05} {} {Parsing arguments of primitives}
% \end{macrocode}
%
% \begin{macrocode}
@@ -801,7 +802,7 @@
% \begin{macrocode}
\cs_new_protected:Npn \@@_get_file_name_char:
{
- \token_if_eq_charcode:NNT " \g_primargs_token
+ \token_if_eq_charcode:NNT " \g_primargs_token % "
{
\tl_gset:Nx \g_@@_file_name_level_tl
{ \int_eval:n { 1 - \g_@@_file_name_level_tl } }
@@ -828,8 +829,11 @@
% \@@_get_input_file_name_loop:, \@@_get_input_file_name_test:,
% \@@_get_input_file_name_brace:, \@@_get_input_file_name_aux:N
% }
-% For most engines this is an alias of \cs{primargs_get_file_name:N}.
-% In \LuaTeX{} we test for a catcode $1$ token (after a filler) then
+% In addition to file names detected by \cs{primargs_get_file_name:N}
+% this allows for braced file names. The weird indentation is because
+% historically we had to distinguish \LuaTeX{}, allowing braced file
+% names, from other engines.
+% We test for a catcode $1$ token (after a filler) then
% expand and collect tokens (turned to strings) one by one, counting
% begin-group and end-group tokens in \cs{g_@@_file_name_level_tl}.
% The control sequence \tn{par} is ignored. After removing a filler
@@ -837,8 +841,6 @@
% the tests are safe. We use primitives to cope with outer macro
% hidden by \tn{noexpand} upon first expansion.
% \begin{macrocode}
-\sys_if_engine_luatex:TF
- {
\cs_new_protected:Npn \primargs_get_input_file_name:N #1
{
\group_begin:
@@ -905,8 +907,6 @@
}
\@@_get_input_file_name_loop:
}
- }
- { \cs_new_eq:NN \primargs_get_input_file_name:N \primargs_get_file_name:N }
% \end{macrocode}
% \end{macro}
% \end{macro}
diff --git a/macros/latex/contrib/morewrites/primargs.pdf b/macros/latex/contrib/morewrites/primargs.pdf
index d63d7f97a2..0c3a84562a 100644
--- a/macros/latex/contrib/morewrites/primargs.pdf
+++ b/macros/latex/contrib/morewrites/primargs.pdf
Binary files differ
diff --git a/macros/latex/contrib/unbtex/README.md b/macros/latex/contrib/unbtex/README.md
index 7b8bf46c1c..61176f44e8 100644
--- a/macros/latex/contrib/unbtex/README.md
+++ b/macros/latex/contrib/unbtex/README.md
@@ -1,8 +1,8 @@
# UnBTeX: A class for bachelor, master, and doctoral thesis at the
# University of Brasilia (UnB), Brazil.
-# Version 1.4.3 2023/12/22
+# Version 1.4.4 2024/01/05
-Copyright (C) 2021-2023 by Henrique C. Ferreira <hcferreira@unb.br>
+Copyright (C) 2021-2024 by Henrique C. Ferreira <hcferreira@unb.br>
The package provides a class based on abnTeX and compatible with pdflatex
and bibtex to prepare theses for the University of Brasilia (UnB), Brazil.
@@ -92,6 +92,10 @@ Here is a history of changes:
. Keywords in English have been included on the copyright page if the
document is written in this language
. Examples of long tables and rotated tables have been included
+ 1.4.4 (2024-01-05):
+ . The pdfpages package has been used to include pages from PDF documents
+ . The sans-serif font Helvetica (helvet package) has been replaced by the
+ TeX Gyre Heros font (tgheros package)
## Overleaf
diff --git a/macros/latex/contrib/unbtex/unbtex-example.pdf b/macros/latex/contrib/unbtex/unbtex-example.pdf
index 03972cb0fb..9e44543fa5 100644
--- a/macros/latex/contrib/unbtex/unbtex-example.pdf
+++ b/macros/latex/contrib/unbtex/unbtex-example.pdf
Binary files differ
diff --git a/macros/latex/contrib/unbtex/unbtex-example.tex b/macros/latex/contrib/unbtex/unbtex-example.tex
index 909bad49ac..00082e7908 100644
--- a/macros/latex/contrib/unbtex/unbtex-example.tex
+++ b/macros/latex/contrib/unbtex/unbtex-example.tex
@@ -1,8 +1,8 @@
%%
%% UnBTeX: A class for bachelor, master, and doctoral thesis at the
%% University of Brasilia (UnB), Brazil
-%% Version 1.4.3 2023/12/22
-%% Copyright (C) 2021-2023 by Henrique C. Ferreira <hcferreira@unb.br>
+%% Version 1.4.4 2024/01/05
+%% Copyright (C) 2021-2024 by Henrique C. Ferreira <hcferreira@unb.br>
%%
%% This class file may be distributed and/or modified under the conditions
%% of the LaTeX Project Public License, either version 1.3 of this license
@@ -33,14 +33,20 @@
% Pacotes básicos (Adicione abaixo pacotes úteis para o seu trabalho)
% ---
-\RequirePackage{longtable} % Pacote para tabelas que ocupam mais de uma página
-\RequirePackage{rotating} % Pacote para girar tabelas (e outros objetos)
-\RequirePackage{pdfpages} % Pacote para incluir documentos pdf
+\usepackage{longtable} % Pacote para tabelas que ocupam mais de uma página
+\usepackage{rotating} % Pacote para girar tabelas (e outros objetos)
+\usepackage{pdfpages} % Pacote para incluir documentos pdf
% Lista na bibliografia o número das páginas que cada referência é citada
\RequirePackage[hyperpageref]{backref}
% Bibliografia nas normas da ABNT, formato autor-data
-\RequirePackage[alf,abnt-etal-list=0,abnt-etal-cite=3,abnt-emphasize=bf,bibjustif]{abntex2cite}
+\RequirePackage[
+ alf,
+ abnt-etal-list=0,
+ abnt-etal-cite=3,
+ abnt-emphasize=bf,
+ bibjustif
+ ]{abntex2cite}
\addtociteoptionlist{abnt-url-package=url}
% retira os limitadores < e > dos hiperlinks
\def\UrlLeft{}
@@ -135,11 +141,11 @@
%\instituicao[Universidade de Brasília]{Faculdade de Tecnologia}{Departamento de Engenharia Elétrica} % comente a linha acima e retire o comentário desta linha caso queira incluir o departamento da unidade acadêmica
% Use português mesmo que o trabalho seja em inglês.
-% Local e data
+% Local e data da defesa
\local{Brasília}
-\dia{22}
-\mes{dezembro}
-\ano{2023}
+\dia{5}
+\mes{janeiro}
+\ano{2024}
% Palavras-chave (pelo menos três devem ser informadas)
\pchavei{Palavra chave 1}
diff --git a/macros/latex/contrib/unbtex/unbtex-example/anexo-a.tex b/macros/latex/contrib/unbtex/unbtex-example/anexo-a.tex
index 0a90ec65eb..5af76406ce 100644
--- a/macros/latex/contrib/unbtex/unbtex-example/anexo-a.tex
+++ b/macros/latex/contrib/unbtex/unbtex-example/anexo-a.tex
@@ -81,7 +81,8 @@ Non-Western Cape & 59.9 & 46.8 & (41.9) & 8.6 & (17.2) & 44.6 & (41.0) \\
\small
\caption{Tabela rotacionada}\label{tab:rot}
\setlength\tabcolsep{3pt} % controla o espaço entre colunas
-\begin{tabular}{L{1.1cm}L{1.6cm}L{1.6cm}L{1.6cm}L{1.6cm}L{1.6cm}L{1.6cm}L{1.6cm}L{1.6cm}L{1.6cm}L{1.6cm}L{1.6cm}L{1.6cm}}\toprule
+\begin{tabular}{@{}L{1.1cm}L{1.6cm}L{1.6cm}L{1.6cm}L{1.6cm}L{1.6cm}L{1.6cm}L{1.6cm}L{1.6cm}L{1.6cm}L{1.6cm}L{1.6cm}L{1.6cm}@{}} % @{} elimina o espaço nas bordas laterais
+\toprule
Sv,ieq & 000436xa & 000594xa & 001715xa & 001932ya & 006040ya & 006263xa & 007162ya & 007257ya & IT0605ya & IT0790xa & emiliaeo-retro & emilians-retro \\ \midrule
0.4 & 2.447 & 2.177 & 2.304 & 4.921 & 4.298 & 2.121 & 3.928 & 3.478 & 3.462 & 1.751 & 0.875 & 0.525 \\
0.8 & 4.894 & 4.354 & 4.609 & 9.843 & 8.597 & 4.241 & 7.857 & 6.957 & 6.924 & 3.502 & 1.750 & 1.049 \\
diff --git a/macros/latex/contrib/unbtex/unbtex-example/anexo-b.tex b/macros/latex/contrib/unbtex/unbtex-example/anexo-b.tex
index b5ba38f064..9f2658e15a 100644
--- a/macros/latex/contrib/unbtex/unbtex-example/anexo-b.tex
+++ b/macros/latex/contrib/unbtex/unbtex-example/anexo-b.tex
@@ -2,10 +2,15 @@
\chapter{Paleta de cores UnB}\label{anx:coresunb}
% ----------------------------------------------------------
-A página a seguir foi extraída do \emph{manual de identidade visual}\footnote{Disponível em \url{http://marca.unb.br}} da UnB.
+A \cpageref{marcaunb.1}, a seguir, foi extraída do \emph{manual de identidade visual}\footnote{Disponível em \url{http://marca.unb.br}} da UnB.
+
+\newcounter{includepdfpage} % para referenciar no texto páginas pdf incluídas
\includepdf[
- pages=-, % intervalo das páginas do pdf que serão incluídas
+ pages=-, % intervalo das páginas do arquivo pdf que serão incluídas
scale=1, % controla o tamanho da página inserida
- pagecommand={\thispagestyle{simple}}, % numeração da página
+ pagecommand={\thispagestyle{simple} % imprime o número da página
+ \refstepcounter{includepdfpage} % conta a página incluída
+ \label{marcaunb.\theincludepdfpage} % marcaunb.n, n número da página
+ },
]{unbtex-example/figuras/coresunb} \cleardoublepage \ No newline at end of file
diff --git a/macros/latex/contrib/unbtex/unbtex-example/capitulo2.tex b/macros/latex/contrib/unbtex/unbtex-example/capitulo2.tex
index bb27c530fe..a453309354 100644
--- a/macros/latex/contrib/unbtex/unbtex-example/capitulo2.tex
+++ b/macros/latex/contrib/unbtex/unbtex-example/capitulo2.tex
@@ -133,6 +133,8 @@ O número do capítulo indicado é \ref{cap:exemplos}, que se inicia à
pode ser obtida também assim: \pageref{cap:exemplos}.}.
\end{verbatim}
+O pacote \textsf{cleveref} foi utilizado para fazer as remissões internas. Mais opções de uso (e de comandos) podem ser encontradas em seu manual\footnote{Disponível em \url{https://linorg.usp.br/CTAN/macros/latex/contrib/cleveref/cleveref.pdf}}.
+
% ---
\section{Referências bibliográficas}
% ---
@@ -162,11 +164,14 @@ Normalmente não há problemas em usar caracteres acentuados em arquivos bibliog
\begin{center}
\caption{Tabela de conversão de acentuação}
\label{tab:acentos}
-\begin{tabular}{ll} \toprule
-acento & bibtex \\ \midrule
-à á ã & \verb|\`a| \verb|\'a| \verb|\~a| \\
-í & \verb|{\'\i}| \\
-ç & \verb|{\c c}| \\ \bottomrule
+\begin{tabular}{llllllll} \toprule
+\multicolumn{4}{l}{acento} & \multicolumn{4}{l}{bibtex} \\ \midrule
+\`a & \'a & \~a & \^a & \verb|\`a| & \verb|\'a| & \verb|\~a| & \verb|\^a| \\
+\'e & \^e & & & \verb|\'e| & \verb|\^e| & & \\
+í & & & & \multicolumn{2}{l}{\Verb{{\'i}}} & & \\
+\'o & \~o & \^o & & \verb|\'o| & \verb|\~o| & \verb|\^o| & \\
+\'u & & & & \verb|\'u| & & & \\
+{\c c} & & & & \multicolumn{2}{l}{\Verb{{\c c}}} & & \\ \bottomrule
\end{tabular}
\end{center}
\end{table}
diff --git a/macros/latex/contrib/unbtex/unbtex-example/capitulo3.tex b/macros/latex/contrib/unbtex/unbtex-example/capitulo3.tex
index be47541a1b..f6f1aa89dc 100644
--- a/macros/latex/contrib/unbtex/unbtex-example/capitulo3.tex
+++ b/macros/latex/contrib/unbtex/unbtex-example/capitulo3.tex
@@ -56,7 +56,7 @@ CIC0090 & Estruturas de Dados & 30 & 30 & 0 & 0 & 60 & CIC0004 \\ \hline%
\caption{Um Exemplo de tabela alinhada que pode ser longa ou curta, conforme padrão IBGE}%
\label{tab:ibge}
}{%
- \begin{tabular}{ccc}
+ \begin{tabular}{@{}ccc@{}} % @{} elimina o espaço nas bordas laterais
\toprule
\textbf{Nome} & \textbf{Nascimento} & \textbf{Documento} \\ \midrule
Maria da Silva & 11/11/1111 & 111.111.111-11 \\[3pt]
@@ -177,7 +177,7 @@ Crie no Overleaf um projeto nomeado \texttt{blockdiagram} e que tenha, dentro de
\lstinputlisting[numbers=none,float,caption={\texttt{blockdiagram.tex}},label={cod:tex}]{unbtex-example/codigos/blockdiagram.tex}
-No menu do Overleaf, defina \texttt{LaTeX} como compilador e o arquivo \texttt{blockdiagram.tex} como principal. Coloque dentro do projeto o arquivo \texttt{blockdiagram.eps} e compile o projeto. A saída gerada corresponde à \cref{fig:psfrag1} e deverá ser salva como \texttt{blockdiagram.pdf}. Este arquivo poderá ser carregado no projeto do texto do trabalho (TCC, dissertação ou tese) que você estiver escrevendo com o UnB\TeX\ (que usa o \texttt{pdfLaTeX} como compilador).
+No menu do Overleaf, altere o compilador de \texttt{pdfLaTeX} para \texttt{LaTeX} e defina o arquivo \texttt{blockdiagram.tex} como principal. Coloque dentro do projeto o arquivo \texttt{blockdiagram.eps} e compile. A saída gerada, corresponde à \cref{fig:psfrag1}, deve ser salva como \texttt{blockdiagram.pdf}. Este arquivo poderá ser carregado no projeto do texto do trabalho (TCC, dissertação ou tese) que você estiver escrevendo com o UnB\TeX\ (que usa o \texttt{pdfLaTeX} como compilador).
Note no \cref{cod:tex} que o pacote \textsf{psfrag} substitui, por meio do comando
\begin{verbatim}
diff --git a/macros/latex/contrib/unbtex/unbtex-example/codigos/blockdiagram.tex b/macros/latex/contrib/unbtex/unbtex-example/codigos/blockdiagram.tex
index 0af68cc6e0..b22a71ec3e 100644
--- a/macros/latex/contrib/unbtex/unbtex-example/codigos/blockdiagram.tex
+++ b/macros/latex/contrib/unbtex/unbtex-example/codigos/blockdiagram.tex
@@ -2,7 +2,8 @@
\usepackage{stickstootext}
\usepackage[stickstoo,vvarbb]{newtxmath}
-\usepackage[scaled=0.88]{helvet}
+\usepackage[scale=0.88]{tgheros}
+\usepackage[scale=1.03]{inconsolata}
\usepackage[displaymath,tightpage]{pst-pdf}
\usepackage{psfrag}
\usepackage{icomma}
diff --git a/macros/latex/contrib/unbtex/unbtex-example/figuras/bodediagram.pdf b/macros/latex/contrib/unbtex/unbtex-example/figuras/bodediagram.pdf
index 0ae0b0048a..79d673c84f 100644
--- a/macros/latex/contrib/unbtex/unbtex-example/figuras/bodediagram.pdf
+++ b/macros/latex/contrib/unbtex/unbtex-example/figuras/bodediagram.pdf
Binary files differ
diff --git a/macros/latex/contrib/unbtex/unbtex-example/referencias.bib b/macros/latex/contrib/unbtex/unbtex-example/referencias.bib
index 6539a93470..39396ade56 100644
--- a/macros/latex/contrib/unbtex/unbtex-example/referencias.bib
+++ b/macros/latex/contrib/unbtex/unbtex-example/referencias.bib
@@ -9,7 +9,7 @@
Date-Modified = {2013-08-21 13:56:10 +0000},
Edition = {3},
Organization = {http://biblioteca.ibge.gov.br/visualizacao/livros/liv23907.pdf},
- Publisher = {Centro de Documenta{\c c}\~ao e Dissemina{\c c}\~ao de Informa{\c c}ões. Funda{\c c}\~ao Instituto Brasileiro de Geografia e Estat\'istica},
+ Publisher = {Centro de Documenta{\c c}\~ao e Dissemina{\c c}\~ao de Informa{\c c}ões. Funda{\c c}\~ao Instituto Brasileiro de Geografia e Estat{\'i}stica},
Title = {Normas de apresenta{\c c}\~ao tabular},
urldate = {2013-08-21},
Year = {1993}}
@@ -54,7 +54,7 @@
Date-Added = {2013-01-15 00:10:35 +0000},
Date-Modified = {2015-04-27 22:43:13 +0000},
Organization = {Equipe abnTeX2},
- Title = {Modelo Can\^onico de Artigo Cient\'ifico com abnTeX2},
+ Title = {Modelo Can\^onico de Artigo Cient{\'i}fico com abnTeX2},
Url = {http://www.abntex.net.br/},
Year = {2015},
Bdsk-Url-1 = {http://www.abntex.net.br/}}
@@ -65,7 +65,7 @@
Date-Added = {2013-01-15 00:05:34 +0000},
Date-Modified = {2015-04-27 22:43:18 +0000},
Organization = {Equipe abnTeX2},
- Title = {Modelo Can\^onico de Relat\'orio T\'ecnico e/ou Cient\'ifico com abnTeX2},
+ Title = {Modelo Can\^onico de Relat\'orio T\'ecnico e/ou Cient{\'i}fico com abnTeX2},
Url = {http://www.abntex.net.br/},
Year = {2015},
Bdsk-Url-1 = {http://www.abntex.net.br/}}
@@ -82,13 +82,13 @@
Bdsk-Url-1 = {http://www.abntex.net.br/}}
@mastersthesis{araujo2012,
- Address = {Bras\'ilia},
+ Address = {Bras{\'i}lia},
Author = {Lauro C\'esar Araujo},
Date-Added = {2013-01-09 11:04:42 +0000},
Date-Modified = {2013-01-09 11:04:42 +0000},
Month = {03},
- School = {Universidade de Bras\'ilia},
- Subtitle = {uma perspectiva de {A}rquitetura da {I}nforma{\c c}\~ao da {E}scola de {B}ras\'ilia},
+ School = {Universidade de Bras{\'i}lia},
+ Subtitle = {uma perspectiva de {A}rquitetura da {I}nforma{\c c}\~ao da {E}scola de {B}ras{\'i}lia},
Title = {Configura{\c c}\~ao},
Year = {2012}}
@@ -98,7 +98,7 @@
Date-Added = {2013-01-09 10:37:45 +0000},
Date-Modified = {2015-04-27 22:43:38 +0000},
Organization = {Equipe abnTeX2},
- Title = {O pacote abntex2cite: Estilos bibliogr{\'a}ficos compat{\'\i}veis com a ABNT NBR 6023},
+ Title = {O pacote abntex2cite: Estilos bibliogr{\'a}ficos compat{\'i}veis com a ABNT NBR 6023},
Url = {http://www.abntex.net.br/},
Year = {2015},
Bdsk-Url-1 = {http://www.abntex.net.br/}}
@@ -109,7 +109,7 @@
Date-Added = {2013-01-09 10:37:45 +0000},
Date-Modified = {2015-04-27 22:43:44 +0000},
Organization = {Equipe abnTeX2},
- Title = {O pacote abntex2cite: t{\'o}picos espec{\'\i}ficos da ABNT NBR 10520:2002 e o estilo bibliogr{\'a}fico alfab{\'e}tico (sistema autor-data)},
+ Title = {O pacote abntex2cite: t{\'o}picos espec{\'i}ficos da ABNT NBR 10520:2002 e o estilo bibliogr{\'a}fico alfab{\'e}tico (sistema autor-data)},
Url = {http://www.abntex.net.br/},
Year = {2015},
Bdsk-Url-1 = {http://www.abntex.net.br/}}
@@ -149,7 +149,7 @@
Date-Added = {2013-01-09 10:37:38 +0000},
Date-Modified = {2015-04-27 22:42:47 +0000},
Organization = {Equipe abnTeX2},
- Title = {A classe abntex2: Modelo can\^onico de trabalhos acad\^emicos brasileiros compat\'ivel com as normas ABNT NBR 14724:2011, ABNT NBR 6024:2012 e outras},
+ Title = {A classe abntex2: Modelo can\^onico de trabalhos acad\^emicos brasileiros compat{\'i}vel com as normas ABNT NBR 14724:2011, ABNT NBR 6024:2012 e outras},
Url = {http://www.abntex.net.br/},
Year = {2015},
Bdsk-Url-1 = {http://www.abntex.net.br/}}
@@ -291,8 +291,8 @@
Date-Added = {2012-04-23 11:35:13 +0000},
Date-Modified = {2012-04-23 11:35:13 +0000},
Keywords = {arquitetura da informa{\c c}\~ao},
- School = {Universidade de Bras\'ilia},
- Title = {Arquitetura da Informa{\c c}\~ao: aspectos epistemol\'ogicos, cient\'ificos e pr\'aticos.},
+ School = {Universidade de Bras{\'i}lia},
+ Title = {Arquitetura da Informa{\c c}\~ao: aspectos epistemol\'ogicos, cient{\'i}ficos e pr\'aticos.},
Type = {Disserta{\c c}\~ao de Mestrado},
Year = {2005}}
@@ -374,7 +374,7 @@
author = {{Wikimedia Commons}},
title = {File: {\normalfont LaTeX logo.svg}},
year = {2008},
- note = {Upload de EmilJ. Dispon\'ivel em: \url{https://upload.wikimedia.org/wikipedia/commons/9/92/LaTeX_logo.svg} -- acesso em 24 jan. 2019.}
+ note = {Upload de EmilJ. Dispon{\'i}vel em: \url{https://upload.wikimedia.org/wikipedia/commons/9/92/LaTeX_logo.svg} -- acesso em 24 jan. 2019.}
}
@misc{Castro2019,
@@ -383,7 +383,7 @@
howpublished = {\url{https://www.overleaf.com/latex/templates/modelo-de-livro-para-editora-unb/trznrgjcsyfg}},
month = {1},
year = {2019},
- note = {Dispon\'ivel como template no Overleaf}
+ note = {Dispon{\'i}vel como template no Overleaf}
}
@article{greenwade93,
diff --git a/macros/latex/contrib/unbtex/unbtex.cls b/macros/latex/contrib/unbtex/unbtex.cls
index 07bb157750..aa289ec887 100644
--- a/macros/latex/contrib/unbtex/unbtex.cls
+++ b/macros/latex/contrib/unbtex/unbtex.cls
@@ -1,8 +1,8 @@
%%
%% UnBTeX: A class for bachelor, master, and doctoral thesis at the
%% University of Brasilia (UnB), Brazil
-%% Version 1.4.3 2023/12/22
-%% Copyright (C) 2021-2023 by Henrique C. Ferreira <hcferreira@unb.br>
+%% Version 1.4.4 2024/01/05
+%% Copyright (C) 2021-2024 by Henrique C. Ferreira <hcferreira@unb.br>
%%
%% This class file may be distributed and/or modified under the conditions
%% of the LaTeX Project Public License, either version 1.3 of this license
@@ -22,7 +22,7 @@
%%
\NeedsTeXFormat{LaTeX2e}
-\ProvidesClass{unbtex}[2023/12/22 v1.4.3 Modelo da Universidade de Brasília baseado em abnTeX2]
+\ProvidesClass{unbtex}[2024/01/05 v1.4.4 Modelo da Universidade de Brasília baseado em abnTeX2]
% ---
% Repassa todos os parâmetros a classe abntex2,
@@ -53,9 +53,9 @@
% Pacotes de fontes tipográficas
% ---
\RequirePackage{stickstootext} % Fonte principal (Stix2)
-\RequirePackage[stickstoo,vvarbb]{newtxmath}
-\RequirePackage[scale=0.88]{tgheros} % Fonte sans serif
-\RequirePackage[scaled=1.03]{inconsolata} % Fonte monoespaçada
+\RequirePackage[stickstoo,vvarbb]{newtxmath}% Fonte matemática (Stix2)
+\RequirePackage[scale=0.88]{tgheros} % Fonte sans serif (TeX Gyre Heros)
+\RequirePackage[scale=1.03]{inconsolata} % Fonte monoespaçada
% ---
% ---
@@ -330,10 +330,13 @@
\theoremstyle{definition}
\mdfdefinestyle{defnSty}{hidealllines=true,backgroundcolor=azulunb!10}
\newmdtheoremenv[style=defnSty]{definition}{\dfname}[chapter]
-\newmdtheoremenv[style=defnSty]{assumption}{\asptname}[chapter]
-\newmdtheoremenv[style=defnSty]{example}{\epname}[chapter]
-\newmdtheoremenv[style=defnSty]{exercise}{\ecname}[chapter]
-\newmdtheoremenv[style=defnSty]{problem}{\pbname}[chapter]
+\newmdtheoremenv[style=defnSty]{assumption}{\aptname}[chapter]
+\newmdtheoremenv[style=defnSty]{axiom}{\axname}[chapter]
+\newmdtheoremenv[style=defnSty]{conjecture}{\cjcname}[chapter]
+\newmdtheoremenv[style=defnSty]{property}{\prpname}[chapter]
+\newmdtheoremenv[style=defnSty]{example}{\expname}[chapter]
+\newmdtheoremenv[style=defnSty]{exercise}{\excname}[chapter]
+\newmdtheoremenv[style=defnSty]{problem}{\prbname}[chapter]
\theoremstyle{remark}
\let\proof\relax
@@ -346,17 +349,22 @@
\let\endproof\relax
\newmdtheoremenv[linecolor=verdeunb,linewidth=1pt,hidealllines=false]{proof}{\proofname.}
\AtEndEnvironment{proof}{\hfill$\square$}
+\newmdtheoremenv[linecolor=azulunb,linewidth=1pt,hidealllines=false]{solution}{\sltname.}
\newcommand{\thmnameen}{
\newcommand{\thname}{Theorem}
\newcommand{\lmname}{Lemma}
\newcommand{\prname}{Proposition}
\newcommand{\crname}{Corollary}
-\newcommand{\asptname}{Assumption}
+\newcommand{\aptname}{Assumption}
\newcommand{\dfname}{Definition}
-\newcommand{\epname}{Example}
-\newcommand{\ecname}{Exercise}
-\newcommand{\pbname}{Problem}
+\newcommand{\axname}{Axiom}
+\newcommand{\cjcname}{Conjecture}
+\newcommand{\prpname}{Property}
+\newcommand{\expname}{Example}
+\newcommand{\excname}{Exercise}
+\newcommand{\prbname}{Problem}
+\newcommand{\sltname}{Solution}
\newcommand{\rmname}{Remark}
\renewcommand{\proofname}{Proof}
\renewcommand{\lstlistingname}{Code}
@@ -370,11 +378,15 @@
\newcommand{\lmname}{Lema}
\newcommand{\prname}{Proposição}
\newcommand{\crname}{Corolário}
+\newcommand{\aptname}{Hipótese}
\newcommand{\dfname}{Definição}
-\newcommand{\asptname}{Hipótese}
-\newcommand{\epname}{Exemplo}
-\newcommand{\ecname}{Exercício}
-\newcommand{\pbname}{Problema}
+\newcommand{\axname}{Axioma}
+\newcommand{\cjcname}{Conjectura}
+\newcommand{\prpname}{Propriedade}
+\newcommand{\expname}{Exemplo}
+\newcommand{\excname}{Exercício}
+\newcommand{\prbname}{Problema}
+\newcommand{\sltname}{Solução}
\newcommand{\rmname}{Observação}
\renewcommand{\proofname}{Demonstração}
\renewcommand{\lstlistingname}{Código}
diff --git a/macros/latex/contrib/unravel/README.md b/macros/latex/contrib/unravel/README.md
index 97a261e8ae..d9e74f09ed 100644
--- a/macros/latex/contrib/unravel/README.md
+++ b/macros/latex/contrib/unravel/README.md
@@ -26,9 +26,6 @@ step by step.
Some parts of TeX are not covered. In particular, category codes
are fixed for the whole argument of `\unravel` when it is read.
-This package requires up-to-date versions of the `l3kernel`,
-`l3packages` and `l3experimental` bundles.
-
The package is extracted by running `pdflatex unravel.ins`.
For the documentation, run `pdflatex unravel.dtx` twice.
diff --git a/macros/latex/contrib/unravel/unravel.dtx b/macros/latex/contrib/unravel/unravel.dtx
index d69e7a2552..b603c256c8 100644
--- a/macros/latex/contrib/unravel/unravel.dtx
+++ b/macros/latex/contrib/unravel/unravel.dtx
@@ -1,5 +1,5 @@
% \iffalse
-%% File: unravel.dtx Copyright (C) 2013, 2015, 2018-2019, 2021 Bruno Le Floch
+%% File: unravel.dtx Copyright (C) 2013, 2015, 2018-2019, 2021, 2024 Bruno Le Floch
%%
%% It may be distributed and/or modified under the conditions of the
%% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -23,9 +23,9 @@
%
% \title{The \textsf{unravel} package: \\
% watching TeX digest tokens\thanks{This
-% file has version number 0.3a, last revised 2021/05/11.}}
+% file has version number 0.3c, last revised 2024/01/05.}}
% \author{Bruno Le Floch}
-% \date{2021/05/11}
+% \date{2024/01/05}
%
% \maketitle
% \tableofcontents
@@ -208,9 +208,18 @@
% \end{function}
%
% \begin{function}{online}
-% Integer option determining where to write the output: terminal and
-% log if the option is positive, log only if the option is zero,
-% neither if the option is negative.
+% Integer option (default~$1$) determining where to write the output:
+% terminal and log if the option is positive, log only if the option
+% is zero, neither if the option is negative.
+% \end{function}
+%
+% \begin{function}{output-file}
+% Name of a file where the output is written instead of the log file.
+% Setting this option also sets \texttt{online} to zero. If
+% \texttt{online} is further modified to be positive then the output
+% is written to the terminal as well (hence inevitably to the log
+% file), while if it is made negative then the output is written
+% nowhere.
% \end{function}
%
% \begin{function}{prompt-input}
@@ -530,14 +539,9 @@
\expandafter \endgroup \@@_setup_latexe:
% \end{macrocode}
%
-% Load a few dependencies: \pkg{expl3}, \pkg{xparse}, \pkg{gtl}.
-% Load \pkg{l3str} if \pkg{expl3} is too old and does not define
-% \cs{str_range:nnn}. Otherwise loading \pkg{l3str} would give
-% an error.
+% Load the \pkg{gtl} dependency.
% \begin{macrocode}
-\RequirePackage{expl3,xparse}[2021/01/01]
-\RequirePackage{gtl}[2018/12/28]
-\csname cs_if_exist:cF\endcsname{str_range:nnn}{\RequirePackage{l3str}}
+\RequirePackage{gtl}[2024/01/04]
% \end{macrocode}
%
% Before loading \pkg{unravel}, restore catcodes, so that the implicit
@@ -554,7 +558,7 @@
{%
\csname @@_setup_restore:\endcsname
\ProvidesExplPackage
- {unravel} {2021/05/11} {0.3a} {Watching TeX digest tokens}%
+ {unravel} {2024/01/05} {0.3c} {Watching TeX digest tokens}%
\csname @@_setup_unravel:\endcsname
}%
% \end{macrocode}
@@ -661,26 +665,6 @@
% \end{macrocode}
% \end{macro}
%
-% \begin{variable}{\l_@@_exp_tl}
-% \begin{macro}{\@@_exp_args:Nx, \@@_exp_args:NNx}
-% Low-level because \cs{exp_args:Nx} redefines an internal
-% \pkg{l3expan} variable which may be appearing in code that we debug.
-% \begin{macrocode}
-\tl_new:N \l_@@_exp_tl
-\cs_new_protected:Npn \@@_exp_args:Nx #1#2
- {
- \cs_set_nopar:Npx \l_@@_exp_tl { \exp_not:N #1 {#2} }
- \l_@@_exp_tl
- }
-\cs_new_protected:Npn \@@_exp_args:NNx #1#2#3
- {
- \cs_set_nopar:Npx \l_@@_exp_tl { \exp_not:N #1 \exp_not:N #2 {#3} }
- \l_@@_exp_tl
- }
-% \end{macrocode}
-% \end{macro}
-% \end{variable}
-%
% \subsubsection{Miscellanous helpers}
%
% \begin{macro}{\@@_tmp:w}
@@ -706,7 +690,7 @@
\cs_new_protected:Npn \@@_file_get_aux:wN ##1 #1 ##2
{
\group_end:
- \tl_set:Nx ##2
+ \tl_set:Ne ##2
{ \exp_not:o {##1} \exp_not:V \@@_everyeof:w }
}
}
@@ -771,7 +755,7 @@
% \begin{macrocode}
\cs_new_protected:Npn \@@_prompt_input:Nn #1#2
{
- \clist_gset:Nx #1
+ \clist_gset:Ne #1
{ \@@_prompt_input:w \prg_do_nothing: #2 , \q_@@_recursion_tail , }
}
\cs_new:Npn \@@_prompt_input:w #1 ,
@@ -941,7 +925,7 @@
{
\group_begin:
\char_set_active_eq:nN {#1} \scan_stop:
- \use:x
+ \use:e
{
\group_end:
\exp_not:n {#2} { \char_generate:nn {#1} { 13 } }
@@ -1023,7 +1007,7 @@
{ TF }
{
\group_begin:
- \@@_exp_args:Nx \char_set_lccode:nn
+ \exp_args:Ne \char_set_lccode:nn
{ ` \exp_args:No \str_head:n { \token_to_str:N #1 } }
{ ` Z }
\tex_lowercase:D { \tl_if_eq:nnTF {#1} } { Z }
@@ -1055,7 +1039,7 @@
{
\group_begin:
\@@_set_escapechar:n { 92 }
- \tl_set:Nx \l_@@_tmpa_tl
+ \tl_set:Ne \l_@@_tmpa_tl
{ \exp_args:No \str_tail:n { \token_to_str:N #1 } }
\tl_if_empty:NTF \l_@@_tmpa_tl
{
@@ -1141,7 +1125,7 @@
\cs_new_protected:Npn \@@_prev_input_gpush_gtl:N
{ \@@_prev_input_gpush_aux:NN G }
\cs_new_protected:Npn \@@_prev_input_gpush_aux:NN #1#2
- { \seq_gput_right:Nx \g_@@_prev_input_seq { #1 { \exp_not:o {#2} } } }
+ { \seq_gput_right:Ne \g_@@_prev_input_seq { #1 { \exp_not:o {#2} } } }
% \end{macrocode}
% \end{macro}
%
@@ -1172,7 +1156,7 @@
{
\token_if_eq_meaning:NNTF #1#3
{ \tl_set:Nn }
- { \msg_error:nnnnnn { unravel } { prev-input } {#1} {#3} }
+ { \@@_error:nnnnn { prev-input } {#1} {#3} }
#2
}
% \end{macrocode}
@@ -1183,13 +1167,13 @@
% {
% \@@_prev_input_silent:n,
% \@@_prev_input_silent:V,
-% \@@_prev_input_silent:x
+% \@@_prev_input_silent:e
% }
% \begin{macro}
% {
% \@@_prev_input:n,
% \@@_prev_input:V,
-% \@@_prev_input:x
+% \@@_prev_input:e
% }
% \begin{macrocode}
\cs_new_protected:Npn \@@_prev_input_silent:n #1
@@ -1198,17 +1182,13 @@
\tl_put_right:Nn \l_@@_prev_input_tl {#1}
\@@_prev_input_gpush:N \l_@@_prev_input_tl
}
-\cs_generate_variant:Nn \@@_prev_input_silent:n { V }
-\cs_new_protected:Npn \@@_prev_input_silent:x
- { \@@_exp_args:Nx \@@_prev_input_silent:n }
+\cs_generate_variant:Nn \@@_prev_input_silent:n { V , e }
\cs_new_protected:Npn \@@_prev_input:n #1
{
\@@_prev_input_silent:n {#1}
- \@@_print_action:x { \tl_to_str:n {#1} }
+ \@@_print_action:e { \tl_to_str:n {#1} }
}
-\cs_generate_variant:Nn \@@_prev_input:n { V }
-\cs_new_protected:Npn \@@_prev_input:x
- { \@@_exp_args:Nx \@@_prev_input:n }
+\cs_generate_variant:Nn \@@_prev_input:n { V , e }
% \end{macrocode}
% \end{macro}
% \end{macro}
@@ -1248,7 +1228,7 @@
{
\@@_prev_input_gpop:N \l_@@_head_tl
\@@_prev_input_gpop:N \l_@@_tmpa_tl
- \tl_set:Nx #4 { #1 { \l_@@_tmpa_tl #2 \l_@@_head_tl #3 } }
+ \tl_set:Ne #4 { #1 { \l_@@_tmpa_tl #2 \l_@@_head_tl #3 } }
}
% \end{macrocode}
% \end{macro}
@@ -1258,6 +1238,19 @@
%
% \subsubsection{User interaction}
%
+% \begin{variable}{\g_@@_iow, \g_@@_current_output_file_tl}
+% The stream is used to implement the \texttt{output-file} option. At
+% any given time it points to the file named
+% \cs{g_@@_current_output_file_tl}, unless that is empty, in which
+% case the stream is closed. The idea is that we do not want to close
+% the file in between different \cs{unravel} calls since file writing
+% is not additive in \TeX{}.
+% \begin{macrocode}
+\iow_new:N \g_@@_iow
+\tl_new:N \g_@@_current_output_file_tl
+% \end{macrocode}
+% \end{variable}
+%
% \begin{variable}{\g_@@_before_print_state_tl, \g_@@_before_prompt_tl}
% Code to run before printing the state or before the prompt.
% \begin{macrocode}
@@ -1279,12 +1272,21 @@
% \end{macrocode}
% \end{variable}
%
+% \begin{variable}{\g_@@_current_online_int}
+% Temporary value replacing \cs{g_@@_online_int} and that can be set
+% through the prompt.
+% \begin{macrocode}
+\int_new:N \g_@@_current_online_int
+% \end{macrocode}
+% \end{variable}
+%
% \begin{variable}
% {
% \g_@@_default_explicit_prompt_bool , \g_@@_explicit_prompt_bool ,
% \g_@@_default_internal_debug_bool , \g_@@_internal_debug_bool ,
% \g_@@_default_number_steps_bool , \g_@@_number_steps_bool ,
% \g_@@_default_online_int , \g_@@_online_int ,
+% \g_@@_default_output_file_tl , \g_@@_output_file_tl ,
% \g_@@_default_prompt_input_clist , \g_@@_prompt_input_clist ,
% \g_@@_default_trace_assigns_bool , \g_@@_trace_assigns_bool ,
% \g_@@_default_trace_expansion_bool , \g_@@_trace_expansion_bool ,
@@ -1301,6 +1303,7 @@
\bool_new:N \g_@@_default_internal_debug_bool
\bool_new:N \g_@@_default_number_steps_bool
\int_new:N \g_@@_default_online_int
+\tl_new:N \g_@@_default_output_file_tl
\clist_new:N \g_@@_default_prompt_input_clist
\bool_new:N \g_@@_default_trace_assigns_bool
\bool_new:N \g_@@_default_trace_expansion_bool
@@ -1316,6 +1319,7 @@
\bool_new:N \g_@@_internal_debug_bool
\bool_new:N \g_@@_number_steps_bool
\int_new:N \g_@@_online_int
+\tl_new:N \g_@@_output_file_tl
\clist_new:N \g_@@_prompt_input_clist
\bool_new:N \g_@@_trace_assigns_bool
\bool_new:N \g_@@_trace_expansion_bool
@@ -1333,7 +1337,7 @@
%
% \begin{variable}{\g_@@_action_text_str}
% Text describing the action, displayed at each step. This should
-% only be altered through \cs{@@_set_action_text:x}, which sets the
+% only be altered through \cs{@@_set_action_text:e}, which sets the
% escape character as appropriate before converting the argument to a
% string.
% \begin{macrocode}
@@ -1478,12 +1482,13 @@
% \begin{variable}{\l_@@_defined_tl, \l_@@_defining_tl}
% The token that is defined by the prefixed command (such as
% \tn{chardef} or \tn{futurelet}), and the code to define it. We do
-% not use the the previous-input sequence to store that code: rather,
+% not use the the previous-input sequence to store that code because
% this sequence contains a string representation of the code, which is
-% not suitable for the definition. This is safe, as definitions
-% cannot be nested. This is needed for expanding assignments, as
-% expansion should be shown to the user, but then later should not be
-% performed again when defining.
+% not suitable for the definition. Using a single variable here is
+% safe, as definitions cannot be nested. This is needed for expanding
+% assignments, as expansion should be shown to the user, but then
+% later should not be performed again when defining. It is also
+% helpful in tracking some register assignments.
% \begin{macrocode}
\tl_new:N \l_@@_defined_tl
\tl_new:N \l_@@_defining_tl
@@ -1531,8 +1536,8 @@
% Used to determine if a macro has simple parameters or not.
% \begin{macrocode}
\group_begin:
- \cs_set:Npx \@@_tmp:w #1 { \c_hash_str #1 }
- \tl_const:Nx \c_@@_parameters_tl
+ \cs_set_nopar:Npe \@@_tmp:w #1 { \c_hash_str #1 }
+ \tl_const:Ne \c_@@_parameters_tl
{ ^ \tl_map_function:nN { 123456789 } \@@_tmp:w }
\group_end:
% \end{macrocode}
@@ -1612,7 +1617,7 @@
\tl_const:Nn \c_@@_over_tl { / }
\tl_const:Nn \c_@@_lq_tl { ` }
\tl_const:Nn \c_@@_rq_tl { ' }
-\tl_const:Nn \c_@@_dq_tl { " }
+\tl_const:Nn \c_@@_dq_tl { " } %"
\tl_const:Nn \c_@@_lp_tl { ( }
\tl_const:Nn \c_@@_rp_tl { ) }
\tl_const:Nn \c_@@_eq_tl { = }
@@ -1624,7 +1629,7 @@
% \begin{variable}{\c_@@_frozen_relax_gtl}
% \TeX{}'s |frozen_relax|, inserted by \cs{@@_insert_relax:}.
% \begin{macrocode}
-\gtl_const:Nx \c_@@_frozen_relax_gtl { \if_int_compare:w 0 = 0 \fi: }
+\gtl_const:Ne \c_@@_frozen_relax_gtl { \if_int_compare:w 0 = 0 \fi: }
% \end{macrocode}
% \end{variable}
%
@@ -1686,7 +1691,7 @@
% \begin{macrocode}
\cs_new_protected:Npn \@@_tex_primitive:nnn #1#2#3
{
- \tl_const:cx { c_@@_tex_#1_tl }
+ \tl_const:ce { c_@@_tex_#1_tl }
{ { \@@_tex_use:n {#2} } {#3} }
}
\cs_new_protected:Npn \@@_tex_primitive_pdf:nnn #1#2#3
@@ -2426,7 +2431,7 @@
\@@_tex_primitive:nnn { expanded } { convert } { 34 }
\sys_if_engine_luatex:T
{ \@@_tex_primitive:nnn { luaescapestring } { convert } { 35 } }
-\sys_if_engine_xetex:T
+\bool_if:nT { \sys_if_engine_xetex_p: || \sys_if_engine_ptex_p: || \sys_if_engine_uptex_p: }
{
\@@_tex_primitive:nnn { Ucharcat } { convert } { 40 }
}
@@ -2483,7 +2488,7 @@
\gtl_head_do:NN \l_@@_head_gtl \@@_get_next_aux:w
\gtl_if_tl:NTF \l_@@_head_gtl
{
- \tl_set:Nx \l_@@_head_tl
+ \tl_set:Ne \l_@@_head_tl
{ \gtl_head:N \l_@@_head_gtl }
\token_if_eq_meaning:NNT
\l_@@_head_token \@@_special_relax:
@@ -2522,7 +2527,7 @@
\tl_if_eq:onTF { \l_@@_head_tl } { \@@_unravel_marker: }
{ \@@_get_next_marker: }
{
- \@@_exp_args:NNx \use:nn \@@_notexpanded_test:w
+ \exp_args:NNe \use:nn \@@_notexpanded_test:w
{ \scan_stop: \exp_after:wN \cs_to_str:N \l_@@_head_tl Z }
\q_mark \@@_notexpanded_expand:n
#1 Z \q_mark \use_none:n
@@ -2533,12 +2538,12 @@
##1 #1 ##2 Z \q_mark ##3##4 \q_stop
{ ##3 {##2} }
}
-\exp_args:Nx \@@_tmp:w { \scan_stop: \tl_to_str:n { notexpanded: } }
+\exp_args:Ne \@@_tmp:w { \scan_stop: \tl_to_str:n { notexpanded: } }
\group_begin:
\char_set_catcode_active:n { 0 }
\cs_new_protected:Npn \@@_notexpanded_expand:n #1
{
- \@@_exp_args:Nx \tl_if_empty:nTF { \str_tail:n {#1} }
+ \exp_args:Ne \tl_if_empty:nTF { \str_tail:n {#1} }
{
\group_begin:
\char_set_lccode:nn { 0 } { `#1 }
@@ -2571,14 +2576,14 @@
{
\@@_get_next:
\tl_if_eq:onTF \l_@@_head_tl { \@@:nn }
- { \@@_error:nxxxx { nested-unravel } { } { } { } { } }
- { \@@_error:nxxxx { internal } { marker~unknown } { } { } { } }
+ { \@@_error:neeee { nested-unravel } { } { } { } { } }
+ { \@@_error:neeee { internal } { marker~unknown } { } { } { } }
\@@_input_gpop_item:NF \l_@@_argi_tl
- { \@@_error:nxxxx { internal } { marker~1 } { } { } { } }
+ { \@@_error:neeee { internal } { marker~1 } { } { } { } }
\@@_input_gpop_item:NF \l_@@_argii_tl
- { \@@_error:nxxxx { internal } { marker~2 } { } { } { } }
+ { \@@_error:neeee { internal } { marker~2 } { } { } { } }
\exp_args:Nno \keys_set:nn { unravel } \l_@@_argi_tl
- \@@_exp_args:Nx \@@_back_input:n
+ \exp_args:Ne \@@_back_input:n
{ \exp_not:N \exp_not:n { \exp_not:o \l_@@_argii_tl } }
\@@_get_next:
}
@@ -2641,22 +2646,22 @@
% \begin{macrocode}
\cs_new_protected:Npn \@@_set_cmd_aux_meaning:
{
- \tl_set:Nx \l_@@_head_meaning_tl
+ \tl_set:Ne \l_@@_head_meaning_tl
{
\exp_after:wN \@@_strip_escape:w
\token_to_meaning:N \l_@@_head_token
\tl_to_str:n { : }
}
- \tl_set:Nx \l_@@_head_meaning_tl
+ \tl_set:Ne \l_@@_head_meaning_tl
{
\exp_after:wN \@@_set_cmd_aux_meaning:w
\l_@@_head_meaning_tl \q_stop
}
}
-\use:x
+\use:e
{
\cs_new:Npn \exp_not:N \@@_set_cmd_aux_meaning:w
- ##1 \token_to_str:N : ##2 \exp_not:N \q_stop {##1}
+ #1 \token_to_str:N : #2 \exp_not:N \q_stop {#1}
}
% \end{macrocode}
% \end{macro}
@@ -2714,7 +2719,7 @@
{ \tl_to_str:n { xpandable~luacall } }
{ }
{
- \@@_error:nxxxx { unknown-primitive }
+ \@@_error:neeee { unknown-primitive }
{ \l_@@_head_meaning_tl } { } { } { }
}
}
@@ -2724,7 +2729,7 @@
{
\exp_last_unbraced:NV \@@_set_cmd_aux_primitive:nn
\c_@@_tex_relax_tl
- \@@_error:nxxxx { unknown-primitive }
+ \@@_error:neeee { unknown-primitive }
{ \l_@@_head_meaning_tl } { } { } { }
}
}
@@ -2777,7 +2782,7 @@
% \begin{macrocode}
\cs_new_protected:Npn \@@_set_cmd_aux_numeric:
{
- \tl_set:Nx \l_@@_tmpa_tl
+ \tl_set:Ne \l_@@_tmpa_tl
{
\exp_after:wN \@@_set_cmd_aux_numeric:N
\l_@@_head_meaning_tl + 0
@@ -2831,13 +2836,13 @@
% \begin{macrocode}
\cs_new_protected:Npn \@@_set_cmd_aux_char:
{
- \tl_set:Nx \l_@@_head_meaning_tl
+ \tl_set:Ne \l_@@_head_meaning_tl
{ \token_to_meaning:N \l_@@_head_token }
\token_if_eq_catcode:NNT \l_@@_head_token \c_catcode_other_token
{ \tl_set:Nn \l_@@_head_meaning_tl { other~ } }
\exp_after:wN \@@_set_cmd_aux_char:w
\l_@@_head_meaning_tl \q_stop
- \@@_exp_args:NNx \int_set:Nn \l_@@_head_char_int
+ \exp_args:NNe \int_set:Nn \l_@@_head_char_int
{ ` \@@_token_to_char:N \l_@@_head_token }
}
\cs_new_protected:Npn \@@_set_cmd_aux_char:w #1 ~ #2 \q_stop
@@ -2897,7 +2902,7 @@
% \begin{macro}{\@@_input_split:}
% If the input is completely flat, and is a token list starting with
% an |N|-type token, try to unflatten it by splitting at each
-% occurence of that first character
+% occurence of that first token.
% \begin{macrocode}
\cs_new_protected:Npn \@@_input_split:
{
@@ -2913,8 +2918,8 @@
{
\gtl_if_head_is_N_type:NT #1
{
- \tl_set:Nx \l_@@_input_tmpa_tl { \gtl_left_tl:N #1 }
- \@@_exp_args:NNx \use:nn
+ \tl_set:Ne \l_@@_input_tmpa_tl { \gtl_left_tl:N #1 }
+ \exp_args:NNe \use:nn
\@@_input_split_auxii:N
{ \tl_head:N \l_@@_input_tmpa_tl }
}
@@ -2987,7 +2992,7 @@
{
\int_compare:nNnF {#1} = 0
{
- \tl_set:Nx \l_@@_input_get_left_tl
+ \tl_set:Ne \l_@@_input_get_left_tl
{ \gtl_left_tl:c { g_@@_input_#1_gtl } }
\tl_concat:NNN #2 #2 \l_@@_input_get_left_tl
\gtl_if_tl:cT { g_@@_input_#1_gtl }
@@ -3095,7 +3100,7 @@
{
\gtl_if_tl:NTF #1
{
- \tl_put_right:Nx #2 { \gtl_left_tl:N #1 }
+ \tl_put_right:Ne #2 { \gtl_left_tl:N #1 }
\gtl_gclear:N #1
\int_gdecr:N \g_@@_input_int
\@@_input_gpop_tl_aux:N #2
@@ -3105,7 +3110,7 @@
{ \int_compare:nNnTF { \gtl_extra_end:N #1 } > 0 }
{ \use_i:nn }
{
- \tl_put_right:Nx #2 { \gtl_left_tl:N #1 }
+ \tl_put_right:Ne #2 { \gtl_left_tl:N #1 }
\gtl_gpop_left_tl:N #1
}
{
@@ -3117,7 +3122,26 @@
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{\@@_back_input:n, \@@_back_input:x}
+% \begin{macro}[TF]{\@@_input_if_head_is_group_begin:}
+% Call \cs{@@_input_if_empty:TF} to remove empty levels from the input
+% stack, then check if the left-most non-empty level starts with an
+% explicit begin-group character token.
+% \begin{macrocode}
+\prg_new_protected_conditional:Npnn \@@_input_if_head_is_group_begin: { T , F , TF }
+ {
+ \@@_input_if_empty:TF
+ { \prg_return_false: }
+ {
+ \exp_args:Nc \gtl_if_head_is_group_begin:NTF
+ { g_@@_input_ \int_use:N \g_@@_input_int _gtl }
+ { \prg_return_true: }
+ { \prg_return_false: }
+ }
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_back_input:n, \@@_back_input:V, \@@_back_input:o}
% Insert a token list back into the input. Use \cs{gtl_gclear_new:c}
% to define the gtl variable if necessary: this happens whenever a
% new largest value of \cs{g_@@_input_int} is reached.
@@ -3129,8 +3153,6 @@
\gtl_gset:cn { g_@@_input_ \int_use:N \g_@@_input_int _gtl }
}
\cs_generate_variant:Nn \@@_back_input:n { V , o }
-\cs_new_protected:Npn \@@_back_input:x
- { \@@_exp_args:Nx \@@_back_input:n }
% \end{macrocode}
% \end{macro}
%
@@ -3140,7 +3162,7 @@
\cs_new_protected:Npn \@@_back_input_gtl:N #1
{
\gtl_if_tl:NTF #1
- { \@@_back_input:x { \gtl_left_tl:N #1 } }
+ { \exp_args:Ne \@@_back_input:n { \gtl_left_tl:N #1 } }
{
\gtl_gconcat:cNc
{ g_@@_input_ \int_use:N \g_@@_input_int _gtl }
@@ -3166,10 +3188,10 @@
% \begin{macrocode}
\cs_new_protected:Npn \@@_back_input_tl_o:
{
- \tl_set:Nx \l_@@_tmpa_tl
+ \tl_set:Ne \l_@@_tmpa_tl
{ \exp_args:NV \exp_not:o \l_@@_head_tl }
\@@_back_input:V \l_@@_tmpa_tl
- \@@_print_expansion:x
+ \@@_print_expansion:e
{ \tl_to_str:N \l_@@_head_tl = \tl_to_str:N \l_@@_tmpa_tl }
}
% \end{macrocode}
@@ -3228,7 +3250,7 @@
% \@@_macro_replacement:N
% }
% \begin{macrocode}
-\use:x
+\use:e
{
\exp_not:n { \cs_new:Npn \@@_macro_split_do:NN #1 }
{
@@ -3258,20 +3280,22 @@
% \@@_macro_call_safe:,
% \@@_macro_call_quick:,
% \@@_macro_call_quick_loop:NNN,
+% \@@_macro_call_quick_loop:NN,
% \@@_macro_call_quick_runaway:Nw,
% }
% Macros are simply expanded once. We cannot determine precisely
% which tokens a macro will need for its parameters, but we know that
% it must form a balanced token list. Thus we can be safe by
% extracting the longest balanced prefix in the input and working with
-% that.
+% that. We need to check if the argument was braced, to improve the
+% error recovery for a non-\tn{long} macro receiving \tn{par}.
% \begin{macrocode}
\cs_new_protected:Npn \@@_macro_call:
{
\bool_if:NTF \g_@@_speedup_macros_bool
{
- \tl_set:Nx \l_@@_tmpa_tl
- {^ \exp_after:wN \@@_macro_parameter:N \l_@@_head_tl }
+ \tl_set:Ne \l_@@_tmpa_tl
+ { ^ \exp_after:wN \@@_macro_parameter:N \l_@@_head_tl }
\@@_tl_if_in:ooTF \c_@@_parameters_tl \l_@@_tmpa_tl
{ \@@_macro_call_quick: } { \@@_macro_call_safe: }
}
@@ -3292,16 +3316,23 @@
\cs_new_protected:Npn \@@_macro_call_quick_loop:NNN #1#2#3
{
\use_none:n #2
+ \@@_input_if_head_is_group_begin:TF
+ { \@@_macro_call_quick_loop:NN \prg_do_nothing: }
+ { \@@_macro_call_quick_loop:NN \use:n }
+ #3
+ }
+\cs_new_protected:Npn \@@_macro_call_quick_loop:NN #1#2
+ {
\@@_input_gpop_item:NF \l_@@_tmpa_tl
- { \@@_macro_call_quick_runaway:Nw #3 }
- \tl_put_right:Nx \l_@@_head_tl
- { { \exp_not:V \l_@@_tmpa_tl } }
+ { \@@_macro_call_quick_runaway:Nw #2 }
+ \tl_put_right:Ne \l_@@_head_tl
+ { #1 { \exp_not:V \l_@@_tmpa_tl } }
\@@_macro_call_quick_loop:NNN
- #3
+ #2
}
\cs_new_protected:Npn \@@_macro_call_quick_runaway:Nw #1#2 \q_stop
{
- \@@_error:nxxxx { runaway-macro-parameter }
+ \@@_error:neeee { runaway-macro-parameter }
{ \tl_to_str:N \l_@@_head_tl } { \tl_to_str:n {#1} } { } { }
}
% \end{macrocode}
@@ -3337,7 +3368,7 @@
\bool_if:NT \g_@@_internal_debug_bool
{
\@@_set_cmd:
- \@@_exp_args:Nx \iow_term:n { Exp:~\int_to_arabic:n { \l_@@_head_cmd_int } }
+ \exp_args:Ne \iow_term:n { Exp:~\int_to_arabic:n { \l_@@_head_cmd_int } }
}
\token_if_macro:NTF \l_@@_head_token
{ \@@_macro_call: }
@@ -3362,7 +3393,7 @@
{
\cs_if_exist_use:cF
{ @@_expandable_ \int_use:N \l_@@_head_cmd_int : }
- { \@@_error:nxxxx { internal } { expandable } { } { } { } }
+ { \@@_error:neeee { internal } { expandable } { } { } { } }
}
{
\@@_set_cmd_aux_unknown:
@@ -3570,7 +3601,7 @@
\quark_if_recursion_tail_stop_do:nn {#2}
{ \@@_scan_keyword_true: }
\quark_if_recursion_tail_stop_do:nn {#3}
- { \@@_error:nxxxx { internal } { odd-keyword-length } { } { } { } }
+ { \@@_error:neeee { internal } { odd-keyword-length } { } { } { } }
\@@_get_x_next:
\@@_scan_keyword_test:NNTF #2#3
{
@@ -3605,7 +3636,7 @@
\cs_new_protected:Npn \@@_scan_keyword_true:
{
\@@_prev_input_gpop_gtl:N \l_@@_tmpb_gtl
- \@@_prev_input:x { \gtl_to_str:N \l_@@_tmpb_gtl }
+ \@@_prev_input:e { \gtl_to_str:N \l_@@_tmpb_gtl }
\prg_return_true:
}
\cs_new_protected:Npn \@@_scan_keyword_false:w
@@ -3773,7 +3804,7 @@
}
\int_compare:nNnTF {#3} < { 4 }
{ \@@_thing_use_get:nnNN {#1} {#3} \l_@@_head_tl \l_@@_tmpa_tl }
- { \tl_set:Nx \l_@@_tmpa_tl { \@@_the:w \l_@@_head_tl } }
+ { \tl_set:Ne \l_@@_tmpa_tl { \@@_the:w \l_@@_head_tl } }
\@@_rescan_something_internal_auxii:Vn \l_@@_tmpa_tl {#1}
\@@_break_point:
\int_compare:nNnT {#3} < { 4 } { \@@_print_action: }
@@ -3782,7 +3813,7 @@
{
\@@_prev_input_silent:n {#1}
\@@_set_action_text:
- \@@_set_action_text:x
+ \@@_set_action_text:e
{ \g_@@_action_text_str \use:n { ~ => ~ } \tl_to_str:n {#1} }
\int_gset:Nn \g_@@_val_level_int {#2}
}
@@ -3796,8 +3827,9 @@
% This expands to a digit (the level generated by whatever token is
% the current |head|), followed by some code to fetch necessary
% operands. In most cases, this can be done by simply looking at the
-% |cmd| integer, but for |last_item|, |set_aux| and |register|, the level of the
-% token depends on the |char| integer. When the token is not allowed
+% |cmd| integer, but for |last_item|, |set_aux|, |set_shape| and
+% |register|, the level of the token, or what has to be scanned,
+% depends on the |char| integer. When the token is not allowed
% after \tn{the} (or at any other position where
% \cs{@@_rescan_something_internal:n} is called), the resulting level
% is~$8$, large enough so that the main function knows it is
@@ -3823,7 +3855,7 @@
{ 81 } { 1 } % set_page_dimen
{ 82 } { 0 } % set_page_int
{ 83 } { 1 \@@_scan_int: } % set_box_dimen
- { 84 } { 0 \@@_scan_int: } % set_shape
+ { 84 } { \@@_thing_set_shape: } % set_shape
{ 85 } { 0 \@@_scan_int: } % def_code
{ 86 } { 4 \@@_scan_int: } % def_family
{ 87 } { 4 } % set_font
@@ -3836,6 +3868,8 @@
}
\cs_new:Npn \@@_thing_set_aux:
{ \int_compare:nNnTF \l_@@_head_char_int = { 1 } { 1 } { 0 } }
+\cs_new:Npn \@@_thing_set_shape:
+ { \int_compare:nNnTF \l_@@_head_char_int = 0 { 0 } { 0 \@@_scan_int: } }
\cs_new:Npn \@@_thing_last_item:
{
\int_compare:nNnTF \l_@@_head_char_int < { 26 }
@@ -3910,7 +3944,7 @@
{
\int_compare:nNnT {#1} = { 3 }
{ \@@_tex_error:nV { incompatible-units } #3 }
- \tl_set:Nx #4
+ \tl_set:Ne #4
{
\int_case:nn { \int_min:nn {#1} {#2} }
{
@@ -3924,12 +3958,12 @@
{
\int_case:nnF {#1}
{
- { 0 } { \tl_set:Nx #4 { \int_eval:n {#3} } }
- { 3 } { \tl_set:Nx #4 { \muskip_eval:n {#3} } }
+ { 0 } { \tl_set:Ne #4 { \int_eval:n {#3} } }
+ { 3 } { \tl_set:Ne #4 { \muskip_eval:n {#3} } }
}
{
\@@_tex_error:nV { incompatible-units } #3
- \tl_set:Nx #4 { \muskip_eval:n { \tex_gluetomu:D #3 } }
+ \tl_set:Ne #4 { \muskip_eval:n { \tex_gluetomu:D #3 } }
}
}
}
@@ -3950,7 +3984,7 @@
\cs_new_protected:Npn \@@_scan_expr_op:NN #1#2
{
\@@_get_x_non_blank:
- \tl_case:NnF \l_@@_head_tl
+ \token_case_meaning:NnF \l_@@_head_tl
{
\c_@@_plus_tl
{
@@ -4049,7 +4083,7 @@
}
\cs_new_protected:Npn \@@_scan_int_char:
{
- \tl_case:NnF \l_@@_head_tl
+ \token_case_meaning:NnF \l_@@_head_tl
{
\c_@@_lq_tl { \@@_scan_int_lq: }
\c_@@_rq_tl
@@ -4062,7 +4096,7 @@
{
\@@_prev_input:V \l_@@_head_tl
\@@_get_x_next:
- \@@_scan_int_explicit:Nn \c_false_bool { " }
+ \@@_scan_int_explicit:Nn \c_false_bool { " } % "
}
}
{ \@@_scan_int_explicit:Nn \c_false_bool { } }
@@ -4072,13 +4106,13 @@
\@@_get_next:
\@@_gtl_if_head_is_definable:NF \l_@@_head_gtl
{
- \tl_set:Nx \l_@@_head_tl
+ \tl_set:Ne \l_@@_head_tl
{ \@@_token_to_char:N \l_@@_head_token }
}
- \tl_set:Nx \l_@@_tmpa_tl
+ \tl_set:Ne \l_@@_tmpa_tl
{ \int_eval:n { \exp_after:wN ` \l_@@_head_tl } }
\@@_prev_input_silent:V \l_@@_tmpa_tl
- \@@_print_action:x
+ \@@_print_action:e
{ ` \gtl_to_str:N \l_@@_head_gtl = \l_@@_tmpa_tl }
\@@_skip_optional_space:
}
@@ -4314,7 +4348,7 @@
\@@_gtl_if_head_is_definable:NTF \l_@@_head_gtl
{ \@@_back_input: }
{
- \tl_set:Nx \l_@@_tmpa_tl
+ \tl_set:Ne \l_@@_tmpa_tl
{ \@@_token_to_char:N \l_@@_head_token }
\tl_if_eq:NNT \l_@@_tmpa_tl \c_@@_dq_tl
{
@@ -4363,7 +4397,7 @@
\@@_prev_input_gpush:
\@@_scan_toks:NN \c_false_bool \c_true_bool
\@@_prev_input_gpop:N \l_@@_tmpa_tl
- \@@_prev_input_silent:x
+ \@@_prev_input_silent:e
{ { \exp_after:wN \tl_to_str:n \l_@@_tmpa_tl } }
}
% \end{macrocode}
@@ -4376,7 +4410,7 @@
\@@_prev_input_gpush:
\@@_scan_toks:NN \c_false_bool \c_true_bool
\@@_prev_input_gpop:N \l_@@_tmpa_tl
- \@@_prev_input_silent:x
+ \@@_prev_input_silent:e
{ { \exp_not:N \exp_not:n \exp_not:V \l_@@_tmpa_tl } }
}
% \end{macrocode}
@@ -4440,7 +4474,7 @@
\@@_error:nnnnn { runaway-text } { } { } { } { }
\@@_exit_hard:w
}
- \tl_set:Nx \l_@@_head_tl { { \exp_not:V \l_@@_head_tl } }
+ \tl_set:Ne \l_@@_head_tl { { \exp_not:V \l_@@_head_tl } }
\bool_if:NT #1
{ \tl_put_right:NV \l_@@_defining_tl \l_@@_head_tl }
\@@_prev_input_silent:V \l_@@_head_tl
@@ -4467,7 +4501,7 @@
\@@_prev_input_gtl:N \l_@@_head_gtl
\@@_scan_group_x:n { 1 }
\@@_prev_input_gpop_gtl:N \l_@@_tmpb_gtl
- \@@_prev_input_silent:x
+ \@@_prev_input_silent:e
{ \gtl_left_tl:N \l_@@_tmpb_gtl }
}
}
@@ -4498,7 +4532,7 @@
}
{
\@@_prev_input_silent:V \l_@@_head_tl
- \tl_put_right:Nx \l_@@_defining_tl
+ \tl_put_right:Ne \l_@@_defining_tl
{ \exp_not:N \exp_not:N \exp_not:V \l_@@_head_tl }
\@@_scan_group_xdef:n {#1}
}
@@ -4625,7 +4659,7 @@
\@@_back_input:
\@@_error:nnnnn { missing-box } { } { } { } { }
\@@_prev_input_gpop:N \l_@@_head_tl
- \@@_print_action:x { \tl_to_str:N \l_@@_head_tl }
+ \@@_print_action:e { \tl_to_str:N \l_@@_head_tl }
}
% \end{macrocode}
% \end{macro}
@@ -4675,7 +4709,7 @@
{ \@@_prepare_mag: }
\tl_use:N \l_@@_head_tl \scan_stop:
\gtl_gput_right:NV \g_@@_output_gtl \l_@@_head_tl
- \@@_print_action:x { \tl_to_str:N \l_@@_head_tl }
+ \@@_print_action:e { \tl_to_str:N \l_@@_head_tl }
}
}
% \end{macrocode}
@@ -4698,7 +4732,7 @@
\@@_back_input:
\@@_error:nnnnn { improper-leaders } { } { } { } { }
\@@_prev_input_gpop:N \l_@@_head_tl
- \@@_print_action:x { \tl_to_str:N \l_@@_head_tl }
+ \@@_print_action:e { \tl_to_str:N \l_@@_head_tl }
}
}
% \end{macrocode}
@@ -4729,7 +4763,7 @@
{ \@@_box_hook:N \tex_everyvbox:D }
\@@_scan_spec:
\@@_prev_input_gpop:N \l_@@_head_tl
- \@@_set_action_text:x
+ \@@_set_action_text:e
{ \tl_to_str:N \l_@@_head_tl \iow_char:N \{ }
\seq_push:Nf \l_@@_leaders_box_seq
{ \bool_if:NTF #1 { \mode_if_vertical:TF { v } { h } } { Z } }
@@ -4755,7 +4789,7 @@
\str_if_eq:eeF
{ \tl_head:N \l_@@_tmpa_tl } { \exp_not:N \@@_box_hook:w }
{
- \@@_exp_args:Nx #1
+ \exp_args:Ne #1
{
\exp_not:n { \@@_box_hook:w \prg_do_nothing: }
\exp_not:V #1
@@ -4768,7 +4802,7 @@
\gtl_clear:N \l_@@_after_group_gtl
\@@_print_action:
\@@_back_input:o {##1}
- \@@_set_action_text:x
+ \@@_set_action_text:e
{ \token_to_meaning:N #1 = \tl_to_str:o {##1} }
\tl_if_empty:oF {##1} { \@@_print_action: }
}
@@ -4812,33 +4846,31 @@
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{\@@_char:n, \@@_char:V, \@@_char:x}
+% \begin{macro}{\@@_char:n, \@@_char:V, \@@_char:e}
% \begin{macrocode}
\cs_new_protected:Npn \@@_char:n #1
{
\tex_char:D #1 \scan_stop:
\@@_charcode_if_safe:nTF {#1}
{
- \tl_set:Nx \l_@@_tmpa_tl { \char_generate:nn {#1} { 12 } }
+ \tl_set:Ne \l_@@_tmpa_tl { \char_generate:nn {#1} { 12 } }
\gtl_gput_right:NV \g_@@_output_gtl \l_@@_tmpa_tl
- \@@_print_action:x { \tl_to_str:N \l_@@_tmpa_tl }
+ \@@_print_action:e { \tl_to_str:N \l_@@_tmpa_tl }
}
{
- \tl_set:Nx \l_@@_tmpa_tl
+ \tl_set:Ne \l_@@_tmpa_tl
{ \exp_not:N \char \int_eval:n {#1} ~ }
\gtl_gput_right:NV \g_@@_output_gtl \l_@@_tmpa_tl
- \@@_print_action:x
+ \@@_print_action:e
{ " \char_generate:nn {#1} { 12 } " = \tl_to_str:N \l_@@_tmpa_tl }
}
}
-\cs_generate_variant:Nn \@@_char:n { V }
-\cs_new_protected:Npn \@@_char:x
- { \@@_exp_args:Nx \@@_char:n }
+\cs_generate_variant:Nn \@@_char:n { V , e }
% \end{macrocode}
% \end{macro}
%
% \begin{macro}
-% {\@@_char_in_mmode:n, \@@_char_in_mmode:V, \@@_char_in_mmode:x}
+% {\@@_char_in_mmode:n, \@@_char_in_mmode:V, \@@_char_in_mmode:e}
% \begin{macrocode}
\cs_new_protected:Npn \@@_char_in_mmode:n #1
{
@@ -4847,30 +4879,27 @@
{ % math active
\@@_active_do:nn {#1} { \gtl_set:Nn \l_@@_head_gtl }
\@@_back_input:
- \@@_print_action:x
+ \@@_print_action:e
{ \char_generate:nn {#1} { 12 } ~ active }
}
{ \@@_char:n {#1} }
}
-\cs_generate_variant:Nn \@@_char_in_mmode:n { V }
-\cs_new_protected:Npn \@@_char_in_mmode:x
- { \@@_exp_args:Nx \@@_char_in_mmode:n }
+\cs_generate_variant:Nn \@@_char_in_mmode:n { V , e }
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{\@@_mathchar:n, \@@_mathchar:x}
+% \begin{macro}{\@@_mathchar:n, \@@_mathchar:e}
% ^^A todo: \omathchar support
% \begin{macrocode}
\cs_new_protected:Npn \@@_mathchar:n #1
{
\tex_mathchar:D #1 \scan_stop:
- \tl_set:Nx \l_@@_tmpa_tl
- { \exp_not:N \mathchar " \int_to_hex:n {#1} ~ }
+ \tl_set:Ne \l_@@_tmpa_tl
+ { \exp_not:N \mathchar " \int_to_hex:n {#1} ~ } % "
\gtl_gput_right:NV \g_@@_output_gtl \l_@@_tmpa_tl
- \@@_print_action:x { \tl_to_str:N \l_@@_tmpa_tl }
+ \@@_print_action:e { \tl_to_str:N \l_@@_tmpa_tl }
}
-\cs_new_protected:Npn \@@_mathchar:x
- { \@@_exp_args:Nx \@@_mathchar:n }
+\cs_generate_variant:Nn \@@_mathchar:n { e }
% \end{macrocode}
% \end{macro}
%
@@ -4888,7 +4917,7 @@
\bool_if:NTF #1 { \tex_indent:D } { \tex_noindent:D }
\exp_args:NV \@@_everypar:w \l_@@_tmpa_tl
\@@_back_input:V \l_@@_tmpa_tl
- \@@_print_action:x
+ \@@_print_action:e
{
\g_@@_action_text_str \c_space_tl : ~
\token_to_str:N \everypar = { \tl_to_str:N \l_@@_tmpa_tl }
@@ -4912,7 +4941,7 @@
{
\tex_par:D
\gtl_gput_right:Nn \g_@@_output_gtl { \par }
- \@@_print_action:x { Paragraph~end. }
+ \@@_print_action:e { Paragraph~end. }
}
% \end{macrocode}
% \end{macro}
@@ -5062,7 +5091,7 @@
{
\@@_back_input_gtl:N \l_@@_after_group_gtl
\c_group_end_token
- \@@_print_action:x
+ \@@_print_action:e
{ \token_to_str:N #2 \prg_replicate:nn { #1 + 1 } { {...} } }
}
{ \exp_args:NV \@@_end_choice_group:nN \l_@@_choice_int #2 }
@@ -5077,7 +5106,7 @@
\use:n \c_group_begin_token
\int_set:Nn \l_@@_choice_int { #1 + 1 }
\gtl_clear:N \l_@@_after_group_gtl
- \@@_print_action:x
+ \@@_print_action:e
{
\token_to_str:N #2
\prg_replicate:nn {#1} { { ... } }
@@ -5093,7 +5122,7 @@
{
\int_compare:nNnTF \@@_currentgrouptype: = { 0 }
{ % bottom-level
- \@@_error:nxxxx { extra-close }
+ \@@_error:neeee { extra-close }
{ \token_to_meaning:N \l_@@_head_token } { } { } { }
}
{
@@ -5109,7 +5138,7 @@
}
{ \gtl_set_eq:NN \l_@@_head_gtl \c_group_end_gtl }
\@@_back_input:
- \@@_error:nxxxx { off-save }
+ \@@_error:neeee { off-save }
{ \gtl_to_str:N \l_@@_head_gtl } { } { } { }
}
}
@@ -5267,7 +5296,7 @@
{
\exp_after:wN \@@_token_if_expandable:NTF \l_@@_head_tl
{
- \@@_set_action_text:x
+ \@@_set_action_text:e
{ \iow_char:N \\notexpanded: \g_@@_action_text_str }
}
{ }
@@ -5392,7 +5421,7 @@
\g_@@_output_gtl \c_group_begin_gtl
\tl_use:N \l_@@_head_tl \c_group_begin_token
}
- \@@_print_action:x { \tl_to_str:N \l_@@_head_tl }
+ \@@_print_action:e { \tl_to_str:N \l_@@_head_tl }
}
% \end{macrocode}
%
@@ -5427,7 +5456,7 @@
{
\@@_mode_non_vertical:n
{
- \tl_set:Nx \l_@@_tmpa_tl
+ \tl_set:Ne \l_@@_tmpa_tl
{ ` \@@_token_to_char:N \l_@@_head_token }
\mode_if_math:TF
{ \@@_char_in_mmode:V \l_@@_tmpa_tl }
@@ -5475,7 +5504,7 @@
\tex_penalty:D - '10000000000 ~
}
\@@_build_page:
- \@@_print_action:x { End~everything! }
+ \@@_print_action:e { End~everything! }
}
{
\@@_print_outcome:
@@ -5496,7 +5525,7 @@
\@@_scan_int:
\@@_prev_input_gpop:N \l_@@_head_tl
\tl_use:N \l_@@_head_tl \scan_stop:
- \@@_print_action:x { \tl_to_str:N \l_@@_head_tl }
+ \@@_print_action:e { \tl_to_str:N \l_@@_head_tl }
}
}
% \end{macrocode}
@@ -5542,8 +5571,8 @@
\@@_scan_int:
\@@_prev_input_gpop:N \l_@@_head_tl
\mode_if_math:TF
- { \@@_char_in_mmode:x { \tl_tail:N \l_@@_head_tl } }
- { \@@_char:x { \tl_tail:N \l_@@_head_tl } }
+ { \@@_char_in_mmode:e { \tl_tail:N \l_@@_head_tl } }
+ { \@@_char:e { \tl_tail:N \l_@@_head_tl } }
}
}
% \end{macrocode}
@@ -5560,7 +5589,7 @@
\@@_print_action:
\@@_scan_int:
\@@_prev_input_gpop:N \l_@@_head_tl
- \@@_mathchar:x { \tl_tail:N \l_@@_head_tl }
+ \@@_mathchar:e { \tl_tail:N \l_@@_head_tl }
}
}
% \end{macrocode}
@@ -5576,9 +5605,9 @@
\@@_scan_toks:NN \c_false_bool \c_true_bool
\@@_prev_input_gpop:N \l_@@_tmpa_tl
\@@_prev_input_gpop:N \l_@@_head_tl
- \@@_print_action:x
+ \@@_print_action:e
{ \tl_to_str:N \l_@@_head_tl \tl_to_str:N \l_@@_tmpa_tl }
- \tl_put_right:Nx \l_@@_head_tl
+ \tl_put_right:Ne \l_@@_head_tl
{ { \exp_not:N \exp_not:n \exp_not:V \l_@@_tmpa_tl } }
\tl_use:N \l_@@_head_tl
}
@@ -5616,7 +5645,7 @@
\@@_get_x_next:
\@@_rescan_something_internal:n { 5 }
\@@_prev_input_gpop:N \l_@@_head_tl
- \@@_exp_args:Nx \use:n
+ \exp_args:Ne \use:n % better display than \use:e
{ \tex_showtokens:D { \tl_tail:N \l_@@_head_tl } }
}
}
@@ -5683,7 +5712,7 @@
\@@_scan_int:
\@@_prev_input_gpop:N \l_@@_head_tl
\tl_use:N \l_@@_head_tl \scan_stop:
- \@@_print_action:x { \tl_to_str:N \l_@@_head_tl }
+ \@@_print_action:e { \tl_to_str:N \l_@@_head_tl }
}
% \end{macrocode}
% \end{macro}
@@ -5735,7 +5764,7 @@
{ \int_eval:n { \l_@@_head_char_int - 2 } }
\@@_prev_input_gpop:N \l_@@_head_tl
\tl_use:N \l_@@_head_tl \scan_stop:
- \@@_print_action:x { \tl_to_str:N \l_@@_head_tl }
+ \@@_print_action:e { \tl_to_str:N \l_@@_head_tl }
}
}
% \end{macrocode}
@@ -5774,7 +5803,7 @@
{ \@@_scan_dimen:nN { 3 } \c_false_bool }
\@@_prev_input_gpop:N \l_@@_head_tl
\tl_use:N \l_@@_head_tl \scan_stop:
- \@@_print_action:x { \tl_to_str:N \l_@@_head_tl }
+ \@@_print_action:e { \tl_to_str:N \l_@@_head_tl }
}
% \end{macrocode}
% \end{macro}
@@ -5846,7 +5875,7 @@
\@@_scan_alt_rule:
\@@_prev_input_gpop:N \l_@@_head_tl
\tl_use:N \l_@@_head_tl \scan_stop:
- \@@_print_action:x { \tl_to_str:N \l_@@_head_tl }
+ \@@_print_action:e { \tl_to_str:N \l_@@_head_tl }
}
% \end{macrocode}
%
@@ -5877,7 +5906,7 @@
\gtl_gconcat:NNN \g_@@_output_gtl
\g_@@_output_gtl \c_group_begin_gtl
\tl_use:N \l_@@_head_tl \c_group_begin_token
- \@@_print_action:x
+ \@@_print_action:e
{ \tl_to_str:N \l_@@_head_tl \iow_char:N \{ }
}
% \end{macrocode}
@@ -5902,7 +5931,7 @@
\tl_set_eq:NN \l_@@_tmpa_tl \l_@@_head_tl
\@@_get_next:
\gtl_gset_eq:NN \g_@@_after_assignment_gtl \l_@@_head_gtl
- \@@_print_action:x
+ \@@_print_action:e
{
Afterassignment:~\tl_to_str:N \l_@@_tmpa_tl
\gtl_to_str:N \l_@@_head_gtl
@@ -5920,7 +5949,7 @@
\@@_get_next:
\int_compare:nNnTF \@@_currentgrouptype: = 0
{
- \@@_print_action:x
+ \@@_print_action:e
{
Aftergroup~(level~0~=>~dropped):~
\tl_to_str:N \l_@@_tmpa_tl
@@ -5930,7 +5959,7 @@
{
\gtl_concat:NNN \l_@@_after_group_gtl
\l_@@_after_group_gtl \l_@@_head_gtl
- \@@_print_action:x
+ \@@_print_action:e
{
Aftergroup:~\tl_to_str:N \l_@@_tmpa_tl
\gtl_to_str:N \l_@@_head_gtl
@@ -5948,7 +5977,7 @@
\@@_scan_int:
\@@_prev_input_gpop:N \l_@@_head_tl
\tl_use:N \l_@@_head_tl \scan_stop:
- \@@_print_action:x { \tl_to_str:N \l_@@_head_tl }
+ \@@_print_action:e { \tl_to_str:N \l_@@_head_tl }
}
% \end{macrocode}
%
@@ -6011,7 +6040,7 @@
\@@_prev_input_gpop:N \l_@@_head_tl
\gtl_gput_right:NV \g_@@_output_gtl \l_@@_head_tl
\tl_use:N \l_@@_head_tl \scan_stop:
- \@@_print_action:x { \tl_to_str:N \l_@@_head_tl }
+ \@@_print_action:e { \tl_to_str:N \l_@@_head_tl }
\@@_break_point:
}
% \end{macrocode}
@@ -6109,7 +6138,7 @@
{
\gtl_gput_right:NV \g_@@_output_gtl \l_@@_head_tl
\tl_use:N \l_@@_head_tl \scan_stop:
- \@@_print_action:x { \tl_to_str:N \l_@@_head_tl }
+ \@@_print_action:e { \tl_to_str:N \l_@@_head_tl }
}
{
\int_case:nnF \tex_currentgrouptype:D
@@ -6124,7 +6153,7 @@
\gtl_clear:N \l_@@_after_group_gtl
}
{ \tl_use:N \l_@@_head_tl \scan_stop: }
- \@@_print_action:x { \tl_to_str:N \l_@@_head_tl }
+ \@@_print_action:e { \tl_to_str:N \l_@@_head_tl }
}
{ 15 }
{ % todo: this is a TeX error
@@ -6200,7 +6229,7 @@
\tl_use:N \l_@@_head_tl \c_group_begin_token
\gtl_clear:N \l_@@_after_group_gtl
\int_set:Nn \l_@@_choice_int { 1 }
- \@@_print_action:x
+ \@@_print_action:e
{ \tl_to_str:N \l_@@_head_tl \iow_char:N \{ }
}
% \end{macrocode}
@@ -6245,7 +6274,7 @@
\cs_new_protected:Npn \@@_case_shift:Nn #1#2
{
#1 { \@@_back_input:n {#2} }
- \@@_print_action:x
+ \@@_print_action:e
{ \token_to_meaning:N #1 ~ \tl_to_str:n { {#2} } }
}
% \end{macrocode}
@@ -6258,7 +6287,7 @@
\@@_scan_toks_to_str:
\@@_prev_input_gpop:N \l_@@_head_tl
\tl_use:N \l_@@_head_tl
- \@@_print_action:x { \tl_to_str:N \l_@@_head_tl }
+ \@@_print_action:e { \tl_to_str:N \l_@@_head_tl }
}
% \end{macrocode}
%
@@ -6271,7 +6300,7 @@
\@@_scan_extension_operands:
\@@_prev_input_gpop:N \l_@@_head_tl
\tl_use:N \l_@@_head_tl \scan_stop:
- \@@_print_action:x { \tl_to_str:N \l_@@_head_tl }
+ \@@_print_action:e { \tl_to_str:N \l_@@_head_tl }
}
% \end{macrocode}
%
@@ -6289,7 +6318,7 @@
{ \@@_scan_int: }
\@@_prev_input_gpop:N \l_@@_head_tl
\tl_use:N \l_@@_head_tl \scan_stop:
- \@@_print_action:x { \tl_to_str:N \l_@@_head_tl }
+ \@@_print_action:e { \tl_to_str:N \l_@@_head_tl }
}
% \end{macrocode}
%
@@ -6362,7 +6391,7 @@
\@@_new_tex_cmd:nn { math_given } % 69
{
\@@_mode_math:n
- { \@@_mathchar:x { \int_use:N \l_@@_head_char_int } }
+ { \@@_mathchar:e { \int_use:N \l_@@_head_char_int } }
}
% \end{macrocode}
%
@@ -6683,7 +6712,7 @@
{
\@@_back_input:
\@@_prev_input_gpop:N \l_@@_head_tl
- \@@_print_action:x { \tl_to_str:N \l_@@_head_tl ignored }
+ \@@_print_action:e { \tl_to_str:N \l_@@_head_tl ignored }
\@@_prev_input_gpush:
}
@@ -6780,7 +6809,7 @@
> { \@@_tex_use:n { max_non_prefixed_command } }
{
\@@_prev_input_gpop:N \l_@@_tmpa_tl
- \@@_error:nxxxx { erroneous-prefixes }
+ \@@_error:neeee { erroneous-prefixes }
{ \tl_to_str:N \l_@@_tmpa_tl }
{ \tl_to_str:N l_@@_head_tl }
{ } { }
@@ -6859,7 +6888,7 @@
\tl_if_empty:nF {#1}
{
\@@_prev_input_gpush:N \l_@@_head_tl
- \@@_print_action:x { \tl_to_str:N \l_@@_head_tl }
+ \@@_print_action:e { \tl_to_str:N \l_@@_head_tl }
#1
\@@_prev_input_gpop:N \l_@@_head_tl
}
@@ -6955,20 +6984,37 @@
}
% \end{macrocode}
%
+% This is a variant of \cs{@@_assign_value:nn}, with a bit more complication
+% because the syntax of \tn{parshape} and of \eTeX{} primitives such as
+% \tn{interlinepenalties} is a bit different.
% \begin{macrocode}
\@@_prefixed_new:nn { set_shape } % 84
{
- \@@_assign_value:nn { \@@_scan_int: }
+ \@@_prev_input:V \l_@@_head_tl
+ \tl_set_eq:NN \l_@@_defined_tl \l_@@_head_tl
+ \tl_if_head_eq_meaning:VNTF \l_@@_defined_tl \tex_parshape:D
{
- \prg_replicate:nn
- {
- \tl_if_head_eq_meaning:VNT
- \l_@@_defined_tl \tex_parshape:D { 2 * }
- \tl_tail:N \l_@@_defined_tl
- }
- { \@@_scan_int: }
+ \@@_set_shape:NN 2 \@@_scan_normal_dimen:
+ \@@_print_assigned_parshape:
+ }
+ {
+ \@@_set_shape:NN 1 \@@_scan_int:
+ \@@_print_assigned_set_shape:
}
}
+\cs_new_protected:Npn \@@_set_shape:NN #1#2
+ {
+ \@@_scan_optional_equals:
+ \@@_prev_input_gpush:
+ \@@_scan_int:
+ \@@_prev_input_gpop:N \l_@@_tmpa_tl
+ \@@_prev_input_silent:V \l_@@_tmpa_tl
+ \prg_replicate:nn
+ { \int_max:nn { 0 } { #1 * \l_@@_tmpa_tl } }
+ { \@@_prev_input_silent:n { ~ } #2 }
+ \@@_prev_input_gpop:N \l_@@_tmpa_tl
+ \tl_use:N \l_@@_tmpa_tl \scan_stop:
+ }
% \end{macrocode}
%
% \begin{macrocode}
@@ -6993,9 +7039,9 @@
\@@_prefixed_new:nn { def_font } % 88
{
\@@_prev_input_silent:V \l_@@_head_tl
- \@@_set_action_text:x { \tl_to_str:N \l_@@_head_tl }
+ \@@_set_action_text:e { \tl_to_str:N \l_@@_head_tl }
\@@_scan_r_token:
- \@@_print_action:x
+ \@@_print_action:e
{ \g_@@_action_text_str \tl_to_str:N \l_@@_defined_tl }
\@@_scan_optional_equals:
\@@_scan_file_name:
@@ -7024,7 +7070,7 @@
{ % |let|
\@@_scan_r_token:
\@@_prev_input_get:N \l_@@_tmpa_tl
- \@@_print_action:x { \tl_to_str:N \l_@@_tmpa_tl }
+ \@@_print_action:e { \tl_to_str:N \l_@@_tmpa_tl }
\@@_get_next:
\bool_while_do:nn
{ \token_if_eq_catcode_p:NN \l_@@_head_token \c_space_token }
@@ -7037,7 +7083,7 @@
{ % |futurelet|
\@@_scan_r_token:
\@@_prev_input_get:N \l_@@_tmpa_tl
- \@@_print_action:x { \tl_to_str:N \l_@@_tmpa_tl }
+ \@@_print_action:e { \tl_to_str:N \l_@@_tmpa_tl }
\@@_get_next:
\gtl_set_eq:NN \l_@@_tmpb_gtl \l_@@_head_gtl
\@@_get_next:
@@ -7048,7 +7094,7 @@
\@@_prev_input_gpop:N \l_@@_tmpa_tl
\tl_put_right:Nn \l_@@_tmpa_tl { = ~ \l_@@_head_token }
\@@_prev_input_gpop:N \l_@@_head_tl
- \@@_exp_args:Nx \use:n
+ \use:e
{
\exp_not:V \l_@@_head_tl
\tex_let:D \tl_tail:N \l_@@_tmpa_tl
@@ -7061,10 +7107,10 @@
\@@_prefixed_new:nn { shorthand_def } % 95
{
\@@_prev_input_silent:V \l_@@_head_tl
- \tl_set:Nx \l_@@_prev_action_tl
+ \tl_set:Ne \l_@@_prev_action_tl
{ \tl_to_str:N \l_@@_head_tl }
\@@_scan_r_token:
- \@@_print_action:x
+ \@@_print_action:e
{ \l_@@_prev_action_tl \tl_to_str:N \l_@@_defined_tl }
\exp_after:wN \cs_set_eq:NN \l_@@_defined_tl \scan_stop:
\@@_just_print_assigned_token:
@@ -7087,7 +7133,7 @@
\@@_prefixed_new:nn { read_to_cs } % 96
{
\@@_prev_input_silent:V \l_@@_head_tl
- \@@_print_action:x { \tl_to_str:N \l_@@_head_tl }
+ \@@_print_action:e { \tl_to_str:N \l_@@_head_tl }
\@@_scan_int:
\@@_scan_to:
\@@_scan_r_token:
@@ -7186,7 +7232,7 @@
\@@_prev_input_gpop:N \l_@@_tmpa_tl
\tl_put_left:NV \l_@@_head_tl \l_@@_tmpa_tl
\tl_use:N \l_@@_head_tl \scan_stop:
- \@@_print_assignment:x { \tl_to_str:N \l_@@_head_tl }
+ \@@_print_assignment:e { \tl_to_str:N \l_@@_head_tl }
}
% \end{macrocode}
%
@@ -7194,9 +7240,9 @@
\@@_prefixed_new:nn { letterspace_font } % 101
{
\@@_prev_input_silent:V \l_@@_head_tl
- \@@_set_action_text:x { \tl_to_str:N \l_@@_head_tl }
+ \@@_set_action_text:e { \tl_to_str:N \l_@@_head_tl }
\@@_scan_r_token:
- \@@_print_action:x
+ \@@_print_action:e
{ \g_@@_action_text_str \tl_to_str:N \l_@@_defined_tl }
\exp_after:wN \cs_set_eq:NN \l_@@_defined_tl \@@_nullfont:
\@@_just_print_assigned_token:
@@ -7211,9 +7257,9 @@
\@@_prefixed_new:nn { pdf_copy_font } % 102
{
\@@_prev_input_silent:V \l_@@_head_tl
- \@@_set_action_text:x { \tl_to_str:N \l_@@_head_tl }
+ \@@_set_action_text:e { \tl_to_str:N \l_@@_head_tl }
\@@_scan_r_token:
- \@@_print_action:x
+ \@@_print_action:e
{ \g_@@_action_text_str \tl_to_str:N \l_@@_defined_tl }
\exp_after:wN \cs_set_eq:NN \l_@@_defined_tl \@@_nullfont:
\@@_just_print_assigned_token:
@@ -7327,7 +7373,7 @@
{ 3 } { \@@_scan_normal_glue: } % glue
{ 4 } { \@@_scan_mu_glue: } % muglue
}
- { \@@_error:nxxxx { internal } { do-reg=#2 } { } { } { } }
+ { \@@_error:neeee { internal } { do-reg=#2 } { } { } { } }
}
{ \@@_scan_int: }
\@@_assign_register:
@@ -7384,7 +7430,7 @@
% \tn{pdffiledump}, \tn{pdfmatch}, \tn{pdflastmatch},
% \tn{pdfuniformdeviate}, \tn{pdfnormaldeviate}, \tn{pdfinsertht},
% \tn{pdfximagebbox}, \tn{jobname}, \tn{expanded}, and in
-% \LuaTeX{} \tn{directlua}, \tn{luaescapestring}, and in \XeTeX{} \tn{Ucharcat}.
+% \LuaTeX{} \tn{directlua}, \tn{luaescapestring}, and in \XeTeX{}/(u)p\TeX{} \tn{Ucharcat}.
% \item |the=111| for \tn{the}, \tn{unexpanded}, and \tn{detokenize}.
% \item |top_bot_mark=112| \tn{topmark}, \tn{firstmark}, \tn{botmark},
% \tn{splitfirstmark}, \tn{splitbotmark}, \tn{topmarks},
@@ -7414,13 +7460,13 @@
\gtl_concat:NNN \l_@@_head_gtl
\l_@@_tmpb_gtl \l_@@_head_gtl
\@@_prev_input_gpush_gtl:N \l_@@_head_gtl
- \@@_print_expansion:x { \gtl_to_str:N \l_@@_head_gtl }
+ \@@_print_expansion:e { \gtl_to_str:N \l_@@_head_gtl }
\@@_get_next:
\@@_token_if_expandable:NTF \l_@@_head_token
{ \@@_expand_do:N \prg_do_nothing: }
{ \@@_back_input: }
\@@_prev_input_gpop_gtl:N \l_@@_head_gtl
- \@@_set_action_text:x
+ \@@_set_action_text:e
{ back_input: ~ \gtl_to_str:N \l_@@_head_gtl }
\gtl_pop_left:N \l_@@_head_gtl
\@@_back_input:
@@ -7428,6 +7474,7 @@
}
\cs_new_protected:Npn \@@_unless:
{
+ \gtl_set_eq:NN \l_@@_tmpb_gtl \l_@@_head_gtl
\@@_get_token:
\int_compare:nNnTF
\l_@@_head_cmd_int = { \@@_tex_use:n { if_test } }
@@ -7435,8 +7482,8 @@
\token_if_eq_meaning:NNTF \l_@@_head_token \tex_ifcase:D
{ \@@_unless_bad: }
{
- \tl_put_left:Nn \l_@@_head_tl { \reverse_if:N }
- % \int_add:Nn \l_@@_head_char_int { 32 }
+ \tl_put_left:Ne \l_@@_head_tl
+ { \gtl_head_do:NN \l_@@_tmpb_gtl \exp_not:N }
\@@_expand_nonmacro:
}
}
@@ -7546,19 +7593,21 @@
\@@_prev_input_gpush:
\@@_scan_toks:NN \c_false_bool \c_false_bool
\@@_prev_input_gpop:N \l_@@_tmpa_tl
- \tl_set_rescan:Nno \l_@@_head_tl { } \l_@@_tmpa_tl
+ \exp_last_unbraced:NNNo \tl_set_rescan:Nnn
+ \l_@@_head_tl \prg_do_nothing: \l_@@_tmpa_tl
+ \@@_back_input:V \@@_everyeof:w
\@@_back_input:V \l_@@_head_tl
- \@@_print_expansion:x { \tl_to_str:N \l_@@_tmpa_tl }
+ \@@_print_expansion:e { \tl_to_str:N \l_@@_tmpa_tl }
}
\cs_new_protected:Npn \@@_input:
{
\@@_prev_input_gpush:N \l_@@_head_tl
\@@_scan_file_name:
\@@_prev_input_gpop:N \l_@@_head_tl
- \tl_set:Nx \l_@@_tmpa_tl { \tl_tail:N \l_@@_head_tl }
+ \tl_set:Ne \l_@@_tmpa_tl { \tl_tail:N \l_@@_head_tl }
\@@_file_get:nN \l_@@_tmpa_tl \l_@@_tmpa_tl
\@@_back_input:V \l_@@_tmpa_tl
- \@@_print_expansion:x { \tl_to_str:N \l_@@_head_tl }
+ \@@_print_expansion:e { \tl_to_str:N \l_@@_head_tl }
}
% \end{macrocode}
% \end{macro}
@@ -7579,7 +7628,7 @@
}
{
\@@_back_input:V \g_@@_lastnamedcs_tl
- \@@_print_expansion:x
+ \@@_print_expansion:e
{ \tl_to_str:N \l_@@_head_tl = \tl_to_str:N \g_@@_lastnamedcs_tl }
}
}
@@ -7596,7 +7645,7 @@
}
}
{
- \@@_prev_input_silent:x
+ \@@_prev_input_silent:e
{ \@@_token_to_char:N \l_@@_head_token }
\@@_csname_loop:
}
@@ -7606,9 +7655,11 @@
\group_begin:
\@@_prev_input_get:N \l_@@_head_tl
\tl_gset:No \g_@@_lastnamedcs_tl
- { \cs:w \exp_after:wN \use_none:n \l_@@_head_tl }
+ { \cs:w \exp_after:wN \@@_get_lastnamedcs_check:N \l_@@_head_tl }
\group_end:
}
+\cs_new:Npn \@@_get_lastnamedcs_check:N #1
+ { \if_meaning:w \reverse_if:N #1 \use_i:nn \fi: }
% \end{macrocode}
% \end{macro}
%
@@ -7667,7 +7718,7 @@
{
\@@_get_next:
\tl_if_empty:NTF \l_@@_head_tl
- { \@@_prev_input:x { \gtl_to_str:N \l_@@_head_gtl } }
+ { \@@_prev_input:e { \gtl_to_str:N \l_@@_head_gtl } }
{ \@@_prev_input:V \l_@@_head_tl }
}
\cs_new_protected:Npn \@@_convert_meaning:w
@@ -7680,11 +7731,11 @@
\@@_prev_input_gpop:N \l_@@_prev_input_tl
\exp_args:NNV \gtl_put_left:Nn \l_@@_tmpb_gtl \l_@@_prev_input_tl
\@@_prev_input_gpush_gtl:N \l_@@_tmpb_gtl
- \@@_print_action:x { \gtl_to_str:N \l_@@_tmpb_gtl }
+ \@@_print_action:e { \gtl_to_str:N \l_@@_tmpb_gtl }
\@@_prev_input_gpop_gtl:N \l_@@_tmpb_gtl
- \tl_set:Nx \l_@@_tmpa_tl { \gtl_head_do:NN \l_@@_head_gtl \tex_meaning:D }
+ \tl_set:Ne \l_@@_tmpa_tl { \gtl_head_do:NN \l_@@_head_gtl \tex_meaning:D }
\@@_back_input:V \l_@@_tmpa_tl
- \@@_print_expansion:x
+ \@@_print_expansion:e
{ \gtl_to_str:N \l_@@_tmpb_gtl = \tl_to_str:N \l_@@_tmpa_tl }
}
{
@@ -7754,34 +7805,34 @@
{ % \unexpanded, \detokenize
\@@_scan_toks:NN \c_false_bool \c_false_bool
\@@_prev_input_gpop:N \l_@@_head_tl
- \@@_set_action_text:x { \tl_to_str:N \l_@@_head_tl }
+ \@@_set_action_text:e { \tl_to_str:N \l_@@_head_tl }
}
{ % \the
\@@_get_x_next:
\@@_rescan_something_internal:n { 5 }
\@@_prev_input_gpop:N \l_@@_head_tl
- \@@_set_action_text:x
+ \@@_set_action_text:e
{
\tl_head:N \l_@@_head_tl
=> \tl_tail:N \l_@@_head_tl
}
- \tl_set:Nx \l_@@_head_tl
+ \tl_set:Ne \l_@@_head_tl
{ \exp_not:N \exp_not:n { \tl_tail:N \l_@@_head_tl } }
}
\cs_if_eq:NNTF #1 \@@_get_token_xdef:
{
\tl_put_right:NV \l_@@_defining_tl \l_@@_head_tl
- \@@_prev_input_silent:x { \l_@@_head_tl }
+ \@@_prev_input_silent:e { \l_@@_head_tl }
\@@_print_action:
}
{
\cs_if_eq:NNTF #1 \@@_get_token_x:
{
- \@@_exp_args:NNx \gtl_set:Nn \l_@@_tmpb_gtl { \l_@@_head_tl }
+ \exp_args:NNe \gtl_set:Nn \l_@@_tmpb_gtl { \l_@@_head_tl }
\@@_prev_input_gtl:N \l_@@_tmpb_gtl
}
{
- \tl_set:Nx \l_@@_tmpa_tl { \exp_args:NV \exp_not:o \l_@@_head_tl }
+ \tl_set:Ne \l_@@_tmpa_tl { \exp_args:NV \exp_not:o \l_@@_head_tl }
\@@_back_input:V \l_@@_tmpa_tl
}
\@@_print_expansion:
@@ -7894,7 +7945,7 @@
% \begin{macrocode}
\cs_new_protected:Npn \@@_cond_push:
{
- \tl_gput_left:Nx \g_@@_if_limit_tl
+ \tl_gput_left:Ne \g_@@_if_limit_tl
{ { \int_use:N \g_@@_if_limit_int } }
\int_gincr:N \g_@@_if_depth_int
\int_gzero:N \g_@@_if_limit_int
@@ -7904,7 +7955,7 @@
\fi:
\int_gset:Nn \g_@@_if_limit_int
{ \tl_head:N \g_@@_if_limit_tl }
- \tl_gset:Nx \g_@@_if_limit_tl
+ \tl_gset:Ne \g_@@_if_limit_tl
{ \tl_tail:N \g_@@_if_limit_tl }
\int_gdecr:N \g_@@_if_depth_int
}
@@ -7921,12 +7972,12 @@
\tl_clear:N \l_@@_tmpa_tl
\prg_replicate:nn { \g_@@_if_depth_int - #2 - 1 }
{
- \tl_put_right:Nx \l_@@_tmpa_tl
+ \tl_put_right:Ne \l_@@_tmpa_tl
{ { \tl_head:N \g_@@_if_limit_tl } }
- \tl_gset:Nx \g_@@_if_limit_tl
+ \tl_gset:Ne \g_@@_if_limit_tl
{ \tl_tail:N \g_@@_if_limit_tl }
}
- \tl_gset:Nx \g_@@_if_limit_tl
+ \tl_gset:Ne \g_@@_if_limit_tl
{ \l_@@_tmpa_tl {#1} \tl_tail:N \g_@@_if_limit_tl }
}
}
@@ -7980,7 +8031,7 @@
{ 24 } { \@@_scan_font_ident: } % ifjfont, iftfont
}
\@@_prev_input_gpop:N \l_@@_head_tl
- \@@_set_action_text:x { \tl_to_str:N \l_@@_head_tl }
+ \@@_set_action_text:e { \tl_to_str:N \l_@@_head_tl }
\l_@@_head_tl \scan_stop:
\@@_cond_true:NNNn
\else:
@@ -7997,7 +8048,7 @@
\cs_new_protected:Npn \@@_cond_true:NNNn #1#2#3#4
{
\@@_change_if_limit:nn { 3 } {#4} % wait for else/fi
- \@@_print_expansion:x { \g_@@_action_text_str = true }
+ \@@_print_expansion:e { \g_@@_action_text_str = true }
}
% \end{macrocode}
% \end{macro}
@@ -8009,7 +8060,7 @@
{
\@@_cond_false_loop:n {#2}
\@@_cond_false_common:
- \@@_print_expansion:x
+ \@@_print_expansion:e
{
\g_@@_action_text_str = false ~
=> ~ skip ~ to ~ \tl_to_str:N \l_@@_head_tl
@@ -8069,7 +8120,7 @@
\@@_test_two_chars_get:n {#1}
\@@_test_two_chars_get:n {#1}
\@@_prev_input_gpop_gtl:N \l_@@_head_gtl
- \@@_set_action_text:x { \gtl_to_str:N \l_@@_head_gtl }
+ \@@_set_action_text:e { \gtl_to_str:N \l_@@_head_gtl }
\gtl_pop_left_item:NNTF \l_@@_head_gtl \l_@@_head_tl { } { }
\exp_args:No \tl_if_head_eq_meaning:nNT \l_@@_head_tl \reverse_if:N
{
@@ -8091,14 +8142,14 @@
\int_compare:nNnT {#1} = 0
{
\gtl_if_head_is_N_type:NF \l_@@_head_gtl
- { \gtl_set:Nx \l_@@_head_gtl { \gtl_to_str:N \l_@@_head_gtl } }
+ { \gtl_set:Ne \l_@@_head_gtl { \gtl_to_str:N \l_@@_head_gtl } }
}
\@@_prev_input_gtl:N \l_@@_head_gtl
- \@@_print_action:x { \gtl_to_str:N \l_@@_head_gtl }
+ \@@_print_action:e { \gtl_to_str:N \l_@@_head_gtl }
}
\cs_new_protected:Npn \@@_test_two_chars_gtl:N #1
{
- \tl_put_right:Nx \l_@@_head_tl
+ \tl_put_right:Ne \l_@@_head_tl
{
\gtl_if_head_is_group_begin:NTF #1 { \c_group_begin_token }
{
@@ -8136,7 +8187,7 @@
\cs_set_eq:NN \l_@@_tmpb_token \l_@@_head_token
\@@_get_next:
\@@_prev_input_gpop:N \l_@@_tmpa_tl
- \@@_set_action_text:x
+ \@@_set_action_text:e
{
Compare:~ \tl_to_str:N \l_@@_tmpa_tl
\@@_test_ifx_str:NN \l_@@_tmpb_token \l_@@_tmpb_gtl
@@ -8184,7 +8235,7 @@
\bool_if:NT \g_@@_internal_debug_bool { \iow_term:n { {\ifcase level~#1} } }
\@@_scan_int:
\@@_prev_input_get:N \l_@@_head_tl
- \tl_set:Nx \l_@@_head_tl { \tl_tail:N \l_@@_head_tl }
+ \tl_set:Ne \l_@@_head_tl { \tl_tail:N \l_@@_head_tl }
% ^^A does text_case_aux use prev_input_seq?
\int_compare:nNnF { \l_@@_head_tl } = 0
{
@@ -8194,7 +8245,7 @@
}
\exp_args:No \@@_test_case_aux:nn { \l_@@_head_tl } {#1}
\@@_prev_input_gpop:N \l_@@_head_tl
- \@@_print_expansion:x { \tl_to_str:N \l_@@_head_tl }
+ \@@_print_expansion:e { \tl_to_str:N \l_@@_head_tl }
}
\cs_new_protected:Npn \@@_test_case_aux:nn #1#2
{
@@ -8243,12 +8294,12 @@
{ \@@_pass_text_empty: }
{
\@@_input_gpop:N \l_@@_tmpb_gtl
- \@@_set_action_text:x
+ \@@_set_action_text:e
{
Conditional:~ \tl_to_str:N \l_@@_head_tl
\gtl_to_str:N \l_@@_tmpb_gtl
}
- \@@_prev_input:x
+ \@@_prev_input:e
{
\gtl_if_tl:NTF \l_@@_tmpb_gtl
{ \gtl_head:N \l_@@_tmpb_gtl }
@@ -8288,7 +8339,7 @@
\int_compare:nNnF \l_@@_head_char_int = 2
{
\@@_fi_or_else_loop:
- \@@_set_action_text:x
+ \@@_set_action_text:e
{
\g_@@_action_text_str \c_space_tl
=> ~ skip ~ to ~ \tl_to_str:N \l_@@_head_tl
@@ -8326,7 +8377,7 @@
\tl_new:N \l_@@_print_tl
\sys_if_engine_luatex:TF
{
- \cs_new_protected:Npx \@@_print_normalize_null:
+ \cs_new_protected:Npe \@@_print_normalize_null:
{
\tl_replace_all:Nnn \exp_not:N \l_@@_print_tl
{ \char_generate:nn { 0 } { 12 } }
@@ -8338,21 +8389,40 @@
% \end{variable}
% \end{macro}
%
-% \begin{macro}{\@@_print:n, \@@_print:x, \@@_log:n}
+% \begin{macro}{\@@_print:n, \@@_print:e, \@@_log:n}
% \begin{macrocode}
\cs_new_protected:Npn \@@_print:n #1
{
\tl_set:Nn \l_@@_print_tl {#1}
\@@_print_normalize_null:
- \@@_exp_args:Nx \iow_term:n { \l_@@_print_tl }
+ \iow_term:e { \l_@@_print_tl }
+ \tl_if_empty:NF \g_@@_output_file_tl
+ { \iow_now:Ne \g_@@_iow { \l_@@_print_tl } }
}
-\cs_new_protected:Npn \@@_print:x
- { \@@_exp_args:Nx \@@_print:n }
+\cs_generate_variant:Nn \@@_print:n { e }
\cs_new_protected:Npn \@@_log:n #1
{
\tl_set:Nn \l_@@_print_tl {#1}
\@@_print_normalize_null:
- \@@_exp_args:Nx \iow_log:n { \l_@@_print_tl }
+ \tl_if_empty:NTF \g_@@_output_file_tl
+ { \iow_log:e { \l_@@_print_tl } }
+ { \iow_now:Ne \g_@@_iow { \l_@@_print_tl } }
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_print_step:n}
+% Steps are printed or not according to the option value, unaffected
+% by a prompt such as |s10|.
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_print_step:n #1
+ {
+ \int_compare:nNnF \g_@@_online_int < 0
+ {
+ \int_compare:nNnTF \g_@@_online_int = 0
+ { \@@_log:n {#1} }
+ { \@@_print:n {#1} }
+ }
}
% \end{macrocode}
% \end{macro}
@@ -8361,13 +8431,14 @@
% The message to be printed should come already detokenized, as~|#2|.
% It will be wrapped to 80 characters per line, with~|#1| before each
% line. The message is properly suppressed (or sent only to the log)
-% according to \cs{g_@@_online_int}.
+% according to \cs{g_@@_current_online_int} so as to be sensitive to
+% the prompt.
% \begin{macrocode}
\cs_new_protected:Npn \@@_print_message:nn #1 #2
{
- \int_compare:nNnF \g_@@_online_int < 0
+ \int_compare:nNnF \g_@@_current_online_int < 0
{
- \int_compare:nNnTF \g_@@_online_int = 0
+ \int_compare:nNnTF \g_@@_current_online_int = 0
{ \iow_wrap:nnnN { #1 #2 } { #1 } { } \@@_log:n }
{ \iow_wrap:nnnN { #1 #2 } { #1 } { } \@@_print:n }
}
@@ -8375,13 +8446,13 @@
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{\@@_set_action_text:x}
+% \begin{macro}{\@@_set_action_text:e}
% \begin{macrocode}
-\cs_new_protected:Npn \@@_set_action_text:x #1
+\cs_new_protected:Npn \@@_set_action_text:e #1
{
\group_begin:
\@@_set_escapechar:n { 92 }
- \str_gset:Nx \g_@@_action_text_str {#1}
+ \str_gset:Ne \g_@@_action_text_str {#1}
\group_end:
}
% \end{macrocode}
@@ -8391,7 +8462,7 @@
% \begin{macrocode}
\cs_new_protected:Npn \@@_set_action_text:
{
- \@@_set_action_text:x
+ \@@_set_action_text:e
{
\tl_to_str:N \l_@@_head_tl
\tl_if_single_token:VT \l_@@_head_tl
@@ -8408,7 +8479,7 @@
\group_begin:
\@@_set_escapechar:n { 92 }
\tl_use:N \g_@@_before_print_state_tl
- \int_compare:nNnT \g_@@_online_int > 0
+ \int_compare:nNnF \g_@@_current_online_int < 0
{
\@@_print_state_output:
\@@_print_state_prev:
@@ -8426,14 +8497,14 @@
% \begin{macrocode}
\cs_new_protected:Npn \@@_print_state_output:
{
- \@@_exp_args:Nx \@@_print_state_output:n
+ \exp_args:Ne \@@_print_state_output:n
{ \gtl_to_str:N \g_@@_output_gtl }
}
\cs_new_protected:Npn \@@_print_state_output:n #1
{
\tl_if_empty:nF {#1}
{
- \@@_print_message:nn { <| ~ }
+ \@@_print_message:nn { <| ~ } % |
{ \@@_str_truncate_left:nn {#1} { \g_@@_max_output_int } }
}
}
@@ -8445,7 +8516,7 @@
% \begin{macrocode}
\cs_new_protected:Npn \@@_print_state_prev:
{
- \seq_set_map_x:NNn \l_@@_tmpa_seq \g_@@_prev_input_seq
+ \seq_set_map_e:NNn \l_@@_tmpa_seq \g_@@_prev_input_seq
{ \@@_to_str:Nn ##1 }
\seq_remove_all:Nn \l_@@_tmpa_seq { }
\seq_if_empty:NTF \l_@@_tmpa_seq
@@ -8467,12 +8538,12 @@
% \begin{macrocode}
\cs_new_protected:Npn \@@_print_state_input:
{
- \@@_exp_args:Nx \@@_print_state_input:n
+ \exp_args:Ne \@@_print_state_input:n
{ \@@_input_to_str: }
}
\cs_new_protected:Npn \@@_print_state_input:n #1
{
- \@@_print_message:nn { |> ~ }
+ \@@_print_message:nn { |> ~ } % |
{ \@@_str_truncate_right:nn {#1} { \g_@@_max_input_int } }
}
% \end{macrocode}
@@ -8496,29 +8567,29 @@
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{\@@_print_action:, \@@_print_action:x, \@@_print_assignment:, \@@_print_assignment:x, \@@_print_expansion:, \@@_print_expansion:x, \@@_print_action_aux:N}
+% \begin{macro}{\@@_print_action:, \@@_print_action:e, \@@_print_assignment:, \@@_print_assignment:e, \@@_print_expansion:, \@@_print_expansion:e, \@@_print_action_aux:N}
% Some of these commands are currently synonyms but we may decide to
% make some options act differently on them.
% \begin{macrocode}
\cs_new_protected:Npn \@@_print_action:
{ \@@_print_action_aux:N \g_@@_trace_other_bool }
-\cs_new_protected:Npn \@@_print_action:x #1
+\cs_new_protected:Npn \@@_print_action:e #1
{
- \@@_set_action_text:x {#1}
+ \@@_set_action_text:e {#1}
\@@_print_action:
}
\cs_new_protected:Npn \@@_print_assignment:
{ \@@_print_action_aux:N \g_@@_trace_assigns_bool }
-\cs_new_protected:Npn \@@_print_assignment:x #1
+\cs_new_protected:Npn \@@_print_assignment:e #1
{
- \@@_set_action_text:x {#1}
+ \@@_set_action_text:e {#1}
\@@_print_assignment:
}
\cs_new_protected:Npn \@@_print_expansion:
{ \@@_print_action_aux:N \g_@@_trace_expansion_bool }
-\cs_new_protected:Npn \@@_print_expansion:x #1
+\cs_new_protected:Npn \@@_print_expansion:e #1
{
- \@@_set_action_text:x {#1}
+ \@@_set_action_text:e {#1}
\@@_print_expansion:
}
\cs_new_protected:Npn \@@_print_action_aux:N #1
@@ -8527,7 +8598,7 @@
\int_gincr:N \g_@@_step_int
\bool_if:NT #1
{
- \@@_print:x
+ \exp_args:Ne \@@_print_step:n
{
[=====
\bool_if:NT \g_@@_number_steps_bool
@@ -8549,11 +8620,12 @@
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{\@@_just_print_assigned_token:, \@@_print_assigned_token:, \@@_print_assigned_register:}
+% \begin{macro}{\@@_just_print_assigned_token:, \@@_print_assigned_token:, \@@_print_assigned_register:, \@@_print_assigned_parshape:, \@@_print_assigned_set_shape:}
+% \begin{macro}[EXP]{\@@_print_assigned_set_shape_aux:n}
% \begin{macrocode}
\cs_new_protected:Npn \@@_just_print_assigned_token:
{
- \@@_print_assignment:x
+ \@@_print_assignment:e
{
Set~ \exp_after:wN \token_to_str:N \l_@@_defined_tl
= \exp_after:wN \token_to_meaning:N \l_@@_defined_tl
@@ -8565,23 +8637,52 @@
\@@_just_print_assigned_token:
\@@_omit_after_assignment:w
}
+\cs_new:Npn \@@_print_assigned_aux_name:
+ {
+ Set~ \exp_after:wN \token_to_str:N \l_@@_defined_tl
+ \tl_if_single:NT \l_@@_defined_tl
+ { ( \exp_after:wN \token_to_meaning:N \l_@@_defined_tl ) }
+ }
\cs_new_protected:Npn \@@_print_assigned_register:
{
\@@_after_assignment:
- \@@_exp_args:Nx \@@_print_assignment:x
+ \exp_args:Ne \@@_print_assignment:e % needed to stringify a \toks
{
- \exp_not:n
- {
- Set~ \exp_after:wN \token_to_str:N \l_@@_defined_tl
- \tl_if_single:NT \l_@@_defined_tl
- { ( \exp_after:wN \token_to_meaning:N \l_@@_defined_tl ) }
- }
+ \exp_not:N \@@_print_assigned_aux_name:
= \exp_not:N \tl_to_str:n { \@@_the:w \l_@@_defined_tl }
}
\@@_omit_after_assignment:w
}
+\cs_new_protected:Npn \@@_print_assigned_parshape:
+ {
+ \@@_after_assignment:
+ \tl_set:Nn \l_@@_tmpa_tl { \tex_parshapedimen:D }
+ \@@_print_assignment:e
+ {
+ \@@_print_assigned_aux_name: = \@@_the:w \l_@@_defined_tl
+ \int_step_function:nN { 2 * \l_@@_defined_tl }
+ \@@_print_assigned_set_shape_aux:n
+ }
+ \@@_omit_after_assignment:w
+ }
+\cs_new_protected:Npn \@@_print_assigned_set_shape:
+ {
+ \@@_after_assignment:
+ \tl_set_eq:NN \l_@@_tmpa_tl \l_@@_defined_tl
+ \@@_print_assignment:e
+ {
+ \@@_print_assigned_aux_name:
+ = \@@_the:w \l_@@_defined_tl 0 \exp_stop_f:
+ \int_step_function:nN { \l_@@_defined_tl 0 }
+ \@@_print_assigned_set_shape_aux:n
+ }
+ \@@_omit_after_assignment:w
+ }
+\cs_new:Npn \@@_print_assigned_set_shape_aux:n #1
+ { ~ \@@_the:w \l_@@_tmpa_tl #1 \exp_stop_f: }
% \end{macrocode}
% \end{macro}
+% \end{macro}
%
% \begin{macro}{\@@_print_welcome:}
% Welcome message.
@@ -8659,7 +8760,7 @@
\clist_gpop:NN \g_@@_prompt_input_clist \l_@@_tmpa_tl
\group_begin:
\@@_set_escapechar:n { 92 }
- \@@_print:x
+ \@@_print:e
{
\bool_if:NT \g_@@_explicit_prompt_bool { Your~input= }
\tl_to_str:N \l_@@_tmpa_tl
@@ -8672,12 +8773,12 @@
{
\tl_if_empty:nF {#1}
{
- \@@_exp_args:Nx \str_case:nnF { \tl_head:n {#1} }
+ \str_case:enF { \tl_head:n {#1} }
{
{ m } { \@@_print_meaning: \@@_prompt_aux: }
{ q }
{
- \int_gset:Nn \g_@@_online_int { -1 }
+ \int_gset:Nn \g_@@_current_online_int { -1 }
\int_gzero:N \g_@@_nonstop_int
}
{ x }
@@ -8693,10 +8794,10 @@
{ s } { \@@_prompt_scan_int:nn {#1}
\@@_prompt_silent_steps:n }
{ o } { \@@_prompt_scan_int:nn {#1}
- { \int_gset:Nn \g_@@_online_int } }
+ { \int_gset:Nn \g_@@_current_online_int } }
{ C }
{
- \@@_exp_args:Nx \use:n
+ \use:e
{
\tl_gset_rescan:Nnn \exp_not:N \g_@@_tmpc_tl
{ \exp_not:N \ExplSyntaxOn } { \tl_tail:n {#1} }
@@ -8706,7 +8807,8 @@
\group_insert_after:N \g_@@_tmpc_tl
\group_insert_after:N \@@_prompt:
}
- { | } { \@@_prompt_scan_int:nn {#1}
+ { | } % |
+ { \@@_prompt_scan_int:nn {#1}
\@@_prompt_vert:n }
{ u } { \@@_prompt_until:n {#1} }
{ a } { \@@_prompt_all: }
@@ -8744,10 +8846,10 @@
{
\int_compare:nNnF {#1} < 0
{
- \int_gset:Nn \g_@@_online_int { -1 }
+ \int_gset:Nn \g_@@_current_online_int { -1 }
\tl_gset:Nn \g_@@_before_prompt_tl
{
- \int_gset:Nn \g_@@_online_int { 1 }
+ \int_gset_eq:NN \g_@@_current_online_int \g_@@_online_int
\tl_gclear:N \g_@@_before_prompt_tl
}
\int_gset:Nn \g_@@_nonstop_int {#1}
@@ -8761,7 +8863,7 @@
}
\cs_new_protected:Npn \@@_prompt_vert:Nn #1#2
{
- \int_gset:Nn \g_@@_online_int { -1 }
+ \int_gset:Nn \g_@@_current_online_int { -1 }
\tl_gset:Nf \g_@@_before_print_state_tl
{
\exp_args:NNf \exp_stop_f: \int_compare:nNnTF
@@ -8772,14 +8874,14 @@
{ \int_max:nn { \g_@@_nonstop_int } { 2 } }
}
{
- \int_gset:Nn \g_@@_online_int { 1 }
+ \int_gset_eq:NN \g_@@_current_online_int \g_@@_online_int
\tl_gclear:N \g_@@_before_print_state_tl
}
}
}
\cs_new_protected:Npn \@@_prompt_all:
{
- \tl_gset:Nx \g_@@_tmpc_tl
+ \tl_gset:Ne \g_@@_tmpc_tl
{
\exp_not:n
{
@@ -8808,12 +8910,12 @@
\tl_new:N \g_@@_until_tl
\cs_new_protected:Npn \@@_prompt_until:n #1
{
- \tl_gset:Nx \g_@@_until_tl { \tl_tail:n {#1} }
- \int_gset:Nn \g_@@_online_int { -1 }
+ \tl_gset:Ne \g_@@_until_tl { \tl_tail:n {#1} }
+ \int_gset:Nn \g_@@_current_online_int { -1 }
\tl_gset:Nn \g_@@_before_print_state_tl
{
\@@_input_get_left:N \l_@@_tmpa_tl
- \@@_exp_args:Nx \use:n
+ \use:e
{
\exp_not:N \tl_if_in:nnTF
{ \exp_not:N \@@:nn \tl_to_str:N \l_@@_tmpa_tl }
@@ -8821,7 +8923,7 @@
}
{
\int_gzero:N \g_@@_nonstop_int
- \int_gset:Nn \g_@@_online_int { 1 }
+ \int_gset_eq:NN \g_@@_current_online_int \g_@@_online_int
\tl_gclear:N \g_@@_before_print_state_tl
}
{
@@ -8843,7 +8945,7 @@
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{\@@_error:nnnnn, \@@_error:nxxxx}
+% \begin{macro}{\@@_error:nnnnn, \@@_error:neeee}
% Errors within a group to make sure that none of the \pkg{l3msg}
% variables (or others) that may be currently in use in the code being
% debugged are modified.
@@ -8854,10 +8956,10 @@
\msg_error:nnnnnn { unravel } {#1} {#2} {#3} {#4} {#5}
\group_end:
}
-\cs_new_protected:Npn \@@_error:nxxxx #1#2#3#4#5
+\cs_new_protected:Npn \@@_error:neeee #1#2#3#4#5
{
\group_begin:
- \msg_error:nnxxxx { unravel } {#1} {#2} {#3} {#4} {#5}
+ \msg_error:nneeee { unravel } {#1} {#2} {#3} {#4} {#5}
\group_end:
}
% \end{macrocode}
@@ -8880,12 +8982,11 @@
% \begin{macrocode}
\cs_new_protected:Npn \@@_tex_error:nn #1#2
{
- \group_begin:
- \msg_error:nnxxx { unravel } { tex-error }
+ \@@_error:neeee { tex-error }
{ \tl_to_str:n {#2} }
{ \use:c { @@_tex_msg_error_#1: } }
{ \use:c { @@_tex_msg_help_#1: } }
- \group_end:
+ { }
}
\cs_generate_variant:Nn \@@_tex_error:nn { nV }
% \end{macrocode}
@@ -8898,7 +8999,7 @@
% \begin{macrocode}
\cs_new_protected:Npn \@@_tex_fatal_error:nn #1#2
{
- \@@_error:nxxxx { tex-fatal }
+ \@@_error:neeee { tex-fatal }
{ \tl_to_str:n {#2} }
{ \use:c { @@_tex_msg_error_#1: } }
{ \use:c { @@_tex_msg_help_#1: } }
@@ -8925,6 +9026,10 @@
max-input .int_gset:N = \g_@@_default_max_input_int ,
number-steps .bool_gset:N = \g_@@_default_number_steps_bool ,
online .int_gset:N = \g_@@_default_online_int ,
+ output-file .code:n = {
+ \int_gzero:N \g_@@_default_online_int
+ \tl_gset:Nn \g_@@_default_output_file_tl {#1}
+ } ,
prompt-input .code:n
= \@@_prompt_input:Nn \g_@@_default_prompt_input_clist {#1} ,
trace-assigns .bool_gset:N = \g_@@_default_trace_assigns_bool ,
@@ -8941,6 +9046,10 @@
max-input .int_gset:N = \g_@@_max_input_int ,
number-steps .bool_gset:N = \g_@@_number_steps_bool ,
online .int_gset:N = \g_@@_online_int ,
+ output-file .code:n = {
+ \int_gzero:N \g_@@_online_int
+ \tl_gset:Nn \g_@@_output_file_tl {#1}
+ } ,
prompt-input .code:n
= \@@_prompt_input:Nn \g_@@_prompt_input_clist {#1} ,
trace-assigns .bool_gset:N = \g_@@_trace_assigns_bool ,
@@ -9040,7 +9149,7 @@
\cs_new_protected:Npn \unravel_get:nnN #1#2#3
{
\unravel:nn {#1} {#2}
- \tl_set:Nx #3 { \gtl_left_tl:N \g_@@_output_gtl }
+ \tl_set:Ne #3 { \gtl_left_tl:N \g_@@_output_gtl }
}
% \end{macrocode}
% \end{macro}
@@ -9056,6 +9165,7 @@
\bool_gset_eq:NN \g_@@_internal_debug_bool \g_@@_default_internal_debug_bool
\bool_gset_eq:NN \g_@@_number_steps_bool \g_@@_default_number_steps_bool
\int_gset_eq:NN \g_@@_online_int \g_@@_default_online_int
+ \tl_gset_eq:NN \g_@@_output_file_tl \g_@@_default_output_file_tl
\clist_gset_eq:NN \g_@@_prompt_input_clist \g_@@_default_prompt_input_clist
\bool_gset_eq:NN \g_@@_trace_assigns_bool \g_@@_default_trace_assigns_bool
\bool_gset_eq:NN \g_@@_trace_expansion_bool \g_@@_default_trace_expansion_bool
@@ -9065,6 +9175,8 @@
\int_gset_eq:NN \g_@@_max_output_int \g_@@_default_max_output_int
\int_gset_eq:NN \g_@@_max_input_int \g_@@_default_max_input_int
\int_gzero:N \g_@@_nonstop_int
+ \tl_gclear:N \g_@@_before_print_state_tl
+ \tl_gclear:N \g_@@_before_prompt_tl
}
% \end{macrocode}
% \end{macro}
@@ -9076,6 +9188,13 @@
% \begin{macrocode}
\cs_new_protected:Npn \@@_init_vars:
{
+ \int_gset_eq:NN \g_@@_current_online_int \g_@@_online_int
+ \tl_if_eq:NNF \g_@@_output_file_tl \g_@@_current_output_file_tl
+ {
+ \iow_close:N \g_@@_iow
+ \iow_open:Nn \g_@@_iow \g_@@_output_file_tl
+ \tl_gset_eq:NN \g_@@_current_output_file_tl \g_@@_output_file_tl
+ }
\seq_gclear:N \g_@@_prev_input_seq
\gtl_gclear:N \g_@@_output_gtl
\int_gzero:N \g_@@_step_int
@@ -9125,10 +9244,10 @@
{
\@@_set_action_text:
\bool_if:NT \g_@@_internal_debug_bool
- { \@@_exp_args:Nx \iow_term:n { Cmd:~\int_to_arabic:n { \l_@@_head_cmd_int } } }
+ { \iow_term:e { Cmd:~\int_to_arabic:n { \l_@@_head_cmd_int } } }
\cs_if_exist_use:cF
{ @@_cmd_ \int_use:N \l_@@_head_cmd_int : }
- { \@@_error:nxxxx { internal } { unknown-command } { } { } { } }
+ { \@@_error:neeee { internal } { unknown-command } { } { } { } }
}
% \end{macrocode}
% \end{macro}
@@ -9161,12 +9280,12 @@
\cs_new_protected:Npn \@@_final_conditionals:
{
\group_begin:
- \msg_warning:nnx { unravel } { dangling-conditionals }
+ \msg_warning:nne { unravel } { dangling-conditionals }
{ \tl_count:N \g_@@_if_limit_tl }
\group_end:
\tl_greverse:N \g_@@_if_limit_tl
\tl_gput_right:NV \g_@@_if_limit_tl \g_@@_if_limit_int
- \tl_gset:Nx \g_@@_if_limit_tl { \tl_tail:N \g_@@_if_limit_tl } % remove the {0}
+ \tl_gset:Ne \g_@@_if_limit_tl { \tl_tail:N \g_@@_if_limit_tl } % remove the {0}
\prg_replicate:nn { \tl_count:N \g_@@_if_limit_tl } { \fi: }
\tl_map_function:NN \g_@@_if_limit_tl \@@_final_cond_aux:n
}
diff --git a/macros/latex/contrib/unravel/unravel.pdf b/macros/latex/contrib/unravel/unravel.pdf
index e21bda64ef..8dadcfd811 100644
--- a/macros/latex/contrib/unravel/unravel.pdf
+++ b/macros/latex/contrib/unravel/unravel.pdf
Binary files differ