全局目录、LOF、LOT 和 titletoc 部分目录的通用样式(带有 hyperref 和标题)

全局目录、LOF、LOT 和 titletoc 部分目录的通用样式(带有 hyperref 和标题)

我目前正在撰写我的博士论文,并且我很难为我的全局目录和 titletoc 生成的部分目录定义一种通用的风格。

基本上,如果你查看以下 MWE,我喜欢全局目录的总体风格,尤其是超链接包含标签。但是,我发现全局目录中的虚线不够密集,我更喜欢部分目录中的虚线。

\documentclass[12pt,a4paper]{book}

\usepackage{caption}
\usepackage{titletoc}
\usepackage[colorlinks]{hyperref}
\usepackage{lipsum}

\renewcommand{\cleardoublepage}{\clearpage}

\newcommand{\PartialToc}{\vspace*{0.5pc}\vbox{\bf\large\noindent Chapter contents}\vspace*{0.3pc}\startcontents[chapters]\vspace*{0.3pc}\printcontents[chapters]{p}{1}{}\vspace*{0.3pc}}

\begin{document}

% Custom style for partial TOCs
\titlecontents{psection}[3.6em]{\small\bfseries}{\contentslabel{1.8em}}{}{\mdseries\titlerule*[0.25pc]{.}\contentspage\hspace*{1.8em}}{}
\titlecontents{psubsection}[6.0em]{\small}{\contentslabel{2.4em}}{}{\titlerule*[0.25pc]{.}\contentspage\hspace*{1.8em}}{}

\tableofcontents
\listoffigures
\listoftables

\chapter{Chapter 1}

\vfill
\lipsum[1-2]
\vfill\PartialToc\clearpage

\section{Section 1}
\lipsum[1]

\begin{figure}[t]
    \caption{Figure 1}
\end{figure}

\section{Section 2}
\lipsum[1]
\subsection{Subsection 2.1}
\lipsum[1]
\subsection{Subsection 2.1}
\lipsum[1]
\section{Section 3}
\lipsum[1]

\begin{table}[t]
    \caption{Table 1}
\end{table}

\end{document}

因此,我尝试增加全局目录中虚线的密度,通过在后面添加以下 titletoc 样式声明\begin{document}

\titlecontents{section}[3.8em]{}{\contentslabel{2.3em}}{\hspace*{-2.3em}}{\titlerule*[0.25pc]{.}\contentspage}{}
\titlecontents{subsection}[6.2em]{}{\contentslabel{2.9em}}{}{\titlerule*[0.25pc]{.}\contentspage}{}

但是,在这种情况下,超链接被更改了,我想避免这种情况(不,我不是疯子……)。 有办法实现这一点吗? 这也可以用于使部分目录中的超链接包含标签吗?

作为一个附属问题,我如何为图表列表和表格列表中的条目分配相同的样式?

感谢您的帮助

答案1

titlesec/包titletoc与 有点不兼容hyperref,而您恰好遇到了这种情况。

为了恢复目录中标签上的链接,我们必须使用以下命令进行操作titletoc

\titlecontents{section}%
  [3.8em]% left
  {}% above code
  {\contentslabel[\hyperlink{section.\thecontentslabel}{\thecontentslabel}]{2.3em}}% numbered entry format
  {\hspace*{-2.3em}}% unnumbered entry format
  {\titlerule*[0.25pc]{.}\contentspage}% filler page format
  {}% below code

\titlecontents{subsection}%
  [6.2em]%
  {}%
  {\contentslabel[\hyperlink{subsection.\thecontentslabel}{\thecontentslabel}]{2.9em}}%
  {}%
  {\titlerule*[0.25pc]{.}\contentspage}%
  {}

% Custom style for partial TOCs
\titlecontents{psection}%
  [3.6em]%
  {\small\bfseries}%
  {\contentslabel[\hyperlink{section.\thecontentslabel}{\thecontentslabel}]{1.8em}}%
  {}%
  {\mdseries\titlerule*[0.25pc]{.}\contentspage\hspace*{1.8em}}%
  {}

\titlecontents{psubsection}%
  [6.0em]%
  {\small}%
  {\contentslabel[\hyperlink{subsection.\thecontentslabel}{\thecontentslabel}]{2.4em}}%
  {}%
  {\titlerule*[0.25pc]{.}\contentspage\hspace*{1.8em}}%
  {}

也就是说,的格式contentslabel从简单的变成了\thecontentslabel真正的超链接。

为了在 LoT 和 LoF 中获得窄点线,我将使用包tocloft。此包还可以处理 ToC,因此您可能会发现这titletoc是多余的。只需使用

\usepackage[titles]{tocloft}
\renewcommand{\cftdotsep}{0.3}

答案2

我找到了问题的部分答案,与图片列表和表格列表有关。在这些列表中,要分配与目录中相同的样式,您必须使用以下命令。

\titlecontents{figure}[2.3em]{}{\contentslabel{2.3em}}{}{\titlerule*[0.25pc]{.}\contentspage}{}
\titlecontents{table}[2.3em]{}{\contentslabel{2.3em}}{}{\titlerule*[0.25pc]{.}\contentspage}{}

然而,由于某些我不明白的原因,它必须放在之前\begin{document},否则它不起作用。

相关内容