我的尝试是使用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>}
我确信还有其他方法(也许更优雅)。