3

I need to create similar table using LaTeX:

Table with multirows, multicolumns, and a combination of both

I have tried to use \tabular and \multicolumn, but every time I get something wrong.

Could someone help me?

\begin{table}[!ht]
\small
\begin{tabular}{ | l | l | l | l | l | l | l | l | l | l | l | l | l | }
\hline
\multirow{3}{*}{Header 1 \\&\multirow{2}{*}{Header 2} &  &  & Header 3 \\&  &  &  &     &  &  &  &  \\ \hline
 &  &  &  & L1 &  & L2 &  & L3 &  &  &  &  \\ \hline
 & \multicolumn{2}{c}{H1} & \multicolumn{2}{c}{H2} & \multicolumn{2}{c}{H3} & M1 &     M2 & S1 & S2 & K1 & K2 &  &  &  \\ \hline
 T1 & 2 & 0 & 0 & 5 & 2 & 2 & . & 0 & . &  &  &  \\ \hline
 T2 & 2 & 1 & 1 & 2 & 2 & 1 & 1 & 1 & 1 &  &  &  \\ \hline
 T3 & 2 & 3 & 1 & 4 & 0 & 2 & 1 & 1 & 1 &  &  &  \\ \hline
 T4 & 18 & 0 & 0 & 2 & 2 & 4 & . & 0 & . &  &  &  \\ \hline
 T5 & 5 & 0 & 0 & 3 & 3 & 1 & . & 0 & . &  &  &  \\ \hline
 T6 & 4 & 0 & . & 1 & 1 & 1 & . & 1 & 0 & \  & \  & \  \\ \hline
 T7 & 1 & 0 & 1 & 1 & 1 & 1 & . & 1 & 1 & \  & \  & \  \\ \hline
 T8 & 4 & 0 & . & 1 & 1 & 1 & . & 1 & 0 & \  & \  & \  \\ \hline
 \end{tabular}
 \end{table}
2
  • 4
    What have you tried and what goes wrong? Please post some minimal working example and we can help you out. By the way using multicolumns and multirows this problem should have already some answers in other threads here.
    – Trefex
    Commented Apr 21, 2014 at 14:57
  • 1
    Welcome to TeX.SX! Please help us to help you and add a minimal working example (MWE) that illustrates your problem. It will be much easier for us to reproduce your situation and find out what the issue is when we see compilable code, starting with \documentclass{...} and ending with \end{document}.
    – cfr
    Commented Apr 21, 2014 at 15:05

3 Answers 3

5

Here are two approaches. The first uses the standard tabular aesthetic with vertical rules. The second follows the guidelines provided by booktabs which dispenses with vertical rules. See the documentation for further information.

\documentclass{article}
\usepackage{multirow,array,booktabs}
\begin{document}
\begin{table}
\begin{tabular}{|>{\bfseries}c|*{9}{c|}}
    \hline
      \multirow{3}*{\bfseries Header 1} &   \multicolumn{3}{c|}{\multirow{2}*{\bfseries Header 2}}  &   \multicolumn
{6}{c|}{\bfseries Header 3}\\\cline{5-10}
      &     \multicolumn{3}{c|}{}   &   \multicolumn{2}{c|}{\bfseries H1}   &   \multicolumn{2}{c|}{\bfseries H2}   &   \multicolumn{2}{c|}{\bfseries H3}\\\cline{2-10}
      & \bfseries L1    &   \bfseries L2    &   \bfseries L3    &   \bfseries M1    &   \bfseries M2    &   \bfseries S1    &   \bfseries S2    &   \bfseries K1    &   \bfseries K2\\\hline
     T1 & 2 & 0 & 0 & 5 & 2 & 2 & . & 0 & .  \\ \hline
     T2 & 2 & 1 & 1 & 2 & 2 & 1 & 1 & 1 & 1  \\ \hline
     T3 & 2 & 3 & 1 & 4 & 0 & 2 & 1 & 1 & 1  \\ \hline
     T4 & 18 & 0 & 0 & 2 & 2 & 4 & . & 0 & . \\ \hline
     T5 & 5 & 0 & 0 & 3 & 3 & 1 & . & 0 & .  \\ \hline
     T6 & 4 & 0 & . & 1 & 1 & 1 & . & 1 & 0  \\ \hline
     T7 & 1 & 0 & 1 & 1 & 1 & 1 & . & 1 & 1  \\ \hline
     T8 & 4 & 0 & . & 1 & 1 & 1 & . & 1 & 0  \\ \hline
\end{tabular}
\end{table}
\begin{table}
\begin{tabular}{>{\bfseries}c*{9}{c}}
    \toprule
      \multirow{3}*{\bfseries Header 1} &   \multicolumn{3}{c}{\multirow{2}*{\bfseries Header 2}}   &   \multicolumn
{6}{c}{\bfseries Header 3}\\\cmidrule{5-10}
      &     \multicolumn{3}{c}{}    &   \multicolumn{2}{c}{\bfseries H1}    &   \multicolumn{2}{c}{\bfseries H2}    &   \multicolumn{2}{c}{\bfseries H3}\\\cmidrule{2-10}
      & \bfseries L1    &   \bfseries L2    &   \bfseries L3    &   \bfseries M1    &   \bfseries M2    &   \bfseries S1    &   \bfseries S2    &   \bfseries K1    &   \bfseries K2\\\midrule
     T1 & 2 & 0 & 0 & 5 & 2 & 2 & . & 0 & .  \\ \midrule
     T2 & 2 & 1 & 1 & 2 & 2 & 1 & 1 & 1 & 1  \\ \midrule
     T3 & 2 & 3 & 1 & 4 & 0 & 2 & 1 & 1 & 1  \\ \midrule
     T4 & 18 & 0 & 0 & 2 & 2 & 4 & . & 0 & . \\ \midrule
     T5 & 5 & 0 & 0 & 3 & 3 & 1 & . & 0 & .  \\ \midrule
     T6 & 4 & 0 & . & 1 & 1 & 1 & . & 1 & 0  \\ \midrule
     T7 & 1 & 0 & 1 & 1 & 1 & 1 & . & 1 & 1  \\ \midrule
     T8 & 4 & 0 & . & 1 & 1 & 1 & . & 1 & 0  \\\bottomrule
\end{tabular}
\end{table}
\end{document}

A Tale of Two Tables

Here are another couple of possibilities using booktabs in light of Manuel's comment. The first trims the rules within the tabular, leaving only the main \midrule division at the full table width:

\documentclass{article}
\usepackage{multirow,array,booktabs}
\begin{document}
\begin{table}
\begin{tabular}{>{\bfseries}c*{9}{c}}
    \toprule
      \multirow{3}*{\bfseries Header 1} &   \multicolumn{3}{c}{\multirow{2}*{\bfseries Header 2}}   &   \multicolumn
{6}{c}{\bfseries Header 3}\\\cmidrule(lr){5-10}
      &     \multicolumn{3}{c}{}    &   \multicolumn{2}{c}{\bfseries H1}    &   \multicolumn{2}{c}{\bfseries H2}    &   \multicolumn{2}{c}{\bfseries H3}\\\cmidrule(lr){2-4}\cmidrule(lr){5-6}\cmidrule(lr){7-8}\cmidrule(lr){9-10}
      & \bfseries L1    &   \bfseries L2    &   \bfseries L3    &   \bfseries M1    &   \bfseries M2    &   \bfseries S1    &   \bfseries S2    &   \bfseries K1    &   \bfseries K2\\\midrule
     T1 & 2 & 0 & 0 & 5 & 2 & 2 & . & 0 & .  \\ \cmidrule(lr){1-10}
     T2 & 2 & 1 & 1 & 2 & 2 & 1 & 1 & 1 & 1  \\ \cmidrule(lr){1-10}
     T3 & 2 & 3 & 1 & 4 & 0 & 2 & 1 & 1 & 1  \\ \cmidrule(lr){1-10}
     T4 & 18 & 0 & 0 & 2 & 2 & 4 & . & 0 & . \\ \cmidrule(lr){1-10}
     T5 & 5 & 0 & 0 & 3 & 3 & 1 & . & 0 & .  \\ \cmidrule(lr){1-10}
     T6 & 4 & 0 & . & 1 & 1 & 1 & . & 1 & 0  \\ \cmidrule(lr){1-10}
     T7 & 1 & 0 & 1 & 1 & 1 & 1 & . & 1 & 1  \\ \cmidrule(lr){1-10}
     T8 & 4 & 0 & . & 1 & 1 & 1 & . & 1 & 0  \\\bottomrule
\end{tabular}
\end{table}
\end{document}

Table with Trimmed Midrules

This removes the midrules from the main part of the table altogether:

\documentclass{article}
\usepackage{multirow,array,booktabs}
\begin{document}
\begin{table}
\begin{tabular}{>{\bfseries}c*{9}{c}}
    \toprule
      \multirow{3}*{\bfseries Header 1} &   \multicolumn{3}{c}{\multirow{2}*{\bfseries Header 2}}   &   \multicolumn
{6}{c}{\bfseries Header 3}\\\cmidrule(lr){5-10}
      &     \multicolumn{3}{c}{}    &   \multicolumn{2}{c}{\bfseries H1}    &   \multicolumn{2}{c}{\bfseries H2}    &   \multicolumn{2}{c}{\bfseries H3}\\\cmidrule(lr){2-4}\cmidrule(lr){5-6}\cmidrule(lr){7-8}\cmidrule(lr){9-10}
      & \bfseries L1    &   \bfseries L2    &   \bfseries L3    &   \bfseries M1    &   \bfseries M2    &   \bfseries S1    &   \bfseries S2    &   \bfseries K1    &   \bfseries K2\\\midrule
     T1 & 2 & 0 & 0 & 5 & 2 & 2 & . & 0 & .  \\
     T2 & 2 & 1 & 1 & 2 & 2 & 1 & 1 & 1 & 1  \\
     T3 & 2 & 3 & 1 & 4 & 0 & 2 & 1 & 1 & 1  \\
     T4 & 18 & 0 & 0 & 2 & 2 & 4 & . & 0 & . \\
     T5 & 5 & 0 & 0 & 3 & 3 & 1 & . & 0 & .  \\
     T6 & 4 & 0 & . & 1 & 1 & 1 & . & 1 & 0  \\
     T7 & 1 & 0 & 1 & 1 & 1 & 1 & . & 1 & 1  \\ 
     T8 & 4 & 0 & . & 1 & 1 & 1 & . & 1 & 0  \\\bottomrule
\end{tabular}
\end{table}
\end{document}

Ruleless Table

5
  • 3
    @user50283 No problem. Once you posted your code, it wasn't difficult to tidy up the headings. But note for future reference that a Minimal Working Example should start with \documentclass and end with \end{document}. That way, people can see which packages you are using, for example. (Your code won't compile without multirow being loaded, for instance.)
    – cfr
    Commented Apr 21, 2014 at 15:30
  • Just a comment. I think (if I haven't misunderstood the documentation) that the \midrules aren't intended for that use, in fact just to separate “parts” of a table: in this case, just to separate the “header” from the table (i.e., just the first \midrule should stay, all the others shouldn't be necessary).
    – Manuel
    Commented Apr 21, 2014 at 15:55
  • @Manuel You may be right so I've added an example of that kind. I think it makes the table more difficult to read, though, so I've also added an example using trimmed midrules which I think maybe works best. But I'm not at all sure about this...
    – cfr
    Commented Apr 21, 2014 at 18:07
  • @cfr I also think it's less readable. I was just pointing out the “correct use” (in my humble opinion, after reading the documentation) of \midrule. May be there should be another kind of “hrule” for those who doesn't want to follow the “no horizontal lines”. Anyway, I don't completely agree with that norm.
    – Manuel
    Commented Apr 21, 2014 at 18:17
  • @Manuel \cmidrule is definitely designed for additional use and there are examples in the documentation - at least of its use in headers. Besides, much though I like booktabs, it can be a little overly dogmatic at times... ;) Thanks for the comment, though - I'd forgotten about the trimming possibilities offered by the package.
    – cfr
    Commented Apr 21, 2014 at 19:08
1

Here is another option using tap. It may break some things, since it's not pure “LaTeX” but with care you have a beautifully typeset table.

tap, tap, tap.

\documentclass{scrartcl}
\input{tap}
\begin{document}
\begintable
    \begintableformat
        & \center
    \endtableformat
    \=
    \B!:                   | @3                                      | @6 \textbf{Header 3}                                                              \E!
    \B!-                   | @3 \textbf{Header 2}                    | @6 \-                                                                             \E!
    \B!: \textbf{Header 1} | @3                                      | @2 \textbf{H1}            | @2 \textbf{H2}            | @2 \textbf{H3}            \E!
    \B!-                   | @9 \-                                                                                                                       \E!
    \B!:                   | \textbf{L1} | \textbf{L2} | \textbf{L3} | \textbf{M1} | \textbf{M2} | \textbf{S1} | \textbf{S2} | \textbf{K1} | \textbf{K2} \E!
    \-
    \B!: \textbf{T1}       | 2           | 0           | 0           | 5           | 2           | 2           | .           | 0           | .           \E!
    \-
    \B!: \textbf{T2}       | 2           | 1           | 1           | 2           | 2           | 1           | 1           | 1           | 1           \E!
    \-
    \B!: \textbf{T3}       | 2           | 3           | 1           | 4           | 0           | 2           | 1           | 1           | 1           \E!
    \-
    \B!: \textbf{T4}       | 18          | 0           | 0           | 2           | 2           | 4           | .           | 0           | .           \E!
    \-
    \B!: \textbf{T5}       | 5           | 0           | 0           | 3           | 3           | 1           | .           | 0           | .           \E!
    \-
    \B!: \textbf{T6}       | 4           | 0           | .           | 1           | 1           | 1           | .           | 1           | 0           \E!
    \-
    \B!: \textbf{T7}       | 1           | 0           | 1           | 1           | 1           | 1           | .           | 1           | 1           \E!
    \-
    \B!: \textbf{T8}       | 4           | 0           | .           | 1           | 1           | 1           | .           | 1           | 0           \E!
    \=
\endtable
\end{document}
1

Here is a way of doing. It uses the makecell package, to define common formatting of row and column heads and better vertical spacing than in basic LaTeX:

\documentclass{article}

\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage{array, multirow,  makecell} 
\renewcommand\theadfont{\rmfamily\bfseries}
\newcommand\multicolthead[3]{\multicolumn{#1}{#2}{\thead{#3}}}

\begin{document}

\begin{table}[!ht]
\small\sffamily
\begin{tabular}{ |*{12}{c|} }
\hline%\multirow{2}{*}{Header 2}
\multirowthead{3}[0.5ex]{Header 1} & \multicolumn{3}{c|}{\multirowthead{2}[-0.9ex]{Header 2}}& \multicolthead{6}{c|}{ Header 3} \\
\cline{5-10}
& \multicolumn{3}{c|}{} &\multicolthead{2}{c| }{H1} & \multicolthead{2}{c|}{H2} & \multicolthead{2}{c|}{H3} \\
\cline{2-10}
  & \thead{L1} & \thead{L2} & \thead{L3} & \thead{M1} & \thead{M2} & \thead{S1} & \thead{S2} & \thead{K1} & \thead{K2} \\ \hline
 \thead{T1} & 2 & 0 & 0 & 5 & 2/2 & 2 & -- & 0 & -- \\ \hline
 \thead{T2} & 2 & 1 & 1 & 2 & 2/2 & 1 & 1/1 & 1 & 1/1 \\ \hline
 \thead{T3} & 2 & 3 & 1 & 4 & 0 & 2 & 1/3 & 1 & 1/1 \\ \hline
 \thead{T4} & 18 & 0 & 0 & 2 & 2/8 & 4 & -- & 0 & -- \\ \hline
 \thead{T5} & 5 & 0 & 0 & 3 & 3/5 & 1 & -- & 0 & -- \\ \hline
 \thead{T6} & 4 & 0 & -- & 1 & 1/4 & 1 & -- & 1 & 0 \\ \hline
 \thead{T7} & 1 & 0 & 1 & 1 & 1/1 & 1 &--. & 1 & 1/1 \\ \hline
 \thead{T8} & 4 & 0 & -- & 1 & 1 & 1/4 & -- & 1 & 0 \\ \hline
 \end{tabular}
 \end{table}

\end{document} 

enter image description here

1
  • 1
    You have a spurious space in T 2 ;).
    – cfr
    Commented Apr 21, 2014 at 18:09

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .