texlive[46973] Master: duckuments (15mar18)
commits+karl at tug.org
commits+karl at tug.org
Thu Mar 15 23:06:50 CET 2018
Revision: 46973
http://tug.org/svn/texlive?view=revision&revision=46973
Author: karl
Date: 2018-03-15 23:06:50 +0100 (Thu, 15 Mar 2018)
Log Message:
-----------
duckuments (15mar18)
Modified Paths:
--------------
trunk/Master/texmf-dist/doc/latex/duckuments/README.md
trunk/Master/texmf-dist/doc/latex/duckuments/duckuments.pdf
trunk/Master/texmf-dist/source/latex/duckuments/duckuments.dtx
trunk/Master/texmf-dist/tex/latex/duckuments/duckuments.sty
trunk/Master/texmf-dist/tex/latex/duckuments/example-image-duck.pdf
trunk/Master/tlpkg/libexec/ctan2tds
Removed Paths:
-------------
trunk/Master/texmf-dist/doc/latex/duckuments/duckuments.hd
Modified: trunk/Master/texmf-dist/doc/latex/duckuments/README.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/duckuments/README.md 2018-03-15 22:03:42 UTC (rev 46972)
+++ trunk/Master/texmf-dist/doc/latex/duckuments/README.md 2018-03-15 22:06:50 UTC (rev 46973)
@@ -21,7 +21,7 @@
- `\duckenumerate` - `\ducklist{enumerate}`
- `\duckdescription` - `\ducklist{description}`
- `\duckumentsCreateExampleFile`
- - `\duckumentsDrawRandomDucks`
+ - `\duckumentsDrawRandomDucks[count]`
It also provides `example-image-duck.pdf` which contains several pages of random
`tikzduck`s. Also `\includegraphics` is patched so one can use
@@ -29,4 +29,5 @@
`example-image-duck.pdf`. The behaviour of `\includegraphics` shouldn't be
altered for other files.
-**Attention: At the moment, the package only works with pdfTeX and LuaTeX.**
+**Attention:
+ At the moment, the package only works with pdfTeX, LuaTeX, and XeTeX.**
Deleted: trunk/Master/texmf-dist/doc/latex/duckuments/duckuments.hd
===================================================================
Modified: trunk/Master/texmf-dist/doc/latex/duckuments/duckuments.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/source/latex/duckuments/duckuments.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/duckuments/duckuments.dtx 2018-03-15 22:03:42 UTC (rev 46972)
+++ trunk/Master/texmf-dist/source/latex/duckuments/duckuments.dtx 2018-03-15 22:06:50 UTC (rev 46973)
@@ -63,6 +63,7 @@
%<*driver>
\ProvidesFile{duckuments.dtx}[2018/03/13 minimal working duckuments]
\documentclass{l3doc}
+\usepackage{duckuments}
\usepackage{enumitem}
\newenvironment{options}
{\begin{description}[style=nextline,font=\normalfont\ttfamily]}
@@ -84,8 +85,8 @@
%</eid>
%
%<*pkg>
-\def\duckuments at version{v0.1}
-\def\duckuments at date{2018/03/13}
+\def\duckuments at version{v0.2}
+\def\duckuments at date{2018/03/14}
\ProvidesExplPackage
{duckuments} {\duckuments at date}
{\duckuments at version} {minimal working duckuments}
@@ -94,7 +95,9 @@
%
% \title{The \pkg{duckuments} package}
% \author{Jonathan P. Spratte\thanks{E-mail: jspratte at yahoo.de}}
-% \date{Released 2018/03/13}
+% \makeatletter
+% \date{version \duckuments at version, released \duckuments at date}
+% \makeatother
% \maketitle
% \tableofcontents
%
@@ -118,7 +121,7 @@
% once. The sources are hosted on
% \href{https://github.com/Skillmon/ltx_duckuments}{github}.
%
-% \textbf{The package does currently only work on \pdfTeX\ and \LuaTeX}.
+% \textbf{The package does currently only work on \pdfTeX, \LuaTeX, and \XeTeX}.
%
% \section{Duckumentation}
%
@@ -181,10 +184,13 @@
% \end{function}
%
% \begin{function}{\duckumentsDrawRandomDucks}
-% Draws \cs{duckuments at randoms} random \pkg{tikzducks} using
-% \pkg{Ti\textit{k}Z}. Note that \pkg{duckuments} doesn't load
-% \pkg{Ti\textit{k}Z}, this macro is for the use in
-% \file{example-image-duck.tex}.
+% \begin{syntax}
+% \cs{duckumentsDrawRandomDucks}\oarg{count}
+% \end{syntax}
+% Draws \meta{count} random \pkg{tikzducks} using
+% \pkg{Ti\textit{k}Z}. \meta{count} defaults to \cs{duckuments at randoms}.
+% Note that \pkg{duckuments} doesn't load \pkg{Ti\textit{k}Z}, this macro is
+% for the use in \file{example-image-duck.tex}.
% \end{function}
%
% \subsection{Patches}
@@ -195,6 +201,12 @@
% of that document is used. There shouldn't be any change in behaviour if other
% files are used.
%
+% The random page is chosen with |\int_random:nn| in \pdfTeX\ and \LuaTeX. If
+% \XeTeX\ is used, the package implements a RC4 pseudo-random generating
+% algorithm which is seeded using the current time and jobname. The generator
+% can produce only numbers between $1$ and $256$ and is biased if $256$ is not a
+% multiple of the page count of \file{example-image-duck.pdf}.
+%
% The patch is done so that one can use \pkg{tikzducks} ducks without the need
% of loading \pkg{tikz} in a minimal working duckument as example images.
%
@@ -234,12 +246,17 @@
%
% Check which engine is used.
% \begin{macrocode}
-\bool_if:nF { \sys_if_engine_luatex_p: || \sys_if_engine_pdftex_p: }
- { %>>>
+\bool_if:nF
+ {
+ \sys_if_engine_luatex_p:
+ || \sys_if_engine_pdftex_p:
+ || \sys_if_engine_xetex_p:
+ }
+ {%>>>
\msg_new:nnnn { duckuments } { incompatible }
{
- The~duckuments~package~is~currently~only~compatible~with~pdfTeX~and~
- LuaTeX!
+ The~duckuments~package~is~currently~only~compatible~with~pdfTeX,~
+ LuaTeX,~and~XeTeX!
}
{
Sorry~for~that.
@@ -248,7 +265,6 @@
\endinput
}%<<<
% \end{macrocode}
-%
% Check whether \file{example-image-duck.pdf} exists.
% \begin{macrocode}
\file_if_exist:nF { example-image-duck.pdf }
@@ -284,7 +300,7 @@
% \begin{variable}{\duckuments at randoms}
% Stores the number of random ducks in \file{example-image-duck.pdf}.
% \begin{macrocode}
-\newcommand*\duckuments at randoms{100}
+\newcommand*\duckuments at randoms{128}
% \end{macrocode}
% \end{variable}
%
@@ -327,6 +343,146 @@
% \end{macrocode}
% \end{variable}
%
+% \begin{variable}{\c_duckuments_example_pages_int}
+% \begin{macrocode}
+\str_if_eq:VnF \c_sys_jobname_str { example-image-duck }
+{\file_if_exist:nTF { example-image-duck.pdf }
+ {
+ \sys_if_engine_pdftex:T
+ {
+ \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 }
+% \end{macrocode}
+% For \XeTeX\ we need a bit more code in order to get random numbers. The
+% following is an implementation of RC4. First declare some variables:
+% \begin{macrocode}
+ \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 }
+% \end{macrocode}
+% Initialize the S array:
+% \begin{macrocode}
+ \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
+ {
+ \int_gset:Nn #1 { \int_mod:nn { #1 + #2 } { #3 } }
+ }
+ \cs_generate_variant:Nn \duckuments_gadd_mod:Nnn { Nxn }
+ \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 }
+ {
+ \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 }
+ }
+ \int_gzero:N \g_duckuments_RCiv_i_int
+ \int_gzero:N \g_duckuments_RCiv_j_int
+% \end{macrocode}
+% Provide a function which gets the next random number and sets
+% |\duckuments_random_page:| to it.
+% \begin{macrocode}
+ \cs_new:Nn \duckuments_get_random_page:
+ {
+ \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 }
+ }
+ \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 }
+ }
+% \end{macrocode}
+% \end{variable}
+%
+%
% \subsection{Options and Configurations}
% \begin{macrocode}
\keys_define:nn { duckuments }
@@ -468,9 +624,9 @@
%
% \begin{macro}{\duckumentsDrawRandomDucks}
% \begin{macrocode}
-\newcommand*\duckumentsDrawRandomDucks
+\newcommand*\duckumentsDrawRandomDucks[1][\duckuments at randoms]
{%>>>
- \foreach\x in {1,2,...,\duckuments at randoms}
+ \foreach\x in {1,2,...,#1}
{\begin{tikzpicture}
\draw[black,fill=gray!50] (0,0) rectangle (6,4);
\draw[gray,thin] (0,0) -- (6,4);
@@ -567,8 +723,10 @@
{
\regex_match:NnTF \c_duckuments_regex { ##3 }
{
+ \duckuments_get_random_page:
\duckuments at includegraphicsBAK##1
- [page=\int_rand:nn{1}{\duckuments at randoms},##2] { ##3 }
+ [page=\duckuments_random_page:,##2]
+ { ##3 }
}
{
\duckuments at includegraphicsBAK##1[##2]{##3}
Modified: trunk/Master/texmf-dist/tex/latex/duckuments/duckuments.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/duckuments/duckuments.sty 2018-03-15 22:03:42 UTC (rev 46972)
+++ trunk/Master/texmf-dist/tex/latex/duckuments/duckuments.sty 2018-03-15 22:06:50 UTC (rev 46973)
@@ -31,17 +31,22 @@
%% example-image-duck.tex
%%
\RequirePackage{xparse,letltxmacro,l3keys2e}
-\def\duckuments at version{v0.1}
-\def\duckuments at date{2018/03/13}
+\def\duckuments at version{v0.2}
+\def\duckuments at date{2018/03/14}
\ProvidesExplPackage
{duckuments} {\duckuments at date}
{\duckuments at version} {minimal working duckuments}
-\bool_if:nF { \sys_if_engine_luatex_p: || \sys_if_engine_pdftex_p: }
- { %>>>
+\bool_if:nF
+ {
+ \sys_if_engine_luatex_p:
+ || \sys_if_engine_pdftex_p:
+ || \sys_if_engine_xetex_p:
+ }
+ {%>>>
\msg_new:nnnn { duckuments } { incompatible }
{
- The~duckuments~package~is~currently~only~compatible~with~pdfTeX~and~
- LuaTeX!
+ The~duckuments~package~is~currently~only~compatible~with~pdfTeX,~
+ LuaTeX,~and~XeTeX!
}
{
Sorry~for~that.
@@ -71,7 +76,7 @@
}
}
}%<<<
-\newcommand*\duckuments at randoms{100}
+\newcommand*\duckuments at randoms{128}
\bool_new:N \l_duckuments_immediate_bool
\bool_new:N \l_duckuments_toc_bool
\bool_new:N \l_duckuments_math_inline_bool
@@ -78,6 +83,129 @@
\bool_new:N \l_duckuments_math_display_bool
\regex_const:Nn \c_duckuments_regex
{ example-image-duck|example-image-duck.pdf }
+\str_if_eq:VnF \c_sys_jobname_str { example-image-duck }
+{\file_if_exist:nTF { example-image-duck.pdf }
+ {
+ \sys_if_engine_pdftex:T
+ {
+ \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
+ {
+ \int_gset:Nn #1 { \int_mod:nn { #1 + #2 } { #3 } }
+ }
+ \cs_generate_variant:Nn \duckuments_gadd_mod:Nnn { Nxn }
+ \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 }
+ {
+ \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 }
+ }
+ \int_gzero:N \g_duckuments_RCiv_i_int
+ \int_gzero:N \g_duckuments_RCiv_j_int
+ \cs_new:Nn \duckuments_get_random_page:
+ {
+ \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 }
+ }
+ \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 }
+ }
\keys_define:nn { duckuments }
{%>>>
,toc .bool_set:N = \l_duckuments_toc_bool
@@ -170,9 +298,9 @@
{ \end{document} }
\iow_close:N \duckuments_example_file_iow
}%<<<
-\newcommand*\duckumentsDrawRandomDucks
+\newcommand*\duckumentsDrawRandomDucks[1][\duckuments at randoms]
{%>>>
- \foreach\x in {1,2,...,\duckuments at randoms}
+ \foreach\x in {1,2,...,#1}
{\begin{tikzpicture}
\draw[black,fill=gray!50] (0,0) rectangle (6,4);
\draw[gray,thin] (0,0) -- (6,4);
@@ -233,8 +361,10 @@
{
\regex_match:NnTF \c_duckuments_regex { ##3 }
{
+ \duckuments_get_random_page:
\duckuments at includegraphicsBAK##1
- [page=\int_rand:nn{1}{\duckuments at randoms},##2] { ##3 }
+ [page=\duckuments_random_page:,##2]
+ { ##3 }
}
{
\duckuments at includegraphicsBAK##1[##2]{##3}
Modified: trunk/Master/texmf-dist/tex/latex/duckuments/example-image-duck.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/tlpkg/libexec/ctan2tds
===================================================================
--- trunk/Master/tlpkg/libexec/ctan2tds 2018-03-15 22:03:42 UTC (rev 46972)
+++ trunk/Master/tlpkg/libexec/ctan2tds 2018-03-15 22:06:50 UTC (rev 46973)
@@ -1607,6 +1607,7 @@
'dlfltxb', '\.sty', # no sample.cfg
'docbytex', 'docby\.tex',
'doclicense', 'images|license-texts|' . $standardtex,
+ 'duckuments', 'example-image.*pdf|' . $standardtex,
'ean', 'ean[0-9]*\.tex',
'easy', 'easy.*\.sty', # no mydoc.sty
'ecv', '\.sty|\.cls|\.ldf', # no docstrip.cfg, else system-wide
@@ -2480,6 +2481,7 @@
'download' => 'pdflatex', # fancy fonts, doc and subfiles combined
'dramatist' => 'latex', # requires interaction
'drm' => 'latex', # requires interaction
+ 'duckuments' => 'tex',
'ejpecp' => 'latex', # requires interaction
'ekaia' => 'latex', # requires interaction
'elteikthesis' => 'latex', # requires interaction
More information about the tex-live-commits
mailing list