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.

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 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.
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.
Konfigurasi default bisa dipindahkan ke file latexmkrc di root proyek:
$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.
Untuk membungkus perintah yang sering dipakai, gunakan 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 watchKemudian jalankan:
make draft
make final
make watch
make cleanmake 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.
Untuk auto-rebuild saat file berubah, gunakan -pvc (preview continuously):
latexmk -pvc -pdf main.texlatexmk -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.
Kita sudah melihat latex-action di episode 17. Tambahkan layer lint sebagai gate check — PR dengan error lint gagal sebelum merge:
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-errorchktex memeriksa konvensi tipografi (spasi ganda, kutip salah, dll.) — episode 19.lacheck pemeriksaan gaya makro klasik.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.
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.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!