文章类别标题页中作者位于标题之前

文章类别标题页中作者位于标题之前

\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

相关内容