# Optional argument to \item in enumitem list

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?

-
Welcome to TeX.sx! –  egreg Feb 8 '13 at 22:59

I would use a different command instead of \item:

\documentclass{article}
\usepackage{enumitem}

\newlist{pset}{enumerate}{1}
\setlist[pset]{
label=Problem \arabic*\protect\thispitem,
ref=\arabic*,
align=left
}
\newcommand{\pitem}[1][]{%
\if\relax\detokenize{#1}\relax
\def\thispitem{.}%
\else
\def\thispitem{ (#1).}%
\fi
\item}

\begin{document}

\begin{pset}
\pitem First
\pitem[2.2] Second
\end{pset}

\end{document}


In the label I add a command \thispitem (with \protect so enumitem 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.

-
Sounds like a good way to go -- thanks for the suggestion! –  user25695 Feb 9 '13 at 13:31

One possibility is to grab the optional argument using your own command, so that \item does not see it.

\documentclass{article}
\newcommand\myitem[1][\relax]{\item\ifx#1\relax\else(#1)\fi}
\begin{document}
\begin{itemize}
\myitem abc
\myitem[2.1] def
\end{itemize}
\end{document}

-
The period will be in the wrong place. –  egreg Feb 8 '13 at 23:07
@egreg --- Friday night is not the time to consider such details! –  Ian Thompson Feb 8 '13 at 23:12
@IanThompson: I've added a deleted answer that could be used as a slight improvement(?) to your current definition. Grab some from it if you need it. –  Werner Feb 8 '13 at 23:35