summaryrefslogtreecommitdiff
path: root/macros/latex
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-20 03:00:40 +0000
committerNorbert Preining <norbert@preining.info>2019-09-20 03:00:40 +0000
commit4b0f677aea00124171602de9498d50ac10d71eb3 (patch)
tree495035d1f1760c35dc2cefddbc9c73b08510bc11 /macros/latex
parent344e74a832ad49360aa4e08c467ff783c1f02f66 (diff)
CTAN sync 201909200300
Diffstat (limited to 'macros/latex')
-rw-r--r--macros/latex/contrib/l3experimental/CHANGELOG.md9
-rw-r--r--macros/latex/contrib/l3experimental/README.md2
-rw-r--r--macros/latex/contrib/l3experimental/l3benchmark.dtx4
-rw-r--r--macros/latex/contrib/l3experimental/l3benchmark.pdfbin314549 -> 314276 bytes
-rw-r--r--macros/latex/contrib/l3experimental/l3cctab.dtx186
-rw-r--r--macros/latex/contrib/l3experimental/l3cctab.pdfbin330803 -> 337607 bytes
-rw-r--r--macros/latex/contrib/l3experimental/l3color.dtx4
-rw-r--r--macros/latex/contrib/l3experimental/l3color.pdfbin350093 -> 349735 bytes
-rw-r--r--macros/latex/contrib/l3experimental/l3draw-boxes.dtx2
-rw-r--r--macros/latex/contrib/l3experimental/l3draw-code.pdfbin613079 -> 623901 bytes
-rw-r--r--macros/latex/contrib/l3experimental/l3draw-layers.dtx2
-rw-r--r--macros/latex/contrib/l3experimental/l3draw-paths.dtx2
-rw-r--r--macros/latex/contrib/l3experimental/l3draw-points.dtx2
-rw-r--r--macros/latex/contrib/l3experimental/l3draw-scopes.dtx2
-rw-r--r--macros/latex/contrib/l3experimental/l3draw-softpath.dtx2
-rw-r--r--macros/latex/contrib/l3experimental/l3draw-state.dtx2
-rw-r--r--macros/latex/contrib/l3experimental/l3draw-transforms.dtx2
-rw-r--r--macros/latex/contrib/l3experimental/l3draw.dtx4
-rw-r--r--macros/latex/contrib/l3experimental/l3draw.pdfbin491444 -> 491359 bytes
-rw-r--r--macros/latex/contrib/l3experimental/l3galley.dtx4
-rw-r--r--macros/latex/contrib/l3experimental/l3galley.pdfbin386124 -> 385782 bytes
-rw-r--r--macros/latex/contrib/l3experimental/l3graphics.dtx4
-rw-r--r--macros/latex/contrib/l3experimental/l3graphics.pdfbin363470 -> 363130 bytes
-rw-r--r--macros/latex/contrib/l3experimental/l3pdf-code.pdfbin276751 -> 277263 bytes
-rw-r--r--macros/latex/contrib/l3experimental/l3pdf.dtx4
-rw-r--r--macros/latex/contrib/l3experimental/l3pdf.pdfbin350290 -> 349804 bytes
-rw-r--r--macros/latex/contrib/l3experimental/l3str-format.dtx4
-rw-r--r--macros/latex/contrib/l3experimental/l3str-format.pdfbin345219 -> 344923 bytes
-rw-r--r--macros/latex/contrib/l3experimental/l3sys-shell.dtx4
-rw-r--r--macros/latex/contrib/l3experimental/l3sys-shell.pdfbin312113 -> 311683 bytes
-rw-r--r--macros/latex/contrib/l3experimental/xcoffins.dtx4
-rw-r--r--macros/latex/contrib/l3experimental/xcoffins.pdfbin373079 -> 372921 bytes
-rw-r--r--macros/latex/contrib/l3experimental/xgalley.dtx4
-rw-r--r--macros/latex/contrib/l3experimental/xgalley.pdfbin286254 -> 285702 bytes
-rw-r--r--macros/latex/contrib/l3kernel/CHANGELOG.md11
-rw-r--r--macros/latex/contrib/l3kernel/README.md2
-rw-r--r--macros/latex/contrib/l3kernel/expl3.dtx4
-rw-r--r--macros/latex/contrib/l3kernel/expl3.pdfbin585492 -> 585193 bytes
-rw-r--r--macros/latex/contrib/l3kernel/interface3.pdfbin1530174 -> 1530174 bytes
-rw-r--r--macros/latex/contrib/l3kernel/interface3.tex2
-rw-r--r--macros/latex/contrib/l3kernel/l3alloc.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3basics.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3bootstrap.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3box.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3candidates.dtx7
-rw-r--r--macros/latex/contrib/l3kernel/l3clist.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3coffins.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3color-base.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3deprecation.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3doc.dtx10
-rw-r--r--macros/latex/contrib/l3kernel/l3docstrip.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3docstrip.pdfbin263493 -> 263297 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3expan.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3file.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3final.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3flag.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-assign.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-aux.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-basics.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-convert.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-expo.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-extended.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-logic.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-parse.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-random.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-round.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-traps.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-trig.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3fp.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3fparray.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3int.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3intarray.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3kernel-functions.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3keys.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3legacy.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3luatex.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3msg.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3names.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3prefixes.pdfbin59020 -> 59020 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3prg.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3prop.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3quark.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3regex.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3seq.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3skip.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3sort.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3str-convert.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3str.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3styleguide.pdfbin280293 -> 280001 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3styleguide.tex2
-rw-r--r--macros/latex/contrib/l3kernel/l3syntax-changes.pdfbin228018 -> 227721 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3syntax-changes.tex2
-rw-r--r--macros/latex/contrib/l3kernel/l3sys.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3term-glossary.pdfbin186806 -> 186506 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3term-glossary.tex2
-rw-r--r--macros/latex/contrib/l3kernel/l3tl-analysis.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3tl.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3token.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3unicode.dtx46
-rw-r--r--macros/latex/contrib/l3kernel/source3.pdfbin5728479 -> 5731297 bytes
-rw-r--r--macros/latex/contrib/l3kernel/source3.tex2
-rw-r--r--macros/latex/contrib/mathastext/README.md48
-rw-r--r--macros/latex/contrib/mathastext/mathastext.dtx423
-rw-r--r--macros/latex/contrib/mathastext/mathastext.pdfbin464529 -> 475056 bytes
-rw-r--r--macros/latex/contrib/mathastext/mathastexttestalphabets.pdfbin43063 -> 43064 bytes
-rw-r--r--macros/latex/contrib/nicematrix/nicematrix-french.pdfbin313307 -> 316714 bytes
-rw-r--r--macros/latex/contrib/nicematrix/nicematrix-french.tex680
-rw-r--r--macros/latex/contrib/nicematrix/nicematrix.dtx426
-rw-r--r--macros/latex/contrib/nicematrix/nicematrix.pdfbin656608 -> 669704 bytes
-rw-r--r--macros/latex/contrib/ocgx2/ChangeLog5
-rw-r--r--macros/latex/contrib/ocgx2/README.md18
-rw-r--r--macros/latex/contrib/ocgx2/ocgx2.sty37
-rw-r--r--macros/latex/contrib/poemscol/poemscol.dtx140
-rw-r--r--macros/latex/contrib/poemscol/poemscol.pdfbin708776 -> 711468 bytes
-rw-r--r--macros/latex/contrib/tcolorbox/CHANGES24
-rw-r--r--macros/latex/contrib/tcolorbox/README2
-rw-r--r--macros/latex/contrib/tcolorbox/tcbbreakable.code.tex4
-rw-r--r--macros/latex/contrib/tcolorbox/tcbdocumentation.code.tex59
-rw-r--r--macros/latex/contrib/tcolorbox/tcbexternal.code.tex4
-rw-r--r--macros/latex/contrib/tcolorbox/tcbfitting.code.tex4
-rw-r--r--macros/latex/contrib/tcolorbox/tcbhooks.code.tex17
-rw-r--r--macros/latex/contrib/tcolorbox/tcblistings.code.tex4
-rw-r--r--macros/latex/contrib/tcolorbox/tcblistingscore.code.tex4
-rw-r--r--macros/latex/contrib/tcolorbox/tcblistingsutf8.code.tex4
-rw-r--r--macros/latex/contrib/tcolorbox/tcbmagazine.code.tex4
-rw-r--r--macros/latex/contrib/tcolorbox/tcbminted.code.tex4
-rw-r--r--macros/latex/contrib/tcolorbox/tcbposter.code.tex4
-rw-r--r--macros/latex/contrib/tcolorbox/tcbprocessing.code.tex4
-rw-r--r--macros/latex/contrib/tcolorbox/tcbraster.code.tex4
-rw-r--r--macros/latex/contrib/tcolorbox/tcbskins.code.tex4
-rw-r--r--macros/latex/contrib/tcolorbox/tcbskinsjigsaw.code.tex4
-rw-r--r--macros/latex/contrib/tcolorbox/tcbtheorems.code.tex4
-rw-r--r--macros/latex/contrib/tcolorbox/tcbvignette.code.tex4
-rw-r--r--macros/latex/contrib/tcolorbox/tcbxparse.code.tex10
-rw-r--r--macros/latex/contrib/tcolorbox/tcolorbox-example-poster.pdfbin273214 -> 274152 bytes
-rw-r--r--macros/latex/contrib/tcolorbox/tcolorbox-example-poster.tex2
-rw-r--r--macros/latex/contrib/tcolorbox/tcolorbox-example.pdfbin456409 -> 457694 bytes
-rw-r--r--macros/latex/contrib/tcolorbox/tcolorbox-example.tex2
-rw-r--r--macros/latex/contrib/tcolorbox/tcolorbox-tutorial-poster.pdfbin440925 -> 442887 bytes
-rw-r--r--macros/latex/contrib/tcolorbox/tcolorbox-tutorial-poster.tex2
-rw-r--r--macros/latex/contrib/tcolorbox/tcolorbox.doc.coreoptions.tex78
-rw-r--r--macros/latex/contrib/tcolorbox/tcolorbox.doc.documentation.tex152
-rw-r--r--macros/latex/contrib/tcolorbox/tcolorbox.doc.hooks.tex28
-rw-r--r--macros/latex/contrib/tcolorbox/tcolorbox.doc.recording.tex13
-rw-r--r--macros/latex/contrib/tcolorbox/tcolorbox.doc.s_main.sty1
-rw-r--r--macros/latex/contrib/tcolorbox/tcolorbox.doc.skins.tex22
-rw-r--r--macros/latex/contrib/tcolorbox/tcolorbox.pdfbin7938126 -> 7152247 bytes
-rw-r--r--macros/latex/contrib/tcolorbox/tcolorbox.sty36
-rw-r--r--macros/latex/contrib/tcolorbox/tcolorbox.tex10
149 files changed, 1859 insertions, 875 deletions
diff --git a/macros/latex/contrib/l3experimental/CHANGELOG.md b/macros/latex/contrib/l3experimental/CHANGELOG.md
index d2288ef1b9..a0af5b8ab3 100644
--- a/macros/latex/contrib/l3experimental/CHANGELOG.md
+++ b/macros/latex/contrib/l3experimental/CHANGELOG.md
@@ -7,6 +7,12 @@ this project uses date-based 'snapshot' version identifiers.
## [Unreleased]
+## [2019-09-19]
+
+### Changed
+
+- Various improvements to `l3cctab`
+
## [2019-08-25]
### Changed
@@ -112,7 +118,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/2019-08-25...HEAD
+[Unreleased]: https://github.com/latex3/latex3/compare/2019-09-19...HEAD
+[2019-09-19]: https://github.com/latex3/latex3/compare/2019-08-25...2019-09-19
[2019-08-25]: https://github.com/latex3/latex3/compare/2019-07-01...2019-08-25
[2019-07-01]: https://github.com/latex3/latex3/compare/2019-05-28...2019-07-01
[2019-05-28]: https://github.com/latex3/latex3/compare/2019-05-03...2019-05-28
diff --git a/macros/latex/contrib/l3experimental/README.md b/macros/latex/contrib/l3experimental/README.md
index 7892d19f5e..ad609e6174 100644
--- a/macros/latex/contrib/l3experimental/README.md
+++ b/macros/latex/contrib/l3experimental/README.md
@@ -1,7 +1,7 @@
Experimental LaTeX3 Concepts
============================
-Release 2019-08-25
+Release 2019-09-19
Overview
--------
diff --git a/macros/latex/contrib/l3experimental/l3benchmark.dtx b/macros/latex/contrib/l3experimental/l3benchmark.dtx
index c7b172488a..0df034cae8 100644
--- a/macros/latex/contrib/l3experimental/l3benchmark.dtx
+++ b/macros/latex/contrib/l3experimental/l3benchmark.dtx
@@ -46,7 +46,7 @@
% }^^A
% }
%
-% \date{Released 2019-08-25}
+% \date{Released 2019-09-19}
%
% \maketitle
%
@@ -130,7 +130,7 @@
%
% \begin{macrocode}
%<*package>
-\ProvidesExplPackage{l3benchmark}{2019-08-25}{}
+\ProvidesExplPackage{l3benchmark}{2019-09-19}{}
{L3 Experimental benchmarking}
%</package>
% \end{macrocode}
diff --git a/macros/latex/contrib/l3experimental/l3benchmark.pdf b/macros/latex/contrib/l3experimental/l3benchmark.pdf
index 99eeeb6285..c1247e2887 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/l3cctab.dtx b/macros/latex/contrib/l3experimental/l3cctab.dtx
index 85a029b9bf..a56585c1ff 100644
--- a/macros/latex/contrib/l3experimental/l3cctab.dtx
+++ b/macros/latex/contrib/l3experimental/l3cctab.dtx
@@ -46,7 +46,7 @@
% }^^A
% }
%
-% \date{Released 2019-08-25}
+% \date{Released 2019-09-19}
%
% \maketitle
%
@@ -59,24 +59,29 @@
% range. For other engines, only the $8$-bit range ($0$-$255$) is covered by
% such tables.
%
-% \begin{function}{\cctab_new:N}
+% \subsection{Creating and initialising category code tables}
+%
+% \begin{function}{\cctab_new:N,\cctab_new:c}
% \begin{syntax}
% \cs{cctab_new:N} \meta{category code table}
% \end{syntax}
-% Creates a new category code table, initially with the codes as
-% used by \IniTeX{}.
+% Creates a new \meta{category code table} variable or raises an error if
+% the name is already taken. The declaration is global. The
+% \meta{category code table} is initialised with the codes
+% as used by \IniTeX{}.
% \end{function}
%
-% \begin{function}{\cctab_const:Nn}
+% \begin{function}{\cctab_const:Nn,\cctab_const:cn}
% \begin{syntax}
% \cs{cctab_const:Nn} \meta{category code table} \Arg{category code set up}
% \end{syntax}
-% Creates a new category code table and applies the
+% Creates a new \meta{category code table} with the category code settings in
+% force at the time the function is called, and applies the
% \meta{category code set up} on top of prevailing settings, then saves
% as a constant table.
% \end{function}
%
-% \begin{function}{\cctab_gset:Nn}
+% \begin{function}{\cctab_gset:Nn,\cctab_gset:cn}
% \begin{syntax}
% \cs{cctab_gset:Nn} \meta{category code table} \Arg{category code set up}
% \end{syntax}
@@ -88,14 +93,16 @@
% not respect grouping.
% \end{function}
%
-% \begin{function}{\cctab_begin:N}
+% \subsection{Using category code tables}
+%
+% \begin{function}{\cctab_begin:N,\cctab_begin:c}
% \begin{syntax}
% \cs{cctab_begin:N} \meta{category code table}
% \end{syntax}
% Switches the category codes in force to those stored in the
% \meta{category code table}. The prevailing codes before the
% function is called are added to a stack, for use with
-% \cs{cctab_end:}.
+% \cs{cctab_end:}. This function does not start a \TeX{} group.
% \end{function}
%
% \begin{function}{\cctab_end:}
@@ -103,10 +110,24 @@
% \cs{cctab_end:}
% \end{syntax}
% Ends the scope of a \meta{category code table} started using
-% \cs{cctab_begin:N}, retuning the codes to those in force before the
-% matching \cs{cctab_begin:N} was used.
+% \cs{cctab_begin:N}, retuning the codes to those in force before
+% the matching \cs{cctab_begin:N} was used.
+% \end{function}
+%
+% \subsection{Category code table conditionals}
+%
+% \begin{function}[pTF]{\cctab_if_exist:N,\cctab_if_exist:c}
+% \begin{syntax}
+% \cs{cctab_if_exist_p:N} \meta{category code table}
+% \cs{cctab_if_exist:NTF} \meta{category code table} \Arg{true code} \Arg{false code}
+% \end{syntax}
+% Tests whether the \meta{category code table} is currently defined.
+% This does not check that the \meta{category code table} really is a
+% category code table.
% \end{function}
%
+% \subsection{Constant category code tables}
+%
% \begin{variable}{\c_code_cctab}
% Category code table for the code environment. This does not include
% setting the behaviour of the line-end character, which is only
@@ -150,7 +171,7 @@
%
% \begin{macrocode}
%<*package>
-\ProvidesExplPackage{l3cctab}{2019-08-25}{}
+\ProvidesExplPackage{l3cctab}{2019-09-19}{}
{L3 Experimental category code tables}
%</package>
% \end{macrocode}
@@ -178,10 +199,10 @@
% \end{macrocode}
% \end{variable}
%
-% \begin{macro}{\cctab_new:N}
-% \begin{macro}{\cctab_begin:N}
-% \begin{macro}{\cctab_end:}
-% \begin{macro}{\cctab_gset:Nn}
+% \begin{macro}{\cctab_new:N,\cctab_new:c}
+% \begin{macro}{\@@_begin:N,\@@_begin:c}
+% \begin{macro}{\@@_end:}
+% \begin{macro}{\cctab_gset:Nn,\cctab_gset:cn}
% As \LuaTeX{} offers engine support for category code tables, and this is
% entirely lacking from the other engines, we need two complementary
% approaches here. Rather than intermix them, we split the set up based on
@@ -226,7 +247,7 @@
% done by using a stack of tables which are not read only, and actually
% having them as \enquote{in use} copies.
% \begin{macrocode}
- \cs_new_protected:Npn \cctab_begin:N #1
+ \cs_new_protected:Npn \@@_begin:N #1
{
\seq_gpush:Nx \g_@@_stack_seq { \tex_the:D \tex_catcodetable:D }
\tex_catcodetable:D #1
@@ -236,7 +257,7 @@
\tex_savecatcodetable:D \g_@@_stack_int
\tex_catcodetable:D \g_@@_stack_int
}
- \cs_new_protected:Npn \cctab_end:
+ \cs_new_protected:Npn \@@_end:
{
\int_gsub:Nn \g_@@_stack_int { 2 }
\seq_if_empty:NTF \g_@@_stack_seq
@@ -252,7 +273,7 @@
\cs_new_protected:Npn \cctab_gset:Nn #1#2
{
\group_begin:
- #2
+ #2 \scan_stop:
\tex_savecatcodetable:D #1
\group_end:
}
@@ -288,14 +309,14 @@
\@@_gstore:Nnn #1 { 13 } { 5 }
\@@_gstore:Nnn #1 { 32 } { 10 }
\@@_gstore:Nnn #1 { 37 } { 14 }
- \int_step_inline:nnn { 64 } { 89 }
+ \int_step_inline:nnn { 65 } { 90 }
{ \@@_gstore:Nnn #1 {##1} { 11 } }
\@@_gstore:Nnn #1 { 92 } { 0 }
\int_step_inline:nnn { 97 } { 122 }
{ \@@_gstore:Nnn #1 {##1} { 11 } }
\@@_gstore:Nnn #1 { 127 } { 15 }
}
- \cs_new_protected:Npn \cctab_begin:N #1
+ \cs_new_protected:Npn \@@_begin:N #1
{
\int_gadd:Nn \g_@@_stack_int { 2 }
\int_compare:nNnT \g_@@_stack_int > \c_max_register_int
@@ -324,7 +345,7 @@
}
\cs_generate_variant:Nn \intarray_new:Nn { c }
\cs_generate_variant:Nn \intarray_gset:Nnn { c }
- \cs_new_protected:Npn \cctab_end:
+ \cs_new_protected:Npn \@@_end:
{
\int_step_inline:nn { 256 }
{
@@ -335,13 +356,13 @@
{##1}
}
}
- \int_gsub:Nn \g_@@_stack_int { 1 }
+ \int_gsub:Nn \g_@@_stack_int { 2 }
}
\cs_generate_variant:Nn \intarray_item:Nn { c }
\cs_new_protected:Npn \cctab_gset:Nn #1#2
{
\group_begin:
- #2
+ #2 \scan_stop:
\int_step_inline:nn { 256 }
{
\intarray_gset:cnn { g_@@_ \int_use:N #1 _cctab } {##1}
@@ -350,19 +371,119 @@
\group_end:
}
}
+\cs_generate_variant:Nn \cctab_new:N { c }
+\cs_generate_variant:Nn \cctab_gset:Nn { c }
% \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
%
-% \begin{macro}{\cctab_const:Nn}
+% \begin{macro}{\cctab_begin:N,\cctab_end:}
+% These functions perform a few sanity checks before calling the
+% functions which will do the heavy-lifting.
+% \cs{cctab_begin:N} checks if a \meta{cctab~var} exists before trying
+% to use it. \cs{cctab_end:} checks if a \cs{cctab_begin:N} was used
+% some time earlier.
+%
+% Skipping these checks would result in an \enquote{Undefined control
+% sequence} error for \cs{cctab_begin:N} with an undefined
+% \meta{cctab~var}, and a \enquote{Missing font identifier} for an extra
+% \cs{cctab_end:}.
+% \begin{macrocode}
+\cs_new_protected:Npn \cctab_begin:N #1
+ { \@@_chk_if_valid:NT #1 { \__cctab_begin:N #1 } }
+\cs_generate_variant:Nn \cctab_begin:N { c }
+\cs_new_protected:Npn \cctab_end:
+ {
+ \int_compare:nNnTF { \g_@@_stack_int } = { \c_zero_int }
+ { \__kernel_msg_error:nn { kernel } { cctab-extra-end } }
+ { \@@_end: }
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\cctab_if_exist:N,\cctab_if_exist:c}
+% Checks whether a \meta{cctab~var} is defined.
+% \begin{macrocode}
+\prg_new_eq_conditional:NNn \cctab_if_exist:N \cs_if_exist:N
+ { TF , T , F , p }
+\prg_new_eq_conditional:NNn \cctab_if_exist:c \cs_if_exist:c
+ { TF , T , F , p }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_chk_if_valid:N}
+% Checks whether the argument is defined and whether it is a valid
+% \meta{cctab~var}. In \LuaTeX{} the validity of the \meta{cctab~var}
+% is checked by the engine, which complains if the argument is not
+% a \cs{chardef}'ed constant. In other engines, check if the
+% underlying \cs[no-index]{g_@@_\meta{integer}_cctab}
+% \meta{intarray~var} exists.
+% \begin{macrocode}
+\sys_if_engine_luatex:TF
+ {
+ \prg_new_protected_conditional:Npnn \@@_chk_if_valid:N #1
+ { TF , T , F }
+ {
+ \cctab_if_exist:NTF #1
+ {
+%<*initex>
+ \bool_lazy_and:nnTF
+ { \int_if_odd_p:n {#1} }
+ { \int_compare_p:nNn {#1-1} < { \g_@@_allocate_int } }
+%</initex>
+%<*package>
+ \int_compare:nNnTF {#1-1} < { \e@alloc@ccodetable@count }
+%</package>
+ { \prg_return_true: }
+ {
+ \__kernel_msg_error:nnx { kernel } { invalid-cctab }
+ { \token_to_str:N #1 }
+ \prg_return_false:
+ }
+ }
+ {
+ \__kernel_msg_error:nnx { kernel } { command-not-defined }
+ { \token_to_str:N #1 }
+ \prg_return_false:
+ }
+ }
+ }
+ {
+ \prg_new_protected_conditional:Npnn \@@_chk_if_valid:N #1
+ { TF , T , F }
+ {
+ \cctab_if_exist:NTF #1
+ {
+ \cs_if_exist:cTF { g_@@_ \int_use:N #1 _cctab }
+ { \prg_return_true: }
+ {
+ \__kernel_msg_error:nnx { kernel } { invalid-cctab }
+ { \token_to_str:N #1 }
+ \prg_return_false:
+ }
+ }
+ {
+ \__kernel_msg_error:nnx { kernel } { command-not-defined }
+ { \token_to_str:N #1 }
+ \prg_return_false:
+ }
+ }
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\cctab_const:Nn,\cctab_const:cn}
+% Creates a new \meta{cctab~var} then sets it with the current and
+% user-supplied codes.
% \begin{macrocode}
\cs_new_protected:Npn \cctab_const:Nn #1#2
{
\cctab_new:N #1
\cctab_gset:Nn #1 {#2}
}
+\cs_generate_variant:Nn \cctab_const:Nn { c }
% \end{macrocode}
% \end{macro}
%
@@ -371,7 +492,6 @@
% \c_initex_cctab ,
% \c_code_cctab ,
% \c_document_cctab ,
-% \c_initex_cctab ,
% \c_other_cctab ,
% \c_str_cctab
% }
@@ -379,6 +499,7 @@
% The \texttt{other} and \texttt{string} ones are done by completely
% ignoring the existing codes as this makes life a lot less complex.
% \begin{macrocode}
+\cctab_new:N \c_initex_cctab
\cctab_const:Nn \c_code_cctab { }
\cctab_const:Nn \c_document_cctab
{
@@ -411,6 +532,19 @@
LaTeX~has~been~asked~to~switch~to~a~new~category~code~table,~
but~there~is~no~more~space~to~do~this!
}
+\__kernel_msg_new:nnnn { kernel } { cctab-extra-end }
+ { Extra~\iow_char:N\\cctab_end:~ignored~\msg_line_context:. }
+ {
+ LaTeX~came~across~a~\iow_char:N\\cctab_end:~without~a~matching~
+ \iow_char:N\\cctab_begin:N.~This~command~will~be~ignored.
+ }
+\__kernel_msg_new:nnnn { kernel } { invalid-cctab }
+ { Invalid~\iow_char:N\\catcode~table. }
+ {
+ You~can~only~switch~to~a~\iow_char:N\\catcode~table~that~is~
+ initialized~using~\iow_char:N\\cctab_new:N~or~
+ \iow_char:N\\cctab_const:Nn.
+ }
% \end{macrocode}
%
% \begin{macrocode}
diff --git a/macros/latex/contrib/l3experimental/l3cctab.pdf b/macros/latex/contrib/l3experimental/l3cctab.pdf
index 171cf0d26d..1535d5bf53 100644
--- a/macros/latex/contrib/l3experimental/l3cctab.pdf
+++ b/macros/latex/contrib/l3experimental/l3cctab.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3experimental/l3color.dtx b/macros/latex/contrib/l3experimental/l3color.dtx
index 107d6684d2..0abd832212 100644
--- a/macros/latex/contrib/l3experimental/l3color.dtx
+++ b/macros/latex/contrib/l3experimental/l3color.dtx
@@ -46,7 +46,7 @@
% }^^A
% }
%
-% \date{Released 2019-08-25}
+% \date{Released 2019-09-19}
%
% \maketitle
%
@@ -265,7 +265,7 @@
%
% \begin{macrocode}
%<*package>
-\ProvidesExplPackage{l3color}{2019-08-25}{}
+\ProvidesExplPackage{l3color}{2019-09-19}{}
{L3 Experimental color support}
%</package>
% \end{macrocode}
diff --git a/macros/latex/contrib/l3experimental/l3color.pdf b/macros/latex/contrib/l3experimental/l3color.pdf
index 9483d29d46..bd2424c7e0 100644
--- a/macros/latex/contrib/l3experimental/l3color.pdf
+++ b/macros/latex/contrib/l3experimental/l3color.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3experimental/l3draw-boxes.dtx b/macros/latex/contrib/l3experimental/l3draw-boxes.dtx
index 2eeacd0d0a..9799c3238f 100644
--- a/macros/latex/contrib/l3experimental/l3draw-boxes.dtx
+++ b/macros/latex/contrib/l3experimental/l3draw-boxes.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2019-08-25}
+% \date{Released 2019-09-19}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3experimental/l3draw-code.pdf b/macros/latex/contrib/l3experimental/l3draw-code.pdf
index 78eeeead50..ca93058ce3 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 ad35237954..f0b7afb1b4 100644
--- a/macros/latex/contrib/l3experimental/l3draw-layers.dtx
+++ b/macros/latex/contrib/l3experimental/l3draw-layers.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2019-08-25}
+% \date{Released 2019-09-19}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3experimental/l3draw-paths.dtx b/macros/latex/contrib/l3experimental/l3draw-paths.dtx
index 2981612ac4..f4bb5eb022 100644
--- a/macros/latex/contrib/l3experimental/l3draw-paths.dtx
+++ b/macros/latex/contrib/l3experimental/l3draw-paths.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2019-08-25}
+% \date{Released 2019-09-19}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3experimental/l3draw-points.dtx b/macros/latex/contrib/l3experimental/l3draw-points.dtx
index a171b598e7..87fda4bf68 100644
--- a/macros/latex/contrib/l3experimental/l3draw-points.dtx
+++ b/macros/latex/contrib/l3experimental/l3draw-points.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2019-08-25}
+% \date{Released 2019-09-19}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3experimental/l3draw-scopes.dtx b/macros/latex/contrib/l3experimental/l3draw-scopes.dtx
index d20921a0a9..f98947f09a 100644
--- a/macros/latex/contrib/l3experimental/l3draw-scopes.dtx
+++ b/macros/latex/contrib/l3experimental/l3draw-scopes.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2019-08-25}
+% \date{Released 2019-09-19}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3experimental/l3draw-softpath.dtx b/macros/latex/contrib/l3experimental/l3draw-softpath.dtx
index 5fb02c3cea..12072fa678 100644
--- a/macros/latex/contrib/l3experimental/l3draw-softpath.dtx
+++ b/macros/latex/contrib/l3experimental/l3draw-softpath.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2019-08-25}
+% \date{Released 2019-09-19}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3experimental/l3draw-state.dtx b/macros/latex/contrib/l3experimental/l3draw-state.dtx
index e0718ef4d9..91c0d48644 100644
--- a/macros/latex/contrib/l3experimental/l3draw-state.dtx
+++ b/macros/latex/contrib/l3experimental/l3draw-state.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2019-08-25}
+% \date{Released 2019-09-19}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3experimental/l3draw-transforms.dtx b/macros/latex/contrib/l3experimental/l3draw-transforms.dtx
index 3ab6a81bd6..2a34520ff3 100644
--- a/macros/latex/contrib/l3experimental/l3draw-transforms.dtx
+++ b/macros/latex/contrib/l3experimental/l3draw-transforms.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2019-08-25}
+% \date{Released 2019-09-19}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3experimental/l3draw.dtx b/macros/latex/contrib/l3experimental/l3draw.dtx
index 971ebc6caa..0a93ec16ed 100644
--- a/macros/latex/contrib/l3experimental/l3draw.dtx
+++ b/macros/latex/contrib/l3experimental/l3draw.dtx
@@ -110,7 +110,7 @@
% }^^A
% }
%
-% \date{Released 2019-08-25}
+% \date{Released 2019-09-19}
%
% \maketitle
%
@@ -1146,7 +1146,7 @@
%
% \begin{macrocode}
%<*package>
-\ProvidesExplPackage{l3draw}{2019-08-25}{}
+\ProvidesExplPackage{l3draw}{2019-09-19}{}
{L3 Experimental core drawing support}
%</package>
% \end{macrocode}
diff --git a/macros/latex/contrib/l3experimental/l3draw.pdf b/macros/latex/contrib/l3experimental/l3draw.pdf
index 9be0aca173..a3b6c4e84a 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 2db96ef33b..bdbbe9d476 100644
--- a/macros/latex/contrib/l3experimental/l3galley.dtx
+++ b/macros/latex/contrib/l3experimental/l3galley.dtx
@@ -61,7 +61,7 @@
% }^^A
% }
%
-% \date{Released 2019-08-25}
+% \date{Released 2019-09-19}
%
% \maketitle
%
@@ -687,7 +687,7 @@
%
% \begin{macrocode}
%<*package>
-\ProvidesExplPackage{l3galley}{2019-08-25}{}
+\ProvidesExplPackage{l3galley}{2019-09-19}{}
{L3 Experimental galley code}
%</package>
% \end{macrocode}
diff --git a/macros/latex/contrib/l3experimental/l3galley.pdf b/macros/latex/contrib/l3experimental/l3galley.pdf
index 09277e5949..9912434768 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 d65bce66d4..c9e3020084 100644
--- a/macros/latex/contrib/l3experimental/l3graphics.dtx
+++ b/macros/latex/contrib/l3experimental/l3graphics.dtx
@@ -46,7 +46,7 @@
% }^^A
% }
%
-% \date{Released 2019-08-25}
+% \date{Released 2019-09-19}
%
% \maketitle
%
@@ -241,7 +241,7 @@
%
% \begin{macrocode}
%<*package>
-\ProvidesExplPackage{l3graphics}{2019-08-25}{}
+\ProvidesExplPackage{l3graphics}{2019-09-19}{}
{L3 Experimental graphics inclusion support}
%</package>
% \end{macrocode}
diff --git a/macros/latex/contrib/l3experimental/l3graphics.pdf b/macros/latex/contrib/l3experimental/l3graphics.pdf
index 3a904d5f29..0e0ba73a63 100644
--- a/macros/latex/contrib/l3experimental/l3graphics.pdf
+++ b/macros/latex/contrib/l3experimental/l3graphics.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3experimental/l3pdf-code.pdf b/macros/latex/contrib/l3experimental/l3pdf-code.pdf
index 0b2e370f8d..1f0c62ed8d 100644
--- a/macros/latex/contrib/l3experimental/l3pdf-code.pdf
+++ b/macros/latex/contrib/l3experimental/l3pdf-code.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3experimental/l3pdf.dtx b/macros/latex/contrib/l3experimental/l3pdf.dtx
index 413122a996..a8801c7e46 100644
--- a/macros/latex/contrib/l3experimental/l3pdf.dtx
+++ b/macros/latex/contrib/l3experimental/l3pdf.dtx
@@ -46,7 +46,7 @@
% }^^A
% }
%
-% \date{Released 2019-08-25}
+% \date{Released 2019-09-19}
%
% \maketitle
%
@@ -185,7 +185,7 @@
%
% \begin{macrocode}
%<*package>
-\ProvidesExplPackage{l3pdf}{2019-08-25}{}
+\ProvidesExplPackage{l3pdf}{2019-09-19}{}
{L3 Experimental core PDF support}
%</package>
% \end{macrocode}
diff --git a/macros/latex/contrib/l3experimental/l3pdf.pdf b/macros/latex/contrib/l3experimental/l3pdf.pdf
index 55200d2c56..9fa57b85df 100644
--- a/macros/latex/contrib/l3experimental/l3pdf.pdf
+++ b/macros/latex/contrib/l3experimental/l3pdf.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3experimental/l3str-format.dtx b/macros/latex/contrib/l3experimental/l3str-format.dtx
index 17c2dad4a0..ab96267593 100644
--- a/macros/latex/contrib/l3experimental/l3str-format.dtx
+++ b/macros/latex/contrib/l3experimental/l3str-format.dtx
@@ -48,7 +48,7 @@
% }^^A
% }
%
-% \date{Released 2019-08-25}
+% \date{Released 2019-09-19}
%
% \maketitle
%
@@ -167,7 +167,7 @@
%
% \begin{macrocode}
%<*package>
-\ProvidesExplPackage{l3str-format}{2019-08-25}{}
+\ProvidesExplPackage{l3str-format}{2019-09-19}{}
{L3 Experimental string formatting}
%</package>
% \end{macrocode}
diff --git a/macros/latex/contrib/l3experimental/l3str-format.pdf b/macros/latex/contrib/l3experimental/l3str-format.pdf
index 5ccd8f3762..be043eef3e 100644
--- a/macros/latex/contrib/l3experimental/l3str-format.pdf
+++ b/macros/latex/contrib/l3experimental/l3str-format.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3experimental/l3sys-shell.dtx b/macros/latex/contrib/l3experimental/l3sys-shell.dtx
index 4f8c3bee40..2663bce59d 100644
--- a/macros/latex/contrib/l3experimental/l3sys-shell.dtx
+++ b/macros/latex/contrib/l3experimental/l3sys-shell.dtx
@@ -46,7 +46,7 @@
% }^^A
% }
%
-% \date{Released 2019-08-25}
+% \date{Released 2019-09-19}
%
% \maketitle
%
@@ -136,7 +136,7 @@
%
% \begin{macrocode}
%<*package>
-\ProvidesExplPackage{l3sys-shell}{2019-08-25}{}
+\ProvidesExplPackage{l3sys-shell}{2019-09-19}{}
{L3 Experimental system shell functions}
%</package>
% \end{macrocode}
diff --git a/macros/latex/contrib/l3experimental/l3sys-shell.pdf b/macros/latex/contrib/l3experimental/l3sys-shell.pdf
index 6b890dcc85..e00d1e4b56 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 3e9f723488..c3d5739f82 100644
--- a/macros/latex/contrib/l3experimental/xcoffins.dtx
+++ b/macros/latex/contrib/l3experimental/xcoffins.dtx
@@ -56,7 +56,7 @@
% }^^A
% }
%
-% \date{Released 2019-08-25}
+% \date{Released 2019-09-19}
%
% \maketitle
%
@@ -675,7 +675,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{xcoffins}{2019-08-25}{}
+\ProvidesExplPackage{xcoffins}{2019-09-19}{}
{L3 Experimental design level coffins}
% \end{macrocode}
%
diff --git a/macros/latex/contrib/l3experimental/xcoffins.pdf b/macros/latex/contrib/l3experimental/xcoffins.pdf
index 61bd99bb58..8721e4d8c3 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 5544223ad7..25c393a76c 100644
--- a/macros/latex/contrib/l3experimental/xgalley.dtx
+++ b/macros/latex/contrib/l3experimental/xgalley.dtx
@@ -47,7 +47,7 @@
% }^^A
% }
%
-% \date{Released 2019-08-25}
+% \date{Released 2019-09-19}
%
% \maketitle
%
@@ -734,7 +734,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{xgalley}{2019-08-25}{}
+\ProvidesExplPackage{xgalley}{2019-09-19}{}
{L3 Experimental galley}
\RequirePackage{xparse,xtemplate,l3galley}
% \end{macrocode}
diff --git a/macros/latex/contrib/l3experimental/xgalley.pdf b/macros/latex/contrib/l3experimental/xgalley.pdf
index 9ca057e508..482a8a94ad 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 505bb1f9cb..f483c78306 100644
--- a/macros/latex/contrib/l3kernel/CHANGELOG.md
+++ b/macros/latex/contrib/l3kernel/CHANGELOG.md
@@ -7,6 +7,12 @@ this project uses date-based 'snapshot' version identifiers.
## [Unreleased]
+## [2019-09-19]
+
+### Fixed
+
+- Loading Unicode data when some chars may be active (see #627)
+
## [2019-09-08]
### Fixed
@@ -64,7 +70,7 @@ this project uses date-based 'snapshot' version identifiers.
### Added
-- Moved `lstr-convert` module to `l3kernel`
+- Moved `l3str-convert` module to `l3kernel`
### Changed
@@ -487,7 +493,8 @@ this project uses date-based 'snapshot' version identifiers.
- Step func­tions have been added for dim vari­ables,
e.g. `\dim_step_in­line:nnnn`
-[Unreleased]: https://github.com/latex3/latex3/compare/2019-09-08...HEAD
+[Unreleased]: https://github.com/latex3/latex3/compare/2019-09-19...HEAD
+[2019-09-19]: https://github.com/latex3/latex3/compare/2019-09-08...2019-09-19
[2019-09-08]: https://github.com/latex3/latex3/compare/2019-09-05...2019-09-08
[2019-09-05]: https://github.com/latex3/latex3/compare/2019-08-25...2019-09-05
[2019-08-25]: https://github.com/latex3/latex3/compare/2019-08-14...2019-08-25
diff --git a/macros/latex/contrib/l3kernel/README.md b/macros/latex/contrib/l3kernel/README.md
index 86ec1d4f40..ea663ab1e1 100644
--- a/macros/latex/contrib/l3kernel/README.md
+++ b/macros/latex/contrib/l3kernel/README.md
@@ -1,7 +1,7 @@
LaTeX3 Programming Conventions
==============================
-Release 2019-09-08
+Release 2019-09-19
Overview
--------
diff --git a/macros/latex/contrib/l3kernel/expl3.dtx b/macros/latex/contrib/l3kernel/expl3.dtx
index 8ee68c6d4a..9aa2421de3 100644
--- a/macros/latex/contrib/l3kernel/expl3.dtx
+++ b/macros/latex/contrib/l3kernel/expl3.dtx
@@ -23,7 +23,7 @@
% for those people who are interested.
%
%<*driver|generic|package>
-\def\ExplFileDate{2019-09-08}%
+\def\ExplFileDate{2019-09-19}%
%</driver|generic|package>
%<*driver>
\documentclass[full]{l3doc}
@@ -51,7 +51,7 @@
% }^^A
% }
%
-% \date{Released 2019-09-08}
+% \date{Released 2019-09-19}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/expl3.pdf b/macros/latex/contrib/l3kernel/expl3.pdf
index e8ed512186..2dccb5f37c 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 1822006a81..ed56cf9581 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 21c7afbd74..b1e51566db 100644
--- a/macros/latex/contrib/l3kernel/interface3.tex
+++ b/macros/latex/contrib/l3kernel/interface3.tex
@@ -54,7 +54,7 @@ for those people who are interested.
{latex-team@latex-project.org}%
}%
}
-\date{Released 2019-09-08}
+\date{Released 2019-09-19}
\pagenumbering{roman}
\maketitle
diff --git a/macros/latex/contrib/l3kernel/l3alloc.dtx b/macros/latex/contrib/l3kernel/l3alloc.dtx
index cccbff88ba..ea73886535 100644
--- a/macros/latex/contrib/l3kernel/l3alloc.dtx
+++ b/macros/latex/contrib/l3kernel/l3alloc.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-09-08}
+% \date{Released 2019-09-19}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3basics.dtx b/macros/latex/contrib/l3kernel/l3basics.dtx
index eca898bac7..1901447816 100644
--- a/macros/latex/contrib/l3kernel/l3basics.dtx
+++ b/macros/latex/contrib/l3kernel/l3basics.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-09-08}
+% \date{Released 2019-09-19}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3bootstrap.dtx b/macros/latex/contrib/l3kernel/l3bootstrap.dtx
index 2d7990f941..d694a67540 100644
--- a/macros/latex/contrib/l3kernel/l3bootstrap.dtx
+++ b/macros/latex/contrib/l3kernel/l3bootstrap.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-09-08}
+% \date{Released 2019-09-19}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3box.dtx b/macros/latex/contrib/l3kernel/l3box.dtx
index a8bcffd2f5..c72206a2b2 100644
--- a/macros/latex/contrib/l3kernel/l3box.dtx
+++ b/macros/latex/contrib/l3kernel/l3box.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-09-08}
+% \date{Released 2019-09-19}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3candidates.dtx b/macros/latex/contrib/l3kernel/l3candidates.dtx
index 88c10ab72d..96dbdc5c78 100644
--- a/macros/latex/contrib/l3kernel/l3candidates.dtx
+++ b/macros/latex/contrib/l3kernel/l3candidates.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2019-09-08}
+% \date{Released 2019-09-19}
%
% \maketitle
%
@@ -3673,7 +3673,10 @@
{
\group_begin:
\cs_set:Npn \@@_tmp:n #1
- { \char_generate:nn {#1} { \char_value_catcode:n {#1} } }
+ {
+ \exp_after:wN \exp_after:wN \exp_after:wN \exp_not:N
+ \char_generate:nn {#1} { \char_value_catcode:n {#1} }
+ }
\tl_const:Nx \c_@@_std_sigma_tl { \@@_tmp:n { "03C3 } }
\tl_const:Nx \c_@@_final_sigma_tl { \@@_tmp:n { "03C2 } }
\tl_const:Nx \c_@@_accents_lt_tl
diff --git a/macros/latex/contrib/l3kernel/l3clist.dtx b/macros/latex/contrib/l3kernel/l3clist.dtx
index 912f4ac92f..f2664fa77f 100644
--- a/macros/latex/contrib/l3kernel/l3clist.dtx
+++ b/macros/latex/contrib/l3kernel/l3clist.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2019-09-08}
+% \date{Released 2019-09-19}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3coffins.dtx b/macros/latex/contrib/l3kernel/l3coffins.dtx
index 8f72cea588..6c084d19d9 100644
--- a/macros/latex/contrib/l3kernel/l3coffins.dtx
+++ b/macros/latex/contrib/l3kernel/l3coffins.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-09-08}
+% \date{Released 2019-09-19}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3color-base.dtx b/macros/latex/contrib/l3kernel/l3color-base.dtx
index 65b93467f4..93dae47797 100644
--- a/macros/latex/contrib/l3kernel/l3color-base.dtx
+++ b/macros/latex/contrib/l3kernel/l3color-base.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-09-08}
+% \date{Released 2019-09-19}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3deprecation.dtx b/macros/latex/contrib/l3kernel/l3deprecation.dtx
index 42f588f7b7..41a8bed1a2 100644
--- a/macros/latex/contrib/l3kernel/l3deprecation.dtx
+++ b/macros/latex/contrib/l3kernel/l3deprecation.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-09-08}
+% \date{Released 2019-09-19}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3doc.dtx b/macros/latex/contrib/l3kernel/l3doc.dtx
index ddf3763506..30270adf8a 100644
--- a/macros/latex/contrib/l3kernel/l3doc.dtx
+++ b/macros/latex/contrib/l3kernel/l3doc.dtx
@@ -79,7 +79,7 @@ and all files in that bundle must be distributed together.
%
% \title{The \cls{l3doc} class}
% \author{\Team}
-% \date{Released 2019-09-08}
+% \date{Released 2019-09-19}
% \maketitle
% \tableofcontents
%
@@ -1474,11 +1474,9 @@ and all files in that bundle must be distributed together.
{ Local~config~file~l3doc.cfg~loaded. }
\file_if_exist:nT { l3doc.cfg }
{
- \file_input:nT { l3doc.cfg }
- {
- \cs_if_exist:cF { ExplMakeTitle }
- { \msg_info:nn { l3doc } { input-cfg } }
- }
+ \file_input:n { l3doc.cfg }
+ \cs_if_exist:cF { ExplMakeTitle }
+ { \msg_info:nn { l3doc } { input-cfg } }
}
% \end{macrocode}
%
diff --git a/macros/latex/contrib/l3kernel/l3docstrip.dtx b/macros/latex/contrib/l3kernel/l3docstrip.dtx
index 85ba9d5f37..fbb65b543d 100644
--- a/macros/latex/contrib/l3kernel/l3docstrip.dtx
+++ b/macros/latex/contrib/l3kernel/l3docstrip.dtx
@@ -63,7 +63,7 @@
% }^^A
% }
%
-% \date{Released 2019-09-08}
+% \date{Released 2019-09-19}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3docstrip.pdf b/macros/latex/contrib/l3kernel/l3docstrip.pdf
index b92f033e93..e63fb201c9 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 97daafecd2..ab6ec3271b 100644
--- a/macros/latex/contrib/l3kernel/l3expan.dtx
+++ b/macros/latex/contrib/l3kernel/l3expan.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-09-08}
+% \date{Released 2019-09-19}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3file.dtx b/macros/latex/contrib/l3kernel/l3file.dtx
index 82b217eaef..c40f61acbd 100644
--- a/macros/latex/contrib/l3kernel/l3file.dtx
+++ b/macros/latex/contrib/l3kernel/l3file.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2019-09-08}
+% \date{Released 2019-09-19}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3final.dtx b/macros/latex/contrib/l3kernel/l3final.dtx
index 68c6b9bbea..4519a4639b 100644
--- a/macros/latex/contrib/l3kernel/l3final.dtx
+++ b/macros/latex/contrib/l3kernel/l3final.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-09-08}
+% \date{Released 2019-09-19}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3flag.dtx b/macros/latex/contrib/l3kernel/l3flag.dtx
index 0878cf497f..90e5a012bc 100644
--- a/macros/latex/contrib/l3kernel/l3flag.dtx
+++ b/macros/latex/contrib/l3kernel/l3flag.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-09-08}
+% \date{Released 2019-09-19}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp-assign.dtx b/macros/latex/contrib/l3kernel/l3fp-assign.dtx
index 9abdc8cde5..93ea9dedc8 100644
--- a/macros/latex/contrib/l3kernel/l3fp-assign.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-assign.dtx
@@ -40,7 +40,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2019-09-08}
+% \date{Released 2019-09-19}
% \maketitle
%
% \begin{documentation}
diff --git a/macros/latex/contrib/l3kernel/l3fp-aux.dtx b/macros/latex/contrib/l3kernel/l3fp-aux.dtx
index 135edcd691..3402c4ed9b 100644
--- a/macros/latex/contrib/l3kernel/l3fp-aux.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-aux.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-09-08}
+% \date{Released 2019-09-19}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp-basics.dtx b/macros/latex/contrib/l3kernel/l3fp-basics.dtx
index 43ae6568d0..1d88df6736 100644
--- a/macros/latex/contrib/l3kernel/l3fp-basics.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-basics.dtx
@@ -40,7 +40,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2019-09-08}
+% \date{Released 2019-09-19}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp-convert.dtx b/macros/latex/contrib/l3kernel/l3fp-convert.dtx
index 856d519e87..dfd052b843 100644
--- a/macros/latex/contrib/l3kernel/l3fp-convert.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-convert.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-09-08}
+% \date{Released 2019-09-19}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp-expo.dtx b/macros/latex/contrib/l3kernel/l3fp-expo.dtx
index 8edf7c8ced..81bb592dc0 100644
--- a/macros/latex/contrib/l3kernel/l3fp-expo.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-expo.dtx
@@ -40,7 +40,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2019-09-08}
+% \date{Released 2019-09-19}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp-extended.dtx b/macros/latex/contrib/l3kernel/l3fp-extended.dtx
index 0c17e68d8f..a8e2dffa12 100644
--- a/macros/latex/contrib/l3kernel/l3fp-extended.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-extended.dtx
@@ -40,7 +40,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2019-09-08}
+% \date{Released 2019-09-19}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp-logic.dtx b/macros/latex/contrib/l3kernel/l3fp-logic.dtx
index 777e2b15fa..9b63aec53b 100644
--- a/macros/latex/contrib/l3kernel/l3fp-logic.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-logic.dtx
@@ -40,7 +40,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2019-09-08}
+% \date{Released 2019-09-19}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp-parse.dtx b/macros/latex/contrib/l3kernel/l3fp-parse.dtx
index 36373db39a..aed0a3ada2 100644
--- a/macros/latex/contrib/l3kernel/l3fp-parse.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-parse.dtx
@@ -40,7 +40,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2019-09-08}
+% \date{Released 2019-09-19}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp-random.dtx b/macros/latex/contrib/l3kernel/l3fp-random.dtx
index 8f7b3b4597..069b0cf360 100644
--- a/macros/latex/contrib/l3kernel/l3fp-random.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-random.dtx
@@ -40,7 +40,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2019-09-08}
+% \date{Released 2019-09-19}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp-round.dtx b/macros/latex/contrib/l3kernel/l3fp-round.dtx
index a2738600db..9437f8e399 100644
--- a/macros/latex/contrib/l3kernel/l3fp-round.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-round.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-09-08}
+% \date{Released 2019-09-19}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp-traps.dtx b/macros/latex/contrib/l3kernel/l3fp-traps.dtx
index 6f479dc748..91b645d0ae 100644
--- a/macros/latex/contrib/l3kernel/l3fp-traps.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-traps.dtx
@@ -40,7 +40,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2019-09-08}
+% \date{Released 2019-09-19}
% \maketitle
%
% \begin{documentation}
diff --git a/macros/latex/contrib/l3kernel/l3fp-trig.dtx b/macros/latex/contrib/l3kernel/l3fp-trig.dtx
index 7fd4f7b7dc..8927ab8978 100644
--- a/macros/latex/contrib/l3kernel/l3fp-trig.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-trig.dtx
@@ -40,7 +40,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2019-09-08}
+% \date{Released 2019-09-19}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp.dtx b/macros/latex/contrib/l3kernel/l3fp.dtx
index cdae848408..fe50141119 100644
--- a/macros/latex/contrib/l3kernel/l3fp.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp.dtx
@@ -49,7 +49,7 @@
% }^^A
% }
%
-% \date{Released 2019-09-08}
+% \date{Released 2019-09-19}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fparray.dtx b/macros/latex/contrib/l3kernel/l3fparray.dtx
index b3ad3eb9d7..6238ad6ddd 100644
--- a/macros/latex/contrib/l3kernel/l3fparray.dtx
+++ b/macros/latex/contrib/l3kernel/l3fparray.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2019-09-08}
+% \date{Released 2019-09-19}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3int.dtx b/macros/latex/contrib/l3kernel/l3int.dtx
index 30c1a268bc..1cd7e62c93 100644
--- a/macros/latex/contrib/l3kernel/l3int.dtx
+++ b/macros/latex/contrib/l3kernel/l3int.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-09-08}
+% \date{Released 2019-09-19}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3intarray.dtx b/macros/latex/contrib/l3kernel/l3intarray.dtx
index 3857765c10..7365c9e0b8 100644
--- a/macros/latex/contrib/l3kernel/l3intarray.dtx
+++ b/macros/latex/contrib/l3kernel/l3intarray.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2019-09-08}
+% \date{Released 2019-09-19}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3kernel-functions.dtx b/macros/latex/contrib/l3kernel/l3kernel-functions.dtx
index 178053720f..507546fa2d 100644
--- a/macros/latex/contrib/l3kernel/l3kernel-functions.dtx
+++ b/macros/latex/contrib/l3kernel/l3kernel-functions.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-09-08}
+% \date{Released 2019-09-19}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3keys.dtx b/macros/latex/contrib/l3kernel/l3keys.dtx
index b7de717208..f2ddc9f2c1 100644
--- a/macros/latex/contrib/l3kernel/l3keys.dtx
+++ b/macros/latex/contrib/l3kernel/l3keys.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-09-08}
+% \date{Released 2019-09-19}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3legacy.dtx b/macros/latex/contrib/l3kernel/l3legacy.dtx
index faf82e0212..417723048a 100644
--- a/macros/latex/contrib/l3kernel/l3legacy.dtx
+++ b/macros/latex/contrib/l3kernel/l3legacy.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-09-08}
+% \date{Released 2019-09-19}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3luatex.dtx b/macros/latex/contrib/l3kernel/l3luatex.dtx
index 31215e6055..b7f098649c 100644
--- a/macros/latex/contrib/l3kernel/l3luatex.dtx
+++ b/macros/latex/contrib/l3kernel/l3luatex.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-09-08}
+% \date{Released 2019-09-19}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3msg.dtx b/macros/latex/contrib/l3kernel/l3msg.dtx
index be7b4cb9e4..bbb003888b 100644
--- a/macros/latex/contrib/l3kernel/l3msg.dtx
+++ b/macros/latex/contrib/l3kernel/l3msg.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-09-08}
+% \date{Released 2019-09-19}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3names.dtx b/macros/latex/contrib/l3kernel/l3names.dtx
index 859f305881..3167e104a5 100644
--- a/macros/latex/contrib/l3kernel/l3names.dtx
+++ b/macros/latex/contrib/l3kernel/l3names.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-09-08}
+% \date{Released 2019-09-19}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3prefixes.pdf b/macros/latex/contrib/l3kernel/l3prefixes.pdf
index abfc1237ba..b5187e36c9 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 3be69d6a71..29e41e5aa0 100644
--- a/macros/latex/contrib/l3kernel/l3prg.dtx
+++ b/macros/latex/contrib/l3kernel/l3prg.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-09-08}
+% \date{Released 2019-09-19}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3prop.dtx b/macros/latex/contrib/l3kernel/l3prop.dtx
index a2282e451c..44fd4a82ce 100644
--- a/macros/latex/contrib/l3kernel/l3prop.dtx
+++ b/macros/latex/contrib/l3kernel/l3prop.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-09-08}
+% \date{Released 2019-09-19}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3quark.dtx b/macros/latex/contrib/l3kernel/l3quark.dtx
index 32c79e39ba..dda51fd74f 100644
--- a/macros/latex/contrib/l3kernel/l3quark.dtx
+++ b/macros/latex/contrib/l3kernel/l3quark.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-09-08}
+% \date{Released 2019-09-19}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3regex.dtx b/macros/latex/contrib/l3kernel/l3regex.dtx
index 881d299d6a..88c06cf660 100644
--- a/macros/latex/contrib/l3kernel/l3regex.dtx
+++ b/macros/latex/contrib/l3kernel/l3regex.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-09-08}
+% \date{Released 2019-09-19}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3seq.dtx b/macros/latex/contrib/l3kernel/l3seq.dtx
index 87fdb252d8..82c5b81ded 100644
--- a/macros/latex/contrib/l3kernel/l3seq.dtx
+++ b/macros/latex/contrib/l3kernel/l3seq.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-09-08}
+% \date{Released 2019-09-19}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3skip.dtx b/macros/latex/contrib/l3kernel/l3skip.dtx
index 13d42ca934..108a54eb12 100644
--- a/macros/latex/contrib/l3kernel/l3skip.dtx
+++ b/macros/latex/contrib/l3kernel/l3skip.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2019-09-08}
+% \date{Released 2019-09-19}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3sort.dtx b/macros/latex/contrib/l3kernel/l3sort.dtx
index b17d170f26..9d166d50ff 100644
--- a/macros/latex/contrib/l3kernel/l3sort.dtx
+++ b/macros/latex/contrib/l3kernel/l3sort.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-09-08}
+% \date{Released 2019-09-19}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3str-convert.dtx b/macros/latex/contrib/l3kernel/l3str-convert.dtx
index f5e0650cf0..af66ad469e 100644
--- a/macros/latex/contrib/l3kernel/l3str-convert.dtx
+++ b/macros/latex/contrib/l3kernel/l3str-convert.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2019-09-08}
+% \date{Released 2019-09-19}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3str.dtx b/macros/latex/contrib/l3kernel/l3str.dtx
index cdfb9b476f..3832fbeff6 100644
--- a/macros/latex/contrib/l3kernel/l3str.dtx
+++ b/macros/latex/contrib/l3kernel/l3str.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-09-08}
+% \date{Released 2019-09-19}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3styleguide.pdf b/macros/latex/contrib/l3kernel/l3styleguide.pdf
index 938e92b6b0..e17b3a34d3 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 1b4a6816b3..19850affd8 100644
--- a/macros/latex/contrib/l3kernel/l3styleguide.tex
+++ b/macros/latex/contrib/l3kernel/l3styleguide.tex
@@ -32,7 +32,7 @@ The released version of this bundle is available from CTAN.
{latex-team@latex-project.org}%
}%
}
-\date{Released 2019-09-08}
+\date{Released 2019-09-19}
\begin{document}
diff --git a/macros/latex/contrib/l3kernel/l3syntax-changes.pdf b/macros/latex/contrib/l3kernel/l3syntax-changes.pdf
index aa774b0653..b8e85d1642 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 e974f44db1..bc45fdad01 100644
--- a/macros/latex/contrib/l3kernel/l3syntax-changes.tex
+++ b/macros/latex/contrib/l3kernel/l3syntax-changes.tex
@@ -32,7 +32,7 @@ The released version of this bundle is available from CTAN.
{latex-team@latex-project.org}%
}%
}
-\date{Released 2019-09-08}
+\date{Released 2019-09-19}
\newcommand{\TF}{\textit{(TF)}}
diff --git a/macros/latex/contrib/l3kernel/l3sys.dtx b/macros/latex/contrib/l3kernel/l3sys.dtx
index e42248e7e4..2d79142577 100644
--- a/macros/latex/contrib/l3kernel/l3sys.dtx
+++ b/macros/latex/contrib/l3kernel/l3sys.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-09-08}
+% \date{Released 2019-09-19}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3term-glossary.pdf b/macros/latex/contrib/l3kernel/l3term-glossary.pdf
index b8172e3652..952cdcdb53 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 b204fb2bfa..9745b13285 100644
--- a/macros/latex/contrib/l3kernel/l3term-glossary.tex
+++ b/macros/latex/contrib/l3kernel/l3term-glossary.tex
@@ -32,7 +32,7 @@ The released version of this bundle is available from CTAN.
{latex-team@latex-project.org}%
}%
}
-\date{Released 2019-09-08}
+\date{Released 2019-09-19}
\newcommand{\TF}{\textit{(TF)}}
diff --git a/macros/latex/contrib/l3kernel/l3tl-analysis.dtx b/macros/latex/contrib/l3kernel/l3tl-analysis.dtx
index 48cc4945c8..f522435876 100644
--- a/macros/latex/contrib/l3kernel/l3tl-analysis.dtx
+++ b/macros/latex/contrib/l3kernel/l3tl-analysis.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2019-09-08}
+% \date{Released 2019-09-19}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3tl.dtx b/macros/latex/contrib/l3kernel/l3tl.dtx
index 7bdc520dcd..96cfc1dfcf 100644
--- a/macros/latex/contrib/l3kernel/l3tl.dtx
+++ b/macros/latex/contrib/l3kernel/l3tl.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-09-08}
+% \date{Released 2019-09-19}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3token.dtx b/macros/latex/contrib/l3kernel/l3token.dtx
index c908eae2ea..bc32b8813d 100644
--- a/macros/latex/contrib/l3kernel/l3token.dtx
+++ b/macros/latex/contrib/l3kernel/l3token.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-09-08}
+% \date{Released 2019-09-19}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3unicode.dtx b/macros/latex/contrib/l3kernel/l3unicode.dtx
index 74a1156707..7795efd6a8 100644
--- a/macros/latex/contrib/l3kernel/l3unicode.dtx
+++ b/macros/latex/contrib/l3kernel/l3unicode.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-09-08}
+% \date{Released 2019-09-19}
%
% \maketitle
%
@@ -84,29 +84,35 @@
{
\group_begin:
% \end{macrocode}
-% Set up a private copy of the char-generation primitive.
+% Access the primitive but suppress further expansion: active chars are
+% otherwise an issue.
% \begin{macrocode}
- \cs_set_eq:NN \@@_generate:w \tex_Uchar:D
+ \cs_set:Npn \@@_generate_char:n #1
+ { \tex_detokenize:D \tex_expandafter:D { \tex_Uchar:D " #1 } }
% \end{macrocode}
-% A fast local implementation for generating characters.
+% A fast local implementation for generating characters; the chars may
+% be active, so we prevent further expansion.
% \begin{macrocode}
\cs_set:Npx \@@_generate:n #1
{
- \sys_if_engine_luatex:TF
+ \exp_not:N \tex_unexpanded:D \exp_not:N \exp_after:wN
{
- \exp_not:N \lua_now:e
+ \sys_if_engine_luatex:TF
{
- l3kernel.charcat
- (
- \exp_not:N \tex_number:D #1 ,
- \exp_not:N \tex_the:D \tex_catcode:D #1
- )
+ \exp_not:N \tex_directlua:D
+ {
+ l3kernel.charcat
+ (
+ \exp_not:N \tex_number:D #1 ,
+ \exp_not:N \tex_the:D \tex_catcode:D #1
+ )
+ }
+ }
+ {
+ \exp_not:N \tex_Ucharcat:D
+ #1 ~
+ \tex_catcode:D #1 ~
}
- }
- {
- \exp_not:N \tex_Ucharcat:D
- #1 ~
- \tex_catcode:D #1 ~
}
}
% \end{macrocode}
@@ -127,7 +133,7 @@
\cs_set_nopar:Npn \l_@@_tmpb_tl {#5}
\reverse_if:N \if_meaning:w \l_@@_tmpa_tl \l_@@_tmpb_tl
\tl_const:cx
- { c_@@_mixed_case_ \@@_generate:w "#1 _tl }
+ { c_@@_mixed_case_ \@@_generate_char:n {#1} _tl }
{ \@@_generate:n { "#7 } }
\fi:
\fi:
@@ -155,7 +161,7 @@
\reverse_if:N \if_int_compare:w
\char_value_lccode:n {"#1} = "#3 ~
\tl_const:cx
- { c_@@_fold_case_ \@@_generate:w "#1 _tl }
+ { c_@@_fold_case_ \@@_generate_char:n {#1} _tl }
{ \@@_generate:n { "#3 } }
\fi:
\else:
@@ -166,7 +172,7 @@
}
\cs_set_protected:Npn \@@_data_auxii:w #1 ~ #2 ~ #3 ~ #4 \q_stop
{
- \tl_const:cx { c_@@_fold_case_ \@@_generate:w "#1 _tl }
+ \tl_const:cx { c_@@_fold_case_ \@@_generate_char:n {#1} _tl }
{
\@@_generate:n { "#2 }
\@@_generate:n { "#3 }
@@ -200,7 +206,7 @@
{
\tl_if_empty:nF {#4}
{
- \tl_const:cx { c_@@_ #2 _case_ \@@_generate:w "#1 _tl }
+ \tl_const:cx { c_@@_ #2 _case_ \@@_generate_char:n {#1} _tl }
{
\@@_generate:n { "#3 }
\@@_generate:n { "#4 }
diff --git a/macros/latex/contrib/l3kernel/source3.pdf b/macros/latex/contrib/l3kernel/source3.pdf
index b760d3494f..d8e2eb9683 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 2e98d18f91..09f6851315 100644
--- a/macros/latex/contrib/l3kernel/source3.tex
+++ b/macros/latex/contrib/l3kernel/source3.tex
@@ -53,7 +53,7 @@ for those people who are interested.
{latex-team@latex-project.org}%
}%
}
-\date{Released 2019-09-08}
+\date{Released 2019-09-19}
\pagenumbering{roman}
\maketitle
diff --git a/macros/latex/contrib/mathastext/README.md b/macros/latex/contrib/mathastext/README.md
index 95e70dd8ea..7d92a4018b 100644
--- a/macros/latex/contrib/mathastext/README.md
+++ b/macros/latex/contrib/mathastext/README.md
@@ -14,7 +14,7 @@ The Author of this Work is Jean-Francois Burnol
Copyright (C) 2011-2019 Jean-Francois Burnol (`jfbu at free dot fr`)
- Source: mathastext.dtx 1.3u 2019/08/20
+ Source: mathastext.dtx 1.3v 2019/09/19
DESCRIPTION
@@ -82,6 +82,52 @@ Main options: `italic`, `subdued`, `LGRgreek`.
RECENT CHANGES
==============
+1.3v \[2019/09/19\]
+----
+
+* LaTeX 2019-10-01 release has made more math macros robust.
+ This applies in particular to the math accents and to the
+ `\hbar`. This required for mathastext to adapt. Also
+ `\leftarrowfill` and `\rightarrowfill` are now defined
+ robust by the kernel, hence mathastext does the same. These
+ changes are dropped if mathastext detects an older LaTeX
+ format.
+
+* These LaTeX kernel changes motivated an examination of some
+ redefinitions done (optionally) by mathastext:
+ - The user math alphabet macros got redefined as expanding
+ to some other (robust) math alphabet macros, but were not
+ robust in the strict sense. This does cause some issues
+ for moving arguments in the context of multiple math
+ versions, hence it was a bug. The special behaviour of the
+ math alphabet commands (they redefine themselves and other
+ macros on first use) makes is somewhat problematic for
+ mathastext to keep them updated across math versions and
+ at the same time strictly LaTeX2e robust. Thus mathastext
+ now requires the e-TeX primitive `\protected` and uses it
+ for the definitions of the user level math alphabet
+ macros.
+ - There are a number of `\mathchardef` tokens which (under
+ certain options and/or configuration via the package user
+ interface), mathastext redefines as macros. These macros
+ cause no issue in moving arguments (they are not
+ "fragile"), still it is probably better if they expand
+ only at the time of typesetting. To this effect they are
+ now also `\protected`: `\exists`, `\forall`, `\colon`,
+ `\setminus`, `\mid`, `\prod`, `\sum`, `\imath`, `\jmath`.
+ - The macro `\vert` (which expands to a `\delimiter`) is now
+ defined robust by LaTeX. Its mathastext redefinition is a
+ `\protected` one rather.
+ - The `\{` and `\}` (which get redefined only under
+ `\MTexplicitbracesobeymathxx` regime) are now strictly
+ robust in the LaTeX2e sense (formerly they were `\let` to
+ some robust macros, and this did not make them strictly
+ LaTeX2e-robust entities).
+
+* The various changes in mathastext described in the previous item
+ apply independently of the LaTeX release version. The
+ LaTeX format itself requires the e-TeX extensions since 2015.
+
1.3u (2019/08/20)
---
diff --git a/macros/latex/contrib/mathastext/mathastext.dtx b/macros/latex/contrib/mathastext/mathastext.dtx
index 8978450469..09aef6d6cb 100644
--- a/macros/latex/contrib/mathastext/mathastext.dtx
+++ b/macros/latex/contrib/mathastext/mathastext.dtx
@@ -2,12 +2,12 @@
% N.B.: this dtx file does NOT use \DocInput, it only uses docstrip.
% The LaTeX source of the documentation is NOT prefixed with percent characters.
%<*dtx>
-\def\dtxtimestamp {Time-stamp: <20-08-2019 at 11:13:40 CEST>}%
-\def\docdate{2019/08/20}
+\def\dtxtimestamp {Time-stamp: <19-09-2019 at 22:52:52 CEST>}%
+\def\docdate{2019/09/19}
%</dtx>
%<*drv>
-\def\MSTpkgdate {2019/08/20}
-\def\MSTpkgversion {1.3u}
+\def\MSTpkgdate {2019/09/19}
+\def\MSTpkgversion {1.3v}
%</drv>
%<*dtx>
\iffalse % meta-comment
@@ -29,7 +29,7 @@ The Author of this Work is Jean-Francois Burnol
Copyright (C) 2011-2019 Jean-Francois Burnol (`jfbu at free dot fr`)
- Source: mathastext.dtx 1.3u 2019/08/20
+ Source: mathastext.dtx 1.3v 2019/09/19
%</readme>
%<*dtx>
@@ -45,7 +45,7 @@ not include the documented source code then, in contrast to 1a)+1b) method
%%----------------------------------------------------------------
%% Package: mathastext
%% Info: Use the text font in math mode (JFB)
-%% Version: 1.3u 2019/08/20
+%% Version: 1.3v 2019/09/19
%% License: LPPL 1.3c (http://www.latex-project.org/lppl/lppl-1-3c.txt)
%% Copyright (C) 2011-2019 Jean-Francois Burnol <jfbu at free dot fr>
%% Examples of use of mathastext:
@@ -193,6 +193,53 @@ Main options: `italic`, `subdued`, `LGRgreek`.
RECENT CHANGES
==============
+1.3v \[2019/09/19\]
+----
+
+* LaTeX 2019-10-01 release has made more math macros robust.
+ This applies in particular to the math accents and to the
+ `\hbar`. This required for mathastext to adapt. Also
+ `\leftarrowfill` and `\rightarrowfill` are now defined
+ robust by the kernel, hence mathastext does the same. These
+ changes are dropped if mathastext detects an older LaTeX
+ format.
+
+* These LaTeX kernel changes motivated an examination of some
+ redefinitions done (optionally) by mathastext:
+ - The user math alphabet macros got redefined as expanding
+ to some other (robust) math alphabet macros, but were not
+ robust in the strict sense. This does cause some issues
+ for moving arguments in the context of multiple math
+ versions, hence it was a bug. The special behaviour of the
+ math alphabet commands (they redefine themselves and other
+ macros on first use) makes is somewhat problematic for
+ mathastext to keep them updated across math versions and
+ at the same time strictly LaTeX2e robust. Thus mathastext
+ now requires the e-TeX primitive `\protected` and uses it
+ for the definitions of the user level math alphabet
+ macros.
+ - There are a number of `\mathchardef` tokens which (under
+ certain options and/or configuration via the package user
+ interface), mathastext redefines as macros. These macros
+ cause no issue in moving arguments (they are not
+ "fragile"), still it is probably better if they expand
+ only at the time of typesetting. To this effect they are
+ now also `\protected`: `\exists`, `\forall`, `\colon`,
+ `\setminus`, `\mid`, `\prod`, `\sum`, `\imath`, `\jmath`.
+ - The macro `\vert` (which expands to a `\delimiter`) is now
+ defined robust by LaTeX. Its mathastext redefinition is a
+ `\protected` one rather.
+ - The `\{` and `\}` (which get redefined only under
+ `\MTexplicitbracesobeymathxx` regime) are now strictly
+ robust in the LaTeX2e sense (formerly they were `\let` to
+ some robust macros, and this did not make them strictly
+ LaTeX2e-robust entities).
+
+* The various changes in mathastext described in the previous item
+ apply independently of the LaTeX release version. The
+ LaTeX format itself requires the e-TeX extensions since 2015.
+
+
1.3u (2019/08/20)
---
@@ -242,6 +289,56 @@ RECENT CHANGES
MATHASTEXT CHANGE LOG
=====================
+1.3v \[2019/09/19\]
+----
+
+* LaTeX 2019-10-01 release has made more math macros robust.
+ This applies in particular to the math accents and to the
+ `\hbar`. This required for mathastext to adapt. Also
+ `\leftarrowfill` and `\rightarrowfill` are now defined
+ robust by the kernel, hence mathastext does the same. These
+ changes are dropped if mathastext detects an older LaTeX
+ format.
+
+* These LaTeX kernel changes motivated an examination of some
+ redefinitions done (optionally) by mathastext:
+
+ - The user math alphabet macros got redefined as expanding
+ to some other (robust) math alphabet macros, but were not
+ robust in the strict sense. This does cause some issues for
+ moving arguments in the context of multiple math versions,
+ hence it was a bug. The special behaviour of the math
+ alphabet commands (they redefine themselves and other macros
+ on first use) makes is somewhat problematic for mathastext
+ to keep them updated across math versions and at the same
+ time strictly LaTeX2e robust. Thus mathastext now requires
+ the e-TeX primitive `\protected` and uses it for the
+ definitions of the user level math alphabet macros.
+
+ - There are a number of `\mathchardef` tokens which (under
+ certain options and/or configuration via the package user
+ interface), mathastext redefines as macros. These macros
+ cause no issue in moving arguments (they are not "fragile"),
+ still it is probably better if they expand only at the time
+ of typesetting. To this effect they are now also
+ `\protected`: `\exists`, `\forall`, `\colon`, `\setminus`,
+ `\mid`, `\prod`, `\sum`, `\imath`, `\jmath`.
+
+ - The macro `\vert` (which expands to a `\delimiter`) is now
+ defined robust by LaTeX. Its mathastext redefinition is a
+ `\protected` one rather.
+
+ - The `\{` and `\}` (which get redefined only under
+ `\MTexplicitbracesobeymathxx` regime) are now strictly
+ robust in the LaTeX2e sense (formerly they were `\let` to
+ some robust macros, and this did not make them strictly
+ LaTeX2e-robust entities).
+
+* The various changes in mathastext described in the previous item
+ apply independently of the LaTeX release version. The
+ LaTeX format itself requires the e-TeX extensions since 2015.
+
+
1.3u \[2019/08/20\]
----
@@ -2442,8 +2539,8 @@ exists}, \texorpdfstring{\cs{forall}}{\textbackslash forall}, and before the pri
\begingroup\MTversion{upright}\renewcommand\familydefault\sfdefault
\makeatletter % c'est parce que sinon ils sont pris dans Symbol
-\let\mst@stdexists\oldexists
-\let\mst@stdforall\oldforall
+\let\mst@exists@original\oldexists
+\let\mst@forall@original\oldforall
\makeatother
\csb{MTforallskip}, \csb{MTexistsskip}, and \csb{MTprimeskip} are three
@@ -4286,10 +4383,19 @@ Numerous examples will be found there:\\
% partial efforts to achieve some sort of coherence; as a result some are a
% bit strange or obsolete to various degrees. And the similar remark
% applies to some ancient parts of the code itself!
+%
+% Should I require |2005/12/01| \LaTeX? (not sure about the month).
% \begin{macrocode}
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage {mathastext}
- [2019/08/20 v1.3u Use the text font in math mode (JFB)]
+ [2019/09/19 v1.3v Use the text font in math mode (JFB)]
+% \end{macrocode}
+% \LaTeX{} |2019-10-01| release has made robust math macros such as the math
+% accents and \cs{hbar}.
+% \begin{macrocode}
+\newif\ifmst@robust@obsessed@LaTeX@era
+\@ifl@t@r\fmtversion{2019/10/01}{\mst@robust@obsessed@LaTeX@eratrue}{}
+\edef\mst@robustifyingspace{\ifmst@robust@obsessed@LaTeX@era\space\fi}
% \end{macrocode}
% Testing for \XeTeX\ and \LuaLaTeX.
%
@@ -4567,7 +4673,7 @@ defaultbf,defaultit,defaultsf,defaulttt}\mst@nonormalboldtrue}
% |1.3j| adds \cs{MTnormalexists}, \cs{MTexistsdoesskip},
% \cs{MTnormalforall}, \cs{MTforalldoesskip}.
%
-% Earlier to |1.3j|, |\let\mst@stdexists\exists| was done at End of
+% Earlier to |1.3j|, |\let\mst@exists@original\exists| was done at End of
% Package, now it is done at Begin Document, and same for |\forall|. We
% pay attention that use of \cs{MTnormalexists} etc... inside the
% preamble does not create self-let's.
@@ -4579,6 +4685,11 @@ defaultbf,defaultit,defaultsf,defaulttt}\mst@nonormalboldtrue}
% For some (random, legacy) reason, the handling of $\exists$ and
% $\forall$ is part of the things
% not included inside |\everymath/\everydisplay|.
+%
+% |1.3v| The \mst-defined \cs{exists} and \cs{forall} are created
+% \cs{protected}. We feel this matches better with their default
+% definition as \cs{mathchardef} tokens than dealing with \LaTeX2e robust
+% macros. Besides, the coding is simpler.
% \begin{macrocode}
\newmuskip\mst@exists@muskip %% v 1.15e
\newmuskip\mst@forall@muskip
@@ -4589,15 +4700,15 @@ defaultbf,defaultit,defaultsf,defaulttt}\mst@nonormalboldtrue}
\def\mst@forall@skip{0mu}
\def\mst@prime@skip {0mu}
\fi\fi
-\def\mst@exists{\mst@stdexists\mskip\mst@exists@muskip}
-\def\mst@forall{\mst@stdforall\mskip\mst@forall@muskip}
+\protected\def\mst@exists{\mst@exists@original\mskip\mst@exists@muskip}
+\protected\def\mst@forall{\mst@forall@original\mskip\mst@forall@muskip}
\AtBeginDocument{%
- \let\mst@stdexists\exists
- \let\mst@stdforall\forall
- \def\MTnormalexists {\let\exists\mst@stdexists }%
- \def\MTexistsdoesskip {\let\exists\mst@exists }%
- \def\MTnormalforall {\let\forall\mst@stdforall }%
- \def\MTforalldoesskip {\let\forall\mst@forall }%
+ \let\mst@exists@original\exists
+ \let\mst@forall@original\forall
+ \def\MTnormalexists {\let\exists\mst@exists@original }%
+ \def\MTexistsdoesskip {\let\exists\mst@exists }%
+ \def\MTnormalforall {\let\forall\mst@forall@original }%
+ \def\MTforalldoesskip {\let\forall\mst@forall }%
% \end{macrocode}
% The document body starts in the normal math version, whether or not
% \cs{Mathastext} command as been used in the preamble (which either re-defines
@@ -5300,11 +5411,13 @@ defaultbf,defaultit,defaultsf,defaulttt}\mst@nonormalboldtrue}
% All in all this is a great deal of trouble and I understand I postponed back
% in 2012! I spent some hours on this small thing, with consequent testing and
% for example this TeX Ligature issue with Unicode engines.
+%
+% Since |1.3v| we require e-\TeX{} extensions, so a test for
+% \cs{numexpr} has been dropped here.
% \begin{macrocode}
-\ifmst@basic\else
-\ifx\numexpr\undefined
+\ifmst@basic
\else
- \ifmst@XeOrLua
+ \ifmst@XeOrLua
\AtBeginDocument {%
\ifx\newmcodes@\@undefined\else
\edef\mst@newmcodes@{%
@@ -5329,8 +5442,8 @@ defaultbf,defaultit,defaultsf,defaulttt}\mst@nonormalboldtrue}
}%
\let\mst@originalnewmcodes@\newmcodes@
\fi
- }
- \else
+ }% end of AtBeginDocument
+ \else
\AtBeginDocument {%
\ifx\newmcodes@\@undefined\else
\edef\mst@newmcodes@{%
@@ -5349,9 +5462,9 @@ defaultbf,defaultit,defaultsf,defaulttt}\mst@nonormalboldtrue}
}%
\let\mst@originalnewmcodes@\newmcodes@
\fi
- }
- \fi
-\fi\fi
+ }% end of second AtBeginDocument
+ \fi % mst@XeOrLua
+\fi % mst@basic
\newcommand*\MTresetnewmcodes{\ifx\mst@originalnewmcodes@\undefined\else
\let\newmcodes@\mst@originalnewmcodes@\fi}
\newcommand*\MTcustomizenewmcodes{\ifx\mst@originalnewmcodes@\undefined\else
@@ -5486,9 +5599,8 @@ defaultbf,defaultit,defaultsf,defaulttt}\mst@nonormalboldtrue}
% \begin{macro}{\Mathtt}
% \begin{macro}{\mathnormalbold}
% We redefine the default normal, rm, bf, it, sf, and tt alphabets,
-% but this will be done via |\renewcommand{\mathrm}{\Mathrm}| etc\dots
-% and (|1.15f|) the previous status of the math alphabets is recorded for the
-% sake of the |subdued| option.
+% but this will be done via |\renewcommand*{\mathrm}{\Mathrm}| etc\dots
+% (not anymore, see comment below).
%
% We follow the standard \LaTeX{} behavior for \cs{mathbf}, which is
% to pick up the bold series of the roman font (digits and operator
@@ -5499,6 +5611,29 @@ defaultbf,defaultit,defaultsf,defaulttt}\mst@nonormalboldtrue}
% upright option does not have an upright omicron obtainable by simply
% typing \cs{mathnormal}|{o}|. So if |fourier| is loaded we use
% \cs{mathrm} and not \cs{mathnormal}.
+%
+% Actually math alphabet macros are created robust since \LaTeX{} from 2005,
+% so at |1.3v 2019/09/19| I decided to modify the old \mst approach a bit.
+% Indeed with the old approach a \cs{mathtt} in a moving argument translates
+% ultimately into \cs{Mathtt} but if for example the new context where it
+% gets expanded is a subdued normal math version, this does not give the same
+% as \cs{mathtt} would have given there. This was a bug: imagine
+% |\section{$\mathtt{X}$}| issued in a math version, but the TOC is done in
+% subdued normal version; the output in TOC will often differ (fontsize being
+% put aside) both from out it looked at the section title and from what
+% direct usage of \cs{mathtt} in the TOC would have given. I have no strong
+% preference between the two possibilities (to be as in section title, or to
+% be as if \cs{mathtt} gets executed in TOC and obeys its local regime), but
+% it is a bug if the result is still a third one. Thus I decided to follow
+% \LaTeX2e and that \cs{mathtt} had to remain \cs{mathtt} when moving.
+%
+% But a math alphabet command such as \cs{Mathtt} redefines its unprotected
+% meaning on first use as well as the one of the math version macro, hence a
+% |\letrobustmacro\mathtt\Mathtt| of sorts is no good at all. I thus opted to
+% not hack into the math \LaTeX{} font support across math versions and to
+% simply use |\protected\def| in place of obeying strictly \LaTeX2e
+% robustness (except of course in the subdued math versions as there the math
+% alphabets acquire back their original robust meanings.)
% \begin{macrocode}
\let\mst@alph@omicron\mathnormal
\@ifpackageloaded{fourier}{\ifsloped\else\let\mst@alph@omicron\mathrm\fi}{}
@@ -5519,6 +5654,10 @@ defaultbf,defaultit,defaultsf,defaulttt}\mst@nonormalboldtrue}
\ifmst@defaulttt\else
\DeclareMathAlphabet{\Mathtt}{\mst@enc}{\ttdefault}{\mst@ser}{\mst@opsh}
\fi
+% \end{macrocode}
+% The \cs{mathxx} macros being \LaTeX2e robust, or course the meanings here
+% are known, and «original» macros are sort of superfluous but well it works.
+% \begin{macrocode}
\let\mst@original@normal\mathnormal
\let\mst@original@rm\mathrm
\let\mst@original@bf\mathbf
@@ -5533,12 +5672,12 @@ defaultbf,defaultit,defaultsf,defaulttt}\mst@nonormalboldtrue}
\let\mathsf\mst@original@sf
\let\mathtt\mst@original@tt}
\def\mst@setalphabets{%
- \ifmst@defaultnormal\else\renewcommand{\mathnormal}{\Mathnormal}\fi
- \ifmst@defaultrm\else\renewcommand{\mathrm}{\Mathrm}\fi
- \ifmst@defaultbf\else\renewcommand{\mathbf}{\Mathbf}\fi
- \ifmst@defaultit\else\renewcommand{\mathit}{\Mathit}\fi
- \ifmst@defaultsf\else\renewcommand{\mathsf}{\Mathsf}\fi
- \ifmst@defaulttt\else\renewcommand{\mathtt}{\Mathtt}\fi}
+ \ifmst@defaultnormal\else\protected\def\mathnormal{\Mathnormal}\fi
+ \ifmst@defaultrm\else\protected\def\mathrm{\Mathrm}\fi
+ \ifmst@defaultbf\else\protected\def\mathbf{\Mathbf}\fi
+ \ifmst@defaultit\else\protected\def\mathit{\Mathit}\fi
+ \ifmst@defaultsf\else\protected\def\mathsf{\Mathsf}\fi
+ \ifmst@defaulttt\else\protected\def\mathtt{\Mathtt}\fi}
\ifmst@subdued\else\mst@setalphabets\fi
% \end{macrocode}
% \end{macro}
@@ -5955,7 +6094,10 @@ defaultbf,defaultit,defaultsf,defaulttt}\mst@nonormalboldtrue}
% shamelessly overwrite...)
\DeclareMathSymbol{\colon}{\mathpunct}{\mst@font@tbu}{"3A}
\mst@do@nonletters\expandafter{\the\mst@do@nonletters
- \def\colon{\mathpunct{\mst@varfam@colon}}}}
+% \end{macrocode}
+% |1.3v| uses \cs{protected} for the (optional) \cs{colon} redefinition.
+% \begin{macrocode}
+ \protected\def\colon{\mathpunct{\mst@varfam@colon}}}}
\DeclareMathSymbol{;}{\mathpunct}{\mst@font@tbu}{"3B}
\DeclareMathSymbol{\mst@varfam@pointvirgule}{\mathalpha}{\mst@font@tbu}{"3B}
\expandafter\mst@addtodo@nonletters\string;\mathpunct\mst@varfam@pointvirgule
@@ -5971,23 +6113,34 @@ defaultbf,defaultit,defaultsf,defaulttt}\mst@nonormalboldtrue}
% However, for the time being I can do it in an easy way only for
% \XeTeX, not for \LuaLaTeX. Also I do my modifications to \cs{relbar}
% in a manner testing for the presence of amsmath.
+%
+% |1.3v 2019/09/19|: \LaTeX{} of |2019-10-01| defines \cs{leftarrowfill}
+% and \cs{rightarrowfill} as robust macros, so we do the same.
+%
+% I need to put amsmath under surveillance to check if it decides to
+% robustify \cs{relbar} at some point, now that the \LaTeX\ team has
+% taken over maintenance.
% \begin{macrocode}
\ifmst@nominus
\else
\ifmst@XeOrLua
\mst@Umathcharnumdef\mst@minus@sign=\mst@Umathcodenum`\-\relax
-%% I used this prior to the new \luatexUmathcodenum, as available since TL2013:
-%% \mathchardef\mst@minus@sign=8704\relax % "2200
+%^^A I used this prior to the new \luatexUmathcodenum, as available since TL2013:
+%^^A \mathchardef\mst@minus@sign=8704\relax % "2200
\else
\mathchardef\mst@minus@sign=\mathcode`\-\relax
\fi
-\@ifpackageloaded{amsmath}
-{\def\relbar{\mathrel{\mathpalette\mathsm@sh\mst@minus@sign}}}
-{\DeclareRobustCommand\relbar{\mathrel{\smash\mst@minus@sign}}}
-\def\rightarrowfill{$\m@th\mathord{\relbar}\mkern-7mu%
+ \@ifpackageloaded{amsmath}
+ {\def\relbar{\mathrel{\mathpalette\mathsm@sh\mst@minus@sign}}}
+ {\DeclareRobustCommand\relbar{\mathrel{\smash\mst@minus@sign}}}
+ \ifmst@robust@obsessed@LaTeX@era\expandafter\DeclareRobustCommand
+ \else\expandafter\def\fi
+ \rightarrowfill{$\m@th\mathord{\relbar}\mkern-7mu%
\cleaders\hbox{$\mkern-2mu\relbar\mkern-2mu$}\hfill
\mkern-7mu\mathord\rightarrow$}
-\def\leftarrowfill{$\m@th\mathord\leftarrow\mkern-7mu%
+ \ifmst@robust@obsessed@LaTeX@era\expandafter\DeclareRobustCommand
+ \else\expandafter\def\fi
+ \leftarrowfill{$\m@th\mathord\leftarrow\mkern-7mu%
\cleaders\hbox{$\mkern-2mu\relbar\mkern-2mu$}\hfill
\mkern-7mu\mathord{\relbar}$}
\fi
@@ -6100,13 +6253,24 @@ defaultbf,defaultit,defaultsf,defaulttt}\mst@nonormalboldtrue}
%
% On this occasion I replace |h| by |\mst@h| because the mechanism for
% before and after skips does not interact well with the rlap construct.
+%
+% |1.3v 2019/09/19| adapts to maintain the robustness of \cs{hbar} which now
+% applies with \LaTeX{} |2019-10-01|. The \cs{mst@original@hbar} is a
+% meaning holder and there is no need for this macro to be robust in
+% \LaTeX{} sense. Same for the hbar-macros whose names get indexed by math
+% version names. We use them as meaning-holders and suitably access them via
+% \cs{let}. The \cs{mst@ltbar@mv<version>} macros will be robust as they get
+% declared via \cs{DeclareMathAccent}, but this is other matter.
% \begin{macrocode}
\let\mst@subduedhbar\@empty
\let\mst@nonsubduedhbar\@empty
\ifmst@nohbar\else
- \def\mst@subduedhbar{\let\hbar\mst@original@hbar}%
+ \def\mst@subduedhbar{%
+ \expandafter\let\csname hbar\mst@robustifyingspace\endcsname
+ \mst@original@hbar
+ }%
\def\mst@nonsubduedhbar{%
- \expandafter\let\expandafter\hbar
+ \expandafter\let\csname hbar\mst@robustifyingspace\expandafter\endcsname
\csname mst@hbar@mv\math@version\endcsname
}%
\fi
@@ -6264,8 +6428,11 @@ defaultbf,defaultit,defaultsf,defaulttt}\mst@nonormalboldtrue}
\let\backslash\mst@varfam@backslash}
\DeclareMathSymbol{\setminus}{\mathbin}{mtoperatorfont}{"5C}
\DeclareMathSymbol{\mst@varfam@setminus}{\mathalpha}{mtoperatorfont}{"5C}
+% \end{macrocode}
+% |1.3v| adds a \cs{protected} here for \cs{setminus}.
+% \begin{macrocode}
\mst@do@nonletters\expandafter{\the\mst@do@nonletters
- \def\setminus{\mathbin{\mst@varfam@setminus}}}
+ \protected\def\setminus{\mathbin{\mst@varfam@setminus}}}
% \end{macrocode}
% \end{macro}\end{macro}\end{macro}
% \begin{macro}{\models}
@@ -6282,20 +6449,27 @@ defaultbf,defaultit,defaultsf,defaulttt}\mst@nonormalboldtrue}
% \begin{macro}{|,\mid,\vert}
% (2011) I did not do anything then to try to emulate \cs{Vert} with the
% vertical bar from the text font... and now (2012) \mst is not as radical as
-% it used to be anyhow, so it is too late.
+% it used to be anyhow, so it is too late. Or not (2019)? maybe I
+% \emph{should} do something here...
+%
+% |1.3v 2019/09/19|: I discover this rather radical legacy
+% \verb+\def\vert{|}+, which is done here once in the preamble, but I leave
+% it unmodified apart from prefixing it with \cs{protected}. I also add a
+% \cs{protected} for the definition of \cs{mid} (which applies only under
+% \cs{MTnonlettersobeymathxx} regime).
% \begin{macrocode}
\ifmst@nosmalldelims
\DeclareMathSymbol{|}{\mathord}{\mst@font@tbu}{124}
\else
\DeclareMathDelimiter{|}{\mathord}{\mst@font@tbu}{124}{largesymbols}{"0C}
\fi
-\def\vert{|}
+\protected\def\vert{|}
\DeclareMathSymbol{\mst@varfam@vbar}{\mathalpha}{\mst@font@tbu}{124}
\mst@addtodo@easynonletters\|\mst@varfam@vbar
\let\mid\undefined % 1.3: to avoid problems with some packages
\DeclareMathSymbol{\mid}{\mathrel}{\mst@font@tbu}{124}
\mst@do@nonletters\expandafter{\the\mst@do@nonletters
- \def\mid{\mathrel\mst@varfam@vbar}}
+ \protected\def\mid{\mathrel\mst@varfam@vbar}}
% \end{macrocode}
% \begin{macro}{\MTexplicitbraces-}\begin{macro}{obeymathxx}
% \begin{macro}{\MTexplicitbraces-}\begin{macro}{donotobeymathxx}
@@ -6305,9 +6479,21 @@ defaultbf,defaultit,defaultsf,defaulttt}\mst@nonormalboldtrue}
% preserve robustness.
%
% For |1.3| I make |\lbrace| and |\rbrace| undefined first, else problems
-% may arise with some packages. |1.3e| suppresses under option
+% may arise with some packages.
+%
+% |1.3e| suppresses under option
% |nosmalldelims| the definitions of |\lbrace| and |\rbrace| as math
-% symbols as this bug made |\left\lbrace| cause an error, naturally.
+% symbols as this made |\left\lbrace| cause an error, it was a bug.
+%
+% LaTeX2e defines |\{| and |\}| as robust commands for a long time
+% (I don't know since when). The \mst redefinition is done only if user
+% has executed \cs{MTexplicitbracesobeymathxx}, and it is done only when
+% entering math mode, but there could be some |\hbox| inside math, hence
+% it has to be careful to be valid in text too.
+%
+% |1.3v| maintains strict \LaTeX2e robustness for |\{| and |\}|.
+% This assumes no one fiddled with |\{| and |\}| proper (without space
+% in the name).
% \begin{macrocode}
\ifmst@nosmalldelims
\else
@@ -6324,7 +6510,10 @@ defaultbf,defaultit,defaultsf,defaulttt}\mst@nonormalboldtrue}
\DeclareRobustCommand*{\mst@rbrace}
{\ifmmode\mathclose\mst@varfam@rbrace\else\textbraceright\fi}
\mst@do@nonletters\expandafter{\the\mst@do@nonletters
- \mst@dobraces{\let\{\mst@lbrace\let\}\mst@rbrace}}
+ \mst@dobraces{\expandafter\let\csname\string{ \expandafter\endcsname
+ \csname mst@lbrace \endcsname
+ \expandafter\let\csname\string} \expandafter\endcsname
+ \csname mst@rbrace \endcsname}}
\fi % end of \ifmst@alldelims
\newcommand*{\MTexplicitbracesobeymathxx}{\let\mst@dobraces\@firstofone}
\newcommand*{\MTexplicitbracesdonotobeymathxx}{\let\mst@dobraces\@gobble}
@@ -6432,20 +6621,24 @@ defaultbf,defaultit,defaultsf,defaulttt}\mst@nonormalboldtrue}
% |\renewcommand{\prod}{\mathchoice{\mst@prod}{\prodpsy}{\prodpsy}{\prodpsy}}|\\
% but this did not go well with subscripts and exponents.
%
-% Note oct 2012: maybe I should re-examine what I did?
+% October 2012: maybe I should re-examine what I did?
+%
% |1.3c| (|2013/12/14|) renames |\defaultprod| to |\MToriginalprod| and
% |\defaultsum| to
-% |\MToriginalsum|.
+% |\MToriginalsum|.
+%
+% |1.3v| hesitates about making robust here \cs{prod} and \cs{sum}. Finally I
+% use \cs{protected} for them.
% \begin{macrocode}
\ifmst@symbolmisc\typeout{** symbolmisc: miscellaneous math symbols from Symbol font}
\let\mst@prod\prod
\let\MToriginalprod\prod
\DeclareMathSymbol{\prodpsy}{\mathop}{mtpsymbol}{213}
-\renewcommand*{\prod}{\ifinner\prodpsy\else\mst@prod\fi}
+\protected\def\prod{\ifinner\prodpsy\else\mst@prod\fi}
\let\mst@sum\sum
\let\MToriginalsum\sum
\DeclareMathSymbol{\sumpsy}{\mathop}{mtpsymbol}{229}
-\renewcommand*{\sum}{\ifinner\sumpsy\else\mst@sum\fi}
+\protected\def\sum{\ifinner\sumpsy\else\mst@sum\fi}
% \end{macrocode}
% \end{macro}
% \end{macro}
@@ -7021,6 +7214,8 @@ defaultbf,defaultit,defaultsf,defaulttt}\mst@nonormalboldtrue}
%
% |1.3u| lets the \cs{imath} and \cs{jmath} react to the font encoding at each
% math version.
+%
+% |1.3v| lets the redefined \cs{imath} and \cs{jmath} be \cs{protected}.
% \begin{macrocode}
\def\mst@subduedinodot{%
\let\inodot\mst@original@imath
@@ -7046,8 +7241,8 @@ defaultbf,defaultit,defaultsf,defaulttt}\mst@nonormalboldtrue}
\fi}% \mst@dothe@inodotstuff
\ifmst@defaultimath\else\typeout{** \string\imath\space and \string\jmath\space}
\AtEndOfPackage{\AtBeginDocument{%
- \renewcommand*{\imath}{\inodot}%
- \renewcommand*{\jmath}{\jnodot}%
+ \protected\def\imath{\inodot}%
+ \protected\def\jmath{\jnodot}%
}}%
\fi
% \end{macrocode}
@@ -7080,6 +7275,14 @@ defaultbf,defaultit,defaultsf,defaulttt}\mst@nonormalboldtrue}
%
% Also at |1.3u| the math accents adapt to the font encoding at each math
% version.
+%
+% |1.3v| adapts to \LaTeX{} |2019-10-01| which now comes with robust math
+% accent macros. The «original»-named macros are without the robustifying
+% space, as they only serve as meaning holders. On the other hand the macros
+% indexed by math version names are (in the pdflatex branch) always defined
+% via \cs{DeclareMathAccent} hence they will be robust with |2019-10-01| or
+% later and we must use the \cs{mst@robustifyingspace} with them to access
+% their real meaning (this thus differs from the situation with \cs{hbar}).
% \begin{macrocode}
\let\mst@subduedmathaccents\@empty
\let\mst@nonsubduedmathaccents\@empty
@@ -7088,15 +7291,15 @@ defaultbf,defaultit,defaultsf,defaulttt}\mst@nonormalboldtrue}
\@tfor\@tempa:={grave}{acute}{check}{breve}{bar}%
{dot}{ddot}{mathring}{hat}{tilde}%
\do
- {\expandafter\let\csname\@tempa\expandafter\endcsname
+ {\expandafter\let\csname\@tempa\mst@robustifyingspace\expandafter\endcsname
\csname mst@original@\@tempa\endcsname}%
}%
\def\mst@nonsubduedmathaccents{%
\@tfor\@tempa:={grave}{acute}{check}{breve}{bar}%
{dot}{ddot}{mathring}{hat}{tilde}%
\do
- {\expandafter\let\csname\@tempa\expandafter\endcsname
- \csname mst@\@tempa @mv\math@version\endcsname}%
+ {\expandafter\let\csname\@tempa\mst@robustifyingspace\expandafter\endcsname
+ \csname mst@\@tempa @mv\math@version\mst@robustifyingspace\endcsname}%
}%
\def\mst@dothe@mathaccentsstuff#1#2{%
\begingroup
@@ -7107,73 +7310,119 @@ defaultbf,defaultit,defaultsf,defaulttt}\mst@nonormalboldtrue}
\if1\mst@OneifUniEnc
\ifmst@unimathaccents
% \` -> \grave
- \expandafter\xdef\csname mst@grave@mv#1\endcsname
+ \expandafter\xdef\csname mst@grave@mv#1\mst@robustifyingspace\endcsname
{\mst@Umathaccent
7
\number\symmtoperatorfont\space
\csname#2\string\`\endcsname{}\relax}%
% \' -> \acute
- \expandafter\xdef\csname mst@acute@mv#1\endcsname
+ \expandafter\xdef\csname mst@acute@mv#1\mst@robustifyingspace\endcsname
{\mst@Umathaccent
7
\number\symmtoperatorfont\space
\csname#2\string\'\endcsname{}\relax}%
% \v -> \check
- \expandafter\xdef\csname mst@check@mv#1\endcsname
+ \expandafter\xdef\csname mst@check@mv#1\mst@robustifyingspace\endcsname
{\mst@Umathaccent
7
\number\symmtoperatorfont\space
\csname#2\string\v\endcsname{}\relax}%
% \u -> \breve
- \expandafter\xdef\csname mst@breve@mv#1\endcsname
+ \expandafter\xdef\csname mst@breve@mv#1\mst@robustifyingspace\endcsname
{\mst@Umathaccent
7
\number\symmtoperatorfont\space
\csname#2\string\u\endcsname{}\relax}%
% \= -> \bar
- \expandafter\xdef\csname mst@bar@mv#1\endcsname
+ \expandafter\xdef\csname mst@bar@mv#1\mst@robustifyingspace\endcsname
{\mst@Umathaccent
7
\number\symmtoperatorfont\space
\csname#2\string\=\endcsname{}\relax}%
% \. -> \dot
- \expandafter\xdef\csname mst@dot@mv#1\endcsname
+ \expandafter\xdef\csname mst@dot@mv#1\mst@robustifyingspace\endcsname
{\mst@Umathaccent
7
\number\symmtoperatorfont\space
\csname#2\string\.\endcsname{}\relax}%
% \" -> \ddot
- \expandafter\xdef\csname mst@ddot@mv#1\endcsname
+ \expandafter\xdef\csname mst@ddot@mv#1\mst@robustifyingspace\endcsname
{\mst@Umathaccent
7
\number\symmtoperatorfont\space
\csname#2\string\"\endcsname{}\relax}%
% \r -> \mathring
- \expandafter\xdef\csname mst@mathring@mv#1\endcsname
+ \expandafter\xdef\csname mst@mathring@mv#1\mst@robustifyingspace\endcsname
{\mst@Umathaccent
7
\number\symmtoperatorfont\space
\csname#2\string\r\endcsname{}\relax}%
% \^ -> \hat
- \expandafter\xdef\csname mst@hat@mv#1\endcsname
+ \expandafter\xdef\csname mst@hat@mv#1\mst@robustifyingspace\endcsname
{\mst@Umathaccent
7
\number\symmtoperatorfont\space
\csname#2\string\^\endcsname{}\relax}%
% \~ -> \tilde
- \expandafter\xdef\csname mst@tilde@mv#1\endcsname
+ \expandafter\xdef\csname mst@tilde@mv#1\mst@robustifyingspace\endcsname
{\mst@Umathaccent
7
\number\symmtoperatorfont\space
\csname#2\string\~\endcsname{}\relax}%
- \else
+ \else % false branch of ifmst@unimathaccents
+% \end{macrocode}
+% |1.3u| used some \cs{def} but this made the accent macro meanings look
+% slightly different depending on whether the math version being set-up was
+% with an 8bit encoding or TU encoding.
+%
+% For the sake of uniform treatment we modify this at |1.3v|, but this is a
+% bit complicated regarding timing: we need, in absence of |unimathaccents|
+% option, in math versions with an OpenType font, to let the \cs{acute} etc...
+% acquire back some prior non-\mst meanings. To allow maximal flexibility,
+% these original meaning get stored at begin document only. But
+% \cs{mst@nonsubduedmathaccents} assigns to \cs{acute} etc... (in the robust
+% sense with \LaTeX{} |2019-10-01| or later) the meaning stored in the macros
+% with the math version in their names. Such \cs{mst@acute@mvnormal} etc...
+% must thus be ready before \cs{mst@nonsubduedmathaccents} (or at least before
+% the last such) execution: the code here must get executed after the
+% definition of the «original»-named macros but prior to the (last one, if
+% multiple) \cs{mst@nonsubduedmathaccents}.
+%
+% Hence |1.3v| delayed a bit the initial execution of this macro (see further
+% down in the code) compared to what happened in |1.3u|.
+%
+% We are in a group but \cs{AtEndOfPackage} does the right thing.
+% \begin{macrocode}
+ \AtEndOfPackage{\AtBeginDocument{%
\@tfor\@tempa:={grave}{acute}{check}{breve}{bar}%
{dot}{ddot}{mathring}{hat}{tilde}%
\do
- {\expandafter\gdef\csname mst@\@tempa @mv#1\expandafter\endcsname
- \expandafter{\csname mst@original@\@tempa\endcsname}}%
+ {\expandafter\let
+ \csname mst@\@tempa @mv#1\mst@robustifyingspace\expandafter\endcsname
+ \csname mst@original@\@tempa\endcsname}%
+ }}%
\fi
- \else
+% \end{macrocode}
+% This is needed because the pdflatex engine branch will use
+% \cs{DeclareMathAccent} and it creates robust macros with \LaTeX{}
+% |2019-10-01| or later. As we want elsewhere in the package code not to have
+% to check if under Unicode engine or not, we need to handle here also some
+% definition of robust macros.
+% \begin{macrocode}
+ \ifmst@robust@obsessed@LaTeX@era
+ \@tfor\@tempa:={grave}{acute}{check}{breve}{bar}%
+ {dot}{ddot}{mathring}{hat}{tilde}%
+ \do
+ {\expandafter\xdef\csname mst@\@tempa @mv#1\endcsname
+ {\noexpand\protect
+ \expandafter\noexpand\csname mst@\@tempa @mv#1 \endcsname}%
+ }%
+ \fi
+ \else % false branch of ifUniEnc
+% \end{macrocode}
+% \cs{DeclareMathAccent} works \cs{global}ly. And with \LaTeX{} |2019-10-01|
+% or later it creates robust macros.
+% \begin{macrocode}
% \` -> \grave
\expandafter\DeclareMathAccent\expandafter
{\csname mst@grave@mv#1\endcsname}{\mathalpha}{mtoperatorfont}%
@@ -8034,16 +8283,22 @@ defaultbf,defaultit,defaultsf,defaulttt}\mst@nonormalboldtrue}
% dotless i and j in subdued mode, even in case of usage with fontspec.
%
% |1.3u| similarly lets math accents be correctly subdued.
+%
+% |1.3v| adapts to \cs{hbar} and math accents now being robust with \LaTeX{}
+% |2019-10-01| or later.
% \begin{macrocode}
\MTcustomizenewmcodes
- \let\mst@original@hbar\hbar
+ \expandafter\let\expandafter
+ \mst@original@hbar
+ \csname hbar\mst@robustifyingspace\endcsname
\let\mst@original@imath\imath
\let\mst@original@jmath\jmath
\@tfor\@tempa:={grave}{acute}{check}{breve}{bar}%
{dot}{ddot}{mathring}{hat}{tilde}%
\do
{\expandafter\let\csname mst@original@\@tempa\expandafter\endcsname
- \csname \@tempa\endcsname}%
+ \csname \@tempa\mst@robustifyingspace\endcsname
+ }%
\ifmst@XeOrLua
\edef\mst@subduedminus
{\mst@Umathcodenum`\noexpand\-=\the\mst@Umathcodenum`\-\relax}%
@@ -8062,7 +8317,11 @@ defaultbf,defaultit,defaultsf,defaulttt}\mst@nonormalboldtrue}
\mst@subduedminus
\else
\mst@nonsubduedhbar
- \mst@nonsubduedmathaccents
+% \end{macrocode}
+% |1.3v| needs this \cs{mst@nonsubduedmathaccents} to get executed later (see
+% code comments for \cs{mst@dothe@mathaccentsstuff}).
+% \begin{macrocode}
+ % \mst@nonsubduedmathaccents % will get executed later
\mst@nonsubduedminus
% \end{macrocode}
% |1.3j|: an earlier version of this code was earlier part of \cs{Mathastext@}.
@@ -8087,6 +8346,7 @@ defaultbf,defaultit,defaultsf,defaulttt}\mst@nonormalboldtrue}
\fi
\fi
}% \AtBeginDocument
+\AtEndOfPackage{\AtBeginDocument{\ifmst@subdued\else\mst@nonsubduedmathaccents\fi}}%
% \end{macrocode}
% \end{macro}
% \begin{macro}{subdued}
@@ -8100,8 +8360,9 @@ defaultbf,defaultit,defaultsf,defaulttt}\mst@nonormalboldtrue}
% math families of `a' and `1', respectively$^1$. Due to the
% reassignements done for characters by |mathastext| I also had
% decided in 2011 that the OT1 encoding, if detected, should be
-% replaced by T1 ($(1)$: but the \emph{euler} package for example
-% assigns the digits to the \emph{letters} symbol font...)
+% replaced by T1\newline
+% $^1$but the \emph{euler} package for example
+% assigns the digits to the \emph{letters} symbol font...
%
% |1.15d|: Oct 13, 2012. The \cs{mathcode} thing has to be used with care
% under Unicode engines. Unfortunately the \cs{luatexUmathcode} macro is
@@ -8269,7 +8530,7 @@ defaultbf,defaultit,defaultsf,defaulttt}\mst@nonormalboldtrue}
Grave accent \` Left brace \{ Vertical bar \|
Right brace \} Tilde \~}
-\CheckSum{6010}
+\CheckSum{6101}
\makeatletter\check@checksum\makeatother
\Finale
%%
diff --git a/macros/latex/contrib/mathastext/mathastext.pdf b/macros/latex/contrib/mathastext/mathastext.pdf
index a8bccf1cd4..21fdfef499 100644
--- a/macros/latex/contrib/mathastext/mathastext.pdf
+++ b/macros/latex/contrib/mathastext/mathastext.pdf
Binary files differ
diff --git a/macros/latex/contrib/mathastext/mathastexttestalphabets.pdf b/macros/latex/contrib/mathastext/mathastexttestalphabets.pdf
index 76d99b0888..0163ff573e 100644
--- a/macros/latex/contrib/mathastext/mathastexttestalphabets.pdf
+++ b/macros/latex/contrib/mathastext/mathastexttestalphabets.pdf
Binary files differ
diff --git a/macros/latex/contrib/nicematrix/nicematrix-french.pdf b/macros/latex/contrib/nicematrix/nicematrix-french.pdf
index 16331f32b4..6f7655d174 100644
--- a/macros/latex/contrib/nicematrix/nicematrix-french.pdf
+++ b/macros/latex/contrib/nicematrix/nicematrix-french.pdf
Binary files differ
diff --git a/macros/latex/contrib/nicematrix/nicematrix-french.tex b/macros/latex/contrib/nicematrix/nicematrix-french.tex
index 924e988c21..5d6e573f66 100644
--- a/macros/latex/contrib/nicematrix/nicematrix-french.tex
+++ b/macros/latex/contrib/nicematrix/nicematrix-french.tex
@@ -1,4 +1,4 @@
-\documentclass[dvipsnames]{article}% dvipsnames is for xcolor (loaded by Tikz, loaded by nicematrix)
+\documentclass[dvipsnames]{article}% dvipsnames is for xcolor (loaded by Tikz, loaded by nicematrix)
\usepackage{xltxtra}
\usepackage[french]{babel}
@@ -8,9 +8,7 @@
\usepackage{amsmath}
\usepackage{color}
\usepackage{array}
-
\usepackage{colortbl}
-
\usepackage{nicematrix}
@@ -30,6 +28,11 @@ c & c & b & a & e
\usepackage{arydshln}
\usepackage{verbatim}
+% We use \MakeShortVerb of shortvrb and not \DefineShortVrb of fancyvrb
+% because we don't want the contents of short verbatim colored in gray
+\usepackage{shortvrb}
+\MakeShortVerb{\|}
+
\usepackage{fancyvrb}
\fvset{commandchars=\~\#\@,formatcom={\color{gray}}}
@@ -69,46 +72,44 @@ c & c & b & a & e
\VerbatimFootnotes
-\title{L'extension \pkg{nicematrix}\thanks{Ce document correspond à la version~\myfileversion\space of \pkg{nicematrix},
-en date du~\myfiledate.}} \author{F. Pantigny \\ \texttt{fpantigny@wanadoo.fr}}
+\title{L'extension \pkg{nicematrix}
+ \thanks{Ce document correspond à la version~\myfileversion\space of \pkg{nicematrix},
+ en date du~\myfiledate.}}
+\author{F. Pantigny \\ \texttt{fpantigny@wanadoo.fr}}
\maketitle
\begin{abstract}
-L'extension LaTeX \pkg{nicematrix} fournit de nouveaux environnements
-similaires aux environnements classiques \verb|{array}| et \verb|{matrix}| mais avec des
-fonctionnalités supplémentaires. Parmi ces fonctionnalités figurent la
-possibilité de fixer la largeur des colonnes et de tracer des traits en
-pointillés continus entre les cases du tableau.
+L'extension LaTeX \pkg{nicematrix} fournit de nouveaux environnements similaires aux environnements classiques
+|{array}| et |{matrix}| mais avec des fonctionnalités supplémentaires. Parmi ces fonctionnalités figurent la
+possibilité de fixer la largeur des colonnes et de tracer des traits en pointillés continus entre les cases du
+tableau.
\end{abstract}
\vspace{1cm}
\section{Présentation}
-Cette extension peut être utilisée avec \verb|xelatex|, \verb|lualatex| et \verb|pdflatex| mais
-aussi avec le cheminement classique \verb|latex|-\verb|dvips|-\verb|ps2pdf| (ou Adobe
-Distiller). Deux ou trois compilations successives peuvent être nécessaires.
-Cette extension nécessite et charge les extensions \pkg{expl3}, \pkg{l3keys2e},
-\pkg{xparse}, \pkg{array}, \pkg{amsmath} et \pkg{tikz} . Elle charge aussi la
-bibliothèque Tikz \pkg{fit}.
+Cette extension peut être utilisée avec |xelatex|, |lualatex| et |pdflatex| mais aussi avec le cheminement
+classique |latex|-|dvips|-|ps2pdf| (ou Adobe Distiller). Deux ou trois compilations successives peuvent être
+nécessaires. Cette extension nécessite et charge les extensions \pkg{expl3}, \pkg{l3keys2e}, \pkg{xparse},
+\pkg{array}, \pkg{amsmath} et \pkg{tikz} . Elle charge aussi la bibliothèque Tikz \pkg{fit}. L'utilisateur final
+n'a qu'à charger l'extension \pkg{nicematrix} avec l'instruction habituelle : |\usepackage{nicematrix}|.
\medskip
\begin{savenotes}
\begin{minipage}{0.6\linewidth}
-Cette extension fournit quelques outils supplémentaires pour dessiner des
-matrices (au sens mathématique). Les principales caractéristiques sont les
-suivantes :
-
-\textbullet\ lignes en pointillés continues\footnote{Si l'option de classe
+Cette extension fournit quelques outils supplémentaires pour dessiner des matrices (au sens mathématique). Les
+principales caractéristiques sont les suivantes :
+\begin{itemize}\setlength{\itemsep}{0pt}
+\item des lignes en pointillés continues\footnote{Si l'option de classe
\texttt{draft} est utilisée, ces lignes en pointillés ne sont pas tracées pour
accélérer la compilation.} ;
-
-\textbullet\ des rangées et colonnes extérieures pour les labels ;
-
-\textbullet\ un contrôle sur la largeur des colonnes.
+\item des rangées et colonnes extérieures pour les labels ;
+\item un contrôle sur la largeur des colonnes.
+\end{itemize}
\end{minipage}
\end{savenotes}
\hspace{1.4cm}
@@ -127,8 +128,8 @@ L_n & a_{n1} & a_{n2} & \Cdots & a_{nn}
\medskip
-Une commande\verb|\NiceMatrixOptions| est fournie pour régler les options (la
-portée des options fixées par cette commande est le groupe TeX courant).
+Une commande|\NiceMatrixOptions| est fournie pour régler les options (la portée des options fixées par cette
+commande est le groupe TeX courant).
\bigskip
@@ -136,8 +137,7 @@ portée des options fixées par cette commande est le groupe TeX courant).
\medskip
\begin{minipage}{10cm}
-Considérons par exemple le code suivant qui utilise un environnement
-\verb|{pmatrix}| de l'extension \pkg{amsmath}.
+Considérons par exemple le code suivant qui utilise un environnement |{pmatrix}| de l'extension \pkg{amsmath}.
\smallskip
\begin{BVerbatim}
@@ -166,8 +166,8 @@ $A = \begin{pmatrix}
\begin{scope}
\NiceMatrixOptions{transparent}
\begin{minipage}{10cm}
-Maintenant, si nous utilisons l'extension \pkg{nicematrix} avec l'option
-\verb|transparent|, le même code va donner le résultat ci-contre à droite.
+Maintenant, si nous utilisons l'extension \pkg{nicematrix} avec l'option |transparent|, le même code va donner le
+résultat ci-contre à droite.
\end{minipage}\hspace{1cm}
$A = \begin{pmatrix}
1 & \cdots & \cdots & 1 \\
@@ -200,41 +200,39 @@ L'extension \pkg{nicematrix} définit les nouveaux environnements suivants :
\medskip
-Par défaut, les environnements \verb|{NiceMatrix}|, \verb|{pNiceMatrix}|, \verb|{bNiceMatrix}|, \verb|{BNiceMatrix}|,
-\verb|{vNiceMatrix}| et \verb|{VNiceMatrix}| se comportent quasiment comme les environnements correspondants de
-\pkg{amsmath} : \verb|{matrix}|, \verb|{pmatrix}|, \verb|{bmatrix}|, \verb|{Bmatrix}|, \verb|{vmatrix}| et
-\verb|{Vmatrix}|.
+Par défaut, les environnements |{NiceMatrix}|, |{pNiceMatrix}|, |{bNiceMatrix}|, |{BNiceMatrix}|, |{vNiceMatrix}|
+et |{VNiceMatrix}| se comportent quasiment comme les environnements correspondants de \pkg{amsmath} : |{matrix}|,
+|{pmatrix}|, |{bmatrix}|, |{Bmatrix}|, |{vmatrix}| et |{Vmatrix}|.
\medskip
-L'environnement \verb|{NiceArray}| est similaire à l'environnement \verb|{array}| de l'extension \verb|{array}|.
-Néanmoins, pour des raisons techniques, dans le préambule de l'environnement \verb|{NiceArray}|, l'utilisateur doit
-utiliser les lettres \verb|L|, \verb|C| et~\verb|R| au lieu de \verb|l|, \verb|c| et \verb|r|. Il est possible
-d'utiliser les constructions \verb|w{...}{...}|, \verb|W{...}{...}|\footnote{Pour les colonnes de type \verb|w| et
- \verb|W|, les cases sont composées en mode mathématique (dans les environnements de \pkg{nicematrix}) alors que
- dans \verb|{array}| de \pkg{array}, elles sont composées en mode texte.}, \verb+|+, \verb|>{...}|, \verb|<{...}|,
-\verb|@{...}|, \verb|!{...}| et \verb|*{n}{...}| mais les lettres \verb|p|, \verb|m| et \verb|b| ne doivent pas
-être employées. L'environnement \verb|{NiceArray}| et ses variantes fournissent des options qui permettent de
-tracer des rangées et colonnes extérieures. Voir p.~\pageref{NiceArray} la partie concernant \verb|{NiceArray}|.
+L'environnement |{NiceArray}| est similaire à l'environnement |{array}| de l'extension |{array}|. Néanmoins, pour
+des raisons techniques, dans le préambule de l'environnement |{NiceArray}|, l'utilisateur doit utiliser les lettres
+|L|, |C| et~|R| au lieu de |l|, |c| et |r|. Il est possible d'utiliser les constructions |w{...}{...}|,
+|W{...}{...}|\footnote{Pour les colonnes de type |w| et |W|, les cases sont composées en mode mathématique (dans
+ les environnements de \pkg{nicematrix}) alors que dans |{array}| de \pkg{array}, elles sont composées en mode
+ texte.}, \verb+|+, |>{...}|, |<{...}|, |@{...}|, |!{...}| et |*{n}{...}| mais les lettres |p|, |m| et |b| ne
+doivent pas être employées. L'environnement |{NiceArray}| et ses variantes fournissent des options qui permettent
+de tracer des rangées et colonnes extérieures. Voir p.~\pageref{NiceArray} la partie concernant |{NiceArray}|.
\section{Les lignes en pointillés continues}
-À l'intérieur des environnements de l'extension \pkg{nicematrix}, de nouvelles commandes sont définies :
-\verb|\Ldots|, \verb|\Cdots|, \verb|\Vdots|, \verb|\Ddots|, and \verb|\Iddots|. Ces commandes sont conçues pour
-être utilisées à la place de \verb|\dots|, \verb|\cdots|, \verb|\vdots|, \verb|\ddots| et \verb|\iddots|.\footnote{La
- commande \verb|\iddots|, définie dans \pkg{nicematrix}, est une variante de \verb|\ddots| avec les points allant
- vers le haut : \smash{$\iddots$}. Si \pkg{mathdots} est chargée, la version de \pkg{mathdots} est utilisée. Elle
- correspond à la commande \verb|\adots| de \pkg{unicode-math}.}
-\newcounter{fniddots}
+À l'intérieur des environnements de l'extension \pkg{nicematrix}, de nouvelles commandes sont définies : |\Ldots|,
+|\Cdots|, |\Vdots|, |\Ddots|, and |\Iddots|. Ces commandes sont conçues pour être utilisées à la place de |\dots|,
+|\cdots|, |\vdots|, |\ddots| et |\iddots|.\footnote{La commande |\iddots|, définie dans \pkg{nicematrix}, est une
+ variante de |\ddots| avec les points allant vers le haut : \smash{$\iddots$}. Si \pkg{mathdots} est chargée, la
+ version de \pkg{mathdots} est utilisée. Elle correspond à la commande |\adots| de \pkg{unicode-math}.}
+\newcounter{fniddots}
\setcounter{fniddots}{\thefootnote}
\smallskip
Chacune de ces commandes doit être utilisée seule dans la case du tableau et elle trace une ligne en pointillés
-entre les premières cases non vides\footnote{La définition précise de ce qui est considéré comme une «case
- vide» est donnée plus loin (cf. p.~\pageref{empty-cells}).} situées de part et d'autre de la case courante.
-Bien entendu, pour \verb|\Ldots| et \verb|\Cdots|, c'est une ligne horizontale ; pour \verb|\Vdots|, c'est une
-ligne verticale et pour \verb|\Ddots| et \verb|\Iddots|, ce sont des lignes diagonales.\par\nobreak\bigskip
+entre les premières cases non vides\footnote{La définition précise de ce qui est considéré comme une «case vide»
+ est donnée plus loin (cf. p.~\pageref{empty-cells}).} situées de part et d'autre de la case courante. Bien
+entendu, pour |\Ldots| et |\Cdots|, c'est une ligne horizontale ; pour |\Vdots|, c'est une ligne verticale et pour
+|\Ddots| et |\Iddots|, ce sont des lignes diagonales.\par\nobreak
+\bigskip
\begin{BVerbatim}[baseline=c,boxwidth=10cm]
\begin{bNiceMatrix}
a_1 & \Cdots & & & a_1 \\
@@ -253,8 +251,9 @@ a_1 & a_2 & & & a_n
\end{bNiceMatrix}$
\interitem
-Pour représenter la matrice nulle, on peut choisir d'utiliser le codage
-suivant :\par\nobreak \bigskip
+Pour représenter la matrice nulle, on peut choisir d'utiliser le codage suivant :\par\nobreak
+
+\bigskip
\begin{BVerbatim}[baseline=c,boxwidth=10cm]
\begin{bNiceMatrix}
0 & \Cdots & 0 \\
@@ -269,10 +268,11 @@ $\begin{bNiceMatrix}
\end{bNiceMatrix}$
\bigskip
-On peut néanmoins souhaiter une matrice plus grande. Habituellement, dans un
-tel cas, les utilisateurs de LaTeX ajoutent une nouvelle ligne et une nouvelle
-colonne. Il est possible d'utiliser la même méthode avec \pkg{nicematrix}
-:\par\nobreak \bigskip
+On peut néanmoins souhaiter une matrice plus grande. Habituellement, dans un tel cas, les utilisateurs de LaTeX
+ajoutent une nouvelle ligne et une nouvelle colonne. Il est possible d'utiliser la même méthode avec
+\pkg{nicematrix} :\par\nobreak
+
+\bigskip
\begin{BVerbatim}[baseline=c,boxwidth=10cm]
\begin{bNiceMatrix}
0 & \Cdots & \Cdots & 0 \\
@@ -289,14 +289,14 @@ $\begin{bNiceMatrix}
\end{bNiceMatrix}$
\bigskip
-Dans la première colonne de cet exemple, il y a deux instructions \verb|\Vdots| mais
-une seule ligne en pointillés sera tracée (il n'y a pas d'objets qui se
-superposent dans le fichier \textsc{pdf} résultant\footnote{Et il n'est pas
-possible de tracer une ligne \verb|\Ldots| et une ligne \verb|\Cdots| entre les mêmes cases.}).
+Dans la première colonne de cet exemple, il y a deux instructions |\Vdots| mais une seule ligne en pointillés sera
+tracée (il n'y a pas d'objets qui se superposent dans le fichier \textsc{pdf} résultant\footnote{Et il n'est pas
+ possible de tracer une ligne |\Ldots| et une ligne |\Cdots| entre les mêmes cases.}).
\bigskip
-En fait, dans cet exemple, il aurait été possible de tracer la même matrice
-plus rapidement avec le codage suivant :\par\nobreak
+En fait, dans cet exemple, il aurait été possible de tracer la même matrice plus rapidement avec le codage suivant
+:\par\nobreak
+
\bigskip
\begin{BVerbatim}[baseline=c,boxwidth=10cm]
\begin{bNiceMatrix}
@@ -315,14 +315,14 @@ $\begin{bNiceMatrix}
\bigskip
Il y a aussi d'autres moyens de changer la taille d'une matrice. On pourrait vouloir utiliser l'argument optionnel
-de la commande~\verb|\\| pour l'espacement vertical et la commande~\verb|\hspace*| dans une case pour l'espacement
-horizontal.\footnote{On peut aussi régler la largeur des colonnes en utilisant
- l'environnement \verb|{NiceArray}| (ou une de ses variantes) avec une colonne de type~\verb|w| ou \verb|W|: cf.
- p.~\pageref{width}}
-
-Toutefois, une commande~\verb|\hspace*| pourrait interférer dans la construction des lignes en pointillés. C'est
-pourquoi l'extension \pkg{nicematrix} fournit une commande~\verb|\Hspace| qui est une variante de \verb|\hspace|
-transparente pour la construction des lignes en pointillés de \pkg{nicematrix}.\par\nobreak
+de la commande~|\\| pour l'espacement vertical et la commande~|\hspace*| dans une case pour l'espacement
+horizontal.\footnote{On peut aussi régler la largeur des colonnes en utilisant l'environnement |{NiceArray}| (ou
+ une de ses variantes) avec une colonne de type~|w| ou |W|: cf. p.~\pageref{width}}
+
+Toutefois, une commande~|\hspace*| pourrait interférer dans la construction des lignes en pointillés. C'est
+pourquoi l'extension \pkg{nicematrix} fournit une commande~|\Hspace| qui est une variante de |\hspace| transparente
+pour la construction des lignes en pointillés de \pkg{nicematrix}.\par\nobreak
+
\bigskip
\begin{BVerbatim}[baseline=c,boxwidth=10cm]
\begin{bNiceMatrix}
@@ -339,8 +339,8 @@ $\begin{bNiceMatrix}
\subsection{L'option nullify-dots}
-Considérons la matrice suivante qui a été composée classiquement avec l'environnement
-\verb|{pmatrix}| de \pkg{amsmath}.\par\nobreak
+Considérons la matrice suivante qui a été composée classiquement avec l'environnement |{pmatrix}| de
+\pkg{amsmath}.\par\nobreak
\medskip
\begin{BVerbatim}[baseline=c,boxwidth=8cm]
@@ -364,8 +364,9 @@ a_5 & b
\bigskip
-Si nous ajoutons des instructions \verb|\vdots| dans la seconde colonne, la
-géométrie de la matrice est modifiée.\par\nobreak
+Si nous ajoutons des instructions |\vdots| dans la seconde colonne, la géométrie de la matrice est
+modifiée.\par\nobreak
+
\medskip
\begin{BVerbatim}[baseline=c,boxwidth=8cm]
$B = \begin{pmatrix}
@@ -387,8 +388,9 @@ a_5 & b
\end{pmatrix}$
\bigskip
-Par défaut, avec \pkg{nicematrix}, si nous remplaçons \verb|{pmatrix}| par \verb|{pNiceMatrix}| et \verb|\vdots| par
-\verb|\Vdots|, la géométrie de la matrice n'est pas changée.\par\nobreak
+Par défaut, avec \pkg{nicematrix}, si nous remplaçons |{pmatrix}| par |{pNiceMatrix}| et |\vdots| par |\Vdots|, la
+géométrie de la matrice n'est pas changée.\par\nobreak
+
\medskip
\begin{BVerbatim}[baseline=c,boxwidth=8cm]
$C = \begin{pNiceMatrix}
@@ -410,10 +412,10 @@ a_5 & b
\end{pNiceMatrix}$
\bigskip
-On pourrait toutefois préférer la géométrie de la première matrice $A$ et
-vouloir avoir la même géométrie avec une ligne en pointillés continue dans la
-seconde colonne. C'est possible en utilisant l'option \verb|nullify-dots| (et une
-seule instruction \verb|\Vdots| suffit).\par\nobreak
+On pourrait toutefois préférer la géométrie de la première matrice $A$ et vouloir avoir la même géométrie avec une
+ligne en pointillés continue dans la seconde colonne. C'est possible en utilisant l'option |nullify-dots| (et une
+seule instruction |\Vdots| suffit).\par\nobreak
+
\medskip
\begin{BVerbatim}[baseline=c,boxwidth=8cm]
$D = \begin{pNiceMatrix}[~emphase#nullify-dots@]
@@ -435,23 +437,21 @@ a_5 & b
\end{pNiceMatrix}$
\medskip
-L'option \verb|nullify-dots| «smashe» les instructions \verb|\Ldots| (et ses variantes)
-verticalement mais aussi horizontalement.
+L'option |nullify-dots| «smashe» les instructions |\Ldots| (et ses variantes) verticalement mais aussi
+horizontalement.
\medskip
-{\bfseries Il doit n'y avoir aucun espace devant le crochet ouvrant (\verb|[|) des
-options de l'environnement.}
+{\bfseries Il doit n'y avoir aucun espace devant le crochet ouvrant (|[|) des options de l'environnement.}
\subsection{La commande \textbackslash Hdotsfor}
-Certaines personnes utilisent habituellement la commande \verb|\hdotsfor| de
-l'extension \pkg{amsmath} pour tracer des lignes en pointillés horizontales
-dans une matrice. Dans les environnements de \pkg{nicematrix}, il convient
-d'utiliser \verb|\Hdotsfor| à la place pour avoir les lignes en pointillés
-similaires à toutes celles tracées par l'extension \pkg{nicematrix}.
+Certaines personnes utilisent habituellement la commande |\hdotsfor| de l'extension \pkg{amsmath} pour tracer des
+lignes en pointillés horizontales dans une matrice. Dans les environnements de \pkg{nicematrix}, il convient
+d'utiliser |\Hdotsfor| à la place pour avoir les lignes en pointillés similaires à toutes celles tracées par
+l'extension \pkg{nicematrix}.
-Comme avec les autres commandes de \pkg{nicematrix} (comme \verb|\Cdots|, \verb|\Ldots|, \verb|\Vdots|, etc.), la ligne
-en pointillés tracée par \verb|\Hdotsfor| s'étend jusqu'au contenu des cases de part et d'autre.
+Comme avec les autres commandes de \pkg{nicematrix} (comme |\Cdots|, |\Ldots|, |\Vdots|, etc.), la ligne en
+pointillés tracée par |\Hdotsfor| s'étend jusqu'au contenu des cases de part et d'autre.
\medskip
\begin{BVerbatim}[baseline=c,boxwidth=7cm]
@@ -471,7 +471,7 @@ $\begin{pNiceMatrix}
\bigskip
Néanmoins, si ces cases sont vides, la ligne en pointillés s'étend seulement dans les cases spécifiées par
-l'argument de \verb|\Hdotsfor| (par conception).
+l'argument de |\Hdotsfor| (par conception).
\medskip
\begin{BVerbatim}[baseline=c,boxwidth=7cm]
@@ -490,40 +490,42 @@ $\begin{pNiceMatrix}
\end{pNiceMatrix}$
\bigskip
-La commande \verb|\hdotsfor| de \pkg{amsmath} prend un argument optionnel (entre
-crochets) qui est utilisé pour un réglage fin de l'espace entre deux points
-consécutifs. Par homogénéité, \verb|\Hdotsfor| prend aussi un argument optionnel
-mais cet argument est écarté silencieusement.
+La commande |\hdotsfor| de \pkg{amsmath} prend un argument optionnel (entre crochets) qui est utilisé pour un
+réglage fin de l'espace entre deux points consécutifs. Par homogénéité, |\Hdotsfor| prend aussi un argument
+optionnel mais cet argument est écarté silencieusement.
-Remarque : Contrairement à la commande \verb|\hdotsfor| de \pkg{amsmath}, la commande \verb|\Hdotsfor| est
-utilisable lorsque l'extension \pkg{colortbl} est chargée (mais vous risquez d'avoir des problèmes si vous utilisez
-\verb|\rowcolor| sur la même rangée que \verb|\Hdotsfor|).
+Remarque : Contrairement à la commande |\hdotsfor| de \pkg{amsmath}, la commande |\Hdotsfor| est utilisable lorsque
+l'extension \pkg{colortbl} est chargée (mais vous risquez d'avoir des problèmes si vous utilisez |\rowcolor| sur la
+même rangée que |\Hdotsfor|).
\subsection{Comment créer les lignes en pointillés de manière transparente}
-L'extension \pkg{nicematrix} fournit une option appelée \verb|transparent| qui permet d'utiliser du code existant
-de manière transparente dans les environnements \verb|{matrix}|. Cette option peut être passée en option du
-\verb|\usepackage| ou bien être fixée avec la commande \verb|\NiceMatrixOptions|.
+L'extension \pkg{nicematrix} fournit une option appelée |transparent| qui permet d'utiliser du code existant de
+manière transparente dans les environnements |{matrix}|. Cette option peut être passée en option du |\usepackage|
+ou bien être fixée avec la commande |\NiceMatrixOptions|.
-En fait, cette option est un alias pour la conjonction de deux options : \verb|renew-dots| et \verb|renew-matrix|.
+En fait, cette option est un alias pour la conjonction de deux options : |renew-dots| et |renew-matrix|.
\smallskip
\begin{itemize}
-\item L'option \verb|renew-dots|\par\nobreak Avec cette option, les commandes \verb|\ldots|, \verb|\cdots|,
-\verb|\vdots|, \verb|\ddots|, \verb|\iddots|\footnotemark[\thefniddots] et \verb|\hdotsfor| sont redéfinies dans
-les environnements de \pkg{nicematrix} et agissent comme \verb|\Ldots|, \verb|\Cdots|, \verb|\Vdots|,
-\verb|\Ddots|, \verb|\Iddots| et \verb|\Hdotsfor| ; la commande \verb|\dots| (points de suspension «automatiques»
-de \verb|amsmath|) est aussi redéfinie et se comporte comme \verb|\Ldots|.
-
-\item L'option \verb|renew-matrix|\par\nobreak
-Avec cette option, l'environnement \verb|{matrix}| est redéfini et
-se comporte comme \verb|{NiceMatrix}| et il en est de même pour les cinq variantes.
+\item L'option |renew-dots|\par\nobreak
+
+Avec cette option, les commandes |\ldots|, |\cdots|, |\vdots|, |\ddots|, |\iddots|\footnotemark[\thefniddots] et
+|\hdotsfor| sont redéfinies dans les environnements de \pkg{nicematrix} et agissent comme |\Ldots|, |\Cdots|,
+|\Vdots|, |\Ddots|, |\Iddots| et |\Hdotsfor| ; la commande |\dots| (points de suspension «automatiques» de
+|amsmath|) est aussi redéfinie et se comporte comme |\Ldots|.
+
+\item L'option |renew-matrix|\par\nobreak
+
+Avec cette option, l'environnement |{matrix}| est redéfini et se comporte comme |{NiceMatrix}| et il en est de même
+pour les cinq variantes.
\end{itemize}
\bigskip
-Par conséquent, avec l'option \verb|transparent|, un code classique donne directement le résultat fourni par
+Par conséquent, avec l'option |transparent|, un code classique donne directement le résultat fourni par
\pkg{nicematrix}.\par\nobreak
+
\bigskip
\begin{scope}
\NiceMatrixOptions{transparent}
@@ -549,11 +551,11 @@ $\begin{pmatrix}
\section{Les nœuds Tikz créés par l'extension nicematrix}
-L'extension \pkg{nicematrix} crée un nœud Tikz pour chaque case du tableau considéré. Ces nœuds sont utilisés
-pour tracer les lignes en pointillés entre les cases du tableau. Toutefois, l'utilisateur peut aussi utiliser
-directement ces nœuds. On commence par donner un nom au tableau (avec l'option \verb|name|). Cela étant fait, les
-nœuds sont accessibles à travers les noms «\textsl{nom}-$i$-$j$» où \textsl{nom} est le nom donné au tableau et $i$
-et $j$ les numéros de ligne et de colonne de la case considérée.
+L'extension \pkg{nicematrix} crée un nœud Tikz pour chaque case du tableau considéré. Ces nœuds sont utilisés pour
+tracer les lignes en pointillés entre les cases du tableau. Toutefois, l'utilisateur peut aussi utiliser
+directement ces nœuds. On commence par donner un nom au tableau (avec l'option |name|). Cela étant fait, les nœuds
+sont accessibles à travers les noms «\textsl{nom}-$i$-$j$» où \textsl{nom} est le nom donné au tableau et $i$ et
+$j$ les numéros de ligne et de colonne de la case considérée.
\medskip
\begin{BVerbatim}[baseline=c,boxwidth=11cm]
@@ -574,7 +576,7 @@ $\begin{pNiceMatrix}[name=ma-matrice]
\draw (ma-matrice-2-2) circle (2mm) ;
\medskip
-Ne pas oublier les options \verb|remember picture| et \verb|overlay|.
+Ne pas oublier les options |remember picture| et |overlay|.
\bigskip
Dans l'exemple suivant, nous avons surligné toutes les cases de la matrice.
@@ -590,12 +592,12 @@ a & a & a
\bigskip
En fait, l'extension \pkg{nicematrix} peut créer des nœuds supplémentaires (\emph{extra nodes} en anglais). Ces
-nouveaux nœuds sont créés si l'option \verb|create-extra-nodes| est utilisée. Il y a deux séries de nœuds
+nouveaux nœuds sont créés si l'option |create-extra-nodes| est utilisée. Il y a deux séries de nœuds
supplémentaires : les «nœuds moyens» (\emph{medium nodes} en anglais) et les «nœuds larges» (\emph{large nodes} en
anglais).
\medskip
-Les noms des «nœuds moyens» s'obtiennent en ajoutant le suffixe «\verb|-medium|» au nom des nœuds normaux. Dans
+Les noms des «nœuds moyens» s'obtiennent en ajoutant le suffixe «|-medium|» au nom des nœuds normaux. Dans
l'exemple suivant, on a surligné tous les «nœuds moyens». Nous considérons que cet exemple se suffit à lui-même
comme définition de ces nœuds.
\[\begin{pNiceMatrix}[
@@ -622,7 +624,7 @@ a & a & a
\medskip
-Les noms des «nœuds larges» s'obtiennent en ajoutant le suffixe «\verb|-large|» au nom des nœuds normaux. Dans l'exemple
+Les noms des «nœuds larges» s'obtiennent en ajoutant le suffixe «|-large|» au nom des nœuds normaux. Dans l'exemple
suivant, on a surligné tous les «nœuds larges». Nous considérons que cet exemple se suffit à lui-même comme
définition de ces nœuds.\footnote{Il n'y a pas de «nœuds larges» créés dans les lignes et colonnes extérieures
(pour ces lignes et colonnes, voir p.~\pageref{exterior}).}
@@ -651,12 +653,12 @@ a & a & a
\medskip
Les «nœuds larges» de la première colonne et de la dernière colonne peuvent apparaître trop petits pour certains
-usages. C'est pourquoi il est possible d'utiliser les options \verb|left-margin| et \verb|right-margin| pour
-ajouter de l'espace des deux côtés du tableau et aussi de l'espace dans les «nœuds larges» de la première colonne et
-de la dernière colonne. Dans l'exemple suivant, nous avons utilisé les options \verb|left-margin| et \verb|right-margin|.
-\footnote{Les options \verb|left-margin| et \verb|right-margin| prennent des dimensions comme valeurs mais, si
- aucune valeur n'est donnée, c'est la valeur par défaut qui est utilisée et elle est égale à \verb|\arraycolsep|
- (par défaut, 5~pt).Il existe aussi une option \verb|margin| pour fixer à la fois \verb|left-margin| et \verb|right-margin|.}
+usages. C'est pourquoi il est possible d'utiliser les options |left-margin| et |right-margin| pour ajouter de
+l'espace des deux côtés du tableau et aussi de l'espace dans les «nœuds larges» de la première colonne et de la
+dernière colonne. Dans l'exemple suivant, nous avons utilisé les options |left-margin| et
+|right-margin|.\footnote{Les options |left-margin| et |right-margin| prennent des dimensions comme valeurs mais, si
+ aucune valeur n'est donnée, c'est la valeur par défaut qui est utilisée et elle est égale à |\arraycolsep| (par
+ défaut, 5~pt).Il existe aussi une option |margin| pour fixer à la fois |left-margin| et |right-margin|.}
\[\begin{pNiceMatrix}[
create-extra-nodes,left-margin,right-margin,
code-after = {\begin{tikzpicture}
@@ -679,9 +681,9 @@ a & a & a
\end{pNiceMatrix}\]
\medskip
-Il est aussi possible d'ajouter de l'espace sur les côtés du tableau avec les options
-\verb|extra-left-margin| et \verb|extra-right-margin|. Ces marges ne sont pas incorporées dans les «nœuds larges».
-Dans l'exemple suivant, nous avons utilisé \verb|extra-left-margin| et \verb|extra-right-margin| avec la valeur $3$~pt.
+Il est aussi possible d'ajouter de l'espace sur les côtés du tableau avec les options |extra-left-margin| et
+|extra-right-margin|. Ces marges ne sont pas incorporées dans les «nœuds larges». Dans l'exemple suivant, nous
+avons utilisé |extra-left-margin| et |extra-right-margin| avec la valeur $3$~pt.
\[\begin{pNiceMatrix}[
create-extra-nodes,left-margin,right-margin,extra-right-margin=3pt,extra-left-margin=3pt,
code-after = {\begin{tikzpicture}
@@ -704,8 +706,8 @@ a & a & a
\end{pNiceMatrix}\]
\medskip
-Dans le cas présent, si on veut un contrôle sur la hauteur des rangées, on peut ajouter un \verb|\strut| dans
-chaque rangée du tableau.
+Dans le cas présent, si on veut un contrôle sur la hauteur des rangées, on peut ajouter un |\strut| dans chaque
+rangée du tableau.
\[\begin{pNiceMatrix}[
create-extra-nodes,left-margin,right-margin,extra-right-margin=3pt,extra-left-margin=3pt,
code-after = {\begin{tikzpicture}
@@ -732,13 +734,13 @@ On explique plus loin comment surligner les nœuds créés par Tikz (cf. p. \pag
\section{Le code-after}
-L'option \verb|code-after| peut être utilisée pour indiquer du code qui sera exécuté après la construction de la
-matrice (et donc, en particulier, après la construction de tous les nœuds).
+L'option |code-after| peut être utilisée pour indiquer du code qui sera exécuté après la construction de la matrice
+(et donc, en particulier, après la construction de tous les nœuds).
-Dans le \verb|code-after|, les nœuds Tikz doivent être désignés sous la forme $i$-$j$ (sans le préfixe
-correspondant au nom de l'environnement).
+Dans le |code-after|, les nœuds Tikz doivent être désignés sous la forme $i$-$j$ (sans le préfixe correspondant au
+nom de l'environnement).
-De plus, une commande spéciale, nommée \verb|\line| est disponible pour tracer directement des lignes en pointillés
+De plus, une commande spéciale, nommée |\line| est disponible pour tracer directement des lignes en pointillés
entre les nœuds).
\medskip
@@ -759,26 +761,23 @@ $\begin{pNiceMatrix}[code-after = {\line {1-1} {3-3}}]
\section{L'environnement \{NiceArray\}}
\label{NiceArray}
-L'environnement \verb|{NiceArray}| est similaire à l'environnement \verb|{array}|. Comme pour \verb|{array}|,
-l'argument obligatoire est le préambule du tableau. Néanmoins, pour des raisons techniques, l'utilisateur doit
-utiliser les lettres \verb|L|, \verb|C| et \verb|R|\footnote{Les types de colonnes \verb|L|, \verb|C| et \verb|R|
- sont définis localement à l'intérieur de \verb|{NiceArray}| avec la commande \verb|\newcolumntype| de
- \pkg{array}. Cette définition masque une éventuelle définition précédente. En fait, les types de colonnes
- \verb|w| and \verb|W| sont également redéfinis.} au lieu de \verb|l|, \verb|c| et \verb|r|.
+L'environnement |{NiceArray}| est similaire à l'environnement |{array}|. Comme pour |{array}|, l'argument
+obligatoire est le préambule du tableau. Néanmoins, pour des raisons techniques, l'utilisateur doit utiliser les
+lettres |L|, |C| et |R|\footnote{Les types de colonnes |L|, |C| et |R| sont définis localement à l'intérieur de
+ |{NiceArray}| avec la commande |\newcolumntype| de \pkg{array}. Cette définition masque une éventuelle définition
+ précédente. En fait, les types de colonnes |w| and |W| sont également redéfinis.} au lieu de |l|, |c| et |r|.
-Il est possible d'utiliser les constructions \verb|w{...}{...}|, \verb|W{...}{...}|, \verb+|+, \verb|>{...}|,
-\verb|<{...}|, \verb|@{...}|, \verb|!{...}| et \verb|*{n}{...}| mais les lettres \verb|p|, \verb|m| et \verb|b| ne
-doivent pas être employées.\footnote{Dans une commande \verb|\multicolumn|, on doit également utiliser les lettres
- \verb|L|, \verb|C| et
- \verb|R|.}
+Il est possible d'utiliser les constructions |w{...}{...}|, |W{...}{...}|, \verb+|+, |>{...}|, |<{...}|, |@{...}|,
+|!{...}| et |*{n}{...}| mais les lettres |p|, |m| et |b| ne doivent pas être employées.\footnote{Dans une commande
+ |\multicolumn|, on doit également utiliser les lettres |L|, |C| et |R|.}
\medskip
-L'environnement \verb|{NiceArray}| accepte les options classiques \verb|t|, \verb|c| et \verb|b| de \verb|{array}|
-mais aussi d'autres options définies par \pkg{nicematrix} (\verb|renew-dots|, \verb|columns-width|, etc.).
+L'environnement |{NiceArray}| accepte les options classiques |t|, |c| et |b| de |{array}| mais aussi d'autres
+options définies par \pkg{nicematrix} (|renew-dots|, |columns-width|, etc.).
\vspace{1cm}
-Un exemple avec un système linéaire (on a besoin de \verb|{NiceArray}| pour le trait vertical)
+Un exemple avec un système linéaire (on a besoin de |{NiceArray}| pour le trait vertical)
\bigskip
\begin{BVerbatim}[baseline=c,boxwidth=10cm]
@@ -788,7 +787,7 @@ a_1 & ? & \Cdots & ? & ? \\
\Vdots & \Ddots & \Ddots & ? \\
0 & \Cdots & 0 & a_n & ?
\end{NiceArray}\right]$
-\end{BVerbatim}
+\end{BVerbatim}
$\left[\begin{NiceArray}{CCCC|C}
a_1 & ? & \Cdots & ? & ? \\
0 & & \Ddots & \Vdots & \Vdots\\
@@ -797,14 +796,12 @@ a_1 & ? & \Cdots & ? & ? \\
\end{NiceArray}\right]$
\vspace{1cm}
-Il existe également des variantes pour l'environnement \verb|{NiceArray}|:
-\verb|{pNiceArray}|, \verb|{bNiceArray}|, \verb|{BNiceArray}|, \verb|{vNiceArray}| et
-\verb|{VNiceArray}|.
+Il existe également des variantes pour l'environnement |{NiceArray}| : |{pNiceArray}|, |{bNiceArray}|,
+|{BNiceArray}|, |{vNiceArray}| et |{VNiceArray}|.
-Dans l'exemple suivant, on utilise un environnment \verb|{pNiceArray}| (on n'utilise pas \verb|{pNiceMatrix}| car
-on souhaite utiliser les types de colonne \verb|L| et \verb|R| --- avec \verb|{pNiceMatrix}|, toutes les
-colonnes sont de type \verb|C|).
+Dans l'exemple suivant, on utilise un environnment |{pNiceArray}| (on n'utilise pas |{pNiceMatrix}| car on souhaite
+utiliser les types de colonne |L| et |R| --- avec |{pNiceMatrix}|, toutes les colonnes sont de type |C|).
\bigskip
@@ -824,12 +821,12 @@ a_{n-1,1} & \Cdots & a_{n-1,n}
\end{pNiceArray}$
\vspace{1cm}
-L'environnement \verb|{NiceArray}| et ses variantes permettent de composer des rangées et des colonnes «extérieures» grâce aux options
-\verb|first-row|, \verb|last-row|, \verb|first-col| et \verb|last-col|.
+L'environnement |{NiceArray}| et ses variantes permettent de composer des rangées et des colonnes «extérieures» grâce aux options
+|first-row|, |last-row|, |first-col| et |last-col|.
\label{exterior}
Il n'y a pas de spécification de colonne à fournir pour l'éventuelle «première colonne» (qui sera automatiquement
-une colonne de type \verb|R|) ou pour l'éventuelle «dernière colonne» (qui sera automatiquement de type \verb|L|).
+une colonne de type |R|) ou pour l'éventuelle «dernière colonne» (qui sera automatiquement de type |L|).
\begin{Verbatim}
@@ -853,18 +850,17 @@ L_4 & a_{41} & a_{42} & a_{43} & a_{44} & L_4 \\
\end{pNiceArray}\]
\bigskip
-
-Néanmoins, il y a une particularité avec l'option \verb|last-row| : quand LaTeX compose un tableau \verb|{array}|
-(via une commande \verb|\halign| de TeX), il le compose rangée par rangée et il n'y a pas de moyen direct de savoir
-que l'on est arrivé à la dernière rangée avant la composition de celle-ci. Pour remédier à ce problème,
-\pkg{nicematrix} écrit dans le fichier \verb|aux| le nombre de rangées du tableau pour pouvoir l'utiliser à la
-compilation suivante. Il est néanmoins également possible de passer directement le nombre de rangées en argument de
-l'option \verb|last-row| et, ainsi, \pkg{nicematrix} le connaîtra dès la première compilation.
+Néanmoins, il y a une particularité avec l'option |last-row| : quand LaTeX compose un tableau |{array}| (via une
+commande |\halign| de TeX), il le compose rangée par rangée et il n'y a pas de moyen direct de savoir que l'on est
+arrivé à la dernière rangée avant la composition de celle-ci. Pour remédier à ce problème, \pkg{nicematrix} écrit
+dans le fichier |aux| le nombre de rangées du tableau pour pouvoir l'utiliser à la compilation suivante. Il est
+néanmoins également possible de passer directement le nombre de rangées en argument de l'option |last-row| et,
+ainsi, \pkg{nicematrix} le connaîtra dès la première compilation.
\bigskip
-On peut contrôler l'apparence de ces rangées et colonnes avec les options \verb|code-for-first-row|,
-\verb|code-for-last-row|, \verb|code-for-first-col| et \verb|code-for-last-col|. Ces options sont des listes de
-tokens qui seront insérées au début de chaque case de la rangée ou de la colonne considérée.
+On peut contrôler l'apparence de ces rangées et colonnes avec les options |code-for-first-row|,
+|code-for-last-row|, |code-for-first-col| et |code-for-last-col|. Ces options sont des listes de tokens qui seront
+insérées au début de chaque case de la rangée ou de la colonne considérée.
\begin{Verbatim}
\NiceMatrixOptions{~emphase#code-for-first-row@ = \color{red},
@@ -887,7 +883,8 @@ L_4 & a_{41} & a_{42} & a_{43} & a_{44} & L_4 \\
code-for-first-col = \color{blue},
code-for-last-row = \color{green},
code-for-last-col = \color{magenta}}
-\[\begin{pNiceArray}{CC|CC}[first-row,last-row=5,first-col,last-col]
+\begin{displaymath}
+\begin{pNiceArray}{CC|CC}[first-row,last-row=5,first-col,last-col]
& C_1 & \multicolumn1C{C_2} & C_3 & C_4 & \\
L_1 & a_{11} & a_{12} & a_{13} & a_{14} & L_1 \\
L_2 & a_{21} & a_{22} & a_{23} & a_{24} & L_2 \\
@@ -895,35 +892,36 @@ L_2 & a_{21} & a_{22} & a_{23} & a_{24} & L_2 \\
L_3 & a_{31} & a_{32} & a_{33} & a_{34} & L_3 \\
L_4 & a_{41} & a_{42} & a_{43} & a_{44} & L_4 \\
& C_1 & \multicolumn1C{C_2} & C_3 & C_4 &
-\end{pNiceArray}\]
+\end{pNiceArray}
+\end{displaymath}
\end{scope}
\emph{Remarques}
\begin{itemize}
-\item Comme on peut le voir dans l'exemple précédent, un filet horizontal (tracé avec \verb|\hline|) ne s'étend pas
+\item Comme on peut le voir dans l'exemple précédent, un filet horizontal (tracé avec |\hline|) ne s'étend pas
dans les colonnes extérieures et un filet vertical (spécifié par un caractère «\verb+|+» dans le préambule du
tableau) ne s'étend pas dans les rangées extérieures.\footnote{Ce dernier point n'est pas valable si on a chargé,
en plus de \pkg{nicematrix}, l'extension \pkg{arydshln}. Les extensions \pkg{nicematrix} et \pkg{arydshln} ne
sont pas parfaitement compatibles car \pkg{arydshln} redéfinit beaucoup de structures internes à \pkg{array}. Par
ailleurs, si on veut vraiment un filet qui s'étende dans la première et la dernière rangée, on peut utiliser
-\verb|!{\vline}| dans le préambule à la place de \verb+|+.}
-\item La «première rangée» d'un environnement \verb|{pNiceArray}| porte le numéro $0$, et non $1$ (de même pour la
+|!{\vline}| dans le préambule à la place de \verb+|+.}
+\item La «première rangée» d'un environnement |{pNiceArray}| porte le numéro $0$, et non $1$ (de même pour la
«première colonne»). Ce numéro est utilisé, par exemple, pour les noms des nœuds Tikz (les noms de ces nœuds sont
-utilisés, par exemple, par la commande \verb|\line| dans le \verb|code-after|).
-\item Sans surprise, une éventuelle option \verb|columns-width| (décrite p.~\pageref{width}) ne s'applique pas à la
+utilisés, par exemple, par la commande |\line| dans le |code-after|).
+\item Sans surprise, une éventuelle option |columns-width| (décrite p.~\pageref{width}) ne s'applique pas à la
«première colonne» ni à la «dernière colonne».
-\item Pour des raisons techniques, il n'est pas possible d'utiliser l'option de la commande \verb|\\| après la
+\item Pour des raisons techniques, il n'est pas possible d'utiliser l'option de la commande |\\| après la
«première rangée» ou avant la «dernière rangée» (le placement des délimiteurs serait erroné).
\end{itemize}
\bigskip
-En fait, l'environnement \verb|{pNiceArray}| et ses variantes sont fondés sur un environnement plus général, appelé
-\verb|{NiceArrayWithDelims}|. Les deux premiers arguments obligatoires de cet environnement sont les délimiteurs
-gauche et droit qui seront utilisés dans la construction de la matrice. Il est possible d'utiliser
-\verb|{NiceArrayWithDelims}| si on a besoin de délimiteurs atypiques.
+En fait, l'environnement |{pNiceArray}| et ses variantes sont fondés sur un environnement plus général, appelé
+|{NiceArrayWithDelims}|. Les deux premiers arguments obligatoires de cet environnement sont les délimiteurs gauche
+et droit qui seront utilisés dans la construction de la matrice. Il est possible d'utiliser |{NiceArrayWithDelims}|
+si on a besoin de délimiteurs atypiques.
\medskip
\begin{BVerbatim}[baseline=c,boxwidth=11cm]
@@ -947,8 +945,8 @@ $\begin{NiceArrayWithDelims}
\section[Les lignes en pointillés pour séparer les rangées et les colonnes]{Les lignes en pointillés pour séparer les rangées\\ et les colonnes}
-Dans les environnements de \pkg{nicematrix}, il est possible d'utiliser la commande \verb|\hdottedline| (fournie
-par \pkg{nicematrix}) qui est l'équivalent pour les pointillés des commandes \verb|\hline| et \verb|\hdashline|
+Dans les environnements de \pkg{nicematrix}, il est possible d'utiliser la commande |\hdottedline| (fournie
+par \pkg{nicematrix}) qui est l'équivalent pour les pointillés des commandes |\hline| et |\hdashline|
(cette dernière étant une commande de \pkg{arydshln}).
\medskip
@@ -969,8 +967,8 @@ $\begin{pNiceMatrix}
\bigskip
-Dans les environnements avec un préambule explicite (comme \verb|{NiceArray}|, \verb|{pNiceArray}|, etc.), il est
-possible de dessiner un trait vertical en pointillés avec le spécificateur «\verb|:|».
+Dans les environnements avec un préambule explicite (comme |{NiceArray}|, |{pNiceArray}|, etc.), il est possible de
+dessiner un trait vertical en pointillés avec le spécificateur «|:|».
\medskip
\begin{BVerbatim}[baseline=c,boxwidth=9.5cm]
@@ -1019,10 +1017,10 @@ C_1 & C_2 & C_3 & C_4 \\
\bigskip
Il est possible de changer dans \pkg{nicematrix} la lettre utilisée pour indiquer dans le préambule un trait
-vertical en pointillés avec l'option \verb|letter-for-dotted-lines| disponible dans \verb|\NiceMatrixOptions|. Par
-exemple, dans ce document, nous avons chargé l'extension \pkg{arydshln} qui utilise la lettre «\verb|:|» pour
-indiquer un trait vertical en tiretés. Par conséquent, en utilisant l'option \verb|letter-for-dotted-lines|, on
-peut utiliser les traits verticaux fournis à la fois par \pkg{arydshln} et par \pkg{nicematrix}.
+vertical en pointillés avec l'option |letter-for-dotted-lines| disponible dans |\NiceMatrixOptions|. Par exemple,
+dans ce document, nous avons chargé l'extension \pkg{arydshln} qui utilise la lettre «|:|» pour indiquer un trait
+vertical en tiretés. Par conséquent, en utilisant l'option |letter-for-dotted-lines|, on peut utiliser les traits
+verticaux fournis à la fois par \pkg{arydshln} et par \pkg{nicematrix}.
\medskip
@@ -1046,10 +1044,10 @@ $\begin{pNiceArray}{C|C:CVC}
\section{La largeur des colonnes}
\label{width}
-Dans les environnements avec un préambule explicite (comme \verb|{NiceArray}|, \verb|{pNiceArray}|, etc.), il est
-possible de fixer la largeur d'une colonne avec les lettres classiques \verb|w| et \verb|W| de l'extension
-\pkg{array}. Dans les environnements de \pkg{nicematrix}, les cases des colonnes de ce type sont composées en mode
-mathématique (alors que dans \verb|{array}| de \pkg{array}, elles sont composées en mode texte).
+Dans les environnements avec un préambule explicite (comme |{NiceArray}|, |{pNiceArray}|, etc.), il est possible de
+fixer la largeur d'une colonne avec les lettres classiques |w| et |W| de l'extension \pkg{array}. Dans les
+environnements de \pkg{nicematrix}, les cases des colonnes de ce type sont composées en mode mathématique (alors
+que dans |{array}| de \pkg{array}, elles sont composées en mode texte).
\medskip
\begin{BVerbatim}[baseline=c,boxwidth=10cm]
@@ -1068,7 +1066,7 @@ $\begin{pNiceArray}{Wc{1cm}CC}
\bigskip
Avec \pkg{nicematrix}, il est aussi possible de fixer la largeur de toutes les colonnes de la matrice directement
-avec l'option \verb|columns-width| (disponible dans tous les environnements de \pkg{nicematrix}).
+avec l'option |columns-width| (disponible dans tous les environnements de \pkg{nicematrix}).
\medskip
\begin{BVerbatim}[baseline=c,boxwidth=10cm]
@@ -1085,11 +1083,11 @@ $\begin{pNiceMatrix}[columns-width = 1cm]
\end{pNiceMatrix}$
\medskip
-Noter que l'espace inséré entre deux colonnes (égal à 2 \verb|\arraycolsep|) n'est pas supprimé (il est évidemment
-possible de le supprimer en mettant \verb|\arraycolsep| à~$0$).
+Noter que l'espace inséré entre deux colonnes (égal à 2 |\arraycolsep|) n'est pas supprimé (il est évidemment
+possible de le supprimer en mettant |\arraycolsep| à~$0$).
\bigskip
-Il est possible de donner la valeur \verb|auto| à l'option \verb|columns-width| : toutes les colonnes du tableau
+Il est possible de donner la valeur |auto| à l'option |columns-width| : toutes les colonnes du tableau
auront alors une largeur égale à la largeur de la case la plus large du tableau. \textbf{Deux ou trois
compilations successives peuvent être nécessaires.}\par\nobreak
@@ -1109,7 +1107,8 @@ $\begin{pNiceMatrix}[columns-width = auto]
\bigskip
Il est possible de fixer la largeur de toutes les colonnes de toutes les matrices dans une certaine portion de
-document avec la commande \verb|\NiceMatrixOptions|.\par\nobreak
+document avec la commande |\NiceMatrixOptions|.\par\nobreak
+
\medskip
\begin{BVerbatim}[baseline=c,boxwidth=8.5cm]
~emphase#\NiceMatrixOptions{columns-width=10mm}@
@@ -1137,9 +1136,9 @@ c & d
\bigskip
Mais il est aussi possible de fixer une zone dans laquelle toutes les matrices auront leurs colonnes de la même
-largeur, égale à la largeur de la case la plus large de toutes les matrices de la zone. Cette construction
-utilise l'environnement \verb|{NiceMatrixBlock}| avec l'option \verb|auto-columns-width|.\footnote{Pour le moment,
- c'est le seul usage de l'environnement \verb|{NiceMatrixBlock}| mais il pourrait y en avoir davantage dans le futur.}
+largeur, égale à la largeur de la case la plus large de toutes les matrices de la zone. Cette construction utilise
+l'environnement |{NiceMatrixBlock}| avec l'option |auto-columns-width|.\footnote{Pour le moment, c'est le seul
+ usage de l'environnement |{NiceMatrixBlock}| mais il pourrait y en avoir davantage dans le futur.}
\medskip
\begin{BVerbatim}[baseline=c,boxwidth=8.5cm]
@@ -1155,22 +1154,22 @@ a & b \\ c & d
\end{BVerbatim}
\begin{NiceMatrixBlock}[auto-columns-width]
$\begin{pNiceMatrix}
-a & b \\ c & d
-\end{pNiceMatrix}
+ a & b \\ c & d
+ \end{pNiceMatrix}
=
-\begin{pNiceMatrix}
-1 & 1245 \\ 345 & 2
-\end{pNiceMatrix}$
+ \begin{pNiceMatrix}
+ 1 & 1245 \\ 345 & 2
+ \end{pNiceMatrix}$
\end{NiceMatrixBlock}
\section{Les matrices par blocs}
-Dans les environnements de \pkg{nicematrix}, on peut utiliser la commande \verb|\Block| pour placer un élément au
-centre d'un rectangle de cellules fusionnées.
+Dans les environnements de \pkg{nicematrix}, on peut utiliser la commande |\Block| pour placer un élément au centre
+d'un rectangle de cellules fusionnées.
-La commande \verb|\Block| doit être utilisée dans la cellule supérieure gauche du bloc avec deux arguments. Le
-premier argument est la taille de ce bloc avec la syntaxe $i$\verb|-|$j$ où $i$ est le nombre de rangées et $j$ le
-nombre de colonnes du bloc. Le deuxième argument, est, sans surprise, le contenu du bloc (en mode mathématique).
+La commande |\Block| doit être utilisée dans la cellule supérieure gauche du bloc avec deux arguments. Le premier
+argument est la taille de ce bloc avec la syntaxe $i$-$j$ où $i$ est le nombre de rangées et $j$ le nombre de
+colonnes du bloc. Le deuxième argument, est, sans surprise, le contenu du bloc (en mode mathématique).
\medskip
\begin{BVerbatim}[baseline=c,boxwidth=10.6cm]
@@ -1198,9 +1197,9 @@ $\begin{bNiceArray}{CCC|C}[margin]
\bigskip
On peut souhaiter agrandir la taille du «$A$» placé dans le bloc de l'exemple précédent. Comme il est composé en
-mode mathématique, on ne peut pas directement utiliser une commande comme \verb|\large|, \verb|\Large| ou
-\verb|\LARGE|. C'est pourquoi une option à mettre entre chevrons est proposée par \verb|\Block| pour spécifier du
-code LaTeX qui sera inséré \emph{avant} le début du mode mathématique.
+mode mathématique, on ne peut pas directement utiliser une commande comme |\large|, |\Large| ou |\LARGE|. C'est
+pourquoi une option à mettre entre chevrons est proposée par |\Block| pour spécifier du code LaTeX qui sera inséré
+\emph{avant} le début du mode mathématique.
\medskip
\begin{BVerbatim}[baseline=c,boxwidth=10.6cm]
@@ -1228,16 +1227,59 @@ $\begin{bNiceArray}{CCC|C}[margin]
\medskip
-Pour des raisons techniques, il n'est pas possible d'écrire \verb|\Block{|$i$\verb|-|$j$\verb|}{<}|
-(mais on peut écrire \verb|\Block{|$i$\verb|-|$j$\verb|}<>{<}| avec le résultat attendu).
+Pour des raisons techniques, il n'est pas possible d'écrire |\Block{|$i$|-|$j$|}{<}|
+(mais on peut écrire |\Block{|$i$|-|$j$|}<>{<}| avec le résultat attendu).
+
+
+
+\section{L'option small}
+
+Avec l'option |small|, les environnements de l'extension \pkg{nicematrix} sont composés d'une manière proche de ce
+que propose l'environnement |{smallmatrix}| de l'\pkg{amsmath} (et les environnements |{psmallmatrix}|,
+|{bsmallmatrix}|, etc. de \pkg{mathtools}).
+
+\bigskip
+\begin{Verbatim}
+$\begin{bNiceArray}{CCCC|C}[~emphase#small@,
+ last-col,
+ code-for-last-col = \scriptscriptstyle,
+ columns-width = 3mm ]
+1 & -2 & 3 & 4 & 5 \\
+0 & 3 & 2 & 1 & 2 & L_2 \gets 2 L_1 - L_2 \\
+0 & 1 & 1 & 2 & 3 & L_3 \gets L_1 + L_3 \\
+\end{bNiceArray}$
+\end{Verbatim}
+%
+\[\begin{bNiceArray}{CCCC|C}[small, last-col, code-for-last-col = \scriptscriptstyle, columns-width=3mm]
+1 & -2 & 3 & 4 & 5 \\
+0 & 3 & 2 & 1 & 2 & L_2 \gets 2 L_1 - L_2 \\
+0 & 1 & 1 & 2 & 3 & L_3 \gets L_1 + L_3 \\
+\end{bNiceArray}\]
+
+
+
+\bigskip
+On remarquera néanmoins que l'environnement |{NiceMatrix}| avec l'option |small| ne prétend pas être composé
+exactement comme l'environnement |{smallmatrix}|. C'est que les environnements de \pkg{nicematrix} sont tous fondés
+sur |{array}| (de \pkg{array}) alors que ce n'est pas le cas de |{smallmatrix}| (fondé directement sur un |\halign|
+de TeX).
+
+\medskip
+En fait, l'option |small| correspond aux réglages suivants :
+\begin{itemize}
+\item les composantes du tableau sont composées en |\scriptstyle| ;
+\item |\arraystretch| est fixé à $0.47$ ;
+\item |\arraycolsep| est fixé à $1.45$~pt ;
+\item les caractéristiques des lignes en pointillés sont également modifiées.
+\end{itemize}
\section{L'option hlines}
Dans les environnements de \pkg{nicematrix}, on peut bien entendu ajouter des filets horizontaux entre les lignes
-avec la commande~\verb|\hline|. Par souci de commodité, l'extension \pkg{nicemarix} fournit l'option \verb|hlines|
-qui impose directement que tous les filets horizontaux soient tracés (à l'exception, très naturelle, du
-filet avant l'éventuelle «première rangée» et après l'éventuelle «dernière rangée»).
+avec la commande~|\hline|. Par souci de commodité, l'extension \pkg{nicematrix} fournit l'option |hlines| qui impose
+directement que tous les filets horizontaux soient tracés (à l'exception, très naturelle, du filet avant
+l'éventuelle «première rangée» et après l'éventuelle «dernière rangée»).
\medskip
\begin{BVerbatim}[baseline=c,boxwidth=10.6cm]
@@ -1255,9 +1297,9 @@ c & c & b & a & e
\section{Utilisation du type de colonne S de siunitx}
Si l'extension \pkg{siunitx} est chargée (avant ou après \pkg{nicematrix}), il est possible d'utiliser les colonnes
-de type \verb|S| de \pkg{siunitx} dans les environnements de \pkg{nicematrix}. L'implémentation n'utilise
-explicitement aucune macro privée de \pkg{siunitx}. Les colonnes \verb|d| de l'extension \pkg{dcolumn} ne sont pas
-prises en charge par \pkg{nicematrix}.
+de type |S| de \pkg{siunitx} dans les environnements de \pkg{nicematrix}. L'implémentation n'utilise explicitement
+aucune macro privée de \pkg{siunitx}. Les colonnes |d| de l'extension \pkg{dcolumn} ne sont pas prises en charge
+par \pkg{nicematrix}.
\medskip
\begin{BVerbatim}[baseline = c, boxwidth = 10.5cm]
@@ -1282,15 +1324,15 @@ $\begin{pNiceArray}{SCWc{1cm}C}[nullify-dots,first-row]
\subsection{Intersection des lignes pointillées}
-Depuis la version 3.1 de \pkg{nicematrix}, les lignes en pointillées créées par \verb|\Cdots|, \verb|\Ldots|,
-\verb|\Vdots|, etc. ne peuvent pas se croiser entre elles.\footnote{En revanche, les lignes créées par
- \verb|\hdottedline|, la lettre ``\verb|:|'' dans le préambule de la matrice et la commande \verb|\line| dans le
- \verb|code-after| peuvent croiser une autre ligne en pointillés.}
+Depuis la version 3.1 de \pkg{nicematrix}, les lignes en pointillées créées par |\Cdots|, |\Ldots|, |\Vdots|, etc.
+ne peuvent pas se croiser entre elles.\footnote{En revanche, les lignes créées par |\hdottedline|, la lettre
+ ``|:|'' dans le préambule de la matrice et la commande |\line| dans le |code-after| peuvent croiser une autre
+ ligne en pointillés.}
Cela signifie qu'une ligne en pointillés créée par l'une des ces commandes s'arrête automatiquement quand elle
-arrive à une autre ligne pointillée déjà tracée par l'une de ces commandes. Par conséquent, l'ordre dans lequel
-les lignes sont tracées a son importance pour le résultat final. Voici cet ordre (c'est à dessein qu'il a été
-choisi ainsi) : \verb|\Hdotsfor|, \verb|\Vdots|, \verb|\Ddots|, \verb|\Iddots|, \verb|\Cdots| and \verb|\Ldots|.
+arrive à une autre ligne pointillée déjà tracée par l'une de ces commandes. Par conséquent, l'ordre dans lequel les
+lignes sont tracées a son importance pour le résultat final. Voici cet ordre (c'est à dessein qu'il a été choisi
+ainsi) : |\Hdotsfor|, |\Vdots|, |\Ddots|, |\Iddots|, |\Cdots| and |\Ldots|.
De ce fait, on peut tracer la matrice suivante :
@@ -1318,14 +1360,14 @@ $\begin{pNiceMatrix}[nullify-dots]
\subsection{Lignes diagonales}
-Par défaut, toutes les lignes diagonales\footnote{On parle des lignes créées par \verb|\Ddots| et non des lignes
- créées par une commande \verb|\line| dans le \verb|code-after|.} d'un même tableau sont «parallélisées». Cela signifie que la première
-diagonale est tracée et que, ensuite, les autres lignes sont tracées parallèlement à la première (par rotation
-autour de l'extrémité la plus à gauche de la ligne). C'est pourquoi la position des instructions \verb|\Ddots| dans
-un tableau peut avoir un effet marqué sur le résultat final.
+Par défaut, toutes les lignes diagonales\footnote{On parle des lignes créées par |\Ddots| et non des lignes créées
+ par une commande |\line| dans le |code-after|.} d'un même tableau sont «parallélisées». Cela signifie que la
+première diagonale est tracée et que, ensuite, les autres lignes sont tracées parallèlement à la première (par
+rotation autour de l'extrémité la plus à gauche de la ligne). C'est pourquoi la position des instructions |\Ddots|
+dans un tableau peut avoir un effet marqué sur le résultat final.
\medskip
-Dans les exemples suivants, la première instruction \verb|\Ddots| est marquée en couleur :
+Dans les exemples suivants, la première instruction |\Ddots| est marquée en couleur :
\medskip
\begin{scope}
@@ -1367,8 +1409,7 @@ a+b & \Cdots & a+b & 1
\end{pNiceMatrix}$
\bigskip
-Il est possible de désactiver la parallélisation avec l'option
-\verb|parallelize-diags| mise à \verb|false|: \par\nobreak
+Il est possible de désactiver la parallélisation avec l'option |parallelize-diags| mise à |false|: \par\nobreak
\medskip
\NiceMatrixOptions{parallelize-diags=false}%
@@ -1388,11 +1429,10 @@ a+b & \Cdots & a+b & 1
\subsection{Les cases «vides»}
\label{empty-cells}
-Une instruction comme
-\verb|\Ldots|, \verb|\Cdots|, etc. essaye de déterminer la première case vide de part et d'autre de la case
-considérée. Néanmoins, une case vide n'est pas nécessairement sans contenu dans le codage TeX (c'est-à-dire sans
-aucun token entre les deux esperluettes~\verb|&|). En effet, une case dont le contenu est \verb|\hspace*{1cm}| peut
-être considérée comme vide.
+Une instruction comme |\Ldots|, |\Cdots|, etc. essaye de déterminer la première case vide de part et d'autre de la
+case considérée. Néanmoins, une case vide n'est pas nécessairement sans contenu dans le codage TeX (c'est-à-dire
+sans aucun token entre les deux esperluettes~|&|). En effet, une case dont le contenu est |\hspace*{1cm}| peut être
+considérée comme vide.
\interitem
Pour \pkg{nicematrix}, les règles précises sont les suivantes :
@@ -1413,63 +1453,56 @@ la dernière case (deuxième rangée et deuxième colonne) est vide.
\item Chaque case avec un rendu par TeX de largeur inférieure à 0.5~pt est vide.
\medskip
-\item Une case qui contient une commande \verb|\Ldots|, \verb|\Cdots|, \verb|\Vdots|, \verb|\Ddots|
-ou \verb|\Iddots| est vide. On rappelle que ces commandes doivent être employées seules dans une case.
+\item Une case qui contient une commande |\Ldots|, |\Cdots|, |\Vdots|, |\Ddots| ou |\Iddots| est vide. On rappelle
+que ces commandes doivent être employées seules dans une case.
\medskip
-\item Une case avec une commande \verb|\Hspace| (ou \verb|\Hspace*|) est vide. Cette commande
-\verb|\Hspace| est une commande définie par l'extension \pkg{nicematrix} avec la même signification
-que \verb|\hspace| excepté que la case où cette commande est utilisée est considérée comme vide.
-Cette commande peut être utilisée pour fixer la largeur des colonnes sans interférer avec le tracé des lignes en
-pointillés par \pkg{nicematrix}.
+\item Une case avec une commande |\Hspace| (ou |\Hspace*|) est vide. Cette commande |\Hspace| est une commande
+définie par l'extension \pkg{nicematrix} avec la même signification que |\hspace| excepté que la case où cette
+commande est utilisée est considérée comme vide. Cette commande peut être utilisée pour fixer la largeur des
+colonnes sans interférer avec le tracé des lignes en pointillés par \pkg{nicematrix}.
\end{itemize}
\subsection{L'option exterior-arraycolsep}
-L'environnement \verb|{array}| insère un espace horizontal égal à \verb|\arraycolsep|
-avant et après chaque colonne. En particulier, il y a un espace égal à
-\verb|\arraycolsep| avant et après le tableau. Cette caractéristique de l'environnement \verb|{array}|
-n'était probablement pas une bonne idée.\footnote{Dans la documentation de
-\verb|{amsmath}|, on peut lire : {\itshape The extra space of \verb|\arraycolsep| that
-\pkg{array} adds on each side is a waste so we remove it [in \verb|{matrix}|]
-(perhaps we should instead remove it from array in general, but that's a
-harder task).} Il est possible de supprimer les espaces pour un environnement \verb|{array}| donné par une
-construction du type \verb|\begin{array}{@{}ccccc@{}}|.}
+L'environnement |{array}| insère un espace horizontal égal à |\arraycolsep| avant et après chaque colonne. En
+particulier, il y a un espace égal à |\arraycolsep| avant et après le tableau. Cette caractéristique de
+l'environnement |{array}| n'était probablement pas une bonne idée.\footnote{Dans la documentation de |{amsmath}|,
+ on peut lire : {\itshape The extra space of |\arraycolsep| that \pkg{array} adds on each side is a waste so we
+ remove it [in |{matrix}|] (perhaps we should instead remove it from array in general, but that's a harder
+ task).} Il est possible de supprimer les espaces pour un environnement |{array}| donné par une construction du
+ type |\begin{array}{@{}ccccc@{}}|.} % \end{array}
-L'environnement \verb|{matrix}| et ses variantes (\verb|{pmatrix}|, \verb|{vmatrix}|, etc.)
-de \pkg{amsmath} prefèrent supprimer ces espaces avec des instructions explicites
-\verb|\hskip -\arraycolsep| et \verb|{NiceArray}| agit de même.
+L'environnement |{matrix}| et ses variantes (|{pmatrix}|, |{vmatrix}|, etc.) de \pkg{amsmath} prefèrent supprimer
+ces espaces avec des instructions explicites |\hskip -\arraycolsep| et |{NiceArray}| agit de même.
-Néanmoins, l'utilisateur peut changer ce comportement avec l'option
-\verb|exterior-arraycolsep| de la commande \verb|\NiceMatrixOptions|. Avec cette option,
-\verb|{NiceArray}| va insérer le même espacement horizontal que \verb|{array}|.
+Néanmoins, l'utilisateur peut changer ce comportement avec l'option |exterior-arraycolsep| de la commande
+|\NiceMatrixOptions|. Avec cette option, |{NiceArray}| va insérer le même espacement horizontal que |{array}|.
-Cette option est seulement pour la «compatibilité» puisque l'extension \pkg{nicematrix}
-fournit un contrôle plus précis avec les options \verb|left-margin|,
-\verb|extra-left-margin|, etc.
+Cette option est seulement pour la «compatibilité» puisque l'extension \pkg{nicematrix} fournit un contrôle plus
+précis avec les options |left-margin|, |extra-left-margin|, etc.
\subsection{L'option de classe draft}
-L'extension \pkg{nicematrix} est relativement lente pour tracer les lignes en pointillés
-(créées par \verb|\Cdots|, \verb|\Ldots|, \verb|\Ddots|, etc. mais aussi par le spécificateur
-«\verb|:|»).\footnote{La principale raison est que nous voulons des lignes
- en pointillés avec des points ronds et non carrés. Pour atteindre ce
- but, il a fallu construire notre propre système de lignes en pointillés.}
+L'extension \pkg{nicematrix} est relativement lente pour tracer les lignes en pointillés (créées par |\Cdots|,
+|\Ldots|, |\Ddots|, etc. mais aussi par le spécificateur «|:|»).\footnote{La principale raison est que nous voulons
+ des lignes en pointillés avec des points ronds et non carrés. Pour atteindre ce but, il a fallu construire notre
+ propre système de lignes en pointillés.}
-C'est pourquoi, avec l'option de classe \verb|draft|, les lignes en pointillés ne sont pas tracées,
-pour accélérer la compilation.
+C'est pourquoi, avec l'option de classe |draft|, les lignes en pointillés ne sont pas tracées, pour accélérer la
+compilation.
\subsection{Un problème technique avec l'argument de \textbackslash\textbackslash}
-Pour des raisons techniques, si vous utilisez l'argument optionnel de la commande \verb|\\|,
-l'espace vertical sera aussi ajouté au nœud («normal») correspondant à la case précédente.
+Pour des raisons techniques, si vous utilisez l'argument optionnel de la commande |\\|, l'espace vertical sera
+aussi ajouté au nœud («normal») correspondant à la case précédente.
\medskip
@@ -1490,7 +1523,7 @@ b & c
\bigskip
Il y a deux solutions pour résoudre ce problème. La première solution est d'utiliser une commande TeX pour insérer
- l'espace entre les deux rangées.
+l'espace entre les deux rangées.
\medskip
\begin{BVerbatim}[baseline=c,boxwidth=11cm]
@@ -1512,7 +1545,7 @@ b & c
\bigskip
-L'autre solution est d'utiliser la commande \verb|\multicolumn| dans la case précédente :
+L'autre solution est d'utiliser la commande |\multicolumn| dans la case précédente :
\medskip
\begin{BVerbatim}[baseline=c,boxwidth=11cm]
@@ -1532,20 +1565,19 @@ b & c
\subsection{Environnements obsolètes}
-La version 3.0 de \pkg{nicematrix} a introduit l'environnement
-\verb|{pNiceArray}| (et ses variantes) avec les options \verb|first-row|, \verb|last-row|,
-\verb|first-col| et \verb|last-col|.
+La version 3.0 de \pkg{nicematrix} a introduit l'environnement |{pNiceArray}| (et ses variantes) avec les options
+|first-row|, |last-row|, |first-col| et |last-col|.
Par conséquent, les environnements suivants, présents dans les versions précédentes de \pkg{nicematrix} sont devenus
obsolètes :
%
\begin{itemize}
-\item \verb|{NiceArrayCwithDelims}| ;
-\item \verb|{pNiceArrayC}|, \verb|{bNiceArrayC}|, \verb|{BNiceArrayC}|, \verb|{vNiceArrayC}|,
-\verb|{VNiceArrayC}| ;
-\item \verb|{NiceArrayRCwithDelims}| ;
-\item \verb|{pNiceArrayRC}|, \verb|{bNiceArrayRC}|, \verb|{BNiceArrayRC}|, \verb|{vNiceArrayRC}|,
-\verb|{VNiceArrayRC}|.
+\item |{NiceArrayCwithDelims}| ;
+\item |{pNiceArrayC}|, |{bNiceArrayC}|, |{BNiceArrayC}|, |{vNiceArrayC}|,
+|{VNiceArrayC}| ;
+\item |{NiceArrayRCwithDelims}| ;
+\item |{pNiceArrayRC}|, |{bNiceArrayRC}|, |{BNiceArrayRC}|, |{vNiceArrayRC}|,
+|{VNiceArrayRC}|.
\end{itemize}
Ils seront peut-être supprimés dans une version future de \pkg{nicematrix}.
@@ -1606,7 +1638,7 @@ $\begin{pNiceMatrix}
\vspace{2cm}
-Un exemple avec \verb|\Iddots|: \par\nobreak
+Un exemple avec |\Iddots|: \par\nobreak
\bigskip
\begin{BVerbatim}[baseline=c]
$\begin{pNiceMatrix}
@@ -1626,7 +1658,7 @@ $\begin{pNiceMatrix}
\vspace{2cm}
-Un exemple avec \verb|\multicolumn|:\par\nobreak
+Un exemple avec |\multicolumn|:\par\nobreak
\bigskip
\begin{BVerbatim}
\begin{BNiceMatrix}[nullify-dots]
@@ -1646,7 +1678,8 @@ Un exemple avec \verb|\multicolumn|:\par\nobreak
\end{BNiceMatrix}\]
\vspace{2cm}
-Un exemple avec \verb|\Hdotsfor|:\par\nobreak
+Un exemple avec |\Hdotsfor|:\par\nobreak
+
\bigskip
\begin{BVerbatim}[baseline=c,boxwidth=11cm]
\begin{pNiceMatrix}[nullify-dots]
@@ -1733,9 +1766,8 @@ $\begin{pNiceArray}{*6C|C}[nullify-dots,last-col,code-for-last-col={\scriptstyle
\subsection{Largeur des colonnes}
\medskip
-Dans l'exemple suivant, nous utilisons
-\verb|{NiceMatrixBlock}| avec l'option \verb|auto-columns-width| parce que
-nous voulons la même largeur (automatique) pour toutes les colonnes.
+Dans l'exemple suivant, nous utilisons |{NiceMatrixBlock}| avec l'option |auto-columns-width| parce que nous
+voulons la même largeur (automatique) pour toutes les colonnes.
\bigskip
\begin{BVerbatim}
@@ -1819,10 +1851,10 @@ $\begin{pNiceArray}{CCCC:C}[last-col]
\label{highlight}
\medskip
-Pour mettre en évidence une case, il est possible de «dessiner» l'un des nœuds (le «nœud normal», le «nœud
-moyen» ou le «nœud large»). Dans l'exemple suivant, on utilise les «nœuds larges» de la diagonale de la matrice
-(avec la clé de Tikz «\verb|name suffix|», il est facile d'utiliser les «nœuds larges»). Pour avoir la continuité
-des lignes, on doit fixer \verb|inner sep = -\pgflinewidth/2|.
+Pour mettre en évidence une case, il est possible de «dessiner» l'un des nœuds (le «nœud normal», le «nœud moyen»
+ou le «nœud large»). Dans l'exemple suivant, on utilise les «nœuds larges» de la diagonale de la matrice (avec la
+clé de Tikz «|name suffix|», il est facile d'utiliser les «nœuds larges»). Pour avoir la continuité des lignes, on
+doit fixer |inner sep = -\pgflinewidth/2|.
\begin{Verbatim}
$\begin{pNiceArray}{>{\strut}CCCC}%
@@ -1863,14 +1895,14 @@ a_{41} & a_{42} & a_{43} & a_{44}
\vspace{1cm}
-L'extension \pkg{nicematrix} est construite au-dessus de l'environnement \verb|{array}| et, par conséquent, il est
+L'extension \pkg{nicematrix} est construite au-dessus de l'environnement |{array}| et, par conséquent, il est
possible d'utiliser l'extension \pkg{colortbl} dans les environnements de \pkg{nicematrix}. Les possibilités de
réglage de \pkg{colortbl} sont néanmoins assez limitées. C'est pourquoi nous proposons une autre méthode pour
surligner une rangée de la matrice. Nous créons un nœud Tikz rectangulaire qui englobe les nœuds de la deuxième
rangée en utilisant les outils de la bibliothèque Tikz \pkg{fit}. Ce nœud est rempli après la construction de la
matrice. Pour que l'on puisse voir le texte \emph{sous} le nœud, nous devons utiliser la transparence avec le
-\verb|blend mode| égal à \verb|multiply|. Attention : certains lecteurs de \textsc{pdf} ne sont pas capables de
-rendre la transparence correctement.
+|blend mode| égal à |multiply|. Attention : certains lecteurs de \textsc{pdf} ne sont pas capables de rendre la
+transparence correctement.
\tikzset{highlight/.style={rectangle,
@@ -1902,30 +1934,29 @@ $\begin{bNiceMatrix}[~emphase#code-after = {\tikz \node[highlight, fit = (2-1) (
\bigskip
-Ce code échoue avec
-\verb|latex|-\verb|dvips|-\verb|ps2pdf| parce que Tikz pour \verb|dvips|, pour le moment, ne prend pas en charge
-les \emph{blend modes}. Néanmoins, le code suivant, dans le préambule du document LaTeX, devrait activer les \emph{blend modes}
-pour ce mode de compilation.
+Ce code échoue avec |latex|-|dvips|-|ps2pdf| parce que Tikz pour |dvips|, pour le moment, ne prend pas en charge
+les \emph{blend modes}. Néanmoins, le code suivant, dans le préambule du document LaTeX, devrait activer les
+\emph{blend modes} pour ce mode de compilation.
\begin{scope} \small
-\verb|\ExplSyntaxOn|
+|\ExplSyntaxOn|
-\verb|\makeatletter|
+|\makeatletter|
-\verb|\tl_set:Nn \l_tmpa_tl {pgfsys-dvips.def}|
+|\tl_set:Nn \l_tmpa_tl {pgfsys-dvips.def}|
-\verb|\tl_if_eq:NNT \l_tmpa_tl \pgfsysdriver|
+|\tl_if_eq:NNT \l_tmpa_tl \pgfsysdriver|
-\verb| {\cs_set:Npn\pgfsys@blend@mode#1{\special{ps:~/\tl_upper_case:n #1~.setblendmode}}}|
+| {\cs_set:Npn\pgfsys@blend@mode#1{\special{ps:~/\tl_upper_case:n #1~.setblendmode}}}|
-\verb|\makeatother|
+|\makeatother|
-\verb|\ExplSyntaxOff|
+|\ExplSyntaxOff|
\end{scope}
\vspace{1cm}
-On considère maintenant la matrice suivante que l'on a appelée \verb|exemple|.
+On considère maintenant la matrice suivante que l'on a appelée |exemple|.
\medskip
\begin{Verbatim}
@@ -2065,8 +2096,8 @@ A_{41} & A_{42} & A_{43} & A_{44}
Dans l'exemple suivant, on souhaite illustrer le produit mathématique de deux matrices.
\medskip
-L'utilisation de \verb|{NiceMatrixBlock}| avec l'option \verb|auto-columns-width| va permettre que toutes les
-colonnes aient la même largeur ce qui permettra un alignement des deux matrices superposées.
+L'utilisation de |{NiceMatrixBlock}| avec l'option |auto-columns-width| va permettre que toutes les colonnes aient
+la même largeur ce qui permettra un alignement des deux matrices superposées.
\begin{Verbatim}
\begin{NiceMatrixBlock}[auto-columns-width]
\end{Verbatim}
@@ -2081,7 +2112,7 @@ $\begin{array}{cc}
&
\end{Verbatim}
-La matrice $B$ a une «première rangée» (pour $C_j$) d'où l'option \verb|first-row|.
+La matrice $B$ a une «première rangée» (pour $C_j$) d'où l'option |first-row|.
\begin{Verbatim}
\begin{bNiceArray}{C>{\strut}CCCC}[name=B,first-row]
& & C_j \\
@@ -2093,7 +2124,7 @@ b_{11} & \Cdots & b_{1j} & \Cdots & b_{1n} \\
\end{bNiceArray} \\ \\
\end{Verbatim}
-La matrice $A$ a une «première colonne» (pour $L_i$) d'où l'option \verb|first-col|.
+La matrice $A$ a une «première colonne» (pour $L_i$) d'où l'option |first-col|.
\begin{Verbatim}
\begin{bNiceArray}{CC>{\strut}CCC}[name=A,first-col]
& a_{11} & \Cdots & & & a_{nn} \\
@@ -2166,3 +2197,4 @@ L_i & a_{i1} & \Cdots & a_{ik} & \Cdots & a_{in} \\
\end{tikzpicture}
\end{document}
+
diff --git a/macros/latex/contrib/nicematrix/nicematrix.dtx b/macros/latex/contrib/nicematrix/nicematrix.dtx
index 3e91e79795..6c750cab7f 100644
--- a/macros/latex/contrib/nicematrix/nicematrix.dtx
+++ b/macros/latex/contrib/nicematrix/nicematrix.dtx
@@ -1,4 +1,4 @@
-% \iffalse meta-comment
+% \iffalse meta-comment
%
% Copyright (C) 2018-2019 by F. Pantigny
% -----------------------------------
@@ -15,8 +15,8 @@
%
% \fi
% \iffalse
-\def\myfileversion{3.1}
-\def\myfiledate{2019/09/04}
+\def\myfileversion{3.2}
+\def\myfiledate{2019/09/19}
%
%
%<*batchfile>
@@ -112,10 +112,10 @@ c & c & b & a & e
%
% This package can be used with |xelatex|, |lualatex|, |pdflatex| but also by
% the classical workflow |latex|-|dvips|-|ps2pdf| (or Adobe Distiller). Two or
-% three compilations may be necessary. This package requires and loads the
+% three compilations may be necessary. This package requires and \textbf{loads} the
% packages \pkg{expl3}, \pkg{l3keys2e}, \pkg{xparse}, \pkg{array}, \pkg{amsmath}
-% and \pkg{tikz}. It also loads the Tikz library \pkg{fit}.
-%
+% and \pkg{tikz}. It also loads the Tikz library \pkg{fit}. The final user only
+% has to load the extension with |\usepackage{nicematrix}|.
%
%
% \medskip
@@ -123,13 +123,12 @@ c & c & b & a & e
% \begin{minipage}{0.6\linewidth}
% This package provides some new tools to draw mathematical matrices. The main
% features are the following:
-%
-% \textbullet\ continuous dotted lines\footnote{If the class option |draft| is
+% \begin{itemize}\setlength{\itemsep}{0pt}
+% \item continuous dotted lines\footnote{If the class option |draft| is
% used, these dotted lines will not be drawn for a faster compilation.};
-%
-% \textbullet\ exterior row and columns for labels;
-%
-% \textbullet\ a control of the width of the columns.
+% \item exterior rows and columns for labels;
+% \item a control of the width of the columns.
+% \end{itemize}
% \end{minipage}
% \end{savenotes}
% \hspace{1.4cm}
@@ -144,9 +143,9 @@ c & c & b & a & e
% L_n & a_{n1} & a_{n2} & \Cdots & a_{nn}
% \end{bNiceArray}$
%
-% \medskip
-% A command |\NiceMatrixOptions| is provided to fix the options (the scope of
-% the options fixed by this command is the current TeX group).
+% \medskip
+% A command |\NiceMatrixOptions| is provided to fix the options (the
+% scope of the options fixed by this command is the current TeX group).
%
%
% \bigskip
@@ -182,8 +181,8 @@ c & c & b & a & e
% \begin{scope}
% \NiceMatrixOptions{transparent}
% \begin{minipage}{10cm}
-% Now, if we use the package \pkg{nicematrix} with the option\\ |transparent|, the
-% same code will give the result on the right.
+% Now, if we use the package \pkg{nicematrix} with the option \\
+% |transparent|, the same code will give the result on the right.
% \end{minipage}\hspace{1cm}
% $A = \begin{pmatrix}
% 1 & \cdots & \cdots & 1 \\
@@ -210,7 +209,7 @@ c & c & b & a & e
% \{VNiceMatrix\} & & \{NiceArrayWithDelims\} \\
% \end{tabular}
% \end{ttfamily}
-%
+%b
%
% \medskip
% By default, the environments |{NiceMatrix}|, |{pNiceMatrix}|, |{bNiceMatrix}|,
@@ -251,7 +250,9 @@ c & c & b & a & e
% ``non-empty cell'' is given below (cf. p.~\pageref{empty-cells}).} on both
% sides of the current cell. Of course, for |\Ldots| and |\Cdots|, it's an
% horizontal line; for |\Vdots|, it's a vertical line and for |\Ddots| and
-% |\Iddots| diagonal ones.\par\nobreak \bigskip
+% |\Iddots| diagonal ones.\par\nobreak
+%
+% \bigskip
% \begin{BVerbatim}[baseline=c,boxwidth=10cm]
% \begin{bNiceMatrix}
% a_1 & \Cdots & & & a_1 \\
@@ -269,9 +270,11 @@ c & c & b & a & e
% a_1 & a_2 & & & a_n
% \end{bNiceMatrix}$
%
-% \interitem
+% \interitem
% In order to represent the null matrix, one can use the following
-% codage:\par\nobreak \bigskip
+% codage:\par\nobreak
+%
+% \bigskip
% \begin{BVerbatim}[baseline=c,boxwidth=10cm]
% \begin{bNiceMatrix}
% 0 & \Cdots & 0 \\
@@ -288,7 +291,9 @@ c & c & b & a & e
% \bigskip
% However, one may want a larger matrix. Usually, in such a case, the users of
% LaTeX add a new row and a new column. It's possible to use the same method
-% with \pkg{nicematrix}:\par\nobreak \bigskip
+% with \pkg{nicematrix}:\par\nobreak
+%
+% \bigskip
% \begin{BVerbatim}[baseline=c,boxwidth=10cm]
% \begin{bNiceMatrix}
% 0 & \Cdots & \Cdots & 0 \\
@@ -313,6 +318,7 @@ c & c & b & a & e
% \bigskip
% In fact, in this example, it would be possible to draw the same matrix more
% easily with the following code:\par\nobreak
+%
% \bigskip
% \begin{BVerbatim}[baseline=c,boxwidth=10cm]
% \begin{bNiceMatrix}
@@ -341,6 +347,7 @@ c & c & b & a & e
% dotted lines. That's why the package \pkg{nicematrix} provides a
% command~|\Hspace| which is a variant of |\hspace| transparent for the dotted
% lines of \pkg{nicematrix}.\par\nobreak
+%
% \bigskip
% \begin{BVerbatim}[baseline=c,boxwidth=10cm]
% \begin{bNiceMatrix}
@@ -384,6 +391,7 @@ c & c & b & a & e
% \bigskip
% If we add |\vdots| instructions in the second column, the geometry of the
% matrix is modified.\par\nobreak
+%
% \medskip
% \begin{BVerbatim}[baseline=c,boxwidth=8cm]
% $B = \begin{pmatrix}
@@ -408,6 +416,7 @@ c & c & b & a & e
% By default, with \pkg{nicematrix}, if we replace |{pmatrix}| by
% |{pNiceMatrix}| and |\vdots| by |\Vdots|, the geometry of the matrix is not
% changed.\par\nobreak
+%
% \medskip
% \begin{BVerbatim}[baseline=c,boxwidth=8cm]
% $C = \begin{pNiceMatrix}
@@ -433,6 +442,7 @@ c & c & b & a & e
% have such a geometry with a dotted line in the second column. It's possible by
% using the option |nullify-dots| (and only one instruction |\Vdots| is
% necessary).\par\nobreak
+%
% \medskip
% \begin{BVerbatim}[baseline=c,boxwidth=8cm]
% $D = \begin{pNiceMatrix}[~emphase#nullify-dots@]
@@ -511,7 +521,7 @@ c & c & b & a & e
%
% \bigskip
% The command |\hdotsfor| of \pkg{amsmath} takes an optional argument (between
-% square brackets) which is used for fine tuning of the space beetween two
+% square brackets) which is used for fine tuning of the space between two
% consecutive dots. For homogeneity, |\Hdotsfor| has also an optional argument
% but this argument is discarded silently.
%
@@ -533,6 +543,7 @@ c & c & b & a & e
%
% \begin{itemize}
% \item The option |renew-dots|\par\nobreak
+%
% With this option, the commands |\ldots|, |\cdots|, |\vdots|, |\ddots|,
% |\iddots|\footnotemark[\thefniddots] and |\hdotsfor| are redefined within the environments
% provided by \pkg{nicematrix} and behave like |\Ldots|, |\Cdots|, |\Vdots|,
@@ -540,6 +551,7 @@ c & c & b & a & e
% of |amsmath|) is also redefined to behave like |\Ldots|.
%
% \item The option |renew-matrix|\par\nobreak
+%
% With this option, the environment |{matrix}| is redefined and behave like
% |{NiceMatrix}|, and so on for the five variants.
% \end{itemize}
@@ -547,6 +559,7 @@ c & c & b & a & e
% \bigskip
% Therefore, with the option |transparent|, a classical code gives directly the
% ouput of \pkg{nicematrix}.\par\nobreak
+%
% \bigskip
% \begin{scope}
% \NiceMatrixOptions{transparent}
@@ -1133,6 +1146,7 @@ c & c & b & a & e
% It's possible to give the value |auto| to the option |columns-width|: all the
% columns of the array will have a width equal to the widest cell of the array.
% \textbf{Two or three compilations may be necessary.}\par\nobreak
+%
% \medskip
% \begin{BVerbatim}[baseline=c,boxwidth=10cm]
% $\begin{pNiceMatrix}[~emphase#columns-width = auto@]
@@ -1150,6 +1164,7 @@ c & c & b & a & e
% \bigskip
% It's possible to fix the width of the columns of all the matrices of a current
% scope with the command |\NiceMatrixOptions|.\par\nobreak
+%
% \medskip
% \begin{BVerbatim}[baseline=c,boxwidth=8.5cm]
% ~emphase#\NiceMatrixOptions{columns-width=10mm}@
@@ -1244,7 +1259,7 @@ c & c & b & a & e
% One may wish raise the size of the ``$A$'' placed in the block of the previous
% example. Since this element is composed in math mode, it's not possible to use
% directly a command like |\large|, |\Large| and |\LARGE|. That's why the command
-% |\Block| provides an option beetween angle brackets to specificy some TeX code
+% |\Block| provides an option between angle brackets to specificy some TeX code
% which will be inserted before the beginning of the math mode.
%
% \medskip
@@ -1276,6 +1291,51 @@ c & c & b & a & e
% write |\Block{|$i$|-|$j$|}<>{<}| with the expected result.
%
%
+%
+% \section{The option small}
+%
+% With the option |small|, the environments of the extension \pkg{nicematrix}
+% are composed in a way similar to the environment |{smallmatrix}| of the
+% extension \pkg{amsmath} (and the environments |{psmallmatrix}|,
+% |{bsmallmatrix}|, etc. of the extension \pkg{mathtools}).
+%
+% \bigskip
+% \begin{Verbatim}
+% $\begin{bNiceArray}{CCCC|C}[~emphase#small@,
+% last-col,
+% code-for-last-col = \scriptscriptstyle,
+% columns-width = 3mm ]
+% 1 & -2 & 3 & 4 & 5 \\
+% 0 & 3 & 2 & 1 & 2 & L_2 \gets 2 L_1 - L_2 \\
+% 0 & 1 & 1 & 2 & 3 & L_3 \gets L_1 + L_3 \\
+% \end{bNiceArray}$
+% \end{Verbatim}
+% %
+% \[\begin{bNiceArray}{CCCC|C}[small, last-col,
+% code-for-last-col = \scriptscriptstyle, columns-width=3mm]
+% 1 & -2 & 3 & 4 & 5 \\
+% 0 & 3 & 2 & 1 & 2 & L_2 \gets 2 L_1 - L_2 \\
+% 0 & 1 & 1 & 2 & 3 & L_3 \gets L_1 + L_3 \\
+% \end{bNiceArray}\]
+%
+%
+%
+% \bigskip
+% One should note that the environment |{NiceMatrix}| with the option |small| is
+% not composed \emph{exactly} as the environment |{smallmatrix}|. Indeed, all the
+% environments of \pkg{nicematrix} are constructed upon |{array}| (of the
+% extension \pkg{array}) whereas the environment |{smallmatrix}| is constructed
+% directly with an |\halign| of TeX.
+%
+% \medskip
+% In fact, the option |small| corresponds to the following tuning:
+% \begin{itemize}
+% \item the cells of the array are composed with \verb|\scriptstyle| ;
+% \item \verb|\arraystretch| is set to $0.47$ ;
+% \item \verb|\arraycolsep| is set to $1.45$~pt ;
+% \item the characteristics of the dotted lines are also modified.
+% \end{itemize}
+%
% \section{The option hlines}
%
% You can add horizontal rules between rows in the environments of
@@ -1656,6 +1716,7 @@ c & c & b & a & e
% \vspace{2cm}
%
% An example with |\Iddots|: \par\nobreak
+%
% \bigskip
% \begin{BVerbatim}[baseline=c]
% $\begin{pNiceMatrix}
@@ -1676,6 +1737,7 @@ c & c & b & a & e
%
% \vspace{2cm}
% An example with |\multicolumn|:\par\nobreak
+%
% \bigskip
% \begin{BVerbatim}
% \begin{BNiceMatrix}[nullify-dots]
@@ -1696,6 +1758,7 @@ c & c & b & a & e
%
% \vspace{2cm}
% An example with |\Hdotsfor|:\par\nobreak
+%
% \bigskip
% \begin{BVerbatim}[baseline=c,boxwidth=11cm]
% \begin{pNiceMatrix}[nullify-dots]
@@ -1720,6 +1783,7 @@ c & c & b & a & e
%
% \vspace{2cm}
% An example for the resultant of two polynoms:\par\nobreak
+%
% \bigskip
% \begin{BVerbatim}
% \setlength{\extrarowheight}{1mm}
@@ -2451,6 +2515,27 @@ c & c & b & a & e
% \end{macrocode}
%
% \bigskip
+% The length |\l_@@_inter_dots_dim| is the distance between two dots for the
+% dotted lines. The default value is 0.45~em but it will be changed if the
+% option |small| is used.
+% \begin{macrocode}
+\dim_new:N \l_@@_inter_dots_dim
+\dim_set:Nn \l_@@_inter_dots_dim { 0.45 em }
+% \end{macrocode}
+% The length |\l_@@_radius_dim| is the radius of the dots for the dotted lines.
+% The default value is 0.34~pt but it will changed if the option |small| is used.
+% \begin{macrocode}
+\dim_new:N \l_@@_radius_dim
+\dim_set:Nn \l_@@_radius_dim { 0.53 pt }
+% \end{macrocode}
+%
+% \bigskip
+% The name of the current environment (will be used only in the error messages).
+% \begin{macrocode}
+\str_new:N \g_@@_type_env_str
+% \end{macrocode}
+%
+% \bigskip
% \subsubsection{Variables for the exterior rows and columns}
%
% The keys for the exterior rows and columns are |first-row|, |first-col|,
@@ -2487,7 +2572,7 @@ c & c & b & a & e
% as specified by the key |last-row|. A value of $-2$ means that there is no
% ``last row''. A value of $-1$ means that there is a ``last row'' but we don't
% know the number of that row (the key |last-row| has been used without value
-% and has not still been read in the |aux|).
+% and the actual value has not still been read in the |aux| file).
% \begin{macrocode}
\int_new:N \l_@@_last_row_int
\int_set:Nn \l_@@_last_row_int { -2 }
@@ -2768,16 +2853,15 @@ c & c & b & a & e
%
%
%
-%
% \bigskip
% First, we define a set of keys ``|NiceMatrix / Global|'' which will be used
% (with the mechanism of |.inherit:n|) by other sets of keys.
% \begin{macrocode}
\keys_define:nn { NiceMatrix / Global }
{
+ small .bool_set:N = \l_@@_small_bool ,
hlines .bool_set:N = \l_@@_hlines_bool ,
parallelize-diags .bool_set:N = \l_@@_parallelize_diags_bool ,
- parallelize-diags .default:n = true ,
% \end{macrocode}
%
% \bigskip
@@ -2786,9 +2870,7 @@ c & c & b & a & e
% |\Vdots| and |\Ddots|.
% \begin{macrocode}
renew-dots .bool_set:N = \l_@@_renew_dots_bool ,
- renew-dots .default:n = true ,
nullify-dots .bool_set:N = \l_@@_nullify_dots_bool ,
- nullify-dots .default:n = true ,
% \end{macrocode}
%
% \bigskip
@@ -2799,7 +2881,6 @@ c & c & b & a & e
% the |w|~node is used instead of the ``medium'' node.}
% \begin{macrocode}
create-extra-nodes .bool_set:N = \l_@@_extra_nodes_bool ,
- create-extra-nodes .default:n = true,
left-margin .dim_set:N = \l_@@_left_margin_dim ,
left-margin .default:n = \arraycolsep ,
right-margin .dim_set:N = \l_@@_right_margin_dim ,
@@ -2815,7 +2896,7 @@ c & c & b & a & e
%
% \bigskip
% The following set of keys concerns the options to \emph{customize} the
-% exterior columns, that is to say the options |code-for-first-row|, etc.
+% exterior rows and columns, that is to say the options |code-for-first-row|, etc.
% \begin{macrocode}
\keys_define:nn { NiceMatrix / Code }
{
@@ -2916,7 +2997,6 @@ c & c & b & a & e
% those who want to have for |{NiceArray}| the same behaviour as |{array}|.
% \begin{macrocode}
exterior-arraycolsep .bool_set:N = \l_@@_exterior_arraycolsep_bool ,
- exterior-arraycolsep .default:n = true ,
% \end{macrocode}
%
% \bigskip
@@ -3061,6 +3141,7 @@ c & c & b & a & e
% \begin{macrocode}
\hbox_set:Nw \l_tmpa_box
\c_math_toggle_token
+ \bool_if:NT \l_@@_small_bool \scriptstyle
\int_compare:nNnTF \g_@@_row_int = \c_zero_int
\l_@@_code_for_first_row_tl
{
@@ -3366,6 +3447,18 @@ c & c & b & a & e
\cs_new_protected:Npn \@@_pre_array:
{
% \end{macrocode}
+% If the option |small| is used, we have to do some tuning. In particular, we
+% change the value of |\arraystretch| (this parameter is used in the
+% construction of |\@arstrutbox| in the beginning of |{array}|).
+% \begin{macrocode}
+ \bool_if:NT \l_@@_small_bool
+ {
+% \end{macrocode}
+% \begin{macrocode}
+ \cs_set:Npn \arraystretch { 0.47 }
+ \dim_set:Nn \arraycolsep { 1.45 pt }
+ }
+% \end{macrocode}
%
% If the user requires all the columns to have a width equal to the widest cell
% of the array, we read this length in the file |.aux| (of, course, this is
@@ -3417,16 +3510,11 @@ c & c & b & a & e
\bool_gset_eq:NN \g_@@_NiceArray_bool \l_@@_NiceArray_bool
\bool_gset_eq:NN \g_@@_last_row_without_value_bool
\l_@@_last_row_without_value_bool
+ \bool_gset_eq:NN \g_@@_small_bool \l_@@_small_bool
% \end{macrocode}
-% The environment |{array}| uses internally the command |\ialign| and, in
-% particular, this command |\ialign| sets |\everycr| to |{}|. However, we want
-% to use |\everycr| in our array. The solution is to give to |\ialign| a new
-% definition (giving to |\everycr| the value we want) that will revert
-% automatically to its default definition after the first
-% utilisation.\footnote{With this programmation, we will have, in the cells of
-% the array, a clean version of |\ialign|. That's necessary: the user will
-% probably not employ directly |\ialign| in the array... but more likely
-% environments that utilize |\ialign| internally (e.g.: |{substack}|)}
+% The environment |{array}| uses internally the command |\ialign|. We change the
+% definition of |\ialign| for several reasons. In particular, |\ialign| sets
+% |\everycr| to |{ }|. However, we have to change the value of |\everycr|.
% \begin{macrocode}
\cs_set:Npn \ialign
{
@@ -3440,6 +3528,37 @@ c & c & b & a & e
}
{ \everycr { \@@_everycr: } }
\tabskip = \c_zero_skip
+% \end{macrocode}
+% The box |\@arstrutbox| is a box constructed in the beginning of the
+% environment |{array}|. The construction of that box takes into account the
+% current values of |\arraystretch|\footnote{The option |small| of
+% \pkg{nicematrix} changes (among other) the value of |\arraystretch|. This is
+% done, of course, before the call of |{array}|.} and |\extrarowheight| (of
+% \pkg{array}). That box is inserted (via |\@arstrut|) in the beginning of each
+% row of the array. That's why we use the dimensions of that box to initialize
+% the variables which will be the dimensions of the potential first and last row
+% of the environment. This initialization must be done after the creation of
+% |\@arstrutbox| and that's why we do it in the |\ialign|.
+% \begin{macrocode}
+ \dim_gzero_new:N \g_@@_dp_row_zero_dim
+ \dim_gset:Nn \g_@@_dp_row_zero_dim { \box_dp:N \@arstrutbox }
+ \dim_gzero_new:N \g_@@_ht_row_zero_dim
+ \dim_gset:Nn \g_@@_ht_row_zero_dim { \box_ht:N \@arstrutbox }
+ \dim_gzero_new:N \g_@@_ht_row_one_dim
+ \dim_gset:Nn \g_@@_ht_row_one_dim { \box_ht:N \@arstrutbox }
+ \dim_gzero_new:N \g_@@_dp_ante_last_row_dim
+ \dim_gset:Nn \g_@@_dp_ante_last_row_dim { \box_dp:N \@arstrutbox }
+ \dim_gzero_new:N \g_@@_ht_last_row_dim
+ \dim_gset:Nn \g_@@_ht_last_row_dim { \box_ht:N \@arstrutbox }
+ \dim_gzero_new:N \g_@@_dp_last_row_dim
+ \dim_gset:Nn \g_@@_dp_last_row_dim { \box_dp:N \@arstrutbox }
+% \end{macrocode}
+% After its first utilisation, the definition of |\ialign| will revert
+% automatically to its default definition. With this programmation, we will
+% have, in the cells of the array, a clean version of |\ialign|.\footnote{The user will
+% probably not employ directly |\ialign| in the array... but more likely
+% environments that utilize |\ialign| internally (e.g.: |{substack}|).}
+% \begin{macrocode}
\cs_set:Npn \ialign
{
\everycr { }
@@ -3542,12 +3661,6 @@ c & c & b & a & e
\cs_set_eq:NN \NC@find@W \relax
\@@_renewcolumntype:nn w { }
\@@_renewcolumntype:nn W { \cs_set_eq:NN \hss \hfil }
- \dim_gzero_new:N \g_@@_dp_row_zero_dim
- \dim_gzero_new:N \g_@@_ht_row_zero_dim
- \dim_gzero_new:N \g_@@_ht_row_one_dim
- \dim_gzero_new:N \g_@@_dp_ante_last_row_dim
- \dim_gzero_new:N \g_@@_ht_last_row_dim
- \dim_gzero_new:N \g_@@_dp_last_row_dim
% \end{macrocode}
%
% \bigskip
@@ -3629,6 +3742,8 @@ c & c & b & a & e
% \begin{macrocode}
\NewDocumentEnvironment { NiceArrayWithDelims } { m m O { } m ! O { } }
{
+ \str_if_empty:NT \g_@@_type_env_str
+ { \str_gset:Nn \g_@@_type_env_str { NiceArrayWithDelims } }
\@@_adapt_S_column:
\@@_test_if_math_mode:
\bool_if:NT \l_@@_in_env_bool { \@@_fatal:n { Yet~in~env } }
@@ -3686,7 +3801,7 @@ c & c & b & a & e
{
\bool_set_true:N \l_@@_last_row_without_value_bool
% \end{macrocode}
-% A value based the name is more reliable than a value based on the number of
+% A value based on the name is more reliable than a value based on the number of
% the environment.
% \begin{macrocode}
\str_if_empty:NTF \g_@@_name_str
@@ -3786,7 +3901,7 @@ c & c & b & a & e
\c_math_toggle_token
% \end{macrocode}
% Here is the call to |\array| (we have a dedicated macro |\@@_array:| because
-% of compatibility with \cls{revtex4-1} and \cls{revtex4-2}).
+% of compatibility with the classes \cls{revtex4-1} and \cls{revtex4-2}).
% \begin{macrocode}
\exp_args:NV \@@_array: \l_tmpa_tl
}
@@ -3824,20 +3939,12 @@ c & c & b & a & e
% row'' above the array (when the key |first-row| is used).
% \begin{macrocode}
\int_compare:nNnTF \l_@@_first_row_int = \c_zero_int
- {
- \dim_compare:nNnTF
- { \g_@@_ht_row_one_dim + \g_@@_dp_row_zero_dim + \lineskiplimit }
- > \baselineskip
+ {
+ \dim_set:Nn \l_tmpa_dim
{
- \dim_set:Nn \l_tmpa_dim
- {
- \g_@@_ht_row_one_dim + \g_@@_dp_row_zero_dim + \lineskip
- + \g_@@_ht_row_zero_dim - \g_@@_ht_row_one_dim
- }
- }
- {
- \dim_set:Nn \l_tmpa_dim
- { \baselineskip + \g_@@_ht_row_zero_dim - \g_@@_ht_row_one_dim }
+ \g_@@_ht_row_one_dim + \g_@@_dp_row_zero_dim
+ + \lineskip
+ + \g_@@_ht_row_zero_dim - \g_@@_ht_row_one_dim
}
}
{ \dim_zero:N \l_tmpa_dim }
@@ -3851,25 +3958,11 @@ c & c & b & a & e
% \begin{macrocode}
\int_compare:nNnTF \l_@@_last_row_int > { -2 }
{
- \dim_compare:nNnTF
+ \dim_set:Nn \l_tmpb_dim
{
- \g_@@_ht_last_row_dim + \g_@@_dp_ante_last_row_dim + \lineskiplimit
- }
- >
- \baselineskip
- {
- \dim_set:Nn \l_tmpb_dim
- {
- \g_@@_ht_last_row_dim + \g_@@_dp_ante_last_row_dim + \lineskip
- + \g_@@_dp_last_row_dim - \g_@@_dp_ante_last_row_dim
- }
- }
- {
- \dim_set:Nn \l_tmpb_dim
- {
- \baselineskip
- + \g_@@_dp_last_row_dim - \g_@@_dp_ante_last_row_dim
- }
+ \g_@@_ht_last_row_dim + \g_@@_dp_ante_last_row_dim
+ + \lineskip
+ + \g_@@_dp_last_row_dim - \g_@@_dp_ante_last_row_dim
}
}
{ \dim_zero:N \l_tmpb_dim }
@@ -3981,6 +4074,7 @@ c & c & b & a & e
% \begin{macrocode}
\hbox_set:Nw \l_tmpa_box
\c_math_toggle_token
+ \bool_if:NT \l_@@_small_bool \scriptstyle
\l_@@_code_for_first_col_tl
}
l
@@ -4062,6 +4156,7 @@ c & c & b & a & e
% \begin{macrocode}
\hbox_set:Nw \l_tmpa_box
\c_math_toggle_token
+ \bool_if:NT \l_@@_small_bool \scriptstyle
\l_@@_code_for_last_col_tl
}
l
@@ -4131,6 +4226,8 @@ c & c & b & a & e
\NewDocumentEnvironment { NiceArray } { }
{
\bool_set_true:N \l_@@_NiceArray_bool
+ \str_if_empty:NT \g_@@_type_env_str
+ { \str_gset:Nn \g_@@_type_env_str { NiceArray } }
% \end{macrocode}
% We put . and . for the delimiters but, in fact, that doesn't matter because
% these arguments won't be used in |{NiceArrayWithDelims}| (because the flag
@@ -4149,6 +4246,7 @@ c & c & b & a & e
% \begin{macrocode}
\NewDocumentEnvironment { pNiceArray } { }
{
+ \str_gset:Nn \g_@@_type_env_str { pNiceArray }
\@@_test_if_math_mode:
\NiceArrayWithDelims ( )
}
@@ -4158,6 +4256,7 @@ c & c & b & a & e
% \begin{macrocode}
\NewDocumentEnvironment { bNiceArray } { }
{
+ \str_gset:Nn \g_@@_type_env_str { bNiceArray }
\@@_test_if_math_mode:
\NiceArrayWithDelims [ ]
}
@@ -4167,6 +4266,7 @@ c & c & b & a & e
% \begin{macrocode}
\NewDocumentEnvironment { BNiceArray } { }
{
+ \str_gset:Nn \g_@@_type_env_str { BNiceArray }
\@@_test_if_math_mode:
\NiceArrayWithDelims \{ \}
}
@@ -4176,6 +4276,7 @@ c & c & b & a & e
% \begin{macrocode}
\NewDocumentEnvironment { vNiceArray } { }
{
+ \str_gset:Nn \g_@@_type_env_str { vNiceArray }
\@@_test_if_math_mode:
\NiceArrayWithDelims | |
}
@@ -4185,6 +4286,7 @@ c & c & b & a & e
% \begin{macrocode}
\NewDocumentEnvironment { VNiceArray } { }
{
+ \str_gset:Nn \g_@@_type_env_str { VNiceArray }
\@@_test_if_math_mode:
\NiceArrayWithDelims \| \|
}
@@ -4205,8 +4307,8 @@ c & c & b & a & e
%
% That's why in the definition of |{NiceMatrix}|, we have to use |\array| and
% not |\begin{array}|. This command |\array| is in |\@@_array:| (we have written
-% this command because of the redefinition of |\array| done in \cls{revtex4-1}
-% and \cls{revtex4-2}).
+% this command because of the redefinition of |\array| done in the classes
+% \cls{revtex4-1} and \cls{revtex4-2}).
%
% In order to execute code after the array, we use a command
% |\group_insert_after:N|.
@@ -4216,6 +4318,8 @@ c & c & b & a & e
% \begin{macrocode}
\NewDocumentEnvironment { NiceMatrix } { ! O { } }
{
+ \str_if_empty:NT \g_@@_type_env_str
+ { \str_gset:Nn \g_@@_type_env_str { NiceMatrix } }
\@@_test_if_math_mode:
\bool_if:NT \l_@@_in_env_bool { \@@_fatal:n { Yet~in~env } }
\bool_set_true:N \l_@@_in_env_bool
@@ -4264,47 +4368,52 @@ c & c & b & a & e
% We create the variants of the environment |{NiceMatrix}|.
% \begin{macrocode}
\NewDocumentEnvironment { pNiceMatrix } { }
- {
- \@@_test_if_math_mode:
- \left( \begin{NiceMatrix}
- }
- { \end{NiceMatrix} \right) }
+ {
+ \str_gset:Nn \g_@@_type_env_str { pNiceMatrix }
+ \@@_test_if_math_mode:
+ \left( \begin{NiceMatrix}
+ }
+ { \end{NiceMatrix} \right) }
% \end{macrocode}
%
% \begin{macrocode}
\NewDocumentEnvironment { bNiceMatrix } { }
- {
- \@@_test_if_math_mode:
- \left[ \begin{NiceMatrix}
- }
- { \end{NiceMatrix} \right] }
+ {
+ \str_gset:Nn \g_@@_type_env_str { bNiceMatrix }
+ \@@_test_if_math_mode:
+ \left[ \begin{NiceMatrix}
+ }
+ { \end{NiceMatrix} \right] }
% \end{macrocode}
%
% \begin{macrocode}
\NewDocumentEnvironment { BNiceMatrix } { }
- {
- \@@_test_if_math_mode:
- \left\{ \begin{NiceMatrix}
- }
- { \end{NiceMatrix} \right\} }
+ {
+ \str_gset:Nn \g_@@_type_env_str { BNiceMatrix }
+ \@@_test_if_math_mode:
+ \left\{ \begin{NiceMatrix}
+ }
+ { \end{NiceMatrix} \right\} }
% \end{macrocode}
%
% \begin{macrocode}
\NewDocumentEnvironment { vNiceMatrix } { }
- {
- \@@_test_if_math_mode:
- \left\lvert \begin{NiceMatrix}
- }
- { \end{NiceMatrix} \right\rvert }
+ {
+ \str_gset:Nn \g_@@_type_env_str { vNiceMatrix }
+ \@@_test_if_math_mode:
+ \left\lvert \begin{NiceMatrix}
+ }
+ { \end{NiceMatrix} \right\rvert }
% \end{macrocode}
%
% \begin{macrocode}
\NewDocumentEnvironment { VNiceMatrix } { }
- {
- \@@_test_if_math_mode:
- \left\lVert \begin{NiceMatrix}
- }
- { \end{NiceMatrix} \right\rVert }
+ {
+ \str_gset:Nn \g_@@_type_env_str { VNiceMatrix }
+ \@@_test_if_math_mode:
+ \left\lVert \begin{NiceMatrix}
+ }
+ { \end{NiceMatrix} \right\rVert }
% \end{macrocode}
%
%
@@ -4450,9 +4559,8 @@ c & c & b & a & e
%
% \subsection{After the construction of the array}
%
-% The macro |\@@_after_array:| is called (via
-% |\group_insert_after:N|) in |{NiceArrayWithDelims}| and
-% |{NiceMatrix}|.
+% The macro |\@@_after_array:| is called (via |\group_insert_after:N|) in
+% |{NiceArrayWithDelims}| and |{NiceMatrix}|.
%
% \begin{macrocode}
\cs_new_protected:Nn \@@_after_array:
@@ -4561,6 +4669,16 @@ c & c & b & a & e
\bool_set_false:N \l_@@_final_open_bool
% \end{macrocode}
%
+% If the option |small| is used, the values |\l_@@_radius_dim| and
+% |\l_@@_inter_dots_dim| (used to draw the dotted lines) are changed.
+% \begin{macrocode}
+ \bool_if:NT \g_@@_small_bool
+ {
+ \dim_set:Nn \l_@@_radius_dim { 0.37 pt }
+ \dim_set:Nn \l_@@_inter_dots_dim { 0.25 em }
+ }
+% \end{macrocode}
+%
% \bigskip
% Now, we really draw the lines. The code to draw the lines has been constructed
% in the token lists |\g_@@_Vdots_lines_tl|, etc.
@@ -4589,6 +4707,7 @@ c & c & b & a & e
\g_@@_code_after_tl
\tl_gclear:N \g_@@_code_after_tl
\group_end:
+ \str_gclear:N \g_@@_type_env_str
}
% \end{macrocode}
%
@@ -4649,7 +4768,7 @@ c & c & b & a & e
% \begin{macrocode}
\cs_set:cpn { @@ _ dotted _ #1 - #2 } { }
% \end{macrocode}
-% Initialisation of variables.
+% Initialization of variables.
% \begin{macrocode}
\int_set:Nn \l_@@_initial_i_int { #1 }
\int_set:Nn \l_@@_initial_j_int { #2 }
@@ -5226,22 +5345,22 @@ c & c & b & a & e
\bool_if:NTF \l_@@_final_open_bool
{
\int_set:Nn \l_tmpa_int
- { \dim_ratio:nn \l_@@_l_dim { 0.45 em } }
+ { \dim_ratio:nn \l_@@_l_dim \l_@@_inter_dots_dim }
}
{
\int_set:Nn \l_tmpa_int
- { \dim_ratio:nn { \l_@@_l_dim - 0.3 em } { 0.45 em } }
+ { \dim_ratio:nn { \l_@@_l_dim - 0.3 em } \l_@@_inter_dots_dim }
}
}
{
\bool_if:NTF \l_@@_final_open_bool
{
\int_set:Nn \l_tmpa_int
- { \dim_ratio:nn { \l_@@_l_dim - 0.3 em } { 0.45 em } }
+ { \dim_ratio:nn { \l_@@_l_dim - 0.3 em } \l_@@_inter_dots_dim }
}
{
\int_set:Nn \l_tmpa_int
- { \dim_ratio:nn { \l_@@_l_dim - 0.6 em } { 0.45 em }}
+ { \dim_ratio:nn { \l_@@_l_dim - 0.6 em } \l_@@_inter_dots_dim}
}
}
% \end{macrocode}
@@ -5251,12 +5370,12 @@ c & c & b & a & e
\dim_set:Nn \l_tmpa_dim
{
( \g_@@_x_final_dim - \g_@@_x_initial_dim ) *
- \dim_ratio:nn { 0.45 em } \l_@@_l_dim
+ \dim_ratio:nn \l_@@_inter_dots_dim \l_@@_l_dim
}
\dim_set:Nn \l_tmpb_dim
{
( \g_@@_y_final_dim - \g_@@_y_initial_dim ) *
- \dim_ratio:nn { 0.45 em } \l_@@_l_dim
+ \dim_ratio:nn \l_@@_inter_dots_dim \l_@@_l_dim
}
% \end{macrocode}
%
@@ -5283,7 +5402,7 @@ c & c & b & a & e
{
( \g_@@_x_final_dim - \g_@@_x_initial_dim ) *
\dim_ratio:nn
- { \l_@@_l_dim - 0.45 em * \l_tmpa_int } { \l_@@_l_dim * 2 } *
+ { \l_@@_l_dim - \l_@@_inter_dots_dim * \l_tmpa_int } { \l_@@_l_dim * 2 } *
\l_tmpb_int
}
% \end{macrocode}
@@ -5294,7 +5413,7 @@ c & c & b & a & e
{
( \g_@@_y_final_dim - \g_@@_y_initial_dim ) *
\dim_ratio:nn
- { \l_@@_l_dim - 0.45 em * \l_tmpa_int }
+ { \l_@@_l_dim - \l_@@_inter_dots_dim * \l_tmpa_int }
{ \l_@@_l_dim * 2 } *
\l_tmpb_int
}
@@ -5303,7 +5422,7 @@ c & c & b & a & e
{
\pgfpathcircle
{ \pgfpoint { \g_@@_x_initial_dim } { \g_@@_y_initial_dim } }
- { 0.53 pt }
+ { \l_@@_radius_dim }
\pgfusepath { fill }
\dim_gadd:Nn \g_@@_x_initial_dim \l_tmpa_dim
\dim_gadd:Nn \g_@@_y_initial_dim \l_tmpb_dim
@@ -5431,7 +5550,7 @@ c & c & b & a & e
% The command |\@@_Hdotsfor| will be linked to |\Hdotsfor| in |{NiceArray}|.
% This command uses an optional argument like |\hdotsfor| but this argument is
% discarded (in |\hdotsfor|, this argument is used for fine tuning of the space
-% beetween two consecutive dots). Tikz nodes are created for all the cells of
+% between two consecutive dots). Tikz nodes are created for all the cells of
% the array, even the implicit cells of the |\Hdotsfor|.
%
% \medskip
@@ -5591,7 +5710,24 @@ c & c & b & a & e
{
\cs_set:Npn \@@_dotfill:
{
- \cleaders \hbox_to_wd:nn { .44 em } { \hss . \hss } \hfill
+% \end{macrocode}
+% If the option |small| is used, we change the space between two dots (we can't
+% use |\l_@@_inter_dots_dim| which will be set after the construction of the
+% array). We can't put the |\bool_if:NT| in the first argument of
+% |\hbox_to_wd:nn| because |\cleaders| is a special TeX primitive.
+% \begin{macrocode}
+ \bool_if:NT \l_@@_small_bool
+ { \dim_set:Nn \l_@@_inter_dots_dim { 0.25 em } }
+ \cleaders
+ \hbox_to_wd:nn
+ { \l_@@_inter_dots_dim }
+ {
+ \c_math_toggle_token
+ \bool_if:NT \l_@@_small_bool \scriptstyle
+ \hss . \hss
+ \c_math_toggle_token
+ }
+ \hfill
\skip_horizontal:n \c_zero_dim
}
}
@@ -6287,10 +6423,10 @@ c & c & b & a & e
\@@_msg_new:nn { Wrong~last~row }
{
You~have~used~'last-row=\int_use:N \g_@@_last_row_int'~but~your~environment~
- \{\@currenvir\}~seems~to~have~\int_use:N \g_@@_row_int\
- rows~(remark~that~you~can~use~'last-row'~without~value).~If~you~go~on,
- ~the~value~of~\int_use:N \g_@@_row_int\
- will~be~used~for~last~row.
+ \{\g_@@_type_env_str\}~seems~to~have~\int_use:N \g_@@_row_int\
+ rows.~If~you~go~on,~the~value~of~\int_use:N \g_@@_row_int\
+ will~be~used~for~last~row.~You~can~avoid~this~problem~by~using~'last-row'~
+ without~value~(more~compilations~might~be~necessary).
}
% \end{macrocode}
%
@@ -6311,7 +6447,7 @@ c & c & b & a & e
% \begin{macrocode}
\@@_msg_new:nn { Outside~math~mode }
{
- The~environment~\{\@currenvir\}~can~be~used~only~in~math~mode~
+ The~environment~\{\g_@@_type_env_str\}~can~be~used~only~in~math~mode~
(and~not~in~\token_to_str:N \vcenter).\\
This~error~is~fatal.
}
@@ -6348,7 +6484,7 @@ c & c & b & a & e
For~a~list~of~the~available~keys,~type~H~<return>.
}
{
- The~available~keys~are~(in~alphabetic~order):~
+ The~available~options~are~(in~alphabetic~order):~
allow-duplicate-names,~
code-for-first-col,~
code-for-first-row,~
@@ -6363,6 +6499,7 @@ c & c & b & a & e
renew-dots,~
renew-matrix,~
right-margin,~
+ small,~
and~transparent
}
% \end{macrocode}
@@ -6395,6 +6532,7 @@ c & c & b & a & e
parallelize-diags,~
renew-dots,~
right-margin,~
+ small,~
and~t.
}
% \end{macrocode}
@@ -6420,8 +6558,9 @@ c & c & b & a & e
name,~
nullify-dots,~
parallelize-diags,~
- renew-dots~
- and~right-margin.
+ renew-dots,~
+ right-margin~
+ and~small.
}
% \end{macrocode}
%
@@ -6432,7 +6571,7 @@ c & c & b & a & e
\@@_msg_new:nnn { Unknown~option~for~pNiceArray }
{
The~option~'\tl_use:N\l_keys_key_tl'~is~unknown~for~the~environment~
- \{\@currenvir\}. \\
+ \{\g_@@_type_env_str\}. \\
If~you~go~on,~it~will~be~ignored. \\
For~a~list~of~the~available~options,~type~H~<return>.
}
@@ -6457,7 +6596,8 @@ c & c & b & a & e
nullify-dots,~
parallelize-diags,~
renew-dots,~
- and~right-margin.
+ right-margin~
+ and~small.
}
% \end{macrocode}
%
@@ -6467,10 +6607,10 @@ c & c & b & a & e
The~name~'\l_keys_value_tl'~is~already~used~and~you~shouldn't~use~
the~same~environment~name~twice.~You~can~go~on,~but,~
maybe,~you~will~have~incorrect~results~especially~
- if~you~use~'columns-width=auto'. \\
+ if~you~use~'columns-width=auto'.~If~you~use~nicematrix~inside~some~
+ environments~of~amsmath,~this~error~may~be~an~artefact.~In~this~case,
+ use~the~option~'allow-duplicate-names'.\\
For~a~list~of~the~names~already~used,~type~H~<return>. \\
- If~you~don't~want~to~see~this~message~again,~use~the~option~
- 'allow-duplicate-names'.
}
{
The~names~already~defined~in~this~document~are:~
@@ -6489,7 +6629,7 @@ c & c & b & a & e
% \begin{macrocode}
\@@_msg_new:nn { Zero~row }
{
- There~is~a~problem.~Maybe~your~environment~\{\@currenvir\}~is~empty.~
+ There~is~a~problem.~Maybe~your~environment~\{\g_@@_type_env_str\}~is~empty.~
Maybe~you~have~used~l,~c~and~r~instead~of~L,~C~and~R~in~the~preamble~
of~your~environment. \\
If~you~go~on,~the~result~may~be~incorrect.
@@ -6500,7 +6640,7 @@ c & c & b & a & e
\@@_msg_new:nn { Use~of~:~in~first~position }
{
You~can't~use~the~column~specifier~'\l_@@_letter_for_dotted_lines_str'~in~the~
- first~position~of~the~preamble~of~the~environment~\{\@currenvir\}. \\
+ first~position~of~the~preamble~of~the~environment~\{\g_@@_type_env_str\}. \\
If~you~go~on,~this~dotted~line~will~be~ignored.
}
% \end{macrocode}
@@ -6694,9 +6834,7 @@ c & c & b & a & e
% Options are now available locally in |{pNiceMatrix}| and its variants.
%
% The names of the options are changed. The old names were names in ``camel
-% style''. New names are in lowercase and hyphens (but backward compatibility is
-% kept).
-%
+% style''.
%
% \subsection*{Changes between version 1.3 and 1.4}
%
@@ -6761,7 +6899,7 @@ c & c & b & a & e
% the specifier |!| and modified the default behaviour of the last optional
% arguments).
%
-% See |https://www.texdev.net/2018/04/21/xparse-optional-arguments-at-the-end|
+% See |www.texdev.net/2018/04/21/xparse-optional-arguments-at-the-end|
%
% \subsection*{Changes between version 2.1.4 and 2.1.5}
%
@@ -6819,7 +6957,7 @@ c & c & b & a & e
% with the new implementation, they become pointless. These starred versions
% are no longer documented.
%
-% The vertical rules in the matrices (drawn by \verb+|+) are now compatible with
+% The vertical rules in the matrices (drawn by "|") are now compatible with
% the color fixed by \pkg{colortbl}.
%
% Correction of a bug: it was not possible to use the colon |:| in the preamble
@@ -6830,7 +6968,9 @@ c & c & b & a & e
%
% \tableofcontents
% \endinput
+%
% Local Variables:
-% TeX-fold-mode: nil
+% TeX-fold-mode: t
+% TeX-fold-preserve-comments: nil
% fill-column: 80
% End:
diff --git a/macros/latex/contrib/nicematrix/nicematrix.pdf b/macros/latex/contrib/nicematrix/nicematrix.pdf
index 11faeef7c0..28f11a261c 100644
--- a/macros/latex/contrib/nicematrix/nicematrix.pdf
+++ b/macros/latex/contrib/nicematrix/nicematrix.pdf
Binary files differ
diff --git a/macros/latex/contrib/ocgx2/ChangeLog b/macros/latex/contrib/ocgx2/ChangeLog
index 3384906d48..5957ad4c5c 100644
--- a/macros/latex/contrib/ocgx2/ChangeLog
+++ b/macros/latex/contrib/ocgx2/ChangeLog
@@ -1,3 +1,8 @@
+2019-09-19
+ * v0.45: ocgx2.sty
+ * new: using comma for separating OCG ids in \showocg, \hideocg etc.; <space>
+ still accepted for compatibility with ocgx/ocg-p
+
2019-09-17
* v0.44: ocgx2.sty
* fix: wrong visibility of reopened ocg (introduced in v0.41)
diff --git a/macros/latex/contrib/ocgx2/README.md b/macros/latex/contrib/ocgx2/README.md
index e8b100e0cd..1f33d755ed 100644
--- a/macros/latex/contrib/ocgx2/README.md
+++ b/macros/latex/contrib/ocgx2/README.md
@@ -162,9 +162,9 @@ directive `\AllOff{...}` is written as `\Not{ \Or{ ... } }`.
These are the available commands:
````latex
-\switchocg[<trigger>]{<OCG ids to toggle, space separated>}{<link text>}
-\showocg[<trigger>]{<OCG ids to switch ON, space separated>}{<link text>}
-\hideocg[<trigger>]{<OCG ids to switch OFF, space separated>}{<link text>}
+\switchocg[<trigger>]{<OCG ids to toggle, comma-separated>}{<link text>}
+\showocg[<trigger>]{<OCG ids to switch ON, comma-separated>}{<link text>}
+\hideocg[<trigger>]{<OCG ids to switch OFF, comma-separated>}{<link text>}
\actionsocg[<trigger>]{<ids to toggle>}{<ids to switch ON>}{<ids to switch OFF>}{<link text>}
````
For details about their usage, read the
@@ -172,18 +172,22 @@ For details about their usage, read the
By default, links are triggered on mouse-click. Other triggers are possible
with `ocgx2`. For this, `ocgx2` provides the optional argument `[<trigger>]` to
-the commands listed above. Choose one of
+the commands listed above. Choose *one* of
````latex
onmousenter, onmouseexit, onmousedown, onmouseup, onmouseall
````
for `<trigger>`. In order to listen to more than one mouse event, use
`onmouseall`. OCG ids in the mandatory argument(s) must then be grouped with
-commas as follows:
+braces and commas as follows:
````latex
- <mouse-enter group>, <mouse-exit group>, <mouse-down group>, <mouse-up group>
+ {<mouse-enter group>}, {<mouse-exit group>}, {<mouse-down group>}, {<mouse-up group>}
````
Any of these groups may be left empty in order to configure only some
-triggers. Inside the groups, OCG ids are separated by spaces.
+triggers. Inside the groups, OCG ids are also separated by commas. Therefore,
+braces must be put around the groups. For example:
+````latex
+\switchocg[onmouseall]{, ,{ocg1, ocg2, ocg3, ocg4},{ocg1, ocg2, ocg3, ocg4}}{Toggle layers on mouse-down and -up}
+````
----
diff --git a/macros/latex/contrib/ocgx2/ocgx2.sty b/macros/latex/contrib/ocgx2/ocgx2.sty
index 2e6cbdf6aa..235fe5f90e 100644
--- a/macros/latex/contrib/ocgx2/ocgx2.sty
+++ b/macros/latex/contrib/ocgx2/ocgx2.sty
@@ -48,8 +48,8 @@
\RequirePackage{xparse}
\RequirePackage{l3keys2e}
-\def\g@ocgxii@date@tl{2019/09/17}
-\def\g@ocgxii@version@tl{0.44}
+\def\g@ocgxii@date@tl{2019/09/19}
+\def\g@ocgxii@version@tl{0.45}
\ProvidesExplPackage{ocgx2}{\g@ocgxii@date@tl}{\g@ocgxii@version@tl}
{ports `ocgx' functionality to dvips+ps2pdf, xelatex and dvipdfmx}
@@ -697,7 +697,22 @@
\cs_new_protected_nopar:Nn\ocgxii_ocglist_build:Nn{
\tl_set:Nx\l_ocglistarg_tl{#2}\tl_trim_spaces:N\l_ocglistarg_tl
- \seq_set_split:NnV\l_ocgxii_ocglistarg_seq{~}\l_ocglistarg_tl
+ % first try splitting at commas (ocgx2 syntax)
+ \tl_set_eq:NN\l_tmpa_tl\l_ocglistarg_tl
+ \tl_remove_all:Nn\l_tmpa_tl{~}
+ \seq_set_split:NnV\l_ocgxii_ocglistarg_seq{,}\l_tmpa_tl
+ \seq_remove_all:Nn\l_ocgxii_ocglistarg_seq{}
+ \tl_set:Nx\l_tmpa_tl{\seq_count:N\l_ocgxii_ocglistarg_seq}
+ % now at spaces (legacy ocgx/ocg-p)
+ \tl_set_eq:NN\l_tmpb_tl\l_ocglistarg_tl
+ \tl_remove_all:Nn\l_tmpb_tl{,}
+ \seq_set_split:NnV\l_tmpb_seq{~}\l_tmpb_tl
+ \seq_remove_all:Nn\l_tmpb_seq{}
+ \tl_set:Nx\l_tmpb_tl{\seq_count:N\l_tmpb_seq}
+ %take the seq having more elements (guessing the separator most likely used)
+ \int_compare:nT{\l_tmpb_tl>\l_tmpa_tl}{
+ \seq_set_eq:NN\l_ocgxii_ocglistarg_seq\l_tmpb_seq
+ }
\seq_map_variable:NNn\l_ocgxii_ocglistarg_seq\l_tempa_tl{
\ocgxii_process_ocgref:NN#1\l_tempa_tl
}
@@ -986,15 +1001,13 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\cs_new_protected:Nn\ocgxii_process_ocgref:NN{
- \str_if_eq:eeF{#2}{}{
- \tl_if_exist:cTF{ocgx2.ocg.#2}{
- \tl_put_right:Nx#1{~\tl_use:c{ocgx2.ocg.#2}}
- }{
- \msg_warning:nnx{ocgx2}{undefined~OCG}{#2}
- \tl_if_exist:NF\g_ocgxii_refundefwarned_tl{
- \tl_new:N\g_ocgxii_refundefwarned_tl
- \AtEndDocument{\msg_warning:nn{ocgx2}{undefined~OCGs}}
- }
+ \tl_if_exist:cTF{ocgx2.ocg.#2}{
+ \tl_put_right:Nx#1{~\tl_use:c{ocgx2.ocg.#2}}
+ }{
+ \msg_warning:nnx{ocgx2}{undefined~OCG}{#2}
+ \tl_if_exist:NF\g_ocgxii_refundefwarned_tl{
+ \tl_new:N\g_ocgxii_refundefwarned_tl
+ \AtEndDocument{\msg_warning:nn{ocgx2}{undefined~OCGs}}
}
}
}
diff --git a/macros/latex/contrib/poemscol/poemscol.dtx b/macros/latex/contrib/poemscol/poemscol.dtx
index c0bde4dce2..a5ccbb380e 100644
--- a/macros/latex/contrib/poemscol/poemscol.dtx
+++ b/macros/latex/contrib/poemscol/poemscol.dtx
@@ -23,7 +23,7 @@
% \iffalse
%<package>\NeedsTeXFormat{LaTeX2e}[1997/12/01]
%<package>\ProvidesPackage{poemscol}
-%<package> [2019/09/09 v3.12 poemscol file]
+%<package> [2019/09/15 v3.13 poemscol file]
%
%<*driver>
\documentclass{ltxdoc}
@@ -38,7 +38,7 @@
%</driver>
% \fi
%
-% \CheckSum{9868}
+% \CheckSum{9913}
%
% \CharacterTable
% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
@@ -240,7 +240,7 @@
% \changes{v2.98}{2018/01/11}{Corrections to manual.}
% \changes{v2.99}{2019/08/02}{Hierarchy of indented stanzas}
% \changes{v3}{2019/08/03}{With centered verse you can align the title, epigraphs,
-% attibutions, and so on with the left margin of the verse block.}
+% attributions, and so on with the left margin of the verse block.}
% \changes{v3.01}{2019/08/04}{Corrections to manual}
% \changes{v3.04}{2019/08/18}{Appendix sections. New contents entries.}
% \changes{v3.08}{2019/09/03}{Indentations of species of titles in text can be independenttly changed without changing the
@@ -256,6 +256,7 @@
% commands are controlled by the same booleans that control placement
% of titles.}
% \changes{v3.12}{2019/09/05}{Bug fix. Fix command clash with titlesec Manual revision}
+% \changes{v3.13}{2019/09/15}{Fixed subtitles in emendations and explanations, Fixed bug in sequencesectiontitlefirstline, changed sequence hierarchy of indentations, subsubsections of sequences no longer appear in contents}
% \DoNotIndex{\newcommand,\newenvironment,\def,\edef,\else,\renewcommand,\makeatletter,\makeatother}
% \DoNotIndex{\abovedisplayskip,\belowdisplayskip,\abovedisplayshortskip,\belowdisplayshortskip}
% \DoNotIndex{\newcommand, \section, \subsection, \subsubsection,
@@ -288,15 +289,15 @@
% \textsc, \unskip}
% \setcounter{IndexColumns}{2}
% \MakeShortVerb{|}
-% \def\fileversion{3.12}
-% \def\filedate{9 September 2019}
-% \def\docdate{9 September 2019}
+% \def\fileversion{3.13}
+% \def\filedate{15 September 2019}
+% \def\docdate{15 September 2019}
% \title{Typesetting Poetry Collections with
% \textsf{poemscol}\thanks{This document corresponds to
% \textsf{poemscol}~\fileversion, dated \filedate.}}
% \author{John Burt
% \\ \texttt{burt@brandeis.edu}}
-% \date{9 September 2019}
+% \date{15 September 2019}
% \maketitle
% \begin{abstract} \textsf{poemscol} provides commands for \LaTeX\ for
% setting collections of poetry. It is especially suited for setting
@@ -728,12 +729,19 @@
%
% \item Titles centered over a centered verse block. I call this
% |\ifcentertitleson|. The corresponding command is
-% |\centertitlesscheme| I have retained the command |\centertitles|
-% from earlier versions of \textsf{poemscol} for compatibility. %\end{itemize}\end{sloppypar}
-%
+% |\centertitlesscheme|. I have retained the command |\centertitles|
+% from earlier versions of \textsf{poemscol} for compatibility. This
+% scheme can also be used to center the titles (and epigraphs, headnotes
+% and other top matter) over a non-centered verseblock too, if you
+% don't use the optional argument to |\begin{poem}| describe in the next
+% section, or if you turn off centering of the verse block by issuing the
+% boolean |\textcenteringturnedonfalse|.
+%\end{itemize}\end{sloppypar}
+%
+% \subsubsection{Using title placement schemes: verse width and title width}
% \begin{sloppypar}
% |\centertitlesscheme|, |\titlescenteredonleftverseblockscheme|, and \\
-% |titlesatleftmarginofcenteredblockscheme| require additional information
+% |\titlesatleftmarginofcenteredblockscheme| require additional information
% about each poem. Here are some details about the uses of these schemes.\end{sloppypar}
%
% \DescribeMacro{\centertitlesscheme} For each poem you wish to center you will have
@@ -793,7 +801,7 @@
%\begin{sloppypar}
%Rather than centering the title over
% a centered block of verse, one might prefer to align the title with
-% the left margin of the centered verse block. That is the use of this scheme The length |\versewidth|
+% the left margin of the centered verse block. The length |\versewidth|
% is used both to center the verse block and to place the title at the verse block's left margin.
% You will need to use |\settowidth| to set the length of |\versewidth| before
% issuing |\poemtitle| or the other title-making commands (such as |\sequencesectiontitle|).
@@ -2439,21 +2447,31 @@
% their arguments as epigraphs, headnotes, attributions, or
% dedications for poems or poetic sequences. \goodbreak
%
-% If your epigraph or headnote is a prose passage of more than one paragraph, or a verse
+% If your epigraph or headnote is a prose passage of more than one line, or
+% of more than one paragraph, or a verse
% passage of more than one stanza, the |\epigraph| command will work
-% properly. If you use the standard \LaTeX\ |verse|
+% properly, which is to say it will draw the margins in towards the center,
+% rather than centering the epigraph line by line.
+%
+% If you use the standard \LaTeX\ |verse|
% environment within an epigraph, you may wish to add a |\smallskip| between
% stanzas. (To my eye that environment does not leave enough white space between
% stanzas.) Alternatively, you can use the special |pmclverse| environment
-% within the |epigraphenvironment| environment. (You can even use
+% within the |epigraphenvironment| environment. You can even use
% the |poem| environment within the |epigraphenvironment| environment, but if
% you mark up the epigraph with things like |\verseline| and |\end{stanza}| you may wind
-% up with marginal line numbers.) Because |\centerepigraphs| merely
+% up with marginal line numbers, so mark line breaks with |\\| and stanza breaks
+% with a blank line, as in the standard |verse| environment.)
+%
+% Because |\centerepigraphs| merely
% draws in the margins on both sides, short passages may not appear
% centered very well, unless you fool around with |\versewidth| to
-% find a satisfactory value.
+% find a satisfactory value. |\shortpoemepigraph| and similar commands, described
+% below, are better for single line epigraphs.
%
-% \DescribeMacro{\shortpoemepigraph} The commands
+% \DescribeMacro{\shortpoemepigraph}
+% \DescribeMacro{shortpoemdedication}
+% \DescribeMacro{shortpoemattribution} \begin{sloppypar} The commands
% |\shortpoemepigraph| |\shortpoemdedication| and
% |\shortpoemattribution| will all place their texts in
% accordance with the title placement scheme you select in your
@@ -2474,7 +2492,7 @@
% if the boolean |\centerepigraphson| is in effect. I have also included
% |\JHshortepigraph| and |\JHshortdedication|, which set marginal
% marks pointing to where notes on the epigraph or dedication in the textual notes section may be
-% found, in the manner of |\JHpoemtitle|.
+% found, in the manner of |\JHpoemtitle|.\end{sloppypar}
%
% \DescribeMacro{\centertitles}
% Issuing |\centertitles| moves the margins in on both sides by the length
@@ -4559,36 +4577,36 @@
\setlength{\contentspoemsubsectiontitleindentamount}{\contentsindentthreeamount}
\newcommand{\contentspoemsubsectiontitleindent}{\hspace{\contentsindentthreeamount}}
\newlength{\contentssequencetitleindentamount}
-\setlength{\contentssequencetitleindentamount}{0pt}
+\setlength{\contentssequencetitleindentamount}{\contentsindentoneamount} %313
\newcommand{\contentssequencetitleindent}{\hspace{\contentssequencetitleindentamount}}
%\newcommand{\contentssequencetitleindent}{\relax}
\newlength{\contentssequencetitlesecondlineindentamount}
-\setlength{\contentssequencetitlesecondlineindentamount}{0pt}
+\setlength{\contentssequencetitlesecondlineindentamount}{\contentsindentoneamount} %313
\newcommand{\contentssequencetitlesecondlineindent}{\hspace{\contentssequencetitlesecondlineindentamount}}
%\newcommand{\contentssequencetitlesecondlineindent}{\hspace{\relax}}
\newlength{\contentssequencesubtitleindentamount}
-\setlength{\contentssequencesubtitleindentamount}{\contentsindentoneamount}
+\setlength{\contentssequencesubtitleindentamount}{\contentsindenttwoamount} %313
\newcommand{\contentssequencesubtitleindent}{\hspace{\contentssequencesubtitleindentamount}}
\newlength{\contentssequencesubtitlesecondlineindentamount}
-\setlength{\contentssequencesubtitlesecondlineindentamount}{\contentsindentoneamount}
+\setlength{\contentssequencesubtitlesecondlineindentamount}{\contentsindenttwoamount} %313
\newcommand{\contentssequencesubtitlesecondlineindent}{\hspace{\contentssequencesubtitlesecondlineindentamount}}
\newlength{\contentssequencesectiontitleindentamount}
-\setlength{\contentssequencesectiontitleindentamount}{\contentsindentoneamount}
+\setlength{\contentssequencesectiontitleindentamount}{\contentsindenttwoamount} %313
\newcommand{\contentssequencesectiontitleindent}{\hspace{\contentssequencesectiontitleindentamount}}
\newlength{\contentssequencesectiontitlesecondlineindentamount}
-\setlength{\contentssequencesectiontitlesecondlineindentamount}{\contentsindentoneamount}
+\setlength{\contentssequencesectiontitlesecondlineindentamount}{\contentsindenttwoamount} %313
\newcommand{\contentssequencesectiontitlesecondlineindent}{\hspace{\contentssequencesectiontitlesecondlineindentamount}}
\newlength{\contentssequencesectionsubtitleindentamount}
-\setlength{\contentssequencesectionsubtitleindentamount}{\contentsindenttwoamount}
+\setlength{\contentssequencesectionsubtitleindentamount}{\contentsindentthreeamount} %313
\newcommand{\contentssequencesectionsubtitleindent}{\hspace{\contentssequencesectionsubtitleindentamount}}
\newlength{\contentssequencesectionsubtitlesecondlineindentamount}
-\setlength{\contentssequencesectionsubtitlesecondlineindentamount}{\contentsindenttwoamount}
+\setlength{\contentssequencesectionsubtitlesecondlineindentamount}{\contentsindentthreeamount}%313
\newcommand{\contentssequencesectionsubtitlesecondlineindent}{\hspace{\contentssequencesectionsubtitlesecondlineindentamount}}
\newlength{\contentssequencesubsectiontitleindentamount}
-\setlength{\contentssequencesubsectiontitleindentamount}{\contentsindentoneamount}
+\setlength{\contentssequencesubsectiontitleindentamount}{\contentsindentthreeamount}
\newcommand{\contentssequencesubsectiontitleindent}{\hspace{\contentssequencesubsectiontitleindentamount}}
\newlength{\contentssequencesubsubsectiontitleindentamount}
-\setlength{\contentssequencesubsubsectiontitleindentamount}{\contentsindentthreeamount}
+\setlength{\contentssequencesubsubsectiontitleindentamount}{\contentsindentfouramount}
\newcommand{\contentssequencesubsubsectiontitleindent}{\hspace{\contentssequencesubsubsectiontitleindentamount}}
@@ -6381,6 +6399,20 @@
%\m@ken@teholder{#1}%
%\setlength{\titleentryoverrun}{\z@}}
%
+%%% special version for subtitles
+\newcommand{\set@p@emsubtitle}[6]{\iftitlesatleftversemargin%
+{\begin{pmclverse}\addtolength{\leftmargin}{-\leftmargini}{#2 #3 #4 #1 #5} \end{pmclverse}}%
+\else%
+\setlength{\titleentryoverrun}{#6}%
+{#2}%
+{#3 \begin{titleentryenvironment}%
+{{\ifnormaltitleindentation #4 #1%
+\else \ifcentertitleson \begin{center} #1 \end{center} \else #1\fi\fi}}%
+\end{titleentryenvironment}}%
+{#5}%
+%\m@kep@emlabel
+%\m@ken@teholder{#1}%
+\setlength{\titleentryoverrun}{\z@}\fi}
\newcommand{\setcontentsleaders}[1]{%
\def\contentsleaders{#1\nobreak%
}}
@@ -6440,7 +6472,7 @@
\t@xtnotesinfo{#1}%
}
\newcommand{\poemtitlebaretitle}[1]{%
-\set@p@emtitle{#1}{\poemtitlepenalty}{\poemtitlefont}%
+\set@p@emsubtitle{#1}{\poemtitlepenalty}{\poemtitlefont}%
{\poemtitleindent}{\nobreak\par\nobreak\afterpoemtitleskip\nobreak}{\z@}%
}
\newcommand{\poemtitleonlycontents}[1]{%
@@ -6684,34 +6716,34 @@
\restoresinglelinesettings
}
\newcommand{\sequencesubtitle}[1]{
-\set@p@emtitle{#1}{\par\nobreak}{\sequencetitlefont}
+\set@p@emsubtitle{#1}{\par\nobreak}{\sequencetitlefont}
{\sequencesubtitleindent}{\nobreak\par\aftersequencetitleskip\nobreak}{\z@}
\c@ntentsinfo{#1}{\contentssequencesubtitleindent}{\contentssequencetitlefont}
{\contentssequencesubtitleindentamount}
-\t@xtnotesinfo{#1}
+%\t@xtnotesinfo{#1}
}
\newcommand{\sequencesubtitlefirstline}[1]{\firstlinesettings
-\set@p@emtitle{#1}{\par\nobreak}{\sequencetitlefont}
+\set@p@emsubtitle{#1}{\par\nobreak}{\sequencetitlefont}
{\sequencesubtitleindent}{\nobreak\par\aftersequencetitleskip\nobreak}{\z@}
\c@ntentsinfo{#1}{\contentsindenttwo}{\contentssequencetitlefont}
{\contentsindentthreeamount}
-\t@xtnotesinfo{#1}
+%\t@xtnotesinfo{#1}
\restoresinglelinesettings
}
\newcommand{\sequencesubtitlemiddleline}[1]{\middlelinesettings
-\set@p@emtitle{#1}{\par\nobreak}{\sequencetitlefont}
+\set@p@emsubtitle{#1}{\par\nobreak}{\sequencetitlefont}
{\sequencesubtitlesecondlineindent}{\nobreak\par\aftersequencetitleskip\nobreak}{\z@}
\c@ntentsinfo{#1}{\contentssequencesubtitlesecondlineindent}{\contentssequencetitlefont}
{\contentssequencesubtitlesecondlineindentamount}
-\t@xtnotesinfo{#1}
+%\t@xtnotesinfo{#1}
\restoresinglelinesettings
}
\newcommand{\sequencesubtitlelastline}[1]{\lastlinesettings
-\set@p@emtitle{#1}{\par\nobreak}{\sequencetitlefont}
+\set@p@emsubtitle{#1}{\par\nobreak}{\sequencetitlefont}
{\sequencesubtitlesecondlineindent}{\nobreak\par\aftersequencetitleskip\nobreak}{\z@}
\c@ntentsinfo{#1}{\contentssequencesubtitlesecondlineindent}{\contentssequencetitlefont}
{\contentssequencesubtitlesecondlineindentamount}
-\t@xtnotesinfo{#1}
+%\t@xtnotesinfo{#1}
\restoresinglelinesettings
}
% \end{macrocode}
@@ -6774,7 +6806,7 @@
\set@p@emtitle{#1}{\multilinetitlepenalty}{\poemtitlefont}
{\sequencesectiontitleindent}{\nobreak\par\nobreak}{\sequencesectiontitleindentamount}
\c@ntentsinfo{#1}{\contentssequencesectiontitleindent}{\contentspoemtitlefont}
-{\contentssequencesectiontitleindent}
+{\contentssequencesectiontitleindentamount}
\t@xtnotesinfo{#1}
\restoresinglelinesettings
}
@@ -6854,25 +6886,25 @@
% \newcommand{\sequencesectionsubtitle}[1]{{\subsectiontitlefont \hbox{\titleindent #1}}
% \nobreak\par\nobreak\afterpoemtitleskip\nobreak
% }
-\newcommand{\sequencesectionsubtitle}[1]{\set@p@emtitle{#1}{\par\nobreak\afterpoemtitleskip}
+\newcommand{\sequencesectionsubtitle}[1]{\set@p@emsubtitle{#1}{\par\nobreak\afterpoemtitleskip}
{\subsectiontitlefont}{\sequencesectionsubtitleindent}{\nobreak\par\nobreak\afterpoemtitleskip\nobreak}{\sequencesectionsubtitleindentamount}
}
\newcommand{\sequencesectionsubtitlefirstline}[1]{\firstlinesettings
-\set@p@emtitle{#1}{\par\nobreak\afterpoemtitleskip}
+\set@p@emsubtitle{#1}{\par\nobreak\afterpoemtitleskip}
{\subsectiontitlefont}{\sequencesectionsubtitleindent}{\nobreak\par\nobreak\afterpoemtitleskip\nobreak}{\sequencesectionsubtitleindentamount}
\restoresinglelinesettings
}
\newcommand{\sequencesectionsubtitlemiddleline}[1]{\middlelinesettings
-\set@p@emtitle{#1}{\par\nobreak\afterpoemtitleskip}
+\set@p@emsubtitle{#1}{\par\nobreak\afterpoemtitleskip}
{\subsectiontitlefont}{\sequencesectionsubtitleindent}{\nobreak\par\nobreak\afterpoemtitleskip\nobreak}{\sequencesectionsubtitleindentamount}
\restoresinglelinesettings
}
\newcommand{\sequencesectionsubtitlelastline}[1]{\lastlinesettings
-\set@p@emtitle{#1}{\par\nobreak\afterpoemtitleskip}
+\set@p@emsubtitle{#1}{\par\nobreak\afterpoemtitleskip}
{\subsectiontitlefont}{\sequencesectionsubtitleindent}{\nobreak\par\nobreak\afterpoemtitleskip\nobreak}{\sequencesectionsubtitleindentamount}
\restoresinglelinesettings
}
-\newcommand{\poemsubtitle}[1]{\set@p@emtitle{#1}{\par\nobreak\afterpoemtitleskip}
+\newcommand{\poemsubtitle}[1]{\set@p@emsubtitle{#1}{\par\nobreak\afterpoemtitleskip}
{\subsectiontitlefont}{\poemsubtitleindent}{\nobreak\par\nobreak\afterpoemtitleskip\nobreak}{\titleindentamount}
}
% \end{macrocode}
@@ -6969,11 +7001,11 @@
}
\newcommand{\sequencesubsubsectiontitle}[1]{
\set@p@emtitle{#1}{\poemtitlepenalty}{\subsectiontitlefont}
-{\sequencesubsubsectiontitleindent}
+{\sequencesubsubsectiontitleindent}
{\nobreak\par\nobreak\afterpoemtitleskip\nobreak}
{\sequencesubsubsectiontitleindentamount}
-\c@ntentsinfo{#1}{\contentssequencesubsubsectiontitleindent}{\contentspoemtitlefont}
-{\contentssequencesubsubsectiontitleindentmount}
+%\c@ntentsinfo{#1}{\contentssequencesubsubsectiontitleindent}{\contentspoemtitlefont}
+%{\contentssequencesubsectiontitleindentmount} % 313
\t@xtnotesinfo{#1}
}
\newcommand{\sequencesubsubsectiontitlenocontents}[1]{
@@ -7038,7 +7070,17 @@
\m@kep@emlabel%
\m@ken@teholder{#1}%
\setlength{\titleentryoverrun}{\z@}}
-
+%% subtitle version
+\newcommand{\set@margp@emsubtitle}[7]{\setlength{\titleentryoverrun}{#6}%
+{#2}%
+{#3 \begin{titleentryenvironment}%
+{\ifcentertitleson\begin{center}#4 #1 #7\end{center}\else #4 #1
+#7\fi}\end{titleentryenvironment}}%
+{#5}%
+%\m@kep@emlabel%
+%\m@ken@teholder{#1}%
+\setlength{\titleentryoverrun}{\z@}}
+% user version
\newcommand{\setmargpoemtitle}[2]{%
\set@margp@emtitle{#1}{\poemtitlepenalty}{\poemtitlefont}%
{\sequencetitleindent}{\nobreak\par\nobreak\afterpoemtitleskip\nobreak}{\z@}{#2}%
@@ -7137,7 +7179,7 @@
\sources{\label{#2}}%
}
\newcommand{\JHsequencesectionsubtitle}[2]{%
-\set@margp@emtitle{#1}{\par\nobreak}{\subsectiontitlefont}%
+\set@margp@emsubtitle{#1}{\par\nobreak}{\subsectiontitlefont}%
{\titleindent}{\nobreak\par\nobreak\afterpoemtitleskip\nobreak}%
{\titleindentamount}{\JHlabel{#2}}%
\sources{\label{#2}}%
diff --git a/macros/latex/contrib/poemscol/poemscol.pdf b/macros/latex/contrib/poemscol/poemscol.pdf
index 4b9df36cbd..9a353d345c 100644
--- a/macros/latex/contrib/poemscol/poemscol.pdf
+++ b/macros/latex/contrib/poemscol/poemscol.pdf
Binary files differ
diff --git a/macros/latex/contrib/tcolorbox/CHANGES b/macros/latex/contrib/tcolorbox/CHANGES
index 721d974d1e..4775a12354 100644
--- a/macros/latex/contrib/tcolorbox/CHANGES
+++ b/macros/latex/contrib/tcolorbox/CHANGES
@@ -1,4 +1,4 @@
-%% The LaTeX package tcolorbox - version 4.20 (2019/03/02)
+%% The LaTeX package tcolorbox - version 4.21 (2019/09/19)
%%
%% -------------------------------------------------------------------------------------------
%% Copyright (c) 2006-2019 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
@@ -1084,3 +1084,25 @@ version 4.20 (2019/03/02)
* new options: 'beamer hidden', 'beamer alerted', 'hide', 'alert'
* option 'only' moved from package to skins library
- new documentation section '13 Beamer Support'
+
+version 4.21 (2019/09/19)
+- bug fix (#71): 'shield externalize' should be effective on all tcolorbox layers
+- bug fix (#76): 'spread inwards', 'spread outwards', 'spread sidewards' gave
+ wrong results for some document geometry settings
+- new options (#75): 'tabulars', 'tabulars*'
+- library 'extras':
+ * bug fix: all 'extras ...' options from library 'hooks' took code instead of options
+ * new options (#73): 'minted options app', 'minted options pre',
+ 'listing options app', 'listing options pre'
+- library 'xparse':
+ * bug fix: options 'IfNoValueTF', 'IfValueTF', 'IfBooleanTF' failed
+ to recognize arguments in some code line breaks situations
+- library 'documentation':
+ TikZ path operation documentation (#65):
+ * new color name: 'Fade'
+ * new macros and environments: '\colFade', 'docPathOperation',
+ '\refPathOperation', '\refPathOperation*'
+ * new options: 'color fade', 'color path', 'doc label', 'doc head path',
+ 'before doc body path', 'after doc body path'
+ * new language string: 'path', 'paths'
+- documentation: checkerbox for opacity examples was too dark
diff --git a/macros/latex/contrib/tcolorbox/README b/macros/latex/contrib/tcolorbox/README
index 67e8c16547..ad3735e664 100644
--- a/macros/latex/contrib/tcolorbox/README
+++ b/macros/latex/contrib/tcolorbox/README
@@ -1,4 +1,4 @@
-%% The LaTeX package tcolorbox - version 4.20 (2019/03/02)
+%% The LaTeX package tcolorbox - version 4.21 (2019/09/19)
%%
%% -------------------------------------------------------------------------------------------
%% Copyright (c) 2006-2019 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
diff --git a/macros/latex/contrib/tcolorbox/tcbbreakable.code.tex b/macros/latex/contrib/tcolorbox/tcbbreakable.code.tex
index 69f5899e5c..224eed6ed6 100644
--- a/macros/latex/contrib/tcolorbox/tcbbreakable.code.tex
+++ b/macros/latex/contrib/tcolorbox/tcbbreakable.code.tex
@@ -1,4 +1,4 @@
-%% The LaTeX package tcolorbox - version 4.20 (2019/03/02)
+%% The LaTeX package tcolorbox - version 4.21 (2019/09/19)
%% tcbbreakable.code.tex: Code for breakable colorboxes
%%
%% -------------------------------------------------------------------------------------------
@@ -17,7 +17,7 @@
%%
%% This work consists of all files listed in README
%%
-\tcb@set@library@version{4.20}
+\tcb@set@library@version{4.21}
\let\tcb@parboxrestore@true=\tcb@parboxrestore
\let\tcb@parboxrestore@false\tcb@parbox@false@settings
diff --git a/macros/latex/contrib/tcolorbox/tcbdocumentation.code.tex b/macros/latex/contrib/tcolorbox/tcbdocumentation.code.tex
index ecd2d24dd2..a9475d0f86 100644
--- a/macros/latex/contrib/tcolorbox/tcbdocumentation.code.tex
+++ b/macros/latex/contrib/tcolorbox/tcbdocumentation.code.tex
@@ -1,4 +1,4 @@
-%% The LaTeX package tcolorbox - version 4.20 (2019/03/02)
+%% The LaTeX package tcolorbox - version 4.21 (2019/09/19)
%% tcbdocumentation.code.tex: Code for LaTeX documentations
%%
%% -------------------------------------------------------------------------------------------
@@ -17,7 +17,7 @@
%%
%% This work consists of all files listed in README
%%
-\tcb@set@library@version{4.20}
+\tcb@set@library@version{4.21}
\tcbuselibrary{listings,skins,xparse,external}
@@ -33,9 +33,11 @@
\definecolor{ExampleFrame}{rgb}{0.628,0.705,0.942}
\definecolor{ExampleBack}{rgb}{0.963,0.971,0.994}
\definecolor{Hyperlink}{rgb}{0.281,0.275,0.485}
+\definecolor{Fade}{rgb}{0.5,0.5,0.5}
\def\colDef#1{\textcolor{\kvtcb@col@command}{#1}}
\def\colOpt#1{\textcolor{\kvtcb@col@opt}{#1}}
+\def\colFade#1{\textcolor{\kvtcb@col@fade}{#1}}
\lstdefinestyle{tcbdocumentation}{language={[LaTeX]TeX},
aboveskip={0\p@ \@plus 6\p@},
@@ -105,6 +107,8 @@
length/.store in=\kvtcb@text@length,
lengths/.store in=\kvtcb@text@lengths,
new/.store in=\kvtcb@text@new,
+ path/.store in=\kvtcb@text@path,
+ paths/.store in=\kvtcb@text@paths,
pageshort/.store in=\kvtcb@text@pageshort,
updated/.store in=\kvtcb@text@updated,
value/.store in=\kvtcb@text@value,
@@ -125,8 +129,10 @@
color counter/.store in=\kvtcb@col@counter,
color length/.store in=\kvtcb@col@length,
color color/.store in=\kvtcb@col@color,
+ color fade/.store in=\kvtcb@col@fade,
+ color path/.store in=\kvtcb@col@path,
color definition/.style={color command={#1},color environment={#1},color key={#1},
- color value={#1},color color={#1},color counter={#1},color length={#1}},
+ color value={#1},color color={#1},color counter={#1},color length={#1}, color path={#1}},
color option/.store in=\kvtcb@col@opt,
color hyperlink/.store in=\kvtcb@colhyper,
color frame/.store in=\kvtcb@colhyper,
@@ -145,15 +151,22 @@
doc head command/.style={doc@head@command/.style={#1}},
doc head environment/.style={doc@head@environment/.style={#1}},
doc head key/.style={doc@head@key/.style={#1}},
- doc head/.style={doc head command={#1},doc head environment={#1},doc head key={#1}},
+ doc head path/.style={doc@head@path/.style={#1}},
+ doc head/.style={doc head command={#1},doc head environment={#1},doc head key={#1},
+ doc head path={#1}},
+ doc label/.store in=\kvtcb@doc@label,
before doc body command/.store in=\kvtcb@doc@body@command@before,
after doc body command/.store in=\kvtcb@doc@body@command@after,
before doc body environment/.store in=\kvtcb@doc@body@environment@before,
after doc body environment/.store in=\kvtcb@doc@body@environment@after,
before doc body key/.store in=\kvtcb@doc@body@key@before,
after doc body key/.store in=\kvtcb@doc@body@key@after,
- before doc body/.style={before doc body command={#1},before doc body environment={#1},before doc body key={#1}},
- after doc body/.style={after doc body command={#1},after doc body environment={#1},after doc body key={#1}},
+ before doc body path/.store in=\kvtcb@doc@body@path@before,
+ after doc body path/.store in=\kvtcb@doc@body@path@after,
+ before doc body/.style={before doc body command={#1},before doc body environment={#1},
+ before doc body key={#1},before doc body path={#1}},
+ after doc body/.style={after doc body command={#1},after doc body environment={#1}
+ ,after doc body key={#1},after doc body path={#1}},
doc description/.store in=\kvtcb@doc@description,%
doc into index/.is if=tcb@doc@toindex,%
doc updated/.style={before upper={\tcbdocmarginnote{\tcbdocupdated{#1}}}},
@@ -182,6 +195,7 @@
counter=counter,counters=Counters,
environment content=environment content,
environment=environment,environments=Environments,
+ path=path operation,paths=Path operations,
index=Index,
key=key,keys=Keys,
length=length,lengths=Lengths,
@@ -259,6 +273,10 @@
\newrobustcmd{\tcbIndexPrintKeyC}[1]{\tcb@Index@Print@C{#1}{\kvtcb@col@key}}
\def\tcb@Print@Key#1{\textcolor{\kvtcb@col@key}{\tcb@doc@bfseries\tcb@scantokens{#1}}}
+\newrobustcmd{\tcbIndexPrintPathCA}[1]{\tcb@Index@Print@CA{#1}{\kvtcb@col@path}{\kvtcb@text@path}}
+\newrobustcmd{\tcbIndexPrintPathC}[1]{\tcb@Index@Print@C{#1}{\kvtcb@col@path}}
+\def\tcb@Print@Path#1{\textcolor{\kvtcb@col@path}{\tcb@doc@bfseries\tcb@scantokens{#1}}}
+
\newrobustcmd{\tcbIndexPrintValCA}[1]{\tcb@Index@Print@CA{#1}{\kvtcb@col@value}{\kvtcb@text@value}}
\newrobustcmd{\tcbIndexPrintValC}[1]{\tcb@Index@Print@C{#1}{\kvtcb@col@value}}
\def\tcb@Print@Val#1{\textcolor{\kvtcb@col@value}{\tcb@doc@bfseries\tcb@scantokens{#1}}}
@@ -279,6 +297,7 @@
\def\tcb@index@Env#1{\iftcb@doc@toindex\kvtcb@index@command{#1\idx@actual\tcbIndexPrintEnvCA{#1}}\kvtcb@index@command{\kvtcb@text@envs\idx@level#1\idx@actual\tcbIndexPrintEnvC{#1}}\fi}
\def\tcb@index@Key#1{\iftcb@doc@toindex\kvtcb@index@command{#1\idx@actual\tcbIndexPrintKeyCA{#1}}\kvtcb@index@command{\kvtcb@text@keys\idx@level#1\idx@actual\tcbIndexPrintKeyC{#1}}\fi}%
\def\tcb@index@KeyPath#1#2{\iftcb@doc@toindex\kvtcb@index@command{#2\idx@actual\tcbIndexPrintKeyCA{#2}}\kvtcb@index@command{\kvtcb@text@keys\idx@level#1\idx@actual\tcbIndexPrintKeyC{/#1/}\idx@level#2\idx@actual\tcbIndexPrintKeyC{#2}}\fi}%
+\def\tcb@index@Path#1{\iftcb@doc@toindex\kvtcb@index@command{#1\idx@actual\tcbIndexPrintPathCA{#1}}\kvtcb@index@command{\kvtcb@text@paths\idx@level#1\idx@actual\tcbIndexPrintPathC{#1}}\fi}
\def\tcb@index@Val#1{\iftcb@doc@toindex\kvtcb@index@command{#1\idx@actual\tcbIndexPrintValCA{#1}}\kvtcb@index@command{\kvtcb@text@values\idx@level#1\idx@actual\tcbIndexPrintValC{#1}}\fi}
\def\tcb@index@Col#1{\iftcb@doc@toindex\kvtcb@index@command{#1\idx@actual\tcbIndexPrintColCA{#1}}\kvtcb@index@command{\kvtcb@text@colors\idx@level#1\idx@actual\tcbIndexPrintColC{#1}}\fi}
\def\tcb@index@Count#1{\iftcb@doc@toindex\kvtcb@index@command{#1\idx@actual\tcbIndexPrintCountCA{#1}}\kvtcb@index@command{\kvtcb@text@counters\idx@level#1\idx@actual\tcbIndexPrintCountC{#1}}\fi}
@@ -311,20 +330,20 @@
enlarge bottom by=-0.2\baselineskip,#1}
% main documentation environments
-\newenvironment{docCommand}[3][]{\tcbset{#1}%
+\newenvironment{docCommand}[3][]{\tcbset{doc label={#2},#1}%
\begin{tcb@manual@entry}%
\begin{tcb@doc@head}{doc@head@command}%
- \tcb@Print@Com{#2}\tcb@index@Com{#2}\protected@edef\@currentlabel{\noexpand\tcb@cs{#2}}\label{com:#2}{\ttfamily #3}%
+ \tcb@Print@Com{#2}\tcb@index@Com{#2}\protected@edef\@currentlabel{\noexpand\tcb@cs{#2}}\label{com:\kvtcb@doc@label}{\ttfamily #3}%
\tcb@doc@do@description%
\end{tcb@doc@head}\nobreak\tcbset{before upper=}\kvtcb@doc@body@command@before\ignorespaces}%
{\ifvmode\else\unskip\fi\kvtcb@doc@body@command@after\end{tcb@manual@entry}}
\newenvironment{docCommand*}{\bgroup\tcb@doc@toindexfalse\begin{docCommand}}{\end{docCommand}\egroup}
-\newenvironment{docEnvironment}[3][]{\tcbset{#1}%
+\newenvironment{docEnvironment}[3][]{\tcbset{doc label={#2},#1}%
\begin{tcb@manual@entry}%
\begin{tcb@doc@head}{doc@head@environment}%
- \strut\cs{begin}\brackets{\tcb@Print@Env{#2}}\tcb@index@Env{#2}\protected@edef\@currentlabel{#2}\label{env:#2}{\ttfamily #3}\par%
+ \strut\cs{begin}\brackets{\tcb@Print@Env{#2}}\tcb@index@Env{#2}\protected@edef\@currentlabel{#2}\label{env:\kvtcb@doc@label}{\ttfamily #3}\par%
\strut~~\meta{\kvtcb@text@envcontent}\par%
\strut\cs{end}\brackets{\tcb@Print@Env{#2}}%
\tcb@doc@do@description%
@@ -333,14 +352,14 @@
\newenvironment{docEnvironment*}{\bgroup\tcb@doc@toindexfalse\begin{docEnvironment}}{\end{docEnvironment}\egroup}
-\NewDocumentEnvironment{docKey}{ O{} +O{} m m +m }{\tcbset{#2,doc description={#5}}%
+\NewDocumentEnvironment{docKey}{ O{} +O{} m m +m }{\tcbset{doc label={#3},#2,doc description={#5}}%
\begin{tcb@manual@entry}%
\begin{tcb@doc@head}{doc@head@key}%
\ifblank{#1}{%
- \tcb@Print@Key{#3}\tcb@index@Key{#3}\protected@edef\@currentlabel{#3}\label{key:#3}{\ttfamily #4}%
+ \tcb@Print@Key{#3}\tcb@index@Key{#3}\protected@edef\@currentlabel{#3}\label{key:\kvtcb@doc@label}{\ttfamily #4}%
}{%
\tcb@Print@Key{/#1/#3}%
- \tcb@index@KeyPath{#1}{#3}\protected@edef\@currentlabel{/#1/#3}\label{key:/#1/#3}{\ttfamily #4}%
+ \tcb@index@KeyPath{#1}{#3}\protected@edef\@currentlabel{/#1/#3}\label{key:/#1/\kvtcb@doc@label}{\ttfamily #4}%
}%
\tcb@doc@do@description%
\end{tcb@doc@head}\nobreak\tcbset{before upper=}\kvtcb@doc@body@key@before\ignorespaces}%
@@ -356,6 +375,18 @@
\newenvironment{#1*}{\bgroup\tcb@doc@toindexfalse\begin{#1}}{\end{#1}\egroup}%
}
+\newenvironment{docPathOperation}[3][]{\tcbset{doc label={#2},#1}%
+ \begin{tcb@manual@entry}%
+ \begin{tcb@doc@head}{doc@head@path}%
+ \colFade{\tcb@cs{path ...}}\
+ \tcb@Print@Path{#2}\tcb@index@Path{#2}\protected@edef\@currentlabel{#2}\label{path:\kvtcb@doc@label}{\ttfamily #3}%
+ \ \colFade{\tcb@scantokens{...;}}
+ \tcb@doc@do@description%
+ \end{tcb@doc@head}\nobreak\tcbset{before upper=}\kvtcb@doc@body@path@before\ignorespaces}%
+ {\ifvmode\else\unskip\fi\kvtcb@doc@body@path@after\end{tcb@manual@entry}}
+
+\newenvironment{docPathOperation*}{\bgroup\tcb@doc@toindexfalse\begin{docPathOperation}}{\end{docPathOperation}\egroup}
+
\DeclareDocumentCommand\docAuxCommand{sm}{%
\tcb@Print@Com{#2}%
\IfBooleanTF{#1}{}{\tcb@index@Com{#2}}%
@@ -408,6 +439,7 @@
\def\refCom{\tcb@ref@doc{com}}
\def\refEnv{\tcb@ref@doc{env}}
\def\refKey{\tcb@ref@doc{key}}
+\def\refPathOperation{\tcb@ref@doc{path}}
\def\refAux#1{\textcolor{\kvtcb@colhyper}{\tcb@scantokens{#1}}}
\def\refAuxcs#1{\textcolor{\kvtcb@colhyper}{\tcb@cs{#1}}}
@@ -491,6 +523,7 @@
color option=Option,
color definition=Definition,
color hyperlink=Hyperlink,
+ color fade=Fade,
index command=\index,%
index format=pgf,
index default settings,
diff --git a/macros/latex/contrib/tcolorbox/tcbexternal.code.tex b/macros/latex/contrib/tcolorbox/tcbexternal.code.tex
index 0f3f68546f..f16893e3c2 100644
--- a/macros/latex/contrib/tcolorbox/tcbexternal.code.tex
+++ b/macros/latex/contrib/tcolorbox/tcbexternal.code.tex
@@ -1,4 +1,4 @@
-%% The LaTeX package tcolorbox - version 4.20 (2019/03/02)
+%% The LaTeX package tcolorbox - version 4.21 (2019/09/19)
%% tcbexternal.code.tex: Code for externalization
%%
%% -------------------------------------------------------------------------------------------
@@ -17,7 +17,7 @@
%%
%% This work consists of all files listed in README
%%
-\tcb@set@library@version{4.20}
+\tcb@set@library@version{4.21}
\tcbuselibrary{pro@cessing}
diff --git a/macros/latex/contrib/tcolorbox/tcbfitting.code.tex b/macros/latex/contrib/tcolorbox/tcbfitting.code.tex
index 7e32bdec72..be49d57bab 100644
--- a/macros/latex/contrib/tcolorbox/tcbfitting.code.tex
+++ b/macros/latex/contrib/tcolorbox/tcbfitting.code.tex
@@ -1,4 +1,4 @@
-%% The LaTeX package tcolorbox - version 4.20 (2019/03/02)
+%% The LaTeX package tcolorbox - version 4.21 (2019/09/19)
%% tcbfitting.code.tex: Code for fit boxes
%%
%% -------------------------------------------------------------------------------------------
@@ -18,7 +18,7 @@
%% This work consists of all files listed in README
%%
%\makeatletter
-\tcb@set@library@version{4.20}
+\tcb@set@library@version{4.21}
\newdimen\tcbfitdim
\newdimen\tcb@lowerfitdim
diff --git a/macros/latex/contrib/tcolorbox/tcbhooks.code.tex b/macros/latex/contrib/tcolorbox/tcbhooks.code.tex
index d0e0acae72..db0a3b5b2a 100644
--- a/macros/latex/contrib/tcolorbox/tcbhooks.code.tex
+++ b/macros/latex/contrib/tcolorbox/tcbhooks.code.tex
@@ -1,4 +1,4 @@
-%% The LaTeX package tcolorbox - version 4.20 (2019/03/02)
+%% The LaTeX package tcolorbox - version 4.21 (2019/09/19)
%% tcbhooks.code.tex: Code for adding hooks
%%
%% -------------------------------------------------------------------------------------------
@@ -18,7 +18,7 @@
%% This work consists of all files listed in README
%%
%\makeatletter
-\tcb@set@library@version{4.20}
+\tcb@set@library@version{4.21}
\tcbset{%
before upper app/.code={\appto\kvtcb@before@upper{#1}},%
@@ -74,10 +74,10 @@
title code app/.code={\appto\tcb@title@code{#1}},%
title code pre/.code={\preto\tcb@title@code{#1}},%
%
- extras unbroken pre/.code={\preto\tcb@extras@unbroken{#1}},%
- extras first pre/.code={\preto\tcb@extras@first{#1}},%
- extras middle pre/.code={\preto\tcb@extras@middle{#1}},%
- extras last pre/.code={\preto\tcb@extras@last{#1}},%
+ extras unbroken pre/.code={\preto\tcb@extras@unbroken{\tcbset{#1}}},%
+ extras first pre/.code={\preto\tcb@extras@first{\tcbset{#1}}},%
+ extras middle pre/.code={\preto\tcb@extras@middle{\tcbset{#1}}},%
+ extras last pre/.code={\preto\tcb@extras@last{\tcbset{#1}}},%
extras pre/.style={extras unbroken pre={#1},extras first pre={#1},extras middle pre={#1},extras last pre={#1}},%
extras broken pre/.style={extras first pre={#1},extras middle pre={#1},extras last pre={#1}},%
extras unbroken and first pre/.style={extras unbroken pre={#1},extras first pre={#1}},%
@@ -119,5 +119,10 @@
watermark text pre/.style={overlay pre={\tcb@drawspec@watermark@text{#1}}},
watermark text app on/.style args={#1 is #2}{overlay #1 app={\tcb@drawspec@watermark@text{#2}}},
watermark text pre on/.style args={#1 is #2}{overlay #1 pre={\tcb@drawspec@watermark@text{#2}}},
+ %
+ minted options app/.code={\appto\kvtcb@minted@options{,#1}},
+ minted options pre/.code={\preto\kvtcb@minted@options{#1,}},
+ listing options app/.code={\appto\kvtcb@listingoptions{,#1}},
+ listing options pre/.code={\preto\kvtcb@listingoptions{#1,}},
}
diff --git a/macros/latex/contrib/tcolorbox/tcblistings.code.tex b/macros/latex/contrib/tcolorbox/tcblistings.code.tex
index 418618ad6b..11de76ad0d 100644
--- a/macros/latex/contrib/tcolorbox/tcblistings.code.tex
+++ b/macros/latex/contrib/tcolorbox/tcblistings.code.tex
@@ -1,4 +1,4 @@
-%% The LaTeX package tcolorbox - version 4.20 (2019/03/02)
+%% The LaTeX package tcolorbox - version 4.21 (2019/09/19)
%% tcblistings.code.tex: Code for colorboxes with listings
%%
%% -------------------------------------------------------------------------------------------
@@ -18,7 +18,7 @@
%% This work consists of all files listed in README
%%
%\makeatletter
-\tcb@set@library@version{4.20}
+\tcb@set@library@version{4.21}
\RequirePackage{listings}[2007/02/22]
diff --git a/macros/latex/contrib/tcolorbox/tcblistingscore.code.tex b/macros/latex/contrib/tcolorbox/tcblistingscore.code.tex
index 2906d28c35..c70ac254ad 100644
--- a/macros/latex/contrib/tcolorbox/tcblistingscore.code.tex
+++ b/macros/latex/contrib/tcolorbox/tcblistingscore.code.tex
@@ -1,4 +1,4 @@
-%% The LaTeX package tcolorbox - version 4.20 (2019/03/02)
+%% The LaTeX package tcolorbox - version 4.21 (2019/09/19)
%% tcblistingscode.code.tex: Auxiliary code for colorboxes with listings
%%
%% -------------------------------------------------------------------------------------------
@@ -18,7 +18,7 @@
%% This work consists of all files listed in README
%%
%\makeatletter
-\tcb@set@library@version{4.20}
+\tcb@set@library@version{4.21}
\tcbuselibrary{pro@cessing}
diff --git a/macros/latex/contrib/tcolorbox/tcblistingsutf8.code.tex b/macros/latex/contrib/tcolorbox/tcblistingsutf8.code.tex
index 46720bc980..d65e96e069 100644
--- a/macros/latex/contrib/tcolorbox/tcblistingsutf8.code.tex
+++ b/macros/latex/contrib/tcolorbox/tcblistingsutf8.code.tex
@@ -1,4 +1,4 @@
-%% The LaTeX package tcolorbox - version 4.20 (2019/03/02)
+%% The LaTeX package tcolorbox - version 4.21 (2019/09/19)
%% tcblistingsutf8.code.tex: Code for colorboxes with listings in UTF-8
%%
%% -------------------------------------------------------------------------------------------
@@ -17,7 +17,7 @@
%%
%% This work consists of all files listed in README
%%
-\tcb@set@library@version{4.20}
+\tcb@set@library@version{4.21}
\RequirePackage{listingsutf8}[2011/11/10]
\tcbuselibrary{listings}
diff --git a/macros/latex/contrib/tcolorbox/tcbmagazine.code.tex b/macros/latex/contrib/tcolorbox/tcbmagazine.code.tex
index 75c4ef5e39..16a92a7431 100644
--- a/macros/latex/contrib/tcolorbox/tcbmagazine.code.tex
+++ b/macros/latex/contrib/tcolorbox/tcbmagazine.code.tex
@@ -1,4 +1,4 @@
-%% The LaTeX package tcolorbox - version 4.20 (2019/03/02)
+%% The LaTeX package tcolorbox - version 4.21 (2019/09/19)
%% tcbmagazine.code.tex: Code for box sets and magazine styles
%%
%% -------------------------------------------------------------------------------------------
@@ -17,7 +17,7 @@
%%
%% This work consists of all files listed in README
%%
-\tcb@set@library@version{4.20}
+\tcb@set@library@version{4.21}
\tcbuselibrary{breakable}
diff --git a/macros/latex/contrib/tcolorbox/tcbminted.code.tex b/macros/latex/contrib/tcolorbox/tcbminted.code.tex
index 220d7d82f7..a7de5a9990 100644
--- a/macros/latex/contrib/tcolorbox/tcbminted.code.tex
+++ b/macros/latex/contrib/tcolorbox/tcbminted.code.tex
@@ -1,4 +1,4 @@
-%% The LaTeX package tcolorbox - version 4.20 (2019/03/02)
+%% The LaTeX package tcolorbox - version 4.21 (2019/09/19)
%% tcbminted.code.tex: Code for colorboxes with listings
%%
%% -------------------------------------------------------------------------------------------
@@ -18,7 +18,7 @@
%% This work consists of all files listed in README
%%
%\makeatletter
-\tcb@set@library@version{4.20}
+\tcb@set@library@version{4.21}
\RequirePackage{minted}[2011/09/17]
diff --git a/macros/latex/contrib/tcolorbox/tcbposter.code.tex b/macros/latex/contrib/tcolorbox/tcbposter.code.tex
index 057e02b30f..de26989fae 100644
--- a/macros/latex/contrib/tcolorbox/tcbposter.code.tex
+++ b/macros/latex/contrib/tcolorbox/tcbposter.code.tex
@@ -1,4 +1,4 @@
-%% The LaTeX package tcolorbox - version 4.20 (2019/03/02)
+%% The LaTeX package tcolorbox - version 4.21 (2019/09/19)
%% tcbposter.code.tex: Code for posters
%%
%% -------------------------------------------------------------------------------------------
@@ -17,7 +17,7 @@
%%
%% This work consists of all files listed in README
%%
-\tcb@set@library@version{4.20}
+\tcb@set@library@version{4.21}
\tcbuselibrary{breakable,magazine,skins,fitting}
diff --git a/macros/latex/contrib/tcolorbox/tcbprocessing.code.tex b/macros/latex/contrib/tcolorbox/tcbprocessing.code.tex
index 773d095bc8..953c708d36 100644
--- a/macros/latex/contrib/tcolorbox/tcbprocessing.code.tex
+++ b/macros/latex/contrib/tcolorbox/tcbprocessing.code.tex
@@ -1,4 +1,4 @@
-%% The LaTeX package tcolorbox - version 4.20 (2019/03/02)
+%% The LaTeX package tcolorbox - version 4.21 (2019/09/19)
%% tcbprocessing.code.tex: Code for conditional processing
%%
%% -------------------------------------------------------------------------------------------
@@ -17,7 +17,7 @@
%%
%% This work consists of all files listed in README
%%
-\tcb@set@library@version{4.20}
+\tcb@set@library@version{4.21}
\RequirePackage{pdftexcmds}
\RequirePackage{shellesc}
diff --git a/macros/latex/contrib/tcolorbox/tcbraster.code.tex b/macros/latex/contrib/tcolorbox/tcbraster.code.tex
index aab39967d6..2ea8a91eb5 100644
--- a/macros/latex/contrib/tcolorbox/tcbraster.code.tex
+++ b/macros/latex/contrib/tcolorbox/tcbraster.code.tex
@@ -1,4 +1,4 @@
-%% The LaTeX package tcolorbox - version 4.20 (2019/03/02)
+%% The LaTeX package tcolorbox - version 4.21 (2019/09/19)
%% tcbskinsjigsaw.code.tex: Code for colorboxes with different skins
%%
%% -------------------------------------------------------------------------------------------
@@ -17,7 +17,7 @@
%%
%% This work consists of all files listed in README
%%
-\tcb@set@library@version{4.20}
+\tcb@set@library@version{4.21}
\newcounter{tcbrastercolumn}
\newcounter{tcbrasterrow}
diff --git a/macros/latex/contrib/tcolorbox/tcbskins.code.tex b/macros/latex/contrib/tcolorbox/tcbskins.code.tex
index b209a86e70..e530a07efd 100644
--- a/macros/latex/contrib/tcolorbox/tcbskins.code.tex
+++ b/macros/latex/contrib/tcolorbox/tcbskins.code.tex
@@ -1,4 +1,4 @@
-%% The LaTeX package tcolorbox - version 4.20 (2019/03/02)
+%% The LaTeX package tcolorbox - version 4.21 (2019/09/19)
%% tcbskins.code.tex: Code for colorboxes with different skins
%%
%% -------------------------------------------------------------------------------------------
@@ -17,7 +17,7 @@
%%
%% This work consists of all files listed in README
%%
-\tcb@set@library@version{4.20}
+\tcb@set@library@version{4.21}
\RequirePackage{tikz}[2010/10/13]
diff --git a/macros/latex/contrib/tcolorbox/tcbskinsjigsaw.code.tex b/macros/latex/contrib/tcolorbox/tcbskinsjigsaw.code.tex
index 0c2e5902d9..4fa98841d9 100644
--- a/macros/latex/contrib/tcolorbox/tcbskinsjigsaw.code.tex
+++ b/macros/latex/contrib/tcolorbox/tcbskinsjigsaw.code.tex
@@ -1,4 +1,4 @@
-%% The LaTeX package tcolorbox - version 4.20 (2019/03/02)
+%% The LaTeX package tcolorbox - version 4.21 (2019/09/19)
%% tcbskinsjigsaw.code.tex: Code for colorboxes with different skins
%%
%% -------------------------------------------------------------------------------------------
@@ -17,7 +17,7 @@
%%
%% This work consists of all files listed in README
%%
-\tcb@set@library@version{4.20}
+\tcb@set@library@version{4.21}
\tcbuselibrary{skins}
diff --git a/macros/latex/contrib/tcolorbox/tcbtheorems.code.tex b/macros/latex/contrib/tcolorbox/tcbtheorems.code.tex
index 06ce9c04a5..50a16801aa 100644
--- a/macros/latex/contrib/tcolorbox/tcbtheorems.code.tex
+++ b/macros/latex/contrib/tcolorbox/tcbtheorems.code.tex
@@ -1,4 +1,4 @@
-%% The LaTeX package tcolorbox - version 4.20 (2019/03/02)
+%% The LaTeX package tcolorbox - version 4.21 (2019/09/19)
%% tcbtheorems.code.tex: Code for theorems in colorboxes
%%
%% -------------------------------------------------------------------------------------------
@@ -18,7 +18,7 @@
%% This work consists of all files listed in README
%%
%\makeatletter
-\tcb@set@library@version{4.20}
+\tcb@set@library@version{4.21}
\RequirePackage{amsmath}
diff --git a/macros/latex/contrib/tcolorbox/tcbvignette.code.tex b/macros/latex/contrib/tcolorbox/tcbvignette.code.tex
index 0f494da1dd..05f7b2685b 100644
--- a/macros/latex/contrib/tcolorbox/tcbvignette.code.tex
+++ b/macros/latex/contrib/tcolorbox/tcbvignette.code.tex
@@ -1,4 +1,4 @@
-%% The LaTeX package tcolorbox - version 4.20 (2019/03/02)
+%% The LaTeX package tcolorbox - version 4.21 (2019/09/19)
%% tcbvignette.code.tex: Code for ornamental frames
%%
%% -------------------------------------------------------------------------------------------
@@ -17,7 +17,7 @@
%%
%% This work consists of all files listed in README
%%
-\tcb@set@library@version{4.20}
+\tcb@set@library@version{4.21}
\tcbuselibrary{skins}
diff --git a/macros/latex/contrib/tcolorbox/tcbxparse.code.tex b/macros/latex/contrib/tcolorbox/tcbxparse.code.tex
index be04cd8028..6126157d26 100644
--- a/macros/latex/contrib/tcolorbox/tcbxparse.code.tex
+++ b/macros/latex/contrib/tcolorbox/tcbxparse.code.tex
@@ -1,4 +1,4 @@
-%% The LaTeX package tcolorbox - version 4.20 (2019/03/02)
+%% The LaTeX package tcolorbox - version 4.21 (2019/09/19)
%% tcbxparse.code.tex: Code for xparse features
%%
%% -------------------------------------------------------------------------------------------
@@ -18,14 +18,14 @@
%% This work consists of all files listed in README
%%
%\makeatletter
-\tcb@set@library@version{4.20}
+\tcb@set@library@version{4.21}
\RequirePackage{xparse}[2013/12/31]
\tcbset{%
- IfNoValueTF/.code args={#1#2#3}{\IfNoValueTF{#1}{\pgfkeysalso{#2}}{\pgfkeysalso{#3}}},
- IfValueTF/.code args={#1#2#3}{\IfValueTF{#1}{\pgfkeysalso{#2}}{\pgfkeysalso{#3}}},
- IfBooleanTF/.code args={#1#2#3}{\IfBooleanTF{#1}{\pgfkeysalso{#2}}{\pgfkeysalso{#3}}},
+ IfNoValueTF/.code n args={3}{\IfNoValueTF{#1}{\pgfkeysalso{#2}}{\pgfkeysalso{#3}}},
+ IfValueTF/.code n args={3}{\IfValueTF{#1}{\pgfkeysalso{#2}}{\pgfkeysalso{#3}}},
+ IfBooleanTF/.code n args={3}{\IfBooleanTF{#1}{\pgfkeysalso{#2}}{\pgfkeysalso{#3}}},
verbatim/.style={fontupper=\ttfamily,nobeforeafter,tcbox raise base,top=0pt,bottom=0pt,left=1mm,right=1mm,boxrule=0.3mm}
}
diff --git a/macros/latex/contrib/tcolorbox/tcolorbox-example-poster.pdf b/macros/latex/contrib/tcolorbox/tcolorbox-example-poster.pdf
index 6745fadb2b..3e10c42360 100644
--- a/macros/latex/contrib/tcolorbox/tcolorbox-example-poster.pdf
+++ b/macros/latex/contrib/tcolorbox/tcolorbox-example-poster.pdf
Binary files differ
diff --git a/macros/latex/contrib/tcolorbox/tcolorbox-example-poster.tex b/macros/latex/contrib/tcolorbox/tcolorbox-example-poster.tex
index 4cd8461954..1f67a3c87b 100644
--- a/macros/latex/contrib/tcolorbox/tcolorbox-example-poster.tex
+++ b/macros/latex/contrib/tcolorbox/tcolorbox-example-poster.tex
@@ -1,4 +1,4 @@
-%% The LaTeX package tcolorbox - version 4.20 (2019/03/02)
+%% The LaTeX package tcolorbox - version 4.21 (2019/09/19)
%% tcolorbox-example-poster.tex: a poster example for tcolorbox
%%
%% -------------------------------------------------------------------------------------------
diff --git a/macros/latex/contrib/tcolorbox/tcolorbox-example.pdf b/macros/latex/contrib/tcolorbox/tcolorbox-example.pdf
index ea5dc03ad1..0e99b2a539 100644
--- a/macros/latex/contrib/tcolorbox/tcolorbox-example.pdf
+++ b/macros/latex/contrib/tcolorbox/tcolorbox-example.pdf
Binary files differ
diff --git a/macros/latex/contrib/tcolorbox/tcolorbox-example.tex b/macros/latex/contrib/tcolorbox/tcolorbox-example.tex
index 64bd2eaced..5ed9ba9a67 100644
--- a/macros/latex/contrib/tcolorbox/tcolorbox-example.tex
+++ b/macros/latex/contrib/tcolorbox/tcolorbox-example.tex
@@ -1,4 +1,4 @@
-%% The LaTeX package tcolorbox - version 4.20 (2019/03/02)
+%% The LaTeX package tcolorbox - version 4.21 (2019/09/19)
%% tcolorbox-example.tex: an example for tcolorbox
%%
%% -------------------------------------------------------------------------------------------
diff --git a/macros/latex/contrib/tcolorbox/tcolorbox-tutorial-poster.pdf b/macros/latex/contrib/tcolorbox/tcolorbox-tutorial-poster.pdf
index 67a36b97eb..b50b13514b 100644
--- a/macros/latex/contrib/tcolorbox/tcolorbox-tutorial-poster.pdf
+++ b/macros/latex/contrib/tcolorbox/tcolorbox-tutorial-poster.pdf
Binary files differ
diff --git a/macros/latex/contrib/tcolorbox/tcolorbox-tutorial-poster.tex b/macros/latex/contrib/tcolorbox/tcolorbox-tutorial-poster.tex
index 11d6d47954..9c52b6c68c 100644
--- a/macros/latex/contrib/tcolorbox/tcolorbox-tutorial-poster.tex
+++ b/macros/latex/contrib/tcolorbox/tcolorbox-tutorial-poster.tex
@@ -1,5 +1,5 @@
% \LaTeX-Main\
-%% The LaTeX package tcolorbox - version 4.20 (2019/03/02)
+%% The LaTeX package tcolorbox - version 4.21 (2019/09/19)
%% tcolorbox-tutorial-poster.tex: a tutorial for poster creation with tcolorbox
%%
%% -------------------------------------------------------------------------------------------
diff --git a/macros/latex/contrib/tcolorbox/tcolorbox.doc.coreoptions.tex b/macros/latex/contrib/tcolorbox/tcolorbox.doc.coreoptions.tex
index b8effa83e9..dfe82a456e 100644
--- a/macros/latex/contrib/tcolorbox/tcolorbox.doc.coreoptions.tex
+++ b/macros/latex/contrib/tcolorbox/tcolorbox.doc.coreoptions.tex
@@ -1535,7 +1535,7 @@ skin variants, see \Vref{subsec:skinjigsaw}.
\begin{docTcbKey}{opacityframe}{=\meta{fraction}}{no default, initially \texttt{1.0}}
Sets the frame opacity of the box to the given \meta{fraction}.
-\begin{exdispExample*}{opacityframe}{sbs,lefthand ratio=0.6,segmentation style={pattern=checkerboard light gray}}
+\begin{exdispExample*}{opacityframe}{sbs,lefthand ratio=0.6,segmentation style={preaction={fill=white},pattern=checkerboard,pattern color=gray!40}}
\begin{tcolorbox}[opacityframe=0.25,
colframe=red]
This is a \textbf{tcolorbox}.
@@ -1545,7 +1545,7 @@ This is a \textbf{tcolorbox}.
\begin{docTcbKey}{opacityback}{=\meta{fraction}}{no default, initially \texttt{1.0}}
Sets the background opacity of the box to the given \meta{fraction}.
-\begin{exdispExample*}{opacityback}{sbs,lefthand ratio=0.6,segmentation style={pattern=checkerboard light gray}}
+\begin{exdispExample*}{opacityback}{sbs,lefthand ratio=0.6,segmentation style={preaction={fill=white},pattern=checkerboard,pattern color=gray!40}}
\begin{tcolorbox}[standard jigsaw,colframe=red,
opacityframe=0.5, opacityback=0.5]
This is a \textbf{tcolorbox}.
@@ -1556,7 +1556,7 @@ This is a \textbf{tcolorbox}.
\begin{docTcbKey}{opacitybacktitle}{=\meta{fraction}}{no default, initially \texttt{1.0}}
Sets the title background opacity of the box to the given \meta{fraction}.
-\begin{exdispExample*}{opacitybacktitle}{sbs,lefthand ratio=0.6,segmentation style={pattern=checkerboard light gray}}
+\begin{exdispExample*}{opacitybacktitle}{sbs,lefthand ratio=0.6,segmentation style={preaction={fill=white},pattern=checkerboard,pattern color=gray!40}}
\begin{tcolorbox}[standard jigsaw,colframe=red,
opacityframe=0.5, opacitybacktitle=0.5,
title filled, title=This is a title]
@@ -1569,7 +1569,7 @@ This is a \textbf{tcolorbox}.
\begin{docTcbKey}{opacityfill}{=\meta{fraction}}{style, no default, initially \texttt{1.0}}
Sets the fill opacity for frame, interior and optionally the title background
to the given \meta{fraction}.
-\begin{exdispExample*}{opacityfill}{sbs,lefthand ratio=0.6,segmentation style={pattern=checkerboard light gray}}
+\begin{exdispExample*}{opacityfill}{sbs,lefthand ratio=0.6,segmentation style={preaction={fill=white},pattern=checkerboard,pattern color=gray!40}}
\begin{tcolorbox}[standard jigsaw,colframe=red,
opacityfill=0.7, title=This is a title]
This is a \textbf{tcolorbox}.
@@ -1582,7 +1582,7 @@ This is a \textbf{tcolorbox}.
Sets the text opacity of the upper box part to the given \meta{fraction}.
\begin{exdispExample*}{opacityupper}{sbs,lefthand ratio=0.6}
\begin{tcolorbox}[enhanced,opacityupper=0.5,
- interior style={pattern=checkerboard light gray}]
+ interior style={preaction={fill=white},pattern=checkerboard,pattern color=gray!40}]
This is a \textbf{tcolorbox}.
\end{tcolorbox}
\end{exdispExample*}
@@ -1593,7 +1593,7 @@ This is a \textbf{tcolorbox}.
Sets the text opacity of the lower box part to the given \meta{fraction}.
\begin{exdispExample*}{opacitylower}{sbs,lefthand ratio=0.6}
\begin{tcolorbox}[enhanced,opacitylower=0.5,
- interior style={pattern=checkerboard light gray}]
+ interior style={preaction={fill=white},pattern=checkerboard,pattern color=gray!40}]
This is a \textbf{tcolorbox}.
\tcblower
This is the lower part.
@@ -1605,7 +1605,7 @@ This is the lower part.
Sets the text opacity of the upper and the lower box part to the given \meta{fraction}.
\begin{exdispExample*}{opacitytext}{sbs,lefthand ratio=0.6}
\begin{tcolorbox}[enhanced,opacitytext=0.5,
- interior style={pattern=checkerboard light gray}]
+ interior style={preaction={fill=white},pattern=checkerboard,pattern color=gray!40}]
This is a \textbf{tcolorbox}.
\tcblower
This is the lower part.
@@ -1620,14 +1620,14 @@ This is the lower part.
\begin{tcolorbox}[enhanced,opacitytitle=0.7,
coltitle=black,
fonttitle=\bfseries,title=This is a title,
- title style={pattern=checkerboard light gray}]
+ title style={preaction={fill=white},pattern=checkerboard,pattern color=gray!40}]
This is a \textbf{tcolorbox}.
\end{tcolorbox}
\end{exdispExample*}
\end{docTcbKey}
-\begin{exdispExample*}{opacity_general}{segmentation style={pattern=checkerboard light gray}}
+\begin{exdispExample*}{opacity_general}{segmentation style={preaction={fill=white},pattern=checkerboard,pattern color=gray!40}}
\begin{tcolorbox}[enhanced jigsaw,fonttitle=\bfseries,title=This is a title,
opacityframe=0.5,opacityback=0.25,opacitybacktitle=0.25,opacitytext=0.8,
colback=red!5!white,colframe=red!75!black,colbacktitle=yellow!20!red]
@@ -2336,6 +2336,55 @@ This is the end of my box.
\end{exdispExample}
\end{docTcbKey}
+
+\clearpage
+
+\begin{docTcbKey}[][doc new={2019-09-19}]{tabulars}{=\meta{preamble}}{style}
+ This style sets \refKey{/tcb/before upper} and \refKey{/tcb/after upper}
+ and several geometry keys to support a |tabular*| with the
+ given \meta{preamble}.
+ The packages |array| and |colortbl| have to be loaded separately.
+\begin{exdispExample}{tabulars_1}
+% \usepackage{array}
+% \usepackage{colortbl} - or - \usepackage[table]{xcolor}
+\tcbset{enhanced,fonttitle=\bfseries\large,fontupper=\normalsize\sffamily,
+ colback=yellow!10!white,colframe=red!50!black,colbacktitle=Salmon!30!white,
+ coltitle=black,center title}
+
+\begin{tcolorbox}[tabulars={@{\extracolsep{\fill}\hspace{5mm}}lrrrrr@{\hspace{5mm}}},
+ boxrule=0.5pt,title=My table]
+Group & One & Two & Three & Four & Sum\\\hline\hline
+Red & 1000.00 & 2000.00 & 3000.00 & 4000.00 & 10000.00\\\hline
+Green & 2000.00 & 3000.00 & 4000.00 & 5000.00 & 14000.00\\\hline
+Blue & 3000.00 & 4000.00 & 5000.00 & 6000.00 & 18000.00\\\hline\hline
+Sum & 6000.00 & 9000.00 & 12000.00 & 15000.00 & 42000.00
+\end{tcolorbox}
+\end{exdispExample}
+\end{docTcbKey}
+
+
+\begin{docTcbKey}[][doc new={2019-09-19}]{tabulars*}{=\marg{code}\marg{preamble}}{style}
+ This is a variant of \refKey{/tcb/tabulars} which adds some \meta{code}
+ before the table starts.
+\begin{exdispExample}{tabulars_2}
+% \usepackage{array}
+% \usepackage{colortbl} - or - \usepackage[table]{xcolor}
+\tcbset{enhanced,fonttitle=\bfseries\large,fontupper=\normalsize\sffamily,
+ colback=yellow!10!white,colframe=red!50!black,colbacktitle=Salmon!30!white,
+ coltitle=black,center title}
+
+\begin{tcolorbox}[tabulars*={\arrayrulewidth0.5mm\renewcommand\arraystretch{1.4}}%
+ {@{\extracolsep{\fill}\hspace{20mm}}lll@{\hspace{20mm}}},
+ title=My table]
+One & Two & Three \\\hline\hline
+1000.00 & 2000.00 & 3000.00\\\hline
+2000.00 & 3000.00 & 4000.00
+\end{tcolorbox}
+\end{exdispExample}
+\end{docTcbKey}
+
+
+
\clearpage
\begin{marker}
If \refKey{/tcb/tabularx} or \refKey{/tcb/tabularx*} are used, one cannot
@@ -2386,6 +2435,7 @@ One & Two & Three \\\hline\hline
\end{docTcbKey}
+
\clearpage
\begin{docTcbKey}{tikz upper}{\colOpt{=\meta{options}}}{style}
This style adds a centered |tikzpicture| environment to the start and end
@@ -3547,7 +3597,7 @@ If needed, the number of managed layers can be increased by setting
The following styles have a considerable influence on how layered boxes
are processed. Note especially that nested boxes are getting a
\refKey{/tcb/reset} by default. You can change this, but be prepared for
-suprises if you do.
+surprises if you do.
If the defaults are \emph{not changed}, a |tcolorbox| gets its options
in the following order. Following options overwrite preceding options.
@@ -4287,6 +4337,11 @@ do \emph{not} use |\tikzexternaldisable| in front of the |tcolorbox|.
\refKey{/tcb/shield externalize} is deactivated automatically inside a |tikzpicture|.
\end{marker}
+\begin{marker}
+\refKey{/tcb/shield externalize} is applied for every following |tcolorbox|
+inside the current \TeX\ group and is not affected by \refKey{/tcb/reset}.
+\end{marker}
+
\begin{docTcbKey}{external}{=\meta{file name}}{no default, initially unset}
Convenience option which calls |\tikzsetnextfilename|\marg{file name}. Typically,
it may be used inside the option list of a |tcolorbox| to set the
@@ -4310,7 +4365,8 @@ do \emph{not} use |\tikzexternaldisable| in front of the |tcolorbox|.
\begin{docTcbKey}{reset}{}{no value, initially set}
Sets (nearly) all |tcolorbox| settings (including loaded libraries) back to their default values
\emph{plus} any settings given by \refCom{tcbsetforeverylayer}.
-\refKey{/tcb/savedelimiter} and \refKey{/tcb/capture} keep their values.
+\refKey{/tcb/savedelimiter}, \refKey{/tcb/capture}, and
+\refKey{/tcb/shield externalize} keep their values.
Also, all raster values (see \Vref{sec:raster}) are not resetted.
This option is useful for boxes in boxes where the inner box should not inherit
diff --git a/macros/latex/contrib/tcolorbox/tcolorbox.doc.documentation.tex b/macros/latex/contrib/tcolorbox/tcolorbox.doc.documentation.tex
index f8c1c4553c..cda39d43fa 100644
--- a/macros/latex/contrib/tcolorbox/tcolorbox.doc.documentation.tex
+++ b/macros/latex/contrib/tcolorbox/tcolorbox.doc.documentation.tex
@@ -131,6 +131,36 @@ For |minted| \cite{poore:minted} support, load:
\end{docEnvironment}
+
+
+\begin{docEnvironment}[doclang/environment content=operation description,
+ doc new=2019-09-18]{docPathOperation}{\oarg{options}\marg{name}\marg{parameters}}
+ Documents a \tikzname\ path operation with given \meta{name}.
+ The given \meta{options} are set with \refCom{tcbset}.
+ This \tikzname\ path operation takes mandatory or optional \meta{parameters}.
+ It is automatically indexed and can be referenced with
+ \refCom{refPathOperation}\marg{name}.
+\begin{dispExample}
+\begin{docPathOperation}{fooop}{\oarg{opt}(\meta{name})\colOpt{at(\meta{coord})}}
+ Imaginary path operation for illustration.
+\end{docPathOperation}
+\end{dispExample}
+\end{docEnvironment}
+
+
+\begin{docEnvironment}[doclang/environment content=command description,
+ doc new=2019-09-17]{docPathOperation*}{\oarg{options}\marg{name}\marg{parameters}}
+ Identical to \refEnv{docPathOperation}, but without index entry.
+\end{docEnvironment}
+
+
+
+
+
+
+
+
+
\begin{docCommand}{docValue}{\marg{name}}
Documents a value with given \meta{name}. Typically, this is a value for a key.
This value is automatically indexed.
@@ -144,6 +174,7 @@ A feasible value for \refKey{/foo/footitle} is \docValue{foovalue}.
Identical to \refCom{docValue}, but without index entry.
\end{docCommand}
+\clearpage
\begin{docCommand}[doc updated=2014-10-09]{docAuxCommand}{\marg{name}}
Documents an auxiliary or minor \LaTeX\ macro with given \meta{name}
@@ -170,7 +201,7 @@ The environment \docAuxEnvironment{fooauxenv} holds some interesting data.
Identical to \refCom{docAuxEnvironment}, but without index entry.
\end{docCommand}
-\clearpage
+
\begin{docCommand}{docAuxKey}{\oarg{key path}\marg{name}}
Documents an auxiliary key with given \meta{name} and an optional \meta{key path}.
@@ -208,6 +239,7 @@ The length \docLength{foolength} can be used for computation.
Identical to \refCom{docLength}, but without index entry.
\end{docCommand}
+\clearpage
\begin{docCommand}{docColor}{\marg{name}}
Documents a color with given \meta{name}. The color is automatically indexed.
@@ -221,7 +253,7 @@ The color \docColor{foocolor} is available.
\end{docCommand}
-\clearpage
+
\begin{docCommand}{cs}{\marg{name}}
Macro from |ltxdoc| \cite{carlisle:2007a} to typeset a command word \meta{name}
where the backslash is prefixed. The library overwrites the original macro.
@@ -409,6 +441,24 @@ We have created \refKey*{/foo/footitle} as an example.
\end{docCommand}
+\begin{docCommand}[doc new=2019-09-17]{refPathOperation}{\marg{name}}
+ References a documented \tikzname\ path operation with given \meta{name}.
+ The page reference is suppressed if it links to the same page.
+\begin{dispExample}
+We have created \refPathOperation{fooop} as an example.
+\end{dispExample}
+\end{docCommand}
+
+\begin{docCommand}[doc new=2019-09-17]{refPathOperation*}{\marg{name}}
+ References a documented \tikzname\ path operation with given \meta{name}.
+ There is no page reference.
+\begin{dispExample}
+We have created \refPathOperation*{fooop} as an example.
+\end{dispExample}
+\end{docCommand}
+
+
+
\begin{docCommand}{refAux}{\marg{name}}
References some auxiliary environment, key, value, or color. The hyperlink color is
used, but there is no real link.
@@ -426,8 +476,8 @@ Some pages back, one can see \refAuxcs{fooaux} as an example.
\end{dispExample}
\end{docCommand}
+\clearpage
-%
\begin{docCommand}{colDef}{\marg{text}}
Sets \meta{text} with the command color, see \refKey{/tcb/color command}.
\begin{dispExample}
@@ -442,7 +492,14 @@ This is my \colOpt{text}.
\end{dispExample}
\end{docCommand}
-\clearpage
+
+\begin{docCommand}[doc new=2019-09-18]{colFade}{\marg{text}}
+ Sets \meta{text} with the fade color, see \refKey{/tcb/color fade}.
+\begin{dispExample}
+This is my \colFade{text}.
+\end{dispExample}
+\end{docCommand}
+
\begin{docCommand}[doc new=2014-09-19]{tcbdocmarginnote}{\oarg{options}\marg{text}}
Creates a |tcolorbox| note with the given \meta{text} inside the margin using
@@ -672,6 +729,10 @@ instead. Also see \refKey{/tcb/docexample}.
Sets the highlight color used by key definitions.
\end{docTcbKey}
+\begin{docTcbKey}[][doc new={2019-09-18}]{color path}{=\meta{color}}{no default, initially |Definition|}
+ Sets the highlight color used by \tikzname\ path operation definitions.
+\end{docTcbKey}
+
\begin{docTcbKey}{color value}{=\meta{color}}{no default, initially |Definition|}
Sets the highlight color used by value definitions.
\end{docTcbKey}
@@ -688,9 +749,9 @@ instead. Also see \refKey{/tcb/docexample}.
Sets the highlight color used by color definitions.
\end{docTcbKey}
-\begin{docTcbKey}{color definition}{=\meta{color}}{no default, initially |Definition|}
+\begin{docTcbKey}[][doc updated={2019-09-18}]{color definition}{=\meta{color}}{no default, initially |Definition|}
Sets the highlight color for \refKey{/tcb/color command}, \refKey{/tcb/color environment},
- \refKey{/tcb/color key}, \refKey{/tcb/color value}, \refKey{/tcb/color counter},
+ \refKey{/tcb/color key}, \refKey{/tcb/color path}, \refKey{/tcb/color value}, \refKey{/tcb/color counter},
\refKey{/tcb/color length}, and \refKey{/tcb/color color}.
\end{docTcbKey}
@@ -698,6 +759,12 @@ instead. Also see \refKey{/tcb/docexample}.
Sets the color used for optional arguments.
\end{docTcbKey}
+\begin{docTcbKey}{color fade}{=\meta{color}}{no default, initially |Fade|}
+ Sets the color used for faded text like \colFade{\textbackslash path}
+ in \refEnv{docPathOperation}.
+\end{docTcbKey}
+
+
\begin{docTcbKey}{color hyperlink}{=\meta{color}}{no default, initially |Hyperlink|}
Sets the color for all hyper-links, i.\,e. all internal and external links.
\end{docTcbKey}
@@ -759,11 +826,18 @@ The English language is predefined.
Heading text in the index for lengths.
\end{langTcbKey}
-
\begin{langTcbKey}[][doc new={2014-09-19}]{new}{=\meta{text}}{no default, initially |New|}
Announcement text for new content.
\end{langTcbKey}
+\begin{langTcbKey}[][doc new={2019-09-18}]{path}{=\meta{text}}{no default, initially |path operation|}
+ Text used in the index for path operations.
+\end{langTcbKey}
+
+\begin{langTcbKey}[][doc new={2019-09-18}]{paths}{=\meta{text}}{no default, initially |Path operations|}
+ Heading text in the index for path operations.
+\end{langTcbKey}
+
\begin{langTcbKey}{pageshort}{=\meta{text}}{no default, initially |P.|}
Short text for page references.
\end{langTcbKey}
@@ -872,13 +946,27 @@ Options to these |tcolorbox|es can be given using the following keys.
\end{dispExample}
\end{docTcbKey}
-\begin{docTcbKey}{doc head}{=\meta{options}}{no default, initially empty}
+\clearpage
+\begin{docTcbKey}[][doc new=2019-09-18]{doc head path}{=\meta{options}}{no default, initially empty}
+ Sets \meta{options} for the head line of \refEnv{docPathOperation} and \refEnv{docPathOperation*}.
+\begin{dispExample}
+\tcbset{doc head command={interior style={fill,left color=red!7!white,
+ right color=blue!7!white}}}
+
+\begin{docPathOperation*}{-{}-}{\meta{coordinate or cycle}}
+ This is the documentation of \refPathOperation{-{}-}.
+\end{docPathOperation*}
+\end{dispExample}
+\end{docTcbKey}
+
+
+\begin{docTcbKey}[][doc updated=2019-09-18]{doc head}{=\meta{options}}{no default, initially empty}
Shortcut for setting the same \meta{options} for
\refKey{/tcb/doc head command}, \refKey{/tcb/doc head environment},
- and \refKey{/tcb/doc head key}.
+ \refKey{/tcb/doc head key}, and \refKey{/tcb/doc head path}.
\end{docTcbKey}
-\clearpage
+
The description texts of the main documentation environments \refEnv{docCommand},
\refEnv{docEnvironment}, \refEnv{docKey}, etc, are set in a compact form without
indention and |parskip=0pt|. This settings can overruled by using the following
@@ -916,7 +1004,7 @@ keys to insert code before (or after) the description texts.
\end{dispExample}
\end{docTcbKey}
-
+\clearpage
\begin{docTcbKey}[][doc new=2015-10-09]{before doc body environment}{=\meta{code}}{no default, initially empty}
Executes \meta{code} before the description texts
of \refEnv{docEnvironment} and \refEnv{docEnvironment*}.
@@ -938,23 +1026,35 @@ keys to insert code before (or after) the description texts.
of \refEnv{docKey} and \refEnv{docKey*}.
\end{docTcbKey}
-\begin{docTcbKey}[][doc new=2015-10-09]{before doc body}{=\meta{options}}{no default, initially empty}
+\begin{docTcbKey}[][doc new=2019-09-18]{before doc body path}{=\meta{code}}{no default, initially empty}
+ Executes \meta{code} before the description texts
+ of \refEnv{docPathOperation} and \refEnv{docPathOperation*}.
+\end{docTcbKey}
+
+\begin{docTcbKey}[][doc new=2019-09-18]{after doc body path}{=\meta{code}}{no default, initially empty}
+ Executes \meta{code} after the description texts
+ of \refEnv{docPathOperation} and \refEnv{docPathOperation*}.
+\end{docTcbKey}
+
+
+\begin{docTcbKey}[][doc new and updated={2015-10-09}{2019-09-18}]{before doc body}{=\meta{options}}{no default, initially empty}
Shortcut for setting the same \meta{options} for
\refKey{/tcb/before doc body command}, \refKey{/tcb/before doc body environment},
- and \refKey{/tcb/before doc body key}.
+ \refKey{/tcb/before doc body key}, and \refKey{/tcb/before doc body path}.
\end{docTcbKey}
-\begin{docTcbKey}[][doc new=2015-10-09]{after doc body}{=\meta{options}}{no default, initially empty}
+\begin{docTcbKey}[][doc new and updated={2015-10-09}{2019-09-18}]{after doc body}{=\meta{options}}{no default, initially empty}
Shortcut for setting the same \meta{options} for
\refKey{/tcb/after doc body command}, \refKey{/tcb/after doc body environment},
- and \refKey{/tcb/after doc body key}.
+ \refKey{/tcb/after doc body key}, and \refKey{/tcb/after doc body path}.
\end{docTcbKey}
-\clearpage
+%\clearpage
\begin{docTcbKey}{doc description}{=\meta{text}}{no default, initially empty}
Sets a (short!) additional description \meta{text} for
- \refEnv{docCommand} or \refEnv{docEnvironment}. Such a description is
+ \refEnv{docCommand}, \refEnv{docEnvironment}, or \refEnv{docPathOperation}.
+ Such a description is
mandatory for \refEnv{docKey}.
\begin{dispExample}
\begin{docCommand*}[doc description=my description]{myCommandF}{\marg{argument}}
@@ -968,6 +1068,19 @@ hand side if too long. Linebreaks can be used inside the \meta{text}.
\end{marker}
\end{docTcbKey}
+\clearpage
+\begin{docTcbKey}[][doc new={2019-09-18}]{doc label}{=\meta{text}}{no default, initially unset}
+ If used inside the option list of \refEnv{docCommand}, \refEnv{docEnvironment},
+ \refEnv{docKey}, or \refEnv{docPathOperation}, then \meta{text} is used
+ for labeling instead of the name of the definition.
+\begin{dispExample}
+\begin{docPathOperation*}[doc label=pathline]{-{}-}{\meta{coordinate or cycle}}
+ This is the documentation of \refPathOperation{pathline}.
+\end{docPathOperation*}
+\end{dispExample}
+\end{docTcbKey}
+
+
\begin{docTcbKey}{doc into index}{\colOpt{=true\textbar false}}{default |true|, initially |true|}
If set to |false|, no index entries are written for the main documentation
environments. The same effect is achieved by using e.\,g.\ \refEnv{docCommand*}
@@ -1008,7 +1121,7 @@ Some command for something.
\end{docTcbKey}
-\subsection{Predefined Colors of the Library}
+\subsection{Predefined Colors of the Library}\tcbdocmarginnote{\tcbdocupdated{2019-09-18}}
The following colors are predefined. They are used as default colors
in some library commands.
@@ -1018,6 +1131,7 @@ in some library commands.
\dispColor{Definition},
\dispColor{ExampleFrame},
\dispColor{ExampleBack},
-\dispColor{Hyperlink}.
+\dispColor{Hyperlink},
+\dispColor{Fade}.
diff --git a/macros/latex/contrib/tcolorbox/tcolorbox.doc.hooks.tex b/macros/latex/contrib/tcolorbox/tcolorbox.doc.hooks.tex
index b5e37eee98..33782234fe 100644
--- a/macros/latex/contrib/tcolorbox/tcolorbox.doc.hooks.tex
+++ b/macros/latex/contrib/tcolorbox/tcolorbox.doc.hooks.tex
@@ -475,8 +475,8 @@ There are no |app| type keys since finishes are stackable by default.
\subsection{Skin Code}
-The following option keys extend the options given in Subsection \ref{subsec:addcodeoptions}
-from page \pageref{subsec:addcodeoptions}.
+The following option keys extend the options given in Subsection~\ref{subsec:addcodeoptions}
+from page~\pageref{subsec:addcodeoptions}.
\begin{docTcbKey}{frame code app}{=\meta{graphical code}}{no default}
Appends the given \meta{graphical code} to \refKey{/tcb/frame code}.
@@ -575,3 +575,27 @@ There are no |app| type keys since extras are stackable by default.
Prepends the given \meta{options} to \refKey{/tcb/extras first and middle}.
\end{docTcbKey}
+
+\subsection{Listings}
+The following option keys extend the options given in
+Section~\ref{sec:listings}
+from page~\pageref{sec:listings}.
+
+
+\begin{docTcbKey}[][doc new=2019-07-11]{listing options app}{=\marg{options}}{no default}
+ Appends the given \meta{options} to \refKey{/tcb/listing options}.
+\end{docTcbKey}
+
+\begin{docTcbKey}[][doc new=2019-07-11]{listing options pre}{=\marg{options}}{no default}
+ Prepends the given \meta{options} to \refKey{/tcb/listing options}.
+\end{docTcbKey}
+
+\begin{docTcbKey}[][doc new=2019-07-11]{minted options app}{=\marg{options}}{no default}
+ Appends the given \meta{options} to \refKey{/tcb/minted options}.
+\end{docTcbKey}
+
+\begin{docTcbKey}[][doc new=2019-07-11]{minted options pre}{=\marg{options}}{no default}
+ Prepends the given \meta{options} to \refKey{/tcb/minted options}.
+\end{docTcbKey}
+
+
diff --git a/macros/latex/contrib/tcolorbox/tcolorbox.doc.recording.tex b/macros/latex/contrib/tcolorbox/tcolorbox.doc.recording.tex
index 75c016fb91..84510ab754 100644
--- a/macros/latex/contrib/tcolorbox/tcolorbox.doc.recording.tex
+++ b/macros/latex/contrib/tcolorbox/tcolorbox.doc.recording.tex
@@ -15,6 +15,17 @@ in \Vref{sec:recording-solutions}.
Opens a file denoted by \meta{file name} for writing the records.
The default file name is |\jobname.records|.
See \Vref{sec:recording-exercises} for an example application.
+ \begin{marker}
+ In some situations, a not existing optional parameter may cause parsing
+ problems. If this happens (or just for precaution), use
+\begin{dispListing}
+\tcbstartrecording\relax
+\end{dispListing}
+ or
+\begin{dispListing}
+\tcbstartrecording[\jobname.records]
+\end{dispListing}
+ \end{marker}
\end{docCommand}
\begin{docCommand}[doc new=2014-11-28]{tcbrecord}{\marg{content}}
@@ -66,7 +77,7 @@ has no solution. Finally, the solutions are input in \Vref{sec:recording-solutio
\inputpreamblelisting{L}
\begin{dispListing*}{breakable,before upper=}
-\tcbstartrecording
+\tcbstartrecording\relax
\begin{exercise}
Compute the derivative of the following function:
diff --git a/macros/latex/contrib/tcolorbox/tcolorbox.doc.s_main.sty b/macros/latex/contrib/tcolorbox/tcolorbox.doc.s_main.sty
index 9a48d42bb6..18385877c0 100644
--- a/macros/latex/contrib/tcolorbox/tcolorbox.doc.s_main.sty
+++ b/macros/latex/contrib/tcolorbox/tcolorbox.doc.s_main.sty
@@ -54,6 +54,7 @@
\tcbset{skin=enhanced,
doc head={colback=yellow!10!white,interior style=fill},
doc head key={colback=magenta!5!white,interior style=fill},
+ doc head path={colback=blue!50!gray!7!white,interior style=fill},
color key=DarkViolet,
color value=Teal,
color color=Teal,
diff --git a/macros/latex/contrib/tcolorbox/tcolorbox.doc.skins.tex b/macros/latex/contrib/tcolorbox/tcolorbox.doc.skins.tex
index e357d5b78c..8c18743cec 100644
--- a/macros/latex/contrib/tcolorbox/tcolorbox.doc.skins.tex
+++ b/macros/latex/contrib/tcolorbox/tcolorbox.doc.skins.tex
@@ -596,7 +596,7 @@ The boxed title is shifted by \meta{length} in the vertical direction.
\end{boxTcbKey}
\begin{boxTcbKey}{yshifttext}{=\meta{length}}{no default, initially |0pt|}
-The text inside the main box by \meta{length} to give room for e.\,g.\ a sunken title.
+The text inside the main box is shifted by \meta{length} to give room for e.\,g.\ a sunken title.
\begin{exdispExample*}{yshifttext}{sbs,lefthand ratio=0.66}
\begin{tcolorbox}[enhanced,title=My title,
attach boxed title to top center=
@@ -1303,7 +1303,7 @@ Defines a |Tikz| scope which clips to the frame area path.
\begin{docEnvironment}{tcbinvclipframe}{}
Defines a |Tikz| scope which clips to the \emph{outside} of the frame area path.
-\begin{dispExample*}{segmentation style={pattern=checkerboard light gray}}
+\begin{dispExample*}{segmentation style={preaction={fill=white},pattern=checkerboard,pattern color=gray!40}}
\tcbset{enhanced jigsaw,fonttitle=\bfseries,opacityback=0.35,colback=blue!5!white,
frame style={left color=red!75!black,right color=red!10!yellow}}
@@ -2245,7 +2245,7 @@ but most other skins, e.\,g.\ \refSkin{enhanced}.
applied a second time, the new \meta{tikz option list} is appended to the
current option list.
\begin{dispExample*}{sbs,lefthand ratio=0.66,
- segmentation style={pattern=checkerboard light gray}}
+ segmentation style={preaction={fill=white},pattern=checkerboard,pattern color=gray!40}}
\tcbset{enhanced,colback=red!5!white,
colframe=red!75!black,fonttitle=\bfseries}
@@ -2837,7 +2837,7 @@ and \refSkin{enhanced}, there are variants called \refSkin{standard jigsaw}
and \refSkin{enhanced jigsaw}.
-\begin{dispExample*}{segmentation style={pattern=checkerboard light gray}}
+\begin{dispExample*}{segmentation style={preaction={fill=white},pattern=checkerboard,pattern color=gray!40}}
\newcommand{\ballexample}{\begin{tikzpicture}
\path[use as bounding box] (0,0.8) rectangle +(0.1,0.1);
\shadedraw [shading=ball] (0,0) circle (1cm);
@@ -2863,7 +2863,7 @@ and \refSkin{enhanced jigsaw}.
\end{dispExample*}
-\begin{dispExample*}{segmentation style={pattern=checkerboard light gray}}
+\begin{dispExample*}{segmentation style={preaction={fill=white},pattern=checkerboard,pattern color=gray!40}}
\tcbset{enhanced,colback=red!10!white,coltitle=black,
frame style={left color=red!75!black,right color=red!10!yellow},
fonttitle=\bfseries,interior hidden,title hidden}
@@ -2879,7 +2879,7 @@ and \refSkin{enhanced jigsaw}.
\end{dispExample*}
-\begin{dispExample*}{segmentation style={pattern=checkerboard light gray}}
+\begin{dispExample*}{segmentation style={preaction={fill=white},pattern=checkerboard,pattern color=gray!40}}
\newtcolorbox{mybox}{skin=enhancedmiddle jigsaw,leftrule=5mm,rightrule=5mm,
boxsep=0mm,top=0mm,bottom=0mm,
frame style={top color=blue,bottom color=red},interior hidden}
@@ -3047,7 +3047,7 @@ This box looks like a box provided by the \texttt{beamer} class.
This is an abbreviation for setting |skin=standard jigsaw|.
\end{docTcbKey}
-\begin{dispExample*}{segmentation style={pattern=checkerboard light gray}}
+\begin{dispExample*}{segmentation style={preaction={fill=white},pattern=checkerboard,pattern color=gray!40}}
\begin{tcbraster}[standard jigsaw,raster equal height,raster columns=4,
colback=LightGreen,colframe=DarkGreen,colbacktitle=LimeGreen!75!DarkGreen,
opacityframe=0.5,opacityback=0.5,opacitybacktitle=0.5,
@@ -3366,7 +3366,7 @@ Nevertheless, this skin can be applied independently.
This is an abbreviation for setting |skin=enhanced jigsaw|.
\end{docTcbKey}
-\begin{dispExample*}{segmentation style={pattern=checkerboard light gray}}
+\begin{dispExample*}{segmentation style={preaction={fill=white},pattern=checkerboard,pattern color=gray!40}}
\begin{tcbraster}[enhanced jigsaw,raster equal height,raster columns=4,
colback=LightGreen,colframe=DarkGreen,colbacktitle=LimeGreen!75!DarkGreen,
opacityframe=0.5,opacityback=0.5,opacitybacktitle=0.5,
@@ -3416,7 +3416,7 @@ Nevertheless, this skin can be applied independently.
\end{docSkin}
-\begin{dispExample*}{segmentation style={pattern=checkerboard light gray}}
+\begin{dispExample*}{segmentation style={preaction={fill=white},pattern=checkerboard,pattern color=gray!40}}
\begin{tcbraster}[skin=enhancedfirst jigsaw,raster equal height,raster columns=4,
colback=LightGreen,colframe=DarkGreen,colbacktitle=LimeGreen!75!DarkGreen,
opacityframe=0.5,opacityback=0.5,opacitybacktitle=0.5,
@@ -3459,7 +3459,7 @@ Nevertheless, this skin can be applied independently.
\end{docSkin}
-\begin{dispExample*}{segmentation style={pattern=checkerboard light gray}}
+\begin{dispExample*}{segmentation style={preaction={fill=white},pattern=checkerboard,pattern color=gray!40}}
\begin{tcbraster}[skin=enhancedmiddle jigsaw,raster equal height,raster columns=4,
colback=LightGreen,colframe=DarkGreen,colbacktitle=LimeGreen!75!DarkGreen,
opacityframe=0.5,opacityback=0.5,opacitybacktitle=0.5,
@@ -3557,7 +3557,7 @@ Nevertheless, this skin can be applied independently.
\end{docSkin}
-\begin{dispExample*}{segmentation style={pattern=checkerboard light gray}}
+\begin{dispExample*}{segmentation style={preaction={fill=white},pattern=checkerboard,pattern color=gray!40}}
\begin{tcbraster}[skin=enhancedlast jigsaw,raster equal height,raster columns=4,
colback=LightGreen,colframe=DarkGreen,colbacktitle=LimeGreen!75!DarkGreen,
opacityframe=0.5,opacityback=0.5,opacitybacktitle=0.5,
diff --git a/macros/latex/contrib/tcolorbox/tcolorbox.pdf b/macros/latex/contrib/tcolorbox/tcolorbox.pdf
index e1e37bfe2c..4c995dd99f 100644
--- a/macros/latex/contrib/tcolorbox/tcolorbox.pdf
+++ b/macros/latex/contrib/tcolorbox/tcolorbox.pdf
Binary files differ
diff --git a/macros/latex/contrib/tcolorbox/tcolorbox.sty b/macros/latex/contrib/tcolorbox/tcolorbox.sty
index 778bf12363..e70df1e68b 100644
--- a/macros/latex/contrib/tcolorbox/tcolorbox.sty
+++ b/macros/latex/contrib/tcolorbox/tcolorbox.sty
@@ -1,4 +1,4 @@
-%% The LaTeX package tcolorbox - version 4.20 (2019/03/02)
+%% The LaTeX package tcolorbox - version 4.21 (2019/09/19)
%% tcolorbox.sty: Text color boxes
%%
%% -------------------------------------------------------------------------------------------
@@ -18,8 +18,8 @@
%% This work consists of all files listed in README
%%
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{tcolorbox}[2019/03/02 version 4.20 text color boxes]
-\def\tcb@version{4.20}
+\ProvidesPackage{tcolorbox}[2019/09/19 version 4.21 text color boxes]
+\def\tcb@version{4.21}
\RequirePackage{pgf}[2008/01/15]
\RequirePackage{verbatim}[2003/08/22]
@@ -431,9 +431,15 @@
left skip/.style={grow to left by={-\dimexpr#1\relax}},
right skip/.style={grow to right by={-\dimexpr#1\relax}},
leftright skip/.style={left skip={#1},right skip={#1}},
- spread inwards/.style={grow to left by=1in+\hoffset+\oddsidemargin+\@totalleftmargin+(#1),code={\if@twoside\tcbset{toggle enlargement}\fi}},
+ spread inwards/.style={%
+ if odd page={grow to left by=1in+\hoffset+\oddsidemargin+\@totalleftmargin+(#1)}%
+ {grow to right by=\paperwidth-\textwidth-1in-\hoffset-\evensidemargin+(#1)}%
+ },
spread inwards/.default=\z@,
- spread outwards/.style={grow to right by=\paperwidth-\textwidth-1in-\hoffset-\oddsidemargin+(#1),code={\if@twoside\tcbset{toggle enlargement}\fi}},
+ spread outwards/.style={%
+ if odd page={grow to right by=\paperwidth-\textwidth-1in-\hoffset-\oddsidemargin+(#1)}%
+ {grow to left by=1in+\hoffset+\evensidemargin+\@totalleftmargin+(#1)}%
+ },
spread outwards/.default=\z@,
move upwards/.style={before={\clearpage%
\lineskip\z@skip%
@@ -576,10 +582,23 @@
tabularx*/.style 2 args={%
boxsep=\z@,top=\z@,bottom=\z@,leftupper=\z@,rightupper=\z@,
toptitle=1mm,bottomtitle=1mm,boxrule=0.5mm,
- before upper*={\arrayrulecolor{tcbcolframe}\def\arraystretch{1.1}#1%
+ before upper*={%
+ \let\tcb@CT@arc@save\CT@arc@%
+ \arrayrulecolor{tcbcolframe}\def\arraystretch{1.1}#1%
\tcb@hack@currenvir\tabularx{\linewidth}{#2}},
- after upper*=\endtabularx\arrayrulecolor{black}},
+ after upper*={\endtabularx\global\let\CT@arc@\tcb@CT@arc@save}%
+ },
tabularx/.style={tabularx*={}{#1}},
+ tabulars*/.style 2 args={%
+ boxsep=\z@,top=\z@,bottom=\z@,leftupper=\z@,rightupper=\z@,
+ toptitle=1mm,bottomtitle=1mm,boxrule=0.5mm,
+ before upper*={%
+ \let\tcb@CT@arc@save\CT@arc@%
+ \arrayrulecolor{tcbcolframe}\def\arraystretch{1.1}#1%
+ \begin{tabular*}{\linewidth}{#2}},
+ after upper*={\end{tabular*}\global\let\CT@arc@\tcb@CT@arc@save}
+ },
+ tabulars/.style={tabulars*={}{#1}},
tikz upper/.style={before upper*={\centering\tcb@shield@externalize\begin{tikzpicture}[{#1}]},after upper*=\end{tikzpicture}},%
tikz lower/.style={before lower*={\centering\tcb@shield@externalize\begin{tikzpicture}[{#1}]},after lower*=\end{tikzpicture}},%
tikznode upper/.style={before upper={\centering\tcb@shield@externalize\begin{tikzpicture}\node[{align=center,inner sep=\z@,outer sep=\z@,#1}]\bgroup},after upper={\egroup;\end{tikzpicture}}},%
@@ -2136,12 +2155,13 @@
before title=,after title=,before upper=,after upper=,before lower=,after lower=,
sidebyside=false,sidebyside align=center,sidebyside gap=10mm,
lefthand ratio=0.5,check odd page=false,nophantom,
- shield externalize=false,list entry=,no label type,
+ list entry=,no label type,
opacityupper=1.0,opacitylower=1.0,opacitytitle=1.0,opacityframe=1.0,opacityback=1.0,@opacitybacktitle=1.0,
subtitle style=,title filled=false,every float=,ignore nobreak=false,before nobreak=\noindent,
tcbox width=auto,
},
initialize@reset=reset@core,
+ shield externalize=false,
}
\def\tcbsetforeverylayer#1{\tcbset{initialize@reset={#1}}}
diff --git a/macros/latex/contrib/tcolorbox/tcolorbox.tex b/macros/latex/contrib/tcolorbox/tcolorbox.tex
index 69d5d40992..8399ca7681 100644
--- a/macros/latex/contrib/tcolorbox/tcolorbox.tex
+++ b/macros/latex/contrib/tcolorbox/tcolorbox.tex
@@ -1,5 +1,5 @@
% \LaTeX-Main\
-%% The LaTeX package tcolorbox - version 4.20 (2019/03/02)
+%% The LaTeX package tcolorbox - version 4.21 (2019/09/19)
%% tcolorbox.tex: Manual
%%
%% -------------------------------------------------------------------------------------------
@@ -43,8 +43,8 @@
\setlength{\bibitemsep}{\smallskipamount}
\addbibresource{tcolorbox.doc.bib}
-\def\version{4.20}%
-\def\datum{2019/03/02}%
+\def\version{4.21}%
+\def\datum{2019/09/19}%
\makeindex
\hypersetup{
@@ -58,11 +58,11 @@
%\tcbset{draftmode}
\tcbset{/tcb/external/-}% for final run
-%\includeonly{tcolorbox.doc.skins}
+%\includeonly{tcolorbox.doc.coreoptions}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{document}
-\include{tcolorbox.doc.abstract}
+\input{tcolorbox.doc.abstract}
\include{tcolorbox.doc.intro}
\include{tcolorbox.doc.quickref}
\include{tcolorbox.doc.coremacros}