为什么 fontspec LetterSpace 和 WordSpace 不适用于 url 中的 ':' 和 '/'?

为什么 fontspec LetterSpace 和 WordSpace 不适用于 url 中的 ':' 和 '/'?

我想在等宽文本中(例如\url{}编码示例块)加宽每个字符之间的间距。我认为 fontspec 的 LetterSpace 和 WordSpace 选项是实现此目的最简单的方法,因此我尝试了以下方法:

\setmonofont{Latin Modern Mono}[Scale=0.8, LetterSpace=150, WordSpace=150]

(我在这里使用 150 这个值来使问题更加明显)

对于 来说,这似乎工作正常{\tt http://example.com},但却\url{}给出了奇怪的结果:

间距不当的 URL 示例

这是怎么回事?LetterSpace 和 WordSpace 是不是适合这项工作的工具?有没有更好的方法或者我需要设置其他内容?

我正在使用 MacTeX 2016 和lualatex,如果相关的话。

根据要求,这是 MWE:

\RequirePackage{luatex85}

\documentclass[oneside]{book}

\usepackage{fontspec}
\usepackage{hyperref}

\setmonofont{Latin Modern Mono}[Scale=0.8, LetterSpace=150, WordSpace=150]

\begin{document}

\url{http://apple.com/}

{\tt http://apple.com/}

\end{document}

答案1

URL 以数学模式排​​版,并带有数学间距。正斜杠和句号排版为二元运算符(“mathbin”),冒号排版为关系(“mathrel”)。前者归类为“Break”字符;后者归类为“BigBreak”字符。当然,这用于控制哪些字符后面可以跟换行符。

因此,要更改这些字符周围的间距,您必须更改在排版 URL 时处于活动状态的数学模式间距配置。为此,该url包提供了一个\Urlmuskip可以随意修改的尺寸。

例如,

\documentclass[oneside]{book}
\usepackage{fontspec}
\usepackage{hyperref}
\setmonofont{Latin Modern Mono}[Scale=0.8, LetterSpace=150, WordSpace=150]
\urlstyle{tt}
\pagestyle{empty}
\Urlmuskip = 22mu plus 10mu
\begin{document}

\nolinkurl{http://apple.com/}

\url{http://apple.com/}

\ttfamily{http://apple.com/}

\end{document}

生产

修改 URL 的间距

相关内容