我之前发过一个问题,关于如何在目录中从第十个子节开始在子节编号和子节名称之间留出一点空间。答案这里建议解决方案。最好的解决方案之一是使用命令
\usepackage[tocindentauto]{tocstyle}
\usetocstyle{KOMAlike}
事实上,这解决了问题,并改变了目录的样式,根据需要在编号和子部分标题之间留出一点空间。但是,这又带来了另一个问题,即在目录页面的单个页面底部出现了空白!以下是问题的屏幕截图:
我怎样才能用其他项目(已经移至下一页)填充此空间?!这是我的 MWE:
\documentclass[12pt,a4paper]{article}
\usepackage[latin1]{inputenc}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage[left=2cm,right=2cm,top=2cm,bottom=2cm]{geometry}
\usepackage{tocloft}
\usepackage[tocindentauto]{tocstyle}
\usetocstyle{KOMAlike}
\begin{document}
\tableofcontents
\end{document}
答案1
首先:最多使用一个包来格式化目录,即要么tocloft
或tocstyle
要么tocbasic
或...
不幸的是,MWE 没有显示该问题。因此,以下内容只是猜测:也许第 9.1 节后面跟着第 9.2 节和第 9.2.1 节。
包避免在节级别和较低节级别之间出现分页符。此处较低节级别表示较高节级别编号。因此,a和第一个条目之间或 a和第一个条目之间tocstyle
不允许出现分页符。section
subsection
subsection
subsubsection
请注意,该软件包tocstyle
是 alpha 版本,据我所知,此状态永远不会改变。作者建议使用包裹tocbasic
反而:
\usepackage{tocbasic}[2017/01/03]
\DeclareTOCStyleEntry[dynnumwidth]{tocline}{section}
\DeclareTOCStyleEntry[dynnumwidth]{tocline}{subsection}
\DeclareTOCStyleEntry[dynnumwidth]{tocline}{subsubsection}
tocbasic
section
避免条目与其第一个条目之间的分页符subsection
。
例子:
但你可以使用选项改变这种行为onstarthigherlevel=\LastTOCLevelWasSame
(onstarthighersectionlevel
指的是部分级别数字)。请注意,我不推荐这样做,但这是可能的:
\usepackage{tocbasic}[2017/01/03]
\DeclareTOCStyleEntry[dynnumwidth,onstarthigherlevel=\LastTOCLevelWasSame]{tocline}{section}
\DeclareTOCStyleEntry[dynnumwidth,onstarthigherlevel=\LastTOCLevelWasSame]{tocline}{subsection}
\DeclareTOCStyleEntry[dynnumwidth,onstarthigherlevel=\LastTOCLevelWasSame]{tocline}{subsubsection}
代码:
\documentclass[12pt,a4paper]{article}
\usepackage[latin1]{inputenc}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage[left=2cm,right=2cm,top=2cm,bottom=2cm]{geometry}
\usepackage{tocbasic}[2017/01/03]
\DeclareTOCStyleEntry[dynnumwidth,onstarthigherlevel=\LastTOCLevelWasSame]{tocline}{section}
\DeclareTOCStyleEntry[dynnumwidth,onstarthigherlevel=\LastTOCLevelWasSame]{tocline}{subsection}
\DeclareTOCStyleEntry[dynnumwidth,onstarthigherlevel=\LastTOCLevelWasSame]{tocline}{subsubsection}
\usepackage{blindtext}% for dummy text
\usepackage{showframe}% to show the page layout
\begin{document}
\tableofcontents
\Blinddocument\Blinddocument\Blinddocument
\Blinddocument\Blinddocument\Blinddocument
\end{document}
如果你想使用包裹tocloft
然后手动删除tocstyle
并更改 ToC 中的数字宽度和缩进的设置:
\documentclass[12pt,a4paper]{article}
\usepackage[latin1]{inputenc}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage[left=2cm,right=2cm,top=2cm,bottom=2cm]{geometry}
\usepackage{tocloft}
\renewcommand*\cftsecnumwidth{2em}
\renewcommand*\cftsubsecindent{2em}
\renewcommand*\cftsubsecnumwidth{2.8em}
\renewcommand*\cftsubsubsecindent{4.8em}
\usepackage{blindtext}% for dummy text
\usepackage{showframe}% to show the page layout
\begin{document}
\tableofcontents
\Blinddocument\Blinddocument\Blinddocument
\Blinddocument\Blinddocument\Blinddocument
\end{document}