From 2e87389219b9749fadf9591d512cb69389c234eb Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Thu, 11 Jan 2018 23:31:00 +0000 Subject: witharrows (12jan18) git-svn-id: svn://tug.org/texlive/trunk@46286 c570f23f-e606-0410-a88d-b1316a301751 --- .../texmf-dist/tex/latex/witharrows/witharrows.sty | 166 ++++++++++++--------- 1 file changed, 96 insertions(+), 70 deletions(-) (limited to 'Master/texmf-dist/tex/latex') diff --git a/Master/texmf-dist/tex/latex/witharrows/witharrows.sty b/Master/texmf-dist/tex/latex/witharrows/witharrows.sty index b18863db15c..8f4add2a4bf 100644 --- a/Master/texmf-dist/tex/latex/witharrows/witharrows.sty +++ b/Master/texmf-dist/tex/latex/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{1.2} -\def\myfiledate{2017/11/29} +\def\myfileversion{1.3} +\def\myfiledate{2018/01/11} \RequirePackage{tikz} \usetikzlibrary{calc,arrows.meta,bending} \RequirePackage{l3keys2e} @@ -30,12 +30,13 @@ {Draws arrows for explanations on the right} \RequirePackage{xparse} \RequirePackage{footnote} -\tikzstyle{__wa_node_style}=[rectangle, - inner~sep = 0 pt, - minimum~height = 3 pt, - minimum~width = 0pt, - red, - \bool_if:NT \l__wa_shownodes_bool {draw}] +\tikzset{__wa_node_style/.style={ + above = \l__wa_ystart_dim, + inner~sep = 0 pt, + minimum~width = 0pt, + minimum~height = \l__wa_ygap_dim, + red, + \bool_if:NT \l__wa_shownodes_bool {draw}}} \tikzset{TipsOfWithArrows/.style= { > = {Straight~Barb[scale=1.2,bend]}} } \cs_if_free:NT \spread@equation {\cs_set:Npn \spread@equation{\openup\jot @@ -49,6 +50,10 @@ \int_new:N \l__wa_pos_env_int \int_new:N \l__wa_pos_arrows_int \int_new:N \l__wa_previous_pos_arrows_int +\dim_new:N \l__wa_ygap_dim +\dim_set:Nn \l__wa_ygap_dim {0.4 ex} +\dim_new:N \l__wa_ystart_dim +\dim_set:Nn \l__wa_ystart_dim {0.4 ex} \dim_new:N \l__wa_xoffset_dim \dim_set:Nn \l__wa_xoffset_dim {3mm} \bool_new:N \l__wa_shownodes_bool @@ -70,6 +75,10 @@ c .value_forbidden:n = true, b .code:n = {\int_set:Nn \l__wa_pos_env_int 2}, b .value_forbidden:n = true, + ygap .dim_set:N = \l__wa_ygap_dim, + ygap .value_required:n = true, + ystart .dim_set:N = \l__wa_ystart_dim, + ystart .value_required:n = true, MoreColumns .bool_set:N = \l__wa_MoreColumns_bool, MoreColumns .value_forbidden:n = true, CommandName .tl_set:N = \l__wa_CommandName_tl, @@ -159,6 +168,10 @@ {g__wa_arrow_\l__wa_prefix_tl _\int_use:N\g__wa_arrow_int _prop} \l_tmpa_prop } +\cs_new_protected:Nn \__wa_Arrow_first_column: + {\tl_set:Nn \l_tmpa_tl {Arrow} + \msg_error:nn {witharrows} {Arrow~in~first~column} + \__wa_Arrow} \NewDocumentEnvironment {WithArrows} {O{}} { \seq_gput_right:NV \g__wa_arrow_int_seq \g__wa_arrow_int \int_gzero:N \g__wa_arrow_int @@ -195,18 +208,19 @@ \spread@equation \ialign\bgroup \int_gincr:N \g__wa_line_int + \cs_set_eq:cN \l__wa_CommandName_tl \__wa_Arrow_first_column: \strut\hfil $\bool_if:NT \l__wa_displaystyle_bool \displaystyle {##}$ & \int_gincr:N \g__wa_line_bis_int $\bool_if:NT \l__wa_displaystyle_bool \displaystyle {{}##}$ - \tikz[remember~picture] - \node [__wa_node_style] - (wa-\tl_use:N\l__wa_prefix_tl-\int_use:N\g__wa_line_int-l) {} ; + \tikz[remember~picture,overlay] + \node[__wa_node_style] + (wa-\tl_use:N\l__wa_prefix_tl-\int_use:N\g__wa_line_int-l) {} ; \hfil - \tikz[remember~picture,label~position=right] - \node [__wa_node_style] - (wa-\tl_use:N\l__wa_prefix_tl-\int_use:N\g__wa_line_int-r) {} ; + \tikz[remember~picture,overlay] + \node[__wa_node_style] + (wa-\tl_use:N\l__wa_prefix_tl-\int_use:N\g__wa_line_int-r) {} ; \bool_if:NT \l__wa_shownodenames_bool {\hbox_overlap_right:n {\small wa-\tl_use:N\l__wa_prefix_tl -\int_use:N\g__wa_line_int}} @@ -302,57 +316,57 @@ {final} \l_tmpa_tl \int_set:Nn \l__wa_final_int {\l_tmpa_tl} \int_compare:nNnT \l__wa_final_int > \g__wa_line_int - {\msg_error:nn {witharrows} {Too~few~lines~for~an~arrow}} - \group_begin: - \int_set:Nn \l__wa_previous_pos_arrows_int {-1} - \int_set:Nn \l__wa_level_int 2 - \prop_get:cnN {g__wa_arrow_\l__wa_prefix_tl - _\int_use:N\l__wa_arrow_int _prop} {options} \l_tmpa_tl - \exp_args:NNo \exp_args:No \keys_set_WithArrows: {\l_tmpa_tl} -\bool_set_false:N \l__wa_initial_r_bool -\bool_set_false:N \l__wa_final_r_bool -\int_case:nn \l__wa_pos_arrows_int - {0 {\bool_set_true:N \l__wa_initial_r_bool - \bool_set_true:N \l__wa_final_r_bool} - 2 {\bool_set_true:N \l__wa_initial_r_bool} - 3 {\bool_set_true:N \l__wa_final_r_bool}} - \int_compare:nNnT \l__wa_pos_arrows_int = 4 - { - \tikz[remember~picture] - \path let \p1 = (wa-\tl_use:N\l__wa_prefix_tl-\int_use:N\l__wa_initial_int-l) - in \pgfextra {\dim_gset:Nn \g__wa_x_dim {\x1}} ; - \__wa_actualise_x_value:nn \l__wa_initial_int \l__wa_final_int - } - \tl_set:Nx \l__wa_initial_tl - {wa-\tl_use:N\l__wa_prefix_tl-\int_use:N\l__wa_initial_int- - \bool_if:NTF\l__wa_initial_r_bool rl} - \tl_set:Nx \l__wa_final_tl - {wa-\tl_use:N\l__wa_prefix_tl-\int_use:N\l__wa_final_int- - \bool_if:NTF\l__wa_final_r_bool rl . north} - \begin{tikzpicture}[remember~picture, - overlay, - align=left, - auto=left, - font = {\small\itshape}, - TipsOfWithArrows, - ->, - looseness=1, - bend~left=45] - \prop_get:cnN {g__wa_arrow_\l__wa_prefix_tl _\int_use:N\l__wa_arrow_int _prop} - {label} \l_tmpa_tl - \draw \exp_after:wN [\l__wa_options_tikz_tl] - let \p1 = (\tl_use:N \l__wa_initial_tl), - \p2 = (\tl_use:N \l__wa_final_tl) in - (\int_compare:nNnTF \l__wa_pos_arrows_int > 3 - {\dim_use:N \g__wa_x_dim + \dim_use:N \l__wa_xoffset_dim, \y1} - {\x1 + \dim_use:N \l__wa_xoffset_dim, \y1} ) - to node [node~contents = {\tl_use:N \l_tmpa_tl}] {} - (\int_compare:nNnTF \l__wa_pos_arrows_int > 3 - {\dim_use:N \g__wa_x_dim + \dim_use:N \l__wa_xoffset_dim, \y2} - {\x2 + \dim_use:N \l__wa_xoffset_dim, \y2} ) ; - \end{tikzpicture} - \group_end: - \int_incr:N \l__wa_arrow_int + {\msg_fatal:nn {witharrows} {Too~few~lines~for~an~arrow}} + \group_begin: + \int_set:Nn \l__wa_previous_pos_arrows_int {-1} + \int_set:Nn \l__wa_level_int 2 + \prop_get:cnN {g__wa_arrow_\l__wa_prefix_tl + _\int_use:N\l__wa_arrow_int _prop} {options} \l_tmpa_tl + \exp_args:NNo \exp_args:No \keys_set_WithArrows: {\l_tmpa_tl} + \bool_set_false:N \l__wa_initial_r_bool + \bool_set_false:N \l__wa_final_r_bool + \int_case:nn \l__wa_pos_arrows_int + {0 {\bool_set_true:N \l__wa_initial_r_bool + \bool_set_true:N \l__wa_final_r_bool} + 2 {\bool_set_true:N \l__wa_initial_r_bool} + 3 {\bool_set_true:N \l__wa_final_r_bool}} + \int_compare:nNnT \l__wa_pos_arrows_int = 4 + { + \tikz[remember~picture] + \path let \p1 = (wa-\tl_use:N\l__wa_prefix_tl-\int_use:N\l__wa_initial_int-l) + in \pgfextra {\dim_gset:Nn \g__wa_x_dim {\x1}} ; + \__wa_actualise_x_value:nn \l__wa_initial_int \l__wa_final_int + } + \tl_set:Nx \l__wa_initial_tl + {wa-\tl_use:N\l__wa_prefix_tl-\int_use:N\l__wa_initial_int- + \bool_if:NTF\l__wa_initial_r_bool rl .south} + \tl_set:Nx \l__wa_final_tl + {wa-\tl_use:N\l__wa_prefix_tl-\int_use:N\l__wa_final_int- + \bool_if:NTF\l__wa_final_r_bool rl .north} + \begin{tikzpicture}[remember~picture, + overlay, + align=left, + auto=left, + font = {\small\itshape}, + TipsOfWithArrows, + ->, + looseness=1, + bend~left=45] + \prop_get:cnN {g__wa_arrow_\l__wa_prefix_tl _\int_use:N\l__wa_arrow_int _prop} + {label} \l_tmpa_tl + \draw \exp_after:wN [\l__wa_options_tikz_tl] + let \p1 = (\tl_use:N \l__wa_initial_tl), + \p2 = (\tl_use:N \l__wa_final_tl) in + (\int_compare:nNnTF \l__wa_pos_arrows_int > 3 + {\dim_use:N \g__wa_x_dim + \dim_use:N \l__wa_xoffset_dim, \y1} + {\x1 + \dim_use:N \l__wa_xoffset_dim, \y1} ) + to node [node~contents = {\tl_use:N \l_tmpa_tl}] {} + (\int_compare:nNnTF \l__wa_pos_arrows_int > 3 + {\dim_use:N \g__wa_x_dim + \dim_use:N \l__wa_xoffset_dim, \y2} + {\x2 + \dim_use:N \l__wa_xoffset_dim, \y2} ) ; + \end{tikzpicture} + \group_end: + \int_incr:N \l__wa_arrow_int } \group_end: } @@ -382,13 +396,13 @@ a~global~level~or~for~an~environment.~However,~you~can~go~one~for~this~time.} \msg_new:nnn {witharrows} {Arrow~used~outside~{WithArrows}~environment} - {The~command~\string\Arrow\space~should~be~used~only~directly~ + {The~command~\token_to_str:N\Arrow\ should~be~used~only~directly~ in~\{WithArrows\}~environment~and~not~in~a~subenvironment.~However,~you~ can~go~on.} \msg_new:nnn {witharrows} {The~option~"jump"~must~be~non~negative} {You~can't~use~a~strictly~negative~value~for~the~option~"jump"~of~command~ - \string\Arrow.~ You~can~create~an~arrow~going~backwards~with~ + \token_to_str:N\Arrow.~ You~can~create~an~arrow~going~backwards~with~ the~option~"<-"~of~Tikz.} \msg_new:nnn {witharrows} {Too~few~lines~for~an~arrow} @@ -412,9 +426,9 @@ 6 {groups}}"~ previously~set~in~the~same~ \int_case:nn\l__wa_level_int - {0 {command~\string\WithArrowsOptions} + {0 {command~\token_to_str:N\WithArrowsOptions} 1 {declaration~of~options~of~the~environment~\{WithArrows\}} - 2 {command~\string\Arrow}}.~ + 2 {command~\token_to_str:N\Arrow}}.~ If~you~go~on,~I~will~overwrite~the~first~option.} \msg_new:nnnn {witharrows} {All~lines~must~have~an~ampersand} @@ -422,7 +436,7 @@ (because~the~nodes~are~created~in~the~second~column).~You~can~go~on~but~maybe~ you~will~have~an~pgf~error~for~an~undefined~shape.} {The~ampersand~can~be~implicit~ - (e.g.~if~you~use~\string\MoveEqLeft\space~of~mathtools).} + (e.g.~if~you~use~\token_to_str:N\MoveEqLeft\ of~mathtools).} \msg_new:nnn {witharrows} {Option~incompatible~with~"group(s)"} {You~try~to~use~the~option~"\tl_use:N\l_keys_key_tl"~while~ @@ -440,6 +454,18 @@ {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.} +\msg_new:nnn {witharrows} + {Arrow~in~first~column} + {You~should~not~use~the~command~\token_to_str:N\Arrow\ + \tl_if_eq:NNF \l__wa_CommandName_tl \l_tmpa_tl + {(renamed~in~\str_use:N \c_backslash_str + \tl_use:N \l__wa_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).\\ + However~you~can~go~on~for~this~time.} \endinput %% %% End of file `witharrows.sty'. -- cgit v1.2.3