texlive[73674] Master/texmf-dist: nicematrix (1feb25)

commits+karl at tug.org commits+karl at tug.org
Sat Feb 1 21:42:58 CET 2025


Revision: 73674
          https://tug.org/svn/texlive?view=revision&revision=73674
Author:   karl
Date:     2025-02-01 21:42:57 +0100 (Sat, 01 Feb 2025)
Log Message:
-----------
nicematrix (1feb25)

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	2025-02-01 20:42:48 UTC (rev 73673)
+++ trunk/Master/texmf-dist/doc/latex/nicematrix/nicematrix-french.tex	2025-02-01 20:42:57 UTC (rev 73674)
@@ -10,7 +10,14 @@
 \usepackage{nicematrix}
 
 \usepackage{tikz}
-\usetikzlibrary{fit,patterns,arrows.meta,decorations.pathmorphing,babel}
+\usetikzlibrary
+  {
+    fit,
+    patterns,
+    arrows.meta,
+    decorations.pathreplacing,
+    babel
+  }
 
 \usepackage{enumitem}
 \usepackage{siunitx}
@@ -594,7 +601,7 @@
 Les premières clés sont des outils rapides pour contrôler l'apparence du bloc :
 
 \begin{itemize}
-\item \index{fill (clé de \texttt{\textbackslash Block})}
+\item \index{fill!clé de \texttt{\textbackslash Block}}
 la clé \Definition{fill} prend en argument une couleur et remplit le bloc
 avec cette couleur ;
 \item \index{opacity!clé de la commande \texttt{\textbackslash Block}}
@@ -968,7 +975,57 @@
 Avec la clé \Definition{j} (qui force la clé |p|), le paragraphe est composé de
 manière justifiée. 
 
+\bigskip
+On peut mettre un environnement |{itemize}| ou |{enumerate}| dans un bloc qui
+utilise la clé |p| ou la clé |j| (dans les autres cas, on a une erreur 
+|Not allowed in LR mode|). Dans l'exemple suivant, on a chargé l'extension
+\pkg{enumitem} (pour pouvoir utiliser la clé |left| de l'environnement
+|{itemize}|).
 
+\medskip
+\begin{Code}
+\begin{NiceTabular}[hvlines]{ccc}
+un & deux deux & trois trois \\
+un & 
+\Block\emph{[p,l]}{*-2}{%
+\begin{itemize}[left=0pt]
+\item un deux trois quatre cinq 
+\item deux 
+\item trois
+\end{itemize}%
+} \\
+un & \\
+un & \\
+un & \\
+un & \\
+un & \\
+un & \\
+\end{NiceTabular}
+\end{Code}
+
+
+\begin{center}
+\begin{NiceTabular}[hvlines]{ccc}
+un & deux deux & trois trois \\
+un & 
+\Block[p,l]{*-2}{%
+\begin{itemize}[left=0pt]
+\item un deux trois quatre cinq 
+\item deux 
+\item trois
+\end{itemize}%
+} \\
+un & \\
+un & \\
+un & \\
+un & \\
+un & \\
+un & \\
+\end{NiceTabular}
+\end{center}
+
+
+
 \subsection{Positionnement vertical du contenu des blocs}
 
 
