tikz externalize + サブファイルを使用する場合の相対パス

tikz externalize + サブファイルを使用する場合の相対パス

サブファイル パッケージを使用して一緒にコンパイルされた約 100 個の小さなファイルで構成される大きなドキュメントがあります。これらのファイルに共通のスタイル ファイルを使用できるようにするには、その相対パスがすべてのコンパイル可能なファイルから同じである必要があります。そのため、次のフォルダー構造を使用します。

Project folder

   projectstyle.sty

-- Main folder
     main.tex

-- Subfolder 1
     subfile1a.tex
     subfile1b.tex

-- Subfolder 2
     subfile2a.tex
     subfile2b.tex

そして書く

\usepackage{../projectstyle}

main.tex ファイルの先頭に、と記述します。しかし、プロジェクトが大きく、tikz ファイルも多数含まれているため、コンパイルにかなり時間がかかります。tikz/pgf パッケージの externalize コマンドを使用して、メイン ファイルのコンパイルを高速化できます。たとえば、次のように記述します。

\usetikzlibrary{external}
\tikzexternalize[prefix=tikz/] 

メインファイルの先頭に、tikzという名前のフォルダをメインフォルダに置いたので、メインファイルをコンパイルするときにはこれが機能します。しかし、サブファイルパッケージを使用する目的は、サブファイルを単独でコンパイルするときにもこれが機能するようにすることです。ここでは、グラフィックスを外部化するフォルダへの相対パスを使用し、これをスタイルファイルと同じレベルに配置して、次のように記述するのが最適です。

\tikzexternalize[prefix=../tikz/] 

しかし、これはうまくいかないようで、コンパイラ(pdflatex)は次のようにエラーを出します。

! I can't write on file `../../tikz/main-figure0.md5'.

メインファイルをコンパイルしようとすると、これを回避する方法はありますか?

解決策の一つは、次のように書くことだと私は認識しています

\tikzexternalize[prefix=tikz/]

メイン ファイル (またはスタイル ファイル) に、コンパイル可能なドキュメントを含むすべてのフォルダーに tikz という名前のフォルダーを追加しますが、その場合、各画像のコピーが 2 つ存在することになり、スペースの無駄になるようです...

答え1

本当にディスク容量だけの問題であれば (最後の段落で示したように)、tikz ディレクトリの実際のコピーの代わりにシンボリック リンクを使用できます。

関連情報