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

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

もう 1 つの方法は、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}
```

[この例を 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}
```

[この例を 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://ayakaleaf-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.
