我目前正在使用彩色盒子在圆角边框内创建一个圆角灰色框:
\documentclass{article}
\usepackage[breakable,skins]{tcolorbox}
\usepackage{lipsum}
\newtcolorbox{OuterBox}[1][]{%
breakable,
enhanced,
colback=white,
colframe=blue,
#1}%
\newtcolorbox{InnerBox}[1][]{%
enforce breakable,
enhanced,
colback=gray,
colframe=white,
#1}%
\begin{document}
\begin{OuterBox}
Just a line of text
\begin{InnerBox}
\lipsum[1]
\lipsum[1]
\lipsum[1]
\lipsum[1]
\end{InnerBox}
\end{OuterBox}
\end{document}
在上面的例子中,嵌套tcolorbox
从下一页开始,而不是直接在外框的内容之后继续,这相当混乱。在更复杂的文档中,它会变得非常混乱:
防止内盒被破坏可以修复这些图形故障,这就是为什么文档警告不要使用它:
在极少数情况下,如果您确实希望嵌套框可破坏,请使用
/tcb/enforce breakable
嵌套框。但是,易碎盒子套在易碎盒子里通常会造成一片混乱。
这也是一个限制,因为mdframed
它文档状态:
嵌套的 mdframed 环境无法分割。
是否有支持这种用途的替代包?
答案1
我提出了一个部分解决方案。主要缺点是它依赖于.tex
文件中的后续更改。
这个想法是引入一个命令来结束当前内框并开始一个新内框。如果需要中断,则在文本中插入该命令并实现所需的拆分。
无需强行破坏内盒(没有必要)。
在下面的代码中,命令是\splitbox
。此外,从内框的默认值开始,TikZ 用于为分割框在当前页面的底部和下一个页面的顶部构建尖角。
\documentclass{article}
\usepackage{tikz}
\usepackage[breakable, skins]{tcolorbox}
\usepackage{lipsum}
\newtcolorbox{OuterBox}[1][]{%
breakable,
enhanced,
colback=white,
colframe=blue,
#1
}
\newtcolorbox{InnerBox}[1][]{%
enforce breakable,
enhanced,
colback=yellow,
colframe=yellow,
#1
}
\newcommand{\splitbox}{%
\hfill
\begin{tikzpicture}[remember picture, overlay]
\draw[yellow, line width=1.5ex] (1.55em, -2.2ex) -- +(-1\textwidth-3.1em, 0);
\end{tikzpicture}
\end{InnerBox}
\begin{InnerBox}
\begin{tikzpicture}[remember picture, overlay]
\draw[yellow, line width=1.5ex] (-1.55em, 3.2ex) -- +(1\textwidth+3.1em, 0);
\end{tikzpicture}\hspace{-.7ex}
}
\title{Breaking inner boxes. Trial and error}
\date{\vspace{-8ex}}
\begin{document}
\maketitle
\section{The forced breaking is needed}
\lipsum[7]
\begin{OuterBox}
Just a line of text.
\lipsum[5]
\begin{InnerBox}
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut pu-
rus elit, vestibulum ut, placerat ac, adipiscing vitae, felis. Cur-
abitur dictum gravida mauris. Nam arcu libero, nonummy eget,
consectetuer id, vulputate a, magna. Donec vehicula augue eu
neque. Pellentesque habitant morbi tristique senectus et netus et
malesuada fames ac turpis egestas. Mauris ut leo. Cras viverra
metus rhoncus sem. Nulla et lectus vestibulum urna fringilla ultri-
ces. Phasellus eu tellus sit amet tortor gravida placerat. Integer
sapien est, iaculis in, pretium quis, viverra ac, nunc. Praesent
eget sem vel leo ultrices bibendum. Aenean faucibus. Morbi do-
lor nulla, malesuada eu, pulvinar at, mollis ac, nulla. Curabitur
auctor semper nulla. Donec varius orci eget risus. Duis nibh mi,
congue eu, accumsan eleifend, sagittis quis, diam. Duis eget orci
sit amet orci dignissim rutrum.
\splitbox
Nam dui ligula, fringilla a, euismod sodales, sollicitudin vel, wisi.
Morbi auctor lorem non justo. Nam lacus libero, pretium at,
lobortis vitae, ultricies et, tellus. Donec aliquet, tortor sed ac-
cumsan bibendum, erat ligula aliquet magna, vitae ornare odio
metus a mi. Morbi ac orci et nisl hendrerit mollis. Suspendisse
ut massa. Cras nec ante. Pellentesque a nulla. Cum sociis na-
toque penatibus et magnis dis parturient montes, nascetur ridicu-
lus mus. Aliquam tincidunt urna. Nulla ullamcorper vestibulum
turpis. Pellentesque cursus luctus mauris.
\end{InnerBox}
\lipsum[4]
\end{OuterBox}
\lipsum[5-6]
\end{document}
请注意,由于\lipsum[n]
相对于相邻段落的行为,我在内部框中插入了普通文本(就像在普通文本文件中一样)。