Take the 2-minute tour ×
TeX - LaTeX Stack Exchange is a question and answer site for users of TeX, LaTeX, ConTeXt, and related typesetting systems. It's 100% free, no registration required.

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?

share|improve this question
    
I changed your title to reflect what you are actually asking. –  Willie Wong Oct 30 '10 at 11:55
    
Thanks for the correction! –  kamenyev Oct 30 '10 at 12:07
    
I reworded a sentence from your question to make it a little clearer. Feel free to revert if you prefer the previous version. –  Yossi Farjoun Oct 31 '10 at 12:07
add comment

2 Answers

up vote 20 down vote accepted

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:

alt text

Thank-you for inspiring me to look for this answer. It is a nice question!

share|improve this answer
    
Thank you, this is exactly what I was looking for! And thanks for the quick answer! –  kamenyev Oct 30 '10 at 12:47
    
+1. Good answer with very well written code example. –  Willie Wong Oct 30 '10 at 13:27
    
I'm really surprised that there isn't any of the tabular packages that supports maximum width columns out of the box. –  Florian Jul 30 '13 at 20:46
add comment

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}
share|improve this answer
2  
I don't think that this answers the question. You specify a fixed column width, not a maximal one. –  Hendrik Vogt Dec 10 '10 at 15:30
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.