我想制作一个包含三列段落的表格,每列都为右对齐。我只能让它适用于前两列。如果我尝试添加>{\raggedright}
,如下面的注释行所示,我收到以下错误:
! Extra alignment tab has been changed to \cr.
这是我的 MWE:
\documentclass{article}
\usepackage{array}
\newcommand\fox{The quick brown fox jumps.}
\begin{document}
\begin{tabular}{%
>{\raggedright}p{1.5in}%
>{\raggedright}p{1.5in}%
p{1.5in}}
% >{\raggedright}p{1.5in}} % doesn't work in 3rd column
\fox & \fox & \fox \\
\fox & \fox & \fox
\end{tabular}
\end{document}
答案1
如果您使用\tabularnewline
,那么您不需要\arraybackslash
恢复的含义\\
:
\documentclass{article}
\usepackage{array}
\newcommand\fox{The quick brown fox jumps.}
\begin{document}
\begin{tabular}{*{3}{>{\raggedright}p{1.5in}}}%
\fox & \fox & \fox \tabularnewline
\fox & \fox & \fox
\end{tabular}
\end{document}
无关:如果您定义了表格中所有列的宽度,那么您不需要使用tabular*
环境来定义表格宽度,因为它是由列宽决定的。例外情况是,如果您想添加@{\extracolsep{\fill}}
在规定的表格宽度上分布的列。
答案2
添加\arraybackslash
后\raggedright
:
\documentclass{article}
\usepackage{array}
\newcommand\fox{The quick brown fox jumps.}
\begin{document}
\begin{tabular*}{5in}{%
>{\raggedright\arraybackslash}p{1.5in}%
>{\raggedright\arraybackslash}p{1.5in}%
>{\raggedright\arraybackslash}p{1.5in}}% does work in 3rd column :)
\fox & \fox & \fox \\
\fox & \fox & \fox
\end{tabular*}
\end{document}
您可以通过重复同一列 3 次来缩短代码:
\documentclass{article}
\usepackage{array}
\newcommand\fox{The quick brown fox jumps.}
\begin{document}
\begin{tabular*}{5in}{%
*{3}{>{\raggedright\arraybackslash}p{1.5in}}}%
\fox & \fox & \fox \\
\fox & \fox & \fox
\end{tabular*}
\end{document}
答案3
您也可以将其放在\raggedright
后面p
。我刚刚将其用于最后一列,但将其用于其他列也是可以的。有关更多详细信息,请参阅 @DavidCarlisle 在自动检测最后一段并传递给宏。
\documentclass{article}
\usepackage{array}
\usepackage{lipsum}
\newcommand\fox{The quick brown fox jumps.}
\begin{document}
\begin{tabular*}{5in}{%
>{\raggedright}p{1.5in}%
>{\raggedright}p{1.5in}%
p{1.5in}<{\raggedright}}
% >{\raggedright}p{1.5in}} % doesn't work in 3rd column
\lipsum[1] & \lipsum[1] & \lipsum[1] \\
\fox & \fox & \fox
\end{tabular*}
\end{document}