summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/ducksay/ducksay.code.v2.tex
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2019-06-11 21:01:50 +0000
committerKarl Berry <karl@freefriends.org>2019-06-11 21:01:50 +0000
commit1916574aa9536f615e431e1b246674d9e4cb1bf2 (patch)
treef27590f80ffd7b90b25a94c0a997716b8114316f /Master/texmf-dist/tex/latex/ducksay/ducksay.code.v2.tex
parent67fdef123d0cd393e03d0e6a37e2a427e064d47e (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.tex102
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 }