我正在为我的文档使用 tgheros 和 sansmath 包。这会将文本字体更改为无衬线字体,并且所有支持的数学部分均会更改,这意味着希腊字母仍使用衬线排版。这是一个有效的最小示例:
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage{tgheros,sansmath}
\renewcommand{\familydefault}{\sfdefault}
\sansmath
\begin{document}
a %a is sans-serif.
$$\alpha a$$ %a is sans-serif, \alpha is not - I'd like it to be.
\end{document}
我只想将 cmbright 用于希腊字母,因为它足够接近,与其他无衬线数学符号看起来不错(这意味着仅导入 cmbright 包不起作用,因为它会改变所有数学符号的字体)。
我该如何处理这个问题?
我甚至很高兴这种情况不会自动发生,而不必使用类似于 \MakeThisCMBright{\alpha} 的命令手动将希腊字母设置为 cmbright。注意:我使用的是 pdftex。
答案1
在现代工具链中
如果您可以使用 LuaLaTeX 或 XeLaTeX,这将为您提供您请求的特定字体以及来自 Fira Math 的其他无衬线数学符号。
\documentclass{article}
\usepackage{unicode-math}
\defaultfontfeatures{Scale=MatchLowercase}
\setmainfont{TeX Gyre Heros}[Scale=1.0]
\setsansfont{TeX Gyre Heros}
\setmathfont{Fira Math}
\setmathfont{TeX Gyre Heros}[range=up/{Latin,latin,Num}]
\setmathfont{TeX Gyre Heros Italic}[range=it/{Latin,latin}]
\setmathfont{TeX Gyre Heros Bold}[range=bfup/{Latin,latin,Num}]
\setmathfont{TeX Gyre Heros Bold Italic}[range=bfit/{Latin,latin}]
\setmathfont{CMU Bright}[range=up/{Greek,greek}]
\setmathfont{CMU Bright Oblique}[range=it/{Greek,greek}]
\setmathfont{CMU Bright Bold}[range=bfup/{Greek,greek}]
\setmathfont{CMU Bright Bold Oblique}[range=bfit/{Greek,greek}]
\begin{document}
a
$\alpha a$
\end{document}
如果你真正想要的是一套一致的无衬线字体用于文本和数学,那么一个更简单的方法是
\usepackage[fira]{fontsetup}
请注意,这也仅适用于 LuaLaTeX 或 XeLaTeX。(而且我在写这个答案时就已经被打败了。)
使用旧字体
另一个框架挑战:如果您想要在整个文档中使用无衬线数学,而不是在衬线和无衬线数学版本之间切换,则使用无衬线数学包可能会获得更好的结果,例如sansmathfonts
或newtxsf
- 甚至cmbright
- 并且不再觉得需要仅为希腊语使用 CM Bright。
如果您仍然这样做,您必须cmbr
以 OML 编码的形式加载该系列作为数学字体,并重新定义所有希腊字母。该sansmath
软件包破坏了这一点,但它可以与 一起使用sansmathfonts
。
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage{amsmath}
\usepackage{sansmathfonts}
\usepackage{tgheros}
\renewcommand{\familydefault}{\sfdefault}
\usepackage[italic]{mathastext}
\DeclareSymbolFont{cmbright}{OML}{cmbr}{m}{it}
\SetSymbolFont{cmbright}{bold}{OML}{cmbr}{bx}{it}
\DeclareMathSymbol{\alpha}{\mathalpha}{cmbright}{"0B}
\DeclareMathSymbol{\beta}{\mathalpha}{cmbright}{"0C}
% etc.
\begin{document}
a
$\alpha a \boldsymbol{\alpha a}$
\end{document}
请注意,TeX Gyre Heros 和 Computer Modern Bright 的 x 高度不同。
您可以查找并手动输入七位 OML 编码中每个希腊字母的插槽,请记住,它重新使用了几个拉丁字母,例如 A、B、H 等作为希腊大写字母。
OMLcmbr.fd
如果您确实想走这条路,那么这两个问题都可以通过复制和编辑大量样板文件(参见)来解决。