方程中的中心对齐

方程中的中心对齐

我有一组很长的方程式,我把它们放在一个数组中。它们必须按以下方式对齐:

\begin{array}{lclc}
 A     & Long expression              &  \text{\hspace{.5cm}}   & Long expression \\
.
.
.
Z  & Long expression              &  \text{\hspace{.5cm}}   & Long expression \\
\end{array}

这是为了让你知道表达式可以有多长。此外,第二和第四个部分必须居中。我想使用对齐,因为它允许在方程太长的情况下分页,但如果我使用它们,那么对齐的第二和第四个部分就不再居中了。我怎样才能拥有如下结构:

\begin{align}
 A     & Long centered expression              &  \text{\hspace{.5cm}}   & Long centered expression \\
.
.
.
Z  & Long centered expression              &  \text{\hspace{.5cm}}   & Long centered expression \\
\end{align}

我需要对方程式进行编号、居中,如果它们太长的话还可以分成多页。

编辑

我添加一个例子:

\[
\begin{array}{lclc}
 A     & This is a very long expression              &  \text{\hspace{.5cm}}   & Also this is a long expression \\
 B     & Normal             &  \text{\hspace{.5cm}}   & Something \\
Z  & Short              &  \text{\hspace{.5cm}}   & This is even longer expression of before \\
\end{array}
\]

如果您在 TeX 文件上尝试此操作,则第二列和第四列将根据其内容居中。如果我有一个非常长的表达式,那么如果我使用数组,则方程式可能不适合页面,因为它不能分成多个页面。所以我考虑使用 \allowpagebreaks[1] 对齐。但如果我使用

\[
\begin{align}
 A     & This is a very long expression              &  \text{\hspace{.5cm}}   & Also this is a long expression \\
 B     & Normal             &  \text{\hspace{.5cm}}   & Something \\
Z  & Short              &  \text{\hspace{.5cm}}   & This is even longer expression of before \\
\end{align}
\]

您会看到第二列和第四列的对齐是相对于 & 符号的,而不是相对于其内容居中。

我希望这个例子能解释我的问题

答案1

请注意,您不能align在里面。\[最简单和最常见的方法是在表达式中添加对齐点,使它们与对齐点对齐,而不是看起来与左侧或右侧齐平。我在这里添加了 | 以使对齐在输出中可见,但这不是必需的。请注意,即使我删除了 0.5 厘米的间距(没有必要\hspace在里面),示例文本已经太宽,无法放入标准文本块中\text)如果您的文本块更宽或您的实际表达式更小,您当然可以重新添加间距,尽管align已经在每个表达式之间添加了空格(即在每对列之间)

在此处输入图片描述

\documentclass[a4paper]{article}

\usepackage{amsmath}

\begin{document}


\begin{align}
 A     && This isa very&|long expression      & Also this &|is a long expression \\
 B     &&  Normal&|              & Some&|thing \\
Z  &&       Short&|              & This is even &|longer expression of before
\end{align}


\end{document}

答案2

您可以使用 和 来完成此操作alignateqparbox系统会为每个显示器自动生成箱子的标签align-lcc

不'添加尾随的\\, 因为对于align和 朋友来说这是强制性的。

\documentclass{article}
\usepackage{amsmath,eqparbox}

\ExplSyntaxOn

\NewDocumentEnvironment{align-lcc}{b}
 {
  \mininno_align_lcc:n { #1 }
 }
 {}

\seq_new:N \l__mininno_align_body_seq
\seq_new:N \l__mininno_align_row_seq
\tl_new:N \l__mininno_align_body_tl
\int_new:N \g__mininno_align_rows_int

\cs_new_protected:Nn \mininno_align_lcc:n
 {
  \int_gincr:N \g__mininno_align_rows_int
  \tl_clear:N \l__mininno_align_body_tl
  \seq_set_split:Nnn \l__mininno_align_body_seq { \\ } { #1 }
  \seq_map_indexed_function:NN \l__mininno_align_body_seq \__mininno_align_row:nn
  \begin{alignat}{3}
  \tl_use:N \l__mininno_align_body_tl
  \end{alignat}
 }

\cs_new_protected:Nn \__mininno_align_row:nn
 {
  \seq_set_split:Nnn \l__mininno_align_row_seq { & } { #2 }
  \tl_put_right:Nx \l__mininno_align_body_tl { \seq_item:Nn \l__mininno_align_row_seq { 1 } }
  \tl_put_right:Nx \l__mininno_align_body_tl
   {
    \__mininno_align_cell:nn {A}{\seq_item:Nn \l__mininno_align_row_seq { 2 }}
   }
  \tl_put_right:Nx \l__mininno_align_body_tl
   {
    \__mininno_align_cell:nn {B}{\seq_item:Nn \l__mininno_align_row_seq { 3 }}
   }
  \int_compare:nF { #1 == \seq_count:N \l__mininno_align_body_seq }
   { \tl_put_right:Nn \l__mininno_align_body_tl { \\ } }
 }

\cs_new_protected:Nn \__mininno_align_cell:nn
 {
  &\quad&
  \eqmakebox[#1-\int_to_arabic:n {\g__mininno_align_rows_int}][c]{$\displaystyle#2$}
 }

\ExplSyntaxOff


\begin{document}

\begin{align-lcc}
 A & This is a very long expression & Also this is a long expression \\
 B & Normal                         & Something \\
 Z & Short                          & This is even longer expression of before
\end{align-lcc}

\end{document}

其想法是将输入拆分为\\,然后将每一行拆分为&并使用填写\eqmakebox

在此处输入图片描述

相关内容