From 614c1765c3e9a6f5665cbf4f4fb60e768054c2d4 Mon Sep 17 00:00:00 2001 From: Norbert Preining Date: Sat, 1 Aug 2020 03:02:43 +0000 Subject: CTAN sync 202008010302 --- .../latex/contrib/nicematrix/nicematrix-french.tex | 1476 ++++++++++++-------- 1 file changed, 926 insertions(+), 550 deletions(-) (limited to 'macros/latex/contrib/nicematrix/nicematrix-french.tex') diff --git a/macros/latex/contrib/nicematrix/nicematrix-french.tex b/macros/latex/contrib/nicematrix/nicematrix-french.tex index 55491dddbd..bd13654d0d 100644 --- a/macros/latex/contrib/nicematrix/nicematrix-french.tex +++ b/macros/latex/contrib/nicematrix/nicematrix-french.tex @@ -146,7 +146,7 @@ commande est le groupe TeX courant : elles sont semi-globales). \bigskip {\bfseries \color{red} Important -Dans cette version 5.0 de \pkg{nicematrix}, on doit utiliser les lettres |l|, |c| et +Depuis la version 5.0 de \pkg{nicematrix}, on doit utiliser les lettres |l|, |c| et |r| dans les préambules des environnements et non plus les lettres |L|, |C| et |R|. @@ -168,36 +168,35 @@ L'extension \pkg{nicematrix} définit les nouveaux environnements suivants : \begin{ttfamily} \setlength{\tabcolsep}{3mm} \begin{tabular}{llll} -\{NiceTabular\} & \{NiceArray\} & \{NiceMatrix\} \\ - & \{pNiceArray\} & \{pNiceMatrix\} \\ - & \{bNiceArray\} & \{bNiceMatrix\} \\ - & \{BNiceArray\} & \{BNiceMatrix\} \\ - & \{vNiceArray\} & \{vNiceMatrix\} \\ - & \{VNiceArray\} & \{VNiceMatrix\} +\{NiceTabular\} & \{NiceArray\} & \{NiceMatrix\} \\ +\{NiceTabular*\} & \{pNiceArray\} & \{pNiceMatrix\} \\ + & \{bNiceArray\} & \{bNiceMatrix\} \\ + & \{BNiceArray\} & \{BNiceMatrix\} \\ + & \{vNiceArray\} & \{vNiceMatrix\} \\ + & \{VNiceArray\} & \{VNiceMatrix\} \end{tabular} \end{ttfamily} \medskip -Les environnements |{NiceArray}| et |{NiceTabular}| sont similaires aux environnements |{array}| et |{tabular}| de +Les environnements |{NiceArray}|, |{NiceTabular}| et |{NiceTabular*}| sont +similaires aux environnements |{array}|, |{tabular}| et |{tabular*}| de l'extension \pkg{array} (qui est chargée par \pkg{nicematrix}). \medskip -Néanmoins, dans |{NiceArray}| (et ses variantes), les colonnes de type |w| (ex. : |wc{1cm}|) sont composées en mode -mathématique alors que dans |{array}| de \pkg{array}, elles sont composées en -mode texte. +Les environnements |{pNiceArray}|, |{bNiceArray}|, etc. n'ont pas d'équivalents +dans \pkg{array}. \medskip -Les environnements |{pNiceArray}|, |{bNiceArray}|, etc. n'ont pas d'équivalents dans \pkg{array}. +Les environnements |{NiceMatrix}|, |{pNiceMatrix}|, etc. sont similaires aux +environnements correspondants de l'\pkg{amsmath} (qui est chargée par +\pkg{nicematrix}) : |{matrix}|, |{pmatrix}|, etc. \medskip -Les environnements |{NiceMatrix}|, |{pNiceMatrix}|, etc. sont similaires aux environnements correspondants de -l'\pkg{amsmath} (qui est chargée par \pkg{nicematrix}) : |{matrix}|, |{pmatrix}|, etc. - -\medskip -Tous les environnements de l'extension \pkg{nicematrix} acceptent, entre crochets, une liste optionnelle de paires -de la forme \textsl{clé=valeur}. {\bfseries Il doit n'y avoir aucun espace devant le crochet ouvrant (|[|) de cette -liste d'options.} +Tous les environnements de l'extension \pkg{nicematrix} acceptent, entre +crochets, une liste optionnelle de paires de la forme \textsl{clé=valeur}. +{\bfseries Il doit n'y avoir aucun espace devant le crochet ouvrant (|[|) de + cette liste d'options.} \bigskip \textbf{Important} @@ -215,8 +214,9 @@ doit être chargé avec l'option |define-L-C-R|. \section{L'espace vertical entre les rangées} -Il est bien connu que certaines rangées des tableaux créés par défault avec LaTeX sont trop proches l'une de -l'autre. On en donne ci-dessous un exemple classique. +Il est bien connu que certaines rangées des tableaux créés par défault avec +LaTeX sont trop proches l'une de l'autre. On en donne ci-dessous un exemple +classique. \medskip \begin{BVerbatim}[baseline=c,boxwidth=9cm] @@ -231,13 +231,17 @@ $\begin{pmatrix} \end{pmatrix}$ \bigskip -En s'inspirant de l'extension \pkg{cellspace} qui traite de ce problème, l'extension \pkg{nicematrix} propose deux -clés |cell-space-top-limit| et |cell-space-bottom-limit| qui sont similaires aux deux paramètres -|\cellspacetoplimit| et |\cellspacebottomlimit| proposés par \pkg{cellspace}. La valeur initiale de ces paramètres -est $0$~pt pour que les environnements de \pkg{nicematrix} aient par défaut le même comportement que ceux de -\pkg{array} et de l'\pkg{amsmath} mais une valeur de $1$~pt serait un bon choix. On conseille de régler leurs -valeurs avec la commande |\NiceMatrixOptions|.\footnote{On remarquera que ces paramètres s'appliquent aussi aux - colonnes de type |S| de \pkg{siunitx} alors que \pkg{cellspace} n'est pas utilisable avec ces colonnes.} +En s'inspirant de l'extension \pkg{cellspace} qui traite de ce problème, +l'extension \pkg{nicematrix} propose deux clés |cell-space-top-limit| et +|cell-space-bottom-limit| qui sont similaires aux deux paramètres +|\cellspacetoplimit| et |\cellspacebottomlimit| proposés par \pkg{cellspace}. La +valeur initiale de ces paramètres est $0$~pt pour que les environnements de +\pkg{nicematrix} aient par défaut le même comportement que ceux de \pkg{array} +et de l'\pkg{amsmath} mais une valeur de $1$~pt serait un bon choix. On +conseille de régler leurs valeurs avec la commande +|\NiceMatrixOptions|.\footnote{On remarquera que ces paramètres s'appliquent + aussi aux colonnes de type |S| de \pkg{siunitx} alors que \pkg{cellspace} + n'est pas utilisable avec ces colonnes.} \medskip \begin{Verbatim} @@ -265,9 +269,10 @@ $\begin{pNiceMatrix} \bigskip \section{La clé baseline} -L'extension \pkg{nicematrix} propose une option |baseline| pour la position verticale des tableaux. Cette -option |baseline| prend comme valeur un entier qui indique le numéro de rangée dont la ligne de base servira de -ligne de base pour le tableau. +L'extension \pkg{nicematrix} propose une option |baseline| pour la position +verticale des tableaux. Cette option |baseline| prend comme valeur un entier qui +indique le numéro de rangée dont la ligne de base servira de ligne de base pour +le tableau. \medskip \begin{BVerbatim}[baseline=c,boxwidth=9cm] @@ -284,17 +289,18 @@ $A = \begin{pNiceMatrix}[baseline=2] \end{pNiceMatrix}$ -\interitem -L'option |baseline| peut aussi prendre les trois valeurs spéciales |t|, |c| et |b|. Ces trois lettres peuvent aussi -être utilisées de manière absolue comme pour l'option des environnements |{tabular}| et |{array}| de \pkg{array}. -La valeur initiale de |baseline| est~|c|. +\interitem L'option |baseline| peut aussi prendre les trois valeurs spéciales +|t|, |c| et |b|. Ces trois lettres peuvent aussi être utilisées de manière +absolue comme pour l'option des environnements |{tabular}| et |{array}| de +\pkg{array}. La valeur initiale de |baseline| est~|c|. \bigskip -Dans l'exemple suivant, on utilise l'option |t| (synonyme de |baseline=t|) immédiatement après un |\item| de liste. -On remarquera que la présence d'un |\hline| initial n'empêche pas l'alignement sur la ligne de base de la première -rangée (avec |{tabular}| ou |{array}| de \pkg{array}, il faut utiliser |\firsthline|\footnote{On peut aussi utiliser |\firsthline| - dans les environnements de \pkg{nicematrix}.}). +Dans l'exemple suivant, on utilise l'option |t| (synonyme de |baseline=t|) +immédiatement après un |\item| de liste. On remarquera que la présence d'un +|\hline| initial n'empêche pas l'alignement sur la ligne de base de la première +rangée (avec |{tabular}| ou |{array}| de \pkg{array}, il faut utiliser +|\firsthline|. \smallskip \begin{BVerbatim}[baseline=c,boxwidth=9cm] @@ -365,15 +371,17 @@ u_n & 1 & 2 & 4 & 8 & 16 & 32 \\ \section{Les blocs} \label{Block} -Dans les environnements de \pkg{nicematrix}, on peut utiliser la commande |\Block| pour placer un élément au centre -d'un rectangle de cases fusionnées. La commande |\Block| ne crée pas d'espace par elle-même. +Dans les environnements de \pkg{nicematrix}, on peut utiliser la commande +|\Block| pour placer un élément au centre d'un rectangle de cases fusionnées. La +commande |\Block| ne crée pas d'espace par elle-même. -La commande |\Block| doit être utilisée dans la case supérieure gauche du bloc avec deux arguments. Le premier -argument est la taille de ce bloc avec la syntaxe $i$-$j$ où $i$ est le nombre de rangées et $j$ le nombre de -colonnes du bloc. Le deuxième argument, est, sans surprise, le contenu du bloc. +La commande |\Block| doit être utilisée dans la case supérieure gauche du bloc +avec deux arguments. Le premier argument est la taille de ce bloc avec la +syntaxe $i$-$j$ où $i$ est le nombre de rangées et $j$ le nombre de colonnes du +bloc. Le deuxième argument, est, sans surprise, le contenu du bloc. -Dans |{NiceTabular}|, le contenu est composé en mode texte. Dans les autres environnements, il est composé en mode -mathématique. +Dans |{NiceTabular}|, le contenu est composé en mode texte. Dans les autres +environnements, il est composé en mode mathématique. \medskip \begin{BVerbatim} @@ -397,10 +405,10 @@ arum & iris & jacinthe & muguet \end{center} -\interitem -On remarquera que le centrage horizontal du contenu des blocs est correct même si un espacement des colonnes a été -demandé par une instruction comme |!{\qquad}| dans le préambule (ce n'est pas le cas avec |\multicolumn|). Dans -l'exemple suivant, l'en-tête «Premier groupe» est correctement centré. +\interitem On remarquera que le centrage horizontal du contenu des blocs est +correct même si un espacement des colonnes a été demandé par une instruction +comme |!{\qquad}| dans le préambule (ce n'est pas le cas avec |\multicolumn|). +Dans l'exemple suivant, l'en-tête «Premier groupe» est correctement centré. \medskip \begin{center} @@ -458,10 +466,11 @@ $\begin{bNiceArray}{ccc|c}[margin] \end{bNiceArray}$ \bigskip -On peut souhaiter agrandir la taille du «$A$» placé dans le bloc de l'exemple précédent. Comme il est composé en -mode mathématique, on ne peut pas directement utiliser une commande comme |\large|, |\Large| ou |\LARGE|. C'est -pourquoi une option à mettre entre chevrons est proposée par |\Block| pour spécifier du code LaTeX qui sera inséré -\emph{avant} le début du mode mathématique. +On peut souhaiter agrandir la taille du «$A$» placé dans le bloc de l'exemple +précédent. Comme il est composé en mode mathématique, on ne peut pas directement +utiliser une commande comme |\large|, |\Large| ou |\LARGE|. C'est pourquoi une +option à mettre entre chevrons est proposée par |\Block| pour spécifier du code +LaTeX qui sera inséré \emph{avant} le début du mode mathématique. \medskip \begin{BVerbatim}[baseline=c,boxwidth=10.6cm] @@ -484,60 +493,93 @@ $\begin{bNiceArray}{ccc|c}[margin] \section{Les filets horizontaux et verticaux} -Les techniques habituelles pour tracer des filets peuvent être utilisées dans les environnements de -\pkg{nicematrix}, à l'exception de |\vline|. +Les techniques habituelles pour tracer des filets peuvent être utilisées dans +les environnements de \pkg{nicematrix}, à l'exception de |\vline|. Il y a +néanmoins quelques petites différences de comportement avec les environnements +classiques. -\subsection{L'épaisseur et la couleur des filets} -Les environnements de \pkg{nicematrix} proposent une clé |rules/width| pour fixer la largeur (en fait l'épaisseur) -des filets dans l'environnement. En fait, cette clé ne fait que fixer la valeur de |\arrayrulewidth|. +\bigskip +\subsection{Quelques différences avec les environnements classiques} -\smallskip -On sait que \pkg{colortbl} propose la commande |\arrayrulecolor| pour spécifier la couleur de ces filets. +\subsubsection{Les filets verticaux} -\smallskip -Avec \pkg{nicematrix}, il est possible de spécifier une couleur même si \pkg{colortbl} n'est pas chargé. Par souci -de compatibilité, la commande est nommée également |\arrayrulecolor|. Les environnements de \pkg{nicematrix} -proposent également une clé |rules/color| qui permet de fixer cette couleur pour l'environnement en question. +Dans les environnements de \pkg{nicematrix}, les filets verticaux spécifiés par +\verb+|+ dans le préambule des environnements ne sont jamais coupés, même en cas +de ligne incomplète ou de double filet horizontal spécifié par |\hline\hline| +(il n'y a pas besoin d'utiliser \pkg{hhline}).\footnote{Il s'agit là du comportement depuis la version 5.1 de + \pkg{nicematrix}. Dans les versions précédentes, le comportement était + le comportement par défaut de \pkg{array}.} -\medskip -\begin{scope} -\hfuzz=10cm -\begin{BVerbatim}[baseline=c,boxwidth=9.5cm] -\begin{NiceTabular}{|ccc|}[~emphase#rules/color=[gray]{0.9},rules/width=1pt@] -\hline -rose & tulipe & lys \\ -arum & iris & violette \\ -muguet & dahlia & souci \\ -\hline +\bigskip +\begin{BVerbatim}[baseline=c,boxwidth=10cm] +\begin{NiceTabular}{|c|c|} \hline +Premier & Deuxième \\ ~emphase#\hline\hline@ +Paul \\ \hline +Marie & Pauline \\ \hline \end{NiceTabular} \end{BVerbatim} -\begin{NiceTabular}{|ccc|}[rules/color=[gray]{0.9},rules/width=1pt] -\hline -rose & tulipe & lys \\ -arum & iris & violette \\ -muguet & dahlia & souci \\ -\hline +% +\begin{NiceTabular}{|c|c|}[c] \hline +Premier & Deuxième \\ \hline\hline +Paul \\ \hline +Marie & Pauline \\ \hline \end{NiceTabular} -\end{scope} -\medskip -Si on veut définir de nouveaux spécificateurs de colonnes pour des filets (par exemple plus épais ou bien d'une -couleur spécifique), on aura peut-être intérêt à utiliser la commande |\OnlyMainNiceMatrix| décrite p.~\pageref{OnlyMainNiceMatrix}. +\bigskip +Si vous utilisez \pkg{booktabs} (qui fournit |\toprule|, |\midrule|, +|\bottomrule|, etc.) et que vous tenez absolument à mettre des filets verticaux +(ce qui est contraire à l'esprit à \pkg{booktabs}), vous constaterez que les +filets tracés par \pkg{nicematrix} sont compatibles avec \pkg{booktabs}. +\medskip +\begin{BVerbatim}[baseline=c,boxwidth=10.5cm] +$\begin{NiceArray}{~emphase#|cccc|@} \toprule +a & b & c & d \\ \midrule +1 & 2 & 3 & 4 \\ +1 & 2 & 3 & 4 \\ \bottomrule +\end{NiceArray}$ +\end{BVerbatim} +% +$\begin{NiceArray}{|cccc|} +\toprule +a & b & c & d \\ +\midrule +1 & 2 & 3 & 4 \\ +1 & 2 & 3 & 4 \\ +\bottomrule +\end{NiceArray}$ \bigskip -\subsection{Une remarque concernant \textbackslash cline} +Il reste néanmoins possible de définir un spécificateur, nommé par exemple +\verb|I|, pour tracer des filets verticaux avec le comportement standard de +\pkg{array} : +% +\begin{Verbatim} +\newcolumntype{I}{!{\vrule}} +\end{Verbatim} + +En fait, en l'occurrence, il serait peut-être plus habile d'insérer +|\OnlyMainNiceMatrix| (cf. p.~\pageref{OnlyMainNiceMatrix}) : +\begin{Verbatim} +\newcolumntype{I}{!{\OnlyMainNiceMatrix{\vrule}}} +\end{Verbatim} + + + +\subsubsection{La commande \textbackslash cline} \label{remark-cline} -Les traits verticaux et horizontaux que l'on insère avec |\hline| et le spécificateur de colonne «\verb+|+» de -\pkg{array} rendent le tableau plus large ou plus long d'une quantité égale à la largeur du trait. +Les traits verticaux et horizontaux que l'on insère avec |\hline| et le +spécificateur de colonne «\verb+|+» de \pkg{array} rendent le tableau plus large +ou plus long d'une quantité égale à la largeur du trait (avec \pkg{array} et +aussi avec \pkg{nicematrix}). \smallskip -Pour des raisons historiques, il n'en est pas de même pour la commande |\cline|, comme on peut le voir avec -l'exemple suivant. +Pour des raisons historiques, il n'en est pas de même pour la commande |\cline|, +comme on peut le voir avec l'exemple suivant. \medskip \begin{BVerbatim}[baseline=c,boxwidth=10cm] @@ -560,8 +602,9 @@ A&B&C&D \\ \end{scope} \medskip -Dans les environnements de \pkg{nicematrix}, cette situation est corrigée (il est néanmoins possible de revenir au -comportement par défaut de |\cline| avec la clé |standard-cline|). +Dans les environnements de \pkg{nicematrix}, cette situation est corrigée (il +est néanmoins possible de revenir au comportement par défaut de |\cline| avec la +clé |standard-cline|). \medskip \begin{BVerbatim}[baseline=c,boxwidth=10cm] @@ -584,12 +627,63 @@ A&B&C&D \\ \end{scope} + +\subsection{L'épaisseur et la couleur des filets} + +Les environnements de \pkg{nicematrix} proposent une clé |rules/width| pour +fixer la largeur (en fait l'épaisseur) des filets dans l'environnement. En fait, +cette clé ne fait que fixer la valeur de |\arrayrulewidth|. + +\smallskip +On sait que \pkg{colortbl} propose la commande |\arrayrulecolor| pour spécifier +la couleur de ces filets. + +\smallskip +Avec \pkg{nicematrix}, il est possible de spécifier une couleur même si +\pkg{colortbl} n'est pas chargé. Par souci de compatibilité, la commande est +nommée également |\arrayrulecolor|. Les environnements de \pkg{nicematrix} +proposent également une clé |rules/color| qui permet de fixer cette couleur pour +l'environnement en question. + +\medskip +\begin{scope} +\hfuzz=10cm +\begin{BVerbatim}[baseline=c,boxwidth=9.5cm] +\begin{NiceTabular}{|ccc|}[~emphase#rules/color=[gray]{0.9},rules/width=1pt@] +\hline +rose & tulipe & lys \\ +arum & iris & violette \\ +muguet & dahlia & souci \\ +\hline +\end{NiceTabular} +\end{BVerbatim} +\begin{NiceTabular}{|ccc|}[rules/color=[gray]{0.9},rules/width=1pt] +\hline +rose & tulipe & lys \\ +arum & iris & violette \\ +muguet & dahlia & souci \\ +\hline +\end{NiceTabular} +\end{scope} + +\medskip +Si on veut définir de nouveaux spécificateurs de colonnes pour des filets (par +exemple plus épais ou bien d'une couleur spécifique), on aura peut-être intérêt +à utiliser la commande |\OnlyMainNiceMatrix| décrite +p.~\pageref{OnlyMainNiceMatrix}. + + + + + \bigskip \subsection{Les clés hlines et vlines} -La clé |hlines| demande un tracé de tous les filets horizontaux et la clé |vlines| demande un tracé de tous les -filets verticaux. En fait, dans les environnements avec délimiteurs (comme |{pNiceMatrix}| ou |{bNiceArray}|), les -filets extérieurs ne sont pas tracés (ce qui est le comportement certainement attendu). +La clé |hlines| demande un tracé de tous les filets horizontaux et la clé +|vlines| demande un tracé de tous les filets verticaux. En fait, dans les +environnements avec délimiteurs (comme |{pNiceMatrix}| ou |{bNiceArray}|), les +filets extérieurs ne sont pas tracés (ce qui est le comportement certainement +attendu). \medskip @@ -607,61 +701,15 @@ $\begin{pNiceMatrix}[vlines,rules/width=0.2pt] \end{pNiceMatrix}$ -\bigskip -Il y a néanmoins une différence entre l'utilisation de l'option |vlines| et du spécificateur «\verb+|+» dans le -préambule de l'environnement : les filets tracés par |vlines| traversent les double-filets horizontaux tracés par -|\hline\hline| (il n'y a pas besoin d'utiliser \pkg{hhline}). - -\medskip -\begin{BVerbatim}[baseline=c,boxwidth=11.5cm] -$\begin{NiceMatrix}[~emphase#vlines@] \hline -a & b & c & d \\ \hline \hline -1 & 2 & 3 & 4 \\ -1 & 2 & 3 & 4 \\ \hline -\end{NiceMatrix}$ -\end{BVerbatim} -% -$\begin{NiceMatrix}[vlines] -\hline -a & b & c & d \\ -\hline \hline -1 & 2 & 3 & 4 \\ -1 & 2 & 3 & 4 \\ -\hline -\end{NiceMatrix}$ - - -\bigskip -Si vous utilisez \pkg{booktabs} (qui fournit |\toprule|, |\midrule|, |\bottomrule|, etc.) et que vous tenez -absolument à mettre des filets verticaux (ce qui est contraire à l'esprit à \pkg{booktabs}), sachez que la clé -|vlines| est compatible avec \pkg{booktabs}. - -\medskip -\begin{BVerbatim}[baseline=c,boxwidth=11.5cm] -$\begin{NiceMatrix}[~emphase#vlines@] \toprule -a & b & c & d \\ \midrule -1 & 2 & 3 & 4 \\ -1 & 2 & 3 & 4 \\ \bottomrule -\end{NiceMatrix}$ -\end{BVerbatim} -% -$\begin{NiceMatrix}[vlines] -\toprule -a & b & c & d \\ -\midrule -1 & 2 & 3 & 4 \\ -1 & 2 & 3 & 4 \\ -\bottomrule -\end{NiceMatrix}$ - \subsection{La clé hvlines} \label{hvlines} -La clé |hvlines| demande le tracé de tous les filets horizontaux et verticaux \emph{sauf dans les - blocs}.\footnote{En fait, quand la clé |hvlines| (ou la clé |hvlines-except-corners| décrite juste après) est - utilisée, les filets ne sont pas non plus tracés dans les blocs virtuels délimités par des cases reliées par des - lignes pointillées (cf. p. \pageref{dotted-and-hvlines}).} +La clé |hvlines| demande le tracé de tous les filets horizontaux et verticaux +\emph{sauf dans les blocs}.\footnote{En fait, quand la clé |hvlines| (ou la clé + |hvlines-except-corners| décrite juste après) est utilisée, les filets ne sont + pas non plus tracés dans les blocs virtuels délimités par des cases reliées + par des lignes pointillées (cf. p. \pageref{dotted-and-hvlines}).} \medskip \begin{Verbatim} @@ -685,8 +733,8 @@ arum & iris & jacinthe & muguet \subsection{La clé hvlines-except-corners} -La clé |hvlines-except-corners| demande le tracé de tous les filets horizontaux et verticaux \emph{sauf dans les - blocs} et sauf dans les coins vides. +La clé |hvlines-except-corners| demande le tracé de tous les filets horizontaux +et verticaux \emph{sauf dans les blocs} et sauf dans les coins vides. \medskip \begin{Verbatim} @@ -717,8 +765,8 @@ A & A & A & A & A & A \\ \end{NiceTabular} \end{center} -Comme on le voit, un «coin vide» est constitué de la réunion de tous les rectangles vides partant de la case située -exactement dans le coin. +Comme on le voit, un «coin vide» est constitué de la réunion de tous les +rectangles vides partant de la case située exactement dans le coin. \bigskip \begin{BVerbatim}[boxwidth=11cm,baseline=c] @@ -746,8 +794,9 @@ exactement dans le coin. \subsection{La commande \textbackslash diagbox} -La commande |\diagbox| (inspirée par l'extension \pkg{diagbox}) permet, quand elle est utilisée dans une case, de -couper cette case selon une diagonale descendante.\footnote{L'auteur de ce document considère que ce type de +La commande |\diagbox| (inspirée par l'extension \pkg{diagbox}) permet, quand +elle est utilisée dans une case, de couper cette case selon une diagonale +descendante.\footnote{L'auteur de ce document considère que ce type de construction est un piètre choix graphique.} \medskip @@ -776,9 +825,10 @@ Cette commande |\diagbox| peut aussi être utilisée dans un |\Block|. \subsection{Filets en pointillés} -Dans les environnements de \pkg{nicematrix}, il est possible d'utiliser la commande |\hdottedline| (fournie -par \pkg{nicematrix}) qui est l'équivalent pour les pointillés des commandes |\hline| et |\hdashline| -(cette dernière étant une commande de \pkg{arydshln}). +Dans les environnements de \pkg{nicematrix}, il est possible d'utiliser la +commande |\hdottedline| (fournie par \pkg{nicematrix}) qui est l'équivalent pour +les pointillés des commandes |\hline| et |\hdashline| (cette dernière étant une +commande de \pkg{arydshln}). \medskip \begin{BVerbatim}[baseline=c,boxwidth=9.5cm] @@ -798,8 +848,9 @@ $\begin{pNiceMatrix} \bigskip -Dans les environnements avec un préambule explicite (comme |{NiceTabular}|, |{NiceArray}|, etc.), il est possible -de dessiner un trait vertical en pointillés avec le spécificateur «|:|». +Dans les environnements avec un préambule explicite (comme |{NiceTabular}|, +|{NiceArray}|, etc.), il est possible de dessiner un trait vertical en +pointillés avec le spécificateur «|:|». \medskip \begin{BVerbatim}[baseline=c,boxwidth=9.5cm] @@ -816,47 +867,77 @@ $\begin{pNiceArray}{cccc:c} \end{pNiceArray}$ \bigskip -Il est possible de changer dans \pkg{nicematrix} la lettre utilisée pour indiquer dans le préambule un trait -vertical en pointillés avec l'option |letter-for-dotted-lines| disponible dans |\NiceMatrixOptions|. +Il est possible de changer dans \pkg{nicematrix} la lettre utilisée pour +indiquer dans le préambule un trait vertical en pointillés avec l'option +|letter-for-dotted-lines| disponible dans |\NiceMatrixOptions|. \bigskip -\emph{Remarque} : Quand l'extension \pkg{array} (sur laquelle s'appuie \pkg{nicematrix}) est chargée, les traits -verticaux et horizontaux que l'on insère rendent le tableau plus large ou plus long d'une quantité égale à la -largeur du trait\footnote{En fait, cela est vrai pour |\hline| et «\verb+|+» mais pas pour |\cline|.}. Avec -\pkg{nicematrix}, les lignes en pointillés tracées par |\hdottedline| et «|:|» ont le même effet. +\emph{Remarque} : Quand l'extension \pkg{array} (sur laquelle s'appuie +\pkg{nicematrix}) est chargée, les traits verticaux et horizontaux que l'on +insère rendent le tableau plus large ou plus long d'une quantité égale à la +largeur du trait\footnote{En fait, cela est vrai pour |\hline| et «\verb+|+» + mais pas pour |\cline| : cf. p.~\pageref{remark-cline}}. Avec +\pkg{nicematrix}, les lignes en pointillés tracées par |\hdottedline| et «|:|» +ont le même effet. \section{Les couleurs des rangées et des colonnes} -L'extension \pkg{colortbl} permet de colorier des cases, des rangées ou des colonnes d'un tableau. Néanmoins, -l'affichage du \textsc{pdf} résultant n'est pas toujours parfait, en particulier quand on utilise également des -filets. Dans certains lecteurs de \textsc{pdf}, des filets verticaux semblent disparaître. De fines lignes blanches -peuvent également apparaître. +\subsection{Utilisation de colortbl} + +Rappelons que l'extension \pkg{colortbl} peut être chargée directement par +|\usepackage{colortbl}| ou en chargeant l'extension \pkg{xcolor} avec l'option +|table| : |\usepackage[table]{xcolor}|. \medskip -L'extension \pkg{nicematrix} propose des outils similaires qui ne présentent pas ces inconvénients. Elle propose -une clé |code-before|\footnote{Il existe aussi une clé |code-after| : cf. p.~\pageref{code-after}.} pour du code -qui sera exécuté \emph{avant} le tracé du tableau. Dans ce |code-before|, de nouvelles commandes sont disponibles : -|\cellcolor|, |\rectanglecolor|, |\rowcolor|, |\columncolor|, |\rowcolors| et |\chessboardcolors|. -\label{code-before} +Comme l'extension \pkg{nicematrix} est fondée sur \pkg{array}, il est possible +d'utiliser \pkg{colortbl} avec \pkg{nicematrix}. \medskip -Ces outils sont indépendants de \pkg{colortbl}.\footnote{On peut donc colorier les filets, les cellules, les - rangées, les colonnes, etc. sans charger \pkg{colortbl}. Le présent document ne charge pas \pkg{colortbl}.} +Il y a néanmoins deux inconvénients : +\begin{itemize} +\item L'extension \pkg{colortbl} patche \pkg{array}, ce qui entraîne des +incompatibilités (par exemple avec la commande |\hdotsfor|). + +\item L'extension \pkg{colortbl} construit le tableau ligne par ligne, en +alternant rectangles colorés, filets et contenu des cases. Le \textsc{pdf} +résultant déroute certains lecteurs de \textsc{pdf} et on a des artefacts +d'affichage : des filets verticaux semblent disparaître ; au contraire, de fines +lignes blanches peuvent apparaître. L'extension \pkg{nicematrix} proposent des +outils qui évitent ces inconvénients. +\end{itemize} + +\subsection{Les outils de nicematrix dans le code-before} + +L'extension \pkg{nicematrix} proposent des outils (indépendants de +\pkg{colortbl}) pour tracer d'abord les rectangles colorés, puis le contenu des +cases et les filets. Cette manière de faire est plus dans l'esprit du «modèle du +peintre» des formats PostScript et \textsc{pdf} et convient donc mieux aux +lecteurs de \textsc{pdf}. L'inconvénient est qu'elle nécessite plusieurs +compilations successives. + +\medskip +L'extension \pkg{nicematrix} fournit une clé |code-before| pour du code qui sera +exécuté avant le tracé du tableau. De nouvelles commandes y sont disponibles : +|\cellcolor|, |\rectanglecolor|, |\rowcolor|, |\columncolor|, |\rowcolors| et +|\chessboardcolors|. +\label{code-before} \medskip -Toutes ces commandes acceptent un argument optionnel (entre crochets et en première position) qui est le modèle -colorimétrique pour la spécification des couleurs. +Toutes ces commandes acceptent un argument optionnel (entre crochets et en +première position) qui est le modèle colorimétrique pour la spécification des +couleurs. \medskip \begin{itemize} -\item La commande |\cellcolor| tient son nom de la commande |\cellcolor| de \pkg{colortbl}. +\item La commande |\cellcolor| tient son nom de la commande |\cellcolor| de +\pkg{colortbl}. -Elle prend en arguments obligatoires une couleur et une liste de cases sous le format $i$-$j$ où $i$ est le -numéro de ligne et $j$ le numéro de colonne. +Elle prend en arguments obligatoires une couleur et une liste de cases sous le +format $i$-$j$ où $i$ est le numéro de ligne et $j$ le numéro de colonne. \medskip \begin{scope} @@ -878,8 +959,9 @@ h & i & j \\ \hline \end{scope} \bigskip -\item La commande |\rectanglecolor| prend trois arguments obligatoires. Le premier est la couleur, les deux -suivants fournissent la case en haut à gauche et la case en bas à droite du rectangle. +\item La commande |\rectanglecolor| prend trois arguments obligatoires. Le +premier est la couleur, les deux suivants fournissent la case en haut à gauche +et la case en bas à droite du rectangle. \medskip \begin{scope} @@ -903,9 +985,11 @@ h & i & j \\ \hline \bigskip -\item La commande |\rowcolor| doit son nom à la commande |\rowcolor| de \pkg{colortbl}. Son premier argument -obligatoire est la couleur et le deuxième est une liste de numéros de rangées ou bien d'intervalles de rangées sous -la forme $a$-$b$ (un intervalle de la forme $a$- représente toutes les rangées à partir de la rangée~$a$). +\item La commande |\rowcolor| doit son nom à la commande |\rowcolor| de +\pkg{colortbl}. Son premier argument obligatoire est la couleur et le deuxième +est une liste de numéros de rangées ou bien d'intervalles de rangées sous la +forme $a$-$b$ (un intervalle de la forme $a$- représente toutes les rangées à +partir de la rangée~$a$). \medskip @@ -943,14 +1027,16 @@ a_{10} & b_{10} & c_{10} \\ \bigskip -\item La commande |\columncolor| doit son nom à la commande |\columncolor| de \pkg{colortbl}. Sa syntaxe est -similaire à celle de |\rowcolor|. +\item La commande |\columncolor| doit son nom à la commande |\columncolor| de +\pkg{colortbl}. Sa syntaxe est similaire à celle de |\rowcolor|. \bigskip -\item La commande |\rowcolors| (avec un \emph{s}) doit son nom à la commande |\rowcolors| de -\pkg{xcolor}\footnote{La commande |\rowcolors| de \pkg{xcolor} est disponible quand \pkg{xcolor} est chargé avec - l'option |table|.}. Le \emph{s} rappelle qu'il y a deux couleurs. Elle colorie alternativement les rangées avec -les deux couleurs à partir de la rangée dont le numéro est donné en premier argument (obligatoire). +\item La commande |\rowcolors| (avec un \emph{s}) doit son nom à la commande +|\rowcolors| de \pkg{xcolor}\footnote{La commande |\rowcolors| de \pkg{xcolor} + est disponible quand \pkg{xcolor} est chargé avec l'option |table|.}. Le +\emph{s} rappelle qu'il y a deux couleurs. Elle colorie alternativement les +rangées avec les deux couleurs à partir de la rangée dont le numéro est donné en +premier argument (obligatoire). \medskip \begin{scope} @@ -978,8 +1064,8 @@ Estelle & 15 \bigskip -\item La commande |\chessboardcolors| prend en arguments obligatoires deux couleurs et colorie les cases en -quinconces avec les deux couleurs. +\item La commande |\chessboardcolors| prend en arguments obligatoires deux +couleurs et colorie les cases en quinconces avec les deux couleurs. \medskip \begin{scope} @@ -1000,12 +1086,13 @@ $\begin{pNiceMatrix}% \end{scope} \medskip -On a utilisé la clé |r| qui impose que toutes les colonnes soient alignées à droite (cf. p.~\pageref{key-R}). +On a utilisé la clé |r| qui impose que toutes les colonnes soient alignées à +droite (cf. p.~\pageref{key-R}). \end{itemize} \bigskip -On remarquera que ces commandes sont compatibles avec les commandes de \pkg{booktabs} (|\toprule|, |\midrule|, -|\bottomrule|, etc). +On remarquera que ces commandes sont compatibles avec les commandes de +\pkg{booktabs} (|\toprule|, |\midrule|, |\bottomrule|, etc). \medskip \begin{scope} @@ -1050,14 +1137,61 @@ spécial & 12 & 12 & 0.5 & 70 \\ On a utilisé le type de colonne |S| de \pkg{siunitx}. +\subsection{Outils de coloriage avec la syntaxe de colortbl} + +On peut accéder aux outils de coloriage précédents avec une syntaxe proche de +celle proposée par \pkg{colortbl}. On doit pour cela utiliser la clé +|colortbl-like| dans l'environnement concerné.\footnote{Pour le moment, cette + clé n'est pas disponible disponible dans |\NiceMatrixOptions|.} + +On a alors accès aux trois commandes suivantes : +\begin{itemize} +\item |\cellcolor| qui colorie la case courante ; +\item |\rowcolor| à utiliser dans une case et qui colorie le reste de la rangée +; +\item |\columncolor| à utiliser dans le préambule de la même manière que la +commande éponyme de \pkg{colortbl}\footnote{Contrairement à la commande +|\columncolor| de \pkg{colortbl}, celle-ci peut apparaître à l'intérieur d'une +autre commande, elle-même utilisée dans le préambule.}. +\end{itemize} + +\medskip +\begin{Verbatim} +\begin{NiceTabular}[colortbl-like]{>{~emphase#\columncolor{blue!15}}@ccc} +\toprule +~emphase#\rowcolor{red!15}@ +Nom & Prénom & Année de naissance \\ +\midrule +Achard & Jacques & 5 juin 1962 \\ +Lefebvre & Mathilde & 23 mai 1988 \\ +Vanesse & Stéphanie & 30 octobre 1994 \\ +Dupont & Chantal & 15 janvier 1998 \\ +\bottomrule +\end{NiceTabular} +\end{Verbatim} + + +\begin{center} +\begin{NiceTabular}[colortbl-like]{>{\columncolor{blue!15}}ccc} +\toprule +\rowcolor{red!15} +Nom & Prénom & Année de naissance \\ +\midrule +Achard & Jacques & 5 juin 1962 \\ +Lefebvre & Mathilde & 23 mai 1988 \\ +Vanesse & Stéphanie & 30 octobre 1994 \\ +Dupont & Chantal & 15 janvier 1998 \\ +\bottomrule +\end{NiceTabular} +\end{center} + + \section{La largeur des colonnes} \label{width} -Dans les environnements avec un préambule explicite (comme |{NiceTabular}|, |{NiceArray}|, etc.), il est possible -de fixer la largeur d'une colonne avec les lettres classiques |w| et |W| de l'extension \pkg{array}. Dans -|{NiceTabular}|, les cases des colonnes de ce type sont composées en mode texte mais, dans |{NiceArray}|, -|{pNiceArray}|, etc., elles sont composées en mode mathématique (alors que dans |{array}| de \pkg{array}, elles -sont composées en mode texte). +Dans les environnements avec un préambule explicite (comme |{NiceTabular}|, +|{NiceArray}|, etc.), il est possible de fixer la largeur d'une colonne avec les +lettres classiques |w| et |W| de l'extension \pkg{array}. \medskip \begin{BVerbatim}[baseline=c,boxwidth=9cm] @@ -1075,8 +1209,9 @@ Rio & Tokyo & Oslo \bigskip -Dans les environnements de \pkg{nicematrix}, il est aussi possible de fixer la largeur \emph{minimale} de toutes -les colonnes de la matrice directement avec l'option |columns-width|. +Dans les environnements de \pkg{nicematrix}, il est aussi possible de fixer la +largeur \emph{minimale} de toutes les colonnes de la matrice directement avec +l'option |columns-width|. \medskip \begin{BVerbatim}[baseline=c,boxwidth=10cm] @@ -1093,15 +1228,17 @@ $\begin{pNiceMatrix}[columns-width = 1cm] \end{pNiceMatrix}$ \medskip -Notez que l'espace inséré entre deux colonnes (égal à 2 |\tabcolsep| dans |{NiceTabular}| et à 2 |\arraycolsep| -dans les autres environnements) n'est pas supprimé (il est évidemment possible de le supprimer en mettant -|\tabcolsep| ou |\arraycolsep| à~$0$ avant). +Notez que l'espace inséré entre deux colonnes (égal à 2 |\tabcolsep| dans +|{NiceTabular}| et à 2 |\arraycolsep| dans les autres environnements) n'est pas +supprimé (il est évidemment possible de le supprimer en mettant |\tabcolsep| ou +|\arraycolsep| à~$0$ avant). \bigskip -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|, un message demandant une - deuxième compilation apparaîtra).}\par\nobreak +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|, + un message demandant une deuxième compilation apparaîtra).}\par\nobreak \medskip \begin{BVerbatim}[baseline=c,boxwidth=10cm] @@ -1118,8 +1255,9 @@ $\begin{pNiceMatrix}[columns-width = auto] \end{pNiceMatrix}$ \bigskip -Sans surprise, il est possible de fixer la largeur minimale de toutes les colonnes de toutes les matrices dans une -certaine portion de document avec la commande |\NiceMatrixOptions|.\par\nobreak +Sans surprise, il est possible de fixer la largeur minimale de toutes les +colonnes de toutes les matrices dans une certaine portion de document avec la +commande |\NiceMatrixOptions|.\par\nobreak \medskip \begin{BVerbatim}[baseline=c,boxwidth=8.5cm] @@ -1147,12 +1285,15 @@ c & d \bigskip -Mais il est aussi possible de fixer une zone dans laquelle toutes les matrices auront leurs colonnes de la même -largeur, égale à la largeur de la case la plus large de toutes les matrices de la zone. Cette construction utilise -l'environnement |{NiceMatrixBlock}| avec l'option |auto-columns-width|\footnote{Pour le moment, c'est le seul - usage de l'environnement |{NiceMatrixBlock}| mais il pourrait y en avoir davantage dans le futur.}. -L'environnement |{NiceMatrixBlock}| n'a pas de rapport direct avec la commande |\Block| présentée précédemment dans -ce document (cf.~p.~\pageref{Block}). +Mais il est aussi possible de fixer une zone dans laquelle toutes les matrices +auront leurs colonnes de la même largeur, égale à la largeur de la case la plus +large de toutes les matrices de la zone. Cette construction utilise +l'environnement |{NiceMatrixBlock}| avec l'option +|auto-columns-width|\footnote{Pour le moment, c'est le seul usage de + l'environnement |{NiceMatrixBlock}| mais il pourrait y en avoir davantage dans + le futur.}. L'environnement |{NiceMatrixBlock}| n'a pas de rapport direct avec +la commande |\Block| présentée précédemment dans ce document +(cf.~p.~\pageref{Block}). \medskip \begin{BVerbatim}[baseline=c,boxwidth=8.5cm] @@ -1185,12 +1326,13 @@ $\begin{array}{c} \bigskip \section{Les rangées et colonnes extérieures} -Les environnements de \pkg{nicematrix} permettent de composer des rangées et des colonnes «extérieures» grâce aux options -|first-row|, |last-row|, |first-col| et |last-col|. +Les environnements de \pkg{nicematrix} permettent de composer des rangées et des +colonnes «extérieures» grâce aux options |first-row|, |last-row|, |first-col| et +|last-col|. \label{exterior} -Si elle est présente, la «première rangée» (extérieure) est numérotée par $0$ (et non $1$). Il en est de même pour -la «première colonne». +Si elle est présente, la «première rangée» (extérieure) est numérotée par $0$ +(et non $1$). Il en est de même pour la «première colonne». \begin{Verbatim} $\begin{pNiceMatrix}[~emphase#first-row,last-row,first-col,last-col@,nullify-dots] @@ -1220,29 +1362,34 @@ Les lignes pointillées ont été tracées avec les outils présentés p.~\pager Il y a plusieurs remarques à formuler. % \begin{itemize}[beginpenalty=10000] -\item Si on utilise un environnement avec préambule explicite (c'est-à-dire |{NiceArray}| ou l'une de ses -variantes), on ne doit pas mettre dans ce préambule de spécification de colonne pour les éventuelles première et -dernière colonne : ce sera automatiquement (et nécessairement) une colonne |R| pour la première colonne et une -colonne |L| pour la dernière. +\item Si on utilise un environnement avec préambule explicite (c'est-à-dire +|{NiceArray}| ou l'une de ses variantes), on ne doit pas mettre dans ce +préambule de spécification de colonne pour les éventuelles première et dernière +colonne : ce sera automatiquement (et nécessairement) une colonne |R| pour la +première colonne et une colonne |L| pour la dernière. \item On peut se demander comment \pkg{nicematrix} détermine le nombre de rangées et de colonnes nécessaires à la composition de la «dernière rangée» et de la «dernière colonne». \begin{itemize} -\item Dans le cas d'un environnement avec préambule, comme |{NiceTabular}| ou |{pNiceArray}|, le nombre de colonnes -se déduit évidemment du préambule. - -\item Dans le cas où l'option |light-syntax| (cf. p. \pageref{light-syntax}) est utilisée, \pkg{nicematrix} profite -du fait que cette option nécessite de toutes manières le chargement complet du contenu de l'environnement (d'où -l'impossibilité de mettre du verbatim dans ce cas-là) avant composition du tableau. L'analyse du contenu de -l'environnement donne le nombre de rangées (mais pas le nombre de colonnes). - -\item Dans les autres cas, \pkg{nicematrix} détermine le nombre de rangées et de colonnes à la première compilation -et l'écrit dans le fichier |.aux| pour pouvoir l'utiliser à la compilation suivante. - -\textsl{Néanmoins, il est possible de donner le numéro de la dernière rangée et le numéro de la dernière colonne en -arguments des options |last-row| et |last-col|, ce qui permettra d'accélérer le processus complet de -compilation.} C'est ce que nous ferons dans la suite. +\item Dans le cas d'un environnement avec préambule, comme |{NiceTabular}| ou +|{pNiceArray}|, le nombre de colonnes se déduit évidemment du préambule. + +\item Dans le cas où l'option |light-syntax| (cf. p. \pageref{light-syntax}) est +utilisée, \pkg{nicematrix} profite du fait que cette option nécessite de toutes +manières le chargement complet du contenu de l'environnement (d'où +l'impossibilité de mettre du verbatim dans ce cas-là) avant composition du +tableau. L'analyse du contenu de l'environnement donne le nombre de rangées +(mais pas le nombre de colonnes). + +\item Dans les autres cas, \pkg{nicematrix} détermine le nombre de rangées et de +colonnes à la première compilation et l'écrit dans le fichier |.aux| pour +pouvoir l'utiliser à la compilation suivante. + +\textsl{Néanmoins, il est possible de donner le numéro de la dernière rangée et + le numéro de la dernière colonne en arguments des options |last-row| et + |last-col|, ce qui permettra d'accélérer le processus complet de compilation.} +C'est ce que nous ferons dans la suite. \end{itemize} \end{itemize} @@ -1250,9 +1397,10 @@ compilation.} C'est ce que nous ferons dans la suite. \bigskip -On peut contrôler l'apparence de ces rangées et colonnes avec les options |code-for-first-row|, -|code-for-last-row|, |code-for-first-col| et |code-for-last-col|. Ces options sont des listes de tokens qui seront -insérées au début de chaque case de la rangée ou de la colonne considérée. +On peut contrôler l'apparence de ces rangées et colonnes avec les options +|code-for-first-row|, |code-for-last-row|, |code-for-first-col| et +|code-for-last-col|. Ces options sont des listes de tokens qui seront insérées +au début de chaque case de la rangée ou de la colonne considérée. \begin{Verbatim} \NiceMatrixOptions{~emphase#code-for-first-row@ = \color{red}, @@ -1292,17 +1440,21 @@ L_4 & a_{41} & a_{42} & a_{43} & a_{44} & L_4 \\ \emph{Remarques} \begin{itemize}[beginpenalty=10000] -\item Comme on peut le voir dans l'exemple précédent, les filets horizontaux et verticaux ne s'étendent pas dans -les rangées et colonnes extérieures. - -Néanmoins, si on veut définir de nouveaux spécificateurs de colonnes pour des filets (par exemple plus épais), on -aura sans doute intérêt à utiliser la commande |\OnlyMainNiceMatrix| décrite p.~\pageref{OnlyMainNiceMatrix}. -\item Une spécification de couleur présente dans |code-for-first-row| s'applique à une ligne pointillée tracée -dans cette «première rangée» (sauf si une valeur a été donnée à |xdots/color|). Idem pour les autres. -\item Sans surprise, une éventuelle option |columns-width| (décrite p.~\pageref{width}) ne s'applique pas à la -«première colonne» ni à la «dernière colonne». -\item Pour des raisons techniques, il n'est pas possible d'utiliser l'option de la commande |\\| après la -«première rangée» ou avant la «dernière rangée» (le placement des délimiteurs serait erroné). +\item Comme on peut le voir dans l'exemple précédent, les filets horizontaux et +verticaux ne s'étendent pas dans les rangées et colonnes extérieures. + +Néanmoins, si on veut définir de nouveaux spécificateurs de colonnes pour des +filets (par exemple plus épais), on aura sans doute intérêt à utiliser la +commande |\OnlyMainNiceMatrix| décrite p.~\pageref{OnlyMainNiceMatrix}. +\item Une spécification de couleur présente dans |code-for-first-row| s'applique +à une ligne pointillée tracée dans cette «première rangée» (sauf si une valeur a +été donnée à |xdots/color|). Idem pour les autres. +\item Sans surprise, une éventuelle option |columns-width| (décrite +p.~\pageref{width}) ne s'applique pas à la «première colonne» ni à la «dernière +colonne». +\item Pour des raisons techniques, il n'est pas possible d'utiliser l'option de +la commande |\\| après la «première rangée» ou avant la «dernière rangée» (le +placement des délimiteurs serait erroné). \end{itemize} @@ -1312,24 +1464,27 @@ dans cette «première rangée» (sauf si une valeur a été donnée à |xdots/c \label{Cdots} -À l'intérieur des environnements de l'extension \pkg{nicematrix}, de nouvelles commandes sont définies : |\Ldots|, -|\Cdots|, |\Vdots|, |\Ddots|, et |\Iddots|. Ces commandes sont conçues pour être utilisées à la place de |\dots|, -|\cdots|, |\vdots|, |\ddots| et |\iddots|.\footnote{La commande |\iddots|, définie dans \pkg{nicematrix}, est une - variante de |\ddots| avec les points allant vers le haut. Si \pkg{mathdots} est chargée, la - version de \pkg{mathdots} est utilisée. Elle correspond à la commande |\adots| de \pkg{unicode-math}.} -\newcounter{fniddots} -\setcounter{fniddots}{\thefootnote} +À l'intérieur des environnements de l'extension \pkg{nicematrix}, de nouvelles +commandes sont définies : |\Ldots|, |\Cdots|, |\Vdots|, |\Ddots|, et |\Iddots|. +Ces commandes sont conçues pour être utilisées à la place de |\dots|, |\cdots|, +|\vdots|, |\ddots| et |\iddots|.\footnote{La commande |\iddots|, définie dans + \pkg{nicematrix}, est une variante de |\ddots| avec les points allant vers le + haut. Si \pkg{mathdots} est chargée, la version de \pkg{mathdots} est + utilisée. Elle correspond à la commande |\adots| de \pkg{unicode-math}.} +\newcounter{fniddots} \setcounter{fniddots}{\thefootnote} \smallskip -Chacune de ces commandes doit être utilisée seule dans la case du tableau et elle trace une ligne en pointillés -entre les premières cases non vides\footnote{La définition précise de ce qui est considéré comme une «case vide» - est donnée plus loin (cf. p.~\pageref{empty-cells}).} situées de part et d'autre de la case courante. Bien -entendu, pour |\Ldots| et |\Cdots|, c'est une ligne horizontale ; pour |\Vdots|, c'est une ligne verticale et pour -|\Ddots| et |\Iddots|, ce sont des lignes diagonales. On peut changer la couleur d'une ligne avec -l'option~|color|.\footnote{Il est aussi possible de changer la couleur de toutes ces lignes pointillées avec - l'option |xdots/color| (\textsl{xdots} pour rappeler que cela s'applique à |\Cdots|, |\Ldots|, |Vdots|, etc.) : - cf. p.~\pageref{customization}). -}\par\nobreak +Chacune de ces commandes doit être utilisée seule dans la case du tableau et +elle trace une ligne en pointillés entre les premières cases non +vides\footnote{La définition précise de ce qui est considéré comme une «case + vide» est donnée plus loin (cf. p.~\pageref{empty-cells}).} situées de part et +d'autre de la case courante. Bien entendu, pour |\Ldots| et |\Cdots|, c'est une +ligne horizontale ; pour |\Vdots|, c'est une ligne verticale et pour |\Ddots| et +|\Iddots|, ce sont des lignes diagonales. On peut changer la couleur d'une ligne +avec l'option~|color|.\footnote{Il est aussi possible de changer la couleur de + toutes ces lignes pointillées avec l'option |xdots/color| (\textsl{xdots} pour + rappeler que cela s'applique à |\Cdots|, |\Ldots|, |Vdots|, etc.) : cf. + p.~\pageref{customization}). }\par\nobreak \bigskip \begin{BVerbatim}[baseline=c,boxwidth=10cm] @@ -1352,8 +1507,8 @@ a_1 & a_2 & & & a_n -\interitem -Pour représenter la matrice nulle, on peut choisir d'utiliser le codage suivant :\par\nobreak +\interitem Pour représenter la matrice nulle, on peut choisir d'utiliser le +codage suivant :\par\nobreak \bigskip \begin{BVerbatim}[baseline=c,boxwidth=10cm] @@ -1370,9 +1525,10 @@ $\begin{bNiceMatrix} \end{bNiceMatrix}$ \bigskip -On peut néanmoins souhaiter une matrice plus grande. Habituellement, dans un tel cas, les utilisateurs de LaTeX -ajoutent une nouvelle ligne et une nouvelle colonne. Il est possible d'utiliser la même méthode avec -\pkg{nicematrix} :\par\nobreak +On peut néanmoins souhaiter une matrice plus grande. Habituellement, dans un tel +cas, les utilisateurs de LaTeX ajoutent une nouvelle ligne et une nouvelle +colonne. Il est possible d'utiliser la même méthode avec \pkg{nicematrix} +:\par\nobreak \bigskip \begin{BVerbatim}[baseline=c,boxwidth=10cm] @@ -1391,13 +1547,12 @@ $\begin{bNiceMatrix} \end{bNiceMatrix}$ \bigskip -Dans la première colonne de cet exemple, il y a deux instructions |\Vdots| mais une seule ligne en pointillés sera -tracée (il n'y a pas d'objets qui se superposent dans le fichier \textsc{pdf} résultant\footnote{Et il n'est pas - possible de tracer une ligne |\Ldots| et une ligne |\Cdots| entre les mêmes cases.}). +Dans la première colonne de cet exemple, il y a deux instructions |\Vdots| mais, +bien entendu, une seule ligne en pointillés sera. \bigskip -En fait, dans cet exemple, il aurait été possible de tracer la même matrice plus rapidement avec le codage suivant -:\par\nobreak +En fait, dans cet exemple, il aurait été possible de tracer la même matrice plus +rapidement avec le codage suivant :\par\nobreak \bigskip \begin{BVerbatim}[baseline=c,boxwidth=10cm] @@ -1416,15 +1571,19 @@ $\begin{bNiceMatrix} \end{bNiceMatrix}$ \bigskip -Il y a aussi d'autres moyens de changer la taille d'une matrice. On pourrait vouloir utiliser l'argument optionnel -de la commande~|\\| pour l'espacement vertical et la commande~|\hspace*| dans une case pour l'espacement -horizontal.\footnote{Dans \pkg{nicematrix}, il faut utiliser |\hspace*| et non |\hspace| car \pkg{nicematrix} - utilise \pkg{array}. Remarquons aussi que l'on peut également régler la largeur des colonnes en utilisant l'environnement |{NiceArray}| (ou - une de ses variantes) avec une colonne de type~|w| ou |W|: cf. p.~\pageref{width}} - -Toutefois, une commande~|\hspace*| pourrait interférer dans la construction des lignes en pointillés. C'est -pourquoi l'extension \pkg{nicematrix} fournit une commande~|\Hspace| qui est une variante de |\hspace| transparente -pour la construction des lignes en pointillés de \pkg{nicematrix}.\par\nobreak +Il y a aussi d'autres moyens de changer la taille d'une matrice. On pourrait +vouloir utiliser l'argument optionnel de la commande~|\\| pour l'espacement +vertical et la commande~|\hspace*| dans une case pour l'espacement +horizontal.\footnote{Dans \pkg{nicematrix}, il faut utiliser |\hspace*| et non + |\hspace| car \pkg{nicematrix} utilise \pkg{array}. Remarquons aussi que l'on + peut également régler la largeur des colonnes en utilisant l'environnement + |{NiceArray}| (ou une de ses variantes) avec une colonne de type~|w| ou |W|: + cf. p.~\pageref{width}} + +Toutefois, une commande~|\hspace*| pourrait interférer dans la construction des +lignes en pointillés. C'est pourquoi l'extension \pkg{nicematrix} fournit une +commande~|\Hspace| qui est une variante de |\hspace| transparente pour la +construction des lignes en pointillés de \pkg{nicematrix}.\par\nobreak \bigskip \begin{BVerbatim}[baseline=c,boxwidth=10cm] @@ -1442,8 +1601,8 @@ $\begin{bNiceMatrix} \subsection{L'option nullify-dots} -Considérons la matrice suivante qui a été composée classiquement avec l'environnement |{pmatrix}| de -\pkg{amsmath}.\par\nobreak +Considérons la matrice suivante qui a été composée classiquement avec +l'environnement |{pmatrix}| de \pkg{amsmath}.\par\nobreak \medskip \begin{BVerbatim}[baseline=c,boxwidth=10cm] @@ -1459,8 +1618,8 @@ x & & & & & x \bigskip -Si nous ajoutons des instructions |\ldots| dans la seconde rangée, la géométrie de la matrice est -modifiée.\par\nobreak +Si nous ajoutons des instructions |\ldots| dans la seconde rangée, la géométrie +de la matrice est modifiée.\par\nobreak \medskip \begin{BVerbatim}[baseline=c,boxwidth=10cm] @@ -1475,8 +1634,9 @@ x & \ldots & \ldots & \ldots & \ldots & x \end{pmatrix}$ \bigskip -Par défaut, avec \pkg{nicematrix}, si nous remplaçons |{pmatrix}| par |{pNiceMatrix}| et |\ldots| par |\Ldots|, la -géométrie de la matrice n'est pas changée.\par\nobreak +Par défaut, avec \pkg{nicematrix}, si nous remplaçons |{pmatrix}| par +|{pNiceMatrix}| et |\ldots| par |\Ldots|, la géométrie de la matrice n'est pas +changée.\par\nobreak \medskip \begin{BVerbatim}[baseline=c,boxwidth=10cm] @@ -1491,8 +1651,9 @@ x & \Ldots & \Ldots & \Ldots & \Ldots & x \end{pNiceMatrix}$ \bigskip -On pourrait toutefois préférer la géométrie de la première matrice $A$ et vouloir avoir la même géométrie avec une -ligne en pointillés continue dans la seconde rangée. C'est possible en utilisant l'option |nullify-dots| (et une +On pourrait toutefois préférer la géométrie de la première matrice $A$ et +vouloir avoir la même géométrie avec une ligne en pointillés continue dans la +seconde rangée. C'est possible en utilisant l'option |nullify-dots| (et une seule instruction |\Ldots| suffit).\par\nobreak \medskip @@ -1508,19 +1669,21 @@ x & \Ldots & & & & x \end{pNiceMatrix}$ \medskip -L'option |nullify-dots| «smashe» les instructions |\Ldots| (et ses variantes) horizontalement mais aussi -verticalement. +L'option |nullify-dots| «smashe» les instructions |\Ldots| (et ses variantes) +horizontalement mais aussi verticalement. -\subsection{La commande \textbackslash Hdotsfor} +\subsection{Les commandes \textbackslash Hdotsfor et \textbackslash Vdotsfor} -Certaines personnes utilisent habituellement la commande |\hdotsfor| de l'extension \pkg{amsmath} pour tracer des -lignes en pointillés horizontales dans une matrice. Dans les environnements de \pkg{nicematrix}, il convient -d'utiliser |\Hdotsfor| à la place pour avoir les lignes en pointillés similaires à toutes celles tracées par -l'extension \pkg{nicematrix}. +Certaines personnes utilisent habituellement la commande |\hdotsfor| de +l'extension \pkg{amsmath} pour tracer des lignes en pointillés horizontales dans +une matrice. Dans les environnements de \pkg{nicematrix}, il convient d'utiliser +|\Hdotsfor| à la place pour avoir les lignes en pointillés similaires à toutes +celles tracées par l'extension \pkg{nicematrix}. -Comme avec les autres commandes de \pkg{nicematrix} (comme |\Cdots|, |\Ldots|, |\Vdots|, etc.), la ligne en -pointillés tracée par |\Hdotsfor| s'étend jusqu'au contenu des cases de part et d'autre. +Comme avec les autres commandes de \pkg{nicematrix} (comme |\Cdots|, |\Ldots|, +|\Vdots|, etc.), la ligne en pointillés tracée par |\Hdotsfor| s'étend jusqu'au +contenu des cases de part et d'autre. \medskip \begin{BVerbatim}[baseline=c,boxwidth=7cm] @@ -1539,8 +1702,8 @@ $\begin{pNiceMatrix} \end{pNiceMatrix}$ \bigskip -Néanmoins, si ces cases sont vides, la ligne en pointillés s'étend seulement dans les cases spécifiées par -l'argument de |\Hdotsfor| (par conception). +Néanmoins, si ces cases sont vides, la ligne en pointillés s'étend seulement +dans les cases spécifiées par l'argument de |\Hdotsfor| (par conception). \medskip \begin{BVerbatim}[baseline=c,boxwidth=7cm] @@ -1559,38 +1722,81 @@ $\begin{pNiceMatrix} \end{pNiceMatrix}$ \medskip -Remarque : Contrairement à la commande |\hdotsfor| de \pkg{amsmath}, la commande |\Hdotsfor| est utilisable lorsque -l'extension \pkg{colortbl} est chargée (mais vous risquez d'avoir des problèmes si vous utilisez |\rowcolor| sur la -même rangée que |\Hdotsfor|). +Remarque : Contrairement à la commande |\hdotsfor| de \pkg{amsmath}, la commande +|\Hdotsfor| est utilisable lorsque l'extension \pkg{colortbl} est chargée (mais +vous risquez d'avoir des problèmes si vous utilisez |\rowcolor| sur la même +rangée que |\Hdotsfor|). + +\bigskip +L'extension \pkg{nicematrix} propose aussi une commande |\Vdotsfor| similaire à +|\Hdotsfor| mais traçant des lignes verticales. + +\bigskip +L'exemple suivant utilise à la fois |\Hdotsfor| et |\Vdotsfor|: + +\begin{Verbatim}[formatcom=\small\color{gray}] +\begin{bNiceMatrix} +C[a_1,a_1] & \Cdots & C[a_1,a_n] + & \hspace*{20mm} & C[a_1,a_1^{(p)}] & \Cdots & C[a_1,a_n^{(p)}] \\ +\Vdots & \Ddots & \Vdots + & ~emphase#\Hdotsfor{1}@ & \Vdots & \Ddots & \Vdots \\ +C[a_n,a_1] & \Cdots & C[a_n,a_n] + & & C[a_n,a_1^{(p)}] & \Cdots & C[a_n,a_n^{(p)}] \\ +\rule{0pt}{15mm} & ~emphase#\Vdotsfor{1}@ & & \Ddots & & ~emphase#\Vdotsfor{1}@ \\ +C[a_1^{(p)},a_1] & \Cdots & C[a_1^{(p)},a_n] + & & C[a_1^{(p)},a_1^{(p)}] & \Cdots & C[a_1^{(p)},a_n^{(p)}] \\ +\Vdots & \Ddots & \Vdots + & ~emphase#\Hdotsfor{1}@ & \Vdots & \Ddots & \Vdots \\ +C[a_n^{(p)},a_1] & \Cdots & C[a_n^{(p)},a_n] + & & C[a_n^{(p)},a_1^{(p)}] & \Cdots & C[a_n^{(p)},a_n^{(p)}] +\end{bNiceMatrix} +\end{Verbatim} + + +\[\begin{bNiceMatrix} +C[a_1,a_1] & \Cdots & C[a_1,a_n] & \hspace*{20mm} & C[a_1,a_1^{(p)}] & \Cdots & C[a_1,a_n^{(p)}] \\ +\Vdots & \Ddots & \Vdots & \Hdotsfor{1} & \Vdots & \Ddots & \Vdots \\ +C[a_n,a_1] & \Cdots & C[a_n,a_n] & & C[a_n,a_1^{(p)}] & \Cdots & C[a_n,a_n^{(p)}] \\ +\rule{0pt}{15mm} & \Vdotsfor{1} & & \Ddots & & \Vdotsfor{1} \\ +C[a_1^{(p)},a_1] & \Cdots & C[a_1^{(p)},a_n] & & C[a_1^{(p)},a_1^{(p)}] & \Cdots & C[a_1^{(p)},a_n^{(p)}] \\ +\Vdots & \Ddots & \Vdots & \Hdotsfor{1} & \Vdots & \Ddots & \Vdots \\ +C[a_n^{(p)},a_1] & \Cdots & C[a_n^{(p)},a_n] & & C[a_n^{(p)},a_1^{(p)}] & \Cdots & C[a_n^{(p)},a_n^{(p)}] +\end{bNiceMatrix}\] + + \subsection{Comment créer les lignes en pointillés de manière transparente} -L'extension \pkg{nicematrix} fournit une option appelée |transparent| qui permet d'utiliser du code existant de -manière transparente dans les environnements de l'\pkg{amsmath} : |{matrix}|, |{pmatrix}|, etc. En fait, cette -option est un alias pour la conjonction de deux options : |renew-dots| et |renew-matrix|.\footnote{Comme toutes les - autres options, les options |renew-dots|, |renew-matrix| et |transparent| peuvent être fixées avec la commande - |\NiceMatrixOptions|, mais elles peuvent aussi être passées en option du |\usepackage| (ce sont les trois - seules).} +L'extension \pkg{nicematrix} fournit une option appelée |transparent| qui permet +d'utiliser du code existant de manière transparente dans les environnements de +l'\pkg{amsmath} : |{matrix}|, |{pmatrix}|, etc. En fait, cette option est un +alias pour la conjonction de deux options : |renew-dots| et +|renew-matrix|.\footnote{Comme toutes les autres options, les options + |renew-dots|, |renew-matrix| et |transparent| peuvent être fixées avec la + commande |\NiceMatrixOptions|, mais elles peuvent aussi être passées en option + du |\usepackage| (ce sont les trois seules).} \smallskip \begin{itemize} \item L'option |renew-dots|\par\nobreak -Avec cette option, les commandes |\ldots|, |\cdots|, |\vdots|, |\ddots|, |\iddots|\footnotemark[\thefniddots] et -|\hdotsfor| sont redéfinies dans les environnements de \pkg{nicematrix} et agissent alors comme |\Ldots|, |\Cdots|, -|\Vdots|, |\Ddots|, |\Iddots| et |\Hdotsfor| ; la commande |\dots| (points de suspension «automatiques» de -|amsmath|) est aussi redéfinie et se comporte comme |\Ldots|. +Avec cette option, les commandes |\ldots|, |\cdots|, |\vdots|, |\ddots|, +|\iddots|\footnotemark[\thefniddots] et |\hdotsfor| sont redéfinies dans les +environnements de \pkg{nicematrix} et agissent alors comme |\Ldots|, |\Cdots|, +|\Vdots|, |\Ddots|, |\Iddots| et |\Hdotsfor| ; la commande |\dots| (points de +suspension «automatiques» de |amsmath|) est aussi redéfinie et se comporte comme +|\Ldots|. \item L'option |renew-matrix|\par\nobreak -Avec cette option, l'environnement |{matrix}| est redéfini et se comporte comme |{NiceMatrix}| et il en est de même -pour les cinq variantes. +Avec cette option, l'environnement |{matrix}| est redéfini et se comporte comme +|{NiceMatrix}| et il en est de même pour les cinq variantes. \end{itemize} \bigskip -Par conséquent, avec l'option |transparent|, un code classique donne directement le résultat fourni par -\pkg{nicematrix}.\par\nobreak +Par conséquent, avec l'option |transparent|, un code classique donne directement +le résultat fourni par \pkg{nicematrix}.\par\nobreak \bigskip \begin{scope} @@ -1615,10 +1821,12 @@ $\begin{pmatrix} \subsection{Les labels des lignes en pointillés} -Les commandes |\Ldots|, |\Cdots|, |\Vdots|, |\Ddots|, |\Iddots| et |\Hdotsfor| (ainsi que la commande |\line| dans -le |code-after| décrite p.~\pageref{line-in-code-after}) peuvent en fait prendre deux arguments optionnels -spécifiés par les caractères |_| et |^| pour des labels situés au-dessous et au-dessus de la ligne. Les arguments -sont composés en mode mathématique avec |\scriptstyle|. +Les commandes |\Ldots|, |\Cdots|, |\Vdots|, |\Ddots|, |\Iddots| et |\Hdotsfor| +(ainsi que la commande |\line| dans le |code-after| décrite +p.~\pageref{line-in-code-after}) peuvent en fait prendre deux arguments +optionnels spécifiés par les caractères |_| et |^| pour des labels situés +au-dessous et au-dessus de la ligne. Les arguments sont composés en mode +mathématique avec |\scriptstyle|. \begin{BVerbatim}[baseline=c,boxwidth=10cm] $\begin{bNiceMatrix} @@ -1637,9 +1845,10 @@ $\begin{bNiceMatrix} \label{customization} -Les lignes pointillées tracées par |\Ldots|, |\Cdots|, |\Vdots|, |\Ddots|, |\Iddots| et |\Hdotsfor| (ainsi que par la -commande |\line| dans le |code-after| décrite p.~\pageref{line-in-code-after}) peuvent être -paramétrées par trois options (que l'on met entre crochets après la commande) : +Les lignes pointillées tracées par |\Ldots|, |\Cdots|, |\Vdots|, |\Ddots|, +|\Iddots| et |\Hdotsfor| (ainsi que par la commande |\line| dans le |code-after| +décrite p.~\pageref{line-in-code-after}) peuvent être paramétrées par trois +options (que l'on met entre crochets après la commande) : % \begin{itemize} \item |color| ; @@ -1647,8 +1856,9 @@ paramétrées par trois options (que l'on met entre crochets après la commande) \item |line-style|. \end{itemize} -Ces options peuvent aussi être fixées avec |\NiceMatrixOptions| ou bien au niveau d'un environnement mais elles -doivent alors être préfixées par |xdots|, ce qui fait que leurs noms deviennent : +Ces options peuvent aussi être fixées avec |\NiceMatrixOptions| ou bien au +niveau d'un environnement mais elles doivent alors être préfixées par |xdots|, +ce qui fait que leurs noms deviennent : % \begin{itemize} \item |xdots/color| ; @@ -1662,8 +1872,9 @@ Pour la clarté, dans la suite, on utilisera ces noms-là. \textbf{L'option xdots/color}\par\nobreak \smallskip -L'option |xdots/color| indique bien entendu la couleur de la ligne tracée. On remarquera néanmoins que les lignes -tracées dans les rangées et colonnes extérieures (décrites plus loin) bénificient d'un régime spécial : cf. +L'option |xdots/color| indique bien entendu la couleur de la ligne tracée. On +remarquera néanmoins que les lignes tracées dans les rangées et colonnes +extérieures (décrites plus loin) bénificient d'un régime spécial : cf. p.~\pageref{exterior}. @@ -1671,21 +1882,24 @@ p.~\pageref{exterior}. \textbf{L'option xdots/shorten}\par\nobreak \smallskip -L'option |xdots/shorten| indique la marge qui est laissée aux deux extrémités de la ligne. Le nom s'inspire des options -«|shorten >|» et «|shorten <|» de Tikz, mais il faut remarquer que \pkg{nicematrix} ne propose que |xdots/shorten|. -La valeur initiale de ce paramètre est de $0.3$~em (il est conseillé d'utiliser une unité de mesure dépendante de -la fonte courante). +L'option |xdots/shorten| indique la marge qui est laissée aux deux extrémités de +la ligne. Le nom s'inspire des options «|shorten >|» et «|shorten <|» de Tikz, +mais il faut remarquer que \pkg{nicematrix} ne propose que |xdots/shorten|. La +valeur initiale de ce paramètre est de $0.3$~em (il est conseillé d'utiliser une +unité de mesure dépendante de la fonte courante). \bigskip \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 |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 affiché très rapidement par les - lecteurs de \textsc{pdf}. Il est facile à 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.} +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 + affiché très rapidement par les lecteurs de \textsc{pdf}. Il est facile à + 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.} \begin{BVerbatim}[baseline=c,boxwidth=9cm] \tikz \draw [dotted] (0,0) -- (5,0) ; @@ -1693,15 +1907,18 @@ carrés et non pas ronds.\footnote{La raison de départ est que le format \texts \tikz \draw [dotted] (0,0) -- (5,0) ; \bigskip -Voulant proposer des lignes avec des points ronds dans le style de celui de |\ldots| (au moins celui des fontes -\emph{Computer Modern}), l'extension \pkg{nicematrix} contient en interne son propre système de ligne en pointillés -(qui, au passage, n'utilise que \pkg{pgf} et non \pkg{tikz}). Ce style est appelé le style |standard|. Cette valeur -est la valeur initiale du paramètre |xdots/line-style|. +Voulant proposer des lignes avec des points ronds dans le style de celui de +|\ldots| (au moins celui des fontes \emph{Computer Modern}), l'extension +\pkg{nicematrix} contient en interne son propre système de ligne en pointillés +(qui, au passage, n'utilise que \pkg{pgf} et non \pkg{tikz}). Ce style est +appelé le style |standard|. Cette valeur est la valeur initiale du paramètre +|xdots/line-style|. \bigskip -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 <|»). +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 Voici par exemple une matrice tridiagonale avec le style |loosely dotted| :\par\nobreak @@ -1733,9 +1950,10 @@ b & a & b & \Ddots & & \Vdots \\ \label{dotted-and-hvlines} -On a dit (cf. p. \pageref{hvlines}) que la clé |hvlines| trace tous les filets horizontaux et verticaux, exceptés -dans les blocs. En fait, avec cette clé, les filets ne sont pas non plus tracés dans les blocs virtuels délimités -par des cases reliées par des lignes pointillées. +On a dit (cf. p. \pageref{hvlines}) que la clé |hvlines| trace tous les filets +horizontaux et verticaux, exceptés dans les blocs. En fait, avec cette clé, les +filets ne sont pas non plus tracés dans les blocs virtuels délimités par des +cases reliées par des lignes pointillées. \medskip \begin{BVerbatim}[baseline=c,boxwidth=10.6cm] @@ -1758,13 +1976,15 @@ $\begin{bNiceMatrix}[margin,hvlines] \label{code-after} -L'option |code-after| peut être utilisée pour indiquer du code qui sera exécuté après la construction de la -matrice.\footnote{Il existe aussi une clé |code-before| décrite p.~\pageref{code-before}.} +L'option |code-after| peut être utilisée pour indiquer du code qui sera exécuté +après la construction de la matrice.\footnote{Il existe aussi une clé + |code-before| décrite p.~\pageref{code-before}.} -Une commande spéciale, nommée |\line| est disponible pour tracer directement des lignes en pointillés entre les -cases. Elle prend deux arguments correspondant aux deux cases à relier, chacun de la forme $i$-$j$ où $i$ est le -numéro de ligne et $j$ est le numéro de colonne. Elle peut par exemple être utilisée pour tracer une ligne entre -deux cases adjacentes comme dans l'exemple suivant. +Une commande spéciale, nommée |\line| est disponible pour tracer directement des +lignes en pointillés entre les cases. Elle prend deux arguments correspondant +aux deux cases à relier, chacun de la forme $i$-$j$ où $i$ est le numéro de +ligne et $j$ est le numéro de colonne. Elle peut par exemple être utilisée pour +tracer une ligne entre deux cases adjacentes comme dans l'exemple suivant. \label{line-in-code-after} \medskip @@ -1788,11 +2008,11 @@ I & 0 & \Cdots &0 \\ \end{scope} \medskip -Pour améliorer la lisibilité du code, une syntaxe alternative est proposée : on peut spécifier les instructions du -|code-after| à la fin de l'environnement, après le mot-clé -|\CodeAfter|\footnote{Dans certaines circonstances, on doit mettre -|\omit \CodeAfter|, |\omit| étant un mot-clé de TeX qui annule le motif de la cellule -courante.}. Pour un exemple, voir page +Pour améliorer la lisibilité du code, une syntaxe alternative est proposée : on +peut spécifier les instructions du |code-after| à la fin de l'environnement, +après le mot-clé |\CodeAfter|\footnote{Dans certaines circonstances, on doit + mettre |\omit \CodeAfter|, |\omit| étant un mot-clé de TeX qui annule le motif + de la cellule courante.}. Pour un exemple, voir page \pageref{exemple-CodeAfter}. \section{Les notes dans les tableaux} @@ -1907,7 +2127,8 @@ titre inséré par |\caption| dans un environnement |{table}| de LaTeX. \item Si plusieurs commandes |\tabularnote{...}| se suivent \emph{sans aucun espace entre elles}, les appels de notes correspondants sont composés ensemble, -séparés par une virgule. +séparés par une virgule (comme avec l'option |multiple| de \pkg{footmisc} pour +les notes de pied de page). \item Si une commande |\tabularnote{...}| se trouve exactement à la fin d'une cellule (sans aucun espace après), l'appel de note est composé en débordement vers la @@ -1960,8 +2181,8 @@ Wallis & John & 87 \\ \subsection{Personnalisation des notes de tableau} -Les notes de tableau peuvent être personnalisées grâce à un ensemble de clés disponibles dans -|\NiceMatrixOptions|. Ces clés ont un nom préfixé par |notes| : +Les notes de tableau peuvent être personnalisées grâce à un ensemble de clés +disponibles dans |\NiceMatrixOptions|. Ces clés ont un nom préfixé par |notes| : \begin{itemize} \item |notes/para| \item |notes/bottomrule| @@ -2120,8 +2341,8 @@ Si vous souhaitez utiliser l'environnement |{NiceTabular}| dans un environnement \makeatother \end{Verbatim} -La commande |\AtBeginEnvironment| est une commande de l'extension \pkg{etoolbox} qui doit donc -avoir été chargée au préalable. +La commande |\AtBeginEnvironment| est une commande de l'extension \pkg{etoolbox} +qui doit donc avoir été chargée au préalable. \section{Autres fonctionnalités} @@ -2151,7 +2372,8 @@ $\begin{pNiceArray}{ScW{c}{1cm}c}[nullify-dots,first-row] \end{pNiceArray}$ \medskip -En revanche, les colonnes |d| de l'extension \pkg{dcolumn} ne sont pas prises en charge par \pkg{nicematrix}. +En revanche, les colonnes |d| de l'extension \pkg{dcolumn} ne sont pas prises en +charge par \pkg{nicematrix}. @@ -2159,8 +2381,9 @@ En revanche, les colonnes |d| de l'extension \pkg{dcolumn} ne sont pas prises en \label{key-R} -Les environnements sans préambule (|{NiceMatrix}|, |{pNiceMatrix}|, |{bNiceMatrix}|, etc.) proposent les options -|l| et |r| (possédant |L| et |R| comme alias) qui imposent des colonnes alignées à gauche ou à droite. +Les environnements sans préambule (|{NiceMatrix}|, |{pNiceMatrix}|, +|{bNiceMatrix}|, etc.) proposent les options |l| et |r| qui imposent des +colonnes alignées à gauche ou à droite. \medskip \begin{BVerbatim}[baseline=c,boxwidth=10cm] @@ -2175,9 +2398,10 @@ $\begin{bNiceMatrix}[r] \end{bNiceMatrix}$ \medskip -Il existe aussi l'option |S| qui impose que toutes les colonnes soient des colonnes |S| de \pkg{siunitx} (si cette -extension est chargée).\footnote{Cela reprend une partie des fonctionnalités proposées par les environnements |{pmatrix*}|, - |{bmatrix*}|, etc. de \pkg{mathtools}.} +Il existe aussi l'option |S| qui impose que toutes les colonnes soient des +colonnes |S| de \pkg{siunitx} (si cette extension est chargée).\footnote{Cela + reprend une partie des fonctionnalités proposées par les environnements + |{pmatrix*}|, |{bmatrix*}|, etc. de \pkg{mathtools}.} \subsection{La commande \textbackslash rotate} @@ -2213,8 +2437,8 @@ e_1 & e_2 & e_3 \\ \end{varwidth} \bigskip -Si la commande |\rotate| est utilisée dans la «dernière rangée» (extérieure à la matrice), les éléments qui -subissent cette rotation sont alignés vers le haut. +Si la commande |\rotate| est utilisée dans la «dernière rangée» (extérieure à la +matrice), les éléments qui subissent cette rotation sont alignés vers le haut. \bigskip \begin{BVerbatim}[baseline=c,boxwidth=12cm] @@ -2245,9 +2469,10 @@ $A = \begin{pNiceMatrix}[last-row,last-col=4] \label{small} -Avec l'option |small|, les environnements de l'extension \pkg{nicematrix} sont composés d'une manière proche de ce -que propose l'environnement |{smallmatrix}| de l'\pkg{amsmath} (et les environnements |{psmallmatrix}|, -|{bsmallmatrix}|, etc. de \pkg{mathtools}). +Avec l'option |small|, les environnements de l'extension \pkg{nicematrix} sont +composés d'une manière proche de ce que propose l'environnement |{smallmatrix}| +de l'\pkg{amsmath} (et les environnements |{psmallmatrix}|, |{bsmallmatrix}|, +etc. de \pkg{mathtools}). \bigskip \begin{Verbatim} @@ -2270,10 +2495,11 @@ $\begin{bNiceArray}{cccc|c}[~emphase#small@, \bigskip -On remarquera néanmoins que l'environnement |{NiceMatrix}| avec l'option |small| ne prétend pas être composé -exactement comme l'environnement |{smallmatrix}|. C'est que les environnements de \pkg{nicematrix} sont tous fondés -sur |{array}| (de \pkg{array}) alors que ce n'est pas le cas de |{smallmatrix}| (fondé directement sur un |\halign| -de TeX). +On remarquera néanmoins que l'environnement |{NiceMatrix}| avec l'option |small| +ne prétend pas être composé exactement comme l'environnement |{smallmatrix}|. +C'est que les environnements de \pkg{nicematrix} sont tous fondés sur |{array}| +(de \pkg{array}) alors que ce n'est pas le cas de |{smallmatrix}| (fondé +directement sur un |\halign| de TeX). \medskip En fait, l'option |small| correspond aux réglages suivants : @@ -2286,15 +2512,17 @@ En fait, l'option |small| correspond aux réglages suivants : \subsection{Les compteurs iRow et jCol} -Dans les cases du tableau, il est possible d'utiliser les compteurs LaTeX |iRow| et |jCol| qui représentent le -numéro de la rangée courante et le numéro de la colonne courante\footnote{On rappelle que le numéro de la «première - rangée» (si elle existe) est $0$ et que le numéro de la «première colonne» (si elle existe) est $0$ également.}. -Bien entendu, l'utilisateur ne doit pas modifier les valeurs de ces compteurs qui sont utilisés en interne par -\pkg{nicematrix}. +Dans les cases du tableau, il est possible d'utiliser les compteurs LaTeX |iRow| +et |jCol| qui représentent le numéro de la rangée courante et le numéro de la +colonne courante\footnote{On rappelle que le numéro de la «première rangée» (si + elle existe) est $0$ et que le numéro de la «première colonne» (si elle + existe) est $0$ également.}. Bien entendu, l'utilisateur ne doit pas modifier +les valeurs de ces compteurs qui sont utilisés en interne par \pkg{nicematrix}. -Dans le |code-before| (cf. p. \pageref{code-before}) et dans le |code-after| (cf. p. \pageref{code-after}), |iRow| -représente le nombre total de rangées (hors éventuelles rangées extérieures) et |jCol| le nombre total de colonnes -(hors potentielles colonnes extérieures). +Dans le |code-before| (cf. p. \pageref{code-before}) et dans le |code-after| +(cf. p. \pageref{code-after}), |iRow| représente le nombre total de rangées +(hors éventuelles rangées extérieures) et |jCol| le nombre total de colonnes +(hors potentielles colonnes extérieures). \medskip \begin{BVerbatim}[baseline=c,boxwidth=10.6cm] @@ -2320,20 +2548,22 @@ $\begin{pNiceMatrix}[first-row, \end{pNiceMatrix}$ \medskip -Si des compteurs LaTeX nommés |iRow| ou |jCol| sont créés dans le document par d'autres extensions que -\pkg{nicematrix} (ou tout simplement par l'utilisateur final), ces compteurs sont masqués dans les environnements -de \pkg{nicematrix}. +Si des compteurs LaTeX nommés |iRow| ou |jCol| sont créés dans le document par +d'autres extensions que \pkg{nicematrix} (ou tout simplement par l'utilisateur +final), ces compteurs sont masqués dans les environnements de \pkg{nicematrix}. \bigskip -L'extension \pkg{nicematrix} propose aussi des commandes pour composer automatiquement des matrices à partir d'un -motif général. Ces commandes sont nommées |\AutoNiceMatrix|, |\pAutoNiceMatrix|, |\bAutoNiceMatrix|, +L'extension \pkg{nicematrix} propose aussi des commandes pour composer +automatiquement des matrices à partir d'un motif général. Ces commandes sont +nommées |\AutoNiceMatrix|, |\pAutoNiceMatrix|, |\bAutoNiceMatrix|, |\vAutoNiceMatrix|, |\VAutoNiceMatrix| et |\BAutoNiceMatrix|. -Chacune de ces commandes prend deux arguments obligatoires : le premier est la taille de la matrice, sous la forme -$n$-$p$, où $n$ est le nombre de rangées et $p$ est le nombre de colonnes et le deuxième est le motif (c'est-à-dire -simplement des tokens qui seront insérés dans chaque case de la matrice, exceptées celles des éventuelles rangées et -colonnes extérieures). +Chacune de ces commandes prend deux arguments obligatoires : le premier est la +taille de la matrice, sous la forme $n$-$p$, où $n$ est le nombre de rangées et +$p$ est le nombre de colonnes et le deuxième est le motif (c'est-à-dire +simplement des tokens qui seront insérés dans chaque case de la matrice, +exceptées celles des éventuelles rangées et colonnes extérieures). \medskip \begin{Verbatim} @@ -2349,11 +2579,13 @@ $C = ~emphase#\pAutoNiceMatrix@{3-3}{C_{\arabic{iRow},\arabic{jCol}}}$ \label{light-syntax} -L'option |light-syntax| (inspirée de l'extension \pkg{spalign}) permet d'alléger la saisie des matrices, ainsi que -leur lisibilité dans le source TeX. Lorsque cette option est activée, on doit utiliser le point-virgule comme -marqueur de fin de rangée et séparer les colonnes par des espaces ou des tabulations. On remarquera toutefois que, -comme souvent dans le monde TeX, les espaces après les séquences de contrôle ne sont pas comptées et que les -éléments entre accolades sont considérés comme un tout. +L'option |light-syntax| (inspirée de l'extension \pkg{spalign}) permet d'alléger +la saisie des matrices, ainsi que leur lisibilité dans le source TeX. Lorsque +cette option est activée, on doit utiliser le point-virgule comme marqueur de +fin de rangée et séparer les colonnes par des espaces ou des tabulations. On +remarquera toutefois que, comme souvent dans le monde TeX, les espaces après les +séquences de contrôle ne sont pas comptées et que les éléments entre accolades +sont considérés comme un tout. \medskip @@ -2374,22 +2606,27 @@ b \cos a+\cos b { 2 \cos b } \end{bNiceMatrix}$ \medskip -On peut changer le caractère utilisé pour indiquer les fins de rangées avec l'option |end-of-row|. Comme dit -précédemment, la valeur initiale de ce paramètre est un point-virgule. +On peut changer le caractère utilisé pour indiquer les fins de rangées avec +l'option |end-of-row|. Comme dit précédemment, la valeur initiale de ce +paramètre est un point-virgule. \medskip -Lorsque l'option |light-syntax| est utilisée, il n'est pas possible de mettre d'éléments en verbatim (avec par -exemple la commande |\verb|) dans les cases du tableau.\footnote{La raison en est que lorsque l'option - |light-syntax| est utilisée, le contenu complet de l'environnement est chargé comme un argument de commande TeX. - L'environnement ne se comporte plus comme un «vrai» environnement de LaTeX qui se contente d'insérer des - commandes avant et après.} +Lorsque l'option |light-syntax| est utilisée, il n'est pas possible de mettre +d'éléments en verbatim (avec par exemple la commande +|\verb|) dans les cases du tableau.\footnote{La raison en est que lorsque l'option |light-syntax| + est utilisée, le contenu complet de l'environnement est chargé comme un + argument de commande TeX. L'environnement ne se comporte plus comme un «vrai» + environnement de LaTeX qui se contente d'insérer des commandes avant et + après.} \subsection{L'environnement \{NiceArrayWithDelims\}} -En fait, l'environnement |{pNiceArray}| et ses variantes sont fondés sur un environnement plus général, appelé -|{NiceArrayWithDelims}|. Les deux premiers arguments obligatoires de cet environnement sont les délimiteurs gauche -et droit qui seront utilisés dans la construction de la matrice. Il est possible d'utiliser |{NiceArrayWithDelims}| -si on a besoin de délimiteurs atypiques ou asymétriques. +En fait, l'environnement |{pNiceArray}| et ses variantes sont fondés sur un +environnement plus général, appelé |{NiceArrayWithDelims}|. Les deux premiers +arguments obligatoires de cet environnement sont les délimiteurs gauche et droit +qui seront utilisés dans la construction de la matrice. Il est possible +d'utiliser |{NiceArrayWithDelims}| si on a besoin de délimiteurs atypiques ou +asymétriques. \medskip \begin{BVerbatim}[baseline=c,boxwidth=11cm] @@ -2417,28 +2654,33 @@ $\begin{NiceArrayWithDelims} \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) du tableau considéré. Ces nœuds sont -utilisés, entre autres, pour tracer les lignes en pointillés entre les cases du tableau. +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. \smallskip -Tous les nœuds du document doivent avoir des noms deux à deux distincts et le nom de ces nœuds doit donc faire -intervenir le numéro de l'environnement courant. Les environnements créés par \pkg{nicematrix} sont en effet -numérotés par un compteur global interne. +Tous les nœuds du document doivent avoir des noms deux à deux distincts et le +nom de ces nœuds doit donc faire intervenir le numéro de l'environnement +courant. Les environnements créés par \pkg{nicematrix} sont en effet numérotés +par un compteur global interne. \smallskip -Si l'environnement concerné a le numéro $n$, alors le nœud de la rangée~$i$ et de la colonne~$j$ a pour nom -|nm-|$n$|-|$i$|-|$j$. +Si l'environnement concerné a le numéro $n$, alors le nœud de la rangée~$i$ et +de la colonne~$j$ a pour nom |nm-|$n$|-|$i$|-|$j$. \smallskip -La commande |\NiceMatrixLastEnv| donne le numéro du dernier de ces environnements (pour LaTeX, il s'agit d'une -commande — complètement développable — et non d'un compteur). +La commande |\NiceMatrixLastEnv| donne le numéro du dernier de ces +environnements (pour LaTeX, il s'agit d'une commande — complètement développable +— et non d'un compteur). \smallskip -Il est néanmoins recommandé de passer plutôt par la clé |name|. Celle-ci permet de donner un nom à l'environnement. -Une fois l'environnement nommé, les nœuds 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éfault. +Il est néanmoins recommandé de passer plutôt par la clé |name|. Celle-ci permet +de donner un nom à l'environnement. Une fois l'environnement nommé, les nœuds +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éfault. \bigskip \begin{BVerbatim}[baseline=c,boxwidth=11cm] @@ -2463,8 +2705,9 @@ Ne pas oublier les options |remember picture| et |overlay|. \bigskip -Dans le |code-after|, 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 besoin de préciser l'environnement qui est évidemment l'environnement courant. +Dans le |code-after|, 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 besoin +de préciser l'environnement qui est évidemment l'environnement courant. \medskip @@ -2489,8 +2732,7 @@ $\begin{pNiceMatrix} \bigskip Dans l'exemple suivant, nous avons surligné tous les nœuds de la matrice (on -explique plus loin la technique utilisée : -cf. p. \pageref{highlight}). +explique plus loin la technique utilisée : cf. p. \pageref{highlight}). \[\begin{pNiceMatrix} a & a + b & a + b + c \\ @@ -2521,19 +2763,22 @@ a & a & a \subsection{Les «nœuds moyens» et les «nœuds larges»} -En fait, l'extension \pkg{nicematrix} peut créer deux séries de nœuds supplémentaires (\emph{extra nodes} en -anglais) : les «nœuds moyens» (\emph{medium nodes} en anglais) et les «nœuds larges» (\emph{large nodes} en -anglais). Les premiers sont créés avec l'option |create-medium-nodes| et les seconds avec l'option -|create-large-nodes|.\footnote{Il existe aussi l'option |create-extra-nodes| qui est un alias pour la conjonction -de |create-medium-nodes| et |create-large-nodes|.} +En fait, l'extension \pkg{nicematrix} peut créer deux séries de nœuds +supplémentaires (\emph{extra nodes} en anglais) : les «nœuds moyens» +(\emph{medium nodes} en anglais) et les «nœuds larges» (\emph{large nodes} en +anglais). Les premiers sont créés avec l'option |create-medium-nodes| et les +seconds avec l'option |create-large-nodes|.\footnote{Il existe aussi l'option + |create-extra-nodes| qui est un alias pour la conjonction de + |create-medium-nodes| et |create-large-nodes|.} \medskip Ces nœuds ne sont pas utilisés par défault par \pkg{nicematrix}. \medskip -Les noms des «nœuds moyens» s'obtiennent en ajoutant le suffixe «|-medium|» au nom des nœuds normaux. Dans -l'exemple suivant, on a surligné tous les «nœuds moyens». Nous considérons que cet exemple se suffit à lui-même -comme définition de ces nœuds. +Les noms des «nœuds moyens» s'obtiennent en ajoutant le suffixe «|-medium|» au +nom des nœuds normaux. Dans l'exemple suivant, on a surligné tous les «nœuds +moyens». Nous considérons que cet exemple se suffit à lui-même comme définition +de ces nœuds. \[\begin{pNiceMatrix}[ create-medium-nodes, code-after = {\begin{tikzpicture} @@ -2558,10 +2803,12 @@ a & a & a \medskip -Les noms des «nœuds larges» s'obtiennent en ajoutant le suffixe «|-large|» au nom des nœuds normaux. Dans l'exemple -suivant, on a surligné tous les «nœuds larges». Nous considérons que cet exemple se suffit à lui-même comme -définition de ces nœuds.\footnote{Il n'y a pas de «nœuds larges» créés dans les rangées et colonnes extérieures - (pour ces rangées et colonnes, voir p.~\pageref{exterior}).} +Les noms des «nœuds larges» s'obtiennent en ajoutant le suffixe «|-large|» au +nom des nœuds normaux. Dans l'exemple suivant, on a surligné tous les «nœuds +larges». Nous considérons que cet exemple se suffit à lui-même comme définition +de ces nœuds.\footnote{Il n'y a pas de «nœuds larges» créés dans les rangées et + colonnes extérieures (pour ces rangées et colonnes, voir + p.~\pageref{exterior}).} \[\begin{pNiceMatrix}[ create-large-nodes, @@ -2586,14 +2833,16 @@ a & a & a \medskip -Les «nœuds larges» de la première colonne et de la dernière colonne peuvent apparaître trop petits pour certains -usages. C'est pourquoi il est possible d'utiliser les options |left-margin| et |right-margin| pour ajouter de -l'espace des deux côtés du tableau et aussi de l'espace dans les «nœuds larges» de la première colonne et de la -dernière colonne. Dans l'exemple suivant, nous avons utilisé les options |left-margin| et -|right-margin|.\footnote{Les options |left-margin| et |right-margin| prennent des dimensions comme valeurs mais, si - aucune valeur n'est donnée, c'est la valeur par défaut qui est utilisée et elle est égale à |\arraycolsep| (valeur - initial : 5~pt). Il existe aussi une option |margin| pour fixer à la fois - |left-margin| et |right-margin|.} +Les «nœuds larges» de la première colonne et de la dernière colonne peuvent +apparaître trop petits pour certains usages. C'est pourquoi il est possible +d'utiliser les options |left-margin| et |right-margin| pour ajouter de l'espace +des deux côtés du tableau et aussi de l'espace dans les «nœuds larges» de la +première colonne et de la dernière colonne. Dans l'exemple suivant, nous avons +utilisé les options |left-margin| et |right-margin|.\footnote{Les options + |left-margin| et |right-margin| prennent des dimensions comme valeurs mais, si + aucune valeur n'est donnée, c'est la valeur par défaut qui est utilisée et + elle est égale à |\arraycolsep| (valeur initial : 5~pt). Il existe aussi une + option |margin| pour fixer à la fois |left-margin| et |right-margin|.} \[\begin{pNiceMatrix}[ create-large-nodes,left-margin,right-margin, code-after = {\begin{tikzpicture} @@ -2616,9 +2865,10 @@ a & a & a \end{pNiceMatrix}\] \medskip -Il est aussi possible d'ajouter de l'espace sur les côtés du tableau avec les options |extra-left-margin| et -|extra-right-margin|. Ces marges ne sont pas incorporées dans les «nœuds larges». Dans l'exemple suivant, nous -avons utilisé |extra-left-margin| et |extra-right-margin| avec la valeur $3$~pt. +Il est aussi possible d'ajouter de l'espace sur les côtés du tableau avec les +options |extra-left-margin| et |extra-right-margin|. Ces marges ne sont pas +incorporées dans les «nœuds larges». Dans l'exemple suivant, nous avons utilisé +|extra-left-margin| et |extra-right-margin| avec la valeur $3$~pt. \[\begin{pNiceMatrix}[ create-large-nodes,left-margin,right-margin,extra-right-margin=3pt,extra-left-margin=3pt, code-after = {\begin{tikzpicture} @@ -2642,8 +2892,8 @@ a & a & a \bigskip -\textbf{Attention} : Ces nœuds sont reconstruits à partir des contenus des cases et ne correspondent donc pas -nécessairement aux cases délimitées par des filets. +\textbf{Attention} : Ces nœuds sont reconstruits à partir des contenus des cases +et ne correspondent donc pas nécessairement aux cases délimitées par des filets. \bigskip \begin{minipage}[c]{7.5cm} @@ -2686,7 +2936,8 @@ noix & noisette & brugnon \vspace{1cm} \begin{minipage}[c]{7cm} -Voici maintenant tous les «nœuds larges» de ce tableau (sans utilisation de |margin| ni de |extra-margin|). +Voici maintenant tous les «nœuds larges» de ce tableau (sans utilisation de +|margin| ni de |extra-margin|). \end{minipage} \hspace{1.5cm} \begin{scope} @@ -2715,17 +2966,12 @@ noix & noisette & brugnon - - - - - - \subsection{Les nœuds «row» et «col»} -L'extension \pkg{nicematrix} crée un nœud PGF-Tikz indiquant la position potentielle de chaque filet horizontal -(avec les noms |row-|$i$) et de chaque filet vertical (avec les noms |col-|$j$), comme décrit sur la figure -ci-dessous. Ces nœuds sont accessibles dans le |code-before| et dans le |code-after|. +L'extension \pkg{nicematrix} crée un nœud PGF-Tikz indiquant la position +potentielle de chaque filet horizontal (avec les noms |row-|$i$) et de chaque +filet vertical (avec les noms |col-|$j$), comme décrit sur la figure ci-dessous. +Ces nœuds sont accessibles dans le |code-before| et dans le |code-after|. \begin{center} \begin{NiceTabular}{ccc}[hvlines,rules/width=1pt,rules/color=gray] rose & tulipe & lys \\ @@ -2750,8 +2996,9 @@ muguet & dahlia & souci \bigskip -Si on utilise Tikz (on rappelle que \pkg{nicematrix} ne charge pas Tikz par défaut), on peut donc accéder (dans le -|code-before| et le |code-after|) à l'intersection du filet horizontal~$i$ et du filet vertical~$j$ avec la syntaxe +Si on utilise Tikz (on rappelle que \pkg{nicematrix} ne charge pas Tikz par +défaut), on peut donc accéder (dans le |code-before| et le |code-after|) à +l'intersection du filet horizontal~$i$ et du filet vertical~$j$ avec la syntaxe |(row-|$i$\verb+-|col-+$j$|)|. @@ -2797,18 +3044,116 @@ Si on utilise Tikz (on rappelle que \pkg{nicematrix} ne charge pas Tikz par déf \end{NiceMatrix}\] +\section{Outils pour les développeurs} + +Comme son nom l'indique, la liste de tokens |\g_nicematrix_code_after_tl| est +publique (conformément aux conventions de LaTeX3, toute variable dont le nom +débute par |\g_nicematrix| ou |\l_nicematrix| est publique alors que toute variable +dont le nom débute par |\g__nicematrix| ou par |\l__nicematrix| est privée). + +\medskip +Cette variable contient le code qui constitue le «|code-after|». Le développeur +peut donc l'utiliser pour y ajouter du code à partir d'une cellule du tableau +(l'affectation devra être globale, ce qui permettra de sortir de la cellule, qui +est un groupe au sens de TeX). + +\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 +ne soit tracée. + + +On peut alors programmer cette commande |\crossbox| de la manière suivante, qui +utilise explicitement la variable publique |\g_nicematrix_code_after_tl|. + + +\begin{scope} +\fvset{commandchars=\§\¤\μ} +\begin{Verbatim} +\ExplSyntaxOn +\cs_new_protected:Nn \__pantigny_crossbox:nnn + { + \begin { tikzpicture } + \draw [ #3 ] + ( row-#1 -| col-\int_eval:n { #2 + 1 } ) + -- ( row-\int_eval:n { #1 + 1 } -| col-#2 ) + ( row-#1 -| col-\int_eval:n #2 ) + -- ( row-\int_eval:n { #1 + 1 } -| col-\int_eval:n { #2 + 1 } ) ; + \end { tikzpicture } + } + + +\NewDocumentCommand \crossbox { ! O { } } + { + \tl_gput_right:Nx §emphase¤\g_nicematrix_code_after_tlμ + { + \__pantigny_crossbox:nnn + { \int_use:c { c@iRow } } + { \int_use:c { c@jCol } } + { \exp_not:n { #1 } } + } + } +\ExplSyntaxOff +\end{Verbatim} +\end{scope} + + +\ExplSyntaxOn +\cs_new_protected:Nn \__pantigny_crossbox:nnn + { + \begin { tikzpicture } + \draw [ #3 ] + ( row-#1 -| col-\int_eval:n { #2 + 1 } ) + -- ( row-\int_eval:n { #1 + 1 } -| col-#2 ) + ( row-#1 -| col-\int_eval:n #2 ) + -- ( row-\int_eval:n { #1 + 1 } -| col-\int_eval:n { #2 + 1 } ) ; + \end { tikzpicture } + } + + +\NewDocumentCommand \crossbox { ! O { } } + { + \tl_gput_right:Nx \g_nicematrix_code_after_tl + { + \__pantigny_crossbox:nnn + { \int_use:c { c@iRow } } + { \int_use:c { c@jCol } } + { \exp_not:n { #1 } } + } + } +\ExplSyntaxOff + +\bigskip +Voici un exemple d'utilisation : + +\medskip +\begin{BVerbatim}[baseline=c,boxwidth=9cm] +\begin{NiceTabular}{ccc}[hvlines] +merlan & requin & cabillaud \\ +baleine & ~emphase#\crossbox[red]@ & morue \\ +mante & raie & poule +\end{NiceTabular} +\end{BVerbatim} +\begin{NiceTabular}{ccc}[hvlines] +merlan & requin & cabillaud \\ +baleine & \crossbox[red] & morue \\ +mante & raie & poule +\end{NiceTabular} + \section{Remarques techniques} -Première remarque : l'extension \pkg{nicematrix} doit être chargée après l'extension \pkg{underscore}. Si ce n'est -pas le cas, une erreur est levée. +Première remarque : l'extension \pkg{nicematrix} doit être chargée après +l'extension \pkg{underscore}. Si ce n'est pas le cas, une erreur est levée. \subsection{Pour définir de nouveaux types de colonnes} \label{OnlyMainNiceMatrix} -L'extension \pkg{nicematrix} fournit la commande |\OnlyMainNiceMatrix| qui est destinée à être utilisée dans des -définitions de nouveaux types de colonnes. Son argument n'est exécuté que si on se place dans la partie principale -du tableau, c'est-à-dire que l'on n'est pas dans l'une des éventuelles rangées extérieures. +L'extension \pkg{nicematrix} fournit la commande |\OnlyMainNiceMatrix| qui est +destinée à être utilisée dans des définitions de nouveaux types de colonnes. Son +argument n'est exécuté que si on se place dans la partie principale du tableau, +c'est-à-dire que l'on n'est pas dans l'une des éventuelles rangées extérieures. Par exemple, si on souhaite définir un type de colonne |?| pour tracer un trait fort (noir) d'épaisseur 1~pt, on pourra écrire\footnote{La commande |\vrule| est une commande de TeX (et non de LaTeX).} : @@ -2816,7 +3161,9 @@ pourra écrire\footnote{La commande |\vrule| est une commande de TeX (et non de \newcolumntype{?}{!{\OnlyMainNiceMatrix{\vrule width 1 pt}}} \end{Verbatim} -Le trait fort correspondant ne s'étendra pas dans les rangées extérieures : +Le trait fort correspondant ne s'étendra pas dans les rangées +extérieures.\footnote{Un tel filet utilisant les techniques classiques de + \pkg{array}, il ne traversera pas les doubles filets horizontaux de |\hline\hline|.} \medskip \begin{scope} @@ -2839,8 +3186,9 @@ C_1 & C_2 & C_3 & C_4 \end{scope} \medskip -Le spécificateur |?| ainsi créé est aussi utilisable dans les environnements |{tabular}| et |{array}| (de -\pkg{array}) et, dans ce cas, |\OnlyMainNiceMatrix| est sans effet. +Le spécificateur |?| ainsi créé est aussi utilisable dans les environnements +|{tabular}| et |{array}| (de \pkg{array}) et, dans ce cas, |\OnlyMainNiceMatrix| +est sans effet. @@ -2849,11 +3197,13 @@ Le spécificateur |?| ainsi créé est aussi utilisable dans les environnements \subsection{Lignes diagonales} -Par défaut, toutes les lignes diagonales\footnote{On parle des lignes créées par |\Ddots| et non des lignes créées - par une commande |\line| dans le |code-after|.} d'un même tableau sont «parallélisées». Cela signifie que la -première diagonale est tracée et que, ensuite, les autres lignes sont tracées parallèlement à la première (par -rotation autour de l'extrémité la plus à gauche de la ligne). C'est pourquoi la position des instructions |\Ddots| -dans un tableau peut avoir un effet marqué sur le résultat final. +Par défaut, toutes les lignes diagonales\footnote{On parle des lignes créées par + |\Ddots| et non des lignes créées par une commande |\line| dans le + |code-after|.} d'un même tableau sont «parallélisées». Cela signifie que la +première diagonale est tracée et que, ensuite, les autres lignes sont tracées +parallèlement à la première (par rotation autour de l'extrémité la plus à gauche +de la ligne). C'est pourquoi la position des instructions |\Ddots| dans un +tableau peut avoir un effet marqué sur le résultat final. \medskip Dans les exemples suivants, la première instruction |\Ddots| est marquée en couleur : @@ -2898,7 +3248,8 @@ a+b & \Cdots & a+b & 1 \end{pNiceMatrix}$ \bigskip -Il est possible de désactiver la parallélisation avec l'option |parallelize-diags| mise à |false|: \par\nobreak +Il est possible de désactiver la parallélisation avec l'option +|parallelize-diags| mise à |false|: \par\nobreak \medskip \NiceMatrixOptions{parallelize-diags=false}% @@ -2919,10 +3270,11 @@ a+b & \Cdots & a+b & 1 \subsection{Les cases «vides»} \label{empty-cells} -Une instruction comme |\Ldots|, |\Cdots|, etc. essaye de déterminer la première case vide de part et d'autre de la -case considérée. Néanmoins, une case vide n'est pas nécessairement sans contenu dans le codage TeX (c'est-à-dire -sans aucun token entre les deux esperluettes~|&|). En effet, une case dont le contenu est |\hspace*{1cm}| peut être -considérée comme vide. +Une instruction comme |\Ldots|, |\Cdots|, etc. essaye de déterminer la première +case vide de part et d'autre de la case considérée. Néanmoins, une case vide +n'est pas nécessairement sans contenu dans le codage TeX (c'est-à-dire sans +aucun token entre les deux esperluettes~|&|). En effet, une case dont le contenu +est |\hspace*{1cm}| peut être considérée comme vide. \interitem Pour \pkg{nicematrix}, les règles précises sont les suivantes : @@ -2943,31 +3295,39 @@ la dernière case (deuxième rangée et deuxième colonne) est vide. \item Chaque case avec un rendu par TeX de largeur nulle est vide. \medskip -\item Une case avec une commande |\Hspace| (ou |\Hspace*|) est vide. Cette commande |\Hspace| est une commande -définie par l'extension \pkg{nicematrix} avec la même signification que |\hspace| excepté que la case où cette -commande est utilisée est considérée comme vide. Cette commande peut être utilisée pour fixer la largeur des -colonnes sans interférer avec le tracé des lignes en pointillés par \pkg{nicematrix}. +\item Une case avec une commande |\Hspace| (ou |\Hspace*|) est vide. Cette +commande |\Hspace| est une commande définie par l'extension \pkg{nicematrix} +avec la même signification que |\hspace| excepté que la case où cette commande +est utilisée est considérée comme vide. Cette commande peut être utilisée pour +fixer la largeur des colonnes sans interférer avec le tracé des lignes en +pointillés par \pkg{nicematrix}. \end{itemize} \subsection{L'option exterior-arraycolsep} -L'environnement |{array}| insère un espace horizontal égal à |\arraycolsep| avant et après chaque colonne. En -particulier, il y a un espace égal à |\arraycolsep| avant et après le tableau. Cette caractéristique de -l'environnement |{array}| n'était probablement pas une bonne idée\footnote{Dans la documentation de |{amsmath}|, on - peut lire : {\itshape The extra space of |\arraycolsep| that \pkg{array} adds on each side is a waste so we - remove it [in |{matrix}|] (perhaps we should instead remove it from array in general, but that's a harder - task).}}. L'environnement |{matrix}| et ses variantes (|{pmatrix}|, -|{vmatrix}|, etc.) de \pkg{amsmath} préfèrent supprimer ces espaces avec des instructions explicites -|\hskip -\arraycolsep|\footnote{Et non en insérant |@{}| de part et d'autre du préambule, ce qui fait que la - longueur des |\hline| n'est pas modifiée et elle peut paraître trop longue, surtout avec des crochets.}. -L'extension \pkg{nicematrix} fait de même dans \emph{tous} ses environnements y compris l'environnement -|{NiceArray}|. Néanmoins, si l'utilisateur souhaite que l'environnement |{NiceArray}| se comporte par défaut comme -l'environnement |{array}| de \pkg{array} (par exemple pour faciliter l'adaptation d'un document existant), il peut -contrôler ce comportement avec l'option |exterior-arraycolsep| accessible via la commande |\NiceMatrixOptions|. -Avec cette option, des espaces extérieurs de longueur |\arraycolsep| seront insérés dans les environnements -|{NiceArray}| (les autres environnements de l'extension \pkg{nicematrix} ne sont pas affectés). +L'environnement |{array}| insère un espace horizontal égal à |\arraycolsep| +avant et après chaque colonne. En particulier, il y a un espace égal à +|\arraycolsep| avant et après le tableau. Cette caractéristique de +l'environnement |{array}| n'était probablement pas une bonne idée\footnote{Dans + la documentation de |{amsmath}|, on peut lire : {\itshape The extra space of + |\arraycolsep| that \pkg{array} adds on each side is a waste so we remove it + [in |{matrix}|] (perhaps we should instead remove it from array in general, + but that's a harder task).}}. L'environnement |{matrix}| et ses variantes +(|{pmatrix}|, |{vmatrix}|, etc.) de \pkg{amsmath} préfèrent supprimer ces +espaces avec des instructions explicites |\hskip -\arraycolsep|\footnote{Et non + en insérant |@{}| de part et d'autre du préambule, ce qui fait que la longueur + des |\hline| n'est pas modifiée et elle peut paraître trop longue, surtout + avec des crochets.}. L'extension \pkg{nicematrix} fait de même dans +\emph{tous} ses environnements y compris l'environnement |{NiceArray}|. +Néanmoins, si l'utilisateur souhaite que l'environnement |{NiceArray}| se +comporte par défaut comme l'environnement |{array}| de \pkg{array} (par exemple +pour faciliter l'adaptation d'un document existant), il peut contrôler ce +comportement avec l'option |exterior-arraycolsep| accessible via la commande +|\NiceMatrixOptions|. Avec cette option, des espaces extérieurs de longueur +|\arraycolsep| seront insérés dans les environnements |{NiceArray}| (les autres +environnements de l'extension \pkg{nicematrix} ne sont pas affectés). @@ -3086,7 +3446,8 @@ Dupont & Chantal & 15 janvier 1998 \\ Une matrice de permutation.\par\nobreak -À titre d'exemple, on a augmenté la valeur du paramètre |xdots/shorten|.\par\nobreak +À titre d'exemple, on a augmenté la valeur du paramètre +|xdots/shorten|.\par\nobreak \bigskip @@ -3237,8 +3598,9 @@ $\begin{pNiceArray}{*6c|c}[nullify-dots,last-col,code-for-last-col=\scriptstyle] \subsection{Des lignes pointillées qui ne sont plus pointillées} -L'option |line-style| permet de changer le style des lignes tracées par |\Ldots|, |\Cdots|, etc. On peut de ce fait -tracer des lignes qui ne sont plus pointillées. +L'option |line-style| permet de changer le style des lignes tracées par +|\Ldots|, |\Cdots|, etc. On peut de ce fait tracer des lignes qui ne sont plus +pointillées. \begin{Verbatim} \NiceMatrixOptions @@ -3273,8 +3635,9 @@ $\begin{pNiceMatrix}[first-row,first-col] \subsection{Largeur des colonnes} \medskip -Dans l'exemple suivant, nous utilisons |{NiceMatrixBlock}| avec l'option |auto-columns-width| parce que nous -voulons la même largeur (automatique) pour toutes les colonnes. +Dans l'exemple suivant, nous utilisons |{NiceMatrixBlock}| avec l'option +|auto-columns-width| parce que nous voulons la même largeur (automatique) pour +toutes les colonnes. \bigskip \begin{BVerbatim} @@ -3283,7 +3646,7 @@ voulons la même largeur (automatique) pour toutes les colonnes. { last-col,code-for-last-col = \color{blue}\scriptstyle,light-syntax} \setlength{\extrarowheight}{1mm} $\begin{pNiceArray}{cccc:c} - 1 1 1 1 1 ; + 1 1 1 1 1 { } ; 2 4 8 16 9 ; 3 9 27 81 36 ; 4 16 64 256 100 @@ -3307,7 +3670,7 @@ $\begin{pNiceArray}{cccc:c} \setlength{\extrarowheight}{1mm} \enskip $\begin{pNiceArray}{cccc:c} -1 1 1 1 1 ; +1 1 1 1 1 { } ; 2 4 8 16 9 ; 3 9 27 81 36 ; 4 16 64 256 100 @@ -3366,8 +3729,9 @@ $\begin{pNiceArray}{cccc:c} \label{highlight} \medskip -Les exemples suivants nécessitent d'avoir chargé Tikz (\pkg{nicematrix} ne charge que \textsc{pgf}) ainsi que la -bibliothèque Tikz |fit|, ce qui peut se faire avec les deux instructions suivantes dans le préambule du document : +Les exemples suivants nécessitent d'avoir chargé Tikz (\pkg{nicematrix} ne +charge que \textsc{pgf}) 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} \usepackage{tikz} @@ -3377,13 +3741,15 @@ bibliothèque Tikz |fit|, ce qui peut se faire avec les deux instructions suivan \medskip -Pour mettre en évidence une case, il est possible de «dessiner» l'un des nœuds (le «nœud normal», le «nœud moyen» -ou le «nœud large»). Dans l'exemple suivant, on utilise les «nœuds larges» de la diagonale de la matrice (avec la -clé de Tikz «|name suffix|», il est facile d'utiliser les «nœuds larges»). +Pour mettre en évidence une case, il est possible de «dessiner» l'un des nœuds +(le «nœud normal», le «nœud moyen» ou le «nœud large»). Dans l'exemple suivant, +on utilise les «nœuds larges» de la diagonale de la matrice (avec la clé de Tikz +«|name suffix|», il est facile d'utiliser les «nœuds larges»). -Nous redessinons les nœuds avec de nouveaux nœuds en utilisant la bibliothèque \pkg{fit} de Tikz. Comme nous -voulons recréer des nœuds identiques aux premiers, nous devons fixer |inner sep = 0pt| (si on ne fait -pas cela, les nouveaux nœuds seront plus grands que les nœuds d'origine créés par \pkg{nicematrix}). +Nous redessinons les nœuds avec de nouveaux nœuds en utilisant la bibliothèque +\pkg{fit} de Tikz. Comme nous voulons recréer des nœuds identiques aux premiers, +nous devons fixer |inner sep = 0pt| (si on ne fait pas cela, les nouveaux nœuds +seront plus grands que les nœuds d'origine créés par \pkg{nicematrix}). \label{exemple-CodeAfter} @@ -3419,18 +3785,22 @@ a_{41} & a_{42} & a_{43} & a_{44} \end{tikzpicture} \end{pNiceArray}\] -On remarquera que les traits que l'on vient de tracer sont dessinés \emph{après} la matrice sans modifier la -position des composantes de celle-ci. En revanche, les traits tracés par |\hline|, le spécificateur «\verb+|+» ou -les options |hlines|, |vlines| et |hvlines| «écartent» les composantes de la matrice.\footnote{Pour la commande - |\cline|, voir la remarque p.~\pageref{remark-cline}.} +On remarquera que les traits que l'on vient de tracer sont dessinés \emph{après} +la matrice sans modifier la position des composantes de celle-ci. En revanche, +les traits tracés par |\hline|, le spécificateur «\verb+|+» ou les options +|hlines|, |vlines| et |hvlines| «écartent» les composantes de la +matrice.\footnote{Pour la commande |\cline|, voir la remarque + p.~\pageref{remark-cline}.} -\vspace{1cm} -Il est possible de colorier une rangée avec |\rowcolor| dans le |code-before| (ou avec |\rowcolor| de -\pkg{colortbl} dans la première case de la rangée ). Les possibilités de réglages sont néanmoins limitées. C'est -pourquoi nous présentons ici une autre méthode pour surligner une rangée de la matrice. 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}. Ce nœud est rempli après la construction de la matrice. Pour que l'on puisse voir le texte \emph{sous} -le nœud, nous devons utiliser la transparence avec le |blend mode| égal à |multiply|. +\vspace{1cm} Il est possible de colorier une rangée avec |\rowcolor| dans le +|code-before| (ou avec |\rowcolor| de \pkg{colortbl} dans la première case de la +rangée ). Les possibilités de réglages sont néanmoins limitées. C'est pourquoi +nous présentons ici une autre méthode pour surligner une rangée de la matrice. +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}. Ce nœud est +rempli après la construction de la matrice. Pour que l'on puisse voir le texte +\emph{sous} le nœud, nous devons utiliser la transparence avec le |blend mode| +égal à |multiply|. \tikzset{highlight/.style={rectangle, @@ -3464,9 +3834,10 @@ $\begin{bNiceMatrix}[~emphase#code-after = {\tikz \node [highlight = (2-1) (2-3) \bigskip -Ce code échoue avec |latex|-|dvips|-|ps2pdf| parce que Tikz pour |dvips|, pour le moment, ne prend pas en charge -les \emph{blend modes}. Néanmoins, le code suivant, dans le préambule du document LaTeX, devrait activer les -\emph{blend modes} pour ce mode de compilation. +Ce code échoue avec |latex|-|dvips|-|ps2pdf| parce que Tikz pour |dvips|, pour +le moment, ne prend pas en charge les \emph{blend modes}. Néanmoins, le code +suivant, dans le préambule du document LaTeX, devrait activer les \emph{blend + modes} pour ce mode de compilation. \begin{scope} \small @@ -3485,11 +3856,12 @@ les \emph{blend modes}. Néanmoins, le code suivant, dans le préambule du docum |\ExplSyntaxOff| \end{scope} -\vspace{1cm} -On rappelle que dans le cas d'un ensemble de cases fusionnées (avec la commande |\Block|), un nœud Tikz est créé -pour l'ensemble des cases avec pour nom $i$|-|$j$|-block| où $i$ et $j$ sont les numéros de ligne et de colonne de -la case en haut à gauche (où a été utilisée la commande |\Block|). Si on a demandé la création des nœuds |medium|, -alors un nœud de ce type est aussi créé pour ce bloc avec un nom suffixé par |-medium|. +\vspace{1cm} On rappelle que dans le cas d'un ensemble de cases fusionnées (avec +la commande |\Block|), un nœud Tikz est créé pour l'ensemble des cases avec pour +nom $i$|-|$j$|-block| où $i$ et $j$ sont les numéros de ligne et de colonne de +la case en haut à gauche (où a été utilisée la commande |\Block|). Si on a +demandé la création des nœuds |medium|, alors un nœud de ce type est aussi créé +pour ce bloc avec un nom suffixé par |-medium|. @@ -3561,7 +3933,8 @@ a & a & a & L_3 \end{pNiceArray}\] \medskip -Le résultat peut paraître décevant. On peut l'améliorer en utilisant les «nœuds moyens» au lieu des «nœuds normaux». +Le résultat peut paraître décevant. On peut l'améliorer en utilisant les «nœuds +moyens» au lieu des «nœuds normaux». \begin{Verbatim} \begin{tikzpicture}[mes-options, ~emphase#name suffix = -medium@] @@ -3594,7 +3967,8 @@ a & a & a & L_3 \vspace{1cm} -Dans l'exemple suivant, on utilise les «nœuds larges» pour surligner une zone de la matrice.\par\nobreak +Dans l'exemple suivant, on utilise les «nœuds larges» pour surligner une zone de +la matrice.\par\nobreak \begin{Verbatim} \begin{pNiceArray}{>{\strut}cccc}[create-large-nodes,margin,extra-margin=2pt] A_{11} & A_{12} & A_{13} & A_{14} \\ @@ -3634,8 +4008,9 @@ Dans l'exemple suivant, on utilise les «nœuds larges» pour surligner une zone Dans l'exemple suivant, on souhaite illustrer le produit mathématique de deux matrices. \medskip -L'utilisation de |{NiceMatrixBlock}| avec l'option |auto-columns-width| va permettre que toutes les colonnes aient -la même largeur ce qui permettra un alignement des deux matrices superposées. +L'utilisation de |{NiceMatrixBlock}| avec l'option |auto-columns-width| va +permettre que toutes les colonnes aient la même largeur ce qui permettra un +alignement des deux matrices superposées. \begin{Verbatim} \begin{NiceMatrixBlock}[auto-columns-width] \end{Verbatim} @@ -3737,8 +4112,9 @@ L_i & a_{i1} & \Cdots & a_{ik} & \Cdots & a_{in} \\ \section*{Autre documentation} -Le document |nicematrix.pdf| (fourni avec l'extension \pkg{nicematrix}) contient une traduction anglaise de la -documentation ici présente, ainsi que le code source commenté et un historique des versions. +Le document |nicematrix.pdf| (fourni avec l'extension \pkg{nicematrix}) contient +une traduction anglaise de la documentation ici présente, ainsi que le code +source commenté et un historique des versions. \end{document} -- cgit v1.2.3