В этой статье показано, как с помощью пакета minted форматировать и подсвечивать исходный код на языках программирования в документе LaTeX. Начнём с примера:
\documentclass{article}\usepackage{minted}\begin{document}\begin{minted}{python}import numpy as npdef incmatrix(genl1,genl2): m = len(genl1) n = len(genl2) M = None #to become the incidence matrix VT = np.zeros((n*m,1), int) #dummy variable #compute the bitwise xor matrix M1 = bitxormatrix(genl1) M2 = np.triu(bitxormatrix(genl2),1) for i in range(m-1): for j in range(i+1, m): [r,c] = np.where(M2 == M1[i,j]) for k in range(len(r)): VT[(i)*n + r[k]] = 1; VT[(i)*n + c[k]] = 1; VT[(j)*n + r[k]] = 1; VT[(j)*n + c[k]] = 1; if M is None: M = np.copy(VT) else: M = np.concatenate((M, VT), 1) VT = np.zeros((n*m,1), int) return M\end{minted}\end{document}
Этот пример даёт следующий результат:
Здесь есть две важные команды. В преамбуле пакет подключается с помощью строки
\usepackage{minted}
затем теги \begin{minted}{python} и \end{minted} ограничивают окружение, которое выводит текст дословно моноширинным шрифтом и выделяет цветом комментарии, ключевые слова и функции. Параметр python — это язык программирования, на котором написан исходный код. minted поддерживает более 150 языков программирования и разметки, а также форматы конфигурационных файлов; список поддерживаемых языков см. в справочном руководстве.Примечание: чтобы minted работал с вашим локальным дистрибутивом LaTeX, необходимо установить дополнительную программу Pygments. Overleaf избавляет вас от необходимости её устанавливать и запускать специальные команды для компиляции документа — в Overleaf документы, использующие minted, работают «из коробки».
Как показано в следующем примере, окружение minted можно настроить, чтобы изменить внешний вид набранного кода. Здесь окружение minted использует несколько параметров вида key=value, разделённых запятыми:
\documentclass{article}\usepackage{minted}\usepackage{xcolor} % to access the named colour LightGray\definecolor{LightGray}{gray}{0.9}\begin{document}\begin{minted}[frame=lines,framesep=2mm,baselinestretch=1.2,bgcolor=LightGray,fontsize=\footnotesize,linenos]{python}import numpy as npdef incmatrix(genl1,genl2): m = len(genl1) n = len(genl2) M = None #to become the incidence matrix VT = np.zeros((n*m,1), int) #dummy variable #compute the bitwise xor matrix M1 = bitxormatrix(genl1) M2 = np.triu(bitxormatrix(genl2),1) for i in range(m-1): for j in range(i+1, m): [r,c] = np.where(M2 == M1[i,j]) for k in range(len(r)): VT[(i)*n + r[k]] = 1; VT[(i)*n + c[k]] = 1; VT[(j)*n + r[k]] = 1; VT[(j)*n + c[k]] = 1; if M is None: M = np.copy(VT) else: M = np.concatenate((M, VT), 1) VT = np.zeros((n*m,1), int) return M\end{minted}\end{document}
Этот пример даёт следующий результат:
В этом примере используются следующие параметры:
frame=lines: рисует две линии — над кодом и под ним, — обрамляя его. Другие возможные значения: leftline, topline, bottomline и single.
framesep=2mm: отступ рамки равен 2 мм. Можно использовать и другие единицы длины.
bgcolor=LightGray: цвет фона — LightGray. Для этого необходимо подключить пакет xcolor. Подробнее о работе с цветом см. в статье Using colours in LaTeX.
fontsize=\footnotesize: размер шрифта — footnotesize. Можно задать любой другой размер шрифта.
linenos: включает нумерацию строк.
Другие полезные параметры:
mathescape: включает математический режим в комментариях к коду.
rulecolor: изменяет цвет рамки.
showspaces: включает специальный символ, делающий пробелы видимыми.
Обычно код хранится в исходном файле, поэтому команда, автоматически импортирующая код из файла, очень удобна, как показано в следующем примере:
\documentclass{article}\usepackage{minted}\title{Importing files using minted}\begin{document}The next code will be directly imported from a file:\inputminted{octave}{BitXorMatrix.m}\end{document}
Этот пример даёт следующий результат:Команда \inputminted{octave}{BitXorMatrix.m} импортирует код из файла BitXorMatrix.m, а параметр octave сообщает LaTeX язык программирования кода. Эта команда может принимать два дополнительных параметра, чтобы импортировать только часть файла; например, чтобы импортировать код со 2-й по 12-ю строку, команда будет выглядеть так:
Если нужно вставить всего одну строку кода, поможет команда \mint, синтаксис которой показан в следующем примере.
One-line code formatting also works with \texttt{minted}. For example, a small fragment of HTML like this:\mint{html}|<h2>Something <b>here</b></h2>|\noindent can be formatted correctly.
Этот пример даёт следующий результат:Параметр в фигурных скобках задаёт язык программирования (в данном случае язык разметки html), а форматируемый текст ограничивается символом ’|’.
Если вы используете изолированную компиляцию (sandbox compile) и собственный сервер Overleaf, minted может работать некорректно. Подробности см. в issues/131. Чтобы minted заработал, необходимо включить профиль инструкций arm и некоторые системные вызовы.
Последнее изменение 4 октября 2026 г.
Была ли эта страница полезной?
Assistant
Responses are generated using AI and may contain mistakes.