texlive[65911] Master/texmf-dist: nicematrix (19feb23)
commits+karl at tug.org
commits+karl at tug.org
Sun Feb 19 03:00:57 CET 2023
Revision: 65911
http://tug.org/svn/texlive?view=revision&revision=65911
Author: karl
Date: 2023-02-19 03:00:56 +0100 (Sun, 19 Feb 2023)
Log Message:
-----------
nicematrix (19feb23)
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-02-19 02:00:41 UTC (rev 65910)
+++ trunk/Master/texmf-dist/doc/latex/nicematrix/nicematrix-french.tex 2023-02-19 02:00:56 UTC (rev 65911)
@@ -151,7 +151,7 @@
\medskip
La plupart des fonctionnalités de \pkg{nicematrix} sont accessibles sans avoir à
-utiliser explicitement \textsc{pgf} ou Tikz (ce dernier n'est d'ailleurs pas
+utiliser explicitement \textsc{pgf} ou TikZ (ce dernier n'est d'ailleurs pas
chargé par défaut).
\medskip
@@ -487,36 +487,10 @@
\end{bNiceArray}$
-\medskip
-On peut régler le positionnement horizontal du bloc avec l'une des clés |l|, |c| et |r|.
-
-
-\medskip
-\begin{BVerbatim}[baseline=c,boxwidth=10.6cm]
-$\begin{bNiceArray}{cw{c}{1cm}c|c}[margin]
-\Block~emphase#[r]@{3-3}<\LARGE>{A} & & & 0 \\
-& & & \Vdots \\
-& & & 0 \\
-\hline
-0 & \Cdots& 0 & 0
-\end{bNiceArray}$
-\end{BVerbatim}
-$\begin{bNiceArray}{cw{c}{1cm}c|c}[margin]
-\Block[r]{3-3}<\LARGE>{A} & & & 0 \\
-& & & \Vdots \\
-& & & 0 \\
-\hline
-0 & \Cdots& 0 & 0
-\end{bNiceArray}$
-
-
-
\interitem
-La commande |\Block| accepte en fait en premier argument optionnel (entre
-crochets) une liste de couples \textsl{clé=valeur}. Les clés sont les suivantes :
+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 les clés |l|, |c| et |r| réglent le positionnement horizontal comme dit
-précédemment ;
\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
@@ -533,18 +507,16 @@
\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 les clés |t| et |b| réglent la ligne de base qui sera donnée au bloc quand
-celui-ci est constitué de plusieurs lignes (séparées par la commande |\\|) ;
-\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
+ 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
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é
+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é |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 :
@@ -551,12 +523,15 @@
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
+\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}).
\end{itemize}
+Il existe aussi des clés de positionnement horizontal et vertical du bloc qui
+sont décrites ci-dessous (cf. \ref{horizontal-bloc} p.~\pageref{horizontal-bloc}).
+
\interitem
\textbf{On doit remarquer que, par défaut, les blocs ne créent pas d'espace}. Il
n'y a exception que pour les blocs mono-rangée et les blocs mono-colonne comme
@@ -606,7 +581,8 @@
\item La spécification d'alignement horizontal donnée par le type de
colonne (|c|, |r| ou |l|) est prise en compte pour le bloc (mais le bloc peut
-avoir sa propre spécification d'alignement horizontal).
+avoir sa propre spécification d'alignement horizontal :
+cf.~\ref{horizontal-bloc} p.~\pageref{horizontal-bloc}).
\item Les spécifications de fontes imposées à une colonne via la construction
|>{...}| dans le préambule du tableau sont prises en compte pour les
@@ -653,8 +629,6 @@
la rangée en cours (comme le fait la commande standard |\multicolumn| de LaTeX).
-
-
\subsection{Les blocs mono-case}
Les blocs mono-case héritent des caractéristiques des blocs mono-colonne et
@@ -669,7 +643,7 @@
bloc sur plusieurs lignes.
\item On peut utiliser l'option d'alignement horizontal du bloc pour déroger à
-la consigne générale donnée dans le préambule pour cette colonne.
+la consigne générale donnée dans le préambule pour cette colonne (cf.~\ref{horizontal-bloc} p.~\pageref{horizontal-bloc}).
\item On peut tracer un cadre autour du bloc avec la clé |draw| de la commande
|\Block| ou colorier le fond avec des bords arrondis avec les clés |fill| et
@@ -711,6 +685,30 @@
\subsection{Positionnement horizontal du contenu des blocs}
+\label{horizontal-bloc}
+
+La commande |\Block| admet les clés |l|, |c| et |r| pour la position horizontale
+du contenu du bloc (calé à gauche, centré ou bien calé à droite).
+
+\medskip
+\begin{BVerbatim}[baseline=c,boxwidth=10.6cm]
+$\begin{bNiceArray}{cw{c}{1cm}c|c}[margin]
+\Block~emphase#[r]@{3-3}<\LARGE>{A} & & & 0 \\
+& & & \Vdots \\
+& & & 0 \\
+\hline
+0 & \Cdots& 0 & 0
+\end{bNiceArray}$
+\end{BVerbatim}
+$\begin{bNiceArray}{cw{c}{1cm}c|c}[margin]
+\Block[r]{3-3}<\LARGE>{A} & & & 0 \\
+& & & \Vdots \\
+& & & 0 \\
+\hline
+0 & \Cdots& 0 & 0
+\end{bNiceArray}$
+
+\bigskip
Par défaut, le positionnement horizontal des contenus des blocs est calculé sur
le \emph{contenu} des colonnes impliquées. De ce fait, dans l'exemple suivant,
l'en-tête «Premier groupe» est correctement centré même si un espacement
@@ -755,6 +753,168 @@
limites des colonnes du tableau LaTeX (et non sur le contenu de ces colonnes),
il faut utiliser les clés |L|, |R| et |C| de la commande |\Block|.
+\medskip
+Voici le même exemple avec la clé |C| pour le premier bloc.
+
+\begin{center}
+\fvset{commandchars=\~\#\+}
+\begin{BVerbatim}
+\begin{NiceTabular}{@{}c!{\qquad}ccc~emphase#!{\qquad}+ccc~@{}}
+\toprule
+Rang & ~emphase#\Block[C]{1-3}{Premier groupe}+ & & & \Block{1-3}{Deuxième groupe} \\
+ & 1A & 1B & 1C & 2A & 2B & 2C \\
+\midrule
+ 1 & 0.657 & 0.913 & 0.733 & 0.830 & 0.387 & 0.893\\
+ 2 & 0.343 & 0.537 & 0.655 & 0.690 & 0.471 & 0.333\\
+ 3 & 0.783 & 0.885 & 0.015 & 0.306 & 0.643 & 0.263\\
+ 4 & 0.161 & 0.708 & 0.386 & 0.257 & 0.074 & 0.336\\
+\bottomrule
+\end{NiceTabular}
+\end{BVerbatim}
+\end{center}
+
+\medskip
+\begin{center}
+\begin{NiceTabular}{@{}c!{\qquad}ccc!{\qquad}ccc@{}}
+\toprule
+Rang & \Block[C]{1-3}{Premier groupe} & & & \Block{1-3}{Deuxième groupe} \\
+ & 1A & 1B & 1C & 2A & 2B & 2C \\
+\midrule
+ 1 & 0.657 & 0.913 & 0.733 & 0.830 & 0.387 & 0.893\\
+ 2 & 0.343 & 0.537 & 0.655 & 0.690 & 0.471 & 0.333\\
+ 3 & 0.783 & 0.885 & 0.015 & 0.306 & 0.643 & 0.263\\
+ 4 & 0.161 & 0.708 & 0.386 & 0.257 & 0.074 & 0.336\\
+\bottomrule
+\end{NiceTabular}
+\end{center}
+
+
+
+\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é
+ \texttt{c} est déjà prise pour le positionnement horizontal.}, |t|, |b|, |T| et~|B|.
+
+
+\begin{itemize}
+\item Avec la clé |v-center|, le contenu du bloc est centré verticalement.
+
+\item Avec la clé |t|, la ligne de base du contenu du bloc est alignée avec la
+ligne de base de la première rangée concernée par le bloc.
+
+\item Avec la clé |b|, la ligne de base de la dernière rangée du contenu du bloc
+(rappelons que le contenu du bloc peut comporter plusieurs rangées séparées par
+|\\|) 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).
+
+\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).
+\end{itemize}
+
+Quand aucune clé n'est donnée, c'est la clé |v-center| qui s'applique (sauf pour
+les blocs mono-rangée).
+
+\medskip
+\begin{scope}
+\NiceMatrixOptions{rules/color=[gray]{0.75}, hvlines}
+
+\begin{BVerbatim}
+\NiceMatrixOptions{rules/color=[gray]{0.75}, hvlines}
+\end{BVerbatim}
+
+\bigskip
+
+\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 \\
+text & text \\
+\end{NiceTabular}
+\end{BVerbatim}
+\begin{NiceTabular}{ccc}
+\Block[fill=red!10,t,l]{4-2}{two\\lines}
+ & & \Huge first\\
+ & & second \\
+ & & third \\
+ & & fourth \\
+text & text \\
+\end{NiceTabular}
+
+
+\bigskip
+\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 \\
+text & text \\
+\end{NiceTabular}
+\end{BVerbatim}
+\begin{NiceTabular}{ccc}
+\Block[fill=red!10,b,r]{4-2}{two\\lines}
+ & & \Huge first\\
+ & & second \\
+ & & third \\
+ & & fourth \\
+text & text \\
+\end{NiceTabular}
+
+\bigskip
+\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 \\
+text & text \\
+\end{NiceTabular}
+\end{BVerbatim}
+\begin{NiceTabular}{ccc}
+\Block[fill=red!10,T,l]{4-2}{two\\lines}
+ & & \Huge first\\
+ & & second \\
+ & & third \\
+ & & fourth \\
+text & text \\
+\end{NiceTabular}
+
+
+\bigskip
+\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 \\
+text & text \\
+\end{NiceTabular}
+\end{BVerbatim}
+\begin{NiceTabular}{ccc}
+\Block[fill=red!10,B,r]{4-2}{two\\lines}
+ & & \Huge first\\
+ & & second \\
+ & & third \\
+ & & fourth \\
+text & text \\
+\end{NiceTabular}
+
+\end{scope}
+
+
+
\section{Les filets horizontaux et verticaux}
\label{rules}
@@ -972,10 +1132,9 @@
En particulier, cette remarque explique la différence entre la commande standard
|\hline| et la commande |\Hline| proposée par \pkg{nicematrix}.
-\colorbox{yellow!50}{\textbf{Nouveau 6.13}}\enskip La commande |\Hline| admet
-entre crochets un argument optionnel qui est une liste de couples
-\textsl{clé=valeur} qui décrivent un filet. Pour la description de ces clés,
-voir |custom-line| p.~\pageref{custom-line}.
+La commande |\Hline| admet entre crochets un argument optionnel qui est une
+liste de couples \textsl{clé=valeur} qui décrivent un filet. Pour la description
+de ces clés, voir |custom-line| p.~\pageref{custom-line}.
\medskip
\subsubsection{Les clés hlines et vlines}
@@ -1190,15 +1349,14 @@
qui sera créée par \pkg{nicematrix} et que l'utilisateur pourra utiliser pour
tracer des filets horizontaux (de manière similaire à |\hline|) ;
-\item \colorbox{yellow!50}{\textbf{Nouveau 6.11}}\enskip la clé |ccommand|
-indique le nom (sans la contre-oblique) d'une commande qui sera créée par
-\pkg{nicematrix} et que l'utilisateur pourra utiliser pour tracer des filets
-horizontaux partiels (de manière similaire à |\cline|, d'où le nom |ccommand|) :
-l'argument de cette commande est une liste d'intervalles de colonnes spécifiés
-par la syntaxe $i$ ou $i$-$j$ ;\footnote{Il est recommandé de n'utiliser ces
- commandes qu'une seule fois par ligne car chaque utilisation crée un espace
- vertical entre les rangées correspondant à la largeur totale du trait qui sera
- tracé.}
+\item la clé |ccommand| indique le nom (sans la contre-oblique) d'une commande
+qui sera créée par \pkg{nicematrix} et que l'utilisateur pourra utiliser pour
+tracer des filets horizontaux partiels (de manière similaire à |\cline|, d'où le
+nom |ccommand|) : l'argument de cette commande est une liste d'intervalles de
+colonnes spécifiés par la syntaxe $i$ ou $i$-$j$ ;\footnote{Il est recommandé de
+ n'utiliser ces commandes qu'une seule fois par ligne car chaque utilisation
+ crée un espace vertical entre les rangées correspondant à la largeur totale du
+ trait qui sera tracé.}
\item la clé |letter| prend en argument une lettre\footnote{Les lettres
suivantes ne sont pas autorisées : \verb+lcrpmbVX|()[]!@<>+} qui pourra être
@@ -1268,20 +1426,20 @@
\item \emph{Deuxième possibilité}\par\nobreak
-On peut utiliser la clé |tikz| (si Tikz est chargé, \pkg{nicematrix} ne
+On peut utiliser la clé |tikz| (si TikZ est chargé, \pkg{nicematrix} ne
chargeant par défaut que \textsc{pgf}). Dans ce cas-là, le filet est tracé
-directement avec Tikz en utilisant comme paramètres la valeur de la clé |tikz|
+directement avec TikZ en utilisant comme paramètres la valeur de la clé |tikz|
qui doit être une liste de couples \textsl{clé=valeur} applicables à un chemin
-Tikz.
+TikZ.
Par défaut aucune réservation de place n'est faite pour le filet qui sera tracé
-avec Tikz. On peut demander une réservation (horizontale pour un filet vertical
+avec TikZ. On peut demander une réservation (horizontale pour un filet vertical
et verticale pour un filet horizontal) avec la clé |total-width| qui est donc en
quelque sorte la largeur du filet qui sera tracé (cette largeur n'est \emph{pas}
calculée à partir des caractéristiques fournies par la clé |tikz|).
\bigskip
-Voici ce que l'on obtient avec la clé |dotted| de Tikz.
+Voici ce que l'on obtient avec la clé |dotted| de TikZ.
\begin{Verbatim}
\NiceMatrixOptions
@@ -1323,7 +1481,7 @@
\label{dotted}
Comme on le voit dans l'exemple précédent, les pointillés tracés par la clé
-|dotted| de Tikz ne sont pas ronds. C'est pourquoi l'extension \pkg{nicematrix}
+|dotted| de TikZ ne sont pas ronds. C'est pourquoi l'extension \pkg{nicematrix}
propose dans la clé |custom-line| une clé |dotted| qui va tracer des pointillés
ronds. La valeur initiale de la clé |total-width| est, dans ce cas-là, égale au
diamètre des points (l'utilisateur peut quand même utiliser la clé |total-width|
@@ -1476,7 +1634,7 @@
De nouvelles commandes sont disponibles dans ce |\CodeBefore|: |\cellcolor|,
|\rectanglecolor|, |\rowcolor|, |\columncolor|, |\rowcolors|, |\rowlistcolors|,
|\chessboardcolors| et |\arraycolor|.\footnote{On pourra remarquer que, dans le
- |\CodeBefore|, des nœuds PGF-Tikz de la forme \verb+(i-|j)+ correspondant à la
+ |\CodeBefore|, des nœuds PGF-TikZ de la forme \verb+(i-|j)+ correspondant à la
position des filets éventuels sont également accessibles : cf.
p.~\pageref{nodes-i}.}
\label{code-before}
@@ -2091,7 +2249,7 @@
Il est possible de donner la valeur spéciale |auto| à l'option |columns-width|:
toutes les colonnes du tableau auront alors une largeur égale à la largeur de la
case la plus large du tableau.\footnote{Le résultat est atteint dès la première
- compilation (mais PGF-Tikz écrivant des informations dans le fichier |aux|,
+ compilation (mais PGF-TikZ écrivant des informations dans le fichier |aux|,
un message demandant une deuxième compilation apparaîtra).}\par\nobreak
\medskip
@@ -2252,7 +2410,7 @@
Dans le cadre de
\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
+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}.
\medskip
@@ -2896,9 +3054,8 @@
unité de mesure dépendante de la fonte courante).
\smallskip
-\colorbox{yellow!50}{\textbf{Nouveau 6.10}}\enskip Les clés
-|xdots/shorten-start| et |xdots/shorten-end| ont été introduites dans la
-version~6.10. Les versions précédentes ne proposaient que |xdots/shorten|.
+Les clés |xdots/shorten-start| et |xdots/shorten-end| ont été introduites dans
+la version~6.10. Les versions précédentes ne proposaient que |xdots/shorten|.
\medskip
\textbf{L'option xdots/inter}\par\nobreak
@@ -2912,7 +3069,7 @@
\textbf{L'option xdots/line-style}\par\nobreak
\smallskip
-Il faut savoir que, par défaut, les lignes de Tikz tracées avec le paramètre
+Il faut savoir que, par défaut, les lignes de TikZ tracées avec le paramètre
|dotted| sont composées de points carrés et non pas ronds.\footnote{La raison de
départ est que le format \textsc{pdf} comporte un système de description de
lignes en tiretés, qui, puisqu'il est incorporé dans le \textsc{pdf}, est
@@ -2920,7 +3077,7 @@
partir de ce type de ligne de créer des lignes de points carrés alors qu'une
ligne de points ronds doit être construite explicitement point par point. Voir
néanmoins à l'adresse suivante pour un moyen d'avoir un style de pointillés
-ronds avec Tikz :\newline \small
+ronds avec TikZ :\newline \small
\url{https://tex.stackexchange.com/questions/52848/tikz-line-with-large-dots}}
@@ -2938,9 +3095,9 @@
|xdots/line-style|.
\medskip
-Néanmoins (quand Tikz est chargé), on peut utiliser pour |xdots/line-style|
-n'importe quel style proposé par Tikz, c'est-à-dire n'importe quelle suite
-d'options Tikz applicables à un chemin (à l'exception de «|color|»,
+Néanmoins (quand TikZ est chargé), on peut utiliser pour |xdots/line-style|
+n'importe quel style proposé par TikZ, c'est-à-dire n'importe quelle suite
+d'options TikZ applicables à un chemin (à l'exception de «|color|»,
«|shorten >|» et «|shorten <|»).
\medskip
@@ -3016,7 +3173,7 @@
\medskip
Les utilisateurs expérimentés peuvent, en particulier, utiliser les nœuds
-PGF-Tikz créés par \pkg{nicematrix} dans le |\CodeAfter|. Ces nœuds sont décrits
+PGF-TikZ créés par \pkg{nicematrix} dans le |\CodeAfter|. Ces nœuds sont décrits
à partir de la page \pageref{PGF-nodes}.
\medskip
@@ -3034,8 +3191,8 @@
\begin{itemize}
\item une spécification de case de la forme $i$-$j$ où $i$ est le numéro de
ligne et $j$ est le numéro de colonne ;
-\item \colorbox{yellow!50}{\textbf{Nouveau 6.10}}\enskip le nom d'un bloc (créé
-avec la commande |\Block| en utilisant la clé |name| de cette commande).
+\item le nom d'un bloc (créé avec la commande |\Block| en utilisant la clé
+|name| de cette commande).
\end{itemize}
Les options disponibles pour personnaliser les lignes pointillées créées par
|\Cdots|, |\Vdots|, etc. peuvent aussi être passées à cette commande (cf.
@@ -3267,7 +3424,7 @@
\medskip
Il existe aussi une clé |name| qui permet de donner un nom à une sous-matrice
créée par une commande |\SubMatrix|. Ce nom est utilisé pour créer des nœuds
-PGF-Tikz : voir p.~\pageref{node-sub-matrix}.
+PGF-TikZ : voir p.~\pageref{node-sub-matrix}.
\medskip
Il est également possible de spécifier des délimiteurs\footnote{Les délimiteurs
@@ -3385,9 +3542,8 @@
\subsection{La légendes des tableaux}
-\colorbox{yellow!50}{\bfseries Nouveau 6.12}\enskip L'environnement
-|{NiceTabular}| propose des clés |caption|, |short-caption| et |label| à
-utiliser lorsque le tableau est inséré dans un environnment flottant
+L'environnement |{NiceTabular}| propose des clés |caption|, |short-caption| et
+|label| à utiliser lorsque le tableau est inséré dans un environnment flottant
(typiquement un environnement |{table}|).
\smallskip
@@ -3514,9 +3670,9 @@
\item Il existe une clé |tabularnote| qui permet d'insérer du texte dans la zone
des notes avant les notes numérotées.
-\colorbox{yellow!50}{\textbf{Nouveau 6.13} }\enskip Une syntaxe alternative est
-proposée : il est possible d'utiliser l'environnement |{TabularNote}| à la fin de
-l'environnement |{NiceTabular}| (mais \emph{avant} l'éventuel |\CodeAfter|).
+Une syntaxe alternative est proposée : il est possible d'utiliser
+l'environnement |{TabularNote}| à la fin de l'environnement |{NiceTabular}|
+(mais \emph{avant} l'éventuel |\CodeAfter|).
\item Si l'extension \pkg{booktabs} a été chargée (avant ou après
\pkg{nicematrix}), la clé |notes/bottomrule| permet de faire tracer un
@@ -3834,10 +3990,9 @@
\label{columns-type}
-\colorbox{yellow!50}{\textbf{Nouveau 6.11}}\enskip Les environnements sans
-préambule (|{NiceMatrix}|, |{pNiceMatrix}|, etc.) ainsi que la commande
-|\pAutoNiceMatrix| et ses variantes, acceptent la clé |columns-type| qui indique
-le type des colonne qui sera utilisé.
+Les environnements sans préambule (|{NiceMatrix}|, |{pNiceMatrix}|, etc.) ainsi
+que la commande |\pAutoNiceMatrix| et ses variantes, acceptent la clé
+|columns-type| qui indique le type des colonne qui sera utilisé.
\medskip
Les clés |l| et |r| sont des raccourcis pour |columns-type=l| et |columns-type=r|.
@@ -4143,7 +4298,7 @@
Pour un exemple d'utilisation, voir \url{tex.stackexchange.com/questions/488566}
-\section{Utilisation de Tikz avec nicematrix}
+\section{Utilisation de TikZ avec nicematrix}
\label{name}\label{PGF-nodes}
@@ -4150,7 +4305,7 @@
\subsection{Les nœuds correspondant aux contenus des cases}
-L'extension \pkg{nicematrix} crée un nœud PGF-Tikz pour chaque case non vide
+L'extension \pkg{nicematrix} crée un nœud PGF-TikZ pour chaque case non vide
du tableau considéré. Ces nœuds sont utilisés, entre autres, pour tracer les
lignes en pointillés entre les cases du tableau.
@@ -4184,9 +4339,9 @@
sont accessibles à travers les noms «\textsl{nom}-$i$-$j$» où \textsl{nom} est
le nom donné au tableau et $i$ et $j$ les numéros de rangée et de colonne de la
case considérée. On peut les utiliser avec \textsc{pgf} mais l'utilisateur final
-préférera sans doute utiliser Tikz (qui est une sur-couche de \textsc{pgf}). Il
-faut néanmoins se souvenir que \pkg{nicematrix} ne charge pas Tikz par défaut.
-Dans les exemples qui suivent, on suppose que Tikz a été chargé par
+préférera sans doute utiliser TikZ (qui est une sur-couche de \textsc{pgf}). Il
+faut néanmoins se souvenir que \pkg{nicematrix} ne charge pas TikZ par défaut.
+Dans les exemples qui suivent, on suppose que TikZ a été chargé par
l'utilisateur.
\medskip
@@ -4212,7 +4367,7 @@
\medskip
-Dans le |\CodeAfter|, et si Tikz est chargé, les choses sont plus simples. On
+Dans le |\CodeAfter|, et si TikZ est chargé, les choses sont plus simples. On
peut (et on doit) désigner les nœuds sous la forme $i$-$j$ : il n'y a pas à
préciser l'environnement qui est évidemment l'environnement courant.
@@ -4273,7 +4428,7 @@
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
+|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
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
@@ -4569,7 +4724,7 @@
\label{nodes-i}
-L'extension \pkg{nicematrix} crée un nœud PGF-Tikz nommé simplement $i$ (précédé
+L'extension \pkg{nicematrix} crée un nœud PGF-TikZ nommé simplement $i$ (précédé
du préfixe habituel) à l'intersection du filet horizontal de numéro $i$ et du
filet vertical de numéro~$i$ (ou plutôt la position potentielle de ces filets
car ils ne sont peut-être pas tracés). Le dernier nœud a aussi un alias nommé
@@ -4598,8 +4753,8 @@
\medskip
-Si on utilise Tikz (on rappelle que \pkg{nicematrix} ne charge pas Tikz mais
-uniquement \textsc{pgf} qui est une sous-couche de Tikz), on peut donc accéder
+Si on utilise TikZ (on rappelle que \pkg{nicematrix} ne charge pas TikZ mais
+uniquement \textsc{pgf} qui est une sous-couche de TikZ), on peut donc accéder
(dans le |\CodeAfter| mais aussi dans le |\CodeBefore|) à l'intersection du filet
horizontal~$i$ et du filet vertical~$j$ avec la syntaxe |(|$i$\verb+-|+$j$|)|.
@@ -4639,7 +4794,7 @@
\medskip
Les nœuds de la forme $i$|.5| peuvent être utilisés par exemple pour barrer une
-ligne (si on a chargé Tikz).
+ligne (si on a chargé TikZ).
\smallskip
\begin{BVerbatim}[boxwidth=11cm,baseline=c]
@@ -4669,7 +4824,7 @@
\smallskip
Si une commande |\SubMatrix| est utilisée avec la clé |name| sous la forme
-|name=|\textsl{\ttfamily MonNom}, trois nœuds PGF-Tikz sont créés avec les noms
+|name=|\textsl{\ttfamily MonNom}, trois nœuds PGF-TikZ sont créés avec les noms
\textsl{\ttfamily MonNom}|-left|, \textsl{\ttfamily MonNom} et \textsl{\ttfamily
MonNom}|-right|.
@@ -4729,7 +4884,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
-couples \textsl{clé}-\textsl{valeur} qui sera passée à Tikz avant que la croix
+couples \textsl{clé}-\textsl{valeur} qui sera passée à TikZ avant que la croix
ne soit tracée.
@@ -4753,8 +4908,8 @@
\tl_gput_right:Nx §emphase¤\g_nicematrix_code_before_tlμ
{
\__pantigny_crossbox:nnn
- { \int_use:c { c at iRow } }
- { \int_use:c { c at jCol } }
+ { \arabic { iRow } }
+ { \arabic { jCol } }
{ \exp_not:n { #1 } }
}
}
@@ -4777,8 +4932,8 @@
\tl_gput_right:Nx \g_nicematrix_code_before_tl
{
\__pantigny_crossbox:nnn
- { \int_use:c { c at iRow } }
- { \int_use:c { c at jCol } }
+ { \arabic { iRow } }
+ { \arabic { jCol } }
{ \exp_not:n { #1 } }
}
}
@@ -4929,7 +5084,7 @@
\medskip
\item Une case qui contient la commande |\NotEmpty| est non vide (et un nœud
-PGF-Tikz est créé pour cette case).
+PGF-TikZ est créé pour cette case).
\medskip
\item Une case avec seulement une commande |\Hspace| (ou |\Hspace*|) est vide.
@@ -4973,7 +5128,7 @@
\medskip
L'extension \pkg{nicematrix} n'est pas compatible avec la classe \cls{ieeeaccess}
-(car cette classe n'est pas compatible avec PGF-Tikz).\footnote{Voir
+(car cette classe n'est pas compatible avec PGF-TikZ).\footnote{Voir
\url{https://tex.stackexchange.com/questions/528975/error-loading-tikz-in-ieeeaccess-class}}
\medskip
@@ -5015,11 +5170,11 @@
\label{tikz-key-examples}
-La clé |tikz| de la commande |\Block| n'est disponible que lorsque Tikz est
+La clé |tikz| de la commande |\Block| n'est disponible que lorsque TikZ est
chargé.\footnote{Par défaut, \pkg{nicematrix} ne charge que \textsc{pgf}, qui
- est une sous-couche de Tikz.}
+ est une sous-couche de TikZ.}
-Pour l'exemple suivant, la bibliothèque \pkg{patterns} de Tikz doit aussi être chargée.
+Pour l'exemple suivant, la bibliothèque \pkg{patterns} de TikZ doit aussi être chargée.
\begin{Verbatim}
\usetikzlibrary{patterns}
@@ -5275,7 +5430,7 @@
\interitem
On peut même tracer des lignes continues.\footnote{Dans ce document, la
- bibliothèque \pkg{arrows.meta} de Tikz a été chargée, ce qui a une incidence
+ bibliothèque \pkg{arrows.meta} de TikZ a été chargée, ce qui a une incidence
sur la forme des pointes de flèches.}
\begin{Verbatim}
@@ -5311,7 +5466,7 @@
\label{tiretes}
Dans l'exemple suivant, on utilise des commandes |\Block| pour tracer des filets
-en tiretés. Cet exemple nécessite que Tikz soit chargé (par
+en tiretés. Cet exemple nécessite que TikZ soit chargé (par
|\usepackage{tikz}|).
\begin{Verbatim}
@@ -5705,9 +5860,9 @@
matrice.
\medskip
-Cet exemple et les suivants nécessitent d'avoir chargé Tikz (\pkg{nicematrix} ne
-charge que \textsc{pgf}, qui est une sous-couche de Tikz) ainsi que la
-bibliothèque Tikz |fit|, ce qui peut se faire avec les deux instructions
+Cet exemple et les suivants nécessitent d'avoir chargé TikZ (\pkg{nicematrix} ne
+charge que \textsc{pgf}, qui est une sous-couche de TikZ) ainsi que la
+bibliothèque TikZ |fit|, ce qui peut se faire avec les deux instructions
suivantes dans le préambule du document :
\begin{verbatim}
@@ -5716,8 +5871,8 @@
\end{verbatim}
\medskip
-Nous créons un nœud Tikz rectangulaire qui englobe les nœuds de la deuxième
-rangée en utilisant les outils de la bibliothèque Tikz \pkg{fit}. Ces nœuds ne
+Nous créons un nœud TikZ rectangulaire qui englobe les nœuds de la deuxième
+rangée en utilisant les outils de la bibliothèque TikZ \pkg{fit}. Ces nœuds ne
sont pas créés par défaut dans le |\CodeBefore| (par souci d'efficacité). Il
faut utiliser la clé |create-cell-nodes| du |\CodeBefore| pour demander leur création.
@@ -5924,6 +6079,8 @@
\nolinkurl{www.tug.org/svn/texlive/trunk/Master/texmf-dist/tex/latex/nicematrix/nicematrix.sty}
}
+\tableofcontents
+
\end{document}
% Local Variables:
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-02-19 02:00:41 UTC (rev 65910)
+++ trunk/Master/texmf-dist/source/latex/nicematrix/nicematrix.dtx 2023-02-19 02:00:56 UTC (rev 65911)
@@ -17,8 +17,8 @@
%
% \fi
% \iffalse
-\def\myfileversion{6.13f}
-\def\myfiledate{2023/02/05}
+\def\myfileversion{6.14}
+\def\myfiledate{2023/02/18}
%
%
%<*batchfile>
@@ -533,29 +533,7 @@
% \end{bNiceArray}$
% \end{scope}
%
-% \medskip
-% It's possible to set the horizontal position of the block with one of the keys
-% |l|, |c| and |r|.
%
-%
-% \medskip
-% \begin{BVerbatim}[baseline=c,boxwidth=10.6cm]
-% $\begin{bNiceArray}{cw{c}{1cm}c|c}[margin]
-% \Block~emphase#[r]@{3-3}<\LARGE>{A} & & & 0 \\
-% & & & \Vdots \\
-% & & & 0 \\
-% \hline
-% 0 & \Cdots& 0 & 0
-% \end{bNiceArray}$
-% \end{BVerbatim}
-% $\begin{bNiceArray}{cw{c}{1cm}c|c}[margin]
-% \Block[r]{3-3}<\LARGE>{A} & & & 0 \\
-% & & & \Vdots \\
-% & & & 0 \\
-% \hline
-% 0 & \Cdots& 0 & 0
-% \end{bNiceArray}$
-%
% \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
@@ -581,8 +559,6 @@
% 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 the keys |t| and |b| fix the base line that will be given to the block
-% when it has a multi-line content (the lines are separated by |\\|);
% \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
@@ -602,6 +578,9 @@
% \textsl{key=value} of Tikz specifying the graphical characteristics of the
% lines that will be drawn (for an example, see p.~\pageref{dashed}).
% \end{itemize}
+%
+% There is also keys for the horizontal and vertical positions of the content of
+% the block: cf.~\ref{horizontal-block} p.~\pageref{horizontal-block}).
%
% \interitem
% {\bfseries One must remark that, by default, the commands |\Blocks| don't create space}.
@@ -649,7 +628,9 @@
% that width.
%
% \item The specification of the horizontal position provided by the type of
-% column (|c|, |r| or |l|) is taken into account for the blocks.
+% column (|c|, |r| or |l|) is taken into account for the blocks (but the
+% |\Block| may have its own specification of alignment:
+% cf.~\ref{horizontal-block} p.~\pageref{horizontal-block}).
%
% \item The specifications of font specified for the column by a construction
% |>{...}| in the preamble of the array are taken into account for the
@@ -749,6 +730,31 @@
%
% \subsection{Horizontal position of the content of the block}
%
+% \label{horizontal-block}
+%
+% The command |\Block| accepts the keys |l|, |c| and |r| for the horizontal
+% position of its content.
+%
+% \medskip
+% \begin{BVerbatim}[baseline=c,boxwidth=10.6cm]
+% $\begin{bNiceArray}{cw{c}{1cm}c|c}[margin]
+% \Block~emphase#[r]@{3-3}<\LARGE>{A} & & & 0 \\
+% & & & \Vdots \\
+% & & & 0 \\
+% \hline
+% 0 & \Cdots& 0 & 0
+% \end{bNiceArray}$
+% \end{BVerbatim}
+% $\begin{bNiceArray}{cw{c}{1cm}c|c}[margin]
+% \Block[r]{3-3}<\LARGE>{A} & & & 0 \\
+% & & & \Vdots \\
+% & & & 0 \\
+% \hline
+% 0 & \Cdots& 0 & 0
+% \end{bNiceArray}$
+%
+%
+%
% By default, the horizontal position of the content of a block is computed
% by using the positions of the \emph{contents} of the columns implied in that
% block. That's why, in the following example, the header ``First group'' is
@@ -795,7 +801,167 @@
% contents of those columns), one may use the key |L|, |R| and |C| of the
% command |\Block|.
%
+% \medskip
+% Here is the same example with the key |C| for the first block.
%
+% \medskip
+% \begin{center}
+% \fvset{commandchars=\~\#\+}
+% \begin{BVerbatim}
+% \begin{NiceTabular}{@{}c!{\qquad}ccc~emphase#!{\qquad}+ccc@{}}
+% \toprule
+% Rank & ~emphase#\Block[C]{1-3}{First group}+ & & & \Block{1-3}{Second group} \\
+% & 1A & 1B & 1C & 2A & 2B & 2C \\
+% \midrule
+% 1 & 0.657 & 0.913 & 0.733 & 0.830 & 0.387 & 0.893\\
+% 2 & 0.343 & 0.537 & 0.655 & 0.690 & 0.471 & 0.333\\
+% 3 & 0.783 & 0.885 & 0.015 & 0.306 & 0.643 & 0.263\\
+% 4 & 0.161 & 0.708 & 0.386 & 0.257 & 0.074 & 0.336\\
+% \bottomrule
+% \end{NiceTabular}
+% \end{BVerbatim}
+% \end{center}
+%
+% \bigskip
+% \begin{center}
+% \begin{NiceTabular}{@{}c!{\qquad}ccc!{\qquad}ccc@{}}
+% \toprule
+% Rank & \Block[C]{1-3}{First group} & & & \Block{1-3}{Second group} \\
+% & 1A & 1B & 1C & 2A & 2B & 2C \\
+% \midrule
+% 1 & 0.657 & 0.913 & 0.733 & 0.830 & 0.387 & 0.893\\
+% 2 & 0.343 & 0.537 & 0.655 & 0.690 & 0.471 & 0.333\\
+% 3 & 0.783 & 0.885 & 0.015 & 0.306 & 0.643 & 0.263\\
+% 4 & 0.161 & 0.708 & 0.386 & 0.257 & 0.074 & 0.336\\
+% \bottomrule
+% \end{NiceTabular}
+% \end{center}
+%
+%
+% \subsection{Vertical position of the content of the block}
+%
+% \colorbox{yellow!50}{\textbf{New 6.14}}
+%
+% For the vertical position, the commands |\Blocks| accepts the keys
+% |v-center|\footnote{That key could not have been named |c| since the key |c|
+% is used for the horizontal alignement.},
+% |t|, |b|, |T| and |B|.
+%
+% \begin{itemize}
+% \item With the key |v-center|, the content of the block is vertically
+% centered.
+% \item With the key |t|, the baseline of the content of the block is aligned
+% With the basline of the first row concerned by the block).
+% \item with the key |b|, the baseline of the last row of the content of the
+% 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|.
+% \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|.
+% \end{itemize}
+%
+% When no key is given, the key |v-center| applies (excepted in the mono-row blocks).
+%
+%
+%
+% \medskip
+% \begin{scope}
+% \NiceMatrixOptions{rules/color=[gray]{0.75}, hvlines}
+%
+% \begin{BVerbatim}
+% \NiceMatrixOptions{rules/color=[gray]{0.75}, hvlines}
+% \end{BVerbatim}
+%
+% \bigskip
+%
+% \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 \\
+% text & text \\
+% \end{NiceTabular}
+% \end{BVerbatim}
+% \begin{NiceTabular}{ccc}
+% \Block[fill=red!10,t,l]{4-2}{two\\lines}
+% & & \Huge first\\
+% & & second \\
+% & & third \\
+% & & fourth \\
+% text & text \\
+% \end{NiceTabular}
+%
+%
+% \bigskip
+% \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 \\
+% text & text \\
+% \end{NiceTabular}
+% \end{BVerbatim}
+% \begin{NiceTabular}{ccc}
+% \Block[fill=red!10,b,r]{4-2}{two\\lines}
+% & & \Huge first\\
+% & & second \\
+% & & third \\
+% & & fourth \\
+% text & text \\
+% \end{NiceTabular}
+%
+% \bigskip
+% \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 \\
+% text & text \\
+% \end{NiceTabular}
+% \end{BVerbatim}
+% \begin{NiceTabular}{ccc}
+% \Block[fill=red!10,T,l]{4-2}{two\\lines}
+% & & \Huge first\\
+% & & second \\
+% & & third \\
+% & & fourth \\
+% text & text \\
+% \end{NiceTabular}
+%
+%
+% \bigskip
+% \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 \\
+% text & text \\
+% \end{NiceTabular}
+% \end{BVerbatim}
+% \begin{NiceTabular}{ccc}
+% \Block[fill=red!10,B,r]{4-2}{two\\lines}
+% & & \Huge first\\
+% & & second \\
+% & & third \\
+% & & fourth \\
+% text & text \\
+% \end{NiceTabular}
+%
+% \end{scope}
+%
+%
+%
+%
% \section{The rules}
%
% \label{rules}
@@ -1000,10 +1166,9 @@
% In particular, this remark explains the difference between the standard
% command |\hline| and the command |\Hline| provided by \pkg{nicematrix}.
%
-% \colorbox{yellow!50}{\textbf{New 6.13}}\enskip The key |\Hline| takes in an
-% optional argument (between square brackets) which is a list of
-% \textsl{key=value} pairs. For the description of those keys, see |custom-line|
-% on p.~\pageref{custom-line}.
+% The key |\Hline| takes in an optional argument (between square brackets) which
+% is a list of \textsl{key=value} pairs. For the description of those keys, see
+% |custom-line| on p.~\pageref{custom-line}.
%
% \subsubsection{The keys hlines and vlines}
%
@@ -1211,14 +1376,13 @@
% will be created by \pkg{nicematrix} and that will be available for the final
% user in order to draw horizontal rules (similarly to |\hline|);
%
-% \item \colorbox{yellow!50}{\textbf{New 6.11}}\enskip the key |cccommand| is
-% the name (without the backslash) of a command that will be created by
-% \pkg{nicematrix} and that will be available for the final user to order to
-% draw partial horizontal rules (similarly to |\cline|, hence the name
-% |ccommand|): the argument of that command is a list of intervals of columns
-% specified by the syntax~$i$ or $i$-$j$.\footnote{It's recommended to use such
-% commands only once in a row because each use will create space between the
-% rows corresponding to the total width of the rule.}
+% \item the key |cccommand| is the name (without the backslash) of a command
+% that will be created by \pkg{nicematrix} and that will be available for the
+% final user to order to draw partial horizontal rules (similarly to |\cline|,
+% hence the name |ccommand|): the argument of that command is a list of
+% intervals of columns specified by the syntax~$i$ or $i$-$j$.\footnote{It's
+% recommended to use such commands only once in a row because each use will
+% create space between the rows corresponding to the total width of the rule.}
%
% \item the key |letter| takes in as argument a letter\footnote{The following
% letters are forbidden: \verb+lcrpmbVX|()[]!@<>+} that the user will use in
@@ -1653,7 +1817,7 @@
% \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 tow colors (provided in second and third
+% 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.
%
@@ -2862,11 +3026,6 @@
% The initial value is 0.3~em (it is recommanded to use a unit of length
% dependent of the current font).
%
-% \smallskip
-% \colorbox{yellow!50}{\textbf{New 6.10}}\enskip The keys |xdots/shorten-start|
-% and |xdots/shorten-end| have been introduced in version 6.10. In the previous
-% versions, there was only |xdots/shorten|.
-%
% \bigskip
% \textbf{The option xdots/inter}\par\nobreak
%
@@ -2999,8 +3158,8 @@
% \begin{itemize}
% \item a specification of cell of the form $i$-$j$ where is the
% number of the row and $j$ is the number of the column;
-% \item \colorbox{yellow!50}{\textbf{New 6.10}}\enskip the name of a block
-% (created by the command |\Block| with the key |name| of that command).
+% \item the name of a block (created by the command |\Block| with the key |name|
+% of that command).
% \end{itemize}
% The options available for the customisation of the dotted lines created by
% |\Cdots|, |\Vdots|, etc. are also available for this command (cf.
@@ -3351,10 +3510,9 @@
% \subsection{Caption of a tabular}
%
% \smallskip
-% \colorbox{yellow!50}{\bfseries New 6.12}\enskip The environment
-% |{NiceTabular}| provides the keys |caption|, |short-caption| and |label| which
-% may be used when the tabular is inserted in a floating environment (typically
-% the environment |{table}|).
+% The environment |{NiceTabular}| provides the keys |caption|, |short-caption|
+% and |label| which may be used when the tabular is inserted in a floating
+% environment (typically the environment |{table}|).
%
% \smallskip
% With the key |caption|, the caption, when it is long, is wrapped at the width
@@ -3469,10 +3627,9 @@
% \item There is a key |tabularnote| which provides a way to insert some text in
% the zone of the notes before the numbered tabular notes.
%
-% \colorbox{yellow!50}{\textbf{New 6.13}}\enskip An alternative syntaxe is
-% available with the environment |{TabularNote}|. That environment should be
-% used at the end of the environment |{NiceTabular}| (but \emph{before} a
-% potential instruction |\CodeAfter|).
+% An alternative syntaxe is available with the environment |{TabularNote}|. That
+% environment should be used at the end of the environment |{NiceTabular}| (but
+% \emph{before} a potential instruction |\CodeAfter|).
%
% \item If the package \pkg{booktabs} has been loaded (before or after
% \pkg{nicematrix}), the key |notes/bottomrule| draws a |\bottomrule| of
@@ -3790,11 +3947,10 @@
%
% \label{columns-width}
%
-% \colorbox{yellow!50}{\textbf{New 6.11}}\enskip The environments without
-% preamble (|{NiceMatrix}|, |{pNiceMatrix}|, |{bNiceMatrix}|, etc.) and the
-% commande |\pAutoNiceMatrix| (and its variants) provide an option
-% |columns-type| to specify the type of column which will be used (the initial
-% value is, of course, |c|).
+% The environments without preamble (|{NiceMatrix}|, |{pNiceMatrix}|,
+% |{bNiceMatrix}|, etc.) and the commande |\pAutoNiceMatrix| (and its variants)
+% provide an option |columns-type| to specify the type of column which will be
+% used (the initial value is, of course, |c|).
%
% The keys |l| and |r| are shortcuts for |columns-type=l| and |columns-type=r|.
%
@@ -7084,8 +7240,8 @@
% For the vertical position, the possible values are |c|, |t| and |b|. Of
% course, it would be interesting to program a key |T| and a key |B|.
% \begin{macrocode}
-\tl_new:N \l_@@_vpos_of_block_tl
-\tl_set:Nn \l_@@_vpos_of_block_tl { c }
+\str_new:N \l_@@_vpos_of_block_str
+\str_set:Nn \l_@@_vpos_of_block_str { c }
% \end{macrocode}
%
%
@@ -11138,7 +11294,7 @@
% After a specifier of column, we have to test whether there is one or several
% |<{..}| because, after those potential |<{...}|, we have to insert
% |!{\skip_horizontal:N ...}| when the key |vlines| is used. In fact, we have
-% also to test wheter there is, after the |<{...}|, a |@{...}|.
+% also to test whether there is, after the |<{...}|, a |@{...}|.
% \begin{macrocode}
\cs_new_protected:Npn \@@_patch_preamble_xi:n #1
{
@@ -11162,7 +11318,7 @@
}
}
\@@_patch_preamble:n { #1 }
- }
+ }
}
}
% \end{macrocode}
@@ -11188,15 +11344,16 @@
}
{
\exp_args:NNx
- \clist_if_in:NnT \l_@@_vlines_clist { \int_eval:n { \c at jCol + 1 } }
+ \clist_if_in:NnTF \l_@@_vlines_clist { \int_eval:n { \c at jCol + 1 } }
{
\tl_gput_right:Nn \g_@@_preamble_tl
{ @ { #1 \skip_horizontal:N \arrayrulewidth } }
}
+ { \tl_gput_right:Nn \g_@@_preamble_tl { @ { #1 } } }
}
\@@_patch_preamble:n
}
-% \end{macrocode}
+% \end{macrocode}
%
% \bigskip
% \begin{macrocode}
@@ -11212,7 +11369,6 @@
\exp_after:wN \@@_patch_m_preamble:n \the \@temptokena \q_stop
\group_end:
\tl_set_eq:NN #1 \g_@@_preamble_tl
- % \group_end:
}
% \end{macrocode}
%
@@ -17342,9 +17498,9 @@
R .value_forbidden:n = true ,
C .code:n = \str_set:Nn \l_@@_hpos_block_str c ,
C .value_forbidden:n = true ,
- t .code:n = \str_set:Nn \l_@@_vpos_of_block_tl t ,
+ t .code:n = \str_set:Nn \l_@@_vpos_of_block_str t ,
t .value_forbidden:n = true ,
- b .code:n = \str_set:Nn \l_@@_vpos_of_block_tl b ,
+ b .code:n = \str_set:Nn \l_@@_vpos_of_block_str b ,
b .value_forbidden:n = true ,
color .tl_set:N = \l_@@_color_tl ,
color .value_required:n = true ,
@@ -17560,20 +17716,24 @@
{
{ \int_compare_p:nNn { #2 } = 1 }
{ \dim_compare_p:n { \l_@@_col_width_dim >= \c_zero_dim } }
- { ! \g_@@_rotate_bool } % added 2022/09/16
+ { ! \g_@@_rotate_bool }
}
% \end{macrocode}
% When the block is mono-column in a column with a fixed width (eg |p{3cm}|).
% \begin{macrocode}
- {
- \begin { minipage } [ \l_@@_vpos_of_block_tl ]
- { \l_@@_col_width_dim }
- \str_case:Vn \l_@@_hpos_block_str
- {
- c \centering
- r \raggedleft
- l \raggedright
- }
+ {
+ \use:x
+ {
+ \exp_not:N \begin { minipage }%
+ [ \str_lowercase:V { \l_@@_vpos_of_block_str } ]
+ { \l_@@_col_width_dim }
+ \str_case:Vn \l_@@_hpos_block_str
+ {
+ c \centering
+ r \raggedleft
+ l \raggedright
+ }
+ }
#5
\end { minipage }
}
@@ -17580,7 +17740,8 @@
{
\use:x
{
- \exp_not:N \begin { tabular } [ \l_@@_vpos_of_block_tl ]
+ \exp_not:N \begin { tabular }%
+ [ \str_lowercase:V { \l_@@_vpos_of_block_str } ]
{ @ { } \l_@@_hpos_block_str @ { } }
}
#5
@@ -17591,8 +17752,9 @@
\c_math_toggle_token
\use:x
{
- \exp_not:N \begin { array } [ \l_@@_vpos_of_block_tl ]
- { @ { } \l_@@_hpos_block_str @ { } }
+ \exp_not:N \begin { array }%
+ [ \str_lowercase:V { \l_@@_vpos_of_block_str } ]
+ { @ { } \l_@@_hpos_block_str @ { } }
}
#5
\end { array }
@@ -17701,7 +17863,7 @@
{ \str_set:Nn \l_@@_hpos_block_str c }
\use:x
{
- \exp_not:N \begin { tabular } [ \l_@@_vpos_of_block_tl ]
+ \exp_not:N \begin { tabular } [ \l_@@_vpos_of_block_str ]
{ @ { } \l_@@_hpos_block_str @ { } }
}
#5
@@ -17722,7 +17884,7 @@
\c_math_toggle_token
\use:x
{
- \exp_not:N \begin { array } [ \l_@@_vpos_of_block_tl ]
+ \exp_not:N \begin { array } [ \l_@@_vpos_of_block_str ]
{ @ { } \l_@@_hpos_block_str @ { } }
}
#5
@@ -17795,18 +17957,21 @@
C .code:n = \str_set:Nn \l_@@_hpos_block_str c
\bool_set_true:N \l_@@_hpos_of_block_cap_bool ,
C .value_forbidden:n = true ,
- t .code:n = \str_set:Nn \l_@@_vpos_of_block_tl t ,
+ t .code:n = \str_set:Nn \l_@@_vpos_of_block_str t ,
t .value_forbidden:n = true ,
- b .code:n = \str_set:Nn \l_@@_vpos_of_block_tl b ,
+ T .code:n = \str_set:Nn \l_@@_vpos_of_block_str T ,
+ T .value_forbidden:n = true ,
+ b .code:n = \str_set:Nn \l_@@_vpos_of_block_str b ,
b .value_forbidden:n = true ,
+ B .code:n = \str_set:Nn \l_@@_vpos_of_block_str B ,
+ B .value_forbidden:n = true ,
+ v-center .code:n = \str_set:Nn \l_@@_vpos_of_block_str { c } ,
+ v-center .value_forbidden:n = true ,
name .tl_set:N = \l_@@_block_name_str ,
name .value_required:n = true ,
name .initial:n = ,
respect-arraystretch .bool_set:N = \l_@@_respect_arraystretch_bool ,
respect-arraystretch .default:n = true ,
- v-center .bool_set:N = \l_@@_v_center_bool ,
- v-center .default:n = true ,
- v-center .initial:n = false ,
transparent .bool_set:N = \l_@@_transparent_bool ,
transparent .default:n = true ,
transparent .initial:n = false ,
@@ -17871,6 +18036,14 @@
}
% \end{macrocode}
%
+%
+% \medskip
+% |#1| is the first row of the block;
+% |#2| is the first column of the block;
+% |#3| is the last row of the block;
+% |#4| is the last column of the block;
+% |#5| is a list of \textsl{key=value} options;
+% |#6| is the label
% \begin{macrocode}
\cs_new_protected:Npn \@@_Block_v:nnnnnn #1 #2 #3 #4 #5 #6
{
@@ -17878,23 +18051,12 @@
% The group is for the keys.
% \begin{macrocode}
\group_begin:
+ \int_compare:nNnT { #1 } = { #3 }
+ { \str_set:Nn \l_@@_vpos_of_block_str { t } }
\keys_set:nn { NiceMatrix / Block / SecondPass } { #5 }
% \end{macrocode}
-%
%
-% We restrict the use of the key |v-center| to the case of a mono-row block.
% \begin{macrocode}
- \bool_if:NT \l_@@_v_center_bool
- {
- \int_compare:nNnF { #1 } = { #3 }
- {
- \@@_error:n { Wrong~use~of~v-center }
- \bool_set_false:N \l_@@_v_center_bool
- }
- }
-% \end{macrocode}
-%
-% \begin{macrocode}
\bool_if:NT \l_@@_vlines_block_bool
{
\tl_gput_right:Nx \g_nicematrix_code_after_tl
@@ -18192,31 +18354,112 @@
}
}
% \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 beginning with the case of a |\Block|
-% of one row.
+% Now, we will put the label of the block.
% \begin{macrocode}
- \bool_if:nTF
- { \int_compare_p:nNn { #1 } = { #3 } && ! \l_@@_v_center_bool }
+ \bool_lazy_any:nTF
{
+ { \str_if_eq_p:Vn \l_@@_vpos_of_block_str { c } }
+ { \str_if_eq_p:Vn \l_@@_vpos_of_block_str { T } }
+ { \str_if_eq_p:Vn \l_@@_vpos_of_block_str { B } }
+ }
+% \medskip
+% \begin{macrocode}
+ {
% \end{macrocode}
-% We take into account the case of a block of one row in the ``first row'' or
-% the ``last row''.
+% If we are in the first column, we must put the block as if it was with the key~|r|.
% \begin{macrocode}
- \int_compare:nNnTF { #1 } = 0
- { \l_@@_code_for_first_row_tl }
- {
- \int_compare:nNnT { #1 } = \l_@@_last_row_int
- \l_@@_code_for_last_row_tl
+ \int_compare:nNnT { #2 } = 0
+ { \str_set:Nn \l_@@_hpos_block_str r }
+ \bool_if:nT \g_@@_last_col_found_bool
+ {
+ \int_compare:nNnT { #2 } = \g_@@_col_total_int
+ { \str_set:Nn \l_@@_hpos_block_str l }
}
% \end{macrocode}
-% If the block has only one row, we want the label of the block perfectly
-% aligned on the baseline of the row. That's why we have constructed a
-% |\pgfcoordinate| on the baseline of the row, in the first column of the array.
-% Now, we retrieve the $y$-value of that node and we store it in |\l_tmpa_dim|.
% \begin{macrocode}
- \pgfextracty \l_tmpa_dim { \@@_qpoint:n { row - #1 - base } }
+ \tl_set:Nx \l_tmpa_tl
+ {
+ \str_case:Vn \l_@@_vpos_of_block_str
+ {
+ c {
+ \str_case:Vn \l_@@_hpos_block_str
+ {
+ c { center }
+ l { west }
+ r { east }
+ }
+
+ }
+ T {
+ \str_case:Vn \l_@@_hpos_block_str
+ {
+ c { north }
+ l { north~west }
+ r { north~east }
+ }
+
+ }
+ B {
+ \str_case:Vn \l_@@_hpos_block_str
+ {
+ c { south}
+ l { south~west }
+ r { south~east }
+ }
+
+ }
+ }
+ }
% \end{macrocode}
+% \begin{macrocode}
+ \pgftransformshift
+ {
+ \pgfpointanchor
+ {
+ \@@_env: - #1 - #2 - block
+ \bool_if:NF \l_@@_hpos_of_block_cap_bool { - short }
+ }
+ { \l_tmpa_tl }
+ }
+ \pgfset { inner~xsep = \c_zero_dim }
+ \pgfnode
+ { rectangle }
+ { \l_tmpa_tl }
+ { \box_use_drop:N \l_@@_cell_box } { } { }
+ }
+% \end{macrocode}
+%
+% \begin{macrocode}
+ {
+% \end{macrocode}
+%
+% \begin{macrocode}
+ \pgfextracty \l_tmpa_dim
+ {
+ \@@_qpoint:n
+ {
+ row - \str_if_eq:VnTF \l_@@_vpos_of_block_str { b } { #3 } { #1 }
+ - base
+ }
+ }
+% \end{macrocode}
% We retrieve (in |\pgf at x|) the $x$-value of the center of the block.
% \begin{macrocode}
\pgfpointanchor
@@ -18251,51 +18494,7 @@
}
% \end{macrocode}
%
-% \medskip
-% If the number of rows is different of $1$, we will put the label of the block
-% by using the short node (the label of the block has been composed in
-% |\l_@@_cell_box|).
% \begin{macrocode}
- {
-% \end{macrocode}
-% If we are in the first column, we must put the block as if it was with the key~|r|.
-% \begin{macrocode}
- \int_compare:nNnT { #2 } = 0
- { \str_set:Nn \l_@@_hpos_block_str r }
- \bool_if:nT \g_@@_last_col_found_bool
- {
- \int_compare:nNnT { #2 } = \g_@@_col_total_int
- { \str_set:Nn \l_@@_hpos_block_str l }
- }
- \pgftransformshift
- {
- \pgfpointanchor
- {
- \@@_env: - #1 - #2 - block
- \bool_if:NF \l_@@_hpos_of_block_cap_bool { - short }
- }
- {
- \str_case:Vn \l_@@_hpos_block_str
- {
- c { center }
- l { west }
- r { east }
- }
- }
- }
- \pgfset { inner~sep = \c_zero_dim }
- \pgfnode
- { rectangle }
- {
- \str_case:Vn \l_@@_hpos_block_str
- {
- c { center }
- l { west }
- r { east }
- }
- }
- { \box_use_drop:N \l_@@_cell_box } { } { }
- }
\endpgfpicture
\group_end:
}
@@ -20611,14 +20810,6 @@
}
% \end{macrocode}
%
-% \begin{macrocode}
-\@@_msg_new:nn { Wrong~use~of~v-center }
- {
- Wrong~use~of~v-center.\\
- You~should~not~use~the~key~'v-center'~here~because~your~block~is~not~
- mono-row.~However,~you~can~go~on.
- }
-% \end{macrocode}
%
% \begin{macrocode}
\@@_msg_new:nn { No~letter~and~no~command }
@@ -20964,9 +21155,9 @@
\c_@@_available_keys_str
}
{
- The~available~keys~are~(in~alphabetic~order):~b,~borders,~c,~draw,~fill,~
- hlines,~hvlines,~l,~line-width,~name,~rounded-corners,~r,~respect-arraystretch,
- ~t,~tikz,~transparent~and~vlines.
+ The~available~keys~are~(in~alphabetic~order):~b,~B,~borders,~c,~draw,~fill,~
+ hlines,~hvlines,~l,~line-width,~name,~rounded-corners,~r,~respect-arraystretch,~
+ t,~T,~tikz,~transparent~and~vlines.
}
% \end{macrocode}
%
@@ -21371,7 +21562,10 @@
% \small
% \nolinkurl{https:www.tug.org/svn/texlive/trunk/Master/texmf-dist/tex/latex/nicematrix/nicematrix.sty}
% }
+% \subsection*{Changes between version 6.13 and 6.14}
%
+% New keys for the command |\Block| for the vertical position of the content of
+% that block.
%
% \subsection*{Changes between version 6.12 and 6.13}
%
Modified: trunk/Master/texmf-dist/tex/latex/nicematrix/nicematrix.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/nicematrix/nicematrix.sty 2023-02-19 02:00:41 UTC (rev 65910)
+++ trunk/Master/texmf-dist/tex/latex/nicematrix/nicematrix.sty 2023-02-19 02:00:56 UTC (rev 65911)
@@ -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.13f}
-\def\myfiledate{2023/02/05}
+\def\myfileversion{6.14}
+\def\myfiledate{2023/02/18}
\RequirePackage{pgfcore}
\usepgfmodule{shapes}
@@ -460,8 +460,8 @@
\str_new:N \l__nicematrix_hpos_block_str
\str_set:Nn \l__nicematrix_hpos_block_str { c }
\bool_new:N \l__nicematrix_hpos_of_block_cap_bool
-\tl_new:N \l__nicematrix_vpos_of_block_tl
-\tl_set:Nn \l__nicematrix_vpos_of_block_tl { c }
+\str_new:N \l__nicematrix_vpos_of_block_str
+\str_set:Nn \l__nicematrix_vpos_of_block_str { c }
\bool_new:N \l__nicematrix_draw_first_bool
\bool_new:N \l__nicematrix_vlines_block_bool
\bool_new:N \l__nicematrix_hlines_block_bool
@@ -2552,7 +2552,7 @@
}
}
\__nicematrix_patch_preamble:n { #1 }
- }
+ }
}
}
\cs_new_protected:Npn \__nicematrix_patch_preamble_xiii:n #1
@@ -2569,11 +2569,12 @@
}
{
\exp_args:NNx
- \clist_if_in:NnT \l__nicematrix_vlines_clist { \int_eval:n { \c at jCol + 1 } }
+ \clist_if_in:NnTF \l__nicematrix_vlines_clist { \int_eval:n { \c at jCol + 1 } }
{
\tl_gput_right:Nn \g__nicematrix_preamble_tl
{ @ { #1 \skip_horizontal:N \arrayrulewidth } }
}
+ { \tl_gput_right:Nn \g__nicematrix_preamble_tl { @ { #1 } } }
}
\__nicematrix_patch_preamble:n
}
@@ -2589,7 +2590,6 @@
\exp_after:wN \__nicematrix_patch_m_preamble:n \the \@temptokena \q_stop
\group_end:
\tl_set_eq:NN #1 \g__nicematrix_preamble_tl
- % \group_end:
}
\cs_new:Npn \__nicematrix_multicolumn:nnn #1 #2 #3
{
@@ -6320,9 +6320,9 @@
R .value_forbidden:n = true ,
C .code:n = \str_set:Nn \l__nicematrix_hpos_block_str c ,
C .value_forbidden:n = true ,
- t .code:n = \str_set:Nn \l__nicematrix_vpos_of_block_tl t ,
+ t .code:n = \str_set:Nn \l__nicematrix_vpos_of_block_str t ,
t .value_forbidden:n = true ,
- b .code:n = \str_set:Nn \l__nicematrix_vpos_of_block_tl b ,
+ b .code:n = \str_set:Nn \l__nicematrix_vpos_of_block_str b ,
b .value_forbidden:n = true ,
color .tl_set:N = \l__nicematrix_color_tl ,
color .value_required:n = true ,
@@ -6425,17 +6425,21 @@
{
{ \int_compare_p:nNn { #2 } = 1 }
{ \dim_compare_p:n { \l__nicematrix_col_width_dim >= \c_zero_dim } }
- { ! \g__nicematrix_rotate_bool } % added 2022/09/16
+ { ! \g__nicematrix_rotate_bool }
}
{
- \begin { minipage } [ \l__nicematrix_vpos_of_block_tl ]
- { \l__nicematrix_col_width_dim }
- \str_case:Vn \l__nicematrix_hpos_block_str
- {
- c \centering
- r \raggedleft
- l \raggedright
- }
+ \use:x
+ {
+ \exp_not:N \begin { minipage }%
+ [ \str_lowercase:V { \l__nicematrix_vpos_of_block_str } ]
+ { \l__nicematrix_col_width_dim }
+ \str_case:Vn \l__nicematrix_hpos_block_str
+ {
+ c \centering
+ r \raggedleft
+ l \raggedright
+ }
+ }
#5
\end { minipage }
}
@@ -6442,7 +6446,8 @@
{
\use:x
{
- \exp_not:N \begin { tabular } [ \l__nicematrix_vpos_of_block_tl ]
+ \exp_not:N \begin { tabular }%
+ [ \str_lowercase:V { \l__nicematrix_vpos_of_block_str } ]
{ @ { } \l__nicematrix_hpos_block_str @ { } }
}
#5
@@ -6453,8 +6458,9 @@
\c_math_toggle_token
\use:x
{
- \exp_not:N \begin { array } [ \l__nicematrix_vpos_of_block_tl ]
- { @ { } \l__nicematrix_hpos_block_str @ { } }
+ \exp_not:N \begin { array }%
+ [ \str_lowercase:V { \l__nicematrix_vpos_of_block_str } ]
+ { @ { } \l__nicematrix_hpos_block_str @ { } }
}
#5
\end { array }
@@ -6532,7 +6538,7 @@
{ \str_set:Nn \l__nicematrix_hpos_block_str c }
\use:x
{
- \exp_not:N \begin { tabular } [ \l__nicematrix_vpos_of_block_tl ]
+ \exp_not:N \begin { tabular } [ \l__nicematrix_vpos_of_block_str ]
{ @ { } \l__nicematrix_hpos_block_str @ { } }
}
#5
@@ -6553,7 +6559,7 @@
\c_math_toggle_token
\use:x
{
- \exp_not:N \begin { array } [ \l__nicematrix_vpos_of_block_tl ]
+ \exp_not:N \begin { array } [ \l__nicematrix_vpos_of_block_str ]
{ @ { } \l__nicematrix_hpos_block_str @ { } }
}
#5
@@ -6617,18 +6623,21 @@
C .code:n = \str_set:Nn \l__nicematrix_hpos_block_str c
\bool_set_true:N \l__nicematrix_hpos_of_block_cap_bool ,
C .value_forbidden:n = true ,
- t .code:n = \str_set:Nn \l__nicematrix_vpos_of_block_tl t ,
+ t .code:n = \str_set:Nn \l__nicematrix_vpos_of_block_str t ,
t .value_forbidden:n = true ,
- b .code:n = \str_set:Nn \l__nicematrix_vpos_of_block_tl b ,
+ T .code:n = \str_set:Nn \l__nicematrix_vpos_of_block_str T ,
+ T .value_forbidden:n = true ,
+ b .code:n = \str_set:Nn \l__nicematrix_vpos_of_block_str b ,
b .value_forbidden:n = true ,
+ B .code:n = \str_set:Nn \l__nicematrix_vpos_of_block_str B ,
+ B .value_forbidden:n = true ,
+ v-center .code:n = \str_set:Nn \l__nicematrix_vpos_of_block_str { c } ,
+ v-center .value_forbidden:n = true ,
name .tl_set:N = \l__nicematrix_block_name_str ,
name .value_required:n = true ,
name .initial:n = ,
respect-arraystretch .bool_set:N = \l__nicematrix_respect_arraystretch_bool ,
respect-arraystretch .default:n = true ,
- v-center .bool_set:N = \l__nicematrix_v_center_bool ,
- v-center .default:n = true ,
- v-center .initial:n = false ,
transparent .bool_set:N = \l__nicematrix_transparent_bool ,
transparent .default:n = true ,
transparent .initial:n = false ,
@@ -6669,15 +6678,9 @@
\cs_new_protected:Npn \__nicematrix_Block_v:nnnnnn #1 #2 #3 #4 #5 #6
{
\group_begin:
+ \int_compare:nNnT { #1 } = { #3 }
+ { \str_set:Nn \l__nicematrix_vpos_of_block_str { t } }
\keys_set:nn { NiceMatrix / Block / SecondPass } { #5 }
- \bool_if:NT \l__nicematrix_v_center_bool
- {
- \int_compare:nNnF { #1 } = { #3 }
- {
- \__nicematrix_error:n { Wrong~use~of~v-center }
- \bool_set_false:N \l__nicematrix_v_center_bool
- }
- }
\bool_if:NT \l__nicematrix_vlines_block_bool
{
\tl_gput_right:Nx \g_nicematrix_code_after_tl
@@ -6856,67 +6859,101 @@
{ south~east }
}
}
- \bool_if:nTF
- { \int_compare_p:nNn { #1 } = { #3 } && ! \l__nicematrix_v_center_bool }
+ \int_compare:nNnT { #1 } = 0
{
- \int_compare:nNnTF { #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 } }
+ { \str_if_eq_p:Vn \l__nicematrix_vpos_of_block_str { T } }
+ { \str_if_eq_p:Vn \l__nicematrix_vpos_of_block_str { B } }
+ }
+ {
+ \int_compare:nNnT { #2 } = 0
+ { \str_set:Nn \l__nicematrix_hpos_block_str r }
+ \bool_if:nT \g__nicematrix_last_col_found_bool
{
- \int_compare:nNnT { #1 } = \l__nicematrix_last_row_int
- \l__nicematrix_code_for_last_row_tl
+ \int_compare:nNnT { #2 } = \g__nicematrix_col_total_int
+ { \str_set:Nn \l__nicematrix_hpos_block_str l }
}
- \pgfextracty \l_tmpa_dim { \__nicematrix_qpoint:n { row - #1 - base } }
- \pgfpointanchor
+ \tl_set:Nx \l_tmpa_tl
{
- \__nicematrix_env: - #1 - #2 - block
- \bool_if:NF \l__nicematrix_hpos_of_block_cap_bool { - short }
+ \str_case:Vn \l__nicematrix_vpos_of_block_str
+ {
+ c {
+ \str_case:Vn \l__nicematrix_hpos_block_str
+ {
+ c { center }
+ l { west }
+ r { east }
+ }
+
+ }
+ T {
+ \str_case:Vn \l__nicematrix_hpos_block_str
+ {
+ c { north }
+ l { north~west }
+ r { north~east }
+ }
+
+ }
+ B {
+ \str_case:Vn \l__nicematrix_hpos_block_str
+ {
+ c { south}
+ l { south~west }
+ r { south~east }
+ }
+
+ }
+ }
}
+ \pgftransformshift
{
- \str_case:Vn \l__nicematrix_hpos_block_str
+ \pgfpointanchor
{
- c { center }
- l { west }
- r { east }
+ \__nicematrix_env: - #1 - #2 - block
+ \bool_if:NF \l__nicematrix_hpos_of_block_cap_bool { - short }
}
+ { \l_tmpa_tl }
}
- \pgftransformshift { \pgfpoint \pgf at x \l_tmpa_dim }
- \pgfset { inner~sep = \c_zero_dim }
+ \pgfset { inner~xsep = \c_zero_dim }
\pgfnode
{ rectangle }
+ { \l_tmpa_tl }
+ { \box_use_drop:N \l__nicematrix_cell_box } { } { }
+ }
+ {
+ \pgfextracty \l_tmpa_dim
{
- \str_case:Vn \l__nicematrix_hpos_block_str
+ \__nicematrix_qpoint:n
{
- c { base }
- l { base~west }
- r { base~east }
+ row - \str_if_eq:VnTF \l__nicematrix_vpos_of_block_str { b } { #3 } { #1 }
+ - base
}
}
- { \box_use_drop:N \l__nicematrix_cell_box } { } { }
- }
- {
- \int_compare:nNnT { #2 } = 0
- { \str_set:Nn \l__nicematrix_hpos_block_str r }
- \bool_if:nT \g__nicematrix_last_col_found_bool
+ \pgfpointanchor
{
- \int_compare:nNnT { #2 } = \g__nicematrix_col_total_int
- { \str_set:Nn \l__nicematrix_hpos_block_str l }
+ \__nicematrix_env: - #1 - #2 - block
+ \bool_if:NF \l__nicematrix_hpos_of_block_cap_bool { - short }
}
- \pgftransformshift
{
- \pgfpointanchor
+ \str_case:Vn \l__nicematrix_hpos_block_str
{
- \__nicematrix_env: - #1 - #2 - block
- \bool_if:NF \l__nicematrix_hpos_of_block_cap_bool { - short }
+ c { center }
+ l { west }
+ r { east }
}
- {
- \str_case:Vn \l__nicematrix_hpos_block_str
- {
- c { center }
- l { west }
- r { east }
- }
- }
}
+ \pgftransformshift { \pgfpoint \pgf at x \l_tmpa_dim }
\pgfset { inner~sep = \c_zero_dim }
\pgfnode
{ rectangle }
@@ -6923,9 +6960,9 @@
{
\str_case:Vn \l__nicematrix_hpos_block_str
{
- c { center }
- l { west }
- r { east }
+ c { base }
+ l { base~west }
+ r { base~east }
}
}
{ \box_use_drop:N \l__nicematrix_cell_box } { } { }
@@ -8511,12 +8548,6 @@
Empty~environment.\\
Your~\__nicematrix_full_name_env:\ is~empty.~This~error~is~fatal.
}
-\__nicematrix_msg_new:nn { Wrong~use~of~v-center }
- {
- Wrong~use~of~v-center.\\
- You~should~not~use~the~key~'v-center'~here~because~your~block~is~not~
- mono-row.~However,~you~can~go~on.
- }
\__nicematrix_msg_new:nn { No~letter~and~no~command }
{
Erroneous~use.\\
@@ -8765,9 +8796,9 @@
\c__nicematrix_available_keys_str
}
{
- The~available~keys~are~(in~alphabetic~order):~b,~borders,~c,~draw,~fill,~
- hlines,~hvlines,~l,~line-width,~name,~rounded-corners,~r,~respect-arraystretch,
- ~t,~tikz,~transparent~and~vlines.
+ The~available~keys~are~(in~alphabetic~order):~b,~B,~borders,~c,~draw,~fill,~
+ hlines,~hvlines,~l,~line-width,~name,~rounded-corners,~r,~respect-arraystretch,~
+ t,~T,~tikz,~transparent~and~vlines.
}
\__nicematrix_msg_new:nn { Version~of~siunitx~too~old }
{
More information about the tex-live-commits
mailing list.