我尝试使用 将文档标题包含在标题中scrartcl
。出于某种原因,当我调用 时\maketitle
,\@title
变量似乎未设置,并且它的所有用途都变为空。
我的文档看起来像这样(仅剥离为一个测试用例):
\documentclass{scrartcl}
\usepackage[english]{babel}
\usepackage[automark,headsepline]{scrpage2}
\pagestyle{scrheadings}
\makeatletter
\ihead{\MakeUppercase{\@title}}
\makeatother
\usepackage{blindtext}
\title{my doc title}
\begin{document}
\blinddocument % headers show the document title on these pages
\maketitle
\blinddocument % these pages have an empty header
\end{document}
如上所述,我的标题显示文档标题正常,直到我调用\maketitle
,然后该字段为空白。我尝试在输出标题后重新分配标题甚至标题变量,但无济于事。我该如何找回我的标题?
答案1
您可以重新定义\maketitle
来保存和恢复的副本\@title
。
\documentclass{scrartcl}
\usepackage[english]{babel}
\usepackage[automark,headsepline]{scrpage2}
\pagestyle{scrheadings}
\makeatletter
\ihead{\MakeUppercase{\@title}}
\makeatother
\usepackage{blindtext}
\title{my doc title}
\makeatletter
\let\svmaketitle\maketitle
\def\maketitle{\protected@edef\saved@title{\@title}%
\svmaketitle%
\let\@title\saved@title}%
\makeatother
\begin{document}
\blinddocument % headers show the document title on these pages
\maketitle
\blinddocument % these pages have an empty header
\end{document}
答案2
如果你使用当前 KOMA-Script 版本,至少 3.12 版本已经可以通过常规包更新用于 MiKTeX 和 TeX Live,一切正常:
注意:此功能取决于选项版本。因此,如果您使用已弃用的选项,即设置version=first
,则它不起作用。
答案3
你不必\maketitle
只是为了记住标题
\documentclass{article}
\newcommand{\mytitle}{Save This Title}
\title{\mytitle}
\author{me}
\begin{document}
\maketitle
The title of this document is \mytitle.
\end{document}
编辑...但是这不会记住标题的标题。