% details options: "details" or "nodetails" (default)
\@initializeif{\if@details}\@detailsfalse
\DeclareOption{details}{\@detailstrue}
\DeclareOption{nodetails}{\@detailsfalse}
% name design options: "alternate" (lowercase names & title, no spacing)
\@initializeif{\if@alternate}\@alternatefalse
\DeclareOption{alternate}{\@alternatetrue}
% left/right options: "left" or "right" (default)
\@initializeif{\if@left} \@leftfalse
\DeclareOption{left} {\@lefttrue\@rightfalse}
\@initializeif{\if@right}\@rightfalse
\DeclareOption{right} {\@leftfalse\@righttrue}
\DeclareOption*{}% avoid choking on unknown options
\ExecuteOptions{nodetails,right}
\ProcessOptions*\relax% \ProcessOptions* processes the options in the order provided (i.e., with the later ones possibly overriding the former ones), while \ProcessOptions processes them in the order of the package
{~~~{\rmfamily\textbullet}~~~}}% the \rmfamily is required to force Latin Modern fonts when using sans serif, as OMS/lmss/m/n is not defined and gets substituted by OMS/cmsy/m/n
% internal command to add an element to the footer
% it collects the elements in a temporary box, and checks when to flush the box
% adds an element to the makehead, separated by makeheadsymbol
% usage: \addtomakehead[makeheadsymbol]{element}
\newcommand*{\addtomakeheaddetails}[2][\makeheaddetailssymbol]{% TODO: use \@initializecommand, which requires modifying its definition to handle mandatory and optional arguments
\flushmakeheaddetails\\\null% \null is required as there is no box on the line after \\, so glue such as \hfill (and leaders) disappear; this is in contrast to after \par, where the next line starts with an indent box (even after \noindent)
\ifthenelse{\equal{\@addresscity}{}}{}{\addtomakeheaddetails[~--~]{\@addresscity}}% if \addresstreet is defined, \addresscity and \addresscountry will always be defined but could be empty
\flushmakeheaddetails}\fi% need to force a \par after this to avoid weird spacing bug at the first section if no blank line is left after \makehead
% optional title
\ifthenelse{\equal{\@title}{}}{}{%
\\[1.25em]\null% \null is required as there is no box on the line after \\, so glue such as \hfill (and leaders) disappear; this is in contrast to after \par, where the next line starts with an indent box (even after \noindent)
\if@right\hfill\fi%
\if@alternate%
\titlestyle{\MakeLowercase\@title}%
\else%
\titlestyle{\@title}\fi%
}\\[2.5em]%
% optional quote
\ifthenelse{\isundefined{\@quote}}%
{}%
{{\null\hfill%
\begin{minipage}{\quotewidth}%
\centering%
\quotestyle{\@quote}%
\end{minipage}\hfill\null\\[2.5em]}}%
\par}% to avoid weird spacing bug at the first section if no blank line is left after \maketitle