我希望文档的章节名称和标题出现在页眉中;我知道如何使用和来实现这一点fancyhdr
,titling
后者的杂项功能之一是保留\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.
您可能想要修复它。