我的文档中有以下类型的代码:
\begin{align*}
(-m)+m & \stackrel{\mathrm{Ax 1.1 (i)}}{=} m+(-m)\\
&\stackrel{\mathrm{Ax 1.4}}{=} 0 \
我想对齐,=
但由于有东西悬停在它上面,所以这很复杂。
似乎更容易使他们的中心保持一致(不管怎样,那就是他们的=
意志所在的地方)。
我怎样才能将一列居中align
(或者align*
说实话,我不太清楚其中的区别)
答案1
由于您不需要对每行进行编号,因此请使用array
:
\documentclass{article}
\usepackage{amsmath}
\begin{document}
\begin{equation*}
\begin{array}{@{}r@{{}\mathrel{}}c@{\mathrel{}{}}l@{}}
(-m)+m & \overset{\text{Ax 1.1 (i)}}{=} & m+(-m)\\
& \overset{\text{Ax 1.4}}{=} & 0
\end{array}
\end{equation*}
\end{document}
请注意\overset
优于\stackrel
并且这\text
将保留空格。在第一列和第二列之间,我放置了通常用于关系符号(由 产生{}\mathrel{}
)的空格,其他列间空格也是如此。如果您希望无论公式在什么上下文中(可能嵌入斜体内容)文本都是直立的,请使用\textup
而不是\text
。
结果如下:
但是,这似乎不是特别清晰;通常我更喜欢将对齐方式设置在右侧:
\documentclass{article}
\usepackage{amsmath}
\begin{document}
\begin{align*}
(-m)+m &= m+(-m) && \text{by Ax 1.1 (i)} \\
&= 0 && \text{by Ax 1.4}
\end{align*}
\end{document}
答案2
我们仍然可以align
通过两种方式使用该环境:
- 为了方便使用,该
makebox
包引入了一个\makebox*
带有两个参数的命令:第一个参数是定义包含第二个参数的框的宽度的文本。我用它来定义一个\oversetto
带有 3 个参数的命令,第一个(可选)参数定义框的宽度\overset
。 - 更系统的使用需要
eqparbox
包:其\eqmakebox
命令具有与(无星号)相同的参数\makebox
,以及第三个(可选)参数,即标签。共享相同标签的文档的所有 \eqparbox 的宽度将等于最宽的宽度。
以下是两种方式的示例:
\documentclass[12pt]{article}
\usepackage[margin=1cm]{geometry}
\usepackage{mathtools,amssymb}
\usepackage{eqparbox}
\usepackage{makebox}
\newcommand\textoverset[3][]{\mathrel{\overset{\scriptsize{\eqmakebox[#1]{#2}}}{#3}}}
\newcommand\oversetto[3][]{\overset{\text{\makebox*{#1}{#2}}}{#3}}
\thispagestyle{empty}
\begin{document}
{\bfseries With \verb+\overset+: }
\begin{align*}
x_1 + x_2
&\overset{\text{some text}}= 2y³ \leq\\
&\overset{\text{some longer text}}\leq 3z
\end{align*}
{\bfseries With \verb+\textoverset+:}
\begin{align*}%over
x_1 + x_2 & \textoverset[O]{some text}{=} 2y³ \leq\\
y_i + y_2 & \textoverset[O]{some longer text}{\leq} 3z
\end{align*}
{\bfseries With \verb+\oversetto+ :}
\begin{align*}
x_1 + x_2 & \oversetto[Some longer text]{some text}{=}2y³ \leq \\
y_i + y_2 & \overset{\text{some longer text}}{\leq} 3z
\end{align*}
\end{document}
答案3
eqnarray
这可能是使用(或者如果您不想要编号方程式)可能合适的情况之一eqnarray*
(一般eqnarray
不推荐使用)。
\begin{eqnarray*}
(-m)+m & \stackrel{\mathrm{Ax 1.1 (i)}}{=}& m+(-m)\\
& \stackrel{\mathrm{Ax 1.4}}{=}& 0 \\
& \stackrel{\mathrm{Ax 1.4 (iiii)}}{=}& 0
\end{eqnarray*}
最终,可以使用\mathclap{}
包来mathtools
改善周围的间距=
。
\begin{eqnarray*}
(-m)+m & \stackrel{\mathclap{\mathrm{Ax 1.1 (i)}}}{=}& m+(-m)\\
& \stackrel{\mathclap{\mathrm{Ax 1.4}}}{=}& 0
\end{eqnarray*}
或者也可以=
使用
\bgroup\arraycolsep=1.4pt
\begin{eqnarray*}
(-m)+m & \stackrel{\mathrm{Ax 1.1 (i)}}{=}& m+(-m)\\
& \stackrel{\mathrm{Ax 1.4}}{=}& 0
\end{eqnarray*}
\egroup