@@ -1426,7 +1483,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 : |\NewDocumentCommand{\RedLine}{}{\Hline[color=red]}|}
+  |\def| de TeX). Exemple : |\NewExpandableDocumentCommand{\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. 
@@ -2671,6 +2728,45 @@
 On a utilisé le type de colonne |S| de \pkg{siunitx} (qu'il faut avoir chargé).
 
 
+\bigskip
+\index{EmptyRow@\texttt{\textbackslash EmptyRow} (commande du \texttt{\textbackslash CodeBefore})}
+\index{EmptyColumn@\texttt{\textbackslash EmptyColumn} (commande du \texttt{\textbackslash CodeBefore})}
+
+\colorbox{yellow!50}{\textbf{Nouveau 7.1}}\par\nobreak
+
+\smallskip
+On peut aussi, dans le |\CodeBefore|, utiliser les commandes
+\DefinitionCommande{EmptyColumn} et \DefinitionCommande{EmptyRow}. La commande
+|\EmptyColumn| prend en argument une liste de numéros de colonnes et impose qu'aucun
+coloriage ni tracé de filets n'aura lieu dans les colonnes correspondantes. La
+commande |\EmptyRow| est similaire.
+
+
+\medskip
+\begin{Code}[width=10cm]
+\begin{NiceTabular}{ccccc}[hvlines]
+\CodeBefore
+  \rowcolor{blue!15}{1}
+  \emph{\EmptyColumn{3}}
+\Body
+  un & deux && trois & quatre \\
+  un & \Block{}{deux\\ lignes} && trois & quatre \\
+\end{NiceTabular}
+\end{Code}
+\begin{NiceTabular}{ccccc}[hvlines]
+\CodeBefore
+  \rowcolor{blue!15}{1}
+  \EmptyColumn{3}
+\Body
+  un & deux && trois & quatre \\
+  un & \Block{}{deux\\ lignes} && trois & quatre \\
+\end{NiceTabular}
+
+
+
+
+
+
 \subsection{Outils de coloriage en tableau}
 
 \index{cellcolor@\texttt{\textbackslash cellcolor}!commande en tableau}
@@ -2742,6 +2838,8 @@
 \end{NiceTabular}
 \end{center}
 
+
+
 \bigskip
 Chaque utilisation de |\rowlistcolors| (et de |\rowcolors| qui en est un cas
 particulier) met un terme aux éventuels schémas\footnote{On a écrit
@@ -2870,6 +2968,8 @@
 La commande |\rotate| est présentée p.~\pageref{rotate}.
 
 
+
+
 \section{La largeur des colonnes}
 \label{width}
 \index{Largeur@\textbf{Largeur des colonnes}|(}
@@ -3167,6 +3267,9 @@
 
 \index{Largeur@\textbf{Largeur des colonnes}|)}
 
+
+
+
 \medskip
 \section{Les rangées et colonnes extérieures}
 
@@ -3899,6 +4002,96 @@
 \end{pNiceMatrix}\]
 
 
+
+
+\subsection{Les commandes \textbackslash Hbrace et \textbackslash Vbrace}
+
+\colorbox{yellow!50}{\textbf{Nouveau 7.1}}
+
+\label{Hbrace}
+\indexcommand{Hbrace}
+\indexcommand{Vbrace}
+
+\smallskip
+Puisque, comme dit dans la partie précédente, il est possible d'utiliser, avec
+les commandes |\Cdots|, |\Ldots|, |\Vdots|, etc. n'importe quel style de ligne
+fourni par TikZ, on peut envisager de tracer des accolades avec la décoration
+|brace| fournie par la bibliothèque \pkg{decorations.pathreplacing} de TikZ.
+
+
+\smallskip
+Pour faciliter cet usage, \pkg{nicematrix} propose les deux commandes
+\DefinitionCommande{Hbrace} et \DefinitionCommande{Vbrace}. 
+Celles-ci ne sont disponibles que si TikZ, ainsi que sa bibliothèque
+\pkg{decorations.pathreplacing}, ont été chargées (avant ou après le chargement
+de \pkg{nicematrix}). Si elles ne sont pas chargées, une erreur (non fatale) sera
+levée. 
+\begin{Verbatim}
+\usepackage{tikz}
+\usetikzlibrary{decorations.pathreplacing}
+\end{Verbatim}
+
+\medskip
+Les commandes |\Hbrace| et |\Vbrace| ont la même syntaxe. Elles prennent trois
+arguments:
+
+\begin{itemize}
+\item un premier argument optionnel (entre crochets) pour une liste de couples
+\textsl{clé=valeur} : les clés autorisées sont |color|, |horizontal-labels|,
+|shorten|, |shorten-start| et |shorten-end|.
+
+\item un deuxième argument, obligatoire, qui est le nombre de colonnes (pour
+|\Hbrace|) ou de rangées (pour |\Vbrace|) sur lesquelles l'accolade va s'étendre.
+
+\item un troisième argument, obligatoire, qui est le label de l'accolade.
+\end{itemize}
+
+Concernant la commande |\Hbrace|, son comportement vis à vis des esperluettes
+(|&|) est le même que celui des commandes |\multicolumn|, |\hdotsfor|,
+|\Hdotsfor|, etc. : on ne doit mettre qu'une seule esperluette après la
+commande, même si l'accolade s'étend sur plusieurs colonnes.
+
+\bigskip
+\begin{Code}[width=11.2cm]
+$\begin{NiceArray}{ccccc}%
+  [ hvlines ,
+    first-row ,
+    last-row = 6,
+    first-col ,
+    last-col ,
+    xdots/horizontal-labels ]
+& \emph{\Hbrace{3}{p}} & \emph{\Hbrace{2}{q}} \\
+\emph{\Vbrace{3}{p}} & 1 & 1 & 134 & 1 & 1 & \emph{\Vbrace{3}{p}} \\
+& 1 & 1 & 134 & 1 & 1 \\
+& 1 & 1 & 13456 & 1 & 1 \\
+\emph{\Vbrace{2}{q}} & 1 & 1 & 134 & 1 & 1 & \emph{\Vbrace{2}{q}}\\
+& 1 & 1 & 134 & 1 & 1 \\
+& \emph{\Hbrace{3}{p}} & \emph{\Hbrace[color=blue]{2}{q}} \\
+\end{NiceArray}$
+\end{Code}
+$\begin{NiceArray}{ccccc}%
+  [
+    hvlines ,
+    first-row ,
+    last-row = 6,
+    first-col ,
+    last-col ,
+    xdots/horizontal-labels 
+  ]
+& \Hbrace{3}{p} & \Hbrace{2}{q} \\
+\Vbrace{3}{p} & 1 & 1 & 134 & 1 & 1 & \Vbrace{3}{p} \\
+& 1 & 1 & 134 & 1 & 1 \\
+& 1 & 1 & 13456 & 1 & 1 \\
+\Vbrace{2}{q}& 1 & 1 & 134 & 1 & 1 & \Vbrace{2}{q}\\
+& 1 & 1 & 134 & 1 & 1 \\
+& \Hbrace{3}{p} & \Hbrace[color=blue]{2}{q} \\
+\end{NiceArray}$
+
+\medskip
+Pour un autre exemple d'utilisation de |\Hbrace| et |\Vbrace|, voir la partie
+«Des lignes pointillées qui ne sont plus pointillées»,
+p.~\pageref{ex:no-longer-dotted-rules}.
+
 \subsection{Les lignes pointillées et les filets}
 
 \label{dotted-and-rules}
@@ -3928,6 +4121,10 @@
 
 \index{Pointillés@\textbf{Pointillés (lignes en ---)}|)}
 
+
+
+
+
 \section{Délimiteurs dans le préambule de l'environnement}
 
 \index{blkarray@\pkg{blkarray} (extension)}
@@ -3962,7 +4159,7 @@
 \end{NiceArray}$
 \end{Code}
 
-\[\begin{NiceArray}{\left\lgroup ccc\right\rgroup l}[no-cell-nodes]
+\[\begin{NiceArray}{\left\lgroup ccc\right\rgroup l}
 1 & 2 & 3 &  \\
 4 & 1 & 6 &  \\
 7 & 8 & 9 & \scriptstyle L_3 \gets L_3 + L_1 + L_2
@@ -4019,7 +4216,7 @@
 \end{pNiceArray}$
 \end{Code}
 
-\[\begin{pNiceArray}{(c)(c)(c)}[no-cell-nodes]
+\[\begin{pNiceArray}{(c)(c)(c)}
 a_{11} & a_{12}                                     & a_{13} \\
 a_{21} & \displaystyle \int_0^1\dfrac{1}{x^2+1}\,dx & a_{23} \\
 a_{31} & a_{32}                                     & a_{33}
@@ -4033,6 +4230,8 @@
 p.~\pageref{sub-matrix}. 
 
 
+
+
 \section{Le \textbackslash CodeAfter}
 
 \index{CodeAfter@\texttt{\textbackslash CodeAfter}|(}
@@ -4137,6 +4336,8 @@
 \end{bNiceMatrix}\]
 
 
+
+
 \subsection{La commande \textbackslash SubMatrix dans le \textbackslash
   CodeAfter (et le \textbackslash CodeBefore)}
 
@@ -4437,6 +4638,8 @@
 Comme on le voit, le tracé effectué par la commande |\MyDraw| est \emph{relatif}
 à la sous-matrice à laquelle elle s'applique.
 
+
+
 \subsection{Les commandes \textbackslash OverBrace et \textbackslash
   UnderBrace dans le \textbackslash CodeAfter}
 
@@ -4533,6 +4736,8 @@
 \end{pNiceMatrix}$
 
 
+
+
 \subsection{La commande \textbackslash TikzEveryCell dans le \textbackslash CodeAfter}
 
 \index{tikzeverycell@\texttt{\textbackslash TikzEveryCell} (commande du 
@@ -4540,7 +4745,7 @@
 \texttt{\textbackslash CodeBefore})|textbf}
 \label{TikzEveryCell}
 \index{empty (clé de \texttt{\textbackslash TikzEveryCell})}
-\index{non empty (clé de \texttt{\textbackslash TikzEveryCell})}
+\index{non-empty (clé de \texttt{\textbackslash TikzEveryCell})}
 
 La commande \DefinitionCommande{TikzEveryCell} exécute avec TikZ le chemin
 rectangulaire qui correspond à chaque case du tableau, avec comme paramètres
@@ -4566,7 +4771,6 @@
 \begingroup
 \bigskip
 \begin{Code}[width=9cm]
-
 \renewcommand{\arraystretch}{1.3}
 \begin{NiceTabular}{ccc}[corners]
   & \Block{1-2}{columns} \\
@@ -4633,12 +4837,11 @@
 \medskip
 La commande |\TikzEveryCell| est en fait aussi disponible dans le |\CodeBefore|.
 
+\index{CodeAfter@\texttt{\textbackslash CodeAfter}|)}
 
 
 
 
-\index{CodeAfter@\texttt{\textbackslash CodeAfter}|)}
-
 \section{Les légendes et les notes dans les tableaux}
 
 \label{s:notes}
@@ -6819,7 +7022,7 @@
 serait bon aussi de changer certains paramètres du type de liste (au sens de
 \pkg{enumitem}) utilisé pour composer les notes après le tableau. On demande de
 composer les labels avec une largeur égale à celle du plus grand des labels. Or,
-le label le plus large est bien entendu celui avec le maximum d'astéristiques.
+le label le plus large est bien entendu celui avec le maximum d'astérisques.
 On connaît ce nombre : il est égal à |\value{tabularnote}| (car |tabularnote|
 est le compteur LaTeX utilisé par |\tabularnote| et il est donc égal à la fin au
 nombre total de notes dans le tableau). On utilise alors la clé |widest*| de
@@ -6966,6 +7169,7 @@
 
 \subsection{Des lignes pointillées qui ne sont plus pointillées}
 
+\label{ex:no-longer-dotted-rules}
 
 L'option |line-style| permet de changer le style des lignes tracées par
 |\Ldots|, |\Cdots|, etc. On peut de ce fait tracer des lignes qui ne sont plus
@@ -7019,29 +7223,29 @@
 \end{pNiceMatrix}\]
 \end{scope}
 
+\pagebreak
 
-
 \interitem
 On peut même tracer des lignes continues.\footnote{Dans ce document, la
   bibliothèque \pkg{arrows.meta} de TikZ a été chargée, ce qui a une incidence
   sur la forme des pointes de flèches.}
 
-\begin{Verbatim}
+\medskip
+\begin{Code}
 \NiceMatrixOptions{xdots={horizontal-labels,line-style = <->}}
+\end{Code}
+\begin{Code}[width=11cm]
 $\begin{pNiceArray}{ccc|cc}[first-row,last-col,margin]
-\Hdotsfor{3}^{3} & \Hdotsfor{2}^{2} \\
-2 & 1 & 1 & 1 & 1 & \Vdotsfor{3}^{3}\\
+\emph{\Hdotsfor{3}^{3}} & \emph{\Hdotsfor{2}^{2}} \\
+2 & 1 & 1 & 1 & 1 & \emph{\Vdotsfor{3}^{3}}\\
 1 & 1 & 1 & 1 & 1 \\
 1 & 1 & 1 & 1 & 1 \\
 \Hline
-1 & 1 & 1 & 1 & 1 & \Vdotsfor{2}^{2}\\
+1 & 1 & 1 & 1 & 1 & \emph{\Vdotsfor{2}^{2}}\\
 1 & 1 & 1 & 1 & 1 \\
 \end{pNiceArray}$
-\end{Verbatim}
-
-
-\begin{center}
-\NiceMatrixOptions{xdots={horizontal-labels,line-style = <->}}
+\end{Code}
+{\NiceMatrixOptions{xdots={horizontal-labels,line-style = <->}}
 $\begin{pNiceArray}{ccc|cc}[first-row,last-col,margin]
 \Hdotsfor{3}^{3} & \Hdotsfor{2}^{2} \\
 2 & 1 & 1 & 1 & 1 & \Vdotsfor{3}^{3}\\
@@ -7050,17 +7254,31 @@
 \Hline
 1 & 1 & 1 & 1 & 1 & \Vdotsfor{2}^{2}\\
 1 & 1 & 1 & 1 & 1 \\
-\end{pNiceArray}$
-\end{center}
+\end{pNiceArray}$}
 
+
 \interitem
 \label{ex:colon}
 Si on veut mettre les labels sur les flèches, il convient d'utiliser le
-caractère spécial~«|:|» :
+caractère spécial~«|:|» au lieu de~«|^|»:
 
-\begin{Verbatim}
+\medskip
+\begin{Code}
 \NiceMatrixOptions{xdots={horizontal-labels,line-style = <->}}
+\end{Code}
+\begin{Code}[width=11cm]
 $\begin{pNiceArray}{ccc|cc}[first-row,last-col,margin]
+\emph{\Hdotsfor{3}:{3}} & \emph{\Hdotsfor{2}:{2}} \\
+2 & 1 & 1 & 1 & 1 & \emph{\Vdotsfor{3}:{3}} \\
+1 & 1 & 1 & 1 & 1 \\
+1 & 1 & 1 & 1 & 1 \\
+\Hline
+1 & 1 & 1 & 1 & 1 & \emph{\Vdotsfor{2}:{2}} \\
+1 & 1 & 1 & 1 & 1 \\
+\end{pNiceArray}$
+\end{Code}
+{\NiceMatrixOptions{xdots={horizontal-labels,line-style = <->}}
+$\begin{pNiceArray}{ccc|cc}[first-row,last-col,margin]
 \Hdotsfor{3}:{3} & \Hdotsfor{2}:{2} \\
 2 & 1 & 1 & 1 & 1 & \Vdotsfor{3}:{3}\\
 1 & 1 & 1 & 1 & 1 \\
@@ -7068,25 +7286,86 @@
 \Hline
 1 & 1 & 1 & 1 & 1 & \Vdotsfor{2}:{2}\\
 1 & 1 & 1 & 1 & 1 \\
-\end{pNiceArray}$
-\end{Verbatim}
+\end{pNiceArray}$}
 
 
-\begin{center}
-\NiceMatrixOptions{xdots={horizontal-labels,line-style = <->}}
+\interitem
+\label{ex:hbrace}
+Si on préfère des accolades comme celles proposées par la bibliothèque
+\pkg{decorations.pathreplacing} de TikZ, le mieux est d'utiliser les commandes
+|\Hbrace| et |\Vbrace| proposées par \pkg{nicematrix} (cf.
+p.~\pageref{Hbrace}).\footnote{Ces commandes ne sont disponibles que si TikZ a
+  été chargée ainsi que la bibliothèque \pkg{decorations.pathreplacing} de TikZ.}
+
+
+\medskip
+\begin{Code}
+\NiceMatrixOptions{xdots/horizontal-labels}
+\end{Code}
+\begin{Code}[width=11cm]
 $\begin{pNiceArray}{ccc|cc}[first-row,last-col,margin]
-\Hdotsfor{3}:{3} & \Hdotsfor{2}:{2} \\
-2 & 1 & 1 & 1 & 1 & \Vdotsfor{3}:{3}\\
+\emph{\Hbrace{3}{3}} & \emph{\Hbrace{2}{2}} \\
+2 & 1 & 1 & 1 & 1 & \emph{\Vbrace{3}{3}} \\
 1 & 1 & 1 & 1 & 1 \\
 1 & 1 & 1 & 1 & 1 \\
 \Hline
-1 & 1 & 1 & 1 & 1 & \Vdotsfor{2}:{2}\\
+1 & 1 & 1 & 1 & 1 & \emph{\Vbrace{2}{2}} \\
 1 & 1 & 1 & 1 & 1 \\
 \end{pNiceArray}$
-\end{center}
+\end{Code}
+{\NiceMatrixOptions{xdots/horizontal-labels}
+$\begin{pNiceArray}{ccc|cc}[first-row,last-col,margin]
+\Hbrace{3}{3} & \Hbrace{2}{2} \\
+2 & 1 & 1 & 1 & 1 & \Vbrace{3}{3}\\
+1 & 1 & 1 & 1 & 1 \\
+1 & 1 & 1 & 1 & 1 \\
+\Hline
+1 & 1 & 1 & 1 & 1 & \Vbrace{2}{2}\\
+1 & 1 & 1 & 1 & 1 \\
+\end{pNiceArray}$}
 
 
+\pagebreak
+Si on préfère les accolades de la fonte mathématique courante, il convient
+d'utiliser les commandes |\SubMatrix|, |\OverBrace| et |\UnderBrace| dans le
+|\CodeAfter|.
 
+\medskip
+\begin{Code}[width=11cm]
+$\begin{pNiceArray}{ccc|cc}[margin,last-col]
+2 & 1 & 1 & 1 & 1 & \Block{3-1}{\quad 3} \\
+1 & 1 & 1 & 1 & 1 \\
+1 & 1 & 1 & 1 & 1 \\
+\Hline
+1 & 1 & 1 & 1 & 1 & \Block{2-1}{\quad 2} \\
+1 & 1 & 1 & 1 & 1 \\
+\CodeAfter
+  \emph{\OverBrace[shorten,yshift=1.5mm]{1-1}{1-3}{3}}
+  \emph{\OverBrace[shorten,yshift=1.5mm]{1-4}{1-5}{2}}
+  \emph{\SubMatrix{.}{1-1}{3-5}{\rbrace}[xshift=3.5mm]}
+  \emph{\SubMatrix{.}{4-1}{5-5}{\rbrace}[xshift=3.5mm]}
+\end{pNiceArray}$
+\end{Code}
+$\begin{pNiceArray}{ccc|cc}[margin,last-col]
+2 & 1 & 1 & 1 & 1 & \Block{3-1}{\quad 3} \\
+1 & 1 & 1 & 1 & 1 \\
+1 & 1 & 1 & 1 & 1 \\
+\Hline
+1 & 1 & 1 & 1 & 1 & \Block{2-1}{\quad 2} \\
+1 & 1 & 1 & 1 & 1 \\
+\CodeAfter
+  \OverBrace[shorten,yshift=1.5mm]{1-1}{1-3}{3}
+  \OverBrace[shorten,yshift=1.5mm]{1-4}{1-5}{2}
+  \SubMatrix{.}{1-1}{3-5}{\}}[xshift=3.5mm]
+  \SubMatrix{.}{4-1}{5-5}{\}}[xshift=3.5mm]
+\end{pNiceArray}$
+
+
+\medskip
+Le résultat peut sembler décevant. C'est pourquoi, pour ce type d'usage, on
+recommande plutôt l'utilisation des commandes |\Hbrace| et |\Vbrace| (fournies par
+\pkg{nicematrix}), comme dans l'exemple précédent.
+
 \subsection{Lignes en tiretés}
 
 \label{tiretes}
