如何将每个单元格的内容置于中间列的中心?我用 来近似\phantom
,但一定有更好的方法。
\begin{alignat*}{3}
&E&\quad&\mathrm{par}&&\quad\Sigma,\\
&\Psi&\quad&\phantom{p}\mathrm{"}\phantom{r}&&\quad\frac{\epsilon V}{1+4\pi\epsilon F},\\
&\Psi&\quad&\phantom{p}\mathrm{"}\phantom{r}&&\quad\frac{(1+4\pi\epsilon F)^2}{\epsilon}.
\end{alignat*}
谢谢
答案1
该环境的核心alignat
是建立在 TeX 的 之上\halign
。在该环境中,您可以通过发出 来忽略给定列的格式规范\omit
。因此编写
\omit\hfill text \hfill
将为您提供居中的文本列,因为列规范不仅包括左/右对齐,还将材料设置为数学。最好创建一个单独的命令来提供此构造,然后可以在单元格开头的任何地方或类似环境alignat
中使用该命令:align
\documentclass{article}
\usepackage{amsmath}
\newcommand{\ditto}{{''}}
\newcommand{\ccol}[1]{\omit\hfill #1\hfill}
\begin{document}
\begin{alignat*}{3}
&E&\quad&\ccol{par}&\quad&\Sigma,\\
&\Psi&&\ccol{\ditto}&&\frac{\epsilon V}{1+4\pi\epsilon F},\\
&\Psi&&\ccol{\ditto}&&\frac{(1+4\pi\epsilon F)^2}{\epsilon}.
\end{alignat*}
\begin{align}
E &= mc^2\\
F &\ccol{is another quantity}\\
G &= u^2 + v^2 - w^2 + x^2 - y^2 + z^2
\end{align}
\end{document}
如果您希望跨越多列,相关命令是\multispan
,例如\multispan{3}\hfill text \hfill
将文本分布在三列并居中。
或者,正如 Harish Kumar 建议的那样,您可以使用array
或tabular
:
\documentclass{article}
\usepackage{amsmath}
\newcommand{\ditto}{{''}}
\begin{document}
\begin{equation*}
\begin{array}{r@{\quad}c@{\quad}l}
E&\mathrm{par}&\Sigma,\\
\Psi&\mathrm{\ditto}&\displaystyle\frac{\epsilon V}{1+4\pi\epsilon F},\\
\Psi&\mathrm{\ditto}&\displaystyle\frac{(1+4\pi\epsilon F)^2}{\epsilon}.
\end{array}
\end{equation*}
\begin{center}
\begin{tabular}{r@{\quad}c@{\quad}l}
\( E \)&par&\( \Sigma, \)\\
\( \Psi \)&\ditto&\( \displaystyle\frac{\epsilon V}{1+4\pi\epsilon F}, \)\\
\( \Psi \)&\ditto&\( \displaystyle\frac{(1+4\pi\epsilon F)^2}{\epsilon}. \)
\end{tabular}
\end{center}
\end{document}
但是,默认行距alignat
更好,您不需要担心调整数学样式。