Belajar LaTeX - Dokumen Dinamis: Counters, Conditionals & Macros
Episode 16 of 28

Belajar LaTeX - Dokumen Dinamis: Counters, Conditionals & Macros

Membuat dokumen yang berperilaku dinamis: counter dengan \newcounter dan \stepcounter, percabangan dengan \if...\else...\fi, etoolbox dan pgffor untuk loop, argumen makro dengan nilai opsional, serta eksplorasi layer pemrograman modern expl3 (L3) yang terintegrasi kernel.

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

Pendahuluan

Setelah di episode 15 kita membuat makro sederhana, pada episode ini kita masuk lebih dalam ke pemrograman LaTeX: membuat dokumen yang "berperilaku". LaTeX bukan sekadar bahasa markup — ia termasuk macro expansion language yang memungkinkan counting, percabangan, dan loop untuk mengotomatiskan banyak hal.

Mengapa penting? Kemampuan ini mengubah kalian dari menulis konten statis menjadi membangun sistem dokumen yang adaptif: penomoran kustom, memilih apa yang tampil berdasarkan kondisi, dan mengulang pola tanpa menyalin-tempel. Ini fondasi memahami mengapa banyak template (dan kernel itu sendiri) bekerja seperti sekarang.

Counters: Penomoran Sendiri

LaTeX memakai counter untuk penomoran otomatis (section, figure, dst.). Kalian bisa membuat counter sendiri:

latex
\newcounter{pertanyaan}
\stepcounter{pertanyaan}
\thepertanyaan
counter.tex
\documentclass{article}
\newcounter{materi}[section]
\begin{document}
 
\section{Pendahuluan}
\stepcounter{materi}
Materi \thesection.\themateri
 
\stepcounter{materi}
Materi \thesection.\themateri
 
\end{document}
  • \newcounter{nama} — mendefinisikan counter.
  • \stepcounter{nama} — menambah 1; \setcounter mengatur nilai; \addtocounter menambah nilai tertentu.
  • \thenama — menampilkan nilai; \value{nama} mengembalikan nilai numerik.
  • \newcounter{materi}[section] — mereset materi otomatis tiap section baru.

Counter adalah dasar semua penomoran LaTeX — memahami ini membantu kalian menyesuaikan perilaku penomoran di dokumen sendiri.

Conditionals: Percabangan

LaTeX inti punya percabangan \if...\else...\fi. Salah satu yang paling berguna adalah \ifdefined:

latex
\ifdefined\myname
    \myname sudah terdefinisi.
\else
    \myname belum terdefinisi.
\fi

Contoh dengan flag:

latex
\newif\ifdraft
\drafttrue   % atau \draftfalse
 
\ifdraft
    % hal-hal khusus versi draft
    \textbf{(Draft)}
\else
    % hal-hal versi final
\fi

\newif\ifdraft membuat flag boolean yang bisa di-set true/false. Sangat berguna untuk membangun satu dokumen yang tampil berbeda antara mode draft dan final.

etoolbox: Utilitas Modern

Paket etoolbox menyediakan utilitas pemrograman LaTeX yang lebih nyaman:

latex
\usepackage{etoolbox}
latex
\ifdef{\myname}{terdefinisi}{tidak}
\ifcsdef{command}{...}{...}
 
\forcsvlist{\listlattempt}{a, b, c}

\ifdef mengecek makro, \forcsvlist mengulang item daftar yang dipisah koma. etoolbox adalah "standard library" praktis untuk pemrograman LaTeX.

pgffor: Loop

Paket pgffor (dari ekosistem TikZ) menyediakan \foreach untuk loop:

latex
\usepackage{pgffor}
latex
\foreach \x in {1,2,3,4} {Bilangan \x; }
 
\foreach \warna in {merah, hijau, biru} {Warna \warna; }

\foreach sangat berguna untuk mengulang noda gambar, membangun tabel, atau men-generate konten berulang. Gabungan dengan counter, kalian bisa membangun struktur dinamis.

Macros dengan Argumen

Kita sudah belajar \newcommand di episode 15. Perluas dengan argumen opsional:

latex
\newcommand{\judulkotak}[2][Judul]{\textbf{#1}: #2}
 
\judulkotak{Isi biasa}            % → Judul: Isi biasa
\judulkotak[Tips]{Isi}            % → Tips: Isi

Argumen opsional [1][Judul] berarti: argumen #1 bertipe opsional dengan default "Judul"; #2 wajib. Ini membuat makro fleksibel dengan default yang masuk akal.

expl3 (L3): Layer Pemrograman Modern

Sebagian besar pemrograman inti/kernel LaTeX modern dilakukan di layer expl3 (LaTeX3), terintegrasi sejak 2020. Kalian bisa menggunakannya dengan blok \ExplSyntaxOn...\ExplSyntaxOff:

latex
\ExplSyntaxOn
\bool_if:nTF { \int_compare_p:nNn { 5 } > { 3 } }
    { Lima lebih besar dari tiga. }
    { Bukan. }
\ExplSyntaxOff

Dalam expl3, aturan penamaan bergaya _ untuk variabel internal dan fungsi terstruktur (mis. \int_compare_p:nNn). Konsep modern: alih-alih \ifthenelse, expl3 menawarkan \bool_if:nTF, kondisi \int_compare, dsb.

latex
\ExplSyntaxOn
\cs_new:Npn \helloworld #1 { Halo,~#1! }
\ExplSyntaxOff

\cs_new:Npn mendefinisikan makro di expl3. Meskipun tidak wajib bagi pemula, memahami eksistensi expl3 penting karena ia menjadi dasar banyak package modern dan fitur kernel 2026.

Note

Jangan terintimidasi expl3. Untuk 90% kebutuhan kalian, \newcommand, counter, dan etoolbox sudah cukup. expl3 relevan saat ingin membangun package/makro serius — dan dipakai di balik layar oleh banyak fitur modern yang kalian nikmati tanpa sadar.

Penutup

Pada episode 16 ini, kalian telah membuat dokumen dinamis.

Inti yang harus dibawa pulang:

  • Counter (\newcounter, \stepcounter, \the...) untuk penomoran kustom; biasakan per-reset dengan [section].
  • Conditionals \ifdefined/\newif/\if...\else...\fi; etoolbox untuk \ifdef/\forcsvlist.
  • pgffor \foreach untuk loop; makro dengan argumen opsional.
  • expl3/L3 (\ExplSyntaxOn) = layer pemrograman modern inti kernel.

Di episode 17 selanjutnya, kita akan membahas version control dengan Git & kolaborasi — mengapa .tex teks ideal untuk Git, setup GitHub + GitHub Actions, integrasi Git Overleaf, tips repositori, dan branch strategy untuk proyek dokumen. Sampai jumpa di episode 17!

Belajar LaTeX - Dokumen Dinamis: Counters, Conditionals & Macros | Belajar LaTeX