我正在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 運行時重新生成。在這種情況下,標記命令應插入到元件啟動命令(\bibliography
或)之前\printindex
,前面是 ,\newpage
以便更改後的標題不會出現在需要的位置之前。