Avec la classe article, je tente d'intégrer le \maketitle dans une boîte colorée qui partirait du coin haut en gauche de la page jusqu'en bas à droite de la fin du titre. Les marges seraient conservées pour l'intérieur de la boîte mais la boîte elle-même doit y être insensible.

Je pourrais faire cela avec TikZ mais je souhaite éviter l'appel à cette extension. Auriez-vous une idée ?

Ouvrir dans l'éditeur
\documentclass{article}
\usepackage{xcolor}
\usepackage[showframe,margin=2.5cm,top=2cm,bottom=2cm,a4paper]{geometry}

\makeatletter
\renewcommand\maketitle{%
\fboxsep=0pt\fboxrule=0pt%
\noindent\colorbox{red!5}{\makebox[\paperwidth][c]{\centering\parbox[t][][t]{\linewidth}{\@maketitle}}}\par\vskip-1pt%
{\color{red}\noindent\makebox[0pt][t]{\hspace*{-\Gm@lmargin}\rule{\paperwidth}{3pt}}}
}%
\makeatother

\title{Titre}\author{Auteur}
\begin{document} 
\maketitle
\section{Intro} Texte
\end{document}

Posée 09 Avr '16, 16:44

pluton's gravatar image

pluton
1.2k22937
Taux d'acceptation : 34%

Modifiée 09 Avr '16, 17:43

Pathe's gravatar image

Pathe ♦♦
7.5k43204251

1

Pourquoi refuser d'utiliser TikZ ?

(10 Avr '16, 11:43) Paul Gaborit Paul%20Gaborit's gravatar image

@Paul Gaborit : par défi, en fait.

(10 Avr '16, 18:16) pluton pluton's gravatar image

Voici une solution. La position horizontale est réglée par \hspace{-\Gm@lmargin} avant la boîte colorbox et la position verticale par \newgeometry{top=0pt,bottom=\mtbottom}.

Le problème qui se pose ici est que l'on ne peut utiliser \restoregeometry ni explicitement (parce qu'elle cause une nouvelle page) ni implicitement (parce que les dimensions ne sont pas sauvegardées de manière globale).

Ici on a défini deux commandes qui permettent de sauvegarder les valeurs initiales des dimensions et puis de les récupérer.

Remarque : j'ai remarqué que le code soufre d'une bogue (la récupération des longueurs se fait à chaque page ce que cause problème si on veut changer ses valeurs d'une manière permanente) la solution est d'ajouter \global\let\@outputpage\mt@outputpage à la fin de redéfinition.

Ouvrir dans l'éditeur
\documentclass{article}
\usepackage{xcolor,lipsum}
\usepackage[showframe,margin=2.5cm,top=2cm,bottom=2cm,a4paper]{geometry}

\newcommand*\mtsavedim[1]{%
\expandafter\edef\csname mt#1\endcsname{\expandafter\the\csname#1\endcsname}}
\newcommand*\mtrestoredim[1]{%
\global\csname#1\endcsname=\csname mt#1\endcsname}

\makeatletter
\renewcommand\maketitle{%
\mtsavedim{topmargin}%
\mtsavedim{headheight}%
\mtsavedim{headsep}%
\mtsavedim{textheight}%
\edef\mtbottom{\Gm@bmargin}%
\newgeometry{top=0pt,bottom=\mtbottom}
\begingroup
\fboxsep=0pt\fboxrule=0pt\parindent=0pt%
\hspace{-\Gm@lmargin}%
\colorbox{red!5}{%
% deux options
\makebox[\paperwidth][l]{%
\hspace{\Gm@lmargin}%
%\makebox[\paperwidth][c]{%
\parbox{\textwidth}{%
\@maketitle%
\color{red}\rule{\paperwidth}{3pt}
}}}
\endgroup}%

\let\mt@outputpage\@outputpage
\def\@outputpage{%                                                                                                                                                                                                                
\mt@outputpage%
\mtrestoredim{topmargin}%
\mtrestoredim{headheight}%
\mtrestoredim{headsep}%
\mtrestoredim{textheight}%
\global \@colht \textheight%
\global\let\@outputpage\mt@outputpage}
\makeatother
\title{Titre}\author{Auteur}
\begin{document} 
\maketitle
\section{Intro} Texte
\lipsum[1-20] 
\end{document}
Lien permanent

Publiée 09 Avr '16, 20:03

touhami's gravatar image

touhami
9.7k410
Taux d'acceptation : 51%

Modifiée 10 Avr '16, 21:11

Merci. Je veux bien des explication sur le \@begindvi: que fait-il exactement ? Parce que je n'aurais jamais trouvé seul.

Je vois aussi que quand le titre est long, les marges de geometry sont ignorées dans la boîte rouge. J'aimerais éviter cela.

(09 Avr '16, 20:13) pluton pluton's gravatar image

@pluton OK je vais modifier le code et revenir sur le vôtre (i.e. deux boîtes).

(09 Avr '16, 21:30) touhami touhami's gravatar image

Il y a un autre problème : le \@begindvi fait remonter toute la page, qui est donc décalée par rapport aux autres, notamment le numéro de page. Je ne vois pas trop comment régler ce problème.

(09 Avr '16, 21:53) pluton pluton's gravatar image
2

@pluton : je vais ajouter une autre solution avec \newgeometry et \restoregeometry.

(09 Avr '16, 23:28) touhami touhami's gravatar image

Ah oui, c'est très sophistiqué ! Incroyable !

(10 Avr '16, 04:03) pluton pluton's gravatar image

mais la marge de top (2cm dans l'exemple) est perdue dans la boite rouge. Peut-on la réintégrer au sein de la boite?

(10 Avr '16, 05:18) pluton pluton's gravatar image

@pluton : j'ai mis à jour le code (correction d'une bogue).

(10 Avr '16, 21:12) touhami touhami's gravatar image
Affichage de 5 parmi 7 Afficher 2 commentaire(s) en plus

Voici une solution utilisant TikZ (pour ceux qui acceptent d'utiliser cette merveilleuse extension) :

Ouvrir dans l'éditeur
\documentclass{article}
\usepackage{xcolor}
\usepackage[showframe,margin=2.5cm,top=2cm,bottom=2cm,a4paper]{geometry}
\usepackage{tikz}
\usetikzlibrary{backgrounds}

\makeatletter
\renewcommand\maketitle{%
\noindent\begin{tikzpicture}[remember picture,inner sep=0]
  \node[text width=\linewidth,inner sep=0,line width=0](a){\@maketitle};
  \begin{pgfonlayer}{background}
    \begin{scope}[overlay]
      \fill[fill=red!5] (current page.north west)
      rectangle ([yshift=-.5em]a.south east -| current page.east);
    \end{scope}
  \end{pgfonlayer}
\end{tikzpicture}%
}%
\makeatother

\title{Titre}\author{Auteur}
\begin{document} 
\maketitle
\section{Intro} Texte
\end{document}
Lien permanent

Publiée 10 Avr '16, 11:46

Paul%20Gaborit's gravatar image

Paul Gaborit
2.0k16
Taux d'acceptation : 30%

Modifiée 10 Avr '16, 11:47

Ouvrir dans l'éditeur Overleaf
\usepackage{tcolorbox}

\begin{tcolorbox}\maketitle\end{tcolorbox}

(avec les réglages voulus pour tcolorbox)

Lien permanent

Publiée 10 Nov '17, 22:25

joseph-tux's gravatar image

joseph-tux
46623061
Taux d'acceptation : 3%

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.