Перейти к содержанию

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.