In addition to considering the methods mentioned in @PeterGrill's answer, you should also consider using a tabularx
environment. It provides a column type called X
, which is (in effect) a p
column -- i.e., it allows line wrapping -- but lets you dispense with the tedium of having to calculate the column widths if you want to make the table fit inside a given width, say, \textwidth
.
You may also want to think about giving your table a more "open" look. In the following screenshot, the first table follows the layout provided in your code (except that a tabularx
environment is used, with a modified X
column type for columns 3 thru 6), whereas the second table achieves the "open" look by getting rid of all vertical rules and using fewer, but well spaced, horizontal rules.
\documentclass{article}
\usepackage{tabularx,ragged2e,booktabs}
\newcolumntype{L}{>{\RaggedRight\arraybackslash}X} % ragged-right version of "X"
\begin{document}
\begin{table}[t]
\caption{Lots of vertical and horizontal rules\strut}
\begin{tabularx}{\textwidth}{|l|r|L|L|L|L|}
\hline
Image & Score & here is a lot of text & again a lot & a lot and a lot & and the same here \\ \hline
a \emph{left} & 1 & 1 & 1 & 1 & 1 \\ \hline
b \emph{right} & 1 &1 & 1 & 1 & 1 \\ \hline
\end{tabularx}
\end{table}
\begin{table}[h]
\caption{No vertical rules; fewer but well-spaced horizontal rules}
\begin{tabularx}{\textwidth}{@{} lrLLLL @{}}
\toprule
Image & Score & here is a lot of text & again a lot & a lot and a lot & and the same here \\ \midrule
a \emph{left} & 1 & 1 & 1 & 1 & 1 \\
b \emph{right} & 1 &1 & 1 & 1 & 1 \\ \bottomrule
\end{tabularx}
\end{table}
\end{document}
p{<width>}
column type, and use a\parbox
for the table content. It would be helpful if you composed a fully compilable MWE that illustrates the problem including the\documentclass
and the appropriate packages as that will help to ensure that the solution actually solves your specific case.