如何对齐文本与上面一行内的文本相对应?

如何对齐文本与上面一行内的文本相对应?

我的尝试是使用tabular

\begin{tabular}{cccc}
   Let & $M_1$ recognize $A_1$, where $M_1 = (Q_1, \Sigma, \delta_1, q_1, F_1)$, & \\
   & $M_2$ recognize $A_2$, where $M_1 = (Q_2, \Sigma, \delta_2, q_2, F_2)$. &
\end{tabular}

Let但是,和之间有几个空格M_1,我该如何去掉这些空格?此外,这是对齐文本的标准方法吗?如果我想要最灵活,即即时编辑,我应该使用哪种方法?

答案1

有很多方法可以做到这一点,这取决于你的偏好,甚至取决于你使用的结构有多大。例如,仍然使用tabular,你可以考虑使用

\begin{tabular}{*{3}{@{}l@{\ }}}
  Let & $M_1$ recognize $A_1$, & where $M_1=(Q_1,\Sigma,\delta_1,q_1,F_1)$, \\
  & $M_2$ recognize $A_2$, & where $M_1=(Q_2,\Sigma,\delta_2,q_2,F_2)$.
\end{tabular}

这将创建 3 个相同的左对齐列(通过*{3}{..l..}),其中每列的格式为@{}l@{\ }。此格式在列之间添加了规则的空格{\ },并删除了每列开头的列分隔符(通过@{})。

水平对齐物品


或者,您可以使用框(和其他结构)来对齐文本组件。以下是示例:

\usepackage{calc}%
...
Let $M_1$ recognize $A_1$, where $M_1=(Q_1,\Sigma,\delta_1,q_1,F_1)$, \\
\phantom{Let} $M_2$ recognize \makebox[\widthof{$A_1$}][c]{$A_2$}, where $M_1=(Q_2,\Sigma,\delta_2,q_2,F_2)$.

虽然有些多余,但我希望它能演示这个原理。你可以使用

\phantom{<stuff>}

排版一个与 大小完全相同的框<stuff>,而无需实际排版<stuff>本身。此外,使用calc包裹\widthof{<stuff>},你可以结合使用来定义特定宽度的框

\makebox[<width>][<horizontal alignment>]{<stuff>}

我确信还有其他方法(也许更优雅)。

相关内容