章节标记不变

章节标记不变

有人问过类似的问题,但读完之后我仍然认为下面的代码应该导致章节的开头显示为

1 部分章节

而不是

第 1 章
部分章节

但编译时我只得到后者,即默认的书章标题。我肯定漏掉了什么。

\documentclass{book}
\usepackage{fancyhdr}
\renewcommand{\chaptermark}[1]{\markboth{\thechapter\ #1}{}}
\begin{document}
\chapter{something}
\end{document}

答案1

标题chapter设置为\@makechapterhead,被称为在内\@chapter,其本身由使用\chapter

的正常定义\@makechapterhead是(参见book.cls

\def\@makechapterhead#1{%
  \vspace*{50\p@}%
  {\parindent \z@ \raggedright \normalfont
    \ifnum \c@secnumdepth >\m@ne
      \if@mainmatter
        \huge\bfseries \@chapapp\space \thechapter
        \par\nobreak
        \vskip 20\p@
      \fi
    \fi
    \interlinepenalty\@M
    \Huge \bfseries #1\par\nobreak
    \vskip 40\p@
  }}

线条 \huge\bfseries \@chapapp\space \thechapter 显示第1章然后弹出换行符。如果不需要,可以\@chapapp删除 并保留 \thechapter,然后删除\par\nobreak等等。否则,这将导致标题出现换行符和垂直间距,并且 被保留在 中#1

带星号的命令使用了类似的代码\chapter*,相关的宏名为\@makeschapterhead,但我在这里省略了它。

应该\vspace*{50\p@}更新为适当的值,但这完全取决于个人品味。\documentclass{book}

\makeatletter
\def\@makechapterhead#1{%
  \vspace*{50\p@}%
  {\parindent \z@ \raggedright \normalfont
    \ifnum \c@secnumdepth >\m@ne
      \if@mainmatter
        \huge\bfseries \thechapter~\space
      \fi
    \fi
    \interlinepenalty\@M
    \Huge \bfseries #1\par\nobreak
    \vskip 40\p@
}}
\makeatother
\usepackage{blindtext}
\begin{document}

\chapter{something}
\blindtext[10]
\end{document}

\xpatchcmd一个“更快捷”的解决方案是从包中使用xpatch

在此处输入图片描述

效果相同,如下所示\xpatchcmd

\documentclass{book}

\usepackage{xpatch}

\makeatletter
\xpatchcmd{\@makechapterhead}{% Old code
\huge\bfseries \@chapapp\space \thechapter
\par\nobreak
\vskip 20\p@
}{% New code
  \huge\bfseries \thechapter~\space
}{\typeout{Patch success!}}{\typeout{Patching failed :-(}}
\makeatother

\usepackage{blindtext}
\begin{document}

\chapter{something}
\blindtext[10]
\end{document}

答案2

仅当您能切换到其他课程时:

有类memoir您可以使用该命令\chapterstyle{section}来获得所需的结果。

\documentclass[a4paper]{memoir}
\chapterstyle{section}
\usepackage{blindtext}
\begin{document}
\blinddocument
\end{document}

在此处输入图片描述

还有班级scrbook知道一个选择chapterprefixline=false

\documentclass[chapterprefix=false]{scrbook}
\usepackage{blindtext}
\begin{document}
\blinddocument
\end{document}

在此处输入图片描述

相关内容