tcolorbox 内部存在可破坏的 tcolorbox(以及边距问题)

tcolorbox 内部存在可破坏的 tcolorbox(以及边距问题)

我想要什么

你好,如上面的简化图所示(颜色与下面的输出有点不同,没关系),我想要制作一张 a5 纸,它可能不是最智能的代码,但我想要页眉、页脚和第一个区域(区域 A,浅蓝色背景,包括区域 B)填满整个纸张的宽度。

A 区是易碎空间(可能 tcolorbox 最好),因为它可以超过一页。它必须延伸到纸张的整个宽度。

区域 B 嵌套在区域 A 内,并且也是易碎(必须是 tcolorbox,或者在最坏的情况下是 tikzpicture,因为我为了简单起见隐藏了一些功能)。我读到 tcolorbox 中的 tcolorbox 默认情况下是牢不可破的,我们应该使用enforce breakable。不幸的是,它不能很好地工作。它似乎在下一页中坏了。所以这是我按优先顺序想要的:

  1. 使区域 A 和区域 B 变得易碎

  2. 底部边距适合下方的 tikzpicture(我甚至尝试使用几何,但似乎不起作用),不要高太多,因为现在如果我们在区域 (C) 中插入文本,它似乎非常高

  3. 减少除第一页之外其他页面的顶部边距(我猜第一页就可以了)。

下面是我的 MWE 及其输出:

\documentclass[8pt,a5paper]{extarticle}
\usepackage[utf8]{inputenc}
\usepackage{fancyhdr}
\usepackage{slantsc}
\usepackage[T1]{fontenc}
\usepackage{tikz}
\usetikzlibrary{tikzmark,shapes.misc,shapes.callouts}
\usepackage[skins,breakable]{tcolorbox}
\usepackage{lipsum}
\usepackage[pass]{geometry}
\geometry{top=0pt,bottom=0pt}
\setlength\parindent{0pt}
\hyphenpenalty=5000
\usepackage{pbsi}
% \DeclareMathAlphabet{\mathbit}{OT1}{cmr}{bx}{it}
% \renewcommand*\oldstylenums[1]{{\fontfamily{Montserrat-TOsF}\selectfont #1}}

\usepackage{helvet} 
\renewcommand{\familydefault}{\sfdefault}


\usepackage[shortlabels]{enumitem}

\newcommand{\fph}{% Definition of first page figure
    \begin{tikzpicture}[
      overlay, xshift=-\oddsidemargin-1in,
      yshift=-3cm+\topskip+1in+\topmargin+\headheight+\headsep]
        \fill[blue!80] (0,0) rectangle (14.8,3);
    \end{tikzpicture}
}

\renewcommand{\headrulewidth}{0.0pt}

\fancypagestyle{my1stpagestyle}{%
    \fancyhead[C]{}
    \fancyfoot[C]{
    \begin{tikzpicture}[
      overlay, xshift=-\oddsidemargin-7.32cm,
      yshift=1.8cm-\topskip-1in-\topmargin-\headheight-\headsep]
        \clip (0,-0.5) rectangle (\paperwidth,1);
    \fill[blue!80] (0,-0.5) rectangle (\paperwidth,1.2);
\foreach \v in {1,...,30} {\fill[white,rounded corners=1] (0.5*\v,1.25) -- ++(0,-0.7) -- ++ (0.05,-0.05) -- ++ (0.05,0.05) -- ++ (0,0.7)  -- cycle;}
\foreach \t in {1,...,8} {\fill[white,rounded corners=1] (2*\t,1.25) -- ++(0,-1) -- ++ (0.05,-0.05) -- ++ (0.05,0.05) -- ++ (0,1)  -- cycle;}
    \end{tikzpicture}
    }
}

\fancypagestyle{generalpagestyle}{%
    \fancyhead[C]{}%running header
    \fancyfoot[C]{\begin{tikzpicture}[
      overlay, xshift=-\oddsidemargin-7.32cm,
      yshift=1.8cm-\topskip-1in-\topmargin-\headheight-\headsep]
        \clip (0,-0.5) rectangle (\paperwidth,1);
    \fill[blue!80] (0,-0.5) rectangle (\paperwidth,1.2);
\foreach \v in {1,...,30} {\fill[white,rounded corners=1] (0.5*\v,1.25) -- ++(0,-0.7) -- ++ (0.05,-0.05) -- ++ (0.05,0.05) -- ++ (0,0.7)  -- cycle;}
\foreach \t in {1,...,8} {\fill[white,rounded corners=1] (2*\t,1.25) -- ++(0,-1) -- ++ (0.05,-0.05) -- ++ (0.05,0.05) -- ++ (0,1)  -- cycle;}
    \end{tikzpicture}
    }
    }
\pagestyle{generalpagestyle}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{document}

    \thispagestyle{my1stpagestyle}
    \fph               % this takes no space

    \vspace*{-2.4cm}
    \hspace*{-1cm}\begin{tcolorbox}[enhanced,breakable,width=\paperwidth+0.08cm,colback=blue!20,frame hidden,sharp corners,enlarge left by=-2.045cm-\@totalleftmargin]
\lipsum[1]
\begin{tcolorbox}[colback=green!20, width=\textwidth,enhanced,breakable,
  enforce breakable, frame hidden]
\lipsum[1-7]
    
\end{tcolorbox}
\end{tcolorbox}
    \lipsum[1-5]

\end{document}

以下是输出的重要问题

第 1 期和第 2 期问题 3

太感谢了

编辑:根据 samcarter_is_at_topanswers.xyz 的评论,这是我期望的第二页的输出(较小的边距):

输出 2

答案1

好吧,我最终手动破坏了 tcolorbox。但边距问题通过删除包pass中的选项得到了解决geometry。相反,我使用了

\documentclass{extarticle}
\usepackage[a5paper]{geometry}
\geometry{top=1cm,bottom=1cm,left=1cm,right=1cm}

相关内容