请告诉我,为什么表格中列宽的总和小于 1?这是我的代码:
\begin{tabular}
{p{0.15\textwidth}p{0.12\textwidth}p{0.17\textwidth}p{0.17\textwidth}p{0.27\textwidth}}
...
\end{tabular}
0.15 + 0.12 + 0.17 + 0.17 + 0.27 = 0.88 只有在这种情况下,我才有一个文本宽度表。如果总和相等,我就会有一个更宽的表。
答案1
tabular
如下规范
\begin{tabular}{
p{0.15\textwidth}
p{0.12\textwidth}
p{0.17\textwidth}
p{0.17\textwidth}
p{0.27\textwidth}
}
表示0.88\textwidth
为列保留。但是,每列两侧都有与\tabcolsep
(默认值6pt
) 一样宽的空格包围。
如果您确实需要具有这些宽度的列,则可以在本地设置\tabcolsep
;假设第一列左侧没有空间,最后一列右侧也没有空间,您仍然需要处理八个空间。因此,我们希望0.12\textwidth
在八个块之间平均分配,正确的宽度是0.015\textwidth
;这是一个例子
\documentclass{article}
\usepackage{booktabs}
\usepackage{showframe,lipsum} % just for the example
\begin{document}
\lipsum[2]
\begin{table}[htp]
\setlength{\tabcolsep}{0.015\textwidth}
\begin{tabular}{
@{}% remove space at the left
p{0.15\textwidth}
p{0.12\textwidth}
p{0.17\textwidth}
p{0.17\textwidth}
p{0.27\textwidth}
@{}% remove space at the right
}
\toprule
aa aa aa aa aa & bb bb bb bb bb & cc cc cc cc cc cc cc cc &
dd dd dd dd dd dd dd dd & ee ee ee ee ee ee ee ee ee ee ee ee \\
\bottomrule
\end{tabular}
\caption{A table}
\end{table}
\lipsum[3]
\end{document}
答案2
使用TeX
或LaTeX
方法来估计不包含额外列空间的列的长度并再次将其考虑在内。
由此可见,这0.88\textwidth
已经太大了!
\documentclass{article}
\newlength{\dummylength}
\newbox\mybox
\setbox\mybox=\hbox{%
\begin{tabular}{p{0.15\textwidth}p{0.12\textwidth}*{2}{p{0.17\textwidth}}p{0.27\textwidth}}
Foo & Foo & Foo & Foo & Foo%
\end{tabular}%
}%
\def\numofcolumns{5}
\begin{document}
Textwidth is: \the\textwidth
Width of the tabular box: \the\wd\mybox
\setlength{\dummylength}{0.88\textwidth}
\numofcolumns\ columns introduce an additional length of \the\dimexpr\tabcolsep * \numofcolumns*2
0.88 textwidth is \the\dummylength
Now let's add up the column textwidths again: \the\dimexpr0.17\textwidth*2+0.27\textwidth*2
\setlength{\dummylength}{\dimexpr\dummylength+\tabcolsep*\numofcolumns*2}
Estimated total width: \the\dummylength
There's a difference of \the\dimexpr\wd\mybox - \dummylength
\noindent\unhbox\mybox%
\end{document}
答案3
你的环境的宽度tabular
是0.88\textwidth
加 10\tabcolsep
\tabcolsep
。的默认值为6pt
。当且仅当文本块的宽度恰好为500pt
(约 6.92 英寸或 17.57 厘米)时,此表格环境的宽度才等于\textwidth
。(为什么500pt
?提示:求解(1-0.88)*\textwidth=60pt
。\textwidth
)
为了简化设置一个整体宽度等于\textwidth
且有五列的表格,其比例宽度为 15 : 12 : 17 : 17 : 27,我建议您使用tabularx
。请注意相对的列宽——作为宽度的分数如果所有列都等宽-- 可以分别表示为0.852\hsize
、0.682\hsize
、0.966\hize
(两次)和1.534\hsize
。(请注意 0.852+0.682+0.966+0.966+1.534=5,即列数。)因此,定义tabularx
环境如下:
\documentclass{article}
\usepackage{tabularx}
\newcolumntype{Z}[1]{>{\hsize=#1\hsize}X}
\begin{document}
\noindent
\begin{tabularx}{\textwidth}{ Z{0.852} Z{0.682} *{2}{Z{0.966}} Z{1.534} }
\hline
a & b & c & d & e \\
\hline
\end{tabularx}
\smallskip
\hrule % just to illustrate the width of the textblock
\end{document}