%%
%% 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.14}
\def\myfiledate{2019/02/01}
\RequirePackage{tikz}
\usetikzlibrary{arrows.meta,bending}
\RequirePackage{expl3}[2019/01/28]
\RequirePackage{l3keys2e}
\ProvidesExplPackage
  {witharrows}
  {\myfiledate}
  {\myfileversion}
  {Draws arrows for explanations on the right}
\RequirePackage{xparse}[2018-10-17]
\bool_new:N \g__wa_footnotehyper_bool
\bool_new:N \g__wa_footnote_bool
\int_new:N \l__wa_level_int
\keys_define:nn {WithArrows/package}
      {footnote      .bool_gset:N = \g__wa_footnote_bool,
       footnotehyper .bool_gset:N = \g__wa_footnotehyper_bool,
       unknown       .code:n      = \msg_fatal:nn {witharrows}
                                         {Option~unknown~for~package}}
\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.}
\ProcessKeysOptions {WithArrows/package}
\msg_new:nnn {witharrows}
             {Option~incompatible~with~Beamer}
             {The~option~"\tl_use:N \l_keys_key_tl"\ is~incompatible~
              with~Beamer~because~Beamer~has~its~own~system~to~extract~footnotes.}
\msg_new:nnn {witharrows}
             {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.}
\msg_new:nnn {witharrows}
             {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.}
\bool_if:NT \g__wa_footnote_bool
      {\@ifclassloaded {beamer}
                {\msg_fatal:nn {witharrows}
                               {Option~incompatible~with~Beamer}}
                {}
       \@ifpackageloaded{footnotehyper}
           {\msg_fatal:nn {witharrows}
                          {footnote~with~footnotehyper~package}}
           {}
       \usepackage{footnote}}
\bool_if:NT \g__wa_footnotehyper_bool
      {\@ifclassloaded {beamer}
                {\msg_fatal:nn {witharrows}
                               {Option~incompatible~with~Beamer}}
                {}
       \@ifpackageloaded{footnote}
           {\msg_fatal:nn {witharrows}
                          {footnotehyper~with~footnote~package}}
           {}
       \usepackage{footnotehyper}
       \bool_gset_true:N \g__wa_footnote_bool}
