使用 fontspec(xelatex
在本例中为 with),LetterSpace
在字体选项中允许调整字形之间的间距。
但是,该hyperref
包似乎覆盖了这一点,如下面的 MWE 所示:
\documentclass[preview,convert]{standalone}
\usepackage{fontspec}
\setmainfont[Scale=MatchUppercase]{Libertinus Serif}
\setmonofont[Scale=MatchLowercase,LetterSpace=-10]{Liberation Mono}
\newfontfamily\regularmono[Scale=MatchLowercase]{Liberation Mono}
\usepackage{hyperref}
\begin{document}
http://www.example.com % main font
\texttt{http://www.example.com} % uses monofont
% respects LetterSpace
{\regularmono http://www.example.com} % without LetterSpace
\url{http://www.example.com} % uses monofont
% does not respect LetterSpace
\end{document}
在这个例子中,带有 的等宽文本\texttt{}
使用LetterSpace
设置,而带有 的等宽文本\url{}
虽然显然使用相同的字体,但似乎并不尊重该LetterSpace
设置,尽管它已为所有出现的字体设置(或者我认为我理解了)。
我的问题是,有什么方法可以克服这个明显的限制。换句话说,如何调整hyperref
URL 中字形之间的间距?
编辑:相关问题之前被问过(我多次查找相关问题但不知何故错过了这个)。
答案1
这是一个解决方法:\href{http://www.example.com}{\texttt{http://www.example.com}}
但是不能在 打印的 URL 中直接使用特殊字符(如~
,%
或...) 。#
\texttt
\documentclass[preview]{standalone}
\usepackage{fontspec}
\setmainfont[Scale=MatchUppercase]{Libertinus Serif}
\setmonofont[Scale=MatchLowercase,LetterSpace=-10]{Liberation Mono}
\newfontfamily\regularmono[Scale=MatchLowercase]{Liberation Mono}
\usepackage{hyperref}
\begin{document}
http://www.example.com % main font
\texttt{http://www.example.com} % uses monofont
% respects LetterSpace
{\regularmono http://www.example.com} % without LetterSpace
\url{http://www.example.com} % uses monofont
% does not respect LetterSpace
\href{http://www.example.com}{\texttt{http://www.example.com}}
% uses monofont
% does respect LetterSpace
\href{http://www.example.com/%special#characters~}{\texttt{http://www.example.com/\%special\#characters\~{}}}
\url{http://www.example.com/%special#characters~}
\end{document}