LaTeX 写作的时候,尤其是经过一番修改之后,会遇到这样的问题:怎样标出哪些部分修改了哪些地方,也就是类似MS Word 的修订功能?
单纯的修订标记工具——latexdiff
TeXLive 自带的工具其实可以做到这一点,但是单纯的使用它,需要注意一些地方。比如说,你有一个修改好的文件 new.tex
,那么在进行修改之前,记得要备份未修改文件,比如说修改前的内容保存在 old.tex
。那么,接下来,可以使用latexdiff
工具生成附带修订的文件:
latexdiff old.tex new.tex > revised.tex
这样,就得到了一个附带修改标记的revised.tex
文件。需要注意的是,直接进行编译revised.tex
可能会出错,需要根据提示查找问题并进行改动。
此外,对于比较长的文档,大多会采用\input{}
等导入其他章节内容的命令,那么需要使用--expand
选项。
注意事项:
- 修改文件前,要保存。
- 排查修订标记文件的错误。
--expand
选项应对\input{}
、\include{}
等命令。
结合版本控制的修订标记工具——latexdiff-vc
一般情况下,修改的次数很多,每一个版本都保存的话,虽然不占什么空间,但是很啰嗦。现存很多版本控制软件能很好地控制版本,所以也就出现了升级工具:latexdiff-vc
。
这个命令默认用git
作为版本控制工具,对于svn
等其他主流版本控制工具也适用。这里以git
为例子,对文件main.tex
的修订版本控制的大致工作流程是这样:
1. 设置标签。
在每次完成文档编辑和修改,添加到版本控制系统并提交后,对这次提交(也就是这次修改好的文档版本)进行标签设置:
git tag '[type any information you like]'
其中,中括号中的内容自己定,这是对这次版本进行标记。
2. 切换版本
假设你在写作的过程中,有许多标签已经设定好了,你要比较ver_new
和ver_old
两个标签对应的版本的修订区别,首先切换到要修改后的标签ver_new
:
git checkout ver_new
当前工作版本如果已经是ver_new
就可以跳过这步操作。
3. 输出修订标记
最后,输出修订标记文档即可:
latexdiff-vc -r ver_old --flatten main.tex
这样一来,如果没有出错,会输出名为main-diffver_old.tex
的文档。其中--flatten
选项和前面--expand
是同一个作用,不再多说。
此外,可以直接加上--pdf
选项直接编译生成带修订的文档。但个人经验来看,不适合这么做,因为生成的修订标记文档常常不能编译通过,需要看报错来修改,尤其是在浮动体、图片、表格比较多的时候。
注意事项:
git commit
之后要git tag
。- 切换到修改后的版本。
- 排查修订标记文档中的编译错误。