是否可以将 LetterSpace(fontspec)与 url(hyperref)一起使用?

是否可以将 LetterSpace(fontspec)与 url(hyperref)一起使用?

使用 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}

输出: 四行“http://www.example.com”显示了上述不同格式命令的不同行为

在这个例子中,带有 的等宽文本\texttt{}使用LetterSpace设置,而带有 的等宽文本\url{}虽然显然使用相同的字体,但似乎并不尊重该LetterSpace设置,尽管它已为所有出现的字体设置(或者我认为我理解了)。

我的问题是,有什么方法可以克服这个明显的限制。换句话说,如何调整hyperrefURL 中字形之间的间距?

编辑:相关问题之前被问过(我多次查找相关问题但不知何故错过了这个)。

答案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}

使用以下命令进行编译lualatex在此处输入图片描述

答案2

url 在数学模式下排版,数学模式处理间距的方式不同。在xelatex我看来,你唯一的选择就是按照 Paul 在评论中建议的方式在文本模式下排版 url。使用lualatexwhich 以不同方式实现字母间距,你的示例可以正常工作:

在此处输入图片描述

相关内容