我对 fontspec 的工作方式很满意,但有一个问题。我有一个命令:
\setmainfont[Color=393939]{URW Palladio L}
它为文档中的所有文本着色。我的标题是深灰色。
问题是我希望所有超链接都自动用我选择的颜色着色。我使用
\usepackage{hyperref} \hypersetup{...urlcolor=orange}
如果我这样做,像这样的着色超链接效果很好不是有\setmainfont[Color=393939]{URW Palladio L}
命令,但是包含该命令时不起作用。
有什么方法可以给所有正文添加颜色并自动给超链接添加颜色吗?
成套工具
答案1
再次基于艾伦的回答,这似乎有效(甚至更好),只要颜色事先已定义或已预定义:
\documentclass{article}
\usepackage{fontspec}
\usepackage{xcolor}
\definecolor{mycolor}{rgb}{1,0.3,0.5}
\setmainfont[Color=FF0000]{Linux Libertine O}
\setsansfont[Color=00FF00]{Linux Biolinum O}
\usepackage{hyperref}
\hypersetup{colorlinks=true,urlcolor=mycolor,filecolor=orange}
\makeatletter
\def\HyColor@@@@UseColor#1\@nil{\addfontfeatures{Color=#1}}
\makeatother
\begin{document}
A hyperlink:
\href{http://tex.stackexchange.com}{TeX StackExchange}
\sffamily A hyperlink:
\href{abc}{TeX StackExchange}
\end{document}
您会注意到第二个超链接的颜色不同,因为它不是 URL 而且filecolor
已被使用。
答案2
根据 Seamus 在评论中的建议(并经过编辑以包含 egreg 的建议)得出的答案,以下似乎是一个解决方案:
我重新定义了命令的相关部分\href
,以在链接中添加橙色。我保留了命令urlcolor
中的\hypersetup
以获取纯色链接的颜色\url
。
\documentclass{article}
\usepackage{fontspec}
\usepackage{xcolor}
\setmainfont[Color=393939]{Linux Libertine O}
\usepackage{hyperref}
\hypersetup{colorlinks=true,urlcolor=orange}
\makeatletter
\def\Hy@href#{%
\addfontfeatures{Color=orange}\hyper@normalise\href@
}
\makeatother
\begin{document}
A hyperlink:
\href{http://tex.stackexchange.com}{TeX StackExchange}
\end{document}