我有一个相当简单的问题,我无法解决,我只是试图获取标题中的节和子节(使用 fancyhdr)。但是,我似乎无法做到这一点。我想在左侧获取节或子节,在右侧获取页码。目前我正在使用以下代码:
\pagestyle{fancy}
\fancyhead[L]{\rightmark}
\fancyhead[R]{\thepage}
\fancyfoot[L]{}
\fancyfoot[C]{}
\fancyfoot[R]{}
但一开始,我有 3 个章节,没有子节,因此页眉只显示页码。我尝试了不同的右标记和左标记组合,但没有得到我想要的结果。所以,我试图将章节放在页眉中,除非有子节,否则我希望将子节放在页眉中。有什么想法可以做到这一点吗?
谢谢乔纳斯
答案1
您想要重新定义\subsectionmark
(默认情况下不执行任何操作)来发出标记:
\documentclass[a4paper,oneside]{report}
\usepackage{fancyhdr}
\usepackage{kantlipsum} % for mock text
\pagestyle{fancy}
\fancyhf{} % clear all fields
\fancyhead[L]{\rightmark}
\fancyhead[R]{\thepage}
\renewcommand{\subsectionmark}[1]{%
\markright{\MakeUppercase{\thesubsection.\ #1}}}%
}
\begin{document}
\chapter{Chapter title}
\kant[1]
\section{Section title}
\kant[2-7]
\subsection{Subsection title A}
\kant[8-10]
\subsection{Subsection title B}
\kant[11-14]
\subsection{Subsection title C}
\kant[15-18]
\end{document}
答案2
您是否熟悉 scrlayer-scrpage 软件包?该软件包允许您更详细地修改页面布局。阅读文档需要一段时间,而且很难找到您要查找的内容。但是,结合 scrlayer-scrpage 进行良好的 Google 搜索将为您提供进一步帮助。
我创建了一个小例子,它总是将“活动”元素放在页眉中,也就是最后提到的 {section、subsection 等}。我取消注释了一些行(%lehead 到 %cofoot)。如果您想在某个位置写一个特定的术语,例如您的姓名,您可以使用这些行。这适用于像书籍这样的文档,其中有两页彼此相邻。第一个字母可以是 l(左)c(中)或 r(右),然后是 e(偶数页)或 o(奇数页),然后是 head 表示页眉,foot 表示页面的页脚部分。
请检查您是否可以编译它以及它是否是您所寻找的。
祝好,巴斯蒂安
\documentclass[a4paper,11pt]{scrartcl}
\usepackage[english]{babel}
\usepackage{blindtext}
\usepackage[automark, headsepline, footsepline]{scrlayer-scrpage}
\clearpairofpagestyles
\automark*{section}
\automark*{subsection}
\automark*{subsubsection}
\ihead{\headmark}
\ohead*{\pagemark}
%\lehead{}
%\rehead{}
%\lohead{}
%\rohead{}
%\cefoot{}
%\cofoot{}
\pagestyle{scrheadings}
\begin{document}
\section{Section A}
\blindtext
\subsection{Subsection a}
\blindtext
\blindtext
\subsection{Subsection b}
\blindtext
\blindtext
\newpage
\subsection{Subsection c}
\blindtext
\section{Section B}
\blindtext
\subsection{Subsection c}
\blindtext
\blindtext
\subsection{Subsection d}
\blindtext
\newpage
\section{Section C}
\blindtext
\subsection{Subsection e}
\blindtext
\end{document}