% \iffalse % %<*driver> \ProvidesFile{contracard.dtx} % % %<*contracard-pkg> \NeedsTeXFormat{LaTeX2e}[1995/12/01] \ProvidesPackage{contracard}[2019/03/03 Package for typesetting called dances] % %<*contracard-cls> \NeedsTeXFormat{LaTeX2e}[1995/12/01] \ProvidesClass{contracard}[2019/03/03 Class for creating dance calling cards] \AtEndOfClass{\LoadClass{article}} % % %<*driver> \documentclass[a4paper]{ltxdoc} \usepackage{ifxetex,ifluatex} \usepackage{fancyvrb,hologo,framed,multicol,url,graphicx,cclicenses,pifont} \usepackage[enableidx]{contracard} \ifxetex \usepackage{unicode-math} \else \ifluatex \usepackage{unicode-math} \else \usepackage[utf8x]{inputenc} \fi \fi \usepackage[pdfborder=0, bookmarks, colorlinks=false, hidelinks]{hyperref} \usepackage[parfill]{parskip} \usepackage{bookmark} \usepackage[page,toc]{appendix} \fvset{gobble=2} \newenvironment*{exampledance}{% \vspace{3em} \begin{framed} \begin{minipage}[t][76.2mm][t]{\textwidth} }{% \end{minipage} \end{framed} } \newcommand*{\gittag}{% \immediate\write18{% rm gittag.tex 2> /dev/null; (git describe --tags --dirty || echo "v0.0") 2> /dev/null > gittag.tex }% \InputIfFileExists{gittag.tex}{}{}\unskip% \immediate\write18{% rm gittag.tex 2> /dev/null }% } \newcommand*\name[1]{\textsc{#1}} \newcommand*\fname[1]{\textsf{#1}} \newcommand*\pkg[1]{\textsf{#1}} \newcommand*\code[1]{\texttt{#1}} \newcommand*\regexp[1]{\texttt{#1}} \newcommand*\word[1]{\textit{#1}} \newcommand*{\XeLaTeX}{\hologo{XeLaTeX}} \newcommand*{\LuaLaTeX}{\hologo{LuaLaTeX}} \EnableCrossrefs \CodelineIndex \RecordChanges \begin{document} \DocInput{\jobname.dtx} \end{document} % % % \fi % % \GetFileInfo{contracard.dtx} % \makeatletter % \errorcontextlines=999 % % \title{The Contra Card Project} % \author{ % \name{Sam Whited}\\* % \texttt{sam@samwhited.com} % } % \date{\today\\*\gittag} % % \maketitle % \begin{exampledance} % \begin{contra}{Monarch Grove}{Martha Wild}{Duple becket} % \move{Slide left and circle left \textthreequarters\moveindex{Circle Left}\moveindex{Slide Left}} % \swing*[Neighbor]{8} % \longlines % \dosido*[Men]{8} % \allemande*[Men]{8}{left 1\textonehalf} % \move{Partner star promenade and butterfly whirl\moveindex{Star Promenade}\moveindex{Butterfly Whirl}} % \dosido*[Women]{8} % \swing[partner]{8} % \end{contra} % \end{exampledance} % \tableofcontents % \phantomsection % \addcontentsline{toc}{section}{\lodtitle} % \hypertarget{CC:LOD}{} % \listofdances % % \section{Introduction} % % The \textbf{Contra Card} project is designed to aid in the formatting and % typesetting of caller cards for traditional square and line dances. % % The project comprises a \LaTeX\ package (\fname{contracard.sty}) and a % \LaTeX\ class (\fname{contracard.cls}). The package provides the core % functionality of Contra Card while the class file acts as a convenience % wrapper for making calling cards. % % \subsection{About the source} % % Contributions are welcome, and the latest development version of the project % can always be found at \url{https://git.sr.ht/~samwhited/contracard}. % % \subsection{License} % % This project 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 opinion) any later version. The latest version of this license is in: % % \url{http://www.latex-project.org/lppl.txt} % % and version 1.3c or later is part of all distributions of \LaTeX\ version % 2008/05/04 or later. % % \subsection{Special thanks} % % \renewcommand{\thefootnote}{\fnsymbol{footnote}}% % \addtocounter{footnote}{1}% % Several people deserve a special thanks for their contributions to this % package. Most notably the various callers and dancers who responded to my % queries on the \href{http://www.sharedweight.net/}{Shared Weight}, % \href{http://groups.yahoo.com/neo/groups/trad-dance-callers/info}{Traditional % Dance Callers}, and \href{http://www.contradance.org/}{Chatahoochee Country % Dancers}, mailing lists. These comprise Andrea Nettleton, Bill Baritompa, Seth % Tepfer, Richard Hopkins, Chris Page, James Saxe, Mark Goodwin, Rob Harper, % Eric Black, Kalia Kliban, John Sweeney, Martha Wild\footnote{Dances by Martha % Wild used in this publication are reproduced from \textit{Calls of the Wild} % by special arrangement with the author.}, and Linda Leslie (in no particular % order). Also to Sarah Snyder, and all of my other favorite dance partners from % the Atlanta dance community. % % \begin{exampledance} % \begin{contra}{Lament To Sarah}{Sam Whited}{Duple improper} % \lines*[In your set, short] % \move[4]{open up across} % \rollawaysashay % \move[4]{Neighbor two hand turn}\unskip\moveindex{Two hand turn}% % % \move[8]{Cont.\ two hand turn}\unskip\moveindex{Two hand turn}% % \swing*[Melt into a]{8} % % \balanceand\petronella % \balanceand\petronella % \balanceand\petronella % \move[8]{Balance with your partner and two hand turn while rotating to the % right to end facing new neighbors}\unskip\moveindex{Balance}\moveindex{Two hand turn} % \notes{% % Open up with your neighbor in four steps, facing across with leads on the % right.% % } % \end{contra} % \end{exampledance} % % \StopEventually{} % \changes{0.1}{2013/02/09}{Created boilerplate for class} % \changes{0.3}{2013/02/20}{Split core functionality out into package} % \changes{0.4}{2013/02/22}{Support swung dances} % \changes{0.4}{2013/02/22}{Add list of dances} % \changes{0.4}{2013/02/22}{Add \pkg{tocloft} package to requirements} % \changes{1.0.0}{2013/09/09}{Start using \href{http://semver.org}{Semantic % Versioning}} % \changes{1.0.0}{2013/09/15}{Fix phrase separator issues} % % \section{Building and using \pkg{contracard}} % % \paragraph{Dependencies} The following dependencies are loaded by % \pkg{contracard} (you do not need to include them in your project, % \pkg{contracard} does this for you); before building the \pkg{contracard} % package you should verify that they are installed. % % \begin{macrocode} %<*contracard-pkg> \RequirePackage{calc,intcalc} \RequirePackage{ifthen} \RequirePackage{tocloft} \RequirePackage{textcomp} % % \end{macrocode} % % If you're using the class, you'll want the following additional dependencies: % % \begin{macrocode} %<*contracard-cls> \AtEndOfClass{\RequirePackage{geometry}} \AtEndOfClass{\RequirePackage[compact]{titlesec}} \AtEndOfClass{\RequirePackage{contracard}} % % \end{macrocode} % \begin{macrocode} %<*contracard-pkg> % \end{macrocode} % % \paragraph{Building \pkg{contracard}} Once you have all the required packages, % building \pkg{contracard} from source can be accomplished in multiple ways. If % the Makefile is present running \code{make help} will tell you everything you % need to know. To manually extract the files and generate the documentation % simply run \code{pdflatex} or \code{xelatex} against \fname{contracard.dtx}: % % \begin{Verbatim} % $ xelatex --shell-escape contracard.dtx % \end{Verbatim} % % The \code{-{}-shell-escape} option is only required if you want the output to % contain version information. This will also require that you have \pkg{git} % installed (and the git repo itself) as the version is determined by running: % % \begin{Verbatim} % $ git describe --tags --dirty % \end{Verbatim} % % \paragraph{Using \pkg{contracard}} Building results in two main files, a class % and a package. In general, if you want to make a calling card, use the % \pkg{contracard} class and if you want to print a contra dance in a book or % article, use a different class and require the \pkg{contracard} package. % % \subsection{Options} % % \hypertarget{CCPACKAGE:OPTIONS}{} % \begin{macro}{showcountbefore} % \begin{macro}{showcountafter} % \begin{macro}{enableidx} % \changes{1.0.0}{2013/09/08}{New option} % The package (or class) can also be loaded with the following options. For more % information about each option, see the command which it calls. % \begin{macrocode} \DeclareOption{showcountafter}{\showcountafter} \DeclareOption{showcountbefore}{\showcountbefore} \DeclareOption{enableidx}{\AtEndOfPackage{\enableidx}} % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % % \clearpage % \phantomsection % \part{The \pkg{contracard} package} % % \section{Formatting} % % These options determine how the dance will look. % % \begin{macro}{\defaultcontraenv} % \begin{macro}{\dancetitleenv} % \changes{0.1}{2013/02/14}{Allow user to format moves} % \changes{0.3}{2013/02/20}{Allow user to format dance title block} % By default, all contra moves and the title block are wrapped in the % \code{flushleft} environment. To change this you can renew % the following macros: % \begin{macrocode} \newcommand*{\defaultcontraenv}{flushleft} \newcommand*{\dancetitleenv}{flushleft} % \end{macrocode} % \end{macro} % \end{macro} % % \begin{macro}{\dancetitleformat} % \begin{macro}{\danceauthorformat} % \begin{macro}{\danceformformat} % \changes{0.3}{2013/02/20}{Allow the user to change the dance title format} % \changes{0.3}{2013/02/20}{Allow the user to change the dance form format} % To change the formatting of a dance's title, author, or form, redefine the % following macros: % \begin{macrocode} \newcommand*{\dancetitleformat}{\section*} \newcommand*{\danceauthorformat}{\subsection*} \newcommand*{\danceformformat}{\hspace{\fill}} % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % % \begin{macro}{\movedelimiter} % \changes{0.3}{2013/02/20}{Allow customizing the move delimiter character} % \begin{macro}{\partdelimiter} % \changes{0.3}{2013/02/20}{Allow customizing the part delimiter} % \begin{macro}{\midpartdelimiter} % \changes{0.3}{2013/02/20}{Allow customizing the mid-part delimiter} % These commands define delimiters that are used between moves, or at the midway % point in a part. % \begin{macrocode} \newcommand*{\movedelimiter}{,} \newcommand*{\partdelimiter}{.} \newcommand*{\midpartdelimiter}{;} % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % % \begin{macro}{\phraseseparator} % \changes{0.4}{2013/02/22}{Allow custom phrase separator character} % \begin{macro}{\phrasevspace} % \changes{0.4}{2013/02/22}{Allow custom phrase separation length} % The \code{\textbackslash phraseseparator} macro is inserted between every % musical phrase and --- by default --- inserts \code{\textbackslash % phrasevspace} amount of white space. % \begin{macrocode} \newlength{\phrasevspace} \setlength{\phrasevspace}{1em} \newcommand*{\phraseseparator}{\vspace{\phrasevspace}} % \end{macrocode} % \end{macro} % \end{macro} % % A dance with a centered title block, a custom mid-part delimiter (an em-dash % in this case), and a nice horticultural dingbat as the phrase separator can be % accomplished with: % % \begin{verbatim} % \renewcommand*{\dancetitleenv}{center} % \renewcommand*{\midpartdelimiter}{\ ---} % \renewcommand*{\phraseseparator}{\ding{167}} % \end{verbatim} % % and looks something like this: % % \begin{exampledance} % \renewcommand*{\dancetitleenv}{center}% % \renewcommand*{\midpartdelimiter}{\ ---}% % \renewcommand*{\phraseseparator}{\ding{167}}% % \begin{contra}{Code's Compiling}{Sam Whited}{Duple becket} % \dosido*[Neighbor]{8} % \seesaw*[Partner]{8} % \swing*[Shadow]{16} % \balanceand\petronella % \balanceand\petronella % \swing*[Partner]{8} % \rightandleftthrough*[Left diagonal:] % \notes{The Neighbor dosido into a partner see saw should be one fluid % motion. Resist spinning in the dosido, and start revolving slowly over your % right shoulder as you enter the see saw and everything will flow. Make sure % lines have \emph{lots} of space for the dosido.} % \vspace*{\fill} % \begin{flushright} % \href{http://creativecommons.org/licenses/by/3.0/}{% % \IfFileExists{by.png}{% % \includegraphics[width=1cm]{by.png}% % }{\cc\by}} % \end{flushright} % \end{contra} % \end{exampledance} % % \begin{macro}{\showcountbefore} % \changes{1.0.0}{2013/09/07}{Allow showing the count before each move} % \begin{macro}{\showcountafter} % \changes{1.0.0}{2013/09/07}{Allow showing the count after each move} % \begin{macro}{\hidecountbefore} % \changes{1.0.0}{2013/09/07}{Allow hiding the count before each move} % \begin{macro}{\hidecountafter} % \changes{1.0.0}{2013/09/07}{Allow hiding the count after each move} % These macros allow the user to show or hide the moves duration before or after % each move. % \begin{macrocode} \newcommand*{\showcountbefore}{\def\@showcountbefore{}} \newcommand*{\showcountafter}{\def\@showcountafter{}} \newcommand*{\hidecountbefore}{\let\@showcountbefore\undefined} \newcommand*{\hidecountafter}{\let\@showcountafter\undefined} % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \begin{macro}{\countleftbracket} % \changes{1.0.0}{2013/09/10}{Add ability to change count brackets} % \begin{macro}{\countrightbracket} % \changes{1.0.0}{2013/09/10}{Add ability to change count brackets} % These commands can be used to set the left and right brackets which are % inserted on around the count as discussed above. By default, they are set to % plain left and right parenthesis. Note that these commands take a single % argument (the new bracket) instead of simply being something that you redefine % like many of the other formatting commands. They are not used for inserting % the brackets themselves; just for changing them. % \begin{macrocode} \def\cc@countleftbracket{(} \def\cc@countrightbracket{)} \newcommand*{\countleftbracket}[1]{\def\cc@countleftbracket{#1}} \newcommand*{\countrightbracket}[1]{\def\cc@countrightbracket{#1}} % \end{macrocode} % \end{macro} % \end{macro} % % For instance, a dance with the count shown afterwards (and the default % brackets) looks like this: % % \begin{exampledance} % \showcountafter% % \begin{contra}{Whirling Dervish}{Sam Whited}{Duple improper} % \walkaround[neighbor 1\textthreequarters]{8} % \move[8]{Men half hey ricochet while ladies cross% % \unskip\moveindex{Hey for Four}% % \unskip\moveindex{Half Hey}% % \unskip\moveindex{Half Hey Ricochet}% % \unskip\moveindex{Hey}% % } % \swing[your partners all]{16} % \move[8]{Spin like a Whirling Dervish\moveindex{Whirling Dervish}} % \balanceand\petronella % \balanceand\move[4]{gents roll neighbor away with a half sashay\moveindex{Half % Sashay}\moveindex{Roll Away}\moveindex{Roll Away\ldots Half Sashay}} % \move[8]{Balance neighbor and left shoulder round 1 time to new % neighbors\moveindex{Balance}\moveindex{Walk around}\moveindex{Left shoulder round}} % \notes{A ``Whirling Dervish" is just a circle left in single file except % that you should spin over your left shoulder the entire time you're doing % it.} % \vspace*{\fill} % \begin{flushright} % \href{http://creativecommons.org/licenses/by/3.0/}{% % \IfFileExists{by.png}{% % \includegraphics[width=1cm]{by.png}% % }{\cc\by}} % \end{flushright} % \end{contra} % \end{exampledance} % % \begin{macro}{\setdefaultnotesenv} % \changes{1.0.0}{2013/09/10}{Allow changing the default notes environment} % \begin{macro}{\prenotevspace} % \changes{1.0.0}{2013/09/10}{Allow changing the default notes vspace} % You might have noticed the nicely formatted notes in the previous example. By % default, all notes are set using the \code{flushleft} environment, and with % \code{\textbackslash fill} amount of vspace before them. This can easily be % changed with this macro and length. % \begin{macrocode} \def\cc@defaultnotesenv{flushleft} \newcommand*{\setdefaultnotesenv}[1]{\def\cc@defaultnotesenv{#1}} \newlength{\prenotevspace} \setlength{\prenotevspace}{\fill} % \end{macrocode} % \end{macro} % \end{macro} % % \section{Counters} % % Lots of counters are used throughout Contra Card for various tasks. The % following counters do everything from keeping track of the timing, to counting % the number of moves in a dance. % % \subsection{Musical counts} % % \begin{macro}{dancecount} % \begin{macro}{partcount} % \changes{0.2}{2013/02/15}{Create a counter for the current musical part} % \changes{0.3}{2013/02/21}{Change to contain the count, not the part itself} % \begin{macro}{phrasecount} % \changes{0.2}{2013/02/15}{Create a counter for the current musical phrase} % \changes{0.3}{2013/02/21}{Change to contain the count, not the phrase itself} % \begin{macro}{dancepart} % \changes{0.3}{2013/02/21}{Create a new counter for the current phrase} % \begin{macro}{dancephrase} % \changes{0.3}{2013/02/21}{Create a new counter for the current phrase} % These counters help us keep track of the counts (or `steps') in the dance. The % \code{dancecount} is reset at the start of each new dance, the % \code{partcount} is reset at the begining of each part (eg.\ \code{A1} or % \code{B1}), and the \code{phrasecount} is reset every time the part changes % (eg.~from \code{A} to \code{B}). The \code{dancepart} and \code{dancephrase} % counters contain the number of the part of phrase in the dance (instead of the % number of steps). % \begin{macrocode} \newcounter{dancecount} \newcounter{partcount} \newcounter{phrasecount} \newcounter{dancepart} \newcounter{dancephrase} % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % % \begin{macro}{dancepartlength} % \changes{0.4}{2013/02/22}{Create a new counter for the part length} % \begin{macro}{dancephraselength} % \changes{0.4}{2013/02/22}{Create a new counter for the phrase length} % \begin{macro}{\resetdancepartlength} % \changes{1.0.0}{2013/08/12}{Add ability to easily reset counter} % \begin{macro}{\resetdancephraselength} % \changes{1.0.0}{2013/08/12}{Add ability to easily reset counter} % Most contra dances are composed of two 32 count phrases, each with two 16 % count parts, however, it's sometimes useful to change these lengths (for swung % dances and the like). It's important to fully understand how the move command % works before modifying these values. Changing just one or the other can have % unexpected consequences. You can set them back quickly afterwards with the % reset commands. % \begin{macrocode} \newcounter{dancepartlength} \newcounter{dancephraselength} \newcommand*{\resetdancepartlength}{\setcounter{dancepartlength}{16}} \newcommand*{\resetdancephraselength}{\setcounter{dancephraselength}{32}} \resetdancepartlength \resetdancephraselength % \end{macrocode} % For example, if we set the \code{dancepartlength} to 12 and the % \code{\textbackslash dancephraselength} to 24 (along with some minor tweaks % for clarity) like so: % % \begin{verbatim} % \setcounter{dancepartlength}{12} % \setcounter{dancephraselength}{24} % \showcountafter % \end{verbatim} % % We can create a nice mixer in waltz time: % % \begin{exampledance} % \setcounter{dancepartlength}{12} % \setcounter{dancephraselength}{24} % \begin{contra}{Turn Around Waltz}{Sam Whited}{Circle waltz} % \showcountafter % % \move[6]{Roll lady on left away}\moveindex{Roll Away} % \move[6]{Forward and back}\moveindex{Forward and Back} % \move[6]{Roll lady on left away}\moveindex{Roll Away} % \move[6]{Forward and back}\moveindex{Forward and Back} % \move[6]{Hands out and in, turn out}\moveindex{Turn Alone} % \move[6]{Hands in and out, turn in}\moveindex{Turn Alone} % \move[6]{Hands out and in ladies cast right}\moveindex{Cast Right} % \move[6]{Parallels or free waltz}\moveindex{Parallels} % % \notes{Repeat \textbf{BABB} if dancing to the Nanci Griffith cover of ``Turn % Around". Circles of 4 or 8 couples brings you back to your original partner % for free waltz at end; for 3 or 7 put partner on your left to start. Get % people into square formation, then ask them to merge squares to make things % easier.} % \end{contra} % \resetdancepartlength % \resetdancephraselength % \end{exampledance} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % % \begin{macro}{\resetdancephrase} % \begin{macro}{\resetdancepart} % \begin{macro}{\resetdancephrase*} % \begin{macro}{\resetdancepart*} % \changes{0.2}{2013/02/15}{Allow the user to reset the phrase} % \changes{0.3}{2013/02/21}{Change name of \code{\textbackslash progressed}} % The phrase will continue to increment (\code{A}, \code{B}, \code{C}) unless % the user resets it by calling \code{\textbackslash resetdancephrase}. The user % can also manually reset the part. If the value of the phrase or part would be % the same after resetting, no action is taken. You can use the splat version of % the commands to force a reset (eg.~even if the \code{dancephrase} counter is % already at 1, the \code{dancephrase} and \code{phrasecount} counters will % still be reset). % \begin{macrocode} \newcommand*{\resetdancephrase}{% \ifthenelse{\value{partcount}=16}{\newline}{}% \@ifstar{\@resetdancephraseStar}{\@resetdancephraseNoStar}% } \newcommand*{\@resetdancephraseStar}{% \setcounter{dancephrase}{1}% \setcounter{phrasecount}{0}% \setcounter{phrasemovenum}{0}% \resetdancepart*% } \newcommand*{\@resetdancephraseNoStar}{% \ifthenelse{\value{dancephrase}=1}{}{% \setcounter{dancephrase}{1}% \setcounter{phrasecount}{0}% \setcounter{phrasemovenum}{0}% \resetdancepart% }% } \newcommand*{\resetdancepart}{% \@ifstar{\@resetdancepartStar}{\@resetdancepartNoStar}% } \newcommand*{\@resetdancepartStar}{% \setcounter{dancepart}{1}% \setcounter{partcount}{0}% \setcounter{partmovenum}{0}% \setcounter{halfpartmovenum}{0}% } \newcommand*{\@resetdancepartNoStar}{% \ifthenelse{\value{dancepart}=1}{}{% \setcounter{dancepart}{1}% \setcounter{partcount}{0}% \setcounter{partmovenum}{0}% \setcounter{halfpartmovenum}{0}% }% } % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % % \begin{macro}{\newdancephrase} % \changes{0.3}{2013/02/21}{Allow user to manually start a new phrase} % \begin{macro}{\newdancepart} % \changes{0.3}{2013/02/21}{Allow user to manually start a new part} % The user can also manually start a new phrase or part: % \begin{macrocode} \newcommand*{\newdancephrase}{% \ifthenelse{\NOT\value{phrasecount}=0}{\par\phraseseparator\par}{}% \addtocounter{dancephrase}{1}% \setcounter{phrasecount}{0}% \setcounter{phrasemovenum}{0}% \resetdancepart*% } \newcommand*{\newdancepart}{% \par\nopagebreak% \addtocounter{dancepart}{1}% \setcounter{partcount}{0}% \setcounter{partmovenum}{0}% \setcounter{halfpartmovenum}{0}% } % \end{macrocode} % \end{macro} % \end{macro} % % To see how this can be useful consider the following blues contras by caller % (and all around cat's pajamas) Seth Tepfer. Each one comprises three 16 count % phrases (\code{A1}, \code{B1}, and \code{C1}). The first employs the % \code{\textbackslash newdancephrase} command to reset the phrase every 16 % counts, the second changes the \code{dancephraselength} and lets Contra Card % handle figuring out how to break up the phrases. Both methods produce the same % result. % % \begin{Verbatim} % \begin{contra}{Untitled Blues \textnumero\ 1}{Seth Tepfer}{Duple minor im.} % \setlength{\phrasevspace}{0em} % \renewcommand*{\partdelimiter}{:} % \walkaround*[Neighbor]{8} % \walkaround*[Ladies]{8} % \newdancephrase % \balanceand*[Partner]\swing{12} % \newdancephrase % \ladieschain % \starleft{8} % \vspace*{\fill} % \begin{flushright} % \href{http://creativecommons.org/licenses/by-nc/3.0/}{% % \IfFileExists{by-nc.png}{% % \includegraphics[width=1cm]{by-nc.png}% % }{\cc\bync}} % \end{flushright} % \end{contra} % \end{Verbatim} % % \begin{exampledance} % \begin{contra}{Untitled Blues \textnumero\ 1}{Seth Tepfer}{Duple minor im.} % \setlength{\phrasevspace}{0em} % \renewcommand*{\partdelimiter}{:} % \walkaround*[Neighbor]{8} % \walkaround*[Ladies]{8} % \newdancephrase % \balanceand*[Partner]\swing{12} % \newdancephrase % \ladieschain % \starleft{8} % \vspace*{\fill} % \begin{flushright} % \href{http://creativecommons.org/licenses/by-nc/3.0/}{% % \IfFileExists{by-nc.png}{% % \includegraphics[width=1cm]{by-nc.png}% % }{\cc\bync}} % \end{flushright} % \end{contra} % \end{exampledance} % % \clearpage % \begin{Verbatim} % \begin{contra}{Untitled Blues \textnumero\ 2}{Seth Tepfer}{Duple minor im.} % \setlength{\phrasevspace}{0em} % \renewcommand*{\partdelimiter}{:} % \setcounter{dancephraselength}{16} % % \walkaround*[Neighbor]{8} % \move[8]{Gents allemande\moveindex{Allemande} left 1\textonehalf} % \balanceand*[Partner]\swing{12} % \move[8]{\textonehalf\ promenade\moveindex{Half Promenade}\moveindex{Promenade} across set} % \ladieschain % \vspace*{\fill} % \begin{flushright} % \href{http://creativecommons.org/licenses/by-nc/3.0/}{% % \IfFileExists{by-nc.png}{% % \includegraphics[width=1cm]{by-nc.png}% % }{\cc\bync}} % \end{flushright} % \end{contra} % \end{Verbatim} % % \begin{exampledance} % \begin{contra}{Untitled Blues \textnumero\ 2}{Seth Tepfer}{Duple minor im.} % \setlength{\phrasevspace}{0em} % \renewcommand*{\partdelimiter}{:} % \setcounter{dancephraselength}{16} % % \walkaround*[Neighbor]{8} % \move[8]{Gents allemande\moveindex{Allemande} left 1\textonehalf} % \balanceand*[Partner]\swing{12} % \move[8]{\textonehalf\ promenade\moveindex{Half Promenade}\moveindex{Promenade} across set} % \ladieschain % \vspace*{\fill} % \begin{flushright} % \href{http://creativecommons.org/licenses/by-nc/3.0/}{% % \IfFileExists{by-nc.png}{% % \includegraphics[width=1cm]{by-nc.png}% % }{\cc\bync}} % \end{flushright} % \end{contra} % \resetdancephraselength % \end{exampledance} % % \subsection{Move counts} % \begin{macro}{phrasemovenum} % \changes{1.0.0}{2013/09/05}{Add counter for the number of moves in the phrase} % \begin{macro}{partmovenum} % \changes{1.0.0}{2013/09/05}{Add counter for the number of moves in the part} % \begin{macro}{halfpartmovenum} % \changes{1.0.0}{2013/09/10}{Add counter for the number of moves in half the part} % \begin{macro}{dancemovenum} % \changes{1.0.0}{2013/09/05}{Add counter for the number of moves in the dance} % The following counters are used to keep track of the number of moves that have % occurred thus far in the given dance, phrase, or part. They are incremented % every time \code{\textbackslash move} is called. % \begin{macrocode} \newcounter{phrasemovenum} \newcounter{partmovenum} \newcounter{halfpartmovenum} \newcounter{dancemovenum} \setcounter{phrasemovenum}{0} \setcounter{partmovenum}{0} \setcounter{halfpartmovenum}{0} \setcounter{dancemovenum}{0} % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % % \section{The \code{contra} environment} % % \begin{macro}{contra} % \changes{0.1}{2013/02/14}{Create contra environment} % The contra environment is pretty simple. It resets the various counters, and % displays some information about the dance---if it is used inside of the % \pkg{contracard} class, it also clears the page and moves the dance form into % the header. % \begin{macrocode} \newenvironment{contra}[4][\defaultcontraenv]{% \global\def\dancetitle{\ignorespaces#2\unskip} \global\def\danceauthor{\ignorespaces#3\unskip} \global\def\danceform{\ignorespaces#4\unskip} \setlength{\parskip}{0.3em plus 0.2em minus 0.3em} \refstepcounter{dance} \addcontentsline{lod}{dance}{\protect\numberline{\thedance}\ignorespaces#2\unskip} \setcounter{dancecount}{0} \setcounter{dancemovenum}{0} \resetdancepart* \resetdancephrase* \ifdefined\@ccisclass\clearpage\fi% \ifthenelse{\isundefined{\imki@wrindexentry}}{% \index{\ignorespaces#4\unskip} }{% \index[dbt]{\ignorespaces#4\unskip} \index[dba]{\ignorespaces#3\unskip} }% \begin{\dancetitleenv} \ifdefined\@ccisclass% \pagestyle{myheadings} \thispagestyle{myheadings} \markboth{}{\danceformformat{\ignorespaces#4\unskip}} \else% {\danceformformat{\ignorespaces#4\unskip}}% \fi% {\dancetitleformat{\ignorespaces#2\unskip}}% {\danceauthorformat{\ignorespaces#3\unskip}}% \end{\dancetitleenv} \newcommand*{\@contraenv}{#1} \begin{\@contraenv} % \end{macrocode} % The next three lines are worth noting. Any new lines, vertical tabs, or form % feeds you introduce into your dance won't actually do anything. Contra Card % attempts to handle line breaks for your, and provides you with hook to insert % vertical space at the appropriate times. % \begin{macrocode} \catcode10=9\relax % New line \catcode11=9\relax % Vertical Tab \catcode12=9\relax % Form Feed }{% \end{\@contraenv} } % \end{macrocode} % \end{macro} % % \section{Moves} % % \subsection{The \code{\textbackslash move} command} % % \begin{macro}{\move} % \changes{0.1}{2013/02/14}{Add move command} % \changes{0.3}{2013/02/21}{Simplify dance logic using new counters} % \changes{1.0.0}{2013/09/10}{Improve indentation and line spacing} % \begin{macro}{\move*} % The meat of the \pkg{contracard} package is contained in the % \code{\textbackslash move} command. % This command takes in a move to display, and (optionally) the number of beats % the move takes. % If the count is not specified, 8 is used as the default. % \begin{macrocode} \newcommand*{\move}{\@ifstar\@moveStar\@moveNoStar} \newcommand*{\@moveStar}[2][8]{% \def\cc@moveStar{}\@moveNoStar[#1]{#2}\let\cc@moveStar\undefined% } \newlength{\cc@partsepwidth}% \newcommand*{\@balanceAnd}{\ignorespaces}% \newcommand*{\@extraCount}{0}% \newcounter{movecount}% \newcommand*{\@moveNoStar}[2][8]{% \setlength{\parindent}{0pt}% \setlength{\cc@partsepwidth}{\widthof{\Alph{dancephrase}\arabic{dancepart}% \partdelimiter\ }}% \setlength{\hangindent}{\cc@partsepwidth}% \ifthenelse{\value{phrasecount}=\value{dancephraselength}}{% \ifthenelse{\NOT\(#1=0\)}{% \newdancephrase% }{}% }{% \ifthenelse{\(\value{partcount}=\value{dancepartlength}\)% \AND\NOT\(#1=0\)}{% \newdancepart% }{}% }% \ifthenelse{\value{partmovenum}=0}{% \Alph{dancephrase}\arabic{dancepart}\partdelimiter\ % }{}% \setcounter{movecount}{0}% \addtocounter{movecount}{#1}% \addtocounter{movecount}{\@extraCount}% \addtocounter{dancecount}{\value{movecount}}% \addtocounter{phrasecount}{\value{movecount}}% \addtocounter{partcount}{\value{movecount}}% \addtocounter{phrasemovenum}{1}% \addtocounter{partmovenum}{1}% \addtocounter{halfpartmovenum}{1}% \addtocounter{dancemovenum}{1}% \ifthenelse{\isundefined{\@showcountbefore}\OR\(\value{movecount}=0\)}{% \relax% }{\cc@countleftbracket\ignorespaces\themovecount\unskip\cc@countrightbracket~}% \@balanceAnd#2\unskip% \ifthenelse{\isundefined{\@showcountafter}\OR\(\value{movecount}=0\)}{% \relax% }{~\cc@countleftbracket\ignorespaces\themovecount\unskip\cc@countrightbracket}% \ifthenelse{\NOT\(\value{movecount}=0\)}{% \ifthenelse{\value{partcount}=\intcalcDiv{\value{dancepartlength}}{2}}{% \setcounter{halfpartmovenum}{0}% }{}% \ifx\cc@moveStar\undefined% \ifthenelse{\value{partcount}=\intcalcDiv{\value{dancepartlength}}{2}}{% \midpartdelimiter\looseness=-1\linebreak[1]\space\nopagebreak\ignorespaces% }{% \ifthenelse{\NOT\value{partcount}=\value{dancepartlength}}{% \movedelimiter\nolinebreak[2]\space\nopagebreak\ignorespaces% }{}% }% \fi% }{}% \renewcommand*{\@balanceAnd}{\ignorespaces}% \renewcommand*{\@extraCount}{0}% } % \end{macrocode} % \end{macro} % \end{macro} % % \subsection{Move shortcuts} % % Often you may find yourself copy and pasting common moves that have the same % timing, wording, etc. For times like this \pkg{contracard} provides a number % of shortcut macros. % % \begin{macro}{\allemande} % \changes{1.0.0}{2013/09/05}{Add move shortcut} % \begin{macro}{\allemande*} % \changes{1.0.0}{2013/09/05}{Add move shortcut} % The allemande macro takes two mandatory arguments: the count, and the % direction to allemande. It also takes the person to allemande (eg.~shadow, % partner, neighbor, etc.) as an optional first argument. % \begin{macrocode} \newcommand*{\allemande}{% \moveindex{Allemande}% \@ifstar\@allemandeStar\@allemandeNoStar% } \newcommand*{\@allemandeNoStar}[3][\unskip]{% \move[#2]{Allemande \ignorespaces#3\unskip\ \ignorespaces#1\unskip}% } \newcommand*{\@allemandeStar}[3][% \expandafter\expandafter\expandafter\MakeUppercase\@gobbletwo]{% \move[#2]{\ignorespaces#1\unskip\ allemande \ignorespaces#3\unskip}% } % \end{macrocode} % \end{macro} % \end{macro} % % \begin{macro}{\balance} % \changes{1.0.0}{2013/09/05}{Add move shortcut} % \begin{macro}{\balance*} % \changes{1.0.0}{2013/09/05}{Add move shortcut} % \begin{macro}{\balanceand} % \changes{1.0.0}{2013/09/05}{Add move shortcut} % \changes{2.0.0}{2019/02/28}{Now modifies count and text of next move} % \begin{macro}{\balanceand*} % \changes{1.0.0}{2013/09/05}{Add move shortcut} % \changes{2.0.0}{2019/02/28}{Now modifies count and text of next move} % The \code{\textbackslash balance} macro takes a single optional argument and % prints it after (or before if you use \code{\textbackslash balance*}) the word % `balance'. Balances always take up 4 beats. % If \code{\textbackslash balanceand} or \code{\textbackslash balanceand*} is % used, the balance won't be counted as a separate move. % Instead, its count (and the text) will be added to the next move used. % \begin{macrocode} \newcommand*{\balance}{% \moveindex{Balance}% \@ifstar\@balanceStar\@balanceNoStar% } \newcommand*{\@balanceNoStar}[1][\unskip]{% \move[4]{Balance \ignorespaces#1\unskip}% } \newcommand*{\@balanceStar}[1][% \expandafter\expandafter\expandafter\MakeUppercase\@gobbletwo]{% \move[4]{\ignorespaces#1\unskip\ balance}% } \newcommand*{\balanceand}{% \cc@checkphrasestart% \moveindex{Balance}% \@ifstar\@balanceandStar\@balanceandNoStar% } \newcommand*{\@balanceandNoStar}[1][]{% \renewcommand*{\@balanceAnd}{Balance and \ignorespaces#1\unskip\ \expandafter\ignorespaces\expandafter\MakeLowercase}% \renewcommand*{\@extraCount}{4}% } \newcommand*{\@balanceandStar}[1][% \expandafter\expandafter\expandafter\MakeUppercase\@gobbletwo]{% \renewcommand*{\@balanceAnd}{\ignorespaces#1\unskip\ balance and\ \expandafter\ignorespaces\expandafter\MakeLowercase}% \renewcommand*{\@extraCount}{4}% } % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % % \begin{macro}{\butterflywhirl} % \changes{1.0.0}{2013/09/06}{Add move shortcut} % \begin{macro}{\butterflywhirl*} % \changes{1.0.0}{2013/09/06}{Add move shortcut} % Both versions of \code{\textbackslash butterflywhirl} also take in an optional % string representing the other dance (eg.~partner, neighbor, etc.) and the % count as arguments. % \begin{macrocode} \newcommand*{\butterflywhirl}{% \moveindex{Butterfly Whirl}% \@ifstar\@butterflyStar\@butterflyNoStar% } \newcommand*{\@butterflyNoStar}[2][\unskip]{% \move[#2]{Butterfly whirl \ignorespaces#1\unskip}% } \newcommand*{\@butterflyStar}[2][% \expandafter\expandafter\expandafter\MakeUppercase\@gobbletwo]{% \move[#2]{\ignorespaces#1\unskip\ butterfly whirl}% } % \end{macrocode} % \end{macro} % \end{macro} % % \begin{macro}{\circleleft} % \changes{1.0.0}{2013/09/12}{Add move shortcut} % \begin{macro}{\circleleft*} % \changes{1.0.0}{2013/09/12}{Add move shortcut} % \begin{macro}{\circleright} % \changes{1.0.0}{2013/09/12}{Add move shortcut} % \begin{macro}{\circleright*} % \changes{1.0.0}{2013/09/12}{Add move shortcut} % Here are a few commands to deal with circles. As usual, there is an optional % argument (in case you need to say something like ``Gents circle left" or % ``Circle left 1 time `round") and a mandatory argument (the number of beats to % circle). % \begin{macrocode} \newcommand*{\circleleft}{% \moveindex{Circle Left}% \def\cc@dir{left}% \@ifstar\@circleStar\@circleNoStar% } \newcommand*{\circleright}{% \moveindex{Circle Right}% \def\cc@dir{right}% \@ifstar\@circleStar\@circleNoStar% } \newcommand*{\@circleNoStar}[2][\unskip]{% \move[#2]{Circle \cc@dir\ \ignorespaces#1\unskip}% } \newcommand*{\@circleStar}[2][% \expandafter\expandafter\expandafter\MakeUppercase\@gobbletwo]{% \move[#2]{\ignorespaces#1\unskip\ circle \cc@dir}% } % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % % \begin{macro}{\courtesyturn} % \changes{1.0.0}{2013/09/06}{Add move shortcut} % \begin{macro}{\courtesyturn*} % \changes{1.0.0}{2013/09/06}{Add move shortcut} % Like most of the move shortcut macros, these take an optional person to turn, % and the number of beats. The star version of the command tweaks the wording a % bit. % \begin{macrocode} \newcommand*{\courtesyturn}{% \moveindex{Courtesy Turn}% \@ifstar\@courtesyturnStar\@courtesyturnNoStar% } \newcommand*{\@courtesyturnNoStar}[2][\unskip]{% \move[#2]{Courtesy turn \ignorespaces#1\unskip}% } \newcommand*{\@courtesyturnStar}[2][% \expandafter\expandafter\expandafter\MakeUppercase\@gobbletwo]{% \move[#2]{\ignorespaces#1\unskip\ courtesy turn}% } % \end{macrocode} % \end{macro} % \end{macro} % % \begin{macro}{\dosido} % \changes{1.0.0}{2013/09/06}{Add move shortcut} % \begin{macro}{\dosido*} % \changes{1.0.0}{2013/09/06}{Add move shortcut} % \begin{macro}{\seesaw} % \changes{1.0.0}{2013/09/06}{Add move shortcut} % \begin{macro}{\seesaw*} % \changes{1.0.0}{2013/09/06}{Add move shortcut} % These commands create a dosido (aka \word{do-si-do}, \word{do-se-do}, % \word{dosado}, \word{dos-\`a-dos}, etc.) or a see saw (left shoulder dosido). % \begin{macrocode} \newcommand*{\dosido}{% \moveindex{\spellDosido}% \@ifstar\@dosidoStar\@dosidoNoStar% } \newcommand*{\@dosidoNoStar}[2][\unskip]{% \move[#2]{\spellDosido\ \ignorespaces#1\unskip}% } \newcommand*{\@dosidoStar}[2][% \expandafter\expandafter\expandafter\MakeUppercase\@gobbletwo]{% \move[#2]{\ignorespaces#1\unskip\ \spelldosido}% } \newcommand*{\seesaw}{% \moveindex{See Saw}% \@ifstar\@seesawStar\@seesawNoStar% } \newcommand*{\@seesawNoStar}[2][\unskip]{% \move[#2]{See saw \ignorespaces#1\unskip}% } \newcommand*{\@seesawStar}[2][% \expandafter\expandafter\expandafter\MakeUppercase\@gobbletwo]{% \move[#2]{\ignorespaces#1\unskip\ see saw}% } % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % % \begin{macro}{\walkaround} % \changes{2.0.0}{2019/02/17}{Rename move} % \begin{macro}{\walkaround*} % \changes{2.0.0}{2019/02/17}{Rename move} % \begin{macro}{\walkaroundleft} % \changes{2.0.0}{2019/02/17}{Rename move} % \begin{macro}{\walkaroundleft*} % \changes{2.0.0}{2019/02/17}{Rename move} % \begin{macro}{\walkaroundright} % \changes{2.0.0}{2019/02/17}{Rename move} % \begin{macro}{\walkaroundright*} % \changes{2.0.0}{2019/02/17}{Rename move} % Several different macros exist for creating walk arounds (sometimes right or % left shoulder round). % You can create a direction agnostic version with the \code{\textbackslash % walkaround} macro, while the \code{\textbackslash walkaroundleft} and % \code{\textbackslash walkaroundright} macros use the ``shoulder round" variant % and include the direction, they also index the move under the given direction. % % For information about the terminology, see appendix \ref{appendix:notation}. % \begin{macrocode} \newcommand*{\walkaround}{% \moveindex{Walk around}% \@ifstar\@walkAroundStar\@walkAroundNoStar% } \newcommand*{\walkaroundright}{% \moveindex{Walk around}% \moveindex{Right shoulder round}% \def\cc@thedir{right}% \@ifstar\@walkAroundDirStar\@walkAroundDirNoStar% } \newcommand*{\walkaroundleft}{% \moveindex{Walk around}% \moveindex{Left shoulder round}% \def\cc@thedir{left}% \@ifstar\@walkAroundDirStar\@walkAroundDirNoStar% } \newcommand*{\@walkAroundNoStar}[2][\unskip]{% \move[#2]{Walk around \ignorespaces#1\unskip}% } \newcommand*{\@walkAroundStar}[2][% \expandafter\expandafter\expandafter\MakeUppercase\@gobbletwo]{% \move[#2]{\ignorespaces#1\unskip\ walk around}% } \newcommand*{\@walkAroundDirNoStar}[2][\unskip]{% \move[#2]{\cc@thedir\ shoulder round \ignorespaces#1\unskip}% } \newcommand*{\@walkAroundDirStar}[2][% \expandafter\expandafter\expandafter\MakeUppercase\@gobbletwo]{% \move[#2]{\ignorespaces#1\unskip\ \cc@thedir\ shoulder round}% } % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % % \begin{macro}{\heyforfour} % \changes{1.0.0}{2013/09/12}{Add move shortcut} % \begin{macro}{\heyforfour*} % \changes{1.0.0}{2013/09/12}{Add move shortcut} % \begin{macro}{\halfhey} % \changes{1.0.0}{2013/09/12}{Add move shortcut} % \begin{macro}{\halfhey*} % \changes{1.0.0}{2013/09/12}{Add move shortcut} % \begin{macro}{\halfheyricochet} % \changes{1.0.0}{2013/09/12}{Add move shortcut} % \begin{macro}{\halfheyricochet*} % \changes{1.0.0}{2013/09/12}{Add move shortcut} % \begin{macro}{\fullhey} % \changes{1.0.0}{2013/09/12}{Add move shortcut} % \begin{macro}{\fullhey*} % \changes{1.0.0}{2013/09/12}{Add move shortcut} % \begin{macro}{\fullheyricochet} % \changes{2.0.0}{2019/03/03}{Add move shortcut} % \begin{macro}{\fullheyricochet*} % \changes{2.0.0}{2019/03/03}{Add move shortcut} % These macros produce various kinds of hey. Though `hey for four' is often used % to indicate `half a hey` we define `hey for four` and `full hey' to be the % same thing. % \begin{macrocode} \newcommand*{\heyforfour}{% \moveindex{Hey}% \moveindex{Hey for Four}% \moveindex{Full Hey}% \@ifstar\@heyforfourStar\@heyforfourNoStar% } \newcommand*{\@heyforfourNoStar}[1][\unskip]{% \move[16]{Hey for four \ignorespaces#1\unskip} } \newcommand*{\@heyforfourStar}[1][% \expandafter\expandafter\expandafter\MakeUppercase\@gobbletwo]{% \move[16]{\ignorespaces#1\unskip\ hey for four} } \newcommand*{\halfhey}{% \moveindex{Hey}% \moveindex{Hey for Four}% \moveindex{Half Hey}% \@ifstar\@halfheyStar\@halfheyNoStar% } \newcommand*{\@halfheyNoStar}[1][\unskip]{% \move[8]{Half a hey \ignorespaces#1\unskip} } \newcommand*{\@halfheyStar}[1][% \expandafter\expandafter\expandafter\MakeUppercase\@gobbletwo]{% \move[8]{\ignorespaces#1\unskip\ half a hey} } \newcommand*{\halfheyricochet}{% \moveindex{Hey}% \moveindex{Hey for Four}% \moveindex{Half Hey}% \moveindex{Half Hey Ricochet}% \@ifstar\@halfheyricochetStar\@halfheyricochetNoStar% } \newcommand*{\@halfheyricochetNoStar}[1][\unskip]{% \move[8]{Half hey ricochet \ignorespaces#1\unskip} } \newcommand*{\@halfheyricochetStar}[1][% \expandafter\expandafter\expandafter\MakeUppercase\@gobbletwo]{% \move[8]{\ignorespaces#1\unskip\ half hey ricochet} } \newcommand*{\fullhey}{% \moveindex{Hey}% \moveindex{Hey for Four}% \moveindex{Full Hey}% \@ifstar\@fullheyStar\@fullheyNoStar% } \newcommand*{\@fullheyNoStar}[1][\unskip]{% \move[16]{Full hey \ignorespaces#1\unskip} } \newcommand*{\@fullheyStar}[1][% \expandafter\expandafter\expandafter\MakeUppercase\@gobbletwo]{% \move[16]{\ignorespaces#1\unskip\ full hey} } \newcommand*{\fullheyricochet}{% \moveindex{Hey}% \moveindex{Hey for Four}% \moveindex{Full Hey}% \moveindex{Full Hey Ricochet}% \@ifstar\@fullheyricochetStar\@fullheyricochetNoStar% } \newcommand*{\@fullheyricochetNoStar}[1][\unskip]{% \move[16]{Full hey ricochet \ignorespaces#1\unskip} } \newcommand*{\@fullheyricochetStar}[1][% \expandafter\expandafter\expandafter\MakeUppercase\@gobbletwo]{% \move[16]{\ignorespaces#1\unskip\ full hey ricochet} } % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % % \begin{exampledance} % \begin{contra}{East Meets West}{Martha Wild}{Duple improper} % \longlines % \move{Walk around star \textthreequarters}\moveindex{Walk Around Star} % \move[16]{Right shoulder round and swing partner}\moveindex{Walk around}% % \moveindex{Right shoulder round}\moveindex{Swing} % \halfpromenade % \move{Hey}\moveindex{Hey}\moveindex{Hey for Four}\moveindex{Full Hey} % \move{(continue hey)} % \ladieschain % \end{contra} % \end{exampledance} % % \begin{macro}{\ladieschain} % \changes{1.0.0}{2013/09/06}{Add move shortcut} % \begin{macro}{\ladieschain*} % \changes{1.0.0}{2013/09/06}{Add move shortcut} % \begin{macro}{\menchain} % \changes{1.0.0}{2013/09/06}{Add move shortcut} % \begin{macro}{\menchain*} % \changes{1.0.0}{2013/09/06}{Add move shortcut} % \begin{macro}{\halfladieschain} % \changes{1.0.0}{2013/09/06}{Add move shortcut} % \begin{macro}{\halfladieschain*} % \changes{1.0.0}{2013/09/06}{Add move shortcut} % \begin{macro}{\halfmenchain} % \changes{1.0.0}{2013/09/06}{Add move shortcut} % \begin{macro}{\halfmenchain*} % \changes{1.0.0}{2013/09/06}{Add move shortcut} % \begin{macro}{\fullladieschain} % \changes{1.0.0}{2013/09/06}{Add move shortcut} % \begin{macro}{\fullladieschain*} % \changes{1.0.0}{2013/09/06}{Add move shortcut} % \begin{macro}{\fullmenchain} % \changes{1.0.0}{2013/09/06}{Add move shortcut} % \begin{macro}{\fullmenchain*} % \changes{1.0.0}{2013/09/06}{Add move shortcut} % The ladies chain (and it's less common variant for men) is actually a half of % a ladies chain. The full ladies chain is often simply called as two ladies % chains, however, the alternate full ladies chain commands are provided % anyways. A set of commands for half ladies chains are also provided; these are % exactly like the normal ladies chain commands except they include the word % `half' in the output. % \begin{macrocode} \newcommand*{\ladieschain}{% \moveindex{Ladies Chain}% \def\cc@who{ladies}% \@ifstar\@chainStar\@chainNoStar% } \newcommand*{\menchain}{% \moveindex{Men Chain}% \def\cc@who{men}% \@ifstar\@chainStar\@chainNoStar% } \newcommand*{\@chainNoStar}[1][\unskip]{% \move[8]{\expandafter\MakeUppercase\cc@who\ chain \ignorespaces#1\unskip}% } \newcommand*{\@chainStar}[1][% \expandafter\expandafter\expandafter\MakeUppercase\@gobbletwo]{% \move[8]{\ignorespaces#1\unskip\ \cc@who\ chain}% } \newcommand*{\halfladieschain}{% \moveindex{Half Ladies Chain}% \def\cc@who{ladies}% \@ifstar\@halfchainStar\@halfchainNoStar% } \newcommand*{\halfmenchain}{% \moveindex{Half Men Chain}% \def\cc@who{men}% \@ifstar\@halfchainStar\@halfchainNoStar% } \newcommand*{\@halfchainNoStar}[1][\unskip]{% \move[8]{\expandafter\MakeUppercase\cc@who\ half chain \ignorespaces#1\unskip}% } \newcommand*{\@halfchainStar}[1][% \expandafter\expandafter\expandafter\MakeUppercase\@gobbletwo]{% \move[8]{\ignorespaces#1\unskip\ \cc@who\ half chain}% } \newcommand*{\fullladieschain}{% \moveindex{Full Ladies Chain}% \def\cc@who{ladies}% \@ifstar\@fullchainStar\@fullchainNoStar% } \newcommand*{\fullmenchain}{% \moveindex{Full Men Chain}% \def\cc@who{men}% \@ifstar\@fullchainStar\@fullchainNoStar% } \newcommand*{\@fullchainNoStar}[1][\unskip]{% \move[16]{\expandafter\MakeUppercase\cc@who\ full chain \ignorespaces#1\unskip}% } \newcommand*{\@fullchainStar}[1][% \expandafter\expandafter\expandafter\MakeUppercase\@gobbletwo]{% \move[16]{\ignorespaces#1\unskip\ \cc@who\ full chain}% } % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % % \begin{macro}{\lines} % \changes{1.0.0}{2013/09/11}{Add move shortcut} % \begin{macro}{\lines*} % \changes{1.0.0}{2013/09/11}{Add move shortcut} % \begin{macro}{\longlines} % \changes{1.0.0}{2013/09/11}{Add move shortcut} % \begin{macro}{\longlines*} % \changes{1.0.0}{2013/09/11}{Add move shortcut} % The \code{\textbackslash lines} macro (lines forward and back) takes a single % optional argument: The type of lines (eg. `short', `long', etc.). Using the % starred version of the command tells the lines to go forward (4 counts) but % not back. Since ``long lines forward and back" is such a common figure, an % alias is provided just for that. % \begin{macrocode} \newcommand*{\lines}{% \moveindex{Lines Forward and Back}% \@ifstar\@linesStar\@linesNoStar% } \newcommand*{\@linesNoStar}[1][% \expandafter\expandafter\expandafter\MakeUppercase\@gobbletwo]{% \move[8]{\ignorespaces#1\unskip\ lines forward and back}% } \newcommand*{\@linesStar}[1][lines]{% \move[4]{\ignorespaces#1\unskip\ lines forward}% } \newcommand*{\longlines}{% \moveindex{Long Lines Forward and Back\ \seealso{Lines Forward and Back}{X}}% \@ifstar\@longlinesStar\@longlinesNoStar% } \newcommand*{\@longlinesNoStar}{% \lines[Long]% } \newcommand*{\@longlinesStar}{% \lines*[Long]% } % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % % \begin{macro}{\madrobin} % \changes{2.0.0}{2018/07/24}{New macro} % \begin{macro}{\madrobin*} % \changes{2.0.0}{2018/07/24}{New macro} % The Mad Robin (sometimes called ``Sashay 'round") always takes up 8 full % beats. % The star version of the command inserts the optional argument before the text % ``mad robin" instead of after it. % \begin{macrocode} \newcommand*{\madrobin}{% \moveindex{Mad Robin}% \@ifstar\@madrobinStar\@madrobinNoStar% } \newcommand*{\@madrobinNoStar}[1][\unskip]{% \move[8]{Mad robin \ignorespaces#1\unskip}% } \newcommand*{\@madrobinStar}[1][% \expandafter\expandafter\expandafter\MakeUppercase\@gobbletwo]{% \move[8]{\ignorespaces#1\unskip\ mad robin}% } % \end{macrocode} % \end{macro} % \end{macro} % % \begin{macro}{\petronella} % \changes{1.0.0}{2013/09/08}{Add move shortcut} % \begin{macro}{\petronella*} % \changes{1.0.0}{2013/09/08}{Add move shortcut} % \begin{macro}{\petronellanella} % \changes{1.1.0}{2018/07/21}{Add nella-nella petronella variants} % \begin{macro}{\petronellanella*} % \changes{1.1.0}{2018/07/21}{Add nella-nella petronella variants} % Petronella's are normally performed in rings of four, and aren't with another % individual, however, the \code{\textbackslash petronella} macro still takes a % single optional argument for those rare occasions when two individuals are % turning in a diamond pattern. % A petronella-nella has the same timing as a normal petronella but instead of % moving one place to the right dancers move two places. % \begin{exampledance} % \begin{contra}{Snowball Shimmy}{Seth Tepfer}{Duple becket} % \move[8]{Circle left all the way} % \allemande*[Gents]{8}{left 1\textonehalf} % \balanceand\swing[neighbor]{12} % \balanceand\petronella % \balanceand\petronellanella % \balanceand\swing[partner]{12} % \notes{nella-nella variant of Erik Weberg's Wasatch Wiggle} % \end{contra} % \end{exampledance} % \begin{macrocode} \newcommand*{\petronella}{% \moveindex{Petronella}% \@ifstar\@petronellaStar\@petronellaNoStar% } \newcommand*{\@petronellaNoStar}[1][\unskip]{% \move[4]{Petronella \ignorespaces#1\unskip}% } \newcommand*{\@petronellaStar}[1][% \expandafter\expandafter\expandafter\MakeUppercase\@gobbletwo]{% \move[4]{\ignorespaces#1\unskip\ petronella}% } \newcommand*{\petronellanella}{% \moveindex{Petronella}% \moveindex{Petronella-nella}% \@ifstar\@petronellanellaStar\@petronellanellaNoStar% } \newcommand*{\@petronellanellaNoStar}[1][\unskip]{% \move[4]{Petronella-nella \ignorespaces#1\unskip}% } \newcommand*{\@petronellanellaStar}[1][% \expandafter\expandafter\expandafter\MakeUppercase\@gobbletwo]{% \move[4]{\ignorespaces#1\unskip\ petronella-nella}% } % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % % \begin{macro}{\promenade} % \changes{1.0.0}{2013/09/06}{Add move shortcut} % \begin{macro}{\promenade*} % \changes{1.0.0}{2013/09/06}{Add move shortcut} % \begin{macro}{\halfpromenade} % \changes{1.0.0}{2013/09/06}{Add move shortcut} % \begin{macro}{\halfpromenade*} % \changes{1.0.0}{2013/09/06}{Add move shortcut} % The \code{\textbackslash promenade} and \code{\textbackslash halfpromenade} % commands work slightly differently. Both take the person (or direction) you're % promenading as the optional argument, but the \code{\textbackslash promenade} % command also takes a mandatory argument (the number of beats) while % \code{\textbackslash halfpromenade} command is fixed at 8 beats. % \begin{macrocode} \newcommand*{\promenade}{% \moveindex{Promenade} \@ifstar\@promenadeStar\@promenadeNoStar% } \newcommand*{\@promenadeNoStar}[2][\unskip]{% \move[#2]{Promenade \ignorespaces#1\unskip}% } \newcommand*{\@promenadeStar}[2][% \expandafter\expandafter\expandafter\MakeUppercase\@gobbletwo]{% \move[#2]{\ignorespaces#1\unskip\ promenade}% } \newcommand*{\halfpromenade}{% \moveindex{Promenade}% \moveindex{Half Promenade}% \@ifstar\@halfpromenadeStar\@halfpromenadeNoStar% } \newcommand*{\@halfpromenadeNoStar}[1][\unskip]{% \move[8]{Half promenade \ignorespaces#1\unskip}% } \newcommand*{\@halfpromenadeStar}[1][% \expandafter\expandafter\expandafter\MakeUppercase\@gobbletwo]{% \move[8]{\ignorespaces#1\unskip\ half promenade}% } % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % % \begin{macro}{\rightandleftthrough} % \changes{1.0.0}{2013/09/08}{Add move shortcut} % \begin{macro}{\rightandleftthrough*} % \changes{1.0.0}{2013/09/08}{Add move shortcut} % \begin{macro}{\rightsandlefts} % \changes{1.0.0}{2013/09/08}{Add move shortcut} % \begin{macro}{\rightsandlefts*} % \changes{1.0.0}{2013/09/08}{Add move shortcut} % Creates a right and left through (aka. rights and lefts). These always take up % 8 counts. % \begin{macrocode} \newcommand*{\rightandleftthrough}{% \moveindex{Right and left through}% \moveindex{Rights and lefts|seealso{Right and left through}}% \@ifstar\@rlStar\@rlNoStar% } \newcommand*{\rightsandlefts}{% \moveindex{Right and left through}% \moveindex{Rights and lefts|seealso{Right and left through}}% \@ifstar\@rlStar\@rlNoStar% } \newcommand*{\@rlNoStar}[1][\unskip]{% \move[8]{Right and left through \ignorespaces#1\unskip}% } \newcommand*{\@rlStar}[1][% \expandafter\expandafter\expandafter\MakeUppercase\@gobbletwo]{% \move[8]{\ignorespaces#1\unskip\ right and left through}% } % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % % \begin{macro}{\rollaway} % \changes{1.0.0}{2013/09/10}{Add move shortcut} % \changes{2.0.0}{2018/07/25}{Breaking change to allow complex notation} % \begin{macro}{\rollaway*} % \changes{1.0.0}{2013/09/10}{Add move shortcut} % \changes{2.0.0}{2018/07/25}{Breaking change to allow complex notation} % \begin{macro}{\rollawaysashay} % \changes{2.0.0}{2018/07/25}{Renamed from ``\texttt{\textbackslash rollawayhalfsashay}''} % \begin{macro}{\rollawaysashay*} % \changes{2.0.0}{2018/07/25}{Renamed from ``\texttt{\textbackslash rollawayhalfsashay*}''} % ``Roll away" and ``roll away with a half sashay" may sound similar, but the % macros that produce them are a bit different. The \code{\textbackslash % rollaway} macro works exactly like most macros here: It takes a single % optional argument, and the star version rewords things a bit (it takes no % count argument since that's always 4 beats for this figure). % The \code{\textbackslash rollawaysashay} macro on the other hand, takes a % single optional argument unless you use the splat version in which case it % takes a single optional argument \emph{and} a required argument. % This allows you to reword things (just like the other commands) by leaving off % the optional argument, but also allows you to make more complicated roll aways % such as \code{\textbackslash rollawaysashay*{[the gents]}\{Ladies\}} which % would be typeset as: ``Ladies roll the gents away with a half sashay". % \begin{macrocode} \newcommand*{\rollaway}{% \moveindex{Roll away}% \@ifstar\@rollawayStar\@rollawayNoStar% } \newcommand*{\rollawaysashay}{% \moveindex{Roll Away}% \moveindex{Roll Away with a Half Sashay}% \moveindex{Half Sashay}% \@ifstar\@rawhsStar\@rawhsNoStar% } \newcommand*{\@rollawayNoStar}[1][\unskip]{% \move[4]{Roll \ignorespaces#1\unskip\ away}% } \newcommand*{\@rollawayStar}[3][\unskip]{% \move[4]{\ignorespaces#2\unskip\ roll \ignorespaces#3\unskip\ away \ignorespaces#1\unskip}% } \newcommand*{\@rawhsNoStar}[1][\unskip]{% \move[4]{Roll \ignorespaces#1\unskip\ away with a half sashay}% } \newcommand*{\@rawhsStar}[3][\unskip]{% \move[4]{\ignorespaces#2\unskip\ roll \ignorespaces#3\unskip\ away with a half sashay \ignorespaces#1\unskip}% } % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % % \begin{macro}{\starleft} % \changes{1.0.0}{2013/09/09}{Add move shortcut} % \begin{macro}{\starleft*} % \changes{1.0.0}{2013/09/09}{Add move shortcut} % \begin{macro}{\starright} % \changes{1.0.0}{2013/09/09}{Add move shortcut} % \begin{macro}{\starright*} % \changes{1.0.0}{2013/09/09}{Add move shortcut} % Though `star left' and `star right' are really the same move (in different % directions), there are two separate macros since there aren't any other % directions you can star. % \begin{macrocode} \newcommand*{\starleft}{% \moveindex{Star}% \moveindex{Left hand star}% \def\cc@dir{Left}% \@ifstar\@starStar\@starNoStar% } \newcommand*{\starright}{% \moveindex{Star}% \moveindex{Right hand star}% \def\cc@dir{right}% \@ifstar\@starStar\@starNoStar% } \newcommand*{\@starNoStar}[1]{% \move[#1]{\cc@dir\ hand star}% } \newcommand*{\@starStar}[1]{% \move[#1]{Star \cc@dir}% } % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % % \begin{macro}{\sashay} % \changes{1.0.0}{2013/09/10}{Add move shortcut} % \begin{macro}{\sashay*} % \changes{1.0.0}{2013/09/10}{Add move shortcut} % The sashay command, like \code{\textbackslash rollawaysashay} takes a % different number of arguments if you use the starred version. % The normal version takes an optional argument and the required count, while % the starred version takes the same optional argument, the required count, and % another required argument. % For instance, \code{\textbackslash sashay*{[down and back]}\{8\}\{Ladies\}} % would create the move: ``Ladies sashay down and back''. % \begin{macrocode} \newcommand*{\sashay}{% \moveindex{Sashay}% \@ifstar\@sashayStar\@sashayNoStar% } \newcommand*{\@sashayNoStar}[2][\unskip]{% \move[#2]{Sashay \ignorespaces#1\unskip}% } \newcommand*{\@sashayStar}[3][\unskip]{% \move[#2]{\ignorespaces#3\unskip\ sashay \ignorespaces#1\unskip}% } % \end{macrocode} % \end{macro} % \end{macro} % % \begin{macro}{\swing} % \changes{1.0.0}{2013/09/06}{Add move shortcut} % \begin{macro}{\swing*} % \changes{1.0.0}{2013/09/06}{Add move shortcut} % Creates a basic swing. Probably the most common move in modern contra dance, % and also one of the simplest commands in this package. % \begin{macrocode} \newcommand*{\swing}{% \moveindex{Swing}% \@ifstar\@swingStar\@swingNoStar% } \newcommand*{\@swingNoStar}[2][\unskip]{% \move[#2]{Swing \ignorespaces#1\unskip}% } \newcommand*{\@swingStar}[2][% \expandafter\expandafter\expandafter\MakeUppercase\@gobbletwo]{% \move[#2]{\ignorespaces#1\unskip\ swing}% } % \end{macrocode} % \end{macro} % \end{macro} % % \begin{macro}{\turnalone} % \changes{1.0.0}{2013/09/10}{Add move shortcut} % \begin{macro}{\turnalone*} % \changes{1.0.0}{2013/09/10}{Add move shortcut} % \begin{macro}{\turncouple} % \changes{1.0.0}{2013/09/10}{Add move shortcut} % \begin{macro}{\turncouple*} % \changes{1.0.0}{2013/09/10}{Add move shortcut} % \begin{macro}{\turntogether} % \changes{1.0.0}{2013/09/10}{Add move shortcut} % \begin{macro}{\turntogether*} % \changes{1.0.0}{2013/09/10}{Add move shortcut} % ``Turn alone" and ``Turn as a couple" aren't exactly dance figures; just % directions that are often placed at the end of other figures. For this reason, % they all take up 0 logical counts of music and should be prepended to other % commands. The normal commands take an optional argument which can be used to % add some text after `alone' or `couple'. The starred version of each command % is exactly the same, except that it also has a required argument, a number of % counts (for those times when you want it to actually take up time in the music % and not just be part of another move). % \begin{macrocode} \newcommand*{\turnalone}{% \moveindex{Turn Alone}% \def\cc@who{alone}% \@ifstar\@turnStar\@turnNoStar% } \newcommand*{\turncouple}{% \moveindex{Turn as a Couple}% \moveindex{Turn Together|see{Turn as a Couple}}% \def\cc@who{as a couple}% \@ifstar\@turnStar\@turnNoStar% } \newcommand*{\turntogether}{% \moveindex{Turn as a Couple}% \moveindex{Turn Together|see{Turn as a Couple}}% \def\cc@who{together}% \@ifstar\@turnStar\@turnNoStar% } \newcommand*{\@turnNoStar}[1][\unskip]{% \cc@checkphrasestart% \move*[0]{Turn \cc@who\ \ignorespaces#1\unskip\ \ \ignorespaces}% } \newcommand*{\@turnStar}[2][\unskip]{% \move[#2]{Turn \cc@who\ \ignorespaces#1\unskip}% } % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % % \begin{macro}{\twirltoswap} % \changes{1.0.0}{2013/09/11}{Add move shortcut} % \begin{macro}{\californiatwirl} % \changes{1.0.0}{2013/09/11}{Add move shortcut} % \begin{macro}{\starthrough} % \changes{1.0.0}{2013/09/11}{Add move shortcut} % \begin{macro}{\starthru} % \changes{1.0.0}{2013/09/11}{Add move shortcut} % \begin{macro}{\boxthegnat} % \changes{1.0.0}{2013/09/11}{Add move shortcut} % \begin{macro}{\swattheflea} % \changes{1.0.0}{2013/09/11}{Add move shortcut} % \begin{macro}{\jerseytwirl} % \changes{1.0.0}{2013/09/11}{Add move shortcut} % \begin{macro}{\arizonatwirl} % \changes{1.0.0}{2013/09/11}{Add move shortcut} % ``Twirl to Swap" is probably in the running for having the most variations of % any Contra dance move. A few of the more common ones are presented here. They % don't take any arguments, and there aren't any starred versions. Just simple, % 4 count moves. % \begin{macrocode} \newcommand*{\twirltoswap}{% \moveindex{Twirl to Swap}% \move[4]{Twirl to swap}% } \newcommand*{\californiatwirl}{% \moveindex{California Twirl}% \move[4]{California twirl}% } \newcommand*{\starthrough}{% \moveindex{Star Through}% \move[4]{Star through}% } \newcommand*{\starthru}{% \moveindex{Star Thru|see{Star Through}}% \moveindex{Star Through}% \move[4]{Star thru}% } \newcommand*{\boxthegnat}{% \moveindex{Box the Gnat}% \move[4]{Box the gnat}% } \newcommand*{\swattheflea}{% \moveindex{Swat the Flea}% \move[4]{Swat the flea}% } \newcommand*{\jerseytwirl}{% \moveindex{Jersey Twirl}% \move[4]{Jersey twirl}% } \newcommand*{\arizonatwirl}{% \moveindex{Arizona Twirl}% \move[4]{Arizona twirl}% } % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % % \begin{macro}{\downthehall} % \changes{1.0.0}{2013/09/12}{Add move shortcut} % \begin{macro}{\downthehall*} % \changes{1.0.0}{2013/09/12}{Add move shortcut} % \begin{macro}{\upthehall} % \changes{1.0.0}{2013/09/12}{Add move shortcut} % \begin{macro}{\upthehall*} % \changes{1.0.0}{2013/09/12}{Add move shortcut} % Up and down the hall are often counted as a single move (sometimes with a % `turn alone' or similar in between). You may want to use the % \code{\textbackslash move} command to define your own versions of these % commands, but just in case some shortcuts are provided anyways. % \begin{macrocode} \newcommand*{\downthehall}{% \moveindex{Down the Hall}% \def\cc@dir{down}% \@ifstar\@walkthehallStar\@walkthehallNoStar% } \newcommand*{\upthehall}{% \moveindex{Up the Hall}% \def\cc@dir{up}% \@ifstar\@walkthehallStar\@walkthehallNoStar% } \newcommand*{\@walkthehallNoStar}[2][\unskip]{% \move[#2]{\expandafter\MakeUppercase\cc@dir\ the hall\ \ignorespaces#1\unskip}% } \newcommand*{\@walkthehallStar}[2][% \expandafter\expandafter\expandafter\MakeUppercase\@gobbletwo]{% \move[#2]{\ignorespaces#1\unskip\ \cc@dir\ the hall}% } % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % % \section{Dance information} % % \begin{macro}{\dancetitle} % \changes{1.0.0}{2013/09/11}{New macro} % \begin{macro}{\danceauthor} % \changes{1.0.0}{2013/09/11}{New macro} % \begin{macro}{\danceform} % \changes{1.0.0}{2013/09/11}{New macro} % These macros give information about the current (or previous, if you're not in % a dance environment) dance. They can be used for things like adding the dance % name and number to the header in a book, referencing the dance author in % footnotes, etc. % \begin{macrocode} \newcommand*{\dancetitle}{} \newcommand*{\danceauthor}{} \newcommand*{\danceform}{} % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % % \section{Lists and Indices} % % \subsection{Lists} % % Just as many classes allow you to build a table of contents, or a list of % figures, \pkg{contracard} allows you to create a list of dances. % % \begin{macro}{\listofdances} % The list of dances is created by a call to \code{\textbackslash listofdance} % by default, however, we define an alias: \code{\textbackslash listofdances} % to prevent confusion. % \begin{macrocode} \newlistof{dance}{lod}{\cfttoctitlefont\lodtitle} \newcommand*{\listofdances}{\listofdance} % \end{macrocode} % \end{macro} % % \begin{macro}{\lodtitle} % The title of the list of dances will be: % \begin{macrocode} \newcommand*{\lodtitle}{List of Dances} % \end{macrocode} % \end{macro} % % An \hyperlink{CC:LOD}{example list of dances} can be found at the beginning of % this document. % % \subsection{Indices} % \changes{1.0.0}{2013/09/08}{Added support for indices} % % \pkg{Contra Card} has the ability to produce several different indices that % might be useful for your book or collection of dances. They are: % % \begin{center} % \begin{tabular}{ l l } % Shortcut & Name \\ % \hline % dbt & \hyperlink{CC:DBT}{Dances by Type} \\ % dba & \hyperlink{CC:DBA}{Dances by Author} \\ % mvp & \hyperlink{CC:MVP}{Moves by Page} \\ % mvd & \hyperlink{CC:MVD}{Moves by Dance} \\ % \end{tabular} % \end{center} % % An example of each type of index can be found at the end of this document. % % \begin{macro}{\enableidx} % \changes{1.0.0}{2013/09/08}{New command} % Indexing is not turned on by default in Contra Card. When you enable it, the % \href{http://ctan.org/pkg/imakeidx}{\pkg{imakeidx}} package is loaded, and the % indices are created. This means that \code{\textbackslash enableidx} should % \emph{only} be called in the preamble. % \begin{macrocode} \newcommand*{\enableidx}{% \PassOptionsToPackage{splitindex}{imakeidx} \RequirePackage{imakeidx} \cc@createindices }% \newcommand*{\cc@createindices}{% \makeindex[name=\cc@dbt,title=\dbtname] \makeindex[name=\cc@dba,title=\dbaname] \makeindex[name=\cc@mvp,title=\mvpname] \makeindex[name=\cc@mvd,title=\mvdname] }% % \end{macrocode} % Because we use the \code{splitindex} option, you'll need to run the % \fname{splitindex} command against the index file. For instance, if your % project is called \fname{root.tex} you'll want to run: % % \begin{quote} % \code{\$ splitindex root} % \end{quote} % \end{macro} % % \begin{macro}{\pauseindexing} % \changes{1.0.0}{2013/09/10}{New command} % \begin{macro}{\resumeindexing} % \changes{1.0.0}{2013/09/10}{New command} % On occasion you might have a dance that you don't want to include in the index % for some reason. When this happens, you can temporarily disable indexing (and % later enable it again). % \begin{macrocode} \newcommand*{\pauseindexing}{\def\cc@indexingpaused{}} \newcommand*{\resumeindexing}{\let\cc@indexingpaused\undefined} % \end{macrocode} % \end{macro} % \end{macro} % % \begin{macro}{\cc@dbt} % \changes{1.0.0}{2013/09/08}{New command} % \begin{macro}{\cc@dba} % \changes{1.0.0}{2013/09/08}{New command} % \begin{macro}{\cc@mvp} % \changes{1.0.0}{2013/09/08}{New command} % \begin{macro}{\cc@mvd} % \changes{1.0.0}{2013/09/08}{New command} % Though you probably don't need to change this, the shortcut for each index can % be changed by redefining the following commands (before you turn on indexing % functionality): % \begin{macrocode} \newcommand*{\cc@dbt}{dbt} \newcommand*{\cc@dba}{dba} \newcommand*{\cc@mvp}{mvp} \newcommand*{\cc@mvd}{mvd} % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % % \begin{macro}{\dbtname} % \changes{1.0.0}{2013/09/08}{New command} % \begin{macro}{\dbaname} % \changes{1.0.0}{2013/09/08}{New command} % \begin{macro}{\mvpname} % \changes{1.0.0}{2013/09/08}{New command} % \begin{macro}{\mvdname} % \changes{1.0.0}{2013/09/08}{New command} % The names of each index can also be changed by redefining these commands. This % should also be done \emph{before} the indexing functionality is turned on. % This means that if you're loading \pkg{Contra Card} with the \code{enableidx} % package option, you shouldn't mess with these commands. % \begin{macrocode} \newcommand*{\dbtname}{Dances by Type} \newcommand*{\dbaname}{Dances by Author} \newcommand*{\mvpname}{Moves by Page} \newcommand*{\mvdname}{Moves by Dance} % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % % \begin{macro}{\moveindex} % \changes{1.0.0}{2013/09/08}{New command} % \begin{macro}{\moveindex*} % \changes{1.0.0}{2013/09/08}{New command} % For any of the move shortcut macros, index entries are automatically added for % the given move. However, for moves that you define yourself with the % \code{\textbackslash move} command, you'll need to add index entries manually. % This can be done with \code{\textbackslash moveindex}. This macro takes a % single argument (the index entry to add) and should only be called from within % the \code{contra} environment. The star version of the command also typesets % the first argument (so you don't have to write it twice). % \begin{macrocode} \newcommand*{\moveindex}{\@ifstar\moveindexStar\moveindexNoStar} \newcommand*{\moveindexStar}[1]{% #1% \ifthenelse{\isundefined{\cc@indexingpaused}}{% \ifthenelse{\isundefined{\imki@wrindexentry}}{% \index{#1}% }{% \index[mvp]{#1}% \imki@wrindexentry{mvd}{#1}{\arabic{dance}}% }% }{}% } \newcommand*{\moveindexNoStar}[1]{% \ifthenelse{\isundefined{\cc@indexingpaused}}{% \ifthenelse{\isundefined{\imki@wrindexentry}}{% \index{#1}% }{% \index[mvp]{#1}% \imki@wrindexentry{mvd}{#1}{\arabic{dance}}% }% }{}% } % \end{macrocode} % \end{macro} % \end{macro} % % \section{Helper macros} % % The following macros are used by the \pkg{contracard} package to perform % various tasks. Those that may also be of use to the contra dance writer have % been left unhidden. % % \begin{macro}{\timesaround} % \changes{1.0.0}{2013/09/05}{Split out ability to calculate times around} % Sometimes it's useful to calculate the approximate number of times a given % move can be done in a certain number of beats of music (eg.~the number of % times around one can allemande in 6 beats). For this, the \code{\textbackslash % timesaround} macro was created. It takes two arguments: the number of beats it % takes to go one time around (eg.~4 for an allemande) and the total number of % beats you have to work with. It spits out an integer, a fraction, or a mixed % number and a word matching the regular expression: % \regexp{/{[}1-9{]}*{[}\textonequarter\textonehalf% % \textthreequarters{]}?(\textbackslash\ times?)?/}. % % For example: \code{\textbackslash timesaround\{4\}\{6\}} produces: % ``\timesaround{4}{6}". % \begin{macrocode} \newcounter{timesaround} \newcounter{quartertimesaround} \newcommand*{\timesaround}[2]{% \setcounter{timesaround}{\intcalcDiv{\intcalcNum{#2}}{\intcalcNum{#1}}}% \setcounter{quartertimesaround}{% \intcalcMod{\intcalcNum{#2}}{\intcalcNum{#1}}% }% \ifthenelse{\value{timesaround}>0}{\arabic{timesaround}}{}% \ifthenelse{\value{quartertimesaround}=1}{\textonequarter}{% \ifthenelse{\value{quartertimesaround}=2}{\textonehalf}{% \ifthenelse{\value{quartertimesaround}=3}{\textthreequarters}{}% }% }% \ifthenelse{% \value{timesaround}>1\OR% \(\value{timesaround}=1\AND\NOT\value{quartertimesaround}=0\)% }{\ times}{% \ifthenelse{\value{timesaround}=1}{\ time}{}% }% }% % \end{macrocode} % \end{macro} % % \begin{macro}{\notes} % \changes{1.0.0}{2013/09/10}{Make adding notes easier} % This macro can be used to insert some nicely formatted notes at the end of % your calling cards. Just use it in the \code{contra} environment right after % your last move. % \begin{macrocode} \newcommand*{\notes}[2][\cc@defaultnotesenv]{% \par\nopagebreak\vspace*{\prenotevspace} \begin{\cc@defaultnotesenv} \setlength{\baselineskip}{1.1em plus 0.1em minus 0.2em} \def\cc@notestitle{\textbf{\ignorespaces Notes\unskip}}% \setlength{\parindent}{0pt}% \setlength{\cc@partsepwidth}{\widthof{\footnotesize \cc@notestitle~}}% \setlength{\hangindent}{\cc@partsepwidth}% {\footnotesize \cc@notestitle~\ignorespaces#2\unskip}% \end{\cc@defaultnotesenv} } % \end{macrocode} % \end{macro} % % \begin{macro}{\spelldosido} % \changes{1.0.0}{2013/09/12}{Change how Do-si-do is spelled easily} % \begin{macro}{\spellDosido} % \changes{1.0.0}{2013/09/12}{Change how Do-si-do is spelled easily} % \begin{macro}{\setdosidospelling} % \changes{1.0.0}{2013/09/12}{Change how Do-si-do is spelled easily} % These macros can be used for easily changing the spelling of `Do-si-do' % anywhere a \code{\textbackslash dosido} command is found (and in the index). % By default, we spell it the contra dance way (`Do-si-do'), however, this can % easily be changed. For example, running \code{\textbackslash % setdosidospelling\{dos-\textbackslash \`{}a-dos\}} will cause % \code{\textbackslash spellDosido} to render: `Dos-\`a-dos' and % \code{\textbackslash spelldosido} to render: `dos-\`a-dos'. % \begin{macrocode} \def\spelldosido{do-si-do} \def\spellDosido{Do-si-do} \newcommand*{\setdosidospelling}[1]{% \protected@edef\spelldosido{\expandafter\MakeLowercase#1} \protected@edef\spellDosido{\expandafter\MakeUppercase#1} } % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % % \begin{macro}{\cc@checkphrasestart} % This macro is used by various parts of contra card to reset the dance phrase % and part at the appropriate time. You should probably just move on and leave % it alone. % \begin{macrocode} \newcommand*{\cc@checkphrasestart}{% \ifthenelse{\value{phrasecount}=\value{dancephraselength}}{% \newdancephrase% }{% \ifthenelse{\(\value{partcount}=\value{dancepartlength}\)}{% \newdancepart% }{}% }% } % \end{macrocode} % \end{macro} % % \begin{macrocode} \ProcessOptions\relax % % \end{macrocode} % % \clearpage % \phantomsection % \part{The \pkg{contracard} class} % % \begin{macrocode} %<*contracard-cls> % \end{macrocode} % % The Contra Card project also provides a class (\fname{contracard.cls}) which % acts as a convenience wrapper around the core functionality provided by the % package. This is useful for generating calling cards, and saves you the % trouble of looking up standard card sizes and figuring out margins and where % to put headings and the like. % % \phantomsection % \hypertarget{CCCLASS:OPTIONS}{} % \subsection{Options} % % \begin{macro}{small} % \begin{macro}{medium} % \begin{macro}{large} % \begin{macro}{a7paper} % \begin{macro}{draft} % \changes{1.0.0}{2013/09/11}{Pass option through to \code{article} class} % The class can be loaded with any of the following options. The various size % options are summarized in the table below. Any unrecognized options are passed % to the \pkg{contracard} package. % % \begin{center} % \begin{tabular}{ l l l } % Option & Size (mm) & Size (in) \\ % \hline % \code{small} & 127.0 $\times$ 76.2 & 5.0 $\times$ 3.0 \\ % \code{medium} & 152.4 $\times$ 101.6 & 6.0 $\times$ 4.0 \\ % \code{large} & 203.2 $\times$ 27.0 & 8.0 $\times$ 5.0 \\ % \code{a7paper} & 105.0 $\times$ 74.0 & 4.1 $\times$ 2.9 \\ % \end{tabular} % \end{center} % \begin{macrocode} \AtBeginDocument{\large} \PassOptionsToPackage{% margin=0.5in,top=0.75in,paperwidth=6in,paperheight=4in% }{geometry}% \DeclareOption{small}{% \AtBeginDocument{% \titleformat{\section}{\normalsize\bfseries}{\thesection}{1em}{}% \titleformat{\subsection}{\normalsize}{\thesection}{1em}{}% } \PassOptionsToPackage{% margin=0.25in,top=0.75in,paperwidth=5in,paperheight=3in% }{geometry}% } \DeclareOption{medium}{% \AtBeginDocument{\large} \PassOptionsToPackage{% margin=0.5in,top=0.75in,paperwidth=6in,paperheight=4in% }{geometry}% } \DeclareOption{large}{% \AtBeginDocument{\Large} \PassOptionsToPackage{% margin=0.75in,top=1in,paperwidth=8in,paperheight=5in% }{geometry}% } \DeclareOption{a7paper}{% \AtBeginDocument{% \titleformat{\section}{\normalsize\bfseries}{\thesection}{1em}{}% \titleformat{\subsection}{\normalsize}{\thesection}{1em}{}% } \PassOptionsToPackage{% margin=5mm,top=15mm,paperwidth=105mm,paperheight=74mm% }{geometry}% } \DeclareOption{draft}{% \PassOptionsToClass{draft}{article}% } \DeclareOption*{% \PassOptionsToPackage{\CurrentOption}{contracard}% } % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % % \subsection{Environment setup} % % The \pkg{contracard} class does a little extra work to turn off headers, and % prevent page numbering: % % \begin{macrocode} \AtBeginDocument{\pagestyle{empty}} \AtBeginDocument{\pagenumbering{gobble}} % \end{macrocode} % It also defines a command \code{\textbackslash @ccisclass} to let the % \pkg{contracard} package know that it was called via the class: % \begin{macrocode} \newcommand*{\@ccisclass}{} \ProcessOptions\relax % % \end{macrocode} % % \cleardoublepage % \begin{appendices} % \section{On Notation} % \label{appendix:notation} % % \begin{macro}{\gypsy} % \changes{1.0.0}{2013/09/06}{Add move shortcut} % \begin{macro}{\gypsy*} % \changes{1.0.0}{2013/09/06}{Add move shortcut} % \begin{macro}{\gypsyleft} % \changes{1.0.0}{2013/09/06}{Add move shortcut} % \begin{macro}{\gypsyleft*} % \changes{1.0.0}{2013/09/06}{Add move shortcut} % \begin{macro}{\gypsyright} % \changes{1.0.0}{2013/09/06}{Add move shortcut} % \begin{macro}{\gypsyright*} % \changes{1.0.0}{2013/09/06}{Add move shortcut} % In some circles (pun intended) the move ``walk around" or ``right/left % shoulder round" (also ``spiral", ``gyre", ``eyes", etc.) is called a ``gypsy". % This is considered an ethnic slur by some groups of the Romani people. % While the contra term is not likely to have been derived from the slur, I see % no reason not to use an alternative. % In version 2 of this document---and in calling cards generated with this % package---I have chosen to use the term ``walk around" when no direction needs % to be specified, or ``right/left shoulder round" when it does. % This avoids creating an uncomfortable situation for a dancer hearing a word % that to them may be associated with hostility, and a lifetime of persecution. % It seems to me that providing a safe and welcoming dance environment is worth % the trivial inconvenience of having to learn a new move name. % % The commands listed in the margin have been renamed, for their alternatives % see \texttt{\textbackslash walkaround} and its variants. % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % % \section{Deprecated macros} % \label{appendix:deprecated} % % \begin{macro}{\longpetronella} % \changes{1.0.0}{2013/09/08}{Add move shortcut} % \changes{2.0.0}{2018/07/25}{Remove move} % \begin{macro}{\longpetronella*} % \changes{1.0.0}{2013/09/08}{Add move shortcut} % \changes{2.0.0}{2018/07/25}{Remove move} % \begin{macro}{\longpetronellanella} % \changes{1.1.0}{2018/07/21}{Add nella-nella petronella variants} % \changes{2.0.0}{2019/02/24}{Remove move} % \begin{macro}{\rollawayhalfsashay} % \changes{1.0.0}{2013/09/10}{Add move shortcut} % \changes{2.0.0}{2018/07/25}{Renamed to ``\texttt{\textbackslash rollawaysashay}''} % \begin{macro}{\rollawayhalfsashay*} % \changes{1.0.0}{2013/09/10}{Add move shortcut} % \changes{2.0.0}{2018/07/25}{Renamed to ``\texttt{\textbackslash rollawaysashay*}''} % \begin{macro}{\rawhs} % \changes{1.0.0}{2013/09/10}{Add move shortcut} % \changes{2.0.0}{2018/07/25}{Remove move} % \begin{macro}{\rawhs*} % \changes{1.0.0}{2013/09/10}{Add move shortcut} % \changes{2.0.0}{2018/07/25}{Remove move} % These macros (as well as the ones mentioned in appendix % \ref{appendix:notation}) have been removed from the package, resulting in a % major version bump. % If you were using any of these macros in your documents, you may wish to % continue using an older version of this package or update your documents % before upgrading. % For information about what version each macro was removed in see the change % log. % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % % \section{Upgrading from 1.x} % % Aside from removing deprecated macros, (see appendix % \ref{appendix:deprecated}), you will also want to search your dances for the % text \code{\textbackslash balanceand} and decrement the following move by 4 % counts. % Previously, the \code{\textbackslash balanceand} macros took up 0 logical % counts of music, but in version 2.0 it adds 4 counts to the next move. % Several new move shortcuts were also added in version 2.0 of this package % which may be able to replace uses of the generic \code{\textbackslash move} % macro in your dances. % For a full list, see the change history at the end of this document. % % \end{appendices} % % \bookmarksetup{startatroot} % \addtocontents{toc}{\bigskip} % \clearpage % \setcounter{IndexColumns}{2} % \phantomsection % \addcontentsline{toc}{section}{Index} % \PrintIndex % \clearpage % \phantomsection % \addcontentsline{toc}{section}{\dbtname} % \hypertarget{CC:DBT}{} % \printindex[\cc@dbt] % \clearpage % \phantomsection % \addcontentsline{toc}{section}{\dbaname} % \hypertarget{CC:DBA}{} % \printindex[\cc@dba] % \clearpage % \phantomsection % \addcontentsline{toc}{section}{\mvpname} % \hypertarget{CC:MVP}{} % \printindex[\cc@mvp] % \clearpage % \phantomsection % \addcontentsline{toc}{section}{\mvdname} % \hypertarget{CC:MVD}{} % \printindex[\cc@mvd] % % \makeatletter % \renewenvironment{theglossary}{% % \glossary@prologue % \setlength\emergencystretch{5em} % \GlossaryParms \let\item\@idxitem \ignorespaces}{} % \makeatother % \clearpage % \phantomsection % \addcontentsline{toc}{section}{Change History} % \PrintChanges % \Finale % % \iffalse %\fi \endinput