MS Calibri 中的数学

MS Calibri 中的数学

我必须用 Calibri 直立字母排版一份文档。数学上有一个问题:当我排版以下最小示例时,字母是直立的 Calibri,但数字默认是斜体。方程式中的数字默认应该是直立的。那么我该怎么办呢?顺便说一句,我用 XeLaTeX 编译。

\documentclass[a4paper, 11pt]{scrartcl}
\usepackage[ngerman]{babel}
\usepackage[T1]{fontenc}
\usepackage{amsmath}
\usepackage{fontspec}
\setmainfont{Calibri}
\usepackage[eulergreek]{sansmath}
\sansmath
\begin{document}
$A=3$
\end{document}

答案1

只要您不必使用旧编码,我都会建议您unicode-math这样做。我特别建议不要混合使用现代和旧版软件包。这会自动缩放您选择的字体,以便它们的高度至少匹配。它支持您可以复制和粘贴的 Unicode 输入和输出。它甚至允许您使用 Calibri 的希腊字母。

警告:我目前没有使用 Windows 系统,因此无法为您测试这一点,但它可以适用于不同的字体。

\documentclass[varwidth, preview]{standalone}

\usepackage{amsmath} % Or mathtools    
\usepackage[math-style=upright]{unicode-math}
\usepackage[ngerman]{babel} % Or polyglossia

\setmainfont{Calibri}
\defaultfontfeatures{Scale=MatchUppercase}
\setsansfont{Calibri}
\setmonofont{Consolas}

\setmathfont[slash-delimiter=frac]{Cambria Math}
\setmathfont[range=up]{Calibri}
\setmathfont[range=it]{Calibri Italic}
\setmathfont[range=bfup]{Calibri Bold}
\setmathfont[range=bfit]{Calibri Bold Italic}

\setoperatorfont\normalfont % For log, sin, cos, etc.

\begin{document}
$A=3$
\end{document}

这是使用 Carlito 和其他免费字体的版本。它还演示了如何在数学模式下使用文本字体支持的某些数学符号。(Calibri 中的符号列表会有所不同,此外,如果您使用其中一个未更改为相同字体的符号,则应注意不一致的情况,例如 <、≮、≤、≦ 等中的一个与其他不匹配。)

\documentclass[varwidth, preview]{standalone}

\usepackage{mathtools}
\usepackage[math-style=upright]{unicode-math}
%\usepackage[ngerman]{babel} % Or polyglossia

\usepackage[sfdefault]{carlito}
\defaultfontfeatures{Scale=MatchUppercase}
\usepackage{inconsolata}

\setmathfont{Asana Math}
\setmathfont[range={up,"002B,"002D,`±,`×,`·,`÷,`¬,`∂,`∆,`∕,`∞,`⌐}]{Carlito}
\setmathfont[range=it]{Carlito Italic}
\setmathfont[range=bfup]{Carlito Bold}
\setmathfont[range=bfit]{Carlito Bold Italic}

\setoperatorfont\normalfont % For log, sin, cos, etc.

\begin{document}
Foo bar baz.

$A \log b = 3$
\end{document}

卡利托

编辑:在评论中,您表示希望数学字母为斜体。如果是这样,请删除包[math-style=upright]中的选项unicode-math,或者将其更改为[math-style=ISO]如果您也希望斜体大写希腊字母。(TeX 默认不这样做只是因为传统数学字体通常没有这些字母。)

答案2

[编辑] 按照 Davislor 的建议,这里不需要fontspecmathspec

解决方案是使用该mathspec包并手动设置数学字体。我现在无法访问 Calibri,因此这个 MWE 是使用 Roboto 的,但它也应该适用于 Calibri

% !TEX program = xelatex
\documentclass[a4paper, 11pt]{scrartcl}
\usepackage[ngerman]{babel}


\usepackage[eulergreek]{sansmath}
\sansmath

\usepackage{amsmath}
\usepackage{mathspec}
\setmainfont{Roboto} 

\setmathsfont(Digits,Latin){Roboto}


\begin{document}
Text mode gives A=3 \\
Math mode gives $A=3$ \\
Greeks are still in Euler : $\Omega = \rho / \rho_{crit.}$
\end{document}

在此处输入图片描述

我建议mathspec 手册欲了解更多选项,您可以在此处找到如何使拉丁字符也直立(如果您愿意的话)。使用mathspec设置希腊数学字体可能也更优雅。

答案3

Fira Math 可用这里

\documentclass[a4paper, 11pt]{scrartcl}
\usepackage[ngerman]{babel}
\usepackage{amsmath}
\usepackage{unicode-math}
\setsansfont{Calibri}
\setmathfont[mathrm=sym]{Fira Math}
%\setmathfont{GFSNeohellenic Math}
\renewcommand\familydefault{\sfdefault}

\begin{document}
Some math in Sans Serif
$A=3$ 
$\Omega = \rho / \rho_{\text{crit.}}$   
\end{document}

在此处输入图片描述

相关内容