我想按遍历顺序抽提出每个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这部分对应的代码呢?
如果只是想得到 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 信息,要设计一个通用的命令几乎是不可能的,只能靠人工查找,当然这还不如直接排版出来,再记住它们的顺序。