> 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/el/morfopoiisi/11-code-listing.md).

# Καταχώριση κώδικα

## Εισαγωγή

Το LaTeX χρησιμοποιείται ευρέως στην επιστήμη και ο προγραμματισμός έχει γίνει σημαντική πτυχή σε αρκετούς τομείς της επιστήμης, εξ ου και η ανάγκη για ένα εργαλείο που εμφανίζει σωστά τον κώδικα. Αυτό το άρθρο εξηγεί πώς να χρησιμοποιήσετε το τυπικό **verbatim** περιβάλλον καθώς και το πακέτο **listings**, τα οποία παρέχουν πιο προχωρημένες δυνατότητες μορφοποίησης κώδικα. [Αυτό το ξεχωριστό άρθρο](/latex/el/morfopoiisi/12-code-highlighting-with-minted.md) συζητά το `minted` πακέτο, το οποίο πραγματοποιεί επισήμανση σύνταξης χρησιμοποιώντας την `pygmentize` βιβλιοθήκης.

## Το περιβάλλον verbatim

Το προεπιλεγμένο εργαλείο για την προβολή κώδικα στο LaTeX είναι `verbatim`, το οποίο παράγει έξοδο με γραμματοσειρά σταθερού πλάτους.

```latex
\begin{verbatim}
Το κείμενο που περικλείεται μέσα στο περιβάλλον \texttt{verbatim}
εκτυπώνεται απευθείας
και όλες οι εντολές \LaTeX{} αγνοούνται.
\end{verbatim}
```

[Ανοίξτε αυτό το παράδειγμα στο 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)

Ο παραπάνω κώδικας παράγει την ακόλουθη έξοδο:

![Verbatim1.png](/files/0cd26e00825514b2b7779ebbbf51047b5810660d)

Όπως και στο παράδειγμα στην εισαγωγή, όλο το κείμενο εκτυπώνεται διατηρώντας τις αλλαγές γραμμής και τα κενά. Υπάρχει μια αστερίσκη έκδοση αυτής της εντολής της οποίας η έξοδος είναι ελαφρώς διαφορετική.

```latex
\begin{verbatim*}
Το κείμενο που περικλείεται μέσα στο περιβάλλον \texttt{verbatim}
εκτυπώνεται απευθείας
και όλες οι εντολές \LaTeX{} αγνοούνται.
\end{verbatim*}
```

[Ανοίξτε αυτό το παράδειγμα στο 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)

Ο παραπάνω κώδικας παράγει την ακόλουθη έξοδο:

![Verbatim2.png](/files/56fb3c321a93cfe65da1f85b98e45e01df9ebe6f)

Σε αυτή την περίπτωση τα κενά επισημαίνονται με έναν ειδικό χαρακτήρα «ορατού κενού»: **`␣`**.

Κείμενο τύπου verbatim μπορεί επίσης να χρησιμοποιηθεί σε μια παράγραφο μέσω της `\verb` εντολή.

```latex
Στον κατάλογο \verb|C:\Windows\system32| μπορείτε να βρείτε πολλές εφαρμογές συστήματος Windows
συστήματος.

Η εντολή \verb+\ldots+ παράγει \ldots
```

[Ανοίξτε αυτό το παράδειγμα στο 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)

Ο παραπάνω κώδικας παράγει την ακόλουθη έξοδο:

![Verbatim3OLV2.png](/files/583502de058a2c9d384fcb90bb8776e53ab42ebe)

Η εντολή `\verb|C:\Windows\system32|` εκτυπώνει το κείμενο μέσα στα διαχωριστικά `|` σε μορφή verbatim. Οποιοσδήποτε χαρακτήρας, εκτός από γράμματα και `*`, μπορεί να χρησιμοποιηθεί ως διαχωριστικό. Για παράδειγμα `\verb+\ldots+` χρησιμοποιεί `+` ως διαχωριστικό.

## Χρήση του listings για την επισήμανση κώδικα

Για να χρησιμοποιήσετε το `lstlisting` περιβάλλον πρέπει να προσθέσετε την ακόλουθη γραμμή στο προοίμιο του εγγράφου σας:

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

Να ένα παράδειγμα χρήσης του `lstlisting` περιβάλλοντος από το `listings` πακέτο:

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

def incmatrix(genl1,genl2):
    m = len(genl1)
    n = len(genl2)
    M = None #να γίνει ο πίνακας συμβάντων
    VT = np.zeros((n*m,1), int)  #βοηθητική μεταβλητή

    #υπολογισμός του πίνακα bitwise xor
    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}
```

[Ανοίξτε αυτό το `listings` παράδειγμα στο 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)

Ο παραπάνω κώδικας παράγει την ακόλουθη έξοδο:

![CodeListingEx1.png](/files/a378e7b710392a3a2fcec8d573087d84672f9f5f)

Σε αυτό το παράδειγμα, η έξοδος αγνοεί όλες τις εντολές LaTeX και το κείμενο εκτυπώνεται διατηρώντας όλες τις αλλαγές γραμμής και τα κενά που πληκτρολογήθηκαν. Ας δούμε ένα δεύτερο παράδειγμα:

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

def incmatrix(genl1,genl2):
    m = len(genl1)
    n = len(genl2)
    M = None #να γίνει ο πίνακας συμβάντων
    VT = np.zeros((n*m,1), int)  #βοηθητική μεταβλητή

    #υπολογισμός του πίνακα bitwise xor
    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}
```

