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

Лістинги коду в 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.
Зверстано в Scissor LaTeX: Код у рядку з \verb і \texttt

\texttt{...} лише змінює шрифт: спеціальні символи, як-от _ і %, там однаково треба екранувати, тоді як \verb приймає їх як є.

listings: lstlisting з мовою

Пакет listings дає середовище lstlisting. З language=... код отримує підсвічування синтаксису.

lstlisting з language=Python

LaTeXПреамбула: \usepackage{listings}Відкрити в редакторі (відкриється в новій вкладці)
\begin{lstlisting}[language=Python]
def total(xs):
    """Add up the numbers in xs."""
    return sum(xs)

print(total([40, 4]))  # 44
\end{lstlisting}
Зверстано в Scissor LaTeX: lstlisting з language=Python

\lstinline|code| є формою для рядка, як \verb.

minted

minted приймає мову як аргумент. В інсталяції TeX йому потрібні Python і параметр -shell-escape; у Scissor LaTeX він працює без жодного з них.

minted із мовою

LaTeXПреамбула: \usepackage{minted}Відкрити в редакторі (відкриється в новій вкладці)
\begin{minted}{rust}
fn main() {
    let answer = 40 + 4;
    println!("{}", answer);
}
\end{minted}
Inline: \mintinline{rust}{let x = 44;}
Зверстано в Scissor LaTeX: minted із мовою

Що читається

КомандаУ 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 пропускається

LaTeXПреамбула: \usepackage{listings}Відкрити в редакторі (відкриється в новій вкладці)
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.