Evenly distributing column widths

You could use the tabularx environment instead of the tabular environment. The tabularx environment, made available by loading the tabularx package, provides a column type called "X" that should satisfy your professed need to have several equal-width columns. The first table in the MWE below explains how to do this.

There is one decision, however, that the author must make, i.e., which can't be automated entirely: How wide should the entire table be? Often, one simply sets this width to \textwidth (the width of the current textblock) and then lets tabularx determine how wide the individual columns of type X will be. For this MWE (which uses the default text font employed by LaTeX), with some trial-and-error work I found that it's possible to specify the table's overall width as narrow as about 0.75\textwidth. For your actual document, you will need to play around with the table width settings to determine empirically what the narrowest possible table width may be.

Note also the use of the specifier \centering\arraybackslash before the X column type in the MWE. I've inserted this specifier as it appears that you want the contents of the columns to be centered. (The contents of an X column are set "fully justified" by default.)

That said, I'd also like to very strongly encourage you to consider (i) getting rid of all vertical lines in the table and (ii) using the booktabs package to getter spacing above and below the various rules in the table. This package provides the commands \toprule, \bottomrule, \midrule, and \cmidrule; how to use them is explained in the second part of the MWE below. Note that it's possible to left-trim and/or right-trim a \cmidrule -- something that's quite impossible to achieve with \cline. Comparing the two forms of the table, I daresay predict that the overwhelming majority of readers will find the second form to be both more pleasing to look at and more easily understandable. :-)

enter image description here

\documentclass{article}
\usepackage{tabularx,booktabs}
\newcolumntype{Y}{>{\centering\arraybackslash}X}

\begin{document}

\noindent
\begin{minipage}{0.75\linewidth}

First version: Many vertical lines, 
widths of horizontal lines all equal, 
spacing above\slash below horizontal 
lines cramped

\smallskip
\begin{tabularx}{\textwidth}{ |c| *{6}{Y|} }
\cline{2-7}
   \multicolumn{1}{c|}{} 
 & \multicolumn{3}{c|}{Fantastical aardvarks}  
 & \multicolumn{3}{c|}{Spelunking elephants}\\
\hline
 Foo bar & A & B & C & A & B & C\\
\hline
 5  & 87 &  5 &  2 & 82 & 18 & 48\\
 6  &  5 & 43 &  4 &  7 & 47 &  4\\
 7  &  7 & 18 & 63 &  2 &  9 & 99\\
\hline
\end{tabularx}

\bigskip

Second version: No vertical lines, 
widths of horizontal lines differ, 
spacing above/below horizontal lines 
satisfactory

\smallskip
\begin{tabularx}{\textwidth}{c *{6}{Y}}
\toprule
Foo bar
 & \multicolumn{3}{c}{Fantastical aardvarks}  
 & \multicolumn{3}{c}{Spelunking elephants}\\
\cmidrule(lr){2-4} \cmidrule(l){5-7}
  & A & B & C & A & B & C\\
\midrule
 5  & 87 &  5 &  2 & 82 & 18 & 48\\
 6  &  5 & 43 &  4 &  7 & 47 &  4\\
 7  &  7 & 18 & 63 &  2 &  9 & 99\\
\bottomrule
\end{tabularx}
\end{minipage}
\end{document}

\documentclass{article}
\usepackage{tabularx,ragged2e}
\usepackage{booktabs}

\begin{document}

{\tabcolsep=0pt\def\arraystretch{1.3}
\begin{tabularx}{250pt}{c *6{>{\Centering}X}}\toprule
  & \multicolumn{3}{c}{Fantastical aardvarks}   & \multicolumn{3}{c}{Spelunking elephants} 
  \tabularnewline \cmidrule(lr){2-4}\cmidrule(l){5-7}
  Foo bar & A & B & C & A & B &  C \tabularnewline \midrule
  5  & 87 &  5 &  2 & 82 & 18 & 48 \tabularnewline
  6  &  5 & 43 &  4 &  7 & 47 & 4 \tabularnewline
  7  &  7 & 18 & 63 &  2 &  9 & 99 \tabularnewline\bottomrule
\end{tabularx}}

\end{document}

enter image description here

Tags:

Tables