\documentclass[a4paper,KOMA,landscape]{powersem}

\usepackage[stmo,button,display]{ifmslide}
%\usepackage[stmo,button]{ifmslide}
%\usepackage[draft]{ifmslide}
\definecolor{background}{gray}{.9}

%\nobuttons
%% user definitions
\newcommand{\ticket}{{\code{ticket.sty}}}
\newcommand{\bs}{{\mtt\\}}

\hypersetup{pdfauthor={Thomas Emmel}}
\hypersetup{pdftitle={ticket manual}}
\hypersetup{pdfsubject={ticket.sty}}

\IfFileExists{cmtt.sty}{\usepackage{cmtt}}{}

\usepackage{verbatim}
\usepackage{amssymb}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{document}
\panelposition{bottom}
\pageTransitionDissolve
\sffamily

\title{\begin{minipage}[t]{0.98\textwidth}\begin{center}
      {\mdseries \ticket{} v0.4b November 30, 2010}\\[1ex]
      Making labels, visiting cards, pins and flash-cards with \LaTeX\\[1ex]
      A short introduction
    \end{center}\end{minipage}}

\author{\scalebox{1}[1.1]{Thomas Emmel} \href{mailto:thomas@family-emmel.de}%
  {thomas@family-emmel.de}}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\slidepagestyle{empty}
\releasebutton \buttonsize(10mm,4mm)(8,8) \freebutton(263,180)[h]
\begin{slide}
  \maketitle
\end{slide}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\hidebackground
\pageTransitionReplace
\centerslidesfalse
\begin{slide}
  \section{A short introduction}

  \ticket{} provides a simple interface to produce 
  visiting (or calling) cards, labels for your files, stickers, pins and
  other stuff for your office, conferences etc.\\[2ex]
  All you need is a definition of your \lq{}ticket\rq{} included in
  a ticket definition file (\code{.tdf}),\\
  $\rightarrowtail$ see \hyperlink{tdf}{ticket definition file}\\
  and the two commands \code{\bs{}ticketdefault} and \code{\bs{}ticket}.\\
  $\rightarrowtail$ see \hyperlink{ticket}{how to fill your ticket}\\[2ex]
  See these examples to get an idea what you can get:\\
  $\rightarrowtail$ \href{ex_file.pdf}{\code{ex\_file}} back labels for your files...\\
  $\rightarrowtail$ \href{ex_pin.pdf}{\code{ex\_pin}}  pins for a conference...\\
  $\rightarrowtail$ \href{ex_vcard.pdf}{\code{ex\_vcard}} visiting-cards (also business cards, name cards...)\\
  $\rightarrowtail$ \href{ex_marks.pdf}{\code{ex\_marks}} different markers used...\\
  $\rightarrowtail$ \href{ex_flashcard.pdf}{\code{ex\_flashcard}} flash-cards, try it...\\
  $\rightarrowtail$ \href{ex_flashcard_dup.pdf}{\code{ex\_flashcard\_dup}} in duplex mode\\
  $\rightarrowtail$ \href{ex_flashcard_rm.pdf}{\code{ex\_flashcard\_rm}} in rows\\
\end{slide}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{slide}
  \section{How to use it}

  Just add this line to the header of your latex-file:

  \code{\bs{}usepackage[{\itshape tdf-file,other options}]\{ticket\}}

  Use the letter or article documentclass and 
  set up the paper-size that you need.
\end{slide}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{slide}
  \section{The ticket definition file}\hypertarget{tdf}{}
A sample ticket definition (\code{lz1680.tdf}) for a \lq{}LEITZ\rq{}-product is:\\[-4ex]
\begin{quote}
  \begin{minipage}[t]{0.5\textwidth}
    {\scriptsize
\begin{verbatim}
%%
%% ticket for "Leitz 1680" 
%% pre-cutted label for wide files
%%
\unitlength=1mm

%% tested for an HP5SiMX, adjust it for your printer
\hoffset=-16.2mm
\voffset=-6.6mm

\ticketNumbers{1}{4}

\ticketSize{189}{56.5}     % in unitlength
\ticketDistance{0}{9.8}    % in unitlength
\end{verbatim}
      }
    \end{minipage}
