%% %% This is file `rubikrotation.sty', %% generated with the docstrip utility. %% %% The original source files were: %% %% rubikrotation.dtx (with options: `rubikrotation') %% %% ----------------------------------------------------------------- %% Authors: RWD Nickalls (dick@nickalls.org) %% and Apostolos Syropoulos (asyropoulos@yahoo.com) %% %% Copyright February 25, 2018 RWD Nickalls and A Syropoulos %% %% VERSION 5.0 %% %% 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: %% %% This work consists of the files listed in the README file. %% ----------------------------------------------------------------- %% %% This is a LaTeX/TikZ package for drawing Rubik cubes %% Please report errors or suggestions for improvement to %% %% RWD Nickalls (dick@nickalls.org) %% Apostolos Syropoulos (asyropoulos@yahoo.com) %% %% This package requires the basic TikZ package to be loaded already %% ------------------------------------------------------------------ %%% \CheckSum{332} %%% \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 \~} \def\RRfileversion{5.0}% \def\RRfiledate{2018/02/25}% 25 February 2018 \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{rubikrotation}[\RRfiledate\space (v\RRfileversion)] \@ifpackageloaded{rubikcube}{}{% \typeout{---rubikrotation requires the rubikcube package.}% }% \@ifpackageloaded{fancyvrb}{}{% \typeout{---rubikrotation requires the fancyvrb package% for VerbatimInput{} command.}% \RequirePackage{fancyvrb}} \@ifpackageloaded{ifluatex}{}{% \typeout{---rubikrotation requires the ifluatex package.}% \RequirePackage{ifluatex}} \ifluatex% \@ifpackageloaded{shellesc}{}{% \typeout{---rubikrotation requires the shellesc package to run using Lua\LaTeX.}% \RequirePackage{shellesc}} \fi% \newcommand{\rubikrotation}{\textsc{rubikrotation}} \newcommand{\Rubikrotation}{\textsc{Rubikrotation}} \newcommand{\@print}[1]{\immediate\write\outfile{#1}} {\catcode`\%=12 \global\def\rubikpercentchar{%}}% \newcommand{\@comment}{\rubikpercentchar\rubikpercentchar\space}% \newcommand{\@commentone}{\rubikpercentchar}% \newcommand{\rubikperlname}{rubikrotation} \newcommand{\rubikperlcmd}{\rubikperlname\space% -i rubikstate.dat -o rubikstateNEW.dat} \typeout{---checking for config file (rubikrotation.cfg)...} \IfFileExists{rubikrotation.cfg}{% \input{rubikrotation.cfg}% }{\typeout{---no config file available}% }% \typeout{---cleaning file rubikstateNEW.dat}% \newwrite\outfile% \immediate\openout\outfile=rubikstateNEW.dat% \@print{\@comment rubikstateNEW.dat}% \immediate\closeout\outfile% \typeout{---creating file rubikstateERRORS.dat}% \newwrite\outfile% \immediate\openout\outfile=rubikstateERRORS.dat% \@print{\@comment ShowErrors (rubikstateERRORS.dat)}% \@print{\@comment ---------------------------------}% \immediate\closeout\outfile% \typeout{---setting up newwrite for rubikrotation.sty to use...}% \newwrite\outfile% \newcommand{\@openstatefile}{\immediate\openout\outfile=rubikstate.dat} \newcommand{\@closestatefile}{\immediate\closeout\outfile} \newcommand{\@printrubikstate}{% \@print{cubesize,three}% \@print{up,\Ult,\Umt,\Urt,\Ulm,\Umm,\Urm,\Ulb,\Umb,\Urb}% \@print{down,\Dlt,\Dmt,\Drt,\Dlm,\Dmm,\Drm,\Dlb,\Dmb,\Drb}% \@print{left,\Llt,\Lmt,\Lrt,\Llm,\Lmm,\Lrm,\Llb,\Lmb,\Lrb}% \@print{right,\Rlt,\Rmt,\Rrt,\Rlm,\Rmm,\Rrm,\Rlb,\Rmb,\Rrb}% \@print{front,\Flt,\Fmt,\Frt,\Flm,\Fmm,\Frm,\Flb,\Fmb,\Frb}% \@print{back,\Blt,\Bmt,\Brt,\Blm,\Bmm,\Brm,\Blb,\Bmb,\Brb}% } \newcommand{\SaveRubikState}[1]{% \typeout{---NEW save command------------------}% \typeout{---command = SaveRubikState{#1}}% \typeout{---saving Rubik state data to file #1}% \immediate\openout\outfile=#1% \@print{\@comment filename: #1\@commentone}% \@print{\string\RubikFaceUp% {\Ult}{\Umt}{\Urt}{\Ulm}{\Umm}{\Urm}{\Ulb}{\Umb}{\Urb}\@commentone}% \@print{\string\RubikFaceDown% {\Dlt}{\Dmt}{\Drt}{\Dlm}{\Dmm}{\Drm}{\Dlb}{\Dmb}{\Drb}\@commentone}% \@print{\string\RubikFaceLeft% {\Llt}{\Lmt}{\Lrt}{\Llm}{\Lmm}{\Lrm}{\Llb}{\Lmb}{\Lrb}\@commentone}% \@print{\string\RubikFaceRight% {\Rlt}{\Rmt}{\Rrt}{\Rlm}{\Rmm}{\Rrm}{\Rlb}{\Rmb}{\Rrb}\@commentone}% \@print{\string\RubikFaceFront% {\Flt}{\Fmt}{\Frt}{\Flm}{\Fmm}{\Frm}{\Flb}{\Fmb}{\Frb}\@commentone}% \@print{\string\RubikFaceBack% {\Blt}{\Bmt}{\Brt}{\Blm}{\Bmm}{\Brm}{\Blb}{\Bmb}{\Brb}\@commentone}% \immediate\closeout\outfile% \typeout{-----------------------------------------}% }% %% Two macros detailed by Feuersaenger (2015) \long\def\@countingloop#1 in #2:#3#4{% #1=#2 % \@loopcounter{#1}{#3}{#4}% } %%-------------------------- \long\def\@loopcounter#1#2#3{% #3% \ifnum#1=#2 % \let\next=\relax% \else \advance#1 by1 % \def\next{\@loopcounter{#1}{#2}{#3}}% \fi \next } \newcommand{\RubikRotation}[2][1]{% \typeout{---TeX process---------------------------}% \typeout{---script = rubikrotation.sty v\RRfileversion\space (\RRfiledate)}% \typeout{---NEW rotation command}% \typeout{---command = RubikRotation[#1]{#2}}% \typeout{---writing current cube state to file rubikstate.dat}% \@openstatefile% open data file \@print{\@comment filename: rubikstate.dat}% \@print{\@comment written by rubikrotation.sty% =v\RRfileversion\space (\RRfiledate)}% \@printrubikstate% %% countingloop code from Feuersaenger (2015) \newcount\ourRRcounter% \@countingloop{\ourRRcounter} in 1:{#1}{% \immediate\write\outfile{rotation,#2}}% \@closestatefile% close data file \typeout{---CALLing Perl script (rubikrotation.pl)}% \immediate\write18{\rubikperlcmd}% \typeout{---inputting NEW datafile (data written by Perl script)}% \input{rubikstateNEW.dat}% \typeout{-----------------------------------------}% } \newcommand{\ShowErrors}{% \typeout{---ShowErrors: inputting file rubikstateERRORS.dat}% \VerbatimInput{rubikstateERRORS.dat}% } \newcommand{\ShowRubikErrors}{\ShowErrors} \newcommand{\CheckState}{% \typeout{---NEW check command------------------}% \typeout{---command = CheckState}% \typeout{---writing current cube state to file rubikstate.dat}% \@openstatefile% opens data file \@print{\@comment filename: rubikstate.dat}% \@printrubikstate% \immediate\write\outfile{checkstate}% \@closestatefile% close data file \typeout{---running Perl script (rubikrotation.pl)}% \immediate\write18{\rubikperlcmd}% \typeout{---inputting NEW datafile (data written by Perl script)}% \input{rubikstateNEW.dat}% \typeout{-----------------------------------------}% } \newcommand{\CheckRubikState}{\CheckState} \endinput %% %% End of file `rubikrotation.sty'.