\mathsf 具有不同的字体

\mathsf 具有不同的字体

对于数学模式中的字体,我使用stix2类似的包

\usepackage[notext]{stix2}

正如预期的那样,这会更改 的默认 (sans-serif) 字体\mathsf。但我想使用\mathsfLaTeX 默认使用的 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}

sansmathfonts + stix2 样本

如果您想在同一文档中同时使用直立\mathsf和斜体,您可以使用 来定义它们。在这种情况下,您需要将该系列的 OT1 或 T1 版本作为您的直立字体。小写希腊字母没有直立字体。\mathsfit\DeclareMathAlphabetxcmsssansmathfonts

\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}

sansmathfonts + stix2 样本

在 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}

新计算机 Modern Sans/STIX Two Math 示例

也许:

\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}

新计算机现代数学/STIX 两个数学示例

可以使用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}

NewCMMath + NewCMSans + STIX 两个数学示例

如果您\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

在此处输入图片描述

相关内容