\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} \begin{center} {\Large Cambridge University Caving Club} \vskip80pt {\Huge \bf Expo \the\year} \vskip40pt {\fontsize{100}{120}\selectfont\sc Bier} \vskip24pt {\fontsize{100}{120}\selectfont\sc Book} \vskip190pt {[}Stick obligatory G{\"o}sser label here{]} \end{center} \vfill \clearpage } \newcommand{\expoheading}[1]{ % provides the formatting for a title of a section \vspace{10pt} {\LARGE\bf #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] {\textbf{#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{\nightstallyoneweek}[2]{ \addcontentsline{toc}{section}{#1} \openin\namesread=names.txt \setcounter{linecount}{0} \begin{minipage}[l]{\textwidth} {\LARGE\bf #1}\\ \vskip12pt \textbf{This is for people arriving prior to Sunday 2nd July.} \vskip12pt \textbf{Where you spent the night:} / = basecamp, - = away from Expo. \vskip12pt \end{minipage} \begin{longtable}{rc} \tikz{\node at (0,0.5) {}; \node at (0,0) {};} & #2 \\ \tikz{\node at (0,0.5) {}; \node at (0,0) {};} & \weekdays \\ \endfirsthead \tikz{\node at (0,0.5) {}; \node at (0,0) {};} & #2 \\ \tikz{\node at (0,0.5) {}; \node at (0,0) {};} & \weekdays \\ \endhead \tikz{\node at (0,0.5) {}; \node at (0,0) {};} & \weekdays \\ \endfoot \whiledo{\value{linecount}<\value{maxlines}}{ \stepcounter{linecount} \read\namesread to \currentname \nightstallyoneweekline{\currentname} } \end{longtable} \clearpage } \newcommand{\nightstally}[4]{ % 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} {\LARGE\bf #1}\\ \vskip12pt \textbf{Top line} for where you spent the night: / = basecamp, S = stonebridge bivvy, B = bivvying elsewhere, - = away from Expo. \vskip12pt \textbf{Bottom line} for time spent underground.\\\vspace*{12pt} \begin{longtable}{rccc} \tikz{\node at (0,0.5) {}; \node at (0,0) {};} & #2 & #3 & #4 \\ \tikz{\node at (0,0.5) {}; \node at (0,0) {};} & \weekdays & \weekdays & \weekdays \\ \endfirsthead \tikz{\node at (0,0.5) {}; \node at (0,0) {};} & #2 & #3 & #4 \\ \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{\nightstallyoneweekline}[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] {\textbf{#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} \\ } \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] {\textbf{#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{\tiny u},1/M,2/T,3/W,4/T,5/F,6/S} { \node at (\yvar*\wvar,0) [anchor=center] {\zvar}; } \end{tikzpicture} } \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} {\LARGE\bf Money owed to #1}\vspace*{12pt} \begin{longtable}{p{2cm}|p{4cm}|p{3cm}|p{6cm}} \multicolumn{4}{p{\textwidth}}{Write a \textbf{positive} sign if #1~\hspace*{-3pt}\textbf{spent money}} \\ \multicolumn{4}{p{\textwidth}}{Write a \textbf{negative} sign if #1~\hspace*{-3pt}\textbf{owes money}} \\ \multicolumn{4}{p{\textwidth}}{Only write on \textbf{one person's page} for a transaction. \textbf{Give currency if not Euros.}} \\ \multicolumn{4}{p{\textwidth}}{}\\ \textbf{Date} & \textbf{Who} & \textbf{Amount} & \textbf{Item} \\ \midrule \endfirsthead \textbf{Date} & \textbf{Who} & \textbf{Amount} & \textbf{Item} \\ \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 Gasthof Staud'nwirt} \begin{longtable}{p{2cm}|p{4cm}|p{3cm}|p{6cm}} \multicolumn{4}{l}{\expoheading{Money owed to Gasthof Staud'nwirt}} \\ \textbf{Date} & \textbf{Who} & \textbf{Amount} & \textbf{Item} \\ \midrule \endfirsthead \textbf{Date} & \textbf{Who} & \textbf{Amount} & \textbf{Item} \\ \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 \zeroweek \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{More drinks 51--100}{\drinksssubtitle}{50}{15} \addcontentsline{toc}{chapter}{Nights} \nightstallyoneweek{Nights, week zero}{\zeroweek} \nightstally{Nights and time underground, weeks 1-3}{\firstweek}{\secondweek}{\thirdweek} \nightstally{Nights and time underground, weeks 4-6}{\fourthweek}{\fifthweek}{\sixthweek} \moneyowed \moneyowedgasthof \expotransport \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}