多列。分布和水平线

多列。分布和水平线

我得到了一张表,为了简洁起见,我将其简化为以下内容,

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

相关内容