[Tex/LaTex] How to use booktabs in REVTex4 / REVTex4-1

arraysdata structuresmulticolumnrulestables

I wish to type this table in REVTeX; however, the code below does not work for \documentclass{revtex4}. (It does work for the article document class, though.)

enter image description here

\documentclass{revtex4}
\usepackage{array,mathtools,amssymb,booktabs}
\newcolumntype{C}{>{$}c<{$}}
\begin{document}
    \begin{tabular}{cCCC}
      \toprule
      \multicolumn{2}{c}{} & K & H\\\midrule
      A & a & 1& 4\\\cmidrule(lr){2-4}
      B & b & 2 & 5\\\cmidrule(lr){1-4}
      \multicolumn{2}{c}{C}& 3 & 6\\\bottomrule
    \end{tabular}
\end{document}

The code is from the source of this page. Thanks to the generous cfr.

Best Answer

Update This answer addresses a workaround for revtex4-1 which is not needed with current releases (revtex4-2)


booktabs sets the default widths in a font dependent way (em units) but it seems that revtex does not set up the font until \begin{document} so you need to delay setting the rule widths via the \AtBeginDocument directive shown below.

\documentclass{revtex4}
\usepackage{array,mathtools,amssymb,booktabs}
\newcolumntype{C}{>{$}c<{$}}

\AtBeginDocument{%
  \heavyrulewidth=.08em
  \lightrulewidth=.05em
  \cmidrulewidth=.03em
  \belowrulesep=.65ex
  \belowbottomsep=0pt
  \aboverulesep=.4ex
  \abovetopsep=0pt
  \cmidrulesep=\doublerulesep
  \cmidrulekern=.5em
  \defaultaddspace=.5em
}

\begin{document}
    \begin{tabular}{cCCC}
      \toprule
      \multicolumn{2}{c}{} & K & H\\\midrule
      A & a & 1& 4\\\cmidrule(lr){2-4}
      B & b & 2 & 5\\\cmidrule(lr){1-4}
      \multicolumn{2}{c}{C}& 3 & 6\\\bottomrule
    \end{tabular}
\end{document}