这两个包environ
都newenviron
提供了 LaTeX 附带的标准环境宏的替代方案。主要区别在于它们可以使用宏引用环境主体,但另一个区别是宏扩展会受到影响。如果没有这个影响,这些包似乎唯一的其他好处就是当您需要多次引用环境主体时。通过宏引用环境主体还有其他用途吗?
答案1
例如,您可以测量环境体并根据测量结果执行不同的事情:
\documentclass{article}
\usepackage{newenviron,lipsum}
\newdimen\hkBstheight
\newenviron{hkBstEnv}{%
\setbox0=\vbox{\hkBstEnvbody}
\hkBstheight=\ht0
\advance\hkBstheight by \dp0
\ifdim\hkBstheight<200pt
{\itshape\hkBstEnvbody}
\else
\hkBstEnvbody
\fi
}
\begin{document}
\begin{hkBstEnv}
\lipsum[1]
\end{hkBstEnv}
\begin{hkBstEnv}
\lipsum[1-2]
\end{hkBstEnv}
\end{document}