几周前,我发了一个关于页眉页脚设计的问题,现在它看起来恰到好处:谢谢。不过,我的目录,因为它有两个页面,默认样式对我来说不起作用(如您所见,这个 0 非常不愉快):
照片一
我看过了使用 fancyhdr 包仅更改目录页的标题发布,并且我在我的styles.sty文件中做了类似的事情:
\usepackage{extramarks}
\usepackage{fancyhdr}
\fancypagestyle{nor}{% <===========================================
\renewcommand{\headrulewidth}{0.1pt}
\fancyhead[RE]{\nouppercase{\leftmark}}
\fancyhead[LO]{\nouppercase{\lastrightxmark}}
\fancyhead[RO]{\lastleftxmark}
\fancyhead[LE]{\thechapter}
\fancyfoot[RO, LE]{\thepage}
\fancyfoot[CO, CE]{}
\fancyheadoffset[LE,RO]{+0.025\textwidth}
}
\fancypagestyle{toc}{% <===========================================
\renewcommand{\headrulewidth}{0.1pt}
\fancyhead[RE]{\nouppercase{\leftmark}}
\fancyhead[LO]{\nouppercase{\lastrightxmark}}
\fancyhead[RO]{\lastleftxmark}
\fancyhead[LE]{}
\fancyfoot[RO, LE]{\thepage}
\fancyfoot[CO, CE]{}
\fancyheadoffset[]{+0.025\textwidth}
}
\renewcommand{\chaptermark}[1]{\markboth{#1}{}\extramarks{}{}}
\renewcommand{\sectionmark}[1]{\extramarks{\thesection}{#1}}
然后,在 .tex 文件中:
\documentclass[a4paper,12pt,twoside]{book}
\usepackage{styles}
\begin{document}
\setlength{\baselineskip}{.55cm}
\pagestyle{nor}
\begin{titlepage}
Some text
\end{titlepage}
\pagestyle{toc}
\tableofcontents
\pagestyle{nor}
\chapter{Els nombres enters}
SOME TEXT.
\end{document}
但这对我来说不起作用,因为 (1) chapterMark/sectionMark 的重新定义丢失了,所以它会干扰其他页面的样式;(2) 从照片 II 和照片 III 来看,它似乎从未从 \pagestyle{toc} 发生变化;(3) TOC 标题也不起作用,因为它显示的输出与照片 I 相同。照片 IV 来自我进行这些更改之前的功能性标题。
希望你能帮助我。谢谢。
更新:我对我的styles.sty代码做了一些修改,目前情况如下。main.tex 保持完整。有两点:有没有办法让代码更优雅?它似乎有点不对劲。另一点,正如我向 Pieter 评论的那样,\renewcommand{\chaptermark} 和 \renewcommand{\sectionmark} 仍然无法按预期工作,输出与照片 II 中的相同。此外,我尝试将这两个命令放在 \fancypagestyle{} 定义内和上方:它根本没有起作用。
\usepackage{extramarks}
\usepackage{fancyhdr}
\fancypagestyle{nor}{% <===========================================
\renewcommand{\headrulewidth}{0.1pt}
\fancyhead[RE]{\nouppercase{\leftmark}}
\fancyhead[LO]{\nouppercase{\lastrightxmark}}
\fancyhead[CE,CO]{}
\fancyhead[RO]{\lastleftxmark}
\fancyhead[LE]{\thechapter}
\fancyfoot[RO, LE]{\thepage}
\fancyfoot[CO, CE]{}
\fancyheadoffset[LE,RO]{+0.025\textwidth}
\fancyheadoffset[RE,LO]{+0.0\textwidth}
}
\fancypagestyle{toc}{% <===========================================
\renewcommand{\headrulewidth}{0.1pt}
\fancyhead[RE]{}
\fancyhead[LO]{}
\fancyhead[CE,CO]{\textsc{Índex}}
\fancyfoot[RO, LE]{\thepage}
\fancyfoot[CO, CE]{}
\fancyhead[RO]{}
\fancyhead[LE]{}
\fancyheadoffset[]{+0.025\textwidth}
}
\renewcommand{\chaptermark}[1]{\markboth{#1}{}\extramarks{}{}}
\renewcommand{\sectionmark}[1]{\extramarks{\thesection}{#1}}
照片二
照片三
照片四
答案1
在与@Mario的私下交流中,我可以解决这两个问题。为了便于将来查找,我将在此处提供这两个问题的解决方案。
1. 为什么目录的最后一页出现了错误的页眉?
该pagestyle{nor}
命令是在目录的最后一页输出之前执行的。当执行\newpage
下一个命令所暗示的时,该页的输出就会发生。本身末尾没有;如果您愿意,您可以在同一页上在其后添加其他文本。\chapter
\tableofcontents
\newpage
现在输出页面时,新的pagestyle已经设置好了,所以就使用pagestyle了。解决办法是在\newpage
前面加一个\pagestyle{nor}
。
2.\chaptermark
和\sectionmark
似乎不起作用
看来 Mario 使用的是fancyhdr
3.10 版。在版本 4 之前的所有 fancyhdr 版本中,初始化都是在给出第一个(或其派生的页面样式之一)时完成的,包括和\pagestyle{fancy}
的初始化。因此,文档中的第一个初始化了这些,因此 中给出的定义丢失了。在版本 4 中,情况不再如此,因此这会给出正确的结果。\chaptermark
\sectionmark
\pagestyle{nor}
styles.sty
fancyhdr
幸运的是,除了切换到版本 4 之外,还有一个简单的解决方案:在 中styles.sty
,将其放在定义\pagestyle{nor}
之前\chaptermark
。现在首先完成初始化,然后给定的定义将覆盖默认定义。
\pagestyle{nor}
\renewcommand{\chaptermark}[1]{\markboth{#1}{}\extramarks{}{}}
\renewcommand{\sectionmark}[1]{\extramarks{\thesection}{#1}}