# How can I draw a horizontal line spanning only some of the table cells?

In a table, how can I draw a horizontal line that goes only through some of the cells? I mean a line like the one in the Foo and in the Bar area of this table:

+----+-----+
|Foo |1 |2 |
|    |1 |2 |
|    +--+--+
|    |1 |2 |
|    |1 |2 |
+----+-----+
|Bar |1 |2 |
|    |1 |2 |
|    +--+--+
|    |1 |2 |
|    |1 |2 |
+----+--+--+

-
If you need a nested table, visit: tex.stackexchange.com/questions/7958/how-to-nest-tables/… – xport Jan 9 '11 at 19:17

Instead of nested tables as xport_is_sleeping suggested, you can also use \cline{2-3} which draws a partial line starting on column 2 and ending on column 3 and use \multirow to center the words Foo and Bar on the lines if that's what you want:

\documentclass{article}
\usepackage{array,multirow}
\begin{document}
\begin{tabular}{|c|cc|}\hline
\multirow{4}{*}{Foo} & 1 & 2 \\
& 1 & 2 \\\cline{2-3}
& 1 & 2 \\
& 1 & 2 \\\hline
\multirow{4}{*}{Bar} & 1 & 2 \\
& 1 & 2 \\\cline{2-3}
& 1 & 2 \\
& 1 & 2 \\\hline
\end{tabular}
\end{document}


When making tables, you should also always use the array package which offers various additional features and improvements (most notably at the vertical and horizontal lines joins).

-
\multirow cannot accept graphics. – xport Jan 9 '11 at 10:56
@xport: Why do you say that? I have no problems when replacing Foo by \includegraphics[height=4em]{image} inside the \multirow in the code above. – Philippe Goutet Jan 9 '11 at 20:34
are you sure the image will be vertically centered? :-) – xport Jan 9 '11 at 20:36
@xport: with a \raisebox{-\tabcolsep}{\includegraphics[height=4em]{image}}, it will be vertically centered, yes. – Philippe Goutet Jan 9 '11 at 20:58

Here's a solution using booktabs and getting rid of of the vertical rules, which leads to a prettier result imho. Have a look at the introduction of the booktabs documentation, which offers some insights in basic table design.

The benefits of booktabs are: Much better table spacing, and \toprule, \midrule and \bottomrule, where \midrule is thinner than the other two, which looks nice.

\documentclass{article}

\usepackage{booktabs}

\begin{document}

\begin{table}\centering
\begin{tabular}{lll}
\toprule
Foo & 1 & 2 \\
& 1 & 2 \\\cmidrule{2-3}% That's the rule you're looking for.
& 1 & 2 \\
& 1 & 2 \\
\midrule
Bar & 1 & 2 \\
& 1 & 2 \\\cmidrule{2-3}% This too. The numbers designate the columns covered.
& 1 & 2 \\
& 1 & 2 \\
\bottomrule
\end{tabular}
\caption{1 and 2 in relation to Foo and Bar.}
\end{table}

\end{document}


-
doesn't work with longtable, i guess. – Vineet Menon May 31 '13 at 14:56
@VineetMenon A quick check makes me think it does work. Also, the booktabs documentation explicitly mentions compatibility with longtable and provides some hints in section 5. Have a look at that, and if you still can’t work something out, feel free to ask a new question. – doncherry May 31 '13 at 18:45
oh. my bad, there was a glitch in my source. It's working now. thanks – Vineet Menon Jun 1 '13 at 8:28
Can we do that for non consecutive entries? I mean instead of \cmidrule{2-3}, to have \cmidrule{2, 4 and 5} in a bigger table? ANSWER: \cmidrule{2-2}\cmidrule{4-5} – gsamaras Mar 5 '15 at 15:15

Nested table can solve this beautifully.

\documentclass{article}
\begin{document}
\begin{tabular}{|c|@{}c@{}|}\hline
Foo
&
\begin{tabular}{cc}
1 & 2 \\
1 & 2 \\\hline
1 & 2 \\
1 & 2 \\
\end{tabular}
\tabularnewline\hline
Bar
&
\begin{tabular}{cc}
1 & 2 \\
1 & 2 \\\hline
1 & 2 \\
1 & 2 \\
\end{tabular}
\tabularnewline\hline
\end{tabular}

\end{document}

-