@@ -7097,6 +7376,7 @@
 en tiretés. Cet exemple nécessite que TikZ soit chargé (par
 |\usepackage{tikz}|). 
 
+\medskip
 \begin{Code}
 \begin{pNiceMatrix}
 \emph{\Block[borders={bottom,right,tikz=dashed}]{2-2}{}}
@@ -7490,7 +7770,7 @@
 
 \vspace{1cm}
 Il est possible de colorier une rangée avec |\rowcolor| dans le |\CodeBefore|
-(ou avec |\rowcolor| dans une case de la rangée.
+(ou avec |\rowcolor| dans une case de la rangée).
 
 \index{rowcolor@\texttt{\textbackslash rowcolor}!commande en tableau|textit}
 

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	2025-02-01 20:42:48 UTC (rev 73673)
+++ trunk/Master/texmf-dist/doc/latex/nicematrix/nicematrix.tex	2025-02-01 20:42:57 UTC (rev 73674)
@@ -9,7 +9,13 @@
 \usepackage{nicematrix}
 
 \usepackage{tikz}
-\usetikzlibrary{fit,patterns,arrows.meta,decorations.pathmorphing}
+\usetikzlibrary
+  {  
+    fit,
+    patterns,
+    arrows.meta,
+    decorations.pathreplacing
+  }
 
 \usepackage{enumitem}
 \usepackage{siunitx}
@@ -567,7 +573,7 @@
 First, there are keys which are quick tools to control the apperance of the block.
 
 \begin{itemize}
-\item \index{fill (key of \texttt{\textbackslash Block})}
+\item \index{fill!key of \texttt{\textbackslash Block}}
 the key \Definition{fill} takes in as value a color and fills the block
 with that color;
 \item \index{opacity!key of \texttt{\textbackslash Block}} 
@@ -931,6 +937,54 @@
 when \pkg{ragged2e}) est chargée. With the key \Definition{j} (which inforces
 the key |p|), the paragraph is justified.
 
+\bigskip
+It's possible to put an environment |{itemize}| or |{enumerate}| in a block
+which uses the key~|p| or |j| (in the other case, you have a LaTeX error 
+|Not allowed in LR mode|). For the following example, we have loaded the package
+\pkg{enumitem} (for the key |left| of the environment |{itemize}|).
+
+\begin{Code}
+\begin{NiceTabular}[hvlines]{ccc}
+one & two two & three three \\
+one & 
+\Block\emph{[p]}{*-2}{%
+\begin{itemize}[left=0pt]
+\item one two three four five 
+\item two 
+\item three
+\end{itemize}
+} \\
+one & \\
+one & \\
+one & \\
+one & \\
+one & \\
+one & \\
+\end{NiceTabular}
+\end{Code}
+
+
+\begin{center}
+\begin{NiceTabular}[hvlines]{ccc}
+one & two two & three three \\
+one & 
+\Block[p]{*-2}{%
+\begin{itemize}[left=0pt]
+\item one two three four five 
+\item two 
+\item three
+\end{itemize}
+} \\
+one & \\
+one & \\
+one & \\
+one & \\
+one & \\
+one & \\
+\end{NiceTabular}
+\end{center}
+
+
 \subsection{Vertical position of the content of the block}
 
 \label{vertical-pos-block}
@@ -1371,7 +1425,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:
-  |\NewDocumentCommand{\RedLine}{}{\Hline[color=red]}|}
+  |\NewExpandableDocumentCommand}{}{\Hline[color=red]}|}
 
 
 \bigskip
@@ -2596,9 +2650,46 @@
 
 \index{S (the columns S of \pkg{siunitx})|textit}
 \medskip 
-We have used the type of column |S| of \pkg{siunitx}.
+We have used the type of column |S| of \pkg{siunitx} (which should be loaded by
+the user).
 
 
+\bigskip
+\index{EmptyRow@\texttt{\textbackslash EmptyRow} (command of \texttt{\textbackslash CodeBefore})}
+\index{EmptyColumn@\texttt{\textbackslash EmptyColumn} (command of \texttt{\textbackslash CodeBefore})}
+
+\colorbox{yellow!50}{\textbf{New 7.1}}\par\nobreak
+
+\smallskip
+It's also possible, in the |\CodeBefore|, to use the commands
+\DefinitionCommand{EmptyColumn} and \DefinitionCommand{EmptyRow}. The command
+|\EmptyColumn| takes in as argument a (comma-separated) list of numbers of
+columns and requires that no rules nor backbround colors will be drawn in the
+corresponding columns. The command |\EmptyRow| is similar for the rows.
+
+\medskip
+\begin{Code}[width=10cm]
+\begin{NiceTabular}{ccccc}[hvlines]
+\CodeBefore
+  \rowcolor{blue!15}{1}
+  \emph{\EmptyColumn{3}}
+\Body
+   one & two && three & four \\
+   one & \Block{}{two\\ rows} && three & four \\
+\end{NiceTabular}
+\end{Code}
+\begin{NiceTabular}{ccccc}[hvlines]
+\CodeBefore
+  \rowcolor{blue!15}{1}
+  \EmptyColumn{3}
+\Body
+   one & two && three & four \\
+   one & \Block{}{two\\ rows} && three & four \\
+\end{NiceTabular}
+
+
+
+
 \subsection{Color tools to be used inside the tabular}
 
 \index{cellcolor@\texttt{\textbackslash cellcolor}!command in tabular}
