我正在尝试创建一个新环境或命令(我都试过了),在其中我可以输入 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}