首先,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
)。有没有办法
\mathtt
使和命令中的数字\texttt
都具有与默认打字机字体相同的外观,并且\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
我自己找到了解决这个问题的方法。我们可以用以下方法解决这个问题:
- 删除命令
Digits
中的选项\setallmainfonts
。 YOURFONT
通过以下代码将数学环境中的数字设置为(我的是 Times)。关键点是您应该知道数字所在的ENCODING
和,例如,对于计算机现代常规字体,它们分别是和。ABBREVIATION
YOURFONT
OT1
cmr
设置后,\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
和:ABBREVIATION
YOURFONT
- 放入
\setallmainfonts(Latin){YOURFONT}%
序言并编译.tex
文件。 - 打开
.aux
编译后生成的文件,可以发现ENCODING
和。ABBREVIATION
YOURFONT