我有一个文档,其中我想使用两种颜色的链接 - 青色用于标题中的链接,因为它更亮,深蓝色用于主体中的链接,因为它更微妙/更不分散注意力。我已经尝试使用包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、文件等)设置为指定颜色(自hyperref
2011/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}