[Tex/LaTex] How to control enumitem’s description list via leftmargin and labelwidth keys

enumitemkey-value

I am trying to learn how to use enumitem's keys to adjust a description list. In this case, I would like to have my list items and description text both left aligned, but the description text should all start at the same horizontal position.

What I have below comes pretty close, but it seems that the setting of \labelwidth is being ignored, and that there is some other thing I need to add to get the correct value of leftmargin.

The tabular version produces that output I want, but would prefer to use the description list from enumitem.

\documentclass{article}
\usepackage{enumitem}
\usepackage{calc}

\newcommand*{\LongDescription}{This is a  long sentence to check that when it gets wrapped it is indented properly on the next line, but doesn't seem to when used in the list.}%
\newcommand*{\ShortDescription}{A very short description.}%

\begin{document}
\newcommand*{\LargestItem}{The Largest Named Item}%
\newlength{\MaxWidth}%
\settowidth{\MaxWidth}{\LargestItem}%
\newlength{\MaxWidthPlusLabelSep}%
\setlength{\MaxWidthPlusLabelSep}{\labelsep+\MaxWidth}%

\begin{description} [leftmargin=\MaxWidthPlusLabelSep,labelwidth=\MaxWidth]
\item Small Name:
    \ShortDescription
\item The Largest Named Item: \LongDescription
\item Larger Name:
    \ShortDescription
\end{description}


\hrule\medskip

I want something like this, but should be able to do this with a list:

\bigskip
\begin{tabular}{l@{ }p{\linewidth-\MaxWidthPlusLabelSep}}
Small Name:
    &\ShortDescription\\\\
    The Largest Named Item:
    &\LongDescription\\\\
    Larger Name:
    &\ShortDescription
\end{tabular}
\end{document}

I have tried the solutions on how to Change hanging indent in description list
and How to align long labels in a list to the left margin?
but have not been able to adapt them to what I want.

Best Answer

\newenvironment{mydesc}[1]
  {\settowidth{\dimen0}{#1}%
   \renewcommand{\descriptionlabel}[1]{##1\hfill}%
   \begin{description}[leftmargin=\dimexpr\dimen0+\labelsep\relax,labelwidth=\dimen0 ]}
  {\end{description}}

\begin{mydesc}{The Largest Named Item}
\item[Small Name]
    \ShortDescription
\item[The Largest Named Item] \LongDescription
\item [Larger Name]
    \ShortDescription
\end{mydesc}

If enumitem version 3 is not available, it's possible to use a solution provided in the LaTeX Companion:

\newenvironment{mydesc}[1]
  {\list{}{\renewcommand\makelabel[1]{##1\hfil}%
     \settowidth\labelwidth{\makelabel{#1}}%
     \setlength\leftmargin{\dimexpr\labelwidth+\labelsep\relax}}}
  {\endlist}
Related Question