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
\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}Мова, задана через \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 у реченні
The loop \lstinline|for i in range(44):| runs 44 times, and
\lstinline{total += i} adds up the numbers.Лістинг із підписом усередині figure
\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.Сумісність
- З установленого 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.