> 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/latex/overleaf-learn-latex-pt/perguntas-e-respostas/16-how-can-i-include-matlab-code-in-my-latex-document.md).

# Como posso incluir código MATLAB no meu documento LaTeX?

O [`matlab-prettifier` pacote](https://www.ctan.org/pkg/matlab-prettifier) pode ser usado para compor código MATLAB e foi escrito em resposta a uma [pergunta no tex.stackexchange](https://tex.stackexchange.com/questions/75116/what-can-i-use-to-typeset-matlab-code-in-my-document).

### O ambiente lstlisting

Depois de incluir o `matlab-prettifier` pacote no seu documento via

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

você pode usar o `lstlisting` ambiente para compor código MATLAB:

```latex
\begin{lstlisting}[<options>]
Código MATLAB...
\end{lstlisting}
```

onde `<options>` é uma lista de parâmetros separada por vírgulas cujos valores são definidos usando pares chave–valor (isto é, `parameter=value`).

* **Nota**: O `matlab-prettifier` pacote é construído em torno do `listings` pacote, permitindo o uso de recursos fornecidos por `listings`, incluindo parâmetros dentro de `<options>` do `lstlisting` ambiente. No entanto, alguns `listings` parâmetros devem *contém* ser usados, e recomenda-se aos leitores que consultem o [`matlab-prettifier` documentação](http://mirrors.ctan.org/macros/latex/contrib/matlab-prettifier/matlab-prettifier.pdf) para mais detalhes.

A aparência visual do código MATLAB composto pode ser alterada usando o `estilo` parâmetro, que suporta três valores:

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

Os exemplos a seguir demonstram como usar esses estilos.

### Exemplos

Aqui está um exemplo, usando código MATLAB da `matlab-prettifier`documentação, que aplica o `Matlab-editor` estilo:

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

\begin{lstlisting}[style=Matlab-editor]
%% Código de exemplo em 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
%{
crie o vetor linha x e depois inverta-o
%}
x = linspace(0,1,101);
y = x(end:-1:1);
\end{lstlisting}
\end{document}
```

[Abra este exemplo no 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)

Este exemplo produz a seguinte saída:

![Código MATLAB composto em LaTeX no Overleaf](/files/b29ff003ed301b37b26116b2ef5e8dbf10308b43)

O próximo exemplo define valores para o `frame` e `numbers` parâmetros fornecidos pelo `listings` pacote:

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

\begin{lstlisting}[
frame=single,
numbers=left,
style=Matlab-Pyglike]
%% Código de exemplo em 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
%{
crie o vetor linha x e depois inverta-o
%}
x = linspace(0,1,101);
y = x(end:-1:1);
\end{lstlisting}
\end{document}
```

[Abra este exemplo no 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)

Este exemplo produz a seguinte saída:

![Código MATLAB composto em LaTeX no Overleaf](/files/71c49a15f2944738ea3cc01b037b8ea733bac010)

### Usando código MATLAB armazenado num ficheiro

Em vez de incluir código MATLAB diretamente no seu documento LaTeX, use o `\lstinputlisting` comando para importar e compor código contido num ficheiro externo:

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

onde

* `<options>` é uma lista de parâmetros separada por vírgulas fornecida como pares chave–valor [(veja acima)](#matopts);
* `<filename>` é o caminho para um ficheiro que contém código MATLAB.

Por exemplo, para importar o ficheiro `sample.m` e compô-lo no `Matlab-bw` estilo, escreveria

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

O próximo exemplo coloca uma moldura em torno do código, numera as linhas de código (à esquerda) e usa o `Matlab-bw` estilo:

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

Selecione o `Abra este exemplo no Overleaf` ligação ([veja abaixo](#openol)) para criar automaticamente um projeto Overleaf que inclui o `sample.m` ficheiro de código MATLAB.

**`main.tex`**

```latex
\documentclass[a4paper]{article}
\usepackage{matlab-prettifier}
\begin{document}
\title{Importando e compondo código MATLAB contido num ficheiro}
\lstinputlisting[
frame=single,
numbers=left,
style=Matlab-bw
]{sample.m}

\end{document}
```

**`sample.m`**

```latex
%% Código de exemplo em 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
%{
crie o vetor linha x e depois inverta-o
%}
x = linspace(0,1,101);
y = x(end:-1:1);
```

[Abra este exemplo no Overleaf (ele cria o `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)

Este exemplo produz a seguinte saída:

![Código MATLAB composto em LaTeX no Overleaf](/files/60bc97489d28f727a86cfc0f7f0c2fea99b545d6)


---

# 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/latex/overleaf-learn-latex-pt/perguntas-e-respostas/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.
