使用“title”时如何重新排序标题元素

使用“title”时如何重新排序标题元素

默认情况下,* 似乎\maketitle首先处理标题,然后是作者,然后是日期。那么,如果我想将作者和日期放在页面顶部(同一行的相对两侧),将标题放在它们下面,我该怎么做?

*:这是我从titling软件包文档。我可能误解了。

目前,我通过以下方式实现了预期的效果:

\newcommand{\addtitle}[4]{ 
John Smith \hfill \formatdate{#2}{#1}{#3} \\[0.8cm] 

\textbf{\LARGE #4} % text of my title goes here
}

我使用此命令为一系列家庭作业添加标题,这些作业都有相同的作者(我),但日期和标题不同。

答案1

在您的文档中,您可以重新定义内部命令\@maketitle,以便交换元素;例如,您可以使用

\makeatletter
\def\@maketitle{%
    \newpage
    \null
    \vskip 2em%
    \vspace*{\droptitle}
    \maketitlehooka
    {\@bspreauthor \@author \@bspostauthor}
    \maketitlehookb
    {\@bspredate \@date \@bspostdate}
    \maketitlehookc
    {\@bspretitle \@title \@bsposttitle}
    \maketitlehookd
    \par
    \vskip 1.5em}
\makeatother

一个完整的工作示例:

\documentclass{article}
\usepackage{titling}
\usepackage{lipsum}% just to generate text for the example

\makeatletter
\def\@maketitle{%
    \newpage
    \null
    \vskip 2em%
    \vspace*{\droptitle}
    \maketitlehooka
    {\@bspreauthor \@author \@bspostauthor}
    \maketitlehookb
    {\@bspredate \@date \@bspostdate}
    \maketitlehookc
    {\@bspretitle \@title \@bsposttitle}
    \maketitlehookd
    \par
    \vskip 1.5em}
\makeatother

\pretitle{\par\noindent\bfseries\LARGE}
\posttitle{\par\vskip1em}
\preauthor{\par\noindent\large}
\postauthor{\hfill}
\predate{\large}
\postdate{\par\vskip0.8cm}

\author{The Author}
\title{Some interesting title}
\date{\today}

\begin{document}
\maketitle
\lipsum[1]
\end{document}

在此处输入图片描述

请根据您的需要随意调整设置。

相关内容