非常类似于这问题 我想在文档的(小)部分使用不同的无衬线数学字体。正如建议的那样这回答上述问题,这可以通过使用\DeclareMathAlphabet
以下计算机现代字体来实现。
\documentclass{article}
\DeclareMathVersion{sans}
\SetSymbolFont{operators}{sans}{OT1}{cmbr}{m}{n}
\SetSymbolFont{letters}{sans}{OML}{cmbrm}{m}{it}
\SetSymbolFont{symbols}{sans}{OMS}{cmbrs}{m}{n}
\SetMathAlphabet{\mathit}{sans}{OT1}{cmbr}{m}{sl}
\SetMathAlphabet{\mathbf}{sans}{OT1}{cmbr}{bx}{n}
\SetMathAlphabet{\mathtt}{sans}{OT1}{cmtl}{m}{n}
\SetSymbolFont{largesymbols}{sans}{OMX}{iwona}{m}{n}
\begin{document}
1234 CQ $1234 CQ$
\sffamily\mathversion{sans}
1234 CQ $1234 CQ$
\end{document}
但是,在我的文档中,我想使用 Roboto 作为无衬线字体。这样做会导致文档和数学字体之间出现明显的差异。
\documentclass{article}
\usepackage[light,medium]{roboto}
\DeclareMathVersion{sans}
\SetSymbolFont{operators}{sans}{OT1}{cmbr}{m}{n}
\SetSymbolFont{letters}{sans}{OML}{cmbrm}{m}{it}
\SetSymbolFont{symbols}{sans}{OMS}{cmbrs}{m}{n}
\SetMathAlphabet{\mathit}{sans}{OT1}{cmbr}{m}{sl}
\SetMathAlphabet{\mathbf}{sans}{OT1}{cmbr}{bx}{n}
\SetMathAlphabet{\mathtt}{sans}{OT1}{cmtl}{m}{n}
\SetSymbolFont{largesymbols}{sans}{OMX}{iwona}{m}{n}
\begin{document}
1234 CQ $1234 CQ$
\sffamily\mathversion{sans}
1234 CQ $1234 CQ$
\end{document}
例如,请注意数字 1 或字母 Q 的不同形状。显然,我希望数学和文档无衬线字体尽可能相似。对于特殊符号,这当然不会(轻易)起作用,但从 Roboto 字体中获取数字、字母和理想的希腊字母已经很棒了。
改变第一个\SetSymbolFont
,我已经可以更进一步了。
\documentclass{article}
\usepackage[light,medium]{roboto}
\DeclareMathVersion{sans}
\SetSymbolFont{operators}{sans}{OT1}{Roboto-LF}{l}{n}
\SetSymbolFont{letters}{sans}{OML}{cmbrm}{m}{it}
\SetSymbolFont{symbols}{sans}{OMS}{cmbrs}{m}{n}
\SetMathAlphabet{\mathit}{sans}{OT1}{cmbr}{m}{sl}
\SetMathAlphabet{\mathbf}{sans}{OT1}{cmbr}{bx}{n}
\SetMathAlphabet{\mathtt}{sans}{OT1}{cmtl}{m}{n}
\SetSymbolFont{largesymbols}{sans}{OMX}{iwona}{m}{n}
\begin{document}
1234 CQ $1234 CQ$
\sffamily\mathversion{sans}
1234 CQ $1234 CQ$
\end{document}
现在数字都来自正确的字体!\SetSymbolFont
但是,尝试使用同样的方法处理第二个却失败了。
\SetSymbolFont{letters}{sans}{OML}{Roboto-LF}{l}{it}
结果是
LaTeX Font Warning: Font shape `OML/Roboto-LF/l/it' undefined
(Font) using `OML/cmm/m/it' instead on input line 19.
并且从输出中可以明显看出缺少的字体。
有什么方法可以让我获得正确字体的字母(和希腊字母)?
如果有同时使用pdflatex
和xelatex
/ 的方法lualatex
,我主要对 感兴趣pdflatex
,因为我也在使用microtype
包,众所周知它与xelatex
/不完全兼容lualatex
。如果后者可以做到这一点,但pdflatex
不能,我可能仍然会考虑放弃microtype
。