> 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/de/formatierung/11-code-listing.md).

# Code-Auflistung

## Einführung

LaTeX wird in der Wissenschaft weit verbreitet verwendet, und Programmierung ist in mehreren Bereichen der Wissenschaft zu einem wichtigen Aspekt geworden; daher besteht Bedarf an einem Werkzeug, das Code korrekt darstellt. Dieser Artikel erklärt, wie man die Standard **verbatim** Umgebung sowie das Paket **listings**, die fortgeschrittenere Funktionen zur Codeformatierung bereitstellen. [Dieser separate Artikel](/latex/de/formatierung/12-code-highlighting-with-minted.md) behandelt das `minted` Paket, das Syntaxhervorhebung mithilfe von Python's `pygmentize` Bibliothek konfiguriert wird.

## Die verbatim-Umgebung

Das Standardwerkzeug zur Anzeige von Code in LaTeX ist `verbatim`, das eine Ausgabe in Monospace-Schrift erzeugt.

```latex
\begin{verbatim}
Text, der in die \texttt{verbatim}-Umgebung eingeschlossen ist
wird direkt ausgegeben
und alle \LaTeX{}-Befehle werden ignoriert.
\end{verbatim}
```

[Dieses Beispiel auf Overleaf öffnen](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)

Der obige Code erzeugt die folgende Ausgabe:

![Verbatim1.png](/files/12441a1c5dbface81f031928a44c174ff7cb0f63)

Genau wie im Beispiel in der Einleitung wird der gesamte Text unter Beibehaltung von Zeilenumbrüchen und Leerzeichen ausgegeben. Es gibt eine Sternversion dieses Befehls, deren Ausgabe etwas anders ist.

```latex
\begin{verbatim*}
Text, der in die \texttt{verbatim}-Umgebung eingeschlossen ist
wird direkt ausgegeben
und alle \LaTeX{}-Befehle werden ignoriert.
\end{verbatim*}
```

[Dieses Beispiel auf Overleaf öffnen](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)

Der obige Code erzeugt die folgende Ausgabe:

![Verbatim2.png](/files/b5481ca93476ca1fd00547f9ed3ea28a0ac3975e)

In diesem Fall werden Leerzeichen mit einem speziellen „sichtbares-Leerzeichen“-Zeichen hervorgehoben: **`␣`**.

Verbatim-ähnlicher Text kann auch in einem Absatz mithilfe des `\verb` Befehl zu interpretieren ist.

```latex
Im Verzeichnis \verb|C:\Windows\system32| finden Sie viele Windows
Systemanwendungen.

Der Befehl \verb+\ldots+ erzeugt \ldots
```

[Dieses Beispiel auf Overleaf öffnen](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)

Der obige Code erzeugt die folgende Ausgabe:

![Verbatim3OLV2.png](/files/9e453de97bb932d6e69bd019b5ff87279aabe3b6)

Der Befehl `\verb|C:\Windows\system32|` gibt den Text innerhalb der Trennzeichen aus `|` im Verbatim-Format. Als Trennzeichen kann jedes Zeichen außer Buchstaben und `*`, verwendet werden. Zum Beispiel `\verb+\ldots+` verwendet `+` als Trennzeichen.

## Code mit listings hervorheben

Um das `lstlisting` Umgebung zu verwenden, müssen Sie die folgende Zeile in die Präambel Ihres Dokuments einfügen:

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

Hier ist ein Beispiel für die Verwendung der `lstlisting` Umgebung aus dem `listings` Paket:

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

def incmatrix(genl1,genl2):
    m = len(genl1)
    n = len(genl2)
    M = None #soll die Inzidenzmatrix werden
    VT = np.zeros((n*m,1), int)  #Dummy-Variable

    #berechne die bitweise-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}
