Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • francesco-bariatti/pingouins
  • Samuel.Felton/pingouins
  • Lucas.Clement/pingouins
3 results
Show changes
Showing
with 0 additions and 2281 deletions
File deleted
This is pdfTeX, Version 3.14159265-2.6-1.40.16 (MiKTeX 2.9 64-bit) (preloaded format=pdflatex 2016.5.9) 9 MAY 2016 16:45
entering extended mode
**./Rapport_style.tex
(Rapport_style.tex
LaTeX2e <2015/10/01> patch level 2
Babel <3.9n> and hyphenation patterns for 69 languages loaded.
("F:\Program Files\MiKTeX 2.9\tex\latex\base\article.cls"
Document Class: article 2014/09/29 v1.4h Standard LaTeX document class
("F:\Program Files\MiKTeX 2.9\tex\latex\base\size11.clo"
File: size11.clo 2014/09/29 v1.4h Standard LaTeX file (size option)
)
\c@part=\count79
\c@section=\count80
\c@subsection=\count81
\c@subsubsection=\count82
\c@paragraph=\count83
\c@subparagraph=\count84
\c@figure=\count85
\c@table=\count86
\abovecaptionskip=\skip41
\belowcaptionskip=\skip42
\bibindent=\dimen102
) ("F:\Program Files\MiKTeX 2.9\tex\latex\base\inputenc.sty"
Package: inputenc 2015/03/17 v1.2c Input encoding file
\inpenc@prehook=\toks14
\inpenc@posthook=\toks15
("F:\Program Files\MiKTeX 2.9\tex\latex\base\utf8.def"
File: utf8.def 2015/09/07 v1.1p UTF-8 support for inputenc
Now handling font encoding OML ...
... no UTF-8 mapping file for font encoding OML
Now handling font encoding T1 ...
... processing UTF-8 mapping file for font encoding T1
("F:\Program Files\MiKTeX 2.9\tex\latex\base\t1enc.dfu"
File: t1enc.dfu 2015/09/07 v1.1p UTF-8 support for inputenc
defining Unicode char U+00A0 (decimal 160)
defining Unicode char U+00A1 (decimal 161)
defining Unicode char U+00A3 (decimal 163)
defining Unicode char U+00AB (decimal 171)
defining Unicode char U+00AD (decimal 173)
defining Unicode char U+00BB (decimal 187)
defining Unicode char U+00BF (decimal 191)
defining Unicode char U+00C0 (decimal 192)
defining Unicode char U+00C1 (decimal 193)
defining Unicode char U+00C2 (decimal 194)
defining Unicode char U+00C3 (decimal 195)
defining Unicode char U+00C4 (decimal 196)
defining Unicode char U+00C5 (decimal 197)
defining Unicode char U+00C6 (decimal 198)
defining Unicode char U+00C7 (decimal 199)
defining Unicode char U+00C8 (decimal 200)
defining Unicode char U+00C9 (decimal 201)
defining Unicode char U+00CA (decimal 202)
defining Unicode char U+00CB (decimal 203)
defining Unicode char U+00CC (decimal 204)
defining Unicode char U+00CD (decimal 205)
defining Unicode char U+00CE (decimal 206)
defining Unicode char U+00CF (decimal 207)
defining Unicode char U+00D0 (decimal 208)
defining Unicode char U+00D1 (decimal 209)
defining Unicode char U+00D2 (decimal 210)
defining Unicode char U+00D3 (decimal 211)
defining Unicode char U+00D4 (decimal 212)
defining Unicode char U+00D5 (decimal 213)
defining Unicode char U+00D6 (decimal 214)
defining Unicode char U+00D8 (decimal 216)
defining Unicode char U+00D9 (decimal 217)
defining Unicode char U+00DA (decimal 218)
defining Unicode char U+00DB (decimal 219)
defining Unicode char U+00DC (decimal 220)
defining Unicode char U+00DD (decimal 221)
defining Unicode char U+00DE (decimal 222)
defining Unicode char U+00DF (decimal 223)
defining Unicode char U+00E0 (decimal 224)
defining Unicode char U+00E1 (decimal 225)
defining Unicode char U+00E2 (decimal 226)
defining Unicode char U+00E3 (decimal 227)
defining Unicode char U+00E4 (decimal 228)
defining Unicode char U+00E5 (decimal 229)
defining Unicode char U+00E6 (decimal 230)
defining Unicode char U+00E7 (decimal 231)
defining Unicode char U+00E8 (decimal 232)
defining Unicode char U+00E9 (decimal 233)
defining Unicode char U+00EA (decimal 234)
defining Unicode char U+00EB (decimal 235)
defining Unicode char U+00EC (decimal 236)
defining Unicode char U+00ED (decimal 237)
defining Unicode char U+00EE (decimal 238)
defining Unicode char U+00EF (decimal 239)
defining Unicode char U+00F0 (decimal 240)
defining Unicode char U+00F1 (decimal 241)
defining Unicode char U+00F2 (decimal 242)
defining Unicode char U+00F3 (decimal 243)
defining Unicode char U+00F4 (decimal 244)
defining Unicode char U+00F5 (decimal 245)
defining Unicode char U+00F6 (decimal 246)
defining Unicode char U+00F8 (decimal 248)
defining Unicode char U+00F9 (decimal 249)
defining Unicode char U+00FA (decimal 250)
defining Unicode char U+00FB (decimal 251)
defining Unicode char U+00FC (decimal 252)
defining Unicode char U+00FD (decimal 253)
defining Unicode char U+00FE (decimal 254)
defining Unicode char U+00FF (decimal 255)
defining Unicode char U+0102 (decimal 258)
defining Unicode char U+0103 (decimal 259)
defining Unicode char U+0104 (decimal 260)
defining Unicode char U+0105 (decimal 261)
defining Unicode char U+0106 (decimal 262)
defining Unicode char U+0107 (decimal 263)
defining Unicode char U+010C (decimal 268)
defining Unicode char U+010D (decimal 269)
defining Unicode char U+010E (decimal 270)
defining Unicode char U+010F (decimal 271)
defining Unicode char U+0110 (decimal 272)
defining Unicode char U+0111 (decimal 273)
defining Unicode char U+0118 (decimal 280)
defining Unicode char U+0119 (decimal 281)
defining Unicode char U+011A (decimal 282)
defining Unicode char U+011B (decimal 283)
defining Unicode char U+011E (decimal 286)
defining Unicode char U+011F (decimal 287)
defining Unicode char U+0130 (decimal 304)
defining Unicode char U+0131 (decimal 305)
defining Unicode char U+0132 (decimal 306)
defining Unicode char U+0133 (decimal 307)
defining Unicode char U+0139 (decimal 313)
defining Unicode char U+013A (decimal 314)
defining Unicode char U+013D (decimal 317)
defining Unicode char U+013E (decimal 318)
defining Unicode char U+0141 (decimal 321)
defining Unicode char U+0142 (decimal 322)
defining Unicode char U+0143 (decimal 323)
defining Unicode char U+0144 (decimal 324)
defining Unicode char U+0147 (decimal 327)
defining Unicode char U+0148 (decimal 328)
defining Unicode char U+014A (decimal 330)
defining Unicode char U+014B (decimal 331)
defining Unicode char U+0150 (decimal 336)
defining Unicode char U+0151 (decimal 337)
defining Unicode char U+0152 (decimal 338)
defining Unicode char U+0153 (decimal 339)
defining Unicode char U+0154 (decimal 340)
defining Unicode char U+0155 (decimal 341)
defining Unicode char U+0158 (decimal 344)
defining Unicode char U+0159 (decimal 345)
defining Unicode char U+015A (decimal 346)
defining Unicode char U+015B (decimal 347)
defining Unicode char U+015E (decimal 350)
defining Unicode char U+015F (decimal 351)
defining Unicode char U+0160 (decimal 352)
defining Unicode char U+0161 (decimal 353)
defining Unicode char U+0162 (decimal 354)
defining Unicode char U+0163 (decimal 355)
defining Unicode char U+0164 (decimal 356)
defining Unicode char U+0165 (decimal 357)
defining Unicode char U+016E (decimal 366)
defining Unicode char U+016F (decimal 367)
defining Unicode char U+0170 (decimal 368)
defining Unicode char U+0171 (decimal 369)
defining Unicode char U+0174 (decimal 372)
defining Unicode char U+0175 (decimal 373)
defining Unicode char U+0176 (decimal 374)
defining Unicode char U+0177 (decimal 375)
defining Unicode char U+0178 (decimal 376)
defining Unicode char U+0179 (decimal 377)
defining Unicode char U+017A (decimal 378)
defining Unicode char U+017B (decimal 379)
defining Unicode char U+017C (decimal 380)
defining Unicode char U+017D (decimal 381)
defining Unicode char U+017E (decimal 382)
defining Unicode char U+0218 (decimal 536)
defining Unicode char U+0219 (decimal 537)
defining Unicode char U+021A (decimal 538)
defining Unicode char U+021B (decimal 539)
defining Unicode char U+200C (decimal 8204)
defining Unicode char U+2013 (decimal 8211)
defining Unicode char U+2014 (decimal 8212)
defining Unicode char U+2018 (decimal 8216)
defining Unicode char U+2019 (decimal 8217)
defining Unicode char U+201A (decimal 8218)
defining Unicode char U+201C (decimal 8220)
defining Unicode char U+201D (decimal 8221)
defining Unicode char U+201E (decimal 8222)
defining Unicode char U+2030 (decimal 8240)
defining Unicode char U+2031 (decimal 8241)
defining Unicode char U+2039 (decimal 8249)
defining Unicode char U+203A (decimal 8250)
defining Unicode char U+2423 (decimal 9251)
)
Now handling font encoding OT1 ...
... processing UTF-8 mapping file for font encoding OT1
("F:\Program Files\MiKTeX 2.9\tex\latex\base\ot1enc.dfu"
File: ot1enc.dfu 2015/09/07 v1.1p UTF-8 support for inputenc
defining Unicode char U+00A0 (decimal 160)
defining Unicode char U+00A1 (decimal 161)
defining Unicode char U+00A3 (decimal 163)
defining Unicode char U+00AD (decimal 173)
defining Unicode char U+00B8 (decimal 184)
defining Unicode char U+00BF (decimal 191)
defining Unicode char U+00C5 (decimal 197)
defining Unicode char U+00C6 (decimal 198)
defining Unicode char U+00D8 (decimal 216)
defining Unicode char U+00DF (decimal 223)
defining Unicode char U+00E6 (decimal 230)
defining Unicode char U+00EC (decimal 236)
defining Unicode char U+00ED (decimal 237)
defining Unicode char U+00EE (decimal 238)
defining Unicode char U+00EF (decimal 239)
defining Unicode char U+00F8 (decimal 248)
defining Unicode char U+0131 (decimal 305)
defining Unicode char U+0141 (decimal 321)
defining Unicode char U+0142 (decimal 322)
defining Unicode char U+0152 (decimal 338)
defining Unicode char U+0153 (decimal 339)
defining Unicode char U+0174 (decimal 372)
defining Unicode char U+0175 (decimal 373)
defining Unicode char U+0176 (decimal 374)
defining Unicode char U+0177 (decimal 375)
defining Unicode char U+0218 (decimal 536)
defining Unicode char U+0219 (decimal 537)
defining Unicode char U+021A (decimal 538)
defining Unicode char U+021B (decimal 539)
defining Unicode char U+2013 (decimal 8211)
defining Unicode char U+2014 (decimal 8212)
defining Unicode char U+2018 (decimal 8216)
defining Unicode char U+2019 (decimal 8217)
defining Unicode char U+201C (decimal 8220)
defining Unicode char U+201D (decimal 8221)
)
Now handling font encoding OMS ...
... processing UTF-8 mapping file for font encoding OMS
("F:\Program Files\MiKTeX 2.9\tex\latex\base\omsenc.dfu"
File: omsenc.dfu 2015/09/07 v1.1p UTF-8 support for inputenc
defining Unicode char U+00A7 (decimal 167)
defining Unicode char U+00B6 (decimal 182)
defining Unicode char U+00B7 (decimal 183)
defining Unicode char U+2020 (decimal 8224)
defining Unicode char U+2021 (decimal 8225)
defining Unicode char U+2022 (decimal 8226)
)
Now handling font encoding OMX ...
... no UTF-8 mapping file for font encoding OMX
Now handling font encoding U ...
... no UTF-8 mapping file for font encoding U
defining Unicode char U+00A9 (decimal 169)
defining Unicode char U+00AA (decimal 170)
defining Unicode char U+00AE (decimal 174)
defining Unicode char U+00BA (decimal 186)
defining Unicode char U+02C6 (decimal 710)
defining Unicode char U+02DC (decimal 732)
defining Unicode char U+200C (decimal 8204)
defining Unicode char U+2026 (decimal 8230)
defining Unicode char U+2122 (decimal 8482)
defining Unicode char U+2423 (decimal 9251)
))
("F:\Program Files\MiKTeX 2.9\tex\latex\graphics\graphicx.sty"
Package: graphicx 2014/10/28 v1.0g Enhanced LaTeX Graphics (DPC,SPQR)
("F:\Program Files\MiKTeX 2.9\tex\latex\graphics\keyval.sty"
Package: keyval 2014/10/28 v1.15 key=value parser (DPC)
\KV@toks@=\toks16
)
("F:\Program Files\MiKTeX 2.9\tex\latex\graphics\graphics.sty"
Package: graphics 2014/10/28 v1.0p Standard LaTeX Graphics (DPC,SPQR)
("F:\Program Files\MiKTeX 2.9\tex\latex\graphics\trig.sty"
Package: trig 1999/03/16 v1.09 sin cos tan (DPC)
) ("F:\Program Files\MiKTeX 2.9\tex\latex\00miktex\graphics.cfg"
File: graphics.cfg 2007/01/18 v1.5 graphics configuration of teTeX/TeXLive
)
Package graphics Info: Driver file: pdftex.def on input line 94.
("F:\Program Files\MiKTeX 2.9\tex\latex\pdftex-def\pdftex.def"
File: pdftex.def 2011/05/27 v0.06d Graphics/color for pdfTeX
("F:\Program Files\MiKTeX 2.9\tex\generic\oberdiek\infwarerr.sty"
Package: infwarerr 2010/04/08 v1.3 Providing info/warning/error messages (HO)
)
("F:\Program Files\MiKTeX 2.9\tex\generic\oberdiek\ltxcmds.sty"
Package: ltxcmds 2011/11/09 v1.22 LaTeX kernel commands for general use (HO)
)
\Gread@gobject=\count87
))
\Gin@req@height=\dimen103
\Gin@req@width=\dimen104
)
("F:\Program Files\MiKTeX 2.9\tex\latex\base\fontenc.sty"
Package: fontenc 2005/09/27 v1.99g Standard LaTeX package
("F:\Program Files\MiKTeX 2.9\tex\latex\base\t1enc.def"
File: t1enc.def 2005/09/27 v1.99g Standard LaTeX file
LaTeX Font Info: Redeclaring font encoding T1 on input line 48.
))
! LaTeX Error: Option clash for package inputenc.
See the LaTeX manual or LaTeX Companion for explanation.
Type H <return> for immediate help.
...
l.10 \usepackage
[french]{babel}
The package inputenc has already been loaded with options:
[utf8]
There has now been an attempt to load it with options
[latin1]
Adding the global options:
utf8,latin1
to your \documentclass declaration may fix this.
Try typing <return> to proceed.
("F:\Program Files\MiKTeX 2.9\tex\generic\babel\babel.sty"
Package: babel 2016/01/08 3.9n The Babel package
*************************************
* Local config file bblopts.cfg used
*
("F:\Program Files\MiKTeX 2.9\tex\latex\00miktex\bblopts.cfg"
File: bblopts.cfg 2006/07/31 v1.0 MiKTeX 'babel' configuration
)
("F:\Program Files\MiKTeX 2.9\tex\latex\babel-french\frenchb.ldf"
Language: frenchb 2016/01/01 v3.1k French support from the babel system
("F:\Program Files\MiKTeX 2.9\tex\generic\babel\babel.def"
File: babel.def 2016/01/08 3.9n Babel common definitions
\babel@savecnt=\count88
\U@D=\dimen105
)
\l@acadian = a dialect from \language\l@french
\l@canadien = a dialect from \language\l@french
\FBcolonskip=\skip43
\FBthinskip=\skip44
\FB@interchartokenstateORI=\count89
Package babel Info: Making : an active character on input line 372.
Package babel Info: Making ; an active character on input line 373.
Package babel Info: Making ! an active character on input line 374.
Package babel Info: Making ? an active character on input line 375.
\FBguillskip=\skip45
\FBguill@level=\count90
\FB@everypar=\toks17
\FB@Mht=\dimen106
\std@mcc=\count91
\dec@mcc=\count92
\listindentFB=\skip46
\labelwidthFB=\skip47
\leftmarginFB=\skip48
\parindentFFN=\dimen107
))
("F:\Program Files\MiKTeX 2.9\tex\latex\carlisle\scalefnt.sty") (Rapport_style.aux)
\openout1 = `Rapport_style.aux'.
LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 42.
LaTeX Font Info: ... okay on input line 42.
LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 42.
LaTeX Font Info: ... okay on input line 42.
LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 42.
LaTeX Font Info: ... okay on input line 42.
LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 42.
LaTeX Font Info: ... okay on input line 42.
LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 42.
LaTeX Font Info: ... okay on input line 42.
LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 42.
LaTeX Font Info: ... okay on input line 42.
("F:\Program Files\MiKTeX 2.9\tex\context\base\supp-pdf.mkii"
[Loading MPS to PDF converter (version 2006.09.02).]
\scratchcounter=\count93
\scratchdimen=\dimen108
\scratchbox=\box26
\nofMPsegments=\count94
\nofMParguments=\count95
\everyMPshowfont=\toks18
\MPscratchCnt=\count96
\MPscratchDim=\dimen109
\MPnumerator=\count97
\makeMPintoPDFobject=\count98
\everyMPtoPDFconversion=\toks19
)
LaTeX Info: Redefining \degres on input line 42.
LaTeX Info: Redefining \dots on input line 42.
LaTeX Info: Redefining \up on input line 42.
LaTeX Font Info: External font `cmex10' loaded for size
(Font) <12> on input line 44.
LaTeX Font Info: External font `cmex10' loaded for size
(Font) <8> on input line 44.
LaTeX Font Info: External font `cmex10' loaded for size
(Font) <6> on input line 44.
[1
{C:/Users/Adrien/AppData/Local/MiKTeX/2.9/pdftex/config/pdftex.map}] (Rapport_style.toc
LaTeX Font Info: External font `cmex10' loaded for size
(Font) <10.95> on input line 3.
)
\tf@toc=\write3
\openout3 = `Rapport_style.toc'.
[2]
<./Images/Plateau_Pingouin.jpg, id=14, 2457.18pt x 2457.18pt>
File: ./Images/Plateau_Pingouin.jpg Graphic file (type jpg)
<use ./Images/Plateau_Pingouin.jpg>
Package pdftex.def Info: ./Images/Plateau_Pingouin.jpg used on input line 70.
(pdftex.def) Requested size: 150.53639pt x 150.53639pt.
[3 <./Images/Plateau_Pingouin.jpg>] <./Images/MCTS.png, id=20, 1284.8pt x 429.605pt>
File: ./Images/MCTS.png Graphic file (type png)
<use ./Images/MCTS.png>
Package pdftex.def Info: ./Images/MCTS.png used on input line 91.
(pdftex.def) Requested size: 398.33858pt x 133.19583pt.
[4 <./Images/MCTS.png>] [5]
<./Images/Structure_Pingouin.png, id=29, 988.69376pt x 183.68625pt>
File: ./Images/Structure_Pingouin.png Graphic file (type png)
<use ./Images/Structure_Pingouin.png>
Package pdftex.def Info: ./Images/Structure_Pingouin.png used on input line 138.
(pdftex.def) Requested size: 398.33858pt x 74.00572pt.
[6 <./Images/Structure_Pingouin.png>] [7] [8] (Rapport_style.aux) )
Here is how much of TeX's memory you used:
2668 strings out of 493634
34194 string characters out of 3143742
99320 words of memory out of 3000000
6040 multiletter control sequences out of 15000+200000
15512 words of font info for 37 fonts, out of 3000000 for 9000
1025 hyphenation exceptions out of 8191
28i,6n,30p,332b,439s stack positions out of 5000i,500n,10000p,200000b,50000s
<C:\Users\Adrien\AppData\Local\MiKTeX\2.9\fonts\pk\
ljfour\jknappen\ec\dpi600\ecti1095.pk> <C:\Users\Adrien\AppData\Local\MiKTeX\2.9\fonts\pk\ljfour\jknappen\ec\dpi600\eccc
1095.pk> <C:\Users\Adrien\AppData\Local\MiKTeX\2.9\fonts\pk\ljfour\jknappen\ec\dpi600\ecbx1200.pk> <C:\Users\Adrien\AppD
ata\Local\MiKTeX\2.9\fonts\pk\ljfour\jknappen\ec\dpi600\ecrm1095.pk> <C:\Users\Adrien\AppData\Local\MiKTeX\2.9\fonts\pk\
ljfour\jknappen\ec\dpi600\ecbx1095.pk> <C:\Users\Adrien\AppData\Local\MiKTeX\2.9\fonts\pk\ljfour\jknappen\ec\dpi600\ecbx
1440.pk> <C:\Users\Adrien\AppData\Local\MiKTeX\2.9\fonts\pk\ljfour\jknappen\ec\dpi600\eccc1200.pk> <C:\Users\Adrien\AppD
ata\Local\MiKTeX\2.9\fonts\pk\ljfour\jknappen\ec\dpi600\ecrm1200.pk> <C:\Users\Adrien\AppData\Local\MiKTeX\2.9\fonts\pk\
ljfour\jknappen\ec\dpi600\ecbx1728.pk>
Output written on Rapport_style.pdf (8 pages, 2121249 bytes).
PDF statistics:
320 PDF objects out of 1000 (max. 8388607)
0 named destinations out of 1000 (max. 500000)
16 words of extra memory for PDF output out of 10000 (max. 10000000)
File deleted
\documentclass[a4paper,11pt]{article}
\usepackage[utf8]{inputenc}
%Package utilisation accents
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\usepackage{graphicx}
\usepackage[T1]{fontenc}
\usepackage[latin1]{inputenc}
\usepackage[french]{babel}
\setlength{\voffset} {-0.54cm}
\setlength{\hoffset} {-0,04cm}
\setlength{\textwidth} {14cm}
\setlength{\textheight} {24cm}
\setlength{\oddsidemargin} {1cm}
\setlength{\evensidemargin} {1cm}
\setlength{\marginparsep} {0cm}
\setlength{\marginparwidth} {0cm}
\setlength{\topmargin} {0cm}
\setlength{\headheight} {0,45cm}
\setlength{\headsep} {0,57cm}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\title{ \textbf{Étude Pratique : Développement d'une Intelligence Artificielle
à base de l'algorithme Monte Carlo Tree Search} }
\markright{Étude Pratique : Développement d'une Intelligence Artificielle
à base de l'algorithme Monte Carlo Tree Search}
% Pour avoir le titre de l'expose sur chaque page
\author{Francesco \textsc{BARIATTI}, Mikael \textsc{LE}, \\
Romain \textsc{LEBOUC}, Adrien \textsc{GASTÉ} \\
\\
Encadreur : Pascal \textsc{GARCIA}}
\date{2015 - 2016}
\begin{document}
\maketitle
\thispagestyle{empty}
\newpage
\tableofcontents
\newpage
\section{Introduction}
\smallbreak Les études pratiques sont des projets réalisés chaque année pas les élèves du département Informatique de l’INSA de Rennes qui s’étalent sur 10 mois.
\smallbreak Cette étude pratique se présente sous la forme d'une Intelligence Artificielle (IA) à créer pour un jeu de plateau, qui sera jouable via une interface graphique.
\subsection{Le Jeu du Pingouin}
\smallbreak Le Jeu du Pingouin est un jeu de plateau confrontant 2 à 4 joueurs sur un plateau de 60 cases hexagonales, sur lesquelles se trouvent de 1 à 3 poissons, comme présenté dans la figure \ref{Plateau}.
\smallbreak Chaque joueur place 4 pingouins sur le plateau en début de partie. À chaque tour, il en déplace un dans l'une des 6 directions possibles, en récupérant la case sur laquelle le pingouin se trouvait. Il gagne alors autant de points qu'il y a de poissons dessus.
\smallbreak Les pingouins ne peuvent pas passer à travers des autres pingouins (y compris ceux du même joueur) et des trous crées par les déplacements des pions. Lorsqu'un joueur ne peut pas jouer, ceux
pouvant encore jouer continuent.
\smallbreak Le jeu se termine lorsque aucun des pingouins ne peut se déplacer, et le joueur avec le plus de points remporte la partie.
\begin{figure}[!h]
\centering
\includegraphics[width=150px,height=150px]{./Images/Plateau_Pingouin.jpg}
\caption{Plateau du Jeu du Pingouin}
\label{Plateau}
\end{figure}
\subsection{L'algorithme Monte-Carlo Tree Search (MCTS)}
\smallbreak Le Monte-Carlo Tree Search est un algorithme de recherche de décision, utilisé dans les jeux tel que le Go ou encore Ms. Pacman.
Son principe repose sur la simulation de plusieurs millions de parties qui permettent de construire progressivement un arbre et d'ensuite choisir le meilleur chemin.
\smallbreak La construction de cet arbre est composée de 4 étapes :
\begin{itemize}
\item la sélection : En considérant un arbre partiellement construit suite à plusieurs simulations, un chemin est alors choisi par un calcul se servant des valuations aux noeuds, permettant ainsi d'explorer des choix moins bons, jusqu'au dernier noeud qui est une feuille;
ce principe repose sur le tirage aléatoire pondéré.
\item l'expansion : À partir du noeud considéré, il développe ses enfants puis on en choisit un au hasard.
\item la simulation : Il simule alors des prises de décision pour chacun des joueurs aléatoirement depuis cet enfant (la feuille courante) jusqu'à la fin du jeu. Il observe ensuite quel joueur a gagné
la simulation.
\item la rétropropagation : À chaque noeud est associé un score de 2 nombres : le premier est le nombre de parties gagnées par l'IA, le 2ème est le nombre total de parties jouées sur la branche courante.
Après l'étape précédente, on met à jour le score de chaque noeud de l'arbre en remontant du noeud courant à la racine.
\end{itemize}
\begin{figure}[!h]
\includegraphics[width=\linewidth]{./Images/MCTS.png}
\caption{Étapes du MCTS}
\label{lol}
\end{figure}
L'un des avantages indéniables de l'algorithme est qu'il peut être interrompu à tout moment, le choix de la branche optimale sera fait à partir de l'arbre déjà construit. De plus, C'est un
algorithme sans heuristique, c'est à dire qu'il n'a pas besoin de connaître au préalable les règles du jeu pour être bon.
\newpage
\section{Étude Pratique}
\subsection{Tâche à réaliser}
\smallbreak La tâche à réaliser est de programmer le jeu du Pingouin en Langage C++ et y implémenter le MCTS pour l'IA. Le mode Joueur contre IA est imposé. Il faut
également créer une interface utilisateur pour rendre le programme accessible à tous.
\subsection{Implémentation du MCTS}
\smallbreak L'algorithme à implémenter dans le programme est le MCTS. Il a déjà été programmé par notre encadrant Pascal GARCIA en C++. C'est donc à nous de le faire intéragir avec le programme du jeu afin que
l'IA choisisse la meilleure solution en fonction du coup fait par le joueur humain.
\subsection{Création d'une interface graphique}
\smallbreak Pour permettre de rendre l'application facile à utiliser, une interface graphique doit être programmée; les intéractions Homme-Machine se font à la souris.
Il n'y a pas de restriction sur la méthode utilisée.
\newpage
\section{Réalisation}
\smallbreak A chaque séance, nous nous sommes généralement divisés en 2 équipes de 2 afin d'avancer plus rapidement le projet sur 2 points différents. Lorsque nous avions l'occasion, nous rencontrions
notre encadrant afin qu'il donne son avis ainsi que des conseils pour des problèmes que nous n'arrivions pas à résoudre.
\smallbreak Le projet a été effectué à l'aide de Git pour faciliter l'accès aux différentes versions du code.
\subsection{Prise en main du MCTS avec le Tic-Tac-Toe}
\smallbreak Afin de comprendre et tester le fonctionnement du MCTS, nous avons décidé, pendant le 1er semestre, de l'implémenter sur un jeu simple, à savoir le Tic-Tac-Toe.
Cela nous a également permis d'apprendre à programmer en C++, le langage utilisé pour coder l'algorithme.
\smallbreak Pascal GARCIA nous a conseillé de représenter la grille sous forme de \textit{bitboards} de 16 bits pour optimiser les calculs, l'un représentant les croix et l'autre les cercles.
Les états gagnants étaient sous forme d'entiers et lorsque l'un des \textit{bitboards} satisfaisait un de ces états, la partie se terminait.
\subsection{Création de l'IA pour le Jeu du Pingouin}
\smallbreak La deuxième étape du projet consiste à coder le Jeu du Pingouin de telle sorte que l'IA respecte les règles et comprenne la condition de victoire.
\smallbreak Chacun des pingouins a été modélisé par un \textit{bitboard} de 32 bits.
Le plateau a été représenté à l'aide de 3 \textit{bitboards} de 64 bits (chacun représentant la présence de 1,2 ou 3 poissons sur les cases) que nous avons ensuite complété avec la position des pingouins.
\smallbreak Il a fallu confronter le problème du déplacement des pions qui n'existait pas dans le Tic-Tac-Toe : en effet, il n'a pas été évident de relier déplacement sur le plateau et déplacement et sa représentation
en \textit{bitboard}. La solution retenue a été de numéroter les 60 cases du plateau et de faire correspondre le déplacement de chacune des 6 directions par un calcul arithmétique.
\smallbreak De plus, la modélisation optimale des pingouins a été trouvée difficilement car il a fallu associer plusieurs types d'informations différentes à chacun des pingouins (par exemple, le nombre de déplacements possibles dans une direction).
\begin{figure}[!h]
\includegraphics[width=\linewidth]{./Images/Structure_Pingouin.png}
\caption{Découpage du \textit{bitboard} pour un pingouin}
\end{figure}
\smallbreak Une solution envisagée a été de mettre chaque type d'informations dans un \textit{bitboard} en particulier, mais cela s'est révélé trop difficile à gérer. Nous avons alors opté de stocker toutes les informations concernant un pingouin dans un \textit{bitboard} personnel.
\subsection{Intégration de l'interface graphique pour le jeu}
\newpage
\subsubsection*{Conclusion}
\subsubsection*{Remerciements}
\end{document}
\select@language {french}
\contentsline {section}{\numberline {1}Introduction}{3}
\contentsline {subsection}{\numberline {1.1}Le Jeu du Pingouin}{3}
\contentsline {subsection}{\numberline {1.2}L'algorithme Monte-Carlo Tree Search (MCTS)}{3}
\contentsline {section}{\numberline {2}\IeC {\'E}tude Pratique}{5}
\contentsline {subsection}{\numberline {2.1}T\IeC {\^a}che \IeC {\`a} r\IeC {\'e}aliser}{5}
\contentsline {subsection}{\numberline {2.2}Impl\IeC {\'e}mentation du MCTS}{5}
\contentsline {subsection}{\numberline {2.3}Cr\IeC {\'e}ation d'une interface graphique}{5}
\contentsline {section}{\numberline {3}R\IeC {\'e}alisation}{6}
\contentsline {subsection}{\numberline {3.1}Prise en main du MCTS avec le Tic-Tac-Toe}{6}
\contentsline {subsection}{\numberline {3.2}Cr\IeC {\'e}ation de l'IA pour le Jeu du Pingouin}{6}
\contentsline {subsection}{\numberline {3.3}Int\IeC {\'e}gration de l'interface graphique pour le jeu}{7}
File deleted
alambic
=======
*This is a Working directory for the project*
We are a small team of 3rd year french students in computer science at the INSA Rennes, France.
**Our goal is to improve autocompletion in LaTeXila, and maybe more...**
LaTeXila is a LaTeX editor for the Gnome project.
If you don't know it, check [the Gnome project page](https://wiki.gnome.org/Apps/LaTeXila)
Objectives
----------
- improve autocompletion of \ref
- provide a guide (in english and french) for begginers contributors
Latex writing rules
-------------------
- One sentence per line (to clean up git diff)
- It's better to commit at each change that to commit all your work at the end of the day
The Team
--------
- Axel "ShadowsWalker" Caro
- François "Tyzeppelin" Boschet
- Maximilien "halfa" Richer
TODO
====
## 1st step (done)
### Goal
Provide completion for “\ref” command using the labels defined in the current document.
### Recap
To do so, we are using the current structure of the _CompletionProvider_.
The major problem is that the update is done when the user saves the current file or when he clicks a button.
The fact is when the user is switching tab, there is no update from the provider. It means that between the moment
the user switch tab and the moment he saves, if he tries to use completion for a ```\ref``` he will have the proposals
for the last file he was working on.
## 2nd step (done)
### Goal
Provide completion for "\ref" using labels sourced from all opened documents
## 3rd step (done)
### Goal
Provide completion for "\ref" using labels sourced only from files of the same folder, parse the files in background
### Recap
Parser is detatched from document_structure and integrated into the document class itself.
Use of a global _Set_ to store data parsed, and sourced by the completion provider to build the label list provided.
## 4th step
### Goal
When a file is opened, look for projet main file, parse it and parse any following includes recursively.
### Recap
[...]
# Don't commit LaTeXila files
*~
*.toc
*.log
*.pdf
*.aux
*.fls
*.fdb_latexmk
*.synctex.gz
*.out
*.dia
*.dvi
*.svg
Comment contribuer à latexila
==========================
Ce document est conçu pour les débutants qui veulent commencer à contribuer à un logiciel Gnome. Latexila sera pris comme exemple, mais ce document peut aider pour beaucoup d'autres logiciels du projet Gnome, en particulier ceux qui utilisent `jhbuild`.
Pourquoi ce document?
-------------------
Nous sommes une petite équipe (3 étudiants) de l'INSA de Rennes, une école d'ingénieurs française, qui ont travaillé sur latexila.
Nous n'étions pas satisfaits de la documentation actuelle fournie par le projet Gnome, qui est bien documenté, mais ne fournit aucune réelle recette.
Objectif
----
Le but de ce document est de fournir un parcours aussi complet que possible de la configuration d'un environnement de développement pour Latexila.
Nous choisissons Fedora comme un point de départ car c'est la distribution Linux qui dispose du meilleur support pour l'environement Gnome.
> La configuration (téléchargement + première construction) prennent quelque chose comme 2h, mais il s'agit surtout de temps d'attente.
Ressources
----------
* [Le site du projet Gnome pour les dévloppeurs] (https://developer.gnome.org/)
* [La page de latexila sur GNOME.org] (https://wiki.gnome.org/Apps/LaTeXila)
* [JHBuild HOWTO] (https://wiki.gnome.org/HowDoI/Jhbuild)
Prérequis
-----------
### Computer
Nous supposons que vous avez à votre disposition une installation fraiche (ou presque) de Fedora (21 si possible), et un espace disque raisobable restant (plus de 10 Go). Nous supposons également que vous disposez des privilèges d'administrateur.
> Le test a été effectué sur une installation de Fedora 21 Workstation (64bit) mise à jour en date du 18 mars 2015
> La version de latexila était la dernière en date
### Être Humain
Nous supposons que vous n'avez pas peur de la ligne de commande.
Vous pouvez copier/coller des commandes dans la plupart des terminaux à l'aide 'Ctrl' 'Shift' + 'C' et 'Ctrl' + 'Shift' + 'V'.
Les bases
----------
1. Installez les paquets nécessaires
`` `BASH
sudo yum install git gcc gnome-commune gtk3-devel vala gcc-c ++ xorg-x11-util-macros mesa-libwayland-EGL intltool gtksourceview-devel-gobject introspection-devel lcov de gtkspell3-devel
`` `
Ou si vous pensez en avoir besoin... #bruteforce
`` `BASH
sudo yum groupinstall développement-libs développement-outils gnome-développement logiciel
`` `
Installez JHBuild
---------------
Inspiré du [HOWTO JHBuild] (https://wiki.gnome.org/HowDoI/Jhbuild).
1. Faire un clone mono-niveau du dépôt
`` `BASH
git clone --depth = 1 git: //git.gnome.org/jhbuild
`` `
2. Installez le, _droits root non requis_
`` `BASH
./autogen.sh --simple installer
make
make install
`` `
Maintenant vous pouvez appeler `jhbuild` de la ligne de commande !
Installez latexila utilisant jhbuild
------------------------------
1. Obtenir un échantillon du fichier de configuration sur [la page de swilmet] (https://people.gnome.org/~swilmet/latexila/jhbuildrc).
2. Mettez-le dans `` `/ home / <utilisateur> /. Config / jhbuildrc```
3. Changez le préfixe du chemein pour quelque chose de différent ou assurez-vous des droits d'accès pour l'utilisateur actuel.
> Si vous ne modifiez pas votre configuration, les dépôts seront mis à `` `/ home / user <> / <repo>` `` et les fichiers seront compilés vers `` `/ opt```
4. Obtenez toutes les dépendances des dépôts git.
Cela peut prendre beaucoup de temps si vous avez un ordinateur portable et une connexion internet très limité, car certains des dépôts sont gros, comme ` Glib` ou `GTK3`.
> Durée moyenne une demi-heure sur un ordinateur de bureau avec accès internet en fibre
`` `BASH
jhbuild update latexila
`` `
> Si vous avez une erreur, essayez les choix qui vous sont donnés, un par un et, si nécessaire, chercher les paquets nécessaires en utilisant `yum search`.
Construire latexila
--------------
1. Installez (ou vérifier) les dépendances du système
`` `BASH
jhbuild sysdeps --install
`` `
> JHBuild demandera un accès root au cours du processus
2. Compiler vala
`` `BASH
jhbuild update vala
jhbuild build jhbuild
`` `
3. Compiler le logiciel et toutes ses dépendances
`` `BASH
jhbuild make latexila
`` `
> La première construction peut prendre jusqu'à une heure, voire deux, selon la puissance de votre machine.
> Allez prendre un café!
4. Compilation de Latexila uniquement
Si vous voulez compilier uiquement latexila, vous pouvez le faire en utilisant
`` `BASH
jhbuild buildone latexila
`` `
Cela va construire la version actuelle de `master`.
5. compiler la branche courante pour les tests
`` `BASH
# Dans [...] / latexila
jhbuild make
`` `
Exécuter latexila
------------
Exécuter
`` `BASH
jhbuild run latexila
`` `
> Vous pouvez disposer d'une version _distribution_ de latexila en exécutant l'habituel `` `sudo yum install latexila```
\ No newline at end of file
\documentclass[a4paper,11pt]{report}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{lmodern}
\usepackage{titlesec}
\usepackage{exptech}
\usepackage{listings}
\usepackage{hyperref}
\usepackage{color}
% Pour les figures
\usepackage{pstricks}
\usepackage{epsfig}
\usepackage{tikz}
\setlength{\parskip}{1em}
% Random code from stackoverflow refining chapters
% See http://tex.stackexchange.com/questions/110840/how-to-remove-chapter-numbering-without-removing-it-from-tableofcontents
\titleformat{\chapter}
{\Large\bfseries} % format
{} % label
{0pt} % sep
{\huge} % before-code
%% ** Begin document ** %%
\title{Amélioration de la complétion automatique de \LaTeX{}ila : Documentation Technique}
\author{Axel Caro\and François Bochet\and Maximilien Richer}
\date{2014-2015}
\begin{document}
% Configuration pour le code
\include{./lst_config}
\maketitle %affichage du titre
\tableofcontents %table des matières
\chapter{Introduction}
\label{cha:Introduction}
Ce document contient le code détaillé et commenté que nous avons incorporé au projet LaTeXiLa, afin d'implémenter le mécanisme de complétion dynamique de la commande \textbf{\textbackslash{}ref}.
Pour plus de détails sur le projet, veuillez vous référer au rapport complet.
\textit{Remarque} : dans la suite du document, les notations suivantes seront utilisées.
\begin{description}
\item[// ...] représente une partie de code inchangée, et donc non explicitée.
\item[\{// ...\}] représente le corps non détaillé d'une méthode, car trivial.
\end{description}
\chapter{Classe : CompletionProvider}
\label{cha:classe_completionProvider}
La classe CompletionProvider est le gestionnaire de complétion codé pour le projet LaTeXiLa.
Au début de notre étude, il ne proposait pas de complétion pour la commande \textbf{\textbackslash{}ref}, mais uniquement une complétion statique basée sur un fichier xml.
Afin d'implémenter notre solution, nous y avons apporté les modifications suivantes.
\section{Structure de Donnée}
\label{sec:CP_structure_de_données}
\begin{lstlisting}[frame=single]
public class CompletionProvider : GLib.Object, SourceCompletionProvider
{
// Structure de donnée représentant l'arborescence
// des choix de complétion.
// La commande \ref a pour format : \ref{nom_du_label}
// Structure de la commande
struct CompletionCommand
{
string name; // "\ref".
string? package;
CompletionArgument[] args; // Un seul argument.
}
// Structure d'argument de commande
struct CompletionArgument
{
string label;
bool optional;
CompletionChoice[] choices;
// L'ensemble des labels déclarés par l'utilisateur.
}
// Structure de la proposition de complétion
public struct CompletionChoice
{
string name; // L'intitulé du label.
string? package;
string? insert;
string? insert_after;
}
// Ensemble des commandes proposant des choix de complétion.
// Doit être mis à jour pour la commande \ref.
private Gee.HashMap<string, CompletionCommand?> _commands;
// Attributs ajoutés à la classe :
// Table de hachage contenant des ensembles non redondants
// de choix de complétion d'un fichier, indexée par
// le chemin absolu du fichier.
// L'ajout de données à cette table de hachage est fait
// par les instances de la classe Document.
private Gee.HashMap<string, Gee.HashSet<CompletionChoice?>>
_labels_from_files =
new Gee.HashMap<string, Gee.HashSet<CompletionChoice?>>();
// Booléen utilisé pour mettre à jour les choix de
// complétion uniquement quand cela est nécessaire
// (soucis d'efficacité).
private bool _labels_modified = false;
// Chaîne de caractères utilisée pour filtrer les choix de
// complétion proposés selon le contexte.
// Le contexte ici utilisé est le chemin absolu
// du répertoire parent du document courant.
// On propose ainsi une complétion des labels déclarés dans
// les fichiers .tex de ce répertoire.
private string _last_dir = "";
}
\end{lstlisting}
\section{Méthodes}
\label{sec:CP_méthodes}
\begin{lstlisting}[frame=single]
public class CompletionProvider : GLib.Object, SourceCompletionProvider
{
// Getters et setters pour certains des attributs
// mentionnés plus haut.
public void set_labels_modified (bool b){// ...}
public void set_last_dir (string dir){// ...}
// Utilisée par les instances de la classe Document.
public Gee.HashMap<string, Gee.HashSet<CompletionChoice?>>
get_labels_from_files (){// ...}
// Retourne un tableau de CompletionChoice correspondant
// aux labels contenus dans la table de hachage, provenant
// des fichiers du répertoire passé en paramètre.
public CompletionChoice[] get_all_labels (string dir)
{
CompletionChoice[] choices = {};
foreach (var entry in _labels_from_files.entries)
// Filtrage des entrées selon le chemin absolu
// du répertoire.
if (entry.key.has_prefix (dir))
foreach (CompletionChoice c in entry.value)
choices += c;
return choices;
}
// Met à jour la structure des choix de complétion
// pour la commande \ref en remplacant le champ adéquat de
// _commands par la nouvelle liste.
public void update_label_completion_choices ()
{
if (_last_dir != "")
{
// Liste des labels, filtrés selon le contexte.
CompletionChoice[] choices =
get_all_labels (_last_dir);
CompletionCommand cmd_ref = _commands["\\ref"];
cmd_ref.args[0].choices = choices;
_commands["\\ref"] = cmd_ref;
// Précise la cohérence entre les choix maintenant
// proposés, et les données de la table de hachage.
set_labels_modified (false);
}
}
// Appellée lors d'une demande d'affichage des
// choix de complétion par l'utilisateur.
// C'est à ce moment que les choix de complétion proposés
// sont mis à jour, si la mise à jour est requise.
public void populate (SourceCompletionContext context)
{
// Si les choix proposés ne sont pas à jour avec
// les entrées de la table de hachage.
if (_labels_modified)
update_label_completion_choices ();
// ...
}
}
\end{lstlisting}
En résumé, les choix de complétion pour la commande \textbf{\textbackslash{}ref} sont mis à jour, si besoin, lors de l'appel de l'utilisateur au gestionnaire de complétion.
La mise à jour consiste à filtrer l'ensemble des labels contenus dans la table de hachage selon un certain contexte, et à remplacer les choix proposés par ces nouveaux choix.
L'ajout de données dans la table de hachage est fait par les instances de la classe Document, quand nécessaire (voir chapitre suivant).
\chapter{Classe : Document}
\label{cha:classe_document}
La classe Document représente les documents ouverts dans LaTeXiLa.
Afin d'implémenter notre solution, nous y avons apporté les modifications suivantes.
\textit{Remarque} : Le code du parseur du contenu d'un document, permettant de détecter la déclaration des labels, n'est pas explicité. En effet, il s'agit du même parseur que celui utilisé par les instances de la classe DocumentStructure, allégé pour nos besoins. Les appels importants tels que l'ajout d'un label, sont néanmoins mentionnés.
\section{Structure de Donnée}
\label{sec:D_structure_de_données}
\begin{lstlisting}[frame=single]
public class Document : Gtk.SourceBuffer
{
// Attribut déjà présent, représentant le fichier associé
// à cette instance de Document.
public File location { get; set; }
// Référence vers le gestionnaire de complétion par défaut,
// partagée par toutes les instances de Document.
private CompletionProvider provider = CompletionProvider.get_default();
// HashSet. Ensemble non redondant des labels déclarés
// dans le document.
private Gee.HashSet<CompletionProvider.CompletionChoice?>
_label_completion_choices =
new Gee.HashSet<CompletionProvider.CompletionChoice?>();
}
\end{lstlisting}
\section{Méthodes}
\label{sec:D_méthodes}
\subsection{Gestion des labels}
\label{ssec:gestion_des_labels}
\begin{lstlisting}[frame=single]
public class Document : Gtk.SourceBuffer
{
// Ajout d'un choix de complétion associé à l'intitulé
// passé en paramètre dans le HashSet.
public void add_label_completion_choice (string content)
{
CompletionProvider.CompletionChoice c =
CompletionProvider.CompletionChoice ();
c.name = content;
_label_completion_choices.add (c);
}
// Remise à zéro des choix de complétion associés
// au document.
// Utilisée au début de chaque parcours du document.
public void drop_label_completion_choices ()
{
_label_completion_choices.clear ();
}
// Met à jour la table de hachage du gestionnaire de
// complétion, avec comme clé le chemin absolu du
// document, et comme valeur le HashSet maintenant complet.
public void update_label_completion_choices_from_file ()
{
string file_path = location.get_parse_name ();
// S'il s'agit de la création d'une entrée dans
// la table de hachage, ie : s'il s'agit du premier
// parcours de ce document.
if (! already_parsed (file_path))
{
provider.get_labels_from_files ().@set
(file_path, _label_completion_choices);
}
// S'il s'agit de la mise à jour d'une entrée dans la
// table de hachage, ie : s'il ne s'agit pas du
// premier parcours de ce document.
else
{
provider.get_labels_from_files ()[file_path] =
_label_completion_choices;
}
}
// Permet de savoir si le document a déjà été parcouru,
// ie : il existe une entrée pour ce document dans la
// table de hachage.
public bool already_parsed (string file_path)
{
return provider.get_labels_from_files ()
.has_key (file_path);
}
// Informe le gestionnaire de complétion que des choix de
// complétion ont été mis à jour.
// Affecte à l'attribut _last_dir le chemin absolu
// du répertoire parent du document, permettant ainsi le
// filtrage des choix de complétion proposés à
// l'utilisateur.
public void notify_label_changed ()
{
provider.set_labels_modified (true);
provider.set_last_dir (find_directory ());
}
// Retourne une chaîne de caractères représentant le chemin
// absolu du répertoire parent du document.
public string find_directory (){//...}
}
\end{lstlisting}
\subsection{Parseur}
\label{ssec:parseur}
\begin{lstlisting}[frame=single]
public class Document : Gtk.SourceBuffer
{
// Méthode appellée pour demander un parcours du document.
public void parse ()
{
// ...
// Déjà existant. Le parseur demande un appel à
// parse_impl().
Idle.add (() =>
{
return parse_impl ();
});
}
// Déjà existant. Parcours du document.
private bool parse_impl ()
{
// Remise à zéro des choix de complétion associés à
// ce document.
drop_label_completion_choices ();
// Informe le gestionnaire de complétion que les choix
// de complétion associés à ce document ont été
// modifiés.
notify_label_changed ();
// ...
// Met à jour le contenu de la table de hachage du
// gestionnaire de complétion.
update_label_completion_choices_from_file ();
// ...
}
// Déjà existant. Appellée pour détecter la présence d'un
// élément d'un certain type.
private bool search_markup (// ...)
{
type = null;
// ...
// Ajout de la gestion du cas de l'élément de type
// label.
if (type == StructType.LABEL)
{
// Ajout du choix de complétion associé à
// l'intitulé du label (contents) dans le
// HashSet.
add_label_completion_choice (contents);
}
// ...
}
}
\end{lstlisting}
\subsection{Mise à jour des labels}
\label{ssec:maj_des_labels}
\begin{lstlisting}[frame=single]
public class Document : Gtk.SourceBuffer
{
// Méthode appellée pour charger le contenu d'un document.
// Le paramètre booléen parse_related à été ajouté afin de
// spécifier s'il faut analyser les documents .tex du même
// répertoire (true), ou seulement le document
// spécifié (false).
public void load (File location, bool parse_related)
{
// ...
if(parse_related) {
parse_related_documents ();
} else {
parse ();
}
}
// Analyse en arrière plan des documents .tex du même
// répertoire que le document courant.
public void parse_related_documents ()
{
File dir = location.get_parent ();
// Parcours sur les fichiers du répertoire.
try {
FileEnumerator enumerator = dir.enumerate_children
(
"standard::*",
FileQueryInfoFlags.NOFOLLOW_SYMLINKS,
null
);
// Utilisé pour stocker les informations relatives
// à chaque fichier trouvé.
FileInfo info = null;
while (((info = enumerator.next_file (null))!= null))
{
Document doc = new Document ();
File child = enumerator.get_child (info);
string file_path = child.get_parse_name ();
// Si le fichier trouvé est un fichier .tex, et
// qu'il n'a pas déjà été analysé.
if (file_path.has_suffix (".tex") &&
(! already_parsed (file_path)))
// Analyse de ce fichier uniquement
// (passage de false en paramètre)
doc.load (child, false);
}
} catch (Error e) {
warning ("%s", e.message);
}
}
// Méthode appellée lors de la sauvegarde du document.
// Nous lui avons ajouté une demande de parcours du
// document, afin de mettre à jour l'ensemble des
// choix de complétion de la table de hachage
// associée à ce document.
public void save (// ...)
{
// ...
parse();
}
}
\end{lstlisting}
\subsubsection{Les appels à load}
\label{sssec:les_appels_à_load}
Ayant modifié le prototype de la méthode \textit{load} en lui ajoutant un paramètre booléen, nous avons du donner une valeur à ce paramètre dans d'autres classes, qui faisaient appel à cette méthode.
Plus précisément, c'est grâce à cette différenciation lors de l'appel que l'on a pu demander l'analyse des document .tex du même répertoire lors de \textit{l'ouverture} d'un document, et le changement de contexte de complétion lors du \textit{changement de document courant} parmis les documents ouverts.
Voici les différents appels modifiés.
\begin{lstlisting}[frame=single]
public class DocumentTab : Grid
{
// Appellée lors de l'ouverture d'un document .tex.
public DocumentTab.from_location (File location)
{
this ();
// Demande d'analyse des documents .tex du même
// répertoire.
document.load (location, true);
}
// Lors du changement de document courant.
private bool view_focused_in ()
{
// ...
// Si le document à été modifié par un programme tiers,
// il faut de nouveau l'analyser.
if (document.is_externally_modified ())
{
// ...
// On analyse le document.
// On fait ici le choix d'analyser aussi les
// documents du même répertoire, car rien
// n'indique qu'ils n'ont pas aussi été modifiés.
// Cette "mesure de sécurité" est en réalité
// indispensable.
document.load (document.location, true);
// ...
}
// Dans tous les cas, on change le contexte de
// complétion. On demande donc la mise à jour
// des choix de complétion proposés, en prenant
// en compte le répertoire parent du nouveau
// document courant.
document.notify_label_changed ();
// ...
}
}
\end{lstlisting}
En résumé, un document peut être analysé dans deux cas : s'il s'agit de l'ouverture du document ou s'il a été modifié par l'extérieur, l'analyse les documents .tex du même répertoire est nécessaire.
Dans ce cas, on effectue un parcours sur les fichiers .tex du même répertoire, et on met à jour les entrées de la table de hachage du gestionnaire de complétion.
Au contraire, s'il s'agit d'un changement de document courant, on change simplement le contexte de complétion, forcant ainsi la mise à jour des choix de complétion proposés à l'utilisateur si ce dernier fait appel au gestionnaire de complétion.
Le parcours d'un document est également fait à chaque sauvegarde, permettant ainsi de toujours garder à jour les entrées de la table de hachage. Lors du prochain appel au gestionnaire de complétion, les choix proposés seront de nouveau filtrés, et seront donc pertinents.
\end{document}
\documentclass[a4paper,11pt]{report}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{lmodern}
\usepackage{titlesec}
\usepackage{exptech}
\usepackage{listings}
\usepackage{hyperref}
\usepackage{color}
% Pour les figures
\usepackage{pstricks}
\usepackage{epsfig}
\usepackage[justification=centering]{caption}
\usepackage{tikz}
\setlength{\parskip}{1em}
% Random code from stackoverflow refining chapters
% See http://tex.stackexchange.com/questions/110840/how-to-remove-chapter-numbering-without-removing-it-from-tableofcontents
\titleformat{\chapter}
{\Large\bfseries} % format
{} % label
{0pt} % sep
{\huge} % before-code
%% ** Begin document ** %%
\title{Étude pratique : Amélioration de la complétion automatique de \LaTeX{}ila : Documentation Utilisateur}
\author{Axel Caro\and François Boschet\and Maximilien Richer}
\date{2014-2015}
\begin{document}
% Configuration pour le code
\include{./lst_config}
\maketitle %affichage du titre
\chapter{Introduction}
\label{cha:Introduction}
Ce document contient la documentation utilisateur du mécanisme de complétion dynamique de la commande \textbf{\textbackslash{}ref} que nous avons ajouté au logiciel \LaTeX{}ila.
Pour plus de détails sur le projet, veuillez vous référer au rapport complet.
\chapter{Installation de \LaTeX{}ila}
\label{cha:Installation}
\section{Dépôts officiels}
\label{sec:depots}
\LaTeX{}ila est disponible en téléchargement dans les dépôts officiels de plusieurs distribution comme :
\begin{itemize}
\item Arch Linux
\item Debian
\item Fedora
\item Gentoo
\item Ubuntu
\end{itemize}
\section{Sources}
\label{sec:sources}
Vous pouvez aussi compiler \LaTeX{}ila via les sources. Soit en les téléchargeant sur le serveur ftp de gnome\footnote{\url{http://ftp.gnome.org/pub/GNOME/sources/latexila/}} soit en clonant le dépot git\footnote{\url{https://git.gnome.org/browse/latexila}}.
Vous pouvez également suivre le guide que nous avons réalisé qui explique comment installer la dernière version de Latexila en utilisant l'utilitaire Jhbuild disponible sur notre dépôt git\footnote{\url{https://github.com/halfa/alambic/blob/master/report/howtoContribFromScratch.md}}
\chapter{Utilisation de la complétion}
\LaTeX{}ila propose une complétion automatique des principales commandes \LaTeX{}. Avec notre projet, le logiciel propose aussi la complétion pour la commande \textbf{\textbackslash{}ref}.
Le fonctionnement en est très simple : vous pouvez désormais faire appel à l'invite de complétion sur la commande \textbf{\textbackslash{}ref}.
Vous pourrez alors choisir une complétion parmi tous les intitulés des labels que vous aurez déclaré dans votre fichier.
Les labels déclarés dans les fichiers tex du même répertoire que celui de votre document actif sont également porposés.
Si vous déclarez ou modifiez un label, il est impératif de sauvegarder votre document afin que la complétion soit mise à jour.
\end{document}
\ No newline at end of file
\relax
\providecommand\hyper@newdestlabel[2]{}
\@setckpt{./draw/doc_opening}{
\setcounter{page}{4}
\setcounter{equation}{0}
\setcounter{enumi}{0}
\setcounter{enumii}{0}
\setcounter{enumiii}{0}
\setcounter{enumiv}{0}
\setcounter{footnote}{0}
\setcounter{mpfootnote}{0}
\setcounter{part}{0}
\setcounter{chapter}{3}
\setcounter{section}{1}
\setcounter{subsection}{0}
\setcounter{subsubsection}{0}
\setcounter{paragraph}{0}
\setcounter{subparagraph}{0}
\setcounter{figure}{0}
\setcounter{table}{0}
\setcounter{lstnumber}{1}
\setcounter{Item}{0}
\setcounter{Hfootnote}{3}
\setcounter{bookmark@seq@number}{8}
\setcounter{ContinuedFloat}{0}
\setcounter{lstlisting}{0}
\setcounter{section@level}{0}
}
% Graphic for TeX using PGF
% Title: /home/maximilien/INSA/alambic/report/draw/doc_opening.dia
% Creator: Dia v0.97.3
% CreationDate: Wed Apr 29 09:12:52 2015
% For: maximilien
% \usepackage{tikz}
% The following commands are not supported in PSTricks at present
% We define them conditionally, so when they are implemented,
% this pgf file will use them.
\ifx\du\undefined
\newlength{\du}
\fi
\setlength{\du}{15\unitlength}
\begin{tikzpicture}
\pgftransformxscale{1.000000}
\pgftransformyscale{-1.000000}
\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000}
\pgfsetstrokecolor{dialinecolor}
\definecolor{dialinecolor}{rgb}{1.000000, 1.000000, 1.000000}
\pgfsetfillcolor{dialinecolor}
\pgfsetlinewidth{0.100000\du}
\pgfsetdash{}{0pt}
\definecolor{dialinecolor}{rgb}{1.000000, 1.000000, 1.000000}
\pgfsetfillcolor{dialinecolor}
\pgfpathellipse{\pgfpoint{-28.150000\du}{2.050000\du}}{\pgfpoint{0.300000\du}{0\du}}{\pgfpoint{0\du}{0.300000\du}}
\pgfusepath{fill}
\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000}
\pgfsetstrokecolor{dialinecolor}
\pgfpathellipse{\pgfpoint{-28.150000\du}{2.050000\du}}{\pgfpoint{0.300000\du}{0\du}}{\pgfpoint{0\du}{0.300000\du}}
\pgfusepath{stroke}
\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000}
\pgfsetstrokecolor{dialinecolor}
\draw (-29.350000\du,2.650000\du)--(-26.950000\du,2.650000\du);
\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000}
\pgfsetstrokecolor{dialinecolor}
\draw (-28.150000\du,2.350000\du)--(-28.150000\du,3.850000\du);
\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000}
\pgfsetstrokecolor{dialinecolor}
\draw (-28.150000\du,3.850000\du)--(-29.350000\du,5.150000\du);
\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000}
\pgfsetstrokecolor{dialinecolor}
\draw (-28.150000\du,3.850000\du)--(-26.950000\du,5.150000\du);
% setfont left to latex
\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000}
\pgfsetstrokecolor{dialinecolor}
\node at (-28.150000\du,6.345000\du){Utilisateur};
\pgfsetlinewidth{0.100000\du}
\pgfsetdash{}{0pt}
\definecolor{dialinecolor}{rgb}{1.000000, 1.000000, 1.000000}
\pgfsetfillcolor{dialinecolor}
\fill (-16.300000\du,4.400000\du)--(-16.300000\du,5.800000\du)--(-6.822500\du,5.800000\du)--(-6.822500\du,4.400000\du)--cycle;
\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000}
\pgfsetstrokecolor{dialinecolor}
\draw (-16.300000\du,4.400000\du)--(-16.300000\du,5.800000\du)--(-6.822500\du,5.800000\du)--(-6.822500\du,4.400000\du)--cycle;
% setfont left to latex
\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000}
\pgfsetstrokecolor{dialinecolor}
\node at (-11.561250\du,5.350000\du){CompletionProvider};
\pgfsetlinewidth{0.050000\du}
\pgfsetdash{}{0pt}
\pgfsetdash{{0.400000\du}{0.400000\du}}{0\du}
\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000}
\pgfsetstrokecolor{dialinecolor}
\draw (-28.150000\du,6.550000\du)--(-28.150000\du,7.750000\du);
\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000}
\pgfsetstrokecolor{dialinecolor}
\draw (-28.150000\du,9.750000\du)--(-28.150000\du,14.987500\du);
\pgfsetlinewidth{0.100000\du}
\pgfsetdash{}{0pt}
\definecolor{dialinecolor}{rgb}{1.000000, 1.000000, 1.000000}
\pgfsetfillcolor{dialinecolor}
\fill (-28.500000\du,7.750000\du)--(-28.500000\du,9.750000\du)--(-27.800000\du,9.750000\du)--(-27.800000\du,7.750000\du)--cycle;
\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000}
\pgfsetstrokecolor{dialinecolor}
\draw (-28.500000\du,7.750000\du)--(-28.500000\du,9.750000\du)--(-27.800000\du,9.750000\du)--(-27.800000\du,7.750000\du)--cycle;
\pgfsetlinewidth{0.100000\du}
\pgfsetdash{}{0pt}
\definecolor{dialinecolor}{rgb}{1.000000, 1.000000, 1.000000}
\pgfsetfillcolor{dialinecolor}
\fill (-23.700000\du,4.350000\du)--(-23.700000\du,5.750000\du)--(-18.612500\du,5.750000\du)--(-18.612500\du,4.350000\du)--cycle;
\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000}
\pgfsetstrokecolor{dialinecolor}
\draw (-23.700000\du,4.350000\du)--(-23.700000\du,5.750000\du)--(-18.612500\du,5.750000\du)--(-18.612500\du,4.350000\du)--cycle;
% setfont left to latex
\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000}
\pgfsetstrokecolor{dialinecolor}
\node at (-21.156250\du,5.300000\du){Document};
\pgfsetlinewidth{0.050000\du}
\pgfsetdash{}{0pt}
\pgfsetdash{{0.400000\du}{0.400000\du}}{0\du}
\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000}
\pgfsetstrokecolor{dialinecolor}
\draw (-21.156300\du,5.750000\du)--(-21.156300\du,7.100000\du);
\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000}
\pgfsetstrokecolor{dialinecolor}
\draw (-21.156300\du,11.100000\du)--(-21.156300\du,14.137500\du);
\pgfsetlinewidth{0.100000\du}
\pgfsetdash{}{0pt}
\definecolor{dialinecolor}{rgb}{1.000000, 1.000000, 1.000000}
\pgfsetfillcolor{dialinecolor}
\fill (-21.506300\du,7.100000\du)--(-21.506300\du,11.100000\du)--(-20.806300\du,11.100000\du)--(-20.806300\du,7.100000\du)--cycle;
\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000}
\pgfsetstrokecolor{dialinecolor}
\draw (-21.506300\du,7.100000\du)--(-21.506300\du,11.100000\du)--(-20.806300\du,11.100000\du)--(-20.806300\du,7.100000\du)--cycle;
\pgfsetlinewidth{0.050000\du}
\pgfsetdash{}{0pt}
\pgfsetdash{{0.400000\du}{0.400000\du}}{0\du}
\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000}
\pgfsetstrokecolor{dialinecolor}
\draw (-11.561300\du,5.800000\du)--(-11.561300\du,10.250000\du);
\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000}
\pgfsetstrokecolor{dialinecolor}
\draw (-11.561300\du,13.250000\du)--(-11.561300\du,14.100000\du);
\pgfsetlinewidth{0.100000\du}
\pgfsetdash{}{0pt}
\definecolor{dialinecolor}{rgb}{1.000000, 1.000000, 1.000000}
\pgfsetfillcolor{dialinecolor}
\fill (-11.911300\du,10.250000\du)--(-11.911300\du,13.250000\du)--(-11.211300\du,13.250000\du)--(-11.211300\du,10.250000\du)--cycle;
\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000}
\pgfsetstrokecolor{dialinecolor}
\draw (-11.911300\du,10.250000\du)--(-11.911300\du,13.250000\du)--(-11.211300\du,13.250000\du)--(-11.211300\du,10.250000\du)--cycle;
\pgfsetlinewidth{0.100000\du}
\pgfsetbuttcap
\pgfsetdash{}{0pt}
{
\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000}
\pgfsetfillcolor{dialinecolor}
% was here!!!
\pgfsetarrowsstart{latex}
\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000}
\pgfsetstrokecolor{dialinecolor}
\draw (-21.800000\du,8.550000\du)--(-27.550000\du,8.550000\du);
}
% setfont left to latex
\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000}
\pgfsetstrokecolor{dialinecolor}
\node at (-24.750000\du,8.000000\du){Ouvrir document};
% setfont left to latex
\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000}
\pgfsetstrokecolor{dialinecolor}
\node[anchor=west] at (-19.950000\du,8.350000\du){Analyse du document};
\pgfsetlinewidth{0.100000\du}
\pgfsetbuttcap
\pgfsetdash{}{0pt}
{
\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000}
\pgfsetfillcolor{dialinecolor}
% was here!!!
\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000}
\pgfsetstrokecolor{dialinecolor}
\draw (-12.250000\du,11.000000\du)--(-20.250000\du,11.000000\du);
}
\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000}
\pgfsetstrokecolor{dialinecolor}
\draw (-12.250000\du,11.000000\du)--(-20.250000\du,11.000000\du);
\pgfsetlinewidth{0.100000\du}
\pgfsetdash{}{0pt}
\pgfsetmiterjoin
\pgfsetbuttcap
\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000}
\pgfsetstrokecolor{dialinecolor}
\draw (-13.050000\du,11.250000\du)--(-12.250000\du,11.000000\du)--(-12.250000\du,11.000000\du);
% setfont left to latex
\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000}
\pgfsetstrokecolor{dialinecolor}
\node at (-16.350000\du,10.50000\du){Envoi des données};
% setfont left to latex
\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000}
\pgfsetstrokecolor{dialinecolor}
\node[anchor=west] at (-10.400000\du,12.100000\du){Mise à jour des données};
% setfont left to latex
\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000}
\pgfsetstrokecolor{dialinecolor}
\node[anchor=west] at (-10.400000\du,12.900000\du){de complétion};
\end{tikzpicture}
\relax
\providecommand\hyper@newdestlabel[2]{}
\@setckpt{./draw/filtering_completion}{
\setcounter{page}{5}
\setcounter{equation}{0}
\setcounter{enumi}{0}
\setcounter{enumii}{0}
\setcounter{enumiii}{0}
\setcounter{enumiv}{0}
\setcounter{footnote}{0}
\setcounter{mpfootnote}{0}
\setcounter{part}{0}
\setcounter{chapter}{3}
\setcounter{section}{2}
\setcounter{subsection}{0}
\setcounter{subsubsection}{0}
\setcounter{paragraph}{0}
\setcounter{subparagraph}{0}
\setcounter{figure}{2}
\setcounter{table}{0}
\setcounter{lstnumber}{1}
\setcounter{Item}{0}
\setcounter{Hfootnote}{3}
\setcounter{bookmark@seq@number}{10}
\setcounter{ContinuedFloat}{0}
\setcounter{lstlisting}{0}
\setcounter{section@level}{0}
}
% Graphic for TeX using PGF
% Title: /home/maximilien/INSA/alambic/report/draw/filtering_completion.dia
% Creator: Dia v0.97.3
% CreationDate: Wed Apr 29 09:04:35 2015
% For: maximilien
% \usepackage{tikz}
% The following commands are not supported in PSTricks at present
% We define them conditionally, so when they are implemented,
% this pgf file will use them.
\ifx\du\undefined
\newlength{\du}
\fi
\setlength{\du}{15\unitlength}
\begin{tikzpicture}
\pgftransformxscale{1.000000}
\pgftransformyscale{-1.000000}
\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000}
\pgfsetstrokecolor{dialinecolor}
\definecolor{dialinecolor}{rgb}{1.000000, 1.000000, 1.000000}
\pgfsetfillcolor{dialinecolor}
\pgfsetlinewidth{0.100000\du}
\pgfsetdash{}{0pt}
\definecolor{dialinecolor}{rgb}{1.000000, 1.000000, 1.000000}
\pgfsetfillcolor{dialinecolor}
\pgfpathellipse{\pgfpoint{-28.650000\du}{2.050000\du}}{\pgfpoint{0.300000\du}{0\du}}{\pgfpoint{0\du}{0.300000\du}}
\pgfusepath{fill}
\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000}
\pgfsetstrokecolor{dialinecolor}
\pgfpathellipse{\pgfpoint{-28.650000\du}{2.050000\du}}{\pgfpoint{0.300000\du}{0\du}}{\pgfpoint{0\du}{0.300000\du}}
\pgfusepath{stroke}
\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000}
\pgfsetstrokecolor{dialinecolor}
\draw (-29.850000\du,2.650000\du)--(-27.450000\du,2.650000\du);
\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000}
\pgfsetstrokecolor{dialinecolor}
\draw (-28.650000\du,2.350000\du)--(-28.650000\du,3.850000\du);
\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000}
\pgfsetstrokecolor{dialinecolor}
\draw (-28.650000\du,3.850000\du)--(-29.850000\du,5.150000\du);
\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000}
\pgfsetstrokecolor{dialinecolor}
\draw (-28.650000\du,3.850000\du)--(-27.450000\du,5.150000\du);
% setfont left to latex
\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000}
\pgfsetstrokecolor{dialinecolor}
\node at (-28.650000\du,6.345000\du){Utilisateur};
\pgfsetlinewidth{0.100000\du}
\pgfsetdash{}{0pt}
\definecolor{dialinecolor}{rgb}{1.000000, 1.000000, 1.000000}
\pgfsetfillcolor{dialinecolor}
\fill (-21.300000\du,4.400000\du)--(-21.300000\du,5.800000\du)--(-11.822500\du,5.800000\du)--(-11.822500\du,4.400000\du)--cycle;
\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000}
\pgfsetstrokecolor{dialinecolor}
\draw (-21.300000\du,4.400000\du)--(-21.300000\du,5.800000\du)--(-11.822500\du,5.800000\du)--(-11.822500\du,4.400000\du)--cycle;
% setfont left to latex
\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000}
\pgfsetstrokecolor{dialinecolor}
\node at (-16.561250\du,5.350000\du){CompletionProvider};
\pgfsetlinewidth{0.050000\du}
\pgfsetdash{}{0pt}
\pgfsetdash{{0.400000\du}{0.400000\du}}{0\du}
\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000}
\pgfsetstrokecolor{dialinecolor}
\draw (-28.650000\du,6.550000\du)--(-28.650000\du,7.750000\du);
\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000}
\pgfsetstrokecolor{dialinecolor}
\draw (-28.650000\du,10.750000\du)--(-28.650000\du,11.900000\du);
\pgfsetlinewidth{0.100000\du}
\pgfsetdash{}{0pt}
\definecolor{dialinecolor}{rgb}{1.000000, 1.000000, 1.000000}
\pgfsetfillcolor{dialinecolor}
\fill (-29.000000\du,7.750000\du)--(-29.000000\du,10.750000\du)--(-28.300000\du,10.750000\du)--(-28.300000\du,7.750000\du)--cycle;
\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000}
\pgfsetstrokecolor{dialinecolor}
\draw (-29.000000\du,7.750000\du)--(-29.000000\du,10.750000\du)--(-28.300000\du,10.750000\du)--(-28.300000\du,7.750000\du)--cycle;
\pgfsetlinewidth{0.050000\du}
\pgfsetdash{}{0pt}
\pgfsetdash{{0.400000\du}{0.400000\du}}{0\du}
\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000}
\pgfsetstrokecolor{dialinecolor}
\draw (-16.561300\du,5.800000\du)--(-16.561300\du,7.900000\du);
\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000}
\pgfsetstrokecolor{dialinecolor}
\draw (-16.561300\du,10.900000\du)--(-16.561300\du,12.000000\du);
\pgfsetlinewidth{0.100000\du}
\pgfsetdash{}{0pt}
\definecolor{dialinecolor}{rgb}{1.000000, 1.000000, 1.000000}
\pgfsetfillcolor{dialinecolor}
\fill (-16.911300\du,7.900000\du)--(-16.911300\du,10.900000\du)--(-16.211300\du,10.900000\du)--(-16.211300\du,7.900000\du)--cycle;
\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000}
\pgfsetstrokecolor{dialinecolor}
\draw (-16.911300\du,7.900000\du)--(-16.911300\du,10.900000\du)--(-16.211300\du,10.900000\du)--(-16.211300\du,7.900000\du)--cycle;
\pgfsetlinewidth{0.100000\du}
\pgfsetbuttcap
\pgfsetdash{}{0pt}
{
\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000}
\pgfsetfillcolor{dialinecolor}
% was here!!!
\pgfsetarrowsstart{latex}
\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000}
\pgfsetstrokecolor{dialinecolor}
\draw (-17.493800\du,8.250000\du)--(-27.500000\du,8.200000\du);
}
% setfont left to latex
\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000}
\pgfsetstrokecolor{dialinecolor}
\node at (-22.618800\du,7.775000\du){Demande de complétion};
% setfont left to latex
\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000}
\pgfsetstrokecolor{dialinecolor}
\node[anchor=west] at (-15.600000\du,9.450000\du){Filtrage des données};
\pgfsetlinewidth{0.100000\du}
\pgfsetbuttcap
\pgfsetdash{}{0pt}
{
\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000}
\pgfsetfillcolor{dialinecolor}
% was here!!!
\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000}
\pgfsetstrokecolor{dialinecolor}
\draw (-27.500000\du,10.600000\du)--(-17.593800\du,10.550000\du);
}
\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000}
\pgfsetstrokecolor{dialinecolor}
\draw (-27.500000\du,10.600000\du)--(-17.593800\du,10.550000\du);
\pgfsetlinewidth{0.100000\du}
\pgfsetdash{}{0pt}
\pgfsetmiterjoin
\pgfsetbuttcap
\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000}
\pgfsetstrokecolor{dialinecolor}
\draw (-26.701272\du,10.345965\du)--(-27.500000\du,10.600000\du)--(-27.500000\du,10.600000\du);
% setfont left to latex
\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000}
\pgfsetstrokecolor{dialinecolor}
\node at (-22.368800\du,10.125000\du){Envoi des données};
\end{tikzpicture}
\relax
\providecommand\hyper@newdestlabel[2]{}
\@setckpt{./draw/multiple_doc_completion}{
\setcounter{page}{6}
\setcounter{equation}{0}
\setcounter{enumi}{0}
\setcounter{enumii}{0}
\setcounter{enumiii}{0}
\setcounter{enumiv}{0}
\setcounter{footnote}{0}
\setcounter{mpfootnote}{0}
\setcounter{part}{0}
\setcounter{chapter}{3}
\setcounter{section}{3}
\setcounter{subsection}{0}
\setcounter{subsubsection}{0}
\setcounter{paragraph}{0}
\setcounter{subparagraph}{0}
\setcounter{figure}{3}
\setcounter{table}{0}
\setcounter{lstnumber}{1}
\setcounter{Item}{0}
\setcounter{Hfootnote}{3}
\setcounter{bookmark@seq@number}{11}
\setcounter{ContinuedFloat}{0}
\setcounter{lstlisting}{0}
\setcounter{section@level}{0}
}
% Graphic for TeX using PGF
% Title: /home/maximilien/INSA/alambic/report/draw/multiple_doc_completion.dia
% Creator: Dia v0.97.3
% CreationDate: Wed Apr 29 09:27:53 2015
% For: maximilien
% \usepackage{tikz}
% The following commands are not supported in PSTricks at present
% We define them conditionally, so when they are implemented,
% this pgf file will use them.
\ifx\du\undefined
\newlength{\du}
\fi
\setlength{\du}{15\unitlength}
\begin{tikzpicture}
\pgftransformxscale{1.000000}
\pgftransformyscale{-1.000000}
\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000}
\pgfsetstrokecolor{dialinecolor}
\definecolor{dialinecolor}{rgb}{1.000000, 1.000000, 1.000000}
\pgfsetfillcolor{dialinecolor}
\pgfsetlinewidth{0.100000\du}
\pgfsetdash{}{0pt}
\definecolor{dialinecolor}{rgb}{1.000000, 1.000000, 1.000000}
\pgfsetfillcolor{dialinecolor}
\pgfpathellipse{\pgfpoint{-28.150000\du}{2.050000\du}}{\pgfpoint{0.300000\du}{0\du}}{\pgfpoint{0\du}{0.300000\du}}
\pgfusepath{fill}
\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000}
\pgfsetstrokecolor{dialinecolor}
\pgfpathellipse{\pgfpoint{-28.150000\du}{2.050000\du}}{\pgfpoint{0.300000\du}{0\du}}{\pgfpoint{0\du}{0.300000\du}}
\pgfusepath{stroke}
\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000}
\pgfsetstrokecolor{dialinecolor}
\draw (-29.350000\du,2.650000\du)--(-26.950000\du,2.650000\du);
\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000}
\pgfsetstrokecolor{dialinecolor}
\draw (-28.150000\du,2.350000\du)--(-28.150000\du,3.850000\du);
\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000}
\pgfsetstrokecolor{dialinecolor}
\draw (-28.150000\du,3.850000\du)--(-29.350000\du,5.150000\du);
\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000}
\pgfsetstrokecolor{dialinecolor}
\draw (-28.150000\du,3.850000\du)--(-26.950000\du,5.150000\du);
% setfont left to latex
\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000}
\pgfsetstrokecolor{dialinecolor}
\node at (-28.150000\du,6.345000\du){Utilisateur};
\pgfsetlinewidth{0.100000\du}
\pgfsetdash{}{0pt}
\definecolor{dialinecolor}{rgb}{1.000000, 1.000000, 1.000000}
\pgfsetfillcolor{dialinecolor}
\fill (-16.300000\du,4.400000\du)--(-16.300000\du,5.800000\du)--(-6.822500\du,5.800000\du)--(-6.822500\du,4.400000\du)--cycle;
\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000}
\pgfsetstrokecolor{dialinecolor}
\draw (-16.300000\du,4.400000\du)--(-16.300000\du,5.800000\du)--(-6.822500\du,5.800000\du)--(-6.822500\du,4.400000\du)--cycle;
% setfont left to latex
\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000}
\pgfsetstrokecolor{dialinecolor}
\node at (-11.561250\du,5.350000\du){CompletionProvider};
\pgfsetlinewidth{0.050000\du}
\pgfsetdash{}{0pt}
\pgfsetdash{{0.400000\du}{0.400000\du}}{0\du}
\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000}
\pgfsetstrokecolor{dialinecolor}
\draw (-27.950000\du,6.700000\du)--(-27.950000\du,7.400000\du);
\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000}
\pgfsetstrokecolor{dialinecolor}
\draw (-27.950000\du,9.400000\du)--(-27.950000\du,19.000000\du);
\pgfsetlinewidth{0.100000\du}
\pgfsetdash{}{0pt}
\definecolor{dialinecolor}{rgb}{1.000000, 1.000000, 1.000000}
\pgfsetfillcolor{dialinecolor}
\fill (-28.300000\du,7.400000\du)--(-28.300000\du,9.400000\du)--(-27.600000\du,9.400000\du)--(-27.600000\du,7.400000\du)--cycle;
\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000}
\pgfsetstrokecolor{dialinecolor}
\draw (-28.300000\du,7.400000\du)--(-28.300000\du,9.400000\du)--(-27.600000\du,9.400000\du)--(-27.600000\du,7.400000\du)--cycle;
\pgfsetlinewidth{0.100000\du}
\pgfsetdash{}{0pt}
\definecolor{dialinecolor}{rgb}{1.000000, 1.000000, 1.000000}
\pgfsetfillcolor{dialinecolor}
\fill (-23.700000\du,4.350000\du)--(-23.700000\du,5.750000\du)--(-18.612500\du,5.750000\du)--(-18.612500\du,4.350000\du)--cycle;
\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000}
\pgfsetstrokecolor{dialinecolor}
\draw (-23.700000\du,4.350000\du)--(-23.700000\du,5.750000\du)--(-18.612500\du,5.750000\du)--(-18.612500\du,4.350000\du)--cycle;
% setfont left to latex
\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000}
\pgfsetstrokecolor{dialinecolor}
\node at (-21.156250\du,5.300000\du){Document};
\pgfsetlinewidth{0.050000\du}
\pgfsetdash{}{0pt}
\pgfsetdash{{0.400000\du}{0.400000\du}}{0\du}
\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000}
\pgfsetstrokecolor{dialinecolor}
\draw (-21.000000\du,5.900000\du)--(-21.000000\du,9.405599\du);
\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000}
\pgfsetstrokecolor{dialinecolor}
\draw (-21.000000\du,11.405599\du)--(-21.000000\du,13.450000\du);
\pgfsetlinewidth{0.100000\du}
\pgfsetdash{}{0pt}
\definecolor{dialinecolor}{rgb}{1.000000, 1.000000, 1.000000}
\pgfsetfillcolor{dialinecolor}
\fill (-21.350000\du,9.405599\du)--(-21.350000\du,11.405599\du)--(-20.650000\du,11.405599\du)--(-20.650000\du,9.405599\du)--cycle;
\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000}
\pgfsetstrokecolor{dialinecolor}
\draw (-21.350000\du,9.405599\du)--(-21.350000\du,11.405599\du)--(-20.650000\du,11.405599\du)--(-20.650000\du,9.405599\du)--cycle;
\pgfsetlinewidth{0.050000\du}
\pgfsetdash{}{0pt}
\pgfsetdash{{0.400000\du}{0.400000\du}}{0\du}
\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000}
\pgfsetstrokecolor{dialinecolor}
\draw (-11.411300\du,5.950000\du)--(-11.411300\du,11.405599\du);
\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000}
\pgfsetstrokecolor{dialinecolor}
\draw (-11.411300\du,12.905599\du)--(-11.411300\du,19.000000\du);
\pgfsetlinewidth{0.100000\du}
\pgfsetdash{}{0pt}
\definecolor{dialinecolor}{rgb}{1.000000, 1.000000, 1.000000}
\pgfsetfillcolor{dialinecolor}
\fill (-11.761300\du,11.405599\du)--(-11.761300\du,12.905599\du)--(-11.061300\du,12.905599\du)--(-11.061300\du,11.405599\du)--cycle;
\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000}
\pgfsetstrokecolor{dialinecolor}
\draw (-11.761300\du,11.405599\du)--(-11.761300\du,12.905599\du)--(-11.061300\du,12.905599\du)--(-11.061300\du,11.405599\du)--cycle;
\pgfsetlinewidth{0.100000\du}
\pgfsetbuttcap
\pgfsetdash{}{0pt}
{
\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000}
\pgfsetfillcolor{dialinecolor}
% was here!!!
\pgfsetarrowsstart{latex}
\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000}
\pgfsetstrokecolor{dialinecolor}
\draw (-21.350000\du,9.405600\du)--(-27.600000\du,9.400000\du);
}
% setfont left to latex
\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000}
\pgfsetstrokecolor{dialinecolor}
\node at (-24.550000\du,8.852800\du){Ouvrir document};
% setfont left to latex
\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000}
\pgfsetstrokecolor{dialinecolor}
\node[anchor=west] at (-20.300000\du,10.200000\du){Analyse du document};
\pgfsetlinewidth{0.100000\du}
\pgfsetbuttcap
\pgfsetdash{}{0pt}
{
\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000}
\pgfsetfillcolor{dialinecolor}
% was here!!!
\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000}
\pgfsetstrokecolor{dialinecolor}
\draw (-11.761300\du,11.405599\du)--(-20.650000\du,11.405600\du);
}
\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000}
\pgfsetstrokecolor{dialinecolor}
\draw (-11.761300\du,11.405599\du)--(-20.650000\du,11.405600\du);
\pgfsetlinewidth{0.100000\du}
\pgfsetdash{}{0pt}
\pgfsetmiterjoin
\pgfsetbuttcap
\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000}
\pgfsetstrokecolor{dialinecolor}
\draw (-12.561300\du,11.655599\du)--(-11.761300\du,11.405599\du)--(-11.761300\du,11.405599\du);
% setfont left to latex
\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000}
\pgfsetstrokecolor{dialinecolor}
\node at (-16.350000\du,12.205600\du){Envoi des données};
% setfont left to latex
\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000}
\pgfsetstrokecolor{dialinecolor}
\node[anchor=west] at (-10.550000\du,11.900000\du){Mise à jour des données};
% setfont left to latex
\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000}
\pgfsetstrokecolor{dialinecolor}
\node[anchor=west] at (-10.550000\du,12.700000\du){de complétion};
\pgfsetlinewidth{0.050000\du}
\pgfsetdash{}{0pt}
\pgfsetdash{{0.400000\du}{0.400000\du}}{0\du}
\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000}
\pgfsetstrokecolor{dialinecolor}
\draw (-21.000000\du,12.450000\du)--(-21.000000\du,12.950000\du);
\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000}
\pgfsetstrokecolor{dialinecolor}
\draw (-21.000000\du,16.950000\du)--(-21.000000\du,18.950000\du);
\pgfsetlinewidth{0.100000\du}
\pgfsetdash{}{0pt}
\definecolor{dialinecolor}{rgb}{1.000000, 1.000000, 1.000000}
\pgfsetfillcolor{dialinecolor}
\fill (-21.350000\du,12.950000\du)--(-21.350000\du,16.950000\du)--(-20.650000\du,16.950000\du)--(-20.650000\du,12.950000\du)--cycle;
\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000}
\pgfsetstrokecolor{dialinecolor}
\draw (-21.350000\du,12.950000\du)--(-21.350000\du,16.950000\du)--(-20.650000\du,16.950000\du)--(-20.650000\du,12.950000\du)--cycle;
\pgfsetlinewidth{0.100000\du}
\pgfsetbuttcap
\pgfsetdash{}{0pt}
\pgfsetdash{{0.400000\du}{0.400000\du}}{0\du}
{
\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000}
\pgfsetfillcolor{dialinecolor}
% was here!!!
\pgfsetarrowsstart{latex}
\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000}
\pgfsetstrokecolor{dialinecolor}
\draw (-20.650000\du,12.950000\du)--(-11.761300\du,12.905599\du);
}
% setfont left to latex
% setfont left to latex
\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000}
\pgfsetstrokecolor{dialinecolor}
\node[anchor=west] at (-10.600000\du,17.715600\du){Mise à jour des données};
% setfont left to latex
\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000}
\pgfsetstrokecolor{dialinecolor}
\node[anchor=west] at (-10.600000\du,18.515600\du){de complétion};
\pgfsetlinewidth{0.050000\du}
\pgfsetdash{{0.400000\du}{0.400000\du}}{0\du}
\pgfsetdash{{0.400000\du}{0.400000\du}}{0\du}
\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000}
\pgfsetstrokecolor{dialinecolor}
\draw (-11.411300\du,12.905599\du)--(-11.411300\du,16.950000\du);
\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000}
\pgfsetstrokecolor{dialinecolor}
\draw (-11.411300\du,18.450000\du)--(-11.411300\du,19.055599\du);
\pgfsetlinewidth{0.100000\du}
\pgfsetdash{}{0pt}
\definecolor{dialinecolor}{rgb}{1.000000, 1.000000, 1.000000}
\pgfsetfillcolor{dialinecolor}
\fill (-11.761300\du,16.950000\du)--(-11.761300\du,18.450000\du)--(-11.061300\du,18.450000\du)--(-11.061300\du,16.950000\du)--cycle;
\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000}
\pgfsetstrokecolor{dialinecolor}
\draw (-11.761300\du,16.950000\du)--(-11.761300\du,18.450000\du)--(-11.061300\du,18.450000\du)--(-11.061300\du,16.950000\du)--cycle;
% setfont left to latex
\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000}
\pgfsetstrokecolor{dialinecolor}
\node[anchor=west] at (-20.150000\du,14.465600\du){Cherche des fichiers .tex};
% setfont left to latex
\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000}
\pgfsetstrokecolor{dialinecolor}
\node[anchor=west] at (-20.150000\du,15.265600\du){dans le même dossier};
% setfont left to latex
\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000}
\pgfsetstrokecolor{dialinecolor}
\node[anchor=west] at (-20.150000\du,16.065600\du){et les analyse};
\pgfsetlinewidth{0.100000\du}
\pgfsetbuttcap
\pgfsetdash{}{0pt}
{
\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000}
\pgfsetfillcolor{dialinecolor}
% was here!!!
\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000}
\pgfsetstrokecolor{dialinecolor}
\draw (-11.761300\du,16.950000\du)--(-20.650000\du,16.950000\du);
}
\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000}
\pgfsetstrokecolor{dialinecolor}
\draw (-11.761300\du,16.950000\du)--(-20.650000\du,16.950000\du);
\pgfsetlinewidth{0.100000\du}
\pgfsetdash{}{0pt}
\pgfsetmiterjoin
\pgfsetbuttcap
\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000}
\pgfsetstrokecolor{dialinecolor}
\draw (-12.561300\du,17.200000\du)--(-11.761300\du,16.950000\du)--(-11.761300\du,16.950000\du);
% setfont left to latex
\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000}
\pgfsetstrokecolor{dialinecolor}
\node at (-16.300000\du,17.935000\du){Envoi des données};
\end{tikzpicture}
\relax
\providecommand\hyper@newdestlabel[2]{}
\@setckpt{./draw/uml_completion_structure}{
\setcounter{page}{4}
\setcounter{equation}{0}
\setcounter{enumi}{0}
\setcounter{enumii}{0}
\setcounter{enumiii}{0}
\setcounter{enumiv}{0}
\setcounter{footnote}{0}
\setcounter{mpfootnote}{0}
\setcounter{part}{0}
\setcounter{chapter}{3}
\setcounter{section}{1}
\setcounter{subsection}{1}
\setcounter{subsubsection}{0}
\setcounter{paragraph}{0}
\setcounter{subparagraph}{0}
\setcounter{figure}{1}
\setcounter{table}{0}
\setcounter{lstnumber}{1}
\setcounter{Item}{0}
\setcounter{Hfootnote}{3}
\setcounter{bookmark@seq@number}{9}
\setcounter{ContinuedFloat}{0}
\setcounter{lstlisting}{0}
\setcounter{section@level}{0}
}
% Graphic for TeX using PGF
% Title: /home/maximilien/INSA/alambic/report/draw/uml_completion_structure.dia
% Creator: Dia v0.97.3
% CreationDate: Wed Apr 29 09:30:33 2015
% For: maximilien
% \usepackage{tikz}
% The following commands are not supported in PSTricks at present
% We define them conditionally, so when they are implemented,
% this pgf file will use them.
\ifx\du\undefined
\newlength{\du}
\fi
\setlength{\du}{15\unitlength}
\begin{tikzpicture}
\pgftransformxscale{1.000000}
\pgftransformyscale{-1.000000}
\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000}
\pgfsetstrokecolor{dialinecolor}
\definecolor{dialinecolor}{rgb}{1.000000, 1.000000, 1.000000}
\pgfsetfillcolor{dialinecolor}
\pgfsetlinewidth{0.150000\du}
\pgfsetdash{}{0pt}
\definecolor{dialinecolor}{rgb}{1.000000, 1.000000, 1.000000}
\pgfsetfillcolor{dialinecolor}
\fill (1.100000\du,1.650000\du)--(1.100000\du,23.800000\du)--(19.850000\du,23.800000\du)--(19.850000\du,1.650000\du)--cycle;
\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000}
\pgfsetstrokecolor{dialinecolor}
\draw (1.100000\du,1.650000\du)--(1.100000\du,23.800000\du)--(19.850000\du,23.800000\du)--(19.850000\du,1.650000\du)--cycle;
\definecolor{dialinecolor}{rgb}{1.000000, 1.000000, 1.000000}
\pgfsetfillcolor{dialinecolor}
\fill (1.100000\du,0.650000\du)--(1.100000\du,1.650000\du)--(8.230000\du,1.650000\du)--(8.230000\du,0.650000\du)--cycle;
\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000}
\pgfsetstrokecolor{dialinecolor}
\draw (1.100000\du,0.650000\du)--(1.100000\du,1.650000\du)--(8.230000\du,1.650000\du)--(8.230000\du,0.650000\du)--cycle;
% setfont left to latex
\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000}
\pgfsetstrokecolor{dialinecolor}
\node[anchor=west] at (1.200000\du,1.300000\du){CompletionProvider};
\pgfsetlinewidth{0.150000\du}
\pgfsetdash{}{0pt}
\definecolor{dialinecolor}{rgb}{1.000000, 1.000000, 1.000000}
\pgfsetfillcolor{dialinecolor}
\fill (2.200000\du,2.450000\du)--(2.200000\du,4.650000\du)--(12.322500\du,4.650000\du)--(12.322500\du,2.450000\du)--cycle;
\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000}
\pgfsetstrokecolor{dialinecolor}
\draw (2.200000\du,2.450000\du)--(2.200000\du,4.650000\du)--(12.322500\du,4.650000\du)--(12.322500\du,2.450000\du)--cycle;
% setfont left to latex
\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000}
\pgfsetstrokecolor{dialinecolor}
\node at (7.261250\du,3.250000\du){<<Command>>};
% setfont left to latex
\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000}
\pgfsetstrokecolor{dialinecolor}
\node at (7.261250\du,4.200000\du){CompletionCommand};
\definecolor{dialinecolor}{rgb}{1.000000, 1.000000, 1.000000}
\pgfsetfillcolor{dialinecolor}
\fill (2.200000\du,4.650000\du)--(2.200000\du,6.450000\du)--(12.322500\du,6.450000\du)--(12.322500\du,4.650000\du)--cycle;
\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000}
\pgfsetstrokecolor{dialinecolor}
\draw (2.200000\du,4.650000\du)--(2.200000\du,6.450000\du)--(12.322500\du,6.450000\du)--(12.322500\du,4.650000\du)--cycle;
% setfont left to latex
\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000}
\pgfsetstrokecolor{dialinecolor}
\node[anchor=west] at (2.375000\du,5.350000\du){+name: string};
% setfont left to latex
\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000}
\pgfsetstrokecolor{dialinecolor}
\node[anchor=west] at (2.375000\du,6.050000\du){+package: string?};
\pgfsetlinewidth{0.150000\du}
\pgfsetdash{}{0pt}
\definecolor{dialinecolor}{rgb}{1.000000, 1.000000, 1.000000}
\pgfsetfillcolor{dialinecolor}
\fill (5.125000\du,10.045000\du)--(5.125000\du,12.245000\du)--(15.247500\du,12.245000\du)--(15.247500\du,10.045000\du)--cycle;
\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000}
\pgfsetstrokecolor{dialinecolor}
\draw (5.125000\du,10.045000\du)--(5.125000\du,12.245000\du)--(15.247500\du,12.245000\du)--(15.247500\du,10.045000\du)--cycle;
% setfont left to latex
\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000}
\pgfsetstrokecolor{dialinecolor}
\node at (10.186250\du,10.845000\du){<<Argument>>};
% setfont left to latex
\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000}
\pgfsetstrokecolor{dialinecolor}
\node at (10.186250\du,11.795000\du){CompletionArgument};
\definecolor{dialinecolor}{rgb}{1.000000, 1.000000, 1.000000}
\pgfsetfillcolor{dialinecolor}
\fill (5.125000\du,12.245000\du)--(5.125000\du,14.045000\du)--(15.247500\du,14.045000\du)--(15.247500\du,12.245000\du)--cycle;
\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000}
\pgfsetstrokecolor{dialinecolor}
\draw (5.125000\du,12.245000\du)--(5.125000\du,14.045000\du)--(15.247500\du,14.045000\du)--(15.247500\du,12.245000\du)--cycle;
% setfont left to latex
\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000}
\pgfsetstrokecolor{dialinecolor}
\node[anchor=west] at (5.300000\du,12.945000\du){+label: string};
% setfont left to latex
\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000}
\pgfsetstrokecolor{dialinecolor}
\node[anchor=west] at (5.300000\du,13.645000\du){+optional: bool};
\pgfsetlinewidth{0.100000\du}
\pgfsetdash{}{0pt}
\pgfsetmiterjoin
\pgfsetbuttcap
{
\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000}
\pgfsetfillcolor{dialinecolor}
% was here!!!
\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000}
\pgfsetstrokecolor{dialinecolor}
\draw (10.186234\du,9.969720\du)--(10.186222\du,8.350000\du)--(7.261250\du,8.350000\du)--(7.261250\du,6.523779\du);
}
\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000}
\pgfsetstrokecolor{dialinecolor}
\draw (10.186225\du,8.711141\du)--(10.186222\du,8.350000\du)--(7.261250\du,8.350000\du)--(7.261250\du,6.523779\du);
\pgfsetdash{}{0pt}
\pgfsetmiterjoin
\pgfsetbuttcap
\definecolor{dialinecolor}{rgb}{1.000000, 1.000000, 1.000000}
\pgfsetfillcolor{dialinecolor}
\fill (10.186234\du,9.969720\du)--(9.946229\du,9.269722\du)--(10.186224\du,8.569720\du)--(10.426229\du,9.269718\du)--cycle;
\pgfsetlinewidth{0.100000\du}
\pgfsetdash{}{0pt}
\pgfsetmiterjoin
\pgfsetbuttcap
\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000}
\pgfsetstrokecolor{dialinecolor}
\draw (10.186234\du,9.969720\du)--(9.946229\du,9.269722\du)--(10.186224\du,8.569720\du)--(10.426229\du,9.269718\du)--cycle;
% setfont left to latex
\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000}
\pgfsetstrokecolor{dialinecolor}
\node at (8.723736\du,8.000000\du){args};
\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000}
\pgfsetstrokecolor{dialinecolor}
\node[anchor=west] at (10.736234\du,9.769720\du){0,n};
\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000}
\pgfsetstrokecolor{dialinecolor}
\node[anchor=west] at (7.461250\du,7.123779\du){0,n};
\pgfsetlinewidth{0.150000\du}
\pgfsetdash{}{0pt}
\definecolor{dialinecolor}{rgb}{1.000000, 1.000000, 1.000000}
\pgfsetfillcolor{dialinecolor}
\fill (10.375000\du,17.745000\du)--(10.375000\du,19.945000\du)--(19.345000\du,19.945000\du)--(19.345000\du,17.745000\du)--cycle;
\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000}
\pgfsetstrokecolor{dialinecolor}
\draw (10.375000\du,17.745000\du)--(10.375000\du,19.945000\du)--(19.345000\du,19.945000\du)--(19.345000\du,17.745000\du)--cycle;
% setfont left to latex
\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000}
\pgfsetstrokecolor{dialinecolor}
\node at (14.860000\du,18.545000\du){<<Choice>>};
% setfont left to latex
\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000}
\pgfsetstrokecolor{dialinecolor}
\node at (14.860000\du,19.495000\du){CompletionChoice};
\definecolor{dialinecolor}{rgb}{1.000000, 1.000000, 1.000000}
\pgfsetfillcolor{dialinecolor}
\fill (10.375000\du,19.945000\du)--(10.375000\du,23.345000\du)--(19.345000\du,23.345000\du)--(19.345000\du,19.945000\du)--cycle;
\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000}
\pgfsetstrokecolor{dialinecolor}
\draw (10.375000\du,19.945000\du)--(10.375000\du,23.345000\du)--(19.345000\du,23.345000\du)--(19.345000\du,19.945000\du)--cycle;
% setfont left to latex
\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000}
\pgfsetstrokecolor{dialinecolor}
\node[anchor=west] at (10.550000\du,20.645000\du){+name: string};
% setfont left to latex
\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000}
\pgfsetstrokecolor{dialinecolor}
\node[anchor=west] at (10.550000\du,21.445000\du){+package: string?};
% setfont left to latex
\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000}
\pgfsetstrokecolor{dialinecolor}
\node[anchor=west] at (10.550000\du,22.245000\du){+insert: string?};
% setfont left to latex
\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000}
\pgfsetstrokecolor{dialinecolor}
\node[anchor=west] at (10.550000\du,22.905000\du){+insert\_after: string?};
\pgfsetlinewidth{0.100000\du}
\pgfsetdash{}{0pt}
\pgfsetmiterjoin
\pgfsetbuttcap
{
\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000}
\pgfsetfillcolor{dialinecolor}
% was here!!!
\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000}
\pgfsetstrokecolor{dialinecolor}
\draw (14.860000\du,17.670292\du)--(14.860000\du,16.100000\du)--(10.186225\du,16.100000\du)--(10.186237\du,14.112100\du);
}
\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000}
\pgfsetstrokecolor{dialinecolor}
\draw (14.860000\du,16.411713\du)--(14.860000\du,16.100000\du)--(10.186225\du,16.100000\du)--(10.186237\du,14.112100\du);
\pgfsetdash{}{0pt}
\pgfsetmiterjoin
\pgfsetbuttcap
\definecolor{dialinecolor}{rgb}{1.000000, 1.000000, 1.000000}
\pgfsetfillcolor{dialinecolor}
\fill (14.860000\du,17.670292\du)--(14.620000\du,16.970292\du)--(14.860000\du,16.270292\du)--(15.100000\du,16.970292\du)--cycle;
\pgfsetlinewidth{0.100000\du}
\pgfsetdash{}{0pt}
\pgfsetmiterjoin
\pgfsetbuttcap
\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000}
\pgfsetstrokecolor{dialinecolor}
\draw (14.860000\du,17.670292\du)--(14.620000\du,16.970292\du)--(14.860000\du,16.270292\du)--(15.100000\du,16.970292\du)--cycle;
% setfont left to latex
\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000}
\pgfsetstrokecolor{dialinecolor}
\node at (12.523112\du,15.600000\du){choices};
\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000}
\pgfsetstrokecolor{dialinecolor}
\node[anchor=west] at (15.410000\du,17.470292\du){0,n};
\definecolor{dialinecolor}{rgb}{0.000000, 0.000000, 0.000000}
\pgfsetstrokecolor{dialinecolor}
\node[anchor=west] at (10.386237\du,14.712100\du){0,n};
\end{tikzpicture}