用于向上移动帽子符号的宏

用于向上移动帽子符号的宏

我使用 mathpazo 字体包,但我认为帽子符号太低了。我可以制作一个宏来更改所有帽子的行为吗?

这个问题有一个很好的例子,但我不想重新输入我所有的帽子:

我可以将帽子符号垂直向上移动吗?

答案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) 因存在各种字体度量问题而出名的包。它们源自包,但字体度量要好得多。特别是,这些包可以生成间距合适的帽子符号。如果您使用这些包而不是——老实说,我想不出继续使用系统上可用的和的充分理由——则根本不需要手动更正/改进堆叠帽子符号的间距。newpxtextnewpxmathmathpazomathpazomathpazonewpxtextnewpxmath

在此处输入图片描述

\documentclass{article}
\usepackage{newpxmath,newpxtext}
\begin{document}
$\hat{u}$ $\hat{U}$
\end{document}

为了进行比较,这里有两个相同的符号,但mathpazo加载了包而不是newpxtextnewpxmath

在此处输入图片描述

相关内容