Μετάβαση στο περιεχόμενο

Το listings στο Scissor LaTeX

Το πακέτο listings λειτουργεί εν μέρει στο Scissor LaTeX: το lstlisting κρατά τον κώδικα ακριβώς όπως πληκτρολογήθηκε και τον χρωματίζει όταν δίνετε language= στο περιβάλλον, και το \lstinline λειτουργεί· το \lstset, οι αριθμοί γραμμών, τα πλαίσια, οι λεζάντες και οι ετικέτες αγνοούνται, και το \lstinputlisting παραλείπεται.

Τι κάνει το πακέτο

Το listings στοιχειοθετεί πηγαίο κώδικα. Το περιβάλλον lstlisting κρατά τις αλλαγές γραμμής και τα κενά, και με language=Python (ή C, Java, SQL ...) στοιχειοθετεί τις λέξεις-κλειδιά, τα σχόλια και τις συμβολοσειρές με διαφορετικά στυλ. Οι επιλογές προσθέτουν αριθμούς γραμμών, πλαίσια, λεζάντες και χρώματα, είτε ανά λίστα είτε για ολόκληρο το έγγραφο με το \lstset. Το \lstinline είναι η μορφή μέσα στη γραμμή, και το \lstinputlisting διαβάζει κώδικα από αρχείο.

Τι λειτουργεί εδώ

ΔυνατότηταΣτο Scissor LaTeXΣημειώσεις
\begin{lstlisting} ... \end{lstlisting}ΛειτουργείΣταθερό πλάτος, ακριβώς όπως πληκτρολογήθηκε.
[language=Python] στο περιβάλλονΛειτουργείΧρώματα σύνταξης από ένα σταθερό σχήμα.
[language={[Sharp]C}] και άλλες διάλεκτοιΛειτουργείΗ διάλεκτος σε αγκύλες διαβάζεται μαζί με το όνομα.
\lstinline|code|, \lstinline{code}ΛειτουργείΣταθερό πλάτος, χωρίς χρώματα.
numbers=left, frame=single, basicstyle, keywordstyle, backgroundcolorΠαραλείπεταιΑγνοούνται χωρίς μήνυμα.
caption=, label=ΠαραλείπεταιΔεν τυπώνεται λεζάντα, και ένα \ref προς την ετικέτα δείχνει «??».
\lstset{...}, \lstdefinestyle, style=ΠαραλείπεταιΑγνοούνται, μαζί και ένα language= που ορίζεται εκεί.
\lstinputlisting{file}Δεν υποστηρίζεταιΠαραλείπεται με μήνυμα.
\lstlistoflistings, \lstnewenvironmentΔεν υποστηρίζεταιΠαραλείπονται με μήνυμα.

Τα ονόματα γλωσσών δεν κάνουν διάκριση πεζών-κεφαλαίων. Χρώματα υπάρχουν για συνηθισμένες γλώσσες όπως Python, C, C++, C#, Java, JavaScript, Rust, Go, R, MATLAB, SQL, Bash, HTML και TeX. Ένα όνομα που δεν αναγνωρίζεται, όπως το Fortran, δίνει απλό κώδικα σταθερού πλάτους χωρίς μήνυμα.

Παραδείγματα

Δώστε τη γλώσσα σε κάθε λίστα κώδικα:

lstlisting με language=Python

LaTeXΠροοίμιο: \usepackage{listings}Άνοιγμα στον επεξεργαστή (ανοίγει σε νέα καρτέλα)
\begin{lstlisting}[language=Python]
def mean(values):
    # average of a list of numbers
    return sum(values) / len(values)

print(mean([40, 44, 48]))
\end{lstlisting}
Στοιχειοθέτηση από το Scissor LaTeX: lstlisting με language=Python

Μια γλώσσα που ορίζεται με \lstset δεν χρησιμοποιείται, οπότε αυτή η λίστα δεν έχει χρώματα. Και οι επιλογές διάταξης όπως numbers και frame αγνοούνται:

Το \lstset αγνοείται

\documentclass{article}
\usepackage{listings}
\lstset{language=SQL, numbers=left, frame=single}
\begin{document}
\begin{lstlisting}
SELECT name FROM staff WHERE id = 44;
\end{lstlisting}
\begin{lstlisting}[language=SQL]
SELECT name FROM staff WHERE id = 44;
\end{lstlisting}
\end{document}

Ο κώδικας μέσα στη γραμμή με \lstinline δέχεται οποιονδήποτε οριοθέτη, όπως το \verb:

\lstinline μέσα σε πρόταση

LaTeXΠροοίμιο: \usepackage{listings}Άνοιγμα στον επεξεργαστή (ανοίγει σε νέα καρτέλα)
The loop \lstinline|for i in range(44):| runs 44 times, and
\lstinline{total += i} adds up the numbers.
Στοιχειοθέτηση από το Scissor LaTeX: \lstinline μέσα σε πρόταση

Λίστα κώδικα με λεζάντα μέσα σε figure

LaTeXΠροοίμιο: \usepackage{listings}Άνοιγμα στον επεξεργαστή (ανοίγει σε νέα καρτέλα)
\begin{figure}[h]
\begin{lstlisting}[language=Python]
print(sum(range(44)))
\end{lstlisting}
\caption{Adding the numbers below 44}
\label{lst:sum}
\end{figure}
The code in Listing~\ref{lst:sum} prints 946.
Στοιχειοθέτηση από το Scissor LaTeX: Λίστα κώδικα με λεζάντα μέσα σε figure

Συμβατότητα

  • Από μια εγκατάσταση TeX προς τα εδώ: εμφανίζεται ο κώδικας κάθε lstlisting. Μεταφέρετε το language= από το \lstset σε κάθε λίστα για να πάρετε χρώματα, και επικολλήστε στο έγγραφο τον κώδικα από τα αρχεία του \lstinputlisting.
  • Από εδώ προς μια εγκατάσταση TeX: τα έγγραφα μεταγλωττίζονται εκεί χωρίς αλλαγές, και οι επιλογές σας τότε εφαρμόζονται.

Το πλήρες εγχειρίδιο βρίσκεται στο CTAN: ctan.org/pkg/listings. Δείτε επίσης Λίστες κώδικα στο LaTeX και minted.

Ερωτήσεις και απαντήσεις

Γιατί οι λίστες κώδικά μου δεν είναι χρωματιστές;

Η γλώσσα πιθανότατα ορίζεται με \lstset, που εδώ αγνοείται. Γράψτε [language=Python] (ή τη γλώσσα σας) μετά το \begin{lstlisting}.

Μπορώ να εμφανίσω αριθμούς γραμμών;

Όχι ακόμη. Το numbers=left γίνεται δεκτό και αγνοείται.

Κάθε παράδειγμα σε αυτή τη σελίδα στοιχειοθετείται από το Scissor LaTeX κατά τη δημιουργία του ιστότοπου. Τελευταία ενημέρωση: 2026-11-07.