I have a document class for theses which, up until now, only accepted one author name. But now, due to a change in the university's regulation, the document will have to accept more than one author name.
Currently, I am using the standard \author{}
command to get the author name . My question is: how can I get the separate author names in order to apply the correct formatting to them? Are there different variable names for each one? I know multiple authors are separated by \and
and, after I am able to get each author name, I would like to put them one below the other, in a centered position (just like the example below, but with each additional author name below the previous one).
Here I have the code of my \maketitle
command, which is the only one that uses the author names. In the image below, I show the resulting title page.
\renewcommand{\maketitle}{
\clearpage % clears pages just to be sure
\thispagestyle{empty} % this page has no numbering
\begin{center} %text is centered
\textbf{ % and bold
\MakeUppercase{\@institution}\\[\baselineskip] % institution name
\MakeUppercase{\@author} % author name
\vfill
\MakeUppercase{\@title}\ifthenelse{\isundefined{\@subtitle}}{}{:\@subtitle}} % title and optional subtitle
\vfill
\@city\\ % city
\number\year %year
\end{center}
}
Clarifying Update
I believe I wasn't clear before, but now I have additional information regarding the issue. Following the recent answer, I decided to forget about \and
and try to separate author names with \\
so they could each go in a separate line, but it seems that \MakeUppercase{}
does not allow for line breaks to be inserted inside it. Any advice?
So you see, my issue is not related to the \and
command in itself, but rather with a way to break a string in many lines while keeping it in uppercase.
I guess an example of what I'm trying to do, but which is not working, is the following:
\documentclass{report}
\author{Doug \\ Lou}
\begin{document}
\MakeUppercase{\@author}
\end{document}
End result update
Just for posterity, I will add here the end result, after using the chosen solution from this post.
\def\and{\\} % redefine so it is compatible with other classes
\renewcommand{\maketitle}{
\clearpage % clears pages just to be sure
\thispagestyle{empty} % this page has no numbering
\begin{center} %text is centered
\textbf{ % and bold
\MakeUppercase{\@institution}\\[\baselineskip] % institution name
\uppercase\expandafter{\@author} % uppercase author names!!
\vfill
\MakeUppercase{\@title}\ifthenelse{\isundefined{\@subtitle}}{}{:\@subtitle}} % title and optional subtitle
\vfill
\@city % city
\number\year % year
\end{center}
}
Best Answer
The
report.cls
defines the author portion of\maketitle
to be a tabular array, that isThe default definition of
\and
fromlatex.ltx
is used to end thetabular
environment, add a bit of horizontal space, and then start a newtabular
environment:So, when you write
\author{First \and Second}
, the result is that both names get typeset side-by-side in individualtabular
environments. You could just as easily write\author{First \\ Second}
to have the two names typeset in a column (that is, in the single centered column of the firsttabular
environment). The same could be done by redefining\and
as\def\and{\\}
; only through chance does simply writing\author{First & Second}
do the same thing, as the "extra" alignment character,&
, is interpreted as\\
automatically.But this last approach will only work for you if you include something along the lines of the original author portion of
\maketitle
, that defines thetabular
array in your own\maketitle
.Updated from OP Edit:
You can use
\uppercase
to do the uppercase translation in the following manner. As noted, I suggest you use the entire structure (withtabular
) as originally defined inreport.cls
for the author portion in your own\maketitle
. This keeps the original format with\and
working, along with the other methods I mention above.