将列居中对齐

将列居中对齐

我的文档中有以下类型的代码:

\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

相关内容