我想创建一个\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}