合并列时表格中的单元格宽度错误

合并列时表格中的单元格宽度错误

我正在尝试创建一个具有合并列的单元格,但它无法生成具有正确宽度的单元格。当我使用clr作为对齐参数时,如果单元格中的文本小于单元格宽度,它会完美地工作,但如果文本超过几个单词,它会溢出右边距。为了解决这个问题,我将其用作p{with}对齐参数,但出于某种原因,它生成的单元格宽度较小。

下面的例子中0.84*4+0.97匹配4.33但没有产生预期的结果。

\begin{table}[H]
\begin{tabular}{p{0.97in}p{0.84in}p{0.84in}p{0.84in}p{0.84in}}
\multicolumn{1}{p{0.97in}}{\cellcolor[HTML]{FFFFFF}} & 
\multicolumn{1}{p{0.84in}}{\cellcolor[HTML]{CCCCCC}\Centering {\fontsize{10pt}{12.0pt}\selectfont col-head-1}} & 
\multicolumn{1}{p{0.84in}}{\cellcolor[HTML]{CCCCCC}\Centering {\fontsize{10pt}{12.0pt}\selectfont col-head-2}} & 
\multicolumn{1}{p{0.84in}}{\cellcolor[HTML]{CCCCCC}\Centering {\fontsize{10pt}{12.0pt}\selectfont col-head-3}} & 
\multicolumn{1}{p{0.84in}}{\cellcolor[HTML]{CCCCCC}\Centering {\fontsize{10pt}{12.0pt}\selectfont col-head-4}} \\

\multicolumn{1}{p{0.97in}}{\cellcolor[HTML]{CCCCCC}\Centering {\fontsize{10pt}{12.0pt}\selectfont row-1}} & 
\multicolumn{1}{p{0.84in}}{\Centering YES} & 
\multicolumn{1}{p{0.84in}}{\Centering NO} & 
\multicolumn{1}{p{0.84in}}{\Centering YES} & 
\multicolumn{1}{p{0.84in}}{\Centering YES} \\

\multicolumn{5}{p{4.33in}}{\Centering \cellcolor[HTML]{CCCCCC}{\textbf{ Some random long text, Some random long text, Some random long text,}}} \\
\end{tabular}
\end{table}

输出

答案1

五个可用宽度的总和个人列确实是0.84in*4+0.97in=4.33in

\tabcolsep但是,由于每个单元格的左侧和右侧都有空白填充(数量为),因此组合五个细胞中的 是4.33in+8\tabcolsep

为了利用这一事实,改变

\multicolumn{5}{p{4.33in}}{...}

\multicolumn{5}{p{\dimexpr4.33in+8\tabcolsep\relax}}{...}

的值\tabcolsep通常由文档类设置。“标准”LaTeX 文档类 -- articlereportbook-- 使用6pt作为值。

答案2

主要问题已在@Mico 的回答中得到解决,我想解决其他问题。表格中有很多噪音和不必要的重复命令。在 LaTeX 中,您可以定义自己的快捷宏来执行任何经常使用的操作,以下是您可以尝试的更改列表:

  • 为彩色单元格定义一个新的宏,\CC{..}例如
  • 删除并\centering定义 columntypeC
  • 移除\fontsize{10pt}{12.0pt}\selectfont并使用\small\footnotesize
  • 先移除\cellcolor[HTML]{FFFFFF},默认为白色
  • 删除不必要\multicolumn
  • 最好使用[!htbp]而不是[H]让 LaTeX 决定表格的推荐位置
  • 您也可以尝试tabularx使用 automatichsize而不是pcolumntype

这是您的表格的清理版本:

\documentclass[12pt,a4paper]{article}
%\usepackage{colortbl,xcolor} % OR
\usepackage[table]{xcolor}    % see Mico's comment below
\begin{document}

\newcommand{\CC}[1]{\cellcolor[HTML]{CCCCCC}{#1}}
\newcolumntype{C}[1]{>{\centering\arraybackslash}p{#1}}

\begin{table}
\begin{tabular}{C{0.97in}C{0.84in}C{0.84in}C{0.84in}C{0.84in}}
                  & \CC{\small col-head-1} & \CC{\small col-head-2} & \CC{\small col-head-3} & \CC{\small col-head-4} \\
\CC{\small row-1} & YES                    & NO                     & YES                    & YES                    \\
\multicolumn{5}{C{\dimexpr4.33in+8\tabcolsep\relax}}{\CC{\textbf{Some random long text, Some random long text, Some random long text,}}} 
\end{tabular}
\end{table}

\end{document}

相关内容