我的问题非常类似如何将目录中的点扩展至页码?,但回答在我的上下文中不起作用。
这些点没有达到目录中的数字
我希望目录中的点尽可能靠近数字,但我有几页的数字可能很大,我不希望点与数字重叠。一些后记使用罗马数字,因为我希望它对齐,所以我使用了tocloft
作为latex.org 上的这个答案建议。这涉及设置\cftsetpnumwidth{}
和的值\cftsetrmarg{}
,进而设置\@pnumwidth
,类似于此解决方案到表格列表中的罗马页码右对齐这样做是为了适合非常大的数字(如果使用罗马数字,在现实生活中这并不不合理,但在这里有些夸张)但却会显得很丑陋。
一无所有
稍好一些,但仍有不足
使用
\cftsetpnumwidth{5em}
\cftsetrmarg{12em}
理想情况下,这些点会填充得接近数字(也许停止在大约1em
之前似乎是合理的),但永远不会进入数字。
平均能量损失
\documentclass{extarticle}
\usepackage{lipsum}
\usepackage[nottoc]{tocbibind} % My real document uses features of this, so I would prefer if this can be kept.
\usepackage{tocloft}
\cftsetpnumwidth{5em}
\cftsetrmarg{12em}
\begin{document}
\tableofcontents
\clearpage
\pagenumbering{arabic}
\section{Arabic numbering starts}
\subsection{Some possibly very long title section that might just decide to span several lines in the table of contents. Why would someone write this, Who knows?}
\lipsum
\clearpage
\setcounter{page}{123456789}
\section{Several pages later}
\subsection{Something}
\lipsum
\clearpage
\pagenumbering{Roman}
\section{Now we have Roman numbering}
\subsection{Something}
\lipsum
\clearpage
\setcounter{page}{123}
\section{Several pages later}
\subsection{Something}
\lipsum
\end{document}
奖金要求
理想情况下,我希望任何解决方案也能与下表(按重要性顺序)配合使用,以保持前言的一致性:
- 图片列表
- 表格列表
- 列表列表(使用
listings
) - 算法列表(使用
algorithm2e
)
也许还
- 待办事项列表(使用
todonotes
)
答案1
我不知道这是否可以用包来完成tocloft
,所以这里建议使用tocbasic
。请注意,您只能对 TOC 和列表使用一个包:要么tocloft
或tocbasic
要么titletoc
等。
\documentclass{extarticle}
\usepackage{lipsum}
\usepackage[nottoc]{tocbibind}
\usepackage{tocbasic}
\DeclareTOCStyleEntries[
rightindent=12em,
pagenumberbox=\pagenumberbox
]{tocline}{section,subsection,subsubsection,paragraph,subparagraph,figure,table}
\newcommand*\pagenumberbox[1]{\mbox{\hspace{1em}#1}}
\begin{document}
\tableofcontents
\cleardoublepage
\pagenumbering{arabic}
\section{Arabic numbering starts}
\subsection{Some possibly very long title section that might just decide to span several lines in the table of contents. Why would someone write this, Who knows?}
\lipsum
\cleardoublepage
\setcounter{page}{123456789}
\section{Several pages later}
\subsection{Something}
\lipsum
\cleardoublepage
\pagenumbering{Roman}
\section{Now we have Roman numbering}
\subsection{Something}
\lipsum
\clearpage
\setcounter{page}{123}
\section{Several pages later}
\subsection{Something}
\lipsum
\end{document}
答案2
如果你愿意将页码左对齐而不是右对齐,那么在你的 MWE 中输入
...
\cftsetrmarg{12em}
\renewcommand{\cftpnumalign}{l} % left aligned page numbers
\begin{document}