> 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/60-i-have-a-lot-of-tikz-matlab2tikz-or-pgfplots-figures-so-i-m-getting-a-compilation-timeout.-can-i.md).

# Tenho muitas figuras tikz, matlab2tikz ou pgfplots, por isso estou a obter um tempo limite de compilação. Posso e

## Como externalizar gráficos TikZ

Use a biblioteca TikZ [chamada `external`](https://tikz.dev/library-external) para criar e armazenar (em cache) desenhos TikZ como ficheiros PDF — um processo frequentemente referido como “*externalização*”.

Carregue a biblioteca através de `\usetikzlibrary{external}`, e depois ative a externalização usando o comando `\tikzexternalize`:

```latex
\usetikzlibrary{external}
\tikzexternalize[<options>]
```

onde `<options>` é uma lista opcional de parâmetros (pares chave–valor) usada para configurar a `external` biblioteca.

* **NOTA**: Para a externalização TikZ funcionar no Overleaf, o `\tikzexternalize` comando ***deve*** ser dado no principal `.tex` ficheiro.

Vamos ver um exemplo básico que usa um gráfico reproduzido da [documentação do TikZ](https://tikz.dev/library-external):

```latex
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{external}
\tikzexternalize[prefix=tikz/]

\begin{document}
% Esta figura TikZ será escrita para
% um ficheiro chamado 'output-figure0.pdf'
% dentro da pasta 'tikz'
\begin{tikzpicture}

  \node {root}
    child {node {left}}
    child {node {right}
      child {node {child}}
      child {node {child}}
    };

\end{tikzpicture}

\end{document}
```

Para explorar este exemplo, pode [abri-lo no Overleaf.](https://www.overleaf.com/project/new/template/27519?id=1174669946\&templateName=Example+to+externalize+a+TikZ+graphic\&latexEngine=pdflatex\&texImage=texlive-full%3A2022.1\&mainFile=)

O código do nosso exemplo usa a opção `prefix=tikz/` com `\tikzexternalize`:

```latex
\tikzexternalize[prefix=tikz/]
```

A opção `prefix=tikz/` fornece o nome de uma pasta (aqui, `tikz`) a ser usada para armazenar em cache os gráficos gerados (externalizados) — terá de criar essa pasta manualmente no seu projeto. No entanto, antes de o LaTeX (código TikZ) poder escrever nessa pasta, ela precisa de conter um ficheiro — qualquer ficheiro (dummy) serve; por exemplo, pode adicionar um ficheiro de texto vazio `foo.txt` na `tikz` pasta.

O Overleaf trata os gráficos PDF TikZ externalizados como ficheiros de saída gerados, por isso não aparecerão na lista visível de ficheiros do projeto — estão presentes no projeto, apenas ocultos da vista — pode ver a lista de [ficheiros gerados](/latex/overleaf-learn-latex-pt/base-de-conhecimento/150-view-generated-files.md) para os ver.

O seguinte excerto de vídeo (breve) resume a compilação do exemplo acima e demonstra como aceder à lista de ficheiros gerados pelo TikZ:

{% embed url="<https://videos.ctfassets.net/nrgyaltdicpt/6VZVoHzhpNzOWSTvsWYm08/80d178255345da83bcd82b5fc64e5c6b/TikZExternalize.mp4>" %}

## Algumas notas

Externalizar gráficos TikZ pode ser computacionalmente exigente para o motor TeX subjacente (pdfTeX, XeTeX, LuaTeX etc.), por isso a `external` biblioteca oferece uma opção para “otimizar” o processo. Se ativar a otimização, o TikZ tentará reduzir a sua carga de trabalho “ignorando” alguns comandos complexos (e dispendiosos), embora não essenciais (para o TikZ), redefinindo-os (em tempo real). Além disso, alguns comandos de outros pacotes podem causar erros no modo de externalização; por exemplo, `\includepdf` do `pdfpages` pacote. Para contornar isso, terá de “otimizar” esses comandos:

```latex
\tikzexternalize[prefix=tikz/,optimize command away=\includepdf]
```

## Gráficos complexos demais para externalizar!

Se os seus gráficos forem complexos e/ou numerosos, é provável que encontre um [tempo limite de compilação](/latex/overleaf-learn-latex-pt/base-de-conhecimento/038-fixing-and-preventing-compile-timeouts.md#compiletimeout) durante a compilação inicial — à medida que os ficheiros externalizados são gerados. Esta secção перечис?

### Construção incremental

Construir o seu projeto incrementalmente, [comentando](https://ctan.org/pkg/comment?lang=en) diferentes blocos do seu projeto pode ajudar, mas lembre-se de que todos os ficheiros gerados são removidos por limpeza automática em intervalos fixos nos servidores. O seu projeto pode então falhar na compilação da próxima vez que iniciar sessão, e teria de os regenerar todos incrementalmente outra vez.

### Gerar os desenhos localmente

* **Nota**: Esta secção pressupõe que o seu projeto usa `\tikzexternalize[prefix=tikz/]` para guardar em cache gráficos gerados numa pasta chamada `tikz`.

Como solução alternativa, [descarregue o seu projeto do Overleaf](/latex/overleaf-learn-latex-pt/base-de-conhecimento/036-exporting-your-work-from-overleaf.md) e compile-o numa máquina local para externalizar (gerar) os ficheiros gráficos. Depois de a compilação terminar, a `tikz` pasta deverá conter vários tipos de ficheiro para cada gráfico gerado, incluindo `*somegraphic*.pdf`, `*somegraphic*.md5` e `*somegraphic*.dpth`. Se carregar esses ficheiros para a pasta do seu projeto no Overleaf,  `tikz` eles serão usados durante a compilação — que deverá agora ser bastante rápida. Como esses ficheiros são carregados e não gerados, não serão eliminados pelo servidor: ficheiros carregados nunca são sujeitos a limpeza automática.

* **Nota (nomes dos ficheiros gráficos)**: O Overleaf define `\jobname` para `saída`, o que afeta o nome dado aos gráficos TikZ externalizados (gerados): por predefinição, os ficheiros gráficos gerados são nomeados `output-figureN.EXT` onde
  * `N` é um inteiro derivado da sequência/ordem em que os gráficos aparecem (`N`=0, 1, 2, ...);
  * `EXT` é uma das extensões de ficheiro usadas pelo TikZ, incluindo `pdf`, `md5` e `dpth` (também `log`).
* **Uma ressalva**: Se, depois de carregar os ficheiros gráficos, fizer posteriormente alterações ao código TikZ no seu projeto, pode ser necessário eliminar os ficheiros gráficos correspondentes na `tikz` pasta, para que o Overleaf possa gerar e usar uma nova versão. Em alternativa, pode regenerar os ficheiros na sua máquina local e voltar a carregá-los no Overleaf. Lembre-se de que tem de substituir todos os `.pdf`, `.md5` e `.dpth` ficheiros para esse desenho TikZ específico.

### Gerar os desenhos num projeto separado

Outra opção é criar um projeto separado apenas para gráficos que contenha apenas a(s) figura(s) TikZ. Quando essas figuras estiverem prontas, pode carregar o PDF desse projeto separado para o seu projeto principal da seguinte forma:

* clique no ícone Carregar ficheiros (![Overleaf file upload icon](/files/c9bc063cfdf23f0794f721b1a4c408a29b473339)) acima do painel da lista de ficheiros;
* selecione **De outro projeto**;
* na lista pendente, selecione o projeto que contém os desenhos TikZ;
* selecione **dos ficheiros de saída**;
* escolha **output.pdf** e (opcionalmente) dê um nome ao ficheiro carregado.

Depois de carregado, pode aceder a figuras individuais selecionando a página apropriada do PDF carregado; por exemplo, através de um comando como:

```latex
\includegraphics[page=1]{tikzpics.pdf}
```

O [vídeo no final deste artigo](#videodemo) demonstra o carregamento de um PDF a partir de um projeto separado.

#### Como criar um projeto de gráficos separado

Use a `standalone` ou `preview` pacote para criar um projeto separado contendo os desenhos TikZ — os PDFs de saída conterão páginas recortadas de forma ajustada ao tamanho dos gráficos.

**Exemplo: pacote standalone**

Aqui está algum código de exemplo que usa o `standalone` pacote:

```latex
\documentclass[tikz]{standalone}
\begin{document}
\begin{tikzpicture}
\node[fill=yellow]{Hello!};
\end{tikzpicture}

\begin{tikzpicture}
\node[fill=pink]{World!};
\end{tikzpicture}
\end{document}
```

[Abra este exemplo no Overleaf](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=Example+of+standalone+package+and+TikZ\&snip=%5Cdocumentclass%5Btikz%5D%7Bstandalone%7D%0A%5Cbegin%7Bdocument%7D%0A%5Cbegin%7Btikzpicture%7D%0A%5Cnode%5Bfill%3Dyellow%5D%7BHello%21%7D%3B%0A%5Cend%7Btikzpicture%7D%0A%0A%5Cbegin%7Btikzpicture%7D%0A%5Cnode%5Bfill%3Dpink%5D%7BWorld%21%7D%3B%0A%5Cend%7Btikzpicture%7D%0A%5Cend%7Bdocument%7D)

Este exemplo produz a seguinte saída:

![Exemplo do pacote LaTeX standalone](/files/892c01c7d279583489dfa71e66828281a5c9ae7d)

**Exemplo: pacote preview**

Aqui está algum código de exemplo que usa o `preview` pacote:

```latex
\documentclass{article}
\usepackage[active,tightpage]{preview}
\setlength{\PreviewBorder}{0pt}
\usepackage{tikz}
\PreviewEnvironment[{[]}]{tikzpicture}
\begin{document}
\begin{tikzpicture}
\node[fill=yellow]{Hello!};
\end{tikzpicture}

\begin{tikzpicture}
\node[fill=pink]{World!};
\end{tikzpicture}
\end{document}
```

[Abra este exemplo no Overleaf](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=Example+of+the+preview+package+and+TikZ\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cusepackage%5Bactive%2Ctightpage%5D%7Bpreview%7D%0A%5Csetlength%7B%5CPreviewBorder%7D%7B0pt%7D%0A%5Cusepackage%7Btikz%7D%0A%5CPreviewEnvironment%5B%7B%5B%5D%7D%5D%7Btikzpicture%7D%0A%5Cbegin%7Bdocument%7D%0A%5Cbegin%7Btikzpicture%7D%0A%5Cnode%5Bfill%3Dyellow%5D%7BHello%21%7D%3B%0A%5Cend%7Btikzpicture%7D%0A%0A%5Cbegin%7Btikzpicture%7D%0A%5Cnode%5Bfill%3Dpink%5D%7BWorld%21%7D%3B%0A%5Cend%7Btikzpicture%7D%0A%5Cend%7Bdocument%7D)

Este exemplo produz a seguinte saída:

![Exemplo do pacote LaTeX preview](/files/5dde2dd97a7fe37329271976b35adcd417a7815f)

### Demonstração em vídeo: carregar ficheiros de outro projeto Overleaf

O vídeo seguinte demonstra como carregar um ficheiro PDF (de outro projeto Overleaf) que contém apenas gráficos — aqui, usamos o `standalone` pacote para criar o PDF contendo ilustrações baseadas em TikZ.

{% embed url="<https://videos.ctfassets.net/nrgyaltdicpt/6l4dDatlnqzIymJLofSnQP/61f8ad4b872f5a82f3cd45c487e2f101/TikzSeparateProjects.mp4>" %}


---

# 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/60-i-have-a-lot-of-tikz-matlab2tikz-or-pgfplots-figures-so-i-m-getting-a-compilation-timeout.-can-i.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.
