![Как выполнить выравнивание относительно символа внутри аргумента команды?](https://rvso.com/image/328440/%D0%9A%D0%B0%D0%BA%20%D0%B2%D1%8B%D0%BF%D0%BE%D0%BB%D0%BD%D0%B8%D1%82%D1%8C%20%D0%B2%D1%8B%D1%80%D0%B0%D0%B2%D0%BD%D0%B8%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%20%D0%BE%D1%82%D0%BD%D0%BE%D1%81%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D0%BE%20%D1%81%D0%B8%D0%BC%D0%B2%D0%BE%D0%BB%D0%B0%20%D0%B2%D0%BD%D1%83%D1%82%D1%80%D0%B8%20%D0%B0%D1%80%D0%B3%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D0%B0%20%D0%BA%D0%BE%D0%BC%D0%B0%D0%BD%D0%B4%D1%8B%3F.png)
Мне бы хотелось выровнять несколько строк относительно символа, скажем, знака равенства, над которым написано что-то еще (используя \overset
), при этом принимая во внимание то, что написано над символом, для интервала, например так:
Однако я не могу поместить "&" в аргумент \overset
, так как это, по-видимому, синтаксически запрещено. При размещении его рядом с \overset
, строки, конечно, не выравниваются относительно знака равенства:
Я попробовал использовать \mathclap
, что обеспечивает нужное мне выравнивание, но тогда интервалы становятся слишком узкими:
Вот мой минимальный рабочий пример:
\documentclass[a4paper,12pt,fleqn]{article}
\usepackage[fleqn]{amsmath}
\usepackage{amsmath, amssymb, graphics, setspace}
\usepackage{latexsym}
\usepackage{mathtools}
\begin{document}
Placing "\&" next to overset:
\begin{alignat*}{1}
\textrm{some expression} & \overset{(23.1)}{=}\textrm{other expression}\\
& \overset{(1.3)}{=}\textrm{other expression}\\
& \overset{(2.4,3.5)}{=}\textrm{other expression}
\end{alignat*}
Using mathclap:
\begin{alignat*}{1}
\textrm{some expression} & \overset{\mathclap{(23.1)}}{=}\textrm{other expression}\\
& \overset{\mathclap{(1.3)}}{=}\textrm{other expression}\\
& \overset{\mathclap{(2.4,3.5)}}{=}\textrm{other expression}
\end{alignat*}
How I want it to look like:
\begin{alignat*}{1}
\textrm{some expression} & \quad\overset{\mathclap{(23.1)}}{=}\quad\textrm{other expression}\\
& \quad\overset{\mathclap{(1.3)}}{=}\quad\textrm{other expression}\\
& \quad\overset{\mathclap{(2.4,3.5)}}{=}\quad\textrm{other expression}
\end{alignat*}
Of course, adding spaces manually as done here is not a satisfactory solution to the problem.
\end{document}
решение1
решение2
Здесь используется \tabularCenterstack
из tabstackengine
пакета. Ширина между столбцами контролируется с помощью \setstacktabulargap{0pt}
. Пропуск базовой линии между строками контролируется с помощью \setstackgap{L}{1.4\baselineskip}
.
\documentclass[a4paper,12pt,fleqn]{article}
\usepackage[fleqn]{amsmath}
\usepackage{amsmath, amssymb, graphics, setspace}
\usepackage{latexsym}
\usepackage{mathtools}
\usepackage{tabstackengine}
\stackMath
\def\poverset{\protect\overset}
\setstackgap{L}{1.4\baselineskip}
\setstacktabulargap{0pt}
\begin{document}
Using \verb|\tabularCenterstack|:
\[
\tabularCenterstack{rcl}{
\textrm{some expression} & \poverset{(23.1)}{=}&\textrm{other expression}\\
& \poverset{(1.3)}{=}&\textrm{other expression}\\
& \poverset{(2.4,3.5)}{=}&\textrm{other expression}
}
\]
\end{document}