Cómo escribí un diploma en LaTeX con GitHub, Docker y TravisCI

Desde que estudié en la universidad, utilicé LaTeX para diseñar trabajos de laboratorio y término. Conocí a LaTeX por primera vez en Coursera, en el curso " Documentos y presentaciones en LaTeX ".


En este artículo, describiré cómo escribí un diploma usando LaTeX y por qué usé GitHub, Docker y TravisCI.


Pero por que?


Prólogo


Mi camino hacia la edición y creación de documentos comenzó con Microsoft Word, probablemente como muchos. Después de cambiar de Windows a Linux, comencé a usar OpenOffice y luego LibreOffice, que en mis tareas no era inferior en funcionalidad a Word.


Fue un poco doloroso cuando escribí un ensayo en la sala de computadoras de la biblioteca en OpenOffice y lo llevé a una copia impresa en la computadora de administración con Microsoft Word, y todo el formato vuela. En ese momento escolar, nadie me explicó que puede guardar un documento en PDF e imprimirlo sin problemas, ya lo descubrí cuando estaba en la universidad y era necesario imprimir documentos casi todos los días.


Volvamos a LaTeX, antes de usarlo, todo lo que escuché sobre LaTeX es que lo usan para escribir artículos en revistas científicas porque es muy conveniente para trabajar con fórmulas. Aquellos que piensan lo mismo, les recomiendo ver el curso en Coursera, tal vez cambie de opinión, por ejemplo, me gustó mucho.


Hola, Mundo en LaTeX:


\documentclass{article} \begin{document} Hello, World! \end{document} 

Por cierto, con la ayuda de LaTeX puedes hacer presentaciones. Aquí puede ver muchos ejemplos de cómo se verán estas presentaciones.


Licenciatura con LaTeX


Al final del tercer año, ya había usado activamente LaTeX para elaborar casi todos los documentos, se decidió escribir un diploma de licenciatura con él .


Al principio, utilicé LaTeXila como un IDE, en el que el proyecto se creó con un solo botón, pude conectar el corrector ortográfico, pero a veces se bloqueaba y ralentizaba, así que comencé a usar Sublime Text con el Makefile.


Ejemplo 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 las fuentes se almacenaron en git, para la conveniencia de la colaboración con el supervisor, usé GitHub. La estructura del proyecto era muy simple, el preámbulo y otros capítulos que estaban almacenados en un directorio separado estaban conectados al archivo main.tex .


main.tex:


 \documentclass[a4paper,14pt]{extarticle} % 14  \input{inc/preamble} %   \begin{document} \tableofcontents %  \clearpage \input{inc/0-intro} %  \input{inc/1-pz} %   ... \input{inc/0-bibliography} %   \input{inc/a-app} %   \input{inc/b-app} %   \includepdf{act} %   PDF- \end{document} 

La descripción de todos los estilos y formatos se encuentra en el archivo preamble.tex , que se preamble.tex al comienzo del documento.


Era muy conveniente no preocuparse por formatear el contenido, la bibliografía y otras partes del diploma.


Contenido
Contenido


Describiré mis ventajas cuando trabaje con LaTeX, en comparación con los editores WYSIWYG:


  • Versabilidad conveniente (en lugar de diploma.odt , diploma_01.01.2015.odt , diploma_fix_print.odt - versionado en git y la capacidad de retroceder a cualquier commit)
  • cuando accidentalmente haces clic en algo, el diseño no se bloquea (me pasó a mí)
  • configuraciones flexibles (que no siempre están disponibles en los editores WYSIWYG o no son obvias)
  • entorno homogéneo para todo (las fuentes de presentación se encuentran en el mismo repositorio que el diploma)
  • La posibilidad de colaboración (el administrador graduado puede mirar en el repositorio lo que ha cambiado desde la última verificación)
  • conveniente para usar como plantilla para muchos documentos diferentes
  • es conveniente incluir inserciones como el código fuente, por ejemplo, o archivos PDF adicionales

Aquí hay un ejemplo de lo fácil que es incluir un archivo fuente en un documento:


 \lstinputlisting[numbers=left]{inc/ddos-deflate/ddos.sh} 

El código fuente conectado en el documento
El código fuente conectado en el documento