@@ -3798,6 +3889,97 @@
 \end{pNiceMatrix}\]
 
 
+
+\subsection{The commands \textbackslash Hbrace and \textbackslash Vbrace}
+
+\colorbox{yellow!50}{\textbf{New 7.1}}
+
+\indexcommand{Hbrace}
+\indexcommand{Vbrace}
+\index{tikz-braces (key at load-tome of \texttt{nicematrix)}}
+\label{Hbrace}
+
+
+\smallskip
+Since, as said in the previous part, it's possible to use, with the commands
+|\Cdots|, |\Ldots|, |\Vdots|, etc. all the styles of lines provided by TikZ, one
+may wish to use those commands to draw braces with the decoration |brace|
+provided by the library \pkg{decorations.pathreplacing} of TikZ.
+
+\smallskip
+In order to facilitate that use, \pkg{nicematrix} provides two commands
+\DefinitionCommand{Hbrace} and \DefinitionCommand{Vbrace}. Those commands are
+available only if TikZ has been loaded with its library
+\pkg{decorations.pathreplacing} (before or after the loading of
+\pkg{nicematrix}). Otherwise, a (non-fatal) error will be raised.
+\begin{Verbatim}
+\usepackage{tikz}
+\usetikzlibrary{decorations.pathreplacing}
+\end{Verbatim}
+
+\medskip
+The commands |\Hbrace| and |\Vbrace| have the same syntax. Both commands take in
+three arguments:
+\begin{itemize}
+\item an optional argument, between square brackets, which contains a list of
+\textsl{key=value} pairs: the keys allowed are |color|, |horizontal-labels|,
+|shorten|, |shorten-start| and |shorten-end|.
+
+\item a mandatory argument which is the number of columns (for |\Hbrace|) or the
+number of rows (for |\Vbrace|) over which the command applies;
+
+\item an mandatory argument which is the label of the curly brace.
+\end{itemize}
+
+As regards the ampersands (|&|), |\Hbrace| has the same behavior as the commands
+|\multicolumn|, |\hdotsfor|, |\Hdotsfor|, etc.: only one ampersand must be
+inserted, even if the brace that will be drawn will extend on several columns.
+
+
+\bigskip
+\begin{Code}[width=11.2cm]
+$\begin{NiceArray}{ccccc}%
+  [ hvlines ,
+    first-row ,
+    last-row = 6,
+    first-col ,
+    last-col ,
+    xdots/horizontal-labels ]
+& \emph{\Hbrace{3}{p}} & \emph{\Hbrace{2}{q}} \\
+\emph{\Vbrace{3}{p}} & 1 & 1 & 134 & 1 & 1 & \emph{\Vbrace{3}{p}} \\
+& 1 & 1 & 134 & 1 & 1 \\
+& 1 & 1 & 13456 & 1 & 1 \\
+\emph{\Vbrace{2}{q}} & 1 & 1 & 134 & 1 & 1 & \emph{\Vbrace{2}{q}}\\
+& 1 & 1 & 134 & 1 & 1 \\
+& \emph{\Hbrace{3}{p}} & \emph{\Hbrace[color=blue]{2}{q}} \\
+\end{NiceArray}$
+\end{Code}
+$\begin{NiceArray}{ccccc}%
+  [
+    hvlines ,
+    first-row ,
+    last-row = 6,
+    first-col ,
+    last-col ,
+    xdots/horizontal-labels 
+  ]
+& \Hbrace{3}{p} & \Hbrace{2}{q} \\
+\Vbrace{3}{p} & 1 & 1 & 134 & 1 & 1 & \Vbrace{3}{p} \\
+& 1 & 1 & 134 & 1 & 1 \\
+& 1 & 1 & 13456 & 1 & 1 \\
+\Vbrace{2}{q}& 1 & 1 & 134 & 1 & 1 & \Vbrace{2}{q}\\
+& 1 & 1 & 134 & 1 & 1 \\
+& \Hbrace{3}{p} & \Hbrace[color=blue]{2}{q} \\
+\end{NiceArray}$
+
+
+\medskip
+For another example of use of |\Hbrace| and |\Vbrace|, see
+the section ``Dotted lines that are no longer dotted'',
+p.~\pageref{ex:no-longer-dotted-rules}. 
+
+
+
 \subsection{The dotted lines and the rules}
 
 \label{dotted-and-rules}
@@ -6818,6 +7000,8 @@
 
 \subsection{Dotted lines which are no longer dotted}
 
+\label{ex:no-longer-dotted-rules}
+
 The option |line-style| controls the style of the lines drawn by |\Ldots|,
 |\Cdots|, etc. Thus, it's possible with these commands to draw lines which are
 not longer dotted (TikZ should be loaded).
@@ -6868,27 +7052,27 @@
 \end{pNiceMatrix}\]
 \end{scope}
 
-\interitem
+\pagebreak
 In fact, it's even possible to draw solid lines with the commands |\Cdots|,
 |\Vdots|, etc.\footnote{In this document, the TikZ library \pkg{arrows.meta}
 has been loaded, which impacts the shape of the arrow tips.}
 
-\begin{Verbatim}
+\medskip
+\begin{Code}
 \NiceMatrixOptions{xdots={horizontal-labels,line-style = <->}}
+\end{Code}
+\begin{Code}[width=11cm]
 $\begin{pNiceArray}{ccc|cc}[first-row,last-col,margin]
-\Hdotsfor{3}^{3} & \Hdotsfor{2}^{2} \\
-2 & 1 & 1 & 1 & 1 & \Vdotsfor{3}^{3}\\
+\emph{\Hdotsfor{3}^{3}} & \emph{\Hdotsfor{2}^{2}} \\
+2 & 1 & 1 & 1 & 1 & \emph{\Vdotsfor{3}^{3}}\\
 1 & 1 & 1 & 1 & 1 \\
 1 & 1 & 1 & 1 & 1 \\
 \Hline
-1 & 1 & 1 & 1 & 1 & \Vdotsfor{2}^{2}\\
+1 & 1 & 1 & 1 & 1 & \emph{\Vdotsfor{2}^{2}} \\
 1 & 1 & 1 & 1 & 1 \\
 \end{pNiceArray}$
-\end{Verbatim}
-
-
-\begin{center}
-\NiceMatrixOptions{xdots={horizontal-labels,line-style = <->}}
+\end{Code}
+{\NiceMatrixOptions{xdots={horizontal-labels,line-style = <->}}
 $\begin{pNiceArray}{ccc|cc}[first-row,last-col,margin]
 \Hdotsfor{3}^{3} & \Hdotsfor{2}^{2} \\
 2 & 1 & 1 & 1 & 1 & \Vdotsfor{3}^{3}\\
@@ -6897,16 +7081,31 @@
 \Hline
 1 & 1 & 1 & 1 & 1 & \Vdotsfor{2}^{2}\\
 1 & 1 & 1 & 1 & 1 \\
-\end{pNiceArray}$
-\end{center}
+\end{pNiceArray}$}
 
+
 \interitem
 \label{ex:colon}
-If you want the label \emph{on the line}, you should use the special token~``|:|'':
+If you want the label \emph{on the line}, you should use the special
+token~``|:|'' instead of~``|^|'':
 
-\begin{Verbatim}
+\medskip
+\begin{Code}
 \NiceMatrixOptions{xdots={horizontal-labels,line-style = <->}}
+\end{Code}
+\begin{Code}[width=11cm]
 $\begin{pNiceArray}{ccc|cc}[first-row,last-col,margin]
+\emph{\Hdotsfor{3}:{3}} & \emph{\Hdotsfor{2}:{2}} \\
+2 & 1 & 1 & 1 & 1 & \emph{\Vdotsfor{3}:{3}} \\
+1 & 1 & 1 & 1 & 1 \\
+1 & 1 & 1 & 1 & 1 \\
+\Hline
+1 & 1 & 1 & 1 & 1 & \emph{\Vdotsfor{2}:{2}} \\
+1 & 1 & 1 & 1 & 1 \\
+\end{pNiceArray}$
+\end{Code}
+{\NiceMatrixOptions{xdots={horizontal-labels,line-style = <->}}
+$\begin{pNiceArray}{ccc|cc}[first-row,last-col,margin]
 \Hdotsfor{3}:{3} & \Hdotsfor{2}:{2} \\
 2 & 1 & 1 & 1 & 1 & \Vdotsfor{3}:{3}\\
 1 & 1 & 1 & 1 & 1 \\
@@ -6914,26 +7113,82 @@
 \Hline
 1 & 1 & 1 & 1 & 1 & \Vdotsfor{2}:{2}\\
 1 & 1 & 1 & 1 & 1 \\
-\end{pNiceArray}$
-\end{Verbatim}
+\end{pNiceArray}$}
 
 
-\begin{center}
-\NiceMatrixOptions{xdots={horizontal-labels,line-style = <->}}
+
+\interitem
+If one prefers the braces of the library \pkg{decorations.pathreplacing} of TikZ, the
+best way is to use the commands |\Hbrace| and |\Vbrace| provided by
+\pkg{nicematrix} (cf. p.~\pageref{Hbrace}).\footnote{Those commands are
+available only if TikZ has been loaded with the library \pkg{decorations.pathreplacing}.}
+
+\medskip
+\begin{Code}[width=11cm]
+\NiceMatrixOptions{xdots/horizontal-labels}
 $\begin{pNiceArray}{ccc|cc}[first-row,last-col,margin]
-\Hdotsfor{3}:{3} & \Hdotsfor{2}:{2} \\
-2 & 1 & 1 & 1 & 1 & \Vdotsfor{3}:{3}\\
+\emph{\Hbrace{3}{3}} & \emph{\Hbrace{2}{2}} \\
+2 & 1 & 1 & 1 & 1 & \emph{\Vbrace{3}{3}} \\
 1 & 1 & 1 & 1 & 1 \\
 1 & 1 & 1 & 1 & 1 \\
 \Hline
-1 & 1 & 1 & 1 & 1 & \Vdotsfor{2}:{2}\\
+1 & 1 & 1 & 1 & 1 & \emph{\Vbrace{2}{2}} \\
 1 & 1 & 1 & 1 & 1 \\
 \end{pNiceArray}$
-\end{center}
+\end{Code}
+{\NiceMatrixOptions{xdots/horizontal-labels}
+$\begin{pNiceArray}{ccc|cc}[first-row,last-col,margin]
+\Hbrace{3}{3} & \Hbrace{2}{2} \\
+2 & 1 & 1 & 1 & 1 & \Vbrace{3}{3}\\
+1 & 1 & 1 & 1 & 1 \\
+1 & 1 & 1 & 1 & 1 \\
+\Hline
+1 & 1 & 1 & 1 & 1 & \Vbrace{2}{2}\\
+1 & 1 & 1 & 1 & 1 \\
+\end{pNiceArray}$}
 
 
+\pagebreak
+If one prefers the curly braces of the current mathematical font of LaTeX, one
+should use the commands |\SubMatrix|, |\OverBrace| and |\UnderBrace| in the
+|\CodeAfter|.
 
+\medskip
+\begin{Code}[width=11cm]
+$\begin{pNiceArray}{ccc|cc}[margin,last-col]
+2 & 1 & 1 & 1 & 1 & \Block{3-1}{\quad 3} \\
+1 & 1 & 1 & 1 & 1 \\
+1 & 1 & 1 & 1 & 1 \\
+\Hline
+1 & 1 & 1 & 1 & 1 & \Block{2-1}{\quad 2} \\
+1 & 1 & 1 & 1 & 1 \\
+\CodeAfter
+  \emph{\OverBrace[shorten,yshift=1.5mm]{1-1}{1-3}{3}}
+  \emph{\OverBrace[shorten,yshift=1.5mm]{1-4}{1-5}{2}}
+  \emph{\SubMatrix{.}{1-1}{3-5}{\rbrace}[xshift=3.5mm]}
+  \emph{\SubMatrix{.}{4-1}{5-5}{\rbrace}[xshift=3.5mm]}
+\end{pNiceArray}$
+\end{Code}
+{$\begin{pNiceArray}{ccc|cc}[margin,last-col]
+2 & 1 & 1 & 1 & 1 & \Block{3-1}{\quad 3} \\
+1 & 1 & 1 & 1 & 1 \\
+1 & 1 & 1 & 1 & 1 \\
+\Hline
+1 & 1 & 1 & 1 & 1 & \Block{2-1}{\quad 2} \\
+1 & 1 & 1 & 1 & 1 \\
+\CodeAfter
+  \OverBrace[shorten,yshift=1.5mm]{1-1}{1-3}{3}
+  \OverBrace[shorten,yshift=1.5mm]{1-4}{1-5}{2}
+  \SubMatrix{.}{1-1}{3-5}{\rbrace}[xshift=3.5mm]
+  \SubMatrix{.}{4-1}{5-5}{\rbrace}[xshift=3.5mm]
+\end{pNiceArray}$}
 
+\medskip
+Or course, the output may seem disappointing. That's why, for this type of use,
+we recommend the use of the commands |\Hbrace| and |\Vbrace| (provided by
+\pkg{nicematrix}), as shown in the previous example.
+
+
 \subsection{Dashed rules}
 \label{dashed}
 \index{tikzz at tikz!key of ``borders'' de \texttt{\textbackslash Block}|textit}
@@ -7650,6 +7905,18 @@
 \nolinkurl{https:www.tug.org/svn/texlive/trunk/Master/texmf-dist/tex/latex/nicematrix/nicematrix.sty}
 }
 
+
+\subsection*{Changes between version 7.0 and 7.1}
+
+New commands |\Hbrace| and |\Vbrace|.
+
+New commands |\EmptyColumn| and |\EmptyRow| in the |\CodeBefore|.
+
+\subsection*{Changes between version 6.29 and 7.0}
+
+The package \pkg{nicematrix} is now compatible (for the tabulars) with the
+Tagging Project.
+
 \subsection*{Changes between version 6.28 and 6.29}
 
 Modification in order to be compatible with the next version of \pkg{array}
@@ -7854,178 +8121,6 @@
 
 Key |\color| for the command |\RowStyle|.
 
-\subsection*{Changes between versions 5.19 and 6.0}
-
-Columns |X| and environment |{NiceTabularX}|.
-
-Command |\rowlistcolors| available in the |\CodeBefore|.
-
-In columns with fixed width, the blocks are composed as paragraphs (wrapping
-of the lines).
-
-The key |define-L-C-R| has been deleted.
-
-\subsection*{Changes between versions 5.18 and 5.19}
-
-New key |tikz| for the command |\Block|.
-
-\subsection*{Changes between versions 5.17 and 5.18}
-
-New command |\RowStyle|
-
-\subsection*{Changes between versions 5.16 and 5.17}
-
-The key |define-L-C-R| (only available at load-time) now raises a (non fatal)
-error.
-
-Keys |L|, |C| and |R| for the command |\Block|.
-
-Key |hvlines-except-borders|.
-
-It's now possible to use a key |l|, |r| or |c| with the command
-|\pAutoNiceMatrix| (and the similar ones).
-
-\subsection*{Changes between versions 5.15 and 5.16}
-
-It's now possible to use the cells corresponding to the contents of the nodes
-(of the form |i-j|) in the |\CodeBefore| when the key |create-cell-nodes| of
-that |\CodeBefore| is used. The medium and the large nodes are also available
-if the corresponding keys are used.
-
-\subsection*{Changes between versions 5.14 and 5.15}
-
-Key |hvlines| for the command |\Block|.
-
-The commands provided by \pkg{nicematrix} to color cells, rows and columns
-don't color the cells which are in the ``corners'' (when the key |corner| is
-used).
-
-It's now possible to specify delimiters for submatrices in the preamble of an
-environment. 
-
-The version 5.15b is compatible with the version 3.0+ of \pkg{siunitx}
-(previous versions were not).
-
-\subsection*{Changes between versions 5.13 and 5.14}
-
-Nodes of the form |(1.5)|, |(2.5)|, |(3.5)|, etc. 
-
-Keys |t| and |b| for the command |\Block|.
-
-Key |corners|. 
-
-\subsection*{Changes between versions 5.12 and 5.13}
-
-New command |\arraycolor| in the |\CodeBefore| (with its key
-|except-corners|).
-
-New key |borders| for the command |\Block|.
-
-New command |\Hline| (for horizontal rules not drawn in the blocks).
-
-The keys |vlines| and |hlines| takes in as value a (comma-separated) list of
-numbers (for the rules to draw).
-
-\subsection*{Changes between versions 5.11 and 5.12}
-
-Keywords |\CodeBefore| and |\Body| (alternative syntax to the key
-|code-before|). 
-
-New key |delimiters/max-width|.
-
-New keys |hlines|, |vlines| and |hvlines| for the command |\SubMatrix| in the
-|\CodeAfter|. 
-
-New key |rounded-corners| for the command |\Block|.
-
-\subsection*{Changes between versions 5.10 and 5.11}
-
-It's now possible, in the |code-before| and in the |\CodeAfter|, to use the
-syntax \verb+|(i-|j)+ for the TikZ node at the intersection of the (potential)
-horizontal rule number~$i$ and the (potential) vertical rule number~$j$.
-
-\subsection*{Changes between versions 5.9 and 5.10}
-
-New command |\SubMatrix| available in the |\CodeAfter|.
-
-It's possible to provide options (between brackets) to the keyword |\CodeAfter|.
-
-\subsection*{Changes between versions 5.8 and 5.9}
-
-Correction of a bug: in the previous versions, it was not possible to use the
-key |line-style| for the continuous dotted lines when the TikZ library |babel|
-was loaded.
-
-New key |cell-space-limits|.
-
-\subsection*{Changes between versions 5.7 and 5.8}
-
-Keys |cols| and |restart| of the command |\rowcolors| in the |code-before|.
-
-Modification of the behaviour of |\\| in the columns of type |p|, |m| or |b|
-(for a behaviour similar to the environments of \pkg{array}).
-
-Better error messages for the command |\Block|.
-
-\subsection*{Changes between versions 5.6 and 5.7}
-
-New key |delimiters-color|
-
-Keys |fill|, |draw| and |line-width| for the command |\Block|.
-
-\subsection*{Changes between versions 5.5 and 5.6}
-
-Different behaviour for the mono-row blocks.
-
-New command |\NotEmpty|.
-
-\subsection*{Changes between versions 5.4 and 5.5}
-
-The user must never put |\omit| before |\CodeAfter|.
-
-Correction of a bug: the tabular notes |\tabularnotes| were not composed when
-present in a block (except a mono-column block).
-
-\subsection*{Changes between versions 5.3 and 5.4}
-
-Key |tabularnote|.
-
-Different behaviour for the mono-column blocks.
-
-\subsection*{Changes between versions 5.2 and 5.3}
-
-Keys |c|, |r| and |l| for the command |\Block|.
-
-It's possible to use the key |draw-first| with |\Ddots| and |\Iddots| to
-specify which dotted line will be drawn first (the other lines will be drawn
-parallel to that one if parallelization is activated).
-
-\subsection*{Changes between versions 5.1 and 5.2}
-
-The vertical rules specified by \verb+|+ or \verb+||+ in the preamble respect
-the blocks.
-
-Key |respect-blocks| for |\rowcolors| (with a \emph{s}) in the |code-before|.
-
-The variable |\g_nicematrix_code_before_tl| is now public.
-
-The key |baseline| may take in as value an expression of the form
-\textsl{line-i} to align the |\hline| in the row \textsl{i}.
-
-The key |hvlines-except-corners| may take in as value a list of corners (eg: NW,SE).
-
-\subsection*{Changes between versions 5.0 and 5.1}
-
-The vertical rules specified by \verb+|+ in the preamble are not broken by
-|\hline\hline| (and other).
-
-Environment |{NiceTabular*}|
-
-Command |\Vdotsfor| similar to |\Hdotsfor|
-
-The variable |\g_nicematrix_code_after_tl| is now public.
-
-
 \cleardoublepage
 
 \phantomsection

