`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使用数学来排版 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}

在此处输入图片描述

相关内容