[Résolu] Titre de chapitre avec retour

Tout ce qui concerne l'utilisation ou l'installation de LaTeX.

Modérateur: gdm_tex

Règles du forum
Merci d'éviter le style SMS dans vos messages et de penser à utiliser la fonction Recherche avant de poster un message. Pour joindre des fichiers à vos messages, consulter ce sujet.
> Penser à utiliser les balises Code pour poster du code.

[Résolu] Titre de chapitre avec retour

Messagepar evariste_G » Mardi 27 Juin 2017, 15:31

Bonjour.

Quand on définit le titre d'un chapitre par :
Code: Tout sélectionner
\chapter{Mon titre\\et la suite}


l'inconvénient est que dans les en-têtes, le titre du chapitre tient sur deux lignes.
Existe-t-il un moyen de supprimer ce retour pour l'en-tête ?
Dernière édition par evariste_G le Mercredi 28 Juin 2017, 17:51, édité 1 fois.
evariste_G
Téra-utilisateur
 
Messages: 1340
Inscription: Vendredi 19 Décembre 2008, 19:13
Localisation: Bordeaux
Statut actuel: Post-bac

Publicité

Re: Titre de chapitre avec retour

Messagepar touhami » Mardi 27 Juin 2017, 16:23

Bon jour. Voici deux solutions
Code: Tout sélectionner
\chapter[Mon titre et la suite]{Mon titre\\et la suite}

Pour supprimer le retour de la table des matières aussi.
Code: Tout sélectionner
\chapter{Mon titre\\et la suite}
\chaptermark{Mon titre et la suite}

pour supprimer le retour de l'en-tête.
touhami
Méga-utilisateur
 
Messages: 379
Inscription: Dimanche 11 Février 2007, 11:45
Statut actuel: Post-bac

Re: Titre de chapitre avec retour

Messagepar evariste_G » Mardi 27 Juin 2017, 16:44

Merci pour ces solutions.
J'avais oublié cette possibilité.

Mais juste pour savoir... N'y a-t-il pas un moyen d'automatiser cela dans une classe par exemple ? (j'ai redéfini la commande \chapter avec titelsec et pour éviter d'écrire des options à la commande \chapter, voir d'ajouter la commande pour le sommaire, j'aurais aimé n'avoir qu'à écrire \chapter{blabla\\et blabla}).

Dans le pire des cas, j'utiliserai cela, mais bon...
evariste_G
Téra-utilisateur
 
Messages: 1340
Inscription: Vendredi 19 Décembre 2008, 19:13
Localisation: Bordeaux
Statut actuel: Post-bac

Re: Titre de chapitre avec retour

Messagepar touhami » Mardi 27 Juin 2017, 19:04

