我想\thesubsection
在标题中添加第一的小节的实例,而不是最后一个,似乎是默认的。
以下 MWE 说明了一切:
\documentclass[a5paper]{article}
\usepackage{fancyhdr}
\usepackage{lipsum}
\usepackage[a5paper]{geometry}
\lhead{\thesubsection}
\pagestyle{fancy}
\begin{document}
\section{Section 1}
\subsection{Subsection 1}
\lipsum[1]
\section{Section 2}
\subsection{Subsection 1}
\lipsum[2]
\pagebreak
\subsection{Subsection 2}
\lipsum[3]
\subsection{Subsection 3}
\lipsum[4]
\section{Section 3}
\subsection{Subsection 1}
\lipsum[5]
\subsection{Subsection 2}
\lipsum[6]
\subsection{Subsection 3}
\lipsum[7]
\end{document}
结果:
Page What I want What I get
1 1.1 2.1
2 2.2 3.1
3 3.2 3.3
答案1
您永远不应该直接在页头中引用计数器。您获得的不是页面上的最后一个值,而是文档中 TeX 决定尝试分页时的值。这可能是最终选择的分页符之前的任意数量的页面。
系统\mark
旨在可靠地获取给定页面的正确值。遗憾的是,LaTex 在其章节标题中对标记的标准使用主要设计用于双面使用,章节值位于跨页的左侧,子章节位于右侧。
\lhead{\rightmark}
几乎可以满足您的要求,但第一页的标题左侧部分为空白,因为\firstmark
内部使用的是从上一页继承的值。您可以按如下方式初始化内容
\lhead{\rightmark}\markright{1.1 Subsection 1}
这样就可以得到你想要的结果。
您可以使用\topmark
(LaTeX 通常不使用)如果您想要选择页面的第一部分,即使页面顶部的文本位于上一节,这通常可能更好。但是,完成整个工作需要进行更广泛的更改,因为标记会\section
掩盖\subsection
页面顶部的标记,因为目的是只使用一个,否则它们会影响双面模式下跨页相对两侧的标题。