前言
overleaf是大家经常使用的论文协作编辑平台,对于有协作编辑需求、本地编译慢、懒得配texlive的科研工作者来说是神器。
在回复审稿人意见或者需要做不同版本tex之间的内容对比时,latexdiff能够生成高质量的修订校对文件,效果如下图所示:
由于overleaf本身是论文协作平台,不支持使用在平台安装及使用latexdiff命令。为了生成修订文件,每次都需要下载主tex文件 main.tex,本地运行latexdiff生成修订文件diff.tex,再上传编译形成修订稿,非常麻烦。因此在发现overleaf支持同步github仓库之后,想尝试一下能否利用github的 workflow功能实现自动生成diff.tex。
折腾的过程走了很多弯路,本博文直接贴上操作流程及配置文件。
1. 从github 导入项目到overleaf中
首先 在github上创建论文project,本文中的项目名为ieee_template。
在tex源文件目录下,初始化git仓库,并上传到github。
git init
git remote add origin https://github.com/{你的仓库地址}
git branch -M main
git push -u origin main
然后在overleaf上创建项目,new project -> import from Github:
完成授权后,导入指定项目:
如果已经是在overleaf上开始写了的论文,overleaf也支持直接链接到github创建仓库.
在目录中,需要有两个tex文件:
- old.tex,作为想要生成修订对照的旧版本。
- new.tex:修订之后的新tex文件: 。
比如,在给编辑和审稿人写回复信,生成修订版时,old.tex内容为上一次投稿时的源文件。new.tex为修改之后的文件。
配置github action
在github仓库ieee_template中,点击actions。创建workflow
在main.yaml中键入如下内容:
name: Latexdiff
# Controls when the workflow will run
on:
# Triggers the workflow on push or pull request events but only for the main branch
push:
branches: [ main ]
paths: # 这里是用来指定哪个文件更改,才会触发的
- '*.tex'
workflow_dispatch:
jobs:
generate:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: generating diff.tex
uses: addnab/docker-run-action@v3
with:
image: 18810919727/latex_diff:v1
options: -v ${{ github.workspace }}:/dir:rw
run: |
latexdiff /dir/old.tex /dir/new.tex > /dir/diff.tex # 此处可以按需替换 old.tex、new.tex
echo "Generating diff.tex successfully"
- name: git add & commit
run: |
# 此处可以键入邮箱及姓名
git config --global user.email "you@example.com"
git config --global user.name "Your Named"
git add diff.tex
git commit -m "update diff"
git push -u origin main
其中 18810919727/latex_diff:v1 是本人自己制作的latexdiff镜像,已经在dockerhub开源,按上述方式配置即可直接使用,不用自制镜像。
注意修改上面的old.tex, new.tex文件名为自己论文项目的新旧tex文件名。
然后点击start commit ->commit new file
使用流程
在overleaf中修改new.tex。然后点击Menu-> github -> Push changes to Github
。
此时在github的actions界面可以看到运行的workflow。
黄色为正常运行,绿色为运行成功,点进去之后如果为如下效果,说明成功生成diff文件,并提交到仓库成功:
点击此处可以手动调用workflow,更新diff.tex。
等待1min钟左右(github分配虚拟机和下载镜像还是需要时间的),最后点击Menu-> github -> Pull Github changes into overleaf。
编译生成的diff.tex文件,效果如图:
使用总结: