双列文档,其中 tcolorbox 横跨两列

双列文档,其中 tcolorbox 横跨两列

我正在尝试制作一个文档,以便双栏书籍文档中的彩色框跨越两栏,但我不知道该怎么做。这是我的测试。

\documentclass[10pt,twoside,twocolumn,openany]{book}
\usepackage[most]{tcolorbox}
\usepackage{xcolor}
\usepackage{lipsum}

\definecolor{monstertan}{HTML}{FDF1DC}  %e.g. used for newer monsterblock
\definecolor{iron}{HTML}{CBCDCD}    %e.g. used for older monsterbox
\definecolor{undergold}{HTML}{C9AD6A}   % e.g. used for titlerules
\definecolor{uppergold}{HTML}{B89A67}   %e.g. used for pagenumbers and footer
\definecolor{brass}{HTML}{B5A642}
\definecolor{copper}{HTML}{b87333}
\definecolor{black}{HTML}{000000}

\DeclareTColorBox{paperbox}{O{} m O{iron}}{
    frame hidden,
    boxrule=0pt,
    breakable,
    enhanced,
    before skip=11pt plus 1pt,
    toptitle=3mm,
    boxsep=0.25ex,
    left=8pt,
    right=8pt,
    fonttitle=\fontfamily{fosj}\selectfont\scshape\bfseries\color{brass},
    fontupper=\fontfamily{lmss}\selectfont,
    title=#2,
    arc=0mm,
    parbox = false,
    borderline north={1pt}{-0.5pt}{brown},
    borderline south={1pt}{-0.5pt}{brown},
    colback=#3,
    colframe=#3,
    colbacktitle=#3,
    fuzzy shadow={0mm}{-3.5pt}{-0.5pt}{0.4mm}{black!60!white},
    overlay={
        \fill [fill=brown] (frame.south west) -- ++(7pt,0) -- ++(0,-5pt) -- cycle;
        \fill [fill=brown] (frame.north west) -- ++(7pt,0) -- ++(0,5pt) -- cycle;
        \fill [fill=brown] (frame.north east) -- ++(-7pt,0) -- ++(0,5pt) -- cycle;
        \fill [fill=brown] (frame.south east) -- ++(-7pt,0) -- ++(0,-5pt) -- cycle;
    },
    after={\vspace{10pt plus 1pt}\noindent},
    #1
}

\begin{document}
\lipsum*
\begin{paperbox}[width=200px]{lipsum}
\lipsum
\end{paperbox}
\end{document}

我该如何去做呢?

答案1

一个替代方案multicol可能是cuted

姆韦

\documentclass[a4paper,twocolumn]{article}
\usepackage{cuted,tcolorbox,lipsum}
\begin{document}
\lipsum[1]
\begin{strip}
\begin{tcolorbox}[title=A tcolorbox]
    \lipsum[2]
\end{tcolorbox}
\end{strip}
\lipsum[3-6]
\end{document}

答案2

这是一个多列解决方案。另请参阅tcolorbox 中的多色

\documentclass[10pt,twoside,openany]{book}
\usepackage[most]{tcolorbox}
\usepackage{xcolor}
\usepackage{lipsum}
\usepackage{multicol}

\definecolor{monstertan}{HTML}{FDF1DC}  %e.g. used for newer monsterblock
\definecolor{iron}{HTML}{CBCDCD}    %e.g. used for older monsterbox
\definecolor{undergold}{HTML}{C9AD6A}   % e.g. used for titlerules
\definecolor{uppergold}{HTML}{B89A67}   %e.g. used for pagenumbers and footer
\definecolor{brass}{HTML}{B5A642}
\definecolor{copper}{HTML}{b87333}
\definecolor{black}{HTML}{000000}

