[Résolu] Fancyhdr et geometry : en-tête première page

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] Fancyhdr et geometry : en-tête première page

Messagepar Bobor » Dimanche 09 Juillet 2017, 11:57

Bonjour,

J'utilise fancy-header pour mes en-têtes, mais la première page de mon article contient un titre en haut et donc je change son style (\thispagestyle{plain}) pour enlever l'en-tête.

Seulement dans ce cas l'espace réservé à l'en-tête est préservé, c'est juste l'en-tête qui est vide. Ce n'est pas joli car la première page commence plus bas que la seconde.
J'ai bien essayé de modifier ponctuellement les longueurs \headsep et \headheight mais alors c'est le bas de la page 1 qui n'est plus à la même hauteur que celui de la page 2 (normal : \textheight reste constant). Il faudrait alors bricoler pour augmenter de la bonne taille le \textheight...

Je n'ai pas trouvé dans la doc de fancyhdr comment récupérer l'espace laissé vide par l'en-tête.

Voici un exemple minimal :
Code: Tout sélectionner
\documentclass{article}

\usepackage{t1enc}
\usepackage[latin1]{inputenc}
\usepackage[french]{babel}

\usepackage[a4paper]{geometry}

\usepackage{fancyhdr}

\usepackage{lipsum}

\geometry{
  total={16cm,26.2cm},
  includeheadfoot,
  headheight=\baselineskip,
  headsep=.5\baselineskip,
  footskip=1.5\baselineskip
}%


\pagestyle{fancy}
\renewcommand{\headrulewidth}{0.4pt}
\renewcommand{\footrulewidth}{0.4pt}
\fancyhead[L,C,R]{En-tête}
\fancyfoot[L,C,R]{\thepage}

\fancypagestyle{plain}{
  \fancyhead{}
  %\setlength\headsep{0pt}   
  %\setlength\headheight{0pt}
\renewcommand{\headrulewidth}{0pt}}


\begin{document}
\thispagestyle{plain}

\lipsum[1-20]

\end{document}


Si quelqu'un a une solution élégante, je suis intéressé !

Merci d'avance,

Bobor.
Dernière édition par Bobor le Vendredi 14 Juillet 2017, 21:07, édité 1 fois.
Bobor
Déca-utilisateur
 
Messages: 21
Inscription: Samedi 26 Septembre 2009, 16:17
Statut actuel: Actif et salarié | Enseignant

Publicité

Re: Fancyhdr et geometry : en-tête première page

Messagepar touhami » Dimanche 09 Juillet 2017, 12:37

Bon jour. Le plus simple est de taper (2cm à titre d'exemple)
Code: Tout sélectionner
\thispagestyle{plain}\vspace*{-2cm}
touhami
Méga-utilisateur
 
Messages: 379
Inscription: Dimanche 11 Février 2007, 11:45
Statut actuel: Post-bac

Re: Fancyhdr et geometry : en-tête première page

Messagepar Bobor » Dimanche 09 Juillet 2017, 13:14

Merci pour cette réponse. Mais j'espérais quelque chose de plus carré : ici je suis obligé de tatonner pour trouver exactement la bonne longueur, et si je change le taille de la police alors je dois re-tatonner.
D'ailleurs je faisais déjà quelque chose de similaire : \AtBeginDocument{\vspace...}
Bobor
Déca-utilisateur
 
Messages: 21
Inscription: Samedi 26 Septembre 2009, 16:17
Statut actuel: Actif et salarié | Enseignant

Re: Fancyhdr et geometry : en-tête première page

Messagepar touhami » Dimanche 09 Juillet 2017, 13:45

voici alors une solution basée sur l'extension afterpage
Code: Tout sélectionner
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[french]{babel}

\usepackage[a4paper]{geometry}

\usepackage{fancyhdr}
\usepackage{afterpage}

\usepackage{lipsum}

\geometry{
  total={16cm,26.2cm},
  includeheadfoot,
  headheight=\baselineskip,
  headsep=.5\baselineskip,
  footskip=1.5\baselineskip
}%


\pagestyle{fancy}
\renewcommand{\headrulewidth}{0.4pt}
\renewcommand{\footrulewidth}{0.4pt}
\fancyhead[L,C,R]{En-tête}
\fancyfoot[L,C,R]{\thepage}

\fancypagestyle{plain}{
  \fancyhead{}
  %\setlength\headsep{0pt}   
  %\setlength\headheight{0pt}
\renewcommand{\headrulewidth}{0pt}}


\begin{document}
\newgeometry{
  total={16cm,26.2cm},
  includeheadfoot,
  headheight=0pt,
  headsep=0pt,
  footskip=1.5\baselineskip
}%
\thispagestyle{plain}
\afterpage{\aftergroup\restoregeometry}

\lipsum[1-20]

\end{document}
touhami
Méga-utilisateur
 
Messages: 379
Inscription: Dimanche 11 Février 2007, 11:45
Statut actuel: Post-bac

Re: Fancyhdr et geometry : en-tête première page

Messagepar Bobor » Dimanche 09 Juillet 2017, 20:28

Merci c'est super !
Pourrais-tu m'expliquer la commande \aftergroup ?

Aussi, pour que ce soit vraiment parfait, il faut remplacer headsep=0pt par headsep=-2pt. Je ne comprends pas pourquoi.

Merci encore !

Bobor.
Bobor
Déca-utilisateur
 
Messages: 21
Inscription: Samedi 26 Septembre 2009, 16:17
Statut actuel: Actif et salarié | Enseignant

Re: Fancyhdr et geometry : en-tête première page

Messagepar touhami » Dimanche 09 Juillet 2017, 21:31

\aftergroup\cmd: la commande \cmd est sauvegardée puis réinsérée après la fin du groupe courant.
Exemple
Code: Tout sélectionner
\documentclass{article}
\begin{document}
{texte normale \aftergroup\bfseries mais après l'accolade c'est} en gras
\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: Google [Bot] et 12 invités