同时使用\setlength{\tabcolsep}{8mm}
和p{3cm}
指定宽度,请问表格实际的总宽度是多少?
代码如下:
\documentclass{article}
\usepackage{booktabs}
\usepackage{siunitx}
\usepackage{caption}
\begin{document}
\begin{table}[!htb]\small
\setlength{\tabcolsep}{8mm}
\centering
\renewcommand\arraystretch{1}
\caption{table}
\begin{tabular}{p{3cm}<{\centering} p{3cm}<{\centering} p{3cm}<{\centering}}
\toprule[1.5pt]
parameter & unit & number\\
\midrule[0.5pt]
diameter &\unit{\mm} & 100 \\
diameter &\unit{\mm} & 100 \\
diameter &\unit{\mm} & 100 \\
diameter &\unit{\mm} & 100 \\
diameter &\unit{\mm} & 100 \\
\bottomrule[1.5pt]
\end{tabular}
\label{table}
\end{table}
\end{document}
设 c_i 为第 i 列的宽度,n 为列数,则
width = sum(i*c_i) + 2n*\tabcolsep
如果还有表格竖线,未加载 array
宏包时,表格竖线的宽度不予考虑。
如果加载了 array
宏包,则还要加上 vln*\arrayrulewidth,其中 vln 为竖线个数。
如果使用了双竖线(||
),则还要加上 dvln*\doublerulesep,其中 dvln 为双竖线的个数。
几乎所有表格宏包都加载了 array
宏包,除了 tabularray
,tblr
表格的宽度不在讨论的范围之内。
\documentclass{article}
\usepackage{booktabs}
\usepackage{siunitx}
\usepackage{caption}
\begin{document}
\begin{table}[!htb]\small
\setlength{\tabcolsep}{8mm}
\centering
\renewcommand\arraystretch{1}
\caption{table}
\begin{tabular}{p{3cm}<{\centering} p{3cm}<{\centering} p{3cm}<{\centering}}
\toprule[1.5pt]
parameter & unit & number\\
\midrule[0.5pt]
diameter &\unit{\mm} & 100 \\
diameter &\unit{\mm} & 100 \\
diameter &\unit{\mm} & 100 \\
diameter &\unit{\mm} & 100 \\
diameter &\unit{\mm} & 100 \\
\bottomrule[1.5pt]
\end{tabular}
\label{table}
\end{table}
\setbox0=\hbox{%
\setlength{\tabcolsep}{8mm}%
\renewcommand\arraystretch{1}%
\begin{tabular}{p{3cm}<{\centering} p{3cm}<{\centering} p{3cm}<{\centering}}
\toprule[1.5pt]
parameter & unit & number\\
\midrule[0.5pt]
diameter &\unit{\mm} & 100 \\
diameter &\unit{\mm} & 100 \\
diameter &\unit{\mm} & 100 \\
diameter &\unit{\mm} & 100 \\
diameter &\unit{\mm} & 100 \\
\bottomrule[1.5pt]
\end{tabular}}
\noindent{\centering\copy0\par \vrule width \wd0 height 5pt\par}
\the\wd0 ~=
\the\dimexpr3cm+3cm+3cm+8mm+8mm+8mm+8mm+8mm+8mm\relax
\end{document}
谢谢!