My problem is that I have many tables in my document with the same layout, and I want to specify the maximum width of a specific column to be 5 cm. I tried with p{5cm} but it make the column fix 5 cm wide and it looks odd with only a short word in it. I want it to be as narrow as possible, and split it into two lines, if it's wider than 5 cm. Is there any solution for my problem?
-
1I changed your title to reflect what you are actually asking.– Willie WongOct 30, 2010 at 11:55
-
I reworded a sentence from your question to make it a little clearer. Feel free to revert if you prefer the previous version.– Yossi FarjounOct 31, 2010 at 12:07
3 Answers
You can do it with varwidth
:
\documentclass{article}
\usepackage{array} % for defining a new column type
\usepackage{varwidth} %for the varwidth minipage environment
\begin{document}
\newcolumntype{M}{>{\begin{varwidth}{4cm}}l<{\end{varwidth}}} %M is for Maximal column
Table with short rows:
\begin{tabular}{|M|}
hello hello hello
\end{tabular}
Same table, with long row:
\begin{tabular}{|M|}
hello hello hello hello hello hello
\end{tabular}
\end{document}
Which compiles to:
Thank-you for inspiring me to look for this answer. It is a nice question!
I suggest to use the column type V
of varwidth
. The output is slightly different from the ouput of Yossi Farjoun (see that question).
\documentclass{article}
\usepackage{array}
\usepackage{varwidth} % must be loaded after array
\begin{document}
Table with short rows:
\begin{tabular}{|V{4cm}|}
hello hello hello
\end{tabular}
\bigskip
Same table, with long row:
\begin{tabular}{|V{4cm}|}
hello hello hello hello hello hello
\end{tabular}
\end{document}
you can also do:
\documentclass{article}
\usepackage{array} % for defining a new column type
\begin{document}
Table with short rows:
\begin{tabular}{|p{4in}|}
hello hello hello
\end{tabular}
Same table, with long row:
\begin{tabular}{|p{2in}|}
hello hello hello hello hello hello
\end{tabular}
\end{document}
-
6I don't think that this answers the question. You specify a fixed column width, not a maximal one. Dec 10, 2010 at 15:30