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