Лістинги коду в LaTeX
Помістіть код у середовище verbatim, lstlisting чи minted або скористайтеся \verb|...| у рядку; Scissor LaTeX набирає його моноширинним шрифтом точно так, як його введено, і підсвічує синтаксис, якщо ви вкажете мову.
verbatim
Усередині verbatim нічого не інтерпретується: зворотні скісні риски, фігурні дужки, $ і % виводяться як є, а розриви рядків і пробіли зберігаються. Це найпростіший спосіб показати код або вивід термінала.
Блок verbatim
\begin{verbatim}
for i in range(44):
print(i) # $ and \textbf stay as typed
\end{verbatim}Код у рядку: \verb
\verb показує короткий фрагмент коду всередині речення. Символ одразу після \verb є роздільником; оберіть такий, якого немає в коді, наприклад | чи +.
Код у рядку з \verb і \texttt
Call \verb|total(xs)| to add the list, or type \verb+x_1 = 44+.
For plain words in a monospaced font, \texttt{main.tex} is enough.\texttt{...} лише змінює шрифт: спеціальні символи, як-от _ і %, там однаково треба екранувати, тоді як \verb приймає їх як є.
listings: lstlisting з мовою
Пакет listings дає середовище lstlisting. З language=... код отримує підсвічування синтаксису.
lstlisting з language=Python
\begin{lstlisting}[language=Python]
def total(xs):
"""Add up the numbers in xs."""
return sum(xs)
print(total([40, 4])) # 44
\end{lstlisting}\lstinline|code| є формою для рядка, як \verb.
minted
minted приймає мову як аргумент. В інсталяції TeX йому потрібні Python і параметр -shell-escape; у Scissor LaTeX він працює без жодного з них.
minted із мовою
\begin{minted}{rust}
fn main() {
let answer = 40 + 4;
println!("{}", answer);
}
\end{minted}
Inline: \mintinline{rust}{let x = 44;}Що читається
| Команда | У Scissor LaTeX | Примітки |
|---|---|---|
verbatim, verbatim* | Працює | |
\verb, \verb* | Працює | |
lstlisting | Частково | language= читається; усі інші параметри (numbers, caption, frame, basicstyle, firstline ...) ігноруються. |
\lstinline | Працює | Без підсвічування синтаксису в рядку. |
\lstset{...} | Пропускається | Мова, задана тут, не використовується; вказуйте language= для кожного лістингу. |
minted | Частково | Мова читається; параметри на кшталт linenos і frame ігноруються. |
\mintinline{lang}{code} | Працює | Без підсвічування синтаксису в рядку. |
Verbatim, BVerbatim (fancyvrb) | Частково | Показується як verbatim; параметри ігноруються. |
\lstinputlisting{file}, \inputminted{lang}{file} | Не підтримується | Пропускається з повідомленням; вставте код безпосередньо в документ. |
\lstnewenvironment, \newminted | Не підтримується |
Підсвічування синтаксису доступне для поширених мов, серед них Python, C, C++, Java, JavaScript, TypeScript, Rust, Go, Ruby, R, Julia, MATLAB, SQL, Bash, HTML, CSS, JSON, YAML, TeX і LaTeX. Назви мов не чутливі до регістру, тож Python і python однакові. Нерозпізнана назва дає звичайний моноширинний код.
Код із файлу
В інсталяції TeX \lstinputlisting і \inputminted читають код з іншого файлу. Scissor LaTeX їх пропускає й повідомляє про це на вкладці «Проблеми»:
\lstinputlisting пропускається
The script below is not shown:
\lstinputlisting[language=Python]{scripts/total.py}
Paste the code into an lstlisting environment instead.Вкладка «Проблеми»: 1 included file is not part of this conversion
Чим відрізняється від інсталяції TeX
Сторінки пакетів: listings і minted. Повні посібники є на CTAN: listings, minted і fancyvrb.
Запитання й відповіді
Як додати блок коду в LaTeX?
Огорніть код у \begin{verbatim} ... \end{verbatim} або в lstlisting з [language=Python], щоб отримати підсвічування синтаксису.
Чи працює minted без shell escape?
У Scissor LaTeX так: середовища minted підсвічуються без Python і без -shell-escape. В інсталяції TeX minted, як і раніше, потребує обох.
Чому в моєму лістингу немає номерів рядків?
Scissor LaTeX ігнорує numbers=left та інші параметри оформлення listings. Читається лише мова.
Кожен приклад на цій сторінці верстається в Scissor LaTeX під час збирання сайту. Оновлено 2026-11-07.