[Tex/LaTex] Autofit table column with booktabs

booktabscolumnslyxtables

Background

Using booktabs produces the top table in the following image:

enter image description here

Both tables reside in floats, but even when outside of the float the same result is produced. The Application and Version columns are too wide.

LyX seems to generate the following LaTeX code:

\begin{tabular}{>{\raggedright}p{4.5cm}>{\raggedright}p{4.5cm}>{\raggedright}p{4.5cm}l}

The preamble is straightforward:

\hypersetup{
    colorlinks=false,
    pdfborder={0 0 0},
}

\usepackage{flafter}
\usepackage{colortbl}
\usepackage{booktabs}

The commands \toprule() and \\\midrule % and \\\bottomrule % are applied directly to the table.

Questions

  1. Without hand-massaging each table, how can the columns be made to auto-fit?
    (I could not find how to control column width in the booktabs documentation.)
  2. How can the top-, mid-, and bottom-rules be applied across all tables in the document, automatically?

Thank you!

Best Answer

  1. Change the Preamble to the following:

    \usepackage{graphicx}
    \usepackage{booktabs}
    \usepackage[dvipsnames,svgnames,x11names,hyperref,table]{xcolor}

    % Table colours \colorlet{tableheader}{LightGray!80} \colorlet{zebra}{LightGray!40}

    \hypersetup{ colorlinks=false, pdfborder={0 0 0}, }

    \let\originaltable\table \let\endoriginaltable\endtable \renewenvironment{table}[1][ht]{% \originaltable[#1] \centering}% {\endoriginaltable}

  2. In the settings for each column, ensure the Width is blank. (Any numeric value will attempt to fit the columns to that width.)