我有几个自定义环境,希望能够使用\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}
段落框会填充右边距的其余选项卡。