[Tex/LaTex] How to typeset list labels with multiple lines

labelslists

I'm new to TeX/LaTeX, and I wish to be able to typeset item labels of a (description) list into multiple lines if needed. I purchased a copy of The LaTeX Companion and chapter 3 contains example code that does almost exactly what I want (somewhat modified listing 3-3-29 from tlc2):

\documentclass{article}
\pagestyle{empty} % produces empty heads and feet -- no page numbers

\usepackage{calc}

\newenvironment{Description}
  {\begin{list}{}{\let\makelabel\Descriptionlabel
      \setlength\labelwidth{40pt}%
      \setlength\leftmargin{\labelwidth+\labelsep}}}%
  {\end{list}}
\newcommand*\Descriptionlabel[1]
  {\raisebox{0pt}[1ex][0pt]%
    {\makebox[\labelwidth][l]%
      {\parbox[t]{\labelwidth}%
      {\hspace{0pt}#1:}}}}

\begin{document}

\begin{Description}
\item[Description] Returns from a function. If issued at top level, the
  interpreter simply terminates, just as if end of input had been
  reached.
\item[Errors] None.
\item[Return\\values]
  Any arguments in effect are passed back to the caller.
\end{Description}

\end{document}

listing 3-3-29 output

This works if the 'description' corresponding to the label has lines greater than or equal to the number of lines produced by the label. But if the label has more lines than the description, the following item is vertically set a bit too close to the item before, as shown below using the same code:

enter image description here

How can I get the correct(?) item spacing in the special case where the item label contains more lines than its description?

Best Answer

As @Steven B. Segletes, you have to add empty lines by hand. I want to draw your attention to the fact that it's much simpler to use the enumitem package, which already has a multiline style for description labels. It could go like this:

\documentclass{article}
\pagestyle{empty} % produces empty heads and feet -- no page numbers

\usepackage{enumitem}
\setlist[description]{style = multiline, labelwidth = 40pt}

\begin{document}

\begin{description}
\item[Description] Returns from a function. If issued at top level, the
  interpreter simply terminates, just as if end of input had been
  reached.\\
\item[Return\\values]
  Any arguments in effect are passed back to the caller.\\
\item[Errors] None.
\end{description}

\end{document} 

enter image description here

Related Question