如何将 STIX Two 与 nextxtt 一起使用?

如何将 STIX Two 与 nextxtt 一起使用?

我尝试使用 加载 STIX Two fontspec,使用 加载 STIX Two Math unicode-math,并直接加载newtxtt包。但是,似乎无法正确编译文档:如果我newtxtt在 之前加载fontspec,那么等宽字体仍将是默认字体;如果我在 之后fontspec(以及\setmainfont部分,参见代码示例)但在 之前unicode-math加载它,则文件无法编译,因为出现“数学符号不足”错误;如果我在 之后加载它unicode-math,那么虽然数学字体是 STIX 2 且等宽字体是 newtxtt,但文本字体会更改为默认的计算机现代字体。

\documentclass{scrartcl}

\usepackage{amsmath}
\usepackage{fontspec}
\setmainfont {STIX2Text-Regular}[
    Extension=.otf,
    BoldFont=STIX2Text-Bold,
    ItalicFont=STIX2Text-Italic,
    BoldItalicFont=STIX2Text-BoldItalic,
]
\usepackage[zerostyle=b]{newtxtt}
\usepackage{unicode-math}
\setmathfont{STIX2Math.otf}[StylisticSet=02, StylisticSet=08]
\usepackage{cabin}
\usepackage{dutchcal}
\usepackage{ulem}
\usepackage{leftidx}
\usepackage{physics}
\usepackage{mattens}
\usepackage[e]{esvect}
\usepackage{units}
\usepackage{minted}

\begin{document}

\usemintedstyle{murphy}
\begin{minted}{python}
# Propagate two balls with velocities v1 and v2, print "The
# two balls collided" if they collide:
while 1==1:
    ball1.pos=ball1.pos+v1*dt
    ball2.pos=ball2.pos+v2*dt
    if mag(ball1.pos-ball2.pos) < ball1.radius+ball2.radius:
        print("The two balls collided")
\end{minted}

\end{document} 

答案1

您需要选择里面的 T1 编码minted,这似乎不可能直接实现,因此需要进行一些小小的修改。

我稍微改变了你的序言,将包加载和声明分开。

对于 STIX Two 字体,使用您自己的方法,但将它们安装为系统字体更方便,因为这样更容易在文档中设置它们。

\documentclass{scrartcl}

\usepackage{amsmath}
\usepackage{fontspec}
\usepackage{unicode-math}

\usepackage[zerostyle=b]{newtxtt}
\usepackage{cabin}
\usepackage{dutchcal}
\usepackage{ulem}
\usepackage{leftidx}
\usepackage{physics}
\usepackage{mattens}
\usepackage[e]{esvect}
\usepackage{units}
\usepackage{minted}
\usepackage{xpatch}

\setmainfont{STIX Two Text}
\setmathfont{STIX Two Math}[StylisticSet=02, StylisticSet=08]

\makeatletter
\xpretocmd\FV@SetupFont{\fontencoding{T1}}{}{}
\makeatother

\begin{document}

\usemintedstyle{murphy}
\begin{minted}{python}
# Propagate two balls with velocities v1 and v2, print "The
# two balls collided" if they collide:
while 1==1:
    ball1.pos=ball1.pos+v1*dt
    ball2.pos=ball2.pos+v2*dt
    if mag(ball1.pos-ball2.pos) < ball1.radius+ball2.radius:
        print("The two balls collided")
\end{minted}

\end{document} 

在此处输入图片描述

相关内容