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.