我怎样才能仅删除一个章节的“章节”标题?
例如,如果我只想删除第 2 章的“章节”标题,则使用
\documentclass{report}
\begin{document}
\chapter{Hello}
\chapter{World}
\chapter{!}
\end{document}
我得到:
我希望获得:
答案1
章节标题设置为report.cls
通过宏\@makechapterhead
:
\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@
}}
我们可以创建它的“副本”,但只需删除创建即可Chapter X
。我们将其称为副本\fake@makechapterhead
:
\def\fake@makechapterhead#1{%
\vspace*{50\p@}%
{\parindent \z@ \raggedright \normalfont
\ifnum \c@secnumdepth >\m@ne
\huge\bfseries \strut%\@chapapp\space \thechapter
\par\nobreak
\vskip 20\p@
\fi
\interlinepenalty\@M
\Huge \bfseries #1\par\nobreak
\vskip 40\p@
}}
注释部分已被替换为\strut
(为了正确设置适当的基线。
现在我们添加一些内部管理和用户界面宏,您可以使用它们\newchapterhead
来创建“假”章节标题,并\restorechapterhead
恢复原始设置:
\documentclass{report}
\makeatletter
\let\old@makechapterhead\@makechapterhead
% Taken from http://mirrors.ctan.org/macros/latex/unpacked/report.cls
\def\fake@makechapterhead#1{%
\vspace*{50\p@}%
{\parindent \z@ \raggedright \normalfont
\ifnum \c@secnumdepth >\m@ne
\huge\bfseries \strut%\@chapapp\space \thechapter
\par\nobreak
\vskip 20\p@
\fi
\interlinepenalty\@M
\Huge \bfseries #1\par\nobreak
\vskip 40\p@
}}
\newcommand{\newchapterhead}{\let\@makechapterhead\fake@makechapterhead}
\newcommand{\restorechapterhead}{\let\@makechapterhead\old@makechapterhead}
\makeatother
\begin{document}
\chapter{Hello}
\newchapterhead
\chapter{World}
\restorechapterhead
\chapter{!}
\end{document}
Chapter X
上述过程仅通过删除打印的短语来保持章节标题的垂直位置不变。
另一种方法可能是使用\chapter*
章节设置。这不会在章节页面上为标题提供相同的垂直位置,但也可能正是您想要的:
\documentclass{report}
\begin{document}
\chapter{Hello}
\clearpage\refstepcounter{chapter}%
\chapter*{World}
\chapter{!}
\end{document}
发行\clearpage\refstepcounter{chapter}
可以实现两件事:
步骤
chapter
计数器以确保章节中的子内容有正确的引用World
;如果您使用
hyperref
用于放置内部文档超链接。