From 7cf03481ea57916b36db33fe0cc2bb7cea22dc64 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20Pirkl?= <pirkl.theo@gmail.com> Date: Sat, 29 Feb 2020 22:17:14 +0100 Subject: [PATCH] Splendid. --- rapport/Makefile | 11 +++--- rapport/config.yaml | 7 ++-- rapport/meta-vars.lua | 62 +++++++++++++++++++++++++-------- rapport/templates/default.latex | 10 +++--- rapport/text/0-preface.md | 23 +++++++----- rapport/text/1-references.md | 4 +-- rapport/text/3-etude.md | 27 +++++++++++--- rapport/text/ZZ-glossaire.tex | 9 +++++ 8 files changed, 110 insertions(+), 43 deletions(-) create mode 100644 rapport/text/ZZ-glossaire.tex diff --git a/rapport/Makefile b/rapport/Makefile index 6646fca..c34f21e 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 ac082d2..6f3b14e 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 0a39558..eebede7 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 b55fb4b..a044dfc 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 1cd69aa..a3e0495 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 12a9851..7702155 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 64ad9e4..e47e201 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 0000000..299d8e6 --- /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 -- GitLab