I'm trying to set up a list environment for typesetting a problem set. I'd like to be able to input something like the following:
\begin{pset}
\item First solution.
\item[2.2] Second solution.
\end{pset}
and have it come out as:
Problem 1. First solution.
Problem 2 (2.2). Second solution
with the optional argument to \item
being typeset in parentheses if it's present. I assume I should be able to \renewcommand{\makelabel}
somehow, but I can't figure out how to do it. I can't get anything like the following to work:
\newcommand{\makepsetlabel}[1]{some if/then involving #1, checking if empty}
\newlist{pset}{enumerate}{1}
\setlist[pset]{
before={\renewcommand\makelabel[1]{\makepsetlabel{##1}}
}
What's the right way?
Best Answer
I would use a different command instead of
\item
:In the label I add a command
\thispitem
(with\protect
soenumitem
doesn't interpret it when setting up the environment).Then
\pitem
examines the presence of an optional argument and acts consequently: if none is specified, it just prints a period, otherwise a space, the parenthesized argument and the period.