关系符号右对齐

关系符号右对齐

我正在使用alignLaTeX 数学模式提供的环境排版一些表达式。这是我的 MWE:

\documentclass[a4paper,12pt]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{amsmath}
\begin{document}
    \begin{align*}
        a &= b \\
          &\Longrightarrow c \\
          &= d
    \end{align*}
\end{document}

平均能量损失

如果每个关系右侧的表达式能够垂直对齐就好了

a  =  b
  ==> c
   =  d

只需使用align环境中的工具即可——即不使用任何类型的数组,或手动插入空格等\quad。关系的定位方式(左对齐、居中……)对我来说并不重要,只要它看起来好的

提前致谢!

编辑:这里有一个不那么简单的例子,以便感觉哪种解决方案可能比其他解决方案更好。

\documentclass[a4paper,12pt]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{amsmath}
\newcommand{\app}[2]{#1~#2}
\newcommand{\papp}[2]{\left(#1~#2\right)}
\newcommand{\sub}[2]{\left[#1\middle/#2\right]}
\begin{document}
    \begin{align*}
        \app{(\lambda a.\lambda b.\app{\papp{a}{b}}{a})}{F}
                &= \app{(\lambda a.\lambda b.\app{\papp{a}{b}}{a})}{(\lambda x.\lambda y.y)} \\
                &\Rightarrow_{\beta} \lambda b.(\app{\papp{a}{b}}{a})\sub{\lambda x.\lambda y.y}{a} \\
                &= \lambda b.\papp{\papp{a}{b}\sub{\lambda x.\lambda y.y}{a}}{a\sub{\lambda x.\lambda y.y}{a}}
    \end{align*}
\end{document}

在此处输入图片描述

答案1

我建议采用一种基于eqparbox包的方法,它允许使用简单的语法:我定义一个\alignedsymbols命令,带有一个强制参数(要对齐的数学符号),以及一个可选参数:c, l, r;c 是默认值。一个简单的align环境就可以了:

\documentclass[a4paper,12pt]{article}

\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{amsmath}
\usepackage{eqparbox}
\newcommand\alignsymbols[2][c]{\mathrel{\eqmakebox[S][#1]{$#2$}}{}} % optional argument is c (default), l or r

\begin{document}

    \begin{align*}
          a & \alignsymbols{=}b & a & \alignsymbols[l]{=}b & a & \alignsymbols[r]{=} b \\%
           & \alignsymbols{\Longrightarrow}c & & \alignsymbols[l]{\Longrightarrow}c & & \alignsymbols[r]{\Longrightarrow}c \\%
           & \alignsymbols{>}d & & \alignsymbols[l]{>}d & & \alignsymbols[r]{>}d
    \end{align*}

\end{document} 

在此处输入图片描述

答案2

您可以使用alignat*具有优势的array;我看到的关系符号的唯一可能对齐方式是向左对齐,否则等号会从任何地方悬挂下来。

我还建议对你的宏进行一些更改,\papp[\big]在最后一行使用,以便外括号可以增加它们的大小(它们不会对\leftand执行此操作\right)。

\documentclass[a4paper,12pt]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{amsmath,mathtools}

\newcommand{\app}[2]{#1\mspace{6mu}#2}

\DeclarePairedDelimiterX{\papp}[2]{(}{)}{%
  #1\mspace{6mu}#2%
}
\DeclarePairedDelimiterX{\sub}[2]{[}{]}{%
  #1\delimsize/#2%
}

\newcommand{\lrel}[1]{#1{}&&}


\begin{document}

\begin{alignat*}{2}
\app{(\lambda a.\lambda b.\app{\papp{a}{b}}{a})}{F}
  &\lrel{=} \app{(\lambda a.\lambda b.\app{\papp{a}{b}}{a})}{(\lambda x.\lambda y.y)} \\
  &\lrel{\Rightarrow_{\beta}} \lambda b.(\app{\papp{a}{b}}{a})\sub{\lambda x.\lambda y.y}{a} \\
  &\lrel{=} \lambda b.\papp[\big]{\papp{a}{b}\sub{\lambda x.\lambda y.y}{a}}{a\sub{\lambda x.\lambda y.y}{a}}
\end{alignat*}

\end{document}

在此处输入图片描述

答案3

alignat允许指定水平对齐的“宽度”(更确切地说是方程列的数量)

查看原版与alignat*版本之间的差异。

\documentclass[a4paper,12pt]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{amsmath}
\begin{document}
    Original version with \verb+align*+
    \begin{align*}
          a &=               b  \\
           &\Longrightarrow c \\
           &= d
    \end{align*}

 Version with \verb+alignat*+
    \begin{alignat*}{2}
          a &=               & b  \\
           &\Longrightarrow{} &c \\
           &= &d
    \end{alignat*}

\end{document}

在此处输入图片描述

答案4

关系符号右对齐

以下示例使用空白将 移至左侧。假设真实示例左侧\Longrightarrow不止一个,箭头也可能带有注释,否则看起来会好得多。a\Rightarrow

\documentclass[a4paper,12pt]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{amsmath}
\begin{document}
    \begin{align*}
        a &= b \\
          &\mathrel{\hphantom{=}\llap{$\Longrightarrow$}} c \\
          &= d
    \end{align*}
\end{document}

结果

关系符号居中

由于方程式没有编号,方程系统也可以通过 来设置array。关系符号放在中间一列,周围的间距用 明确设置\;

\documentclass[a4paper,12pt]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{amsmath}
\begin{document}
  \begin{gather*}
    \begin{array}{@{}r@{\;}c@{\;}l@{}}
        a &=& b \\
          &\Longrightarrow& c\\
          &=& d
    \end{array}
  \end{gather*}
\end{document}

以结果为中心

单元格设置在\textstyle,但\displaystyle可以明确指定(与此处的简单变量无关):

\documentclass[a4paper,12pt]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{array}
\usepackage{amsmath}
\begin{document}
  \begin{gather*}
    \begin{array}{
      @{}
      >{\displaystyle}r
      @{\;}>{\displaystyle}c@{\;}
      >{\displaystyle}l@{}
    } 
      a &=& b \\  
      &\Longrightarrow& c\\    
      &=& d          
    \end{array}
  \end{gather*}
\end{document}

相关内容