\overset и выравнивание окружения: как добиться правильного выравнивания?

\overset и выравнивание окружения: как добиться правильного выравнивания?

Я использую alignсреду вместе с \oversetкомандой, чтобы поместить текст поверх символа отношения. Вот мой MWE:

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[italian]{babel}
\usepackage{amsmath}

\begin{document}
\begin{align*}
f(x)&=g(x)\\
    &\overset{something}{=} h(x)
\end{align*}
\end{document}

И на выходе получается

неправильное выравнивание

Как видите, выравнивание неправильное, или, по крайней мере, не то, что мне нужно! Я бы хотел, чтобы два знака равенства были выровнены друг относительно друга, в то время как с моим кодом я получаю выравнивание первого знака равенства с началом текста над символом!

Я уже пробовал с

\overset{something}{&=} h(x)

и

\overset{something}&{=} h(x)

но оба решения привели к ошибке.

Как добиться правильного выравнивания?

Редактировать: изначальный вопрос был о \buildrel, но, как сказал @egreg в комментарии, эта команда не поддерживается в LaTeX, поэтому я заменил ее на \overset.

решение1

Thealigned-oversetТеперь пакет предоставляет простое решение этой проблемы: просто напишите

\documentclass{article}
...
\usepackage{aligned-overset}
\begin{document}
\begin{align*}
  f(x)&=g(x)\\
  \overset{something}&{=} h(x)
\end{align*}
\end{document}

Соответствующий вывод

решение2

Я бы наложил что-то поверх отношения, используя \stackrel{<stack>}{<relation>}(что-то похожее, например \overset) и использовал быmathtools's \mathclap. Корректировки пространства могут быть учтены с помощью соответствующего \hspace:

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

\documentclass{article}
\usepackage{mathtools}

\begin{document}
\begin{align*}
  f(x) &= g(x) \\
       &\buildrel{something}\over{=} h(x)
\end{align*}

\begin{align*}
  f(x) &= g(x) \\
       &\stackrel{\mathclap{\text{something}}}{=} \hspace*{1.5em} h(x) \\
       &\overset{\mathclap{\text{something}}}{=} \hspace*{1.5em} h(x)
\end{align*}

\end{document}

Однако избегайте длинных фраз на символах. Вместо этого вы можете определить новый символ для представления отношения.

решение3

Вам не следует использовать \buildrel, поскольку это не поддерживаемая команда LaTeX, а \overset.

Выравнивание можно осуществить с помощью фантома, но, по моему мнению, лучше добавить побочное условие:

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[italian]{babel}
\usepackage{amsmath}

\begin{document}
Possible way
\begin{align*}
f(x)&\overset{\hphantom{\text{something}}}{=}g(x)\\
    &\overset{\text{something}}{=} h(x)
\end{align*}

Better way
\begin{alignat*}{2}
f(x) &= g(x) \\
     &= h(x) &&\qquad\text{(something)}
\end{alignat*}
\end{document}

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

решение4

Вот версия с использованием \stackon. Выступающий зазор установлен в 2pt с использованием необязательного аргумента. Текст установлен в \scriptsize.

\documentclass{article}
%\usepackage[T1]{fontenc}
%\usepackage[utf8]{inputenc}
%\usepackage[italian]{babel}
\usepackage{amsmath,stackengine}
\stackMath
\begin{document}
\begin{align*}
f(x)&\stackon{=}{\phantom{\text{\scriptsize something}}}g(x)\\
    &\stackon[2pt]{=}{\text{\scriptsize something}} h(x)
\end{align*}
\end{document}

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

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