[Ανοίξτε αυτό το `listings` παράδειγμα στο 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)

Ο παραπάνω κώδικας παράγει την ακόλουθη έξοδο:

![CodeListingEx2.png](/files/83062ed315c685dd6390bdc84c21496e833cbc47)

Η πρόσθετη παράμετρος μέσα στις αγκύλες `[language=Python]` ενεργοποιεί την επισήμανση κώδικα για αυτή τη συγκεκριμένη γλώσσα προγραμματισμού (Python), οι ειδικές λέξεις είναι με έντονη γραμματοσειρά και τα σχόλια είναι πλάγια. Δείτε το [οδηγό αναφοράς](#reference-guide) για πλήρη λίστα των υποστηριζόμενων γλωσσών προγραμματισμού.

## Εισαγωγή κώδικα από αρχείο

Ο κώδικας συνήθως αποθηκεύεται σε ένα αρχείο πηγαίου κώδικα, επομένως μια εντολή που αντλεί αυτόματα κώδικα από αρχείο γίνεται πολύ χρήσιμη.

```latex
Ο επόμενος κώδικας θα εισαχθεί απευθείας από ένα αρχείο

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

![CodeListingEx3.png](/files/2469e375fd5668f05ca1c806dd5c67c13ed46e74)

Η εντολή `\lstinputlisting[language=Octave]{BitXorMatrix.m}` εισάγει τον κώδικα από το αρχείο *BitXorMatrix.m*, η πρόσθετη παράμετρος ανάμεσα στις αγκύλες ενεργοποιεί την επισήμανση γλώσσας για τη γλώσσα προγραμματισμού Octave. Αν χρειάζεται να εισαγάγετε μόνο μέρος του αρχείου μπορείτε να καθορίσετε δύο παραμέτρους χωρισμένες με κόμμα μέσα στις αγκύλες. Για παράδειγμα, για να εισαγάγετε τον κώδικα από τη γραμμή 2 έως τη γραμμή 12, η προηγούμενη εντολή γίνεται

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

Αν `firstline` ή `lastline` παραλείπεται, θεωρείται ότι οι τιμές είναι η αρχή του αρχείου, ή το τέλος του αρχείου, αντίστοιχα.

## Στυλ κώδικα και χρώματα

Η μορφοποίηση κώδικα με το **listing** πακέτο είναι ιδιαίτερα προσαρμόσιμη. Ας δούμε ένα παράδειγμα

```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}
Ο επόμενος κώδικας θα εισαχθεί απευθείας από ένα αρχείο

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

Ο παραπάνω κώδικας παράγει την ακόλουθη έξοδο:

![CodeListingEx4.png](/files/7ad38a69ef0b5fc0d204cca41ece18499d6d0ae0)

Όπως βλέπετε, ο χρωματισμός και το στυλ του κώδικα βελτιώνουν σημαντικά την αναγνωσιμότητα.

Σε αυτό το παράδειγμα το πακέτο **xcolor** εισάγεται και έπειτα η εντολή `\definecolor{}{}{}` χρησιμοποιείται για να ορίσει νέα χρώματα σε μορφή rgb που θα χρησιμοποιηθούν αργότερα. Για περισσότερες πληροφορίες δείτε: [τη χρήση χρωμάτων στο LaTeX](/latex/el/morfopoiisi/13-using-colors-in-latex.md)

Υπάρχουν ουσιαστικά δύο εντολές που δημιουργούν το στυλ για αυτό το παράδειγμα:

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

Ορίζει ένα νέο στυλ καταχώρισης κώδικα με όνομα "mystyle". Μέσα στο δεύτερο ζεύγος από άγκιστρα περνούν οι επιλογές που ορίζουν αυτό το στυλ· δείτε τον οδηγό αναφοράς για πλήρη περιγραφή αυτών και μερικών άλλων παραμέτρων.

**\lstset{style=mystyle}**

Ενεργοποιεί το στυλ "mystyle". Αυτή η εντολή μπορεί να χρησιμοποιηθεί μέσα στο έγγραφό σας για να μεταβείτε σε διαφορετικό στυλ αν χρειάζεται.

## Λεζάντες και η λίστα καταχωρίσεων

Όπως και στα floats ([πίνακες](/latex/el/sximata-kai-pinakes/01-tables.md) και [εικόνες](/latex/el/perissotera-themata/27-inserting-images.md)), μπορούν να προστεθούν λεζάντες σε μια καταχώριση για πιο σαφή παρουσίαση.

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

def incmatrix(genl1,genl2):
    m = len(genl1)
    n = len(genl2)
    M = None #να γίνει ο πίνακας συμβάντων
    VT = np.zeros((n*m,1), int)  #βοηθητική μεταβλητή

    #υπολογισμός του πίνακα bitwise xor
    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}
