|
|
@@ -0,0 +1,251 @@
|
|
|
1
|
+\NeedsTeXFormat{LaTeX2e}
|
|
|
2
|
+\ProvidesPackage{polytechnique}[2015/01/29 v1.0, standard scientific documents layout for Ecole polytechnique.]
|
|
|
3
|
+
|
|
|
4
|
+%=======================================================================================
|
|
|
5
|
+%Petit historique de la creation du package
|
|
|
6
|
+%=======================================================================================
|
|
|
7
|
+%Le binet TypographiX a ete refonde par la promotion 2013 durant son tronc commun, et parmi
|
|
|
8
|
+%ses projets se trouvait celui de faciliter la vie des eleves pour rediger leurs rapports
|
|
|
9
|
+%en tout genre. Ainsi est venue l'idee d'un package polytechnique qui donnerait une mise en
|
|
|
10
|
+%page adaptee a la nouvelle charte graphique de l'X cles en main. La maquette des pages et
|
|
|
11
|
+%surtout de la page de couverture a ete faire par une Mme Gaela Riou, infographiste de la
|
|
|
12
|
+%DIRCOM de l'X. L'auteur de ce package est Denis MERIGOUX et il a ete code fin janvier 2015.
|
|
|
13
|
+
|
|
|
14
|
+%=======================================================================================
|
|
|
15
|
+%Declaration des options.
|
|
|
16
|
+%Le code qui s'y trouve est execute plus tard (toutes les commandes ont deja ete definies)
|
|
|
17
|
+%=======================================================================================
|
|
|
18
|
+\DeclareOption{a4paper}{%Passe l'option a4paper declaree au package geometry pour action
|
|
|
19
|
+ \PassOptionsToPackage{a4paper}{geometry}
|
|
|
20
|
+}
|
|
|
21
|
+\DeclareOption{redsections}{%Si activee, modifie le formatage des titres de section et sous-sections.
|
|
|
22
|
+ \AtEndOfPackage{%Voir la documentation du package titlesec pour plus d'explications
|
|
|
23
|
+ \titleformat{\section}[block]{\color{rougepoly}\LARGE\scshape\filcenter}{}{0em}{}[
|
|
|
24
|
+ \vspace*{-0.5\baselineskip}\includegraphics{\polyfiletlongrouge}
|
|
|
25
|
+ ]
|
|
|
26
|
+ \titleformat{\subsection}[hang]{\color{bleuclairpoly}\Large\scshape}{}{0em}{
|
|
|
27
|
+ \raisebox{0.15\baselineskip}{\includegraphics{\polyfiletcourtbleuclair}}
|
|
|
28
|
+ }[]
|
|
|
29
|
+ }
|
|
|
30
|
+}
|
|
|
31
|
+\DeclareOption{shorttitle}{%Option activee par defaut, titre avec logo vertical sur 1/2 page
|
|
|
32
|
+ \AtBeginDocument{
|
|
|
33
|
+ \renewcommand*{\maketitle}{
|
|
|
34
|
+ \thispagestyle{plain}
|
|
|
35
|
+ \vspace*{\distancetitrelogo}
|
|
|
36
|
+ %Bloc de gauche (auteurs)
|
|
|
37
|
+ \noindent
|
|
|
38
|
+ \begin{minipage}[b]{\largeurminipage}\polyauthorsave\end{minipage}%La minipage permet les sauts de ligne pour avoir plusieurs auteurs
|
|
|
39
|
+ \hspace*{\fill}
|
|
|
40
|
+ %Centre (logo)
|
|
|
41
|
+ \includegraphics[width=\largeurlogovert]{\polylogovert}\hspace*{\fill}
|
|
|
42
|
+ %Bloc de droite (date)
|
|
|
43
|
+ \begin{minipage}[b]{\largeurminipage}\flushright\polydatesave\end{minipage}%Idem ci-dessus
|
|
|
44
|
+ \\[\separationlogotrait]
|
|
|
45
|
+ %Deux filets horizontaux, le titre et le sous-titre sont au milieu
|
|
|
46
|
+ \begin{center}
|
|
|
47
|
+ \textcolor{bleupoly}{\rule{\textwidth}{\epaisseurtrait}}
|
|
|
48
|
+ \\\color{bleupoly}\Huge\scshape\MakeUppercaseWithNewline{\polytitresave}%Le titre
|
|
|
49
|
+ \ifthenelse{\boolean{subtitle}}{%Si il y a un sous-titre
|
|
|
50
|
+ \\[\separationlignestitre]
|
|
|
51
|
+ \Large\upshape\polysoustitresave\\\normalsize
|
|
|
52
|
+ }{%S'il n'y en a pas
|
|
|
53
|
+ \\\normalsize
|
|
|
54
|
+ }
|
|
|
55
|
+ \textcolor{bleupoly}{\rule{\textwidth}{\epaisseurtrait}}
|
|
|
56
|
+ \end{center}
|
|
|
57
|
+ \vspace*{\distancetitrecorps}
|
|
|
58
|
+ }
|
|
|
59
|
+}
|
|
|
60
|
+}
|
|
|
61
|
+\DeclareOption{coverpage}{%Option qui active une page de garde où le titre prend toute la page
|
|
|
62
|
+ \AtBeginDocument{
|
|
|
63
|
+ \renewcommand*{\maketitle}{
|
|
|
64
|
+ %On met les armes de l'Ecole en arriere-plan
|
|
|
65
|
+ \noindent\makebox[\textwidth][c]{%
|
|
|
66
|
+ \raisebox{-\totalheight}[0pt][0pt]{%
|
|
|
67
|
+ \includegraphics[height=\hauteurlogopage]{\polyarmes}}}%
|
|
|
68
|
+ \vspace*{0.125\textheight}
|
|
|
69
|
+ \begin{center}
|
|
|
70
|
+ %Le titre
|
|
|
71
|
+ \Huge\sffamily\bfseries\color{bleupoly}\MakeUppercaseWithNewline{\polytitresave}\\
|
|
|
72
|
+ \vspace*{0.2\textheight}
|
|
|
73
|
+ %Le sous-titre
|
|
|
74
|
+ \LARGE\polysoustitresave\\
|
|
|
75
|
+ \vspace*{0.15\textheight}
|
|
|
76
|
+ %La date
|
|
|
77
|
+ \large\mdseries\polydatesave\\[-0.5\baselineskip]
|
|
|
78
|
+ \includegraphics{\polyfiletcourtbleu}\\
|
|
|
79
|
+ %Les auteurs
|
|
|
80
|
+ \rmfamily\polyauthorsave\\[\fill]
|
|
|
81
|
+ %Le(s) logo(s) en bas de la page
|
|
|
82
|
+ $\;$\polylogosup{}
|
|
|
83
|
+ \vspace*{-0.5\margebas}%On rabote la marge basse habituelle
|
|
|
84
|
+ \end{center}
|
|
|
85
|
+ \thispagestyle{empty}
|
|
|
86
|
+ \clearpage
|
|
|
87
|
+ \setcounter{page}{1}
|
|
|
88
|
+ }
|
|
|
89
|
+ }
|
|
|
90
|
+}
|
|
|
91
|
+\DeclareOption*{%Toute autre option sera donnee en argument au package geometry (si differentes tailles de papier)
|
|
|
92
|
+ \PassOptionsToPackage{\CurrentOption}{geometry}
|
|
|
93
|
+}
|
|
|
94
|
+\ExecuteOptions{a4paper,shorttitle}%Par defaut, papier A4 et petit titre
|
|
|
95
|
+\ProcessOptions\relax
|
|
|
96
|
+
|
|
|
97
|
+%=======================================================================================
|
|
|
98
|
+%Packages requis
|
|
|
99
|
+%=======================================================================================
|
|
|
100
|
+\RequirePackage{ifthen}%Pour la structure conditionnelle
|
|
|
101
|
+\RequirePackage{ifpdf}%Pour detecter le mode de compilation
|
|
|
102
|
+\RequirePackage[pagestyles]{titlesec}%Pour les en-tetes - pieds de page
|
|
|
103
|
+\RequirePackage{graphicx}%Pour les logos inseres
|
|
|
104
|
+\RequirePackage{geometry}%Pour les marges
|
|
|
105
|
+\RequirePackage{calc}%Pour faire des operations sur les longueurs
|
|
|
106
|
+\RequirePackage{color}%Pour mettre les elements en bleu
|
|
|
107
|
+
|
|
|
108
|
+%=======================================================================================
|
|
|
109
|
+%Couleurs
|
|
|
110
|
+%Les valeurs RGB proviennent de la charte graphique de l'X (2014)
|
|
|
111
|
+%=======================================================================================
|
|
|
112
|
+\definecolor{bleupoly}{RGB}{0,62,92}
|
|
|
113
|
+\definecolor{rougepoly}{RGB}{169,32,33}
|
|
|
114
|
+\definecolor{bleuclairpoly}{RGB}{0,104,128}
|
|
|
115
|
+
|
|
|
116
|
+%=======================================================================================
|
|
|
117
|
+%Inclusion des logos
|
|
|
118
|
+%Chaque chemin vers un logo est defini par une commande speciale
|
|
|
119
|
+%=======================================================================================
|
|
|
120
|
+\ifpdf%Si la compilation se fait avec pdflatex
|
|
|
121
|
+ \newcommand{\polyfiletlongrouge}{filetlongrouge.pdf}
|
|
|
122
|
+ \newcommand{\polyfiletcourtbleuclair}{filetcourtbleuclair.pdf}
|
|
|
123
|
+ \newcommand{\polyfiletcourtbleu}{filetcourtbleu.pdf}
|
|
|
124
|
+ \newcommand{\polylogovert}{logovert.pdf}
|
|
|
125
|
+ \newcommand{\polylogohori}{logohori.pdf}
|
|
|
126
|
+ \newcommand{\polyarmes}{armes.pdf}
|
|
|
127
|
+\else%Si la compilation se fait avec latex, xetex ou autres
|
|
|
128
|
+ \newcommand{\polyfiletlongrouge}{filetlongrouge.eps}
|
|
|
129
|
+ \newcommand{\polyfiletcourtbleuclair}{filetcourtbleuclair.eps}
|
|
|
130
|
+ \newcommand{\polyfiletcourtbleu}{filetcourtbleu.eps}
|
|
|
131
|
+ \newcommand{\polylogovert}{logovert.eps}
|
|
|
132
|
+ \newcommand{\polylogohori}{logohori.eps}
|
|
|
133
|
+ \newcommand{\polyarmes}{armes.eps}
|
|
|
134
|
+\fi
|
|
|
135
|
+
|
|
|
136
|
+%=======================================================================================
|
|
|
137
|
+%Longeurs
|
|
|
138
|
+%Celles-ci sont definies manuellement, le design de la page a ete fait par la Dircom
|
|
|
139
|
+%=======================================================================================
|
|
|
140
|
+%Marges
|
|
|
141
|
+\newlength{\margehaut}\setlength{\margehaut}{40mm}
|
|
|
142
|
+\newlength{\hauteurentete}\setlength{\hauteurentete}{27mm}
|
|
|
143
|
+\newlength{\separationentete}\setlength{\separationentete}{12mm}
|
|
|
144
|
+\newlength{\margecote}\setlength{\margecote}{20mm}
|
|
|
145
|
+\newlength{\margebas}\setlength{\margebas}{35mm}
|
|
|
146
|
+\newlength{\separationpied}\setlength{\separationpied}{17.5mm}
|
|
|
147
|
+%Taille des logos
|
|
|
148
|
+\newlength{\hauteurlogohori}\setlength{\hauteurlogohori}{15mm}
|
|
|
149
|
+\newlength{\hauteurlogovert}\setlength{\hauteurlogovert}{40mm}
|
|
|
150
|
+%Disposition de la page de titre
|
|
|
151
|
+\newlength{\separationtitre}\setlength{\separationtitre}{15mm}
|
|
|
152
|
+\newlength{\epaisseurtrait}\setlength{\epaisseurtrait}{1pt}
|
|
|
153
|
+\newlength{\separationlignestitre}\setlength{\separationlignestitre}{3mm}
|
|
|
154
|
+\newlength{\separationtitrecorps}\setlength{\separationtitrecorps}{15mm}
|
|
|
155
|
+\newlength{\hauteurlogopage}\setlength{\hauteurlogopage}{0.6\textheight}%La hauteur de l'image armes.pdf est fausse, 1.5cm doit donner a peu pres 10 cm (bug ?)
|
|
|
156
|
+%En-tetes
|
|
|
157
|
+\newlength{\separationentetelogo}\setlength{\separationentetelogo}{20mm}
|
|
|
158
|
+
|
|
|
159
|
+%=======================================================================================
|
|
|
160
|
+%Longueurs (suite)
|
|
|
161
|
+%Celles-là sont déduites des longueurs definies au dessus.
|
|
|
162
|
+%=======================================================================================
|
|
|
163
|
+%Taille des logos
|
|
|
164
|
+\newlength{\largeurlogohori}\setlength{\largeurlogohori}{\hauteurlogohori*\real{1.859}}%1.859 est le ration hauteur/largeur du logo vertical de l'X.
|
|
|
165
|
+\newlength{\largeurlogovert}\setlength{\largeurlogovert}{\hauteurlogovert/\real{1.361}}%1.361 est le ration hauteur/largeur du logo vertical de l'X.
|
|
|
166
|
+%Disposition des titres
|
|
|
167
|
+\newlength{\distancetitrelogo}\setlength{\distancetitrelogo}{\separationtitre-\margehaut}%Hauteur reglee pour qu'il y ait 10mm entre le haut de la page et le haut du logo.
|
|
|
168
|
+\newlength{\separationlogotrait}\setlength{\separationlogotrait}{-\baselineskip*2+10mm}
|
|
|
169
|
+\newlength{\largeurminipage}\setlength{\largeurminipage}{(\textwidth-\largeurlogovert)/\real{2}}
|
|
|
170
|
+%En-têtes
|
|
|
171
|
+\newlength{\largeurtitreentete}\setlength{\largeurtitreentete}{\textwidth-\largeurlogohori-\separationentetelogo}
|
|
|
172
|
+\newlength{\decalageverticalentete}\setlength{\decalageverticalentete}{\hauteurlogohori/\real{2}}
|
|
|
173
|
+\newlength{\distancetitrecorps}\setlength{\distancetitrecorps}{\separationtitrecorps-\baselineskip*2}
|
|
|
174
|
+
|
|
|
175
|
+%=======================================================================================
|
|
|
176
|
+%Marges, entetes et pieds de page
|
|
|
177
|
+%On utilise les package geometry et titlesec pour les regler
|
|
|
178
|
+%=======================================================================================
|
|
|
179
|
+\geometry{%Definit la geometrie de la page
|
|
|
180
|
+ %Toutes les commandes en dessous sont des longueurs definies auparavant
|
|
|
181
|
+ top=\margehaut,headheight=\hauteurentete,headsep=\separationentete,
|
|
|
182
|
+ left=\margecote,right=\margecote,
|
|
|
183
|
+ bottom=\margebas,footskip=\separationpied
|
|
|
184
|
+}
|
|
|
185
|
+\newcommand{\entetes}{%Comme l'en-tete contient le titre, on les active uniquement quand le titre est defini d'ou cette forme de commande
|
|
|
186
|
+ \newpagestyle{polytechnique}{%On definit un nouveau style d'en-tetes
|
|
|
187
|
+ \sethead{\includegraphics[height=\hauteurlogohori]{\polylogohori}}% left
|
|
|
188
|
+ {}% center
|
|
|
189
|
+ {\raisebox{\decalageverticalentete}{\begin{minipage}[t]{\largeurtitreentete}\scshape\flushright\textcolor{bleupoly}{\polytitresave}\end{minipage}}}% right
|
|
|
190
|
+ \setfoot{}% left
|
|
|
191
|
+ {\textcolor{bleupoly}{\shortstack[c]{\rule{4mm}{0.3mm}\\\thepage}}}% center, \shorstack c'est pour mettre le tiret au dessus du numero de page
|
|
|
192
|
+ {}% right
|
|
|
193
|
+ }
|
|
|
194
|
+ \pagestyle{polytechnique}
|
|
|
195
|
+}
|
|
|
196
|
+\renewpagestyle{plain}{
|
|
|
197
|
+ \sethead{}% left
|
|
|
198
|
+ {}% center
|
|
|
199
|
+ {}% right
|
|
|
200
|
+ \setfoot{}% left
|
|
|
201
|
+ {\textcolor{bleupoly}{\shortstack[c]{\rule{4mm}{0.3mm}\\\thepage}}}% center, \shorstack c'est pour mettre le tiret au dessus du numero de page
|
|
|
202
|
+ {}% right
|
|
|
203
|
+}
|
|
|
204
|
+\pagestyle{plain}
|
|
|
205
|
+
|
|
|
206
|
+%=======================================================================================
|
|
|
207
|
+%Commandes relatives a la page de titre
|
|
|
208
|
+%Grace a elles, on peut faire \titre{Machin} au lieu de \renewcommand{\polytitre}{machin}
|
|
|
209
|
+%=======================================================================================
|
|
|
210
|
+%Sous-titre
|
|
|
211
|
+\newboolean{subtitle}\setboolean{subtitle}{false}%Pour detecter si il existe un sous-titre, au debut on met le booleen a false
|
|
|
212
|
+\newcommand{\polysoustitresave}{}%A voir comme une variable dans laquelle on stocke une valeur
|
|
|
213
|
+\newcommand*{\subtitle}[1]{
|
|
|
214
|
+ \renewcommand*{\polysoustitresave}{#1}
|
|
|
215
|
+ \setboolean{subtitle}{true}%Puis on le met a true quand on definit un sous-titre
|
|
|
216
|
+}
|
|
|
217
|
+%Titre
|
|
|
218
|
+\newcommand{\polytitresave}{}%A voir comme une variable dans laquelle on stocke une valeur
|
|
|
219
|
+\renewcommand*{\title}[1]{
|
|
|
220
|
+ \renewcommand*{\polytitresave}{#1}
|
|
|
221
|
+ \entetes%Comme les en-tete dependent du titre, on les definit une fois qu'on connait le titre
|
|
|
222
|
+}
|
|
|
223
|
+%Auteurs
|
|
|
224
|
+\newcommand{\polyauthorsave}{}%A voir comme une variable dans laquelle on stocke une valeur
|
|
|
225
|
+\renewcommand*{\author}[1]{
|
|
|
226
|
+ \renewcommand*{\polyauthorsave}{#1}
|
|
|
227
|
+}
|
|
|
228
|
+%Date
|
|
|
229
|
+\newcommand{\polydatesave}{\today}%A voir comme une variable dans laquelle on stocke une valeur. \today est la date du jour dans la langue qu'il faut si babel est active
|
|
|
230
|
+\renewcommand*{\date}[1]{
|
|
|
231
|
+ \renewcommand*{\polydatesave}{#1}
|
|
|
232
|
+}
|
|
|
233
|
+%Logo(s) de bas de page pour l'option coverpage
|
|
|
234
|
+\newcommand{\polylogosup}{\includegraphics[height=\hauteurlogovert]{\polylogovert}}%Variable de stockage initialisee par defaut au logo de l'X vertical
|
|
|
235
|
+\newcommand{\logo}[1]{%Si l'utilisateur definit un logo personnalise avec \logo{truc}
|
|
|
236
|
+ \renewcommand{\polylogosup}{%On redefinit la variable
|
|
|
237
|
+ \includegraphics[height=1.5\hauteurlogohori]{\polylogohori}%Avec le logo horizontal de l'X
|
|
|
238
|
+ \hspace{0.05\textwidth}
|
|
|
239
|
+ \includegraphics[height=\hauteurlogovert,
|
|
|
240
|
+ width=1.5\largeurlogohori,
|
|
|
241
|
+ keepaspectratio]{#1}%Et le logo personnalise pas trop gros
|
|
|
242
|
+ }
|
|
|
243
|
+}
|
|
|
244
|
+%Divers
|
|
|
245
|
+\newcommand{\MakeUppercaseWithNewline}[1]{%Permet de mettre plusieurs lignes en majuscules (pour le titre)
|
|
|
246
|
+ \begingroup
|
|
|
247
|
+ \let\SavedOrgNewline\\%
|
|
|
248
|
+ \DeclareRobustCommand{\\}{\SavedOrgNewline}%
|
|
|
249
|
+ \MakeUppercase{#1}%
|
|
|
250
|
+ \endgroup
|
|
|
251
|
+}
|