![在目录中按部分布局章节,但文本中的编号和布局按章节布局](https://linux22.com/image/387209/%E5%9C%A8%E7%9B%AE%E5%BD%95%E4%B8%AD%E6%8C%89%E9%83%A8%E5%88%86%E5%B8%83%E5%B1%80%E7%AB%A0%E8%8A%82%EF%BC%8C%E4%BD%86%E6%96%87%E6%9C%AC%E4%B8%AD%E7%9A%84%E7%BC%96%E5%8F%B7%E5%92%8C%E5%B8%83%E5%B1%80%E6%8C%89%E7%AB%A0%E8%8A%82%E5%B8%83%E5%B1%80.png)
我希望某些章节出现在目录中的同一级别和布局中。这些章节仍应使用其章节号进行编号(也显示在目录中),并且应看起来像文本中的章节(没有标题页)。
一个特殊的例子是缩写列表。目前,我使用:
\usepackage[automake, abbreviations, acronym, nomain, section=part]{glossaries-extra}
这样,目录看起来就像我想要的那样,但是文本中有一个标题页(除了标题之外是空白的),这是我不需要的。
对于正常章节我可以使用:
\addcontentsline{toc}{part}{Chapter 0}
这样目录中的条目布局正确,但前面没有章节号。但是,目录中应该显示章节号。
以下是 MWE:
\documentclass[a4paper]{scrreprt}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage[hang,tight]{subfigure}
\usepackage[subfigure]{tocloft}
\usepackage[toc,automake, abbreviations, acronym, nomain, section=part]{glossaries-extra}
\usepackage{hyperref}
\cftsetindents{chapter}{1em}{2.5em}
\cftsetindents{section}{2em}{3em}
\cftsetindents{subsection}{5em}{4.2em}
\cftsetindents{subsubsection}{9.2em}{7em}
\makeglossaries
\newabbreviation{test}{TEST}{test}
\begin{document}
\tableofcontents
\glsaddall
\printabbreviations %should not generate a title page
\chapter{Chapter 0} %should look like Part 1
%\addcontentsline{toc}{part}{Chapter 0} %no number in front
\label{test0}
\part{Part 1}
\chapter{Chapter 1}
\label{test3}
\end{document}
更新:我发现这相关问题并修改了其中的答案。因此在和之间\tableofcontents
现在glsaddall
有:
\makeatletter
\def\toclevel@chapter{1}\def\toclevel@part{2}
\addtocontents{toc}{\string\let\string\l@chapter\string\l@part}
\makeatother
并且将“glossaries-extra”包中的选项“section”设置为“chapter”(而不是“part”)。
现在我需要在下一章中恢复它。针对上述问题的另一个建议解决方案是使用\xpatchcmd
但除此之外我还提到了\usepackage{regexpatch}
无法识别的命令。那么,如何才能在下一章中恢复该命令呢?
答案1
我不明白你为什么要做这么奇怪的事情。但这里有一个建议:
\documentclass[a4paper]{scrreprt}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage[toc,automake, abbreviations, acronym, nomain]{glossaries-extra}
\usepackage{hyperref}
\RedeclareSectionCommand[tocindent=1em,tocnumwidth=2.5em]{chapter}
\RedeclareSectionCommand[tocindent=2em,tocnumwidth=3em]{section}
\RedeclareSectionCommand[tocindent=5em,tocnumwidth=4.2em]{subsection}
\RedeclareSectionCommand[tocindent=9.2em,tocnumwidth=7em]{subsubsection}
\makeglossaries
\newabbreviation{test}{TEST}{test}
\makeatletter
\newcommand*\original@l@chapter{}
\BeforeStartingTOC[toc]{\let\original@l@chapter\l@chapter}
\newcommand*\ChapterAsPartInTOC{%
\addtocontents{toc}{\protect\let\protect\l@chapter\protect\l@part}%
}
\newcommand*\RestoreChapterInTOC{%
\addtocontents{toc}{\protect\let\protect\l@chapter\protect\original@l@chapter}%
}
\makeatother
\begin{document}
\tableofcontents
\glsaddall
\ChapterAsPartInTOC
\printabbreviations %should not generate a title page
\chapter{Chapter 0} %should look like Part 1 in TOC
\label{test0}
\RestoreChapterInTOC
\part{Part 1}
\chapter{Chapter 1}
\label{test3}
\end{document}
结果:
补充说明:不要将包tocloft
与 KOMA-Script 类一起使用。包subfigure
已过时。请使用subfig
或subcaption
代替。