> 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/nl/opmaak/11-code-listing.md).

# Codefragmenten

## Inleiding

LaTeX wordt veel gebruikt in de wetenschap en programmeren is een belangrijk aspect geworden in verschillende wetenschapsgebieden, vandaar de behoefte aan een hulpmiddel dat code correct weergeeft. Dit artikel legt uit hoe je de standaard **verbatim** omgeving en ook het pakket **listings**, dat geavanceerdere functies voor code-opmaak biedt. [Dit afzonderlijke artikel](/latex/nl/opmaak/12-code-highlighting-with-minted.md) bespreekt het `minted` pakket, dat syntaxisaccentuering uitvoert met behulp van Python's `pygmentize` bibliotheek.

## De verbatim-omgeving

De standaardtool om code in LaTeX weer te geven is `verbatim`, die een uitvoer in een monospace-lettertype genereert.

```latex
\begin{verbatim}
Tekst tussen de \texttt{verbatim}-omgeving
wordt rechtstreeks afgedrukt
en alle \LaTeX{}-commando's worden genegeerd.
\end{verbatim}
```

[Open dit voorbeeld op 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)

De bovenstaande code produceert de volgende uitvoer:

![Verbatim1.png](/files/619aafbc02a10ce02951679367099221ac39ea65)

Net als in het voorbeeld in de inleiding wordt alle tekst afgedrukt met behoud van regelafbrekingen en witruimtes. Er is een versie met ster van dit commando waarvan de uitvoer iets anders is.

```latex
\begin{verbatim*}
Tekst tussen de \texttt{verbatim}-omgeving
wordt rechtstreeks afgedrukt
en alle \LaTeX{}-commando's worden genegeerd.
\end{verbatim*}
```

[Open dit voorbeeld op 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)

De bovenstaande code produceert de volgende uitvoer:

![Verbatim2.png](/files/3e0b9b88732001218b26f426d22be54d5cbdc7f5)

In dit geval worden spaties benadrukt met een speciaal "zichtbare-spatie" teken: **`␣`**.

Verbatim-achtige tekst kan ook in een alinea worden gebruikt met behulp van de `\verb` commando.

```latex
In de map \verb|C:\Windows\system32| kun je veel Windows
systeemtoepassingen vinden.

Het commando \verb+\ldots+ produceert \ldots
```

[Open dit voorbeeld op 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)

De bovenstaande code produceert de volgende uitvoer:

![Verbatim3OLV2.png](/files/0bee821ae1a4d692005c3debae3a5f187cb9c918)

Het commando `\verb|C:\Windows\system32|` drukt de tekst binnen de scheidingstekens `|` af in verbatim-opmaak. Elk teken, behalve letters en `*`, kan als scheidingsteken worden gebruikt. Bijvoorbeeld `\verb+\ldots+` gebruikt `+` als scheidingsteken.

## Code markeren met listings

Om de `lstlisting` omgeving te gebruiken moet je de volgende regel aan de preambule van je document toevoegen:

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

Hier is een voorbeeld van het gebruik van de `lstlisting` omgeving uit het `listings` pakket:

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

def incmatrix(genl1,genl2):
    m = len(genl1)
    n = len(genl2)
    M = None # om de incidentiematrix te worden
    VT = np.zeros((n*m,1), int)  # dummyvariabele

    # bereken de bitgewijze xor-matrix
    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}
```

[Open dit `listings` voorbeeld op 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)

De bovenstaande code produceert de volgende uitvoer:

![CodeListingEx1.png](/files/4abcdca0a000a833618851f4a5c2da7154dea236)

In dit voorbeeld negeert de uitvoer alle LaTeX-commando's en wordt de tekst afgedrukt met behoud van alle getypte regelafbrekingen en witruimtes. Laten we een tweede voorbeeld bekijken:

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

def incmatrix(genl1,genl2):
    m = len(genl1)
    n = len(genl2)
    M = None # om de incidentiematrix te worden
    VT = np.zeros((n*m,1), int)  # dummyvariabele

    # bereken de bitgewijze xor-matrix
    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}
```

[Open dit `listings` voorbeeld op 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)

De bovenstaande code produceert de volgende uitvoer:

![CodeListingEx2.png](/files/eb09a293fe08a4a1a7eb5759c6fbce7cf4f7dac5)

