我创建了一个看起来不错的表格。但是,有些行的长文本在 Latex 表格中无法正确显示。
不幸的是,它们超出了文本块的宽度。有没有办法根据长度自动换行?
\begin{table}[htbp]
\caption{Variable Descriptions}
\label{tab:2}
\begin{center}
\begin{tabular}{|c|c|}\hline
Variables & Descriptions\\\hline
\textit{ln(wage)} & log of wage\\
\textit{educ} & years of education, years of education, years of education, years of education, years of education\\
\textit{black} & 1 if black and 0 if not\\
\textit{hisp} & 1 if hispanic and 0 if not\\
\textit{exper} & years of experience\\
\textit{exper$^{2}$} & years of experience squared\\
\textit{married} & 1 if married and 0 if not\\
\textit{union} & 1 if belongs to a union and 0 if not\\\hline
\end{tabular}
\end{center}
\end{table}
这里我该如何为包含“教育年限、教育年限、教育年限、教育年限、教育年限”这一行的文本换行?
答案1
与@leandriis 之前的评论相呼应,我建议您从 a 环境切换tabular
到 atabularx
环境,并使用X
列类型作为第二列,以便自动换行。您可以随意设置除 之外的整体宽度\textwidth
;在下面的例子中,我使用了0.8\textwidth
。
此外,我建议您 (a) 对两列使用左对齐而不是居中,(b) 通过将四个虚拟变量放在一组并为它们提供子标题来在表格中提供更多结构,以及 (c) 在第二列使用悬挂缩进以提高可读性。
或者,您可能希望 (d) 省略所有垂直规则并使用booktabs
包中的一些用户宏 -- \toprule
、\midrule
、\bottomrule
和\addlinespace
-- 来使表格具有更开放和吸引人的“外观”。
另外,我认为使用诸如\textit{ln(wage)}
.IMNSHO之类的变量名看起来有点草率$\ln(\textit{wage})$
,因为它使用直立字母表示“ln”以及直立括号,因此是首选。
\documentclass{article}
\usepackage{tabularx} % for 'tabularx' env. and 'X' col. type
\usepackage{ragged2e} % for \RaggedRight macro
\usepackage{booktabs} % for \toprule, \midrule etc macros
%% create a derivative column type called 'L':
\newcolumntype{L}{>{\RaggedRight\hangafter=1\hangindent=1.5em}X}
% How to typeset variable names:
\newcommand\vn[1]{\textit{#1}}
\begin{document}
\begin{table}[htbp]
\centering
\caption{Variable Names and Descriptions\strut}
\label{tab:2}
\begin{tabularx}{0.8\textwidth}{@{} l L @{}}
\toprule
Name & Description\\
\midrule
$\ln(\vn{wage})$ & logarithm of wage\\
\vn{educ} & years of education, years of education, years of education, years of education, years of education\\
\vn{exper} & years of experience\\
\vn{exper$^{\,2}$}& years of experience squared\\
\addlinespace
\multicolumn{2}{@{}l}{Dummy variables:}\\
\vn{black} & 1 if black, 0 if not\\
\vn{hisp} & 1 if hispanic, 0 if not\\
\vn{married} & 1 if married, 0 if not\\
\vn{union} & 1 if belongs to a union, 0 if not\\
\bottomrule
\end{tabularx}
\end{table}
\end{document}
附录解决 OP 的后续查询:指令
\begin{tabularx}{0.8\textwidth}{@{} l L @{}}
启动一个tabularx
环境,其总宽度为0.8\textwidth
,包含 2 列。第一列的类型为l
,这是一种基本的 LaTeX 列类型,用于内容应左对齐而不换行的列,第二列的类型为L
。L
列类型在答案中通过指令先前定义\newcolumntype
。L
列类型派生自X
列类型,而列类型又在tabularx
包中定义为更基本的列类型的派生类型p
。就我们的目的而言,列类型的两个主要特征X
是 (i) 它会根据需要自动允许换行(与l
列类型不同)和 (ii) 它的宽度由 LaTeX 动态计算为残差,即,一方面是环境的整体或目标宽度tabularx
(此处:)与可能存在的所有其他列(此处:只有 1 列,其最宽单元格由单词设置)加上任何列间空白之间的差异。(列类型与底层列类型有两点不同:它将其内容排版为右对齐而不是完全对齐,并且它实现“悬挂缩进”,从单元格的第二行开始。)最后,这两个粒子用于抑制否则将插入到第一列左侧和最后一列右侧的空白填充。0.8\textwidth
\vn{married}
L
X
@{}