# What are underfull hboxes and vboxes and how can I get rid of them?

Often, TeX outputs underfull hbox and vbox warnings when running and in the generated log file. What are these and how can I get rid of them?

-
See also the very related question What does “overfull hbox” mean?. Maybe these questions can be merged, someday. –  ShreevatsaR Jul 26 '10 at 20:41
Since you have some responses below that seem to answer your question, please consider marking one of them as ‘Accepted’ by clicking on the tickmark below their vote count. –  lockstep Jan 1 '12 at 13:16

TeX puts elements (letters, lines, paragraphs, pictures,...) in boxes and joins them together on pages using glue (put between them) that can stretch, e.g., to make sure that lines are justified, or that pages are filled to their specified height. In the first example, the line is put in a hbox (horizontal box, or box with material arranged horizontally with respect to one another, words in this case), in the second, the page is put in a vbox (vertical box, or box with material arranged vertically with respect to one another, usually paragraphs and displayed equations in this case).

Such a box is underfull in case TeX has to stretch the glue more than what is specified to be (aestethically) acceptable. In that case there will, e.g., be much whitespace between words of a line (hbox case) or extra whitespace between paragraphs (vbox case).

To avoid underfull hboxes (and also overfull ones), one can, in LaTeX, use the microtype package, which, when used in pdflatex mode (directly generating a .pdf file, and not a .dvi one), can stretch letters as well, which allows TeX to get acceptable whitespace in lines more often.

Another, manual route is to reformulate sentences and paragraphs, or add explicit hyphenation (e.g., hyphen\-ation) to get better linebreaks. One can sometimes even fix bad pagebreaks (overfull vboxes) in this way as well, by shortening or lengthening paragraphs with one line.

-
BTW, you can also explicit hyphenation by adding \hyphenation{con-sti-tu-tion-al} to the preamble, as long as you use the fontenc package (with option T1, I believe). This is useful if you don't want to bother trying to guess where LaTeX should break the word in order to adjust the line width. –  Waldir Leoncio Aug 1 at 21:06
@WaldirLeoncio The point here is to do hyphenation explicitly to fix a local problem, so your comment is off-topic, albeit correct. –  equaeghe Aug 2 at 21:30

An underfull hbox means LaTeX couldn't space the line wide enough to fill the entire width of the page, without increasing word spacing beyond the allowed maximum; the opposite is an overfull hbox, where a line couldn't be broken and extends past the edge of the printable area. Usually it happens if you forced a linebreak yourself (with \\), so if you avoid doing that this should be pretty rare (other causes are weird tabular environments or forced blank lines)

-
I would add that the overfull/underfull vboxes occur when TeX cannot break the page at the right place. This almost never happens if you have enough text on the page, but with lots of tabulars or equation arrays they can appear. –  finrod Jul 26 '10 at 20:49

Typically \\ will cause this because you have a blank line with no content (where the TeX algorithm expects content). You could get rid of those and space correctly (if you want extra space between paragraphs, use, e.g., \setlength{\parskip}{6pt}). It also can occur when you have a really long object in a paragraph that is not enough to fill it completely (hence "underfull"). Lastly, in some cases, if you have really long words, the TeX algorithm has a difficult time finding a proper way to justify the paragraph without having underfull boxes (the text doesn't meet the very end of the line). You can avoid this by using some shorter words or rewriting some stuff to accommodate the algorithm.

-
Using \setlength{\parskip}{...} is great if you want extra space between every paragraph. If you want some extra space to appear in one spot but not all the time, you can also use \vspace{...}. –  DGrady Feb 9 '13 at 0:03
In addition to what @DGrady said, you can use \bigskip or \medskip which are basically \vspace{predefined_val} –  shailenTJ Aug 21 at 15:17