texlive[66904] Master/texmf-dist: nicematrix (20apr23)
commits+karl at tug.org
commits+karl at tug.org
Thu Apr 20 21:59:57 CEST 2023
Revision: 66904
http://tug.org/svn/texlive?view=revision&revision=66904
Author: karl
Date: 2023-04-20 21:59:57 +0200 (Thu, 20 Apr 2023)
Log Message:
-----------
nicematrix (20apr23)
Modified Paths:
--------------
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/source/latex/nicematrix/nicematrix.dtx
trunk/Master/texmf-dist/tex/latex/nicematrix/nicematrix.sty
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 2023-04-20 19:59:42 UTC (rev 66903)
+++ trunk/Master/texmf-dist/doc/latex/nicematrix/nicematrix-french.tex 2023-04-20 19:59:57 UTC (rev 66904)
@@ -20,7 +20,7 @@
% On utilise \MakeShortVerb de shortvrb et pas \DefineShortVerb de fancyvrb
% car on ne veut pas que le contenu des petits éléments en verbatim soit colorié
-% en grise
+% en gris
\usepackage{shortvrb}
\MakeShortVerb{\|}
@@ -63,6 +63,12 @@
\setlength{\parindent}{0pt}
\skip \footins = 2 \bigskipamount
+
+\NewDocumentCommand{\Definition}{m}
+ {{\setlength{\fboxsep}{1pt}\colorbox{gray!20}{\ttfamily \vphantom{gl}#1}}}
+
+
+
\begin{document}
\VerbatimFootnotes
@@ -488,10 +494,7 @@
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 :
@@ -809,7 +812,6 @@
\subsection{Positionnement vertical du contenu des blocs}
-\colorbox{yellow!50}{\textbf{Nouveau 6.14}}
Concernant le positionnement vertical, la commande |\Block| admet les clés
|v-center|\footnote{Cette clé ne peut être nommée \texttt{c} car la clé
@@ -827,11 +829,13 @@
|\\|) est alignée avec la ligne de base de la dernière des rangées du tableau
impliquées dans le bloc.
-\item Avec la clé |T|, le contenu du bloc est calé vers le haut (avec une marge
-égale au paramètre |inner ysep| de PGF/Tikz --- que l'on peut régler avec |\pgfset|).
+\item Avec la clé |T|, le contenu du bloc est calé vers le haut.
-\item Avec la clé |B|, le contenu du bloc est calé vers le bas (avec une marge
-égale au paramètre |inner ysep| de PGF/Tikz).
+\colorbox{yellow!50}{Modification 6.18}\enskip Il n'y a plus de marge verticale.
+Néanmoins, le contenu du bloc est (toujours) composé en interne dans une |{minipage}|, un
+|{tabular}| ou un |{array}|, ce qui fait qu'il y souvent déjà une marge.
+
+\item Avec la clé |B|, le contenu du bloc est calé vers le bas.
\end{itemize}
Quand aucune clé n'est donnée, c'est la clé |v-center| qui s'applique (sauf pour
@@ -850,19 +854,19 @@
\begin{BVerbatim}[baseline=c,boxwidth=10cm]
\begin{NiceTabular}{ccc}
\Block[fill=red!10,~emphase#t@,l]{4-2}{two\\lines}
- & & \Huge first\\
- & & second \\
- & & third \\
- & & fourth \\
+ & & \Huge Un\\
+ & & deux \\
+ & & trois \\
+ & & \Huge quatre \\
text & text \\
\end{NiceTabular}
\end{BVerbatim}
\begin{NiceTabular}{ccc}
\Block[fill=red!10,t,l]{4-2}{two\\lines}
- & & \Huge first\\
- & & second \\
- & & third \\
- & & fourth \\
+ & & \Huge Un\\
+ & & deux \\
+ & & trois \\
+ & & \Huge quatre \\
text & text \\
\end{NiceTabular}
@@ -871,19 +875,19 @@
\begin{BVerbatim}[baseline=c,boxwidth=10cm]
\begin{NiceTabular}{ccc}
\Block[fill=red!10,~emphase#b@,r]{4-2}{two\\lines}
- & & \Huge first\\
- & & second \\
- & & third \\
- & & fourth \\
+ & & \Huge Un\\
+ & & deux \\
+ & & trois \\
+ & & \Huge quatre \\
text & text \\
\end{NiceTabular}
\end{BVerbatim}
\begin{NiceTabular}{ccc}
\Block[fill=red!10,b,r]{4-2}{two\\lines}
- & & \Huge first\\
- & & second \\
- & & third \\
- & & fourth \\
+ & & \Huge Un\\
+ & & deux \\
+ & & trois \\
+ & & \Huge quatre \\
text & text \\
\end{NiceTabular}
@@ -891,19 +895,19 @@
\begin{BVerbatim}[baseline=c,boxwidth=10cm]
\begin{NiceTabular}{ccc}
\Block[fill=red!10,~emphase#T@,l]{4-2}{two\\lines}
- & & \Huge first\\
- & & second \\
- & & third \\
- & & fourth \\
+ & & \Huge Un\\
+ & & deux \\
+ & & trois \\
+ & & \Huge quatre \\
text & text \\
\end{NiceTabular}
\end{BVerbatim}
\begin{NiceTabular}{ccc}
\Block[fill=red!10,T,l]{4-2}{two\\lines}
- & & \Huge first\\
- & & second \\
- & & third \\
- & & fourth \\
+ & & \Huge Un\\
+ & & deux \\
+ & & trois \\
+ & & \Huge quatre \\
text & text \\
\end{NiceTabular}
@@ -912,19 +916,19 @@
\begin{BVerbatim}[baseline=c,boxwidth=10cm]
\begin{NiceTabular}{ccc}
\Block[fill=red!10,~emphase#B@,r]{4-2}{two\\lines}
- & & \Huge first\\
- & & second \\
- & & third \\
- & & fourth \\
+ & & \Huge Un\\
+ & & deux \\
+ & & trois \\
+ & & \Huge quatre \\
text & text \\
\end{NiceTabular}
\end{BVerbatim}
\begin{NiceTabular}{ccc}
\Block[fill=red!10,B,r]{4-2}{two\\lines}
- & & \Huge first\\
- & & second \\
- & & third \\
- & & fourth \\
+ & & \Huge Un\\
+ & & deux \\
+ & & trois \\
+ & & \Huge quatre \\
text & text \\
\end{NiceTabular}
@@ -1207,7 +1211,13 @@
\end{NiceTabular}
\end{center}
+\medskip
+On remarquera que quand la clé |rounded-corners| est utilisée pour
+l'environnement |{NiceTabular}|, la clé |hvlines| trace des coins
+arrondis pour le tableau : cf. partie~\ref{tabular-rounded-corners},
+p.~\pageref{tabular-rounded-corners}.
+
\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. Pour un
@@ -1260,9 +1270,12 @@
\medskip
-Quand la clé |corners| est utilisée, \pkg{nicematrix} calcule les coins vides et
-ces coins sont alors pris en compte par les outils de tracés de filets (les
-filets ne seront pas tracés dans ces coins vides).
+Quand la clé |corners|\footnote{La clé \texttt{corners} dont on parle là
+ n'a pas de rapport direct avec la clé \texttt{rounded-corners},
+ décrite dans la partie \ref{tabular-rounded-corners},
+ p.~\pageref{tabular-rounded-corners}.} est utilisée, \pkg{nicematrix} calcule
+les coins vides et ces coins sont alors pris en compte par les outils de tracés
+de filets (les filets ne seront pas tracés dans ces coins vides).
\medskip
\begin{BVerbatim}[boxwidth=11cm,baseline=c]
@@ -1319,7 +1332,7 @@
\end{NiceTabular}
-\medskip
+\bigskip
$\triangleright$ Les coins sont également pris en compte par les outils de
coloriage dans le |\CodeBefore|. Ces outils ne colorient pas les cases qui sont
dans les coins (cf.~p.~\pageref{color-in-code-before}).
@@ -1664,10 +1677,6 @@
p.~\pageref{nodes-i}.}
\label{code-before}
-\medskip
-Toutes ces commandes acceptent un argument optionnel (entre crochets et en
-première position) qui est le modèle colorimétrique pour la spécification des
-couleurs.
\medskip
Ces commandes ne colorient pas les cases qui se trouvent dans les «coins» si la
@@ -1674,12 +1683,32 @@
clé |corners| a été utilisée. La description de cette clé a été faite
p.~\pageref{corners}.
+\medskip
+Ces commandes respectent les coins arrondis si la clé |rounded-corners| (décrite
+à la partie \ref{tabular-rounded-corners}, p.~\pageref{tabular-rounded-corners})
+a été utilisée.
\medskip
+Toutes ces commandes acceptent un argument optionnel, entre crochets et en
+première position. Cet argument optionel peut contenir deux éléments (séparés
+par une virgule) :
\begin{itemize}
-\item La commande |\cellcolor| tient son nom de la commande |\cellcolor| de
-\pkg{colortbl}.
+\item le modèle colorimétrique (|RGB|, |rgb|, |HTML|, etc.) comme spécifié par
+l'extension \pkg{xcolor} ;
+\item \colorbox{yellow!50}{\textbf{Nouveau 6.18}}
+une spécification d'opacité selon la forme \texttt{opacity = \textsl{valeur}}.
+\end{itemize}
+
+
+\medskip
+On détaille maintenant ces différentes commandes.
+
+\medskip
+\begin{itemize}
+\item La commande \Definition{\textbackslash cellcolor} tient son nom de la
+commande |\cellcolor| de \pkg{colortbl}.
+
Elle prend en arguments obligatoires une couleur et une liste de cases sous le
format $i$-$j$ où $i$ est le numéro de ligne et $j$ le numéro de colonne. Malgré
son nom, elle peut aussi colorier une ligne avec la syntaxe $i$- ou bien une
@@ -1710,9 +1739,9 @@
\medskip
-\item La commande |\rectanglecolor| prend trois arguments obligatoires. Le
-premier est la couleur, les deux suivants fournissent la case en haut à gauche
-et la case en bas à droite du rectangle.
+\item La commande \Definition{\textbackslash rectanglecolor} prend trois
+arguments obligatoires. Le premier est la couleur, les deux suivants fournissent
+la case en haut à gauche et la case en bas à droite du rectangle.
\medskip
\begin{scope}
@@ -1739,15 +1768,16 @@
\medskip
-\item La commande |\arraycolor| prend en argument obligatoire une couleur et
-colorie tout le tableau (sauf les éventuelles rangées et colonnes extérieures:
-cf.~p.~\pageref{exterior}) avec cette couleur. Ce n'est qu'un cas particulier de
-la commande |\rectanglecolor|.
+\item La commande \Definition{\textbackslash arraycolor} prend en argument
+obligatoire une couleur et colorie tout le tableau (sauf les éventuelles rangées
+et colonnes extérieures: cf.~p.~\pageref{exterior}) avec cette couleur. Ce n'est
+qu'un cas particulier de la commande |\rectanglecolor|.
\medskip
\item \label{chessboardcolors}%
-La commande |\chessboardcolors| prend en arguments obligatoires deux
-couleurs et colorie les cases en quinconces avec les deux couleurs.
+La commande \Definition{\textbackslash chessboardcolors} prend en arguments
+obligatoires deux couleurs et colorie les cases en quinconces avec les deux
+couleurs.
\medskip
\begin{scope}
@@ -1778,11 +1808,11 @@
\medskip
-\item La commande |\rowcolor| doit son nom à la commande |\rowcolor| de
-\pkg{colortbl}. Son premier argument obligatoire est la couleur et le deuxième
-est une liste de numéros de rangées ou bien d'intervalles de rangées sous la
-forme $a$-$b$ (un intervalle de la forme $a$- représente toutes les rangées à
-partir de la rangée~$a$).
+\item La commande \Definition{\textbackslash rowcolor} doit son nom à la
+commande |\rowcolor| de \pkg{colortbl}. Son premier argument obligatoire est la
+couleur et le deuxième est une liste de numéros de rangées ou bien d'intervalles
+de rangées sous la forme $a$-$b$ (un intervalle de la forme $a$- représente
+toutes les rangées à partir de la rangée~$a$).
\medskip
@@ -1826,13 +1856,14 @@
\medskip
-\item La commande |\columncolor| doit son nom à la commande |\columncolor| de
-\pkg{colortbl}. Sa syntaxe est similaire à celle de |\rowcolor|.
+\item La commande \Definition{\textbackslash columncolor} doit son nom à la
+commande |\columncolor| de \pkg{colortbl}. Sa syntaxe est similaire à celle de
+|\rowcolor|.
\medskip
-\item La commande |\rowcolors| (avec un \emph{s}) doit son nom à la commande
-|\rowcolors| de \pkg{colortbl}. Le \emph{s} rappelle
-qu'il y a deux couleurs. Elle colorie alternativement les rangées avec les deux
+\item La commande \Definition{\textbackslash rowcolors} (avec un \emph{s}) doit
+son nom à la commande |\rowcolors| de \pkg{colortbl}. Le \emph{s} rappelle qu'il
+y a deux couleurs. Elle colorie alternativement les rangées avec les deux
couleurs à partir de la rangée dont le numéro est donné en premier argument
(obligatoire), comme le fait la commande |\rowcolors| de \pkg{xcolor}.
@@ -1843,10 +1874,10 @@
\medskip
-La commande |\rowcolors| accepte une liste de couples \textsl{clé=valeur} comme
-argument optionnel en dernière position (l'argument optionnel en première
-position correspond à l'espace colorimétrique). Les clés disponibles sont
-|cols|, |restart| et |respect-blocks|.
+La commande |\rowcolors| accepte une liste de couples
+\textsl{clé=valeur} comme argument optionnel en dernière position (l'argument
+optionnel en première position correspond à l'espace colorimétrique). Les clés
+disponibles sont |cols|, |restart| et |respect-blocks|.
\begin{itemize}
\item La clé |cols| décrit un ensemble de colonnes sur lesquelles portera
l'effet de |\rowcolors|. Cet ensemble de colonnes est une liste d'intervalles de
@@ -1940,11 +1971,11 @@
\medskip
-\item L'extension \pkg{nicematrix} propose aussi une commande |\rowlistcolors|.
-Cette commande généralise la commande |\rowcolors|: au lieu de prendre deux
-arguments successifs pour les couleurs, elle prend un seul argument qui est une
-liste de couleurs séparées par des virgules. Dans cette liste, le symbole |=|
-représente une couleur identique à la précédente.
+\item L'extension \pkg{nicematrix} propose aussi une commande \Definition{\textbackslash
+ rowlistcolors}. Cette commande généralise la commande |\rowcolors|: au lieu de
+prendre deux arguments successifs pour les couleurs, elle prend un seul argument
+qui est une liste de couleurs séparées par des virgules. Dans cette liste, le
+symbole |=| représente une couleur identique à la précédente.
\smallskip
\begin{BVerbatim}[boxwidth=10cm,baseline=c]
@@ -2189,7 +2220,7 @@
\item La clé |rowcolor| fixe la couleur de fond et la clé |color| fixe la
couleur du texte.\footnote{La clé |color| utilise la commande |\color| mais
insère aussi une instruction |\leavevmode| devant. Cela évite un espace
- vertical parasite dans les cellules qui correspondent à des colonnes de type
+ vertical parasite dans les cases qui correspondent à des colonnes de type
|p|, |b|, |m|, |X| et |V| (qui débutent en mode vertical).}
\item La clé |bold| impose des caractères gras aux éléments de la rangée, qu'ils
@@ -2493,7 +2524,7 @@
\pkg{nicematrix}, l'un des intérêts des colonnes de type |V| par rapport aux
colonnes de type |p|, |m| ou |b| est que, pour les cases d'une telle colonne,
le nœud PGF-TikZ créé pour le contenu d'une telle case a une largeur ajustée
-au contenu de la cellule en question : cf. p.~\pageref{node-V}.
+au contenu de la case en question : cf. p.~\pageref{node-V}.
\medskip
@@ -3655,7 +3686,7 @@
Les commandes |\OverBrace| and |\UnderBrace| permettent de placer des accolades
horizontales sur une partie du tableau. Ces commandes prennent trois arguments :
\begin{itemize}
-\item le premier argument est le coin supérieur gauche du rectangle de cellules
+\item le premier argument est le coin supérieur gauche du rectangle de cases
impliquées dans l'accolade avec la syntaxe habituelle $i$|-|$j$ où $i$ est le
numéro de rangée et $j$ le numéro de colonne ;
@@ -4116,6 +4147,55 @@
\section{Autres fonctionnalités}
+\subsection{La clé rounded-corners de \{NiceTabular\}}
+
+\label{tabular-rounded-corners}
+
+\colorbox{yellow!50}{\textbf{Nouveau 6.18}}\par\nobreak
+
+\smallskip
+La clé |rounded-corners| que l'on décrit maintenant n'a pas de lien direct avec
+la clé |corners| (qui sert à spécifier les «coins vides») décrite à la
+partie~\ref{corners}, p.~\pageref{corners}.
+
+\smallskip
+L'environnement |{NiceTabular}| propose une clé |rounded-corners| qui spécifie
+que le tableau devra avoir des coins arrondis avec le rayon égal à la valeur
+de cette clé (la valeur par défaut est 4~pt\footnote{Cette valeur est la valeur
+ par défaut des «\texttt{rounded corners}» de PGF/Tikz.}). Plus précisément,
+cette clé a deux effets que l'on décrit maintenant.
+\begin{itemize}
+\item Toutes les commandes de coloriage de cases, colonnes et rangées (que ce
+soit dans le |\CodeBefore| ou bien directement dans le tableau (quand la clé
+|colortbl-like| est utilisée) respectent ces coins arrondis pour le tableau.
+
+\item Quand la clé |hvlines| est utilisée, les filets extérieurs sont tracés
+avec des coins arrondis.
+\end{itemize}
+
+\bigskip
+\begin{BVerbatim}[baseline=c,boxwidth=9.5cm]
+\begin{NiceTabular}{ccc}[hvlines,~emphase#rounded-corners@]
+\CodeBefore
+ \rowcolor{red!15}{1}
+\Body
+ Nom & Prénom & Profession \\
+ Arvy & Jacques & Dentiste \\
+ Jalon & Amandine & Dentiste \\
+\end{NiceTabular}
+\end{BVerbatim}
+\begin{NiceTabular}{ccc}[hvlines,rounded-corners]
+\CodeBefore
+ \rowcolor{red!15}{1}
+\Body
+ Nom & Prénom & Profession \\
+ Arvy & Jacques & Dentiste \\
+ Jalon & Amandine & Dentiste \\
+ Sept & Huit & Neuf
+\end{NiceTabular}
+
+
+
\subsection{Commande \textbackslash ShowCellNames}
@@ -4168,7 +4248,7 @@
\end{pNiceArray}$
\medskip
-En revanche, les colonnes |d| de l'extension \pkg{dcolumn} ne sont pas prises en
+En revanche, les colonnes |d| de l'extension \pkg{dcolumn} ne sont \emph{pas} prises en
charge par \pkg{nicematrix}.
@@ -4656,9 +4736,9 @@
\label{node-V}
Quand l'extension \pkg{varwidth} est chargée, les colonnes de type |V| définies
par \pkg{varwidth} sont prises en charge par \pkg{nicematrix}. Il peut être
-intéressant de préciser que, pour une cellule située dans une colonne de type
-|V|, le nœud PGF-TikZ créé par \pkg{nicematrix} pour le contenu de cette cellule
-a une largeur ajustée au contenu de cette cellule. Cela est en contraste avec le
+intéressant de préciser que, pour une case située dans une colonne de type
+|V|, le nœud PGF-TikZ créé par \pkg{nicematrix} pour le contenu de cette case
+a une largeur ajustée au contenu de cette case. Cela est en contraste avec le
cas des colonnes de type |p|, |m| ou |b| dans lesquelles les nœuds ont toujours
une largeur égale à la largeur de la colonne. Dans l'exemple suivant, la
commande |\lipsum| est fournie par l'extension éponyme.
@@ -4920,7 +5000,7 @@
\hline
u_n &-& u_0 &=& nr \\
\CodeAfter
- \tikz[very thick, red, opacity=0.4,name suffix = -medium]
+ \tikz[very thick, red, opacity=0.4, name suffix = -medium]
\draw (1-1.north west) -- (2-3.south east)
(2-1.north west) -- (3-3.south east)
(3-1.north west) -- (4-3.south east)
@@ -5112,7 +5192,7 @@
\medskip
\emph{Exemple} : On souhaite écrire une commande |\crossbox| qui barre en croix
-la cellule courante. Cette commande prendra en argument optionnel une liste de
+la case courante. Cette commande prendra en argument optionnel une liste de
couples \textsl{clé}-\textsl{valeur} qui sera passée à TikZ avant que la croix
ne soit tracée.
@@ -5559,34 +5639,8 @@
\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}
@@ -6291,7 +6345,7 @@
de la matrice, on peut utiliser la technique précédente trois fois.
\begin{Verbatim}
-\[\begin{pNiceArray}{ccc}[last-col]
+\[\begin{pNiceArray}{ccc}[last-col, margin = 2pt]
\CodeBefore [create-cell-nodes]
\begin{tikzpicture}
~emphase# \node [highlight = (1-1) (1-3)] {} ;@
@@ -6305,7 +6359,7 @@
\end{pNiceArray}\]
\end{Verbatim}
-\[\begin{pNiceArray}{ccc}[last-col]
+\[\begin{pNiceArray}{ccc}[last-col, margin = 2pt]
\CodeBefore [create-cell-nodes]
\begin{tikzpicture}
\node [highlight = (1-1) (1-3)] {} ;
@@ -6323,7 +6377,7 @@
moyens» au lieu des «nœuds normaux».
\begin{Verbatim}
-\[\begin{pNiceArray}{ccc}[last-col,create-medium-nodes]
+\[\begin{pNiceArray}{ccc}[last-col, margin = 2pt, create-medium-nodes]
\CodeBefore [create-cell-nodes]
\begin{tikzpicture} ~emphase#[name suffix = -medium]@
\node [highlight = (1-1) (1-3)] {} ;
@@ -6338,7 +6392,7 @@
\end{Verbatim}
-\[\begin{pNiceArray}{ccc}[last-col,create-medium-nodes]
+\[\begin{pNiceArray}{ccc}[last-col, margin = 2pt, create-medium-nodes]
\CodeBefore [create-cell-nodes]
\begin{tikzpicture} [name suffix = -medium]
\node [highlight = (1-1) (1-3)] {} ;
@@ -6441,7 +6495,7 @@
\label{triangular}
Dans l'exemple suivant, on utilise le style PGF/Tikz |nicematrix/cell-node| pour faire
-tourner le contenu des cellules (rotation que l'on compense ensuite en faisant
+tourner le contenu des cases (rotation que l'on compense ensuite en faisant
tourner tout le tableau avec la commande |\adjustbox| de l'extension éponyme,
qui doit donc être chargée préalablement).
Modified: trunk/Master/texmf-dist/doc/latex/nicematrix/nicematrix.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/source/latex/nicematrix/nicematrix.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/nicematrix/nicematrix.dtx 2023-04-20 19:59:42 UTC (rev 66903)
+++ trunk/Master/texmf-dist/source/latex/nicematrix/nicematrix.dtx 2023-04-20 19:59:57 UTC (rev 66904)
@@ -17,8 +17,8 @@
%
% \fi
% \iffalse
-\def\myfileversion{6.17}
-\def\myfiledate{2023/03/31}
+\def\myfileversion{6.18}
+\def\myfiledate{2023/04/19}
%
%
%<*batchfile>
@@ -850,7 +850,6 @@
%
% \subsection{Vertical position of the content of the block}
%
-% \colorbox{yellow!50}{\textbf{New 6.14}}
%
% For the vertical position, the command |\Blocks| accepts the keys
% |v-center|\footnote{That key could not have been named |c| since the key |c|
@@ -866,11 +865,14 @@
% block (we recall that the content of a block may contains several lines
% separated by |\\|) is aligned with the baseline of the last of the rows of the
% array involved in the block.
-% \item With the key |T|, the content of the block is set upwards with only a
-% margin equal to the PGF/Tikz parameter |inner ysep| (use |\pgfset| to change
-% the value of that parameter).
-% \item With the key |B|, the content of the block is set downwards with only a
-% margin equal to the PGF/Tikz parameter |inner ysep|.
+% \item With the key |T|, the content of the block is set upwards.
+%
+% \colorbox{yellow!50}{\textbf{Modification 6.18}}\enskip No vertical margin is
+% added. However, the contents of the block is (always) composed by
+% \pkg{nicematrix} in a |{minipage}|, a |{tabular}| or an |{array}| and, hence,
+% there will still remain a margin (in most cases).
+%
+% \item With the key |B|, the content of the block is set downwards.
% \end{itemize}
%
% When no key is given, the key |v-center| applies (excepted in the mono-row blocks).
@@ -890,19 +892,19 @@
% \begin{BVerbatim}[baseline=c,boxwidth=10cm]
% \begin{NiceTabular}{ccc}
% \Block[fill=red!10,~emphase#t@,l]{4-2}{two\\lines}
-% & & \Huge first\\
-% & & second \\
-% & & third \\
-% & & fourth \\
+% & & \Huge Un\\
+% & & deux \\
+% & & trois \\
+% & & \Huge quatre \\
% text & text \\
% \end{NiceTabular}
% \end{BVerbatim}
% \begin{NiceTabular}{ccc}
% \Block[fill=red!10,t,l]{4-2}{two\\lines}
-% & & \Huge first\\
-% & & second \\
-% & & third \\
-% & & fourth \\
+% & & \Huge Un\\
+% & & deux \\
+% & & trois \\
+% & & \Huge quatre \\
% text & text \\
% \end{NiceTabular}
%
@@ -911,19 +913,19 @@
% \begin{BVerbatim}[baseline=c,boxwidth=10cm]
% \begin{NiceTabular}{ccc}
% \Block[fill=red!10,~emphase#b@,r]{4-2}{two\\lines}
-% & & \Huge first\\
-% & & second \\
-% & & third \\
-% & & fourth \\
+% & & \Huge Un\\
+% & & deux \\
+% & & trois \\
+% & & \Huge quatre \\
% text & text \\
% \end{NiceTabular}
% \end{BVerbatim}
% \begin{NiceTabular}{ccc}
% \Block[fill=red!10,b,r]{4-2}{two\\lines}
-% & & \Huge first\\
-% & & second \\
-% & & third \\
-% & & fourth \\
+% & & \Huge Un\\
+% & & deux \\
+% & & trois \\
+% & & \Huge quatre \\
% text & text \\
% \end{NiceTabular}
%
@@ -931,19 +933,19 @@
% \begin{BVerbatim}[baseline=c,boxwidth=10cm]
% \begin{NiceTabular}{ccc}
% \Block[fill=red!10,~emphase#T@,l]{4-2}{two\\lines}
-% & & \Huge first\\
-% & & second \\
-% & & third \\
-% & & fourth \\
+% & & \Huge Un\\
+% & & deux \\
+% & & trois \\
+% & & \Huge quatre \\
% text & text \\
% \end{NiceTabular}
% \end{BVerbatim}
% \begin{NiceTabular}{ccc}
% \Block[fill=red!10,T,l]{4-2}{two\\lines}
-% & & \Huge first\\
-% & & second \\
-% & & third \\
-% & & fourth \\
+% & & \Huge Un\\
+% & & deux \\
+% & & trois \\
+% & & \Huge quatre \\
% text & text \\
% \end{NiceTabular}
%
@@ -952,22 +954,23 @@
% \begin{BVerbatim}[baseline=c,boxwidth=10cm]
% \begin{NiceTabular}{ccc}
% \Block[fill=red!10,~emphase#B@,r]{4-2}{two\\lines}
-% & & \Huge first\\
-% & & second \\
-% & & third \\
-% & & fourth \\
+% & & \Huge Un\\
+% & & deux \\
+% & & trois \\
+% & & \Huge quatre \\
% text & text \\
% \end{NiceTabular}
% \end{BVerbatim}
% \begin{NiceTabular}{ccc}
% \Block[fill=red!10,B,r]{4-2}{two\\lines}
-% & & \Huge first\\
-% & & second \\
-% & & third \\
-% & & fourth \\
+% & & \Huge Un\\
+% & & deux \\
+% & & trois \\
+% & & \Huge quatre \\
% text & text \\
% \end{NiceTabular}
%
+%
% \end{scope}
%
%
@@ -1235,9 +1238,15 @@
% \end{center}
%
% \bigskip
+% It's worth noting that, when the key |rounded-corners| is used for the
+% environment |{NiceTabular}|, the key |hvlines| draws rounded corners for the
+% exterior frame of the tabular: cf. part~\ref{tabular-rounded-corners},
+% p.~\pageref{tabular-rounded-corners}.
+%
+% \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. For an
-% example of use of that key, see the part ``Use with tcolorbox`,
+% example of use of that key, see the part ``Use with tcolorbox'',
% p.~\pageref{tcolorbox}.
%
% \subsubsection{The (empty) corners}
@@ -1255,7 +1264,7 @@
% natural. The precise definition of a ``non-empty cell'' is given below (cf.
% p.~\pageref{empty-cells}).}
%
-% However, it's possible, for a cell without content, to require \pkg{nicemarix}
+% However, it's possible, for a cell without content, to require \pkg{nicematrix}
% to consider that cell as not empty with the key |\NotEmpty|.
%
%\bigskip
@@ -1283,9 +1292,12 @@
% \end{NiceTabular}
%
% \bigskip
-% When the key |corners| is used, \pkg{nicematrix} computes the (empty) corners
-% and these corners will be taken into account by the tools for drawing the
-% rules (the rules won't be drawn in the corners).
+% When the key |corners|\footnote{The key \texttt{corners} that we describe now
+% has no direct link with the key \texttt{rounded-corners} described in the part
+% \ref{tabular-rounded-corners}, p.~\pageref{tabular-rounded-corners}} is used,
+% \pkg{nicematrix} computes the (empty) corners and these corners will be taken
+% into account by the tools for drawing the rules (the rules won't be drawn in
+% the corners).
%
% \bigskip
% \begin{BVerbatim}[boxwidth=11cm,baseline=c]
@@ -1675,18 +1687,33 @@
% \label{code-before}
%
% \medskip
-% All these commands accept an optional argument (between square brackets and
-% in first position) which is the color model for the specification of the
-% colors.
+% These commands don't color the cells which are in the ``corners'' if the key
+% |corners| is used. That key has been described p.~\pageref{corners}.
%
% \medskip
-% These commands don't color the cells which are in the ``corners'' if the key
-% |corners| is used. This key has been described p.~\pageref{corners}.
+% These commands respect the rounded corners if the key |rounded-corners|
+% (described in the part \ref{tabular-rounded-corners} at the
+% page~\pageref{tabular-rounded-corners}) has been used.
+%
+% \medskip
+% All these commands accept an optional argument, between square brackets and
+% in first position. That optional argument may contain two elements (separated
+% by a comma)
+% \begin{itemize}
+% \item the colorimetric space (|RGB|, |rgb|, |HTML|, etc) as specified by the
+% the extension \pkg{xcolor};
+% \item \colorbox{yellow!50}{\textbf{New 6.18}}\par\nobreak
+% a specification of opacity f the form \texttt{opacity = \textsl{value}}.
+% \end{itemize}
%
+% \bigskip
+%
+% We describe now in detail those commands.
+%
% \medskip
% \begin{itemize}
-% \item The command |\cellcolor| takes its name from the command |\cellcolor| of
-% \pkg{colortbl}.
+% \item The command \Definition{\textbackslash cellcolor} takes its name from
+% the command |\cellcolor| of \pkg{colortbl}.
%
% This command takes in as mandatory arguments a color and a list of cells, each
% of which with the format $i$-$j$ where $i$ is the number of the row and $j$ the
@@ -1718,9 +1745,9 @@
% \end{scope}
%
% \bigskip
-% \item The command |\rectanglecolor| takes three mandatory arguments. The first
-% is the color. The second is the upper-left cell of the rectangle and the third
-% is the lower-right cell of the rectangle.
+% \item The command \Definition{\textbackslash rectanglecolor} takes three
+% mandatory arguments. The first is the color. The second is the upper-left cell
+% of the rectangle and the third is the lower-right cell of the rectangle.
%
% \medskip
% \begin{scope}
@@ -1746,15 +1773,16 @@
% \end{scope}
%
% \bigskip
-% \item The command |\arraycolor| takes in as mandatory argument a color and
-% color the whole tabular with that color (excepted the potential exterior rows
-% and columns: cf.~p.~\pageref{exterior}). It's only a particular case of
-% |\rectanglecolor|.
+% \item The command \Definition{\textbackslash arraycolor} takes in as mandatory
+% argument a color and color the whole tabular with that color (excepted the
+% potential exterior rows and columns: cf.~p.~\pageref{exterior}). It's only a
+% particular case of |\rectanglecolor|.
%
%
% \bigskip
-% \item The command |\chessboardcolors| takes in as mandatory arguments two colors
-% and it colors the cells of the tabular in quincunx with these colors.
+% \item The command \Definition{\textbackslash chessboardcolors} takes in as
+% mandatory arguments two colors and it colors the cells of the tabular in
+% quincunx with these colors.
%
% \medskip
% \begin{scope}
@@ -1785,10 +1813,11 @@
%
%
% \bigskip
-% \item The command |\rowcolor| takes its name from the command |\rowcolor| of
-% \pkg{colortbl}. Its first mandatory argument is the color and the second is a
-% comma-separated list of rows or interval of rows with the form $a$-$b$ (an
-% interval of the form $a$- represent all the rows from the row $a$ until the end).
+% \item The command \Definition{\textbackslash rowcolor} takes its name from the
+% command |\rowcolor| of \pkg{colortbl}. Its first mandatory argument is the
+% color and the second is a comma-separated list of rows or interval of rows
+% with the form $a$-$b$ (an interval of the form $a$- represent all the rows
+% from the row $a$ until the end).
%
% \medskip
% \begin{scope}
@@ -1829,17 +1858,17 @@
%
%
% \bigskip
-% \item The command |\columncolor| takes its name from the command
-% |\columncolor| of \pkg{colortbl}. Its syntax is similar to the syntax of
-% |\rowcolor|.
+% \item The command \Definition{\textbackslash columncolor} takes its name from
+% the command |\columncolor| of \pkg{colortbl}. Its syntax is similar to the
+% syntax of |\rowcolor|.
%
% \bigskip
-% \item The command |\rowcolors| (with a \emph{s}) takes its name from the
-% command |\rowcolors| of \pkg{colortbl}. The \emph{s} emphasizes
-% the fact that there is \emph{two} colors. This command colors alternately the
-% rows of the tabular with the two colors (provided in second and third
-% argument), beginning with the row whose number is given in first (mandatory)
-% argument.
+% \item The command \Definition{\textbackslash rowcolors} (with a \emph{s})
+% takes its name from the command |\rowcolors| of \pkg{colortbl}. The \emph{s}
+% emphasizes the fact that there is \emph{two} colors. This command colors
+% alternately the rows of the tabular with the two colors (provided in second
+% and third argument), beginning with the row whose number is given in first
+% (mandatory) argument.
%
% In fact, the first (mandatory) argument is, more generally, a comma separated
% list of intervals describing the rows involved in the action of |\rowcolors|
@@ -1936,11 +1965,11 @@
%
%
% \bigskip
-% \item The extension \pkg{nicematrix} provides also a command |\rowlistcolors|.
-% This command generalises the command |\rowcolors|: instead of two successive
-% arguments for the colors, this command takes in an argument which is a
-% (comma-separated) list of colors. In that list, the symbol |=| represent a
-% color identical to the previous one.
+% \item The extension \pkg{nicematrix} provides also a command
+% \Definition{\textbackslash rowlistcolors}. This command generalises the
+% command |\rowcolors|: instead of two successive arguments for the colors, this
+% command takes in an argument which is a (comma-separated) list of colors. In
+% that list, the symbol |=| represent a color identical to the previous one.
%
% \smallskip
% \begin{BVerbatim}[boxwidth=10cm,baseline=c]
@@ -4068,15 +4097,63 @@
%
% \section{Other features}
%
+% \subsection{The key rounded-corners of \{NiceTabular\}}
+%
+% \label{tabular-rounded-corners}
+% \colorbox{yellow!50}{\textbf{New 6.18}}\par\nobreak
+%
+% \smallskip
+% The key |rounded-corners| that we will descrite now has no direct link with
+% the key |corners| (which is used to specify ``empty corners'') described in
+% the part~\ref{corners}, p.~\pageref{corners}.
+%
+% \smallskip
+% The environment |{NiceTabular}| provides also a key |rounded-corners| which
+% specify that the tabular should have rounded corners 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.}). More precisely, that
+% key has two effects that we describe now.
+% \begin{itemize}
+% \item All the commands for coloring the cells, columns and rows (in the
+% |\CodeBefore| but also directly in the array if the key |colortbl-like| is
+% used) will respect those rounded corners.
+%
+% \item When the key |hvlines| is used, the exterior rules will be drawn with
+% rounded corners.
+% \end{itemize}
+% \bigskip
+% \begin{BVerbatim}[baseline=c,boxwidth=9cm]
+% \begin{NiceTabular}
+% [hvlines,~emphase#rounded-corners@]
+% {ccc}
+% \CodeBefore
+% \rowcolor{red!15}{1}
+% \Body
+% Last name & First name & Profession \\
+% Arvy & Jacques & Physicist \\
+% Jalon & Amandine & Physicist
+% \end{NiceTabular}
+% \end{BVerbatim}
+% \begin{NiceTabular}{ccc}[hvlines,rounded-corners]
+% \CodeBefore
+% \rowcolor{red!15}{1}
+% \Body
+% Last name & First name & Profession \\
+% Arvy & Jacques & Physicist \\
+% Jalon & Amandine & Physicist
+% \end{NiceTabular}
+%
+%
% \subsection{Command \textbackslash ShowCellNames}
%
% The command |\ShowCellNames|, which may be used in the |\CodeBefore| and in
-% the |\CodeAfter| display the name (with the form $i$-$j$) of each cell. When
+% the |\CodeAfter| displays the name (with the form $i$-$j$) of each cell. When
% used in the |\CodeAfter|, that command applies a semi-transparent white
% rectangle to fade the array (caution: some \textsc{pdf} readers don't support
% transparency).
%
+% \medskip
% \begin{BVerbatim}[baseline=c,boxwidth=10.6cm]
% \begin{NiceTabular}{ccc}[hvlines,cell-space-limits=3pt]
% \Block{2-2}{} & & test \\
@@ -4858,7 +4935,7 @@
% \hline
% u_n &-& u_0 &=& nr \\
% \CodeAfter
-% \tikz[very thick, red, opacity=0.4,name suffix = -medium]
+% \tikz[very thick, red, opacity=0.4, name suffix = -medium]
% \draw (1-1.north west) -- (2-3.south east)
% (2-1.north west) -- (3-3.south east)
% (3-1.north west) -- (4-3.south east)
@@ -4878,7 +4955,7 @@
% \hline
% u_n &-& u_0 &=& nr \\
% \CodeAfter
-% \tikz[very thick, red, opacity=0.4,name suffix = -medium]
+% \tikz[very thick, red, opacity=0.4, name suffix = -medium]
% \draw (1-1.north west) -- (2-3.south east)
% (2-1.north west) --(3-3.south east)
% (3-1.north west) -- (4-3.south east)
@@ -6200,7 +6277,7 @@
% this matrix, we can use the previous technique three times.
%
% \begin{Verbatim}
-% \[\begin{pNiceArray}{ccc}[last-col]
+% \[\begin{pNiceArray}{ccc}[last-col, margin = 2pt]
% \CodeBefore [create-cell-nodes]
% \begin{tikzpicture}
% ~emphase# \node [highlight = (1-1) (1-3)] {} ;@
@@ -6215,7 +6292,7 @@
% \end{Verbatim}
%
%
-% \[\begin{pNiceArray}{ccc}[last-col]
+% \[\begin{pNiceArray}{ccc}[last-col, margin = 2pt]
% \CodeBefore [create-cell-nodes]
% \begin{tikzpicture}
% \node [highlight = (1-1) (1-3)] {} ;
@@ -6233,7 +6310,7 @@
% nodes'' instead of the ``normal nodes''.
%
% \begin{Verbatim}
-% \[\begin{pNiceArray}{ccc}[last-col,create-medium-nodes]
+% \[\begin{pNiceArray}{ccc}[last-col, margin = 2pt, create-medium-nodes]
% \CodeBefore [create-cell-nodes]
% \begin{tikzpicture} ~emphase#[name suffix = -medium]@
% \node [highlight = (1-1) (1-3)] {} ;
@@ -6248,7 +6325,7 @@
% \end{Verbatim}
%
%
-%\[\begin{pNiceArray}{ccc}[last-col,create-medium-nodes]
+%\[\begin{pNiceArray}{ccc}[last-col, margin = 2pt, create-medium-nodes]
% \CodeBefore [create-cell-nodes]
% \begin{tikzpicture} [name suffix = -medium]
% \node [highlight = (1-1) (1-3)] {} ;
@@ -6597,27 +6674,25 @@
% \end{macrocode}
%
% \bigskip
-% Here, the box |\l_tmpa_box| will be used as sandbox to take our security test.
+% Here, the box |\l_tmpa_box| will be used as sandbox to take our security test.
+% This code has benne modified in version 6.18 (see question 682891 on TeX
+% StackExchange).
% \begin{macrocode}
-\hook_gput_code:nnn { begindocument } { . }
+\hook_gput_code:nnn { begindocument / after } { . }
{
\@ifpackageloaded { mdwtab }
{ \@@_fatal:n { mdwtab~loaded } }
{
- \@ifpackageloaded { fontspec }
- { }
+ \bool_if:NF \c_@@_no_test_for_array_bool
{
- \bool_if:NF \c_@@_no_test_for_array_bool
- {
- \group_begin:
- \hbox_set:Nn \l_tmpa_box
- {
- \begin { tabular } { c > { \@@_security_test:n } c c }
- text & & text
- \end { tabular }
- }
- \group_end:
- }
+ \group_begin:
+ \hbox_set:Nn \l_tmpa_box
+ {
+ \begin { tabular } { c > { \@@_security_test:n } c c }
+ text & & text
+ \end { tabular }
+ }
+ \group_end:
}
}
}
@@ -7174,6 +7249,13 @@
% \end{macrocode}
%
% \bigskip
+% The following dimension will be used by the command |\Block| for the blocks
+% with a key of vertical position equal to |T| or |B|.
+% \begin{macrocode}
+\dim_new:N \l_@@_block_ysep_dim
+% \end{macrocode}
+%
+% \bigskip
% The following dimension correspond to the key |width| (which may be fixed in
% |\NiceMatrixOptions| but also in an environment |{NiceTabular}|).
% \begin{macrocode}
@@ -7377,6 +7459,9 @@
% \end{macrocode}
%
% \bigskip
+% The value of the key |code-before| will be added to the left of
+% |\g_@@_pre_code_before_tl|. Idem for the code between |\CodeBefore| and
+% |\Body|.
% \begin{macrocode}
\tl_new:N \g_nicematrix_code_before_tl
\tl_new:N \g_@@_pre_code_before_tl
@@ -7586,7 +7671,7 @@
%
% \medskip
% The following flag will be raised if the key |width| is used in an environment
-% |{NiceTabular}| (not in a comamnd |\NiceMatrixOptions|). You use it to raise
+% |{NiceTabular}| (not in a command |\NiceMatrixOptions|). You use it to raise
% an error when this key is used while no column |X| is used.
% \begin{macrocode}
\bool_new:N \l_@@_width_used_bool
@@ -7648,6 +7733,15 @@
% |corners| is used).
%
% \medskip
+% The following dimension corresponds to the key |rounded-corners| available in
+% an individual environment |{NiceTabular}|. When that key is used, a clipping
+% is applied in the |\CodeBefore| of the environment in order to have rounded
+% corners for the potential colored panels.
+% \begin{macrocode}
+\dim_new:N \l_@@_tab_rounded_corners_dim
+% \end{macrocode}
+%
+% \medskip
% The following token list correspond to the key |color| of the command |\Block|
% and also the key |color| of the command |\RowStyle|.
% \begin{macrocode}
@@ -7712,12 +7806,21 @@
\dim_new:N \l_@@_submatrix_left_xshift_dim
\dim_new:N \l_@@_submatrix_right_xshift_dim
\clist_new:N \l_@@_hlines_clist
-\clist_new:N \l_@@_vlines_clist
+\clist_new:N \l_@@_vlines_clist
\clist_new:N \l_@@_submatrix_hlines_clist
\clist_new:N \l_@@_submatrix_vlines_clist
% \end{macrocode}
%
+% \medskip
+% The following key is set when the keys |hvlines| and |hvlines-except-borders|
+% are used. It's used only to change slightly the clipping path set by the key
+% |rounded-corners| (for a |{tabular}|).
+% \begin{macrocode}
+\bool_new:N \l_@@_hvlines_bool
+% \end{macrocode}
+%
%
+%
% \bigskip
% The following flag will be used by (for instance) |\@@_vline_ii:|.
% When |\l_@@_dotted_bool| is |true|, a dotted line (with our system) will be drawn.
@@ -8475,6 +8578,7 @@
% \begin{macrocode}
\tl_new:N \l_@@_delimiters_color_tl
% \end{macrocode}
+%
%
% \bigskip
% Sometimes, we want to have several arrays vertically juxtaposed in order to
@@ -8619,6 +8723,7 @@
vlines-in-sub-matrix .value_required:n = true ,
hvlines .code:n =
{
+ \bool_set_true:N \l_@@_hvlines_bool
\clist_set:Nn \l_@@_vlines_clist { all }
\clist_set:Nn \l_@@_hlines_clist { all }
} ,
@@ -8626,6 +8731,7 @@
{
\clist_set:Nn \l_@@_vlines_clist { all }
\clist_set:Nn \l_@@_hlines_clist { all }
+ \bool_set_true:N \l_@@_hvlines_bool
\bool_set_true:N \l_@@_except_borders_bool
} ,
parallelize-diags .bool_set:N = \l_@@_parallelize_diags_bool ,
@@ -8996,6 +9102,8 @@
width .code:n = \dim_set:Nn \l_@@_width_dim { #1 }
\bool_set_true:N \l_@@_width_used_bool ,
width .value_required:n = true ,
+ rounded-corners .dim_set:N = \l_@@_tab_rounded_corners_dim ,
+ rounded-corners .default:n = 4 pt ,
notes .code:n = \keys_set:nn { NiceMatrix / notes } { #1 } ,
tabularnote .tl_gset:N = \g_@@_tabularnote_tl ,
tabularnote .value_required:n = true ,
@@ -9745,7 +9853,7 @@
\cs_set_eq:NN \Block \@@_Block:
\cs_set_eq:NN \rotate \@@_rotate:
\cs_set_eq:NN \OnlyMainNiceMatrix \@@_OnlyMainNiceMatrix:n
- \cs_set_eq:NN \dotfill \@@_old_dotfill:
+ \cs_set_eq:NN \dotfill \@@_dotfill:
\cs_set_eq:NN \CodeAfter \@@_CodeAfter:
\cs_set_eq:NN \diagbox \@@_diagbox:nn
\cs_set_eq:NN \NotEmpty \@@_NotEmpty:
@@ -10989,7 +11097,11 @@
\keys_set:nn { NiceMatrix / ColumnTypes } { #1 }
\@@_patch_preamble:n
}
- { \@@_fatal:nn { unknown~column~type } { #1 } }
+ {
+ \tl_if_eq:nnT { #1 } { S }
+ { \@@_fatal:n { unknown~column~type~S } }
+ { \@@_fatal:nn { unknown~column~type } { #1 } }
+ }
}
}
}
@@ -12027,7 +12139,11 @@
\@@_W: { \@@_patch_m_preamble_v:nnnn { \@@_special_W: } #1 }
\q_stop { }
}
- { \@@_fatal:nn { unknown~column~type } { #1 } }
+ {
+ \tl_if_eq:nnT { #1 } { S }
+ { \@@_fatal:n { unknown~column~type~S } }
+ { \@@_fatal:nn { unknown~column~type } { #1 } }
+ }
}
% \end{macrocode}
%
@@ -13294,6 +13410,36 @@
{ \dim_set_eq:NN \l_@@_width_dim \linewidth }
\str_gset:Nn \g_@@_name_env_str { NiceTabular }
\keys_set:nn { NiceMatrix / NiceTabular } { #1 , #3 }
+ \int_compare:nNnT \l_@@_tab_rounded_corners_dim > \c_zero_dim
+ {
+ \bool_if:NT \l_@@_hvlines_bool
+ {
+ \bool_set_true:N \l_@@_except_borders_bool
+ % we should try to be more efficient in the number of lines of code here
+ \tl_if_empty:NTF \l_@@_rules_color_tl
+ {
+ \tl_gput_right:Nn \g_@@_pre_code_after_tl
+ {
+ \@@_stroke_block:nnn
+ { rounded-corners = \dim_use:N \l_@@_tab_rounded_corners_dim }
+ { 1-1 }
+ { \int_use:N \c at iRow - \int_use:N \c at jCol }
+ }
+ }
+ {
+ \tl_gput_right:Nn \g_@@_pre_code_after_tl
+ {
+ \@@_stroke_block:nnn
+ {
+ rounded-corners = \dim_use:N \l_@@_tab_rounded_corners_dim ,
+ draw = \l_@@_rules_color_tl
+ }
+ { 1-1 }
+ { \int_use:N \c at iRow - \int_use:N \c at jCol }
+ }
+ }
+ }
+ }
\tl_if_empty:NF \l_@@_short_caption_tl
{
\tl_if_empty:NT \l_@@_caption_tl
@@ -15748,19 +15894,115 @@
{
\pgfpicture
\pgf at relevantforpicturesizefalse
+% \end{macrocode}
+% If the final user has used the key |rounded-corners| for the environment
+% |{NiceTabular}|, we will clip to a rectangle with rounded corners before
+% filling the rectangles.
+% \begin{macrocode}
+ \dim_compare:nNnT \l_@@_tab_rounded_corners_dim > \c_zero_dim
+ {
+ \pgfsetcornersarced
+ {
+ \pgfpoint
+ { \l_@@_tab_rounded_corners_dim }
+ { \l_@@_tab_rounded_corners_dim }
+ }
+% \end{macrococde}
+% Because we want \pkg{nicematrix} compatible with arrays constructed by
+% \pkg{array}, the nodes for the rows and columns (that is to say the nodes
+% |row-|\textsl{i} and |col-|\textsl{j}) have not always the expected position,
+% that is to say, there is sometimes a slight shifting of something such as
+% |\arrayrulewidth|. Now, for the clipping, we have to change slightly the
+% position of that clipping whether a rounded rectangle around the array is
+% required. That's the point which is tested in the following line.
+% \begin{macrocode}
+ \bool_if:NTF \l_@@_hvlines_bool
+ {
+ \pgfpathrectanglecorners
+ {
+ \pgfpointadd
+ { \@@_qpoint:n { row-1 } }
+ { \pgfpoint { 0.5 \arrayrulewidth } { \c_zero_dim } }
+ }
+ {
+ \pgfpointadd
+ {
+ \@@_qpoint:n
+ { \int_eval:n { \int_max:nn \c at iRow \c at jCol + 1 } }
+ }
+ { \pgfpoint \c_zero_dim { 0.5 \arrayrulewidth } }
+ }
+ }
+ {
+ \pgfpathrectanglecorners
+ { \@@_qpoint:n { row-1 } }
+ {
+ \pgfpointadd
+ {
+ \@@_qpoint:n
+ { \int_eval:n { \int_max:nn \c at iRow \c at jCol + 1 } }
+ }
+ { \pgfpoint \c_zero_dim \arrayrulewidth }
+ }
+ }
+ \pgfusepath { clip }
+ }
\seq_map_indexed_inline:Nn \g_@@_colors_seq
{
- \color ##2
- \use:c { g_@@_color _ ##1 _tl }
- \tl_gclear:c { g_@@_color _ ##1 _tl }
- \pgfusepath { fill }
+ \begin { pgfscope }
+ \@@_color_opacity ##2
+ \use:c { g_@@_color _ ##1 _tl }
+ \tl_gclear:c { g_@@_color _ ##1 _tl }
+ \pgfusepath { fill }
+ \end { pgfscope }
}
\endpgfpicture
}
% \end{macrocode}
-%
%
+% \bigskip
+% The following command will extract the potential key |opacity| in its optional
+% argument (between square brackets) and (of course) then apply the command |\color|.
% \begin{macrocode}
+\cs_new_protected:Npn \@@_color_opacity
+ {
+ \peek_meaning:NTF [
+ { \@@_color_opacity:w }
+ { \@@_color_opacity:w [ ] }
+ }
+% \end{macrocode}
+%
+% \bigskip
+% The command |\@@_color_opacity:w| takes in as argument only the optional
+% argument. One may consider that the second argument (the actual definition of
+% the color) is provided by currification.
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_color_opacity:w [ #1 ]
+ {
+ \tl_clear:N \l_tmpa_tl
+ \keys_set_known:nnN { nicematrix / color-opacity } { #1 } \l_tmpb_tl
+% \end{macrocode}
+% |\l_tmpa_tl| (if not empty) is now the opacity and |\l_tmpb_tl| (if not empty) is now the colorimetric space.
+% \begin{macrocode}
+ \tl_if_empty:NF \l_tmpa_tl { \exp_args:NV \pgfsetfillopacity \l_tmpa_tl }
+ \tl_if_empty:NTF \l_tmpb_tl
+ { \@declaredcolor }
+ { \use:x { \exp_not:N \@undeclaredcolor [ \l_tmpb_tl ] } }
+ }
+% \end{macrocode}
+%
+% \bigskip
+% The following set of keys is used by the command |\@@_color_opacity:wn|.
+% \begin{macrocode}
+\keys_define:nn { nicematrix / color-opacity }
+ {
+ opacity .tl_set:N = \l_tmpa_tl ,
+ opacity .value_required:n = true
+ }
+% \end{macrocode}
+%
+% \bigskip
+% \begin{macrocode}
\cs_new_protected:Npn \@@_cartesian_color:nn #1 #2
{
\tl_set:Nn \l_@@_rows_tl { #1 }
@@ -18237,7 +18479,16 @@
% because we want to be able to take into account a potential instruction of
% color of the font in |\g_@@_row_style_tl|.
% \begin{macrocode}
- \int_compare:nNnT { #1 } = 1 \g_@@_row_style_tl
+ \int_compare:nNnT { #1 } = 1
+ {
+ \int_compare:nNnTF \c at iRow = 0
+ \l_@@_code_for_first_row_tl
+ {
+ \int_compare:nNnT \c at iRow = \l_@@_last_row_int
+ \l_@@_code_for_last_row_tl
+ }
+ \g_@@_row_style_tl
+ }
\group_begin:
\bool_if:NF \l_@@_respect_arraystretch_bool
{ \cs_set:Npn \arraystretch { 1 } }
@@ -18897,20 +19148,6 @@
}
% \end{macrocode}
%
-% We take into account the case of a block of one row in the ``first row'' or
-% the ``last row''.
-% \begin{macrocode}
- \int_compare:nNnT { #1 } = 0
- {
- \int_compare:nNnT { #3 } = 0
- { \l_@@_code_for_first_row_tl }
- }
- \int_compare:nNnT { #1 } = \l_@@_last_row_int
- {
- \int_compare:nNnT { #3 } = \l_@@_last_row_int
- { \l_@@_code_for_last_row_tl }
- }
-% \end{macrocode}
%
% \medskip
% Now, we will put the label of the block.
@@ -18980,7 +19217,11 @@
}
{ \l_tmpa_tl }
}
- \pgfset { inner~xsep = \c_zero_dim }
+ \pgfset
+ {
+ inner~xsep = \c_zero_dim ,
+ inner~ysep = \l_@@_block_ysep_dim
+ }
\pgfnode
{ rectangle }
{ \l_tmpa_tl }
@@ -19484,12 +19725,8 @@
% case of use of |\dotfill| ``internally'' in the cell (e.g. |\hbox to 1cm {\dotfill}|).
% \begin{macrocode}
\@@_old_dotfill
- \bool_if:NT \l_@@_NiceTabular_bool
- { \group_insert_after:N \@@_dotfill_ii: }
- { \group_insert_after:N \@@_dotfill_i: }
+ \tl_gput_right:Nn \g_@@_cell_after_hook_tl \@@_dotfill_i:
}
-\cs_new_protected:Npn \@@_dotfill_i: { \group_insert_after:N \@@_dotfill_ii: }
-\cs_new_protected:Npn \@@_dotfill_ii: { \group_insert_after:N \@@_dotfill_iii: }
% \end{macrocode}
% Now, if the box if not empty (unfornately, we can't actually test whether the
% box is empty and that's why we only consider it's width), we insert
@@ -19496,7 +19733,7 @@
% |\@@_dotfill| (which is the saved version of |\dotfill|) in the cell of the
% array, and it will extend, since it is no longer in |\l_@@_cell_box|.
% \begin{macrocode}
-\cs_new_protected:Npn \@@_dotfill_iii:
+\cs_new_protected:Npn \@@_dotfill_i:
{ \dim_compare:nNnT { \box_wd:N \l_@@_cell_box } = \c_zero_dim \@@_old_dotfill }
% \end{macrocode}
%
@@ -20946,19 +21183,38 @@
\seq_if_in:NVTF \g_@@_types_of_matrix_seq \g_@@_name_env_str
{
\int_compare:nNnTF \l_@@_last_col_int = { -2 }
- { \@@_fatal:n { too~much~cols~for~matrix } }
- {
- \int_compare:nNnTF \l_@@_last_col_int = { -1 }
- { \@@_fatal:n { too~much~cols~for~matrix } }
- {
- \bool_if:NF \l_@@_last_col_without_value_bool
- { \@@_fatal:n { too~much~cols~for~matrix~with~last~col } }
- }
- }
+ { \@@_fatal:n { too~much~cols~for~matrix } }
+ {
+ \int_compare:nNnTF \l_@@_last_col_int = { -1 }
+ { \@@_fatal:n { too~much~cols~for~matrix } }
+ {
+ \bool_if:NF \l_@@_last_col_without_value_bool
+ { \@@_fatal:n { too~much~cols~for~matrix~with~last~col } }
+ }
+ }
}
- { \@@_fatal:n { too~much~cols~for~array } }
+ {
+ \bool_lazy_and:nnTF
+ { \bool_if_p:n \c_@@_tabularx_loaded_bool }
+ { ! \str_if_eq_p:Vn \g_@@_name_env_str { NiceTabularX } }
+ {
+ \int_compare:nNnTF \c at iRow = \c_zero_int
+ { \@@_fatal:n { X~columns~with~tabularx } }
+ {
+ \@@_fatal:nn { too~much~cols~for~array }
+ {
+ However,~this~message~may~be~erroneous:~
+ maybe~you~have~used~X~columns~while~'tabularx'~is~loaded,~
+ ~which~is~forbidden~(however,~it's~still~possible~to~use~
+ X~columns~in~{NiceTabularX}).
+ }
+ }
+ }
+ { \@@_fatal:nn { too~much~cols~for~array } { } }
+ }
}
% \end{macrocode}
+%
%
% The following command must \emph{not} be protected since it's used in an error message.
% \begin{macrocode}
@@ -21025,12 +21281,22 @@
~you~try~to~use~more~columns~than~allowed~by~your~
\@@_full_name_env:.\@@_message_hdotsfor:\ The~maximal~number~of~columns~is~
\int_use:N \g_@@_static_num_of_col_int\
- ~(plus~the~potential~exterior~ones).~
+ ~(plus~the~potential~exterior~ones).~#1
This~error~is~fatal.
}
% \end{macrocode}
%
-
+% \medskip
+% \begin{macrocode}
+\@@_msg_new:nn { X~columns~with~tabularx }
+ {
+ There~is~a~problem.\\
+ You~have~probably~used~X~columns~in~your~environment~{\g_@@_name_env_str}.~
+ That's~not~allowed~because~'tabularx'~is~loaded~(however,~you~can~use~X~columns~
+ in~an~environment~{NiceTabularX}).\\
+ This~error~is~fatal.
+ }
+% \end{macrocode}
%
% \begin{macrocode}
\@@_msg_new:nn { columns~not~used }
@@ -21538,6 +21804,17 @@
% \end{macrocode}
%
% \begin{macrocode}
+\@@_msg_new:nn { unknown~column~type~S }
+ {
+ Bad~column~type.\\
+ The~column~type~'S'~in~your~\@@_full_name_env:\ is~unknown. \\
+ If~you~want~to~use~the~column~type~'S'~of~siunitx,~you~should~
+ load~that~package. \\
+ This~error~is~fatal.
+ }
+% \end{macrocode}
+%
+% \begin{macrocode}
\@@_msg_new:nn { tabularnote~forbidden }
{
Forbidden~command.\\
@@ -22061,6 +22338,7 @@
renew-dots,~
respect-arraystretch,~
right-margin,~
+ rounded-corners,~
rules~(with~the~subkeys~'color'~and~'width'),~
short-caption,~
t,~
@@ -22116,6 +22394,19 @@
% \nolinkurl{https:www.tug.org/svn/texlive/trunk/Master/texmf-dist/tex/latex/nicematrix/nicematrix.sty}
% }
%
+% \subsection*{Changes between version 6.17 and 6.18}
+%
+% New key |opacity| in the commands to color cells, rows and columns.
+%
+% New key |rounded-corners| for a whole tabular.
+%
+%
+% \subsection*{Changes between version 6.16 and 6.17}
+%
+% New PGF/Tikz style |nicematrix/cell-node|.
+%
+% New key |pgf-node-code|
+%
% \subsection*{Changes between version 6.15 and 6.16}
%
% It's now possible to put any LaTeX extensible delimiter (|\lgroup|, |\langle|,
Modified: trunk/Master/texmf-dist/tex/latex/nicematrix/nicematrix.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/nicematrix/nicematrix.sty 2023-04-20 19:59:42 UTC (rev 66903)
+++ trunk/Master/texmf-dist/tex/latex/nicematrix/nicematrix.sty 2023-04-20 19:59:57 UTC (rev 66904)
@@ -18,8 +18,8 @@
%% and version 1.3 or later is part of all distributions of
%% LaTeX version 2005/12/01 or later.
%%
-\def\myfileversion{6.17}
-\def\myfiledate{2023/03/31}
+\def\myfileversion{6.18}
+\def\myfiledate{2023/04/19}
\RequirePackage{pgfcore}
@@ -98,25 +98,21 @@
\peek_meaning:NF \unskip { \__nicematrix_error:n { Internal~error } }
#1
}
-\hook_gput_code:nnn { begindocument } { . }
+\hook_gput_code:nnn { begindocument / after } { . }
{
\@ifpackageloaded { mdwtab }
{ \__nicematrix_fatal:n { mdwtab~loaded } }
{
- \@ifpackageloaded { fontspec }
- { }
+ \bool_if:NF \c__nicematrix_no_test_for_array_bool
{
- \bool_if:NF \c__nicematrix_no_test_for_array_bool
- {
- \group_begin:
- \hbox_set:Nn \l_tmpa_box
- {
- \begin { tabular } { c > { \__nicematrix_security_test:n } c c }
- text & & text
- \end { tabular }
- }
- \group_end:
- }
+ \group_begin:
+ \hbox_set:Nn \l_tmpa_box
+ {
+ \begin { tabular } { c > { \__nicematrix_security_test:n } c c }
+ text & & text
+ \end { tabular }
+ }
+ \group_end:
}
}
}
@@ -371,6 +367,7 @@
\dim_new:N \g__nicematrix_blocks_wd_dim
\dim_new:N \g__nicematrix_blocks_ht_dim
\dim_new:N \g__nicematrix_blocks_dp_dim
+\dim_new:N \l__nicematrix_block_ysep_dim
\dim_new:N \l__nicematrix_width_dim
\seq_new:N \g__nicematrix_names_seq
\bool_new:N \l__nicematrix_in_env_bool
@@ -457,6 +454,7 @@
\seq_new:N \l__nicematrix_tikz_seq
\clist_new:N \l__nicematrix_borders_clist
\dim_new:N \l__nicematrix_rounded_corners_dim
+\dim_new:N \l__nicematrix_tab_rounded_corners_dim
\tl_new:N \l__nicematrix_color_tl
\dim_new:N \l__nicematrix_line_width_dim
\str_new:N \l__nicematrix_hpos_block_str
@@ -475,6 +473,7 @@
\clist_new:N \l__nicematrix_vlines_clist
\clist_new:N \l__nicematrix_submatrix_hlines_clist
\clist_new:N \l__nicematrix_submatrix_vlines_clist
+\bool_new:N \l__nicematrix_hvlines_bool
\bool_new:N \l__nicematrix_dotted_bool
\bool_new:N \l__nicematrix_in_caption_bool
\int_new:N \l__nicematrix_first_row_int
@@ -848,6 +847,7 @@
vlines-in-sub-matrix .value_required:n = true ,
hvlines .code:n =
{
+ \bool_set_true:N \l__nicematrix_hvlines_bool
\clist_set:Nn \l__nicematrix_vlines_clist { all }
\clist_set:Nn \l__nicematrix_hlines_clist { all }
} ,
@@ -855,6 +855,7 @@
{
\clist_set:Nn \l__nicematrix_vlines_clist { all }
\clist_set:Nn \l__nicematrix_hlines_clist { all }
+ \bool_set_true:N \l__nicematrix_hvlines_bool
\bool_set_true:N \l__nicematrix_except_borders_bool
} ,
parallelize-diags .bool_set:N = \l__nicematrix_parallelize_diags_bool ,
@@ -1105,6 +1106,8 @@
width .code:n = \dim_set:Nn \l__nicematrix_width_dim { #1 }
\bool_set_true:N \l__nicematrix_width_used_bool ,
width .value_required:n = true ,
+ rounded-corners .dim_set:N = \l__nicematrix_tab_rounded_corners_dim ,
+ rounded-corners .default:n = 4 pt ,
notes .code:n = \keys_set:nn { NiceMatrix / notes } { #1 } ,
tabularnote .tl_gset:N = \g__nicematrix_tabularnote_tl ,
tabularnote .value_required:n = true ,
@@ -1505,7 +1508,7 @@
\cs_set_eq:NN \Block \__nicematrix_Block:
\cs_set_eq:NN \rotate \__nicematrix_rotate:
\cs_set_eq:NN \OnlyMainNiceMatrix \__nicematrix_OnlyMainNiceMatrix:n
- \cs_set_eq:NN \dotfill \__nicematrix_old_dotfill:
+ \cs_set_eq:NN \dotfill \__nicematrix_dotfill:
\cs_set_eq:NN \CodeAfter \__nicematrix_CodeAfter:
\cs_set_eq:NN \diagbox \__nicematrix_diagbox:nn
\cs_set_eq:NN \NotEmpty \__nicematrix_NotEmpty:
@@ -2098,7 +2101,11 @@
\keys_set:nn { NiceMatrix / ColumnTypes } { #1 }
\__nicematrix_patch_preamble:n
}
- { \__nicematrix_fatal:nn { unknown~column~type } { #1 } }
+ {
+ \tl_if_eq:nnT { #1 } { S }
+ { \__nicematrix_fatal:n { unknown~column~type~S } }
+ { \__nicematrix_fatal:nn { unknown~column~type } { #1 } }
+ }
}
}
}
@@ -2710,7 +2717,11 @@
\__nicematrix_W: { \__nicematrix_patch_m_preamble_v:nnnn { \__nicematrix_special_W: } #1 }
\q_stop { }
}
- { \__nicematrix_fatal:nn { unknown~column~type } { #1 } }
+ {
+ \tl_if_eq:nnT { #1 } { S }
+ { \__nicematrix_fatal:n { unknown~column~type~S } }
+ { \__nicematrix_fatal:nn { unknown~column~type } { #1 } }
+ }
}
\cs_new_protected:Npn \__nicematrix_patch_m_preamble_i:n #1
{
@@ -3482,6 +3493,36 @@
{ \dim_set_eq:NN \l__nicematrix_width_dim \linewidth }
\str_gset:Nn \g__nicematrix_name_env_str { NiceTabular }
\keys_set:nn { NiceMatrix / NiceTabular } { #1 , #3 }
+ \int_compare:nNnT \l__nicematrix_tab_rounded_corners_dim > \c_zero_dim
+ {
+ \bool_if:NT \l__nicematrix_hvlines_bool
+ {
+ \bool_set_true:N \l__nicematrix_except_borders_bool
+ % we should try to be more efficient in the number of lines of code here
+ \tl_if_empty:NTF \l__nicematrix_rules_color_tl
+ {
+ \tl_gput_right:Nn \g__nicematrix_pre_code_after_tl
+ {
+ \__nicematrix_stroke_block:nnn
+ { rounded-corners = \dim_use:N \l__nicematrix_tab_rounded_corners_dim }
+ { 1-1 }
+ { \int_use:N \c at iRow - \int_use:N \c at jCol }
+ }
+ }
+ {
+ \tl_gput_right:Nn \g__nicematrix_pre_code_after_tl
+ {
+ \__nicematrix_stroke_block:nnn
+ {
+ rounded-corners = \dim_use:N \l__nicematrix_tab_rounded_corners_dim ,
+ draw = \l__nicematrix_rules_color_tl
+ }
+ { 1-1 }
+ { \int_use:N \c at iRow - \int_use:N \c at jCol }
+ }
+ }
+ }
+ }
\tl_if_empty:NF \l__nicematrix_short_caption_tl
{
\tl_if_empty:NT \l__nicematrix_caption_tl
@@ -4997,15 +5038,76 @@
{
\pgfpicture
\pgf at relevantforpicturesizefalse
+ \dim_compare:nNnT \l__nicematrix_tab_rounded_corners_dim > \c_zero_dim
+ {
+ \pgfsetcornersarced
+ {
+ \pgfpoint
+ { \l__nicematrix_tab_rounded_corners_dim }
+ { \l__nicematrix_tab_rounded_corners_dim }
+ }
+ \bool_if:NTF \l__nicematrix_hvlines_bool
+ {
+ \pgfpathrectanglecorners
+ {
+ \pgfpointadd
+ { \__nicematrix_qpoint:n { row-1 } }
+ { \pgfpoint { 0.5 \arrayrulewidth } { \c_zero_dim } }
+ }
+ {
+ \pgfpointadd
+ {
+ \__nicematrix_qpoint:n
+ { \int_eval:n { \int_max:nn \c at iRow \c at jCol + 1 } }
+ }
+ { \pgfpoint \c_zero_dim { 0.5 \arrayrulewidth } }
+ }
+ }
+ {
+ \pgfpathrectanglecorners
+ { \__nicematrix_qpoint:n { row-1 } }
+ {
+ \pgfpointadd
+ {
+ \__nicematrix_qpoint:n
+ { \int_eval:n { \int_max:nn \c at iRow \c at jCol + 1 } }
+ }
+ { \pgfpoint \c_zero_dim \arrayrulewidth }
+ }
+ }
+ \pgfusepath { clip }
+ }
\seq_map_indexed_inline:Nn \g__nicematrix_colors_seq
{
- \color ##2
- \use:c { g__nicematrix_color _ ##1 _tl }
- \tl_gclear:c { g__nicematrix_color _ ##1 _tl }
- \pgfusepath { fill }
+ \begin { pgfscope }
+ \__nicematrix_color_opacity ##2
+ \use:c { g__nicematrix_color _ ##1 _tl }
+ \tl_gclear:c { g__nicematrix_color _ ##1 _tl }
+ \pgfusepath { fill }
+ \end { pgfscope }
}
\endpgfpicture
}
+\cs_new_protected:Npn \__nicematrix_color_opacity
+ {
+ \peek_meaning:NTF [
+ { \__nicematrix_color_opacity:w }
+ { \__nicematrix_color_opacity:w [ ] }
+ }
+\cs_new_protected:Npn \__nicematrix_color_opacity:w [ #1 ]
+ {
+ \tl_clear:N \l_tmpa_tl
+ \keys_set_known:nnN { nicematrix / color-opacity } { #1 } \l_tmpb_tl
+ \tl_if_empty:NF \l_tmpa_tl { \exp_args:NV \pgfsetfillopacity \l_tmpa_tl }
+ \tl_if_empty:NTF \l_tmpb_tl
+ { \@declaredcolor }
+ { \use:x { \exp_not:N \@undeclaredcolor [ \l_tmpb_tl ] } }
+ }
+\keys_define:nn { nicematrix / color-opacity }
+ {
+ opacity .tl_set:N = \l_tmpa_tl ,
+ opacity .value_required:n = true
+ }
\cs_new_protected:Npn \__nicematrix_cartesian_color:nn #1 #2
{
\tl_set:Nn \l__nicematrix_rows_tl { #1 }
@@ -6470,7 +6572,16 @@
\tl_if_empty:NTF \l__nicematrix_color_tl
{ \int_compare:nNnT { #2 } = 1 \set at color }
{ \__nicematrix_color:V \l__nicematrix_color_tl }
- \int_compare:nNnT { #1 } = 1 \g__nicematrix_row_style_tl
+ \int_compare:nNnT { #1 } = 1
+ {
+ \int_compare:nNnTF \c at iRow = 0
+ \l__nicematrix_code_for_first_row_tl
+ {
+ \int_compare:nNnT \c at iRow = \l__nicematrix_last_row_int
+ \l__nicematrix_code_for_last_row_tl
+ }
+ \g__nicematrix_row_style_tl
+ }
\group_begin:
\bool_if:NF \l__nicematrix_respect_arraystretch_bool
{ \cs_set:Npn \arraystretch { 1 } }
@@ -6917,16 +7028,6 @@
{ south~east }
}
}
- \int_compare:nNnT { #1 } = 0
- {
- \int_compare:nNnT { #3 } = 0
- { \l__nicematrix_code_for_first_row_tl }
- }
- \int_compare:nNnT { #1 } = \l__nicematrix_last_row_int
- {
- \int_compare:nNnT { #3 } = \l__nicematrix_last_row_int
- { \l__nicematrix_code_for_last_row_tl }
- }
\bool_lazy_any:nTF
{
{ \str_if_eq_p:Vn \l__nicematrix_vpos_of_block_str { c } }
@@ -6983,7 +7084,11 @@
}
{ \l_tmpa_tl }
}
- \pgfset { inner~xsep = \c_zero_dim }
+ \pgfset
+ {
+ inner~xsep = \c_zero_dim ,
+ inner~ysep = \l__nicematrix_block_ysep_dim
+ }
\pgfnode
{ rectangle }
{ \l_tmpa_tl }
@@ -7343,13 +7448,9 @@
\cs_new_protected:Npn \__nicematrix_dotfill:
{
\__nicematrix_old_dotfill
- \bool_if:NT \l__nicematrix_NiceTabular_bool
- { \group_insert_after:N \__nicematrix_dotfill_ii: }
- { \group_insert_after:N \__nicematrix_dotfill_i: }
+ \tl_gput_right:Nn \g__nicematrix_cell_after_hook_tl \__nicematrix_dotfill_i:
}
-\cs_new_protected:Npn \__nicematrix_dotfill_i: { \group_insert_after:N \__nicematrix_dotfill_ii: }
-\cs_new_protected:Npn \__nicematrix_dotfill_ii: { \group_insert_after:N \__nicematrix_dotfill_iii: }
-\cs_new_protected:Npn \__nicematrix_dotfill_iii:
+\cs_new_protected:Npn \__nicematrix_dotfill_i:
{ \dim_compare:nNnT { \box_wd:N \l__nicematrix_cell_box } = \c_zero_dim \__nicematrix_old_dotfill }
\cs_new_protected:Npn \__nicematrix_diagbox:nn #1 #2
{
@@ -8325,17 +8426,35 @@
\seq_if_in:NVTF \g__nicematrix_types_of_matrix_seq \g__nicematrix_name_env_str
{
\int_compare:nNnTF \l__nicematrix_last_col_int = { -2 }
- { \__nicematrix_fatal:n { too~much~cols~for~matrix } }
- {
- \int_compare:nNnTF \l__nicematrix_last_col_int = { -1 }
- { \__nicematrix_fatal:n { too~much~cols~for~matrix } }
- {
- \bool_if:NF \l__nicematrix_last_col_without_value_bool
- { \__nicematrix_fatal:n { too~much~cols~for~matrix~with~last~col } }
- }
- }
+ { \__nicematrix_fatal:n { too~much~cols~for~matrix } }
+ {
+ \int_compare:nNnTF \l__nicematrix_last_col_int = { -1 }
+ { \__nicematrix_fatal:n { too~much~cols~for~matrix } }
+ {
+ \bool_if:NF \l__nicematrix_last_col_without_value_bool
+ { \__nicematrix_fatal:n { too~much~cols~for~matrix~with~last~col } }
+ }
+ }
}
- { \__nicematrix_fatal:n { too~much~cols~for~array } }
+ {
+ \bool_lazy_and:nnTF
+ { \bool_if_p:n \c__nicematrix_tabularx_loaded_bool }
+ { ! \str_if_eq_p:Vn \g__nicematrix_name_env_str { NiceTabularX } }
+ {
+ \int_compare:nNnTF \c at iRow = \c_zero_int
+ { \__nicematrix_fatal:n { X~columns~with~tabularx } }
+ {
+ \__nicematrix_fatal:nn { too~much~cols~for~array }
+ {
+ However,~this~message~may~be~erroneous:~
+ maybe~you~have~used~X~columns~while~'tabularx'~is~loaded,~
+ ~which~is~forbidden~(however,~it's~still~possible~to~use~
+ X~columns~in~{NiceTabularX}).
+ }
+ }
+ }
+ { \__nicematrix_fatal:nn { too~much~cols~for~array } { } }
+ }
}
\cs_new:Npn \__nicematrix_message_hdotsfor:
{
@@ -8383,10 +8502,17 @@
~you~try~to~use~more~columns~than~allowed~by~your~
\__nicematrix_full_name_env:.\__nicematrix_message_hdotsfor:\ The~maximal~number~of~columns~is~
\int_use:N \g__nicematrix_static_num_of_col_int\
- ~(plus~the~potential~exterior~ones).~
+ ~(plus~the~potential~exterior~ones).~#1
This~error~is~fatal.
}
-
+\__nicematrix_msg_new:nn { X~columns~with~tabularx }
+ {
+ There~is~a~problem.\\
+ You~have~probably~used~X~columns~in~your~environment~{\g__nicematrix_name_env_str}.~
+ That's~not~allowed~because~'tabularx'~is~loaded~(however,~you~can~use~X~columns~
+ in~an~environment~{NiceTabularX}).\\
+ This~error~is~fatal.
+ }
\__nicematrix_msg_new:nn { columns~not~used }
{
Columns~not~used.\\
@@ -8741,6 +8867,14 @@
is~unknown. \\
This~error~is~fatal.
}
+\__nicematrix_msg_new:nn { unknown~column~type~S }
+ {
+ Bad~column~type.\\
+ The~column~type~'S'~in~your~\__nicematrix_full_name_env:\ is~unknown. \\
+ If~you~want~to~use~the~column~type~'S'~of~siunitx,~you~should~
+ load~that~package. \\
+ This~error~is~fatal.
+ }
\__nicematrix_msg_new:nn { tabularnote~forbidden }
{
Forbidden~command.\\
@@ -9181,6 +9315,7 @@
renew-dots,~
respect-arraystretch,~
right-margin,~
+ rounded-corners,~
rules~(with~the~subkeys~'color'~and~'width'),~
short-caption,~
t,~
More information about the tex-live-commits
mailing list.