diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 1b672c52af4b085572a36c48ab0c5bae8f369123..f2693deb7b21cb11b5c8eb2d18cf72bb0e15adfe 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -3,6 +3,7 @@ on:
   push:
     branches:
       - master
+
   pull_request:
     branches:
       - master
@@ -29,38 +30,3 @@ jobs:
         with:
           name: PDF_${{ matrix.latex }}
           path: njuthesis.pdf
-
-  release:
-    needs: build_latex
-    runs-on: ubuntu-latest
-    if: startsWith(github.ref, 'refs/tags/v')
-    steps:
-      - name: Set up Git repository
-        uses: actions/checkout@v2
-        
-      - name: Zip Release Source
-        run: |
-          zip -r njuthesis.zip . -x ".git/*" ".github/*" ".gitignore"
-          
-      - name: Download artifact
-        uses: actions/download-artifact@v2
-        with:
-          name: PDF_xelatex
-          
-      - name: Zip CTAN Source
-        run: |
-          mkdir -p njuthesis/
-          cp njuthesis.pdf njuthesis/njuthesis.pdf
-          cp README.md njuthesis/README_ZH_CN.md 
-          cp README_EN.md njuthesis/README.md
-          cp -r figure/ LICENSE njuthesis.dtx njuthesis/
-          zip -r njuthesis_ctan.zip njuthesis/
-          
-      - uses: "marvinpinto/action-automatic-releases@latest"
-        with:
-          repo_token: "${{ secrets.GITHUB_TOKEN }}"
-          prerelease: false
-          files: |
-            njuthesis.pdf
-            njuthesis.zip
-            njuthesis_ctan.zip
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
new file mode 100644
index 0000000000000000000000000000000000000000..a835aa6c4d2cdbc86e09745a556d5f686b38e19b
--- /dev/null
+++ b/.github/workflows/release.yml
@@ -0,0 +1,40 @@
+name: Release LaTeX document
+on: 
+  push:
+    tags:
+      - v*
+
+jobs:
+  release:
+    runs-on: ubuntu-latest
+    steps:
+      - name: Set up Git repository
+        uses: actions/checkout@v2
+
+      - name: Compile to PDF
+        uses: HermitSun/latex-action@v3
+        with:
+          root_file: njuthesis.dtx
+          args: '-bibtex'
+        
+      - name: Zip Release Source
+        run: |
+          zip -r njuthesis.zip . -x ".git/*" ".github/*" ".gitignore"
+          
+      - name: Zip CTAN Source
+        run: |
+          mkdir -p njuthesis/
+          cp njuthesis.pdf njuthesis/njuthesis.pdf
+          cp README.md njuthesis/README_ZH_CN.md 
+          cp README_EN.md njuthesis/README.md
+          cp -r figure/ LICENSE njuthesis.dtx njuthesis/
+          zip -r njuthesis_ctan.zip njuthesis/
+          
+      - uses: "marvinpinto/action-automatic-releases@latest"
+        with:
+          repo_token: "${{ secrets.GITHUB_TOKEN }}"
+          prerelease: false
+          files: |
+            njuthesis.pdf
+            njuthesis.zip
+            njuthesis_ctan.zip