texlive[66446] branches/branch2022.final/Master/texmf-dist:

commits+karl at tug.org commits+karl at tug.org
Tue Mar 7 23:24:01 CET 2023


Revision: 66446
          http://tug.org/svn/texlive?view=revision&revision=66446
Author:   karl
Date:     2023-03-07 23:24:01 +0100 (Tue, 07 Mar 2023)
Log Message:
-----------
nicematrix (7mar23) (branch)

Modified Paths:
--------------
    branches/branch2022.final/Master/texmf-dist/doc/latex/nicematrix/nicematrix-french.pdf
    branches/branch2022.final/Master/texmf-dist/doc/latex/nicematrix/nicematrix-french.tex
    branches/branch2022.final/Master/texmf-dist/doc/latex/nicematrix/nicematrix.pdf
    branches/branch2022.final/Master/texmf-dist/source/latex/nicematrix/nicematrix.dtx
    branches/branch2022.final/Master/texmf-dist/tex/latex/nicematrix/nicematrix.sty

Modified: branches/branch2022.final/Master/texmf-dist/doc/latex/nicematrix/nicematrix-french.pdf
===================================================================
(Binary files differ)

Modified: branches/branch2022.final/Master/texmf-dist/doc/latex/nicematrix/nicematrix-french.tex
===================================================================
--- branches/branch2022.final/Master/texmf-dist/doc/latex/nicematrix/nicematrix-french.tex	2023-03-07 22:23:46 UTC (rev 66445)
+++ branches/branch2022.final/Master/texmf-dist/doc/latex/nicematrix/nicematrix-french.tex	2023-03-07 22:24:01 UTC (rev 66446)
@@ -39,6 +39,7 @@
 \usepackage{footnote}
 \usepackage{booktabs}
 \usepackage{varwidth}
+\usepackage{tcolorbox}
 \usepackage[auto-lang=false]{lipsum}
 \usepackage[hyperfootnotes = false]{hyperref}
 
@@ -486,52 +487,60 @@
 0 & \Cdots& 0 & 0
 \end{bNiceArray}$
 
