我想自定义目录中的链接(外观)。在整个文档中,我在 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}