diff options
author | Karl Berry <karl@freefriends.org> | 2020-07-16 22:02:56 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2020-07-16 22:02:56 +0000 |
commit | 5e7c45a283a2403c25348d1f470fed5654d78d63 (patch) | |
tree | dad2092972a9b7aab9cb33b7c5097a4cdb5cdaf1 /Master/texmf-dist/doc | |
parent | 59fb84256b2284a3fe3197d49e20136772e8d77e (diff) |
nicematrix (16jul20)
git-svn-id: svn://tug.org/texlive/trunk@55851 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/doc')
-rw-r--r-- | Master/texmf-dist/doc/latex/nicematrix/nicematrix-french.pdf | bin | 359504 -> 388513 bytes | |||
-rw-r--r-- | Master/texmf-dist/doc/latex/nicematrix/nicematrix-french.tex | 730 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/nicematrix/nicematrix.pdf | bin | 896061 -> 953043 bytes |
3 files changed, 588 insertions, 142 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 fa9a6f9a400..6c8b213f5bf 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 fe29f84779a..55491dddbdc 100644 --- a/Master/texmf-dist/doc/latex/nicematrix/nicematrix-french.tex +++ b/Master/texmf-dist/doc/latex/nicematrix/nicematrix-french.tex @@ -39,7 +39,6 @@ \usepackage{footnote} \usepackage{booktabs} \usepackage{varwidth} - \usepackage[hyperfootnotes = false]{hyperref} \hypersetup @@ -66,7 +65,7 @@ \VerbatimFootnotes \title{L'extension \pkg{nicematrix} - \thanks{Ce document correspond à la version~\myfileversion\space of \pkg{nicematrix}, + \thanks{Ce document correspond à la version~\myfileversion\space de \pkg{nicematrix}, en date du~\myfiledate.}} \author{F. Pantigny \\ \texttt{fpantigny@wanadoo.fr}} @@ -83,7 +82,7 @@ L'extension LaTeX \pkg{nicematrix} fournit de nouveaux environnements similaires \vspace{1cm} \hspace{1cm} -$\begin{bNiceArray}{CCCC}[first-row,first-col, +$\begin{bNiceArray}{cccc}[first-row,first-col, code-for-first-col=\color{blue}\scriptstyle, code-for-first-row=\color{blue}\scriptstyle, columns-width = auto] @@ -94,10 +93,10 @@ L_2 & a_{21} & a_{22} & \Cdots & a_{2n} \\ L_n & a_{n1} & a_{n2} & \Cdots & a_{nn} \end{bNiceArray}$ \hspace{2cm} -\begin{NiceTabular}[c]{LSSSS}% +\begin{NiceTabular}[c]{lSSSS}% [code-before = \rowcolor{red!15}{1-2} \rowcolors{3}{blue!15}{}] \toprule -\Block{2-1}{Produit} & \multicolumn{3}{C}{dimensions (cm)} & \Block{2-1}{\rotate Prix} \\ +\Block{2-1}{Produit} & \multicolumn{3}{c}{dimensions (cm)} & \Block{2-1}{\rotate Prix} \\ \cmidrule(rl){2-4} & L & l & h \\ \midrule @@ -144,6 +143,21 @@ Une commande|\NiceMatrixOptions| est fournie pour régler les options (la porté commande est le groupe TeX courant : elles sont semi-globales). +\bigskip +{\bfseries \color{red} Important + +Dans cette version 5.0 de \pkg{nicematrix}, on doit utiliser les lettres |l|, |c| et +|r| dans les préambules des environnements et non plus les lettres |L|, |C| et +|R|. + +Pour assurer la compatibilité avec les versions précédentes, \pkg{nicematrix} +doit être chargée avec l'option |define-L-C-R|. +\begin{Verbatim} +\usepackage[define-L-C-R]{nicematrix} +\end{Verbatim} +} + + \newpage \section{Les environnements de cette extension} @@ -169,17 +183,9 @@ Les environnements |{NiceArray}| et |{NiceTabular}| sont similaires aux environn l'extension \pkg{array} (qui est chargée par \pkg{nicematrix}). \medskip -Il y a néanmoins quelques différences : -\begin{itemize} -\item Pour des raisons techniques, dans le préambule de ces environnements, l'utilisateur doit utiliser les lettres -|L|, |C| et~|R|\footnote{Les types de colonnes |L|, |C| et |R| sont définis localement à l'intérieur de - |{NiceTabular}| ou |{NiceArray}| avec la commande |\newcolumntype| de \pkg{array}. Cette définition masque une - éventuelle définition précédente.} au lieu de |l|, |c| et |r|, y compris dans les commandes |\multicolumn| et -dans les types de colonnes définis par |\newcolumntype|. - -\item Dans |{NiceArray}| (et ses variantes), les colonnes de type |w| (ex. : |wc{1cm}|) sont composées en mode -mathématique alors que dans |{array}| de \pkg{array}, elles sont composées en mode texte. -\end{itemize} +Néanmoins, dans |{NiceArray}| (et ses variantes), les colonnes de type |w| (ex. : |wc{1cm}|) sont composées en mode +mathématique alors que dans |{array}| de \pkg{array}, elles sont composées en +mode texte. \medskip Les environnements |{pNiceArray}|, |{bNiceArray}|, etc. n'ont pas d'équivalents dans \pkg{array}. @@ -193,6 +199,18 @@ Tous les environnements de l'extension \pkg{nicematrix} acceptent, entre crochet de la forme \textsl{clé=valeur}. {\bfseries Il doit n'y avoir aucun espace devant le crochet ouvrant (|[|) de cette liste d'options.} +\bigskip +\textbf{Important} + +Avant la version 5.0, il fallait, pour des raisons techniques, utiliser les +lettres |L|, |C| et |R| au lieu de |l|, |c| et |r| dans les préambules des +environnements de \pkg{nicematrix}. + +Pour pouvoir continuer à utiliser ces lettres |L|, |C| et |R|, \pkg{nicematrix} +doit être chargé avec l'option |define-L-C-R|. +\begin{Verbatim} +\usepackage[define-L-C-R]{nicematrix} +\end{Verbatim} \section{L'espace vertical entre les rangées} @@ -217,8 +235,9 @@ En s'inspirant de l'extension \pkg{cellspace} qui traite de ce problème, l'exte clés |cell-space-top-limit| et |cell-space-bottom-limit| qui sont similaires aux deux paramètres |\cellspacetoplimit| et |\cellspacebottomlimit| proposés par \pkg{cellspace}. La valeur initiale de ces paramètres est $0$~pt pour que les environnements de \pkg{nicematrix} aient par défaut le même comportement que ceux de -\pkg{array} et de l'\pkg{amsmth} mais une valeur de $1$~pt serait un bon choix. On conseille de régler leurs -valeurs avec la commande |\NiceMatrixOptions|. +\pkg{array} et de l'\pkg{amsmath} mais une valeur de $1$~pt serait un bon choix. On conseille de régler leurs +valeurs avec la commande |\NiceMatrixOptions|.\footnote{On remarquera que ces paramètres s'appliquent aussi aux + colonnes de type |S| de \pkg{siunitx} alors que \pkg{cellspace} n'est pas utilisable avec ces colonnes.} \medskip \begin{Verbatim} @@ -283,7 +302,7 @@ rangée (avec |{tabular}| ou |{array}| de \pkg{array}, il faut utiliser |\firsth \item un item \smallskip \item \renewcommand{\arraystretch}{1.2} -$\begin{NiceArray}[t]{LCCCCCC} +$\begin{NiceArray}[t]{lcccccc} \hline n & 0 & 1 & 2 & 3 & 4 & 5 \\ u_n & 1 & 2 & 4 & 8 & 16 & 32 @@ -297,7 +316,7 @@ u_n & 1 & 2 & 4 & 8 & 16 & 32 \item un item \smallskip \item \renewcommand{\arraystretch}{1.2} -$\begin{NiceArray}[t]{LCCCCCC} +$\begin{NiceArray}[t]{lcccccc} \hline n & 0 & 1 & 2 & 3 & 4 & 5 \\ u_n & 1 & 2 & 4 & 8 & 16 & 32 \\ @@ -317,7 +336,7 @@ Il est également possible d'utiliser les outils de \pkg{booktabs}: |\toprule|, \item an item \smallskip \item -$\begin{NiceArray}[t]{LCCCCCC} +$\begin{NiceArray}[t]{lcccccc} ~emphase#\toprule@ n & 0 & 1 & 2 & 3 & 4 & 5 \\ ~emphase#\midrule@ @@ -331,7 +350,7 @@ u_n & 1 & 2 & 4 & 8 & 16 & 32 \item an item \smallskip \item -$\begin{NiceArray}[t]{LCCCCCC} +$\begin{NiceArray}[t]{lcccccc} \toprule n & 0 & 1 & 2 & 3 & 4 & 5 \\ \midrule @@ -358,7 +377,7 @@ mathématique. \medskip \begin{BVerbatim} -\begin{NiceTabular}{CCCC} +\begin{NiceTabular}{cccc} rose & tulipe & marguerite & dahlia \\ violette & ~emphase#\Block{2-2}{\LARGE\color{blue} fleurs}@ & & souci \\ pervenche & & & lys \\ @@ -369,7 +388,7 @@ arum & iris & jacinthe & muguet \medskip \begin{center} -\begin{NiceTabular}{CCCC} +\begin{NiceTabular}{cccc} rose & tulipe & marguerite & dahlia \\ violette & \Block{2-2}{\LARGE\color{blue} fleurs} & & souci \\ pervenche & & & lys \\ @@ -379,16 +398,17 @@ arum & iris & jacinthe & muguet \interitem -On remarquera que les centrage horizontal du contenu des blocs est correct même si un espacement des colonnes a été +On remarquera que le centrage horizontal du contenu des blocs est correct même si un espacement des colonnes a été demandé par une instruction comme |!{\qquad}| dans le préambule (ce n'est pas le cas avec |\multicolumn|). Dans l'exemple suivant, l'en-tête «Premier groupe» est correctement centré. \medskip \begin{center} +\fvset{commandchars=\~\#\+} \begin{BVerbatim} -\begin{NiceTabular}{C!{\qquad}CCC~emphase#!{\qquad}@CCC} +\begin{NiceTabular}{@{}c!{\qquad}ccc~emphase#!{\qquad}+ccc~@{}} \toprule -& ~emphase#\Block{1-3}{Premier groupe}@ & & & \Block{1-3}{Deuxième groupe} \\ +& ~emphase#\Block{1-3}{Premier groupe}+ & & & \Block{1-3}{Deuxième groupe} \\ Rang & 1A & 1B & 1C & 2A & 2B & 2C \\ \midrule 1 & 0.657 & 0.913 & 0.733 & 0.830 & 0.387 & 0.893\\ @@ -402,7 +422,7 @@ Rang & 1A & 1B & 1C & 2A & 2B & 2C \\ \bigskip \begin{center} -\begin{NiceTabular}{C!{\qquad}CCC!{\qquad}CCC} +\begin{NiceTabular}{@{}c!{\qquad}ccc!{\qquad}ccc@{}} \toprule & \Block{1-3}{Premier groupe} & & & \Block{1-3}{Deuxième groupe} \\ Rang & 1A & 1B & 1C & 2A & 2B & 2C \\ @@ -421,7 +441,7 @@ On peut aussi utiliser la commande |\Block| dans des matrices mathématiques. \medskip \begin{BVerbatim}[baseline=c,boxwidth=10.6cm] -$\begin{bNiceArray}{CCC|C}[margin] +$\begin{bNiceArray}{ccc|c}[margin] ~emphase#\Block{3-3}{A}@ & & & 0 \\ & \hspace*{1cm} & & \Vdots \\ & & & 0 \\ @@ -429,7 +449,7 @@ $\begin{bNiceArray}{CCC|C}[margin] 0 & \Cdots& 0 & 0 \end{bNiceArray}$ \end{BVerbatim} -$\begin{bNiceArray}{CCC|C}[margin] +$\begin{bNiceArray}{ccc|c}[margin] \Block{3-3}{A} & & & 0 \\ & \hspace*{1cm} & & \Vdots \\ & & & 0 \\ @@ -445,7 +465,7 @@ pourquoi une option à mettre entre chevrons est proposée par |\Block| pour spà \medskip \begin{BVerbatim}[baseline=c,boxwidth=10.6cm] -$\begin{bNiceArray}{CCC|C}[margin] +$\begin{bNiceArray}{ccc|c}[margin] \Block{3-3}~emphase#<\LARGE>@{A} & & & 0 \\ & \hspace*{1cm} & & \Vdots \\ & & & 0 \\ @@ -453,7 +473,7 @@ $\begin{bNiceArray}{CCC|C}[margin] 0 & \Cdots& 0 & 0 \end{bNiceArray}$ \end{BVerbatim} -$\begin{bNiceArray}{CCC|C}[margin] +$\begin{bNiceArray}{ccc|c}[margin] \Block{3-3}<\LARGE>{A} & & & 0 \\ & \hspace*{1cm} & & \Vdots \\ & & & 0 \\ @@ -484,7 +504,7 @@ proposent également une clé |rules/color| qui permet de fixer cette couleur po \begin{scope} \hfuzz=10cm \begin{BVerbatim}[baseline=c,boxwidth=9.5cm] -\begin{NiceTabular}{|CCC|}[~emphase#rules/color=[gray]{0.9},rules/width=1pt@] +\begin{NiceTabular}{|ccc|}[~emphase#rules/color=[gray]{0.9},rules/width=1pt@] \hline rose & tulipe & lys \\ arum & iris & violette \\ @@ -492,7 +512,7 @@ muguet & dahlia & souci \\ \hline \end{NiceTabular} \end{BVerbatim} -\begin{NiceTabular}{|CCC|}[rules/color=[gray]{0.9},rules/width=1pt] +\begin{NiceTabular}{|ccc|}[rules/color=[gray]{0.9},rules/width=1pt] \hline rose & tulipe & lys \\ arum & iris & violette \\ @@ -546,7 +566,7 @@ comportement par défaut de |\cline| avec la clé |standard-cline|). \medskip \begin{BVerbatim}[baseline=c,boxwidth=10cm] \setlength{\arrayrulewidth}{2pt} -\begin{NiceTabular}{CCCC} \hline +\begin{NiceTabular}{cccc} \hline A&B&C&D \\ ~emphase#\cline{2-2}@ A&B&C&D \\ \hline \end{NiceTabular} @@ -554,7 +574,7 @@ A&B&C&D \\ \hline % \begin{scope} \setlength{\arrayrulewidth}{2pt} -\begin{NiceTabular}[c]{CCCC} +\begin{NiceTabular}[c]{cccc} \hline A&B&C&D \\ \cline{2-2} @@ -645,7 +665,7 @@ La clé |hvlines| demande le tracé de tous les filets horizontaux et verticaux \medskip \begin{Verbatim} -\begin{NiceTabular}{CCCC}[~emphase#hvlines@,rules/color=blue,rules/width=1pt] +\begin{NiceTabular}{cccc}[~emphase#hvlines@,rules/color=blue,rules/width=1pt] rose & tulipe & marguerite & dahlia \\ violette & \Block{2-2}{\LARGE\color{blue} fleurs} & & souci \\ pervenche & & & lys \\ @@ -654,7 +674,7 @@ arum & iris & jacinthe & muguet \end{Verbatim} % \begin{center} -\begin{NiceTabular}{CCCC}[hvlines,rules/color=blue,rules/width=1pt] +\begin{NiceTabular}{cccc}[hvlines,rules/color=blue,rules/width=1pt] rose & tulipe & marguerite & dahlia \\ violette & \Block{2-2}{\LARGE\color{blue} fleurs} & & souci \\ pervenche & & & lys \\ @@ -670,7 +690,7 @@ La clé |hvlines-except-corners| demande le tracé de tous les filets horizontau \medskip \begin{Verbatim} -\begin{NiceTabular}{*{6}{C}}[~emphase#hvlines-except-corners@,cell-space-top-limit=3pt] +\begin{NiceTabular}{*{6}{c}}[~emphase#hvlines-except-corners@,cell-space-top-limit=3pt] & & & & A \\ & & A & A & A \\ & & & A \\ @@ -684,7 +704,7 @@ A & A & A & A & A & A \\ \end{Verbatim} % \begin{center} -\begin{NiceTabular}{*{6}{C}}[hvlines-except-corners,cell-space-top-limit=3pt] +\begin{NiceTabular}{*{6}{c}}[hvlines-except-corners,cell-space-top-limit=3pt] & & & & A \\ & & A & A & A \\ & & & A \\ @@ -702,7 +722,7 @@ exactement dans le coin. \bigskip \begin{BVerbatim}[boxwidth=11cm,baseline=c] -\begin{NiceTabular}{*{6}{C}}% +\begin{NiceTabular}{*{6}{c}}% [~emphase#hvlines-except-corners@,cell-space-top-limit=3pt] 1\\ 1&1\\ @@ -712,7 +732,7 @@ exactement dans le coin. 1&5&10&10&5&1 \end{NiceTabular} \end{BVerbatim} -\begin{NiceTabular}{*{6}{C}}% +\begin{NiceTabular}{*{6}{c}}% [c,hvlines-except-corners,cell-space-top-limit=3pt] 1\\ 1&1\\ @@ -732,7 +752,7 @@ couper cette case selon une diagonale descendante.\footnote{L'auteur de ce docum \medskip \begin{BVerbatim}[baseline=c,boxwidth=10cm] -$\begin{NiceArray}{*{5}{C}}[hvlines] +$\begin{NiceArray}{*{5}{c}}[hvlines] ~emphase#\diagbox{x}{y}@ & e & a & b & c \\ e & e & a & b & c \\ a & a & e & c & b \\ @@ -740,7 +760,7 @@ b & b & c & e & a \\ c & c & b & a & e \end{NiceArray}$ \end{BVerbatim} -$\begin{NiceArray}{*{5}{C}}[hvlines] +$\begin{NiceArray}{*{5}{c}}[hvlines] \diagbox{x}{y} & e & a & b & c \\ e & e & a & b & c \\ a & a & e & c & b \\ @@ -748,7 +768,8 @@ b & b & c & e & a \\ c & c & b & a & e \end{NiceArray}$ - +\medskip +Cette commande |\diagbox| peut aussi être utilisée dans un |\Block|. @@ -782,13 +803,13 @@ de dessiner un trait vertical en pointillés avec le spécificateur «|:|». \medskip \begin{BVerbatim}[baseline=c,boxwidth=9.5cm] -\begin{pNiceArray}{CCCC~emphase#:@C} +\begin{pNiceArray}{cccc~emphase#:@c} 1 & 2 & 3 & 4 & 5 \\ 6 & 7 & 8 & 9 & 10 \\ 11 & 12 & 13 & 14 & 15 \end{pNiceArray} \end{BVerbatim} -$\begin{pNiceArray}{CCCC:C} +$\begin{pNiceArray}{cccc:c} 1 & 2 & 3 & 4 & 5 \\ 6 & 7 & 8 & 9 & 10 \\ 11 & 12 & 13 & 14 & 15 @@ -841,14 +862,14 @@ 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|}[code-before = ~emphase#\cellcolor{red!15}{3-1,2-2,1-3}@] \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|}[code-before = \cellcolor{red!15}{3-1,2-2,1-3}] \hline a & b & c \\ \hline e & f & g \\ \hline @@ -864,14 +885,14 @@ suivants fournissent la case en haut à gauche et la case en bas à droite du re \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|}[code-before = ~emphase#\rectanglecolor{blue!15}{2-2}{3-3}@] \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|}[code-before = \rectanglecolor{blue!15}{2-2}{3-3}] \hline a & b & c \\ \hline e & f & g \\ \hline @@ -891,7 +912,7 @@ la forme $a$-$b$ (un intervalle de la forme $a$- représente toutes les rangées \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, ~emphase#code-before = \rowcolor{red!15}{1,3-5,8-}@] a_1 & b_1 & c_1 \\ a_2 & b_2 & c_2 \\ a_3 & b_3 & c_3 \\ @@ -905,7 +926,7 @@ a_{10} & b_{10} & c_{10} \\ \end{NiceArray}$ \end{BVerbatim} % -$\begin{NiceArray}{LLL}% +$\begin{NiceArray}{lll}% [baseline=4,hvlines, code-before = \rowcolor{red!15}{1,3-5,8-}] a_1 & b_1 & c_1 \\ a_2 & b_2 & c_2 \\ @@ -935,7 +956,7 @@ les deux couleurs à partir de la rangée dont le numéro est donné en premier \begin{scope} \hfuzz=10cm \begin{BVerbatim}[baseline=c,boxwidth=9cm] -\begin{NiceTabular}{LR}[hlines,code-before = ~emphase#\rowcolors{1}{blue!10}{}@] +\begin{NiceTabular}{lr}[hlines,code-before = ~emphase#\rowcolors{1}{blue!10}{}@] Pierre & 12 \\ Jacques & 8 \\ Stéphanie & 18 \\ @@ -944,7 +965,7 @@ Henri & 14 \\ Estelle & 15 \end{NiceTabular} \end{BVerbatim} -\begin{NiceTabular}{LR}[hlines,code-before = \rowcolors{1}{blue!10}{},baseline=3] +\begin{NiceTabular}{lr}[hlines,code-before = \rowcolors{1}{blue!10}{},baseline=3] Pierre & 12 \\ Jacques & 8 \\ Stéphanie & 18 \\ @@ -964,14 +985,14 @@ 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, ~emphase#code-before=\chessboardcolors{red!15}{blue!15}@] 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}] +[baseline=1, r, margin, code-before = \chessboardcolors{red!15}{blue!15}] 1 & -1 & 1 \\ -1 & 1 & -1 \\ 1 & -1 & 1 @@ -979,7 +1000,7 @@ $\begin{pNiceMatrix}% \end{scope} \medskip -On a utilisé la clé |R| qui impose que toutes les colonnes soient alignées à droite (cf. p.~\pageref{key-R}). +On a utilisé la clé |r| qui impose que toutes les colonnes soient alignées à droite (cf. p.~\pageref{key-R}). \end{itemize} \bigskip @@ -990,7 +1011,7 @@ On remarquera que ces commandes sont compatibles avec les commandes de \pkg{book \begin{scope} \hfuzz=10cm \begin{BVerbatim}[baseline=c,boxwidth=8.5cm] -\begin{NiceTabular}{LSSSS}% +\begin{NiceTabular}{lSSSS}% [code-before = \rowcolor{red!15}{1-2} \rowcolors{3}{blue!15}{}] ~emphase#\toprule@ \Block{2-1}{Produit} \\ @@ -1007,7 +1028,7 @@ spécial & 12 & 12 & 0.5 & 70 \\ ~emphase#\bottomrule@ \end{NiceTabular} \end{BVerbatim} -\begin{NiceTabular}[c]{LSSSS}% +\begin{NiceTabular}[c]{lSSSS}% [code-before = \rowcolor{red!15}{1-2} \rowcolors{3}{blue!15}{}] \toprule \Block{2-1}{Produit} & @@ -1040,13 +1061,13 @@ sont composées en mode texte). \medskip \begin{BVerbatim}[baseline=c,boxwidth=9cm] -\begin{NiceTabular}{~emphase#Wc{2cm}@CC}[hvlines] +\begin{NiceTabular}{~emphase#W{c}{2cm}@cc}[hvlines] Paris & New York & Madrid \\ Berlin & London & Roma \\ Rio & Tokyo & Oslo \end{NiceTabular} \end{BVerbatim} -\begin{NiceTabular}{Wc{2cm}CC}[hvlines] +\begin{NiceTabular}{W{c}{2cm}cc}[hvlines] Paris & New York & Madrid \\ Berlin & London & Roma \\ Rio & Tokyo & Oslo @@ -1079,7 +1100,7 @@ dans les autres environnements) n'est pas supprimé (il est évidemment possible \bigskip Il est possible de donner la valeur spéciale |auto| à l'option |columns-width|: toutes les colonnes du tableau auront alors une largeur égale à la largeur de la case la plus large du tableau.\footnote{Le résultat est atteint - dès la première compilation (mais Tikz écrivant des informations dans le fichier |.aux|, un message demandant une + dès la première compilation (mais PGF/Tikz écrivant des informations dans le fichier |.aux|, un message demandant une deuxième compilation apparaîtra).}\par\nobreak \medskip @@ -1238,7 +1259,7 @@ 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=6,first-col,last-col,nullify-dots] +$\begin{pNiceArray}{cc|cc}[first-row,last-row=6,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 \\ @@ -1255,14 +1276,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=5,first-col,last-col,nullify-dots] - & C_1 & \multicolumn1C{\Cdots} & & C_4 & \\ +\begin{pNiceArray}{cc|cc}[first-row,last-row=5,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 & 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 & + & C_1 & \multicolumn1c{\Cdots} & & C_4 & \end{pNiceArray} \end{displaymath} \end{scope} @@ -1717,29 +1738,20 @@ dans les blocs. En fait, avec cette clé, les filets ne sont pas non plus tracé par des cases reliées par des lignes pointillées. \medskip -\begin{BVerbatim}[baseline=c,boxwidth=11cm] -\NiceMatrixOptions{nullify-dots} -$\begin{pNiceMatrix}[rules/color=gray,~emphase#hvlines@,margin] -0 & \Cdots & & & & 0 \\ -1 & \Cdots & & & 1 & 2 \\ -0 & \Ddots & & & \Vdots & \Vdots \\ -\Vdots & \Ddots & & & & \\ - & & & & & \\ -0 & \Cdots & & 0 & 1 & 2 \\ -\end{pNiceMatrix}$ +\begin{BVerbatim}[baseline=c,boxwidth=10.6cm] +$\begin{bNiceMatrix}[margin,~emphase#hvlines@] +\Block{3-3}<\LARGE>{A} & & & 0 \\ +& \hspace*{1cm} & & \Vdots \\ +& & & 0 \\ +0 & \Cdots& 0 & 0 +\end{bNiceMatrix}$ \end{BVerbatim} -\begin{scope} -\NiceMatrixOptions{nullify-dots} -$\begin{pNiceMatrix}[rules/color=gray,hvlines,margin] -0 & \Cdots & & & & 0 \\ -1 & \Cdots & & & 1 & 2 \\ -0 & \Ddots & & & \Vdots & \Vdots \\ -\Vdots & \Ddots & & & & \\ - & & & & & \\ -0 & \Cdots & & 0 & 1 & 2 \\ -\end{pNiceMatrix}$ -\end{scope} - +$\begin{bNiceMatrix}[margin,hvlines] +\Block{3-3}<\LARGE>{A} & & & 0 \\ +& \hspace*{1cm} & & \Vdots \\ +& & & 0 \\ +0 & \Cdots& 0 & 0 +\end{bNiceMatrix}$ \section{Le code-after} @@ -1777,14 +1789,342 @@ I & 0 & \Cdots &0 \\ \medskip Pour améliorer la lisibilité du code, une syntaxe alternative est proposée : on peut spécifier les instructions du -|code-after| à la fin de l'environnement, après le mot-clé |\CodeAfter|. Pour un exemple, voir page +|code-after| à la fin de l'environnement, après le mot-clé +|\CodeAfter|\footnote{Dans certaines circonstances, on doit mettre +|\omit \CodeAfter|, |\omit| étant un mot-clé de TeX qui annule le motif de la cellule +courante.}. Pour un exemple, voir page \pageref{exemple-CodeAfter}. +\section{Les notes dans les tableaux} +\label{s:notes} + +\subsection{Les notes de pied de page} + +\smallskip +L'extension \pkg{nicematrix} permet, en utilisant \pkg{footnote} ou bien +\pkg{footnotehyper}, d'extraire les notes insérées avec |\footnote| dans un +environnement de \pkg{nicematrix} pour les reporter en pied de page avec les +autres notes du document. + +\smallskip +Si \pkg{nicematrix} est chargée avec l'option |footnote| (avec +|\usepackage[footnote]{nicematrix}| ou avec |\PassOptionsToPackage|), +l'extension \pkg{footnote} est chargée (si elle ne l'est pas déjà ) et elle est +utilisée pour extraire les notes de pied de page. + +\smallskip +Si \pkg{nicematrix} est chargée avec l'option |footnotehyper|, l'extension +\pkg{footnotehyper} est chargée (si elle ne l'est pas déjà ) et elle est utilisée +pour extraire les notes de pied de page. + +\smallskip +Attention : Les extensions \pkg{footnote} et \pkg{footnotehyper} sont +incompatibles. L'extension \pkg{footnotehyper} est le successeur de l'extension +\pkg{footnote} et devrait être utilisée préférentiellement. L'extension +\pkg{footnote} a quelques défauts ; en particulier, elle doit être chargée après +l'extension \pkg{xcolor} et elle n'est pas parfaitement compatible avec +\pkg{hyperref}. + + + +\subsection{Les notes de tableaux} + +\label{tabularnote} + +L'extension \pkg{nicematrix} propose aussi une commande |\tabularnote| qui +permet de spécifier des notes qui seront composées à la fin du tableau avec une +longueur de ligne égale à la largeur du tableau (hors éventuelles colonnes +extérieures). Sans surprise, cette commande n'est disponible que dans les +environnements sans délimiteurs, c'est-à -dire |{NiceTabular}|, |{NiceArray}| et +|{NiceMatrix}|. + +En fait, cette commande n'est disponible que si l'extension \pkg{enumitem} a été +chargée (avant ou après \pkg{nicematrix}). Les notes sont en effet composées en +fin de tableau selon un type de liste défini par l'extension \pkg{enumitem}. + +\begin{scope} +\fvset{commandchars=\~\#\!} +\begin{Verbatim} +\begin{NiceTabular}{@{}llr@{}}[first-row,code-for-first-row = \bfseries] +\toprule +Nom & Prénom & Date de naissance \\ +\midrule +Achard~emphase#\tabularnote{La famille Achard est une très ancienne famille du Poitou.}! +& Jacques & 5 juin 1962 \\ +Lefèbvre~emphase#\tabularnote{Le patronyme Lefèbvre est une altération de Lefébure.}! +& Mathilde & 23 mai 1988 \\ +Vanesse & Stéphanie & 30 octobre 1994 \\ +Dupont & Chantal & 15 janvier 1998 \\ +\bottomrule +\end{NiceTabular} +\end{Verbatim} +\end{scope} + +\begin{center} +\begin{NiceTabular}{@{}llr@{}}[first-row,code-for-first-row = \bfseries] +\toprule +Nom & Prénom & Date de naissance \\ +\midrule +Achard\tabularnote{La famille Achard est une très ancienne famille du Poitou.} +& Jacques & 5 juin 1962 \\ +Lefebvre\tabularnote{Le patronyme Lefebvre est une altération de Lefébure.} +& Mathilde & 23 mai 1988 \\ +Vanesse & Stéphanie & 30 octobre 1994 \\ +Dupont & Chantal & 15 janvier 1998 \\ +\bottomrule +\end{NiceTabular} +\end{center} + + +\begin{table} +\setlength{\belowcaptionskip}{1ex} +\centering +\caption{Utilisation de \texttt{\textbackslash tabularnote}\tabularnote{On peut + mettre une note dans le titre.}} +\label{t:tabularnote} +\begin{NiceTabular}{@{}llc@{}}[notes/bottomrule] +\toprule +Nom & Prénom & Durée de vie \\ +\midrule +Barrère & Bertrand & 86\\ +Nightingale\tabularnote{Souvent considérée comme la première + infirmière.}\tabularnote{Surnommée «la Dame à la Lampe».} +& Florence & 90 \\ +Schœlcher & Victor & 89\tabularnote{L'appel de note déborde à droite.}\\ +Touchet & Marie & 89 \\ +Wallis & John & 87 \\ +\bottomrule +\end{NiceTabular} +\end{table} + + +\bigskip +\begin{itemize} +\item La commande |\tabularnote| est en fait utilisable avant +l'environnement de \pkg{nicematrix}, le but étant de pouvoir l'utiliser sur le +titre inséré par |\caption| dans un environnement |{table}| de LaTeX. + +\item Si plusieurs commandes |\tabularnote{...}| se suivent \emph{sans aucun espace + entre elles}, les appels de notes correspondants sont composés ensemble, +séparés par une virgule. + +\item Si une commande |\tabularnote{...}| se trouve exactement à la fin d'une cellule +(sans aucun espace après), l'appel de note est composé en débordement vers la +droite (cela peut permettre de mieux conserver l'alignement des contenus d'une +colonne). + +\item Si la clé |notes/para| est utilisée, les notes sont composées à la fin du +tableau en un seul paragraphe. + +\item Si l'extension \pkg{booktabs} a été chargée (avant ou après +\pkg{nicematrix}), la clé |notes/bottomrule| permet de faire tracer un +|\bottomrule| de \pkg{booktabs} \emph{après} les notes. + +\item Il est possible de référencer une note de tableau (avec la commande +|\label| placée après le |\tabularnote|). +\end{itemize} +% +Voir sur la table \ref{t:tabularnote}, p.~\pageref{t:tabularnote}, certaines de ces +remarques illustrées. Cette table a été composée avec le code suivant. + +\begin{center} +\fvset{commandchars=\~\#\!} +\begin{BVerbatim}[formatcom=\small\color{gray}] +\begin{table} +\setlength{\belowcaptionskip}{1ex} +\centering +\caption{Utilisation de \texttt{\textbackslash + tabularnote}~emphase#\tabularnote{On peut! + ~emphase# mettre une note dans le titre.}!} +\label{t:tabularnote} +\begin{NiceTabular}{@{}llc@{}}[~emphase#notes/bottomrule!] +\toprule +Nom & Prénom & Durée de vie \\ +\midrule +Barrère & Bertrand & 86\\ +Nightingale~emphase#\tabularnote{Souvent considérée comme la première! + ~emphase#infirmière.}\tabularnote{Surnommée «la Dame à la Lampe».}! +& Florence & 90 \\ +Schœlcher & Victor & 89~emphase#\tabularnote{L'appel de note déborde à droite.}!\\ +Touchet & Marie & 89 \\ +Wallis & John & 87 \\ +\bottomrule +\end{NiceTabular} +\end{table} +\end{BVerbatim} +\end{center} + + + +\subsection{Personnalisation des notes de tableau} + + +Les notes de tableau peuvent être personnalisées grâce à un ensemble de clés disponibles dans +|\NiceMatrixOptions|. Ces clés ont un nom préfixé par |notes| : +\begin{itemize} +\item |notes/para| +\item |notes/bottomrule| +\item |notes/style| +\item |notes/label-in-tabular| +\item |notes/label-in-list| +\item |notes/enumitem-keys| +\item |notes/enumitem-keys-para| +\item |notes/code-before| +\end{itemize} +Pour la commmodité, il est aussi possible de fixer ces clés dans +|\NiceMatrixOptions| via une clé |notes| qui prend en argument une liste de +paires \textsl{clé=valeur} où le nom des clés n'a plus à être préfixé par +|notes|: +\begin{center} +\begin{BVerbatim}[formatcom = \small \color{gray}] +\NiceMatrixOptions + { + notes = + { + bottomrule , + style = ... , + label-in-tabular = ... , + enumitem-keys = + { + labelsep = ... , + align = ... , + ... + } + } + } +\end{BVerbatim} +\end{center} + + +\bigskip +On détaille maintenant ces clés. + +\begin{itemize}[itemsep=\medskipamount] +\item La clé |notes/para| demande la composition des notes en fin de tableau en un seul +paragraphe. + +Valeur initiale : |false| + +Cette clé est également accessible dans un environnement individuel. + +\item La clé |notes/bottomrule| permet de faire tracer un |\bottomrule| de \pkg{booktabs} +\emph{après} les notes. Ce trait n'est tracé que s'il y a effectivement des +notes dans le tableau. L'extension \pkg{booktabs} doit avoir été chargée (avant +ou après l'extension \pkg{nicematrix}). Dans le cas contraire, une erreur est générée. + +Valeur initiale : |false| + +Cette clé est également accessible dans un environnement individuel. + +\item La clé |notes/style| est une commande dont l'argument est spécifié par +|#1| et qui indique le style de numérotation des notes. C'est ce style qui est +utilisé par |\ref| pour faire référence à une note de tableau pour laquelle on a +utilisé un |\label|. Ce sont les labels mis en forme avec ce style qui sont +séparés par des virgules quand on utilise plusieurs commandes |\tabularnote| +successivement. Le marqueur |#1| est censé correspondre à un nom de compteur +LaTeX. + +Valeur initiale : |\emph{\alph{#1}}| + +Une autre valeur possible pourrait être tout simplement |\arabic{#1}| + +\item La clé |notes/label-in-tabular| est une commande dont l'argument est +spécifié par |#1| et qui sert au formatage de l'appel de note dans le tableau. +En interne, le numéro de note a déjà été formaté par |notes/style| avant d'être +passé en argument à cette commande. + +Valeur initiale : |\textsuperscript{#1}| + +Pour la composition du français, il est de tradition de mettre un petit espace +avant l'appel de note. On peut faire ce réglage de la manière suivante : + +\begin{Verbatim} +\NiceMatrixOptions{notes/label-in-tabular = \,\textsuperscript{~#1}} +\end{Verbatim} + + +\item La clé |notes/label-in-list| est une commande dont l'argument est +spécifié par |#1| et qui sert au formatage du numéro de note dans la liste des +notes en fin de tableau. En interne, le numéro de note a déjà été formaté par +|notes/style| avant d'être passé en argument à cette commande. + +Valeur initiale : |\textsuperscript{#1}| + +Pour la composition du français, on ne compose pas les labels des notes en +lettres supérieures dans la liste des notes. On pourra donc prendre le réglage +suivant : +\begin{Verbatim} +\NiceMatrixOptions{notes/label-in-list = ~#1.\nobreak\hspace{0.25em}} +\end{Verbatim} +La commande |\nobreak| est pour le cas où l'option |para| est utilisée. + + + +\item Les notes sont composées en fin de tableau en utilisant en interne un +style de liste de \pkg{enumitem}. + +La clé |notes/enumitem-keys| permet de spécifier une liste de paires +\textsl{clé=valeur} (au format de \pkg{enumitem}) permettant de paramétrer ce +type de liste. + +Valeur initiale :\quad |noitemsep , leftmargin = * , align = left , labelsep = 0pt| + +Cette valeur initiale contient la spécification |align = left| qui demande que +le label de la note soit composé à gauche dans la boîte qui lui est dévolue. + +Ce réglage a l'avantage d'avoir les notes calées à gauche, ce qui est plaisant +si on compose des tableaux dans l'esprit de \pkg{booktabs} (voir par exemple la +table \ref{t:tabularnote}, p.~\pageref{t:tabularnote}). + + +\item La clé |notes/enumitem-keys-para| est similaire à la précédente mais elle +est utilisée pour le type de liste qui sera utilisé quand l'option |para| est +choisie. Bien entendu, quand cette option |para| est active, c'est une liste de +type |inline| (suivant le vocabulaire de \pkg{enumitem}) qui est utilisée et les +paires \textsl{clé=valeur} doivent donc correspondre à une telle liste de type +|inline|. + +Valeur initiale :\quad |afterlabel = \nobreak, itemjoin = \quad| + + +\item La clé |notes/code-before| est une liste de tokens qui seront insérés +avant la composition de la liste de notes. + +Valeur initiale : \textsl{vide} + +Si on souhaite, par exemple, que les notes soient composées en gris et en +|\footnotesize|, c'est cette clé qu'il faut utiliser. +\begin{Verbatim} +\NiceMatrixOptions{notes/code-before = \footnotesize \color{gray}} +\end{Verbatim} +On peut aussi mettre dans cette clé |\raggedright| ou |\RaggedRight| (cette +dernière est une commande de \pkg{ragged2e}). +\end{itemize} -\section{Autres fonctionnalités} +\bigskip +Pour un exemple de personnalisation des notes de tableau, voir p.~\pageref{ex:notes}. + + +\subsection{Utilisation de \{NiceTabular\} avec threeparttable} + + +Si vous souhaitez utiliser l'environnement |{NiceTabular}| dans un environnement +|{threeparttable}| de l'extension éponyme, vous devez patcher l'environnement +|{threeparttable}| avec le code suivant. +\begin{Verbatim}[commandchars=\~\#\!] +\makeatletter +\AtBeginEnvironment{threeparttable}{\TPT@hookin{NiceTabular}} +\makeatother +\end{Verbatim} + +La commande |\AtBeginEnvironment| est une commande de l'extension \pkg{etoolbox} qui doit donc +avoir été chargée au préalable. + + +\section{Autres fonctionnalités} \subsection{Utilisation du type de colonne S de siunitx} @@ -1793,8 +2133,8 @@ de type |S| de \pkg{siunitx} dans les environnements de \pkg{nicematrix}. L'impl aucune macro privée de \pkg{siunitx}. \medskip -\begin{BVerbatim}[baseline = c, boxwidth = 10.5cm] -$\begin{pNiceArray}{~emphase#S@CWc{1cm}C}[nullify-dots,first-row] +\begin{BVerbatim}[baseline = c, boxwidth = 10.6cm] +$\begin{pNiceArray}{~emphase#S@cW{c}{1cm}c}[nullify-dots,first-row] {C_1} & \Cdots & & C_n \\ 2.3 & 0 & \Cdots & 0 \\ 12.4 & \Vdots & & \Vdots \\ @@ -1802,7 +2142,7 @@ $\begin{pNiceArray}{~emphase#S@CWc{1cm}C}[nullify-dots,first-row] 7.2 & 0 & \Cdots & 0 \end{pNiceArray}$ \end{BVerbatim} -$\begin{pNiceArray}{SCWc{1cm}C}[nullify-dots,first-row] +$\begin{pNiceArray}{ScW{c}{1cm}c}[nullify-dots,first-row] {C_1} & \Cdots & & C_n \\ 2.3 & 0 & \Cdots & 0 \\ 12.4 & \Vdots & & \Vdots \\ @@ -1824,12 +2164,12 @@ Les environnements sans préambule (|{NiceMatrix}|, |{pNiceMatrix}|, |{bNiceMatr \medskip \begin{BVerbatim}[baseline=c,boxwidth=10cm] -$\begin{bNiceMatrix}[R] +$\begin{bNiceMatrix}[r] \cos x & - \sin x \\ \sin x & \cos x \end{bNiceMatrix}$ \end{BVerbatim} -$\begin{bNiceMatrix}[R] +$\begin{bNiceMatrix}[r] \cos x & - \sin x \\ \sin x & \cos x \end{bNiceMatrix}$ @@ -1911,7 +2251,7 @@ que propose l'environnement |{smallmatrix}| de l'\pkg{amsmath} (et les environne \bigskip \begin{Verbatim} -$\begin{bNiceArray}{CCCC|C}[~emphase#small@, +$\begin{bNiceArray}{cccc|c}[~emphase#small@, last-col, code-for-last-col = \scriptscriptstyle, columns-width = 3mm ] @@ -1921,7 +2261,7 @@ $\begin{bNiceArray}{CCCC|C}[~emphase#small@, \end{bNiceArray}$ \end{Verbatim} % -\[\begin{bNiceArray}{CCCC|C}[small, last-col, code-for-last-col = \scriptscriptstyle, columns-width=3mm] +\[\begin{bNiceArray}{cccc|c}[small, last-col, code-for-last-col = \scriptscriptstyle, columns-width=3mm] 1 & -2 & 3 & 4 & 5 \\ 0 & 3 & 2 & 1 & 2 & L_2 \gets 2 L_1 - L_2 \\ 0 & 1 & 1 & 2 & 3 & L_3 \gets L_1 + L_3 @@ -2054,7 +2394,7 @@ si on a besoin de délimiteurs atypiques ou asymétriques. \medskip \begin{BVerbatim}[baseline=c,boxwidth=11cm] $\begin{~emphase#NiceArrayWithDelims@} - {\downarrow}{\uparrow}{CCC}[margin] + {\downarrow}{\uparrow}{ccc}[margin] 1 & 2 & 3 \\ 4 & 5 & 6 \\ 7 & 8 & 9 @@ -2062,7 +2402,7 @@ $\begin{~emphase#NiceArrayWithDelims@} \end{BVerbatim} % $\begin{NiceArrayWithDelims} - {\downarrow}{\uparrow}{CCC}[margin] + {\downarrow}{\uparrow}{ccc}[margin] 1 & 2 & 3 \\ 4 & 5 & 6 \\ 7 & 8 & 9 @@ -2148,7 +2488,8 @@ $\begin{pNiceMatrix} \bigskip -Dans l'exemple suivant, nous avons surligné tous nœuds de la matrice (on explique plus loin la technique utilisée : +Dans l'exemple suivant, nous avons surligné tous les nœuds de la matrice (on +explique plus loin la technique utilisée : cf. p. \pageref{highlight}). \[\begin{pNiceMatrix} @@ -2250,8 +2591,9 @@ usages. C'est pourquoi il est possible d'utiliser les options |left-margin| et | l'espace des deux côtés du tableau et aussi de l'espace dans les «nœuds larges» de la première colonne et de la dernière colonne. Dans l'exemple suivant, nous avons utilisé les options |left-margin| et |right-margin|.\footnote{Les options |left-margin| et |right-margin| prennent des dimensions comme valeurs mais, si - aucune valeur n'est donnée, c'est la valeur par défaut qui est utilisée et elle est égale à |\arraycolsep| (par - défaut, 5~pt). Il existe aussi une option |margin| pour fixer à la fois |left-margin| et |right-margin|.} + aucune valeur n'est donnée, c'est la valeur par défaut qui est utilisée et elle est égale à |\arraycolsep| (valeur + initial : 5~pt). Il existe aussi une option |margin| pour fixer à la fois + |left-margin| et |right-margin|.} \[\begin{pNiceMatrix}[ create-large-nodes,left-margin,right-margin, code-after = {\begin{tikzpicture} @@ -2310,7 +2652,7 @@ Voici un tableau qui a été composé de la manière suivante : \medskip \begin{BVerbatim} \large -\begin{NiceTabular}{wl{2cm}LL}[hvlines] +\begin{NiceTabular}{wl{2cm}ll}[hvlines] fraise & amande & abricot \\ prune & pêche & poire \\[1ex] noix & noisette & brugnon @@ -2320,7 +2662,7 @@ noix & noisette & brugnon \hspace{1cm} \begin{scope} \large -\begin{NiceTabular}[c]{wl{2cm}LL}[hvlines] +\begin{NiceTabular}[c]{wl{2cm}ll}[hvlines] fraise & amande & abricot \\ prune & pêche & poire \\[1ex] noix & noisette & brugnon @@ -2334,7 +2676,7 @@ Ci-contre, on a colorié toutes les cases de ce tableau avec |\chessboardcolors| \hspace{1.5cm} \begin{scope} \large -\begin{NiceTabular}[c]{wl{2cm}LL}[hvlines,code-before = \chessboardcolors{red!15}{blue!15}] +\begin{NiceTabular}[c]{wl{2cm}ll}[hvlines,code-before = \chessboardcolors{red!15}{blue!15}] fraise & amande & abricot \\ prune & pêche & poire \\[1ex] noix & noisette & brugnon @@ -2349,7 +2691,7 @@ Voici maintenant tous les «nœuds larges» de ce tableau (sans utilisation de | \hspace{1.5cm} \begin{scope} \large -\begin{NiceTabular}[c]{wl{2cm}LL}[hvlines, +\begin{NiceTabular}[c]{w{l}{2cm}ll}[hvlines, create-large-nodes, code-after = {\begin{tikzpicture} [every node/.style = {blend mode = multiply, @@ -2385,7 +2727,7 @@ L'extension \pkg{nicematrix} crée un nœud PGF-Tikz indiquant la position poten (avec les noms |row-|$i$) et de chaque filet vertical (avec les noms |col-|$j$), comme décrit sur la figure ci-dessous. Ces nœuds sont accessibles dans le |code-before| et dans le |code-after|. \begin{center} -\begin{NiceTabular}{CCC}[hvlines,rules/width=1pt,rules/color=gray] +\begin{NiceTabular}{ccc}[hvlines,rules/width=1pt,rules/color=gray] rose & tulipe & lys \\ arum & iris & violette \\ muguet & dahlia & souci @@ -2481,14 +2823,14 @@ Le trait fort correspondant ne s'étendra pas dans les rangées extérieures : \newcolumntype{?}{!{\OnlyMainNiceMatrix{\vrule width 1 pt}}} \begin{BVerbatim}[baseline = c, boxwidth = 10.5cm] -$\begin{pNiceArray}{CC?CC}[first-row,last-row=3] +$\begin{pNiceArray}{cc?cc}[first-row,last-row=3] C_1 & C_2 & C_3 & C_4 \\ a & b & c & d \\ e & f & g & h \\ C_1 & C_2 & C_3 & C_4 \end{pNiceArray}$ \end{BVerbatim} -$\begin{pNiceArray}{CC?CC}[first-row,last-row=3] +$\begin{pNiceArray}{cc?cc}[first-row,last-row=3] C_1 & C_2 & C_3 & C_4 \\ a & b & c & d \\ e & f & g & h \\ @@ -2632,15 +2974,113 @@ Avec cette option, des espaces extérieurs de longueur |\arraycolsep| seront ins \subsection{Incompatibilités} -L'extension \pkg{nicematrix} n'est pas compatible with \pkg{threeparttable}. - -\medskip L'extension \pkg{nicematrix} n'est pas parfaitement compatible avec l'extension \pkg{arydshln} (parce que cette extension redéfinit de nombreuses commandes internes de \pkg{array}). \section{Exemples} +\subsection{Notes dans les tableaux} + +\label{ex:notes} + +Les outils de \pkg{nicematrix} pour les notes dans les tableaux ont été +présentés à la partie \ref{s:notes} p.~\pageref{s:notes}. + +\bigskip +Imaginons que l'on souhaite numéroter les notes de tableau (celles construites +avec |\tabularnote|) avec des astérisques.\footnote{Bien entendu, il faut qu'il + y en ait très peu : trois paraît un maximum.} + +On commence par écrire une commande |\stars| similaire aux commandes classiques +|\arabic|, |\alph|, |\Alph|, etc. mais qui produit un nombre d'astérisques égal +à son argument.\footnote{Ou plutôt : à la valeur de son argument.} +\begin{Verbatim} +\ExplSyntaxOn +\NewDocumentCommand ~emphase#\stars@ { m } + { \prg_replicate:nn { \value { ~#1 } } { $ \star $ } } +\ExplSyntaxOff +\end{Verbatim} +% +Bien entendu, on change le style des notes avec la clé |notes/style|. Mais, il +serait bon aussi de changer certains paramètres du type de liste (au sens de +\pkg{enumitem}) utilisé pour composer les notes après le tableau. On demande de +composer les labels avec une largeur égale à celle du plus grand des labels. Or, +le label le plus large est bien entendu celui avec le maximum d'astéristiques. +On connaît ce nombre : il est égal à |\value{tabularnote}| (car |tabularnote| +est le compteur LaTeX utilisé par |\tabularnote| et il est donc égal à la fin au +nombre total de notes dans le tableau). On utilise alors la clé |widest*| de +\pkg{enumitem} pour demander une largeur de label correspondante : +|widest*=\value{tabularnote}|. +\begin{Verbatim} +\NiceMatrixOptions + { + notes = + { + ~emphase#style = \stars{~#1} , @ + ~emphase#enumitem-keys = @ + ~emphase# { @ + ~emphase# widest* = \value{tabularnote} ,@ + ~emphase# align = right @ + ~emphase# } @ + } + } +\end{Verbatim} + + + +\begin{scope} +\ExplSyntaxOn +\NewDocumentCommand \stars { m } + { \prg_replicate:nn { \value { #1 } } { $ \star $ } } +\NiceMatrixOptions + { + notes = + { + style = \stars{#1} , + enumitem-keys = + { + widest* = \value{tabularnote} , + align = right + } + } + } +\ExplSyntaxOff +\fvset{commandchars=\~\#\!} +\begin{Verbatim} +\begin{NiceTabular}{@{}llr@{}}[first-row,code-for-first-row = \bfseries] +\toprule +Nom & Prénom & Date de naissance \\ +\midrule +Achard~emphase#\tabularnote{La famille Achard est une très ancienne famille du Poitou.}! +& Jacques & 5 juin 1962 \\ +Lefèbvre~emphase#\tabularnote{Le patronyme Lefèbvre est une altération de Lefébure.}! +& Mathilde & 23 mai 1988 \\ +Vanesse & Stéphanie & 30 octobre 1994 \\ +Dupont & Chantal & 15 janvier 1998 \\ +\bottomrule +\end{NiceTabular} +\end{Verbatim} + +\begin{center} +\begin{NiceTabular}{@{}llr@{}}[first-row,code-for-first-row = \bfseries] +\toprule +Nom & Prénom & Date de naissance \\ +\midrule +Achard\tabularnote{La famille Achard est une très ancienne famille du Poitou.} +& Jacques & 5 juin 1962 \\ +Lefebvre\tabularnote{Le patronyme Lefebvre est une altération de Lefébure.} +& Mathilde & 23 mai 1988 \\ +Vanesse & Stéphanie & 30 octobre 1994 \\ +Dupont & Chantal & 15 janvier 1998 \\ +\bottomrule +\end{NiceTabular} +\end{center} +\end{scope} + + + + \subsection{Lignes en pointillés} @@ -2698,7 +3138,7 @@ Un exemple avec |\multicolumn|:\par\nobreak \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 \\ +\Cdots & & ~emphase#\multicolumn{6}{c}{10 \text{ autres lignes}}@ & \Cdots \\ 1 & 2 & 3 & 4 & 5 & 6 & 7 & 8 & 9 & 10 \end{BNiceMatrix} \end{BVerbatim} @@ -2707,7 +3147,7 @@ Un exemple avec |\multicolumn|:\par\nobreak \[\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 \\ +\Cdots & & \multicolumn{6}{c}{10 \text{ autres lignes}} & \Cdots \\ 1 & 2 & 3 & 4 & 5 & 6 & 7 & 8 & 9 & 10 \end{BNiceMatrix}\] @@ -2742,7 +3182,7 @@ Un exemple pour le résultant de deux polynômes : \bigskip \begin{BVerbatim} \setlength{\extrarowheight}{1mm} -\begin{vNiceArray}{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 \\ @@ -2757,7 +3197,7 @@ a_p & &&a_0 & & &b_1 \\ \begin{scope} \setlength{\extrarowheight}{1mm} -\[\begin{vNiceArray}{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 \\ @@ -2772,7 +3212,7 @@ a_p & &&a_0 & & &b_1 \\ 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] +$\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 \\ @@ -2783,7 +3223,7 @@ $\begin{pNiceArray}{*6C|C}[nullify-dots,last-col,code-for-last-col=\scriptstyle] \end{Verbatim} -\[\begin{pNiceArray}{*6C|C}[nullify-dots,last-col,code-for-last-col=\scriptstyle] +\[\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 \\ @@ -2842,14 +3282,14 @@ voulons la même largeur (automatique) pour toutes les colonnes. \NiceMatrixOptions { last-col,code-for-last-col = \color{blue}\scriptstyle,light-syntax} \setlength{\extrarowheight}{1mm} -$\begin{pNiceArray}{CCCC:C} +$\begin{pNiceArray}{cccc:c} 1 1 1 1 1 ; 2 4 8 16 9 ; 3 9 27 81 36 ; 4 16 64 256 100 \end{pNiceArray}$ \medskip -$\begin{pNiceArray}{CCCC:C} +$\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 } ; @@ -2866,7 +3306,7 @@ $\begin{pNiceArray}{CCCC:C} \NiceMatrixOptions{last-col,code-for-last-col = \color{blue}\scriptstyle,light-syntax} \setlength{\extrarowheight}{1mm} -\enskip $\begin{pNiceArray}{CCCC:C} +\enskip $\begin{pNiceArray}{cccc:c} 1 1 1 1 1 ; 2 4 8 16 9 ; 3 9 27 81 36 ; @@ -2875,7 +3315,7 @@ $\begin{pNiceArray}{CCCC:C} \medskip -\enskip $\begin{pNiceArray}{CCCC:C} +\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 } ; @@ -2884,7 +3324,7 @@ $\begin{pNiceArray}{CCCC:C} \medskip -\enskip $\begin{pNiceArray}{CCCC:C} +\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 } ; @@ -2893,7 +3333,7 @@ $\begin{pNiceArray}{CCCC:C} \medskip -\enskip $\begin{pNiceArray}{CCCC:C} +\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 } ; @@ -2902,7 +3342,7 @@ $\begin{pNiceArray}{CCCC:C} \medskip -\enskip $\begin{pNiceArray}{CCCC:C} +\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 } ; @@ -2911,7 +3351,7 @@ $\begin{pNiceArray}{CCCC:C} \medskip -\enskip $\begin{pNiceArray}{CCCC:C} +\enskip $\begin{pNiceArray}{cccc:c} 1 1 1 1 1 ; 0 1 3 7 \frac72 ; 0 0 1 6 2 ; @@ -2948,7 +3388,7 @@ pas cela, les nouveaux nœuds seront plus grands que les nœuds d'origine créé \label{exemple-CodeAfter} \begin{Verbatim} -$\begin{pNiceArray}{>{\strut}CCCC}[create-large-nodes,margin,extra-margin = 2pt] +$\begin{pNiceArray}{>{\strut}cccc}[create-large-nodes,margin,extra-margin = 2pt] a_{11} & a_{12} & a_{13} & a_{14} \\ a_{21} & a_{22} & a_{23} & a_{24} \\ a_{31} & a_{32} & a_{33} & a_{34} \\ @@ -2964,7 +3404,7 @@ $\begin{pNiceArray}{>{\strut}CCCC}[create-large-nodes,margin,extra-margin = 2pt] \end{pNiceArray}$ \end{Verbatim} % -\[\begin{pNiceArray}{>{\strut}CCCC}[create-large-nodes,margin,extra-margin = 2pt] +\[\begin{pNiceArray}{>{\strut}cccc}[create-large-nodes,margin,extra-margin = 2pt] a_{11} & a_{12} & a_{13} & a_{14} \\ a_{21} & a_{22} & a_{23} & a_{24} \\ a_{31} & a_{32} & a_{33} & a_{34} \\ @@ -3058,14 +3498,14 @@ On considère maintenant la matrice suivante que l'on a appelée |exemple|. \medskip \begin{Verbatim} -$\begin{pNiceArray}{CCC}[~emphase#name=exemple@,last-col,create-medium-nodes] +$\begin{pNiceArray}{ccc}[~emphase#name=exemple@,last-col,create-medium-nodes] a & a + b & a + b + c & L_1 \\ a & a & a + b & L_2 \\ a & a & a & L_3 \end{pNiceArray}$ \end{Verbatim} -\[\begin{pNiceArray}{CCC}[last-col] +\[\begin{pNiceArray}{ccc}[last-col] a & a + b & a + b + c & L_1 \\ a & a & a + b & L_2 \\ a & a & a & L_3 @@ -3105,7 +3545,7 @@ Si on veut surligner chaque rangée de la matrice, on peut utiliser la technique \medskip On obtient la matrice suivante. -\[\begin{pNiceArray}{CCC}[ +\[\begin{pNiceArray}{ccc}[ last-col, code-after = {\begin{tikzpicture}[highlight/.style = {fill = red!15, blend mode = multiply, @@ -3134,7 +3574,7 @@ Le résultat peut paraître décevant. On peut l'améliorer en utilisant les «n \medskip On obtient la matrice suivante. -\[\begin{pNiceArray}{CCC}[ +\[\begin{pNiceArray}{ccc}[ last-col, create-medium-nodes, code-after = {\begin{tikzpicture}[highlight/.style = {fill = red!15, @@ -3156,7 +3596,7 @@ a & a & a & L_3 Dans l'exemple suivant, on utilise les «nœuds larges» pour surligner une zone de la matrice.\par\nobreak \begin{Verbatim} -\begin{pNiceArray}{>{\strut}CCCC}[create-large-nodes,margin,extra-margin=2pt] +\begin{pNiceArray}{>{\strut}cccc}[create-large-nodes,margin,extra-margin=2pt] A_{11} & A_{12} & A_{13} & A_{14} \\ A_{21} & A_{22} & A_{23} & A_{24} \\ A_{31} & A_{32} & A_{33} & A_{34} \\ @@ -3173,7 +3613,7 @@ Dans l'exemple suivant, on utilise les «nœuds larges» pour surligner une zone \end{Verbatim} -\[\begin{pNiceArray}{>{\strut}CCCC}[create-large-nodes,margin,extra-margin=2pt] +\[\begin{pNiceArray}{>{\strut}cccc}[create-large-nodes,margin,extra-margin=2pt] A_{11} & A_{12} & A_{13} & A_{14} \\ A_{21} & A_{22} & A_{23} & A_{24} \\ A_{31} & A_{32} & A_{33} & A_{34} \\ @@ -3212,7 +3652,7 @@ $\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] +\begin{bNiceArray}{c>{\strut}cccc}[name=B,first-row] & & ~emphase#C_j@ \\ b_{11} & \Cdots & b_{1j} & \Cdots & b_{1n} \\ \Vdots & & \Vdots & & \Vdots \\ @@ -3224,7 +3664,7 @@ 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] +\begin{bNiceArray}{cc>{\strut}ccc}[name=A,first-col] & a_{11} & \Cdots & & & a_{1n} \\ & \Vdots & & & & \Vdots \\ ~emphase#L_i@ & a_{i1} & \Cdots & a_{ik} & \Cdots & a_{in} \\ @@ -3236,7 +3676,7 @@ La matrice $A$ a une «première colonne» (pour $L_i$) d'où l'option |first-co Dans la matrice produit, on remarquera que les lignes en pointillés sont «semi-ouvertes». \begin{Verbatim} -\begin{bNiceArray}{CC>{\strut}CCC} +\begin{bNiceArray}{cc>{\strut}ccc} & & & & \\ & & \Vdots \\ \Cdots & & c_{ij} \\ @@ -3257,11 +3697,12 @@ Dans la matrice produit, on remarquera que les lignes en pointillés sont «semi \end{Verbatim} + \begin{NiceMatrixBlock}[auto-columns-width] \NiceMatrixOptions{nullify-dots} $\begin{array}{cc} & -\begin{bNiceArray}{C>{\strut}CCCC}[name=B,first-row] +\begin{bNiceArray}{c>{\strut}cccc}[name=B,first-row] & & C_j \\ b_{11} & \Cdots & b_{1j} & \Cdots & b_{1n} \\ \Vdots & & \Vdots & & \Vdots \\ @@ -3269,7 +3710,7 @@ b_{11} & \Cdots & b_{1j} & \Cdots & b_{1n} \\ & & \Vdots \\ b_{n1} & \Cdots & b_{nj} & \Cdots & b_{nn} \end{bNiceArray} \\ \\ -\begin{bNiceArray}{CC>{\strut}CCC}[name=A,first-col] +\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} \\ @@ -3277,7 +3718,7 @@ L_i & a_{i1} & \Cdots & a_{ik} & \Cdots & a_{in} \\ & a_{n1} & \Cdots & & & a_{nn} \\ \end{bNiceArray} & -\begin{bNiceArray}{CC>{\strut}CCC} +\begin{bNiceArray}{cc>{\strut}ccc} & & & & \\ & & \Vdots \\ \Cdots & & c_{ij} \\ @@ -3299,9 +3740,14 @@ L_i & a_{i1} & \Cdots & a_{ik} & \Cdots & a_{in} \\ Le document |nicematrix.pdf| (fourni avec l'extension \pkg{nicematrix}) contient une traduction anglaise de la documentation ici présente, ainsi que le code source commenté et un historique des versions. - \end{document} +% Local Variables: +% TeX-fold-mode: t +% TeX-fold-preserve-comments: nil +% flyspell-mode: true +% fill-column: 80 +% End: diff --git a/Master/texmf-dist/doc/latex/nicematrix/nicematrix.pdf b/Master/texmf-dist/doc/latex/nicematrix/nicematrix.pdf Binary files differindex 2c72de6ae13..5fda73de4e5 100644 --- a/Master/texmf-dist/doc/latex/nicematrix/nicematrix.pdf +++ b/Master/texmf-dist/doc/latex/nicematrix/nicematrix.pdf |