From 00836951ad52eaf65a14bf820b8b5147c87cd02f Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Tue, 20 Mar 2018 22:00:14 +0000 Subject: duckuments (20mar18) git-svn-id: svn://tug.org/texlive/trunk@47048 c570f23f-e606-0410-a88d-b1316a301751 --- .../texmf-dist/tex/latex/duckuments/duckuments.sty | 413 +++++++++++++++------ .../tex/latex/duckuments/example-image-duck.pdf | Bin 478693 -> 270243 bytes 2 files changed, 291 insertions(+), 122 deletions(-) (limited to 'Master/texmf-dist/tex/latex/duckuments') diff --git a/Master/texmf-dist/tex/latex/duckuments/duckuments.sty b/Master/texmf-dist/tex/latex/duckuments/duckuments.sty index 52ad43ad908..1e3d18eed81 100644 --- a/Master/texmf-dist/tex/latex/duckuments/duckuments.sty +++ b/Master/texmf-dist/tex/latex/duckuments/duckuments.sty @@ -31,8 +31,8 @@ %% example-image-duck.tex %% \RequirePackage{xparse,letltxmacro,l3keys2e} -\def\duckuments@version{v0.2} -\def\duckuments@date{2018/03/14} +\def\duckuments@version{v0.3} +\def\duckuments@date{2018/03/19} \ProvidesExplPackage {duckuments} {\duckuments@date} {\duckuments@version} {minimal working duckuments} @@ -81,153 +81,110 @@ \bool_new:N \l_duckuments_toc_bool \bool_new:N \l_duckuments_math_inline_bool \bool_new:N \l_duckuments_math_display_bool -\regex_const:Nn \c_duckuments_regex +\bool_new:N \l_duckuments_blindduck_pars_bool +\seq_new:N \l_duckuments_range_seq +\int_new:N \g_duckuments_blindduck_start_int +\int_gset:Nn \g_duckuments_blindduck_start_int { \c_one } +\int_new:N \g_duckuments_blindduck_end_int +\regex_const:Nn \c_duckuments_example_regex { example-image-duck|example-image-duck.pdf } +\regex_const:Nn \c_duckuments_range_regex { (\d+|\d+-|-\d+|\d+-\d+|-) } +\int_const:Nn \c_duckuments_blindduck_pars_int { \c_five } \str_if_eq:VnF \c_sys_jobname_str { example-image-duck } -{\file_if_exist:nTF { example-image-duck.pdf } { - \sys_if_engine_pdftex:T + \file_if_exist:nTF { example-image-duck.pdf } { - \pdfximage{example-image-duck.pdf} - \int_const:Nn \c_duckuments_example_pages_int - { \the\pdflastximagepages } - } - \sys_if_engine_luatex:T - { - \saveimageresource{example-image-duck.pdf} - \int_const:Nn \c_duckuments_example_pages_int - { \lastsavedimageresourcepages } - } - \sys_if_engine_xetex:TF - { - \int_set:Nn \l_tmpa_int { \XeTeXpdfpagecount "example-image-duck.pdf" } - \int_const:Nn \c_duckuments_example_pages_int { \l_tmpa_int } - \int_new:N \g_duckuments_RCiv_i_int - \int_new:N \g_duckuments_RCiv_j_int - \int_new:N \g_duckuments_RCiv_keylength_int - \int_new:N \g_duckuments_tmpa_int - \int_const:Nn \c_duckuments_RCiv_Slength_int { 256 } - \tl_new:N \l_duckuments_tmpa_tl - \tl_new:N \l_duckuments_tmpb_tl - \cs_generate_variant:Nn \prop_gput:Nnn { Nxx } - \cs_generate_variant:Nn \prop_get:NnN { NxN } - \prop_new:N \g_duckuments_RCiv_S_prop - \int_step_inline:nnnn { 0 } { 1 } { 255 } - { - \prop_gput:Nnn \g_duckuments_RCiv_S_prop { #1 } { #1 } - } - \prop_new:N \g_duckuments_RCiv_key_prop - \prop_gput:Nnx \g_duckuments_RCiv_key_prop - { 0 } { \int_use:N \c_sys_minute_int } - \prop_gput:Nnx \g_duckuments_RCiv_key_prop - { 1 } { \c_sys_hour_int } - \prop_gput:Nnx \g_duckuments_RCiv_key_prop - { 2 } { \c_sys_day_int } - \prop_gput:Nnx \g_duckuments_RCiv_key_prop - { 3 } { \c_sys_month_int } - \prop_gput:Nnx \g_duckuments_RCiv_key_prop - { 4 } { \int_eval:n { \int_mod:nn { \c_sys_year_int } { 256 } } } - \int_gset:Nn \g_duckuments_RCiv_keylength_int { 5 } - \str_map_inline:Nn \c_sys_jobname_str - { - \prop_gput:Nxx \g_duckuments_RCiv_key_prop - { \int_use:N \g_duckuments_RCiv_keylength_int } - { \int_from_alph:n { #1 } } - \int_gadd:Nn \g_duckuments_RCiv_keylength_int { 1 } - } - \cs_new:Nn \duckuments_swap_prop_entries:Nnn - { - \prop_get:NnN #1 { #2 } \l_duckuments_tmpa_tl - \prop_get:NnN #1 { #3 } \l_duckuments_tmpb_tl - \prop_gput:Nnx #1 { #2 } { \l_duckuments_tmpb_tl } - \prop_gput:Nnx #1 { #3 } { \l_duckuments_tmpa_tl } - } - \cs_generate_variant:Nn \duckuments_swap_prop_entries:Nnn { Nxx } - \cs_new:Nn \duckuments_gadd_mod:Nnn + \sys_if_engine_pdftex:T { - \int_gset:Nn #1 { \int_mod:nn { #1 + #2 } { #3 } } + \pdfximage{example-image-duck.pdf} + \int_const:Nn \c_duckuments_example_pages_int + { \the\pdflastximagepages } } - \cs_generate_variant:Nn \duckuments_gadd_mod:Nnn { Nxn } - \cs_new:Nn \duckuments_gadd_mod_Slength:Nn + \sys_if_engine_luatex:T { - \duckuments_gadd_mod:Nnn #1 - { #2 } { \c_duckuments_RCiv_Slength_int } - } - \int_step_inline:nnnn { 0 } { 1 } { 255 } - { - \prop_get:NnN \g_duckuments_RCiv_S_prop { #1 } \l_duckuments_tmpa_tl - \int_gset:Nn \g_duckuments_tmpa_int - { - \int_mod:nn - { #1 } - { \g_duckuments_RCiv_keylength_int } - } - \prop_get:NxN \g_duckuments_RCiv_key_prop - { \int_use:N \g_duckuments_tmpa_int } \l_duckuments_tmpb_tl - \duckuments_gadd_mod_Slength:Nn \g_duckuments_RCiv_j_int - { \l_duckuments_tmpa_tl + \l_duckuments_tmpb_tl } - \duckuments_swap_prop_entries:Nxx \g_duckuments_RCiv_S_prop - { #1 } { \int_use:N \g_duckuments_RCiv_j_int } + \saveimageresource{example-image-duck.pdf} + \int_const:Nn \c_duckuments_example_pages_int + { \lastsavedimageresourcepages } } - \int_gzero:N \g_duckuments_RCiv_i_int - \int_gzero:N \g_duckuments_RCiv_j_int - \cs_new:Nn \duckuments_get_random_page: + \sys_if_engine_xetex:T { - \duckuments_gadd_mod_Slength:Nn \g_duckuments_RCiv_i_int { \c_one } - \prop_get:NxN \g_duckuments_RCiv_S_prop - { \int_use:N \g_duckuments_RCiv_i_int } \l_duckuments_tmpa_tl - \duckuments_gadd_mod_Slength:Nn \g_duckuments_RCiv_j_int - { \l_duckuments_tmpa_tl } - \duckuments_swap_prop_entries:Nxx \g_duckuments_RCiv_S_prop - { \int_use:N \g_duckuments_RCiv_i_int } - { \int_use:N \g_duckuments_RCiv_j_int } - \int_gset:Nn \g_duckuments_tmpa_int { \l_duckuments_tmpa_tl } - \duckuments_gadd_mod_Slength:Nn \g_duckuments_tmpa_int - { \l_duckuments_tmpb_tl } - \prop_get:NxN \g_duckuments_RCiv_S_prop - { \int_use:N \g_duckuments_tmpa_int } \l_duckuments_tmpa_tl - \int_gset:Nn \g_duckuments_tmpa_int - { - \int_mod:nn - { \l_duckuments_tmpa_tl } { \c_duckuments_example_pages_int } - + \c_one - } - \cs_set:Nx \duckuments_random_page: - { \int_use:N \g_duckuments_tmpa_int } + \group_begin: + \int_gset:Nn \l_tmpa_int + { \XeTeXpdfpagecount "example-image-duck.pdf" } + \int_const:Nn \c_duckuments_example_pages_int { \l_tmpa_int } + \group_end: } - \cs_new:Nn \duckuments_random_page: { 1 } - } - { - \cs_new:Nn \duckuments_get_random_page: {} - \cs_new:Nn \duckuments_random_page: - { \int_rand:nn { 1 } { \c_duckuments_example_pages_int } } } - }} + } + { \int_const:Nn \c_duckuments_example_pages_int { 1 } } +\msg_new:nnnn { duckuments } { option~unknown } + { + Unknown~option~'#1'~for~package~duckuments. + } + { + \ ~__________________________________\\ + \ (Quack!~Nothing~here,~sorry.~Quack!)\\ + \ ~""""""""""""""""""""""""""""""""""\\ + \ ~\ ~\ ~\ ~\ ~\ ~\ ~\ ~\ ~\ ~\ ~\ ~\ ~\ ~\ ~\ ~\ ~\string\ \\ + \ ~\ ~\ ~\ ~\ ~\ ~\ ~\ ~\ ~\ ~\ ~\ ~\ ~\ ~\ ~\ ~\ ~\ ~>()_\\ + \ \ ~\ ~\ ~\ ~\ ~\ ~\ ~\ ~\ ~\ ~\ ~\ ~\ ~\ ~\ ~\ ~\ ~\ ~(__)__ + } +\msg_new:nnnn { duckuments } { out~of~range } + { + You~requested~element~#3~out~of~the~range~#1~to~#2~of~array~'#4'.\\ + I'll~just~use~element~#1~for~you. + } { - \int_const:Nn \c_duckuments_example_pages_int { 1 } + \ ~__________________________________\\ + \ (Quack!~Nothing~here,~sorry.~Quack!)\\ + \ ~""""""""""""""""""""""""""""""""""\\ + \ ~\ ~\ ~\ ~\ ~\ ~\ ~\ ~\ ~\ ~\ ~\ ~\ ~\ ~\ ~\ ~\ ~\string\ \\ + \ ~\ ~\ ~\ ~\ ~\ ~\ ~\ ~\ ~\ ~\ ~\ ~\ ~\ ~\ ~\ ~\ ~\ ~>()_\\ + \ \ ~\ ~\ ~\ ~\ ~\ ~\ ~\ ~\ ~\ ~\ ~\ ~\ ~\ ~\ ~\ ~\ ~\ ~(__)__ } +\cs_new:Nn \duckuments_patch_see_duckumentation: + {%>>> + \cs_set:Nn \msg_see_documentation_text:n + { + \\\\ + See~the~\str_if_eq:nnTF { ##1 } { LaTeX } { LaTeX3~documentation } + { + \str_if_eq:nnTF { ##1 } { duckuments } { duckumentation } + { ##1~documentation } + }~for~further~information. + } + }%<<< +\duckuments_patch_see_duckumentation: \keys_define:nn { duckuments } {%>>> - ,toc .bool_set:N = \l_duckuments_toc_bool - ,toc .default:n = true + ,immediate .bool_set:N = \l_duckuments_immediate_bool + ,immediate .default:n = true + ,full .code:n = + \duckuments_blindduck_range_test:n { 1-\c_duckuments_blindduck_pars_int } ,maths .choice: ,maths / both .code:n = { \bool_set_true:N \l_duckuments_math_inline_bool \bool_set_true:N \l_duckuments_math_display_bool } + ,maths / display .code:n = \bool_set_true:N \l_duckuments_math_display_bool + ,maths / inline .code:n = \bool_set_true:N \l_duckuments_math_inline_bool ,maths / none .code:n = { \bool_set_false:N \l_duckuments_math_inline_bool \bool_set_false:N \l_duckuments_math_display_bool } - ,maths / inline .code:n = \bool_set_true:N \l_duckuments_math_inline_bool - ,maths / display .code:n = \bool_set_true:N \l_duckuments_math_display_bool ,maths .default:n = both - ,immediate .bool_set:N = \l_duckuments_immediate_bool - ,immediate .default:n = true + ,toc .bool_set:N = \l_duckuments_toc_bool + ,toc .default:n = true + ,unknown .code:n = + { \msg_error:nnx { duckuments } { option~unknown } { \l_keys_key_tl } } }%<<< \ProcessKeysOptions { duckuments } +\keys_define:nn { duckuments } + {%>>> + unknown .code:n = \duckuments_blindduck_range_test:V \l_keys_key_tl + }%<<< \bool_if:NTF \l_duckuments_immediate_bool { \AtEndOfPackage { \duckuments_patch_includegraphics: } } { \AtBeginDocument { \duckuments_patch_includegraphics: } } @@ -253,6 +210,7 @@ \group_begin: \keys_set:nn { duckuments } { #1 } \duckuments@blindduck@text + \bool_if:NT \l_duckuments_blindduck_pars_bool { \par } \group_end: }%<<< \NewDocumentCommand \ducklist {s m} @@ -359,7 +317,7 @@ \RenewDocumentCommand \includegraphics { >{\duckuments_starred:n}s O{} m } { - \regex_match:NnTF \c_duckuments_regex { ##3 } + \regex_match:NnTF \c_duckuments_example_regex { ##3 } { \duckuments_get_random_page: \duckuments@includegraphicsBAK##1 @@ -372,14 +330,198 @@ } } }%<<< +\cs_new_protected:Nn \duckuments_blindduck_range_test:n + {%>>> + \regex_match:NnTF \c_duckuments_range_regex { #1 } + { + \seq_set_split:Nnn \l_duckuments_range_seq { - } { #1 } + \int_compare:nNnTF { 1 } = { \seq_count:N \l_duckuments_range_seq } + { + \cs_set:Npn \duckuments@blindduck@text + { + \duckuments_blindduck_single_par:n { #1 } + \int_gset:Nn \g_duckuments_blindduck_start_int { #1 + \c_one } + } + } + { + \bool_set_true:N \l_duckuments_blindduck_pars_bool + \exp_args:Nx + \tl_if_empty:nF { \seq_item:Nn \l_duckuments_range_seq { \c_one } } + { + \int_gset:Nn \g_duckuments_blindduck_start_int + { \seq_item:Nn \l_duckuments_range_seq { \c_one } } + } + \exp_args:Nx + \tl_if_empty:nTF { \seq_item:Nn \l_duckuments_range_seq { \c_two } } + { + \int_gset_eq:NN + \g_duckuments_blindduck_end_int + \g_duckuments_blindduck_start_int + } + { + \int_set:Nn \g_duckuments_blindduck_end_int + { \seq_item:Nn \l_duckuments_range_seq { \c_two } } + } + \duckuments_blindduck_set_text:xx + { \int_use:N \g_duckuments_blindduck_start_int } + { \int_use:N \g_duckuments_blindduck_end_int } + } + } + { + \group_begin: + \exp_args:NnnV + \msg_error:nnn { duckuments } { option~unknown } \l_keys_key_tl + \group_end: + } + }%<<< +\cs_generate_variant:Nn \duckuments_blindduck_range_test:n { V } +\cs_new:Nn \duckuments_blindduck_set_text:nn + {%>>> + \def \duckuments@blindduck@text + { + \int_step_function:nnnN { #1 } { \c_one } { #2 } + \duckuments_blindduck_par_loop:n + \int_gset:Nn \g_duckuments_blindduck_start_int { #2 + \c_one } + } + }%<<< +\cs_generate_variant:Nn \duckuments_blindduck_set_text:nn { xx } +\cs_new:Nn \duckuments_blindduck_single_par:n + {%>>> + \bool_if:nTF + { + \int_compare_p:nNn { #1 } > { \c_duckuments_blindduck_pars_int } + || \int_compare_p:nNn { #1 } < { \c_one } + } + { + \msg_error:nnxxxx { duckuments } { out~of~range } + { 1 } { \int_use:N \c_duckuments_blindduck_pars_int } { #1 } + { blindduck~paragraphs } + \duckuments@blindduck@text@i + } + { + \use:c { duckuments@blindduck@text@ \int_to_roman:n { #1 } } + } + }%<<< +\cs_new:Nn \duckuments_blindduck_par_loop:n + {%>>> + \duckuments_blindduck_single_par:n { #1 } + \par + }%<<< \cs_new_protected:Nn \duckuments_starred:n {%>>> \IfBooleanTF { #1 } { \def\ProcessedArgument{*} } { \def\ProcessedArgument{} } }%<<< +\sys_if_engine_xetex:TF + { + \int_new:N \g_duckuments_RCiv_i_int + \int_new:N \g_duckuments_RCiv_j_int + \int_new:N \g_duckuments_RCiv_keylength_int + \int_new:N \g_duckuments_tmpa_int + \int_const:Nn \c_duckuments_RCiv_Slength_int { 256 } + \tl_new:N \l_duckuments_tmpa_tl + \tl_new:N \l_duckuments_tmpb_tl + \cs_new_protected_nopar:Nn \duckuments_RCiv_S_new:n + { \int_new:c { g_duckuments_RCiv_S_ \int_eval:n { #1 } _int } } + \cs_new_protected_nopar:Nn \duckuments_RCiv_S_set:nn + { \int_gset:cn { g_duckuments_RCiv_S_ \int_eval:n { #1 } _int } { #2 } } + \cs_new_nopar:Nn \duckuments_RCiv_S_get:n + { \int_use:c { g_duckuments_RCiv_S_ \int_eval:n { #1 } _int } } + \cs_new_protected_nopar:Nn \duckuments_RCiv_key_new:n + { \int_new:c { g_duckuments_RCiv_key_ \int_eval:n { #1 } _int } } + \cs_new_protected_nopar:Nn \duckuments_RCiv_key_set:nn + { \int_gset:cn { g_duckuments_RCiv_key_ \int_eval:n { #1 } _int } { #2 } } + \cs_new_nopar:Nn \duckuments_RCiv_key_get:n + { \int_use:c { g_duckuments_RCiv_key_ \int_eval:n { #1 } _int } } + \int_step_inline:nnnn { 0 } { 1 } { 255 } + { + \duckuments_RCiv_S_new:n { #1 } + \duckuments_RCiv_S_set:nn { #1 } { #1 } + } + \int_step_inline:nnnn { 0 } { 1 } { 4 } + { \duckuments_RCiv_key_new:n { #1 } } + \duckuments_RCiv_key_set:nn { 0 } { \c_sys_minute_int } + \duckuments_RCiv_key_set:nn { 1 } { \c_sys_hour_int } + \duckuments_RCiv_key_set:nn { 2 } { \c_sys_day_int } + \duckuments_RCiv_key_set:nn { 3 } { \c_sys_month_int } + \duckuments_RCiv_key_set:nn { 4 } + { \int_mod:nn { \c_sys_year_int } { \c_duckuments_RCiv_Slength_int } } + \int_gset:Nn \g_duckuments_RCiv_keylength_int { 5 } + \str_map_inline:Nn \c_sys_jobname_str + { + \duckuments_RCiv_key_new:n { \g_duckuments_RCiv_keylength_int } + \duckuments_RCiv_key_set:nn + { \g_duckuments_RCiv_keylength_int } + { \int_from_alph:n { #1 } } + \int_gincr:N \g_duckuments_RCiv_keylength_int + } + \cs_new_protected_nopar:Nn \duckuments_swap_S_entries:nn + { + \int_set_eq:Nc + \g_duckuments_tmpa_int + { g_duckuments_RCiv_S_ \int_eval:n { #1 } _int } + \int_set_eq:cc + { g_duckuments_RCiv_S_ \int_eval:n { #1 } _int } + { g_duckuments_RCiv_S_ \int_eval:n { #2 } _int } + \int_set_eq:cN + { g_duckuments_RCiv_S_ \int_eval:n { #2 } _int } + \g_duckuments_tmpa_int + } + \int_gset:Nn \g_duckuments_RCiv_keylength_int { 5 } + \cs_new:Nn \duckuments_gadd_mod:Nnn + { \int_gset:Nn #1 { \int_mod:nn { #1 + ( #2 ) } { #3 } } } + \cs_new:Nn \duckuments_gadd_mod_Slength:Nn + { + \duckuments_gadd_mod:Nnn #1 + { #2 } { \c_duckuments_RCiv_Slength_int } + } + \int_step_inline:nnnn { 0 } { 1 } { 255 } + { + \int_gset:Nn \g_duckuments_tmpa_int + { \int_mod:nn { #1 } { \g_duckuments_RCiv_keylength_int } } + \duckuments_gadd_mod_Slength:Nn \g_duckuments_RCiv_j_int + { + \duckuments_RCiv_S_get:n { #1 } + + \duckuments_RCiv_key_get:n { \g_duckuments_tmpa_int } + } + \duckuments_swap_S_entries:nn { #1 } { \g_duckuments_RCiv_j_int } + } + \int_gzero:N \g_duckuments_RCiv_i_int + \int_gzero:N \g_duckuments_RCiv_j_int + \cs_new_protected_nopar:Nn \duckuments_get_random_page: + { + \duckuments_gadd_mod_Slength:Nn \g_duckuments_RCiv_i_int { \c_one } + \duckuments_gadd_mod_Slength:Nn \g_duckuments_RCiv_j_int + { \duckuments_RCiv_S_get:n { \g_duckuments_RCiv_i_int } } + \duckuments_swap_S_entries:nn + { \g_duckuments_RCiv_i_int } + { \g_duckuments_RCiv_j_int } + \int_gset:Nn \g_duckuments_tmpa_int + { \duckuments_RCiv_S_get:n { \g_duckuments_RCiv_i_int } } + \duckuments_gadd_mod_Slength:Nn \g_duckuments_tmpa_int + { \duckuments_RCiv_S_get:n { \g_duckuments_RCiv_j_int } } + \cs_set:Nx \duckuments_random_page: + { + \int_eval:n + { + \int_mod:nn + { \duckuments_RCiv_S_get:n { \g_duckuments_tmpa_int } } + { \c_duckuments_example_pages_int } + + \c_one + } + } + } + \cs_new:Nn \duckuments_random_page: { 1 } + } + { + \cs_new:Nn \duckuments_get_random_page: {} + \cs_new:Nn \duckuments_random_page: + { \int_rand:nn { 1 } { \c_duckuments_example_pages_int } } + } \ExplSyntaxOff -\newcommand*\duckuments@blindduck@text +\newcommand*\duckuments@blindduck@text{\duckuments@blindduck@text@i} +\newcommand*\duckuments@blindduck@text@i {%>>> There once was a very smart but sadly blind duck. When it was still a small duckling it was renowned for its good vision. But sadly as the duck grew @@ -393,6 +535,33 @@ \duckuments@enquote{Go, find me the best eye ducktor there is. He shall heal me from my disease!}% }%<<< +\newcommand*\duckuments@blindduck@text@ii + {%>>> + \duckuments@enquote{But my duck, how are you supposed to manage your daily + routines without my visual guidance}, replied the underduckling. The smart + duck's face turned grim in anger. \duckuments@enquote{You dare to talk + back?} The underduckling blushed ashamed. How could he have objections + after his duck gave strict orders? The underduckling was so embarrassed + about his own behaviour he had to solve an equation.% + }%<<< +\newcommand*\duckuments@blindduck@text@iii + {%>>> + After the equation was solved and the underduckling prepared his leave for + the next day it fell asleep in a shaky mood. It did not know what the + journey had prepared for him and if he was prepared enough for it. His sleep + was restless. The dreams he had that night were not calm and bright as they + used to be for an innocent underduckling.% + }%<<< +\newcommand*\duckuments@blindduck@text@iv + {%>>> + Before the first sunlight the underduckling woke. He didn't have the feeling + of being well rested. But nonetheless he knew that this was the day he + should leave. Except saying goodbye to his beloved ones there was nothing + holding him back. His duck had sent him on the most important mission a five + weeks old inexperienced underduckling was ever sent. He bid farewell to his + mother, all his brothers and sisters, and finally from his duck. The bag was + shouldered, the boots were tied, the underduckling left.% + }%<<< \newcommand*\duckuments@headings@text[1] {A friendly duck at level #1 \duckuments@headings@level{#1}} \newcommand*\ducklists@content diff --git a/Master/texmf-dist/tex/latex/duckuments/example-image-duck.pdf b/Master/texmf-dist/tex/latex/duckuments/example-image-duck.pdf index d602328399f..8b3fa4d07a7 100644 Binary files a/Master/texmf-dist/tex/latex/duckuments/example-image-duck.pdf and b/Master/texmf-dist/tex/latex/duckuments/example-image-duck.pdf differ -- cgit v1.2.3