[Tex/LaTex] How to put an itemize label on multiple lines

itemizelabelslists

I was wondering if it was possible nicely display a long label when using the itemize environment? e.g.:

\begin{itemize}
  \item[long ugly displaying label] Stuff
    \subitem more stuff
    ...
\end{itemize}

The label always goes over on the left of the picture. What I thinking is to split the labels on multiple lines? Or having a limit on how far to the left of the page the label is displayed and move the "Stuff" on the next line.

Any good idea (or nice way to deal with long labels) would be nice.

Best Answer

You can make it as ugly as you want by redefining the itemize lists. The labels are defined in a series of commands \labelitemi...\labelitemiv, which you can redefine.

\documentclass{article}
\begin{document}
\renewcommand\labelitemi{\textbullet\textbullet \bfseries and other ugly stuff}
\renewcommand\labelitemii{\normalfont\bfseries \textendash more ugly stuff}
\renewcommand\labelitemiii{\textasteriskcentered}
\renewcommand\labelitemiv{\textperiodcentered}
\begin{itemize}
\item First
\item second
      \begin{itemize}
        \item Ugly stuff.
      \end{itemize}
\end{itemize}
\end{document}

This will produce:

enter image description here

More fancy styling is possible via redefining the makelabel command and a suitable list environment as shown in the MWE below.

\documentclass{article}
\usepackage{lipsum}
\begin{document}
\renewcommand\labelitemi{\textbullet\textbullet \bfseries and other ugly stuff}
\renewcommand\labelitemii{\normalfont\bfseries \textendash more ugly stuff}
\renewcommand\labelitemiii{\textasteriskcentered}
\renewcommand\labelitemiv{\textperiodcentered}
\lipsum[1]
\makeatletter
\def\newitemizedenvironment#1#2{
\expandafter\def\csname#1\endcsname{%
 \ifnum \@itemdepth >\thr@@\@toodeep\else
 \advance\@itemdepth\@ne
 \edef\@itemitem{labelitem\romannumeral\the\@itemdepth}%
 \expandafter
 \list
 \csname\@itemitem\endcsname
 {\def\makelabel####1{\hspace*{150pt}\hss\llap{####1}}}%
 \fi}
 \expandafter\let\csname end#1\endcsname=\endlist
}
\makeatother

\newitemizedenvironment{ugly}{}

\begin{ugly}
\item First
\item second
\end{ugly}

\end{document}

enter image description here