以下 MWE 效果很好:
\documentclass{beamer}
\usepackage[most]{tcolorbox}
\begin{document}
\begin{tcolorbox}[title={This is a title},hbox]
This is a body.
\end{tcolorbox}
\end{document}
然而,以下无法编译使用 TeX Live 2018 XeLaTeX:
\documentclass{beamer}
\usepackage[most]{tcolorbox}
\newenvironment{TColorBox}[1]{\begin{tcolorbox}[title=#1,hbox]}
{\end{tcolorbox}}
\begin{document}
\begin{TColorBox}{This is a title}
This is a body.
\end{TColorBox}
\end{document}
为什么前者有效而后者无效?
根本原因是什么?
答案1
您收到的错误消息是
LaTeX 错误:输入行 6 上的 \begin{tcolorbox} 以 \end{TColorBox} 结束。
这是当您尝试定义包含另一个环境的新环境时遇到的一个标准问题,本质上是因为 LaTeX 无法确定接下来需要关闭哪个环境。一种解决方法是使用:
\newenvironment{TColorBox}[1]{\tcolorbox[title=#1,hbox]}{\endtcolorbox}
这是可行的,因为TColorBox
环境不会打开另一个环境。但是,我认为做你想做的事情的“正确”方法是使用\newtcolorbox
:
\documentclass{beamer}
\usepackage[most]{tcolorbox}
\newtcolorbox{TColorBox}[1]{title=#1,hbox}
\begin{document}
\begin{frame}{}
\begin{TColorBox}{This is a title}
This is a body.
\end{TColorBox}
\end{frame}
\end{document}
输出如下: