为什么 \maketitle 会改变 \@title 的可用性?

为什么 \maketitle 会改变 \@title 的可用性?

我尝试使用 将文档标题包含在标题中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}

编辑...但是这不会记住标题的标题。

相关内容