Skip to content
Snippets Groups Projects
polytechnique.sty 12.8 KiB
Newer Older
%%
%% This is file `polytechnique.sty',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
%% polytechnique.dtx  (with options: `package')
%% This is a generated file.
%% 
%% Copyright (C) 2015 by Denis Merigoux
%% 
%% This file may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either
%% version 1.2 of this license or (at your option) any later
%% version. The latest version of this license is in:
%% 
%% http://www.latex-project.org/lppl.txt
%% 
%% and version 1.2 or later is part of all distributions of
%% LaTeX version 1999/12/01 or later.
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{polytechnique}
Denis Merigoux's avatar
Denis Merigoux committed
 [2015/05/28 v1.3.2, standard scientific documents layout for Ecole polytechnique (Palaiseau,France).]
%%\CharacterTable
%% {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
%% 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
%% Digits \0\1\2\3\4\5\6\7\8\9
%% Exclamation \! Double quote \" Hash (number) \#
%% Dollar \$ Percent \% Ampersand \&
%% Acute accent \' Left paren \( Right paren \)
%% Asterisk \* Plus \+ Comma \,
%% Minus \- Point \. Solidus \/
%% Colon \: Semicolon \; Less than \<
%% Equals \= Greater than \> Question mark \?
%% Commercial at \@ Left bracket \[ Backslash \\
%% Right bracket \] Circumflex \^ Underscore \_
%% Grave accent \` Left brace \{ Vertical bar \|
%% Right brace \} Tilde \~}
%%
\DeclareOption{a4paper}{
    \PassOptionsToPackage{a4paper}{geometry}
}
\DeclareOption{fancysections}{
    \AtEndOfPackage{
    \titleformat{\chapter}
        [display]
        {\Huge\bfseries\sffamily}
        {\LARGE\chaptertitlename{} \thechapter}
        {0em}
        {}
        []
    \titleformat{\section}
        [display]
        {\color{rouge485}\LARGE\bfseries\sffamily\filcenter}
        {\thesection}{0em}
        {\MakeUppercase}
        [\vspace*{-0.5\baselineskip}%
            \includegraphics{\polyfiletlongrouge}]
    \titleformat{\subsection}
        [hang]
        {\color{bleu315}\Large\scshape}
        {\thesubsection}
        {0.5em}
        {}
        [\vspace*{-0.3\baselineskip}%
            \includegraphics{\polyfiletcourtbleuclair}]
\titleformat{\subsubsection}
    [block]
    {\color{bleu303}\large\scshape}
    {\thesubsubsection}
    {0.5em}
    {\textbullet{} }
    []
    }
}
\DeclareOption{notitlepage}{
        \renewcommand*{\maketitle}{
            \notitlepagelayout{}
    }
}
\DeclareOption{titlepage}{
        \renewcommand*{\maketitle}{
            \titlepagelayout{}
    }
}
\DeclareOption{oneside}{
    \AtEndOfPackage{
Denis Merigoux's avatar
Denis Merigoux committed
        \geometry{inner=\margecote,outer=\margecote}
    }
}
\DeclareOption{twoside}{
    \AtEndOfPackage{
        \geometry{inner=\margecoteinterieur,
            outer=\margecoteexterieur}
    }
}
\DeclareOption{sectionmark}{
    \AtEndOfPackage{
Denis Merigoux's avatar
Denis Merigoux committed
        \renewcommand{\enteteexterieur}[1]{
            \ifthesection{
                \raisebox{\decalageverticalentete}
                    {\scshape\color{bleu303}
                        \thesection{}.~\sectiontitle}
            }{
            }
        }
    }
}
\DeclareOption{chaptermark}{
    \AtEndOfPackage{
Denis Merigoux's avatar
Denis Merigoux committed
        \renewcommand{\enteteexterieur}[1]{
            \ifthechapter{
                \raisebox{\decalageverticalentete}
                     {\scshape\color{bleu303}
                         \thechapter{}.~\chaptertitle}
            }{

            }
        }
    }
}
\DeclareOption{markboth}{
    \AtEndOfPackage{
Denis Merigoux's avatar
Denis Merigoux committed
        \renewcommand{\enteteexterieurimpair}{
            \ifthesection{%Si la section a ete definie
                \raisebox{\decalageverticalentete}
                    {\scshape\color{bleu303}
                        \thesection{}.~\sectiontitle}
            }{

            }
        }
Denis Merigoux's avatar
Denis Merigoux committed
        \renewcommand{\enteteexterieurpair}{
            \ifthechapter{
                \raisebox{\decalageverticalentete}
                    {\scshape\color{bleu303}
                        \thechapter{}.~\chaptertitle}
            }{

            }
        }
    }
}
\DeclareOption{pagenumber}{
    \AtEndOfPackage{
        \RequirePackage{lastpage}
        \renewcommand{\piedcentre}{
            \setlength{\largeurfiletpiedcentre}
                {2\largeurfiletpiedcentre}
            \textcolor{bleu303}{\shortstack[c]{
                \rule{\largeurfiletpiedcentre}{0.3mm}\\
                \thepage/\pageref{LastPage}}}
        }
    }
}
\DeclareOption*{
    \PassOptionsToPackage{\CurrentOption}{geometry}
}
Denis Merigoux's avatar
Denis Merigoux committed
\ExecuteOptions{a4paper,notitlepage,oneside}
Denis Merigoux's avatar
Denis Merigoux committed
\ProcessOptions*
\RequirePackage{calc}
\RequirePackage{color}
\RequirePackage{geometry}
\RequirePackage{graphicx}
\RequirePackage{ifthen}
\RequirePackage{ifpdf}
\RequirePackage{lmodern}
\RequirePackage[pagestyles]{titlesec}
\definecolor{bleu303}{RGB}{0,62,92}
\definecolor{rouge485}{RGB}{213,43,30}
\definecolor{bleu315}{RGB}{0,104,128}
\ifpdf
    \newcommand{\polyfiletlongrouge}{filetlongrouge.pdf}
    \newcommand{\polyfiletcourtbleuclair}
        {filetcourtbleuclair.pdf}
    \newcommand{\polyfiletcourtbleu}{filetcourtbleu.pdf}
    \newcommand{\polylogovert}{logovert.pdf}
    \newcommand{\polylogohori}{logohori.pdf}
    \newcommand{\polyarmes}{armes.pdf}
\else
    \newcommand{\polyfiletlongrouge}{filetlongrouge.eps}
    \newcommand{\polyfiletcourtbleuclair}
        {filetcourtbleuclair.eps}
    \newcommand{\polyfiletcourtbleu}{filetcourtbleu.eps}
    \newcommand{\polylogovert}{logovert.eps}
    \newcommand{\polylogohori}{logohori.eps}
    \newcommand{\polyarmes}{armes.eps}
\fi
\newlength{\margehaut}
\setlength{\margehaut}{40mm}
\newlength{\hauteurentete}
\setlength{\hauteurentete}{27mm}
\newlength{\separationentete}
\setlength{\separationentete}{12mm}
\newlength{\margecote}
\setlength{\margecote}{20mm}
\newlength{\margecoteinterieur}
\setlength{\margecoteinterieur}{22.5mm}
\newlength{\margecoteexterieur}
\setlength{\margecoteexterieur}{17.5mm}
\newlength{\margebas}
\setlength{\margebas}{35mm}
\newlength{\separationpied}
\setlength{\separationpied}{17.5mm}
\newlength{\hauteurlogohori}
\setlength{\hauteurlogohori}{15mm}
\newlength{\separationtitre}
\setlength{\separationtitre}{15mm}
\newlength{\epaisseurtrait}
\setlength{\epaisseurtrait}{1pt}
\newlength{\separationlignestitre}
\setlength{\separationlignestitre}{3mm}
\newlength{\separationtitrecorps}
\setlength{\separationtitrecorps}{15mm}
\newlength{\hauteurlogopage}
\setlength{\hauteurlogopage}{0.6\textheight}
\newlength{\separationentetelogo}
\setlength{\separationentetelogo}{20mm}
\newlength{\largeurfiletpiedcentre}
\setlength{\largeurfiletpiedcentre}{4mm}
\newlength{\largeurlogovert}
\setlength{\largeurlogovert}{\paperwidth/\real{7}}
\newlength{\hauteurlogovert}
\setlength{\hauteurlogovert}{\largeurlogovert*\real{1.361}}
\newlength{\largeurlogohori}
\setlength{\largeurlogohori}{\hauteurlogohori*\real{1.859}}
\newlength{\distancetitrelogo}
\setlength{\distancetitrelogo}{\separationtitre-\margehaut}
\newlength{\separationlogotrait}
\setlength{\separationlogotrait}{-\baselineskip*2+10mm}
\newlength{\largeurminipage}
\setlength{\largeurminipage}
Denis Merigoux's avatar
Denis Merigoux committed
    {(\textwidth-\largeurlogovert-0.5cm)/\real{2}}
\newlength{\distancetitrecorps}
\setlength{\distancetitrecorps}
    {\separationtitrecorps-\baselineskip*2}
\newlength{\largeurtitreentete}
\setlength{\largeurtitreentete}{\textwidth-\largeurlogohori
    -\separationentetelogo}
\newlength{\decalageverticalentete}
\setlength{\decalageverticalentete}
    {\hauteurlogohori/\real{2.6}}
\geometry{
    top=\margehaut,headheight=\hauteurentete,
    headsep=\separationentete,
    bottom=\margebas,footskip=\separationpied
}
\newcommand{\piedcentre}{
    \textcolor{bleu303}{\shortstack[c]
        {\rule{\largeurfiletpiedcentre}{0.3mm}\\\thepage}}
}
Denis Merigoux's avatar
Denis Merigoux committed
\newcommand{\enteteexterieur}[1]{
    \raisebox{\decalageverticalentete}
        {\begin{minipage}[b]{\largeurtitreentete}
            \scshape#1\textcolor{bleu303}
            \polytitresave
        \end{minipage}}
}
Denis Merigoux's avatar
Denis Merigoux committed
\newcommand{\enteteinterieur}{
    \includegraphics[height=\hauteurlogohori]{\polylogohori}
}
Denis Merigoux's avatar
Denis Merigoux committed
\newcommand{\enteteexterieurpair}{
    \enteteexterieur{\flushright}
Denis Merigoux's avatar
Denis Merigoux committed
\newcommand{\enteteexterieurimpair}{
    \enteteexterieur{}
}
\newcommand{\entetes}{
    \newpagestyle{polytechnique}{
Denis Merigoux's avatar
Denis Merigoux committed
    \sethead[\enteteinterieur]% left even
Denis Merigoux's avatar
Denis Merigoux committed
            [\enteteexterieurpair]% right even
            {\enteteexterieurimpair}% left odd
Denis Merigoux's avatar
Denis Merigoux committed
            {\enteteinterieur}% right odd
    \setfoot{}% left odd
             {\piedcentre}% center odd
             {}% right odd
    }
    \pagestyle{polytechnique}
}
\renewpagestyle{plain}{
    \sethead{}% left
            {}% center
            {}% right
    \setfoot{}% left
            {\piedcentre}% center
            {}% right
}
\pagestyle{plain}
\newboolean{subtitle}\setboolean{subtitle}{false}
\newcommand{\polysoustitresave}{}
\newcommand*{\subtitle}[1]{
    \renewcommand*{\polysoustitresave}{#1}
    \setboolean{subtitle}{true}
}
\newcommand{\polytitresave}{}
\renewcommand*{\title}[1]{
    \renewcommand*{\polytitresave}{#1}
    \entetes
}
\newcommand{\polyauthorsave}{}
\renewcommand*{\author}[1]{
    \renewcommand*{\polyauthorsave}{#1}
}
\newcommand{\polydatesave}{\today}
\renewcommand*{\date}[1]{
    \renewcommand*{\polydatesave}{#1}
}

\newcommand{\logo}[1]{
    \renewcommand{\titlepagebottomline}{
Denis Merigoux's avatar
Denis Merigoux committed
     \begin{minipage}{5\largeurlogohori}
         \centering
         \raisebox{-0.5\height}{
                \includegraphics[width=1.5\largeurlogohori]
                    {\polylogohori}
            }
            \hspace{0.25\largeurlogohori}
            \raisebox{-0.5\height}{
                \includegraphics[height=\hauteurlogovert,
                    width=1.5\largeurlogohori,
                    keepaspectratio]{#1}
            }
        \end{minipage}
    }
    \renewcommand{\notitlepageupperline}{
Denis Merigoux's avatar
Denis Merigoux committed
        \noindent%
        \begin{minipage}{\textwidth}
Denis Merigoux's avatar
Denis Merigoux committed
            \centering
\begin{minipage}{0.33\textwidth}
                \raisebox{-0.5\height}
                    {\includegraphics[width=\largeurlogovert]
                        {\polylogovert}
                    }
Denis Merigoux's avatar
Denis Merigoux committed
            \end{minipage}%
            %    \end{macrocode}
            \begin{minipage}{0.33\textwidth}
                \centering\polydatesave{}\\
                \polyauthorsave{}\\
                \includegraphics{\polyfiletcourtbleu}
            \end{minipage}%
            \begin{minipage}{0.33\textwidth}
                    \flushright\raisebox{-0.5\height}
                    {\includegraphics[height=\hauteurlogovert,
Denis Merigoux's avatar
Denis Merigoux committed
                        width=1.75\largeurlogohori,
Denis Merigoux's avatar
Denis Merigoux committed
            \end{minipage}
        \end{minipage}
    }
}
\newcommand{\notitlepageupperline}{
    \noindent
    \begin{minipage}[b]{\largeurminipage}
        \hspace{0cm}\polyauthorsave
Denis Merigoux's avatar
Denis Merigoux committed
    \end{minipage}%
    \hspace*{\fill}
    \includegraphics[width=\largeurlogovert]{\polylogovert}
Denis Merigoux's avatar
Denis Merigoux committed
    \hspace*{\fill}%
    \begin{minipage}[b]{\largeurminipage}
        \flushright\hspace{0cm}\polydatesave
Denis Merigoux's avatar
Denis Merigoux committed
    \end{minipage}%
}
\newcommand{\notitlepagelayout}{
\thispagestyle{plain}
            \vspace*{\distancetitrelogo}
            \notitlepageupperline{}
            \\[\separationlogotrait]
            \begin{center}
                    \textcolor{bleu303}
                        {\rule{\textwidth}{\epaisseurtrait}}
                    \\
                    \color{bleu303}\Huge\scshape
                    \MakeUppercaseWithNewline{\polytitresave}
                \ifthenelse{\boolean{subtitle}}{
                    \\[\separationlignestitre]
                    \Large\upshape\polysoustitresave\\\normalsize
                }{
                    \\
                    \normalsize
                }
                \textcolor{bleu303}
                    {\rule{\textwidth}{\epaisseurtrait}}
            \end{center}
            \vspace*{\distancetitrecorps}
}
\newcommand{\titlepagebottomline}{
\includegraphics[height=\hauteurlogovert]{\polylogovert}
}
\newcommand{\titlepagelayout}{
        \noindent\makebox[\textwidth][c]{%
          \raisebox{-\totalheight}[0pt][0pt]{%
        \includegraphics[height=\hauteurlogopage]{\polyarmes}}}
        \vspace*{0.125\textheight}
        \begin{center}
            \Huge\sffamily\bfseries\color{bleu303}
            \MakeUppercaseWithNewline{\polytitresave}\\
            \vspace*{0.2\textheight}
            \LARGE\hspace{0cm}\polysoustitresave\\
            \vspace*{0.15\textheight}
            \Large\mdseries\hspace{0cm}\polydatesave\\
            \includegraphics{\polyfiletcourtbleu}
            \\[0.4\baselineskip]
            \rmfamily\hspace{0cm}\polyauthorsave\\[\fill]
            $\;$\titlepagebottomline{}
            \vspace*{-0.5\margebas}
        \end{center}
        \thispagestyle{empty}
        \clearpage
}
\newcommand{\MakeUppercaseWithNewline}[1]{
      \begingroup
        \let\SavedOrgNewline\\%
        \DeclareRobustCommand{\\}{\SavedOrgNewline}%
        \MakeUppercase{#1}%
    \endgroup
}
\endinput
%%
%% End of file `polytechnique.sty'.