我想在彩色盒子环境,但以下示例显示它忽略了\newpage
命令:
\documentclass[11pt]{book}
\usepackage{lipsum}
\usepackage[breakable,skins]{tcolorbox}
\newtcolorbox{activitybox}{%
breakable,
enhanced,
colback=white,
colframe=black,
coltitle=white,
title={\bfseries Title}
}
\begin{document}
\begin{activitybox}
\lipsum[1]
\newpage
\lipsum[1]
\end{activitybox}
\end{document}
文档表明,唯一的方法是创建一个假突破(第 373 页)我在命令tcolorbox
之间创建了两个独立的环境\newpage
,并将皮肤参数分别设置为skin=enhancedfirst
和 skin=enhancedlast
。
\documentclass[11pt]{book}
\usepackage{lipsum}
\usepackage[breakable,skins]{tcolorbox}
\newtcolorbox{activitybox}[1][]{%
breakable,
enhanced,
colback=white,
colframe=black,
coltitle=white,
#1
}
\begin{document}
\begin{activitybox}[title=Title,skin=enhancedfirst]
\lipsum[1]
\end{activitybox}
\newpage
\begin{activitybox}[skin=enhancedlast]
\lipsum[1]
\end{activitybox}
\end{document}
这个想法的问题在于,新页面可能需要放置在环境中。然后必须提前关闭这些页面并再次打开,同时确保环境状态从之前延续下来。这些环境中可能还存在不应调用的进一步开始和结束定义,因为环境尚未真正结束,并且仍在页面上继续。
另一种解决方案是利用break at
(第 355 页)参数将tcolorbox
在给定长度处断开。这在我的环境中是无法使用的,因为环境的数量tcolorbox
会达到数百个,并且每次编辑文档都需要重新计算每个break at
参数,而这只能在完整呈现文档后才能手动测量新的长度。
在较低级别,分页符可用于以下情况breakable
(第 351 页)已启用,并且tcolourbox
环境需要跨越多个页面。是否可以在更高级别触发该分页符,或者至少用空白垂直空间填充页面的其余部分?
答案1
你可以使用
\documentclass[11pt]{book}
\usepackage{lipsum}
\usepackage[breakable,skins]{tcolorbox}
\newtcolorbox{activitybox}[1][]{%
breakable,
enhanced,
colback=white,
colframe=black,
coltitle=white,
#1
}
\newcommand*{\fakebreak}{\par\vspace{\textheight minus \textheight}\pagebreak}
\begin{document}
\begin{activitybox}[title=Title]
\lipsum[1]
\fakebreak
\lipsum[1]
\end{activitybox}
\end{document}
但请注意,结果是不同的,因为框将填充到页面末尾!
如果您希望自动中断具有类似的行为,请使用选项height fixed for=first and middle
:
\documentclass[11pt]{book}
\usepackage{lipsum}
\usepackage[breakable,skins]{tcolorbox}
\newtcolorbox{activitybox}[1][]{%
breakable,
enhanced,
colback=white,
colframe=black,
coltitle=white,
#1
}
\newcommand*{\fakebreak}{\par\vspace{\textheight minus \textheight}\pagebreak}
\begin{document}
\begin{activitybox}[title=Title,height fixed for=first and middle]
\lipsum[1]
\fakebreak
\lipsum[1-2]
\parbox{\linewidth}{\lipsum[3-4]}% \parbox used to force an early page break
\lipsum[5-7]
\end{activitybox}
\end{document}