无包装方法

无包装方法

我有一个简单的表格:

\begin{table}[h]
\begin{tabular}{|l|l|l|l|l|}
\hline
First entry & 2nd    & 3rd little longer & Forth & Fifth\\ \hline\hline
4.7\%  & 11.7\% & 2.5\%         & 80.5\%         & 0.7\%  \\ \hline
\end{tabular}
\caption{tabular}
\end{table}

我希望它通过按比例增加每列的宽度来使用整个页面宽度。所以我不希望列宽均匀分布;像这样,因为长换行符:

\begin{table}[h]
\begin{tabu} to \textwidth {|*{5}{X[l]|}}
\hline
First entry & 2nd    & 3rd little longer & Forth & Fifth\\ \hline\hline
4.7\%  & 11.7\% & 2.5\%         & 80.5\%         & 0.7\%  \\ \hline
\end{tabu}
\caption{tabu}
\end{table}

已经尝试过制表法,但它只会减小表格的大小:

\begin{table}[h]
\begin{tabulary}{1.0\textwidth}{|l|l|l|l|l|}
\hline
First entry & 2nd    & 3rd little longer & Forth & Fifth\\ \hline\hline
4.7\%  & 11.7\% & 2.5\%         & 80.5\%         & 0.7\%  \\ \hline
\end{tabulary}
\caption{tabulary}
\end{table}

下面是三个示例的输出(包括一个用于查看页面宽度的虚拟文本):

在此处输入图片描述

答案1

tabularx

\documentclass{article}
\usepackage{tabularx}

\begin{document}
\begin{table}
\begin{tabularx}{\textwidth}{|*{2}{X|}l|*{2}{X|}}
\hline
First entry & 2nd    & 3rd little longer & Forth & Fifth\\ \hline\hline
4.7\%  & 11.7\% & 2.5\%         & 80.5\%         & 0.7\%  \\ \hline
\end{tabularx}
\caption{tabularx}
\noindent X\hrulefill X % just for showing text width
\end{table}
\end{document}

最长的列(3)用一列排版l。其余列则用列均匀分布在剩余的宽度中X

在此处输入图片描述

答案2

无包装方法

您需要了解以下事项:

  • 包含从左边距到右边距的宽度的宏:\textwidth
  • 包含单元格分隔符宽度值的宏:\tabcolsep
  • 有多少个细胞:由你决定

然后你只需要做数学题。可以用以下方法完成\dimexpr

根据文本区域宽度计算单元格宽度\textwidth

单元格宽度占文本区域宽度的百分比- 2(分隔符宽度

\dimexpr .40\textwidth-2\tabcolsep

例子

假设我们有三列。我将选择段落列类型p进行换行,这自然会让你设置最大宽度。

  • 2 列,每列 20% 文本宽度 = 40% 文本宽度
  • 1 列 60% 文本宽度 = 60% 文本宽度

只要所有列计算的总和 = 100%,就可以开始了!

\documentclass{article}
\usepackage{booktabs}% Used for visual illustration of tabular width
\begin{document}
Do not forget to remove the {\the\parindent} auto-indentation when testing widths. 

\noindent
\rule{\textwidth}{2mm}% proof that this table is maxed out
\bigbreak
\noindent% <== removes auto-indentation of article class for new paragraphs that do not follow a heading
\begin{tabular}{p{\dimexpr.20\linewidth-2\tabcolsep}p{\dimexpr.20\linewidth-2\tabcolsep}p{\dimexpr.60\linewidth-2\tabcolsep}}
\toprule
Dimension & Value+Unit & Description \\
\midrule
\textbackslash tabcolsep & \the\tabcolsep & The amount of space for each vertical cell border. \\
\textbackslash textwidth & \the\textwidth & The width from left margin to right margin. \\
\textbackslash parindtent & \the\parindent & The auto-indentation width. \\
\bottomrule
\end{tabular}
\end{document}

在此处输入图片描述


笔记

tabularx定义列类型X本质上做相同的事情,除了它会自动尝试找到列类型的值p{}

http://mirror.easyname.at/ctan/macros/latex/required/tools/tabularx.pdf 在此处输入图片描述

相关内容