条目页码在 toc、lot 和 lof 中的位置

条目页码在 toc、lot 和 lof 中的位置

我正在使用包提供的 titlecontenstitletoc来格式化 toc、lot 和 lof 中的条目。对于多行条目,其相应页码的默认位置是在该条目的最后一行之后。有没有办法将该数字放在该条目的第一行之后?

答案1

感谢您的解决方案!我刚刚又找到了一个解决方案并发布在这里。基本思路是以 1*3 表格的形式定义 toc/lof/lot 的条目,标题、标题和页面是该表格的三个元素。以下是定义此类表格的代码。

\titlecontents{figure}[0pt]
{\normalfont\mdseries\singlespace}
{\contentspush{\makebox[7em][l]{FIGURE \thecontentslabel:}}\begin{tabular}[t]{@{}p{11cm}@{}}}
{\hspace{-2em}\begin{tabular}[t]{p{11cm}}}
{\end{tabular}\hfill\contentspage} 

答案2

如果为可选参数指定较短的章节标题,则可以避免这种情况\section[..]{...},如下所示:

\documentclass{article}
\begin{document}
\tableofcontents
\section{A regular section title}
\section[A short ToC title]%
  {This is a section with an extremely long title %
   that spans at least two lines in the table of contents}
\section{A regular section title}
\end{document}

然而,如果无法避免,titletoc包裹提供了一种逐项操作目录条目的方法。可以使用命令来实现\titlecontents。首先,您可以使用它来设置所有部分的默认格式。然后,在您想要以不同方式格式化的部分之前,您可以进行修改\titlecontents,然后再切换回来。以下最小工作示例说明了这一点:

\documentclass{article}
\usepackage{titletoc}% http://ctan.org/pkg/titletoc
\begin{document}

% -------------- DEFAULT section formatting
\titlecontents{section}%
  [3.8em]% Left indent
  {\bfseries}% % above-code
  {\contentslabel{2.3em}}% Numbered format
  {\hspace*{-2.3em}}% Numberless format
  {\hfill\contentspage}% Filler page format
  []% Separator

\tableofcontents

\section{A regular section title}

% -------------- MODIFIED section formatting
\titlecontents{section}%
  [3.8em]% Left indent
  {\bfseries}% % above-code
  {\contentslabel{2.3em}}% Numbered format
  {\hspace*{-2.3em}}% Numberless format
  {\hfill\smash{\raisebox{\baselineskip}{\contentspage}}}% Filler page format
  []% Separator
 

\section{This is a section with an extremely long title %
  that spans at least two lines in the table of contents}

% -------------- REVERTED section formatting
\titlecontents{section}%
  [3.8em]% Left indent
  {\bfseries}% % above-code
  {\contentslabel{2.3em}}% Numbered format
  {\hspace*{-2.3em}}% Numberless format
  {\hfill\contentspage}% Filler page format
  []% Separator

\section{A regular section title}

\end{document}

修改后的目录部分格式将\contentspage(部分所在页面的占位符)提升\baselineskip,将其向上推至与第一行相同的水平。如果您的部分标题中有 3 行,则将其向上推2\baselineskip,依此类推。\smash确保凸起的方框不会影响行间跳过。

目录格式

相关内容