将 listings 包与我自己的环境结合起来

将 listings 包与我自己的环境结合起来

可能重复:
如何对列表使用不同的 lstset 设置?

我将自己的环境定义为:

\newenvironment{codegui}[3]{%
\def\tmplanguage{#1}\relax
\def\tmpshowspaces{#2}\relax
\def\tmpshowtabs{#3}\relax
\lstset{language={\tmplanguage},%
showspaces={\tmpshowspaces}, 
showtabs={\tmpshowtabs}, tab=\rightarrowfill,
stepnumber=1, 
numbersep=5pt, 
keywordstyle=\bfseries, 
stringstyle=\ttfamily,
numbers=left, 
numberstyle=\tiny
}
\relax
\begin{lstlisting}
}{%
\end{lstlisting}
}

当我在文档中运行它时,例如:

\begin{codegui}{C}{true}{true}
#include <stdio.h>
int main(){
        printf("hello world");
        return 0;
}
\end{codegui}

我有错误:

! Package Listings Error: language C undefined.
! Emergency stop.

我尝试找出答案,但找不到。请帮帮我!

附录:

  • 参数#1是 C 或 Matlab,
  • 参数#2为真或假,
  • 参数#3相同#2

答案1

\lstnewenvironment{codegui}[3]{%
\lstset{language={#1},%
showspaces={#2},
showtabs={#3}, tab=\rightarrowfill, 
stepnumber=1,
numbersep=5pt, 
keywordstyle=\bfseries, 
stringstyle=\ttfamily,
numbers=left, 
numberstyle=\tiny
}\relax
}{%
}

我用\lstnewenvironment它来定义,效果很好。

相关内容