Gnuplottex: Übergeben Sie den Latex-Befehl an das Gnuplot-Skript

Gnuplottex: Übergeben Sie den Latex-Befehl an das Gnuplot-Skript

Ich möchte auf dieselben Daten aus verschiedenen LaTeX-Dokumenten (einem Papier und einer Beamer-Präsentation) zugreifen und sie darstellen, und zwar mitgnuplottex. Die Daten und das Gnuplot-Skript werden an einer individuellen Position relativ zu den beiden Dokumenten gespeichert. Um so viel Code wie möglich wiederzuverwenden, möchte ich den relativen Pfad zu den Daten in jedem Dokument in einem Makro definieren, hier \datapath.

Meine Frage ist: Wie kann ich den Wert dieses Befehls an das Gnuplot-Skript übergeben? Ich möchte grundsätzlich Folgendes in meinem MWE verwenden:

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

Ich fanddieser Thread. Ich konnte es jedoch nicht an meine Bedürfnisse anpassen. Kann mir bitte jemand helfen?


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}

Antwort1

Sie können es mit \immediate\writeanstelle von tun 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

verwandte Informationen