\documentclass[aspectratio=1610,hyperref={pdfpagelabels=false}]{beamer} \usetheme{Bergen} %\nobuttons %% user definitions \def\code#1{\texttt{#1}} \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} \sffamily \title{\begin{minipage}[t]{0.98\textwidth}\begin{center} {\mdseries \ticket{} v0.4d October 11, 2016}\\[1ex] Making labels, business 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}} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \begin{frame} \maketitle \end{frame} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \begin{frame} \frametitle{A short introduction} \begin{block}{\ticket{}} provides a simple interface to produce \end{block} business 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:\\ \begin{exampleblock}{\href{ex_file.pdf}{\code{ex\_file}}}back labels for your files...\end{exampleblock} \begin{exampleblock}{\href{ex_pin.pdf}{\code{ex\_pin}}}pins for a conference...\end{exampleblock} \begin{exampleblock}{\href{ex_vcard.pdf}{\code{ex\_vcard}}} business-cards...\end{exampleblock} \begin{exampleblock}{\href{ex_marks.pdf}{\code{ex\_marks}}} different markers used...\end{exampleblock} \begin{exampleblock}{\href{ex_flashcard.pdf}{\code{ex\_flashcard}}} flash-cards, try it...\end{exampleblock} \begin{exampleblock}{\href{ex_flashcard_dup.pdf}{\code{ex\_flashcard\_dup}}}in duplex mode\end{exampleblock} \begin{exampleblock}{\href{ex_flashcard_rm.pdf}{\code{ex\_flashcard\_rm}}}in rows\end{exampleblock} \end{frame} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \begin{frame} \frametitle{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{frame} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \begin{frame}[fragile] \frametitle{The ticket definition file}\hypertarget{tdf}{} A sample ticket definition (\code{lz1680.tdf}) for a \lq{}LEITZ\rq{}-product is:\\ \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{frame} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \begin{frame} \frametitle{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{frame} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \begin{frame}[fragile] \frametitle{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.\\ \begin{exampleblock}{\code{\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:\\ % \begin{quote} \begin{minipage}[t]{.5\textwidth} {\scriptsize \begin{verbatim} \renewcommand{\ticketdefault}{% \put(100, 5){\includegraphics[width=35mm]{logo}}% \put(100,50){\begin{rotate}{180}\Huge ...\end{rotate}}% } \end{verbatim} \normalsize } \end{minipage} % \end{quote} \end{exampleblock} \begin{exampleblock}{\code{\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:\\ % \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{exampleblock} \end{frame} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \def\cross{% \begin{picture}(0,0)% \put(-2,0){\line(1,0){4}}\put(0,-2){\line(0,1){4}}% \end{picture}}% \begin{frame} \frametitle{Additional Options} Most of the options other than the tdf-file are used to create marks or decorations around the ticket:\\ \begin{alertblock}{crossmark% \begin{picture}(23,0)(-5,0)\color{red} \put(0,0){\cross}% \put(0,8){\cross}% \put(17,0){\cross}% \put(17,8){\cross}% \end{picture}} Add a cross at all four corners of the ticket \end{alertblock} \begin{alertblock}{circlemark% \begin{picture}(23,0)(-5,0)\color{red} \put(0,0){\circle{2}}% \put(0,8){\circle{2}}% \put(17,0){\circle{2}}% \put(17,8){\circle{2}}% \end{picture}% } Add a circle at all four corners \end{alertblock} \begin{alertblock}{emptycrossmark% \begin{picture}(23,0)(-5,0)\color{red} \put(-1,0){\line(-1,0){2}} \put(0,-1){\line(0,-1){2}} \put(-1,8){\line(-1,0){2}} \put(0,11){\line(0,1){2}} \put(18,0){\line(1,0){2}} \put(17,-1){\line(0,-1){2}} \put(18,8){\line(1,0){2}} \put(17,11){\line(0,1){2}} \end{picture}% } A crossmark where the part of the cross inside the ticket is not visible \end{alertblock} \begin{alertblock}{cutmark% \begin{picture}(23,0)(-5,0)\color{red} \put(0,-1){\line(0,-1){2}} \put(0,11){\line(0,1){2}} \put(18,0){\line(1,0){2}} \put(17,-1){\line(0,-1){2}} \put(18,8){\line(1,0){2}} \put(17,11){\line(0,1){2}} \end{picture}% } Just add cutmarks at the outer region of the page \end{alertblock} \begin{alertblock}{boxed% \begin{picture}(23,0)(-5,0)\color{red} \put(0,0){\line(0,1){8}} \put(0,0){\line(1,0){17}} \put(17,8){\line(-1,0){17}} \put(17,8){\line(0,-1){8}} \end{picture}% } Add a frame around each ticket \end{alertblock} \begin{alertblock}{rowmode} This option creates the tickets in rows instead of columns, which might be useful in some cases. \end{alertblock} \end{frame} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \begin{frame} \frametitle{Special commands} \begin{exampleblock}{reset tickets} 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. \end{exampleblock} \begin{exampleblock}{\code{\bs{}backside}} is useful for flash-cards, see the use-cases below. \end{exampleblock} \begin{exampleblock}{skip tickets} Once you printed a series of tickets you mostly end up with some empty stickers on your sheet. In this case use \code{\bs{}ticketskip\{5\}} to skip 5 tickets (New feature) \end{exampleblock} \end{frame} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \begin{frame}[fragile] \frametitle{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{frame} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \begin{frame} \frametitle{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... \end{frame} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \begin{frame}[fragile] \begin{block}{Files and pins} This is a simple example for your files. \end{block} 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]{logo}\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{frame} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \begin{frame}[fragile] \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 ...\\\hspace*{5mm}\bfseries ticket}% ... \end{verbatim} } \end{minipage} \end{quote} \end{frame} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \begin{frame}[fragile]\vspace*{-4mm} \begin{block}{Business-cards} In this example, the \code{\bs{}ticketdefault} is empty, since we need a front and and background that differs: \end{block} \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]{logo}} \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{frame} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \begin{frame}[fragile]\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{frame} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \begin{frame}[fragile]\vspace*{-4mm} \begin{block}{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: \end{block} \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{frame} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \begin{frame}[fragile]\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{frame} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \begin{frame} \frametitle{Acknowledgements...} \begin{block}{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. \end{block} Many special thanks to Santiago Mejia who created an initial version of the flash-card use-case. \end{frame} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \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