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 2234 deletions
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% STYLE POUR LES EXPOSÉS TECHNIQUES
% 3e année INSA de Rennes
%
% NE PAS MODIFIER
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\usepackage[dvips]{graphicx}
\usepackage[T1]{fontenc}
%\usepackage[latin1]{inputenc}
\usepackage[french]{babel}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Dimensions du document :
\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}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Commande simplifiant l'inclusion de figures :
%------------------------------------------------------------------------------
% \FigureEPS{h,t,b,p}{largeur}{nom_fichier}{titre}{nom_symbolique}
%------------------------------------------------------------------------------
\newcommand{\FigureEPS}[5] {
\begin{figure}[#1]
$$ %pour centrer
\includegraphics[width=#2]{#3}
$$
\caption{#4}
\label{#5}
\end{figure}
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Style du document :
\pagestyle{myheadings}
\bibliographystyle{plain-fr}
\setcounter{tocdepth}{3} % Niveau jusqu'où numéroter les titres (table des mat)
\setcounter{secnumdepth}{3}% Niveau jusqu'où numéroter les titres (dans texte)
\sloppy % Baisse le taux des césures
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
How to contribute to Latexila
==========================
This document is designed for the beginners who want to start to contribute to a Gnome software. Latexila will be taken as an example, but this document can help for many other software from the **Gnome Project**, especially thoses who use `jhbuild`.
Why this document ?
-------------------
We are a small team (3 people) at INSA Rennes, a french engineering school, who happened to work on Latexila.
We were not satisfied with the current documentation provided by the Gnome project, which is well documented but provides no real gothrought.
Goal
----
The goal of this document is to provide a walkthrought as complete as possible of the setup of a Latexila devlopper environement.
We choose Fedora as a starting point because it's the Linux distribution providing the broader support for the Gnome environement.
> The setup (download + first build) take something like 2h, but it's largely waiting time.
Resources
----------
* [The Gnome project website for devloppers](https://developer.gnome.org/)
* [Latexila's page at GNOME.org](https://wiki.gnome.org/Apps/LaTeXila)
* [Jhbuild HOWTO](https://wiki.gnome.org/HowDoI/Jhbuild)
Prerequired
-----------
### Computer
We assume that you have at you disposal a fresh or not-so-broken install of Fedora (21 preferred), and a resonable disk space remaining (more than 10GB). We assume that you have administrator's privileges too.
> The testing was done on a fresh install of Fedora 21 Workstation (64bit) up-to-date as of 18 march 2015
> LaTeXiLa's version is latest
### Human
We assume that you are not afraid of the command line.
You can copy/paste commands in most terminals using 'Ctrl'+'Shift'+'C' and 'Ctrl'+'Shift'+'V'.
The basics
----------
1. Install needed packets (hand picked)
```BASH
sudo yum install git gcc gnome-common gtk3-devel vala gcc-c++ xorg-x11-util-macros mesa-libwayland-egl gtkspell3-devel intltool gtksourceview-devel gobject-introspection-devel lcov
```
Or even if you don't care... #bruteforce
```BASH
sudo yum groupinstall development-libs development-tools gnome-software-development
```
Install Jhbuild
---------------
Inspired from [Jhbuild HOWTO](https://wiki.gnome.org/HowDoI/Jhbuild).
1. Make a shadow clone of the repo
```BASH
git clone --depth=1 git://git.gnome.org/jhbuild
```
2. Install it _no root needed_
```BASH
./autogen.sh --simple-install
make
make install
```
Now you can call `jhbuild` from the command line !
Install latexila using jhbuild
------------------------------
1. Get a config file sample at [swilmet's page](https://people.gnome.org/~swilmet/latexila/jhbuildrc).
2. Put it in ```/home/<user>/.config/jhbuildrc```
3. Either change the place prefix to something different or make sure of access rights for the current user.
> If you don't edit your config, the repositories will be put at ```/home/<user>/<repo>``` and files will be compiled to ```/opt```
4. Get all the dependencies from the git repositories.
This can take a very~ long~ time~ if you have a laptop and a not-so-good internet conection, because some of the repositories are big, like `Glib` or `GTK3`.
> Average time is half an hour on a desktop computer with fiber internet access
```BASH
jhbuild update latexila
```
> If you have an error, just try the choices you are given, one by one and, if needed, hunt the needed packages using `yum search`.
Build Latexila
--------------
1. Install (or check) system dependencies
```BASH
jhbuild sysdeps --install
```
> Jhbuild will ask for root access during the process
2. Building vala
```BASH
jhbuild update vala
jhbuild build vala
```
3. Building the software and all his dependencies
```BASH
jhbuild build latexila
```
> The first build can take up to an hour or even two, depending on how powerfull you workstation is.
> Take a coffe !
4. Building only latexila
If you want to build only latexila, you can do so by using
```BASH
jhbuild buildone latexila
```
This will build the current `master` version.
5. Custom build for testing
```BASH
# into [...]/latexila
jhbuild make
```
Run Latexila
------------
Juste type
```BASH
jhbuild run latexila
```
> You can have a _distribution_ version of latexila by running the usual ```sudo yum install latexila```
\relax
\providecommand\hyper@newdestlabel[2]{}
\bibstyle{plain-fr}
\providecommand\HyperFirstAtBeginDocument{\AtBeginDocument}
\HyperFirstAtBeginDocument{\ifx\hyper@anchor\@undefined
\global\let\oldcontentsline\contentsline
\gdef\contentsline#1#2#3#4{\oldcontentsline{#1}{#2}{#3}}
\global\let\oldnewlabel\newlabel
\gdef\newlabel#1#2{\newlabelxx{#1}#2}
\gdef\newlabelxx#1#2#3#4#5#6{\oldnewlabel{#1}{{#2}{#3}}}
\AtEndDocument{\ifx\hyper@anchor\@undefined
\let\contentsline\oldcontentsline
\let\newlabel\oldnewlabel
\fi}
\fi}
\global\let\hyper@last\relax
\gdef\HyperFirstAtBeginDocument#1{#1}
\providecommand\HyField@AuxAddToFields[1]{}
\providecommand\HyField@AuxAddToCoFields[2]{}
\@input{./lst_config.aux}
\@writefile{toc}{\contentsline {chapter}{\numberline {1}Introduction}{2}{chapter.1}}
\@writefile{lof}{\addvspace {10\p@ }}
\@writefile{lot}{\addvspace {10\p@ }}
\newlabel{cha:Introduction}{{1}{2}{Introduction}{chapter.1}{}}
\@writefile{toc}{\contentsline {section}{\numberline {1.1}Latexila}{2}{section.1.1}}
\newlabel{sec:latexila}{{1.1}{2}{Latexila}{section.1.1}{}}
\@writefile{toc}{\contentsline {chapter}{\numberline {2}\IeC {\'E}tude pratique}{3}{chapter.2}}
\@writefile{lof}{\addvspace {10\p@ }}
\@writefile{lot}{\addvspace {10\p@ }}
\newlabel{cha:etude_pratique}{{2}{3}{Étude pratique}{chapter.2}{}}
\@writefile{toc}{\contentsline {section}{\numberline {2.1}T\IeC {\^a}che \IeC {\`a} r\IeC {\'e}aliser}{3}{section.2.1}}
\newlabel{sec:tache_a_realiser}{{2.1}{3}{Tâche à réaliser}{section.2.1}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {2.1.1}La compl\IeC {\'e}tion dans LaTeXila 2.2}{3}{subsection.2.1.1}}
\newlabel{sub:completion}{{2.1.1}{3}{La complétion dans LaTeXila 2.2}{subsection.2.1.1}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {2.1.2}Une compl\IeC {\'e}tion dynamique}{3}{subsection.2.1.2}}
\newlabel{sub:completion_dyn}{{2.1.2}{3}{Une complétion dynamique}{subsection.2.1.2}{}}
\@input{./draw/doc_opening.aux}
\@input{./draw/uml_completion_structure.aux}
\@writefile{toc}{\contentsline {chapter}{\numberline {3}R\IeC {\'e}alisation}{4}{chapter.3}}
\@writefile{lof}{\addvspace {10\p@ }}
\@writefile{lot}{\addvspace {10\p@ }}
\@writefile{toc}{\contentsline {section}{\numberline {3.1}Int\IeC {\'e}gration d'une recherche au document courant}{4}{section.3.1}}
\providecommand*\caption@xref[2]{\@setref\relax\@undefined{#1}}
\newlabel{fig:doc_opening}{{\caption@xref {fig:doc_opening}{ on input line 94}}{4}{Intégration d'une recherche au document courant}{figure.caption.2}{}}
\@writefile{lof}{\contentsline {figure}{\numberline {3.1}{\ignorespaces Diagramme de s\IeC {\'e}quence d'une analyse de document\relax }}{4}{figure.caption.2}}
\@writefile{toc}{\contentsline {subsection}{\numberline {3.1.1}Invite de compl\IeC {\'e}tion}{4}{subsection.3.1.1}}
\@input{./draw/filtering_completion.aux}
\newlabel{fig:uml_completion_structure}{{\caption@xref {fig:uml_completion_structure}{ on input line 103}}{5}{Invite de complétion}{figure.caption.3}{}}
\@writefile{lof}{\contentsline {figure}{\numberline {3.2}{\ignorespaces Le diagramme UML de la structure de compl\IeC {\'e}tion.\relax }}{5}{figure.caption.3}}
\@writefile{toc}{\contentsline {section}{\numberline {3.2}Int\IeC {\'e}gration d'une recherche \IeC {\`a} plusieurs documents}{5}{section.3.2}}
\@input{./draw/multiple_doc_completion.aux}
\newlabel{fig:filtering_completion}{{\caption@xref {fig:filtering_completion}{ on input line 125}}{6}{Intégration d'une recherche à plusieurs documents}{figure.caption.4}{}}
\@writefile{lof}{\contentsline {figure}{\numberline {3.3}{\ignorespaces Diagramme de s\IeC {\'e}quence d'une demande de compl\IeC {\'e}tion.\relax }}{6}{figure.caption.4}}
\@writefile{toc}{\contentsline {section}{\numberline {3.3}Int\IeC {\'e}gration des fichiers non-ouverts}{6}{section.3.3}}
\newlabel{fig:multiple_doc_completion}{{\caption@xref {fig:multiple_doc_completion}{ on input line 149}}{7}{Intégration des fichiers non-ouverts}{figure.caption.5}{}}
\@writefile{lof}{\contentsline {figure}{\numberline {3.4}{\ignorespaces Diagramme de s\IeC {\'e}quence d'analyse en arri\IeC {\`e}re plan.\relax }}{7}{figure.caption.5}}
\@writefile{toc}{\contentsline {section}{\numberline {3.4}Gestion de projet}{7}{section.3.4}}
\@writefile{toc}{\contentsline {subsection}{\numberline {3.4.1}Git}{7}{subsection.3.4.1}}
\newlabel{sub:git}{{3.4.1}{7}{Git}{subsection.3.4.1}{}}
\@writefile{toc}{\contentsline {chapter}{\numberline {4}Conclusion}{8}{chapter.4}}
\@writefile{lof}{\addvspace {10\p@ }}
\@writefile{lot}{\addvspace {10\p@ }}
\newlabel{sec:remerciements}{{4}{8}{}{chapter.4}{}}
This is pdfTeX, Version 3.1415926-2.5-1.40.14 (TeX Live 2013/Debian) (format=pdflatex 2016.4.28) 2 MAY 2016 08:26
entering extended mode
restricted \write18 enabled.
%&-line parsing enabled.
**index.tex
(./index.tex
LaTeX2e <2011/06/27>
Babel <3.9h> and hyphenation patterns for 4 languages loaded.
(/usr/share/texlive/texmf-dist/tex/latex/base/report.cls
Document Class: report 2007/10/19 v1.4h Standard LaTeX document class
(/usr/share/texlive/texmf-dist/tex/latex/base/size11.clo
File: size11.clo 2007/10/19 v1.4h Standard LaTeX file (size option)
)
\c@part=\count79
\c@chapter=\count80
\c@section=\count81
\c@subsection=\count82
\c@subsubsection=\count83
\c@paragraph=\count84
\c@subparagraph=\count85
\c@figure=\count86
\c@table=\count87
\abovecaptionskip=\skip41
\belowcaptionskip=\skip42
\bibindent=\dimen102
)
(/usr/share/texlive/texmf-dist/tex/latex/base/inputenc.sty
Package: inputenc 2008/03/30 v1.1d Input encoding file
\inpenc@prehook=\toks14
\inpenc@posthook=\toks15
(/usr/share/texlive/texmf-dist/tex/latex/base/utf8.def
File: utf8.def 2008/04/05 v1.1m 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
(/usr/share/texlive/texmf-dist/tex/latex/base/t1enc.dfu
File: t1enc.dfu 2008/04/05 v1.1m UTF-8 support for inputenc
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+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+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+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
(/usr/share/texlive/texmf-dist/tex/latex/base/ot1enc.dfu
File: ot1enc.dfu 2008/04/05 v1.1m UTF-8 support for inputenc
defining Unicode char U+00A1 (decimal 161)
defining Unicode char U+00A3 (decimal 163)
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+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
(/usr/share/texlive/texmf-dist/tex/latex/base/omsenc.dfu
File: omsenc.dfu 2008/04/05 v1.1m 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)
))
(/usr/share/texmf/tex/latex/lm/lmodern.sty
Package: lmodern 2009/10/30 v1.6 Latin Modern Fonts
LaTeX Font Info: Overwriting symbol font `operators' in version `normal'
(Font) OT1/cmr/m/n --> OT1/lmr/m/n on input line 22.
LaTeX Font Info: Overwriting symbol font `letters' in version `normal'
(Font) OML/cmm/m/it --> OML/lmm/m/it on input line 23.
LaTeX Font Info: Overwriting symbol font `symbols' in version `normal'
(Font) OMS/cmsy/m/n --> OMS/lmsy/m/n on input line 24.
LaTeX Font Info: Overwriting symbol font `largesymbols' in version `normal'
(Font) OMX/cmex/m/n --> OMX/lmex/m/n on input line 25.
LaTeX Font Info: Overwriting symbol font `operators' in version `bold'
(Font) OT1/cmr/bx/n --> OT1/lmr/bx/n on input line 26.
LaTeX Font Info: Overwriting symbol font `letters' in version `bold'
(Font) OML/cmm/b/it --> OML/lmm/b/it on input line 27.
LaTeX Font Info: Overwriting symbol font `symbols' in version `bold'
(Font) OMS/cmsy/b/n --> OMS/lmsy/b/n on input line 28.
LaTeX Font Info: Overwriting symbol font `largesymbols' in version `bold'
(Font) OMX/cmex/m/n --> OMX/lmex/m/n on input line 29.
LaTeX Font Info: Overwriting math alphabet `\mathbf' in version `normal'
(Font) OT1/cmr/bx/n --> OT1/lmr/bx/n on input line 31.
LaTeX Font Info: Overwriting math alphabet `\mathsf' in version `normal'
(Font) OT1/cmss/m/n --> OT1/lmss/m/n on input line 32.
LaTeX Font Info: Overwriting math alphabet `\mathit' in version `normal'
(Font) OT1/cmr/m/it --> OT1/lmr/m/it on input line 33.
LaTeX Font Info: Overwriting math alphabet `\mathtt' in version `normal'
(Font) OT1/cmtt/m/n --> OT1/lmtt/m/n on input line 34.
LaTeX Font Info: Overwriting math alphabet `\mathbf' in version `bold'
(Font) OT1/cmr/bx/n --> OT1/lmr/bx/n on input line 35.
LaTeX Font Info: Overwriting math alphabet `\mathsf' in version `bold'
(Font) OT1/cmss/bx/n --> OT1/lmss/bx/n on input line 36.
LaTeX Font Info: Overwriting math alphabet `\mathit' in version `bold'
(Font) OT1/cmr/bx/it --> OT1/lmr/bx/it on input line 37.
LaTeX Font Info: Overwriting math alphabet `\mathtt' in version `bold'
(Font) OT1/cmtt/m/n --> OT1/lmtt/m/n on input line 38.
)
(/usr/share/texlive/texmf-dist/tex/latex/titlesec/titlesec.sty
Package: titlesec 2011/12/15 v2.10.0 Sectioning titles
\ttl@box=\box26
\beforetitleunit=\skip43
\aftertitleunit=\skip44
\ttl@plus=\dimen103
\ttl@minus=\dimen104
\ttl@toksa=\toks16
\titlewidth=\dimen105
\titlewidthlast=\dimen106
\titlewidthfirst=\dimen107
) (./exptech.sty
(/usr/share/texlive/texmf-dist/tex/latex/graphics/graphicx.sty
Package: graphicx 1999/02/16 v1.0f Enhanced LaTeX Graphics (DPC,SPQR)
(/usr/share/texlive/texmf-dist/tex/latex/graphics/keyval.sty
Package: keyval 1999/03/16 v1.13 key=value parser (DPC)
\KV@toks@=\toks17
)
(/usr/share/texlive/texmf-dist/tex/latex/graphics/graphics.sty
Package: graphics 2009/02/05 v1.0o Standard LaTeX Graphics (DPC,SPQR)
(/usr/share/texlive/texmf-dist/tex/latex/graphics/trig.sty
Package: trig 1999/03/16 v1.09 sin cos tan (DPC)
)
(/usr/share/texlive/texmf-dist/tex/latex/latexconfig/graphics.cfg
File: graphics.cfg 2010/04/23 v1.9 graphics configuration of TeX Live
)
Package graphics Info: Driver file: dvips.def on input line 91.
(/usr/share/texlive/texmf-dist/tex/latex/graphics/dvips.def
File: dvips.def 1999/02/16 v3.0i Driver-dependant file (DPC,SPQR)
))
\Gin@req@height=\dimen108
\Gin@req@width=\dimen109
)
(/usr/share/texlive/texmf-dist/tex/latex/base/fontenc.sty
Package: fontenc 2005/09/27 v1.99g Standard LaTeX package
(/usr/share/texlive/texmf-dist/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 43.
)
! Font T1/cmr/m/n/10.95=ecrm1095 at 10.95pt not loadable: Metric (TFM) file not
found.
<to be read again>
relax
l.100 \fontencoding\encodingdefault\selectfont
I wasn't able to read the size data for this font,
so I will ignore the font specification.
[Wizards can fix TFM files using TFtoPL/PLtoTF.]
You might try inserting a different font spec;
e.g., type `I\font<same font id>=<substitute font name>'.
) (/usr/share/texlive/texmf-dist/tex/generic/babel/babel.sty
Package: babel 2013/12/03 3.9h The Babel package
! Package babel Error: Unknown option `french'. Either you misspelled it
(babel) or the language definition file french.ldf was not found
.
See the babel package documentation for explanation.
Type H <return> for immediate help.
...
l.296 \ProcessOptions*
Valid options are: shorthands=, KeepShorthandsActive,
activeacute, activegrave, noconfigs, safe=, main=, math=
headfoot=, strings=, config=, hyphenmap=, or a language name.
! Package babel Error: You haven't specified a language option.
See the babel package documentation for explanation.
Type H <return> for immediate help.
...
l.329 ...ry to proceed from here, type x to quit.}
You need to specify a language, either as a global option
or as an optional argument to the \usepackage command;
You shouldn't try to proceed from here, type x to quit.
)) (/usr/share/texlive/texmf-dist/tex/latex/listings/listings.sty
\lst@mode=\count88
\lst@gtempboxa=\box27
\lst@token=\toks18
\lst@length=\count89
\lst@currlwidth=\dimen110
\lst@column=\count90
\lst@pos=\count91
\lst@lostspace=\dimen111
\lst@width=\dimen112
\lst@newlines=\count92
\lst@lineno=\count93
\lst@maxwidth=\dimen113
(/usr/share/texlive/texmf-dist/tex/latex/listings/lstmisc.sty
File: lstmisc.sty 2013/08/26 1.5b (Carsten Heinz)
\c@lstnumber=\count94
\lst@skipnumbers=\count95
\lst@framebox=\box28
)
(/usr/share/texlive/texmf-dist/tex/latex/listings/listings.cfg
File: listings.cfg 2013/08/26 1.5b listings configuration
))
Package: listings 2013/08/26 1.5b (Carsten Heinz)
(/usr/share/texlive/texmf-dist/tex/latex/hyperref/hyperref.sty
Package: hyperref 2012/11/06 v6.83m Hypertext links for LaTeX
(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/hobsub-hyperref.sty
Package: hobsub-hyperref 2012/05/28 v1.13 Bundle oberdiek, subset hyperref (HO)
(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/hobsub-generic.sty
Package: hobsub-generic 2012/05/28 v1.13 Bundle oberdiek, subset generic (HO)
Package: hobsub 2012/05/28 v1.13 Construct package bundles (HO)
Package: infwarerr 2010/04/08 v1.3 Providing info/warning/error messages (HO)
Package: ltxcmds 2011/11/09 v1.22 LaTeX kernel commands for general use (HO)
Package: ifluatex 2010/03/01 v1.3 Provides the ifluatex switch (HO)
Package ifluatex Info: LuaTeX not detected.
Package: ifvtex 2010/03/01 v1.5 Detect VTeX and its facilities (HO)
Package ifvtex Info: VTeX not detected.
Package: intcalc 2007/09/27 v1.1 Expandable calculations with integers (HO)
Package: ifpdf 2011/01/30 v2.3 Provides the ifpdf switch (HO)
Package ifpdf Info: pdfTeX in PDF mode is detected.
Package: etexcmds 2011/02/16 v1.5 Avoid name clashes with e-TeX commands (HO)
Package etexcmds Info: Could not find \expanded.
(etexcmds) That can mean that you are not using pdfTeX 1.50 or
(etexcmds) that some package has redefined \expanded.
(etexcmds) In the latter case, load this package earlier.
Package: kvsetkeys 2012/04/25 v1.16 Key value parser (HO)
Package: kvdefinekeys 2011/04/07 v1.3 Define keys (HO)
Package: pdftexcmds 2011/11/29 v0.20 Utility functions of pdfTeX for LuaTeX (HO
)
Package pdftexcmds Info: LuaTeX not detected.
Package pdftexcmds Info: \pdf@primitive is available.
Package pdftexcmds Info: \pdf@ifprimitive is available.
Package pdftexcmds Info: \pdfdraftmode found.
Package: pdfescape 2011/11/25 v1.13 Implements pdfTeX's escape features (HO)
Package: bigintcalc 2012/04/08 v1.3 Expandable calculations on big integers (HO
)
Package: bitset 2011/01/30 v1.1 Handle bit-vector datatype (HO)
Package: uniquecounter 2011/01/30 v1.2 Provide unlimited unique counter (HO)
)
Package hobsub Info: Skipping package `hobsub' (already loaded).
Package: letltxmacro 2010/09/02 v1.4 Let assignment for LaTeX macros (HO)
Package: hopatch 2012/05/28 v1.2 Wrapper for package hooks (HO)
Package: xcolor-patch 2011/01/30 xcolor patch
Package: atveryend 2011/06/30 v1.8 Hooks at the very end of document (HO)
Package atveryend Info: \enddocument detected (standard20110627).
Package: atbegshi 2011/10/05 v1.16 At begin shipout hook (HO)
Package: refcount 2011/10/16 v3.4 Data extraction from label references (HO)
Package: hycolor 2011/01/30 v1.7 Color options for hyperref/bookmark (HO)
)
(/usr/share/texlive/texmf-dist/tex/generic/ifxetex/ifxetex.sty
Package: ifxetex 2010/09/12 v0.6 Provides ifxetex conditional
)
(/usr/share/texlive/texmf-dist/tex/latex/oberdiek/auxhook.sty
Package: auxhook 2011/03/04 v1.3 Hooks for auxiliary files (HO)
)
(/usr/share/texlive/texmf-dist/tex/latex/oberdiek/kvoptions.sty
Package: kvoptions 2011/06/30 v3.11 Key value format for package options (HO)
)
\@linkdim=\dimen114
\Hy@linkcounter=\count96
\Hy@pagecounter=\count97
(/usr/share/texlive/texmf-dist/tex/latex/hyperref/pd1enc.def
File: pd1enc.def 2012/11/06 v6.83m Hyperref: PDFDocEncoding definition (HO)
Now handling font encoding PD1 ...
... no UTF-8 mapping file for font encoding PD1
)
\Hy@SavedSpaceFactor=\count98
(/usr/share/texlive/texmf-dist/tex/latex/latexconfig/hyperref.cfg
File: hyperref.cfg 2002/06/06 v1.2 hyperref configuration of TeXLive
)
Package hyperref Info: Hyper figures OFF on input line 4443.
Package hyperref Info: Link nesting OFF on input line 4448.
Package hyperref Info: Hyper index ON on input line 4451.
Package hyperref Info: Plain pages OFF on input line 4458.
Package hyperref Info: Backreferencing OFF on input line 4463.
Package hyperref Info: Implicit mode ON; LaTeX internals redefined.
Package hyperref Info: Bookmarks ON on input line 4688.
\c@Hy@tempcnt=\count99
(/usr/share/texlive/texmf-dist/tex/latex/url/url.sty
\Urlmuskip=\muskip10
Package: url 2013/09/16 ver 3.4 Verb mode for urls, etc.
)
LaTeX Info: Redefining \url on input line 5041.
\XeTeXLinkMargin=\dimen115
\Fld@menulength=\count100
\Field@Width=\dimen116
\Fld@charsize=\dimen117
Package hyperref Info: Hyper figures OFF on input line 6295.
Package hyperref Info: Link nesting OFF on input line 6300.
Package hyperref Info: Hyper index ON on input line 6303.
Package hyperref Info: backreferencing OFF on input line 6310.
Package hyperref Info: Link coloring OFF on input line 6315.
Package hyperref Info: Link coloring with OCG OFF on input line 6320.
Package hyperref Info: PDF/A mode OFF on input line 6325.
LaTeX Info: Redefining \ref on input line 6365.
LaTeX Info: Redefining \pageref on input line 6369.
\Hy@abspage=\count101
\c@Item=\count102
\c@Hfootnote=\count103
)
Package hyperref Message: Driver (autodetected): hpdftex.
(/usr/share/texlive/texmf-dist/tex/latex/hyperref/hpdftex.def
File: hpdftex.def 2012/11/06 v6.83m Hyperref driver for pdfTeX
\Fld@listcount=\count104
\c@bookmark@seq@number=\count105
(/usr/share/texlive/texmf-dist/tex/latex/oberdiek/rerunfilecheck.sty
Package: rerunfilecheck 2011/04/15 v1.7 Rerun checks for auxiliary files (HO)
Package uniquecounter Info: New unique counter `rerunfilecheck' on input line 2
82.
)
\Hy@SectionHShift=\skip45
)
(/usr/share/texlive/texmf-dist/tex/latex/graphics/color.sty
Package: color 2005/11/14 v1.0j Standard LaTeX Color (DPC)
(/usr/share/texlive/texmf-dist/tex/latex/latexconfig/color.cfg
File: color.cfg 2007/01/18 v1.5 color configuration of teTeX/TeXLive
)
Package color Info: Driver file: pdftex.def on input line 130.
(/usr/share/texlive/texmf-dist/tex/latex/pdftex-def/pdftex.def
File: pdftex.def 2011/05/27 v0.06d Graphics/color for pdfTeX
\Gread@gobject=\count106
))
(/usr/share/texlive/texmf-dist/tex/latex/pstricks/pstricks.sty
Package: pstricks 2013/12/12 v0.60 LaTeX wrapper for `PSTricks' (RN,HV)
(/usr/share/texlive/texmf-dist/tex/generic/pstricks/pstricks.tex
(/usr/share/texlive/texmf-dist/tex/generic/xkeyval/pst-xkey.tex
File: pst-xkey.tex 2005/11/25 v1.6 PSTricks specialization of xkeyval (HA)
(/usr/share/texlive/texmf-dist/tex/latex/xkeyval/xkeyval.sty
Package: xkeyval 2012/10/14 v2.6b package option processing (HA)
(/usr/share/texlive/texmf-dist/tex/generic/xkeyval/xkeyval.tex
\XKV@toks=\toks19
\XKV@tempa@toks=\toks20
\XKV@depth=\count107
File: xkeyval.tex 2012/10/14 v2.6b key=value parser (HA)
)))
(/usr/share/texlive/texmf-dist/tex/generic/pstricks/pst-fp.tex
`pst-fp' v0.05, 2010/01/17 (hv)
\pstFP@xs=\count108
\pstFP@xia=\count109
\pstFP@xib=\count110
\pstFP@xfa=\count111
\pstFP@xfb=\count112
\pstFP@rega=\count113
\pstFP@regb=\count114
\pstFP@regs=\count115
\pstFP@times=\count116
)
(/usr/share/texmf/tex/generic/pgf/utilities/pgfutil-common.tex
\pgfutil@everybye=\toks21
)
(/usr/share/texmf/tex/generic/pgf/utilities/pgfkeys.code.tex
\pgfkeys@pathtoks=\toks22
\pgfkeys@temptoks=\toks23
(/usr/share/texmf/tex/generic/pgf/utilities/pgfkeysfiltered.code.tex
\pgfkeys@tmptoks=\toks24
))
(/usr/share/texmf/tex/generic/pgf/utilities/pgffor.code.tex
\pgffor@iter=\dimen118
\pgffor@skip=\dimen119
\pgffor@stack=\toks25
\pgffor@toks=\toks26
)
\psLoopIndex=\count117
`PSTricks' v2.51 <2014/02/03> (tvz)
\pst@dima=\dimen120
\pst@dimb=\dimen121
\pst@dimc=\dimen122
\pst@dimd=\dimen123
\pst@dimg=\dimen124
\pst@dimh=\dimen125
\pst@dimm=\dimen126
\pst@dimn=\dimen127
\pst@dimo=\dimen128
\pst@dimp=\dimen129
\pst@hbox=\box29
\pst@ibox=\box30
\pst@boxg=\box31
\pst@cnta=\count118
\pst@cntb=\count119
\pst@cntc=\count120
\pst@cntd=\count121
\pst@cntg=\count122
\pst@cnth=\count123
\pst@cntm=\count124
\pst@cntn=\count125
\pst@cnto=\count126
\pst@cntp=\count127
\@zero=\count128
\pst@toks=\toks27
(/usr/share/texlive/texmf-dist/tex/generic/pstricks/pstricks.con)
\psunit=\dimen130
\psxunit=\dimen131
\psyunit=\dimen132
\pst@C@@rType=\count129
\pslinewidth=\dimen133
\psk@startLW=\dimen134
\psk@endLW=\dimen135
\pst@customdefs=\toks28
\pslinearc=\dimen136
\pst@symbolStep=\dimen137
\pst@symbolWidth=\dimen138
\pst@symbolLinewidth=\dimen139
\everypsbox=\toks29
\psframesep=\dimen140
\pslabelsep=\dimen141
\sh@wgridXunit=\dimen142
\sh@wgridYunit=\dimen143
\pst@shift=\dimen144
)
File: pstricks.tex 2014/02/03 v2.51 `PSTricks' (tvz,hv)
(/usr/share/texlive/texmf-dist/tex/generic/pstricks/pst-fp.tex)
File: pst-fp.tex 2014/02/03 v2.51 `PST-fp' (hv)
(/usr/share/texmf/tex/latex/xcolor/xcolor.sty
Package: xcolor 2007/01/21 v2.11 LaTeX color extensions (UK)
(/usr/share/texlive/texmf-dist/tex/latex/latexconfig/color.cfg
File: color.cfg 2007/01/18 v1.5 color configuration of teTeX/TeXLive
)
Package xcolor Info: Driver file: pdftex.def on input line 225.
LaTeX Info: Redefining \color on input line 702.
Package xcolor Info: Model `cmy' substituted by `cmy0' on input line 1337.
Package xcolor Info: Model `RGB' extended on input line 1353.
Package xcolor Info: Model `HTML' substituted by `rgb' on input line 1355.
Package xcolor Info: Model `Hsb' substituted by `hsb' on input line 1356.
Package xcolor Info: Model `tHsb' substituted by `hsb' on input line 1357.
Package xcolor Info: Model `HSB' substituted by `hsb' on input line 1358.
Package xcolor Info: Model `Gray' substituted by `gray' on input line 1359.
Package xcolor Info: Model `wave' substituted by `hsb' on input line 1360.
))
(/usr/share/texlive/texmf-dist/tex/latex/graphics/epsfig.sty
Package: epsfig 1999/02/16 v1.7a (e)psfig emulation (SPQR)
\epsfxsize=\dimen145
\epsfysize=\dimen146
)
(/usr/share/texlive/texmf-dist/tex/latex/caption/caption.sty
Package: caption 2013/05/02 v3.3-89 Customizing captions (AR)
(/usr/share/texlive/texmf-dist/tex/latex/caption/caption3.sty
Package: caption3 2013/05/02 v1.6-88 caption3 kernel (AR)
Package caption3 Info: TeX engine: e-TeX on input line 57.
\captionmargin=\dimen147
\captionmargin@=\dimen148
\captionwidth=\dimen149
\caption@tempdima=\dimen150
\caption@indent=\dimen151
\caption@parindent=\dimen152
\caption@hangindent=\dimen153
)
\c@ContinuedFloat=\count130
Package caption Info: hyperref package is loaded.
Package caption Info: listings package is loaded.
)
(/usr/share/texmf/tex/latex/pgf/frontendlayer/tikz.sty
(/usr/share/texmf/tex/latex/pgf/basiclayer/pgf.sty
(/usr/share/texmf/tex/latex/pgf/utilities/pgfrcs.sty
(/usr/share/texmf/tex/generic/pgf/utilities/pgfutil-common.tex
\pgfutil@everybye=\toks30
)
(/usr/share/texmf/tex/generic/pgf/utilities/pgfutil-latex.def
\pgfutil@abb=\box32
(/usr/share/texlive/texmf-dist/tex/latex/ms/everyshi.sty
Package: everyshi 2001/05/15 v3.00 EveryShipout Package (MS)
))
(/usr/share/texmf/tex/generic/pgf/utilities/pgfrcs.code.tex
Package: pgfrcs 2010/10/25 v2.10 (rcs-revision 1.24)
))
Package: pgf 2008/01/15 v2.10 (rcs-revision 1.12)
(/usr/share/texmf/tex/latex/pgf/basiclayer/pgfcore.sty
(/usr/share/texmf/tex/latex/pgf/systemlayer/pgfsys.sty
(/usr/share/texmf/tex/generic/pgf/systemlayer/pgfsys.code.tex
Package: pgfsys 2010/06/30 v2.10 (rcs-revision 1.37)
(/usr/share/texmf/tex/generic/pgf/utilities/pgfkeys.code.tex)
\pgf@x=\dimen154
\pgf@y=\dimen155
\pgf@xa=\dimen156
\pgf@ya=\dimen157
\pgf@xb=\dimen158
\pgf@yb=\dimen159
\pgf@xc=\dimen160
\pgf@yc=\dimen161
\w@pgf@writea=\write3
\r@pgf@reada=\read1
\c@pgf@counta=\count131
\c@pgf@countb=\count132
\c@pgf@countc=\count133
\c@pgf@countd=\count134
(/usr/share/texmf/tex/generic/pgf/systemlayer/pgf.cfg
File: pgf.cfg 2008/05/14 (rcs-revision 1.7)
)
Package pgfsys Info: Driver file for pgf: pgfsys-pdftex.def on input line 900.
(/usr/share/texmf/tex/generic/pgf/systemlayer/pgfsys-pdftex.def
File: pgfsys-pdftex.def 2009/05/22 (rcs-revision 1.26)
(/usr/share/texmf/tex/generic/pgf/systemlayer/pgfsys-common-pdf.def
File: pgfsys-common-pdf.def 2008/05/19 (rcs-revision 1.10)
)))
(/usr/share/texmf/tex/generic/pgf/systemlayer/pgfsyssoftpath.code.tex
File: pgfsyssoftpath.code.tex 2008/07/18 (rcs-revision 1.7)
\pgfsyssoftpath@smallbuffer@items=\count135
\pgfsyssoftpath@bigbuffer@items=\count136
)
(/usr/share/texmf/tex/generic/pgf/systemlayer/pgfsysprotocol.code.tex
File: pgfsysprotocol.code.tex 2006/10/16 (rcs-revision 1.4)
))
(/usr/share/texmf/tex/generic/pgf/basiclayer/pgfcore.code.tex
Package: pgfcore 2010/04/11 v2.10 (rcs-revision 1.7)
(/usr/share/texmf/tex/generic/pgf/math/pgfmath.code.tex
(/usr/share/texmf/tex/generic/pgf/math/pgfmathcalc.code.tex
(/usr/share/texmf/tex/generic/pgf/math/pgfmathutil.code.tex)
(/usr/share/texmf/tex/generic/pgf/math/pgfmathparser.code.tex
\pgfmath@dimen=\dimen162
\pgfmath@count=\count137
\pgfmath@box=\box33
\pgfmath@toks=\toks31
\pgfmath@stack@operand=\toks32
\pgfmath@stack@operation=\toks33
)
(/usr/share/texmf/tex/generic/pgf/math/pgfmathfunctions.code.tex
(/usr/share/texmf/tex/generic/pgf/math/pgfmathfunctions.basic.code.tex)
(/usr/share/texmf/tex/generic/pgf/math/pgfmathfunctions.trigonometric.code.tex)
(/usr/share/texmf/tex/generic/pgf/math/pgfmathfunctions.random.code.tex)
(/usr/share/texmf/tex/generic/pgf/math/pgfmathfunctions.comparison.code.tex)
(/usr/share/texmf/tex/generic/pgf/math/pgfmathfunctions.base.code.tex)
(/usr/share/texmf/tex/generic/pgf/math/pgfmathfunctions.round.code.tex)
(/usr/share/texmf/tex/generic/pgf/math/pgfmathfunctions.misc.code.tex)))
(/usr/share/texmf/tex/generic/pgf/math/pgfmathfloat.code.tex
\c@pgfmathroundto@lastzeros=\count138
))
(/usr/share/texmf/tex/generic/pgf/basiclayer/pgfcorepoints.code.tex
File: pgfcorepoints.code.tex 2010/04/09 (rcs-revision 1.20)
\pgf@picminx=\dimen163
\pgf@picmaxx=\dimen164
\pgf@picminy=\dimen165
\pgf@picmaxy=\dimen166
\pgf@pathminx=\dimen167
\pgf@pathmaxx=\dimen168
\pgf@pathminy=\dimen169
\pgf@pathmaxy=\dimen170
\pgf@xx=\dimen171
\pgf@xy=\dimen172
\pgf@yx=\dimen173
\pgf@yy=\dimen174
\pgf@zx=\dimen175
\pgf@zy=\dimen176
)
(/usr/share/texmf/tex/generic/pgf/basiclayer/pgfcorepathconstruct.code.tex
File: pgfcorepathconstruct.code.tex 2010/08/03 (rcs-revision 1.24)
\pgf@path@lastx=\dimen177
\pgf@path@lasty=\dimen178
)
(/usr/share/texmf/tex/generic/pgf/basiclayer/pgfcorepathusage.code.tex
File: pgfcorepathusage.code.tex 2008/04/22 (rcs-revision 1.12)
\pgf@shorten@end@additional=\dimen179
\pgf@shorten@start@additional=\dimen180
)
(/usr/share/texmf/tex/generic/pgf/basiclayer/pgfcorescopes.code.tex
File: pgfcorescopes.code.tex 2010/09/08 (rcs-revision 1.34)
\pgfpic=\box34
\pgf@hbox=\box35
\pgf@layerbox@main=\box36
\pgf@picture@serial@count=\count139
)
(/usr/share/texmf/tex/generic/pgf/basiclayer/pgfcoregraphicstate.code.tex
File: pgfcoregraphicstate.code.tex 2008/04/22 (rcs-revision 1.9)
\pgflinewidth=\dimen181
)
(/usr/share/texmf/tex/generic/pgf/basiclayer/pgfcoretransformations.code.tex
File: pgfcoretransformations.code.tex 2009/06/10 (rcs-revision 1.11)
\pgf@pt@x=\dimen182
\pgf@pt@y=\dimen183
\pgf@pt@temp=\dimen184
)
(/usr/share/texmf/tex/generic/pgf/basiclayer/pgfcorequick.code.tex
File: pgfcorequick.code.tex 2008/10/09 (rcs-revision 1.3)
)
(/usr/share/texmf/tex/generic/pgf/basiclayer/pgfcoreobjects.code.tex
File: pgfcoreobjects.code.tex 2006/10/11 (rcs-revision 1.2)
)
(/usr/share/texmf/tex/generic/pgf/basiclayer/pgfcorepathprocessing.code.tex
File: pgfcorepathprocessing.code.tex 2008/10/09 (rcs-revision 1.8)
)
(/usr/share/texmf/tex/generic/pgf/basiclayer/pgfcorearrows.code.tex
File: pgfcorearrows.code.tex 2008/04/23 (rcs-revision 1.11)
)
(/usr/share/texmf/tex/generic/pgf/basiclayer/pgfcoreshade.code.tex
File: pgfcoreshade.code.tex 2008/11/23 (rcs-revision 1.13)
\pgf@max=\dimen185
\pgf@sys@shading@range@num=\count140
)
(/usr/share/texmf/tex/generic/pgf/basiclayer/pgfcoreimage.code.tex
File: pgfcoreimage.code.tex 2010/03/25 (rcs-revision 1.16)
(/usr/share/texmf/tex/generic/pgf/basiclayer/pgfcoreexternal.code.tex
File: pgfcoreexternal.code.tex 2010/09/01 (rcs-revision 1.17)
\pgfexternal@startupbox=\box37
))
(/usr/share/texmf/tex/generic/pgf/basiclayer/pgfcorelayers.code.tex
File: pgfcorelayers.code.tex 2010/08/27 (rcs-revision 1.2)
)
(/usr/share/texmf/tex/generic/pgf/basiclayer/pgfcoretransparency.code.tex
File: pgfcoretransparency.code.tex 2008/01/17 (rcs-revision 1.2)
)
(/usr/share/texmf/tex/generic/pgf/basiclayer/pgfcorepatterns.code.tex
File: pgfcorepatterns.code.tex 2009/07/02 (rcs-revision 1.3)
)))
(/usr/share/texmf/tex/generic/pgf/modules/pgfmoduleshapes.code.tex
File: pgfmoduleshapes.code.tex 2010/09/09 (rcs-revision 1.13)
\pgfnodeparttextbox=\box38
)
(/usr/share/texmf/tex/generic/pgf/modules/pgfmoduleplot.code.tex
File: pgfmoduleplot.code.tex 2010/10/22 (rcs-revision 1.8)
)
(/usr/share/texmf/tex/latex/pgf/compatibility/pgfcomp-version-0-65.sty
Package: pgfcomp-version-0-65 2007/07/03 v2.10 (rcs-revision 1.7)
\pgf@nodesepstart=\dimen186
\pgf@nodesepend=\dimen187
)
(/usr/share/texmf/tex/latex/pgf/compatibility/pgfcomp-version-1-18.sty
Package: pgfcomp-version-1-18 2007/07/23 v2.10 (rcs-revision 1.1)
))
(/usr/share/texmf/tex/latex/pgf/utilities/pgffor.sty
(/usr/share/texmf/tex/latex/pgf/utilities/pgfkeys.sty
(/usr/share/texmf/tex/generic/pgf/utilities/pgfkeys.code.tex))
(/usr/share/texmf/tex/generic/pgf/utilities/pgffor.code.tex
Package: pgffor 2010/03/23 v2.10 (rcs-revision 1.18)
\pgffor@iter=\dimen188
\pgffor@skip=\dimen189
\pgffor@stack=\toks34
\pgffor@toks=\toks35
))
(/usr/share/texmf/tex/generic/pgf/frontendlayer/tikz/tikz.code.tex
Package: tikz 2010/10/13 v2.10 (rcs-revision 1.76)
(/usr/share/texmf/tex/generic/pgf/libraries/pgflibraryplothandlers.code.tex
File: pgflibraryplothandlers.code.tex 2010/05/31 v2.10 (rcs-revision 1.15)
\pgf@plot@mark@count=\count141
\pgfplotmarksize=\dimen190
)
\tikz@lastx=\dimen191
\tikz@lasty=\dimen192
\tikz@lastxsaved=\dimen193
\tikz@lastysaved=\dimen194
\tikzleveldistance=\dimen195
\tikzsiblingdistance=\dimen196
\tikz@figbox=\box39
\tikz@tempbox=\box40
\tikztreelevel=\count142
\tikznumberofchildren=\count143
\tikznumberofcurrentchild=\count144
\tikz@fig@count=\count145
(/usr/share/texmf/tex/generic/pgf/modules/pgfmodulematrix.code.tex
File: pgfmodulematrix.code.tex 2010/08/24 (rcs-revision 1.4)
\pgfmatrixcurrentrow=\count146
\pgfmatrixcurrentcolumn=\count147
\pgf@matrix@numberofcolumns=\count148
)
\tikz@expandcount=\count149
(/usr/share/texmf/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarytopat
hs.code.tex
File: tikzlibrarytopaths.code.tex 2008/06/17 v2.10 (rcs-revision 1.2)
))) (./index.aux (./lst_config.aux) (./draw/doc_opening.aux)
(./draw/uml_completion_structure.aux) (./draw/filtering_completion.aux)
(./draw/multiple_doc_completion.aux))
\openout1 = `index.aux'.
LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 31.
LaTeX Font Info: ... okay on input line 31.
LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 31.
LaTeX Font Info: ... okay on input line 31.
LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 31.
LaTeX Font Info: ... okay on input line 31.
LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 31.
LaTeX Font Info: ... okay on input line 31.
LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 31.
LaTeX Font Info: ... okay on input line 31.
LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 31.
LaTeX Font Info: ... okay on input line 31.
LaTeX Font Info: Checking defaults for PD1/pdf/m/n on input line 31.
LaTeX Font Info: ... okay on input line 31.
LaTeX Font Info: Try loading font information for T1+lmr on input line 31.
(/usr/share/texmf/tex/latex/lm/t1lmr.fd
File: t1lmr.fd 2009/10/30 v1.6 Font defs for Latin Modern
)
(/usr/share/texlive/texmf-dist/tex/latex/oberdiek/epstopdf-base.sty
Package: epstopdf-base 2010/02/09 v2.5 Base part for package epstopdf
(/usr/share/texlive/texmf-dist/tex/latex/oberdiek/grfext.sty
Package: grfext 2010/08/19 v1.1 Manage graphics extensions (HO)
)
Package epstopdf-base Info: Redefining graphics rule for `.eps' on input line 4
34.
Package grfext Info: Graphics extension search list:
(grfext) [.png,.pdf,.jpg,.mps,.jpeg,.jbig2,.jb2,.PNG,.PDF,.JPG,.JPE
G,.JBIG2,.JB2,.eps]
(grfext) \AppendGraphicsExtensions on input line 452.
(/usr/share/texlive/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg
File: epstopdf-sys.cfg 2010/07/13 v1.3 Configuration of (r)epstopdf for TeX Liv
e
))
\c@lstlisting=\count150
\AtBeginShipoutBox=\box41
Package hyperref Info: Link coloring OFF on input line 31.
(/usr/share/texlive/texmf-dist/tex/latex/hyperref/nameref.sty
Package: nameref 2012/10/27 v2.43 Cross-referencing by name of section
(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/gettitlestring.sty
Package: gettitlestring 2010/12/03 v1.4 Cleanup title references (HO)
)
\c@section@level=\count151
)
LaTeX Info: Redefining \ref on input line 31.
LaTeX Info: Redefining \pageref on input line 31.
LaTeX Info: Redefining \nameref on input line 31.
(./index.out) (./index.out)
\@outlinefile=\write4
\openout4 = `index.out'.
(/usr/share/texlive/texmf-dist/tex/context/base/supp-pdf.mkii
[Loading MPS to PDF converter (version 2006.09.02).]
\scratchcounter=\count152
\scratchdimen=\dimen197
\scratchbox=\box42
\nofMPsegments=\count153
\nofMParguments=\count154
\everyMPshowfont=\toks36
\MPscratchCnt=\count155
\MPscratchDim=\dimen198
\MPnumerator=\count156
\makeMPintoPDFobject=\count157
\everyMPtoPDFconversion=\toks37
)
Package caption Info: Begin \AtBeginDocument code.
Package caption Info: End \AtBeginDocument code.
ABD: EveryShipout initializing macros
\openout2 = `./lst_config.aux'.
(./lst_config.tex
(/usr/share/texlive/texmf-dist/tex/latex/listings/lstlang1.sty
File: lstlang1.sty 2013/08/26 1.5b listings language file
))
LaTeX Font Info: Try loading font information for OT1+lmr on input line 37.
(/usr/share/texmf/tex/latex/lm/ot1lmr.fd
File: ot1lmr.fd 2009/10/30 v1.6 Font defs for Latin Modern
)
LaTeX Font Info: Try loading font information for OML+lmm on input line 37.
(/usr/share/texmf/tex/latex/lm/omllmm.fd
File: omllmm.fd 2009/10/30 v1.6 Font defs for Latin Modern
)
LaTeX Font Info: Try loading font information for OMS+lmsy on input line 37.
(/usr/share/texmf/tex/latex/lm/omslmsy.fd
File: omslmsy.fd 2009/10/30 v1.6 Font defs for Latin Modern
)
LaTeX Font Info: Try loading font information for OMX+lmex on input line 37.
(/usr/share/texmf/tex/latex/lm/omxlmex.fd
File: omxlmex.fd 2009/10/30 v1.6 Font defs for Latin Modern
)
LaTeX Font Info: External font `lmex10' loaded for size
(Font) <17.28> on input line 37.
LaTeX Font Info: External font `lmex10' loaded for size
(Font) <12> on input line 37.
LaTeX Font Info: External font `lmex10' loaded for size
(Font) <10> on input line 37.
LaTeX Font Info: External font `lmex10' loaded for size
(Font) <8> on input line 37.
LaTeX Font Info: External font `lmex10' loaded for size
(Font) <6> on input line 37.
[1
Non-PDF special ignored!
Non-PDF special ignored!
Non-PDF special ignored!
Non-PDF special ignored!
Non-PDF special ignored!
Non-PDF special ignored!
Non-PDF special ignored!
{/var/lib/texmf/fonts/map/pdftex/updmap/pdftex.map}]
(./index.toc
LaTeX Font Info: External font `lmex10' loaded for size
(Font) <10.95> on input line 2.
)
\tf@toc=\write5
\openout5 = `index.toc'.
pdfTeX warning (ext4): destination with the same identifier (name{page.1}) has
been already used, duplicate ignored
<to be read again>
\relax
l.38 \newpage
[1
]
Chapter 1.
LaTeX Font Info: External font `lmex10' loaded for size
(Font) <9> on input line 49.
LaTeX Font Info: External font `lmex10' loaded for size
(Font) <5> on input line 49.
LaTeX Font Info: Try loading font information for T1+lmtt on input line 49.
(/usr/share/texmf/tex/latex/lm/t1lmtt.fd
File: t1lmtt.fd 2009/10/30 v1.6 Font defs for Latin Modern
)
LaTeX Font Info: Try loading font information for OMS+lmr on input line 56.
(/usr/share/texmf/tex/latex/lm/omslmr.fd
File: omslmr.fd 2009/10/30 v1.6 Font defs for Latin Modern
)
LaTeX Font Info: Font shape `OMS/lmr/m/n' in size <10.95> not available
(Font) Font shape `OMS/lmsy/m/n' tried instead on input line 56.
[2
]
Chapter 2.
[3
]
Chapter 3.
\openout2 = `./draw/doc_opening.aux'.
(./draw/doc_opening.tex
\du=\skip46
)
Overfull \hbox (19.63365pt too wide) in paragraph at lines 175--96
[][]
[]
\openout2 = `./draw/uml_completion_structure.aux'.
(./draw/uml_completion_structure.tex)
LaTeX Warning: `!h' float specifier changed to `!ht'.
[4
]
\openout2 = `./draw/filtering_completion.aux'.
(./draw/filtering_completion.tex)
LaTeX Warning: `h' float specifier changed to `ht'.
[5
]
\openout2 = `./draw/multiple_doc_completion.aux'.
(./draw/multiple_doc_completion.tex)
Overfull \hbox (17.38351pt too wide) in paragraph at lines 268--151
[][]
[]
LaTeX Warning: `h' float specifier changed to `ht'.
[6
] [7
]
Chapter 4.
Package atveryend Info: Empty hook `BeforeClearDocument' on input line 183.
[8
]
Package atveryend Info: Empty hook `AfterLastShipout' on input line 183.
(./index.aux (./lst_config.aux) (./draw/doc_opening.aux)
(./draw/uml_completion_structure.aux) (./draw/filtering_completion.aux)
(./draw/multiple_doc_completion.aux))
Package atveryend Info: Executing hook `AtVeryEndDocument' on input line 183.
Package atveryend Info: Executing hook `AtEndAfterFileList' on input line 183.
Package rerunfilecheck Info: File `index.out' has not changed.
(rerunfilecheck) Checksum: 9233D16CAE4492227D0DB07B17AAA820;967.
Package atveryend Info: Empty hook `AtVeryVeryEnd' on input line 183.
)
Here is how much of TeX's memory you used:
18423 strings out of 494985
315606 string characters out of 6180356
419959 words of memory out of 5000000
21218 multiletter control sequences out of 15000+600000
73881 words of font info for 55 fonts, out of 8000000 for 9000
36 hyphenation exceptions out of 8191
53i,8n,92p,395b,711s stack positions out of 5000i,500n,10000p,200000b,80000s
{/usr/share/texmf/fonts/enc/dvips/lm/lm-ec.enc}{/usr/share/texmf/fonts/enc/dv
ips/lm/lm-mathsy.enc}</usr/share/texmf/fonts/type1/public/lm/lmbx10.pfb></usr/s
hare/texmf/fonts/type1/public/lm/lmbx12.pfb></usr/share/texmf/fonts/type1/publi
c/lm/lmr10.pfb></usr/share/texmf/fonts/type1/public/lm/lmr12.pfb></usr/share/te
xmf/fonts/type1/public/lm/lmr17.pfb></usr/share/texmf/fonts/type1/public/lm/lmr
6.pfb></usr/share/texmf/fonts/type1/public/lm/lmr8.pfb></usr/share/texmf/fonts/
type1/public/lm/lmr9.pfb></usr/share/texmf/fonts/type1/public/lm/lmri10.pfb></u
sr/share/texmf/fonts/type1/public/lm/lmsy10.pfb></usr/share/texmf/fonts/type1/p
ublic/lm/lmtt10.pfb></usr/share/texmf/fonts/type1/public/lm/lmtt9.pfb>
Output written on index.pdf (9 pages, 290070 bytes).
PDF statistics:
201 PDF objects out of 1000 (max. 8388607)
176 compressed objects within 2 object streams
35 named destinations out of 1000 (max. 500000)
125 words of extra memory for PDF output out of 10000 (max. 10000000)
\BOOKMARK [0][-]{chapter.1}{Introduction}{}% 1
\BOOKMARK [1][-]{section.1.1}{Latexila}{chapter.1}% 2
\BOOKMARK [0][-]{chapter.2}{\311tude pratique}{}% 3
\BOOKMARK [1][-]{section.2.1}{T\342che \340 r\351aliser}{chapter.2}% 4
\BOOKMARK [2][-]{subsection.2.1.1}{La compl\351tion dans LaTeXila 2.2}{section.2.1}% 5
\BOOKMARK [2][-]{subsection.2.1.2}{Une compl\351tion dynamique}{section.2.1}% 6
\BOOKMARK [0][-]{chapter.3}{R\351alisation}{}% 7
\BOOKMARK [1][-]{section.3.1}{Int\351gration d'une recherche au document courant}{chapter.3}% 8
\BOOKMARK [2][-]{subsection.3.1.1}{Invite de compl\351tion}{section.3.1}% 9
\BOOKMARK [1][-]{section.3.2}{Int\351gration d'une recherche \340 plusieurs documents}{chapter.3}% 10
\BOOKMARK [1][-]{section.3.3}{Int\351gration des fichiers non-ouverts}{chapter.3}% 11
\BOOKMARK [1][-]{section.3.4}{Gestion de projet}{chapter.3}% 12
\BOOKMARK [2][-]{subsection.3.4.1}{Git}{section.3.4}% 13
\BOOKMARK [0][-]{chapter.4}{Conclusion}{}% 14
File deleted
File deleted
\documentclass[a4paper,11pt]{report}
\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}
\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
\tableofcontents %table des matières
\newpage
\chapter{Introduction}
\label{cha:Introduction}
Les \textit{é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.
Cette étude pratique en particulier se présente sous la forme d'une contribution à un logiciel dont le code source est libre, c'est à dire qu'il est mis à disposition du public qui peut s'il le souhaite proposer des améliorations.
\section{Latexila}
\label{sec:latexila}
Latexila est un projet d'éditeur LaTeX pour le projet Gnome, dont le développement a commencé en 2009\footnote{Voir \url{https://wiki.gnome.org/Apps/LaTeXila/History}} à l'initiative de Sébastien Wilmet, qui est encore à ce jour le mainteneur du projet.
Bien que commencé en C, le projet a été porté vers le langage Vala en 2010. Latexila adopte une approche centrée sur le code, ce qui lui permet d'être bien plus léger que nombre d'autres éditeurs, comme TeXMaker\footnote{\url{http://www.xm1math.net/texmaker/index_fr.html}} par exemple.
De par cette philosophie, il ne possède pas de module WYSIWYG\footnote{What You See Is What You Get - Un mode d'édition ou l'utilisateur édite directement une vue correspondant au rendu final}, ce qui le rend moins facile d'accès.
Il met cependant à la disposition de l'utilisateur des outils puissant qui en font bien plus qu'un simple éditeur de texte, comme :
\begin{itemize}
\item La compilation assistée
\item Une gestion de projet simplifiée
\item Une aide à la saisie (sous forme de complétion) des commandes \LaTeX
\end{itemize}
\chapter{Étude pratique} % (fold)
\label{cha:etude_pratique}
\section{Tâche à réaliser} % (fold)
\label{sec:tache_a_realiser}
La tâche à réaliser est l'amélioration de la complétion des commandes de référence \textbf{\textbackslash{}ref\{clef\}}. Ces commandes permettent de créer un lien cliquable vers un endroit précis du document, qui est matérialisé par un \textbf{\textbackslash{}label\{clef\}}.
Lorsque l'utilisateur souhaite réaliser une référence, la complétion doit lui proposer une liste des clefs possible.
\subsection{La complétion dans LaTeXila 2.2}
\label{sub:completion}
La version 2.2 de Latexila fournit une complétion exhaustive des éléments du langage \LaTeX{} en se basant sur un fichier XML descriptif lu au démarrage du programme.
Cette complétion est donc dite \textit{statique}, car elle n'adapte pas les propositions en utilisant le contenu entré par l'utilisateur.
Il lui est donc impossible de proposer une complétion pour \textbackslash{}ref.
\subsection{Une complétion dynamique}
\label{sub:completion_dyn}
Afin d'améliorer ce mécanisme de complétion pour qu'il prenne en charge l'argument de la commande \textbf{\textbackslash{}ref}, il convient de lui adjoindre une composante \textit{dynamique}, qui prendra en compte les éléments \textbf{\textbackslash{}label} déclarés par l'utilisateur.
% section tâche_à_réaliser (end)
\chapter{Réalisation}
La réalisation s'est faite par petits pas. Sur une base de deux semaines de travail, l'équipe se donnait un objectif à atteindre pour le point suivant avec l'encadrant.
Ces points bi-mensuels permettaient de discuter des directions à prendre pour le développement.
\section{Intégration d'une recherche au document courant}
Notre premier objectif a été de récupérer l'ensemble des labels déclarés dans le document courant.
Après avoir analysé le code, nous avons décidé d'utiliser tout d'abord un analyseur syntaxique \LaTeX{} fourni par Latexila. Il construit l'arbre représentatif de la structure du document.
Ces résultats sont ensuite intégrés au \textit{Completion Provider}, classe utilisée jusqu'alors pour gérer la complétion statique, et mis à jour lors de l'ouverture et de la sauvegarde du document.
% Le diagramme de fonctionnement du parser
\begin{figure}[h]
\label{fig:doc_opening}
\centering
\include{./draw/doc_opening}
\caption{Diagramme de séquence d'une analyse de document}
\end{figure}
\subsection{Invite de complétion}
%Le diagramme UML de la structure de completion
\begin{figure}[h!]
\label{fig:uml_completion_structure}
\centering
\include{./draw/uml_completion_structure}
\caption{Le diagramme UML de la structure de complétion.}
\end{figure}
A ce stade, la complétion est alimentée par l'analyseur syntaxique déjà éxistant qui est utilisé par l'arbre de structure du document courant.
Cela implique certaines contraintes comme de ne pas pouvoir l'appeler quand on le souhaite.
La mise à jour de la complétion se fait donc en même temps que celle de l'arbre représentant la structure du document courant.
Ainsi lors du changement de document, par exemple, la complétion n'est pas mise à jour et est donc moins pertinente.
D'autre part, on perd les précédentes données de complétion lors de l'analyse d'un autre document.
Conserver ces données éviterai des analyses redondantes et permettrait d'économiser du temps de calcul.
\section{Intégration d'une recherche à plusieurs documents}
L'étape suivante a été l'intégration de la complétion pour tous les documents ouverts dans Latexila, permettant ainsi de proposer une complétion propre à chaque document et d'éviter les propositions inappropriées.
Problèmes : comment choisir parmi les propositions celles liée au document courant ? Et comment stoker ces différents ensembles de choix de complétion de manière à pouvoir les mettre à jour ?
Ceci nous a conduit à rechercher une structure de donnée adaptée, et à l'implémenter après avoir étudié la documentation de ces structures dans le langage Vala.
Nous avons opté pour l'ajout d'une table de hachage au \textit{CompletionProvider}, qui stockera les ensemble de choix de complétion, indexés par le chemin absolu du fichier .tex auquel ils correspondent.
%Le diagramme de séquence d'une demande de complétion
\begin{figure}[h]
\label{fig:filtering_completion}
\centering
\include{./draw/filtering_completion}
\caption{Diagramme de séquence d'une demande de complétion.}
\end{figure}
Les choix de complétion proposés à l'utilisateur sont ceux du document courant.
Ceux-ci sont mis à jour lors de l'appel de l'utilisateur au gestionnaire de complétion. Ainsi, même lors du changement de document, ces choix sont filtrés pour le nouveau document.
À ce stade, la complétion est fonctionnelle pour tous les fichiers ouverts, les données ne sont pas perdues, leur mise à jour est cohérente, et la mise à jour des choix de complétion du gestionnaire de complétion est faite de façon efficace (mise à jour uniquement si nécessaire, donc si l'utilisateur change de document, ou s'il sauvegarde un document).
Cependant, il reste un problème : la complétion ne propose que les labels déclarés dans le document courant, alors que \LaTeX{} permet les références entre entre différents fichiers.
Il faut donc revoir le filtrage des choix de complétion.
Cet aspect nous conduit également à proposer des choix de complétion provenant de documents qui n'ont pas été ouverts.
\section{Intégration des fichiers non-ouverts}
Après discussion avec notre encadrant, nous avons décidé de limiter les choix de complétion pour un document à l'ensemble des labels déclarés dans les documents .tex de son répertoire.
Ce point est sujet à discussion, et nous y reviendrons durant la conclusion.
Pour ce faire, nous avons d'une part modifié notre structure de donnée pour que la clé de la table de hachage qui contient nos données de complétion soit désormais le chemin absolu du répertoire parent du document courant.
D'autre part, nous avons décidé de dissocier la complétion des labels du processus qui se charge de la structure du document, séparant ainsi ces deux aspects distincts.
%Le diagramme de séquence d'une analyse en arrière plan
\begin{figure}[h]
\label{fig:multiple_doc_completion}
\centering
\include{./draw/multiple_doc_completion}
\caption{Diagramme de séquence d'analyse en arrière plan.}
\end{figure}
À ce stade, la complétion est entièrement fonctionnelle.
Les choix proposés sont les labels déclarés dans les documents .tex du même répertoire que le document courant, l'analyse des documents est faite uniquement au besoin, et le changement de document vers un document d'un autre répertoire modifie correctement les propositions fournies.
\section{Gestion de projet} % (fold)
\subsection{Git}
\label{sub:git}
Git est le VCS\footnote{Version Control System} utilisé par la très grande majorité des projets open-source. Latexila est hébergé sur le dépôt git du projet Gnome\footnote{\url{git.gnome.org}} et un miroir est également disponible sur Github\footnote{\url{https://github.com/GNOME/latexila}}.
Pour ce projet, nous avons créé un \textit{fork} du dépôt principal sur Github et travaillé sur une branche annexe, régulièrement mise à jour à partir du dépôt principal.
Un patch entre la \textbf{branche principale} et la \textbf{branche de test} est ensuite créé avec \texttt{git patch} et posté sur le bugzilla dédié\footnote{Page de ce projet \url{https://bugzilla.gnome.org/show_bug.cgi?id=748069}}.
\chapter{Conclusion}
Le mécanisme de complétion, auparavant \textit{statique} prend désormais en charge une complétion \textit{dynamique} sur les labels déclarés par l'utilisateur.
Cependant, notre solution impose que les fichiers sources dont sont issues les labels se trouvent dans le même répertoire que le document ouvert.
Or certains utilisateurs sont susceptibles d'utiliser des sous-répertoires pour organiser leurs fichiers, et ne bénéficieraient donc pas de la complétion souhaitée.
De plus, il arrive que certains fichiers .tex ne soient que des anciennes versions de rapports, voire des fichiers de tests. Dans ce cas, notre mécanisme de complétion proposerait les labels déclarés dans ces fichiers, alors qu'ils ne sont pas souhaités.
Nous avons tout de même soumis ce patch au mainteneur du projet, monsieur Wilmet, qui nous a fait part de ses commentaires.
Après discussion avec notre encadrant et monsieur Wilmet, nous avons établi que pour palier à ces problèmes, une refonte de la notion de \textit{projet} comme ils sont organisés dans Latexila était nécessaire.
On pourrait ainsi proposer une complétion ne prenant en compte que les fichiers faisant partie du même projet, et éviter les problèmes précédemment soulevés.
\section*{\centerline{Remerciements}} % (fold)
\begin{center}
\label{sec:remerciements}
Nous remercions Arnaud Blouin, notre encadrant, pour sa disponibilité et ses conseils, ainsi que Sébastien Wilmet, développeur et mainteneur de Latexila, pour l'aide qu'il nous a apporté dans ce premier pas dans l'univers du logiciel libre.
\end{center}
\end{document}
\contentsline {chapter}{\numberline {1}Introduction}{2}{chapter.1}
\contentsline {section}{\numberline {1.1}Latexila}{2}{section.1.1}
\contentsline {chapter}{\numberline {2}\IeC {\'E}tude pratique}{3}{chapter.2}
\contentsline {section}{\numberline {2.1}T\IeC {\^a}che \IeC {\`a} r\IeC {\'e}aliser}{3}{section.2.1}
\contentsline {subsection}{\numberline {2.1.1}La compl\IeC {\'e}tion dans LaTeXila 2.2}{3}{subsection.2.1.1}
\contentsline {subsection}{\numberline {2.1.2}Une compl\IeC {\'e}tion dynamique}{3}{subsection.2.1.2}
\contentsline {chapter}{\numberline {3}R\IeC {\'e}alisation}{4}{chapter.3}
\contentsline {section}{\numberline {3.1}Int\IeC {\'e}gration d'une recherche au document courant}{4}{section.3.1}
\contentsline {subsection}{\numberline {3.1.1}Invite de compl\IeC {\'e}tion}{4}{subsection.3.1.1}
\contentsline {section}{\numberline {3.2}Int\IeC {\'e}gration d'une recherche \IeC {\`a} plusieurs documents}{5}{section.3.2}
\contentsline {section}{\numberline {3.3}Int\IeC {\'e}gration des fichiers non-ouverts}{6}{section.3.3}
\contentsline {section}{\numberline {3.4}Gestion de projet}{7}{section.3.4}
\contentsline {subsection}{\numberline {3.4.1}Git}{7}{subsection.3.4.1}
\contentsline {chapter}{\numberline {4}Conclusion}{8}{chapter.4}
\relax
\providecommand\hyper@newdestlabel[2]{}
\@setckpt{./lst_config}{
\setcounter{page}{1}
\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}{0}
\setcounter{section}{0}
\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}{0}
\setcounter{bookmark@seq@number}{0}
\setcounter{ContinuedFloat}{0}
\setcounter{lstlisting}{0}
\setcounter{section@level}{0}
}
\definecolor{mygreen}{rgb}{0,0.6,0}
\definecolor{mygray}{rgb}{0.5,0.5,0.5}
\definecolor{mymauve}{rgb}{0.58,0,0.82}
\lstset{ %
backgroundcolor=\color{white}, % choose the background color; you must add \usepackage{color} or \usepackage{xcolor}
basicstyle=\tt\small, % the size of the fonts that are used for the code
breakatwhitespace=false, % sets if automatic breaks should only happen at whitespace
breaklines=true, % sets automatic line breaking
captionpos=b, % sets the caption-position to bottom
commentstyle=\color{mygreen}, % comment style
deletekeywords={...}, % if you want to delete keywords from the given language
escapeinside={\%*}{*)}, % if you want to add LaTeX within your code
extendedchars=true, % lets you use non-ASCII characters; for 8-bits encodings only, does not work with UTF-8
frame=single, % adds a frame around the code
keepspaces=true, % keeps spaces in text, useful for keeping indentation of code (possibly needs columns=flexible)
keywordstyle=\color{blue}, % keyword style
language=[Sharp]C, % the language of the code
otherkeywords={*,...}, % if you want to add more keywords to the set
numbers=left, % where to put the line-numbers; possible values are (none, left, right)
numbersep=5pt, % how far the line-numbers are from the code
numberstyle=\tiny\color{mygray}, % the style that is used for the line-numbers
rulecolor=\color{black}, % if not set, the frame-color may be changed on line-breaks within not-black text (e.g. comments (green here))
showspaces=false, % show spaces everywhere adding particular underscores; it overrides 'showstringspaces'
showstringspaces=false, % underline spaces within strings only
showtabs=false, % show tabs within strings adding particular underscores
stepnumber=2, % the step between two line-numbers. If it's 1, each line will be numbered
stringstyle=\color{mymauve}, % string literal style
tabsize=2, % sets default tabsize to 2 spaces
title=\lstname % show the filename of files included with \lstinputlisting; also try caption instead of title
}
\lstset{literate=
{é}{{\'e}}1 {à}{{\`a}}1 {è}{{\`e}}1
{â}{{\^a}}1 {ê}{{\^e}}1 {ç}{{\c c}}1
{î}{{\^i}}1 {û}{{\^u}}1
}
mktextfm ecrm1095
mktextfm ecrm1095
mktextfm ecrm1095
\chapter{Réalisation}
La réalisation s'est faite par petits pas. Sur une base de deux semaines de travail, l'équipe se donnait un objectif à atteindre pour le point suivant avec l'encadrant.
Ces points bi-mensuels permettaient de discuter des directions à prendre pour le développement.
\section{Intégration d'une recherche au document courant}
Notre premier objectif a été de récupérer l'ensemble des labels déclarés dans le document courant. Après avoir analysé le code, nous avons décidé d'utiliser tout d'abord un parseur existant, celui permettant de construire l'arbre représentatif de la structure des documents.
% Le diagramme de fonctionnement du parser
\begin{figure}[h]
\label{fig:flow_parser_call}
\centering
\include{./draw/flow_parser_call}
\caption{L'appel au parser.}
\end{figure}
Ces résultats sont ensuite intégrés au \textit{Completion Provider} (classe utilisée jusqu'alors pour gérer la complétion statique).
\subsection{Invite de complétion}
\begin{lstlisting}[frame=single]
public class CompletionProvider : GLib.Object, SourceCompletionProvider
{
// Structure de la commande
struct CompletionCommand
{
string name; // Dans notre cas, la commande \\ref
string? package;
CompletionArgument[] args; // Dans notre cas, un seul argument
}
// Structure d'argument de commande
struct CompletionArgument
{
string label;
bool optional;
CompletionChoice[] choices; // Dans notre cas, l'ensemble des labels déclarés par l'utilisateur
}
// Structure de la proposition de complétion
public struct CompletionChoice
{
string name; // Dans notre cas, l'intitulé du label
string? package;
string? insert;
string? insert_after;
}
\end{lstlisting}
%Le diagramme UML de la structure de completion
\begin{figure}[h!]
\label{fig:uml_completion_structure}
\centering
\include{./draw/uml_completion_structure}
\caption{Le diagramme UML de la structure de completion.}
\end{figure}
À ce stade, la complétion est fonctionnelle pour le document courant, mais l'utilisation du parseur déjà existant implique certaines contraintes. La mise à jour de la complétion se fait en même temps que celle de l'arbre représentant la structure du document courant, alors qu'il s'agit de deux traitement à priori indépendants. Ainsi, lors du changement de document, la complétion n'est pas mise à jour, et n'est donc pas pertinente. Enfin, on perd les précédentes données de complétion lors du parsing d'un autre document. Conserver ces données éviterai des parsing redondants.
\section{Intégration d'une recherche à plusieurs documents}
L'étape suivante a été l'intégration de la complétion pour tous les documents ouverts dans LaTeXiLa. Ceci pose plusieurs problèmes : comment proposer la complétion liée au document courant ? (problème de filtrage et de mise à jour des données) ; comment stoker ces différents ensembles de choix de complétion ?
Ceci nous a conduit à rechercher une structure de donnée adaptée, et à l'implémenter, après avoir étudié la documentation de ces structures dans le langage vala. Nous avons décidé d'utiliser un ensemble non redondant (HashSet) de choix de complétion, pour chaque document, qui est ensuite envoyé au gestionnaire de complétion. Nous avons doté celui-ci d'une table de hachage, ayant pour clef le chemin absolu d'un document, et comme valeur l'ensemble non redondant de choix de complétion associé.
Les choix de complétion proposés à l'utilisateur sont ceux du document courant, et sont obtenus grâce à une méthode parcourant la table de hachage, et retournant l'ensemble des choix de complétion à proposer. Ceux-ci sont mis à jour lors de l'appel de l'utilisateur au gestionnaire de complétion. Lors du changement de document, ces choix sont mis à jour automatiquement dans le gestionnaire de complétion.
Désormais, l'ajout d'un choix de complétion est fait dans l'attribut du document précédement mentionné, au lieu de mettre à jour directement les choix de complétion du gestionnaire de complétion. La mise à jour de la table de hachage du gestionnaire de complétion est faite lorsque le parsing du document est terminé. Celui-ci a lieu lors de la sauvegarde du document par l'utilisateur, et lors de son ouverture dans LaTeXila.
\subsection{Structure de donnée}
\begin{lstlisting}[frame=single]
public class Document : Gtk.SourceBuffer
{
// Référence vers le gestionnaire de complétion
private CompletionProvider provider = CompletionProvider.getDefault();
// Ensemble non redondant des choix de complétion associés à chaque label du document courant
private Gee.HashSet<CompletionProvider.CompletionChoice?> _label_completion_choices = new Gee.HashSet<CompletionProvider.CompletionChoice?>();
public void save(bool check_file_changed_on_disk = true; bool force = false)
{
// ...
parse();
}
}
public class CompletionProvider : GLib.Object, SourceCompletionProvider
{
// Table de hachage regroupant tous les choix de complétion de chaque document
private Gee.HashMap<string, Gee.HashSet<CompletionChoice?>> _labels_from_files = new Gee.HashMap<string, Gee.HashSet<CompletionChoice?>>();
// Représente le dernier document analysé, donc le document courant
private string _last_doc = "";
// Permet de savoir s'il faut mettre à jour les choix de complétion proposés
private bool _labels_modified = false;
// Méthode déjà présente appellée lors de l'appel de l'utilisateur au gestionnaire de complétion
public void populate (SourceCompletionContext context)
{
// ...
if(_labels_modified) // Uniquement si il faut mettre à jour les choix de complétion
update_label_completion_choices();
}
public void update_label_completion_choices()
{
if(_last_doc != "") // Uniquement si la table de hachage contient quelque chose
{
CompletionChoice[] choices = get_all_labels(_last_doc);
CompletionCommand cmd_ref = _commands["\\ref"];
cmd_ref.args[0].choices = choices;
_commands["\\ref"] = cmd_ref;
set_labels_modified(true);
}
}
public CompletionChoice[] get_all_labels(string doc)
{
CompletionChoice[] choices = {};
foreach(var entry in _labels_from_files.entries)
{
if(entry.key.has_prefix(doc))
{
foreach(CompletionChoice c in entry.value)
{
choices += c;
}
}
}
}
}
public class DocumentTab : Grid
{
private cool view_focused_in ()
{
// ...
document.load (document.location); // Chargement du document, et analyse
}
}
\end{lstlisting}
À ce stade, la complétion est fonctionnelle pour tous les fichiers ouverts, les données ne sont pas perdues, leur mise à jour est cohérente, et la mise à jour des choix de complétion du gestionnaire de complétion est faite de façon efficace. % dévelopepr ?
Cependant, il reste des problèmes : les choix de complétion ne contiennent que les labels déclarés dans le document courant, alors que le principe du langage \LaTeX{} est de permettre les références entre documents. Il faut donc revoir le filtrage des choix de complétion. Cet aspect nous conduit également à proposer des choix de complétion provenant de documents qui n'ont pas été ouverts.
\section{Intégration des fichiers non-ouverts}
Durant cette étape, nous avons répondu aux problèmes précédemment cités. Après discussion avec notre encadrant, nous avons décider de limiter les choix de complétion pour un document à l'ensemble des labels déclarés dans les documents .tex de son répertoire. Ce point est sujet à discussion, et nous y reviendrons par la suite. D'autre part, nous avons décidé de dissocier le parseur des labels du parseur de la structure du document, séparant ainsi ces deux aspects distincts.
Aussi, nous avons décidé de procéder de la façon suivante : à l'ouverture d'un document, on effectue l'analyse de ce document, puis de tous les documents .tex de son répertoire, s'ils n'ont pas déjà été analysé (cas de l'ouverture de plusieurs documents d'un même répertoire). De plus, le filtrage sur les choix de complétion à proposer est fait non plus sur le chemin absolu du document courant, mais sur celui de son répertoire parent. Nous avons approché ce problème de manière récursive, ce qui a conduit à certaines modifications.
Nous nous sommes donc intéressés à la notion de fichier en vala, et à leur manipulation.
\begin{lstlisting}[frame=single]
public class Document
{
// Désormais, lors du chargement d'un document, on spécifie si l'on veut analyser ses frères, ou seulement ce document
public void load(File location, bool parse_related)
{
// ...
if(parse_related)
{
parse_related_documents();
} else {
parse();
}
}
public void parse_related_documents()
{
File dir = location.getParent(); // Répertoire parent du document courant
try {
FileEnumerator enumerator = dir.enumerate_children(
"standard::",
FileQueryInfoFlags.NOFOLLOW_SYMLINKS,
null);
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();
if(file_path.has_suffix(".tex") && (!already_parsed(file_path))) // S'il s'agit d'un document .tex, et qu'il n'a pas déjà été analysé, ie il n'y a pas d'entrée correspondante dans la table de hachage du gestionnaire de complétion
{
doc.load(child, false); // On ne veut pas analyser les frères de ce document, cela est fait dans la boucle
}
}
enumerator.close();
} catch (Error e) {
warning ("%s", e.message);
}
}
}
public class CompletionProvider : GLib.Object, SourceCompletionProvider
{
// Remplace _last_doc
// Représente le répertoire parent du dernier document analysé, donc du document courant
private string _last_dir = "";
// De la même façon, on remplace le filtrage par document par le filtrage par répertoire dans les méthodes update_label_completion_choices() et get_all_labels()
}
\end{lstlisting}
À ce stade, la complétion est entièrement fonctionnelle. Les choix proposés sont les labels déclarés dans les documents .tex du même répertoire que le document courant, l'analyse des documents est faite uniquement au besoin, et le changement de document courant vers un document d'un autre répertoire est fonctionnel.
Le mécanisme de complétion, auparavant \textit{statique} prend désormais en charge une complétion \textit{dynamique} sur les labels déclarés par l'utilisateur. Cependant, notre solution est notamment criticable sur le point suivant : le filtrage des choix de complétion proposés sur le répertoire parent du document courant. En effet, certains utilisateurs sont susceptibles d'utiliser des sous-répertoires pour organiser leurs fichiers, et ne bénéficieraient donc pas de la complétion souhaitée. De plus, il arrive que certains fichiers .tex ne soient que des anciennes versions de rapports, voire des fichiers de tests. Dans ce cas, notre mécanisme de complétion proposerait les labels déclarés dans ces fichiers, alors qu'ils ne sont pas souhaités.
Nous avons donc soumis ce patch au mainteneur du projet, monsieur Wilmet, qui nous as fait part de ses commentaires.
Après discussion avec notre encadrant et monsieur Wilmet, nous avons établi que pour palier à ces problèmes, une refonte de la notion de \textit{projet} comme ils sont organisés dans LaTeXiLa était nécessaire. On pourrait ainsi proposer une complétion ne prenant en compte que les fichiers faisant partie du même projet, et éviter les points précédemment soulevés.
\chapter{Conclusion}
Cette étude pratique a été pour nous l'occasion de découvrir le fonctionnement des projets open-source.
\end{document}
% listings for Vala
% Vala definitions
%
\lst definelanguage{Vala}[Sharp]{C}%
{morekeywords={CCode,DBus,Test,cname,cheader_filename,type_id,%
marshaller_type_name,get_value_function,set_value_function,%
default_value,IntegerType,rank,type_signature,size_t,int8,int16,%
int32,uint32,uint16,uint8,int64,uint64,float,double,time_t,%
SimpleType,unichar,cprefix,has_type_id,get,set,ref_function,%
unref_function,free_function,has_target,Compact,delegate,%
destroy_function,PrintFormat,Diagnostics,FILE,LINE,METHOD,%
errordomain,array_length_type,has_array_length,is_null_terminated,%
ReturnsModifiedPointer,dup_function,weak,owned,unowned,value,var,%
connect,async},%
morecomment=[s]{"""}{"""}
}[keywords,strings]
% from https://mail.gnome.org/archives/vala-list/2009-October/msg00139.html
First approache of the code
=======================
Let's see what we can do !
Directories
----------------
Here are the directories, with comments:
data/ icons, images and templates used by latexila
docs/ reference manual
help/ reference files (and some translations?)
m4/ macro for valac
man/ manpage
po/ language files for latexila
src/ code in vala !
tests/ code coverage and test tools
vapi/ ?
Main
--------
Use of two ```main```:
- one for command line call
- one for app call
Interesting files/methods
-----------------------
- document -> parser
- document_structure -> variables and structures to describe a document
- get_markup_type
- search_markup
- get_markup_content
- handle_item
- completion -> ```CompletionProvider```
# ```Parser()``` calls
What happens when a document is save (parsing POV)
### Methods
1. File: main_window.vala | Method: save_document(Document doc, bool force_save_as)
2. File: structure.vala | Method: public void refresh ()
3. File: structure.vala | Method: private void show_document (Document? doc, bool force_parse = false)
### Summary
When a document is saved (i.e. when the method 1 is called) and if thsi document is the active one,
the doc structure is refresh via ```_main_window_structure.refresh ();``` (2)
The method called refresh (2)is a single call to the method 3 with the argument force_parse set at True. It
fullfill the condition ```if (force_parse)``` and call the method ```_document_structure.parse ();```
That's all folks!
\ No newline at end of file
HowTo build latexila
=================
*A hopefully short but deseperatly long todo-list*
Edited in **Markdown**, following [GitHub](https://help.github.com/articles/markdown-basics/)
syntax.
The downloadseption
---------------------------------
### I want data
1. install git
2. use it to clone gnome's latexila repo with
git clone git://git.gnome.org/latexila
3. now the tools : ```git clone git://git.gnome.org/gnome-common```
4. activate the source repo in source.list and refresh packet manager
5. install some packages(1) :
#### Ubuntu 14.10/Debian-testing
sudo apt-get build-dep latexila
get sources requirements, then
sudo apt-get install gtk-doc-tools gnome-devel gobject-introspection
(that's _super_ heavy !)
**Ubuntu** PPA for **valac** v0.25.4
sudo add-apt-repository ppa:vala-team
Optional ? ```sudo apt-get install gnome-core-devel gnome-platform-devel```
#### Fedora 20
Install latexila's dependencies
yum-builddep latexila
OR
Install Jhbuild.
To learn how to install Jhubuild and then compile Latexila, read the “HowtoJhbuild.md” file!
##### References
- [APT - Build dependencies of a package](http://askubuntu.com/questions/21379/how-do-i-find-the-build-dependencies-of-a-package)
- [vala-team/ppa](https://launchpad.net/~vala-team/+archive/ubuntu/ppa)
- [jhbuild for dependencies](https://wiki.gnome.org/Projects/Jhbuild/Dependencies/Fedora)
Install it
------------
### Gimme code
_Maybe this step can be skipped with appropriate packages ?_
1. Configure *gnome-commons* by using ``` ./autogen.sh ```
2. Build and install ```sudo make install```
For later - Setup a working dev-env
-------------------------------------
1. Install vim
2. Learn to use vim
3. Install vim-airline
4. Install vim-fugitive
5. Install vala.vim
6. Learn how to use git
7. ...
Jhbuild is awesome
==================
This is how Gnome describes Jhbuild:
> Jhbuild is the recommended way to build and run GNOME development code. It will download the code,
> configure and build it for you, in a way that does not interfere with or modify your existing system
Installation
------------
Follow these instructions -> [Jhbuild](https://wiki.gnome.org/HowDoI/Jhbuild) and you might need to intall this
[dependencies under Fedora](https://wiki.gnome.org/Projects/Jhbuild/Dependencies/Fedora). Mind what you're doing.
When jhbuild is installed, copy the config file relative to your project in ~/.config/jhbuildrc.
Install a software for me please
--------------------------------
To install and build latexila and (quite) all his dependencies use :
jhbuild build latexila
You may need other modules you can install with :
jhbuild buildone *module*
Run a software
-----------------
To run latexila :
jhbuild run latexila
Tips
----
If you got this : ”*configure: error: vapigen not found*”, you have to install vala :
jhbuild buildone vala
The Latexila source folder is located in **prefix_install**/jhbuild/checkout/latexila. Remember ```ln -s ```.
File deleted
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/PR-SVG-20010719/DTD/svg10.dtd">
<svg width="51cm" height="35cm" viewBox="19 381 1020 694" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g>
<rect style="fill: #ffffff" x="200" y="540" width="433.5" height="58"/>
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="200" y="540" width="433.5" height="58"/>
<text font-size="12.8" style="fill: #000000;text-anchor:middle;font-family:monospace;font-style:normal;font-weight:normal" x="416.75" y="556">&lt;&lt;Window&gt;&gt;</text>
<text font-size="16" style="fill: #000000;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:700" x="416.75" y="575">MainWindow</text>
<text font-size="11.2" style="fill: #000000;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:normal" x="416.75" y="590.5">Manage main window and documents</text>
<rect style="fill: #ffffff" x="200" y="598" width="433.5" height="164"/>
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="200" y="598" width="433.5" height="164"/>
<text font-size="12.8" style="fill: #000000;text-anchor:start;font-family:monospace;font-style:normal;font-weight:normal" x="203" y="612">-_action_entries: Gtk.ActionEntry[]</text>
<text font-size="12.8" style="fill: #000000;text-anchor:start;font-family:monospace;font-style:normal;font-weight:normal" x="203" y="628">-_toggle_action_entries: ToggleActionEntry[]</text>
<text font-size="12.8" style="fill: #000000;text-anchor:start;font-family:monospace;font-style:normal;font-weight:normal" x="203" y="644">+default_location: string = Environment.get_home_dir ()</text>
<text font-size="12.8" style="fill: #000000;text-anchor:start;font-family:monospace;font-style:normal;font-weight:normal" x="203" y="660">-_statusbar: CustomStatusbar</text>
<text font-size="12.8" style="fill: #000000;text-anchor:start;font-family:monospace;font-style:normal;font-weight:normal" x="203" y="676">-_ui_manager: UIManager</text>
<text font-size="12.8" style="fill: #000000;text-anchor:start;font-family:monospace;font-style:normal;font-weight:normal" x="203" y="692">-_action_group: Gtk.ActionGroup</text>
<text font-size="12.8" style="fill: #000000;text-anchor:start;font-family:monospace;font-style:normal;font-weight:normal" x="203" y="708">-_latex_action_group: Gtk.ActionGroup</text>
<text font-size="12.8" style="fill: #000000;text-anchor:start;font-family:monospace;font-style:normal;font-weight:normal" x="203" y="724">-_main_window_file: MainWindowFile</text>
<text font-size="12.8" style="fill: #000000;text-anchor:start;font-family:monospace;font-style:normal;font-weight:normal" x="203" y="740">+_main_window_edit: MainWindowEdit</text>
<text font-size="12.8" style="fill: #000000;text-anchor:start;font-family:monospace;font-style:normal;font-weight:normal" x="203" y="756">+</text>
<rect style="fill: #ffffff" x="200" y="762" width="433.5" height="8"/>
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="200" y="762" width="433.5" height="8"/>
</g>
<g>
<rect style="fill: #ffffff" x="140" y="800" width="194.8" height="44"/>
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="140" y="800" width="194.8" height="44"/>
<text font-size="12.8" style="fill: #000000;text-anchor:middle;font-family:monospace;font-style:normal;font-weight:normal" x="237.4" y="816">&lt;&lt;Notebook&gt;&gt;</text>
<text font-size="16" style="fill: #000000;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:700" x="237.4" y="835">DocumentsPanel</text>
<rect style="fill: #ffffff" x="140" y="844" width="194.8" height="20"/>
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="140" y="844" width="194.8" height="20"/>
<text font-size="12.8" style="fill: #000000;text-anchor:start;font-family:monospace;font-style:normal;font-weight:normal" x="143" y="858">+active_tab: DocumentTab</text>
<rect style="fill: #ffffff" x="140" y="864" width="194.8" height="8"/>
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="140" y="864" width="194.8" height="8"/>
</g>
<g>
<polyline style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="416.75,795.172 416.75,836 335.806,836 "/>
<polygon style="fill: #ffffff" points="416.75,770 421.55,784 416.75,798 411.95,784 "/>
<polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="416.75,770 421.55,784 416.75,798 411.95,784 "/>
</g>
<g>
<rect style="fill: #ffffff" x="820" y="740" width="158.2" height="28"/>
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="820" y="740" width="158.2" height="28"/>
<text font-size="16" style="fill: #000000;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:700" x="899.1" y="759">MainWindowFile</text>
<rect style="fill: #ffffff" x="820" y="768" width="158.2" height="8"/>
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="820" y="768" width="158.2" height="8"/>
<rect style="fill: #ffffff" x="820" y="776" width="158.2" height="8"/>
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="820" y="776" width="158.2" height="8"/>
</g>
<g>
<rect style="fill: #ffffff" x="820" y="660" width="160.95" height="28"/>
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="820" y="660" width="160.95" height="28"/>
<text font-size="16" style="fill: #000000;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:700" x="900.475" y="679">MainWindowEdit</text>
<rect style="fill: #ffffff" x="820" y="688" width="160.95" height="8"/>
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="820" y="688" width="160.95" height="8"/>
<rect style="fill: #ffffff" x="820" y="696" width="160.95" height="8"/>
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="820" y="696" width="160.95" height="8"/>
</g>
<g>
<rect style="fill: #ffffff" x="820" y="560" width="217.15" height="28"/>
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="820" y="560" width="217.15" height="28"/>
<text font-size="16" style="fill: #000000;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:700" x="928.575" y="579">MainWindowDocument</text>
<rect style="fill: #ffffff" x="820" y="588" width="217.15" height="8"/>
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="820" y="588" width="217.15" height="8"/>
<rect style="fill: #ffffff" x="820" y="596" width="217.15" height="8"/>
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="820" y="596" width="217.15" height="8"/>
</g>
<g>
<polyline style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="659.678,655 733.748,655 733.748,682 818.99,682 "/>
<polygon style="fill: #ffffff" points="634.507,655 648.507,650.2 662.507,655 648.507,659.8 "/>
<polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="634.507,655 648.507,650.2 662.507,655 648.507,659.8 "/>
</g>
<g>
<polyline style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="659.678,655 733.748,655 733.748,762 818.99,762 "/>
<polygon style="fill: #ffffff" points="634.507,655 648.507,650.2 662.507,655 648.507,659.8 "/>
<polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="634.507,655 648.507,650.2 662.507,655 648.507,659.8 "/>
</g>
<g>
<polyline style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="659.678,655 733.75,655 733.75,582 818.993,582 "/>
<polygon style="fill: #ffffff" points="634.507,655 648.507,650.2 662.507,655 648.507,659.8 "/>
<polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="634.507,655 648.507,650.2 662.507,655 648.507,659.8 "/>
</g>
<g>
<rect style="fill: #ffffff" x="520" y="800" width="219.35" height="28"/>
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="520" y="800" width="219.35" height="28"/>
<text font-size="16" style="fill: #000000;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:700" x="629.675" y="819">MainWindowBuildTools</text>
<rect style="fill: #ffffff" x="520" y="828" width="219.35" height="8"/>
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="520" y="828" width="219.35" height="8"/>
<rect style="fill: #ffffff" x="520" y="836" width="219.35" height="8"/>
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="520" y="836" width="219.35" height="8"/>
</g>
<g>
<polyline style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="416.75,796.179 416.75,822 518.993,822 "/>
<polygon style="fill: #ffffff" points="416.75,771.007 421.55,785.007 416.75,799.007 411.95,785.007 "/>
<polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="416.75,771.007 421.55,785.007 416.75,799.007 411.95,785.007 "/>
</g>
<g>
<rect style="fill: #ffffff" x="180" y="920" width="166.6" height="44"/>
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="180" y="920" width="166.6" height="44"/>
<text font-size="12.8" style="fill: #000000;text-anchor:middle;font-family:monospace;font-style:normal;font-weight:normal" x="263.3" y="936">&lt;&lt;Statusbar&gt;&gt;</text>
<text font-size="16" style="fill: #000000;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:700" x="263.3" y="955">CustomStatusbar</text>
<rect style="fill: #ffffff" x="180" y="964" width="166.6" height="8"/>
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="180" y="964" width="166.6" height="8"/>
<rect style="fill: #ffffff" x="180" y="972" width="166.6" height="8"/>
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="180" y="972" width="166.6" height="8"/>
</g>
<g>
<rect style="fill: #ffffff" x="20" y="400" width="96.7" height="44"/>
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="20" y="400" width="96.7" height="44"/>
<rect style="fill: #ffffff" x="20" y="382" width="30" height="18"/>
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="20" y="382" width="30" height="18"/>
<text font-size="12.7998" style="fill: #000000;text-anchor:start;font-family:monospace;font-style:normal;font-weight:normal" x="26" y="433.9">
<tspan x="26" y="433.9">Glib</tspan>
</text>
<text font-size="12.7998" style="fill: #000000;text-anchor:start;font-family:monospace;font-style:normal;font-weight:normal" x="26" y="417.9">&lt;&lt;Library&gt;&gt;</text>
</g>
<g>
<rect style="fill: #ffffff" x="520" y="880" width="219.15" height="56"/>
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="520" y="880" width="219.15" height="56"/>
<text font-size="16" style="fill: #000000;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:700" x="629.575" y="899">MainWindowStructure</text>
<text font-size="11.2" style="fill: #000000;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:normal" x="629.575" y="914.5">stuff for the structure (the list of</text>
<text font-size="11.2" style="fill: #000000;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:normal" x="629.575" y="928.5">chapters, sections, ... of a document)</text>
<rect style="fill: #ffffff" x="520" y="936" width="219.15" height="8"/>
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="520" y="936" width="219.15" height="8"/>
<rect style="fill: #ffffff" x="520" y="944" width="219.15" height="8"/>
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="520" y="944" width="219.15" height="8"/>
</g>
<g>
<rect style="fill: #ffffff" x="140" y="1000" width="206.3" height="58"/>
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="140" y="1000" width="206.3" height="58"/>
<text font-size="12.8" style="fill: #000000;text-anchor:middle;font-family:monospace;font-style:normal;font-weight:normal" x="243.15" y="1016">&lt;&lt;Namespace&gt;&gt;</text>
<text font-size="16" style="fill: #000000;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:700" x="243.15" y="1035">Utils</text>
<text font-size="11.2" style="fill: #000000;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:normal" x="243.15" y="1050.5">Utilities for String, URI, Path and UI</text>
<rect style="fill: #ffffff" x="140" y="1058" width="206.3" height="8"/>
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="140" y="1058" width="206.3" height="8"/>
<rect style="fill: #ffffff" x="140" y="1066" width="206.3" height="8"/>
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="140" y="1066" width="206.3" height="8"/>
</g>
<g>
<polyline style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="416.75,796.167 416.75,900 263.3,900 263.3,919.019 "/>
<polygon style="fill: #ffffff" points="416.75,770.995 421.55,784.995 416.75,798.995 411.95,784.995 "/>
<polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="416.75,770.995 421.55,784.995 416.75,798.995 411.95,784.995 "/>
</g>
<g>
<polyline style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="416.75,796.135 416.75,860 629.575,860 629.575,878.997 "/>
<polygon style="fill: #ffffff" points="416.75,770.963 421.55,784.963 416.75,798.963 411.95,784.963 "/>
<polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="416.75,770.963 421.55,784.963 416.75,798.963 411.95,784.963 "/>
</g>
<g>
<rect style="fill: #ffffff" x="349.297" y="385.73" width="133.4" height="58"/>
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="349.297" y="385.73" width="133.4" height="58"/>
<text font-size="12.8" style="fill: #000000;text-anchor:middle;font-family:monospace;font-style:normal;font-weight:normal" x="415.997" y="401.73">&lt;&lt;Application&gt;&gt;</text>
<text font-size="16" style="fill: #000000;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:700" x="415.997" y="420.73">LatexilaApp</text>
<text font-size="11.2" style="fill: #000000;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:normal" x="415.997" y="436.23">Set application theme</text>
<rect style="fill: #ffffff" x="349.297" y="443.73" width="133.4" height="8"/>
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="349.297" y="443.73" width="133.4" height="8"/>
<rect style="fill: #ffffff" x="349.297" y="451.73" width="133.4" height="8"/>
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="349.297" y="451.73" width="133.4" height="8"/>
</g>
<g>
<polyline style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="415.997,485.91 415.997,506.866 416.75,506.866 416.75,538.993 "/>
<polygon style="fill: #ffffff" points="415.997,460.739 420.797,474.739 415.997,488.739 411.197,474.739 "/>
<polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="415.997,460.739 420.797,474.739 415.997,488.739 411.197,474.739 "/>
</g>
<g>
<polyline style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 8; stroke: #000000" points="348.289,422.73 236.997,422.73 236.997,422 124.411,422 "/>
<polyline style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="137.059,417 121.059,422 137.059,427 "/>
</g>
<g>
<polyline style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 8; stroke: #000000" points="200,656 200,660 68.35,660 68.35,451.599 "/>
<polyline style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="73.35,464.246 68.35,448.246 63.35,464.246 "/>
</g>
</svg>