diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index be8060fc01dac654b1dc5baab9885131c0cdda5a..f7e3237852bc139ded59c26149c6f3425daff8d8 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -12,24 +12,76 @@ on:
       - master
 
 jobs:
+  build_test:
+    runs-on: ubuntu-latest
+    if: "!startsWith(github.ref, 'refs/tags/v')"
+    strategy:
+      matrix:
+        latex: [xelatex, lualatex]
+    steps:
+      - name: Set up Git repository
+        uses: actions/checkout@v2
+
+      - name: Download njuvisual package (1/2)
+        uses: wei/curl@master
+        with:
+          args: -s -o "njuvisual.dtx" "https://mirrors.rit.edu/CTAN/macros/latex/contrib/njuvisual/njuvisual.dtx"
+      
+      - name: Download njuvisual package (2/2)
+        uses: wei/curl@master
+        with:
+          args: -s -o "njuvisual-curves.dtx" "https://mirrors.rit.edu/CTAN/macros/latex/contrib/njuvisual/njuvisual-curves.dtx"
+ 
+      - name: Extract cls from njuthesis
+        uses: FengChendian/latex-dtx2cls-action@4.0.1
+        with:
+          root_file: njuthesis.dtx
+          working_directory: ./source/
+ 
+      - name: Extract sty from njuvisual
+        uses: FengChendian/latex-dtx2cls-action@4.0.1
+        with:
+          root_file: njuvisual.dtx
+          working_directory: ./
+        
+      - name: Copy files to test folder
+        run:
+          cp ./njuvisual.sty source/njuthesis.cls test/
+
+      - name: Compile to PDF
+        uses: HermitSun/latex-action@v3
+        with:
+          root_file: test.tex
+          working_directory: ./test/
+          latexmk_use_${{ matrix.latex }}: true
+          args: "-bibtex"
+
+      - name: Upload PDF
+        uses: actions/upload-artifact@v2
+        with:
+          name: PDF_${{ matrix.latex }}
+          path:
+            test/test.pdf
+
   release:
     runs-on: ubuntu-latest
     if: startsWith(github.ref, 'refs/tags/v')
     steps:
       - name: Set up Git repository
         uses: actions/checkout@v2
+
       - name: Set Version
         run: echo "VERSION=${GITHUB_REF##*/}" >> $GITHUB_ENV
           
       - name: Download njuvisual package (1/2)
         uses: wei/curl@master
         with:
-          args: -s -o "njuvisual.dtx" "https://mirror.nju.edu.cn/CTAN/macros/latex/contrib/njuvisual/njuvisual.dtx"
+          args: -s -o "njuvisual.dtx" "https://mirrors.rit.edu/CTAN/macros/latex/contrib/njuvisual/njuvisual.dtx"
       
       - name: Download njuvisual package (2/2)
         uses: wei/curl@master
         with:
-          args: -s -o "njuvisual-curves.dtx" "https://mirror.nju.edu.cn/CTAN/macros/latex/contrib/njuvisual/njuvisual-curves.dtx"
+          args: -s -o "njuvisual-curves.dtx" "https://mirrors.rit.edu/CTAN/macros/latex/contrib/njuvisual/njuvisual-curves.dtx"
  
       - name: Extract cls from njuthesis
         uses: FengChendian/latex-dtx2cls-action@4.0.1
@@ -53,12 +105,12 @@ jobs:
           pre_compile: "xetex njuthesis.dtx"
           post_compile: "mv njuthesis.pdf njuthesis-$VERSION.pdf" 
       
-      - name: Zip Release Source
-        run: |
+      - name: Zip RELEASE package
+        run:
           zip -r njuthesis-$VERSION.zip .vscode docs/njuthesis-sample.bib docs/njuthesis-sample.tex source/njuthesis.cls njuvisual.sty conf.txsprofile LICENSE README.md        
       
-      - name: Zip CTAN Source
-        run: |
+      - name: Zip CTAN package
+        run:
           mkdir -p njuthesis/
           cp source/njuthesis-$VERSION.pdf njuthesis/njuthesis.pdf
           cp source/README-CTAN.md njuthesis/README.md
@@ -69,7 +121,7 @@ jobs:
         with:
           repo_token: "${{ secrets.GITHUB_TOKEN }}"
           prerelease: false
-          files: |
+          files:
             source/njuthesis-v*.pdf
             njuthesis-v*.zip
             njuthesis-ctan-v*.zip
diff --git a/source/njuthesis.dtx b/source/njuthesis.dtx
index da8e8a4cb2c12427c030e8ac9a1a64a1c4eb2417..6b287751cd26ea6d7c870812136a6cb8e746e1cb 100644
--- a/source/njuthesis.dtx
+++ b/source/njuthesis.dtx
@@ -105,7 +105,7 @@ through XeTeX.
 %
 %<class>\NeedsTeXFormat{LaTeX2e}
 %<class>\RequirePackage{expl3}
-%<class>\GetIdInfo  $Id: njuthesis.dtx 0.12.0 2021-11-30 11:30:00 +0800  NJU LUG <nju.lug@yaoge123.cn> $
+%<class>\GetIdInfo  $Id: njuthesis.dtx 0.12.1 2021-11-30 11:30:00 +0800  NJU LUG <nju.lug@yaoge123.cn> $
 %<class>  { Thesis template for Nanjing University }
 %<class>\ProvidesExplClass{njuthesis}
 %<class>{\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription}
@@ -135,7 +135,7 @@ through XeTeX.
 % Nanjing University Linux User Group
 % \thanks{E-mail: \href{mailto:nju.lug@yaoge123.cn}{nju.lug@yaoge123.cn}}}
 %
-% \date{v0.12.0 \\ Released 2021-11-30}
+% \date{v0.12.1 \\ Released 2021-11-30}
 %
 % \changes{v0.1}{2021/09/04}{寮€濮嬪紑鍙戙€倉
 % \changes{v0.2}{2021/09/07}{鍒濇鎼缓浜嗗彲鐢ㄧ殑妯℃澘銆倉
@@ -153,6 +153,7 @@ through XeTeX.
 % \changes{v0.10}{2021/09/24}{鍒犻櫎浜嗙敓鎴愯嚜杩版枃浠剁殑浠g爜銆倉
 % \changes{v0.12}{2021/11/28}{鍒犻櫎鍐呯疆鐨� \pkg{njuvisual} 浠g爜銆倉
 % \changes{v0.12}{2021/11/29}{鏇存柊浜嗚鏄庢枃妗e皝闈㈣璁°€倉
+% \changes{v0.12}{2021/11/30}{鍖哄垎娴嬭瘯鏂囦欢鍜岀┖鐧芥ā鏉裤€倉
 %
 % \maketitle
 %