目录中的罗马数字变得“太宽”

目录中的罗马数字变得“太宽”

遵循最少的文档:

\documentclass{report}

\begin{document}
\renewcommand*\thechapter{\Roman{chapter}}
\tableofcontents
\setcounter{chapter}{6} % Problem starts at chapter 7
\chapter{Seven}
\chapter{Eight}
\section{Eight-one}
\section{Eight-two}
\end{document}

产生以下输出(为方便起见,将其剪切成合适的大小):

截屏

显然,章节(和部分)标题与章节(部分)编号紧密相关。对于之前的章节编号,这不是问题,因为所有章节标题都与同一列对齐,并且 I–VI 编号足够窄。

(无论文档类型如何,都会发生相同的情况,我实际上使用的scrreprt结果相同。)

我该如何预防?

答案1

您还可以使用该tocstyle包,它是 KOMA-script 的一部分:

\documentclass[pagesize]{scrreprt}
\usepackage[tocindentauto]{tocstyle}
\usetocstyle{KOMAlike} %the previous line resets it
\begin{document}
\renewcommand*{\thechapter}{\Roman{chapter}}
\tableofcontents
\setcounter{chapter}{6} % Problem starts at chapter 7
\chapter{Seven}
\chapter{Eight}
\section{Eight-one}
\section{Eight-two}
\end{document}

(编译两次)

答案2

为了记录,我最终使用了tocloft以下包

\usepackage[titles]{tocloft}

(选项,titles因为我想要从包中得到的只是操纵内容表行的空间;标题仍然应该使用标准 LaTeX 方法呈现)。

\renewcommand*\cftchapnumwidth{2em}
\renewcommand*\cftsecnumwidth{3em}

也就是说,改变内容行的显示方式可能更合适,以便只显示章节编号,而不是整个“chapter.section”编号。

答案3

自 KOMA-Script 版本 3.20 起,有选项可以更改目录或列表条目的样式。您可以使用

\RedeclareSectionCommands[tocdynnumwidth]{chapter,section}

要得到

在此处输入图片描述

或者

\RedeclareSectionCommand[tocnumwidth=2.3em]{chapter}
\RedeclareSectionCommand[tocindent=2.3em,tocnumwidth=3.2em]{section}

在此处输入图片描述

代码:

\documentclass{scrreprt}[2016/05/10]% needs version 3.20 or newer
\RedeclareSectionCommand[tocnumwidth=2.3em]{chapter}
\RedeclareSectionCommand[tocindent=2.3em,tocnumwidth=3.2em]{section}
\renewcommand*\thechapter{\Roman{chapter}}

\begin{document}
\tableofcontents
\setcounter{chapter}{6} % Problem starts at chapter 7
\chapter{Seven}
\chapter{Eight}
\section{Eight-one}
\section{Eight-two}
\end{document}

也可以将包tocbasic(KOMA-Script 包的一部分)与标准类一起使用。然后您可以使用

\usepackage{tocbasic}[2017/01/03]% needs version 3.22
\DeclareTOCStyleEntry[dynnumwidth]{tocline}{chapter}
\DeclareTOCStyleEntry[dynnumwidth]{tocline}{section}

在此处输入图片描述

或者

\usepackage{tocbasic}[2016/05/10]
\DeclareTOCStyleEntry[numwidth=2.6em]{tocline}{chapter}
\DeclareTOCStyleEntry[indent=2.6em,numwidth=3.2em]{tocline}{section}

在此处输入图片描述

代码:

\documentclass{report}
\renewcommand*\thechapter{\Roman{chapter}}

\usepackage{tocbasic}[2016/05/10]
\DeclareTOCStyleEntry[numwidth=2.6em]{tocline}{chapter}
\DeclareTOCStyleEntry[indent=2.6em,numwidth=3.2em]{tocline}{section}

\begin{document}

\tableofcontents
\setcounter{chapter}{6} % Problem starts at chapter 7
\chapter{Seven}
\chapter{Eight}
\section{Eight-one}
\section{Eight-two}
\end{document}

答案4

我将提供一个使用的示例titletoc来解决这个问题。它需要加载eqparbox包才能自动对齐章节标题、节标题等。:

\documentclass{report}
\usepackage[showframe, nomarginpar]{geometry} 
% Font Style
\usepackage{eqparbox}
\usepackage{titletoc}

\titlecontents{chapter}[0em]{\vspace{.25\baselineskip}}
{\eqparbox{ch}{\bfseries\thecontentslabel}\enspace}{}
{\hspace{.5em}\hfill\contentspage}

\titlecontents{section}[0em]{\vspace{.25\baselineskip}}
{\hskip\eqboxwidth{ch}{}\enspace\eqparbox{sec}{\thecontentslabel}\enspace}{}
{\hspace{.5em}\titlerule*[10pt]{$\cdot$}\contentspage}

\begin{document}

\renewcommand*\thechapter{\Roman{chapter}}
\tableofcontents
\setcounter{chapter}{6} % Problem starts at chapter 7
\chapter{Seven}
\chapter{Eight}
\section{Eight-one} \thesection\setcounter{section}{99}
\section{Eight-hundred}

\end{document} 

在此处输入图片描述

相关内容