From 81ff1d170397a06ef756be4f72edcbb12886d187 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Fri, 2 Nov 2018 20:53:13 +0000 Subject: witharrows (2nov18) git-svn-id: svn://tug.org/texlive/trunk@49054 c570f23f-e606-0410-a88d-b1316a301751 --- .../texmf-dist/tex/latex/witharrows/witharrows.sty | 148 ++++++++++++--------- 1 file changed, 83 insertions(+), 65 deletions(-) (limited to 'Master/texmf-dist/tex') diff --git a/Master/texmf-dist/tex/latex/witharrows/witharrows.sty b/Master/texmf-dist/tex/latex/witharrows/witharrows.sty index 0edba169c1d..bcfd92509d5 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.10.1} -\def\myfiledate{2018/09/24} +\def\myfileversion{1.11} +\def\myfiledate{2018/11/02} \RequirePackage{tikz} \usetikzlibrary{arrows.meta,bending} \RequirePackage{l3keys2e} @@ -85,8 +85,10 @@ \DeclareOption {leqno} {\bool_set_true:N \c__ww_leqno_bool} \DeclareOption* {} \ProcessOptions \relax -\cs_new_protected:Nn \__ww_msg_error:n +\cs_new_protected:Nn \__ww_error:n {\msg_error:nn {witharrows} {#1}} +\cs_new_protected:Nn \__ww_error:nn + {\msg_error:nnn {witharrows} {#1} {#2}} \AtBeginDocument{\clist_map_inline:nn {amsmath,mathtools,autonum,cleveref,hyperref,typedref} {\bool_new:c {c__ww_#1_loaded_bool} @@ -115,7 +117,8 @@ {\cs_set_protected:Npn \spread@equation {\openup\jot \cs_set_protected:Npn \spread@equation {}}}} -\bool_new:N \l__ww_in_witharrows_bool +\bool_new:N \l__ww_in_WithArrows_bool +\bool_new:N \l__ww_in_DispWithArrows_bool \seq_new:N \g__ww_position_in_the_tree_seq \seq_gput_right:Nn \g__ww_position_in_the_tree_seq 1 \int_new:N \g__ww_last_env_int @@ -138,7 +141,7 @@ \bool_new:N \l__ww_tag_star_bool \seq_new:N \l__ww_labels_seq \cs_set:Nn \__ww_label:n {\seq_if_empty:NF \l__ww_labels_seq - {\__ww_msg_error:n {Multiple~labels}} + {\__ww_error:n {Multiple~labels}} \seq_put_right:Nn \l__ww_labels_seq {#1} \bool_if:nT \c__ww_mathtools_loaded_bool {\MH_if_boolean:nT {show_only_refs} @@ -155,17 +158,17 @@ \bool_new:N \l__ww_wrap_lines_bool \int_set:Nn \l__ww_level_int 1 \keys_define:nn {WithArrows/GlobalOrEnv} - { t .code:n = {\bool_if:NTF \l__ww_in_witharrows_bool - {\int_set:Nn \l__ww_pos_env_int 0} - {\__ww_msg_error:n {Option~will~be~ignored}}}, + { t .code:n = {\bool_if:NTF \l__ww_in_DispWithArrows_bool + {\__ww_error:n {Option~will~be~ignored} + {\int_set:Nn \l__ww_pos_env_int 0}}}, t .value_forbidden:n = true, - c .code:n = {\bool_if:NTF \l__ww_in_witharrows_bool - {\int_set:Nn \l__ww_pos_env_int 1} - {\__ww_msg_error:n {Option~will~be~ignored}}}, + c .code:n = {\bool_if:NTF \l__ww_in_DispWithArrows_bool + {\__ww_error:n {Option~will~be~ignored}} + {\int_set:Nn \l__ww_pos_env_int 1}}, c .value_forbidden:n = true, - b .code:n = {\bool_if:NTF \l__ww_in_witharrows_bool - {\int_set:Nn \l__ww_pos_env_int 2} - {\__ww_msg_error:n {Option~will~be~ignored}}}, + b .code:n = {\bool_if:NTF \l__ww_in_DispWithArrows_bool + {\__ww_error:n {Option~will~be~ignored}} + {\int_set:Nn \l__ww_pos_env_int 2}}, b .value_forbidden:n = true, ygap .dim_set:N = \l__ww_ygap_dim, ygap .value_required:n = true, @@ -196,57 +199,57 @@ shownodenames .bool_set:N = \l__ww_shownodenames_bool, shownodenames .initial:n = false, group .code:n = {\int_compare:nNnT \l__ww_previous_pos_arrows_int > {-1} - {\__ww_msg_error:n {Two~options~are~incompatible}} + {\__ww_error:n {Two~options~are~incompatible}} \int_set:Nn \l__ww_previous_pos_arrows_int 6 \int_set:Nn \l__ww_pos_arrows_int 6} , group .value_forbidden:n = true, groups .code:n = {\int_compare:nNnT \l__ww_previous_pos_arrows_int > {-1} - {\__ww_msg_error:n {Two~options~are~incompatible}} + {\__ww_error:n {Two~options~are~incompatible}} \int_set:Nn \l__ww_previous_pos_arrows_int 7 \int_set:Nn \l__ww_pos_arrows_int 7} , groups .value_forbidden:n = true, CodeBefore .code:n = {\int_compare:nNnTF \l__ww_level_int = 1 - {\__ww_msg_error:n {Option~will~be~ignored}} + {\__ww_error:n {Option~will~be~ignored}} {\tl_put_right:Nn \l__ww_code_before_tl {#1}}} , CodeBefore .value_required:n = true, CodeAfter .code:n = {\int_compare:nNnTF \l__ww_level_int = 1 - {\__ww_msg_error:n {Option~will~be~ignored}} + {\__ww_error:n {Option~will~be~ignored}} {\tl_put_right:Nn \l__ww_code_after_tl {#1}}} , CodeAfter .value_required:n = true, name .code:n = {\int_compare:nNnTF \l__ww_level_int = 1 - {\__ww_msg_error:n {Option~will~be~ignored}} + {\__ww_error:n {Option~will~be~ignored}} {\tl_set:Nn \l__ww_name_tl {#1}}} , name .value_required:n = true, - fleqn .code:n = {\bool_if:NTF \l__ww_in_witharrows_bool - {\__ww_msg_error:n {Option~will~be~ignored}} + fleqn .code:n = {\bool_if:NTF \l__ww_in_WithArrows_bool + {\__ww_error:n {Option~will~be~ignored}} {\tl_if_eq:nnTF {#1} {true} {\bool_set_true:N \l__ww_fleqn_bool} {\bool_set_false:N \l__ww_fleqn_bool}}}, fleqn .default:n = true, - mathindent .code:n = {\bool_if:NTF \l__ww_in_witharrows_bool - {\__ww_msg_error:n {Option~will~be~ignored}} + mathindent .code:n = {\bool_if:NTF \l__ww_in_WithArrows_bool + {\__ww_error:n {Option~will~be~ignored}} {\dim_set:Nn \l__ww_mathindent_dim {#1}}}, mathindent .value_required:n = true, - notag .code:n = {\bool_if:NTF \l__ww_in_witharrows_bool - {\__ww_msg_error:n {Option~will~be~ignored}} + notag .code:n = {\bool_if:NTF \l__ww_in_WithArrows_bool + {\__ww_error:n {Option~will~be~ignored}} {\tl_if_eq:nnTF {#1} {true} {\bool_set_true:N \l__ww_notag_bool} {\bool_set_false:N \l__ww_notag_bool}}}, notag .default:n = true, nonumber .meta:n = notag, - AllowMultipleLabels .code:n = {\bool_if:NTF \l__ww_in_witharrows_bool - {\__ww_msg_error:n {Option~will~be~ignored}} + AllowMultipleLabels .code:n = {\bool_if:NTF \l__ww_in_WithArrows_bool + {\__ww_error:n {Option~will~be~ignored}} {\msg_redirect_name:nnn {witharrows} {Multiple~labels} {none}}}, AllowMultipleLabels .value_forbidden:n = true, - wrap-lines .code:n = {\bool_if:NTF \l__ww_in_witharrows_bool - {\__ww_msg_error:n {Option~will~be~ignored}} + wrap-lines .code:n = {\bool_if:NTF \l__ww_in_WithArrows_bool + {\__ww_error:n {Option~will~be~ignored}} {\tl_if_eq:nnTF {#1} {true} {\bool_set_true:N \l__ww_wrap_lines_bool} {\bool_set_false:N \l__ww_wrap_lines_bool}}}, wrap-lines .default:n = true, - unknown .code:n = \__ww_msg_error:n {Option~unknown} + unknown .code:n = \__ww_error:n {Option~unknown} } \keys_define:nn {WithArrows/General} {tikz .code:n = \tikzset {WithArrows/arrow/.append~style = {#1}}, @@ -264,32 +267,32 @@ i .code:n = \__ww_analyze_option_position:n 5 , xoffset .code:n = {\bool_if:nTF {\int_compare_p:nNn \l__ww_level_int = 3 && \int_compare_p:nNn \l__ww_pos_arrows_int > 5} - {\__ww_msg_error:n {Option~incompatible~with~"group(s)"}} + {\__ww_error:n {Option~incompatible~with~"group(s)"}} {\dim_set:Nn \l__ww_xoffset_dim {#1}}} , xoffset .value_required:n = true, jot .code:n = {\int_compare:nNnTF \l__ww_level_int = 2 {\dim_set:Nn \jot {#1}} - {\__ww_msg_error:n {Option~will~be~ignored}}} , + {\__ww_error:n {Option~will~be~ignored}}} , jot .value_required:n = true, interline .code:n = {\int_compare:nNnTF \l__ww_level_int = 2 {\skip_set:Nn \l__ww_interline_skip {#1}} - {\__ww_msg_error:n {Option~will~be~ignored}}} , + {\__ww_error:n {Option~will~be~ignored}}} , interline .value_required:n = true, - jump .code:n = \__ww_msg_error:n {Option~will~be~ignored} , - unknown .code:n = \__ww_msg_error:n {Option~unknown} + jump .code:n = \__ww_error:n {Option~will~be~ignored} , + unknown .code:n = \__ww_error:n {Option~unknown} } \keys_define:nn {WithArrows/jump} {jump .code:n = {\int_set:Nn \l__ww_jump_int {#1} \int_compare:nNnF \l__ww_jump_int > 0 - {\__ww_msg_error:n {The~option~"jump"~must~be~non~negative}}} , + {\__ww_error:n {The~option~"jump"~must~be~non~negative}}} , jump .value_required:n = true} \cs_new_protected:Nn \__ww_analyze_option_position:n {\int_compare:nNnT \l__ww_previous_pos_arrows_int > {-1} - {\__ww_msg_error:n {Two~options~are~incompatible}} + {\__ww_error:n {Two~options~are~incompatible}} \int_set:Nn \l__ww_previous_pos_arrows_int {#1} \bool_if:nTF { \int_compare_p:nNn \l__ww_level_int = 3 && \int_compare_p:nNn \l__ww_pos_arrows_int > 5} - {\__ww_msg_error:n {Option~incompatible~with~"group(s)"}} + {\__ww_error:n {Option~incompatible~with~"group(s)"}} {\int_set:Nn \l__ww_pos_arrows_int {#1}}} \NewDocumentCommand \WithArrowsOptions {m} {\int_set:Nn \l__ww_previous_pos_arrows_int {-1} @@ -314,7 +317,7 @@ } \cs_new_protected:Nn \__ww_Arrow_first_column: {\tl_set:Nn \l_tmpa_tl {Arrow} - \__ww_msg_error:n {Arrow~in~first~column} + \__ww_error:n {Arrow~in~first~column} \__ww_Arrow} \cs_new_protected:Nn \__ww_pre_environment:n { \seq_gput_right:NV \g__ww_arrow_int_seq \g__ww_arrow_int @@ -344,9 +347,9 @@ \l__ww_code_before_tl \cs_set_eq:cN \l__ww_CommandName_tl \__ww_Arrow} \NewDocumentEnvironment {WithArrows} {O{}} - { \bool_set_true:N \l__ww_in_witharrows_bool + { \bool_set_true:N \l__ww_in_WithArrows_bool \reverse_if:N \if_mode_math: - \__ww_msg_error:n {{WithArrows}~used~outside~math~mode} + \__ww_error:n {{WithArrows}~used~outside~math~mode} \fi: \cs_set:Npn \notag {\msg_error:nnn {witharrows} {Command~not~allowed~in~{WithArrows}} @@ -389,7 +392,7 @@ \bool_if:NT \l__ww_shownodenames_bool {\hbox_overlap_right:n {\small wa-\l__ww_prefix_str -\int_use:N\g__ww_line_int}} - && \__ww_msg_error:n {Third~column~in~an~environment~{WithArrows}} + && \__ww_error:n {Third~column~in~an~environment~{WithArrows}} $\bool_if:NT \l__ww_displaystyle_bool \displaystyle {##}$ \cr } @@ -401,14 +404,15 @@ } \cs_new_protected:Nn \__ww_post_environment: {\int_compare:nNnT \g__ww_line_bis_int < \g__ww_line_int - {\__ww_msg_error:n {All~lines~must~have~an~ampersand}} + {\__ww_error:n {All~lines~must~have~an~ampersand}} + \cs_set:Npn \WithArrowsRightX {\g__ww_right_x_dim} \int_compare:nNnT \g__ww_arrow_int > 0 {\int_compare:nNnTF \l__ww_pos_arrows_int > 5 \__ww_draw_arrows: {\__ww_draw_arrows:nn 1 \g__ww_arrow_int}} \group_begin: \tikzset{every~picture/.style = __ww_standard} - \cs_set:Npn \NbLines {\int_use:N \g__ww_line_int} + \cs_set:Npn \WithArrowsNbLines {\int_use:N \g__ww_line_int} \cs_set_eq:NN \MultiArrow \__ww_MultiArrow:nn \cs_set_eq:cN \l__ww_CommandName_tl \__ww_Arrow_code_after \l__ww_code_after_tl @@ -433,7 +437,7 @@ {\peek_meaning:NTF [ {\__ww_cr_ii:} {\__ww_cr_ii:[\c_zero_dim]} } \cs_new_protected:Npn \__ww_cr_ii:[#1] {\group_align_safe_end: - \bool_if:NF \l__ww_in_witharrows_bool + \bool_if:NT \l__ww_in_DispWithArrows_bool {\bool_if:NTF \l__ww_notag_bool {& \tikz [__ww_standard] \coordinate (\int_use:N\g__ww_line_int-v) ; } { @@ -482,9 +486,9 @@ \bool_set_true:N \l__ww_notag_bool}} \bool_if:NT \c__ww_amsmath_loaded_bool \intertext@ \if_mode_math: - \__ww_msg_error:n {{DispWithArrows}~used~in~math~mode} + \__ww_error:n {{DispWithArrows}~used~in~math~mode} \fi: - \bool_set_false:N \l__ww_in_witharrows_bool + \bool_set_true:N \l__ww_in_DispWithArrows_bool \__ww_pre_environment:n {#1} \if_mode_vertical: \nointerlineskip @@ -544,21 +548,21 @@ -\int_use:N\g__ww_line_int}} & ## \tabskip = \c_zero_skip - && \__ww_msg_error:n {Third~column~in~an~environment~{DispWithArrows}} + && \__ww_error:n {Third~column~in~an~environment~{DispWithArrows}} \iffalse ## \fi \cr} {\\ \egroup \egroup - \bool_if:NT \l__ww_wrap_lines_bool - {\dim_gzero_new:N \g__ww_x_right_dim - \dim_gset:Nn \g__ww_x_right_dim \c_max_dim + \bool_if:NT \l__ww_in_DispWithArrows_bool + {\dim_gzero_new:N \g__ww_right_x_dim + \dim_gset:Nn \g__ww_right_x_dim \c_max_dim \begin{tikzpicture} [__ww_standard] \int_step_variable:nnnNn 1 1 \g__ww_line_int \l_tmpa_int {\tikz@parse@node\pgfutil@firstofone (\l_tmpa_int-v) \dim_set:Nn \l_tmpa_dim \pgf@x - \dim_compare:nNnT \l_tmpa_dim < \g__ww_x_right_dim - {\dim_gset:Nn \g__ww_x_right_dim \l_tmpa_dim} } + \dim_compare:nNnT \l_tmpa_dim < \g__ww_right_x_dim + {\dim_gset:Nn \g__ww_right_x_dim \l_tmpa_dim} } \end{tikzpicture}} \__ww_post_environment: \bool_if:nT \c__ww_mathtools_loaded_bool @@ -579,7 +583,7 @@ \tl_set:Nn \l__ww_tag_tl {#2} \bool_set:Nn \l__ww_tag_star_bool {#1} \bool_if:nT {#1 && ! \bool_if_p:N \c__ww_amsmath_loaded_bool} - { \__ww_msg_error:n {tag*~without~amsmath} } + { \__ww_error:n {tag*~without~amsmath} } } \NewDocumentEnvironment {DispWithArrows*} {} {\WithArrowsOptions{notag} @@ -642,11 +646,11 @@ {final} \l_tmpa_tl \int_set:Nn \l__ww_final_int {\l_tmpa_tl} \int_compare:nNnTF \l__ww_final_int > \g__ww_line_int - {\__ww_msg_error:n {Too~few~lines~for~an~arrow}} + {\__ww_error:n {Too~few~lines~for~an~arrow}} {\cs_if_free:cTF{pgf@sh@ns@wa-\l__ww_prefix_str-\int_use:N\l__ww_initial_int-l} - { \__ww_msg_error:n {A~PGF~node~doesn't~exist} } + { \__ww_error:n {A~PGF~node~doesn't~exist} } {\cs_if_free:cTF{pgf@sh@ns@wa-\l__ww_prefix_str-\int_use:N\l__ww_final_int-l} - { \__ww_msg_error:n {A~PGF~node~doesn't~exist} } + { \__ww_error:n {A~PGF~node~doesn't~exist} } {\__ww_draw_arrows_i:}}} \int_incr:N \l__ww_arrow_int } @@ -705,7 +709,7 @@ \end{tikzpicture}}} \cs_new_protected:Nn \__ww_draw_arrow:nnn { - \bool_if:nT {\l__ww_wrap_lines_bool && ! \l__ww_in_witharrows_bool} + \bool_if:nT {\l__ww_wrap_lines_bool && \l__ww_in_DispWithArrows_bool} { \tl_set_eq:NN \l__ww_tikz_code_tl \c__ww_tikz_code_wrap_lines_tl } \exp_args:No \__ww_def_function_tmpa:n \l__ww_tikz_code_tl \__ww_tmpa:nnn {#1} {#2} {#3} } @@ -714,7 +718,7 @@ { \draw (#1) to node (__ww_label) {} (#2) ; \tikz@parse@node \pgfutil@firstofone (__ww_label.west) - \dim_set:Nn \l_tmpa_dim {\g__ww_x_right_dim - \pgf@x - 0.3333 em} + \dim_set:Nn \l_tmpa_dim {\g__ww_right_x_dim - \pgf@x - 0.3333 em} \path \pgfextra {\tl_gset:Nx \g_tmpa_tl \tikz@text@width} ; \tl_if_empty:NF \g_tmpa_tl {\dim_set:Nn \l_tmpb_dim \g_tmpa_tl @@ -798,7 +802,7 @@ {\x}} {\clist_gput_right:Nx \g_tmpa_clist {\x}}} \int_compare:nNnTF {\clist_count:N \g_tmpa_clist} < 2 - {\__ww_msg_error:n {Too~small~specification~for~MultiArrow}} + {\__ww_error:n {Too~small~specification~for~MultiArrow}} {\clist_sort:Nn \g_tmpa_clist {\int_compare:nNnTF {##1} > {##2} {\sort_return_swapped:} @@ -817,8 +821,8 @@ \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__ww_wrap_lines_bool && ! \l__ww_in_witharrows_bool} - {\dim_set:Nn \l_tmpb_dim {\g__ww_x_right_dim - \pgf@x - 0.3333 em} + \bool_if:nT {\l__ww_wrap_lines_bool && \l__ww_in_DispWithArrows_bool} + {\dim_set:Nn \l_tmpb_dim {\g__ww_right_x_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 (__ww_label.west) @@ -980,9 +984,9 @@ \bool_set_true:N \l__ww_notag_bool}} \bool_if:NT \c__ww_amsmath_loaded_bool \intertext@ \if_mode_math: - \__ww_msg_error:n {{DispWithArrows}~used~in~math~mode} + \__ww_error:n {{DispWithArrows}~used~in~math~mode} \fi: - \bool_set_false:N \l__ww_in_witharrows_bool + \bool_set_true:N \l__ww_in_DispWithArrows_bool % \__ww_pre_environment:n {#2} \nointerlineskip @@ -1042,7 +1046,7 @@ -\int_use:N\g__ww_line_int}} & ## \tabskip = \c_zero_skip - && \__ww_msg_error:n {Third~column~in~an~environment~{DispWithArrows}} + && \__ww_error:n {Third~column~in~an~environment~{DispWithArrows}} \if_false: ## \fi: \cr} { \\ @@ -1078,6 +1082,20 @@ \MT_showonlyrefs_true:} \ignorespacesafterend } +\NewDocumentCommand \WithArrowsNewStyle {mm} + { \keys_if_exist:nnTF {WithArrows/General} {#1} + {\__ww_error:nn {Key~already~defined} {#1}} + {\keys_define:nn {WithArrows/General} + {#1 .code:n = {\int_compare:nNnTF \l__ww_level_int < 3 + {\keys_set:nn {WithArrows/General} {#2}} + {\__ww_error:n {Option~unknown}}}} + \group_begin: + \WithArrowsOptions{#2} + \group_end:} } +\msg_new:nnn {witharrows} + {Key~already~defined} + {The~key~'#1'~is~already~defined.~If~you~go~on,~ + your~instruction~\token_to_str:N\WithArrowsNewStyle\ will~be~ignored.} \endinput %% %% End of file `witharrows.sty'. -- cgit v1.2.3