调整目录中章节号和标题之间的间距

调整目录中章节号和标题之间的间距

我有这样的文件:

\documentclass{book}
\renewcommand\thechapter{\Roman{chapter}} 
\begin{document}
\chapter{Some title}
\chapter{Some other title}
\chapter{One more title}
\tableofcontents
\end{document}

它生成如下目录: 我拥有的

我需要的是章节号和标题之间没有空格,例如: 我需要的

托克洛夫特允许使用\cftchapnumwidth命令,但它是“静态的”,我希望 chapnumwidth 调整到每个数字。

谢谢

答案1

甚至tocloft仍然使用框内 ToC 条目数的传统设置(宽度为\cftZnumwidth,其中Z是节单位)。但是,我们可以修补\l@chapter以暂时调整\numberline导致问题的宏。修补由etoolbox

下面我已经这样做了,尽管目录的可读性现在完全受到影响:

在此处输入图片描述

\documentclass{book}
\usepackage{tocloft,etoolbox}
\makeatletter
\patchcmd{\l@chapter}% <cmd>
  {\leavevmode}% <search>
  {\leavevmode%
   \renewcommand{\numberline}[1]{\hbox{\@cftbsnum ##1\@cftasnum}\@cftasnumb}}% <replace>
  {}{}% <success><failure>
\makeatother
\renewcommand\thechapter{\Roman{chapter}} 
\begin{document}

\tableofcontents

\chapter{Some title}
\section{A section}

\chapter{Some other title}

\chapter{One more title}

\end{document}

对于章节数字后的固定空格,请调整\cftchappresnum为类似于~

答案2

\documentclass{book}

\def\numberline#1{#1}
\renewcommand\thechapter{\Roman{chapter}} 
\begin{document}
\chapter{Some title}
\chapter{Some other title}
\chapter{One more title}
\tableofcontents
\end{document}

在此处输入图片描述

如果您有包含默认目录条目的部分,则使用:

\documentclass{book}

\makeatletter
\renewcommand*\l@chapter[2]{%
    \addpenalty{-\@highpenalty}%
    \vskip 1.0em \@plus\p@
    \begingroup
      \def\numberline##1{##1}
      \parindent \z@ \rightskip \@pnumwidth
      \parfillskip -\@pnumwidth
      \leavevmode \bfseries
      #1\nobreak\hfil \nobreak\hb@xt@\@pnumwidth{\hss #2}\par
      \penalty\@highpenalty
    \endgroup}
\makeatother
\renewcommand\thechapter{\Roman{chapter}} 
\begin{document}
\chapter{Some title}
\section{foo}
\chapter{Some other title}
\chapter{One more title}
\tableofcontents
\end{document}

相关内容