De extra parameter tussen vierkante haken `[language=Python]` maakt codeaccentuering voor deze specifieke programmeertaal (Python) mogelijk; speciale woorden worden vetgedrukt en opmerkingen cursief weergegeven. Zie de [naslaggids](#reference-guide) voor een volledige lijst van ondersteunde programmeertalen.

## Code importeren uit een bestand

Code wordt meestal opgeslagen in een bronbestand, daarom is een commando dat automatisch code uit een bestand haalt erg handig.

```latex
De volgende code wordt rechtstreeks geïmporteerd uit een bestand

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

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

Het commando `\lstinputlisting[language=Octave]{BitXorMatrix.m}` importeert de code uit het bestand *BitXorMatrix.m*, de extra parameter tussen vierkante haken maakt taalakkcentuering mogelijk voor de programmeertaal Octave. Als je slechts een deel van het bestand moet importeren, kun je twee door komma's gescheiden parameters opgeven binnen de haken. Bijvoorbeeld, om de code van regel 2 tot en met regel 12 te importeren, wordt het vorige commando

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

Als `firstline` of `lastline` wordt weggelaten, wordt aangenomen dat de waarden respectievelijk het begin van het bestand of het einde van het bestand zijn.

## Code-stijlen en kleuren

Code-opmaak met het **listing** pakket is sterk aanpasbaar. Laten we een voorbeeld bekijken

```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}
De volgende code wordt rechtstreeks geïmporteerd uit een bestand

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

De bovenstaande code produceert de volgende uitvoer:

![CodeListingEx4.png](/files/045894040fa860b9af2e7ee0135e7c2a4acfccd3)

Zoals je ziet verbetert de kleuring en opmaak van code de leesbaarheid enorm.

In dit voorbeeld wordt het pakket **xcolor** geïmporteerd en vervolgens wordt het commando `\definecolor{}{}{}` gebruikt om nieuwe kleuren in rgb-formaat te definiëren die later zullen worden gebruikt. Voor meer informatie zie: [kleuren gebruiken in LaTeX](/latex/nl/opmaak/13-using-colors-in-latex.md)

Er zijn in wezen twee commando's die de stijl voor dit voorbeeld genereren:

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

Definieert een nieuwe code-lijststijl genaamd "mystyle". Binnen de tweede set accolades worden de opties doorgegeven die deze stijl definiëren; zie de referentiegids voor een volledige beschrijving van deze en enkele andere parameters.

**\lstset{style=mystyle}**

Schakelt de stijl "mystyle" in. Dit commando kan binnen je document worden gebruikt om indien nodig naar een andere stijl over te schakelen.

## Bijschriften en de lijst van Listings

Net als bij zwevende objecten ([tabellen](/latex/nl/afbeeldingen-en-tabellen/01-tables.md) en [figuren](/latex/nl/meer-onderwerpen/27-inserting-images.md)), kunnen bijschriften aan een listing worden toegevoegd voor een duidelijkere presentatie.

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

def incmatrix(genl1,genl2):
    m = len(genl1)
    n = len(genl2)
    M = None # om de incidentiematrix te worden
    VT = np.zeros((n*m,1), int)  # dummyvariabele

    # bereken de bitgewijze xor-matrix
    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}
