![无包装方法](https://linux22.com/image/301422/%E6%97%A0%E5%8C%85%E8%A3%85%E6%96%B9%E6%B3%95.png)
我有一个简单的表格:
\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