僅在文件的某些部分使用自訂數學字體

僅在文件的某些部分使用自訂數學字體

非常類似問題 我想在文件的(小)部分使用不同的無襯線數學字體。正如建議的回答上述問題,這可以使用\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

例如,請注意數字 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}

機器人範例 2

現在數位來自正確的字體!然而,對第二個嘗試同樣的方法\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.

從輸出中可以明顯看出缺少的字體。

機器人範例 3

有什麼方法可以讓我也能以正確的字體獲得字母(和希臘字母)?


如果同時存在pdflatexxelatex/ 的方法lualatex,我主要對 感興趣pdflatex,因為我也在使用該microtype包,眾所周知,該包與xelatex/不完全兼容lualatex。如果後者可以做到這一點,但pdflatex不能,我仍然可能會考慮放棄microtype

相關內容