From 92e358816d81f23b2ff53fb04a1029b39482adb8 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Sat, 6 Feb 2021 22:32:56 +0000 Subject: nicematrix (6feb21) git-svn-id: svn://tug.org/texlive/trunk@57649 c570f23f-e606-0410-a88d-b1316a301751 --- .../doc/latex/nicematrix/nicematrix-french.tex | 480 +++++++++++++++------ 1 file changed, 341 insertions(+), 139 deletions(-) (limited to 'Master/texmf-dist/doc/latex/nicematrix/nicematrix-french.tex') diff --git a/Master/texmf-dist/doc/latex/nicematrix/nicematrix-french.tex b/Master/texmf-dist/doc/latex/nicematrix/nicematrix-french.tex index ca8beb88fc0..ef0cd4123bd 100644 --- a/Master/texmf-dist/doc/latex/nicematrix/nicematrix-french.tex +++ b/Master/texmf-dist/doc/latex/nicematrix/nicematrix-french.tex @@ -1,4 +1,4 @@ -% -*- coding: utf-8 ; -*- +% -*- coding: utf-8 ; -*- \documentclass[dvipsnames]{article}% dvipsnames is for xcolor (loaded by Tikz, loaded by nicematrix) \usepackage{xltxtra} \usepackage[french]{babel} @@ -122,9 +122,10 @@ classique |latex|-|dvips|-|ps2pdf| (ou Adobe Distiller). \textsl{Néanmoins, le ne peut être compilé qu'avec XeLaTeX.} \bigskip -Cette extension nécessite et charge les extensions \pkg{l3keys2e}, \pkg{xparse}, \pkg{array}, \pkg{amsmath} et -\pkg{pgfcore} ainsi que le module \pkg{shapes} de \textsc{pgf} (l'extension \pkg{tikz}, qui est une surcouche de -\textsc{pgf}, n'est \emph{pas} chargée). L'utilisateur final n'a qu'à charger l'extension \pkg{nicematrix} avec +Cette extension nécessite et charge les extensions \pkg{l3keys2e}, \pkg{array}, +\pkg{amsmath} et \pkg{pgfcore} ainsi que le module \pkg{shapes} de \textsc{pgf} +(l'extension \pkg{tikz}, qui est une surcouche de \textsc{pgf}, n'est \emph{pas} +chargée). L'utilisateur final n'a qu'à charger l'extension \pkg{nicematrix} avec l'instruction habituelle : |\usepackage{nicematrix}|. @@ -215,7 +216,7 @@ 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 +Il est bien connu que certaines rangées des tableaux créés par défaut avec LaTeX sont trop proches l'une de l'autre. On en donne ci-dessous un exemple classique. @@ -538,11 +539,11 @@ arum & iris & jacinthe & muguet \end{center} \medskip -\colorbox{yellow!30}{Nouveau 5.7}\enskip Comme on le voit sur cet exemple, on -peut fixer la couleur de fond avec la clé |fill| et la couleur du cadre avec la -clé |draw|\footnote{Si la clé |draw| est utilisée sans valeur, c'est la couleur - par défaut des filets de tableaux qui est utilisée.}. On peut aussi fixer -l'épaisseur du trait avec la clé |line-width|. +Comme on le voit sur cet exemple, on peut fixer la couleur de fond avec la clé +|fill| et la couleur du cadre avec la clé |draw|\footnote{Si la clé |draw| est + utilisée sans valeur, c'est la couleur par défaut des filets de tableaux qui + est utilisée.}. On peut aussi fixer l'épaisseur du trait avec la clé +|line-width|. @@ -1087,7 +1088,9 @@ $\begin{pNiceArray}{cccc:c} \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|. +|letter-for-dotted-lines| disponible dans |\NiceMatrixOptions|. +Ainsi libérée, la lettre «|:|» peut être utilisée par ailleurs (par exemple par +l'extension \pkg{arydshln}). \bigskip @@ -1097,7 +1100,7 @@ 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. +ont ce même effet. @@ -1142,7 +1145,7 @@ Concernant ce phénomène, Adobe Reader donne de meilleurs résultats que MuPDF. \end{itemize} -L'extension \pkg{nicematrix} proposent des outils qui permettent d'éviter ces +L'extension \pkg{nicematrix} propose des outils qui permettent d'éviter ces inconvénients. \end{itemize} @@ -1277,11 +1280,11 @@ rangées avec les deux couleurs à partir de la rangée dont le numéro est donn premier argument (obligatoire), comme le fait la commande |\rowcolors| de \pkg{xcolor}. -\colorbox{yellow!50}{\textbf{Nouveau 5.8}}\enskip +\colorbox{yellow!30}{Nouveau 5.8}\enskip En fait, le premier argument (obligatoire) peut, plus généralement, contenir une liste d'intervalles correspondant à l'ensemble des rangées sur lesquelles portera l'effet de |\rowcolors| (un intervalle de la forme $i$ désigne en fait -l'intervalle constitué de toutes les rangées du tableau à partir de de la rangée~$i$). +l'intervalle constitué de toutes les rangées du tableau à partir de la rangée~$i$). \bigskip @@ -1290,12 +1293,12 @@ optionnel en dernière position (l'argument optionel en première position correspond à l'espace colorimétrique). Les clés disponibles sont |cols|, |restart| et |respect-blocks|. \begin{itemize} -\item \colorbox{yellow!50}{\textbf{Nouveau 5.8}}\enskip +\item \colorbox{yellow!30}{Nouveau 5.8}\enskip La clé |cols| décrit un ensemble de colonnes sur lesquelles portera l'effet de |\rowcolors|. Cet ensemble de colonnes est une liste d'intervalles de la forme $i$|-|$j$. -\item \colorbox{yellow!50}{\textbf{Nouveau 5.8}}\enskip Avec la clé |restart|, chacun +\item \colorbox{yellow!30}{Nouveau 5.8}\enskip Avec la clé |restart|, chacun des intervalles de rangées spécifié par le premier argument de |\rowcolors| recommence avec la même couleur.\footnote{Autrement, la couleur d'une rangée ne dépend que de la partié de son numéro.} @@ -1373,7 +1376,8 @@ Henri & 14 \\ \bigskip -\item La commande |\chessboardcolors| prend en arguments obligatoires deux +\item \label{chessboardcolors}% +La commande |\chessboardcolors| prend en arguments obligatoires deux couleurs et colorie les cases en quinconces avec les deux couleurs. \medskip @@ -2137,7 +2141,7 @@ $\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 +(ainsi que la commande |\line| dans le |\CodeAfter| 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 @@ -2161,7 +2165,7 @@ $\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| +|\Iddots| et |\Hdotsfor| (ainsi que par la commande |\line| dans le |\CodeAfter| 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) : % @@ -2289,47 +2293,193 @@ $\begin{bNiceMatrix}[margin,hvlines] \end{bNiceMatrix}$ -\section{Le code-after} +\section{Le \textbackslash CodeAfter} \label{code-after} +On a présenté p.~\pageref{code-before} la clé |code-before|. Il existe en fait +une clé similaire |code-after| qui peut être utilisée pour indiquer du code qui +sera exécuté après la construction du tableau. -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}.} +\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|. + +\medskip +Deux commandes spéciales sont disponibles dans le |\CodeAfter| : |\line| et +|\SubMatrix|. -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. + +\subsection{La commande \textbackslash line dans le \textbackslash CodeAfter} + +La commande |\line| permet de 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 \begin{BVerbatim}[baseline=c,boxwidth=11cm] \NiceMatrixOptions{xdots/shorten = 0.6 em} -\begin{pNiceMatrix}[~emphase#code-after=\line{2-2}{3-3}@] +\begin{pNiceMatrix} I & 0 & \Cdots &0 \\ 0 & I & \Ddots &\Vdots\\ \Vdots &\Ddots & I &0 \\ 0 &\Cdots & 0 &I +~emphase#\CodeAfter \line{2-2}{3-3}@ \end{pNiceMatrix} \end{BVerbatim} \begin{scope} \NiceMatrixOptions{xdots/shorten = 0.6 em} -$\begin{pNiceMatrix}[code-after=\line{2-2}{3-3}] +$\begin{pNiceMatrix} I & 0 & \Cdots &0 \\ 0 & I & \Ddots &\Vdots\\ \Vdots &\Ddots & I &0 \\ 0 &\Cdots & 0 &I +\CodeAfter \line{2-2}{3-3} \end{pNiceMatrix}$ \end{scope} +\subsection{La commande \textbackslash SubMatrix dans le \textbackslash CodeAfter} + +\label{sub-matrix} + +\colorbox{yellow!50}{\textbf{Nouveau 5.10}}\enskip +La commande |\SubMatrix| permet de positionner des délimiteurs sur une partie du +tableau considérée comme une sous-matrice. La commande |\SubMatrix| prend cinq +arguments : +\begin{itemize} +\item le premier argument est le délimiteur gauche qui peut être n'importe +quel délimiteur extensible de LaTeX : |(|, |[|, |\{|, |\langle|, |\lgroup|, +|\lfloor|, etc. mais aussi le délimiteur nul |.| ; +\item le deuxième argument est le coin supérieur gauche de la sous-matrice avec +la syntaxe $i$|-|$j$ où $i$ est le numéro de rangée et $j$ le numéro de colonne +; +\item le troisième argument est le coin inférieur droit avec la même syntaxe ; +\item la quatrième argument est le délimiteur droit ; +\item le cinquième argument, optionnel, entre crochets, est une liste de couples +clé-valeur. +\end{itemize} + +On remarquera que la commande |\SubMatrix| trace les délimiteurs après la +construction de la matrice : aucun espace n'est inséré par la commande +|\SubMatrix|. C'est pourquoi, dans l'exemple suivant, on a utilisé la clé +|margin| et on a inséré à la main de l'espace entre la troisième et la quatrième +colonne avec |@{\hspace{1.5em}}| dans le préambule du tableau. + \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| (pour un exemple, voir page -\pageref{exemple-CodeAfter}). +\begin{scope} +\fvset{commandchars=\~\#\+}% +\begin{BVerbatim}[boxwidth=11cm,baseline=c] +\[\begin{NiceArray}{ccc~emphase#@{\hspace{1.5em}}+c}% + [cell-space-limits=2pt,~emphase#margin+] + 1 & 1 & 1 & x \\ +\dfrac{1}{4} & \dfrac{1}{2} & \dfrac{1}{4} & y \\ + 1 & 2 & 3 & z +\CodeAfter +~emphase#\SubMatrix({1-1}{3-3})+ +~emphase#\SubMatrix({1-4}{3-4})+ +\end{NiceArray}\] +\end{BVerbatim} +\end{scope} +$\begin{NiceArray}{ccc@{\hspace{1.5em}}c}[cell-space-limits=2pt,margin] + 1 & 1 & 1 & x \\ +\dfrac{1}{4} & \dfrac{1}{2} & \dfrac{1}{4} & y \\ + 1 & 2 & 3 & z +\CodeAfter +\SubMatrix({1-1}{3-3}) +\SubMatrix({1-4}{3-4}) +\end{NiceArray}$ +\bigskip +Les options de la commande |\SubMatrix| sont les suivantes : +% +\begin{itemize} +\item |left-xshift| et |right-xshift| déplacent horizontalement les délimiteurs +(il existe aussi la clé |xshift| qui permet de régler simultanément ces deux +clés) ; +\item |extra-height| ajoute une quantité à la hauteur totale des délimiteurs +(hauteur~|\ht| + profondeur |\dp|) ; +\item |delimiters-color| permet de fixer la couleur des délimiteurs (cette clé +est également disponible dans |\NiceMatrixOptions| et au niveau des +environnements à délimiteurs ou comme option de |\CodeAfter|) ; +\item |slim| qui est une clé booléenne : lorsqu'elle est utilisée la position +horizontale des délimiteurs est calculée uniquement sur le contenu des cases +de la sous-matrice alors, que, dans le cas général, elle est calculée sur le +contenu des cases des colonnes mises en jeu (voir exemple ci-dessous). +\end{itemize} + +Ces clés sont aussi accessibles dans |\NiceMatrixOptions|, au niveau des +environnements de \pkg{nicematrix} ou comme option de |\CodeAfter| avec le +préfixe |sub-matrix|, c'est-à-dire qu'elles sont alors nommées +|sub-matrix/left-xshift|, |sub-matrix/right-xshift|, |sub-matrix/xshift|, etc. + +\bigskip +\begin{scope} +\fvset{commandchars=\~\#\!}% +\begin{BVerbatim}[baseline=c,boxwidth=11cm] +$\begin{NiceArray}{cc@{\hspace{5mm}}l}[cell-space-limits=2pt] + & & \frac12 \\ + & & \frac14 \\[1mm] +a & b & \frac12a+\frac14b \\ +c & d & \frac12c+\frac14d \\ +\CodeAfter +\SubMatrix({1-3}{2-3}) +\SubMatrix({3-1}{4-2}) +\SubMatrix({3-3}{4-3}) +\end{NiceArray}$ +\end{BVerbatim} +\end{scope} +$\begin{NiceArray}{cc@{\hspace{5mm}}l}% + [cell-space-limits=2pt] + & & \frac12 \\ + & & \frac14 \\[1mm] +a & b & \frac12a+\frac14b \\ +c & d & \frac12c+\frac14d \\ +\CodeAfter +\SubMatrix({1-3}{2-3}) +\SubMatrix({3-1}{4-2}) +\SubMatrix({3-3}{4-3}) +\end{NiceArray}$ + +\medskip +Voici le même exemple avec la clé |slim| pour l'une des sous-matrices. + +\medskip +\begin{scope} +\fvset{commandchars=\~\#\!}% +\begin{BVerbatim}[baseline=c,boxwidth=11cm] +$\begin{NiceArray}{cc@{\hspace{5mm}}l}% + [cell-space-limits=2pt] + & & \frac12 \\ + & & \frac14 \\[1mm] +a & b & \frac12a+\frac14b \\ +c & d & \frac12c+\frac14d \\ +\CodeAfter +\SubMatrix({1-3}{2-3})[~emphase#slim!] +\SubMatrix({3-1}{4-2}) +\SubMatrix({3-3}{4-3}) +\end{NiceArray}$ +\end{BVerbatim} +\end{scope} +% +$\begin{NiceArray}{cc@{\hspace{5mm}}l}[cell-space-limits=2pt] + & & \frac12 \\ + & & \frac14 \\[1mm] +a & b & \frac12a+\frac14b \\ +c & d & \frac12c+\frac14d \\ +\CodeAfter +\SubMatrix({1-3}{2-3})[slim] +\SubMatrix({3-1}{4-2}) +\SubMatrix({3-3}{4-3}) +\end{NiceArray}$ + + +\bigskip +Il existe aussi une clé |name| qui permet de donner un nom à une sous-matrice +créée par une commande |\SubMatrix|. Ce nom est utilisé pour créer des nœuds +PGF/Tikz : voir p.~\pageref{node-sub-matrix}. \section{Les notes dans les tableaux} @@ -2654,7 +2804,7 @@ Pour un exemple de personnalisation des notes de tableau, voir p.~\pageref{ex:no \subsection{Utilisation de \{NiceTabular\} avec threeparttable} -Si vous souhaitez utiliser l'environnement |{NiceTabular}| ou |{NiceTAbular*}| +Si vous souhaitez utiliser l'environnement |{NiceTabular}| ou |{NiceTabular*}| dans un environnement |{threeparttable}| de l'extension éponyme, vous devez patcher |{threeparttable}| avec le code suivant (avec une version de LaTeX postérieure à 2020/10/01). @@ -2836,7 +2986,7 @@ colonne courante\footnote{On rappelle que le numéro de la «première rangée» 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| +Dans le |code-before| (cf. p. \pageref{code-before}) et dans le |\CodeAfter| (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). @@ -3024,7 +3174,7 @@ sont accessibles à travers les noms «\textsl{nom}-$i$-$j$» où \textsl{nom} e 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. +faut néanmoins se souvenir que \pkg{nicematrix} ne charge pas Tikz par défaut. Dans les exemples qui suivent, on suppose que Tikz a été chargé par l'utilisateur. @@ -3051,7 +3201,7 @@ 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 +Dans le |\CodeAfter|, et si Tikz est chargé, les choses sont plus simples. On peut (et on doit) désigner les nœuds sous la forme $i$-$j$ : il n'y a pas à préciser l'environnement qui est évidemment l'environnement courant. @@ -3118,33 +3268,33 @@ seconds avec l'option |create-large-nodes|.\footnote{Il existe aussi l'option |create-medium-nodes| et |create-large-nodes|.} \medskip -Ces nœuds ne sont pas utilisés par défault par \pkg{nicematrix}. +Ces nœuds ne sont pas utilisés par défaut 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. -\[\begin{pNiceMatrix}[ - create-medium-nodes, - code-after = {\begin{tikzpicture} - [every node/.style = {fill = red!15, - blend mode = multiply, - inner sep = 0 pt}, - name suffix = -medium] - \node [fit = (1-1)] {} ; - \node [fit = (1-2)] {} ; - \node [fit = (1-3)] {} ; - \node [fit = (2-1)] {} ; - \node [fit = (2-2)] {} ; - \node [fit = (2-3)] {} ; - \node [fit = (3-1)] {} ; - \node [fit = (3-2)] {} ; - \node [fit = (3-3)] {} ; - \end{tikzpicture}}] +\[\begin{pNiceMatrix}[create-medium-nodes] a & a + b & a + b + c \\ a & a & a + b \\ a & a & a +\CodeAfter +\begin{tikzpicture} + [every node/.style = {fill = red!15, + blend mode = multiply, + inner sep = 0 pt}, + name suffix = -medium] +\node [fit = (1-1)] {} ; +\node [fit = (1-2)] {} ; +\node [fit = (1-3)] {} ; +\node [fit = (2-1)] {} ; +\node [fit = (2-2)] {} ; +\node [fit = (2-3)] {} ; +\node [fit = (3-1)] {} ; +\node [fit = (3-2)] {} ; +\node [fit = (3-3)] {} ; +\end{tikzpicture} \end{pNiceMatrix}\] @@ -3156,25 +3306,25 @@ de ces nœuds.\footnote{Il n'y a pas de «nœuds larges» créés dans les rang colonnes extérieures (pour ces rangées et colonnes, voir p.~\pageref{exterior}).} -\[\begin{pNiceMatrix}[ - create-large-nodes, - code-after = {\begin{tikzpicture} - [every node/.style = {blend mode = multiply, - inner sep = 0 pt}, - name suffix = -large] - \node [fit = (1-1),fill = red!15] {} ; - \node [fit = (1-3),fill = red!15] {} ; - \node [fit = (2-2),fill = red!15] {} ; - \node [fit = (3-1),fill = red!15] {} ; - \node [fit = (3-3),fill = red!15] {} ; - \node [fit = (1-2),fill = blue!15] {} ; - \node [fit = (2-1),fill = blue!15] {} ; - \node [fit = (2-3),fill = blue!15] {} ; - \node [fit = (3-2),fill = blue!15] {} ; - \end{tikzpicture}}] +\[\begin{pNiceMatrix}[create-large-nodes] a & a + b & a + b + c \\ a & a & a + b \\ a & a & a +\CodeAfter +\begin{tikzpicture} + [every node/.style = {blend mode = multiply, + inner sep = 0 pt}, + name suffix = -large] +\node [fit = (1-1),fill = red!15] {} ; +\node [fit = (1-3),fill = red!15] {} ; +\node [fit = (2-2),fill = red!15] {} ; +\node [fit = (3-1),fill = red!15] {} ; +\node [fit = (3-3),fill = red!15] {} ; +\node [fit = (1-2),fill = blue!15] {} ; +\node [fit = (2-1),fill = blue!15] {} ; +\node [fit = (2-3),fill = blue!15] {} ; +\node [fit = (3-2),fill = blue!15] {} ; +\end{tikzpicture} \end{pNiceMatrix}\] @@ -3189,25 +3339,25 @@ utilisé les options |left-margin| et |right-margin|.\footnote{Les options aucune valeur n'est donnée, c'est la valeur par défaut qui est utilisée et elle est égale à |\arraycolsep| (valeur initiale : 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} - [every node/.style = {blend mode = multiply, - inner sep = 0 pt}, - name suffix = -large] - \node [fit = (1-1),fill = red!15] {} ; - \node [fit = (1-3),fill = red!15] {} ; - \node [fit = (2-2),fill = red!15] {} ; - \node [fit = (3-1),fill = red!15] {} ; - \node [fit = (3-3),fill = red!15] {} ; - \node [fit = (1-2),fill = blue!15] {} ; - \node [fit = (2-1),fill = blue!15] {} ; - \node [fit = (2-3),fill = blue!15] {} ; - \node [fit = (3-2),fill = blue!15] {} ; - \end{tikzpicture}}] +\[\begin{pNiceMatrix}[create-large-nodes,left-margin,right-margin] a & a + b & a + b + c \\ a & a & a + b \\ a & a & a +\CodeAfter +\begin{tikzpicture} + [every node/.style = {blend mode = multiply, + inner sep = 0 pt}, + name suffix = -large] +\node [fit = (1-1),fill = red!15] {} ; +\node [fit = (1-3),fill = red!15] {} ; +\node [fit = (2-2),fill = red!15] {} ; +\node [fit = (3-1),fill = red!15] {} ; +\node [fit = (3-3),fill = red!15] {} ; +\node [fit = (1-2),fill = blue!15] {} ; +\node [fit = (2-1),fill = blue!15] {} ; +\node [fit = (2-3),fill = blue!15] {} ; +\node [fit = (3-2),fill = blue!15] {} ; +\end{tikzpicture} \end{pNiceMatrix}\] \medskip @@ -3215,25 +3365,26 @@ 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} - [every node/.style = {blend mode = multiply, - inner sep = 0 pt}, - name suffix = -large] - \node [fit = (1-1),fill = red!15] {} ; - \node [fit = (1-3),fill = red!15] {} ; - \node [fit = (2-2),fill = red!15] {} ; - \node [fit = (3-1),fill = red!15] {} ; - \node [fit = (3-3),fill = red!15] {} ; - \node [fit = (1-2),fill = blue!15] {} ; - \node [fit = (2-1),fill = blue!15] {} ; - \node [fit = (2-3),fill = blue!15] {} ; - \node [fit = (3-2),fill = blue!15] {} ; - \end{tikzpicture}}] +\[\begin{pNiceMatrix}% + [create-large-nodes,left-margin,right-margin,extra-right-margin=3pt,extra-left-margin=3pt] a & a + b & a + b + c \\ a & a & a + b \\ a & a & a +\CodeAfter +\begin{tikzpicture} + [every node/.style = {blend mode = multiply, + inner sep = 0 pt}, + name suffix = -large] +\node [fit = (1-1),fill = red!15] {} ; +\node [fit = (1-3),fill = red!15] {} ; +\node [fit = (2-2),fill = red!15] {} ; +\node [fit = (3-1),fill = red!15] {} ; +\node [fit = (3-3),fill = red!15] {} ; +\node [fit = (1-2),fill = blue!15] {} ; +\node [fit = (2-1),fill = blue!15] {} ; +\node [fit = (2-3),fill = blue!15] {} ; +\node [fit = (3-2),fill = blue!15] {} ; +\end{tikzpicture} \end{pNiceMatrix}\] @@ -3267,7 +3418,8 @@ noix & noisette & brugnon \vspace{1cm} \begin{minipage}[c]{7cm} -Ci-contre, on a colorié toutes les cases de ce tableau avec |\chessboardcolors|. +Ci-contre, on a colorié toutes les cases de ce tableau avec +|\chessboardcolors| (cf.~p.~\pageref{chessboardcolors}). \end{minipage} \hspace{1.5cm} \begin{scope} @@ -3288,25 +3440,25 @@ Voici maintenant tous les «nœuds larges» de ce tableau (sans utilisation de \hspace{1.5cm} \begin{scope} \large -\begin{NiceTabular}[c]{w{l}{2cm}ll}[hvlines, - create-large-nodes, - code-after = {\begin{tikzpicture} - [every node/.style = {blend mode = multiply, - inner sep = 0 pt}, - name suffix = -large] - \node [fit = (1-1),fill = red!15] {} ; - \node [fit = (1-3),fill = red!15] {} ; - \node [fit = (2-2),fill = red!15] {} ; - \node [fit = (3-1),fill = red!15] {} ; - \node [fit = (3-3),fill = red!15] {} ; - \node [fit = (1-2),fill = blue!15] {} ; - \node [fit = (2-1),fill = blue!15] {} ; - \node [fit = (2-3),fill = blue!15] {} ; - \node [fit = (3-2),fill = blue!15] {} ; - \end{tikzpicture}}] +\begin{NiceTabular}[c]{w{l}{2cm}ll}[hvlines,create-large-nodes] fraise & amande & abricot \\ prune & pêche & poire \\[1ex] noix & noisette & brugnon +\CodeAfter +\begin{tikzpicture} + [every node/.style = {blend mode = multiply, + inner sep = 0 pt}, + name suffix = -large] +\node [fit = (1-1),fill = red!15] {} ; +\node [fit = (1-3),fill = red!15] {} ; +\node [fit = (2-2),fill = red!15] {} ; +\node [fit = (3-1),fill = red!15] {} ; +\node [fit = (3-3),fill = red!15] {} ; +\node [fit = (1-2),fill = blue!15] {} ; +\node [fit = (2-1),fill = blue!15] {} ; +\node [fit = (2-3),fill = blue!15] {} ; +\node [fit = (3-2),fill = blue!15] {} ; +\end{tikzpicture} \end{NiceTabular} \end{scope} @@ -3317,7 +3469,7 @@ noix & noisette & brugnon 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|. +Ces nœuds sont accessibles dans le |code-before| et dans le |\CodeAfter|. \begin{center} \begin{NiceTabular}{ccc}[hvlines,rules/width=1pt,rules/color=gray] rose & tulipe & lys \\ @@ -3343,7 +3495,7 @@ 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|) à +défaut), on peut donc accéder (dans le |code-before| et le |\CodeAfter|) à l'intersection du filet horizontal~$i$ et du filet vertical~$j$ avec la syntaxe |(row-|$i$\verb+-|col-+$j$|)|. @@ -3390,6 +3542,45 @@ l'intersection du filet horizontal~$i$ et du filet vertical~$j$ avec la syntaxe \end{NiceMatrix}\] +\subsection{Les nœuds correspondant aux commandes \textbackslash SubMatrix} + +\label{node-sub-matrix} + +La commande |\SubMatrix| disponible dans le |\CodeAfter| a été présentée +p.~\pageref{sub-matrix}. + +\smallskip +Si une commande |\SubMatrix| est utilisée avec la clé |name| sous la forme +|name=|\textsl{\ttfamily MonNom}, trois nœuds PGF/Tikz sont créés avec les noms +\textsl{\ttfamily MonNom}|-left|, \textsl{\ttfamily MonNom} et \textsl{\ttfamily + MonNom}|-right|. + +\smallskip +Les nœuds \textsl{\ttfamily MonNom}|-left| et \textsl{\ttfamily MonNom}|-right| correspondent aux +délimiteurs gauche et droit et le nœud \textsl{\ttfamily MonNom} correspond à la +sous-matrice elle-même. + +\medskip +Dans l'exemple suivant, on a surligné ces trois nœuds (la sous-matrice elle-même +a été créée avec |\SubMatrix\{{2-2}{3-3}\}|). +% +\[\begin{pNiceMatrix} +121 & 23 & 345 & 345\\ +45 & 346 & 863 & 444\\ +3462 & 38458 & 34 & 294 \\ +34 & 7 & 78 & 309 \\ +\CodeAfter +\SubMatrix\{{2-2}{3-3}\}[name=A] +\begin{tikzpicture} + [every node/.style = {blend mode = multiply, + inner sep = 0 pt}] +\node [fit = (A),fill = red!15] {} ; +\node [fit = (A-left),fill = blue!15] {} ; +\node [fit = (A-right),fill = blue!15] {} ; +\end{tikzpicture} +\end{pNiceMatrix}\] + + \section{API pour les développeurs} L'extension \pkg{nicematrix} fournit deux variables internes mais publiques\footnote{Conformément aux conventions de LaTeX3, @@ -3550,7 +3741,7 @@ est sans effet. 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 + |\CodeAfter|.} 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 @@ -3692,6 +3883,18 @@ environnements de l'extension \pkg{nicematrix} ne sont pas affectés). L'extension \pkg{nicematrix} n'est pas parfaitement compatible avec l'extension \pkg{arydshln} (parce que cette extension redéfinit de nombreuses commandes internes de \pkg{array}). +Pour pouvoir utiliser \pkg{arydshln}, il faut, de toutes manières, au préalable, +libérer la lettre «|:|» en choisissant une autre lettre pour les filets verticaux +pointillés de \pkg{nicematrix} : + +\begin{Verbatim} +\NiceMatrixOptions{letter-for-dotted-lines=;} +\end{Verbatim} + +\bigskip +L'extension \pkg{nicematrix} n'est pas compatible avec la classe \cls{aastex63}. +Si vous souhaitez utiliser \pkg{nicematrix} with \cls{aastex63}, envoyez-moi un +courrier électronique et j'essaierai de résoudre les incompatibilités. \section{Exemples} @@ -4087,7 +4290,7 @@ $\begin{pNiceArray}{cccc:c} Pour mettre en évidence une case d'une matrice, il est possible de «dessiner» cette case avec la clé |draw| de la commande |\Block| (c'est l'un des usages des blocs mono-case\footnote{On rappelle que si le premier argument obligatoire de -la commande |\Block| est laissé vide, le bloc est considéré comme mono-case}). +la commande |\Block| est laissé vide, le bloc est considéré comme mono-case.}). \label{exemple-CodeAfter} @@ -4284,21 +4487,20 @@ moyens» au lieu des «nœuds normaux». \medskip On obtient la matrice suivante. -\[\begin{pNiceArray}{ccc}[ - last-col, - create-medium-nodes, - code-after = {\begin{tikzpicture}[highlight/.style = {fill = red!15, - blend mode = multiply, - inner sep = 0pt, - fit = #1}, - name suffix = -medium] - \node [highlight = (1-1) (1-3)] {} ; - \node [highlight = (2-1) (2-3)] {} ; - \node [highlight = (3-1) (3-3)] {} ; - \end{tikzpicture}}] +\[\begin{pNiceArray}{ccc}[last-col,create-medium-nodes] a & a + b & a + b + c & L_1 \\ a & a & a + b & L_2 \\ -a & a & a & L_3 +a & a & a & L_3 \\ +\CodeAfter +\begin{tikzpicture}[highlight/.style = {fill = red!15, + blend mode = multiply, + inner sep = 0pt, + fit = #1}, + name suffix = -medium] +\node [highlight = (1-1) (1-3)] {} ; +\node [highlight = (2-1) (2-3)] {} ; +\node [highlight = (3-1) (3-3)] {} ; +\end{tikzpicture} \end{pNiceArray}\] -- cgit v1.2.3