> For the complete documentation index, see [llms.txt](https://ayakaleaf-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://ayakaleaf-pro.ayaka.space/latex/uk/zapitannya-ta-vidpovidi/16-how-can-i-include-matlab-code-in-my-latex-document.md).

# Як я можу вставити код MATLAB у мій документ LaTeX?

Функція [`matlab-prettifier` accents](https://www.ctan.org/pkg/matlab-prettifier) може використовуватися для верстки коду MATLAB і був написаний у відповідь на [запитання на tex.stackexchange](https://tex.stackexchange.com/questions/75116/what-can-i-use-to-typeset-matlab-code-in-my-document).

### Середовище lstlisting

Після підключення `matlab-prettifier` пакета у ваш документ за допомогою

```latex
\usepackage{matlab-prettifier}
```

ви можете використовувати `lstlisting` середовище для верстки коду MATLAB:

```latex
\begin{lstlisting}[<options>]
Код MATLAB...
\end{lstlisting}
```

де `<options>` є списком параметрів, розділених комами, значення яких задаються парами ключ–значення (тобто, `parameter=value`).

* **Примітка**: Пакет `matlab-prettifier` побудований навколо пакета `listings` пакета, що дає змогу використовувати можливості, надані `listings`, зокрема параметри всередині `<options>` цього `lstlisting` середовища. Однак деякі `listings` параметри слід *не* використовувати, і читачам радять звернутися до [`matlab-prettifier` документації](http://mirrors.ctan.org/macros/latex/contrib/matlab-prettifier/matlab-prettifier.pdf) для отримання додаткових відомостей.

Візуальний вигляд зверстаного коду MATLAB можна змінити за допомогою `стилю` параметра, який підтримує три значення:

* `Matlab-editor`
* `Matlab-bw`
* `Matlab-Pyglike`

Наведені нижче приклади демонструють, як використовувати ці стилі.

### Приклади

Ось приклад із використанням коду MATLAB із `matlab-prettifier`документації, у якому застосовано `Matlab-editor` стиль:

```latex
\documentclass[a4paper]{article}
\usepackage{matlab-prettifier}
\begin{document}

\begin{lstlisting}[style=Matlab-editor]
%% Зразок коду Matlab
!mv test.txt test2.txt
A = [1, 2, 3;... foo
     4, 5, 6];
s = 'abcd';
for k = 1:4
  Disp(s(k)) % bar
end
%{
створіть рядковий вектор x, а потім розверніть його
%}
x = linspace(0,1,101);
y = x(end:-1:1);
\end{lstlisting}
\end{document}
```

[Відкрити цей приклад в Overleaf](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=A+matlab-prettifier+example\&snip=%5Cdocumentclass%5Ba4paper%5D%7Barticle%7D%0A%5Cusepackage%7Bmatlab-prettifier%7D%0A%5Cbegin%7Bdocument%7D%0A%0A%5Cbegin%7Blstlisting%7D%5Bstyle%3DMatlab-editor%5D%0A%25%25+Sample+Matlab+code%0A%21mv+test.txt+test2.txt%0AA+%3D+%5B1%2C+2%2C+3%3B...+foo%0A+++++4%2C+5%2C+6%5D%3B%0As+%3D+%27abcd%27%3B%0Afor+k+%3D+1%3A4%0A++Disp%28s%28k%29%29+%25+bar%0Aend%0A%25%7B%0Acreate+row+vector+x%2C+then+reverse+it%0A%25%7D%0Ax+%3D+linspace%280%2C1%2C101%29%3B%0Ay+%3D+x%28end%3A-1%3A1%29%3B%0A%5Cend%7Blstlisting%7D%0A%5Cend%7Bdocument%7D)

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

![Код MATLAB, зверстаний у LaTeX в Overleaf](/files/772699092167d2a3c7a40462aff8a5347b8f07f2)

Наступний приклад задає значення для `рамки` та `номерів` параметрів, наданих `listings` пакета:

```latex
\documentclass[a4paper]{article}
\usepackage{matlab-prettifier}
\begin{document}

\begin{lstlisting}[
frame=single,
numbers=left,
style=Matlab-Pyglike]
%% Зразок коду Matlab
!mv test.txt test2.txt
A = [1, 2, 3;... foo
     4, 5, 6];
s = 'abcd';
for k = 1:4
  Disp(s(k)) % bar
end
%{
створіть рядковий вектор x, а потім розверніть його
%}
x = linspace(0,1,101);
y = x(end:-1:1);
\end{lstlisting}
\end{document}
```

[Відкрити цей приклад в Overleaf](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=A+second+matlab-prettifier+example\&snip=%5Cdocumentclass%5Ba4paper%5D%7Barticle%7D%0A%5Cusepackage%7Bmatlab-prettifier%7D%0A%5Cbegin%7Bdocument%7D%0A%0A%5Cbegin%7Blstlisting%7D%5B%0Aframe%3Dsingle%2C%0Anumbers%3Dleft%2C%0Astyle%3DMatlab-Pyglike%5D%0A%25%25+Sample+Matlab+code%0A%21mv+test.txt+test2.txt%0AA+%3D+%5B1%2C+2%2C+3%3B...+foo%0A+++++4%2C+5%2C+6%5D%3B%0As+%3D+%27abcd%27%3B%0Afor+k+%3D+1%3A4%0A++Disp%28s%28k%29%29+%25+bar%0Aend%0A%25%7B%0Acreate+row+vector+x%2C+then+reverse+it%0A%25%7D%0Ax+%3D+linspace%280%2C1%2C101%29%3B%0Ay+%3D+x%28end%3A-1%3A1%29%3B%0A%5Cend%7Blstlisting%7D%0A%5Cend%7Bdocument%7D)

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

![Код MATLAB, зверстаний у LaTeX в Overleaf](/files/4693e437b56634cfd928eac9d799fb668f0d8aaa)

### Використання коду MATLAB, збереженого у файлі

Замість безпосереднього включення коду MATLAB у ваш документ LaTeX використовуйте `\lstinputlisting` команду для імпорту та верстки коду, що міститься у зовнішньому файлі:

```latex
\lstinputlisting[<options>]{<filename>}
```

де

* `<options>` є списком параметрів, поданих як пари ключ–значення, розділених комами [(див. вище)](#matopts);
* `<filename>` є шляхом до файлу, що містить код MATLAB.

Наприклад, щоб імпортувати файл `sample.m` і зверстати його у `Matlab-bw` стилі, ви б написали

```latex
\lstinputlisting[style=Matlab-bw]{sample.m}
```

Наступний приклад розміщує рамку навколо коду, нумерує рядки коду (ліворуч) і використовує `Matlab-bw` стиль:

```latex
\lstinputlisting[
frame=single,
numbers=left,
style=Matlab-editor
]{sample.m}
```

Виберіть `Відкрити цей приклад в Overleaf` посилання ([див. нижче](#openol)) для автоматичного створення проєкту Overleaf, який містить `sample.m` файл коду MATLAB.

**`main.tex`**

```latex
\documentclass[a4paper]{article}
\usepackage{matlab-prettifier}
\begin{document}
\title{Імпорт і верстка коду MATLAB, що міститься у файлі}
\lstinputlisting[
frame=single,
numbers=left,
style=Matlab-bw
]{sample.m}

\end{document}
```

**`sample.m`**

```latex
%% Зразок коду Matlab
!mv test.txt test2.txt
A = [1, 2, 3;... foo
     4, 5, 6];
s = 'abcd';
for k = 1:4
  Disp(s(k)) % bar
end
%{
створіть рядковий вектор x, а потім розверніть його
%}
x = linspace(0,1,101);
y = x(end:-1:1);
```

[Відкрийте цей приклад в Overleaf (він створює `sample.m` ).](https://www.overleaf.com/docs?engine=pdflatex\&snip_name\[]=main.tex\&snip\[]=%5Cdocumentclass%5Ba4paper%5D%7Barticle%7D%0A%5Cusepackage%7Bmatlab-prettifier%7D%0A%5Cbegin%7Bdocument%7D%0A%5Ctitle%7BImporting+and+typesetting+MATLAB+code+contained+in+a+file%7D%0A%5Clstinputlisting%5B%0Aframe%3Dsingle%2C%0Anumbers%3Dleft%2C%0Astyle%3DMatlab-bw%0A%5D%7Bsample.m%7D%0A%0A%5Cend%7Bdocument%7D\&snip_name\[]=sample.m\&snip\[]=%25%25+Sample+Matlab+code%0A%21mv+test.txt+test2.txt%0AA+%3D+%5B1%2C+2%2C+3%3B...+foo%0A+++++4%2C+5%2C+6%5D%3B%0As+%3D+%27abcd%27%3B%0Afor+k+%3D+1%3A4%0A++Disp%28s%28k%29%29+%25+bar%0Aend%0A%25%7B%0Acreate+row+vector+x%2C+then+reverse+it%0A%25%7D%0Ax+%3D+linspace%280%2C1%2C101%29%3B%0Ay+%3D+x%28end%3A-1%3A1%29%3B\&main_document=main.tex)

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

![Код MATLAB, зверстаний у LaTeX в Overleaf](/files/33b7774426e07277f2d4baa3cfc2bea087cfafb9)


---

# 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://ayakaleaf-pro.ayaka.space/latex/uk/zapitannya-ta-vidpovidi/16-how-can-i-include-matlab-code-in-my-latex-document.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.