\end{quote}
The meaning of \code{\bs{}unitlength} is obvious, \code{\bs{}hoffset} and 
\code{\bs{}voffset} are used to adjust the printed output.
\code{\bs{}ticketNumbers\{n$_x$\}\{n$_y$\}} are the number of the tickets
on the sheet in horizontal and vertical direction.
\code{\bs{}ticketSize\{width\}\{height\}} is the size of one ticket and
\code{\bs{}ticketDistance\{dist$_x$\}\{dist$_y$\}} are spaces
between the tickets.
\end{slide}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{slide}
  \section{Missing the ticket definition file}
If you like to test a new ticket definition or you like to create only a single output without reusing those definitions anymore, \ticket{} assumes default values which can be
redefined in your file.\\
Simply call \ticket{} without any ticket definition:

\code{\bs{}usepackage[{\itshape other options}]\{ticket\}}

and add your definitions directly to the head of the file after loading ticket.sty.
\end{slide}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{slide}
  \section{How to fill your ticket}\hypertarget{ticket}{}%
  \ticket{} enables a picture-environment for all tickets. 
  You can put things 
  into this picture with \code{\color{red}\bs{}ticketdefault} and \code{\color{red}\bs{}ticket}.
  Both commands offer one argument.\\
  \code{\color{red}\bs{}ticketdefault} is used to put a default and unique background to your  ticket, that will be -- of course -- not changed for all tickets unless
  you change it with \code{\bs{}renewcommand}:\\[-5ex]
  \begin{quote}
    \begin{minipage}[t]{.5\textwidth}
      {\scriptsize
\begin{verbatim}
\renewcommand{\ticketdefault}{%
    \put(100, 5){\includegraphics[width=35mm]{ifmlogoc}}%
    \put(100,50){\begin{rotate}{180}\Huge ...\end{rotate}}%
    }
\end{verbatim}
        \normalsize
        }
    \end{minipage}
  \end{quote}
  \code{\color{red}\bs{}ticket} is used to provide the content which will be changed
  for the individual tickets. The simplest way to do that is to define a new 
  command like this:\\[-5ex]
  \begin{quote}
    \begin{minipage}[t]{0.5\textwidth}
      {\scriptsize
\begin{verbatim}
\newcommand{\myticket}[3]{\ticket{%
    \put(  0, 5){#1}%
    \put( 20,20){{\bfseries\large#2}\\#3}%
    }}
\end{verbatim}
        }
    \end{minipage}
  \end{quote}
\end{slide}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\def\cross{%
  \begin{picture}(0,0)%
    \put(-2,0){\line(1,0){4}}\put(0,-2){\line(0,1){4}}%
    \end{picture}}%
\begin{slide}
  \section{Additional Options}
Most of the options other than the tdf-file are used to create marks
or decorations around the ticket:\\
\begin{picture}(0,0)(-350,10)\color{red}
  \put(0,0){\cross}%
  \put(0,10){\cross}%
  \put(20,0){\cross}%
  \put(20,10){\cross}%
\end{picture}%
\begin{picture}(0,0)(-380,10)\color{red}
  \put(0,0){\cross}%
  \put(0,10){\cross}%
  \put(20,0){\cross}%
  \put(20,10){\cross}%
\end{picture}%
{\color{red}\bfseries crossmark   \\}
Add a cross at all four corners of the ticket\\
\begin{picture}(0,0)(-350,10)\color{red}
  \put(0,0){\circle{2}}%
  \put(0,10){\circle{2}}%
  \put(20,0){\circle{2}}%
  \put(20,10){\circle{2}}%
\end{picture}%
\begin{picture}(0,0)(-380,10)\color{red}
  \put(0,0){\circle{2}}%
  \put(0,10){\circle{2}}%
  \put(20,0){\circle{2}}%
  \put(20,10){\circle{2}}%
\end{picture}%
{\color{red}\bfseries circlemark     \\}
Add a circle at all four corners\\
\begin{picture}(0,0)(-350,10)\color{red}
  \put(-1,0){\line(-1,0){2}}
  \put(0,-1){\line(0,-1){2}}
  \put(-1,10){\line(-1,0){2}}
  \put(0,11){\line(0,1){2}}
  \put(21,0){\line(1,0){2}}
  \put(20,-1){\line(0,-1){2}}
  \put(21,10){\line(1,0){2}}
  \put(20,11){\line(0,1){2}}
\end{picture}%
\begin{picture}(0,0)(-380,10)\color{red}
  \put(-1,0){\line(-1,0){2}}
  \put(0,-1){\line(0,-1){2}}
  \put(-1,10){\line(-1,0){2}}
  \put(0,11){\line(0,1){2}}
  \put(21,0){\line(1,0){2}}
  \put(20,-1){\line(0,-1){2}}
  \put(21,10){\line(1,0){2}}
  \put(20,11){\line(0,1){2}}
\end{picture}%
{\color{red}\bfseries emptycrossmark \\}
A crossmark where the part of the cross inside the ticket is not visible\\
\begin{picture}(0,0)(-350,10)\color{red}
  \put(-1,0){\line(-1,0){2}}
  \put(0,-1){\line(0,-1){2}}
  \put(-1,10){\line(-1,0){2}}
  \put(0,11){\line(0,1){2}}
  \put(20,-1){\line(0,-1){2}}
  \put(20,11){\line(0,1){2}}
\end{picture}%
\begin{picture}(0,0)(-380,10)\color{red}
  \put(0,-1){\line(0,-1){2}}
  \put(0,11){\line(0,1){2}}
  \put(21,0){\line(1,0){2}}
  \put(20,-1){\line(0,-1){2}}
  \put(21,10){\line(1,0){2}}
  \put(20,11){\line(0,1){2}}
\end{picture}%
{\color{red}\bfseries cutmark        \\}
Just add cutmarks at the outer region of the page\\
\begin{picture}(0,0)(-350,10)\color{red}
  \put(0,0){\line(0,1){10}}
  \put(0,0){\line(1,0){20}}
  \put(20,10){\line(-1,0){20}}
  \put(20,10){\line(0,-1){10}}
\end{picture}%
\begin{picture}(0,0)(-380,10)\color{red}
  \put(0,0){\line(0,1){10}}
  \put(0,0){\line(1,0){20}}
  \put(20,10){\line(-1,0){20}}
  \put(20,10){\line(0,-1){10}}
\end{picture}%
{\color{red}\bfseries boxed          \\}
Add a frame around each ticket\\
The option {\color{red}\bfseries rowmode} creates the tickets in rows instead of columns,
which might be useful in some cases.
\end{slide}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{slide}
  \section{Special commands}
You can add additional page-breaks with \code{\bs{}newpage\bs{}ticketreset}. This clears the ticket-buffers and sets the corresponding values to initial values.

This can be used if you create a handful of tickets multiple times.

The command \code{\bs{}backside} is useful for flash-cards, see the use-cases below.
\end{slide}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{slide}
  \section{Organising and reading input}
  In general it is a good idea to create a file that contains all definitions and the whole latex-setup and a second file that contains only the data that you like to print which can be referenced by \code{\bs{}input}. 

For example, if you reference a huge database of names of people which are used for the pins of a conference, you can easily write a script (perl, python...) that extracts the data to a file that is itself latex-formated with a \code{\bs{}myticket\{  \}\{  \}\{  \}} on each line.

Sometimes -- of course -- you only have to print only a small amount of data and all data can easily be written to a single file. 

Sometimes a small generator-function can help to create numbers on tickets:

\begin{quote}
    \begin{minipage}[t]{0.5\textwidth}
      {\scriptsize
\begin{verbatim}
\newcounter{numcards}
...
\begin{document}
...
\whiledo{\thenumcards<25}{\stepcounter{numcards}\acard{\thenumcards}}%
\end{verbatim}
        }
    \end{minipage}
\end{quote}

\end{slide}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{slide}
  \section{Use-cases}
  Some examples were referenced at the beginning of this manual. I will finish this short introduction with an overview of special examples and their implementations:

\subsection{Files and pins}
This is a simple example for your files. The same applies to pins. Start with a \code{\bs{}ticketdefault}, with this background:
\begin{quote}
    \begin{minipage}[t]{0.5\textwidth}
      {\scriptsize
\begin{verbatim}
\renewcommand{\ticketdefault}{%
  \put(155,5){\begin{sideways}%
      \includegraphics[width=35mm]{ifmlogoc}\end{sideways}}%
  \put(150,50){\begin{rotate}{180}\Huge C O M P U T E R\end{rotate}}%
}
\end{verbatim}
        }
    \end{minipage}
\end{quote}
\end{slide}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{slide}
\vspace*{10mm}
Now, create the content of the \code{\bs{}ticket} which differs:
\begin{quote}
    \begin{minipage}[t]{0.5\textwidth}
      {\scriptsize
\begin{verbatim}
\newcommand{\filelabel}[3]{\ticket{%
    \put(33,48){\begin{sideways}\bfseries\Large#1\end{sideways}}%
    \put(43,5){\begin{sideways}%
        \begin{minipage}[t]{50mm}%
          {\bfseries\large#2}\\[2ex]\large#3%
        \end{minipage}%
      \end{sideways}}%
}}
\end{verbatim}
        }
    \end{minipage}
\end{quote}

And fill the tickets:
\begin{quote}
    \begin{minipage}[t]{0.5\textwidth}
      {\scriptsize
\begin{verbatim}
\begin{document}
...
\filelabel{1}{\LaTeX{} - styles}{Standard styles\\Own styles\\%
  \hspace*{5mm}\bfseries ifmslide\\\hspace*{5mm}\bfseries ticket}%
...
\end{verbatim}
        }
    \end{minipage}
\end{quote}
\end{slide}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{slide}\vspace*{-4mm}
\subsection{Visiting-cards}
In this example, the \code{\bs{}ticketdefault} is empty, since we need a front and and background that differs:
\begin{quote}
    \begin{minipage}[t]{0.5\textwidth}
      {\scriptsize
\begin{verbatim}
\renewcommand{\ticketdefault}{}%

\newcommand{\vcardfront}[5]{\ticket{%
    \put( 63, 5){\includegraphics[width=40mm,angle=90,origin=bl]{ifmlogoc}}
    \put( 63.2, 2){\color{uni}your logo}
    \put( 5, 13){\color{uni}\line(1,0){56}}
    \put( 7, 10){\small your company}
    \put( 7,6.5){\small street 1}\put( 7,  3){\small xxxxx city and state}
    \put( 7, 24){\small phone:}\put( 7, 20){\small fax:}
    \put(6,40){\bfseries\LARGE #1}
    \put(7,36){#2}\put(15,24){\small #3}\put(15,20){\small #4}\put( 7,16){\small #5}
 }}

\newcommand{\vcardback}[1]{\ticket{%
    \put( 7, 26){\small private:}
    \put( 5, 23){\color{uni}\line(1,0){56}}
    \put( 7,19){\small%
        \begin{minipage}[t]{50mm}{#1}\hss\end{minipage}}%
}}
\end{verbatim}
        }
    \end{minipage}
\end{quote}
\end{slide}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{slide}\vspace*{10mm}
And fill the tickets:
\begin{quote}
    \begin{minipage}[t]{0.5\textwidth}
      {\scriptsize
\begin{verbatim}
% a counter, which makes life easier...
\newcounter{numcards}

\begin{document}
...
% ten cards for the front
\whiledo{\thenumcards<10}{%
  \stepcounter{numcards}%
  \vcardfront{Mr. X}{Degree/Profession}{+YY/XXXX/ZZZ ZZ ZZ}{+YY/XXXX/ZZZ ZZ ZZ}
                    {yourmail@your-provider.xxx}}
\setcounter{numcards}{0}
% and ten for the backside
\whiledo{\thenumcards<10}{%
  \stepcounter{numcards}%
  \vcardback{phone: ---/HH HH HHH\\fax: ---/HH HH HHH\\homestreet 7\\everywhere}}
...
\end{verbatim}
        }
    \end{minipage}
\end{quote}
\end{slide}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{slide}\vspace*{-4mm}
\subsection{Flashcards}
In this case we work with two different \code{\bs{}ticket}-definitions since we have a file
with two different commands. However, this can be changed according to your taste:
\begin{quote}
    \begin{minipage}[t]{0.5\textwidth}
      {\scriptsize
\begin{verbatim}
% now what do you like to put in your ticket
\newcommand{\card}[2]{\ticket{%
    \put(32.5,15){\makebox[0mm]{\centering{\huge{\textbf{#1}}}}}
 }}
\newcommand{\raiz}[3]{\ticket{%
    \put(2,31){{$\sqrt{\enspace}$}}
    \put(32.5,15){\makebox[0mm]{{\huge{\textit{{ #1 }}}}}}
}}
\end{verbatim}
        }
    \end{minipage}
\end{quote}

All data is in a file:
\begin{quote}
    \begin{minipage}[t]{0.5\textwidth}
      {\scriptsize
\begin{verbatim}
...
\begin{document}
\input{words}
\end{verbatim}
        }
    \end{minipage}
\end{quote}
\end{slide}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{slide}\vspace*{10mm}
Now change the command for the backside:
\begin{quote}
    \begin{minipage}[t]{0.5\textwidth}
      {\scriptsize
\begin{verbatim}
\renewcommand{\card}[2]{\ticket{%
    \put(3,30){\parbox{58mm}{\large{\textbf{ #1:}}}}%
    \put(4,23){\parbox[t]{58mm} {\small {\blt #2}}}%
 }}
\renewcommand{\raiz}[3]{\ticket{%
    \put(3,30){\parbox{58mm}{\textbf{#1:} #2}}%
    \put(3,13){\parbox{58mm}{#3}}%
 }}
\end{verbatim}
        }
    \end{minipage}
\end{quote}

Use the special command \code{\bs{}backside}, do some further adjustment for your printer and reread the file:
\begin{quote}
    \begin{minipage}[t]{0.5\textwidth}
      {\scriptsize
\begin{verbatim}
\backside%
\oddsidemargin=8pt
\input{words}
...
\end{verbatim}
        }
    \end{minipage}
\end{quote}

If you want to print this on a duplex-printer rearrange the pages with this command for example:
\begin{quote}
    \begin{minipage}[t]{0.5\textwidth}
      {\scriptsize
\begin{verbatim}
psselect -p1,3,2,4 ex_flashcard.ps ex_flashcard_dup.ps ...
\end{verbatim}
        }
    \end{minipage}
\end{quote}
\end{slide}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{slide}
  \section{Acknowledgements...}
  Many thanks to those who used ticket.sty for many years and helped
  to find some small bugs and those who provided ticket-definition-files (tdf)
  and suggestions for new features.
  
  Many special thanks to Santiago Mejia who created an initial version
  of the flash-card use-case.
\end{slide}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\end{document}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% LocalWords:  Emmel tdf ticketdefault pdf vcard usepackage documentclass lz
% LocalWords:  LEITZ unitlength hoffset voffset ticketNumbers ticketSize dist
% LocalWords:  ticketDistance renewcommand crossmark circlemark emptycrossmark
% LocalWords:  cutmark newpage ticketreset perl myticket todo Mejia
