diff options
Diffstat (limited to 'Master/texmf-dist')
-rw-r--r-- | Master/texmf-dist/doc/latex/ducksay/README.md | 2 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/ducksay/ducksay.pdf | bin | 486578 -> 543677 bytes | |||
-rw-r--r-- | Master/texmf-dist/source/latex/ducksay/ducksay.dtx | 280 | ||||
-rw-r--r-- | Master/texmf-dist/tex/latex/ducksay/ducksay.animals.tex | 15 | ||||
-rw-r--r-- | Master/texmf-dist/tex/latex/ducksay/ducksay.code.v1.tex | 2 | ||||
-rw-r--r-- | Master/texmf-dist/tex/latex/ducksay/ducksay.code.v2.tex | 228 | ||||
-rw-r--r-- | Master/texmf-dist/tex/latex/ducksay/ducksay.sty | 6 |
7 files changed, 312 insertions, 221 deletions
diff --git a/Master/texmf-dist/doc/latex/ducksay/README.md b/Master/texmf-dist/doc/latex/ducksay/README.md index 1e74c85621b..763cea25fba 100644 --- a/Master/texmf-dist/doc/latex/ducksay/README.md +++ b/Master/texmf-dist/doc/latex/ducksay/README.md @@ -9,7 +9,7 @@ option) any later version. The latest version of this license is in the file: This work is "maintained" (as per LPPL maintenance status) by Jonathan P. Spratte. -Copyright (C) 2017-2020 by Jonathan P. Spratte +Copyright (C) 2017-2022 by Jonathan P. Spratte The package draws ASCII art of animals saying a specified message. The following macros are available: diff --git a/Master/texmf-dist/doc/latex/ducksay/ducksay.pdf b/Master/texmf-dist/doc/latex/ducksay/ducksay.pdf Binary files differindex dc846e0bf43..6f54d4a73be 100644 --- a/Master/texmf-dist/doc/latex/ducksay/ducksay.pdf +++ b/Master/texmf-dist/doc/latex/ducksay/ducksay.pdf diff --git a/Master/texmf-dist/source/latex/ducksay/ducksay.dtx b/Master/texmf-dist/source/latex/ducksay/ducksay.dtx index 0c2704d8da6..98700c2b74b 100644 --- a/Master/texmf-dist/source/latex/ducksay/ducksay.dtx +++ b/Master/texmf-dist/source/latex/ducksay/ducksay.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% File: ducksay.dtx Copyright (C) 2017-2020 Jonathan P. Spratte +% File: ducksay.dtx Copyright (C) 2017-2022 Jonathan P. Spratte % % This work may be distributed and/or modified under the conditions of the % LaTeX Project Public License (LPPL), either version 1.3c of this license or @@ -27,7 +27,7 @@ Released under the LaTeX Project Public License v1.3c or later See http://www.latex-project.org/lppl.txt -------------------------------------------------------------- -Copyright (C) 2017-2020 Jonathan P. Spratte +Copyright (C) 2017-2022 Jonathan P. Spratte This work may be distributed and/or modified under the conditions of the LaTeX Project Public License (LPPL), either version 1.3c of this license or @@ -202,8 +202,8 @@ and the derived files ducksay.pdf \NeedsTeXFormat{LaTeX2e} \RequirePackage{xparse,l3keys2e} -\def\ducksay@version{2.5a} -\def\ducksay@date{2020-10-29} +\def\ducksay@version{2.6} +\def\ducksay@date{2022-10-08} \ProvidesExplPackage {ducksay} {\ducksay@date} @@ -954,8 +954,11 @@ and the derived files ducksay.pdf % {% % \tiny % \hfill -% \ducksay[sheep,MSG=\footnotesize,msg-align=c] -% {I'm woolly,\\I'm fluffy,\\and I'm all new!} +% \ducksay[platypus,MSG=\footnotesize,msg-align=c] +% {Quack?}\\ +% \hspace*{1cm}% +% \ducksay[small-horse,MSG=\footnotesize,msg-align=c,body-mirrored] +% {Neigh, we're new!} % } % The following animals are provided by this package. I did not create them (but % altered some), they belong to their original creators. @@ -980,7 +983,9 @@ and the derived files ducksay.pdf % ,dragon^^A % ,sodomized^^A % ,hedgehog^^A +% ,platypus^^A % ,kangaroo^^A +% ,small-horse^^A % ,dog^^A % ,sheep^^A % ,rabbit^^A @@ -1638,6 +1643,8 @@ and the derived files ducksay.pdf } \msg_new:nnn { ducksay } { v1-key-only } { The~`\l_keys_key_tl`~key~is~only~available~for~`version=1`. } +\msg_new:nnn { ducksay } { zero-baselineskip } + { Current~ baselineskip~ is~ 0pt. } % \end{macrocode} %^^A=<< % @@ -2006,138 +2013,175 @@ and the derived files ducksay.pdf % \begin{macro}[internal]{\ducksay_make_body_bigger:}^^A>>= % \begin{macrocode} \cs_new:Npn \ducksay_make_body_bigger: - { - \int_step_function:nN \l_ducksay_body_bigger_int - \ducksay_make_body_bigger_aux:n - } + { \prg_replicate:nn \l_ducksay_body_bigger_int \\ } % \end{macrocode} % \end{macro}^^A=<< % -% \begin{macro}[internal]{\ducksay_make_body_bigger_aux:n}^^A>>= +% \begin{macro}[internal]{\ducksay_baselineskip:}^^A>>= +% This is an overly cautious way to get the current baselineskip. Inside of +% \env{tabular} the baselineskip is 0pt, so we fall back to +% \cs[no-index]{normalbaselineskip}, or issue an error and fall back to some +% arbitrary value not producing an error if that one is also 0pt. % \begin{macrocode} -\cs_new:Npn \ducksay_make_body_bigger_aux:n #1 +\cs_new_protected_nopar:Npn \ducksay_baselineskip: { - \\ + \the\dimexpr + \ifdim \baselineskip = \c_zero_dim + \ifdim \normalbaselineskip = \c_zero_dim + \msg_expandable_error:nn { ducksay } { zero-baselineskip } { 12pt } + 12pt + \else + \normalbaselineskip + \fi + \else + \baselineskip + \fi + \relax } % \end{macrocode} % \end{macro}^^A=<< % -% \begin{macro}[internal]{\ducksay_shipout:}^^A>>= +% \begin{macro}[internal]{\ducksay_measure_msg:}^^A>>= % \begin{macrocode} -\cs_new_protected:Npn \ducksay_shipout: +\cs_new_protected_nopar:Npn \ducksay_measure_msg: { - \hcoffin_set:Nn \l_ducksay_msg_coffin { \box_use:N \l_ducksay_msg_box } - \bool_if:NF \l_ducksay_no_bubble_bool + \hbox_set:Nn \l_ducksay_tmpa_box + { \l_ducksay_bubble_fount_tl \l_ducksay_bubble_delim_top_tl } + \int_set:Nn \l_ducksay_msg_width_int { - \hbox_set:Nn \l_ducksay_tmpa_box - { \l_ducksay_bubble_fount_tl \l_ducksay_bubble_delim_top_tl } - \int_set:Nn \l_ducksay_msg_width_int + \fp_eval:n + { + ceil + ( \box_wd:N \l_ducksay_msg_box / \box_wd:N \l_ducksay_tmpa_box ) + } + } + \group_begin: + \l_ducksay_bubble_fount_tl + \exp_args:NNNx + \group_end: + \int_set:Nn \l_ducksay_msg_height_int + { + \int_max:nn { \fp_eval:n { ceil ( - \box_wd:N \l_ducksay_msg_box / \box_wd:N \l_ducksay_tmpa_box + ( + \box_ht:N \l_ducksay_msg_box + + \box_dp:N \l_ducksay_msg_box + ) + / ( \arraystretch * \ducksay_baselineskip: ) ) } + + \l_ducksay_vpad_int } - \group_begin: + { \l_ducksay_msg_height_int } + } + } +% \end{macrocode} +% \end{macro}^^A=<< +% +% \begin{macro}[internal]{\ducksay_set_bubble_coffins:}^^A>>= +% \begin{macrocode} +\cs_new_protected_nopar:Npn \ducksay_set_bubble_coffins: + { + \hcoffin_set:Nn \l_ducksay_bubble_open_coffin + { \l_ducksay_bubble_fount_tl - \exp_args:NNNx - \group_end: - \int_set:Nn \l_ducksay_msg_height_int - { - \int_max:nn - { - \fp_eval:n - { - ceil - ( - ( - \box_ht:N \l_ducksay_msg_box - + \box_dp:N \l_ducksay_msg_box - ) - / ( \arraystretch * \baselineskip ) - ) - } - + \l_ducksay_vpad_int - } - { \l_ducksay_msg_height_int } - } - \hcoffin_set:Nn \l_ducksay_bubble_open_coffin - { - \l_ducksay_bubble_fount_tl - \begin{tabular}{@{}l@{}} - \int_compare:nNnTF { \l_ducksay_msg_height_int } = { \c_one_int } - { - \l_ducksay_bubble_delim_left_a_tl - } - { - \l_ducksay_bubble_delim_left_b_tl\\ - \int_step_inline:nnn - { 3 } { \l_ducksay_msg_height_int } - { - \kern-\l_ducksay_bubble_side_kern_tl - \l_ducksay_bubble_delim_left_c_tl - \\ - } - \l_ducksay_bubble_delim_left_d_tl - } - \end{tabular} - } - \hcoffin_set:Nn \l_ducksay_bubble_close_coffin - { - \l_ducksay_bubble_fount_tl - \begin{tabular}{@{}r@{}} - \int_compare:nNnTF { \l_ducksay_msg_height_int } = { \c_one_int } + \begin{tabular}{@{}l@{}} + \int_compare:nNnTF { \l_ducksay_msg_height_int } = { \c_one_int } + { + \l_ducksay_bubble_delim_left_a_tl + } + { + \l_ducksay_bubble_delim_left_b_tl\\ + \int_step_inline:nnn + { 3 } { \l_ducksay_msg_height_int } { - \l_ducksay_bubble_delim_right_a_tl + \kern-\l_ducksay_bubble_side_kern_tl + \l_ducksay_bubble_delim_left_c_tl + \\ } + \l_ducksay_bubble_delim_left_d_tl + } + \end{tabular} + } + \hcoffin_set:Nn \l_ducksay_bubble_close_coffin + { + \l_ducksay_bubble_fount_tl + \begin{tabular}{@{}r@{}} + \int_compare:nNnTF { \l_ducksay_msg_height_int } = { \c_one_int } + { + \l_ducksay_bubble_delim_right_a_tl + } + { + \l_ducksay_bubble_delim_right_b_tl \\ + \int_step_inline:nnn + { 3 } { \l_ducksay_msg_height_int } { - \l_ducksay_bubble_delim_right_b_tl \\ - \int_step_inline:nnn - { 3 } { \l_ducksay_msg_height_int } - { - \l_ducksay_bubble_delim_right_c_tl - \kern-\l_ducksay_bubble_side_kern_tl - \\ - } - \l_ducksay_bubble_delim_right_d_tl + \l_ducksay_bubble_delim_right_c_tl + \kern-\l_ducksay_bubble_side_kern_tl + \\ } - \end{tabular} - } - \hcoffin_set:Nn \l_ducksay_bubble_top_coffin - { - \l_ducksay_bubble_fount_tl - \int_step_inline:nn - { \l_ducksay_msg_width_int + \l_ducksay_hpad_int } - { \l_ducksay_bubble_delim_top_tl } - } - \dim_set:Nn \l_ducksay_hpad_dim - { - ( - \coffin_wd:N \l_ducksay_bubble_top_coffin - - \coffin_wd:N \l_ducksay_msg_coffin - ) / 2 - } - \coffin_join:NnnNnnnn - \l_ducksay_msg_coffin { l } { vc } - \l_ducksay_bubble_open_coffin { r } { vc } - { - \l_ducksay_hpad_dim } { \c_zero_dim } - \coffin_join:NnnNnnnn - \l_ducksay_msg_coffin { r } { vc } - \l_ducksay_bubble_close_coffin { l } { vc } - { \l_ducksay_hpad_dim } { \c_zero_dim } + \l_ducksay_bubble_delim_right_d_tl + } + \end{tabular} + } + \hcoffin_set:Nn \l_ducksay_bubble_top_coffin + { + \l_ducksay_bubble_fount_tl + \int_step_inline:nn + { \l_ducksay_msg_width_int + \l_ducksay_hpad_int } + { \l_ducksay_bubble_delim_top_tl } + } + } +% \end{macrocode} +% \end{macro}^^A=<< +% +% \begin{macro}[internal]{\ducksay_join_bubble_to_msg_coffin:}^^A>>= +% \begin{macrocode} +\cs_new_protected_nopar:Npn \ducksay_join_bubble_to_msg_coffin: + { + \dim_set:Nn \l_ducksay_hpad_dim + { + ( + \coffin_wd:N \l_ducksay_bubble_top_coffin + - \coffin_wd:N \l_ducksay_msg_coffin + ) / 2 + } + \coffin_join:NnnNnnnn + \l_ducksay_msg_coffin { l } { vc } + \l_ducksay_bubble_open_coffin { r } { vc } + { - \l_ducksay_hpad_dim } { \c_zero_dim } + \coffin_join:NnnNnnnn + \l_ducksay_msg_coffin { r } { vc } + \l_ducksay_bubble_close_coffin { l } { vc } + { \l_ducksay_hpad_dim } { \c_zero_dim } + \coffin_join:NnnNnnnn + \l_ducksay_msg_coffin { hc } { t } + \l_ducksay_bubble_top_coffin { hc } { b } + { \c_zero_dim } { \l_ducksay_bubble_top_kern_dim } + \coffin_join:NnnNnnnn + \l_ducksay_msg_coffin { hc } { b } + \l_ducksay_bubble_top_coffin { hc } { t } + { \c_zero_dim } { \l_ducksay_bubble_bottom_kern_dim } + } +% \end{macrocode} +% \end{macro}^^A=<< +% +% \begin{macro}[internal]{\ducksay_shipout:}^^A>>= +% \begin{macrocode} +\cs_new_protected:Npn \ducksay_shipout: + { + \hcoffin_set:Nn \l_ducksay_msg_coffin { \box_use:N \l_ducksay_msg_box } + \bool_if:NF \l_ducksay_no_bubble_bool + { + \ducksay_measure_msg: + \ducksay_set_bubble_coffins: \ducksay_set_bubble_top_kern: \ducksay_set_bubble_bottom_kern: - \coffin_join:NnnNnnnn - \l_ducksay_msg_coffin { hc } { t } - \l_ducksay_bubble_top_coffin { hc } { b } - { \c_zero_dim } { \l_ducksay_bubble_top_kern_dim } - \coffin_join:NnnNnnnn - \l_ducksay_msg_coffin { hc } { b } - \l_ducksay_bubble_top_coffin { hc } { t } - { \c_zero_dim } { \l_ducksay_bubble_bottom_kern_dim } + \ducksay_join_bubble_to_msg_coffin: } \bool_if:NF \l_ducksay_no_body_bool { @@ -2714,6 +2758,20 @@ and the derived files ducksay.pdf (, ,) ,) `-_,---_,-' || ||} +%^^A based on joe schmuck (http://www.ascii-art.de/ascii/pqr/platypus.txt) +\AddAnimal[tail-symbol=s]{platypus} +| s _.-^~~^^`~-,,,~~''```~-''``~'``~, + s ______,' -o :. _ . ; ,'`, `. + ( -\.._,.;;'._,( } _`_-_,, `, `, + ``~~~~~~' ((/'(((____/~~'(,(,___> `~'| +\AddAnimal[tail-symbol=s]{small-horse} +{ s _,_ + s /._ \\ + /_/ |_\\ _ __ + / \\ \\ + \ _ __ _ /|| + | | | | || + | | | |} %</animals> % \end{macrocode}^^A=<< %^^A%^^A https://www.asciiart.eu/mythology/fairies diff --git a/Master/texmf-dist/tex/latex/ducksay/ducksay.animals.tex b/Master/texmf-dist/tex/latex/ducksay/ducksay.animals.tex index bf24ac4ecba..b42307e7305 100644 --- a/Master/texmf-dist/tex/latex/ducksay/ducksay.animals.tex +++ b/Master/texmf-dist/tex/latex/ducksay/ducksay.animals.tex @@ -13,7 +13,7 @@ %% See http://www.latex-project.org/lppl.txt %% -------------------------------------------------------------- %% -%% Copyright (C) 2017-2020 Jonathan P. Spratte +%% Copyright (C) 2017-2022 Jonathan P. Spratte %% %% This work may be distributed and/or modified under the conditions of the %% LaTeX Project Public License (LPPL), either version 1.3c of this license or @@ -422,6 +422,19 @@ (, ,) ,) `-_,---_,-' || ||} +\AddAnimal[tail-symbol=s]{platypus} +| s _.-^~~^^`~-,,,~~''```~-''``~'``~, + s ______,' -o :. _ . ; ,'`, `. + ( -\.._,.;;'._,( } _`_-_,, `, `, + ``~~~~~~' ((/'(((____/~~'(,(,___> `~'| +\AddAnimal[tail-symbol=s]{small-horse} +{ s _,_ + s /._ \\ + /_/ |_\\ _ __ + / \\ \\ + \ _ __ _ /|| + | | | | || + | | | |} %% %% %% End of file `ducksay.animals.tex'. diff --git a/Master/texmf-dist/tex/latex/ducksay/ducksay.code.v1.tex b/Master/texmf-dist/tex/latex/ducksay/ducksay.code.v1.tex index c6e48025ce5..296b74f596b 100644 --- a/Master/texmf-dist/tex/latex/ducksay/ducksay.code.v1.tex +++ b/Master/texmf-dist/tex/latex/ducksay/ducksay.code.v1.tex @@ -13,7 +13,7 @@ %% See http://www.latex-project.org/lppl.txt %% -------------------------------------------------------------- %% -%% Copyright (C) 2017-2020 Jonathan P. Spratte +%% Copyright (C) 2017-2022 Jonathan P. Spratte %% %% This work may be distributed and/or modified under the conditions of the %% LaTeX Project Public License (LPPL), either version 1.3c of this license or 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 9bcb0c89d60..0eb1c703f4a 100644 --- a/Master/texmf-dist/tex/latex/ducksay/ducksay.code.v2.tex +++ b/Master/texmf-dist/tex/latex/ducksay/ducksay.code.v2.tex @@ -13,7 +13,7 @@ %% See http://www.latex-project.org/lppl.txt %% -------------------------------------------------------------- %% -%% Copyright (C) 2017-2020 Jonathan P. Spratte +%% Copyright (C) 2017-2022 Jonathan P. Spratte %% %% This work may be distributed and/or modified under the conditions of the %% LaTeX Project Public License (LPPL), either version 1.3c of this license or @@ -47,6 +47,8 @@ } \msg_new:nnn { ducksay } { v1-key-only } { The~`\l_keys_key_tl`~key~is~only~available~for~`version=1`. } +\msg_new:nnn { ducksay } { zero-baselineskip } + { Current~ baselineskip~ is~ 0pt. } \tl_new:N \l_ducksay_msg_align_vbox_tl \box_new:N \l_ducksay_msg_box \bool_new:N \l_ducksay_eat_arg_box_bool @@ -316,128 +318,146 @@ { \dim_eval:n { \l_ducksay_bubble_bottom_kern_tl } } } \cs_new:Npn \ducksay_make_body_bigger: + { \prg_replicate:nn \l_ducksay_body_bigger_int \\ } +\cs_new_protected_nopar:Npn \ducksay_baselineskip: { - \int_step_function:nN \l_ducksay_body_bigger_int - \ducksay_make_body_bigger_aux:n + \the\dimexpr + \ifdim \baselineskip = \c_zero_dim + \ifdim \normalbaselineskip = \c_zero_dim + \msg_expandable_error:nn { ducksay } { zero-baselineskip } { 12pt } + 12pt + \else + \normalbaselineskip + \fi + \else + \baselineskip + \fi + \relax } -\cs_new:Npn \ducksay_make_body_bigger_aux:n #1 +\cs_new_protected_nopar:Npn \ducksay_measure_msg: { - \\ - } -\cs_new_protected:Npn \ducksay_shipout: - { - \hcoffin_set:Nn \l_ducksay_msg_coffin { \box_use:N \l_ducksay_msg_box } - \bool_if:NF \l_ducksay_no_bubble_bool + \hbox_set:Nn \l_ducksay_tmpa_box + { \l_ducksay_bubble_fount_tl \l_ducksay_bubble_delim_top_tl } + \int_set:Nn \l_ducksay_msg_width_int + { + \fp_eval:n + { + ceil + ( \box_wd:N \l_ducksay_msg_box / \box_wd:N \l_ducksay_tmpa_box ) + } + } + \group_begin: + \l_ducksay_bubble_fount_tl + \exp_args:NNNx + \group_end: + \int_set:Nn \l_ducksay_msg_height_int { - \hbox_set:Nn \l_ducksay_tmpa_box - { \l_ducksay_bubble_fount_tl \l_ducksay_bubble_delim_top_tl } - \int_set:Nn \l_ducksay_msg_width_int + \int_max:nn { \fp_eval:n { ceil ( - \box_wd:N \l_ducksay_msg_box / \box_wd:N \l_ducksay_tmpa_box + ( + \box_ht:N \l_ducksay_msg_box + + \box_dp:N \l_ducksay_msg_box + ) + / ( \arraystretch * \ducksay_baselineskip: ) ) } + + \l_ducksay_vpad_int } - \group_begin: + { \l_ducksay_msg_height_int } + } + } +\cs_new_protected_nopar:Npn \ducksay_set_bubble_coffins: + { + \hcoffin_set:Nn \l_ducksay_bubble_open_coffin + { \l_ducksay_bubble_fount_tl - \exp_args:NNNx - \group_end: - \int_set:Nn \l_ducksay_msg_height_int - { - \int_max:nn - { - \fp_eval:n - { - ceil - ( - ( - \box_ht:N \l_ducksay_msg_box - + \box_dp:N \l_ducksay_msg_box - ) - / ( \arraystretch * \baselineskip ) - ) - } - + \l_ducksay_vpad_int - } - { \l_ducksay_msg_height_int } - } - \hcoffin_set:Nn \l_ducksay_bubble_open_coffin - { - \l_ducksay_bubble_fount_tl - \begin{tabular}{@{}l@{}} - \int_compare:nNnTF { \l_ducksay_msg_height_int } = { \c_one_int } - { - \l_ducksay_bubble_delim_left_a_tl - } - { - \l_ducksay_bubble_delim_left_b_tl\\ - \int_step_inline:nnn - { 3 } { \l_ducksay_msg_height_int } - { - \kern-\l_ducksay_bubble_side_kern_tl - \l_ducksay_bubble_delim_left_c_tl - \\ - } - \l_ducksay_bubble_delim_left_d_tl - } - \end{tabular} - } - \hcoffin_set:Nn \l_ducksay_bubble_close_coffin - { - \l_ducksay_bubble_fount_tl - \begin{tabular}{@{}r@{}} - \int_compare:nNnTF { \l_ducksay_msg_height_int } = { \c_one_int } + \begin{tabular}{@{}l@{}} + \int_compare:nNnTF { \l_ducksay_msg_height_int } = { \c_one_int } + { + \l_ducksay_bubble_delim_left_a_tl + } + { + \l_ducksay_bubble_delim_left_b_tl\\ + \int_step_inline:nnn + { 3 } { \l_ducksay_msg_height_int } { - \l_ducksay_bubble_delim_right_a_tl + \kern-\l_ducksay_bubble_side_kern_tl + \l_ducksay_bubble_delim_left_c_tl + \\ } + \l_ducksay_bubble_delim_left_d_tl + } + \end{tabular} + } + \hcoffin_set:Nn \l_ducksay_bubble_close_coffin + { + \l_ducksay_bubble_fount_tl + \begin{tabular}{@{}r@{}} + \int_compare:nNnTF { \l_ducksay_msg_height_int } = { \c_one_int } + { + \l_ducksay_bubble_delim_right_a_tl + } + { + \l_ducksay_bubble_delim_right_b_tl \\ + \int_step_inline:nnn + { 3 } { \l_ducksay_msg_height_int } { - \l_ducksay_bubble_delim_right_b_tl \\ - \int_step_inline:nnn - { 3 } { \l_ducksay_msg_height_int } - { - \l_ducksay_bubble_delim_right_c_tl - \kern-\l_ducksay_bubble_side_kern_tl - \\ - } - \l_ducksay_bubble_delim_right_d_tl + \l_ducksay_bubble_delim_right_c_tl + \kern-\l_ducksay_bubble_side_kern_tl + \\ } - \end{tabular} - } - \hcoffin_set:Nn \l_ducksay_bubble_top_coffin - { - \l_ducksay_bubble_fount_tl - \int_step_inline:nn - { \l_ducksay_msg_width_int + \l_ducksay_hpad_int } - { \l_ducksay_bubble_delim_top_tl } - } - \dim_set:Nn \l_ducksay_hpad_dim - { - ( - \coffin_wd:N \l_ducksay_bubble_top_coffin - - \coffin_wd:N \l_ducksay_msg_coffin - ) / 2 - } - \coffin_join:NnnNnnnn - \l_ducksay_msg_coffin { l } { vc } - \l_ducksay_bubble_open_coffin { r } { vc } - { - \l_ducksay_hpad_dim } { \c_zero_dim } - \coffin_join:NnnNnnnn - \l_ducksay_msg_coffin { r } { vc } - \l_ducksay_bubble_close_coffin { l } { vc } - { \l_ducksay_hpad_dim } { \c_zero_dim } + \l_ducksay_bubble_delim_right_d_tl + } + \end{tabular} + } + \hcoffin_set:Nn \l_ducksay_bubble_top_coffin + { + \l_ducksay_bubble_fount_tl + \int_step_inline:nn + { \l_ducksay_msg_width_int + \l_ducksay_hpad_int } + { \l_ducksay_bubble_delim_top_tl } + } + } +\cs_new_protected_nopar:Npn \ducksay_join_bubble_to_msg_coffin: + { + \dim_set:Nn \l_ducksay_hpad_dim + { + ( + \coffin_wd:N \l_ducksay_bubble_top_coffin + - \coffin_wd:N \l_ducksay_msg_coffin + ) / 2 + } + \coffin_join:NnnNnnnn + \l_ducksay_msg_coffin { l } { vc } + \l_ducksay_bubble_open_coffin { r } { vc } + { - \l_ducksay_hpad_dim } { \c_zero_dim } + \coffin_join:NnnNnnnn + \l_ducksay_msg_coffin { r } { vc } + \l_ducksay_bubble_close_coffin { l } { vc } + { \l_ducksay_hpad_dim } { \c_zero_dim } + \coffin_join:NnnNnnnn + \l_ducksay_msg_coffin { hc } { t } + \l_ducksay_bubble_top_coffin { hc } { b } + { \c_zero_dim } { \l_ducksay_bubble_top_kern_dim } + \coffin_join:NnnNnnnn + \l_ducksay_msg_coffin { hc } { b } + \l_ducksay_bubble_top_coffin { hc } { t } + { \c_zero_dim } { \l_ducksay_bubble_bottom_kern_dim } + } +\cs_new_protected:Npn \ducksay_shipout: + { + \hcoffin_set:Nn \l_ducksay_msg_coffin { \box_use:N \l_ducksay_msg_box } + \bool_if:NF \l_ducksay_no_bubble_bool + { + \ducksay_measure_msg: + \ducksay_set_bubble_coffins: \ducksay_set_bubble_top_kern: \ducksay_set_bubble_bottom_kern: - \coffin_join:NnnNnnnn - \l_ducksay_msg_coffin { hc } { t } - \l_ducksay_bubble_top_coffin { hc } { b } - { \c_zero_dim } { \l_ducksay_bubble_top_kern_dim } - \coffin_join:NnnNnnnn - \l_ducksay_msg_coffin { hc } { b } - \l_ducksay_bubble_top_coffin { hc } { t } - { \c_zero_dim } { \l_ducksay_bubble_bottom_kern_dim } + \ducksay_join_bubble_to_msg_coffin: } \bool_if:NF \l_ducksay_no_body_bool { diff --git a/Master/texmf-dist/tex/latex/ducksay/ducksay.sty b/Master/texmf-dist/tex/latex/ducksay/ducksay.sty index 47fa6586700..b55dcd8f5a1 100644 --- a/Master/texmf-dist/tex/latex/ducksay/ducksay.sty +++ b/Master/texmf-dist/tex/latex/ducksay/ducksay.sty @@ -13,7 +13,7 @@ %% See http://www.latex-project.org/lppl.txt %% -------------------------------------------------------------- %% -%% Copyright (C) 2017-2020 Jonathan P. Spratte +%% Copyright (C) 2017-2022 Jonathan P. Spratte %% %% This work may be distributed and/or modified under the conditions of the %% LaTeX Project Public License (LPPL), either version 1.3c of this license or @@ -35,8 +35,8 @@ \NeedsTeXFormat{LaTeX2e} \RequirePackage{xparse,l3keys2e} -\def\ducksay@version{2.5a} -\def\ducksay@date{2020-10-29} +\def\ducksay@version{2.6} +\def\ducksay@date{2022-10-08} \ProvidesExplPackage {ducksay} {\ducksay@date} |