```

[Ανοίξτε αυτό το `listings` παράδειγμα στο Overleaf](/latex/el/morfopoiisi/11-code-listing.md)

Ο παραπάνω κώδικας παράγει την ακόλουθη έξοδο:

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

Η προσθήκη της παραμέτρου χωρισμένης με κόμμα `caption=Python example` μέσα στις αγκύλες ενεργοποιεί τη λεζάντα. Αυτή η λεζάντα μπορεί αργότερα να χρησιμοποιηθεί στη λίστα καταχωρίσεων.

```latex
\lstlistoflistings
```

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

## Δείγμα έργου Overleaf

Ανοίξτε αυτόν τον σύνδεσμο για να [δοκιμάσετε το `listings` παράδειγμα του πακέτου στο Overleaf.](https://www.overleaf.com/project/new/template/20053?id=68266290\&templateName=listings+package+demo\&latexEngine=pdflatex\&texImage=texlive-full%3A2020.1\&mainFile=)

## Οδηγός αναφοράς

### Υποστηριζόμενες γλώσσες

**υποστηριζόμενες γλώσσες (και οι διάλεκτοί τους αν είναι δυνατόν, οι διάλεκτοι καθορίζονται σε αγκύλες και οι προεπιλεγμένες διάλεκτοι γράφονται πλάγια):**

|                                                        |                                                  |
| ------------------------------------------------------ | ------------------------------------------------ |
| 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 (decorative, *OMG*)                          |
| Octave                                                 | Oz                                               |
| Pascal (Borland6, *Τυπικό*, 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                                             |

### Επιλογές για την προσαρμογή των στυλ καταχώρισης κώδικα

* **backgroundcolor** - χρώμα για το φόντο. Απαιτείται εξωτερικό ***color*** ή ***xcolor*** πακέτο.
* **commentstyle** - στυλ των σχολίων στη γλώσσα πηγαίου κώδικα.
* **basicstyle** - μέγεθος γραμματοσειράς/οικογένεια/κλπ. για τον πηγαίο κώδικα (π.χ. `basicstyle=\ttfamily\small`)
* **keywordstyle** - στυλ των λέξεων-κλειδιών στη γλώσσα πηγαίου κώδικα (π.χ. `keywordstyle=\color{red}`)
* **numberstyle** - στυλ που χρησιμοποιείται για τους αριθμούς γραμμών
* **numbersep** - απόσταση των αριθμών γραμμών από τον κώδικα
* **stringstyle** - στυλ των συμβολοσειρών στη γλώσσα πηγαίου κώδικα
* **showspaces** - επισήμανση κενών στον κώδικα (true/false)
* **showstringspaces** - επισήμανση κενών στις συμβολοσειρές (true/false)
* **showtabs** - επισήμανση στηλοθετών στον κώδικα (true/false)
* **αριθμοί** - θέση των αριθμών γραμμών (left/right/none, δηλαδή χωρίς αριθμούς γραμμών)
* **prebreak** - εμφανιζόμενο σημάδι στο τέλος της σπασμένης γραμμής (π.χ. `prebreak=\raisebox{0ex}[0ex][0ex]{\ensuremath{\hookleftarrow}}`)
* **captionpos** - θέση της λεζάντας (t/b)
* **πλαίσιο** - εμφάνιση πλαισίου έξω από τον κώδικα (none/leftline/topline/bottomline/lines/single/shadowbox)
* **breakatwhitespace** - ορίζει αν τα αυτόματα σπασίματα πρέπει να συμβαίνουν μόνο στα κενά
* **breaklines** - αυτόματο σπάσιμο γραμμών
* **keepspaces** - διατήρηση των κενών στον κώδικα, χρήσιμο για τη στοίχιση
* **tabsize** - προεπιλεγμένο μέγεθος στηλοθέτη
* **escapeinside** - ορισμός χαρακτήρων για έξοδο από τον πηγαίο κώδικα προς το LaTeX (π.χ. `escapeinside={\%*}{*)}`)
* **rulecolor** - καθορίστε το χρώμα του πλαισίου

## Περαιτέρω ανάγνωση

Για περισσότερες πληροφορίες δείτε:

* [Επισήμανση κώδικα με minted](/latex/el/morfopoiisi/12-code-highlighting-with-minted.md)
* [Χρήση χρωμάτων στο LaTeX](/latex/el/morfopoiisi/13-using-colors-in-latex.md)
* [Πίνακας περιεχομένων](/latex/el/domi-eggrafoy/02-table-of-contents.md)
* [Διαχείριση σε ένα μεγάλο έργο](/latex/el/domi-eggrafoy/07-management-in-a-large-project.md)
* [Έργα LaTeX πολλών αρχείων](/latex/el/domi-eggrafoy/08-multi-file-latex-projects.md)
* [Μεγέθη, οικογένειες και στυλ γραμματοσειρών](/latex/el/grammatoseires/01-font-sizes-families-and-styles.md)
* [Τύποι γραμματοσειρών](/latex/el/grammatoseires/02-font-typefaces.md)
* [**listings** τεκμηρίωση πακέτου](https://texdoc.org/serve/listings/0)
* [**listings** ιστότοπος 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/el/morfopoiisi/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.
