我正在创建一个包含多个多列命令的表格。如何集体指定整个表格的列宽?
\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
环境,并加载siunitx
和eqparbox
。我将最后四列定义为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}