我目前正在撰写我的博士论文,并且我很难为我的全局目录和 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}
,否则它不起作用。