summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2019-07-31 21:04:44 +0000
committerKarl Berry <karl@freefriends.org>2019-07-31 21:04:44 +0000
commit5bd631809868c0cd6a422fb244377a4fa028d4c1 (patch)
treebe03590a3b2b5849d903aad7d43ab64db4a800ac /Master/texmf-dist/tex
parent04bd30e9411ab504dd72f7baac778196bfb3c18c (diff)
witharrows-in-latex removal
git-svn-id: svn://tug.org/texlive/trunk@51791 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex')
-rw-r--r--Master/texmf-dist/tex/latex/witharrows/witharrows.sty2037
1 files changed, 0 insertions, 2037 deletions
diff --git a/Master/texmf-dist/tex/latex/witharrows/witharrows.sty b/Master/texmf-dist/tex/latex/witharrows/witharrows.sty
deleted file mode 100644
index 563c6e8b260..00000000000
--- a/Master/texmf-dist/tex/latex/witharrows/witharrows.sty
+++ /dev/null
@@ -1,2037 +0,0 @@
-%%
-%% This is file `witharrows.sty',
-%% generated with the docstrip utility.
-%%
-%% The original source files were:
-%%
-%% witharrows.dtx (with options: `package')
-%%
-%% Copyright (C) 2017-2019 by F. Pantigny
-%%
-%% This file may be distributed and/or modified under the
-%% conditions of the LaTeX Project Public License, either
-%% version 1.3 of this license or (at your option) any later
-%% version. The latest version of this license is in:
-%%
-%% http://www.latex-project.org/lppl.txt
-%%
-%% and version 1.3 or later is part of all distributions of
-%% LaTeX version 2005/12/01 or later.
-%%
-\def\myfileversion{1.18}
-\def\myfiledate{2019/07/24}
-\RequirePackage{tikz}
-\usetikzlibrary{arrows.meta,bending}
-\RequirePackage{expl3}[2019/02/15]
-\RequirePackage{l3keys2e}
-\ProvidesExplPackage
- {witharrows}
- {\myfiledate}
- {\myfileversion}
- {Draws arrows for explanations on the right}
-\RequirePackage { xparse } [ 2018-10-17 ]
-\bool_new:N \g__wi_footnotehyper_bool
-\bool_new:N \g__wi_footnote_bool
-\cs_new_protected:Npn \__wi_msg_new:nn { \msg_new:nnn { witharrows } }
-\cs_new_protected:Npn \__wi_msg_new:nnn { \msg_new:nnnn { witharrows } }
-\cs_new_protected:Npn \__wi_msg_redirect_name:nn
- { \msg_redirect_name:nnn { witharrows } }
-\cs_new_protected:Npn \__wi_error:n { \msg_error:nn { witharrows } }
-\cs_new_protected:Npn \__wi_warning:n { \msg_error:nn { witharrows } }
-\cs_new_protected:Npn \__wi_fatal:n { \msg_fatal:nn { witharrows } }
-\cs_new_protected:Npn \__wi_error:nn { \msg_error:nnn { witharrows } }
-\cs_generate_variant:Nn \__wi_error:nn { n x }
-\keys_define:nn { WithArrows / package }
- {
- footnote .bool_gset:N = \g__wi_footnote_bool ,
- footnotehyper .bool_gset:N = \g__wi_footnotehyper_bool ,
- unknown .code:n =
- \__wi_fatal:n { Option~unknown~for~package }
- }
-\__wi_msg_new:nn { Option~unknown~for~package }
- {
- You~can't~use~the~option~'\l_keys_key_tl'~when~loading~the~
- package~witharrows.~Try~to~use~the~command~
- \token_to_str:N\WithArrowsOptions.
- }
-\ProcessKeysOptions { WithArrows / package }
-\__wi_msg_new:nn { Option~incompatible~with~Beamer }
- {
- The~option~'\l_keys_key_tl'\ is~incompatible~
- with~Beamer~because~Beamer~has~its~own~system~to~extract~footnotes.
- }
-\__wi_msg_new:nn { footnote~with~footnotehyper~package }
- {
- You~can't~use~the~option~'footnote'~because~the~package~
- footnotehyper~has~already~been~loaded.~
- If~you~want,~you~can~use~the~option~'footnotehyper'~and~the~footnotes~
- within~the~environments~of~witharrows~will~be~extracted~with~the~tools~
- of~the~package~footnotehyper.\\
- If~you~go~on,~the~package~footnote~won't~be~loaded.
- }
-\__wi_msg_new:nn { footnotehyper~with~footnote~package }
- {
- You~can't~use~the~option~'footnotehyper'~because~the~package~
- footnote~has~already~been~loaded.~
- If~you~want,~you~can~use~the~option~'footnote'~and~the~footnotes~
- within~the~environments~of~witharrows~will~be~extracted~with~the~tools~
- of~the~package~footnote.\\
- If~you~go~on,~the~package~footnotehyper~won't~be~loaded.
- }
-\bool_if:NT \g__wi_footnote_bool
- {
- \@ifclassloaded { beamer }
- { \msg_info:nn { witharrows } { Option~incompatible~with~Beamer } }
- {
- \@ifpackageloaded { footnotehyper }
- { \__wi_error:n { footnote~with~footnotehyper~package } }
- { \usepackage { footnote } }
- }
- }
-\bool_if:NT \g__wi_footnotehyper_bool
- {
- \@ifclassloaded { beamer }
- { \__wi_info:n { Option~incompatible~with~Beamer } }
- {
- \@ifpackageloaded { footnote }
- { \__wi_error:n { footnotehyper~with~footnote~package } }
- { \usepackage { footnotehyper } }
- }
- \bool_gset_true:N \g__wi_footnote_bool
- }
-\bool_new:N \c__wi_leqno_bool
-\DeclareOption { leqno } { \bool_set_true:N \c__wi_leqno_bool }
-\DeclareOption* { }
-\ProcessOptions*
-\cs_generate_variant:Nn \tl_put_right:Nn { N v }
-\cs_generate_variant:Nn \seq_set_split:Nnn { N x x }
-\AtBeginDocument
- {
- \clist_map_inline:nn
- {
- amsmath, amsthm, autonum, cleveref, hyperref, mathtools, showlabels,
- typedref, unicode-math, varwidth
- }
- {
- \bool_new:c { c__wi_#1_loaded_bool }
- \@ifpackageloaded { #1 }
- { \bool_set_true:c { c__wi_#1_loaded_bool } }
- { }
- }
- }
-\sys_if_engine_luatex:TF
- {
- \cs_new_protected:Npn \__wi_strcmp:nn #1 #2
- { \lua_now:e { l3kernel.strcmp('#1','#2') } }
- }
- {
- \cs_new_protected:Npn \__wi_strcmp:nn #1 #2
- { \pdftex_strcmp:D { #1 } { #2 } }
- }
-\cs_new_protected:Npn \__wi_sort_seq:N #1
- {
- \seq_sort:Nn #1
- {
- \int_compare:nNnTF
- {
- \__wi_strcmp:nn
- { \str_lower_case:n { ##1 } }
- { \str_lower_case:n { ##2 } }
- }
- > 0
- \sort_return_swapped:
- \sort_return_same:
- }
- }
-\cs_new_protected:Npn \__wi_convert_to_str_seq:N #1
- {
- \seq_clear:N \l_tmpa_seq
- \seq_map_inline:Nn #1
- {
- \seq_put_left:Nx \l_tmpa_seq { \tl_to_str:n { ##1 } }
- }
- \seq_set_eq:NN #1 \l_tmpa_seq
- }
-\cs_new_protected:Npn \__wi_set_seq_of_str_from_clist:Nn #1 #2
- {
- \seq_set_from_clist:Nn #1 { #2 }
- \__wi_convert_to_str_seq:N #1
- }
-\cs_new_protected:Npn \__wi_save:N #1
- {
- \seq_set_split:Nxx \l_tmpa_seq
- { \char_generate:nn { `_ } { 12 } }
- { \cs_to_str:N #1 }
- \seq_pop_left:NN \l_tmpa_seq \l_tmpa_tl
- \str_set:Nx \l_tmpa_str { \seq_item:Nn \l_tmpa_seq { -1 } }
- \use:c { \l_tmpa_str _if_exist:cF }
- { g _\seq_use:Nnnn \l_tmpa_seq _ _ _ }
- {
- \use:c { \l_tmpa_str _new:c }
- { g _\seq_use:Nnnn \l_tmpa_seq _ _ _ }
- }
- \use:c { \l_tmpa_str _gset_eq:cN }
- { g _\seq_use:Nnnn \l_tmpa_seq _ _ _ } #1
- }
-\cs_new_protected:Npn \__wi_restore:N #1
- {
- \seq_set_split:Nxx \l_tmpa_seq
- { \char_generate:nn { `_ } { 12 } }
- { \cs_to_str:N #1 }
- \seq_pop_left:NN \l_tmpa_seq \l_tmpa_tl
- \str_set:Nx \l_tmpa_str { \seq_item:Nn \l_tmpa_seq { -1 } }
- \use:c { \l_tmpa_str _set_eq:Nc }
- #1 { g_\seq_use:Nnnn \l_tmpa_seq _ _ _ }
- }
-\tikzset
- {
- __wi_node_style / .style =
- {
- above = \l__wi_ystart_dim ,
- inner~sep = \c_zero_dim ,
- minimum~width = \c_zero_dim ,
- minimum~height = \l__wi_ygap_dim
- }
- }
-\tikzset
- {
- __wi_standard / .style =
- {
- remember~picture ,
- overlay ,
- name~prefix = wa - \l__wi_prefix_str -
- }
- }
-\tikzset
- {
- WithArrows / arrow / tips / .style =
- { > = { Straight~Barb [ scale = 1.2 , bend ] } }
- }
-\tikzset
- {
- WithArrows / arrow / .style =
- {
- align = left ,
- auto = left ,
- font = \small \itshape ,
- WithArrows / arrow / tips ,
- bend~left = 45 ,
- ->
- }
- }
-\AtBeginDocument
- {
- \bool_if:NTF \c__wi_amsmath_loaded_bool
- {
- \seq_put_right:Nn \l__wi_options_WithArrowsOptions_seq { subequations }
- \seq_put_right:Nn \l__wi_options_DispWithArrows_seq { subequations }
- }
- {
- \cs_new_protected:Npn \spread@equation
- {
- \openup \jot
- \cs_set_eq:NN \spread@equation \prg_do_nothing:
- }
- }
- }
-\tl_new:N \l__wi_left_brace_tl
-\tl_set_eq:NN \l__wi_left_brace_tl \c_novalue_tl
-\bool_new:N \l__wi_in_WithArrows_bool
-\bool_new:N \l__wi_in_DispWithArrows_bool
-\bool_new:N \l__wi_in_code_after_bool
-\seq_new:N \g__wi_position_in_the_tree_seq
-\seq_gput_right:Nn \g__wi_position_in_the_tree_seq 1
-\int_new:N \g__wi_last_env_int
-\int_new:N \l__wi_pos_env_int
-\int_new:N \l__wi_pos_arrow_int
-\int_set:Nn \l__wi_pos_arrow_int 3
-\seq_new:N \g__wi_arrow_int_seq
-\int_new:N \g__wi_arrow_int
-\seq_new:N \g__wi_line_int_seq
-\int_new:N \g__wi_line_int
-\seq_new:N \g__wi_col_int_seq
-\int_new:N \g__wi_col_int
-\clist_new:N \l__wi_tags_clist
-\clist_set:Nn \l__wi_tags_clist { all }
-\cs_new_protected:Npn \__wi_test_if_to_tag:
- {
- \clist_if_in:NVT \l__wi_tags_clist \g__wi_line_int
- { \clist_set:Nn \l__wi_tags_clist { all } }
- }
-\str_new:N \l__wi_command_name_str
-\str_set:Nn \l__wi_command_name_str { Arrow }
-\str_new:N \l__wi_string_Arrow_for_msg_str
-\str_set:Nx \l__wi_string_Arrow_for_msg_str { \token_to_str:N \Arrow }
-\seq_new:N \g__wi_names_seq
-\bool_new:N \l__wi_sbwi_bool
-\bool_new:N \l__wi_in_first_columns_bool
-\bool_new:N \l__wi_tag_star_bool
-\bool_new:N \l__wi_tag_next_line_bool
-\bool_new:N \l__wi_qedhere_bool
-\bool_new:N \l__wi_new_group_bool
-\bool_new:N \l__wi_initial_r_bool
-\bool_new:N \l__wi_final_r_bool
-\tl_new:N \l__wi_initial_tl
-\tl_new:N \l__wi_final_tl
-\int_new:N \l__wi_nb_cols_int
-\str_new:N \l__wi_format_str
-\bool_new:N \l__wi_subequations_bool
-\cs_new_protected:Npn \__wi_eval_if_allowed:n #1
- {
- \str_if_empty:NTF \l__wi_previous_key_str
- {
- \str_set_eq:NN \l__wi_previous_key_str \l_keys_key_tl
- #1
- }
- { \__wi_error:n { Incompatible~options } }
- }
-\cs_new_protected:Npn \__wi_fix_pos_option:n #1
- { \__wi_eval_if_allowed:n { \int_set:Nn \l__wi_pos_arrow_int { #1 } } }
-\keys_define:nn { WithArrows / Global }
- {
- ygap .dim_set:N = \l__wi_ygap_dim ,
- ygap .value_required:n = true ,
- ygap .initial:n = 0.4 ex ,
- ystart .dim_set:N = \l__wi_ystart_dim ,
- ystart .value_required:n = true ,
- ystart .initial:n = 0.4 ex ,
- more-columns .code:n =
- \__wi_msg_redirect_name:nn { Too~much~columns~in~WithArrows } { none } ,
- more-columns .value_forbidden:n = true,
- command-name .code:n =
- \str_set:Nn \l__wi_command_name_str { #1 }
- \str_set:Nx \l__wi_string_Arrow_for_msg_str
- { \c_backslash_str Arrow~alias~\c_backslash_str #1 } ,
- command-name .value_required:n = true ,
- tikz-code .tl_set:N = \l__wi_tikz_code_tl,
- tikz-code .initial:n = \draw~(#1)~to~node{#3}~(#2)~; ,
- tikz-code .value_required:n = true ,
- TikzCode .meta:n = { tikz-code = #1 } ,
- displaystyle .bool_set:N = \l__wi_displaystyle_bool ,
- displaystyle .default:n = true ,
- show-nodes .code:n =
- \tikzset { __wi_node_style / .append~style = { draw , red } } ,
- show-nodes .value_forbidden:n = true,
- show-node-names .bool_set:N = \l__wi_show_node_names_bool ,
- show-node-names .default:n = true ,
- group .code:n =
- \str_if_empty:NTF \l__wi_previous_key_str
- {
- \str_set:Nn \l__wi_previous_key_str { group }
- \seq_remove_all:Nn \l__wi_options_Arrow_seq { xoffset }
- \int_set:Nn \l__wi_pos_arrow_int 7
- }
- { \__wi_error:n { Incompatible~options } } ,
- group .value_forbidden:n = true ,
- groups .code:n =
- \str_if_empty:NTF \l__wi_previous_key_str
- {
- \str_set:Nn \l__wi_previous_key_str { groups }
- \seq_if_in:NnF \l__wi_options_Arrow_seq { new-group }
- { \seq_put_right:Nn \l__wi_options_Arrow_seq { new-group } }
- \seq_remove_all:Nn \l__wi_options_Arrow_seq { xoffset }
- \int_set:Nn \l__wi_pos_arrow_int 6
- }
- { \__wi_error:n { Incompatible~options } } ,
- groups .value_forbidden:n = true ,
- tikz .code:n = \tikzset { WithArrows / arrow / .append~style = { #1 } } ,
- tikz .initial:n = \c_empty_tl ,
- tikz .value_required:n = true ,
- rr .value_forbidden:n = true ,
- rr .code:n = \__wi_fix_pos_option:n 3 ,
- ll .value_forbidden:n = true ,
- ll .code:n = \__wi_fix_pos_option:n 1 ,
- rl .value_forbidden:n = true ,
- rl .code:n = \__wi_fix_pos_option:n 2 ,
- lr .value_forbidden:n = true ,
- lr .code:n = \__wi_fix_pos_option:n 0 ,
- i .value_forbidden:n = true ,
- i .code:n = \__wi_fix_pos_option:n 5 ,
- xoffset .dim_set:N = \l__wi_xoffset_dim ,
- xoffset .value_required:n = true ,
- xoffset .initial:n = 3 mm ,
- jot .dim_set:N = \jot ,
- jot .value_required:n = true ,
- interline .skip_set:N = \l__wi_interline_skip ,
- interline .value_required:n = true ,
- start-adjust .dim_set:N = \l__wi_start_adjust_dim ,
- start-adjust .value_required:n = true ,
- start-adjust .initial:n = 0.4 ex ,
- end-adjust .dim_set:N = \l__wi_end_adjust_dim ,
- end-adjust .value_required:n = true ,
- end-adjust .initial:n = 0.4 ex ,
- adjust .meta:n = { start-adjust = #1 , end-adjust = #1 } ,
- adjust .value_required:n = true ,
- no-arrows .code:n =
- \cs_set_eq:NN \__wi_draw_arrows:nn \use_none:nn
- \cs_set_eq:NN \__wi_draw_arrow:nnn \use_none:nnn ,
- no-arrows .value_forbidden:n = true ,
- }
-\keys_define:nn { WithArrows / WithArrowsSpecific }
- {
- t .code:n = \int_set:Nn \l__wi_pos_env_int O ,
- t .value_forbidden:n = true ,
- c .code:n = \int_set:Nn \l__wi_pos_env_int 1 ,
- c .value_forbidden:n = true ,
- b .code:n = \int_set:Nn \l__wi_pos_env_int 2 ,
- b .value_forbidden:n = true
- }
-\clist_new:N \c__wi_extensible_delimiters_clist
-\clist_set:Nn \c__wi_extensible_delimiters_clist
- {
- \{, (, [, \lbrace, \lbrack, \lgroup, \langle, \lmoustache, \lceil, \lfloor
- }
-\AtBeginDocument
- {
- \bool_if:nT
- { \c__wi_amsmath_loaded_bool || \use:c { c__wi_unicode-math_loaded_bool } }
- {
- \clist_put_right:Nn \c__wi_extensible_delimiters_clist { \lvert, \lVert }
- }
- }
-\keys_define:nn { WithArrows / DispWithArrowsSpecific }
- {
- fleqn .bool_set:N = \l__wi_fleqn_bool ,
- fleqn .default:n = true ,
- mathindent .dim_set:N = \l__wi_mathindent_dim ,
- mathindent .value_required:n = true ,
- mathindent .initial:n = 25 pt ,
- notag .code:n =
- \str_if_eq:nnTF { #1 } { true }
- { \clist_clear:N \l__wi_tags_clist }
- { \clist_set:Nn \l__wi_tags_clist { all } } ,
- notag .default:n = true ,
- subequations .code:n =
- \bool_if:NTF \c__wi_amsmath_loaded_bool
- { \bool_set_true:N \l__wi_subequations_bool }
- {
- \__wi_error:n { amsmath~not~loaded }
- \group_begin:
- \globaldefs = 1
- \__wi_msg_redirect_name:nn { amsmath~not~loaded } { info }
- \group_end:
- } ,
- subequations .default:n = true ,
- subequations .value_forbidden:n = true ,
- nonumber .meta:n = notag ,
- allow-multiple-labels .code:n =
- \__wi_msg_redirect_name:nn { Multiple~labels } { none } ,
- allow-multiple-labels .value_forbidden:n = true ,
- wrap-lines .bool_set:N = \l__wi_wrap_lines_bool ,
- wrap-lines .default:n = true ,
- tagged-lines .code:n =
- \clist_set:Nn \l__wi_tags_clist { #1 }
- \clist_if_in:NnT \l__wi_tags_clist { first }
- {
- \clist_remove_all:Nn \l__wi_tags_clist { first }
- \clist_put_left:Nn \l__wi_tags_clist \c_one_int
- } ,
- tagged-lines .value_required:n = true ,
- replace-left-brace-by .code:n =
- {
- \clist_if_in:NnTF
- \c__wi_extensible_delimiters_clist
- { #1 }
- { \tl_set:Nn \l__wi_replace_left_brace_by_tl { #1 } }
- { \__wi_error:n { Bad~value~for~replace~brace~by } }
- } ,
- replace-left-brace-by .initial:n = \lbrace ,
- standard-behaviour-with-items .bool_set:N = \l__wi_sbwi_bool ,
- standard-behaviour-with-items .default:n = true
- }
-\keys_define:nn { WithArrows / Env }
- {
- name .code:n =
- \str_set:Nn \l_tmpa_str { #1 }
- \seq_if_in:NVTF \g__wi_names_seq \l_tmpa_str
- { \__wi_error:n { Duplicate~name } }
- { \seq_gput_left:NV \g__wi_names_seq \l_tmpa_str }
- \str_set_eq:NN \l__wi_name_str \l_tmpa_str ,
- name .value_required:n = true ,
- code-before .code:n = \tl_put_right:Nn \l__wi_code_before_tl { #1 } ,
- code-before .value_required:n = true,
- CodeBefore .meta:n = { code-before = #1 } ,
- code-after .code:n = \tl_put_right:Nn \l__wi_code_after_tl { #1 } ,
- code-after .value_required:n = true ,
- CodeAfter .meta:n = { code-after = #1 } ,
- format .code:n =
- \tl_if_empty:nTF { #1 }
- { \__wi_error:n { Invalid~option~format } }
- {
- \regex_match:nnTF { \A[rcl]*\Z } { #1 }
- { \tl_set:Nn \l__wi_format_str { #1 } }
- { \__wi_error:n { Invalid~option~format } }
- } ,
- format .value_required:n = true ,
- }
-\keys_define:nn { WithArrows }
- {
- WithArrows .inherit:n =
- {
- WithArrows / Global ,
- WithArrows / WithArrowsSpecific ,
- WithArrows / Env
- } ,
- DispWithArrows .inherit:n =
- {
- WithArrows / DispWithArrowsSpecific ,
- WithArrows / Global ,
- WithArrows / Env ,
- } ,
- WithArrowsOptions .inherit:n =
- {
- WithArrows / Global ,
- WithArrows / WithArrowsSpecific ,
- WithArrows / DispWithArrowsSpecific
- }
- }
-\seq_new:N \l__wi_options_WithArrows_seq
-\__wi_set_seq_of_str_from_clist:Nn \l__wi_options_WithArrows_seq
- {
- adjust, b, c, code-after, code-before, command-name,
- displaystyle, end-adjust,
- format, group, groups, i,
- interline, jot, ll,
- lr, more-columns, name,
- no-arrows, rl, rr,
- show-node-names, show-nodes, start-adjust,
- t, tikz, tikz-code,
- xoffset, ygap, ystart
- }
-\__wi_convert_to_str_seq:N \l__wi_options_WithArrows_seq
-\keys_define:nn { WithArrows / WithArrows }
- {
- unknown .code:n =
- \__wi_sort_seq:N \l__wi_options_WithArrows_seq
- \__wi_error:n { Unknown~option~WithArrows }
- }
-\keys_define:nn { WithArrows / DispWithArrows }
- {
- left-brace .tl_set:N = \l__wi_left_brace_tl ,
- unknown .code:n =
- \__wi_sort_seq:N \l__wi_options_DispWithArrows_seq
- \__wi_error:n { Unknown~option~DispWithArrows }
- }
-\seq_new:N \l__wi_options_DispWithArrows_seq
-\__wi_set_seq_of_str_from_clist:Nn \l__wi_options_DispWithArrows_seq
- {
- allow-multiple-labels, 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, nonumber, notag,
- replace-left-brace-by, rl, rr, show-node-names, show-nodes, start-adjust,
- tagged-lines, tikz, wrap-lines, xoffset, ygap, ystart
- }
-\keys_define:nn { WithArrows / WithArrowsOptions }
- {
- allow-duplicate-names .code:n =
- \__wi_msg_redirect_name:nn { Duplicate~name } { none } ,
- allow-duplicate-names .value_forbidden:n = true ,
- unknown .code:n =
- \__wi_sort_seq:N \l__wi_options_WithArrowsOptions_seq
- \__wi_error:n { Unknown~option~WithArrowsOptions }
- }
-\seq_new:N \l__wi_options_WithArrowsOptions_seq
-\__wi_set_seq_of_str_from_clist:Nn \l__wi_options_WithArrowsOptions_seq
- {
- allow-duplicate-names, allow-multiple-labels, b, c, command-name,
- more-columns, tikz-code, adjust, displaystyle, end-adjust, fleqn, group,
- groups, i, interline, jot, ll, lr, mathindent, no-arrows, nonumber, notag,
- rl, rr, show-node-names, show-nodes, standard-behaviour-with-items,
- start-adjust, t, tagged-lines, tikz, wrap-lines, xoffset, ygap, ystart
- }
-\cs_new_protected:Npn \__wi_set_independent:
- {
- \str_if_empty:NTF \l__wi_previous_key_str
- {
- \str_set_eq:NN \l__wi_previous_key_str \l_keys_key_tl
- \str_set:Nn \l__wi_status_arrow_str { independent }
- \str_if_eq:VnF \l_keys_value_tl { NoValue }
- { \__wi_error:n { Value~for~a~key } }
- }
- { \__wi_error:n { Incompatible~options~in~Arrow } }
- }
-\keys_define:nn { WithArrows / Arrow / FirstPass }
- {
- jump .code:n =
- \int_compare:nTF { #1 > 0 }
- { \int_set:Nn \l__wi_jump_int { #1 } }
- { \__wi_error:n { Negative~jump } } ,
- jump .value_required:n = true,
- rr .code:n = \__wi_set_independent: ,
- ll .code:n = \__wi_set_independent: ,
- rl .code:n = \__wi_set_independent: ,
- lr .code:n = \__wi_set_independent: ,
- i .code:n = \__wi_set_independent: ,
- rr .default:n = NoValue ,
- ll .default:n = NoValue ,
- rl .default:n = NoValue ,
- lr .default:n = NoValue ,
- i .default:n = NoValue ,
- new-group .value_forbidden:n = true,
- new-group .code:n =
- \int_compare:nTF { \l__wi_pos_arrow_int = 6 }
- { \str_set:Nn \l__wi_status_arrow_str { new-group } }
- { \__wi_error:n { new-group~without~groups } } ,
- tikz-code .code:n = \prg_do_nothing: ,
- tikz-code .value_required:n = true ,
- tikz .code:n = \prg_do_nothing: ,
- tikz .value_required:n = true ,
- xoffset .code:n =
- \int_compare:nNnT \l__wi_pos_arrow_int > 5
- { \__wi_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 ,
- unknown .code:n =
- \__wi_sort_seq:N \l__wi_options_Arrow_seq
- \seq_if_in:NVTF \l__wi_options_WithArrows_seq \l_keys_key_tl
- {
- \str_set:Nn \l_tmpa_str
- { ~However,~this~key~can~be~used~in~the~options~of~\{WithArrows\}. }
- }
- { \str_clear:N \l_tmpa_str }
- \__wi_error:n { Unknown~option~in~Arrow }
- }
-\seq_new:N \l__wi_options_Arrow_seq
-\__wi_set_seq_of_str_from_clist:Nn \l__wi_options_Arrow_seq
- {
- adjust, end-adjust, i, jump, ll, lr, rl, rr, start-adjust, tikz, tikz-code,
- xoffset
- }
-\cs_new_protected:Npn \__wi_fix_pos_arrow:n #1
- {
- \str_if_empty:NT \l__wi_previous_key_str
- {
- \str_set_eq:NN \l__wi_previous_key_str \l_keys_key_tl
- \int_set:Nn \l__wi_pos_arrow_int { #1 }
- }
- }
-\keys_define:nn {WithArrows / Arrow / SecondPass }
- {
- tikz-code .tl_set:N = \l__wi_tikz_code_tl ,
- tikz-code .initial:n = \draw~(#1)~to~node{#3}~(#2)~; ,
- tikz .code:n = \tikzset { WithArrows / arrow / .append~style = { #1 } } ,
- tikz .initial:n = \c_empty_tl ,
- rr .code:n = \__wi_fix_pos_arrow:n 3 ,
- ll .code:n = \__wi_fix_pos_arrow:n 1 ,
- rl .code:n = \__wi_fix_pos_arrow:n 2 ,
- lr .code:n = \__wi_fix_pos_arrow:n 0 ,
- i .code:n = \__wi_fix_pos_arrow:n 5 ,
- xoffset .code:n =
- \int_compare:nNnF \l__wi_pos_arrow_int > 5
- { \dim_set:Nn \l__wi_xoffset_dim { #1 } } ,
- start-adjust .dim_set:N = \l__wi_start_adjust_dim,
- end-adjust .dim_set:N = \l__wi_end_adjust_dim,
- adjust .code:n =
- \dim_set:Nn \l__wi_start_adjust_dim { #1 }
- \dim_set:Nn \l__wi_end_adjust_dim { #1 } ,
- }
-\NewDocumentCommand \WithArrowsOptions { m }
- {
- \str_clear_new:N \l__wi_previous_key_str
- \keys_set:nn { WithArrows / WithArrowsOptions } { #1 }
- }
-\NewDocumentCommand \__wi_Arrow { O { } m ! O { } }
- {
- \int_gincr:N \g__wi_arrow_int
- \str_clear_new:N \l__wi_previous_key_str
- \keys_set:nn { WithArrows / Arrow / FirstPass } { #1 , #3 }
- \prop_put:NnV \l_tmpa_prop { initial } \g__wi_line_int
- \int_set:Nn \l_tmpa_int { \g__wi_line_int + \l__wi_jump_int }
- \prop_put:NnV \l_tmpa_prop { final } \l_tmpa_int
- \prop_put:NnV \l_tmpa_prop { status } \l__wi_status_arrow_str
- \prop_put:Nnn \l_tmpa_prop { options } { #1 , #3 }
- \prop_put:Nnn \l_tmpa_prop { label } { #2 }
- \prop_put:Nnx \l_tmpa_prop { input-line } \msg_line_number:
- \prop_gclear_new:c
- { g__wi_arrow _ \l__wi_prefix_str _ \int_use:N \g__wi_arrow_int _ prop }
- \prop_gset_eq:cN
- { g__wi_arrow _ \l__wi_prefix_str _ \int_use:N \g__wi_arrow_int _ prop }
- \l_tmpa_prop
- }
-\cs_new_protected:Npn \__wi_Arrow_first_columns:
- { \__wi_error:n { Arrow~not~in~last~column } \__wi_Arrow }
-\cs_new_protected:Npn \__wi_pre_halign:n #1
- {
- \str_clear_new:N \l__wi_type_env_str
- \str_set:NV \l__wi_type_env_str \@currenvir
- \cs_if_exist:NT \tikz@library@external@loaded
- { \tikzset { external / export = false } }
- \str_clear_new:N \l__wi_name_str
- \str_clear_new:N \l__wi_status_arrow_str
- \dim_zero_new:N \l__wi_x_dim
- \str_clear_new:N \l__wi_input_line_str
- \seq_gput_right:NV \g__wi_arrow_int_seq \g__wi_arrow_int
- \int_gzero:N \g__wi_arrow_int
- \seq_gput_right:NV \g__wi_line_int_seq \g__wi_line_int
- \int_gzero:N \g__wi_line_int
- \seq_gput_right:NV \g__wi_col_int_seq \g__wi_col_int
- \int_gzero:N \g__wi_col_int
- \int_gzero_new:N \g__wi_static_col_int
- \seq_gput_right:Nn \g__wi_position_in_the_tree_seq 1
- \seq_set_eq:NN \l_tmpa_seq \g__wi_position_in_the_tree_seq
- \seq_pop_right:NN \l_tmpa_seq \l_tmpa_tl
- \str_clear_new:N \l__wi_prefix_str
- \str_set:Nx \l__wi_prefix_str { \seq_use:Nnnn \l_tmpa_seq - - - }
- \cs_set_eq:NN \\ \__wi_cr:
- \dim_zero:N \mathsurround
- \int_zero_new:N \l__wi_initial_int
- \int_zero_new:N \l__wi_final_int
- \int_zero_new:N \l__wi_arrow_int
- \int_zero_new:N \l__wi_pos_of_arrow_int
- \int_zero_new:N \l__wi_jump_int
- \int_set:Nn \l__wi_jump_int \c_one_int
- \str_set:Nn \l__wi_format_str { rl }
- \seq_clear_new:N \l__wi_labels_seq
- \bool_set_false:N \l__wi_tag_next_line_bool
- \skip_zero:N \l__wi_interline_skip
- \tl_clear_new:N \l__wi_code_before_tl
- \tl_clear_new:N \l__wi_code_after_tl
- \str_clear_new:N \l__wi_previous_key_str
- \bool_if:NT \l__wi_in_WithArrows_bool
- { \keys_set:nn { WithArrows / WithArrows } { #1 } }
- \bool_if:NT \l__wi_in_DispWithArrows_bool
- { \keys_set:nn { WithArrows / DispWithArrows } { #1 } }
- \cs_set_eq:cN \l__wi_command_name_str \__wi_Arrow_first_columns:
- \int_set:Nn \l__wi_nb_cols_int { \str_count:N \l__wi_format_str }
- \int_gset_eq:NN \g__wi_col_int \l__wi_nb_cols_int
- \seq_clear_new:N \l__wi_format_seq
- \seq_set_split:NnV \l__wi_format_seq { } \l__wi_format_str
- \bool_if:NT \g__wi_footnote_bool { \begin { savenotes } }
- \l__wi_code_before_tl
- \spread@equation
- \cs_set_eq:NN \notag \__wi_notag:
- \cs_set_eq:NN \nonumber \__wi_nonumber:
- \cs_set_eq:NN \tag \__wi_tag
- \cs_set_eq:NN \__wi_old_label \label
- \cs_set_eq:NN \label \__wi_label:n
- \cs_set_eq:NN \tagnextline \__wi_tagnextline:
- }
-\cs_new_protected:Npn \__wi_construct_halign:
- {
- \seq_pop_right:NNTF \l__wi_format_seq \l__wi_type_col_str
- {
- \use:x
- {
- \int_gdecr:N \g__wi_col_int
- \__wi_construct_halign:
- \int_compare:nNnT \g__wi_col_int = \l__wi_nb_cols_int
- {
- \cs_set_eq:cN { \l__wi_command_name_str } \__wi_Arrow
- \bool_if:NT \l__wi_in_DispWithArrows_bool
- {
- \__wi_test_if_to_tag:
- \bool_if:NT \c__wi_amsthm_loaded_bool \__wi_set_qedhere:
- }
- }
- \str_if_eq:VnT \l__wi_type_col_str { c } \hfil
- \str_if_eq:VnT \l__wi_type_col_str { r } \hfill
- \int_gincr:N \g__wi_col_int
- \int_gset:Nn \g__wi_static_col_int { \int_use:N \g__wi_col_int }
- \c_math_toggle_token
- {
- { }
- \bool_if:NT \l__wi_displaystyle_bool \displaystyle
- ####
- }
- \c_math_toggle_token
- \int_compare:nNnTF \g__wi_col_int = \l__wi_nb_cols_int
- { \__wi_construct_nodes: }
- {
- \str_if_eq:VnT \l__wi_type_col_str { l } \hfil
- \str_if_eq:VnT \l__wi_type_col_str { c } \hfil
- \bool_if:NT \l__wi_in_DispWithArrows_bool { \tabskip = \c_zero_skip }
- &
- }
- }
- }
- {
- \bool_if:NTF \l__wi_in_WithArrows_bool
- {
- \ialign
- \bgroup
- }
- {
- \halign to \l__wi_linewidth_dim
- \bgroup
- \bool_if:NT \l__wi_fleqn_bool
- { \skip_horizontal:N \l__wi_mathindent_dim }
- }
- \int_gincr:N \g__wi_line_int
- \int_gzero:N \g__wi_col_int
- \tl_if_eq:NNF \l__wi_left_brace_tl \c_novalue_tl
- {
- \skip_horizontal:n
- { \box_wd:N \l__wi_left_brace_box + \l__wi_delim_wd_dim }
- }
- \strut
- }
- }
-\cs_new_protected:Npn \__wi_construct_nodes:
- {
- \tikz [ remember~picture , overlay ]
- \node
- [
- node~contents = { } ,
- __wi_node_style ,
- name = wa - \l__wi_prefix_str - \int_use:N \g__wi_line_int - l ,
- alias =
- {
- \str_if_empty:NF \l__wi_name_str
- { \l__wi_name_str - \int_use:N \g__wi_line_int - l }
- }
- ]
- ;
- \hfil
- \tikz [ remember~picture , overlay ]
- \node
- [
- node~contents = { } ,
- __wi_node_style ,
- name = wa - \l__wi_prefix_str - \int_use:N \g__wi_line_int - r ,
- alias =
- {
- \str_if_empty:NF \l__wi_name_str
- { \l__wi_name_str - \int_use:N \g__wi_line_int - r }
- }
- ]
- ;
- \bool_if:NT \l__wi_show_node_names_bool
- {
- \hbox_overlap_right:n
- { \small wa - \l__wi_prefix_str - \int_use:N \g__wi_line_int - r }
- }
- }
-\NewDocumentEnvironment { WithArrows } { ! O { } }
- {
- \bool_set_true:N \l__wi_in_WithArrows_bool
- \bool_set_false:N \l__wi_in_DispWithArrows_bool
- \__wi_pre_halign:n { #1 }
- \if_mode_math: \else:
- \__wi_error:n { WithArrows~outside~math~mode }
- \fi:
- \int_case:nn \l__wi_pos_env_int { 0 \vtop 1 \vcenter 2 \vbox }
- \bgroup
- \__wi_construct_halign:
- &&
- \__wi_error:n { Too~much~columns~in~WithArrows }
- \c_math_toggle_token
- \bool_if:NT \l__wi_displaystyle_bool \displaystyle
- { ## }
- \c_math_toggle_token
- \cr
- }
- {
- \\
- \egroup
- \egroup
- \__wi_post_halign:
- \bool_if:NT \g__wi_footnote_bool { \end { savenotes } }
- }
-\cs_new_protected:Npn \__wi_post_halign:
- {
- \cs_set:Npn \WithArrowsRightX { \g__wi_right_x_dim }
- \int_compare:nNnT \g__wi_arrow_int > 0 \__wi_scan_arrows:
- \group_begin:
- \tikzset { every~picture / .style = __wi_standard }
- \cs_set:Npn \WithArrowsNbLines { \int_use:N \g__wi_line_int }
- \cs_set_eq:NN \MultiArrow \__wi_MultiArrow:nn
- \cs_set_eq:cN \l__wi_command_name_str \__wi_Arrow_code_after
- \bool_set_true:N \l__wi_in_code_after_bool
- \l__wi_code_after_tl
- \group_end:
- \seq_gpop_right:NN \g__wi_position_in_the_tree_seq \l_tmpa_tl
- \seq_gpop_right:NN \g__wi_position_in_the_tree_seq \l_tmpa_tl
- \seq_gput_right:Nx \g__wi_position_in_the_tree_seq
- { \int_eval:n { \l_tmpa_tl + 1 } }
- \int_compare:nNnT { \seq_count:N \g__wi_position_in_the_tree_seq } = 1
- { \int_gincr:N \g__wi_last_env_int }
- \seq_gpop_right:NN \g__wi_arrow_int_seq \l_tmpa_tl
- \int_gset:Nn \g__wi_arrow_int \l_tmpa_tl
- \seq_gpop_right:NN \g__wi_line_int_seq \l_tmpa_tl
- \int_gset:Nn \g__wi_line_int \l_tmpa_tl
- \seq_gpop_right:NN \g__wi_col_int_seq \l_tmpa_tl
- \int_gset:Nn \g__wi_col_int \l_tmpa_tl
- }
-\cs_new_protected:Npn \__wi_cr:
- {
- \scan_stop:
- \int_compare:nNnF \g__wi_col_int = \g__wi_static_col_int
- { \__wi_error:n { omit~probably~used } }
- \prg_replicate:nn { \l__wi_nb_cols_int - \g__wi_static_col_int } { & { } }
- \group_align_safe_begin:
- \peek_meaning_remove:NTF * \__wi_cr_i: \__wi_cr_i:
- }
-\cs_new_protected:Npn \__wi_cr_i:
- { \peek_meaning:NTF [ \__wi_cr_ii: { \__wi_cr_ii: [ \c_zero_dim ] } }
-\cs_new_protected:Npn \__wi_cr_ii: [ #1 ]
- {
- \peek_meaning_ignore_spaces:NTF \end
- {
- \__wi_cr_iii:n { #1 }
- \__wi_analyze_end:Nn
- }
- { \__wi_cr_iii:n { #1 } }
- }
-\cs_new_protected:Npn \__wi_cr_iii:n #1
- {
- \group_align_safe_end:
- \bool_if:NT \l__wi_in_DispWithArrows_bool
- {
- \clist_if_in:NnTF \l__wi_tags_clist { all }
- {
- \tl_if_empty:NT \l__wi_tag_tl { \int_gincr:N \c@equation }
- \cs_gset:Npx \g_tmpa_tl
- { \tl_if_empty:NTF \l__wi_tag_tl \theequation \l__wi_tag_tl }
- \seq_if_empty:NF \l__wi_labels_seq
- {
- \cs_set:Npx \@currentlabel { \p@equation \g_tmpa_tl }
- \bool_if:NT \c__wi_hyperref_loaded_bool
- {
- \str_set:Nn \This@name { equation }
- \hyper@refstepcounter { equation }
- }
- \bool_if:NT \c__wi_cleveref_loaded_bool
- {
- \cref@constructprefix { equation } \cref@result
- \protected@edef \cref@currentlabel
- {
- [
- \cs_if_exist:NTF \cref@equation@alias
- \cref@equation@alias
- { equation }
- ]
- [ \arabic { equation } ] [ \cref@result ]
- \p@equation \g_tmpa_tl
- }
- }
- \seq_map_function:NN \l__wi_labels_seq \__wi_old_label
- }
- \__wi_save:N \l__wi_tag_star_bool
- \__wi_save:N \l__wi_qedhere_bool
- \bool_if:NT \l__wi_tag_next_line_bool
- {
- \openup -\jot
- \bool_set_false:N \l__wi_tag_next_line_bool
- \notag \\ &
- }
- &
- \__wi_restore:N \l__wi_tag_star_bool
- \__wi_restore:N \l__wi_qedhere_bool
- \bool_if:NT \l__wi_qedhere_bool
- { \hbox_overlap_left:n \__wi_qedhere_i: }
- \cs_set_eq:NN \theequation \g_tmpa_tl
- \bool_if:NT \l__wi_tag_star_bool
- { \cs_set_eq:NN \tagform@ \prg_do_nothing: }
- \hbox_overlap_left:n
- {
- \bool_if:NF \c__wi_leqno_bool
- {
- \tikz [ __wi_standard ]
- \coordinate ( \int_use:N \g__wi_line_int - v ) ;
- }
- \quad
- \@eqnnum
- }
- \bool_if:NT \c__wi_leqno_bool
- {
- \tikz [ __wi_standard ]
- \coordinate ( \int_use:N \g__wi_line_int - v ) ;
- }
- }
- {
- \__wi_save:N \l__wi_qedhere_bool
- &
- \__wi_restore:N \l__wi_qedhere_bool
- \bool_if:NT \l__wi_qedhere_bool
- { \hbox_overlap_left:n \__wi_qedhere_i: }
- \tikz [ __wi_standard ]
- \coordinate ( \int_use:N \g__wi_line_int - v ) ;
- }
- }
- \dim_compare:nNnT { #1 } < \c_zero_dim
- { \__wi_error:n { option~of~cr~negative } }
- \dim_set:Nn \l_tmpa_dim { \dim_max:nn { #1 } \c_zero_dim }
- \cr
- \noalign
- {
- \skip_vertical:n { \l_tmpa_dim + \l__wi_interline_skip }
- \scan_stop:
- }
- }
-\cs_new_protected:Npn \__wi_analyze_end:Nn #1 #2
- {
- \exp_args:NV \str_if_eq:nnT \l__wi_type_env_str { #2 }
- { \__wi_warning:n { newline~at~the~end~of~env } }
- \end { #2 }
- }
-\bool_new:N \l__wi_in_label_or_minipage_bool
-\NewDocumentEnvironment { DispWithArrows } { ! d < > ! O { } }
- {
- \bool_set_true:N \l__wi_in_DispWithArrows_bool
- \bool_if:nT \c__wi_mathtools_loaded_bool
- {
- \MH_if_boolean:nT { show_only_refs }
- {
- \MT_showonlyrefs_false:
- \MH_set_boolean_T:n { show_only_refs }
- }
- }
- \bool_if:NT \c__wi_typedref_loaded_bool { \str_set:Nn \sr@name { equation } }
- \bool_if:NT \c__wi_amsmath_loaded_bool \intertext@
- \IfValueT { #1 } { \tl_set:Nn \l__wi_left_brace_tl { #1 } }
- \__wi_pre_halign:n { #2 }
- \bool_if:NT \l__wi_subequations_bool { \begin { subequations } }
- \bool_if:NF \l__wi_sbwi_bool
- {
- \if@inlabel
- \bool_set_true:N \l__wi_in_label_or_minipage_bool
- \fi
- \if@minipage
- \bool_set_true:N \l__wi_in_label_or_minipage_bool
- \fi
- }
- \tl_if_eq:NNF \l__wi_left_brace_tl \c_novalue_tl
- {
- \hbox_set:Nn \l_tmpa_box
- {
- \c_math_toggle_token
- \left \l__wi_replace_left_brace_by_tl \vcenter to 1 cm { } \right.
- \c_math_toggle_token
- }
- \dim_zero_new:N \l__wi_delim_wd_dim
- \dim_set:Nn \l__wi_delim_wd_dim { \box_wd:N \l_tmpa_box }
- \box_clear_new:N \l__wi_left_brace_box
- \hbox_set:Nn \l__wi_left_brace_box
- {
- \group_begin:
- \cs_set_eq:NN \label \__wi_old_label
- \c_math_toggle_token
- \bool_if:NT \l__wi_displaystyle_bool \displaystyle
- \l__wi_left_brace_tl
- { }
- \c_math_toggle_token
- \group_end:
- }
- }
- \tl_clear_new:N \l__wi_tag_tl
- \bool_set_false:N \l__wi_qedhere_bool
- \bool_set_false:N \l__wi_tag_star_bool
- \if_mode_math:
- \__wi_fatal:n { DispWithArrows~in~math~mode }
- \fi:
- \bool_if:NTF \l__wi_in_label_or_minipage_bool
- { \c_math_toggle_token }
- {
- \if_mode_vertical:
- \nointerlineskip
- \hbox_to_wd:nn { .6 \linewidth } { }
- \fi:
- \c_math_toggle_token \c_math_toggle_token
- }
- \dim_zero_new:N \l__wi_linewidth_dim
- \bool_if:NTF \l__wi_in_label_or_minipage_bool
- { \dim_set_eq:NN \l__wi_linewidth_dim \linewidth }
- { \dim_set_eq:NN \l__wi_linewidth_dim \displaywidth }
- \box_clear_new:N \l__wi_halign_box
- \setbox \l__wi_halign_box \vtop \bgroup
- \tabskip =
- \bool_if:NTF \l__wi_fleqn_bool
- \c_zero_skip
- { 0 pt plus 1000 pt minus 1000 pt }
- \__wi_construct_halign:
- \tabskip = 0 pt plus 1000 pt minus 1000 pt
- &
- $ ## $
- \tabskip = \c_zero_skip
- &&
- \__wi_fatal:n { Too~much~columns~in~DispWithArrows }
- \bool_if:nT \c_false_bool { ## }
- \cr
- }
- {
- \clist_if_in:NnT \l__wi_tags_clist { last }
- { \clist_set:Nn \l__wi_tags_clist { all } }
- \\
- \egroup
- \unskip \unpenalty \unskip \unpenalty
- \box_set_to_last:N \l_tmpa_box
- \nointerlineskip
- \box_use:N \l_tmpa_box
- \dim_gzero_new:N \g__wi_alignment_dim
- \dim_gset:Nn \g__wi_alignment_dim { \box_wd:N \l_tmpa_box }
- \box_clear_new:N \l__wi_new_box
- \hbox_set:Nn \l__wi_new_box { \hbox_unpack_clear:N \l_tmpa_box }
- \dim_compare:nNnT
- { \box_wd:N \l__wi_new_box } < \g__wi_alignment_dim
- { \dim_gset:Nn \g__wi_alignment_dim { \box_wd:N \l__wi_new_box } }
- \egroup
- \tl_if_eq:NNTF \l__wi_left_brace_tl \c_novalue_tl
- { \box_use_drop:N \l__wi_halign_box }
- {
- \hbox_to_wd:nn \l__wi_linewidth_dim
- {
- \bool_if:NTF \l__wi_fleqn_bool
- { \skip_horizontal:n \l__wi_mathindent_dim }
- \hfil
- \hbox_to_wd:nn \g__wi_alignment_dim
- {
- \box_use_drop:N \l__wi_left_brace_box
- \dim_set:Nn \l_tmpa_dim
- {
- \box_ht:N \l__wi_halign_box
- + \box_dp:N \l__wi_halign_box
- }
- \c_math_toggle_token
- \left \l__wi_replace_left_brace_by_tl
- \vcenter to \l_tmpa_dim { \vfil }
- \right.
- \c_math_toggle_token
- \hfil
- }
- \hfil
- }
- \skip_horizontal:n { - \l__wi_linewidth_dim }
- \vcenter { \box_use_drop:N \l__wi_halign_box }
- }
- \dim_gzero_new:N \g__wi_right_x_dim
- \dim_gset_eq:NN \g__wi_right_x_dim \c_max_dim
- \begin { tikzpicture } [ __wi_standard ]
- \int_step_variable:nNn \g__wi_line_int \l_tmpa_int
- {
- \cs_if_free:cTF
- { pgf@sh@ns@wa - \l__wi_prefix_str - \l_tmpa_int - v }
- { \__wi_fatal:n { Inexistent~v-node } }
- {
- \tikz@parse@node\pgfutil@firstofone ( \l_tmpa_int - v )
- \dim_set:Nn \l_tmpa_dim \pgf@x
- \dim_compare:nNnT \l_tmpa_dim < \g__wi_right_x_dim
- { \dim_gset:Nn \g__wi_right_x_dim \l_tmpa_dim }
- }
- }
- \end { tikzpicture }
- \__wi_post_halign:
- \bool_if:nT \c__wi_mathtools_loaded_bool
- { \MH_if_boolean:nT { show_only_refs } \MT_showonlyrefs_true: }
- \bool_if:NTF \l__wi_in_label_or_minipage_bool
- {
- \c_math_toggle_token
- \skip_vertical:N \belowdisplayskip
- }
- { \c_math_toggle_token \c_math_toggle_token }
- \bool_if:NT \l__wi_subequations_bool { \end { subequations } }
- \bool_if:NT \g__wi_footnote_bool { \end { savenotes } }
- \ignorespacesafterend
- }
-\NewDocumentEnvironment { DispWithArrows* } { }
- {
- \WithArrowsOptions { notag }
- \DispWithArrows
- }
- \endDispWithArrows
-\cs_new_protected:Npn \__wi_if_in_last_col_of_disp:Nn #1 #2
- {
- \bool_if:NTF \l__wi_in_WithArrows_bool
- { \__wi_error:nn { Not~allowed~in~WithArrows } { #1 } }
- {
- \int_compare:nNnTF \g__wi_col_int < \l__wi_nb_cols_int
- { \__wi_error:nn { Not~allowed~in~DispWithArrows } { #1 } }
- { #2 }
- }
- }
-\cs_new_protected:Npn \__wi_notag:
- { \__wi_if_in_last_col_of_disp:Nn \notag { \clist_clear:N \l__wi_tags_clist } }
-\cs_new_protected:Npn \__wi_nonumber:
- { \__wi_if_in_last_col_of_disp:Nn \nonumber { \clist_clear:N \l__wi_tags_clist } }
-\NewDocumentCommand \__wi_tag { s m }
- {
- \__wi_if_in_last_col_of_disp:Nn \tag
- {
- \tl_if_empty:NF \l__wi_tag_tl
- { \__wi_error:nn { Multiple~tags } { #2 } }
- \clist_set:Nn \l__wi_tags_clist { all }
- \bool_if:nT \c__wi_mathtools_loaded_bool
- {
- \MH_if_boolean:nT { show_only_refs }
- {
- \MH_if_boolean:nF { show_manual_tags }
- { \clist_clear:N \l__wi_tags_clist }
- }
- }
- \tl_set:Nn \l__wi_tag_tl { #2 }
- \bool_set:Nn \l__wi_tag_star_bool { #1 }
- \bool_if:nT { #1 && ! \bool_if_p:N \c__wi_amsmath_loaded_bool }
- { \__wi_error:n { tag*~without~amsmath } }
- }
- }
-\cs_new_protected:Npn \__wi_label:n #1
- {
- \__wi_if_in_last_col_of_disp:Nn \label
- {
- \seq_if_empty:NF \l__wi_labels_seq
- {
- \bool_if:NTF \c__wi_cleveref_loaded_bool
- { \__wi_error:n { Multiple~labels~with~cleveref } }
- { \__wi_error:n { Multiple~labels } }
- }
- \seq_put_right:Nn \l__wi_labels_seq { #1 }
- \bool_if:nT \c__wi_mathtools_loaded_bool
- {
- \MH_if_boolean:nT { show_only_refs }
- {
- \cs_if_exist:cTF { MT_r_#1 }
- { \clist_set:Nn \l__wi_tags_clist { all } }
- { \clist_clear:N \l__wi_tags_clist }
- }
- }
- \bool_if:nT \c__wi_autonum_loaded_bool
- {
- \cs_if_exist:cTF { autonum@#1Referenced }
- { \clist_set:Nn \l__wi_tags_clist { all } }
- { \clist_clear:N \l__wi_tags_clist }
- }
- }
- }
-\cs_new_protected:Npn \__wi_tagnextline:
- {
- \__wi_if_in_last_col_of_disp:Nn \tagnextline
- { \bool_set_true:N \l__wi_tag_next_line_bool }
- }
-\cs_new_protected:Npn \__wi_qedhere: { \bool_set_true:N \l__wi_qedhere_bool }
-\cs_new_protected:Npn \__wi_set_qedhere: { \cs_set_eq:NN \qedhere \__wi_qedhere: }
-\cs_new_protected:Npn \__wi_qedhere_i:
- {
- \group_begin:
- \cs_set_eq:NN \qed \qedsymbol
- \cs_set_eq:NN \qed@elt \setQED@elt
- \QED@stack \relax \relax
- \group_end:
- }
-\cs_new_protected:Npn \__wi_scan_arrows:
- {
- \group_begin:
- \int_compare:nNnT \l__wi_pos_arrow_int = 7
- {
- \__wi_scan_arrows_i:
- \int_set:Nn \l__wi_pos_arrow_int 8
- }
- \__wi_scan_arrows_i:
- \group_end:
- }
-\cs_new_protected:Npn \__wi_scan_arrows_i:
- {
- \int_zero_new:N \l__wi_first_arrow_of_group_int
- \int_zero_new:N \l__wi_first_line_of_group_int
- \int_zero_new:N \l__wi_last_line_of_group_int
- \seq_clear_new:N \l__wi_first_arrows_seq
- \seq_clear_new:N \l__wi_last_arrows_seq
- \bool_set_true:N \l__wi_new_group_bool
- \int_set:Nn \l__wi_arrow_int \c_one_int
- \int_until_do:nNnn \l__wi_arrow_int > \g__wi_arrow_int
- {
- \prop_get:cnN
- { g__wi_arrow _ \l__wi_prefix_str _ \int_use:N \l__wi_arrow_int _ prop }
- { initial } \l_tmpa_tl
- \int_set:Nn \l__wi_initial_int \l_tmpa_tl
- \prop_get:cnN
- { g__wi_arrow _ \l__wi_prefix_str _ \int_use:N \l__wi_arrow_int _ prop }
- { final } \l_tmpa_tl
- \int_set:Nn \l__wi_final_int \l_tmpa_tl
- \prop_get:cnN
- { g__wi_arrow _ \l__wi_prefix_str _ \int_use:N \l__wi_arrow_int _ prop }
- { status } \l__wi_status_arrow_str
- \prop_get:cnN
- { g__wi_arrow _ \l__wi_prefix_str _ \int_use:N \l__wi_arrow_int _ prop }
- { input-line } \l__wi_input_line_str
- \int_compare:nNnTF \l__wi_final_int > \g__wi_line_int
- {
- \int_compare:nNnF \l__wi_pos_arrow_int = 8
- { \__wi_error:n { Too~few~lines~for~an~arrow } }
- }
- \__wi_code_for_possible_arrow:
- \int_incr:N \l__wi_arrow_int
- }
- \bool_if:nT
- {
- \int_compare_p:n { \l__wi_pos_arrow_int != 7 }
- &&
- \int_compare_p:nNn \l__wi_first_arrow_of_group_int > 0
- }
- { \__wi_draw_arrows:nn \l__wi_first_arrow_of_group_int \g__wi_arrow_int }
- }
-\cs_new_protected:Npn \__wi_code_for_possible_arrow:
- {
- \bool_if:nT
- {
- \int_compare_p:nNn \l__wi_arrow_int > \c_one_int
- &&
- ( \int_compare_p:n { \l__wi_initial_int > \l__wi_last_line_of_group_int }
- &&
- \int_compare_p:n { \l__wi_pos_arrow_int != 7 }
- ||
- \str_if_eq_p:Vn \l__wi_status_arrow_str { new-group }
- )
- }
- {
- \int_compare:nNnF \l__wi_first_arrow_of_group_int = \c_zero_int
- {
- \__wi_draw_arrows:nn
- \l__wi_first_arrow_of_group_int
- { \l__wi_arrow_int - 1 }
- }
- \bool_set_true:N \l__wi_new_group_bool
- }
- \bool_if:nTF \l__wi_new_group_bool
- {
- \bool_set_false:N \l__wi_new_group_bool
- \int_set_eq:NN \l__wi_first_arrow_of_group_int \l__wi_arrow_int
- \int_set_eq:NN \l__wi_first_line_of_group_int \l__wi_initial_int
- \int_set_eq:NN \l__wi_last_line_of_group_int \l__wi_final_int
- \seq_clear:N \l__wi_first_arrows_seq
- \seq_put_left:NV \l__wi_first_arrows_seq \l__wi_arrow_int
- \seq_clear:N \l__wi_last_arrows_seq
- \seq_put_left:NV \l__wi_last_arrows_seq \l__wi_arrow_int
- \int_compare:nT { \l__wi_pos_arrow_int != 8 }
- { \dim_set:Nn \l__wi_x_dim { - \c_max_dim } }
- }
- {
- \bool_if:nF
- { \str_if_eq_p:Vn \l__wi_status_arrow_str { independent } }
- {
- \int_compare:nT
- { \l__wi_initial_int = \l__wi_first_line_of_group_int }
- { \seq_put_left:NV \l__wi_first_arrows_seq \l__wi_arrow_int }
- \int_compare:nNnTF \l__wi_final_int > \l__wi_last_line_of_group_int
- {
- \int_set_eq:NN \l__wi_last_line_of_group_int \l__wi_final_int
- \seq_clear:N \l__wi_last_arrows_seq
- \seq_put_left:NV \l__wi_last_arrows_seq \l__wi_arrow_int
- }
- {
- \int_compare:nNnT \l__wi_final_int = \l__wi_last_line_of_group_int
- { \seq_put_left:NV \l__wi_last_arrows_seq \l__wi_arrow_int }
- }
- }
- }
- \bool_if:nF { \str_if_eq_p:Vn \l__wi_status_arrow_str { independent } }
- {
- \int_compare:nT { \l__wi_pos_arrow_int != 8 }
- { \__wi_update_x:nn \l__wi_initial_int \l__wi_final_int }
- }
- }
-\cs_generate_variant:Nn \keys_set:nn { n o }
-\cs_new_protected:Npn \__wi_keys_set:
- { \keys_set_known:no { WithArrows / Arrow / SecondPass } }
-\cs_new_protected:Npn \__wi_draw_arrows:nn #1 #2
- {
- \group_begin:
- \int_zero_new:N \l__wi_first_arrow_int
- \int_set:Nn \l__wi_first_arrow_int { #1 }
- \int_zero_new:N \l__wi_last_arrow_int
- \int_set:Nn \l__wi_last_arrow_int { #2 }
- \int_set:Nn \l__wi_arrow_int \l__wi_first_arrow_int
- \int_until_do:nNnn \l__wi_arrow_int > \l__wi_last_arrow_int
- {
- \prop_get:cnN
- { g__wi_arrow _ \l__wi_prefix_str _ \int_use:N \l__wi_arrow_int _ prop }
- { initial } \l_tmpa_tl
- \int_set:Nn \l__wi_initial_int \l_tmpa_tl
- \prop_get:cnN
- { g__wi_arrow _ \l__wi_prefix_str _ \int_use:N \l__wi_arrow_int _ prop }
- { final } \l_tmpa_tl
- \int_set:Nn \l__wi_final_int \l_tmpa_tl
- \int_compare:nT { \l__wi_final_int <= \g__wi_line_int } \__wi_draw_arrows_i:
- \int_incr:N \l__wi_arrow_int
- }
- \group_end:
- }
-\cs_new_protected:Npn \__wi_draw_arrows_i:
- {
- \group_begin:
- \prop_get:cnN
- { g__wi_arrow _\l__wi_prefix_str _ \int_use:N \l__wi_arrow_int _ prop }
- { options } \l_tmpa_tl
- \str_clear_new:N \l__wi_previous_key_str
- \exp_args:NNo \exp_args:No
- \__wi_keys_set: { \l_tmpa_tl , tikz = { xshift = \l__wi_xoffset_dim } }
- \bool_set_false:N \l__wi_initial_r_bool
- \bool_set_false:N \l__wi_final_r_bool
- \int_case:nn \l__wi_pos_arrow_int
- {
- 0 { \bool_set_true:N \l__wi_final_r_bool }
- 2 { \bool_set_true:N \l__wi_initial_r_bool }
- 3
- {
- \bool_set_true:N \l__wi_initial_r_bool
- \bool_set_true:N \l__wi_final_r_bool
- }
- }
- \int_compare:nNnT \l__wi_pos_arrow_int = 5
- {
- \dim_set:Nn \l__wi_x_dim { - \c_max_dim }
- \__wi_update_x:nn \l__wi_initial_int \l__wi_final_int
- }
- \tl_set:Nx \l__wi_initial_tl
- {
- \int_use:N \l__wi_initial_int - \bool_if:NTF \l__wi_initial_r_bool rl
- .south
- }
- \tl_set:Nx \l__wi_final_tl
- { \int_use:N \l__wi_final_int - \bool_if:NTF \l__wi_final_r_bool rl .north }
- \prop_get:cnN
- { g__wi_arrow _ \l__wi_prefix_str _ \int_use:N \l__wi_arrow_int _ prop }
- { label }
- \l_tmpa_tl
- \seq_if_in:NxTF \l__wi_first_arrows_seq
- { \int_use:N \l__wi_arrow_int }
- { \bool_set_true:N \l_tmpa_bool }
- { \bool_set_false:N \l_tmpa_bool }
- \seq_if_in:NxTF \l__wi_last_arrows_seq
- { \int_use:N \l__wi_arrow_int }
- { \bool_set_true:N \l_tmpb_bool }
- { \bool_set_false:N \l_tmpb_bool }
- \int_compare:nNnT \l__wi_pos_arrow_int = 5
- {
- \bool_set_true:N \l_tmpa_bool
- \bool_set_true:N \l_tmpb_bool
- }
- \begin { tikzpicture } [ __wi_standard ]
- \tikz@scan@one@point \pgfutil@firstofone ( \l__wi_initial_tl )
- \tl_gset:Nx \g_tmpa_tl
- {
- \int_compare:nNnTF \l__wi_pos_arrow_int < 5
- { \dim_use:N \pgf@x }
- { \dim_use:N \l__wi_x_dim } ,
- \bool_if:NTF \l_tmpa_bool
- { \dim_eval:n { \pgf@y + \l__wi_start_adjust_dim } }
- { \dim_use:N \pgf@y }
- }
- \tikz@scan@one@point \pgfutil@firstofone ( \l__wi_final_tl )
- \tl_gset:Nx \g_tmpb_tl
- {
- \int_compare:nNnTF \l__wi_pos_arrow_int < 5
- { \dim_use:N \pgf@x }
- { \dim_use:N \l__wi_x_dim } ,
- \bool_if:NTF \l_tmpb_bool
- { \dim_eval:n { \pgf@y - \l__wi_end_adjust_dim } }
- { \dim_use:N \pgf@y }
- }
- \end { tikzpicture }
- \__wi_draw_arrow:nno \g_tmpa_tl \g_tmpb_tl \l_tmpa_tl
- \group_end:
- }
-\cs_new_protected:Npn \__wi_def_function_tmpa:n #1
- {
- \cs_set:Npn \__wi_tmpa:nnn ##1 ##2 ##3
- {
- \begin{tikzpicture}
- [
- __wi_standard ,
- every~path / .style = WithArrows / arrow
- ]
- #1
- \end{tikzpicture}
- }
- }
-\cs_new_protected:Npn \__wi_draw_arrow:nnn #1 #2 #3
- {
- \bool_if:nT { \l__wi_wrap_lines_bool && \l__wi_in_DispWithArrows_bool }
- { \tl_set_eq:NN \l__wi_tikz_code_tl \c__wi_tikz_code_wrap_lines_tl }
- \exp_args:NV \__wi_def_function_tmpa:n \l__wi_tikz_code_tl
- \__wi_tmpa:nnn { #1 } { #2 } { #3 }
- }
-\cs_generate_variant:Nn \__wi_draw_arrow:nnn { n n o }
-\tl_const:Nn \c__wi_tikz_code_wrap_lines_tl
- {
- \draw ( #1 ) to node ( __wi_label ) { } ( #2 ) ;
- \tikz@parse@node \pgfutil@firstofone ( __wi_label.west )
- \dim_set:Nn \l_tmpa_dim
- { \g__wi_right_x_dim - \pgf@x - \pgfkeysvalueof { / pgf / inner~xsep } }
- \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
- \dim_compare:nNnT \l_tmpb_dim < \l_tmpa_dim
- { \dim_set_eq:NN \l_tmpa_dim \l_tmpb_dim }
- }
- \dim_compare:nNnT \l_tmpa_dim > \c_zero_dim
- {
- \path ( __wi_label.west )
- node [ anchor = west , text~width = \dim_use:N \l_tmpa_dim ]
- { #3 } ;
- }
- }
-\cs_new_protected:Npn \__wi_update_x:nn #1 #2
- {
- \int_step_inline:nnn { #1 } { #2 }
- {
- \begin { tikzpicture } [ __wi_standard ]
- \tikz@scan@one@point \pgfutil@firstofone ( ##1 - l )
- \dim_gset:Nn \g_tmpa_dim { \dim_max:nn \l__wi_x_dim \pgf@x }
- \end { tikzpicture }
- \dim_set_eq:NN \l__wi_x_dim \g_tmpa_dim
- }
- }
-\cs_new:Npn \WithArrowsLastEnv { \int_use:N \g__wi_last_env_int }
-\keys_define:nn { WithArrows / Arrow / code-after }
- {
- tikz .code:n =
- \tikzset { WithArrows / arrow / .append~style = { #1 } } ,
- tikz .value_required:n = true ,
- rr .value_forbidden:n = true ,
- rr .code:n = \__wi_fix_pos_option:n 0 ,
- ll .value_forbidden:n = true,
- ll .code:n = \__wi_fix_pos_option:n 1 ,
- rl .value_forbidden:n = true ,
- rl .code:n = \__wi_fix_pos_option:n 2 ,
- lr .value_forbidden:n = true ,
- lr .code:n = \__wi_fix_pos_option:n 3 ,
- v .value_forbidden:n = true ,
- v .code:n = \__wi_fix_pos_option:n 4 ,
- tikz-code .tl_set:N = \l__wi_tikz_code_tl ,
- tikz-code .value_required:n = true ,
- xoffset .dim_set:N = \l__wi_xoffset_dim ,
- xoffset .value_required:n = true ,
- unknown .code:n =
- \__wi_sort_seq:N \l__wi_options_Arrow_code_after_seq
- \__wi_error:n { Unknown~option~Arrow~in~code-after }
- }
-\seq_new:N \l__wi_options_Arrow_code_after_seq
-\__wi_set_seq_of_str_from_clist:Nn \l__wi_options_Arrow_code_after_seq
- { ll, lr, rl, rr, tikz, tikz-code, v, x, offset }
-\NewDocumentCommand \__wi_Arrow_code_after { O { } m m m ! O { } }
- {
- \int_set:Nn \l__wi_pos_arrow_int 1
- \str_clear_new:N \l__wi_previous_key_str
- \group_begin:
- \keys_set:nn { WithArrows / Arrow / code-after }
- { #1, #5, tikz = { xshift = \l__wi_xoffset_dim } }
- \bool_set_false:N \l__wi_initial_r_bool
- \bool_set_false:N \l__wi_final_r_bool
- \int_case:nn \l__wi_pos_arrow_int
- {
- 0
- {
- \bool_set_true:N \l__wi_initial_r_bool
- \bool_set_true:N \l__wi_final_r_bool
- }
- 2 { \bool_set_true:N \l__wi_initial_r_bool }
- 3 { \bool_set_true:N \l__wi_final_r_bool }
- }
- \tl_if_eq:nnTF { #2 } { #3 }
- { \__wi_error:nn { Both~lines~are~equal } { #2 } }
- {
- \cs_if_free:cTF { pgf@sh@ns@wa - \l__wi_prefix_str - #2 - l }
- { \__wi_error:nx { Wrong~line~in~Arrow } { #2 } }
- {
- \cs_if_free:cTF { pgf@sh@ns@wa - \l__wi_prefix_str - #3 - l }
- { \__wi_error:nx { Wrong~line~in~Arrow } { #3 } }
- {
- \int_compare:nNnTF \l__wi_pos_arrow_int = 4
- {
- \begin { tikzpicture } [ __wi_standard ]
- \tikz@scan@one@point \pgfutil@firstofone (#2-l.south)
- \dim_set_eq:NN \l_tmpa_dim \pgf@x
- \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 }
- \end { tikzpicture }
- }
- {
- \begin { tikzpicture } [ __wi_standard ]
- \tikz@scan@one@point \pgfutil@firstofone
- ( #2-\bool_if:NTF\l__wi_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__wi_final_r_bool rl .north )
- \tl_gset:Nx \g_tmpb_tl
- { \dim_use:N \pgf@x , \dim_use:N \pgf@y }
- \end { tikzpicture }
- }
- \__wi_draw_arrow:nnn \g_tmpa_tl \g_tmpb_tl { #4 }
- }
- }
- }
- \group_end:
- }
-\cs_new_protected:Npn \__wi_MultiArrow:nn #1 #2
- {
- \foreach \x in { #1 }
- {
- \cs_if_free:cTF { pgf@sh@ns@wa - \l__wi_prefix_str - \x - l }
- { \__wi_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 }
- { \__wi_error:n { Too~small~specification~for~MultiArrow } }
- {
- \clist_sort:Nn \g_tmpa_clist
- {
- \int_compare:nTF { ##1 > ##2 }
- \sort_return_swapped:
- \sort_return_same:
- }
- \clist_pop:NN \g_tmpa_clist \l_tmpa_tl
- \clist_reverse:N \g_tmpa_clist
- \clist_pop:NN \g_tmpa_clist \l_tmpb_tl
- \exp_args:NV \__wi_MultiArrow_i:n \g_tmpa_clist
- \begin { tikzpicture }
- [
- __wi_standard ,
- every~path / .style = { WithArrows / arrow }
- ]
- \draw [<->] ([xshift = \l__wi_xoffset_dim]\l_tmpa_tl-r.south)
- -- ++(5mm,0)
- -- node (__wi_label) {}
- ([xshift = \l__wi_xoffset_dim+5mm]\l_tmpb_tl-r.south)
- -- ([xshift = \l__wi_xoffset_dim]\l_tmpb_tl-r.south) ;
- \tikz@parse@node \pgfutil@firstofone (__wi_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__wi_wrap_lines_bool && \l__wi_in_DispWithArrows_bool }
- {
- \dim_set:Nn \l_tmpb_dim
- { \g__wi_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 (__wi_label.west)
- node [ anchor = west, text~width = \dim_use:N \l_tmpa_dim ] { #2 } ;
- \end{tikzpicture}
- }
- }
-\cs_new_protected:Npn \__wi_MultiArrow_i:n #1
- {
- \begin {tikzpicture }
- [
- __wi_standard ,
- every~path / .style = { WithArrows / arrow }
- ]
- \foreach \k in { #1 }
- {
- \draw [ <- ]
- ( [xshift = \l__wi_xoffset_dim]\k-r.south ) -- ++(5mm,0) ;
- } ;
- \end { tikzpicture }
- }
-\str_const:Nn \c__wi_option_ignored_str
- { If~you~go~on,~this~option~will~be~ignored. }
-\str_const:Nn \c__wi_command_ignored_str
- { If~you~go~on,~this~command~will~be~ignored. }
-\__wi_msg_new:nn { amsmath~not~loaded }
- {
- You~can't~use~the~option~'\l_keys_key_tl'~because~the~
- package~'amsmath'~has~not~been~loaded.\\
- If~you~go~on,~this~option~will~be~ignored~in~the~rest~
- of~the~document.
- }
-\__wi_msg_new:nn { Bad~value~for~replace~brace~by }
- {
- Bad~value~for~the~option~'\l_keys_key_tl'.~The~value~must~be~
- an~extensible~left~delimiter.~The~possible~values~are:~
- \token_to_str:N \{,~(,~[,~\token_to_str:N \lbrace,~
- \token_to_str:N \lbrack,~\token_to_str:N \lgroup,~
- \token_to_str:N \langle,~\token_to_str:N \lmoustache,~
- \token_to_str:N \lfloor\ and~\token_to_str:N \lceil\
- (and~\token_to_str:N \lvert\ and~\token_to_str:N \lVert\
- if~amsmath~or~unicode-math~is~loaded).\\
- \c__wi_option_ignored_str
- }
-\__wi_msg_new:nn { option~of~cr~negative }
- {
- The~argument~of~the~command~\token_to_str:N\\~
- should~be~positive~in~the~row~\int_use:N \g__wi_line_int\
- of~your~environment~\{\l__wi_type_env_str\}.\\
- \c__wi_option_ignored_str
- }
-\__wi_msg_new:nn { omit~probably~used }
- {
- There~is~a~problem.~Maybe~you~have~used~a~command~
- \token_to_str:N\omit\ in~the~line~\int_use:N \g__wi_line_int\
- (or~another~line)~of~your~environment~\{\l__wi_type_env_str\}.\\
- You~can~go~on~but~you~may~have~others~errors.
- }
-\__wi_msg_new:nn { newline~at~the~end~of~env }
- {
- Your~environment~\{\l__wi_type_env_str\}~should~not~end~with~
- a~\token_to_str:N \\.\\
- This~warning~might~become~an~error~in~a~future~version.
- }
-\__wi_msg_new:nn { Invalid~option~format }
- {
- The~key~'format'~should~contain~only~letters~r,~c~and~l~and~
- must~not~be~empty.\\
- \c__wi_option_ignored_str
- }
-\__wi_msg_new:nn { Value~for~a~key }
- {
- The~key~'\l_keys_key_tl'~should~be~used~without~value. \\
- However,~you~can~go~on~for~this~time.
- }
-\__wi_msg_new:nnn { Unknown~option~in~Arrow }
- {
- The~key~'\l_keys_key_tl'~is~unknown~for~the~command~
- \l__wi_string_Arrow_for_msg_str\ in~the~row~
- \int_use:N \g__wi_line_int\ of~your~environment~
- \{\l__wi_type_env_str\}. \l_tmpa_str \\
- \c__wi_option_ignored_str \\
- For~a~list~of~the~available~keys,~type~H~<return>.
- }
- {
- The~available~keys~are~(in~alphabetic~order):~
- \seq_use:Nnnn \l__wi_options_Arrow_seq {~and~} {,~} {~and~}.
- }
-\__wi_msg_new:nnn { Unknown~option~WithArrows }
- {
- The~key~'\l_keys_key_tl'~is~unknown~in~\{\l__wi_type_env_str\}. \\
- \c__wi_option_ignored_str \\
- For~a~list~of~the~available~keys,~type~H~<return>.
- }
- {
- The~available~keys~are~(in~alphabetic~order):~
- \seq_use:Nnnn \l__wi_options_WithArrows_seq {~and~} {,~} {~and~}.
- }
-\__wi_msg_new:nnn { Unknown~option~DispWithArrows }
- {
- The~key~'\l_keys_key_tl'~is~unknown~in~\{\l__wi_type_env_str\}. \\
- \c__wi_option_ignored_str \\
- For~a~list~of~the~available~keys,~type~H~<return>.
- }
- {
- The~available~keys~are~(in~alphabetic~order):~
- \seq_use:Nnnn \l__wi_options_DispWithArrows_seq {~and~} {,~} {~and~}.
- }
-\__wi_msg_new:nnn { Unknown~option~WithArrowsOptions }
- {
- The~key~'\l_keys_key_tl'~is~unknown~in~
- \token_to_str:N \WithArrowsOptions. \\
- \c__wi_option_ignored_str \\
- For~a~list~of~the~available~keys,~type~H~<return>.
- }
- {
- The~available~keys~are~(in~alphabetic~order):~
- \seq_use:Nnnn \l__wi_options_WithArrowsOptions_seq {~and~} {,~} {~and~}.
- }
-\__wi_msg_new:nnn { Unknown~option~Arrow~in~code-after }
- {
- The~key~'\l_keys_key_tl'~is~unknown~in~
- \token_to_str:N \Arrow\ in~code-after. \\
- \c__wi_option_ignored_str \\
- For~a~list~of~the~available~keys,~type~H~<return>.
- }
- {
- The~available~keys~are~(in~alphabetic~order):~
- \seq_use:Nnnn \l__wi_options_Arrow_code_after_seq {~and~} {,~} {~and~}.
- }
-\__wi_msg_new:nn { Too~much~columns~in~WithArrows }
- {
- Your~environment~\{\l__wi_type_env_str\}~has~\int_use:N
- \l__wi_nb_cols_int\ columns~and~you~try~to~use~one~more.~
- Maybe~you~have~forgotten~a~\c_backslash_str\c_backslash_str.~
- If~you~really~want~to~use~more~columns~(after~the~arrows)~you~should~use~
- the~option~'more-columns'~at~a~global~level~or~for~an~environment. \\
- However,~you~can~go~one~for~this~time.
- }
-\__wi_msg_new:nn { Too~much~columns~in~DispWithArrows }
- {
- Your~environment~\{\l__wi_type_env_str\}~has~\int_use:N
- \l__wi_nb_cols_int\ columns~and~you~try~to~use~one~more.~
- Maybe~you~have~forgotten~a~\c_backslash_str\c_backslash_str\
- at~the~end~of~row~\int_use:N \g__wi_line_int. \\
- This~error~is~fatal.
- }
-\__wi_msg_new:nn { Negative~jump }
- {
- You~can't~use~a~negative~value~for~the~option~'jump'~of~command~
- \l__wi_string_Arrow_for_msg_str\
- in~the~row~\int_use:N \g__wi_line_int\
- of~your~environment~\{\l__wi_type_env_str\}.~
- You~can~create~an~arrow~going~backwards~with~the~option~'<-'~of~Tikz. \\
- \c__wi_option_ignored_str
- }
-\__wi_msg_new:nn { new-group~without~groups }
- {
- You~can't~use~the~option~'new-group'~for~the~command~
- \l__wi_string_Arrow_for_msg_str\
- because~you~are~not~in~'groups'~mode.~Try~to~use~the~option~
- 'groups'~in~your~environment~\{\l__wi_type_env_str\}. \\
- \c__wi_option_ignored_str
- }
-\__wi_msg_new:nn
- { Too~few~lines~for~an~arrow }
- {
- Line~\l__wi_input_line_str\
- :~an~arrow~specified~in~the~row~\int_use:N \l__wi_initial_int\
- of~your~environment~\{\l__wi_type_env_str\}~can't~be~drawn~
- because~it~arrives~after~the~last~row~of~the~environment. \\
- If~you~go~on,~this~arrow~will~be~ignored.
- }
-\__wi_msg_new:nn { WithArrows~outside~math~mode }
- {
- The~environment~\{\l__wi_type_env_str\}~should~be~used~only~in~math~mode~
- like~the~environment~\{aligned\}~of~amsmath. \\
- Nevertheless,~you~can~go~on.
- }
-\__wi_msg_new:nn { DispWithArrows~in~math~mode }
- {
- The~environment~\{\l__wi_type_env_str\}~should~be~used~only~outside~math~
- mode~like~the~environment~\{align\}~of~amsmath. \\
- This~error~is~fatal.
- }
-\__wi_msg_new:nn { Incompatible~options~in~Arrow }
- {
- You~try~to~use~the~option~'\l_keys_key_tl'~but~
- this~option~is~incompatible~or~redundant~with~the~option~
- '\l__wi_previous_key_str'~set~in~the~same~command~
- \l__wi_string_Arrow_for_msg_str. \\
- \c__wi_option_ignored_str
- }
-\__wi_msg_new:nn { Incompatible~options }
- { You~try~to~use~the~option~'\l_keys_key_tl'~but~
- this~option~is~incompatible~or~redundant~with~the~option~
- '\l__wi_previous_key_str'~set~in~the~same~command~
- \bool_if:NT \l__wi_in_code_after_bool
- {
- \l__wi_string_Arrow_for_msg_str\
- in~the~code-after~of~your~environment~\{\l__wi_type_env_str\}
- }. \\
- \c__wi_option_ignored_str
- }
-\__wi_msg_new:nn { Arrow~not~in~last~column }
- {
- You~should~use~the~command~\l__wi_string_Arrow_for_msg_str\
- only~in~the~last~column~(column~\int_use:N\l__wi_nb_cols_int)~
- of~your~environment~\{\l__wi_type_env_str\}.\\
- However~you~can~go~on~for~this~time.
- }
-\__wi_msg_new:nn { Wrong~line~in~Arrow }
- {
- The~specification~of~line~'#1'~you~use~in~the~command~
- \l__wi_string_Arrow_for_msg_str\
- in~the~'code-after'~of~\{\l__wi_type_env_str\}~doesn't~exist. \\
- \c__wi_option_ignored_str
- }
-\__wi_msg_new:nn { Both~lines~are~equal }
- {
- In~the~'code-after'~of~\{\l__wi_type_env_str\}~you~try~to~
- draw~an~arrow~going~to~it~self~from~the~line~'#1'.~This~is~not~possible. \\
- \c__wi_option_ignored_str
- }
-\__wi_msg_new:nn { Wrong~line~specification~in~MultiArrow }
- {
- The~specification~of~line~'#1'~doesn't~exist. \\
- If~you~go~on,~it~will~be~ignored~for~\token_to_str:N \MultiArrow.
- }
-\__wi_msg_new:nn { Too~small~specification~for~MultiArrow }
- {
- The~specification~of~lines~you~gave~to~\token_to_str:N \MultiArrow\
- is~too~small:~you~need~at~least~two~lines. \\
- \c__wi_option_ignored_str
- }
-\__wi_msg_new:nn { tag*~without~amsmath }
- {
- We~can't~use~\token_to_str:N\tag*~because~you~haven't~loaded~amsmath~
- (or~mathtools). \\
- If~you~go~on,~the~command~\token_to_str:N\tag\
- will~be~used~instead.
- }
-\__wi_msg_new:nn { Not~allowed~in~DispWithArrows }
- {
- The~command~\token_to_str:N #1
- is~allowed~only~in~the~last~column~
- (column~\int_use:N\l__wi_nb_cols_int)~of~\{\l__wi_type_env_str\}. \\
- \c__wi_option_ignored_str
- }
-\__wi_msg_new:nn { Not~allowed~in~WithArrows }
- {
- The~command~\token_to_str:N #1 is~not~allowed~in~\{\l__wi_type_env_str\}~
- (it's~allowed~in~the~last~column~of~\{DispWithArrows\}). \\
- \c__wi_option_ignored_str
- }
-\__wi_msg_new:nn { Multiple~tags }
- {
- You~can't~use~twice~the~command~\token_to_str:N\tag\
- in~a~line~of~the~environment~\{\l__wi_type_env_str\}. \\
- If~you~go~on,~the~tag~'#1'~will~be~used.
- }
-\__wi_msg_new:nn { Multiple~labels }
- {
- Normally,~we~can't~use~the~command~\token_to_str:N\label\
- twice~in~a~line~of~the~environment~\{\l__wi_type_env_str\}. \\
- However,~you~can~go~on.~
- \bool_if:NT \c__wi_showlabels_loaded_bool
- { However,~only~the~last~label~will~be~shown~by~showlabels.~ }
- If~you~don't~want~to~see~this~message~again,~you~can~use~the~option~
- 'allow-multiple-labels'~at~the~global~or~environment~level.
- }
-\__wi_msg_new:nn { Multiple~labels~with~cleveref }
- {
- Since~you~use~cleveref,~you~can't~use~the~command~\token_to_str:N\label\
- twice~in~a~line~of~the~environment~\{\l__wi_type_env_str\}. \\
- If~you~go~on,~you~may~have~undefined~references.
- }
-\__wi_msg_new:nn { Inexistent~v-node }
- {
- There~is~a~problem.~Maybe~you~have~put~a~command~\token_to_str:N\cr\
- instead~of~a~command~\token_to_str:N\\~at~the~end~of~
- the~row~\l_tmpa_int\
- of~your~environment~\{\l__wi_type_env_str\}. \\
- This~error~is~fatal.
- }
-\__wi_msg_new:nn { Option~xoffset~forbidden }
- {
- You~can't~use~the~option~'xoffset'~in~the~command~
- \l__wi_string_Arrow_for_msg_str\
- while~you~are~using~the~option~
- ' \int_compare:nNnTF \l__wi_pos_arrow_int = 7
- { group }
- { groups } '. \\
- \c__wi_option_ignored_str
- }
-\__wi_msg_new:nnn { Duplicate~name }
- {
- The~name~'\l_keys_value_tl'~is~already~used~and~you~shouldn't~use~
- the~same~environment~name~twice.~You~can~go~on,~but,~
- maybe,~you~will~have~incorrect~results. \\
- For~a~list~of~the~names~already~used,~type~H~<return>. \\
- If~you~don't~want~to~see~this~message~again,~use~the~option~
- 'allow-duplicate-names'.
- }
- {
- The~names~already~defined~in~this~document~are:~
- \seq_use:Nnnn \g__wi_names_seq { ,~ } { ,~ } { ~and~ }.
- }
-\NewDocumentCommand \WithArrowsNewStyle { m m }
- {
- \keys_if_exist:nnTF { WithArrows / Global } { #1 }
- { \__wi_error:nn { Key~already~defined } { #1 } }
- {
- \keys_define:nn { WithArrows / Global }
- {
- #1 .code:n =
- { \keys_set_known:nn { WithArrows / WithArrowsOptions } { #2 } }
- }
- \seq_put_right:Nx \l__wi_options_WithArrows_seq { \tl_to_str:n { #1 } }
- \seq_put_right:Nx \l__wi_options_DispWithArrows_seq
- { \tl_to_str:n { #1 } }
- \seq_put_right:Nx \l__wi_options_WithArrowsOptions_seq
- { \tl_to_str:N { #1 } }
- \group_begin:
- \msg_set:nnn { witharrows } { Unknown~option~WithArrowsOptions }
- {
- The~key~'\l_keys_key_tl'~can't~be~set~in~the~
- definition~of~a~style.~You~can~go~on~for~this~time~
- but~you~should~suppress~this~key.
- }
- \WithArrowsOptions { #2 }
- \group_end:
- }
- }
-\__wi_msg_new:nn { Key~already~defined }
- {
- The~key~'#1'~is~already~defined. \\
- If~you~go~on,~your~instruction~\token_to_str:N\WithArrowsNewStyle\
- will~be~ignored.
- }
-\tl_const:Nn \c__wi_tikz_code_up_tl
- {
- \draw [ rounded~corners ]
- let \p1 = (#1) ,
- \p2 = (#2)
- in (\p1) -- node {
- \dim_set:Nn \l_tmpa_dim { \x2 - \x1 }
- \begin { varwidth } \l_tmpa_dim
- \raggedright
- #3
- \end { varwidth }
- }
- (\x2,\y1) -- (\p2) ;
- }
-\tl_const:Nn \c__wi_tikz_code_down_tl
- {
- \draw [ rounded~corners ]
- let \p1 = (#1) ,
- \p2 = (#2)
- in (\p1) -- (\x1,\y2) --
- node {
- \dim_set:Nn \l_tmpa_dim { \x1 - \x2 }
- \begin { varwidth } \l_tmpa_dim
- \raggedright
- #3
- \end { varwidth }
- }
- (\p2) ;
- }
-\keys_define:nn { WithArrows / Arrow / FirstPass }
- {
- up .code:n = \__wi_set_independent: ,
- down .code:n = \__wi_set_independent: ,
- up .default:n = NoValue ,
- down .default:n = NoValue
- }
-\keys_define:nn { WithArrows / Arrow / SecondPass }
- {
- up .code:n =
- \str_if_empty:NT \l__wi_previous_key_str
- {
- \str_set:Nn \l__wi_previous_key_str { up }
- \bool_if:NTF \c__wi_varwidth_loaded_bool
- {
- \cs_if_exist:cTF { tikz@library@calc@loaded }
- {
- \int_set:Nn \l__wi_pos_arrow_int \c_one_int
- \bool_set_false:N \l__wi_wrap_lines_bool
- \tl_set_eq:NN \l__wi_tikz_code_tl
- \c__wi_tikz_code_up_tl
- }
- { \__wi_error:n { calc~not~loaded } }
- }
- { \__wi_error:n { varwidth~not~loaded } }
- } ,
- down .code:n =
- \str_if_empty:NT \l__wi_previous_key_str
- {
- \str_set:Nn \l__wi_previous_key_str { down }
- \bool_if:NTF \c__wi_varwidth_loaded_bool
- {
- \cs_if_exist:cTF { tikz@library@calc@loaded }
- {
- \int_set:Nn \l__wi_pos_arrow_int \c_one_int
- \bool_set_false:N \l__wi_wrap_lines_bool
- \tl_set_eq:NN \l__wi_tikz_code_tl
- \c__wi_tikz_code_down_tl
- }
- { \__wi_error:n { calc~not~loaded } }
- }
- { \__wi_error:n { varwidth~not~loaded } }
- }
- }
-\seq_put_right:Nn \l__wi_options_Arrow_seq { down }
-\seq_put_right:Nn \l__wi_options_Arrow_seq { up }
-\__wi_msg_new:nn { varwidth~not~loaded }
- {
- You~can't~use~the~option~'\l_keys_key_tl'~because~
- you~don't~have~loaded~the~package~'varwidth'. \\
- \c__wi_option_ignored_str
- }
-\__wi_msg_new:nn { calc~not~loaded }
- {
- You~can't~use~the~option~'\l_keys_key_tl'~because~you~don't~have~loaded~the~
- Tikz~library~'calc'.You~should~add~'\token_to_str:N\usetikzlibrary{calc}'
- ~in~the~preamble~of~your~document. \\
- \c__wi_option_ignored_str
- }
-\endinput
-%%
-%% End of file `witharrows.sty'.