> For the complete documentation index, see [llms.txt](https://overleaf-pro.ayaka.space/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://overleaf-pro.ayaka.space/texlive/ru/svyazannoe-s-paketami/minted.md).

# {Minted}

Эта статья показывает, как использовать [`minted` пакет](https://ctan.org/pkg/minted?lang=en) для форматирования и подсветки исходного кода на языке программирования в документе LaTeX, начиная с примера:

```latex
\\documentclass{article}
\\usepackage{minted}
\\begin{document}
\\begin{minted}{python}
import numpy as np
    
def incmatrix(genl1,genl2):
    m = len(genl1)
    n = len(genl2)
    M = None #чтобы стать матрицей инцидентности
    VT = np.zeros((n*m,1), int)  #вспомогательная переменная
    
    #вычислить матрицу поразрядного XOR
    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}
```

Этот пример выводит следующий результат:

<p align="center"><img src="https://sharelatex-wiki-cdn-671420.c.cdn77.org/learn-scripts/images/f/f0/OLV2minted.png" alt="Example displaying the output of the minted package"></p>

Здесь есть две важные команды. В преамбуле пакет подключается с помощью

```latex
\\usepackage{minted}
```

затем теги `\\begin{minted}{python}` и `\\end{minted}` задают окружение, которое печатает текст как есть моноширинным шрифтом и также применяет цвет к комментариям, ключевым словам и функциям. Параметр `python` — это язык программирования, на котором написан исходный код. `minted` поддерживает более 150 языков программирования и разметки, а также конфигурационные файлы; см. [справочное руководство](https://www.overleaf.com/learn/latex/Code_Highlighting_with_minted#Reference_guide) для списка поддерживаемых языков.

**Примечание**: Для `minted` работы с вашей *локальной* дистрибуцией LaTeX требуется дополнительная программа под названием [Pygments](https://pygments.org/) должна быть установлена. [Overleaf](https://www.overleaf.com/) может избавить вас от необходимости устанавливать её и запускать специальные команды для компиляции документа — в Overleaf документы, использующие `minted` будут работать «из коробки».

### Базовое использование

Как показано в следующем примере, окружение `minted` можно настроить так, чтобы изменить визуальное представление набранного кода. Здесь `minted` окружение использует несколько параметров, разделённых запятыми, вида `key=value`:

```latex
\\documentclass{article}
\\usepackage{minted}
\\usepackage{xcolor} % чтобы получить доступ к именованному цвету 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 np
    
def incmatrix(genl1,genl2):
    m = len(genl1)
    n = len(genl2)
    M = None #чтобы стать матрицей инцидентности
    VT = np.zeros((n*m,1), int)  #вспомогательная переменная
    
    #вычислить матрицу поразрядного XOR
    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}
```

Этот пример выводит следующий результат:

<p align="center"><img src="https://sharelatex-wiki-cdn-671420.c.cdn77.org/learn-scripts/images/f/ff/OLV2minted2.png" alt="Example applying formatting to typeset code produced by the minted package"></p>

Параметры, использованные в этом примере:

* `frame=lines`: рисует две линии — одну сверху и одну снизу кода, чтобы оформить его рамкой. Другие возможные значения: `leftline`, `topline`, `bottomline` и `single`.
* `framesep=2mm`: расстояние до рамки установлено в 2 мм. Другие [единицы длины](https://www.overleaf.com/learn/latex/Lengths_in_LaTeX) могут использоваться.
* `baselinestretch=1.2`: межстрочный интервал кода установлен на 1.2.
* `bgcolor=LightGray`: цвет фона установлен в `LightGray`. Вам нужно подключить пакет `xcolor` для этого. См. [Использование цветов в LaTeX](https://www.overleaf.com/learn/latex/Using_colours_in_LaTeX) чтобы узнать больше об управлении цветом.
* `fontsize=\\footnotesize`: размер шрифта установлен в `footnotesize`. Любой другой [размер шрифта](https://www.overleaf.com/learn/latex/Font_sizes_and_kinds%23Reference_guide) может быть установлен.
* `linenos`: включает нумерацию строк.

Другие полезные параметры:

* `mathescape`: включает математический режим в комментариях к коду.
* `rulecolor`: изменяет цвет рамки.
* `showspaces`: включает специальный символ, делающий пробелы видимыми.

### Включение кода из файла

Код обычно хранится в исходном файле, поэтому команда, которая автоматически импортирует код из файла, очень удобна, как показано в следующем примере:

```latex
\\documentclass{article}
\\usepackage{minted}
\\title{Импорт файлов с помощью minted}
\\begin{document}
Следующий код будет напрямую импортирован из файла:

\\inputminted{octave}{BitXorMatrix.m}
\\end{document}
```

Этот пример выводит следующий результат:

<img src="https://sharelatex-wiki-cdn-671420.c.cdn77.org/learn-scripts/images/c/c8/OLV2mintedinput.png" alt="Использование minted для импорта файла кода" height="392" width="600">

Команда `\\inputminted{octave}{BitXorMatrix.m}` импортирует код из файла `BitXorMatrix.m`, параметр `octave` сообщает LaTeX язык программирования кода. Эта команда может принимать два дополнительных параметра, чтобы импортировать только часть файла; например, чтобы импортировать код со строки 2 по строку 12, команда становится:

```latex
\\inputminted[firstline=2, lastline=12]{octave}{BitXorMatrix.m}
```

### Однострочный код

Если вам нужно вставить только одну строку кода, команда `\\mint`, синтаксис которой показан в следующем примере, справится с этим.

{% code overflow="wrap" %}

```latex
Форматирование однострочного кода также работает с \\texttt{minted}. Например, небольшой фрагмент HTML вроде этого:
\\mint{html}|<h2>Что-то <b>здесь</b></h2>|
может быть правильно отформатирован без отступа.
```

{% endcode %}

Этот пример выводит следующий результат:

<img src="https://sharelatex-wiki-cdn-671420.c.cdn77.org/learn-scripts/images/d/d9/OLV2mintedHTML.png" alt="Пример однострочного кода с minted" height="112" width="600">

Параметр в фигурных скобках задаёт язык программирования (`html` в данном случае язык разметки), а сам текст, который нужно форматировать, ограничивается символом '|'.

### Проблемы с самостоятельно размещённым Overleaf

Если вы используете компиляцию в песочнице и также сервер Overleaf для развертывания Overleaf, minted может работать не очень хорошо. Подробную информацию можно посмотреть: [issues/131](https://github.com/yu-i-i/overleaf-cep/issues/131). Чтобы minted работал, вам нужно включить профиль инструкций ARM и некоторые системные вызовы.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://overleaf-pro.ayaka.space/texlive/ru/svyazannoe-s-paketami/minted.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
