% \iffalse meta-comment % % rubikpatterns.dtx % % version 5.0 % % Authors: RWD Nickalls (dick@nickalls.org) % and Apostolos Syropoulos (asyropoulos@yahoo.com) % % Copyright 25 February 2018 RWD Nickalls + A Syropoulos % % 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 licence is in % % http://www.latex-project.org/lppl.txt % %<*readme> % % The rubikpatterns package provides a collection of LaTeX commands and macros % for the typesetting of Rubik cube configurations and rotation % sequences using the TikZ graphic language. % % Please report errors or suggestions for improvement to % % Dick Nickalls or Apostolos Syropoulos % % This package requires the basic TikZ package to be loaded already % % %<*driver> \listfiles \documentclass{ltxdoc} \IfFileExists{rubikpatterns.sty}{\usepackage{rubikpatterns}}{% \GenericWarning{rubikpatterns.dtx}{Package file rubikpatterns.sty not found. Documentation will be messed up!^^J (Generate rubikpatterns.sty by (La)TeXing rubikpatterns.ins, and then^^J process rubikpatterns.dtx again)^^J}\stop }% \pagestyle{myheadings} \markright{\texttt{rubikpatterns} \ \ (Rubik bundle v5.0, 2018) \ \ \texttt{www.ctan.org/pkg/rubik}} \usepackage{ifpdf} \usepackage{url,path} %% for references and paths \usepackage{graphicx} %% for the two pdf figs \usepackage{hypdoc} %% for pdf bookmarks + hyperref documenting of packages %%\OnlyDescription \EnableCrossrefs \PageIndex \CodelineIndex \CodelineNumbered \RecordChanges \setcounter{StandardModuleDepth}{1} \begin{document} \DocInput{rubikpatterns.dtx} \PrintChanges \PrintIndex \end{document} % % \fi % % % %%% \CheckSum{187} % %%% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z %% Digits \0\1\2\3\4\5\6\7\8\9 %% Exclamation \! Double quote \" Hash (number) \# %% Dollar \$ Percent \% Ampersand \& %% Acute accent \' Left paren \( Right paren \) %% Asterisk \* Plus \+ Comma \, %% Minus \- Point \. Solidus \/ %% Colon \: Semicolon \; Less than \< %% Equals \= Greater than \> Question mark \? %% Commercial at \@ Left bracket \[ Backslash \\ %% Right bracket \] Circumflex \^ Underscore \_ %% Grave accent \` Left brace \{ Vertical bar \| %% Right brace \} Tilde \~} % % % % \title{% % \ifpdf\pdfbookmark[1]{Title}{Title}\else\fi% % The \textsc{rubikpatterns} package} % % \author{ % RWD Nickalls (dick@nickalls.org) \\ % A Syropoulos (asyropoulos@yahoo.com) % } % \date{This file describes version \RPfileversion\ (\RPfiledate)\\ % \texttt{www.ctan.org/pkg/rubik}} % \maketitle % % \begin{abstract} % The \rubikpatterns\ package is a small data-base of well-known named % Rubik patterns and associated rotation sequences, for use in conjunction % with the other Rubik `bundle' packages. % \end{abstract} % % % \tableofcontents % % \pagebreak % % \section{Introduction} % % The \textsc{rubikpatterns} package is a small a data-base of well-known Rubik % rotation sequences for use in conjunction with the Rubik bundle packages. % These rotation sequences, which are well-known and widely available, % were sourced from the Rubik-related % websites of Reid M and Kociemba H (see References for URLs). % % % % \section{Requirements} % % The \textsc{rubikpatterns} package requires (a)~the TikZ package, since it makes % use of the TikZ picture environment, (b)~the \textsc{rubikcube} package, and % (c)~the \textsc{rubikrotation} package, since it uses % the Perl program \texttt{rubikrotation.pl}. % The \verb!TikZ! package must be loaded \textit{before} the \textsc{rubikcube} package. % The \textsc{rubikrotation} package requires Perl to be installed. % % % % \section{Installation} % % % The Rubik bundle consists of the four packages \textsc{rubikcube}, \textsc{rubikrotation}, % \textsc{rubikpatterns} and \textsc{rubiktwocube}. % % Here we describe only the installation of the \textsc{rubikpatterns} package, % which consists of the following files: %\begin{quote} % \begin{verbatim} % rubikpatterns.ins % rubikpatterns.dtx % rubikpatterns.pdf --this document % rubikpatternsLIST.tex % rubikpatternsLIST.pdf --a graphic list of all patterns in this package % rubikpatterns-doc-figA.pdf %\end{verbatim} %\end{quote} % The package documentation is the file \texttt{rubikpatterns.pdf}. % The style option \texttt{rubikpatterns.sty} is generated by running (pdf)\LaTeX\ on % the file \texttt{rubikpatterns.ins} as follows: %\begin{quote} %\begin{verbatim} % pdflatex rubikpatterns.ins %\end{verbatim} %\end{quote} % The documentation file (\texttt{rubikpatterns.pdf}) is then generated using the following % sequence of steps\,\footnote{Since the documentation includes a complicated indexing % system as well a \textsc{pdf} index and hyperef links (the package \texttt{hypdoc} % is used), then a lot of pdflatex runs are required. Prior to the first run it is % a good idea to delete any relevant \texttt{.toc}, \texttt{.aux}, \texttt{.out} files.}: %\begin{quote} % \begin{verbatim} % pdflatex rubikpatterns.dtx % pdflatex rubikpatterns.dtx % makeindex -s gind.ist rubikpatterns % makeindex -s gglo.ist -o rubikpatterns.gls rubikpatterns.glo % pdflatex rubikpatterns.dtx % pdflatex rubikpatterns.dtx %\end{verbatim} %\end{quote} % % % % \subsection{Placing the files} % \label{sec:placingfiles} % % Place the files either in a working directory, or where your system % will find them, e.g.,~in your \texttt{/texmf-local/} directory tree. % For example, on a Linux platform with a standard \TeX\ Directory Structure (TDS), then: % %\medskip %{\noindent}*.sty $\rightarrow$ \texttt{/usr/local/texlive/texmf-local/tex/latex/rubik/} %{\newline}*.pdf $\rightarrow$ \texttt{/usr/local/texlive/texmf-local/doc/rubik/} % %\medskip % %\medskip %{\noindent}\textsc{file database}:\ \ Finally, (depending on your system) update the % \TeX\ file database. % For example, on a Linux platform this is achieved using the \texttt{texhash} command. % % % \subsection{The rubikpatternsLIST file} % % Note that the package includes a `rubikpatternsLIST' file (\texttt{rubikpatternsLIST.pdf}), % as well as the source file (\texttt{rubikpatternsLIST.tex}), and % associated \texttt{.sh} (Linux) and \texttt{.bat} (Microsoft) batch % files, which can be used to facilitate processing the source \texttt{.tex} file. % The file \texttt{rubikpatternsLIST.pdf} showcases the Rubik cube % patterns made available in this package. % % Note that should you need to generate the file \texttt{rubikpatternsLIST.pdf} % from the source file (\texttt{rubikpatternsLIST.tex}) you will require % the \textsc{rubikcube} and \textsc{rubikrotation} packages to be installed, % and will also need to use the \verb!--shell-escape! command-line % option (see Section~\ref{sec:rubikrotation} for details). % % % % % % \subsection{Usage} % \label{sec:usage} % Load the packages \textsc{rubikcube}, % \textsc{rubikrotation} and \textsc{rubikpatterns} in the \TeX\ file preamble \textit{after} loading % the TikZ package; for example, as follows: %\begin{quote} % \begin{verbatim} % \usepackage{tikz} % \usepackage{rubikcube,rubikrotation,rubikpatterns} %\end{verbatim} %\end{quote} % Since the sequence macros made available by this package are accessed using commands % provided by the \textsc{rubikcube} and \textsc{rubikrotation} packages, please read the % documentation of these packages. % % % % \section{Rubik patterns} % % A Rubik pattern is the configuration generated by a sequence of rotations % (or `moves') from some initial starting configuration (typically a `solved' % configuration). For example, `sixspot' is a well known pattern generated % from a solved Rubik cube by the rotation sequence % \texttt{U,Dp,R,Lp,F,Bp,U,Dp}, as follows: % % \bigskip % % \noindent\begin{minipage}{\textwidth} % \centering % \ifpdf % \includegraphics[height=3cm]{rubikpatterns-doc-figA.pdf} % \else % \fi % \end{minipage} % % \bigskip % % {\noindent}The code for the above image is as follows: % %\begin{verbatim} % \noindent\hfil% % \RubikCubeSolvedWB% % \ShowCube{2.4cm}{0.6}{\DrawRubikCubeRU}% % \RubikRotation{\SixSpot}% % \quad\SequenceBraceA{sixspot}{\ShowSequence{}{\Rubik}{\SequenceLong}}\quad% % \ShowCube{2.4cm}{0.6}{\DrawRubikCubeRU}% % \hfil% %\end{verbatim} % % \bigskip % % Note that the appearance of a pattern generated by a given % rotation sequence is, of course, sensitive to (a)~the particular colour % configuration of the solved cube used, and (b)~the initial orientation of % the Rubik cube. % % % Consequently the appearance generated by a given sequence % may appear slightly different from % that on some websites, although the colour configuration (pattern's \textit{geometry}) % will, of course, be the same (isomorphic). You may therefore need % to adjust the pre- (and possibly the post-) x,y,z rotations in % order to obtain a particular configuration as displayed elsewhere. % % % \subsection{Sequence macros} % % Each of the rotation sequences of `patterns' made available by the % \textsc{rubikpatterns} package is defined in the file \texttt{rubikpatterns.sty} % in the following compact macro form. % For~example, the rotation sequence associated with the pattern known % as `SixSpot' (shown in the figure above) is defined as follows: %\begin{verbatim} %\newcommand{\SixSpot}{[SixSpot],U,Dp,R,Lp,F,Bp,U,Dp,<(8q*, 8f*)>} %\newcommand{\sixspot}{\SixSpot} %\end{verbatim} % The macro name is \verb!\SixSpot! (the lower-case version \verb!\sixspot! can also be used). % Note that the second argument which % includes the rotation sequence, also includes the pattern name in % square brackets \verb![SixSpot]! as the first element in the sequence. % Additional metadata (held by the macro \verb!\SequenceInfo!) is appended % in angle brackets (separated by a comma) as follows: \verb!<(8q*, 8f*)>!. % For details see the \textsc{rubikrotation} package documentation. % % % % \subsection{List of macros} % % The following is a list of the macro names of all the Rubik patterns supplied by % the \textsc{rubikpatterns} package. Note that for convenience each macro-name listed % has an equivalent lower-case version. See the companion file \texttt{rubikpatternsLIST.pdf} % for a detailed list showing each pattern and its associated % sequence\,\footnote{We show all these images in a separate % file (\texttt{rubikpatternsLIST.pdf}) purely because generating them requires % using the \LaTeX\ command-line option \texttt{--shell-escape} in conjunction % with the \textsc{rubikrotation} package.}. % % All the pattern names encoded here (as macros) are well-known and widely available. % However, some pattern names have been slightly modified % in order to avoid spaces and to keep them as similar to the original as possible. % On finding different sequences which generate the same pattern, then the % shortest sequence has been selected (they can be readily distinguished by their metadata). % % Finally, we note that there is a serious need for a standardised one-word nomenclature % in order to avoid confusion, and to facilitate computerisation and an electronic database. % Such a notation also needs to accommodate those sequence variations which generate the same pattern. % We welcome suggestions and/or help for improvement. % %\begin{verbatim} % \PonsAsinorum % \CheckerboardsThree % \CheckerboardsSix % \Stripes % \CubeInCube % \CubeInCubeInCube % \ChristmasCross % \PlummersCross % \Anaconda % \Python % \BlackMamba % \GreenMamba % \FemaleRattlesnake % \MaleRattlesnake % \FemaleBoa % \MaleBoa % \FourSpot % \SixSpot % \OrthogonalBars % \SixTs % \SixTwoOne % \ExchangedPeaks % \TwoTwistedPeaks % \FourTwistedPeaks % \ExchangedChickenFeet % \TwistedChickenFeet % \ExchangedRings % \TwistedRings % \EdgeHexagonTwo % \EdgeHexagonThree % \TomParksPattern % \RonsCubeInCube % \TwistedDuckFeet % \ExchangedDuckFeet % \Superflip %\end{verbatim} % % Note that the particular superflip sequence made available by this package % (shown in \texttt{rubikpatternsLIST.pdf}) is due to Reid (1995), and is detailed % on the Kociemba webpage \texttt{http://www.kociemba.org/math/oh.htm}. Indeed, this was the % first sequence to define the `20-move' (HTM) upper boundary for solving a Rubik cube % (see Rokicki \textit{et~al.}, 2013). % % The superflip configuration is also significant since it is its own inverse. % For example, the following two \verb!\RubikRotation! commands will generate the same % configuration (starting from a solved cube): %\begin{verbatim} % \RubikRotation{\superflip} % \RubikRotation{\superflip,} %\end{verbatim} % This property is shown as one of the examples in the Rubik bundle file \texttt{rubikexamples.pdf}. % % % % \section{Change history} % % \begin{itemize} % % \item Version 4.0 (March 2017) % % --- First release of this package. % % \end{itemize} % % % % \section{References} % \label{sec:references} % %\begin{itemize} % % \item Fridrich website (Fridrich J). % See the `Pretty patterns' webpage \url{http://www.ws.binghamton.edu/fridrich/ptrns.html} % % \item Kociemba website (Kociemba H). \url{http://www.kociemba.org/cube.htm} % {\newline}---for superflip see: \url{http://www.kociemba.org/math/oh.htm} % % \item Randelshofer website (Randelshofer W). Pretty patterns. % \url{http://www.randelshofer.ch/rubik/patterns/U080.01.html} % % \item Reid M. \ Patterns. \url{http://www.cflmath.com/Rubik/patterns.html} % % \item Reid M. (1995). Superflip requires 20 face turns. (January 1995) % \url{http://www.math.ucf.edu/~reid/Rubik/CubeLovers/} % (see Section~\ref{sec:superflip}) % {\newline}[cited from Rokicki \textit{et~al.}, 2013]. % {\newline}(Note: easier to use is the following html indexed version of the % archive of the Cube-Lovers usenet group (1982--1997) % \url{http://www.math.rwth-aachen.de/~Martin.Schoenert/Cube-Lovers/}) % % \item Rokicki T, Kociemba H, Davidson M and Dethridge J (2013). The diameter of the Rubik's % cube is twenty. \textit{SIAM.\ J.\ Discrete Math.}, \textbf{27}, 1082--1105. % \url{http://tomas.rokicki.com/rubik20.pdf} % %\end{itemize} % % % % % ^^A ================================================== % \StopEventually{\PrintIndex} % % % % \section[The code]{The code (\texttt{rubikpatterns.sty})} % % % \subsection{Package heading} % \label{sec:CodePackageHeading} % % \begin{macrocode} %<*rubikpatterns> \def\RPfileversion{5.0}% \def\RPfiledate{2018/02/25}% 25 February 2018 \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{rubikpatterns}[\RPfiledate\space (v\RPfileversion)] % \end{macrocode} % % % \begin{macro}{\rubikpatterns} % First we create a suitable logo % \begin{macrocode} \newcommand{\rubikpatterns}{\textsc{rubikpatterns}} % \end{macrocode} % \end{macro} % % \subsection{Patterns} % \label{sec:patternscode} % % % % % \subsubsection{Superflip} % \label{sec:superflip} % % This particular superflip sequence is from the Kociemba website (his Oh webpage). % It is due to Reid (1995). % \begin{macrocode} \newcommand{\Superflip}{[Superflip],Dp,R2,Fp,D2,F2,U2,Lp,R,Dp,R2,B,F,Rp,% U2,Lp,F2,Rp,U2,Rp,Up,<(20f*)>}% \newcommand{\superflip}{\Superflip} % \end{macrocode} % % % \subsubsection{Reid data} % % These named sequences are derived from the Reid website. % \begin{macrocode} \newcommand{\PonsAsinorum}{[PonsAsinorum],F2,B2,R2,L2,U2,D2,% <(12q*, 6f*)>}% \newcommand{\ponsasinorum}{\PonsAsinorum}% \newcommand{\CheckerboardsThree}% {[CheckerboardsThree],F,B2,Rp,D2,B,R,U,Dp,R,Lp,Dp,Fp,R2,D,F2,Bp,% <(20q*, 16f*), order 3>}% \newcommand{\checkerboardsthree}{\CheckerboardsThree}% \newcommand{\CheckerboardsSix}% {[CheckerboardsSix],R2,L2,U,B,L2,Dp,F,B2,R,Lp,Fp,B,R,D,F2,Lp,Up,% <(17f*, 22q), order 6>}% \newcommand{\checkerboardssix}{\CheckerboardsSix}% \newcommand{\Stripes}{[Stripes],F,U,F,R,L2,B,Dp,R,D2,L,Dp,B,R2,L,F,U,F,% <(20q*, 17f*)>}% \newcommand{\stripes}{\Stripes}% \newcommand{\CubeInCube}{[CubeInCube],F,L,F,Up,R,U,F2,L2,Up,Lp,B,Dp,Bp,L2,U,% <(18q*, 15f*)>}% \newcommand{\cubeincube}{\CubeInCube}% \newcommand{\CubeInCubeInCube}% {[CubeInCubeInCube],Fp,U,Bp,Rp,U,F2,U2,Fp,Up,F,U2,D,Bp,Dp,R2,B2,Up,% <(17f*, 22q)>}% \newcommand{\cubeincubeincube}{\CubeInCubeInCube}% \newcommand{\ChristmasCross}{[ChristmasCross],U,F,Bp,L2,U2,L2,Fp,B,U2,L2,U,% <(16q*, 11f*)>}% \newcommand{\christmascross}{\ChristmasCross}% \newcommand{\PlummersCross}% {[PlummersCross],R2,Lp,D,F2,Rp,Dp,Rp,L,Up,D,R,D,B2,Rp,U,D2,% <(20q*, 16f*)>}% \newcommand{\plummerscross}{\PlummersCross}% \newcommand{\Anaconda}{[Anaconda],L,U,Bp,Up,R,Lp,B,Rp,F,Bp,D,R,Dp,Fp,% <(14q*, 14f*)>}% \newcommand{\anaconda}{\Anaconda}% \newcommand{\Python}{[Python],F2,Rp,Bp,U,Rp,L,Fp,L,Fp,B,Dp,R,B,L2,% <(16q*, 14f*)>}% \newcommand{\python}{\Python}% \newcommand{\BlackMamba}{[BlackMamba],R,D,L,Fp,R,Lp,D,Rp,U,Dp,B,Up,Rp,Dp,% <(14q*, 14f*)>}% \newcommand{\blackmamba}{\BlackMamba}% \newcommand{\GreenMamba}{[GreenMamba],R,D,R,F,Rp,Fp,B,D,Rp,Up,Bp,U,D2,% <(14q*, 13f*)>}% \newcommand{\greenmamba}{\GreenMamba}% \newcommand{\FemaleRattlesnake}% {[FemaleRattlesnake],U2,Dp,L2,D,B,U,Bp,Rp,L2,U2,F,Up,F,R,% <(18q*, 14f*)>}% \newcommand{\femalerattlesnake}{\FemaleRattlesnake}% \newcommand{\MaleRattlesnake}% {[MaleRattlesnake],Rp,Fp,U,Fp,U2,R,L2,B,Up,Bp,Dp,L2,U2,D,% <(18q*, 14f*)>}% \newcommand{\malerattlesnake}{\MaleRattlesnake}% \newcommand{\FemaleBoa}{[FemaleBoa],R,Up,R2,U2,F,D2,R2,Up,Dp,R,Dp,Fp,% <(16q*, 12f*)>}% \newcommand{\femaleboa}{\FemaleBoa}% \newcommand{\MaleBoa}{[MaleBoa],F,D,Rp,U,D,R2,D2,Fp,U2,R2,U,Rp,% <(16q*, 12f*)>}% \newcommand{\maleboa}{\MaleBoa}% \newcommand{\FourSpot}{[FourSpot],F2,B2,U,Dp,R2,L2,U,Dp,% <(12q*, 8f*)>}% \newcommand{\fourspot}{\FourSpot}% \newcommand{\SixSpot}{[SixSpot],U,Dp,R,Lp,F,Bp,U,Dp,% <(8q*, 8f*)>}% \newcommand{\sixspot}{\SixSpot}% \newcommand{\OrthogonalBars}% {[OrthogonalBars],F,Rp,U,L,Fp,Lp,F,Up,R,U,Lp,Up,L,Fp,% <(14q*, 14f*)>}% \newcommand{\orthogonalbars}{\OrthogonalBars}% \newcommand{\SixTs}{[SixTs],F2,R2,U2,Fp,B,D2,L2,F,B,% <(14q*, 9f*)>}% \newcommand{\sixts}{\SixTs}% \newcommand{\SixTwoOne}{[SixTwoOne],U,B2,D2,L,Bp,Lp,Up,Lp,B,D2,B2,% <(15q*, 11f*)>}% \newcommand{\sixtwoone}{\SixTwoOne}% \newcommand{\ExchangedPeaks}% {[ExchangedPeaks],F2,R2,D,R2,U,D,F2,Dp,Rp,Dp,F,L2,Fp,D,R,Up,% <(16f*, 21q)>}% \newcommand{\exchangedpeaks}{\ExchangedPeaks}% \newcommand{\TwoTwistedPeaks}% {[TwoTwistedPeaks],F,D2,B,R,Bp,Lp,F,Dp,L2,F2,R,Fp,Rp,F2,Lp,Fp,% <(16f*, 20q)>}% \newcommand{\twotwistedpeaks}{\TwoTwistedPeaks}% \newcommand{\FourTwistedPeaks}% {[FourTwistedPeaks],Up,D,B,Rp,F,R,Bp,Lp,Fp,B,L,F,Rp,Bp,R,Fp,Up,D,% <(18q*, 18f*)>}% \newcommand{\fourtwistedpeaks}{\FourTwistedPeaks}% \newcommand{\ExchangedChickenFeet}% {[ExchangedChickenFeet],F,Lp,Dp,Bp,L,F,U,Fp,Dp,F,L2,Bp,Rp,U,L2,Dp,F,% <(19q*, 17f*)>}% \newcommand{\exchangedchickenfeet}{\ExchangedChickenFeet}% \newcommand{\TwistedChickenFeet}% {[TwistedChickenFeet],F,Lp,D,Fp,Up,B,U,F,Up,F,Rp,F2,L,Up,Rp,D2,% <(18q*, 16f*)>}% \newcommand{\twistedchickenfeet}{\TwistedChickenFeet}% \newcommand{\ExchangedRings}% {[ExchangedRings],F,U,Dp,Lp,B2,L,Up,D,F,U,R2,L2,Up,L2,F2,% <(15f*, 20q)>}% \newcommand{\exchangedrings}{\ExchangedRings}% \newcommand{\TwistedRings}% {[TwistedRings],F,D,Fp,D2,Lp,Bp,U,L,D,R,U,Lp,Fp,U,L,U2,% <(18q*, 16f*)>}% \newcommand{\twistedrings}{\TwistedRings}% \newcommand{\EdgeHexagonTwo}% {[EdgeHexagonTwo],U,B2,Up,Fp,Up,D,Lp,D2,L,U,Dp,F,Dp,L2,B2,Dp,% <(20q*, 16f*) order2>}% \newcommand{\edgehexagontwo}{\EdgeHexagonTwo}% \newcommand{\EdgeHexagonThree}% {[EdgeHexagonThree],F,L,B,U,L,F2,B2,Rp,F2,B2,Up,Bp,Lp,Fp,% <(14f*, 18q) order 3>}% \newcommand{\edgehexagonthree}{\EdgeHexagonThree}% \newcommand{\TomParksPattern}% {[TomParksPattern],L,U,F2,R,Lp,U2,Bp,U,D,B2,L,F,Bp,Rp,L,Fp,R,% <(20q*, 17f*)>}% \newcommand{\tomparkspattern}{\TomParksPattern}% \newcommand{\RonsCubeInCube}% {[RonsCubeInCube],L2,D2,Lp,D2,B2,L2,B2,Lp,D2,L2,B2,Lp,B2,% <(13f*, 23q)>}% \newcommand{\ronscubeincube}{\RonsCubeInCube}% \newcommand{\TwistedDuckFeet}% {[TwistedDuckFeet],F,Rp,B,R,U,Fp,Lp,Fp,U2,Lp,Up,D2,B,Dp,F,Bp,U2,% <(20q*, 17f*)>}% \newcommand{\twistedduckfeet}{\TwistedDuckFeet}% \newcommand{\ExchangedDuckFeet}% {[ExchangedDuckFeet],U,F,R2,Fp,Dp,R,U,B2,U2,Fp,R2,F,D,B2,R,Bp,% <(21q*, 16f*)>}% \newcommand{\exchangedduckfeet}{\ExchangedDuckFeet}% % \end{macrocode} % -------------------------- % End of this package % -------------------------- % \begin{macrocode} % % \end{macrocode} % % % % % \Finale % \endinput