![关于 Listings 包的命令 `\lstset` 的位置的两个问题](https://linux22.com/image/350057/%E5%85%B3%E4%BA%8E%20Listings%20%E5%8C%85%E7%9A%84%E5%91%BD%E4%BB%A4%20%60%5Clstset%60%20%E7%9A%84%E4%BD%8D%E7%BD%AE%E7%9A%84%E4%B8%A4%E4%B8%AA%E9%97%AE%E9%A2%98.png)
我是 Latex 的新手。软件包文档第 12 页(http://mirrors.ctan.org/macros/latex/contrib/listings/listings.pdf) 中有如下句子:
通过设置的所有参数
\lstset
将保持其值,直到当前环境或组结束。之后将恢复以前的值。我尝试将其放在
\lstset{basicstyle=\ttfamily}
源文件中的某个位置。编译后,文档中的所有后续列表都以打字机字体排版。因此,我无法弄清楚“直到当前环境或组的末尾。之后将恢复以前的值。”是什么意思。想告诉我。有人可以给我举个例子吗?\lstset
放在序言中和紧跟其后有什么区别吗\begin{document}
?例如,\documentclass{article} \usepackage{listings} \lstset{basicstyle=\small\ttfamily,numbers=left} \begin{document}
和
\documentclass{article} \usepackage{listings} \begin{document} \lstset{basicstyle=\small\ttfamily,numbers=left}
我将非常感激任何能帮助解决此情况的帮助。
答案1
这取决于命令是否lstset
在环境(如中心、定理环境等)内使用。在这种情况下,环境内的所有列表都将受到样式更改的影响,但环境后的列表不会受到影响。请注意,如果您只想更改一个列表的样式,可以使用括号来实现\begin{lstlisting}
例如请参见以下内容:
\documentclass{article}
\usepackage{listings}
\usepackage{amsthm}
\begin{document}
\newtheorem{thm}{Theorem}
\begin{thm}
My theorem
\begin{lstlisting}
A first listing
Without number lines
\end{lstlisting}
\lstset{basicstyle=\small\ttfamily,numbers=left}
\begin{lstlisting}
A second listing
Without number lines
\end{lstlisting}
\begin{lstlisting}
A third listing
Also with number lines
\end{lstlisting}
\end{thm}
\begin{lstlisting}
A fourth listing
Without number lines
\end{lstlisting}
\begin{center}
I can also change style for only one listing !
\begin{lstlisting}[basicstyle=\small\ttfamily,numbers=left]
A fifth listing
With numer lines
\end{lstlisting}
\begin{lstlisting}
A sixth listing
Regular style
\end{lstlisting}
\end{center}
\end{document}
在这样的环境之外的任何使用\lstset
都会影响文档中的所有列表。