在新环境中使用列表

在新环境中使用列表

我正在尝试创建一个新环境或命令(我都试过了),在其中我可以输入 C++ 中方法的名称、描述和代码,它会给我一个新部分,其中包含方法名称、列出的代码和下面的描述。但我无法在新命令或新环境中使用列表环境。考虑我的 MWE

 \documentclass[a4paper,11pt]{article}
\usepackage{listings}

\newcommand{\method}[3]
{
\section{#1}\label{#1}
\begin{lstlisting}
#2
\end{lstlisting}
#3
}

 \begin{document}
 \method{MethodName}{Method Void MethodName()}{Description of the Method blablabla}
 \end{document}

我怎样才能解决这个问题?

我更喜欢使用宏来完成它,因为我不需要结局。

答案1

逐字材料不能放在宏参数中,因为这样材料已经被 TeX 解析,切换到逐字模式就太晚了。对于自定义环境,还listings提供了\lstnewenvironment在逐字材料之前和之后添加自己的代码的功能。遗憾的是,宏没有等效功能。

该解决方案需要在代码之前提供描述,将其存储在临时宏中并将其放在代码之后。

\documentclass{article}
\usepackage{listings}

\lstnewenvironment{method}[2]
  {\section{#1}\label{#1}\def\MethodDescription{#2}}
  {\MethodDescription}

\begin{document}

\begin{method}{MethodName}{Description of the Method blablabla}
Method Void MethodName()
\end{method}

\end{document}

相关内容