表格单元格中出现意外的垂直间隙

表格单元格中出现意外的垂直间隙

当我尝试制作表格时,发现表格最左边的单元格中出现了意外的间隙。

这是我的代码。

\documentclass{article}
\usepackage[a4paper,margin=1in]{geometry}
\usepackage{tabularx}
\renewcommand{\tabularxcolumn}[1]{>{\small}m{#1}}
\newcolumntype{Y}{>{\centering\arraybackslash}X}
\begin{document}
\begin{table}
  \centering
  \renewcommand{\arraystretch}{1.5}
  \begin{tabularx}{1\textwidth}{|>{\centering\arraybackslash}m{1cm} *{13}{|Y}|}%{|X|x|x|x|x|x|x|x|x|x|x|x|x| }

    \hline
    \multicolumn{13}{|c|}{Team sheet} \\
    \hline
    \hspace{0pt} Wavelength & \#1 & \#2 & \#3 & \#4 & \#5 & \#6 & \#7 & \#8 & \#9 & \#10 & \#11 & \#12 \\   \hline
    400 &   0.0025  &   0.0043  &   0.0020  &   0.0008  &   0.0050  &   0.0036  &   0.0063  &   0.0010  &   0.0014  &   0.0040  &   0.0057  &   0.0014  
  \end{tabularx}
\end{table}
\end{document}

这就是结果。

代码结果

如何消除单元格“波长”中的垂直间隙?

请帮我。

答案1

除了您发现的主要问题之外,还有两个(次要)问题也需要解决。

  • 当然,主要问题是带连字符的单词“Wave-length”上方的虚假空白行。出现此问题的原因是 (a)\hspace{0pt}单词“Wavelength”之间有空格,并且 (b) 列刚好足够窄,可以容纳“Wave-”,但不能容纳“Wave-”(请注意字符串开头的空格)。由于开头的“ ”无法容纳,因此 LaTeX 必须创建三行才能容纳整个字符串“Wavelength”。

    最好的“修复”是首先不要在\hspace{0pt}和之间留空格,也就是说,将单元格的内容写为Wavelength

    \hspace{0pt}Wavelength
    

    备注:如果第一列稍微宽一点(比如说,1.1cm 而不是 1.0cm),您根本不会注意到这个问题,因为“Wave-”(带有前导空格)恰好可以容纳。(不过,您可能不得不思考为什么“Wave-”似乎没有在“length”上方正确居中。)

  • 如果您仔细查看您发布的屏幕截图,您会注意到 12 个数据列中的数字并非完全居中——尽管\centering确实如此。发生了什么?居中不完美是因为列数不够。全部的列宽由可用宽度加上\tabcolsep两边的空白组成。LaTeX 不会让单元格内容侵占左侧空白;如果单元格内容无法连字符,则必须突出到右侧空白中。

    如何解决这个问题? 的默认值\tabcolsep6pt。将参数的值减小到 ,例如3pt,即可实现正确的居中。

  • 最后,在您的示例代码中,第二个参数tabularx指定了 13 列类型Y,尽管只需要 12 列。虽然这不会影响排版输出,但它确实会生成大量有关“\hbox 过满”的警告消息。通常,消除警告消息的来源是一个好主意——在本例中,通过指定

    \begin{tabularx}{\textwidth}{|>{\centering}m{1cm} *{12}{|Y}|}
    

    作为环境的标题tabularx

以下屏幕截图提供了前后对比。请注意,虚假行消失了,并且标有“之后”的表格中第 2 至第 13 列的内容正确居中。顺便说一句,屏幕截图中的第三个表格显示了如果您 (a) 删除所有垂直线和 (b) 使用包的规则绘制宏而不是 ,表格的外观会是怎样的booktabs\hline我希望您会同意,最终的表格“开放”外观在美学上令人愉悦。

在此处输入图片描述

\documentclass{article}
\usepackage[a4paper,margin=1in]{geometry}
\usepackage{tabularx,caption,booktabs}
\renewcommand{\tabularxcolumn}[1]{>{\small}m{#1}}
\newcolumntype{Y}{>{\centering\arraybackslash}X}
\begin{document}

\begin{table}[h!]  % "[h!]" used just for this example
  \caption{Before}
  \centering 
  \renewcommand{\arraystretch}{1.5}
  \begin{tabularx}{\textwidth}{|>{\centering\arraybackslash}m{1cm} *{13}{|Y}|}

    \hline
    \multicolumn{13}{|c|}{Team sheet} \\
    \hline
    \hspace{0pt} Wavelength & \#1 & \#2 & \#3 & \#4 & \#5 & \#6 & \#7 & \#8 & \#9 & \#10 & \#11 & \#12 \\   \hline
    400 & 0.0025  & 0.0043  & 0.0020  & 0.0008  & 0.0050  & 0.0036  & 0.0063  & 0.0010  & 0.0014  & 0.0040  & 0.0057  & 0.0014 \\
    \hline
  \end{tabularx}
\end{table}

\begin{table}[h!]
  \caption{After}
  %%\centering  % not needed, since width of "tabularx" equals width of text block
  \setlength\tabcolsep{2pt} % default value: 6pt
  \renewcommand{\arraystretch}{1.5}
  \begin{tabularx}{\textwidth}{|>{\centering\arraybackslash}m{1cm} *{12}{|Y}|}

    \hline
    \multicolumn{13}{|c|}{Team sheet} \\
    \hline
    \hspace{0pt}Wavelength & \#1 & \#2 & \#3 & \#4 & \#5 & \#6 & \#7 & \#8 & \#9 & \#10 & \#11 & \#12 \\   \hline
    400 & 0.0025  & 0.0043  & 0.0020  & 0.0008  & 0.0050  & 0.0036  & 0.0063  & 0.0010  & 0.0014  & 0.0040  & 0.0057  & 0.0014 \\
    \hline
  \end{tabularx}
\end{table}

\begin{table}[h!]
  \caption{With booktabs-based rules}
  \setlength\tabcolsep{3pt} % default value: 6pt
  %%\renewcommand{\arraystretch}{1.5}
  \begin{tabularx}{\textwidth}{@{} >{\centering\arraybackslash}m{1cm} *{12}{Y} @{}}

    \toprule
    \hspace{0pt}Wavelength & \multicolumn{12}{c@{}}{Team sheet} \\
    \cmidrule(l){2-13}
     & \#1 & \#2 & \#3 & \#4 & \#5 & \#6 & \#7 & \#8 & \#9 & \#10 & \#11 & \#12 \\   \midrule
    400 & 0.0025  & 0.0043  & 0.0020  & 0.0008  & 0.0050  & 0.0036  & 0.0063  & 0.0010  & 0.0014  & 0.0040  & 0.0057  & 0.0014 \\
    \bottomrule
  \end{tabularx}
\end{table}

\end{document} 

相关内容