% \iffalse meta-comment
% Copyright (C) 2022
% by Phelype Oleinik <phelype.oleinik@latex-project.org>
% Paulo Cereda <cereda.paulo@gmail.com>
% and samcarter <sam.carter8@aol.com>
% 
% 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 your option) any later version. The latest version of this
% license is in
% 
%     http://www.latex-project.org/lppl.txt
% 
% and version 1.3c or later is part of all distributions of LaTeX
% version 2005/12/01 or later.
% 
% This work is "maintained" (as per the LPPL maintenance status)
% by Phelype Oleinik and Paulo Cereda.
% 
%<*package>
\def\sillypageDate{2022-01-20}
\def\sillypageVersion{1.3}
%</package>
%<*driver>
\documentclass[a4paper,full]{l3doc}
\usepackage[T1]{fontenc}
\usepackage{tgbonum}
\usepackage[scaled=.85]{beramono}
\usepackage{sillypage}
\usepackage{hyperref}
\begin{document}
  \DocInput{\jobname.dtx}
\end{document}
%</driver>
% \fi
%
% \GetFileInfo{\jobname.sty}
%
% \title{^^A
%   The \pkg{sillypage} package^^A
%   \thanks{This file has version number \sillypageVersion,
%           last revised \sillypageDate.}
% }
%
% \author{^^A
%  Phelype \emph{lemon curry} Oleinik\thanks
%    {^^A
%      E-mail:
%        \href{mailto:phelype.oleinik@latex-project.org}
%          {phelype.oleinik\meta{at}latex-project.org}^^A
%    }\\
%  Paulo \emph{dictates a letter} Cereda\thanks
%    {^^A
%      E-mail:
%        \href{mailto:cereda.paulo@gmail.com}
%          {cereda.paulo\meta{at}gmail.com}^^A
%    }\\
%  samcarter \emph{cheesy comestibles}\thanks
%    {^^A
%     E-mail:
%        \href{mailto:sam.carter8@aol.com}
%          {sam.carter8\meta{at}aol.com}^^A
%    }^^A
% }
%
% \date{Released \sillypageDate}
% \pagenumbering{silly}
%
% \maketitle
%
% \begin{documentation}
%
% \section{Introduction}
%
% This package is inspired by \emph{The Ministry of Silly Walks}, a famous
% sketch from Monty Python. According to the corresponding
% \href{https://bit.ly/33jKsl1}{Wikipedia article}:
%
% \begin{quotation}
% The sketch as originally depicted in the series begins with John Cleese
% playing Mr.~Teabag, a civil servant who, after purchasing The Times
% from the newsagent in the previous sketch, walks through the streets
% of London (at the crossing of Thorpebank Road and Dunraven Road) in a
% very peculiar manner. He eventually arrives at his place of business:
% The Ministry of Silly Walks, on the northern end of Whitehall. In the
% hallway, he passes other employees all exhibiting their own silly walks
% before arriving at his office. Once there, he finds Mr.~Putey (Michael
% Palin) waiting for him and apologizes for the delay, explaining that
% his walk has become particularly silly of late and it takes longer for
% him to reach his destination.
% \end{quotation}
%
% So we decided to bring this masterpiece of British pop culture to
% the \TeX{} world through a silly page numbering style. Make sure to
% use this package in your thesis, it will be a success.
%
% \section{Usage}
%
% Using a silly package like this is quite straighforward! For starters,
% make sure to include it in your document preamble through
%
% \begin{verbatim}
% \usepackage{sillypage}
% \end{verbatim}
%
% \noindent and that is it! The available interface is as follows:
%
% \begin{function}{\pagenumbering{silly}}
%   \begin{syntax}
%     \cs{pagenumbering}\{silly\}
%   \end{syntax}
%   Write \cs{pagenumbering}|{silly}| in you document to use the page
%   numbering style defined by this package. According to Wikipedia,
%   the typical silly walk gait consists of twelve specific steps to
%   be performed, so page numbering will cycle through these steps,
%   in an kineograph fashion.
% \end{function}
%
% \begin{function}{\silly}
%   \begin{syntax}
%     \cs{silly} \Arg{counter}
%   \end{syntax}
%   Use the macro \cs{silly} on a \LaTeX{} \meta{counter} to typeset the
%   corresponding image for the value of that counter. As noted above,
%   the value will be mapped to an image in the silly walk cycle. Also,
%   observe that this macro is applied to counters and not to integers.
% \end{function}
%
% \begin{function}{\sillystep}
%   \begin{syntax}
%     \cs{sillystep} \Arg{integer}
%   \end{syntax}
%   Prints the step number \meta{integer} from the sequence of steps.
%   This macro works exactly like \cs{silly}, but on integers instead
%   of counters. The integer value will be mapped to an image in the
%   silly walk cycle.
% \end{function}
%
% \bigskip
%
% What a silly yet marvellous interface!
%
% \section{A sample document}
%
% As a means to demonstrate how straightforward (and of course silly) our package
% is, here is a minimal working example:
%
% \begin{verbatim}
% \documentclass{article}
% 
% \usepackage{sillypage}
% \usepackage{blindtext}
% 
% \begin{document}
% \pagenumbering{silly}
% \Blinddocument
% \end{document}
% \end{verbatim}
%
% After compiling it, take a look at the page numbering: you will be greeted with
% the silly walk routine! To impress your supervisor, use our package in your thesis,
% print it and ask them to view those pages in quick succession, so the images appear
% to animate by simulating motion! It is known to work with thesis committees as well.
%
% \section{The silly walk routine}
%
% This is the complete silly walk routine as described by Jazeen Hollings in the
% \href{https://bit.ly/3fc9x46}{corresponding Wikipedia article}. Please note that the
% images used in this package are created by samcarter and released under
% the \href{https://creativecommons.org/licenses/by-sa/4.0/}{CC BY-SA 4.0} license.
% Image sources (vector format) are available in the
% \href{https://github.com/cereda/sillypage}{package repository}
%
% \bigskip
%
% \makeatletter
% {\centering
%  \def\do#1{\ifnum#1>\silly@steps\else
%    \sillystep{#1}
%    \expandafter\do\expandafter{%^^A
%      \number\numexpr#1+1\relax}\fi}\do{1}\par}
% \makeatother
%
% \bigskip
%
% We also recommend Pilates.
%
% \end{documentation}
%
% \begin{implementation}
%
% \section{Implementation details}
%
% The implementation is quite straightforward. Feel free to contact us for
% suggestions and criticism, code improvements and of course other silly
% walk variants.
%
%    \begin{macrocode}
%<*package>
%    \end{macrocode}
%
% \subsection{Package requirements}
%
%    \begin{macrocode}
\ProvidesPackage{sillypage}[\sillypageDate\space\sillypageVersion\space
  The silly walk as page numbering style]
\RequirePackage{graphicx}
%    \end{macrocode}
%
% \subsection{Loading}
% \begin{macro}{\silly,\sillystep}
% \begin{macro}[int]{\@silly}
% \begin{macro}{
%      \silly@steps,
%      \silly@picture,
%      \silly@height}
%    \begin{macrocode}
\newcommand*\silly[1]{\expandafter\@silly\csname c@#1\endcsname}
\newcommand*\sillystep[1]{\@silly{#1}}
\newcommand*\@silly[1]{\expandafter\@silly@walk
  \expandafter{\number\numexpr#1\relax}}
\newcommand*\silly@steps{12}%
\newcommand*\silly@height{.8cm}%
\newcommand*\silly@picture{sillywalk-map.pdf}%
%    \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \begin{macro}[int]{\@silly@walk,\@silly@walk@}
%    \begin{macrocode}
\def\@silly@walk#1{%
  \@ifundefined{texorpdfstring}{\@firstoftwo}{\texorpdfstring}%
    {\@silly@walk@{#1}}% TeX
    {#1}}% pdf string
\def\@silly@walk@#1{%
  \ifnum#1>\silly@steps\space
    \expandafter\@silly@walk@\expandafter
      {\number\numexpr#1-\silly@steps\expandafter}%
  \else
    \includegraphics[height=\silly@height,page=#1]{\silly@picture}%
  \fi}
%    \end{macrocode}
% \end{macro}
%
%    \begin{macrocode}
%</package>
%    \end{macrocode}
%
% \end{implementation}
%
\endinput
