当部分条目居中而其他条目左对齐时,如何对齐目录中的页码?

当部分条目居中而其他条目左对齐时,如何对齐目录中的页码?

在此处输入图片描述

梅威瑟:

\documentclass{scrartcl} %{scrbook}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{tocstyle}
\renewcommand*{\addparttocentry}[2]{%
  \addtocentrydefault{part}{}{\protect\parbox{\textwidth}{\protect\centering#2}\vspace{3ex}}
} % center the parts entries in the toc and add a 3ex vspace after
\settocstylefeature[-1]{entryvskip}{5ex} % add a 5ex vspace before parts entries in the toc

\begin{document}
\tableofcontents
\part{part 1}
\section{section 1}
\section{section 2}
\part{part 2}
\section{section 1}
\section{section 2}
\end{document}

答案1

事情可能会变得非常糟糕!

\documentclass{scrartcl} %{scrbook}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{tocstyle}
\renewcommand*{\addparttocentry}[2]{%
  \addtocentrydefault{part}{}{\protect\parbox{\dimexpr\textwidth-1.55em\relax}{\protect\centering#2}\vspace{3ex}}
} % center the parts entries in the toc and add a 3ex vspace after
\settocstylefeature[-1]{entryvskip}{5ex} % add a 5ex vspace before parts entries in the toc

\begin{document}
\tableofcontents
\part{part 1}
\section{section 1}
\section{section 2}
\part{part 2}
\section{section 1}
\section{section 2}
\end{document}

在此处输入图片描述

\parbox我只是将的宽度减少了1.55em

答案2

您在这里所做的不是将标题居中格式化;您已将标题设置为一个大框,该框强制占据页面的整个宽度,并且标题恰好居中。当然,页码已经无处可放(而且点分隔符也没有被删除,只是没有空间了)。

tocloft以下是使用而不是tocstyle来格式化条目的解决方案(改编自tocloft 手册)。这样可以实现更清晰的格式规则,而无需将大框插入流程中。唯一剩下的问题是删除您的示例重复的自动编号。我使用了一个 hack 来解决这个问题,取自这个答案。我怀疑您真正想要做的是重新做您的编号系统,以便乳胶在连接位置为您插入正确的数字,而不是手动编号您的零件,但这应该是另一个问题。

\documentclass{scrartcl}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{tocloft}

\makeatletter
\renewcommand{\cftpartfont}{\vskip 5ex\hfill\vspace{3ex}}
\renewcommand{\cftpartpresnum}{\begin{lrbox}{\@tempboxa}}
\renewcommand{\cftpartaftersnum}{\end{lrbox}\hfill}
\makeatother

\begin{document}
\tableofcontents
\part{part 1}
\section{section 1}
\section{section 2}
\part{part 2}
\section{section 1}
\section{section 2}
\end{document}

结果:

MWE 输出

相关内容