我尝试添加第二个可选参数来\section
指定不同的目录和标题(例如在memoir
类中)。
我使用titlesec
(并titleps
通过pagestyles
选项)。我的代码运行良好除非该部分位于页面的最开始处(在我的 MWE 中,第四部分显示了这个问题)。
\documentclass[a4paper]{book}
\usepackage[pagestyles]{titlesec}
\usepackage[colorlinks]{hyperref}
\usepackage{xparse}
% my new \section macro
\LetLtxMacro\origsection\section
\RenewDocumentCommand\section{o o m}{%
\IfValueTF{#1}{\def\titleintoc{#1}}{\def\titleintoc{#3}}%
\IfValueTF{#2}{\def\titleinheader{#2}}{\def\titleinheader{\titleintoc}}%
\pretitlemark{section}{\titleinheader}%
\origsection[\titleintoc]{#3}%
\sectionmark{\titleinheader}%
}
% page style
\newpagestyle{section-section}[]{
\sethead[\firsttitlemarks\sectiontitle][][]{}{}{\firsttitlemarks\sectiontitle}
\setheadrule{.4pt}
\setfoot*{}{\thepage}{}
}
\pagestyle{section-section}
\usepackage{lipsum}
\begin{document}
\tableofcontents
\chapter{Test}
\lipsum
\section{section 1 everywhere}
\lipsum[10-19]
\section[section 2 in toc and in header]{section 2 in text}
\lipsum[10-20]
\section[section 3 in toc][section 3 in header]{section 3 in text}
\lipsum[10-20]
\section[section 4 in toc][section 4 in header]{section 4 in text}
\lipsum[10-19]
\end{document}
第 10 页的页面顶部显示“目录中的第 4 节”,而不是“页眉中的第 4 节”(预期结果):
如何修补titlesec
(或titleps
)以获得预期结果?
答案1
您可以\pretitlemark
在下一页发货开始时\AtBeginShipoutNext
使用阿特别格什包裹。
\documentclass[a4paper]{book}
\usepackage[pagestyles]{titlesec}
\usepackage[colorlinks]{hyperref}
\usepackage{atbegshi}
\usepackage{xparse}
% my new \section macro
\LetLtxMacro\origsection\section
\RenewDocumentCommand\section{o o m}{%
\IfValueTF{#1}{\def\titleintoc{#1}}{\def\titleintoc{#3}}%
\IfValueTF{#2}{\def\titleinheader{#2}}{\def\titleinheader{\titleintoc}}%
\AtBeginShipoutNext{\pretitlemark{section}{\titleinheader}}%
\pretitlemark{section}{\titleinheader}%
\origsection[\titleintoc]{#3}%
\sectionmark{\titleinheader}%
}
% page style
\newpagestyle{section-section}[]{
\sethead[\firsttitlemarks\sectiontitle][][]{}{}{\firsttitlemarks\sectiontitle}
\setheadrule{.4pt}
\setfoot*{}{\thepage}{}
}
\pagestyle{section-section}
\usepackage{lipsum}
\begin{document}
\tableofcontents
\chapter{Test}
\lipsum
\section{section 1 everywhere}
\lipsum[10-19]
\section[section 2 in toc and in header]{section 2 in text}
\lipsum[10-20]
\section[section 3 in toc][section 3 in header]{section 3 in text}
\lipsum[10-20]
\section[section 4 in toc][section 4 in header]{section 4 in text}
\lipsum[10-19]
\end{document}