我如何在GitHub,Docker和TravisCI的LaTeX中写文凭

自从在大学学习以来,我就使用LaTeX设计实验室和学期论文。 我是在Coursera上的“ LaTeX的文档和演示 ”课程上第一次认识LaTeX的。


在本文中,我将描述如何使用LaTeX编写文凭以及为什么要使用GitHub,Docker和TravisCI。


但是为什么呢?


前言


我编辑和创建文档的途径始于Microsoft Word,可能与许多人一样。 从Windows切换到Linux之后,我轻松地开始使用OpenOffice,然后再使用LibreOffice,在我的任务中,LibreOffice在功能上不逊于Word。


当我在OpenOffice图书馆的计算机室写一些文章,并用Microsoft Word将其带到管理计算机上的打印输出时,这有点痛苦,而且所有格式设置都没有成功。 在那个学校的时候,没有人向我解释过您可以将PDF文档保存并进行打印,而我上大学的时候就已经知道,几乎每天都需要打印文档。


让我们回到LaTeX,在使用它之前,我听说过的LaTeX就是他们使用它在科学期刊上写文章,因为使用公式非常方便。 那些有同样想法的人,我建议您在Coursera上观看课程,也许这会改变您的想法,例如我真的很喜欢。


您好,LaTeX上的World:


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

顺便说一句,借助LaTeX,您可以进行演示。 在这里,您可以看到有关这些演示文稿外观的许多示例。


LaTeX的学士学位


到第三年末,我已经积极使用LaTeX编写几乎所有文档,因此决定用它来写一个学士学位


最初,我使用LaTeXila作为IDE,在该IDE中,该项目是用一个按钮构建的,我可以连接拼写检查器,但有时会崩溃并放慢速度,因此我开始在Makefile中使用Sublime Text。


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 

所有源均存储在git中,以方便与我使用GitHub的主管进行协作。 该项目的结构非常简单,存储在单独目录中的序言和其他章节都连接到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} 

所有样式和格式的描述都在preamble.tex文件中,该文件preamble.tex在文档的开头。


不用担心格式化文凭的内容,书目和其他部分,这非常方便。


目录内容
目录内容


与所见即所得的编辑器相比,我将描述在使用LaTeX时的优势:


  • 方便的可版本性(而不是文凭.odt文凭_01.01.2015.odt文凭_fix_print.odt -git中的版本以及回滚到任何提交的功能)
  • 当您不小心单击某些内容时,布局不会崩溃(发生在我身上)
  • 灵活的设置(在“所见即所得”编辑器中并不总是可用,或者它们并不明显)
  • 所有事物的统一环境(演示源与文凭位于同一存储库中)
  • 合作的可能性(毕业生经理可以在存储库中查看自上次检查以来发生的变化)
  • 方便用作许多不同文档的模板
  • 方便地包含诸如源代码之类的插入内容或其他PDF文件

这是在文档中包含源文件有多容易的示例:


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

文档中连接的源代码
文档中连接的源代码


对我而言,使用LaTeX只需一分钱-您需要花费时间才能将所有内容抛光成所需的结果。 我什至想让我一时感到困惑,使用TikZ以本机方式重绘所有图和图,但是这花费了很多时间,所以为此我冷静地使用了Google Drawings和draw.io。


成功捍卫了我的学士学位文凭,并获得了一些使用git,GitHub,Makefile,LaTeXStackExchange google进行英语学习的知识,为了使用我的模板来编写硕士文凭,我忘了两年的文凭了。


硕士学位


当时,我在地方行政管理部门学习时,我开始涉足诸如Docker之类的工程工具,开始使用持续集成工具进行实践,并研究了DevOps的实践。 用漂亮的README文件漂亮地设计我的宠物开源项目对我来说也很有趣。


通常,当我开始写硕士文凭时 ,注册要求没有太大变化,因此我拿到了我的学士学位文凭的模板,并在琐事上完成了该模板,例如,说明性材料列表,缩写列表等项目。 捍卫学士学位时,我们使用了A1尺寸的海报,而在硕士中,我们已经被允许使用幻灯片形式的演示文稿,因此我也使用LaTeX和Beamer制作了幻灯片。


使用LaTeX和Beamer进行布局
使用LaTeX和Beamer进行布局


我认为,为什么不采用CI的概念,为什么每次提交存储库时都不会收集新的PDF? 将GitHub连接到TravisCI仅花费了几分钟。 尽管TravisCI不知道如何直接与LaTeX一起使用,但它与Docker一起使用时效果很好。 很酷,我想,我会用一块石头杀死几只鸟:


  • 练习编写dockerfile
  • 我将所有LaTeX软件包迁移到Docker(其中很多,而且它们很重)
  • TravisCI练习
  • 我将帮助那些突然有一天想要在非Linux操作系统上使用我的模板的人

为TravisCI,Dockerfile编写配置文件和编辑Makefile并不需要很长时间,而且事实证明很方便。


Makefile的一部分,用于在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" 

现在,研究生导师不仅可以看到我在代码中所做的更改,还可以看到文档的完整版本。


发布
发布


以我需要的形式完成文凭后,我决定以与我的学士学位类似的方式与社区共享模板。 决定对存储库的README文件进行精美排列,因为这是项目的工作。 在Internet上找到您的项目的人应该立即弄清楚如何组装该项目以及如何使用README文件处理该项目。


README.md文件
README.md文件


很快,我必须写第三份文凭,我认为我的写作方式根本不会改变,我会花很少的时间来设计它。 考虑到我已经从Linux迁移到Mac OS,由于有了Docker,过渡将完全轻松。


总结


对LaTeX的通常兴趣使我可以进一步深入研究这一领域:


  • 使用LaTeX时“帮了大忙”,后来帮助节省了创建文档和演示文稿的时间
  • 在处理这些宠物项目时获得了与git和GitHub合作的经验
  • 在实践中使用了诸如Docker和TravisCI之类的东西,当他们沉浸在DevOps中时给了我很好的动力
  • 学习了如何整齐地安排他们的宠物项目

潜在问题的答案


为什么将PDF文件保存在资源库中?

如此一来,进入存储库的人员不仅可以查看源,还可以查看所有结果,而无需下载发行版。


为什么没有很多东西是完全自动化的,例如书目?

由于一个或另一个原因,我没有更深入地介绍这一点,也许那些拥有数百本二手文献资源的人会受到伤害。


模板是否符合GOST / DSTU?

我仅受normocontroller的要求指导,因此并非如此。


文章的英文翻译。

Source: https://habr.com/ru/post/zh-CN424805/


All Articles