Desde que estudei na universidade, usei o LaTeX para projetar trabalhos de laboratório e de estudos. Eu conheci o LaTeX pela primeira vez no Coursera, no curso " Documentos e apresentações no LaTeX ".
Neste artigo, descreverei como escrevi um diploma usando o LaTeX e por que usei o GitHub, Docker e TravisCI.

Prefácio
Meu caminho para editar e criar documentos começou com o Microsoft Word, provavelmente como muitos. Depois de mudar do Windows para o Linux, comecei facilmente a usar o OpenOffice primeiro e depois o LibreOffice, que em minhas tarefas não tinha funcionalidade inferior ao Word.
Foi um pouco doloroso quando escrevi um ensaio na sala de computadores da biblioteca no OpenOffice e o levei a uma impressão no computador de administração com o Microsoft Word, e todas as formatações voam. Na época da escola, ninguém me explicou que você pode salvar um documento em PDF e imprimir sem problemas, já descobri quando estava na universidade e era necessário imprimir documentos quase todos os dias.
Vamos voltar ao LaTeX, antes de usá-lo, tudo o que ouvi sobre o LaTeX é que eles o usam para escrever artigos em revistas científicas, porque é muito conveniente para trabalhar com fórmulas. Para quem pensa o mesmo, recomendo assistir o curso no Coursera, talvez isso mude de idéia, por exemplo, gostei muito.
Olá, Mundo no LaTeX:
\documentclass{article} \begin{document} Hello, World! \end{document}
A propósito, com a ajuda do LaTeX, você pode fazer apresentações. Aqui você pode ver muitos exemplos de como essas apresentações podem parecer.
Bacharel em LaTeX
No final do terceiro ano, eu já havia usado ativamente o LaTeX para redigir quase todos os documentos, foi decidido escrever um diploma de bacharel com ele .
No início, usei o LaTeXila como um IDE, no qual o projeto foi construído com um único botão, eu pude conectar o corretor ortográfico, mas às vezes travava e desacelerava, então comecei a usar Sublime Text com o Makefile.
Exemplo 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
Todas as fontes foram armazenadas no git, para facilitar a colaboração com o supervisor que usei o GitHub. A estrutura do projeto era muito simples, o preâmbulo e outros capítulos armazenados em um diretório separado foram conectados ao arquivo main.tex
.
main.tex:
\documentclass[a4paper,14pt]{extarticle}
A descrição de todos os estilos e formatações está no arquivo preamble.tex
, preamble.tex
no início do documento.
Era muito conveniente não se preocupar em formatar o conteúdo, a bibliografia e outras partes do diploma.

Conteúdo
Descreverei minhas vantagens ao trabalhar com o LaTeX, em comparação com os editores WYSIWYG:
- versionability conveniente (em vez de diploma.odt , diploma_01.01.2015.odt , diploma_fix_print.odt - versionamento no git e a capacidade de reverter para qualquer commit)
- quando você clica acidentalmente em algo, o layout não falha (aconteceu comigo)
- configurações flexíveis (que nem sempre estão disponíveis nos editores WYSIWYG ou não são óbvias)
- ambiente homogêneo para tudo (as fontes de apresentação estão no mesmo repositório que o diploma)
- a possibilidade de colaboração (o gerente de pós-graduação pode procurar no repositório o que mudou desde a última verificação)
- conveniente usar como modelo para muitos documentos diferentes
- é conveniente incluir inserções como código fonte, por exemplo, ou arquivos PDF adicionais
Aqui está um exemplo de como é fácil incluir um arquivo de origem em um documento:
\lstinputlisting[numbers=left]{inc/ddos-deflate/ddos.sh}

