+% \subsection{Custom description lists}
+%
+% For some bizarre reason, the \LaTeX\ \env{description} environment sets
+% |\itemindent| so that the label starts |\labelsep| into the left margin,
+% and the default |\makelabel| must therefore contain a hack to compensate.
+% This is fixed in the \package{strayman} document class, and by the
+% \package{mdwlist} package in this collection. But this introduces a
+% problem: if I want to set a \env{description} list with custom labels, how
+% can I do this without messing up the spacing?
+%
+% Detection of the relevant packages is done in an awfully hacky way, because
+% \LaTeXe\ seems to go out of its way to forget which packages have been
+% loaded at |\begin{document}| time.
+%
+% \begin{macrocode}
+\def\setdescriptionlabel#1{%
+ \if1\ifx\sectindent\xxundefined% strayman?
+ \ifx\defaultdesc\xxundefined% mdwlist?
+ 1\else0\fi\else0\fi%
+ \def\makelabel##1{\hskip\labelsep\relax#1}%
+ \else%
+ \def\makelabel##1{#1}%
+ \fi%
+}
+% \end{macrocode}
+%
+%