
일부 표면 플롯을 생성하기 위해 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
얼마 전에 찾은 솔루션을 수정한 것입니다(LaTeX에 SVG 이미지를 포함하는 방법) 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
두는 것을 좋아합니다 . 왜냐하면 저는 tex 파일을 추적하는 데 사용하지만 파생된 파일(예: 에 있는 파일)을 추적하고 싶지 않기 때문입니다. ). 그런 다음 gnuplot 파일을 다음과 같이 문서에 포함할 수 있습니다.tmp/
tmp/img/
git
tmp/
\begin{figure}
\centering
\includegp{img/ch01/}{foo}
\end{figure}
이것이 작동하려면 및 옵션을 사용 miktex-pdftex.exe
하여 호출합니다 . 추가적으로, gnuplot 바이너리가 포함된 폴더는 PATH 변수에 있거나 제 경우에는 TeXworks 설정(예: )에 설정되어 있어야 합니다.TeXworks
-aux-directory=tmp
-shell-escape
D:/gnuplot/bin