为什么使用“在文本上方列出”的“tcolorbox”代码列表框不将输出与代码一起保存?

为什么使用“在文本上方列出”的“tcolorbox”代码列表框不将输出与代码一起保存?

我尝试tcolorbox在包含 2 个几何图形的文档中使用输出上方的代码列表。我的尝试完全失败了,我不知道为什么。

问题如下:

问题 tcolorbox

框被分成两部分,实际上只有代码部分看起来在框内。我\fbox在 内的文本周围放置了一个tcolorbox,以便更清楚地表明它和规则都应该在 的下半部分内tcolorbox。相反,剩余部分最终出现在其他地方,并且由于它忽略了向左扩展至页边距的指令,因此它最终超出了页面。此外,即使就其本身而言,它也没有正确浮动:虽然它移动到下一页,留下了代码,但当前页面的其余部分仍为空白,即使框后有材料。

\textwidth盒子内部的宽度反映了边缘的增长,因此页面偏离的问题是由于实际放置盒子时发生位移/未能识别。但当然,即使放置正确,它仍然会与另一半分离。

我怎样才能阻止盒子破碎并确保两个部分最终都按照指令正确定位以扩展到边距?为什么该floatplacement选项不会导致整个东西浮动到整个页面空间?

\pdfminorversion=7
\documentclass{article}
\usepackage{geometry,calc}
\usepackage{kantlipsum}
\usepackage{tcolorbox}
\tcbuselibrary{listings,xparse}
\geometry{headheight=12pt,marginparwidth=45mm,hmarginratio=4:1,vscale=.8,hscale=.7,verbose}
\newlength\tewadjust
\setlength\tewadjust{\marginparwidth+\marginparsep-\paperwidth+\textwidth+\oddsidemargin+1in}
\newdimen\tdimen
\tdimen=\textwidth
\advance \tdimen by \tewadjust
\tcbset{%
  chronos ee/.style={
    float,
    floatplacement={!tbp},
  },
  cod chronos/.style={
    chronos ee=#1,
  },
  cod chronos dew/.style={
    cod chronos=#1,
    grow to left by=\tewadjust,
  },
  every float=\centering,
}
\NewTCBListing[auto counter]{codchronoshirbox}{ s O {} m }
{%
  IfBooleanTF={#1}{cod chronos dew=#3}{cod chronos=#3},
  listing above text,
  halign lower=center,
  #2,
}
% END preamble
\begin{document}
\kant[1-3]

\begin{codchronoshirbox}*[label=event-years-on-line]{Illustration of {event years on line}}
  \noindent\hrule width \textwidth height 30pt\medskip\par
  \noindent\hrule width \tdimen height 30pt\par
  
  \noindent\fbox{\parbox{.9\textwidth}{\kant[8-9]}}
\end{codchronoshirbox}  

\kant[4]
\end{document}

相关内容