定义一个宏来插入 \begin \end 列表块

定义一个宏来插入 \begin \end 列表块

您能否定义一个宏,将listings代码作为参数并将其插入到\begin{lstlistings} \end{lstlistings}块中?

我的想法是这样的:

\def\blist#1{\begin{lstlisting} #1 \end{lstlisting}}

所以我可以写

\blist{ "this code is inside listings block" }

答案1

首先输入如下内容

\blist{<statement>
  <statement>
  <statement>
  <statement>}

看起来比

\begin{lstlisting}[<options>]
<statement>
<statement>
<statement>
<statement>
\end{lstlisting}

但最终它并没有揭示这一点。首先:\end{lstlisting}在输入中比单个括号更明显。

此外,由于技术原因,“带参数的宏”难以实现lstlisting:这个环境非常相似verbatim(但做更复杂的事情),所以它不能进入​​另一个命令的参数,如果你想要它正确处理所有对 LaTeX 来说是特殊的字符(特别是括号#、、$和)。%

一个好的文本编辑器不仅可以提供帮助,而且还有listings以下特点:如果您想为排版代码块提供特定的选项,您可以定义一个新的环境:

\lstnewenvironment{blist}[1][]
  {\lstset{<common options>,#1}}
  {}

进而

\begin{blist}
<statement>
<statement>
<statement>
<statement>
\end{blist}

将应用排版<common options>。输入起来不太难,而且适合标记您的输入,并使其易于找到使用该通用设置的代码块。您还可以通过以下方式添加“本地选项”

\begin{blist}[<local options>]

相关内容