At first an input such as
\blist{<statement>
<statement>
<statement>
<statement>}
can seem more appealing than
\begin{lstlisting}[<options>]
<statement>
<statement>
<statement>
<statement>
\end{lstlisting}
but eventually it doesn't reveal such. For one thing: \end{lstlisting}
is much more evident in the input than a single brace.
Besides, there are technical reasons why the "macro with argument" is difficult to implement for lstlisting
: this environment is pretty much like verbatim
(but does more complicated things) and so it can't go inside the argument to another command, if you want that it treats correctly all the characters which are special to LaTeX (braces, #
, $
and %
, in particular).
A good text editor can help, but also listings
features: if you want to give particular options for typesetting chunks of code, you can define a new environment:
\lstnewenvironment{blist}[1][]
{\lstset{<common options>,#1}}
{}
and then
\begin{blist}
<statement>
<statement>
<statement>
<statement>
\end{blist}
will be typeset applying the <common options>
. Not very harder to type and good for marking your input and making it easy to find the chunks of code that use that common setting. You can also add "local options" by saying
\begin{blist}[<local options>]
lstlisting
is a (smart) variant ofverbatim
and such environments can never be the argument to a command. – egreg Nov 4 '12 at 12:11\def\blist{\begin{lstlisting}} \def\elst{\end{lstlisting}}
work?\blist TEXT TEXT \elst
gives me an error on\elst
– dwelle Nov 4 '12 at 12:57verbatim
, LaTeX must see an explicit\end{lstlisting}
to end the job; so hiding it in a macro is not helpful. – egreg Nov 4 '12 at 13:14\blist{<long series of statements>}
instead of the clearer\begin{lstlisting}...\end{lstlisting}
? – egreg Nov 4 '12 at 13:51listings
provides an inline version:\lstinline
, which works similar to your requested\blist
. Alternatively, use\let\blist\lstinline
and use\blist
. – Werner Nov 4 '12 at 15:17