% ============================================================
% bukupedia.cls
% Kelas dokumen buku standar UNESCO - PT. Penerbit Buku Pedia
%
% Pemakaian minimal (lihat main.tex untuk contoh lengkap):
%
%   \documentclass{bukupedia}
%   \judul{JUDUL BUKU}
%   \subjudul{Sub Judul Buku}
%   \penulis{Penulis Satu\\ Penulis Dua}
%   \begin{document}
%   \coverdepan
%   \halamanjudul
%   \halamanredaksi
%   \frontmatter
%   \babtambahan{PRAKATA}
%   ... isi prakata ...
%   \daftarisi
%   \mainmatter
%   ... isi bab ...
%   \backmatter
%   \daftarpustaka{reference}
%   \babtambahan{GLOSARIUM}
%   ... \glosletter{A}, \glosentry{Istilah}{Definisi} ...
%   \babtambahan{KREDIT GAMBAR}
%   \cetakindeks
%   \babtambahan{TENTANG PENULIS}
%   \coverbelakang
%   \end{document}
%
% Spesifikasi yang sudah diatur kelas ini:
%   - Ukuran buku 15,5 x 23 cm (standar UNESCO)
%   - Margin atas-bawah 2 cm, kiri-kanan 1,5 cm, gutter 0 cm
%   - Font Carlito 11pt (kembaran metrik Calibri), spasi 1
%   - Judul bab 24pt kanan bergaris; section A. 12pt; dst.
%   - Referensi BibTeX gaya APA (apacite)
% ============================================================
\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{bukupedia}[2026/07/13 v1.1 Template buku UNESCO PT. Penerbit Buku Pedia]

% Opsi lain diteruskan ke kelas book
\DeclareOption*{\PassOptionsToClass{\CurrentOption}{book}}
\ProcessOptions\relax
\LoadClass[11pt,oneside]{book}

% ---------- Ukuran kertas dan margin ----------
\RequirePackage[paperwidth=15.5cm, paperheight=23cm,
            top=2cm, bottom=2cm,
            left=1.5cm, right=1.5cm,
            bindingoffset=0cm]{geometry}

% ---------- Font Carlito (pengganti Calibri) ----------
\RequirePackage[T1]{fontenc}
\RequirePackage[utf8]{inputenc}
\RequirePackage[sfdefault,lf]{carlito}

% ---------- Bahasa ----------
% "indonesian" adalah nama resmi; nama lama "bahasa" sudah usang
% di babel baru dan memicu warning
\RequirePackage[indonesian]{babel}

% ---------- Spasi 1 ----------
\RequirePackage{setspace}
\singlespacing

