如何编写环境包装文档环境

如何编写环境包装文档环境

我正在整理我的研究小组制作海报时使用的一些图案。由于我们使用 beamer 和 beamerposter 来制作这些海报,因此所有文档基本上都是这样的:

\documentclass{beamer}

\begin{document}
\begin{frame}

\end{frame}
\end{document}

我想将其简化为:

\documentclass{ourposter}

\begin{poster}

\end{poster}

因此我尝试将海报环境实现为\newenvironment{poster}{\begin{document}\begin{frame}}{\end{frame}\end{document}}

不幸的是,这似乎是错误的做法,因为latex响应为:LaTeX 错误:输入第 10 行的 \begin{poster} 以 \end{document} 结尾。我可以通过将 begin/end document 替换为\document/来解决这个\enddocument问题,但我对此有点谨慎。

正确的方法是避开 LaTeX 环境并直接使用命令,还是有更好的方法?

答案1

一般来说

\documentclass{ourposter}
\begin{document}
\end{document}

\AtBeginDocument{\begin{frame}}
\AtEndDocument{\end{frame}}

在您的类中应该可以工作。但是,对于基于的文档类beamer,它不起作用。似乎 beamerframe环境对于如何调用它以及何时启动和关闭它很敏感。使用类,beamer您可以执行以下操作

\documentclass{beamer}
\usepackage{etoolbox}
\AfterEndPreamble{\begin{frame}}
\let\myenddocument\enddocument
\def\enddocument{\end{frame}\myenddocument}
\begin{document}
hello world
\end{document}

答案2

\documentclass{beamer}
\newenvironment{poster}
  {\document\begin{frame}}
  {\end{frame}\enddocument}
\begin{poster}
\frametitle{My Frame}
foo \pause bar
\end{poster}

然而,我看不出这有什么意义......

相关内容