如何通过 tikz 和 minipages 在文本和公式周围创建一个框,但它不会跨页面

如何通过 tikz 和 minipages 在文本和公式周围创建一个框,但它不会跨页面

我想创建一个\mybox带有的框tikz,以突出显示环境、数学公式等。下面是基于的 MWE minipage(可以灵活地将几乎任何东西放入框中)。只要框的内容不超过当前页面(请参阅\mybox{\blindtext[2]}),它就可以正常工作。如果框的内容超出当前页面(请参阅\mybox{\blindtext[6]}),则它不会正确分页。这当然是因为minipage。有没有更灵活的方式来定义\mybox,以便它正确地分页?(特别是,我想继续使用tikz框的背景,因为它允许很好地自定义框的形状)。

\documentclass{scrartcl}

\usepackage{blindtext}
\usepackage{xcolor}
\usepackage{calc}
\usepackage{tikz}

\newcommand*{\mybox}[2][\textwidth+4.8mm]{% width (optional), content
  \par\noindent\hspace{-2.4mm}% shift to the left to vertically align text
  \begin{tikzpicture}[mydrawstyle/.style={rounded corners}]%
    \node(mynode)[rounded corners, inner sep=2.4mm, fill=black!12]{%
      \begin{minipage}[t]{#1-4.8mm}%
      #2
      \end{minipage}%
    };
  \end{tikzpicture}%
  \par%
}

\begin{document}
\blindtext[1]
\mybox{\blindtext[6]}% \blindtext[2] works, but \blindtext[6] breaks the page right away (and then doesn't fully fit on the next)
\end{document}

更新

通过合作tcolorbox,我获得:

\usepackage[breakable, skins]{tcolorbox}
\newtcolorbox{mybox}{text width=\textwidth, breakable, skin=enhanced,
                     arc=3mm, left=2mm, top=2mm, right=2mm, bottom=2mm, boxsep=0mm,
                     colback=black!12, colframe=black!12}

\begin{document}
\blindtext[1]
\begin{mybox}
  \blindtext[3]
  \clearpage
  \blindtext[3]
\end{mybox}

目前还不清楚如何缩进框(稍微向左移动)以使其内容与相邻文本垂直对齐(就像上面的 MWE 一样)。

答案1

将放入tcolorbox的节点内tikzpicture也失败了,但我最终找到了选项,enlarge left因此tcolorbox以下内容为我解决了这个问题:

\documentclass{scrartcl}

\usepackage{blindtext}
\usepackage{xcolor}
\usepackage[breakable, skins]{tcolorbox}

\newtcolorbox{mybox}{text width=\textwidth, breakable, skin=enhanced,
  arc=3mm, left=2mm, top=2mm, right=2mm, bottom=2mm, boxsep=0mm,
  enlarge left by=-2mm, colback=black!12, colframe=black!12}

\begin{document}
\blindtext[1]
\begin{mybox}
  \blindtext[6]
\end{mybox}
\end{document}

相关内容