我想制作一个像这样的表格:
我用过:
并得到了桌子
请帮我将 Y1、Y2 和 Y3 列的宽度调整到相等。非常感谢!
答案1
当多列条目比它跨越的列宽时,多余的空间将被放入最后一个跨越的列中。
避免这种情况的一种方法是定义一个与多列单元格内容的长度相匹配的新长度
\newlength\mylength
\settowidth\mylength{Measured surface roughness $R_a$ ($\mu$m)}
然后使用 3 列,宽度为其长度的 1/3 ( >{\centering\arraybackslash}p{.333\mylength}
)
完整代码:
\documentclass{article}
\usepackage[landscape]{geometry}
\usepackage{array}
\begin{document}
\newlength\mylength
\settowidth\mylength{Measured surface roughness $R_a$ ($\mu$m)}
\begin{tabular}{l*{5}{c}*{3}{>{\centering\arraybackslash}p{.333\mylength}}*{2}{c}}
\hline\noalign{\smallskip}
{} & \multicolumn{5}{c}{Factor} & \multicolumn{3}{c}{Measured surface roughness $R_a$ ($\mu$m)} &
\multicolumn{2}{c}{Responses} \\
\cline{2-6}\cline{10-11}\noalign{\smallskip}
Trial No. & A & B & C & D & E & Y1 & Y2 & Y3 & Mean ($\mu$m) & $S/N$ ratios (dB) \\
\hline\noalign{\smallskip}
1&1&1&1&1&1&0.30&0.33&0.37&0.333&9.5104\\
2&1&1&2&2&2&0.26&0.28&0.26&0.267&11.4752\\
3&1&1&3&3&3&0.35&0.33&0.32&0.333&9.5363\\
\hline\noalign{\smallskip}
\end{tabular}
\end{document}
输出
答案2
另一种方法是使用tabularx
Y 列的宏,将其定义为\newcolumntype{C}
具有 X 列属性。这样 X 列就可以调整以适应\linewidth
表格的设置。
代码
\documentclass[]{article}
\usepackage[margin=1in]{geometry}
\usepackage{array}
\usepackage{tabularx}
\newcolumntype{C}[1]{>{\hsize=#1\hsize\centering\arraybackslash}X}
\begin{document}
\noindent % use this or wrap it in a table environment -- reminded by Mico, thanks.
\begin{tabularx}{\linewidth}{l*5{c}*3{C{1}}*2{c}}
\hline\noalign{\smallskip}
{} & \multicolumn{5}{c}{Factor} & \multicolumn{3}{c}{Measured surface roughness $R_a$ ($\mu$m)} &
\multicolumn{2}{c}{Responses} \\
\cline{2-6}\cline{10-11}\noalign{\smallskip}
Trial No. & A & B & C & D & E & Y1 & Y2 & Y3 & Mean ($\mu$m) & $S/N$ ratios (dB) \\
\hline\noalign{\smallskip}
1&1&1&1&1&1&0.30&0.33&0.37&0.333&9.5104\\
2&1&1&2&2&2&0.26&0.28&0.26&0.267&11.4752\\
3&1&1&3&3&3&0.35&0.33&0.32&0.333&9.5363\\
\hline\noalign{\smallskip}
\end{tabularx}
\end{document}
答案3
基于@Jesse的回答,特别是使用包装的机制tabularx
,我建议您还执行以下操作:
我不会使用
\noalign{\smallskip}
指令来在表格的水平线周围获得更多的垂直空间,而是会加载包booktabs
并使用其宏\toprule
、\cmidrule
、\midrule
和\bottomrule
。这些宏将自动插入适当数量的垂直空间。并且,与命令不同cline
,\cmidrule
允许在左侧和右侧进行修剪,从而使您拥有不接触的相邻行。对于最后两列中的数字条目,将数字的小数点对齐可能有意义。我建议您为此使用
S
列类型(由包提供)。siunitx
\documentclass{article}
\usepackage[margin=1in]{geometry}
\usepackage{tabularx,booktabs,siunitx}
\newcolumntype{C}{>{\centering\arraybackslash}X}
\begin{document}
\addtocounter{table}{3} % just for this example
\begin{table}
\caption{Small ball-furnished surface roughness of OFC}
\begin{tabularx}{\textwidth}{l *5{c} *3{C}
*2{S[table-format=2.4]}}
\toprule
Trial No.\ & \multicolumn{5}{c}{Factor} & \multicolumn{3}{c}{Measured surface roughness $R_a$ ($\mu$m)} &
\multicolumn{2}{c}{Responses} \\
\cmidrule(lr){2-6}\cmidrule(lr){7-9} \cmidrule(l){10-11}
& A & B & C & D & E & Y1 & Y2 & Y3 &
{Mean ($\mu$m)} & {$S/N$ ratios (dB)} \\
\midrule
1&1&1&1&1&1&0.30&0.33&0.37&0.333&9.5104\\
2&1&1&2&2&2&0.26&0.28&0.26&0.267&11.4752\\
3&1&1&3&3&3&0.35&0.33&0.32&0.333&9.5363\\
\bottomrule
\end{tabularx}
\end{table}
\end{document}