![Longtable 中的 \hbox 溢出](https://linux22.com/image/403834/Longtable%20%E4%B8%AD%E7%9A%84%20%5Chbox%20%E6%BA%A2%E5%87%BA.png)
我正在尝试消除 Longtable 中的错误
第 6-10 行对齐时 \hbox 过满(宽 1.19998pt)
这是我的 MWE
\documentclass[12pt,a4paper,twoside]{report}
\usepackage{longtable}
\usepackage{array}
\begin{document}
\begin{longtable}{|>{\raggedright\arraybackslash}p{\dimexpr 0.5\textwidth -2\tabcolsep\relax}|>{\raggedright\arraybackslash}p{\dimexpr 0.5\textwidth -2\tabcolsep\relax}|}
\hline
Test & Test\\
\hline
\end{longtable}
\end{document}
为什么会出现此错误?据我了解,longtable 的两列应正好占 textwidth 减去左右 tabcolsep 的 50%。
答案1
在计算可用列宽时,您正确地减去了空白填充。但是,您没有考虑到表格中存在的三个垂直规则的宽度。这些垂直规则的宽度由参数 控制\arrayrulewidth
;其默认值0.4pt
在大多数文档类中都是如此。请注意3*0.4pt=1.2pt
,这与报告的 的过满程度非常接近1.19998pt
。(事实上,1.19998 和 2是直到舍入误差为止也相同。)
该怎么办?小菜一碟!只需更改
p{\dimexpr 0.5\textwidth -2\tabcolsep\relax
到
p{\dimexpr 0.5\textwidth -2\tabcolsep -1.5\arrayrulewidth\relax
为什么1.5\arrayrulewidth
?因为 2*1.5 = 3 = 中的垂直规则数longtable
。