How to code tables with multi-line cells

95,129

Solution 1

Use the p column descriptor:

Change

\begin{tabular}{lll} 

to

\begin{tabular}{llp{5cm}}

To explicitly insert line-breaks:

CCCCCCCC  & DDDD & \parbox{5cm}{Betty Botter Thought: \\ If I Put This Bitter Butter in My Batter it Will Make My Batter Bitter}

Solution 2

This is the answer I found so far for my needs: Link here.

It creates a new command that will make a table inside a table in a more proper way:

\newcommand{\specialcell}[2][c]{%
\begin{tabular}[#1]{@{}c@{}}#2\end{tabular}}

So, if want to do a forced line break inside a cell like here:

\begin{tabular}{|c|c|c|}
\hline
Foo bar & Foo <forced line break here> bar & Foo bar \\
\hline
\end{tabular}

You will end up using a code like this:

Foo bar & \specialcell{Foo\\bar} & Foo bar \\    % vertically centered
Foo bar & \specialcell[t]{Foo\\bar} & Foo bar \\ % aligned with top rule
Foo bar & \specialcell[b]{Foo\\bar} & Foo bar \\ % aligned with bottom rule

Horizontal alignment can be controlled in the declaration of the new command by changing c@ to l@ or r@

All credit goes to egreg from the Tex forum. Do upvote his answer !

Solution 3

As @aioobe wrote in his answer, in this case one can switch from the left alignment

\begin{tabular}{lll}

to the paragraph alignment, at least in the third column where the custom linebreak must be inserted manually:

\begin{tabular}{llp{.5\textwidth}}

After this edit, one can use the command \par (instead of \newline) to implement the linebreak within the cell.

This code:

\documentclass{article}

\begin{document}

\begin{tabular}{llp{.5\textwidth}}
AAAAAAAAAA & BBBBBBBBBBBBBBB & Betty Botter Bought a Bit of Butter \par but the Butter's Bitter\\
CCCCCCCC & DDDD & Betty Botter Thought: \par If I Put This Bitter Butter in My \par Batter it Will Make My Batter Bitter\\
\end{tabular}

\end{document}

produces the output requested:

screenshot of output

Share:
95,129
lexu
Author by

lexu

Swiss GeekIT trained

Updated on July 08, 2022

Comments

  • lexu
    lexu almost 2 years

    I am trying to write a short paper with LaTeX and need to add a table with 3 columns.

    +-------------+-----------------+--------------------------------------+
    | AAAAAAAAAA  | BBBBBBBBBBBBBBB | Betty Botter Bought a Bit of Butter  |
    |             |                 | but the Butter's Bitter              |
    +-------------+-----------------+--------------------------------------+
    | CCCCCCCC    | DDDD            | Betty Botter Thought:                |
    |             |                 | If I Put This Bitter Butter in My    |
    |             |                 | Batter it Will Make My Batter Bitter |
    +-------------+-----------------+--------------------------------------+
    

    Unfortunately I can't seem to find the correct idiom to do it.


    I tried:

    \begin{tabular}{lll} 
        AAAAAAAAAA  & BBBBBBBBBBBBBBB & Betty Botter Bought a Bit of Butter but 
        the Butter's Bitter  \\
        CCCCCCCC  & DDDD & Betty Botter Thought: \newline If I Put This Bitter Butter in My Batter it Will Make My Batter Bitter
     \end{tabular}
    

    But LaTeX doesn't do any linebreaks or formatting within the cell. I assume I need to tell it to do so.. But how?

  • jja
    jja almost 11 years
    Would there be any way to combine p{} with one of the other column descriptors? Meaning, a way to say that the column that is p{5cm} should be left, right or center aligned?
  • Frizi
    Frizi over 10 years
    @jja as workaround for align-right inside p{}, i am using \hfill on the beginning of each line.
  • Aryadegari
    Aryadegari over 5 years
    To explicitly insert line-breaks \newline can be used.
  • andrew
    andrew almost 3 years
    For anyone else asking about the centered version: tex.stackexchange.com/a/157400/108304