我有点不知所措,因为我想让这个表格(48 列,我知道它很大……但我需要这个)适合 A4 纸,但似乎有一个单元格的表格最小宽度,不是吗?例如,1pt 和 0.001pt 之间没有区别。
谢谢你的帮助。
\documentclass[a4paper,12pt]{article}
\usepackage{array}
\begin{document}
\begin{table}[htp]
\begin{center}
\begin{tabular*}{\textwidth}{| *{48}{>{\centering\arraybackslash}m{0.1pt}|}}
\hline
& & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & \\
\hline
\end{tabular*}
\end{center}
\end{table}
\end{document}
答案1
这是列之间的最小距离,称为tabcolsep
。您可以将其设置为零 --- 然后手动管理:
\setlength{\tabcolsep}{0pt}
看:
\documentclass[a4paper,12pt]{article}
\usepackage{array}
\begin{document}
\begin{table}[htp]
\begin{center}
\setlength{\tabcolsep}{0pt}
\begin{tabular*}{\textwidth}{| *{48}{>{\centering\arraybackslash}m{5pt}|}}
\hline
& & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & \\
\hline
\end{tabular*}
\end{center}
\end{table}
\end{document}
您必须考虑垂直线的宽度(我认为默认为 0.4pt),在这种情况下,您需要一些拉伸来“填充空间”(现在还不够满),例如:
\setlength{\tabcolsep}{0pt}
\begin{tabular*}{\textwidth}{| *{48}{%
@{\extracolsep{\fill}}%
>{\centering\arraybackslash} m{7pt}|%
@{\extracolsep{\fill}}}%
}
\hline
.& .& .& .& .& .& .& .& .& .& .& .& .& .& .& .& .& .& .& .& .& .& .& .& .& .& .& .& .& .& .& .& .& .& .& .& .& .& .& .& .& .& .& .& .& .& .& .\\
\hline
\end{tabular*}
对于更复杂的空间分布,也许tabularx
是更好的选择。
答案2
您可以根据需要将p
(或m
或)列的内容宽度设置得尽可能小(例如)但是默认情况下列的两侧都有空间,默认值为 6pt,所以您可能需要在这里设置。b
0pt
\tabcolsep
\setlength\tabcolsep{0pt}
另请注意,您应该使用
\begin{tabular}
不是
\begin{tabular*}{\textwidth}
如果确实使用,tabular*
那么您需要使用@{\extracolsep{\fill}}
来在列之间留出额外的空间,以便 tex 可以达到规定的宽度。