\chaptermark、\tableofcontents 和未编号章节

\chaptermark、\tableofcontents 和未编号章节

我对于这段代码有两个疑问。

\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}
  1. 如果不存在则为什么\chaptermark不影响标题?\tableofcontents
  2. 有没有办法能够自动fancyhdr识别\chapter*并在两个标题中仅使用章节标题(没有编号)进行打印?(\markboth{Conclusion}{Conclusion}在之后添加\addcontentsline将手动修复)

答案1

编辑:请参阅下文如何保留原始\chapter*代码。

  1. 如果不存在则为什么\chaptermark不影响标题?\tableofcontents

我没有看到。如果我注释掉,\tableofcontents我仍然会得到'1. 第一章'标题。

  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} }
}

相关内容