在宏中为 URL 定义单独的链接颜色有什么更好的方法吗?

在宏中为 URL 定义单独的链接颜色有什么更好的方法吗?

我有一个文档,其中我想使用两种颜色的链接 - 青色用于标题中的链接,因为它更亮,深蓝色用于主体中的链接,因为它更微妙/更不分散注意力。我已经尝试使用包xcolor并使用 更改文本颜色textcolor,例如\textcolor{cyan}{\href{url.com}{link name}},但它不会覆盖我在 中定义的任何链接或 url 颜色hypersetup

这就是我所做的:

我已经定义了颜色navy

\definecolor{navy}{HTML}{2F729C} 

并且还导入了hyperref包和定义的命令来将全局链接/url 颜色设置为青色/深蓝色。

\usepackage{hyperref}                        
\hypersetup{colorlinks=true,linkcolor=navy,urlcolor=navy}                       
\newcommand{\navylinks}{\hypersetup{linkcolor=navy,urlcolor=navy}}              
\newcommand{\bluelinks}{\hypersetup{linkcolor=cyan,urlcolor=cyan}}  

然后我专门为标题链接定义了另一个命令,其中我全局打开青色链接,包含标题文本和链接,然后再次打开海军链接:

\newcommand{\headerlink}[1]{\bluelinks\href{#2}{#1}\navylinks}

我的问题是,我觉得有更好的方法可以做到这一点,而不是每次使用链接宏时都设置全局链接颜色;有没有办法只为链接,就像人们所做的那样\textcolor{...},可以覆盖hypersetup

答案1

初步说明:

  • 我不会改变标题内的链接颜色。我认为这会让人困惑,而不是提高可读性。
  • 章节/部分/...标题内的 URL 有点值得商榷。
  • 我对“标题”的理解是文本中的部分标题,其中标题以较大的字体大小和粗体打印。但标题行或目录中的链接使用正常的文本链接颜色。

我不会使用不同的命令,而是会在需要以不同方式显示链接的地方更改行为。对于\section(和\subsection,...)标题,一个好的地方是\@sect,其中第八个参数包含章节标题。第七个参数用于目录和标题行。

\documentclass{article}

\usepackage{xcolor}
\definecolor{navy}{HTML}{2F729C}
\colorlet{linkcolor}{navy}
\colorlet{headerlinkcolor}{cyan}

\usepackage[colorlinks]{hyperref}[2011/02/05]% option allcolors

\hypersetup{allcolors=linkcolor}

\makeatletter
\newcommand*{\org@sect}{}
\let\org@sect\@sect
\def\@sect#1#2#3#4#5#6[#7]#8{%
  \org@sect{#1}{#2}{#3}{#4}{#5}{#6}[{#7}]{%
    \hypersetup{allcolors=headerlinkcolor}%
    #8%
  }%
}
\makeatother

\pagestyle{headings}

\begin{document}
% Test document that tries to put all cases in one page
\section{First chapter with URL
  \href{http://tex.stackexchange.com/}{TeX.SE}}
Link inside text: \href{http://tex.stackexchange.com/}{TeX.SE}.
\tableofcontents
\end{document}

结果

评论:

  • 有一个新的选项allcolors(和allbordercolors),可用作快捷方式将所有颜色类型(链接、url、文件等)设置为指定颜色(自hyperref2011/02/05 v6.82a 起)。

答案2

确保您使用该xcolor包。然后定义您希望设置引用的颜色hyperref。然后在标题中简单地使用重新定义此颜色,例如\colorlet{mylinkcolor}{myheaderlinkcolor}

以下是一个例子

\documentclass[a4paper]{memoir}
\usepackage{xcolor,hyperref,url}
\colorlet{links}{blue}
\hypersetup{
colorlinks=true,
urlcolor=links
}
\begin{document}

\url{hhh}

\colorlet{links}{red}

\url{hhh}

\end{document}

(看了一下我自己的一个构造,结果发现,我做了和你一样的事情,重新发布\hyperretup,但上面的例子表明颜色只是一个参考。

答案3

我只会使用\color里面而不是外面\href,即\href{url.com}{\color{cyan}{link name}}

\documentclass{article}

\usepackage[colorlinks]{hyperref}

\hypersetup{urlcolor=blue}

\begin{document}

\color{red}{This is red text, \href{http://example.com}{but the links are still blue}.}

\href{http://example.com}{\color{red}{This is a red link.}}

\end{document}

相关内容