我正在尝试定义一个命令,该命令通过三个参数(命令编号、输入文本和输出数学)来排版 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
。