我想创建一个具有固定列长度的表,如下所示:
\documentclass[a4paper,12pt]{article}
\begin{document}
\begin{tabular}{|p{1cm}|p{2cm}|p{3cm}|}
\hline
1 cm & 2 cm & 3 cm \\
\hline
\end{tabular}
Table with actual widths
\begin{tabular}{|p{0.56cm}|p{1.56cm}|p{2.56cm}|}
\hline
1 cm & 2 cm & 3 cm \\
\hline
\end{tabular}
\end{document}
但是列长度不是我设置的确切数字。因此,我找到了一种移位方法,使列的长度符合我的要求。
为什么会发生这种情况以及我如何才能自动获取正确价值的过程?
答案1
\documentclass[a4paper,12pt]{article}
\begin{document}
\setlength\arrayrulewidth{2pt}
\begin{tabular}{|p{\dimexpr1cm-2\tabcolsep}
|p{\dimexpr2cm-2\tabcolsep}
|p{\dimexpr3cm-2\tabcolsep}|}
\hline
1 cm & 2 cm & 3 cm \\
\hline
\end{tabular}
\rule{6cm}{2pt}
\end{document}
根据需要设置单元格的绝对宽度。rule
是表格宽度的比较。
答案2
几乎与@Zarko 的答案相同,只是减少了分隔列的线的(精细)长度……并引入了自定义宏:
\documentclass[a4paper,12pt]{article}
\usepackage{array, calc}
\newlength{\lw}
\setlength{\lw}{2\tabcolsep+\arrayrulewidth}
\begin{document}
\begin{tabular}{| p{1cm-\lw} | p{2cm-\lw} | p{3cm-\lw} |}
\hline
1 cm & 2 cm & 3 cm \\
\hline
\end{tabular}
Table with actual widths
\begin{tabular}{|p{0.56cm}|p{1.56cm}|p{2.56cm}|}
\hline
1 cm & 2 cm & 3 cm \\
\hline
\end{tabular}
\end{document}
生产: