如何利用 \title{} 的内容作为参考?

如何利用 \title{} 的内容作为参考?

我希望能够通过名称引用我的文档标题。我该如何实现?

\documentclass{scrartcl}
\usepackage{hyperref}

\begin{document}

\title{Example}\label{title}
\author{me}
\maketitle

The title is: "\nameref{title}" (Here it should read "Example")

\end{document}

答案1

如果你查看\title乳胶源,你会看到它的定义如下:

\def\title#1{\gdef\@title{#1}}

因此,标题存储在名为 的常规宏中\@title。使用它来恢复标题的唯一问题是符号@,通常不允许在控制序列中使用。

为了解决这个问题,将常规宏别名为\@title

\documentclass{scrartcl}
\title{Example}
\author{me}

\makeatletter
\let\inserttitle\@title
\makeatother

\begin{document}
\maketitle

The title is: ``\inserttitle'' (Here it should read ``Example'')

\end{document}

\label做了一些不同的事情。它保存了当前活动的柜台(需要辅助文件和第二遍),并且您想要保存扩展文本宏。宏非常适合后者,而重载\label\nameref前者则很困难。

您还会看到我重新组织了您的代码。我认为最好将不产生输出的宏(如\title和)\author放在序言中,而不是放在 中。和document之间不应该有任何内容,因为您可能会从空行中获得额外的空格。此外,在序言中(尤其是紧随其后)包含这些“元数据”声明,可以让编辑该文件的用户更轻松地识别该文件。\begin{document}\maketitle\documentclass{}

答案2

\documentclass{scrartcl}

\title{Example}
\author{me}
\makeatletter\let\Title\@title\makeatother
\begin{document}

\maketitle
The title is: "\Title" 

\end{document}

答案3

您可以使用authoraftertitle包使得 和 的值\author{...}可以通过命令 和 获得\title{...}(虽然我认为仅为此单一目的而建立一个包有点小题大做……):\date{...}\MyAuthor\MyTitle\MyDate

\documentclass{scrartcl}
\usepackage{authoraftertitle}
\usepackage{hyperref}

\begin{document}

\title{Example}
\author{me}
\maketitle

The title is: "\MyTitle" (Here it does read "Example")

\end{document}

相关内容