Style de chapitre

Bonjour à tous,
J'aimerais modifier le style des chapitres de mes documents afin d'obtenir le résultat ci-dessous. Pour cela, j'ai tenté de modifier le style glenn proposé dans le package fncychap mais cela n'a pas abouti. J'ai donc essayé de le faire à l'aide du package explicit mais je n'ai pas réussi non plus. Si quelqu'un peut venir à mon secours ça serait bien cool.
D'avance merci.89126

Réponses

  • M'est avis que ce n'est pas très joli (trop chargé) — mais le client est roi, n'est-ce pas ?
    \documentclass[a4paper,11pt,french]{book}
    \usepackage{lmodern}
    \usepackage[T1]{fontenc}
    \usepackage[utf8]{inputenc}
    \usepackage{babel}
    \usepackage{textcomp}
    \usepackage{etoolbox}
    \usepackage[explicit]{titlesec}
    \usepackage{kantlipsum}         % juste pour le texte bidon
    
    \usepackage{tikz}
    \usetikzlibrary{babel}
    
    % Indique si on travaille sur un \chapter ou un \chapter*
    \newtoggle{chapDecoIsNumberedChap}
    
    % Commande « de haut niveau » pour la déco du numéro de chapitre : deux
    % déclinaisons (version étoilée, version non étoilée).
    \makeatletter
    \newcommand*{\chapDecoFrame}{%
      \@ifstar{%
        \togglefalse{chapDecoIsNumberedChap}%
        \@chapDecoFrame\@nil         % pas de numéro de chapitre en argument
      }{%
        \toggletrue{chapDecoIsNumberedChap}%
        \@chapDecoFrame
      }%
    }
    
    % #1 : Numéro de chapitre si chapDecoIsNumberedChap est vrai, sinon \@nil.
    % #2 : Titre du chapitre
    \newcommand*{\@chapDecoFrame}[2]{%
      % Décommenter les deux lignes suivantes pour visualiser la hauteur de la
      % boîte produite :
      %   \hbox to \linewidth{\hss\hbox to 1.1\linewidth{\hrulefill}\hss}
      %   \nointerlineskip
      %
      % On s'assure que les dimensions ne dépendent pas du numéro de chapitre
      % et ne vont pas varier au cas où TikZ changerait les règles par rapport à
      % la largeur de ligne (\pgflinewidth).
      \hbox to \linewidth{%
        \hss
        \@chapDecoTikzPicture{#1}{#2}%
        \hss}%
    }
    
    \newcommand*{\@chapDecoTikzPicture}[2]{%
      \begin{tikzpicture}
        % Cadre et titre du chapitre
        \node[rectangle, draw, line width=\chapDecoRuleWidth,
              minimum width=\linewidth, inner sep=0.75cm] (cadre)
          {\chapterTitleFont #2};
    
        \iftoggle{chapDecoIsNumberedChap}{% cas de \chapter
          % Chapitre <numéro>
          \node[fill=white, anchor=base west, inner xsep=0pt, inner ysep=3pt]
            at ([shift={(-\pgflinewidth,-\chapDecoRuleWidth)}]cadre.north west)
            {\chapterTitleLabelFont \strut\MakeUppercase{\chaptername}~#1\kern 3pt};
        }{% Même occupation de l'espace vertical
          \node[anchor=base west, inner xsep=0pt, inner ysep=3pt]
            at ([shift={(-\pgflinewidth,-\chapDecoRuleWidth)}]cadre.north west)
            {\chapterTitleLabelFont \strut\phantom{\MakeUppercase{\chaptername}}};
        }
    
        % Lycée
        \node[anchor=south west, inner sep=1pt] at (cadre.south west)
          {\chapterTitleSchoolFont \chapterTitleSchoolName};
    
        % Année
        \node[anchor=north east, inner sep=1pt] at (cadre.north east)
          {\chapterTitleYearFont \chapterTitleYear};
    
        % Matière
        \node[fill=white, anchor=base east, inner xsep=0pt, inner ysep=3pt]
          at ([xshift=\pgflinewidth]cadre.south east)
          {\kern 3pt
           \chapterTitleMatterFont \strut{\chapterTitleMatter}};
      \end{tikzpicture}%
    }
    \makeatother
    
    % ****************************************************************************
    % *                       Configuration de 'titlesec'                        *
    % ****************************************************************************
    
    \newcommand*{\chapterTitleSchoolName}{Lycée}
    \newcommand*{\chapterTitleYear}{2019\slash 2020}
    \newcommand*{\chapterTitleMatter}{Maths}
    
    \newcommand*{\chapterTitleFont}{%
      \fontsize{24.88}{29.856}\usefont{T1}{lmr}{m}{sc}%
    }
    \newcommand*{\chapterTitleLabelFont}{%
      \fontsize{11}{13.2}\usefont{T1}{lmss}{bx}{n}%
    }
    \newcommand*{\chapterTitleMatterFont}{%
      \fontsize{11}{13.2}\usefont{T1}{lmr}{m}{sc}%
    }
    \newcommand*{\chapterTitleYearFont}{%
      \fontsize{11}{13.2}\usefont{T1}{lmss}{m}{n}%
    }
    \newcommand*{\chapterTitleSchoolFont}{%
      \fontsize{11}{13.2}\usefont{T1}{lmss}{m}{n}%
    }
    % Le cadre au-dessus du titre de chapitre comporte un \strut de taille définie
    % par \chapterNumberFont, donc il y a déjà un peu d'espace.
    \newcommand*{\spaceBeforeChapterFrame}{0pt}
    \newcommand*{\spaceAfterChapterFrame}{0pt}
    \newcommand*{\spaceAfterChapterTitle}{60pt plus 1pt minus 1pt}
    % Largeur de la ligne utilisée pour le cadre autour des titres de chapitres
    \newcommand*{\chapDecoRuleWidth}{1pt}
    
    % Pour \chapter
    \titleformat{\chapter}[display]
      {}{}{\spaceAfterChapterFrame}{\chapDecoFrame{\thechapter}{#1}}
    
    % Pour \chapter*
    \titleformat{name=\chapter, numberless}[display]
      {}{}{\spaceAfterChapterFrame}{\chapDecoFrame*{#1}}
    
    \titlespacing{\chapter}{0pt}{\spaceBeforeChapterFrame}{\spaceAfterChapterTitle}
    
    \begin{document}
      \chapter{Titre du chapitre un}
    
      \kant[1]
    
      \setcounter{chapter}{25}%
      \chapter{Titre du chapitre vingt-six}
    
      \kant[2]
    
      \chapter*{Titre du chapitre sans numéro}
    
      \kant[3]
    \end{document}
    
    89138
    89136
  • Merci pour ton retour.
    Dernière question, j’aimerais que le mot chapitre soit en petites majuscules et non en majuscules. Quelle ligne de code faut-il changer pour obtenir ce résultat ?
    D’avancer merci
  •     \iftoggle{chapDecoIsNumberedChap}{% cas de \chapter
          % Chapitre <numéro>
          \node[fill=white, anchor=base west, inner xsep=0pt, inner ysep=3pt]
            at ([shift={(-\pgflinewidth,-\chapDecoRuleWidth)}]cadre.north west)
            {\chapterTitleLabelFont \strut\chaptername~#1\kern 3pt};
        }{% Même occupation de l'espace vertical
          \node[anchor=base west, inner xsep=0pt, inner ysep=3pt]
            at ([shift={(-\pgflinewidth,-\chapDecoRuleWidth)}]cadre.north west)
            {\chapterTitleLabelFont \strut\phantom{\chaptername}};
        }
    
    (...)
    
    \newcommand*{\chapterTitleLabelFont}{%
      \fontsize{11}{13.2}\usefont{T1}{lmr}{m}{sc}%
    }
    
    89174
  • Merci pour ta réponse. Comme je souhaite que le mot chapitre soit aussi en gras, j'ai remplacé le paramètre m par b dans la commande
    \newcommand*{\chapterTitleLabelFont}{%
      \fontsize{11}{13.2}\usefont{T1}{lmr}{m}{sc}%
    }
    
    et étrangement cela fait disparaître les petites majuscules.
    D'où vient ce problème?
    D'avance merci.
  • Il faut lire les messages de LaTeX (“font substitution”, etc.). La police en question (Latin Modern Roman) n'a pas de version small caps en gras, il y a donc une substitution qui est faite et doit être signalée dans la sortie textuelle de LaTeX ainsi que dans le fichier de log. Bienvenue dans le monde merveilleux des polices.
  • Une solution acceptable peut consister en :
    \newcommand*{\chapterTitleLabelFont}{%
      \fontsize{11}{13.2}\usefont{T1}{LinuxLibertineT-LF}{b}{sc}%
    }
    
    ov2zZeD.png
    Sinon, plus proche de Latin Modern Roman mais avec des inconvénients :
    \usepackage{bold-extra}
    
    (...)
    
    \newcommand*{\chapterTitleLabelFont}{%
      \fontsize{11}{13.2}\usefont{OT1}{cmr}{b}{sc}%
    }
    
    Dans ce cas :
    • codage OT1 donc pas de césure correcte avec caractères accentués (ne pose pas de problème ici) ;
    • police au format MetaFont ; elle est embarquée dans le PDF sous forme bitmap (PK) ; ça peut être nickel à l'impression, mais potentiellement moche à l'écran ;
    • il faut avoir MetaFont installé pour produire les PK à partir des sources MF (normalement, c'est automatique).
    Fm7OG9J.png
    (il y a aussi cm-super, je crois, mais bon...)

    Voir cette question et le LaTeX Font Catalogue.
Connectez-vous ou Inscrivez-vous pour répondre.