\DeclareTColorBox{paperbox}{O{} m O{iron}}{
    frame hidden,
    boxrule=0pt,
    breakable,
    enhanced,
    before skip=11pt plus 1pt,
    toptitle=3mm,
    boxsep=0.25ex,
    left=8pt,
    right=8pt,
    fonttitle=\fontfamily{fosj}\selectfont\scshape\bfseries\color{brass},
    fontupper=\fontfamily{lmss}\selectfont,
    title=#2,
    arc=0mm,
    parbox = false,
    borderline north={1pt}{-0.5pt}{brown},
    borderline south={1pt}{-0.5pt}{brown},
    colback=#3,
    colframe=#3,
    colbacktitle=#3,
    fuzzy shadow={0mm}{-3.5pt}{-0.5pt}{0.4mm}{black!60!white},
    overlay={
        \fill [fill=brown] (frame.south west) -- ++(7pt,0) -- ++(0,-5pt) -- cycle;
        \fill [fill=brown] (frame.north west) -- ++(7pt,0) -- ++(0,5pt) -- cycle;
        \fill [fill=brown] (frame.north east) -- ++(-7pt,0) -- ++(0,5pt) -- cycle;
        \fill [fill=brown] (frame.south east) -- ++(-7pt,0) -- ++(0,-5pt) -- cycle;
    },
    after={\vspace{10pt plus 1pt}\noindent},
    #1
}

\begin{document}
\begin{multicols}{2}
\lipsum[1-4]
\end{multicols}
\begin{paperbox}{lipsum}
\lipsum[1-4]
\end{paperbox}
\begin{multicols}{2}
\lipsum[1-4]
\end{multicols}
\end{document}

答案3

在以前的解决方案中,文本在 tcolorbox 之前从左列流向右列,并在 tcolorbox 之前继续从左列流向右列。如果这是所需的行为,我没有什么可补充的。但是,如果您希望文本在 tcolorbox 之前和之后在左列流动,然后流向右列,以下代码显示了部分(手动)解决方案。

它使用tcolorbox magazinetcbraster库以及multicol选项twocolumn

您应该知道文本的哪一部分将出现在中断的页面上,并决定四个文本片段的长度。我通过反复试验确定它们的大小。所有这些文本将插入到环境中,该环境将对其进行分段并产生 6 个片段。稍后,所有这些片段都将放在我们的纸上。带有 tcolorbox 的页面由一个放置了 4 个中心片段的环境mybox组成。tcbraster

为了区分fragmented文本和常规文本,我在每个片段后面添加了水印编号。

我必须说最终的调整并不完美,但我不知道如何改进它。

最终的构图如下:

在此处输入图片描述

tcolorbox 页面的详细信息如下:

在此处输入图片描述

\documentclass[12pt,a4paper]{article}
\usepackage[most]{tcolorbox}
\usepackage{lipsum}
\usepackage{multicol}

\newtcolorbox{mybox}[1][]{
    enhanced,
    breakable,
    blanker,
    notitle,
    colback=green!7,
    break at=\pagegoal-\pagetotal-8mm/5cm/10.5cm/5cm/10.5cm/0pt,
    reset box array,
    store to box array,
    watermark text=\arabic{tcbbreakpart},
    width=\linewidth,
    #1
}

\begin{document}
\begin{multicols}{2}
\lipsum[1-3]
\begin{mybox}
\lipsum[4-9]
\end{mybox}
\consumetcboxarray{1}{blanker,before=\par\vfill\noindent}
\end{multicols}
\begin{tcbitemize}[raster columns=2, raster valign=top]
\tcbitem[blanker]\consumeboxarray{2}
\tcbitem[blanker]\consumeboxarray{4}
\tcbitem[raster multicolumn=2, title=A tcolorbox, rounded corners, colframe=black, colback=pink, size=normal]
\lipsum[2]
\tcbitem[blanker]\consumeboxarray{3}
\tcbitem[blanker]\consumeboxarray{5}
\end{tcbitemize}
\begin{multicols}{2}
\consumetcboxarray{6}{blanker,before=\par\vfill\noindent}
\lipsum[10-13]
\end{multicols}
\end{document}

相关内容