对于数学模式中的字体,我使用stix2
类似的包
\usepackage[notext]{stix2}
正如预期的那样,这会更改 的默认 (sans-serif) 字体\mathsf
。但我想使用\mathsf
LaTeX 默认使用的 sans-serif Computer Modern 字体(即,\mathsf
如果没有 的字体\usepackage[notext]{stix2}
),同时在数学模式下保留其余的stix2
字体。我该怎么做?
我一直在这里查看 TeX Stack Exchange 上以前的问题,但没有发现任何相关内容。
答案1
字母表\mathsf
来自sansmathfonts
家族cmssm
,使用 NFSS。它采用 OML 编码,支持拉丁语和希腊语。您可以通过包选择它isomath
:
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[notext]{stix2}
\usepackage[OMLmathsfit,sfdefault=cmssm]{isomath}
\begin{document}
\[ \mathsfit{y} = \mathsfit{\alpha x} + \mathsfit{\beta} \]
\end{document}
如果您想在同一文档中同时使用直立\mathsf
和斜体,您可以使用 来定义它们。在这种情况下,您需要将该系列的 OT1 或 T1 版本作为您的直立字体。小写希腊字母没有直立字体。\mathsfit
\DeclareMathAlphabet
xcmss
sansmathfonts
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[notext]{stix2}
\DeclareMathAlphabet{\mathsf}{OT1}{xcmss}{m}{n}
\SetMathAlphabet{\mathsf}{bold}{OT1}{xcmss}{b}{n}
\DeclareMathAlphabet{\mathsfit}{OML}{cmssm}{m}{it}
\SetMathAlphabet{\mathsfit}{bold}{OML}{cmssm}{b}{it}
\begin{document}
\[ \mathsfit{y} = \mathsfit{\alpha x} + \mathsfit{\beta} + \mathsf{\Phi x_0} \]
\end{document}
在 LuaLaTeX 或 XeLaTeX 中,您可以通过 加载 OpenType 字体unicode-math
。Unicode 不支持无衬线希腊语。例如:
\documentclass{article}
\usepackage{unicode-math}
\defaultfontfeatures{ Scale=MatchLowercase }
\setmathfont{STIX Two Math}
\setmathfont{NewCMSans10-Book}[
range=sfup,
script-font={NewCMSans08-Book},
script-features={}, % Suppress a harmless warning.
sscript-font={NewCMSans08-Book},
sscript-features={},
Extension=.otf]
\setmathfont{NewCMSans10-BookOblique}[
range=sfit,
script-font={NewCMSans08-BookOblique},
script-features={},
sscript-font={NewCMSans08-BookOblique},
sscript-features={},
Extension=.otf]
\begin{document}
\[ \symsfit{y} = \symsfit{\alpha x} + \symsfit{\beta} + \symsfup{\Phi x_0} \]
\end{document}
也许:
\documentclass{article}
\usepackage{unicode-math}
\defaultfontfeatures{ Scale=MatchLowercase }
\setmathfont{STIX Two Math}
\setmathfont{NewCMMath-Book}[
range={sfup,sfit,bfsfup,bfsfit}]
\begin{document}
\[ \symsfit{y} = \symsfit{\alpha x} + \symsfit{\beta} + \symsfup{\Phi x_0} \]
\end{document}
可以使用unicode-math
或\setmathsf
定义无衬线希腊字母\setmathfontface
,例如:
\documentclass{article}
\usepackage{unicode-math}
\defaultfontfeatures{ Scale=MatchLowercase }
\setmathfont{STIX Two Math}
\setmathfont{NewCMMath-Book}[
range={sfup,sfit,bfsfup,bfsfit}]
\setmathfontface\varsfup{NewCMSans10-Regular.otf} % Can define SizeFeatures for subscripts.
\setmathfontface\varsfit{NewCMSans10-Oblique.otf}
\begin{document}
\[ \symsfit{y} = \varsfit{\mupalpha} \symsfit{x} + \varsfit{\mupbeta} + \varsfup{\mupPhi} \symsfup{x_0} \]
\end{document}
如果您\mathsf
在文档中大量使用,则可能需要unicode-math
使用[sf=sym]
包选项进行加载,以实现向后兼容性。这意味着,如果您\mathsf{cosine}
的文档中有类似的代码,则应将其更改为\textsf
,或使用 更改操作员字体\setoperatorfont
。
答案2
我永远不会使用该notext
选项stix2
:您会得到非常奇怪的字体混合。
无论如何,下面是解决问题的方法。
\documentclass{article}
\usepackage{fix-cm}
\usepackage{amsmath}
\usepackage[notext]{stix2}
\DeclareMathAlphabet{\mathsf}{OT1}{cmss}{m}{n}
\begin{document}
This is text and we have math
$a+b=\mathsf{C}$ {\fontfamily{cmss}\selectfont C}
\end{document}
仅作为检查,如果我注释掉加载,则这是输出stix2
。