[Tex/LaTex] Centre vertically rotated text in table

rotatingtablesvertical alignment

So far I've a table with rotated text but it's appearing at the very top as you can see. I want the text in column 1 to be vertically centred in it's cell. The code I have is below.
Result

\documentclass[11pt]{article}

\usepackage{booktabs}
\usepackage{graphicx}
\usepackage{lipsum}

\newcommand{\tableheader}[1]{\textbf{#1}}

\begin{document}
\begin{table*}
    \centering
    \begin{tabular}{cll}
        \toprule
        \tableheader{Type} & \tableheader{Advantages} & \tableheader{Disadvantages} \\
        \midrule
        \rotatebox[origin=c]{90}{\shortstack[l]{Foo\\ Bar}} 
        &
        \begin{minipage}[t]{0.4\linewidth}
            \lipsum[34]
        \end{minipage}
        &
        \begin{minipage}[t]{0.4\linewidth}
            \lipsum[34]
        \end{minipage}
        \\
    \end{tabular}
\end{table*}

\end{document}

EDIT: The vertical text also added extra space in all columns too, how do I remove that?

Best Answer

Try with column type m{...} from array package:

\documentclass[11pt]{article}

\usepackage{array,booktabs}
\usepackage{graphicx}
\usepackage{lipsum}

\newcommand{\tableheader}[1]{\textbf{#1}}

\begin{document}
\begin{table*}
    \centering
    \begin{tabular}{c*{2}{m{0.4\linewidth}}}
        \toprule
        \tableheader{Type} & \tableheader{Advantages} & \tableheader{Disadvantages} \\
        \midrule
\rotatebox{90}{\shortstack[l]{Foo\\ Bar}}
        &
            \lipsum[34]
        &
            \lipsum[34] \\
    \bottomrule
    \end{tabular}
\end{table*}
    \end{document}

With use of m{...} column types for second and third column, you not need minipages for multi line cells in table. enter image description here

Related Question