以下代码仅用于实验。它会产生一个带框的框(看起来像\fbox{\parbox{2in}{...}}
)。但它失败了。我的代码有什么问题?
然而,本例中的框架框不是我的根本动机。我想学习如何environment
在宏的语法必须拆分时构造一个新的,以及如何使用\bgroup
和egroup
。
代码:
\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}