如何使 tcolorbox 覆盖跨多个页面

如何使 tcolorbox 覆盖跨多个页面

我想将两列(主要是)文本跨越多页(以创建简历)。我在如何制作跨多个页面的迷你页面这几乎正​​是我想要做的。

然而,在 statet 解决方案中,左列仅跨越第一页,因此

+-----------------+
|      Header     |
+------+----------+
|      |          |
|      |          |
| side |   Body   |
| bar  |          |
|      |          |
|      |          |
|      |          |
+------+----------+
       ~pagebreak~ 
       +----------+
       |          |
       |          |
       |          |
       |          |
       +----------+

如果侧边栏的内容超出一页的空间,则不会分页到下一页。我该如何修改代码(覆盖部分)的状态解决方案

\documentclass{article}
\usepackage[skins,breakable]{tcolorbox}
\usepackage{lipsum}% example texts
\begin{document}

\textcolor{red}{Header} %  <------------------------
\lipsum[1]

\begin{tcolorbox}[
  blanker,
  width=0.64\textwidth,enlarge left by=0.36\textwidth,
  before skip=6pt,
  breakable,
  overlay unbroken and first={%
    \node[inner sep=0pt,outer sep=0pt,text width=0.33\textwidth,
      align=none,
      below right]
      at ([xshift=-0.36\textwidth]frame.north west)
  {%
    \textcolor{red}{Sidebar} %  <------------------------
    \lipsum[2]
  };}]
\textcolor{red}{Body}: %  <------------------------
\lipsum[3-7]
\textcolor{red}{End of body}
\end{tcolorbox}

\end{document}

将侧边栏的内容分成两列(或多列),使其看起来像

+-----------------+
|      Header     |
+------+----------+
|      |          |
|      |          |
| side |   Body   |
| bar  |          |
|      |          |
|      |          |
|      |          |
+------+----------+
    ~pagebreak~ 
+------+----------+
|      |          |
|      |          |
|      |          |
|      |          |
+------+----------+

答案1

这是一个手动解决方案,当机身仅断成两部分时有效。

它使用magazine库将文本分成几部分并存储起来以供以后使用(参见它的起源tcolorbox:可以存储可破坏的 tcolorbox 的各个部分以供日后使用吗?)。

我不知道如何知道主体第一个片段的高度,以便在分割侧边栏时使用。因此,我进行了一些反复试验,直到找到最终值。当侧边栏被分成两个片段并存储到数组中时,我们可以在覆盖节点unbroken and firstlast覆盖选项中使用这些片段。

\documentclass{article}
\usepackage[most]{tcolorbox} %<--- change to most to include magazine.
\usepackage{lipsum}% example texts
\begin{document}

\begin{tcolorbox}[
    blanker,
    width=0.33\textwidth,
    breakable,
    break at=14cm/0pt,
    reset box array,
    store to box array]
    \textcolor{red}{Sidebar} %  <------------------------
    \lipsum[2-3]
\end{tcolorbox}


\textcolor{red}{Header} %  <------------------------
\lipsum[1]

\begin{tcolorbox}[
  blanker,
  width=0.64\textwidth,enlarge left by=0.36\textwidth,
  before skip=6pt,
  breakable,
  overlay unbroken and first={%
    \node[inner sep=0pt,outer sep=0pt,text width=0.33\textwidth,
      align=none,
      below right]
      at ([xshift=-0.36\textwidth]frame.north west)
  {%
    \useboxarray{1}
  };},
  overlay last={%
    \node[inner sep=0pt,outer sep=0pt,text width=0.33\textwidth,
      align=none,
      below right]
      at ([xshift=-0.36\textwidth]frame.north west)
  {%
    \useboxarray{2}
  };},
  ]
\textcolor{red}{Body}: %  <------------------------
\lipsum[3-7]
\textcolor{red}{End of body}
\end{tcolorbox}

\end{document}

在此处输入图片描述

答案2

我最终使用了彩色盒子对于两列,嵌套在帕拉科尔环境,例如

\documentclass[10pt, a4paper]{report}

\usepackage{lipsum}
\usepackage{geometry}
\usepackage[skins,breakable]{tcolorbox}
\usepackage{paracol}

\geometry{a4paper, left=5mm, right=20mm, top=15mm, bottom=25mm}

\begin{document}

\setcolumnwidth{34mm, 10cm}
\setlength{\columnsep}{7mm}

\begin{paracol}{2}
    \begin{tcolorbox}[blanker, breakable, width=\linewidth]
        \lipsum[1-5]
    \end{tcolorbox}
    \switchcolumn
    \begin{tcolorbox}[blanker, breakable, width=\linewidth]
        \lipsum[1-10]
    \end{tcolorbox}
\end{paracol}

\end{document}

相关内容