带有 p 型列的表格以填充页面宽度

带有 p 型列的表格以填充页面宽度

我希望能够有一个表格(使用表格),该表格以水平方式填充页面,每列使用一小部分空间,现在假设它们的大小相同。

我希望能够在表格中使用枚举,因此我使用 parabox 来实现这一点。

目前我已经得到:

\begin{tabular}{ | p{0.25\linewidth} |
                   p{0.25\linewidth} |
                   p{0.25\linewidth} |
                   p{0.25\linewidth} | } 
%content here after

但这占用了从第一个边距到页面末尾的所有空间。这看起来很糟糕。我真的想避免在任何尺寸上进行硬编码,因为我稍后会想摆弄边距和方向。

如果我能做到这一点,以便我可以使用每列的文本宽度比例,那就太好了。

答案1

每个表格列在左侧和右侧都有一个分隔线,\tabcolsep如果您希望它的长度为,则必须从列宽中减去该分隔线\linewidth

\documentclass{article}
\parindent=0pt
\begin{document}

\hrulefill

\begin{tabular}{ | p{\dimexpr 0.25\linewidth-2\tabcolsep} |
                   p{\dimexpr 0.25\linewidth-2\tabcolsep} |
                   p{\dimexpr 0.25\linewidth-2\tabcolsep} |
                   p{\dimexpr 0.25\linewidth-2\tabcolsep} | } \hline
foo & bar & baz & foobar \\\hline
\end{tabular}                

\end{document}

但是,使用tabularx更有意义:

\documentclass{article}
\usepackage{tabularx}
\parindent=0pt
\begin{document}

\hrulefill

\begin{tabularx}{\linewidth}{ | X | X | X | X | } \hline
foo & bar & baz & foobar \\\hline
\end{tabularx}                

\end{document}

答案2

您可能正在寻找类似以下内容的内容,这需要加载表格型包裹:

\noindent % needed if the tabularx environment isn't encased in a table environment
\begin{tabularx}{\textwidth}{|*{4}{X|}}
...
\end{tabularx}

在您的帖子标题中,您提到您想要一个使用 类型的列的解决方案p{<some width>}X包提供的列tabularx本质上是一p列;tabularx包只是为您省去了必须明确计算列宽的繁琐工作。:-)


附录这可以推广到 (a) 占用宽度小于的表格1\textwidth——只需将预期宽度指定为环境的第一个参数tabularx,可以是绝对宽度语句(例如10cm)或相对宽度语句(例如0.85\textwidth)——和 (b) 列宽不相等的表格。例如,假设第一个示例中的第一列和第三列以及第二列和第四列应具有相同的宽度,并且第二/第四列应比第一/第三列宽 50%。这可以通过以下(起初有点令人困惑的)指令进行设置

\begin{tabularx}{\textwidth}{|>{\hsize=0.8\hsize}X| >{\hsize=1.2\hsize}X |
                              >{\hsize=0.8\hsize}X| >{\hsize=1.2\hsize}X |}

当然,这可以更简洁地表达为

\begin{tabularx}{\textwidth}{| *{2}{>{\hsize=0.8\hsize}X| >{\hsize=1.2\hsize}X |}}

需要注意的是的分数\hsize必须等于 类型的列数X(在此示例中为4)。

答案3

我想为 Latex 初学者提供一个答案。

使用包“tabularx”,可以轻松设置自定义列宽。

\documentclass[12pt]{article}

\usepackage{tabularx}

\usepackage{fontspec}
\defaultfontfeatures{Mapping=tex-text}
\setmainfont[Ligatures=TeX]{Arial}

\usepackage[textwidth=16cm]{geometry}

\begin{document}


\begin{table}[htb]
%\centering
\begin{tabularx}{\textwidth}{|>{\hsize=.8\hsize}X|>{\hsize=.5\hsize}X|>{\hsize=1.6\hsize}X|>{\hsize=1.5\hsize}X|>{\hsize=.6\hsize}X|}
\hline
\textbf{Framework} & \textbf{License} & \textbf{Functionality} & \textbf{Others} & \textbf{Support} \\
\hline
etc. & etc. & etc. & etc. & etc \\
\end{tabularx}
\caption{Our Framework}
\label{tab:framework}
\end{table}
\end{document}

注意:hsize=.8\hsize 是不是整个文本宽度的百分比。

这是增加和减少的声明。

您只需确保增加和减少的总和相同即可。

-0.2-0.5-0.4=-1.1

0.6 + 0.5 = 1,1

就是这样。

相关内容