仅使用 \chapter{} 时在目录中列出章节

仅使用 \chapter{} 时在目录中列出章节

我有一本小说要排版,我使用 scrbook 类,因为我认为它非常灵活。对于每个章节的开头,我都使用 \chapter{} 命令,并将 {} 内的字段留空,因此该命令只给我文本“第 1 章”。等等。

但是,如果章节没有名称,则不会出现在目录中。 是否可以使它们出现?

我希望这可以解释我想要实现的目标。

编辑1:我正在强烈考虑使用回忆录课程,所以如果有人知道如何在回忆录课程中做到这一点,请告诉我。

编辑2:我刚刚注意到,回忆录课程会自动发生,但我仍然对 scrbook 课程黑客感兴趣。

答案1

通过scrbook以下操作你可以得到你想要的东西:

\documentclass{scrbook}
\renewcommand{\numberline}[1]{\chaptername~#1}
\begin{document}
\tableofcontents
\chapter{\null}
abc
\chapter{\null}
def
\end{document}

我假设您不使用部分;在这种情况下,技巧一定有所不同。


对于使用部件,可以采用不同的方法:

\documentclass{scrbook}
\usepackage{etoolbox}

\makeatletter
\def\part@numberline#1{\partname~#1}
\def\chapter@numberline#1{\chaptername~#1}
\patchcmd{\l@part}{\begingroup}{\begingroup\let\numberline\part@numberline}{}{}
\patchcmd{\l@chapter}{\begingroup}{\begingroup\let\numberline\chapter@numberline}{}{}
\makeatother

\begin{document}
\tableofcontents
\part{\null}
\chapter{\null}
abc
\chapter{\null}
def
\end{document}

答案2

您可以使用每章前的两行代码来执行此操作:

\chapter[]{}
\addcontentsline{toc}{chapter}{\chaptername{} \thechapter}

最小示例:

\documentclass{scrbook}

\begin{document}
\tableofcontents
\chapter[]{}
\addcontentsline{toc}{chapter}{\chaptername{} \thechapter}

\end{document}

但是在每一章之前你不会看到章节这个词,只有章节编号。

答案3

这是book文档类的解决方案。它依赖于使用tocloft包。

\documentclass{book}
\usepackage{tocloft}
\renewcommand\cftchappresnum{Chapter }
\begin{document}
\frontmatter
\tableofcontents
\mainmatter
\chapter{}
\chapter{}
\end{document}

在此处输入图片描述

答案4

如果只应对章节进行此操作,则可以修补\addchaptertocentry

\documentclass[toc=flat]{scrbook}
\usepackage{xpatch}
\xpatchcmd{\addchaptertocentry}
  {\addtocentrydefault{chapter}{#1}{#2}}
  {\addtocentrydefault{chapter}{\chaptername~#1}{#2}}
  {}{\PatchFailed}
\begin{document}
\tableofcontents
\chapter{\null}
abc
\chapter{\null}
def
\end{document}

当然,您也可以对其他分段级别执行相同的操作。

\documentclass[toc=flat]{scrbook}
\usepackage{xpatch}
\xpatchcmd{\addparttocentry}
  {\addtocentrydefault{part}{#1}{#2}}
  {\addtocentrydefault{part}{\partname~#1}{#2}}
  {}{\PatchFailed}
\xpatchcmd{\addchaptertocentry}
  {\addtocentrydefault{chapter}{#1}{#2}}
  {\addtocentrydefault{chapter}{\chaptername~#1}{#2}}
  {}{\PatchFailed}
\begin{document}
\tableofcontents
\part{\null}
\chapter{\null}
abc
\chapter{\null}
def
\end{document}

结果

在此处输入图片描述

相关内容