Quellcode durchsuchen

Package wrapped up in a .dtx file, new options

Denis Merigoux vor 10 Jahren
Commit
b2eb6c94ca
4 geänderte Dateien mit 1353 neuen und 236 gelöschten Zeilen
  1. 2 0
      .gitignore
  2. 955 0
      polytechnique.dtx
  3. 357 236
      polytechnique.sty
  4. 39 0
      windows_installer.bat

+ 2 - 0
.gitignore

@@ -0,0 +1,2 @@
1
+*.pdf
2
+ressources/

+ 955 - 0
polytechnique.dtx

@@ -0,0 +1,955 @@
1
+% \iffalse meta-comment
2
+%
3
+% For explanation on this file, see http://texdoc.net/texmf-dist/doc/latex/dtxtut/dtxtut.pdf
4
+%
5
+% Copyright (C) 2015 i by Denis Merigoux
6
+%
7
+% This file may be distributed and/or modified under the
8
+% conditions of the LaTeX Project Public License, either
9
+% version 1.2 of this license or (at your option) any later
10
+% version. The latest version of this license is in:
11
+%
12
+% http://www.latex-project.org/lppl.txt
13
+%
14
+% and version 1.2 or later is part of all distributions of
15
+% LaTeX version 1999/12/01 or later.
16
+%
17
+% \fi
18
+%
19
+% \iffalse
20
+%<package>\NeedsTeXFormat{LaTeX2e}
21
+%<package>\ProvidesPackage{polytechnique}
22
+%<package> [2015/04/29 v1.3.0, standard scientific documents layout for Ecole polytechnique (Palaiseau,France).]
23
+%
24
+%<*batchfile>
25
+\begingroup
26
+\input docstrip.tex
27
+\keepsilent
28
+\usedir{tex/latex/polytechnique}
29
+
30
+\preamble
31
+This is a generated file.
32
+
33
+Copyright (C) 2015 by Denis Merigoux
34
+
35
+This file may be distributed and/or modified under the
36
+conditions of the LaTeX Project Public License, either
37
+version 1.2 of this license or (at your option) any later
38
+version. The latest version of this license is in:
39
+
40
+http://www.latex-project.org/lppl.txt
41
+
42
+and version 1.2 or later is part of all distributions of
43
+LaTeX version 1999/12/01 or later.
44
+\endpreamble
45
+
46
+\askforoverwritefalse
47
+\generate{\file{polytechnique.sty}{\from{polytechnique.dtx}{package}}}
48
+
49
+\obeyspaces
50
+
51
+\endgroup
52
+%</batchfile>
53
+%%\CharacterTable
54
+%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
55
+%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
56
+%% Digits \0\1\2\3\4\5\6\7\8\9
57
+%% Exclamation \! Double quote \" Hash (number) \#
58
+%% Dollar \$ Percent \% Ampersand \&
59
+%% Acute accent \' Left paren \( Right paren \)
60
+%% Asterisk \* Plus \+ Comma \,
61
+%% Minus \- Point \. Solidus \/
62
+%% Colon \: Semicolon \; Less than \<
63
+%% Equals \= Greater than \> Question mark \?
64
+%% Commercial at \@ Left bracket \[ Backslash \\
65
+%% Right bracket \] Circumflex \^ Underscore \_
66
+%% Grave accent \` Left brace \{ Vertical bar \|
67
+%% Right brace \} Tilde \~}
68
+%%
69
+%<*driver>
70
+\documentclass[a4paper,11pt]{ltxdoc}
71
+\usepackage[utf8]{inputenc}
72
+\usepackage[T1]{fontenc}
73
+\usepackage[french]{babel}
74
+\usepackage[pagenumber,fancysections,sectionmark]{polytechnique}
75
+\makeatletter
76
+\renewcommand{\index@prologue}{\section*{Index}%Redéfinit le texte avant l'index
77
+                %Commande issue de tex/latex/base/doc.sty
78
+                Les nombre en italique se réfèrent à la page où l'entrée correspondante est documentée ; les nombres soulignés se réfèrent à la ligne de code où l'entrée correspondante est définie. Enfin, les autres nombres correspondent aux lignes de code où l'entrée correspondante est utilisée.
79
+                 }
80
+\makeatother
81
+\EnableCrossrefs
82
+\CodelineIndex
83
+\RecordChanges
84
+\begin{document}
85
+\DocInput{polytechnique.dtx}
86
+\end{document}
87
+%</driver>
88
+% \fi
89
+%
90
+%\changes{v1.3.0}{2015/04/29}{Ajout des options oneside, twoside, sectionmark, chaptermark, markboth, pagenumber}
91
+%\changes{v1.2.2}{2015/02/18}{Recadrage du logo horizontal}
92
+%\changes{v1.2.1}{2015/02/16}{Correction du bug title vide ou author vide}
93
+%\changes{v1.2.0}{2015/01/25}{Dimensionnement des logos conforme à la charte graphique}
94
+%\changes{v1.1.0}{2015/01/20}{Ajout formatage chapter et subsubsection avec l'option fancysections}
95
+%\changes{v1.0.0}{2015/01/15}{Version initiale}
96
+% \GetFileInfo{polytechnique.sty}
97
+%
98
+%\DoNotIndex{\#,\$,\%,\&,\@,\\,\{,\},\^,\_,\~,\ }
99
+%\DoNotIndex{\@ne}
100
+%\DoNotIndex{\advance,\begingroup,\catcode,\closein}
101
+%\DoNotIndex{\closeout,\day,\def,\edef,\else,\empty,\endgroup}
102
+%\DoNotIndex{\newcommand,\renewcommand,\newlength,
103
+%    \setlength,\RequirePackage,\PassOptionsToPackage}
104
+%
105
+%
106
+%\title{Le package \textsf{polytechnique}}
107
+%\subtitle{\fileversion{} datée du \filedate.}
108
+%\author{Denis Merigoux}
109
+%
110
+%\maketitle
111
+%
112
+%Le but du package est d'offrir un moyen efficace et rapide aux élèves de mettre en forme leurs documents \LaTeX{} destinés à être rendus à l'administration de l'École ou aux professeurs : rapports de stage, rapports de MODAL, devoirs à la maison, etc. La DIRCOM a établi la maquette en accord avec la charte graphique donc le package peut aussi être utilisé pour produire des documents diffusés à l'extérieur de l'École.
113
+%
114
+%En pratique, package redéfinit les marges et les en-têtes du document, ainsi que la commande |\maketitle| (voir plus bas). La compilation peut être faite avec \texttt{pdflatex} ou \texttt{latex}, les logos et images étant fournies en \texttt{.eps} et \texttt{.pdf}. Attention donc à ne pas utiliser les package \texttt{geometry} ou \texttt{fancyhdr} en parallèle avec ce package.
115
+%
116
+%Le package impose également la police du document par le package \texttt{lmodern}, version vectorielle de la police \emph{Computer Modern Roman} par défaut de \LaTeX.
117
+%
118
+%\renewcommand{\contentsname}{Sommaire}
119
+%\tableofcontents
120
+%\clearpage
121
+%\newgeometry{
122
+%    top=\margehaut,headheight=\hauteurentete,headsep=\separationentete,
123
+%    bottom=\margebas,footskip=\separationpied,left=\margecote,right=\margecote,includemp
124
+%}
125
+%\section{Utilisation}
126
+%
127
+%Pour utiliser le package, il suffit d'inclure dans le préambule de son document la ligne :
128
+%\begin{verbatim}
129
+%    \usepackage{polytechnique}
130
+%\end{verbatim}
131
+%
132
+%Il faut également définir dans le préambule les métadonnées du document, avec deux nouveaux champs optionnels |\subtitle| et |\logo| :
133
+%\begin{itemize}
134
+%\item \DescribeMacro{\subtitle}|\subtitle|\marg{sous-titre} où \meta{sous-titre} peut être sur plusieurs lignes séparées par des |\\| ;
135
+%\item \DescribeMacro{\logo}|\logo|\marg{chemin} où \meta{chemin} est le chemin relatif vers le fichier d'un logo supplémentaire (entreprise, laboratoire, etc.) ; si le logo est dans le même dossier que le |.tex|, \meta{chemin} est le nom du fichier.
136
+%\end{itemize}
137
+%Il est recommandé de recadrer au mieux l'image du logo pour qu'elle prenne les meilleures dimensions possibles sur la page. Le deuxième logo n'apparaîtra que si l'option |titlepage| est activée.
138
+%Cela donne dans son préambule :
139
+%\begin{verbatim}
140
+%    \title{Le titre}
141
+%    \subtitle{Le sous-titre (optionnel, enlever cette ligne sinon)}
142
+%    \author{L'auteur Prénom \textsc{Nom}
143
+%         (si plusieurs séparer par des \\)}
144
+%    \date{La date, enlever la ligne pour avoir la date du jour}
145
+%    %\logo{Chemin relatif vers le logo}
146
+%\end{verbatim}
147
+%
148
+%Puis rajouter après |\begin{document}| la commande |\maketitle|. Les champs |\title|, |\subtitle|, |\author| et |\date| peuvent être sur plusieurs lignes, c'est par exemple utile pour une liste d'auteurs. On passera alors à la ligne avec la commande |\\|.
149
+%
150
+%Si un des champs est trop grand verticalement et nuit à la mise en page globale, on pourra réduire la taille des caractères à l'aide de |\large|, |\Large| ou |\normalsize| par exemple. On pourra aussi utiliser un tableau gagner en place horizontalement.
151
+%
152
+%\clearpage
153
+%\section{Options}
154
+%
155
+%\subsection{Options globales}
156
+%
157
+%Ces options peuvent être indiquées directement dans la déclaration de la classe du document, suivant la syntaxe habituelle : |\documentclass|\oarg{options globales}\marg{classe du document}. \meta{options globales} est une liste d'options séparées par des virgules, selon la syntaxe habituelle. Par exemple :
158
+%\begin{verbatim}
159
+%    \documenclass[titlepage,11pt,a4paper]{article}
160
+%\end{verbatim}
161
+%
162
+%Voici la liste des options globales qui sont reprises par le package :
163
+%\begin{description}
164
+%\item[oneside]  C'est le comportement par défaut, les en-têtes et les marges seront les mêmes pour toutes les pages.
165
+%\item[twoside]  Rend la marge intérieur plus grande que la marge extérieure et transforme les en-têtes gauche/droite en en-têtes intérieurs/extérieurs.
166
+%\item[notitlepage]  Comportement par défaut pour la classe |article|. |\maketitle| produit son résultat sur un quart de page environ.
167
+%\item[titlepage]  Comportement par défaut pour les classes |report| et |book|. 
168
+%\item[a4paper]  Signifie à \LaTeX{} que le format de la feuille est A4. À inclure systématiquement pour éviter les mauvaises surprises.
169
+%\end{description}
170
+%
171
+%\subsection{Options spécifiques}
172
+%
173
+%Ces options sont à appeler directement avec le package avec la syntaxe :
174
+%\begin{center}
175
+%|\usepackage|\oarg{options}|{polytechnique}|
176
+%\end{center}
177
+%En voici la liste :
178
+%\begin{description}
179
+%\item[fancysections]  Redéfinit les commandes |\chapter|, |\section|, |\subsection| et |\subsubsection| avec un style conforme à la charte graphique de l'École. Donne un aspect moins formel au document.
180
+%\item[pagenumber]  Change la numérotation des pages dans le pied de page. Si l'option est activée, elle deviendra \meta{page en cours}/\meta{nombre total de pages}.
181
+%\item[sectionmark]  Affiche en en-tête intérieur le titre de la section courante plutôt que le titre du document.
182
+%\item[chaptermark]  Idem que l'option précédente avec le titre du chapitre courant. Ne peut être utilisé avec la classe |article|.
183
+%\item[markboth]  Pensé pour les longs documents : affiche le titre de la section courante sur l'en-tête intérieur des pages paires et le titre du chapitre courant sur l'en-tête des pages impaires.
184
+%\end{description}
185
+%
186
+%\StopEventually{
187
+%    \clearpage
188
+%    \restoregeometry
189
+%    \PrintIndex
190
+%}
191
+%\clearpage
192
+%\section{Code source}
193
+%
194
+%\subsection{Déclaration des options}
195
+%Le code de ces options est exécuté à la fin du package grâce à la commande |\AtEndOfPackage|. Les commandes utilisées dans le code seront donc définies par la suite mais portent des noms explicites.
196
+%
197
+%\paragraph{a4paper}
198
+%Passe l'option |a4paper| declarée au package |geometry| pour action. L'option est aussi reconnue depuis les options passées a |\documentclass|.
199
+%    \begin{macrocode}
200
+\DeclareOption{a4paper}{
201
+    \PassOptionsToPackage{a4paper}{geometry}
202
+}
203
+%    \end{macrocode}
204
+%
205
+%\paragraph{fancysections}
206
+%Si activée, modifie le formatage des titres dans le document. Les commandes utilisées sont issues du package |titlesec|, se reporter à la documentation pour plus d'explications. 
207
+%    \begin{macrocode}
208
+\DeclareOption{fancysections}{
209
+    \AtEndOfPackage{
210
+    \titleformat{\chapter}
211
+        [display]
212
+        {\Huge\bfseries\sffamily}
213
+        {\LARGE\chaptertitlename{} \thechapter}
214
+        {0em}
215
+        {}
216
+        []
217
+    \titleformat{\section}
218
+        [display]
219
+        {\color{rouge485}\LARGE\bfseries\sffamily\filcenter}
220
+        {\thesection}{0em}
221
+        {\MakeUppercase}
222
+        [\vspace*{-0.5\baselineskip}%
223
+            \includegraphics{\polyfiletlongrouge}]
224
+    \titleformat{\subsection}
225
+        [hang]
226
+        {\color{bleu315}\Large\scshape}
227
+        {\thesubsection}
228
+        {0.5em}
229
+        {}
230
+        [\vspace*{-0.3\baselineskip}%
231
+            \includegraphics{\polyfiletcourtbleuclair}]
232
+	\titleformat{\subsubsection}
233
+	    [block]
234
+	    {\color{bleu303}\large\scshape}
235
+	    {\thesubsubsection}
236
+	    {0.5em}
237
+	    {\textbullet{} }
238
+	    []
239
+    }
240
+}
241
+%    \end{macrocode}
242
+%
243
+%\paragraph{notitlepage}
244
+%Cette option activée par défaut produit un titre avec logo vertical de l'X, auteur et date sur la première lignes, puis le titre et le sous-titre entre filets horizontaux. L'option est aussi reconnues depuis les options globales passées à |\documentclass|.
245
+%    \begin{macrocode}
246
+\DeclareOption{notitlepage}{
247
+    \AtBeginDocument{
248
+        \renewcommand*{\maketitle}{
249
+            \thispagestyle{plain}
250
+            \vspace*{\distancetitrelogo}
251
+%    \end{macrocode}
252
+% D'abord le bloc de gauche avec le nom des auteurs.
253
+%    \begin{macrocode}
254
+            \noindent
255
+            \begin{minipage}[b]{\largeurminipage}
256
+                \hspace{0cm}\polyauthorsave
257
+            \end{minipage}
258
+%    \end{macrocode}
259
+%La |minipage| permet les sauts de ligne pour avoir plusieurs auteurs, et |\hspace{0cm}| sert a ne pas faire une minipage vide si |\polyauthorsave={}|.
260
+%    \begin{macrocode}
261
+            \hspace*{\fill}
262
+%    \end{macrocode}
263
+%Les blocs sont séparés par des ressorts horizontaux. Vient ensuite le bloc central avec le logo de l'X.
264
+%    \begin{macrocode}
265
+            \includegraphics[width=\largeurlogovert]{\polylogovert}
266
+            \hspace*{\fill}
267
+%    \end{macrocode}
268
+%Et pour conclure la première ligne le bloc de droite qui contient la |\date|.
269
+%    \begin{macrocode}
270
+            \begin{minipage}[b]{\largeurminipage}
271
+                \flushright\hspace{0cm}\polydatesave
272
+            \end{minipage}
273
+%    \end{macrocode}
274
+%Le |\hspace{0cm}| sert a ne pas faire une minipage vide si |\polydatesave={}|.
275
+%    \begin{macrocode}
276
+            \\[\separationlogotrait]
277
+%    \end{macrocode}
278
+%Deux filets horizontaux, le titre et le sous-titre sont au milieu.
279
+%    \begin{macrocode}
280
+            \begin{center}
281
+                \textcolor{bleu303}{\rule{\textwidth}{\epaisseurtrait}}
282
+                \\
283
+                \color{bleu303}\Huge\scshape
284
+                \MakeUppercaseWithNewline{\polytitresave}
285
+%    \end{macrocode}
286
+%La ligne qui précède affiche le titre. La commande |\MakeUpperCaseWithNewLine| sera définie par la suite.
287
+%    \begin{macrocode}
288
+                \ifthenelse{\boolean{subtitle}}{
289
+%    \end{macrocode}
290
+%Le booléen |subtitle| est vrai si et seulement si le champ |\subtitle| a été initialisé. La clause qui suit s'exécute si il y a un sous-titre.
291
+%    \begin{macrocode}   
292
+                    \\[\separationlignestitre]
293
+                    \Large\upshape\polysoustitresave\\\normalsize
294
+                }{
295
+%    \end{macrocode}
296
+%Et maintenant, s'il n'y en a pas.
297
+%    \begin{macrocode}
298
+                    \\
299
+                    \normalsize
300
+                }
301
+                \textcolor{bleu303}{\rule{\textwidth}{\epaisseurtrait}}
302
+            \end{center}
303
+            \vspace*{\distancetitrecorps}
304
+        }
305
+    }
306
+}
307
+%    \end{macrocode}
308
+%
309
+%\paragraph{titlepage}
310
+%Option qui active une page de garde où le titre prend toute la page. L'option est aussi reconnue depuis les options passées a |\documentclass|. La page de garde comporte :
311
+%\begin{itemize}
312
+%\item les armes de l'École en arrière-plan ;
313
+%\item le titre en capitales bleues ;
314
+%\item le sous-titre sans empattements en bleu également ;
315
+%\item la date, suivie d'un filet séparateur ;
316
+%\item les auteurs ;
317
+%\item le logo horizontal de l'X et en option un autre logo.
318
+%\end{itemize}
319
+%    \begin{macrocode}
320
+\DeclareOption{titlepage}{
321
+    \AtBeginDocument{
322
+        \renewcommand*{\maketitle}{
323
+%    \end{macrocode}
324
+%On met d'abord les armes de l'École en arrière-plan. On créé pour cela une boîte à laquelle on donne des dimensions virtuelles nulles pour ne pas empiéter sur les autres éléments. L'image se trouve dans cette boîte.
325
+%    \begin{macrocode}
326
+            \noindent\makebox[\textwidth][c]{%
327
+              \raisebox{-\totalheight}[0pt][0pt]{%
328
+            \includegraphics[height=\hauteurlogopage]{\polyarmes}}}
329
+%    \end{macrocode}
330
+%On passe maintenant au titre, séparé par un espace vertical du haut de la page. La commande |\MakeUpperCaseWithNewLine| permet de mettre plusieurs lignes à la suite en capitales.
331
+%    \begin{macrocode}
332
+            \vspace*{0.125\textheight}
333
+            \begin{center}
334
+                \Huge\sffamily\bfseries\color{bleu303}
335
+                \MakeUppercaseWithNewline{\polytitresave}\\
336
+%    \end{macrocode}
337
+%Ensuite, le sous-titre. Le |\hspace{0cm}| est là pour occuper la place, sa présence est indispensable pour gérer le cas où |\polysoustitresave={}|.
338
+%    \begin{macrocode}
339
+                \vspace*{0.2\textheight}
340
+                \LARGE\hspace{0cm}\polysoustitresave\\
341
+%    \end{macrocode}
342
+%Ce qui suit est la date, idem pour le |\hspace{0cm}|.
343
+%    \begin{macrocode}
344
+                \vspace*{0.15\textheight}
345
+                \Large\mdseries\hspace{0cm}\polydatesave\\
346
+                \includegraphics{\polyfiletcourtbleu}
347
+                \\[0.4\baselineskip]
348
+%    \end{macrocode}
349
+%Ce qui suit affiche les auteurs, idem pour le |\hspace{0cm}|.
350
+%    \begin{macrocode}
351
+                \rmfamily\hspace{0cm}\polyauthorsave\\[\fill]
352
+%    \end{macrocode}
353
+%Enfin, le(s) logo(s) en bas de la page. On rabote la marge basse habituelle avec le |\vspace*{-0.5\margebas}|.
354
+%    \begin{macrocode}
355
+                $\;$\polylogosup{}
356
+                \vspace*{-0.5\margebas}
357
+            \end{center}
358
+            \thispagestyle{empty}
359
+            \clearpage
360
+        }
361
+    }
362
+}
363
+%    \end{macrocode}
364
+%
365
+%\paragraph{oneside} Règle les marges pour des documents recto uniquement. L'option est aussi reconnue depuis les options passées a |\documentclass|.
366
+%    \begin{macrocode}
367
+\DeclareOption{oneside}{
368
+    \AtEndOfPackage{
369
+        \geometry{left=\margecote,right=\margecote}
370
+    }
371
+}
372
+%    \end{macrocode}
373
+%
374
+%\paragraph{twoside} Règle les marges pour des documents recto-verso. L'option est aussi reconnue depuis les options passées a |\documentclass|. 
375
+%    \begin{macrocode}
376
+\DeclareOption{twoside}{
377
+    \AtEndOfPackage{
378
+        \geometry{inner=\margecoteinterieur,
379
+            outer=\margecoteexterieur}
380
+    }
381
+}
382
+%    \end{macrocode}
383
+%
384
+%\paragraph{sectionmark} Met le titre de la section en cours plutôt que le titre du document dans les en-têtes.
385
+%    \begin{macrocode}
386
+\DeclareOption{sectionmark}{
387
+    \AtEndOfPackage{
388
+%    \end{macrocode}
389
+%On redéfinit pour cela la commande des en-têtes intérieurs.
390
+%    \begin{macrocode}
391
+        \renewcommand{\enteteinterieur}[1]{
392
+%    \end{macrocode}
393
+%|\ifthesection|\marg{vrai}\marg{faux} exécute le code \meta{vrai} si une section courante a été définie au moment où le code est appelé, et faux sinon. Voir la documentation du package |titlesec|.
394
+%    \begin{macrocode}
395
+            \ifthesection{
396
+%    \end{macrocode}
397
+%S'il y a une section courante, on affiche son titre en en-tête intérieur.
398
+%    \begin{macrocode}
399
+                \raisebox{\decalageverticalentete}
400
+                    {\scshape\color{bleu303}
401
+                        \thesection{}.~\sectiontitle}
402
+            }{
403
+%    \end{macrocode}
404
+%Si pas de section courante définie, on ne met rien dans l'en-tête intérieur.
405
+%    \begin{macrocode}               
406
+            }
407
+        }
408
+    }
409
+}
410
+%    \end{macrocode}
411
+%
412
+%\paragraph{chaptermark} Met le titre de la section en cours plutôt que le titre du document dans les en-têtes. Le code est analogue à celui de l'option précédente.
413
+%    \begin{macrocode}
414
+\DeclareOption{chaptermark}{
415
+    \AtEndOfPackage{    
416
+        \renewcommand{\enteteinterieur}[1]{
417
+            \ifthechapter{
418
+                \raisebox{\decalageverticalentete}
419
+                     {\scshape\color{bleu303}
420
+                         \thechapter{}.~\chaptertitle}
421
+            }{
422
+
423
+            }
424
+        }
425
+    }
426
+}
427
+%    \end{macrocode}
428
+%
429
+%\paragraph{markboth} L'option est un mélange des deux options précédentes, voir la documentation utilisateur. On redéfinit alors |\enteteinterieurpair| et |\enteteinterieurimpair| pour distinguer les en-têtes des pages paires et impaires. Le code est un copier-coller de celui des deux options précédentes.
430
+%    \begin{macrocode}
431
+\DeclareOption{markboth}{
432
+    \AtEndOfPackage{
433
+        \renewcommand{\enteteinterieurimpair}{
434
+            \ifthesection{%Si la section a ete definie
435
+                \raisebox{\decalageverticalentete}
436
+                    {\scshape\color{bleu303}
437
+                        \thesection{}.~\sectiontitle}
438
+            }{
439
+
440
+            }
441
+        }
442
+        \renewcommand{\enteteinterieurpair}{
443
+            \ifthechapter{
444
+                \raisebox{\decalageverticalentete}
445
+                    {\scshape\color{bleu303}
446
+                        \thechapter{}.~\chaptertitle}
447
+            }{
448
+
449
+            }
450
+        }
451
+    }
452
+}
453
+%    \end{macrocode}
454
+%
455
+%\paragraph{pagenumber} Cette option modifie le pied central \emph{via} la commande |\piedcentre| pour y rajouter le nombre total de page grâce au label |LastPage| introduit par le package |lastpage|.
456
+%    \begin{macrocode}
457
+\DeclareOption{pagenumber}{
458
+    \AtEndOfPackage{
459
+        \RequirePackage{lastpage}
460
+        \renewcommand{\piedcentre}{
461
+            \setlength{\largeurfiletpiedcentre}
462
+                {2\largeurfiletpiedcentre}
463
+            \textcolor{bleu303}{\shortstack[c]{
464
+                \rule{\largeurfiletpiedcentre}{0.3mm}\\
465
+                \thepage/\pageref{LastPage}}}
466
+        }
467
+    }
468
+}
469
+%    \end{macrocode}
470
+%
471
+%\paragraph{Autres options} Toute option passée au package qui n'est pas dans la liste ci-avant est repassée au package |geometry| (différentes tailles de papier).
472
+%    \begin{macrocode}
473
+\DeclareOption*{
474
+    \PassOptionsToPackage{\CurrentOption}{geometry}
475
+}
476
+%    \end{macrocode}
477
+%Enfin, on exécute les options standards utilisées par la classe article.
478
+%    \begin{macrocode}
479
+\ExecuteOptions{a4paper,notitlepage,oneside}
480
+\ProcessOptions\relax
481
+%    \end{macrocode}
482
+%\subsection{Chargement des packages externes}
483
+%
484
+%Le package |polytechnique| utilise de nombreux autres packages afin d'effectuer la mise en page. Ces packages sont appelés avec la commande |\RequirePackage| par le code ci-dessous.
485
+%\begin{description}
486
+%\item[calc] Pour faire des operations sur les longueurs.
487
+%    \begin{macrocode}
488
+\RequirePackage{calc}
489
+%    \end{macrocode}
490
+%\item[color] Pour colorer les éléments du titre en accord avec la charte graphique.
491
+%    \begin{macrocode}
492
+\RequirePackage{color}
493
+%    \end{macrocode}
494
+%\item[geometry] Pour redéfinir les marges de manière pratique.
495
+%    \begin{macrocode}
496
+\RequirePackage{geometry}
497
+%    \end{macrocode} 
498
+%\item[graphicx] Pour insérer les images, en particulier les logos et les éléments graphiques.
499
+%    \begin{macrocode}
500
+\RequirePackage{graphicx}
501
+%    \end{macrocode}
502
+%\item[ifthen] Pour l'utilisation de la commande |\ifthenelse|\marg{condition}\marg{vrai}\marg{faux}.
503
+%    \begin{macrocode}
504
+\RequirePackage{ifthen}
505
+%    \end{macrocode}
506
+%\item[ifpdf] Pour détecter le mode de compilation du document.
507
+%    \begin{macrocode}
508
+\RequirePackage{ifpdf}
509
+%    \end{macrocode}
510
+%\item[lmodern] Pour les polices vectorielles.
511
+%    \begin{macrocode}
512
+\RequirePackage{lmodern}
513
+%    \end{macrocode}
514
+%\item[titlesec] Pour redéfinir les en-têtes et pieds de pages, ainsi que le format des titres de section.
515
+%    \begin{macrocode}
516
+\RequirePackage[pagestyles]{titlesec}
517
+%    \end{macrocode}
518
+%\end{description}
519
+%
520
+%\subsection{Couleurs}
521
+%
522
+%On définit des couleurs utilisées par le package définies par la charte graphique de l'École.
523
+%    \begin{macrocode}
524
+\definecolor{bleu303}{RGB}{0,62,92}
525
+\definecolor{rouge485}{RGB}{213,43,30}
526
+\definecolor{bleu315}{RGB}{0,104,128}
527
+%    \end{macrocode}
528
+%
529
+%\subsection{Logos et éléments graphiques}
530
+%
531
+%Les lignes suivantes servent à inclure les logos et éléments graphiques. Les fichiers correspondant doivent se trouver dans le même dossier que |polytechnique.sty|. |\ifpdf| exécute la première partie du code si le document est compilé avec |pdflatex|, et la deuxième si le document est compilé avec |latex|. Ceci permet d'utiliser des images vectorielles lorsque c'est possible.
532
+%    \begin{macrocode}
533
+\ifpdf
534
+    \newcommand{\polyfiletlongrouge}{ressources/filetlongrouge.pdf}
535
+    \newcommand{\polyfiletcourtbleuclair}{ressources/filetcourtbleuclair.pdf}
536
+    \newcommand{\polyfiletcourtbleu}{ressources/filetcourtbleu.pdf}
537
+    \newcommand{\polylogovert}{ressources/logovert.pdf}
538
+    \newcommand{\polylogohori}{ressources/logohori.pdf}
539
+    \newcommand{\polyarmes}{ressources/armes.pdf}
540
+\else
541
+    \newcommand{\polyfiletlongrouge}{ressources/filetlongrouge.eps}
542
+    \newcommand{\polyfiletcourtbleuclair}{ressources/filetcourtbleuclair.eps}
543
+    \newcommand{\polyfiletcourtbleu}{ressources/filetcourtbleu.eps}
544
+    \newcommand{\polylogovert}{ressources/logovert.eps}
545
+    \newcommand{\polylogohori}{ressources/logohori.eps}
546
+    \newcommand{\polyarmes}{ressources/armes.eps}
547
+\fi
548
+%    \end{macrocode}
549
+%
550
+%\subsection{Longeurs}
551
+%
552
+%Le package définit beaucoup de longueurs qui seront utilisées pour régler les marges, la taille des logos,la disposition des éléments sur la page de titre, les en-têtes...
553
+%
554
+%\subsubsection{Longueurs définies} On commence par définir quelques longueurs, choisies par la DIRCOM en accord avec la charte graphique.
555
+%
556
+%\paragraph{Marges}
557
+%\begin{macro}{\margehaut}
558
+%Longueur entre le haut de la page et le haut de la boîte de texte principal.
559
+%    \begin{macrocode}
560
+\newlength{\margehaut}
561
+\setlength{\margehaut}{40mm}
562
+%    \end{macrocode}
563
+%\end{macro}
564
+%\begin{macro}{\hauteurentete}
565
+%Longueur entre le haut de l'en-tête et le haut de la boîte de texte principale.
566
+%    \begin{macrocode}
567
+\newlength{\hauteurentete}
568
+\setlength{\hauteurentete}{27mm}
569
+%    \end{macrocode}
570
+%\end{macro}
571
+%\begin{macro}{\separationentente}
572
+%Longueur entre le bas de l'en-tête et le haut de la boîte de texte principale.
573
+%    \begin{macrocode}
574
+\newlength{\separationentete}
575
+\setlength{\separationentete}{12mm}
576
+%    \end{macrocode}
577
+%\end{macro}
578
+%\begin{macro}{\margecote}
579
+%Longueur de la marge des cotés, entre les côtés de la page et les côtés de la boîte de texte principale. Longueur utilisée par l'option |oneside|.
580
+%    \begin{macrocode}
581
+\newlength{\margecote}
582
+\setlength{\margecote}{20mm}
583
+%    \end{macrocode}
584
+%\end{macro}
585
+%\begin{macro}{\margecoteinterieur}
586
+%Longueur de la marge du côté intérieur. Longueur utilisée par l'option |twoside|.
587
+%    \begin{macrocode}
588
+\newlength{\margecoteinterieur}
589
+\setlength{\margecoteinterieur}{22.5mm}
590
+%    \end{macrocode}
591
+%\end{macro}
592
+%\begin{macro}{\margecoteexterieur}
593
+%Longueur de la marge du côté extérieur. Longueur utilisée par l'option |twoside|.
594
+%    \begin{macrocode}
595
+\newlength{\margecoteexterieur}
596
+\setlength{\margecoteexterieur}{17.5mm}
597
+%    \end{macrocode}
598
+%\end{macro}
599
+%\begin{macro}{\margebas}
600
+%Longueur entre le bas de la page et le bas de la boîte de texte principale.
601
+%    \begin{macrocode}
602
+\newlength{\margebas}
603
+\setlength{\margebas}{35mm}
604
+%    \end{macrocode}
605
+%\end{macro}
606
+%\begin{macro}{\separationpied}
607
+%Longueur entre le bas de la boîte de texte principale et le haut du pied de page.
608
+%    \begin{macrocode}
609
+\newlength{\separationpied}
610
+\setlength{\separationpied}{17.5mm}
611
+%    \end{macrocode}
612
+%\end{macro}
613
+%\paragraph{Taille des logos}
614
+%\begin{macro}{\hauteurlogohori}
615
+%Taille du logo horizontal de l'X utilisé dans les en-têtes.
616
+%    \begin{macrocode}
617
+\newlength{\hauteurlogohori}
618
+\setlength{\hauteurlogohori}{15mm}
619
+%    \end{macrocode}
620
+%\end{macro}
621
+%\paragraph{Page de titre} Ces longueurs sont utilisées sur la page de titre de l'option |notitlepage| uniquement (sauf |\hauteurlogopage|).
622
+%\begin{macro}{\separationtitre}
623
+%Longueur entre le haut de la page de titre et le haut de la première ligne contenant le logo vertical de l'École, les auteurs et la date.
624
+%    \begin{macrocode}
625
+\newlength{\separationtitre}
626
+\setlength{\separationtitre}{15mm}
627
+%    \end{macrocode}
628
+%\end{macro}
629
+%\begin{macro}{\epaisseurtrait}
630
+%Épaisseur des filets qui encadrent verticalement le titre.
631
+%    \begin{macrocode}
632
+\newlength{\epaisseurtrait}
633
+\setlength{\epaisseurtrait}{1pt}
634
+%    \end{macrocode}
635
+%\end{macro}
636
+%\begin{macro}{\separationlignestitre}
637
+%Longueur qui sépare le titre du sous-titre en plus de l'interligne normal.
638
+%    \begin{macrocode}
639
+\newlength{\separationlignestitre}
640
+\setlength{\separationlignestitre}{3mm}
641
+%    \end{macrocode}
642
+%\end{macro}
643
+%\begin{macro}{\separationtitrecorps}
644
+%Longueur entre le deuxième filet et le haut de la première ligne de texte après le titre.
645
+%    \begin{macrocode}
646
+\newlength{\separationtitrecorps}
647
+\setlength{\separationtitrecorps}{15mm}
648
+%    \end{macrocode}
649
+%\end{macro}
650
+%\begin{macro}{\hauteurlogopage}
651
+%Sur la page de titre de l'option |titlepage|, hauteur de l'image des armes de l'École en arrière-plan.
652
+%    \begin{macrocode}
653
+\newlength{\hauteurlogopage}
654
+\setlength{\hauteurlogopage}{0.6\textheight}
655
+%    \end{macrocode}
656
+%\end{macro}
657
+%\paragraph{En-têtes et pieds de page}
658
+%\begin{macro}{\separationentetelogo}
659
+%Longueur entre le côté intérieur du logo en en-tête et le côté intérieur de la minipage en en-tête qui contient le titre du document. Cette longueur est inutile avec les options |sectionmark|, |chaptermark| et |markboth|.
660
+%    \begin{macrocode}
661
+\newlength{\separationentetelogo}
662
+\setlength{\separationentetelogo}{20mm}
663
+%    \end{macrocode}
664
+%\end{macro}
665
+%\begin{macro}{\filetpiedcentre}
666
+%Largeur du filet au dessus du numéro de page dans le pied central.
667
+%    \begin{macrocode}
668
+\newlength{\largeurfiletpiedcentre}
669
+\setlength{\largeurfiletpiedcentre}{4mm}
670
+%    \end{macrocode}
671
+%\end{macro}
672
+%
673
+%\subsubsection{Longueur calculées}
674
+%
675
+%Les longueurs suivantes sont calculées à partir des longueurs précédentes.
676
+%
677
+%\paragraph{Taille des logos}
678
+%\begin{macro}{\largeurlogovert}
679
+%Selon la charte graphique, la largeur du logo vertical sur une page de titre est $y/7$ où $y$ est la largeur de la page.
680
+%    \begin{macrocode}
681
+\newlength{\largeurlogovert}
682
+\setlength{\largeurlogovert}{\paperwidth/\real{7}}
683
+%    \end{macrocode}
684
+%\end{macro}
685
+%\begin{macro}{\hauteurlogovert}
686
+%1.361 est le ration hauteur/largeur du logo vertical de l'École.
687
+%    \begin{macrocode}
688
+\newlength{\hauteurlogovert}
689
+\setlength{\hauteurlogovert}{\largeurlogovert*\real{1.361}}
690
+%    \end{macrocode}
691
+%\end{macro}
692
+%\begin{macro}{\largeurlogohori}
693
+%1.859 est le ration hauteur/largeur du logo vertical de l'École.
694
+%    \begin{macrocode}
695
+\newlength{\largeurlogohori}
696
+\setlength{\largeurlogohori}{\hauteurlogohori*\real{1.859}}
697
+%    \end{macrocode}
698
+%\end{macro}
699
+%\paragraph{Page de titre}
700
+%\begin{macro}{\distancetitrelogo}
701
+%Argument négatif d'un |\vspace| réglé pour que la distance verticale entre le haut de la page et le haut de la première ligne contenant le logo soit bien |\separationtitre|.
702
+%    \begin{macrocode}
703
+\newlength{\distancetitrelogo}
704
+\setlength{\distancetitrelogo}{\separationtitre-\margehaut}
705
+%    \end{macrocode}
706
+%\end{macro}
707
+%\begin{macro}{\separationlogotrait}
708
+%Distance entre le bas du logo et le premier filet de la page de titre.
709
+%    \begin{macrocode}
710
+\newlength{\separationlogotrait}
711
+\setlength{\separationlogotrait}{-\baselineskip*2+10mm}
712
+%    \end{macrocode}
713
+%\end{macro}
714
+%\begin{macro}{\largeurminipage}
715
+%Largeur des minipage contenant les auteurs et la date sur la page de titre.
716
+%    \begin{macrocode}
717
+\newlength{\largeurminipage}
718
+\setlength{\largeurminipage}{(\textwidth-\largeurlogovert)/\real{2}}
719
+%    \end{macrocode}
720
+%\end{macro}
721
+%\begin{macro}{\distancetitrecorps}
722
+%Argument d'un |\vspace| réglé pour que la distance verticale entre le deuxième filet et le haut de la première ligne du texte soit bien |\separationtitrecorps|.
723
+%    \begin{macrocode}
724
+\newlength{\distancetitrecorps}
725
+\setlength{\distancetitrecorps}{\separationtitrecorps-\baselineskip*2}
726
+%    \end{macrocode}
727
+%\end{macro}
728
+%\paragraph{En-têtes et pieds de page}
729
+%\begin{macro}{\largeurtitreentete}
730
+%Largeur de la minipage contenant le titre du document dans les en-têtes.
731
+%    \begin{macrocode}
732
+\newlength{\largeurtitreentete}
733
+\setlength{\largeurtitreentete}{\textwidth-\largeurlogohori
734
+    -\separationentetelogo}
735
+%    \end{macrocode}
736
+%\end{macro}
737
+%\begin{macro}{\decalageverticalentete}
738
+%Longeur ajustée pour que le titre ou la ligne d'en-tête intérieur soit alignée verticalement avec le « École polytechnique » du logo horizontal qui lui fait face. Le 2.6 remplit cette fonction.
739
+%    \begin{macrocode}
740
+\newlength{\decalageverticalentete}
741
+\setlength{\decalageverticalentete}{\hauteurlogohori/\real{2.6}}
742
+%    \end{macrocode}
743
+%\end{macro}
744
+%
745
+%\subsection{Marges,en-têteset pieds de page}
746
+%
747
+%On utilise les package |geometry| et |titlesec| pour les régler à l'aide des longueurs définies auparavant.  Les marges gauches et droites sont définies par les options |oneside| et |twoside|.
748
+%    \begin{macrocode}
749
+\geometry{
750
+    top=\margehaut,headheight=\hauteurentete,headsep=\separationentete,
751
+    bottom=\margebas,footskip=\separationpied
752
+}
753
+%    \end{macrocode}
754
+%On définit d'abord les contenus des differents en-têtes et pieds de page.
755
+%\begin{macro}{\piedcentre}
756
+%    \begin{macrocode}
757
+\newcommand{\piedcentre}{
758
+    \textcolor{bleu303}{\shortstack[c]
759
+        {\rule{\largeurfiletpiedcentre}{0.3mm}\\\thepage}}
760
+}
761
+%    \end{macrocode}
762
+%\end{macro}
763
+%\begin{macro}{\enteteinterieur}
764
+%L'argument sert à insérer |\flushright| dans le cas ou l'en-tête est sur une page impaire.
765
+%    \begin{macrocode}
766
+\newcommand{\enteteinterieur}[1]{
767
+    \raisebox{\decalageverticalentete}
768
+        {\begin{minipage}[b]{\largeurtitreentete}
769
+            \scshape#1\textcolor{bleu303}
770
+            \polytitresave
771
+        \end{minipage}}
772
+}
773
+%    \end{macrocode}
774
+%\end{macro}
775
+%\begin{macro}{\enteteexterieur}
776
+%    \begin{macrocode}
777
+\newcommand{\enteteexterieur}{
778
+    \includegraphics[height=\hauteurlogohori]{\polylogohori}
779
+}
780
+%    \end{macrocode}
781
+%\end{macro}
782
+%Spécifications supplémentaires pur pair/impair, redéfinies par l'option |markboth|.
783
+%\begin{macro}{\enteteinterieurpair}
784
+%    \begin{macrocode}
785
+\newcommand{\enteteinterieurpair}{
786
+    \enteteinterieur{}
787
+}
788
+%    \end{macrocode}
789
+%\end{macro}
790
+%\begin{macro}{\entetinterieurimpair}
791
+%    \begin{macrocode}
792
+\newcommand{\enteteinterieurimpair}{
793
+    \enteteinterieur{\flushright}
794
+}
795
+%    \end{macrocode}
796
+%\end{macro}
797
+%\begin{macro}{\entetes}
798
+%Comme l'en-tête contient le titre, on les active uniquement quand le titre est defini d'ou cette forme de commande qui sera placée dans la commande |title| redéfinie.
799
+%    \begin{macrocode}
800
+\newcommand{\entetes}{
801
+    \newpagestyle{polytechnique}{
802
+%    \end{macrocode}
803
+%On definit un nouveau style d'en-tetes. Voir la documentation du package |titlesec| pour la syntaxe.
804
+%    \begin{macrocode}
805
+    \sethead[\enteteinterieurpair]% left even
806
+            []% center even
807
+            [\enteteexterieur]% right even
808
+            {\enteteexterieur}% left odd
809
+            {}% center odd
810
+            {\enteteinterieurimpair}% right odd
811
+    \setfoot{}% left odd
812
+             {\piedcentre}% center odd
813
+             {}% right odd
814
+    }
815
+    \pagestyle{polytechnique}
816
+}
817
+%    \end{macrocode}
818
+%\end{macro}
819
+%On redéfinit ensuite le style de page par défaut de la page de titre et des titres de chapitres, |plain|, pour qu'il soit en accord avec le reste du document.
820
+%    \begin{macrocode}
821
+\renewpagestyle{plain}{
822
+    \sethead{}% left
823
+            {}% center
824
+            {}% right
825
+    \setfoot{}% left
826
+            {\piedcentre}% center
827
+            {}% right
828
+}
829
+%    \end{macrocode}
830
+%Puisque les en-têtes normaux utilisent le titre, tant que le titre n'a pas été défini avec |\title| on laisse les en-têtes normaux par défaut.
831
+%    \begin{macrocode}
832
+\pagestyle{plain}
833
+%    \end{macrocode}
834
+%
835
+%\subsection{Pages de titre}
836
+%Grace aux commandes suivantes, on peut faire |\title|\marg{titre} au lieu de |\renewcommand{\polytitre}|\marg{titre}.
837
+%
838
+%On commence par définir un booléen |subtitle| vrai si et seulement si l'utilisateur a définit un sous-titre par la commande |\subtitle|.
839
+%    \begin{macrocode}
840
+\newboolean{subtitle}\setboolean{subtitle}{false}
841
+%    \end{macrocode}
842
+%\begin{macro}{\polysoustitresave}
843
+%À voir comme une variable dans laquelle on stocke une valeur.
844
+%    \begin{macrocode}
845
+\newcommand{\polysoustitresave}{}
846
+%    \end{macrocode}
847
+%\end{macro}
848
+%\begin{macro}{\subtitle}
849
+%Commande par laquelle l'utilisateur définit le sous-titre.
850
+%    \begin{macrocode}
851
+\newcommand*{\subtitle}[1]{
852
+    \renewcommand*{\polysoustitresave}{#1}
853
+%    \end{macrocode}
854
+%Si le sous-titre a éé défini, on met le booléen |subtitle| à vrai.
855
+%    \begin{macrocode}
856
+    \setboolean{subtitle}{true}
857
+}
858
+%    \end{macrocode}
859
+%\end{macro}
860
+%\begin{macro}{\polytitresave}
861
+%Idem que |\polysoustitresave|.
862
+%    \begin{macrocode}
863
+\newcommand{\polytitresave}{}
864
+%    \end{macrocode}
865
+%\end{macro}
866
+%\begin{macro}{\title}
867
+%Commande utilisée par l'utilisateur pour définit le titre. Comme les en-tête dépendent du titre, on les définit une fois qu'on connaît le titre.
868
+%    \begin{macrocode}
869
+\renewcommand*{\title}[1]{
870
+    \renewcommand*{\polytitresave}{#1}
871
+    \entetes
872
+}
873
+%   \end{macrocode}
874
+%\end{macro}
875
+%\begin{macro}{\polyauthorsave}
876
+%Idem que |polysoustitresave| et |\polytitresave|.
877
+%    \begin{macrocode}
878
+\newcommand{\polyauthorsave}{}
879
+%    \end{macrocode}
880
+%\end{macro}
881
+%\begin{macro}{\author}
882
+%    \begin{macrocode}
883
+\renewcommand*{\author}[1]{
884
+    \renewcommand*{\polyauthorsave}{#1}
885
+}
886
+%    \end{macrocode}
887
+%\end{macro}
888
+%\begin{macro}{\polydatesave}
889
+%|\today| est la date du jour dans la langue qu'il faut si |babel| est actif.
890
+%    \begin{macrocode}
891
+\newcommand{\polydatesave}{\today}
892
+%    \end{macrocode}
893
+%\end{macro}
894
+%\begin{macro}{\date}
895
+%    \begin{macrocode}
896
+\renewcommand*{\date}[1]{
897
+    \renewcommand*{\polydatesave}{#1}
898
+}
899
+%    \end{macrocode}
900
+%\end{macro}
901
+%\begin{macro}{\polylogosup}
902
+%Logo(s) de bas de page pour l'option |titlepage|. C'est une variable de stockage initialisee par defaut au logo de l'École vertical.
903
+%    \begin{macrocode}
904
+\newcommand{\polylogosup}{
905
+\includegraphics[height=\hauteurlogovert]{\polylogovert}
906
+}
907
+%    \end{macrocode}
908
+%\end{macro}
909
+%\begin{macro}{\logo}
910
+%Commande utilisée par l'utilisateur pour définir un deuxième logo.
911
+%    \begin{macrocode}
912
+\newcommand{\logo}[1]{
913
+%    \end{macrocode}
914
+%On redefinit la variable |\polylogosup|.
915
+%    \begin{macrocode}
916
+    \renewcommand{\polylogosup}{
917
+        \includegraphics[height=1.5\hauteurlogohori]
918
+            {\polylogohori}
919
+        \hspace{0.05\textwidth}
920
+%    \end{macrocode}
921
+%Pour une certaine harmonie, on ne laisse pas à l'utilisateur le choix des dimensions du logo. Celles-ci sont déterminées en fonction des dimensions du logo horizontal de l'X pour que les deux logos aient des proportions similaires.
922
+%    \begin{macrocode}
923
+        \includegraphics[height=\hauteurlogovert,
924
+            width=1.5\largeurlogohori,
925
+            keepaspectratio]{#1}%
926
+    }
927
+}
928
+%    \end{macrocode}
929
+%\end{macro}
930
+%
931
+%\subsection{Divers}
932
+%
933
+%\begin{macro}{\MakeUppercaseWithNewline}
934
+%Permet de mettre plusieurs lignes en majuscules (pour le titre).
935
+%    \begin{macrocode}
936
+\newcommand{\MakeUppercaseWithNewline}[1]{
937
+      \begingroup
938
+        \let\SavedOrgNewline\\%
939
+        \DeclareRobustCommand{\\}{\SavedOrgNewline}%
940
+        \MakeUppercase{#1}%
941
+    \endgroup
942
+}
943
+%    \end{macrocode}
944
+%\end{macro}
945
+%\Finale
946
+%
947
+%\typeout{****************************************************}
948
+%\typeout{*                                                  *}
949
+%\typeout{* Pour finir l'installation, deplacez les fichiers *}
950
+%\typeout{* polytechnique.sty, les .pdf et les .eps dans le  *}
951
+%\typeout{* dossier ou se trouvent les packages de votre di- *}
952
+%\typeout{* tribution (si ce n'est pas deja fait).           *}
953
+%\typeout{*                                                  *}
954
+\PrintChanges
955
+\endinput

+ 357 - 236
polytechnique.sty

@@ -1,255 +1,376 @@
1
+%%
2
+%% This is file `polytechnique.sty',
3
+%% generated with the docstrip utility.
4
+%%
5
+%% The original source files were:
6
+%%
7
+%% polytechnique.dtx  (with options: `package')
8
+%% This is a generated file.
9
+%% 
10
+%% Copyright (C) 2015 by Denis Merigoux
11
+%% 
12
+%% This file may be distributed and/or modified under the
13
+%% conditions of the LaTeX Project Public License, either
14
+%% version 1.2 of this license or (at your option) any later
15
+%% version. The latest version of this license is in:
16
+%% 
17
+%% http://www.latex-project.org/lppl.txt
18
+%% 
19
+%% and version 1.2 or later is part of all distributions of
20
+%% LaTeX version 1999/12/01 or later.
1 21
 \NeedsTeXFormat{LaTeX2e}
2
-\ProvidesPackage{polytechnique}[2015/02/03 v1.2.1, 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.
22
+\ProvidesPackage{polytechnique}
23
+ [2015/04/29 v1.3.0, standard scientific documents layout for Ecole polytechnique (Palaiseau,France).]
24
+%%\CharacterTable
25
+%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
26
+%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
27
+%% Digits \0\1\2\3\4\5\6\7\8\9
28
+%% Exclamation \! Double quote \" Hash (number) \#
29
+%% Dollar \$ Percent \% Ampersand \&
30
+%% Acute accent \' Left paren \( Right paren \)
31
+%% Asterisk \* Plus \+ Comma \,
32
+%% Minus \- Point \. Solidus \/
33
+%% Colon \: Semicolon \; Less than \<
34
+%% Equals \= Greater than \> Question mark \?
35
+%% Commercial at \@ Left bracket \[ Backslash \\
36
+%% Right bracket \] Circumflex \^ Underscore \_
37
+%% Grave accent \` Left brace \{ Vertical bar \|
38
+%% Right brace \} Tilde \~}
39
+%%
40
+\DeclareOption{a4paper}{
41
+    \PassOptionsToPackage{a4paper}{geometry}
42
+}
43
+\DeclareOption{fancysections}{
44
+    \AtEndOfPackage{
45
+    \titleformat{\chapter}
46
+        [display]
47
+        {\Huge\bfseries\sffamily}
48
+        {\LARGE\chaptertitlename{} \thechapter}
49
+        {0em}
50
+        {}
51
+        []
52
+    \titleformat{\section}
53
+        [display]
54
+        {\color{rouge485}\LARGE\bfseries\sffamily\filcenter}
55
+        {\thesection}{0em}
56
+        {\MakeUppercase}
57
+        [\vspace*{-0.5\baselineskip}%
58
+            \includegraphics{\polyfiletlongrouge}]
59
+    \titleformat{\subsection}
60
+        [hang]
61
+        {\color{bleu315}\Large\scshape}
62
+        {\thesubsection}
63
+        {0.5em}
64
+        {}
65
+        [\vspace*{-0.3\baselineskip}%
66
+            \includegraphics{\polyfiletcourtbleuclair}]
67
+\titleformat{\subsubsection}
68
+    [block]
69
+    {\color{bleu303}\large\scshape}
70
+    {\thesubsubsection}
71
+    {0.5em}
72
+    {\textbullet{} }
73
+    []
74
+    }
75
+}
76
+\DeclareOption{notitlepage}{
77
+    \AtBeginDocument{
78
+        \renewcommand*{\maketitle}{
79
+            \thispagestyle{plain}
80
+            \vspace*{\distancetitrelogo}
81
+            \noindent
82
+            \begin{minipage}[b]{\largeurminipage}
83
+                \hspace{0cm}\polyauthorsave
84
+            \end{minipage}
85
+            \hspace*{\fill}
86
+            \includegraphics[width=\largeurlogovert]{\polylogovert}
87
+            \hspace*{\fill}
88
+            \begin{minipage}[b]{\largeurminipage}
89
+                \flushright\hspace{0cm}\polydatesave
90
+            \end{minipage}
91
+            \\[\separationlogotrait]
92
+            \begin{center}
93
+                \textcolor{bleu303}{\rule{\textwidth}{\epaisseurtrait}}
94
+                \\
95
+                \color{bleu303}\Huge\scshape
96
+                \MakeUppercaseWithNewline{\polytitresave}
97
+                \ifthenelse{\boolean{subtitle}}{
98
+                    \\[\separationlignestitre]
99
+                    \Large\upshape\polysoustitresave\\\normalsize
100
+                }{
101
+                    \\
102
+                    \normalsize
103
+                }
104
+                \textcolor{bleu303}{\rule{\textwidth}{\epaisseurtrait}}
105
+            \end{center}
106
+            \vspace*{\distancetitrecorps}
107
+        }
108
+    }
109
+}
110
+\DeclareOption{titlepage}{
111
+    \AtBeginDocument{
112
+        \renewcommand*{\maketitle}{
113
+            \noindent\makebox[\textwidth][c]{%
114
+              \raisebox{-\totalheight}[0pt][0pt]{%
115
+            \includegraphics[height=\hauteurlogopage]{\polyarmes}}}
116
+            \vspace*{0.125\textheight}
117
+            \begin{center}
118
+                \Huge\sffamily\bfseries\color{bleu303}
119
+                \MakeUppercaseWithNewline{\polytitresave}\\
120
+                \vspace*{0.2\textheight}
121
+                \LARGE\hspace{0cm}\polysoustitresave\\
122
+                \vspace*{0.15\textheight}
123
+                \Large\mdseries\hspace{0cm}\polydatesave\\
124
+                \includegraphics{\polyfiletcourtbleu}
125
+                \\[0.4\baselineskip]
126
+                \rmfamily\hspace{0cm}\polyauthorsave\\[\fill]
127
+                $\;$\polylogosup{}
128
+                \vspace*{-0.5\margebas}
129
+            \end{center}
130
+            \thispagestyle{empty}
131
+            \clearpage
132
+        }
133
+    }
134
+}
135
+\DeclareOption{oneside}{
136
+    \AtEndOfPackage{
137
+        \geometry{left=\margecote,right=\margecote}
138
+    }
139
+}
140
+\DeclareOption{twoside}{
141
+    \AtEndOfPackage{
142
+        \geometry{inner=\margecoteinterieur,
143
+            outer=\margecoteexterieur}
144
+    }
145
+}
146
+\DeclareOption{sectionmark}{
147
+    \AtEndOfPackage{
148
+        \renewcommand{\enteteinterieur}[1]{
149
+            \ifthesection{
150
+                \raisebox{\decalageverticalentete}
151
+                    {\scshape\color{bleu303}
152
+                        \thesection{}.~\sectiontitle}
153
+            }{
154
+            }
155
+        }
156
+    }
157
+}
158
+\DeclareOption{chaptermark}{
159
+    \AtEndOfPackage{
160
+        \renewcommand{\enteteinterieur}[1]{
161
+            \ifthechapter{
162
+                \raisebox{\decalageverticalentete}
163
+                     {\scshape\color{bleu303}
164
+                         \thechapter{}.~\chaptertitle}
165
+            }{
13 166
 
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{fancysections}{%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{\chapter}[display]{\Huge\bfseries\sffamily}{\LARGE\chaptertitlename{} \thechapter}{0em}{}[]
24
-		\titleformat{\section}[display]{\color{rouge485}\LARGE\bfseries\sffamily\filcenter}{\thesection}{0em}{\MakeUppercase}[
25
-			\vspace*{-0.5\baselineskip}\includegraphics{\polyfiletlongrouge}
26
-		]
27
-		\titleformat{\subsection}[hang]{\color{bleu315}\Large\scshape}{\thesubsection}{0.5em}{}[
28
-		\vspace*{-0.3\baselineskip}\includegraphics{\polyfiletcourtbleuclair}
29
-		]
30
-		\titleformat{\subsubsection}[block]{\color{bleu303}\large\scshape}{\thesubsubsection}{0.5em}{\textbullet{} }[]
31
-	}
32
-}
33
-\DeclareOption{shorttitle}{%Option activee par defaut, titre avec logo vertical sur 1/2 page
34
-	\AtBeginDocument{
35
-		\renewcommand*{\maketitle}{
36
-			\thispagestyle{plain}
37
-			\vspace*{\distancetitrelogo}
38
-			%Bloc de gauche (auteurs)
39
-			\noindent
40
-			\begin{minipage}[b]{\largeurminipage}\hspace{0cm}\polyauthorsave\end{minipage}%La minipage permet les sauts de ligne pour avoir plusieurs auteurs,e \hspace{0cm} sert a ne pas faire une minipage vide si \polyauthorsave={}
41
-			\hspace*{\fill}
42
-			%Centre (logo)
43
-			\includegraphics[width=\largeurlogovert]{\polylogovert}\hspace*{\fill}
44
-			%Bloc de droite (date)
45
-			\begin{minipage}[b]{\largeurminipage}\flushright\hspace{0cm}\polydatesave\end{minipage}%Idem ci-dessus, le \hspace{0cm} sert a ne pas faire une minipage vide si \polydatesave={}
46
-			\\[\separationlogotrait]
47
-			%Deux filets horizontaux, le titre et le sous-titre sont au milieu
48
-			\begin{center}
49
-				\textcolor{bleu303}{\rule{\textwidth}{\epaisseurtrait}}
50
-				\\\color{bleu303}\Huge\scshape\MakeUppercaseWithNewline{\polytitresave}%Le titre
51
-				\ifthenelse{\boolean{subtitle}}{%Si il y a un sous-titre
52
-					\\[\separationlignestitre]
53
-					\Large\upshape\polysoustitresave\\\normalsize
54
-				}{%S'il n'y en a pas
55
-					\\\normalsize
56
-				}
57
-				\textcolor{bleu303}{\rule{\textwidth}{\epaisseurtrait}}
58
-			\end{center}
59
-			\vspace*{\distancetitrecorps}
60
-		}
61
-}
62
-}
63
-\DeclareOption{coverpage}{%Option qui active une page de garde où le titre prend toute la page
64
-	\AtBeginDocument{
65
-		\renewcommand*{\maketitle}{
66
-			%On met les armes de l'Ecole en arriere-plan
67
-			\noindent\makebox[\textwidth][c]{%
68
-  			\raisebox{-\totalheight}[0pt][0pt]{%
69
-    		\includegraphics[height=\hauteurlogopage]{\polyarmes}}}%
70
-			\vspace*{0.125\textheight}
71
-			\begin{center}
72
-				%Le titre
73
-				\Huge\sffamily\bfseries\color{bleu303}\MakeUppercaseWithNewline{\polytitresave}\\
74
-				\vspace*{0.2\textheight}
75
-				%Le sous-titre
76
-				\LARGE\hspace{0cm}\polysoustitresave%Le \hspace{0cm} est la pour occuper la place, si la ligne disparaît la mise en page est modifiee
77
-				\\
78
-				\vspace*{0.15\textheight}
79
-				%La date
80
-				\Large\mdseries\hspace{0cm}\polydatesave\\%Le \hspace{0cm} est la pour occuper la place, si la ligne disparaît la mise en page est modifiee
81
-				\includegraphics{\polyfiletcourtbleu}\\[0.4\baselineskip]
82
-				%Les auteurs
83
-				\rmfamily\hspace{0cm}\polyauthorsave\\[\fill]%Le \hspace{0cm} est la pour occuper la place, si la ligne disparaît la mise en page est modifiee
84
-				%Le(s) logo(s) en bas de la page
85
-				$\;$\polylogosup{}
86
-				\vspace*{-0.5\margebas}%On rabote la marge basse habituelle
87
-			\end{center}
88
-			\thispagestyle{empty}
89
-			\clearpage
90
-			\setcounter{page}{1}
91
-		}
92
-	}
93
-}
94
-\DeclareOption*{%Toute autre option sera donnee en argument au package geometry (si differentes tailles de papier)
95
-	\PassOptionsToPackage{\CurrentOption}{geometry}
96
-}
97
-\ExecuteOptions{a4paper,shorttitle}%Par defaut, papier A4 et petit titre
98
-\ProcessOptions\relax
167
+            }
168
+        }
169
+    }
170
+}
171
+\DeclareOption{markboth}{
172
+    \AtEndOfPackage{
173
+        \renewcommand{\enteteinterieurimpair}{
174
+            \ifthesection{%Si la section a ete definie
175
+                \raisebox{\decalageverticalentete}
176
+                    {\scshape\color{bleu303}
177
+                        \thesection{}.~\sectiontitle}
178
+            }{
99 179
 
100
-%=======================================================================================
101
-%Packages requis
102
-%=======================================================================================
103
-\RequirePackage{ifthen}%Pour la structure conditionnelle
104
-\RequirePackage{ifpdf}%Pour detecter le mode de compilation
105
-\RequirePackage[pagestyles]{titlesec}%Pour les en-tetes - pieds de page
106
-\RequirePackage{graphicx}%Pour les logos inseres
107
-\RequirePackage{geometry}%Pour les marges
108
-\RequirePackage{calc}%Pour faire des operations sur les longueurs
109
-\RequirePackage{color}%Pour mettre les elements en bleu
110
-\RequirePackage{lmodern}%On fixe la police une fois pour toutes
180
+            }
181
+        }
182
+        \renewcommand{\enteteinterieurpair}{
183
+            \ifthechapter{
184
+                \raisebox{\decalageverticalentete}
185
+                    {\scshape\color{bleu303}
186
+                        \thechapter{}.~\chaptertitle}
187
+            }{
111 188
 
112
-%=======================================================================================
113
-%Couleurs
114
-%Les valeurs RGB proviennent de la charte graphique de l'X (2014)
115
-%=======================================================================================
189
+            }
190
+        }
191
+    }
192
+}
193
+\DeclareOption{pagenumber}{
194
+    \AtEndOfPackage{
195
+        \RequirePackage{lastpage}
196
+        \renewcommand{\piedcentre}{
197
+            \setlength{\largeurfiletpiedcentre}
198
+                {2\largeurfiletpiedcentre}
199
+            \textcolor{bleu303}{\shortstack[c]{
200
+                \rule{\largeurfiletpiedcentre}{0.3mm}\\
201
+                \thepage/\pageref{LastPage}}}
202
+        }
203
+    }
204
+}
205
+\DeclareOption*{
206
+    \PassOptionsToPackage{\CurrentOption}{geometry}
207
+}
208
+\ExecuteOptions{a4paper,notitlepage,oneside}
209
+\ProcessOptions\relax
210
+\RequirePackage{calc}
211
+\RequirePackage{color}
212
+\RequirePackage{geometry}
213
+\RequirePackage{graphicx}
214
+\RequirePackage{ifthen}
215
+\RequirePackage{ifpdf}
216
+\RequirePackage{lmodern}
217
+\RequirePackage[pagestyles]{titlesec}
116 218
 \definecolor{bleu303}{RGB}{0,62,92}
117 219
 \definecolor{rouge485}{RGB}{213,43,30}
118 220
 \definecolor{bleu315}{RGB}{0,104,128}
119
-
120
-%=======================================================================================
121
-%Inclusion des logos
122
-%Chaque chemin vers un logo est defini par une commande speciale
123
-%=======================================================================================
124
-\ifpdf%Si la compilation se fait avec pdflatex
125
-	\newcommand{\polyfiletlongrouge}{filetlongrouge.pdf}
126
-	\newcommand{\polyfiletcourtbleuclair}{filetcourtbleuclair.pdf}
127
-	\newcommand{\polyfiletcourtbleu}{filetcourtbleu.pdf}
128
-	\newcommand{\polylogovert}{logovert.pdf}
129
-	\newcommand{\polylogohori}{logohori.pdf}
130
-	\newcommand{\polyarmes}{armes.pdf}
131
-\else%Si la compilation se fait avec latex, xetex ou autres
132
-	\newcommand{\polyfiletlongrouge}{filetlongrouge.eps}
133
-	\newcommand{\polyfiletcourtbleuclair}{filetcourtbleuclair.eps}
134
-	\newcommand{\polyfiletcourtbleu}{filetcourtbleu.eps}
135
-	\newcommand{\polylogovert}{logovert.eps}
136
-	\newcommand{\polylogohori}{logohori.eps}
137
-	\newcommand{\polyarmes}{armes.eps}
221
+\ifpdf
222
+    \newcommand{\polyfiletlongrouge}{ressources/filetlongrouge.pdf}
223
+    \newcommand{\polyfiletcourtbleuclair}{ressources/filetcourtbleuclair.pdf}
224
+    \newcommand{\polyfiletcourtbleu}{ressources/filetcourtbleu.pdf}
225
+    \newcommand{\polylogovert}{ressources/logovert.pdf}
226
+    \newcommand{\polylogohori}{ressources/logohori.pdf}
227
+    \newcommand{\polyarmes}{ressources/armes.pdf}
228
+\else
229
+    \newcommand{\polyfiletlongrouge}{ressources/filetlongrouge.eps}
230
+    \newcommand{\polyfiletcourtbleuclair}{ressources/filetcourtbleuclair.eps}
231
+    \newcommand{\polyfiletcourtbleu}{ressources/filetcourtbleu.eps}
232
+    \newcommand{\polylogovert}{ressources/logovert.eps}
233
+    \newcommand{\polylogohori}{ressources/logohori.eps}
234
+    \newcommand{\polyarmes}{ressources/armes.eps}
138 235
 \fi
139
-
140
-%=======================================================================================
141
-%Longeurs
142
-%Celles-ci sont definies manuellement, le design de la page a ete fait par la Dircom
143
-%=======================================================================================
144
-%Marges
145
-\newlength{\margehaut}\setlength{\margehaut}{40mm}
146
-\newlength{\hauteurentete}\setlength{\hauteurentete}{27mm}
147
-\newlength{\separationentete}\setlength{\separationentete}{12mm}
148
-\newlength{\margecote}\setlength{\margecote}{20mm}
149
-\newlength{\margebas}\setlength{\margebas}{35mm}
150
-\newlength{\separationpied}\setlength{\separationpied}{17.5mm}
151
-%Taille des logos
152
-\newlength{\hauteurlogohori}\setlength{\hauteurlogohori}{15mm}
153
-%Disposition de la page de titre
154
-\newlength{\separationtitre}\setlength{\separationtitre}{15mm}
155
-\newlength{\epaisseurtrait}\setlength{\epaisseurtrait}{1pt}
156
-\newlength{\separationlignestitre}\setlength{\separationlignestitre}{3mm}
157
-\newlength{\separationtitrecorps}\setlength{\separationtitrecorps}{15mm}
158
-\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 ?)
159
-%En-tetes
160
-\newlength{\separationentetelogo}\setlength{\separationentetelogo}{20mm}
161
-
162
-%=======================================================================================
163
-%Longueurs (suite)
164
-%Celles-là sont déduites des longueurs definies au dessus.
165
-%=======================================================================================
166
-%Taille des logos
167
-\newlength{\largeurlogovert}\setlength{\largeurlogovert}{\paperwidth/\real{7}}%Selon la charte graphique, la largeur est y/7 où y est la largeur de la page.
168
-\newlength{\hauteurlogovert}\setlength{\hauteurlogovert}{\largeurlogovert*\real{1.361}}%1.361 est le ration hauteur/largeur du logo vertical de l'X.
169
-\newlength{\largeurlogohori}\setlength{\largeurlogohori}{\hauteurlogohori*\real{1.859}}%1.859 est le ration hauteur/largeur du logo vertical de l'X.
170
-%Disposition des titres
171
-\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.
172
-\newlength{\separationlogotrait}\setlength{\separationlogotrait}{-\baselineskip*2+10mm}
173
-\newlength{\largeurminipage}\setlength{\largeurminipage}{(\textwidth-\largeurlogovert)/\real{2}}
174
-%En-têtes
175
-\newlength{\largeurtitreentete}\setlength{\largeurtitreentete}{\textwidth-\largeurlogohori-\separationentetelogo}
176
-\newlength{\decalageverticalentete}\setlength{\decalageverticalentete}{\hauteurlogohori/\real{2.6}}%2.6 pour que le titre soit aligne sur le "polytechnique" du logo à gauche
177
-\newlength{\distancetitrecorps}\setlength{\distancetitrecorps}{\separationtitrecorps-\baselineskip*2}
178
-
179
-%=======================================================================================
180
-%Marges, entetes et pieds de page
181
-%On utilise les package geometry et titlesec pour les regler
182
-%=======================================================================================
183
-\geometry{%Definit la geometrie de la page
184
-	%Toutes les commandes en dessous sont des longueurs definies auparavant
185
-	top=\margehaut,headheight=\hauteurentete,headsep=\separationentete,
186
-	left=\margecote,right=\margecote,
187
-	bottom=\margebas,footskip=\separationpied
188
-}
189
-\newcommand{\entetes}{%Comme l'en-tete contient le titre, on les active uniquement quand le titre est defini d'ou cette forme de commande
190
-	\newpagestyle{polytechnique}{%On definit un nouveau style d'en-tetes
191
-	\sethead{\includegraphics[height=\hauteurlogohori]{\polylogohori}}% left
192
-	        {}% center
193
-	        {\raisebox{\decalageverticalentete}{\begin{minipage}[b]{\largeurtitreentete}\scshape\flushright\textcolor{bleu303}{\polytitresave}\end{minipage}}}% right
194
-	\setfoot{}% left
195
- 	        {\textcolor{bleu303}{\shortstack[c]{\rule{4mm}{0.3mm}\\\thepage}}}% center, \shorstack c'est pour mettre le tiret au dessus du numero de page
196
- 	        {}% right
197
-	}
198
-	\pagestyle{polytechnique}
236
+\newlength{\margehaut}
237
+\setlength{\margehaut}{40mm}
238
+\newlength{\hauteurentete}
239
+\setlength{\hauteurentete}{27mm}
240
+\newlength{\separationentete}
241
+\setlength{\separationentete}{12mm}
242
+\newlength{\margecote}
243
+\setlength{\margecote}{20mm}
244
+\newlength{\margecoteinterieur}
245
+\setlength{\margecoteinterieur}{22.5mm}
246
+\newlength{\margecoteexterieur}
247
+\setlength{\margecoteexterieur}{17.5mm}
248
+\newlength{\margebas}
249
+\setlength{\margebas}{35mm}
250
+\newlength{\separationpied}
251
+\setlength{\separationpied}{17.5mm}
252
+\newlength{\hauteurlogohori}
253
+\setlength{\hauteurlogohori}{15mm}
254
+\newlength{\separationtitre}
255
+\setlength{\separationtitre}{15mm}
256
+\newlength{\epaisseurtrait}
257
+\setlength{\epaisseurtrait}{1pt}
258
+\newlength{\separationlignestitre}
259
+\setlength{\separationlignestitre}{3mm}
260
+\newlength{\separationtitrecorps}
261
+\setlength{\separationtitrecorps}{15mm}
262
+\newlength{\hauteurlogopage}
263
+\setlength{\hauteurlogopage}{0.6\textheight}
264
+\newlength{\separationentetelogo}
265
+\setlength{\separationentetelogo}{20mm}
266
+\newlength{\largeurfiletpiedcentre}
267
+\setlength{\largeurfiletpiedcentre}{4mm}
268
+\newlength{\largeurlogovert}
269
+\setlength{\largeurlogovert}{\paperwidth/\real{7}}
270
+\newlength{\hauteurlogovert}
271
+\setlength{\hauteurlogovert}{\largeurlogovert*\real{1.361}}
272
+\newlength{\largeurlogohori}
273
+\setlength{\largeurlogohori}{\hauteurlogohori*\real{1.859}}
274
+\newlength{\distancetitrelogo}
275
+\setlength{\distancetitrelogo}{\separationtitre-\margehaut}
276
+\newlength{\separationlogotrait}
277
+\setlength{\separationlogotrait}{-\baselineskip*2+10mm}
278
+\newlength{\largeurminipage}
279
+\setlength{\largeurminipage}{(\textwidth-\largeurlogovert)/\real{2}}
280
+\newlength{\distancetitrecorps}
281
+\setlength{\distancetitrecorps}{\separationtitrecorps-\baselineskip*2}
282
+\newlength{\largeurtitreentete}
283
+\setlength{\largeurtitreentete}{\textwidth-\largeurlogohori
284
+    -\separationentetelogo}
285
+\newlength{\decalageverticalentete}
286
+\setlength{\decalageverticalentete}{\hauteurlogohori/\real{2.6}}
287
+\geometry{
288
+    top=\margehaut,headheight=\hauteurentete,headsep=\separationentete,
289
+    bottom=\margebas,footskip=\separationpied
290
+}
291
+\newcommand{\piedcentre}{
292
+    \textcolor{bleu303}{\shortstack[c]
293
+        {\rule{\largeurfiletpiedcentre}{0.3mm}\\\thepage}}
294
+}
295
+\newcommand{\enteteinterieur}[1]{
296
+    \raisebox{\decalageverticalentete}
297
+        {\begin{minipage}[b]{\largeurtitreentete}
298
+            \scshape#1\textcolor{bleu303}
299
+            \polytitresave
300
+        \end{minipage}}
301
+}
302
+\newcommand{\enteteexterieur}{
303
+    \includegraphics[height=\hauteurlogohori]{\polylogohori}
304
+}
305
+\newcommand{\enteteinterieurpair}{
306
+    \enteteinterieur{}
307
+}
308
+\newcommand{\enteteinterieurimpair}{
309
+    \enteteinterieur{\flushright}
310
+}
311
+\newcommand{\entetes}{
312
+    \newpagestyle{polytechnique}{
313
+    \sethead[\enteteinterieurpair]% left even
314
+            []% center even
315
+            [\enteteexterieur]% right even
316
+            {\enteteexterieur}% left odd
317
+            {}% center odd
318
+            {\enteteinterieurimpair}% right odd
319
+    \setfoot{}% left odd
320
+             {\piedcentre}% center odd
321
+             {}% right odd
322
+    }
323
+    \pagestyle{polytechnique}
199 324
 }
200 325
 \renewpagestyle{plain}{
201
-	\sethead{}% left
202
-	        {}% center
203
-	        {}% right
204
-	\setfoot{}% left
205
-	        {\textcolor{bleu303}{\shortstack[c]{\rule{4mm}{0.3mm}\\\thepage}}}% center, \shorstack c'est pour mettre le tiret au dessus du numero de page
206
-	        {}% right
326
+    \sethead{}% left
327
+            {}% center
328
+            {}% right
329
+    \setfoot{}% left
330
+            {\piedcentre}% center
331
+            {}% right
207 332
 }
208 333
 \pagestyle{plain}
209
-
210
-%=======================================================================================
211
-%Commandes relatives a la page de titre
212
-%Grace a elles, on peut faire \titre{Machin} au lieu de \renewcommand{\polytitre}{machin}
213
-%=======================================================================================
214
-%Sous-titre
215
-\newboolean{subtitle}\setboolean{subtitle}{false}%Pour detecter si il existe un sous-titre, au debut on met le booleen a false
216
-\newcommand{\polysoustitresave}{}%A voir comme une variable dans laquelle on stocke une valeur
334
+\newboolean{subtitle}\setboolean{subtitle}{false}
335
+\newcommand{\polysoustitresave}{}
217 336
 \newcommand*{\subtitle}[1]{
218
-	\renewcommand*{\polysoustitresave}{#1}
219
-	\setboolean{subtitle}{true}%Puis on le met a true quand on definit un sous-titre
337
+    \renewcommand*{\polysoustitresave}{#1}
338
+    \setboolean{subtitle}{true}
220 339
 }
221
-%Titre
222
-\newcommand{\polytitresave}{}%A voir comme une variable dans laquelle on stocke une valeur
340
+\newcommand{\polytitresave}{}
223 341
 \renewcommand*{\title}[1]{
224
-	\renewcommand*{\polytitresave}{#1}
225
-	\entetes%Comme les en-tete dependent du titre, on les definit une fois qu'on connait le titre
342
+    \renewcommand*{\polytitresave}{#1}
343
+    \entetes
226 344
 }
227
-%Auteurs
228
-\newcommand{\polyauthorsave}{}%A voir comme une variable dans laquelle on stocke une valeur
345
+\newcommand{\polyauthorsave}{}
229 346
 \renewcommand*{\author}[1]{
230
-	\renewcommand*{\polyauthorsave}{#1}
347
+    \renewcommand*{\polyauthorsave}{#1}
231 348
 }
232
-%Date
233
-\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
349
+\newcommand{\polydatesave}{\today}
234 350
 \renewcommand*{\date}[1]{
235
-	\renewcommand*{\polydatesave}{#1}
236
-}
237
-%Logo(s) de bas de page pour l'option coverpage
238
-\newcommand{\polylogosup}{\includegraphics[height=\hauteurlogovert]{\polylogovert}}%Variable de stockage initialisee par defaut au logo de l'X vertical
239
-\newcommand{\logo}[1]{%Si l'utilisateur definit un logo personnalise avec \logo{truc}
240
-	\renewcommand{\polylogosup}{%On redefinit la variable
241
-	\includegraphics[height=1.5\hauteurlogohori]{\polylogohori}%Avec le logo horizontal de l'X
242
-		\hspace{0.05\textwidth}
243
-		\includegraphics[height=\hauteurlogovert,
244
-			width=1.5\largeurlogohori,
245
-			keepaspectratio]{#1}%Et le logo personnalise pas trop gros
246
-	}
247
-}
248
-%Divers
249
-\newcommand{\MakeUppercaseWithNewline}[1]{%Permet de mettre plusieurs lignes en majuscules (pour le titre)
250
-  	\begingroup
251
-    	\let\SavedOrgNewline\\%
252
-    	\DeclareRobustCommand{\\}{\SavedOrgNewline}%
253
-    	\MakeUppercase{#1}%
254
-	\endgroup
255
-}
351
+    \renewcommand*{\polydatesave}{#1}
352
+}
353
+\newcommand{\polylogosup}{
354
+\includegraphics[height=\hauteurlogovert]{\polylogovert}
355
+}
356
+\newcommand{\logo}[1]{
357
+    \renewcommand{\polylogosup}{
358
+        \includegraphics[height=1.5\hauteurlogohori]
359
+            {\polylogohori}
360
+        \hspace{0.05\textwidth}
361
+        \includegraphics[height=\hauteurlogovert,
362
+            width=1.5\largeurlogohori,
363
+            keepaspectratio]{#1}%
364
+    }
365
+}
366
+\newcommand{\MakeUppercaseWithNewline}[1]{
367
+      \begingroup
368
+        \let\SavedOrgNewline\\%
369
+        \DeclareRobustCommand{\\}{\SavedOrgNewline}%
370
+        \MakeUppercase{#1}%
371
+    \endgroup
372
+}
373
+\PrintChanges
374
+\endinput
375
+%%
376
+%% End of file `polytechnique.sty'.

+ 39 - 0
windows_installer.bat

@@ -0,0 +1,39 @@
1
+@echo off
2
+pdflatex polytechnique.dtx
3
+makeindex -s gind.ist -o polytechnique.ind polytechnique.idx
4
+pdflatex polytechnique.dtx
5
+del *.aux
6
+del *.glo
7
+del *.idx
8
+del *.ilg
9
+del *.ind
10
+del *.log
11
+del *.toc
12
+pause
13
+kpsewhich article.cls> temp.txt
14
+set /p installdir=<temp.txt
15
+set installdir=%installdir:~0,-16%
16
+del temp.txt
17
+md "%installdir%polytechnique"
18
+md "%installdir%polytechnique/ressources"
19
+copy polytechnique.dtx "%installdir%polytechnique"
20
+copy polytechnique.sty "%installdir%polytechnique"
21
+md "%installdir:~0,-10%doc/polytechnique"
22
+copy polytechnique.pdf "%installdir:~0,-10%doc/polytechnique"
23
+del polytechnique.sty
24
+cd ressources
25
+copy *.eps "%installdir%polytechnique/ressources"
26
+copy *.pdf "%installdir%polytechnique/ressources"
27
+echo ************************************************
28
+echo * La base de donnees des packages est en train *
29
+echo * d'etre mise a jour. Cela peut prendre un peu *
30
+echo * de temps. Merci de patienter.                *
31
+echo ************************************************
32
+initexmf --update-fndb
33
+echo ************************************************
34
+echo * Le package a ete installe ! La documentation *
35
+echo * se trouve a l'emplacement suivant :          *
36
+echo %installdir:~0,-10%doc/polytechnique
37
+echo * Bonne utilisation !                          *
38
+echo ************************************************
39
+pause