我有以下内容
\documentclass{article}
\begin{document}
\section{Test}
\begin{tabular}{r|l}
test text 1
& \begin{minipage}[t]{\linewidth}
test text 2
\end{minipage}
\end{tabular}
\end{document}
产生的结果看起来像
问题是,这会产生一个警告,提示“Overfull \hbox”。这是怎么回事?修复它的最佳方法是什么?
在旁边:我发现如果我使用tabularx
如下环境
\documentclass{article}
\usepackage{tabularx}
\begin{document}
\section{Test}
\begin{tabularx}{\linewidth}{r|X}
test text 1
& \begin{minipage}[t]{\linewidth}
test text 2
\end{minipage}
\end{tabularx}
\end{document}
然后警告消失,但我不确定为什么,或者这是否是正确的解决方案。
答案1
的大小\linewidth
不是预先规定的,而是始终自动适应使用的环境的宽度。例如,在文本主体中linewidth
等于\textwidth
,在多列文档的列中等于\columnwidth
,在某些列表(例如 itemize)中等于项目的宽度。因此,在很多时候它的功能非常理想。
在您的示例中,这意味着,当用于X
列中时,其宽度为列减二\tabcolsep
,用于时,p{<column width>}
宽度为<column width>
,但是当用于列中时c
,l
或r
,其没有规定的宽度(它们的宽度等于其内容的宽度),表中最后已知的宽度为,\textwidth
因此第一个示例中 minipage 的宽度等于\textwidth
。
您应该使用什么宽度来代替linewidth
?这取决于您的需求,我们不知道。在大多数情况下,您不需要minipage
表格,而只需要适当的列类型,例如p{<desired width>}
您确定宽度的位置(例如 12em)或X
LaTeX 根据表格宽度计算的宽度。
您可以在以下位置找到有关表格的更多信息维基百科:表格