Modified: trunk/Master/texmf-dist/source/latex/nicematrix/nicematrix-code.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/nicematrix/nicematrix-code.dtx	2025-02-01 20:42:48 UTC (rev 73673)
+++ trunk/Master/texmf-dist/source/latex/nicematrix/nicematrix-code.dtx	2025-02-01 20:42:57 UTC (rev 73674)
@@ -17,8 +17,8 @@
 %
 % \fi
 % \iffalse
-\def\myfileversion{7.0b}
-\def\myfiledate{2025/01/20}
+\def\myfileversion{7.1}
+\def\myfiledate{2025/02/01}
 %
 %
 %<*batchfile>  
@@ -1101,8 +1101,8 @@
 % 
 % 
 % \bigskip
-% The following parameter will be raised when a block content a |&| in its
-% content (=label).
+% The following parameter will be raised when a block contains an ampersand
+% (|&|) in its content (=label).
 %    \begin{macrocode}
 \bool_new:N \l_@@_ampersand_bool
 %    \end{macrocode}
@@ -1182,7 +1182,7 @@
 %    \end{macrocode}
 % 
 % \bigskip
-% The use of |\l_@@_code_before_tl| is not clear. Maybe that with the evolutions
+% The use of |\l_@@_code_before_tl| is not clear. Maybe that, with the evolutions
 % of \pkg{nicematrix}, it has become obsolete. We should have a look at that.
 %    \begin{macrocode}
 \tl_new:N \l_@@_code_before_tl
@@ -2484,7 +2484,7 @@
     no-cell-nodes .code:n = 
       \bool_set_true:N \l_@@_no_cell_nodes_bool 
       \cs_set_protected:Npn \@@_node_for_cell: 
-        { \box_use_drop:N \l_@@_cell_box } ,
+        { \set at color \box_use_drop:N \l_@@_cell_box } ,
     no-cell-nodes .value_forbidden:n = true ,
     rounded-corners .dim_set:N = \l_@@_tab_rounded_corners_dim ,
     rounded-corners .default:n = 4 pt ,
@@ -3861,6 +3861,8 @@
     \cs_set_eq:NN \MidRule \@@_MidRule
     \cs_set_eq:NN \BottomRule \@@_BottomRule
     \cs_set_eq:NN \RowStyle \@@_RowStyle:n