```

[Open dit `listings` voorbeeld op Overleaf](/latex/nl/opmaak/11-code-listing.md)

De bovenstaande code produceert de volgende uitvoer:

![CodeListingEx5.png](/files/8d32d78993874f624051a5fb8d96a6f99747b8ee)

Door de door komma's gescheiden parameter toe te voegen `caption=Python-voorbeeld` tussen de haken, wordt het bijschrift ingeschakeld. Dit bijschrift kan later worden gebruikt in de lijst van Listings.

```latex
\lstlistoflistings
```

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

## Voorbeeldproject op Overleaf

Open deze link om [het `listings` pakketvoorbeeld op Overleaf uit te proberen.](https://www.overleaf.com/project/new/template/20053?id=68266290\&templateName=listings+package+demo\&latexEngine=pdflatex\&texImage=texlive-full%3A2020.1\&mainFile=)

## Naslaggids

### Ondersteunde talen

**ondersteunde talen (en hun dialecten indien mogelijk, dialecten worden tussen haakjes gespecificeerd en standaarddialecten zijn cursief weergegeven):**

|                                                        |                                                  |
| ------------------------------------------------------ | ------------------------------------------------ |
| 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 (leeg, CORBA)                                |
| inform                                                 | Java (leeg, AspectJ)                             |
| JVMIS                                                  | ksh                                              |
| Lingo                                                  | Lisp (leeg, Auto)                                |
| Logo                                                   | make (leeg, gnu)                                 |
| Mathematica (1.0, 3.0, *5.2*)                          | Matlab                                           |
| Mercury                                                | MetaPost                                         |
| Miranda                                                | Mizar                                            |
| ML                                                     | Modula-2                                         |
| MuPAD                                                  | NASTRAN                                          |
| Oberon-2                                               | OCL (decoratief, *OMG*)                          |
| Octave                                                 | Oz                                               |
| Pascal (Borland6, *Standaard*, XSC)                    | Perl                                             |
| PHP                                                    | PL/I                                             |
| Plasm                                                  | PostScript                                       |
| POV                                                    | Prolog                                           |
| Promela                                                | PSTricks                                         |
| Python                                                 | R                                                |
| Reduce                                                 | Rexx                                             |
| RSL                                                    | Ruby                                             |
| S (leeg, PLUS)                                         | SAS                                              |
| Scilab                                                 | sh                                               |
| SHELXL                                                 | Simula (*67*, CII, DEC, IBM)                     |
| SPARQL                                                 | SQL                                              |
| tcl (leeg, tk)                                         | TeX (AlLaTeX, common, LaTeX, *plain*, primitive) |
| VBScript                                               | Verilog                                          |
| VHDL (leeg, AMS)                                       | VRML (*97*)                                      |
| XML                                                    | XSLT                                             |

### Opties om code-lijststijlen aan te passen

* **backgroundcolor** - kleur voor de achtergrond. Externe ***color*** of ***xcolor*** pakket nodig.
* **commentstyle** - stijl van opmerkingen in de brontaal.
* **basicstyle** - lettergrootte/familie/etc. voor bron (bijv. `basicstyle=\ttfamily\small`)
* **keywordstyle** - stijl van trefwoorden in de brontaal (bijv. `keywordstyle=\color{red}`)
* **numberstyle** - stijl gebruikt voor regelnummers
* **numbersep** - afstand van regelnummers tot de code
* **stringstyle** - stijl van strings in de brontaal
* **showspaces** - spaties in code benadrukken (true/false)
* **showstringspaces** - spaties in strings benadrukken (true/false)
* **showtabs** - tabulators in code benadrukken (true/false)
* **numbers** - positie van regelnummers (left/right/none, d.w\.z. geen regelnummers)
* **prebreak** - marker weergeven aan het einde van een afgebroken regel (bijv. `prebreak=\raisebox{0ex}[0ex][0ex]{\ensuremath{\hookleftarrow}}`)
* **captionpos** - positie van bijschrift (t/b)
* **frame** - frame buiten code weergeven (none/leftline/topline/bottomline/lines/single/shadowbox)
* **breakatwhitespace** - stelt in of automatische regelafbrekingen alleen mogen plaatsvinden bij witruimtes
* **breaklines** - automatische regelafbreking
* **keepspaces** - spaties in de code behouden, nuttig voor inspringing
* **tabsize** - standaard tabgrootte
* **escapeinside** - geef tekens op om uit de broncode naar LaTeX te ontsnappen (bijv. `escapeinside={\%*}{*)}`)
* **rulecolor** - specificeer de kleur van het framevak

## Verder lezen

Zie voor meer informatie:

* [Code-accentuering met minted](/latex/nl/opmaak/12-code-highlighting-with-minted.md)
* [Kleuren gebruiken in LaTeX](/latex/nl/opmaak/13-using-colors-in-latex.md)
* [Inhoudsopgave](/latex/nl/documentstructuur/02-table-of-contents.md)
* [Beheer in een groot project](/latex/nl/documentstructuur/07-management-in-a-large-project.md)
* [LaTeX-projecten met meerdere bestanden](/latex/nl/documentstructuur/08-multi-file-latex-projects.md)
* [Lettergroottes, lettertypen en stijlen](/latex/nl/lettertypen/01-font-sizes-families-and-styles.md)
* [Lettertypen](/latex/nl/lettertypen/02-font-typefaces.md)
* [**listings** pakkettendocumentatie](https://texdoc.org/serve/listings/0)
* [**listings** CTAN-website](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/nl/opmaak/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.
