答案1
这里我使用stackengine
在 的参数上添加堆叠间隙\hat
。我还使用scalerel
包来保留数学样式,并.3\LMpt
根据随数学样式缩放的单位来表达堆叠间隙 (作为 的参数\ThisStyle{}
,\LMpt
是 1pt 的可扩展版本,将随较小的数学样式缩放)。
当我将参数包装在 中时,帽子字距调整会丢失,因此我使用=\addstackgap
将字距调整重新添加到帽子中,与字形的高度成比例。\slantfactor
.2
\documentclass{article}
\usepackage{mathpazo}
\usepackage{stackengine}
\usepackage{scalerel}
\def\slantfactor{.2}
\let\svhat\hat
\def\hat#1{%
\ThisStyle{\setbox0=\hbox{$\SavedStyle#1$}\kern\slantfactor\ht0%
\svhat{\addstackgap[.3\LMpt]{$\kern-\slantfactor\ht0\SavedStyle#1$}}}}
\begin{document}
$\svhat{x}\svhat{P}$ (original)
$\hat{x} \hat{P} \scriptstyle \hat{x} \hat{P} \scriptscriptstyle \hat{x} \hat{P}$
(revised)
\end{document}
答案2
您可以使用和包,而不是使用mathpazo
(a) 相当老旧且 (b) 因存在各种字体度量问题而出名的包。它们源自包,但字体度量要好得多。特别是,这些包可以生成间距合适的帽子符号。如果您使用这些包而不是——老实说,我想不出继续使用系统上可用的和的充分理由——则根本不需要手动更正/改进堆叠帽子符号的间距。newpxtext
newpxmath
mathpazo
mathpazo
mathpazo
newpxtext
newpxmath
\documentclass{article}
\usepackage{newpxmath,newpxtext}
\begin{document}
$\hat{u}$ $\hat{U}$
\end{document}
为了进行比较,这里有两个相同的符号,但mathpazo
加载了包而不是newpxtext
和newpxmath
: