From e2dfc4cc8dc03d323073de46903005e3a9d12255 Mon Sep 17 00:00:00 2001 From: Norbert Preining Date: Thu, 20 Aug 2020 03:01:54 +0000 Subject: CTAN sync 202008200301 --- .../latex/contrib/nicematrix/nicematrix-french.tex | 304 ++++++++++++++++----- 1 file changed, 231 insertions(+), 73 deletions(-) (limited to 'macros/latex/contrib/nicematrix/nicematrix-french.tex') diff --git a/macros/latex/contrib/nicematrix/nicematrix-french.tex b/macros/latex/contrib/nicematrix/nicematrix-french.tex index bd13654d0d..7ea4ab69f8 100644 --- a/macros/latex/contrib/nicematrix/nicematrix-french.tex +++ b/macros/latex/contrib/nicematrix/nicematrix-french.tex @@ -10,7 +10,7 @@ \usepackage{nicematrix} \usepackage{tikz} -\usetikzlibrary{fit} +\usetikzlibrary{fit,patterns} \usepackage{enumitem} @@ -300,7 +300,7 @@ Dans l'exemple suivant, on utilise l'option |t| (synonyme de |baseline=t|) immédiatement après un |\item| de liste. On remarquera que la présence d'un |\hline| initial n'empêche pas l'alignement sur la ligne de base de la première rangée (avec |{tabular}| ou |{array}| de \pkg{array}, il faut utiliser -|\firsthline|. +|\firsthline|). \smallskip \begin{BVerbatim}[baseline=c,boxwidth=9cm] @@ -367,6 +367,39 @@ u_n & 1 & 2 & 4 & 8 & 16 & 32 \\ \end{minipage} +\bigskip +\colorbox{yellow!50}{\textbf{Nouveau 5.2}}\enskip On peut aussi utiliser la clé +|baseline| pour aligner une matrice sur un filet horizontal (tracé par +|\hline|). On doit pour cela donner la valeur |line-|\textsl{i} où \textsl{i} +est le numéro de la rangée qui suit ce filet horizontal. + +\smallskip +\begin{Verbatim} +\NiceMatrixOptions{cell-space-top-limit=1pt,cell-space-bottom-limit=1pt} +\end{Verbatim} + +\smallskip +\begin{BVerbatim}[baseline=c,boxwidth=9cm] +$A=\begin{pNiceArray}{cc|cc}[baseline=line-3] +\dfrac1A & \dfrac1B & 0 & 0 \\ +\dfrac1C & \dfrac1D & 0 & 0 \\ +\hline +0 & 0 & A & B \\ +0 & 0 & D & D \\ +\end{pNiceArray}$ +\end{BVerbatim} +\begin{scope} +\NiceMatrixOptions{cell-space-top-limit=1pt,cell-space-bottom-limit=1pt} +\raisebox{-5mm}{$A=\begin{pNiceArray}{cc|cc}[baseline=line-3] +\dfrac1A & \dfrac1B & 0 & 0 \\ +\dfrac1C & \dfrac1D & 0 & 0 \\ +\hline +0 & 0 & A & B \\ +0 & 0 & D & D \\ +\end{pNiceArray}$} +\end{scope} + + \section{Les blocs} @@ -527,6 +560,11 @@ Marie & Pauline \\ \hline \end{NiceTabular} +\bigskip +\colorbox{yellow!50}{\textbf{Nouveau 5.2}}\enskip En revanche, les filets +verticaux ne sont pas tracés à l'intérieur des blocs. + + \bigskip Si vous utilisez \pkg{booktabs} (qui fournit |\toprule|, |\midrule|, |\bottomrule|, etc.) et que vous tenez absolument à mettre des filets verticaux @@ -680,7 +718,8 @@ 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. En fait, dans les +|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). @@ -706,10 +745,8 @@ $\begin{pNiceMatrix}[vlines,rules/width=0.2pt] \label{hvlines} La clé |hvlines| demande le tracé de tous les filets horizontaux et verticaux -\emph{sauf dans les blocs}.\footnote{En fait, quand la clé |hvlines| (ou la clé - |hvlines-except-corners| décrite juste après) est utilisée, les filets ne sont - pas non plus tracés dans les blocs virtuels délimités par des cases reliées - par des lignes pointillées (cf. p. \pageref{dotted-and-hvlines}).} +(sauf dans les blocs et dans les blocks virtuels déterminés par des +lignes en pointillés). \medskip \begin{Verbatim} @@ -734,7 +771,8 @@ arum & iris & jacinthe & muguet \subsection{La clé hvlines-except-corners} La clé |hvlines-except-corners| demande le tracé de tous les filets horizontaux -et verticaux \emph{sauf dans les blocs} et sauf dans les coins vides. +et verticaux sauf dans les blocs (y compris dans les blocks virtuels déterminés par des +lignes en pointillés) et sauf dans les coins vides. \medskip \begin{Verbatim} @@ -769,9 +807,15 @@ Comme on le voit, un «coin vide» est constitué de la réunion de tous les rectangles vides partant de la case située exactement dans le coin. \bigskip +\colorbox{yellow!50}{\textbf{Nouveau 5.2}}\enskip On peut passer en argument de +|\hvlines-except-corners| une liste de coins à prendre en considération. Les +coins étant désignés par |NW|, |SW|, |NE| et |SE| (\emph{north west}, +\emph{south west}, \emph{north east} et \emph{south east}). + +\medskip \begin{BVerbatim}[boxwidth=11cm,baseline=c] \begin{NiceTabular}{*{6}{c}}% - [~emphase#hvlines-except-corners@,cell-space-top-limit=3pt] + [~emphase#hvlines-except-corners=NE@,cell-space-top-limit=3pt] 1\\ 1&1\\ 1&2&1\\ @@ -781,7 +825,7 @@ rectangles vides partant de la case située exactement dans le coin. \end{NiceTabular} \end{BVerbatim} \begin{NiceTabular}{*{6}{c}}% - [c,hvlines-except-corners,cell-space-top-limit=3pt] + [c,hvlines-except-corners=NE,cell-space-top-limit=3pt] 1\\ 1&1\\ 1&2&1\\ @@ -904,10 +948,28 @@ incompatibilités (par exemple avec la commande |\hdotsfor|). \item L'extension \pkg{colortbl} construit le tableau ligne par ligne, en alternant rectangles colorés, filets et contenu des cases. Le \textsc{pdf} -résultant déroute certains lecteurs de \textsc{pdf} et on a des artefacts -d'affichage : des filets verticaux semblent disparaître ; au contraire, de fines -lignes blanches peuvent apparaître. L'extension \pkg{nicematrix} proposent des -outils qui évitent ces inconvénients. +résultant déroute certains lecteurs de \textsc{pdf} et on a parfois des artefacts +d'affichage. + +\begin{itemize} +\item Certains filets semblent disparaître. Ce phénomène est dû au fait que les +lecteurs de PDF donnent souvent la priorité aux éléments graphiques qui ont été +tracés postérieurement (conformément à l'esprit du «modèle du peintre» de +PostScript et PDF). De ce point de vue, MuPDF (qui est utilisé par exemple par +SumatraPDF) donne de meilleurs résultats que Adobe Reader. + +\item Une fine ligne blanche semble apparaître entre deux cellules de même +couleur. Ce phénomène se produit quand chaque cellule est coloriée avec sa +propre instruction |fill| (opérateur |fill| de PostScript noté |f| en PDF). +C'est le cas avec \pkg{colortbl} avec lequel chaque cellule est coloriée +individuellement même si on utilise |\columncolor| ou |\rowcolor|. + +Concernant ce phénomène, Adobe Reader donne de meilleurs résultats que +MuPDF. +\end{itemize} + +L'extension \pkg{nicematrix} proposent des outils qui permettent d'éviter ces +inconvénients. \end{itemize} \subsection{Les outils de nicematrix dans le code-before} @@ -958,6 +1020,10 @@ h & i & j \\ \hline \end{NiceTabular} \end{scope} +\medskip +Une commande |\cellcolor| ne produit qu'une instruction |fill| (codée |f|) dans +le \textsc{pdf}. + \bigskip \item La commande |\rectanglecolor| prend trois arguments obligatoires. Le premier est la couleur, les deux suivants fournissent la case en haut à gauche @@ -1025,6 +1091,10 @@ a_{10} & b_{10} & c_{10} \\ \end{NiceArray}$ \end{scope} +\medskip +Une commande |\rowcolor| ne produit qu'une instruction |fill| (codée |f|) dans +le \textsc{pdf}. + \bigskip \item La commande |\columncolor| doit son nom à la commande |\columncolor| de @@ -1061,6 +1131,45 @@ Estelle & 15 \end{NiceTabular} \end{scope} +\bigskip +\colorbox{yellow!50}{\textbf{Nouveau 5.2}}\enskip Il existe une option |respect-blocks| +pour la commande |\rowcolor|. Avec cette option, les ``rangées'' colorées +alternativement peuvent s'étendre sur plusieurs rangées réelles du tableau pour +englober les blocs. + +\medskip +\begin{scope} +\hfuzz=10cm +\begin{BVerbatim}[baseline=c,boxwidth=9cm] +\begin{NiceTabular}{cr}[hvlines,code-before = +~emphase#\rowcolors{1}{blue!10}{}[respect-blocks]@] +\Block{2-1}{Pierre} & 12 \\ + & 13 \\ +Jacques & 8 \\ +\Block{3-1}{Stéphanie} & 18 \\ + & 17 \\ + & 15 \\ +Amélie & 20 \\ +Henri & 14 \\ +\Block{2-1}{Estelle} & 15 \\ + & 19 +\end{NiceTabular} +\end{BVerbatim} +\begin{NiceTabular}{cr}[hvlines,code-before = \rowcolors{1}{blue!10}{}[respect-blocks],baseline=c] +\Block{2-1}{Pierre} & 12 \\ + & 13 \\ +Jacques & 8 \\ +\Block{3-1}{Stéphanie} & 18 \\ + & 17 \\ + & 15 \\ +Amélie & 20 \\ +Henri & 14 \\ +\Block{2-1}{Estelle} & 15 \\ + & 19 +\end{NiceTabular} +\end{scope} + + \bigskip @@ -1142,7 +1251,7 @@ On a utilisé le type de colonne |S| de \pkg{siunitx}. On peut accéder aux outils de coloriage précédents avec une syntaxe proche de celle proposée par \pkg{colortbl}. On doit pour cela utiliser la clé |colortbl-like| dans l'environnement concerné.\footnote{Pour le moment, cette - clé n'est pas disponible disponible dans |\NiceMatrixOptions|.} + clé n'est pas disponible dans |\NiceMatrixOptions|.} On a alors accès aux trois commandes suivantes : \begin{itemize} @@ -1157,7 +1266,7 @@ autre commande, elle-même utilisée dans le préambule.}. \medskip \begin{Verbatim} -\begin{NiceTabular}[colortbl-like]{>{~emphase#\columncolor{blue!15}}@ccc} +\begin{NiceTabular}[colortbl-like]{*{2}{>{~emphase#\columncolor{blue!15}@}c}c} \toprule ~emphase#\rowcolor{red!15}@ Nom & Prénom & Année de naissance \\ @@ -1172,7 +1281,7 @@ Dupont & Chantal & 15 janvier 1998 \\ \begin{center} -\begin{NiceTabular}[colortbl-like]{>{\columncolor{blue!15}}ccc} +\begin{NiceTabular}[colortbl-like]{*{2}{>{\columncolor{blue!15}}c}c} \toprule \rowcolor{red!15} Nom & Prénom & Année de naissance \\ @@ -1185,6 +1294,53 @@ Dupont & Chantal & 15 janvier 1998 \\ \end{NiceTabular} \end{center} +\medskip +\emph{Remarque}\par\nobreak + +Chacune de ces instructions |\cellcolor|, |\rowcolor| ou |\columncolor| +(utilisée hors du |code-before|) produit une instruction |fill| (codée |f|) dans +le \textsc{pdf} final. En cas de juxtaposition de rectangles de même couleur, +une fine ligne blanche peut donc apparaître dans certains lecteurs de +\textsc{pdf}\footnote{Par exemple SumatraPDF v3.1.2, qui utilise MuPDF de Artifex + Software, dont le moteur de rendu \textsc{pdf} est appelé Fitz.} (entre les +deux premières colonnes dans l'exemple ci-dessus). Pour éviter cela, il convient +d'utiliser les outils proposés dans le |code-before|. C'est ce que l'on fait +dans le codage qui suit. + + +\medskip +\begin{Verbatim} +\begin{NiceTabular}[colortbl-like]{ccc}% + [code-before = ~emphase#\columncolor{blue!15}{1,2}@] +\toprule +\rowcolor{red!15} +Nom & Prénom & Année de naissance \\ +\midrule +Achard & Jacques & 5 juin 1962 \\ +Lefebvre & Mathilde & 23 mai 1988 \\ +Vanesse & Stéphanie & 30 octobre 1994 \\ +Dupont & Chantal & 15 janvier 1998 \\ +\bottomrule +\end{NiceTabular} +\end{Verbatim} + + +\begin{center} +\begin{NiceTabular}[colortbl-like]{ccc}% + [code-before = \columncolor{blue!15}{1,2}] +\toprule +\rowcolor{red!15} +Nom & Prénom & Année de naissance \\ +\midrule +Achard & Jacques & 5 juin 1962 \\ +Lefebvre & Mathilde & 23 mai 1988 \\ +Vanesse & Stéphanie & 30 octobre 1994 \\ +Dupont & Chantal & 15 janvier 1998 \\ +\bottomrule +\end{NiceTabular} +\end{center} + + \section{La largeur des colonnes} \label{width} @@ -1946,14 +2102,16 @@ b & a & b & \Ddots & & \Vdots \\ \end{pNiceMatrix}\] -\subsection{Les lignes pointillées et la clé hvlines} +\subsection{Les lignes pointillées et les filets} + +\label{dotted-and-rules} -\label{dotted-and-hvlines} +Les lignes pointillées délimitent des blocs virtuels qui ont le même +comportement vis à vis des filets que les blocs créés par |\Block| (les filets +spécifiés par le spécificateur \verb+|+ dans le préambule et par les clés +|vlines|, |hlines|, |hvlines| et |hvlines-except-corners| ne sont pas tracés +dans les blocs). -On a dit (cf. p. \pageref{hvlines}) que la clé |hvlines| trace tous les filets -horizontaux et verticaux, exceptés dans les blocs. En fait, avec cette clé, les -filets ne sont pas non plus tracés dans les blocs virtuels délimités par des -cases reliées par des lignes pointillées. \medskip \begin{BVerbatim}[baseline=c,boxwidth=10.6cm] @@ -2397,11 +2555,6 @@ $\begin{bNiceMatrix}[r] \sin x & \cos x \end{bNiceMatrix}$ -\medskip -Il existe aussi l'option |S| qui impose que toutes les colonnes soient des -colonnes |S| de \pkg{siunitx} (si cette extension est chargée).\footnote{Cela - reprend une partie des fonctionnalités proposées par les environnements - |{pmatrix*}|, |{bmatrix*}|, etc. de \pkg{mathtools}.} \subsection{La commande \textbackslash rotate} @@ -3044,54 +3197,59 @@ l'intersection du filet horizontal~$i$ et du filet vertical~$j$ avec la syntaxe \end{NiceMatrix}\] -\section{Outils pour les développeurs} +\section{API pour les développeurs} -Comme son nom l'indique, la liste de tokens |\g_nicematrix_code_after_tl| est -publique (conformément aux conventions de LaTeX3, toute variable dont le nom -débute par |\g_nicematrix| ou |\l_nicematrix| est publique alors que toute variable -dont le nom débute par |\g__nicematrix| ou par |\l__nicematrix| est privée). +L'extension \pkg{nicematrix} fournit deux variables internes mais publiques\footnote{Conformément aux conventions de LaTeX3, + toute variable dont le nom commence par |\g_nicematrix| ou |\l_nicematrix| est + publique alors que toute variable dont le nom débute par |\g__nicematrix| ou + par |\l__nicematrix| est privée.} : +\begin{itemize} +\item \colorbox{yellow!50}{\textbf{Nouveau 5.2}}\enskip |\g_nicematrix_code_before_tl| ; +\item |\g_nicematrix_code_after_tl|. +\end{itemize} \medskip -Cette variable contient le code qui constitue le «|code-after|». Le développeur -peut donc l'utiliser pour y ajouter du code à partir d'une cellule du tableau -(l'affectation devra être globale, ce qui permettra de sortir de la cellule, qui -est un groupe au sens de TeX). +Ces variables constituent le code du «|code-before|» et du «|code-after|». Le +développeur peut donc les utiliser pour y ajouter du code à partir d'une cellule +du tableau (l'affectation devra être globale, ce qui permettra de sortir de la +cellule, qui est un groupe au sens de TeX). \medskip -\emph{Exemple} : On souhaite écrire une commande |\crossbox| qui barre en croix -la cellule courante. Cette commande prendra en argument optionnel une liste de -couples \textsl{clé}-\textsl{valeur} qui sera passée à Tikz avant que la croix -ne soit tracée. - +On remarquera que l'utilisation de |\g_nicematrix_code_before_tl| nécessite une +compilation supplémentaire (car les instructions sont écrites dans le fichier +|aux| pour être utilisées à la compilation suivante). -On peut alors programmer cette commande |\crossbox| de la manière suivante, qui -utilise explicitement la variable publique |\g_nicematrix_code_after_tl|. +\bigskip +\emph{Example} : On souhaite écrire une commande |\hatchcell| pour hachurer la +cellule courante (avec un argument optionnel entre crochets pour la couleur des +hachures). Il est possible de programmer une telle commande |\hatchcell| comme +suit, en utilisant explicitement la variable publique +|\g_nicematrix_code_before_tl| (ce code nécessite le chargement préalable de la +bibliothèque Tikz \pkg{patterns}). \begin{scope} \fvset{commandchars=\§\¤\μ} \begin{Verbatim} \ExplSyntaxOn -\cs_new_protected:Nn \__pantigny_crossbox:nnn +\cs_new_protected:Nn \__pantigny_hatchcell:nnn { \begin { tikzpicture } - \draw [ #3 ] - ( row-#1 -| col-\int_eval:n { #2 + 1 } ) - -- ( row-\int_eval:n { #1 + 1 } -| col-#2 ) - ( row-#1 -| col-\int_eval:n #2 ) - -- ( row-\int_eval:n { #1 + 1 } -| col-\int_eval:n { #2 + 1 } ) ; + \fill [ pattern = north~west~lines , pattern~color = #3 ] + ( row - #1 -| col - #2) + rectangle + ( row - \int_eval:n { #1 + 1 } -| col - \int_eval:n { #2 + 1 } ) ; \end { tikzpicture } } - -\NewDocumentCommand \crossbox { ! O { } } +\NewDocumentCommand \hatchcell { ! O { black } } { - \tl_gput_right:Nx §emphase¤\g_nicematrix_code_after_tlμ + \tl_gput_right:Nx §emphase¤\g_nicematrix_code_before_tlμ { - \__pantigny_crossbox:nnn + \__pantigny_hatchcell:nnn { \int_use:c { c@iRow } } { \int_use:c { c@jCol } } - { \exp_not:n { #1 } } + { #1 } } } \ExplSyntaxOff @@ -3100,47 +3258,47 @@ utilise explicitement la variable publique |\g_nicematrix_code_after_tl|. \ExplSyntaxOn -\cs_new_protected:Nn \__pantigny_crossbox:nnn +\cs_new_protected:Nn \__pantigny_hatchcell:nnn { \begin { tikzpicture } - \draw [ #3 ] - ( row-#1 -| col-\int_eval:n { #2 + 1 } ) - -- ( row-\int_eval:n { #1 + 1 } -| col-#2 ) - ( row-#1 -| col-\int_eval:n #2 ) - -- ( row-\int_eval:n { #1 + 1 } -| col-\int_eval:n { #2 + 1 } ) ; + \fill [ pattern = north~west~lines , pattern~color = #3 ] + ( row - #1 -| col - #2) + rectangle + ( row - \int_eval:n { #1 + 1 } -| col - \int_eval:n { #2 + 1 } ) ; \end { tikzpicture } } - -\NewDocumentCommand \crossbox { ! O { } } +\NewDocumentCommand \hatchcell { ! O { black } } { - \tl_gput_right:Nx \g_nicematrix_code_after_tl + \tl_gput_right:Nx \g_nicematrix_code_before_tl { - \__pantigny_crossbox:nnn + \__pantigny_hatchcell:nnn { \int_use:c { c@iRow } } { \int_use:c { c@jCol } } - { \exp_not:n { #1 } } + { #1 } } } \ExplSyntaxOff + \bigskip -Voici un exemple d'utilisation : +Voici un exemple d'utilisation. \medskip \begin{BVerbatim}[baseline=c,boxwidth=9cm] \begin{NiceTabular}{ccc}[hvlines] -merlan & requin & cabillaud \\ -baleine & ~emphase#\crossbox[red]@ & morue \\ -mante & raie & poule +Tokyo & Paris & London \\ +Roma & ~emphase#\hatchcell[blue!30]@Oslo & Miami \\ +Los Angeles & Madrid & Roma \end{NiceTabular} \end{BVerbatim} \begin{NiceTabular}{ccc}[hvlines] -merlan & requin & cabillaud \\ -baleine & \crossbox[red] & morue \\ -mante & raie & poule +Tokyo & Paris & London \\ +Lima & \hatchcell[blue!30]Oslo & Miami \\ +Los Angeles & Madrid & Roma \end{NiceTabular} + \section{Remarques techniques} Première remarque : l'extension \pkg{nicematrix} doit être chargée après -- cgit v1.2.3