表格上下文中水平盒子未满的错误

表格上下文中水平盒子未满的错误

我在处理以下文档时遇到了问题,pdflatexUnderfull \hbox (badness 10000) in alignment at lines 3--7在这个示例中不断发出抱怨,但原始文档中的更多行却没有出现问题。

我已读过它与代码有关\\,但据我所知,它是在表格上下文中完成一行的方式,如果我删除它们,它就不会编译。

\documentclass{article}
\begin{document}
\begin{tabular*}{0.9\textwidth}{l}
  \hline
  Test \\
  \hline
\end{tabular*}
\end{document}

答案1

LaTeX 本质上是在告诉你,你想要一个\textwidth有大小的表格,但只提供 4 个字符长的内容。也许下面的例子显示了问题所在:

\begin{tabular*}{0.9\textwidth}{|l|}
  \hline
  Test \\
  \hline
\end{tabular*}

这产生了

结果

这通常不是预期的结果。解决此问题的最简单方法是使用tabularx同名包中的环境并使用X列类型(这会增加填充空间)。

\documentclass{article}
\usepackage{tabularx}
\begin{document}
\begin{tabularx}{0.9\textwidth}{|X|}
  \hline
  Test\\
  \hline
\end{tabularx}
\end{document}

使用 tabularx 的结果


您的示例没有编译的原因\\\hline必须将其放在行的开头。删除两者\\后,以下\hline代码可以编译,但会出现相同的问题。

答案2

这是你使用 的方式tabular*。只有一列的带星号的版本是没有意义的。在这种情况下,应该使用带有 -column 说明符的无星号版本p。如果至少有两列,tabular*你就不会得到未满的框。

\documentclass{article}
\begin{document}

\begin{tabular*}{0.9\textwidth}{l@{\extracolsep{\fill}}r}\hline
  Test & Test\\\hline
\end{tabular*}

\bigskip
\begin{tabular}{p{0.9\textwidth}}\hline
  Test \\\hline
\end{tabular}

\end{document}

相关内容