Depuis mes études à l'université, j'ai utilisé LaTeX pour concevoir des documents de laboratoire et des trimestres. J'ai rencontré LaTeX pour la première fois à Coursera, sur le cours « Documents et présentations à LaTeX ».
Dans cet article, je vais décrire comment j'ai écrit un diplôme en utilisant LaTeX et pourquoi j'ai utilisé GitHub, Docker et TravisCI.

Préface
Mon chemin vers l'édition et la création de documents a commencé avec Microsoft Word, probablement comme beaucoup. Après être passé de Windows à Linux, j'ai facilement commencé à utiliser OpenOffice puis LibreOffice, qui dans mes tâches n'était pas inférieur en termes de fonctionnalités à Word.
Cela a été un peu douloureux lorsque j'ai écrit un essai dans la salle informatique de la bibliothèque dans OpenOffice et que je l'ai porté sur une impression sur l'ordinateur d'administration avec Microsoft Word, et toutes les mises en forme volent. A cette époque scolaire, personne ne m'expliquait que l'on pouvait sauvegarder un document en PDF et l'imprimer sans problème, je l'ai déjà découvert quand j'étais à l'université et il fallait imprimer des documents presque tous les jours.
Revenons à LaTeX, avant de l'utiliser, tout ce que j'ai entendu à propos de LaTeX, c'est qu'ils l'utilisent pour écrire des articles dans des revues scientifiques, car il est très pratique pour travailler avec des formules. Ceux qui pensent la même chose, je recommande de regarder le cours sur Coursera, peut-être que cela changera d'avis, par exemple j'ai vraiment aimé.
Bonjour, World sur LaTeX:
\documentclass{article} \begin{document} Hello, World! \end{document}
Soit dit en passant, avec l'aide de LaTeX, vous pouvez faire des présentations. Vous pouvez voir ici de nombreux exemples de l'apparence de ces présentations.
Licence avec LaTeX
À la fin de la troisième année, j'avais déjà utilisé activement LaTeX pour rédiger presque tous les documents, il a été décidé d'écrire un diplôme de licence avec .
Au début, j'ai utilisé LaTeXila comme un IDE, dans lequel le projet a été construit avec un seul bouton, je pouvais connecter le correcteur orthographique, mais il s'est parfois planté et ralenti, alors j'ai commencé à utiliser Sublime Text avec le Makefile.
Exemple de Makefile:
all: build run build: latexmk -xelatex -synctex=1 main.tex run: xreader main.pdf & clean: rm *.aux *.fdb_latexmk *.fls *.log *.out *.synctex.gz *.toc
Toutes les sources ont été stockées dans git, pour la commodité de la collaboration avec le superviseur, j'ai utilisé GitHub. La structure du projet était très simple, le préambule et les autres chapitres qui étaient stockés dans un répertoire séparé étaient connectés au fichier main.tex
.
main.tex:
\documentclass[a4paper,14pt]{extarticle}
La description de tous les styles et de la mise en forme se trouve dans le fichier preamble.tex
, qui est preamble.tex
au tout début du document.
Il était très pratique de ne pas se soucier de la mise en forme du contenu, de la bibliographie et des autres parties du diplôme.

