summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/source')
-rw-r--r--Master/texmf-dist/source/latex/witharrows/witharrows.dtx483
1 files changed, 300 insertions, 183 deletions
diff --git a/Master/texmf-dist/source/latex/witharrows/witharrows.dtx b/Master/texmf-dist/source/latex/witharrows/witharrows.dtx
index c08ec2504c7..d5535702e84 100644
--- a/Master/texmf-dist/source/latex/witharrows/witharrows.dtx
+++ b/Master/texmf-dist/source/latex/witharrows/witharrows.dtx
@@ -15,8 +15,8 @@
%
% \fi
% \iffalse
-\def\myfileversion{1.9}
-\def\myfiledate{2018/08/17}
+\def\myfileversion{1.10}
+\def\myfiledate{2018/09/13}
%
%
%<*batchfile>
@@ -44,7 +44,7 @@ version 2005/12/01 or later.
\endgroup
%</batchfile>
%
-%<@@=wa>
+%<@@=ww>
%<*driver>
\documentclass[dvipsnames]{l3doc}% dvipsnames is for xcolor (loaded by Tikz, loaded by witharrows)
\usepackage{xltxtra}
@@ -74,8 +74,8 @@ version 2005/12/01 or later.
% \maketitle
%
% \begin{abstract}
-% The LaTeX package \pkg{witharrows} provides an environment |{WithArrows}| which is similar to environment
-% |{aligned}| of \pkg{amsmath} (and \pkg{mathtools}) but gives the possibility to draw arrows on the right side of
+% The LaTeX package \pkg{witharrows} provides environments |{WithArrows}| and |{DispWithArrows}| similar to the environments
+% |{aligned}| and |{align}| of \pkg{amsmath} but with the possibility to draw arrows on the right side of
% the alignment. These arrows are usually used to give explanations concerning the mathematical calculus presented.
% \end{abstract}
%
@@ -83,7 +83,7 @@ version 2005/12/01 or later.
% \vskip1cm
% This package can be used with |xelatex|, |lualatex|, |pdflatex| but also by the classical workflow
% |latex|-|dvips|-|ps2pdf| (or Adobe Distiller). Two compilations may be necessary. This package requires the
-% packages \pkg{expl3}, \pkg{xparse} and \pkg{tikz}. The following Tikz libraries \pkg{arrows.meta} and
+% packages \pkg{expl3}, \pkg{xparse} and \pkg{tikz}. The Tikz libraries \pkg{arrows.meta} and
% \pkg{bending} are also required.
%
% \bigskip
@@ -266,8 +266,8 @@ version 2005/12/01 or later.
% \end{WithArrows}$
%
% \bigskip
-% In the environments |{DispWithArrows}| and |{DispWithArrows*}|, there is an option |wrap-line|. With this option,
-% the lines of the labels are automaticly wrapped on the right: see p.~\pageref{wrap-lines}.
+% In the environments |{DispWithArrows}| and |{DispWithArrows*}|, there is an option |wrap-lines|. With this option,
+% the lines of the labels are automatically wrapped on the right: see p.~\pageref{wrap-lines}.
%
% \interitem
% If we want to change the font of the text associated to the arrow, we can, of course, put a command like
@@ -288,10 +288,12 @@ version 2005/12/01 or later.
% \end{WithArrows}$
%
% \interitem
-% If we put commands |\\| in the text to force newlines, a command of font placed in the beginning of the text will
-% have effect only until the first command |\\| (like in an environment |{tabular}|). That's why Tikz gives a option
-% |font| to modify the font of the whole text. Nevertheless, if we use the option |tikz={font={\bfseries}}|, the
-% default specification of |\small| and |\itshape| will be overwritten.
+% It's possible to put commands |\\| in the text to force new lines\footnote{By default, this is not possible in a
+% Tikz node. However, in \pkg{witharrows}, the nodes are created with the option |align=left|, and, thus, it becomes
+% possible.}. However, if we put a |\\| , a command of font placed in the beginning of the text will have effect
+% only until the first command |\\| (like in an environment |{tabular}|). That's why Tikz gives an option |font| to
+% modify the font of the whole text. Nevertheless, if we use the option |tikz={font={\bfseries}}|, the default
+% specification of |\small| and |\itshape| will be overwritten.
% %
% \begin{Verbatim}
% $\begin{WithArrows}
@@ -371,12 +373,12 @@ version 2005/12/01 or later.
% \end{WithArrows}$
%
% \interitem
-% The version 1.3 of \pkg{witharrows} give two options for a fine tuning of the arrows:
+% There are also two options for a fine tuning of the arrows:
%
% \begin{itemize}
-% \item the option |ystart| set the vertical distance between the base line of the text and the start of the arrow
+% \item the option |ystart| sets the vertical distance between the base line of the text and the start of the arrow
% (default value: 0.4 ex);
-% \item the option |ygap| set the vertical distance between two consecutive arrows (default value: 0.4~ex).
+% \item the option |ygap| sets the vertical distance between two consecutive arrows (default value: 0.4~ex).
% \end{itemize}
%
%
@@ -412,8 +414,10 @@ version 2005/12/01 or later.
% Almost all the options can also be set at the document level with the command |\WithArrowsOptions|. In this case,
% the scope of the declarations is the current TeX group (these declarations are ``semi-global''). For example, if
% we want all the environments |{WithArrows}| composed in |\displaystyle| with blue arrows, we can write
-% |\WithArrowsOptions{displaystyle,tikz=blue}|.\footnote{Since version 1.4 of \pkg{witharrows}, it's no longer possible
-% to give these options directly when loading the package, \emph{i.e.} with the command |\usepackage| in the preamble.}
+% |\WithArrowsOptions{displaystyle,tikz=blue}|.\footnote{It's also possible to configure \pkg{witharrows} by
+% modifying the Tikz style |WithArrows/arrow| which is the style used by \pkg{witharrows} when drawing an arrow.
+% For example, to have the labels in blue with roman (upright) types, one can use the following instruction:
+% |\tikzset{WithArrows/arrow/.append style = {blue, font = {}}}|.}
%
% \begin{Verbatim}
% ~emphase#\WithArrowsOptions{displaystyle,tikz=blue}@
@@ -480,9 +484,9 @@ version 2005/12/01 or later.
% \end{WithArrows}$
%
% \medskip
-% Special commands are available in |CodeAfter| : a command |\NbLines| which gives the number of lines (=rows) of
+% Special commands are available in |CodeAfter|: a command |\NbLines| which gives the number of lines (=rows) of
% the current environment (this is a command and not a counter), a special form of the command |\Arrow| and the
-% command |\MultiArrow| : these commands are described in the section concerning the nested environments,
+% command |\MultiArrow|: these commands are described in the section concerning the nested environments,
% p.~\pageref{NestedEnv}.
%
%
@@ -1121,8 +1125,8 @@ version 2005/12/01 or later.
%
% \begin{tikzpicture}[remember picture,overlay]
% \draw [WithArrows/arrow]
-% ($(~emphase#first@-1-r.south)+(3mm,0)$)
-% to ($(~emphase#second@-1-r.north)+(3mm,0)$) ;
+% ([xshift=3mm]~emphase#first@-1-r.south)
+% to ([xshift=3mm]~emphase#second@-1-r.north) ;
% \end{tikzpicture}
% \end{Verbatim}
%
@@ -1142,8 +1146,8 @@ version 2005/12/01 or later.
%
% \begin{tikzpicture}[remember picture,overlay]
% \draw [WithArrows/arrow]
-% ($(first-1-r.south)+(3mm,0)$)
-% to ($(second-1-r.north)+(3mm,0)$) ;
+% ([xshift=3mm]first-1-r.south)
+% to ([xshift=3mm]second-1-r.north) ;
% \end{tikzpicture}
%
% \section{The environment \{DispWithArrows\}}
@@ -1154,14 +1158,14 @@ version 2005/12/01 or later.
% the environments |{align}| and |{flalign}| of |amsmath|.
%
% \medskip
-% The environment |{DispWithArrows}| must be used \emph{outside} math mode.
+% The environment |{DispWithArrows}| must be used \emph{outside} math mode. Like |{align}|, it should be used in
+% horizontal mode.
% \begin{Verbatim}
% \begin{~emphase#DispWithArrows@}
% A & = (a+1)^2 \Arrow{we expand} \\
% & = a^2 + 2a + 1
% \end{~emphase#DispWithArrows@}
% \end{Verbatim}
-%
% \begin{DispWithArrows}
% A & = (a+1)^2 \Arrow{we expand} \\
% & = a^2 + 2a + 1
@@ -1174,8 +1178,7 @@ version 2005/12/01 or later.
% \pkg{mathtools}) is loaded, it's also possible to use |\tag*| which, as in \pkg{amsmath}, typesets the tag
% without the parenthesis.}
%
-% It's also possible to put a label to the line of an equation with the command |\label|.\footnote{As in the
-% environment |{align}| of \pkg{amsmath}, it's not possible to put two commands |\label| in the same line.}
+% It's also possible to put a label to the line of an equation with the command |\label|.
%
% These commands must be in the second column of the environment.
% \begin{Verbatim}
@@ -1184,7 +1187,6 @@ version 2005/12/01 or later.
% & = a^2 + 2a + 1 ~emphase#\tag{$\star$} \label{my-equation}@
% \end{DispWithArrows}
% \end{Verbatim}
-%
% \begin{DispWithArrows}
% A & = (a+1)^2 \Arrow{we expand} \notag \\
% & = a^2 + 2a + 1 \tag{$\star$} \label{my-equation}
@@ -1202,7 +1204,6 @@ version 2005/12/01 or later.
% & = a^2 + 2a + 1
% \end{~emphase#DispWithArrows*@}
% \end{Verbatim}
-%
% \begin{DispWithArrows*}
% A & = (a+1)^2 \Arrow{we expand} \\
% & = a^2 + 2a + 1
@@ -1219,7 +1220,6 @@ version 2005/12/01 or later.
% & = a^2 + 2a + 1
% \end{DispWithArrows}
% \end{Verbatim}
-%
% \begin{DispWithArrows}[fleqn,mathindent = 1cm]
% A & = (a+1)^2 \Arrow{we expand} \\
% & = a^2 + 2a + 1
@@ -1236,8 +1236,8 @@ version 2005/12/01 or later.
% |\intertext| in the environments |{DispWithArrows}| and |{DispWithArrows*}| (and even the |\intertext| of
% \pkg{nccmath} if this package is loaded).
%
-% If the option |leqno| is used (for the document or when the package \pkg{amsmath} is loaded), the labels will be
-% composed on the left also for the environments |{DispWithArrows}| et |{DispWithArrows*}|.
+% If the option |leqno| is used as a class option, the labels will be composed on the left also for the
+% environments |{DispWithArrows}| et |{DispWithArrows*}|.
%
% \bigskip
% The environment |{DispWithArrows}| is similar to the environment |{align}| of \pkg{amsmath}. However,
@@ -1247,9 +1247,10 @@ version 2005/12/01 or later.
% There are differences between |{DispWithArrows}| and |{align}|.
% \begin{itemize}
% \item The environment |{DispWithArrows}| allows only two columns.
-% \item With |{DispWithArrows}|, there is no control of a collision between an equation and its tag.
+% \item With |{DispWithArrows}|, an error is raised if there is a collision between an equation and its tag but the
+% tag is not composed on the following line.
% \item An environment |{DispWithArrows}| is always unbreakable (even with |\allowdisplaybreaks| of \pkg{amsmath}).
-% \item The commands |\label|, |\tag|, |\notag|, |\nonumber| are allowed only in the second column.
+% \item The commands |\label|, |\tag|, |\notag| and |\nonumber| are allowed only in the second column.
% \item
% \begin{bfseries}
% Last but not least, by default, the elements of a \texttt{\{DispWithArrows\}} are composed in \texttt{textstyle} and not in
@@ -1268,7 +1269,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 automaticly wrapped on the right.\label{wrap-lines}
+% the lines of the label are automatically wrapped on the right.\label{wrap-lines}
%
% \begin{Verbatim}
% \begin{DispWithArrows*}[displaystyle,~emphase#wrap-lines@]
@@ -1277,18 +1278,16 @@ version 2005/12/01 or later.
% \Arrow{sum of terms of a geometric progression of ratio $e^{i\frac{2\pi}n}$}\\
% & = \frac1n \Re \left( \frac{1-\bigl(e^{i\frac{\pi}{2n}}\bigr)^n}
% {1-e^{i\frac{\pi}{2n}}}\right)
-% \Arrow{This line has been wrapped automaticly.} \\
+% \Arrow{This line has been wrapped automatically.} \\
% & = \frac1n \Re \left(\frac{1-i}{1-e^{i\frac{\pi}{2n}}}\right)
% \end{DispWithArrows*}
% \end{Verbatim}
-%
-%
% \begin{DispWithArrows*}[displaystyle,wrap-lines]
% S_n
% & = \frac1n \Re \left(\sum_{k=0}^{n-1}\bigl(e^{i\frac{\pi}{2n}}\bigr)^k\right)
% \Arrow{sum of terms of a geometric progression of ratio $e^{i\frac{2\pi}n}$}\\
% & = \frac1n \Re \left( \frac{1-\bigl(e^{i\frac{\pi}{2n}}\bigr)^n}{1-e^{i\frac{\pi}{2n}}}\right)
-% \Arrow{This line has been wrapped automaticly.} \\
+% \Arrow{This line has been wrapped automatically.} \\
% & = \frac1n \Re \left(\frac{1-i}{1-e^{i\frac{\pi}{2n}}}\right)
% \end{DispWithArrows*}
%
@@ -1497,7 +1496,9 @@ version 2005/12/01 or later.
% \bigskip
% \subsection{Examples with the option TikzCode}
%
-% We recall that the option |TikzCode| is the Tikz code used by \pkg{witharrows} to draw the arrows.
+% We recall that the option |TikzCode| is the Tikz code used by \pkg{witharrows} to draw the arrows.\footnote{If an
+% environment |{DispWithArrows}| or |{DispWithArrows*}| is used with the option |wrap-lines|, the value of the
+% option |TikzCode| is not used for this environment (but is used for the environments nested inside).}
%
% \smallskip
% The value by defaut of |TikzCode| is \verb|\draw (#1) to node {#3} (#2) ;| where the three markers |#1|, |#2| and
@@ -1628,7 +1629,7 @@ version 2005/12/01 or later.
%
% \bigskip
% \begin{Verbatim}
-% $\begin{WithArrows}[~emphase#CodeAfter = {\NumberedLoop}@]
+% $\begin{WithArrows}[~emphase#CodeAfter = \NumberedLoop@]
% a.\;& f \text{ est continuous on } E \\
% b.\;& f \text{ est continuous in } 0 \\
% c.\;& f \text{ is bounded on the unit sphere} \\
@@ -1646,7 +1647,7 @@ version 2005/12/01 or later.
% \Arrow[rr,xoffset=1cm,tikz=<-]{1}{\NbLines}{\NbLines}}
%
%
-% $\begin{WithArrows}[CodeAfter = {\NumberedLoop}]
+% $\begin{WithArrows}[CodeAfter = \NumberedLoop]
% a.\;& f \text{ est continuous on } E \\
% b.\;& f \text{ est continuous in } 0 \\
% c.\;& f \text{ is bounded on the unit sphere} \\
@@ -1729,6 +1730,7 @@ version 2005/12/01 or later.
\bool_new:N \g_@@_footnote_bool
% \end{macrocode}
%
+%
% \medskip
% We define a set of keys |WithArrows/package| for these options. However, first, we define a ``level of options''
% |\l_@@_level_int| even if, in the version \myfileversion{} of \pkg{witharrows}, this integer is not used by the
@@ -1737,18 +1739,30 @@ version 2005/12/01 or later.
\int_new:N \l_@@_level_int
% \end{macrocode}
%
+%
% \begin{macrocode}
\keys_define:nn {WithArrows/package}
- {footnote .bool_gset:N = \g_@@_footnote_bool,
- footnotehyper .bool_gset:N = \g_@@_footnotehyper_bool}
+ {footnote .bool_gset:N = \g_@@_footnote_bool,
+ footnotehyper .bool_gset:N = \g_@@_footnotehyper_bool,
+ unknown .code:n = \msg_fatal:nn {witharrows}
+ {Option~unknown~for~package}}
% \end{macrocode}
%
+% \begin{macrocode}
+\msg_new:nnn {witharrows}
+ {Option~unknown~for~package}
+ {You~can't~use~the~option~"\tl_use:N\l_keys_key_tl"~when~loading~the~
+ package~witharrows.}
+% \end{macrocode}
+%
+%
% \bigskip
% We process the options when the package is loaded (with |\usepackage|).
% \begin{macrocode}
\ProcessKeysOptions {WithArrows/package}
% \end{macrocode}
%
+%
% \medskip
% \begin{macrocode}
\msg_new:nnn {witharrows}
@@ -1810,9 +1824,32 @@ version 2005/12/01 or later.
% environments |{WithArrows}| and |{DispWithArrows}|).
%
% \bigskip
+% \subsection{The class option leqno}
+%
+% The boolean |\c_@@_leqno_bool| will indicate if the class option |leqno| is used. When this option is used in LaTeX,
+% the command |\@eqnnum| is redefined (as one can see in the file |leqno.clo|). That's enough to put the labels on
+% the left in our environments |{DispWithArrows}| and |{DispWithArrows*}|. However, that's not enough when our
+% option |wrap-lines| is used. That's why we have to know if this option is used as a class option. With the
+% following programmation, |leqno| \emph{can't} be given as an option of \pkg{witharrows} (by design).
+% \begin{macrocode}
+\bool_new:N \c_@@_leqno_bool
+\DeclareOption {leqno} {\bool_set_true:N \c_@@_leqno_bool}
+\DeclareOption* {}
+\ProcessOptions \relax
+% \end{macrocode}
+%
+%
+%
+% \bigskip
% \subsection{Some technical definitions}
%
-% We create booleans in order to known if some packages are loaded. For example, for the package \pkg{amsmath},
+% \begin{macrocode}
+\cs_new_protected:Nn \@@_msg_error:n
+ {\msg_error:nn {witharrows} {#1}}
+% \end{macrocode}
+%
+% \medskip
+% We create booleans in order to know if some packages are loaded. For example, for the package \pkg{amsmath},
% the boolean is called |\c_@@_amsmath_loaded_bool|.\footnote{It's not possible to use |\@ifpackageloaded| in the
% core of the functions because |\@ifpackageloaded| is available only in the preamble.}
% \begin{macrocode}
@@ -1858,10 +1895,14 @@ version 2005/12/01 or later.
% \end{macrocode}
%
% \bigskip
+% The style |WithArrows/arrow| will be used to draw the arrow (more precisely, it will be pass to |every~path|).
% \begin{macrocode}
\tikzset{WithArrows/arrow/.style = { align = left,
+% \end{macrocode}
+% We have put the option |align = left| because we want to give the user the possibility of using |\\| in the labels.
+% \begin{macrocode}
auto = left,
- font = {\small\itshape},
+ font = \small\itshape,
WithArrows/arrow/tips,
bend~left = 45,
-> }}
@@ -2026,7 +2067,7 @@ version 2005/12/01 or later.
% \begin{macrocode}
\seq_new:N \l_@@_labels_seq
\cs_set:Nn \@@_label:n {\seq_if_empty:NF \l_@@_labels_seq
- {\msg_error:nn {witharrows} {Multiple~labels}}
+ {\@@_msg_error:n {Multiple~labels}}
\seq_put_right:Nn \l_@@_labels_seq {#1}
% \end{macrocode}
%
@@ -2094,16 +2135,16 @@ version 2005/12/01 or later.
% \begin{macrocode}
\keys_define:nn {WithArrows/GlobalOrEnv}
{ t .code:n = {\bool_if:NTF \l_@@_in_witharrows_bool
- {\int_set:Nn \l_@@_pos_env_int 0}
- {\msg_error:nn {witharrows} {Option~will~be~ignored}}},
+ {\int_set:Nn \l_@@_pos_env_int 0}
+ {\@@_msg_error:n {Option~will~be~ignored}}},
t .value_forbidden:n = true,
c .code:n = {\bool_if:NTF \l_@@_in_witharrows_bool
- {\int_set:Nn \l_@@_pos_env_int 1}
- {\msg_error:nn {witharrows} {Option~will~be~ignored}}},
+ {\int_set:Nn \l_@@_pos_env_int 1}
+ {\@@_msg_error:n {Option~will~be~ignored}}},
c .value_forbidden:n = true,
b .code:n = {\bool_if:NTF \l_@@_in_witharrows_bool
- {\int_set:Nn \l_@@_pos_env_int 2}
- {\msg_error:nn {witharrows} {Option~will~be~ignored}}},
+ {\int_set:Nn \l_@@_pos_env_int 2}
+ {\@@_msg_error:n {Option~will~be~ignored}}},
b .value_forbidden:n = true,
% \end{macrocode}
%
@@ -2188,8 +2229,7 @@ version 2005/12/01 or later.
% leftmost position.
% \begin{macrocode}
group .code:n = {\int_compare:nNnT \l_@@_previous_pos_arrows_int > {-1}
- {\msg_error:nn {witharrows}
- {Two~options~are~incompatible}}
+ {\@@_msg_error:n {Two~options~are~incompatible}}
\int_set:Nn \l_@@_previous_pos_arrows_int 6
\int_set:Nn \l_@@_pos_arrows_int 6} ,
group .value_forbidden:n = true,
@@ -2202,8 +2242,7 @@ version 2005/12/01 or later.
% for a individual key.
% \begin{macrocode}
groups .code:n = {\int_compare:nNnT \l_@@_previous_pos_arrows_int > {-1}
- {\msg_error:nn {witharrows}
- {Two~options~are~incompatible}}
+ {\@@_msg_error:n {Two~options~are~incompatible}}
\int_set:Nn \l_@@_previous_pos_arrows_int 7
\int_set:Nn \l_@@_pos_arrows_int 7} ,
groups .value_forbidden:n = true,
@@ -2214,7 +2253,7 @@ version 2005/12/01 or later.
% the eventual |\begin{savenotes}|).
% \begin{macrocode}
CodeBefore .code:n = {\int_compare:nNnTF \l_@@_level_int = 1
- {\msg_error:nn {witharrows} {Option~will~be~ignored}}
+ {\@@_msg_error:n {Option~will~be~ignored}}
{\tl_put_right:Nn \l_@@_code_before_tl {#1}}} ,
CodeBefore .value_required:n = true,
% \end{macrocode}
@@ -2224,7 +2263,7 @@ version 2005/12/01 or later.
% eventual |\end{savenotes}|).
% \begin{macrocode}
CodeAfter .code:n = {\int_compare:nNnTF \l_@@_level_int = 1
- {\msg_error:nn {witharrows} {Option~will~be~ignored}}
+ {\@@_msg_error:n {Option~will~be~ignored}}
{\tl_put_right:Nn \l_@@_code_after_tl {#1}}} ,
CodeAfter .value_required:n = true,
% \end{macrocode}
@@ -2235,7 +2274,7 @@ version 2005/12/01 or later.
% the environment).
% \begin{macrocode}
name .code:n = {\int_compare:nNnTF \l_@@_level_int = 1
- {\msg_error:nn {witharrows} {Option~will~be~ignored}}
+ {\@@_msg_error:n {Option~will~be~ignored}}
{\tl_set:Nn \l_@@_name_tl {#1}}} ,
name .value_required:n = true,
% \end{macrocode}
@@ -2244,7 +2283,7 @@ version 2005/12/01 or later.
% The option |fleqn| indicates wether the environments |{DispWithArrows}| are composed centered or flush left.
% \begin{macrocode}
fleqn .code:n = {\bool_if:NTF \l_@@_in_witharrows_bool
- {\msg_error:nn {witharrows} {Option~will~be~ignored}}
+ {\@@_msg_error:n {Option~will~be~ignored}}
{\tl_if_eq:nnTF {#1} {true}
{\bool_set_true:N \l_@@_fleqn_bool}
{\bool_set_false:N \l_@@_fleqn_bool}}},
@@ -2255,7 +2294,7 @@ version 2005/12/01 or later.
% The option |mathindent| is the left margin of the environments |{DispWithArrows}| when the option |fleqn| is used.
% \begin{macrocode}
mathindent .code:n = {\bool_if:NTF \l_@@_in_witharrows_bool
- {\msg_error:nn {witharrows} {Option~will~be~ignored}}
+ {\@@_msg_error:n {Option~will~be~ignored}}
{\dim_set:Nn \l_@@_mathindent_dim {#1}}},
mathindent .value_required:n = true,
% \end{macrocode}
@@ -2264,7 +2303,7 @@ version 2005/12/01 or later.
% The option |notag| indicates wether the environments |{DispWithArrows}| will be without tags (like |{DispWithArrows*}|).
% \begin{macrocode}
notag .code:n = {\bool_if:NTF \l_@@_in_witharrows_bool
- {\msg_error:nn {witharrows} {Option~will~be~ignored}}
+ {\@@_msg_error:n {Option~will~be~ignored}}
{\tl_if_eq:nnTF {#1} {true}
{\bool_set_true:N \l_@@_notag_bool}
{\bool_set_false:N \l_@@_notag_bool}}},
@@ -2277,26 +2316,26 @@ version 2005/12/01 or later.
% |{DispWithArrows}| or |{DispWithArrows*}|.
% \begin{macrocode}
AllowMultipleLabels .code:n = {\bool_if:NTF \l_@@_in_witharrows_bool
- {\msg_error:nn {witharrows} {Option~will~be~ignored}}
+ {\@@_msg_error:n {Option~will~be~ignored}}
{\msg_redirect_name:nnn {witharrows}
{Multiple~labels}
{none}}},
AllowMultipleLabels .value_forbidden:n = true,
-% \begin{macrocode}
+% \end{macrocode}
%
% \bigskip
% With the option |wrap-lines|, a special |TikzCode| is used in the environments |{DispWithArrows}| and
-% |{DispWithArrows*}| and, with this |TikzCode|, the lines of the labels are automaticly wrapped on the right.
+% |{DispWithArrows*}| and, with this |TikzCode|, the lines of the labels are automatically wrapped on the right.
% \begin{macrocode}
wrap-lines .code:n = {\bool_if:NTF \l_@@_in_witharrows_bool
- {\msg_error:nn {witharrows} {Option~will~be~ignored}}
+ {\@@_msg_error:n {Option~will~be~ignored}}
{\tl_if_eq:nnTF {#1} {true}
{\bool_set_true:N \l_@@_wrap_lines_bool}
{\bool_set_false:N \l_@@_wrap_lines_bool}}},
wrap-lines .default:n = true,
% \end{macrocode}
% \begin{macrocode}
- unknown .code:n = \msg_error:nn {witharrows} {Option~unknown}
+ unknown .code:n = \@@_msg_error:n {Option~unknown}
}
% \end{macrocode}
%
@@ -2340,8 +2379,7 @@ version 2005/12/01 or later.
% \begin{macrocode}
xoffset .code:n = {\bool_if:nTF {\int_compare_p:nNn \l_@@_level_int = 3 &&
\int_compare_p:nNn \l_@@_pos_arrows_int > 5}
- {\msg_error:nn {witharrows}
- {Option~incompatible~with~"group(s)"}}
+ {\@@_msg_error:n {Option~incompatible~with~"group(s)"}}
{\dim_set:Nn \l_@@_xoffset_dim {#1}}} ,
xoffset .value_required:n = true,
% \end{macrocode}
@@ -2353,8 +2391,7 @@ version 2005/12/01 or later.
% \begin{macrocode}
jot .code:n = {\int_compare:nNnTF \l_@@_level_int = 2
{\dim_set:Nn \jot {#1}}
- {\msg_error:nn {witharrows}
- {Option~will~be~ignored}}} ,
+ {\@@_msg_error:n {Option~will~be~ignored}}} ,
jot .value_required:n = true,
% \end{macrocode}
%
@@ -2365,16 +2402,15 @@ version 2005/12/01 or later.
% \begin{macrocode}
interline .code:n = {\int_compare:nNnTF \l_@@_level_int = 2
{\skip_set:Nn \l_@@_interline_skip {#1}}
- {\msg_error:nn {witharrows}
- {Option~will~be~ignored}}} ,
+ {\@@_msg_error:n {Option~will~be~ignored}}} ,
interline .value_required:n = true,
% \end{macrocode}
%
% \bigskip
% Eventually, a key |jump| (see below) and a key for unknown keys.
% \begin{macrocode}
- jump .code:n = \msg_error:nn {witharrows} {Option~will~be~ignored} ,
- unknown .code:n = \msg_error:nn {witharrows} {Option~unknown}
+ jump .code:n = \@@_msg_error:n {Option~will~be~ignored} ,
+ unknown .code:n = \@@_msg_error:n {Option~unknown}
}
% \end{macrocode}
%
@@ -2387,8 +2423,7 @@ version 2005/12/01 or later.
\keys_define:nn {WithArrows/jump}
{jump .code:n = {\int_set:Nn \l_@@_jump_int {#1}
\int_compare:nNnF \l_@@_jump_int > 0
- {\msg_error:nn {witharrows}
- {The~option~"jump"~must~be~non~negative}}} ,
+ {\@@_msg_error:n {The~option~"jump"~must~be~non~negative}}} ,
jump .value_required:n = true}
% \end{macrocode}
%
@@ -2398,8 +2433,7 @@ version 2005/12/01 or later.
% \begin{macrocode}
\cs_new_protected:Nn \@@_analyze_option_position:n
{\int_compare:nNnT \l_@@_previous_pos_arrows_int > {-1}
- {\msg_error:nn {witharrows}
- {Two~options~are~incompatible}}
+ {\@@_msg_error:n {Two~options~are~incompatible}}
\int_set:Nn \l_@@_previous_pos_arrows_int {#1}
% \end{macrocode}
%
@@ -2410,8 +2444,7 @@ version 2005/12/01 or later.
% \begin{macrocode}
\bool_if:nTF { \int_compare_p:nNn \l_@@_level_int = 3 &&
\int_compare_p:nNn \l_@@_pos_arrows_int > 5}
- {\msg_error:nn {witharrows}
- {Option~incompatible~with~"group(s)"}}
+ {\@@_msg_error:n {Option~incompatible~with~"group(s)"}}
{\int_set:Nn \l_@@_pos_arrows_int {#1}}}
% \end{macrocode}
%
@@ -2504,7 +2537,7 @@ version 2005/12/01 or later.
% comparison) before the |\msg_error:nn|.
% \begin{macrocode}
{\tl_set:Nn \l_tmpa_tl {Arrow}
- \msg_error:nn {witharrows} {Arrow~in~first~column}
+ \@@_msg_error:n {Arrow~in~first~column}
\@@_Arrow}
% \end{macrocode}
%
@@ -2620,8 +2653,7 @@ version 2005/12/01 or later.
\NewDocumentEnvironment {WithArrows} {O{}}
{ \bool_set_true:N \l_@@_in_witharrows_bool
\reverse_if:N \if_mode_math:
- \msg_error:nn {witharrows}
- {{WithArrows}~used~outside~math~mode}
+ \@@_msg_error:n {{WithArrows}~used~outside~math~mode}
\fi:
\cs_set:Npn \notag {\msg_error:nnn {witharrows}
{Command~not~allowed~in~{WithArrows}}
@@ -2715,7 +2747,7 @@ version 2005/12/01 or later.
% Usually, the |\halign| of an environment |{WithArrows}| will have exactly two columns. Nevertheless, if the user
% wants to use more columns (without arrows) it's possible with the option |MoreColumns|.
% \begin{macrocode}
- && \msg_error:nn {witharrows} {Third~column~in~an~environment~{WithArrows}}
+ && \@@_msg_error:n {Third~column~in~an~environment~{WithArrows}}
$\bool_if:NT \l_@@_displaystyle_bool \displaystyle {##}$
\cr
}
@@ -2728,7 +2760,15 @@ version 2005/12/01 or later.
{\crcr
\egroup
\egroup
- \@@_post_environment:}
+ \@@_post_environment:
+% \end{macrocode}
+%
+% \bigskip
+% If the option |footnote| or the option |footnotehyper| is used, then we extract the footnotes with an environment
+% |{footnote}| (of the package \pkg{footnote} or the package \pkg{footnotehyper}).
+% \begin{macrocode}
+ \bool_if:NT \g_@@_footnote_bool {\end{savenotes}}
+}
% \end{macrocode}
% This is the end of the environment |{WithArrows}|.
%
@@ -2743,7 +2783,7 @@ version 2005/12/01 or later.
% an \textsc{pgf} error for an unknown node since the nodes are created in the second column).
% \begin{macrocode}
{\int_compare:nNnT \g_@@_line_bis_int < \g_@@_line_int
- {\msg_error:nn {witharrows} {All~lines~must~have~an~ampersand}}
+ {\@@_msg_error:n {All~lines~must~have~an~ampersand}}
% \end{macrocode}
%
% \bigskip
@@ -2782,12 +2822,6 @@ version 2005/12/01 or later.
\group_end:
% \end{macrocode}
%
-% \bigskip
-% If the option |footnote| or the option |footnotehyper| is used, then we extract the footnotes with an environment
-% |{footnote}| (of the package \pkg{footnote} or the package \pkg{footnotehyper}).
-% \begin{macrocode}
- \bool_if:NT \g_@@_footnote_bool {\end{savenotes}}
-% \end{macrocode}
%
% \bigskip
% We update the position-in-the-tree. First, we drop the last component and then we increment the last element.
@@ -2851,8 +2885,7 @@ version 2005/12/01 or later.
% If there is no tag to put, we use as well the third column because you want to raise an error if the user uses
% more than two columns.
% \begin{macrocode}
- {& \tikz [remember~picture,overlay]
- \coordinate [name = wa-\l_@@_prefix_str-\int_use:N\g_@@_line_int-v ] ; }
+ {& \tikz [@@_standard] \coordinate (\int_use:N\g_@@_line_int-v) ; }
{
% \end{macrocode}
% Here, we can't use |\refstepcounter{equation}| because if the user has issued a |\tag| command, we have to use
@@ -2893,15 +2926,16 @@ version 2005/12/01 or later.
% \end{macrocode}
%
% Then, an action done by \pkg{cleveref} in its redefinition of |\refstepcounter|. The package \pkg{cleveref}
-% creates in the |aux| file a command |\cref@currentlabel| similar to |\@current| but with more informations.
+% creates in the |aux| file a command |\cref@currentlabel| similar to |\@currentlabel| but with more informations.
% \begin{macrocode}
\bool_if:NT \c_@@_cleveref_loaded_bool
{\cref@constructprefix{equation}{\cref@result}
\@ifundefined{cref@equation@alias}
{\def\@tempa{equation}}
{\def\@tempa{\csname cref@equation@alias\endcsname}}
- \protected@edef\cref@currentlabel{[\@tempa][\arabic{equation}][\cref@result]
- \p@equation \g_tmpa_tl}}
+ \protected@edef\cref@currentlabel
+ {[\@tempa][\arabic{equation}][\cref@result]
+ \p@equation \g_tmpa_tl}}
% \end{macrocode}
%
% Then, an action done by \pkg{typedref} in its redefinition of |\refstepcounter|. The command |\sr@name| is a
@@ -2924,13 +2958,16 @@ version 2005/12/01 or later.
\bool_if:NT \g_tmpa_bool {\cs_set:Npn \tagform@ {}}
% \end{macrocode}
% We use |\@eqnnum| (we recall that there are two definitions of |\@eqnnum|, a standard definition and another, loaded
-% if the option |\leqno| is used).
+% if the class option |leqno| is used). However, of course, the position of the |v|-node is not the same wether the
+% option |leqno| is used or not. That's here that we use the flag |\c_@@_leqno_bool|.
% \begin{macrocode}
\hbox_overlap_left:n
- { \tikz [@@_standard]
- \coordinate [name = \int_use:N \g_@@_line_int-v ] ;
- \quad
- \@eqnnum}
+ {\bool_if:NF \c_@@_leqno_bool
+ {\tikz [@@_standard] \coordinate (\int_use:N\g_@@_line_int-v) ;}
+ \quad
+ \@eqnnum }
+ \bool_if:NT \c_@@_leqno_bool
+ {\tikz [@@_standard] \coordinate (\int_use:N \g_@@_line_int-v) ;}
}}
\cr\noalign{\skip_vertical:n {#1 + \l_@@_interline_skip}
\scan_stop:}}
@@ -2953,7 +2990,7 @@ version 2005/12/01 or later.
\NewDocumentEnvironment {DispWithArrows} {O{}}
{
% \end{macrocode}
-% If \pkg{mathtools} has been loaded with the option |showonlyrefs|, we deactivate the code of \pkg{mathtools} for
+% If \pkg{mathtools} has been loaded with the option |showonlyrefs|, we disable the code of \pkg{mathtools} for
% the option |showonlyrefs| with the command |\MT_showonlyrefs_false:| (it will be reactivated at the end of
% the environment).
% \begin{macrocode}
@@ -2971,17 +3008,18 @@ version 2005/12/01 or later.
% \begin{macrocode}
\bool_if:NT \c_@@_amsmath_loaded_bool \intertext@
\if_mode_math:
- \msg_error:nn {witharrows}
- {{DispWithArrows}~used~in~math~mode}
+ \@@_msg_error:n {{DispWithArrows}~used~in~math~mode}
\fi:
\bool_set_false:N \l_@@_in_witharrows_bool
\@@_pre_environment:n {#1}
% \end{macrocode}
% We don't use |\[| of LaTeX because some extensions, like \pkg{autonum}, do a redefinition of |\[|. However, we
-% put the two following lines which are in the definition of |\[|.
+% put the following lines which are in the definition of |\[| even though they are in case of misuse.
% \begin{macrocode}
- \nointerlineskip
- \makebox[.6\linewidth]{}
+ \if_mode_vertical:
+ \nointerlineskip
+ \makebox[.6\linewidth]{}
+ \fi:
$$
% \end{macrocode}
% We use a |\vcenter| in order to prevent page breaks in the environment.
@@ -3002,14 +3040,14 @@ version 2005/12/01 or later.
{Command~not~allowed~in~{DispWithArrows}}
{\notag}}
\cs_set:Npn \nonumber {\msg_error:nnn {witharrows}
- {Command~not~allowed~in~{DispWithArrows}}
- {\nonumber}}
+ {Command~not~allowed~in~{DispWithArrows}}
+ {\nonumber}}
\cs_set:Npn \tag ##1 {\msg_error:nnn {witharrows}
- {Command~not~allowed~in~{DispWithArrows}}
- {\tag}}
+ {Command~not~allowed~in~{DispWithArrows}}
+ {\tag}}
\cs_set:Npn \label ##1 {\msg_error:nnn {witharrows}
- {Command~not~allowed~in~{DispWithArrows}}
- {\label}}
+ {Command~not~allowed~in~{DispWithArrows}}
+ {\label}}
\halign to \displaywidth \bgroup
\int_gincr:N \g_@@_line_int
\cs_set_eq:cN \l_@@_CommandName_tl \@@_Arrow_first_column:
@@ -3043,7 +3081,7 @@ version 2005/12/01 or later.
-\int_use:N\g_@@_line_int}}
& ##
\tabskip = \c_zero_skip
- && \msg_error:nn {witharrows} {Third~column~in~an~environment~{DispWithArrows}}
+ && \@@_msg_error:n {Third~column~in~an~environment~{DispWithArrows}}
\iffalse ## \fi
\cr}
{\\
@@ -3055,13 +3093,12 @@ version 2005/12/01 or later.
% The following |\egroup| is for the |\vcenter| (aimed to prevent page breaks).
% \begin{macrocode}
\egroup
- $$
% \end{macrocode}
%
% If the option |wrap-lines| is used (only in |{DispWithArrows}| and |{DispWithArrows*}|), we compute
% |\g_@@_x_right_dim|. As a first approximation, |\g_@@_x_right_dim| is the $x$-value of the right side of the
% current composition box. In fact, we must take into account the potential labels of the equations. That's why
-% we compute |\g_@@_x_right_dim| with the |v|-nodes of each row specificaly built in this goal. |\g_@@_x_right_dim|
+% we compute |\g_@@_x_right_dim| with the |v|-nodes of each row specifically built in this goal. |\g_@@_x_right_dim|
% is the minimal value of the $x$-value of these nodes.
% \begin{macrocode}
\bool_if:NT \l_@@_wrap_lines_bool
@@ -3075,7 +3112,22 @@ version 2005/12/01 or later.
{\dim_gset:Nn \g_@@_x_right_dim \l_tmpa_dim} }
\end{tikzpicture}}
% \end{macrocode}
-%
+%
+% \bigskip
+% We test wether there is a collision between a line and a label of equation. If there is no problem, we should
+% probably merge this code with the previous one.
+% \begin{macrocode}
+ {\begin{tikzpicture} [@@_standard]
+ \int_step_variable:nnnNn 1 1 \g_@@_line_int \l_tmpa_int
+ {\tikz@parse@node\pgfutil@firstofone (\l_tmpa_int-v)
+ \dim_set:Nn \l_tmpa_dim \pgf@x
+ \tikz@parse@node\pgfutil@firstofone (\l_tmpa_int-l)
+ \dim_set:Nn \l_tmpb_dim \pgf@x
+ \dim_compare:nNnT \l_tmpb_dim > \l_tmpa_dim
+ {\@@_msg_error:n {Collision}}}
+ \end{tikzpicture}}
+% \end{macrocode}
+%
% \bigskip
% The code in |\@@_post_environment:| is common to |{WithArrows}| and |{DispWithArrows}|.
% \begin{macrocode}
@@ -3088,6 +3140,13 @@ version 2005/12/01 or later.
\bool_if:nT \c_@@_mathtools_loaded_bool
{\MH_if_boolean:nT {show_only_refs}
\MT_showonlyrefs_true:}
+ $$
+% \end{macrocode}
+% \bigskip
+% If the option |footnote| or the option |footnotehyper| is used, then we extract the footnotes with an environment
+% |{footnote}| (of the package \pkg{footnote} or the package \pkg{footnotehyper}).
+% \begin{macrocode}
+ \bool_if:NT \g_@@_footnote_bool {\end{savenotes}}
\ignorespacesafterend
}
% \end{macrocode}
@@ -3112,7 +3171,7 @@ version 2005/12/01 or later.
% |\@eqnnum|.\footnote{There are two versions of |@eqnnum|, a standard version and a version for the option |leqno|.}
% \begin{macrocode}
\bool_if:nT {#1 && ! \bool_if_p:N \c_@@_amsmath_loaded_bool}
- { \msg_error:nn {witharrows} {tag*~without~amsmath} }
+ { \@@_msg_error:n {tag*~without~amsmath} }
}
% \end{macrocode}
%
@@ -3291,11 +3350,11 @@ version 2005/12/01 or later.
% the case where the user goes on and we try to avoid other errors.}
% \begin{macrocode}
\int_compare:nNnTF \l_@@_final_int > \g_@@_line_int
- {\msg_error:nn {witharrows} {Too~few~lines~for~an~arrow}}
- {\cs_if_free:cTF {pgf@sh@ns@wa-\l_@@_prefix_str-\int_use:N\l_@@_initial_int-l}
- { \msg_error:nn {witharrows} {A~PGF~node~doesn't~exist} }
- {\cs_if_free:cTF {pgf@sh@ns@wa-\l_@@_prefix_str-\int_use:N\l_@@_final_int-l}
- { \msg_error:nn {witharrows} {A~PGF~node~doesn't~exist} }
+ {\@@_msg_error:n {Too~few~lines~for~an~arrow}}
+ {\cs_if_free:cTF{pgf@sh@ns@wa-\l_@@_prefix_str-\int_use:N\l_@@_initial_int-l}
+ { \@@_msg_error:n {A~PGF~node~doesn't~exist} }
+ {\cs_if_free:cTF{pgf@sh@ns@wa-\l_@@_prefix_str-\int_use:N\l_@@_final_int-l}
+ { \@@_msg_error:n {A~PGF~node~doesn't~exist} }
{\@@_draw_arrows_i:}}}
\int_incr:N \l_@@_arrow_int
}
@@ -3467,20 +3526,15 @@ version 2005/12/01 or later.
\cs_new_protected:Nn \@@_draw_arrow:nnn
{
% \end{macrocode}
+%
% \medskip
-% If the option |wrap-lines| is used, we have to use a special version of |TikzCode|. Here is the use of
-% |\g_@@_x_right_dim| which has been computed previously with the |v|-nodes.
+% If the option |wrap-lines| is used, we have to use a special version of |\l_@@_tikz_code_tl| (which corresponds
+% to the option |TikzCode|).
% \begin{macrocode}
\bool_if:nT {\l_@@_wrap_lines_bool && ! \l_@@_in_witharrows_bool}
- {\tl_set:Nn \l_@@_tikz_code_tl
- {\draw (##1) to node (@@_label) {} (##2) ;
- \tikz@parse@node \pgfutil@firstofone (@@_label.west)
- \path (@@_label.west)
- node [anchor = west,
- text~width = \dim_eval:n {\g_@@_x_right_dim - \pgf@x - 0.3333 em}]
- {##3} ; }}
+ { \tl_set_eq:NN \l_@@_tikz_code_tl \c_@@_tikz_code_wrap_lines_tl }
% \end{macrocode}
-% |0.3333 em| is the default value of |inner sep| in the nodes of Tikz. Maybe we should put the exact Tikz parameter.
+%
% \medskip
% Now, the main lines of this function |\@@_draw_arrow:nnn|.
% \begin{macrocode}
@@ -3489,7 +3543,49 @@ version 2005/12/01 or later.
\cs_generate_variant:Nn \@@_draw_arrow:nnn {nno}
% \end{macrocode}
%
-%
+% \bigskip
+% If the option |wrap-lines| is used, we have to use a special version of |\l_@@_tikz_code_tl| (which corresponds
+% to the option |TikzCode|).
+% \begin{macrocode}
+\tl_set:Nn \c_@@_tikz_code_wrap_lines_tl
+ {
+% \end{macrocode}
+% First, we draw the arrow without the label.
+% \begin{macrocode}
+ \draw (#1) to node (@@_label) {} (#2) ;
+% \end{macrocode}
+% We retrieve in |\pgf@x| the abscissa of the left-side of the label we will put.
+% \begin{macrocode}
+ \tikz@parse@node \pgfutil@firstofone (@@_label.west)
+% \end{macrocode}
+% We compute in |\l_tmpa_dim| the maximal width possible for the label. |0.3333 em| is the default value of
+% |inner sep| in the nodes of Tikz. Maybe we should put the exact Tikz parameter. Here is the use of
+% |\g_@@_x_right_dim| which has been computed previously with the |v|-nodes.
+% \begin{macrocode}
+ \dim_set:Nn \l_tmpa_dim {\g_@@_x_right_dim - \pgf@x - 0.3333 em}
+% \end{macrocode}
+% We retrieve in |\g_tmpa_tl| the current value of the Tikz parameter ``|text width|''.\footnote{In fact, it's not
+% the current value of ``|text width|'': it's the value of ``|text width|'' set in the option |tikz| provided by
+% \pkg{witharrows}. These options are given to Tikz in a ``|every path|''. That's why we have to retrieve it in a path.}
+% \begin{macrocode}
+ \path \pgfextra {\tl_gset:Nx \g_tmpa_tl \tikz@text@width} ;
+% \end{macrocode}
+% Maybe the current value of the parameter ``|text width|'' is shorter than |\l_tmpa_dim|. In this case, we must
+% use ``|text width|'' (we update |\l_tmpa_dim|).
+% \begin{macrocode}
+ \tl_if_empty:NF \g_tmpa_tl
+ {\dim_set:Nn \l_tmpb_dim \g_tmpa_tl
+ \dim_compare:nNnT \l_tmpb_dim < \l_tmpa_dim
+ {\dim_set_eq:NN \l_tmpa_dim \l_tmpb_dim}}
+% \end{macrocode}
+% Now, we can put the label with the right value for |``text width''|.
+% \begin{macrocode}
+ \dim_compare:nNnT \l_tmpa_dim > \c_zero_dim
+ {\path (@@_label.west)
+ node [anchor = west, text~width = \dim_use:N \l_tmpa_dim]
+ {#3} ; } }
+% \end{macrocode}
+%
% \bigskip
% The command |\@@_update_x_value:nn| will analyze the lines\footnote{If a line has no ampersand, this line is
% ignored. In fact, we raise an error if there is a line without ampersand but, nonetheless, we consider the case
@@ -3499,7 +3595,7 @@ version 2005/12/01 or later.
% |groups|) and in |\@@_draw_arrows:nn| (for option |i|).
% \begin{macrocode}
\cs_new_protected:Nn \@@_update_x_value:nn
- {\int_step_inline:nnnn {#1} \c_one {#2}
+ {\int_step_inline:nnnn {#1} 1 {#2}
{\cs_if_exist:cT {pgf@sh@ns@wa-\l_@@_prefix_str-##1-l}
{\begin{tikzpicture} [@@_standard]
\tikz@scan@one@point\pgfutil@firstofone (##1-l)
@@ -3579,15 +3675,17 @@ version 2005/12/01 or later.
\dim_set_eq:NN \l_tmpb_dim \pgf@y
\tikz@scan@one@point\pgfutil@firstofone(#3-l.north)
\dim_set:Nn \l_tmpa_dim {\dim_max:nn \l_tmpa_dim \pgf@x}
- \tl_gset:Nx \g_tmpa_tl {\dim_use:N \l_tmpa_dim , \dim_use:N \l_tmpb_dim}
- \tl_gset:Nx \g_tmpb_tl {\dim_use:N \l_tmpa_dim , \dim_use:N \pgf@y}
+ \tl_gset:Nx \g_tmpa_tl
+ {\dim_use:N \l_tmpa_dim , \dim_use:N \l_tmpb_dim}
+ \tl_gset:Nx \g_tmpb_tl
+ {\dim_use:N \l_tmpa_dim , \dim_use:N \pgf@y}
\end{tikzpicture} }
{\begin{tikzpicture} [@@_standard]
\tikz@scan@one@point\pgfutil@firstofone
- (#2-\bool_if:NTF\l_@@_initial_r_bool rl .south)
+ (#2-\bool_if:NTF\l_@@_initial_r_bool rl .south)
\tl_gset:Nx \g_tmpa_tl {\dim_use:N \pgf@x , \dim_use:N \pgf@y}
\tikz@scan@one@point\pgfutil@firstofone
- (#3-\bool_if:NTF\l_@@_final_r_bool rl .north)
+ (#3-\bool_if:NTF\l_@@_final_r_bool rl .north)
\tl_gset:Nx \g_tmpb_tl {\dim_use:N \pgf@x , \dim_use:N \pgf@y}
\end{tikzpicture}}
\@@_draw_arrow:nnn {\g_tmpa_tl} {\g_tmpb_tl} {#4} }}
@@ -3618,7 +3716,7 @@ version 2005/12/01 or later.
% We sort the list |\g_tmpa_clist| because we want to extract the minimum and the maximum.
% \begin{macrocode}
\int_compare:nNnTF {\clist_count:N \g_tmpa_clist} < 2
- {\msg_error:nn {witharrows} {Too~small~specification~for~MultiArrow}}
+ {\@@_msg_error:n {Too~small~specification~for~MultiArrow}}
{\clist_sort:Nn \g_tmpa_clist
{\int_compare:nNnTF {##1} > {##2}
{\sort_return_swapped:}
@@ -3629,8 +3727,8 @@ version 2005/12/01 or later.
\clist_pop:NN \g_tmpa_clist \l_tmpa_tl
% \end{macrocode}
%
-% We extract the maximum in |\l_tmpb_tl|. The remaining list (in |\g_tmpa_clist| will be sorted in decreasing order
-% but never mind...).
+% We extract the maximum in |\l_tmpb_tl|. The remaining list (in |\g_tmpa_clist|) will be sorted in decreasing order
+% but never mind...
% \begin{macrocode}
\clist_reverse:N \g_tmpa_clist
\clist_pop:NN \g_tmpa_clist \l_tmpb_tl
@@ -3639,7 +3737,7 @@ version 2005/12/01 or later.
% We draw the teeth of the rak (except the first one and the last one) with the auxiliary function
% |\@@_MultiArrow_i:n|. This auxiliary fonction is necessary to expand the specification of the list in the
% |\foreach| loop. The first and the last teeth of the rak can't be drawn the same way as the others (think, for
-% example, to the case of the option ``rounded corners'' is used).
+% example, to the case of the option ``|rounded corners|'' is used).
% \begin{macrocode}
\exp_args:Nx \@@_MultiArrow_i:n {\g_tmpa_clist}
% \end{macrocode}
@@ -3653,13 +3751,15 @@ version 2005/12/01 or later.
([xshift = \l_@@_xoffset_dim+5mm]\l_tmpb_tl-r.south)
-- ([xshift = \l_@@_xoffset_dim]\l_tmpb_tl-r.south) ;
\tikz@parse@node \pgfutil@firstofone (@@_label.west)
+ \dim_set:Nn \l_tmpa_dim {20 cm}
+ \path \pgfextra {\tl_gset:Nx \g_tmpa_tl \tikz@text@width} ;
+ \tl_if_empty:NF \g_tmpa_tl {\dim_set:Nn \l_tmpa_dim \g_tmpa_tl}
+ \bool_if:nT {\l_@@_wrap_lines_bool && ! \l_@@_in_witharrows_bool}
+ {\dim_set:Nn \l_tmpb_dim {\g_@@_x_right_dim - \pgf@x - 0.3333 em}
+ \dim_compare:nNnT \l_tmpb_dim < \l_tmpa_dim
+ {\dim_set_eq:NN \l_tmpa_dim \l_tmpb_dim}}
\path (@@_label.west)
- node [anchor = west,
- text~width =
- {\bool_if:nTF {\l_@@_wrap_lines_bool && ! \l_@@_in_witharrows_bool}
- {\dim_eval:n {\g_@@_x_right_dim - \pgf@x - 0.3333 em}}
- {20 cm}}
- ] {#2} ;
+ node [anchor = west, text~width = \dim_use:N \l_tmpa_dim] {#2} ;
\end{tikzpicture} } }
\cs_new_protected:Nn \@@_MultiArrow_i:n
@@ -3672,6 +3772,22 @@ version 2005/12/01 or later.
%
% \bigskip
% \subsection{The error messages of the package}
+%
+% \begin{macrocode}
+\msg_new:nnn {witharrows}
+ {Option~unknown}
+ {The~option~"\tl_use:N\l_keys_key_tl"~is~unknown~or~
+ meaningless~in~the~context.~If~you~go~on,~it~will~be~ignored.}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\msg_new:nnn {witharrows}
+ {Collision}
+ {You~have~a~collision~(or~almost~a~collision)~at~the~end~of~row~
+ \int_use:N\g_@@_line_int.~
+ You~can~go~on~but~maybe~you~will~have~overlapping~texts.}
+% \end{macrocode}
+%
% \begin{macrocode}
\msg_new:nnn {witharrows}
{Third~column~in~an~environment~{WithArrows}}
@@ -3748,7 +3864,7 @@ version 2005/12/01 or later.
{All~lines~must~have~an~ampersand}
{All~lines~of~an~environment~\{WithArrows\}~should~
have~an~second~column~(because~the~nodes~are~created~
- in~the~second~column).~However,~you~can~go~but~you~will~
+ in~the~second~column).~However,~you~can~go~on~but~you~will~
have~an~error~if~one~of~your~arrows~needs~an~PGF~
node~absent~by~lack~of~ampersand.~If~you~don't~want~to~
see~this~message~again,~you~can~use~the~option~
@@ -3777,12 +3893,6 @@ version 2005/12/01 or later.
% \end{macrocode}
%
%
-% \begin{macrocode}
-\msg_new:nnn {witharrows}
- {Option~unknown}
- {The~option~"\tl_use:N\l_keys_key_tl"~is~unknown~or~
- meaningless~in~the~context.~If~you~go~on,~it~will~be~ignored.}
-% \end{macrocode}
%
% \begin{macrocode}
\msg_new:nnn {witharrows}
@@ -3791,11 +3901,7 @@ version 2005/12/01 or later.
\tl_if_eq:NNF \l_@@_CommandName_tl \l_tmpa_tl
{(renamed~in~\str_use:N \c_backslash_str
\tl_use:N \l_@@_CommandName_tl)~}
- ~in~the~first~column~but~only~in~the~second~column.~
- This~is~a~restriction~of~the~version~1.3~of~the~
- package~witharrows~(in~the~aim~of~developping~further~
- ~a~new~functionality~with~\token_to_str:N\Arrow\ in~the~
- first~column).\\
+ ~in~the~first~column~but~only~in~the~second~column.\\
However~you~can~go~on~for~this~time.}
% \end{macrocode}
%
@@ -3898,8 +4004,7 @@ version 2005/12/01 or later.
\bool_set_true:N \l_@@_notag_bool}}
\bool_if:NT \c_@@_amsmath_loaded_bool \intertext@
\if_mode_math:
- \msg_error:nn {witharrows}
- {{DispWithArrows}~used~in~math~mode}
+ \@@_msg_error:n {{DispWithArrows}~used~in~math~mode}
\fi:
\bool_set_false:N \l_@@_in_witharrows_bool
%
@@ -3916,17 +4021,17 @@ version 2005/12/01 or later.
{\cs_set_eq:NN \_@@_old_label \ltx@label}
{\cs_set_eq:NN \_@@_old_label \label}
\cs_set:Npn \notag {\msg_error:nnn {witharrows}
- {Command~not~allowed~in~{DispWithArrows}}
- {\notag}}
+ {Command~not~allowed~in~{DispWithArrows}}
+ {\notag}}
\cs_set:Npn \nonumber {\msg_error:nnn {witharrows}
- {Command~not~allowed~in~{DispWithArrows}}
- {\nonumber}}
+ {Command~not~allowed~in~{DispWithArrows}}
+ {\nonumber}}
\cs_set:Npn \tag ##1 {\msg_error:nnn {witharrows}
- {Command~not~allowed~in~{DispWithArrows}}
- {\tag}}
+ {Command~not~allowed~in~{DispWithArrows}}
+ {\tag}}
\cs_set:Npn \label ##1 {\msg_error:nnn {witharrows}
- {Command~not~allowed~in~{DispWithArrows}}
- {\label}}
+ {Command~not~allowed~in~{DispWithArrows}}
+ {\label}}
\halign to \displaywidth \bgroup
\int_gincr:N \g_@@_line_int
\cs_set_eq:cN \l_@@_CommandName_tl \@@_Arrow_first_column:
@@ -3949,19 +4054,19 @@ version 2005/12/01 or later.
\node [@@_node_style,
name = wa-\l_@@_prefix_str-\int_use:N\g_@@_line_int-l,
alias = {\tl_if_empty:NF \l_@@_name_tl
- {\l_@@_name_tl-\int_use:N\g_@@_line_int-l}} ] {} ;
+ {\l_@@_name_tl-\int_use:N\g_@@_line_int-l}} ] {} ;
\hfil
\tikz [remember~picture,overlay]
- \node [@@_node_style,
- name = wa-\l_@@_prefix_str-\int_use:N\g_@@_line_int-r,
- alias = {\tl_if_empty:NF \l_@@_name_tl
- {\l_@@_name_tl-\int_use:N\g_@@_line_int-r}} ] {} ;
+ \node [@@_node_style,
+ name = wa-\l_@@_prefix_str-\int_use:N\g_@@_line_int-r,
+ alias = {\tl_if_empty:NF \l_@@_name_tl
+ {\l_@@_name_tl-\int_use:N\g_@@_line_int-r}} ] {} ;
\bool_if:NT \l_@@_shownodenames_bool
{\hbox_overlap_right:n {\small wa-\l_@@_prefix_str
-\int_use:N\g_@@_line_int}}
& ##
\tabskip = \c_zero_skip
- && \msg_error:nn {witharrows} {Third~column~in~an~environment~{DispWithArrows}}
+ && \@@_msg_error:n {Third~column~in~an~environment~{DispWithArrows}}
\if_false: ## \fi:
\cr}
{ \\
@@ -3988,7 +4093,8 @@ version 2005/12/01 or later.
+ \box_dp:N \l_@@_halign_coffin}
$\left\{ \vcenter to \l_tmpa_dim {\vfil} \right.$}
\hfil}
- \coffin_typeset:Nnnnn \l_@@_halign_coffin {l} {vc} {-\displaywidth} \c_zero_dim
+ \coffin_typeset:Nnnnn
+ \l_@@_halign_coffin {l} {vc} {-\displaywidth} \c_zero_dim
$$
\_@@_post_environment:
\bool_if:nT \c_@@_mathtools_loaded_bool
@@ -4065,9 +4171,20 @@ version 2005/12/01 or later.
%
% \subsection{Changes between 1.8 and 1.9}
%
-% New options |wrap-lines| for the environments |{DispWithArrows}| and |{DispWithArrows*}|.
+% New option |wrap-lines| for the environments |{DispWithArrows}| and |{DispWithArrows*}|.
+%
+% \subsection{Changes between 1.9 and 1.10}
+%
+% If the option |wrap-lines| is used, the option ``|text width|'' of Tikz is still active: if the value given to
+% ``|text width|'' is lower than the width computed by |wrap-lines|, this value is used to wrap the lines.
+%
+% The option |wrap-lines| is now fully compatible with the class option |leqno|.
+%
+% Correction of a bug: |\nointerlineskip| and |\makebox[.6\linewidth]{}| should be inserted in |{DispWithArrows}|
+% only in vertical mode.
+%
% \endinput
%
% Local Variables:
% TeX-fold-mode: nil
-% End:
+% End