```

[Öffnen Sie dieses `listings` Beispiel auf 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)

Der obige Code erzeugt die folgende Ausgabe:

![CodeListingEx1.png](/files/6d6ffde53997ad4e426d7436d75fc391dd08f485)

In diesem Beispiel ignoriert die Ausgabe alle LaTeX-Befehle und der Text wird mit allen eingegebenen Zeilenumbrüchen und Leerzeichen ausgegeben. Sehen wir uns ein zweites Beispiel an:

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

def incmatrix(genl1,genl2):
    m = len(genl1)
    n = len(genl2)
    M = None #soll die Inzidenzmatrix werden
    VT = np.zeros((n*m,1), int)  #Dummy-Variable

    #berechne die bitweise-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}
```

[Öffnen Sie dieses `listings` Beispiel auf 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)

Der obige Code erzeugt die folgende Ausgabe:

![CodeListingEx2.png](/files/055f45ab5a10ff18603f9be940d6f50b9ef2a452)

Der zusätzliche Parameter in eckigen Klammern `[language=Python]` ermöglicht die Codehervorhebung für diese spezielle Programmiersprache (Python); spezielle Wörter werden fett gedruckt und Kommentare kursiv gesetzt. Siehe die [Referenzleitfaden](#reference-guide) für eine vollständige Liste der unterstützten Programmiersprachen.

## Code aus einer Datei importieren

Code wird üblicherweise in einer Quelldatei gespeichert, daher ist ein Befehl, der Code automatisch aus einer Datei einliest, sehr nützlich.

```latex
Der folgende Code wird direkt aus einer Datei importiert

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

![CodeListingEx3.png](/files/6a06baf0803596f6fe7bc592fe3f9c3071f1c80f)

Der Befehl `\lstinputlisting[language=Octave]{BitXorMatrix.m}` importiert den Code aus der Datei *BitXorMatrix.m*, der zusätzliche Parameter zwischen den eckigen Klammern aktiviert die Sprachhervorhebung für die Programmiersprache Octave. Wenn Sie nur einen Teil der Datei importieren müssen, können Sie zwei durch Kommas getrennte Parameter innerhalb der Klammern angeben. Um beispielsweise den Code von Zeile 2 bis Zeile 12 zu importieren, wird der vorherige Befehl zu

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

Wenn `firstline` oder `lastline` weggelassen wird, wird angenommen, dass es sich um den Anfang bzw. das Ende der Datei handelt.

## Code-Stile und Farben

Die Codeformatierung mit dem **listing** Paket ist äußerst anpassbar. Sehen wir uns ein Beispiel an

```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}
Der folgende Code wird direkt aus einer Datei importiert

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

Der obige Code erzeugt die folgende Ausgabe:

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

Wie Sie sehen, verbessern die Codefarbe und der Stil die Lesbarkeit erheblich.

In diesem Beispiel wird das Paket **xcolor** importiert und dann der Befehl `\definecolor{}{}{}` verwendet, um neue Farben im rgb-Format zu definieren, die später verwendet werden. Weitere Informationen finden Sie unter: [Verwendung von Farben in LaTeX](/latex/de/formatierung/13-using-colors-in-latex.md)

Im Wesentlichen gibt es zwei Befehle, die den Stil für dieses Beispiel erzeugen:

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

Definiert einen neuen Code-Listing-Stil namens „mystyle“. Innerhalb des zweiten Klammerpaars werden die Optionen übergeben, die diesen Stil definieren; siehe den Referenzleitfaden für eine vollständige Beschreibung dieser und einiger weiterer Parameter.

**\lstset{style=mystyle}**

Aktiviert den Stil „mystyle“. Dieser Befehl kann in Ihrem Dokument verwendet werden, um bei Bedarf zu einem anderen Stil zu wechseln.

## Beschriftungen und die Liste der Listings

Genau wie bei Gleitobjekten ([Tabellen](/latex/de/abbildungen-und-tabellen/01-tables.md) und [Abbildungen](/latex/de/weitere-themen/27-inserting-images.md)), können Listings mit einer Beschriftung versehen werden, um die Darstellung klarer zu gestalten.

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

def incmatrix(genl1,genl2):
    m = len(genl1)
    n = len(genl2)
    M = None #soll die Inzidenzmatrix werden
    VT = np.zeros((n*m,1), int)  #Dummy-Variable

    #berechne die bitweise-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}
