Перейти до вмісту

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.