从章节标题中删除“章节#”,但在目录中保留章节编号

从章节标题中删除“章节#”,但在目录中保留章节编号

我正在使用report文档类。我想从章节标题中删除单词“章节”和“章节编号”,这样当新章节开始时,我将只获得章节标题。我可以使用以下方法做到这一点:

\renewcommand{\chaptername}{}
\renewcommand{\thechapter}{}

看起来还行,但会破坏目录。我想要目录上有编号的章节,例如

  1. 函数名称一

1.1 参数

1.2 返回值

但目录如下所示:

函数名称一

.1 参数

.2 返回值

我知道我可以使用该包来做到这一点titlesec,但是有没有不用该包也可以做到这一点?

答案1

您可以重新定义章节输出的内部方式:

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

答案2

基本上,您需要更新处理章节标题格式的命令。这关联解释得很好。既然你不想要带星号的版本,你可以选择更换普通版本。

\renewcommand{\@makechapterhead}[1]{%
 \vspace*{50\p@}%
 {\parindent \z@ \raggedright \normalfont
  \hrule                                        % horizontal line
  \vspace{5pt}%                                 % add vertical space
  \ifnum \c@secnumdepth >\m@ne
   \huge\scshape \@chapapp\space \thechapter    % Chapter number
   \par\nobreak
   \vskip 20\p@
  \fi
  \interlinepenalty\@M
  \Huge \scshape #1\par                         % chapter title
  \vspace{5pt}%                                 % add vertical space
  \hrule                                        % horizontal rule
  \nobreak
  \vskip 40\p@
 }%
}

您需要做的是注释掉包含Chapter number注释的行和周围的注释(if 内的所有内容),以消除多余的空格。如果您想更改章节标题的外观,可以进一步自定义此命令。请注意,您必须将其包装起来\makeatletter\makeatother更改 @ 符号的 catcode。因此您将得到:

\makeatletter
\renewcommand{\@makechapterhead}[1]{%
  \vspace*{50\p@}%
  {\parindent \z@ \raggedright \normalfont
  \hrule                                        % horizontal line
  \vspace{5pt}%                                 % add vertical space
  \interlinepenalty\@M
  \Huge \scshape #1\par                         % chapter title
  \vspace{5pt}%                                 % add vertical space
  \hrule                                        % horizontal rule
  \nobreak
  \vskip 40\p@
  }%
}
\makeatother

以及一个简单的测试文档

\documentclass{report}
\begin{document}
\makeatletter
\renewcommand{\@makechapterhead}[1]{%
  \vspace*{50\p@}%
  {\parindent \z@ \raggedright \normalfont
  \hrule                                        % horizontal line
  \vspace{5pt}%                                 % add vertical space
  \interlinepenalty\@M
  \Huge \scshape #1\par                         % chapter title
  \vspace{5pt}%                                 % add vertical space
  \hrule                                        % horizontal rule
  \nobreak
  \vskip 40\p@
  }%
}
\makeatother
\tableofcontents
\chapter{Test}
 some test text
\end{document}

看起来像这样:

目录 章节标题

编辑:太慢了:(

相关内容