定义表格中列的自适应宽度

定义表格中列的自适应宽度

有没有一种简洁的方法可以将表格中的所有列宽定义为相同值适应页面大小? 例如,我希望以下 32 列的宽度均为最大页面宽度的 1/32。

\begin{tabular}{p{0.2}p{0.2}p{0.2}p{0.2}p{0.2}p{0.2}p{0.2}p{0.2}p{0.2}p{0.2}p{0.2}p{0.2}p{0.2}p{0.2}p{0.2}p{0.2}p{0.2}p{0.2}p{0.2}p{0.2}p{0.2}p{0.2}p{0.2}p{0.2}p{0.2}p{0.2}p{0.2}p{0.2}p{0.2}p{0.2}p{0.2}p{0.2}}
            1& 1 & 1 & 1 & 1 & 0 & 1 & 1 & 1 & 1 & 0 & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 0 \\
\end{tabular}
        \captionof{table}{The solution to the backpacker problem of the first matrix obtained with analytical considerations}

使用此代码,我得到的表格超出了页面的最左边界。我该如何解决这个问题?

在此处输入图片描述

答案1

以下 MWE 包含两种可能的解决方案。第一种使用Xtabularx自动使表格适合文本宽度。(X列的宽度是自动计算的)。第二个版本根据文本宽度手动计算列的宽度,同时\tabcolsep考虑长度(每个单元格内容前后添加的距离 = 两个相邻单元格内容之间距离的一半)。

在这两种情况下,您可能仍需要调整上述距离。这可以通过\setlength{\tabcolsep}{4pt}(默认为 6pt)来完成。

\documentclass{article}

\usepackage{geometry}
\usepackage{capt-of}
\usepackage{tabularx}

\usepackage{calc}

\begin{document}
\setlength{\tabcolsep}{4pt}
\noindent
\begin{tabularx}{\textwidth}{*{32}{X}}
            1& 1 & 1 & 1 & 1 & 0 & 1 & 1 & 1 & 1 & 0 & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 0 \\
\end{tabularx}
\captionof{table}{With X type columns from tabularx}

\vspace{1cm}

\noindent
\begin{tabular}{*{32}{p{\textwidth/32-2\tabcolsep}}}
            1& 1 & 1 & 1 & 1 & 0 & 1 & 1 & 1 & 1 & 0 & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 0 \\
\end{tabular}
\captionof{table}{With p type columns}

\end{document}

在此处输入图片描述

相关内容