![使用 mathspec 和 hyperref 时 URL 中的数字出现问题](https://linux22.com/image/263560/%E4%BD%BF%E7%94%A8%20mathspec%20%E5%92%8C%20hyperref%20%E6%97%B6%20URL%20%E4%B8%AD%E7%9A%84%E6%95%B0%E5%AD%97%E5%87%BA%E7%8E%B0%E9%97%AE%E9%A2%98.png)
当我使用mathspec
和\setmathsfont
并hyperref
尝试排版 URL 时,大多数 URL 都使用等宽字体,这是理所当然的。很好。
但是数字使用数学字体。有人知道如何解决这个问题吗?
平均能量损失
\documentclass{article}
\usepackage{mathspec,fontspec,hyperref}
\setmathsfont(Digits){Minion Pro}
\setmonofont{Source Code Pro}
\begin{document}
\nolinkurl{abc123def} % same problem with \url{..}
\end{document}
输出
答案1
问题是由于 使得mathspec
数字类型mathord
不为mathalpha
。然后,hyperref 为设置使用 ttfamily 所做的工作无法成功地为数字完成,因为它在数学模式下进行。
\documentclass{article}
\usepackage{mathspec,fontspec,hyperref}
\setmathsfont(Digits){Minion Pro}
\makeatletter
\DeclareMathSymbol{0}{\mathalpha}{\eu@DigitsArabic@symfont}{`0}
\DeclareMathSymbol{1}{\mathalpha}{\eu@DigitsArabic@symfont}{`1}
\DeclareMathSymbol{2}{\mathalpha}{\eu@DigitsArabic@symfont}{`2}
\DeclareMathSymbol{3}{\mathalpha}{\eu@DigitsArabic@symfont}{`3}
\DeclareMathSymbol{4}{\mathalpha}{\eu@DigitsArabic@symfont}{`4}
\DeclareMathSymbol{5}{\mathalpha}{\eu@DigitsArabic@symfont}{`5}
\DeclareMathSymbol{6}{\mathalpha}{\eu@DigitsArabic@symfont}{`6}
\DeclareMathSymbol{7}{\mathalpha}{\eu@DigitsArabic@symfont}{`7}
\DeclareMathSymbol{8}{\mathalpha}{\eu@DigitsArabic@symfont}{`8}
\DeclareMathSymbol{9}{\mathalpha}{\eu@DigitsArabic@symfont}{`9}
\makeatother
% \setmonofont{Source Code Pro}
\begin{document}
\nolinkurl{abc123def} % same problem with \url{..}
\end{document}