environnements personnalisés

Bonjour
Je suis tombée sous le charme de cette présentation.
Ce qui me plaît entre autres est la différence des épaisseurs de traits : cadre épais pour les théorèmes, fins pour les autres résultats et épais pour moitié pour les définition.
Avez-vous une idée de comment on fait cela ? Je précise qu'avant même d'ajuster les épaisseurs de traits, je n'ai pas la moindre idée de comment faire un cadre comme ici avec les mots "théorème", "définition" et etc qui sont sur le cadre et non pas à l'intérieur :

Bon, je précise à toutes fins utiles que je sais qui est l'auteur de ce texte, et que cette personne pourrait être contactable (son adresse e-mail professionnelle doit être trouvable) mais que ne la connaissant pas personnellement, je ne me vois pas lui écrire pour lui demander son code...
Bon dimanche
Omega

Réponses

  • Bonjour,
    C'est très certainement fait avec tcolorbox. Voici un exemple avec le titre sur le cadre et des épaisseurs de trait différentes.
    \documentclass[french]{article}
    \usepackage[utf8]{inputenc}
    \usepackage[T1]{fontenc}
    \usepackage[many, theorems]{tcolorbox}
    \usepackage{varwidth}
    \usepackage{cleveref}
    \usepackage{xcolor}
    \usepackage[shorthands=off]{babel}
    \usepackage[babel=true]{microtype}
    
    \newtcbtheorem[
        crefname={théorème}{théorèmes},
        Crefname={Théorème}{Théorèmes}
    ]{Theorem}{Théorème}{%
        enhanced,
        sharp corners, 
        frame empty, 
        interior empty,
        borderline north={0.25mm}{0mm}{},
        borderline south={0.5mm}{0mm}{},
        borderline west={0.25mm}{0mm}{},
        borderline east={0.5mm}{0mm}{},
        attach boxed title to top left={yshift=\dimexpr-\tcboxedtitleheight/2},
        boxed title style={boxrule=-1pt, left=0pt, right=0.5ex},
        varwidth boxed title,
        coltitle=black,
        fonttitle=\bfseries, 
        colbacktitle=white,
        fontupper=\mdseries,
        separator sign none, 
        description delimiters parenthesis,
        description font=\bfseries,
    }{th}
    
    
    \begin{document}
        \begin{Theorem}{}{test}
            Un exemple de théorème
        \end{Theorem}
        
        \begin{Theorem}{Avec un titre}{autre}
            Un autre théorème.
        \end{Theorem}
        
        On a \Cref{th:test} et \cref{th:autre}, mais aussi \cref{th:test,th:autre}.
    \end{document} 
    

  • Merci beaucoup @Karnaj ! J'ai purement et simplement copié collé ton code et ça fait exactement ce que je voulais !
    J'abuse, mais tu pourrais m'expliquer ? Plus précisément ce que je ne sais pas c'est à quoi servent les lignes
    crefname={théorème}{théorèmes},
    Crefname={Théorème}{Théorèmes}
    et pourquoi il y en a deux qui ne diffèrent que des majuscules.
    Je ne comprends pas non plus pourquoi il y a {th} à la toute fin...
  • Bon, j'avais fait un message plus long, mais pour une raison obscure, l'aperçu me coupait une partie de mon message. Je poste donc en deux fois. Voici la suite :

    Puisque j'en suis à abuser, j'avais posté il y a peu une question pour nommer des théorèmes à laquelle MathCoss avait trouvé une réponse et ça donnait le code suivant :
    </code><code>\newtheorem*{theorem}{Theorem}
    \newtheoremstyle{named}{}{}{\itshape}{}{\bfseries}{.}{.5em}{\thmnote{#3's }#1}
    \theoremstyle{named}
    \newtheorem*{namedtheorem}{Theorem}
    J'ai essayé d'adapter le truc pour nommer les théorèmes avec le nouvel environnement avec cadre, mais comme je suis passablement nulle, mes bidouilles diverses me renvoient des erreurs...
    Si quelqu'un a la gentillesse et la patience de jeter un œil...
  • Si ça t'intéresse, j'ai fait des petites macros qui permettent de faire des cadres sympas avec des couleurs.

  • Désolé, je n'avais pas du tout vu passer ce message. Avec crefname={nom}{noms} et Crefname={Nom}{Noms}, on donne les noms à utiliser quand on fait référence à un théorème. Les arguments de crefname correspondent aux noms à utiliser au singulier et au pluriel, et ceux de Crefname c'est la même chose, mais pour les débuts de phrase. Donc, dans le cas de mon exemple précédent où j'ai déclaré deux théorèmes auxquels on peut faire référence avec test et autre, on obtient « On a Théorème 1 et théorème 2, mais aussi théorèmes 1 et 2. Quand on donne plusieurs labels à \cref ou \Cref, le nom qu'on a donné pour le pluriel est choisi (et on remarque qu'on a également un « et »). 
    Lee th tout à la fin correspond à un préfixe qui sera utilisé pour les labels des théorèmes. Ainsi, alors que j'ai donné les label autre et test quand j'ai déclaré mes théorèmes, j'utilise th:label et th:test pour y faire référence.
    Pour ton autre question, une des solutions est d'utiliser un environnement « basique » de tcolorbox, sans nécessairement créer de théorème.
     \documentclass[french]{article}
    \usepackage[utf8]{inputenc}
    \usepackage[T1]{fontenc}
    \usepackage[many, theorems]{tcolorbox}
    \usepackage{varwidth}
    \usepackage{cleveref}
    \usepackage{xcolor}
    \usepackage[shorthands=off]{babel}
    \usepackage[babel=true]{microtype}
    
    \newtcolorbox{Test}[1]{
        title={#1},
        enhanced,
        sharp corners, 
        frame empty, 
        interior empty,
        borderline north={0.25mm}{0mm}{},
        borderline south={0.5mm}{0mm}{},
        borderline west={0.25mm}{0mm}{},
        borderline east={0.5mm}{0mm}{},
        attach boxed title to top left={yshift=\dimexpr-\tcboxedtitleheight/2},
        boxed title style={boxrule=-1pt, left=0pt, right=0.5ex},
        varwidth boxed title,
        coltitle=black,
        fonttitle=\bfseries, 
        colbacktitle=white,
        fontupper=\mdseries,
        separator sign none, 
        description delimiters parenthesis,
        description font=\bfseries,
    }
    
    
    \begin{document}
        \begin{Test}{Théorème de Karnaj}
            Mon théorème.
        \end{Test}
    \end{document}
  • omega
    Modifié (1 May)
    Merci @Karnaj ! Merci à la fois pour tes explications et pour la création du deuxième environnement !
    EDIT : Vraiment un grand merci, ça marche super, ça fait exactement ce que je veux !
    Merci aussi à toi @geo pour ta proposition mais en l'occurrence, je ne cherche justement pas de choses colorées, j'avais (avec l'aide du forum mais je retrouve plus la discussion c'était il y a déjà quelques années) fait mes petits environnements avec des cadres colorés qui m'ont un temps convenu. Cependant, je m'en suis lassée, j'ai maintenant envie de quelque-chose de plus sobre.
  • En fait j'ai encore une question @Karnaj : est-t-il possible avec cet environnement de choisir la manière de numéroter ? Je précise, avec les environnements "classiques", je peux choisir de numéroter par chapitre, section, etc... ici, je ne vois pas comment faire ? Est-ce possible ? Si oui comment ? Désolée, j'abuse...
  • Tu peux avec l'option number within de \newtcbtheorem. Donc avec
    \newtcbtheorem[
        crefname={théorème}{théorèmes},
        Crefname={Théorème}{Théorèmes},
    number within=section ]{Theorem}{Théorème}{...}
    où j'ai juste rajouté number within=section, la numérotation se fait par section.



  • Génial ! Merci beaucoup @Karnaj !
  • omega
    Modifié (16 May)
    Bonjour à tous et à @Karnaj en particulier
    EDIT : j'ai trouvé la réponse à ma question :
    enlarge top by=1cm,
      enlarge bottom by=1cm,
    J'ai à nouveau une question sur cet environnement : est-il possible d'ajuster les marges extérieures, plus précisément, les marges au-dessus et en-dessous de la boîte ?
    Bonne journéeà tous
    Omega

Connectez-vous ou Inscrivez-vous pour répondre.