Just curious, because the last of the three examples solves the problem.

Why is it that this is allowed in the parameter list of \framed:

\framed[frame=on,\iftrue width=3cm\fi]{abc}

But this gives an error:
\framed[frame=on,\iftrue background=color,backgroundcolor=green\fi]{abc}

! Incomplete \if; all text was ignored after line 42.
<inserted text>
                \fi
<*> test.tex
             emergencyend
?

Allthough this works and solves the problem I had:
\framed[frame=on,background=\iftrue color\else none\fi,backgroundcolor=green]{abc}

Is this somewhat inconsistent behaviour intrinsic to some parameters? 
I thought all parameters are picked up by a macro and then stashed away.

Hans van der Meer