.png)
私は、cairolatex
端末を使用して、gnuplot
いくつかの表面プロットを作成しています (pgfplots
メモリ不足のため、タスクが失敗しています)。プロットの数が増えるにつれて、プロットが最新であることを確認するためにgnuplot
、コンパイルにを含めたいと思います。遅いですが、タスクを処理できると思われるパッケージtex
を見つけました。gnuplottex
大きなネストされた文書があります。Texルートには、thesis.tex
他のものとともに、以下を含めますtheory.tex
。theory.tex
\begin{figure}[htbp]
\centering
\input{gnuplot/cascade}
\input{figures/cascade}
\end{figure}
コードがgnuplot/cascade.tex
含まれている場所gnuplot
\begin{gnuplot}[terminal=cairolatex]
set samp 100;
set iso 40;
set xrange [0:1];
set yrange [0:1];
set zrange [0.8:2];
unset key;
unset colorbox;
set hidden3d front;
a = 1;
set xyplane at a;
f(x,y) = (x+y)/(2*sqrt(x*y));
set xlabel "$\\tau_I$";
set ylabel "$\\tau_D$";
set zlabel "$\\zeta$";
set output "figures/cascade.tex"
splot f(x,y) with pm3d at b, f(x,y) with lines;
unset output
\end{gnuplot}
このセットアップの出力は素晴らしいです。しかし、 で何かを変更するたびにtheory.tex
、ルーチン全体gnuplottex
が再コンパイルされます。これにはかなりの時間がかかり、非常に面倒です。
latexmk
コードが変更されていないことを認識せずにそのままにしておくのはなぜでしょうかgnuplot
? この依存関係は指定できるのでしょうか? その場合、どのようにすればよいのでしょうか?
編集:gnuplottex
は私のシステムではかなり遅いですが、gnuplot
非常に高速です。 の使用を避け、コンパイル時間が長く、 毎回再コンパイルしgnuplottex
なくて済むようにするにはどうすればよいでしょうか?gnuplottex
答え1
gnuplottex
私は に次のカスタム依存関係を追加することで の使用をまったく回避しました.latexmkrc
:
add_cus_dep('gnu','tex', 0, 'makegnu2tex');
sub makegnu2tex {
system("gnuplot \"$_[0].gnu\"") ;
}
私のgnuplot
ファイルはcairolatex
ターミナル (またはファイルを生成するその他のターミナル.tex
) を使用します。私のlatex
ドキュメントには\input{gnuplot_output.tex}
、新しく定義された依存関係のため、コンパイルgnuplot
時にシステム コールが発生するものが含まれていますtex
。.gnu
ファイルと.tex
ファイルは、通常の依存関係になり、gnuplot
タイム スタンプが変更されない限り再コンパイルされません。
システム コールが によって誘導される限り、set output "path/gnuplot_output.tex"
ファイルで指定されたパスは.gnu
ファイルに対して相対的であることに注意することが重要です。tex root
gnuplot
latexmk
答え2
私が現在使用している解決策は、gnuplottex
しばらく前に見つけた解決策を修正したものです(SVG 画像を LaTeX に含める方法) を使用して SVG を組み込みます (必要に応じて Inkscape が自動的に呼び出されます)。
\newcommand{\executeiffilenewer}[3]{%
\ifnum\pdfstrcmp{\pdffilemoddate{#1}}%
{\pdffilemoddate{#2}}>0%
{\immediate\write18{#3}}\fi%
}
\newcommand{\includegp}[2]{%
\executeiffilenewer{#1#2.gp}{tmp/img/#2.tex}%
{gnuplot #1#2.gp}%
\import{tmp/img/}{#2.tex}%
}
私は gnuplot ファイルをサブフォルダ (例: ) に保存しておりimg/ch01/foo.gp
、すべての一時ファイルを に保存しtmp/
、すべての一時画像ファイルを に保存していますtmp/img/
( git
tex ファイルを追跡するために使用していますが、派生ファイル ( にあるファイルなど) を追跡したくないためtmp/
)。gnuplot ファイルは次のようにドキュメントに埋め込むことができます。
\begin{figure}
\centering
\includegp{img/ch01/}{foo}
\end{figure}
これを機能させるには、および オプションを使用しmiktex-pdftex.exe
て を呼び出します。さらに、gnuplot バイナリを含むフォルダーは PATH 変数内にあるか、または私の場合は TeXworks 設定 (例) で設定されている必要があります。TeXworks
-aux-directory=tmp
-shell-escape
D:/gnuplot/bin