# Passing arguments to the end part of \newenvironment

I recently found myself with repeated use of quote environments like this:

\begin{quote}{\sl
To call two elements independent'' is to say the chances
of one failing are not linked in any way to the chances of
the other failing.
}\\\hspace*\fill\citep{downer-failure}
\end{quote}


So it's an ordinary quote plus

• slanted style around the actual citation
• a note on the author

By creating my own custom environment fancyquote I could reduce duplication and at the same time make it more readable. I wanted to be able to write it like this, instead:

\begin{fancyquote}[\citep{downer-failure}]
To call two elements independent'' is to say the chances
of one failing are not linked in any way to the chances of
the other failing.
\end{fancyquote}


\newenvironment{fancyquote}[1][]{%
\begin{quote}%
\begingroup\sl%
}{%
\endgroup\\
\hspace*\fill#1%
\end{quote}%
}


What's the problem here? Arguments (#1) cannot be used in the second half of environment definitions.

It may not contain any argument parameters. [1]

What? No really. Now that I know that an environment definition makes two commands \begin envname and \end envname it even makes a bit of sense to me. On a side note: \begingroup and \endgroup are replacement for curly brackets that work in syntactically unbalanced manner. So still, I wanted that environment. In the end I came to using a savebox to give the second half access to my original value of #1:

\newsavebox{\fancyquotesavebox}
\newenvironment{fancyquote}[1][]{%
\savebox{\fancyquotesavebox}{#1}
\begin{quote}%
\begingroup\sl%
}{%
\endgroup\\
\hspace*\fill\usebox{\fancyquotesavebox}%
\end{quote}%
}


In contrast to the first approach now this does work.. as longs as you don't run into a need to nest it. If you know how to use a proper stack for this I'd be interested to hear.