我有一张包含长文本的表格,并找到了一种方法来摆脱必须手动换行的问题。以下是此布局的一个非常简单版本的代码:
\usepackage{booktabs} % for toprule, midrule and bottomrule
\begin{table*}[t]
\centering
\begin{tabular}{l l}
\toprule
Category & Description \\
\midrule
\parbox[t]{.10\textwidth}{A} & \parbox[t]{.90\textwidth}{PUT DESCRIPTION HERE. PUT DESCRIPTION HERE. PUT DESCRIPTION HERE. PUT DESCRIPTION HERE. PUT DESCRIPTION HERE.}\\
\bottomrule
\end{tabular}
\caption{A table that adapts}
\end{table*}
我经常创建具有这种一般格式的表格:两列扩展到整个页面的文本宽度并分为两部分(像这里,10-90,但也根据第一列中文本的大小进行调整)。
有没有办法将其转换为命令(或者可能已经有一个命令)以便我不必为每个单元编写 parbox?
此外,最好简化这个过程,这样我只需要声明一个单元格的大小(10%)就可以为所有单元格隐式定义余数(90%)。
有什么想法可以有效地做到这一点吗?
答案1
最简单的方法是使用普通p
类型的列并使用\newline
而不是\\
在单元格中引入手动换行符:
\documentclass[]{article}
\usepackage{booktabs} % for toprule, midrule and bottomrule
\begin{document}
\begin{table*}[t]
\centering
\begin{tabular}{ p{.1\textwidth} p{\dimexpr.9\textwidth-4\tabcolsep\relax} }
\toprule
Category & Description \\
\midrule
A & PUT DESCRIPTION HERE. PUT DESCRIPTION HERE.\newline PUT DESCRIPTION HERE. PUT DESCRIPTION HERE. PUT DESCRIPTION HERE.\\
\bottomrule
\end{tabular}
\caption{A table that adapts}
\end{table*}
\end{document}
答案2
基于 的两种解决方案tabularx
,一种具有固定的列宽比(必须通过反复试验将默认边距更改为 1:7),另一种具有l
第一列的列说明符。
请注意,在第一个具有相对列宽比的解决方案中,系数的总和\hsize
必须等于总列数X
。
\documentclass[]{article}
\usepackage{tabularx}
\usepackage{booktabs} % for toprule, midrule and bottomrule
\begin{document}
\begin{table*}[! htb]
\centering
\begin{tabularx}{\linewidth}{>{\hsize=0.25\hsize}X>{\hsize=1.75\hsize\arraybackslash}X}
\toprule
Category & Description \\
\midrule
A & PUT DESCRIPTION HERE. PUT DESCRIPTION HERE.\newline PUT DESCRIPTION HERE. PUT DESCRIPTION HERE. PUT DESCRIPTION HERE.\\
\bottomrule
\end{tabularx}
\caption{A table that adapts}
\end{table*}
\vspace{1cm}
\begin{table*}[!htb]
\centering
\begin{tabularx}{\linewidth}{l>{\arraybackslash}X}
\toprule
Category & Description \\
\midrule
A & PUT DESCRIPTION HERE. PUT DESCRIPTION HERE.\newline PUT DESCRIPTION HERE. PUT DESCRIPTION HERE. PUT DESCRIPTION HERE.\\
\bottomrule
\end{tabularx}
\caption{A table that adapts}
\end{table*}
\end{document}