迭代 1

迭代 1

我的要求是:

  1. 使用 Calibri 作为主要字体。使用 XeLaTeX 可以轻松实现这一点。
  2. 使用 Calibri 作为数学字体。使用例如也相当容易mathspec。但这只处理字母和数字。
  3. 使用 Calibri 作为方程式中数学符号(例如,=,+)的字体\times这是最困难的部分。

我花了几年时间,经过两次迭代才弄清楚,但我终于找到了解决方案。下面的答案中讨论了这两个问题。

答案1

迭代 1

\documentclass[10pt]{article}
\usepackage[MnSymbol]{mathspec}  % Includes amsmath.
\setmathsfont(Digits,Latin,Greek,Symbols)[Numbers={Lining,Proportional}]{Calibri}
\setmainfont[Mapping=tex-text, Ligatures={NoRequired,NoCommon,NoContextual}]{Calibri}
\usepackage[italic]{mathastext}

\begin{document}
ABCDEFGHIJKLMNOPQRSTUVWXYZ
  \begin{align}
    \dfrac{5a + 10b}{10} &= c \times |XY| - \alpha\beta\gamma^{2}\\
    x &= 5~\mathsf{°C}
  \end{align}
\end{document}

这满足了我的要求中的前两个条件,您可以获得以下结果:

迭代 1 但你可能会注意到这种方法存在多个问题:

  1. 分数线未按照 Calibri“样式”排版。
  2. \times符号不是使用 Calibri 排版的。
  3. (度数)符号\circ完全缺失。
  4. 公式中的“C”未使用 Calibri 排版。因为我使用了\mathsf。因此,使用了 Computer Modern sans 字体。

迭代 2

我的第一个解决方案足够好,所以我坚持了几年。然而,在那段时间里,伟大的unicode-math软件包出现了。

满足我的第三个要求的关键因素(或技巧)是以下这行代码,\setmathfont[range={"0000-"FFFF}]{Calibri}意思是:“对所有 Unicode 字符使用 Calibri 0x00000xFFFF即我想要在方程式中使用的绝大多数符号。”

还要注意\setmathfont[slash-delimiter=frac]{Cambria Math}。这是必要的,因为 Calibri 不提供 LaTeX 数学字体。因此我们使用 Cambria Math,因为它在风格上与 Calibri 更匹配,例如,它有更多匹配的分数线。但是,我们使用上面描述的技巧将 Calibri 用于大多数人都会看到的 Unicode 范围的字符。

\documentclass[10pt]{article}
\usepackage{amsmath}  % Same for amsmath.
\usepackage{fontspec}
\usepackage{unicode-math}
\setmainfont[Mapping=tex-text,Ligatures={NoRequired,NoCommon,NoContextual}]{Calibri}
\setmathfont[slash-delimiter=frac]{Cambria Math}
\setmathfont[range={"0000-"FFFF}]{Calibri}
\setmathfont[range=up]{Calibri}
\setmathfont[range=sfup]{Calibri}
\setmathfont[range=it]{Calibri Italic}
\setmathfont[range=bfup]{Calibri Bold}
\setmathfont[range=bfit]{Calibri Bold Italic}
\setsansfont{Calibri}  % Make \mathsf and \textsf also Calibri

\begin{document}
ABCDEFGHIJKLMNOPQRSTUVWXYZ
  \begin{align}
    \dfrac{5a + 10b}{10} &= c \times |XY| - \alpha\beta\gamma^{2}\\
    x &= 5~\mathsf{°C}
  \end{align}
\end{document}

以下是可爱的结果:

迭代 2

最后说明

  • 我验证了它适用于 XeLaTeX。它应该也适用于 LuaTeX。
  • 这应该适用于任何其他字体。
  • 我希望这能帮助您排版漂亮的文档。

答案2

我也为此苦苦挣扎,尝试使用setmainfontsetmathfont最终起作用的是:

\setallmainfonts[
Path = /path/,
Extension=.otf,
BoldFont = LocalFont-Cond,
ItalicFont = LocalFont-ExtObl,
BoldItalicFont = LocalFont-BoldExtObl]{LocalFont}

相关内容