summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/nicematrix
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2022-02-17 03:01:15 +0000
committerNorbert Preining <norbert@preining.info>2022-02-17 03:01:15 +0000
commitbd0e05b5b4dba5b38512acb2e7104f180fdb97e6 (patch)
treefd0c2e1e01289d188075990b8126941d5be9c1c0 /macros/latex/contrib/nicematrix
parente1b70cd3906c3b92e231eb8001f1a0c0eb2053c1 (diff)
CTAN sync 202202170301
Diffstat (limited to 'macros/latex/contrib/nicematrix')
-rw-r--r--macros/latex/contrib/nicematrix/nicematrix-french.pdfbin499106 -> 502752 bytes
-rw-r--r--macros/latex/contrib/nicematrix/nicematrix-french.tex103
-rw-r--r--macros/latex/contrib/nicematrix/nicematrix.dtx534
-rw-r--r--macros/latex/contrib/nicematrix/nicematrix.pdfbin1482850 -> 1489647 bytes
4 files changed, 436 insertions, 201 deletions
diff --git a/macros/latex/contrib/nicematrix/nicematrix-french.pdf b/macros/latex/contrib/nicematrix/nicematrix-french.pdf
index 0e75045e9a..060eb81773 100644
--- a/macros/latex/contrib/nicematrix/nicematrix-french.pdf
+++ b/macros/latex/contrib/nicematrix/nicematrix-french.pdf
Binary files differ
diff --git a/macros/latex/contrib/nicematrix/nicematrix-french.tex b/macros/latex/contrib/nicematrix/nicematrix-french.tex
index fc2cc12e34..d97d20c70e 100644
--- a/macros/latex/contrib/nicematrix/nicematrix-french.tex
+++ b/macros/latex/contrib/nicematrix/nicematrix-french.tex
@@ -10,7 +10,7 @@
\usepackage{nicematrix}
\usepackage{tikz}
-\usetikzlibrary{fit,patterns,arrows.meta}
+\usetikzlibrary{fit,patterns,arrows.meta,decorations.pathmorphing}
\usepackage{enumitem}
\usepackage{siunitx}
@@ -1246,7 +1246,8 @@ tracées par |\hdottedline| et «|:|» ont ce même effet.
commandes et des lettres pour des filets personnalisés avec la clé
|custom-line|, utilisable dans |\NiceMatrixOptions| ou bien dans un
environnement. Cette clé prend en argument une liste de paires de la forme
-\textsl{clé=valeur}. Les clés disponibles sont les suivantes :
+\textsl{clé=valeur}. Il y a d'abord deux clés pour spécifier les outils qui
+permettront d'utiliser ce nouveau type de filet.
\begin{itemize}
\item la clé |command| indique le nom (sans la contre-oblique) d'une commande
@@ -1256,8 +1257,20 @@ tracer des filets horizontaux (de manière similaire à |\hline|) ;
\item la clé |letter| prend en argument une lettre\footnote{Les lettres
suivantes ne sont pas autorisées : \verb+lcrpmbVX:|()[]!@<>+} qui pourra être utilisée par
l'utilisateur dans le préambule d'un environnement à préambule (comme
-|{NiceTabular}|) pour spécifier un filet vertical ;
+|{NiceTabular}|) pour spécifier un filet vertical.
+\end{itemize}
+
+\bigskip
+Pour la description du filet elle-même, il y a trois possibilités.
+
+\begin{itemize}
+\item \emph{Première possibilité}\par\nobreak
+
+Il est possible de spécifier des filets multiples, colorés avec une couleur
+entre les filets (comme on peut le faire avec \pkg{colortbl} par exemple).
+
+\begin{itemize}
\item la clé |multiplicity| indique le nombre de traits successifs qui seront
tracés : par exemple, une valeur de~$2$ va créer des filets doubles comme créés
en standard par |\hline\hline| ou bien \verb+||+ dans le préambule d'un
@@ -1266,13 +1279,35 @@ environnement ;
\item la clé |color| fixe la couleur des filets ;
\item la clé |sep-color| fixe la couleur entre deux filets consécutifs (n'a
-d'intérêt que dans le cas où la clé |multiplicity| est utilisée) ;
+d'intérêt que dans le cas où la clé |multiplicity| est utilisée).
+\end{itemize}
-\item la clé |dotted| impose un style de pointillés qui utilise le système
-de pointillés de la commande |\hdottedline| (et de la lettre \verb|:|) décrit à
-la partie précédente (cf. p.~\pageref{dotted}).
+\bigskip
+\item \emph{Deuxième possibilité}\par\nobreak
+
+On peut utiliser la clé |dotted| qui impose un style de pointillés qui utilise
+le système de pointillés de la commande |\hdottedline| (et de la lettre
+\verb|:|) décrit à la partie précédente (cf. p.~\pageref{dotted}). La clé
+|color| est en fait aussi utilisable dans ce cas-là.
+
+\bigskip
+\item \colorbox{yellow!50}{\textbf{Nouveau 6.6}}\enskip \emph{Troisième
+ possibilité}
+
+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|
+qui doit être une liste de couples \textsl{clé=valeur} applicables à un chemin
+Tikz.
+
+Par défaut aucune réservation de place n'est faite par défaut pour le filet qui
+sera tracé avec Tikz. On peut demander une réservation (horizontale pour un
+filet vertical et verticale pour un filet horizontal) avec la clé |width| qui
+est donc en quelque sorte la largeur du filet qui sera tracé (cette largeur
+n'est pas déduite des caractéristiques fournies par la clé |tikz|).
\end{itemize}
+
\medskip
Ce système permet en particulier de définir des commandes pour tracer des filets
avec une couleur spécifique (et ces filets respecteront les blocs comme les
@@ -1307,6 +1342,52 @@ Produit C & 5 & 4 & 1 \\
\end{center}
+\bigskip
+Voici un exemple avec la clé |tikz|.
+
+\begin{Verbatim}
+\documentclass{article}
+\usepackage{nicematrix,tikz}
+\usetikzlibrary{decorations.pathmorphing}
+
+\NiceMatrixOptions
+ {
+ custom-line =
+ {
+ letter = I ,
+ ~emphase#tikz = { decorate, decoration = { coil, aspect = 0 } }}@ ,
+ ~emphase#width = 2 mm@
+ }
+ }
+
+\begin{document}
+\begin{NiceTabular}{cIcIc}
+un & deux & trois \\
+quatre & cinq & six \\
+sept & huit & neuf
+\end{NiceTabular}
+\end{document}
+\end{Verbatim}
+
+\begin{center}
+\NiceMatrixOptions
+ {
+ custom-line =
+ {
+ letter = I ,
+ tikz = { decorate, decoration = { coil, aspect = 0 } } ,
+ width = 2 mm
+ }
+ }
+\begin{NiceTabular}{cIcIc}
+un & deux & trois \\
+quatre & cinq & six \\
+sept & huit & neuf
+\end{NiceTabular}
+\end{center}
+
+
+
\section{Les couleurs des rangées et des colonnes}
\subsection{Utilisation de colortbl}
@@ -1812,7 +1893,9 @@ concerné.\footnote{Pour le moment, cette clé n'est \emph{pas} disponible dans
On a alors accès aux trois commandes suivantes :
\begin{itemize}
-\item |\cellcolor| qui colorie la case courante ;
+\item |\cellcolor| qui colorie la case courante\footnote{Néanmoins, cette
+ commande |\cellcolor| supprimera les espaces qui la suivent, ce que ne fait
+ pas la commande |\cellcolor| de \pkg{colortbl}.} ;
\item |\rowcolor| à utiliser dans une case et qui colorie le reste de la rangée
;
\item |\columncolor| à utiliser dans le préambule du tableau de la même manière
@@ -2130,6 +2213,10 @@ un très très très très long texte
\end{center}
+Remarquons que l'extension \pkg{varwidth} a quelques problèmes (au moins dans sa
+version 0.92). Par exemple, avec LuaLaTeX, elle en fonctionne pas si le contenu
+commence par une instruction |\color|.
+
\subsection{Les colonnes X}
diff --git a/macros/latex/contrib/nicematrix/nicematrix.dtx b/macros/latex/contrib/nicematrix/nicematrix.dtx
index 80d98ae17e..cf717533a1 100644
--- a/macros/latex/contrib/nicematrix/nicematrix.dtx
+++ b/macros/latex/contrib/nicematrix/nicematrix.dtx
@@ -15,8 +15,8 @@
%
% \fi
% \iffalse
-\def\myfileversion{6.5}
-\def\myfiledate{2022/01/23}
+\def\myfileversion{6.6}
+\def\myfiledate{2022/02/16}
%
%
%<*batchfile>
@@ -53,7 +53,7 @@ version 2005/12/01 or later.
\geometry{left=2.8cm,right=2.8cm,top=2.5cm,bottom=2.5cm,papersize={21cm,29.7cm}}
\usepackage{tikz}
-\usetikzlibrary{fit,patterns,arrows.meta}
+\usetikzlibrary{fit,patterns,arrows.meta,decorations.pathmorphing}
\usepackage{nicematrix}
\usepackage{siunitx}
\usepackage{varwidth}
@@ -1257,8 +1257,9 @@ version 2005/12/01 or later.
% \colorbox{yellow!50}{\textbf{New 6.5}}\enskip It's possible to define commands
% and letters for customized rules with the key |custom-line| available in
% |\NiceMatrixOptions| and in the options of individual environments. That key
-% takes in as argument a list of \textsl{key=value} pairs. The available keys
-% are the following:
+% takes in as argument a list of \textsl{key=value} pairs. First, there is two
+% keys to define the tools which will be used to use that new type of rule.
+%
% \begin{itemize}
% \item the key |command| is the name (without the backslahs) of a command that
% will be created by \pkg{nicematrix} and that will be available for the final
@@ -1267,8 +1268,19 @@ version 2005/12/01 or later.
% \item the key |letter| takes in as argument a letter\footnote{The following
% letters are forbidden: \verb+lcrpmbVX:|()[]!@<>+} that the user will use in
% the preamble of an environment with preamble (such as |{NiceTabular}| in order
-% to specify a vertical rule;
+% to specify a vertical rule.
+% \end{itemize}
+%
+% \bigskip
+% For the description of the rule itself, there is three possibilities.
%
+% \begin{itemize}
+% \item \emph{First possibility}\par\nobreak
+%
+% It's possible to specify composite rules, with a color and a color for the
+% inter-rule space (as possible with \pkg{colortbl} for instance).
+%
+% \begin{itemize}
% \item the key |multiplicity| is the number to consecutive rules that will be
% drawn: for instance, a value of $2$ will create double rules such those
% created by |\hline\hline| or \verb+||+ in the preamble of an environment;
@@ -1276,13 +1288,33 @@ version 2005/12/01 or later.
% \item the key |color| sets the color of the rule ;
%
% \item the key |sep-color| sets the color between two successive rules (should be
-% used only in conjonction with |multiplicity|);
+% used only in conjonction with |multiplicity|).
+% \end{itemize}
+%
+% \bigskip
+% \item \emph{Second possibility}\par\nobreak
+%
+% The key |dotted| forces a style with dotted rules such as those created by
+% |\hdottedline| or the letter ``|:|'' in the preamble (cf.
+% p.~\pageref{dotted}). The key |color| may be used also in that case.
%
-% \item the key |dotted| forces a style with dotted rules such as those created by
-% |\hdottedline| or the letter ``|:|'' in the preamble (cf. p.~\pageref{dotted}).
+% \bigskip
+% \item \colorbox{yellow!50}{\textbf{New 6.6}}\enskip \emph{Third
+% possibility}\par\nobreak
+%
+% It's possible to use the key |tikz| (if Tikz is loaded). In that case, the
+% rule is drawn directly with Tikz by using as parameters the value of the key
+% |tikz| which must be a list of \textsl{key=value} pairs which may be applied
+% to a Tikz path.
+%
+% By default, no space is reserved for the rule that will be drawn with Tikz. It
+% possible to specify a reservation (horizontal for a vertical rule and vertical
+% for an horizontal one) with the key |width|. That value of that key, is, in
+% some ways, the width of the rule that will be drawn (\pkg{nicematrix} does not
+% compute that width from the characteristics of the rule specified in |tikz|).
% \end{itemize}
%
-% \medskip
+% \bigskip
% That system may be used, in particular, for the definition of commands and
% letters to draw rules with a specific color (and those rules will respect the
% blocks as do all rules of \pkg{nicematrix}).
@@ -1316,7 +1348,50 @@ version 2005/12/01 or later.
% \end{NiceTabular}
% \end{center}
%
-%
+% \bigskip
+% Here is an example of the key |tikz|.
+%
+% \begin{Verbatim}
+% \documentclass{article}
+% \usepackage{nicematrix,tikz}
+% \usetikzlibrary{decorations.pathmorphing}
+%
+% \NiceMatrixOptions
+% {
+% custom-line =
+% {
+% letter = I ,
+% ~emphase#tikz = { decorate, decoration = { coil, aspect = 0 } }}@ ,
+% ~emphase#width = 2 mm@
+% }
+% }
+%
+% \begin{document}
+% \begin{NiceTabular}{cIcIc}
+% one & two & three \\
+% four & five & six \\
+% seven & eight & nine
+% \end{NiceTabular}
+% \end{document}
+% \end{Verbatim}
+%
+% \begin{center}
+% \NiceMatrixOptions
+% {
+% custom-line =
+% {
+% letter = I ,
+% tikz = { decorate, decoration = { coil, aspect = 0 } } ,
+% width = 2 mm
+% }
+% }
+% \begin{NiceTabular}{cIcIc}
+% one & two & three \\
+% four & five & six \\
+% seven & eight & nine
+% \end{NiceTabular}
+% \end{center}
+%
%
%\section{The color of the rows and columns}
%
@@ -1801,7 +1876,9 @@ version 2005/12/01 or later.
% There are three commands available (they are inspired by \pkg{colortbl} but
% are \emph{independent} of \pkg{colortbl}):
% \begin{itemize}
-% \item |\cellcolor| which colorizes a cell;
+% \item |\cellcolor| which colorizes a cell;\footnote{However, this command
+% |\cellcolor| will delete the following spaces, which does not the command
+% |\cellcolor| of \pkg{colortbl}.}
% \item |\rowcolor| which must be used in a cell and which colorizes the end of
% the row;
% \item |\columncolor| which must be used in the preamble of the environment
@@ -2112,6 +2189,10 @@ version 2005/12/01 or later.
% \end{NiceTabular}
% \end{center}
%
+% \bigskip
+% One should remark that the extension \pkg{varwidth} (at least in its version
+% 0.92) has some problems: for instance, with LuaLaTeX, it does not work when
+% the content begins with |\color|.
%
%
% \subsection{The columns X}
@@ -5649,7 +5730,8 @@ version 2005/12/01 or later.
% \begin{macrocode}
\bool_new:N \c_@@_in_preamble_bool
\bool_set_true:N \c_@@_in_preamble_bool
-\AtBeginDocument { \bool_set_false:N \c_@@_in_preamble_bool }
+\hook_gput_code:nnn { begindocument } { . }
+ { \bool_set_false:N \c_@@_in_preamble_bool }
% \end{macrocode}
%
% \begin{macrocode}
@@ -5659,7 +5741,7 @@ version 2005/12/01 or later.
\bool_new:N \c_@@_tabularx_loaded_bool
\bool_new:N \c_@@_tikz_loaded_bool
\bool_new:N \c_@@_varwidth_loaded_bool
-\AtBeginDocument
+\hook_gput_code:nnn { begindocument } { . }
{
\@ifpackageloaded { varwidth }
{ \bool_set_true:N \c_@@_varwidth_loaded_bool }
@@ -5789,7 +5871,7 @@ version 2005/12/01 or later.
% be modified. In order to avoid an error message in this case, we will redefine
% |\pgfutil@check@rerun| in the |aux| file.
% \begin{macrocode}
-\AtBeginDocument
+\hook_gput_code:nnn { begindocument } { . }
{
\@ifpackageloaded { booktabs }
{ \iow_now:Nn \@mainaux \nicematrix@redefine@check@rerun }
@@ -5816,7 +5898,7 @@ version 2005/12/01 or later.
% redefinition of |\everycr|.
% \begin{macrocode}
\bool_new:N \c_@@_colortbl_loaded_bool
-\AtBeginDocument
+\hook_gput_code:nnn { begindocument } { . }
{
\@ifpackageloaded { colortbl }
{ \bool_set_true:N \c_@@_colortbl_loaded_bool }
@@ -5989,7 +6071,7 @@ version 2005/12/01 or later.
% loaded, we redefine the |S| columns of \pkg{siunitx}.
% \begin{macrocode}
\bool_new:N \c_@@_siunitx_loaded_bool
-\AtBeginDocument
+\hook_gput_code:nnn { begindocument } { . }
{
\@ifpackageloaded { siunitx }
{ \bool_set_true:N \c_@@_siunitx_loaded_bool }
@@ -6003,7 +6085,7 @@ version 2005/12/01 or later.
% The command |\@@_renew_NC@rewrite@S:| will be used in each environment of
% \pkg{nicematrix} in order to ``rewrite'' the |S| column in each environment.
% \begin{macrocode}
-\AtBeginDocument
+\hook_gput_code:nnn { begindocument } { . }
{
\bool_if:nTF { ! \c_@@_siunitx_loaded_bool }
{ \cs_set_eq:NN \@@_renew_NC@rewrite@S: \prg_do_nothing: }
@@ -6399,11 +6481,10 @@ version 2005/12/01 or later.
%
% \bigskip
% The L3 programming layer provides scratch dimensions |\l_tmpa_dim| and
-% |\l_tmpb_dim|. We creates two more in the same spirit (if they don't exist
-% yet: that's why we use |\dim_zero_new:N|).
+% |\l_tmpb_dim|. We creates two more in the same spirit.
% \begin{macrocode}
-\dim_zero_new:N \l_tmpc_dim
-\dim_zero_new:N \l_tmpd_dim
+\dim_zero_new:N \l_@@_tmpc_dim
+\dim_zero_new:N \l_@@_tmpd_dim
% \end{macrocode}
%
% \bigskip
@@ -6831,7 +6912,7 @@ version 2005/12/01 or later.
% beginning of the document (we want to allow the user to load \pkg{enumitem}
% after \pkg{nicematrix}).
% \begin{macrocode}
-\AtBeginDocument
+\hook_gput_code:nnn { begindocument } { . }
{
\bool_if:nTF { ! \c_@@_enumitem_loaded_bool }
{
@@ -7051,10 +7132,11 @@ version 2005/12/01 or later.
% initial value is 0.45~em but it will be changed if the option |small| is used.
% \begin{macrocode}
\dim_new:N \l_@@_inter_dots_dim
-\AtBeginDocument { \dim_set:Nn \l_@@_inter_dots_dim { 0.45 em } }
+\hook_gput_code:nnn { begindocument } { . }
+ { \dim_set:Nn \l_@@_inter_dots_dim { 0.45 em } }
% \end{macrocode}
-% The |\AtBeginDocument| is only a security in case \cls{revtex4-1} is used
-% (even though it is obsolete).
+% We use a hook only by security in case \cls{revtex4-1}
+% is used (even though it is obsolete).
%
% \bigskip
% The following dimension is the minimal distance between a node (in fact an
@@ -7063,10 +7145,11 @@ version 2005/12/01 or later.
% distance may vary a little).
% \begin{macrocode}
\dim_new:N \l_@@_xdots_shorten_dim
-\AtBeginDocument { \dim_set:Nn \l_@@_xdots_shorten_dim { 0.3 em } }
+\hook_gput_code:nnn { begindocument } { . }
+ { \dim_set:Nn \l_@@_xdots_shorten_dim { 0.3 em } }
% \end{macrocode}
-% The |\AtBeginDocument| is only a security in case \cls{revtex4-1} is used
-% (even though it is obsolete).
+% We use a hook only by security in case \cls{revtex4-1} is used (even though it
+% is obsolete).
%
% \bigskip
% The following dimension is the radius of the dots for the dotted lines (when
@@ -7074,10 +7157,11 @@ version 2005/12/01 or later.
% value is 0.53~pt but it will be changed if the option |small| is used.
% \begin{macrocode}
\dim_new:N \l_@@_radius_dim
-\AtBeginDocument { \dim_set:Nn \l_@@_radius_dim { 0.53 pt } }
+\hook_gput_code:nnn { begindocument } { . }
+ { \dim_set:Nn \l_@@_radius_dim { 0.53 pt } }
% \end{macrocode}
-% The |\AtBeginDocument| is only a security in case \cls{revtex4-1} is used
-% (even if it is obsolete).
+% We use a hook only by security in case \cls{revtex4-1} is used (even though it
+% is obsolete).
%
%
% \bigskip
@@ -7134,10 +7218,11 @@ version 2005/12/01 or later.
% \bigskip
% \begin{macrocode}
\dim_new:N \l_@@_notes_above_space_dim
-\AtBeginDocument { \dim_set:Nn \l_@@_notes_above_space_dim { 1 mm } }
+\hook_gput_code:nnn { begindocument } { . }
+ { \dim_set:Nn \l_@@_notes_above_space_dim { 1 mm } }
% \end{macrocode}
-% The |\AtBeginDocument| is only a security in case \cls{revtex4-1} is used
-% (even if it is obsolete).
+% We use a hook only by security in case \cls{revtex4-1} is used (even though it
+% is obsolete).
%
% \bigskip
% The flag |\l_@@_nullify_dots_bool| corresponds to the option |nullify-dots|.
@@ -7487,7 +7572,7 @@ version 2005/12/01 or later.
{
\bool_if:NTF \c_@@_in_preamble_bool
{
- \AtBeginDocument
+ \hook_gput_code:nnn { begindocument } { . }
{
\bool_if:NT \c_@@_enumitem_loaded_bool
{ \setlist* [ tabularnotes ] { #1 } }
@@ -7503,7 +7588,7 @@ version 2005/12/01 or later.
{
\bool_if:NTF \c_@@_in_preamble_bool
{
- \AtBeginDocument
+ \hook_gput_code:nnn { begindocument } { . }
{
\bool_if:NT \c_@@_enumitem_loaded_bool
{ \setlist* [ tabularnotes* ] { #1 } }
@@ -7603,17 +7688,6 @@ version 2005/12/01 or later.
renew-matrix .code:n = \@@_renew_matrix: ,
renew-matrix .value_forbidden:n = true ,
% \end{macrocode}
-% The key |transparent| is now considered as obsolete (because its name is ambiguous).
-% \begin{macrocode}
- transparent .code:n =
- {
- \@@_renew_matrix:
- \bool_set_true:N \l_@@_renew_dots_bool
- \@@_error:n { Key~transparent }
- } ,
- transparent .value_forbidden:n = true,
-% \end{macrocode}
-%
%
% \bigskip
% The option |exterior-arraycolsep| will have effect only in |{NiceArray}| for
@@ -8489,13 +8563,9 @@ version 2005/12/01 or later.
% We redefine |\multicolumn| and, since we want |\multicolumn| to be available
% in the potential environments |{tabular}| nested in the environments of
% \pkg{nicematrix}, we patch |{tabular}| to go back to the original definition.
-% The command |\AtBeginEnvironment| is the command of \pkg{l3hooks} and, if this
-% command is not available (versions of LaTeX prior to 2020-10-01),
-% \pkg{etoolbox} is loaded and the command |\AtBeginDocument| of \pkg{etoolbox}
-% is used.
% \begin{macrocode}
\cs_set_eq:NN \multicolumn \@@_multicolumn:nnn
- \AtBeginEnvironment { tabular }
+ \hook_gput_code:nnn { env / tabular / begin } { . }
{ \cs_set_eq:NN \multicolumn \@@_old_multicolumn }
% \end{macrocode}
%
@@ -8972,15 +9042,15 @@ version 2005/12/01 or later.
\@@_qpoint:n { #1 }
\dim_set_eq:NN \l_tmpb_dim \pgf@y
\@@_qpoint:n { col - \@@_succ:n { #4 } }
- \dim_set_eq:NN \l_tmpc_dim \pgf@x
+ \dim_set_eq:NN \l_@@_tmpc_dim \pgf@x
\@@_qpoint:n { \@@_succ:n { #3 } }
- \dim_set_eq:NN \l_tmpd_dim \pgf@y
+ \dim_set_eq:NN \l_@@_tmpd_dim \pgf@y
\@@_pgf_rect_node:nnnnn
{ \@@_env: - #5 }
{ \dim_use:N \l_tmpa_dim }
{ \dim_use:N \l_tmpb_dim }
- { \dim_use:N \l_tmpc_dim }
- { \dim_use:N \l_tmpd_dim }
+ { \dim_use:N \l_@@_tmpc_dim }
+ { \dim_use:N \l_@@_tmpd_dim }
}
}
% \end{macrocode}
@@ -12018,7 +12088,7 @@ version 2005/12/01 or later.
% |\@@_draw_dotted_lines:| whether Tikz is loaded or not (in that case, only
% \textsc{pgf} is loaded).
% \begin{macrocode}
-\AtBeginDocument
+\hook_gput_code:nnn { begindocument } { . }
{
\cs_new_protected:Npx \@@_draw_dotted_lines:
{
@@ -12087,16 +12157,16 @@ version 2005/12/01 or later.
\@@_qpoint:n { row - \int_min:nn { ##1 } { \c@iRow + 1 } }
\dim_set_eq:NN \l_tmpb_dim \pgf@y
\@@_qpoint:n { col - \int_min:nn { ##1 + 1 } { \c@jCol + 1 } }
- \dim_set_eq:NN \l_tmpc_dim \pgf@x
+ \dim_set_eq:NN \l_@@_tmpc_dim \pgf@x
\@@_qpoint:n { row - \int_min:nn { ##1 + 1 } { \c@iRow + 1 } }
- \dim_set_eq:NN \l_tmpd_dim \pgf@y
+ \dim_set_eq:NN \l_@@_tmpd_dim \pgf@y
\pgftransformshift { \pgfpoint \l_tmpa_dim \l_tmpb_dim }
% \end{macrocode}
% Now, |\l_tmpa_dim| and |\l_tmpb_dim| become the width and the height of the
% node (of shape |@à_diag_node|) that we will construct.
% \begin{macrocode}
- \dim_set:Nn \l_tmpa_dim { ( \l_tmpc_dim - \l_tmpa_dim ) / 2 }
- \dim_set:Nn \l_tmpb_dim { ( \l_tmpd_dim - \l_tmpb_dim ) / 2 }
+ \dim_set:Nn \l_tmpa_dim { ( \l_@@_tmpc_dim - \l_tmpa_dim ) / 2 }
+ \dim_set:Nn \l_tmpb_dim { ( \l_@@_tmpd_dim - \l_tmpb_dim ) / 2 }
\pgfnode { @@_diag_node } { center } { } { \@@_env: - ##1 } { }
\str_if_empty:NF \l_@@_name_str
{ \pgfnodealias { \l_@@_name_str - ##1 } { \@@_env: - ##1 } }
@@ -13290,17 +13360,17 @@ version 2005/12/01 or later.
% \pkg{nicematrix} rely upon |{NiceArray}|).
%
%
-% \medskip
+% \medskip
% The syntax of these commands uses the character |_| as embellishment and
% thats' why we have to insert a character |_| in the \emph{arg spec} of these
% commands. However, we don't know the future catcode of |_| in the main
% document (maybe the user will use \pkg{underscore}, and, in that case, the
% catcode is $13$ because \pkg{underscore} activates |_|). That's why these
-% commands will be defined in a |\AtBeginDocument| and the \emph{arg spec} will
-% be rescanned.
+% commands will be defined in a |\hook_gput_code:nnn { begindocument } { . }|
+% and the \emph{arg spec} will be rescanned.
%
% \begin{macrocode}
-\AtBeginDocument
+\hook_gput_code:nnn { begindocument } { . }
{
\tl_set:Nn \l_@@_argspec_tl { O { } E { _ ^ } { { } { } } }
\tl_set_rescan:Nno \l_@@_argspec_tl { } \l_@@_argspec_tl
@@ -13418,7 +13488,7 @@ version 2005/12/01 or later.
}
}
% \end{macrocode}
-% End of the |\AtBeginDocument|.
+% End of the |\AddToHook|.
%
%
% \bigskip
@@ -13487,7 +13557,7 @@ version 2005/12/01 or later.
% |\NewDocumentCommand| is protected and that's why we have put the
% |\multicolumn| before (in the definition of |\@@_Hdotsfor:|).
% \begin{macrocode}
-\AtBeginDocument
+\hook_gput_code:nnn { begindocument } { . }
{
\tl_set:Nn \l_@@_argspec_tl { O { } m O { } E { _ ^ } { { } { } } }
\tl_set_rescan:Nno \l_@@_argspec_tl { } \l_@@_argspec_tl
@@ -13513,7 +13583,7 @@ version 2005/12/01 or later.
}
}
% \end{macrocode}
-% Enf of |\AtBeginDocument|.
+% Enf of |\AddToHook|.
%
% \medskip
% \begin{macrocode}
@@ -13594,7 +13664,7 @@ version 2005/12/01 or later.
%
% \bigskip
% \begin{macrocode}
-\AtBeginDocument
+\hook_gput_code:nnn { begindocument } { . }
{
\tl_set:Nn \l_@@_argspec_tl { O { } m O { } E { _ ^ } { { } { } } }
\tl_set_rescan:Nno \l_@@_argspec_tl { } \l_@@_argspec_tl
@@ -13614,7 +13684,7 @@ version 2005/12/01 or later.
}
}
% \end{macrocode}
-% Enf of |\AtBeginDocument|.
+% Enf of |\AddToHook|.
%
% \begin{macrocode}
\cs_new_protected:Npn \@@_Vdotsfor:nnnn #1 #2 #3 #4
@@ -13725,7 +13795,7 @@ version 2005/12/01 or later.
% construction uses the fact the |\@@_line_i:nn| is protected and that
% |\@@_double_int_eval:n| is fully expandable).
% \begin{macrocode}
-\AtBeginDocument
+\hook_gput_code:nnn { begindocument } { . }
{
\tl_set:Nn \l_@@_argspec_tl { O { } m m ! O { } E { _ ^ } { { } { } } }
\tl_set_rescan:Nno \l_@@_argspec_tl { } \l_@@_argspec_tl
@@ -13764,7 +13834,7 @@ version 2005/12/01 or later.
% \end{macrocode}
%
% \begin{macrocode}
-\AtBeginDocument
+\hook_gput_code:nnn { begindocument } { . }
{
\cs_new_protected:Npx \@@_draw_line_ii:nn #1 #2
{
@@ -13831,7 +13901,7 @@ version 2005/12/01 or later.
nb-rows .int_set:N = \l_@@_key_nb_rows_int ,
nb-rows .value_required:n = true ,
nb-rows .initial:n = 1 ,
- rowcolor .tl_set:N = \l_tmpc_tl ,
+ rowcolor .tl_set:N = \l_@@_tmpc_tl ,
rowcolor .value_required:n = true ,
rowcolor .initial:n = ,
unknown .code:n = \@@_error:n { Unknown~key~for~RowStyle }
@@ -13846,7 +13916,7 @@ version 2005/12/01 or later.
% \end{macrocode}
% If the key |rowcolor| has been used.
% \begin{macrocode}
- \tl_if_empty:NF \l_tmpc_tl
+ \tl_if_empty:NF \l_@@_tmpc_tl
{
% \end{macrocode}
% First, the end of the current row (we remind that |\RowStyle| applies to the
@@ -13855,7 +13925,7 @@ version 2005/12/01 or later.
\tl_gput_right:Nx \g_nicematrix_code_before_tl
{
\@@_rectanglecolor
- { \l_tmpc_tl }
+ { \l_@@_tmpc_tl }
{ \int_use:N \c@iRow - \int_use:N \c@jCol }
{ \int_use:N \c@iRow - * }
}
@@ -13867,7 +13937,7 @@ version 2005/12/01 or later.
\tl_gput_right:Nx \g_nicematrix_code_before_tl
{
\@@_rowcolor
- { \l_tmpc_tl }
+ { \l_@@_tmpc_tl }
{
\int_eval:n { \c@iRow + 1 }
- \int_eval:n { \c@iRow + \l_@@_key_nb_rows_int - 1 }
@@ -14092,13 +14162,13 @@ version 2005/12/01 or later.
\cs_new_protected:Npn \@@_rectanglecolor:nnn #1 #2 #3
{
\@@_cut_on_hyphen:w #1 \q_stop
- \tl_clear_new:N \l_tmpc_tl
- \tl_clear_new:N \l_tmpd_tl
- \tl_set_eq:NN \l_tmpc_tl \l_tmpa_tl
- \tl_set_eq:NN \l_tmpd_tl \l_tmpb_tl
+ \tl_clear_new:N \l_@@_tmpc_tl
+ \tl_clear_new:N \l_@@_tmpd_tl
+ \tl_set_eq:NN \l_@@_tmpc_tl \l_tmpa_tl
+ \tl_set_eq:NN \l_@@_tmpd_tl \l_tmpb_tl
\@@_cut_on_hyphen:w #2 \q_stop
- \tl_set:Nx \l_@@_rows_tl { \l_tmpc_tl - \l_tmpa_tl }
- \tl_set:Nx \l_@@_cols_tl { \l_tmpd_tl - \l_tmpb_tl }
+ \tl_set:Nx \l_@@_rows_tl { \l_@@_tmpc_tl - \l_tmpa_tl }
+ \tl_set:Nx \l_@@_cols_tl { \l_@@_tmpd_tl - \l_tmpb_tl }
% \end{macrocode}
% The command |\@@_cartesian_path:n| takes in two implicit arguments:
% |\l_@@_cols_tl| and |\l_@@_rows_tl|.
@@ -14221,9 +14291,9 @@ version 2005/12/01 or later.
\bool_if:NTF \l_@@_rowcolors_restart_bool
{ \int_set:Nn \l_@@_color_int 1 }
{ \int_set:Nn \l_@@_color_int \l_tmpa_tl }
- \int_zero_new:N \l_tmpc_int
- \int_set:Nn \l_tmpc_int \l_tmpb_tl
- \int_do_until:nNnn \l_tmpa_int > \l_tmpc_int
+ \int_zero_new:N \l_@@_tmpc_int
+ \int_set:Nn \l_@@_tmpc_int \l_tmpb_tl
+ \int_do_until:nNnn \l_tmpa_int > \l_@@_tmpc_int
{
% \end{macrocode}
% We will compute in |\l_tmpb_int| the last row of the ``block''.
@@ -14245,7 +14315,7 @@ version 2005/12/01 or later.
\tl_set:Nx \l_@@_rows_tl
{ \int_use:N \l_tmpa_int - \int_use:N \l_tmpb_int }
% \end{macrocode}
-% |\l_tmpc_tl| will be the color that we will use.
+% |\l_@@_tmpc_tl| will be the color that we will use.
% \begin{macrocode}
\tl_clear_new:N \l_@@_color_tl
\tl_set:Nx \l_@@_color_tl
@@ -14373,9 +14443,9 @@ version 2005/12/01 or later.
\int_compare:nNnT \l_tmpb_tl > \c@jCol
{ \tl_set:Nx \l_tmpb_tl { \int_use:N \c@jCol } }
% \end{macrocode}
-% |\l_tmpc_tl| will contain the number of column.
+% |\l_@@_tmpc_tl| will contain the number of column.
% \begin{macrocode}
- \tl_set_eq:NN \l_tmpc_tl \l_tmpa_tl
+ \tl_set_eq:NN \l_@@_tmpc_tl \l_tmpa_tl
% \end{macrocode}
% If we decide to provide the commands |\cellcolor|, |\rectanglecolor|,
% |\rowcolor|, |\columncolor|, |\rowcolors| and |\chessboardcolors| in the
@@ -14384,8 +14454,8 @@ version 2005/12/01 or later.
% \begin{macrocode}
\@@_qpoint:n { col - \l_tmpa_tl }
\int_compare:nNnTF \l_@@_first_col_int = \l_tmpa_tl
- { \dim_set:Nn \l_tmpc_dim { \pgf@x - 0.5 \arrayrulewidth } }
- { \dim_set:Nn \l_tmpc_dim { \pgf@x + 0.5 \arrayrulewidth } }
+ { \dim_set:Nn \l_@@_tmpc_dim { \pgf@x - 0.5 \arrayrulewidth } }
+ { \dim_set:Nn \l_@@_tmpc_dim { \pgf@x + 0.5 \arrayrulewidth } }
\@@_qpoint:n { col - \@@_succ:n \l_tmpb_tl }
\dim_set:Nn \l_tmpa_dim { \pgf@x + 0.5 \arrayrulewidth }
% \end{macrocode}
@@ -14406,15 +14476,15 @@ version 2005/12/01 or later.
% Now, the numbers of both rows are in |\l_tmpa_tl| and |\l_tmpb_tl|.
% \begin{macrocode}
\seq_if_in:NxF \l_@@_corners_cells_seq
- { \l_tmpa_tl - \l_tmpc_tl }
+ { \l_tmpa_tl - \l_@@_tmpc_tl }
{
\@@_qpoint:n { row - \@@_succ:n \l_tmpb_tl }
\dim_set:Nn \l_tmpb_dim { \pgf@y + 0.5 \arrayrulewidth }
\@@_qpoint:n { row - \l_tmpa_tl }
- \dim_set:Nn \l_tmpd_dim { \pgf@y + 0.5 \arrayrulewidth }
+ \dim_set:Nn \l_@@_tmpd_dim { \pgf@y + 0.5 \arrayrulewidth }
\pgfsetcornersarced { \pgfpoint { #1 } { #1 } }
\pgfpathrectanglecorners
- { \pgfpoint \l_tmpc_dim \l_tmpd_dim }
+ { \pgfpoint \l_@@_tmpc_dim \l_@@_tmpd_dim }
{ \pgfpoint \l_tmpa_dim \l_tmpb_dim }
}
}
@@ -14647,7 +14717,9 @@ version 2005/12/01 or later.
% \begin{macrocode}
tikz .tl_set:N = \l_@@_tikz_rule_tl ,
tikz .value_required:n = true ,
- tikz .initial:n =
+ tikz .initial:n = ,
+ width .dim_set:N = \l_@@_rule_width_dim ,
+ width .value_required:n = true
}
% \end{macrocode}
%
@@ -14685,7 +14757,7 @@ version 2005/12/01 or later.
% \end{macrocode}
% |\l_tmpa_tl| is the number of row and |\l_tmpb_tl| the number of column. When
% we have found a row corresponding to a rule to draw, we note its number in
-% |\l_tmpc_tl|.
+% |\l_@@_tmpc_tl|.
% \begin{macrocode}
\tl_set:Nx \l_tmpb_tl { \int_eval:n \l_@@_position_int }
\int_step_variable:nnNn \l_@@_start_int \l_@@_end_int
@@ -14791,7 +14863,7 @@ version 2005/12/01 or later.
\@@_qpoint:n { col - \int_use:N \l_@@_position_int }
\dim_set_eq:NN \l_tmpb_dim \pgf@x
\@@_qpoint:n { row - \int_eval:n { \l_@@_local_end_int + 1 } }
- \dim_set_eq:NN \l_tmpc_dim \pgf@y
+ \dim_set_eq:NN \l_@@_tmpc_dim \pgf@y
\bool_lazy_all:nT
{
{ \int_compare_p:nNn \l_@@_multiplicity_int > 1 }
@@ -14802,26 +14874,26 @@ version 2005/12/01 or later.
\group_begin:
\CT@drsc@
\dim_add:Nn \l_tmpa_dim { 0.5 \arrayrulewidth }
- \dim_sub:Nn \l_tmpc_dim { 0.5 \arrayrulewidth }
- \dim_set:Nn \l_tmpd_dim
+ \dim_sub:Nn \l_@@_tmpc_dim { 0.5 \arrayrulewidth }
+ \dim_set:Nn \l_@@_tmpd_dim
{
\l_tmpb_dim - ( \doublerulesep + \arrayrulewidth )
* ( \l_@@_multiplicity_int - 1 )
}
\pgfpathrectanglecorners
{ \pgfpoint \l_tmpb_dim \l_tmpa_dim }
- { \pgfpoint \l_tmpd_dim \l_tmpc_dim }
+ { \pgfpoint \l_@@_tmpd_dim \l_@@_tmpc_dim }
\pgfusepath { fill }
\group_end:
}
\pgfpathmoveto { \pgfpoint \l_tmpb_dim \l_tmpa_dim }
- \pgfpathlineto { \pgfpoint \l_tmpb_dim \l_tmpc_dim }
+ \pgfpathlineto { \pgfpoint \l_tmpb_dim \l_@@_tmpc_dim }
\prg_replicate:nn { \l_@@_multiplicity_int - 1 }
{
\dim_sub:Nn \l_tmpb_dim \arrayrulewidth
\dim_sub:Nn \l_tmpb_dim \doublerulesep
\pgfpathmoveto { \pgfpoint \l_tmpb_dim \l_tmpa_dim }
- \pgfpathlineto { \pgfpoint \l_tmpb_dim \l_tmpc_dim }
+ \pgfpathlineto { \pgfpoint \l_tmpb_dim \l_@@_tmpc_dim }
}
\CT@arc@
\pgfsetlinewidth { 1.1 \arrayrulewidth }
@@ -14866,13 +14938,13 @@ version 2005/12/01 or later.
\@@_qpoint:n { row - \int_use:N \l_@@_local_start_int }
\dim_set_eq:NN \l_tmpa_dim \pgf@y
\@@_qpoint:n { col - \int_use:N \l_@@_position_int }
- \dim_set_eq:NN \l_tmpb_dim \pgf@x
+ \dim_set:Nn \l_tmpb_dim { \pgf@x - 0.5 \l_@@_rule_width_dim }
\@@_qpoint:n { row - \int_eval:n { \l_@@_local_end_int + 1 } }
- \dim_set_eq:NN \l_tmpc_dim \pgf@y
+ \dim_set_eq:NN \l_@@_tmpc_dim \pgf@y
\exp_args:NV \tikzset \l_@@_tikz_rule_tl
\use:x { \exp_not:N \draw [ \l_@@_tikz_rule_tl ] }
( \l_tmpb_dim , \l_tmpa_dim ) --
- ( \l_tmpb_dim , \l_tmpc_dim ) ;
+ ( \l_tmpb_dim , \l_@@_tmpc_dim ) ;
\end { tikzpicture }
}
% \end{macrocode}
@@ -14934,7 +15006,7 @@ version 2005/12/01 or later.
% \end{macrocode}
% |\l_tmpa_tl| is the number of row and |\l_tmpb_tl| the number of column. When
% we have found a column corresponding to a rule to draw, we note its number in
-% |\l_tmpc_tl|.
+% |\l_@@_tmpc_tl|.
% \begin{macrocode}
\tl_set:Nx \l_tmpa_tl { \int_use:N \l_@@_position_int }
\int_step_variable:nnNn \l_@@_start_int \l_@@_end_int
@@ -15039,7 +15111,7 @@ version 2005/12/01 or later.
\@@_qpoint:n { row - \int_use:N \l_@@_position_int }
\dim_set_eq:NN \l_tmpb_dim \pgf@y
\@@_qpoint:n { col - \int_eval:n { \l_@@_local_end_int + 1 } }
- \dim_set_eq:NN \l_tmpc_dim \pgf@x
+ \dim_set_eq:NN \l_@@_tmpc_dim \pgf@x
\bool_lazy_all:nT
{
{ \int_compare_p:nNn \l_@@_multiplicity_int > 1 }
@@ -15049,25 +15121,25 @@ version 2005/12/01 or later.
{
\group_begin:
\CT@drsc@
- \dim_set:Nn \l_tmpd_dim
+ \dim_set:Nn \l_@@_tmpd_dim
{
\l_tmpb_dim - ( \doublerulesep + \arrayrulewidth )
* ( \l_@@_multiplicity_int - 1 )
}
\pgfpathrectanglecorners
{ \pgfpoint \l_tmpa_dim \l_tmpb_dim }
- { \pgfpoint \l_tmpc_dim \l_tmpd_dim }
+ { \pgfpoint \l_@@_tmpc_dim \l_@@_tmpd_dim }
\pgfusepathqfill
\group_end:
}
\pgfpathmoveto { \pgfpoint \l_tmpa_dim \l_tmpb_dim }
- \pgfpathlineto { \pgfpoint \l_tmpc_dim \l_tmpb_dim }
+ \pgfpathlineto { \pgfpoint \l_@@_tmpc_dim \l_tmpb_dim }
\prg_replicate:nn { \l_@@_multiplicity_int - 1 }
{
\dim_sub:Nn \l_tmpb_dim \arrayrulewidth
\dim_sub:Nn \l_tmpb_dim \doublerulesep
\pgfpathmoveto { \pgfpoint \l_tmpa_dim \l_tmpb_dim }
- \pgfpathlineto { \pgfpoint \l_tmpc_dim \l_tmpb_dim }
+ \pgfpathlineto { \pgfpoint \l_@@_tmpc_dim \l_tmpb_dim }
}
\CT@arc@
\pgfsetlinewidth { 1.1 \arrayrulewidth }
@@ -15175,13 +15247,13 @@ version 2005/12/01 or later.
\@@_qpoint:n { col - \int_use:N \l_@@_local_start_int }
\dim_set_eq:NN \l_tmpa_dim \pgf@x
\@@_qpoint:n { row - \int_use:N \l_@@_position_int }
- \dim_set_eq:NN \l_tmpb_dim \pgf@y
+ \dim_set:Nn \l_tmpb_dim { \pgf@y - 0.5 \l_@@_rule_width_dim }
\@@_qpoint:n { col - \int_eval:n { \l_@@_local_end_int + 1 } }
- \dim_set_eq:NN \l_tmpc_dim \pgf@x
+ \dim_set_eq:NN \l_@@_tmpc_dim \pgf@x
\exp_args:NV \tikzset \l_@@_tikz_rule_tl
\use:x { \exp_not:N \draw [ \l_@@_tikz_rule_tl ] }
( \l_tmpa_dim , \l_tmpb_dim ) --
- ( \l_tmpc_dim , \l_tmpb_dim ) ;
+ ( \l_@@_tmpc_dim , \l_tmpb_dim ) ;
\end { tikzpicture }
}
% \end{macrocode}
@@ -15279,15 +15351,46 @@ version 2005/12/01 or later.
%
% \medskip
% The following command will create the customized rule (it is executed when the
-% final user uses the key |custom-line| in |\NiceMatrixOption|).
+% final user uses the key |custom-line| in |\NiceMatrixOptions|).
% \begin{macrocode}
\cs_new_protected:Npn \@@_custom_line:n #1
{
+ \str_clear_new:N \l_@@_command_str
+ \str_clear_new:N \l_@@_letter_str
+ \dim_zero_new:N \l_@@_rule_width_dim
+% \end{macrocode}
+% The token list |\l_tmpa_tl| is for the key |color|.
+% \begin{macrocode}
+ \tl_clear:N \l_tmpa_tl
+% \end{macrocode}
+% The flag |\l_tmpa_bool| will indicate whether the key |tikz| is present.
+% \begin{macrocode}
+ \bool_set_false:N \l_tmpa_bool
+% \end{macrocode}
+% The flag |\l_tmpb_bool| will indicate whether the key |width| is present.
+% \begin{macrocode}
+ \bool_set_false:N \l_tmpb_bool
\keys_set_known:nn { NiceMatrix / Custom-Line } { #1 }
+ \bool_if:NT \l_tmpa_bool
+ {
+% \end{macrocode}
+% We can't use |\c_@@_tikz_loaded_bool| to test whether \pkg{tikz} is loaded
+% because |\NiceMatrixOptions| may be used in the preamble of the document.
+% \begin{macrocode}
+ \cs_if_exist:NF \tikzpicture
+ { \@@_error:n { tikz~in~custom-line~without~tikz } }
+ \tl_if_empty:NF \l_tmpa_tl
+ { \@@_error:n { color~in~custom-line~with~tikz } }
+ }
+ \bool_if:NT \l_tmpb_bool
+ {
+ \bool_if:NF \l_tmpa_bool
+ { \@@_error:n { key~width~without~key~tikz } }
+ }
% \end{macrocode}
% If the final user only wants to draw horizontal rules, he does not need to
% specify a letter (for the vertical rules in the preamble of the array). On the
-% other hand, if he only wants to draw vertical rules, the does not need to
+% other hand, if he only wants to draw vertical rules, he does not need to
% define a command (which is the tool to draw horizontal rules in the array). Of
% course, a definition of custom lines with no letter and no command would be point-less.
%
@@ -15315,7 +15418,24 @@ version 2005/12/01 or later.
{ \@@_error:n { Several~letters } }
}
\str_if_empty:NF \l_@@_command_str
- { \exp_args:NnV \@@_define_h_custom_line:nn { #1 } \l_tmpc_int }
+ {
+% \end{macrocode}
+% The flag |\l_tmpa_bool| means that the key 'tikz' have been used. When the key
+% 'tikz' has not been used, the width of the rule is computed with the
+% multiplicity of the rule.
+% \begin{macrocode}
+ \bool_if:NF \l_tmpa_bool
+ {
+ \dim_set:Nn \l_@@_rule_width_dim
+ {
+ \arrayrulewidth * \l_@@_tmpc_int
+ + \doublerulesep * ( \l_@@_tmpc_int - 1 )
+ }
+ }
+ \exp_args:NnV \@@_define_h_custom_line:nn
+ { #1 }
+ \l_@@_rule_width_dim
+ }
}
}
% \end{macrocode}
@@ -15329,47 +15449,52 @@ version 2005/12/01 or later.
% However, the whole definition of the customized lines (as provided by the
% final user as argument of |custom-line|) will also be used further with
% other sets of keys (for instance |{NiceMatrix/Rules}|). That's why the
-% following set of keys has only entries for three keys.
+% following set of keys has only entries for a few keys.
% \begin{macrocode}
\keys_define:nn { NiceMatrix / Custom-Line }
{
letter .str_set:N = \l_@@_letter_str ,
letter .value_required:n = true ,
- letter .initial:n = ,
command .str_set:N = \l_@@_command_str ,
command .value_required:n = true ,
- command .initial:n = ,
+ multiplicity .int_set:N = \l_@@_tmpc_int ,
+ multiplicity .initial:n = 1 ,
+ multiplicity .value_required:n = true ,
+ color .tl_set:N = \l_tmpa_tl ,
+ color. value_required:n = true ,
% \end{macrocode}
-% We need to know the multiplicity of the rule right now in order to compute the
-% total width of the rule (and reserve space both in vertical and horizontal rules).
+% When the key |tikz| is used, the rule will be drawn with Tikz by using the set
+% of keys specified in the value of that key |tikz|.
% \begin{macrocode}
- multiplicity .int_set:N = \l_tmpc_int ,
- multiplicity .initial:n = 1 ,
- multiplicity .value_required:n = true ,
+ tikz .code:n = \bool_set_true:N \l_tmpa_bool ,
+% \end{macrocode}
+% The key |width| must be used only when the key |tikz| is used. When used, the
+% key |width| specifies the width of the rule: it will be used to reserve space
+% (in the preamble of the array or in the command for the horizontal rules).
+% \begin{macrocode}
+ width .code:n = \dim_set:Nn \l_@@_rule_width_dim { #1 }
+ \bool_set_true:N \l_tmpb_bool ,
+ width .value_required:n = true ,
}
% \end{macrocode}
%
% \bigskip
% The following command will create the command that the final user will use in
% its array to draw a horizontal rule (hence the `|h|` in the name). |#1| is the
-% whole set of keys to pass to |\@@_line:n| and |#2| is the multiplicity of
-% the line (number of consecutive rules).
+% whole set of keys to pass to |\@@_line:n| and |#2| is the widht of the whole
+% rule.
% \begin{macrocode}
\cs_new_protected:Npn \@@_define_h_custom_line:nn #1 #2
{
% \end{macrocode}
-% We use |\cs_set:cpn| and not |\cs_new:cpn| because we want a local définition.
+% We use |\cs_set:cpn| and not |\cs_new:cpn| because we want a local definition.
% Moreover, the command must \emph{not} be protected since it begins with |\noalign|.
% \begin{macrocode}
\cs_set:cpn \l_@@_command_str
{
\noalign
{
- \skip_vertical:n
- {
- \dim_eval:n
- { \arrayrulewidth * #2 + \doublerulesep * ( #2 - 1) }
- }
+ \skip_vertical:n { #2 }
\tl_gput_right:Nx \g_@@_internal_code_after_tl
{ \@@_hline:n { #1 , position = \int_eval:n { \c@iRow + 1 } } }
}
@@ -15377,24 +15502,26 @@ version 2005/12/01 or later.
}
% \end{macrocode}
%
+% The flag |\l_tmpa_bool| means that the key 'tikz' have been used. When the key
+% 'tikz' has not been used, the width of the rule is computed with the
+% multiplicity of the rule.
% \begin{macrocode}
\cs_new_protected:Npn \@@_custom_line_i:n #1
{
+ \bool_if:NF \l_tmpa_bool
+ {
+ \dim_set:Nn \l_@@_rule_width_dim
+ {
+ \arrayrulewidth * \l_@@_tmpc_int
+ + \doublerulesep * ( \l_@@_tmpc_int - 1)
+ }
+ }
\tl_gput_right:Nx \g_@@_preamble_tl
{
\exp_not:N !
- {
- \skip_horizontal:n
- {
- \dim_eval:n
- {
- \arrayrulewidth * \l_tmpc_int
- + \doublerulesep * ( \l_tmpc_int - 1)
- }
- }
- }
+ { \skip_horizontal:n { \dim_use:N \l_@@_rule_width_dim } }
}
- \tl_gput_right:Nx \g_@@_internal_code_after_tl
+ \tl_gput_right:Nx \g_@@_internal_code_after_tl
{ \@@_vline:n { #1 , position = \@@_succ:n \c@jCol } }
}
% \end{macrocode}
@@ -16833,9 +16960,9 @@ version 2005/12/01 or later.
\@@_qpoint:n { col - #2 }
\dim_set_eq:NN \l_tmpb_dim \pgf@x
\@@_qpoint:n { row - \@@_succ:n { \l_@@_last_row_int } }
- \dim_set_eq:NN \l_tmpc_dim \pgf@y
+ \dim_set_eq:NN \l_@@_tmpc_dim \pgf@y
\@@_qpoint:n { col - \@@_succ:n { \l_@@_last_col_int } }
- \dim_set_eq:NN \l_tmpd_dim \pgf@x
+ \dim_set_eq:NN \l_@@_tmpd_dim \pgf@x
% \end{macrocode}
%
% We construct the node for the block with the name |(#1-#2-block)|.
@@ -16845,7 +16972,7 @@ version 2005/12/01 or later.
% \begin{macrocode}
\@@_pgf_rect_node:nnnnn
{ \@@_env: - #1 - #2 - block }
- \l_tmpb_dim \l_tmpa_dim \l_tmpd_dim \l_tmpc_dim
+ \l_tmpb_dim \l_tmpa_dim \l_@@_tmpd_dim \l_@@_tmpc_dim
\str_if_empty:NF \l_@@_block_name_str
{
\pgfnodealias
@@ -16902,7 +17029,7 @@ version 2005/12/01 or later.
\@@_qpoint:n { col - #2 }
\dim_set_eq:NN \l_tmpb_dim \pgf@x
}
- \dim_set:Nn \l_tmpd_dim { - \c_max_dim }
+ \dim_set:Nn \l_@@_tmpd_dim { - \c_max_dim }
\int_step_inline:nnn \l_@@_first_row_int \g_@@_row_total_int
{
\cs_if_exist:cT
@@ -16913,18 +17040,18 @@ version 2005/12/01 or later.
\pgfpointanchor
{ \@@_env: - ##1 - \int_use:N \l_@@_last_col_int }
{ east }
- \dim_set:Nn \l_tmpd_dim { \dim_max:nn \l_tmpd_dim \pgf@x }
+ \dim_set:Nn \l_@@_tmpd_dim { \dim_max:nn \l_@@_tmpd_dim \pgf@x }
}
}
}
- \dim_compare:nNnT \l_tmpd_dim = { - \c_max_dim }
+ \dim_compare:nNnT \l_@@_tmpd_dim = { - \c_max_dim }
{
\@@_qpoint:n { col - \@@_succ:n { \l_@@_last_col_int } }
- \dim_set_eq:NN \l_tmpd_dim \pgf@x
+ \dim_set_eq:NN \l_@@_tmpd_dim \pgf@x
}
\@@_pgf_rect_node:nnnnn
{ \@@_env: - #1 - #2 - block - short }
- \l_tmpb_dim \l_tmpa_dim \l_tmpd_dim \l_tmpc_dim
+ \l_tmpb_dim \l_tmpa_dim \l_@@_tmpd_dim \l_@@_tmpc_dim
}
% \end{macrocode}
%
@@ -17106,7 +17233,7 @@ version 2005/12/01 or later.
\@@_qpoint:n { row - \l_tmpa_tl }
\dim_set:Nn \l_tmpb_dim { \pgf@y }
\@@_qpoint:n { col - \l_tmpb_tl }
- \dim_set:Nn \l_tmpc_dim { \pgf@x }
+ \dim_set:Nn \l_@@_tmpc_dim { \pgf@x }
\@@_cut_on_hyphen:w #3 \q_stop
\int_compare:nNnT \l_tmpa_tl > \c@iRow
{ \tl_set:Nx \l_tmpa_tl { \int_use:N \c@iRow } }
@@ -17115,10 +17242,10 @@ version 2005/12/01 or later.
\@@_qpoint:n { row - \@@_succ:n \l_tmpa_tl }
\dim_set:Nn \l_tmpa_dim { \pgf@y }
\@@_qpoint:n { col - \@@_succ:n \l_tmpb_tl }
- \dim_set:Nn \l_tmpd_dim { \pgf@x }
+ \dim_set:Nn \l_@@_tmpd_dim { \pgf@x }
\pgfpathrectanglecorners
- { \pgfpoint \l_tmpc_dim \l_tmpb_dim }
- { \pgfpoint \l_tmpd_dim \l_tmpa_dim }
+ { \pgfpoint \l_@@_tmpc_dim \l_tmpb_dim }
+ { \pgfpoint \l_@@_tmpd_dim \l_tmpa_dim }
\pgfsetlinewidth { 1.1 \l_@@_line_width_dim }
% \end{macrocode}
% We can't use |\pgfusepathqstroke| because of the key |rounded-corners|.
@@ -17155,19 +17282,19 @@ version 2005/12/01 or later.
\dim_set_eq:NN \l_@@_line_width_dim \arrayrulewidth
\keys_set_known:nn { NiceMatrix / BlockBorders } { #1 }
\@@_cut_on_hyphen:w #2 \q_stop
- \tl_set_eq:NN \l_tmpc_tl \l_tmpa_tl
- \tl_set_eq:NN \l_tmpd_tl \l_tmpb_tl
+ \tl_set_eq:NN \l_@@_tmpc_tl \l_tmpa_tl
+ \tl_set_eq:NN \l_@@_tmpd_tl \l_tmpb_tl
\@@_cut_on_hyphen:w #3 \q_stop
\tl_set:Nx \l_tmpa_tl { \int_eval:n { \l_tmpa_tl + 1 } }
\tl_set:Nx \l_tmpb_tl { \int_eval:n { \l_tmpb_tl + 1 } }
- \int_step_inline:nnn \l_tmpd_tl \l_tmpb_tl
+ \int_step_inline:nnn \l_@@_tmpd_tl \l_tmpb_tl
{
\use:x
{
\@@_vline:n
{
position = ##1 ,
- start = \l_tmpc_tl ,
+ start = \l_@@_tmpc_tl ,
end = \@@_pred:n \l_tmpa_tl
}
}
@@ -17178,19 +17305,19 @@ version 2005/12/01 or later.
\dim_set_eq:NN \l_@@_line_width_dim \arrayrulewidth
\keys_set_known:nn { NiceMatrix / BlockBorders } { #1 }
\@@_cut_on_hyphen:w #2 \q_stop
- \tl_set_eq:NN \l_tmpc_tl \l_tmpa_tl
- \tl_set_eq:NN \l_tmpd_tl \l_tmpb_tl
+ \tl_set_eq:NN \l_@@_tmpc_tl \l_tmpa_tl
+ \tl_set_eq:NN \l_@@_tmpd_tl \l_tmpb_tl
\@@_cut_on_hyphen:w #3 \q_stop
\tl_set:Nx \l_tmpa_tl { \int_eval:n { \l_tmpa_tl + 1 } }
\tl_set:Nx \l_tmpb_tl { \int_eval:n { \l_tmpb_tl + 1 } }
- \int_step_inline:nnn \l_tmpc_tl \l_tmpa_tl
+ \int_step_inline:nnn \l_@@_tmpc_tl \l_tmpa_tl
{
\use:x
{
\@@_hline:n
{
position = ##1 ,
- start = \l_tmpd_tl ,
+ start = \l_@@_tmpd_tl ,
end = \int_eval:n { \l_tmpb_tl - 1 }
}
}
@@ -17217,8 +17344,8 @@ version 2005/12/01 or later.
{ \@@_error:nn { bad~border } { ##1 } }
}
\@@_cut_on_hyphen:w #2 \q_stop
- \tl_set_eq:NN \l_tmpc_tl \l_tmpa_tl
- \tl_set_eq:NN \l_tmpd_tl \l_tmpb_tl
+ \tl_set_eq:NN \l_@@_tmpc_tl \l_tmpa_tl
+ \tl_set_eq:NN \l_@@_tmpd_tl \l_tmpb_tl
\@@_cut_on_hyphen:w #3 \q_stop
\tl_set:Nx \l_tmpa_tl { \int_eval:n { \l_tmpa_tl + 1 } }
\tl_set:Nx \l_tmpb_tl { \int_eval:n { \l_tmpb_tl + 1 } }
@@ -17230,11 +17357,11 @@ version 2005/12/01 or later.
\clist_if_in:NnT \l_@@_borders_clist { right }
{ \@@_stroke_vertical:n \l_tmpb_tl }
\clist_if_in:NnT \l_@@_borders_clist { left }
- { \@@_stroke_vertical:n \l_tmpd_tl }
+ { \@@_stroke_vertical:n \l_@@_tmpd_tl }
\clist_if_in:NnT \l_@@_borders_clist { bottom }
{ \@@_stroke_horizontal:n \l_tmpa_tl }
\clist_if_in:NnT \l_@@_borders_clist { top }
- { \@@_stroke_horizontal:n \l_tmpc_tl }
+ { \@@_stroke_horizontal:n \l_@@_tmpc_tl }
\endpgfpicture
}
}
@@ -17246,13 +17373,13 @@ version 2005/12/01 or later.
% \begin{macrocode}
\cs_new_protected:Npn \@@_stroke_vertical:n #1
{
- \@@_qpoint:n \l_tmpc_tl
+ \@@_qpoint:n \l_@@_tmpc_tl
\dim_set:Nn \l_tmpb_dim { \pgf@y + 0.5 \l_@@_line_width_dim }
\@@_qpoint:n \l_tmpa_tl
- \dim_set:Nn \l_tmpc_dim { \pgf@y + 0.5 \l_@@_line_width_dim }
+ \dim_set:Nn \l_@@_tmpc_dim { \pgf@y + 0.5 \l_@@_line_width_dim }
\@@_qpoint:n { #1 }
\pgfpathmoveto { \pgfpoint \pgf@x \l_tmpb_dim }
- \pgfpathlineto { \pgfpoint \pgf@x \l_tmpc_dim }
+ \pgfpathlineto { \pgfpoint \pgf@x \l_@@_tmpc_dim }
\pgfusepathqstroke
}
% \end{macrocode}
@@ -17263,7 +17390,7 @@ version 2005/12/01 or later.
% \begin{macrocode}
\cs_new_protected:Npn \@@_stroke_horizontal:n #1
{
- \@@_qpoint:n \l_tmpd_tl
+ \@@_qpoint:n \l_@@_tmpd_tl
\clist_if_in:NnTF \l_@@_borders_clist { left }
{ \dim_set:Nn \l_tmpa_dim { \pgf@x - 0.5 \l_@@_line_width_dim } }
{ \dim_set:Nn \l_tmpa_dim { \pgf@x + 0.5 \l_@@_line_width_dim } }
@@ -17521,10 +17648,10 @@ version 2005/12/01 or later.
\dim_set_eq:NN \l_tmpb_dim \pgf@x
\pgfpathmoveto { \pgfpoint \l_tmpb_dim \l_tmpa_dim }
\@@_qpoint:n { row - \@@_succ:n { #3 } }
- \dim_set_eq:NN \l_tmpc_dim \pgf@y
+ \dim_set_eq:NN \l_@@_tmpc_dim \pgf@y
\@@_qpoint:n { col - \@@_succ:n { #4 } }
- \dim_set_eq:NN \l_tmpd_dim \pgf@x
- \pgfpathlineto { \pgfpoint \l_tmpd_dim \l_tmpc_dim }
+ \dim_set_eq:NN \l_@@_tmpd_dim \pgf@x
+ \pgfpathlineto { \pgfpoint \l_@@_tmpd_dim \l_@@_tmpc_dim }
{
% \end{macrocode}
% The command |\CT@arc@| is a command of \pkg{colortbl} which sets the color of
@@ -17537,7 +17664,7 @@ version 2005/12/01 or later.
}
\pgfset { inner~sep = 1 pt }
\pgfscope
- \pgftransformshift { \pgfpoint \l_tmpb_dim \l_tmpc_dim }
+ \pgftransformshift { \pgfpoint \l_tmpb_dim \l_@@_tmpc_dim }
\pgfnode { rectangle } { south~west }
{
\begin { minipage } { 20 cm }
@@ -17547,7 +17674,7 @@ version 2005/12/01 or later.
{ }
{ }
\endpgfscope
- \pgftransformshift { \pgfpoint \l_tmpd_dim \l_tmpa_dim }
+ \pgftransformshift { \pgfpoint \l_@@_tmpd_dim \l_tmpa_dim }
\pgfnode { rectangle } { north~east }
{
\begin { minipage } { 20 cm }
@@ -17826,13 +17953,13 @@ version 2005/12/01 or later.
\peek_remove_spaces:n
{
\@@_cut_on_hyphen:w #3 \q_stop
- \tl_clear_new:N \l_tmpc_tl
- \tl_clear_new:N \l_tmpd_tl
- \tl_set_eq:NN \l_tmpc_tl \l_tmpa_tl
- \tl_set_eq:NN \l_tmpd_tl \l_tmpb_tl
+ \tl_clear_new:N \l_@@_tmpc_tl
+ \tl_clear_new:N \l_@@_tmpd_tl
+ \tl_set_eq:NN \l_@@_tmpc_tl \l_tmpa_tl
+ \tl_set_eq:NN \l_@@_tmpd_tl \l_tmpb_tl
\@@_cut_on_hyphen:w #2 \q_stop
\seq_gput_right:Nx \g_@@_submatrix_seq
- { { \l_tmpa_tl } { \l_tmpb_tl } { \l_tmpc_tl } { \l_tmpd_tl } }
+ { { \l_tmpa_tl } { \l_tmpb_tl } { \l_@@_tmpc_tl } { \l_@@_tmpd_tl } }
\tl_gput_right:Nn \g_@@_internal_code_after_tl
{ \SubMatrix { #1 } { #2 } { #3 } { #4 } [ #5 ] }
}
@@ -17854,7 +17981,7 @@ version 2005/12/01 or later.
% For explanations about the construction with rescanning of the preamble, see
% the documentation for the user command |\Cdots|.
% \begin{macrocode}
-\AtBeginDocument
+\hook_gput_code:nnn { begindocument } { . }
{
\tl_set:Nn \l_@@_argspec_tl { m m m m O { } E { _ ^ } { { } { } } }
\tl_set_rescan:Nno \l_@@_argspec_tl { } \l_@@_argspec_tl
@@ -18564,16 +18691,6 @@ version 2005/12/01 or later.
}
% \end{macrocode}
%
-% \medskip
-% Maybe we will completely delete the key 'transparent' in a future version.
-% \begin{macrocode}
-\@@_msg_new:nn { Key~transparent }
- {
- The~key~'transparent'~is~now~obsolete~(because~it's~name~
- is~not~clear).~You~must~use~the~conjonction~of~'renew-dots'~
- and~'renew-matrix'.~This~error~is~fatal.
- }
-% \end{macrocode}
%
% \begin{macrocode}
\keys_define:nn { NiceMatrix / Package }
@@ -18949,6 +19066,14 @@ version 2005/12/01 or later.
If~you~go~on,~it~will~be~ignored.
}
% \end{macrocode}
+%
+% \begin{macrocode}
+\@@_msg_new:nn { key~width~without~key~tikz }
+ {
+ In~'custom-line',~you~have~used~'width'~without~'tikz'.~That's~not~correct.~
+ If~you~go~on,~that~key~'width'~will~be~discarded.
+ }
+% \end{macrocode}
%
% \begin{macrocode}
\@@_msg_new:nn { Several~letters }
@@ -19142,6 +19267,25 @@ version 2005/12/01 or later.
% \end{macrocode}
%
% \begin{macrocode}
+\@@_msg_new:nn { tikz~in~custom-line~without~tikz }
+ {
+ You~have~used~the~key~'tikz'~in~the~definition~of~a~
+ customized~line~(with~'custom-line')~but~Tikz~is~not~loaded.~
+ You~can~go~on~but~you~will~have~another~error~if~you~actually~
+ use~that~custom~line.
+ }
+% \end{macrocode}
+%
+% \begin{macrocode}
+\@@_msg_new:nn { color~in~custom-line~with~tikz }
+ {
+ In~a~'custom-line',~you~have~used~both~'tikz'~and~'color',~
+ which~is~forbidden~(you~should~use~'color'~inside~the~key~'tikz').~
+ If~you~go~on,~the~key~'color'~will~be~discarded.
+ }
+% \end{macrocode}
+%
+% \begin{macrocode}
\@@_msg_new:nn { Wrong~last~row }
{
You~have~used~'last-row=\int_use:N \l_@@_last_row_int'~but~your~
@@ -20107,6 +20251,10 @@ version 2005/12/01 or later.
%
% Key |respect-arraystretch|.
%
+%
+% \subsection*{Changes between version 6.5 and 6.6}
+%
+% Keys |tikz| and |width| in |custom-line|.
% \PrintIndex
%
% \tableofcontents
diff --git a/macros/latex/contrib/nicematrix/nicematrix.pdf b/macros/latex/contrib/nicematrix/nicematrix.pdf
index 703b8f8c3b..d96ed3fa4a 100644
--- a/macros/latex/contrib/nicematrix/nicematrix.pdf
+++ b/macros/latex/contrib/nicematrix/nicematrix.pdf
Binary files differ