Gnuplottex: Passe o comando latex para o script gnuplot

Gnuplottex: Passe o comando latex para o script gnuplot

Quero acessar e plotar os mesmos dados de diferentes documentos LaTeX (uma apresentação em papel e uma apresentação em beamer) usandognuplottex. Os dados e o script gnuplot são armazenados em alguma posição individual em relação aos dois documentos. Para reutilizar o máximo de código possível, gostaria de definir o caminho relativo para os dados em cada documento em uma macro, aqui \datapath.

Minha dúvida é: Como posso passar o valor deste comando para o script gnuplot? Eu basicamente gostaria de usar o seguinte no meu MWE:

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

eu encontreieste tópico. No entanto, não consegui modificá-lo de acordo com minhas necessidades. Alguém pode me ajudar, por favor?


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}

Responder1

Você pode fazer isso em \immediate\writevez de 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

informação relacionada