Gnuplottex: latex 명령을 gnuplot 스크립트에 전달

Gnuplottex: latex 명령을 gnuplot 스크립트에 전달

다음을 사용하여 다른 LaTeX 문서(종이 및 비머 프레젠테이션)에서 동일한 데이터에 액세스하고 플롯하고 싶습니다.gnuplottex. 데이터와 gnuplot 스크립트는 두 문서를 기준으로 개별 위치에 저장됩니다. 가능한 한 많은 코드를 재사용하기 위해 각 문서의 데이터에 대한 상대 경로를 매크로로 정의하고 싶습니다 \datapath.

내 질문은: 이 명령의 값을 gnuplot 스크립트에 어떻게 전달할 수 있습니까? 기본적으로 MWE에서 다음을 사용하고 싶습니다.

plot \datapath'/data.csv' using 1:2 with lines

나는 찾았다이 스레드. 그러나 나는 그것을 내 필요에 맞게 수정할 수 없었습니다. 누군가 나를 도와줄 수 있나요?


MWE

\documentclass{article}

\usepackage[latin1]{inputenx}
\usepackage{filecontents}
\usepackage[
  miktex,    % 
  subfolder, % generated graphs in a ”gnuplottex” subfolder
  cleanup,   % Delete the .gnuplot files after conversion
]{gnuplottex}

\newcommand{\datapath}{./ZZZ}

\begin{document}

% This is the data file to be plotted from
\begin{filecontents*}{\datapath/data.csv}
Col1,Col2
0,0
1,1
\end{filecontents*}

% This is the gnuplot script I would like to use the value of \datapath in
\begin{filecontents*}{\datapath/script.gnuplot}
set key autotitle columnhead
set datafile separator "," # for csv-file
plot './ZZZ/data.csv' using 1:2 with lines
\end{filecontents*}

\begin{figure}[htbp]
\centering
\gnuplotloadfile[terminal=cairolatex]{\datapath/script.gnuplot}
\end{figure}

\end{document}

답변1

\immediate\write다음 대신 에 이를 수행할 수 있습니다 filecontents*.

\newwrite\tempfile

\immediate\openout\tempfile=\datapath/script.gnuplot
\immediate\write\tempfile{set key autotitle columnhead; 
set datafile separator ","; 
plot '\datapath/data.csv' using 1:2 with lines}
\immediate\closeout\tempfile

관련 정보