J'essaie de mettre un long texte de deux colonnes dans une boîte tcolorbox avec l'option breakable. Le texte sort de la boîte, et LaTeX ne produit pas de saut de page !

Voici un exemple :

Ouvrir dans l'éditeur Overleaf
\documentclass{article}

\usepackage{multicol,lipsum}

\usepackage[all]{tcolorbox}

\begin{document}

\begin{tcolorbox}[breakable]
\begin{multicols}{2}
\lipsum[1-20]

\end{multicols}

\end{tcolorbox}

\end{document}

Posée 20 Mar '18, 00:28

miyazaki's gravatar image

miyazaki
158713
Taux d'acceptation : 0%

Modifiée 20 Mar '18, 13:22

Pathe's gravatar image

Pathe ♦♦
7.4k28196245

2

L'extension tcolorbox n'est pas compatible avec multicol à 100%, voir la page 373 de la documentation de tcolorbox.

Pour contourner le problème tcolorbox offre la bibliothèque magazine, voir page 387.

(20 Mar '18, 11:17) touhami touhami's gravatar image

@miyazaki Les formules de politesse et les signatures sont à éviter : celle(s) de votre contribution a (ont) été supprimée(s).

(20 Mar '18, 13:23) Pathe ♦♦ Pathe's gravatar image

Merci touhami pour la réponse, le compteur de page numérote les colonnes comme pages séparées.

(20 Mar '18, 16:05) miyazaki miyazaki's gravatar image

Je repose la question autrement : Y a t-il un moyen de créer un environnement avec du texte dans une boîte qui s'étend sur plusieurs pages ?

(23 Mar '18, 00:37) miyazaki miyazaki's gravatar image

C'est simple. Dans votre ECM, il suffit de ne pas utiliser l'environnement multicols.

Je vais essayer de poster une réponse avec multicols.

(23 Mar '18, 01:39) touhami touhami's gravatar image

Voici une idée basée sur l'utilisation de la bibliothèque magazine de tcolorbox

Ouvrir dans l'éditeur Overleaf
\documentclass{article}
\usepackage{lmodern}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{multicol}
\usepackage[most]{tcolorbox}

\usepackage{mwe}

\newcounter{mtctr}

\newcommand{\mtdisplay}{%
\boxarraygetsize{\mtsize}%
\setcounter{mtctr}{0}%
\loop 
    \stepcounter{mtctr}%
    \tcbitem\consumeboxarray{\themtctr}
    \ifnum\value{mtctr}<\mtsize
\repeat}

\newcommand{\mtdim}{%
    \the\dimexpr\pagegoal-\pagetotal-1cm\relax/
    \the\dimexpr\pagegoal-\pagetotal-1cm\relax/
    \the\dimexpr\textheight-1cm\relax}

\newenvironment{mttwocols}{%
\ifdim\dimexpr\pagegoal-\pagetotal-6\baselineskip\relax>0pt\else\newpage\null\vskip-\baselineskip\fi
\begin{tcolorbox}[%
    breakable, 
    blanker,
    width=.43\textwidth,
    break at=\mtdim,
    reset box array,
    store to box array]}{%
\end{tcolorbox}
\tcboxeditemize[% 
    blanker,  
    sharp corners, 
    halign=center, 
    raster columns=2,
    raster valign=top]{breakable}%
\mtdisplay
\endtcboxeditemize}

\begin{document}

\section{Foo}
\lipsum[1]

\begin{mttwocols}
\lipsum[1-20]
\end{mttwocols}

\end{document}

Pour aller plus loin.

Remarques il faut compiler deux fois et il faut supprimer le fichier .aux en cas des changements dans mttwocols.

Limitation mttwocols à utiliser une fois par fichier, mais ce n'est pas difficile d'adapter le code pour l'utilisation multiple, je vais essayer d'ajouter ce qu'il faut prochainement.

Ouvrir dans l'éditeur Overleaf
\documentclass{article}
\usepackage{lmodern}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{multicol}
\usepackage[most]{tcolorbox}

\newcounter{mtctr}

\newcommand{\mtdisplay}{%
\boxarraygetsize{\mtsize}%
\setcounter{mtctr}{0}%
\loop 
    \stepcounter{mtctr}%
    \tcbitem\consumeboxarray{\themtctr}
    \ifnum\value{mtctr}<\mtsize
\repeat}

\AtBeginDocument{
\providecommand{\mtdim}{%
    \the\dimexpr\pagegoal-\pagetotal-1cm\relax/
    \the\dimexpr\pagegoal-\pagetotal-1cm\relax/
    \the\dimexpr\textheight-1cm\relax}}

\makeatletter  
\newcommand{\mtsetdim}{%
\renewcommand{\mtdim}{%
    \the\dimexpr\pagegoal-\pagetotal-1cm\relax/
    \the\dimexpr\pagegoal-\pagetotal-1cm\relax}
\boxarraygetsize{\mtsize}
\global\let\mtsize\mtsize
\boxarraygetbox{\mtbox}{\mtsize}
\ifnum\mtsize>2
    \setcounter{mtctr}{3}
    \loop
        \ifnum\value{mtctr}<\numexpr\mtsize-1\relax
        \xdef\mtdim{\mtdim/ \the\dimexpr\textheight-1cm\relax} 
        \stepcounter{mtctr}
    \repeat
    \ifodd\value{mtctr}
    \xdef\mtht{\the\dimexpr.5\textheight+.5\ht\mtbox+\baselineskip\relax}
    \else
    \xdef\mtht{\the\dimexpr\textheight-1cm\relax/\the\dimexpr.5\ht\mtbox+\baselineskip\relax}
    \fi
    \xdef\mtdim{\mtdim/ \mtht}  
\fi
\immediate\write\@mainaux{\xdef\string\mtdim{\mtdim}}
}
\makeatother

\newenvironment{mttwocols}{%
\ifdim\dimexpr\pagegoal-\pagetotal-6\baselineskip\relax>0pt\else\newpage\null\vskip-\baselineskip\fi
\begin{tcolorbox}[%
    breakable, 
    blanker,
    width=.43\textwidth,
    break at=\mtdim,
    reset box array,
    store to box array]}{%
\end{tcolorbox}
\mtsetdim
\tcboxeditemize[% 
    blanker,  
    sharp corners, 
    halign=center, 
    raster columns=2,
    raster valign=top]{breakable}%
\mtdisplay
\endtcboxeditemize}

\usepackage{mwe}

\begin{document}

\section{Foo}
\lipsum[1]

\begin{mttwocols}
\lipsum[1-20]
\end{mttwocols}

\end{document}
Lien permanent

Publiée 24 Mar '18, 01:24

touhami's gravatar image

touhami
9.7k410
Taux d'acceptation : 51%

Modifiée 25 Mar '18, 16:22

Merci beaucoup pour le temps et le soin apportés !

(25 Mar '18, 14:49) miyazaki miyazaki's gravatar image

Voir ce fil sur TeX.se

(25 Mar '18, 16:16) touhami touhami's gravatar image

@miyazaki voir les remarques ajoutées.

(25 Mar '18, 16:24) touhami touhami's gravatar image

C'est noté merci, il me faut un peu de temps pour digérer le code !

(25 Mar '18, 19:08) miyazaki miyazaki's gravatar image
Votre réponse
(dés)activer l'aperçu

Suivre cette question

Par courriel :

Une fois que vous serez enregistré, vous pourrez souscrire à n'importe quelle mise à jour ici

Par flux RSS :

Réponses

Réponses et commentaires

Bases de Markdown

  • *italique* ou _italique_
  • **gras** ou __gras__
  • Lien ::[texte](http://url.com/ "Titre ")
  • Image : ?![alt texte](/path/img.jpg "Titre ")
  • Liste numérotée : 1. Foo 2. Bar
  • Pour ajouter un passage à la ligne, ajoutez deux espaces à l'endroit où vous souhaitez que la ligne commence.
  • Les balises HTML de base sont également prises en charge.