使用 mathspec 包的 \mathtt 命令中的数字打字机字体

使用 mathspec 包的 \mathtt 命令中的数字打字机字体

首先,MWE 如下:

\documentclass[12pt]{article}
\usepackage{mathspec}%after amsmath
\setallmainfonts(Digits,Latin){Times}%

\title{An Example}
\date{}
\begin{document}
\maketitle

In equations, the setting acts as $f(x)=x^2+2021$ and $\mathtt{2021abcdef}$, while in the texts the setting acts as \texttt{2021abcdefg}.
    
\end{document}

编译后XeLaTex,输出如下

在此处输入图片描述

\mathtt问题:如您所见,和命令中的数字\texttt具有不同的外观:前者采用Times系列字体,而后者确实是默认打字机字体(Computer Modern)。有没有办法

  1. \mathtt使和命令中的数字\texttt都具有与默认打字机字体相同的外观,并且
  2. \mathrm还是让等中的数字\mathit以系列字体出现Times

Times注意,当我们将该系列字体替换为其他字体或者使用\mathit\mathbf\mathsf等字体时,也会出现类似的问题。

答案1

如果我正确理解了要求,那么mathspec命令\setallmonofonts只需一步就可以有用地设置 mathtt 和 texttt 模式以使用相同的字体。

卡内基梅隆大学

平均能量损失

\documentclass{article}
\usepackage{xcolor}
\usepackage{mathspec}
\setmathsfont{TeX Gyre Pagella Math}
\setallmonofonts[Colour=red]{CMU Typewriter Text}
\newcommand\sample{\parbox{0.8\textwidth}{
plain: text 123 

\textbackslash texttt: \texttt{text 123}

plain: $123 x^2+456 y^2=789 z^2$

\textbackslash mathtt: $\mathtt{123 x^2+456 y^2=789 z^2}$

$x$ term only: $\mathtt{123 x^2}+456 y^2=789 z^2$
}}

\begin{document}

CMU Typewriter Text

\fbox{\sample}
\end{document}

任何打字机字体都可以插入其中。

拉丁现代单音节:

低密度聚乙烯

警告4:

因科索拉塔

甚至非 tt 字体。

朋克新星:

朋克新星

只需找到适合目的的适当字体即可。

答案2

我自己找到了解决这个问题的方法。我们可以用以下方法解决这个问题:

  1. 删除命令Digits中的选项\setallmainfonts
  2. YOURFONT通过以下代码将数学环境中的数字设置为(我的是 Times)。关键点是您应该知道数字所在的ENCODING和,例如,对于计算机现代常规字体,它们分别是和。ABBREVIATIONYOURFONTOT1cmr

设置后,\mathit\mathbf\mathsf\mathtt以上数字命令恢复正常。

\setallmainfonts(Latin){YOURFONT}%
\makeatletter
\DeclareSymbolFont{digtsfont}{ENCODING}{ABBREVIATION}{m}{n}
\DeclareMathSymbol{0}{\mathalpha}{digtsfont}{`0}
\DeclareMathSymbol{1}{\mathalpha}{digtsfont}{`1}
\DeclareMathSymbol{2}{\mathalpha}{digtsfont}{`2}
\DeclareMathSymbol{3}{\mathalpha}{digtsfont}{`3}
\DeclareMathSymbol{4}{\mathalpha}{digtsfont}{`4}
\DeclareMathSymbol{5}{\mathalpha}{digtsfont}{`5}
\DeclareMathSymbol{6}{\mathalpha}{digtsfont}{`6}
\DeclareMathSymbol{7}{\mathalpha}{digtsfont}{`7}
\DeclareMathSymbol{8}{\mathalpha}{digtsfont}{`8}
\DeclareMathSymbol{9}{\mathalpha}{digtsfont}{`9}
\makeatother

现在我给出一种可能的方法来寻找ENCODING和:ABBREVIATIONYOURFONT

  1. 放入\setallmainfonts(Latin){YOURFONT}%序言并编译.tex文件。
  2. 打开.aux编译后生成的文件,可以发现ENCODING和。ABBREVIATIONYOURFONT

相关内容