\documentclass[a4paper,12pt,twoside]{book} \usepackage{bierbook-style} % All required packages should be included in bierbook-style \newcommand{\expotitle}{ % makes the title page \thispagestyle{empty} \centering \ \vspace{3cm}\\ {\Large Cambridge University Caving Club} \vspace{3cm}\\ {\Huge \bf Expo \the\year} \vspace{3cm}\\ {\fontsize{100}{120}\selectfont Bier Book} \vspace{6 cm}\\ {[}Stick obligatory G{\"o}sser label here{]} \vfill \clearpage } \newcommand{\expoheading}[1]{ % provides the formatting for a title of a section \vspace{10pt} {\LARGE #1} \vspace{20pt} } \newcommand{\tallyeveryone}[3]{ % argument is the title, second is the subtitle, third is starting number for the tally % longtable, generated from the list of names % uses tallyline for each line \addcontentsline{toc}{section}{#1} \openin\namesread=names.txt \setcounter{linecount}{0} \begin{longtable}{rc} \multicolumn{2}{l}{\expoheading{#1}} \\ \multicolumn{2}{p{\textwidth}}{#2} \\ & \tallynumbers{#3} \\ \endfirsthead \multicolumn{2}{p{\textwidth}}{#2} \\ & \tallynumbers{#3} \\ \endhead & \tallynumbers{#3} \\ \endfoot \whiledo{\value{linecount}<\value{maxlines}}{ \stepcounter{linecount} \read\namesread to \currentname \tallyline{\currentname} } \end{longtable} \clearpage } \newcounter{maxspares} \newcommand{\tallyspares}[4]{ % argument is the title, second is the subtitle, third is starting number for the tally, fourth is the number of lines % longtable, generated from the list of names % uses tallyline for each line \addcontentsline{toc}{section}{#1} \openin\namesread=names.txt \setcounter{linecount}{0} \setcounter{maxspares}{#4} \begin{longtable}{rc} \multicolumn{2}{l}{\expoheading{#1}} \\ \multicolumn{2}{p{\textwidth}}{#2} \\ & \tallynumbers{#3} \\ \endfirsthead \multicolumn{2}{p{\textwidth}}{#2} \\ & \tallynumbers{#3} \\ \endhead & \tallynumbers{#3} \\ \endfoot \whiledo{\value{linecount}<\value{maxspares}}{ \tallyline{\ldots\ldots\ldots} \stepcounter{linecount} } \end{longtable} \clearpage } \newcommand{\tallyline}[1]{ % argument is the name on the line % boxes are a tikz grid \begin{tikzpicture} \pgfmathsetmacro{\wvar}{0.4} \node at (0,0.6*\wvar) [anchor=east] {#1}; \node at (0,0) {}; \node at (0,2*\wvar) {}; \end{tikzpicture} \and \begin{tikzpicture} \pgfmathsetmacro{\wvar}{0.4} \foreach \xvar in {0,1,2,3,4} { \foreach \yvar in {0,1} { \foreach \zvar in {0,5.5,11,16.5,22} { \draw (\xvar*\wvar+\zvar*\wvar,\yvar*\wvar) -- ++ (0,\wvar) -- ++ (\wvar,0) -- ++ (0,-\wvar) -- cycle; } } } \end{tikzpicture} \\ } \newcounter{tallynumber} \newcommand{\tallynumbers}[1]{ % argument is the starting number \setcounter{tallynumber}{#1} \begin{tikzpicture} \pgfmathsetmacro{\wvar}{0.4} \foreach \xvar in {0,5.5,11,16.5,22,27.5} { \node at (\xvar*\wvar,0) [anchor=center] {\arabic{tallynumber}}; \node at (\xvar*\wvar,0.4) {}; \addtocounter{tallynumber}{10} } \end{tikzpicture} } \newcommand{\drinksssubtitle}{ / = G{\"o}sser, X = Limo, R = Radler, W = Weissbier, D = Dunkelbier, L = Loserbier } \newcommand{\nightstally}[5]{ % arguments are the title, subheading information, and dates for the three weeks % longtable, generated from the list of names % uses nightstallyline for each line % footer of day of the week, possibly also as a second header under the dates \addcontentsline{toc}{section}{#1} \openin\namesread=names.txt \setcounter{linecount}{0} \begin{longtable}{rccc} \multicolumn{4}{l}{\expoheading{#1}} \\ \multicolumn{4}{p{14cm}}{#2} \\ \tikz{\node at (0,0.5) {}; \node at (0,0) {};} & #3 & #4 & #5 \\ \tikz{\node at (0,0.5) {}; \node at (0,0) {};} & \weekdays & \weekdays & \weekdays \\ \endfirsthead \tikz{\node at (0,0.5) {}; \node at (0,0) {};} & #3 & #4 & #5 \\ \tikz{\node at (0,0.5) {}; \node at (0,0) {};} & \weekdays & \weekdays & \weekdays \\ \endhead \tikz{\node at (0,0.5) {}; \node at (0,0) {};} & \weekdays & \weekdays & \weekdays \\ \endfoot \whiledo{\value{linecount}<\value{maxlines}}{ \stepcounter{linecount} \read\namesread to \currentname \nightstallyline{\currentname} } \end{longtable} \clearpage } \newcommand{\nightstallyline}[1]{ % argument is the name on the line % boxes are a tikz grid \begin{tikzpicture} \pgfmathsetmacro{\wvar}{0.4} \node at (0,0.6*\wvar) [anchor=east] {#1}; \node at (0,0) {}; \node at (0,\wvar) {}; \end{tikzpicture} \and \begin{tikzpicture} \pgfmathsetmacro{\wvar}{0.4} \foreach \xvar in {0,1} { \foreach \yvar in {0,1,2,3,4,5,6} { \draw (\yvar*\wvar,\xvar*\wvar) -- ++ (0,\wvar) -- ++ (\wvar,0) -- ++ (0,-\wvar) -- cycle; } } \end{tikzpicture} \and \begin{tikzpicture} \pgfmathsetmacro{\wvar}{0.4} \foreach \xvar in {0,1} { \foreach \yvar in {0,1,2,3,4,5,6} { \draw (\yvar*\wvar,\xvar*\wvar) -- ++ (0,\wvar) -- ++ (\wvar,0) -- ++ (0,-\wvar) -- cycle; } } \end{tikzpicture} \and \begin{tikzpicture} \pgfmathsetmacro{\wvar}{0.4} \foreach \xvar in {0,1} { \foreach \yvar in {0,1,2,3,4,5,6} { \draw (\yvar*\wvar,\xvar*\wvar) -- ++ (0,\wvar) -- ++ (\wvar,0) -- ++ (0,-\wvar) -- cycle; } } \end{tikzpicture} \\ } \newcommand{\weekdays}{ \begin{tikzpicture} \pgfmathsetmacro{\wvar}{0.4} \foreach \yvar/\zvar in {0/S,1/M,2/T,3/W,4/T,5/F,6/S} { \node at (\yvar*\wvar,0) [anchor=center] {\zvar}; } \end{tikzpicture} } \newcommand{\nightssubtitle}{ Top line for where you spend the night: / = basecamp, S = stonebridge bivvy, B = bivvying elsewhere, - = not there. Bottom line for time spent underground. } \newcommand{\expotransport}{ % longtable to spread over multiple pages % method / departed / arrived / notes \addcontentsline{toc}{chapter}{Expo Transport} \begin{longtable}{p{2cm}|p{2cm}|p{2cm}|p{8cm}} \multicolumn{4}{l}{\expoheading{Expo Transport}} \\ Method & Departed & Arrived & Notes \\ \midrule \endfirsthead Method & Departed & Arrived & Notes \\ \midrule \endhead \vspace{20.3cm} & & & \\ \vspace{22cm} & & & \\ \end{longtable} } \newcommand{\moneyowed}{ % creates a series of pages for the money owed to individuals % each person gets a page as made by moneyowedperson % generated from the names list \addcontentsline{toc}{chapter}{Money owed to ...} \openin\namesread=names.txt \setcounter{linecount}{0} \whiledo{\value{linecount}<\value{maxlines}}{ \stepcounter{linecount} \read\namesread to \currentname \moneyowedperson{\currentname} } } \newcommand{\moneyowedperson}[1]{ % argument is who the money is owed to % longtable to spread over multiple pages % date / owed by / description \addcontentsline{toc}{section}{#1} \begin{longtable}{p{2cm}|p{2cm}|p{2cm}|p{8cm}} \multicolumn{4}{l}{\expoheading{Money owed to #1}} \\ \multicolumn{4}{p{\textwidth}}{Please include each transaction only once, either as positive credit or a negative debit. \vspace{1cm}} \\ Date & Who & Amount & Notes \\ \midrule \endfirsthead Date & Who & Amount & Notes \\ \midrule \endhead \vspace{18.8cm} & & & \\ \vspace{22cm} & & & \\ \end{longtable} \clearpage } \newcommand{\moneyowedgasthof}{ % longtable to spread over multiple pages % date / owed by / description \addcontentsline{toc}{chapter}{Money owed to Karin (the Gasthof)} \begin{longtable}{p{2cm}|p{2cm}|p{2cm}|p{8cm}} \multicolumn{4}{l}{\expoheading{Money owed to Karin Wilpernig (the Gasthof)}} \\ Date & Who & Amount & Notes \\ \midrule \endfirsthead Date & Who & Amount & Notes \\ \midrule \endhead \vspace{20.3cm} & & & \\ \vspace{22cm} & & & \\ \end{longtable} \clearpage } \newcommand{\blankpage}[1]{ % for creating a double page with nothing but a title % longtable to consistent formatting \addcontentsline{toc}{chapter}{#1} \begin{longtable}{p{\textwidth}} \expoheading{#1} \\ \vspace{\textheight} \\ \end{longtable} } \begin{document} \newread\namesread \newcounter{maxlines} \newcounter{linecount} \def\and{&} \openin\namesread=names.txt \loop\unless\ifeof\namesread \read\namesread to \currentname \stepcounter{maxlines} \repeat \addtocounter{maxlines}{-1} \newread\datesread \openin\datesread=dates.txt \read\datesread to \firstweek \read\datesread to \secondweek \read\datesread to \thirdweek \read\datesread to \fourthweek \read\datesread to \fifthweek \read\datesread to \sixthweek \expotitle \printtoc \addcontentsline{toc}{chapter}{Drinks} \tallyeveryone{Drinks 1-50}{\drinksssubtitle}{0} \tallyspares{Spare Drinks 51-100}{\drinksssubtitle}{50}{15} \addcontentsline{toc}{chapter}{Nights} \nightstally{Nights and Time Underground, Weeks 1-3}{\nightssubtitle}{\firstweek}{\secondweek}{\thirdweek} \nightstally{Nights and Time Underground, Weeks 4-6}{\nightssubtitle}{\fourthweek}{\fifthweek}{\sixthweek} \cleardoublepage this page intentionally left blank \clearpage \moneyowed \moneyowedgasthof \expotransport \blankpage{Squashed Flies} \blankpage{Toll road info} \blankpage{Gear left up the hill} \blankpage{Gear taken back to Cambridge} \blankpage{Top camp food bought} \blankpage{First Aid} \blankpage{In Austria Jollies} \blankpage{Suggestions for next year} \blankpage{Quotes} \end{document}