texlive[72084] Master/texmf-dist: nicematrix (22aug24)
commits+karl at tug.org
commits+karl at tug.org
Thu Aug 22 21:40:09 CEST 2024
Revision: 72084
https://tug.org/svn/texlive?view=revision&revision=72084
Author: karl
Date: 2024-08-22 21:40:08 +0200 (Thu, 22 Aug 2024)
Log Message:
-----------
nicematrix (22aug24)
Modified Paths:
--------------
trunk/Master/texmf-dist/doc/latex/nicematrix/nicematrix-code.pdf
trunk/Master/texmf-dist/doc/latex/nicematrix/nicematrix-french.pdf
trunk/Master/texmf-dist/doc/latex/nicematrix/nicematrix-french.tex
trunk/Master/texmf-dist/doc/latex/nicematrix/nicematrix.pdf
trunk/Master/texmf-dist/doc/latex/nicematrix/nicematrix.tex
trunk/Master/texmf-dist/source/latex/nicematrix/nicematrix-code.dtx
trunk/Master/texmf-dist/tex/latex/nicematrix/nicematrix.sty
Modified: trunk/Master/texmf-dist/doc/latex/nicematrix/nicematrix-code.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/nicematrix/nicematrix-french.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/nicematrix/nicematrix-french.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/nicematrix/nicematrix-french.tex 2024-08-21 23:41:52 UTC (rev 72083)
+++ trunk/Master/texmf-dist/doc/latex/nicematrix/nicematrix-french.tex 2024-08-22 19:40:08 UTC (rev 72084)
@@ -129,8 +129,9 @@
\begin{abstract}
-L'extension LaTeX \pkg{nicematrix} fournit de nouveaux environnements similaires aux environnements classiques
-|{tabular}|, |{array}| et |{matrix}| de \pkg{array} et \pkg{amsmath} mais avec des fonctionnalités plus étendues.
+L'extension LaTeX \pkg{nicematrix} fournit de nouveaux environnements similaires
+aux environnements classiques |{tabular}|, |{array}| et |{matrix}| de
+\pkg{array} et \pkg{amsmath} mais avec des fonctionnalités plus étendues.
\end{abstract}
@@ -167,8 +168,9 @@
\vspace{1cm}
-L'extension \pkg{nicematrix} est entièrement contenue dans le fichier |nicematrix.sty|. Ce fichier peut être placé
-dans le répertoire courant ou dans une arborescence |texmf|. Le mieux reste néanmoins d'installer \pkg{nicematrix}
+L'extension \pkg{nicematrix} est entièrement contenue dans le fichier
+|nicematrix.sty|. Ce fichier peut être placé dans le répertoire courant ou dans
+une arborescence |texmf|. Le mieux reste néanmoins d'installer \pkg{nicematrix}
avec une distribution TeX comme MiKTeX, TeX~Live ou MacTeX.
\medskip
@@ -176,8 +178,8 @@
Overleaf) vous pouvez télécharger le fichier |nicematrix.sty| dans le dossier de
votre projet pour bénéficier de la dernière version de
\pkg{nicematrix}.\footnote{La dernière version de |nicematrix.sty| peut
- être téléchargée sur le serveur \textsc{svn} de TeXLive : \newline \small
- \url{https:www.tug.org/svn/texlive/trunk/Master/texmf-dist/tex/latex/nicematrix/nicematrix.sty}}
+ être téléchargée sur le dépôt Github de \pkg{nicematrix} : \newline \small
+ \url{https://github.com/fpantigny/nicematrix/releases}}
\medskip
Cette extension peut être utilisée avec |xelatex|, |lualatex| et |pdflatex| mais
@@ -200,8 +202,9 @@
\textsc{pgf}, les coordonnées de ces nœuds sont écrites dans le fichier |aux|
pour être utilisées à la compilation suivante. C'est pourquoi l'utilisation de
\pkg{nicematrix} nécessite \textbf{plusieurs compilations
- successives}.\footnote{Si vous utilisez Overleaf, Overleaf effectue
- automatiquement un nombre de compilations suffisant.}
+ successives}\footnote{Si vous utilisez Overleaf, Overleaf effectue
+ automatiquement un nombre de compilations suffisant.}. L'utilisateur ne doit
+pas utiliser la commande |\nofiles| (qui bloque l'écriture du fichier |aux|).
\medskip
La plupart des fonctionnalités de \pkg{nicematrix} sont accessibles sans avoir à
@@ -1407,7 +1410,7 @@
une commande par-dessus la commande |\Hline|, il doit veiller à ce qu'elle
soit \emph{développable} au sens de TeX (en utilisant
|\NewExpandableDocumentCommand| de LaTeX3, |\newcommand| de LaTeX ou même
- |\def| de TeX). Exemple : |\newcommand{\RedLine}{\Hline[color=red]}|}
+ |\def| de TeX). Exemple : |\NewDocumentCommand{\RedLine}{}{\Hline[color=red]}|}
De même que la commande |\Hline|, le specificateur «\verb+|+» admet entre crochets
des options qui caractérisent le filet à tracer.
@@ -2045,9 +2048,9 @@
\smallskip
L'argument optionnel entre crochets est une liste de couples \textsl{clé=valeur}
-qui seront présentées au fur et à mesure. \footnote{Les clés disponibles sont
+qui seront présentées au fur et à mesure (les clés disponibles sont
\texttt{create-cell-nodes}, \texttt{sub-matrix} (et ses sous-clés) et
- \texttt{delimiters/color}.}
+ \texttt{delimiters/color}).
\smallskip
De nouvelles commandes sont disponibles dans ce |\CodeBefore|: |\cellcolor|,
@@ -2056,6 +2059,9 @@
|\CodeBefore|, des nœuds PGF-TikZ de la forme \verb+(i-|j)+ correspondant à la
position des filets éventuels sont également accessibles : cf.
p.~\pageref{nodes-i}.}
+
+Les noms de certaines de ces commandes sont inspirés des noms des commandes de \pkg{colortbl}.
+
\label{code-before}
\index{cellcolor@\texttt{\textbackslash cellcolor}!commande du
\texttt{\textbackslash CodeBefore}}
@@ -2072,8 +2078,8 @@
\index{arraycolor@\texttt{\textbackslash arraycolor} (commande du \texttt{\textbackslash
CodeBefore)}}
-Les noms de certaines de ces commandes sont inspirés des noms des commandes de \pkg{colortbl}.
+
\medskip
Ces commandes ne colorient pas les cases qui se trouvent dans les «coins» si la
clé |corners| a été utilisée. La description de cette clé a été faite
@@ -2610,14 +2616,17 @@
doit pour cela utiliser la clé |color-inside|\footnote{Il existe un alias pour
cette clé : \texttt{colortbl-like}.} dans l'environnement
concerné.\footnote{Pour le moment, cette clé n'est \emph{pas} disponible dans
- |\NiceMatrixOptions|.}
+ |\NiceMatrixOptions|.}o
On a alors accès aux commandes suivantes (les trois premières sont inspirées par
\pkg{colortbl} mais sont indépendantes de \pkg{colortbl}) :
\begin{itemize}
-\item \DefinitionCommande{cellcolor} qui colorie la case courante\footnote{Néanmoins, cette
+\item \DefinitionCommande{cellcolor} qui colorie la case courante\footnote{Cette
commande |\cellcolor| supprimera les espaces qui la suivent, ce que ne fait
- pas la commande |\cellcolor| de \pkg{colortbl}.} ;
+ pas la commande |\cellcolor| de \pkg{colortbl}. De plus, si on définit une
+ fonction au-dessus de |\cellcolor|, il faudra une fonction protégée au sens de
+TeX (alors que si c'était la commande |\cellcolor| de \pkg{colortbl}, il
+faudrait une fonction \emph{fully expandable}).} ;
\item \DefinitionCommande{rowcolor} à utiliser dans une case et qui colorie le
reste de la rangée;\footnote{Si vous souhaitez une commande pour colorier les
$n$~rangées suivantes, considérez la commande |\RowStyle| et sa clé
@@ -3131,8 +3140,9 @@
considérer la commande |\SubMatrix| disponible dans le |\CodeAfter| et le
|\CodeBefore| (cf. p.~\pageref{sub-matrix}).}
-\item On peut se demander comment \pkg{nicematrix} détermine le nombre de rangées et de colonnes nécessaires à la
-composition de la «dernière rangée» et de la «dernière colonne».
+\item On peut se demander comment \pkg{nicematrix} détermine le nombre de
+rangées et de colonnes nécessaires à la composition de la «dernière rangée» et
+de la «dernière colonne».
\begin{itemize}
\item Dans le cas d'un environnement avec préambule, comme |{NiceTabular}| ou
@@ -3450,8 +3460,8 @@
horizontalement mais aussi verticalement.
\medskip
-Attention : la clé |nullify-dots| a un nom qui peut prêter à confusion ; elle
-n'implique pas que la ligne en pointillés ne sera pas tracée !
+\textbf{Attention} : la clé |nullify-dots| a un nom qui peut prêter à confusion ;
+elle n'implique pas que la ligne en pointillés ne sera pas tracée !
\subsection{Les commandes \textbackslash Hdotsfor et \textbackslash Vdotsfor}
@@ -3590,8 +3600,8 @@
\end{itemize}
\medskip
-Par conséquent, avec les options |renew-dots| et |renew-matrix|, un code classique donne directement
-le résultat fourni par \pkg{nicematrix}.\par\nobreak
+Par conséquent, avec les options |renew-dots| et |renew-matrix|, un code
+classique donne directement le résultat fourni par \pkg{nicematrix}.\par\nobreak
\medskip
\begin{scope}
@@ -4392,11 +4402,11 @@
argument optionnel (entre crochets) pour une liste de couples
\textsl{clé=valeur}. Les clés disponibles sont les suivantes :
\begin{itemize}
-\item \Definition{left-shorten} et \Definition{right-shorten} qui ne prennent pas de valeur ; quand
-|left-shorten| est utilisée, l'abscisse de l'extrémité de gauche de l'accolade
-est calculée à partir du contenu du sous-tableau concerné alors que, sinon,
-c'est la position du filet vertical éventuel qui est utilisée (de même pour
-|right-shorten|) ;
+\item \Definition{left-shorten} et \Definition{right-shorten} qui ne prennent
+pas de valeur ; quand |left-shorten| est utilisée, l'abscisse de l'extrémité de
+gauche de l'accolade est calculée à partir du contenu du sous-tableau concerné
+alors que, sinon, c'est la position du filet vertical éventuel qui est utilisée
+(de même pour |right-shorten|) ;
\item \Definition{shorten}, qui est la conjonction des clés |left-shorten| et |right-shorten| ;
@@ -4426,7 +4436,7 @@
\subsection{La commande \textbackslash TikzEveryCell dans le \textbackslash CodeAfter}
-\index{SubMatrix@\texttt{\textbackslash TikzEveryCell} (commande du
+\index{tikzeverycell@\texttt{\textbackslash TikzEveryCell} (commande du
\texttt{\textbackslash CodeAfter}\newline et du
\texttt{\textbackslash CodeBefore})|textbf}
\label{TikzEveryCell}
@@ -4481,7 +4491,8 @@
\bigskip
-La commande |\TikzEveryCell| possède deux clés :
+La commande |\TikzEveryCell| possède deux clés, utilisables en argument
+optionnel, entre crochets.
\begin{itemize}
\item avec la clé \Definition{empty}, la commande ne s'applique qu'aux cases
vides ;
@@ -4489,7 +4500,36 @@
cases non vides.
\end{itemize}
+\medskip
+\begin{Code}[width=9cm]
+\renewcommand{\arraystretch}{1.4}
+\begin{NiceTabular}{cccccc}[hvlines]
+ P & O & U & R & V & U \\
+ O & & & E & I & \\
+ M & O & R & F & A & L \\
+ E & T & A & L & & E \\
+ L & A & S & E & R & S \\
+ O & & E & X & I & T
+\CodeAfter
+ \emph{\TikzEveryCell[empty]{fill=gray,draw}}
+\end{NiceTabular}
+\end{Code}
+\begin{scope}
+\renewcommand{\arraystretch}{1.4}
+\begin{NiceTabular}{cccccc}[hvlines]
+ P & O & U & R & V & U \\
+ O & & & E & I & \\
+ M & O & R & F & A & L \\
+ E & T & A & L & & E \\
+ L & A & S & E & R & S \\
+ O & & E & X & I & T
+\CodeAfter
+ \TikzEveryCell[empty]{fill=gray,draw}
+\end{NiceTabular}
+\end{scope}
+
+
\medskip
La commande |\TikzEveryCell| est en fait aussi disponible dans le |\CodeBefore|.
@@ -5030,8 +5070,9 @@
\index{S (les colonnes S de \pkg{siunitx})}
\index{siunitx@\pkg{siunitx} (extension)}
-Si l'extension \pkg{siunitx} est chargée (avant ou après \pkg{nicematrix}), il est possible d'utiliser les colonnes
-de type |S| de \pkg{siunitx} dans les environnements de \pkg{nicematrix}. L'implémentation n'utilise explicitement
+Si l'extension \pkg{siunitx} est chargée (avant ou après \pkg{nicematrix}), il
+est possible d'utiliser les colonnes 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}.
\medskip
@@ -5093,8 +5134,9 @@
\label{rotate}
\index{rotate@\texttt{\textbackslash rotate}}
-Utilisée au début d'une case, la commande |\rotate| (fournie par \pkg{nicematrix}) compose le contenu après une
-rotation de 90° dans le sens direct.
+Utilisée au début d'une case, la commande |\rotate| (fournie par
+\pkg{nicematrix}) compose le contenu après une rotation de 90° dans le sens
+direct.
Dans l'exemple suivant, on l'utilise dans le |code-for-first-row|.\footnote{On
peut aussi l'utiliser dans |\RowStyle| (cf. p.~\pageref{RowStyle}).}
@@ -5196,7 +5238,8 @@
\end{bNiceArray}$
\end{Code}
%
-\[\begin{bNiceArray}{cccc|c}[small, last-col, code-for-last-col = \scriptscriptstyle, columns-width=3mm]
+\[\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
Modified: trunk/Master/texmf-dist/doc/latex/nicematrix/nicematrix.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/nicematrix/nicematrix.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/nicematrix/nicematrix.tex 2024-08-21 23:41:52 UTC (rev 72083)
+++ trunk/Master/texmf-dist/doc/latex/nicematrix/nicematrix.tex 2024-08-22 19:40:08 UTC (rev 72084)
@@ -143,9 +143,11 @@
\Vdots & \Vdots & \Vdots & \Ddots & \Vdots\\
L_n & a_{n1} & a_{n2} & \Cdots & a_{nn}
\end{bNiceArray}$\hspace{2cm}
-\begin{NiceTabular}{lSSSS}[code-before = \rowcolor{red!15}{1-2} \rowcolors{3}{blue!15}{}]
+\begin{NiceTabular}{lSSSS}%
+ [code-before = \rowcolor{red!15}{1-2} \rowcolors{3}{blue!15}{}]
\toprule
-\Block{2-1}{Product} & \multicolumn{3}{c}{dimensions (cm)} & \Block{2-1}{\rotate Price} \\
+\Block{2-1}{Product} & \multicolumn{3}{c}{dimensions (cm)}
+ & \Block{2-1}{\rotate Price} \\
\cmidrule(rl){2-4}
& L & l & h \\
\midrule
@@ -170,10 +172,9 @@
can upload the file |nicematrix.sty| in the repertory of your
project in order to take full advantage of the latest version de
\pkg{nicematrix}.\footnote{The latest version of the file
-|nicematrix.sty| may be downloaded from the \textsc{svn} server of
-TeXLive:\newline
+|nicematrix.sty| may be downloaded on the Github depot of \pkg{nicematrix}:\newline
\small
-\url{https:www.tug.org/svn/texlive/trunk/Master/texmf-dist/tex/latex/nicematrix/nicematrix.sty}}
+\url{https://github.com/fpantigny/nicematrix/releases}}
\medskip
This package can be used with |xelatex|, |lualatex|, |pdflatex| but also by
@@ -195,8 +196,9 @@
use these nodes to develop new features. As usual with \textsc{pgf}, the
coordinates of these nodes are written in the |aux| to be used on the next
compilation and that's why \pkg{nicematrix} may need \textbf{several
-compilations}.\footnote{If you use Overleaf, Overleaf will do automatically
-a sufficient number of compilations.}
+compilations}\footnote{If you use Overleaf, Overleaf will do automatically
+a sufficient number of compilations.}. One must not use the command |\nofiles|
+(which prevents the creation of the |aux| file).
\medskip
Most features of \pkg{nicematrix} may be used without explicit use of
@@ -660,9 +662,10 @@
\bigskip
\begin{Code}
\begin{NiceTabular}{cw{c}{2cm}w{c}{3cm}c}
-rose & tulip & daisy & dahlia \\
-violet & \emph{\Block[draw=red,fill=[RGB]{204,204,255},rounded-corners]{2-2}
- {\LARGE Some beautiful flowers}} & & marigold \\
+rose & tulip & daisy & dahlia \\
+violet
+ & \emph{\Block[draw=red,fill=[RGB]{204,204,255},rounded-corners]{2-2}
+ {\LARGE Some beautiful flowers}} & & marigold \\
& & marigold \\
iris & & & lis \\
arum & periwinkle & forget-me-not & hyacinth
@@ -1350,7 +1353,7 @@
shall be ensured that this new command is expandable in the TeX sens (by
using, for instance, |\NewExpandableDocumentCommand| of LaTeX3, |\newcommand|
of LaTeX or |\def| of TeX). Example:
- |\newcommand{\RedLine}{\Hline[color=red]}|}
+ |\NewDocumentCommand{\RedLine}{}{\Hline[color=red]}|}
\bigskip
@@ -2538,9 +2541,12 @@
There are several commands available (the first three ones are inspired by
\pkg{colortbl} but are \emph{independent} of \pkg{colortbl}):
\begin{itemize}
-\item \DefinitionCommand{cellcolor} which colorizes a cell;\footnote{However,
- this command cellcolor will delete the following spaces, which does not the
- command cellcolor of \pkg{colortbl}.}
+\item \DefinitionCommand{cellcolor} which colorizes a cell;\footnote{That
+ command cellcolor will delete the following spaces, which does not the
+ command cellcolor of \pkg{colortbl}. Moreover, if one wishes to define a
+ command above that command |rowcolor|, it must be protected in the TeX sens
+ (whereas, if it were the command |\rowcolor| of \pkg{colortbl}, one should
+ write a \emph{fully expandable} command).}
\item \DefinitionCommand{rowcolor} which must be used in a cell and which
colorizes the end of the row;\footnote{If you want a commande to color the
following $n$~rows, consider the command |\RowStyle| and its key |rowcolor|,
@@ -3363,8 +3369,8 @@
horizontally but also vertically.
\medskip
-Caution : the key |nullify-dots| has a name that may be confusing; that key does
-not imply that the dotted rules won't be drawn!
+\textbf{Caution}: the key |nullify-dots| has a name that may be confusing; that
+key does not imply that the dotted rules won't be drawn!
@@ -4330,7 +4336,7 @@
CodeAfter}
-\index{SubMatrix@\texttt{\textbackslash TikzEveryCell} (command of
+\index{tikzeverycell@\texttt{\textbackslash TikzEveryCell} (command of
\texttt{\textbackslash CodeAfter}\newline and
\texttt{\textbackslash CodeBefore})|textbf}
\label{TikzEveryCell}
@@ -4381,7 +4387,7 @@
\endgroup
\bigskip
-The command |\TikzEveryCell| has two keys:
+The command |\TikzEveryCell| has two optional keys, available between square brackets.
\begin{itemize}
\item with the key \Definition{empty}, the command only acts on the empty cells;
@@ -4389,6 +4395,35 @@
\end{itemize}
\medskip
+\begin{Code}[width=9cm]
+\renewcommand{\arraystretch}{1.4}
+\begin{NiceTabular}{cccccc}[hvlines]
+ P & O & U & R & V & U \\
+ O & & & E & I & \\
+ M & O & R & F & A & L \\
+ E & T & A & L & & E \\
+ L & A & S & E & R & S \\
+ O & & E & X & I & T
+\CodeAfter
+ \emph{\TikzEveryCell[empty]{fill=gray,draw}}
+\end{NiceTabular}
+\end{Code}
+\begin{scope}
+\renewcommand{\arraystretch}{1.4}
+\begin{NiceTabular}{cccccc}[hvlines]
+ P & O & U & R & V & U \\
+ O & & & E & I & \\
+ M & O & R & F & A & L \\
+ E & T & A & L & & E \\
+ L & A & S & E & R & S \\
+ O & & E & X & I & T
+\CodeAfter
+ \TikzEveryCell[empty]{fill=gray,draw}
+\end{NiceTabular}
+\end{scope}
+
+
+\medskip
The commmand |\TikzEveryCell| is, in fact, also available in the |\CodeBefore|.
Modified: trunk/Master/texmf-dist/source/latex/nicematrix/nicematrix-code.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/nicematrix/nicematrix-code.dtx 2024-08-21 23:41:52 UTC (rev 72083)
+++ trunk/Master/texmf-dist/source/latex/nicematrix/nicematrix-code.dtx 2024-08-22 19:40:08 UTC (rev 72084)
@@ -17,8 +17,8 @@
%
% \fi
% \iffalse
-\def\myfileversion{6.28b}
-\def\myfiledate{2024/06/29}
+\def\myfileversion{6.28c}
+\def\myfiledate{2024/08/22}
%
%
%<*batchfile>
@@ -2449,7 +2449,7 @@
%
% \bigskip
% \begin{macrocode}
-\keys_define:nn { NiceMatrix / xdots }
+\keys_define:nn { nicematrix / xdots }
{
shorten-start .code:n =
\hook_gput_code:nnn { begindocument } { . }
@@ -2509,7 +2509,7 @@
%
% \bigskip
% \begin{macrocode}
-\keys_define:nn { NiceMatrix / rules }
+\keys_define:nn { nicematrix / rules }
{
color .tl_set:N = \l_@@_rules_color_tl ,
color .value_required:n = true ,
@@ -2521,11 +2521,11 @@
%
%
% \bigskip
-% First, we define a set of keys ``|NiceMatrix / Global|'' which will be used
+% 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 }
+\keys_define:nn { nicematrix / Global }
{
ampersand-in-blocks .bool_set:N = \l_@@_amp_in_blocks_bool ,
ampersand-in-blocks .default:n = true ,
@@ -2537,7 +2537,7 @@
rounded-corners .dim_set:N = \l_@@_tab_rounded_corners_dim ,
rounded-corners .default:n = 4 pt ,
custom-line .code:n = \@@_custom_line:n { #1 } ,
- rules .code:n = \keys_set:nn { NiceMatrix / rules } { #1 } ,
+ rules .code:n = \keys_set:nn { nicematrix / rules } { #1 } ,
rules .value_required:n = true ,
standard-cline .bool_set:N = \l_@@_standard_cline_bool ,
standard-cline .default:n = true ,
@@ -2551,7 +2551,7 @@
cell-space-bottom-limit = #1 ,
} ,
cell-space-limits .value_required:n = true ,
- xdots .code:n = \keys_set:nn { NiceMatrix / xdots } { #1 } ,
+ xdots .code:n = \keys_set:nn { nicematrix / xdots } { #1 } ,
light-syntax .code:n =
\bool_set_true:N \l_@@_light_syntax_bool
\bool_set_false:N \l_@@_light_syntax_expanded_bool ,
@@ -2644,7 +2644,7 @@
% We define a set of keys used by the environments of \pkg{nicematrix} (but not
% by the command |\NiceMatrixOptions|).
% \begin{macrocode}
-\keys_define:nn { NiceMatrix / Env }
+\keys_define:nn { nicematrix / environments }
{
corners .clist_set:N = \l_@@_corners_clist ,
corners .default:n = { NW , SW , NE , SE } ,
@@ -2698,7 +2698,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\keys_define:nn { NiceMatrix / notes }
+\keys_define:nn { nicematrix / notes }
{
para .bool_set:N = \l_@@_notes_para_bool ,
para .default:n = true ,
@@ -2741,7 +2741,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\keys_define:nn { NiceMatrix / delimiters }
+\keys_define:nn { nicematrix / delimiters }
{
max-width .bool_set:N = \l_@@_delimiters_max_width_bool ,
max-width .default:n = true ,
@@ -2754,47 +2754,47 @@
% We begin the construction of the major sets of keys (used by the different
% user commands and environments).
% \begin{macrocode}
-\keys_define:nn { NiceMatrix }
+\keys_define:nn { nicematrix }
{
NiceMatrixOptions .inherit:n =
- { NiceMatrix / Global } ,
- NiceMatrixOptions / xdots .inherit:n = NiceMatrix / xdots ,
- NiceMatrixOptions / rules .inherit:n = NiceMatrix / rules ,
- NiceMatrixOptions / notes .inherit:n = NiceMatrix / notes ,
- NiceMatrixOptions / sub-matrix .inherit:n = NiceMatrix / sub-matrix ,
- SubMatrix / rules .inherit:n = NiceMatrix / rules ,
- CodeAfter / xdots .inherit:n = NiceMatrix / xdots ,
- CodeBefore / sub-matrix .inherit:n = NiceMatrix / sub-matrix ,
- CodeAfter / sub-matrix .inherit:n = NiceMatrix / sub-matrix ,
+ { nicematrix / Global } ,
+ NiceMatrixOptions / xdots .inherit:n = nicematrix / xdots ,
+ NiceMatrixOptions / rules .inherit:n = nicematrix / rules ,
+ NiceMatrixOptions / notes .inherit:n = nicematrix / notes ,
+ NiceMatrixOptions / sub-matrix .inherit:n = nicematrix / sub-matrix ,
+ SubMatrix / rules .inherit:n = nicematrix / rules ,
+ CodeAfter / xdots .inherit:n = nicematrix / xdots ,
+ CodeBefore / sub-matrix .inherit:n = nicematrix / sub-matrix ,
+ CodeAfter / sub-matrix .inherit:n = nicematrix / sub-matrix ,
NiceMatrix .inherit:n =
{
- NiceMatrix / Global ,
- NiceMatrix / Env ,
+ nicematrix / Global ,
+ nicematrix / environments ,
} ,
- NiceMatrix / xdots .inherit:n = NiceMatrix / xdots ,
- NiceMatrix / rules .inherit:n = NiceMatrix / rules ,
+ NiceMatrix / xdots .inherit:n = nicematrix / xdots ,
+ NiceMatrix / rules .inherit:n = nicematrix / rules ,
NiceTabular .inherit:n =
{
- NiceMatrix / Global ,
- NiceMatrix / Env
+ nicematrix / Global ,
+ nicematrix / environments
} ,
- NiceTabular / xdots .inherit:n = NiceMatrix / xdots ,
- NiceTabular / rules .inherit:n = NiceMatrix / rules ,
- NiceTabular / notes .inherit:n = NiceMatrix / notes ,
+ NiceTabular / xdots .inherit:n = nicematrix / xdots ,
+ NiceTabular / rules .inherit:n = nicematrix / rules ,
+ NiceTabular / notes .inherit:n = nicematrix / notes ,
NiceArray .inherit:n =
{
- NiceMatrix / Global ,
- NiceMatrix / Env ,
+ nicematrix / Global ,
+ nicematrix / environments ,
} ,
- NiceArray / xdots .inherit:n = NiceMatrix / xdots ,
- NiceArray / rules .inherit:n = NiceMatrix / rules ,
+ NiceArray / xdots .inherit:n = nicematrix / xdots ,
+ NiceArray / rules .inherit:n = nicematrix / rules ,
pNiceArray .inherit:n =
{
- NiceMatrix / Global ,
- NiceMatrix / Env ,
+ nicematrix / Global ,
+ nicematrix / environments ,
} ,
- pNiceArray / xdots .inherit:n = NiceMatrix / xdots ,
- pNiceArray / rules .inherit:n = NiceMatrix / rules ,
+ pNiceArray / xdots .inherit:n = nicematrix / xdots ,
+ pNiceArray / rules .inherit:n = nicematrix / rules ,
}
% \end{macrocode}
%
@@ -2801,16 +2801,16 @@
%
% \bigskip
% We finalise the definition of the set of keys
-% ``|NiceMatrix / NiceMatrixOptions|'' with the options specific to
+% ``|nicematrix / NiceMatrixOptions|'' with the options specific to
% |\NiceMatrixOptions|.
% \begin{macrocode}
-\keys_define:nn { NiceMatrix / NiceMatrixOptions }
+\keys_define:nn { nicematrix / NiceMatrixOptions }
{
delimiters / color .tl_set:N = \l_@@_delimiters_color_tl ,
delimiters / color .value_required:n = true ,
delimiters / max-width .bool_set:N = \l_@@_delimiters_max_width_bool ,
delimiters / max-width .default:n = true ,
- delimiters .code:n = \keys_set:nn { NiceMatrix / delimiters } { #1 } ,
+ delimiters .code:n = \keys_set:nn { nicematrix / delimiters } { #1 } ,
delimiters .value_required:n = true ,
width .dim_set:N = \l_@@_width_dim ,
width .value_required:n = true ,
@@ -2858,9 +2858,9 @@
allow-duplicate-names .code:n =
\@@_msg_redirect_name:nn { Duplicate~name } { none } ,
allow-duplicate-names .value_forbidden:n = true ,
- notes .code:n = \keys_set:nn { NiceMatrix / notes } { #1 } ,
+ notes .code:n = \keys_set:nn { nicematrix / notes } { #1 } ,
notes .value_required:n = true ,
- sub-matrix .code:n = \keys_set:nn { NiceMatrix / sub-matrix } { #1 } ,
+ sub-matrix .code:n = \keys_set:nn { nicematrix / sub-matrix } { #1 } ,
sub-matrix .value_required:n = true ,
matrix / columns-type .tl_set:N = \l_@@_columns_type_tl ,
matrix / columns-type .value_required:n = true ,
@@ -2878,17 +2878,17 @@
% current TeX group.
% \begin{macrocode}
\NewDocumentCommand \NiceMatrixOptions { m }
- { \keys_set:nn { NiceMatrix / NiceMatrixOptions } { #1 } }
+ { \keys_set:nn { nicematrix / NiceMatrixOptions } { #1 } }
% \end{macrocode}
%
%
% \bigskip
-% We finalise the definition of the set of keys ``|NiceMatrix / NiceMatrix|''.
+% We finalise the definition of the set of keys ``|nicematrix / NiceMatrix|''.
% That set of keys will be used by |{NiceMatrix}|, |{pNiceMatrix}|,
% |{bNiceMatrix}|, etc.
%
% \begin{macrocode}
-\keys_define:nn { NiceMatrix / NiceMatrix }
+\keys_define:nn { nicematrix / NiceMatrix }
{
last-col .code:n = \tl_if_empty:nTF { #1 }
{
@@ -2904,7 +2904,7 @@
delimiters / color .value_required:n = true ,
delimiters / max-width .bool_set:N = \l_@@_delimiters_max_width_bool ,
delimiters / max-width .default:n = true ,
- delimiters .code:n = \keys_set:nn { NiceMatrix / delimiters } { #1 } ,
+ delimiters .code:n = \keys_set:nn { nicematrix / delimiters } { #1 } ,
delimiters .value_required:n = true ,
small .bool_set:N = \l_@@_small_bool ,
small .value_forbidden:n = true ,
@@ -2915,11 +2915,11 @@
%
%
% \bigskip
-% We finalise the definition of the set of keys ``|NiceMatrix / NiceArray|''
+% We finalise the definition of the set of keys ``|nicematrix / NiceArray|''
% with the options specific to |{NiceArray}|.
%
% \begin{macrocode}
-\keys_define:nn { NiceMatrix / NiceArray }
+\keys_define:nn { nicematrix / NiceArray }
{
% \end{macrocode}
%
@@ -2941,7 +2941,7 @@
%
%
% \begin{macrocode}
-\keys_define:nn { NiceMatrix / pNiceArray }
+\keys_define:nn { nicematrix / pNiceArray }
{
first-col .code:n = \int_zero:N \l_@@_first_col_int ,
last-col .code:n = \tl_if_empty:nF {#1}
@@ -2952,7 +2952,7 @@
delimiters / color .value_required:n = true ,
delimiters / max-width .bool_set:N = \l_@@_delimiters_max_width_bool ,
delimiters / max-width .default:n = true ,
- delimiters .code:n = \keys_set:nn { NiceMatrix / delimiters } { #1 } ,
+ delimiters .code:n = \keys_set:nn { nicematrix / delimiters } { #1 } ,
delimiters .value_required:n = true ,
small .bool_set:N = \l_@@_small_bool ,
small .value_forbidden:n = true ,
@@ -2963,11 +2963,11 @@
% \end{macrocode}
%
% \bigskip
-% We finalise the definition of the set of keys ``|NiceMatrix / NiceTabular|''
+% We finalise the definition of the set of keys ``|nicematrix / NiceTabular|''
% with the options specific to |{NiceTabular}|.
%
% \begin{macrocode}
-\keys_define:nn { NiceMatrix / NiceTabular }
+\keys_define:nn { nicematrix / NiceTabular }
{
% \end{macrocode}
% The dimension |width| will be used if at least a column of type |X| is used.
@@ -2976,7 +2976,7 @@
width .code:n = \dim_set:Nn \l_@@_width_dim { #1 }
\bool_set_true:N \l_@@_width_used_bool ,
width .value_required:n = true ,
- notes .code:n = \keys_set:nn { NiceMatrix / notes } { #1 } ,
+ notes .code:n = \keys_set:nn { nicematrix / notes } { #1 } ,
tabularnote .tl_gset:N = \g_@@_tabularnote_tl ,
tabularnote .value_required:n = true ,
caption .tl_set:N = \l_@@_caption_tl ,
@@ -3003,18 +3003,18 @@
% We \emph{must} put the following instructions \emph{after} the :
%
% \begin{verbatim}
-% CodeAfter / sub-matrix .inherit:n = NiceMatrix / sub-matrix
+% CodeAfter / sub-matrix .inherit:n = nicematrix / sub-matrix
% \end{verbatim}
%
% \begin{macrocode}
-\keys_define:nn { NiceMatrix / CodeAfter }
+\keys_define:nn { nicematrix / CodeAfter }
{
delimiters / color .tl_set:N = \l_@@_delimiters_color_tl ,
delimiters / color .value_required:n = true ,
- rules .code:n = \keys_set:nn { NiceMatrix / rules } { #1 } ,
+ rules .code:n = \keys_set:nn { nicematrix / rules } { #1 } ,
rules .value_required:n = true ,
- xdots .code:n = \keys_set:nn { NiceMatrix / xdots } { #1 } ,
- sub-matrix .code:n = \keys_set:nn { NiceMatrix / sub-matrix } { #1 } ,
+ xdots .code:n = \keys_set:nn { nicematrix / xdots } { #1 } ,
+ sub-matrix .code:n = \keys_set:nn { nicematrix / sub-matrix } { #1 } ,
sub-matrix .value_required:n = true ,
unknown .code:n = \@@_error:n { Unknown~key~for~CodeAfter }
}
@@ -4282,11 +4282,11 @@
%
% \bigskip
% \begin{macrocode}
-\keys_define:nn { NiceMatrix / CodeBefore }
+\keys_define:nn { nicematrix / CodeBefore }
{
create-cell-nodes .bool_gset:N = \g_@@_recreate_cell_nodes_bool ,
create-cell-nodes .default:n = true ,
- sub-matrix .code:n = \keys_set:nn { NiceMatrix / sub-matrix } { #1 } ,
+ sub-matrix .code:n = \keys_set:nn { nicematrix / sub-matrix } { #1 } ,
sub-matrix .value_required:n = true ,
delimiters / color .tl_set:N = \l_@@_delimiters_color_tl ,
delimiters / color .value_required:n = true ,
@@ -4298,7 +4298,7 @@
% \begin{macrocode}
\NewDocumentCommand \@@_CodeBefore_keys: { O { } }
{
- \keys_set:nn { NiceMatrix / CodeBefore } { #1 }
+ \keys_set:nn { nicematrix / CodeBefore } { #1 }
\@@_CodeBefore:w
}
% \end{macrocode}
@@ -4559,8 +4559,8 @@
% |{NiceArray}|, we have the options |t|, |c|, |b| and |baseline|.
% \begin{macrocode}
\bool_if:NTF \g_@@_delims_bool
- { \keys_set:nn { NiceMatrix / pNiceArray } }
- { \keys_set:nn { NiceMatrix / NiceArray } }
+ { \keys_set:nn { nicematrix / pNiceArray } }
+ { \keys_set:nn { nicematrix / NiceArray } }
{ #3 , #5 }
% \end{macrocode}
%
@@ -4592,7 +4592,7 @@
\skip_horizontal:N \l_@@_right_margin_dim
\skip_horizontal:N \l_@@_extra_right_margin_dim
- % % awful workaround
+ % awful workaround
\int_compare:nNnT \g_@@_col_total_int = \c_one_int
{
\dim_compare:nNnT \l_@@_columns_width_dim > \c_zero_dim
@@ -6153,6 +6153,24 @@
}
% \end{macrocode}
%
+% \bigskip
+% We want |\cellcolor| to be available in |\multicolumn| because |\cellcolor| of
+% \pkg{colortbl} is available in |\multicolumn|.
+% \begin{macrocode}
+ \RenewDocumentCommand \cellcolor { O { } m }
+ {
+ \@@_test_color_inside:
+ \tl_gput_right:Nx \g_@@_pre_code_before_tl
+ {
+ \@@_rectanglecolor [ ##1 ]
+ { \exp_not:n { ##2 } }
+ { \int_use:N \c at iRow - \int_use:N \c at jCol }
+ { \int_use:N \c at iRow - \int_eval:n { \c at jCol + #1 } }
+ }
+ \ignorespaces
+ }
+% \end{macrocode}
+%
% \medskip
% The following lines were in the original definition of |\multicolumn|.
% \begin{macrocode}
@@ -7487,7 +7505,7 @@
\bool_set_true:N \l_@@_last_col_without_value_bool
\int_set:Nn \l_@@_last_col_int { -1 }
}
- \keys_set:nn { NiceMatrix / NiceMatrix } { ##1 }
+ \keys_set:nn { nicematrix / NiceMatrix } { ##1 }
\@@_begin_of_NiceMatrix:nV { #1 } \l_@@_columns_type_tl
}
{ \use:c { end #1 NiceArray } }
@@ -7505,7 +7523,7 @@
\bool_set_true:N \l_@@_last_col_without_value_bool
\int_set:Nn \l_@@_last_col_int { -1 }
}
- \keys_set:nn { NiceMatrix / NiceMatrix } { #1 }
+ \keys_set:nn { nicematrix / NiceMatrix } { #1 }
\bool_lazy_or:nnT
{ \clist_if_empty_p:N \l_@@_vlines_clist }
{ \l_@@_except_borders_bool }
@@ -7536,7 +7554,7 @@
\dim_compare:nNnT \l_@@_width_dim = \c_zero_dim
{ \dim_set_eq:NN \l_@@_width_dim \linewidth }
\str_gset:Nn \g_@@_name_env_str { NiceTabular }
- \keys_set:nn { NiceMatrix / NiceTabular } { #1 , #3 }
+ \keys_set:nn { nicematrix / NiceTabular } { #1 , #3 }
\tl_if_empty:NF \l_@@_short_caption_tl
{
\tl_if_empty:NT \l_@@_caption_tl
@@ -7588,7 +7606,7 @@
\str_gset:Nn \g_@@_name_env_str { NiceTabularX }
\dim_zero_new:N \l_@@_width_dim
\dim_set:Nn \l_@@_width_dim { #1 }
- \keys_set:nn { NiceMatrix / NiceTabular } { #2 , #4 }
+ \keys_set:nn { nicematrix / NiceTabular } { #2 , #4 }
\@@_settings_for_tabular:
\NiceArray { #3 }
}
@@ -7605,7 +7623,7 @@
{
\str_gset:Nn \g_@@_name_env_str { NiceTabular* }
\dim_set:Nn \l_@@_tabular_width_dim { #1 }
- \keys_set:nn { NiceMatrix / NiceTabular } { #2 , #4 }
+ \keys_set:nn { nicematrix / NiceTabular } { #2 , #4 }
\@@_settings_for_tabular:
\NiceArray { #3 }
}
@@ -7969,7 +7987,7 @@
% the |\CodeBefore.|
% \begin{macrocode}
\NewDocumentCommand \@@_CodeAfter_keys: { O { } }
- { \keys_set:nn { NiceMatrix / CodeAfter } { #1 } }
+ { \keys_set:nn { nicematrix / CodeAfter } { #1 } }
% \end{macrocode}
%
%
@@ -8578,7 +8596,7 @@
\int_compare:nNnT { #1 } = \l_@@_last_row_int
{ \color { nicematrix-last-row } }
}
- \keys_set:nn { NiceMatrix / xdots } { #3 }
+ \keys_set:nn { nicematrix / xdots } { #3 }
\tl_if_empty:oF \l_@@_xdots_color_tl { \color { \l_@@_xdots_color_tl } }
\@@_actually_draw_Ldots:
\group_end:
@@ -8673,7 +8691,7 @@
\int_compare:nNnT { #1 } = \l_@@_last_row_int
{ \color { nicematrix-last-row } }
}
- \keys_set:nn { NiceMatrix / xdots } { #3 }
+ \keys_set:nn { nicematrix / xdots } { #3 }
\tl_if_empty:oF \l_@@_xdots_color_tl { \color { \l_@@_xdots_color_tl } }
\@@_actually_draw_Cdots:
\group_end:
@@ -8801,7 +8819,7 @@
\int_compare:nNnT { #2 } = \l_@@_last_col_int
{ \color { nicematrix-last-col } }
}
- \keys_set:nn { NiceMatrix / xdots } { #3 }
+ \keys_set:nn { nicematrix / xdots } { #3 }
\tl_if_empty:oF \l_@@_xdots_color_tl
{ \color { \l_@@_xdots_color_tl } }
\@@_actually_draw_Vdots:
@@ -8950,7 +8968,7 @@
% \begin{macrocode}
\group_begin:
\@@_open_shorten:
- \keys_set:nn { NiceMatrix / xdots } { #3 }
+ \keys_set:nn { nicematrix / xdots } { #3 }
\tl_if_empty:oF \l_@@_xdots_color_tl { \color { \l_@@_xdots_color_tl } }
\@@_actually_draw_Ddots:
\group_end:
@@ -9014,11 +9032,14 @@
% extremity of the line by modifying the coordinate |\l_@@_x_initial_dim|.
% \begin{macrocode}
{
- \dim_set:Nn \l_@@_y_final_dim
- {
- \l_@@_y_initial_dim +
- ( \l_@@_x_final_dim - \l_@@_x_initial_dim ) *
- \dim_ratio:nn \g_@@_delta_y_one_dim \g_@@_delta_x_one_dim
+ \dim_compare:nNnF \g_@@_delta_x_one_dim = \c_zero_dim
+ {
+ \dim_set:Nn \l_@@_y_final_dim
+ {
+ \l_@@_y_initial_dim +
+ ( \l_@@_x_final_dim - \l_@@_x_initial_dim ) *
+ \dim_ratio:nn \g_@@_delta_y_one_dim \g_@@_delta_x_one_dim
+ }
}
}
}
@@ -9045,7 +9066,7 @@
% \begin{macrocode}
\group_begin:
\@@_open_shorten:
- \keys_set:nn { NiceMatrix / xdots } { #3 }
+ \keys_set:nn { nicematrix / xdots } { #3 }
\tl_if_empty:oF \l_@@_xdots_color_tl { \color { \l_@@_xdots_color_tl } }
\@@_actually_draw_Iddots:
\group_end:
@@ -9090,11 +9111,14 @@
{ \l_@@_y_final_dim - \l_@@_y_initial_dim }
}
{
- \dim_set:Nn \l_@@_y_final_dim
- {
- \l_@@_y_initial_dim +
- ( \l_@@_x_final_dim - \l_@@_x_initial_dim ) *
- \dim_ratio:nn \g_@@_delta_y_two_dim \g_@@_delta_x_two_dim
+ \dim_compare:nNnF \g_@@_delta_x_two_dim = \c_zero_dim
+ {
+ \dim_set:Nn \l_@@_y_final_dim
+ {
+ \l_@@_y_initial_dim +
+ ( \l_@@_x_final_dim - \l_@@_x_initial_dim ) *
+ \dim_ratio:nn \g_@@_delta_y_two_dim \g_@@_delta_x_two_dim
+ }
}
}
}
@@ -9603,7 +9627,7 @@
\l_@@_last_col_int { \@@_error:nn { in~last~col } \Ddots }
}
{
- \keys_set_known:nn { NiceMatrix / Ddots } { #1 }
+ \keys_set_known:nn { nicematrix / Ddots } { #1 }
\@@_instruction_of_type:nnn \l_@@_draw_first_bool { Ddots }
{ #1 , down = #2 , up = #3 , middle = #4 }
}
@@ -9633,7 +9657,7 @@
\l_@@_last_col_int { \@@_error:nn { in~last~col } \Iddots }
}
{
- \keys_set_known:nn { NiceMatrix / Ddots } { #1 }
+ \keys_set_known:nn { nicematrix / Ddots } { #1 }
\@@_instruction_of_type:nnn \l_@@_draw_first_bool { Iddots }
{ #1 , down = #2 , up = #3 , middle = #4 }
}
@@ -9651,7 +9675,7 @@
% Despite its name, the following set of keys will be used for |\Ddots| but also
% for |\Iddots|.
% \begin{macrocode}
-\keys_define:nn { NiceMatrix / Ddots }
+\keys_define:nn { nicematrix / Ddots }
{
draw-first .bool_set:N = \l_@@_draw_first_bool ,
draw-first .default:n = true ,
@@ -9810,7 +9834,7 @@
{ \color { nicematrix-last-row } }
}
- \keys_set:nn { NiceMatrix / xdots } { #4 }
+ \keys_set:nn { nicematrix / xdots } { #4 }
\tl_if_empty:oF \l_@@_xdots_color_tl { \color { \l_@@_xdots_color_tl } }
\@@_actually_draw_Ldots:
\group_end:
@@ -9916,7 +9940,7 @@
\int_compare:nNnT { #2 } = \g_@@_col_total_int
{ \color { nicematrix-last-col } }
}
- \keys_set:nn { NiceMatrix / xdots } { #4 }
+ \keys_set:nn { nicematrix / xdots } { #4 }
\tl_if_empty:oF \l_@@_xdots_color_tl { \color { \l_@@_xdots_color_tl } }
\@@_actually_draw_Vdots:
\group_end:
@@ -9943,7 +9967,7 @@
\peek_remove_spaces:n
{
\bool_gset_true:N \g_@@_rotate_bool
- \keys_set:nn { NiceMatrix / rotate } { #1 }
+ \keys_set:nn { nicematrix / rotate } { #1 }
}
}
% \end{macrocode}
@@ -9950,7 +9974,7 @@
%
% \bigskip
% \begin{macrocode}
-\keys_define:nn { NiceMatrix / rotate }
+\keys_define:nn { nicematrix / rotate }
{
c .code:n = \bool_gset_true:N \g_@@_rotate_c_bool ,
c .value_forbidden:n = true ,
@@ -10004,7 +10028,7 @@
\exp_args:NNo \NewDocumentCommand \@@_line \l_@@_argspec_tl
{
\group_begin:
- \keys_set:nn { NiceMatrix / xdots } { #1 , #4 , down = #5 , up = #6 }
+ \keys_set:nn { nicematrix / xdots } { #1 , #4 , down = #5 , up = #6 }
\tl_if_empty:oF \l_@@_xdots_color_tl { \color { \l_@@_xdots_color_tl } }
\use:e
{
@@ -10125,7 +10149,7 @@
% \end{macrocode}
% \medskip
% \begin{macrocode}
-\keys_define:nn { NiceMatrix / RowStyle }
+\keys_define:nn { nicematrix / RowStyle }
{
cell-space-top-limit .dim_set:N = \l_tmpa_dim ,
cell-space-top-limit .value_required:n = true ,
@@ -10162,7 +10186,7 @@
\int_set_eq:NN \l_@@_key_nb_rows_int \c_one_int
\dim_zero:N \l_tmpa_dim
\dim_zero:N \l_tmpb_dim
- \keys_set:nn { NiceMatrix / RowStyle } { #1 }
+ \keys_set:nn { nicematrix / RowStyle } { #1 }
% \end{macrocode}
% If the key |rowcolor| has been used.
% \begin{macrocode}
@@ -10608,7 +10632,7 @@
%
% \bigskip
% \begin{macrocode}
-\keys_define:nn { NiceMatrix / rowcolors }
+\keys_define:nn { nicematrix / rowcolors }
{
respect-blocks .bool_set:N = \l_@@_respect_blocks_bool ,
respect-blocks .default:n = true ,
@@ -10645,7 +10669,7 @@
\seq_set_split:Nnn \l_@@_colors_seq { , } { #3 }
\tl_clear_new:N \l_@@_cols_tl
\cs_set_nopar:Npn \l_@@_cols_tl { - }
- \keys_set:nn { NiceMatrix / rowcolors } { #4 }
+ \keys_set:nn { nicematrix / rowcolors } { #4 }
% \end{macrocode}
% The counter |\l_@@_color_int| will be the rank of the current color in the list of
% colors (modulo the length of the list).
@@ -11304,7 +11328,7 @@
% However, unknown keys will be analyzed further with another set of keys.
%
% \begin{macrocode}
-\keys_define:nn { NiceMatrix / Rules }
+\keys_define:nn { nicematrix / Rules }
{
position .int_set:N = \l_@@_position_int ,
position .value_required:n = true ,
@@ -11327,7 +11351,7 @@
% following set of keys.
%
% \begin{macrocode}
-\keys_define:nn { NiceMatrix / RulesBis }
+\keys_define:nn { nicematrix / RulesBis }
{
multiplicity .int_set:N = \l_@@_multiplicity_int ,
multiplicity .initial:n = 1 ,
@@ -11378,7 +11402,7 @@
% \begin{macrocode}
\group_begin:
\int_set_eq:NN \l_@@_end_int \c at iRow
- \keys_set_known:nnN { NiceMatrix / Rules } { #1 } \l_@@_other_keys_tl
+ \keys_set_known:nnN { nicematrix / Rules } { #1 } \l_@@_other_keys_tl
% \end{macrocode}
% The following test is for the case where the user does not use all the columns
% specified in the preamble of the environment (for instance, a preamble of
@@ -11477,7 +11501,7 @@
\cs_new_protected:Npn \@@_vline_ii:
{
\tl_clear:N \l_@@_tikz_rule_tl
- \keys_set:nV { NiceMatrix / RulesBis } \l_@@_other_keys_tl
+ \keys_set:nV { nicematrix / RulesBis } \l_@@_other_keys_tl
\bool_if:NTF \l_@@_dotted_bool
\@@_vline_iv:
{
@@ -11633,7 +11657,7 @@
% \bigskip
% The following command will be executed in the internal |\CodeAfter|. The
% argument |#1| is a list of \textsl{key=value} pairs of the form
-% |{NiceMatrix/Rules}|.
+% |{nicematrix/Rules}|.
% \begin{macrocode}
\cs_new_protected:Npn \@@_hline:n #1
{
@@ -11643,7 +11667,7 @@
\group_begin:
\int_zero_new:N \l_@@_end_int
\int_set_eq:NN \l_@@_end_int \c at jCol
- \keys_set_known:nnN { NiceMatrix / Rules } { #1 } \l_@@_other_keys_tl
+ \keys_set_known:nnN { nicematrix / Rules } { #1 } \l_@@_other_keys_tl
\@@_hline_i:
\group_end:
}
@@ -11738,7 +11762,7 @@
\cs_new_protected:Npn \@@_hline_ii:
{
\tl_clear:N \l_@@_tikz_rule_tl
- \keys_set:nV { NiceMatrix / RulesBis } \l_@@_other_keys_tl
+ \keys_set:nV { nicematrix / RulesBis } \l_@@_other_keys_tl
\bool_if:NTF \l_@@_dotted_bool
\@@_hline_iv:
{
@@ -12018,7 +12042,7 @@
\str_clear_new:N \l_@@_ccommand_str
\str_clear_new:N \l_@@_letter_str
\tl_clear_new:N \l_@@_other_keys_tl
- \keys_set_known:nnN { NiceMatrix / custom-line } { #1 } \l_@@_other_keys_tl
+ \keys_set_known:nnN { nicematrix / custom-line } { #1 } \l_@@_other_keys_tl
% \end{macrocode}
% If the final user only wants to draw horizontal rules, he does not need to
% specify a letter (for the vertical rules in the preamble of the array). On the
@@ -12040,7 +12064,7 @@
%
%
% \begin{macrocode}
-\keys_define:nn { NiceMatrix / custom-line }
+\keys_define:nn { nicematrix / custom-line }
{
letter .str_set:N = \l_@@_letter_str ,
letter .value_required:n = true ,
@@ -12064,7 +12088,7 @@
\bool_set_false:N \l_@@_color_bool
% \end{macrocode}
% \begin{macrocode}
- \keys_set:nn { NiceMatrix / custom-line-bis } { #1 }
+ \keys_set:nn { nicematrix / custom-line-bis } { #1 }
\bool_if:NT \l_@@_tikz_rule_bool
{
\IfPackageLoadedTF { tikz }
@@ -12112,10 +12136,10 @@
% The previous command |\@@_custom_line_i:n| uses the following set of keys.
% However, the whole definition of the customized lines (as provided by the
% final user as argument of |custom-line|) will also be used further with
-% other sets of keys (for instance |{NiceMatrix/Rules}|). That's why the
+% other sets of keys (for instance |{nicematrix/Rules}|). That's why the
% following set of keys has some keys which are no-op.
% \begin{macrocode}
-\keys_define:nn { NiceMatrix / custom-line-bis }
+\keys_define:nn { nicematrix / custom-line-bis }
{
multiplicity .int_set:N = \l_@@_multiplicity_int ,
multiplicity .initial:n = 1 ,
@@ -12150,7 +12174,7 @@
% deprecated and has been replaced by the key |total-width|.
%
% \begin{macrocode}
-\keys_define:nn { NiceMatrix / custom-line-width }
+\keys_define:nn { nicematrix / custom-line-width }
{
multiplicity .int_set:N = \l_@@_multiplicity_int ,
multiplicity .initial:n = 1 ,
@@ -12240,7 +12264,7 @@
\bool_set_false:N \l_@@_tikz_rule_bool
\bool_set_false:N \l_@@_total_width_bool
\bool_set_false:N \l_@@_dotted_rule_bool
- \keys_set_known:nn { NiceMatrix / custom-line-width } { #1 }
+ \keys_set_known:nn { nicematrix / custom-line-width } { #1 }
\bool_if:NF \l_@@_total_width_bool
{
\bool_if:NTF \l_@@_dotted_rule_bool
@@ -12566,7 +12590,7 @@
% Up to now, there is only one option available for the environment
% |{NiceMatrixBlock}|.
% \begin{macrocode}
-\keys_define:nn { NiceMatrix / NiceMatrixBlock }
+\keys_define:nn { nicematrix / NiceMatrixBlock }
{
auto-columns-width .code:n =
{
@@ -12583,7 +12607,7 @@
{
\int_gincr:N \g_@@_NiceMatrixBlock_int
\dim_zero:N \l_@@_columns_width_dim
- \keys_set:nn { NiceMatrix / NiceMatrixBlock } { #1 }
+ \keys_set:nn { nicematrix / NiceMatrixBlock } { #1 }
\bool_if:NT \l_@@_block_auto_columns_width_bool
{
\cs_if_exist:cT
@@ -12998,7 +13022,7 @@
% array (and once again when the block will be put in the array).
% Here is the set of keys for the first pass (in the cell of the array).
% \begin{macrocode}
-\keys_define:nn { NiceMatrix / Block / FirstPass }
+\keys_define:nn { nicematrix / Block / FirstPass }
{
j .code:n = \str_set:Nn \l_@@_hpos_block_str j
\bool_set_true:N \l_@@_p_block_bool ,
@@ -13042,6 +13066,7 @@
% \end{macrocode}
%
%
+%
% The following command |\@@_Block:| will be linked to |\Block| in the
% environments of \pkg{nicematrix}. We define it with
% |\NewExpandableDocumentCommand| because it has an optional argument between~
@@ -13139,7 +13164,7 @@
%
% \medskip
% \begin{macrocode}
- \keys_set_known:nn { NiceMatrix / Block / FirstPass } { #3 }
+ \keys_set_known:nn { nicematrix / Block / FirstPass } { #3 }
% \end{macrocode}
%
% \begin{macrocode}
@@ -13182,11 +13207,11 @@
\l_@@_X_bool { \exp_args:Nee \@@_Block_v:nnnnn }
{ \tl_if_empty_p:n { #5 } } { \exp_args:Nee \@@_Block_v:nnnnn }
{ \int_compare_p:nNn \l_tmpa_int = \c_one_int }
- { \exp_args:Nee \@@_Block_iv:nnnnn }
+ { \exp_args:Nee \@@_Block_iv:nnnnn }
{ \int_compare_p:nNn \l_tmpb_int = \c_one_int }
- { \exp_args:Nee \@@_Block_iv:nnnnn }
- }
- { \exp_args:Nee \@@_Block_v:nnnnn }
+ { \exp_args:Nee \@@_Block_iv:nnnnn }
+ }
+ { \exp_args:Nee \@@_Block_v:nnnnn }
{ \l_tmpa_int } { \l_tmpb_int } { #3 } { #4 } { #5 }
}
% \end{macrocode}
@@ -13254,10 +13279,42 @@
\int_compare:nNnT { #1 } = \c_one_int
{
\int_if_zero:nTF \c at iRow
- \l_@@_code_for_first_row_tl
+ {
+% \end{macrocode}
+%
+% \bigskip
+% In the following code, the value of |code-for-first-row| contains a |\Block|
+% (in order to have the ``first row'' centered). But, that block will be
+% executed, since it is entirely contained in the first row, the value of
+% |code-for-first-row| will be inserted once again... with the same command
+% |\Block|. That's why we have to nullify the command |\Block.|
+% \begin{Verbatim}
+% $\begin{bNiceMatrix}%
+% [
+% r,
+% first-row,
+% last-col,
+% code-for-first-row = \Block{}{\scriptstyle\color{blue} \arabic{jCol}},
+% code-for-last-col = \scriptstyle \color{blue} \arabic{iRow}
+% ]
+% & & & & \\
+% -2 & 3 & -4 & 5 & \\
+% 3 & -4 & 5 & -6 & \\
+% -4 & 5 & -6 & 7 & \\
+% 5 & -6 & 7 & -8 & \\
+% \end{bNiceMatrix}$
+% \end{Verbatim}
+%
+% \begin{macrocode}
+ \cs_set_eq:NN \Block \@@_NullBlock:
+ \l_@@_code_for_first_row_tl
+ }
{
\int_compare:nNnT \c at iRow = \l_@@_last_row_int
- \l_@@_code_for_last_row_tl
+ {
+ \cs_set_eq:NN \Block \@@_NullBlock:
+ \l_@@_code_for_last_row_tl
+ }
}
\g_@@_row_style_tl
}
@@ -13614,7 +13671,7 @@
%
% \medskip
% \begin{macrocode}
-\keys_define:nn { NiceMatrix / Block / SecondPass }
+\keys_define:nn { nicematrix / Block / SecondPass }
{
ampersand-in-blocks .bool_set:N = \l_@@_amp_in_blocks_bool ,
ampersand-in-blocks .default:n = true ,
@@ -13785,7 +13842,7 @@
\group_begin:
\int_compare:nNnT { #1 } = { #3 }
{ \str_set:Nn \l_@@_vpos_block_str { t } }
- \keys_set:nn { NiceMatrix / Block / SecondPass } { #5 }
+ \keys_set:nn { nicematrix / Block / SecondPass } { #5 }
% \end{macrocode}
%
%
@@ -14190,6 +14247,9 @@
}
\endpgfpicture
}
+% \end{macrocode}
+% Now the case where there is no ampersand |&| in the content of the block.
+% \begin{macrocode}
{
\bool_if:NTF \l_@@_p_block_bool
{
@@ -14391,6 +14451,7 @@
% \end{macrocode}
%
%
+%
% \bigskip
% The first argument of |\@@_stroke_block:nnn| is a list of options for the
% rectangle that you will stroke. The second argument is the upper-left cell of
@@ -14402,7 +14463,7 @@
\group_begin:
\tl_clear:N \l_@@_draw_tl
\dim_set_eq:NN \l_@@_line_width_dim \arrayrulewidth
- \keys_set_known:nn { NiceMatrix / BlockStroke } { #1 }
+ \keys_set_known:nn { nicematrix / BlockStroke } { #1 }
\pgfpicture
\pgfrememberpicturepositiononpagetrue
\pgf at relevantforpicturesizefalse
@@ -14456,7 +14517,7 @@
%
% Here is the set of keys for the command |\@@_stroke_block:nnn|.
% \begin{macrocode}
-\keys_define:nn { NiceMatrix / BlockStroke }
+\keys_define:nn { nicematrix / BlockStroke }
{
color .tl_set:N = \l_@@_draw_tl ,
draw .code:n =
@@ -14478,7 +14539,7 @@
\cs_new_protected:Npn \@@_vlines_block:nnn #1 #2 #3
{
\dim_set_eq:NN \l_@@_line_width_dim \arrayrulewidth
- \keys_set_known:nn { NiceMatrix / BlockBorders } { #1 }
+ \keys_set_known:nn { nicematrix / BlockBorders } { #1 }
\@@_cut_on_hyphen:w #2 \q_stop
\tl_set_eq:NN \l_@@_tmpc_tl \l_tmpa_tl
\tl_set_eq:NN \l_@@_tmpd_tl \l_tmpb_tl
@@ -14502,7 +14563,7 @@
\cs_new_protected:Npn \@@_hlines_block:nnn #1 #2 #3
{
\dim_set_eq:NN \l_@@_line_width_dim \arrayrulewidth
- \keys_set_known:nn { NiceMatrix / BlockBorders } { #1 }
+ \keys_set_known:nn { nicematrix / BlockBorders } { #1 }
\@@_cut_on_hyphen:w #2 \q_stop
\tl_set_eq:NN \l_@@_tmpc_tl \l_tmpa_tl
\tl_set_eq:NN \l_@@_tmpd_tl \l_tmpb_tl
@@ -14534,13 +14595,13 @@
\cs_new_protected:Npn \@@_stroke_borders_block:nnn #1 #2 #3
{
\dim_set_eq:NN \l_@@_line_width_dim \arrayrulewidth
- \keys_set_known:nn { NiceMatrix / BlockBorders } { #1 }
+ \keys_set_known:nn { nicematrix / BlockBorders } { #1 }
\dim_compare:nNnTF \l_@@_rounded_corners_dim > \c_zero_dim
{ \@@_error:n { borders~forbidden } }
{
\tl_clear_new:N \l_@@_borders_tikz_tl
\keys_set:nV
- { NiceMatrix / OnlyForTikzInBorders }
+ { nicematrix / OnlyForTikzInBorders }
\l_@@_borders_clist
\@@_cut_on_hyphen:w #2 \q_stop
\tl_set_eq:NN \l_@@_tmpc_tl \l_tmpa_tl
@@ -14584,7 +14645,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\keys_define:nn { NiceMatrix / OnlyForTikzInBorders }
+\keys_define:nn { nicematrix / OnlyForTikzInBorders }
{
tikz .code:n =
\cs_if_exist:NTF \tikzpicture
@@ -14653,7 +14714,7 @@
% \bigskip
% Here is the set of keys for the command |\@@_stroke_borders_block:nnn|.
% \begin{macrocode}
-\keys_define:nn { NiceMatrix / BlockBorders }
+\keys_define:nn { nicematrix / BlockBorders }
{
borders .clist_set:N = \l_@@_borders_clist ,
rounded-corners .dim_set:N = \l_@@_rounded_corners_dim ,
@@ -14677,7 +14738,7 @@
\@@_clip_with_rounded_corners:
\clist_map_inline:nn { #5 }
{
- \keys_set_known:nnN { NiceMatrix / SpecialOffset } { ##1 } \l_tmpa_tl
+ \keys_set_known:nnN { nicematrix / SpecialOffset } { ##1 } \l_tmpa_tl
\use:e { \exp_not:N \path [ \l_tmpa_tl ] }
(
[
@@ -14702,9 +14763,21 @@
%
% \medskip
% \begin{macrocode}
-\keys_define:nn { NiceMatrix / SpecialOffset }
+\keys_define:nn { nicematrix / SpecialOffset }
{ offset .dim_set:N = \l_@@_offset_dim }
% \end{macrocode}
+%
+% \bigskip
+% In some circonstancies, we want to nullify the command |\Block|. In order to
+% reach that goal, we will link the command |\Block| to the following command
+% |\@@_NullBlock:| which has the same syntax as the standard command |\Block|
+% but which is no-op.
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_NullBlock:
+ { \@@_collect_options:n { \@@_NullBlock_i: } }
+\NewExpandableDocumentCommand \@@_NullBlock_i: { m m D < > { } +m }
+ { }
+% \end{macrocode}
%
%
% \section{How to draw the dotted lines transparently}
@@ -14738,7 +14811,7 @@
% We will extract some keys and pass the other keys to the environment
% |{NiceArrayWithDelims}|.
% \begin{macrocode}
-\keys_define:nn { NiceMatrix / Auto }
+\keys_define:nn { nicematrix / Auto }
{
columns-type .tl_set:N = \l_@@_columns_type_tl ,
columns-type .value_required:n = true ,
@@ -14749,7 +14822,7 @@
delimiters / color .value_required:n = true ,
delimiters / max-width .bool_set:N = \l_@@_delimiters_max_width_bool ,
delimiters / max-width .default:n = true ,
- delimiters .code:n = \keys_set:nn { NiceMatrix / delimiters } { #1 } ,
+ delimiters .code:n = \keys_set:nn { nicematrix / delimiters } { #1 } ,
delimiters .value_required:n = true ,
rounded-corners .dim_set:N = \l_@@_tab_rounded_corners_dim ,
rounded-corners .default:n = 4 pt
@@ -14770,7 +14843,7 @@
% The group is for the protection of the keys.
% \begin{macrocode}
\group_begin:
- \keys_set_known:nnN { NiceMatrix / Auto } { #6 } \l_tmpa_tl
+ \keys_set_known:nnN { nicematrix / Auto } { #6 } \l_tmpa_tl
\use:e
{
\exp_not:N \begin { NiceArrayWithDelims } { #1 } { #2 }
@@ -15139,7 +15212,7 @@
%
%
% \begin{macrocode}
-\keys_define:nn { NiceMatrix / sub-matrix }
+\keys_define:nn { nicematrix / sub-matrix }
{
extra-height .dim_set:N = \l_@@_submatrix_extra_height_dim ,
extra-height .value_required:n = true ,
@@ -15160,12 +15233,12 @@
hvlines .meta:n = { hlines, vlines } ,
hvlines .value_forbidden:n = true
}
-\keys_define:nn { NiceMatrix }
+\keys_define:nn { nicematrix }
{
- SubMatrix .inherit:n = NiceMatrix / sub-matrix ,
- NiceArray / sub-matrix .inherit:n = NiceMatrix / sub-matrix ,
- pNiceArray / sub-matrix .inherit:n = NiceMatrix / sub-matrix ,
- NiceMatrixOptions / sub-matrix .inherit:n = NiceMatrix / sub-matrix ,
+ SubMatrix .inherit:n = nicematrix / sub-matrix ,
+ NiceArray / sub-matrix .inherit:n = nicematrix / sub-matrix ,
+ pNiceArray / sub-matrix .inherit:n = nicematrix / sub-matrix ,
+ NiceMatrixOptions / sub-matrix .inherit:n = nicematrix / sub-matrix ,
}
% \end{macrocode}
%
@@ -15173,7 +15246,7 @@
% The following keys set is for the command |\SubMatrix| itself (not the tuning
% of |\SubMatrix| that can be done elsewhere).
% \begin{macrocode}
-\keys_define:nn { NiceMatrix / SubMatrix }
+\keys_define:nn { nicematrix / SubMatrix }
{
delimiters / color .tl_set:N = \l_@@_delimiters_color_tl ,
delimiters / color .value_required:n = true ,
@@ -15199,7 +15272,7 @@
{ \@@_error:n { Invalid~name } }
} ,
name .value_required:n = true ,
- rules .code:n = \keys_set:nn { NiceMatrix / rules } { #1 } ,
+ rules .code:n = \keys_set:nn { nicematrix / rules } { #1 } ,
rules .value_required:n = true ,
code .tl_set:N = \l_@@_code_tl ,
code .value_required:n = true ,
@@ -15331,7 +15404,7 @@
{ \@@_error:nn { Construct~too~large } { \SubMatrix } }
{
\str_clear_new:N \l_@@_submatrix_name_str
- \keys_set:nn { NiceMatrix / SubMatrix } { #5 }
+ \keys_set:nn { nicematrix / SubMatrix } { #5 }
\pgfpicture
\pgfrememberpicturepositiononpagetrue
\pgf at relevantforpicturesizefalse
@@ -15772,7 +15845,7 @@
%
% \medskip
% \begin{macrocode}
-\keys_define:nn { NiceMatrix / Brace }
+\keys_define:nn { nicematrix / Brace }
{
left-shorten .bool_set:N = \l_@@_brace_left_shorten_bool ,
left-shorten .default:n = true ,
@@ -15816,7 +15889,7 @@
}
{
\tl_clear:N \l_tmpa_tl
- \keys_set:nn { NiceMatrix / Brace } { #4 }
+ \keys_set:nn { nicematrix / Brace } { #4 }
\tl_if_empty:NF \l_tmpa_tl { \color { \l_tmpa_tl } }
\pgfpicture
\pgfrememberpicturepositiononpagetrue
@@ -15967,7 +16040,7 @@
\bool_new:N \l_@@_not_empty_bool
\bool_new:N \l_@@_empty_bool
-\keys_define:nn { NiceMatrix / TikzEveryCell }
+\keys_define:nn { nicematrix / TikzEveryCell }
{
not-empty .code:n =
\bool_lazy_or:nnTF
@@ -15992,7 +16065,7 @@
\IfPackageLoadedTF { tikz }
{
\group_begin:
- \keys_set:nn { NiceMatrix / TikzEveryCell } { #1 }
+ \keys_set:nn { nicematrix / TikzEveryCell } { #1 }
% \end{macrocode}
% The inner pair of braces in the following line is mandatory because, the last
% argument of |\@@_tikz:nnnnn| is \emph{a list of lists} of TikZ keys.
@@ -16282,7 +16355,7 @@
%
%
% \begin{macrocode}
-\keys_define:nn { NiceMatrix / Package }
+\keys_define:nn { nicematrix / Package }
{
renew-dots .bool_set:N = \l_@@_renew_dots_bool ,
renew-dots .value_forbidden:n = true ,
@@ -16295,7 +16368,7 @@
no-test-for-array .default:n = true ,
unknown .code:n = \@@_error:n { Unknown~key~for~package }
}
-\ProcessKeysOptions { NiceMatrix / Package }
+\ProcessKeysOptions { nicematrix / Package }
% \end{macrocode}
%
% \bigskip
@@ -17534,8 +17607,8 @@
% \end{macrocode}
%
% \medskip
-% This error message is used for the set of keys |NiceMatrix/NiceMatrix| and
-% |NiceMatrix/pNiceArray| (but not by |NiceMatrix/NiceArray| because, for this
+% This error message is used for the set of keys |nicematrix/NiceMatrix| and
+% |nicematrix/pNiceArray| (but not by |nicematrix/NiceArray| because, for this
% set of keys, there is no |l| and |r|).
% \begin{macrocode}
\@@_msg_new:nnn { Unknown~key~for~NiceMatrix }
Modified: trunk/Master/texmf-dist/tex/latex/nicematrix/nicematrix.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/nicematrix/nicematrix.sty 2024-08-21 23:41:52 UTC (rev 72083)
+++ trunk/Master/texmf-dist/tex/latex/nicematrix/nicematrix.sty 2024-08-22 19:40:08 UTC (rev 72084)
@@ -18,8 +18,8 @@
%% and version 1.3 or later is part of all distributions of
%% LaTeX version 2005/12/01 or later.
%%
-\def\myfileversion{6.28b}
-\def\myfiledate{2024/06/29}
+\def\myfileversion{6.28c}
+\def\myfiledate{2024/08/22}
\RequirePackage{pgfcore}
\usepgfmodule{shapes}
\RequirePackage{l3keys2e}
@@ -811,7 +811,7 @@
\tl_new:N \l__nicematrix_xdots_color_tl
\tl_new:N \l__nicematrix_delimiters_color_tl
\bool_new:N \l__nicematrix_delimiters_max_width_bool
-\keys_define:nn { NiceMatrix / xdots }
+\keys_define:nn { nicematrix / xdots }
{
shorten-start .code:n =
\hook_gput_code:nnn { begindocument } { . }
@@ -855,7 +855,7 @@
draw-first .code:n = \prg_do_nothing: ,
unknown .code:n = \__nicematrix_error:n { Unknown~key~for~xdots }
}
-\keys_define:nn { NiceMatrix / rules }
+\keys_define:nn { nicematrix / rules }
{
color .tl_set:N = \l__nicematrix_rules_color_tl ,
color .value_required:n = true ,
@@ -863,7 +863,7 @@
width .value_required:n = true ,
unknown .code:n = \__nicematrix_error:n { Unknown~key~for~rules }
}
-\keys_define:nn { NiceMatrix / Global }
+\keys_define:nn { nicematrix / Global }
{
ampersand-in-blocks .bool_set:N = \l__nicematrix_amp_in_blocks_bool ,
ampersand-in-blocks .default:n = true ,
@@ -875,7 +875,7 @@
rounded-corners .dim_set:N = \l__nicematrix_tab_rounded_corners_dim ,
rounded-corners .default:n = 4 pt ,
custom-line .code:n = \__nicematrix_custom_line:n { #1 } ,
- rules .code:n = \keys_set:nn { NiceMatrix / rules } { #1 } ,
+ rules .code:n = \keys_set:nn { nicematrix / rules } { #1 } ,
rules .value_required:n = true ,
standard-cline .bool_set:N = \l__nicematrix_standard_cline_bool ,
standard-cline .default:n = true ,
@@ -889,7 +889,7 @@
cell-space-bottom-limit = #1 ,
} ,
cell-space-limits .value_required:n = true ,
- xdots .code:n = \keys_set:nn { NiceMatrix / xdots } { #1 } ,
+ xdots .code:n = \keys_set:nn { nicematrix / xdots } { #1 } ,
light-syntax .code:n =
\bool_set_true:N \l__nicematrix_light_syntax_bool
\bool_set_false:N \l__nicematrix_light_syntax_expanded_bool ,
@@ -965,7 +965,7 @@
pgf-node-code .tl_set:N = \l__nicematrix_pgf_node_code_tl ,
pgf-node-code .value_required:n = true
}
-\keys_define:nn { NiceMatrix / Env }
+\keys_define:nn { nicematrix / environments }
{
corners .clist_set:N = \l__nicematrix_corners_clist ,
corners .default:n = { NW , SW , NE , SE } ,
@@ -1006,7 +1006,7 @@
color-inside .value_forbidden:n = true ,
colortbl-like .meta:n = color-inside
}
-\keys_define:nn { NiceMatrix / notes }
+\keys_define:nn { nicematrix / notes }
{
para .bool_set:N = \l__nicematrix_notes_para_bool ,
para .default:n = true ,
@@ -1046,7 +1046,7 @@
detect-duplicates .default:n = true ,
unknown .code:n = \__nicematrix_error:n { Unknown~key~for~notes }
}
-\keys_define:nn { NiceMatrix / delimiters }
+\keys_define:nn { nicematrix / delimiters }
{
max-width .bool_set:N = \l__nicematrix_delimiters_max_width_bool ,
max-width .default:n = true ,
@@ -1053,55 +1053,55 @@
color .tl_set:N = \l__nicematrix_delimiters_color_tl ,
color .value_required:n = true ,
}
-\keys_define:nn { NiceMatrix }
+\keys_define:nn { nicematrix }
{
NiceMatrixOptions .inherit:n =
- { NiceMatrix / Global } ,
- NiceMatrixOptions / xdots .inherit:n = NiceMatrix / xdots ,
- NiceMatrixOptions / rules .inherit:n = NiceMatrix / rules ,
- NiceMatrixOptions / notes .inherit:n = NiceMatrix / notes ,
- NiceMatrixOptions / sub-matrix .inherit:n = NiceMatrix / sub-matrix ,
- SubMatrix / rules .inherit:n = NiceMatrix / rules ,
- CodeAfter / xdots .inherit:n = NiceMatrix / xdots ,
- CodeBefore / sub-matrix .inherit:n = NiceMatrix / sub-matrix ,
- CodeAfter / sub-matrix .inherit:n = NiceMatrix / sub-matrix ,
+ { nicematrix / Global } ,
+ NiceMatrixOptions / xdots .inherit:n = nicematrix / xdots ,
+ NiceMatrixOptions / rules .inherit:n = nicematrix / rules ,
+ NiceMatrixOptions / notes .inherit:n = nicematrix / notes ,
+ NiceMatrixOptions / sub-matrix .inherit:n = nicematrix / sub-matrix ,
+ SubMatrix / rules .inherit:n = nicematrix / rules ,
+ CodeAfter / xdots .inherit:n = nicematrix / xdots ,
+ CodeBefore / sub-matrix .inherit:n = nicematrix / sub-matrix ,
+ CodeAfter / sub-matrix .inherit:n = nicematrix / sub-matrix ,
NiceMatrix .inherit:n =
{
- NiceMatrix / Global ,
- NiceMatrix / Env ,
+ nicematrix / Global ,
+ nicematrix / environments ,
} ,
- NiceMatrix / xdots .inherit:n = NiceMatrix / xdots ,
- NiceMatrix / rules .inherit:n = NiceMatrix / rules ,
+ NiceMatrix / xdots .inherit:n = nicematrix / xdots ,
+ NiceMatrix / rules .inherit:n = nicematrix / rules ,
NiceTabular .inherit:n =
{
- NiceMatrix / Global ,
- NiceMatrix / Env
+ nicematrix / Global ,
+ nicematrix / environments
} ,
- NiceTabular / xdots .inherit:n = NiceMatrix / xdots ,
- NiceTabular / rules .inherit:n = NiceMatrix / rules ,
- NiceTabular / notes .inherit:n = NiceMatrix / notes ,
+ NiceTabular / xdots .inherit:n = nicematrix / xdots ,
+ NiceTabular / rules .inherit:n = nicematrix / rules ,
+ NiceTabular / notes .inherit:n = nicematrix / notes ,
NiceArray .inherit:n =
{
- NiceMatrix / Global ,
- NiceMatrix / Env ,
+ nicematrix / Global ,
+ nicematrix / environments ,
} ,
- NiceArray / xdots .inherit:n = NiceMatrix / xdots ,
- NiceArray / rules .inherit:n = NiceMatrix / rules ,
+ NiceArray / xdots .inherit:n = nicematrix / xdots ,
+ NiceArray / rules .inherit:n = nicematrix / rules ,
pNiceArray .inherit:n =
{
- NiceMatrix / Global ,
- NiceMatrix / Env ,
+ nicematrix / Global ,
+ nicematrix / environments ,
} ,
- pNiceArray / xdots .inherit:n = NiceMatrix / xdots ,
- pNiceArray / rules .inherit:n = NiceMatrix / rules ,
+ pNiceArray / xdots .inherit:n = nicematrix / xdots ,
+ pNiceArray / rules .inherit:n = nicematrix / rules ,
}
-\keys_define:nn { NiceMatrix / NiceMatrixOptions }
+\keys_define:nn { nicematrix / NiceMatrixOptions }
{
delimiters / color .tl_set:N = \l__nicematrix_delimiters_color_tl ,
delimiters / color .value_required:n = true ,
delimiters / max-width .bool_set:N = \l__nicematrix_delimiters_max_width_bool ,
delimiters / max-width .default:n = true ,
- delimiters .code:n = \keys_set:nn { NiceMatrix / delimiters } { #1 } ,
+ delimiters .code:n = \keys_set:nn { nicematrix / delimiters } { #1 } ,
delimiters .value_required:n = true ,
width .dim_set:N = \l__nicematrix_width_dim ,
width .value_required:n = true ,
@@ -1121,9 +1121,9 @@
allow-duplicate-names .code:n =
\__nicematrix_msg_redirect_name:nn { Duplicate~name } { none } ,
allow-duplicate-names .value_forbidden:n = true ,
- notes .code:n = \keys_set:nn { NiceMatrix / notes } { #1 } ,
+ notes .code:n = \keys_set:nn { nicematrix / notes } { #1 } ,
notes .value_required:n = true ,
- sub-matrix .code:n = \keys_set:nn { NiceMatrix / sub-matrix } { #1 } ,
+ sub-matrix .code:n = \keys_set:nn { nicematrix / sub-matrix } { #1 } ,
sub-matrix .value_required:n = true ,
matrix / columns-type .tl_set:N = \l__nicematrix_columns_type_tl ,
matrix / columns-type .value_required:n = true ,
@@ -1132,8 +1132,8 @@
unknown .code:n = \__nicematrix_error:n { Unknown~key~for~NiceMatrixOptions }
}
\NewDocumentCommand \NiceMatrixOptions { m }
- { \keys_set:nn { NiceMatrix / NiceMatrixOptions } { #1 } }
-\keys_define:nn { NiceMatrix / NiceMatrix }
+ { \keys_set:nn { nicematrix / NiceMatrixOptions } { #1 } }
+\keys_define:nn { nicematrix / NiceMatrix }
{
last-col .code:n = \tl_if_empty:nTF { #1 }
{
@@ -1149,13 +1149,13 @@
delimiters / color .value_required:n = true ,
delimiters / max-width .bool_set:N = \l__nicematrix_delimiters_max_width_bool ,
delimiters / max-width .default:n = true ,
- delimiters .code:n = \keys_set:nn { NiceMatrix / delimiters } { #1 } ,
+ delimiters .code:n = \keys_set:nn { nicematrix / delimiters } { #1 } ,
delimiters .value_required:n = true ,
small .bool_set:N = \l__nicematrix_small_bool ,
small .value_forbidden:n = true ,
unknown .code:n = \__nicematrix_error:n { Unknown~key~for~NiceMatrix }
}
-\keys_define:nn { NiceMatrix / NiceArray }
+\keys_define:nn { nicematrix / NiceArray }
{
small .bool_set:N = \l__nicematrix_small_bool ,
small .value_forbidden:n = true ,
@@ -1166,7 +1166,7 @@
l .code:n = \__nicematrix_error:n { r~or~l~with~preamble } ,
unknown .code:n = \__nicematrix_error:n { Unknown~key~for~NiceArray }
}
-\keys_define:nn { NiceMatrix / pNiceArray }
+\keys_define:nn { nicematrix / pNiceArray }
{
first-col .code:n = \int_zero:N \l__nicematrix_first_col_int ,
last-col .code:n = \tl_if_empty:nF {#1}
@@ -1177,7 +1177,7 @@
delimiters / color .value_required:n = true ,
delimiters / max-width .bool_set:N = \l__nicematrix_delimiters_max_width_bool ,
delimiters / max-width .default:n = true ,
- delimiters .code:n = \keys_set:nn { NiceMatrix / delimiters } { #1 } ,
+ delimiters .code:n = \keys_set:nn { nicematrix / delimiters } { #1 } ,
delimiters .value_required:n = true ,
small .bool_set:N = \l__nicematrix_small_bool ,
small .value_forbidden:n = true ,
@@ -1185,12 +1185,12 @@
l .code:n = \__nicematrix_error:n { r~or~l~with~preamble } ,
unknown .code:n = \__nicematrix_error:n { Unknown~key~for~NiceMatrix }
}
-\keys_define:nn { NiceMatrix / NiceTabular }
+\keys_define:nn { nicematrix / NiceTabular }
{
width .code:n = \dim_set:Nn \l__nicematrix_width_dim { #1 }
\bool_set_true:N \l__nicematrix_width_used_bool ,
width .value_required:n = true ,
- notes .code:n = \keys_set:nn { NiceMatrix / notes } { #1 } ,
+ notes .code:n = \keys_set:nn { nicematrix / notes } { #1 } ,
tabularnote .tl_gset:N = \g__nicematrix_tabularnote_tl ,
tabularnote .value_required:n = true ,
caption .tl_set:N = \l__nicematrix_caption_tl ,
@@ -1206,14 +1206,14 @@
l .code:n = \__nicematrix_error:n { r~or~l~with~preamble } ,
unknown .code:n = \__nicematrix_error:n { Unknown~key~for~NiceTabular }
}
-\keys_define:nn { NiceMatrix / CodeAfter }
+\keys_define:nn { nicematrix / CodeAfter }
{
delimiters / color .tl_set:N = \l__nicematrix_delimiters_color_tl ,
delimiters / color .value_required:n = true ,
- rules .code:n = \keys_set:nn { NiceMatrix / rules } { #1 } ,
+ rules .code:n = \keys_set:nn { nicematrix / rules } { #1 } ,
rules .value_required:n = true ,
- xdots .code:n = \keys_set:nn { NiceMatrix / xdots } { #1 } ,
- sub-matrix .code:n = \keys_set:nn { NiceMatrix / sub-matrix } { #1 } ,
+ xdots .code:n = \keys_set:nn { nicematrix / xdots } { #1 } ,
+ sub-matrix .code:n = \keys_set:nn { nicematrix / sub-matrix } { #1 } ,
sub-matrix .value_required:n = true ,
unknown .code:n = \__nicematrix_error:n { Unknown~key~for~CodeAfter }
}
@@ -1839,11 +1839,11 @@
\bool_if:NT \g__nicematrix_recreate_cell_nodes_bool
{ \tl_put_left:Nn \__nicematrix_node_for_cell: \__nicematrix_patch_node_for_cell: }
}
-\keys_define:nn { NiceMatrix / CodeBefore }
+\keys_define:nn { nicematrix / CodeBefore }
{
create-cell-nodes .bool_gset:N = \g__nicematrix_recreate_cell_nodes_bool ,
create-cell-nodes .default:n = true ,
- sub-matrix .code:n = \keys_set:nn { NiceMatrix / sub-matrix } { #1 } ,
+ sub-matrix .code:n = \keys_set:nn { nicematrix / sub-matrix } { #1 } ,
sub-matrix .value_required:n = true ,
delimiters / color .tl_set:N = \l__nicematrix_delimiters_color_tl ,
delimiters / color .value_required:n = true ,
@@ -1851,7 +1851,7 @@
}
\NewDocumentCommand \__nicematrix_CodeBefore_keys: { O { } }
{
- \keys_set:nn { NiceMatrix / CodeBefore } { #1 }
+ \keys_set:nn { nicematrix / CodeBefore } { #1 }
\__nicematrix_CodeBefore:w
}
\cs_new_protected:Npn \__nicematrix_CodeBefore:w #1 \q_stop
@@ -1999,8 +1999,8 @@
\tl_if_empty:NF \g__nicematrix_pre_code_before_tl
{ \bool_set_true:N \l__nicematrix_code_before_bool }
\bool_if:NTF \g__nicematrix_delims_bool
- { \keys_set:nn { NiceMatrix / pNiceArray } }
- { \keys_set:nn { NiceMatrix / NiceArray } }
+ { \keys_set:nn { nicematrix / pNiceArray } }
+ { \keys_set:nn { nicematrix / NiceArray } }
{ #3 , #5 }
\__nicematrix_set_CT at arc@:o \l__nicematrix_rules_color_tl
\bool_if:nTF { #6 } \__nicematrix_CodeBefore_Body:w \__nicematrix_pre_array:
@@ -2013,7 +2013,7 @@
\skip_horizontal:N \l__nicematrix_right_margin_dim
\skip_horizontal:N \l__nicematrix_extra_right_margin_dim
- % % awful workaround
+ % awful workaround
\int_compare:nNnT \g__nicematrix_col_total_int = \c_one_int
{
\dim_compare:nNnT \l__nicematrix_columns_width_dim > \c_zero_dim
@@ -2910,6 +2910,18 @@
{ } % for the name of the block
}
}
+ \RenewDocumentCommand \cellcolor { O { } m }
+ {
+ \__nicematrix_test_color_inside:
+ \tl_gput_right:Nx \g__nicematrix_pre_code_before_tl
+ {
+ \__nicematrix_rectanglecolor [ ##1 ]
+ { \exp_not:n { ##2 } }
+ { \int_use:N \c at iRow - \int_use:N \c at jCol }
+ { \int_use:N \c at iRow - \int_eval:n { \c at jCol + #1 } }
+ }
+ \ignorespaces
+ }
\cs_set_nopar:Npn \@sharp { #3 }
\@arstrut
\@preamble
@@ -3734,7 +3746,7 @@
\bool_set_true:N \l__nicematrix_last_col_without_value_bool
\int_set:Nn \l__nicematrix_last_col_int { -1 }
}
- \keys_set:nn { NiceMatrix / NiceMatrix } { ##1 }
+ \keys_set:nn { nicematrix / NiceMatrix } { ##1 }
\__nicematrix_begin_of_NiceMatrix:nV { #1 } \l__nicematrix_columns_type_tl
}
{ \use:c { end #1 NiceArray } }
@@ -3747,7 +3759,7 @@
\bool_set_true:N \l__nicematrix_last_col_without_value_bool
\int_set:Nn \l__nicematrix_last_col_int { -1 }
}
- \keys_set:nn { NiceMatrix / NiceMatrix } { #1 }
+ \keys_set:nn { nicematrix / NiceMatrix } { #1 }
\bool_lazy_or:nnT
{ \clist_if_empty_p:N \l__nicematrix_vlines_clist }
{ \l__nicematrix_except_borders_bool }
@@ -3762,7 +3774,7 @@
\dim_compare:nNnT \l__nicematrix_width_dim = \c_zero_dim
{ \dim_set_eq:NN \l__nicematrix_width_dim \linewidth }
\str_gset:Nn \g__nicematrix_name_env_str { NiceTabular }
- \keys_set:nn { NiceMatrix / NiceTabular } { #1 , #3 }
+ \keys_set:nn { nicematrix / NiceTabular } { #1 , #3 }
\tl_if_empty:NF \l__nicematrix_short_caption_tl
{
\tl_if_empty:NT \l__nicematrix_caption_tl
@@ -3807,7 +3819,7 @@
\str_gset:Nn \g__nicematrix_name_env_str { NiceTabularX }
\dim_zero_new:N \l__nicematrix_width_dim
\dim_set:Nn \l__nicematrix_width_dim { #1 }
- \keys_set:nn { NiceMatrix / NiceTabular } { #2 , #4 }
+ \keys_set:nn { nicematrix / NiceTabular } { #2 , #4 }
\__nicematrix_settings_for_tabular:
\NiceArray { #3 }
}
@@ -3820,7 +3832,7 @@
{
\str_gset:Nn \g__nicematrix_name_env_str { NiceTabular* }
\dim_set:Nn \l__nicematrix_tabular_width_dim { #1 }
- \keys_set:nn { NiceMatrix / NiceTabular } { #2 , #4 }
+ \keys_set:nn { nicematrix / NiceTabular } { #2 , #4 }
\__nicematrix_settings_for_tabular:
\NiceArray { #3 }
}
@@ -4006,7 +4018,7 @@
\cs_gset_eq:NN \CT at arc@ \__nicematrix_old_CT at arc@
}
\NewDocumentCommand \__nicematrix_CodeAfter_keys: { O { } }
- { \keys_set:nn { NiceMatrix / CodeAfter } { #1 } }
+ { \keys_set:nn { nicematrix / CodeAfter } { #1 } }
\cs_new_protected:Npn \__nicematrix_adjust_pos_of_blocks_seq:
{
\seq_gset_map_x:NNn \g__nicematrix_pos_of_blocks_seq \g__nicematrix_pos_of_blocks_seq
@@ -4393,7 +4405,7 @@
\int_compare:nNnT { #1 } = \l__nicematrix_last_row_int
{ \color { nicematrix-last-row } }
}
- \keys_set:nn { NiceMatrix / xdots } { #3 }
+ \keys_set:nn { nicematrix / xdots } { #3 }
\tl_if_empty:oF \l__nicematrix_xdots_color_tl { \color { \l__nicematrix_xdots_color_tl } }
\__nicematrix_actually_draw_Ldots:
\group_end:
@@ -4445,7 +4457,7 @@
\int_compare:nNnT { #1 } = \l__nicematrix_last_row_int
{ \color { nicematrix-last-row } }
}
- \keys_set:nn { NiceMatrix / xdots } { #3 }
+ \keys_set:nn { nicematrix / xdots } { #3 }
\tl_if_empty:oF \l__nicematrix_xdots_color_tl { \color { \l__nicematrix_xdots_color_tl } }
\__nicematrix_actually_draw_Cdots:
\group_end:
@@ -4541,7 +4553,7 @@
\int_compare:nNnT { #2 } = \l__nicematrix_last_col_int
{ \color { nicematrix-last-col } }
}
- \keys_set:nn { NiceMatrix / xdots } { #3 }
+ \keys_set:nn { nicematrix / xdots } { #3 }
\tl_if_empty:oF \l__nicematrix_xdots_color_tl
{ \color { \l__nicematrix_xdots_color_tl } }
\__nicematrix_actually_draw_Vdots:
@@ -4627,7 +4639,7 @@
\__nicematrix_find_extremities_of_line:nnnn { #1 } { #2 } 1 1
\group_begin:
\__nicematrix_open_shorten:
- \keys_set:nn { NiceMatrix / xdots } { #3 }
+ \keys_set:nn { nicematrix / xdots } { #3 }
\tl_if_empty:oF \l__nicematrix_xdots_color_tl { \color { \l__nicematrix_xdots_color_tl } }
\__nicematrix_actually_draw_Ddots:
\group_end:
@@ -4658,11 +4670,14 @@
{ \l__nicematrix_y_final_dim - \l__nicematrix_y_initial_dim }
}
{
- \dim_set:Nn \l__nicematrix_y_final_dim
+ \dim_compare:nNnF \g__nicematrix_delta_x_one_dim = \c_zero_dim
{
- \l__nicematrix_y_initial_dim +
- ( \l__nicematrix_x_final_dim - \l__nicematrix_x_initial_dim ) *
- \dim_ratio:nn \g__nicematrix_delta_y_one_dim \g__nicematrix_delta_x_one_dim
+ \dim_set:Nn \l__nicematrix_y_final_dim
+ {
+ \l__nicematrix_y_initial_dim +
+ ( \l__nicematrix_x_final_dim - \l__nicematrix_x_initial_dim ) *
+ \dim_ratio:nn \g__nicematrix_delta_y_one_dim \g__nicematrix_delta_x_one_dim
+ }
}
}
}
@@ -4676,7 +4691,7 @@
\__nicematrix_find_extremities_of_line:nnnn { #1 } { #2 } 1 { -1 }
\group_begin:
\__nicematrix_open_shorten:
- \keys_set:nn { NiceMatrix / xdots } { #3 }
+ \keys_set:nn { nicematrix / xdots } { #3 }
\tl_if_empty:oF \l__nicematrix_xdots_color_tl { \color { \l__nicematrix_xdots_color_tl } }
\__nicematrix_actually_draw_Iddots:
\group_end:
@@ -4707,11 +4722,14 @@
{ \l__nicematrix_y_final_dim - \l__nicematrix_y_initial_dim }
}
{
- \dim_set:Nn \l__nicematrix_y_final_dim
+ \dim_compare:nNnF \g__nicematrix_delta_x_two_dim = \c_zero_dim
{
- \l__nicematrix_y_initial_dim +
- ( \l__nicematrix_x_final_dim - \l__nicematrix_x_initial_dim ) *
- \dim_ratio:nn \g__nicematrix_delta_y_two_dim \g__nicematrix_delta_x_two_dim
+ \dim_set:Nn \l__nicematrix_y_final_dim
+ {
+ \l__nicematrix_y_initial_dim +
+ ( \l__nicematrix_x_final_dim - \l__nicematrix_x_initial_dim ) *
+ \dim_ratio:nn \g__nicematrix_delta_y_two_dim \g__nicematrix_delta_x_two_dim
+ }
}
}
}
@@ -5064,7 +5082,7 @@
\l__nicematrix_last_col_int { \__nicematrix_error:nn { in~last~col } \Ddots }
}
{
- \keys_set_known:nn { NiceMatrix / Ddots } { #1 }
+ \keys_set_known:nn { nicematrix / Ddots } { #1 }
\__nicematrix_instruction_of_type:nnn \l__nicematrix_draw_first_bool { Ddots }
{ #1 , down = #2 , up = #3 , middle = #4 }
}
@@ -5090,7 +5108,7 @@
\l__nicematrix_last_col_int { \__nicematrix_error:nn { in~last~col } \Iddots }
}
{
- \keys_set_known:nn { NiceMatrix / Ddots } { #1 }
+ \keys_set_known:nn { nicematrix / Ddots } { #1 }
\__nicematrix_instruction_of_type:nnn \l__nicematrix_draw_first_bool { Iddots }
{ #1 , down = #2 , up = #3 , middle = #4 }
}
@@ -5100,7 +5118,7 @@
\bool_gset_true:N \g__nicematrix_empty_cell_bool
}
}
-\keys_define:nn { NiceMatrix / Ddots }
+\keys_define:nn { nicematrix / Ddots }
{
draw-first .bool_set:N = \l__nicematrix_draw_first_bool ,
draw-first .default:n = true ,
@@ -5210,7 +5228,7 @@
{ \color { nicematrix-last-row } }
}
- \keys_set:nn { NiceMatrix / xdots } { #4 }
+ \keys_set:nn { nicematrix / xdots } { #4 }
\tl_if_empty:oF \l__nicematrix_xdots_color_tl { \color { \l__nicematrix_xdots_color_tl } }
\__nicematrix_actually_draw_Ldots:
\group_end:
@@ -5291,7 +5309,7 @@
\int_compare:nNnT { #2 } = \g__nicematrix_col_total_int
{ \color { nicematrix-last-col } }
}
- \keys_set:nn { NiceMatrix / xdots } { #4 }
+ \keys_set:nn { nicematrix / xdots } { #4 }
\tl_if_empty:oF \l__nicematrix_xdots_color_tl { \color { \l__nicematrix_xdots_color_tl } }
\__nicematrix_actually_draw_Vdots:
\group_end:
@@ -5303,10 +5321,10 @@
\peek_remove_spaces:n
{
\bool_gset_true:N \g__nicematrix_rotate_bool
- \keys_set:nn { NiceMatrix / rotate } { #1 }
+ \keys_set:nn { nicematrix / rotate } { #1 }
}
}
-\keys_define:nn { NiceMatrix / rotate }
+\keys_define:nn { nicematrix / rotate }
{
c .code:n = \bool_gset_true:N \g__nicematrix_rotate_c_bool ,
c .value_forbidden:n = true ,
@@ -5328,7 +5346,7 @@
\exp_args:NNo \NewDocumentCommand \__nicematrix_line \l__nicematrix_argspec_tl
{
\group_begin:
- \keys_set:nn { NiceMatrix / xdots } { #1 , #4 , down = #5 , up = #6 }
+ \keys_set:nn { nicematrix / xdots } { #1 , #4 , down = #5 , up = #6 }
\tl_if_empty:oF \l__nicematrix_xdots_color_tl { \color { \l__nicematrix_xdots_color_tl } }
\use:e
{
@@ -5382,7 +5400,7 @@
}
}
\cs_generate_variant:Nn \__nicematrix_put_in_row_style:n { e }
-\keys_define:nn { NiceMatrix / RowStyle }
+\keys_define:nn { nicematrix / RowStyle }
{
cell-space-top-limit .dim_set:N = \l_tmpa_dim ,
cell-space-top-limit .value_required:n = true ,
@@ -5414,7 +5432,7 @@
\int_set_eq:NN \l__nicematrix_key_nb_rows_int \c_one_int
\dim_zero:N \l_tmpa_dim
\dim_zero:N \l_tmpb_dim
- \keys_set:nn { NiceMatrix / RowStyle } { #1 }
+ \keys_set:nn { nicematrix / RowStyle } { #1 }
\tl_if_empty:NF \l_tmpa_tl
{
\tl_gput_right:Nx \g__nicematrix_pre_code_before_tl
@@ -5669,7 +5687,7 @@
{ 1 - 1 }
{ \int_use:N \c at iRow - \int_use:N \c at jCol }
}
-\keys_define:nn { NiceMatrix / rowcolors }
+\keys_define:nn { nicematrix / rowcolors }
{
respect-blocks .bool_set:N = \l__nicematrix_respect_blocks_bool ,
respect-blocks .default:n = true ,
@@ -5685,7 +5703,7 @@
\seq_set_split:Nnn \l__nicematrix_colors_seq { , } { #3 }
\tl_clear_new:N \l__nicematrix_cols_tl
\cs_set_nopar:Npn \l__nicematrix_cols_tl { - }
- \keys_set:nn { NiceMatrix / rowcolors } { #4 }
+ \keys_set:nn { nicematrix / rowcolors } { #4 }
\int_zero_new:N \l__nicematrix_color_int
\int_set_eq:NN \l__nicematrix_color_int \c_one_int
\bool_if:NT \l__nicematrix_respect_blocks_bool
@@ -6043,7 +6061,7 @@
}
}
}
-\keys_define:nn { NiceMatrix / Rules }
+\keys_define:nn { nicematrix / Rules }
{
position .int_set:N = \l__nicematrix_position_int ,
position .value_required:n = true ,
@@ -6055,7 +6073,7 @@
{ \int_set_eq:NN \l__nicematrix_end_int \c at jCol }
{ \int_set:Nn \l__nicematrix_end_int { #1 } }
}
-\keys_define:nn { NiceMatrix / RulesBis }
+\keys_define:nn { nicematrix / RulesBis }
{
multiplicity .int_set:N = \l__nicematrix_multiplicity_int ,
multiplicity .initial:n = 1 ,
@@ -6082,7 +6100,7 @@
{
\group_begin:
\int_set_eq:NN \l__nicematrix_end_int \c at iRow
- \keys_set_known:nnN { NiceMatrix / Rules } { #1 } \l__nicematrix_other_keys_tl
+ \keys_set_known:nnN { nicematrix / Rules } { #1 } \l__nicematrix_other_keys_tl
\int_compare:nNnT \l__nicematrix_position_int < { \c at jCol + 2 }
\__nicematrix_vline_i:
\group_end:
@@ -6149,7 +6167,7 @@
\cs_new_protected:Npn \__nicematrix_vline_ii:
{
\tl_clear:N \l__nicematrix_tikz_rule_tl
- \keys_set:nV { NiceMatrix / RulesBis } \l__nicematrix_other_keys_tl
+ \keys_set:nV { nicematrix / RulesBis } \l__nicematrix_other_keys_tl
\bool_if:NTF \l__nicematrix_dotted_bool
\__nicematrix_vline_iv:
{
@@ -6269,7 +6287,7 @@
\group_begin:
\int_zero_new:N \l__nicematrix_end_int
\int_set_eq:NN \l__nicematrix_end_int \c at jCol
- \keys_set_known:nnN { NiceMatrix / Rules } { #1 } \l__nicematrix_other_keys_tl
+ \keys_set_known:nnN { nicematrix / Rules } { #1 } \l__nicematrix_other_keys_tl
\__nicematrix_hline_i:
\group_end:
}
@@ -6337,7 +6355,7 @@
\cs_new_protected:Npn \__nicematrix_hline_ii:
{
\tl_clear:N \l__nicematrix_tikz_rule_tl
- \keys_set:nV { NiceMatrix / RulesBis } \l__nicematrix_other_keys_tl
+ \keys_set:nV { nicematrix / RulesBis } \l__nicematrix_other_keys_tl
\bool_if:NTF \l__nicematrix_dotted_bool
\__nicematrix_hline_iv:
{
@@ -6501,7 +6519,7 @@
\str_clear_new:N \l__nicematrix_ccommand_str
\str_clear_new:N \l__nicematrix_letter_str
\tl_clear_new:N \l__nicematrix_other_keys_tl
- \keys_set_known:nnN { NiceMatrix / custom-line } { #1 } \l__nicematrix_other_keys_tl
+ \keys_set_known:nnN { nicematrix / custom-line } { #1 } \l__nicematrix_other_keys_tl
\bool_lazy_all:nTF
{
{ \str_if_empty_p:N \l__nicematrix_letter_str }
@@ -6511,7 +6529,7 @@
{ \__nicematrix_error:n { No~letter~and~no~command } }
{ \exp_args:No \__nicematrix_custom_line_i:n \l__nicematrix_other_keys_tl }
}
-\keys_define:nn { NiceMatrix / custom-line }
+\keys_define:nn { nicematrix / custom-line }
{
letter .str_set:N = \l__nicematrix_letter_str ,
letter .value_required:n = true ,
@@ -6525,7 +6543,7 @@
\bool_set_false:N \l__nicematrix_tikz_rule_bool
\bool_set_false:N \l__nicematrix_dotted_rule_bool
\bool_set_false:N \l__nicematrix_color_bool
- \keys_set:nn { NiceMatrix / custom-line-bis } { #1 }
+ \keys_set:nn { nicematrix / custom-line-bis } { #1 }
\bool_if:NT \l__nicematrix_tikz_rule_bool
{
\IfPackageLoadedTF { tikz }
@@ -6558,7 +6576,7 @@
}
\tl_const:Nn \c__nicematrix_forbidden_letters_tl { lcrpmbVX|()[]!@<> }
\str_const:Nn \c__nicematrix_forbidden_letters_str { lcrpmbVX|()[]!@<> }
-\keys_define:nn { NiceMatrix / custom-line-bis }
+\keys_define:nn { nicematrix / custom-line-bis }
{
multiplicity .int_set:N = \l__nicematrix_multiplicity_int ,
multiplicity .initial:n = 1 ,
@@ -6580,7 +6598,7 @@
\bool_new:N \l__nicematrix_dotted_rule_bool
\bool_new:N \l__nicematrix_tikz_rule_bool
\bool_new:N \l__nicematrix_color_bool
-\keys_define:nn { NiceMatrix / custom-line-width }
+\keys_define:nn { nicematrix / custom-line-width }
{
multiplicity .int_set:N = \l__nicematrix_multiplicity_int ,
multiplicity .initial:n = 1 ,
@@ -6636,7 +6654,7 @@
\bool_set_false:N \l__nicematrix_tikz_rule_bool
\bool_set_false:N \l__nicematrix_total_width_bool
\bool_set_false:N \l__nicematrix_dotted_rule_bool
- \keys_set_known:nn { NiceMatrix / custom-line-width } { #1 }
+ \keys_set_known:nn { nicematrix / custom-line-width } { #1 }
\bool_if:NF \l__nicematrix_total_width_bool
{
\bool_if:NTF \l__nicematrix_dotted_rule_bool
@@ -6842,7 +6860,7 @@
}
}
\bool_new:N \l__nicematrix_block_auto_columns_width_bool
-\keys_define:nn { NiceMatrix / NiceMatrixBlock }
+\keys_define:nn { nicematrix / NiceMatrixBlock }
{
auto-columns-width .code:n =
{
@@ -6855,7 +6873,7 @@
{
\int_gincr:N \g__nicematrix_NiceMatrixBlock_int
\dim_zero:N \l__nicematrix_columns_width_dim
- \keys_set:nn { NiceMatrix / NiceMatrixBlock } { #1 }
+ \keys_set:nn { nicematrix / NiceMatrixBlock } { #1 }
\bool_if:NT \l__nicematrix_block_auto_columns_width_bool
{
\cs_if_exist:cT
@@ -7082,7 +7100,7 @@
{ \int_use:N \g__nicematrix_env_int - \__nicematrix_i: - \__nicematrix_j: \l__nicematrix_suffix_tl}
}
}
-\keys_define:nn { NiceMatrix / Block / FirstPass }
+\keys_define:nn { nicematrix / Block / FirstPass }
{
j .code:n = \str_set:Nn \l__nicematrix_hpos_block_str j
\bool_set_true:N \l__nicematrix_p_block_bool ,
@@ -7162,7 +7180,7 @@
{ \str_set:NV \l__nicematrix_hpos_block_str \l__nicematrix_hpos_cell_tl }
}
{ \str_set_eq:NN \l__nicematrix_hpos_block_str \c__nicematrix_c_str }
- \keys_set_known:nn { NiceMatrix / Block / FirstPass } { #3 }
+ \keys_set_known:nn { nicematrix / Block / FirstPass } { #3 }
\tl_set:Nx \l_tmpa_tl
{
{ \int_use:N \c at iRow }
@@ -7180,11 +7198,11 @@
\l__nicematrix_X_bool { \exp_args:Nee \__nicematrix_Block_v:nnnnn }
{ \tl_if_empty_p:n { #5 } } { \exp_args:Nee \__nicematrix_Block_v:nnnnn }
{ \int_compare_p:nNn \l_tmpa_int = \c_one_int }
- { \exp_args:Nee \__nicematrix_Block_iv:nnnnn }
+ { \exp_args:Nee \__nicematrix_Block_iv:nnnnn }
{ \int_compare_p:nNn \l_tmpb_int = \c_one_int }
- { \exp_args:Nee \__nicematrix_Block_iv:nnnnn }
- }
- { \exp_args:Nee \__nicematrix_Block_v:nnnnn }
+ { \exp_args:Nee \__nicematrix_Block_iv:nnnnn }
+ }
+ { \exp_args:Nee \__nicematrix_Block_v:nnnnn }
{ \l_tmpa_int } { \l_tmpb_int } { #3 } { #4 } { #5 }
}
\cs_new_protected:Npn \__nicematrix_Block_iv:nnnnn #1 #2 #3 #4 #5
@@ -7214,10 +7232,16 @@
\int_compare:nNnT { #1 } = \c_one_int
{
\int_if_zero:nTF \c at iRow
- \l__nicematrix_code_for_first_row_tl
{
+ \cs_set_eq:NN \Block \__nicematrix_NullBlock:
+ \l__nicematrix_code_for_first_row_tl
+ }
+ {
\int_compare:nNnT \c at iRow = \l__nicematrix_last_row_int
- \l__nicematrix_code_for_last_row_tl
+ {
+ \cs_set_eq:NN \Block \__nicematrix_NullBlock:
+ \l__nicematrix_code_for_last_row_tl
+ }
}
\g__nicematrix_row_style_tl
}
@@ -7442,7 +7466,7 @@
{ \exp_not:n { #4 #5 } }
}
}
-\keys_define:nn { NiceMatrix / Block / SecondPass }
+\keys_define:nn { nicematrix / Block / SecondPass }
{
ampersand-in-blocks .bool_set:N = \l__nicematrix_amp_in_blocks_bool ,
ampersand-in-blocks .default:n = true ,
@@ -7566,7 +7590,7 @@
\group_begin:
\int_compare:nNnT { #1 } = { #3 }
{ \str_set:Nn \l__nicematrix_vpos_block_str { t } }
- \keys_set:nn { NiceMatrix / Block / SecondPass } { #5 }
+ \keys_set:nn { nicematrix / Block / SecondPass } { #5 }
\tl_if_in:nnT { #6 } { & } { \bool_set_true:N \l__nicematrix_ampersand_bool }
\bool_lazy_and:nnT
\l__nicematrix_vlines_block_bool
@@ -8000,7 +8024,7 @@
\group_begin:
\tl_clear:N \l__nicematrix_draw_tl
\dim_set_eq:NN \l__nicematrix_line_width_dim \arrayrulewidth
- \keys_set_known:nn { NiceMatrix / BlockStroke } { #1 }
+ \keys_set_known:nn { nicematrix / BlockStroke } { #1 }
\pgfpicture
\pgfrememberpicturepositiononpagetrue
\pgf at relevantforpicturesizefalse
@@ -8046,7 +8070,7 @@
\endpgfpicture
\group_end:
}
-\keys_define:nn { NiceMatrix / BlockStroke }
+\keys_define:nn { nicematrix / BlockStroke }
{
color .tl_set:N = \l__nicematrix_draw_tl ,
draw .code:n =
@@ -8059,7 +8083,7 @@
\cs_new_protected:Npn \__nicematrix_vlines_block:nnn #1 #2 #3
{
\dim_set_eq:NN \l__nicematrix_line_width_dim \arrayrulewidth
- \keys_set_known:nn { NiceMatrix / BlockBorders } { #1 }
+ \keys_set_known:nn { nicematrix / BlockBorders } { #1 }
\__nicematrix_cut_on_hyphen:w #2 \q_stop
\tl_set_eq:NN \l__nicematrix_tmpc_tl \l_tmpa_tl
\tl_set_eq:NN \l__nicematrix_tmpd_tl \l_tmpb_tl
@@ -8083,7 +8107,7 @@
\cs_new_protected:Npn \__nicematrix_hlines_block:nnn #1 #2 #3
{
\dim_set_eq:NN \l__nicematrix_line_width_dim \arrayrulewidth
- \keys_set_known:nn { NiceMatrix / BlockBorders } { #1 }
+ \keys_set_known:nn { nicematrix / BlockBorders } { #1 }
\__nicematrix_cut_on_hyphen:w #2 \q_stop
\tl_set_eq:NN \l__nicematrix_tmpc_tl \l_tmpa_tl
\tl_set_eq:NN \l__nicematrix_tmpd_tl \l_tmpb_tl
@@ -8107,13 +8131,13 @@
\cs_new_protected:Npn \__nicematrix_stroke_borders_block:nnn #1 #2 #3
{
\dim_set_eq:NN \l__nicematrix_line_width_dim \arrayrulewidth
- \keys_set_known:nn { NiceMatrix / BlockBorders } { #1 }
+ \keys_set_known:nn { nicematrix / BlockBorders } { #1 }
\dim_compare:nNnTF \l__nicematrix_rounded_corners_dim > \c_zero_dim
{ \__nicematrix_error:n { borders~forbidden } }
{
\tl_clear_new:N \l__nicematrix_borders_tikz_tl
\keys_set:nV
- { NiceMatrix / OnlyForTikzInBorders }
+ { nicematrix / OnlyForTikzInBorders }
\l__nicematrix_borders_clist
\__nicematrix_cut_on_hyphen:w #2 \q_stop
\tl_set_eq:NN \l__nicematrix_tmpc_tl \l_tmpa_tl
@@ -8148,7 +8172,7 @@
\clist_if_in:NnT \l__nicematrix_borders_clist { top }
{ \__nicematrix_stroke_horizontal:n \l__nicematrix_tmpc_tl }
}
-\keys_define:nn { NiceMatrix / OnlyForTikzInBorders }
+\keys_define:nn { nicematrix / OnlyForTikzInBorders }
{
tikz .code:n =
\cs_if_exist:NTF \tikzpicture
@@ -8199,7 +8223,7 @@
( \l_tmpa_dim , \pgf at y ) -- ( \l_tmpb_dim , \pgf at y ) ;
}
}
-\keys_define:nn { NiceMatrix / BlockBorders }
+\keys_define:nn { nicematrix / BlockBorders }
{
borders .clist_set:N = \l__nicematrix_borders_clist ,
rounded-corners .dim_set:N = \l__nicematrix_rounded_corners_dim ,
@@ -8212,7 +8236,7 @@
\__nicematrix_clip_with_rounded_corners:
\clist_map_inline:nn { #5 }
{
- \keys_set_known:nnN { NiceMatrix / SpecialOffset } { ##1 } \l_tmpa_tl
+ \keys_set_known:nnN { nicematrix / SpecialOffset } { ##1 } \l_tmpa_tl
\use:e { \exp_not:N \path [ \l_tmpa_tl ] }
(
[
@@ -8233,8 +8257,12 @@
\end { tikzpicture }
}
\cs_generate_variant:Nn \__nicematrix_block_tikz:nnnnn { n n n n V }
-\keys_define:nn { NiceMatrix / SpecialOffset }
+\keys_define:nn { nicematrix / SpecialOffset }
{ offset .dim_set:N = \l__nicematrix_offset_dim }
+\cs_new_protected:Npn \__nicematrix_NullBlock:
+ { \__nicematrix_collect_options:n { \__nicematrix_NullBlock_i: } }
+\NewExpandableDocumentCommand \__nicematrix_NullBlock_i: { m m D < > { } +m }
+ { }
\cs_set_protected:Npn \__nicematrix_renew_matrix:
{
\RenewDocumentEnvironment { pmatrix } { }
@@ -8253,7 +8281,7 @@
{ \BNiceMatrix }
{ \endBNiceMatrix }
}
-\keys_define:nn { NiceMatrix / Auto }
+\keys_define:nn { nicematrix / Auto }
{
columns-type .tl_set:N = \l__nicematrix_columns_type_tl ,
columns-type .value_required:n = true ,
@@ -8264,7 +8292,7 @@
delimiters / color .value_required:n = true ,
delimiters / max-width .bool_set:N = \l__nicematrix_delimiters_max_width_bool ,
delimiters / max-width .default:n = true ,
- delimiters .code:n = \keys_set:nn { NiceMatrix / delimiters } { #1 } ,
+ delimiters .code:n = \keys_set:nn { nicematrix / delimiters } { #1 } ,
delimiters .value_required:n = true ,
rounded-corners .dim_set:N = \l__nicematrix_tab_rounded_corners_dim ,
rounded-corners .default:n = 4 pt
@@ -8275,7 +8303,7 @@
\cs_new_protected:Npn \__nicematrix_auto_nice_matrix:nnnnnn #1 #2 #3 #4 #5 #6
{
\group_begin:
- \keys_set_known:nnN { NiceMatrix / Auto } { #6 } \l_tmpa_tl
+ \keys_set_known:nnN { nicematrix / Auto } { #6 } \l_tmpa_tl
\use:e
{
\exp_not:N \begin { NiceArrayWithDelims } { #1 } { #2 }
@@ -8468,7 +8496,7 @@
{ }
\endpgfpicture
}
-\keys_define:nn { NiceMatrix / sub-matrix }
+\keys_define:nn { nicematrix / sub-matrix }
{
extra-height .dim_set:N = \l__nicematrix_submatrix_extra_height_dim ,
extra-height .value_required:n = true ,
@@ -8489,14 +8517,14 @@
hvlines .meta:n = { hlines, vlines } ,
hvlines .value_forbidden:n = true
}
-\keys_define:nn { NiceMatrix }
+\keys_define:nn { nicematrix }
{
- SubMatrix .inherit:n = NiceMatrix / sub-matrix ,
- NiceArray / sub-matrix .inherit:n = NiceMatrix / sub-matrix ,
- pNiceArray / sub-matrix .inherit:n = NiceMatrix / sub-matrix ,
- NiceMatrixOptions / sub-matrix .inherit:n = NiceMatrix / sub-matrix ,
+ SubMatrix .inherit:n = nicematrix / sub-matrix ,
+ NiceArray / sub-matrix .inherit:n = nicematrix / sub-matrix ,
+ pNiceArray / sub-matrix .inherit:n = nicematrix / sub-matrix ,
+ NiceMatrixOptions / sub-matrix .inherit:n = nicematrix / sub-matrix ,
}
-\keys_define:nn { NiceMatrix / SubMatrix }
+\keys_define:nn { nicematrix / SubMatrix }
{
delimiters / color .tl_set:N = \l__nicematrix_delimiters_color_tl ,
delimiters / color .value_required:n = true ,
@@ -8522,7 +8550,7 @@
{ \__nicematrix_error:n { Invalid~name } }
} ,
name .value_required:n = true ,
- rules .code:n = \keys_set:nn { NiceMatrix / rules } { #1 } ,
+ rules .code:n = \keys_set:nn { nicematrix / rules } { #1 } ,
rules .value_required:n = true ,
code .tl_set:N = \l__nicematrix_code_tl ,
code .value_required:n = true ,
@@ -8605,7 +8633,7 @@
{ \__nicematrix_error:nn { Construct~too~large } { \SubMatrix } }
{
\str_clear_new:N \l__nicematrix_submatrix_name_str
- \keys_set:nn { NiceMatrix / SubMatrix } { #5 }
+ \keys_set:nn { nicematrix / SubMatrix } { #5 }
\pgfpicture
\pgfrememberpicturepositiononpagetrue
\pgf at relevantforpicturesizefalse
@@ -8884,7 +8912,7 @@
\peek_remove_spaces:n
{ \__nicematrix_brace:nnnnn { #2 } { #3 } { #4 } { #1 , #5 } { over } }
}
-\keys_define:nn { NiceMatrix / Brace }
+\keys_define:nn { nicematrix / Brace }
{
left-shorten .bool_set:N = \l__nicematrix_brace_left_shorten_bool ,
left-shorten .default:n = true ,
@@ -8915,7 +8943,7 @@
}
{
\tl_clear:N \l_tmpa_tl
- \keys_set:nn { NiceMatrix / Brace } { #4 }
+ \keys_set:nn { nicematrix / Brace } { #4 }
\tl_if_empty:NF \l_tmpa_tl { \color { \l_tmpa_tl } }
\pgfpicture
\pgfrememberpicturepositiononpagetrue
@@ -9049,7 +9077,7 @@
\bool_new:N \l__nicematrix_not_empty_bool
\bool_new:N \l__nicematrix_empty_bool
-\keys_define:nn { NiceMatrix / TikzEveryCell }
+\keys_define:nn { nicematrix / TikzEveryCell }
{
not-empty .code:n =
\bool_lazy_or:nnTF
@@ -9073,7 +9101,7 @@
\IfPackageLoadedTF { tikz }
{
\group_begin:
- \keys_set:nn { NiceMatrix / TikzEveryCell } { #1 }
+ \keys_set:nn { nicematrix / TikzEveryCell } { #1 }
\tl_set:Nn \l_tmpa_tl { { #2 } }
\seq_map_inline:Nn \g__nicematrix_pos_of_blocks_seq
{ \__nicematrix_for_a_block:nnnnn ##1 }
@@ -9314,7 +9342,7 @@
renew-dots,~and~
renew-matrix.
}
-\keys_define:nn { NiceMatrix / Package }
+\keys_define:nn { nicematrix / Package }
{
renew-dots .bool_set:N = \l__nicematrix_renew_dots_bool ,
renew-dots .value_forbidden:n = true ,
@@ -9327,7 +9355,7 @@
no-test-for-array .default:n = true ,
unknown .code:n = \__nicematrix_error:n { Unknown~key~for~package }
}
-\ProcessKeysOptions { NiceMatrix / Package }
+\ProcessKeysOptions { nicematrix / Package }
\__nicematrix_msg_new:nn { footnote~with~footnotehyper~package }
{
You~can't~use~the~option~'footnote'~because~the~package~
More information about the tex-live-commits
mailing list.