\underhat и \underwidehat

\underhat и \underwidehat

Таким образом $\hat x$, и $\widehat x$дают верхние шляпы разной длины, однако, в отличие от \overbrace{}had an \underbrace{}, иногда требуется \uhatи \uwidehat.

Какой наилучший (наиболее чистый, с наименьшим количеством конфликтов при возможном использовании, например, в качестве конечных точек интервала в определенном интеграле, т.е. правильно масштабируемый) способ получить нижнюю шляпу и нижнюю широкую шляпу (те же шляпы, но перевернутые и находящиеся под рассматриваемым символом)?

Я полагаю, можно использовать

\documentclass{article}\usepackage{amsmath,mathtools,amssymb}
\newcommand*{\uhat}{\underset{\mathrel{\text{\raisebox{.25ex}{\rotatebox[origin=c]{180}{$\wedge$}}}}}}
\newcommand*{\uwidehat}{\underset{\mathrel{\text{\raisebox{.25ex}{\rotatebox[origin=c]{180}{$\widehat{~}$}}}}}}
\begin{document}
$\uhat x ~ ~ \uwidehat X$
\end{document}

Но должны быть и лучшие способы.

решение1

Для нижней шляпы просто используйте \underaccent{\check}; для широкой нижней шляпы наберите широкую шляпу поверх фантома аргумента, затем переверните ее вертикально, подняв на подходящую величину. Затем наложите перевернутый акцент на текст.

\documentclass{article}
\usepackage{amsmath}
\usepackage{accents}
\usepackage{graphicx}

\newcommand{\uhat}{\underaccent{\check}}

\newcommand{\uwidehat}[1]{%
  \mathpalette\douwidehat{#1}%
}

\makeatletter
\newcommand{\douwidehat}[2]{%
  \sbox0{$\m@th#1\widehat{\hphantom{#2}}$}%
  \sbox2{$\m@th#1x$}
  \sbox4{$\m@th#1#2$}
  \dimen0=\ht0
  \advance\dimen0 -.8\ht2
  \dimen2=\dp4
  \rlap{%
    \raisebox{\dimexpr\dimen0-\dimen2}{%
      \scalebox{1}[-1]{\box0}%
    }%
  }%
  {#2}%
}
\makeatother

\begin{document}

$\hat{a}\uhat{a}$

$\uwidehat{aaa}\uwidehat{fg}X_{\uwidehat{abc}}$

\end{document}

введите описание изображения здесь

Согласно Барбаре Битон, Unicode рекомендует не переворачивать акценты, если они установлены ниже. Поэтому я также предоставляю неперевернутый вариант.

\documentclass{article}
\usepackage{amsmath}
\usepackage{accents}
\usepackage{graphicx}

\newcommand{\uhat}{\underaccent{\hat}}

\newcommand{\uwidehat}[1]{%
  \mathpalette\douwidehat{#1}%
}
\makeatletter
\newcommand{\douwidehat}[2]{%
  \sbox0{$\m@th#1\widehat{\hphantom{#2}}\vphantom{t}$}%
  \sbox2{$t$}%
  \dimen2=\ht0
  \advance\dimen2 -\ht2
  \sbox2{$#2$}%
  \dimen0=\ht0
  \rlap{%
    \raisebox{\dimexpr-\dimen0-\dp2-1pt}[0pt][\dimexpr\dimen2+\dp2]{\box0}%
  }
  {#2}%
}
\makeatother

\begin{document}

$\hat{a}\uhat{a}$

$\uwidehat{aaa}\uwidehat{fg}X_{\uwidehat{abc}}$

\end{document}

введите описание изображения здесь

Обратите внимание, что вся конструкция превращается в обычный атом (что всегда происходит с другими нижними ударениями), поэтому, если вы хотите использовать его для символа операции или отношения, вам придется сказать что-то вроде

$a \mathbin{\uwidehat{+}} b$

который произведет

введите описание изображения здесь

Я использовал вторую версию, но в перевернутой версии то же самое. (Спасибо wipet за то, что указал на проблему в оригинальной версии.)

решение2

Это можно легко сделать с помощью accentsпакета:

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{mathtools,amssymb}

\usepackage{accents}
\newcommand*{\uhat}[1]{\underaccent{\hat}{#1}}
\newcommand*{\uwidehat}[1]{\underaccent{\widehat{\hphantom{#1}}}{#1}}

\begin{document}

  $ \uhat{x}\enspace \uwidehat X$

\end{document} 

введите описание изображения здесь

Связанный контент