automated line breaks in LaTeX tables

Viewed 58455

In my dissertation, I have a glossary that explains some abbreviations I use. I put this in a table to make it look nicer. However, LaTeX does not break lines at the end of the page.

I know that I could force a line break at any point in the table, but it is a long table (much work!) and manual line breaks make the text look jagged and ugly. Is there a nice way to either have a nice-looking glossary or make LaTeX break lines automatically in a table?

...if LaTeX wouldn't do these things every so often I would really love it. The way it is, I constantly switch between affection and anger...

5 Answers

Why are you using a table for your glossary? Are you aware of the glossaries package? It lets you create beautiful glossaries with a minimum effort.

If you still want to use a table, I suggest you to use the tabularx, it defines the X column type which creates columns of adjustable width with word wrapping.

For example:

\usepackage{tabularx}

...

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

Insert after each \\ (or \cr) the following:

\noalign{\penalty -100 }

Example:

\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
}

If you want to use the rule after each line then write

\def\penlt{\noalign{\hrule \penalty-100 \hrule height -.4pt \hrule}}
Related