30 November 2015

最近我忙于一篇期刊论文的修改。这个过程中版本控制起到了很大的作用。用LaTeX写论文,同时用Git做版本控制,这简直就是绝配。

LaTeX+Git这种写论文时的搭配在某种程度上是从软件开发借鉴过来的。由LaTeX文本生成排版好的论文,这本身就是个编译过程,与软件开发中由源代码生成可执行程序是一样的。 既然编程时的版本控制已经成为不可或缺的了,那何不在用LaTeX写论文时也采取这一实践呢?

适合版本控制的是纯文本文件,而LaTeX文件恰好就是这样的文件。如果用Word等所见即所得的方式写,虽然也能做版本控制,但效果要大打折扣。 因为在纯文本的情况下每个版本之间有哪些内容的改变能一目了然地显示出来(通过git diff命令),但用Word的话就只能在各个版本间切换来自行对比内容了(执行git diff只会告诉你文件有改动)。

写论文时做版本控制的好处之一是能方便地保存历史,从而可以放心尝试不同表述之间的差别,如果改动之后觉得还是之前的好一些,也能很快恢复。 用Word时往往会产生多个中间版本的文件,这很多情况下其实是用来备份历史内容的,版本控制系统显然能更好达到这个目的。 另一个好处是给写论文的过程增加一些成就感。每一个版本的提交都是一个小小的里程碑,标志着完成了一项预定任务,这比从头到尾都在一直改要有动力得多。 这跟跑马拉松期间划定小目标来逐步实现是一样的道理。虽然客观工作量还是那么多,但做起来会觉得轻松一些。

Git在对比文件改动时是以行为单位的。我在写LaTeX时习惯将一段话都写在一行,这导致Git只能笼统地显示一整段的变化。如果希望更精细地查看改动,可以考虑在写LaTeX时手动加入换行(例如每个句子一行)。 反正LaTeX排版时以空行来区分不同段落,同一段落内是否换行并不影响结果。