jbezos / enumitem

Customize enumerate, itemize and description
MIT License
45 stars 5 forks source link

Added an autowidest key #46

Open IsaacOscar opened 10 months ago

IsaacOscar commented 10 months ago

This adds the feature request by #3 . I based my code of the answer here https://tex.stackexchange.com/a/547398.

Bassically the idea is that you use a new autowidest key instead of widest=<string>, and it works out the <string> for you by using two LaTeX runs. Unfortunately this adds the eqparbox package as a dependency.

Here's a stupid example showing that unlike the stackexchange code above, my code will handle user suplied align and format keys, it also works with the usual =* option, instead of neading you change it to =! option.

\newcommand{\myformat}[1]{(#1)} % Put the label in parantheses
\SetLabelAlign{testy}{\hfil#1:} % A right aligned label with a : after it
\setlist[description]{labelsep = 0.5em, labelindent = 1em, leftmargin = *, align=testy, format=\myformat, autowidest}

\begin{description}
    \item[a label] some text\\
    more text
    \item[realy long label] some test\\
    more text
    \item[another label] some test\\
    more text
\end{description}

The above will roughly come out as:

         (a label): some text
                    more text
(realy long label): some test
                    more text
   (another label): some test
                    more text

Note: I delete an example use case in the manual for \EnumitemId since it is now redundant (autowidest is much better as it doesn't assume the last label is the widest).