J'ai récupéré sur internet un bout de code pour formater l'affichage des chapitres d'une thèse.

Je cherche à mieux comprendre ce bout de code et à le réécrire avec titlesec par exemple, mais je ne comprends pas bien la syntaxe.

\documentclass[
a4paper,
twoside,
12pt,
french]{book}

%
% - Input encoding and font encoding -%
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
%
% - Page geometry -%
\usepackage[top=2.5cm,bottom=2.5cm,left=2.5cm,right=2.5cm]{geometry}

\usepackage{xcolor}
\usepackage{lipsum}

\makeatletter
\def\@makechapterhead#1{%
\vspace*{0\p@}% margin above chapter number
{\parindent \z@ \centering \normalfont\sffamily
\ifnum \c@secnumdepth >\m@ne
  \if@mainmatter
    \Huge\bfseries\color{green} \@chapapp~\thechapter\\[-7pt]
        %     \par\nobreak
        %     \vskip 0\p@% space between chapter number and chapter title
    \color{black}\rule{0.9\linewidth}{0.2pt}
  \fi\\[7pt]
\fi
    % \interlinepenalty\@M
\LARGE\bfseries\color{black}  \centering #1
    % \par\nobreak
\vskip 30 \p@% space below chapter title
}}
\makeatother

\begin{document}
  \frontmatter
    \mainmatter
  \chapter{Ceci est un chapitre de test}

  \lipsum[3-9]

  \chapter{Deuxième chapitre}

  \backmatter
  \appendix
\end{document}

J'ai essayé de reprendre en faisant :

\titleformat{\chapter}[display]
{\centering\normalfont\sffamily}
{\if@mainmatter
    \Huge\bfseries\color{green} \chaptertitlename \thechapter\\
    \color{black}\rule{0.9\linewidth}{0.2pt}
  \else
    Hors mainmatter\\
 \fi
}{}{%
\LARGE\bfseries\color{black}
}

mais quand je compile le formatage utilisé est celui "hors mainmatter" alors que cela ne devrait pas être le cas.

Comment reproduire le code "hacky" à base de redéfinition @ en titlesec ?

Posée 17 Fév '23, 20:55

olirwin's gravatar image

olirwin
433
Taux d'acceptation : 100%

Bienvenue sur TeXnique.fr !

(17 Fév '23, 21:10) denis ♦♦ denis's gravatar image

Aux dimensions près, ceci convient-il ?

\documentclass[
a4paper,
12pt]{book}
%
% - Input encoding and font encoding -%
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
%
% - Page geometry -%
\usepackage[top=2.5cm,bottom=2.5cm,left=2.5cm,right=2.5cm]{geometry}
\usepackage{xcolor}
\usepackage{lipsum}
\usepackage[pagestyles]{titlesec}

\makeatletter
\titleformat{\chapter}[display]
{% Format
  \centering\normalfont\Huge\bfseries\sffamily\color{green}%
}{% Label
  \chaptertitlename\ \thechapter%
}{% Sep
  0pt%
}{% Before code
  \vspace*{0\p@}\centering\LARGE\bfseries\color{black}%
  \if@mainmatter
    \rule{0.9\linewidth}{0.2pt}\\%
  \fi
}
\makeatother

\begin{document}
\frontmatter
\chapter{Ceci est un chapitre de test (frontmatter)}
\lipsum[1]
\mainmatter
\chapter{Ceci est un chapitre de test}
\lipsum[3-9]
\chapter{Deuxième chapitre}
\end{document}
Lien permanent

Publiée 17 Fév '23, 21:56

denis's gravatar image

denis ♦♦
7.0k1510
Taux d'acceptation : 52%

Absolument ! Cependant j'avoue ne toujours pas comprendre pourquoi ce que j'avais fait ne fonctionnait pas :/

(18 Fév '23, 13:01) olirwin olirwin'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.