如何在表格*中变得不正确?

如何在表格*中变得不正确?

我想制作一个包含三列段落的表格,每列都为右对齐。我只能让它适用于前两列。如果我尝试添加>{\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}

相关内容