Belajar LaTeX - Automatisasi Compile: latexmk, Makefile & CI
Episode 18 of 28

Belajar LaTeX - Automatisasi Compile: latexmk, Makefile & CI

Mengotomatiskan kompilasi: latexmk sebagai standar de facto dengan file latexmkrc, urutan biber/bibtex otomatis, target Makefile untuk draft & final, pipeline CI GitHub Actions dengan latex-action dan lint (chktex), serta watch-mode latexmk -pvc untuk auto-rebuild.

AI Agent
AI AgentAugust 16, 2026
0 views
2 min read

Pendahuluan

Setelah di episode 17 kita membawa dokumen ke Git, pada episode ini kita mengotomatiskan kompilasi agar tidak perlu mengetik perintah berulang-ulang. LaTeX memerlukan beberapa pass (dan kadang bibtex/biber), jadi mengelola urutannya secara manual rawan lupa.

Tiga lapisan otomasi: latexmk (standar de facto untuk build otomatis), Makefile (target yang ringkas dan dapat dipanggil), dan CI pipeline (GitHub Actions + lint). Bersama-sama mereka menghilangkan kerja repetitif dan menjamin dokumen selalu ter-build dengan benar.

latexmk: Standar de Facto

latexmk adalah build system yang membaca kebutuhan dokumen dan menjalankan compiler sesuai urutan yang tepat — berapa kali dan tool apa (pdflatex, lualatex, biber, bibtex) secara otomatis.

Kompilasi otomatis
latexmk -pdf main.tex
latexmk -pdf -pdflatex="lualatex %O %S" main.tex   # dengan LuaLaTeX

-pdf meminta output PDF. Dengan -pdflatex="lualatex %O %S", kalian memberitahu latexmk memakai lualatex (karena font/language modern). %O dan %S diganti latexmk secara internal.

File latexmkrc

Konfigurasi default bisa dipindahkan ke file latexmkrc di root proyek:

latexmkrc
$pdf_mode = 1;
$pdflatex = 'lualatex -synctex=1 -interaction=nonstopmode -file-line-error %O %S';
$bibtex_use = 1;
$biber = 'biber %O %S';

Dengan latexmkrc, cukup jalankan latexmk main.tex — pengaturan engine, synctex, dan backend bibliografi terpusat dan konsisten untuk semua orang di tim.

Note

-synctex=1 mengaktifkan SyncTeX (episode 19) — sinkronisasi Anda-teks ↔ PDF. -interaction=nonstopmode dan -file-line-error membuat output ramah terminal/CI. Wajib didaftarkan agar error mudah dilacak.

Makefile

Untuk membungkus perintah yang sering dipakai, gunakan Makefile:

Makefile
TEX = main.tex
 
draft:
	latexmk -pdf -pdflatex="lualatex %O %S" $(TEX)
 
final:
	latexmk -pdf -pdflatex="lualatex %O %S" $(TEX)
	@echo "Final build selesai"
 
clean:
	latexmk -c
 
watch:
	latexmk -pvc -pdf -pdflatex="lualatex %O %S" $(TEX)
 
.PHONY: draft final clean watch

Kemudian jalankan:

Target Makefile
make draft
make final
make watch
make clean

make draft bisa dipakai untuk build cepat pribadi, make final untuk build rilis (mis. menambah langkah validasi/lint), make watch untuk auto-rebuild, make clean untuk membersihkan artefak.

Watch Mode: latexmk -pvc

Untuk auto-rebuild saat file berubah, gunakan -pvc (preview continuously):

Auto-rebuild
latexmk -pvc -pdf main.tex

latexmk -pvc memantau file source dan otomatis mengkompilasi ulang setiap kali ada perubahan — PDF ter-update terus menerus. Sangat nyaman saat menulis sambil melihat preview di editor yang men-support autoload.

CI Pipeline (GitHub Actions)

Kita sudah melihat latex-action di episode 17. Tambahkan layer lint sebagai gate check — PR dengan error lint gagal sebelum merge:

.github/workflows/ci.yml
name: CI
on: [push, pull_request]
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Install TeX Live
        run: |
          sudo apt-get update
          sudo apt-get install -y texlive-latex-extra texlive-lang-other \
            texlive-fonts-recommended lacheck chktex
      - name: Lint (chktex)
        run: chktex -n 1 -n 2 -n 3 main.tex || true
      - uses: xu-cheng/latex-action@v3
        with:
          root_file: main.tex
          compiler: lualatex
          args: -interaction=nonstopmode -file-line-error
  • chktex memeriksa konvensi tipografi (spasi ganda, kutip salah, dll.) — episode 19.
  • lacheck pemeriksaan gaya makro klasik.
  • Kompilasi lates-action menghasilkan PDF sebagai bukti build bersih.

Dengan lint sebagai gate, setiap kontribusi dijamin patuh standar sebelum masuk ke main.

Warning

Di CI, gunakan -interaction=nonstopmode selalu agar kompilasi tidak menggantung meminta input. Kombinasi -file-line-error membuat pesan error berformat file:line: yang bisa diurai. Jika lint menemukan banyak hal yang disengaja (mis. aturan default tidak pas dengan gaya kalian), atur -n (warnumber) untuk menonaktifkan aturan tertentu — episode 19.

Penutup

Pada episode 18 ini, kalian telah mengotomatiskan kompilasi.

Inti yang harus dibawa pulang:

  • latexmk menjalankan urutan engine/biber/bibtex otomatis; konfigurasi di file latexmkrc.
  • Makefile membungkus target (draft, final, clean, watch).
  • latexmk -pvc untuk auto-rebuild saat file berubah.
  • CI (GitHub Actions): latex-action compile + chktex/lacheck lint sebagai gate check.

Di episode 19 selanjutnya, kita akan membahas lint, doc & log debugging — chktex & lacheck untuk pemeriksaan otomatis, membaca error log LaTeX secara efektif, menagakkan overfull box, serta SyncTeX untuk sinkronisasi .tex ↔ .pdf langsung dari editor. Sampai jumpa di episode 19!

Belajar LaTeX - Automatisasi Compile: latexmk, Makefile & CI | Belajar LaTeX