texlive[64655] Master/texmf-dist: ducksay (8oct22)
commits+karl at tug.org
commits+karl at tug.org
Sat Oct 8 22:05:44 CEST 2022
Revision: 64655
http://tug.org/svn/texlive?view=revision&revision=64655
Author: karl
Date: 2022-10-08 22:05:44 +0200 (Sat, 08 Oct 2022)
Log Message:
-----------
ducksay (8oct22)
Modified Paths:
--------------
trunk/Master/texmf-dist/doc/latex/ducksay/README.md
trunk/Master/texmf-dist/doc/latex/ducksay/ducksay.pdf
trunk/Master/texmf-dist/source/latex/ducksay/ducksay.dtx
trunk/Master/texmf-dist/tex/latex/ducksay/ducksay.animals.tex
trunk/Master/texmf-dist/tex/latex/ducksay/ducksay.code.v1.tex
trunk/Master/texmf-dist/tex/latex/ducksay/ducksay.code.v2.tex
trunk/Master/texmf-dist/tex/latex/ducksay/ducksay.sty
Modified: trunk/Master/texmf-dist/doc/latex/ducksay/README.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/ducksay/README.md 2022-10-08 20:04:35 UTC (rev 64654)
+++ trunk/Master/texmf-dist/doc/latex/ducksay/README.md 2022-10-08 20:05:44 UTC (rev 64655)
@@ -9,7 +9,7 @@
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:
Modified: trunk/Master/texmf-dist/doc/latex/ducksay/ducksay.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/source/latex/ducksay/ducksay.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/ducksay/ducksay.dtx 2022-10-08 20:04:35 UTC (rev 64654)
+++ trunk/Master/texmf-dist/source/latex/ducksay/ducksay.dtx 2022-10-08 20:05:44 UTC (rev 64655)
@@ -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 @@
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 @@
\NeedsTeXFormat{LaTeX2e}
\RequirePackage{xparse,l3keys2e}
-\def\ducksay at version{2.5a}
-\def\ducksay at date{2020-10-29}
+\def\ducksay at version{2.6}
+\def\ducksay at date{2022-10-08}
\ProvidesExplPackage
{ducksay} {\ducksay at date}
@@ -954,8 +954,11 @@
% {%
% \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 @@
% ,dragon^^A
% ,sodomized^^A
% ,hedgehog^^A
+% ,platypus^^A
% ,kangaroo^^A
+% ,small-horse^^A
% ,dog^^A
% ,sheep^^A
% ,rabbit^^A
@@ -1638,6 +1643,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. }
% \end{macrocode}
%^^A=<<
%
@@ -2006,138 +2013,175 @@
% \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 }
+ \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_left_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_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
+ \l_ducksay_bubble_delim_right_c_tl
+ \kern-\l_ducksay_bubble_side_kern_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_c_tl
- \kern-\l_ducksay_bubble_side_kern_tl
- \\
- }
- \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 }
- }
- \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 @@
(, ,) ,)
`-_,---_,-'
|| ||}
+%^^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
Modified: trunk/Master/texmf-dist/tex/latex/ducksay/ducksay.animals.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/ducksay/ducksay.animals.tex 2022-10-08 20:04:35 UTC (rev 64654)
+++ trunk/Master/texmf-dist/tex/latex/ducksay/ducksay.animals.tex 2022-10-08 20:05:44 UTC (rev 64655)
@@ -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'.
Modified: trunk/Master/texmf-dist/tex/latex/ducksay/ducksay.code.v1.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/ducksay/ducksay.code.v1.tex 2022-10-08 20:04:35 UTC (rev 64654)
+++ trunk/Master/texmf-dist/tex/latex/ducksay/ducksay.code.v1.tex 2022-10-08 20:05:44 UTC (rev 64655)
@@ -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
Modified: trunk/Master/texmf-dist/tex/latex/ducksay/ducksay.code.v2.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/ducksay/ducksay.code.v2.tex 2022-10-08 20:04:35 UTC (rev 64654)
+++ trunk/Master/texmf-dist/tex/latex/ducksay/ducksay.code.v2.tex 2022-10-08 20:05:44 UTC (rev 64655)
@@ -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
{
- \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 }
+ }
+ }
+\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 }
+ \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_left_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_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
+ \l_ducksay_bubble_delim_right_c_tl
+ \kern-\l_ducksay_bubble_side_kern_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_c_tl
- \kern-\l_ducksay_bubble_side_kern_tl
- \\
- }
- \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 }
- }
- \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
{
Modified: trunk/Master/texmf-dist/tex/latex/ducksay/ducksay.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/ducksay/ducksay.sty 2022-10-08 20:04:35 UTC (rev 64654)
+++ trunk/Master/texmf-dist/tex/latex/ducksay/ducksay.sty 2022-10-08 20:05:44 UTC (rev 64655)
@@ -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 at version{2.5a}
-\def\ducksay at date{2020-10-29}
+\def\ducksay at version{2.6}
+\def\ducksay at date{2022-10-08}
\ProvidesExplPackage
{ducksay} {\ducksay at date}
More information about the tex-live-commits
mailing list.