如何将 mdframe 存储在保存框中?

如何将 mdframe 存储在保存框中?

标题问题是我需要的最后一条信息,以便以我的方式解决问题。在 mdenvironment 周围放置\sboxor环境会产生一个lrbox

! Missing \endgroup inserted.

我不知道该如何解决。

(MWE 可在底部找到)


也许有一个完全不同的更好的方法,所以这里是完整的故事:

我正在开发几个环境,以便使用 beamer 类轻松创建幻灯片。目前,我想放置一个框(如果内容很重要,则为图像)相对于 mdframe 环境的位置和/或尺寸,作为一种标签。

mdframe 环境,内容和右上角的图像

图中说明了我想要创建的元素类型。最终,许多这样的元素将被分组为一个环境,该环境在编译时将元素相互排列,以使事物看起来美观。

我的问题是放置标签,即示例图像中的闪电。这非常困难,因为 \ldots

  1. 如果我把它放在 mdenvironment 之前,mdenvironment 就会覆盖它,这样就只能看到闪电的上半部分。

  2. 如果我把它放入 mdenvironment,我就找不到可靠的方法来计算如何将闪电移动到它应该在的位置。

  3. 如果我把它放在 mdenvironment 之后,我需要确定 mdenvironment 的高度和深度,以计算需要将标签向上移动多远

从我的角度来看,选项 1 的问题无法解决。总的来说,我想我花了 8 个小时尝试让选项 2 工作,但失败了。第三个选项似乎可行,但在mdenvironment 周围放置一个\sbox或环境会产生lrbox

! Missing \endgroup inserted.

我无法解决。

这是一个几乎最小的工作示例:

\documentclass{article}
\usepackage[framemethod=pgf]{mdframed}


\newmdenv[%
   innerlinewidth=2pt,%
   roundcorner=10pt,%
   linecolor=black,%
   backgroundcolor=white,%
   skipabove=.5\baselineskip,skipbelow=.5\baselineskip,%
   innerleftmargin=5pt,innerrightmargin=5pt,innertopmargin=5pt,innerbottommargin=5pt%
]{mybox}

\begin{document}

\sbox0{%
   \begin{mybox}
        This is some text.
  \end{mybox}
}

\end{document}

几乎是最小的,因为我留下了对 mdenvironment 的规范,因为我不知道它对于解决问题有多重要。

我(我想我)需要把它放进一个盒子里才能获得它的高度和深度,不是吗?

答案1

您需要将其包装在垂直盒子中,例如minipage

\documentclass{article}
\usepackage[framemethod=pgf]{mdframed}


\newmdenv[%
   innerlinewidth=2pt,%
   roundcorner=10pt,%
   linecolor=black,%
   backgroundcolor=white,%
   skipabove=.5\baselineskip,skipbelow=.5\baselineskip,%
   innerleftmargin=5pt,innerrightmargin=5pt,innertopmargin=5pt,innerbottommargin=5pt%
]{mybox}

\begin{document}

\begin{lrbox}{0}\begin{minipage}{\textwidth}
   \begin{mybox}
        This is some text.
  \end{mybox}
\end{minipage}\end{lrbox}

\the\ht0,\the\dp0

\end{document}

答案2

正如 David 在他的回答中所评论的那样,你需要一个小页面。如果你切换到tcolorbox,您可以使用密钥以更简单(更简短)的方式执行此操作,capture该密钥允许您以多种方式捕获框,包括minipage。 重现您的框的小例子:

\documentclass{article}
\usepackage[many]{tcolorbox}

\newtcolorbox{myboxi}[1][]{
  breakable,
  colback=white,
  colframe=black,
  arc=8pt,
  boxrule=2pt,
  left=5pt,
  right=5pt,
  top=5pt,
  bottom=5pt,
  boxsep=0pt,
  minipage,
  #1
}

\begin{document}

\sbox0{%
   \begin{myboxi}
        This is some text.
  \end{myboxi}}

Width: \the\wd0,
height: \the\ht0,
depth: \the\dp0.

\end{document}

盒子尺寸

tcolorboxbeamer还为您提供良好的功能,使其与皮肤顺利融合beamer

相关内容