首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >\ colorbox→\ NewEnviron→\ newenvironment的三重包装失败?

\ colorbox→\ NewEnviron→\ newenvironment的三重包装失败?
EN

Stack Overflow用户
提问于 2018-09-12 00:30:59
回答 2查看 0关注 0票数 0

我试图将一个用\NewEnviron(包'environ')创建的环境包装成一个旧商品\newenvironment

代码语言:javascript
复制
\NewEnviron{test}{\colorbox[gray]{0.7}{\BODY}}
\newenvironment{wrapper}{\begin{test}}{\end{test}}

\begin{wrapper}
debug me
\end{wrapper}

但是,这给了我一个奇怪的错误:

LaTeX错误:输入行15上的\ begin {test}以\ end {wrapper}结束。LaTeX错误:输入行15上的\ begin {wrapper}以\ end {document}结束。

如果我更换\NewEnviron{test}{aaa(\BODY)bbb}\newenvironment{test}{aaa(}{)bbb}-按预期工作的一切!似乎\NewEnviron由于某种原因未能找到它的终点。

我试图用'floatfig'包装成一个魔法,\colorbox所以我需要一种方法来转换\colorbox为环境并将其包装到另一个环境中。我可以定义一个新命令,但这不是一个好主意。

EN

回答 2

Stack Overflow用户

发布于 2018-09-12 08:40:01

我发现了一个hacky技巧来创建一个可以包装在另一个环境中的环境。应该使用像这样的saveBoxes:

代码语言:javascript
复制
\newenvironment{example}[2][]{%
    \newsavebox{\exampleStore} % Box storage
    \begin{lrbox}{\exampleStore} % Start capturing the input
    }{%
        \end{lrbox} % Stop capturing the input
    \colorbox[gray]{0.7}{%
            \usebox{\NBstorage} % Load the box's contents
            }%
        }%
    }%
票数 0
EN

Stack Overflow用户

发布于 2018-09-12 10:24:12

事情是这样,\NewEviron\newenvironment以不同的方式工作。

1)\newenvironment{test}{aaa(}{)bbb}定义两个命令:\testis aaa(\endtestis )bbb

\begin{test}扩大到\test

\end{test}扩大到\endtest并检查你的范围开头begin{test}相当\begin{something else},例如\begin{wrapper}

2)以不同的方式\NewEviron{test}{aaa(\BODY)bbb}定义\test。首先\test抓住\BODY使用以下技巧

代码语言:javascript
复制
\def\test#1\end{\def\BODY{#1}aaa(\BODY)bbb\testcontinue}

(名称\testcontinue可能不同)和插入aaa(\BODY)bbb。然后\testcontinue检查\end某些输入行上的结果\end{test}而不是\end{something else}\endtest 不需要宏,因为它永远不会被执行。

看看你的代码:

代码语言:javascript
复制
\begin{wrapper}
debug me               
\end{wrapper} 

\begin{wrapper}扩大到\begin{test}。然后 \begin{test}扩展到\test\test抓住\BODY。注意!\BODY等于debug me。现在\testcontionue检查结束\end后。这不是真的。缺席。有。\BODY\end{test}\end{test}\end{wrapper}

你想说\end{wrapper}必须扩展到\end{test}。但\end在包装被吃掉之前

代码语言:javascript
复制
macro \test: #1\end{\def\BODY{#1}aaa(\BODY)bbb\testcontinue}

并且无法执行。

我希望我成功解释。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100006119

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档