我使用 uarial 作為文字字體,並希望使用 newtxsf 作為幾乎匹配的數學字體。我縮放了 uarial 以匹配拉丁現代的高度,如這篇文章中所述:https://tex.stackexchange.com/a/206677。
我仍然遇到兩個問題:
- 我不知道如何正確縮放 newtxsf ,因為當我更改縮放選項時 \the\ht0 保持不變。如果無法直接顯示高度,我會嘗試一些值並選擇最適合的值。
- 在數學模式下,「sin」、「cos」...不是以 uarial 格式設置,而是以拉丁現代格式設定。有沒有辦法告訴 newtxsf 使用 \sffamily 而不是 \rmfamily?我嘗試使用 newtxsf 文件解決此問題,但失敗了。或者有其他與 uarial 相符的軟體包嗎?
到目前為止我的程式碼
\documentclass[fontsize=12pt, paper=a4, parskip=half]{scrreprt}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage[scale=0.93]{tgheros}
\usepackage[scaled=1]{newtxsf}
\renewcommand*{\familydefault}{\sfdefault}
\begin{document}
\textbf{Displaying height of fonts}\par
\sbox0{\sffamily A}heros: \the\ht0 \\
\sbox0{\rmfamily A}latin modern: \the\ht0\\
\sbox0{\ttfamily A}newtxsf: \the\ht0\par
\textbf{Math mode} $ Q = P\tan(\varphi)$
\end{document}
答案1
我的建議是嘗試不縮放;在本例中,我們得到無襯線 A 的高度為 8.87999pt,數學 A 的高度為 8.148pt。
因此,比例因子為 8.148/8.87999=0.91757(四捨五入至小數點後第五位)。現在與
\documentclass[fontsize=12pt, paper=a4]{scrreprt}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{amsmath}
\usepackage[scale=.91757]{tgheros}
\usepackage[scaled=1]{newtxsf}
\renewcommand*{\familydefault}{\sfdefault}
\renewcommand*{\rmdefault}{\sfdefault}
% this to get the operators in the sans serif font
\DeclareSymbolFont{operators}{\encodingdefault}{\sfdefault}{m}{n}
\begin{document}
\textbf{Displaying height of fonts}
\sbox0{\sffamily A}heros: \the\ht0
\sbox0{$A$}newtxsf: \the\ht0
\textbf{Math mode} $ Q = P\tan(\varphi)$
\end{document}
答案2
注意,在 中unicode-math
,解是Scale=MatchLowercase
,或有時是Scale=MatchUppercase
。您甚至可以將其設定為\defaultfontfeatures
.
它還將主字體設定為操作員字體和\mathrm
字體,但您可以使用\setoperatorfont
、\setmathrm
等覆蓋它。