\maketitle
在文章类中,标题打印在作者上方,但我想反转它,将作者打印在标题上方。有什么建议吗?
\title{Can you find the solution?}
\author{you}
\begin{document}
\maketitle
\end{document}
当然有这个解决方案,但它远非完美
\begingroup
\centering
\large You
\LARGE Can you find the solution?
\endgroup
还有这解决方案,我想我只需用作者替换日期,但其中似乎嵌入了很多额外的样式,而这些样式对我来说是不必要的。
答案1
根据文档类中的定义article
,如果titlepage
选项是不是设置后,\maketitle
宏最终会调用\@maketitle
宏,而宏的定义如下:
\def\@maketitle{%
\newpage
\null
\vskip 2em%
\begin{center}%
\let \footnote \thanks
{\LARGE \@title \par}%
\vskip 1.5em%
{\large
\lineskip .5em%
\begin{tabular}[t]{c}%
\@author
\end{tabular}\par}%
\vskip 1em%
{\large \@date}%
\end{center}%
\par
\vskip 1.5em}
特别注意指令\@title
、\@author
和\@date
指令,并观察它们包含在\LARGE
、\large
和\large
有效的 TeX 组中。
为了强制 LaTeX 在 相关信息之前排版作者相关信息title
,您可以重新定义\@maketitle
如下:
\makeatletter
\renewcommand\@maketitle{%
\newpage
\null
\vskip 2em%
\begin{center}%
\let \footnote \thanks
{\large
\lineskip .5em%
\begin{tabular}[t]{c}%
\@author
\end{tabular}\par}%
\vskip 1.5em%
{\LARGE \@title \par}%
\vskip 2.5em%
{\large \@date}%
\end{center}%
\par
\vskip 1.5em}
\makeatother
注意这四个\vskip
指令。当然,你可以随意更改它们的参数以适合你的口味。
完整的 MWE——我认为不需要屏幕截图:
\documentclass{article}
\makeatletter
\renewcommand\@maketitle{%
\newpage
\null
\vskip 2em%
\begin{center}%
\let \footnote \thanks
{\large
\lineskip .5em%
\begin{tabular}[t]{c}%
\@author
\end{tabular}\par}%
\vskip 1.5em%
{\LARGE \@title \par}%
\vskip 2.5em%
{\large \@date}%
\end{center}%
\par
\vskip 1.5em}
\makeatother
\author{Author}
\title{Title}
\date{Date}
\begin{document}
\maketitle
\end{document}
另一方面,如果titlepage
选择是设置时,\maketitle
宏不会调用名为的子宏\@maketitle
。在这种情况下,需要\maketitle
直接重新定义宏,如下所示:
\makeatletter
\renewcommand\maketitle{\begin{titlepage}%
\let\footnotesize\small
\let\footnoterule\relax
\let \footnote \thanks
\null\vfil
\vskip 60\p@
\begin{center}%
{\large
\lineskip .75em%
\begin{tabular}[t]{c}%
\@author
\end{tabular}\par}%
\vskip 3em%
{\LARGE \@title \par}%
\vskip 3em%
{\large \@date \par}%
\end{center}\par
\@thanks
\vfil\null
\end{titlepage}%
\setcounter{footnote}{0}%
\global\let\thanks\relax
\global\let\maketitle\relax
\global\let\@thanks\@empty
\global\let\@author\@empty
\global\let\@date\@empty
\global\let\@title\@empty
\global\let\title\relax
\global\let\author\relax
\global\let\date\relax
\global\let\and\relax
}
\makeatother