titlesec 与 titleling;混淆 \thetitle

titlesec 与 titleling;混淆 \thetitle

我希望文档的章节名称和标题出现在页眉中;我知道如何使用和来实现这一点fancyhdrtitling后者的杂项功能之一是保留\thetitle可用于稍后提取文档标题的命令。

现在我添加了titlesec包以使节/章节标题看起来更好。但在这里我遇到了一个问题:titlesec似乎用或的\thetitle内容覆盖了!\thesection\thesubsection

举个例子来说明这个问题:

\documentclass{report}
\usepackage{titling}
\usepackage{titlesec}

\newpagestyle{testfancy}{%
  \headrule% 
  \sethead{\thetitle}{}{\chaptertitle}}
\pagestyle{testfancy}

\title{My title}
\author{This author}

\begin{document}
\maketitle

\chapter{A chapter}

some filler text

\newpage

some more filler text

\newpage

\section{Now a section is added}
\end{document}

在第 3 页上,左侧标题显示(如定义和预期)为 的值\thetitle,在本例中为“我的标题”。然而,在第 4 页上,在新部分之后,左侧标题现在显示为“1.1”,即 的值\thesection

是否有记录此冲突?是否有修复/解决方法?

答案1

有点像黑客,但确实有用。(titling如果你只用它做这些,可能就不需要更多了……)

\documentclass{report}
\usepackage{titling}
\usepackage{titlesec}

\let\oldtitle\title
\renewcommand{\title}[1]{\oldtitle{#1}\newcommand{\mythetitle}{#1}}

\newpagestyle{testfancy}{%
  \headrule% 
  \sethead{\mythetitle}{}{\chaptertitle}}
\pagestyle{testfancy}

\author{This author}
\title{My Title}

\begin{document}
\maketitle

\chapter{A chapter}

some filler text

\newpage

some more filler text 

\newpage

\section{Now a section is added}
\end{document}

答案2

我不知道是否有任何地方记录了冲突,但从阅读这两个软件包的源代码来看,这一点非常清楚。您可以将 替换为 ,\thetitle\mytitle在 之后的某个时间点\title{My title},放入\let\mytitle\thetitle

[编辑:我应该指出,就像 frabjous 的回答一样,你不需要这个titling包。你可以使用

\makeatletter
\let\mytitle\@title
\makeatother

在你的之后\title{My title}

另外,在编译您的代码时,我收到以下警告。

Package titlesec Warning: You are using an old interface for page styles
(titlesec)                You could proceed but don't complain if you run
(titlesec)                into errors.

您可能想要修复它。

相关内容