LaTeX表格中的自动换行

28
在我的论文中,我有一个词汇表来解释一些缩写词。我将其放在表格中,以使其看起来更好看。但是,LaTeX不会在页面末尾换行。
我知道我可以在表格的任何位置强制换行,但它是一个长表格(需要很多工作!),手动换行会使文本看起来不整齐和丑陋。是否有一种好的方法来实现漂亮的词汇表或使LaTeX在表格中自动换行呢?
如果LaTeX不经常这样做,我真的会喜欢它。现在,我不断地在爱与怒之间切换...
5个回答

62
为什么你要使用表格来创建词汇表?你是否了解 glossaries 包?它可以让你轻松地创建漂亮的词汇表。
如果您仍想使用表格,我建议您使用 tabularx,它定义了可调整宽度和自动换行的列类型为 X
例如:
\usepackage{tabularx}

...

\begin{tabularx}{\textwidth}{ |l|X| }
  \hline
  word1 & long definition... \\
  \hline 
  word2  & long definition...  \\
  \hline
\end{tabularx}

2
通过谷歌找到了这个页面... 这个解决方案对我非常有效! - Dave Lillethun
我需要一个简单的表格,而不是词汇表。这个答案非常完美,例子也可以直接使用! - Peopleware
对于所有使用 booktabs 但不想要垂直线的人,请改用 \begin{tabularx}{\textwidth}{ lX } - Patrick

25

2
抱歉给你点了踩,但我的问题是关于换行而不是分页。 - bastibe
7
如果您使用begin{longtable}{l >{\raggedright}p{0.75\textwidth} },则表格中的文本将会自动换行,并且在页面断开时也会自动调整。 - Mica
当然可以。您可以使用p{width}定义表格单元格的宽度,然后在其前面加上>{\raggedright},使该列中的所有文本都靠右对齐。 - Mica
1
另请参见:如果您遇到noalign错误,请查看http://tex.stackexchange.com/questions/35348/errors-with-ragged-right-justification-in-tables。 - Leo
对于那些使用@Mica在“longtable”评论中提供的解决方案的人:正如@Leo所指出的,当您使用双反斜杠时,noalign错误肯定会发生。我的简单解决方法是:\begin{longtable}{|l|p{0.95\textwidth}|}(不要使用\raggedright)。 - Domi
显示剩余2条评论

9

尝试:

\begin{tabular}{|p{3cm}|p{4cm}|p{4cm}|}
Long text here & Long text here & Long text here \\
\end{tabular}

1

0

在每个\\(或\cr)之后插入以下内容:

\noalign{\penalty -100 }

例子:

\def\penlt{\noalign{\penalty-100 }}

\halign{&\hfil\ (#)\ \hfil\cr
1&2&3\cr \penlt
1&2&3\cr \penlt
1&2&3\cr \penlt
1&2&3\cr \penlt
1&2&3\cr \penlt
1&2&3\cr \penlt
1&2&3\cr \penlt
1&2&3\cr \penlt
1&2&3\cr \penlt
1&2&3\cr \penlt
1&2&3\cr \penlt
}

如果您想在每行后使用规则,则请编写:
\def\penlt{\noalign{\hrule \penalty-100 \hrule height -.4pt \hrule}}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接