如何在命令中传递使用 lstlisting 或 lstinline

如何在命令中传递使用 lstlisting 或 lstinline

我正在尝试定义一个命令,该命令通过三个参数(命令编号、输入文本和输出数学)来排版 Maxima 代码。我希望输入文本(第二个参数)格式化为列表。这是我得到的最接近的:

\documentclass{book}

\usepackage{listings}

\newcommand{\maximaio}[3]{
\begin{tabular}{l l}
(\%i#1) &
\lstinline!#2! \\
(\%o#1) &
$ #3 $
\end{tabular}
}

\begin{document}

\maximaio{1}{y
/
(y+1);}{{y}\over{y+1}}

\end{document}

如果您运行此命令,您会发现第二个参数中的换行符格式不正确。我得到的不是三行上的“y”、“/”和“(y+1);”,而是一行上的“y / (y+1);”。

有人可以建议如何将列表传递到这样的命令吗?

答案1

您无法轻松地将逐字内容作为宏参数的一部分传递。因此,我建议使用另一种选择:

在此处输入图片描述

\documentclass{article}

\usepackage{fancyvrb}

\newcommand{\maximaio}[2]{%
  \begin{tabular}{l l}
    (\%i#1) &
    \BUseVerbatim{MaximaCode} \\
    (\%o#1) &
    $ #2 $
  \end{tabular}
}

\begin{document}

\begin{SaveVerbatim}{MaximaCode}
y
/
(y+1);
\end{SaveVerbatim}
\maximaio{1}{\frac{y}{y+1}}

\end{document}

在上面的例子中,SaveVerbatim用于将代码存储在名为 的框中MaximaCode。通过调用\maximaio{<cmd>}{<output>},代码被处理并放置在 中tabular

相关内容