diff options
author | Karl Berry <karl@freefriends.org> | 2019-06-11 21:01:50 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2019-06-11 21:01:50 +0000 |
commit | 1916574aa9536f615e431e1b246674d9e4cb1bf2 (patch) | |
tree | f27590f80ffd7b90b25a94c0a997716b8114316f /Master/texmf-dist/tex/latex/ducksay/ducksay.code.v2.tex | |
parent | 67fdef123d0cd393e03d0e6a37e2a427e064d47e (diff) |
ducksay (11jun19)
git-svn-id: svn://tug.org/texlive/trunk@51364 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/ducksay/ducksay.code.v2.tex')
-rw-r--r-- | Master/texmf-dist/tex/latex/ducksay/ducksay.code.v2.tex | 102 |
1 files changed, 54 insertions, 48 deletions
diff --git a/Master/texmf-dist/tex/latex/ducksay/ducksay.code.v2.tex b/Master/texmf-dist/tex/latex/ducksay/ducksay.code.v2.tex index 413e221bbaa..130729d0ef9 100644 --- a/Master/texmf-dist/tex/latex/ducksay/ducksay.code.v2.tex +++ b/Master/texmf-dist/tex/latex/ducksay/ducksay.code.v2.tex @@ -32,6 +32,8 @@ %% ducksay.code.v2.tex and %% ducksay.animals.tex. %% +\ProvidesFile{ducksay.code.v2.tex} + [\ducksay@date\space v\ducksay@version\space ducksay code version 2] \RequirePackage{array,grabbox} \msg_new:nnn { ducksay } { justify~unavailable } { @@ -91,7 +93,9 @@ ,body-align / l .meta:n = { body-to-msg = l , msg-to-body = l } ,body-align / c .meta:n = { body-to-msg = hc , msg-to-body = hc } ,body-align / r .meta:n = { body-to-msg = r , msg-to-body = r } - ,body-align .initial:n = l + ,body-align .initial:n = l + ,body-bigger .int_set:N = \l_ducksay_body_bigger_int + ,body-bigger .initial:n = \c_zero ,msg-align .choice: ,msg-align / l .code:n = { \tl_set:Nn \l_ducksay_msg_align_tl { l } } ,msg-align / c .code:n = { \tl_set:Nn \l_ducksay_msg_align_tl { c } } @@ -200,7 +204,7 @@ } \cs_new:Npn \ducksay_calculate_msg_width_from_int: { - \hbox_set:Nn \l_ducksay_tmpa_box { \l_ducksay_msg_fount_tl M } + \hbox_set:Nn \l_ducksay_tmpa_box { { \l_ducksay_msg_fount_tl M } } \dim_set:Nn \l_ducksay_msg_width_dim { \l_ducksay_msg_width_int \box_wd:N \l_ducksay_tmpa_box } } @@ -217,6 +221,16 @@ { \end { tabular } } +\cs_new:Npn \ducksay_width_case_none_int_dim:nnn #1 #2 #3 + { + \dim_compare:nNnTF { \l_ducksay_msg_width_dim } < { \c_zero_dim } + { + \int_compare:nNnTF { \l_ducksay_msg_width_int } < { \c_zero_int } + { #1 } + { #2 } + } + { #3 } + } \cs_new:Npn \ducksay_digest_options:n #1 { \group_begin: @@ -225,56 +239,39 @@ { \keys_set:nn { ducksay } { default_animal } } \bool_if:NTF \l_ducksay_eat_arg_box_bool { - \dim_compare:nNnTF { \l_ducksay_msg_width_dim } < { \c_zero_dim } - { - \int_compare:nNnTF { \l_ducksay_msg_width_int } < { \c_zero_int } - { - \cs_set_eq:NN - \ducksay_eat_argument:w \ducksay_eat_argument_hbox:w - } - { - \cs_set_eq:NN - \ducksay_eat_argument:w \ducksay_eat_argument_vbox:w - \ducksay_calculate_msg_width_from_int: - } - } + \ducksay_width_case_none_int_dim:nnn + { \ducksay_eat_argument_hbox:w } { - \cs_set_eq:NN \ducksay_eat_argument:w \ducksay_eat_argument_vbox:w + \ducksay_calculate_msg_width_from_int: + \ducksay_eat_argument_vbox:w } + { \ducksay_eat_argument_vbox:w } } { - \dim_compare:nNnTF { \l_ducksay_msg_width_dim } < { \c_zero_dim } + \ducksay_width_case_none_int_dim:nnn { - \int_compare:nNnTF { \l_ducksay_msg_width_int } < { \c_zero_int } + \tl_if_empty:NT \l_ducksay_msg_tabular_column_tl { - \tl_if_empty:NT \l_ducksay_msg_tabular_column_tl + \str_case:Vn \l_ducksay_msg_align_tl { - \str_case:Vn \l_ducksay_msg_align_tl + { l } { \tl_set:Nn \l_ducksay_msg_tabular_column_tl { l } } + { c } { \tl_set:Nn \l_ducksay_msg_tabular_column_tl { c } } + { r } { \tl_set:Nn \l_ducksay_msg_tabular_column_tl { r } } + { j } { - { l } - { \tl_set:Nn \l_ducksay_msg_tabular_column_tl { l } } - { c } - { \tl_set:Nn \l_ducksay_msg_tabular_column_tl { c } } - { r } - { \tl_set:Nn \l_ducksay_msg_tabular_column_tl { r } } - { j } { - \msg_error:nn { ducksay } { justify~unavailable } - \tl_set:Nn \l_ducksay_msg_tabular_column_tl { l } - } + \msg_error:nn { ducksay } { justify~unavailable } + \tl_set:Nn \l_ducksay_msg_tabular_column_tl { l } } } } - { - \ducksay_calculate_msg_width_from_int: - \ducksay_evaluate_message_alignment_fixed_width_tabular: - } } { + \ducksay_calculate_msg_width_from_int: \ducksay_evaluate_message_alignment_fixed_width_tabular: } - \cs_set_eq:NN \ducksay_eat_argument:w \ducksay_eat_argument_tabular:w + { \ducksay_evaluate_message_alignment_fixed_width_tabular: } + \ducksay_eat_argument_tabular:w } - \ducksay_eat_argument:w } \cs_new:Npn \ducksay_set_bubble_top_kern: { @@ -294,6 +291,15 @@ \dim_set:Nn \l_ducksay_bubble_bottom_kern_dim { \dim_eval:n { \l_ducksay_bubble_bottom_kern_tl } } } +\cs_new:Npn \ducksay_make_body_bigger: + { + \int_step_function:nN \l_ducksay_body_bigger_int + \ducksay_make_body_bigger_aux:n + } +\cs_new:Npn \ducksay_make_body_bigger_aux:n #1 + { + \\ + } \cs_new_protected:Npn \ducksay_shipout: { \hcoffin_set:Nn \l_ducksay_msg_coffin { \box_use:N \l_ducksay_msg_box } @@ -417,6 +423,8 @@ \l_ducksay_body_fount_tl \begin{tabular} { @{} l @{} } \l_ducksay_animal_tl + \ducksay_make_body_bigger: + \relax \end{tabular} } \bool_if:NT \l_ducksay_mirrored_body_bool @@ -464,10 +472,10 @@ \ducksay_eat_argument_tabular_inner:w { \group_begin: - \tex_everyeof:D { \exp_not:N } + \__ducksay_everyeof:w { \exp_not:N } \exp_after:wN \group_end: - \tex_scantokens:D { #1 } + \__ducksay_scantokens:w { #1 } } } \NewDocumentCommand \ducksay_eat_argument_tabular_normal:w { +m } @@ -475,26 +483,24 @@ \cs_new_protected_nopar:Npn \ducksay_eat_argument_hbox:w { \bool_if:NTF \l_ducksay_msg_strip_spaces_bool - { \grabbox } - { \grabbox* } - \l_ducksay_msg_box [ \l_ducksay_msg_fount_tl ] \hbox \ducksay_shipout: + { \@grabbox } + { \@grabbox* } + {} \l_ducksay_msg_box \l_ducksay_msg_fount_tl \hbox {} \ducksay_shipout: } \cs_new_protected_nopar:Npn \ducksay_eat_argument_vbox:w { \ducksay_evaluate_message_alignment_fixed_width_vbox: \bool_if:NTF \l_ducksay_msg_strip_spaces_bool - { \grabbox } - { \grabbox* } - [ + { \@grabbox } + { \@grabbox* } + { \hsize \l_ducksay_msg_width_dim \linewidth \hsize - \l_ducksay_msg_fount_tl \l_ducksay_msg_align_vbox_tl \@afterindentfalse \@afterheading - ] - \l_ducksay_msg_box - \vbox \ducksay_shipout: + } + \l_ducksay_msg_box \l_ducksay_msg_fount_tl \vbox {} \ducksay_shipout: } \cs_generate_variant:Nn \coffin_join:NnnNnnnn { NVnNVnnn } \cs_generate_variant:Nn \coffin_attach:NnnNnnnn { NVnNVnnn } |