diff --git a/rapport/Makefile b/rapport/Makefile index 6646fcaa647a247d1cda57613ed6031c42609a06..c34f21e951218d41d0ac2e2e2c1a21d52b8ff8ab 100644 --- a/rapport/Makefile +++ b/rapport/Makefile @@ -7,19 +7,20 @@ PDFOPTIONS += --pdf-engine xelatex PDFOPTIONS += --template=./templates/default.latex PDFOPTIONS += --top-level-division=chapter -PDFOPTIONS_START = --template=./templates/extremely-blank.latex # We just want to split the files, nothing else ! +PDFOPTIONS_START = --template=./templates/extremely-blank.latex +PDFOPTIONS_START += --pdf-engine xelatex MD=$(wildcard text/*.md) PDF=$(patsubst %.md,%.pdf,$(MD)) TEX=$(patsubst %.md,%.tex,$(MD)) -all: rapport.tex rapport.pdf +all: rapport.pdf -rapport.tex: config.yaml $(MD) +rapport.pdf: rapport.tex pandoc -s $(OPTIONS) $(PDFOPTIONS_START) $^ -o $@ -rapport.pdf: config.yaml $(MD) +rapport.tex: config.yaml $(MD) pandoc -s $(OPTIONS) $(PDFOPTIONS) $^ -o $@ clean: - rm -rf text/*.pdf text/*.tex rapport.pdf rapport.tex \ No newline at end of file + rm -rf rapport.pdf rapport.tex \ No newline at end of file diff --git a/rapport/config.yaml b/rapport/config.yaml index ac082d2672e521f77dc0238eeabfa111cca76708..6f3b14e9fa732b718d5a7115ad146a76ae861f8f 100644 --- a/rapport/config.yaml +++ b/rapport/config.yaml @@ -13,6 +13,7 @@ sensei: Docteur Orestis Malaspinas mandator: Aucun frontLogoSourceURL: https://unsplash.com/photos/nE2HV5AUXFo dedicasse: +projectTitle: Projet de semestre autoSectionLabels: false autoEqnLabels: true lang: fr @@ -23,7 +24,7 @@ geometry: - left=25mm - right=25mm - headheight=25mm -- top=25mm +- top=30mm - bottom=25mm toc: true toc-depth: 3 @@ -32,8 +33,10 @@ header-includes: | \usepackage{graphicx} \usepackage{sectsty} \usepackage{enumitem} + \usepackage[toc]{glossaries} + \makenoidxglossaries \sectionfont{\fontsize{13}{17}\selectfont} \subsectionfont{\fontsize{11}{13}\selectfont} \setlist[itemize]{label=\textbullet} - + \input{text/ZZ-glossaire.tex} --- \ No newline at end of file diff --git a/rapport/meta-vars.lua b/rapport/meta-vars.lua index 0a39558a1d502017b37e95909d92bbb583776e54..eebede7c0a53bd5274617aed7c5bfe4262a9d7ed 100644 --- a/rapport/meta-vars.lua +++ b/rapport/meta-vars.lua @@ -1,19 +1,53 @@ -local vars = {} +function replace(front, ac, back, command) -function get_vars (meta) - for k, v in pairs(meta) do - if type(v) == 'table' and v.t == 'MetaInlines' then - vars["%" .. k .. "%"] = {table.unpack(v)} - end - end + new_str = string.format("%s\\%s{%s}%s", front, command, ac, back) + + return new_str end -function replace (el) - if vars[el.text] then - return pandoc.Span(vars[el.text]) - else - return el +function Str(el) + + front, capital, plural, ac, apostrophe, back = el.text:match( + "(%g*)%(([%+%-]+)(%^-)(%w+[_%-]*%w*)%)([%\u{0027}%\u{2019}]*)(%g*)" + ) + + if ac ~= "" then + if plural == "^" then + if capital == "++" then + command = "Glspl" + elseif capital == "+" then + command = "glspl" + elseif capital == "-+" then + command = "Glsentryplural" + elseif capital == "-" then + command = "glsentryplural" + else + -- Unknown command string so just return the element unchanged + return el + end + else + if capital == "++" then + command = "Gls" + elseif capital == "+" then + command = "gls" + elseif capital == "-+" then + command = "Glsentryname" + elseif capital == "-" then + command = "glsentryname" + else + -- Unknown command string so just return the element unchanged + return el + end + end + + if apostrophe == "\u{0027}" or apostrophe == "\u{2019}" then + if back ~= "" then + back = string.format("\\textquotesingle %s", back) + else + back = "\\textquotesingle\\space" + end + end + + return pandoc.RawInline("tex", replace(front, ac, back, command)) end end - -return {{Meta = get_vars}, {Str = replace}} diff --git a/rapport/templates/default.latex b/rapport/templates/default.latex index b55fb4b9d22b6cd70ba02668d5877f2f8a26f777..a044dfccb928964cd23837a1ff3f99975c40ad14 100644 --- a/rapport/templates/default.latex +++ b/rapport/templates/default.latex @@ -243,21 +243,21 @@ $endif$ \titleformat{\subsection}{\normalfont\bfseries}{\thesubsection. }{10pt}{} \backgroundsetup{ contents={% - \small{$name$, $surname$ - $smallTitle$ - Projet de semestre - Mars $year$} + \small{$name$, $surname$ - $smallTitle$ - $projectTitle$ - Mars $year$} }, position={3.9, 0} } % END OF CUSTOM PACKAGE ROUTINES % CUSTOM ROUTINES -\renewcommand{\thesubsection}{\thesection.\alph{subsection}} -\usepackage{setspace} -\onehalfspacing +\renewcommand{\thesubsection}{\thesection.\alph{subsection}} % Pour définir les sous sections en mode 1.1.A et non pas 1.1.1 +\usepackage{setspace} % Interligne +\onehalfspacing % END OF CUSTOM ROUTINES \begin{document} % Sets the page numbering style to roman -\pagestyle{headings} +%\pagestyle{headings} \setcounter{page}{1} \pagenumbering{roman} diff --git a/rapport/text/0-preface.md b/rapport/text/0-preface.md index 1cd69aa3a5715ab0fcf9e35dbde983b6e3490b4f..a3e049500322635dd2bea622d0376c9679611be7 100644 --- a/rapport/text/0-preface.md +++ b/rapport/text/0-preface.md @@ -14,15 +14,20 @@ ce projet de semestre. Texte de votre résumé Texte de votre résumé Texte de votre résumé Texte de votre résumé Texte de votre résumé Texte de votre résumé Texte de votre résumé Texte de votre résumé Texte de votre résumé Texte de votre résumé Texte de votre résumé Texte de votre résumé Texte de votre résumé Texte de votre résumé Texte de votre résumé Texte de votre résumé Texte de votre résumé Texte de votre résumé Texte de votre résumé Texte de votre résumé Texte de votre résumé Texte de votre résumé Texte de votre résumé Texte de votre résumé Texte de votre résumé Texte de votre résumé Texte de votre résumé Texte de votre résumé Texte de votre résumé Texte de votre résumé Texte de votre résumé Texte de votre résumé Texte de votre résumé Texte de votre résumé Texte de votre résumé Texte de votre résumé Texte de votre résumé Texte de votre résumé Texte de votre résumé Texte de votre résumé Texte de votre résumé Texte de votre résumé Texte de votre résumé Texte de votre résumé Texte de votre résumé Texte de votre résumé Texte de votre résumé Texte de votre résumé Texte de votre résumé Texte de votre résumé Texte de votre résumé Texte de votre résumé Texte de votre résumé Texte de votre résumé Texte de votre résumé Texte de votre résumé Texte de votre résumé Texte de votre résumé Texte de votre résumé Texte de votre résumé Texte de votre résumé Texte de votre résumé Texte de votre résumé Texte de votre résumé Texte de votre résumé Texte de votre résumé Texte de votre résumé Texte de votre résumé Texte de votre résumé Texte de votre résumé - -\begin{center} +\begin{figure} + \vspace{.25cm} + \begin{center} \includegraphics[width=6cm,height=6cm]{figs/front-logo.png} - \begin{tabular}{ p{6cm} p{1cm} p{1cm} p{6cm} } - \multicolumn{1}{c}{Candidat :}& & & \multicolumn{1}{c}{Professeur-e(s) responsable(s) :}\\ - \multicolumn{1}{c}{\textbf{Théo PIRKL}} & & & \multicolumn{1}{l}{\textbf{Docteur Orestis Malaspinas}} \\ - \multicolumn{1}{c}{Filière d'études : ITI} & & & \multicolumn{1}{l}{Travail de semestre soumis à une convention de stage en entreprise : non} \\ - \multicolumn{1}{c}{} & & & \multicolumn{1}{l}{Travail soumis à un contrat de confidentialité : non} \\ - \end{tabular} -\end{center} + \end{center} + \vspace{.5cm} +\end{figure} +\begin{tabular}{ p{3cm} p{1cm} p{1cm} p{6cm} } + \multicolumn{1}{l}{Candidat :}& & & \multicolumn{1}{l}{Professeur-e(s) responsable(s) :}\\ + \multicolumn{1}{l}{\textbf{Théo PIRKL}} & & & \multicolumn{1}{l}{\textbf{Docteur Orestis Malaspinas}} \\ + \multicolumn{1}{l}{Filière d'études : ITI} & & & \multicolumn{1}{l}{Travail de semestre soumis à une convention de stage en} \\ + \multicolumn{1}{l}{} & & & \multicolumn{1}{l}{entreprise : non} \\ + \multicolumn{1}{l}{} & & & \multicolumn{1}{l}{Travail soumis à un contrat de confidentialité : non} \\ +\end{tabular} + \pagebreak \ No newline at end of file diff --git a/rapport/text/1-references.md b/rapport/text/1-references.md index 12a985132fcdafb03bd9f15298a69dd934bb8c6b..7702155652735d17f3a7a18e69ecd52c3bd6e7c6 100644 --- a/rapport/text/1-references.md +++ b/rapport/text/1-references.md @@ -1,6 +1,4 @@ -# Liste des acronymes {-} - -- HTTP : HyperText Transfer Protocol +\printnoidxglossary[sort=word,title=Glossaire,nonumberlist] \listoffigures diff --git a/rapport/text/3-etude.md b/rapport/text/3-etude.md index 64ad9e441d0a5bc435e8c5e7fdcd7fc54ac43c71..e47e20165a9709112dc07889dc020eadd8ff331c 100644 --- a/rapport/text/3-etude.md +++ b/rapport/text/3-etude.md @@ -1,8 +1,7 @@ # Etude des approches actuelles -Il est aujourd'hui difficile de récupérer des documents en masse. On entend par *en masse* la capacité à télécharger des documents -en grande quantité, selon certains critères ou non. Sans connaissances en informatique poussées, il est véritablement complexe pour -un utilisateur lambda d'arriver à ses fins dans ce domaine. +Il est aujourd'hui difficile de récupérer des documents en masse[^1]. Sans connaissances en informatique poussées, il est véritablement +complexe pour un utilisateur lambda d'arriver à ses fins dans ce domaine. On dénombre aujourd'hui différentes possibilités de récupérer une quantité importante de documents; aucune de ces dernières ne pose un véritable standard de comment s'y prendre. Et à raison : Internet étant certainement l'outil possédant des ressources des plus variées, chaque site web, application ou service propose le téléchargement de documents d'une façon différente. @@ -12,12 +11,30 @@ comparer les solutions actuelles avec celle proposée dans ce travail. Ensuite, la solution ici implémentée; nous verrons ensuite plusieurs exemples d'application de ma solution, pour enfin aboutir sur une analyse critique de ce qui a été dit jusque là. +[^1]: On entend par *en masse* la capacité à télécharger des documents en grande quantité, selon certains critères ou non. + ## Etude et analyse Nous allons dans ce travail nous limiter uniquement et volontairement aux sites web comme seule source d'information possible; autrement dit, nous allons exclure par exemple la récupération de documents via une application installée sur un poste. -Certains fournisseurs de données (entreprises, entités étatiques, etc.) facilitient l'obtention des documents à travers certains services. -Commencons par énumérer ces dernières. + +Certains fournisseurs de données (entreprises, entités étatiques, etc.) facilitient l'obtention des documents, par exemple à l'aide d'une (+API_a), +d'une publication régulière sur des flux lisibles par ordinateurs; certains mêmes proposent encore l'envoi de CDs par la poste pour +récupérer les données. +Les (+API_a)s restent de nos jours la meilleure méthode de récupération de données; elle donne en effet la liberté à l'utilisateur final de faire +plus ou moins exactement ce qu'il souhaite. Ainsi, il est possible de récupérer des documents correspondant à certains critères sans +devoir télécharger l'entièreté du site, contrairement aux autres méthodes qui ne font "que" proposer un format de données déjà lisible +pour l'ordinateur. + +Malheureusement, les (+API_a)s ne font pas pléthore de nos jours. Beaucoup de sites ne proposent pas d\'(+API_a); dans le cas où elles en proposent, +elles sont souvent payantes, ou accessibles sur permission uniquement. Une (+API_a) représente dans la majorité des cas une fonctionnalité +supplémentaire au site, ce qui signifie des coûts d'exploitation plus élevés pour le propriétaire du site. + +Sans (+API_a), une seule source de données est accessible: le site web lui-même. Dans ce cas, la récupération de documents doit être faite soit +par un utilisateur de façon régulière, soit par une machine. C'est naturellement la seconde option que nous allons étudier ici. + +Il peut être étonnant de voir le manque de logiciel de (+scraping_g) existant sur le marché aujourd'hui. En vérité, il + ## Comparaison et résumé des approches existantes diff --git a/rapport/text/ZZ-glossaire.tex b/rapport/text/ZZ-glossaire.tex new file mode 100644 index 0000000000000000000000000000000000000000..299d8e6fc2f2f52da8772acbd2a9c53a08bc8a8d --- /dev/null +++ b/rapport/text/ZZ-glossaire.tex @@ -0,0 +1,9 @@ +% USAGE : https://github.com/tomncooper/pandoc-gls + +% Insérez les termes pour le glossaire ici. +\newglossaryentry{scraper_g}{name=scrapper,description=Logiciel permettant la récupération en masse de documents.} +\newglossaryentry{scraping_g}{name=scraping,description=Utilisation d'un \gls{scraper_g}} +\newglossaryentry{API_g}{name=API,description=Interface dans un logiciel ou un site permettant à des tierces parties d'interagir de façon controllée avec le service} + +% Insérez les termes pour la table des acronymes ici. +\newacronym{API_a}{API}{Application Programming Interface} \ No newline at end of file