summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/latex/contracard
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2013-02-22 22:56:35 +0000
committerKarl Berry <karl@freefriends.org>2013-02-22 22:56:35 +0000
commit45cbe76d48e9ae9e5c8162ec6b496607265f282f (patch)
treefe0898bce4e24df0d115a65ac508d7497dc86de3 /Master/texmf-dist/source/latex/contracard
parent19e6deec88e20852e89d1a8a65cbd57e3fbd5686 (diff)
contracard (22feb13)
git-svn-id: svn://tug.org/texlive/trunk@29202 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source/latex/contracard')
-rw-r--r--Master/texmf-dist/source/latex/contracard/contracard.dtx523
1 files changed, 384 insertions, 139 deletions
diff --git a/Master/texmf-dist/source/latex/contracard/contracard.dtx b/Master/texmf-dist/source/latex/contracard/contracard.dtx
index 2c5088ec48e..d63da61e50e 100644
--- a/Master/texmf-dist/source/latex/contracard/contracard.dtx
+++ b/Master/texmf-dist/source/latex/contracard/contracard.dtx
@@ -28,13 +28,15 @@
Public key: 0xEC2C9934
This work consists of this file contracard.dtx
- and the derived files contracard.cls
+ and the derived files contracard.sty
+ and contracard.cls
and contracard.pdf
\endpostamble
\askforoverwritefalse
-\generate{\file{contracard.cls}{\from{contracard.dtx}{contracard}}}
+\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}}}
\obeyspaces
@@ -43,6 +45,7 @@
\Msg{* To finish the installation you have to move the *}
\Msg{* following file into a directory searched by TeX: *}
\Msg{* *}
+\Msg{* contracard.sty *}
\Msg{* contracard.cls *}
\Msg{* *}
\Msg{****************************************************}
@@ -54,11 +57,15 @@
\ProvidesFile{contracard.dtx}
%</driver>
%
-%<*contracard>
+%<*contracard-pkg>
\NeedsTeXFormat{LaTeX2e}[1995/12/01]
-\ProvidesClass{contracard}[2013/02/17]
+\ProvidesPackage{contracard}[2013/02/20]
+%</contracard-pkg>
+%<*contracard-cls>
+\NeedsTeXFormat{LaTeX2e}[1995/12/01]
+\ProvidesClass{contracard}[2013/02/20]
\AtEndOfClass{\LoadClass{article}}
-%</contracard>%
+%</contracard-cls>
%
%<*driver>
\documentclass[a4paper]{ltxdoc}
@@ -77,7 +84,7 @@
% \makeatletter
% \errorcontextlines=999
%
-% \title{The \textsf{contracard} class}
+% \title{The Contra Card Project}
% \author{
% \name{Sam Whited}\\
% \texttt{sam@samwhited.com}
@@ -89,17 +96,20 @@
%
% \section{Introduction}
%
-% The \pkg{contracard} class is designed to aid in the formatting and
+% The \textbf{Contra Card} project is designed to aid in the formatting and
% typesetting of caller cards for traditional square and line dances.
%
-% \subsection{Rationale}
+% The project comprises a \LaTeX\ package (\fname{contracard.sty}) and a
+% \LaTeX\ class (\fname{contracard.cls}). The package provides the core
+% functionality of Contra Card while the class file acts as a convenience
+% wrapper for making calling cards.
+%
+% \subsection{About the source}
%
-% There is little to no purpose for this class. I was tired of seeing caller
-% cards that were written in difficult to read shorthand, or, when they were
-% presented in a digital format, using some ugly 90s-looking HTML or MS Word
-% template. This is my attempt to make calling cards more beautiful.
+% Contributions are welcome, and the latest development version of the project
+% can always be found at \url{https://github.com/samwhited/contra-card}.
%
-% \subsection{License / about the source}
+% \subsection{License}
%
% This project may be distributed and/or modified under the conditions of the
% \LaTeX\ Project Public License, either version 1.3c of this license or (at
@@ -110,166 +120,235 @@
% and version 1.3c or later is part of all distributions of \LaTeX\ version
% 2008/05/04 or later.
%
-% Contributions are welcome, and the latest development version of the project
-% can always be found at \url{https://github.com/samwhited/contracard}.
-%
% \StopEventually{}
% \changes{0.1}{2013/02/09}{Created boilerplate for class}
-% \section{Package building and loading}
+% \changes{0.3}{2013/02/20}{Split core functionality out into package}
+%
+% \section{Building and using \pkg{contracard}}
+%
+% \paragraph{Dependencies} Before building the \pkg{contracard} package you should verify that the
+% following dependencies are installed:
%
% \begin{macrocode}
-%<*contracard>
+%<*contracard-pkg>
+\RequirePackage{intcalc}
+\RequirePackage{ifthen}
+%</contracard-pkg>
% \end{macrocode}
%
-% \paragraph{Building}
-%
-% Before building \pkg{contracard} you should verify that the following
-% dependencies are installed:
+% If you're using the class, you'll want the following additional dependencies:
%
% \begin{macrocode}
-\AtEndOfClass{\RequirePackage{intcalc}}
-\AtEndOfClass{\RequirePackage{hyperref}}
-\AtEndOfClass{\RequirePackage{ifthen}}
+%<*contracard-cls>
\AtEndOfClass{\RequirePackage{geometry}}
-\AtEndOfClass{\RequirePackage{fancyhdr}}
\AtEndOfClass{\RequirePackage[compact]{titlesec}}
+\AtEndOfClass{\RequirePackage{contracard}}
+%</contracard-cls>
% \end{macrocode}
-% Once you have all the required packages, building \pkg{contracard} from source
+% \begin{macrocode}
+%<*contracard-pkg>
+% \end{macrocode}d
+%
+% \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} with the \code{-{}-shell-escape} option:
+% against \fname{contracard.dtx}:
%
% \begin{Verbatim}
% $ pdflatex --shell-escape contracard.dtx
% \end{Verbatim}
%
-% \paragraph{Options}
+% 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
%
-% \hypertarget{CONTRACARD:OPTIONS}{}
-% \begin{macro}{small}
-% \begin{macro}{medium}
-% \begin{macro}{large}
-% \begin{macro}{a7paper}
-% The class can also be loaded with any of the following options:
+% \begin{Verbatim}
+% $ git describe --tags
+% \end{Verbatim}
+%
+% \paragraph{Using \pkg{contracard}} Building results in two main files, a class
+% and a package. In general, if you want to make a calling card, use the
+% \pkg{contracard} class and if you want to print a contra dance in a book or
+% article, use a different class and require the \pkg{contracard} package.
+%
+% \section{Formatting}
+%
+% These options determine how the dance will look.
+%
+% \begin{macro}{\defaultcontraenv}
+% \begin{macro}{\dancetitleenv}
+% \changes{0.1}{2013/02/14}{Allow user to format moves}
+% \changes{0.3}{2013/02/20}{Allow user to format dance title block}
+% By default, all contra moves and the title block are wrapped in the
+% \code{flushleft} environment. To change this you can renew
+% the following macros:
% \begin{macrocode}
-\DeclareOption{small}{%
- \AtBeginDocument{%
- \titleformat{\section}{\normalsize\bfseries}{\thesection}{1em}{}%
- }
- \PassOptionsToPackage{%
- margin=0.25in,top=0.75in,paperwidth=5in,paperheight=3in%
- }{geometry}%
-}
-\DeclareOption{medium}{%
- \AtBeginDocument{\large}
- \PassOptionsToPackage{%
- margin=0.5in,top=0.75in,paperwidth=6in,paperheight=4in%
- }{geometry}%
-}
-\DeclareOption{large}{%
- \AtBeginDocument{\Large}
- \PassOptionsToPackage{%
- margin=0.75in,top=1in,paperwidth=8in,paperheight=5in%
- }{geometry}%
-}
-\DeclareOption{a7paper}{%
- \AtBeginDocument{%
- \titleformat{\section}{\normalsize\bfseries}{\thesection}{1em}{}%
- }
- \PassOptionsToPackage{%
- margin=5mm,top=15mm,paperwidth=105mm,paperheight=74mm%
- }{geometry}%
-}
-\DeclareOption*{%
- \PassOptionsToClass{\CurrentOption}{article}%
-}
+\newcommand*{\defaultcontraenv}{flushleft}
+\newcommand*{\dancetitleenv}{flushleft}
% \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}
+%
+% \begin{macro}{\dancetitleformat}
+% \begin{macro}{\danceauthorformat}
+% \begin{macro}{\danceformformat}
+% \changes{0.3}{2013/02/20}{Allow the user to change the dance title format}
+% \changes{0.3}{2013/02/20}{Allow the user to change the dance form format}
+% To change the formatting of a dance's title, author, or form, redefine the
+% following macros:
+% \begin{macrocode}
+\newcommand*{\dancetitleformat}{\section*}
+\newcommand*{\danceauthorformat}{\subsection*}
+\newcommand*{\danceformformat}{\hfill}
+% \end{macrocode}
+% \end{macro}
% \end{macro}
% \end{macro}
%
-% \section{Environment setup}
-%
-% First let's set up the basic environment. We'll start by turning off headers,
-% and removing the header rule inserted by \pkg{fancyhdr} on pages that will
-% have headers later:
-%
+% \begin{macro}{\movedelimiter}
+% \changes{0.3}{2013/02/20}{Allow customizing the move delimiter character}
+% \begin{macro}{\partdelimiter}
+% \changes{0.3}{2013/02/20}{Allow customizing the part delimiter}
+% \begin{macro}{\midpartdelimiter}
+% \changes{0.3}{2013/02/20}{Allow customizing the mid-part delimiter}
+% These commands define delimiters that are used between moves, or at the midway
+% point in a part.
% \begin{macrocode}
-\AtBeginDocument{\renewcommand{\headrulewidth}{0pt}}
-\AtBeginDocument{\pagestyle{empty}}
+\newcommand*{\movedelimiter}{,}
+\newcommand*{\partdelimiter}{.}
+\newcommand*{\midpartdelimiter}{;}
% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \section{The Meat}
+%
+% 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.
+%
+% \subsection{Musical counts and phrases}
%
% \begin{macro}{dancecount}
% \begin{macro}{partcount}
% \changes{0.2}{2013/02/15}{Create a counter for the current musical part}
+% \changes{0.3}{2013/02/21}{Change to contain the count, not the part itself}
% \begin{macro}{phrasecount}
% \changes{0.2}{2013/02/15}{Create a counter for the current musical phrase}
-% Next, we'll create some counters that will help us keep track 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}).
+% \changes{0.3}{2013/02/21}{Change to contain the count, not the phrase itself}
+% \begin{macro}{dancepart}
+% \changes{0.3}{2013/02/21}{Create a new counter for the current phrase}
+% \begin{macro}{dancephrase}
+% \changes{0.3}{2013/02/21}{Create a new counter for the current phrase}
+% 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).
% \begin{macrocode}
\newcounter{dancecount}
\newcounter{partcount}
\newcounter{phrasecount}
+\newcounter{dancepart}
+\newcounter{dancephrase}
% \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
+% \end{macro}
+% \end{macro}
%
-% \begin{macro}{\progressed}
+% \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 progressed}. This does not
-% strictly indicate progression, but it will be intuitive for most callers.
+% 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.
% \begin{macrocode}
-\newcommand*{\progressed}{\setcounter{phrasecount}{1}}
+\newcommand*{\resetdancephrase}{%
+ \ifthenelse{\value{partcount}=16}{\newline}{}%
+ \@ifstar{\@resetdancephraseStar}{\@resetdancephraseNoStar}%
+}
+\newcommand*{\@resetdancephraseStar}{%
+ \setcounter{dancephrase}{1}%
+ \setcounter{phrasecount}{0}%
+ \resetdancepart*
+}
+\newcommand*{\@resetdancephraseNoStar}{%
+ \ifthenelse{\value{dancephrase}=1}{}{%
+ \setcounter{dancephrase}{1}%
+ \setcounter{phrasecount}{0}%
+ \resetdancepart
+ }%
+}
+\newcommand*{\resetdancepart}{%
+ \@ifstar{\@resetdancepartStar}{\@resetdancepartNoStar}%
+}
+\newcommand*{\@resetdancepartStar}{%
+ \setcounter{dancepart}{1}%
+ \setcounter{partcount}{0}%
+}
+\newcommand*{\@resetdancepartNoStar}{%
+ \ifthenelse{\value{dancepart}=1}{}{%
+ \setcounter{dancepart}{1}%
+ \setcounter{partcount}{0}%
+ }%
+}
% \end{macrocode}
% \end{macro}
+% \end{macro}
%
-% \subsection{Formatting}
-%
-% There are also some options to determine how the environment will be
-% formatted.
-%
-% \begin{macro}{\defaultcontraenv}
-% \changes{0.1}{2013/02/14}{Allow user to format moves}
-% By default, all contra moves are wrapped in the \code{flushleft} environment.
-% To change this you can renew \code{\textbackslash defaultcontraenv}.
+% \begin{macro}{\newdancephrase}
+% \changes{0.3}{2013/02/21}{Allow user to manually start a new phrase}
+% \begin{macro}{\newdancepart}
+% \changes{0.3}{2013/02/21}{Allow user to manually start a new part}
+% The user can also manually start a new phrase or part:
% \begin{macrocode}
-\newcommand*{\defaultcontraenv}{flushleft}
+\newcommand*{\newdancephrase}{%
+ \ifthenelse{\not\value{phrasecount}=0\and\not\value{phrasecount}=32}{\newline}{}%
+ \addtocounter{dancephrase}{1}%
+ \setcounter{phrasecount}{0}%
+ \resetdancepart*
+}
+\newcommand*{\newdancepart}{%
+ \addtocounter{dancepart}{1}%
+ \setcounter{partcount}{0}%
+}
% \end{macrocode}
% \end{macro}
-%
-% \section{The Meat}
-%
-% Next we'll define the meat of the \pkg{contracard} package: The \code{contra}
-% environment and the \code{\textbackslash move} command.
+% \end{macro}
%
% \subsection{The \code{contra} environment}
%
% \begin{macro}{contra}
% \changes{0.1}{2013/02/14}{Create contra environment}
-% The contra environment is pretty simple. It clears the page, resets the
-% various counters, and displays some information about the dance.
+% The contra environment is pretty simple. It resets the various counters, and
+% displays some information about the dance---if it is used inside of the
+% \pkg{contracard} class, it also clears the page and moves the dance form into
+% the header.
% \begin{macrocode}
\newenvironment{contra}[4][\defaultcontraenv]{%
- \clearpage
\setcounter{dancecount}{0}
- \setcounter{partcount}{1}
- \setcounter{phrasecount}{1}
- \thispagestyle{fancy}
- \rhead{#4}
- \section*{#2}
- {#3}
+ \resetdancepart*
+ \resetdancephrase*
+ \ifdefined\@ccisclass\clearpage\fi%
+ \begin{\dancetitleenv}
+ \ifdefined\@ccisclass%
+ \pagestyle{myheadings}
+ \thispagestyle{myheadings}
+ \markboth{}{\danceformformat{#4}}
+ \else%
+ {\danceformformat{#4}}%
+ \fi%
+ {\dancetitleformat{#2}}%
+ {\danceauthorformat{#3}}%
+ \end{\dancetitleenv}
\newcommand*{\@contraenv}{#1}
\begin{\@contraenv}
}{%
@@ -282,28 +361,119 @@
%
% \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.
% \begin{macrocode}
\newcommand*{\move}[2][16]{%
+ \ifthenelse{\value{partcount}=16}{\newline}{}%
+ \ifthenelse{\value{phrasecount}=32}{%
+ \newdancephrase%
+ }{%
+ \ifthenelse{\value{partcount}=16}{%
+ \newdancepart%
+ }{}%
+ }
\ifthenelse{\intcalcMod{\value{dancecount}}{16}=0}{%
- \Alph{phrasecount}\arabic{partcount}.\ %
+ \Alph{dancephrase}\arabic{dancepart}\partdelimiter\ %
}{}%
\addtocounter{dancecount}{#1}%
+ \addtocounter{phrasecount}{#1}%
+ \addtocounter{partcount}{#1}%
#2%
- \ifthenelse{\intcalcMod{\value{dancecount}}{8}=0
- \and\not\intcalcMod{\value{dancecount}}{16}=0}{;}{\nopagebreak}%
- \ifthenelse{\not\intcalcMod{\value{dancecount}}{8}=0}{,}{\nopagebreak}%
- \ifthenelse{\intcalcMod{\value{dancecount}}{32}=0}{%
- \addtocounter{phrasecount}{1}\setcounter{partcount}{0}\pagebreak[1]%
- \vspace{1em}}{}%
- \ifthenelse{\intcalcMod{\value{dancecount}}{16}=0}{%
- \addtocounter{partcount}{1}\newline}{}%
+ \ifthenelse{\value{phrasecount}=32}{%
+ \pagebreak[1]\vspace{1em}%
+ }{}%
+ \ifthenelse{\value{partcount}=8}{\midpartdelimiter\nopagebreak}{%
+ \ifthenelse{\not\value{partcount}=16}{\movedelimiter\nopagebreak\nolinebreak[2]}{}}%
}
% \end{macrocode}
% \end{macro}
%
+% \begin{macrocode}
+%</contracard-pkg>
+%<*contracard-cls>
+% \end{macrocode}
+%
+% \section{The \pkg{contracard} class}
+%
+% The Contra Card project also provides a class (also called \pkg{contracard})
+% that 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.
+%
+% \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{macrocode}
+\DeclareOption{small}{%
+ \AtBeginDocument{%
+ \titleformat{\section}{\normalsize\bfseries}{\thesection}{1em}{}%
+ \titleformat{\subsection}{\normalsize}{\thesection}{1em}{}%
+ }
+ \PassOptionsToPackage{%
+ margin=0.25in,top=0.75in,paperwidth=5in,paperheight=3in%
+ }{geometry}%
+}
+\DeclareOption{medium}{%
+ \AtBeginDocument{\large}
+ \PassOptionsToPackage{%
+ margin=0.5in,top=0.75in,paperwidth=6in,paperheight=4in%
+ }{geometry}%
+}
+\DeclareOption{large}{%
+ \AtBeginDocument{\Large}
+ \PassOptionsToPackage{%
+ margin=0.75in,top=1in,paperwidth=8in,paperheight=5in%
+ }{geometry}%
+}
+\DeclareOption{a7paper}{%
+ \AtBeginDocument{%
+ \titleformat{\section}{\normalsize\bfseries}{\thesection}{1em}{}%
+ \titleformat{\subsection}{\normalsize}{\thesection}{1em}{}%
+ }
+ \PassOptionsToPackage{%
+ margin=5mm,top=15mm,paperwidth=105mm,paperheight=74mm%
+ }{geometry}%
+}
+\DeclareOption*{%
+ \PassOptionsToClass{\CurrentOption}{article}%
+}
+% \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}
+%
+% \subsection{Environment setup}
+%
+% The \pkg{contracard} class does a little extra work to turn off headers, and
+% prevent page numbering:
+%
+% \begin{macrocode}
+\AtBeginDocument{\pagestyle{empty}}
+\AtBeginDocument{\pagenumbering{gobble}}
+% \end{macrocode}
+% It also defines a command \code{\textbackslash @ccisclass} to let the
+% \pkg{contracard} package know that it was called via the class:
+% \begin{macrocode}
+\newcommand*{\@ccisclass}{}
+\ProcessOptions\relax
+%</contracard-cls>
+% \end{macrocode}
+%
% \section{Examples}
%
% A few examples are contained below:
@@ -319,31 +489,98 @@
% \move[8]{Balance and petronella}
% \move[8]{Partner swing}
% \move[8]{Left diagonal: Right and left through}
+% \vspace*{2em}
+% \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}
%
-% \subsection{Cherokee Shuffle by David Kaynor}
-%
-% \begin{Verbatim}
-% \begin{contra}{Cherokee Shuffle}{David Kaynor}{Duple improper}
-% \move[8]{Circle left}
+% \begin{exampledance}
+% \begin{contra}{Code's Compiling}{Sam Whited}{Duple becket}
% \move[8]{Neighbor dosido}
-% \move{Neighbor balance and swing}
-% \move[4]{Men allemande left \textonehalf}
-% \move[4]{Balance in a wave}
+% \move[8]{Partner see saw}
+% \move{Shadow swing}
+% \move[8]{Balance and petronella}
+% \move[8]{Balance and petronella}
% \move[8]{Partner swing}
-% \move[8]{Circle left \textthreequarters}
-% \move[4]{Balance the ring}
-% \move[4]{Partner california twirl}
+% \move[8]{Left diagonal: Right and left through}
+% \vspace*{2em}
+% \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}
+%
+% \begin{Verbatim}
+% \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*{2em}
+% \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}
+% \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}
+% \newdancephrase
+% \move[16]{Partner balance and swing}
+% \newdancephrase
+% \move[8]{\textonehalf\ promenade across set}
+% \move[8]{Ladies chain}
+% \vspace*{2em}
+% \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}
%
-% Now that everything is defined we can process any
-% \hyperlink{CONTRACARD:OPTIONS}{options} that were passed in by the user:
-% \begin{macrocode}
-\ProcessOptions\relax
-%</contracard>
-% \end{macrocode}
+% \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*{2em}
+% \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}
+% \begin{exampledance}
+% \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}
+% \newdancephrase
+% \move[16]{Partner balance and swing}
+% \newdancephrase
+% \move[8]{\textonehalf\ promenade across set}
+% \move[8]{Ladies chain}
+% \vspace*{2em}
+% \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}
%
% \clearpage
% \setcounter{IndexColumns}{2}
@@ -367,12 +604,20 @@
%<*doc-style>
% \begin{macrocode}
\ProvidesPackage{contracard-style}
-\usepackage{fancyvrb,hologo,framed,multicol,url}
+\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}{%
+ \begin{minipage}{\textwidth}
+ \vspace{3em}
+}{%
+ \end{minipage}
+}
+
\newcommand*{\gittag}{%
\immediate\write18{%
rm gittag.tex 2> /dev/null; (git describe --tags --dirty || echo "v0.0") 2> /dev/null > gittag.tex