目录 (ToC) 中的罗马页码未对齐

目录 (ToC) 中的罗马页码未对齐

我的页码排列不正确starting with page VIII。它似乎以某种方式集中在X,但第二章也没有正确对齐,而第一章(带有阿拉伯数字)则正确对齐。
您知道如何解决这个问题吗?

移动终端

\documentclass[a4paper,12pt]{report}
\usepackage{lipsum}
\begin{document}
        \tableofcontents
        \pagenumbering{arabic}
        \chapter{Chapter}
                \section{Lorem}
                        \lipsum[1]\newpage
                \section{ipsum}
                        \lipsum[1]\newpage
                        \pagenumbering{Roman}
                \section{dolor}
                        \lipsum[1]\newpage
                \section{sit}
                        \lipsum[1]\newpage
                \section{amet}
                        \lipsum[1]\newpage
                \section{consectetuer}
                        \lipsum[1]\newpage
                \section{adipiscing}
                        \lipsum[1]\newpage
                \section{elit}
                        \lipsum[1]\newpage
                \section{Ut}
                        \lipsum[1]\newpage
        \chapter{Chapter}
                \section{purus}
                        \lipsum[1]\newpage
                \section{elit}
                        \lipsum[1]\newpage
                \section{vestibulum}
                        \lipsum[1]\newpage
                \section{ut}
                        \lipsum[1]\newpage
                \section{placerat}
                        \lipsum[1]\newpage
\end{document}

答案1

通常的解决方案是使用tocloft包来\cftsecnumwidth{<length>}设置页码的空间。您必须指定<length>适合您的文档的参数。以下2em适用于您的 MWE。

\documentclass[a4paper,12pt]{report}
\usepackage{lipsum}
\usepackage{tocloft}
\cftsetpnumwidth{2em}  % space for page numbers, default is 1.55em
\begin{document}
% all the rest of your MWE

答案2

\@dottedtocline只需对(文件)进行少量修改即可解决latex.ltx。我在 MWE 中添加了更多页面,以便查看更多罗马字母。

\documentclass[a4paper,12pt]{report}
\usepackage{lipsum} 

\makeatletter
\def\@dottedtocline#1#2#3#4#5{%
    \ifnum #1>\c@tocdepth \else
    \vskip \z@ \@plus.2\p@
    {\leftskip #2\relax \rightskip \@tocrmarg \parfillskip -\rightskip
        \parindent #2\relax\@afterindenttrue
        \interlinepenalty\@M
        \leavevmode
        \@tempdima #3\relax     
        \advance\leftskip \@tempdima \null\nobreak\hskip -\leftskip
        {#4}\nobreak
        \leaders\hbox{$\m@th
            \mkern \@dotsep mu\hbox{.}\mkern \@dotsep
            mu$}\hfill
        \nobreak
    %\hb@xt@\@pnumwidth{\hfil\normalfont \normalcolor #5%
    {\hfil\normalfont \normalcolor #5%  
            \kern-\p@\kern\p@}%
        \par}%  
    \fi}    
\makeatother

\begin{document}
\tableofcontents        
\pagenumbering{arabic}
\chapter{Chapter 1}
    \section{Lorem}
    \lipsum[1-18]\newpage
    \section{ipsum}
    \lipsum[1]\newpage
    \pagenumbering{Roman}
    \section{dolor}
    \lipsum[1-16]\newpage
    \section{sit}
    \lipsum[1-16]\newpage
    \section{amet}
    \lipsum[1]\newpage
    \section{consectetuer}
    \lipsum[1-8]\newpage
    \section{adipiscing}
    \lipsum[1]\newpage
    \section{elit}
    \lipsum[1-15]\newpage
    \section{Ut}
    \lipsum[1]\newpage
\chapter{Chapter 2}
    \section{purus}
    \lipsum[1-14]\newpage
    \section{elit}
    \lipsum[1]\newpage
    \section{vestibulum}
    \lipsum[1-16]\newpage
    \section{ut}
    \lipsum[1-16]\newpage
    \section{placerat}
    \lipsum[1]\newpage
\end{document}

x2

以前是

x1

改变取代

 \nobreak
 \hb@xt@\@pnumwidth{\hfil\normalfont \normalcolor #5%
                    \kern-\p@\kern\p@}%
 \par}%
\fi}

经过

 \nobreak
 {\hfil\normalfont \normalcolor #5%
                    \kern-\p@\kern\p@}%
 \par}%
\fi}

固定盒子不起作用。对齐还适用于

\hb@xt@35\p@{\hfil\normalfont \normalcolor #5%

但显然,固定宽度的点看起来不太好看,这是

在目录中,尽管有足够的可用空间,但长页码仍占据了右边距

x3

相对

x4

我的 TeX 还不够好,无法继续前进。

相关内容