Take the 2-minute tour ×
TeX - LaTeX Stack Exchange is a question and answer site for users of TeX, LaTeX, ConTeXt, and related typesetting systems. It's 100% free, no registration required.

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

share|improve this question
add comment

1 Answer

up vote 19 down vote accepted

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.

share|improve this answer
    
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
1  
@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
1  
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
show 6 more comments

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.