
Таким образом $\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}