我正在 documentclass 中写一本书twoside
book
。我使用以下代码片段来修改页眉和页脚。
% Header-Footer
\usepackage[english]{babel}
\renewcommand\cftsecpresnum{\S}
\usepackage{fancyhdr}
\pagestyle{fancy}
\fancyhf{}
\fancyhead[LE,RO]{\rightmark}
\fancyhead[LO,RE]{\leftmark}
\fancyfoot[C]{\thepage}
\renewcommand{\chaptermark}[1]{\markboth{\MakeUppercase{\thechapter.\ #1}}{}}
\renewcommand{\sectionmark}[1]{\markright{\S\thesection.\ #1}}
这是我的Exercises
环境:
\newlist{exercise}{enumerate}{5}
\setlist[exercise]{
label*=\thechapter.\arabic*.,
ref=\thechapter.\arabic*,
before={%
\section*{\hfil{Exercises -- \thechapter}}%
\addcontentsline{toc}{section}{Exercises -- \thechapter}%
\setlist*[enumerate,1]{ref=\theexercisei.~\arabic*}%
\setlist*[enumerate,2]{ref=\theenumi.(\alph*)}%
},
}
\setlist*[enumerate,2]{ref=\theenumi.(\alph*)}
以下是我正在寻找解决方案的问题:
我有点搞不清楚 MWE 中应该包含哪些内容。如果有人需要,请问我哪些内容可能会对此产生影响,我会将它们包括在内并发布 MWE。
答案1
在许多文档类别(包括基本book
)中,\section*
没有设置正确的标记,因此\markright{...}
在启动后立即添加与节标题相同的文本\section*
。这里,应该在\setlist{exercise}
定义中完成。
同样,在启动参考书目和索引时,\markright{}
在某个位置插入一个空白,该空白将在该章节的第一页完成之前生效。标记命令将在 (La)TeX 读入的页面上生效。
标记插入的位置取决于这些带星号的组件(\chapter*
或\section*) are defined and used. Assume that they are launched by
\bibliography and
\printindex . With these commands, the starred command is part of those definitions, and thus will appear in a derived file (
.bbl or
.ind`)如何插入主源文件中。如果这样的组件长度超过一页,则将标记命令放在组件启动命令之后会延迟将标记包含在页面标题中,直到读取页面时才包含。
不建议手动更改.bbl
或.ind
文件,因为这些文件将在下次运行 LaTeX 时重新生成。在这种情况下,应将 mark 命令插入到组件启动命令(\bibliography
或\printindex
)之前,前面加上 ,\newpage
这样更改后的标题就不会在需要之前出现。