From e2c2e92594542226ff8816e672ef05dc43a41217 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Thu, 15 Aug 2019 20:22:51 +0000 Subject: nicematrix (15aug19) git-svn-id: svn://tug.org/texlive/trunk@51885 c570f23f-e606-0410-a88d-b1316a301751 --- .../doc/latex/nicematrix/nicematrix-french.tex | 857 +++++++++++---------- 1 file changed, 471 insertions(+), 386 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 b3dbc988161..70064ad807c 100644 --- a/Master/texmf-dist/doc/latex/nicematrix/nicematrix-french.tex +++ b/Master/texmf-dist/doc/latex/nicematrix/nicematrix-french.tex @@ -7,15 +7,30 @@ \usepackage{amsmath} \usepackage{color} -\usepackage{colortbl} \usepackage{array} -\usepackage{arydshln} -\usepackage{verbatim} +\usepackage{colortbl} \usepackage{nicematrix} + + \usepackage{siunitx} +\newbox\ExampleOne + +\setbox\ExampleOne\hbox{% +$\begin{NiceArray}{|*{4}{C|}}[hlines,first-row,first-col] + & e & a & b & c \\ +e & e & a & b & c \\ +a & a & e & c & b \\ +b & b & c & e & a \\ +c & c & b & a & e +\end{NiceArray}$} + +\usepackage{arydshln} +\usepackage{verbatim} + + \usepackage{fancyvrb} \fvset{commandchars=\~\#\@,formatcom={\color{gray}}} @@ -33,6 +48,14 @@ \usepackage[hyperfootnotes = false]{hyperref} +\hypersetup{ + pdfinfo = { + Title = { L’extension nicematrix }, + Subject = { Une extension LaTeX } , + Author = { F. Pantigny } + } +} + \NewDocumentEnvironment {scope} {} {} {} @@ -83,21 +106,22 @@ suivantes : \texttt{draft} est utilisée, ces lignes en pointillés ne sont pas tracées pour accélérer la compilation.} ; -\textbullet\ une première rangée et une dernière colonne pour les labels ; +\textbullet\ des rangées et colonnes extérieures pour les labels ; \textbullet\ un contrôle sur la largeur des colonnes. \end{minipage} \end{savenotes} \hspace{1.4cm} -$\begin{bNiceArrayRC}{CCCC}[code-for-last-col=\color{blue}\scriptstyle, - code-for-first-row=\color{blue}\scriptstyle, - columns-width = auto] -C_1 & C_2 & \Cdots & C_n \\ -a_{11} & a_{12} & \Cdots & a_{1n} & L_1 \\ -a_{21} & a_{22} & \Cdots & a_{2n} & L_2 \\ -\Vdots & \Vdots & \Ddots & \Vdots & \Vdots \\ -a_{n1} & a_{n2} & \Cdots & a_{nn} & L_n -\end{bNiceArrayRC}$ +$\begin{bNiceArray}{CCCC}[first-row,first-col, + code-for-first-col=\color{blue}\scriptstyle, + code-for-first-row=\color{blue}\scriptstyle, + columns-width = auto] + & C_1 & C_2 & \Cdots & C_n \\ +L_1 & a_{11} & a_{12} & \Cdots & a_{1n} \\ +L_2 & a_{21} & a_{22} & \Cdots & a_{2n} \\ +\Vdots & \Vdots & \Vdots & \Ddots & \Vdots\\ +L_n & a_{n1} & a_{n2} & \Cdots & a_{nn} +\end{bNiceArray}$ @@ -164,18 +188,17 @@ L'extension \pkg{nicematrix} définit les nouveaux environnements suivants : \begin{ttfamily} \setlength{\tabcolsep}{3mm} \begin{tabular}{llll} -\{NiceMatrix\} & \{NiceArray\} & \{pNiceArrayC\} & \{pNiceArrayRC\} \\ -\{pNiceMatrix\} & & \{bNiceArrayC\} & \{bNiceArrayRC\} \\ -\{bNiceMatrix\} & & \{BNiceArrayC\} & \{BNiceArrayRC\} \\ -\{BNiceMatrix\} & & \{vNiceArrayC\} & \{vNiceArrayRC\} \\ -\{vNiceMatrix\} & & \{VNiceArrayC\} & \{VNiceArrayRC\} \\ -\{VNiceMatrix\} & & \{NiceArrayCwithDelims\} & \{NiceArrayRCwithDelims\} \\ +\{NiceMatrix\} & \{NiceArray\} & \{pNiceArray\} \\ +\{pNiceMatrix\} & & \{bNiceArray\} \\ +\{bNiceMatrix\} & & \{BNiceArray\} \\ +\{BNiceMatrix\} & & \{vNiceArray\} \\ +\{vNiceMatrix\} & & \{VNiceArray\} \\ +\{VNiceMatrix\} & & \{NiceArrayWithDelims\} \\ \end{tabular} \end{ttfamily} - \medskip Par défaut, les environnements \verb|{NiceMatrix}|, \verb|{pNiceMatrix}|, \verb|{bNiceMatrix}|, \verb|{BNiceMatrix}|, \verb|{vNiceMatrix}| et \verb|{VNiceMatrix}| se comportent quasiment comme les environnements correspondants de @@ -187,23 +210,12 @@ Par défaut, les environnements \verb|{NiceMatrix}|, \verb|{pNiceMatrix}|, \verb L'environnement \verb|{NiceArray}| est similaire à l'environnement \verb|{array}| de l'extension \verb|{array}|. Néanmoins, pour des raisons techniques, dans le préambule de l'environnement \verb|{NiceArray}|, l'utilisateur doit utiliser les lettres \verb|L|, \verb|C| et~\verb|R| au lieu de \verb|l|, \verb|c| et \verb|r|. Il est possible -d'utiliser les constructions \verb|w{...}{...}|, \verb|W{...}{...}|, \verb+|+, \verb|>{...}|, \verb|<{...}|, +d'utiliser les constructions \verb|w{...}{...}|, \verb|W{...}{...}|\footnote{Pour les colonnes de type \verb|w| et + \verb|W|, les cases sont composées en mode mathématique (dans les environnements de \pkg{nicematrix}) alors que + dans \verb|{array}| de \pkg{array}, elles sont composées en mode texte.}, \verb+|+, \verb|>{...}|, \verb|<{...}|, \verb|@{...}|, \verb|!{...}| et \verb|*{n}{...}| mais les lettres \verb|p|, \verb|m| et \verb|b| ne doivent pas -être employées. Voir p.~\pageref{NiceArray} la partie concernant \verb|{NiceArray}|. - -\medskip -Les environnements avec un \verb|C| à la fin de leur nom, \verb|{pNiceArrayC}|, \verb|{bNiceArrayC}|, -\verb|{BNiceArrayC}|, \verb|{vNiceArrayC}| et \verb|{VNiceArrayC}| sont similaires aux environnements -\verb|{NiceArray}| (en particulier les lettres spéciales \verb|L|, \verb|C| et \verb|R|) mais créent une colonne -extérieure (à droite du délimiteur). Voir p.~\pageref{pNiceArrayC} la partie concernant \verb|{pNiceArrayC}|. - -\medskip -Les environnements dont le nom se termine par \verb|RC| (\verb|{pNiceArrayRC}|, \verb|{bNiceArrayRC}|, \verb|{BNiceArrayRC}|, -\verb|{vNiceArrayRC}| et \verb|{VNiceArrayRC}|) sont similaires à l'environnement \verb|{NiceArray}| mais créent une -rangée extérieure (au-dessus de la matrice principale) et une colonne extérieure. Voir p.~\pageref{pNiceArrayRC} la -partie concernant \verb|{pNiceArrayRC}|. - - +être employées. L'environnement \verb|{NiceArray}| et ses variantes fournissent des options qui permettent de +tracer des rangées et colonnes extérieures. Voir p.~\pageref{NiceArray} la partie concernant \verb|{NiceArray}|. \section{Les lignes en pointillés continues} @@ -213,6 +225,8 @@ partie concernant \verb|{pNiceArrayRC}|. commande \verb|\iddots|, définie dans \pkg{nicematrix}, est une variante de \verb|\ddots| avec les points allant vers le haut : \smash{$\iddots$}. Si \pkg{mathdots} est chargée, la version de \pkg{mathdots} est utilisée. Elle correspond à la commande \verb|\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 @@ -227,7 +241,7 @@ a_1 & \Cdots & & & a_1 \\ \Vdots & a_2 & \Cdots & & a_2 \\ & \Vdots & \Ddots \\ \\ -a_1 & a_2 & & & a_n \\ +a_1 & a_2 & & & a_n \end{bNiceMatrix} \end{BVerbatim} $\begin{bNiceMatrix} @@ -235,7 +249,7 @@ a_1 & \Cdots & & & a_1 \\ \Vdots & a_2 & \Cdots & & a_2 \\ & \Vdots & \Ddots \\ \\ -a_1 & a_2 & & & a_n \\ +a_1 & a_2 & & & a_n \end{bNiceMatrix}$ \interitem @@ -306,7 +320,7 @@ $\begin{bNiceMatrix} \bigskip En fait, dans cet exemple, il aurait été possible de tracer la même matrice -sans commandes étoilées avec le codage suivant :\par\nobreak +sans commande étoilée avec le codage suivant :\par\nobreak \bigskip \begin{BVerbatim}[baseline=c,boxwidth=10cm] \begin{bNiceMatrix} @@ -324,17 +338,15 @@ $\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~\verb|\\| pour l'espacement -vertical et la commande~\verb|\hspace*| dans une case pour l'espacement -horizontal.\footnote{Le meilleur moyen de régler la largeur des colonnes est, -de toutes manières, d'utiliser l'environnement \verb|{NiceArray}| avec une colonne -de type~\verb|w| ou \verb|W|.} - -Toutefois, une commande~\verb|\hspace*| pourrait interférer dans la construction -des lignes en pointillés. C'est pourquoi l'extension \pkg{nicematrix} fournit -une commande~\verb|\Hspace| qui est une variante de \verb|\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~\verb|\\| pour l'espacement vertical et la commande~\verb|\hspace*| dans une case pour l'espacement +horizontal.\footnote{Le meilleur moyen de régler la largeur des colonnes est, de toutes manières, d'utiliser + l'environnement \verb|{NiceArray}| (ou une de ses variantes) avec une colonne de type~\verb|w| ou \verb|W|: cf. + p.~\pageref{width}} + +Toutefois, une commande~\verb|\hspace*| pourrait interférer dans la construction des lignes en pointillés. C'est +pourquoi l'extension \pkg{nicematrix} fournit une commande~\verb|\Hspace| qui est une variante de \verb|\hspace| +transparente pour la construction des lignes en pointillés de \pkg{nicematrix}.\par\nobreak \bigskip \begin{BVerbatim}[baseline=c,boxwidth=10cm] \begin{bNiceMatrix} @@ -472,14 +484,14 @@ $\begin{pNiceMatrix} 1 & 2 & 3 & 4 & 5 \\ 1 & ~emphase#\Hdotsfor{3}@ & 5 \\ 1 & 2 & 3 & 4 & 5 \\ -1 & 2 & 3 & 4 & 5 \\ +1 & 2 & 3 & 4 & 5 \end{pNiceMatrix}$ \end{BVerbatim} $\begin{pNiceMatrix} 1 & 2 & 3 & 4 & 5 \\ 1 & \Hdotsfor{3} & 5 \\ 1 & 2 & 3 & 4 & 5 \\ -1 & 2 & 3 & 4 & 5 \\ +1 & 2 & 3 & 4 & 5 \end{pNiceMatrix}$ \bigskip @@ -499,7 +511,7 @@ $\begin{pNiceMatrix} 1 & 2 & 3 & 4 & 5 \\ & \Hdotsfor{3} \\ 1 & 2 & 3 & 4 & 5 \\ -1 & 2 & 3 & 4 & 5 \\ +1 & 2 & 3 & 4 & 5 \end{pNiceMatrix}$ \bigskip @@ -509,7 +521,8 @@ consécutifs. Par homogénéité, \verb|\Hdotsfor| prend aussi un argument optio mais cet argument est écarté silencieusement. Remarque : Contrairement à la commande \verb|\hdotsfor| de \pkg{amsmath}, la commande \verb|\Hdotsfor| est -compatible avec l'extension \pkg{colortbl}. +utilisable lorsque l'extension \pkg{colortbl} est chargée (mais vous risquez d'avoir des problèmes si vous utilisez +\verb|\rowcolor| sur la même rangée que \verb|\Hdotsfor|). \subsection{Comment créer les lignes en pointillés de manière transparente} @@ -523,12 +536,10 @@ En fait, cette option est un alias pour la conjonction de deux options : \verb|r \begin{itemize} \item L'option \verb|renew-dots|\par\nobreak Avec cette option, les commandes \verb|\ldots|, \verb|\cdots|, -\verb|\vdots|, \verb|\ddots|, \verb|\iddots|\footnote{La commande \verb|\iddots| n'est pas une commande de LaTeX mais - est définie dans l'extension \pkg{nicematrix}. Si \pkg{mathdots} est chargée, la version de \pkg{mathdots} est - utilisée.} et \verb|\hdotsfor| sont redéfinies dans les environnements de \pkg{nicematrix} et agissent comme -\verb|\Ldots|, \verb|\Cdots|, \verb|\Vdots|, \verb|\Ddots|, \verb|\Iddots| et \verb|\Hdotsfor| ; la commande -\verb|\dots| (points de suspension «automatiques» de \verb|amsmath|) est aussi redéfinie et se comporte comme -\verb|\Ldots|. +\verb|\vdots|, \verb|\ddots|, \verb|\iddots|\footnotemark[\thefniddots] et \verb|\hdotsfor| sont redéfinies dans +les environnements de \pkg{nicematrix} et agissent comme \verb|\Ldots|, \verb|\Cdots|, \verb|\Vdots|, +\verb|\Ddots|, \verb|\Iddots| et \verb|\Hdotsfor| ; la commande \verb|\dots| (points de suspension «automatiques» +de \verb|amsmath|) est aussi redéfinie et se comporte comme \verb|\Ldots|. \item L'option \verb|renew-matrix|\par\nobreak Avec cette option, l'environnement \verb|{matrix}| est redéfini et @@ -574,7 +585,7 @@ et $j$ les numéros de ligne et de colonne de la case considérée. $\begin{pNiceMatrix}[name=~emphase#ma-matrice@] 1 & 2 & 3 \\ 4 & 5 & 6 \\ -7 & 8 & 9 \\ +7 & 8 & 9 \end{pNiceMatrix}$ \tikz[remember picture,overlay] \draw ~emphase#(ma-matrice-2-2)@ circle (2mm) ; @@ -582,7 +593,7 @@ $\begin{pNiceMatrix}[name=~emphase#ma-matrice@] $\begin{pNiceMatrix}[name=ma-matrice] 1 & 2 & 3 \\ 4 & 5 & 6 \\ -7 & 8 & 9 \\ +7 & 8 & 9 \end{pNiceMatrix}$ \tikz[remember picture,overlay] \draw (ma-matrice-2-2) circle (2mm) ; @@ -638,8 +649,8 @@ a & a & a \medskip Les noms des «nœuds larges» s'obtiennent en ajoutant le suffixe «\verb|-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{Dans les environnements du type de \verb|{pNiceArrayC}| et \verb|{pNiceArrayRC}|, il - n'y a pas de «nœuds larges» créés dans la rangée supplémentaire et la colonne supplémentaire.} +définition de ces nœuds.\footnote{Il n'y a pas de «nœuds larges» créés dans les lignes et colonnes extérieures + (pour ces lignes et colonnes, voir p.~\pageref{exterior}).} \[\begin{pNiceMatrix}[ create-extra-nodes, @@ -692,7 +703,7 @@ a & a & a \end{pNiceMatrix}\] \medskip -Il est aussi possible d'ajouter de l'espace des deux côtés du tableau avec les options +Il est aussi possible d'ajouter de l'espace sur les côtés du tableau avec les options \verb|extra-left-margin| et \verb|extra-right-margin|. Ces marges ne sont pas incorporées dans les «nœuds larges». Dans l'exemple suivant, nous avons utilisé \verb|extra-left-margin| et \verb|extra-right-margin| avec la valeur $3$~pt. \[\begin{pNiceMatrix}[ @@ -759,13 +770,13 @@ entre les nœuds). $\begin{pNiceMatrix}[~emphase#code-after = {\line {1-1} {3-3}}@] 0 & 0 & 0 \\ 0 & & 0 \\ -0 & 0 & 0 \\ +0 & 0 & 0 \end{pNiceMatrix}$ \end{BVerbatim} $\begin{pNiceMatrix}[code-after = {\line {1-1} {3-3}}] 0 & 0 & 0 \\ 0 & & 0 \\ -0 & 0 & 0 \\ +0 & 0 & 0 \end{pNiceMatrix}$ @@ -799,219 +810,158 @@ $\left[\begin{NiceArray}{CCCC|C} a_1 & ? & \Cdots & ? & ? \\ 0 & & \Ddots & \Vdots & \Vdots\\ \Vdots & \Ddots & \Ddots & ? \\ -0 & \Cdots & 0 & a_n & ? \\ +0 & \Cdots & 0 & a_n & ? \end{NiceArray}\right]$ \end{BVerbatim} $\left[\begin{NiceArray}{CCCC|C} a_1 & ? & \Cdots & ? & ? \\ 0 & & \Ddots & \Vdots & \Vdots\\ \Vdots & \Ddots & \Ddots & ? \\ -0 & \Cdots & 0 & a_n & ? \\ +0 & \Cdots & 0 & a_n & ? \end{NiceArray}\right]$ \vspace{1cm} -Un exemple où on utilise \verb|{NiceArray}| parce que l'on veut utiliser les types de colonne \verb|L| et -\verb|R| : +Il existe également des variantes pour l'environnement \verb|{NiceArray}|: +\verb|{pNiceArray}|, \verb|{bNiceArray}|, \verb|{BNiceArray}|, \verb|{vNiceArray}| et +\verb|{VNiceArray}|. + + +Dans l'exemple suivant, on utilise un environnment \verb|{pNiceArray}| (on n'utilise pas \verb|{pNiceMatrix}| car +on souhaite utiliser les types de colonne \verb|L| et \verb|R| --- avec \verb|{pNiceMatrix}|, toutes les +colonnes sont de type \verb|C|). + \bigskip \begin{BVerbatim}[baseline=c,boxwidth=10cm] -$\left(\begin{NiceArray}{LCR} +$\begin{pNiceArray}{LCR} a_{11} & \Cdots & a_{1n} \\ a_{21} & & a_{2n} \\ \Vdots & & \Vdots \\ -a_{n-1,1} & \Cdots & a_{n-1,n} \\ -\end{NiceArray}\right)$ +a_{n-1,1} & \Cdots & a_{n-1,n} +\end{pNiceArray}$ \end{BVerbatim} -$\left(\begin{NiceArray}{LCR} +$\begin{pNiceArray}{LCR} a_{11} & \Cdots & a_{1n} \\ a_{21} & & a_{2n} \\ \Vdots & & \Vdots \\ -a_{n-1,1} & \Cdots & a_{n-1,n} \\ -\end{NiceArray}\right)$ - +a_{n-1,1} & \Cdots & a_{n-1,n} +\end{pNiceArray}$ +\vspace{1cm} +L'environnement \verb|{NiceArray}| et ses variantes permettent de composer des rangées et des colonnes «extérieures» grâce aux options +\verb|first-row|, \verb|last-row|, \verb|first-col| et \verb|last-col|. +\label{exterior} +Il n'y a pas de spécification de colonne à fournir pour l'éventuelle «première colonne» (qui sera automatiquement +une colonne de type \verb|R|) ou pour l'éventuelle «dernière colonne» (qui sera automatiquement de type \verb|L|). -\section{L'environnement \{pNiceArrayC\} et ses variantes} -\label{pNiceArrayC} -L'environnement \verb|{pNiceArrayC}| compose une matrice avec une colonne extérieure. +\begin{Verbatim} +$\begin{pNiceArray}{CCCC}[~emphase#first-row,last-row,first-col,last-col@] + & C_1 & C_2 & C_3 & C_4 & \\ +L_1 & a_{11} & a_{12} & a_{13} & a_{14} & L_1 \\ +L_2 & a_{21} & a_{22} & a_{23} & a_{24} & L_2 \\ +L_3 & a_{31} & a_{32} & a_{33} & a_{34} & L_3 \\ +L_4 & a_{41} & a_{42} & a_{43} & a_{44} & L_4 \\ + & C_1 & C_2 & C_3 & C_4 & +\end{pNiceArray}$ +\end{Verbatim} +% +\[\begin{pNiceArray}{CCCC}[first-row,last-row,first-col,last-col] + & C_1 & C_2 & C_3 & C_4 & \\ +L_1 & a_{11} & a_{12} & a_{13} & a_{14} & L_1 \\ +L_2 & a_{21} & a_{22} & a_{23} & a_{24} & L_2 \\ +L_3 & a_{31} & a_{32} & a_{33} & a_{34} & L_3 \\ +L_4 & a_{41} & a_{42} & a_{43} & a_{44} & L_4 \\ + & C_1 & C_2 & C_3 & C_4 & +\end{pNiceArray}\] -L'environnement \verb|{pNiceArrayC}| prend un argument obligatoire qui est le préambule du tableau. -Les types de colonne disponibles sont les mêmes que pour l'environnement \verb|{NiceArray}|. Néanmoins, aucune -spécification de colonne ne doit être donnée pour la dernière colonne. Ce sera automatiquement (et obligatoirement) -une colonne de type \verb|L|. +\bigskip -Une option spéciale, nommée \verb|code-for-last-col|, permet d'indiquer des tokens qui seront insérés au début de -chaque case de la dernière colonne. L'option \verb|columns-width| ne s'applique pas à la colonne extérieure. +Néanmoins, il y a une particularité avec l'option \verb|last-row| : quand LaTeX compose un tableau \verb|{array}| +(via une commande \verb|\halign| de TeX), il le compose rangée par rangée et il n'y a pas de moyen direct de savoir +que l'on est arrivé à la dernière rangée avant la composition de celle-ci. Pour remédier à ce problème, +\pkg{nicematrix} écrit dans le fichier \verb|aux| le nombre de rangées du tableau pour pouvoir l'utiliser à la +compilation suivante. Il est néanmoins également possible de passer directement le nombre de rangées en argument de +l'option \verb|last-row| et, ainsi, \pkg{nicematrix} le connaîtra dès la première compilation. \bigskip +On peut contrôler l'apparence de ces rangées et colonnes avec les options \verb|code-for-first-row|, +\verb|code-for-last-row|, \verb|code-for-first-col| et \verb|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} -$\begin{pNiceArrayC}{*6C|C}[nullify-dots,~emphase#code-for-last-col={\scriptstyle}@] -1 & 1 & 1 &\Cdots & & 1 & 0 & \\ -0 & 1 & 0 &\Cdots & & 0 & & L_2 \gets L_2-L_1 \\ -0 & 0 & 1 &\Ddots & & \Vdots & & L_3 \gets L_3-L_1 \\ - & & &\Ddots & & & \Vdots & \Vdots \\ -\Vdots & & &\Ddots & & 0 & \\ -0 & & &\Cdots & 0 & 1 & 0 & L_n \gets L_n-L_1 -\end{pNiceArrayC}$ +\NiceMatrixOptions{~emphase#code-for-first-row@ = \color{red}, + ~emphase#code-for-first-col@ = \color{blue}, + ~emphase#code-for-last-row@ = \color{green}, + ~emphase#code-for-last-col@ = \color{magenta}} +$\begin{pNiceArray}{CC|CC}[first-row,last-row=5,first-col,last-col] + & C_1 & C_2 & C_3 & C_4 & \\ +L_1 & a_{11} & a_{12} & a_{13} & a_{14} & L_1 \\ +L_2 & a_{21} & a_{22} & a_{23} & a_{24} & L_2 \\ +\hline +L_3 & a_{31} & a_{32} & a_{33} & a_{34} & L_3 \\ +L_4 & a_{41} & a_{42} & a_{43} & a_{44} & L_4 \\ + & C_1 & C_2 & C_3 & C_4 & +\end{pNiceArray}$ \end{Verbatim} +% +\begin{scope} +\NiceMatrixOptions{code-for-first-row = \color{red}, + code-for-first-col = \color{blue}, + code-for-last-row = \color{green}, + code-for-last-col = \color{magenta}} +\[\begin{pNiceArray}{CC|CC}[first-row,last-row=5,first-col,last-col] + & C_1 & \multicolumn1C{C_2} & C_3 & C_4 & \\ +L_1 & a_{11} & a_{12} & a_{13} & a_{14} & L_1 \\ +L_2 & a_{21} & a_{22} & a_{23} & a_{24} & L_2 \\ +\hline +L_3 & a_{31} & a_{32} & a_{33} & a_{34} & L_3 \\ +L_4 & a_{41} & a_{42} & a_{43} & a_{44} & L_4 \\ + & C_1 & \multicolumn1C{C_2} & C_3 & C_4 & +\end{pNiceArray}\] +\end{scope} -\[\begin{pNiceArrayC}{*6C|C}[nullify-dots,code-for-last-col={\scriptstyle}] -1 & 1 & 1 &\Cdots & & 1 & 0 & \\ -0 & 1 & 0 &\Cdots & & 0 & & L_2 \gets L_2-L_1 \\ -0 & 0 & 1 &\Ddots & & \Vdots & & L_3 \gets L_3-L_1 \\ - & & &\Ddots & & & \Vdots & \Vdots \\ -\Vdots & & &\Ddots & & 0 & \\ -0 & & &\Cdots & 0 & 1 & 0 & L_n \gets L_n-L_1 -\end{pNiceArrayC}\] - - - -\bigskip -On remarquera qu'un trait horizontal tracé avec \verb|\hline| ne s'étend \emph{pas} dans la dernière colonne. -\medskip -\begin{BVerbatim}[baseline=c,boxwidth=11cm] -$\begin{pNiceArrayC} -a_{11} & a_{12} & a_{13} \\ -a_{21} & a_{22} & a_{23} \\ -a_{31} & a_{32} & a_{33} \\ -~emphase#\hline@ -S_1 & S_2 & S_3 -\end{pNiceArrayC}$ -\end{BVerbatim} -$\begin{pNiceArrayC}{CCC} -a_{11} & a_{12} & a_{13} & L_1 \\ -a_{21} & a_{22} & a_{23} & L_2 \\ -a_{31} & a_{32} & a_{33} & L_3 \\ -\hline -S_1 & S_2 & S_3 -\end{pNiceArrayC}$ +\emph{Remarques} +\begin{itemize} +\item Comme on peut le voir dans l'exemple précédent, un filet horizontal (tracé avec \verb|\hline|) ne s'étend pas +dans les colonnes extérieures et un filet vertical (spécifié par un caractère «\verb+|+» dans le préambule du +tableau) ne s'étend pas dans les rangées extérieures.\footnote{Ce dernier point n'est pas valable si on a chargé, + en plus de \pkg{nicematrix}, l'extension \pkg{arydshln}. Les extensions \pkg{nicematrix} et \pkg{arydshln} ne + sont pas parfaitement compatibles car \pkg{arydshln} redéfinit beaucoup de structures internes à \pkg{array}.} +\item La «première rangée» d'un environnement \verb|{pNiceArray}| porte le numéro $0$, et non $1$ (de même pour la +«première colonne»). Ce numéro est utilisé, par exemple, pour les noms des nœuds Tikz (les noms de ces nœuds sont +utilisés, par exemple, par la commande \verb|\line| dans le \verb|code-after|). +\item Sans surprise, une éventuelle option \verb|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 \verb|\\| après la +«première rangée» ou avant la «dernière rangée» (le placement des délimiteurs serait erroné). +\end{itemize} \bigskip -En fait, l'environnement \verb|{pNiceArrayC}| et ses variantes sont fondés sur un environnement plus général, appelé -\verb|{NiceArrayCwithDelims}|. Les deux premiers arguments obligatoires de cet environnement sont les délimiteurs +En fait, l'environnement \verb|{pNiceArray}| et ses variantes sont fondés sur un environnement plus général, appelé +\verb|{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 -\verb|{NiceArrayCwithDelims}| si on a besoin de délimiteurs atypiques. +\verb|{NiceArrayWithDelims}| si on a besoin de délimiteurs atypiques. \medskip \begin{BVerbatim}[baseline=c,boxwidth=11cm] -$\begin{NiceArrayCwithDelims} - {\downarrow}{\downarrow}{CCC} +$\begin{~emphase#NiceArrayWithDelims@} + {\downarrow}{\downarrow}{CCC}[last-col] 1 & 2 & 3 & L_1 \\ 4 & 5 & 6 & L_2 \\ 7 & 8 & 9 & L_3 -\end{NiceArrayCwithDelims}$ +\end{~emphase#NiceArrayWithDelims@}$ \end{BVerbatim} -$\begin{NiceArrayCwithDelims} - {\downarrow}{\downarrow}{CCC} +$\begin{NiceArrayWithDelims} + {\downarrow}{\downarrow}{CCC}[last-col] 1 & 2 & 3 & L_1 \\ 4 & 5 & 6 & L_2 \\ 7 & 8 & 9 & L_3 -\end{NiceArrayCwithDelims}$ - - - - -\section{L'environnement \{pNiceArrayRC\} et ses variantes} -\label{pNiceArrayRC} - -L'environnement \verb|{pNiceArrayRC}| compose une matrice avec une rangée extérieure et une colonne extérieure. - -Cet environnement \verb|{pNiceArrayRC}| prend un argument obligatoire qui est le préambule du tableau. Comme pour -l'environnement \verb|{pNiceArrayC}|, aucune spécification ne doit être fournie pour la dernière colonne qui sera -automatiquement une colonne de type \verb|L|. - -Une option spéciale, appelée \verb|code-for-first-row|, permet d'indiquer des tokens qui seront insérés au début de -chaque case de la rangée extérieure. - - -\bigskip -\begin{BVerbatim}[baseline=c,boxwidth=11cm] -$\begin{pNiceArrayRC}{CCC}% (ici, % est obligatoire) - [columns-width = auto, - code-for-first-row = \color{blue}, - code-for-last-col = \color{blue}] -C_1 & C_2 & C_3 \\ -1 & 2 & 3 & L_1\\ -4 & 5 & 6 & L_2\\ -7 & 8 & 9 & L_3\\ -\end{pNiceArrayRC}$ -\end{BVerbatim} -$\begin{pNiceArrayRC}{CCC}[columns-width=auto, - code-for-first-row = \color{blue}, - code-for-last-col = \color{blue}] -C_1 & C_2 & C_3 \\ -1 & 2 & 3 & L_1 \\ -4 & 5 & 6 & L_2 \\ -7 & 8 & 9 & L_3 \\ -\end{pNiceArrayRC}$ - - -\bigskip -La première rangée d'un environnement \verb|{pNiceArrayRC}| a le numéro $0$, et non~$1$. Ce numéro est utilisé pour -les noms des nœuds Tikz (les noms de ces nœuds sont utilisés, par exemple, par la commande \verb|\line| dans le \verb|code-after|). - -Pour des raisons techniques, il n'est pas possible d'utiliser l'option de la commande \verb|\\| après la première -rangée (le placement des délimiteurs serait erroné). - - -\bigskip - -\bigskip -Si on veut écrire un système linéaire, on peut utiliser le code suivant, avec un préambule \verb"CCC|C":\par\nobreak - -\medskip -\begin{BVerbatim}[baseline=c,boxwidth=11cm] -$\begin{pNiceArrayRC}{~emphase#CCC|C@} -C_1 & \Cdots & C_n \\ -a_{11} & \Cdots & a_{1n} & b_1 \\ -\Vdots & & \Vdots & \Vdots \\ -a_{n1} & \Cdots & a_{nn} & b_n \\ -\end{pNiceArrayRC}$ -\end{BVerbatim} -$\begin{pNiceArrayRC}{CCC|C} -C_1 & \Cdots & \multicolumn1C{C_n} \\ -a_{11} & \Cdots & a_{1n} & b_1 \\ -\Vdots & & \Vdots & \Vdots \\ -a_{n1} & \Cdots & a_{nn} & b_n \\ -\end{pNiceArrayRC}$ - -\medskip -On remarquera que le trait vertical ne s'étend pas dans la première rangée.\footnote{Il s'agit d'une - caractéristique apparue dans la version 2.3 de \pkg{nicematrix}. Dans les versions antérieures, le trait - s'étendait dans la première rangée. On doit remarquer que si \pkg{arydshln} est chargé, le trait va se prolonger - dans la première rangée (c'est parce que \pkg{arydshln} redéfinit de nombreuses macros internes de \pkg{array}).} - - -\bigskip -En fait, l'environnement \verb|{pNiceArrayRC}| et ses variantes sont fondés sur un environnement plus général, appelé -\verb|{NiceArrayRCwithDelims}|. 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 -\verb|{NiceArrayRCwithDelims}| si on a besoin de délimiteurs atypiques. - - -\medskip -\begin{BVerbatim}[baseline=c,boxwidth=11cm] -$\begin{NiceArrayRCwithDelims} - {\downarrow}{\downarrow}{CCC}[columns-width=auto] -C_1 & C_2 & C_3 \\ -1 & 2 & 3 \\ -4 & 5 & 6 \\ -7 & 8 & 9 -\end{NiceArrayRCwithDelims}$ -\end{BVerbatim} -$\begin{NiceArrayRCwithDelims} - {\downarrow}{\downarrow}{CCC}[columns-width=auto] -C_1 & C_2 & C_3 \\ -1 & 2 & 3 \\ -4 & 5 & 6 \\ -7 & 8 & 9 -\end{NiceArrayRCwithDelims}$ +\end{NiceArrayWithDelims}$ @@ -1019,9 +969,9 @@ C_1 & C_2 & C_3 \\ \section[Les lignes en pointillés pour séparer les rangées et les colonnes]{Les lignes en pointillés pour séparer les rangées\\ et les colonnes} -Dans les environnements \pkg{nicematrix}, il est possible d'utiliser la commande -\verb|\hdottedline| (fournie par \pkg{nicematrix}) qui est l'équivalent pour les pointillés des commandes -\verb|\hline| et \verb|\hdashline| (de \pkg{arydshln}). +Dans les environnements de \pkg{nicematrix}, il est possible d'utiliser la commande \verb|\hdottedline| (fournie +par \pkg{nicematrix}) qui est l'équivalent pour les pointillés des commandes \verb|\hline| et \verb|\hdashline| +(cette dernière étant une commande de \pkg{arydshln}). \medskip \begin{BVerbatim}[baseline=c,boxwidth=9.5cm] @@ -1041,103 +991,106 @@ $\begin{pNiceMatrix} \bigskip -Dans les environnements avec un préambule explicite (comme -\verb|{NiceArray}|, etc.), il est possible de dessiner un trait vertical en pointillés avec le spécificateur -«\verb|:|». +Dans les environnements avec un préambule explicite (comme \verb|{NiceArray}|, \verb|{pNiceArray}|, etc.), il est +possible de dessiner un trait vertical en pointillés avec le spécificateur «\verb|:|». \medskip \begin{BVerbatim}[baseline=c,boxwidth=9.5cm] -\left(\begin{NiceArray}{CCCC~emphase#:@C} +\begin{pNiceArray}{CCCC~emphase#:@C} 1 & 2 & 3 & 4 & 5 \\ 6 & 7 & 8 & 9 & 10 \\ 11 & 12 & 13 & 14 & 15 -\end{NiceArray}\right) +\end{pNiceArray} \end{BVerbatim} -$\left(\begin{NiceArray}{CCCC:C} +$\begin{pNiceArray}{CCCC:C} 1 & 2 & 3 & 4 & 5 \\ 6 & 7 & 8 & 9 & 10 \\ 11 & 12 & 13 & 14 & 15 -\end{NiceArray}\right)$ +\end{pNiceArray}$ \bigskip -Ces lignes en pointillés ne s'étendent \emph{pas} dans la première rangée et la dernière colonne des environnements -qui proposent ces fonctionnalités (par ex. \verb|{pNiceArrayRC}|). +Ces lignes en pointillés ne s'étendent pas dans les rangées et colonnes extérieures. + \medskip \begin{BVerbatim}[baseline=c,boxwidth=9.5cm] -$\begin{pNiceArrayRC}{CCC:C}% - [ code-for-first-row = \color{blue}\scriptstyle, - code-for-last-col = \color{blue}\scriptstyle ] +$\begin{pNiceArray}{CCC:C}% + [first-row,last-col, + code-for-first-row = \color{blue}\scriptstyle, + code-for-last-col = \color{blue}\scriptstyle ] C_1 & C_2 & C_3 & C_4 \\ 1 & 2 & 3 & 4 & L_1 \\ 5 & 6 & 7 & 8 & L_2 \\ 9 & 10 & 11 & 12 & L_3 \\ \hdottedline 13 & 14 & 15 & 16 & L_4 -\end{pNiceArrayRC}$ +\end{pNiceArray}$ \end{BVerbatim} -$\begin{pNiceArrayRC}{CCC:C}[ code-for-first-row = \color{blue}\scriptstyle, - code-for-last-col = \color{blue}\scriptstyle ] +$\begin{pNiceArray}{CCC:C}% + [first-row,last-col, + code-for-first-row = \color{blue}\scriptstyle, + code-for-last-col = \color{blue}\scriptstyle ] C_1 & C_2 & C_3 & C_4 \\ 1 & 2 & 3 & 4 & L_1 \\ 5 & 6 & 7 & 8 & L_2 \\ 9 & 10 & 11 & 12 & L_3 \\ \hdottedline 13 & 14 & 15 & 16 & L_4 -\end{pNiceArrayRC}$ +\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 \verb|letter-for-dotted-lines| disponible dans \verb|\NiceMatrixOptions|. -Par exemple, dans ce document, nous avons chargé l'extension \pkg{arydshln} qui utilise la lettre «\verb|:|» -pour indiquer un trait vertical en tiretés. Par conséquent, en utilisant l'option \verb|letter-for-dotted-lines|, -on peut utiliser les traits verticaux fournis à la fois par \pkg{arydshln} et par \pkg{nicematrix}. +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 \verb|letter-for-dotted-lines| disponible dans \verb|\NiceMatrixOptions|. Par +exemple, dans ce document, nous avons chargé l'extension \pkg{arydshln} qui utilise la lettre «\verb|:|» pour +indiquer un trait vertical en tiretés. Par conséquent, en utilisant l'option \verb|letter-for-dotted-lines|, on +peut utiliser les traits verticaux fournis à la fois par \pkg{arydshln} et par \pkg{nicematrix}. + \medskip \begin{BVerbatim}[baseline=c,boxwidth=9.5cm] \NiceMatrixOptions{letter-for-dotted-lines = V} -\left(\begin{NiceArray}{~emphase#C|C:CVC@} +\begin{pNiceArray}{~emphase#C|C:CVC@} 1 & 2 & 3 & 4 \\ 5 & 6 & 7 & 8 \\ 9 & 10 & 11 & 12 -\end{NiceArray}\right) +\end{pNiceArray} \end{BVerbatim} \begin{scope} \NiceMatrixOptions{letter-for-dotted-lines = V} -$\left(\begin{NiceArray}{C|C:CVC} +$\begin{pNiceArray}{C|C:CVC} 1 & 2 & 3 & 4 \\ 5 & 6 & 7 & 8 \\ 9 & 10 & 11 & 12 -\end{NiceArray}\right)$ +\end{pNiceArray}$ \end{scope} \section{La largeur des colonnes} \label{width} -Dans les environnements avec un préambule explicite -(comme \verb|{NiceArray}|, \verb|{pNiceArrayC}|, etc.), il est possible -de fixer la largeur d'une colonne avec les lettres classiques \verb|w| et \verb|W| de l'extension \pkg{array}. +Dans les environnements avec un préambule explicite (comme \verb|{NiceArray}|, \verb|{pNiceArray}|, etc.), il est +possible de fixer la largeur d'une colonne avec les lettres classiques \verb|w| et \verb|W| de l'extension +\pkg{array}. Dans les environnements de \pkg{nicematrix}, les cases des colonnes de ce type sont composées en mode +mathématique (alors que dans \verb|{array}| de \pkg{array}, elles sont composées en mode texte). \medskip \begin{BVerbatim}[baseline=c,boxwidth=10cm] -$\left(\begin{NiceArray}{~emphase#wc{1cm}@CC} +$\begin{pNiceArray}{~emphase#Wc{1cm}@CC} 1 & 12 & -123 \\ 12 & 0 & 0 \\ 4 & 1 & 2 -\end{NiceArray}\right)$ +\end{pNiceArray}$ \end{BVerbatim} -$\left(\begin{NiceArray}{wc{1cm}CC} +$\begin{pNiceArray}{Wc{1cm}CC} 1 & 12 & -123 \\ 12 & 0 & 0 \\ 4 & 1 & 2 -\end{NiceArray}\right)$ +\end{pNiceArray}$ \bigskip -Il est aussi possible de fixer la largeur de toutes les colonnes de la matrice directement avec l'option -\verb|columns-width| (disponible dans tous les environnements de \pkg{nicematrix}). +Avec \pkg{nicematrix}, il est aussi possible de fixer la largeur de toutes les colonnes de la matrice directement +avec l'option \verb|columns-width| (disponible dans tous les environnements de \pkg{nicematrix}). \medskip \begin{BVerbatim}[baseline=c,boxwidth=10cm] @@ -1160,7 +1113,7 @@ possible de le supprimer en mettant \verb|\arraycolsep| à~$0$). \bigskip Il est possible de donner la valeur \verb|auto| à l'option \verb|columns-width| : toutes les colonnes du tableau auront alors une largeur égale à la largeur de la case la plus large du tableau. \textbf{Deux ou trois - compilations peuvent être nécessaires.}\par\nobreak + compilations successives peuvent être nécessaires.}\par\nobreak \medskip \begin{BVerbatim}[baseline=c,boxwidth=10cm] @@ -1183,23 +1136,23 @@ document avec la commande \verb|\NiceMatrixOptions|.\par\nobreak \begin{BVerbatim}[baseline=c,boxwidth=8.5cm] ~emphase#\NiceMatrixOptions{columns-width=10mm}@ $\begin{pNiceMatrix} -a & b \\ c & d \\ +a & b \\ c & d \end{pNiceMatrix} = \begin{pNiceMatrix} -1 & 1245 \\ 345 & 2 \\ +1 & 1245 \\ 345 & 2 \end{pNiceMatrix}$ \end{BVerbatim} \begin{scope} \NiceMatrixOptions{columns-width=10mm} $\begin{pNiceMatrix} a & b \\ -c & d \\ +c & d \end{pNiceMatrix} = \begin{pNiceMatrix} 1 & 1245 \\ -345 & 2 \\ +345 & 2 \end{pNiceMatrix}$ \end{scope} @@ -1214,72 +1167,69 @@ utilise l'environnement \verb|{NiceMatrixBlock}| avec l'option \verb|auto-column \begin{BVerbatim}[baseline=c,boxwidth=8.5cm] ~emphase#\begin{NiceMatrixBlock}[auto-columns-width]@ $\begin{pNiceMatrix} -a & b \\ c & d \\ +a & b \\ c & d \end{pNiceMatrix} = \begin{pNiceMatrix} -1 & 1245 \\ 345 & 2 \\ +1 & 1245 \\ 345 & 2 \end{pNiceMatrix}$ ~emphase#\end{NiceMatrixBlock}@ \end{BVerbatim} \begin{NiceMatrixBlock}[auto-columns-width] $\begin{pNiceMatrix} -a & b \\ c & d \\ +a & b \\ c & d \end{pNiceMatrix} = \begin{pNiceMatrix} -1 & 1245 \\ 345 & 2 \\ +1 & 1245 \\ 345 & 2 \end{pNiceMatrix}$ \end{NiceMatrixBlock} \section{L'option hlines} -Il est bien entendu possible d'ajouter des filets horizontaux entre les lignes avec la commande~\verb|\hline| dans les -environnements de \pkg{nicematrix} mais il est aussi possible de demander que tous les filets horizontaux soient -tracés avec l'option \verb|hlines|. - +Dans les environnements de \pkg{nicematrix}, on peut bien entendu ajouter des filets horizontaux entre les lignes +avec la commande~\verb|\hline|. Par souci de commodité, l'extension \pkg{nicemarix} fournit l'option \verb|hlines| +qui impose directement que tous les filets horizontaux soient tracés (à l'exception, très naturelle, du +filet avant l'éventuelle «première rangée» et après l'éventuelle «dernière rangée»). \medskip -\begin{BVerbatim}[baseline=c,boxwidth=8.5cm] -$\begin{NiceArray}{|*{4}{C|}}[~emphase#hlines@] -e & a & b & c \\ -a & e & c & b \\ -b & c & e & a \\ -c & b & a & e +\begin{BVerbatim}[baseline=c,boxwidth=10.6cm] +$\begin{NiceArray}{|*{4}{C|}}[~emphase#hlines@,first-row,first-col] + & e & a & b & c \\ +e & e & a & b & c \\ +a & a & e & c & b \\ +b & b & c & e & a \\ +c & c & b & a & e \end{NiceArray}$ \end{BVerbatim} -$\begin{NiceArray}{|*{4}{C|}}[hlines] -e & a & b & c \\ -a & e & c & b \\ -b & c & e & a \\ -c & b & a & e -\end{NiceArray}$ +\raisebox{-5mm}{\box\ExampleOne} \section{Utilisation du type de colonne S de siunitx} Si l'extension \pkg{siunitx} est chargée (avant ou après \pkg{nicematrix}), il est possible d'utiliser les colonnes de type \verb|S| de \pkg{siunitx} dans les environnements de \pkg{nicematrix}. L'implémentation n'utilise -explicitement aucune macro privée de \pkg{siunitx}. +explicitement aucune macro privée de \pkg{siunitx}. Les colonnes \verb|d| de \pkg{dcolumn} ne sont pas prises en +charge par \pkg{nicematrix}. \medskip \begin{BVerbatim}[baseline = c, boxwidth = 10.5cm] -$\begin{pNiceArrayRC}{~emphase#S@Cwc{1cm}C}[nullify-dots] +$\begin{pNiceArray}{~emphase#S@CWc{1cm}C}[nullify-dots,first-row] {C_1} & \Cdots & & C_n \\ 2.3 & 0 & \Cdots & 0 \\ 12.4 & \Vdots & & \Vdots \\ 1.45 \\ 7.2 & 0 & \Cdots & 0 -\end{pNiceArrayRC}$ +\end{pNiceArray}$ \end{BVerbatim} -$\begin{pNiceArrayRC}{SCwc{1cm}C}[nullify-dots] +$\begin{pNiceArray}{SCWc{1cm}C}[nullify-dots,first-row] {C_1} & \Cdots & & C_n \\ 2.3 & 0 & \Cdots & 0 \\ 12.4 & \Vdots & & \Vdots \\ 1.45 \\ 7.2 & 0 & \Cdots & 0 -\end{pNiceArrayRC}$ +\end{pNiceArray}$ \section{Remarques techniques} @@ -1418,7 +1368,7 @@ Néanmoins, l'utilisateur peut changer ce comportement avec l'option Cette option est seulement pour la «compatibilité» puisque l'extension \pkg{nicematrix} fournit un contrôle plus précis avec les options \verb|left-margin|, -\verb|right-margin|, \verb|extra-left-margin| et \verb|extra-right-margin|. +\verb|extra-left-margin|, etc. \subsection{L'option de classe draft} @@ -1434,7 +1384,7 @@ C'est pourquoi, avec l'option de classe \verb|draft|, les lignes en pointillés pour accélérer la compilation. -\subsection{Un problème technique ave l'argument de \textbackslash\textbackslash} +\subsection{Un problème technique avec l'argument de \textbackslash\textbackslash} Pour des raisons techniques, si vous utilisez l'argument optionnel de la commande \verb|\\|, @@ -1499,6 +1449,25 @@ a & \multicolumn1C{\frac AB} \\[2mm] b & c \end{pNiceMatrix}$ +\subsection{Environnements obsolètes} + +La version 3.0 de \pkg{nicematrix} a introduit l'environnement +\verb|{pNiceArray}| (et ses variantes) avec les options \verb|first-row|, \verb|last-row|, +\verb|first-col| et \verb|last-col|. + +Par conséquent, les environnements suivants, présents dans les versions précédentes de \pkg{nicematrix} sont devenus +obsolètes : +% +\begin{itemize} +\item \verb|{NiceArrayCwithDelims}| ; +\item \verb|{pNiceArrayC}|, \verb|{bNiceArrayC}|, \verb|{BNiceArrayC}|, \verb|{vNiceArrayC}|, +\verb|{VNiceArrayC}| ; +\item \verb|{NiceArrayRCwithDelims}| ; +\item \verb|{pNiceArrayRC}|, \verb|{bNiceArrayRC}|, \verb|{BNiceArrayRC}|, \verb|{vNiceArrayRC}|, +\verb|{VNiceArrayRC}|. +\end{itemize} + +Ils seront peut-être supprimés dans une version future de \pkg{nicematrix}. \section{Exemples} @@ -1579,21 +1548,21 @@ $\begin{pNiceMatrix} Un exemple avec \verb|\multicolumn|:\par\nobreak \bigskip \begin{BVerbatim} -\begin{pNiceMatrix}[nullify-dots] +\begin{BNiceMatrix}[nullify-dots] 1 & 2 & 3 & 4 & 5 & 6 & 7 & 8 & 9 & 10\\ 1 & 2 & 3 & 4 & 5 & 6 & 7 & 8 & 9 & 10\\ \Cdots & & ~emphase#\multicolumn{6}{C}{10 \text{ autres lignes}}@ & \Cdots \\ 1 & 2 & 3 & 4 & 5 & 6 & 7 & 8 & 9 & 10 -\end{pNiceMatrix} +\end{BNiceMatrix} \end{BVerbatim} \bigskip -\[\begin{pNiceMatrix}[nullify-dots] +\[\begin{BNiceMatrix}[nullify-dots] 1 & 2 & 3 & 4 & 5 & 6 & 7 & 8 & 9 & 10\\ 1 & 2 & 3 & 4 & 5 & 6 & 7 & 8 & 9 & 10\\ \Cdots & & \multicolumn{6}{C}{10 \text{ autres lignes}} & \Cdots \\ 1 & 2 & 3 & 4 & 5 & 6 & 7 & 8 & 9 & 10 -\end{pNiceMatrix}\] +\end{BNiceMatrix}\] \vspace{2cm} Un exemple avec \verb|\Hdotsfor|:\par\nobreak @@ -1625,32 +1594,56 @@ Un exemple pour le résultant de deux polynômes : \bigskip \begin{BVerbatim} \setlength{\extrarowheight}{1mm} -\[\begin{NiceArray}{|CCCC:CCC|}[columns-width=6mm] +\[\begin{vNiceArray}{CCCC:CCC}[columns-width=6mm] a_0 & && &b_0 & & \\ a_1 &\Ddots&& &b_1 &\Ddots& \\ \Vdots&\Ddots&& &\Vdots &\Ddots&b_0 \\ a_p & &&a_0 & & &b_1 \\ &\Ddots&&a_1 &b_q & &\Vdots\\ & &&\Vdots & &\Ddots& \\ - & &&a_p & & &b_q \\ -\end{NiceArray}\] + & &&a_p & & &b_q +\end{vNiceArray}\] \end{BVerbatim} \bigskip \begin{scope} \setlength{\extrarowheight}{1mm} -\[\begin{NiceArray}{|CCCC:CCC|}[columns-width=6mm] +\[\begin{vNiceArray}{CCCC:CCC}[columns-width=6mm] a_0 & && &b_0 & & \\ a_1 &\Ddots&& &b_1 &\Ddots& \\ \Vdots&\Ddots&& &\Vdots &\Ddots&b_0 \\ a_p & &&a_0 & & &b_1 \\ &\Ddots&&a_1 &b_q & &\Vdots\\ & &&\Vdots & &\Ddots& \\ - & &&a_p & & &b_q \\ -\end{NiceArray}\] + & &&a_p & & &b_q +\end{vNiceArray}\] \end{scope} +\vspace{2cm} +Un exemple avec un système linéaire:\par\nobreak + +\begin{Verbatim} +$\begin{pNiceArray}{*6C|C}[nullify-dots,last-col,code-for-last-col={\scriptstyle}] +1 & 1 & 1 &\Cdots & & 1 & 0 & \\ +0 & 1 & 0 &\Cdots & & 0 & & L_2 \gets L_2-L_1 \\ +0 & 0 & 1 &\Ddots & & \Vdots & & L_3 \gets L_3-L_1 \\ + & & &\Ddots & & & \Vdots & \Vdots \\ +\Vdots & & &\Ddots & & 0 & \\ +0 & & &\Cdots & 0 & 1 & 0 & L_n \gets L_n-L_1 +\end{pNiceArray}$ +\end{Verbatim} + +\[\begin{pNiceArray}{*6C|C}[nullify-dots,last-col,code-for-last-col={\scriptstyle}] +1 & 1 & 1 &\Cdots & & 1 & 0 & \\ +0 & 1 & 0 &\Cdots & & 0 & & L_2 \gets L_2-L_1 \\ +0 & 0 & 1 &\Ddots & & \Vdots & & L_3 \gets L_3-L_1 \\ + & & &\Ddots & & & \Vdots & \Vdots \\ +\Vdots & & &\Ddots & & 0 & \\ +0 & & &\Cdots & 0 & 1 & 0 & L_n \gets L_n-L_1 +\end{pNiceArray}\] + + \subsection{Largeur des colonnes} @@ -1664,12 +1657,12 @@ nous voulons la même largeur (automatique) pour toutes les colonnes. ~emphase#\begin{NiceMatrixBlock}[auto-columns-width]@ \NiceMatrixOptions{code-for-last-col = \color{blue}\scriptstyle} \setlength{\extrarowheight}{1mm} -\quad $\begin{pNiceArrayC}{CCCC:C} +\quad $\begin{pNiceArray}{CCCC:C}[last-col] 1&1&1&1&1&\\ 2&4&8&16&9&\\ 3&9&27&81&36&\\ -4&16&64&256&100&\\ -\end{pNiceArrayC}$ +4&16&64&256&100& +\end{pNiceArray}$ ... ~emphase#\end{NiceMatrixBlock}@ \end{BVerbatim} @@ -1681,63 +1674,61 @@ nous voulons la même largeur (automatique) pour toutes les colonnes. \NiceMatrixOptions{code-for-last-col = \color{blue}\scriptstyle} \setlength{\extrarowheight}{1mm} -\quad $\begin{pNiceArrayC}{CCCC:C} +\quad $\begin{pNiceArray}{CCCC:C}[last-col] 1&1&1&1&1&\\ 2&4&8&16&9&\\ 3&9&27&81&36&\\ -4&16&64&256&100&\\ -\end{pNiceArrayC}$ +4&16&64&256&100& +\end{pNiceArray}$ \medskip -\quad $\begin{pNiceArrayC}{CCCC:C} +\enskip $\begin{pNiceArray}{CCCC:C}[last-col] 1&1&1&1&1&\\ 0&2&6&14&7&L_2\gets-2L_1+L_2 \\ 0&6&24&78&33&L_3\gets-3L_1+L_3 \\ -0&12&60&252&96&L_4\gets-4L_1+L_4 \\ -\end{pNiceArrayC}$ +0&12&60&252&96&L_4\gets-4L_1+L_4 +\end{pNiceArray}$ \medskip -\quad $\begin{pNiceArrayC}{CCCC:C} +\enskip $\begin{pNiceArray}{CCCC:C}[last-col] 1&1&1&1&1&\\ 0&1&3&7&\frac72&L_2\gets\frac12L_2\\ 0&3&12&39&\frac{33}2&L_3\gets\frac12L_3 \\ -0&1&5&21&8&L_4\gets\frac1{12}L_4 \\ -\end{pNiceArrayC}$ +0&1&5&21&8&L_4\gets\frac1{12}L_4 +\end{pNiceArray}$ \medskip -\quad $\begin{pNiceArrayC}{CCCC:C} +\enskip $\begin{pNiceArray}{CCCC:C}[last-col] 1&1&1&1&1&\\ 0&1&3&7&\frac72&\\ 0&0&3&18&6&L_3 \gets -3L_2+L_3 \\ -0&0&-2&-14&-\frac92&L_4 \gets L_2-L_4 \\ -\end{pNiceArrayC}$ +0&0&-2&-14&-\frac92&L_4 \gets L_2-L_4 +\end{pNiceArray}$ \medskip -\quad $\begin{pNiceArrayC}{CCCC:C} +\enskip $\begin{pNiceArray}{CCCC:C}[last-col] 1&1&1&1&1&\\ 0&1&3&7&\frac72&\\ 0&0&1&6&2&L_3 \gets \frac13L_3\\ -0&0&-2&-14&-\frac92&\\ -\end{pNiceArrayC}$ +0&0&-2&-14&-\frac92& +\end{pNiceArray}$ \medskip -\quad $\begin{pNiceArrayC}{CCCC:C} +\enskip $\begin{pNiceArray}{CCCC:C}[last-col] 1&1&1&1&1&\\ 0&1&3&7&\frac72&\\ 0&0&1&6&2& \\ -0&0&0&-2&-\frac12 & L_4 \gets 2L_3+L_4 \\ -\end{pNiceArrayC}$ +0&0&0&-2&-\frac12 & L_4 \gets 2L_3+L_4 +\end{pNiceArray}$ \end{NiceMatrixBlock} \end{multicols} - - \subsection{Comment surligner les cases} \label{highlight} @@ -1749,8 +1740,8 @@ moyen» ou le «nœud large»). Dans l'exemple suivant, on utilise les «nœuds des lignes, on doit fixer \verb|inner sep = -\pgflinewidth/2|. \begin{Verbatim} -$\left(\,\begin{NiceArray}{>{\strut}CCCC}% - [create-extra-nodes,left-margin,right-margin, +$\begin{pNiceArray}{>{\strut}CCCC}% + [create-extra-nodes,margin,extra-margin=2pt, code-after = {\begin{tikzpicture} [~emphase#name suffix = -large@, every node/.style = {draw, @@ -1764,12 +1755,12 @@ a_{11} & a_{12} & a_{13} & a_{14} \\ a_{21} & a_{22} & a_{23} & a_{24} \\ a_{31} & a_{32} & a_{33} & a_{34} \\ a_{41} & a_{42} & a_{43} & a_{44} -\end{NiceArray}\,\right)$ +\end{pNiceArray}$ \end{Verbatim} -\[\left(\,\begin{NiceArray}{>{\strut}CCCC}[ - create-extra-nodes,left-margin,right-margin, +\[\begin{pNiceArray}{>{\strut}CCCC}[ + create-extra-nodes,margin,extra-margin=2pt, code-after = {\begin{tikzpicture}[name suffix = -large, every node/.style = {draw, inner sep = -\pgflinewidth/2}] @@ -1782,35 +1773,19 @@ a_{11} & a_{12} & a_{13} & a_{14} \\ a_{21} & a_{22} & a_{23} & a_{24} \\ a_{31} & a_{32} & a_{33} & a_{34} \\ a_{41} & a_{42} & a_{43} & a_{44} -\end{NiceArray}\,\right)\] +\end{pNiceArray}\] \vspace{1cm} -L'extension \pkg{nicematrix} est construite au-dessus de l'environnement \verb|{array}| et, par conséquent, il est -possible d'utiliser l'extension \pkg{colortbl} dans les environnements de \pkg{nicematrix}. - -\medskip -\begin{BVerbatim}[baseline=c] -$\begin{bNiceMatrix} -0 & \Cdots & 0 \\ -~emphase#\rowcolor{red!15}@ 1 & \Cdots & 1 \\ -0 & \Cdots & 0 \\ -\end{bNiceMatrix}$ -\end{BVerbatim} -\hspace{2cm} -$\begin{bNiceMatrix} -0 & \Cdots & 0 \\ -\rowcolor{red!15} 1 & \Cdots & 1 \\ -0 & \Cdots & 0 \\ -\end{bNiceMatrix}$ -\medskip -Le résultat peut paraître décevant. C'est pourquoi nous proposons 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 uitlisant 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 \verb|blend mode| égal à \verb|multiply|. -Attention : certains lecteurs de \textsc{pdf} ne sont pas capables de rendre la transparence correctement. +L'extension \pkg{nicematrix} est construite au-dessus de l'environnement \verb|{array}| et, par conséquent, il est +possible d'utiliser l'extension \pkg{colortbl} dans les environnements de \pkg{nicematrix}. Les possibilités de +réglage de \pkg{colortbl} sont néanmoins assez limitées. C'est pourquoi nous proposons 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 +\verb|blend mode| égal à \verb|multiply|. Attention : certains lecteurs de \textsc{pdf} ne sont pas capables de +rendre la transparence correctement. \tikzset{highlight/.style={rectangle, @@ -1830,14 +1805,14 @@ Attention : certains lecteurs de \textsc{pdf} ne sont pas capables de rendre la $\begin{bNiceMatrix}[~emphase#code-after = {\tikz \node[highlight, fit = (2-1) (2-3)] {} ;}@] 0 & \Cdots & 0 \\ 1 & \Cdots & 1 \\ -0 & \Cdots & 0 \\ +0 & \Cdots & 0 \end{bNiceMatrix}$ \end{Verbatim} \[\begin{bNiceMatrix}[code-after = {\tikz \node[highlight, fit = (2-1) (2-3)] {} ;}] 0 & \Cdots & 0 \\ 1 & \Cdots & 1 \\ -0 & \Cdots & 0 \\ +0 & \Cdots & 0 \end{bNiceMatrix}\] @@ -1869,18 +1844,18 @@ On considère maintenant la matrice suivante que l'on a appelée \verb|exemple|. \medskip \begin{Verbatim} -$\begin{pNiceArrayC}{CCC}[~emphase#name=exemple@,create-extra-nodes] -a & a + b & a + b + c & L_1\\ +$\begin{pNiceArray}{CCC}[~emphase#name=exemple@,create-extra-nodes,last-col] +a & a + b & a + b + c & L_1 \\ a & a & a + b & L_2 \\ a & a & a & L_3 -\end{pNiceArrayC}$ +\end{pNiceArray}$ \end{Verbatim} -\[\begin{pNiceArrayC}{CCC} -a & a + b & a + b + c & L_1\\ +\[\begin{pNiceArray}{CCC}[last-col] +a & a + b & a + b + c & L_1 \\ a & a & a + b & L_2 \\ a & a & a & L_3 -\end{pNiceArrayC}\] +\end{pNiceArray}\] \bigskip Si on veut surligner chaque rangée de la matrice, on peut utiliser la technique précédente trois fois. @@ -1914,7 +1889,8 @@ Si on veut surligner chaque rangée de la matrice, on peut utiliser la technique \medskip On obtient la matrice suivante. -\[\begin{pNiceArrayC}{CCC}[ +\[\begin{pNiceArray}{CCC}[ + last-col, create-extra-nodes, code-after = {\begin{tikzpicture}[every node/.style = {fill = red!15, blend mode = multiply, @@ -1923,10 +1899,10 @@ On obtient la matrice suivante. \node [fit = (2-1) (2-3)] {} ; \node [fit = (3-1) (3-3)] {} ; \end{tikzpicture}}] -a & a + b & a + b + c & L_1\\ +a & a + b & a + b + c & L_1 \\ a & a & a + b & L_2 \\ a & a & a & L_3 -\end{pNiceArrayC}\] +\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». @@ -1942,7 +1918,8 @@ Le résultat peut paraître décevant. On peut l'améliorer en utilisant les «n \medskip On obtient la matrice suivante. -\[\begin{pNiceArrayC}{CCC}[ +\[\begin{pNiceArray}{CCC}[ + last-col, create-extra-nodes, code-after = {\begin{tikzpicture}[every node/.style = {fill = red!15, blend mode = multiply, @@ -1952,10 +1929,10 @@ On obtient la matrice suivante. \node [fit = (2-1) (2-3)] {} ; \node [fit = (3-1) (3-3)] {} ; \end{tikzpicture}}] -a & a + b & a + b + c & L_1\\ +a & a + b & a + b + c & L_1 \\ a & a & a + b & L_2 \\ a & a & a & L_3 -\end{pNiceArrayC}\] +\end{pNiceArray}\] \vspace{1cm} @@ -1998,6 +1975,114 @@ A_{41} & A_{42} & A_{43} & A_{44} \end{NiceArray}\,\right)\] +\subsection{Utilisation directe des nœuds Tikz} + +Dans l'exemple suivant, on souhaite illustrer le produit mathématique de deux matrices. + +\medskip +L'utilisation de \verb|{NiceMatrixBlock}| avec l'option \verb|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} + +\begin{Verbatim} +\NiceMatrixOptions{nullify-dots} +\end{Verbatim} + +Les trois matrices vont être disposées les unes par rapport aux autres grâce à un tableau de LaTeX. +\begin{Verbatim} +$\begin{array}{cc} +& +\end{Verbatim} + +La matrice $B$ a une ``première rangée'' (pour $C_j$) d'où l'option \verb|first-row|. +\begin{Verbatim} +\begin{bNiceArray}{C>{\strut}CCCC}[name=B,first-row] + & & C_j \\ +b_{11} & \Cdots & b_{1j} & \Cdots & b_{1n} \\ +\Vdots & & \Vdots & & \Vdots \\ + & & b_{kj} \\ + & & \Vdots \\ + b_{n1} & \Cdots & b_{nj} & \Cdots & b_{nn} +\end{bNiceArray} \\ \\ +\end{Verbatim} + +La matrice $A$ a une ``première colonne'' (pour $L_i$) d'où l'option \verb|first-col|. +\begin{Verbatim} +\begin{bNiceArray}{CC>{\strut}CCC}[name=A,first-col] + & a_{11} & \Cdots & & & a_{nn} \\ + & \Vdots & & & & \Vdots \\ +L_i & a_{i1} & \Cdots & a_{ik} & \Cdots & a_{in} \\ + & \Vdots & & & & \Vdots \\ + & a_{n1} & \Cdots & & & a_{nn} \\ +\end{bNiceArray} +& +\end{Verbatim} + +Dans la matrice produit, on remarquera que les lignes en pointillés sont «semi-ouvertes». +\begin{Verbatim} +\begin{bNiceArray}{CC>{\strut}CCC} + & & & & \\ + & & \Vdots \\ +\Cdots & & c_{ij} \\ +\\ +\\ +\end{bNiceArray} +\end{array}$ + +\end{NiceMatrixBlock} +\end{Verbatim} + +\begin{Verbatim} +\begin{tikzpicture}[remember picture, overlay] + \node [highlight, fit = (A-3-1) (A-3-5) ] {} ; + \node [highlight, fit = (B-1-3) (B-5-3) ] {} ; + \draw [color = gray] (A-3-3) to [bend left] (B-3-3) ; +\end{tikzpicture} +\end{Verbatim} + + +\begin{NiceMatrixBlock}[auto-columns-width] +\NiceMatrixOptions{nullify-dots} +$\begin{array}{cc} +& +\begin{bNiceArray}{C>{\strut}CCCC}[name=B,first-row] + & & C_j \\ +b_{11} & \Cdots & b_{1j} & \Cdots & b_{1n} \\ +\Vdots & & \Vdots & & \Vdots \\ + & & b_{kj} \\ + & & \Vdots \\ + b_{n1} & \Cdots & b_{nj} & \Cdots & b_{nn} +\end{bNiceArray} \\ \\ +\begin{bNiceArray}{CC>{\strut}CCC}[name=A,first-col] + & a_{11} & \Cdots & & & a_{nn} \\ + & \Vdots & & & & \Vdots \\ +L_i & a_{i1} & \Cdots & a_{ik} & \Cdots & a_{in} \\ + & \Vdots & & & & \Vdots \\ + & a_{n1} & \Cdots & & & a_{nn} \\ +\end{bNiceArray} +& +\begin{bNiceArray}{CC>{\strut}CCC} + & & & & \\ + & & \Vdots \\ +\Cdots & & c_{ij} \\ +\\ +\\ +\end{bNiceArray} +\end{array}$ + +\end{NiceMatrixBlock} + +\begin{tikzpicture}[remember picture, overlay] + \node [highlight, fit = (A-3-1) (A-3-5) ] {} ; + \node [highlight, fit = (B-1-3) (B-5-3) ] {} ; + \draw [color = gray] (A-3-3) to [bend left] (B-3-3) ; +\end{tikzpicture} + + + + \subsection{Matrices par blocs} \medskip @@ -2005,8 +2090,8 @@ Dans l'exemple suivant, on utilise les «nœuds larges» pour construire une mat ont été tracées avec \pkg{arydshln}). \begin{Verbatim} \NiceMatrixOptions{letter-for-dotted-lines = V} -\left(\begin{NiceArray}{CC:CC}% - [create-extra-nodes, +\begin{pNiceArray}{CC:CC}% ici, % est obligatoire + [create-extra-nodes, ~emphase#code-after = { \tikz \node [fit = (1-1-large) (2-2-large), inner sep = 0 pt]@ ~emphase# {$0_{22}$} ; }@ ] & & a_{13} & a_{14} \\ @@ -2014,14 +2099,14 @@ ont été tracées avec \pkg{arydshln}). \hdashline a_{31} & a_{32} & a_{33} & a_{34} \\ a_{41} & a_{42} & a_{34} & a_{44} -\end{NiceArray}\right) +\end{pNiceArray} \end{Verbatim} \begin{scope} \NiceMatrixOptions{letter-for-dotted-lines = V} -\[D = \left(\begin{NiceArray}{CC:CC}[ - create-extra-nodes, +\[D = \begin{pNiceArray}{CC:CC}% + [create-extra-nodes, code-after = { \tikz \node [fit = (1-1-large) (2-2-large), inner sep = 0 pt] {$0_{22}$} ; } ] & & a_{13} & a_{14} \\ @@ -2029,7 +2114,7 @@ a_{41} & a_{42} & a_{34} & a_{44} \hdashline a_{31} & a_{32} & a_{33} & a_{34} \\ a_{41} & a_{42} & a_{34} & a_{44} -\end{NiceArray}\right)\] +\end{pNiceArray}\] \end{scope} -- cgit v1.2.3