diff options
author | Karl Berry <karl@freefriends.org> | 2013-09-17 22:09:57 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2013-09-17 22:09:57 +0000 |
commit | af181ba11c727ee9da985761d3e78d69c681c89b (patch) | |
tree | 43174e1c093560c333fd7a651cc96f702bd533c8 /Master/texmf-dist | |
parent | ab5fd6faea2045f0e74f9ec058ed133ea37c7c1b (diff) |
contracard (17sep13)
git-svn-id: svn://tug.org/texlive/trunk@31680 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist')
-rw-r--r-- | Master/texmf-dist/doc/latex/contracard/Makefile | 8 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/contracard/README | 35 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/contracard/README.md | 43 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/contracard/contracard-style.sty | 65 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/contracard/contracard.lod | 10 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/contracard/contracard.pdf | bin | 290433 -> 180387 bytes | |||
-rw-r--r-- | Master/texmf-dist/doc/latex/contracard/contracard.sty | 688 | ||||
-rw-r--r-- | Master/texmf-dist/source/latex/contracard/contracard.dtx | 2092 | ||||
-rw-r--r-- | Master/texmf-dist/tex/latex/contracard/contracard.cls | 19 |
9 files changed, 2584 insertions, 376 deletions
diff --git a/Master/texmf-dist/doc/latex/contracard/Makefile b/Master/texmf-dist/doc/latex/contracard/Makefile index af6a0772476..2338a069bde 100644 --- a/Master/texmf-dist/doc/latex/contracard/Makefile +++ b/Master/texmf-dist/doc/latex/contracard/Makefile @@ -61,10 +61,11 @@ CTAN_ZIP = $(NAME).zip TDS_ZIP = $(NAME).tds.zip ZIPS = $(CTAN_ZIP) $(TDS_ZIP) -DO_LATEX = pdflatex --interaction=nonstopmode $< $(REDIRECT) -DO_LATEX_WRITE18 = pdflatex --shell-escape --interaction=nonstopmode $< $(REDIRECT) +DO_LATEX = xelatex --interaction=nonstopmode $< $(REDIRECT) +DO_LATEX_WRITE18 = xelatex --shell-escape --interaction=nonstopmode $< $(REDIRECT) DO_TEX = tex --interaction=nonstopmode $< $(REDIRECT) -DO_MAKEINDEX = makeindex -s gind.ist $(subst .dtx,,$<) $(REDIRECT) 2>&1 +DO_MAKEINDEX = makeindex -s gind.ist $(subst .dtx,,$<) $(REDIRECT) 2>&1 +DO_SPLITINDEX = splitindex $(subst .dtx,,$<) $(REDIRECT) 2>&1 DO_MAKECHANGES = makeindex -s gglo.ist -o $(NAME).gls $(NAME).glo $< $(REDIRECT) 2>&1 all: $(GENERATED) @@ -86,6 +87,7 @@ by-nc.png: gendoc: $(DTX) resources @echo "Compiling documentation" $(DO_LATEX_WRITE18) + $(DO_SPLITINDEX) $(DO_MAKEINDEX) $(DO_MAKECHANGES) while ($(DO_LATEX_WRITE18) ; \ diff --git a/Master/texmf-dist/doc/latex/contracard/README b/Master/texmf-dist/doc/latex/contracard/README index 9eee7a8412d..dcf24dfc6fe 100644 --- a/Master/texmf-dist/doc/latex/contracard/README +++ b/Master/texmf-dist/doc/latex/contracard/README @@ -5,10 +5,39 @@ A LaTeX package for contra and square dance calls. ## Download Development of this package occurs primarily on -[GitHub](https://github.com/SamWhited/contra-card). Issues and pull requests +[GitHub](https://github.com/SamWhited/contracard). Issues and pull requests should be submitted there. -The current [release version](http://ctan.org/tex-archive/macros/latex/contrib/contracard) -of **Contra Card** and associated +The current [release +version](http://ctan.org/tex-archive/macros/latex/contrib/contracard) of +**Contra Card** and associated [documentation](http://mirrors.ctan.org/macros/latex/contrib/contracard/contracard.pdf) [PDF] is available from [CTAN](http://ctan.org/pkg/contracard). + +## License + +Copyright 2012 Samuel Whited + +This file may be distributed and/or modified under the conditions of the LaTeX +Project Public License, either version 1.3c of this license or (at your option) +any later version. The latest version of this license is in: + +http://www.latex-project.org/lppl.txt + +and version 1.3c or later is part of all distributions of LaTeX version +2008/05/04 or later. + +This work has the LPPL maintenance status `maintained'. + +Author: Sam Whited +Maintainer: Sam Whited +Website: https://samwhited.com +Contact: sam@samwhited.com +Public key: 0xEC2C9934 + +This work consists of this file contracard.dtx + and the derived files contracard.sty + and contracard.cls + and contracard.pdf + and README.md + and README diff --git a/Master/texmf-dist/doc/latex/contracard/README.md b/Master/texmf-dist/doc/latex/contracard/README.md new file mode 100644 index 00000000000..dcf24dfc6fe --- /dev/null +++ b/Master/texmf-dist/doc/latex/contracard/README.md @@ -0,0 +1,43 @@ +# Contra Card + +A LaTeX package for contra and square dance calls. + +## Download + +Development of this package occurs primarily on +[GitHub](https://github.com/SamWhited/contracard). Issues and pull requests +should be submitted there. + +The current [release +version](http://ctan.org/tex-archive/macros/latex/contrib/contracard) of +**Contra Card** and associated +[documentation](http://mirrors.ctan.org/macros/latex/contrib/contracard/contracard.pdf) +[PDF] is available from [CTAN](http://ctan.org/pkg/contracard). + +## License + +Copyright 2012 Samuel Whited + +This file may be distributed and/or modified under the conditions of the LaTeX +Project Public License, either version 1.3c of this license or (at your option) +any later version. The latest version of this license is in: + +http://www.latex-project.org/lppl.txt + +and version 1.3c or later is part of all distributions of LaTeX version +2008/05/04 or later. + +This work has the LPPL maintenance status `maintained'. + +Author: Sam Whited +Maintainer: Sam Whited +Website: https://samwhited.com +Contact: sam@samwhited.com +Public key: 0xEC2C9934 + +This work consists of this file contracard.dtx + and the derived files contracard.sty + and contracard.cls + and contracard.pdf + and README.md + and README diff --git a/Master/texmf-dist/doc/latex/contracard/contracard-style.sty b/Master/texmf-dist/doc/latex/contracard/contracard-style.sty deleted file mode 100644 index 593cf349640..00000000000 --- a/Master/texmf-dist/doc/latex/contracard/contracard-style.sty +++ /dev/null @@ -1,65 +0,0 @@ -%% -%% This is file `contracard-style.sty', -%% generated with the docstrip utility. -%% -%% The original source files were: -%% -%% contracard.dtx (with options: `doc-style') -%% -%% Copyright 2012 Samuel Whited -%% -%% This file may be distributed and/or modified under the -%% conditions of the LaTeX Project Public License, either -%% version 1.3c of this license or (at your option) any later -%% version. The latest version of this license is in: -%% -%% http://www.latex-project.org/lppl.txt -%% -%% and version 1.3c or later is part of all distributions of -%% LaTeX version 2008/05/04 or later. -%% -\ProvidesPackage{contracard-style} -\usepackage[utf8x]{inputenc} -\usepackage{fancyvrb,hologo,framed,multicol,url,textcomp,cclicenses,graphicx,contracard} -\usepackage[pdfborder=0, bookmarks, colorlinks=false, hidelinks]{hyperref} -\usepackage[parfill]{parskip} - -\fvset{gobble=2} - -\newenvironment*{exampledance}{% - \vspace{3em} - \begin{framed} - \begin{minipage}[t][74mm][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}} -%% -%% ___________ -%% Maintainer: Sam Whited -%% Website: https://samwhited.com -%% Contact: sam@samwhited.com -%% Public key: 0xEC2C9934 -%% -%% This work consists of this file contracard.dtx -%% and the derived files contracard.sty -%% and contracard.cls -%% and contracard.pdf -%% -%% -%% End of file `contracard-style.sty'. diff --git a/Master/texmf-dist/doc/latex/contracard/contracard.lod b/Master/texmf-dist/doc/latex/contracard/contracard.lod index b092cabd8f2..88a75a80388 100644 --- a/Master/texmf-dist/doc/latex/contracard/contracard.lod +++ b/Master/texmf-dist/doc/latex/contracard/contracard.lod @@ -1,3 +1,7 @@ -\contentsline {dance}{\numberline {1}Code's Compiling}{9}{dance.1} -\contentsline {dance}{\numberline {2}Untitled Blues \textnumero \ 1}{10}{dance.2} -\contentsline {dance}{\numberline {3}Untitled Blues \textnumero \ 2}{11}{dance.3} +\contentsline {dance}{\numberline {1}\ignorespaces Monarch Grove\unskip }{1}{dance.1} +\contentsline {dance}{\numberline {2}\ignorespaces Code's Compiling\unskip }{5}{dance.2} +\contentsline {dance}{\numberline {3}\ignorespaces Whirling Dervish\unskip }{6}{dance.3} +\contentsline {dance}{\numberline {4}\ignorespaces Turn Around Waltz\unskip }{7}{dance.4} +\contentsline {dance}{\numberline {5}\ignorespaces Untitled Blues \textnumero \ 1\unskip }{10}{dance.5} +\contentsline {dance}{\numberline {6}\ignorespaces Untitled Blues \textnumero \ 2\unskip }{11}{dance.6} +\contentsline {dance}{\numberline {7}\ignorespaces East Meets West\unskip }{18}{dance.7} diff --git a/Master/texmf-dist/doc/latex/contracard/contracard.pdf b/Master/texmf-dist/doc/latex/contracard/contracard.pdf Binary files differindex 3883e504723..7790381be20 100644 --- a/Master/texmf-dist/doc/latex/contracard/contracard.pdf +++ b/Master/texmf-dist/doc/latex/contracard/contracard.pdf diff --git a/Master/texmf-dist/doc/latex/contracard/contracard.sty b/Master/texmf-dist/doc/latex/contracard/contracard.sty index ede9fe22a35..1a1a44f2e8a 100644 --- a/Master/texmf-dist/doc/latex/contracard/contracard.sty +++ b/Master/texmf-dist/doc/latex/contracard/contracard.sty @@ -18,31 +18,53 @@ %% and version 1.3c or later is part of all distributions of %% LaTeX version 2008/05/04 or later. %% +%% For the maintenance status and other document metadata, +%% see the end of this document. +%% \NeedsTeXFormat{LaTeX2e}[1995/12/01] -\ProvidesPackage{contracard}[2013/02/20] -\RequirePackage{intcalc} +\ProvidesPackage{contracard}[2013/09/16 Package for typesetting called dances] +\RequirePackage{calc,intcalc} \RequirePackage{ifthen} \RequirePackage{tocloft} +\RequirePackage{textcomp} +\DeclareOption{showcountafter}{\showcountafter} +\DeclareOption{showcountbefore}{\showcountbefore} +\DeclareOption{enableidx}{\AtEndOfPackage{\enableidx}} \newcommand*{\defaultcontraenv}{flushleft} \newcommand*{\dancetitleenv}{flushleft} \newcommand*{\dancetitleformat}{\section*} \newcommand*{\danceauthorformat}{\subsection*} -\newcommand*{\danceformformat}{\hfill} +\newcommand*{\danceformformat}{\hspace{\fill}} \newcommand*{\movedelimiter}{,} \newcommand*{\partdelimiter}{.} \newcommand*{\midpartdelimiter}{;} \newlength{\phrasevspace} \setlength{\phrasevspace}{1em} \newcommand*{\phraseseparator}{\vspace{\phrasevspace}} +\newcommand*{\showcountbefore}{\def\@showcountbefore{}} +\newcommand*{\showcountafter}{\def\@showcountafter{}} +\newcommand*{\hidecountbefore}{\let\@showcountbefore\undefined} +\newcommand*{\hidecountafter}{\let\@showcountafter\undefined} + +\def\cc@countleftbracket{(} +\def\cc@countrightbracket{)} +\newcommand*{\countleftbracket}[1]{\def\cc@countleftbracket{#1}} +\newcommand*{\countrightbracket}[1]{\def\cc@countrightbracket{#1}} +\def\cc@defaultnotesenv{flushleft} +\newcommand*{\setdefaultnotesenv}[1]{\def\cc@defaultnotesenv{#1}} +\newlength{\prenotevspace} +\setlength{\prenotevspace}{\fill} \newcounter{dancecount} \newcounter{partcount} \newcounter{phrasecount} \newcounter{dancepart} \newcounter{dancephrase} \newcounter{dancepartlength} -\setcounter{dancepartlength}{16} \newcounter{dancephraselength} -\setcounter{dancephraselength}{32} +\newcommand*{\resetdancepartlength}{\setcounter{dancepartlength}{16}} +\newcommand*{\resetdancephraselength}{\setcounter{dancephraselength}{32}} +\resetdancepartlength +\resetdancephraselength \newcommand*{\resetdancephrase}{% \ifthenelse{\value{partcount}=16}{\newline}{}% \@ifstar{\@resetdancephraseStar}{\@resetdancephraseNoStar}% @@ -50,13 +72,15 @@ \newcommand*{\@resetdancephraseStar}{% \setcounter{dancephrase}{1}% \setcounter{phrasecount}{0}% - \resetdancepart* + \setcounter{phrasemovenum}{0}% + \resetdancepart*% } \newcommand*{\@resetdancephraseNoStar}{% \ifthenelse{\value{dancephrase}=1}{}{% \setcounter{dancephrase}{1}% \setcounter{phrasecount}{0}% - \resetdancepart + \setcounter{phrasemovenum}{0}% + \resetdancepart% }% } \newcommand*{\resetdancepart}{% @@ -65,73 +89,681 @@ \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}% }% } \newcommand*{\newdancephrase}{% - \ifthenelse{\not\value{phrasecount}=0}{\newline}{}% + \ifthenelse{\NOT\value{phrasecount}=0}{\par\phraseseparator\par}{}% \addtocounter{dancephrase}{1}% \setcounter{phrasecount}{0}% - \resetdancepart* + \setcounter{phrasemovenum}{0}% + \resetdancepart*% } \newcommand*{\newdancepart}{% - \newline + \par\nopagebreak% \addtocounter{dancepart}{1}% \setcounter{partcount}{0}% + \setcounter{partmovenum}{0}% + \setcounter{halfpartmovenum}{0}% } + +\newcounter{phrasemovenum} +\newcounter{partmovenum} +\newcounter{halfpartmovenum} +\newcounter{dancemovenum} +\setcounter{phrasemovenum}{0} +\setcounter{partmovenum}{0} +\setcounter{halfpartmovenum}{0} +\setcounter{dancemovenum}{0} \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}#2} + \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{#4}} + \markboth{}{\danceformformat{\ignorespaces#4\unskip}} \else% - {\danceformformat{#4}}% + {\danceformformat{\ignorespaces#4\unskip}}% \fi% - {\dancetitleformat{#2}}% - {\danceauthorformat{#3}}% + {\dancetitleformat{\ignorespaces#2\unskip}}% + {\danceauthorformat{\ignorespaces#3\unskip}}% \end{\dancetitleenv} \newcommand*{\@contraenv}{#1} \begin{\@contraenv} + \catcode10=9\relax % New line + \catcode11=9\relax % Vertical Tab + \catcode12=9\relax % Form Feed }{% \end{\@contraenv} } -\newcommand*{\move}[2][16]{% +\newcommand*{\move}{\@ifstar\@moveStar\@moveNoStar} +\newcommand*{\@moveStar}[2][8]{% + \def\cc@moveStar{}\@moveNoStar[#1]{#2}\let\cc@moveStar\undefined% +} +\newlength{\cc@partsepwidth}% +\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}}{% - \newdancephrase% + \ifthenelse{\NOT\(#1=0\)}{% + \newdancephrase% + }{}% }{% - \ifthenelse{\value{partcount}=\value{dancepartlength}}{% - \newdancepart% + \ifthenelse{\(\value{partcount}=\value{dancepartlength}\)% + \AND\NOT\(#1=0\)}{% + \newdancepart% }{}% - } - \ifthenelse{\intcalcMod{\value{dancecount}}{\value{dancepartlength}}=0}{% + }% + \ifthenelse{\value{partmovenum}=0}{% \Alph{dancephrase}\arabic{dancepart}\partdelimiter\ % }{}% \addtocounter{dancecount}{#1}% \addtocounter{phrasecount}{#1}% \addtocounter{partcount}{#1}% - #2% - \ifthenelse{\value{phrasecount}=\value{dancephraselength}}{% - \pagebreak[1]\phraseseparator% + \addtocounter{phrasemovenum}{1}% + \addtocounter{partmovenum}{1}% + \addtocounter{halfpartmovenum}{1}% + \addtocounter{dancemovenum}{1}% + \ifthenelse{\isundefined{\@showcountbefore}\OR\(#1=0\)}{% + \relax% + }{\cc@countleftbracket\ignorespaces#1\unskip\cc@countrightbracket~}% + \ignorespaces#2\unskip% + \ifthenelse{\isundefined{\@showcountafter}\OR\(#1=0\)}{% + \relax% + }{~\cc@countleftbracket\ignorespaces#1\unskip\cc@countrightbracket}% + \ifthenelse{\NOT\(#1=0\)}{% + \ifthenelse{\value{partcount}=\intcalcDiv{\value{dancepartlength}}{2}}{% + \setcounter{halfpartmovenum}{0}% + }{}% + \ifx\cc@moveStar\undefined% + \ifthenelse{\value{partcount}=\intcalcDiv{\value{dancepartlength}}{2}}{% + \midpartdelimiter\nopagebreak\ \nopagebreak\ignorespaces% + }{% + \ifthenelse{\NOT\value{partcount}=\value{dancepartlength}}{% + \movedelimiter\nopagebreak\nolinebreak[2]\ % + \nopagebreak\nolinebreak[2]\ignorespaces% + }{}% + }% + \fi% }{}% - \ifthenelse{\value{partcount}=\intcalcDiv{\value{dancepartlength}}{2}}{\midpartdelimiter\nopagebreak}{% - \ifthenelse{\not\value{partcount}=\value{dancepartlength}}{\movedelimiter\nopagebreak\nolinebreak[2]}{}}% } -\newlistof{dance}{lod}{\lodtitle} +\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}% +} +\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][]{% + \move*[0]{Balance and \ignorespaces#1\unskip\ \ \ignorespaces}% +} +\newcommand*{\@balanceandStar}[1][% + \expandafter\expandafter\expandafter\MakeUppercase\@gobbletwo]{% + \move*[0]{\ignorespaces#1\unskip\ balance and\ \ \ignorespaces}% +} +\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}% +} +\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}% +} +\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}% +} +\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}% +} +\newcommand*{\gypsy}{% + \moveindex{Gypsy}% + \@ifstar\@gypsyStar\@gypsyNoStar% +} +\newcommand*{\gypsyright}{% + \moveindex{Gypsy}% + \moveindex{Gypsy Right}% + \def\cc@thedir{right}% + \@ifstar\@gypsyDirStar\@gypsyDirNoStar% +} +\newcommand*{\gypsyleft}{% + \moveindex{Gypsy}% + \moveindex{Gypsy Left}% + \def\cc@thedir{left}% + \@ifstar\@gypsyDirStar\@gypsyDirNoStar% +} +\newcommand*{\@gypsyNoStar}[2][\unskip]{% + \move[#2]{Gypsy \ignorespaces#1\unskip} +} +\newcommand*{\@gypsyStar}[2][% + \expandafter\expandafter\expandafter\MakeUppercase\@gobbletwo]{% + \move[#2]{\ignorespaces#1\unskip\ gypsy} +} +\newcommand*{\@gypsyDirNoStar}[2][\unskip]{% + \move[#2]{Gypsy \cc@thedir\ \ignorespaces#1\unskip} +} +\newcommand*{\@gypsyDirStar}[2][% + \expandafter\expandafter\expandafter\MakeUppercase\@gobbletwo]{% + \move[#2]{\ignorespaces#1\unskip\ \cc@thedir\ gypsy} +} +\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*{\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}% +} +\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]% +} +\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*{\longpetronella}{% + \moveindex{Petronella}% + \@ifstar\@longpetronellaStar\@longpetronellaNoStar% +} +\newcommand*{\@longpetronellaNoStar}[1][\unskip]{% + \move[8]{Petronella \ignorespaces#1\unskip}% +} +\newcommand*{\@longpetronellaStar}[1][% + \expandafter\expandafter\expandafter\MakeUppercase\@gobbletwo]{% + \move[8]{\ignorespaces#1\unskip\ petronella}% +} +\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}% +} +\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}% +} +\newcommand*{\rollaway}{% + \moveindex{Roll away}% + \@ifstar\@rollawayStar\@rollawayNoStar% +} +\newcommand*{\rawhs}{\rollawayhalfsashay} +\newcommand*{\rollawayhalfsashay}{% + \moveindex{Roll Away}% + \moveindex{Roll Away with a Half Sashay}% + \moveindex{Half Sashay}% + \@ifstar\@rawhsStar\@rawhsNoStar% +} +\newcommand*{\@rollawayNoStar}[1][\unskip]{% + \move[4]{Roll away \ignorespaces#1\unskip}% +} +\newcommand*{\@rollawayStar}[1][% + \expandafter\expandafter\expandafter\MakeUppercase\@gobbletwo]{% + \move[4]{\ignorespaces#1\unskip\ roll away}% +} +\newcommand*{\@rawhsNoStar}[1][\unskip]{% + \move[4]{Roll \ignorespaces#1\unskip\ away with a half sashay}% +} +\newcommand*{\@rawhsStar}[2][\unskip]{% + \move[4]{\ignorespaces#2\unskip\ roll \ignorespaces#1\unskip\ away with a half sashay}% +} +\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}% +} +\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}% +} +\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}% +} +\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}% +} +\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}% +} +\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}% +} +\newcommand*{\dancetitle}{} +\newcommand*{\danceauthor}{} +\newcommand*{\danceform}{} +\newlistof{dance}{lod}{\cfttoctitlefont\lodtitle} \newcommand*{\listofdances}{\listofdance} \newcommand*{\lodtitle}{List of Dances} +\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] +}% +\newcommand*{\pauseindexing}{\def\cc@indexingpaused{}} +\newcommand*{\resumeindexing}{\let\cc@indexingpaused\undefined} +\newcommand*{\cc@dbt}{dbt} +\newcommand*{\cc@dba}{dba} +\newcommand*{\cc@mvp}{mvp} +\newcommand*{\cc@mvd}{mvd} +\newcommand*{\dbtname}{Dances by Type} +\newcommand*{\dbaname}{Dances by Author} +\newcommand*{\mvpname}{Moves by Page} +\newcommand*{\mvdname}{Moves by Dance} +\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}}% + }% + }{}% +} + +\newcommand*{\timesaround}[2]{% + \newcounter{timesaround}% + \setcounter{timesaround}{\intcalcDiv{\intcalcNum{#2}}{\intcalcNum{#1}}}% + \newcounter{quartertimesaround}% + \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}{}% + }% +}% +\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} +} +\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} +} +\newcommand*{\cc@checkphrasestart}{% + \ifthenelse{\value{phrasecount}=\value{dancephraselength}}{% + \newdancephrase% + }{% + \ifthenelse{\(\value{partcount}=\value{dancepartlength}\)}{% + \newdancepart% + }{}% + }% +} +\ProcessOptions\relax %% %% ___________ +%% This work has the LPPL maintenance status `maintained'. +%% +%% Author: Sam Whited %% Maintainer: Sam Whited %% Website: https://samwhited.com %% Contact: sam@samwhited.com @@ -141,6 +773,8 @@ %% and the derived files contracard.sty %% and contracard.cls %% and contracard.pdf +%% and README.md +%% and README %% %% %% End of file `contracard.sty'. diff --git a/Master/texmf-dist/source/latex/contracard/contracard.dtx b/Master/texmf-dist/source/latex/contracard/contracard.dtx index 444a92104b6..0a3b21bedd3 100644 --- a/Master/texmf-dist/source/latex/contracard/contracard.dtx +++ b/Master/texmf-dist/source/latex/contracard/contracard.dtx @@ -1,5 +1,54 @@ % \iffalse %<*internal> +\iffalse +%</internal> +%<*readme> +# Contra Card + +A LaTeX package for contra and square dance calls. + +## Download + +Development of this package occurs primarily on +[GitHub](https://github.com/SamWhited/contracard). Issues and pull requests +should be submitted there. + +The current [release +version](http://ctan.org/tex-archive/macros/latex/contrib/contracard) of +**Contra Card** and associated +[documentation](http://mirrors.ctan.org/macros/latex/contrib/contracard/contracard.pdf) +[PDF] is available from [CTAN](http://ctan.org/pkg/contracard). + +## License + +Copyright 2012 Samuel Whited + +This file may be distributed and/or modified under the conditions of the LaTeX +Project Public License, either version 1.3c of this license or (at your option) +any later version. The latest version of this license is in: + +http://www.latex-project.org/lppl.txt + +and version 1.3c or later is part of all distributions of LaTeX version +2008/05/04 or later. + +This work has the LPPL maintenance status `maintained'. + +Author: Sam Whited +Maintainer: Sam Whited +Website: https://samwhited.com +Contact: sam@samwhited.com +Public key: 0xEC2C9934 + +This work consists of this file contracard.dtx + and the derived files contracard.sty + and contracard.cls + and contracard.pdf + and README.md + and README +%</readme> +%<*internal> +\fi \begingroup \input docstrip.tex \keepsilent @@ -18,10 +67,16 @@ and version 1.3c or later is part of all distributions of LaTeX version 2008/05/04 or later. + For the maintenance status and other document metadata, + see the end of this document. + \endpreamble \postamble ___________ + This work has the LPPL maintenance status `maintained'. + + Author: Sam Whited Maintainer: Sam Whited Website: https://samwhited.com Contact: sam@samwhited.com @@ -31,13 +86,16 @@ and the derived files contracard.sty and contracard.cls and contracard.pdf + and README.md + and README \endpostamble \askforoverwritefalse \generate{\file{contracard.sty}{\from{contracard.dtx}{contracard-pkg}}} \generate{\file{contracard.cls}{\from{contracard.dtx}{contracard-cls}}} -\generate{\file{contracard-style.sty}{\from{contracard.dtx}{doc-style}}} +\nopreamble\nopostamble +\generate{\file{README.md}{\from{contracard.dtx}{readme}}} \obeyspaces \Msg{****************************************************} @@ -59,17 +117,61 @@ % %<*contracard-pkg> \NeedsTeXFormat{LaTeX2e}[1995/12/01] -\ProvidesPackage{contracard}[2013/02/20] +\ProvidesPackage{contracard}[2013/09/16 Package for typesetting called dances] %</contracard-pkg> %<*contracard-cls> \NeedsTeXFormat{LaTeX2e}[1995/12/01] -\ProvidesClass{contracard}[2013/02/20] +\ProvidesClass{contracard}[2013/09/16 Class for creating dance calling cards] \AtEndOfClass{\LoadClass{article}} %</contracard-cls> % %<*driver> \documentclass[a4paper]{ltxdoc} -\usepackage{contracard-style} +\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} + +\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 @@ -86,13 +188,30 @@ % % \title{The Contra Card Project} % \author{ -% \name{Sam Whited}\\ -% \texttt{sam@samwhited.com} +% \name{Sam Whited}\\* +% \texttt{sam@samwhited.com}\\* +% \texttt{0xEC2C9934} % } -% \date{\today\\\gittag} +% \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} % @@ -107,7 +226,7 @@ % \subsection{About the source} % % Contributions are welcome, and the latest development version of the project -% can always be found at \url{https://github.com/samwhited/contra-card}. +% can always be found at \url{https://github.com/samwhited/contracard}. % % \subsection{License} % @@ -120,12 +239,32 @@ % 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. +% % \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}} % @@ -134,9 +273,10 @@ % % \begin{macrocode} %<*contracard-pkg> -\RequirePackage{intcalc} +\RequirePackage{calc,intcalc} \RequirePackage{ifthen} \RequirePackage{tocloft} +\RequirePackage{textcomp} %</contracard-pkg> % \end{macrocode} % @@ -153,22 +293,22 @@ %<*contracard-pkg> % \end{macrocode} % -% \paragraph{Building} 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} -% against \fname{contracard.dtx}: +% \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} -% $ pdflatex --shell-escape contracard.dtx +% $ 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 as the version is determined by running +% installed (and the git repo itself) as the version is determined by running: % % \begin{Verbatim} -% $ git describe --tags +% $ git describe --tags --dirty % \end{Verbatim} % % \paragraph{Using \pkg{contracard}} Building results in two main files, a class @@ -176,6 +316,28 @@ % \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. @@ -204,7 +366,7 @@ % \begin{macrocode} \newcommand*{\dancetitleformat}{\section*} \newcommand*{\danceauthorformat}{\subsection*} -\newcommand*{\danceformformat}{\hfill} +\newcommand*{\danceformformat}{\hspace{\fill}} % \end{macrocode} % \end{macro} % \end{macro} @@ -232,23 +394,151 @@ % \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{phrasevspace} ammount of -% white space. -% \end{macro} +% 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\longpetronella +% \balanceand\longpetronella +% \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} +% \gypsy[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\longpetronella +% \balanceand\move[8]{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 gypsy left 1 time to new +% neighbors\moveindex{Balance}\moveindex{Gypsy}\moveindex{Gypsy Left}} +% \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{The Meat} +% \section{Counters} % -% Next we'll define the meat of the \pkg{contracard} package. These are the -% functions, counters, and environments that actually deal with generating a -% dance. +% 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 and phrases} +% \subsection{Musical counts} % % \begin{macro}{dancecount} % \begin{macro}{partcount} @@ -261,13 +551,13 @@ % \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} -% First we'll create some counters that will 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). +% 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} @@ -285,28 +575,78 @@ % \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. +% unexpected consequences. You can set them back quickly afterwards with the +% reset commands. % \begin{macrocode} \newcounter{dancepartlength} -\setcounter{dancepartlength}{16} \newcounter{dancephraselength} -\setcounter{dancephraselength}{32} +\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. +% 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}{}% @@ -315,13 +655,15 @@ \newcommand*{\@resetdancephraseStar}{% \setcounter{dancephrase}{1}% \setcounter{phrasecount}{0}% - \resetdancepart* + \setcounter{phrasemovenum}{0}% + \resetdancepart*% } \newcommand*{\@resetdancephraseNoStar}{% \ifthenelse{\value{dancephrase}=1}{}{% \setcounter{dancephrase}{1}% \setcounter{phrasecount}{0}% - \resetdancepart + \setcounter{phrasemovenum}{0}% + \resetdancepart% }% } \newcommand*{\resetdancepart}{% @@ -330,16 +672,22 @@ \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} @@ -348,21 +696,144 @@ % The user can also manually start a new phrase or part: % \begin{macrocode} \newcommand*{\newdancephrase}{% - \ifthenelse{\not\value{phrasecount}=0}{\newline}{}% + \ifthenelse{\NOT\value{phrasecount}=0}{\par\phraseseparator\par}{}% \addtocounter{dancephrase}{1}% \setcounter{phrasecount}{0}% - \resetdancepart* + \setcounter{phrasemovenum}{0}% + \resetdancepart*% } \newcommand*{\newdancepart}{% - \newline + \par\nopagebreak% \addtocounter{dancepart}{1}% \setcounter{partcount}{0}% + \setcounter{partmovenum}{0}% + \setcounter{halfpartmovenum}{0}% } % \end{macrocode} % \end{macro} % \end{macro} % -% \subsection{The \code{contra} environment} +% 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} +% \setlength{\phrasevspace}{0em} +% \renewcommand*{\partdelimiter}{:} +% \begin{contra}{Untitled Blues \textnumero\ 1}{Seth Tepfer}{Duple minor im.} +% \gypsy*[Neighbor]{8} +% \gypsy*[Ladies]{8} +% \newdancephrase +% \balanceand*[Partner]\swing{16} +% \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} +% \setlength{\phrasevspace}{0em} +% \renewcommand*{\partdelimiter}{:} +% \begin{contra}{Untitled Blues \textnumero\ 1}{\href{http://www.dancerhapsody.com/calling/dances.html}{Seth Tepfer}}{Duple minor im.} +% \gypsy*[Neighbor]{8} +% \gypsy*[Ladies]{8} +% \newdancephrase +% \balanceand*[Partner]\swing{16} +% \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} +% \setlength{\phrasevspace}{0em} +% \renewcommand*{\partdelimiter}{:} +% \setcounter{dancephraselength}{16} +% \begin{contra}{Untitled Blues \textnumero\ 2}{Seth Tepfer}{Duple minor im.} +% \gypsy*[Neighbor]{8} +% \move[8]{Gents allemande\moveindex{Allemande} left 1\textonehalf} +% \balanceand*[Partner]\swing{16} +% \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} +% \setlength{\phrasevspace}{0em} +% \renewcommand*{\partdelimiter}{:} +% \setcounter{dancephraselength}{16} +% \begin{contra}{Untitled Blues \textnumero\ 2}{\href{http://www.dancerhapsody.com/calling/dances.html}{Seth Tepfer}}{Duple minor im.} +% \gypsy*[Neighbor]{8} +% \move[8]{Gents allemande\moveindex{Allemande} left 1\textonehalf} +% \balanceand*[Partner]\swing{16} +% \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} @@ -372,63 +843,1040 @@ % 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}#2} + \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{#4}} + \markboth{}{\danceformformat{\ignorespaces#4\unskip}} \else% - {\danceformformat{#4}}% + {\danceformformat{\ignorespaces#4\unskip}}% \fi% - {\dancetitleformat{#2}}% - {\danceauthorformat{#3}}% + {\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} -% The next thing we need to define is the \code{\textbackslash move} command. -% This command takes in a move to display, and (optionally) the number of counts -% the move takes. If the count is not specified, 16 is used as the default. +% \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}[2][16]{% +\newcommand*{\move}{\@ifstar\@moveStar\@moveNoStar} +\newcommand*{\@moveStar}[2][8]{% + \def\cc@moveStar{}\@moveNoStar[#1]{#2}\let\cc@moveStar\undefined% +} +\newlength{\cc@partsepwidth}% +\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}}{% - \newdancephrase% + \ifthenelse{\NOT\(#1=0\)}{% + \newdancephrase% + }{}% }{% - \ifthenelse{\value{partcount}=\value{dancepartlength}}{% - \newdancepart% + \ifthenelse{\(\value{partcount}=\value{dancepartlength}\)% + \AND\NOT\(#1=0\)}{% + \newdancepart% }{}% - } - \ifthenelse{\intcalcMod{\value{dancecount}}{\value{dancepartlength}}=0}{% + }% + \ifthenelse{\value{partmovenum}=0}{% \Alph{dancephrase}\arabic{dancepart}\partdelimiter\ % }{}% \addtocounter{dancecount}{#1}% \addtocounter{phrasecount}{#1}% \addtocounter{partcount}{#1}% - #2% - \ifthenelse{\value{phrasecount}=\value{dancephraselength}}{% - \pagebreak[1]\phraseseparator% + \addtocounter{phrasemovenum}{1}% + \addtocounter{partmovenum}{1}% + \addtocounter{halfpartmovenum}{1}% + \addtocounter{dancemovenum}{1}% + \ifthenelse{\isundefined{\@showcountbefore}\OR\(#1=0\)}{% + \relax% + }{\cc@countleftbracket\ignorespaces#1\unskip\cc@countrightbracket~}% + \ignorespaces#2\unskip% + \ifthenelse{\isundefined{\@showcountafter}\OR\(#1=0\)}{% + \relax% + }{~\cc@countleftbracket\ignorespaces#1\unskip\cc@countrightbracket}% + \ifthenelse{\NOT\(#1=0\)}{% + \ifthenelse{\value{partcount}=\intcalcDiv{\value{dancepartlength}}{2}}{% + \setcounter{halfpartmovenum}{0}% + }{}% + \ifx\cc@moveStar\undefined% + \ifthenelse{\value{partcount}=\intcalcDiv{\value{dancepartlength}}{2}}{% + \midpartdelimiter\nopagebreak\ \nopagebreak\ignorespaces% + }{% + \ifthenelse{\NOT\value{partcount}=\value{dancepartlength}}{% + \movedelimiter\nopagebreak\nolinebreak[2]\ % + \nopagebreak\nolinebreak[2]\ignorespaces% + }{}% + }% + \fi% }{}% - \ifthenelse{\value{partcount}=\intcalcDiv{\value{dancepartlength}}{2}}{\midpartdelimiter\nopagebreak}{% - \ifthenelse{\not\value{partcount}=\value{dancepartlength}}{\movedelimiter\nopagebreak\nolinebreak[2]}{}}% } % \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} +% \begin{macro}{\balanceand*} +% \changes{1.0.0}{2013/09/05}{Add move shortcut} +% 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 unless you use the +% \code{\textbackslash balanceand} version of the command which takes up 0 +% logical counts. This way you can follow it up with another command +% (eg.~\code{\textbackslash balanceand*[Partner]\textbackslash swing}). +% \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][]{% + \move*[0]{Balance and \ignorespaces#1\unskip\ \ \ignorespaces}% +} +\newcommand*{\@balanceandStar}[1][% + \expandafter\expandafter\expandafter\MakeUppercase\@gobbletwo]{% + \move*[0]{\ignorespaces#1\unskip\ balance and\ \ \ignorespaces}% +} +% \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}{\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} +% Several different macros exist for creating Gypsy's; while you can create +% right and left gypsy's with the normal \code{\textbackslash gypsy} macro, the +% \code{\textbackslash gypsyleft} and \code{\textbackslash gypsyright} macros +% also index the move under the given direction. +% \begin{macrocode} +\newcommand*{\gypsy}{% + \moveindex{Gypsy}% + \@ifstar\@gypsyStar\@gypsyNoStar% +} +\newcommand*{\gypsyright}{% + \moveindex{Gypsy}% + \moveindex{Gypsy Right}% + \def\cc@thedir{right}% + \@ifstar\@gypsyDirStar\@gypsyDirNoStar% +} +\newcommand*{\gypsyleft}{% + \moveindex{Gypsy}% + \moveindex{Gypsy Left}% + \def\cc@thedir{left}% + \@ifstar\@gypsyDirStar\@gypsyDirNoStar% +} +\newcommand*{\@gypsyNoStar}[2][\unskip]{% + \move[#2]{Gypsy \ignorespaces#1\unskip} +} +\newcommand*{\@gypsyStar}[2][% + \expandafter\expandafter\expandafter\MakeUppercase\@gobbletwo]{% + \move[#2]{\ignorespaces#1\unskip\ gypsy} +} +\newcommand*{\@gypsyDirNoStar}[2][\unskip]{% + \move[#2]{Gypsy \cc@thedir\ \ignorespaces#1\unskip} +} +\newcommand*{\@gypsyDirStar}[2][% + \expandafter\expandafter\expandafter\MakeUppercase\@gobbletwo]{% + \move[#2]{\ignorespaces#1\unskip\ \cc@thedir\ gypsy} +} +% \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} +% 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 for the purpose of these shortcut macros. +% \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} +} +% \end{macrocode} +% \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{Gypsy star \textthreequarters}\moveindex{Gypsy Star} +% \move[16]{Gypsy and swing partner}\moveindex{Gypsy}\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}{\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}{\longpetronella} +% \changes{1.0.0}{2013/09/08}{Add move shortcut} +% \begin{macro}{\longpetronella*} +% \changes{1.0.0}{2013/09/08}{Add move shortcut} +% 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. Petronella's themselves take 4 beats, but they +% are normally prefixed by a balance. Since the \code{\textbackslash balanceand} +% macro takes up zero logical beats, we also provide \code{\textbackslash +% longpetronella} which takes up the full 8 counts. This way you can write +% \code{\textbackslash balanceand\textbackslash longpetronella} and the timing +% will be correct. +% \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*{\longpetronella}{% + \moveindex{Petronella}% + \@ifstar\@longpetronellaStar\@longpetronellaNoStar% +} +\newcommand*{\@longpetronellaNoStar}[1][\unskip]{% + \move[8]{Petronella \ignorespaces#1\unskip}% +} +\newcommand*{\@longpetronellaStar}[1][% + \expandafter\expandafter\expandafter\MakeUppercase\@gobbletwo]{% + \move[8]{\ignorespaces#1\unskip\ petronella}% +} +% \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} +% \begin{macro}{\rollaway*} +% \changes{1.0.0}{2013/09/10}{Add move shortcut} +% \begin{macro}{\rollawayhalfsashay} +% \changes{1.0.0}{2013/09/10}{Add move shortcut} +% \begin{macro}{\rollawayhalfsashay*} +% \changes{1.0.0}{2013/09/10}{Add move shortcut} +% \begin{macro}{\rawhs} +% \changes{1.0.0}{2013/09/10}{Add move shortcut} +% \begin{macro}{\rawhs*} +% \changes{1.0.0}{2013/09/10}{Add move shortcut} +% ``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 rollawaywithahalfsashay} macro (and its shorter alias: +% \code{\textbackslash rawhs}) 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 rawhs*{[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*{\rawhs}{\rollawayhalfsashay} +\newcommand*{\rollawayhalfsashay}{% + \moveindex{Roll Away}% + \moveindex{Roll Away with a Half Sashay}% + \moveindex{Half Sashay}% + \@ifstar\@rawhsStar\@rawhsNoStar% +} +\newcommand*{\@rollawayNoStar}[1][\unskip]{% + \move[4]{Roll away \ignorespaces#1\unskip}% +} +\newcommand*{\@rollawayStar}[1][% + \expandafter\expandafter\expandafter\MakeUppercase\@gobbletwo]{% + \move[4]{\ignorespaces#1\unskip\ roll away}% +} +\newcommand*{\@rawhsNoStar}[1][\unskip]{% + \move[4]{Roll \ignorespaces#1\unskip\ away with a half sashay}% +} +\newcommand*{\@rawhsStar}[2][\unskip]{% + \move[4]{\ignorespaces#2\unskip\ roll \ignorespaces#1\unskip\ away with a half sashay}% +} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \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 rawhs} 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} % @@ -442,7 +1890,7 @@ % by default, however, we define an alias: \code{\textbackslash listofdances} % to prevent confusion. % \begin{macrocode} -\newlistof{dance}{lod}{\lodtitle} +\newlistof{dance}{lod}{\cfttoctitlefont\lodtitle} \newcommand*{\listofdances}{\listofdance} % \end{macrocode} % \end{macro} @@ -454,37 +1902,308 @@ % \end{macrocode} % \end{macro} % -% When printed, the list of dances looks something like this: +% 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} +\newcommand*{\timesaround}[2]{% + \newcounter{timesaround}% + \setcounter{timesaround}{\intcalcDiv{\intcalcNum{#2}}{\intcalcNum{#1}}}% + \newcounter{quartertimesaround}% + \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 +%</contracard-pkg> +% \end{macrocode} % % \clearpage -% \begin{framed} % \phantomsection -% \addcontentsline{toc}{subsubsection}{\lodtitle} -% \listofdances -% \end{framed} +% \part{The \pkg{contracard} class} % % \begin{macrocode} -%</contracard-pkg> %<*contracard-cls> % \end{macrocode} % -% \section{The \pkg{contracard} class} -% % 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} % -% \hypertarget{CONTRACARD:OPTIONS}{} % \begin{macro}{small} % \begin{macro}{medium} % \begin{macro}{large} % \begin{macro}{a7paper} -% The class can be loaded with any of the following options: +% \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}{}% @@ -515,15 +2234,14 @@ margin=5mm,top=15mm,paperwidth=105mm,paperheight=74mm% }{geometry}% } +\DeclareOption{draft}{% + \PassOptionsToClass{draft}{article}% +} \DeclareOption*{% - \PassOptionsToClass{\CurrentOption}{article}% + \PassOptionsToPackage{\CurrentOption}{contracard}% } % \end{macrocode} -% The \code{small} option creates a 127.0 by 76.2 mm (5 by 3 in) card. -% The \code{medium} option creates a 152.4 by 101.6 mm (6 by 4 in) card. -% The \code{large} option creates a 203.2 by 27.0 mm (8 by 5 in) card. -% The \code{a7paper} option creates a 105 by 74 mm (4.1 by 2.9 in) card. -% Any unrecognized options are passed to the \pkg{article} class. +% \end{macro} % \end{macro} % \end{macro} % \end{macro} @@ -546,170 +2264,33 @@ %</contracard-cls> % \end{macrocode} % -% \section{Examples} -% -% A few examples are contained below. Note that the output is wrapped in a frame -% for clarity; no attempt has been made to make the frame match the size, -% margins, etc. that a calling card would have (these examples don't use -% \fname{contracard.cls}, just the package). -% -% \subsection{Code's Compiling by Sam Whited} -% -% This is a simple dance from the caller's perspective (not so for the dancers!) -% and doesn't do much to show off Contra Card's features. Each move is 8 counts, -% and it uses standard phrasing. Teaching it may be more difficult; at first -% glance it appears not to flow, but by adding a few turns and making sure that -% dancers know they don't have to stop and face forward before doing the see saw -% (almost as if it were a mad robin) it will flow smoothly. Overall it's a bit -% busy, and probably needs revision. -% -% \begin{Verbatim} -% \begin{contra}{Code's Compiling}{Sam Whited}{Duple becket} -% \move[8]{Neighbor dosido} -% \move[8]{Partner see saw} -% \move{Shadow swing} -% \move[8]{Balance and petronella} -% \move[8]{Balance and petronella} -% \move[8]{Partner swing} -% \move[8]{Left diagonal: Right and left through} -% \begin{flushleft} -% {\footnotesize \textbf{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 \textbf{lots} of space for the -% dosido.} -% \end{flushleft} -% \vspace*{\fill} -% \begin{flushright} -% \href{http://creativecommons.org/licenses/by/3.0/}{% -% \IfFileExists{by.png}{% -% \includegraphics[width=40px]{by.png}% -% }{\cc\by}} -% \end{flushright} -% \end{contra} -% \end{Verbatim} -% -% \begin{exampledance} -% \begin{contra}{Code's Compiling}{Sam Whited}{Duple becket} -% \move[8]{Neighbor dosido} -% \move[8]{Partner see saw} -% \move{Shadow swing} -% \move[8]{Balance and petronella} -% \move[8]{Balance and petronella} -% \move[8]{Partner swing} -% \move[8]{Left diagonal: Right and left through} -% \begin{flushleft} -% {\footnotesize \textbf{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 \textbf{lots} of space for the -% dosido.} -% \end{flushleft} -% \vspace*{\fill} -% \begin{flushright} -% \href{http://creativecommons.org/licenses/by/3.0/}{% -% \IfFileExists{by.png}{% -% \includegraphics[width=40px]{by.png}% -% }{\cc\by}} -% \end{flushright} -% \end{contra} -% \end{exampledance} -% -% \subsection{Untitled Blues Contras by Seth Tepfer} -% -% These blues contras consist of 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 \pkg{contracard} handle figuring out how to -% break up the phrases. -% -% \subsubsection*{Untitled Blues \textnumero\ 1} -% -% \begin{Verbatim} -% \renewcommand*{\partdelimiter}{:} -% \begin{contra}{Untitled Blues \textnumero\ 1}{Seth Tepfer}{Duple Minor Im.} -% \move[8]{Neighbor gypsy} -% \move[8]{Ladies gypsy} -% \newdancephrase -% \move[16]{Partner balance and swing} -% \newdancephrase -% \move[8]{Ladies chain} -% \move[8]{Left hand star} -% \vspace*{\fill} -% \begin{flushright} -% \href{http://creativecommons.org/licenses/by-nc/3.0/}{% -% \IfFileExists{by-nc.png}{% -% \includegraphics[width=40px]{by-nc.png}% -% }{\cc\bync}} -% \end{flushright} -% \end{contra} -% \end{Verbatim} -% -% \begin{exampledance} -% \renewcommand*{\partdelimiter}{:} -% \begin{contra}{Untitled Blues \textnumero\ 1}{\href{http://www.dancerhapsody.com/calling/dances.html}{Seth Tepfer}}{Duple Minor Im.} -% \move[8]{Neighbor gypsy} -% \move[8]{Ladies gypsy} -% \newdancephrase -% \move[16]{Partner balance and swing} -% \newdancephrase -% \move[8]{Ladies chain} -% \move[8]{Left hand star} -% \vspace*{\fill} -% \begin{flushright} -% \href{http://creativecommons.org/licenses/by-nc/3.0/}{% -% \IfFileExists{by-nc.png}{% -% \includegraphics[width=40px]{by-nc.png}% -% }{\cc\bync}} -% \end{flushright} -% \end{contra} -% \end{exampledance} -% -% \subsubsection*{Untitled Blues \textnumero\ 2} -% -% \begin{Verbatim} -% \setlength{\phrasevspace}{0em} -% \setcounter{dancephraselength}{16} -% \begin{contra}{Untitled Blues \textnumero\ 2}{Seth Tepfer}{Duple Minor Im.} -% \move[8]{Neighbor gypsy} -% \move[8]{Gents allemande left 1\textonehalf} -% \move[16]{Partner balance and swing} -% \move[8]{\textonehalf\ promenade across set} -% \move[8]{Ladies chain} -% \vspace*{\fill} -% \begin{flushright} -% \href{http://creativecommons.org/licenses/by-nc/3.0/}{% -% \IfFileExists{by-nc.png}{% -% \includegraphics[width=40px]{by-nc.png}% -% }{\cc\bync}} -% \end{flushright} -% \end{contra} -% \end{Verbatim} -% -% \begin{exampledance} -% \setlength{\phrasevspace}{0em} -% \setcounter{dancephraselength}{16} -% \begin{contra}{Untitled Blues \textnumero\ 2}{\href{http://www.dancerhapsody.com/calling/dances.html}{Seth Tepfer}}{Duple Minor Im.} -% \move[8]{Neighbor gypsy} -% \move[8]{Gents allemande left 1\textonehalf} -% \move[16]{Partner balance and swing} -% \move[8]{\textonehalf\ promenade across set} -% \move[8]{Ladies chain} -% \vspace*{\fill} -% \begin{flushright} -% \href{http://creativecommons.org/licenses/by-nc/3.0/}{% -% \IfFileExists{by-nc.png}{% -% \includegraphics[width=40px]{by-nc.png}% -% }{\cc\bync}} -% \end{flushright} -% \end{contra} -% \end{exampledance} -% +% \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}{% @@ -724,40 +2305,5 @@ % \Finale % % \iffalse -%<*doc-style> -% \begin{macrocode} -\ProvidesPackage{contracard-style} -\usepackage[utf8x]{inputenc} -\usepackage{fancyvrb,hologo,framed,multicol,url,textcomp,cclicenses,graphicx,contracard} -\usepackage[pdfborder=0, bookmarks, colorlinks=false, hidelinks]{hyperref} -\usepackage[parfill]{parskip} - -\fvset{gobble=2} - -\newenvironment*{exampledance}{% - \vspace{3em} - \begin{framed} - \begin{minipage}[t][74mm][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}} -% \end{macrocode} -%</doc-style> %\fi \endinput diff --git a/Master/texmf-dist/tex/latex/contracard/contracard.cls b/Master/texmf-dist/tex/latex/contracard/contracard.cls index 309ac71be49..f676b3a1f1d 100644 --- a/Master/texmf-dist/tex/latex/contracard/contracard.cls +++ b/Master/texmf-dist/tex/latex/contracard/contracard.cls @@ -18,12 +18,19 @@ %% and version 1.3c or later is part of all distributions of %% LaTeX version 2008/05/04 or later. %% +%% For the maintenance status and other document metadata, +%% see the end of this document. +%% \NeedsTeXFormat{LaTeX2e}[1995/12/01] -\ProvidesClass{contracard}[2013/02/20] +\ProvidesClass{contracard}[2013/09/16 Class for creating dance calling cards] \AtEndOfClass{\LoadClass{article}} \AtEndOfClass{\RequirePackage{geometry}} \AtEndOfClass{\RequirePackage[compact]{titlesec}} \AtEndOfClass{\RequirePackage{contracard}} +\AtBeginDocument{\large} +\PassOptionsToPackage{% + margin=0.5in,top=0.75in,paperwidth=6in,paperheight=4in% +}{geometry}% \DeclareOption{small}{% \AtBeginDocument{% \titleformat{\section}{\normalsize\bfseries}{\thesection}{1em}{}% @@ -54,8 +61,11 @@ margin=5mm,top=15mm,paperwidth=105mm,paperheight=74mm% }{geometry}% } +\DeclareOption{draft}{% + \PassOptionsToClass{draft}{article}% +} \DeclareOption*{% - \PassOptionsToClass{\CurrentOption}{article}% + \PassOptionsToPackage{\CurrentOption}{contracard}% } \AtBeginDocument{\pagestyle{empty}} \AtBeginDocument{\pagenumbering{gobble}} @@ -63,6 +73,9 @@ \ProcessOptions\relax %% %% ___________ +%% This work has the LPPL maintenance status `maintained'. +%% +%% Author: Sam Whited %% Maintainer: Sam Whited %% Website: https://samwhited.com %% Contact: sam@samwhited.com @@ -72,6 +85,8 @@ %% and the derived files contracard.sty %% and contracard.cls %% and contracard.pdf +%% and README.md +%% and README %% %% %% End of file `contracard.cls'. |