设置多列行下某一行的列宽

设置多列行下某一行的列宽

我想制作一个像这样的表格: enter image description here

我用过: enter image description here

并得到了桌子 enter image description here

请帮我将 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} 

输出

enter image description here

答案2

另一种方法是使用tabularxY 列的宏,将其定义为\newcolumntype{C}具有 X 列属性。这样 X 列就可以调整以适应\linewidth表格的设置。

enter image description here

代码

\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

enter image description here

\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} 

相关内容