LaTeX: non-verse text in verse environment.

@ eje2,@Stefan - Ok, I'm going to post my answer just cause I worked on it before Stefan posted his answer. And since his is already checked as the right answer I guess it was a waste of time.

But this seems to work, and I'd be interested in hearing, from Stefan if he has the time, why this is a bad thing. It doesn't "escape" the verse environment, it works within the verse environment, but it also doesn't stop and restart the verse environment. It seems to fit eje2's requirements.

\documentclass{article}
\begin{document}

\newcommand{\escapefromverse}[1]{%
\itemindent -3em {\item \itshape #1}\itemindent -1.5em}

\begin{verse}
'Twas brillig, and the slithy toves \\
Did gyre and gimble in the wabe; \\
All mimsy were the borogoves, \\
And the mome raths outgrabe. 

\escapefromverse{ the next verse is the part I really like!}

``Beware the Jabberwock, my son! \\
The jaws that bite, the claws that catch!\\
Beware the Jubjub bird, and shun \\
The frumious Bandersnatch!''
\end{verse}

\end{document}

That macro definition cannot work.

  • The first argument to \newcommand is the macro name, not the number of arguments. So, instead of \newcommand[1]{\description}{...} it should be \newcommand{\description}[1]{...}.

  • description is already commonly used for a list environment, that's why the definition would fail in standard classes such as article.

I would use \newenvironment instead of \newcommand if I use an environment within the definition.

The verse environment is a LaTeX list environment. The clean way is to end that verse environment, to write the other text, and then to start another verse environment. Your definition seems to be just a shortcut so save typing work. It's like redefining environments to become commands just because it's shorter - but such work is less readable.

One could use a minipage environment or \parbox to "escape" the verse environment, perhaps with a negative indentation.

But I recommend to keep using \begin{verse} ... \end{verse} instead of introducing a command which hides what happens.