如何让tcolorbox跨两页分页?不想使用[tbh]选项
让自定义tcolorbox跨页分页的解决方案
问题描述
接触LaTeX时间不长,自定义了myDefinition环境的tcolorbox,当内容过长时希望能跨两页自动分页,但不想使用[tbh]选项。
自定义盒子代码:
\newtcolorbox[auto counter,number within=chapter,]{myDefinition}[3][]{ arc=5mm, lower separated=false, fonttitle=\bfseries, colbacktitle=blue!10, coltitle=blue!50!black, enhanced, attach boxed title to top left={xshift=0.5cm, yshift=-2mm}, colframe=blue!50!black, colback=blue!10, overlay={ \node[draw=blue!50!black,thick, %inner sep=2mm, fill= blue!10,rounded corners=1mm, yshift=0pt, xshift=-0.5cm, left, text=blue!50!black, anchor=east, font=\bfseries] at (frame.north east) {#3};}, overlay={ \node[draw=blue!50!black,thick, %inner sep=2mm, fill= blue!10,rounded corners=1mm, yshift=+1.2mm, %hier geaendert xshift=-0.5cm, left, text=blue!50!black, anchor=east, font=\bfseries] at (frame.north east) {#3};}, title=#2 \thetcbcounter,#1}
示例使用代码:
\begin{myDefinition}[]{Definition}{title} text \end{myDefinition}
解决方案
要实现可分页的tcolorbox,核心是添加分页支持选项,同时修正代码冗余并适配分页后的样式逻辑:
1. 修正冗余代码
你当前代码里写了两个完全重复的overlay,第二个会覆盖第一个,保留调整过yshift的那个即可。
2. 添加分页支持并适配样式
在myDefinition的选项中加入breakable开启分页功能,同时用overlay first替代原overlay,确保右上角的节点仅在第一页显示(避免分页后每页重复出现)。
修改后的完整代码:
\newtcolorbox[auto counter,number within=chapter,]{myDefinition}[3][]{ arc=5mm, lower separated=false, fonttitle=\bfseries, colbacktitle=blue!10, coltitle=blue!50!black, enhanced, breakable, % 开启跨页分页支持 attach boxed title to top left={xshift=0.5cm, yshift=-2mm}, colframe=blue!50!black, colback=blue!10, % 仅在第一页显示右上角的标题节点 overlay first={ \node[draw=blue!50!black,thick, fill=blue!10,rounded corners=1mm, yshift=+1.2mm, xshift=-0.5cm, left, text=blue!50!black, anchor=east, font=\bfseries] at (frame.north east) {#3}; }, title=#2 \thetcbcounter, #1 }
3. 效果说明
breakable选项会让盒子内容超过一页时自动分页;overlay first确保右上角的自定义标题仅在第一页显示,保持分页后的样式整洁;- 若需要为中间页、最后页设置特定样式,可继续添加
overlay middle或overlay last来定义对应元素。
测试示例
\begin{myDefinition}[]{Definition}{自定义定义} 这里输入长文本测试跨页效果: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. \end{myDefinition}
内容的提问来源于stack exchange,提问作者UnknownUser
相关产品推荐
相关产品推荐

