From 8e96fce5d5ac1a85bcc591c3e2cf47024857a907 Mon Sep 17 00:00:00 2001 From: Matthieu Herrb Date: Fri, 4 Apr 2014 19:53:12 +0200 Subject: [PATCH] Premier jet introduction --- intro/intro.tex | 441 ++++++++++++++++++++++++++++++++++++++++++++++++ intro/ttnn.cls | 251 +++++++++++++++++++++++++++ 2 files changed, 692 insertions(+) create mode 100644 intro/intro.tex create mode 100644 intro/ttnn.cls diff --git a/intro/intro.tex b/intro/intro.tex new file mode 100644 index 0000000..52a142c --- /dev/null +++ b/intro/intro.tex @@ -0,0 +1,441 @@ +\documentclass{ttnn} +\usepackage[utf8]{inputenc} +\usepackage[T1]{fontenc} +\usepackage{lmodern} +\usepackage[french]{babel} +\usepackage{hyperref} +\usepackage{graphicx} +\usepackage{eurosym} + +\title{Construire son propre fournisseur d'accès internet} +\author{Tetaneutral.net} +\date{Avril 2014} + +\begin{document} +\maketitle + +\begin{abstract} +Ce document présente la démarche administrative et technique qui +permet de créer un fournisseur d'accès associatif, par exemple pour +couvrir une zone blanche ADSL dans les endroits (une bonne proportion +du territoire) délaissés par les opérateurs traditionnels parce que +non rentable pour eux. + +Il s'appuie sur l'expérience de l'association Tetaneutral,net qui +opère un tel réseau à Toulouse, Saint-Gaudens, Mones et Mauvaisin en +Haute-Garonne ainsi que sur des documents de la Fédération French Data +Network, qui regroupe de nombreux fournisseurs d'accès associatifs +français. +\end{abstract} + +\section*{Introduction} +Pour faire son propre fournisseur d'accès internet il faut cinq +ressources principales : +\begin{itemize} +\item des bénévoles pour mettre le place et faire vivre le truc +\item un statut juridique (association 1901 + déclaration ARCEP) +\item des adresses IP +\item un moyen pour ces adresses IP d'accéder à l'internet. +\item un moyen de connecter les adhérents à l'accès internet ci-dessus. +\end{itemize} + +Les bénévoles, il y a plein de manières de les trouver et de les +motiver. Dans une zone blanche ou très mal desservie par les +fournisseurs classiques, il suffit de se faire connaître un peu pour +en trouver plein qui seront prêts à aider en échange de la possibilité +d'une meilleure connexion au réseau des réseaux. + +Pour les associations membres de la FFDN, l'aspect bénévole et citoyen +de la démarche est très important. Le réseau internet est une resource +considérée comme un bien commun de l'humanité, son appropriation par +de grandes multinationales qui tentent de le contrôler et de le +détourner à leur profit, sans compter la surveillance excercée par les +gouvernements sont simplement inacceptable. + +En plus de combler un manque (la couverture des zones blanches), la +création de fournisseurs d'accès associatifs est également un moyen de +défendre et de promouvoir un internet plus libre et plus égalitaire. + +Pour les quatre autres types de ressources, plus techniques, nous +allons détailler les solutions dans la suite ce ce document. + +\section{Le statut de fournisseur d'accès} + +Pour être fournisseur d'accès internet, un simple enregistrement +auprès de l'ARCEP suffit. Les démarchent indispensables se limitent +donc à +\begin{itemize} +\item créer une structure légale, une association loi 1901 a + priori. (Mais on peut envisager d'autres statuts pour des cas + particuliers) +\item remplir la déclaration auprès de l'ARCEP. +\end{itemize} + +Ensuite il peut être intéressant de faire d'autres démarches pour se +faciliter la vie : % XXX autres utilités ? +\begin{itemize} +\item ouverture d'un compte bancaire au nom de + l'association. Tetaneutral.net utilise les service du Crédit + Coopératif destinés aux associations. Cela permet de gérer toutes + les cotisations et les abonnements aux services par prélèvement, ce + qui simplifie le travail du trésorier. Il est également possible de + disposer d'une carte bancaire pour régler des achats de matériel en + ligne au nom de l'association. +\item obtention de numéros INSEE et SIREN, pour simplifier les + relations commerciales avec les fournisseurs professionnels. Pas + utile pour les achats en ligne. +\end{itemize} + +\subsection*{Devoirs du FAI} + +La principale obligation légale d'un fournisseur d'accès internet est +d'être en mesure de fournir sur demande aux autorités de police ou de +justice l'identité d'un abonné au service, à une heure donnée à partir +de son adresse IP. + +Cela implique donc une certaine rigueur dans la gestion du fichier des +adhérents et des services qui leur sont fournis. Le plus simple c'est +d'être capable d'attribuer une adresse IP publique fixe à chaque +adhérent. On a ainsi une correspondance relativement stable via le +fichier des adhérents, sans être obligés de garder des traces en temps +réel d'un système de d'allocation dynamique des adresses IP ou de +traduction d'adresses (plus connu sous le nom de NAT). + +Le fichier des adhérent doit faire l'objet d'une déclaration +simplifiée à la CNIL (norme 46), comme pour toute association. +% XXX à vérifier. + +Et à la fois à cause de la loi informatique et libertés et du code des +télécommunications, l'association a le devoir de protéger les données +concernant la vie privée de ses adhérents en sécurisant ses serveurs +et les procédures liée à la gestion des adhérent et des services qui +leur sont fournis. + +Il est souhaitable de rédiger (ou de copier sur un FAI associatif +existant) une charte d'utilisation des services qui précisera les +droits et les devoirs des uns et des autres. Elle pourra notament +rappeller que les services sont assurés par des bénévoles, et qu'il ne +peut donc pas y avoir d'engagement quantitatif sur la qualité ou la +disponibilité du service. + +\section{Obtenir des adresses IP} + +Comme on l'a vu ci-dessus, l'adresse IP va être en quelque sorte +l'identifiant des adhérents sur le réseau. Les adresses IP publiques +doivent être uniques au niveau mondial, et il existe donc un mécanisme +pour les allouer aux différents fournisseurs d'accès +internet~\cite{bortzmeyer}. + +Pour un nouveau fournisseur d'accès qui se crée, le plus simple pour +commencer c'est de trouver un fournisseur existant qui serait prêt à +louer ou à prêter gratuitement des adresses IP qui lui sont déjà +allouées et qu'il n'utilise pas. + +L'autre solution est de contacter directement un LIR (Local Internet +Registrery) pour monter un dossier afin d'obtenir sa propre plage +d'adresses IP. Cette approche est plus difficile parce qu'il faut +argumenter sa demande, en montrant que le besoin est réel, ce qui peut +poser un problème de poule et d'oeuf pour une nouvelle structure qui +démarre. + +Le coût des adresses IP est entre 10 et \EUR{20} par an et par adresse IP. + +\subsection*{Pénurie d'adresses IPv4} + +Depuis le début de l'internet on utilise la version 4 du protocole IP, +qui se reconnaît facilement au format des adresses utilisées qui sont +exprimées sous forme de quatre nombres entre 0 et 256, séparés par des +points. Par exemple 192.9.201.54 est une adresse IP version 4 ou +IPv4. + +Quatre nombres entre 0 et 256 (quatre \emph{octets}), cela permet de +construire environ quatre milliards d'adresses IPv4. L'internet +mondial ayant beaucoup grossi, l'ensemble des adresses possible est +presque complètement alloué. Il devient donc difficile pour les +nouveaux fournisseurs d'accès d'obtenir de nouvelles adresses IPv4. + +Mais au moment où ce document est écrit, et en raison des contraintes +légales exprimées ci-dessus, il est préférable de se débrouiller pour +avoir encore une adresse IPv4 publique par adhérent que l'on souhaite +connecter. + +\subsection*{Préparer le futur : IPv6} + +La version 6 du protocole IP (ou IPv6), qui existe depuis près de +vingt ans résout (entre autres) ce problème de pénurie des adresses +IP, grâce à l'utilisation d'un espace beaucoup plus grand (deux +puissance 128 adresses différentes sont possible, ce qui est +monstrueusement gigantesque). Mais ce «\,nouveau\,» protocole tarde à +s'imposer. Pour déployer le réseau pour le grand public, on ne peut +pas se passer d'utiliser encore IPv4. + +Néanmoins, il est souhaitable d'obtenir aussi, au moment de démarrer +un nouveau FAI des adresses IPv6 pour préparer le futur. En raison de +leur abondance, il est beaucoup plus facile d'obtenir des adresses +IPv6 auprès de l'organisme qui vous aura fourni les IPv4. + +La fédération FFDN peut vous aider à trouver la meilleure solution +pour vous fournir une plage d'adresses IP en fonction de votre projet +(nombre d'adhérents prévu, localisation,... ) + +\section{Connexion à l'internet} + +Pour redistribuer des accès au réseau internet, il faut commencer par +en avoir un. Comme on n'a pas une seule adresse IP à connecter, mais +toute une collection, les moyens de connexion à l'internet des +particuliers ne suffisent pas. Il faut avoir les outils pour +\emph{router} la plage d'adresse IP des adhérents vers le reste du +réseau. + +La solution normale consiste à trouver un prestataire de services +(datacenter, opérateur pro, ou structure associative) qui va permettre +d'héberger un routeur (un PC avec le logiciel adapté fait l'affaire) +qui va se charger du travail et fournir (moyennant paiement) la +connexion au réseau. + +La fédération FFDN est à nouveau très utile pour aider les nouveaux à +trouver la meilleure solution. + +\subsection{Routage} + +La solution normale pour faire arriver le trafic internet sur les +adresses IP de l'association c'est de créer un nouveau \emph{système + autonome}, ou AS (\emph{Autonomous System} en anglais) et de faire +en sorte qu'il soit annoncé aux autres opérateurs sur l'internet via +le protocole de routage BGP (\emph{Border Gateway Protocol}), qui est +le protocole utilisé pour connecter entre eux tous les AS de +l'internet. + +Le routeur du nouveau FAI peut être un simple PC sous Linux et c'est +le logiciel \emph{Bird} qui sera alors utilisé pour faire cette +connexion. + +Ici encore l'aide des autres associations membre de FFDN va être très +utile pour obtenir le numéro d'AS et configurer le logiciel de routage +Bird. + +Il est aussi possible, pour un petit déploiement initial, de trouver un +partenaire disposé à assurer la fonction de routage pour vous en +incluant vos adresses IP dans son propre AS et en routant le trafic +statiquement vers votre routeur. + +\subsection{Transit et Peering} + +L'échange de trafic avec les autres AS de l'internet peut se faire de +deux manières : soit par du \emph{transit} (payant) assuré par des +prestataires commerciaux, soit par du \emph{peering} (généralement +gratuit) avec d'autres AS sur des \emph{points d'échange} internet. + +Il existe des points d'échange internet dans les grandes villes de +France (FranceIX à Paris, Lyonix à Lyon, TouIX à Toulouse, etc...). Ce +sont des structures associatives qui pourront aussi vous aider et vous +conseiller pour établir les premiers peerings de votre réseau. + +\cite{bortzmeyer} \cite{amsix} \cite{nicolle} + +\section{Connexion des adhérents} + +La dernière étape est le raccordement du routeur qui gérera l'accès du +nouveau fournisseur d'accès à l'internet aux adhérents. + +Les fournisseurs d'accès internet associatifs de FDN utilisent pour +cela principalement deux techniques : +\begin{itemize} +\item une connexion ADSL des adhérents via un réseau de collecte d'un + prestataire commercial (Nerim dans le cas de FDN et de + Tetaneutral.net). Cette solution n'est cependant pas très + intéressante : elle nécessite que l'adhérent se trouve dans une zone + avec une bonne desserte ADSL (donc pas dans une zone blanche), ou il + peut aussi bénéficier des offres ADSL traditionnelles. Les tarifs + que peut proposer un FAI associatif pour couvris ses frais ne sont + pas concurrentiels, et il ne pourra pas offrir pas défaut tous les + services connexes (télévision, téléphone,..) + + Le raccordement en ADSL est donc réservé aux militants de l'internet + neutre et libre qui sont prêts à faire un sacrifice financier pour + soutenir un projet associatif et ne pas dépenser leur argent + directement avec les opérateurs traditionnels. + +\item pour desservir les zones blanches (ou non) on utilise alors une + technologie radio basse puissance, dans la bande de fréquence autour + de 5.5 GHz utilisant une technologie de type Wifi. L'utilisation + d'antennes semi-directionnelles ou de petites paraboles + directionnelles (jusqu'à 40cm de diamètre) permet de couvrir des + distances jusqu'à une quinzaine de kilomètres pour des débits + symétriques entre 10 et 100 Mbits/seconde. + + La principale contrainte de cette technologie est que dans la bande + de fréquences utilisée, le signal ne traverse pas les obstacles + (bâtiments, arbres, collines,...). Il faut donc que les points à + connecter soient en vue directe, ou alors il faut trouver un point + relais intermédiaire. + +\end{itemize} + +Dans ce qui suit, on s'intéressera uniquement au déploiement du réseau +en radio. Un guide pratique pour le déploiement radio qui détaille les +points ci-dessous a été rédigé par les adhérents à Tetaneutral.net de +Mauvaisin. + +\subsection{Topologie du réseau} + +Le réseau radio doit connecter tous les adhérents, soit en constituant +un seul réseau en étoile ou en arbre à partir d'un point central de +collecte (le routeur de l'association), soit en via plusieurs arbres, +connectés au point central par des tunnels. + +une paire d'antennes Wifi se comporte comme un câble Ethernet. On +construit donc une topologie similaire à celle d'un réseau Ethernet +classique : il ne faut pas faire de boucle et connecter tout le +monde. On obtient alors une topologie en arbre. + +Les antennes peuvent être soit des points d'accès, soit des +stations. Un point d'accès permet de connecter plusieurs stations +alors qu'une station se connecter à un point d'accès unique. + +Sur les liens à plusieurs relais, on alterne donc des points d'accès +et des stations connectés alternativement en radio et via des +connexions filaires classiques (câble Ethernet simple ou bien +commutateur). + +Les antennes sont configurées en mode pont Ethernet. Un réseau radio +se comporte donc comme un grand commutateur qui connecte tous les +adhérents au routeur. + +\subsection{Utilisation de tunnels} + +Dans bien des cas, le routeur du fournisseur d'accès ne se trouve pas +dans un endroit pratique pour y connecter directement des adhérents en +radio. + +On va alors rechercher un point intermédiaire, disposant d'une bonne +connexion internet (ADSL, VDSL ou fibre optique) que l'on connectera +au routeur via un tunnel au dessus de cette connexion internet +« classique » + + +\subsection{Box chez l'adhérent} + +Pour terminer chaque adhérent a besoin d'une « box » pour recevoir sa +connexion et la redistribuer dans son logement (soit en Wifi, soit via +un petit commutateur pour distribuer un réseau filaire sur les +ordinateurs de la maison. + +La pratique de tetaneutral.net est de fournir à chaque adhérent un +petit routeur Wifi pré-configuré, avec, du coté du réseau radio +l'adresse IP publique de l'adhérent et qui distribue en interne un +réseau IP privé à l'aide du mécanisme de NAT. + + +\section{Services supplémentaires} + +Une fois l'ensemble du dispositif décrit ci-dessus déployé, le +fournisseur d'accès est opérationnel. Il peut néanmoins être utile de +mettre en place un certain nombre de services supplémentaires pour +pouvoir contrôler le bon fonctionnement du réseau et simplifier +certaines opérations de maintenance. + +\subsection{Serveur de noms} +Il est très utile de réserver un nom de domaine (par +ex. tetaneutral.net) pour l'association pour associer les adresses IP +à des noms et rendre visible les serveurs de l'association + +Le nom de domaine de l'association sera acheté chez un prestataire +spécialisé (par Gandi), et le serveur DNS peut être géré soit chez le +prestataire, soit sur une machine du réseau de l'association qui +restera allumée en permanence, à l'aide du logiciel \emph{bind}. + +Le serveur de noms peut déléguer aux adhérents qui le souhaitent le +choix du nom utilisé pour la résolution inverse (trouver le nom à +partir de l'adresse) de leur adresse IP. Celui-ci peut correspondre à +leur propre nom de domaine s'ils en ont un (genre dupond.fr). + +Enfin le serveur de nom pourra être utilisé par les PCs des adhérents +via la configuration automatique des paramêtres réseau qui sera +fournie par leur box. + +\subsection{Serveur web} + +Un serveur web permet de faire connaître l'association et de mettre en +place des outils tels qu'un formulaire de contact, des forums de +discussion ou d'entraide, un blog, etc. + + +Le serveur en question peut être hébergé par l'association elle-même +sur un PC connecté à son réseau (il utilisera alors une adresse IP de +l'association) ou bien être hébergé soit par une association amie de +FFDN, soit par un hébergeur de contenus classique (OVH, Gandi... ) + +\subsection{Supervision du réseau} + +Normalement tous les opérateurs de réseau ont un logiciel de +supervision qui recueille en permanence des données sur l'ensemble des +équipements (routeur, antennes, commutateurs,...) pour s'assurer de +leur bon fonctionnement et éventuellement collecter des statistiques +sur l'utilisation des différentes ressources. + +La solution déployée par Tetaneutral.net utilise les logiciels Nagios +et Check\_MK qui tournent sur un PC Linux qui fonctionne en +permanence. Une interface web permet de consulter l'état du réseau et +d'afficher des graphes de trafic. Nagios peut aussi produire des +alertes et prévenir via SMS ou émail l'équipe des bénévoles en cas de +défaillance ou de problème sur un équipement du réseau. + + +\subsection{Messagerie ?} + +Les fournisseurs d'accès traditionnels proposent presque tous un +service de messagerie, avec des adresse du type nom@fournisseur.com. +Un fournisseur associatif peut choisir d'offrir également ce +service. Mais ce n'est pas indispensable et avant de décider de +l'offrir, il faut avoir en tête un certain nombre de contraintes, +sachant que ce type de service est plutôt plus difficile à configurer +et à gérer que la partie accès internet. + +\begin{itemize} +\item responsabilité : les services de messagerie sont régis par le +code des télécommunications qui garanti la confidentialité des +messages et rend l'opérateur responsable. C'est donc à l'opérateur de +sécuriser ses serveurs. +\item disponibilité : un service de messagerie doit fonctionner 24h/24 + et les utilisateurs sont peu tolérants face à un service peu fiable. +\end{itemize} + +Pour information, Tetaneutral.net a choisi explicitement de ne pas +fournir de service de messagerie a ses adhérents. + +\section{Coûts} + +L'ensemble des prestations payantes (adresses IP, transit, présence +dans un datacenter, nom de domaine,...) représent une somme récurrente +dont une partie est fixe et l'autre dépend du nombre de foyers +connectés et du trafic réseau. + +A cela il faut ajouter un investissement initial (achat d'un routeur +(une configuration de PC basique autour de \EUR{400} peut faire +l'affaire, des équipements radio (entre \EUR{50} et \EUR{100} par +antenne et des routeurs des adhérents (environ \EUR{25}, plus divers +petits matériels pour fixer les antennes,.... qu'il faut amortir avec +les cotisations des adhérents. + +Dans le cas de Tetaneutral.net, un prêt d'un des co-fondateurs de +l'association a rendu possible +l'investissement initial. Ensuite, en raison du succès de +l'association, une redevance mensuelle comprise entre 20 et \EUR{30} +permet à l'association de couvrir les frais récurrent et a permi de +rembourser en deux ans le prêt initial. Le détail du bilan financier +mensuel de Tetaneutral.net est publié sur le site web de +l'association. + +\section*{Conclusion} + +L'environnement juridique qui encadre la fourniture d'accès à Internet +en France est relativement léger et permet facilement de créer son +propre FAI dans les zones délaissées par les opérateurs traditionnels. + +Quelques connaissances en réseau sont nécessaires pour déployer la +partie technique, mais la fédération +FFDN et les membres de tous les FAI associatifs seront en général +heureux de partager leurs connaissances pour aider de nouveaux venus. + +\end{document} diff --git a/intro/ttnn.cls b/intro/ttnn.cls new file mode 100644 index 0000000..d497348 --- /dev/null +++ b/intro/ttnn.cls @@ -0,0 +1,251 @@ +%% Copyright 2012 Renater +% +% This work may be distributed and/or modified under the +% conditions of the LaTeX Project Public License, either version 1.3 +% 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.3 or later is part of all distributions of LaTeX +% version 2005/12/01 or later. +% +% This work has the LPPL maintenance status `maintained'. +% +% The Current Maintainer of this work is Matthieu Herrb +% +% This work consists of the files jres.cls and article.tex +% +\NeedsTeXFormat{LaTeX2e} +\ProvidesClass{ttnn}[2012/12/10 v1.3 + TTNN document class] +% Derive de la classe article +\LoadClass{article} +\RequirePackage{hyperref} +% +% Le nom de l'auteur +\def\@jresconf{Tetaneutral.net} +% +% +% Polices... +% XeTeX ou LuaTeX permettent facilement de choisir les polices système +% Donc on essaye de forcer la main à l'utilisateur pour qu'il l'utilise.. +% +% D'abord il faut trouver ifxetex.sty ou l'émuler +\newif\ifm@mifxetex + \m@mifxetexfalse +\IfFileExists{ifxetex.sty}{\RequirePackage{ifxetex}}{% + \ClassWarningNoLine{ttnn}{% + The `ifxetex' package is not installed.\MessageBreak + The package is being emulated}% +\expandafter\newif\csname ifxetex\endcsname +\@ifundefined{XeTeXrevision}{\xetexfalse}{\xetextrue} +\m@mifxetextrue% +} +\newif\ifm@mifluatex + \m@mifluatexfalse +\IfFileExists{ifluatex.sty}{\RequirePackage{ifluatex}}{% + \ClassWarningNoLine{ttnn}{% + The `ifluatex' pagckage is not installed.\MessageBreak + The package is being emulated}% +\expandafter\newif\csname ifluatex\endcsname +\@ifundefined{luatexversion}{\luatexfalse}{\luatextrue} +\m@mifluatextrue% +} +% configuration des fontes proprement dites +\ifxetex + % avec xetex c'est le mieux, le mapping tex-text permet de faire les césures + \RequirePackage{fontspec} + \setmainfont[Mapping=tex-text]{Times New Roman} + \setsansfont[Mapping=tex-text]{Arial} + \setmonofont[Mapping=tex-text]{Courier New} +\else + \ifluatex + \RequirePackage{fontspec} + % luatex ne supporte pas encore le mapping tex-text + \setmainfont{Times New Roman} + \setsansfont{Arial} + \setmonofont{Courier New} + \else + % si c'est pdflatex qui est utilisé, on revient aux paquets PSNFSS existants + \RequirePackage{amsmath} + \RequirePackage[T1]{fontenc} + \RequirePackage{txfonts} + \fi +\fi +% Titres en sans-serif + couleur +\RequirePackage{xcolor} +\definecolor{jresblue}{rgb}{0.,0.2,0.375} % correspond à 0,32,96 du modèle word +\RequirePackage{sectsty} +\allsectionsfont{\sffamily\color{jresblue}} +% +% Interligne +\RequirePackage{setspace} +\setstretch{1.1} +% Règles typographiques Françaises... +\ifxetex + \RequirePackage{polyglossia} + \setdefaultlanguage{french} + \setotherlanguage{english} +\else + \RequirePackage[english,french]{babel} + \frenchbsetup{StandardItemLabels=true, CompactItemize=false, + ReduceListSpacing=true} +\fi +% +% Papier A4 + Marges +\RequirePackage[paper=a4paper,top=2cm,bottom=3cm,left=2cm,right=2cm]{geometry} +% +% liste des auteurs +\RequirePackage{datatool} +\DTLnewdb{auteurs} +\newcommand{\auteur}[1]{% +\DTLnewrow{auteurs}% +\DTLnewdbentry{auteurs}{nom}{#1}% +%\DTLnewdbentry{auteurs}{affiliation}{#2}% +%\DTLnewdbentry{auteurs}{adresse}{#3}% +} +% Présentation du titre +\def\@maketitle{% + \hypersetup{pdftitle=\@title} + \newpage + \begin{center}% + \let \footnote \thanks + {\huge\bfseries\sffamily\color{jresblue} \@title \par}% + \end{center} + \begin{flushleft} + \vskip 8mm% + \DTLforeach{auteurs}{% + \@nom=nom}{% + \vskip 3mm + {\noindent\sffamily\large\bfseries\color{jresblue} \@nom\\}% + \par} + \end{flushleft}% +} +% Date vide +\date{} +% +\renewenvironment{abstract}{% + \vskip 10pt + \noindent + {\Large\sffamily\color{jresblue}\textbf{R\'esum\'e}}\par\begin{itshape}}% + {\end{itshape}\par} +% +\newcommand{\motscles}[1]{% + \vskip 18pt + \noindent% + {\Large\sffamily\color{jresblue}\textbf{Mots clefs}}% + \par\begin{itshape}#1\end{itshape}} +% +% Format paragraphe +\setlength{\parindent}{0cm} +\setlength{\parskip}{0.7ex plus 0.5ex minus 0.2ex} +% +% Les entêtes et pieds de page +\RequirePackage{fancyhdr} +\RequirePackage{lastpage} +% pour la 1ere page +\fancypagestyle{plain}{ + \fancyhf{} + \renewcommand{\headrulewidth}{0pt} + \renewcommand{\footrulewidth}{0.1pt} + \lfoot{\itshape\color{grey37}\@jresconf} + \cfoot{\itshape\color{grey37}} + \rfoot{\itshape\color{grey37}\thepage/\pageref*{LastPage}} +} +% les autres pages +\fancyhf{} +\renewcommand{\headrulewidth}{0pt} +\renewcommand{\footrulewidth}{0.1pt} +\lfoot{\itshape\color{grey37}\@jresconf} +\cfoot{} +\rfoot{\itshape\color{grey37}\thepage/\pageref*{LastPage}} +\pagestyle{fancy} +% filet gris également +\def\footrule{{\if@fancyplain\let\footrulewidth\plainfootrulewidth\fi + \vskip-\footruleskip\vskip-\footrulewidth + \color{grey37}\hrule\@width\headwidth\@height\footrulewidth\vskip\footruleskip}} +% +% Listes a puces +\def\blackbox{\vrule height .95ex width .7ex depth -.25ex}% +\renewcommand{\labelitemi}{\blackbox\hspace{6pt}} +\renewcommand{\labelitemii}{\blackbox\hspace{4pt}} +% +% Enumerations +\renewcommand{\labelenumii}{\theenumii.} +% +% Configuration de listings +\RequirePackage{listings} +\definecolor{grey37}{gray}{.375} +\definecolor{grey80}{gray}{.8} +\definecolor{grey90}{gray}{.9} +\lstset{backgroundcolor=\color{grey90}} +\lstset{basicstyle=\small\ttfamily} +\lstset{frame=single,framesep=1em,xleftmargin=1em,xrightmargin=1em} +\newenvironment{codesource}% + {\begin{lstlisting}}% + {\end{lstlisting}\vskip 1ex} +% +% style urls +\urlstyle{same} +\hypersetup{colorlinks, + urlcolor=jresblue, + linkcolor=black, + filecolor=black, + citecolor=black} +% +% Figures +\RequirePackage{graphicx} +% Titre en italique... +\long\def\@caption#1[#2]#3{% + \par + \addcontentsline{\csname ext@#1\endcsname}{#1}% + {\protect\numberline{\csname the#1\endcsname}{\ignorespaces #2}}% + \begingroup + \@parboxrestore + \if@minipage + \@setminipage + \fi + \normalsize + \@makecaption{\itshape\csname fnum@#1\endcsname}{\ignorespaces \itshape #3}\par + \endgroup} +% Pas de small caps pour les labels de Figure ou Tableau +\addto\captionsfrench{\def\figurename{Figure}} +\addto\captionsfrench{\def\tablename{Tableau}} +% la commande ci-dessous ne marche pas avec pdflatex +% \addto\captionsfrench{\def\CaptionSeparator{-}} +% donc redefinit \@makecaption pour imposer '-' comme separateur +\long\def\@makecaption#1#2{% + \vskip\abovecaptionskip + \sbox\@tempboxa{#1 - #2}% + \ifdim \wd\@tempboxa >\hsize + #1\space{}- #2\par + \else + \global \@minipagefalse + \hb@xt@\hsize{\hfil\box\@tempboxa\hfil}% + \fi + \vskip\belowcaptionskip} +% +% Bibliographie +% redéfinition de l'environnement pour ajouter un \labelsep de 1.5em pour être +% cohérent avec le modèle de présentation ISO de la biblio de Word. +\newenvironment{jresbibliography}[1] + {\section*{\refname}% + \@mkboth{\MakeUppercase\refname}{\MakeUppercase\refname}% + \list{\@biblabel{\@arabic\c@enumiv}}% + {\settowidth\labelwidth{\@biblabel{#1}}% + \labelsep1.5em + \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} +\addto\captionsfrench{\def\refname{Bibliographie}} +\bibliographystyle{jres}