在自定义环境中使用 hfill 将方程编号右对齐

在自定义环境中使用 hfill 将方程编号右对齐

我有几个自定义环境,希望能够使用\hfill它们来右对齐最后一列(类似于{align}环境对方程标签的操作)。我试图使用,\hfill但似乎在align*, 和tabular环境中被忽略了。

对于表格或类似数组的环境(可能有大量列),我已经添加了\multicolumn{5}{r}{}最后 5 列未使用的情况以跳过它们(并根据列数进行适当调整)。这通常有效,但我必须计算已使用的列数,如果我决定删除一列,我必须调整它。最好不必这样做,而是使用它\hfill来填充行的其余部分并添加最后一列。

所以,我的问题是,在像表格这样的环境中是否有一种简单的方法可以使用\hfill,可以到达纬度列,或者最好是到达页面的右侧。

答案1

您可以使用tabular*和 将\extracolsep{\fill}最后一列移动到右边距,如下所示:

\documentclass[12pt]{article}

\begin{document}

Here's some text. Here's some text. Here's some text. Here's some
text. Here's some text. Here's some text. Here's some text. Here's
some text. Here's some text. Here's some text. Here's some
text. Here's some text.
\begin{center}
  \begin{tabular*}{1.0\linewidth}{@{}ccc@{\extracolsep{\fill}}r@{}}
    One& Two& Three& Number 1\\
    Four& Five& Six& Number 2
  \end{tabular*}
\end{center}

\end{document}

这给你:在此处输入图片描述

(如果您不希望它与左边距齐平,您可以\hskip在首字母后添加一个@{}。)

答案2

您可以查看制表环境以获得相同的效果。定义一个命令\tabright来填充行的其余部分

\documentclass{article}
\makeatletter
\newlength\tdima
\newcommand\tabright[1]{%
      \setlength\tdima{\linewidth}%
      \addtolength\tdima{\@totalleftmargin}%
      \addtolength\tdima{-\dimen\@curtab}%
      \makebox[\tdima][r]{#1}}
\makeatother
\begin{document}
\begin{tabbing}
\hspace*{2cm}\=\hspace{2cm}\=\hspace{2cm}\=\hspace{2cm}\=\kill

One                      \>\tabright{Number 1}\\
One \>Two                \>\tabright{Number 2}\\
One \>Two \>Three        \>\tabright{Number 3}\\
One \>Two \>Three \>Four \>\tabright{Number 4}\\
\end{tabbing}
\end{document}

然后输出 在此处输入图片描述

请注意,这是一个非常有用的宏。如果您将该行更改\makebox[\tdima][r]{#1}为,则\parbox[t]{\tdima}{#1\ifhmode\strut\fi}段落框会填充右边距的其余选项卡。

相关内容