修复一个表中的多个多列命令中的列宽

修复一个表中的多个多列命令中的列宽

我正在创建一个包含多个多列命令的表格。如何集体指定整个表格的列宽?

\begin{tabular}{rrrrr} \toprule 
 \multicolumn{1}{l}{\bfseries Data}  & {\textbf{data1}} & {\textbf{data2}} & {\textbf{data3}} &{\textbf{data4}}   \bigstrut\\ 
  \midrule 
  \\ \midrule \multicolumn{5}{l}{\bfseries Panel A}  \\ \midrule\\ 
 \multicolumn{1}{l}{\textbf{Sample1}}& 0.1503&0.1789&0.1929&0.2026&\\ 
 \multicolumn{1}{l}{\textbf{Sample2}} & 0.1217&0.1503&0.1640&0.1723&\\ 
 \\ \midrule \multicolumn{5}{l}{\bfseries Panel B}  \\ \midrule\\ 
 \multicolumn{1}{l}{\textbf{Sample1}}& 0.1492&0.1729&0.1831&0.1894&\\ 
 \multicolumn{1}{l}{\textbf{Sample2}} & 0.1034&0.1305&0.1434&0.1504&\\ 
 \\ \bottomrule \\ 
 \end{tabular}

当前输出如下所示。我想要实现的是固定第一列的宽度,然后对其余列使用相同的宽度。我知道这与 tabularx 有关,但到目前为止一直出现错误,无法编译文件。

在此处输入图片描述

答案1

  • 您没有提供有关您的文档的任何信息。
  • 您的代码片段包含错误。您定义了 5 列,但在表中使用了 6 列。
  • \multicolumn{...}{...}{...}表中大部分内容都是多余的
  • 您的表的可能 MWE 可能是:
\documentclass{article}
\usepackage{booktabs, makecell, tabularx}
\renewcommand\theadfont{\normalsize\bfseries}
\usepackage{siunitx}

\usepackage{xparse}
\NewExpandableDocumentCommand\mcc{O{1}m}
    {\multicolumn{#1}{c}{#2}}


\begin{document}
\begin{tabularx}{0.65\linewidth}{X *{4}{S[table-format=1.4]} } 
    \toprule
\thead{Data}    
    & {\thead{data1}}   & {\thead{data2}}   
    & {\thead{data3}}   & {\thead{data4}}           \\
  \midrule
\mcc[5]{\thead{Panel A}}                            \\ 
    \midrule
\thead{Sample1}
    & 0.1503    & 0.1789    & 0.1929    & 0.2026    \\
\multicolumn{1}{l}{\thead{Sample2}}
    & 0.1217    & 0.1503    & 0.1640    & 0.1723    \\
    \midrule
\mcc[5]{\thead{Panel B}}                            \\
    \midrule
\thead{Sample1}
    & 0.1492    & 0.1729    & 0.1831    & 0.1894    \\
\thead{Sample2}
    & 0.1034    & 0.1305    & 0.1434    & 0.1504    \\
    \bottomrule     
 \end{tabularx}
\end{document}

这使:

在此处输入图片描述

答案2

我建议使用通常的tabular环境,并加载siunitxeqparbox。我将最后四列定义为S类型,并将table-column-width键设置为第一列中最长的单元格的宽度。

我还重新组织了表格中的规则和垂直间距。

\documentclass{article}
\usepackage{booktabs}
\usepackage{siunitx}
\usepackage{eqparbox}
\usepackage{bigstrut}

\begin{document}

\begin{tabular}{>{\bfseries}l *{4}{S[table-format=1.4,table-column-width=\eqboxwidth{S}]}}%
 \toprule
 Data & {\textbf{data1}} & {\textbf{data2}} & {\textbf{data3}} &{\textbf{data4}}\\%\bigstrut
  \midrule
  \addlinespace[2ex]
 \multicolumn{5}{l}{\bfseries Panel A} \\ \midrule\addlinespace
 Sample1 & 0.1503 & 0.1789 & 0.1929 & 0.2026 \\
 \eqparbox{S}{\textbf{Sample2}} & 0.1217 & 0.1503 & 0.1640 & 0.1723 \\
 \addlinespace[2ex]
 \multicolumn{5}{l}{\bfseries Panel B} \\ \midrule\addlinespace
Sample1 & 0.1492 & 0.1729 & 0.1831 & 0.1894 \\
{Sample2} & 0.1034 & 0.1305 & 0.1434 & 0.1504 \\
 \\ \bottomrule
 \end{tabular}

\end{document}

在此处输入图片描述

相关内容