![如何将 tcolorbox 放入一帧投影仪中](https://linux22.com/image/447481/%E5%A6%82%E4%BD%95%E5%B0%86%20tcolorbox%20%E6%94%BE%E5%85%A5%E4%B8%80%E5%B8%A7%E6%8A%95%E5%BD%B1%E4%BB%AA%E4%B8%AD.png)
我想将 tcolorbox 放在 beamer 类的一个框架中。我创建了 vd 环境,如下面的代码所示。
编译以下代码时出现错误“扫描 \beamer@collect@@body 的使用时文件结束。”请解释原因以及如何更正代码。
先感谢您!
\documentclass[17pt, hyperref={unicode},aspectratio=169]{beamer}
\usepackage{helvet}
\renewcommand{\familydefault}{\sfdefault}
\usepackage[most,many]{tcolorbox}
\newenvironment{vd}{\begin{frame}\begin{tcolorbox}}
{\end{tcolorbox}\end{frame}}
\begin{document}
\begin{frame}
\begin{tcolorbox}
Contents of enviroment.
\end{tcolorbox}
\end{frame}
\begin{vd}
Contents of enviroment.
\end{vd}
\end{document}
答案1
我认为这与 beamer 框架环境收集内容的非常敏感的方式有关。该问题在第 61 页进行了描述Beamer 用户指南(v3.66;第 8.1 节结束)。
\end{...}
基本上,当使用框架定义其他环境时,在结束块中放置另一个命令效果不佳。
Beamer 用户指南建议通过定义进一步启动内部环境的命令来解决这个问题,如下所示:
\documentclass[17pt, hyperref={unicode},aspectratio=169]{beamer}
\usepackage{helvet}
\renewcommand{\familydefault}{\sfdefault}
\usepackage[most,many]{tcolorbox}
\newenvironment{vd}{\begin{frame}\tcolorboxstart}
{\tcolorboxend\end{frame}}
\newcommand{\tcolorboxstart}{\begin{tcolorbox}}
\newcommand{\tcolorboxend}{\end{tcolorbox}}
\begin{document}
\begin{frame}
\begin{tcolorbox}
Contents of environment.
\end{tcolorbox}
\end{frame}
\begin{vd}
Contents of environment.
\end{vd}
\end{document}