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\write
anstelle 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