我想要做的事情如下:每当我的代码说\begin{lstlisting}
我希望它变成\begin{lstlisting}[language=GLSL]
这样。
我尝试将其插入\renewcommand{\begin{lstlisting}}{\begin{lstlisting}[language=GLSL]}
到文档的前言中。但在编译时似乎会导致无限循环。
\begin{lstlisting}
我的问题是:如何才能在不替换整个文档中的每一个内容的情况下得到我想要的结果?
答案1
在这种特殊情况下,通常的重新定义技巧可能不会帮助您。(lstlisting
需要知道何时停止逐字读取,因此它需要知道它的环境叫什么。)以下内容取自手册:
4.16 环境
如果您想定义自己的漂亮打印环境,请尝试以下命令。语法来自 LATEX 的 \newenvironment。
\lstnewenvironment {name}[number][opt. default arg.] {starting code} {ending code}
作为一个简单的例子,我们可以选择一种特定的语言。
lstnewenvironment{pascal}
{\lstset{language=pascal}} {}
做其他事情也同样简单,例如,使用更多键并添加可选参数来调整每个列表的设置:
\lstnewenvironment{pascalx}[1][]
{\lstset{language=pascal,numbers=left,numberstyle=\tiny,float,#1}} {}
ETA:而且,如果我没记错的话,只要说一句话\lstset{language=GLSL}
就会影响所有进一步的列表。