目录和 \Roman{section} 中的标题对齐

目录和 \Roman{section} 中的标题对齐

目录编号的对齐存在问题:当我们使用

\renewcommand{\thesection}{\Roman{section}}

数字侵占了标题。注释掉该命令后,数字全部对齐 [从左侧第一个数字开始],但标题不会从同一位置开始。

我想要的是使用\Roman{section},但将数字移到 V(或阿拉伯语中的 9)后面,以便标题的首字母全部对齐!

举例来说:

%\RequirePackage{fix-cm}
\documentclass[a4paper, 11pt, twoside]{article}

\renewcommand{\thesection}{\Roman{section}}

\begin{document}


\tableofcontents
\normalfont
%\cleardoublepage

\section{QWERTY}
\section{QWERTY}
\section{QWERTY}
\section{QWERTY}
\section{QWERTY}
\section{QWERTY}
\section{QWERTY}
\section{QWERTY}
\section{QWERTY}
\section{QWERTY}
\section{QWERTY}
\section{QWERTY}
\section{QWERTY}
\section{QWERTY}
\section{QWERTY}
\section{QWERTY}
\section{QWERTY}
\section{QWERTY}
\section{QWERTY}
\section{QWERTY}
\section{QWERTY}
\section{QWERTY}
\section{QWERTY}
\section{QWERTY}
\section{QWERTY}
\section{QWERTY}
\section{QWERTY}
\section{QWERTY}
\section{QWERTY}
\section{QWERTY}
\section{QWERTY}
\section{QWERTY}
\section{QWERTY}
\section{QWERTY}
\section{QWERTY}
\section{QWERTY}
\section{QWERTY}
\section{QWERTY}
\section{QWERTY}
\section{QWERTY}
\section{QWERTY}
\section{QWERTY}
\section{QWERTY}
\section{QWERTY}
\section{QWERTY}
\section{QWERTY}
\section{QWERTY}
\section{QWERTY}
\section{QWERTY}
\section{QWERTY}
\section{QWERTY}
\section{QWERTY}
\section{QWERTY}
\section{QWERTY}

\end{document}

答案1

长度决定了分段标题的宽度。默认情况下,它设置为\@tempdima(取自\l@section1.5emarticle.cls):

\newcommand*\l@section[2]{%
  \ifnum \c@tocdepth >\z@
    \addpenalty\@secpenalty
    \addvspace{1.0em \@plus\p@}%
    \setlength\@tempdima{1.5em}%
    \begingroup
      \parindent \z@ \rightskip \@pnumwidth
      \parfillskip -\@pnumwidth
      \leavevmode \bfseries
      \advance\leftskip\@tempdima
      \hskip -\leftskip
      #1\nobreak\hfil \nobreak\hb@xt@\@pnumwidth{\hss #2}\par
    \endgroup
  \fi}

这怎么可能呢?好吧,目录中部分编号的实际显示是通过设置的\numberline,如下所示(来自latex.ltx):

\def\numberline#1{\hb@xt@\@tempdima{#1\hfil}}

因此,\numberline{<stuff>}将其内容设置在宽度为 的框中\@tempdima,并左对齐(作为结尾 的结果\hfil)。

\@tempdima您可以通过以下补丁更改长度:etoolbox(在你的序言中):

\usepackage{etoolbox}% http://ctan.org/pkg/etoolbox
\makeatletter
\patchcmd{\l@section}{1.5em}{6em}{}{}% <cmd><search><replace><success><failure>
\makeatother

在此处输入图片描述

可以通过以下方式获得类似的(更简单的)结果tocloft

\usepackage{tocloft}% http://ctan.org/pkg/tocloft
\setlength\cftsecnumwidth{6em}

相关内容