如何对列表使用不同的 lstset 设置?

如何对列表使用不同的 lstset 设置?

我想lstset在一个 latex 文件中指定两个不同的设置:一个用于 java 代码,一个用于 html。这可能吗?

解决方案https://stackoverflow.com/questions/2654810/how-to-reset-lstset-settings-for-listings似乎不适合我的文档,因为我有多个 html 列表。

答案1

每个lstlistings块都可以有自己的格式化命令。因此:

\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}

如果您想使用两个不同的列表,并且手动重置这样的列表很麻烦,只需创建一些新的环境,例如lstnewenvironment

\lstnewenvironment{sflisting}{\lstset{basicstyle=\sffamily}}{}
\lstnewenvironment{ttlisting}{\lstset{basicstyle=\ttfamily}}{}

第 42 页清单手册有详细信息

答案2

我对每种语言都使用一种样式定义,下面是 makefile 的一个示例:

\lstdefinestyle{makefile}
{
    numberblanklines=false,
    language=make,
    tabsize=4,
    keywordstyle=\color{red},
    identifierstyle= %plain identifiers for make
}

为了包含这种风格,我使用

\lstinputlisting[
    inputencoding=latin1, 
    firstline=1, 
    %lastline=10,
    caption={[Makefile]Makefile, foobar},
    style=makefile
]{./src/makefile}

其他样式有另一个值language(以及关键字、制表符大小等的其他设置)

答案3

\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}

在此处输入图片描述

相关内容