我得到了一张表,为了简洁起见,我将其简化为以下内容,
\begin{tabular}{ |l|l|c c c|l|l|l| }
\hline
Problem $I_k$ & Solved $C_k$ & \multicolumn{3}{ |c| }{Solution to $C_k$} & Current & Pursue & Stored\\
& & $x_1$ & $x_2$ & $z$ & & & \\ \hline
\end{tabular}
输出结果如下
现在,我有两个问题,都与多列有关。首先,是否可以生成\hline
仅影响第三列的部分(分离“C_k 的解决方案”标签和三个变量)?
其次,看起来 $x_1$、$x_2$ 和 $z$ 都没有居中。如何纠正这个问题?
答案1
列宽的斑点不对称c
是由于其\multicolumn{3}{c}{Solution to $C_k$}
宽度大于跨越列的宽度总和而引起的。因此包含 $z$ 的列会扩展以适应多列单元格的宽度。
要使所有c
列的宽度相等,您必须规定它们的宽度,例如借助列类型p{<width>}
:
\documentclass{article}
\usepackage{array}% needed for column redefinition
\newcolumntype{C}[1]{>{\centering\arraybackslash}p{#1}}
\begin{document}
\begin{tabular}{ |l|l|*{3}{C{2em}}|l|l|l| }
\hline
Problem $I_k$ & Solved $C_k$ & \multicolumn{3}{c|}{Solution to $C_k$}
& Current & Pursue & Stored \\
\cline{3-5}
& & $x_1$ & $x_2$ & $z$ & & & \\
\hline
\end{tabular}
\end{document}
然而,我宁愿按照以下方式设计表格:
\documentclass{article}
\usepackage{array, booktabs}% needed for column redefinition and nicer looks
\newcolumntype{C}[1]{>{\centering\arraybackslash}p{#1}}
\begin{document}
\begin{tabular}{ ll *{3}{C{2em}} lll}
\toprule
& & \multicolumn{3}{c}{Solution to $C_k$} & & & \\
\cmidrule(lr){3-5}
Problem $I_k$ & Solved $C_k$ & $x_1$ & $x_2$ & $z$ & Current & Pursue & Stored \\
\midrule
\end{tabular}
\end{document}
答案2
这是一个使用该tabularx
包的变体,可以使表格自动扩展到文本宽度,而无需手动指定列的宽度。
\documentclass{article}
\usepackage{tabularx}
\begin{document}
\noindent
\begin{tabularx}{\textwidth}{ |l|l|*3{>{\centering\arraybackslash}X}|l|l|l| }
\hline
Problem $I_k$ & Solved $C_k$ & \multicolumn{3}{ c| }{Solution to $C_k$} & Current & Pursue & Stored\\\cline{3-5}
& & $x_1$ & $x_2$ & $z$ & & & \\ \hline
\end{tabularx}
\end{document}