我使用fancyhdr
在偶数页的页眉中显示当前章节标题book
。我使用以下代码实现此目的:
\setlength{\headheight}{14pt}
\pagestyle{fancy}
\fancyhf{}
\fancyfoot[LE,RO]{\thepage}
\fancyhead[EL]{\leftmark}
\fancyhead[OR]{\scshape\nouppercase\rightmark}
\renewcommand{\chaptermark}[1]{%
\markboth{\scshape #1}{}}
有些章节标题很长,我必须在标题中显示较短的标题(但不在目录中)。通常以下方法有效:
\section[Long section title]{Long section title}
\marksection{Short section title}
但是,当奇数页以新部分开始时,这将导致long section name
第一页上出现。在这个答案,该问题通过以下方法解决:
\section[Long section title]{Long section title%
\sectionmark{Short section title}}
\sectionmark{Short section title}
(另请参阅答案中提供的宏)。但这对我来说也不起作用。我注意到他们使用了scrartcl
document 类,而我正在使用book
,这可能是原因。这是我的 MWE(希望足够小):
\documentclass[a4paper, 11pt, openany]{book}
\usepackage[english]{babel}
\usepackage{titlesec}
\usepackage{fancyhdr}
\usepackage{lipsum}% just for the example
\setlength{\headheight}{14pt}
\pagestyle{fancy}
\fancyhf{}
\fancyfoot[LE,RO]{\thepage}
\fancyhead[EL]{\leftmark}
\fancyhead[OR]{\scshape\nouppercase\rightmark}
\renewcommand{\chaptermark}[1]{%
\markboth{\scshape #1}{}}
\newcommand{\markedsection}[2]{\section[#2]{#2% See the linked answer
\sectionmark{#1}}
\sectionmark{#1}}
\author{Author}
\title{Test book}
\begin{document}
\maketitle
\tableofcontents
\chapter[Test chapter]{Test chapter}
\section{First section}
\lipsum[4-11]
% Method 1
%\sectionmark{Short section title}
%\section[Long section title]{Long section title}
%\sectionmark{Short section title}
% Method 2
\markedsection{Short section title}{Long section title}
\lipsum[1-6]
\end{document}
(如果有帮助的话我可以提供 .pdf)。有些答案建议使用 KOMA-script 书籍课程,但这不是一个选择,因为这本书几乎已经完成,而且切换课程已经太晚了。
答案1
如果您切换到titleps
,则可以使用当前代码,而且它似乎可以工作。更好的方法可能是使用软件包对其他标记集的扩展支持,从而避免需要解决方法。
或者,由于您正在使用titlesec
,您可能只需设置分段命令即可避免采取特殊措施。但是,如果不了解您如何使用它,很难确定。
\documentclass[a4paper, 11pt, openany]{book}
\usepackage[english]{babel}
\usepackage[pagestyles]{titlesec}
\usepackage{lipsum}% just for the example
\newcommand{\markedsection}[2]{\section[#2]{#2% See the linked answer
\sectionmark{#1}}
\sectionmark{#1}}
\newpagestyle{myfancy}[\normalfont\normalsize\scshape]{%
\setheadrule{.4pt}%
\sethead[\toptitlemarks\chaptertitle][][]{}{}{\toptitlemarks\thesection\space\sectiontitle}%
\setfoot*{}{}{\thepage}%
}
\pagestyle{myfancy}
\author{Author}
\title{Test book}
\begin{document}
\maketitle
\tableofcontents
\chapter[Test chapter]{Test chapter}
\section{First section}
\lipsum[4-11]
\markedsection{Short section title}{Long section title}
\lipsum[1-6]
\end{document}