O código fonte conectado no documento
Há apenas um menos de usar o LaTeX para mim - você precisa gastar tempo para aprimorar tudo para o resultado desejado. Eu até quis ficar confuso por um momento para redesenhar todos os diagramas e diagramas nativamente usando o TikZ , mas demorou muito tempo, então usei calmamente o Google Desenhos e o draw.io para isso.
Tendo defendido com sucesso o diploma de bacharel e adquirido algum conhecimento em trabalhar com o git, GitHub, Makefile, LaTeXStackExchange google em inglês, esqueci-me do diploma por alguns anos para usar meu modelo para escrever um diploma de mestrado.
Mestrado
Naquela época, quando eu estudava na magistratura, comecei a me envolver em ferramentas de engenharia, como o Docker, comecei a praticar com ferramentas de integração contínua e estudei as práticas de DevOps. Também foi interessante para mim projetar lindamente meus projetos de código aberto para animais de estimação com belos arquivos LEIA-ME.
Em geral, quando comecei a escrever um diploma de mestre , os requisitos para o registro não mudaram muito, então peguei o modelo para o diploma de bacharel e o completei em pequenas coisas, por exemplo, itens como uma lista de material ilustrativo, uma lista de abreviações e assim por diante. Ao defender o diploma de bacharel, usamos pôsteres do tamanho A1 e, no mestrado, já era permitido o uso de apresentações na forma de slides, então eu também inventei os slides usando LaTeX e beamer.

Layout com LaTeX e beamer
Levado pelo conceito de CI, pensei, por que não coletar um novo PDF toda vez que você se comprometer com o repositório? A conexão do GitHub ao TravisCI levou apenas alguns minutos. Embora o TravisCI não saiba trabalhar diretamente com o LaTeX, ele funciona muito bem com o Docker. Legal, pensei, matarei vários coelhos com uma cajadada:
- pratique escrever um arquivo docker
- Vou migrar todos os pacotes do LaTeX para o Docker (e há muitos deles e são bastante pesados)
- praticar usando o TravisCI
- Ajudarei aqueles que de repente um dia quiserem usar meu modelo em um sistema operacional não Linux
A criação de um arquivo de configuração para o TravisCI, o Dockerfile e a edição do Makefile não demorou muito e acabou sendo conveniente.
Parte do Makefile para executar uma compilação de projeto no 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"
Agora, o supervisor de pós-graduação não podia apenas ver minhas alterações no código, mas também uma versão inventada do documento.

Lançamentos
Tendo completado o diploma da forma que eu precisava, decidi compartilhar o modelo com a comunidade, por analogia com o meu diploma de bacharel. Foi decidido organizar lindamente o arquivo README do repositório, porque essa é a face do projeto. A pessoa que encontrou seu projeto na Internet deve descobrir imediatamente como montá-lo e o que fazer com ele usando o arquivo README.

Arquivo README.md
Em breve tenho que escrever um terceiro diploma e acho que minha abordagem para escrevê-lo não será alterada e passarei uma quantidade muito pequena de tempo em seu design. Dado que mudei do Linux para o Mac OS, a transição será completamente indolor, pois existe um Docker.
Sumário
O interesse habitual no LaTeX me permitiu mergulhar um pouco mais nessa área:
- "ajudou" ao trabalhar com o LaTeX, o que mais tarde ajudou a economizar tempo ao criar documentos e apresentações
- ganhou experiência trabalhando com o git e o GitHub ao trabalhar com esses projetos de animais de estimação
- usado na prática coisas como Docker e TravisCI, o que me deu um bom impulso quando imerso no DevOps
- aprendeu a organizar ordenadamente seus projetos de estimação
Respostas a possíveis perguntas
Por que você salva arquivos PDF no repositório?
Somente para que a pessoa que entrou no repositório possa não apenas ver a fonte, mas também ver o resultado de tudo isso sem baixar o release.
Por que muitas coisas não são totalmente automatizadas, como a bibliografia?
Por uma razão ou outra, não fui mais fundo nisso, talvez aqueles que têm centenas de fontes de literatura usada se machucem.
O modelo está em conformidade com GOST / DSTU?
Fui guiado apenas pelos requisitos do normocontrolador, então não realmente.
Tradução do artigo para o inglês para Medium .