如何区分 fancyhead 中的 \chapter 和 \chapter*

如何区分 fancyhead 中的 \chapter 和 \chapter*

我的文档中有一个自定义标题,基于\documentclass{book}

之后的页面\chapter呈现以下模式:

Chapter X: title

提供方:\fancyhead[L]{\leftmark}

\chapter*但是,当用户调用where 标题显示之前的位置时会出现错误\chapter。有办法区分它吗?

編輯符合@david Carlisle 的建议。重现错误的最小示例:

\documentclass{book}
\usepackage{lipsum}
\usepackage{fancyhdr}

\pagenumbering{gobble}
\fancyhf{}
\fancyhead[L]{\leftmark}

\begin{document}

\pagestyle{fancy}

\chapter*{Sumary}
\lipsum[2-4]\newpage\lipsum[2-4]

\chapter{Introduction}
\lipsum[2-4]\newpage\lipsum[2-4]

\chapter{Metodology}
\lipsum[2-4]\newpage\lipsum[2-4]

\chapter*{References}
\lipsum[2-4]
\newpage
Here there is a bug in the heading. Should be only 'References' or either empty.

\end{document}

答案1

您想使用\frontmatter\mainmatter\backmatter

发出第一或第三条命令后,\chapter将生成未编号的章节,这些章节将放在目录中。下面的\mainmatter章节已编号。

您还需要修改 的定义\chaptermark(我借此机会删除了可怕的默认大写字母)。但是\tableofcontents确实如此\MakeUppercase,所以\nouppercase仍然是必要的。

如果您不想在前言中使用罗马页码,只需对\frontmatter和进行简单修改\mainmatter即可。

\documentclass{book}
\usepackage{lipsum}
\usepackage{fancyhdr}

\fancyhf{}
\fancyhead[L]{\nouppercase{\leftmark}}

\makeatletter
\renewcommand{\chaptermark}[1]{%
  \markboth{%
    \if@mainmatter
      \chaptername\ \thechapter. %
    \fi
    #1%
  }{}%
}
% the following is to get numbering from 1 for all the document
\renewcommand{\frontmatter}{%
  \cleardoublepage
  \@mainmatterfalse
  \pagenumbering{arabic}%
}
\renewcommand{\mainmatter}{\cleardoublepage\@mainmattertrue}
\makeatother
  
\pagestyle{fancy}

\begin{document}

\frontmatter

\tableofcontents

\chapter{Summary}
\lipsum[2-4]\newpage\lipsum[2-4]

\mainmatter

\chapter{Introduction}
\lipsum[2-4]\newpage\lipsum[2-4]

\chapter{Metodology}
\lipsum[2-4]\newpage\lipsum[2-4]

\backmatter

\chapter{References}
\lipsum[2-4]
\newpage
Here there is a bug in the heading. Should be only 'References' or either empty.

\end{document}

概括

第1章

参考

如果你确实想要大写,请删除\nouppercase并将重新定义更改\chaptermark

\renewcommand{\chaptermark}[1]{%
  \markboth{%
    \MakeUppercase{%
      \if@mainmatter
        \chaptername\ \thechapter. %
      \fi
      #1%
    }%
  }{}%
}

相关内容