
Я использую 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}