diff options
author | Karl Berry <karl@freefriends.org> | 2020-03-15 21:32:14 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2020-03-15 21:32:14 +0000 |
commit | 4a62bf962f41ebc77a4b8feac7a91dd31a20998f (patch) | |
tree | 625c6c6235bcc62c86a5a5711defd8561a275440 /Master/texmf-dist/doc/latex | |
parent | 551b21743067d6b09c090119a0a820ad47dda8ec (diff) |
nicematrix (15mar20)
git-svn-id: svn://tug.org/texlive/trunk@54330 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/doc/latex')
-rw-r--r-- | Master/texmf-dist/doc/latex/nicematrix/nicematrix-french.pdf | bin | 332466 -> 340142 bytes | |||
-rw-r--r-- | Master/texmf-dist/doc/latex/nicematrix/nicematrix-french.tex | 621 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/nicematrix/nicematrix.pdf | bin | 723168 -> 780740 bytes |
3 files changed, 370 insertions, 251 deletions
diff --git a/Master/texmf-dist/doc/latex/nicematrix/nicematrix-french.pdf b/Master/texmf-dist/doc/latex/nicematrix/nicematrix-french.pdf Binary files differindex 3b7adbbf92f..67e958be03a 100644 --- a/Master/texmf-dist/doc/latex/nicematrix/nicematrix-french.pdf +++ b/Master/texmf-dist/doc/latex/nicematrix/nicematrix-french.pdf diff --git a/Master/texmf-dist/doc/latex/nicematrix/nicematrix-french.tex b/Master/texmf-dist/doc/latex/nicematrix/nicematrix-french.tex index 5a8d655762f..3f3c6dc7d14 100644 --- a/Master/texmf-dist/doc/latex/nicematrix/nicematrix-french.tex +++ b/Master/texmf-dist/doc/latex/nicematrix/nicematrix-french.tex @@ -8,15 +8,18 @@ \geometry{left=2.8cm,right=2.8cm,top=2.5cm,bottom=2.5cm,papersize={21cm,29.7cm}} \usepackage{amsmath} -\usepackage{color} + \usepackage{array} \usepackage{colortbl} \usepackage{nicematrix} +\usepackage{tikz} +\usetikzlibrary{fit} + + \usepackage{enumitem} \usepackage{siunitx} -\usepackage{unicode-math} \usepackage{arydshln} \usepackage{verbatim} @@ -44,6 +47,8 @@ \usepackage{booktabs} +\usepackage{varwidth} + \usepackage[hyperfootnotes = false]{hyperref} \hypersetup @@ -90,9 +95,9 @@ tableau. Cette extension peut être utilisée avec |xelatex|, |lualatex| et |pdflatex| mais aussi avec le cheminement classique |latex|-|dvips|-|ps2pdf| (ou Adobe Distiller). Deux ou trois compilations successives peuvent être nécessaires. Cette extension nécessite et charge les extensions \pkg{expl3}, \pkg{l3keys2e}, \pkg{xparse}, -\pkg{array}, \pkg{amsmath} et \pkg{tikz}. Elle charge aussi la bibliothèque Tikz \pkg{fit}. L'utilisateur final n'a -qu'à charger l'extension \pkg{nicematrix} avec l'instruction habituelle : -|\usepackage{nicematrix}|. +\pkg{array}, \pkg{amsmath} et \pkg{pgfcore} ainsi que le module \pkg{shapes} de \textsc{pgf} (l'extension +\pkg{tikz} n'est \emph{pas} chargée). L'utilisateur final n'a qu'à charger l'extension \pkg{nicematrix} avec +l'instruction habituelle : |\usepackage{nicematrix}|. @@ -115,11 +120,11 @@ $\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} + & 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}$ @@ -229,26 +234,32 @@ Chacune de ces commandes doit être utilisée seule dans la case du tableau et e 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.\par\nobreak +|\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.) +}\par\nobreak \bigskip \begin{BVerbatim}[baseline=c,boxwidth=10cm] \begin{bNiceMatrix} -a_1 & \Cdots & & & a_1 \\ -\Vdots & a_2 & \Cdots & & a_2 \\ - & \Vdots & \Ddots \\ +a_1 & \Cdots & & & a_1 \\ +\Vdots & a_2 & \Cdots & & a_2 \\ + & \Vdots & \Ddots[color=red] \\ \\ a_1 & a_2 & & & a_n \end{bNiceMatrix} \end{BVerbatim} $\begin{bNiceMatrix} -a_1 & \Cdots & & & a_1 \\ -\Vdots & a_2 & \Cdots & & a_2 \\ - & \Vdots & \Ddots \\ +a_1 & \Cdots & & & a_1 \\ +\Vdots & a_2 & \Cdots & & a_2 \\ + & \Vdots & \Ddots[color=red] \\ \\ a_1 & a_2 & & & a_n \end{bNiceMatrix}$ + + + \interitem Pour représenter la matrice nulle, on peut choisir d'utiliser le codage suivant :\par\nobreak @@ -343,102 +354,70 @@ Considérons la matrice suivante qui a été composée classiquement avec l'envi \pkg{amsmath}.\par\nobreak \medskip -\begin{BVerbatim}[baseline=c,boxwidth=8cm] +\begin{BVerbatim}[baseline=c,boxwidth=10cm] $A = \begin{pmatrix} -a_0 & b \\ -a_1 & \\ -a_2 & \\ -a_3 & \\ -a_4 & \\ -a_5 & b +h & i & j & k & l & m \\ +x & & & & & x \\ \end{pmatrix}$ \end{BVerbatim} $A = \begin{pmatrix} -a_0 & b \\ -a_1 & \\ -a_2 & \\ -a_3 & \\ -a_4 & \\ -a_5 & b +h & i & j & k & l & m \\ +x & & & & & x \\ \end{pmatrix}$ \bigskip -Si nous ajoutons des instructions |\vdots| dans la seconde colonne, la géométrie de la matrice est +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=8cm] +\begin{BVerbatim}[baseline=c,boxwidth=10cm] $B = \begin{pmatrix} -a_0 & b \\ -a_1 & \vdots \\ -a_2 & \vdots \\ -a_3 & \vdots \\ -a_4 & \vdots \\ -a_5 & b +h & i & j & k & l & m \\ +x & \ldots & \ldots & \ldots & \ldots & x \\ \end{pmatrix}$ \end{BVerbatim} $B = \begin{pmatrix} -a_0 & b \\ -a_1 & \vdots \\ -a_2 & \vdots \\ -a_3 & \vdots \\ -a_4 & \vdots \\ -a_5 & b +h & i & j & k & l & m \\ +x & \ldots & \ldots & \ldots & \ldots & x \\ \end{pmatrix}$ \bigskip -Par défaut, avec \pkg{nicematrix}, si nous remplaçons |{pmatrix}| par |{pNiceMatrix}| et |\vdots| par |\Vdots|, la +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=8cm] +\begin{BVerbatim}[baseline=c,boxwidth=10cm] $C = \begin{pNiceMatrix} -a_0 & b \\ -a_1 & \Vdots \\ -a_2 & \Vdots \\ -a_3 & \Vdots \\ -a_4 & \Vdots \\ -a_5 & b +h & i & j & k & l & m \\ +x & \Ldots & \Ldots & \Ldots & \Ldots & x \\ \end{pNiceMatrix}$ \end{BVerbatim} $C = \begin{pNiceMatrix} -a_0 & b \\ -a_1 & \Vdots \\ -a_2 & \Vdots \\ -a_3 & \Vdots \\ -a_4 & \Vdots \\ -a_5 & b +h & i & j & k & l & m \\ +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 colonne. C'est possible en utilisant l'option |nullify-dots| (et une -seule instruction |\Vdots| suffit).\par\nobreak +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 -\begin{BVerbatim}[baseline=c,boxwidth=8cm] +\begin{BVerbatim}[baseline=c,boxwidth=10cm] $D = \begin{pNiceMatrix}[~emphase#nullify-dots@] -a_0 & b \\ -a_1 & \Vdots \\ -a_2 & \\ -a_3 & \\ -a_4 & \\ -a_5 & b +h & i & j & k & l & m \\ +x & \Ldots & & & & x \\ \end{pNiceMatrix}$ \end{BVerbatim} $D = \begin{pNiceMatrix}[nullify-dots] -a_0 & b \\ -a_1 & \Vdots \\ -a_2 & \\ -a_3 & \\ -a_4 & \\ -a_5 & b +h & i & j & k & l & m \\ +x & \Ldots & & & & x \\ \end{pNiceMatrix}$ \medskip -L'option |nullify-dots| «smashe» les instructions |\Ldots| (et ses variantes) verticalement mais aussi -horizontalement. +L'option |nullify-dots| «smashe» les instructions |\Ldots| (et ses variantes) horizontalement mais aussi +verticalement. \medskip {\bfseries Il doit n'y avoir aucun espace devant le crochet ouvrant (|[|) des options de l'environnement.} @@ -548,21 +527,109 @@ $\begin{pmatrix} \end{scope} -\subsection{Réglage fin des lignes en pointillés} +\subsection{Personnalisation des lignes en pointillés} + +Les lignes pointillées tracées par |\Ldots|, |\Cdots|, |\Vdots|, |\Ddots|, |\Idots| 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| ; +\item |shorten| ; +\item |line-style|. +\end{itemize} + +Ces options peuvent aussi être fixées avec |\NiceMatrixOption| 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| ; +\item |xdots/shorten| ; +\item |xdots/line-style|. +\end{itemize} +% +Pour la clarté, dans la suite, on utilisera ces noms-là. + +\bigskip +\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. +p.~\pageref{exterior}. + + +\bigskip +\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). + + +\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.} -L'écart entre un nœud et l'extrémité d'une ligne en pointillés est fixée par |dotted-lines-margin|. La valeur -initiale de cette clé est de $0.3$~em (il est conseillé d'utiliser une unité de mesure dépendante de la fonte -courante). Pour un exemple, voir p.~\pageref{permutation}. +\begin{BVerbatim}[baseline=c,boxwidth=9cm] +\tikz \draw [dotted] (0,0) -- (5,0) ; +\end{BVerbatim} +\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|. +\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 <|»). -\section{Les nœuds Tikz créés par l'extension nicematrix} +\medskip +Voici par exemple une matrice tridiagonale avec le style |loosely dotted| :\par\nobreak + +\medskip +\begin{BVerbatim}[baseline=c] +$\begin{pNiceMatrix}[nullify-dots,~emphase#xdots/line-style=loosely dotted@] +a & b & 0 & & \Cdots & 0 \\ +b & a & b & \Ddots & & \Vdots \\ +0 & b & a & \Ddots & & \\ + & \Ddots & \Ddots & \Ddots & & 0 \\ +\Vdots & & & & & b \\ +0 & \Cdots & & 0 & b & a +\end{pNiceMatrix}$ +\end{BVerbatim} + + +\[\begin{pNiceMatrix}[nullify-dots,xdots/line-style=loosely dotted] +a & b & 0 & & \Cdots & 0 \\ +b & a & b & \Ddots & & \Vdots \\ +0 & b & a & \Ddots & & \\ + & \Ddots & \Ddots & \Ddots & & 0 \\ +\Vdots & & & & & b \\ +0 & \Cdots & & 0 & b & a +\end{pNiceMatrix}\] + + +\section{Les nœuds PGF-Tikz créés par l'extension nicematrix} \label{name} -L'extension \pkg{nicematrix} crée un nœud Tikz pour chaque case du tableau considéré. Ces nœuds sont utilisés pour -tracer les lignes en pointillés entre les cases du tableau. Toutefois, l'utilisateur peut aussi utiliser -directement ces nœuds. On commence par donner un nom au tableau (avec l'option |name|). Cela étant fait, les nœuds +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 pour tracer les lignes en pointillés entre les cases du tableau. Toutefois, l'utilisateur peut aussi +utiliser directement ces nœuds (s'il a chargé Tikz\footnote{On rappelle que depuis la version 3.13, + \pkg{nicematrix} ne charge plus Tikz par défaut, mais seulement \textsc{pgf} (Tikz est une surcouche de + \textsc{pgf}).}). On commence par donner un nom au tableau (avec l'option |name|). Cela étant fait, 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. @@ -589,14 +656,25 @@ Ne pas oublier les options |remember picture| et |overlay|. \bigskip Dans l'exemple suivant, nous avons surligné toutes les cases de la matrice. -\begin{scope} -\tikzset{every node/.style = {fill = red!15, inner sep = 0pt}} -\[\begin{pNiceMatrix} +\[\begin{pNiceMatrix}[ + code-after = {\begin{tikzpicture} + [every node/.style = {blend mode = multiply, + inner sep = 0 pt , + fill = red!15}] + \node [fit = (1-1)] {} ; + \node [fit = (1-3)] {} ; + \node [fit = (2-2)] {} ; + \node [fit = (3-1)] {} ; + \node [fit = (3-3)] {} ; + \node [fit = (1-2)] {} ; + \node [fit = (2-1)] {} ; + \node [fit = (2-3)] {} ; + \node [fit = (3-2)] {} ; + \end{tikzpicture}}] a & a + b & a + b + c \\ a & a & a + b \\ a & a & a \end{pNiceMatrix}\] -\end{scope} \bigskip @@ -615,7 +693,7 @@ comme définition de ces nœuds. code-after = {\begin{tikzpicture} [every node/.style = {fill = red!15, blend mode = multiply, - inner sep = -\pgflinewidth/2}, + inner sep = 0 pt}, name suffix = -medium] \node [fit = (1-1)] {} ; \node [fit = (1-2)] {} ; @@ -643,7 +721,7 @@ définition de ces nœuds.\footnote{Il n'y a pas de «nœuds larges» créés da create-large-nodes, code-after = {\begin{tikzpicture} [every node/.style = {blend mode = multiply, - inner sep = -\pgflinewidth/2}, + inner sep = 0 pt}, name suffix = -large] \node [fit = (1-1),fill = red!15] {} ; \node [fit = (1-3),fill = red!15] {} ; @@ -673,7 +751,7 @@ dernière colonne. Dans l'exemple suivant, nous avons utilisé les options |left create-large-nodes,left-margin,right-margin, code-after = {\begin{tikzpicture} [every node/.style = {blend mode = multiply, - inner sep = -\pgflinewidth/2}, + inner sep = 0 pt}, name suffix = -large] \node [fit = (1-1),fill = red!15] {} ; \node [fit = (1-3),fill = red!15] {} ; @@ -698,7 +776,7 @@ avons utilisé |extra-left-margin| et |extra-right-margin| avec la valeur $3$~pt 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 = -\pgflinewidth/2}, + inner sep = 0 pt}, name suffix = -large] \node [fit = (1-1),fill = red!15] {} ; \node [fit = (1-3),fill = red!15] {} ; @@ -722,7 +800,7 @@ rangée du tableau. 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 = -\pgflinewidth/2}, + inner sep = 0 pt}, name suffix = -large] \node [fit = (1-1),fill = red!15] {} ; \node [fit = (1-3),fill = red!15] {} ; @@ -744,30 +822,34 @@ On explique plus loin comment surligner les nœuds créés par Tikz (cf. p. \pag \section{Le 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 -(et donc, en particulier, après la construction de tous les nœuds). +\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, +et donc, en particulier, après la construction de tous les nœuds. -Dans le |code-after|, les nœuds Tikz doivent être désignés sous la forme $i$-$j$ (sans le préfixe correspondant au -nom de l'environnement). +\textbf{Si on a chargé Tikz}\footnote{On rappelle que depuis la version 3.13, \pkg{nicematrix} ne charge plus Tikz + par défaut, mais seulement \textsc{pgf} (Tikz est une surcouche de \textsc{pgf}).}, on peut accéder à ces nœuds +avec des instructions Tikz classiques. Les nœuds devront être désignés sous la forme $i$-$j$ (sans le préfixe +correspondant au nom de l'environnement). De plus, une commande spéciale, nommée |\line| est disponible pour tracer directement des lignes en pointillés entre les nœuds). +\label{line-in-code-after} \medskip -\begin{BVerbatim}[baseline=c,boxwidth=12cm] -$\begin{pNiceMatrix}[~emphase#code-after = \line{1-1}{3-3}@] +\begin{BVerbatim}[baseline=c,boxwidth=13cm] +$\begin{pNiceMatrix}[~emphase#code-after = {\line{1-1}{3-3}[color=blue]}@] 0 & 0 & 0 \\ 0 & & 0 \\ 0 & 0 & 0 \end{pNiceMatrix}$ \end{BVerbatim} -$\begin{pNiceMatrix}[code-after = \line{1-1}{3-3}] +$\begin{pNiceMatrix}[code-after = {\line{1-1}{3-3}[color=blue]}] 0 & 0 & 0 \\ 0 & & 0 \\ 0 & 0 & 0 \end{pNiceMatrix}$ - \section{L'environnement \{NiceArray\}} \label{NiceArray} @@ -804,7 +886,7 @@ $A = \end{NiceArray}$ \smallskip -L'option |hvlines| est présentée plus loin (cf. p. \pageref{hvlines}). +L'option |hvlines| utilisée dans cet exemple est présentée plus loin (cf. p. \pageref{hvlines}). \medskip L'option |baseline| peut aussi prendre les trois valeurs spéciales |t|, |c| et |b|. Ces trois lettres peuvent aussi @@ -818,7 +900,7 @@ On remarquera que la présence d'un |\hline| initial n'empêche pas l'alignement rangée (avec |{array}| de {array}, il faut utiliser |\firsthline|\footnote{On peut aussi utiliser |\firsthline| avec |{NiceArray}|.}). - +\smallskip \begin{BVerbatim}[baseline=c,boxwidth=9cm] \begin{enumerate} \item un item @@ -962,28 +1044,28 @@ Les environnements de \pkg{nicematrix} permettent de composer des rangées et de |first-row|, |last-row|, |first-col| et |last-col|. \label{exterior} -Si elle est présente, la première rangée est numérotée par $0$ (et non $1$). Il en est de même pour la première -colonne. Dans le cas général, on doit spécifier le numéro de la dernière rangée et de la dernière colonne comme -valeurs des options |last-row| et |last-col| (si elles sont présentes). +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 rangée». Dans le cas général, on doit spécifier le numéro de la dernière rangée et de la dernière +colonne comme valeurs des options |last-row| et |last-col| (si elles sont présentes). \begin{Verbatim} -$\begin{pNiceMatrix}[~emphase#first-row,last-row=5,first-col,last-col=5@] - & 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 & +$\begin{pNiceMatrix}[~emphase#first-row,last-row=5,first-col,last-col=5@,nullify-dots] + & C_1 & \Cdots & & C_4 & \\ +L_1 & a_{11} & a_{12} & a_{13} & a_{14} & L_1 \\ +\Vdots & a_{21} & a_{22} & a_{23} & a_{24} & \Vdots \\ + & a_{31} & a_{32} & a_{33} & a_{34} & \\ +L_4 & a_{41} & a_{42} & a_{43} & a_{44} & L_4 \\ + & C_1 & \Cdots & & C_4 & \end{pNiceMatrix}$ \end{Verbatim} % -\[\begin{pNiceMatrix}[first-row,last-row=5,first-col,last-col=5] - & 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 & +\[\begin{pNiceMatrix}[first-row,last-row=5,first-col,last-col=5,nullify-dots] + & C_1 & \Cdots & & C_4 & \\ +L_1 & a_{11} & a_{12} & a_{13} & a_{14} & L_1 \\ +\Vdots & a_{21} & a_{22} & a_{23} & a_{24} & \Vdots \\ + & a_{31} & a_{32} & a_{33} & a_{34} & \\ +L_4 & a_{41} & a_{42} & a_{43} & a_{44} & L_4 \\ + & C_1 & \Cdots & & C_4 & \end{pNiceMatrix}\] \bigskip @@ -1017,14 +1099,14 @@ insérées au début de chaque case de la rangée ou de la colonne considérée. ~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,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 \\ +$\begin{pNiceArray}{CC|CC}[first-row,last-row,first-col,last-col,nullify-dots] + & C_1 & \Cdots & & C_4 & \\ +L_1 & a_{11} & a_{12} & a_{13} & a_{14} & L_1 \\ +\Vdots & a_{21} & a_{22} & a_{23} & a_{24} & \Vdots \\ \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 & + & a_{31} & a_{32} & a_{33} & a_{34} & \\ +L_4 & a_{41} & a_{42} & a_{43} & a_{44} & L_4 \\ + & C_1 & \Cdots & & C_4 & \end{pNiceArray}$ \end{Verbatim} % @@ -1034,14 +1116,14 @@ L_4 & a_{41} & a_{42} & a_{43} & a_{44} & L_4 \\ code-for-last-row = \color{green}, code-for-last-col = \color{magenta}} \begin{displaymath} -\begin{pNiceArray}{CC|CC}[first-row,last-row,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 \\ +\begin{pNiceArray}{CC|CC}[first-row,last-row,first-col,last-col,nullify-dots] + & C_1 & \multicolumn1C{\Cdots} & & C_4 & \\ +L_1 & a_{11} & a_{12} & a_{13} & a_{14} & L_1 \\ +\Vdots & a_{21} & a_{22} & a_{23} & a_{24} & \Vdots \\ \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 & + & a_{31} & a_{32} & a_{33} & a_{34} & \\ +L_4 & a_{41} & a_{42} & a_{43} & a_{44} & L_4 \\ + & C_1 & \multicolumn1C{\Cdots} & & C_4 & \end{pNiceArray} \end{displaymath} \end{scope} @@ -1060,6 +1142,8 @@ ailleurs, si on veut vraiment un filet qui s'étende dans la première et la der Si on veut définir de nouveaux spécificateurs de colonnes pour des filets (par exemple plus épais), on aura peut-être 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 @@ -1114,7 +1198,7 @@ $\begin{pNiceArray}{CCCC:C} \bigskip -Ces lignes en pointillés ne s'étendent pas dans les rangées et colonnes extérieures. +Ces lignes en pointillés ne s'étendent pas dans les rangées et colonnes extérieures.\par\nobreak \medskip @@ -1153,27 +1237,35 @@ 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} -\begin{pNiceArray}{~emphase#C|C:CVC@} +\NiceMatrixOptions{letter-for-dotted-lines = I} +\arrayrulecolor{blue} +\begin{pNiceArray}{~emphase#C|C:CIC@} 1 & 2 & 3 & 4 \\ 5 & 6 & 7 & 8 \\ 9 & 10 & 11 & 12 \end{pNiceArray} +\arrayrulecolor{black} \end{BVerbatim} \begin{scope} -\NiceMatrixOptions{letter-for-dotted-lines = V} -$\begin{pNiceArray}{C|C:CVC} +\arrayrulecolor{blue} +\NiceMatrixOptions{letter-for-dotted-lines = I} +$\begin{pNiceArray}{C|C:CIC} 1 & 2 & 3 & 4 \\ 5 & 6 & 7 & 8 \\ 9 & 10 & 11 & 12 \end{pNiceArray}$ +\arrayrulecolor{black} \end{scope} +\smallskip +On a utilisé |\arrayrulecolor| de \pkg{colortbl} pour colorier les trois traits. + + \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. +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. \section{La largeur des colonnes} \label{width} @@ -1199,8 +1291,8 @@ $\begin{pNiceArray}{Wc{1cm}CC} \bigskip -Dans les environnements de \pkg{nicematrix}, il est aussi possible de fixer la largeur 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] @@ -1241,8 +1333,8 @@ $\begin{pNiceMatrix}[columns-width = auto] \end{pNiceMatrix}$ \bigskip -Sans surprise, il est possible de fixer la largeur 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] @@ -1385,6 +1477,28 @@ Pour des raisons techniques, il n'est pas possible d'écrire |\Block{|$i$|-|$j$| \section{Fonctionnalités avancées} +\subsection{Option d'alignement dans NiceMatrix} + +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.\footnote{Cela reprend une partie des fonctionnalités proposées par les environnements |{pmatrix*}|, + |{bmatrix*}|, etc. de \pkg{mathtools}.} + +\medskip +\begin{BVerbatim}[baseline=c,boxwidth=10cm] +$\begin{bNiceMatrix}[R] +\cos x & - \sin x \\ +\sin x & \cos x +\end{bNiceMatrix}$ +\end{BVerbatim} +$\begin{bNiceMatrix}[R] +\cos x & - \sin x \\ +\sin x & \cos x +\end{bNiceMatrix}$ + + + + \subsection{La commande \textbackslash rotate} Utilisée au début d'une case, la commande |\rotate| (fournie par \pkg{nicematrix}) compose le contenu après une @@ -1398,32 +1512,58 @@ Dans l'exemple suivant, on l'utilise dans le |code-for-first-row|. \NiceMatrixOptions% {code-for-first-row = \scriptstyle ~emphase#\rotate@ \text{image de }, code-for-last-col = \scriptstyle } -$\begin{pNiceMatrix}[first-row,last-col=4] +$A = \begin{pNiceMatrix}[first-row,last-col=4] e_1 & e_2 & e_3 \\ 1 & 2 & 3 & e_1 \\ 4 & 5 & 6 & e_2 \\ 7 & 8 & 9 & e_3 \\ \end{pNiceMatrix}$ \end{BVerbatim} -% -\begin{scope} +\begin{varwidth}{10cm} \NiceMatrixOptions% {code-for-first-row = \scriptstyle\rotate \text{image de }, code-for-last-col = \scriptstyle } -\begin{minipage}{3cm} -$\begin{pNiceMatrix}[first-row,last-col=4] +$ A = \begin{pNiceMatrix}[first-row,last-col=4] e_1 & e_2 & e_3 \\ 1 & 2 & 3 & e_1 \\ 4 & 5 & 6 & e_2 \\ 7 & 8 & 9 & e_3 \\ \end{pNiceMatrix}$ -\end{minipage} -\end{scope} +\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. + +\bigskip +\begin{BVerbatim}[baseline=c,boxwidth=12cm] +\NiceMatrixOptions% + {code-for-last-row = \scriptstyle ~emphase#\rotate@ , + code-for-last-col = \scriptstyle } +$A = \begin{pNiceMatrix}[last-row,last-col=4] +1 & 2 & 3 & e_1 \\ +4 & 5 & 6 & e_2 \\ +7 & 8 & 9 & e_3 \\ +\text{image de } e_1 & e_2 & e_3 \\ +\end{pNiceMatrix}$ +\end{BVerbatim} +\begin{varwidth}{10cm} +\NiceMatrixOptions% + {code-for-last-row = \scriptstyle\rotate , + code-for-last-col = \scriptstyle }% +$A = \begin{pNiceMatrix}[last-row,last-col=4] +1 & 2 & 3 & e_1 \\ +4 & 5 & 6 & e_2 \\ +7 & 8 & 9 & e_3 \\ +\text{image de } e_1 & e_2 & e_3 \\ +\end{pNiceMatrix}$ +\end{varwidth} \subsection{L'option small} +\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}). @@ -1471,6 +1611,9 @@ numéro de la rangée courante et le numéro de la colonne courante\footnote{On 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-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] $\begin{pNiceMatrix}% @@ -1581,7 +1724,7 @@ a & b & c & d \\ \end{NiceArray}$ \bigskip -Dans le cas d'un environnement avec délimiteurs (par exemple |{pNiceArray}| ou |pNiceMatrix|), l'option |vlines| ne +Dans le cas d'un environnement avec délimiteurs (par exemple |{pNiceArray}| ou |{pNiceMatrix}|), l'option |vlines| ne trace pas de filets verticaux au niveau des deux délimiteurs (bien entendu). \medskip @@ -1612,29 +1755,24 @@ L'option |light-syntax|\footnote{Cette option est inspirée de l'extension \pkg{spalign} de Joseph Rabinoff.} 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. On remarquera toutefois que, comme souvent dans le monde TeX, les espaces après les -séquences de contrôles ne sont pas comptées et que les éléments entre accolades sont considérés comme un tout. +séquences de contrôle ne sont pas comptées et que les éléments entre accolades sont considérés comme un tout. -\bigskip -L'exemple suivant a été composé avec XeLaTeX en utilisant \pkg{unicode-math}, ce qui permet d'utiliser directement -les lettres grecques en Unicode. \medskip \begin{scope} -\def\alpha{$α$} -\def\beta{$β$} \begin{BVerbatim}[baseline=c,boxwidth=10cm] $\begin{bNiceMatrix}[~emphase#light-syntax@,first-row,first-col] -{} ~alpha ~beta ; -~alpha 2\cos ~alpha {\cos ~alpha + \cos ~beta} ; -~beta \cos ~alpha+\cos ~beta { 2 \cos ~beta } +{} a b ; +a 2\cos a {\cos a + \cos b} ; +b \cos a+\cos b { 2 \cos b } \end{bNiceMatrix}$ \end{BVerbatim} \end{scope} % $\begin{bNiceMatrix}[light-syntax,first-row,first-col] -{} α β ; -α 2\cos α {\cos α + \cos β} ; -β \cos α+\cos β { 2 \cos β } +{} a b ; +a 2\cos a {\cos a + \cos b} ; +b \cos a+\cos b { 2 \cos b } \end{bNiceMatrix}$ \medskip @@ -1725,10 +1863,10 @@ arrive à une autre ligne pointillée déjà tracée par l'une de ces commandes. lignes sont tracées a son importance pour le résultat final. Voici cet ordre (c'est à dessein qu'il a été choisi ainsi) : |\Hdotsfor|, |\Vdots|, |\Ddots|, |\Iddots|, |\Cdots| et |\Ldots|. -De ce fait, on peut tracer la matrice suivante : - - \medskip +De ce fait, on peut tracer la matrice suivante :\par\nobreak + +\smallskip \begin{BVerbatim}[baseline = c, boxwidth = 10.5cm] $\begin{pNiceMatrix}[nullify-dots] 1 & 2 & 3 & \Cdots & n \\ @@ -1749,11 +1887,12 @@ $\begin{pNiceMatrix}[nullify-dots] \end{pNiceMatrix}$ -\subsection{Le nom des nœuds Tikz créés par nicematrix} -Les nœuds Tikz créés par \pkg{nicematrix} peuvent être utilisés hors des environnements de \pkg{nicematrix} après -avoir nommé l'environnement concerné avec l'option |name| (cf. p.~\pageref{name}). Il s'agit là de la méthode -conseillée mais on décrit néanmoins maintenant le nom Tikz interne de ces nœuds. +\subsection{Le nom des nœuds PGF créés par nicematrix} + +Les nœuds PGF-Tikz créés par \pkg{nicematrix} peuvent être utilisés hors des environnements de \pkg{nicematrix} +après avoir nommé l'environnement concerné avec l'option |name| (cf. p.~\pageref{name}). Il s'agit là de la méthode +conseillée mais on décrit néanmoins maintenant le nom Tikz interne de ces nœuds. Les environnements créés par \pkg{nicematrix} sont numérotés par un compteur global interne. La commande |\NiceMatrixLastEnv| donne le numéro du dernier de ces environnements (pour LaTeX, il s'agit d'une commande — @@ -1829,6 +1968,7 @@ a+b & \Cdots & a+b & 1 \end{pNiceMatrix}$ + \end{scope} \subsection{Les cases «vides»} @@ -1855,12 +1995,7 @@ c \\ la dernière case (deuxième rangée et deuxième colonne) est vide. \medskip -\item Chaque case avec un rendu par TeX de largeur inférieure à 0.5~pt est vide. - -\medskip -\item Une case qui contient une commande |\Ldots|, |\Cdots|, |\Vdots|, |\Ddots| ou |\Iddots| est vide. On rappelle -que ces commandes doivent être employées seules dans une case. - +\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 @@ -1878,26 +2013,21 @@ particulier, il y a un espace égal à |\arraycolsep| avant et après le tableau 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).} Il est possible de supprimer les espaces pour un environnement |{array}| donné par une construction du - type |\begin{array}{@{}ccccc@{}}...\end{array}|.}. L'environnement |{matrix}| et ses variantes (|{pmatrix}|, -|{vmatrix}|, etc.) de \pkg{amsmath} préfèrent supprimer ces espaces avec des instructions explicites -|\hskip -\arraycolsep|. 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). + 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). \subsection{L'option de classe draft} -L'extension \pkg{nicematrix} est relativement lente pour tracer les lignes en pointillés (créées par |\Cdots|, -|\Ldots|, |\Ddots|, etc. mais aussi par le spécificateur «|:|»).\footnote{La principale raison est que nous voulons - des lignes en pointillés avec des points ronds et non carrés. Pour atteindre ce but, il a fallu construire notre - propre système de lignes en pointillés.} - - -C'est pourquoi, avec l'option de classe |draft|, les lignes en pointillés ne sont pas tracées, pour accélérer la +Quand l'option de classe |draft| est utilisée, les lignes en pointillés ne sont pas tracées, pour accélérer la compilation. @@ -1994,41 +2124,15 @@ seront certainement supprimés dans une prochaine version de \pkg{nicematrix}. \subsection{Lignes en pointillés} -\medskip -Une matrice tridiagonale :\par\nobreak -\bigskip -\begin{BVerbatim}[baseline=c] -$\begin{pNiceMatrix}[nullify-dots] -a & b & 0 & & \Cdots & 0 \\ -b & a & b & \Ddots & & \Vdots \\ -0 & b & a & \Ddots & & \\ - & \Ddots & \Ddots & \Ddots & & 0 \\ -\Vdots & & & & & b \\ -0 & \Cdots & & 0 & b & a -\end{pNiceMatrix}$ -\end{BVerbatim} -\hspace{1.5cm} -$\begin{pNiceMatrix}[nullify-dots] -a & b & 0 & & \Cdots & 0 \\ -b & a & b & \Ddots & & \Vdots \\ -0 & b & a & \Ddots & & \\ - & \Ddots & \Ddots & \Ddots & & 0 \\ -\Vdots & & & & & b \\ -0 & \Cdots & & 0 & b & a -\end{pNiceMatrix}$ +Une matrice de permutation.\par\nobreak -\vspace{2cm} +À titre d'exemple, on a augmenté la valeur du paramètre |xdots/shorten|.\par\nobreak -Une matrice de permutation. - -À titre d'exemple, on a augmenté la valeur du paramètre |dotted-lines-margin|. - -\label{permutation} \bigskip \begin{BVerbatim}[baseline=c] -$\begin{pNiceMatrix}[~emphase#dotted-lines-margin=6em@] +$\begin{pNiceMatrix}[~emphase#xdots/shorten=6em@] 0 & 1 & 0 & & \Cdots & 0 \\ \Vdots & & & \Ddots & & \Vdots \\ & & & \Ddots & & \\ @@ -2038,7 +2142,7 @@ $\begin{pNiceMatrix}[~emphase#dotted-lines-margin=6em@] \end{pNiceMatrix}$ \end{BVerbatim} \hspace{2.5cm} -$\begin{pNiceMatrix}[dotted-lines-margin=0.6em] +$\begin{pNiceMatrix}[xdots/shorten=0.6em] 0 & 1 & 0 & & \Cdots & 0 \\ \Vdots & & & \Ddots & & \Vdots \\ & & & \Ddots & & \\ @@ -2049,10 +2153,10 @@ $\begin{pNiceMatrix}[dotted-lines-margin=0.6em] \vspace{2cm} -Un exemple avec |\Iddots|: \par\nobreak +Un exemple avec |\Iddots|. On a augmenté encore davantage la valeur de |xdots/shorten|.\par\nobreak \bigskip \begin{BVerbatim}[baseline=c] -$\begin{pNiceMatrix} +$\begin{pNiceMatrix}[~emphase#xdots/shorten = 0.9em@] 1 & \Cdots & & 1 \\ \Vdots & & & 0 \\ & ~emphase#\Iddots@ & ~emphase#\Iddots@ & \Vdots \\ @@ -2060,7 +2164,7 @@ $\begin{pNiceMatrix} \end{pNiceMatrix}$ \end{BVerbatim} \hspace{4cm} -$\begin{pNiceMatrix} +$\begin{pNiceMatrix}[xdots/shorten = 0.9em] 1 & \Cdots & & 1 \\ \Vdots & & & 0 \\ & \Iddots & \Iddots & \Vdots \\ @@ -2262,10 +2366,24 @@ $\begin{pNiceArray}{CCCC:C}[last-col] \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 : + +\begin{verbatim} +\usepackage{tikz} +\usetikzlibrary{fit} +\end{verbatim} + + + +\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 avoir la continuité des lignes, on -doit fixer |inner sep = -\pgflinewidth/2|. +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}). \begin{Verbatim} $\begin{pNiceArray}{>{\strut}CCCC}% @@ -2273,7 +2391,7 @@ $\begin{pNiceArray}{>{\strut}CCCC}% code-after = {\begin{tikzpicture} [~emphase#name suffix = -large@, every node/.style = {draw, - ~emphase#inner sep = -\pgflinewidth/2@}] + ~emphase#inner sep = 0pt@}] \node [fit = (1-1)] {} ; \node [fit = (2-2)] {} ; \node [fit = (3-3)] {} ; @@ -2291,7 +2409,7 @@ a_{41} & a_{42} & a_{43} & a_{44} create-large-nodes,margin,extra-margin=2pt, code-after = {\begin{tikzpicture}[name suffix = -large, every node/.style = {draw, - inner sep = -\pgflinewidth/2}] + inner sep = 0pt}] \node [fit = (1-1)] {} ; \node [fit = (2-2)] {} ; \node [fit = (3-3)] {} ; @@ -2304,9 +2422,10 @@ a_{41} & a_{42} & a_{43} & a_{44} \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| ou le spécificateur ``\verb+|+"'' -«écartent» les composantes de la matrice (quand l'extension \pkg{array} est chargée, ce qui est toujours le cas -avec \pkg{nicematrix}).\footnote{En revanche les traits tracés par |\ncline| n'écartent pas les lignes de la matrice.} +position des composantes de celle-ci. En revanche, les traits tracés par |\hline|, le spécificateur «\verb+|+» ou +les options |hlines| et |vlines| «écartent» les composantes de la matrice (quand l'extension \pkg{array} est +chargée, ce qui est toujours le cas avec \pkg{nicematrix}).\footnote{En revanche les traits tracés par |\ncline| + n'écartent pas les lignes de la matrice.} \vspace{1cm} @@ -2553,7 +2672,7 @@ A_{41} & A_{42} & A_{43} & A_{44} 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 +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] @@ -2572,11 +2691,11 @@ $\begin{array}{cc} La matrice $B$ a une «première rangée» (pour $C_j$) d'où l'option |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 \\ + & & ~emphase#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} @@ -2584,11 +2703,11 @@ b_{11} & \Cdots & b_{1j} & \Cdots & b_{1n} \\ La matrice $A$ a une «première colonne» (pour $L_i$) d'où l'option |first-col|. \begin{Verbatim} \begin{bNiceArray}{CC>{\strut}CCC}[name=A,first-col] - & a_{11} & \Cdots & & & a_{1n} \\ - & \Vdots & & & & \Vdots \\ -L_i & a_{i1} & \Cdots & a_{ik} & \Cdots & a_{in} \\ - & \Vdots & & & & \Vdots \\ - & a_{n1} & \Cdots & & & a_{nn} \\ + & a_{11} & \Cdots & & & a_{1n} \\ + & \Vdots & & & & \Vdots \\ +~emphase#L_i@ & a_{i1} & \Cdots & a_{ik} & \Cdots & a_{in} \\ + & \Vdots & & & & \Vdots \\ + & a_{n1} & \Cdots & & & a_{nn} \\ \end{bNiceArray} & \end{Verbatim} @@ -2596,9 +2715,9 @@ L_i & a_{i1} & \Cdots & a_{ik} & \Cdots & a_{in} \\ 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} \\ + & & & & \\ + & & \Vdots \\ +\Cdots & & c_{ij} \\ \\ \\ \end{bNiceArray} @@ -2614,7 +2733,7 @@ Dans la matrice produit, on remarquera que les lignes en pointillés sont «semi \draw [color = gray] (A-3-3) to [bend left] (B-3-3) ; \end{tikzpicture} \end{Verbatim} - + \begin{NiceMatrixBlock}[auto-columns-width] \NiceMatrixOptions{nullify-dots} @@ -2637,9 +2756,9 @@ L_i & a_{i1} & \Cdots & a_{ik} & \Cdots & a_{in} \\ \end{bNiceArray} & \begin{bNiceArray}{CC>{\strut}CCC} - & & & & \\ - & & \Vdots \\ -\Cdots & & c_{ij} \\ + & & & & \\ + & & \Vdots \\ +\Cdots & & c_{ij} \\ \\ \\ \end{bNiceArray} diff --git a/Master/texmf-dist/doc/latex/nicematrix/nicematrix.pdf b/Master/texmf-dist/doc/latex/nicematrix/nicematrix.pdf Binary files differindex f56d0ccfd18..fe0d364d95b 100644 --- a/Master/texmf-dist/doc/latex/nicematrix/nicematrix.pdf +++ b/Master/texmf-dist/doc/latex/nicematrix/nicematrix.pdf |