```

[Öffnen Sie dieses `listings` Beispiel auf Overleaf](/latex/de/formatierung/11-code-listing.md)

Der obige Code erzeugt die folgende Ausgabe:

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

Das Hinzufügen des durch Kommas getrennten Parameters `caption=Python-Beispiel` innerhalb der Klammern aktiviert die Beschriftung. Diese Beschriftung kann später in der Liste der Listings verwendet werden.

```latex
\lstlistoflistings
```

![CodeListingEx6OLV2.png](/files/32365a742bc753d1738012f8b927fa6ec36f22e5)

## Beispielprojekt auf Overleaf

Öffnen Sie diesen Link, um [das `listings` Paketbeispiel auf Overleaf auszuprobieren.](https://www.overleaf.com/project/new/template/20053?id=68266290\&templateName=listings+package+demo\&latexEngine=pdflatex\&texImage=texlive-full%3A2020.1\&mainFile=)

## Referenzhandbuch

### Unterstützte Sprachen

**unterstützte Sprachen (und nach Möglichkeit ihre Dialekte; Dialekte sind in Klammern angegeben und Standarddialekte sind kursiv gesetzt):**

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

### Optionen zur Anpassung von Code-Listing-Stilen

* **backgroundcolor** - Farbe für den Hintergrund. Externes ***color*** oder ***xcolor*** -Paket erforderlich.
* **commentstyle** - Stil der Kommentare in der Quellsprache.
* **basicstyle** - Schriftgröße/-familie/usw. für den Quelltext (z. B. `basicstyle=\ttfamily\small`)
* **keywordstyle** - Stil der Schlüsselwörter in der Quellsprache (z. B. `keywordstyle=\color{red}`)
* **numberstyle** - Stil für Zeilennummern
* **numbersep** - Abstand der Zeilennummern vom Code
* **stringstyle** - Stil von Zeichenketten in der Quellsprache
* **showspaces** - Leerzeichen im Code hervorheben (true/false)
* **showstringspaces** - Leerzeichen in Zeichenketten hervorheben (true/false)
* **showtabs** - Tabulatoren im Code hervorheben (true/false)
* **Nummern** - Position der Zeilennummern (left/right/none, d. h. keine Zeilennummern)
* **prebreak** - Markierung am Ende einer umgebrochenen Zeile anzeigen (z. B. `prebreak=\raisebox{0ex}[0ex][0ex]{\ensuremath{\hookleftarrow}}`)
* **captionpos** - Position der Beschriftung (t/b)
* **Rahmen** - Rahmen außerhalb des Codes anzeigen (none/leftline/topline/bottomline/lines/single/shadowbox)
* **breakatwhitespace** - legt fest, dass automatische Umbrüche nur an Leerzeichen erfolgen sollen
* **breaklines** - automatischer Zeilenumbruch
* **keepspaces** - Leerzeichen im Code beibehalten, nützlich für Einrückung
* **tabsize** - Standard-Tabulatorbreite
* **escapeinside** - Zeichen angeben, mit denen vom Quellcode zu LaTeX gewechselt werden kann (z. B. `escapeinside={\%*}{*)}`)
* **rulecolor** - die Farbe des Rahmenkastens angeben

## Weiterführende Lektüre

Weitere Informationen finden Sie unter:

* [Codehervorhebung mit minted](/latex/de/formatierung/12-code-highlighting-with-minted.md)
* [Farben in LaTeX verwenden](/latex/de/formatierung/13-using-colors-in-latex.md)
* [Inhaltsverzeichnis](/latex/de/dokumentstruktur/02-table-of-contents.md)
* [Verwaltung in einem großen Projekt](/latex/de/dokumentstruktur/07-management-in-a-large-project.md)
* [Mehrdatei-LaTeX-Projekte](/latex/de/dokumentstruktur/08-multi-file-latex-projects.md)
* [Schriftgrößen, Schriftfamilien und Schriftstile](/latex/de/schriftarten/01-font-sizes-families-and-styles.md)
* [Schriftarten](/latex/de/schriftarten/02-font-typefaces.md)
* [**listings** Paketdokumentation](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/de/formatierung/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.
