\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{framabook}[2007/12/03]

%-----------------------------------------------------------------------
%
% Avec des si...
%
\newif\ifversionenligne
\newif\ifbrouillon
\newif\ifpasdepartieII
\newif\ifframabookversion
%
\pasdepartieIIfalse
\framabookversiontrue
\brouillonfalse
\versionenlignetrue

%-----------------------------------------------------------------------

%-----------------------------------------------------------------------
%
% Declaration des options
%
\DeclareOption{draft}{\brouillontrue\PassOptionsToClass{draft}{book}}
\DeclareOption{versionpapier}{\versionenlignefalse} 
\DeclareOption{versionenligne}{\versionenlignetrue}
\DeclareOption*{\PassOptionsToClass{\CurrentOption}{book}}
%
% Exécution des options
%
\ProcessOptions
%
\LoadClass[a4paper,twoside]{book}
%-----------------------------------------------------------------------


%----------------------------------------------------------------------
%
% les petits paquets à charger
%

\RequirePackage{ifpdf}
\RequirePackage[latin1]{inputenc}
\RequirePackage[T1]{fontenc}

\let\@makecaptionORIG=\@makecaption
\RequirePackage{subfig}
\RequirePackage[english,french]{babel}
\RequirePackage[autolanguage]{numprint}
\addto\captionsfrench{\def\CaptionSeparator{\space\textemdash\space}}  
\addto\captionsfrench{\def\figurename{{\scshape Figure}}}
\let\@makecaption=\@makecaptionORIG
%
\RequirePackage{listings}
\RequirePackage[french]{varioref,keystroke}
\RequirePackage{titlebox,fancyhdr,amssymb}
\RequirePackage{calc,index}
\RequirePackage[french]{minitoc-hyper}
\RequirePackage{multicol,array,pifont}
\RequirePackage{fancybox}
\RequirePackage{wrapfig}
\RequirePackage{textcomp,amsmath,manumac,unix,recursion}
\RequirePackage{natbib}

%


\ifpdf % moteur pdflatex
  \ifversionenligne % version en ligne
  \RequirePackage[pdftex,
                  hyperindex=true,
                  pdfpagelabels,
                  colorlinks=true]{hyperref}
  \else % version papier
  \RequirePackage[pdftex,
                  hyperindex=false,
                  colorlinks=true,
                  linkcolor=black,citecolor=black,
                  filecolor=black,urlcolor=black]{hyperref}
  \fi
\else% moteur tex
  \ifversionenligne
  \RequirePackage[hypertex,
                  colorlinks=true]{hyperref}
  \else
  \RequirePackage[hypertex,
                  hyperindex=false,
                  colorlinks=false]{hyperref}
  \fi
\fi
\ifpdf
%\RequirePackage{thumbpdf}
\else
\RequirePackage{pst-plot}
\RequirePackage{pst-node}
\fi
\RequirePackage[final]{graphicx}
\RequirePackage{xcolor}
\RequirePackage{citation,sommaire}
\RequirePackage{framageometrie}
\RequirePackage{framaentetes}
\RequirePackage{framasections}
\RequirePackage{myminitoc}
\RequirePackage{glossaire}
\RequirePackage{framavoir}
\RequirePackage{nota}
\RequirePackage{malettrine,framabook}
\RequirePackage{algo}
%-----------------------------------------------------------------------

%-----------------------------------------------------------------------
%
% emplacements des graphiques
%
\ifpdf
\input{ousontmesimages}
\else
\RequirePackage{psfrag}
\graphicspath{{epss/}{texs/}{pss/}}
\fi
%-----------------------------------------------------------------------


%-----------------------------------------------------------------------
%
% compatibilité avec french
%
%\let\Numero\No
%\let\numero\no
\ifx\undefined\up
%\let\up\fup
\fi
%-----------------------------------------------------------------------

%-----------------------------------------------------------------------
%
% hyperref qui pète les ouilles
%
\def\Hy@WarningNoLine#1{}
\def\Hy@Warning#1{}
%-----------------------------------------------------------------------

%-----------------------------------------------------------------------
% configuration de l'environnement nota
\newcommand{\ficnota}{fmb-important}
\newcommand{\ficnote}{fmb-note}
\newcommand{\ficnotahack}{fmb-question}
\newcommand{\ficgnu}{fmb-gnu}

\setlength{\largeurnota}{.8cm}
\newenvironment{nota}{%
  \begin{pictonote}{\ficnota}}{\end{pictonote}}
\newenvironment{attention}{\begin{nota}}{\end{nota}}
\newenvironment{note}{%
  \begin{pictonote}{\ficnote}}{\end{pictonote}}
\newenvironment{notahack}{%
  \begin{pictonote}{\ficnotahack}}{\end{pictonote}}
\newenvironment{gnuposix}{%
  \begin{pictonote}{\ficgnu}}{\end{pictonote}}



%-----------------------------------------------------------------------

%-----------------------------------------------------------------------
%
% sauts de pages manuels
%
\let\sautdepage\relax
\let\nouvellepage\relax

\newcounter{fmb@allongepage}
\setcounter{fmb@allongepage}{0}
\newcounter{fmb@serrepage}
\setcounter{fmb@serrepage}{0}
\newcounter{fmb@sautpage}
\setcounter{fmb@sautpage}{0}
\newcounter{fmb@nouvellepage}
\setcounter{fmb@nouvellepage}{0}

\newcommand{\framasautdepage}{%
  \pagebreak[4]%
  \stepcounter{fmb@sautpage}%
}
\newcommand{\framanouvellepage}{%
  \clearpage%
  \stepcounter{fmb@nouvellepage}%
}
\newcommand{\framaallongepage}[1]{%
  \enlargethispage{#1\baselineskip}%
  \stepcounter{fmb@allongepage}%
}
\newcommand{\framaserre}[1]{%
  \vspace*{-#1}%
  \stepcounter{fmb@serrepage}}

%-----------------------------------------------------------------------


%-----------------------------------------------------------------------
% configuration des épigraphes
\setlength{\epigraphetopskip}{0pt}
\setlength{\epigraphebottomskip}{0.6cm}
%-----------------------------------------------------------------------


%-----------------------------------------------------------------------
% configuration de la minitoc
\setlength{\mymtcwidth}{.7\textwidth}
\setlength{\mymtcbottomskip}{.5\baselineskip}
%-----------------------------------------------------------------------



%-----------------------------------------------------------------------
% saut interparagraphe
\setlength{\parskip}{4pt plus 4pt minus 2pt}
%-----------------------------------------------------------------------


%-----------------------------------------------------------------------
% saut de page avec reprise sur page impaire
%
\renewcommand{\cleardoublepage}{
  \clearpage % termine la page précédente 
             % et force l'affichage des toutes les images
  \ifodd
  \c@page
  \else
  \hbox{}
  \vspace{\stretch{1}}
  \begin{center}
    \IfFileExists{imgs/transition.png}{%
      \includegraphics[width=.9\textwidth]{transition}}{%
      Pas d'image pour la transition ?}
  \end{center}
  \vspace{\stretch{1}}
  \thispagestyle{empty}%page vide (sans en-tête ni pied de page)
  \newpage
  \fi
}
%-----------------------------------------------------------------------

%-----------------------------------------------------------------------
%
% Francisation
%

\AddThinSpaceBeforeFootnotes % pour les puristes (donc tout le monde!) 

\frenchbsetup{%
  AutoSpacePunctuation=false,
  FrenchFootnotes=true % pour les notes de bas de page
}

%-----------------------------------------------------------------------


%----------------------------------------------------------------------
%
% pour faire parler \include dans le terminal
%
\let\includeORIG\include
\renewcommand{\include}[1]{%
  \typeout{============================================================}%
  \typeout{+ #1}%
  \typeout{============================================================}%  
  \includeORIG{#1}}
%-----------------------------------------------------------------------



%-----------------------------------------------------------------------
%
% espace verticale entre les groupes dans l'index
%
\renewcommand\indexspace{\par \vskip 20pt plus5pt minus3pt\relax}
%-----------------------------------------------------------------------


%-----------------------------------------------------------------------
%
% pour avoir un lien correct dans les bookmark du pdf, sur l'index
%
\let\printindexORIG\printindex
\renewcommand{\printindex}{%
  \cleardoublepage
  \phantomsection% création d'une fausse section
  \addcontentsline{toc}{chapter}{Index}
  \printindexORIG}
%-----------------------------------------------------------------------


%-----------------------------------------------------------------------
%
% reprise du code de book.cls pour la biblio, l'index et la table des matières
% - entête en minuscule
% - la biblio et l'index dans la table des matières
% - tocdepth à 2
% - remettre le parskip à 0pt
% - 
\renewenvironment{thebibliography}[1]
{\chapter*{\bibname}%
  \addcontentsline{toc}{chapter}{\bibname}% ajout
  \@mkboth{\bibname}{\bibname}% suppresion de \MakeUppercase
  \list{\@biblabel{\@arabic\c@enumiv}}%
  {\settowidth\labelwidth{\@biblabel{#1}}%
    \leftmargin\labelwidth
    \advance\leftmargin\labelsep
    \@openbib@code
    \usecounter{enumiv}%
    \let\p@enumiv\@empty
    \renewcommand\theenumiv{\@arabic\c@enumiv}}%
  \sloppy
  \clubpenalty4000
  \@clubpenalty \clubpenalty
  \widowpenalty4000%
  \sfcode`\.\@m}
{\def\@noitemerr
  {\@latex@warning{Empty `thebibliography' environment}}%
  \endlist}

\renewenvironment{theindex}
{
  \setlength{\parskip}{0pt plus 1.0pt}
  \if@twocolumn
  \@restonecolfalse
  \else
  \@restonecoltrue
  \fi
  \columnseprule \z@
  \columnsep 35\p@
  \twocolumn[\@makeschapterhead{\indexname}]%
  \@mkboth{\indexname}{\indexname}%suppression de \MakeUppercase
  \thispagestyle{plain}\parindent\z@
  \parskip\z@ \@plus .3\p@\relax
  \let\item\@idxitem}
{\if@restonecol\onecolumn\else\clearpage\fi}

\renewcommand\tableofcontents{%
  \setcounter{tocdepth}{2}
  \setlength{\parskip}{0pt plus 1.0pt}
  \if@twocolumn
  \@restonecoltrue\onecolumn
  \else
  \@restonecolfalse
  \fi
  \chapter*{\contentsname
    \@mkboth{\contentsname}{\contentsname}}%suppression de uppercase
  \@starttoc{toc}%
  \if@restonecol\twocolumn\fi
}
%-----------------------------------------------------------------------
\ifversionenligne\let\fmbArg\colarg\else\let\fmbArg\bwarg\fi


%-----------------------------------------------------------------------
%
% pour changer le nom des chapitres en annexes
\let\appendixORIG\appendix
\renewcommand{\appendix}{%
  \appendixORIG%
  \renewcommand{\chaptername}{Annexe}% :-( ??
}
%
%-----------------------------------------------------------------------

\AtBeginDocument{%
  \selectlanguage{french}%
  \makeindex%
}


\AfterBeginDocument{%
  \fmb@ouverture\newpage}

%-----------------------------------------------------------------------
\AtEndDocument{%
  \newpage\fmb@fermeture%
  \typeout{### Nombre d'allongements de pages \thefmb@allongepage}
  \typeout{### Nombre de sauts       de pages \thefmb@sautpage}
  \typeout{### Nombre de coupures    de pages \thefmb@nouvellepage}
  \typeout{### Nombre de tassements  de pages \thefmb@serrepage}
}


%
% fin du fichier
%
\endinput

