diff options
author | Karl Berry <karl@freefriends.org> | 2019-10-21 21:00:26 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2019-10-21 21:00:26 +0000 |
commit | d263e93a74555e6a866da2a9fab3d8db1180ba36 (patch) | |
tree | 2db6236fab4ffaf37721041ef8b307d7d307b87e /Master/texmf-dist | |
parent | 42afaab1a60991af8eac73ed93c18ffa38b45cc4 (diff) |
witharrows (21oct19)
git-svn-id: svn://tug.org/texlive/trunk@52478 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist')
-rw-r--r-- | Master/texmf-dist/doc/generic/witharrows/README.md | 8 | ||||
-rw-r--r-- | Master/texmf-dist/doc/generic/witharrows/witharrows-french.pdf | bin | 253675 -> 257959 bytes | |||
-rw-r--r-- | Master/texmf-dist/doc/generic/witharrows/witharrows-french.tex | 733 | ||||
-rw-r--r-- | Master/texmf-dist/doc/generic/witharrows/witharrows.pdf | bin | 577204 -> 587398 bytes | |||
-rw-r--r-- | Master/texmf-dist/doc/generic/witharrows/witharrows.tex | 154 | ||||
-rw-r--r-- | Master/texmf-dist/source/generic/witharrows/witharrows.dtx | 387 | ||||
-rw-r--r-- | Master/texmf-dist/tex/generic/witharrows/witharrows.sty | 166 |
7 files changed, 921 insertions, 527 deletions
diff --git a/Master/texmf-dist/doc/generic/witharrows/README.md b/Master/texmf-dist/doc/generic/witharrows/README.md index fa5444c5e10..a8453ea275f 100644 --- a/Master/texmf-dist/doc/generic/witharrows/README.md +++ b/Master/texmf-dist/doc/generic/witharrows/README.md @@ -1,8 +1,8 @@ # Readme for the package witharrows -Author : F. Pantigny (`fpantigny@wanadoo.fr`). +Author: F. Pantigny (`fpantigny@wanadoo.fr`). -CTAN page : `https://ctan.org/pkg/witharrows` +CTAN page: `https://ctan.org/pkg/witharrows` ## License The extension `witharrows` for TeX and LaTeX is distributed under the LPPL 1.3 license. @@ -27,6 +27,6 @@ For a manual installation: The files `witharrows.sty` and `witharrows.tex` will be generated. -The file `witharrows.sty` is the only file necessary to use the extension `witharrows` with LaTeX (with `\usepakage{witharrows}`). +The file `witharrows.sty` is the only file necessary to use the extension `witharrows` with LaTeX (with `\usepackage{witharrows}`). -The file `witharrows.tex` is the only file necessary to use the extension `witharrows` with plain-TeX (with `\input{witharrows.tex}`). +The file `witharrows.tex` is the only file necessary to use the extension `witharrows` with plain-TeX (with `\input{witharrows}`). diff --git a/Master/texmf-dist/doc/generic/witharrows/witharrows-french.pdf b/Master/texmf-dist/doc/generic/witharrows/witharrows-french.pdf Binary files differindex dfc63d2609a..5460b3fb46b 100644 --- a/Master/texmf-dist/doc/generic/witharrows/witharrows-french.pdf +++ b/Master/texmf-dist/doc/generic/witharrows/witharrows-french.pdf diff --git a/Master/texmf-dist/doc/generic/witharrows/witharrows-french.tex b/Master/texmf-dist/doc/generic/witharrows/witharrows-french.tex index 9d3f57b5b4c..1c2f8481c86 100644 --- a/Master/texmf-dist/doc/generic/witharrows/witharrows-french.tex +++ b/Master/texmf-dist/doc/generic/witharrows/witharrows-french.tex @@ -2,6 +2,7 @@ \documentclass[dvipsnames]{article}% dvipsnames est pour xcolor (chargé par Tikz) \usepackage{xltxtra} \usepackage[french]{babel} +\frenchsetup{og = « , fg = »} \usepackage[xetex]{geometry} \geometry{left=2.8cm,right=2.8cm,top=2.5cm,bottom=2.5cm,papersize={21cm,29.7cm}} @@ -17,13 +18,22 @@ \usetikzlibrary{calc} \usepackage[only,llbracket,rrbracket]{stmaryrd} +% We use \MakeShortVerb of shortvrb and not \DefineShortVrb of fancyvrb +% because we don't want the contents of short verbatim colored in gray +\usepackage{shortvrb} +\MakeShortVerb{\|} + + \usepackage{fancyvrb} \fvset{commandchars=\~\#\@,formatcom={\color{gray}}} + \usepackage{titlesec} \titlespacing*{\section}{0pt}{6.5ex plus 1ex minus .2ex}{4.3ex plus .2ex} \titlespacing*{\subsection}{0pt}{4.5ex plus 1ex minus .2ex}{2ex plus .2ex} +\usepackage{fncylab} % à supprimer en 2020 +\labelformat{equation}{(#1)} \def\interitem{\vskip 7mm plus 2 mm minus 3mm} \def\emphase{\bgroup\color{RoyalPurple}\let\next=} @@ -50,6 +60,7 @@ \begin{document} + \VerbatimFootnotes \title{L'extension \pkg{witharrows} pour plain-TeX et LaTeX\thanks{Ce document correspond à la @@ -59,8 +70,8 @@ version~\myfileversion\space de \pkg{witharrows}, à la date du~\myfiledate.}} \maketitle \begin{abstract} -L'extension \pkg{witharrows} fournit des environments \verb|{WithArrows}| et -\verb|{DispWithArrows}| similaires aux environnements \verb|{aligned}| et \verb|{align}| de +L'extension \pkg{witharrows} fournit des environments |{WithArrows}| et +|{DispWithArrows}| similaires aux environnements |{aligned}| et |{align}| de l'\pkg{amsmath} mais avec la possibilité de dessiner des flèches sur le côté droit. Ces flèches sont habituellement utilisées pour donner des explications concernant le calcul mathématique présenté. @@ -69,14 +80,14 @@ le calcul mathématique présenté. \vspace{1cm} Dans la suite, on décrira l'extension LaTeX \pkg{witharrows} (néanmoins \pkg{witharrows} peut aussi être utilisé en -plain-TeX : voir à ce sujet p.~\pageref{plain-TeX}). Cette extension peut être utilisée avec \verb|xelatex|, -\verb|lualatex|, \verb|pdflatex| mais aussi avec le cheminement classique \verb|latex|-\verb|dvips|-\verb|ps2pdf| +plain-TeX : voir à ce sujet p.~\pageref{plain-TeX}). Cette extension peut être utilisée avec |xelatex|, +|lualatex|, |pdflatex| mais aussi avec le cheminement classique |latex|-|dvips|-|ps2pdf| (ou Adobe Distiller). L'extension \pkg{witharrows} charge les extensions \pkg{expl3}, \pkg{xparse}, \pkg{tikz} ainsi que les extensions Tikz \pkg{arrows.meta} et \pkg{bending}. Les flèches sont tracées avec Tikz et donc plusieurs compilations peuvent être nécessaires. \bigskip -Cette extension fournit un environnement \verb|{WithArrows}| pour construire des alignements d'équations +Cette extension fournit un environnement |{WithArrows}| pour construire des alignements d'équations avec des flèches pour les explications sur le côté droit. \begin{Verbatim} @@ -94,24 +105,23 @@ A & = (a+1)^2 \Arrow{on développe} \\ \medskip -La flèche a été tracée avec la commande \verb|\Arrow| dans la rangée dont la flèche part. La commande \verb|\Arrow| +La flèche a été tracée avec la commande |\Arrow| dans la rangée dont la flèche part. La commande |\Arrow| doit être utilisée dans la seconde colonne (le mieux est de la mettre à la fin de la ligne comme dans l'exemple précédent). \medskip -Comme on le voit, l'environnement \verb|{WithArrows}| est proche de l'environnement -\verb|{aligned}| de l'\pkg{amsmath}. L'extension \pkg{witharrows} -propose aussi un environnement \verb|{DispWithArrows}| qui est similaire à l'environnement \verb|{align}| de -l'\pkg{amsmath}: cf. p. \pageref{DispWithArrows}. +Comme on le voit, l'environnement |{WithArrows}| est proche de l'environnement |{aligned}| de l'\pkg{amsmath}. +L'extension \pkg{witharrows} propose aussi un environnement |{DispWithArrows}| qui est similaire à l'environnement +|{align}| de l'\pkg{amsmath}: cf. p. \pageref{DispWithArrows}. \section{Options pour la forme des flèches} -La commande \verb|\Arrow| a plusieurs options. Ces options peuvent être placées entre crochets, avant, ou après, +La commande |\Arrow| a plusieurs options. Ces options peuvent être placées entre crochets, avant, ou après, l'argument obligatoire. -L'option \verb|jump| indique le nombre\footnote{Il n'est pas possible de donner une valeur négative à \verb|jump|. +L'option |jump| indique le nombre\footnote{Il n'est pas possible de donner une valeur négative à |jump|. Voir plus loin (p.~\pageref{Backwards}) la manière de tracer une flèche qui remonte.} de rangées que la flèche doit sauter (la valeur par défaut est, bien entendu,~$1$). @@ -147,8 +157,8 @@ A & = \bigl((a+b)+1\bigr)^2 \Arrow{}\Arrow{}[jump=2] \\ \end{WithArrows}$ \interitem -L'option \verb|xoffset| décale la flèche vers la droite (habituellement, on ne souhaite pas que les flèches soient -collées au texte). La valeur par défaut de \verb|xoffset| est de $3$~mm. +L'option |xoffset| décale la flèche vers la droite (habituellement, on ne souhaite pas que les flèches soient +collées au texte). La valeur par défaut de |xoffset| est de $3$~mm. \begin{Verbatim} $\begin{WithArrows} A & = \bigl((a+b)+1\bigr)^2 @@ -165,8 +175,8 @@ A & = \bigl((a+b)+1\bigr)^2 \interitem -Les flèches sont tracées avec Tikz. C'est pourquoi la commande \verb|\Arrow| a une option -\verb|tikz| qui peut être utilisée pour donner à la flèche (en fait, à la commande \verb|\path| de +Les flèches sont tracées avec Tikz. C'est pourquoi la commande |\Arrow| a une option +|tikz| qui peut être utilisée pour donner à la flèche (en fait, à la commande |\path| de Tikz) les options proposées par Tikz pour une telle flèche. L'exemple suivant fournit une flèche en trait épais. \begin{Verbatim} $\begin{WithArrows} @@ -182,7 +192,7 @@ A & = (a+1)^2 \Arrow[tikz=thick]{on développe} \\ \interitem Il est également possible de changer les pointes de flèche. Par exemple, nous pouvons tracer une flèche -qui remonte vers le haut avec l'option Tikz~\verb|<-|.\label{Backwards} +qui remonte vers le haut avec l'option Tikz~|<-|.\label{Backwards} \begin{Verbatim} $\begin{WithArrows} @@ -197,7 +207,7 @@ A & = (a+1)^2 \Arrow[tikz=<-]{on factorise} \\ \end{WithArrows}$ \interitem -Il est aussi possible de supprimer les deux pointes de flèche avec l'option Tikz «\verb|-|». +Il est aussi possible de supprimer les deux pointes de flèche avec l'option Tikz «|-|». \begin{Verbatim} $\begin{WithArrows} A & = (a+1)^2 \Arrow[~emphase#tikz=-@]{très classique} \\ @@ -212,7 +222,7 @@ A & = (a+1)^2 \Arrow[tikz=-]{très classique} \\ \interitem Pour avoir des flèches droites et non incurvées, il convient d'utiliser l'option Tikz -«\verb|bend left = 0|». +«|bend left = 0|». \begin{Verbatim} $\begin{WithArrows} A & = (a+1)^2 \Arrow~emphase#[tikz={bend left=0}]@{on développe} \\ @@ -227,12 +237,15 @@ A & = (a+1)^2 \Arrow[tikz={bend left=0}]{on développe} \\ \smallskip En fait, il est possible de modifier de manière plus drastique la forme des flèches avec l'option -\verb|tikz-code| (présentée p.~\pageref{tikz-code}). +|tikz-code| (présentée p.~\pageref{tikz-code}). \interitem -Il est possible d'utiliser l'option «\verb|text width|» pour contrôler la largeur du texte associé à la -flèche.\footnote{Il est possible d'éviter les coupures de mots dans ces étiquettes -avec l'option «\verb|align = flush left|» de Tikz.} +Il est possible d'utiliser l'option «|text width|» pour contrôler la largeur du texte associé à la +flèche.\footnote{Il est possible d'éviter les coupures de mots dans ces étiquettes: +utiliser l'option Tikz «|align = flush left|» en LaTeX et «|align = {flushleft,nothyphenated}|» en +ConTeXt.} +\newcounter{fnnohyphen} +\setcounter{fnnohyphen}{\thefootnote} % \begin{Verbatim} $\begin{WithArrows} @@ -253,16 +266,15 @@ A & = \bigl((a+b)+1\bigr)^2 \bigskip -Dans les environnements \verb|{DispWithArrows}| et \verb|{DispWithArrows*}|, il y a une -option \verb|wrap-lines|. Lorsque cette option est utilisée, les lignes des étiquettes sont +Dans les environnements |{DispWithArrows}| et |{DispWithArrows*}|, il y a une +option |wrap-lines|. Lorsque cette option est utilisée, les lignes des étiquettes sont automatiquement coupées sur la marge droite : voir p.~\pageref{wrap-lines}. \interitem -Si on veut changer la fonte du texte associé à une flèche, on peut, bien entendu, placer une commande comme -\verb|\bfseries|, \verb|\large| ou \verb|\sffamily| au début du texte. -Mais, par défaut, les étiquettes sont composées avec une combinaison -de \verb|\small| et \verb|\itshape|. En ajoutant \verb|\bfseries| au début du texte, on ne va pas supprimer le -\verb|\small| et le \verb|\itshape| et, par conséquent, on aura un texte en gras, italique et petite taille. +Si on veut changer la fonte du texte associé à une flèche, on peut, bien entendu, placer une commande comme +|\bfseries|, |\large| ou |\sffamily| au début du texte. Mais, par défaut, les étiquettes sont composées avec une +combinaison de |\small| et |\itshape|. En ajoutant |\bfseries| au début du texte, on ne va pas supprimer le +|\small| et le |\itshape| et, par conséquent, on aura un texte en gras, italique et petite taille. % \begin{Verbatim} $\begin{WithArrows} @@ -277,13 +289,13 @@ A & = (a+1)^2 \Arrow{\bfseries on développe} \\ \end{WithArrows}$ \interitem -Il est possible de placer des commandes \verb|\\| dans le texte pour forcer des retours à la ligne\footnote{Par +Il est possible de placer des commandes |\\| dans le texte pour forcer des retours à la ligne\footnote{Par défaut, ce n'est pas possible dans un nÅ“ud Tikz. Néanmoins, dans \pkg{witharrows}, -les nÅ“uds sont construits avec l'option \verb|align=left|, et, ainsi, cela devient possible.}. Néanmoins, si on utilise des commandes \verb|\\|, une instruction de fonte placée au début -du texte aura un effet seulement jusqu'à la première occurrence de~\verb|\\| (comme -dans un environnement \verb|{tabular}|). C'est pourquoi Tikz fournit une option -\verb|font| pour modifier la fonte de tout le texte de l'étiquette. Cette fois-ci, si on utilise une option -\verb|tikz={font={\bfseries}}|, la spécification par défaut constituée par \verb|\small| et \verb|\itshape| va être +les nÅ“uds sont construits avec l'option |align=left|, et, ainsi, cela devient possible.}. Néanmoins, si on utilise des commandes |\\|, une instruction de fonte placée au début +du texte aura un effet seulement jusqu'à la première occurrence de~|\\| (comme +dans un environnement |{tabular}|). C'est pourquoi Tikz fournit une option +|font| pour modifier la fonte de tout le texte de l'étiquette. Cette fois-ci, si on utilise une option +|tikz={font={\bfseries}}|, la spécification par défaut constituée par |\small| et |\itshape| va être écrasée. % \begin{Verbatim} @@ -299,16 +311,16 @@ A & = (a+1)^2 \Arrow[tikz={font={\bfseries}}]{on développe} \\ \end{WithArrows}$ \medskip -Si on veut exactement le même résultat que précédemment, on doit donner à l'option \verb|font| la valeur -\verb|\itshape\small\bfseries|. +Si on veut exactement le même résultat que précédemment, on doit donner à l'option |font| la valeur +|\itshape\small\bfseries|. \interitem -Presque toutes les options peuvent être données entre crochets à l'environnement \verb|{WithArrows}|. Il ne doit -pas y avoir d'espace entre le \verb|\begin{WithArrows}| et le crochet ouvrant (\verb|[|) des options de +Presque toutes les options peuvent être données entre crochets à l'environnement |{WithArrows}|. Il ne doit +pas y avoir d'espace entre le |\begin{WithArrows}| et le crochet ouvrant (|[|) des options de l'environnement. Ces options s'appliquent à toutes les flèches de l'environnement.\footnote{Elles s'appliquent - aussi aux environnements imbriqués dans un environnement \verb|{WithArrows}| donné (avec des exceptions attendues - pour les options \verb|interline|, \verb|code-before| et \verb|code-after|).} + aussi aux environnements imbriqués dans un environnement |{WithArrows}| donné (avec des exceptions attendues + pour les options |interline|, |code-before| et |code-after|).} % \begin{Verbatim} $\begin{WithArrows}[~emphase#tikz=blue@] @@ -326,12 +338,11 @@ A & = \bigl((a+b)+1\bigr)^2 \Arrow{premier développement} \\ \interitem -L'environnement \verb|{WithArrows}| a une option \verb|displaystyle|. Avec cette option, -tous les éléments sont composés en \verb|\displaystyle| (comme dans un environnement -\verb|{aligned}| de l'\pkg{amsmath}). +L'environnement |{WithArrows}| a une option |displaystyle|. Avec cette option, tous les éléments sont composés en +|\displaystyle| (comme dans un environnement |{aligned}| de l'\pkg{amsmath}). \medskip -Sans l'option \verb|displaystyle|: +Sans l'option |displaystyle|: % \begin{Verbatim} $\begin{WithArrows} @@ -355,7 +366,7 @@ $\begin{WithArrows} \medskip -Le même exemple avec l'option \verb|displaystyle|:\par\nobreak +Le même exemple avec l'option |displaystyle|:\par\nobreak $\begin{WithArrows}[displaystyle] \int_0^1 (x+1)^2 dx @@ -369,14 +380,14 @@ $\begin{WithArrows}[displaystyle] \interitem -Presque toutes les options peuvent aussi être fixées au niveau du document avec la commande -\verb|\WithArrowsOptions|. Dans ce cas, la portée des déclarations est le groupe TeX courant (de telles -déclarations sont parfois qualifiées de «semi-globales»). Par exemple, si nous voulons que tous les environnements -\verb|{WithArrows}| soient composés en \verb|\displaystyle| avec des flèches bleues, nous pouvons écrire -\verb|\WithArrowsOptions{displaystyle,tikz=blue}|.\footnote{Il est aussi possible de configurer \pkg{witharrows} en - modifiant le style Tikz \verb|WithArrows/arrow| qui est le style utilisé par \pkg{witharrows} lors du tracé d'une +Presque toutes les options peuvent aussi être fixées au niveau du document avec la commande |\WithArrowsOptions|. +Dans ce cas, la portée des déclarations est le groupe TeX courant (de telles déclarations sont parfois qualifiées +de «semi-globales»). Par exemple, si nous voulons que tous les environnements |{WithArrows}| soient composés en +|\displaystyle| avec des flèches bleues, nous pouvons écrire +|\WithArrowsOptions{displaystyle,tikz=blue}|.\footnote{Il est aussi possible de configurer \pkg{witharrows} en + modifiant le style Tikz |WithArrows/arrow| qui est le style utilisé par \pkg{witharrows} lors du tracé d'une flèche. Par exemple, pour avoir les étiquettes en bleu et en caractères droits, on peut utiliser l'instruction - suivante : \verb|\tikzset{WithArrows/arrow/.append style = {blue,font = {}}}|.} + suivante : |\tikzset{WithArrows/arrow/.append style = {blue,font = {}}}|.} \begin{Verbatim} ~emphase#\WithArrowsOptions{displaystyle,tikz=blue}@ @@ -398,15 +409,15 @@ $\begin{WithArrows} \interitem -La commande \verb|\Arrow| est reconnue seulement dans les environnements \verb|{WithArrows}|. Si on -dispose d'une commande \verb|\Arrow| précédemment définie, il est possible de continuer à l'utiliser à -l'extérieur des environnements \verb|{WithArrows}|. - -Néanmoins, une commande \verb|\Arrow| définie précédemment pourrait encore être utile dans un environnement \verb|{WithArrows}|. -Si vous voulez l'utiliser dans un tel environnement, il est possible de changer le nom de la commande \verb|\Arrow| de -l'extension \pkg{witharrows} grâce à une option \verb|command-name|\footnote{Pour des raisons historiques, il y a - un alias pour cette option : \verb|CommandeName|.} dédiée. Le nouveau nom de la commande doit être fourni à -l'option \emph{sans} la contre-oblique. +La commande |\Arrow| est reconnue seulement dans les environnements de \pkg{witharrows}. Si on dispose d'une +commande |\Arrow| précédemment définie, il est possible de continuer à l'utiliser à l'extérieur des environnements +de \pkg{witharrows}. + +Néanmoins, une commande |\Arrow| définie précédemment pourrait encore être utile dans un environnement +|{WithArrows}|. Si vous voulez l'utiliser dans un tel environnement, il est possible de changer le nom de la +commande |\Arrow| de l'extension \pkg{witharrows} grâce à une option |command-name|\footnote{Pour des raisons + historiques, il y a un alias pour cette option : |CommandeName|.} dédiée. Le nouveau nom de la commande doit être +fourni à l'option \emph{sans} la contre-oblique. % \begin{Verbatim} \NewDocumentCommand {\Arrow} {} {\longmapsto} @@ -428,11 +439,11 @@ f & = \bigl(x \Arrow (x+1)^2\bigr) \interitem -L'environnement \verb|{WithArrows}| fournit aussi deux options \verb|code-before| et -\verb|code-after|\footnote{Pour des raisons historiques, il y a aussi des alias pour ces options : - \verb|CodeBefore| et \verb|CodeAfter|.} pour du code LaTeX qui sera exécuté au début et à la fin de -l'environnement. Ces options ne sont pas conçues pour être utilisées comme des \emph{hooks} (elles sont disponibles -uniquement au niveau de l'environnement et ne s'appliquent pas aux environnements imbriqués). +L'environnement |{WithArrows}| fournit aussi deux options |code-before| et |code-after|\footnote{Pour des raisons + historiques, il y a aussi des alias pour ces options : |CodeBefore| et |CodeAfter|.} pour du code LaTeX qui sera +exécuté au début et à la fin de l'environnement. Ces options ne sont pas conçues pour être utilisées comme des +\emph{hooks} (elles sont disponibles uniquement au niveau de l'environnement et ne s'appliquent pas aux +environnements imbriqués). % \begin{Verbatim} $\begin{WithArrows}[~emphase#code-before = \color{blue}@] @@ -447,21 +458,21 @@ A & = (a+b)^2 \Arrow{on développe} \\ \end{WithArrows}$ \medskip -Des commandes spéciales sont disponibles dans le \verb|code-after| : une commande \verb|\WithArrowsNbLines| qui -indique le nombre de lignes (=rangées) de l'environnement courant (pour TeX, il s'agit d'une commande et non d'un -compteur), une forme spéciale de la commande \verb|\Arrow| et la commande \verb|\MultiArrow| : ces commandes sont -décrites à partir de la page~\pageref{NestedEnv}. +Des commandes spéciales sont disponibles dans le |code-after| : une commande |\WithArrowsNbLines| qui indique le +nombre de lignes (=rangées) de l'environnement courant (pour TeX, il s'agit d'une commande et non d'un compteur), +une forme spéciale de la commande |\Arrow| et la commande |\MultiArrow| : ces commandes sont décrites à partir de +la page~\pageref{NestedEnv}. \section{Nombre et formats des colonnes} -Jusqu'à présent, nous n'avons utilisé l'environnement \verb|{WithArrows}| qu'avec deux colonnes. Néanmoins, il est -possible de l'utiliser avec un nombre arbitraire de colonnes grâce à l'option \verb|format|. La valeur -donnée à cette option est similaire au préambule d'un environnement \verb|{array}|: il s'agit d'une séquence de -lettres \verb|r|, \verb|c| et \verb|l|. La valeur par défaut de cette option \verb|format| est, en fait, \verb|rl|. +Jusqu'à présent, nous n'avons utilisé l'environnement |{WithArrows}| qu'avec deux colonnes. Néanmoins, il est +possible de l'utiliser avec un nombre arbitraire de colonnes grâce à l'option |format|. La valeur donnée à cette +option est similaire au préambule d'un environnement |{array}|: il s'agit d'une séquence de lettres |r|, |c| et +|l|. La valeur par défaut de cette option |format| est, en fait, |rl|. \bigskip -Par exemple, si on veut seulement une colonne alignée à gauche, on peut utiliser l'option \verb|format=l|. +Par exemple, si on veut seulement une colonne alignée à gauche, on peut utiliser l'option |format=l|. \begin{Verbatim} $\begin{WithArrows}[~emphase#format = l@] f(x) \ge g(x) \Arrow{on élève les deux membres au carré} \\ @@ -477,8 +488,8 @@ f(x)^2 - g(x)^2 \ge 0 \end{WithArrows}$ \interitem -Dans l'exemple suivant, on utilise cinq colonnes toutes centrées (l'environnement -\verb|{DispWithArrows*}| utilisé est présenté p.~\pageref{DispWithArrows}). +Dans l'exemple suivant, on utilise cinq colonnes toutes centrées (l'environnement |{DispWithArrows*}| utilisé est +présenté p.~\pageref{DispWithArrows}). \begin{Verbatim} \begin{DispWithArrows*}[~emphase#format = ccccc@, @@ -510,11 +521,11 @@ k & \;\le\; & t & \;\le\; & k+1 \\ \section{Positionnement précis des flèches} -L'environnement \verb|{WithArrows}| construit, lors de la composition du tableau, -deux séries de nÅ“uds représentés en rouge dans l'exemple suivant.\footnote{L'option -\verb|show-nodes| peut être utilisée pour visualiser ces nÅ“uds. Les nÅ“uds sont en fait des nÅ“uds Tikz de forme -rectangulaire et de largeur nulle. Une flèche entre deux nÅ“uds part de l'ancre sud (\emph{south - anchor}) du premier nÅ“ud et arrive à l'ancre nord (\emph{north anchor}) du deuxième nÅ“ud.} +L'environnement |{WithArrows}| construit, lors de la composition du tableau, deux séries de nÅ“uds représentés en +rouge dans l'exemple suivant.\footnote{L'option |show-nodes| peut être utilisée pour visualiser ces nÅ“uds. Les + nÅ“uds sont en fait des nÅ“uds Tikz de forme rectangulaire et de largeur nulle. Une flèche entre deux nÅ“uds part de + l'ancre sud (\emph{south anchor}) du premier nÅ“ud et arrive à l'ancre nord (\emph{north anchor}) du deuxième + nÅ“ud.} \smallskip @@ -536,7 +547,7 @@ nÅ“uds du côté droit sont alignés verticalement sur le bord droit de l'aligne appelés \emph{nÅ“uds de droite}. -Par défaut, les flèches utilisent les nÅ“uds de droite. Nous dirons que ces flèches sont dans le mode \verb|rr| (\emph{r} +Par défaut, les flèches utilisent les nÅ“uds de droite. Nous dirons que ces flèches sont dans le mode |rr| (\emph{r} for \emph{right} en anglais). Ces flèches sont verticales (nous dirons qu'une flèche est \emph{verticale} lorsque ses deux extrémités sont à la même abscisse). @@ -544,8 +555,8 @@ ses deux extrémités sont à la même abscisse). \smallskip Néanmoins, il est possible d'utiliser les nÅ“uds de gauche, ou une combinaison de nÅ“uds de gauche et de droite avec -l'une des options \verb|lr|, \verb|rl| et \verb|ll| (\emph{l} for \emph{left} en anglais). Ces flèches sont, la -plupart du temps, non verticales. +l'une des options |lr|, |rl| et |ll| (\emph{l} for \emph{left} en anglais). Ces flèches sont, la plupart du temps, +non verticales. Therefore @@ -566,7 +577,7 @@ et une option \texttt{jump} fixée à $2$}\\ \interitem -Il y a aussi une option nommée \verb|i| (\emph{i} pour \emph{intermédiaire}). Avec cette option, la flèche est +Il y a aussi une option nommée |i| (\emph{i} pour \emph{intermédiaire}). Avec cette option, la flèche est verticale et calée à gauche. \begin{Verbatim} @@ -581,13 +592,13 @@ $\begin{WithArrows} $\begin{WithArrows} (a+b)(a+ib)(a-b)(a-ib) & = (a+b)(a-b)\cdot(a+ib)(a-ib) \\ -& = (a^2-b^2)(a^2+b^2) \Arrow[i]{parce que $(x-y)(x+y)=x^2-y^2$}\\ +& = (a^2-b^2)(a^2+b^2) \Arrow[i]{parce que \((x-y)(x+y)=x^2-y²\)}\\ & = a^4-b^4 \end{WithArrows}$ \interitem -L'environnement \verb|{WithArrows}| propose aussi une option \verb|group|. Avec cette option, +L'environnement |{WithArrows}| propose aussi une option |group|. Avec cette option, \emph{toutes} les flèches de l'environnement sont regroupées sur une même verticale calée à gauche. % \begin{Verbatim}[formatcom=\small\color{gray}] @@ -613,7 +624,7 @@ $\begin{WithArrows}[displaystyle,group] \bigskip -L'environnement \verb|{WithArrows}| fournit encore une autre option, nommée \verb|groups| (avec un \emph{s} dans le +L'environnement |{WithArrows}| fournit encore une autre option, nommée |groups| (avec un \emph{s} dans le nom). Avec cette option, les flèches sont divisées en plusieurs «groupes». Chaque groupe est un ensemble de flèches connectées entre elles\footnote{Plus précisément : pour chaque flèche $a$, notons $i(a)$ le numéro de sa rangée de départ et @@ -635,30 +646,30 @@ A & = B \Arrow{one} \\ \end{WithArrows}$ \bigskip -Dans un environnement qui utilise l'option \verb|group| ou l'option \verb|groups|, il est encore possible de donner -une option de position (\verb|ll|, \verb|lr|, \verb|rl|, \verb|rr| ou \verb|i|) à une flèche individuelle. Une -telle flèche sera tracée indépendamment des groupes. Il est aussi possible de commencer un nouveau groupe avec -l'option \verb|new-group| pour une certaine flèche. +Dans un environnement qui utilise l'option |group| ou l'option |groups|, il est encore possible de donner une +option de position (|ll|, |lr|, |rl|, |rr| ou |i|) à une flèche individuelle\footnote{Une telle flèche est + qualifiée d'\emph{indépendante} (\emph{independent} en anglais) dans la documentation technique.}. Une telle +flèche sera tracée indépendamment des groupes. Il est aussi possible de commencer un nouveau groupe avec l'option +|new-group| pour une certaine flèche. \bigskip -Si on le souhaite, on peut passer l'option \verb|group| ou \verb|groups| à la commande \verb|WithArrowsOptions| de -telle sorte qu'elle deviendra la valeur par défaut (jusqu'à la fin du groupe TeX). Dans ce cas, il est encore -possible de revenir au comportement par défaut pour un environnement \verb|{WithArrows}| donné avec l'option -\verb|rr|: \verb|\begin{WithArrows}[rr]|. +Si on le souhaite, on peut passer l'option |group| ou |groups| à la commande |WithArrowsOptions| de telle sorte +qu'elle deviendra la valeur par défaut (jusqu'à la fin du groupe TeX courant). Dans ce cas, il est encore possible +de revenir au comportement par défaut pour un environnement |{WithArrows}| donné avec l'option |rr|: +|\begin{WithArrows}[rr]|. \vspace{1cm} -Dans l'exemple suivant, nous avons utilisé l'option \verb|group| pour l'environnement -et l'option \verb|rr| pour la dernière flèche (c'est pourquoi cette dernière flèche n'est pas alignée avec les -premières). +Dans l'exemple suivant, nous avons utilisé l'option |groups| pour l'environnement et l'option |new-group| pour la +dernière flèche (c'est pourquoi cette dernière flèche n'est pas alignée avec les premières). -$\begin{WithArrows}[interline=1mm,group] +$\begin{WithArrows}[interline=1mm,groups] \sum\limits_{k=0}^n\frac{\cos kx}{\cos^k x} & = \sum\limits_{k=0}^n \frac{\Re (e^{ikx})}{(\cos x)^k} -\Arrow{$(\cos x)^k$ est réel} \\ +\Arrow{\((\cos x)^k\) est réel} \\ & = \sum\limits_{k=0}^n \Re\left(\frac{e^{ikx}}{(\cos x)^k}\right) -\Arrow{$\Re(z+z')=\Re(z)+\Re(z')$}\\ +\Arrow{\(\Re(z+z')=\Re(z)+\Re(z')\)}\\ & = \Re \left(\sum\limits_{k=0}^n \left(\frac{e^{ix}}{\cos x}\right)^k\right) \Arrow{somme de termes d'une suite géométrique} \\ & = \Re \left(\frac{1-\left(\frac{e^{ix}}{\cos x}\right)^{n+1}}{1-\frac{e^{ix}}{\cos x}} \right) @@ -666,9 +677,9 @@ $\begin{WithArrows}[interline=1mm,group] & = \Re \left(\frac{1-\frac{e^{i(n+1)x}}{\cos^{n+1}x}}{1-\frac{e^{ix}}{\cos x}}\right) \Arrow{réduction au même dénominateur} \\ & = \Re \left(\frac{\frac{\cos^{n+1}x-e^{i(n+1)x}}{\cos^{n+1}x}}{\frac{\cos x-e^{ix}}{\cos x}}\right) -\Arrow{$\Re(kz) = k\cdot\Re(z)$ lorsque $k$ est réel} \\ +\Arrow{\(\Re(kz) = k\cdot\Re(z)\) lorsque \(k\) est réel} \\ & = \frac1{\cos^n x}\Re \left(\frac{\cos^{n+1}x-e^{i(n+1)x}}{\cos x-e^{ix}}\right) -\Arrow[rr]{forme algébrique des nombres complexes} \\ +\Arrow[new-group]{forme algébrique des nombres complexes} \\ & =\frac1{\cos^n x}\Re\left(\frac{\cos^{n+1}x-(\cos(n+1)x+i\sin(n+1)x)}{\cos x-(\cos x+i\sin x)}\right) \\ & =\frac1{\cos^n x}\Re\left(\frac{(\cos^{n+1}x-\cos(n+1)x)-i\sin(n+1)x}{-i\sin x}\right) \\ & = \frac1{\cos^nx}\cdot\frac{\sin(n+1)x}{\sin x} @@ -679,7 +690,7 @@ $\begin{WithArrows}[interline=1mm,group] \section{Les options «up» et «down» pour des flèches individuelles} \label{up-and-down} -Au niveau local, il y a deux options pour les flèches individuelles, nommée «\verb|up|» et «\verb|down|». L'exemple +Au niveau local, il y a deux options pour les flèches individuelles, nommée «|up|» et «|down|». L'exemple suivant illustre ces types de flèches: @@ -695,34 +706,34 @@ A & = B \end{Verbatim} \vspace{1cm} -\(\begin{WithArrows} +$\begin{WithArrows} A & = B \Arrow[up]{une flèche de type \texttt{up}} \\ & = C + C + C + C + C + C + C + C \\ & = C + C + C + C + C + C + C + C \Arrow[down]{une flèche de type \texttt{down}} \\ & = E + E -\end{WithArrows}\) +\end{WithArrows}$ -\vspace{1cm} -Les options \verb|up| et \verb|down| nécessitent l'extension \pkg{varwidth} et l'extension Tikz -\pkg{calc}. Si elles ne sont pas chargées, une erreur sera levée. +\vspace{1cm} +Les options |up| et |down| nécessitent l'extension \pkg{varwidth} et l'extension Tikz \pkg{calc}. Si elles ne sont +pas chargées, une erreur sera levée. \interitem \section{Comparaison avec l'environnement \{aligned\}} -L'environnement \verb|{WithArrows}| présente des similitudes avec l'environnement \verb|{aligned}| de l'extension -\pkg{amsmath}. Ce sont seulement des similitudes car \verb|{WithArrows}| n'a pas été écrit en s'appuyant sur -\verb|{aligned}|.\footnote{En fait, il est -possible d'utiliser l'extension \pkg{witharrows} sans l'extension \pkg{amsmath}.} +L'environnement |{WithArrows}| présente des similitudes avec l'environnement |{aligned}| de l'extension +\pkg{amsmath}. Ce sont seulement des similitudes car |{WithArrows}| n'a pas été écrit en s'appuyant sur +|{aligned}|.\footnote{En fait, il est possible d'utiliser l'extension \pkg{witharrows} sans l'extension + \pkg{amsmath}.} \interitem Comme dans les environnements de l'\pkg{amsmath}, il est possible de changer l'espacement entre deux rangées avec -l'option de la commande \verb|\\| de fin de ligne (il est aussi possible d'utiliser \verb|\\*| mais cela a -exactement le même effet que \verb|\\| puisqu'un environnement \verb|{WithArrows}| est toujours insécable). Cette +l'option de la commande |\\| de fin de ligne (il est aussi possible d'utiliser |\\*| mais cela a +exactement le même effet que |\\| puisqu'un environnement |{WithArrows}| est toujours insécable). Cette option est conçu pour être utilisée avec des valeurs positives uniquement. % \begin{Verbatim} @@ -740,11 +751,11 @@ A & = (a+1)^2 \Arrow{on développe} \\*[2ex] \interitem -Dans les environnements de l'\pkg{amsmath} (ou de \pkg{mathtools}), l'espace entre deux rangées -est fixé par un paramètre appelé \verb|\jot| (il s'agit d'une dimension et non d'un ressort). C'est aussi le cas -pour l'environnement \verb|{WithArrows}|. Une option \verb|jot| a été ajoutée à l'environnement \verb|{WithArrows}| -dans le but de changer ce paramètre \verb|\jot| pour un environnement donné.\footnote{Il est aussi possible de -changer \verb|\jot| avec l'environnement \verb|{spreadlines}| de \pkg{mathtools}.} +Dans les environnements de l'\pkg{amsmath} (ou de \pkg{mathtools}), l'espace entre deux rangées est fixé par un +paramètre appelé |\jot| (il s'agit d'une dimension et non d'un ressort). C'est aussi le cas pour l'environnement +|{WithArrows}|. Une option |jot| a été ajoutée à l'environnement |{WithArrows}| dans le but de changer ce paramètre +|\jot| pour un environnement donné.\footnote{Il est aussi possible de changer |\jot| avec l'environnement + |{spreadlines}| de \pkg{mathtools}.} % \begin{Verbatim} $\begin{WithArrows}[displaystyle,~emphase#jot=2ex@] @@ -763,8 +774,8 @@ F & = \frac12G \Arrow{on développe}\\ \bigskip -Néanmoins, cette nouvelle valeur de \verb|\jot| sera aussi utilisée dans les nouveaux alignements -inclus dans l'environnement~\verb|{WithArrows}|: +Néanmoins, cette nouvelle valeur de |\jot| sera aussi utilisée dans les nouveaux alignements inclus dans +l'environnement~|{WithArrows}|: % \begin{Verbatim} $\begin{WithArrows}[jot=2ex] @@ -782,7 +793,7 @@ x+2y & = 0 $\begin{WithArrows}[jot=2ex] \varphi(x,y) = 0 & \Leftrightarrow (x+y)^2 + (x+2y)^2 = 0 -\Arrow{$x$ et $y$ sont réels}\\ +\Arrow{\(x\) et \(y\) sont réels}\\ & \Leftrightarrow \left\{ \begin{aligned} x+y & = 0 \\ @@ -792,8 +803,8 @@ x+2y & = 0 \end{WithArrows}$ \bigskip -Peut-être que cela ne correspond pas au résultat souhaité. C'est pourquoi une option -\verb|interline| est fournie. Il est possible d'utiliser un ressort (\emph{skip}) pour cette option. +Peut-être que cela ne correspond pas au résultat souhaité. C'est pourquoi une option |interline| est fournie. Il +est possible d'utiliser un ressort (\emph{skip}) pour cette option. % \begin{Verbatim} $\begin{WithArrows}[~emphase#interline=2ex@] @@ -811,7 +822,7 @@ x+2y & = 0 \\ $\begin{WithArrows}[interline=2ex] \varphi(x,y) = 0 & \Leftrightarrow (x+y)^2 + (x+2y)^2 = 0 -\Arrow{$x$ et $y$ sont réels}\\ +\Arrow{\(x\) et \(y\) sont réels}\\ & \Leftrightarrow \left\{ \begin{aligned} x+y & = 0 \\ @@ -822,10 +833,9 @@ x+2y & = 0 \\ \interitem -De même que l'environnement \verb|{aligned}|, \verb|{WithArrows}| a une option de placement qui peut prendre les valeurs -\verb|t|, \verb|c| ou \verb|b|. Néanmoins, la valeur par défaut n'est pas \verb|c| mais \verb|t|. -Si on le souhaite, il est possible d'avoir la valeur \verb|c| comme valeur par défaut -en utilisant l'instruction \verb|\WithArrowsOptions{c}| au début du document. +De même que l'environnement |{aligned}|, |{WithArrows}| a une option de placement qui peut prendre les valeurs |t|, +|c| ou |b|. Néanmoins, la valeur par défaut n'est pas |c| mais |t|. Si on le souhaite, il est possible d'avoir la +valeur |c| comme valeur par défaut en utilisant l'instruction |\WithArrowsOptions{c}| au début du document. % \begin{Verbatim} Ainsi\enskip @@ -842,7 +852,7 @@ A & = (a+1)^2 \Arrow{on développe} \\ \end{WithArrows}$ \bigskip -La valeur \verb|c| peut être utile, par exemple, si on souhaite mettre une accolade : +La valeur |c| peut être utile, par exemple, si on souhaite mettre une accolade : \smallskip \begin{Verbatim} @@ -866,16 +876,15 @@ g(x) & = 5x^2-5x+6 \interitem -Contrairement à \verb|{aligned}|, l'environnement \verb|{WithArrows}| utilise \verb|\textstyle| par -défaut. +Contrairement à |{aligned}|, l'environnement |{WithArrows}| utilise |\textstyle| par défaut. -Là aussi, il est possible de changer ce comportement avec \verb|\WithArrowsOptions|: +Là aussi, il est possible de changer ce comportement avec |\WithArrowsOptions|: \quad \verb|\WithArrowsOptions{displaystyle}|. \smallskip -L'exemple suivant est composé avec \verb|{aligned}|:\par\nobreak +L'exemple suivant est composé avec |{aligned}|:\par\nobreak \smallskip $\left\{ @@ -888,10 +897,10 @@ $\left\{ \medskip -L'exemple suivant est composé avec \verb|{WithArrows}[c,displaystyle]|. Les résultats +L'exemple suivant est composé avec |{WithArrows}[c,displaystyle]|. Les résultats sont parfaitement identiques.\footnote{Dans les versions de l'\pkg{amsmath} antérieures au -5~novembre~2016, un espace fin était ajouté sur la gauche de l'environnement \verb|{aligned}|. -Les versions plus récentes n'ajoutent pas d'espace et \verb|{WithArrows}| non plus.}\par\nobreak +5~novembre~2016, un espace fin était ajouté sur la gauche de l'environnement |{aligned}|. +Les versions plus récentes n'ajoutent pas d'espace et |{WithArrows}| non plus.}\par\nobreak \smallskip $\left\{ @@ -907,10 +916,10 @@ $\left\{ \label{NestedEnv} -Les environnements \verb|{WithArrows}| peuvent être imbriqués. Dans ce cas, les options fournies +Les environnements |{WithArrows}| peuvent être imbriqués. Dans ce cas, les options fournies à l'environnement englobant s'appliquent aussi aux environnements imbriqués (avec des -exceptions tout à fait attendues pour \verb|interline|, \verb|code-before| et \verb|code-after|). La commande -\verb|Arrow| peut être utilisée dans chaque environnement \verb|{WithArrows}|. +exceptions tout à fait attendues pour |interline|, |code-before| et |code-after|). La commande +|Arrow| peut être utilisée dans chaque environnement |{WithArrows}|. \begin{Verbatim}[formatcom=\small\color{gray}] $~emphase#\begin{WithArrows}@ @@ -969,12 +978,12 @@ $\begin{WithArrows}[code-after = \Arrow[v]{1-2}{2-2}{division par $2$} ] \bigskip -Une telle construction est possible en utilisant \verb|\Arrow| dans le \verb|code-after| : -dans le \verb|code-after|, une version spéciale de la commande \verb|\Arrow| est disponible -(nous l'appellerons «\verb|\Arrow| dans le \verb|code-after|»). +Une telle construction est possible en utilisant |\Arrow| dans le |code-after| : +dans le |code-after|, une version spéciale de la commande |\Arrow| est disponible +(nous l'appellerons «|\Arrow| dans le |code-after|»). \smallskip -Une commande \verb|\Arrow| dans le \verb|code-after| prend trois arguments : +Une commande |\Arrow| dans le |code-after| prend trois arguments : \begin{itemize} \item une spécification pour la rangée de départ de la flèche ; \item une spécification pour la rangée d'arrivée ; @@ -988,8 +997,8 @@ La spécification de rangée est construite avec la position de l'environnement imbrications, suivie, après un trait d'union, par le numéro de la rangée. \bigskip -Dans l'exemple précédent, il y a deux environnements \verb|{WithArrows}| imbriqués dans l'environnement -\verb|{WithArrows}| principal. +Dans l'exemple précédent, il y a deux environnements |{WithArrows}| imbriqués dans l'environnement +|{WithArrows}| principal. \medskip $\begin{WithArrows}[tikz-code = {\path (#1) to node {#3} (#2) ; }] @@ -1009,10 +1018,11 @@ $\begin{WithArrows}[tikz-code = {\path (#1) to node {#3} (#2) ; }] \end{WithArrows}$ \bigskip -La flèche que nous voulons tracer part de la rangée~$2$ du sous-environnement -\no $1$ (et, par conséquent, la spécification est \verb|1-2|) et arrive à la rangée~$2$ -du sous-environnement \no $2$ (et, par conséquent, la spécification est \verb|2-2|). -Nous pouvons tracer la flèche avec une commande \verb|\Arrow| dans le \verb|code-after| de la manière suivante : +La flèche que nous voulons tracer part de la rangée~$2$ du sous-environnement \no $1$ (et, par conséquent, la +spécification est |1-2|) et arrive à la rangée~$2$ du sous-environnement \no $2$ (et, par conséquent, la +spécification est |2-2|). Nous pouvons tracer la flèche avec une commande |\Arrow| dans le |code-after| de la +manière suivante : + \begin{Verbatim} $\begin{WithArrows}[~emphase#code-after = \Arrow{1-2}{2-2}{division par $2$}@ ] \varphi(x,y)=0 @@ -1038,16 +1048,16 @@ $\begin{WithArrows}[code-after = \Arrow{1-2}{2-2}{division par $2$} ] \end{WithArrows}$ \bigskip -Les options autorisées pour une commande \verb|\Arrow| dans le \verb|code-after| sont : \verb|ll|, \verb|lr|, -\verb|rl|, \verb|rr|, \verb|v|, \verb|xoffset|, \verb|tikz| et \verb|tikz-code|. Exceptée \verb|v|, qui est -spécifique à \verb|\Arrow| dans le \verb|code-after|, toutes ces options ont leur signification habituelle. +Les options autorisées pour une commande |\Arrow| dans le |code-after| sont : |ll|, |lr|, |rl|, |rr|, |v|, +|xoffset|, |tikz| et |tikz-code|. Exceptée |v|, qui est spécifique à |\Arrow| dans le |code-after|, toutes ces +options ont leur signification habituelle. -Avec l'option \verb|v|, la flèche tracée est verticale à une abscisse calculée avec +Avec l'option |v|, la flèche tracée est verticale à une abscisse calculée avec la rangée de départ et la rangée d'arrivée uniquement : les lignes intermédiaires ne sont pas prises en compte -contrairement à ce qui se passe avec l'option \verb|i|. Pour le moment, l'option \verb|i| n'est pas disponible -pour la commande~\verb|\Arrow| dans le \verb|code-after|. Néanmoins, il est toujours possible -de déplacer une flèche avec \verb|xoffset| (ou \verb|xshift| de Tikz). +contrairement à ce qui se passe avec l'option |i|. Pour le moment, l'option |i| n'est pas disponible +pour la commande~|\Arrow| dans le |code-after|. Néanmoins, il est toujours possible +de déplacer une flèche avec |xoffset| (ou |xshift| de Tikz). \begin{Verbatim} $\begin{WithArrows}[code-after=\Arrow~emphase#[v]@{1-2}{2-2}{division by $2$}] \varphi(x,y)=0 @@ -1074,10 +1084,10 @@ $\begin{WithArrows}[code-after = \Arrow[v]{1-2}{2-2}{division par $2$} ] \interitem -L'extension \pkg{witharrows} fournit une autre commande disponible dans le \verb|code-after| : la commande -\verb|\MultiArrow|. Cette commande dessine un «rateau». La liste des rangées concernées par ce rateau -est donnée dans le premier argument de la commande \verb|\MultiArrow|. La syntaxe utilisée pour décrire cette liste -est celle de la commande \verb|\foreach| de \pkg{pgffor}. +L'extension \pkg{witharrows} fournit une autre commande disponible dans le |code-after| : la commande +|\MultiArrow|. Cette commande dessine un «rateau». La liste des rangées concernées par ce rateau +est donnée dans le premier argument de la commande |\MultiArrow|. La syntaxe utilisée pour décrire cette liste +est celle de la commande |\foreach| de \pkg{pgffor}. \begin{Verbatim} $\begin{WithArrows}[tikz = rounded corners, @@ -1101,22 +1111,22 @@ A & = B \\ \end{WithArrows}$ \medskip -Pour le moment, aucune option n'est disponible pour cette commande \verb|\MultiArrow|. +Pour le moment, aucune option n'est disponible pour cette commande |\MultiArrow|. \medskip \section{Dessiner des flèches depuis l'extérieur des environnements \{WithArrows\}} -Si on désire dessiner des flèches depuis l'extérieur des environnements \verb|{WithArrows}|, il est possible de le +Si on désire dessiner des flèches depuis l'extérieur des environnements |{WithArrows}|, il est possible de le faire en utilisant les nÅ“uds Tikz créés par ces environnements. -Le nom d'un nÅ“ud Tikz crée par \pkg{witharrows} est préfixé par \verb|wa-|. Ensuite, on trouve une liste de nombres +Le nom d'un nÅ“ud Tikz crée par \pkg{witharrows} est préfixé par |wa-|. Ensuite, on trouve une liste de nombres qui indique quelle est la position de l'environnement dans l'arbre d'imbrication des environnements. À la fin, on a -le suffixe \verb|l| pour un nÅ“ud de gauche et le suffixe \verb|r| pour un nÅ“ud de droite. +le suffixe |l| pour un nÅ“ud de gauche et le suffixe |r| pour un nÅ“ud de droite. \smallskip -À titre d'illustration, nous donnons un exemple d'environnements \verb|{WithArrows}| imbriqués et, pour chaque nÅ“ud -de droite, le nom de ce nÅ“ud.\footnote{Il existe une option \verb|show-node-names| pour faire afficher les noms de +À titre d'illustration, nous donnons un exemple d'environnements |{WithArrows}| imbriqués et, pour chaque nÅ“ud +de droite, le nom de ce nÅ“ud.\footnote{Il existe une option |show-node-names| pour faire afficher les noms de ces nÅ“uds.} @@ -1154,19 +1164,19 @@ P & \vartriangleleft Q \medskip The package \pkg{witharrows} fournit quelques outils pour faciliter l'utilisation de ces nÅ“uds : \begin{itemize} -\item la commande \verb|\WithArrowsLastEnv| donne le numéro du dernier environnement de niveau~$0$ (c'est-à -dire +\item la commande |\WithArrowsLastEnv| donne le numéro du dernier environnement de niveau~$0$ (c'est-à -dire non imbriqué dans un autre environnement de \pkg{witharrows}) ; -\item un nom peut être donné à un environnement avec l'option \verb|name| et, dans ce cas, les nÅ“uds créés dans +\item un nom peut être donné à un environnement avec l'option |name| et, dans ce cas, les nÅ“uds créés dans l'environnement auront des alias construits en utilisant ce nom ; -\item le style Tikz \verb|WithArrows/arrow| est le style utilisé par \pkg{witharrows} pour dessiner une -flèche\footnote{Plus précisément, ce style est passé à Tikz via l'option «\verb|every path|» avant le dessin de la - flèche (qui se fait avec l'instruction Tikz stockée dans \verb|tikz-code|). Ce style est modifié par l'option - \verb|tikz| de \pkg{witharrows} (avec une portée correspondant au groupe TeX courant).} ; +\item le style Tikz |WithArrows/arrow| est le style utilisé par \pkg{witharrows} pour dessiner une +flèche\footnote{Plus précisément, ce style est passé à Tikz via l'option «|every path|» avant le dessin de la + flèche (qui se fait avec l'instruction Tikz stockée dans |tikz-code|). Ce style est modifié par l'option + |tikz| de \pkg{witharrows} (avec une portée correspondant au groupe TeX courant).} ; -\item le style Tikz \verb|WithArrows/arrow/tips| est le style utilisé pour la pointe de flèche (ce style est -lui-même chargé par le style \verb|WithArrows/arrow|). +\item le style Tikz |WithArrows/arrow/tips| est le style utilisé pour la pointe de flèche (ce style est +lui-même chargé par le style |WithArrows/arrow|). \end{itemize} Par exemple, nous pouvons tracer une flèche allant de \texttt{wa-\WithArrowsLastEnv-2-1-2-r.south} @@ -1217,12 +1227,12 @@ P & \vartriangleleft Q \end{tikzpicture} \medskip -Dans le cas présent, il aurait été plus facile d'utiliser une commande \verb|\Arrow| dans le \verb|code-after| mais +Dans le cas présent, il aurait été plus facile d'utiliser une commande |\Arrow| dans le |code-after| mais c'était seulement un exemple pour expliquer comment les nÅ“uds Tikz créés par \pkg{witharrows} peuvent être utilisés. \bigskip -Dans l'exemple suivant, on crée deux environnements \verb|{WithArrows}| nommés -«\verb|premier|» et «\verb|second|» et on dessine une flèche entre un nÅ“ud du premier et un nÅ“ud du second. +Dans l'exemple suivant, on crée deux environnements |{WithArrows}| nommés «|premier|» et «|second|» et on dessine +une flèche entre un nÅ“ud du premier et un nÅ“ud du second. \begin{Verbatim} $\begin{WithArrows}[~emphase#name=premier@] @@ -1266,14 +1276,13 @@ A' & = B' \\ \section{L'environnement \{DispWithArrows\}} \label{DispWithArrows} -Comme dit précédemment, l'environnement \verb|{WithArrows}| présente des similitudes avec l'environnement -\verb|{aligned}| de l'\pkg{amsmath} (et de \verb|mathtools|). L'extension \pkg{witharrows} -fournit aussi un environnement \verb|{DispWithArrows}| qui est similaire aux -environnements \verb|{align}| et \verb|{flalign}| de l'\pkg{amsmath}. +Comme dit précédemment, l'environnement |{WithArrows}| présente des similitudes avec l'environnement |{aligned}| de +l'\pkg{amsmath} (et de |mathtools|). L'extension \pkg{witharrows} fournit aussi un environnement |{DispWithArrows}| +qui est similaire aux environnements |{align}| et |{flalign}| de l'\pkg{amsmath}. \medskip -L'environnement \verb|{DispWithArrows}| doit être utilisé \emph{hors} du mode mathématique. Comme -\verb|{align}|, il doit être utilisé en mode horizontal. +L'environnement |{DispWithArrows}| doit être utilisé \emph{hors} du mode mathématique. Comme +|{align}|, il doit être utilisé en mode horizontal. \begin{Verbatim} \begin{~emphase#DispWithArrows@} A & = (a+1)^2 \Arrow{on développe} \\ @@ -1286,12 +1295,12 @@ A & = (a+1)^2 \Arrow{on développe} \\ \end{DispWithArrows} \medskip -Il est possible d'utiliser la commande \verb|\notag| (ou \verb|\nonumber|) pour supprimer un numéro d'équation. +Il est possible d'utiliser la commande |\notag| (ou |\nonumber|) pour supprimer un numéro d'équation. -Il est possible d'utiliser la commande \verb|\tag| pour placer une étiquette spéciale (par ex. $\star$). +Il est possible d'utiliser la commande |\tag| pour placer une étiquette spéciale (par ex. $\star$). Il est aussi possible de placer un label pour une ligne de l'environnement avec la commande -\verb|\label|. +|\label|. Ces commandes doivent être utilisées dans la dernière colonne de l'environnement. \begin{Verbatim} @@ -1304,15 +1313,15 @@ A & = (a+1)^2 \Arrow{on développe} ~emphase#\notag@ \\ A & = (a+1)^2 \Arrow{on développe} \notag \\ & = a^2 + 2a + 1 \tag{$\star$} \label{mon-équation} \end{DispWithArrows} -Un lien vers l'équation \eqref{mon-équation}. On a obtenu ce lien avec la commande -\verb|\eqref{mon-équation}| (la commande \verb|\eqref| est une commande de l'extension \pkg{amsmath}). +Un lien vers l'équation \ref{mon-équation}.\footnote{Dans ce document, les +références ont été personnalisées avec |\labelformat{equation}{(#1)}|} + \medskip -Si \pkg{amsmath} (ou \pkg{mathtools}) est chargée, il est toujours possible d'utiliser -\verb|\tag*| qui, comme dans l'extension\pkg{amsmath}, compose le label sans les parenthèses. -Par exemple, il est possible de l'utiliser pour mettre le symbole \verb|\square| de -\pkg{amssymb}. Ce symbole est souvent utilisé pour marquer la fin d'une démonstration.\footnote{Signalons que l'environnement \verb|{DispWithArrows}| est compatible -avec la commande \verb|\qedhere| de \pkg{amsthm}.} +Si \pkg{amsmath} (ou \pkg{mathtools}) est chargée, il est possible d'utiliser |\tag*| qui compose le label +sans les parenthèses. Par exemple, il est possible de l'utiliser pour mettre le symbole |\square| de +\pkg{amssymb}. Ce symbole est souvent utilisé pour marquer la fin d'une démonstration.\footnote{Signalons que + l'environnement |{DispWithArrows}| est compatible avec la commande |\qedhere| de \pkg{amsthm}.} \begin{Verbatim} \begin{DispWithArrows} A & = (a+1)^2 \Arrow{on développe} \notag \\ @@ -1325,12 +1334,12 @@ A & = (a+1)^2 \Arrow{on développe} \notag \\ \end{DispWithArrows} \medskip -Il est également possible de supprimer tous les numéros d'équations avec l'option booléenne \verb|notag| (ou -\verb|nonumber|), au niveau global ou bien au niveau d'un environnement. +Il est également possible de supprimer tous les numéros d'équations avec l'option booléenne |notag| (ou +|nonumber|), au niveau global ou bien au niveau d'un environnement. Enfin, il existe aussi -un environnement \verb|{DispWithArrows*}| qui supprime tous les numéros.\footnote{Même dans ce cas, il est possible -de mettre une étiquette manuellement avec la commande \verb|\tag|.} +un environnement |{DispWithArrows*}| qui supprime tous les numéros.\footnote{Même dans ce cas, il est possible +de mettre une étiquette manuellement avec la commande |\tag|.} \begin{Verbatim} \begin{~emphase#DispWithArrows*@} A & = (a+1)^2 \Arrow{on développe} \\ @@ -1343,11 +1352,11 @@ A & = (a+1)^2 \Arrow{on développe} \\ \end{DispWithArrows*} \medskip -En fait, il y a une autre option, nommée \verb|tagged-lines|, qui peut être utilisée pour contrôler quelles lignes +En fait, il y a une autre option, nommée |tagged-lines|, qui peut être utilisée pour contrôler quelles lignes seront numérotées. La valeur de cette option est la liste des numéros de lignes (dans l'environnement) qui seront numérotées (par le système de numérotage des équations). Par exemple, avec l'option -\verb|tagged-lines = {first,3,last}|, seulement la première, la troisième et la dernière lignes seront numérotées. -Il y a aussi une valeur spéciale \verb|all| qui signifie que toutes les lignes doivent être numérotées. +|tagged-lines = {first,3,last}|, seulement la première, la troisième et la dernière lignes seront numérotées. +Il y a aussi une valeur spéciale |all| qui signifie que toutes les lignes doivent être numérotées. \begin{Verbatim} \begin{DispWithArrows}[~emphase#tagged-lines = last@] A & = A_1 \Arrow{première étape} \\ @@ -1362,9 +1371,9 @@ A & = A_1 \Arrow{première étape} \\ \end{DispWithArrows} \bigskip -Avec l'option \verb|fleqn|, l'environnement est composé calé à gauche (d'une manière similaire -à l'option \verb|fleqn| des classes standard de LaTeX). Dans ce cas, la marge gauche peut être réglée avec -l'option \verb|mathindent| (qui a un nom inspiré du paramètre \verb|\mathindent| de LaTeX). La valeur par défaut +Avec l'option |fleqn|, l'environnement est composé calé à gauche (d'une manière similaire +à l'option |fleqn| des classes standard de LaTeX). Dans ce cas, la marge gauche peut être réglée avec +l'option |mathindent| (qui a un nom inspiré du paramètre |\mathindent| de LaTeX). La valeur par défaut pour cette option est de 25~pt. \begin{Verbatim} @@ -1379,29 +1388,29 @@ A & = (a+1)^2 \Arrow{on développe} \\ \end{DispWithArrows} \medskip -\emph{Remarque} : Par conception, l'option \verb|fleqn| de \pkg{witharrows} est -indépendante de l'option de classe \verb|fleqn| de LaTeX. En effet, puisque les environnement de +\emph{Remarque} : Par conception, l'option |fleqn| de \pkg{witharrows} est +indépendante de l'option de classe |fleqn| de LaTeX. En effet, puisque les environnement de \pkg{witharrows} sont conçus pour être utilisés avec des flèches sur le côté droit, l'utilisateur -peut souhaiter utiliser \pkg{witharrows} avec l'option \verb|fleqn| (de manière à avoir plus de place sur la droite +peut souhaiter utiliser \pkg{witharrows} avec l'option |fleqn| (de manière à avoir plus de place sur la droite des équations pour les flèches) tout en continuant à centrer les équations classiques. \medskip -Si l'option \verb|leqno| est utilisée comme option de classe, les labels seront composés -à gauche également pour les environnements \verb|{DispWithArrows}|.\footnote{L'extension \pkg{amsmath} a une option \verb|leqno| +Si l'option |leqno| est utilisée comme option de classe, les labels seront composés +à gauche également pour les environnements |{DispWithArrows}|.\footnote{L'extension \pkg{amsmath} a une option |leqno| mais \pkg{witharrows}, bien entendu, ne tient pas compte de cette option : \pkg{witharrows} -vérifie seulement l'option \verb|leqno| de la classe du document.} +vérifie seulement l'option |leqno| de la classe du document.} \medskip -Si l'extension \pkg{amsmath} est chargée, il est possible d'utiliser la commande \verb|\intertext| dans les -environnements \verb|{DispWithArrows}|. Il est également possible d'utiliser l'environnement \verb|{subequations}|. -Néanmoins, il existe pour les environnements \verb|{DispWithArrows}| une option \verb|subequations| qui demande -d'encapsuler l'environnement dans un environnement \verb|{subequations}|. +Si l'extension \pkg{amsmath} est chargée, il est possible d'utiliser la commande |\intertext| dans les +environnements |{DispWithArrows}|. Il est également possible d'utiliser l'environnement |{subequations}|. +Néanmoins, il existe pour les environnements |{DispWithArrows}| une option |subequations| qui demande +d'encapsuler l'environnement dans un environnement |{subequations}|. \medskip -Dans l'exemple suivant, l'option \verb|subequations| est fixée via la commande \verb|\WithArrowsOptions|. Chacun -des environnements suivants sera alors sous-numéroté (dans la portée de la commande \verb|WithArrowsOptions|). +Dans l'exemple suivant, l'option |subequations| est fixée via la commande |\WithArrowsOptions|. Chacun +des environnements suivants sera alors sous-numéroté (dans la portée de la commande |WithArrowsOptions|). \begin{Verbatim} ~emphase#\WithArrowsOptions{subequations}@ @@ -1434,8 +1443,8 @@ D & = E \\ \bigskip S'il n'y a pas suffisamment de place pour faire appraraître le numéro d'équation à la fin de la ligne, il n'y a pas de positionnement automatique de ce numéro sur la ligne suivante (comme dans les environnements de -l'\pkg{amsmath}) : il y aura surimpression de texte. Néanmoins, dans \verb|{DispWithArrows}|, l'utilisateur peut -utiliser la commande \verb|\tagnextline| pour demander manuellement la composition du numéro sur la ligne suivante. +l'\pkg{amsmath}) : il y aura surimpression de texte. Néanmoins, dans |{DispWithArrows}|, l'utilisateur peut +utiliser la commande |\tagnextline| pour demander manuellement la composition du numéro sur la ligne suivante. \begin{Verbatim} \begin{DispWithArrows}[displaystyle] S_{2(p+1)} @@ -1466,9 +1475,8 @@ S_{2(p+1)} \bigskip -Les environnements \verb|{DispWithArrows}| et \verb|{DispWithArrows*}| fournissent également une option -\verb|wrap-lines|. Avec cette option, les lignes de l'étiquette sont automatiquement coupées à droite.\footnote{Il - est possible d'éviter la coupure des mots avec l'option «\verb|align = flush left|» de Tikz.}\label{wrap-lines} +Les environnements |{DispWithArrows}| et |{DispWithArrows*}| fournissent également une option +|wrap-lines|. Avec cette option, les lignes de l'étiquette sont automatiquement coupées à droite.\footnotemark[\thefnnohyphen]\label{wrap-lines} \begin{Verbatim} \begin{DispWithArrows*}[displaystyle,~emphase#wrap-lines@] @@ -1492,21 +1500,21 @@ S_n \end{DispWithArrows*} \bigskip -L'option \verb|wrap-lines| ne s'applique pas aux environnements \verb|{WithArrows}| -imbriqués dans un environnement \verb|{DispWithArrows}| ou \verb|{DispWithArrows*}|. Néanmoins, -elle s'applique aux instructions \verb|\Arrow| et \verb|\MultiArrow| du \verb|code-after| +L'option |wrap-lines| ne s'applique pas aux environnements |{WithArrows}| +imbriqués dans un environnement |{DispWithArrows}| ou |{DispWithArrows*}|. Néanmoins, +elle s'applique aux instructions |\Arrow| et |\MultiArrow| du |code-after| de l'environnement englobant. \vspace{1cm} -Nous avons dit que les environnements \verb|{DispWithArrows}| et \verb|{DispWithArrows*}| +Nous avons dit que les environnements |{DispWithArrows}| et |{DispWithArrows*}| devaient être utilisés en mode horizontal et non en mode vertical. Il y a néanmoins -une exception. Ces environnements peuvent être utilisés directement après un \verb|\item| d'une liste +une exception. Ces environnements peuvent être utilisés directement après un |\item| d'une liste LaTeX. Dans ce cas, aucun espace vertical n'est ajouté avant l'environnement.\footnote{Il est possible de désactiver - cette fonctionnalité avec l'option \verb|standard-behaviour-with-items|.} + cette fonctionnalité avec l'option |standard-behaviour-with-items|.} \medskip -Voici un exemple où, avec \verb|{DispWithArrows}|, on peut insérer l'équation dans un environnement -\verb|{enumerate}| tout en utilisant l'option \verb|wrap-lines|. +Voici un exemple où, avec |{DispWithArrows}|, on peut insérer l'équation dans un environnement +|{enumerate}| tout en utilisant l'option |wrap-lines|. \begin{Verbatim} ~emphase#\begin{enumerate}@ @@ -1539,34 +1547,34 @@ $e^{i\frac{2\pi}n}$}\\ \end{enumerate} \vspace{1cm} -L'environnement \verb|{DispWithArrows}| est similaire à l'environnement \verb|{align}| de -l'\pkg{amsmath}. Néanmoins, \verb|{DispWithArrows}| n'est pas construit en utilisant \verb|{align}| +L'environnement |{DispWithArrows}| est similaire à l'environnement |{align}| de +l'\pkg{amsmath}. Néanmoins, |{DispWithArrows}| n'est pas construit en utilisant |{align}| (en fait, il est possible d'utiliser \pkg{witharrows} sans \pkg{amsmath}). -Il y a quelques différences entre \verb|{DispWithArrows}| et \verb|{align}|. +Il y a quelques différences entre |{DispWithArrows}| et |{align}|. \begin{itemize} -\item L'environnement \verb|{DispWithArrows}| ne peut pas être inséré dans un environment -\verb|{gather}| de l'\pkg{amsmath}. -\item Un environment \verb|{DispWithArrows}| est toujours insécable (même avec -\verb|\allowdisplaybreaks| de l'\pkg{amsmath}). -\item Les commandes \verb|\label|, \verb|\tag|, \verb|\notag| et \verb|\nonumber| ne sont autorisées +\item L'environnement |{DispWithArrows}| ne peut pas être inséré dans un environment +|{gather}| de l'\pkg{amsmath}. +\item Un environment |{DispWithArrows}| est toujours insécable (même avec +|\allowdisplaybreaks| de l'\pkg{amsmath}). +\item Les commandes |\label|, |\tag|, |\notag| et |\nonumber| ne sont autorisées que dans la dernière colonne. -\item Après un \verb|\item| d'une liste LaTeX, aucun espace vertical n'est ajouté (cela peut être -modifié avec l'option \verb|standard-behaviour-with-items|). +\item Après un |\item| d'une liste LaTeX, aucun espace vertical n'est ajouté (cela peut être +modifié avec l'option |standard-behaviour-with-items|). \item \begin{bfseries} -Enfin, par défaut, les éléments d'un environnement \verb|\{DispWithArrows\}| -sont composés en \verb|textstyle| et non en \verb|displaystyle| (il est possible de modifier -ce point avec l'option \verb|displaystyle|). +Enfin, par défaut, les éléments d'un environnement |\{DispWithArrows\}| +sont composés en |textstyle| et non en |displaystyle| (il est possible de modifier +ce point avec l'option |displaystyle|). \end{bfseries} \end{itemize} \bigskip En ce qui concerne les références, l'extension \pkg{witharrows} est compatible avec les -extensions \pkg{autonum}, \pkg{cleveref}, \pkg{fancyref}, \pkg{fncylab}, +extensions \pkg{autonum}, \pkg{cleveref}, \pkg{fancyref}, \pkg{hyperref}, \pkg{listlbls}, \pkg{prettyref}, \pkg{refcheck}, \pkg{refstyle}, \pkg{showlabels}, \pkg{smartref}, \pkg{typedref} et -\pkg{varioref} et avec les options \verb|showonlyrefs| et \verb|showmanualtags| de +\pkg{varioref} et avec les options |showonlyrefs| et |showmanualtags| de \pkg{mathtools}.\footnote{Rappelons que \pkg{varioref}, \pkg{hyperref}, \pkg{cleveref} et \pkg{autonum} doivent être chargés dans cet ordre. L'extension \pkg{witharrows} peut être chargée n'importe où.} @@ -1578,19 +1586,19 @@ Elle n'est pas compatible avec \pkg{showkeys} (certains labels ne sont pas affic \subsection*{L'option <...> de DispWithArrows} -L'environnement \verb|{DispWithArrows}| propose une option \verb|left-brace|. Si cette option est présente, son +L'environnement |{DispWithArrows}| propose une option |left-brace|. Si cette option est présente, son contenu est composé à gauche, suivi d'une accolade (d'où le nom) puis du corps de -l'environnement.\footnote{L'option \verb|left-brace| peut aussi être utilisée sans valeur: dans ce cas, seule +l'environnement.\footnote{L'option |left-brace| peut aussi être utilisée sans valeur: dans ce cas, seule l'accolade est tracée.} -Pour la lisibilité, cette option \verb|left-brace| est aussi disponible avec une syntaxe spéciale : on peut la -rentrer en la mettant entre chevrons (\verb|<| et \verb|>|) juste après le \verb|{DispWithArrows}| (et donc avant +Pour la lisibilité, cette option |left-brace| est aussi disponible avec une syntaxe spéciale : on peut la +rentrer en la mettant entre chevrons (|<| et |>|) juste après le |{DispWithArrows}| (et donc avant les éventuels arguments optionnels entre crochets). \bigskip On peut alors faire des constructions avec distinctions de cas, comme dans l'exemple -suivant.\footnote{L'environnement \verb|{cases}| de l'\pkg{amsmath} permet de réaliser de telles distinctions de - cas mais on ne peut pas utiliser la numérotation automatique des équations. L'environnement \verb|{numcases}| de +suivant.\footnote{L'environnement |{cases}| de l'\pkg{amsmath} permet de réaliser de telles distinctions de + cas mais on ne peut pas utiliser la numérotation automatique des équations. L'environnement |{numcases}| de l'extension \pkg{cases} (de Donald Arseneau) permet d'utiliser ces numéros d'équations, mais, bien entendu, il n'y a pas de composition de flèches.} @@ -1615,8 +1623,8 @@ suivant.\footnote{L'environnement \verb|{cases}| de l'\pkg{amsmath} permet de rà \end{DispWithArrows} \interitem -Dans l'exemple suivant, on sous-numérote les équations d'un système avec l'option \verb|subnumerate| (disponible -quand l'\verb|amsmath| est chargé). +Dans l'exemple suivant, on sous-numérote les équations d'un système avec l'option |subnumerate| (disponible +quand l'|amsmath| est chargé). \begin{Verbatim} \begin{DispWithArrows}~emphase#< \label{système} (\ref*{système}) \Leftrightarrow >@% @@ -1635,14 +1643,14 @@ xyz = -15 \label{dernière-équation} \end{DispWithArrows} \bigskip -Le système complet est l'équation \eqref{système} (cette référence a été obtenue avec \verb|\eqref{système}|) et la -dernière équation est l'équation \eqref{dernière-équation} (référence obtenue avec -\verb|\eqref{dernière-équation}|). Notons que \verb|\ref*|, utilisé dans le code ci-dessus, est une variante de -\verb|ref| proposée par \pkg{hyperref} pour composer une référence sans créer de lien. +Le système complet est l'équation \ref{système} (cette référence a été obtenue avec |\ref{système}|) et la +dernière équation est l'équation \ref{dernière-équation} (référence obtenue avec +|\ref{dernière-équation}|). Notons que |\ref*|, utilisé dans le code ci-dessus, est une variante de +|ref| proposée par \pkg{hyperref} pour composer une référence sans créer de lien. \bigskip On peut souhaiter remplacer l'accolade gauche par un autre délimiteur extensible (gauche). On peut le faire avec -l'option \verb|replace-left-brace-by|. Par exemple «\verb|replace-left-brace-by = [\enskip|» va composer avec un +l'option |replace-left-brace-by|. Par exemple «|replace-left-brace-by = [\enskip|» va composer avec un crochet et ajouter aussi un espace de 1~em après le crochet. \bigskip @@ -1652,7 +1660,7 @@ crochet et ajouter aussi un espace de 1~em après le crochet. \label{plain-TeX} L'extension \pkg{witharrows} peut être utilisée avec plain-TeX. Pour cela, on doit charger l'extension avec -\verb|\input|: +|\input|: % \begin{Verbatim} \input{witharrows.tex} @@ -1661,9 +1669,9 @@ L'extension \pkg{witharrows} peut être utilisée avec plain-TeX. Pour cela, on \medskip En plain-TeX, il n'y a pas d'environnements comme dans LaTeX. -Au lieu de \verb|\begin{WithArrows}| et \verb|\end{WithArrows}| comme en LaTeX, on doit utiliser un -pseudo-environnement délimité par \verb|\Witharrows| et \verb|\endWithArrows| (de même pour -\verb|{DispWithArrows}|). +Au lieu de |\begin{WithArrows}| et |\end{WithArrows}| comme en LaTeX, on doit utiliser un +pseudo-environnement délimité par |\Witharrows| et |\endWithArrows| (de même pour +|{DispWithArrows}|). % \begin{Verbatim} $\WithArrows @@ -1681,27 +1689,27 @@ reposent sur le système de numérotation de LaTeX). \label{tikz-code} -L'option \verb|tikz-code|\footnote{Pour des raisons historiques, l'option \verb|tikz-code| a un alias : - \verb|TikzCode|.} permet à l'utilisateur de changer la forme des flèches.\footnote{Si l'option \verb|wrap-lines| - est utilisée dans un environnement \verb|{DispWithArrows}| ou \verb|{DispWithArrows*}|, l'option \verb|tikz-code| +L'option |tikz-code|\footnote{Pour des raisons historiques, l'option |tikz-code| a un alias : + |TikzCode|.} permet à l'utilisateur de changer la forme des flèches.\footnote{Si l'option |wrap-lines| + est utilisée dans un environnement |{DispWithArrows}| ou |{DispWithArrows*}|, l'option |tikz-code| n'aura pas d'effet sur les flèches de cet environnement mais uniquement sur les flèches des environnements - \verb|{WithArrows}| imbriqués.} + |{WithArrows}| imbriqués.} \smallskip -Par exemple, les options «\verb|up|» et «\verb|down|» décrites précédemment (cf. -p.~\pageref{up-and-down}) sont programmées en interne avec \verb|tikz-code|. +Par exemple, les options «|up|» et «|down|» décrites précédemment (cf. +p.~\pageref{up-and-down}) sont programmées en interne avec |tikz-code|. \smallskip La valeur de cette option doit être une instruction de tracé Tikz valide (avec le point-virgule final) où les trois -marqueurs \verb|#1|, \verb|#2| et \verb|#3| représentent le point de départ, le point d'arrivée et l'étiquette de +marqueurs |#1|, |#2| et |#3| représentent le point de départ, le point d'arrivée et l'étiquette de la flèche. \bigskip -Par défaut, la valeur de \verb|tikz-code| est la suivante : +Par défaut, la valeur de |tikz-code| est la suivante : \smallskip -\qquad \verb|\draw (#1) to node {#3} (#2) ;| +\qquad |\draw (#1) to node {#3} (#2) ;| \bigskip @@ -1748,8 +1756,8 @@ nÅ“ud recouvrant le deuxième segment). \end{WithArrows}\] \bigskip -L'environnement \verb|{DispWithArrows}| et sa version étoilée \verb|{DispWithArrows*}| fournissent une commande -\verb|\WithArrowsRightX| qui peut être utilisée dans l'option \verb|tikz-code|. Cette commande fournit +L'environnement |{DispWithArrows}| et sa version étoilée |{DispWithArrows*}| fournissent une commande +|\WithArrowsRightX| qui peut être utilisée dans l'option |tikz-code|. Cette commande fournit l'abscisse de la marge droite de la boîte de composition courante (en prenant en compte les éventuels numéros des équations). Pour un exemple d'utilisation, voir p.~\pageref{example-WithArrowsRightX}. @@ -1757,15 +1765,15 @@ l'abscisse de la marge droite de la boîte de composition courante (en prenant e \bigskip \subsection{La commande \textbackslash WithArrowsNewStyle} -L'extension \pkg{witharrows} fournit une commande \verb|\WithArrowsNewStyle| pour définir +L'extension \pkg{witharrows} fournit une commande |\WithArrowsNewStyle| pour définir des styles d'une manière similaire aux «styles» de Tikz. -La commande \verb|\WithArrowsNewStyle| prend deux arguments obligatoires. Le premier est +La commande |\WithArrowsNewStyle| prend deux arguments obligatoires. Le premier est le nom du style et le second est une liste de couples clé-valeur. La portée -de la definition ainsi faite par \verb|\WithArrowsNewStyle| est le groupe TeX courant. +de la definition ainsi faite par |\WithArrowsNewStyle| est le groupe TeX courant. -Le style peut être utilisé comme une clé au niveau du document (avec \verb|\WithArrowsOptions|), au niveau d'un -environnement (via les arguments optionnels) ou bien encore dans une autre commande \verb|\WithArrowsNewStyle|. +Le style peut être utilisé comme une clé au niveau du document (avec |\WithArrowsOptions|), au niveau d'un +environnement (via les arguments optionnels) ou bien encore dans une autre commande |\WithArrowsNewStyle|. Pour un exemple d'utilisation, voir p.~\pageref{example-WithArrowsRightX}. @@ -1774,15 +1782,15 @@ Pour un exemple d'utilisation, voir p.~\pageref{example-WithArrowsRightX}. \subsection{Positionnement vertical des flèches} Il y a quatre paramètres pour ajuster finement la position verticale des flèches : -\verb|ygap|, \verb|ystart|, \verb|start-adjust| et \verb|end-adjust|. +|ygap|, |ystart|, |start-adjust| et |end-adjust|. \medskip -Nous expliquons d'abord le comportement quand les paramètres \verb|start-adjust| et \verb|end-adjust| sont égaux à +Nous expliquons d'abord le comportement quand les paramètres |start-adjust| et |end-adjust| sont égaux à zéro: \begin{itemize} -\item l'option \verb|ystart| représente la distance verticale entre la ligne de base du +\item l'option |ystart| représente la distance verticale entre la ligne de base du texte et le début de la flèche (valeur par défaut : $0.4$~ex); -\item l'option \verb|ygap| représente la distance verticale entre deux flèches consécutives +\item l'option |ygap| représente la distance verticale entre deux flèches consécutives (valeur par défaut : $0.4$~ex). \end{itemize} @@ -1811,13 +1819,13 @@ $\begin{WithArrows}[interline=1mm, adjust = 0pt] \interitem Néanmoins, pour des raisons esthétiques, quand il est possible, \pkg{witharrows} commence -la flèche un peu plus haut (d'une quantité \verb|start-adjust|) et termine la flèche un peu plus -bas (par une quantité \verb|end-adjust|). Par défaut, ces deux paramètres \verb|start-adjust| -est \verb|end-adjust| sont égaux à $0.4$~ex. +la flèche un peu plus haut (d'une quantité |start-adjust|) et termine la flèche un peu plus +bas (par une quantité |end-adjust|). Par défaut, ces deux paramètres |start-adjust| +est |end-adjust| sont égaux à $0.4$~ex. \bigskip -Voici par exemple le comportement sans le mécanisme de \verb|start-adjust| et -\verb|end-adjust| (c'était le comportement par défaut dans les versions antérieures à la version 1.13). +Voici par exemple le comportement sans le mécanisme de |start-adjust| et +|end-adjust| (c'était le comportement par défaut dans les versions antérieures à la version 1.13). \begin{Verbatim} $\begin{WithArrows}~emphase#[start-adjust=0pt, end-adjust=0pt]@ A & = (a+1)^2 \Arrow{on développe} \\ @@ -1833,7 +1841,7 @@ A & = (a+1)^2 \Arrow{on développe} \\ \bigskip Voici le comportement par défaut depuis la version 1.13 (les paramètres -\verb|start-adjust| et \verb|end-ajust| sont utilisés avec la valeur par défaut $0.4$~ex). La flèche +|start-adjust| et |end-ajust| sont utilisés avec la valeur par défaut $0.4$~ex). La flèche est plus longue et le résultat est plus esthétique. \medskip @@ -1844,34 +1852,97 @@ A & = (a+1)^2 \Arrow{on développe} \\ \bigskip -Il est possible d'utiliser l'option \verb|adjust| qui fixe à la fois \verb|start-adjust| et \verb|end-ajust|. +Il est possible d'utiliser l'option |adjust| qui fixe à la fois |start-adjust| et |end-ajust|. \bigskip -Puisque le mécanisme de \verb|start-adjust| et \verb|end-ajust| a été ajouté dans la +Puisque le mécanisme de |start-adjust| et |end-ajust| a été ajouté dans la version 1.13 of \pkg{witharrows}, cette version n'est pas strictement compatible avec les versions précédentes. Néanmoins, il est possible de retrouver le comportement précédent -en fixant simplement \verb|start-adjust| et \verb|end-adjust| à $0$~pt: +en fixant simplement |start-adjust| et |end-adjust| à $0$~pt: \begin{Verbatim} \WithArrowsOptions{adjust = 0pt} \end{Verbatim} \bigskip +Depuis la version 2.1 de \pkg{witharrows}, une flèche de |jump| égal à ~$1$ a une longueur\footnote{On appelle + \emph{longueur} de la flèche la différence entre l'ordonnée du point de départ et l'ordonnée du point d'arrivée.} +maximale égale au paramètre |max-length-of-arrow|. La valeur par défaut de ce paramètre est égale à ~$2$~cm. + +Dans l'exemple suivant, la valeur de |max-length-of-arrow| a été fixée à $1.5$~cm. +\begin{Verbatim} +\[\begin{WithArrows}[~emphase#max-length-of-arrow = 1.5cm@] +A +& = +\begin{vmatrix} +1 & a & a^2 & a^3 & a^4 \\ +1 & b & b^2 & b^3 & b^4 \\ +1 & c & c^2 & c^3 & c^4 \\ +1 & d & d^2 & d^3 & d^4 \\ +1 & e & e^2 & e^3 & e^4 +\end{vmatrix} +\Arrow{ +$L_2 \gets L_2-L_1$ \\ +$L_3 \gets L_3-L_1$ \\ +$L_4 \gets L_4-L_1$ \\ +$L_5 \gets L_5-L_1$ % ne pas mettre de \\ ici +} \\ +& = +\begin{vmatrix} +1 & a & a^2 & a^3 & a^4 \\ +0 & b-a & b^2-a^2 & b^3-a^3 & b^4-a^4 \\ +0 & c-a & c^2-a^2 & c^3-a^3 & c^4-a^4 \\ +0 & d-a & d^2-a^2 & d^3-a^3 & d^4-a^4 \\ +0 & e-a & e^2-a^2 & e^3-a^3 & e^4-a^4 +\end{vmatrix} +\end{WithArrows}\] +\end{Verbatim} + + +\bigskip +\[\begin{WithArrows}[max-length-of-arrow = 1.5cm] +A +& = +\begin{vmatrix} +1 & a & a^2 & a^3 & a^4 \\ +1 & b & b^2 & b^3 & b^4 \\ +1 & c & c^2 & c^3 & c^4 \\ +1 & d & d^2 & d^3 & d^4 \\ +1 & e & e^2 & e^3 & e^4 +\end{vmatrix} +\Arrow{ +$L_2 \gets L_2-L_1$ \\ +$L_3 \gets L_3-L_1$ \\ +$L_4 \gets L_4-L_1$ \\ +$L_5 \gets L_5-L_1$ +} \\ +& = +\begin{vmatrix} +1 & a & a^2 & a^3 & a^4 \\ +0 & b-a & b^2-a^2 & b^3-a^3 & b^4-a^4 \\ +0 & c-a & c^2-a^2 & c^3-a^3 & c^4-a^4 \\ +0 & d-a & d^2-a^2 & d^3-a^3 & d^4-a^4 \\ +0 & e-a & e^2-a^2 & e^3-a^3 & e^4-a^4 +\end{vmatrix} +\end{WithArrows}\] + + +\bigskip \subsection{Notes de pied de page dans les environnements de witharrows} Si vous voulez mettre des notes de pied de page dans un environnement de \pkg{witharrows}, -vous pouvez utiliser une paire \verb|\footnotemark|--\verb|\footnotetext|. +vous pouvez utiliser une paire |\footnotemark|--|\footnotetext|. \smallskip Il est aussi possible d'extraire les notes de pieds de page avec l'extension \pkg{footnote} ou bien l'extension \pkg{footnotehyper}. \smallskip -Si \pkg{witharrows} est chargée avec l'option \verb|footnote| (avec \verb|\usepackage[footnote]{witharrows}| ou -avec \verb|\PassOptionsToPackage|), l'extension \pkg{footnote} est chargée (si elle ne l'est pas déjà ) et elle est +Si \pkg{witharrows} est chargée avec l'option |footnote| (avec |\usepackage[footnote]{witharrows}| 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{witharrows} est chargée avec l'option \verb|footnotehyper|, l'extension \pkg{footnotehyper} est chargée (si +Si \pkg{witharrows} 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 @@ -1882,7 +1953,7 @@ en particulier, elle doit être chargée après l'extension \pkg{xcolor} et elle compatible avec \pkg{hyperref}. \medskip -Dans ce document, l'extension \pkg{witharrows} a été chargée avec l'option \verb|footnotehyper| et nous donnons un +Dans ce document, l'extension \pkg{witharrows} a été chargée avec l'option |footnotehyper| et nous donnons un exemple avec une note de pied de page dans l'étiquette d'une flèche : @@ -1896,7 +1967,7 @@ A & = (a+b)^2 \bigskip \subsection{L'option no-arrows} -L'option \verb|no-arrows| est une facilité donnée à l'utilisateur. Avec cette option, +L'option |no-arrows| est une facilité donnée à l'utilisateur. Avec cette option, les flèches ne sont pas tracées. Néanmoins, une analyse des flèches est effectuée et certaines erreurs sont détectées (par exemple, si une flèche arrive après la dernière ligne de l'environnement). @@ -1906,28 +1977,28 @@ détectées (par exemple, si une flèche arrive après la dernière ligne de l'e Si vous définissez un environnement s'appuyant sur un environnement de \pkg{witharrows}, nous recommandons de faire appel à l'environnement de \pkg{witharrows} avec -\verb|\WithArrows|--\verb|\endWithArrows| ou \verb|\DispWithArrows|--\verb|\endDispWithArrows| (et -non \verb|\begin{WithArrows}|--\verb|\end{WithArrows}|, etc.). +|\WithArrows|--|\endWithArrows| ou |\DispWithArrows|--|\endDispWithArrows| (et +non |\begin{WithArrows}|--|\end{WithArrows}|, etc.). \smallskip En faisant ainsi, les messages d'erreur affichés par \pkg{witharrows} mentionneront (le cas échéant) le nom de votre environnement et seront plus faciles à comprendre pour l'utilisateur final. \smallskip -Par exemple, vous pouvez définir un environnement \verb|{DWA}| qui va être un alias de \verb|{DispWithArrows}|: +Par exemple, vous pouvez définir un environnement |{DWA}| qui va être un alias de |{DispWithArrows}|: \begin{BVerbatim} \NewDocumentEnvironment {DWA} {} {\DispWithArrows}{\endDispWithArrows} \end{BVerbatim} \smallskip -Si vous utilisez cet environnement \verb|{DWA}| en mode mathématique, vous aurez le message d'erreur suivant : +Si vous utilisez cet environnement |{DWA}| en mode mathématique, vous aurez le message d'erreur suivant : \begin{BVerbatim} L'environnement {DWA} should be used only outside math mode. \end{BVerbatim} \interitem -Une autre exemple est donné en interne par la définition de l'environnement \verb|{DispWithArrows*}| +Une autre exemple est donné en interne par la définition de l'environnement |{DispWithArrows*}| dans l'extension \pkg{witharrows} avec le code suivant: \begin{Verbatim} \NewDocumentEnvironment {DispWithArrows*} {} @@ -1942,9 +2013,9 @@ dans l'extension \pkg{witharrows} avec le code suivant: \subsection{\textbackslash MoveEqLeft} -Il est possible d'utiliser \verb|\MoveEqLeft| de \pkg{mathtools}. Dans ce cas, on doit se souvenir que la commande -\verb|\MoveEqLeft| a aussi la valeur d'une esperluette (\verb|&|). Il faut en tenir compte pour le positionnement -d'une éventuelle commande \verb|\Arrow|. +Il est possible d'utiliser |\MoveEqLeft| de \pkg{mathtools}. Dans ce cas, on doit se souvenir que la commande +|\MoveEqLeft| a aussi la valeur d'une esperluette (|&|). Il faut en tenir compte pour le positionnement +d'une éventuelle commande |\Arrow|. % @@ -1964,10 +2035,10 @@ $\begin{WithArrows}[interline=0.5ex] \medskip $\begin{WithArrows}[interline=0.5ex] \MoveEqLeft \arccos(x) = \arcsin \frac45 + \arcsin \frac5{13} -\Arrow{parce que les deux sont dans $[-\frac{\pi}2,\frac{\pi}2]$} \\ +\Arrow{parce que les deux sont dans \([-\frac{\pi}2,\frac{\pi}2]\)} \\ & \Leftrightarrow x = \sin\left(\arcsin\frac45 + \arcsin\frac5{13}\right) \\ & \Leftrightarrow x = \frac45\cos\arcsin\frac5{13} + \frac5{13} \cos\arcsin\frac45 -\Arrow{$\forall x \in [-1,1], \cos(\arcsin x) = \sqrt{1-x^2}$} \\ +\Arrow{\(\forall x \in [-1,1], \cos(\arcsin x) = \sqrt{1-x^2}\)} \\ & \Leftrightarrow x = \frac45\sqrt{1-\bigl(\frac5{13}\bigr)^2} + \frac5{13}\sqrt{1-\bigl(\frac45\bigr)^2} \end{WithArrows}$ @@ -1977,7 +2048,7 @@ $\begin{WithArrows}[interline=0.5ex] \subsection{Modifier la forme des nÅ“uds} Il est possible de changer la forme des étiquettes, qui sont des nÅ“uds Tikz, en -modifiant la clé «\verb|every node|» de Tikz. +modifiant la clé «|every node|» de Tikz. \begin{Verbatim} \begin{WithArrows}% @@ -2015,22 +2086,22 @@ modifiant la clé «\verb|every node|» de Tikz. \bigskip \subsection{Exemples avec l'option tikz-code} -Rappelons que l'option \verb|tikz-code| est le code Tikz utilisé par \pkg{witharrows} -pour tracer les flèches.\footnote{Si un environnement \verb|{DispWithArrows}| ou -\verb|{DispWithArrows*}| est utilisé avec l'option \verb|wrap-lines|, la valeur de l'option -\verb|tikz-code| n'est pas utilisée pour cet environnement (mais est utilisée pour les +Rappelons que l'option |tikz-code| est le code Tikz utilisé par \pkg{witharrows} +pour tracer les flèches.\footnote{Si un environnement |{DispWithArrows}| ou +|{DispWithArrows*}| est utilisé avec l'option |wrap-lines|, la valeur de l'option +|tikz-code| n'est pas utilisée pour cet environnement (mais est utilisée pour les environnements imbriqués à l'intérieur).} \smallskip -La valeur par défaut de \verb|tikz-code| est \verb|\draw (#1) to node {#3} (#2) ;| -où les trois marqueurs \verb|#1|, \verb|#2| et \verb|#3| représentent le point de départ, le point d'arrivée +La valeur par défaut de |tikz-code| est |\draw (#1) to node {#3} (#2) ;| +où les trois marqueurs |#1|, |#2| et |#3| représentent le point de départ, le point d'arrivée et l'étiquette de la flèche. \bigskip \subsubsection{Exemple 1} -Dans l'exemple suivant, nous définissons la valeur de \verb|tikz-code| avec deux -instructions \verb|\path| : la première instruction trace la flèche elle-même et la seconde +Dans l'exemple suivant, nous définissons la valeur de |tikz-code| avec deux +instructions |\path| : la première instruction trace la flèche elle-même et la seconde place l'étiquette dans un nÅ“ud Tikz dans le rectangle délimité par la flèche. \begin{Verbatim} @@ -2038,7 +2109,7 @@ place l'étiquette dans un nÅ“ud Tikz dans le rectangle délimité par la flèch [displaystyle, ygap = 2mm, ystart = 0mm, - ~emphase#tikz-code = {\draw (~#1) -- ++(4.5cm,0) \verb|- (~#2) ;@ + ~emphase#tikz-code = {\draw (~#1) -- ++(4.5cm,0) |- (~#2) ;@ ~emphase# \path (~#1) -- (~#2) @ ~emphase# node[text width = 4.2cm, right, midway] {~#3} ;}@] S_n @@ -2072,10 +2143,10 @@ S_n \subsubsection{Exemple 2} \label{example-WithArrowsRightX} -Il est possible de modifier l'exemple précédent pour avoir «\verb|text width|» calculé automatiquement en fonction -de la marge droite (d'une manière similaire à l'option \verb|wrap-lines|) dans les environnements -\verb|{DispWithArrows}| et \verb|{DispWithArrows*}|. Dans la définition de \verb|tikz-code|, nous utilisons la commande -\verb|\WithArrowsRightX| qui donne l'abscisse de la marge droite de la boîte de composition (pour TeX, il s'agit d'une commande +Il est possible de modifier l'exemple précédent pour avoir «|text width|» calculé automatiquement en fonction +de la marge droite (d'une manière similaire à l'option |wrap-lines|) dans les environnements +|{DispWithArrows}| et |{DispWithArrows*}|. Dans la définition de |tikz-code|, nous utilisons la commande +|\WithArrowsRightX| qui donne l'abscisse de la marge droite de la boîte de composition (pour TeX, il s'agit d'une commande et non d'une dimension). Pour la lisibilité, nous avons utilisé un style de \pkg{witharrows}. Cet exemple nécessite l'extension Tikz \pkg{calc}. @@ -2199,9 +2270,9 @@ E & \Longleftrightarrow \frac{(x+4)}3 + \frac{5x+3}5 = 7 \subsection{Boucle numérotée automatique} Supposons que nous voulions tracer une boucle avec des flèches numérotées. Dans ce but, il est -possible d'écrire une commande dédiée \verb|\BoucleNumérotée| qui fera le travail quand elle -sera utilisée dans le \verb|code-after|. Dans l'exemple suivant, nous avons écrit cette commande avec -\verb|\NewDocumentCommand| de \pkg{xparse} et \verb|\foreach| de \pkg{pgffor} (ces deux +possible d'écrire une commande dédiée |\BoucleNumérotée| qui fera le travail quand elle +sera utilisée dans le |code-after|. Dans l'exemple suivant, nous avons écrit cette commande avec +|\NewDocumentCommand| de \pkg{xparse} et |\foreach| de \pkg{pgffor} (ces deux extensions sont chargées quand \pkg{witharrows} est chargé.). \begin{Verbatim} @@ -2212,7 +2283,7 @@ extensions sont chargées quand \pkg{witharrows} est chargé.). \Arrow[rr,xoffset=1cm,tikz=<-]{1}{\WithArrowsNbLines}{\WithArrowsNbLines}} \end{Verbatim} -La commande \verb|\WithArrowsNbLines| est une commande disponible dans le \verb|code-after| qui donne +La commande |\WithArrowsNbLines| est une commande disponible dans le |code-after| qui donne le nombre total de lignes (=rangées) dans l'environnement courant (pour TeX, il s'agit d'une commande et non d'un compteur). @@ -2248,9 +2319,9 @@ e.\;& f \text{ est lipschitzienne} \bigskip Comme d'habitude, il est possible changer les caractéristiques des flèches et des nÅ“uds -avec l'option \verb|tikz|. Néanmoins, si nous voulons changer le style pour avoir, par +avec l'option |tikz|. Néanmoins, si nous voulons changer le style pour avoir, par exemple, les numéros entre parenthèses, le moyen le plus rapide est de changer la valeur de -\verb|tikz-code|: +|tikz-code|: \begin{Verbatim} tikz-code = {\draw (~#1) to node {\footnotesize (~#3)} (~#2) ;} diff --git a/Master/texmf-dist/doc/generic/witharrows/witharrows.pdf b/Master/texmf-dist/doc/generic/witharrows/witharrows.pdf Binary files differindex 2ee53b5af7b..425dab200f4 100644 --- a/Master/texmf-dist/doc/generic/witharrows/witharrows.pdf +++ b/Master/texmf-dist/doc/generic/witharrows/witharrows.pdf diff --git a/Master/texmf-dist/doc/generic/witharrows/witharrows.tex b/Master/texmf-dist/doc/generic/witharrows/witharrows.tex index 6645d33f387..ba5fbf92d1c 100644 --- a/Master/texmf-dist/doc/generic/witharrows/witharrows.tex +++ b/Master/texmf-dist/doc/generic/witharrows/witharrows.tex @@ -18,8 +18,8 @@ %% and version 1.3 or later is part of all distributions of %% LaTeX version 2005/12/01 or later. %% -\def\myfileversion{2.0} -\def\myfiledate{2019/07/30} +\def\myfileversion{2.1} +\def\myfiledate{2019/10/21} \input tikz.tex \input expl3-generic.tex \usetikzlibrary{arrows.meta,bending} @@ -30,7 +30,7 @@ \cs_new_protected:Npn \__wa_msg_redirect_name:nn { \msg_redirect_name:nnn { witharrows } } \cs_new_protected:Npn \__wa_error:n { \msg_error:nn { witharrows } } -\cs_new_protected:Npn \__wa_warning:n { \msg_error:nn { witharrows } } +\cs_new_protected:Npn \__wa_warning:n { \msg_warning:nn { witharrows } } \cs_new_protected:Npn \__wa_fatal:n { \msg_fatal:nn { witharrows } } \cs_new_protected:Npn \__wa_error:nn { \msg_error:nnn { witharrows } } \cs_generate_variant:Nn \__wa_error:nn { n x } @@ -55,7 +55,7 @@ } { \cs_new_protected:Npn \__wa_strcmp:nn #1 #2 - { \pdftex_strcmp:D { #1 } { #2 } } + { \tex_strcmp:D { #1 } { #2 } } } \cs_new_protected:Npn \__wa_sort_seq:N #1 { @@ -195,6 +195,9 @@ { \__wa_eval_if_allowed:n { \int_set:Nn \l__wa_pos_arrow_int { #1 } } } \keys_define:nn { WithArrows / Global } { + max-length-of-arrow .dim_set:N = \l__wa_max_length_of_arrow_dim , + max-length-of-arrow .value_required:n = true , + max-length-of-arrow .initial:n = 2 cm , ygap .dim_set:N = \l__wa_ygap_dim , ygap .value_required:n = true , ygap .initial:n = 0.4 ex , @@ -360,7 +363,7 @@ displaystyle, end-adjust, format, group, groups, i, interline, jot, ll, - lr, more-columns, name, + lr, max-length-of-arrow, more-columns, name, no-arrows, rl, rr, show-node-names, show-nodes, start-adjust, t, tikz, tikz-code, @@ -385,9 +388,9 @@ { code-after, code-before, command-name, tikz-code, adjust, displaystyle, end-adjust, fleqn, group, format, groups, i, interline, jot, - left-brace, ll, lr, mathindent, name, no-arrows, replace-left-brace-by, rl, - rr, show-node-names, show-nodes, start-adjust, tikz, wrap-lines, xoffset, - ygap, ystart, + left-brace, ll, lr, max-length-of-arrow, mathindent, name, no-arrows, + replace-left-brace-by, rl, rr, show-node-names, show-nodes, start-adjust, + tikz, wrap-lines, xoffset, ygap, ystart, } \keys_define:nn { WithArrows / WithArrowsOptions } { @@ -403,8 +406,8 @@ { allow-duplicate-names, b, c, command-name, more-columns, tikz-code, adjust, displaystyle, end-adjust, fleqn, group, groups, i, interline, jot, ll, lr, - mathindent, no-arrows, rl, rr, show-node-names, show-nodes, start-adjust, t, - tikz, wrap-lines, xoffset, ygap, ystart, + mathindent, max-length-of-arrow, no-arrows, rl, rr, show-node-names, + show-nodes, start-adjust, t, tikz, wrap-lines, xoffset, ygap, ystart, } \cs_new_protected:Npn \__wa_set_independent: { @@ -443,22 +446,19 @@ tikz-code .value_required:n = true , tikz .code:n = \prg_do_nothing: , tikz .value_required:n = true , - xoffset .code:n = - \int_compare:nNnT \l__wa_pos_arrow_int > 5 - { \__wa_error:n { Option~xoffset~forbidden } } , - xoffset .value_required:n = true , start-adjust .code:n = \prg_do_nothing: , start-adjust .value_required:n = true , end-adjust .code:n = \prg_do_nothing: , end-adjust .value_required:n = true , adjust .code:n = \prg_do_nothing: , adjust .value_required:n = true , + xoffset .code:n = , unknown .code:n = \__wa_sort_seq:N \l__wa_options_Arrow_seq \seq_if_in:NVTF \l__wa_options_WithArrows_seq \l_keys_key_tl { \str_set:Nn \l_tmpa_str - { ~However,~this~key~can~be~used~in~the~options~of~\{WithArrows\}. } + { ~However,~this~key~can~be~used~in~the~options~of~{WithArrows}. } } { \str_clear:N \l_tmpa_str } \__wa_error:n { Unknown~option~in~Arrow } @@ -489,8 +489,17 @@ lr .code:n = \__wa_fix_pos_arrow:n 0 , i .code:n = \__wa_fix_pos_arrow:n 5 , xoffset .code:n = - \int_compare:nNnF \l__wa_pos_arrow_int > 5 + \bool_if:nTF + { + \int_compare_p:nNn \g__wa_arrow_int > 1 + && + \int_compare_p:nNn \l__wa_pos_arrow_int > 5 + && + ! \str_if_eq_p:Vn \l__wa_status_arrow_str { independent } + } + { \__wa_error:n { Option~xoffset~forbidden } } { \dim_set:Nn \l__wa_xoffset_dim { #1 } } , + xoffset .value_required:n = true , start-adjust .dim_set:N = \l__wa_start_adjust_dim, end-adjust .dim_set:N = \l__wa_end_adjust_dim, adjust .code:n = @@ -708,7 +717,15 @@ \cs_new_protected:Npn \__wa_post_halign: { \cs_set:Npn \WithArrowsRightX { \g__wa_right_x_dim } - \int_compare:nNnT \g__wa_arrow_int > 0 \__wa_scan_arrows: + \int_compare:nNnT \g__wa_arrow_int > 0 + { + \int_compare:nNnT \g__wa_arrow_int = 1 + { + \int_compare:nNnT \l__wa_pos_arrow_int > 5 + { \int_set:Nn \l__wa_pos_arrow_int 5 } + } + \__wa_scan_arrows: + } \group_begin: \tikzset { every~picture / .style = __wa_standard } \cs_set:Npn \WithArrowsNbLines { \int_use:N \g__wa_line_int } @@ -1100,28 +1117,68 @@ \bool_set_true:N \l_tmpa_bool \bool_set_true:N \l_tmpb_bool } + \dim_gzero_new:N \g__wa_x_initial_dim + \dim_gzero_new:N \g__wa_x_final_dim + \dim_gzero_new:N \g__wa_y_initial_dim + \dim_gzero_new:N \g__wa_y_final_dim \tikzpicture [ __wa_standard ] \tikz@scan@one@point \pgfutil@firstofone ( \l__wa_initial_tl ) - \tl_gset:Nx \g_tmpa_tl - { - \int_compare:nNnTF \l__wa_pos_arrow_int < 5 - { \dim_use:N \pgf@x } - { \dim_use:N \l__wa_x_dim } , - \bool_if:NTF \l_tmpa_bool - { \dim_eval:n { \pgf@y + \l__wa_start_adjust_dim } } - { \dim_use:N \pgf@y } - } + \dim_gset:Nn \g__wa_x_initial_dim \pgf@x + \dim_gset:Nn \g__wa_y_initial_dim \pgf@y \tikz@scan@one@point \pgfutil@firstofone ( \l__wa_final_tl ) - \tl_gset:Nx \g_tmpb_tl - { - \int_compare:nNnTF \l__wa_pos_arrow_int < 5 - { \dim_use:N \pgf@x } - { \dim_use:N \l__wa_x_dim } , - \bool_if:NTF \l_tmpb_bool - { \dim_eval:n { \pgf@y - \l__wa_end_adjust_dim } } - { \dim_use:N \pgf@y } - } + \dim_gset:Nn \g__wa_x_final_dim \pgf@x + \dim_gset:Nn \g__wa_y_final_dim \pgf@y \endtikzpicture + \bool_if:nTF + { \dim_compare_p:nNn { \g__wa_y_initial_dim - \g__wa_y_final_dim } + > \l__wa_max_length_of_arrow_dim + && + \int_compare_p:nNn { \l__wa_final_int - \l__wa_initial_int } = 1 + } + { + \tl_gset:Nx \g_tmpa_tl + { + \int_compare:nNnTF \l__wa_pos_arrow_int < 5 + { \dim_use:N \g__wa_x_initial_dim } + { \dim_use:N \l__wa_x_dim } , + \dim_eval:n + { + ( \g__wa_y_initial_dim + \g__wa_y_final_dim ) / 2 + + ( \l__wa_max_length_of_arrow_dim / 2 ) + } + } + \tl_gset:Nx \g_tmpb_tl + { + \int_compare:nNnTF \l__wa_pos_arrow_int < 5 + { \dim_use:N \g__wa_x_final_dim } + { \dim_use:N \l__wa_x_dim } , + \dim_eval:n + { + ( \g__wa_y_initial_dim + \g__wa_y_final_dim ) / 2 + - ( \l__wa_max_length_of_arrow_dim / 2 ) + } + } + } + { + \tl_gset:Nx \g_tmpa_tl + { + \int_compare:nNnTF \l__wa_pos_arrow_int < 5 + { \dim_use:N \g__wa_x_initial_dim } + { \dim_use:N \l__wa_x_dim } , + \bool_if:NTF \l_tmpa_bool + { \dim_eval:n { \g__wa_y_initial_dim + \l__wa_start_adjust_dim } } + { \dim_use:N \g__wa_y_initial_dim } + } + \tl_gset:Nx \g_tmpb_tl + { + \int_compare:nNnTF \l__wa_pos_arrow_int < 5 + { \dim_use:N \g__wa_x_final_dim } + { \dim_use:N \l__wa_x_dim } , + \bool_if:NTF \l_tmpb_bool + { \dim_eval:n { \g__wa_y_final_dim - \l__wa_end_adjust_dim } } + { \dim_use:N \g__wa_y_final_dim } + } + } \__wa_draw_arrow:nno \g_tmpa_tl \g_tmpb_tl \l_tmpa_tl \group_end: } @@ -1279,11 +1336,20 @@ } \cs_new_protected:Npn \__wa_MultiArrow:nn #1 #2 { + \exp_args:Nnx + \regex_match:nnTF + { \A \d+ (\,\d+)* ( \, \.\.\. (\,\d+)+ )* \Z } + { #1 } + { \__wa_MultiArrow_i:nn { #1 } { #2 } } + { \__wa_error:nx { Invalid~specification~for~MultiArrow } { #1 } } + } +\cs_new_protected:Npn \__wa_MultiArrow_i:nn #1 #2 + { \foreach \x in { #1 } { \cs_if_free:cTF { pgf@sh@ns@wa - \l__wa_prefix_str - \x - l } - { \__wa_error:nx { Wrong~line~specification~in~MultiArrow } \x } - { \clist_gput_right:Nx \g_tmpa_clist \x } + { \__wa_error:nx { Wrong~line~specification~in~MultiArrow } \x } + { \clist_gput_right:Nx \g_tmpa_clist \x } } \int_compare:nTF { \clist_count:N \g_tmpa_clist < 2 } { \__wa_error:n { Too~small~specification~for~MultiArrow } } @@ -1563,11 +1629,13 @@ \__wa_msg_new:nn { Option~xoffset~forbidden } { You~can't~use~the~option~'xoffset'~in~the~command~ - \l__wa_string_Arrow_for_msg_str\ - while~you~are~using~the~option~ + \l__wa_string_Arrow_for_msg_str\ in~the~row~\int_use:N \g__wa_line_int\ + of~your~environment~\{\l__wa_type_env_str\}~ + because~you~are~using~the~option~ ' \int_compare:nNnTF \l__wa_pos_arrow_int = 7 { group } - { groups } '. \\ + { groups } '.~It's~possible~for~an~independent~arrow~or~if~there~is~ + only~one~arrow. \\ \c__wa_option_ignored_str } \__wa_msg_new:nnn { Duplicate~name } @@ -1687,6 +1755,12 @@ ~in~the~preamble~of~your~document. \\ \c__wa_option_ignored_str } +\__wa_msg_new:nn { Invalid~specification~for~MultiArrow } + { + The~specification~of~rows~for~\token_to_str:N\MultiArrow\ + (i.e.~#1)~is~invalid. \\ + \c__wa_command_ignored_str + } \catcode `\@ = 12 \ExplSyntaxOff \endinput diff --git a/Master/texmf-dist/source/generic/witharrows/witharrows.dtx b/Master/texmf-dist/source/generic/witharrows/witharrows.dtx index 8dc046bd9dd..96fd85f7f6a 100644 --- a/Master/texmf-dist/source/generic/witharrows/witharrows.dtx +++ b/Master/texmf-dist/source/generic/witharrows/witharrows.dtx @@ -1,4 +1,4 @@ -% \iffalse meta-comment +%\iffalse meta-comment % % Copyright (C) 2017-2019 by F. Pantigny % ----------------------------------- @@ -15,8 +15,8 @@ % % \fi % \iffalse -\def\myfileversion{2.0} -\def\myfiledate{2019/07/30} +\def\myfileversion{2.1} +\def\myfiledate{2019/10/21} % % %<*batchfile> @@ -55,6 +55,7 @@ version 2005/12/01 or later. \usepackage{amssymb} \usepackage[only,llbracket,rrbracket]{stmaryrd} \usepackage{varwidth} +\labelformat{equation}{(#1)} \NewDocumentEnvironment {scope} {} {} {} \def\interitem{\vskip 7mm plus 2 mm minus 3mm} \def\emphase{\bgroup\color{RoyalPurple}\let\next=} @@ -75,13 +76,15 @@ version 2005/12/01 or later. % % \maketitle % -% \hypersetup{ -% pdfinfo = { -% Title = { The extension 'witharrows' }, -% Subject = { A extension for plain-TeX and LaTeX} , -% Author = { F. Pantigny } +% \hypersetup +% { +% pdfinfo = +% { +% Title = { The extension 'witharrows' } , +% Subject = { An extension for plain-TeX and LaTeX} , +% Author = { F. Pantigny } +% } % } -% } % % % \begin{abstract} @@ -93,7 +96,8 @@ version 2005/12/01 or later. % \end{abstract} % % -% \vspace{1cm} In this document, we describe the LaTeX extension +% \vspace{1cm} +% In this document, we describe the LaTeX extension % \pkg{witharrows} (however, \pkg{witharrows} can also be used with plain-TeX: % see p.~\pageref{plain-TeX}). This package can be used with |xelatex|, % |lualatex|, |pdflatex| but also by the classical workflow @@ -263,7 +267,11 @@ version 2005/12/01 or later. % \interitem % It's possible to use the Tikz option ``|text width|'' to control the width of % the text associated to the arrow.\footnote{It's possible to avoid the -% hyphenations of the words with the option ``|align = flush left|'' of Tikz.} +% hyphenations of the words: use the Tikz option ``|align = flush left|'' in +% LaTeX and ``|align = {flushleft,nothyphenated}|'' in ConTeXt.} +% \newcounter{fnnohyphen} +% \setcounter{fnnohyphen}{\thefootnote} +% % % % \begin{Verbatim} % $\begin{WithArrows} @@ -680,9 +688,10 @@ version 2005/12/01 or later. % \bigskip % In an environment which uses the option |group| or the option |groups|, it's % still possible to give an option of position (|ll|, |lr|, |rl|, |rr| or |i|) -% to an individual arrow. Such arrow will be drawn irrespective of the groups. -% It's also possible to start a new group by applying the option |new-group| to -% an given arrow. +% to an individual arrow\footnote{Such an arrow will be called +% \emph{independent} in the technical documentation}. Such arrow will be drawn +% irrespective of the groups. It's also possible to start a new group by +% applying the option |new-group| to an given arrow. % % \bigskip % If desired, the option |group| or the option |groups| can be given to the @@ -692,11 +701,11 @@ version 2005/12/01 or later. % % % \vspace{1cm} -% In the following example, we have used the option |group| for the environment -% and the option |rr| for the last arrow (that's why the last arrow is not +% In the following example, we have used the option |groups| for the environment +% and the option |new-group| for the last arrow (that's why the last arrow is not % aligned with the others). % -% $\begin{WithArrows}[interline=1mm,group] +% $\begin{WithArrows}[interline=1mm,groups] % \sum\limits_{k=0}^n\frac{\cos kx}{\cos^k x} % & = \sum\limits_{k=0}^n \frac{\Re (e^{ikx})}{(\cos x)^k} % \Arrow{$(\cos x)^k$ is real} \\ @@ -711,7 +720,7 @@ version 2005/12/01 or later. % & = \Re \left(\frac{\frac{\cos^{n+1}x-e^{i(n+1)x}}{\cos^{n+1}x}}{\frac{\cos x-e^{ix}}{\cos x}}\right) % \Arrow{$\Re(kz) = k\cdot\Re(z)$ if $k$ is real} \\ % & = \frac1{\cos^n x}\Re \left(\frac{\cos^{n+1}x-e^{i(n+1)x}}{\cos x-e^{ix}}\right) -% \Arrow[rr]{algebraic form of the complexes} \\ +% \Arrow[new-group]{algebraic form of the complexes} \\ % & =\frac1{\cos^n x}\Re\left(\frac{\cos^{n+1}x-(\cos(n+1)x+i\sin(n+1)x)}{\cos x-(\cos x+i\sin x)}\right) \\ % & =\frac1{\cos^n x}\Re\left(\frac{(\cos^{n+1}x-\cos(n+1)x)-i\sin(n+1)x}{-i\sin x}\right) \\ % & = \frac1{\cos^nx}\cdot\frac{\sin(n+1)x}{\sin x} @@ -996,7 +1005,7 @@ version 2005/12/01 or later. % % \bigskip % However, one may want to draw an arrow between rows that are not in the same -% environment. For example, one may want to draw the following arrow : +% environment. For example, one may want to draw the following arrow :\par\nobreak % % \bigskip % $\begin{WithArrows}[code-after = \Arrow[v]{1-2}{2-2}{division by $2$} ] @@ -1209,7 +1218,7 @@ version 2005/12/01 or later. % \begin{itemize} % \item the command |\WithArrowsLastEnv| gives the number of the last % environment of level~$0$ (\emph{i.e.} which is not included in another -% environnment of the package \pkg{witharrows}); +% environment of the package \pkg{witharrows}); % % \item a name can be given to a given environment with the option |name| and, % in this case, the nodes created in the environment will have aliases @@ -1362,12 +1371,13 @@ version 2005/12/01 or later. % A & = (a+1)^2 \Arrow{we expand} \notag \\ % & = a^2 + 2a + 1 \tag{$\star$} \label{my-equation} % \end{DispWithArrows} -% A link to the equation \eqref{my-equation}. This link has been composed with -% |\eqref{my-equation}| (the command |\eqref| is a command of \pkg{amsmath}). +% A link to the equation \ref{my-equation}.\footnote{In this document, the +% references has been customized with |\labelformat{equation}{(#1)}|} +% % % \medskip % If \pkg{amsmath} (or \pkg{mathtools}) is loaded, it's also possible to use -% |\tag*| which, as in \pkg{amsmath}, typesets the tag without the parenthesis. +% |\tag*| which, as in \pkg{amsmath}, typesets the tag without the parentheses. % For example, it's possible to use it to put the symbol |\square| of % \pkg{amssymb}. This symbol is often used to mark the end of a % proof.\footnote{Notice that the environment |{DispWithArrows}| is compatible @@ -1502,7 +1512,7 @@ version 2005/12/01 or later. % \begin{DispWithArrows}[displaystyle] % S_{2(p+1)} % & =\sum_{k=1}^{2(p+1)} (-1)^k k^2 \\ -% & \smash[b]{=\sum_{k=1}^{2p}(-1)^kk² +% & \smash[b]{=\sum_{k=1}^{2p}(-1)^kk % +(-1)^{2p+1}(2p+1)^2+(-1)^{2p+2}(2p+2)^2} ~emphase#\tagnextline@ \\ % &= S_{2p}-(2p+1)^2+(2p+2)^2\\ % &=p(2p+1)-(2p+1)^2+(2p+2)^2\\ @@ -1530,8 +1540,7 @@ version 2005/12/01 or later. % \bigskip % The environments |{DispWithArrows}| and |{DispWithArrows*}| provide an option % |wrap-lines|. With this option, the lines of the label are automatically -% wrapped on the right.\footnote{It's possible to avoid the hyphenations of the -% words with the option ``|align = flush left|'' of Tikz.}\label{wrap-lines} +% wrapped on the right.\footnotemark[\thefnnohyphen]\label{wrap-lines} % % \begin{Verbatim} % \begin{DispWithArrows*}[displaystyle,~emphase#wrap-lines@] @@ -1626,7 +1635,7 @@ version 2005/12/01 or later. % % \bigskip % Concerning the references, the package \pkg{witharrows} is compatible with the -% extensions \pkg{autonum}, \pkg{cleveref}, \pkg{fancyref}, \pkg{fncylab}, +% extensions \pkg{autonum}, \pkg{cleveref}, \pkg{fancyref}, % \pkg{hyperref}, \pkg{listlbls}, \pkg{prettyref}, \pkg{refcheck}, % \pkg{refstyle}, \pkg{showlabels}, \pkg{smartref}, \pkg{typedref} and % \pkg{varioref}, and with the options |showonlyrefs| and |showmanualtags| of @@ -1700,9 +1709,9 @@ version 2005/12/01 or later. % % \bigskip % The whole system is the equation \eqref{system} (this reference has been coded -% by |\eqref{system}|) whereas the last equation is the equation -% \eqref{last-equation} (this reference has been coded by -% |\eqref{last-equation}|). The command |\ref*| used in the code above is +% by |\ref{system}|) whereas the last equation is the equation +% \ref{last-equation} (this reference has been coded by +% |\ref{last-equation}|). The command |\ref*| used in the code above is % provided by \pkg{hyperref}. It's a variant of |\ref| which doesn't create % interactive link. % @@ -1721,13 +1730,13 @@ version 2005/12/01 or later. % The extension \pkg{witharrows} can be used with plain-TeX. In this case, the % extension must be loaded with |\input|: % \begin{Verbatim} -% \input{witharrows.tex} +% \input{witharrows} % \end{Verbatim} % % \medskip % In plain-TeX, there is not environments as in LaTeX. Instead of using the % environment |{Witharrows}|, with |\begin{WithArrows}| and |\end{WithArrows}|, -% one should use a pseudo-environnement delimited by |\WithArrows| and +% one should use a pseudo-environment delimited by |\WithArrows| and % |\endWithArrows| (idem for |{DispWithArrows}|). % % \begin{Verbatim} @@ -1916,14 +1925,71 @@ version 2005/12/01 or later. % It's also possible to use the option |adjust| which sets both |start-adjust| % and |end-ajust|. % -% \bigskip -% Since the mechanism of |start-adjust| and |end-ajust| has been added in -% version 1.13 of \pkg{witharrows}, that version is not stricty compatible with -% older versions. However, it's possible to restore the previous behaviour -% simply by setting |start-adjust| and |end-adjust| to $0$~pt: +% \interitem +% Since the version 2.1 of \pkg{witharrows}, an arrow of |jump| equal to~$1$ has +% a maximal length\footnote{We call \emph{length} of an arrow the difference +% between the $y$-value of its start point and the $y$~value of its end point.} +% equal to the parameter |max-length-of-arrow|. The default value of this +% parameter est $2$~cm. +% +% In the following example, the value of |max-length-of-arrow| has been fixed to +% $1.5$~cm. % \begin{Verbatim} -% \WithArrowsOptions{adjust = 0pt} +% \[\begin{WithArrows}[~emphase#max-length-of-arrow = 1.5cm@] +% A +% & = +% \begin{vmatrix} +% 1 & a & a^2 & a^3 & a^4 \\ +% 1 & b & b^2 & b^3 & b^4 \\ +% 1 & c & c^2 & c^3 & c^4 \\ +% 1 & d & d^2 & d^3 & d^4 \\ +% 1 & e & e^2 & e^3 & e^4 +% \end{vmatrix} +% \Arrow{ +% $L_2 \gets L_2-L_1$ \\ +% $L_3 \gets L_3-L_1$ \\ +% $L_4 \gets L_4-L_1$ \\ +% $L_5 \gets L_5-L_1$ % don't put \\ ici +% } \\ +% & = +% \begin{vmatrix} +% 1 & a & a^2 & a^3 & a^4 \\ +% 0 & b-a & b^2-a^2 & b^3-a^3 & b^4-a^4 \\ +% 0 & c-a & c^2-a^2 & c^3-a^3 & c^4-a^4 \\ +% 0 & d-a & d^2-a^2 & d^3-a^3 & d^4-a^4 \\ +% 0 & e-a & e^2-a^2 & e^3-a^3 & e^4-a^4 +% \end{vmatrix} +% \end{WithArrows}\] % \end{Verbatim} +% +% +% \bigskip +% \[\begin{WithArrows}[max-length-of-arrow = 1.5cm] +% A +% & = +% \begin{vmatrix} +% 1 & a & a^2 & a^3 & a^4 \\ +% 1 & b & b^2 & b^3 & b^4 \\ +% 1 & c & c^2 & c^3 & c^4 \\ +% 1 & d & d^2 & d^3 & d^4 \\ +% 1 & e & e^2 & e^3 & e^4 +% \end{vmatrix} +% \Arrow{ +% $L_2 \gets L_2-L_1$ \\ +% $L_3 \gets L_3-L_1$ \\ +% $L_4 \gets L_4-L_1$ \\ +% $L_5 \gets L_5-L_1$ +% } \\ +% & = +% \begin{vmatrix} +% 1 & a & a^2 & a^3 & a^4 \\ +% 0 & b-a & b^2-a^2 & b^3-a^3 & b^4-a^4 \\ +% 0 & c-a & c^2-a^2 & c^3-a^3 & c^4-a^4 \\ +% 0 & d-a & d^2-a^2 & d^3-a^3 & d^4-a^4 \\ +% 0 & e-a & e^2-a^2 & e^3-a^3 & e^4-a^4 +% \end{vmatrix} +% \end{WithArrows}\] +% % % \bigskip % \subsection{Footnotes in the environments of witharrows} @@ -2326,7 +2392,7 @@ version 2005/12/01 or later. % \bigskip % As usual, it's possible to change the characteristic of both arrows and nodes % with the option |tikz|. However, if we want to change the style to have, for -% example, numbers in parenthesis, the best way is to change the value of +% example, numbers in round brackets, the best way is to change the value of % |tikz-code|: % % \begin{Verbatim} @@ -2436,7 +2502,7 @@ version 2005/12/01 or later. \cs_new_protected:Npn \@@_msg_redirect_name:nn { \msg_redirect_name:nnn { witharrows } } \cs_new_protected:Npn \@@_error:n { \msg_error:nn { witharrows } } -\cs_new_protected:Npn \@@_warning:n { \msg_error:nn { witharrows } } +\cs_new_protected:Npn \@@_warning:n { \msg_warning:nn { witharrows } } \cs_new_protected:Npn \@@_fatal:n { \msg_fatal:nn { witharrows } } \cs_new_protected:Npn \@@_error:nn { \msg_error:nnn { witharrows } } \cs_generate_variant:Nn \@@_error:nn { n x } @@ -2533,7 +2599,7 @@ version 2005/12/01 or later. } % \end{macrocode} % The flag |\g_@@_footnote_bool| is raised and so, we will only have to test -% |\g_@@_footnote_bool| in order to know if we have to insert an environnement +% |\g_@@_footnote_bool| in order to know if we have to insert an environment % |{savenotes}| (the |\begin{savenotes}| is in |\@@_pre_halign:n| and % |\end{savenotes}| at the end of the environments |{WithArrows}| and % |{DispWithArrows}|). @@ -2607,7 +2673,7 @@ version 2005/12/01 or later. } { \cs_new_protected:Npn \@@_strcmp:nn #1 #2 - { \pdftex_strcmp:D { #1 } { #2 } } + { \tex_strcmp:D { #1 } { #2 } } } % \end{macrocode} % @@ -3062,6 +3128,9 @@ version 2005/12/01 or later. % \begin{macrocode} \keys_define:nn { WithArrows / Global } { + max-length-of-arrow .dim_set:N = \l_@@_max_length_of_arrow_dim , + max-length-of-arrow .value_required:n = true , + max-length-of-arrow .initial:n = 2 cm , ygap .dim_set:N = \l_@@_ygap_dim , ygap .value_required:n = true , ygap .initial:n = 0.4 ex , @@ -3342,7 +3411,7 @@ version 2005/12/01 or later. displaystyle, end-adjust, format, group, groups, i, interline, jot, ll, - lr, more-columns, name, + lr, max-length-of-arrow, more-columns, name, no-arrows, rl, rr, show-node-names, show-nodes, start-adjust, t, tikz, tikz-code, @@ -3381,9 +3450,9 @@ version 2005/12/01 or later. { code-after, code-before, command-name, tikz-code, adjust, displaystyle, end-adjust, fleqn, group, format, groups, i, interline, jot, - left-brace, ll, lr, mathindent, name, no-arrows, replace-left-brace-by, rl, - rr, show-node-names, show-nodes, start-adjust, tikz, wrap-lines, xoffset, - ygap, ystart, + left-brace, ll, lr, max-length-of-arrow, mathindent, name, no-arrows, + replace-left-brace-by, rl, rr, show-node-names, show-nodes, start-adjust, + tikz, wrap-lines, xoffset, ygap, ystart, %<*LaTeX>> allow-multiple-labels, tagged-lines, nonumber, notag %</LaTeX> @@ -3413,8 +3482,8 @@ version 2005/12/01 or later. { allow-duplicate-names, b, c, command-name, more-columns, tikz-code, adjust, displaystyle, end-adjust, fleqn, group, groups, i, interline, jot, ll, lr, - mathindent, no-arrows, rl, rr, show-node-names, show-nodes, start-adjust, t, - tikz, wrap-lines, xoffset, ygap, ystart, + mathindent, max-length-of-arrow, no-arrows, rl, rr, show-node-names, + show-nodes, start-adjust, t, tikz, wrap-lines, xoffset, ygap, ystart, %<*LaTeX>> allow-multiple-labels, nonumber, notag, standard-behaviour-with-items, tagged-lines @@ -3485,28 +3554,19 @@ version 2005/12/01 or later. tikz-code .value_required:n = true , tikz .code:n = \prg_do_nothing: , tikz .value_required:n = true , -% \end{macrocode} -% -% \medskip -% The option |xoffset| is not allowed when the option |group| or the option -% |groups| is used (since it would be meaningless). -% \begin{macrocode} - xoffset .code:n = - \int_compare:nNnT \l_@@_pos_arrow_int > 5 - { \@@_error:n { Option~xoffset~forbidden } } , - xoffset .value_required:n = true , start-adjust .code:n = \prg_do_nothing: , start-adjust .value_required:n = true , end-adjust .code:n = \prg_do_nothing: , end-adjust .value_required:n = true , adjust .code:n = \prg_do_nothing: , adjust .value_required:n = true , + xoffset .code:n = , unknown .code:n = \@@_sort_seq:N \l_@@_options_Arrow_seq \seq_if_in:NVTF \l_@@_options_WithArrows_seq \l_keys_key_tl { \str_set:Nn \l_tmpa_str - { ~However,~this~key~can~be~used~in~the~options~of~\{WithArrows\}. } + { ~However,~this~key~can~be~used~in~the~options~of~{WithArrows}. } } { \str_clear:N \l_tmpa_str } \@@_error:n { Unknown~option~in~Arrow } @@ -3558,15 +3618,23 @@ version 2005/12/01 or later. i .code:n = \@@_fix_pos_arrow:n 5 , % \end{macrocode} % -% \medskip -% The option |xoffset| is not allowed when the option |group| or the option -% |groups| is used (since it would be meaningless). An error has been raised -% during the first pass. Here, we manage to avoid a second error which -% would be redundant. +% \medskip +% The option |xoffset| is not allowed when the option |group| or the option +% |groups| is used except, if the arrow is independent or if there is only one +% arrow. % \begin{macrocode} xoffset .code:n = - \int_compare:nNnF \l_@@_pos_arrow_int > 5 + \bool_if:nTF + { + \int_compare_p:nNn \g_@@_arrow_int > 1 + && + \int_compare_p:nNn \l_@@_pos_arrow_int > 5 + && + ! \str_if_eq_p:Vn \l_@@_status_arrow_str { independent } + } + { \@@_error:n { Option~xoffset~forbidden } } { \dim_set:Nn \l_@@_xoffset_dim { #1 } } , + xoffset .value_required:n = true , start-adjust .dim_set:N = \l_@@_start_adjust_dim, end-adjust .dim_set:N = \l_@@_end_adjust_dim, adjust .code:n = @@ -3733,7 +3801,7 @@ version 2005/12/01 or later. \cs_new_protected:Npn \@@_pre_halign:n #1 % \end{macrocode} % -% First, the initialisation of |\l_@@_type_env_str| which is the name of the +% First, the initialization of |\l_@@_type_env_str| which is the name of the % encompassing environment. In fact, this token list is used only in the error % messages. % \begin{macrocode} @@ -3781,14 +3849,14 @@ version 2005/12/01 or later. % The variable |\l_@@_input_line_str| will be used only to store, for each % command |\Arrow| the line (in the TeX file) where the command is issued. This % information will be stored in the field ``input-line'' of the arrow. As of -% now, this information is used only in the error message of a arrow impossible +% now, this information is used only in the error message of an arrow impossible % to draw (because it arrives after the last row of the environment). % \begin{macrocode} \str_clear_new:N \l_@@_input_line_str % \end{macrocode} % % -% The initialisation of the counters |\g_@@_arrow_int|, |\g_@@_line_int| and +% The initialization of the counters |\g_@@_arrow_int|, |\g_@@_line_int| and % |\g_@@_col_int|. However, we have to save their previous values with the % stacks created for this end. % \begin{macrocode} @@ -4314,7 +4382,20 @@ version 2005/12/01 or later. % \bigskip % It there is really arrows in the environment, we draw the arrows. % \begin{macrocode} - \int_compare:nNnT \g_@@_arrow_int > 0 \@@_scan_arrows: + \int_compare:nNnT \g_@@_arrow_int > 0 + { +% \end{macrocode} +% If there is only one arrow, the options |group| and |groups| do not really +% make sense and it will be quicker to act as if we were in option |i| (moreover, +% it allows the option |xoffset| for the unique arrow). +% \begin{macrocode} + \int_compare:nNnT \g_@@_arrow_int = 1 + { + \int_compare:nNnT \l_@@_pos_arrow_int > 5 + { \int_set:Nn \l_@@_pos_arrow_int 5 } + } + \@@_scan_arrows: + } % \end{macrocode} % % \bigskip @@ -4491,8 +4572,7 @@ version 2005/12/01 or later. % |\refstepcounter| done by some packages (the incrementation of the counter has % been done yet). % -% First an action which is in the definition of |\refstepcounter|. The command -% |\p@equation| is redefined by some extensions like \pkg{fncylab}. +% First an action which is in the definition of |\refstepcounter|. % \begin{macrocode} \cs_set:Npx \@currentlabel { \p@equation \g_tmpa_tl } % \end{macrocode} @@ -4618,7 +4698,13 @@ version 2005/12/01 or later. \cs_new_protected:Npn \@@_analyze_end:Nn #1 #2 { \exp_args:NV \str_if_eq:nnT \l_@@_type_env_str { #2 } - { \@@_warning:n { newline~at~the~end~of~env } } + { + \@@_warning:n { newline~at~the~end~of~env } + \group_begin: + \globaldefs = 1 + \@@_msg_redirect_name:nn { newline~at~the~end~of~env } { none } + \group_end: + } % \end{macrocode} % We reput in the stream the |\end{...}| we have extracted. % \begin{macrocode} @@ -5069,9 +5155,9 @@ version 2005/12/01 or later. } % \end{macrocode} % -% \bigskip -% The command |\@@_notag:| will be linked to the command |\notag| and also to -% in the environments |{WithArrows}| and |{DispWithArrows}|. +% \bigskip +% The command |\@@_notag:| will be linked to the command |\notag| in +% the environments |{WithArrows}| and |{DispWithArrows}|. % \begin{macrocode} %<*LaTeX> \cs_new_protected:Npn \@@_notag: @@ -5079,7 +5165,7 @@ version 2005/12/01 or later. % \end{macrocode} % % \bigskip -% The command |\@@_nonumber:| will be linked to the command |\nonumber| and also to +% The command |\@@_nonumber:| will be linked to the command |\nonumber| % in the environments |{WithArrows}| and |{DispWithArrows}|. % \begin{macrocode} \cs_new_protected:Npn \@@_nonumber: @@ -5276,7 +5362,7 @@ version 2005/12/01 or later. % \medskip % The boolean |\l_@@_new_group_bool| is a switch that we will use the indicate % that a group is finished (and the lines of that group have to be drawn). This -% boolean is not directed connected to the option |new-group| of an individual +% boolean is not directly connected to the option |new-group| of an individual % arrow. % \begin{macrocode} \bool_set_true:N \l_@@_new_group_bool @@ -5432,7 +5518,7 @@ version 2005/12/01 or later. { \str_if_eq_p:Vn \l_@@_status_arrow_str { independent } } { % \end{macrocode} -% If the arrow is not independant, the arrow belongs to the current group and we +% If the arrow is not independent, the arrow belongs to the current group and we % have to take it into account in some variables. % \begin{macrocode} \int_compare:nT @@ -5667,6 +5753,10 @@ version 2005/12/01 or later. % \end{itemize} % % \begin{macrocode} + \dim_gzero_new:N \g_@@_x_initial_dim + \dim_gzero_new:N \g_@@_x_final_dim + \dim_gzero_new:N \g_@@_y_initial_dim + \dim_gzero_new:N \g_@@_y_final_dim %<*LaTeX> \begin { tikzpicture } [ @@_standard ] %</LaTeX> @@ -5674,31 +5764,67 @@ version 2005/12/01 or later. \tikzpicture [ @@_standard ] %</plain-TeX> \tikz@scan@one@point \pgfutil@firstofone ( \l_@@_initial_tl ) - \tl_gset:Nx \g_tmpa_tl - { - \int_compare:nNnTF \l_@@_pos_arrow_int < 5 - { \dim_use:N \pgf@x } - { \dim_use:N \l_@@_x_dim } , - \bool_if:NTF \l_tmpa_bool - { \dim_eval:n { \pgf@y + \l_@@_start_adjust_dim } } - { \dim_use:N \pgf@y } - } + \dim_gset:Nn \g_@@_x_initial_dim \pgf@x + \dim_gset:Nn \g_@@_y_initial_dim \pgf@y \tikz@scan@one@point \pgfutil@firstofone ( \l_@@_final_tl ) - \tl_gset:Nx \g_tmpb_tl - { - \int_compare:nNnTF \l_@@_pos_arrow_int < 5 - { \dim_use:N \pgf@x } - { \dim_use:N \l_@@_x_dim } , - \bool_if:NTF \l_tmpb_bool - { \dim_eval:n { \pgf@y - \l_@@_end_adjust_dim } } - { \dim_use:N \pgf@y } - } + \dim_gset:Nn \g_@@_x_final_dim \pgf@x + \dim_gset:Nn \g_@@_y_final_dim \pgf@y %<*LaTeX> \end { tikzpicture } %</LaTeX> %<*plain-TeX> \endtikzpicture %</plain-TeX> + \bool_if:nTF + { \dim_compare_p:nNn { \g_@@_y_initial_dim - \g_@@_y_final_dim } + > \l_@@_max_length_of_arrow_dim + && + \int_compare_p:nNn { \l_@@_final_int - \l_@@_initial_int } = 1 + } + { + \tl_gset:Nx \g_tmpa_tl + { + \int_compare:nNnTF \l_@@_pos_arrow_int < 5 + { \dim_use:N \g_@@_x_initial_dim } + { \dim_use:N \l_@@_x_dim } , + \dim_eval:n + { + ( \g_@@_y_initial_dim + \g_@@_y_final_dim ) / 2 + + ( \l_@@_max_length_of_arrow_dim / 2 ) + } + } + \tl_gset:Nx \g_tmpb_tl + { + \int_compare:nNnTF \l_@@_pos_arrow_int < 5 + { \dim_use:N \g_@@_x_final_dim } + { \dim_use:N \l_@@_x_dim } , + \dim_eval:n + { + ( \g_@@_y_initial_dim + \g_@@_y_final_dim ) / 2 + - ( \l_@@_max_length_of_arrow_dim / 2 ) + } + } + } + { + \tl_gset:Nx \g_tmpa_tl + { + \int_compare:nNnTF \l_@@_pos_arrow_int < 5 + { \dim_use:N \g_@@_x_initial_dim } + { \dim_use:N \l_@@_x_dim } , + \bool_if:NTF \l_tmpa_bool + { \dim_eval:n { \g_@@_y_initial_dim + \l_@@_start_adjust_dim } } + { \dim_use:N \g_@@_y_initial_dim } + } + \tl_gset:Nx \g_tmpb_tl + { + \int_compare:nNnTF \l_@@_pos_arrow_int < 5 + { \dim_use:N \g_@@_x_final_dim } + { \dim_use:N \l_@@_x_dim } , + \bool_if:NTF \l_tmpb_bool + { \dim_eval:n { \g_@@_y_final_dim - \l_@@_end_adjust_dim } } + { \dim_use:N \g_@@_y_final_dim } + } + } % \end{macrocode} % % \bigskip @@ -5963,7 +6089,7 @@ version 2005/12/01 or later. 3 { \bool_set_true:N \l_@@_final_r_bool } } % \end{macrocode} -% We prevent drawing a arrow from a line to itself. +% We prevent drawing an arrow from a line to itself. % \begin{macrocode} \tl_if_eq:nnTF { #2 } { #3 } { \@@_error:nn { Both~lines~are~equal } { #2 } } @@ -6045,16 +6171,32 @@ version 2005/12/01 or later. % \end{macrocode} % The user of the command |\MultiArrow| (in |code-after|) will be able to specify % the list of lines with the same syntax as the loop |\foreach| of \pkg{pgffor}. +% First, we test with a regular expression whether the format of the list of +% lines is correct. +% \begin{macrocode} + \exp_args:Nnx + \regex_match:nnTF + { \A \d+ (\,\d+)* ( \, \.\.\. (\,\d+)+ )* \Z } + { #1 } + { \@@_MultiArrow_i:nn { #1 } { #2 } } + { \@@_error:nx { Invalid~specification~for~MultiArrow } { #1 } } + } +% \end{macrocode} +% +% \begin{macrocode} +\cs_new_protected:Npn \@@_MultiArrow_i:nn #1 #2 + { +% \end{macrocode} % That's why we construct a ``clist'' of \pkg{expl3} from the specification of % list given by the user. The construction of the ``clist'' must be global in -% order to exit the |\foreach| and that's why we construct the list in +% order to exit the |\foreach| and that's why we will construct the list in % |\g_tmpa_clist|. % \begin{macrocode} - \foreach \x in { #1 } + \foreach \x in { #1 } { \cs_if_free:cTF { pgf@sh@ns@wa - \l_@@_prefix_str - \x - l } - { \@@_error:nx { Wrong~line~specification~in~MultiArrow } \x } - { \clist_gput_right:Nx \g_tmpa_clist \x } + { \@@_error:nx { Wrong~line~specification~in~MultiArrow } \x } + { \clist_gput_right:Nx \g_tmpa_clist \x } } % \end{macrocode} % We sort the list |\g_tmpa_clist| because we want to extract the minimum and @@ -6221,8 +6363,8 @@ version 2005/12/01 or later. %<*LaTeX> \@@_msg_new:nn { newline~at~the~end~of~env } { - Your~environment~\{\l_@@_type_env_str\}~should~not~end~with~ - a~\token_to_str:N \\.\\ + The~environments~of~witharrows~(\{WithArrows\}~and~ + \{DispWithArrows\})~should~not~end~by~\token_to_str:N \\.\\ This~warning~might~become~an~error~in~a~future~version. } %</LaTeX> @@ -6542,15 +6684,23 @@ version 2005/12/01 or later. } % \end{macrocode} % +% \bigskip +% The following error when the user tries to use the option |xoffset| in mode +% |group| or |groups| (in fact, it's possible to use the option |xoffset| if +% there is only \emph{one} arrow: of course, the option |group| and |groups| do +% not make sense in this case but, maybe, the option was set in a +% |\WithArrowsOptions|). % \begin{macrocode} \@@_msg_new:nn { Option~xoffset~forbidden } { You~can't~use~the~option~'xoffset'~in~the~command~ - \l_@@_string_Arrow_for_msg_str\ - while~you~are~using~the~option~ + \l_@@_string_Arrow_for_msg_str\ in~the~row~\int_use:N \g_@@_line_int\ + of~your~environment~\{\l_@@_type_env_str\}~ + because~you~are~using~the~option~ ' \int_compare:nNnTF \l_@@_pos_arrow_int = 7 { group } - { groups } '. \\ + { groups } '.~It's~possible~for~an~independent~arrow~or~if~there~is~ + only~one~arrow. \\ \c_@@_option_ignored_str } % \end{macrocode} @@ -6783,6 +6933,16 @@ version 2005/12/01 or later. % \end{macrocode} % % \begin{macrocode} +\@@_msg_new:nn { Invalid~specification~for~MultiArrow } + { + The~specification~of~rows~for~\token_to_str:N\MultiArrow\ + (i.e.~#1)~is~invalid. \\ + \c_@@_command_ignored_str + } +% \end{macrocode} +% +% +% \begin{macrocode} %<*plain-TeX> \catcode `\@ = 12 \ExplSyntaxOff @@ -6949,7 +7109,7 @@ version 2005/12/01 or later. % % \subsection*{Changes between 1.16 and 1.17} % -% Option |format| +% Option |format|. % % \subsection*{Changes between 1.17 and 1.18} % @@ -6959,19 +7119,28 @@ version 2005/12/01 or later. % % Warning when |{WithArrows}| or |{DispWithArrows}| ends by "\\". % -% No space before an environnement |{DispWithArrows}| if we are at the beginning +% No space before an environment |{DispWithArrows}| if we are at the beginning % of a |{minipage}|. % % \subsection*{Changes between 1.18 and 2.0} % % A version of \pkg{witharrows} is available for plain-TeX. % +% +% \subsection*{Changes between 2.0 and 2.1 } +% +% Option |max-length-of-arrow|. +% +% Validation with regular expression for the first argument of |\MultiArrow|. +% % \PrintIndex % % \tableofcontents % % \endinput % Local Variables: -% TeX-fold-mode: nil +% TeX-fold-mode: t +% TeX-fold-preserve-comments: nil % fill-column: 80 +% ispell-local-dictionary: english % End: diff --git a/Master/texmf-dist/tex/generic/witharrows/witharrows.sty b/Master/texmf-dist/tex/generic/witharrows/witharrows.sty index 382e185d1cc..56207f14b25 100644 --- a/Master/texmf-dist/tex/generic/witharrows/witharrows.sty +++ b/Master/texmf-dist/tex/generic/witharrows/witharrows.sty @@ -18,8 +18,8 @@ %% and version 1.3 or later is part of all distributions of %% LaTeX version 2005/12/01 or later. %% -\def\myfileversion{2.0} -\def\myfiledate{2019/07/30} +\def\myfileversion{2.1} +\def\myfiledate{2019/10/21} \RequirePackage{tikz} \RequirePackage{expl3}[2019/02/15] \usetikzlibrary{arrows.meta,bending} @@ -37,7 +37,7 @@ \cs_new_protected:Npn \__wa_msg_redirect_name:nn { \msg_redirect_name:nnn { witharrows } } \cs_new_protected:Npn \__wa_error:n { \msg_error:nn { witharrows } } -\cs_new_protected:Npn \__wa_warning:n { \msg_error:nn { witharrows } } +\cs_new_protected:Npn \__wa_warning:n { \msg_warning:nn { witharrows } } \cs_new_protected:Npn \__wa_fatal:n { \msg_fatal:nn { witharrows } } \cs_new_protected:Npn \__wa_error:nn { \msg_error:nnn { witharrows } } \cs_generate_variant:Nn \__wa_error:nn { n x } @@ -126,7 +126,7 @@ } { \cs_new_protected:Npn \__wa_strcmp:nn #1 #2 - { \pdftex_strcmp:D { #1 } { #2 } } + { \tex_strcmp:D { #1 } { #2 } } } \cs_new_protected:Npn \__wa_sort_seq:N #1 { @@ -289,6 +289,9 @@ { \__wa_eval_if_allowed:n { \int_set:Nn \l__wa_pos_arrow_int { #1 } } } \keys_define:nn { WithArrows / Global } { + max-length-of-arrow .dim_set:N = \l__wa_max_length_of_arrow_dim , + max-length-of-arrow .value_required:n = true , + max-length-of-arrow .initial:n = 2 cm , ygap .dim_set:N = \l__wa_ygap_dim , ygap .value_required:n = true , ygap .initial:n = 0.4 ex , @@ -493,7 +496,7 @@ displaystyle, end-adjust, format, group, groups, i, interline, jot, ll, - lr, more-columns, name, + lr, max-length-of-arrow, more-columns, name, no-arrows, rl, rr, show-node-names, show-nodes, start-adjust, t, tikz, tikz-code, @@ -518,9 +521,9 @@ { code-after, code-before, command-name, tikz-code, adjust, displaystyle, end-adjust, fleqn, group, format, groups, i, interline, jot, - left-brace, ll, lr, mathindent, name, no-arrows, replace-left-brace-by, rl, - rr, show-node-names, show-nodes, start-adjust, tikz, wrap-lines, xoffset, - ygap, ystart, + left-brace, ll, lr, max-length-of-arrow, mathindent, name, no-arrows, + replace-left-brace-by, rl, rr, show-node-names, show-nodes, start-adjust, + tikz, wrap-lines, xoffset, ygap, ystart, allow-multiple-labels, tagged-lines, nonumber, notag } \keys_define:nn { WithArrows / WithArrowsOptions } @@ -537,8 +540,8 @@ { allow-duplicate-names, b, c, command-name, more-columns, tikz-code, adjust, displaystyle, end-adjust, fleqn, group, groups, i, interline, jot, ll, lr, - mathindent, no-arrows, rl, rr, show-node-names, show-nodes, start-adjust, t, - tikz, wrap-lines, xoffset, ygap, ystart, + mathindent, max-length-of-arrow, no-arrows, rl, rr, show-node-names, + show-nodes, start-adjust, t, tikz, wrap-lines, xoffset, ygap, ystart, allow-multiple-labels, nonumber, notag, standard-behaviour-with-items, tagged-lines } @@ -579,22 +582,19 @@ tikz-code .value_required:n = true , tikz .code:n = \prg_do_nothing: , tikz .value_required:n = true , - xoffset .code:n = - \int_compare:nNnT \l__wa_pos_arrow_int > 5 - { \__wa_error:n { Option~xoffset~forbidden } } , - xoffset .value_required:n = true , start-adjust .code:n = \prg_do_nothing: , start-adjust .value_required:n = true , end-adjust .code:n = \prg_do_nothing: , end-adjust .value_required:n = true , adjust .code:n = \prg_do_nothing: , adjust .value_required:n = true , + xoffset .code:n = , unknown .code:n = \__wa_sort_seq:N \l__wa_options_Arrow_seq \seq_if_in:NVTF \l__wa_options_WithArrows_seq \l_keys_key_tl { \str_set:Nn \l_tmpa_str - { ~However,~this~key~can~be~used~in~the~options~of~\{WithArrows\}. } + { ~However,~this~key~can~be~used~in~the~options~of~{WithArrows}. } } { \str_clear:N \l_tmpa_str } \__wa_error:n { Unknown~option~in~Arrow } @@ -625,8 +625,17 @@ lr .code:n = \__wa_fix_pos_arrow:n 0 , i .code:n = \__wa_fix_pos_arrow:n 5 , xoffset .code:n = - \int_compare:nNnF \l__wa_pos_arrow_int > 5 + \bool_if:nTF + { + \int_compare_p:nNn \g__wa_arrow_int > 1 + && + \int_compare_p:nNn \l__wa_pos_arrow_int > 5 + && + ! \str_if_eq_p:Vn \l__wa_status_arrow_str { independent } + } + { \__wa_error:n { Option~xoffset~forbidden } } { \dim_set:Nn \l__wa_xoffset_dim { #1 } } , + xoffset .value_required:n = true , start-adjust .dim_set:N = \l__wa_start_adjust_dim, end-adjust .dim_set:N = \l__wa_end_adjust_dim, adjust .code:n = @@ -838,7 +847,15 @@ \cs_new_protected:Npn \__wa_post_halign: { \cs_set:Npn \WithArrowsRightX { \g__wa_right_x_dim } - \int_compare:nNnT \g__wa_arrow_int > 0 \__wa_scan_arrows: + \int_compare:nNnT \g__wa_arrow_int > 0 + { + \int_compare:nNnT \g__wa_arrow_int = 1 + { + \int_compare:nNnT \l__wa_pos_arrow_int > 5 + { \int_set:Nn \l__wa_pos_arrow_int 5 } + } + \__wa_scan_arrows: + } \group_begin: \tikzset { every~picture / .style = __wa_standard } \cs_set:Npn \WithArrowsNbLines { \int_use:N \g__wa_line_int } @@ -970,7 +987,13 @@ \cs_new_protected:Npn \__wa_analyze_end:Nn #1 #2 { \exp_args:NV \str_if_eq:nnT \l__wa_type_env_str { #2 } - { \__wa_warning:n { newline~at~the~end~of~env } } + { + \__wa_warning:n { newline~at~the~end~of~env } + \group_begin: + \globaldefs = 1 + \__wa_msg_redirect_name:nn { newline~at~the~end~of~env } { none } + \group_end: + } \end { #2 } } \bool_new:N \l__wa_in_label_or_minipage_bool @@ -1409,28 +1432,68 @@ \bool_set_true:N \l_tmpa_bool \bool_set_true:N \l_tmpb_bool } + \dim_gzero_new:N \g__wa_x_initial_dim + \dim_gzero_new:N \g__wa_x_final_dim + \dim_gzero_new:N \g__wa_y_initial_dim + \dim_gzero_new:N \g__wa_y_final_dim \begin { tikzpicture } [ __wa_standard ] \tikz@scan@one@point \pgfutil@firstofone ( \l__wa_initial_tl ) - \tl_gset:Nx \g_tmpa_tl - { - \int_compare:nNnTF \l__wa_pos_arrow_int < 5 - { \dim_use:N \pgf@x } - { \dim_use:N \l__wa_x_dim } , - \bool_if:NTF \l_tmpa_bool - { \dim_eval:n { \pgf@y + \l__wa_start_adjust_dim } } - { \dim_use:N \pgf@y } - } + \dim_gset:Nn \g__wa_x_initial_dim \pgf@x + \dim_gset:Nn \g__wa_y_initial_dim \pgf@y \tikz@scan@one@point \pgfutil@firstofone ( \l__wa_final_tl ) - \tl_gset:Nx \g_tmpb_tl - { - \int_compare:nNnTF \l__wa_pos_arrow_int < 5 - { \dim_use:N \pgf@x } - { \dim_use:N \l__wa_x_dim } , - \bool_if:NTF \l_tmpb_bool - { \dim_eval:n { \pgf@y - \l__wa_end_adjust_dim } } - { \dim_use:N \pgf@y } - } + \dim_gset:Nn \g__wa_x_final_dim \pgf@x + \dim_gset:Nn \g__wa_y_final_dim \pgf@y \end { tikzpicture } + \bool_if:nTF + { \dim_compare_p:nNn { \g__wa_y_initial_dim - \g__wa_y_final_dim } + > \l__wa_max_length_of_arrow_dim + && + \int_compare_p:nNn { \l__wa_final_int - \l__wa_initial_int } = 1 + } + { + \tl_gset:Nx \g_tmpa_tl + { + \int_compare:nNnTF \l__wa_pos_arrow_int < 5 + { \dim_use:N \g__wa_x_initial_dim } + { \dim_use:N \l__wa_x_dim } , + \dim_eval:n + { + ( \g__wa_y_initial_dim + \g__wa_y_final_dim ) / 2 + + ( \l__wa_max_length_of_arrow_dim / 2 ) + } + } + \tl_gset:Nx \g_tmpb_tl + { + \int_compare:nNnTF \l__wa_pos_arrow_int < 5 + { \dim_use:N \g__wa_x_final_dim } + { \dim_use:N \l__wa_x_dim } , + \dim_eval:n + { + ( \g__wa_y_initial_dim + \g__wa_y_final_dim ) / 2 + - ( \l__wa_max_length_of_arrow_dim / 2 ) + } + } + } + { + \tl_gset:Nx \g_tmpa_tl + { + \int_compare:nNnTF \l__wa_pos_arrow_int < 5 + { \dim_use:N \g__wa_x_initial_dim } + { \dim_use:N \l__wa_x_dim } , + \bool_if:NTF \l_tmpa_bool + { \dim_eval:n { \g__wa_y_initial_dim + \l__wa_start_adjust_dim } } + { \dim_use:N \g__wa_y_initial_dim } + } + \tl_gset:Nx \g_tmpb_tl + { + \int_compare:nNnTF \l__wa_pos_arrow_int < 5 + { \dim_use:N \g__wa_x_final_dim } + { \dim_use:N \l__wa_x_dim } , + \bool_if:NTF \l_tmpb_bool + { \dim_eval:n { \g__wa_y_final_dim - \l__wa_end_adjust_dim } } + { \dim_use:N \g__wa_y_final_dim } + } + } \__wa_draw_arrow:nno \g_tmpa_tl \g_tmpb_tl \l_tmpa_tl \group_end: } @@ -1576,11 +1639,20 @@ } \cs_new_protected:Npn \__wa_MultiArrow:nn #1 #2 { + \exp_args:Nnx + \regex_match:nnTF + { \A \d+ (\,\d+)* ( \, \.\.\. (\,\d+)+ )* \Z } + { #1 } + { \__wa_MultiArrow_i:nn { #1 } { #2 } } + { \__wa_error:nx { Invalid~specification~for~MultiArrow } { #1 } } + } +\cs_new_protected:Npn \__wa_MultiArrow_i:nn #1 #2 + { \foreach \x in { #1 } { \cs_if_free:cTF { pgf@sh@ns@wa - \l__wa_prefix_str - \x - l } - { \__wa_error:nx { Wrong~line~specification~in~MultiArrow } \x } - { \clist_gput_right:Nx \g_tmpa_clist \x } + { \__wa_error:nx { Wrong~line~specification~in~MultiArrow } \x } + { \clist_gput_right:Nx \g_tmpa_clist \x } } \int_compare:nTF { \clist_count:N \g_tmpa_clist < 2 } { \__wa_error:n { Too~small~specification~for~MultiArrow } } @@ -1674,8 +1746,8 @@ } \__wa_msg_new:nn { newline~at~the~end~of~env } { - Your~environment~\{\l__wa_type_env_str\}~should~not~end~with~ - a~\token_to_str:N \\.\\ + The~environments~of~witharrows~(\{WithArrows\}~and~ + \{DispWithArrows\})~should~not~end~by~\token_to_str:N \\.\\ This~warning~might~become~an~error~in~a~future~version. } \__wa_msg_new:nn { Invalid~option~format } @@ -1902,11 +1974,13 @@ \__wa_msg_new:nn { Option~xoffset~forbidden } { You~can't~use~the~option~'xoffset'~in~the~command~ - \l__wa_string_Arrow_for_msg_str\ - while~you~are~using~the~option~ + \l__wa_string_Arrow_for_msg_str\ in~the~row~\int_use:N \g__wa_line_int\ + of~your~environment~\{\l__wa_type_env_str\}~ + because~you~are~using~the~option~ ' \int_compare:nNnTF \l__wa_pos_arrow_int = 7 { group } - { groups } '. \\ + { groups } '.~It's~possible~for~an~independent~arrow~or~if~there~is~ + only~one~arrow. \\ \c__wa_option_ignored_str } \__wa_msg_new:nnn { Duplicate~name } @@ -2042,6 +2116,12 @@ ~in~the~preamble~of~your~document. \\ \c__wa_option_ignored_str } +\__wa_msg_new:nn { Invalid~specification~for~MultiArrow } + { + The~specification~of~rows~for~\token_to_str:N\MultiArrow\ + (i.e.~#1)~is~invalid. \\ + \c__wa_command_ignored_str + } \endinput %% %% End of file `witharrows.sty'. |