+    \cs_set_eq:NN \Hbrace \@@_Hbrace
+    \cs_set_eq:NN \Vbrace \@@_Vbrace
     \seq_map_inline:Nn \l_@@_custom_line_commands_seq
       { \cs_set_eq:cc { ##1 } { nicematrix - ##1 } } 
     \cs_set_eq:NN \cellcolor \@@_cellcolor_tabular
@@ -4033,7 +4035,9 @@
 % array.
 %    \begin{macrocode}
     \seq_gset_eq:NN \g_@@_pos_of_blocks_seq \g_@@_future_pos_of_blocks_seq
+    \seq_gclear:N \g_@@_future_pos_of_blocks_seq
 %    \end{macrocode}
+%
 % Idem for other sequences written on the |aux| file.
 %    \begin{macrocode}
     \seq_gclear_new:N \g_@@_multicolumn_cells_seq
@@ -10208,6 +10212,11 @@
   { \int_compare:nNnT { \c at iRow } < { #1 } { #2 } }  
 %    \end{macrocode}
 %
+%    \begin{macrocode}
+\cs_new:Npn \@@_if_col_greater_than:nn #1 #2 
+  { \int_compare:nNnF { \c at jCol } < { #1 } { #2 }  }
+%    \end{macrocode}
+% 
 % \bigskip
 % |\@@_put_in_row_style| will be used several times in |\RowStyle|.
 %    \begin{macrocode}
@@ -10227,7 +10236,12 @@
 % The |\scan_stop:| is mandatory (for ex. for the case where |\rotate| is used
 % in the argument of |\RowStyle|).
 %    \begin{macrocode}
-          { \exp_not:n { #1 } \scan_stop: }
+          { 
+            \exp_not:N 
+            \@@_if_col_greater_than:nn
+              { \int_eval:n { \c at jCol } }
+              { \exp_not:n { #1 } \scan_stop: }
+          }
       }
   }
 %    \end{macrocode}
@@ -14858,8 +14872,9 @@
 %    \begin{macrocode}
 \cs_new_protected:Npn \@@_vlines_block:nnn #1 #2 #3
   {
-    \dim_set_eq:NN \l_@@_line_width_dim \arrayrulewidth
+    \group_begin:
     \keys_set_known:nn { nicematrix / BlockBorders } { #1 }
+    \dim_set_eq:NN \arrayrulewidth \l_@@_line_width_dim 
     \@@_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
@@ -14879,11 +14894,13 @@
               }
           } 
       }
+    \group_end:
   }
 \cs_new_protected:Npn \@@_hlines_block:nnn #1 #2 #3
   {
-    \dim_set_eq:NN \l_@@_line_width_dim \arrayrulewidth
+    \group_begin:
     \keys_set_known:nn { nicematrix / BlockBorders } { #1 }
+    \dim_set_eq:NN \arrayrulewidth \l_@@_line_width_dim 
     \@@_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
@@ -14903,6 +14920,7 @@
               } 
           }
       }
+    \group_end:
   }
 %    \end{macrocode}
 %
@@ -16377,6 +16395,187 @@
 %    \end{macrocode}
 %
 % \bigskip
+% \section{The commands HBrace et VBrace}
+%
+% 
+% \bigskip
+%    \begin{macrocode} 
+\hook_gput_code:nnn { begindocument } { . } 
+  {
+    \cs_if_exist:cT { tikz at library@decorations.pathreplacing at loaded }
+      {
+        \tikzset
+          {
+            nicematrix~normal~brace / .style = 
+              { 
+                decoration = brace , 
+                decorate , 
+                outer~sep = 0.25 em 
+              } ,
+            nicematrix~mirrored~brace / .style = 
+              {
+                decoration = { brace , mirror } , 
+                decorate , 
+                outer~sep = 0.25 em 
+              }
+          }    
+     }
+  }
+%    \end{macrocode}
+%
+% \bigskip
+% The following set of keys will be used only for security since the keys will
+% be sent to the command |\Ldots| or |\Vdots|.
+%    \begin{macrocode}
+\keys_define:nn { nicematrix / Hbrace }
+  {
+    color .code:n = ,
+    horizontal-labels .code:n = ,
+    shorten .code:n = ,
+    shorten-start .code:n = , 
+    shorten-end .code:n = , 
+    unknown .code:n = \@@_error:n { Unknown~key~for~Hbrace } 
+  }
+%    \end{macrocode}
+% 
+% \bigskip
+% Here we need an ``fully expandable'' command.
+%    \begin{macrocode}
+\NewExpandableDocumentCommand { \@@_Hbrace } { O { } m m }
+  {
+    \cs_if_exist:cTF { tikz at library@decorations.pathreplacing at loaded }
+      { \@@_hbrace:nnn { #1 } { #2 } { #3 } }
+      { \@@_error:n { Hbrace~not~allowed } }
+  }
+%    \end{macrocode}
+% 
+% \bigskip
+% The following command must \emph{not} be protected.
+%    \begin{macrocode}
+\cs_new:Npn \@@_hbrace:nnn #1 #2 #3
+  {
+    \int_compare:nNnTF \c at iRow < 1 
+      { 
+%    \end{macrocode}
+% We recall that |\str_if_eq:nnTF| is ``fully expandable''.
+%    \begin{macrocode}
+        \str_if_eq:nnTF { #2 } { * } 
+          { 
+            \NiceMatrixOptions{nullify-dots}
+            \Ldots 
+              [ 
+                line-style = nicematrix~normal~brace ,  
+                #1 , 
+                up = 
+                  \bool_if:NT \l_@@_tabular_bool \text { \exp_not:n { #3 } }  
+              ] 
+          }
+          { 
+            \Hdotsfor 
+              [ 
+                line-style = nicematrix~normal~brace , 
+                #1 , 
+                up = 
+                  \bool_if:NT \l_@@_tabular_bool \text { \exp_not:n { #3 } }  
+              ] 
+              { #2 } 
+          }
+      }
+      { 
+        \str_if_eq:nnTF { #2 } { * } 
+          { 
+            \NiceMatrixOptions{nullify-dots}
+            \Ldots 
+              [ 
+                line-style = nicematrix~mirrored~brace , 
+                #1 , 
+                down = 
+                  \bool_if:NT \l_@@_tabular_bool \text { \exp_not:n { #3 } }  
+              ] 
+          }
+          { 
+            \Hdotsfor 
+              [ 
+                line-style = nicematrix~mirrored~brace , 
+                #1 , 
+                down = 
+                  \bool_if:NT \l_@@_tabular_bool \text { \exp_not:n { #3 } }  
+              ] 
+            { #2 } 
+          }
+      }
+   \keys_set:nn { nicematrix / Hbrace } { #1 }
+  }
+%    \end{macrocode}
+%
+% \bigskip
+% Here we need an ``fully expandable'' command.
+%    \begin{macrocode}
+\NewExpandableDocumentCommand { \@@_Vbrace } { O { } m m }
+  {
+    \cs_if_exist:cTF { tikz at library@decorations.pathreplacing at loaded }
+      { \@@_vbrace:nnn { #1 } { #2 } { #3 } }
+      { \@@_error:n { Vbrace~not~allowed } }
+  }
+%    \end{macrocode}
+% 
+%
+% The following command must \emph{not} be protected.
+%    \begin{macrocode}
+\cs_new:Npn \@@_vbrace:nnn #1 #2 #3 
+  {
+    \int_compare:nNnTF \c at jCol = 0 
+      { 
+        \str_if_eq:nnTF { #2 } { * } 
+          { 
+            \NiceMatrixOptions{nullify-dots}
+            \Vdots 
+              [ 
+                line-style = nicematrix~mirrored~brace , 
+                #1 , 
+                down = 
+                  \bool_if:NT \l_@@_tabular_bool \text { \exp_not:n { #3 } }  
+              ] 
+          }
+          { 
+            \Vdotsfor 
+              [ 
+                line-style = nicematrix~mirrored~brace , 
+                #1 , 
+                down = 
+                  \bool_if:NT \l_@@_tabular_bool \text { \exp_not:n { #3 } }  
+              ] 
+            { #2 } 
+          }
+      }
+      { 
+        \str_if_eq:nnTF { #2 } { * } 
+          { 
+            \NiceMatrixOptions{nullify-dots}
+            \Vdots 
+              [ 
+                line-style =  nicematrix~normal~brace , 
+                #1 , 
+                up = 
+                  \bool_if:NT \l_@@_tabular_bool \text { \exp_not:n { #3 } }  
+              ] 
+          }
+          { 
+            \Vdotsfor 
+              [ 
+                line-style = nicematrix~normal~brace , 
+                #1 , 
+                up = 
+                  \bool_if:NT \l_@@_tabular_bool \text { \exp_not:n { #3 } } 
+              ] 
+            { #2 } 
+          }
+      }
+   \keys_set:nn { nicematrix / Hbrace } { #1 }
+  }
+%    \end{macrocode}
+% 
+% \bigskip
 % \section{The command TikzEveryCell}
 %
 %    \begin{macrocode}
@@ -16628,14 +16827,6 @@
 %
 %
 %    \begin{macrocode}
-\@@_msg_new:nn { no-test-for-array }
-  { 
-    The~key~'no-test-for-array'~has~been~deprecated~and~will~be~
-    deleted~in~a~future~version~of~nicematrix.
-  }
-%    \end{macrocode}
-% 
-%    \begin{macrocode}
 \keys_define:nn { nicematrix / Package }
   {
     renew-dots .bool_set:N = \l_@@_renew_dots_bool ,
@@ -16645,16 +16836,12 @@
     messages-for-Overleaf .bool_set:N = \g_@@_messages_for_Overleaf_bool , 
     footnote .bool_set:N = \g_@@_footnote_bool ,
     footnotehyper .bool_set:N = \g_@@_footnotehyper_bool ,
-%    \end{macrocode}
-% The test for a potential modification of \pkg{array} has been deleted. We
-% keep the following key only for compatibility but maybe we will delete it.
-%    \begin{macrocode}
-    no-test-for-array .code:n = \@@_warning:n { no-test-for-array } ,
     unknown .code:n = \@@_error:n { Unknown~key~for~package } 
   }
 \ProcessKeysOptions { nicematrix / Package }
 %    \end{macrocode}
 %
+% 
 % \bigskip
 %    \begin{macrocode}
 \@@_msg_new:nn { footnote~with~footnotehyper~package }
@@ -17052,6 +17239,18 @@
 %    \end{macrocode}
 %
 %    \begin{macrocode}
+\@@_msg_new:nn { Unknown~key~for~Hbrace }
+  {
+    Unknown~key.\\
+    You~have~used~the~key~'\l_keys_key_str'~but~the~only~
+    keys~allowed~for~the~commands~\token_to_str:N \Hbrace\
+    and~\token_to_str:N \Vbrace\ are:~'color',~
+    'horizontal-labels',~'shorten'~'shorten-end'~
+    and~'shorten-start'.
+  }
+%    \end{macrocode}
+%
+%    \begin{macrocode}
 \@@_msg_new:nn { Unknown~key~for~TikzEveryCell }
   {
     Unknown~key.\\
@@ -17234,6 +17433,32 @@
 %    \end{macrocode}
 %
 %    \begin{macrocode}
+\@@_msg_new:nn { Hbrace~not~allowed }
+  {
+    Command~not~allowed.\\
+    You~can't~use~the~command~\token_to_str:N \Hbrace\ 
+    because~you~have~not~loaded~TikZ~
+    and~the~TikZ~library~'decorations.pathreplacing'.\\
+    Use:~\token_to_str:N \usepackage\{tikz\}~
+    \token_to_str:N \usetikzlibrary \{ decorations.pathreplacing \} \\
+    That~command~will~be~ignored. 
+  }
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+\@@_msg_new:nn { Vbrace~not~allowed }
+  {
+    Command~not~allowed.\\
+    You~can't~use~the~command~\token_to_str:N \Vbrace\ 
+    because~you~have~not~loaded~TikZ~
+    and~the~TikZ~library~'decorations.pathreplacing'.\\
+    Use:~\token_to_str:N \usepackage\{tikz\}~
+    \token_to_str:N \usetikzlibrary \{ decorations.pathreplacing \} \\
+    That~command~will~be~ignored. 
+  }
+%    \end{macrocode}
+% 
+%    \begin{macrocode}
 \@@_msg_new:nn { Wrong~line~in~SubMatrix } 
   { 
     Wrong~line.\\
@@ -17640,7 +17865,7 @@
 %    \begin{macrocode}
 \@@_msg_new:nnn { Unknow~key~for~RulesBis }
   {
-    Unkown~key.\\
+    Unknown~key.\\
     Your~key~'\l_keys_key_str'~is~unknown~for~a~rule.\\
     \c_@@_available_keys_str
   }

Modified: trunk/Master/texmf-dist/tex/latex/nicematrix/nicematrix.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/nicematrix/nicematrix.sty	2025-02-01 20:42:48 UTC (rev 73673)
+++ trunk/Master/texmf-dist/tex/latex/nicematrix/nicematrix.sty	2025-02-01 20:42:57 UTC (rev 73674)
@@ -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{7.0b}
-\def\myfiledate{2025/01/20}
+\def\myfileversion{7.1}
+\def\myfiledate{2025/02/01}
 \RequirePackage{pgfcore}
 \usepgfmodule{shapes}
 \RequirePackage{l3keys2e}
@@ -832,7 +832,7 @@
     no-cell-nodes .code:n =
       \bool_set_true:N \l__nicematrix_no_cell_nodes_bool
       \cs_set_protected:Npn \__nicematrix_node_for_cell:
-        { \box_use_drop:N \l__nicematrix_cell_box } ,
+        { \set at color \box_use_drop:N \l__nicematrix_cell_box } ,
     no-cell-nodes .value_forbidden:n = true ,
     rounded-corners .dim_set:N = \l__nicematrix_tab_rounded_corners_dim ,
     rounded-corners .default:n = 4 pt ,
@@ -1630,6 +1630,8 @@
     \cs_set_eq:NN \MidRule \__nicematrix_MidRule
     \cs_set_eq:NN \BottomRule \__nicematrix_BottomRule
     \cs_set_eq:NN \RowStyle \__nicematrix_RowStyle:n
+    \cs_set_eq:NN \Hbrace \__nicematrix_Hbrace
+    \cs_set_eq:NN \Vbrace \__nicematrix_Vbrace
     \seq_map_inline:Nn \l__nicematrix_custom_line_commands_seq
       { \cs_set_eq:cc { ##1 } { nicematrix - ##1 } }
     \cs_set_eq:NN \cellcolor \__nicematrix_cellcolor_tabular
@@ -1700,6 +1702,7 @@
     \seq_gclear:N \g__nicematrix_submatrix_seq
     \bool_if:NT \l__nicematrix_code_before_bool \__nicematrix_exec_code_before:
     \seq_gset_eq:NN \g__nicematrix_pos_of_blocks_seq \g__nicematrix_future_pos_of_blocks_seq
+    \seq_gclear:N \g__nicematrix_future_pos_of_blocks_seq
     \seq_gclear_new:N \g__nicematrix_multicolumn_cells_seq
     \seq_gclear_new:N \g__nicematrix_multicolumn_sizes_seq
     \int_gset:Nn \g__nicematrix_last_row_node_int { -2 }
@@ -5350,6 +5353,8 @@
   }
 \cs_new:Npn \__nicematrix_if_row_less_than:nn #1 #2
   { \int_compare:nNnT { \c at iRow } < { #1 } { #2 } }
+\cs_new:Npn \__nicematrix_if_col_greater_than:nn #1 #2
+  { \int_compare:nNnF { \c at jCol } < { #1 } { #2 }  }
 \cs_generate_variant:Nn \__nicematrix_put_in_row_style:n { e }
 \cs_set_protected:Npn \__nicematrix_put_in_row_style:n #1
   {
@@ -5358,7 +5363,12 @@
         \exp_not:N
         \__nicematrix_if_row_less_than:nn
           { \int_eval:n { \c at iRow + \l__nicematrix_key_nb_rows_int } }
-          { \exp_not:n { #1 } \scan_stop: }
+          {
+            \exp_not:N
+            \__nicematrix_if_col_greater_than:nn
+              { \int_eval:n { \c at jCol } }
+              { \exp_not:n { #1 } \scan_stop: }
+          }
       }
   }
 \keys_define:nn { nicematrix / RowStyle }
@@ -8173,8 +8183,9 @@
   }
 \cs_new_protected:Npn \__nicematrix_vlines_block:nnn #1 #2 #3
   {
-    \dim_set_eq:NN \l__nicematrix_line_width_dim \arrayrulewidth
+    \group_begin:
     \keys_set_known:nn { nicematrix / BlockBorders } { #1 }
+    \dim_set_eq:NN \arrayrulewidth \l__nicematrix_line_width_dim
     \__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
@@ -8194,11 +8205,13 @@
               }
           }
       }
+    \group_end:
   }
 \cs_new_protected:Npn \__nicematrix_hlines_block:nnn #1 #2 #3
   {
-    \dim_set_eq:NN \l__nicematrix_line_width_dim \arrayrulewidth
+    \group_begin:
     \keys_set_known:nn { nicematrix / BlockBorders } { #1 }
+    \dim_set_eq:NN \arrayrulewidth \l__nicematrix_line_width_dim
     \__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
@@ -8218,6 +8231,7 @@
               }
           }
       }
+    \group_end:
   }
 \cs_new_protected:Npn \__nicematrix_stroke_borders_block:nnn #1 #2 #3
   {
@@ -9171,6 +9185,150 @@
       { }
       { }
   }
+\hook_gput_code:nnn { begindocument } { . }
+  {
+    \cs_if_exist:cT { tikz at library@decorations.pathreplacing at loaded }
+      {
+        \tikzset
+          {
+            nicematrix~normal~brace / .style =
+              {
+                decoration = brace ,
+                decorate ,
+                outer~sep = 0.25 em
+              } ,
+            nicematrix~mirrored~brace / .style =
+              {
+                decoration = { brace , mirror } ,
+                decorate ,
+                outer~sep = 0.25 em
+              }
+          }
+     }
+  }
+\keys_define:nn { nicematrix / Hbrace }
+  {
+    color .code:n = ,
+    horizontal-labels .code:n = ,
+    shorten .code:n = ,
+    shorten-start .code:n = ,
+    shorten-end .code:n = ,
+    unknown .code:n = \__nicematrix_error:n { Unknown~key~for~Hbrace }
+  }
+\NewExpandableDocumentCommand { \__nicematrix_Hbrace } { O { } m m }
+  {
+    \cs_if_exist:cTF { tikz at library@decorations.pathreplacing at loaded }
+      { \__nicematrix_hbrace:nnn { #1 } { #2 } { #3 } }
+      { \__nicematrix_error:n { Hbrace~not~allowed } }
+  }
+\cs_new:Npn \__nicematrix_hbrace:nnn #1 #2 #3
+  {
+    \int_compare:nNnTF \c at iRow < 1
+      {
+        \str_if_eq:nnTF { #2 } { * }
+          {
+            \NiceMatrixOptions{nullify-dots}
+            \Ldots
+              [
+                line-style = nicematrix~normal~brace ,
+                #1 ,
+                up =
+                  \bool_if:NT \l__nicematrix_tabular_bool \text { \exp_not:n { #3 } }
+              ]
+          }
+          {
+            \Hdotsfor
+              [
+                line-style = nicematrix~normal~brace ,
+                #1 ,
+                up =
+                  \bool_if:NT \l__nicematrix_tabular_bool \text { \exp_not:n { #3 } }
+              ]
+              { #2 }
+          }
+      }
+      {
+        \str_if_eq:nnTF { #2 } { * }
+          {
+            \NiceMatrixOptions{nullify-dots}
+            \Ldots
+              [
+                line-style = nicematrix~mirrored~brace ,
+                #1 ,
+                down =
+                  \bool_if:NT \l__nicematrix_tabular_bool \text { \exp_not:n { #3 } }
+              ]
+          }
+          {
+            \Hdotsfor
+              [
+                line-style = nicematrix~mirrored~brace ,
+                #1 ,
+                down =
+                  \bool_if:NT \l__nicematrix_tabular_bool \text { \exp_not:n { #3 } }
+              ]
+            { #2 }
+          }
+      }
+   \keys_set:nn { nicematrix / Hbrace } { #1 }
+  }
+\NewExpandableDocumentCommand { \__nicematrix_Vbrace } { O { } m m }
+  {
+    \cs_if_exist:cTF { tikz at library@decorations.pathreplacing at loaded }
+      { \__nicematrix_vbrace:nnn { #1 } { #2 } { #3 } }
+      { \__nicematrix_error:n { Vbrace~not~allowed } }
+  }
+\cs_new:Npn \__nicematrix_vbrace:nnn #1 #2 #3
+  {
+    \int_compare:nNnTF \c at jCol = 0
+      {
+        \str_if_eq:nnTF { #2 } { * }
+          {
+            \NiceMatrixOptions{nullify-dots}
+            \Vdots
+              [
+                line-style = nicematrix~mirrored~brace ,
+                #1 ,
+                down =
+                  \bool_if:NT \l__nicematrix_tabular_bool \text { \exp_not:n { #3 } }
+              ]
+          }
+          {
+            \Vdotsfor
+              [
+                line-style = nicematrix~mirrored~brace ,
+                #1 ,
+                down =
+                  \bool_if:NT \l__nicematrix_tabular_bool \text { \exp_not:n { #3 } }
+              ]
+            { #2 }
+          }
+      }
+      {
+        \str_if_eq:nnTF { #2 } { * }
+          {
+            \NiceMatrixOptions{nullify-dots}
+            \Vdots
+              [
+                line-style =  nicematrix~normal~brace ,
+                #1 ,
+                up =
+                  \bool_if:NT \l__nicematrix_tabular_bool \text { \exp_not:n { #3 } }
+              ]
+          }
+          {
+            \Vdotsfor
+              [
+                line-style = nicematrix~normal~brace ,
+                #1 ,
+                up =
+                  \bool_if:NT \l__nicematrix_tabular_bool \text { \exp_not:n { #3 } }
+              ]
+            { #2 }
+          }
+      }
+   \keys_set:nn { nicematrix / Hbrace } { #1 }
+  }
 \bool_new:N \l__nicematrix_not_empty_bool
 \bool_new:N \l__nicematrix_empty_bool
 
@@ -9371,11 +9529,6 @@
     renew-dots,~and~
     renew-matrix.
   }
-\__nicematrix_msg_new:nn { no-test-for-array }
-  {
-    The~key~'no-test-for-array'~has~been~deprecated~and~will~be~
-    deleted~in~a~future~version~of~nicematrix.
-  }
 \keys_define:nn { nicematrix / Package }
   {
     renew-dots .bool_set:N = \l__nicematrix_renew_dots_bool ,
@@ -9385,7 +9538,6 @@
     messages-for-Overleaf .bool_set:N = \g__nicematrix_messages_for_Overleaf_bool ,
     footnote .bool_set:N = \g__nicematrix_footnote_bool ,
     footnotehyper .bool_set:N = \g__nicematrix_footnotehyper_bool ,
-    no-test-for-array .code:n = \__nicematrix_warning:n { no-test-for-array } ,
     unknown .code:n = \__nicematrix_error:n { Unknown~key~for~package }
   }
 \ProcessKeysOptions { nicematrix / Package }
@@ -9644,6 +9796,15 @@
     There~is~only~two~keys~available~here:~width~and~color.\\
     Your~key~'\l_keys_key_str'~will~be~ignored.
   }
+\__nicematrix_msg_new:nn { Unknown~key~for~Hbrace }
+  {
+    Unknown~key.\\
+    You~have~used~the~key~'\l_keys_key_str'~but~the~only~
+    keys~allowed~for~the~commands~\token_to_str:N \Hbrace\
+    and~\token_to_str:N \Vbrace\ are:~'color',~
+    'horizontal-labels',~'shorten'~'shorten-end'~
+    and~'shorten-start'.
+  }
 \__nicematrix_msg_new:nn { Unknown~key~for~TikzEveryCell }
   {
     Unknown~key.\\
@@ -9775,6 +9936,26 @@
     A~name~must~be~accepted~by~the~regular~expression~[A-Za-z][A-Za-z0-9]*.\\
     This~key~will~be~ignored.
   }
+\__nicematrix_msg_new:nn { Hbrace~not~allowed }
+  {
+    Command~not~allowed.\\
+    You~can't~use~the~command~\token_to_str:N \Hbrace\
+    because~you~have~not~loaded~TikZ~
+    and~the~TikZ~library~'decorations.pathreplacing'.\\
+    Use:~\token_to_str:N \usepackage\{tikz\}~
+    \token_to_str:N \usetikzlibrary \{ decorations.pathreplacing \} \\
+    That~command~will~be~ignored.
+  }
+\__nicematrix_msg_new:nn { Vbrace~not~allowed }
+  {
+    Command~not~allowed.\\
+    You~can't~use~the~command~\token_to_str:N \Vbrace\
+    because~you~have~not~loaded~TikZ~
+    and~the~TikZ~library~'decorations.pathreplacing'.\\
+    Use:~\token_to_str:N \usepackage\{tikz\}~
+    \token_to_str:N \usetikzlibrary \{ decorations.pathreplacing \} \\
+    That~command~will~be~ignored.
+  }
 \__nicematrix_msg_new:nn { Wrong~line~in~SubMatrix }
   {
     Wrong~line.\\
@@ -10064,7 +10245,7 @@
   }
 \__nicematrix_msg_new:nnn { Unknow~key~for~RulesBis }
   {
-    Unkown~key.\\
+    Unknown~key.\\
     Your~key~'\l_keys_key_str'~is~unknown~for~a~rule.\\
     \c__nicematrix_available_keys_str
   }



More information about the tex-live-commits mailing list.