我希望能够通过名称引用我的文档标题。我该如何实现?
\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}