tcolorbox 在多色环境中易损坏

tcolorbox 在多色环境中易损坏

我希望我的 tcolorboxes 可以在多色环境中使用可破坏的。但它们不会破坏。另外:

\documentclass[a4paper, twocolumn]{article}

对我来说不起作用,因为对于某些部分,我需要整个页面,而对于某些部分,我想要多列。

我的标题是:

\usepackage[english]{babel}
\usepackage[utf8]{inputenc}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{multicol}
\usepackage[svgnames]{xcolor}                           % colour extension
\usepackage{graphicx}
\usepackage[colorinlistoftodos]{todonotes}              % Todo notes
\usepackage[sfdefault,thin]{roboto}                     % Roboto font
\usepackage{fullpage}
\usepackage{longtable}                                  
\usepackage{tcolorbox}                                  % Colored boxes
\usepackage{xparse}                     % For squeezing of section titles
\tcbuselibrary{skins,breakable}              % breakable for tcolorboxes

我的 tcolorbox 是:

\newenvironment{tada}
{\begin{tcolorbox}[colback=Green!14!white,
colframe=Green!10!blue!29!white,
sharp corners, breakable]}{\end{tcolorbox}} 

我这样称呼它:

\begin{multicols}{2}

\begin{tada}
** Here should be written the lipsum text **
\end{tada}

\end{multicols}

现在,如果那是在页面的末尾,那么长的 lipsum 文本就不会因为 tcolorbox 的分割而被打断,而应该由命令易碎多于。

有人知道如何解决这个问题吗?

答案1

我的一个文档也遇到了同样的问题,解决此问题的方法是来自 egreg 的这个答案,所以我也在这里包含了代码。

\RenewDocumentEnvironment{multicols}{mO{}}
 {%
  \ifnum#1=1
    #2%
  \else % More than 1 column
    \multicolmulticols{#1}[#2]
  \fi
 }
 {%
  \ifnum#1=1
  \else % More than 1 column
    \endmulticolmulticols
  \fi
 }

我希望这就是您所寻找的(完整的 MWE 如下)。

tcolorbox 多列可破坏

\documentclass[a4paper,]{article}
\usepackage{lipsum} %to use lipsum
\usepackage[english]{babel}
\usepackage[utf8]{inputenc}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{multicol}
\usepackage[svgnames]{xcolor}                           
\usepackage{graphicx}
\usepackage[colorinlistoftodos]{todonotes}              
\usepackage[sfdefault,thin]{roboto}                     
\usepackage{fullpage}
\usepackage{longtable}                                  
\usepackage[many]{tcolorbox}                                  
\usepackage{xparse}                    
\tcbuselibrary{skins,breakable}              
\newenvironment{tada}
{\begin{tcolorbox}[enhanced jigsaw, colback=Green!14!white,
colframe=Green!10!blue!29!white,
sharp corners, breakable]}{\end{tcolorbox}} 
%
\let\multicolmulticols\multicols
\let\endmulticolmulticols\endmulticols

\RenewDocumentEnvironment{multicols}{mO{}}
 {%
  \ifnum#1=1
    #2%
  \else % More than 1 column
    \multicolmulticols{#1}[#2]
  \fi
 }
 {%
  \ifnum#1=1
  \else % More than 1 column
    \endmulticolmulticols
  \fi
 }
%

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

相关内容