如何使用 titletoc 自定义目录中的链接样式?

如何使用 titletoc 自定义目录中的链接样式?

我想自定义目录中的链接(外观)。在整个文档中,我在 hyperref 中使用“hidelinks”(关闭方框),然后进行一些花哨的自己的链接可视化(此处将 MWE 替换为dotuline)。

所以我改变了目录格式,使其包含超链接。我打开“链接框”进行调试,结果看起来不太好。对于数字,点击区域太短,对于标签,完全出错。

在此处输入图片描述 梅威瑟:

    \documentclass{book}
    \usepackage{titletoc}
    \usepackage{hyperref}
    \usepackage{ulem} 
    \titlecontents{chapter}[1pc]%
      {\addvspace{2ex}\Large\filright}%
      {\hyperlink{chapter.\thecontentslabel}{\dotuline{\thecontentslabel}}{1pc}}{\hspace*{-1pc}}%
      {\titlerule*[1pc]{.}\hyperlink{chapter.\thecontentslabel}{\dotuline{\contentspage}}}[]

    \begin{document}
    Link Customization: \hyperlink{chapter.1}{\dotuline{Jump to chapter 1}} 
    \tableofcontents
    \chapter{Dummy1}
    dummy
    \end{document}

原始目录:

在此处输入图片描述

和:

    \titlecontents{chapter}[1pc]%
      {\addvspace{2ex}\Large\filright}%
      {\contentslabel[\thecontentslabel]{1pc}}{\hspace*{-1pc}}%
      {\titlerule*[1pc]{.}\contentspage}[]

答案1

这是为了模仿指定的外观。但是对于右边距的用途,titletoc需要进行一些猜测。titletoc

titlesec已加载包以供使用\titlerule命令。

\dotuline带有修饰的链接ulem被放在 Toc viaetoc包中。

\documentclass{book}
\usepackage{ulem} 
\usepackage{hyperref}

% Code from OP with titletoc
% \usepackage{titletoc}
% \titlecontents
%   {chapter}% section name
%   [1pc]% left margin
%   {\addvspace{2ex}\Large\filright}% above code
%   {\hyperlink{chapter.\thecontentslabel}%
%              {\dotuline{\thecontentslabel}}{1pc}}% numbered entry format
%   {\hspace*{-1pc}}% number-less entry format
%   {\titlerule*[1pc]{.}%
%    \hyperlink{chapter.\thecontentslabel}%
%              {\dotuline{\contentspage}}}% filler page format

\usepackage{titlesec}% to use \titlerule command
\usepackage{etoc}

\makeatletter % to use \@tocrmarg and \@pnumwidth from the LaTeX book class
\etocsetstyle 
        {chapter}
        {\Large\leftskip 1pc \rightskip \@tocrmarg \parfillskip -\rightskip }
        {\addvspace{2ex}}
        {\noindent
         \etocifnumbered
            {\llap{\makebox[1pc][l]{\etoclink{\dotuline{\etocthenumber}}}}}%
            {\hspace*{-1pc}}%
         \etoclink{\dotuline{\etocthename }} % <- I leave intentional \space
         \titlerule*[1pc]{.}%
         \nobreak
         \makebox[\@tocrmarg][r]
            {\etoclink{\dotuline{\makebox[\@pnumwidth][c]{\etocthepage}}}}%
         \par}
        {}
\makeatother

\begin{document}
% Link Customization: \hyperlink{chapter.2}{\dotuline{Jump to chapter 2}} 

\tableofcontents
\chapter{Dummy1}
dummy1


\chapter{Dummy2}
dummy2

\chapter*{Dummy3}
\addcontentsline{toc}{chapter}{Dummy3}
dummy3
\end{document}

在此处输入图片描述

相关内容