Newer
Older
\RequirePackage{xr-hyper}
\RequirePackage[
pdfstartpage=1,
hidelinks=true,
bookmarks=true]%
{hyperref}
stylemods={mcols,topic,tree},
\RequirePackage{starfont} % for creature symbols
\RequirePackage{wasysym} % for sq checkboxes
\RequirePackage{appendix}
\RequirePackage{geometry} % changes page borders
\RequirePackage{tabularx}
\RequirePackage{wrapfig}
\RequirePackage{float}
\RequirePackage{epigraph} % part quotes
\RequirePackage{microtype} % more precise word-placement
\RequirePackage{makeidx}
\RequirePackage[english]{babel}
\RequirePackage{multicol}
\RequirePackage{graphicx}
\RequirePackage{etoolbox}
\RequirePackage[explicit]{titlesec}
\RequirePackage{titletoc}
\RequirePackage{adforn}% for fancy headrules
\usetikzlibrary{calc,mindmap,trees}% calc for fancy borders
\usetikzlibrary{intersections}% for very fancy borders with intersecting lines
\usetikzlibrary{decorations.text}% for text along circle paths in cs
\usetikzlibrary{shapes.callouts}% for labels on the cs
\usetikzlibrary{shapes.geometric, intersections}% for pentacle intersections in map
\usetikzlibrary{patterns}% for the pattern 'gridspecks'
\RequirePackage{colortbl}
\RequirePackage[poster]{tcolorbox}
\pgfdeclarepatternformonly{gridspecks}{\pgfqpoint{-1pt}{-1pt}}{\pgfqpoint{1pt}{1pt}}{\pgfqpoint{26pt}{26pt}}
{%
\pgfpathcircle{\pgfqpoint{0pt}{0pt}}{.5pt}%
\pgfusepath{fill}%
}%
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
%%%%% Common Commands %%%%%
% make repeating function
\newcommand{\Repeat}[1]{%
\expandafter\@Repeat\expandafter{\the\numexpr #1\relax}%
}
\def\@Repeat#1{%
\ifnum#1>0
\expandafter\@@Repeat\expandafter{\the\numexpr #1-1\expandafter\relax\expandafter}%
\else
\expandafter\@gobble
\fi
}
\def\@@Repeat#1#2{%
\@Repeat{#1}{#2}#2%
}
% This allows us to compare two strings. What other wonders will LaTeX bring in the future? Perhaps subtraction syntax one day.
\ExplSyntaxOn
\NewExpandableDocumentCommand{\ifStrSame}{mmmm}
{
\str_if_eq:eeTF { #1 } { #2 } { #3 } { #4 }
}
\ExplSyntaxOff
% This function divides a number by two, and rounds it up.
\newcommand\roundUp[1]{%
\ifodd\value{#1}%
\stepcounter{#1}%
\fi%
\divide\value{#1} by 2%
\addtocounter{#1}{0}% Think this line's pointless? Try removing it and seeing what happens - I dare you.
}
\newcounter{chapshift}
\addtocounter{chapshift}{-1}
\vspace{-6pt}%
\textcolor{\pageSideColor}{\hrulefill}%
\raisebox{-2.1pt}%
{\textcolor{\pageSideColor}{\quad\adfdoubleflourishleft\npcsymbol\adfdoubleflourishright\quad}}%
%% Redefine plain page style, and use it for every page.
\fancypagestyle{plain}{
\fancyhf{}% clear all header and footer fields
\fancyfoot[LE]{\titleFont{\large\thepage\if@mainmatter\randomfourB\hspace{1em}\textcolor{\pageSideColor}{\Repeat{\value{r4b}}{\flourish\hspace{-.2em}}}\fi}}
\fancyfoot[RO]{\titleFont{\randomfour\large\if@mainmatter\textcolor{\pageSideColor}{\Repeat{\value{r4}}{\flourish\hspace{-.2em}}}\hspace{1em}\fi\thepage}}
}
\pagestyle{plain}
%\fancyfoot{}
\newcounter{pageDarkness}
\setcounter{pageDarkness}{20}
\newcounter{pageAlt}
\setcounter{pageAlt}{100}
\newcommand\pageSideColor{black!\arabic{pageDarkness}!white}
\newcommand\pageOppositeColor{black!\arabic{pageAlt}}
\newtoggle{countedPage}
\toggletrue{countedPage}
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
\iftoggle{countedPage}{
\if@mainmatter
\pgfmathsetmacro{\BGvadjust}{ -2 * (\value{chapter} - 1)}
\ifodd\value{page}
\def\BGpageanchor{current page.north east}
\def\BGanchor{north west}
\def\BGmark{\textcolor{\pageOppositeColor}{\rightmark}}
\def\BGrotate{-90}
\else
\def\BGpageanchor{current page.north west}
\def\BGanchor{north east}
\def\BGmark{\textcolor{\pageOppositeColor}{\leftmark}}
\def\BGrotate{90}
\fi\typeout{Underfed goblins (badness \thepage0000)}
\begin{tikzpicture}[overlay,remember picture]
\path
++(\BGpageanchor)
+(0cm, \BGvadjust cm)
node[
text centered,
inner sep=4pt,
text height=4ex,
text depth=2.5ex,
text width=14em,
text=white,
fill=\pageSideColor,
anchor=\BGanchor,
rotate=\BGrotate,
font=\titleFont,
] {\BGmark};
\end{tikzpicture}%
\fi
}{}
% redefinition of \chaptermark to contain only the number and title (no 'Chapter 1: Pogs', just '1: Pogs')
\renewcommand\chaptermark[1]{\markboth{\thechapter.~#1}{}}
\newcommand\flwr{\textcolor{\pageSideColor}{\ifodd\thepage\adfflowerright\else\adfflowerleft\fi}}
\newcommand\failStar{\textcolor{\pageSideColor}{\Fortune}}
%%%%%%%%%% Allow for external referencing
\newcommand*{\externalReferent}[1]{
\IfFileExists{../rubbish/#1.aux}{
\externaldocument{../rubbish/#1}%
\settoggle{#1}{true}
}%
{\typeout{No file #1.}
\settoggle{#1}{false}
}
\renewcommand{\footnoterule}{\vspace{-0.5em}\noindent\textcolor{\pageSideColor}{\raisebox{2.9pt}{\line(1,0){100}}\hspace{-2pt}\flourish} \vspace{.5em} }
% Argument 1: The target git directory (e.g. 'core')
% Argument 2: What to call that directory (e.g. 'the core rules')
% Argument 3: Which label you're referring to
\newcommand\exRef[3]{%
\iftoggle{#1}{\footnote{See the book of \textit{\MakeUppercase#2}, \autopageref{#3} --- \nameref{#3}.}}%
\newcommand\handout[1]{
\cleardoublepage
\togglefalse{countedPage}
\settoggle{examplecharacter}{true}
\settoggle{examplecharacter}{false}
\cleardoublepage
\ifodd\thepage
\else
\clearpage
\fi
\toggletrue{countedPage}
\pagestyle{plain}
%%%%%%%%%% Section Headers %%%%%%%%%%
%%% Allow quotes under part headers
\let\old@endpart\@endpart
\renewcommand\@endpart[1][]{%
\begin{quote}#1\end{quote}%
\old@endpart}
%%%%%%%%%% Give higher penalty to ~
% The ~ character usually functions as a space with a high penalty for line breaks.
% This stops the line breaks altogether, so we can write 'Athletics 3', without a line-break between the Skill and the number.
\DeclareRobustCommand{\nobreakspace}{%
\leavevmode\nobreak\ }
\catcode `\~=13
\def~{\nobreakspace{}}
%%%%% Make table of contents two column
\renewcommand\tableofcontents{%
\Large
\begin{multicols}{2}
\@starttoc{toc}
\end{multicols}
\newcommand{\chapnumfont}{%
\Huge%
\titleFont%
\renewcommand{\labelitemi}{%
\textcolor{\pageSideColor}{%
\large\ifodd\the\c@page%
\adfdownhalfleafright%
\else%
\adfdownhalfleafleft%
\fi%
}
}
\renewcommand{\labelitemii}{\textcolor{\pageSideColor}{\adfdownhalfleafleft}}
\renewcommand{\labelenumi}{\large\titleFont\arabic{enumi}--}
\renewcommand{\labelenumii}{\titleFont\Roman{enumii}}
%%%%%%%%%% Encounter Numbers
\newcounter{encnum}
\setcounter{encnum}{1}
\newcommand{\sqarea}{town}
\noindent%
\IfFileExists{images/#1.svg}{%
\noindent\includesvg[width=\linewidth]{images/#1}
}{%
\includegraphics[width=\linewidth]{images/#1.jpg}
}
\needspace{4cm}
\begin{wrapfigure}{R}{.#1\linewidth}
\noindent%
\IfFileExists{images/#2.svg}{%
\includesvg[width=\linewidth]{images/#2}
}{
\includegraphics[width=\linewidth]{images/#2.jpg}
}
#3
\end{wrapfigure}
\begin{tikzpicture}[every shadow/.style={
shadow blur invert,
shadow xshift=-1pt,
shadow yshift=-3pt
}]
\node[anchor=south west,inner sep=0] (image) at (0,0) {\pic{#2}};
\csComments
\begin{scope}[
x={(image.south east)},
y={(image.north west)}
]
\mapLabels
\end{scope}
\foreach \mNum/\mX/\mY in {#2}{
\node [black, font=#1\scshape] at (0.\mX,0.\mY) {\outline[14]{\mNum}};
\newcommand\callout[5][4]{
\node[text=\pageOppositeColor, overlay, rectangle callout, callout relative pointer={(#3)}, fill=\pageSideColor,] (\arabic{enc}) at (#2) [text width=#1em]{{\large\scshape#4}{ #5}};
\node [black, font=\bfseries] at (0.#2,0.#3) {#4 #1};
\newcommand\mapCircle[5][0]{
\setcounter{track}{#4}
\addtocounter{track}{3}
\addtocounter{track}{#1}
\begin{scope}[
x={(image.south east)},
y={(image.north west)}
]
\draw[fill=white] (0.#2,0.#3) circle (#4em);
\clip[draw] (0.#2,0.#3) circle (#4em) node {\includesvg[width=\arabic{track}em]{images/#5}};
\newcommand\mapPic[4][\Huge]{
\begin{figure*}[#2!]
\begin{tikzpicture}[every shadow/.style={
shadow blur invert,
shadow xshift=-1pt,
shadow yshift=-3pt
}]
\node[anchor=south west,inner sep=0] (image) at (0,0) {\pic{#3}};
\begin{scope}[
x={(image.south east)},
y={(image.north west)}
]
\foreach \mNum/\mX/\mY in {#4}{
\mapLegend{\outline[14]{\titleFont\mNum}}{\mX}{\mY}{#1}
}
\end{scope}
\end{tikzpicture}
\end{figure*}
}
\begin{tikzpicture}
\node[anchor=south west,inner sep=0] (image) at (0,0) {\pic{#2}};
\begin{scope}[
x={(image.south east)},
y={(image.north west)}
]
\foreach \mNum/\mX/\mY in {#3}{
\mapLegend{\outline{\mNum}}{\mX}{\mY}{#1}
}
\end{scope}
\end{tikzpicture}
\label{#2}
}
\newcounter{tn}
\setcounter{tn}{7}
\newcommand\tn[1][\arabic{tn}]{%
\newcommand\roll[2]{%
\setcounter{tn}{7}%
\addtocounter{tn}{\value{#1}}%
\ifltxcounter{#2}{\addtocounter{tn}{\value{#2}}}{}%
%%% The dice-face (\dicef) command shows an actual die, or multiple
%%% dice, equal to a number. The optional argument lets it show
%%% as \large or similar.
\newcounter{diceNo}
\newcommand\dicef[2][]{%
\ifnum\value{diceNo}=12%
\epsdice[black]{6}%
\epsdice{6}%
\ifnum\value{diceNo}>0%
\whileboolexpr{%
test {\ifnumcomp{\value{diceNo}}{>}{6}}%
}{%
\addtocounter{diceNo}{-5}%
\epsdice{5}%
}%
\epsdice[black]{\value{diceNo}}%
\else%
\arabic{diceNo}%
\fi%
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
\newcommand\twoDice[1]{%
\setcounter{diceNo}{#1}%
\ifnum\value{diceNo}<2%
\setcounter{diceNo}{2}%
\fi%
\ifcase\value{diceNo}%
diceError 0%
\or%
diceError 1%
\or%
\epsdice{1}, \epsdice[black]{1}%
\or%
\epsdice{1}, \epsdice[black]{2}%
\or%
\epsdice{1}, \epsdice[black]{3}%
\or%
\epsdice{1}, \epsdice[black]{4}%
\or%
\epsdice{1}, \epsdice[black]{5}%
\or%
\epsdice{1}, \epsdice[black]{6}%
\or%
\epsdice{2}, \epsdice[black]{6}%
\or%
\epsdice{3}, \epsdice[black]{6}%
\or%
\epsdice{4}, \epsdice[black]{6}%
\or%
\epsdice{5}, \epsdice[black]{6}%
\or%
\epsdice{6}, \epsdice[black]{6}%
\else
diceError%
\fi%
}
\newcounter{diceNo2}
\newcommand\rollDice[1]{%
\setcounter{track}{#1}%
\setcounter{diceNo}{1}%
\setcounter{diceNo2}{1}%
\ifnum\value{track}>7%
\setcounter{diceNo2}{6}%
\fi%
\addtocounter{track}{-\value{diceNo2}}%
\setcounter{diceNo}{\value{track}}%
\epsdice[black]{\arabic{diceNo}} \epsdice{\arabic{diceNo2}}
}
{\raggedright\begin{list}{\Large\dicef{\value{dlist}}}{\usecounter{dlist}}}%
\newenvironment{dlistDouble}%
{\raggedright\begin{list}{\Large\twoDice{\value{dlist}}}{\usecounter{dlist}}}%
{\end{list}\null}%
\newcounter{blingNo}
\setcounter{blingNo}{0}
% Define the 'ornamentedbox' environment
% Wiggly Borders
\tikzset{
use path for main/.code={%
\tikz@addmode{%
\expandafter\pgfsyssoftpath@setcurrentpath\csname tikz@intersect@path@name@#1\endcsname
}%
},
use path for actions/.code={%
\expandafter\def\expandafter\tikz@preactions\expandafter{\tikz@preactions\expandafter\let\expandafter\tikz@actions@path\csname tikz@intersect@path@name@#1\endcsname}%
},
use path/.style={%
use path for main=#1,
use path for actions=#1,
}
}
\tikzset{ornamented frame inner/.style={color=\pageSideColor,
line width=3pt}}
\tcbsubskin{ornamented}{empty}{
skin first=ornamented, skin last=ornamented,
title engine=standard,
colbacktitle=white,
frame code={
% Account for the line widths in order not to draw beyond the bounding
% box---except for a few very small details for which this is intentional.
\coordinate (north west) at ([shift={(1.5pt,-1.5pt)}]frame.north west);
\coordinate (north east) at ([shift={(-1.5pt,-1.5pt)}]frame.north east);
\coordinate (south east) at ([shift={(-1.5pt,1.5pt)}]frame.south east);
\coordinate (south west) at ([shift={(1.5pt,1.5pt)}]frame.south west);
%
\foreach \xoffset/\point in {34pt/north west, -34pt/north east,
34pt/south west, -34pt/south east} {
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
([xshift=\xoffset]\point) circle[radius=2.5pt];
}
%
\path[name path=ornament 1]
([yshift=-4pt]north west)
[rounded corners=0.5pt] -- ++(23pt,0)
[rounded corners=2pt] -- ++(3pt,-4pt)
-- ([shift={(-26pt,-8pt)}]north east)
[rounded corners=0.5pt] -- ++(3pt,4pt)
[rounded corners=4pt] -- ([yshift=-4pt]north east)
-- ([yshift=4pt]south east)
[rounded corners=0.5pt] -- ++(-23pt,0)
[rounded corners=2pt] -- ++(-3pt,4pt)
-- ([shift={(26pt,8pt)}]south west)
[rounded corners=0.5pt] -- ++(-3pt,-4pt)
[rounded corners=4pt] -- ([yshift=4pt]south west)
-- cycle;
%
\path[rounded corners=0.5pt, name path=ornament 2]
([yshift=-20pt]north west)
-- ++(-4pt,3pt)
-- ++(0,4pt)
to[out=0, in=-90] ([shift={(8pt,0pt)}]north west)
-- ([shift={(34pt,0pt)}]north west)
-- ([shift={(-8pt,0pt)}]north east)
to[out=-90, in=180] ([shift={(4pt,-13pt)}]north east)
-- ++(0,-4pt)
-- ++(-4pt,-3pt)
-- ([yshift=20pt]south east)
-- ++(4pt,-3pt)
-- ++(0,-4pt)
to[out=180, in=90] ([shift={(-8pt,0pt)}]south east)
-- ([shift={(8pt,0pt)}]south west)
to[out=90, in=0] ([shift={(-4pt,13pt)}]south west)
-- ++(0,4pt)
-- ++(4pt,3pt)
-- cycle;
%
\draw[ornamented frame outer, use path=ornament 1];
\draw[ornamented frame outer, use path=ornament 2];
\draw[ornamented frame inner, use path=ornament 1];
\draw[ornamented frame inner, use path=ornament 2];
}
}
% These parameters---especially those related to geometry---are better located
% here in a style than in the subskin definition (see the Subskins section of
% the tcolorbox manual).
\tcbset{ornamented/.style={skin=ornamented,
toptitle=14.5pt,
top=15pt,
bottom=9.5pt,
}
% Convenient style to use with a tcolorbox preceded by text (or anything),
% when one wants to prevent any page break before the tcolorbox.
\tcbset{skip and no break/.style={
before={\par\nopagebreak\vspace{2ex}\noindent}}
}
% Style suitable for an “on line” (in the middle of a paragraph)
% 'ornamentedbox'.
\tcbset{my on line/.style={
capture=hbox, tcbox raise base, top=14pt, bottom=14pt,
before={\kern 5pt}, after={\kern 5pt}}
}
%%%%% TColorBox Basic Setup %%%%%
\tcbset{enhanced,
before upper={\parindent15pt},
fonttitle=\bfseries,coltitle=black,attach boxed title to top center=
{yshift=-0.25mm-\tcboxedtitleheight/2,yshifttext=-2mm-\tcboxedtitleheight/2},
boxed title style={boxrule=-0.5mm,
frame code={ \path[tcb fill frame] ([xshift=-4mm]frame.west)
-- (frame.north west) -- (frame.north east) -- ([xshift=4mm]frame.east)
-- (frame.south east) -- (frame.south west) -- cycle; },
interior code={ \path[tcb fill interior] ([xshift=-2mm]interior.west)
-- (interior.north west) -- (interior.north east)
-- ([xshift=2mm]interior.east) -- (interior.south east) -- (interior.south west)
-- cycle;}
}
}
\newtcolorbox{boxtext}[1][]{
colback=white,
before upper={\parindent15pt\noindent},
after upper={\iftoggle{verbose}{}{\par What do you do?}},
\begin{wrapfigure}{R}{.#1\textwidth}
#2
\end{wrapfigure}%
\newcommand\outline[2][7]{\contour[#1]{black}{\textcolor{white}{#2}}}
\contourlength{0.1em}
\newcommand{\frontpage}[2][\expandafter\MakeUppercase \jobname]{
\includesvg[width=.2\textwidth]{config/logo}
\par
\vspace{-2em}
\flushright
\vspace{2em}
{\footnotesize \textcolor{gray}{\today}\par}
\vspace{3em}
\appendix
\renewcommand{\headingtype}{APPENDIX}
\ifnum\value{pageDarkness}<80
\addtocounter{pageDarkness}{7}
\ifnum\value{pageDarkness}>30
\setcounter{pageAlt}{0}
\fi
\addtocounter{pageDarkness}{-60}
\setcounter{pageAlt}{100}
\newcounter{adf}
\setcounter{adf}{0}
\newcommand\flourish{%
\if@mainmatter%
\ifnum\value{adf}>16%
\addtocounter{adf}{-16}%
\fi%
\ifcase\value{adf}%
\adforn{32}%
\or%
\adforn{27}%
\or%
\adforn{3}%
\or%
\fi%
\stepcounter{adf}%
\else%
\adforn{74}%
\fi%
}
\begin{tikzpicture}
\node[minimum width=\linewidth+3em, text=\pageOppositeColor, fill=\pageSideColor, inner sep=1, outer sep=0, anchor=south] (rectinit) {\Huge \headingtype};
\node[minimum width=.75\textwidth, text=white, inner sep=3, outer sep=0, anchor=south west, text width=.75\textwidth, align=right] at (rectinit.south west) (chapname) {};
\node[minimum width=.25\textwidth, inner sep=-5, outer sep=0, anchor=south west, text width=.25\textwidth, align=left] at (chapname.south east) {\chapnumfont\textcolor{chapnumcol}{\showChapter}};
\end{tikzpicture}
}
\textcolor{\pageSideColor}{\large\raisebox{-4pt}{\Large\hspace{-0.2em}\flourish}\titlerule}%
[\textcolor{\pageSideColor}{\large\titlerule\raisebox{-4pt}{\Large\hspace{-0.2em}\flourish}}%
\setcounter{list}{0}]%
\renewcommand*{\thesection}{\arabic{section}}
[\textcolor{\pageSideColor}{\titlerule}]
\newcommand{\tracker}{\center\noindent\iftoggle{examplecharacter}{\iftoggle{genExamples}{}{\ifnum\value{track}=\value{Speed}$\Rightarrow$ \fi}}{}\arabic{track}\addtocounter{track}{-1}\vspace{.54cm}
\textcolor{\pageSideColor}{\ifodd\value{page}\else\raisebox{-3pt}{\Large\hspace{0.1em}\flourish}\fi\hrulefill\ifodd\value{page}\raisebox{-3pt}{\Large\hspace{-0.1em}\flourish}\fi}%
\newcommand{\npc}[2]{\settoggle{personality}{false}\renewcommand{\name}{#2}\renewcommand{\npcsymbol}{#1}}
\newcommand{\NPC}[5]{\renewcommand{\name}{#2}
\renewcommand{\npcsymbol}{#1}
\settoggle{personality}{true}
}
%%%%%%%%%%%%%%%%%%%% TOGGLES %%%%%%%%%%%%%%%%%%%%
\newtoggle{verbose}
\settoggle{verbose}{true}
\newtoggle{personality}
\settoggle{personality}{false}
\setcounter{tocdepth}{1}
\setcounter{secnumdepth}{1}
%%%%%%%%%%%%%%%%%%%% RANDOM NUMBERS %%%%%%%%%%%%%%%%%%%%
\newcounter{r4}
\setcounter{r4}{\day}
\addtocounter{r4}{1}
\whileboolexpr{
test {\ifnumcomp{\value{r4}}{>}{4}}
}
{\addtocounter{r4}{-3}}
\newcounter{r2}
\setcounter{r2}{\value{r4}}
\newcounter{r2b}
\setcounter{r2b}{\value{r2}}
\addtocounter{r2b}{-1}
\setcounter{r2c}{2}
\newcounter{r2d}
\setcounter{r2d}{1}
\setcounter{r3b}{\value{r4}}
\addtocounter{r3b}{-1}
\newcounter{r12}
\setcounter{r12}{\month}
\newcounter{enc}
\newcounter{list}
\newcounter{age}
\setcounter{age}{1}
\newcounter{gold}
\setcounter{gold}{\day}
\setcounter{enc}{0}
\newcounter{noAppearing}
\setcounter{noAppearing}{1}
\ifnum\value{r2}>1%
\setcounter{r2}{1}%
\else%
\stepcounter{r2}%
\fi%
\setcounter{enc}{\value{r2}}%
\setcounter{r2b}{1}%
\else%
\setcounter{r2b}{2}%
\fi%
\setcounter{r2c}{1}%
\else%
\stepcounter{r2c}%
\newcommand{\randomtwoD}{%
\ifnum\value{r2d}>1%
\setcounter{r2d}{1}\else%
\stepcounter{r2d}%
\fi%
}
\ifnum\value{r3}>2%
\setcounter{r3}{1}%
\fi%
\ifnum\value{r3}<1%
\setcounter{r3}{2}%
\fi%
\stepcounter{r3}%
\setcounter{age}{\value{r3}}%
}
\newcommand{\randomthreeB}{%
\ifnum\value{r3b}>2%
\setcounter{r3b}{1}%
\fi%
\ifodd\value{r3}%
\stepcounter{r3b}%
\setcounter{r3c}{1}%
\ifodd\value{r12}%
\stepcounter{r3c}%
\fi%
\ifodd\value{r3}%
\fi%
}
\newcommand{\randomfour}{%
\setcounter{track}{\value{r4}}%
}
\newcommand{\randomfourB}{%
\randomthreeB%
\setcounter{r4b}{\value{r3b}}%
\stepcounter{r4b}%
}
\newcommand{\randomdozen}{%
\randomfourB%
\setcounter{r12}{0}%
\addtocounter{r12}{\value{r4b}}%
\addtocounter{r12}{\value{r3c}}%
\addtocounter{r12}{\value{r3}}%
\addtocounter{r12}{\value{r4}}%
}
%%%%%%%%%%%%%%%%%%%% LAYOUT %%%%%%%%%%%%%%%%%%%%
\makeindex
\indexsetup{
noclearpage,
level=\section,
}
% Make floats hug the text.
\setlength\intextsep{0em}
\newcolumntype{Y}{>{\centering\arraybackslash}X}
\newcolumntype{L}{>{\raggedright\arraybackslash}X}