如何在 XeLaTeX 中使用系统字体来书写方程式?

如何在 XeLaTeX 中使用系统字体来书写方程式?

我正在尝试使用 LaTeX 的系统字体。我可以对文本使用系统字体,但对数学部分却不行。下面是一个例子(使用 XeLaTeX 编译),我使用字体“Broadway”,但它对数学部分不起作用。关于如何定义数学部分的字体,有什么建议吗?

\documentclass[12pt,a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}

\usepackage[xetex]{graphicx}
\usepackage{fontspec,xunicode}
\defaultfontfeatures{Mapping=tex-text,Scale=MatchLowercase}
\setmainfont[Scale=.95]{Broadway}
\setmonofont{Broadway}

\begin{document}
This is the formula for $(a+b)^2$
\begin{equation}
(a+b)^2=a^2+2ab+b^2
\end{equation}

\end{document} 

我找到了其他方法LaTex 字体目录

\documentclass[12pt,a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}

\usepackage{concmath}
\usepackage[T1]{fontenc}

\begin{document}
This is the formula for $(a+b)^2$
\begin{equation}
(a+b)^2=a^2+2ab+b^2
\end{equation}

\end{document}

我在寻找 typewritter 字体,“concmath” 就是一款不错的字体,并且还提供数学支持。但我对 courier 字体更感兴趣,它也有目录

\usepackage{courier}
\renewcommand*\ttdefault{lcmtt}
\renewcommand*\familydefault{\ttdefault}
\usepackage[T1]{fontenc}

但是现在数学符号变成了罗马字体。有没有可能让数学部分使用 courier 字体?我不确定是否可以通过修改相应的 .sty 文件来实现,或者是否有其他更好的方法。我所做的就是让数学部分使用与文本相同的字体(仅适用于文本部分,不适用于符号),而不使用斜体或粗体。

答案1

使用mathspec包。但请注意,大多数字体仅包含可用于的拉丁字母和希腊字母mathspec。如果您希望数学字体(字母和符号)保持一致,则需要unicode-math与带有 MATH 表的 OpenType 字体一起打包。这样的字体相对较少,唯一具有完整 Unicode 覆盖的字体是 XITS/STIX。


基本用法mathspec

\usepackage{mathspec}
\setmainfont{Broadway}
\setmathsfont(Digits,Latin,Greek)[Numbers={Lining,Proportional}]{Broadway}

一些评论:

  • 不要加载fontspec包。它将与 冲突mathspec
  • 文本字体中不可用的符号将恢复为 Computer Modern。如果您喜欢该mnsymbol软件包提供的运算符(该运算符旨在与 Minion Pro 配合使用),请使用选项\usepackage[MnSymbol]{mathspec}

基本用法unicode-math

此包适用于包含 OpenType MATH 表的字体。目前仅提供以下字体:

推荐最后一个,因为它覆盖范围全面,外观类似时代(大多数专业书籍对数学都使​​用类似时代的字体)。

\usepackage{unicode-math}
\setmainfont{XITS}
\setmathfont{XITS Math}
\setmathfont[range={\mathcal,\mathbfcal},StylisticSet=1]{XITS Math}

最后一行只能与XITS Math或一起使用STIX。它确保 \mathcal 和 \mathscr 看起来不同,并且与传统 TeX 字体中的外观一致。


关于您的代码的其他评论:

  • 不要inputenc与 XeTeX 或 LuaTeX 一起使用。的 utf8 选项inputenc是肮脏黑客的汇编,它实现了 Unicode 的一小部分,而 XeTeX 本身支持 UTF-8 和 UTF-16。
  • 无需指定xetex软件包graphicx。在现代发行版中,它会自动检测。
  • 您的替代解决方案全部利用了遗留代码,例如 T1 fontenc,应该避免使用这些代码xetex

相关内容