+\NewDocumentCommand{\Definition}{m}
+  {{\setlength{\fboxsep}{1pt}\colorbox{gray!20}{\ttfamily \vphantom{gl}#1}}}
 
+
 \interitem
 La commande |\Block| accepte en premier argument optionnel (entre crochets) une
 liste de couples \textsl{clé=valeur}. Les clés sont les suivantes :
 \begin{itemize}
-\item la clé |fill| prend en argument une couleur et remplit le bloc avec cette
-couleur ;
-\item la clé |draw| prend en argument une couleur et trace le cadre avec cette
-couleur (la valeur par défaut de cette clé est la couleur courante des filets du
-tableau) ;
-\item la clé |color| prend en argument une couleur et l'applique au contenu et
-trace également le cadre avec cette couleur ;
-\item les clés |hlines|, |vlines| et |hvlines| tracent les filets correspondants
-dans le bloc\footnote{Néanmoins, les filets ne sont pas tracés dans les
-  sous-blocs du bloc, conformément à l'esprit de \pkg{nicematrix}: les filets ne
-sont pas tracés dans les blocs (cf. section~\ref{rules} p.~\pageref{rules}).} ;
-\item la clé |line-width| fixe la largeur utilisée pour tracer les filets (n'a
-d'intérêt que si |draw|, |hvlines|, |hlines| ou |vlines| est utilisée) ;
-\item la clé |rounded-corners| impose des coins arrondis (pour le cadre dessiné
-par |draw| et le fond dessiné par |fill|) avec un rayon égal à la valeur de
-cette clé (la valeur par défaut est 4~pt\footnote{Cette valeur par défaut est la
-  valeur initiale des \emph{rounded corners} de TikZ.}) ;
-\item quand la clé |tikz| est utilisée, le chemin TikZ correspondant au
-rectangle délimitant le bloc est exécuté avec TikZ\footnote{TikZ doit être
+\item la clé \Definition{fill} prend en argument une couleur et remplit le bloc
+avec cette couleur ;
+\item la clé \Definition{draw} prend en argument une couleur et trace le cadre
+avec cette couleur (la valeur par défaut de cette clé est la couleur courante
+des filets du tableau) ;
+\item la clé \Definition{color} prend en argument une couleur et l'applique au
+contenu et trace également le cadre avec cette couleur ;
+\item les clés \Definition{hlines}, \Definition{vlines} et \Definition{hvlines}
+tracent les filets correspondants dans le bloc\footnote{Néanmoins, les filets ne
+  sont pas tracés dans les sous-blocs du bloc, conformément à l'esprit de
+  \pkg{nicematrix}: les filets ne sont pas tracés dans les blocs (cf.
+  section~\ref{rules} p.~\pageref{rules}).} ;
+\item la clé \Definition{line-width} fixe la largeur utilisée pour tracer les
+filets (n'a d'intérêt que si |draw|, |hvlines|,
+|hlines| ou |vlines| est utilisée) ;
+\item la clé \Definition{rounded-corners} impose des coins arrondis (pour le
+cadre dessiné par |draw| et le fond dessiné par |fill|)
+avec un rayon égal à la valeur de cette clé (la valeur par défaut est
+4~pt\footnote{Cette valeur par défaut est la valeur initiale des \emph{rounded
+    corners} de TikZ.}) ;
+\item quand la clé \Definition{tikz} est utilisée, le chemin TikZ correspondant
+au rectangle délimitant le bloc est exécuté avec TikZ\footnote{TikZ doit être
   chargé préalablement (par défaut, \pkg{nicematrix} ne charge que
   \textsc{pgf}), faute de quoi, une erreur sera levée.} en utilisant comme
 options la valeur de cette clé |tikz| (qui doit donc être une liste de clés TikZ
 applicables à un chemin de TikZ). Pour des exemples d'utilisation de cette clé
 |tikz|, voir p.~\pageref{tikz-key-examples} ;
-\item la clé |name| donne un nom au nœud TikZ rectangulaire correspondant au
-bloc ; on peut utiliser ce nom avec TikZ dans le |\CodeAfter| (cf.~p.~\pageref{code-after});
-\item la clé |respect-arraystretch| évite la remise à $1$ de |\arraystretch| en
-début de bloc (qui a lieu par défaut) ;
-\item la clé |borders| permet de ne tracer que certaines des bordures du bloc :
-cette clé prend comme valeur une liste d'éléments parmi les suivants : |left|,
-|right|, |top| et |bottom| ; on peut en fait, dans la liste qui est la valeur de
-la clé |borders| mettre une entrée de la forme |tikz={|\textsl{liste}|}| où
-\textsl{liste} est une liste de couples \textsl{clé=valeur} de TikZ spécifiant
-les caractéristiques graphiques des traits qui seront dessinés (pour un exemple,
-voir p.~\pageref{tiretes}).
+\item la clé \Definition{name} donne un nom au nœud TikZ rectangulaire
+correspondant au bloc ; on peut utiliser ce nom avec TikZ dans le |\CodeAfter|
+(cf.~p.~\pageref{code-after});
+\item la clé \Definition{respect-arraystretch} évite la remise à $1$ de
+|\arraystretch| en début de bloc (qui a lieu par défaut) ;
+\item la clé \Definition{borders} permet de ne tracer que certaines des bordures
+du bloc : cette clé prend comme valeur une liste d'éléments parmi les suivants :
+|left|, |right|, |top| et |bottom| ; on peut en fait, dans la liste qui est la
+valeur de la clé |borders| mettre une entrée de la forme
+|tikz={|\textsl{liste}|}| où \textsl{liste} est une liste de couples
+\textsl{clé=valeur} de TikZ spécifiant les caractéristiques graphiques des
+traits qui seront dessinés (pour un exemple, voir p.~\pageref{tiretes}).
 
-\item \colorbox{yellow!50}{\textbf{Nouveau 6.15}}\par\nobreak
-Par défaut, les filets ne sont pas tracés dans les blocs (voir à ce sujet la
-partie sur les filets, section~\ref{rules} p.~\pageref{rules}). Néanmoins, si la
-clé |transparent| est utilisée, les filets seront tracés. Pour un example, voir
-la section~\ref{tikz-key-examples}, page~\pageref{tikz-key-examples}.
+\item \colorbox{yellow!50}{\textbf{Nouveau 6.15}}\par\nobreak Par défaut, les
+filets ne sont pas tracés dans les blocs (voir à ce sujet la partie sur les
+filets, section~\ref{rules} p.~\pageref{rules}). Néanmoins, si la clé
+\Definition{transparent} est utilisée, les filets seront tracés. Pour un
+example, voir la section~\ref{tikz-key-examples},
+page~\pageref{tikz-key-examples}.
 
 \end{itemize}
 
@@ -1080,7 +1089,7 @@
 nommée également |\arrayrulecolor|. Les environnements de \pkg{nicematrix}
 proposent également une clé |rules/color| qui permet de fixer cette couleur pour
 l'environnement en question. Cette clé fixe localement la couleur des filets
-(alors que la commande |\arrayrulecolor| agit globalement).
+(alors que la commande |\arrayrulecolor| agit globalement !).
 
 \medskip
 \begin{scope}
@@ -1200,7 +1209,9 @@
 
 \medskip
 La clé |hvlines-except-borders| est similaire à la clé |hvlines| mais ne trace
-pas les filets sur les bords horizontaux et verticaux du tableau.
+pas les filets sur les bords horizontaux et verticaux du tableau. Pour un
+exemple d'utilisation de cette clé, voir la partie «Exemple d'utilisation avec
+tcolorbox» p.~\pageref{tcolorbox}.
 
 \medskip
 \subsubsection{Les coins (vides)}
@@ -1630,7 +1641,7 @@
 
 \begin{Verbatim}
 \begin{pNiceArray}{~textsl#preamble@}
-~emphase#\CodeBefore@
+~emphase#\CodeBefore [~textsl#options@]@
   ~textsl#instructions du code-before@
 ~emphase#\Body@
   ~textsl#contenu de l'environnement@
@@ -1638,6 +1649,12 @@
 \end{Verbatim}
 
 \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
+  \texttt{create-cell-nodes}, \texttt{sub-matrix} (et ses sous-clés) et
+  \texttt{delimiters-color}.}
+
+\smallskip
 De nouvelles commandes sont disponibles dans ce |\CodeBefore|: |\cellcolor|,
 |\rectanglecolor|, |\rowcolor|, |\columncolor|, |\rowcolors|, |\rowlistcolors|,
 |\chessboardcolors| et |\arraycolor|.\footnote{On pourra remarquer que, dans le
@@ -3160,7 +3177,80 @@
 0 & \Cdots& 0 & 0
 \end{bNiceMatrix}$
 
+\section{Délimiteurs dans le préambule de l'environnement}
 
+\colorbox{yellow!50}{\textbf{Modifié 6.16}}\enskip Pour les environnements à
+préambule (|{NiceArray}|, |{pNiceArray}|, etc.), il est possible de placer des
+délimiteurs verticaux directement dans le préambule.\footnote{Cette syntaxe est
+  inspirée de l'extension \pkg{blkarray}.}
+\label{delimiters-in-preamble}%
+
+\smallskip
+Les délimiteurs ouvrants doivent être précédés du mot-clé |\left| et les
+délimiteurs fermants du mot-clé |\right|. Les mots-clés |\left| et |\right| n'ont
+pas d'obligation à être utilisés par paires.
+
+\smallskip
+Tous les délimiteurs extensibles de LaTeX peuvent être utilisés. 
+
+\medskip
+Voici un exemple qui utilise |\lgroup| et |\rgroup|.
+
+\medskip
+\begin{BVerbatim}
+$\begin{NiceArray}{~emphase#\left\lgroup@ ccc~emphase#\right\rgroup@ l}
+1 & 2 & 3 &  
+4 & 1 & 6 & 
+7 & 8 & 9 & \scriptstyle L_3 \gets L_3 + L_1 + L_2
+\end{NiceArray}$
+\end{BVerbatim}
+
+\[\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
+\end{NiceArray}\]
+
+\medskip
+Pour cet exemple, on aurait aussi pu utiliser |{NiceArrayWithDelims}| 
+(cf. la partie \ref{NiceArrayWithDelims}, p.~\pageref{NiceArrayWithDelims})
+et la clé |last-col| (cf. p.~\pageref{exterior}).
+
+\bigskip
+Il y a un cas particulier : pour les délimiteurs |(|, |[| et |\{| (et les
+délimiteurs fermants correspondants), les préfixes |\left| et |\right| sont
+facultatifs.\footnote{Pour les délimiteurs \texttt{[} et \texttt{]},
+  les préfixes restent obligatoires en cas de conflit de notation avec des
+  crochets d'options de certains descripteurs de colonnes.}
+
+\bigskip
+Dans le cas de deux délimiteurs successifs (nécessairement un fermant suivi d'un
+ouvrant pour une autre sous-matrice) un espace égal à |\enskip| est inséré
+automatiquement.
+
+\medskip
+\begin{BVerbatim}
+$\begin{pNiceArray}{~emphase#(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}
+\end{pNiceArray}$
+\end{BVerbatim}
+
+\[\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}
+\end{pNiceArray}\]
+
+
+\bigskip
+Pour des constructions plus complexes, avec en particulier des délimiteurs ne
+couvrant pas toutes les rangées, on aura intérêt à considérer la commande
+|\SubMatrix| disponible dans le |\CodeAfter|: voir la partie~\ref{sub-matrix},
+p.~\pageref{sub-matrix}. 
+
+
 \section{Le \textbackslash CodeAfter}
 
 \label{code-after}
@@ -3255,7 +3345,8 @@
 \end{bNiceMatrix}\]
 
 
-\subsection{La commande \textbackslash SubMatrix dans le \textbackslash CodeAfter}
+\subsection{La commande \textbackslash SubMatrix dans le \textbackslash
+  CodeAfter (et aussi le \textbackslash CodeBefore)}
 
 \label{sub-matrix}
 
@@ -3279,7 +3370,7 @@
 |\SubMatrix[{2-2}{4-7}]|).}
 \end{itemize}
 
-On remarquera que la commande |\SubMatrix| trace les délimiteurs après la
+On remarquera que la commande |\SubMatrix| trace les délimiteurs \emph{après} la
 construction de la matrice : aucun espace n'est inséré par la commande
 |\SubMatrix|. C'est pourquoi, dans l'exemple suivant, on a utilisé la clé
 |margin| et on a inséré à la main de l'espace entre la troisième et la quatrième
@@ -3310,6 +3401,31 @@
 \end{NiceArray}$
 
 \medskip
+En fait, dans cet exemple, il aurait sans doute été plus simple de mettre des
+délimiteurs directement dans le préambule de l'environnement |{NiceArray}| (voir
+la section~\ref{delimiters-in-preamble}, p.~\pageref{delimiters-in-preamble})
+avec la construction suivante.
+
+\medskip
+\begin{scope}
+\hfuzz=15cm
+\begin{BVerbatim}[boxwidth=11cm,baseline=c]
+$\begin{NiceArray}{~emphase#(ccc)(c)@}[cell-space-limits=2pt]
+ 1          & 1           & 1           & x \\
+\dfrac{1}{4} & \dfrac{1}{2} & \dfrac{1}{4} & y \\
+ 1          & 2           & 3           & z 
+\end{NiceArray}$
+\end{BVerbatim}
+\end{scope}
+$\begin{NiceArray}{(ccc)(c)}[cell-space-limits=2pt]
+ 1          & 1           & 1           & x \\
+\dfrac{1}{4} & \dfrac{1}{2} & \dfrac{1}{4} & y \\
+ 1          & 2           & 3           & z 
+\end{NiceArray}$
+
+
+
+\bigskip
 La commande |\SubMatrix| accepte en fait également deux arguments optionnels
 spécifiés par les symboles traditionnels |^| et |_| pour des éléments en
 exposant et en indice.
@@ -3336,7 +3452,7 @@
 \end{scope}
 
 
-\medskip
+\bigskip
 Les clés disponibles pour la commande |\SubMatrix| sont les suivantes :
 %
 \begin{itemize}
@@ -3356,9 +3472,12 @@
 la sous-matrice (si cette clé est utilisée sans valeur, tous les filets
 verticaux sont tracés) ;
 \item |hlines| est similaire à |vlines| mais pour les filets horizontaux ;
-\item |hvlines|, qui s'utilise sans valeur, trace tous les filets dans la sous-matrice.
+\item |hvlines|, qui s'utilise sans valeur, trace tous les filets dans la
+sous-matrice ;
+\item |code| permet d'insérer du code, en particulier du code TikZ, après la
+construction de la matrice. Cette clé est décrite en détail plus loin.
 \end{itemize}
-On remarquera que tous ces filets sont dessinés après la construction du tableau
+On remarquera que tous les filets sont dessinés après la construction du tableau
 principal : les colonnes et les rangées ne sont pas écartées.
 
 \medskip
@@ -3433,33 +3552,7 @@
 créée par une commande |\SubMatrix|. Ce nom est utilisé pour créer des nœuds
 PGF-TikZ : voir p.~\pageref{node-sub-matrix}.
 
-\medskip
-Il est également possible de spécifier des délimiteurs\footnote{Les délimiteurs
-  en question sont |(|, |[| et |\{| et les fermants correspondants.
-  On peut bien sûr aussi mettre des \verb+|+ et des \verb+||+ dans le
-  préambule.} en les plaçant dans le préambule de l'environnement (pour les
-environnements à préambule : |{NiceArray}|, |{pNiceArray}|, etc.). Cette syntaxe
-est inspirée de l'extension \pkg{blkarray}.
 
-Dans le cas de deux délimiteurs successifs (nécessairement un fermant suivi d'un
-ouvrant pour une autre sous-matrice) un espace égal à |\enskip| est inséré
-automatiquement.
-
-\medskip
-\begin{BVerbatim}
-$\begin{pNiceArray}{~emphase#(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}
-\end{pNiceArray}$
-\end{BVerbatim}
-
-\[\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}
-\end{pNiceArray}\]
-
 \bigskip
 La commande |\SubMatrix| est en fait aussi disponible dans le |\CodeBefore|.
 L'intérêt d'utiliser |\SubMatrix| dans le |\CodeBefore| est que les délimiteurs
@@ -3471,10 +3564,11 @@
 p.~\pageref{submatrix-in-codebefore}.
 
 \bigskip
-En dépit de son nom, la commande |\SubMatrix| peut être utilisée également dans
+En dépit de son nom, la commande |\SubMatrix| peut également être utilisée dans
 |{NiceTabular}| comme dans l'exemple suivant (qui utilise |\bottomrule| et
-|\toprule| de \pkg{booktabs}). 
+|\toprule| de l'extension \pkg{booktabs}). 
 
+\smallskip
 \begin{BVerbatim}[baseline=c]
 \begin{NiceTabular}{~@{}ll~@{}}
 \toprule
@@ -3498,8 +3592,53 @@
 \end{NiceTabular} 
 
 
+\vspace{1cm}
+\colorbox{yellow!50}{\textbf{Nouveau 6.16}}\enskip La clé |code| de la commande
+|\SubMatrix| permet d'insérer du code après la création de la matrice. Elle a
+surtout pour vocation d'être utilisée pour insérer des instructions TikZ,
+sachant que, dans les instructions TikZ insérées dans cette clé, les nœuds de la
+forme |i-j| et \verb+i-|j+ sont interprétés avec |i| et |j| étant des numéros de
+ligne et colonne \emph{relatifs à la sous-matrice}.
 
+\medskip
+\begin{scope}
+\fvset{commandchars=\~\#\!}%
+\begin{Verbatim}
+$\begin{NiceArray}{ccc@{}w{c}{5mm}@{}ccc}
+    &   &   && -1 & 1  & 2  \\
+    &   &   &&  0 & 3  & 4  \\
+    &   &   &&  0 & 0  & 5  \\
+  1 & 2 & 3 && -1 & 7  & 25 \\
+  0 & 4 & 5 && 0  & 12 & 41 \\
+  0 & 0 & 6 && 0  & 0  & 30  
+\CodeAfter
+  ~emphase#\NewDocumentCommand{\MyDraw}{}{\tikz \draw [blue] (2-|1) -| (3-|2) -| (4-|3) ;}!
+  \SubMatrix({1-5}{3-7})[~emphase#code = \MyDraw!]
+  \SubMatrix({4-1}{6-3})[~emphase#code = \MyDraw!]
+  \SubMatrix({4-5}{6-7})[~emphase#code = \MyDraw!]
+\end{NiceArray}$
+\end{Verbatim}
+\end{scope}
 
+
+\[\begin{NiceArray}{ccc@{}w{c}{5mm}@{}ccc}
+    &   &   && -1 & 1  & 2  \\
+    &   &   &&  0 & 3  & 4  \\
+    &   &   &&  0 & 0  & 5  \\
+  1 & 2 & 3 && -1 & 7  & 25 \\
+  0 & 4 & 5 && 0  & 12 & 41 \\
+  0 & 0 & 6 && 0  & 0  & 30  
+\CodeAfter
+  \NewDocumentCommand{\MyDraw}{}{\tikz \draw [blue] (2-|1) -| (3-|2) -| (4-|3) ;}
+  \SubMatrix({1-5}{3-7})[code = \MyDraw ]
+  \SubMatrix({4-1}{6-3})[code = \MyDraw ]
+  \SubMatrix({4-5}{6-7})[code = \MyDraw ]
+\end{NiceArray}\]
+
+\medskip
+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}
 
@@ -3961,6 +4100,8 @@
 \makeatother
 \end{Verbatim}
 
+Néanmoins, les fonctionnalités proposées par \pkg{nicematrix} rendent peu
+utile l'utilisation de \pkg{threeparttable} en conjonction avec \pkg{nicematrix}.
 
 
 \section{Autres fonctionnalités}
@@ -4160,6 +4301,13 @@
 \item les caractéristiques des lignes en pointillés sont également modifiées.
 \end{itemize}
 
+\medskip
+Quand la clé |small| est active, certaines fonctionnalités de \pkg{nicematrix}
+ne sont plus disponibles: par exemple, il n'est plus possible de mettre des
+délimiteurs directement dans le préambule d'un environnement avec préambule (cf. 
+partie \ref{delimiters-in-preamble}, p.~\pageref{delimiters-in-preamble}).
+
+
 \subsection{Les compteurs iRow et jCol}
 
 \label{iRow}
@@ -4299,6 +4447,8 @@
 
 \subsection{L'environnement \{NiceArrayWithDelims\}}
 
+\label{NiceArrayWithDelims}
+
 En fait, l'environnement |{pNiceArray}| et ses variantes sont fondés sur un
 environnement plus général, appelé |{NiceArrayWithDelims}|. Les deux premiers
 arguments obligatoires de cet environnement sont les délimiteurs gauche et droit
@@ -5168,8 +5318,9 @@
   \url{https://tex.stackexchange.com/questions/528975/error-loading-tikz-in-ieeeaccess-class}}
 
 \medskip
-Pour pouvoir utiliser \pkg{nicematrix} avec la classe \cls{aastex631}, on doit
-ajouter dans le préambule du fichier les lignes suivantes :
+Pour pouvoir utiliser \pkg{nicematrix} avec la classe \cls{aastex631} (de
+l'\emph{American Astronomical Society}, on doit ajouter dans le préambule du
+fichier les lignes suivantes :
 
 \begin{Verbatim}
 \BeforeBegin{NiceTabular}{\let\begin\BeginEnvironment\let\end\EndEnvironment}
@@ -5178,8 +5329,9 @@
 \end{Verbatim}
 
 \medskip
-Pour pouvoir utiliser \pkg{nicematrix} avec la classe \cls{sn-jnl}, \pkg{pgf}
-doit être chargé avant le |\documentclass|:
+Pour pouvoir utiliser \pkg{nicematrix} avec la classe \cls{sn-jnl} (de
+\emph{Springer Nature}), \pkg{pgf} doit être chargé avant le |\documentclass|
+avec |\RequirePackage|:
 
 \begin{Verbatim}
 \RequirePackage{pgf}
@@ -5196,7 +5348,7 @@
 \pkg{arydshln} (parce que cette extension redéfinit de nombreuses commandes
 internes de \pkg{array}). De toutes manières, dans le cadre de \pkg{nicematrix},
 il est conseillé de tracer les filets en tiretés avec les commandes de
-\pkg{nicematrix} en créant un style de ligne personnalisée avec |custom-line| :
+\pkg{nicematrix} en créant un style de ligne personnalisé avec |custom-line| :
 cf.~p.~\pageref{custom-line}.
 
 \medskip
@@ -5256,7 +5408,7 @@
 \bigskip
 Dans l'exemple suivant, on utilise la clé |tikz| pour hachurer une ligne du
 tableau. On remarquera que l'on utilise la clé |transparent| de la commande
-|\Block| pour que les filets sont tracés dans le bloc.\footnote{Par défaut, les filets ne sont pas tracés dans les blocs créés avec la commande 
+|\Block| pour que les filets soient tracés dans le bloc.\footnote{Par défaut, les filets ne sont pas tracés dans les blocs créés avec la commande 
 \texttt{\textbackslash Block} : cf.~section~\ref{rules} p.~\pageref{rules}}
 
 \begin{Verbatim}
@@ -5282,6 +5434,116 @@
 \end{NiceTabular}
 \end{center}
 
+\subsection{Utilisation avec tcolorbox}
+
+\label{tcolorbox}
+
+Voici un exemple d'utilisation de |{NiceTabular}| dans une commande |\tcbox| de
+\pkg{tcolorbox}. On a utilisé la clé |hvlines-except-borders| pour faire afficher
+tous les filets sauf ceux sur les bords (qui sont, bien entendu, ajoutés par
+\pkg{tcolorbox}). 
+
+\medskip
+\begin{BVerbatim}
+\tcbset
+  {
+    colframe = blue!50!black ,
+    colback = white ,
+    colupper = red!50!black ,
+    fonttitle = \bfseries ,
+    nobeforeafter ,
+    center title
+  }
+
+\tcbox
+  [
+    left = 0mm ,
+    right = 0mm ,
+    top = 0mm ,
+    bottom = 0mm ,
+    boxsep = 0mm ,
+    toptitle = 0.5mm ,
+    bottomtitle = 0.5mm ,
+    title = My table
+  ]
+  {
+    \renewcommand{\arraystretch}{1.2}% <-- the % is mandatory here
+    \begin{NiceTabular}{rcl}[~emphase#hvlines-except-borders@,rules/color=blue!50!black]
+    \CodeBefore
+      \rowcolor{red!15}{1}
+    \Body
+      One & Two & Three \\
+      Men & Mice & Lions \\
+      Upper & Middle & Lower
+    \end{NiceTabular}
+  }
+\end{BVerbatim}
+
+\medskip
+\begin{center}
+\tcbset
+  {
+    colframe = blue!50!black ,
+    colback = white ,
+    colupper = red!50!black ,
+    fonttitle = \bfseries ,
+    nobeforeafter ,
+    center title
+  }
+
+\tcbox
+  [
+    left = 0mm ,
+    right = 0mm ,
+    top = 0mm ,
+    bottom = 0mm ,
+    boxsep = 0mm ,
+    toptitle = 0.5mm ,
+    bottomtitle = 0.5mm ,
+    title = My table
+  ]
+  {
+    \renewcommand{\arraystretch}{1.2}%
+    \begin{NiceTabular}{rcl}[hvlines-except-borders,rules/color=blue!50!black]
+    \CodeBefore
+      \rowcolor{red!15}{1}
+    \Body
+      One & Two & Three \\
+      Men & Mice & Lions \\
+      Upper & Middle & Lower
+    \end{NiceTabular}
+  }
+\end{center}
+
+
+\vspace{1cm}
+Cet exemple montre l'utilisation de \pkg{nicematrix} en conjonction avec
+\pkg{tcolorbox}. Si on souhaite seulement faire un tableau avec un cadre
+extérieur aux coins arrondis, il n'est pas nécessaire d'utiliser \pkg{tcolorbox} :
+on peut tracer un |\Block| avec la commande |rounded-corners|.
+
+\medskip
+\begin{BVerbatim}[baseline=c,boxwidth=10.5cm]
+\begin{NiceTabular}{rcl}[hvlines-except-borders]
+\Block[draw,transparent,~emphase#rounded-corners@]{*-*}{}
+  One & Two & Three \\
+  Men & Mice & Lions \\
+  Upper & Middle & Lower
+\end{NiceTabular}
+\end{BVerbatim}
+\begin{NiceTabular}{rcl}[hvlines-except-borders]
+\Block[draw,transparent,rounded-corners]{*-*}{}
+  One & Two & Three \\
+  Men & Mice & Lions \\
+  Upper & Middle & Lower
+\end{NiceTabular}
+
+\medskip
+On a utilisé la clé |transparent| de manière à avoir les filets spécifiés par 
+|hvlines-except-borders| tracés dans le bloc (par défaut, les filets ne sont
+pas tracés dans les blocs).
+
+
 \subsection{Notes dans les tableaux}
 
 \label{ex:notes}
@@ -5356,7 +5618,7 @@
 \midrule
 Achard~emphase#\tabularnote{La famille Achard est une très ancienne famille du Poitou.}!
 & Jacques & 5 juin 1962 \\
-Lefèbvre~emphase#\tabularnote{Le patronyme Lefèbvre est une altération de Lefébure.}!
+Lefèbvre~emphase#\tabularnote{Le patronyme Lefebvre est une altération de Lefébure.}!
 & Mathilde & 23 mai 1988 \\
 Vanesse & Stéphanie & 30 octobre 1994 \\
 Dupont & Chantal & 15 janvier 1998 \\

Modified: branches/branch2022.final/Master/texmf-dist/doc/latex/nicematrix/nicematrix.pdf
===================================================================
(Binary files differ)

Modified: branches/branch2022.final/Master/texmf-dist/source/latex/nicematrix/nicematrix.dtx
===================================================================
--- branches/branch2022.final/Master/texmf-dist/source/latex/nicematrix/nicematrix.dtx	2023-03-07 22:23:46 UTC (rev 66445)
+++ branches/branch2022.final/Master/texmf-dist/source/latex/nicematrix/nicematrix.dtx	2023-03-07 22:24:01 UTC (rev 66446)
@@ -17,8 +17,8 @@
 %
 % \fi
 % \iffalse
-\def\myfileversion{6.15}
-\def\myfiledate{2023/02/25}
+\def\myfileversion{6.16}
+\def\myfiledate{2023/03/06}
 %
 %
 %<*batchfile>
@@ -60,6 +60,7 @@
 \usepackage{siunitx}
 \usepackage{caption}
 \usepackage{varwidth}
+\usepackage{tcolorbox}
 \usepackage[auto-lang=false]{lipsum}
 
 \NewDocumentEnvironment {scope} {} {} {}
@@ -533,54 +534,58 @@
 % \end{bNiceArray}$
 % \end{scope}
 %
+% \NewDocumentCommand{\Definition}{m}
+%   {{\setlength{\fboxsep}{1pt}\colorbox{gray!20}{\ttfamily \vphantom{gl}#1}}}
 %
+%
 % \interitem
 % In fact, the command |\Block| accepts as first optional argument (between
 % square brackets) a list of couples \textsl{key=value}. The available keys are as
 % follows:
 % \begin{itemize}
-% \item the keys |l|, |c| and |r| are used to fix the horizontal position of the
-% content of the block, as explained previously;
-% \item the key |fill| takes in as value a color and fills the block with that
+% \item the key \Definition{fill} takes in as value a color and fills the block
+% with that color;
+% \item the key \Definition{draw} takes in as value a color and strokes the
+% frame of the block with that color (the default value of that key is the
+% current color of the rules of the array);
+% \item the key \Definition{color} takes in as value a color and apply that
+% color the content of the block but draws also the frame of the block with that
 % color;
-% \item the key |draw| takes in as value a color and strokes the frame of the
-% block with that color (the default value of that key is the current color of
-% the rules of the array);
-% \item the key |color| takes in as value a color and apply that color the
-% content of the block but draws also the frame of the block with that color;
-% \item the keys |hlines|, |vlines| and |hvlines| draw all the corresponding
-% rules in the block;\footnote{However, the rules are not drawn in the
-% sub-blocks of the block, as always with \pkg{nicematrix}: the rules are not
-% drawn in the blocks (cf. section~\ref{rules} p.~\pageref{rules}).}
-% \item the key |line-width| is the width of the rules (this key
+% \item the keys \Definition{hlines}, \Definition{vlines} and
+% \Definition{hvlines} draw all the corresponding rules in the
+% block;\footnote{However, the rules are not drawn in the sub-blocks of the
+% block, as always with \pkg{nicematrix}: the rules are not drawn in the blocks
+% (cf. section~\ref{rules} p.~\pageref{rules}).}
+% \item the key \Definition{line-width} is the width of the rules (this key
 % is meaningful only when one of the keys |draw|, |hvlines|, |vlines| and
 % |hlines| is used);
-% \item the key |rounded-corners| requires rounded corners (for the frame drawn
-% by |draw| and the shape drawn by |fill|) with a radius equal to the value of
-% that key (the default value is 4~pt\footnote{This value is the initial value
-% of the \emph{rounded corners} of Tikz.});
-% \item when the key |tikz| is used, the Tikz path corresponding of the
-% rectangle which delimits the block is executed with Tikz\footnote{Tikz should
-% be loaded (by default, \pkg{nicematrix} only loads \textsc{pgf}) and, if it's
-% not, an error will be raised.} by using as options the value of that key
-% |tikz| (which must be a list of keys allowed for a Tikz path). For examples,
-% cf. p.~\pageref{tikz-key-examples};
-% \item the key |name| provides a name to the rectangular Tikz node
+% \item the key \Definition{rounded-corners} requires rounded corners (for the
+% frame drawn by |draw| and the shape drawn by |fill|) with a radius equal to
+% the value of that key (the default value is 4~pt\footnote{This value is the
+% initial value of the \emph{rounded corners} of Tikz.});
+% \item when the key \Definition{tikz} is used, the Tikz path corresponding of
+% the rectangle which delimits the block is executed with Tikz\footnote{Tikz
+% should be loaded (by default, \pkg{nicematrix} only loads \textsc{pgf}) and,
+% if it's not, an error will be raised.} by using as options the value of that
+% key |tikz| (which must be a list of keys allowed for a Tikz path). For
+% examples, cf. p.~\pageref{tikz-key-examples};
+% \item the key \Definition{name} provides a name to the rectangular Tikz node
 % corresponding to the block; it's possible to use that name with Tikz in the
 % |\CodeAfter| of the environment (cf.~p.~\pageref{code-after});
-% \item the key |respect-arraystretch| prevents the setting of |\arraystretch|
-% to $1$ at the beginning of the block (which is the behaviour by default) ;
-% \item the key |borders| provides the ability to draw only some borders of the
-% blocks; the value of that key is a (comma-separated) list of elements covered
-% by |left|, |right|, |top| and |bottom|; it's possible, in fact, in the list
-% which is the value of the key |borders|, to add an entry of the form
-% |tikz={|\textsl{list}|}| where \textsl{list} is a list of couples
+% \item the key \Definition{respect-arraystretch} prevents the setting of
+% |\arraystretch| to $1$ at the beginning of the block (which is the behaviour
+% by default) ;
+% \item the key \Definition{borders} provides the ability to draw only some
+% borders of the blocks; the value of that key is a (comma-separated) list of
+% elements covered by |left|, |right|, |top| and |bottom|; it's possible, in
+% fact, in the list which is the value of the key |borders|, to add an entry of
+% the form |tikz={|\textsl{list}|}| where \textsl{list} is a list of couples
 % \textsl{key=value} of Tikz specifying the graphical characteristics of the
-% lines that will be drawn (for an example, see p.~\pageref{dashed}). 
+% lines that will be drawn (for an example, see p.~\pageref{dashed}).
 % \item \colorbox{yellow!50}{\textbf{Nouveau 6.15}}\par\nobreak
 % By default, the rules are not drawn in the blocks (see the section about the
 % rules: section~\ref{rules} p.~\pageref{rules}). However, if the key
-% |transparent| is used, the rules are drawn. For an example, see
+% \Definition{transparent} is used, the rules are drawn. For an example, see
 % section~\ref{tikz-key-examples} on page~\pageref{tikz-key-examples}.
 % \end{itemize}
 %
@@ -1115,7 +1120,7 @@
 % also named |\arrayrulecolor|. The environments of \pkg{nicematrix} also
 % provide a key |rules/color| to fix the color of the rules in the current
 % environment. This key sets the value locally (whereas |\arrayrulecolor| acts
-% globally). 
+% globally!). 
 % 
 % \medskip
 % \begin{scope}
@@ -1231,7 +1236,9 @@
 %
 % \bigskip
 % The key |hvlines-except-borders| is similar to the key |hvlines| but does not
-% draw the rules on the horizontal and vertical borders of the array.
+% draw the rules on the horizontal and vertical borders of the array. For an
+% example of use of that key, see the part ``Use with tcolorbox`,
+% p.~\pageref{tcolorbox}. 
 %
 % \subsubsection{The (empty) corners}
 %
@@ -1645,7 +1652,7 @@
 % 
 % \begin{Verbatim}
 % \begin{pNiceArray}{~textsl#preamble@}
-% ~emphase#\CodeBefore@
+% ~emphase#\CodeBefore [~textsl#options@]@
 %   ~textsl#instructions of the code-before@
 % ~emphase#\Body@
 %   ~textsl#contents of the environment@
@@ -1652,6 +1659,13 @@
 % \end{pNiceArray}
 % \end{Verbatim}
 %
+% \smallskip
+% The optional argument between square brackets is a list of \textsl{key=value}
+% pairs which will be presented progressively in this
+% documentation.\footnote{The available keys are |create-cell-nodes|,
+% |sub-matrix| (and its subkeys) and \texttt{delimiters-color}.}
+%
+% \medskip
 % New commands are available in that |\CodeBefore|: |\cellcolor|,
 % |\rectanglecolor|, |\rowcolor|, |\columncolor|, |\rowcolors|,
 % |\rowlistcolors|, |\chessboardcolors| and |\arraycolor|.\footnote{Remark that,
@@ -2689,7 +2703,7 @@
 % \end{bNiceMatrix}$
 % 
 % \bigskip
-% In the first column of this exemple, there are two instructions |\Vdots| but,
+% In the first column of this example, there are two instructions |\Vdots| but,
 % of course, only one dotted line is drawn.
 %
 % \bigskip
@@ -3129,7 +3143,82 @@
 % \end{bNiceMatrix}$
 % 
 %
+% \section{Delimiters in the preamble of the environnment}
 %
+% \label{delimiters-in-preamble}
+%
+% \colorbox{yellow!50}{\textbf{New 6.16}\enskip}
+% In the environments with preamble (|{NiceArray}|, |{pNiceArray}|, etc.), it's
+% possible to put vertical delimiters directly in the preamble of the
+% environnment.\footnote{This syntax is inspired by the extension \pkg{blkarray}.}
+%
+% \smallskip
+% The opening delimiters should be prefixed by the keyword |\left| and the
+% closing delimiters by the keyword |\right|. It's not mandatory to use
+% |\left| and |\right| pair-wise.
+%
+% \smallskip
+% All the vertical extensible delimiters of LaTeX are allowed.
+%
+% \medskip
+% Here is a example which uses the delimiters |\lgroup| and |\rgroup|.
+%
+% \smallskip
+% \begin{BVerbatim}
+% $\begin{NiceArray}{~emphase#\left\lgroup@ ccc~emphase#\right\rgroup@ l}
+% 1 & 2 & 3 &  
+% 4 & 1 & 6 & 
+% 7 & 8 & 9 & \scriptstyle L_3 \gets L_3 + L_1 + L_2
+% \end{NiceArray}$
+% \end{BVerbatim}
+%
+% \[\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
+% \end{NiceArray}\]
+%
+% \medskip
+% For this example, it would also have been possible to use the environnment
+% |{NiceArrayWithDelims}| (cf. the section \ref{NiceArrayWithDelims},
+% p.~\pageref{NiceArrayWithDelims}) and the key |last-col| (cf. p.~\pageref{exterior}).
+% 
+% \bigskip
+% There is a particular case: for the delimiters |(|, |[| and |\{| (and the
+% corresponding closing delimiters), the prefixes |\left| et |\right| are
+% optional.\footnote{For the delimiters |[| and |]|, the prefixes remain mandatory
+% when there is a conflict of notation with the square brackets for the options
+% of some descriptors of columns.}
+% 
+%
+%
+% \bigskip
+% When there are two successive delimiters (necessarily a closing one following by
+% an opening one for another submatrix), a space equal to |\enskip| is
+% automatically inserted.
+%
+% \medskip
+% \begin{BVerbatim}
+% $\begin{pNiceArray}{~emphase#(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} 
+% \end{pNiceArray}$
+% \end{BVerbatim}
+%
+% \[\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} 
+% \end{pNiceArray}\]
+%
+% 
+% \bigskip
+% For more complex constructions, in particular with delimiters spanning only a
+% \emph{subset} of the rows of the array, one should consider the command
+% |\SubMatrix| available in the |\CodeAfter|. See the section~\ref{sub-matrix},
+% p.~\pageref{sub-matrix}.  
+%
 % \section{The \textbackslash CodeAfter}
 %
 % \label{code-after}
@@ -3222,34 +3311,9 @@
 % 
 % 
 %
-% \bigskip
-% Despite its name, the command |\SubMatrix| may also be used within a 
-% |{NiceTabular}|. Here is an example (which uses |\bottomrule| and
-% |\toprule| of \pkg{booktabs}). 
 %
-% \begin{BVerbatim}[baseline=c]
-% \begin{NiceTabular}{~@{}ll~@{}}
-% \toprule
-% Part A              & the first part \\
-% \Block{2-1}{Part B} & a first sub-part \\
-%                     & a second sub-part \\
-% \bottomrule
-% \CodeAfter
-%   ~emphase#\SubMatrix{\{}{2-2}{3-2}{.}@
-% \end{NiceTabular}
-% \end{BVerbatim}
-% \hspace{2cm}
-% \begin{NiceTabular}{@{}ll@{}}
-% \toprule
-% Part A              & the first part \\
-% \Block{2-1}{Part B} & a first sub-part \\
-%                     & a second sub-part \\
-% \bottomrule
-% \CodeAfter
-%   \SubMatrix{\{}{2-2}{3-2}{.}
-% \end{NiceTabular} 
-%
-% \subsection{The command \textbackslash SubMatrix in the \textbackslash CodeAfter}
+% \subsection{The command \textbackslash SubMatrix in the \textbackslash
+% CodeAfter (and also the \textbackslash CodeBefore)}
 % 
 % \label{sub-matrix}
 %
@@ -3272,7 +3336,7 @@
 % |\SubMatrix[{2-2}{4-7}]|).} 
 % \end{itemize}
 % 
-% One should remark that the command |\SubMatrix| draws the delimiters after the
+% One should remark that the command |\SubMatrix| draws the delimiters \emph{after} the
 % construction of the array: no space is inserted by the command |\SubMatrix|
 % itself. That's why, in the following example, we have used the key |margin|
 % and you have added by hand some space between the third and fourth column with
@@ -3302,6 +3366,29 @@
 %   \SubMatrix({1-4}{3-4})
 % \end{NiceArray}$
 %
+% \medskip
+% Eventually, in this example, it would probably have been easier to put the
+% delimiters directly in the preamble of |{NiceArray}| (see
+% section~\ref{delimiters-in-preamble}, p.~\pageref{delimiters-in-preamble})
+% with the following construction.
+% 
+% \medskip
+% \begin{scope}
+% \hfuzz=15cm
+% \begin{BVerbatim}[boxwidth=11cm,baseline=c]
+% $\begin{NiceArray}{~emphase#(ccc)(c)@}[cell-space-limits=2pt]
+%  1          & 1           & 1           & x \\
+% \dfrac{1}{4} & \dfrac{1}{2} & \dfrac{1}{4} & y \\
+%  1          & 2           & 3           & z 
+% \end{NiceArray}$
+% \end{BVerbatim}
+% \end{scope}
+% $\begin{NiceArray}{(ccc)(c)}[cell-space-limits=2pt]
+%  1          & 1           & 1           & x \\
+% \dfrac{1}{4} & \dfrac{1}{2} & \dfrac{1}{4} & y \\
+%  1          & 2           & 3           & z 
+% \end{NiceArray}$
+%
 % \bigskip
 % In fact, the command |\SubMatrix| also takes in two optional arguments
 % specified by the traditional symbols |^| and |_| for material in superscript
@@ -3349,9 +3436,11 @@
 % the sub-matrix are drawn);
 % \item |hlines| is similar to |vlines| but for the horizontal rules;
 % \item |hvlines|, which must be used without value, draws all the vertical and
-% horizontal rules.
+% horizontal rules;
+% \item |code| insert code, especially TikZ code, after the construcion of the
+% submatrix. That key is detailed below.
 % \end{itemize}
-% One should remark that these keys add their rules after the construction of
+% One should remark that the keys add their rules after the construction of
 % the main matrix: no space is added between the rows and the columns of the
 % array for theses rules.
 %
@@ -3428,33 +3517,33 @@
 %
 %
 % \bigskip
-% It's also possible to specify some delimiters\footnote{Those delimiters are
-% |(|, |[|, |\{| and the closing ones. Of course, it's also
-% possible to put \verb+|+ and \verb+||+ in the preamble of the environement.}
-% by placing them in the preamble of the environment (for the environments with
-% a preamble: |{NiceArray}|, |{pNiceArray}|, etc.). This syntax is inspired by
-% the extension \pkg{blkarray}.
+% Despite its name, the command |\SubMatrix| may also be used within a 
+% |{NiceTabular}|. Here is an example (which uses |\bottomrule| and
+% |\toprule| of \pkg{booktabs}). 
 %
-% When there are two successive delimiters (necessarily a closing one following by
-% an opening one for another submatrix), a space equal to |\enskip| is
-% automatically inserted.
-%
 % \medskip
-% \begin{BVerbatim}
-% $\begin{pNiceArray}{~emphase#(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} 
-% \end{pNiceArray}$
+% \begin{BVerbatim}[baseline=c]
+% \begin{NiceTabular}{~@{}ll~@{}}
+% \toprule
+% Part A              & the first part \\
+% \Block{2-1}{Part B} & a first sub-part \\
+%                     & a second sub-part \\
+% \bottomrule
+% \CodeAfter
+%   ~emphase#\SubMatrix{\{}{2-2}{3-2}{.}@
+% \end{NiceTabular}
 % \end{BVerbatim}
+% \hspace{2cm}
+% \begin{NiceTabular}{@{}ll@{}}
+% \toprule
+% Part A              & the first part \\
+% \Block{2-1}{Part B} & a first sub-part \\
+%                     & a second sub-part \\
+% \bottomrule
+% \CodeAfter
+%   \SubMatrix{\{}{2-2}{3-2}{.}
+% \end{NiceTabular} 
 %
-% \[\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} 
-% \end{pNiceArray}\]
-%
-%
 % \bigskip
 % The command |\SubMatrix| is, in fact, also available in the |\CodeBefore|. By
 % using |\SubMatrix| in the |\CodeBefore|, the delimiters drawn by those
@@ -3464,6 +3553,55 @@
 % For an example, see voir \ref{submatrix-in-codebefore} 
 % p.~\pageref{submatrix-in-codebefore}.
 %
+%
+%
+% \vspace{1cm}
+% \colorbox{yellow!50}{\textbf{New 6.16}}\enskip The key |code| of the command
+% |\SubMatrix| allows the insertion of code after the construction of the
+% submatrix. It's meant to be used to insert TikZ instructions because, in the
+% TikZ instructions inserted by that code, the nodes of the form |i-j| and
+% \verb+i-|j+ are interpreted with |i| and |j| as numbers of row and columns
+% \emph{relative to the submatrix}.
+%
+% \medskip
+% \begin{scope}
+% \fvset{commandchars=\~\#\!}%
+% \begin{Verbatim}
+% $\begin{NiceArray}{ccc@{}w{c}{5mm}@{}ccc}
+%     &   &   && -1 & 1  & 2  \\
+%     &   &   &&  0 & 3  & 4  \\
+%     &   &   &&  0 & 0  & 5  \\
+%   1 & 2 & 3 && -1 & 7  & 25 \\
+%   0 & 4 & 5 && 0  & 12 & 41 \\
+%   0 & 0 & 6 && 0  & 0  & 30  
+% \CodeAfter
+%   ~emphase#\NewDocumentCommand{\MyDraw}{}{\tikz \draw [blue] (2-|1) -| (3-|2) -| (4-|3) ;}!
+%   \SubMatrix({1-5}{3-7})[~emphase#code = \MyDraw!]
+%   \SubMatrix({4-1}{6-3})[~emphase#code = \MyDraw!]
+%   \SubMatrix({4-5}{6-7})[~emphase#code = \MyDraw!]
+% \end{NiceArray}$
+% \end{Verbatim}
+% \end{scope}
+%
+%
+% \[\begin{NiceArray}{ccc@{}w{c}{5mm}@{}ccc}
+%     &   &   && -1 & 1  & 2  \\
+%     &   &   &&  0 & 3  & 4  \\
+%     &   &   &&  0 & 0  & 5  \\
+%   1 & 2 & 3 && -1 & 7  & 25 \\
+%   0 & 4 & 5 && 0  & 12 & 41 \\
+%   0 & 0 & 6 && 0  & 0  & 30  
+% \CodeAfter
+%   \NewDocumentCommand{\MyDraw}{}{\tikz \draw [blue] (2-|1) -| (3-|2) -| (4-|3) ;}
+%   \SubMatrix({1-5}{3-7})[code = \MyDraw ]
+%   \SubMatrix({4-1}{6-3})[code = \MyDraw ]
+%   \SubMatrix({4-5}{6-7})[code = \MyDraw ]
+% \end{NiceArray}\]
+%
+% \medskip
+% As we see, the drawing done by our command |\MyDraw| is \emph{relative} to the
+% submatrix to which it is applied.
+%
 % \subsection{The commands \textbackslash OverBrace and \textbackslash
 % UnderBrace in the \textbackslash CodeAfter}
 %
@@ -3915,12 +4053,14 @@
 % \makeatother
 % \end{Verbatim}
 %
+% Nevertheless, the use of \pkg{threeparttable} in conjonction with
+% \pkg{nicematrix} seems rather point-less because of the functionalities
+% provided by \pkg{nicematrix}.
 %
 %
 % \section{Other features}
 %
-% \section{Autres fonctionnalités}
-%
+
 % \subsection{Command \textbackslash ShowCellNames}
 %
 % The command |\ShowCellNames|, which may be used in the |\CodeBefore| and in
@@ -4102,7 +4242,6 @@
 % \end{bNiceArray}\]
 %
 %
-%
 % \bigskip
 % One should note that the environment |{NiceMatrix}| with the option |small| is
 % not composed \emph{exactly} as the environment |{smallmatrix}|. Indeed, all
@@ -4119,6 +4258,13 @@
 % \item the characteristics of the dotted lines are also modified.
 % \end{itemize}
 %
+% \medskip
+% When the key |small| is in force, some functionalities of \pkg{nicematrix} are
+% no longer available: for example, it's no longer possible to put vertical
+% delimiters directly in the preamble of an environment with preamble (cf. 
+% section \ref{delimiters-in-preamble}, p.~\pageref{delimiters-in-preamble}).
+%
+%
 % \subsection{The counters iRow and jCol}
 %
 % \label{iRow}
@@ -4249,6 +4395,8 @@
 %
 % \subsection{The environment \{NiceArrayWithDelims\}}
 %
+% \label{NiceArrayWithDelims}
+%
 % In fact, the environment |{pNiceArray}| and its variants are based upon a
 % more general environment, called |{NiceArrayWithDelims}|. The first two
 % mandatory arguments of this environment are the left and right delimiters used
@@ -5096,7 +5244,8 @@
 %  \url{https://tex.stackexchange.com/questions/528975/error-loading-tikz-in-ieeeaccess-class}} 
 %
 % \bigskip
-% In order to use \pkg{nicematrix} with the class \cls{aastex631}, you have to
+% In order to use \pkg{nicematrix} with the class \cls{aastex631}
+% (of the \emph{American Astronomical Society}), you have to
 % add the following lines in the preamble of your document :
 %
 % \begin{Verbatim}
@@ -5106,8 +5255,9 @@
 % \end{Verbatim}
 %
 % \bigskip
-% In order to use \pkg{nicematrix} with the class \cls{sn-jnln}, \pkg{pgf} must
-% be loaded before the |\documentclass|:
+% In order to use \pkg{nicematrix} with the class \cls{sn-jnl} (of
+% \emph{Springer Nature}), \pkg{pgf} must
+% be loaded before the |\documentclass| with |\RequirePackage|:
 %
 % \begin{Verbatim}
 % \RequirePackage{pgf}
@@ -5210,7 +5360,114 @@
 % \end{NiceTabular}
 % \end{center}
 %
+% \subsection{Use with tcolorbox}
 %
+% \label{tcolorbox}
+%
+% Here is an example of use of |{NiceTabular}| within a command |\tcbox| of 
+% \pkg{tcolorbox}. We have used the key |hvlines-except-borders| in order all
+% the rules excepted on the borders (which are, of course, added by \pkg{tcolorbox})
+%
+% \medskip
+% \begin{BVerbatim}
+% \tcbset
+%   {
+%     colframe = blue!50!black ,
+%     colback = white ,
+%     colupper = red!50!black ,
+%     fonttitle = \bfseries ,
+%     nobeforeafter ,
+%     center title
+%   }
+%
+% \tcbox
+%   [
+%     left = 0mm ,
+%     right = 0mm ,
+%     top = 0mm ,
+%     bottom = 0mm ,
+%     boxsep = 0mm ,
+%     toptitle = 0.5mm ,
+%     bottomtitle = 0.5mm ,
+%     title = My table
+%   ]
+%   {
+%     \renewcommand{\arraystretch}{1.2}% <-- the % is mandatory here
+%     \begin{NiceTabular}{rcl}[~emphase#hvlines-except-borders@,rules/color=blue!50!black]
+%     \CodeBefore
+%       \rowcolor{red!15}{1}
+%     \Body
+%       One & Two & Three \\
+%       Men & Mice & Lions \\
+%       Upper & Middle & Lower
+%     \end{NiceTabular}
+%   }
+% \end{BVerbatim}
+%
+% \medskip
+% \begin{center}
+% \tcbset
+%   {
+%     colframe = blue!50!black ,
+%     colback = white ,
+%     colupper = red!50!black ,
+%     fonttitle = \bfseries ,
+%     nobeforeafter ,
+%     center title
+%   }
+%
+% \tcbox
+%   [
+%     left = 0mm ,
+%     right = 0mm ,
+%     top = 0mm ,
+%     bottom = 0mm ,
+%     boxsep = 0mm ,
+%     toptitle = 0.5mm ,
+%     bottomtitle = 0.5mm ,
+%     title = My table
+%   ]
+%   {
+%     \renewcommand{\arraystretch}{1.2}\begin{NiceTabular}{rcl}[hvlines-except-borders,rules/color=blue!50!black]
+%     \CodeBefore
+%       \rowcolor{red!15}{1}
+%     \Body
+%       One & Two & Three \\
+%       Men & Mice & Lions \\
+%       Upper & Middle & Lower
+%     \end{NiceTabular}
+%   }
+% \end{center}
+%
+%
+%
+% \vspace{1cm}
+% That example shows the use of \pkg{nicematrix} in conjunction with
+% \pkg{tcolorbox}. If one wishes a tabular with an exterior frame with rounded
+% corners, it's not necessary to use \pkg{tcolorbox}: it's possible to use the
+% command |\Block| with the key |rounded-corners|.
+%
+% \medskip
+% \begin{BVerbatim}[baseline=c,boxwidth=10.5cm]
+% \begin{NiceTabular}{rcl}[hvlines-except-borders]
+% \Block[draw,transparent,~emphase#rounded-corners@]{*-*}{}
+%   One & Two & Three \\
+%   Men & Mice & Lions \\
+%   Upper & Middle & Lower
+% \end{NiceTabular}
+% \end{BVerbatim}
+% \begin{NiceTabular}{rcl}[hvlines-except-borders]
+% \Block[draw,transparent,rounded-corners]{*-*}{}
+%   One & Two & Three \\
+%   Men & Mice & Lions \\
+%   Upper & Middle & Lower
+% \end{NiceTabular}
+%
+% \medskip
+% We have used the key |transparent| to have the rules specified by
+% |hvlines-except-borders| drawn in the blocks (by default, the rules are not
+% drawn in the blocks).
+%
 % \subsection{Notes in the tabulars}
 %
 % \label{ex:notes}
@@ -6785,7 +7042,7 @@
 % \bigskip
 % The following token list will contain the type of horizontal alignment of the
 % current cell as provided by the corresponding column. The possible values are
-% |r|, |l|, |c|. For exemple, a column |p[l]{3cm}| will provide the value |l|
+% |r|, |l|, |c|. For example, a column |p[l]{3cm}| will provide the value |l|
 % for all the cells of the column.
 %    \begin{macrocode}
 \str_new:N \l_@@_hpos_cell_str
@@ -7056,6 +7313,11 @@
 \dim_new:N \l_@@_X_columns_dim
 %    \end{macrocode}
 % 
+% \medskip
+%    \begin{macrocode}
+\bool_new:N \l_@@_X_V_bool
+%    \end{macrocode}
+% 
 % \bigskip
 % This boolean will be used only to detect in an expandable way whether we are
 % at the beginning of the (potential) column zero, in order to raise an error if
@@ -10524,34 +10786,36 @@
   {
     \str_case:nnF { #1 }
       {
-        c { \@@_patch_preamble_i:n #1 }
-        l { \@@_patch_preamble_i:n #1 }
-        r { \@@_patch_preamble_i:n #1 }
-        > { \@@_patch_preamble_xiv:n }
-        ! { \@@_patch_preamble_ii:nn #1 }
-        @ { \@@_patch_preamble_ii:nn #1 }
-        | { \@@_patch_preamble_iii:n #1 }
-        p { \@@_patch_preamble_iv:n #1 }
-        b { \@@_patch_preamble_iv:n #1 }
-        m { \@@_patch_preamble_iv:n #1 }
+        c       { \@@_patch_preamble_i:n #1 }
+        l       { \@@_patch_preamble_i:n #1 }
+        r       { \@@_patch_preamble_i:n #1 }
+        >       { \@@_patch_preamble_xiv:n }
+        !       { \@@_patch_preamble_ii:nn #1 }
+        @       { \@@_patch_preamble_ii:nn #1 }
+        |       { \@@_patch_preamble_iii:n #1 }
+        p       { \@@_patch_preamble_iv:n #1 }
+        b       { \@@_patch_preamble_iv:n #1 }
+        m       { \@@_patch_preamble_iv:n #1 }
         \@@_V:  { \@@_patch_preamble_v:n }
-        V { \@@_patch_preamble_v:n } 
-        \@@_w: { \@@_patch_preamble_vi:nnnn { } #1 } 
-        \@@_W: { \@@_patch_preamble_vi:nnnn { \@@_special_W: } #1 } 
-        \@@_S: { \@@_patch_preamble_vii:n }
-        (  { \@@_patch_preamble_viii:nn #1 }
-        [  { \@@_patch_preamble_viii:nn #1 }
-        \{ { \@@_patch_preamble_viii:nn #1 }
-        )  { \@@_patch_preamble_ix:nn #1 }       
-        ]  { \@@_patch_preamble_ix:nn #1 }       
-        \} { \@@_patch_preamble_ix:nn #1 }       
-        X  { \@@_patch_preamble_x:n }
+        V       { \@@_patch_preamble_v:n } 
+        \@@_w:  { \@@_patch_preamble_vi:nnnn { } #1 } 
+        \@@_W:  { \@@_patch_preamble_vi:nnnn { \@@_special_W: } #1 } 
+        \@@_S:  { \@@_patch_preamble_vii:n }
+        (       { \@@_patch_preamble_viii:nn #1 }
+        [       { \@@_patch_preamble_viii:nn #1 }
+        \{      { \@@_patch_preamble_viii:nn #1 }
+        \left   { \@@_patch_preamble_viii:nn }
+        )       { \@@_patch_preamble_ix:nn #1 }       
+        ]       { \@@_patch_preamble_ix:nn #1 }       
+        \}      { \@@_patch_preamble_ix:nn #1 }       
+        \right  { \@@_patch_preamble_ix:nn }
+        X       { \@@_patch_preamble_x:n }
 %    \end{macrocode}
 % When \pkg{tabularx} is loaded, a local redefinition of the specifier |X| is
 % done to replace |X| by |\@@_X|. Thus, our column type |X| will be used in the
 % |{NiceTabularX}|. 
 %    \begin{macrocode}
-        \@@_X { \@@_patch_preamble_x:n }
+        \@@_X   { \@@_patch_preamble_x:n }
         \q_stop { }
       }
       { 
@@ -11173,7 +11437,7 @@
   {
     \tl_gput_right:Nx \g_@@_pre_code_after_tl
       { \@@_delimiter:nnn #1 { \int_eval:n { \c at jCol + 1 } } \c_true_bool }  
-    \tl_if_in:nnTF { ( [ \{ ) ] \} } { #2 }
+    \tl_if_in:nnTF { ( [ \{ ) ] \} \left \right } { #2 }
       {
         \@@_error:nn { delimiter~after~opening } { #2 } 
         \@@_patch_preamble:n
@@ -11183,7 +11447,7 @@
 %    \end{macrocode}
 % 
 % \bigskip
-% For |)|, |]| and |\}|. We have two arguments for the following command because
+% For the closing delimiters. We have two arguments for the following command because
 % we directly read the following letter in the preamble (we have to see whether
 % we have a opening delimiter following and we also have to see whether we are
 % at the end of the preamble because, in that case, our letter must be
@@ -11208,7 +11472,7 @@
               }
           }
           {
-            \tl_if_in:nnT { ( [ \{ } { #2 }
+            \tl_if_in:nnT { ( [ \{ \left } { #2 }
               { \tl_gput_right:Nn \g_@@_preamble_tl { ! { \enskip } } }
             \tl_gput_right:Nx \g_@@_pre_code_after_tl
               { \@@_delimiter:nnn #1 { \int_use:N \c at jCol } \c_false_bool }
@@ -11273,7 +11537,10 @@
 % of keys will be used to retrieve that value (in the counter |\l_@@_weight_int|).
 %    \begin{macrocode}
 \keys_define:nn { WithArrows / X-column }
-  { unknown .code:n = \int_set:Nn \l_@@_weight_int { \l_keys_key_str } }
+  { 
+    v .bool_set:N = \l_@@_X_V_bool ,
+    unknown .code:n = \int_set:Nn \l_@@_weight_int { \l_keys_key_str } 
+  }
 %    \end{macrocode}
 % 
 % 
@@ -11300,14 +11567,14 @@
 % initial value is $1$). The user may specify a different value (such as $2$,
 % $3$, etc.) by putting that value in the optional argument of the specifier.
 % The weights of the |X| columns are used in the computation of the actual width
-% of those columns as in \pkg{tabu} of \pkg{tabularray}.
+% of those columns as in \pkg{tabu} (now obsolete) or \pkg{tabularray}.
 %    \begin{macrocode}
     \int_zero_new:N \l_@@_weight_int 
     \int_set:Nn \l_@@_weight_int { 1 }
     \tl_set:Nn \l_tmpa_tl { #1 }
     \tl_replace_all:Nnn \l_tmpa_tl { \@@_S: } { S }
-    \@@_keys_p_column:V \l_tmpa_tl 
-    % \keys_set_known:nnN { WithArrows / p-column } { #1 } \l_tmpa_tl 
+    \@@_keys_p_column:V \l_tmpa_tl
+    \bool_set_false:N \l_@@_X_V_bool
     \keys_set:nV { WithArrows / X-column } \l_tmpa_tl
     \int_compare:nNnT \l_@@_weight_int < 0 
       { 
@@ -11323,9 +11590,14 @@
 %    \begin{macrocode}
     \bool_if:NTF \l_@@_X_columns_aux_bool
       { 
+        \exp_args:Nnx
         \@@_patch_preamble_iv_iv:nn 
           { \l_@@_weight_int \l_@@_X_columns_dim } 
-          { minipage }
+          { 
+            \bool_if:NTF \l_@@_X_V_bool
+              { varwidth }
+              { minipage }
+          }
       }
       {
         \tl_gput_right:Nn \g_@@_preamble_tl 
@@ -11334,6 +11606,14 @@
                 \@@_cell_begin:w 
                 \bool_set_true:N \l_@@_X_column_bool 
 %    \end{macrocode}
+% You encounter a problem on 2023-03-04: for an environment with |X| columns,
+% during the first compilations (which are not the definitive one), sometimes,
+% some cells are declared empty even if they should not. That's a problem
+% because user's instructions may use these nodes. That's why we have added the
+% following |\NotEmpty|.
+%    \begin{macrocode}
+                \NotEmpty 
+%    \end{macrocode}
 % The following code will nullify the box of the cell.
 %    \begin{macrocode}
                 \tl_gput_right:Nn \g_@@_cell_after_hook_tl 
@@ -21400,6 +21680,7 @@
     first-row,~
     hlines,~
     hvlines,~
+    hvlines-except-borders,~
     last-col,~
     last-row,~
     left-margin,~
@@ -21455,6 +21736,7 @@
     first-row,~
     hlines,~
     hvlines,~
+    hvlines-except-borders,~
     last-col,~
     last-row,~
     left-margin,~
@@ -21516,6 +21798,7 @@
     first-row,~
     hlines,~
     hvlines,~
+    hvlines-except-borders,~
     l,~
     last-col,~
     last-row,~
@@ -21575,6 +21858,7 @@
     first-row,~
     hlines,~
     hvlines,~
+    hvlines-except-borders,~
     label,~
     last-col,~
     last-row,~
@@ -21641,7 +21925,14 @@
 % \nolinkurl{https:www.tug.org/svn/texlive/trunk/Master/texmf-dist/tex/latex/nicematrix/nicematrix.sty}
 % }
 %
+% \subsection*{Changes between version 6.15 and 6.16}
 %
+% It's now possible to put any LaTeX extensible delimiter (|\lgroup|, |\langle|,
+% etc.) in the preamble of an environment with pramble (such as |{NiceArray}|)
+% by prefixing them by |\left| and |\right|.
+%
+% New key |code| for the command |\SubMatrix| in the |\CodeAfter|.
+%
 % \subsection*{Changes between version 6.14 and 6.15}
 %
 % New key |transparent| for the command |\Block| (with that key, the rules are

Modified: branches/branch2022.final/Master/texmf-dist/tex/latex/nicematrix/nicematrix.sty
===================================================================
--- branches/branch2022.final/Master/texmf-dist/tex/latex/nicematrix/nicematrix.sty	2023-03-07 22:23:46 UTC (rev 66445)
+++ branches/branch2022.final/Master/texmf-dist/tex/latex/nicematrix/nicematrix.sty	2023-03-07 22:24:01 UTC (rev 66446)
@@ -18,9 +18,10 @@
 %% and version 1.3 or later is part of all distributions of
 %% LaTeX version 2005/12/01 or later.
 %% 
-\def\myfileversion{6.15}
-\def\myfiledate{2023/02/25}
+\def\myfileversion{6.16}
+\def\myfiledate{2023/03/06}
 
+
 \RequirePackage{pgfcore}
 \usepgfmodule{shapes}
 \RequirePackage{l3keys2e}
@@ -419,6 +420,7 @@
 \int_new:N \g__nicematrix_total_X_weight_int
 \bool_new:N \l__nicematrix_X_columns_aux_bool
 \dim_new:N \l__nicematrix_X_columns_dim
+\bool_new:N \l__nicematrix_X_V_bool
 \bool_new:N \g__nicematrix_after_col_zero_bool
 \bool_new:N \g__nicematrix_row_of_col_done_bool
 \bool_new:N \g__nicematrix_not_empty_cell_bool
@@ -2030,29 +2032,31 @@
   {
     \str_case:nnF { #1 }
       {
-        c { \__nicematrix_patch_preamble_i:n #1 }
-        l { \__nicematrix_patch_preamble_i:n #1 }
-        r { \__nicematrix_patch_preamble_i:n #1 }
-        > { \__nicematrix_patch_preamble_xiv:n }
-        ! { \__nicematrix_patch_preamble_ii:nn #1 }
-        @ { \__nicematrix_patch_preamble_ii:nn #1 }
-        | { \__nicematrix_patch_preamble_iii:n #1 }
-        p { \__nicematrix_patch_preamble_iv:n #1 }
-        b { \__nicematrix_patch_preamble_iv:n #1 }
-        m { \__nicematrix_patch_preamble_iv:n #1 }
+        c       { \__nicematrix_patch_preamble_i:n #1 }
+        l       { \__nicematrix_patch_preamble_i:n #1 }
+        r       { \__nicematrix_patch_preamble_i:n #1 }
+        >       { \__nicematrix_patch_preamble_xiv:n }
+        !       { \__nicematrix_patch_preamble_ii:nn #1 }
+        @       { \__nicematrix_patch_preamble_ii:nn #1 }
+        |       { \__nicematrix_patch_preamble_iii:n #1 }
+        p       { \__nicematrix_patch_preamble_iv:n #1 }
+        b       { \__nicematrix_patch_preamble_iv:n #1 }
+        m       { \__nicematrix_patch_preamble_iv:n #1 }
         \__nicematrix_V:  { \__nicematrix_patch_preamble_v:n }
-        V { \__nicematrix_patch_preamble_v:n }
-        \__nicematrix_w: { \__nicematrix_patch_preamble_vi:nnnn { } #1 }
-        \__nicematrix_W: { \__nicematrix_patch_preamble_vi:nnnn { \__nicematrix_special_W: } #1 }
-        \__nicematrix_S: { \__nicematrix_patch_preamble_vii:n }
-        (  { \__nicematrix_patch_preamble_viii:nn #1 }
-        [  { \__nicematrix_patch_preamble_viii:nn #1 }
-        \{ { \__nicematrix_patch_preamble_viii:nn #1 }
-        )  { \__nicematrix_patch_preamble_ix:nn #1 }
-        ]  { \__nicematrix_patch_preamble_ix:nn #1 }
-        \} { \__nicematrix_patch_preamble_ix:nn #1 }
-        X  { \__nicematrix_patch_preamble_x:n }
-        \__nicematrix_X { \__nicematrix_patch_preamble_x:n }
+        V       { \__nicematrix_patch_preamble_v:n }
+        \__nicematrix_w:  { \__nicematrix_patch_preamble_vi:nnnn { } #1 }
+        \__nicematrix_W:  { \__nicematrix_patch_preamble_vi:nnnn { \__nicematrix_special_W: } #1 }
+        \__nicematrix_S:  { \__nicematrix_patch_preamble_vii:n }
+        (       { \__nicematrix_patch_preamble_viii:nn #1 }
+        [       { \__nicematrix_patch_preamble_viii:nn #1 }
+        \{      { \__nicematrix_patch_preamble_viii:nn #1 }
+        \left   { \__nicematrix_patch_preamble_viii:nn }
+        )       { \__nicematrix_patch_preamble_ix:nn #1 }
+        ]       { \__nicematrix_patch_preamble_ix:nn #1 }
+        \}      { \__nicematrix_patch_preamble_ix:nn #1 }
+        \right  { \__nicematrix_patch_preamble_ix:nn }
+        X       { \__nicematrix_patch_preamble_x:n }
+        \__nicematrix_X   { \__nicematrix_patch_preamble_x:n }
         \q_stop { }
       }
       {
@@ -2419,7 +2423,7 @@
   {
     \tl_gput_right:Nx \g__nicematrix_pre_code_after_tl
       { \__nicematrix_delimiter:nnn #1 { \int_eval:n { \c at jCol + 1 } } \c_true_bool }
-    \tl_if_in:nnTF { ( [ \{ ) ] \} } { #2 }
+    \tl_if_in:nnTF { ( [ \{ ) ] \} \left \right } { #2 }
       {
         \__nicematrix_error:nn { delimiter~after~opening } { #2 }
         \__nicematrix_patch_preamble:n
@@ -2444,7 +2448,7 @@
               }
           }
           {
-            \tl_if_in:nnT { ( [ \{ } { #2 }
+            \tl_if_in:nnT { ( [ \{ \left } { #2 }
               { \tl_gput_right:Nn \g__nicematrix_preamble_tl { ! { \enskip } } }
             \tl_gput_right:Nx \g__nicematrix_pre_code_after_tl
               { \__nicematrix_delimiter:nnn #1 { \int_use:N \c at jCol } \c_false_bool }
@@ -2486,7 +2490,10 @@
 \cs_new_protected:Npn \__nicematrix_patch_preamble_x_i:w [ #1 ]
   { \__nicematrix_patch_preamble_x_ii:n { #1 } }
 \keys_define:nn { WithArrows / X-column }
-  { unknown .code:n = \int_set:Nn \l__nicematrix_weight_int { \l_keys_key_str } }
+  {
+    v .bool_set:N = \l__nicematrix_X_V_bool ,
+    unknown .code:n = \int_set:Nn \l__nicematrix_weight_int { \l_keys_key_str }
+  }
 \cs_new_protected:Npn \__nicematrix_patch_preamble_x_ii:n #1
   {
     \str_set:Nn \l__nicematrix_hpos_col_str { j }
@@ -2496,7 +2503,7 @@
     \tl_set:Nn \l_tmpa_tl { #1 }
     \tl_replace_all:Nnn \l_tmpa_tl { \__nicematrix_S: } { S }
     \__nicematrix_keys_p_column:V \l_tmpa_tl
-    % \keys_set_known:nnN { WithArrows / p-column } { #1 } \l_tmpa_tl
+    \bool_set_false:N \l__nicematrix_X_V_bool
     \keys_set:nV { WithArrows / X-column } \l_tmpa_tl
     \int_compare:nNnT \l__nicematrix_weight_int < 0
       {
@@ -2506,9 +2513,14 @@
     \int_gadd:Nn \g__nicematrix_total_X_weight_int \l__nicematrix_weight_int
     \bool_if:NTF \l__nicematrix_X_columns_aux_bool
       {
+        \exp_args:Nnx
         \__nicematrix_patch_preamble_iv_iv:nn
           { \l__nicematrix_weight_int \l__nicematrix_X_columns_dim }
-          { minipage }
+          {
+            \bool_if:NTF \l__nicematrix_X_V_bool
+              { varwidth }
+              { minipage }
+          }
       }
       {
         \tl_gput_right:Nn \g__nicematrix_preamble_tl
@@ -2516,6 +2528,7 @@
             > {
                 \__nicematrix_cell_begin:w
                 \bool_set_true:N \l__nicematrix_X_column_bool
+                \NotEmpty
                 \tl_gput_right:Nn \g__nicematrix_cell_after_hook_tl
                   { \hbox_set:Nn \l__nicematrix_cell_box { } }
                 \begin { minipage } { 5 cm } \arraybackslash
@@ -8948,6 +8961,7 @@
     first-row,~
     hlines,~
     hvlines,~
+    hvlines-except-borders,~
     last-col,~
     last-row,~
     left-margin,~
@@ -8998,6 +9012,7 @@
     first-row,~
     hlines,~
     hvlines,~
+    hvlines-except-borders,~
     last-col,~
     last-row,~
     left-margin,~
@@ -9052,6 +9067,7 @@
     first-row,~
     hlines,~
     hvlines,~
+    hvlines-except-borders,~
     l,~
     last-col,~
     last-row,~
@@ -9108,6 +9124,7 @@
     first-row,~
     hlines,~
     hvlines,~
+    hvlines-except-borders,~
     label,~
     last-col,~
     last-row,~



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