我正在使用report
文档类。我想从章节标题中删除单词“章节”和“章节编号”,这样当新章节开始时,我将只获得章节标题。我可以使用以下方法做到这一点:
\renewcommand{\chaptername}{}
\renewcommand{\thechapter}{}
看起来还行,但会破坏目录。我想要目录上有编号的章节,例如
- 函数名称一
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}
看起来像这样:
编辑:太慢了:(