Pārlūkot izejas kodu

Rewriting the package into a Documented LaTeX file .dtx. Added custom installer for windows that compiles the .dtx file with LaTeX and export the resulting files into the right directory of the TeX tree.

Denis Merigoux 10 gadi atpakaļ
vecāks
revīzija
2ecae9c6d0
4 mainītis faili ar 1353 papildinājumiem un 236 dzēšanām
  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