我想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}