I have a table which contains images in one column. I would like the first column to have text centred vertically and horizontally. I would like the second column to have text left justified and centred vertically. I would like the third column to contain a small image centred vertically and horizontally. The final two columns should both be left justified and aligned at the top of the cell.
The closest I have come to this is with the code below:
\documentclass[10pt]{article}
\usepackage{tikz}
\usepackage{array}
\usepackage{booktabs}
\newcommand*{\tabbox}[4][t]{%
\vspace{#3}\parbox[#1][3.7\baselineskip]{#2}{\strut#4\strut}}
\begin{document}
\begin{tabular}{c p{2cm} c p{3cm} p{3cm}}
\toprule
\multicolumn{1}{c}{Header 1} &
\multicolumn{1}{c}{Header 2} &
\multicolumn{1}{c}{Header 3} &
\multicolumn{1}{c}{Header 4} &
\multicolumn{1}{c}{Header 5} \\
\midrule
Short Text &
Slightly Longer Text &
\tabbox[t]{3cm}{0pt}{
\begin{tikzpicture}
% Draw beam and end lines
\draw (-1.5,-0.75) rectangle (1.5,0.75) ;
\end{tikzpicture}
}
&
Some text that extends onto more than one line as there's plenty of it. &
Some text that extends onto more than one line as there's plenty of it. Some text that extends onto more than one line as there's plenty of it. \\
Short Text &
Slightly Longer Text &
\tabbox[t]{3cm}{0pt}{
\begin{tikzpicture}
% Draw beam and end lines
\draw (-1.5,-0.75) rectangle (1.5,0.75) ;
\end{tikzpicture}
} &
Short Text & \\
Short Text & Slightly Longer Text & Short Text & Short Text & \\
Short Text & Slightly Longer Text & Short Text & Short Text & \\
\bottomrule
\end{tabular}
\end{document}
This is partly based on the advice here. The 'm' column specifier doesn't seem to have any effect on the first column. Also the picture is not automatically accommodated by the table cell vertically.
How can I achieve the effect I want?
Edit
Here is another attempt which almost works based on the advice in this question
\documentclass[10pt]{article}
\usepackage{tikz}
\usetikzlibrary{calc}
\usepackage{array}
\usepackage{booktabs}
\begin{document}
\begin{tabular}{c p{2cm} p{3cm} p{3cm} p{3cm}}
\toprule
\multicolumn{1}{c}{Header 1} &
\multicolumn{1}{c}{Header 2} &
\multicolumn{1}{c}{Header 3} &
\multicolumn{1}{c}{Header 4} &
\multicolumn{1}{c}{Header 5} \\
\midrule
Short Text &
Slightly Longer Text &
\begin{tikzpicture}[baseline={($(current bounding box.center)+(0,-0.5ex)$)}]
% Draw beam and end lines
\draw (-1.5,-0.75) rectangle (1.5,0.75) ;
\useasboundingbox (current bounding box.north west) ++(0,1ex) (current bounding box.south east) ++(0,-1ex);
\end{tikzpicture}
&
Some text that extends onto more than one line as there's plenty of it. &
Some text that extends onto more than one line as there's plenty of it. Some text that extends onto more than one line as there's plenty of it. \\
Short Text &
Slightly Longer Text &
\begin{tikzpicture}[baseline={($(current bounding box.center)+(0,-0.5ex)$)}]
% Draw beam and end lines
\draw (-1.5,-0.75) rectangle (1.5,0.75) ;
\useasboundingbox (current bounding box.north west) ++(0,1ex) (current bounding box.south east) ++(0,-1ex);
\end{tikzpicture}
&
Short Text & \\
Short Text & Slightly Longer Text & Short Text & Short Text & \\
Short Text & Slightly Longer Text & Short Text & Short Text & \\
\bottomrule
\end{tabular}
\end{document}
\tabbox
command? It seems to me that this messes up the vertical alignment of the picture column. Also, do you want to includetikzpicture
s, or images you load usingincludegraphics
, or both? – Jake Nov 1 '11 at 0:02\tabbox
command as suggested in the link to another StackExchange in the question (here). If I comment it out, the effect is still not as I want though. In this case I do want to use tikzpictures and have found some info on this in this question. I have added my latest attempt based on this above, but it's still not right. I would also like a more general solution that would work for other images in the future. – crobar Nov 1 '11 at 8:59