# Errors with ragged-right justification in tables

My main goal is to disable text justification in tables and just have left-aligned text. I've loaded the array package and defined a custom \newcolumntype like so:

\usepackage{array}
\newcolumntype{x}[1]{>{\raggedright}p{#1}}


When using this in the tabular environment, everything works fine until the last column, when it throws this error:

./temp.tex:96: Misplaced \noalign.
\midrule ->\noalign
{\ifnum 0=}\fi \@aboverulesep =\aboverulesep \global \@...
l.96     \midrule

?


Using \begin{tabular}{@{} x{28mm} x{20mm} x{20mm} p{25mm} @{}} works fine (but throws an underfull \hbox warning) but using \begin{tabular}{@{} x{28mm} x{20mm} x{20mm} x{25mm} @{}} throws the error above.

Why am I not allowed to use my custom column type on the last column? It seems as if I'm missing something obvious to a trivial solution.

With \begin{tabular}{@{} x{28mm} x{20mm} x{20mm} p{25mm} @{}}:

-
Please add a minimal working example (MWE) that illustrates your problem. –  Torbjørn T. Nov 18 '11 at 22:47

It's a known issue. When you say \raggedright, the command \\ is redefined. This causes no harm until you want to terminate a table row: LaTeX finds the \\ as defined by \raggedright which doesn't mean the same thing as normally in tabular. Write

\newcolumntype{x}[1]{>{\raggedright\arraybackslash}p{#1}}


and use \newline if you want to terminate a line in one of the cells. Or use your definition and terminate table rows with \tabularnewline.

-

In addition to the answer by egreg - the command \RaggedRight from ragged2e package does not have this issue. This works:

\usepackage{array},
\usepackage[originalparameters]{ragged2e}  % The option prevents hyphentation rather than making it rare
\newcolumntype{x}[1]{>{\RaggedRight}p{#1}}
`
-