From 12076ff67b851c936ad4f5d47a8d054a497cb7fb Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Wed, 10 Mar 2021 22:21:00 +0000 Subject: nicematrix (10mar21) git-svn-id: svn://tug.org/texlive/trunk@58257 c570f23f-e606-0410-a88d-b1316a301751 --- .../doc/latex/nicematrix/nicematrix-french.pdf | Bin 420606 -> 424997 bytes .../doc/latex/nicematrix/nicematrix-french.tex | 652 +++++++++++++-------- .../texmf-dist/doc/latex/nicematrix/nicematrix.pdf | Bin 1133328 -> 1166775 bytes 3 files changed, 396 insertions(+), 256 deletions(-) (limited to 'Master/texmf-dist/doc/latex') diff --git a/Master/texmf-dist/doc/latex/nicematrix/nicematrix-french.pdf b/Master/texmf-dist/doc/latex/nicematrix/nicematrix-french.pdf index 7c58a0449ce..21154fbe675 100644 Binary files a/Master/texmf-dist/doc/latex/nicematrix/nicematrix-french.pdf and b/Master/texmf-dist/doc/latex/nicematrix/nicematrix-french.pdf differ diff --git a/Master/texmf-dist/doc/latex/nicematrix/nicematrix-french.tex b/Master/texmf-dist/doc/latex/nicematrix/nicematrix-french.tex index 75a1954df9b..9ae1a3a8abd 100644 --- a/Master/texmf-dist/doc/latex/nicematrix/nicematrix-french.tex +++ b/Master/texmf-dist/doc/latex/nicematrix/nicematrix-french.tex @@ -232,8 +232,8 @@ l'extension \pkg{nicematrix} propose deux clés |cell-space-top-limit| et |cell-space-bottom-limit| qui sont similaires aux deux paramètres |\cellspacetoplimit| et |\cellspacebottomlimit| proposés par \pkg{cellspace}. -\colorbox{yellow!30}{Nouveau 5.9}\enskip Il existe aussi une clé -|cell-space-limits| pour régler simultanément les deux paramètres. +Il existe aussi une clé |cell-space-limits| pour régler simultanément les deux +paramètres. La valeur initiale de ces paramètres est $0$~pt pour que les environnements de \pkg{nicematrix} aient par défaut le même comportement que ceux de \pkg{array} @@ -409,7 +409,7 @@ Dans les environnements de \pkg{nicematrix}, on peut utiliser la commande |\Block| pour placer un élément au centre d'un rectangle de cases fusionnées. La commande |\Block| doit être utilisée dans la case supérieure gauche du bloc -avec deux arguments. +avec deux arguments obligatoires. \begin{itemize} \item Le premier argument est la taille de ce bloc avec la syntaxe $i$-$j$ où @@ -500,10 +500,34 @@ $\begin{bNiceArray}{ccc|c}[margin] \end{bNiceArray}$ + +\interitem +La commande |\Block| accepte en fait en premier argument optionnel (entre +crochets) une liste de couples clé-valeur. Les clés sont les suivantes : +\begin{itemize} +\item les clés |l|, |c| et |r| réglent le positionnement horizontal comme dit +précédemment ; +\item la clé |fill| prend en argument une couleur et remplit le bloc avec cette +couleur ; +\item la clé |draw| prend en argument une couleur et trace le cadre avec cette +couleur (la valeur par défaut de cette clé est la couleur courante des filets du +tableau) ; +\item la clé |color| prend en argument une couleur et l'applique au contenu et +trace également le cadre avec cette couleur. +\item la clé |line-width| fixe la largeur des filets servant pour le cadre (n'a +d'intérêt que si |draw| est utilisée) ; +\item \colorbox{yellow!50}{\textbf{Nouveau 5.12}}\enskip la clé +|rounded-corners| impose des coins arrondis (pour le cadre dessiné par |draw| et +le fond dessiné par |fill|) avec un rayon égal à la valeur de cette clé (la +valeur par défaut est 4~pt\footnote{Cette valeur par défaut est la valeur + initiale des \emph{rounded corners} de Tikz.}). +\end{itemize} + + \interitem \textbf{On doit remarquer que, par défaut, les blocs ne créent pas d'espace}. Il n'y a exception que pour les blocs mono-rangée et les blocs mono-colonne comme -expliqué juste après. +expliqué plus loin. \medskip @@ -512,10 +536,11 @@ construction |wc{...}| de \pkg{array}). \medskip \begin{BVerbatim} -\begin{NiceTabular}~emphase#{cwc{2cm}wc{3cm}c}@ +\begin{NiceTabular}{cwc{2cm}wc{3cm}c} rose & tulipe & marguerite & dahlia \\ violette -& \Block[draw=red,fill=red!15]{2-2}{\LARGE De très jolies fleurs} & & souci \\ +& ~emphase#\Block[draw=red,fill=red!15,rounded-corners]{2-2}{\LARGE De très jolies fleurs}@ + & & souci \\ pervenche & & & lys \\ arum & iris & jacinthe & muguet \end{NiceTabular} @@ -526,20 +551,13 @@ arum & iris & jacinthe & muguet \begin{center} \begin{NiceTabular}{cwc{2cm}wc{3cm}c} rose & tulipe & marguerite & dahlia \\ -violette & \Block[draw=red,fill=red!15]{2-2}{\LARGE De très jolies fleurs} & & souci \\ +violette & \Block[draw=red,fill=red!15,rounded-corners]{2-2} + {\LARGE De très jolies fleurs} & & souci \\ pervenche & & & lys \\ arum & iris & jacinthe & muguet \end{NiceTabular} \end{center} -\medskip -Comme on le voit sur cet exemple, on peut fixer la couleur de fond avec la clé -|fill| et la couleur du cadre avec la clé |draw|\footnote{Si la clé |draw| est - utilisée sans valeur, c'est la couleur par défaut des filets de tableaux qui - est utilisée.}. On peut aussi fixer l'épaisseur du trait avec la clé -|line-width|. - - \subsection{Les blocs mono-colonne} @@ -616,7 +634,8 @@ bloc sur plusieurs lignes. la consigne générale donnée dans le préambule pour cette colonne. \item On peut tracer un cadre autour du bloc avec la clé |draw| de la commande -|\Block|.\footnote{Pour colorier le fond d'une case, il n'y a pas besoin +|\Block| ou colorier le fond avec des bords arrondis avec les clés |fill| et +|rounded-corners|.\footnote{Pour colorier simplement le fond d'une case, il n'y a pas besoin d'utiliser un bloc mono-case : on peut utiliser la commande |\cellcolor| si la clé |colortbl-like| est utilisée : voir p.~\pageref{colortbl-like}.} \end{itemize} @@ -885,11 +904,11 @@ p.~\pageref{OnlyMainNiceMatrix}. \subsection{Les clés hlines et vlines} La clé |hlines| demande un tracé de tous les filets horizontaux et la clé -|vlines| demande un tracé de tous les filets verticaux (sauf dans les blocs et -dans les blocs virtuels déterminés par des lignes en pointillés). En fait, dans les -environnements avec délimiteurs (comme |{pNiceMatrix}| ou |{bNiceArray}|), les -filets extérieurs ne sont pas tracés (ce qui est le comportement certainement -attendu). +|vlines| demande un tracé de tous les filets verticaux (sauf dans les blocs, +créés par |\Block| et dans les blocs virtuels déterminés par des lignes en +pointillés : |\Cdots|, |\Vdots|, etc.). En fait, dans les environnements avec +délimiteurs (comme |{pNiceMatrix}| ou |{bNiceArray}|), les filets extérieurs ne +sont pas tracés (ce qui est le comportement certainement attendu). \medskip @@ -1143,16 +1162,33 @@ inconvénients. \subsection{Les outils de nicematrix dans le code-before} -L'extension \pkg{nicematrix} proposent des outils (indépendants de -\pkg{colortbl}) pour tracer d'abord les rectangles colorés, puis le contenu des -cases et les filets. Cette manière de faire est plus dans l'esprit du «modèle du -peintre» des formats PostScript et \textsc{pdf} et convient donc mieux aux -lecteurs de \textsc{pdf}. L'inconvénient est qu'elle nécessite plusieurs -compilations successives. +L'extension \pkg{nicematrix} propose des outils (indépendants de \pkg{colortbl}) +pour tracer d'abord les rectangles colorés, puis le contenu des cases et les +filets. Cette manière de faire est plus dans l'esprit du «modèle du peintre» des +formats PostScript et \textsc{pdf} et convient donc mieux aux lecteurs de +\textsc{pdf}. L'inconvénient est qu'elle nécessite plusieurs compilations +successives. \medskip L'extension \pkg{nicematrix} fournit une clé |code-before| pour du code qui sera -exécuté avant le tracé du tableau. De nouvelles commandes y sont disponibles : +exécuté avant le tracé du tableau. + +\smallskip +\colorbox{yellow!50}{\textbf{Nouveau 5.12}}\enskip Une syntaxe alternative est +proposée : on peut placer le contenu de ce |code-before| entre les mots-clés +|\CodeBefore| et |\Body| juste au début de l'environnement. + +\begin{Verbatim} +\begin{pNiceArray}{~textsl#preamble@} +~emphase#\CodeBefore@ +~textsl#instructions du code-before@ +~emphase#\Body@ +~textsl#contenu de l'environnement@ +\end{pNiceArray} +\end{Verbatim} + +\smallskip +De nouvelles commandes sont disponibles dans ce |\CodeBefore| : |\cellcolor|, |\rectanglecolor|, |\rowcolor|, |\columncolor|, |\rowcolors| et |\chessboardcolors|.\footnote{On pourra remarquer que, dans le \verb|code-before|, des nœuds PGF/Tikz correspondant à la position des filets @@ -1176,14 +1212,20 @@ format $i$-$j$ où $i$ est le numéro de ligne et $j$ le numéro de colonne. \begin{scope} \hfuzz=10cm \begin{BVerbatim}[boxwidth=10cm,baseline=c] -\begin{NiceTabular}{|c|c|c|}[code-before = ~emphase#\cellcolor{red!15}{3-1,2-2,1-3}@] +\begin{NiceTabular}{|c|c|c|} +\CodeBefore + ~emphase#\cellcolor{red!15}{3-1,2-2,1-3}@ +\Body \hline a & b & c \\ \hline e & f & g \\ \hline h & i & j \\ \hline \end{NiceTabular} \end{BVerbatim} -\begin{NiceTabular}{|c|c|c|}[code-before = \cellcolor{red!15}{3-1,2-2,1-3}] +\begin{NiceTabular}{|c|c|c|} +\CodeBefore + \cellcolor{red!15}{3-1,2-2,1-3} +\Body \hline a & b & c \\ \hline e & f & g \\ \hline @@ -1201,14 +1243,20 @@ et la case en bas à droite du rectangle. \begin{scope} \hfuzz=10cm \begin{BVerbatim}[boxwidth=10cm,baseline=c] -\begin{NiceTabular}{|c|c|c|}[code-before = ~emphase#\rectanglecolor{blue!15}{2-2}{3-3}@] +\begin{NiceTabular}{|c|c|c|} +\CodeBefore + ~emphase#\rectanglecolor{blue!15}{2-2}{3-3}@ +\Body \hline a & b & c \\ \hline e & f & g \\ \hline h & i & j \\ \hline \end{NiceTabular} \end{BVerbatim} -\begin{NiceTabular}{|c|c|c|}[code-before = \rectanglecolor{blue!15}{2-2}{3-3}] +\begin{NiceTabular}{|c|c|c|} +\CodeBefore + \rectanglecolor{blue!15}{2-2}{3-3} +\Body \hline a & b & c \\ \hline e & f & g \\ \hline @@ -1230,7 +1278,10 @@ partir de la rangée~$a$). \begin{scope} \hfuzz=10cm \begin{BVerbatim}[boxwidth=9cm,baseline=c] -$\begin{NiceArray}{lll}[hvlines, ~emphase#code-before = \rowcolor{red!15}{1,3-5,8-}@] +$\begin{NiceArray}{lll}[hvlines] +\CodeBefore + ~emphase#\rowcolor{red!15}{1,3-5,8-}@ +\Body a_1 & b_1 & c_1 \\ a_2 & b_2 & c_2 \\ a_3 & b_3 & c_3 \\ @@ -1244,8 +1295,10 @@ a_{10} & b_{10} & c_{10} \\ \end{NiceArray}$ \end{BVerbatim} % -$\begin{NiceArray}{lll}% -[baseline=4,hvlines, code-before = \rowcolor{red!15}{1,3-5,8-}] +$\begin{NiceArray}{lll}[baseline=4,hvlines] +\CodeBefore + \rowcolor{red!15}{1,3-5,8-} +\Body a_1 & b_1 & c_1 \\ a_2 & b_2 & c_2 \\ a_3 & b_3 & c_3 \\ @@ -1281,7 +1334,7 @@ l'intervalle constitué de toutes les rangées du tableau à partir de la rangé \bigskip -La commande |\rowcolors| accepte une liste de paires clé-valeur comme argument +La commande |\rowcolors| accepte une liste de couples clé-valeur comme argument optionnel en dernière position (l'argument optionel en première position correspond à l'espace colorimétrique). Les clés disponibles sont |cols|, |restart| et |respect-blocks|. @@ -1306,8 +1359,10 @@ tableau pour englober les blocs (créés par la commande |\Block| : cf.~p.~\page \begin{scope} \hfuzz=10cm \begin{BVerbatim}[baseline=c,boxwidth=9cm] -\begin{NiceTabular}{clr}% - [hvlines,code-before = ~emphase#{\rowcolors{2}{blue!10}{}[cols=2-3,restart]}@] +\begin{NiceTabular}{clr}[hvlines] +\CodeBefore + ~emphase#{\rowcolors{2}{blue!10}{}[cols=2-3,restart]}@ +\Body \Block{1-*}{Résultats} \\ \Block{2-1}{A}& Pierre & 12 \\ & Jacques & 8 \\ @@ -1317,8 +1372,10 @@ tableau pour englober les blocs (créés par la commande |\Block| : cf.~p.~\page & Estelle & 15 \end{NiceTabular} \end{BVerbatim} -\begin{NiceTabular}{clr}[hvlines, - code-before = {\rowcolors{2}{blue!10}{}[cols=2-3,restart]},baseline=2] +\begin{NiceTabular}{clr}[hvlines,baseline=2] +\CodeBefore + \rowcolors{2}{blue!10}{}[cols=2-3,restart] +\Body \Block{1-*}{Résultats} \\ \Block{2-1}{A}& Pierre & 12 \\ & Jacques & 8 \\ @@ -1335,8 +1392,10 @@ tableau pour englober les blocs (créés par la commande |\Block| : cf.~p.~\page \begin{scope} \hfuzz=10cm \begin{BVerbatim}[baseline=c,boxwidth=11cm] -\begin{NiceTabular}{lr}[hvlines,code-before = -~emphase#\rowcolors{1}{blue!10}{}[respect-blocks]@] +\begin{NiceTabular}{lr}[hvlines] +\CodeBefore + ~emphase#\rowcolors{1}{blue!10}{}[respect-blocks]@ +\Body \Block{2-1}{Pierre} & 12 \\ & 13 \\ Jacques & 8 \\ @@ -1349,8 +1408,10 @@ Henri & 14 \\ & 19 \end{NiceTabular} \end{BVerbatim} -\begin{NiceTabular}{lr}[hvlines,code-before = -\rowcolors{1}{blue!10}{}[respect-blocks],baseline=c] +\begin{NiceTabular}{lr}[hvlines,baseline=c] +\CodeBefore + \rowcolors{1}{blue!10}{}[respect-blocks] +\Body \Block{2-1}{Pierre} & 12 \\ & 13 \\ Jacques & 8 \\ @@ -1376,14 +1437,19 @@ couleurs et colorie les cases en quinconces avec les deux couleurs. \begin{scope} \hfuzz=10cm \begin{BVerbatim}[baseline=c,boxwidth=9cm] -$\begin{pNiceMatrix}[r,margin, ~emphase#code-before=\chessboardcolors{red!15}{blue!15}@] +$\begin{pNiceMatrix}[r,margin] +\CodeBefore + ~emphase#code-before=\chessboardcolors{red!15}{blue!15}@ +\Body 1 & -1 & 1 \\ -1 & 1 & -1 \\ 1 & -1 & 1 \end{pNiceMatrix}$ \end{BVerbatim} -$\begin{pNiceMatrix}% -[baseline=1, r, margin, code-before = \chessboardcolors{red!15}{blue!15}] +$\begin{pNiceMatrix}[baseline=1, r, margin] +\CodeBefore + \chessboardcolors{red!15}{blue!15} +\Body 1 & -1 & 1 \\ -1 & 1 & -1 \\ 1 & -1 & 1 @@ -1404,8 +1470,11 @@ l'extension \pkg{booktabs} n'est pas chargée par \pkg{nicematrix}. \begin{scope} \hfuzz=10cm \begin{BVerbatim}[baseline=c,boxwidth=8.5cm] -\begin{NiceTabular}{lSSSS}% -[code-before = \rowcolor{red!15}{1-2} \rowcolors{3}{blue!15}{}] +\begin{NiceTabular}{lSSSS} +\CodeBefore + \rowcolor{red!15}{1-2} + \rowcolors{3}{blue!15}{} +\Body ~emphase#\toprule@ \Block{2-1}{Produit} & \Block{1-3}{dimensions (cm)} & & & @@ -1421,8 +1490,11 @@ spécial & 12 & 12 & 0.5 & 70 \\ ~emphase#\bottomrule@ \end{NiceTabular} \end{BVerbatim} -\begin{NiceTabular}[c]{lSSSS}% -[code-before = \rowcolor{red!15}{1-2} \rowcolors{3}{blue!15}{}] +\begin{NiceTabular}[c]{lSSSS} +\CodeBefore + \rowcolor{red!15}{1-2} + \rowcolors{3}{blue!15}{} +\Body \toprule \Block{2-1}{Produit} & \Block{1-3}{dimensions (cm)} & & & @@ -2062,7 +2134,7 @@ C[a_1,a_1] & \Cdots & C[a_1,a_n] & ~emphase#\Hdotsfor{1}@ & \Vdots & \Ddots & \Vdots \\ C[a_n,a_1] & \Cdots & C[a_n,a_n] & & C[a_n,a_1^{(p)}] & \Cdots & C[a_n,a_n^{(p)}] \\ -\rule{0pt}{15mm} & ~emphase#\Vdotsfor{1}@ & & \Ddots & & ~emphase#\Vdotsfor{1}@ \\ +\rule{0pt}{15mm}\NotEmpty & ~emphase#\Vdotsfor{1}@ & & \Ddots & & ~emphase#\Vdotsfor{1}@ \\ C[a_1^{(p)},a_1] & \Cdots & C[a_1^{(p)},a_n] & & C[a_1^{(p)},a_1^{(p)}] & \Cdots & C[a_1^{(p)},a_n^{(p)}] \\ \Vdots & \Ddots & \Vdots @@ -2077,7 +2149,7 @@ C[a_n^{(p)},a_1] & \Cdots & C[a_n^{(p)},a_n] C[a_1,a_1] & \Cdots & C[a_1,a_n] & \hspace*{20mm} & C[a_1,a_1^{(p)}] & \Cdots & C[a_1,a_n^{(p)}] \\ \Vdots & \Ddots & \Vdots & \Hdotsfor{1} & \Vdots & \Ddots & \Vdots \\ C[a_n,a_1] & \Cdots & C[a_n,a_n] & & C[a_n,a_1^{(p)}] & \Cdots & C[a_n,a_n^{(p)}] \\ -\rule{0pt}{15mm} & \Vdotsfor{1} & & \Ddots & & \Vdotsfor{1} \\ +\rule{0pt}{15mm}\NotEmpty & \Vdotsfor{1} & & \Ddots & & \Vdotsfor{1} \\ C[a_1^{(p)},a_1] & \Cdots & C[a_1^{(p)},a_n] & & C[a_1^{(p)},a_1^{(p)}] & \Cdots & C[a_1^{(p)},a_n^{(p)}] \\ \Vdots & \Ddots & \Vdots & \Hdotsfor{1} & \Vdots & \Ddots & \Vdots \\ C[a_n^{(p)},a_1] & \Cdots & C[a_n^{(p)},a_n] & & C[a_n^{(p)},a_1^{(p)}] & \Cdots & C[a_n^{(p)},a_n^{(p)}] @@ -2359,7 +2431,7 @@ p.~\pageref{customization}). \label{sub-matrix} -\colorbox{yellow!50}{\textbf{Nouveau 5.10}}\enskip +\colorbox{yellow!30}{Nouveau 5.10}\enskip La commande |\SubMatrix| permet de positionner des délimiteurs sur une partie du tableau, partie qui est considérée comme une sous-matrice. La commande |\SubMatrix| prend cinq arguments : @@ -2373,7 +2445,11 @@ la syntaxe $i$|-|$j$ où $i$ est le numéro de rangée et $j$ le numéro de colo \item le troisième argument est le coin inférieur droit avec la même syntaxe ; \item la quatrième argument est le délimiteur droit ; \item le cinquième argument, optionnel, entre crochets, est une liste de couples -clé-valeur. +clé-valeur.\footnote{Il n'y a pas d'argument optionnel entre crochets en première +position car un crochet ouvrant juste après \verb|\SubMatrix| doit pouvoir être +interprété comme le premier argument (obligatoire) de \verb|\SubMatrix|: ce +crochet est alors le délimiteur gauche de la sous-matrice (ex. : +\verb|\SubMatrix[{2-2}{4-7}]|).} \end{itemize} On remarquera que la commande |\SubMatrix| trace les délimiteurs après la @@ -2392,8 +2468,8 @@ colonne avec |@{\hspace{1.5em}}| dans le préambule du tableau. \dfrac{1}{4} & \dfrac{1}{2} & \dfrac{1}{4} & y \\ 1 & 2 & 3 & z \CodeAfter -~emphase#\SubMatrix({1-1}{3-3})+ -~emphase#\SubMatrix({1-4}{3-4})+ + ~emphase#\SubMatrix({1-1}{3-3})+ + ~emphase#\SubMatrix({1-4}{3-4})+ \end{NiceArray}\] \end{BVerbatim} \end{scope} @@ -2402,8 +2478,8 @@ $\begin{NiceArray}{ccc@{\hspace{1.5em}}c}[cell-space-limits=2pt,margin] \dfrac{1}{4} & \dfrac{1}{2} & \dfrac{1}{4} & y \\ 1 & 2 & 3 & z \CodeAfter -\SubMatrix({1-1}{3-3}) -\SubMatrix({1-4}{3-4}) + \SubMatrix({1-1}{3-3}) + \SubMatrix({1-4}{3-4}) \end{NiceArray}$ \bigskip @@ -2429,6 +2505,21 @@ environnements de \pkg{nicematrix} ou comme option de |\CodeAfter| avec le préfixe |sub-matrix|, c'est-à-dire qu'elles sont alors nommées |sub-matrix/left-xshift|, |sub-matrix/right-xshift|, |sub-matrix/xshift|, etc. +\medskip +\colorbox{yellow!50}{\textbf{Nouveau 5.12}}\enskip Il y a aussi les clés +suivantes, qui ne sont accessibles que pour une commande |\SubMatrix| +individuelle : +% +\begin{itemize} +\item |vlines| contient une liste de numéros de filets verticaux à tracer dans +la sous-matrice (si cette clé est utilisée sans valeur, tous les filets +verticaux sont tracés) ; +\item |hlines| est similaire à |vlines| mais pour les filets horizontaux ; +\item |hvlines|, qui s'utilise sans valeur, trace tous les filets dans la sous-matrice. +\end{itemize} +On remarquera que tous ces filets sont dessinés après la construction du tableau +principal : les colonnes et les rangées ne sont pas écartées. + \bigskip \begin{scope} \hfuzz=12cm @@ -2440,9 +2531,9 @@ $\begin{NiceArray}{cc@{\hspace{5mm}}l}[cell-space-limits=2pt] a & b & \frac12a+\frac14b \\ c & d & \frac12c+\frac14d \\ \CodeAfter -\SubMatrix({1-3}{2-3}) -\SubMatrix({3-1}{4-2}) -\SubMatrix({3-3}{4-3}) + \SubMatrix({1-3}{2-3}) + \SubMatrix({3-1}{4-2}) + \SubMatrix({3-3}{4-3}) \end{NiceArray}$ \end{BVerbatim} \end{scope} @@ -2452,9 +2543,9 @@ $\begin{NiceArray}{cc@{\hspace{5mm}}l}[cell-space-limits=2pt] a & b & \frac12a+\frac14b \\ c & d & \frac12c+\frac14d \\ \CodeAfter -\SubMatrix({1-3}{2-3}) -\SubMatrix({3-1}{4-2}) -\SubMatrix({3-3}{4-3}) + \SubMatrix({1-3}{2-3}) + \SubMatrix({3-1}{4-2}) + \SubMatrix({3-3}{4-3}) \end{NiceArray}$ \medskip @@ -2471,9 +2562,9 @@ $\begin{NiceArray}{cc@{\hspace{5mm}}l}[cell-space-limits=2pt] a & b & \frac12a+\frac14b \\ c & d & \frac12c+\frac14d \\ \CodeAfter -\SubMatrix({1-3}{2-3})[~emphase#slim!] -\SubMatrix({3-1}{4-2}) -\SubMatrix({3-3}{4-3}) + \SubMatrix({1-3}{2-3})[~emphase#slim!] + \SubMatrix({3-1}{4-2}) + \SubMatrix({3-3}{4-3}) \end{NiceArray}$ \end{BVerbatim} \end{scope} @@ -2484,9 +2575,9 @@ $\begin{NiceArray}{cc@{\hspace{5mm}}l}[cell-space-limits=2pt] a & b & \frac12a+\frac14b \\ c & d & \frac12c+\frac14d \\ \CodeAfter -\SubMatrix({1-3}{2-3})[slim] -\SubMatrix({3-1}{4-2}) -\SubMatrix({3-3}{4-3}) + \SubMatrix({1-3}{2-3})[slim] + \SubMatrix({3-1}{4-2}) + \SubMatrix({3-3}{4-3}) \end{NiceArray}$ @@ -3488,7 +3579,7 @@ noix & noisette & brugnon \label{noeuds-i} -\colorbox{yellow!50}{\textbf{Nouveau 5.11}}\enskip L'extension \pkg{nicematrix} +\colorbox{yellow!30}{Nouveau 5.11}\enskip L'extension \pkg{nicematrix} crée un nœud PGF-Tikz nommé simplement $i$ (précédé du préfixe habituel) à l'intersection du filet horizontal de numéro $i$ et du filet vertical de numéro~$j$ (ou plutôt la position potentielle de ces filets car ils ne sont @@ -3521,13 +3612,10 @@ horizontal~$i$ et du filet vertical~$j$ avec la syntaxe |(|$i$\verb+-|+$j$|)|. \medskip \begin{Verbatim} -\[\begin{NiceMatrix}[ - code-before = - { -~emphase# \tikz \draw [fill = red!15] @ -~emphase# (7-|4) -- (8-|4) -- (8-|5) -- (9-|5) -- (9-|6) |- cycle ; @ - } -] +\begin{NiceMatrix} +\CodeBefore +~emphase#\tikz \draw [fill=red!15] (7-|4) |- (8-|5) |- (9-|6) |- cycle ;@ +\Body 1 \\ 1 & 1 \\ 1 & 2 & 1 \\ @@ -3537,16 +3625,13 @@ horizontal~$i$ et du filet vertical~$j$ avec la syntaxe |(|$i$\verb+-|+$j$|)|. 1 & 6 & 15 & 20 & 15 & 6 & 1 \\ 1 & 7 & 21 & 35 & 35 & 21 & 7 & 1 \\ 1 & 8 & 28 & 56 & 70 & 56 & 28 & 8 & 1 -\end{NiceMatrix}\] +\end{NiceMatrix} \end{Verbatim} % -\[\begin{NiceMatrix}[ - code-before = - { - \tikz \draw [fill = red!15] - (7-|4) -- (8-|4) -- (8-|5) -- (9-|5) -- (9-|6) |- cycle ; - } -] +\[\begin{NiceMatrix} +\CodeBefore +\tikz \draw [fill=red!15] (7-|4) |- (8-|5) |- (9-|6) |- cycle ; +\Body 1 \\ 1 & 1 \\ 1 & 2 & 1 \\ @@ -3563,7 +3648,7 @@ horizontal~$i$ et du filet vertical~$j$ avec la syntaxe |(|$i$\verb+-|+$j$|)|. \label{node-sub-matrix} -\colorbox{yellow!50}{\textbf{Nouveau 5.10}}\enskip +\colorbox{yellow!30}{Nouveau 5.10}\enskip La commande |\SubMatrix| disponible dans le |\CodeAfter| a été présentée p.~\pageref{sub-matrix}. @@ -3636,10 +3721,8 @@ bibliothèque Tikz \pkg{patterns} : |\usetikzlibrary{patterns}|). \ExplSyntaxOn \cs_new_protected:Nn \__pantigny_hatch:nnn { - \begin { tikzpicture } - \fill [ pattern = north~west~lines , pattern~color = #3 ] - ( #1 -| #2) rectangle ( \int_eval:n { #1 + 1 } -| \int_eval:n { #2 + 1 } ) ; - \end { tikzpicture } + \tikz \fill [ pattern = north~west~lines , pattern~color = #3 ] + ( #1 -| #2) rectangle ( \int_eval:n { #1 + 1 } -| \int_eval:n { #2 + 1 } ) ; } \NewDocumentCommand \hatchcell { ! O { black } } @@ -3654,10 +3737,8 @@ bibliothèque Tikz \pkg{patterns} : |\usetikzlibrary{patterns}|). \ExplSyntaxOn \cs_new_protected:Nn \__pantigny_hatch:nnn { - \begin { tikzpicture } - \fill [ pattern = north~west~lines , pattern~color = #3 ] - ( #1 -| #2 ) rectangle ( \int_eval:n { #1 + 1 } -| \int_eval:n { #2 + 1 } ) ; - \end { tikzpicture } + \tikz \fill [ pattern = north~west~lines , pattern~color = #3 ] + ( #1 -| #2 ) rectangle ( \int_eval:n { #1 + 1 } -| \int_eval:n { #2 + 1 } ) ; } \NewDocumentCommand \hatchcell { ! O { black } } @@ -4150,96 +4231,224 @@ $\begin{pNiceMatrix}[first-row,first-col] -\subsection{Largeur des colonnes} +\subsection{Empilements de matrices} + +On a souvent besoin de présetner des matrices empilées les unes au-dessus des +autres (par exemple pour la résolutiond de systèmes linéaires). + \medskip -Dans l'exemple suivant, nous utilisons |{NiceMatrixBlock}| avec l'option -|auto-columns-width| parce que nous voulons la même largeur (automatique) pour -toutes les colonnes. +Pour avoir les colonnes alignées les unes sous les autres, on peut imposer une +largeur commune à toutes les colonnes, ce que l'on fait dans l'exemple suivant +avec l'environnement |{NiceMatrixBlock}| et l'option |auto-columns-width|. -\bigskip -\begin{BVerbatim} +\begin{Verbatim}[formatcom=\small\color{gray}] ~emphase#\begin{NiceMatrixBlock}[auto-columns-width]@ \NiceMatrixOptions - { last-col,code-for-last-col = \color{blue}\scriptstyle,light-syntax} + { + light-syntax, + last-col, code-for-last-col = \color{blue} \scriptstyle, + } \setlength{\extrarowheight}{1mm} -$\begin{pNiceArray}{cccc:c} - 1 1 1 1 1 { } ; - 2 4 8 16 9 ; - 3 9 27 81 36 ; - 4 16 64 256 100 + +$\begin{pNiceArray}{rrrr|r} +12 -8 7 5 3 {} ; + 3 -18 12 1 4 ; +-3 -46 29 -2 -15 ; + 9 10 -5 4 7 \end{pNiceArray}$ -\medskip -$\begin{pNiceArray}{cccc:c} - 1 1 1 1 1 ; - 0 2 6 14 7 { L_2 \gets -2 L_1 + L_2 } ; - 0 6 24 78 33 { L_3 \gets -3 L_1 + L_3 } ; - 0 12 60 252 96 { L_4 \gets -4 L_1 + L_4 } + +\smallskip +$\begin{pNiceArray}{rrrr|r} +12 -8 7 5 3 ; +0 64 -41 1 19 { L_2 \gets L_1-4L_2 } ; +0 -192 123 -3 -57 { L_3 \gets L_1+4L_3 } ; +0 -64 41 -1 -19 { L_4 \gets 3L_1-4L_4 } ; \end{pNiceArray}$ -... + +\smallskip +$\begin{pNiceArray}{rrrr|r} +12 -8 7 5 3 ; +0 64 -41 1 19 ; +0 0 0 0 0 { L_3 \gets 3 L_2 + L_3 } +\end{pNiceArray}$ + +\smallskip +$\begin{pNiceArray}{rrrr|r} +12 -8 7 5 3 {} ; +0 64 -41 1 19 ; +\end{pNiceArray}$ + ~emphase#\end{NiceMatrixBlock}@ -\end{BVerbatim} +\end{Verbatim} \bigskip - -\begin{multicols}{2} \begin{NiceMatrixBlock}[auto-columns-width] -\NiceMatrixOptions{last-col,code-for-last-col = \color{blue}\scriptstyle,light-syntax} +\NiceMatrixOptions + { + light-syntax, + last-col, code-for-last-col = \color{blue} \scriptstyle , + } \setlength{\extrarowheight}{1mm} -\enskip $\begin{pNiceArray}{cccc:c} -1 1 1 1 1 { } ; -2 4 8 16 9 ; -3 9 27 81 36 ; -4 16 64 256 100 +\quad $\begin{pNiceArray}{rrrr|r} +12 -8 7 5 3 {} ; + 3 -18 12 1 4 ; +-3 -46 29 -2 -15 ; + 9 10 -5 4 7 \end{pNiceArray}$ -\medskip - -\enskip $\begin{pNiceArray}{cccc:c} -1 1 1 1 1 ; -0 2 6 14 7 { L_2 \gets -2 L_1 + L_2 } ; -0 6 24 78 33 { L_3 \gets -3 L_1 + L_3 } ; -0 12 60 252 96 { L_4 \gets -4 L_1 + L_4 } +\smallskip +\quad $\begin{pNiceArray}{rrrr|r} +12 -8 7 5 3 ; +0 64 -41 1 19 { L_2 \gets L_1-4L_2 } ; +0 -192 123 -3 -57 { L_3 \gets L_1+4L_3 } ; +0 -64 41 -1 -19 { L_4 \gets 3L_1-4L_4 } ; \end{pNiceArray}$ -\medskip +\smallskip +\quad $\begin{pNiceArray}{rrrr|r} +12 -8 7 5 3 ; +0 64 -41 1 19 ; +0 0 0 0 0 { L_3 \gets 3 L_2 + L_3 } +\end{pNiceArray}$ -\enskip $\begin{pNiceArray}{cccc:c} -1 1 1 1 1 ; -0 1 3 7 \frac72 { L_2 \gets \frac12 L_2 } ; -0 3 12 39 \frac{33}2 { L_3 \gets \frac12 L_3 } ; -0 1 5 21 8 { L_4 \gets \frac1{12} L_4 } +\smallskip +\quad $\begin{pNiceArray}{rrrr|r} +12 -8 7 5 3 {} ; +0 64 -41 1 19 ; \end{pNiceArray}$ +\end{NiceMatrixBlock} + +\bigskip +On constate que la dernière matrice n'est pas parfaitement alignée avec les +précédentes. C'est que les parenthèses, en LaTeX, n'ont pas toutes la même +largeur suivant leur taille. \medskip +\colorbox{yellow!50}{\textbf{Nouveau 5.12}}\enskip Pour résoudre ce problème, on +peut demander que les délimiteurs soient composés avec leur largeur maximale +grâce à la clé booléenne |delimiters/max-width|. + +\begin{Verbatim}[formatcom=\small\color{gray}] +~emphase#\begin{NiceMatrixBlock}[auto-columns-width]@ +\NiceMatrixOptions + { + ~emphase#delimiters/max-width@, + light-syntax, + last-col, code-for-last-col = \color{blue}\scriptstyle, + } +\setlength{\extrarowheight}{1mm} -\enskip $\begin{pNiceArray}{cccc:c} -1 1 1 1 1 ; -0 1 3 7 \frac72 ; -0 0 3 18 6 { L_3 \gets -3 L_2 + L_3 } ; -0 0 -2 -14 -\frac92 { L_4 \gets L_2 - L_4 } +$\begin{pNiceArray}{rrrr|r} +12 -8 7 5 3 {} ; + 3 -18 12 1 4 ; +-3 -46 29 -2 -15 ; + 9 10 -5 4 7 \end{pNiceArray}$ -\medskip +... +~emphase#\end{NiceMatrixBlock}@ +\end{Verbatim} -\enskip $\begin{pNiceArray}{cccc:c} -1 1 1 1 1 ; -0 1 3 7 \frac72 ; -0 0 1 6 2 { L_3 \gets \frac13 L_3 } ; -0 0 -2 -14 -\frac92 +\bigskip +\begin{NiceMatrixBlock}[auto-columns-width] +\NiceMatrixOptions + { + delimiters/max-width, + light-syntax, + last-col, code-for-last-col = \color{blue}\scriptstyle, + } +\setlength{\extrarowheight}{1mm} + +\quad $\begin{pNiceArray}{rrrr|r} +12 -8 7 5 3 {} ; + 3 -18 12 1 4 ; +-3 -46 29 -2 -15 ; + 9 10 -5 4 7 \end{pNiceArray}$ -\medskip +\smallskip +\quad $\begin{pNiceArray}{rrrr|r} +12 -8 7 5 3 ; +0 64 -41 1 19 { L_2 \gets L_1-4L_2 } ; +0 -192 123 -3 -57 { L_3 \gets L_1+4L_3 } ; +0 -64 41 -1 -19 { L_4 \gets 3L_1-4L_4 } ; +\end{pNiceArray}$ -\enskip $\begin{pNiceArray}{cccc:c} -1 1 1 1 1 ; -0 1 3 7 \frac72 ; -0 0 1 6 2 ; -0 0 0 -2 -\frac12 { L_4 \gets L_3 + L_4 } +\smallskip +\quad $\begin{pNiceArray}{rrrr|r} +12 -8 7 5 3 ; +0 64 -41 1 19 ; +0 0 0 0 0 { L_3 \gets 3 L_2 + L_3 } \end{pNiceArray}$ + +\smallskip +\quad $\begin{pNiceArray}{rrrr|r} +12 -8 7 5 3 {} ; +0 64 -41 1 19 ; +\end{pNiceArray}$ + \end{NiceMatrixBlock} -\end{multicols} + + +\interitem +Si on souhaite un alignement des colonnes des différentes matrices sans imposer +la même largeur à toutes les colonnes, on peut utiliser un grand tableau unique +et placer les parenthèses avec des commandes |\SubMatrix| dans le |\CodeAfter|. +Bien sûr, ce tableau ne pourra pas être coupé par un saut de page. + +\medskip +\begin{Verbatim} +\setlength{\extrarowheight}{1mm} +\[\begin{NiceMatrix}% + [ r, last-col=6, code-for-last-col = \scriptstyle \color{blue} ] +12 & -8 & 7 & 5 & 3 \\ + 3 & -18 & 12 & 1 & 4 \\ +-3 & -46 & 29 &-2 &-15 \\ + 9 & 10 &-5 &4 & 7 \\[1mm] +12 & -8 & 7 &5 & 3 \\ +0 & 64 &-41 & 1 & 19 & L_2 \gets L_1-4L_2 \\ +0 & -192 &123 &-3 &-57 & L_3 \gets L_1+4L_3 \\ +0 & -64 & 41 &-1 &-19 & L_4 \gets 3L_1-4L_4 \\[1mm] +12 & -8 &7 &5 & 3 \\ +0 & 64 &-41 &1 &19 \\ +0 & 0 &0 &0 & 0 & L_3 \gets 3L_2+L_3 \\[1mm] +12 & -8 &7 &5 & 3 \\ +0 & 64 &-41 & 1 & 19 \\ +~emphase#\CodeAfter@ +~emphase# \SubMatrix({1-1}{4-5})[vlines=4]@ +~emphase# \SubMatrix({5-1}{8-5})[vlines=4]@ +~emphase# \SubMatrix({9-1}{11-5})[vlines=4]@ +~emphase# \SubMatrix({12-1}{13-5})[vlines=4]@ +\end{NiceMatrix}\] +\end{Verbatim} + +\medskip +\begin{scope} +\setlength{\extrarowheight}{1mm} +\[\begin{NiceMatrix}% + [ r, last-col=6, code-for-last-col = \scriptstyle \color{blue} ] +12 & -8 & 7 & 5 & 3 \\ + 3 & -18 & 12 & 1 & 4 \\ +-3 & -46 & 29 &-2 &-15 \\ + 9 & 10 &-5 &4 & 7 \\[1mm] +12 & -8 & 7 &5 & 3 \\ +0 & 64 &-41 & 1 & 19 & L_2 \gets L_1-4L_2 \\ +0 & -192 &123 &-3 &-57 & L_3 \gets L_1+4L_3 \\ +0 & -64 & 41 &-1 &-19 & L_4 \gets 3L_1-4L_4 \\[1mm] +12 & -8 &7 &5 & 3 \\ +0 & 64 &-41 &1 &19 \\ +0 & 0 &0 &0 & 0 & L_3 \gets 3L_2+L_3 \\[1mm] +12 & -8 &7 &5 & 3 \\ +0 & 64 &-41 & 1 & 19 \\ +\CodeAfter + \SubMatrix({1-1}{4-5})[vlines=4] + \SubMatrix({5-1}{8-5})[vlines=4] + \SubMatrix({9-1}{11-5})[vlines=4] + \SubMatrix({12-1}{13-5})[vlines=4] +\end{NiceMatrix}\] +\end{scope} \subsection{Comment surligner les cases d'une matrice} @@ -4280,7 +4489,7 @@ matrice.\footnote{Pour la commande |\cline|, voir la remarque \vspace{1cm} Il est possible de colorier une rangée avec |\rowcolor| dans le |code-before| -(ou avec |\rowcolor| dans la première case de la rangée si on utilise la clé +(ou avec |\rowcolor| dans une case de la rangée si on utilise la clé |colortbl-like| − même si \pkg{colortbl} n'est pas chargé). @@ -4491,112 +4700,43 @@ a & a & a & L_3 \\ -\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 |{NiceMatrixBlock}| avec l'option |auto-columns-width| va -permettre que toutes les colonnes aient la même largeur ce qui permettra un -alignement des deux matrices superposées. -\begin{Verbatim} -\begin{NiceMatrixBlock}[auto-columns-width] -\end{Verbatim} - -\begin{Verbatim} -\NiceMatrixOptions{nullify-dots} -\end{Verbatim} +\subsection{Utilisation de \textbackslash SubMatrix dans le code-before} -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} +Dans l'exemple suivant, on illustre le produit mathématique de deux matrices. -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] - & & ~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} +L'ensemble de la figure est un environnement |{NiceArray}| et les trois paires +de parenthèses ont été rajoutées avec |\SubMatrix| dans le |code-before|. -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] +Ceux qui sont intéressés par le code correspondant le trouveront dans le fichier +source de ce document. +% +% +% +\[\begin{NiceArray}{*{6}{c}@{\hspace{6mm}}*{5}{c}}[nullify-dots] +\CodeBefore + \SubMatrix({2-7}{6-11}) + \SubMatrix({7-2}{11-6}) + \SubMatrix({7-7}{11-11}) +\Body + & & & & & & & & \color{blue}\scriptstyle C_j \\ + & & & & & & b_{11} & \Cdots & b_{1j} & \Cdots & b_{1n} \\ + & & & & & & \Vdots & & \Vdots & & \Vdots \\ + & & & & & & & & b_{kj} \\ + & & & & & & & & \Vdots \\ + & & & & & & b_{n1} & \Cdots & b_{nj} & \Cdots & b_{nn} \\[3mm] & a_{11} & \Cdots & & & a_{1n} \\ + & \Vdots & & & & \Vdots & & & \Vdots \\ +\color{blue}\scriptstyle L_i + & a_{i1} & \Cdots & a_{ik} & \Cdots & a_{in} & \Cdots & & c_{ij} \\ & \Vdots & & & & \Vdots \\ -~emphase#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 = (A-3-1) (A-3-5) ] {} ; - \node [highlight = (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_{1n} \\ - & \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 = (A-3-1) (A-3-5) ] {} ; - \node [highlight = (B-1-3) (B-5-3) ] {} ; - \draw [color = gray] (A-3-3) to [bend left] (B-3-3) ; + & a_{n1} & \Cdots & & & a_{nn} \\ +\CodeAfter +\begin{tikzpicture} +\node [highlight = (9-2) (9-6)] { } ; +\node [highlight = (2-9) (6-9)] { } ; +\draw [gray,shorten > = 1mm, shorten < = 1mm] (9-4.north) to [bend left] (4-9.west) ; \end{tikzpicture} +\end{NiceArray}\] diff --git a/Master/texmf-dist/doc/latex/nicematrix/nicematrix.pdf b/Master/texmf-dist/doc/latex/nicematrix/nicematrix.pdf index a8e3ae524ee..18b9e7af326 100644 Binary files a/Master/texmf-dist/doc/latex/nicematrix/nicematrix.pdf and b/Master/texmf-dist/doc/latex/nicematrix/nicematrix.pdf differ -- cgit v1.2.3