使用 hyperref 仅更改目录中章节链接的颜色

使用 hyperref 仅更改目录中章节链接的颜色

我的实际情况

我设置(使用以下命令)在目录中每个chapter元素都用颜色 表示steelblue,而章节和小节则用 表示black

\RequirePackage{titletoc}
\setcounter{tocdepth}{2}

\titlecontents{chapter}[0cm]
{\addvspace{14pt}\large\sffamily\bfseries}
{\color{steelblue}\contentslabel[\Large\thecontentslabel]{1.25cm}}{}
{\color{steelblue}\normalsize\sffamily\bfseries
 \;\titlerule*[.5pc]{.}\;\thecontentspage}

\titlecontents{section}[0cm]
{\addvspace{6pt}\sffamily\bfseries}
{\contentslabel[\thecontentslabel]{1.25cm}}{}
{\sffamily\hfill\color{black}\thecontentspage}[]

在此处输入图片描述

问题是我的目录没有创建指向引用页面的任何链接。
因此,为了生成带有链接的目录,我想添加hyperref

问题

添加上述包后,我无法确定如何将目录中的章节颜色steelblue与其他所有组件区分开来。
我找到了一种解决方法,并在以下代码中进行了标记,但我对此并不满意,因为可点击的引用仅放在页码上(而不是chapter/section/...“标签”上)

\hypersetup{
    bookmarksnumbered=true,     
    bookmarksopen=true,         
    bookmarksopenlevel=3,   
    colorlinks, 
    breaklinks,
    linkcolor=blue,
    citecolor=blue,
    filecolor=black,
    linktocpage=true, 
}

在此处输入图片描述

我的目标

我正在想办法改变只是我的项目目录中章节链接的颜色。
不幸的是,只要放入colorlinks=true所有hypersetup内容就会变成单色(默认情况下为红色,但即使使用问题进行更改也linkcolor仍然相同)。
在此处输入图片描述

平均能量损失

main.tex

\documentclass{mybook}

\renewcommand{\familydefault}{\sfdefault}
\setlength{\parindent}{0pt}

\begin{document}
\tableofcontents

%---------------------------------------------------------------------------
% Chapters
%---------------------------------------------------------------------------
\chapter{Chapter 1}
\section{Section 1.1}
\section{Section 1.2}

\chapter{Chapter 2}

\end{document}

mybook.cls

\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{mybook}
\LoadClass[11pt]{book}

% Colors
%--------------------------------------------------------------------------
\RequirePackage{xcolor}
\definecolor{steelblue}{RGB}{70,130,180}

% Table of contents styling
%--------------------------------------------------------------------------
\RequirePackage{titletoc}
\setcounter{tocdepth}{2}

\titlecontents{chapter}[0cm]
{\addvspace{14pt}\large\sffamily\bfseries}
{\color{steelblue}\contentslabel[\Large\thecontentslabel]{1.25cm}}{}
{\color{steelblue}\normalsize\sffamily\bfseries
 \;\titlerule*[.5pc]{.}\;\thecontentspage}

\titlecontents{section}[0cm]
{\addvspace{6pt}\sffamily\bfseries}
{\contentslabel[\thecontentslabel]{1.25cm}}{}
{\sffamily\hfill\color{black}\thecontentspage}[]

答案1

您可以\hypersetup{<options>}使用如何对不同的 \href 命令使用不同的颜色?

\titlecontents{chapter}[0cm]
{\hypersetup{linkcolor=black}\color{green}\addvspace{14pt}\large\sffamily\bfseries} %<!---- NEW BIT
{\hypersetup{linkcolor=steelblue}\contentslabel[\Large\thecontentslabel]{1.25cm}}   %<!---- NEW BIT
{}
{\normalsize\sffamily\;\color{red}\titlerule*[.5pc]{.}\;\thecontentspage}

下面的代码给出了以下内容:

在此处输入图片描述

这是的完整编辑版本mybook.cls;我标记了新的部分。

书目目录

\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{mybook}
\LoadClass[11pt]{book}

% Colors
%--------------------------------------------------------------------------
\RequirePackage{xcolor}
\definecolor{steelblue}{RGB}{70,130,180}

% Table of contents styling
%--------------------------------------------------------------------------
\RequirePackage{titletoc}
\RequirePackage{hyperref}   %<!-------- NEW BIT
\setcounter{tocdepth}{2}

%
% default hyperref settings
%
\hypersetup{
    bookmarksnumbered=true,
    bookmarksopen=true,
    bookmarksopenlevel=3,
    colorlinks,
    breaklinks,
    linkcolor=blue,
    citecolor=blue,
    filecolor=black,
    linktoc=all,  %<!--------- NEW BIT
}

%
% chapter
%
\titlecontents{chapter}[0cm]
{\hypersetup{linkcolor=black}\color{green}\addvspace{14pt}\large\sffamily\bfseries} %<!---- NEW BIT
{\hypersetup{linkcolor=steelblue}\contentslabel[\Large\thecontentslabel]{1.25cm}}   %<!---- NEW BIT
{}
{\normalsize\sffamily\;\color{red}\titlerule*[.5pc]{.}\;\thecontentspage}

% 
% section
%
\titlecontents{section}[0cm]
{\hypersetup{linkcolor=yellow}\addvspace{6pt}\sffamily\bfseries}        %<!---- NEW BIT
{\hypersetup{linkcolor=orange}\contentslabel[\thecontentslabel]{1.25cm}}%<!---- NEW BIT
{}
{\sffamily\hfill\color{black}\thecontentspage}[]

相关内容