\bool_new:N \c__wa_leqno_bool
\DeclareOption {leqno} {\bool_set_true:N \c__wa_leqno_bool}
\DeclareOption* {}
\ProcessOptions*
\cs_new_protected:Nn \__wa_error:n
        {\msg_error:nn {witharrows} {#1}}
\cs_new_protected:Nn \__wa_error:nn
        {\msg_error:nnn {witharrows} {#1} {#2}}
\cs_generate_variant:Nn \__wa_error:nn {nx}
\cs_new_protected:Nn \__wa_bool_new:N
      {\bool_if_exist:NTF #1
         {\bool_set_false:N #1}
         {\bool_new:N #1}}
\AtBeginDocument
      {\clist_map_inline:nn
            {amsmath,mathtools,autonum,cleveref,hyperref,typedref,showlabels,
             amsthm,varwidth}
            {\bool_new:c {c__wa_#1_loaded_bool}
             \@ifpackageloaded {#1}
                   {\bool_set_true:c {c__wa_#1_loaded_bool}}
                   {}}}
\cs_generate_variant:Nn \seq_set_split:Nnn {Nxx}
\cs_new_protected:Nn \__wa_save:N
   {\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:Nn \__wa_restore:N
   {\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{__wa_node_style/.style= {
               above = \l__wa_ystart_dim,
               inner~sep = 0 pt,
               minimum~width = 0pt,
               minimum~height = \l__wa_ygap_dim}}
\tikzset{__wa_standard/.style= { remember~picture,
                               overlay,
                               name~prefix = wa-\l__wa_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:NF \c__wa_amsmath_loaded_bool
       {\cs_set_protected:Npn \spread@equation
           {\openup\jot
            \cs_set_eq:NN \spread@equation \prg_do_nothing:}}}
\bool_new:N \l__wa_in_WithArrows_bool
\bool_new:N \l__wa_in_DispWithArrows_bool
\seq_new:N \g__wa_position_in_the_tree_seq
\seq_gput_right:Nn \g__wa_position_in_the_tree_seq 1
\int_new:N \g__wa_last_env_int
\skip_new:N \l__wa_interline_skip
\int_new:N \l__wa_pos_env_int
\dim_new:N \l__wa_xoffset_dim
\dim_set:Nn \l__wa_xoffset_dim {3mm}
\int_new:N \l__wa_pos_arrow_int
\int_set:Nn \l__wa_pos_arrow_int 3
\int_new:N \l__wa_previous_pos_arrow_int
\dim_new:N \l__wa_x_dim
\seq_new:N \g__wa_arrow_int_seq
\int_new:N \g__wa_arrow_int
\seq_new:N \g__wa_line_int_seq
\int_new:N \g__wa_line_int
\tl_new:N \l__wa_name_tl
\bool_new:N \l__wa_fleqn_bool
\dim_new:N \l__wa_mathindent_dim
\dim_set:Nn \l__wa_mathindent_dim {25pt}
\bool_new:N \l__wa_wrap_lines_bool
\clist_new:N \l__wa_tags_clist
\clist_set:Nn \l__wa_tags_clist {all}
\tl_new:N \l__wa_tag_tl
\bool_new:N \l__wa_tag_star_bool
\bool_new:N \l__wa_in_first_column_bool
\bool_new:N \l__wa_initial_r_bool
\bool_new:N \l__wa_initial_l_bool
\dim_new:N \l__wa_start_adjust_dim
\dim_set:Nn \l__wa_start_adjust_dim {0.4ex}
\dim_new:N \l__wa_end_adjust_dim
\dim_set:Nn \l__wa_end_adjust_dim {0.4ex}
\str_new:N \l__wa_CommandName_str
\str_set:Nn \l__wa_CommandName_str {Arrow}
\str_new:N \l__wa_string_Arrow_for_messages_str
\str_set:Nx \l__wa_string_Arrow_for_messages_str {\token_to_str:N \Arrow}
\int_set:Nn \l__wa_level_int 1
\keys_define:nn {WithArrows/GlobalOrEnv}
   {  t   .code:n            = {\bool_if:NTF \l__wa_in_DispWithArrows_bool
                                 {\__wa_error:n {Option~will~be~ignored}
                                 {\int_set:Nn \l__wa_pos_env_int 0}}},
      t   .value_forbidden:n = true,
      c   .code:n            = {\bool_if:NTF \l__wa_in_DispWithArrows_bool
                                 {\__wa_error:n {Option~will~be~ignored}}
                                 {\int_set:Nn \l__wa_pos_env_int 1}},
      c   .value_forbidden:n = true,
      b   .code:n            = {\bool_if:NTF \l__wa_in_DispWithArrows_bool
                                 {\__wa_error:n {Option~will~be~ignored}}
                                 {\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,
      ygap .initial:n        = 0.4 ex,
      ystart .dim_set:N        = \l__wa_ystart_dim,
      ystart .value_required:n = true,
      ystart .initial:n        = 0.4 ex,
      MoreColumns .code:n            = { \bool_if:NTF \l__wa_in_DispWithArrows_bool
                                           {\__wa_error:n {Option~will~be~ignored}}
                                           { \msg_redirect_name:nnn
                                             {witharrows}
                                             {Third~column~in~WithArrows}
                                             {none} }},
      MoreColumns .value_forbidden:n = true,
      AllowLineWithoutAmpersand .code:n = { \__wa_error:n
                                            {AllowLineWithoutAmpersand}},
      AllowLineWithoutAmpersand .value_forbidden:n = true,
      CommandName .code:n =
        {\str_set:Nn \l__wa_CommandName_str {#1}
         \str_set:Nx \l__wa_string_Arrow_for_messages_str
                    {\c_backslash_str Arrow~(renamed~here~in~\c_backslash_str #1)}},
      CommandName .value_required:n = true,
      TikzCode .tl_set:N         = \l__wa_tikz_code_tl,
      TikzCode .initial:n        = \draw~(#1)~to~node{#3}~(#2)~; ,
      TikzCode .value_required:n = true,
      displaystyle .bool_set:N     = \l__wa_displaystyle_bool,
      displaystyle .initial:n      = false,
      shownodes .code:n            = {\tikzset{__wa_node_style/.append~style = {draw,red}}},
      shownodes .value_forbidden:n = true,
      shownodenames .bool_set:N    = \l__wa_shownodenames_bool,
      shownodenames .initial:n     = false,
      group    .code:n    = {\int_compare:nNnT \l__wa_previous_pos_arrow_int > {-1}
                                    {\__wa_error:n {Incompatible~options}}
                             \int_set:Nn \l__wa_previous_pos_arrow_int 7
                             \int_set:Nn \l__wa_pos_arrow_int 7} ,
      group    .value_forbidden:n = true,
      groups   .code:n   = {\int_compare:nNnT \l__wa_previous_pos_arrow_int > {-1}
                                   {\__wa_error:n {Incompatible~options}}
                            \int_set:Nn \l__wa_previous_pos_arrow_int 6
                            \int_set:Nn \l__wa_pos_arrow_int 6} ,
      groups   .value_forbidden:n = true,
      CodeBefore  .code:n = {\int_compare:nNnTF \l__wa_level_int = 1
                              {\__wa_error:n {Option~will~be~ignored}}
                              {\tl_put_right:Nn \l__wa_code_before_tl {#1}}} ,
      CodeBefore  .value_required:n = true,
      CodeAfter .code:n = {\int_compare:nNnTF \l__wa_level_int = 1
                              {\__wa_error:n {Option~will~be~ignored}}
                              {\tl_put_right:Nn \l__wa_code_after_tl {#1}}} ,
      CodeAfter .value_required:n = true,
      name .code:n = {\int_compare:nNnTF \l__wa_level_int = 1
                              {\__wa_error:n {Option~will~be~ignored}}
                              {\tl_set:Nn \l__wa_name_tl {#1}}} ,
      name .value_required:n = true,
      fleqn   .code:n = {\bool_if:NTF \l__wa_in_WithArrows_bool
                             {\__wa_error:n {Option~will~be~ignored}}
                             {\str_if_eq:nnTF {#1} {true}
                                 {\bool_set_true:N \l__wa_fleqn_bool}
                                 {\bool_set_false:N \l__wa_fleqn_bool}}},
      fleqn   .default:n = true,
      mathindent   .code:n = {\bool_if:NTF \l__wa_in_WithArrows_bool
                               {\__wa_error:n {Option~will~be~ignored}}
                               {\dim_set:Nn \l__wa_mathindent_dim {#1}}},
      mathindent   .value_required:n = true,
      notag   .code:n = {\bool_if:NTF \l__wa_in_WithArrows_bool
                             {\__wa_error:n {Option~will~be~ignored}}
                             {\str_if_eq:nnTF {#1} {true}
                                 {\clist_clear:N \l__wa_tags_clist}
                                 {\clist_set:Nn \l__wa_tags_clist {all}}}},
      notag   .default:n = true,
      nonumber .meta:n   = notag,
      AllowMultipleLabels .code:n = {\bool_if:NTF \l__wa_in_WithArrows_bool
                                         {\__wa_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__wa_in_WithArrows_bool
                               {\__wa_error:n {Option~will~be~ignored}}
                               {\str_if_eq:nnTF {#1} {true}
                                   {\bool_set_true:N \l__wa_wrap_lines_bool}
                                   {\bool_set_false:N \l__wa_wrap_lines_bool}}},
      wrap-lines   .default:n = true,
      tagged-lines .code:n = {\bool_if:NTF \l__wa_in_WithArrows_bool
                              {\__wa_error:n {Option~will~be~ignored}}
                              {\clist_set:Nn \l__wa_tags_clist {#1}
                               \clist_if_in:NnT \l__wa_tags_clist {first}
                                  {\clist_remove_all:Nn \l__wa_tags_clist {first}
                                   \clist_put_left:Nn \l__wa_tags_clist 1 }}},
      tagged-lines .value_required:n = true,
      unknown .code:n  = \__wa_error:n {Unknown~option}
     }
\keys_define:nn {WithArrows/General}
     {tikz     .code:n            = \tikzset {WithArrows/arrow/.append~style = {#1}},
      tikz     .initial:n         = {},
      tikz     .value_required:n  = true,
      rr       .value_forbidden:n = true,
      rr       .code:n            = \__wa_analyze_option_position:n 3 ,
      ll       .value_forbidden:n = true,
      ll       .code:n            = \__wa_analyze_option_position:n 1 ,
      rl       .value_forbidden:n = true,
      rl       .code:n            = \__wa_analyze_option_position:n 2 ,
      lr       .value_forbidden:n = true,
      lr       .code:n            = \__wa_analyze_option_position:n 0 ,
      i        .value_forbidden:n = true,
      i        .code:n            = \__wa_analyze_option_position:n 5 ,
      xoffset  .code:n  = {\bool_if:nTF {\int_compare_p:nNn \l__wa_level_int = 3 &&
                                        \int_compare_p:nNn \l__wa_pos_arrow_int > 5}
                               {\__wa_error:n {Option~incompatible~with~group}}
                               {\dim_set:Nn \l__wa_xoffset_dim {#1}}} ,
      xoffset  .value_required:n  = true,
      jot       .code:n     = {\int_compare:nNnTF \l__wa_level_int = 2
                                  {\dim_set:Nn \jot {#1}}
                                  {\__wa_error:n {Option~will~be~ignored}}} ,
      jot       .value_required:n  = true,
      interline   .code:n       = {\int_compare:nNnTF \l__wa_level_int = 2
                                      {\skip_set:Nn \l__wa_interline_skip {#1}}
                                      {\__wa_error:n {Option~will~be~ignored}}} ,
      interline   .value_required:n = true,
      start-adjust .dim_set:N = \l__wa_start_adjust_dim,
      start-adjust .value_required:n = true,
      end-adjust  .dim_set:N = \l__wa_end_adjust_dim,
      end-adjust  .value_required:n = true,
      adjust      .code:n  = {\dim_set:Nn \l__wa_start_adjust_dim {#1}
                              \dim_set:Nn \l__wa_end_adjust_dim {#1} },
      adjust      .value_required:n = true,
      unknown     .code:n  = \__wa_error:n {Unknown~option}
}
\keys_define:nn {WithArrows/Arrow}
     {jump  .code:n = {\int_set:Nn \l__wa_jump_int {#1}
                       \int_compare:nNnF \l__wa_jump_int > 0
                           {\__wa_error:n {Negative~value~for~jump}}} ,
      jump  .value_required:n  = true,
      rr       .value_forbidden:n = true,
      rr       .code:n            = \__wa_analyze_option_position:n 3 ,
      ll       .value_forbidden:n = true,
      ll       .code:n            = \__wa_analyze_option_position:n 1 ,
      rl       .value_forbidden:n = true,
      rl       .code:n            = \__wa_analyze_option_position:n 2 ,
      lr       .value_forbidden:n = true,
      lr       .code:n            = \__wa_analyze_option_position:n 0 ,
      i        .value_forbidden:n = true,
      i        .code:n            = \__wa_analyze_option_position:n 5 }
\cs_new_protected:Nn \__wa_analyze_option_position:n
     {\int_compare:nNnT \l__wa_previous_pos_arrow_int > {-1}
        {\__wa_error:n {Incompatible~options}}
      \int_set:Nn \l__wa_previous_pos_arrow_int {#1}
      \int_set:Nn \l__wa_pos_arrow_int {#1}}
\NewDocumentCommand \WithArrowsOptions {m}
    {\int_set:Nn \l__wa_previous_pos_arrow_int {-1}
     \keys_set_known:nnN {WithArrows/General} {#1} \l_tmpa_tl
     \keys_set:nV {WithArrows/GlobalOrEnv} \l_tmpa_tl}
\NewDocumentCommand \__wa_Arrow {O{} m !O{}}
         {
          \int_gincr:N \g__wa_arrow_int
          \int_set:Nn \l__wa_previous_pos_arrow_int {-1}
          \int_set:Nn \l__wa_pos_arrow_int {-1}
          \int_set:Nn \l__wa_level_int 3
          \keys_set_known:nnN {WithArrows/Arrow} {#1,#3} \l_tmpa_tl
          \prop_put:NnV \l_tmpa_prop {initial} \g__wa_line_int
          \int_set:Nn \l_tmpa_int {\g__wa_line_int + \l__wa_jump_int}
          \prop_put:NnV \l_tmpa_prop {final} \l_tmpa_int
          \prop_put:NnV \l_tmpa_prop {position} \l__wa_pos_arrow_int
          \prop_put:NnV \l_tmpa_prop {options} \l_tmpa_tl
          \prop_put:Nnn \l_tmpa_prop {label} {#2}
          \prop_gclear_new:c
                {g__wa_arrow_\l__wa_prefix_str _\int_use:N\g__wa_arrow_int _prop}
          \prop_gset_eq:cN
                {g__wa_arrow_\l__wa_prefix_str _\int_use:N\g__wa_arrow_int _prop}
                \l_tmpa_prop
          }
\cs_new_protected:Nn \__wa_Arrow_first_column:
               {\__wa_error:n {Arrow~in~first~column}
                \__wa_Arrow}
\cs_new_protected:Nn \__wa_pre_environment:n
         { \tl_clear_new:N \l__wa_type_env_tl
           \tl_set:NV \l__wa_type_env_tl \@currenvir
           \seq_gput_right:NV \g__wa_arrow_int_seq \g__wa_arrow_int
           \int_gzero:N \g__wa_arrow_int
           \seq_gput_right:NV \g__wa_line_int_seq \g__wa_line_int
           \int_gzero:N \g__wa_line_int
           \seq_gput_right:Nn \g__wa_position_in_the_tree_seq 1
           \seq_set_eq:NN \l_tmpa_seq \g__wa_position_in_the_tree_seq
           \seq_pop_right:NN \l_tmpa_seq \l_tmpa_tl
           \str_clear_new:N \l__wa_prefix_str
           \str_set:Nx \l__wa_prefix_str {\seq_use:Nnnn \l_tmpa_seq {-} {-} {-}}
           \cs_set_eq:NN \\ \__wa_cr:
           \dim_zero:N \mathsurround
           \int_zero_new:N \l__wa_initial_int
           \int_zero_new:N \l__wa_final_int
           \int_zero_new:N \l__wa_arrow_int
           \int_zero_new:N \l__wa_pos_of_arrow_int
           \int_zero_new:N \l__wa_jump_int
           \int_set:Nn \l__wa_jump_int 1
           \seq_clear_new:N \l__wa_labels_seq
           \__wa_bool_new:N \l__wa_tag_next_line_bool
           \skip_zero:N \l__wa_interline_skip
           \tl_clear_new:N \l__wa_code_before_tl
           \tl_clear_new:N \l__wa_code_after_tl
           \int_set:Nn \l__wa_previous_pos_arrow_int {-1}
           \int_set:Nn \l__wa_level_int 2
           \keys_set_known:nnN {WithArrows/General} {#1} \l_tmpa_tl
           \keys_set:nV {WithArrows/GlobalOrEnv} \l_tmpa_tl
           \bool_if:NT \g__wa_footnote_bool \savenotes
           \l__wa_code_before_tl
           \cs_set_eq:cN \l__wa_CommandName_str \__wa_Arrow}
\NewDocumentEnvironment {WithArrows} {!O{}}
         { \bool_set_true:N \l__wa_in_WithArrows_bool
           \bool_set_false:N \l__wa_in_DispWithArrows_bool
           \__wa_pre_environment:n {#1}
           \reverse_if:N \if_mode_math:
                             \__wa_error:n {WithArrows~outside~math~mode}
                         \fi:
           \cs_set_eq:NN \notag \__wa_notag:
           \cs_set_eq:NN \nonumber \__wa_notag:
           \cs_set_eq:NN \tag \__wa_tag
           \cs_set_eq:NN \label \__wa_label:n
           \cs_set_eq:NN \tagnextline \__wa_tagnextline:
           \int_case:nn \l__wa_pos_env_int
                   {0 \vtop
                    1 \vcenter
                    2 \vbox}
           \bgroup
           \spread@equation
           \ialign\bgroup
           \int_gincr:N \g__wa_line_int
           \cs_set_eq:cN \l__wa_CommandName_str \__wa_Arrow_first_column:
           \bool_set_true:N \l__wa_in_first_column_bool
           \strut\hfil
           $\bool_if:NT \l__wa_displaystyle_bool \displaystyle {##}$
           &
           $\bool_if:NT \l__wa_displaystyle_bool \displaystyle {{}##}$
           \tikz [remember~picture,overlay]
                 \node [__wa_node_style,
                        name = wa-\l__wa_prefix_str-\int_use:N\g__wa_line_int-l,
                        alias = {\tl_if_empty:NF \l__wa_name_tl
                                     {\l__wa_name_tl-\int_use:N\g__wa_line_int-l}} ] {} ;
           \hfil
           \tikz [remember~picture,overlay]
                 \node [__wa_node_style,
                        name = wa-\l__wa_prefix_str-\int_use:N\g__wa_line_int-r,
                        alias = {\tl_if_empty:NF \l__wa_name_tl
                                   {\l__wa_name_tl-\int_use:N\g__wa_line_int-r}} ] {} ;
           \bool_if:NT \l__wa_shownodenames_bool
                {\hbox_overlap_right:n {\small wa-\l__wa_prefix_str
                                                 -\int_use:N\g__wa_line_int}}
           && \__wa_error:n {Third~column~in~WithArrows}
           $\bool_if:NT \l__wa_displaystyle_bool \displaystyle {##}$
           \cr
          }
          {\\
           \egroup
           \egroup
           \__wa_post_environment:
           \bool_if:NT \g__wa_footnote_bool \endsavenotes
}
\cs_new_protected:Nn \__wa_post_environment:
          {\cs_set:Npn \WithArrowsRightX {\g__wa_right_x_dim}
           \int_compare:nNnT \g__wa_arrow_int > 0 \__wa_scan_arrows:
           \group_begin:
           \tikzset{every~picture/.style = __wa_standard}
           \cs_set:Npn \WithArrowsNbLines {\int_use:N \g__wa_line_int}
           \cs_set_eq:NN \MultiArrow \__wa_MultiArrow:nn
           \cs_set_eq:cN \l__wa_CommandName_str \__wa_Arrow_code_after
           \l__wa_code_after_tl
           \group_end:
           \seq_gpop_right:NN \g__wa_position_in_the_tree_seq \l_tmpa_tl
           \seq_gpop_right:NN \g__wa_position_in_the_tree_seq \l_tmpa_tl
           \seq_gput_right:Nx \g__wa_position_in_the_tree_seq
                              {\int_eval:n {\l_tmpa_tl+1}}
           \int_compare:nNnT {\seq_count:N \g__wa_position_in_the_tree_seq} = 1
                      {\int_gincr:N \g__wa_last_env_int}
           \seq_gpop_right:NN \g__wa_arrow_int_seq {\l_tmpa_tl}
           \int_gset:Nn \g__wa_arrow_int {\l_tmpa_tl}
           \seq_gpop_right:NN \g__wa_line_int_seq \l_tmpa_tl
           \int_gset:Nn \g__wa_line_int {\l_tmpa_tl}
           }
\cs_new_protected:Nn \__wa_cr:
      {\scan_stop:
       \bool_if:NT \l__wa_in_first_column_bool { & {} }
       \group_align_safe_begin:
       \peek_meaning_remove:NTF * \__wa_cr_i: \__wa_cr_i:}
\cs_new_protected:Nn \__wa_cr_i:
      {\peek_meaning:NTF [ {\__wa_cr_ii:} {\__wa_cr_ii:[\c_zero_dim]} }
\cs_new_protected:Npn \__wa_cr_ii:[#1]
      {\group_align_safe_end:
       \bool_if:NT \l__wa_in_DispWithArrows_bool
           {\clist_if_in:NnTF \l__wa_tags_clist {all}
                {
                 \tl_if_empty:NT \l__wa_tag_tl
                    {\int_gincr:N \c@equation}
                 \cs_gset:Npx \g_tmpa_tl
                      {\tl_if_empty:NTF \l__wa_tag_tl
                          \theequation
                          \l__wa_tag_tl}
                 \seq_if_empty:NF \l__wa_labels_seq
                      {
                       \cs_set:Npx \@currentlabel {\p@equation \g_tmpa_tl}
                       \bool_if:NT \c__wa_hyperref_loaded_bool
                            {\cs_set:Npn \This@name {equation}
                             \hyper@refstepcounter{equation}}
                       \bool_if:NT \c__wa_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}}
                       \bool_if:NT \c__wa_typedref_loaded_bool
                          {\cs_set:Npn \sr@name {equation}}
                       \seq_map_function:NN \l__wa_labels_seq \__wa_old_label}
                 \__wa_save:N \l__wa_tag_star_bool
                 \__wa_save:N \l__wa_qedhere_bool
                 \bool_if:NT \l__wa_tag_next_line_bool
                            { \openup -\jot
                              \bool_set_false:N \l__wa_tag_next_line_bool
                              \notag \\ & }
                 & \__wa_restore:N \l__wa_tag_star_bool
                   \__wa_restore:N \l__wa_qedhere_bool
                   \bool_if:NT \l__wa_qedhere_bool
                         {\hbox_overlap_left:n \__wa_qedhere_i:}
                   \cs_set_eq:NN \theequation \g_tmpa_tl
                   \bool_if:NT \l__wa_tag_star_bool {\cs_set:Npn \tagform@ {}}
                   \hbox_overlap_left:n
                     {\bool_if:NF \c__wa_leqno_bool
                        {\tikz [__wa_standard] \coordinate (\int_use:N\g__wa_line_int-v) ;}
                      \quad
                      \@eqnnum }
                   \bool_if:NT \c__wa_leqno_bool
                      {\tikz [__wa_standard] \coordinate (\int_use:N \g__wa_line_int-v) ;}}
                {\__wa_save:N \l__wa_qedhere_bool
                 & \__wa_restore:N \l__wa_qedhere_bool
                   \bool_if:NT \l__wa_qedhere_bool
                         {\hbox_overlap_left:n \__wa_qedhere_i:}
                   \tikz [__wa_standard] \coordinate (\int_use:N\g__wa_line_int-v)  ; }
             }
       \cr\noalign{\skip_vertical:n {#1 + \l__wa_interline_skip}
       \scan_stop:}}
\cs_new_protected:Nn \__wa_if_in_second_col_of_disp:nn
     {\bool_if:NTF \l__wa_in_WithArrows_bool
          {\__wa_error:nn {Command~not~allowed~in~WithArrows}
                          {#1}}
          {\bool_if:NTF \l__wa_in_first_column_bool
             {\__wa_error:nn {Command~not~allowed~in~DispWithArrows}
                             {#1}}
             {#2}}}
\cs_new_protected:Nn \__wa_notag:
     {\__wa_if_in_second_col_of_disp:nn {\notag}
             {\clist_clear:N \l__wa_tags_clist}}
\NewDocumentCommand \__wa_tag {sm}
     {\__wa_if_in_second_col_of_disp:nn {\tag}
             {\tl_if_empty:NF \l__wa_tag_tl
                   {\__wa_error:nn  {Multiple~tags} {#2}}
              \clist_set:Nn \l__wa_tags_clist {all}
              \bool_if:nT \c__wa_mathtools_loaded_bool
                    {\MH_if_boolean:nT {show_only_refs}
                         {\MH_if_boolean:nF {show_manual_tags}
                             {\clist_clear:N \l__wa_tags_clist}}}
              \tl_set:Nn \l__wa_tag_tl {#2}
              \bool_set:Nn \l__wa_tag_star_bool {#1}
             \bool_if:nT {#1 && ! \bool_if_p:N \c__wa_amsmath_loaded_bool}
                  { \__wa_error:n {tag*~without~amsmath} }}
    }
\cs_new_protected:Nn \__wa_label:n
     {\__wa_if_in_second_col_of_disp:nn {\label}
             {\seq_if_empty:NF \l__wa_labels_seq
                 {\bool_if:NTF \c__wa_cleveref_loaded_bool
                    {\__wa_error:n {Multiple~labels~with~cleveref}}
                    {\__wa_error:n {Multiple~labels}}}
              \seq_put_right:Nn \l__wa_labels_seq {#1}
              \bool_if:nT \c__wa_mathtools_loaded_bool
                 {\MH_if_boolean:nT {show_only_refs}
                     {\cs_if_exist:cTF {MT_r_#1}
                       {\clist_set:Nn \l__wa_tags_clist {all}}
                       {\clist_clear:N \l__wa_tags_clist}}}
              \bool_if:nT \c__wa_autonum_loaded_bool
                     {\cs_if_exist:cTF {autonum@#1Referenced}
                       {\clist_set:Nn \l__wa_tags_clist {all}}
                       {\clist_clear:N \l__wa_tags_clist}}}}
\cs_new_protected:Nn \__wa_tagnextline:
        {\__wa_if_in_second_col_of_disp:nn {\tagnextline}
             {\bool_set_true:N \l__wa_tag_next_line_bool}}
\bool_new:N \l__wa_qedhere_bool
\cs_new_protected:Nn \__wa_qedhere: {\bool_set_true:N \l__wa_qedhere_bool}
\cs_new_protected:Nn \__wa_qedhere_i: {\group_begin:
                                       \cs_set_eq:NN \qed \qedsymbol
                                       \cs_set_eq:NN \qed@elt \setQED@elt
                                       \QED@stack\relax\relax
                                     \group_end: }
\NewDocumentEnvironment {DispWithArrows} {!O{}}
         {
          \bool_if:nT \c__wa_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__wa_amsmath_loaded_bool \intertext@
           \bool_set_true:N \l__wa_in_DispWithArrows_bool
           \__wa_pre_environment:n {#1}
           \if_mode_math:
               \__wa_error:n {DispWithArrows~in~math~mode}
           \fi:
           \if_mode_vertical:
             \nointerlineskip
             \makebox[.6\linewidth]{}
           \fi:
           $$
           \vcenter \bgroup
           \spread@equation
           \bool_if:NTF \l__wa_fleqn_bool
                  {\tabskip = \c_zero_skip}
                  {\tabskip = 0 pt plus 1000 pt minus 1000 pt}
           \cs_set_eq:NN \__wa_old_label \label
           \cs_set_eq:NN \notag \__wa_notag:
           \cs_set_eq:NN \nonumber \__wa_notag:
           \cs_set_eq:NN \tag \__wa_tag
           \cs_set_eq:NN \label \__wa_label:n
           \cs_set_eq:NN \tagnextline \__wa_tagnextline:
           \halign to \displaywidth \bgroup
             \int_gincr:N \g__wa_line_int
             \cs_set_eq:cN \l__wa_CommandName_str \__wa_Arrow_first_column:
             \bool_set_true:N \l__wa_in_first_column_bool
             \strut
             \bool_if:NT \l__wa_fleqn_bool
                   {\skip_horizontal:n \l__wa_mathindent_dim}
             \hfil
             $\bool_if:NT \l__wa_displaystyle_bool \displaystyle {##}$
             \tabskip = \c_zero_skip
            &
             \clist_if_in:NVT \l__wa_tags_clist \g__wa_line_int
                  {\clist_set:Nn \l__wa_tags_clist {all}}
             \bool_if:NT \c__wa_amsthm_loaded_bool {\cs_set_eq:NN \qedhere \__wa_qedhere:}
             $\bool_if:NT \l__wa_displaystyle_bool \displaystyle {{}##}$
             \tabskip = 0 pt plus 1000 pt minus 1000 pt
             \tikz [remember~picture,overlay]
                  \node [__wa_node_style,
                         name = wa-\l__wa_prefix_str-\int_use:N\g__wa_line_int-l,
                         alias = {\tl_if_empty:NF \l__wa_name_tl
                                    {\l__wa_name_tl-\int_use:N\g__wa_line_int-l}} ] {} ;
             \hfil
             \tikz [remember~picture,overlay]
                   \node [__wa_node_style,
                          name = wa-\l__wa_prefix_str-\int_use:N\g__wa_line_int-r,
                          alias = {\tl_if_empty:NF \l__wa_name_tl
                                     {\l__wa_name_tl-\int_use:N\g__wa_line_int-r}} ] {} ;
             \bool_if:NT \l__wa_shownodenames_bool
                  {\hbox_overlap_right:n {\small wa-\l__wa_prefix_str
                                                   -\int_use:N\g__wa_line_int}}
            & ##
             \tabskip = \c_zero_skip
            && \__wa_error:n {Third~column~in~DispWithArrows}
               \iffalse ## \fi
             \cr}
          {\clist_if_in:NnT \l__wa_tags_clist {last}
                   {\clist_set:Nn \l__wa_tags_clist {all}}
           \\
           \egroup
           \egroup
           \bool_if:NT \l__wa_in_DispWithArrows_bool
             {\dim_gzero_new:N \g__wa_right_x_dim
              \dim_gset_eq:NN \g__wa_right_x_dim \c_max_dim
              \begin{tikzpicture} [__wa_standard]
              \int_step_variable:nNn \g__wa_line_int \l_tmpa_int
                    {\cs_if_free:cTF {pgf@sh@ns@wa-\l__wa_prefix_str-\l_tmpa_int-v}
                       {\__wa_error: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__wa_right_x_dim
                               {\dim_gset:Nn \g__wa_right_x_dim \l_tmpa_dim}} }
              \end{tikzpicture}}
           \__wa_post_environment:
           \bool_if:nT \c__wa_mathtools_loaded_bool
                    {\MH_if_boolean:nT {show_only_refs}
                          \MT_showonlyrefs_true:}
           $$
           \bool_if:NT \g__wa_footnote_bool \endsavenotes
           \ignorespacesafterend
           }
\NewDocumentEnvironment {DispWithArrows*} {}
     {\WithArrowsOptions{notag}
      \DispWithArrows}
     {\endDispWithArrows}
\cs_new_protected:Nn \__wa_scan_arrows:
                  { \group_begin:
                    \int_compare:nNnT \l__wa_pos_arrow_int = 7
                      { \__wa_scan_arrows_i:
                        \int_set:Nn \l__wa_pos_arrow_int 8 }
                    \__wa_scan_arrows_i:
                    \group_end:}
\cs_new_protected:Nn \__wa_scan_arrows_i:
  {
    \int_zero_new:N \l__wa_first_arrow_of_group_int
    \int_zero_new:N \l__wa_first_line_of_group_int
    \int_zero_new:N \l__wa_last_line_of_group_int
    \seq_clear_new:N \l__wa_first_arrows_of_group_seq
    \seq_clear_new:N \l__wa_last_arrows_of_group_seq
    \bool_set_true:N \l__wa_new_group_bool
    \int_set:Nn \l__wa_arrow_int 1
    \int_until_do:nNnn \l__wa_arrow_int > \g__wa_arrow_int
     {
       \prop_get:cnN {g__wa_arrow_\l__wa_prefix_str _\int_use:N\l__wa_arrow_int _prop}
                     {initial} \l_tmpa_tl
       \int_set:Nn \l__wa_initial_int \l_tmpa_tl
       \prop_get:cnN {g__wa_arrow_\l__wa_prefix_str _\int_use:N\l__wa_arrow_int _prop}
                     {final} \l_tmpa_tl
       \int_set:Nn \l__wa_final_int \l_tmpa_tl
       \prop_get:cnN {g__wa_arrow_\l__wa_prefix_str _\int_use:N\l__wa_arrow_int _prop}
                     {position} \l_tmpa_tl
       \int_set:Nn \l__wa_pos_of_arrow_int \l_tmpa_tl
       \int_compare:nNnTF \l__wa_final_int > \g__wa_line_int
          {\__wa_error:n {Too~few~lines~for~an~arrow}}
          {\bool_if:nT {\int_compare_p:nNn \l__wa_arrow_int > 1
                         &&
                        \int_compare_p:nNn
                              \l__wa_initial_int > \l__wa_last_line_of_group_int
                         &&
                        \int_compare_p:n {\l__wa_pos_arrow_int != 7}}
                 {\__wa_draw_arrows:nn \l__wa_first_arrow_of_group_int {\l__wa_arrow_int - 1}
                  \bool_set_true:N \l__wa_new_group_bool}
           \bool_if:nTF \l__wa_new_group_bool
                 {\bool_set_false:N \l__wa_new_group_bool
                  \int_set_eq:NN \l__wa_first_arrow_of_group_int \l__wa_arrow_int
                  \int_set_eq:NN \l__wa_first_line_of_group_int \l__wa_initial_int
                  \int_set_eq:NN \l__wa_last_line_of_group_int \l__wa_final_int
                  \seq_clear:N \l__wa_first_arrows_of_group_seq
                  \seq_put_left:NV \l__wa_first_arrows_of_group_seq \l__wa_arrow_int
                  \seq_clear:N \l__wa_last_arrows_of_group_seq
                  \seq_put_left:NV \l__wa_last_arrows_of_group_seq \l__wa_arrow_int
                  \int_compare:nT {\l__wa_pos_arrow_int != 8}
                      {\dim_set:Nn \l__wa_x_dim {-\c_max_dim}}
                  }
                 {\int_compare:nNnT \l__wa_pos_of_arrow_int = {-1}
                     {\int_compare:nNnT \l__wa_initial_int = \l__wa_first_line_of_group_int
                           {\seq_put_left:NV \l__wa_first_arrows_of_group_seq \l__wa_arrow_int}
                      \int_compare:nNnTF \l__wa_final_int > \l__wa_last_line_of_group_int
                        {\int_set_eq:NN \l__wa_last_line_of_group_int \l__wa_final_int
                         \seq_clear:N \l__wa_last_arrows_of_group_seq
                         \seq_put_left:NV \l__wa_last_arrows_of_group_seq \l__wa_arrow_int}
                        {\int_compare:nNnT \l__wa_final_int = \l__wa_last_line_of_group_int
                           {\seq_put_left:NV \l__wa_last_arrows_of_group_seq \l__wa_arrow_int}}}}
           \int_compare:nNnT \l__wa_pos_of_arrow_int = {-1}
              { \int_compare:nT {\l__wa_pos_arrow_int != 8}
                   {\__wa_update_x_value:nn \l__wa_initial_int \l__wa_final_int}} }
       \int_incr:N \l__wa_arrow_int
     }
     \int_compare:nT {\l__wa_pos_arrow_int != 7}
        {\__wa_draw_arrows:nn \l__wa_first_arrow_of_group_int \g__wa_arrow_int}
  }
\cs_generate_variant:Nn \keys_set:nn {no}
\cs_new_protected:Nn \__wa_keys_set: {\keys_set:no {WithArrows/General}}
\cs_new_protected:Nn \__wa_draw_arrows:nn
  {\group_begin:
   \int_zero_new:N \l__wa_first_arrow_int
   \int_set:Nn \l__wa_first_arrow_int {#1}
   \int_zero_new:N \l__wa_last_arrow_int
   \int_set:Nn \l__wa_last_arrow_int {#2}
   \int_set:Nn \l__wa_arrow_int \l__wa_first_arrow_int
   \int_until_do:nNnn \l__wa_arrow_int > \l__wa_last_arrow_int
     {
      \prop_get:cnN {g__wa_arrow_\l__wa_prefix_str _\int_use:N\l__wa_arrow_int _prop}
                    {initial} \l_tmpa_tl
      \int_set:Nn \l__wa_initial_int {\l_tmpa_tl}
      \prop_get:cnN {g__wa_arrow_\l__wa_prefix_str _\int_use:N\l__wa_arrow_int _prop}
                    {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 + 1}
         \__wa_draw_arrows_i:
      \int_incr:N \l__wa_arrow_int
     }
   \group_end:
   }
\cs_new_protected:Nn \__wa_draw_arrows_i:
     {\group_begin:
      \int_set:Nn \l__wa_level_int 3
      \prop_get:cnN {g__wa_arrow_\l__wa_prefix_str
                        _\int_use:N\l__wa_arrow_int _prop} {options} \l_tmpa_tl
      \exp_args:NNo \exp_args:No
          \__wa_keys_set: {\l_tmpa_tl,tikz={xshift = \l__wa_xoffset_dim}}
      \prop_get:cnN {g__wa_arrow_\l__wa_prefix_str _\int_use:N\l__wa_arrow_int _prop}
        {position} \l_tmpa_tl
      \int_set:Nn \l_tmpa_int \l_tmpa_tl
      \int_compare:nNnF \l_tmpa_int = {-1}
         {\int_set_eq:NN \l__wa_pos_arrow_int \l_tmpa_int}
      \bool_set_false:N \l__wa_initial_r_bool
      \bool_set_false:N \l__wa_final_r_bool
      \int_case:nn \l__wa_pos_arrow_int
             {0 {\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_initial_r_bool
                 \bool_set_true:N \l__wa_final_r_bool}}
      \int_compare:nNnT \l__wa_pos_arrow_int = 5
           { \dim_set:Nn \l__wa_x_dim {-\c_max_dim}
             \__wa_update_x_value:nn \l__wa_initial_int \l__wa_final_int }
      \tl_set:Nx \l__wa_initial_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
              {\int_use:N\l__wa_final_int-\bool_if:NTF\l__wa_final_r_bool rl .north}
      \prop_get:cnN {g__wa_arrow_\l__wa_prefix_str _\int_use:N\l__wa_arrow_int _prop}
                    {label}
                    \l_tmpa_tl
      \seq_if_in:NxTF \l__wa_first_arrows_of_group_seq {\int_use:N \l__wa_arrow_int}
           {\bool_set_true:N \l_tmpa_bool}
           {\bool_set_false:N \l_tmpa_bool}
      \seq_if_in:NxTF \l__wa_last_arrows_of_group_seq {\int_use:N \l__wa_arrow_int}
           {\bool_set_true:N \l_tmpb_bool}
           {\bool_set_false:N \l_tmpb_bool}
      \int_compare:nNnT \l__wa_pos_arrow_int = 5
           {\bool_set_true:N \l_tmpa_bool
            \bool_set_true:N \l_tmpb_bool}
      \begin{tikzpicture} [__wa_standard]
          \tikz@scan@one@point\pgfutil@firstofone (\l__wa_initial_tl)
          \tl_gset:Nx \g_tmpa_tl
               {\int_compare:nNnTF \l__wa_pos_arrow_int < 5
                   { \dim_use:N \pgf@x }
                   { \dim_use:N \l__wa_x_dim } ,
                \bool_if:NTF \l_tmpa_bool
                      { \dim_eval:n {\pgf@y + \l__wa_start_adjust_dim }}
                      { \dim_use:N \pgf@y } }
          \tikz@scan@one@point\pgfutil@firstofone (\l__wa_final_tl)
          \tl_gset:Nx \g_tmpb_tl
               {\int_compare:nNnTF \l__wa_pos_arrow_int < 5
                   { \dim_use:N \pgf@x }
                   { \dim_use:N \l__wa_x_dim } ,
                \bool_if:NTF \l_tmpb_bool
                      { \dim_eval:n {\pgf@y - \l__wa_end_adjust_dim }}
                      { \dim_use:N \pgf@y }}
      \end{tikzpicture}
      \__wa_draw_arrow:nno \g_tmpa_tl \g_tmpb_tl \l_tmpa_tl
      \group_end: }
\cs_new_protected:Nn \__wa_def_function_tmpa:n
    {\cs_set:Nn \__wa_tmpa:nnn
          {\begin{tikzpicture}[__wa_standard,every~path/.style = {WithArrows/arrow}]
              #1
           \end{tikzpicture}}}
\cs_new_protected:Nn \__wa_draw_arrow:nnn
           {
            \bool_if:nT {\l__wa_wrap_lines_bool && \l__wa_in_DispWithArrows_bool}
               { \tl_set_eq:NN \l__wa_tikz_code_tl \c__wa_tikz_code_wrap_lines_tl }
            \exp_args:No \__wa_def_function_tmpa:n \l__wa_tikz_code_tl
            \__wa_tmpa:nnn {#1} {#2} {#3} }
\cs_generate_variant:Nn \__wa_draw_arrow:nnn {nno}
\tl_set:Nn \c__wa_tikz_code_wrap_lines_tl
                 {
                   \draw (#1) to node (__wa_label) {} (#2) ;
                   \tikz@parse@node \pgfutil@firstofone (__wa_label.west)
                   \dim_set:Nn \l_tmpa_dim {\g__wa_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
                       \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 (__wa_label.west)
                        node [anchor = west, text~width = \dim_use:N \l_tmpa_dim]
                        {#3} ; } }
\cs_new_protected:Nn \__wa_update_x_value:nn
    {\int_step_inline:nnn {#1} {#2}
        {\begin{tikzpicture} [__wa_standard]
         \tikz@scan@one@point\pgfutil@firstofone (##1-l)
         \dim_gset:Nn \g_tmpa_dim {\dim_max:nn \l__wa_x_dim \pgf@x }
         \end{tikzpicture}
         \dim_set_eq:NN \l__wa_x_dim \g_tmpa_dim } }
\cs_new:Npn \WithArrowsLastEnv {\int_use:N \g__wa_last_env_int}
\keys_define:nn {WithArrows/CodeAfter}
     {tikz     .code:n            = \tikzset {WithArrows/arrow/.append~style = {#1}} ,
      tikz     .value_required:n  = true,
      rr       .value_forbidden:n = true,
      rr       .code:n            = \__wa_analyze_option_position:n 0 ,
      ll       .value_forbidden:n = true,
      ll       .code:n            = \__wa_analyze_option_position:n 1 ,
      rl       .value_forbidden:n = true,
      rl       .code:n            = \__wa_analyze_option_position:n 2 ,
      lr       .value_forbidden:n = true,
      lr       .code:n            = \__wa_analyze_option_position:n 3 ,
      v        .value_forbidden:n = true,
      v        .code:n            = \__wa_analyze_option_position:n 4 ,
      TikzCode .tl_set:N          = \l__wa_tikz_code_tl,
      TikzCode .value_required:n  = true,
      xoffset  .dim_set:N         = \l__wa_xoffset_dim,
      xoffset  .value_required:n  = true}
\NewDocumentCommand \__wa_Arrow_code_after {O{} mmm !O{}}
     {\int_set:Nn \l__wa_pos_arrow_int 1
      \int_set:Nn \l__wa_previous_pos_arrow_int {-1}
      \group_begin:
           \int_set:Nn \l__wa_level_int 3
           \keys_set:nn {WithArrows/CodeAfter}
                        {#1,#5,tikz={xshift = \l__wa_xoffset_dim}}
           \bool_set_false:N \l__wa_initial_r_bool
           \bool_set_false:N \l__wa_final_r_bool
           \int_case:nn \l__wa_pos_arrow_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}}
           \cs_if_free:cTF {pgf@sh@ns@wa-\l__wa_prefix_str-#2-l}
             {\__wa_error:nx {Wrong~line~in~Arrow} {#2}}
             {\cs_if_free:cTF {pgf@sh@ns@wa-\l__wa_prefix_str-#3-l}
                {\__wa_error:nx {Wrong~line~in~Arrow} {#3}}
                {\int_compare:nNnTF \l__wa_pos_arrow_int = 4
                    {\begin{tikzpicture} [__wa_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} [__wa_standard]
                        \tikz@scan@one@point\pgfutil@firstofone
                                    (#2-\bool_if:NTF\l__wa_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__wa_final_r_bool rl .north)
                        \tl_gset:Nx \g_tmpb_tl {\dim_use:N \pgf@x , \dim_use:N \pgf@y}
                     \end{tikzpicture}}
                 \__wa_draw_arrow:nnn \g_tmpa_tl \g_tmpb_tl {#4} }}
      \group_end:
      }
\cs_new_protected:Nn \__wa_MultiArrow:nn
    {
     \foreach \x in {#1} {\cs_if_free:cTF {pgf@sh@ns@wa-\l__wa_prefix_str-\x-l}
                            {\__wa_error:nx {Wrong~line~specification~in~MultiArrow} \x }
                            {\clist_gput_right:Nx \g_tmpa_clist \x}}
     \int_compare:nNnTF {\clist_count:N \g_tmpa_clist} < 2
       {\__wa_error:n {Too~small~specification~for~MultiArrow}}
       {\clist_sort:Nn \g_tmpa_clist
                       {\int_compare:nNnTF {##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:Nx \__wa_MultiArrow_i:n {\g_tmpa_clist}
        \begin{tikzpicture}[__wa_standard,every~path/.style={WithArrows/arrow}]
          \draw [<->] ([xshift = \l__wa_xoffset_dim]\l_tmpa_tl-r.south)
                       -- ++(5mm,0)
                       -- node (__wa_label) {}
                          ([xshift = \l__wa_xoffset_dim+5mm]\l_tmpb_tl-r.south)
                       -- ([xshift = \l__wa_xoffset_dim]\l_tmpb_tl-r.south)  ;
          \tikz@parse@node \pgfutil@firstofone (__wa_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__wa_wrap_lines_bool && \l__wa_in_DispWithArrows_bool}
                  {\dim_set:Nn \l_tmpb_dim {\g__wa_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 (__wa_label.west)
           node [anchor = west, text~width = \dim_use:N \l_tmpa_dim] {#2} ;
        \end{tikzpicture} } }

\cs_new_protected:Nn \__wa_MultiArrow_i:n
     {\begin{tikzpicture}[__wa_standard,every~path/.style={WithArrows/arrow}]
        \foreach \k in {#1}
           {\draw[<-] ([xshift = \l__wa_xoffset_dim]\k-r.south) -- ++(5mm,0) ;} ;
      \end{tikzpicture}}
\msg_new:nnn {witharrows}
             {AllowLineWithoutAmpersand}
             {The~option~"AllowLineWithoutAmpersand"~is~deprecated~because~lines~
              without~ampersands~are~now~always~allowed.~The~option~
              "AllowLineWithoutAmpersand"~will~probably~be~deleted~in~a~future~version.~
              However,~you~can~go~on~for~this~time.}
\msg_new:nnn {witharrows}
             {Unknown~option}
             {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}
             {Third~column~in~WithArrows}
             {By~default,~an~environment~\{\l__wa_type_env_tl\}~can~only~have~
              two~columns.~Maybe~you~have~forgotten~a~
              \c_backslash_str\c_backslash_str.~If~you~really~want~more~than~
              two~columns,~you~should~use~the~option~"MoreColumns"~at~a~global~
              level~or~for~ an~environment.~However,~you~can~go~one~for~
              this~time.}
\msg_new:nnn {witharrows}
             {Third~column~in~DispWithArrows}
             {An~environment~\{\l__wa_type_env_tl\}~can~only~have~two~columns.~
              Maybe~you~have~forgotten~a~\c_backslash_str\c_backslash_str\ at~the~end~
              of~row~\int_use:N\g__wa_line_int.~If~you~go~on,~you~may~have~other~errors.}
\msg_new:nnn {witharrows}
             {Negative~value~for~jump}
             {You~can't~use~a~strictly~negative~value~for~the~option~"jump"~of~command~
              \l__wa_string_Arrow_for_messages_str.~
              You~can~create~an~arrow~going~backwards~with~ the~option~"<-"~of~Tikz.}
\msg_new:nnn {witharrows}
             {Too~few~lines~for~an~arrow}
             {An~arrow~specified~in~line~\int_use:N \l__wa_initial_int\ can't~be~drawn~
              because~it~arrives~after~the~last~line~of~the~environment~(remind~that~
              the~command~\l__wa_string_Arrow_for_messages_str.~
              must~be~in~the~*start*~line~of~the~arrow).~
              If~you~go~on,~this~arrow~will~be~ignored.}
\msg_new:nnn {witharrows}
             {WithArrows~outside~math~mode}
             {The~environment~\{\l__wa_type_env_tl\}~should~be~used~only~in~math~mode.~
              Nevertheless,~you~can~go~on.}
\msg_new:nnn {witharrows}
             {DispWithArrows~in~math~mode}
             {The~environment~\{\l__wa_type_env_tl\}~should~be~used~only~
              outside~math~mode.~If~you~go~on,~you~will~have~other~errors.}
\msg_new:nnn {witharrows}
             {Incompatible~options}
             {You~try~to~use~the~option~"\tl_use:N\l_keys_key_tl"~but~
             this~option~is~incompatible~or~redundant~with~the~option~"
             \int_case:nn\l__wa_previous_pos_arrow_int
                 {0 {lr}
                  1 {ll}
                  2 {rl}
                  3 {rr}
                  4 {v}
                  5 {i}
                  6 {groups}
                  7 {group}}"~
             set~in~the~same~
             \int_case:nn\l__wa_level_int
                  {1 {command~\token_to_str:N\WithArrowsOptions}
                   2 {declaration~of~options~of~the~environment~
                      \{\l__wa_type_env_tl\}}
                   3 {command~\l__wa_string_Arrow_for_messages_str}}.~
             If~you~go~on,~I~will~use~the~option~"\tl_use:N\l_keys_key_tl".}
\msg_new:nnn {witharrows}
             {Option~will~be~ignored}
             {The~option~"\tl_use:N\l_keys_key_tl"~can't~be~used~here.~
              If~you~go~on,~it~will~be~ignored.}
\msg_new:nnn {witharrows}
             {Arrow~in~first~column}
             {You~should~not~use~the~command~\l__wa_string_Arrow_for_messages_str\
              in~the~first~column~but~only~in~the~second~column.\\
              However~you~can~go~on~for~this~time.}
\msg_new:nnn {witharrows}
             {Wrong~line~in~Arrow}
             {The~specification~of~line~"#1"~you~use~in~\token_to_str:N\Arrow\
              ~doesn't~exist.\\
              If~you~go~on,~the~arrow~will~be~ignored.}
\msg_new:nnn {witharrows}
             {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.}
\msg_new:nnn {witharrows}
             {Too~small~specification~for~MultiArrow}
             {The~specification~of~lines~you~gave~to~\token_to_str:N \MultiArrow\
              is~too~small:~we~need~at~least~two~lines.~If~you~go~on,~the~
              command~\token_to_str:N\MultiArrow\ ~will~be~ignored.}
\msg_new:nnn {witharrows}
             {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.}
\msg_new:nnn {witharrows}
             {Command~not~allowed~in~DispWithArrows}
             {The~command~\token_to_str:N #1
              is~not~allowed~in~the~first~column~of~\{\l__wa_type_env_tl\}~but~
              only~in~the~second~column.~If~you~go~on,~this~command~will~be~ignored.}
\msg_new:nnn {witharrows}
             {Command~not~allowed~in~WithArrows}
             {The~command~\token_to_str:N #1 is~not~allowed~in~\{\l__wa_type_env_tl\}~
              (it's~allowed~in~the~second~column~of~\{DispWithArrows\}).~If~you~go~on,
              ~this~command~will~be~ignored.}
\msg_new:nnn {witharrows}
             {Multiple~tags}
             {You~can't~use~twice~the~command~\token_to_str:N\tag\
              in~a~line~of~the~environment~\{\l__wa_type_env_tl\}.~If~you~go~on,~the~tag~
              '#1'~will~be~used.}
\msg_new:nnn {witharrows}
             {Multiple~labels}
             {Normally,~we~can't~use~the~command~\token_to_str:N\label\
              twice~in~a~line~of~the~environment~\{\l__wa_type_env_tl\}.~
              However,~you~can~go~on.~
              \bool_if:NT \c__wa_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~
              "AllowMultipleLabels"~at~the~global~or~environment~level.}
\msg_new:nnn {witharrows}
             {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__wa_type_env_tl\}.~
              If~you~go~on,~you~may~have~undefined~references.}
\msg_new:nnn {witharrows}
             {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.~If~you~go~on,~you~may~have~an~incorrect~output.}
\msg_new:nnn {witharrows}
             {Option~incompatible~with~group}
             {You~try~to~use~the~option~"\tl_use:N\l_keys_key_tl"~while~
              you~are~using~the~option~"
              \int_compare:nNnTF \l__wa_pos_arrow_int = 5
                   {group}
                   {groups}".~
              It's~incompatible.~You~can~go~on~ignoring~this~option~
              "\tl_use:N\l_keys_key_tl"~but~you~should~correct~your~code.}
\coffin_new:N \l__wa_halign_coffin
\NewDocumentEnvironment {CasesWithArrows} {m !O{}}
         {\hbox_set:Nn \l_tmpa_box {$\left\{\vcenter to 1cm {} \right.$}
          \dim_zero_new:N \l__wa_delim_wd_dim
          \dim_set:Nn \l__wa_delim_wd_dim {\box_wd:N \l_tmpa_box}
          \box_clear_new:N \l__wa_left_part_box
          \hbox_set:Nn \l__wa_left_part_box
                       {$\bool_if:NT \l__wa_displaystyle_bool \displaystyle #1 {}$}
          \bool_if:nT \c__wa_mathtools_loaded_bool
                 {\MH_if_boolean:nT {show_only_refs}
                    {\MT_showonlyrefs_false:
                      \MH_set_boolean_T:n {show_only_refs}
                      \clist_set:Nn \l__wa_tags_clist {all}}}
           \bool_if:NT \c__wa_amsmath_loaded_bool \intertext@
           \if_mode_math:
               \__wa_error:n {DispWithArrows~in~math~mode}
           \fi:
           \bool_set_true:N \l__wa_in_DispWithArrows_bool
           %
           \__wa_pre_environment:n {#2}
           \nointerlineskip
           \hbox_to_wd:nn {0.6\linewidth} {}
           $$
           \spread@equation
           \vcoffin_set:Nnw \l__wa_halign_coffin \displaywidth
              \bool_if:NTF \l__wa_fleqn_bool
                     {\tabskip = \c_zero_skip}
                     {\tabskip = 0 pt plus 1000 pt minus 1000 pt}
              \bool_if:NTF \c__wa_amsmath_loaded_bool
                 {\cs_set_eq:NN \__wa_old_label \ltx@label}
                 {\cs_set_eq:NN \__wa_old_label \label}
              \halign to \displaywidth \bgroup
                \int_gincr:N \g__wa_line_int
                \cs_set_eq:cN \l__wa_CommandName_str \__wa_Arrow_first_column:
                \bool_set_true:N \l__wa_in_first_column_bool
                \bool_if:NT \l__wa_fleqn_bool
                      {\skip_horizontal:n \l__wa_mathindent_dim}
                \hfil
                \skip_horizontal:n {\box_wd:N \l__wa_left_part_box + \l__wa_delim_wd_dim}
                $\bool_if:NT \l__wa_displaystyle_bool \displaystyle {##}$
                \tabskip = \c_zero_skip
               &
                \clist_if_in:NVT \l__wa_tags_clist \g__wa_line_int
                    {\clist_set:Nn \l__wa_tags_clist {all}}
                \cs_set:Npn \notag {\clist_clear:N \l__wa_tags_clist}
                $\bool_if:NT \l__wa_displaystyle_bool \displaystyle {{}##}$
                \tabskip = 0 pt plus 1000 pt minus 1000 pt
                \tikz [remember~picture,overlay]
                     \node [__wa_node_style,
                            name = wa-\l__wa_prefix_str-\int_use:N\g__wa_line_int-l,
                            alias = {\tl_if_empty:NF \l__wa_name_tl
                                      {\l__wa_name_tl-\int_use:N\g__wa_line_int-l}} ] {} ;
                \hfil
                \tikz [remember~picture,overlay]
                     \node [__wa_node_style,
                            name = wa-\l__wa_prefix_str-\int_use:N\g__wa_line_int-r,
                            alias = {\tl_if_empty:NF \l__wa_name_tl
                                      {\l__wa_name_tl-\int_use:N\g__wa_line_int-r}} ] {} ;
                \bool_if:NT \l__wa_shownodenames_bool
                     {\hbox_overlap_right:n {\small wa-\l__wa_prefix_str
                                                      -\int_use:N\g__wa_line_int}}
               & ##
                \tabskip = \c_zero_skip
               && \__wa_error:n {Third~column~in~DispWithArrows}
                  \if_false: ## \fi:
                \cr}
          {\clist_if_in:NnT \l__wa_tags_clist {last}
                   {\clist_set:Nn \l__wa_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__wa_alignment_dim
              \dim_gset:Nn \g__wa_alignment_dim {\box_wd:N \l_tmpa_box}
              \box_clear_new:N \l__wa_new_box
              \hbox_set:Nn \l__wa_new_box {\hbox_unpack_clear:N \l_tmpa_box}
              \dim_compare:nNnT {\box_wd:N \l__wa_new_box} < \g__wa_alignment_dim
                   {\dim_gset:Nn \g__wa_alignment_dim {\box_wd:N \l__wa_new_box}}
           \vcoffin_set_end:
           \hbox_to_wd:nn \displaywidth
             {
              \bool_if:NTF \l__wa_fleqn_bool
                    {\skip_horizontal:n \l__wa_mathindent_dim}
                    {\hfil}
              \hbox_to_wd:nn \g__wa_alignment_dim
                   { \box_use_drop:N \l__wa_left_part_box
                     \dim_set:Nn \l_tmpa_dim {   \box_ht:N \l__wa_halign_coffin
                                               + \box_dp:N \l__wa_halign_coffin}
                     $\left\{ \vcenter to \l_tmpa_dim {\vfil} \right.$}
              \hfil}
           \coffin_typeset:Nnnnn
                        \l__wa_halign_coffin {l} {vc} {-\displaywidth} \c_zero_dim
           $$
           \__wa_post_environment:
           \bool_if:nT \c__wa_mathtools_loaded_bool
                    {\MH_if_boolean:nT {show_only_refs}
                          \MT_showonlyrefs_true:}
           \bool_if:NT \g__wa_footnote_bool \endsavenotes
           \ignorespacesafterend
           }
\NewDocumentCommand \WithArrowsNewStyle {mm}
   { \keys_if_exist:nnTF {WithArrows/General} {#1}
       {\__wa_error:nn {Key~already~defined} {#1}}
       {\keys_define:nn {WithArrows/General}
            {#1 .code:n = {\int_compare:nNnTF \l__wa_level_int < 3
                            {\bool_set_eq:NN \l_tmpa_bool \l__wa_in_WithArrows_bool
                             \bool_set_eq:NN \l_tmpb_bool \l__wa_in_DispWithArrows_bool
                             \bool_set_false:N \l__wa_in_WithArrows_bool
                             \bool_set_false:N \l__wa_in_DispWithArrows_bool
                             \keys_set_known:nnN {WithArrows/General} {#2} \l_tmpa_tl
                             \keys_set_known:nVN {WithArrows/GlobalOrEnv}
                                                 \l_tmpa_tl \l_tmpb_tl
                             \bool_set_eq:NN \l__wa_in_WithArrows_bool \l_tmpa_bool
                             \bool_set_eq:NN \l__wa_in_DispWithArrows_bool \l_tmpb_bool}
                            {\__wa_error:n {Unknown~option}}}}
        \group_begin:
           \msg_set:nnn {witharrows}
                        {Option~will~be~ignored}
                        {The~option~"\tl_use:N\l_keys_key_tl"~is~unknown~or~can't~be~
                         used~in~\token_to_str:N\WithArrowsNewStyle.~If~you~go~on,~
                         this~option~will~be~ignored~in~the~definition~of~style~'#1'.}
           \msg_set:nnn {witharrows}
                        {Unknown~option}
                        {The~option~"\tl_use:N\l_keys_key_tl"~is~unknown.~If~you~go~on,~
                         this~option~will~be~ignored~in~the~definition~of~style~'#1'.}
           \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.}
\tl_set:Nn \c__wa_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_set:Nn \c__wa_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/General}
     {up .value_forbidden:n = true,
      up .code:n = {\int_compare:nNnTF \l__wa_level_int = 3
                     {\bool_if:NTF \c__wa_varwidth_loaded_bool
                        {\cs_if_exist:cTF {tikz@library@calc@loaded}
                           {\int_set:Nn \l__wa_pos_arrow_int 1
                            \bool_set_false:N \l__wa_wrap_lines_bool
                            \tl_set_eq:NN \l__wa_tikz_code_tl \c__wa_tikz_code_up_tl}
                           {\__wa_error:n {calc~not~loaded}}}
                        {\__wa_error:n {varwidth~not~loaded}}}
                     {\__wa_error:n {Unknown~option}}},
      down .value_forbidden:n = true,
      down .code:n = {\int_compare:nNnTF \l__wa_level_int = 3
                       {\bool_if:NTF \c__wa_varwidth_loaded_bool
                          {\cs_if_exist:cTF {tikz@library@calc@loaded}
                             {\int_set:Nn \l__wa_pos_arrow_int 1
                              \bool_set_false:N \l__wa_wrap_lines_bool
                              \tl_set_eq:NN \l__wa_tikz_code_tl \c__wa_tikz_code_down_tl}
                             {\__wa_error:n {calc~not~loaded}}}
                          {\__wa_error:n {varwidth~not~loaded}}}
                       {\__wa_error:n {Unknown~option}}}}
\msg_new:nnn {witharrows}
             {varwidth~not~loaded}
             {You~can't~use~the~option~"\l_keys_key_tl"~because~
              you~don't~have~loaded~the~package~
              varwidth.~If~you~go~on,~this~option~will~be~forgotten.}
\msg_new:nnn {witharrows}
             {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~your~preamble.~
              ~If~you~go~on,~this~option~will~be~forgotten.}
\endinput
%%
%% End of file `witharrows.sty'.
