我目前正在使用Beamer和 list 包将代码漂亮地打印到Beamer块中。所以我在做什么看起来像:
\begin{block}{}
\begin{lstlisting}
int foobar(void) { return 0; }
\end{lstlisting}
\end{block}
现在,我发现每次启动
block
和lstlisting
环境都很麻烦。我想要一个简单的codeblock
环境,即可完成此工作:\begin{codeblock}
int foobar(void) { return 0; }
\end{codeblock}
所以,我尝试了类似的东西:
\lstnewenvironment{codeblock}
{\begin{block}{}}
{\end{block}}
但不幸的是,Beamer文档不再编译,出现以下错误:
! Missing } inserted.
<inserted text>
}
l.178 \end{frame}
?
有什么办法可以做到这一点?
在Problem with creating a newenvironment in LaTeX中,Andreas Grech遇到了同样的问题,但是由于有另一种进入/退出封闭环境的方法,它可以解决。但是对于
block
Beamer环境,看来除了\begin{block}...\end{block}
别无其他方法。
最佳答案
我有同样的问题,找不到解决方案。我的解决方法是使用\lstinputlisting命令并将代码存储在单独的文件中。如果您要包含真实代码,那就太好了。对于小例子则不是这样。
另一个解决方法是在启动{frame}环境之前将代码片段放入变量中,然后对其进行引用。 latex 束文档中说明了如何执行此操作。它还将允许您使用自定义环境/命令。
关于latex - 创建一个开始/结束另一个环境的lstnewenvironment时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5191497/