height fixed for=first and middle
当在 上使用该选项时tcolorbox
,分页行为会变得很尴尬。
尝试取消注释以下 MWE 中已标识的行,看看会发生什么。
attach boxed title to top left
有趣的是,如果注释掉该选项,则不会出现此问题。这似乎表明tcolorbox
在使用时无法计算可用的剩余高度boxed title
。也许盒子的高度和/或框架高度没有被考虑在此计算中(可能是tcolorbox
错误?)...
有人能解决这个问题吗?我真的很想让first
和middle
框垂直填充页面,同时保持某种“正常”的分页行为。
今天我电脑上的所有软件包都已更新,但以前的版本也存在这个问题。
平均能量损失:
\documentclass[12pt,letterpaper]{article}
\usepackage{parskip}
\usepackage[usenames,dvipsnames,svgnames,table]{xcolor}
\usepackage{tcolorbox}
\tcbuselibrary{breakable}
\tcbuselibrary{skins}
\usepackage{lipsum}
\tcbset{%
contourskin/.style={%
enhanced,
breakable,
frame hidden,
%height fixed for=first and middle,%% <-- This causes the issue!
parbox=false,
colback=white,
attach boxed title to top left={xshift=12pt},%% <-- Issue does not occur if this line is commented...
boxed title style={enhanced,top=4pt,left=12pt,right=12pt,
frame hidden,
interior style={left color=blue!20,right color=white},
overlay={%
\draw[blue!60,line width=2pt]
([xshift=-.5em,yshift=-1pt]frame.north west)--([xshift=.5em,yshift=-1pt]frame.north east);%
}%
},
coltitle=blue!60!black,
fonttitle=\bfseries\large,
before skip=\baselineskip,
left=12pt,
top=.8em,
drop large lifted shadow,
underlay unbroken={%
\coordinate (coin) at (title.north-|frame.west);
\draw[blue!60,line width=1pt] ([yshift=-1pt]title.north east) -- ([xshift=-0.5pt,yshift=-1pt]coin) -- +(0,-1.2cm);
\draw[blue!60,line width=2pt] ([xshift=-0.5pt,yshift=-1pt-1.2cm]coin) -- ([xshift=-0.5pt]frame.south west);
\draw[blue!60,line width=2pt] ([xshift=-0.5pt]frame.south west) -- (frame.south east);%
},
underlay first={%
\coordinate (coin) at (title.north-|frame.west);
\draw[blue!60,line width=1pt] ([yshift=-1pt]title.north east) -- ([xshift=-0.5pt,yshift=-1pt]coin) -- +(0,-1.2cm);
\draw[blue!60,line width=2pt] ([xshift=-0.5pt,yshift=-1pt-1.2cm]coin) -- ([xshift=-0.5pt]frame.south west);
},
underlay middle={%
\draw[blue!60,line width=2pt] ([xshift=-0.5pt]frame.north west) -- ([xshift=-0.5pt]frame.south west);%
},
underlay last={%
\draw[blue!60,line width=2pt] ([xshift=-0.5pt]frame.north west) -- ([xshift=-0.5pt]frame.south west);
\draw[blue!60,line width=2pt] ([xshift=-0.5pt]frame.south west) -- (frame.south east);%
},%
},
}
\newtcolorbox{mycontourbox}[1][]{contourskin,#1}
\begin{document}
\lipsum[1-2]
\begin{mycontourbox}[title={Example}]
\lipsum[4]
\lipsum[4]
\lipsum[4]
\lipsum[4]
\end{mycontourbox}
\end{document}
带height fixed for
注释行的输出:
输出height fixed for
未注释行:
带attach boxed title to top left
注释行的输出:
答案1
tcolorbox version 3.72 (2015/08/12)
(及更高版本)不存在此问题。以下补丁可用于旧版本。
这是一个tcolorbox
只有通过组合height fixed for
或height fill
与边界框更改一起出现的错误。在内部,boxed title
更改边界框以包含此分离标题。
以下补丁通过将边界框更改纳入部分高度计算中来纠正此错误。此补丁适用于tcolorbox
版本3.71 (2015/07/23)
,也适用于几个较旧的版本3.35 (2015/01/07)
。
% ......
\usepackage{tcolorbox}
\tcbuselibrary{breakable}
\tcbuselibrary{skins}
\makeatletter
\def\tcb@height@fill@unbroken#1{%
\tcb@prepare@break@operation%
\tcb@breakat@init%
\tcbset{compress page=#1}%
\tcb@comp@h@page%
\tcbset{height=\tcb@h@page-\kvtcb@bbtop@stand-\kvtcb@bbbottom@stand,after=\eject}%
}
\def\tcb@break@ch@fixed{%
\ifdim\tcb@natheight<\tcb@h@page\relax%
\tcbdimto\kvtcb@height@fixed{\tcb@h@page-\kvtcb@bbtop-\kvtcb@bbbottom}%
\tcb@ch@fixed%
\else%
\tcb@ch@natural%
\fi%
}
\makeatother
% ......
此补丁将集成到下一tcolorbox
版本3.72
(或更高版本)中。此错误修复版本将很快出现。