environnement théorème

Bonjour.
J'ai longtemps cherché mais je tourne en rond alors je vous sollicite.
J'aimerais réussir à définir un "environnement" en en-tête qui me permette d'obtenir quelque chose comme donné en pièce jointe.

J'insiste sur les points suivants :
il faudrait que tout le paragraphe soit encadré
facilement changer les bords : \ovalbox ou \shabox ...
il faudrait que "théorème" ou "définition" soit écrit sur la ligne supérieure du cadre, ni centré ni aligné à gauche
on ne numérote pas les "définitions" ou "théorèmes"


Dans l'idéal on ne définirait qu'un seul nouvel environnement "th" par exemple et si je tape dans mon document
\begin{th}[Formule de Green-Riemann][oval]
blabla
\end{th}
alors ça m'affiche mon blabla dans un cadre aux bords arrondis avec comme titre "Formule de Green-Riemann"

si ce n'est pas possible on définit des environnements différents suivant le type de "bords" souhaité

En espérant avoir été clair ; si vous pensez avoir une solution je vous remercie par avance.70414

Réponses

  • Pourquoi est-ce que c'est mieux de définir un environnement avec une option qui prend deux valeurs possibles plutôt que deux environnements différents ?

    Est-ce que tu as regardé ce post, c'est-à-dire tcolorbox ?
  • Alors j'ai cherché avec tcolorbox j'arrive à faire des trucs pas mal. En pompant sans scrupule sur internet je suis arrivé à cette syntaxe
    \usepackage{tcolorbox}
    \tcbuselibrary{breakable,skins}
    
    \newcounter{exe}                          
    \newcommand{\mytitle}{                  
       \node[fill=white,%rounded corners,
    			draw=white,text=black,line width=3pt,inner sep=4pt,anchor=west,xshift=60pt]
       at (frame.north west){\bfseries Exercice \stepcounter{exe}\theexe.};}
    
    \newtcolorbox{boite}{                      
       drop shadow=blue,enhanced,overlay unbroken and first={\mytitle},colframe=black,colback=white,%
        coltitle=red!70!black,boxrule=1pt,breakable,top=5pt,before=\vskip18pt,arc=0mm
    }
    
    \newtcolorbox{boitec}{                       
    	 enhanced,overlay unbroken and first={\mytitle},colframe=black,colback=white,coltitle=red!70!black,boxrule=1pt,arc=3mm,%
         breakable,top=5pt,before=\vskip18pt,}
    
    qui me donne le résultat ci-joint
    il y a plein d'aspects positifs notamment si je veux mettre de la couleur !

    Problèmes :
    je n'aime pas trop le "shadow" je le trouve nettement moins élégant que ce que je voudrais
    la syntaxe fait définir un titre puis utilise ce titre dans les boites ; ce qui fait qu'on ne peut pas personnaliser le titre à notre gré

    Des idées pour remédier à ça ?
    Merci !70514
    ex.PNG 13.6K
  • Bonjour,

    Le package ntheorem et mdframed permettent de faire pas mal de choses.

    Une recherche sur leur nom permet de trouver des exemples d'utilisation à « pomper sans vergogne ».
  • J'ai trouvé ça qui donne un résultat vraiment beau mais il y a plein de passage que je comprends pas pour pouvoir le personnaliser :
    \usepackage{xcolor}
    \usepackage[framemethod=tikz]{mdframed}
    \usetikzlibrary{shadows,shadings}
    \usepackage{lipsum}
    
    \newcounter{theorem}
    \renewcommand\thetheorem{Theorem~\arabic{theorem}}
    \makeatletter
    \mdf@dolist{\mdf@do@stringoption}{%
        {theoremtitle=={}}%
    }
    \renewrobustcmd\mdfcreateextratikz{%
          \node[anchor=west,rounded corners,draw,thick,shading=axis,left color=blue!20,%
                                xshift=1cm,minimum height=.7cm,minimum width=2cm] at (P-|O) 
                  {~\mdf@frametitlefont{\thetheorem}%
                      \ifdefempty{\mdf@theoremtitle}%
                      {~}%
                      {:~\mdf@theoremtitle~}%
                  };
    }
    \makeatother
    \mdfdefinestyle{theoremstyle}{%
    outerlinewidth=1pt,
    innerlinewidth=0pt,
    roundcorner=2pt,
    linecolor=black,
    shadow=true,
    tikzsetting={shading=axis,top color=gray!20},
    innertopmargin=1.2\baselineskip,
    skipabove={\dimexpr0.5\baselineskip+\topskip\relax},
    needspace=3\baselineskip,
    frametitlefont=\sffamily\bfseries,
    settings={\global\stepcounter{theorem}},
    }
    \newenvironment{theorem}[1][]
    {\begin{mdframed}[style=theoremstyle,theoremtitle={#1}]\relax}{\end{mdframed}}
    
    \begin{document}
    \begin{theorem}
    \lipsum[1]
    \end{theorem}
    \begin{theorem}[Title of the Theorem]
    \lipsum[1]
    \end{theorem}
    \end{document}
    
    Je ne comprends pas le passage
    \mdf@dolist{\mdf@do@stringoption}{%
        {theoremtitle=={}}%
    }
    
    ni celui qui commence par "\renewrobustcmd"
    ni "\mdfdefinestyle{theoremstyle}"...70520
    0.PNG 96.9K
  • Bon pas nécessaire de comprendre l'exemple d'avant j'obtiens quelque chose qui me satisfait à peu près avec tcolorbox.
    Par contre mon titre commence à faire un peu pitié ; j'ai utilisé comme commande
    \title{\vspace*{-1.5cm}\shabox{Intégrale de Dirichlet}}
    
    et dans le corps
    \maketitle{}
    
    Comment pourrais-je mettre un peu de couleur ?70522
    0.PNG 16.7K
  • J'ai trouvé qqchose.
    J'ai mis
    \title{\vspace*{-1.5cm}\begin{tcolorbox}[width=100pt,colback=yellow!50!white,%
           drop shadow=black!50!white]{\begin{center} Titre \end{center}}\end{tcolorbox}}
    
    Ça me donne un résultat pas mal mais mon drop shadow ne marche pas.

    [Pour éviter que le compilateur du site traduise le code LaTeX que tu veux afficher, il faut le placer dans une bannière "Code" (5ème bouton par la droite au dessus de la fenêtre d'édition. AD]70524
Connectez-vous ou Inscrivez-vous pour répondre.