Przejdź do treści

listings w Scissor LaTeX

Pakiet listings działa w Scissor LaTeX częściowo: lstlisting zachowuje kod dokładnie tak, jak go wpisano, i koloruje go, gdy podasz language= przy środowisku, a \lstinline działa; \lstset, numery wierszy, ramki, podpisy i etykiety są ignorowane, a \lstinputlisting jest pomijane.

Do czego służy pakiet

listings składa kod źródłowy. Środowisko lstlisting zachowuje podziały wierszy i spacje, a z language=Python (lub C, Java, SQL ...) składa słowa kluczowe, komentarze i łańcuchy różnymi stylami. Opcje dodają numery wierszy, ramki, podpisy i kolory, osobno dla każdego listingu albo dla całego dokumentu za pomocą \lstset. \lstinline to wersja do użycia w tekście, a \lstinputlisting wczytuje kod z pliku.

Co tu działa

FunkcjaW Scissor LaTeXUwagi
\begin{lstlisting} ... \end{lstlisting}DziałaFont o stałej szerokości, dokładnie tak, jak wpisano.
[language=Python] przy środowiskuDziałaKolory składni ze stałego schematu.
[language={[Sharp]C}] i inne dialektyDziałaDialekt w nawiasach jest odczytywany razem z nazwą.
\lstinline|code|, \lstinline{code}DziałaFont o stałej szerokości, bez kolorów.
numbers=left, frame=single, basicstyle, keywordstyle, backgroundcolorPomijaneIgnorowane bez komunikatu.
caption=, label=PomijanePodpis nie jest wypisywany, a \ref do etykiety pokazuje „??”.
\lstset{...}, \lstdefinestyle, style=PomijaneIgnorowane, łącznie z ustawionym tam language=.
\lstinputlisting{file}NieobsługiwanePomijane z komunikatem.
\lstlistoflistings, \lstnewenvironmentNieobsługiwanePomijane z komunikatem.

Wielkość liter w nazwach języków nie ma znaczenia. Kolory są dostępne dla popularnych języków, takich jak Python, C, C++, C#, Java, JavaScript, Rust, Go, R, MATLAB, SQL, Bash, HTML i TeX. Nierozpoznana nazwa, na przykład Fortran, daje zwykły kod w foncie o stałej szerokości, bez komunikatu.

Przykłady

Podawaj język przy każdym listingu:

lstlisting z language=Python

LaTeXPreambuła: \usepackage{listings}Otwórz w edytorze (otwiera się w nowej karcie)
\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}
Złożone przez Scissor LaTeX: lstlisting z language=Python

Język ustawiony w \lstset nie jest używany, więc ten listing nie ma kolorów. Opcje układu, takie jak numbers i frame, też są ignorowane:

\lstset jest ignorowane

\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}

Kod w tekście za pomocą \lstinline przyjmuje dowolny ogranicznik, tak jak \verb:

\lstinline w zdaniu

LaTeXPreambuła: \usepackage{listings}Otwórz w edytorze (otwiera się w nowej karcie)
The loop \lstinline|for i in range(44):| runs 44 times, and
\lstinline{total += i} adds up the numbers.
Złożone przez Scissor LaTeX: \lstinline w zdaniu

Listing z podpisem wewnątrz figure

LaTeXPreambuła: \usepackage{listings}Otwórz w edytorze (otwiera się w nowej karcie)
\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.
Złożone przez Scissor LaTeX: Listing z podpisem wewnątrz figure

Zgodność

  • Z instalacji TeX do Scissor LaTeX: kod każdego lstlisting jest pokazywany. Przenieś language= z \lstset do każdego listingu, aby uzyskać kolory, a kod z plików \lstinputlisting wklej do dokumentu.
  • Ze Scissor LaTeX do instalacji TeX: dokumenty kompilują się tam bez zmian, a Twoje opcje są wtedy stosowane.

Pełna dokumentacja jest dostępna w CTAN: ctan.org/pkg/listings. Zobacz też Listingi kodu w LaTeX oraz minted.

Pytania i odpowiedzi

Dlaczego moje listingi nie są kolorowe?

Język jest prawdopodobnie ustawiony w \lstset, które jest tu ignorowane. Napisz [language=Python] (lub swój język) po \begin{lstlisting}.

Czy mogę pokazać numery wierszy?

Jeszcze nie. numbers=left jest akceptowane i ignorowane.

Każdy przykład na tej stronie jest składany przez Scissor LaTeX podczas budowania witryny. Ostatnia aktualizacja: 2026-11-07.