这titleps
文档提到:
(仅限
titlesec
。不在titleps
。)\ifthechapter{⟨true⟩}{⟨false⟩}
,\ifthesection{⟨true⟩}{⟨false⟩}
,\ifthesubsection{⟨true⟩}{⟨false⟩}
... 扩展为 ,⟨true⟩
除非相应标题缺少标签,或上级之后还没有标题(例如,在\chapter
和后续 之间\section
)。
现在,考虑以下 MWE:
\documentclass[openany]{book}
\usepackage[pagestyles]{titlesec}
\usepackage{lipsum}
\renewcommand{\thechapter}{\Roman{chapter}}
\renewcommand{\thesection}{\arabic{section}}
\renewcommand{\thesubsection}{\arabic{subsection}}
\settitlemarks{chapter,section,subsection}
\newpagestyle{myPageStyle}[\scshape]{
\headrule
\sethead
[\thechapter][\MakeLowercase\chaptertitle][] % even
{} % odd
{\MakeLowercase\subsectiontitle}
{ \ifthesection{
\S\ \thesection\ifthesubsection{
.\thesubsection
}{\normalfont [no subsec detected]}
}{\normalfont [no sec detected]}
}
}
\pagestyle{myPageStyle}
\begin{document}
\lipsum[1]
\chapter{Call me by your name}
\lipsum[1-15]
\section{Elio}
\lipsum[1-8]
\subsection{Bach}
\lipsum[1]
\subsection{Oliver}
\subsection{Marzia}
\end{document}
生成的 PDF 的最后一页如下所示:
我预料这很令人困惑,§1.1
因为页面上出现的第一件事是\subsection{Bach}
(第一部分)的延续。
另一方面,我确实按预期在 PDF 中获得了以下页面:
这是可以解释的,因为此页面上首先出现的文本不包含在任何小节中,而只包含在节中\section{Elio}
。
问题有人能解释一下发生了什么吗?我似乎无法从文档中弄清楚。
答案1
手册中描述了这种行为(第 4 页):
5. 标记
可以通过 4 种方式检索标记:
最高分如果页面以文本开头,则它们是属于该文本的章节单元的标记。如果页面以章节标题开头,则它们是该标题的标记。换句话说,顶部标记指的是紧邻标题的章节。
第一个分数第一个分区标题的标记。
底部标记最后一个(底部)分区标题的标记(也称为底部标记)。
下一个最高分底部标记,其值为下一页顶部标记的值(仅限直类或等效标记);通过从中选取某个值并将其与底部标记的相应值进行比较,您可以知道某一部分是否在下一页继续。当然,它不会经常使用。
然后在第 5 页:
\bottitlemarks \toptitlemarks \firsttitlemarks \nexttoptitlemarks \outertitlemarks \innertitlemarks
\thesection
这些命令设置了标记后续的、等 的值\sectiontitle
将从中获取。...
您
可以在标题中自由使用它们;
默认设置似乎是第一个标记。如果你想标记最后一页巴赫§1.1那么你需要顶部标题标记:
\newpagestyle{myPageStyle}[\scshape]{
\headrule
\sethead
[\thechapter][\MakeLowercase\chaptertitle][] % even
{} % odd
{\toptitlemarks\MakeLowercase\subsectiontitle}
{\toptitlemarks\ifthesection{
\S\ \thesection\ifthesubsection{
.\thesubsection
}{\normalfont [no subsec detected]}
}{\normalfont [no sec detected]}
}
}
或者更简单,作为一个包选项:
\usepackage[pagestyles,topmarks]{titlesec}
结果: