我对于这段代码有两个疑问。
\documentclass[11pt,a4paper]{book}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[english]{babel}
\usepackage[inner=3cm, outer=2.5cm, top=3.5cm, bottom=3.5cm]{geometry}
\usepackage{fancyhdr}
\setlength{\headheight}{14pt}
\setlength{\footskip}{45pt}
\setlength{\headsep}{30pt}
\fancypagestyle{mystyle}{%
\fancyhf{}
\fancyheadoffset[LE,RO]{0pt}
\fancyhead[LE]{\large\textit{\nouppercase{\leftmark}}}
\fancyhead[RO]{\large\textit{\nouppercase{\rightmark}}}
\cfoot{{- \thepage\ -}}
\renewcommand{\headrulewidth}{.4pt}
}
\fancypagestyle{plain}{%
\fancyhf{}
\fancyfoot[C]{{- \thepage\ -}}
\renewcommand{\headrulewidth}{0pt} \renewcommand{\footrulewidth}{0pt}
}
\renewcommand{\chaptermark}[1]{\markboth{\thechapter.\ #1}{\thechapter.\ #1}}
\usepackage{lipsum}
\begin{document}
\tableofcontents
\mainmatter
\pagestyle{mystyle}
\chapter{First Chapter}
\lipsum[1-20]
\chapter*{Conclusion}
\addcontentsline{toc}{chapter}{Conclusion}
\lipsum[1-20]
\end{document}
- 如果不存在则为什么
\chaptermark
不影响标题?\tableofcontents
- 有没有办法能够自动
fancyhdr
识别\chapter*
并在两个标题中仅使用章节标题(没有编号)进行打印?(\markboth{Conclusion}{Conclusion}
在之后添加\addcontentsline
将手动修复)
答案1
编辑:请参阅下文如何保留原始\chapter*
代码。
- 如果不存在则为什么
\chaptermark
不影响标题?\tableofcontents
我没有看到。如果我注释掉,\tableofcontents
我仍然会得到'1. 第一章'标题。
- 有没有办法让 fancyhdr 能够
\chapter*
自动识别?
Fancyhdr 不会破坏\chapter
命令等。它只是使用其标记命令提供的内容。
但你可以定义自己的命令,例如
\newcommand\chapterstar[1]{\chapter*{#1}\markboth{#1}{#1}}
. . .
\chapterstar{Conclusion}
编辑(添加)
实际上xparse
您可以轻松重新定义\chapter*
以包含该\markboth
命令。
\usepackage{xparse}
\let\origchapter\chapter
\RenewDocumentCommand \chapter { s O{#3} m }
{
\IfBooleanTF {#1}
{ \origchapter*{#3}\markboth {#3} {#3} }
{ \origchapter [#2] {#3} }
}