texlive[61857] Master/texmf-dist: sillypage (2feb22)
commits+karl at tug.org
commits+karl at tug.org
Wed Feb 2 22:40:47 CET 2022
Revision: 61857
http://tug.org/svn/texlive?view=revision&revision=61857
Author: karl
Date: 2022-02-02 22:40:47 +0100 (Wed, 02 Feb 2022)
Log Message:
-----------
sillypage (2feb22)
Modified Paths:
--------------
trunk/Master/texmf-dist/doc/latex/sillypage/README.md
trunk/Master/texmf-dist/doc/latex/sillypage/sillypage-example.pdf
trunk/Master/texmf-dist/doc/latex/sillypage/sillypage.pdf
trunk/Master/texmf-dist/source/latex/sillypage/sillypage.dtx
trunk/Master/texmf-dist/source/latex/sillypage/sillypage.ins
trunk/Master/texmf-dist/tex/latex/sillypage/sillypage.sty
Modified: trunk/Master/texmf-dist/doc/latex/sillypage/README.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/sillypage/README.md 2022-02-02 21:40:29 UTC (rev 61856)
+++ trunk/Master/texmf-dist/doc/latex/sillypage/README.md 2022-02-02 21:40:47 UTC (rev 61857)
@@ -13,6 +13,10 @@
image for the value of that counter.
- Use the macro `\sillystep` to print the step number `n` from the
sequence of steps.
+- Write `\pagenumbering{sillynumeral}` in you document to use a silly
+ numeral system.
+- Use the macro `\sillynumeral` to get the silly numeral system
+ representation from the provided `n` value.
## A sample document
@@ -32,7 +36,7 @@
## Installation notes
-Just note that `sillywalk-map.png` should go under the `tex/` subtree
+Just note that `sillywalk-map.pdf` should go under the `tex/` subtree
(as it is required by `sillypage.sty`) instead of the `doc/` counterpart.
## Isn't this package too silly?
@@ -41,11 +45,12 @@
## Authors
-Blame these three individuals:
+Blame these individuals:
- Phelype Oleinik
- Paulo Cereda
- samcarter
+- Ulrike Fischer
## License
Modified: trunk/Master/texmf-dist/doc/latex/sillypage/sillypage-example.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/sillypage/sillypage.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/source/latex/sillypage/sillypage.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/sillypage/sillypage.dtx 2022-02-02 21:40:29 UTC (rev 61856)
+++ trunk/Master/texmf-dist/source/latex/sillypage/sillypage.dtx 2022-02-02 21:40:47 UTC (rev 61857)
@@ -2,7 +2,8 @@
% Copyright (C) 2022
% by Phelype Oleinik <phelype.oleinik at latex-project.org>
% Paulo Cereda <cereda.paulo at gmail.com>
-% and samcarter <sam.carter8 at aol.com>
+% samcarter <sam.carter8 at aol.com>
+% and Ulrike Fischer <fischer at troubleshooting-tex.de>
%
% This work may be distributed and/or modified under the conditions of
% the LaTeX Project Public License, either version 1.3c of this license
@@ -15,11 +16,11 @@
% version 2005/12/01 or later.
%
% This work is "maintained" (as per the LPPL maintenance status)
-% by Phelype Oleinik and Paulo Cereda.
+% by Phelype Oleinik, Paulo Cereda, samcarter and Ulrike Fischer.
%
%<*package>
-\def\sillypageDate{2022-01-20}
-\def\sillypageVersion{1.3}
+\def\sillypageDate{2022-02-02}
+\def\sillypageVersion{1.4}
%</package>
%<*driver>
\documentclass[a4paper,full]{l3doc}
@@ -60,6 +61,12 @@
% E-mail:
% \href{mailto:sam.carter8 at aol.com}
% {sam.carter8\meta{at}aol.com}^^A
+% }\\
+% Ulrike \emph{flying lessons} Fischer\thanks
+% {^^A
+% E-mail:
+% \href{mailto:fischer at troubleshooting-tex.de}
+% {fischer\meta{at}troubleshooting-tex.de}^^A
% }^^A
% }
%
@@ -136,6 +143,25 @@
% silly walk cycle.
% \end{function}
%
+% \begin{function}{\pagenumbering{sillynumeral}}
+% \begin{syntax}
+% \cs{pagenumbering}\{sillynumeral\}
+% \end{syntax}
+% Write \cs{pagenumbering}|{sillynumeral}| in you document to use a
+% silly numeral system, in which each page will be converted to a unique
+% composition of silly steps. Note that this macro differs from its
+% \cs{silly} counterpart, as the former is a proper base 12 numeral
+% system whereas the latter simply walks through a 12-cycle silly routine.
+% \end{function}
+%
+% \begin{function}{\sillynumeral}
+% \begin{syntax}
+% \cs{sillynumeral} \Arg{integer}
+% \end{syntax}
+% Provides the silly numeral system representation from the provided
+% \meta{integer} value. This is a proper base 12 numeral system.
+% \end{function}
+%
% \bigskip
%
% What a silly yet marvellous interface!
@@ -197,53 +223,131 @@
%
% \begin{macrocode}
%<*package>
+%<@@=silly>
% \end{macrocode}
%
% \subsection{Package requirements}
%
% \begin{macrocode}
-\ProvidesPackage{sillypage}[\sillypageDate\space\sillypageVersion\space
- The silly walk as page numbering style]
+\ProvidesExplPackage
+ {sillypage} {\sillypageDate} {\sillypageVersion}
+ {The silly walk as page numbering style}
\RequirePackage{graphicx}
% \end{macrocode}
%
-% \subsection{Loading}
-% \begin{macro}{\silly,\sillystep}
-% \begin{macro}[int]{\@silly}
-% \begin{macro}{
+% \subsection{Picture-specific macros}
+%
+% \begin{macro}[int]{
% \silly at steps,
% \silly at picture,
% \silly at height}
% \begin{macrocode}
-\newcommand*\silly[1]{\expandafter\@silly\csname c@#1\endcsname}
-\newcommand*\sillystep[1]{\@silly{#1}}
-\newcommand*\@silly[1]{\expandafter\@silly at walk
- \expandafter{\number\numexpr#1\relax}}
-\newcommand*\silly at steps{12}%
-\newcommand*\silly at height{.8cm}%
-\newcommand*\silly at picture{sillywalk-map.pdf}%
+\newcommand*\silly at steps{12}
+\newcommand*\silly at height{.8cm}
+\newcommand*\silly at picture{sillywalk-map.pdf}
% \end{macrocode}
% \end{macro}
+%
+% \subsection{Single step macros}
+%
+% \begin{macro}{\silly,\sillystep}
+% \begin{macro}[int]{\@silly}
+% \begin{macro}{\@@_step:n}
+% \begin{macrocode}
+\NewDocumentCommand \silly { m } { \exp_args:Nv \@@_step:n { c@#1 } }
+\NewDocumentCommand \sillystep { m } { \@@_step:n {#1} }
+\newcommand*\@silly { \@@_step:n }
+\cs_new:Npn \@@_step:n #1
+ {
+ \@@_step_aux:eN
+ { \int_eval:n { \int_mod:nn { #1-1 } { \silly at steps } +1 } }
+ \c_false_bool
+ }
+% \end{macrocode}
% \end{macro}
% \end{macro}
+% \end{macro}
%
-% \begin{macro}[int]{\@silly at walk,\@silly at walk@}
+% \subsection{Multi step macros}
+%
+% \begin{macro}{\sillynumeral}
+% \begin{macro}[int]{\@sillynumeral}
+% \begin{macro}{\@@_numeral:n,\@@_numeral_aux:n}
% \begin{macrocode}
-\def\@silly at walk#1{%
- \@ifundefined{texorpdfstring}{\@firstoftwo}{\texorpdfstring}%
- {\@silly at walk@{#1}}% TeX
- {#1}}% pdf string
-\def\@silly at walk@#1{%
- \ifnum#1>\silly at steps\space
- \expandafter\@silly at walk@\expandafter
- {\number\numexpr#1-\silly at steps\expandafter}%
- \else
- \includegraphics[height=\silly at height,page=#1]{\silly at picture}%
- \fi}
+\NewDocumentCommand \sillynumeral { m } { \@@_numeral:n {#1} }
+\newcommand*\@sillynumeral { \@@_numeral:n }
+\cs_new:Npn \@@_numeral:n #1
+ {
+ \exp_args:Ne \str_map_function:nN
+ { \int_to_base:nn {#1} { 12 } } \@@_numeral_aux:n
+ }
+\cs_new:Npn \@@_numeral_aux:n #1
+ { \@@_step_aux:eN { "\char_uppercase:N #1+1 } \c_true_bool }
% \end{macrocode}
% \end{macro}
+% \end{macro}
+% \end{macro}
%
+% \subsection{Internals}
+%
+% \begin{macro}{\@@_step_aux:nN,\@@_step_aux:eN,\@@_trim_step:nN}
% \begin{macrocode}
+\cs_new:Npn \@@_step_aux:nN #1 #2
+ {
+ \cs_if_exist_use:cF { texorpdfstring } { \use_i:nn }
+ { \@@_trim_step:nN {#1} #2 }
+ {#1}
+ }
+\cs_generate_variant:Nn \@@_step_aux:nN { e }
+\cs_new:Npn \@@_trim_step:nN #1 #2
+ {
+%<@@=>
+ \exp_args:Nee \@@silly at place@picture@@nn
+ {
+ \bool_if:NT #2
+ {
+ trim = \int_case:nn {#1}
+ {
+ { 1 } { 57 ~ 0 ~ 42 ~ 0 }
+ { 2 } { 59 ~ 0 ~ 29 ~ 0 }
+ { 3 } { 53 ~ 0 ~ 21 ~ 0 }
+ { 4 } { 62 ~ 0 ~ 11 ~ 0 }
+ { 5 } { 50 ~ 0 ~ 8 ~ 0 }
+ { 6 } { 33 ~ 0 ~ 27 ~ 0 }
+ { 7 } { 45 ~ 0 ~ 13 ~ 0 }
+ { 8 } { 56 ~ 0 ~ 27 ~ 0 }
+ { 9 } { 38 ~ 0 ~ 12 ~ 0 }
+ { 10 } { 7 ~ 0 ~ 43 ~ 0 }
+ { 11 } { 33 ~ 0 ~ 33 ~ 0 }
+ { 12 } { 57 ~ 0 ~ 7 ~ 0 }
+ }
+ , clip
+ }
+ }
+ { \int_eval:n {#1} }
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}[int]{\@@silly at place@picture@@nn}
+% \begin{macrocode}
+\DeclareRobustCommand \@@silly at place@picture@@nn [2]
+ {
+ \includegraphics
+ [ #1, page=#2, height=\silly at height ]
+ { \silly at picture }
+ }
+\AtBeginDocument
+ {
+ \cs_if_exist_use:NF \pdfstringdefDisableCommands { \use_none:n }
+ { \cs_set:Npn \@@silly at place@picture@@nn #1 #2 {#2} }
+ }
+\DeclareHookRule { begindocument }
+ { sillypage } { after } { hyperref }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macrocode}
%</package>
% \end{macrocode}
%
Modified: trunk/Master/texmf-dist/source/latex/sillypage/sillypage.ins
===================================================================
--- trunk/Master/texmf-dist/source/latex/sillypage/sillypage.ins 2022-02-02 21:40:29 UTC (rev 61856)
+++ trunk/Master/texmf-dist/source/latex/sillypage/sillypage.ins 2022-02-02 21:40:47 UTC (rev 61857)
@@ -2,7 +2,8 @@
%% Copyright (C) 2022
%% by Phelype Oleinik <phelype.oleinik at latex-project.org>
%% Paulo Cereda <cereda.paulo at gmail.com>
-%% and samcarter <sam.carter8 at aol.com>
+%% samcarter <sam.carter8 at aol.com>
+%% and Ulrike Fischer <fischer at troubleshooting-tex.de>
%%
%% This work may be distributed and/or modified under the conditions of
%% the LaTeX Project Public License, either version 1.3c of this license
@@ -15,7 +16,7 @@
%% version 2005/12/01 or later.
%%
%% This work is "maintained" (as per the LPPL maintenance status)
-%% by Phelype Oleinik, Paulo Cereda and samcarter.
+%% by Phelype Oleinik, Paulo Cereda, samcarter and Ulrike Fischer.
%%
\def\projectname{sillypage}%
\def\nameofplainTeX{plain}%
@@ -35,6 +36,7 @@
Copyright 2022 Phelype Oleinik /phelype.oleinik at latex-project.org/
Paulo Cereda /cereda.paulo at gmail.com/
samcarter /sam.carter8 at aol.com/
+ Ulrike Fischer /fischer at troubleshooting-tex.de/
This work may be distributed and/or modified under the conditions of the
LaTeX Project Public License, either version 1.3c of this license or (at
@@ -50,7 +52,7 @@
\postamble
This work is "maintained" (as per the LPPL maintenance status)
-by Phelype Oleinik, Paulo Cereda and samcarter.
+by Phelype Oleinik, Paulo Cereda, samcarter and Ulrike Fischer.
This work consists of the files \projectname.dtx, and
\projectname.ins,
Modified: trunk/Master/texmf-dist/tex/latex/sillypage/sillypage.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/sillypage/sillypage.sty 2022-02-02 21:40:29 UTC (rev 61856)
+++ trunk/Master/texmf-dist/tex/latex/sillypage/sillypage.sty 2022-02-02 21:40:47 UTC (rev 61857)
@@ -11,6 +11,7 @@
%% Copyright 2022 Phelype Oleinik /phelype.oleinik at latex-project.org/
%% Paulo Cereda /cereda.paulo at gmail.com/
%% samcarter /sam.carter8 at aol.com/
+%% Ulrike Fischer /fischer at troubleshooting-tex.de/
%%
%% This work may be distributed and/or modified under the conditions of the
%% LaTeX Project Public License, either version 1.3c of this license or (at
@@ -21,32 +22,82 @@
%% and version 1.3c or later is part of all distributions of LaTeX version
%% 2005/12/01 or later.
%%
-\def\sillypageDate{2022-01-20}
-\def\sillypageVersion{1.3}
-\ProvidesPackage{sillypage}[\sillypageDate\space\sillypageVersion\space
- The silly walk as page numbering style]
+\def\sillypageDate{2022-02-02}
+\def\sillypageVersion{1.4}
+\ProvidesExplPackage
+ {sillypage} {\sillypageDate} {\sillypageVersion}
+ {The silly walk as page numbering style}
\RequirePackage{graphicx}
-\newcommand*\silly[1]{\expandafter\@silly\csname c@#1\endcsname}
-\newcommand*\sillystep[1]{\@silly{#1}}
-\newcommand*\@silly[1]{\expandafter\@silly at walk
- \expandafter{\number\numexpr#1\relax}}
-\newcommand*\silly at steps{12}%
-\newcommand*\silly at height{.8cm}%
-\newcommand*\silly at picture{sillywalk-map.pdf}%
-\def\@silly at walk#1{%
- \@ifundefined{texorpdfstring}{\@firstoftwo}{\texorpdfstring}%
- {\@silly at walk@{#1}}% TeX
- {#1}}% pdf string
-\def\@silly at walk@#1{%
- \ifnum#1>\silly at steps\space
- \expandafter\@silly at walk@\expandafter
- {\number\numexpr#1-\silly at steps\expandafter}%
- \else
- \includegraphics[height=\silly at height,page=#1]{\silly at picture}%
- \fi}
+\newcommand*\silly at steps{12}
+\newcommand*\silly at height{.8cm}
+\newcommand*\silly at picture{sillywalk-map.pdf}
+\NewDocumentCommand \silly { m } { \exp_args:Nv \__silly_step:n { c@#1 } }
+\NewDocumentCommand \sillystep { m } { \__silly_step:n {#1} }
+\newcommand*\@silly { \__silly_step:n }
+\cs_new:Npn \__silly_step:n #1
+ {
+ \__silly_step_aux:eN
+ { \int_eval:n { \int_mod:nn { #1-1 } { \silly at steps } +1 } }
+ \c_false_bool
+ }
+\NewDocumentCommand \sillynumeral { m } { \__silly_numeral:n {#1} }
+\newcommand*\@sillynumeral { \__silly_numeral:n }
+\cs_new:Npn \__silly_numeral:n #1
+ {
+ \exp_args:Ne \str_map_function:nN
+ { \int_to_base:nn {#1} { 12 } } \__silly_numeral_aux:n
+ }
+\cs_new:Npn \__silly_numeral_aux:n #1
+ { \__silly_step_aux:eN { "\char_uppercase:N #1+1 } \c_true_bool }
+\cs_new:Npn \__silly_step_aux:nN #1 #2
+ {
+ \cs_if_exist_use:cF { texorpdfstring } { \use_i:nn }
+ { \__silly_trim_step:nN {#1} #2 }
+ {#1}
+ }
+\cs_generate_variant:Nn \__silly_step_aux:nN { e }
+\cs_new:Npn \__silly_trim_step:nN #1 #2
+ {
+ \exp_args:Nee \@@silly at place@picture@@nn
+ {
+ \bool_if:NT #2
+ {
+ trim = \int_case:nn {#1}
+ {
+ { 1 } { 57 ~ 0 ~ 42 ~ 0 }
+ { 2 } { 59 ~ 0 ~ 29 ~ 0 }
+ { 3 } { 53 ~ 0 ~ 21 ~ 0 }
+ { 4 } { 62 ~ 0 ~ 11 ~ 0 }
+ { 5 } { 50 ~ 0 ~ 8 ~ 0 }
+ { 6 } { 33 ~ 0 ~ 27 ~ 0 }
+ { 7 } { 45 ~ 0 ~ 13 ~ 0 }
+ { 8 } { 56 ~ 0 ~ 27 ~ 0 }
+ { 9 } { 38 ~ 0 ~ 12 ~ 0 }
+ { 10 } { 7 ~ 0 ~ 43 ~ 0 }
+ { 11 } { 33 ~ 0 ~ 33 ~ 0 }
+ { 12 } { 57 ~ 0 ~ 7 ~ 0 }
+ }
+ , clip
+ }
+ }
+ { \int_eval:n {#1} }
+ }
+\DeclareRobustCommand \@@silly at place@picture@@nn [2]
+ {
+ \includegraphics
+ [ #1, page=#2, height=\silly at height ]
+ { \silly at picture }
+ }
+\AtBeginDocument
+ {
+ \cs_if_exist_use:NF \pdfstringdefDisableCommands { \use_none:n }
+ { \cs_set:Npn \@@silly at place@picture@@nn #1 #2 {#2} }
+ }
+\DeclareHookRule { begindocument }
+ { sillypage } { after } { hyperref }
%%
%% This work is "maintained" (as per the LPPL maintenance status)
-%% by Phelype Oleinik, Paulo Cereda and samcarter.
+%% by Phelype Oleinik, Paulo Cereda, samcarter and Ulrike Fischer.
%%
%% This work consists of the files sillypage.dtx, and
%% sillypage.ins,
More information about the tex-live-commits
mailing list.