I'm a beginning latex user. I have some programming code in my document which I format using the lstlisting environment from the package listings.
However this still allows the code segments to be split into two pieces when placed near the end of a page.
To fix this I also use a figure environment for code.
This causes an often recurring pattern:
\begin{figure}[H]
\begin{lstlisting}
..code..
\end{lstlisting}
\end{figure}
How can I define a new environment for this pattern?
I tried:
\newenvironment{mylisting}
{
\begin{figure}[H]
\begin{lstlisting}
}
{
\end{lstlisting}
\end{figure}
}
However using this environment gave errors all over.
Best Answer
The problem is that the
listings
package needs to make all kinds of changes to the internals of LaTeX in order to evaluate the contents of thelstlisting
environment in a non-LaTeX way. In particular it shuts down expansion of control sequences starting with\
so the end code to yourmylisting
environment gets passed right by.If all you want to do is have a listing in a float, you can do
You might find some of these questions about the listings package on the TeX SE useful as well.