Je ne suis pas sûr, ça peut dépendre des extensions utilisées.
Pour un usage normale (*titlesec* ne change pas par défaut les chapitres, donc ça peut fonctionner) il suffit de redéfinir \\
Code: Tout sélectionner
\documentclass{book}
\usepackage{mwe}
\makeatletter 
\def\chaptermark#1{%
{\let\\\space% <----> cette ligne a été ajouté
      \markboth {\MakeUppercase{%
        \ifnum \c@secnumdepth >\m@ne
          \if@mainmatter
            \@chapapp\ \thechapter. \ %
          \fi
        \fi
        #1}}{}}}% <----> } a été ajouté
\makeatother
\begin{document}
\chapter{Mon titre\\et la suite}
\lipsum[1-15]
\end{document}

Remarque La définition de la commande \chaptermark dépend de la définition de style des entêtes, donc c'est à ce niveau où les changements doivent être faits. Voir cet (contre) exemple
Code: Tout sélectionner
\documentclass{book}
\usepackage{mwe}
\makeatletter 
\def\chaptermark#1{%
{\let\\\space% <----> cette ligne a été ajouté
      \markboth {\MakeUppercase{%
        \ifnum \c@secnumdepth >\m@ne
          \if@mainmatter
            \@chapapp\ \thechapter. \ %
          \fi
        \fi
        #1}}{}}}% <----> } a été ajouté
\makeatother

\begin{document}
\chapter{Mon titre\\et la suite}
\lipsum[1-15]
\pagestyle{empty}
\lipsum[1-6]
\pagestyle{headings}
\chapter{Mon titre\\et la suite}
\lipsum[1-6]
\end{document}
touhami
Méga-utilisateur
 
Messages: 379
Inscription: Dimanche 11 Février 2007, 11:45
Statut actuel: Post-bac

Re: Titre de chapitre avec retour

Messagepar touhami » Mardi 27 Juin 2017, 19:21

Une autre solution est de redéfinir la commande interne \@chapter par exemple, en utilisant l'extension etoolbox, il suffit
Code: Tout sélectionner
\patchcmd\@chapter{\chaptermark{#1}}{{\let\\\space\chaptermark{#1}}}{}{}
ECM
Code: Tout sélectionner
\documentclass{book}
\usepackage{mwe}


\usepackage{etoolbox}
\makeatletter 
\patchcmd\@chapter{\chaptermark{#1}}{{\let\\\space\chaptermark{#1}}}{}{}
\makeatother


\usepackage{titlesec}
% exemple extrait de titlesec.pdf
\renewcommand{\thechapter}{\Roman{chapter}}
\titleformat{\chapter}[display]
{\bfseries\Large}
{\filleft\MakeUppercase{\chaptertitlename} \Huge\thechapter}
{4ex}
{\titlerule
\vspace{2ex}%
\filright}
[\vspace{2ex}%
\titlerule]

\begin{document}
\chapter{Mon titre\\et la suite}
\lipsum[1-15]
\end{document}
touhami
Méga-utilisateur
 
Messages: 379
Inscription: Dimanche 11 Février 2007, 11:45
Statut actuel: Post-bac

Re: Titre de chapitre avec retour

Messagepar balf » Mardi 27 Juin 2017, 23:39

Et si l'on lisait la documentation de titlesec au lieu de chercher à réinventer la roue? Depuis la version 2.6, il suffit d'écrire:
Code: Tout sélectionner
\usepackage[newlinetospace]{titlesec}
pour automatiquement convertir les passages à la ligne des titres en espaces dans les entête et la table des matières.

B. A.
balf
Zetta-utilisateur
 
Messages: 3619
Inscription: Mercredi 02 Janvier 2008, 23:18
Statut actuel: Actif et salarié | Maître de conférence

Re: Titre de chapitre avec retour

Messagepar touhami » Mercredi 28 Juin 2017, 02:09

Bon jour @balf.
Comme j'ai dit auparavant titlesec ne change pas par défaut les chapitres. Donc, si je ne me suis pas trompé, cette option fonctionne bien pour les (sous)section mais pas pour les chapitres.
touhami
Méga-utilisateur
 
Messages: 379
Inscription: Dimanche 11 Février 2007, 11:45
Statut actuel: Post-bac

Re: Titre de chapitre avec retour

Messagepar balf » Mercredi 28 Juin 2017, 08:44

Bonjout, @touhami

Mais chez moi, ça marche, même sans redéfinir le formatage du chapitre! Rien que le chargement de titlesec avec l'option :!: :?:

B. A.
balf
Zetta-utilisateur
 
Messages: 3619
Inscription: Mercredi 02 Janvier 2008, 23:18
Statut actuel: Actif et salarié | Maître de conférence

Re: Titre de chapitre avec retour

Messagepar touhami » Mercredi 28 Juin 2017, 11:15

Bizarre! J'ai titlesec 2016/03/21 v2.10.2.
Qu'est-ce qui se passe au niveau de la table des matières?
touhami
Méga-utilisateur
 
Messages: 379
Inscription: Dimanche 11 Février 2007, 11:45
Statut actuel: Post-bac

Re: Titre de chapitre avec retour

Messagepar balf » Mercredi 28 Juin 2017, 13:06

Vérification faite, ça ne marche pas non plus chez moi pour la table des matières. :cry:
Il faut donc en passer par l'argument optionnel.

B. A.
balf
Zetta-utilisateur
 
Messages: 3619
Inscription: Mercredi 02 Janvier 2008, 23:18
Statut actuel: Actif et salarié | Maître de conférence

Re: Titre de chapitre avec retour

Messagepar evariste_G » Mercredi 28 Juin 2017, 17:51

Bonjour à vous.

L'une des solutions de touhami m'a donné l'idée du code suivant :
Code: Tout sélectionner
\renewcommand{\chaptermark}[1]{\let\\\space\markboth{\chaptername~\thechapter~--~#1}{}}

C'était juste l'idée de remplacer les "\\" par un espace qui me manquait... Comme quoi !

Merci à vous !
evariste_G
Téra-utilisateur
 
Messages: 1340
Inscription: Vendredi 19 Décembre 2008, 19:13
Localisation: Bordeaux
Statut actuel: Post-bac

Re: [Résolu] Titre de chapitre avec retour

Messagepar touhami » Mercredi 28 Juin 2017, 18:23

@evariste_G
Vous avez besoin de coder
Code: Tout sélectionner
\renewcommand{\chaptermark}[1]{{\let\\\space\markboth{\chaptername~\thechapter~--~#1}{}}}

Pour que le changement soit local (limité à cette commande).

@balf
Je pense que ce que vous voyez dans l'entête n'ai pas l’effet de l'option newlinetospace de titlesec c'est plutôt du au fait que l'entête est formater dans une \hbox.
Comparer les entêtes des page paires et impaires
Code: Tout sélectionner
\documentclass{book}
\usepackage{mwe}

\usepackage[newlinetospace]{titlesec}

\begin{document}
\chapter{Mon titre\\et la suite}
\section{Mon titre\\et la suite}
\lipsum[1-15]
\end{document}
touhami
Méga-utilisateur
 
Messages: 379
Inscription: Dimanche 11 Février 2007, 11:45
Statut actuel: Post-bac


Retourner vers LaTeX

 


  • Articles en relation
    Réponses
    Vus
    Dernier message

Qui est en ligne

Utilisateurs parcourant ce forum: Bing [Bot], Grapeshot [Crawler] et 5 invités