Solo hay un punto negativo de usar LaTeX para mí: debe pasar tiempo para pulir todo para obtener el resultado deseado. Incluso quería confundirme por un momento para volver a dibujar todos los diagramas y diagramas de forma nativa usando TikZ , pero me tomó mucho tiempo, así que con calma usé Google Drawings y draw.io para esto.


Después de defender con éxito mi diploma de licenciatura y adquirir algunos conocimientos sobre cómo trabajar con git, GitHub, Makefile, LaTeXStackExchange google en inglés, me olvidé del diploma durante un par de años para usar mi plantilla para escribir un diploma de maestría.


Maestría


En ese momento, cuando estudiaba en la magistratura, comencé a involucrarme en herramientas de ingeniería, como Docker, comencé a practicar con herramientas de integración continua y estudié prácticas de DevOps. También fue interesante para mí diseñar bellamente mis proyectos de código abierto con hermosos archivos README.


En general, cuando comencé a escribir un diploma de maestría , los requisitos para el registro no cambiaron mucho, así que tomé la plantilla para mi diploma de licenciatura y la completé en bagatelas, por ejemplo, elementos como una lista de material ilustrativo, una lista de abreviaturas, etc. Al defender el diploma de bachiller, utilizamos carteles de tamaño A1, y en el máster, ya se nos permitía usar presentaciones en forma de diapositivas, así que también hice las diapositivas usando LaTeX y beamer.


Diseño con LaTeX y beamer
Diseño con LaTeX y beamer


Llevado por el concepto de CI, pensé, ¿por qué no recopilar un nuevo PDF cada vez que se compromete con el repositorio? Conectar GitHub a TravisCI tomó solo unos minutos. Aunque TravisCI no sabe cómo trabajar directamente con LaTeX, funciona muy bien con Docker. Genial, pensé, mataré varios pájaros de un tiro:


  • practicar escribiendo un dockerfile
  • Migraré todos los paquetes de LaTeX a Docker (y hay muchos de ellos y son bastante pesados)
  • practicar usando TravisCI
  • Ayudaré a aquellos que de repente algún día quieran usar mi plantilla en un sistema operativo que no sea Linux

Escribir un archivo de configuración para TravisCI, Dockerfile y editar Makefile no tardó mucho y resultó conveniente.


Parte del Makefile para ejecutar una compilación de proyecto en 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" 

Ahora, el supervisor graduado no solo podía ver mis cambios en el código, sino también una versión inventada del documento.


Lanzamientos
Lanzamientos


Después de completar el diploma en la forma que necesitaba, decidí compartir la plantilla con la comunidad, por analogía con mi licenciatura. Se decidió organizar bellamente el archivo README del repositorio, porque esta es la cara del proyecto. La persona que encontró su proyecto en Internet debe descubrir de inmediato cómo armar el proyecto y qué hacer con él utilizando el archivo README.


Archivo README.md
Archivo README.md


Pronto tengo que escribir un tercer diploma y creo que mi enfoque para escribirlo no cambiará en absoluto y pasaré una pequeña cantidad de tiempo en su diseño. Dado que me mudé de Linux a Mac OS, la transición será completamente sencilla, ya que hay un Docker.


Resumen


El interés habitual en LaTeX me permitió sumergirme un poco más en esta área:


  • "echó una mano" cuando trabajaba con LaTeX, lo que luego ayudó a ahorrar tiempo al crear documentos y presentaciones
  • adquirió experiencia trabajando con git y GitHub mientras trabajaba con estos proyectos favoritos
  • utilizado en la práctica cosas como Docker y TravisCI, que me dieron un buen impulso cuando me sumergí en DevOps
  • aprendieron a organizar cuidadosamente sus proyectos favoritos

Respuestas a posibles preguntas


¿Por qué guarda archivos PDF en el repositorio?

Únicamente para que la persona que ingresó al repositorio no solo pueda ver la fuente, sino también ver el resultado de todo esto sin descargar el lanzamiento.


¿Por qué no hay muchas cosas totalmente automatizadas, como la bibliografía?

Por una razón u otra, no profundicé en esto, tal vez aquellos que tienen cientos de fuentes de literatura usada se lastimen.


¿La plantilla cumple con GOST / DSTU?

Me guiaron únicamente por los requisitos del normocontrolador, así que en realidad no.


Traducción del artículo al inglés al medio .

Source: https://habr.com/ru/post/es424805/


All Articles