Take the 2-minute tour ×
TeX - LaTeX Stack Exchange is a question and answer site for users of TeX, LaTeX, ConTeXt, and related typesetting systems. It's 100% free, no registration required.

Which is the right way to do something like 'description' list but with customizable and fixed-width labels? I.e. something like this:

Label:         Text text text text text text
               text text text text.
Longer label:  Text text text text text text
               Text text text text.

The way I see it to use two-column table (first columt for labels and second column for descriptions), but this solution seems ugly. Is there any other way?

share|improve this question
    
Welcome to TeX.sx! Usually, we don't put a greeting or a "thank you" in our posts. While this might seem strange at first, it is not a sign of lack of politeness, but rather part of our trying to keep everything very concise. Upvoting is the preferred way here to say "thank you" to users who helped you. –  Torbjørn T. Nov 6 '11 at 9:31
1  
    
I want to get the opposite of this! How on earth did you manage to get flexible width of the label column working? :S –  Noldorin Dec 8 '12 at 3:14
add comment

3 Answers

up vote 14 down vote accepted

You can use the enumitem package to customize the description environment, e.g.

\documentclass{article}
\usepackage{enumitem}
\begin{document}
\begin{description}[leftmargin=8em,style=nextline]
  \item[Something] Text. More text.More text.More text. More text. More text. More text. More text. More text. More text. More text. More text. More text. 
  \item[Ought else] More text.
\end{description}
\end{document}

enter image description here

You can set this for all description environments (probably not desirable) with

\setlist[description]{leftmargin=8em,style=nextline}

or you can define your own list environment e.g.

\newlist{NewDesc}{description}{2}
\setlist[NewDesc]{leftmargin=8em,style=nextline}

and use as

\begin{NewDesc}
  \item[Something] Text. More text.More text.More text. More text. More text. More text. More text. More text. More text. More text. More text. More text. 
  \item[Ought else] More text.
\end{NewDesc}
share|improve this answer
    
Enumitem package works excellent for me. –  Oleg Nov 6 '11 at 9:31
add comment

Another way, far less elegant to what enumitem is to use a tabular-related structure.

enter image description here

\documentclass{article}
\usepackage{array}% http://ctan.org/pkg/array
\usepackage{tabularx}% http://ctan.org/pkg/tabularx
\usepackage{lipsum}% http://ctan.org/pkg/lipsum
\begin{document}
\newcolumntype{L}{@{}>{\bfseries}p{8em}<{:}}% Item label
\newcolumntype{I}{X@{}}% Item contents
\noindent\begin{tabularx}{\textwidth}{LI}
  Label & \lipsum[1] \\
  Longer label & \lipsum[2]
\end{tabularx}
\end{document}

In the above example, tabularx was used to have a table with flexible columns to the maximum text block width (\textwidth). Additionally, the array package provides a means to insert code before/after column entries. This way it is possible to format the first column entries #1 as \bfseries#1: (automatically prepending a bold format and appending a colon :). Finally, the outer column spacing was removed using a @{} column specifier.

The drawbacks are:

  • The tabular does not flow across page breaks; and
  • It's interface is not as easy as list with special sequences required to distinguish item labels and contents (&) and "new items" (\\).

lipsum merely provided some dummy text.

share|improve this answer
add comment

The KOMA-Script classes and the scrextend package (part of KOMA-Script) provide the labeling list environment. It takes the length of the longest label as mandatory argument.

\documentclass{article}

\usepackage{scrextend}
\addtokomafont{labelinglabel}{\sffamily\bfseries}

\begin{document}

\begin{labeling}{Longer label\quad}
\item[Label] Some text.
\item[Longer label] Some text.
\end{labeling}

\end{document}

enter image description here

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.