Table des matières
Je décrirai mes avantages lorsque je travaille avec LaTeX, par rapport aux éditeurs WYSIWYG:
- versionnabilité pratique (au lieu de diploma.odt , diploma_01.01.2015.odt , diploma_fix_print.odt - versioning dans git et possibilité de revenir à n'importe quel commit)
- lorsque vous cliquez accidentellement sur quelque chose, la mise en page ne plante pas (cela m'est arrivé)
- paramètres flexibles (qui ne sont pas toujours disponibles dans les éditeurs WYSIWYG ou qui ne sont pas évidents)
- environnement homogène pour tout (les sources de présentation sont dans le même référentiel que le diplôme)
- la possibilité de collaboration (le responsable diplômé peut regarder dans le référentiel ce qui a changé depuis le dernier contrôle)
- pratique à utiliser comme modèle pour de nombreux documents différents
- il est pratique d'inclure des insertions telles que le code source par exemple ou des fichiers PDF supplémentaires
Voici un exemple de la facilité à inclure un fichier source dans un document:
\lstinputlisting[numbers=left]{inc/ddos-deflate/ddos.sh}

Le code source connecté dans le document
Il n'y a qu'un seul inconvénient à utiliser LaTeX pour moi - vous devez passer du temps afin de tout peaufiner jusqu'au résultat souhaité. J'ai même voulu m'embrouiller un instant pour redessiner tous les diagrammes et les diagrammes en natif en utilisant TikZ , mais cela a pris beaucoup de temps, j'ai donc calmement utilisé Google Drawings et draw.io pour cela.
Ayant défendu avec succès mon diplôme de bachelier et acquis quelques connaissances sur le travail avec git, GitHub, Makefile, LaTeXStackExchange google en anglais, j'ai oublié le diplôme pendant quelques années afin d'utiliser mon modèle pour écrire un diplôme de master.
Maîtrise
À l'époque où j'étudiais à la magistrature, j'ai commencé à m'impliquer dans les outils d'ingénierie, tels que Docker, à commencer à pratiquer avec les outils d'intégration continue et à étudier les pratiques DevOps. Il était également intéressant pour moi de concevoir magnifiquement mes projets open source pour animaux de compagnie avec de beaux fichiers README.
En général, lorsque j'ai commencé à rédiger un diplôme de maîtrise , les conditions d'inscription n'ont pas beaucoup changé, j'ai donc pris le modèle de mon diplôme de bachelier et l'ai rempli sur des bagatelles, par exemple, des éléments tels qu'une liste de matériel illustratif, une liste d'abréviations, etc. Lors de la défense du baccalauréat, nous avons utilisé des affiches de taille A1 et dans le master, nous étions déjà autorisés à utiliser des présentations sous forme de diapositives.J'ai donc également composé les diapositives en utilisant LaTeX et beamer.

Mise en page avec LaTeX et beamer
Emporté par le concept de CI, j'ai pensé, pourquoi ne pas collecter un nouveau PDF à chaque fois que vous vous engagez dans le référentiel? La connexion de GitHub à TravisCI n'a pris que quelques minutes. Bien que TravisCI ne sache pas comment travailler directement avec LaTeX, mais cela fonctionne très bien avec Docker. Cool, je pensais, je vais tuer plusieurs oiseaux avec une pierre:
- s'entraîner à écrire un dockerfile
- Je vais migrer tous les packages LaTeX vers Docker (et il y en a beaucoup et ils sont assez lourds)
- s'entraîner à utiliser TravisCI
- J'aiderai ceux qui voudront soudain un jour utiliser mon modèle sur un système d'exploitation non Linux
Écrire un fichier de configuration pour TravisCI, Dockerfile et éditer Makefile n'a pas pris beaucoup de temps et cela s'est avéré très pratique.
Une partie du Makefile pour exécuter une construction de projet dans Docker:
... docker: docker build -t docker-latex . docker run -ti -v ${PWD}:/master-thesis:Z docker-latex bash -c "make build && make clean" docker run -ti -v ${PWD}:/master-thesis:Z docker-latex bash -c "make -C presentation && make -C presentation clean"
Maintenant, le superviseur diplômé ne pouvait pas seulement voir mes modifications dans le code, mais aussi une version inventée du document.

Communiqués
Ayant terminé le diplôme sous la forme dont j'avais besoin, j'ai décidé de partager le modèle avec la communauté, par analogie avec mon baccalauréat. Il a été décidé d'agencer magnifiquement le fichier README du référentiel, car c'est le visage du projet. La personne qui a trouvé votre projet sur Internet doit immédiatement comprendre comment assembler le projet et quoi en faire en utilisant le fichier README.

Fichier README.md
Bientôt, je dois écrire un troisième diplôme et je pense que mon approche de l'écriture ne changera pas du tout et je consacrerai très peu de temps à sa conception. Étant donné que je suis passé de Linux à Mac OS, la transition sera complètement indolore, car il existe un Docker.
Résumé
L'intérêt habituel pour LaTeX m'a permis de plonger un peu plus dans ce domaine:
- «avoir un coup de main» lorsque vous travaillez avec LaTeX, ce qui a ensuite permis de gagner du temps lors de la création de documents et de présentations
- acquis de l'expérience en travaillant avec git et GitHub tout en travaillant avec ces projets pour animaux de compagnie
- utilisé dans la pratique des choses comme Docker et TravisCI, ce qui m'a donné une bonne impulsion lors de l'immersion dans DevOps
- appris à organiser soigneusement leurs projets pour animaux de compagnie
Réponses aux questions potentielles
Pourquoi enregistrez-vous des fichiers PDF dans le référentiel?
Uniquement pour que la personne qui est entrée dans le référentiel puisse non seulement voir la source, mais aussi voir le résultat de tout cela sans télécharger la version.
Pourquoi beaucoup de choses ne sont-elles pas entièrement automatisées, comme la bibliographie?
Pour une raison ou une autre, je ne suis pas allé plus loin, peut-être que ceux qui ont des centaines de sources de littérature utilisée seront blessés.
Le modèle est-il conforme à GOST / DSTU?
Je n'étais guidé que par les exigences du normocontrôleur, donc pas vraiment.
Traduction de l'article en anglais en moyen .