# How to define a starred version of an environment in LaTeX

I am interested in defining a new environment in LaTeX that has a starred version. How is this done?

-

Since the \newenvironment command uses a \csname, you can define it directly.

\documentclass{article}
\newenvironment{test*}
{start}{end}
\begin{document}
\begin{test*}
hello
\end{test*}
\end{document}


You can have any combination of characters (with catcode 11 and 12) as you would in a \csname...\endcsname construct,

\documentclass{article}
\newenvironment{test123*}
{start}{end}
\begin{document}
\begin{test123*}
hello
\end{test123*}
\end{document}


What you do with the starred command is up to you.

-
I thought it would be much more complicated than this :-) I should have tried it myself before I asked. –  digital-Ink May 23 '12 at 18:14
@digital-Ink It's a sort of a hidden feature. –  Yiannis Lazarides May 23 '12 at 18:15
If you were to define a command, xparse would allow to handle the starred and non-starred case in one definition. For environments, the solution however is less beautiful. –  dgs May 23 '12 at 19:01
@Yiannis saying "any combination of characters" is perhaps a little misleading as one is only allowed to use characters with catcode 11 and 12, e.g. \newenvironment{foo\$} isn't working. –  Frank Mittelbach May 24 '12 at 10:40
Right, I have a solution for the starred environment business: if it works, it will be in the next xparse update –  Joseph Wright May 24 '12 at 12:13