\reallywidehat 用于 unicode 引擎

\reallywidehat 用于 unicode 引擎

因为我想要一个比单个字母\widehat更宽的,所以我搜索并找到了\hat这个答案。但是,当我尝试使用 LuaLaTeX 进行编译时,得到了以下结果:

在此处输入图片描述

有没有什么办法可以解决这个问题?


下面是 MWE。

\documentclass{amsart}

\usepackage{kpfonts}

\usepackage{scalerel,stackengine}
\stackMath
\newcommand\reallywidehat[1]{%
\savestack{\tmpbox}{\stretchto{%
  \scaleto{%
    \scalerel*[\widthof{\ensuremath{#1}}]{\kern.1pt\mathchar"0362\kern.1pt}%
    {\rule{0ex}{\textheight}}%WIDTH-LIMITED CIRCUMFLEX
  }{\textheight}%
}{2.4ex}}%
\stackon[-8.5pt]{#1}{\tmpbox}%
}

\begin{document}
Kepler fonts

$\sigma, \hat{\sigma}, \widehat{\sigma}, 
\reallywidehat{\sigma}, \reallywidehat{\sigma\sigma\sigma}$

$\varepsilon, \hat{\varepsilon}, \widehat{\varepsilon}, 
\reallywidehat{\varepsilon}, 
\reallywidehat{\varepsilon\varepsilon\varepsilon}$

$a, \hat{a}, \widehat{a}, 
\reallywidehat{a}, \reallywidehat{aaa}$

$c, \hat{c}, \widehat{c}, 
\reallywidehat{c}, \reallywidehat{ccc}$
\end{document}

答案1

如果你添加

\fontname\textfont3

最后,您会看到字体是KpMath-Regular.otf,其中插槽U+0062由“b”占据,这解释了您得到的内容。

\documentclass{amsart}

\usepackage{kpfonts}

\usepackage{scalerel,stackengine}
\stackMath
\newcommand\reallywidehat[1]{%
  \sbox8{\ensuremath{#1}}%
  \savestack{\tmpbox}{\stretchto{%
    \scaleto{%
      \scalerel*[0.08\wd8]{\kern.1pt{\hat{}}\kern.1pt}%
      {\rule{0ex}{\textheight}}%WIDTH-LIMITED CIRCUMFLEX
    }{\textheight}%
  }{1.2ex}}%
  \stackon[-0.7ex]{#1}{\tmpbox}%
}

\begin{document}
Kepler fonts

$\reallywidehat{\sigma\sigma\sigma\sigma\sigma\sigma\sigma\sigma\sigma\sigma}$

$\reallywidehat{\sigma\sigma\sigma}$

\end{document}

这需要修复,但我把这个任务留给你,因为我认为结果不值得付出努力。

相关内容