我对 LaTeX 还很陌生,理解标记系统非常困难。我不太明白 LaTeX Companion 和 fancyhdr 手册在说什么。
我正在创建一个包含章节和节的书籍类型文档,并且我希望在每个页眉的角落都显示\thechapter
.。\thesection
因为这是书本格式,所以每个章节都从自己的页面开始,这正是我想要的效果。但是,某些页面的一页中有多个部分。
我想要第一的部分甚至显示的页面\thesection
,我想要最后的部分奇怪的要显示的页面\thesection
。
截至目前,我只能让 LaTeX 显示最后的任何页面上的部分,无论是偶数还是奇数。这是当前代码和一张显示我的意思的图片。
\documentclass[a4paper,12pt,twoside,openany]{book}
\usepackage{lipsum}
\usepackage{fancyhdr}
\fancypagestyle{plain}{
\fancyhf{}
\fancyhead[RO]{\bfseries\nouppercase\leftmark}
\fancyhead[LE]{\bfseries\nouppercase\leftmark}
\fancyfoot[RO]{\thepage}
\fancyfoot[LE]{\thepage}}
\pagestyle{plain}
\renewcommand{\chaptermark}{\markboth{\thechapter}}
\renewcommand{\sectionmark}{\markboth{\thesection}}
\begin{document}
\chapter{Header Test}
\section{Sec1}
\lipsum[1]
\section{Sec2}
\lipsum[3-4]
\section{Sec3}
\lipsum[5]
\section{Sec4}
\lipsum[7]
\end{document}
我究竟做错了什么?
答案1
为了获得第一个新的部分而不是上一页的后续部分,我认为你只需要使用第一的标记而不是顶部标记。此代码(略)改编自 Werner 的回答:
\documentclass[twoside,openany]{book}
\usepackage{lipsum}
\usepackage{titleps}
\renewpagestyle{plain}{
\sethead[\firsttitlemarks\bfseries\thesection][][]% even-left | even-center | even-right
{}{}{\bottitlemarks\bfseries\thesection}% odd-left | odd-center | odd-right
\setfoot[\thepage][][]% even-left | even-center | even-right
{}{}{\thepage}% odd-left | odd-center | odd-right
\setheadrule{0.4pt}
}
\pagestyle{plain}
\begin{document}
\chapter{Header Test}
\section{Sec1}
\lipsum[1]
\section{Sec2}
\lipsum[3-4]
\section{Sec3}
\lipsum[5]
\section{Sec4}
\lipsum[7]
\chapter{New Chapter}
\section{Sec5}
\lipsum[2]
\section{Sec6}
\lipsum[6]
\section{Sec7}
\lipsum[8-9]
\section{Sec8}
\lipsum[10]
\end{document}
我可以重现没有标题的章节的唯一情况是章节的首页上没有\section
命令。在这种情况下,我确实得到了一个标题,但它只是一行,没有章节或部分的标记。由于没有部分,所以这是有道理的。但是,在这种情况下,您可能希望标记章节。
如果是这样,你可以尝试这个:
\renewpagestyle{plain}{
\sethead[\firsttitlemarks\bfseries\ifnum\value{section}=0 \thechapter\else\thesection\fi][][]% even-left | even-center | even-right
{}{}{\bottitlemarks\bfseries\ifnum\value{section}=0 \thechapter\else\thesection\fi}% odd-left | odd-center | odd-right
\setfoot[\thepage][][]% even-left | even-center | even-right
{}{}{\thepage}% odd-left | odd-center | odd-right
\setheadrule{0.4pt}
}
编辑
我不确定为什么发布\tableofcontents
似乎会清空标题。但是,由于您正在使用titlesec
,因此您可以使用以下方法,该方法利用了该包中的条件。我不确定目录页本身应该发生什么。这会将目录的标题放入标题中,因为这里没有章节编号。(或者,数字是 0。)
\documentclass[twoside,openany]{book}
\usepackage{lipsum}
\usepackage[pagestyles]{titlesec}
\renewpagestyle{plain}{
\sethead[\firsttitlemarks\bfseries\ifthesection{\thesection}{\ifthechapter{\thechapter}{\chaptertitle}}][][]% even-left | even-center | even-right
{}{}{\bottitlemarks\bfseries\ifthesection{\thesection}{\ifthechapter{\thechapter}{\chaptertitle}}}% odd-left | odd-center | odd-right
\setfoot[\thepage][][]% even-left | even-center | even-right
{}{}{\thepage}% odd-left | odd-center | odd-right
\setheadrule{0.4pt}
}
\pagestyle{plain}
\begin{document}
\tableofcontents
\chapter{Header Test}
\section{Sec1}
\lipsum[1]
\section{Sec2}
\lipsum[3-4]
\section{Sec3}
\lipsum[5]
\section{Sec4}
\lipsum[7]
\chapter{New Chapter}
\section{Sec5}
\lipsum[2]
\section{Sec6}
\lipsum[6]
\section{Sec7}
\lipsum[8-9]
\section{Sec8}
\lipsum[10]
\chapter{GAH}
\lipsum[1-4]
\chapter{New Chapter AAAA}
\section{Sec5}
\lipsum[2]
\section{Sec6}
\lipsum[6]
\section{Sec7}
\lipsum[8-9]
\section{Sec8}
\lipsum[10]
\chapter{GAH1}
\section{Sec8}
\lipsum[10]
\lipsum[1-4]
\lipsum[1-4]
\lipsum[1-4]
\lipsum[1-4]
\chapter{New CHAPTER AAAAA}
\section{Sec5}
\lipsum[2]
\section{Sec6}
\lipsum[6]
\section{Sec7}
\lipsum[8-9]
\section{Sec8}
\lipsum[10]
\end{document}
答案2
我不会直接回答你的问题,而是用另一种建议来回答。那就是使用titleps
。
使用开关比如\toptitlemarks
,\firsttitlemarks
或者\bottitlemarks
你可以以字典格式提取特定部分的信息。下面我重新定义了plain
页面样式(就像你对fancyhdr
)相应设置页眉和页脚。
\documentclass[twoside,openany]{book}
\usepackage{lipsum}
\usepackage{titleps}
\renewpagestyle{plain}{
\sethead[\toptitlemarks\bfseries\thesection][][]% even-left | even-center | even-right
{}{}{\bottitlemarks\bfseries\thesection}% odd-left | odd-center | odd-right
\setfoot[\thepage][][]% even-left | even-center | even-right
{}{}{\thepage}% odd-left | odd-center | odd-right
\setheadrule{0.4pt}
}
\pagestyle{plain}
\begin{document}
\chapter{Header Test}
\section{Sec1}
\lipsum[1]
\section{Sec2}
\lipsum[3-4]
\section{Sec3}
\lipsum[5]
\section{Sec4}
\lipsum[7]
\end{document}
titleps
阅读时使用titleps
为了fancyhdr
用户. 关于字典式标题的讨论在titleps
文档(部分4 分)。