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

# tikz、matlab2tikz、またはpgfplotsの図がたくさんあるため、コンパイルがタイムアウトしてしまいます。e

## TikZグラフィックスを外部化する方法

TikZの [という名前のライブラリ `external`](https://tikz.dev/library-external) TikZの図をPDFファイルとして作成し、保存（キャッシュ）するためのもので、この処理はしばしば「*外部化*」。

次のようにしてライブラリを読み込みます： `\usetikzlibrary{external}`、次にコマンドを使って外部化を有効化します `\tikzexternalize`:

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

ここで `<options>` は、を設定するために使われる、オプションのパラメータ（キーと値の組）の一覧です `external` ライブラリです。

* **注意**：OverleafでTikZの外部化を機能させるには、 `\tikzexternalize` コマンド ***必要があります*** プロジェクトのメインの `.tex` ファイル内のキーと一致するすべての項目を探します。

では、から再現した図を使う基本的な例を見てみましょう [TikZドキュメント](https://tikz.dev/library-external):

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

\begin{document}
% このTikZ図は次に書き出されます
% 'output-figure0.pdf' というファイル
% 'tikz' フォルダー内に
\begin{tikzpicture}

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

\end{tikzpicture}

\end{document}
```

この例を試すには、  [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=)

この例のコードでは次のオプションを使っています： `prefix=tikz/` と `\tikzexternalize`:

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

このオプション `prefix=tikz/` はフォルダー名を指定します（ここでは `tikz`）を、生成された（外部化された）図のキャッシュに使います。これはプロジェクト内で手動で作成する必要があります。ただし、LaTeX（TikZコード）がそのフォルダーに書き込めるようにするには、フォルダー内にファイルが1つ必要です。ダミーファイルでかまいません。たとえば、空のテキストファイル `foo.txt` を `tikz` フォルダーに追加できます。

Overleafでは、外部化されたTikZのPDFグラフィックスは生成された出力ファイルとして扱われるため、プロジェクトの表示ファイル一覧には現れません。ファイル自体はプロジェクト内に存在しますが、表示されていないだけです。 [生成済みファイル](/latex/ja/narejjibsu/150-view-generated-files.md) 一覧を表示して確認できます。

以下の短い動画では、上の例のコンパイルをまとめて説明し、TikZによって生成されたファイル一覧へのアクセス方法を示しています：

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

## いくつかの注意点

TikZグラフィックスの外部化は、基盤となるTeXエンジン（pdfTeX、XeTeX、LuaTeXなど）にとって計算負荷が高くなることがあるため、 `external` このライブラリには、その処理を「最適化」するためのオプションがあります。最適化を有効にすると、TikZは一部の複雑で（コストの高い）しかもTikZにとっては必須ではないコマンドを「無視」することで負荷を減らそうとします。これは、それらを（その場で）再定義することによって行われます。さらに、他のパッケージの一部のコマンドは外部化モードでエラーを引き起こすことがあります。たとえば、 `\includepdf` の `pdfpages` パッケージのものです。その場合は、そのようなコマンドを「最適化して除外」する必要があります：

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

## 外部化する複雑なグラフィックが多すぎます！

グラフィックが複雑だったり数が多かったりすると、Overleafで [コンパイルタイムアウト](/latex/ja/narejjibsu/038-fixing-and-preventing-compile-timeouts.md#compiletimeout) に初回コンパイル時に遭遇する可能性が高くなります。これは、外部化されたファイルが生成されるためです。この節では、コンパイルタイムアウトを避けるためのいくつかの回避策を紹介します。

### 段階的にビルドする

プロジェクトを段階的にビルドするには、 [コメントアウトして](https://ctan.org/pkg/comment?lang=en) プロジェクトの各部分を分けて進めるとよいかもしれません。ただし、生成されたファイルはすべてサーバー上で一定間隔でガベージコレクションされることを覚えておいてください。そのため、次回ログインしたときにプロジェクトがコンパイルできなくなる場合があり、その際は再び段階的にすべて再生成する必要があります。

### 図をローカルで生成する

* **注**：この節では、プロジェクトが `\tikzexternalize[prefix=tikz/]` という名前のフォルダーに生成されたグラフィックをキャッシュするために `tikz`.

回避策として、 [Overleafプロジェクトをダウンロードし](/latex/ja/narejjibsu/036-exporting-your-work-from-overleaf.md) 、ローカル環境でコンパイルしてグラフィックファイルを外部化（生成）します。コンパイルが終わったら、 `tikz` フォルダーには、各生成グラフィックに対応する複数の種類のファイルが含まれているはずです。たとえば、 `*somegraphic*.pdf`, `*somegraphic*.md5` や `*somegraphic*.dpth`。それらのファイルをOverleafプロジェクトの `tikz` フォルダーにアップロードすると、コンパイル時にそれらが使われます。これでかなり高速になるはずです。これらのファイルはアップロードされたものであって生成されたものではないため、サーバーによって削除されることはありません。アップロードされたファイルはガベージコレクションの対象になりません。

* **注意（グラフィックファイル名）**：Overleafは `\jobname` から `出力`を設定しており、これが外部化された（生成された）TikZグラフィックの名前に影響します。既定では、生成されるグラフィックファイルは次のように命名されます。 `output-figureN.EXT` ここで
  * `N` は、グラフィックが現れる順序から導かれる整数です（`N`=0, 1, 2, ...);
  * `EXT` は、TikZで使用される拡張子の1つで、次のものが含まれます： `pdf`, `md5` や `dpth` （または `log`).
* **注意点**：グラフィックファイルをアップロードしたあとで、その後プロジェクト内のTikZコードを変更した場合は、Overleafが新しい版を生成して使えるように、 `tikz` フォルダー内の対応するグラフィックファイルを削除する必要がある場合があります。あるいは、ローカル環境でファイルを再生成してOverleafに再アップロードしてもかまいません。次のすべてを置き換える必要があることを忘れないでください： `.pdf`, `.md5` や `.dpth` その特定のTikZ図に対応するファイルです。

### 別プロジェクトで図を生成する

別の方法として、TikZ図だけを含むグラフィック専用の別プロジェクトを作成する方法があります。図が完成したら、その別プロジェクトのPDFを次の手順でメインプロジェクトにアップロードできます：

* ファイルをアップロードアイコン（![Overleaf file upload icon](/files/f578eeca91851f0cb1aebec83f12b1c799fc8c51)）をファイル一覧パネルの上でクリックします；
* 選択し **別のプロジェクトから**;
* ドロップダウンリストからTikZ図を含むプロジェクトを選択し、
* 選択し **出力ファイルから**;
* 選び **output.pdf** を選択し、（必要に応じて）アップロードするファイルに名前を付けます。

アップロード後は、PDFの適切なページを選択することで個々の図にアクセスできます。たとえば、次のようなコマンドを使います：

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

この [この記事末尾の動画](#videodemo) は、別プロジェクトからPDFをアップロードする方法を示しています。

#### 別のグラフィックプロジェクトを作成する方法

次の `standalone` または `preview` パッケージを使って、TikZ図を含む別プロジェクトを作成します。出力されるPDFには、グラフィックのサイズにぴったり合うように切り詰められたページが含まれます。

**例：standaloneパッケージ**

以下は、 `standalone` パッケージを使ったサンプルコードです：

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

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

&#x20;[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)

この例では次の出力が生成されます:

![standalone LaTeXパッケージの例](/files/505d50174fb65417deacd04e92c7098d586db5ae)

**例：previewパッケージ**

以下は、 `preview` パッケージを使ったサンプルコードです：

```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}
```

&#x20;[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)

この例では次の出力が生成されます:

![preview LaTeXパッケージの例](/files/a05bc44b0cc4adf6beb314f79e49a6f093ea03a3)

### 動画デモ：別のOverleafプロジェクトからファイルをアップロードする

以下の動画では、グラフィックのみを含むPDFファイル（別のOverleafプロジェクトから）をアップロードする方法を示します。ここでは、 `standalone` パッケージを使って、TikZベースの図版を含むPDFを作成します。

{% 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/ja/to-2/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.
