TransWikia.com

Table with multiple lines in some cells

TeX - LaTeX Asked on April 18, 2021

What is the easiest way to have 2 lines in some of the cells in a table?

The only way I can think right now is to actually have 2 separate rows (without the line in the middle) and use multirow on all other cells in this row. Any easier ideas?

8 Answers

You could nest a tabular within another tabular:

enter image description here

documentclass{article}
begin{document}
begin{tabular}{cccc}
  One & Two & Three & Four 
  Een & Twee & Drie & Vier 
  One & Two & 
    begin{tabular}{@{}c@{}}Three  Drieend{tabular}
  & Four
end{tabular}
end{document}

The use of @{}..@{} voids the additional space (horizontal tab separation) inserted by the nested tabular.

Also, the above example inserts the nested tabular vertically centered with respect to the row. If you want it top or bottom aligned, use the optional parameter to tabular: begin{tabular}[t].. or begin{tabular}[b]....

Note that this approach also works within math mode for an array.

Correct answer by Werner on April 18, 2021

The easiest way is to use shortstack but it is not very flexible.

documentclass{article}

begin{document} 
begin{tabular}{ccc}
    one & two & three 
    one & two & shortstack{aa  bb}

end{tabular}
end{document}

shortstack takes an option to align content left [l], right [r], or center [c](default). Another idea is to use parbox[t]{5cm}{aabb} because it provides options to align the lines vertically.

Answered by Christian Lindig on April 18, 2021

here are some cell definitions that i've used to good effect in situations where the content of table cells was essentially text:

newcommand{lcell}[2][1.2in]{%
  $vcenter{hsize#1baselineskip11ptvspace*{3pt}raggedright#2strutpar}$}
newcommand{slcell}[2][1.2in]{%
  $vcenter{hsize#1baselineskip9.5ptvspace*{3pt}raggedright#2strutpar}$}
newcommand{ccell}[2][.42in]{%
  $vcenter{hsize#1baselineskip11ptvspace*{3pt}centering#2strutpar}$}

the job(s) involved had usepackage{array} to get the augmented facilities.

of course, the dimensions were specific to the job, and would need to be changed depending on the circumstances; and fine tuning was definitely needed in the actual jobs involved. type was assumed to be 10pt for lcell and ccell or 8pt for slcell; i also setlength{extrarowheight}{1pt} to keep the tops of cell content from crashing into lines above, and the strut assures consistent clearance below.

line breaks in cells were usually manual (though they needn't be), with break, and if a continuation line should be indented in a left-aligned cell, an hspace* would be needed. the par at the end ensures that the specified baseline is observed.

to me, multi-line text content of cells looks much better with "normal" text baseline settings than it does with the usual table row separation.

for table headings, vertical centering of multiple lines doesn't look so good; they look better aligned at the bottom. here's the definition i used for that:

newcommand{thead}[2][.75in]{%
  vbox{hsize#1baselineskip11ptcenteringvspace*{3pt}#2par}}

some of these headings ran to four or more lines (complicated headings above narrow columns of numbers). the results were actually quite respectable.

Answered by barbara beeton on April 18, 2021

When using a p-type column, one can set the width of a column:

By default, if the text in a column is too wide for the page, LaTeX won’t automatically wrap it. Using p{'width'} you can define a special type of column which will wrap-around the text as in a normal paragraph. You can pass the width using any unit supported by LaTeX, such as 'pt' and 'cm'...

The p column does not only allow text to be automatically broken in multiple lines depending on the size of the column as given, it also allows for the use of newline in the tabular environment:

begin{tabular}{l|p{15mm}}
  hline
  foo & bar newline rlz 
  hline
end{tabular}

Which gives:
example of p-type column

Answered by Francesquini on April 18, 2021

You can also put minipages in your cells. Its especially interesting if you have a whole text in a cell and you want it to make linebreaks by its own.

e.g.

begin{tabular}{|l|l|} hline
begin{minipage}{5mm} ~ foo  bar  end{minipage} & foo  hline
foo & bar  hline
end{tabular}

Answered by RedPirat on April 18, 2021

Why Not partition your text into two rows just donot put the hline between the rows, something like this:

begin{table}[!h]
centering
begin{tabular}{|c|c|c|}
hline
A & B &C
D & E &F
hline
G & H & I
hline
end{tabular} 
end{table}

Answered by OAH on April 18, 2021

The array function works like a charm. I have extra functions in here that are not necessary for answering the above question such as the resizebox - needed to fit all my words on the pdf page, begin{figure} - I want the table centered with a caption and I know putting the table in a figure will do this, bullet just makes a bullet for a list, textrm just makes text non-italic while in math mode (i.e. while in between $ $). copy and paste in texmaker, it works.

begin{figure}[h]
centering

resizebox{textwidth}{!}{%

begin{tabular}{|c|c|c|}
hline
Methods & Pros & Cons
hline
Anharmonic DC SQUID & $begin{array}{l}
bullet textrm{ Fast readout}  
bullet textrm{ Accessible equipment}
end{array}$ & 
$begin{array}{l}
bullet textrm{ Large currents}  
bullet textrm{ Requires knowledge of other junction}
bullet textrm{ Not decoupled from apparatus}
end{array}$
hline
end{tabular}
}
end{figure}

Answered by PhysicsIsHard on April 18, 2021

I know this is already answered but there this might add to some persons usecase.

Another possible solution (my preferred one in my use-cases so far as I wanted full control to what comes in which line while being as concise as possible) is using the makecell package which would make it possible to have multi-line cells by using:

begin{tabular}{lll}
    & some & information & more &
    & info & makecell{ line1  line2 }  &  blubb&
end{tabular}

Answered by Wolfone on April 18, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP