\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}
\RequirePackage[french]{varioref}
\RequirePackage{titlebox,fancyhdr,amssymb}
\RequirePackage{calc,index}
\RequirePackage[french]{minitoc-hyper}
\RequirePackage{multicol,array,bbm,pifont}
\RequirePackage[english,french]{babel}
\RequirePackage{fancybox}
\RequirePackage{mflogo,wrapfig}
\RequirePackage{textcomp,amsmath,eurosym,frbib,numprint,everypage,manumac}
%
\let\@makecaptionORIG=\@makecaption
\usepackage{subfig}
\let\@makecaption=\@makecaptionORIG

\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}
\fi
\RequirePackage[final]{graphicx}
\RequirePackage{xcolor}
\RequirePackage{citation,sommaire}
\RequirePackage{framageometrie}
\RequirePackage{framaentetes}
\RequirePackage{framasections}
\RequirePackage{myminitoc}
\RequirePackage{glossaire}
\RequirePackage{framavoir}
\RequirePackage{nota}
\RequirePackage{exemple}
\RequirePackage{malettrine,picins,keystroke,framabook}
%-----------------------------------------------------------------------

%-----------------------------------------------------------------------
%
% 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}

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

%-----------------------------------------------------------------------
%
% sauts de pages manuels
%
\let\sautdepage\relax
\let\nouvellepage\relax
\newcommand{\framasautdepage}{%
  %\marginpar{{\huge\bfseries !PB!}}
  \pagebreak[4]}
\newcommand{\framanouvellepage}{%
  %\marginpar{{\huge\bfseries !CP!}}
  \clearpage}
%-----------------------------------------------------------------------


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


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


%-----------------------------------------------------------------------
% configuration des exemples
\setlength{\ltxexmargintdeborde}{.8cm}
\setlength{\ltxexmargextdeborde}{.8cm}
\renewcommand{\ltxexoutputwidthpercent}{40}
\renewcommand{\ltxexinputwidthpercent}{57}
%-----------------------------------------------------------------------

%-----------------------------------------------------------------------
% 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
%
\ifx\undefined\NoAutoSpaceBeforeFDP
\else
\NoAutoSpaceBeforeFDP
\fi
\frenchbsetup{%
  ShowOptions,
  ReduceListSpacing,
  StandardLists=false,
}
\FrenchFootnotes % pour les notes de bas de page
\AddThinSpaceBeforeFootnotes % pour les puristes (donc tout le monde!) 
% qui veulent une espace fine entre le mot et l'appel de note 
%-----------------------------------------------------------------------


%----------------------------------------------------------------------
%
% 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 15\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}


%
% fin du fichier
%
\endinput

