我对下表有一些疑问:
- 如果我省略边距,表格将完全变得混乱。
- 我想让中间的两列之间有一点距离,但是 \cmidrule 无法正常工作
- 正如您在表格右侧看到的,数据已经从表格中出来。
如您能帮助我解决问题,我将不胜感激。
\documentclass{article} [8pt]
\usepackage[margin=1cm]{geometry}
\usepackage{tabularx}
\usepackage{booktabs}
\usepackage{amsmath}
\usepackage{mhchem}
\usepackage{siunitx}
\usepackage{bm}
\begin{document}
\begin{table*}[htb]
\label{tbl:stats-and-correlations}
\begin{tabularx}{\linewidth}{l*{8}{c}}
\toprule
& \multicolumn{4}{c}{\textbf{Panel A:}}
& \multicolumn{4}{c}{\textbf{Panel B:}} \\ \cmidrule{2-5} \cmidrule{6-9}
& {$d_{(\ce{O1}-\ce{Mg_{(Zn)}})} $} & {$d_{(\ce{O1}-\ce{Mg_{(Zn)}})} $} & {$d_{(\ce{O1}-\ce{Mg_{(Zn)}})} $} & {$d_{(\ce{O1}-\ce{Mg_{(Zn)}})} $} & {$d_{(\ce{O1}-\ce{Mg_{(Zn)}})} $} & {$d_{(\ce{O1}-\ce{Mg_{(Zn)}})} $} & {$d_{(\ce{O1}-\ce{Mg_{(Zn)}})} $}
& {$d_{(\ce{O1}-\ce{Mg_{(Zn)}})} $} \\ [0.5ex]
& (\si{\angstrom})
& (\si{\angstrom})
& (\si{\angstrom})
& (\si{\angstrom})
& (\si{\angstrom})
& (\si{\angstrom})
& (\si{\angstrom})
& (\si{\angstrom}) \\
\hline
Variable~1 & 0.78 & 0.37 & 0.48 & 0.10 & 0.13 & 0.58 & 0.41 & 0.10\\
Variable~2 & 0.46 & 0.86 & 0.96 & 0.44 & 0.15 & 0.56 & 0.31 & 0.10\\
Variable~3 & 0.03 & 0.75 & 0.11 & 0.44 & 0.71 & 0.06 & 0.26 & 0.10\\
Variable~4 & 0.21 & 0.25 & 0.38 & 0.88 & 0.24 & 0.52 & 0.46 & 0.10\\
Variable~5 & 0.20 & 0.93 & 0.54 & 0.96 & 0.55 & 0.82 & 0.62 & 0.10\\
Variable~6 & 0.67 & 0.85 & 0.74 & 0.99 & 0.27 & 0.48 & 0.85 & 0.10\\
Variable~7 & 0.82 & 0.89 & 0.68 & 0.06 & 0.02 & 0.30 & 0.10 & 0.10\\
\bottomrule
\end{tabularx}
\end{table*}
\end{document}
答案1
您的表格比可用的表格更宽,\linewidth
并且tabularx
没有任何X
列。
使表格正确无误的一种可能性是使用\small
并将第一列定义为一X
列:
代码:
\documentclass{article}
\usepackage[margin=1cm]{geometry}
\usepackage{tabularx}
\usepackage{booktabs}
\usepackage{amsmath}
\usepackage[version=3]{mhchem}
\usepackage{siunitx}
%\usepackage{bm}
\begin{document}
\begin{table*}[htb]
\label{tbl:stats-and-correlations}
\small\begin{tabularx}{\linewidth}{X*{8}{c}}
\toprule
& \multicolumn{4}{c}{\textbf{Panel A:}} & \multicolumn{4}{c}{\textbf{Panel B:}}\\ \cmidrule(r){2-5} \cmidrule(l){6-9}
& {$d_{(\ce{O1}-\ce{Mg_{(Zn)}})} $} & {$d_{(\ce{O1}-\ce{Mg_{(Zn)}})} $} & {$d_{(\ce{O1}-\ce{Mg_{(Zn)}})} $} & {$d_{(\ce{O1}-\ce{Mg_{(Zn)}})} $}
& {$d_{(\ce{O1}-\ce{Mg_{(Zn)}})} $} & {$d_{(\ce{O1}-\ce{Mg_{(Zn)}})} $} & {$d_{(\ce{O1}-\ce{Mg_{(Zn)}})} $} & {$d_{(\ce{O1}-\ce{Mg_{(Zn)}})} $} \\ [0.5ex]
& (\si{\angstrom}) & (\si{\angstrom}) & (\si{\angstrom}) & (\si{\angstrom}) & (\si{\angstrom}) & (\si{\angstrom}) & (\si{\angstrom}) & (\si{\angstrom}) \\
\midrule
Variable~1 & 0.78 & 0.37 & 0.48 & 0.10 & 0.13 & 0.58 & 0.41 & 0.10\\
Variable~2 & 0.46 & 0.86 & 0.96 & 0.44 & 0.15 & 0.56 & 0.31 & 0.10\\
Variable~3 & 0.03 & 0.75 & 0.11 & 0.44 & 0.71 & 0.06 & 0.26 & 0.10\\
Variable~4 & 0.21 & 0.25 & 0.38 & 0.88 & 0.24 & 0.52 & 0.46 & 0.10\\
Variable~5 & 0.20 & 0.93 & 0.54 & 0.96 & 0.55 & 0.82 & 0.62 & 0.10\\
Variable~6 & 0.67 & 0.85 & 0.74 & 0.99 & 0.27 & 0.48 & 0.85 & 0.10\\
Variable~7 & 0.82 & 0.89 & 0.68 & 0.06 & 0.02 & 0.30 & 0.10 & 0.10\\
\bottomrule
\end{tabularx}
\end{table*}
\end{document}
请注意我已\hline
改为\midrule
。
另一种可能性是与第一个列定义后面的 @{\extracolsep{\fill}}\small
一起使用。tabular*
\small\begin{tabular*}{\linewidth}{l@{\extracolsep{\fill}}*{8}{c}}
...
\end{tabular*}
将拉伸所有列,以便适合表格的宽度\linewidth
。
或者,如果您的表格宽度与线宽差别不大,您可以\resizebox
从捆绑包中使用。graphics
代码
\documentclass{article}
\usepackage[margin=1cm]{geometry}
\usepackage{tabularx}
\usepackage{booktabs}
\usepackage{amsmath}
\usepackage[version=3]{mhchem}% loads also graphicx
\usepackage{siunitx}
%\usepackage{bm}
\begin{document}
\begin{table*}[htb]
\label{tbl:stats-and-correlations}
\resizebox{\linewidth}{!}{\begin{tabular}{l*{8}{c}}
\toprule
& \multicolumn{4}{c}{\textbf{Panel A:}} & \multicolumn{4}{c}{\textbf{Panel B:}}\\ \cmidrule(r){2-5} \cmidrule(l){6-9}
& {$d_{(\ce{O1}-\ce{Mg_{(Zn)}})} $} & {$d_{(\ce{O1}-\ce{Mg_{(Zn)}})} $} & {$d_{(\ce{O1}-\ce{Mg_{(Zn)}})} $} & {$d_{(\ce{O1}-\ce{Mg_{(Zn)}})} $}
& {$d_{(\ce{O1}-\ce{Mg_{(Zn)}})} $} & {$d_{(\ce{O1}-\ce{Mg_{(Zn)}})} $} & {$d_{(\ce{O1}-\ce{Mg_{(Zn)}})} $} & {$d_{(\ce{O1}-\ce{Mg_{(Zn)}})} $} \\ [0.5ex]
& (\si{\angstrom}) & (\si{\angstrom}) & (\si{\angstrom}) & (\si{\angstrom}) & (\si{\angstrom}) & (\si{\angstrom}) & (\si{\angstrom}) & (\si{\angstrom}) \\
\midrule
Variable~1 & 0.78 & 0.37 & 0.48 & 0.10 & 0.13 & 0.58 & 0.41 & 0.10\\
Variable~2 & 0.46 & 0.86 & 0.96 & 0.44 & 0.15 & 0.56 & 0.31 & 0.10\\
Variable~3 & 0.03 & 0.75 & 0.11 & 0.44 & 0.71 & 0.06 & 0.26 & 0.10\\
Variable~4 & 0.21 & 0.25 & 0.38 & 0.88 & 0.24 & 0.52 & 0.46 & 0.10\\
Variable~5 & 0.20 & 0.93 & 0.54 & 0.96 & 0.55 & 0.82 & 0.62 & 0.10\\
Variable~6 & 0.67 & 0.85 & 0.74 & 0.99 & 0.27 & 0.48 & 0.85 & 0.10\\
Variable~7 & 0.82 & 0.89 & 0.68 & 0.06 & 0.02 & 0.30 & 0.10 & 0.10\\
\bottomrule
\end{tabular}}
\end{table*}
\end{document}
此外,你还可以通过删除第一列的左侧和最后一列的\tabcolsep
右侧来节省空间:在列定义的开始和结束处添加。这意味着对于最后一个例子\tablcolsep
@{}
\resizebox{\linewidth}{!}{\begin{tabular}{@{}l*{8}{c}@{}}
...
\end{tabular}}
答案2
鉴于所有列标题都相同,并且是d_{(\ce{O1}-\ce{Mg_{(Zn)}}
导致列太宽的原因,我建议合并所有列标签。结合上述评论中 @Johannes_B 的修剪建议,您可以得到:
通过写作
\documentclass{article}
\usepackage[margin=1cm]{geometry}
\usepackage{booktabs}
\usepackage{amsmath}
\usepackage{mhchem}
\usepackage{siunitx}
\usepackage{bm}
\begin{document}
\begin{table*}[htb]
\label{tbl:stats-and-correlations}
\begin{tabular}{l*{4}l*4{c}}
\toprule
\
& \multicolumn{4}{c}{\textbf{Panel A:}}
& \multicolumn{4}{c}{\textbf{Panel B:}} \\ \cmidrule(r){2-5} \cmidrule(l){6-9}
&\multicolumn {4}{c}{$d_{(\ce{O1}-\ce{Mg_{(Zn)}})} $ (\si{\angstrom})}
&\multicolumn {4}{c}{$d_{(\ce{O1}-\ce{Mg_{(Zn)}})} $ (\si{\angstrom})} \\[0.8ex]
\hline
Variable~1 & 0.78 & 0.37 & 0.48 & 0.10 & 0.13 & 0.58 & 0.41 & 0.10\\
Variable~2 & 0.46 & 0.86 & 0.96 & 0.44 & 0.15 & 0.56 & 0.31 & 0.10\\
Variable~3 & 0.03 & 0.75 & 0.11 & 0.44 & 0.71 & 0.06 & 0.26 & 0.10\\
Variable~4 & 0.21 & 0.25 & 0.38 & 0.88 & 0.24 & 0.52 & 0.46 & 0.10\\
Variable~5 & 0.20 & 0.93 & 0.54 & 0.96 & 0.55 & 0.82 & 0.62 & 0.10\\
Variable~6 & 0.67 & 0.85 & 0.74 & 0.99 & 0.27 & 0.48 & 0.85 & 0.10\\
Variable~7 & 0.82 & 0.89 & 0.68 & 0.06 & 0.02 & 0.30 & 0.10 & 0.10\\
\bottomrule
\end{tabular}
\end{table*}
\end{document}