> For the complete documentation index, see [llms.txt](https://overleaf-pro.ayaka.space/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://overleaf-pro.ayaka.space/latex/id/pemformatan/11-code-listing.md).

# Daftar kode

## Pendahuluan

LaTeX banyak digunakan dalam sains dan pemrograman telah menjadi aspek penting di beberapa bidang sains, sehingga diperlukan alat yang menampilkan kode dengan benar. Artikel ini menjelaskan cara menggunakan standard **verbatim** environment serta paket **listings**, yang menyediakan fitur pemformatan kode yang lebih canggih. [Artikel terpisah ini](/latex/id/pemformatan/12-code-highlighting-with-minted.md) membahas `minted` paket `pygmentize` pustaka.

## Environment verbatim

Alat default untuk menampilkan kode di LaTeX adalah `verbatim`, yang menghasilkan keluaran dalam font monospace.

```latex
\begin{verbatim}
Teks yang diapit di dalam environment \texttt{verbatim}
dicetak langsung
dan semua perintah \LaTeX{} diabaikan.
\end{verbatim}
```

[Buka contoh ini di Overleaf](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=verbatim+text+example\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cbegin%7Bdocument%7D%0A%5Cbegin%7Bverbatim%7D%0AText+enclosed+inside+%5Ctexttt%7Bverbatim%7D+environment+%0Ais+printed+directly+%0Aand+all+%5CLaTeX%7B%7D+commands+are+ignored.%0A%5Cend%7Bverbatim%7D%0A%5Cend%7Bdocument%7D)

Kode di atas menghasilkan keluaran berikut:

![Verbatim1.png](/files/3b9323e736b27f149fae646577f0c62b0ef5fc92)

Sama seperti pada contoh di pendahuluan, semua teks dicetak dengan mempertahankan pemisah baris dan spasi putih. Ada versi berbintang dari perintah ini yang keluarannya sedikit berbeda.

```latex
\begin{verbatim*}
Teks yang diapit di dalam environment \texttt{verbatim}
dicetak langsung
dan semua perintah \LaTeX{} diabaikan.
\end{verbatim*}
```

[Buka contoh ini di Overleaf](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=verbatim+text+example\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cbegin%7Bdocument%7D%0A%5Cbegin%7Bverbatim%2A%7D%0AText+enclosed+inside+%5Ctexttt%7Bverbatim%7D+environment+%0Ais+printed+directly+%0Aand+all+%5CLaTeX%7B%7D+commands+are+ignored.%0A%5Cend%7Bverbatim%2A%7D%0A%5Cend%7Bdocument%7D)

Kode di atas menghasilkan keluaran berikut:

![Verbatim2.png](/files/005f33c6b9984c17bffa2fefcb545deb0e43ce45)

Dalam kasus ini spasi ditekankan dengan karakter khusus "visible-space": **`␣`**.

Teks mirip verbatim juga dapat digunakan dalam sebuah paragraf dengan bantuan `\verb` perintah.

```latex
Di direktori \verb|C:\Windows\system32| Anda dapat menemukan banyak aplikasi
sistem Windows.

Perintah \verb+\ldots+ menghasilkan \ldots
```

[Buka contoh ini di Overleaf](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=using+the+%5Cverb+command\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cbegin%7Bdocument%7D%0AIn+the+directory+%5Cverb%7CC%3A%5CWindows%5Csystem32%7C+you+can+find+a+lot+of+Windows+%0Asystem+applications.+%0A+%0AThe+%5Cverb%2B%5Cldots%2B+command+produces+%5Cldots%0A%5Cend%7Bdocument%7D)

Kode di atas menghasilkan keluaran berikut:

![Verbatim3OLV2.png](/files/81d16665c2381c1de536758c9641b5f701117d58)

Perintah `\verb|C:\Windows\system32|` mencetak teks di dalam pembatas `|` dalam format verbatim. Karakter apa pun, kecuali huruf dan `*`, dapat digunakan sebagai pembatas. Misalnya `\verb+\ldots+` menggunakan `+` sebagai pembatas.

## Menggunakan listings untuk menyorot kode

Untuk menggunakan `lstlisting` environment Anda harus menambahkan baris berikut ke preamble dokumen Anda:

```latex
\usepackage{listings}
```

Berikut contoh penggunaan `lstlisting` environment dari `listings` paket:

```latex
\begin{lstlisting}
import numpy as np

def incmatrix(genl1,genl2):
    m = len(genl1)
    n = len(genl2)
    M = None #untuk menjadi matriks insidensi
    VT = np.zeros((n*m,1), int)  #variabel dummy

    #hitung matriks XOR bitwise
    M1 = bitxormatrix(genl1)
    M2 = np.triu(bitxormatrix(genl2),1)

    for i in range(m-1):
        for j in range(i+1, m):
            [r,c] = np.where(M2 == M1[i,j])
            for k in range(len(r)):
                VT[(i)*n + r[k]] = 1;
                VT[(i)*n + c[k]] = 1;
                VT[(j)*n + r[k]] = 1;
                VT[(j)*n + c[k]] = 1;

                if M is None:
                    M = np.copy(VT)
                else:
                    M = np.concatenate((M, VT), 1)

                VT = np.zeros((n*m,1), int)

    return M
\end{lstlisting}
```

[Buka `listings` contoh di Overleaf](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=listings+package+example\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cusepackage%7Blistings%7D%0A%5Cbegin%7Bdocument%7D%0A%5Cbegin%7Blstlisting%7D%0Aimport+numpy+as+np%0A++++%0Adef+incmatrix%28genl1%2Cgenl2%29%3A%0A++++m+%3D+len%28genl1%29%0A++++n+%3D+len%28genl2%29%0A++++M+%3D+None+%23to+become+the+incidence+matrix%0A++++VT+%3D+np.zeros%28%28n%2Am%2C1%29%2C+int%29++%23dummy+variable%0A++++%0A++++%23compute+the+bitwise+xor+matrix%0A++++M1+%3D+bitxormatrix%28genl1%29%0A++++M2+%3D+np.triu%28bitxormatrix%28genl2%29%2C1%29+%0A%0A++++for+i+in+range%28m-1%29%3A%0A++++++++for+j+in+range%28i%2B1%2C+m%29%3A%0A++++++++++++%5Br%2Cc%5D+%3D+np.where%28M2+%3D%3D+M1%5Bi%2Cj%5D%29%0A++++++++++++for+k+in+range%28len%28r%29%29%3A%0A++++++++++++++++VT%5B%28i%29%2An+%2B+r%5Bk%5D%5D+%3D+1%3B%0A++++++++++++++++VT%5B%28i%29%2An+%2B+c%5Bk%5D%5D+%3D+1%3B%0A++++++++++++++++VT%5B%28j%29%2An+%2B+r%5Bk%5D%5D+%3D+1%3B%0A++++++++++++++++VT%5B%28j%29%2An+%2B+c%5Bk%5D%5D+%3D+1%3B%0A++++++++++++++++%0A++++++++++++++++if+M+is+None%3A%0A++++++++++++++++++++M+%3D+np.copy%28VT%29%0A++++++++++++++++else%3A%0A++++++++++++++++++++M+%3D+np.concatenate%28%28M%2C+VT%29%2C+1%29%0A++++++++++++++++%0A++++++++++++++++VT+%3D+np.zeros%28%28n%2Am%2C1%29%2C+int%29%0A++++%0A++++return+M%0A%5Cend%7Blstlisting%7D%0A%5Cend%7Bdocument%7D)

Kode di atas menghasilkan keluaran berikut:

![CodeListingEx1.png](/files/815af43205b90e8748daef132b88bc01743f45fd)

Dalam contoh ini, keluaran mengabaikan semua perintah LaTeX dan teks dicetak dengan mempertahankan semua pemisah baris dan spasi putih yang diketik. Mari kita lihat contoh kedua:

```latex
\begin{lstlisting}[language=Python]
import numpy as np

def incmatrix(genl1,genl2):
    m = len(genl1)
    n = len(genl2)
    M = None #untuk menjadi matriks insidensi
    VT = np.zeros((n*m,1), int)  #variabel dummy

    #hitung matriks XOR bitwise
    M1 = bitxormatrix(genl1)
    M2 = np.triu(bitxormatrix(genl2),1)

    for i in range(m-1):
        for j in range(i+1, m):
            [r,c] = np.where(M2 == M1[i,j])
            for k in range(len(r)):
                VT[(i)*n + r[k]] = 1;
                VT[(i)*n + c[k]] = 1;
                VT[(j)*n + r[k]] = 1;
                VT[(j)*n + c[k]] = 1;

                if M is None:
                    M = np.copy(VT)
                else:
                    M = np.concatenate((M, VT), 1)

                VT = np.zeros((n*m,1), int)

    return M
\end{lstlisting}
```

[Buka `listings` contoh di Overleaf](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=Python+listings+package+example\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cusepackage%7Blistings%7D%0A%5Cbegin%7Bdocument%7D%0A%5Cbegin%7Blstlisting%7D%5Blanguage%3DPython%5D%0Aimport+numpy+as+np%0A++++%0Adef+incmatrix%28genl1%2Cgenl2%29%3A%0A++++m+%3D+len%28genl1%29%0A++++n+%3D+len%28genl2%29%0A++++M+%3D+None+%23to+become+the+incidence+matrix%0A++++VT+%3D+np.zeros%28%28n%2Am%2C1%29%2C+int%29++%23dummy+variable%0A++++%0A++++%23compute+the+bitwise+xor+matrix%0A++++M1+%3D+bitxormatrix%28genl1%29%0A++++M2+%3D+np.triu%28bitxormatrix%28genl2%29%2C1%29+%0A%0A++++for+i+in+range%28m-1%29%3A%0A++++++++for+j+in+range%28i%2B1%2C+m%29%3A%0A++++++++++++%5Br%2Cc%5D+%3D+np.where%28M2+%3D%3D+M1%5Bi%2Cj%5D%29%0A++++++++++++for+k+in+range%28len%28r%29%29%3A%0A++++++++++++++++VT%5B%28i%29%2An+%2B+r%5Bk%5D%5D+%3D+1%3B%0A++++++++++++++++VT%5B%28i%29%2An+%2B+c%5Bk%5D%5D+%3D+1%3B%0A++++++++++++++++VT%5B%28j%29%2An+%2B+r%5Bk%5D%5D+%3D+1%3B%0A++++++++++++++++VT%5B%28j%29%2An+%2B+c%5Bk%5D%5D+%3D+1%3B%0A++++++++++++++++%0A++++++++++++++++if+M+is+None%3A%0A++++++++++++++++++++M+%3D+np.copy%28VT%29%0A++++++++++++++++else%3A%0A++++++++++++++++++++M+%3D+np.concatenate%28%28M%2C+VT%29%2C+1%29%0A++++++++++++++++%0A++++++++++++++++VT+%3D+np.zeros%28%28n%2Am%2C1%29%2C+int%29%0A++++%0A++++return+M%0A%5Cend%7Blstlisting%7D%0A%5Cend%7Bdocument%7D)

Kode di atas menghasilkan keluaran berikut:

![CodeListingEx2.png](/files/6ff53a308777d20dbcc3df8ff5f3c6a6350ed82f)

Parameter tambahan di dalam tanda kurung `[language=Python]` mengaktifkan penyorotan kode untuk bahasa pemrograman tertentu ini (Python), kata-kata khusus dicetak tebal dan komentar dicetak miring. Lihat [panduan referensi](#reference-guide) untuk daftar lengkap bahasa pemrograman yang didukung.

## Mengimpor kode dari file

Kode biasanya disimpan dalam file sumber, karena itu perintah yang secara otomatis mengambil kode dari file menjadi sangat berguna.

```latex
Kode berikut akan diimpor langsung dari file

\lstinputlisting[language=Octave]{BitXorMatrix.m}
```

![CodeListingEx3.png](/files/b402291f5377cffd5dc0402a75f5e2b4dccbd9ed)

Perintah `\lstinputlisting[language=Octave]{BitXorMatrix.m}` mengimpor kode dari file *BitXorMatrix.m*, parameter tambahan di antara tanda kurung mengaktifkan penyorotan bahasa untuk bahasa pemrograman Octave. Jika Anda perlu mengimpor hanya sebagian file, Anda dapat menentukan dua parameter yang dipisahkan koma di dalam tanda kurung. Misalnya, untuk mengimpor kode dari baris 2 sampai baris 12, perintah sebelumnya menjadi

```latex
\lstinputlisting[language=Octave, firstline=2, lastline=12]{BitXorMatrix.m}
```

Jika `firstline` atau `lastline` diabaikan, diasumsikan bahwa nilainya adalah awal file, atau bagian bawah file, masing-masing.

## Gaya dan warna kode

Pemformatan kode dengan paket **listing** sangat dapat dikustomisasi. Mari kita lihat sebuah contoh

```latex
\documentclass{article}
\usepackage{listings}
\usepackage{xcolor}

\definecolor{codegreen}{rgb}{0,0.6,0}
\definecolor{codegray}{rgb}{0.5,0.5,0.5}
\definecolor{codepurple}{rgb}{0.58,0,0.82}
\definecolor{backcolour}{rgb}{0.95,0.95,0.92}

\lstdefinestyle{mystyle}{
    backgroundcolor=\color{backcolour},
    commentstyle=\color{codegreen},
    keywordstyle=\color{magenta},
    numberstyle=\tiny\color{codegray},
    stringstyle=\color{codepurple},
    basicstyle=\ttfamily\footnotesize,
    breakatwhitespace=false,
    breaklines=true,
    captionpos=b,
    keepspaces=true,
    numbers=left,
    numbersep=5pt,
    showspaces=false,
    showstringspaces=false,
    showtabs=false,
    tabsize=2
}

\lstset{style=mystyle}

\begin{document}
Kode berikut akan diimpor langsung dari file

\lstinputlisting[language=Octave]{BitXorMatrix.m}
\end{document}
```

Kode di atas menghasilkan keluaran berikut:

![CodeListingEx4.png](/files/b9511aa0a592005abfd50d639e0ce822a179f7da)

Seperti yang Anda lihat, pewarnaan dan penataan kode sangat meningkatkan keterbacaan.

Dalam contoh ini paket **xcolor** diimpor dan kemudian perintah `\definecolor{}{}{}` digunakan untuk mendefinisikan warna baru dalam format rgb yang nantinya akan digunakan. Untuk informasi lebih lanjut lihat: [menggunakan warna di LaTeX](/latex/id/pemformatan/13-using-colors-in-latex.md)

Pada dasarnya ada dua perintah yang menghasilkan gaya untuk contoh ini:

**\lstdefinestyle{mystyle}{...}**

Mendefinisikan gaya daftar kode baru bernama "mystyle". Di dalam pasangan kurung kurawal kedua, opsi yang mendefinisikan gaya ini diteruskan; lihat panduan referensi untuk penjelasan lengkap tentang ini dan beberapa parameter lainnya.

**\lstset{style=mystyle}**

Mengaktifkan gaya "mystyle". Perintah ini dapat digunakan dalam dokumen Anda untuk beralih ke gaya lain jika diperlukan.

## Keterangan dan daftar Listings

Sama seperti pada float ([tabel](/latex/id/gambar-dan-tabel/01-tables.md) dan [gambar](/latex/id/topik-lainnya/27-inserting-images.md)), keterangan dapat ditambahkan ke listing untuk penyajian yang lebih jelas.

```latex
\begin{lstlisting}[language=Python, caption=Python example]
import numpy as np

def incmatrix(genl1,genl2):
    m = len(genl1)
    n = len(genl2)
    M = None #untuk menjadi matriks insidensi
    VT = np.zeros((n*m,1), int)  #variabel dummy

    #hitung matriks XOR bitwise
    M1 = bitxormatrix(genl1)
    M2 = np.triu(bitxormatrix(genl2),1)

    for i in range(m-1):
        for j in range(i+1, m):
            [r,c] = np.where(M2 == M1[i,j])
            for k in range(len(r)):
                VT[(i)*n + r[k]] = 1;
                VT[(i)*n + c[k]] = 1;
                VT[(j)*n + r[k]] = 1;
                VT[(j)*n + c[k]] = 1;

                if M is None:
                    M = np.copy(VT)
                else:
                    M = np.concatenate((M, VT), 1)

                VT = np.zeros((n*m,1), int)

    return M
\end{lstlisting}
```

[Buka `listings` contoh di Overleaf](/latex/id/pemformatan/11-code-listing.md)

Kode di atas menghasilkan keluaran berikut:

![CodeListingEx5.png](/files/d5e90aa9261547a6625619191280cd425c34d0e9)

Menambahkan parameter yang dipisahkan koma `caption=Python example` di dalam tanda kurung, mengaktifkan keterangan. Keterangan ini nantinya dapat digunakan dalam daftar Listings.

```latex
\lstlistoflistings
```

![CodeListingEx6OLV2.png](/files/d4c5197dd0c6f42015bd75c5b4b92594a6165b0e)

## Proyek contoh Overleaf

Buka tautan ini untuk [mencoba `listings` contoh paket di Overleaf.](https://www.overleaf.com/project/new/template/20053?id=68266290\&templateName=listings+package+demo\&latexEngine=pdflatex\&texImage=texlive-full%3A2020.1\&mainFile=)

## Panduan referensi

### Bahasa yang didukung

**bahasa yang didukung (dan dialeknya jika memungkinkan, dialek ditentukan dalam tanda kurung dan dialek bawaan dicetak miring):**

|                                                        |                                                  |
| ------------------------------------------------------ | ------------------------------------------------ |
| ABAP (R/2 4.3, R/2 5.0, R/3 3.1, R/3 4.6C, *R/3 6.10*) | ACSL                                             |
| Ada (*2005*, 83, 95)                                   | Algol (60, *68*)                                 |
| Ant                                                    | Assembler (Motorola68k, x86masm)                 |
| Awk (*gnu*, POSIX)                                     | bash                                             |
| Basic (Visual)                                         | C (*ANSI*, Handel, Objective, Sharp)             |
| C++ (ANSI, GNU, *ISO*, Visual)                         | Caml (*light*, Objective)                        |
| CIL                                                    | Clean                                            |
| Cobol (1974, *1985*, ibm)                              | Comal 80                                         |
| command.com (*WinXP*)                                  | Comsol                                           |
| csh                                                    | Delphi                                           |
| Eiffel                                                 | Elan                                             |
| erlang                                                 | Euphoria                                         |
| Fortran (77, 90, *95*)                                 | GCL                                              |
| Gnuplot                                                | Haskell                                          |
| HTML                                                   | IDL (empty, CORBA)                               |
| inform                                                 | Java (empty, AspectJ)                            |
| JVMIS                                                  | ksh                                              |
| Lingo                                                  | Lisp (empty, Auto)                               |
| Logo                                                   | make (empty, gnu)                                |
| Mathematica (1.0, 3.0, *5.2*)                          | Matlab                                           |
| Mercury                                                | MetaPost                                         |
| Miranda                                                | Mizar                                            |
| ML                                                     | Modula-2                                         |
| MuPAD                                                  | NASTRAN                                          |
| Oberon-2                                               | OCL (dekoratif, *OMG*)                           |
| Octave                                                 | Oz                                               |
| Pascal (Borland6, *Standar*, XSC)                      | Perl                                             |
| PHP                                                    | PL/I                                             |
| Plasm                                                  | PostScript                                       |
| POV                                                    | Prolog                                           |
| Promela                                                | PSTricks                                         |
| Python                                                 | R                                                |
| Reduce                                                 | Rexx                                             |
| RSL                                                    | Ruby                                             |
| S (empty, PLUS)                                        | SAS                                              |
| Scilab                                                 | sh                                               |
| SHELXL                                                 | Simula (*67*, CII, DEC, IBM)                     |
| SPARQL                                                 | SQL                                              |
| tcl (empty, tk)                                        | TeX (AlLaTeX, common, LaTeX, *plain*, primitive) |
| VBScript                                               | Verilog                                          |
| VHDL (empty, AMS)                                      | VRML (*97*)                                      |
| XML                                                    | XSLT                                             |

### Opsi untuk menyesuaikan gaya listing kode

* **backgroundcolor** - warna untuk latar belakang. Paket eksternal ***color*** atau ***xcolor*** diperlukan.
* **commentstyle** - gaya komentar dalam bahasa sumber.
* **basicstyle** - ukuran font/keluarga/dll. untuk sumber (mis. `basicstyle=\ttfamily\small`)
* **keywordstyle** - gaya kata kunci dalam bahasa sumber (mis. `keywordstyle=\color{red}`)
* **numberstyle** - gaya yang digunakan untuk nomor baris
* **numbersep** - jarak nomor baris dari kode
* **stringstyle** - gaya string dalam bahasa sumber
* **showspaces** - menonjolkan spasi dalam kode (true/false)
* **showstringspaces** - menonjolkan spasi dalam string (true/false)
* **showtabs** - menonjolkan tabulator dalam kode (true/false)
* **numbers** - posisi nomor baris (left/right/none, yaitu tanpa nomor baris)
* **prebreak** - menampilkan tanda di akhir baris yang diputus (mis. `prebreak=\raisebox{0ex}[0ex][0ex]{\ensuremath{\hookleftarrow}}`)
* **captionpos** - posisi keterangan (t/b)
* **frame** - menampilkan bingkai di luar kode (none/leftline/topline/bottomline/lines/single/shadowbox)
* **breakatwhitespace** - menentukan apakah pemenggalan otomatis hanya boleh terjadi pada spasi
* **breaklines** - pemenggalan baris otomatis
* **keepspaces** - mempertahankan spasi dalam kode, berguna untuk indentasi
* **tabsize** - ukuran tab default
* **escapeinside** - tentukan karakter untuk keluar dari kode sumber ke LaTeX (mis. `escapeinside={\%*}{*)}`)
* **rulecolor** - Tentukan warna kotak bingkai

## Bacaan lanjutan

Untuk informasi lebih lanjut lihat:

* [Penyorotan Kode dengan minted](/latex/id/pemformatan/12-code-highlighting-with-minted.md)
* [Menggunakan warna di LaTeX](/latex/id/pemformatan/13-using-colors-in-latex.md)
* [Daftar isi](/latex/id/struktur-dokumen/02-table-of-contents.md)
* [Pengelolaan dalam proyek besar](/latex/id/struktur-dokumen/07-management-in-a-large-project.md)
* [Proyek LaTeX multi-berkas](/latex/id/struktur-dokumen/08-multi-file-latex-projects.md)
* [Ukuran font, keluarga font, dan gaya](/latex/id/font/01-font-sizes-families-and-styles.md)
* [Jenis huruf](/latex/id/font/02-font-typefaces.md)
* [**listings** dokumentasi paket](https://texdoc.org/serve/listings/0)
* [**listings** situs web CTAN](http://www.ctan.org/pkg/listings)


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://overleaf-pro.ayaka.space/latex/id/pemformatan/11-code-listing.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
