我使用 uarial 作为文本字体,并希望使用 newtxsf 作为近似匹配的数学字体。我缩放了 uarial 以匹配 latin modern 的高度,如本文所述: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
等覆盖此功能。