利用Github Action运行latexdiff,在overleaf上自动生成修订文件

前言

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文件,效果如图:
在这里插入图片描述

使用总结:

使用流程总结图

### 如何在 Overleaf 中撰写学术论文 Overleaf 是一款基于 Web 的 LaTeX 编辑器,它不仅支持实时协作和云端存储功能,还极大地方便了学术论文和技术文档的编写与共享[^2]。以下是关于如何利用 Overleaf 进行学术论文撰写的详细介绍。 #### 使用模板提高效率 Overleaf 提供了大量的在线模板,这些模板可以帮助用户快速搭建符合特定期刊或会议要求的论文结构[^3]。例如,如果目标期刊规定文章需遵循《美国经济评论》(The American Economic Review, AER) 的排版格式,则可以直接选用对应的模板并在此基础上完成内容填充。 #### 插入数学公式 对于科研工作者而言,在学术论文中插入复杂的数学表达式是一项常见需求。借助于 LaTeX 强大的排版能力,可以在 Overleaf 上轻松实现这一操作。比如要输入一个简单的积分公式 $\int_a^b f(x)\mathrm{d}x$ ,只需按照标准语法书写即可[^1]。 ```latex \documentclass{article} \begin{document} Here is an example of integral equation: \[ \int_a^b f(x)\,\mathrm{d}x. \] \end{document} ``` #### 添加算法伪代码 当研究涉及计算模型或程序设计时,可能还需要向读者展示具体的算法逻辑。此时可以通过 `algorithm` 和 `algpseudocode` 宏包来创建清晰易读的伪代码环境[^4]: ```latex \usepackage{algorithm} \usepackage{algpseudocode} \begin{document} \begin{algorithm}[H] \caption{Example Algorithm}\label{alg:example} \begin{algorithmic}[1] \Procedure{Function}{$input$} \State $result \gets input$ \For{$i=1$ to $n$} \If{$condition(i)$ holds} \State Update($result$, $i$) \EndIf \EndFor \Return result \EndProcedure \end{algorithmic} \end{algorithm} \end{document} ``` #### 管理参考文献 为了确保引用的一致性和准确性,建议采用 BibTeX 或其现代替代品如 biblatex 来处理参考文献部分[^5]。下面给出一段基本示例说明如何设置 bibliography 文件以及调用其中条目: ```latex % main.tex file content \nocite{*} % Include all references even if not cited explicitly within text body. \bibliographystyle{plainnat} % Choose appropriate style according personal preference or journal requirement. \bibliography{references.bib} % Specify the name of your .bib database without extension here. ``` ---
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值