使用 mathspec 设置数学字体会更改参考书目中 URL 的 monotype 字体

使用 mathspec 设置数学字体会更改参考书目中 URL 的 monotype 字体

我正在使用 Xelatex 处理文档,因此我使用\fontspec。我已将 monotype 字体设置为\setmonofont使用 Inconsolata,例如,在参考书目的 URL 中。这个最小示例显示了这一点:

\documentclass[11pt,notitlepage,oneside,a4paper]{article}
\usepackage[backend=biber,style=authoryear,doi=true]{biblatex}
\usepackage{fontspec}
\usepackage{filecontents}

\setmonofont{Inconsolata}

\begin{filecontents}{biblio.bib}
@article{test, 
  author = {Author, A.},
  year = {2015},
  title = {Title},
  journal = {Some Journal},
  doi = {10.1016/S0169-8141(98)00038-9},
}
\end{filecontents}
\addbibresource{biblio.bib}

\usepackage[colorlinks=true,breaklinks]{hyperref}

\begin{document}

Lorem ipsum dolor \textcite{test}

\printbibliography

\end{document}

使用正确字体的结果是: 示例1

然后,我想更改数学字体,所以我将 改为\fontspec\mathspec添加了\setmathfont。使用数学字体一切都很好,只是现在我的参考书目中的网址是用该数学字体排版的,而不是用 Inconsolata 排版的

\documentclass[11pt,notitlepage,oneside,a4paper]{article}
\usepackage[backend=biber,style=authoryear,doi=true]{biblatex}
%\usepackage{fontspec}
\usepackage{mathspec}
\usepackage{filecontents}

\setmathfont(Digits,Latin,Greek)[Numbers={Lining,Monospaced}]{Alegreya Sans Light}
\setmonofont{Inconsolata}

\begin{filecontents}{biblio.bib}
@article{test, 
  author = {Author, A.},
  year = {2015},
  title = {Title},
  journal = {Some Journal},
  doi = {10.1016/S0169-8141(98)00038-9},
}
\end{filecontents}
\addbibresource{biblio.bib}

\usepackage[colorlinks=true,breaklinks]{hyperref}

\begin{document}

Lorem ipsum dolor \textcite{test}

\printbibliography

\end{document}

现在的结果是: 示例2

有什么问题?如何设置数学字体并将 Inconsolata 保留为 monotype 字体?

感谢您的帮助。

答案1

作为一种解决方法,您可以使用包unicode-math。您可以看到这里unicode-math和之间的区别mathspec。简而言之,mathspec旨在用系统字体(您正在寻找的字体)替换数学模式中的某些字体,而unicode-math主要目的是使用完整的数学 OpenType 字体。

使用 unicode-math,您可以设置完整的数学系列,并用另一种字体替换某些字符集。这是一个 MWE:

\documentclass[11pt,notitlepage,oneside,a4paper]{article}
\usepackage{fontspec}
%\usepackage{xunicode}% unicode character macros
%\usepackage{xltxtra}

\usepackage[math-style=TeX]{unicode-math}
\setmathfont{Asana Math}
\setmathfont[range=\mathit/{latin,Latin},Numbers={Lining,Monospaced}]{Nimbus Sans L Regular Italic}           
\setmathfont[range=\mathup/{latin,Latin},Numbers={Lining,Monospaced}]{Nimbus Sans L}           

\setmainfont{Nimbus Sans L}
\setmonofont{Inconsolatazi4}

\usepackage[spanish]{babel}
\usepackage[backend=biber,style=authoryear,doi=true]{biblatex}
\usepackage{filecontents}

\begin{filecontents}{biblio.bib}
@article{test, 
  author = {Author, A.},
  year = {2015},
  title = {Title},
  journal = {Some Journal},
  doi = {10.1016/S0169-8141(98)00038-9},
}
\end{filecontents}
\addbibresource{biblio.bib}

\usepackage[colorlinks=true,breaklinks]{hyperref}

\begin{document}

Lorem ipsum dolor \textcite{test}

\[e=mc^2\]

\printbibliography

\end{document}

这个想法是,你为所有字形和字母(甚至希腊字母)设置一个数学字体(Asana),并用无衬线字体(Nimbus Sans L)替换其中一些

这样,您就可以使用 Alegreya Sans Light 作为数学字体,使用 Inconsolata 作为单色字体(为了简单起见,我用 Nimbus Sans L 替换了 Alegreya;大多数 Linux 发行版都默认安装了 Nimbus,以替代 Helvetica)。

我没有使用mathspec软件包的经验,所以你的问题可能是一个错误,或者有人可以根据它发布更好的解决方案。

希望这对你有帮助。

亲切的问候

相关内容