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.