Utilisation de tcolorbox

Bonjour,
je viens de commencer mon apprentissage de tcolorbox, je souhaiterais obtenir les deux images ci-jointes. J'utilise le code suivant (pris dans le manuel officiel de tcolorbox), mais je n'arrive pas à obtenir le résultat souhaité. Merci pour votre aide.
Yan2
\documentclass[12pt,a4paper]{book}
\usepackage{lmodern}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{xcolor}
\usepackage{amsthm}
\usepackage{tcolorbox}
\usepackage{lmodern}
\usepackage[T1]{fontenc}
\usepackage[tikz]{bclogo}
\usepackage{amsfonts,amssymb}
\usepackage{enumitem, pifont}
\usepackage{fancyhdr}
\usepackage{pstricks}
\usepackage{fancybox}
\usepackage{lipsum}
\usepackage{cleveref}
\usepackage{varioref}
\usepackage{varwidth}
\usepackage{amsthm}
\usepackage{pgfkeys}
\tcbuselibrary{skins, theorems, xparse}
\usepackage{tcolorbox}
\tcbuselibrary{skins, theorems}
\usetikzlibrary{patterns}
\tcbuselibrary{breakable}
 \usepackage{varwidth}
\begin{document}
\newtcolorbox{mybox}[2][]{enhanced,
before skip=2mm,after skip=2mm,
colback=black!5,colframe=black!50,boxrule=0.2mm,
attach boxed title to top left={xshift=1cm,yshift*=1mm-\tcboxedtitleheight},
varwidth boxed title*=-3cm,
boxed title style={frame code={
\path[fill=tcbcolback!30!black]
([yshift=-1mm,xshift=-1mm]frame.north west)
arc[start angle=0,end angle=180,radius=1mm]
([yshift=-1mm,xshift=1mm]frame.north east)
arc[start angle=180,end angle=0,radius=1mm];
\path[left color=tcbcolback!60!black,right color=tcbcolback!60!black,
middle color=tcbcolback!80!black]
([xshift=-2mm]frame.north west) -- ([xshift=2mm]frame.north east)
[rounded corners=1mm]-- ([xshift=1mm,yshift=-1mm]frame.north east)
-- (frame.south east) -- (frame.south west)
-- ([xshift=-1mm,yshift=-1mm]frame.north west)
[sharp corners]-- cycle;
},interior engine=empty,
},
fonttitle=\bfseries,
title={#2},#1}
\begin{mybox}[colbacktitle=green]{My title}
\lipsum[2]
\end{mybox}
\begin{mybox}[colbacktitle=red]{My title}
\lipsum[3]
\end{mybox}
My title
\end{document}
94282

Réponses

  • Peux-tu donner la page du manuel et modifier ton message en utilisant la balise du forum « Code formaté » pour entrer le code (l'icône ressemble à un rectangle blanc comportant du texte) ? Merci.
  • Merci Brian. Il s'agit de la page 166 du manuel de tcolorbox (version 4.22 du 15/11/2019).
    \documentclass[12pt,a4paper]{book}
    \usepackage{lmodern}
    \usepackage[T1]{fontenc}
    \usepackage[utf8]{inputenc}
    \usepackage{xcolor}
    \usepackage{amsthm}
    \usepackage{tcolorbox}
    \usepackage{lmodern}
    \usepackage[T1]{fontenc}
    \usepackage[tikz]{bclogo}
    \usepackage{amsfonts,amssymb}
    \usepackage{enumitem, pifont}
    \usepackage{fancyhdr}
    \usepackage{pstricks}
    \usepackage{fancybox}
    \usepackage{lipsum}
    \usepackage{cleveref}
    \usepackage{varioref}
    \usepackage{varwidth}
    \usepackage{amsthm}
    \usepackage{pgfkeys}
    \tcbuselibrary{skins, theorems, xparse}
    \usepackage{tcolorbox}
    \tcbuselibrary{skins, theorems}
    \usetikzlibrary{patterns}
    \tcbuselibrary{breakable}
    \usepackage{varwidth} 
    \begin{document}
     
    \newtcolorbox{mybox}[2][]{enhanced,
     
    before skip=2mm,after skip=2mm,
     
    colback=black!5,colframe=black!50,boxrule=0.2mm,
     
    attach boxed title to top left={xshift=1cm,yshift*=1mm-\tcboxedtitleheight},
     
    varwidth boxed title*=-3cm,
     
    boxed title style={frame code={
     
    \path[fill=tcbcolback!30!black]
     
    ([yshift=-1mm,xshift=-1mm]frame.north west)
     
    arc[start angle=0,end angle=180,radius=1mm]
     
    ([yshift=-1mm,xshift=1mm]frame.north east)
     
    arc[start angle=180,end angle=0,radius=1mm];
     
    \path[left color=tcbcolback!60!black,right color=tcbcolback!60!black,
     
    middle color=tcbcolback!80!black]
     
    ([xshift=-2mm]frame.north west) -- ([xshift=2mm]frame.north east)
     
    [rounded corners=1mm]-- ([xshift=1mm,yshift=-1mm]frame.north east)
     
    -- (frame.south east) -- (frame.south west)
     
    -- ([xshift=-1mm,yshift=-1mm]frame.north west)
     
    [sharp corners]-- cycle;
     
    },interior engine=empty,
     
    },
     
    fonttitle=\bfseries,
     
    title={#2},#1}
     
    \begin{mybox}[colbacktitle=green]{My title}
     
    \lipsum[2]
     
    \end{mybox}
     
    \begin{mybox}[colbacktitle=red]{My title}
     
    \lipsum[3]
     
    \end{mybox}
     
    My title
     
    \end{document}
    
  • Tu charges beaucoup trop de choses à mon avis. Il faut ne charger que les packages que tu utilises réellement. Voici un exemple complet minimal (ECM) pour les boîtes du manuel que tu as indiquées :
    \documentclass{article}
    \usepackage{varwidth}
    \usepackage{tcolorbox}
    \tcbuselibrary{skins}
    \usepackage{lipsum}
    
    \newtcolorbox{mybox}[2][]{
      enhanced,
      before skip=2mm,after skip=2mm,
      colback=black!5,colframe=black!50,boxrule=0.2mm,
      attach boxed title to top left={xshift=1cm,yshift*=1mm-\tcboxedtitleheight},
      varwidth boxed title*=-3cm,
      boxed title style={
        frame code={
          \path[fill=tcbcolback!30!black]
            ([yshift=-1mm,xshift=-1mm]frame.north west)
            arc[start angle=0,end angle=180,radius=1mm]
            ([yshift=-1mm,xshift=1mm]frame.north east)
            arc[start angle=180,end angle=0,radius=1mm];
          \path[left color=tcbcolback!60!black,right color=tcbcolback!60!black,
                middle color=tcbcolback!80!black]
            ([xshift=-2mm]frame.north west) -- ([xshift=2mm]frame.north east)
            [rounded corners=1mm]--
            ([xshift=1mm,yshift=-1mm]frame.north east) -- (frame.south east) --
            (frame.south west) -- ([xshift=-1mm,yshift=-1mm]frame.north west)
            [sharp corners]-- cycle;
        },
        interior engine=empty,
      },
      fonttitle=\bfseries,
      title={#2},#1
    }
    
    \begin{document}
    
    \begin{mybox}[colbacktitle=green]{My title}
      \lipsum[2]
    \end{mybox}
    
    \begin{mybox}[colbacktitle=red]{My title}
      \lipsum[3]
    \end{mybox}
    
    \end{document}
    

    Concernant ton code, il faut lire les messages d'erreur sur la sortie textuelle de LaTeX. Il y est dit que le package cleveref doit être chargé après d'autres. Sauf cas très particulier, il faut charger cleveref en dernier (voir par exemple sur TeX.SE). Si tu rectifies ça, la compilation fonctionne.
  • j'ai copié et collé ton code Brian, mais ça ne fonctionne pas chez moi, le code d'erreur est :

    undefined control sequence
    \tcb@frame@cod ->path[fill=tcolorback!30black]([yshift=-1mm...

    Le fichier pdf que j'obtiens est attaché au message.

    Merci
    doc.pdf 11.4K
  • Bizarre — chez moi, ça marche bien. Mon fichier log contient entre autres :
    Package: tcolorbox 2019/11/15 version 4.22 text color boxes
    
    Je soupçonne que ton tcolorbox ne soit pas à jour, ou que son installation ait un problème. Normalement, la commande \tcb@frame@code a un 'e' à la fin (c'est peut-être juste le message d'erreur de TeX qui a tronqué le nom de la commande pour toi). Elle a été introduite au plus tard en 2014 avec tcolorbox 3.05.
  • Merci beaucoup Brian. J'ai mis à jour Miktex, et maintenant ça marche !

    Bonne journée,
    Yan2
Connectez-vous ou Inscrivez-vous pour répondre.