How to use different lstset settings for listings?
Every lstlistings
block can have its own formatting commands. So:
\documentclass{article}
\usepackage{listings}
\lstset{basicstyle=\ttfamily}
\begin{document}
\begin{lstlisting}
Foo
\end{lstlisting}
\begin{lstlisting}[basicstyle=\sffamily]
Bar
\end{lstlisting}
\lstset{basicstyle=\rmfamily}
\begin{lstlisting}
Baz
\end{lstlisting}
\end{document}
If you want to use two distinct listings and resetting the listings like this manually is a hassle, just create some new environments with lstnewenvironment
for example:
\lstnewenvironment{sflisting}{\lstset{basicstyle=\sffamily}}{}
\lstnewenvironment{ttlisting}{\lstset{basicstyle=\ttfamily}}{}
page 42 of the listings manual has the details
I use a style definition for every language, here is an example for makefiles:
\lstdefinestyle{makefile}
{
numberblanklines=false,
language=make,
tabsize=4,
keywordstyle=\color{red},
identifierstyle= %plain identifiers for make
}
To include this style, I use
\lstinputlisting[
inputencoding=latin1,
firstline=1,
%lastline=10,
caption={[Makefile]Makefile, foobar},
style=makefile
]{./src/makefile}
Other styles have another value for language
(and other settings for keywords, tabsizes etc.)
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage{bera}
\usepackage{listings}
\lstdefinestyle{tt}{basicstyle=\small\ttfamily,keywordstyle=\bfseries,language=[LaTeX]{TeX}}
\lstdefinestyle{rm}{basicstyle=\ttfamily,keywordstyle=\slshape,language=[LaTeX]{TeX}}
\begin{document}
\begin{lstlisting}[style=tt]
\documentclass{foo}
\end{lstlisting}
\begin{lstlisting}[style=rm]
\documentclass{bar}
\end{lstlisting}
\begin{lstlisting}
Baz
\end{lstlisting}
\end{document}