I'd like to define a grammar environment which basically wraps a tabular environment. Inside the grammar environment I'd like to use an environment called production to insert rows. Example:
\documentclass[a4paper,10pt]{article} \newenvironment{production}[1] {\noindent\ignorespaces#1 ::= &} {\\} \newenvironment{grammar} {\begin{tabular}{p{3cm}l}} {\end{tabular}} \begin{document} \begin{grammar} \begin{production}{XmlStartTag} ... \end{production} \begin{production}{XmlEndTag} ... \end{production} \end{grammar} \end{document}
The goal of this code is to put the name of the non-terminal that is being defined in the left column and the actual production into the right column of the tabular.
Unfortunately this fails due to the &
and \\
within the production environment. I guess it has something to do with macro expansion. I guess I have to escape the &
and \\
with something that is only expanded after the macro was used?
Thanks!