LaTeXdiff实战指南:高效标注论文修改差异
1. 为什么你需要LaTeXdiff写论文最头疼的环节之一就是修改版本管理。我见过太多研究生在深夜实验室对着屏幕抓狂导师到底让我改哪里来着更可怕的是当你把修改稿发给审稿人时对方可能根本找不到你精心调整的内容。这时候LaTeXdiff就像个会发光的标记笔能把所有改动自动标注得明明白白。这个工具本质上是个智能比对引擎。它用Perl脚本解析两个LaTeX文件生成的新文件里新增内容会变成蓝色带下划线删除内容变成红色带删除线。我指导过的博士生小王就靠这个功能让三审意见从修改不清晰变成了修改完善。最妙的是它不需要你安装整套LaTeX环境就像用WinRAR解压文件那样简单。2. 三步完成基础安装2.1 Windows用户专属通道如果你用MikTeX恭喜你找到捷径。打开MikTeX Console不是TeXworks在Packages标签页搜索latexdiff勾选安装时记得把Install missing packages on the fly打开。我去年在清华实验室装机时发现某些版本会漏装Perl依赖这时需要手动运行mpm --installperl2.2 Mac用户的终端战场用Homebrew的读者可以偷着乐了。在Terminal里输入brew install latexdiff但去年帮北大数学系装机器时发现某些M1芯片机型需要额外配置PATH。如果遇到command not found试试export PATH/opt/homebrew/bin:$PATH2.3 Linux玩家的编译指南Ubuntu用户虽然能直接apt-get但官方源版本可能较旧。我推荐用cpan安装最新版sudo cpan install Algorithm::Diff记得先装好gcc和make。去年在中科院某所部署时发现缺少Text::Diff模块会导致报错这时需要sudo cpan install Text::Diff3. 核心操作手册3.1 基础命令的隐藏玩法官方文档里那个简单的latexdiff old.tex new.tex diff.tex命令其实藏着三个坑文件路径不能有中文我在浙大实验室踩过这个雷两个tex文件编码必须一致建议全用UTF-8不要用绝对路径否则生成的diff文件可能报错实测最稳的用法是cd /path/to/your/tex latexdiff --encodingutf8 original.tex revised.tex changes.tex3.2 参数组合的实战技巧不同期刊对修改标注有不同要求。Nature系列喜欢用高亮模式这时候就该祭出latexdiff --typeCFONT original.tex revised.tex diff.tex而Springer期刊偏好简洁标注这个组合我用了三年latexdiff --typeTRADITIONAL --configPICTUREENV(?:picture|DIFnomarkup)[\w\d*]* paper.tex paper_rev.tex参数PICTUREENV特别重要它能避免图片被错误标记。去年有个学生因为图表被误标差点被拒稿。4. 高级定制方案4.1 自定义标注样式在preamble里添加这些代码能让修改标记变成学术圈最爱的蓝增红删样式%DIF PREAMBLE \providecommand{\DIFadd}[1]{{\color{blue}\uwave{#1}}} \providecommand{\DIFdel}[1]{{\color{red}\sout{#1}}} \providecommand{\DIFaddbegin}{} \providecommand{\DIFaddend}{} \providecommand{\DIFdelbegin}{} \providecommand{\DIFdelend}{}如果想搞点创新比如给删除线加波浪效果可以这样玩\providecommand{\DIFdel}[1]{{\color{red}\sout{\uwave{#1}}}}4.2 公式比对的黑科技默认设置对数学公式支持不太好。这是我调试出的最佳配置latexdiff --math-markup3 --disable-citation-markup original.tex revised.tex参数--math-markup3会让公式差异显示为紫色边框而--disable-citation-markup能避免参考文献被误标。去年用这个方法处理了PRL论文的200多处公式修改。5. 常见报错解决方案5.1 Undefined control sequence错误这通常是因为缺少ulem或color包。在preamble里强制加载\usepackage[normalem]{ulem} \usepackage{xcolor}如果还报错试试在命令后加--append-safecmdxxx参数把报错的命令名替换xxx。5.2 图片标注异常问题遇到图片被错误标记时用这个命令排除所有图形环境latexdiff --exclude-safecmdincludegraphics --exclude-textcmdincludegraphics old.tex new.tex我在APL投稿时就遇到过图片被红框包围的尴尬情况后来发现是忘记排除tikzpicture环境。6. 配套工具链6.1 latexrevise的三种模式这个工具相当于论文修改的撤销/重做按钮-a模式接受所有修改生成干净的新版本-d模式拒绝所有修改回退到原版-s模式简化标记保留修改痕迹但去掉颜色我带的硕士生最喜欢用这个交终稿latexrevise -a diff.tex final.tex6.2 版本控制集成用git的同学可以试试latexdiff-vc它能自动比对历史版本latexdiff-vc --git --flatten -r HEAD~2 paper.tex参数--flatten能处理子文件-r HEAD~2表示比较当前版本和前两个提交。去年帮计算机系搭建的论文协作系统就基于这个方案。