latex - 创建一个开始/结束另一个环境的lstnewenvironment时出现问题

标签 latex beamer

我目前正在使用Beamer和 list 包将代码漂亮地打印到Beamer块中。所以我在做什么看起来像:

\begin{block}{}
\begin{lstlisting}
int foobar(void) { return 0; }
\end{lstlisting}
\end{block}

现在,我发现每次启动blocklstlisting环境都很麻烦。我想要一个简单的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/

相关文章:

r - 在Rmarkdown V2给定的DocumentClass

r - RMarkdown->PDF 针织转换文档中出现乱码或缺失 LaTeX 数学公式

r - 如何在 R Markdown 投影仪中打印长(超过 1 页)引用书目?

latex - r-markdown 投影仪演示文稿中的标题页重复

r - 如何在使用 Sweave 的投影仪演示文稿中更改字体?

r - 从 RMarkdown 中提取 LaTeX 图形和标题标签列表以复制到 Overleaf 中

r - 将 sjPlot::tab_model() 或其他 html 表的输出编织成 PDF 文档

r - panelmodel (plm) 对象上的 texreg;额外的政府信息

latex - 为什么我的 subfloat 出现了两次?

latex - Beamer中的半透明图形(pdflatex)