> ## Documentation Index
> Fetch the complete documentation index at: https://ayakaleaf-pro.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# {Minted}

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

```latex theme={null}
\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 #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}
```

Цей приклад дає такий результат:

<p style={{ textAlign: "center" }}>
  <img src="https://sharelatex-wiki-cdn-671420.c.cdn77.org/learn-scripts/images/f/f0/OLV2minted.png" alt="Приклад результату роботи пакета minted" />
</p>

Тут є дві важливі команди. У преамбулі пакет імпортується так:

```latex theme={null}
\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 theme={null}
\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 np
    
def 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}
```

Цей приклад дає такий результат:

<p style={{ textAlign: "center" }}>
  <img src="https://sharelatex-wiki-cdn-671420.c.cdn77.org/learn-scripts/images/f/ff/OLV2minted2.png" alt="Приклад застосування форматування до коду, набраного за допомогою пакета minted" />
</p>

У цьому прикладі використано такі параметри:

* `frame=lines`: малює дві лінії — одну над кодом, другу під ним, — щоб обрамити його. Інші можливі значення: `leftline`, `topline`, `bottomline` і `single`.
* `framesep=2mm`: відступ рамки встановлено на 2mm. Можна використовувати й інші [одиниці довжини](https://www.overleaf.com/learn/latex/Lengths_in_LaTeX).
* `baselinestretch=1.2`: міжрядковий інтервал коду встановлено на 1.2.
* `bgcolor=LightGray`: колір тла встановлено на `LightGray`. Щоб це працювало, потрібно імпортувати пакет `xcolor`. Докладніше про роботу з кольорами читайте в статті [Using colours in 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 theme={null}
\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}
```

Цей приклад дає такий результат:

<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 theme={null}
\inputminted[firstline=2, lastline=12]{octave}{BitXorMatrix.m}
```

### Однорядковий код

Якщо потрібно вставити лише один рядок коду, впорається команда `\mint`, синтаксис якої наведено в наступному прикладі.

```latex wrap theme={null}
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.
```

Цей приклад дає такий результат:

<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

Якщо ви використовуєте sandbox-компіляцію і власний сервер overleaf для розгортання overleaf, minted може працювати некоректно. Докладніше дивіться: [issues/131](https://github.com/yu-i-i/overleaf-cep/issues/131). Щоб minted працював, потрібно ввімкнути профіль інструкцій arm і деякі системні виклики.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.