% ---------- Paket umum ----------
\RequirePackage{graphicx}
\RequirePackage{array}
\RequirePackage{tabularx}
\RequirePackage{booktabs}
\RequirePackage{enumitem}
% Jarak vertikal list dirapatkan agar senada dengan spasi 1 naskah
% (bawaan kelas book ~9pt antar butir dan ~7pt ke paragraf sekitarnya —
% terlihat renggang di 11pt spasi 1); berlaku untuk enumerate & itemize
\setlist{itemsep=2pt, parsep=0pt, topsep=2pt, partopsep=0pt}
\RequirePackage{listings}
\RequirePackage{xcolor}
\RequirePackage{colortbl} % shading sel/baris tabel
\definecolor{kepalatabel}{gray}{0.92} % abu muda header tabel (seperti docx)
% Isi sel tabel rata tengah vertikal (bukan rata atas), seperti docx
\renewcommand\tabularxcolumn[1]{m{#1}}
% Garis tabel sedikit lebih tebal agar border (termasuk garis atas
% header yang berimpit dengan shading) terlihat jelas
\setlength{\arrayrulewidth}{0.6pt}
\RequirePackage{tikz}
\RequirePackage{lettrine} % drop cap pada paragraf pembuka prakata
% Teks setelah huruf drop cap dibiarkan tegak biasa (bawaan lettrine
% adalah small caps yang tidak dimiliki Carlito dan memicu warning font)
\renewcommand{\LettrineTextFont}{\upshape}
\RequirePackage{indentfirst} % paragraf pertama setelah judul ikut menjorok
\RequirePackage{makeidx}
\RequirePackage[titles]{tocloft}
\RequirePackage{caption}
\RequirePackage[hidelinks]{hyperref}
\RequirePackage{xurl} % dimuat setelah hyperref: \url boleh patah baris di titik mana pun
\setlength{\Urlmuskip}{0mu plus 1mu} % beri kelenturan antar karakter URL
\renewcommand\UrlBreakPenalty{100}   % izinkan patah URL dengan penalti rendah
\renewcommand\UrlBigBreakPenalty{100}
\emergencystretch=1.5em % cadangan kelenturan agar baris tidak melebihi margin
% Hanya laporkan boks yang benar-benar buruk; baris agak renggang
% (badness kecil) tidak perlu memenuhi log
\hbadness=3000
\vbadness=3000

% ---------- Format caption (mengikuti docx: 8pt, tengah) ----------
% Tabel: "Tabel 1.1. ..." (titik) di atas tabel.
% Gambar: "Gambar 1.1 ..." (spasi) di bawah gambar.
\DeclareCaptionFont{delapan}{\fontsize{8}{10}\selectfont}
\captionsetup{font=delapan, justification=centering, skip=3pt}
\captionsetup[table]{labelsep=period}
\captionsetup[figure]{labelsep=space}
% Di docx tabel/gambar menyatu rapat dengan teks di sekitarnya;
% jarak float dirapatkan agar serupa
\setlength{\intextsep}{4pt}
\setlength{\textfloatsep}{8pt}

% ---------- Format daftar isi (mengikuti docx) ----------
% Tanpa titik-titik penghubung, nomor halaman rata kanan,
% entri bab berawalan "BAB ", kedalaman sampai section (A-H).
\setcounter{tocdepth}{1}
\renewcommand{\cftdotsep}{\cftnodots}
\renewcommand{\cftchappresnum}{BAB }
\setlength{\cftchapnumwidth}{3.4em}
\renewcommand{\cftsecaftersnum}{.}

% ---------- Referensi APA dengan BibTeX ----------
\RequirePackage{apacite}

% ---------- Indeks ----------
\makeindex

% ---------- Penomoran section gaya A. B. C. ----------
\renewcommand{\thesection}{\Alph{section}}
\renewcommand{\thesubsection}{\alph{subsection})}

% ---------- Format judul bab dan section (mengikuti docx) ----------
% Bab bernomor : "BAB 1" + judul, 24pt bold, rata kanan,
%                dengan garis horizontal di bawahnya.
% Bab tak bernomor (PRAKATA dll.): 16pt bold, tengah.
% Section      : 12pt bold, "A. JUDUL SECTION".
\RequirePackage{titlesec}
\definecolor{garisbab}{RGB}{155,194,230}
\titleformat{\chapter}[display]
  {\raggedleft\bfseries}
  {\fontsize{24}{29}\selectfont BAB \thechapter}
  {6pt}
  {\fontsize{24}{29}\selectfont\MakeUppercase}
  [{\color{garisbab}\titlerule[1.2pt]}]
\titleformat{name=\chapter, numberless}[display]
  {\centering\bfseries}
  {}
  {0pt}
  {\fontsize{16}{19}\selectfont\MakeUppercase}
\titlespacing*{\chapter}{0pt}{-20pt}{20pt}
\titleformat{\section}
  {\bfseries\fontsize{12}{14}\selectfont}
  {\thesection.}{0.5em}{\MakeUppercase}
% Jarak judul section: renggang secukupnya dari teks sebelumnya,
% tipis ke konten di bawahnya (seperti docx)
\titlespacing*{\section}{0pt}{8pt}{2pt}
% Sub section "a) ..." : tidak bold, menjorok sejajar indentasi
% paragraf. Label diberi lebar tetap 1.5em supaya teks judul dan
% isi di bawahnya (lingkungan isisubsek) mulai di posisi x yang
% sama persis.
\titleformat{\subsection}
  {\fontsize{11}{13}\selectfont}
  {\makebox[1.5em][l]{\thesubsection}}{0em}{}
\titlespacing*{\subsection}{\parindent}{6pt}{3pt}
% Isi sub section: blok menjorok sejajar teks judul sub section
\newenvironment{isisubsek}
  {\list{}{\setlength{\leftmargin}{\dimexpr\parindent+1.5em\relax}%
           \setlength{\rightmargin}{0pt}}\item\relax}
  {\endlist}

% ---------- Format kode program ----------
% Kode program disajikan dalam kotak berbingkai tipis dengan
% latar abu muda agar batasnya jelas dan proporsional, memakai
% huruf monospace agar indentasi kode terjaga.
\lstset{
  language=Python,
  basicstyle=\ttfamily\small,
  showstringspaces=false,
  breaklines=true,
  frame=single,
  framerule=0.4pt,
  rulecolor=\color{black!60},
  backgroundcolor=\color{black!4},
  xleftmargin=3pt,
  xrightmargin=3pt,
  aboveskip=1em,
  belowskip=1em
}
% Lingkungan kode yang tidak terpotong pindah halaman.
% Bahasa bawaan Python; ganti per blok lewat argumen opsional,
% mis. \begin{kodeprogram}[Java] ... (nama bahasa mengikuti listings)
\lstnewenvironment{kodeprogram}[1][Python]
  {\lstset{language=#1}\noindent\minipage{\linewidth}}
  {\endminipage}

% ---------- Entri glosarium ----------
% \glosletter{A} untuk tiap kepala huruf (pemakaian pertama tanpa
% garis pemisah, berikutnya otomatis dengan garis),
% \glosentry{istilah}{definisi} untuk tiap entri.
% \glosletterfirst{A} tetap tersedia untuk naskah lama.
\newcommand{\glosentry}[2]{\noindent #1: #2\par\medskip}
\newif\ifbkp@glosperdana
\bkp@glosperdanatrue
\newcommand{\glosletter}[1]{%
  \ifbkp@glosperdana
    \noindent #1\par\medskip\global\bkp@glosperdanafalse
  \else
    \par\smallskip\noindent\rule{\textwidth}{0.4pt}\par\medskip\noindent #1\par\medskip
  \fi}
\newcommand{\glosletterfirst}[1]{\global\bkp@glosperdanatrue\glosletter{#1}}

% ============================================================
% METADATA BUKU
% Diisi di preamble dokumen dengan perintah-perintah berikut.
% ============================================================
\newcommand{\bkp@judul}{JUDUL BUKU}
\newcommand{\bkp@subjudul}{}
\newcommand{\bkp@penulis}{Nama Penulis}
\newcommand{\bkp@penulisredaksi}{\bkp@penulis}
\newcommand{\bkp@isbn}{}
\newcommand{\bkp@editor}{}
\newcommand{\bkp@penyunting}{}
\newcommand{\bkp@desainsampul}{}
\newcommand{\bkp@fontbuku}{Calibri}
\newcommand{\bkp@penerbit}{PT. Penerbit Buku Pedia}
\newcommand{\bkp@alamatredaksi}{Athena Residence Blok. E No. 1, Desa Ciwaruga,\\
Kec. Parongpong, Kab. Bandung Barat 40559\\
Tel. 628-775-2000-300\\
Email : penerbit@bukupedia.co.id}
\newcommand{\bkp@distributor}{Informatics Research Center\\
Jl. Sariasih No. 54\\
Bandung 40151\\
Email : irc@ulbi.ac.id}

\newcommand{\bkp@logopenerbit}{images/image6.png}

\newcommand{\judul}[1]{\renewcommand{\bkp@judul}{#1}}
% Berkas logo penerbit pada halaman judul (bawaan: images/image6.png;
% aset logo resmi lain tersedia di folder logo/ repo template)
\newcommand{\logopenerbit}[1]{\renewcommand{\bkp@logopenerbit}{#1}}
\newcommand{\subjudul}[1]{\renewcommand{\bkp@subjudul}{#1}}
% Nama penulis pada halaman judul (pisahkan dengan \\)
\newcommand{\penulis}[1]{\renewcommand{\bkp@penulis}{#1}}
% Urutan penulis di halaman redaksi bila berbeda dari halaman judul
\newcommand{\penulisredaksi}[1]{\renewcommand{\bkp@penulisredaksi}{#1}}
\newcommand{\isbn}[1]{\renewcommand{\bkp@isbn}{#1}}
\newcommand{\editor}[1]{\renewcommand{\bkp@editor}{#1}}
\newcommand{\penyunting}[1]{\renewcommand{\bkp@penyunting}{#1}}
\newcommand{\desainsampul}[1]{\renewcommand{\bkp@desainsampul}{#1}}
\newcommand{\fontbuku}[1]{\renewcommand{\bkp@fontbuku}{#1}}
\newcommand{\penerbit}[1]{\renewcommand{\bkp@penerbit}{#1}}
\newcommand{\alamatredaksi}[1]{\renewcommand{\bkp@alamatredaksi}{#1}}
\newcommand{\distributor}[1]{\renewcommand{\bkp@distributor}{#1}}
% Tahun terbit: otomatis mengikuti tahun saat kompilasi.
% Ganti dengan \tahun{2023} bila perlu tahun tetap.
\newcommand{\tahunterbit}{\the\year}
\newcommand{\tahun}[1]{\renewcommand{\tahunterbit}{#1}}
% Kompatibilitas: \judulbuku dan \subjudulbuku tetap tersedia
\newcommand{\judulbuku}{\bkp@judul}
\newcommand{\subjudulbuku}{\bkp@subjudul}

% ---------- Pemeriksaan metadata ----------
% Metadata yang masih placeholder/kosong lolos diam-diam ke naskah
% (judul "JUDUL BUKU", label redaksi tanpa isian). Peringatkan di log
% agar tertangkap standar "log bersih". \isbn{} sengaja tidak
% diperiksa: memang kosong sampai nomor ISBN terbit.
\newcommand{\bkp@judulbawaan}{JUDUL BUKU}
\newcommand{\bkp@penulisbawaan}{Nama Penulis}
% Pembanding kosong dibuat dengan \newcommand juga agar status \long-nya
% sama dengan makro metadata (\ifx terhadap \@empty selalu gagal)
\newcommand{\bkp@kosong}{}
\AtBeginDocument{%
  \ifx\bkp@judul\bkp@judulbawaan
    \ClassWarning{bukupedia}{\string\judul{...} belum diisi (masih placeholder "JUDUL BUKU")}\fi
  \ifx\bkp@penulis\bkp@penulisbawaan
    \ClassWarning{bukupedia}{\string\penulis{...} belum diisi (masih placeholder "Nama Penulis")}\fi
  \ifx\bkp@editor\bkp@kosong
    \ClassWarning{bukupedia}{\string\editor{...} belum diisi; label Editor di halaman redaksi akan kosong}\fi
  \ifx\bkp@penyunting\bkp@kosong
    \ClassWarning{bukupedia}{\string\penyunting{...} belum diisi; label Penyunting di halaman redaksi akan kosong}\fi
  \ifx\bkp@desainsampul\bkp@kosong
    \ClassWarning{bukupedia}{\string\desainsampul{...} belum diisi; label Desain sampul di halaman redaksi akan kosong}\fi}

% ---------- Metadata PDF ----------
% Properti Title/Author/Subject PDF diisi otomatis dari metadata buku.
% Pemisah baris \\ (termasuk bentuk \\[jarak]) pada judul/nama diubah
% menjadi koma agar menjadi string PDF yang valid tanpa warning.
\ExplSyntaxOn
\seq_new:N \bkpPdfSeq
\tl_new:N \bkpPdfItem
\tl_new:N \bkpPdfJudul
\tl_new:N \bkpPdfPenulis
\tl_new:N \bkpPdfSubjudul
\cs_new_protected:Npn \bkp_pdf_bersih:nN #1#2
  {
    \seq_set_split:Nnn \bkpPdfSeq { \\ } {#1}
    \tl_clear:N #2
    \bool_set_true:N \l_tmpa_bool
    \seq_map_inline:Nn \bkpPdfSeq
      {
        \tl_set:Nn \bkpPdfItem {##1}
        \regex_replace_once:nnN { \A \[ [^\]]* \] \s* } {} \bkpPdfItem
        \bool_if:NTF \l_tmpa_bool
          { \bool_set_false:N \l_tmpa_bool }
          { \tl_put_right:Nn #2 { ,~ } }
        \tl_put_right:NV #2 \bkpPdfItem
      }
  }
\cs_generate_variant:Nn \bkp_pdf_bersih:nN { oN }
\NewDocumentCommand \BkpPdfBersih { m m } { \bkp_pdf_bersih:oN {#1} #2 }
\ExplSyntaxOff
\AtBeginDocument{%
  \BkpPdfBersih{\bkp@judul}{\bkpPdfJudul}%
  \BkpPdfBersih{\bkp@penulis}{\bkpPdfPenulis}%
  \BkpPdfBersih{\bkp@subjudul}{\bkpPdfSubjudul}%
  \hypersetup{pdftitle={\bkpPdfJudul},
              pdfauthor={\bkpPdfPenulis},
              pdfsubject={\bkpPdfSubjudul}}}

\definecolor{penerbitblue}{RGB}{31,78,121}

% Nomor halaman di bawah-tengah, tanpa running header (sesuai docx)
\AtBeginDocument{\pagestyle{plain}}

% ============================================================
% \coverdepan / \coverbelakang
% Memuat berkas gambar cover/depan dan cover/belakang
% (pdf/png/jpg, ditulis tanpa ekstensi agar fleksibel).
% Ganti cover cukup dengan menimpa berkas tersebut dengan
% desain berukuran 15,5 x 23 cm. Desain bawaan bersumber dari
% cover/desain.tex (regenerasi: "make cover").
% Halaman cover tidak diberi nomor dan tidak ikut penomoran
% (penomoran "Alph" tersembunyi agar tidak bentrok dg hyperref).
% ============================================================
% Pengaman: hentikan kompilasi dengan pesan yang jelas bila berkas
% cover belum ada (tanpa ini pengguna disambut error LaTeX kriptik)
\newcommand{\bkp@wajibgambar}[2]{%
  \IfFileExists{#1.pdf}{}{%
    \IfFileExists{#1.png}{}{%
      \IfFileExists{#1.jpg}{}{%
        \ClassError{bukupedia}{Berkas '#1' (.pdf/.png/.jpg) tidak ditemukan}{#2}}}}}

\newcommand{\coverdepan}{%
  \bkp@wajibgambar{cover/depan}{Letakkan desain cover depan ukuran
    15,5 x 23 cm sebagai cover/depan.pdf (atau .png/.jpg), atau
    jalankan "make cover" untuk desain bawaan.}%
  \pagenumbering{Alph}%
  \thispagestyle{empty}%
  \begin{tikzpicture}[remember picture, overlay]
    \node[inner sep=0pt] at (current page.center)
      {\includegraphics[width=\paperwidth, height=\paperheight]{cover/depan}};
  \end{tikzpicture}%
  \clearpage}

\newcommand{\coverbelakang}{%
  \bkp@wajibgambar{cover/belakang}{Letakkan desain cover belakang ukuran
    15,5 x 23 cm sebagai cover/belakang.pdf (atau .png/.jpg), atau
    jalankan "make cover" untuk desain bawaan.}%
  \clearpage
  \thispagestyle{empty}%
  \begin{tikzpicture}[remember picture, overlay]
    \node[inner sep=0pt] at (current page.center)
      {\includegraphics[width=\paperwidth, height=\paperheight]{cover/belakang}};
  \end{tikzpicture}}

% ============================================================
% \halamanjudul
% Halaman judul: judul 22pt bold melekat margin atas, sub judul
% 12pt, nama penulis 16pt bold, logo + nama penerbit (biru) di
% bagian bawah. Tanpa nomor halaman, tanpa logo di atas.
% ============================================================
\newcommand{\halamanjudul}{%
  \thispagestyle{empty}%
  {\centering
    {\fontsize{22}{26}\selectfont\bfseries \bkp@judul\par}
    \vspace{0.5em}
    {\fontsize{12}{15}\selectfont \bkp@subjudul\par}
    \vspace{5cm}
    {\fontsize{16}{19}\selectfont\bfseries \bkp@penulis\par}
    \vfill
    % Logo penerbit; bila berkasnya tidak ada, halaman judul tetap
    % tercetak (nama penerbit saja) disertai peringatan di log
    \IfFileExists{\bkp@logopenerbit}{%
      \begin{tabular}{@{}c@{\hspace{1em}}l@{}}
        \raisebox{-0.45\height}{\includegraphics[width=5cm]{\bkp@logopenerbit}} &
        \begin{tabular}[c]{@{}l@{}}
          \textcolor{penerbitblue}{\fontsize{10}{12}\selectfont\bfseries \bkp@penerbit}\\[2pt]
          \textcolor{penerbitblue}{\fontsize{10}{12}\selectfont\bfseries \tahunterbit}
        \end{tabular}
      \end{tabular}\par
    }{%
      \ClassWarning{bukupedia}{Logo penerbit '\bkp@logopenerbit' tidak
        ditemukan; halaman judul dicetak tanpa logo. Sediakan berkasnya
        atau arahkan dengan \string\logopenerbit{...}}%
      {\textcolor{penerbitblue}{\fontsize{10}{12}\selectfont\bfseries \bkp@penerbit}\par}
      \vspace{2pt}
      {\textcolor{penerbitblue}{\fontsize{10}{12}\selectfont\bfseries \tahunterbit}\par}%
    }%
  }%
  \clearpage}

% ============================================================
% \halamanredaksi
% Halaman redaksi: judul 16pt/sub judul 10pt melekat di atas,
% info redaksi 8pt spasi 1 melekat di bawah. Tanpa nomor halaman.
% Baris kosong di bawah ISBN diisi lewat \isbn{...} begitu
% nomor ISBN terbit. Label "Font:" dan "Distributor:" tidak lagi
% dicetak (distributor Bukupedia banyak); \fontbuku dan \distributor
% tetap dikenali demi kompatibilitas naskah lama.
% ============================================================
\newcommand{\halamanredaksi}{%
  \thispagestyle{empty}%
  \noindent{\fontsize{16}{19}\selectfont\bfseries \bkp@judul}\\[2pt]
  {\fontsize{10}{12}\selectfont \bkp@subjudul}

  \vfill

  {\fontsize{8}{10}\selectfont % Calibri (Carlito) 8pt, spasi 1

  \noindent\textbf{\textit{Penulis:}}\\
  \bkp@penulisredaksi

  \bigskip
  \noindent\textbf{\textit{ISBN}}:\\
  \bkp@isbn\mbox{}

  \bigskip
  \noindent\textbf{\textit{Editor:}}\\
  \bkp@editor

  \bigskip
  \noindent\textbf{\textit{Penyunting:}}\\
  \bkp@penyunting

  \bigskip
  \noindent\textbf{\textit{Desain sampul dan Tata letak:}}\\
  \bkp@desainsampul

  \bigskip
  \noindent\textbf{\textit{Penerbit:}}\\
  \bkp@penerbit

  \bigskip
  \noindent\textbf{\textit{Redaksi:}}\\
  \bkp@alamatredaksi

  \bigskip
  \noindent Cetakan Pertama, \tahunterbit\\
  Hak cipta dilindungi undang-undang\\
  Dilarang memperbanyak karya tulis ini dalam bentuk dan\\
  dengan cara apa pun tanpa ijin tertulis dari penerbit\par
  }%
  \clearpage}

% ============================================================
% \daftarpustaka{berkas-bib}
% Mencetak DAFTAR PUSTAKA gaya APA dari berkas .bib
% ============================================================
\newcommand{\daftarpustaka}[1]{%
  \renewcommand{\bibname}{DAFTAR PUSTAKA}%
  \bibliographystyle{apacite}%
  \bibliography{#1}}

% ============================================================
% Perintah bagian buku
% Membungkus pasangan \chapter*/\addcontentsline (dan resep khusus
% daftar isi/indeks) yang dulu harus dirakit tangan di main.tex dan
% rawan salah urutan (entri daftar isi menunjuk halaman keliru).
%
%   \daftarisi         daftar isi + entri TOC di halaman awalnya
%   \babtambahan{X}    bab tak bernomor (PRAKATA, GLOSARIUM, dll.)
%                      dengan entri TOC yang benar
%   \cetakindeks       cetak INDEKS + entri TOC di halaman awalnya
% ============================================================
\newcommand{\daftarisi}{%
  \clearpage
  \phantomsection
  \addcontentsline{toc}{chapter}{DAFTAR ISI}%
  \tableofcontents}

\newcommand{\babtambahan}[1]{%
  \chapter*{#1}%
  \addcontentsline{toc}{chapter}{#1}}

% ---------- Penanda batas bagian awal ----------
% Saat \mainmatter dipanggil, nomor halaman fisik terakhir bagian awal
% (halaman judul s.d. daftar isi) dicatat ke lampiran-batas.txt.
% Dipakai lampiran-isbn.tex (lintas OS, murni TeX) dan "make lampiran"
% untuk memotong lampiran pengajuan ISBN dari main.pdf.
\newwrite\bkp@lampiranwrite
\let\bkp@mainmatterasli\mainmatter
\renewcommand{\mainmatter}{%
  \bkp@mainmatterasli
  \immediate\openout\bkp@lampiranwrite=lampiran-batas.txt
  \immediate\write\bkp@lampiranwrite{\the\ReadonlyShipoutCounter}%
  \immediate\closeout\bkp@lampiranwrite}

% Judul indeks "INDEKS" (bawaan babel indonesian: "Indeks")
\addto\captionsindonesian{\renewcommand{\indexname}{INDEKS}}
\newcommand{\cetakindeks}{%
  \clearpage
  \phantomsection
  \addcontentsline{toc}{chapter}{INDEKS}%
  \printindex}

\endinput
