`mathspec` 中等寬環境中的襯線數字,但不是 `fontspec`

`mathspec` 中等寬環境中的襯線數字,但不是 `fontspec`

我想為文字正文和數學環境使用襯線字體,並為 URL 之類的內容使用單獨的等寬字體。

當我編譯這個使用fontspec:

\documentclass[12pt,a4paper]{article}
\usepackage[hidelinks]{hyperref}
\usepackage{fontspec}
\setmainfont{Times New Roman}
\setmonofont{Courier New}
\begin{document}
\noindent See the following article on Wikipedia about the year AD 2017:

\url{https://en.wikipedia.org/wiki/2017}

$2000 + 17 = 2017$
\end{document}

我得到:

哪一個不使用正確的數學字體。不出所料,我透過替換得到了同樣的結果fontspecmathspec)。但是當我添加\setmathsfont{Times New Roman}使用mathspec,我仍然得到相同的結果。

當我編譯時:

\documentclass[12pt,a4paper]{article}
\usepackage[hidelinks]{hyperref}
\usepackage{mathspec}
\setallmainfonts{Times New Roman}
\setallmonofonts{Courier New}
\begin{document}
\noindent See the following article on Wikipedia about the year AD 2017:

\url{https://en.wikipedia.org/wiki/2017}

$2000 + 17 = 2017$
\end{document}

我得到:

這會將數學環境變更為所需的字體,但會將給定 URL 中的數字變更為襯線字體而不是等寬字體,這是不可取的。

有誰知道我哪裡出了問題以及如何得到看起來像這樣的東西:

答案1

url使用數學來排版網址,並且隨著mathspec數學程式碼的更改,您會得到錯誤的字體。您可以重置它們:

\documentclass[12pt,a4paper]{article}
\usepackage[hidelinks]{hyperref}
\usepackage{mathspec}
\setallmainfonts{Times New Roman}
\setallmonofonts{Courier New}

\makeatletter
\def\Url@FormatString{%
 \UrlFont
\Url@MathSetup
\mathcode"30=28720 %0
\mathcode"31=28721 %1
\mathcode"32=28722 %2
%...
\mathcode"37=28727 %7
 $\fam\z@ \textfont\z@\font
 \expandafter\UrlLeft\Url@String\UrlRight
 \m@th$%
}%
\begin{document}
\noindent See the following article on Wikipedia about the year AD 2017:

\url{https://en.wikipedia.org/wiki/2017}

$2000 + 17 = 2017$
\end{document}

在此輸入影像描述

但我會使用 unicode-math 和類似數學字體的時間,例如這樣

\documentclass[12pt,a4paper]{article}
\usepackage[hidelinks]{hyperref}
\usepackage{unicode-math}
\setmainfont{Times New Roman}
\setmonofont{Courier New}
\setmathfont{TeX Gyre Termes Math}
\begin{document}
\noindent See the following article on Wikipedia about the year AD 2017:

\url{https://en.wikipedia.org/wiki/2017}

$2000 + 17 = 2017$
\end{document}

在此輸入影像描述

相關內容