使用 \bgroup...\egroup 构建新环境

使用 \bgroup...\egroup 构建新环境

以下代码仅用于实验。它会产生一个带框的框(看起来像\fbox{\parbox{2in}{...}})。但它失败了。我的代码有什么问题?

然而,本例中的框架框不是我的根本动机。我想学习如何environment在宏的语法必须拆分时构造一个新的,以及如何使用\bgroupegroup

代码:

\documentclass{article}

\newenvironment{myframebox}[1]
{\fbox\bgroup\parbox{#1}\bgroup}
{\egroup\egroup}

\begin{document}
\begin{myframebox}{2in}
  some thing\par some thing
\end{myframebox}
\end{document}

答案1

该命令\fbox需要明确的 {在它之后而不是\bgroup。对于 也类似\parbox

可以,不过在 之前需要先建好 box,\fbox而且需要使用 的环境形式\parbox,也就是minipage

\newsavebox{\myframeboxbox}
\newenvironment{myframebox}[1]
 {\begin{lrbox}{\myframeboxbox}\begin{minipage}{#1}}
 {\end{minipage}\end{lrbox}\fbox{\usebox{\myframeboxbox}}}

或者

\NewDocumentEnvironment{myframebox}{m +b}
 {\fbox{\parbox{#1}{#2}}}
 {}

因为+b抓取了直到的所有内容\end{myframebox}。这意味着内容中允许+有空行或标记。\par

尝试以下错误输入,看看出了什么问题。

\documentclass{article}
\begin{document}

\fbox\bgroup abc\egroup

\parbox{2in}\bgroup some text that should fill two inches and
split across lines\egroup

\end{document}

相关内容