如何展开maketitle这个命令

发布于 2021-12-20 15:14:33

我想按遍历顺序抽提出每个latex文档的maketitle这个命令序列所有代码,比如

\documentclass{article}% use option titlepage to get the title on a page of its own.
\usepackage{blindtext}
\title{The Triangulation of Titling Data in Non-Linear Gaussian Fashion via $\rho$ Series\thanks{No procrastination}}
\date{2017\\ December}
\author{John Doe\\ Magic Department\thanks{I am no longer a member of this department}, Richard Miles University 
\and Richard Row, \LaTeX\ Academy}
\begin{document}
\maketitle
\section{Introduction}
\blindtext
\end{document}

这个latex中抽提出的代码是

\title{The Triangulation of Titling Data in Non-Linear Gaussian Fashion via $\rho$ Series\thanks{No procrastination}}
\author{John Doe\\ Magic Department\thanks{I am no longer a member of this department}, Richard Miles University 
\and Richard Row, \LaTeX\ Academy}
\date{2017\\ December}

而另外一个例子:

\documentclass[conference]{IEEEtran}
\usepackage{blindtext}

\begin{document}
\author{
\IEEEauthorblockN{Ying Meng, Jianhai Su, Jason M. O'Kane, Pooyan Jamshidi}
\IEEEauthorblockA{\textit{Departmetn of Computer Science and Engineering} \\
\textit{University of South Carolina}\\
Columbia, SC, USA}
}
\maketitle
\section{Introduction}
\blindtext
\end{document}

这个latex中抽提出的代码是

\title{\Large \bf ATHENA: A Framework based on Diverse Weak Defenses \\ for Building Adversarial Defense}
\author{
\IEEEauthorblockN{Ying Meng, Jianhai Su, Jason M. O'Kane, Pooyan Jamshidi}
\IEEEauthorblockA{\textit{Departmetn of Computer Science and Engineering} \\
\textit{University of South Carolina}\\
Columbia, SC, USA}
}

我想知道这可能实现吗?如果不能按照遍历顺序提取,有没有办法从latex源码中获取maketitle这部分对应的代码呢?

查看更多

关注者
0
被浏览
342
雾月
雾月 2021-12-20

如果只是想得到 title、author 等信息,可以

\def\recordinfo#1{\gdef\recordedinfo{#1}#1}

然后使用

\recordinfo{%
\title{...}%
\author{...}%
\date{...}%
}

这样就把它们保存到了 \recordedinfo 之中,\maketitle 同样可用。

实际上,标准类文档中 title 等信息被保存到了 \@title\@author\@date 之中,在 \maketitle 之前可以使用它们,如果你用的文档类没有重定义 \title 等命令的话。

第一个例子中,\@title 就是

The Triangulation of Titling Data in Non-Linear Gaussian Fashion via $\rho$ Series\thanks{No procrastination}

当然也可以使用 regexpatch 宏包的 \xpretocmd 将信息保存到自己的命令中

% \usepackage{regexpatch} % 或者\usepackage{xpatch}
\xpretocmd\title{\gdef\titlesaved{#1}}{}{}

\titlesaved 中也会保存相同的标题信息。

至于它们的显示与否和显示顺序,这是由 \maketitle 或类似的命令来完成的。
可以使用 \meaning\maketitle (或者 \show\maketitle)查看其定义,在标准类文档中是由 \@maketitle 完成的,它决定了标题信息的输出顺序。

这些标题信息在每个文档类中都不一样,而且有些文档类不只有 title、author、date 信息,要设计一个通用的命令几乎是不可能的,只能靠人工查找,当然这还不如直接排版出来,再记住它们的顺序。

1 个回答

撰写答案

请登录后再发布答案,点击登录

发布
问题

分享
好友

手机
浏览

扫码手机浏览