是否存在与 framebox 作用相同的环境?

是否存在与 framebox 作用相同的环境?

我正在尝试制作一个tcolorboxenvironment。如果没有包tcolorbox,我希望拥有一个与以下方式相同的环境declarenewentry

\newcommand{\declarenewentry}[1]{\medskip\noindent\framebox[\textwidth][l]{\qquad #1}\medskip}

这是我的问题:

是否存在与 作用相同的环境framebox

答案1

下面展示了两种不同的方法来收集环境中的内容。第一种方法(declarenewenryENV)用于lrbox收集盒子里的东西,然后将盒子里的东西插入到你的\framebox(为了方便起见,我只是\declarenewentry在环境中调用)。

第二种方法 ( otherENV) 将环境主体作为参数收集。这种方法编码起来要简单得多,但不允许\verb在文档主体内逐字逐句地使用材料(因此没有 )。

\verb总的来说,如果不需要支持,我认为应该优先考虑第二种方法。

\documentclass[]{article}

\newsavebox\declarenewentryBOX
\newenvironment{declarenewentryENV}
  {\begin{lrbox}\declarenewentryBOX}
  {%
    \end{lrbox}%
    \declarenewentry{\unhbox\declarenewentryBOX}%
  }
\newcommand{\declarenewentry}[1]
  {\medskip\noindent\framebox[\textwidth][l]{\qquad #1}\medskip}

\NewDocumentEnvironment{otherENV}{b}
  {}
  {\declarenewentry{#1}}

\usepackage{duckuments}

\begin{document}
\blindduck
\declarenewentry{abc is def}
\blindduck
\begin{declarenewentryENV}
  abc is def
\end{declarenewentryENV}
\blindduck
\begin{otherENV}
  abc is def
\end{otherENV}
\end{document}

所有三个调用(宏、环境收集一个框、环境收集主体作为参数)在上面显示的小型测试文档中显示完全相同的行为(您可能应该在宏中添加一个\par之前)。\medskip\declarenewentry

结果:

在此处输入图片描述

相关内容