关于 Listings 包的命令 `\lstset` 的位置的两个问题

关于 Listings 包的命令 `\lstset` 的位置的两个问题
  1. 我是 Latex 的新手。软件包文档第 12 页(http://mirrors.ctan.org/macros/latex/contrib/listings/listings.pdf) 中有如下句子:

    通过设置的所有参数\lstset将保持其值,直到当前环境或组结束。之后将恢复以前的值。

    我尝试将其放在\lstset{basicstyle=\ttfamily}源文件中的某个位置。编译后,文档中的所有后续列表都以打字机字体排版。因此,我无法弄清楚“直到当前环境或组的末尾。之后将恢复以前的值。”是什么意思。想告诉我。有人可以给我举个例子吗?

  2. \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都会影响文档中的所有列表。

相关内容