我正在用 XeLaTeX 排版一份文档,正文使用衬线字体,其他内容(章节标题、表格等)使用无衬线字体。对于数学运算的设置,我使用 TeX Gyre Pagella Math。使用fontspec
和unicode-math
,这在大多数情况etoolbox
下都可以正常工作。我使用包自动将浮点数切换到无衬线字体。但是,数学运算仍然以衬线字体排版。我知道如何使用切换到无衬线数学(可在 TGPM 中使用)\mathsf{…}
,但我想使这一过程自动化。我尝试了version=…
选项unicode-math
(与结合etoolbox
),但我不知道如何让它工作。我还不知道如何etoolbox
直接使用来让它工作。
下面是我当前设置的 MWE;重点是让表格内容中的数学也采用无衬线字体,但现在情况并非如此。需要说明的是:我使用其他 Komascript 选项将标题标签设置为无衬线字体,但为了简洁起见,这里省略了。另外,以防万一,我使用 Minion Pro 和 Fira Sans 作为我的实际字体,但可能不是每个人都有这些字体。
\documentclass[]{scrbook}
\usepackage[T1]{fontenc}
\usepackage{fontspec}
\usepackage{unicode-math}
\setmainfont{TeX Gyre Pagella}[%
Ligatures = TeX,%
Numbers = {OldStyle,Proportional},%
]
\setsansfont{TeX Gyre Heros}[%
Ligatures = TeX, %
Numbers = {Lining,Monospaced}, %
Scale = MatchLowercase, %
]
\setmathfont[%
Scale = MatchLowercase,%
]{TeX Gyre Pagella Math} %
\setmathfont[%
version = table,%
Scale = MatchLowercase,%
]{TeX Gyre Pagella Math} %
\usepackage{%
tabularx,%
etoolbox,%
}
% etoolbox
\AtBeginEnvironment{tabularx}{%
\sffamily\addfontfeature{Numbers={Lining, Monospaced}}%
\mathversion{table}
}
\begin{document}
\pagestyle{empty}
\begin{table}[t]
\centering
\caption{$\mathsf{a^{2}+b^{2}=c^{2}}$}
\begin{tabularx}{.6\linewidth}{lrr}
some & text & and some math \\
$a^{2}$ & $+b^{2}$ & $=c^{2}$
\end{tabularx}
\end{table}
\begin{displaymath}
(x + a)^n = \sum_{k=0}^n {n \choose k} x^k a^{n-k}
\end{displaymath}
\end{document}
答案1
为了避免歧义,对于新读者来说,对unicode块有一个直观的了解可能会有所帮助。
Tex Gyre Pagella Math 有基础拉丁语(称之为“文本”,但可映射)
希腊语和科普特语(“文本”)
... 还有很多其他的区块 ...
以及数学字母数字符号(MAS)块:
和
(旁注:由于 Unicode 的有机发展方式,一些比较著名的数学符号位于早期的字母类符号块中:
相比之下,Fira Sans Math 字体的 MAS 要小得多:
其他 Tex Gyre 字体(Bonum、DejaVu、Schola、Termes)有数学版本 - 例如参见...\texmf-dist\fonts\opentype\public\tex-gyre-math\
答案2
这是一个老问题,但值得回答。
我不确定你到底想要什么。如果你希望将 Termes 作为主字体,将 Fira Sans 作为其他字体,则可以使用 Fira Math 字体:
\defaultfontfeatures{Scale=MatchLowercase}
\setmainfont{TeX Gyre Termes}[Scale=1.0]
\setsansfont{Fira Sans}
\setmathfont{Fira Math}
如果您的意思是希望能够在\mathversion{normal}
和之间切换\mathversion{sans}
,您可以这样做:
\defaultfontfeatures{Scale=MatchLowercase}
\setmainfont{TeX Gyre Termes}[Scale=1.0]
\setsansfont{Fira Sans}
\setmathfont{TeX Gyre Termes Math}
\setmathfont{Fira Math}[version=sans]
\mathversion{sans}
如果您想在数学模式中使用 Fira 的字母和数字,但使用 Termes 的其他符号,您可以尝试:
\defaultfontfeatures{Scale=MatchLowercase}
\setmainfont{TeX Gyre Termes}[Scale=1.0]
\setsansfont{Fira Sans}
\setmathfont{TeX Gyre Termes Math}
\setmathfont{Fira Math}[range={up,it,bfup,bfit}]
不幸的是,截至 2021 年,range=
和version=
选项彼此不兼容。