% \iffalse meta-comment
%
% Copyright (c) 2006-2015, Lars Kotthoff <lars@larsko.org> and contributors
%
% Large portions copied from pdftex,
% Copyright (c) 2001-3, Radhakrishnan CV <cvr@river-valley.com>
%                       Rajagopal CV <cvr3@river-valley.com>
%                       http://www.river-valley.com
%
% River Valley Technologies, Floor III, SJP Buildings, Cotton Hills
% Trivandrum, India 695014
%
% Tel: +91 471 233 7501
%
%                     Antoine Chambert-Loir 
%                     <chambert@math.polytechnique.fr>
%                     http://www.math.polytechnique.fr/~chambert
%
% Ecole polytechnique, Palaiseau Cedex, France
%
% This program is free software; you can redistribute it and/or
% modify it under the terms of the GNU General Public License
% as published by the Free Software Foundation; either version 2
% of the License, or (at your option) any later version.
%
% This program is distributed in the hope that it will be useful,
% but WITHOUT ANY WARRANTY; without even the implied warranty of
% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
% GNU General Public License for more details.
% 
% You should have received a copy of the GNU General Public License
% along with this program (gpl.txt); if not, write to the Free
% Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
% MA  02111-1307, USA.
%
% \fi
%
% \iffalse
%<*driver>
\ProvidesFile{gnuplottex.dtx}
%</driver>
%<package> \NeedsTeXFormat{LaTeX2e}[1999/12/01]
%<package> \ProvidesPackage{gnuplottex}
%<*package>
    [2020/03/19 v0.9.5 gnuplot graphs in LaTeX]
\RequirePackage{graphicx,moreverb,keyval,ifthen,catchfile}
%</package>
%
%<*driver>
\documentclass{ltxdoc}
% \iffalse
%<*example>
\usepackage{xcolor,epstopdf,siunitx,eepic,epic,eepicemu,gnuplot-lua-tikz}
% \fi
% \iffalse
%</example>
% \fi
\usepackage[siunitx]{gnuplottex}
\EnableCrossrefs
\CodelineIndex
\RecordChanges
\begin{document}
    \DocInput{gnuplottex.dtx}
    \PrintChanges
    \PrintIndex
\end{document}
%</driver>                                                       
% \fi
%
% \CheckSum{465}
%
% \CharacterTable                                                
%  {Upper-case    \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
%   Lower-case    \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
%   Digits        \0\1\2\3\4\5\6\7\8\9
%   Exclamation   \!     Double quote  \"     Hash (number) \#
%   Dollar        \$     Percent       \%     Ampersand     \&
%   Acute accent  \'     Left paren    \(     Right paren   \)
%   Asterisk      \*     Plus          \+     Comma         \,
%   Minus         \-     Point         \.     Solidus       \/
%   Colon         \:     Semicolon     \;     Less than     \<
%   Equals        \=     Greater than  \>     Question mark \?
%   Commercial at \@     Left bracket  \[     Backslash     \\
%   Right bracket \]     Circumflex    \^     Underscore    \_
%   Grave accent  \`     Left brace    \{     Vertical bar  \|
%   Right brace   \}     Tilde         \~}
%
%
% \changes{v0.1}{2006/04/02}{Initial version.}
% \changes{v0.2}{2006/10/28}{Changed gnuplot output to LaTeX, simplified code.}
% \changes{v0.3}{2007/08/21}{Improved MikTeX compatibility.}
% \changes{v0.4}{2007/09/28}{Added feature to specify gnuplot terminal.}
% \changes{v0.4.1}{2007/10/06}{Improved gnuplot terminal handling.}
% \changes{v0.4.2}{2007/10/13}{Added terminaloptions option.}
% \changes{v0.4.3}{2011/04/16}{Fixed terminaloptions example (Philip Vetter).}
% \changes{v0.4.4}{2011/09/11}{Fixed "Undefined control sequence" error (sdaau).}
% \changes{v0.4.5}{2012/10/02}{Add support for cairolatex terminal (Mika Pfl\"uger).}
% \changes{v0.4.6}{2013/04/14}{Fix bug with temporary file creation in LuaTeX (Henri Menke).}
% \changes{v0.5}{2013/06/03}{Provide command to include gnuplot code in file verbatim (Michel Vo\ss{}kuhle).}
% \changes{v0.6}{2013/06/28}{Support for \texttt{siunitx} package and tikz terminal (Udo H\"ofel).}
% \changes{v0.7}{2013/07/23}{Add cleanup and subfolder option (Udo H\"ofel).}
% \changes{v0.7.1}{2013/09/08}{Fix bug with subfolder option with MikTeX (Thomas Schmid).}
% \changes{v0.7.2}{2013/11/16}{Allow to specify path to gnuplot (Manuel Solano).}
% \changes{v0.8}{2013/11/24}{Extended Documentation.}
% \changes{v0.8.1}{2013/12/29}{Extended Documentation.}
% \changes{v0.9}{2015/12/08}{Show any errors during conversion on Unix (Enrico Gregorio, suggested by Udo H\"ofel).}
% \changes{v0.9.1}{2015/12/13}{Fix bug in error gathering introduced in 0.9.}
% \changes{v0.9.2}{2016/08/21}{Misc bugfixes (thanks fostermaier, Enrico Gregorio, Jan-Benedict Glaw).}
% \changes{v0.9.3}{2019/09/22}{Whitespace fixes (thanks Johannes Hielscher).}
% \changes{v0.9.4}{2019/12/22}{Whitespace fixes (thanks Johannes Hielscher).}
% \changes{v0.9.5}{2020/03/19}{Make subfolder creation test conditional on shell escape being enabled (thanks Alex Serenko).}
%
% \GetFileInfo{gnuplottex.dtx}
%
% \DoNotIndex{\the,\year,\month,\day,\time}
%
% \title{The \textsf{gnuplottex} package\thanks{This document
%   corresponds to \textsf{gnuplottex}~\fileversion, dated \filedate.}}
% \author{Lars Kotthoff\hspace{0.05em}\thanks{\texttt{lars@larsko.org}}, Udo H\"ofel\thanks{\texttt{udo.hoefel@ipp.mpg.de}} and more contributors }
%
% \maketitle
%
% \section{Introduction}
%
% This package allows you to include gnuplot graphs in your \LaTeX{} documents.
%
% The gnuplot code is extracted from the document and written to
% \texttt{.gnuplot} files. Then, if shell escape is used, the graph files are
% automatically processed to graphics or \LaTeX{} code files which will then be
% included in the document.
% If shell escape isn't used, the user will have to manually convert
% the files by running gnuplot on the extracted \texttt{.gnuplot} files.
%
% Shell escape is available in the web2c \TeX{} compiler, it allows the execution
% of shell code during the compilation of a \TeX{} document. It's disabled by
% default, you'll have to edit your configuration files or give the
% \texttt{-shell-escape} option to \texttt{latex}.
%
% The package also allows you to include gnuplot code in a file verbatim,
% generating and including the plot automatically.
%
% If you find a bug, please open an issue at
% \url{https://github.com/larskotthoff/gnuplottex/issues}.
%
% \section{Requirements}
%
% To use gnuplottex, you'll need the \texttt{graphicx}, \texttt{latexsym},
% \texttt{keyval}, \texttt{ifthen}, and \texttt{moreverb} packages and, of
% course, gnuplot.
% If you want to use tikz-terminal you also have to use the \texttt{gnuplot-lua-tikz}-package from gnuplot.
% If you want to use the \texttt{eepic}-terminal, you'll need the \texttt{eepic}-, the \texttt{epic}- and (if you're not using dvips or dvipdfm) the \texttt{eepicemu}-package.
% If you use beamer, be aware that you have to call the frame with \texttt{\textbackslash begin\{frame\}[fragile]}.
%
% \section{Usage}
%
% To load the package, simply write \verb=\usepackage{gnuplottex}= in your document
% preamble. Options that can be passed to the package are
% \begin{description}
%     \item[\oarg{shell}] Use shell escape to automatically generate the graphs
%     from the gnuplot source files. This is the default. Normally, you don't
%     need to specify this option.
%     \item[\oarg{noshell}] Don't use shell escape, graphs must be generated
%     manually.
%     \item[\oarg{miktex}] We're using mikTeX.
%     \item[\oarg{siunitx}] Use \texttt{siunitx} to typeset numbers in the
%     graphs. You need to load the \texttt{siunitx} package before
%     \texttt{gnuplottex} for this to work. If the gnuplot terminal does not
%     support \TeX, a warning will be given and the functionality not used.
%     \item[\oarg{subfolder}] Put the generated graphs in a "gnuplottex"
%     subfolder, which will be created automatically.
%     \item[\oarg{cleanup}] Delete the \texttt{.gnuplot} files after conversion.
% \end{description}
%
% In addition, you can set \verb=\gnuplotexe= to the path to the gnuplot
% executable. Normally, you don't need to do this; use this option only if
% \LaTeX{} doesn't find gnuplot. For example:\\
% \verb=\def\gnuplotexe{/opt/local/bin/gnuplot}=
%
% The following environment can be used to include graphs:
%
% \DescribeEnv{gnuplot}
% Within this environment, you can specify arbitrary gnuplot code, for example\\
% \texttt{plot sin(x)}.\\
% The code necessary to write the plot to a file will be inserted by this
% package. It adds 'set terminal \meta{terminal}' and the name of the output file.
% The terminal can be specified by the user and defaults to \texttt{latex}. It may
% be set to anything supported by gnuplot. If set to a terminal which produces
% \TeX{} output, such as latex, tex, epslatex, or pstricks, the file processed
% by gnuplot will be included with the \verb=\include= command, else the
% \verb=\includegraphics= command is used. The file extension of the
% intermediate file is in some cases different from the terminal name, this is
% taken care of for most common terminals in the package code. If graphics
% inclusion fails for a specific terminal, the intermediate file extension may
% be the cause.
%
% The terminal name can be specified as
% a value to the key \texttt{terminal} as an argument to the environment,\\
% \verb=\begin{gnuplot}=[terminal=\meta{terminal}]\\
% \ldots\\
% \verb=\end{gnuplot}=
%
% The graph can be scaled by providing an argument to the \texttt{scale} key,
% similar to the specification of the terminal name. It defaults to 1, i.e.\ no
% scaling will be done. Additional options to the terminal can be given as
% argument to the \texttt{terminaloptions} key, e.g.\\
% \verb=\begin{gnuplot}=[terminal=pdf,terminaloptions={font ",10" linewidth 3}]\\
% \ldots\\
% \verb=\end{gnuplot}=
%
% \DescribeMacro{\gnuplotloadfile}
% In addition to the environment, you can use the command
% \verb=\gnuplotloadfile= to directly include gnuplot source code. It accepts
% the same options as the environment, e.g.\\
% \verb+\gnuplotloadfile[terminal=pdf]{example.gnuplot}+
%
%\section{Examples}
% Here are short examples of each possible terminal.
%
%	\DescribeMacro{latex} 
% This is a terminal that offers only basic support, as you won't be able to (easily) use colours. For an example see figure~\ref{pic:latex}.
%
% An advantage of this terminal is that it only relies on the picture-environment (which should be supported widely).
% Furthermore you can use the \texttt{siunitx}-option to get correct axis labeling and you can use \LaTeX{} commands.
%
% On the other hand, if you have multiple things to plot, it'll be hard to distinguish them, as you can't use colours (and the dash patterns are hard to distinguish).
% As this is something which should be avoided, especially for scientific work, if possible, you should try another terminal.
% \iffalse
%<*example>
% \fi
\begin{figure}%
	\centering%
	\begin{gnuplot}[terminal=latex, terminaloptions=rotate]
		set key box top left
		set key width 4
		set sample 1000
		set xr [-5:5]
		set yr [-1:1]
		set xlabel '$x$-label'
		set ylabel '$y$-label'
		plot 	sin(x) w l lc 1 t '$\sin(x)$',\
					cos(x) w l lc 2 t '$\cos(x)$',\
					tan(x) w l lc 3 t '$\tan(x)$',\
					tanh(x) w l lc 4 t '$\tanh(x)$'
	\end{gnuplot}
	\caption{This is a simple example using the \texttt{latex}-terminal.}%
	\label{pic:latex}%
\end{figure}%
% \iffalse
%</example>
% \fi
%The source code for figure~\ref{pic:latex} is:\\
%\verb+\begin{figure}%+\\
%\verb+   \centering%+\\
%\verb+   \begin{gnuplot}[terminal=latex, terminaloptions=rotate]+\\
%\verb+      set key box top left+\\
%\verb+      set key width 4+\\
%\verb+      set sample 1000+\\
%\verb+      set xr [-5:5]+\\
%\verb+      set yr [-1:1]+\\
%\verb+      set xlabel '$x$-label'+\\
%\verb+      set ylabel '$y$-label'+\\
%\verb+      plot 	sin(x) w l lc 1 t '$\sin(x)$',\+\\
%\verb+            cos(x) w l lc 2 t '$\cos(x)$',\+\\
%\verb+            tan(x) w l lc 3 t '$\tan(x)$',\+\\
%\verb+            tanh(x) w l lc 4 t '$\tanh(x)$'+\\
%\verb+   \end{gnuplot}+\\
%\verb+   \caption{This is a simple example using the latex-terminal.}%+\\
%\verb+   \label{pic:latex}%+\\
%\verb+\end{figure}%+\\
%
%	\DescribeMacro{epslatex} 
% This terminal produces high-quality output, you also can use the \texttt{siunitx}-option for axis labeling and the usual \LaTeX{} commands.
%
% There are rare examples where one sees flaws, like two lines not completely adhering (see e.g. some parts of the red line in figure~\ref{pic:epslatex}).
% You have to use the \texttt{epstopdf}-package to use this terminal with pdf\TeX.
%
% If you're using pdf\TeX{} this or the \texttt{cairolatex}-terminal should be the terminals you use.
% Your pdf viewer can slow down dramatically, if you use high resolution 3d plots though, but there are seldom real problems.
% For an example see figure~\ref{pic:epslatex}.
%
% \iffalse
%<*example>
% \fi
\begin{figure}%
	\centering%
	\begin{gnuplot}[terminal=epslatex, terminaloptions=color dashed]
		set key box top left
		set key width 2
		set key opaque
		set sample 1000
		set xr [-5:5]
		set yr [-1:1]
		set xlabel '$x$-label'
		set ylabel '$y$-label'
		plot 	sin(x) w l lc 1 lw 3 t '$\sin(x)$',\
					cos(x) w l lc 7 lw 3 t '$\cos(x)$',\
					tan(x) w l lc 3 lw 3 t '$\tan(x)$',\
					tanh(x) w l lc 4 lw 3 t '$\tanh(x)$'
	\end{gnuplot}
	\caption{This is a simple example using the \texttt{epslatex}-terminal.}%
	\label{pic:epslatex}%
\end{figure}%
% \iffalse
%</example>
% \fi
%
%Its code is:\\
%~\\
%\verb+\begin{figure}%+\\
%\verb+   \centering%+\\
%\verb+   \begin{gnuplot}[terminal=epslatex, terminaloptions=color dashed]+\\
%\verb+      set key box top left+\\
%\verb+      set key width 2+\\
%\verb+      set key opaque+\\
%\verb+      set sample 1000+\\
%\verb+      set xr [-5:5]+\\
%\verb+      set yr [-1:1]+\\
%\verb+      set xlabel '$x$-label'+\\
%\verb+      set ylabel '$y$-label'+\\
%\verb+      plot  sin(x) w l lc 1 lw 3 t '$\sin(x)$',\+\\
%\verb+            cos(x) w l lc 2 lw 3 t '$\cos(x)$',\+\\
%\verb+            tan(x) w l lc 3 lw 3 t '$\tan(x)$',\+\\
%\verb+            tanh(x) w l lc 4 lw 3 t '$\tanh(x)$'+\\
%\verb+   \end{gnuplot}+\\
%\verb+   \caption{This is a simple example using the epslatex-terminal.}%+\\
%\verb+   \label{pic:epslatex}%+\\
%\verb+\end{figure}%+\\
%
%	\DescribeMacro{jpeg} 
% This is a terminal that offers (compared with other terminals) poor raster graphics output.
% If possible switch to another terminal (preferably to the \texttt{cairolatex}-, the \texttt{epslatex}- or the \texttt{tikz}-terminal)
% For an example see figure~\ref{pic:jpeg}.
%
% There are quite some disadvantages, as you cannot use \LaTeX{} commands, it is hard to get the right font and the right font size, the \texttt{siunitx} option is useless, no vector graphics and there seems to be no support for dashed lines.
%
% \iffalse
%<*example>
% \fi
\begin{figure}%
	\centering%
	\begin{gnuplot}[terminal=jpeg, terminaloptions=crop]
		set key box top left
		set key width -2
		set key opaque
		set sample 1000
		set xr [-5:5]
		set yr [-1:1]
		set size 0.7,0.7
		set xlabel '$x$-label'
		set ylabel '$y$-label'
		plot 	sin(x) w l lc 1 lw 2 t '$\sin(x)$',\
					cos(x) w l lc 7 lw 2 t '$\cos(x)$',\
					tan(x) w l lc 3 lw 2 t '$\tan(x)$',\
					tanh(x) w l ls 8 lc 4 lw 2 t '$\tanh(x)$'
	\end{gnuplot}
	\caption{This is a simple example using the \texttt{jpeg}-terminal.}%
	\label{pic:jpeg}%
\end{figure}%
% \iffalse
%</example>
% \fi
%
%Its code is:\\
%~\\
%\verb+\begin{figure}%+\\
%\verb+   \centering%+\\
%\verb+   \begin{gnuplot}[terminal=jpeg, terminaloptions=crop]+\\
%\verb+      set key box top left+\\
%\verb+      set key width -2+\\
%\verb+      set key opaque+\\
%\verb+      set sample 1000+\\
%\verb+      set xr [-5:5]+\\
%\verb+      set yr [-1:1]+\\
%\verb+      set size 0.7,0.7+\\
%\verb+      set xlabel '$x$-label'+\\
%\verb+      set ylabel '$y$-label'+\\
%\verb+      plot  sin(x) w l lc 1 lw 3 t '$\sin(x)$',\+\\
%\verb+            cos(x) w l lc 2 lw 3 t '$\cos(x)$',\+\\
%\verb+            tan(x) w l lc 3 lw 3 t '$\tan(x)$',\+\\
%\verb+            tanh(x) w l lc 4 lw 3 t '$\tanh(x)$'+\\
%\verb+   \end{gnuplot}+\\
%\verb+   \caption{This is a simple example using the jpeg-terminal.}%+\\
%\verb+   \label{pic:jpeg}%+\\
%\verb+\end{figure}%+\\
%
%	\DescribeMacro{cairolatex} 
% This is a terminal that offers high-quality output.
% Unlike the \texttt{epslatex}-terminal it will generate \emph{directly} pdf output.
% It allows the use of the \texttt{siunitx} option as well as \LaTeX{} commands.
% If you're using pdf\TeX{} this or the \texttt{epslatex}-terminal should be the terminals you use.
% \texttt{cairolatex} has the advantage of not needing the \texttt{epstopdf}-package.
% Your pdf viewer can slow down dramatically, if you use high resolution 3d plots though, but there are seldom real problems.
% For an example see figure~\ref{pic:cairolatex}.
%
% \iffalse
%<*example>
% \fi
\begin{figure}%
	\centering%
	\begin{gnuplot}[terminal=cairolatex, terminaloptions=color dashed]
		set key box top left
		set key width 4
		set key height 0.25
		set key spacing 1.2
		set key opaque
		set sample 1000
		set xr [-5:5]
		set yr [-1:1]
		set xlabel '$x$-label'
		set ylabel '$y$-label'
		plot 	sin(x) w l lc 1 lw 3 t '$\sin(x)$',\
					cos(x) w l lc 7 lw 3 t '$\cos(x)$',\
					tan(x) w l lc 3 lw 3 t '$\tan(x)$',\
					tanh(x) w l lc 4 lw 3 t '$\tanh(x)$'
	\end{gnuplot}
	\caption{This is a simple example using the \texttt{cairolatex}-terminal.}%
	\label{pic:cairolatex}%
\end{figure}%
% \iffalse
%</example>
% \fi
%
%Its code is:\\
%~\\
%\verb+\begin{figure}%+\\
%\verb+   \centering%+\\
%\verb+   \begin{gnuplot}[terminal=epslatex, terminaloptions=color dashed]+\\
%\verb+      set key box top left+\\
%\verb+      set key width 4+\\
%\verb+      set key height 0.25+\\
%\verb+      set key spacing 1.2+\\
%\verb+      set key opaque+\\
%\verb+      set sample 1000+\\
%\verb+      set xr [-5:5]+\\
%\verb+      set yr [-1:1]+\\
%\verb+      set xlabel '$x$-label'+\\
%\verb+      set ylabel '$y$-label'+\\
%\verb+      plot 	sin(x) w l lc 1 lw 3 t '$\sin(x)$',\+\\
%\verb+            cos(x) w l lc 7 lw 3 t '$\cos(x)$',\+\\
%\verb+            tan(x) w l lc 3 lw 3 t '$\tan(x)$',\+\\
%\verb+            tanh(x) w l lc 4 lw 3 t '$\tanh(x)$'+\\
%\verb+   \end{gnuplot}+\\
%\verb+   \caption{This is a simple example using the cairolatex-terminal.}%+\\
%\verb+   \label{pic:cairolatex}%+\\
%\verb+\end{figure}%+\\
%
%	\DescribeMacro{eepic} 
% This is a terminal that offers better output than the \texttt{latex}-terminal, but it is quite worse compared to \texttt{epslatex/cairolatex/tikz}-terminal.
% You can use the \texttt{siunitx} option as well as \LaTeX{} commands.
%
% It seems one can use either coloured or dashed lines, not both combined.
% The lines are also pretty ugly and there is no \verb+set key opaque+-option in \texttt{gnuplot} available.
%
% For an example see figure~\ref{pic:eepic}.
% Avoid if possible.
% There are better terminals available.
%
% \iffalse
%<*example>
% \fi
\begin{figure}%
	\centering%
	\begin{gnuplot}[terminal=eepic, terminaloptions = color rotate]
		set key box top left
	  set key width -3
		set sample 1000
		set xr [-5:5]
		set yr [-1:1]
		set xlabel '$x$-label'
		set ylabel '$y$-label'
		plot 	sin(x) w l lc 1 lw 3 t '$\sin(x)$',\
					cos(x) w l lc 2 lw 3 t '$\cos(x)$',\
					tan(x) w l lc 3 lw 3 t '$\tan(x)$',\
					tanh(x) w l lc 4 lw 3 t '$\tanh(x)$'
	\end{gnuplot}
	\caption{This is a simple example using the \texttt{eepic}-terminal.}%
	\label{pic:eepic}%
\end{figure}%
% \iffalse
%</example>
% \fi
%Its code is:\\
%~\\
%\verb+\begin{figure}%+\\
%\verb+   \centering%+\\
%\verb+   \begin{gnuplot}[terminal=eepic, terminaloptions = color rotate]+\\
%\verb+      set key box top left+\\
%\verb+      #set key width -3+\\
%\verb+      set sample 1000+\\
%\verb+      set xr [-5:5]+\\
%\verb+      set yr [-1:1]+\\
%\verb+      set xlabel '$x$-label'+\\
%\verb+      set ylabel '$y$-label'+\\
%\verb+      plot 	sin(x) w l lc 1 lw 3 t '$\sin(x)$',\+\\
%\verb+            cos(x) w l lc 2 lw 3 t '$\cos(x)$',\+\\
%\verb+            tan(x) w l lc 3 lw 3 t '$\tan(x)$',\+\\
%\verb+            tanh(x) w l lc 4 lw 3 t '$\tanh(x)$'+\\
%\verb+   \end{gnuplot}+\\
%\verb+   \caption{This is a simple example using the cairolatex-terminal.}%+\\
%\verb+   \label{pic:cairolatex}%+\\
%\verb+\end{figure}%+\\
%
%	\DescribeMacro{emtex}
% Similar to the \texttt{latex}-terminal (but with emtex specials), except it seems not to draw any borders (at least for pdf\TeX).
% Only relies on the picture environment, so should be widely supported, the \texttt{siunitx} option is available and you can use \LaTeX{} commands.
%
% If you have multiple things to plot, it'll be hard to distinguish them, as you can't use colours (and the dash patterns are hard to distinguish), this is a no-no for scientific work, so avoid if possible.
%
% \iffalse
%<*example>
% \fi
\begin{figure}%
	\centering%
	\begin{gnuplot}[terminal=emtex, terminaloptions=rotate]
		set key box top left
		set key width 4
		set sample 1000
		set xr [-5:5]
		set yr [-1:1]
		set xlabel '$x$-label'
		set ylabel '$y$-label'
		plot 	sin(x) w l lc 2 t '$\sin(x)$',\
					cos(x) w l lc 4 t '$\cos(x)$',\
					tan(x) w l lc 6 t '$\tan(x)$',\
					tanh(x) w l lc 8 t '$\tanh(x)$'
	\end{gnuplot}
	\caption{This is a simple example using the \texttt{emtex}-terminal.}%
	\label{pic:emtex}%
\end{figure}%
% \iffalse
%</example>
% \fi
%The source code for figure~\ref{pic:emtex} is:\\
%~\\
%\verb+\begin{figure}%+\\
%\verb+   \centering%+\\
%\verb+   \begin{gnuplot}[terminal=emtex, terminaloptions=rotate]+\\
%\verb+      set key box top left+\\
%\verb+      set key width 4+\\
%\verb+      set sample 1000+\\
%\verb+      set xr [-5:5]+\\
%\verb+      set yr [-1:1]+\\
%\verb+      set xlabel '$x$-label'+\\
%\verb+      set ylabel '$y$-label'+\\
%\verb+      plot 	sin(x) w l lc 2 t '$\sin(x)$',\+\\
%\verb+            cos(x) w l lc 4 t '$\cos(x)$',\+\\
%\verb+            tan(x) w l lc 6 t '$\tan(x)$',\+\\
%\verb+            tanh(x) w l lc 8 t '$\tanh(x)$'+\\
%\verb+   \end{gnuplot}+\\
%\verb+   \caption{This is a simple example using the emtex-terminal.}%+\\
%\verb+   \label{pic:emtex}%+\\
%\verb+\end{figure}%+\\
%
%	\DescribeMacro{tikz}
% Probably offers the best output terminal at the moment, even though the difference to \texttt{cairolatex} and \texttt{epslatex} isn't that big.
% The \texttt{siunitx} option is available, \LaTeX{} commands can be used and you can easily export constants from within gnuplot (see the example code for an example on how to export them).
%
%On the other hand requires this terminal the \texttt{gnuplot-lua-tikz}-package and you cannot use many plots if you use pdf\TeX, as \TeX s memory will be exceeded pretty fast.
% If you use Lua\TeX, this is no problem.
%
% \iffalse
%<*example>
% \fi
\begin{figure}%
	\centering%
	\begin{gnuplot}[terminal=tikz, terminaloptions={color providevars a,c}]
		set key box top left
		set key width -0.9
		set key height 0.25
		set key spacing 1.25
		set size 1,0.9
		set sample 1000
		set grid xtics lt 0 ls 0
		set grid ytics lt 0 ls 0
		set xr [-5:5]
		set yr [-1:1]
		set key opaque
		f(x) = a*x+c
		fit f(x) "SomeValuesForGnuplot.txt" u ($1*5/7):($2/20) via a,c
		set xlabel '$x$-label'
		set ylabel '$y$-label'
		plot 	sin(x) w l lc -1 t '$\sin(x)$',\
					cos(x) w l lc 1 t '$\cos(x)$',\
					tan(x) w l lc 7 t '$\tan(x)$',\
					tanh(x) w l lc 3 t '$\tanh(x)$',\
					f(x) t 'fitted function' lc 4,\
					"SomeValuesForGnuplot.txt" u ($1*5/7):($2/20) w points lc 5 t 'example values'
	\end{gnuplot}
	\caption{This is a simple example using the \texttt{tikz}-terminal. The slope of the fitted function ($a*x+c$) is $a=\num{\gpgetvar{a}}$, while its offset is $c=\num{\gpgetvar{c}}$.}%
	\label{pic:tikz}%
\end{figure}%
% \iffalse
%</example>
% \fi
%
% The source code for figure~\ref{pic:tikz} is:\\
%~\\
%\verb+\begin{figure}%+\\
%\verb+   \centering%+\\
%\verb+   \begin{gnuplot}[terminal=tikz, terminaloptions={color providevars a,c}]+\\
%\verb+      set key box top left+\\
%\verb+      set key width -0.9+\\
%\verb+      set key height 0.25+\\
%\verb+      set key spacing 1.25+\\
%\verb+      set sample 1000+\\
%\verb+      set grid xtics lt 0 ls 0+\\
%\verb+      set grid ytics lt 0 ls 0+\\
%\verb+      set xr [-5:5]+\\
%\verb+      set yr [-1:1]+\\
%\verb+      set key opaque+\\
%\verb+      set xlabel '$x$-label'+\\
%\verb+      set ylabel '$y$-label'+\\
%\verb-      f(x) = a*x+c-\\
%\verb+      fit f(x) "SomeValuesForGnuplot.txt" u ($1*5/7):($2/20) via a,c+\\
%\verb+      plot 	sin(x) w l lc 2 t '$\sin(x)$',\+\\
%\verb+            cos(x) w l lc 4 t '$\cos(x)$',\+\\
%\verb+            tan(x) w l lc 6 t '$\tan(x)$',\+\\
%\verb+            tanh(x) w l lc 3 t '$\tanh(x)$',\+\\
%\verb+            f(x) t 'fitted function' lc 4,\+\\
%\verb+            "SomeValuesForGnuplot.txt" u ($1*5/7):($2/20) w points lc 5\+\\
%\verb+            t 'example values'+\\
%\verb+   \end{gnuplot}+\\
%\verb+   \caption{This is a simple example using the \texttt{tikz}-terminal.+\\
%\verb-            The slope of the fitted function ($a*x+c$) is $a=\num{\gpgetvar{a}}$,-\\
%\verb-            while its offset is $c=\num{\gpgetvar{c}}$.}%-\\
%\verb+   \label{pic:tikz}%+\\
%\verb+\end{figure}%+\\
% As compiling all pictures everytime can take quite a long time, the \texttt{tikz}-package offers the possibility to externalize the pictures, resulting in a great speedup.
% An example for Lua\TeX{} is shown below, pictures are not generated if they are up-to-date.
% In the preamble write:\\
% \verb+\usepackage{tikz}	+\\
% \verb+\usetikzlibrary{external}+\\
% \verb+\tikzexternalize[prefix=gnuplottex/]  %-- Use the gnuplottex-subfolder. Deactivate+\\
%\verb+                                      %-- the subfolderoption of gnuplottex to use!+\\
% \verb+\tikzset{external/system call={lualatex -shell-escape -halt-on-error+\\
% \verb+-interaction=batchmode -jobname "\image" "\texsource"}}+\\
% \verb+\tikzexternalize+\\
% In the document, write e.\,g.:\\
% \verb+\begin{figure}%+\\
% \verb+   \centering%+\\
% \verb+   \tikzsetnextfilename{ThisIsASinus}+\\
% \verb+   \begin{tikzpicture}[gnuplot]+\\
% \verb+   \begin{gnuplot}[terminal=tikz, terminaloptions=color nopicenvironment]+\\
%\verb+      set grid xtics mxtics lt 0 ls 0+\\
%\verb+      set grid ytics mytics lt 0 ls 0+\\
%\verb+      set key box top left+\\
%\verb+      plot sin(x) w l t 'Sinus'+\\
% \verb+   \end{gnuplot}+\\
% \verb+   \end{tikzpicture}+\\
% \verb+   \caption{Captiontext.}%+\\
% \verb+   \label{pic:ThisIsASinus}%+\\
%\verb+\end{figure}%+\\
%
%	\DescribeMacro{pstex,pslatex,pstricks}
% The \texttt{pstex}- and \texttt{pslatex}-terminal produces unusable output with pdf\TeX.
% I wasn't able to get any output using the \texttt{pstricks}-terminal with pdf\TeX{} (if you manage to get reasonable output via one of these terminals, please send me an email).  
%
% \section{Acknowledgements}
%
% In addition to the people mentioned in the changelog, I would like to thank
% Roy Ratcliffe for the suggestion and basic code for the gnuplot terminal
% specification and handling. Additional thanks to Michel Vo\ss{}uhle for the
% implementation of \verb=\gnuplotloadfile=. I would also like to thank all the
% people who sent me bug reports, feature requests and patches -- Philip Vetter,
% sdaau, Mika Pfl\"uger, Henri Menke, Michel Vo\ss{}kuhle, Udo H\"ofel, Thomas
% Schmid and Manuel Solano. Gnuplottex wouldn't be what it is today without you.
%
% \StopEventually{}
%
% \section{Implementation}
%
% \subsection{Initialization}
%    \begin{macrocode}
\newif\ifShellEscape
\newif\ifmiktex \miktexfalse
\newif\ifusesiunitx
\newif\ifcleanup
\newif\ifusesubfolder

\newwrite\verbatim@out

\DeclareOption{shell}{\ShellEscapetrue}
\DeclareOption{noshell}{\ShellEscapefalse}
\DeclareOption{miktex}{\global\miktextrue}
\DeclareOption{siunitx}{\usesiunitxtrue}
\DeclareOption{cleanup}{\cleanuptrue}
\DeclareOption{subfolder}{\usesubfoldertrue}

\@ifundefined{gnuplotexe}{\def\gnuplotexe{gnuplot}}{}

\ExecuteOptions{shell}
\ProcessOptions\relax
%% test if shell escape really works
\ifShellEscape
		\def\tmpfile{w18-test-\the\year\the\month\the\day\the\time.tex}
		\ifmiktex
				\immediate\write18{echo t > "\tmpfile"}
		\else
				\immediate\write18{touch \tmpfile}
		\fi
		\ifmiktex
				\IfFileExists{\tmpfile}{\ShellEscapetrue}{\ShellEscapefalse}
				\immediate\write18{del "\tmpfile"}
		\else
				\IfFileExists{\tmpfile}{\ShellEscapetrue}{\ShellEscapefalse}
				\immediate\write18{rm -f \tmpfile}
                \immediate\write18{rm -f "\jobname.gnuploterrors"}
		\fi
\fi

\ifusesubfolder
    \def\subfolder{gnuplottex}
    \ifShellEscape
        \ifmiktex
            \immediate\write18{mkdir \subfolder}
            \immediate\write18{echo test > "\subfolder/\tmpfile"}
        \else
            \immediate\write18{mkdir -p "\subfolder"}
            \immediate\write18{touch "\subfolder/\tmpfile"}
        \fi
        \IfFileExists{gnuplottex/\tmpfile}{
            \ifmiktex
                \immediate\write18{del "\subfolder\@backslashchar\tmpfile"}
            \else
                \immediate\write18{rm -f "\subfolder/\tmpfile"}
            \fi
            }{
                \PackageWarningNoLine{gnuplottex}
                    {Creation of subfolder failed.\MessageBreak
                    You'll need to create the folder yourself}
                \def\subfolder{}
            }
    \fi
\else
    \def\subfolder{.}
\fi


\ifShellEscape
    \PackageInfo{gnuplottex}
    {Automatically converting gnuplot files}
\else
    \PackageWarningNoLine{gnuplottex}
        {Shell escape not enabled.\MessageBreak
        You'll need to convert the graphs yourself}
\fi
\newcounter{fignum}
%    \end{macrocode}
%
% \subsection{\texttt{.gnuplot} write out}
%    \begin{macrocode}
\def\figname{\jobname-gnuplottex-fig\thefignum}

\def\usesiunitxingnuplot{\immediate\write\verbatim@out{set format '\@backslashchar num{\@percentchar g}'}}

\def\gnuplotverbatimwrite#1{%
    \def\BeforeStream
    {\message{Opening gnuplot stream #1}%
        \immediate\write\verbatim@out{\string set terminal \gnuplotterminal \gnuplotterminaloptions}%
				\immediate\write\verbatim@out{\string set output '\subfolder/\figname.\gnuplottexextension{\gnuplotterminal}'}%
    \ifusesiunitx
        \ifthenelse{\equal{\extension}{\string tex}}{\usesiunitxingnuplot}{\PackageWarningNoLine{gnuplottex}{Axis numbers not written in \noexpand\num{}. Use a terminal that allows TeX output to enable this feature.}}
    \else
        \relax
    \fi
    }%
    \@bsphack%
    \immediate\openout \verbatim@out #1%
    \BeforeStream%
    \let\do\@makeother\dospecials%
    \catcode`\^^M\active
    \def\verbatim@processline{%
        \immediate\write\verbatim@out
        {\the\verbatim@line}}%
    \verbatim@start}
\def\endgnuplotverbatimwrite{%
    \immediate\closeout\verbatim@out
    \@esphack
		\catcode`\\0
		\catcode`\{1
		\catcode`\}2
		\catcode`\$3
		\catcode`\&4
		\catcode`\^^M5
		\catcode`\#6
		\catcode`\^7
		\catcode`\_8
		\catcode`\ 10
		\catcode`\%14}
%    \end{macrocode}
% 
% \subsection{Environment definition}
%    \begin{macrocode}
\def\gnuplottexextension@latex{\string tex}
\def\gnuplottexextension@epslatex{\string tex}
\def\gnuplottexextension@cairolatex{\string tex}
\def\gnuplottexextension@eepic{\string tex}
\def\gnuplottexextension@pstricks{\string tex}
\def\gnuplottexextension@pslatex{\string tex}
\def\gnuplottexextension@pstex{\string tex}
\def\gnuplottexextension@emtex{\string tex}
\def\gnuplottexextension@jpeg{\string jpg}
\def\gnuplottexextension@tikz{\string tex}
\def\gnuplottexextension@lua{\string tex}
\def\gnuplottexextension#1{\@ifundefined{gnuplottexextension@#1}{#1}{\csname gnuplottexextension@#1\endcsname}}
\define@key{pic}{scale}[1]{\def\gnuplotscale{#1}}
\define@key{pic}{terminal}[latex]{\def\gnuplotterminal{#1}}
\define@key{pic}{terminaloptions}{\def\gnuplotterminaloptions{ #1}}
\newenvironment{gnuplot}[1][]{\stepcounter{fignum}%
		\def\gnuplotterminal{latex}%%
		\def\gnuplotterminaloptions{}%%
		\def\gnuplotscale{1}%%
		\setkeys{pic}{#1}%%
    \xdef\gnuplotCutFile{\subfolder/\figname.gnuplot}%%
    \gnuplotverbatimwrite{\gnuplotCutFile}}
    {\endgnuplotverbatimwrite%
    \gnuplotgraphicsprocess%
    \gnuplotgraphicsinclude}
%    \end{macrocode}
%
% \subsection{\texttt{.gnuplot} file processing}
%    \begin{macrocode}
\def\extension{\gnuplottexextension{\gnuplotterminal}}
\long\gdef\gnuplotgraphicsprocess{%
		\ifShellEscape%
				\IfFileExists{\subfolder/\figname.gnuplot}{%
                        \ifmiktex
                            \immediate\write18{\gnuplotexe\space \subfolder/\figname.gnuplot}%
                        \else
                            \immediate\write18{\gnuplotexe\space \subfolder/\figname.gnuplot\space 2>>\jobname.gnuploterrors}%
                        \fi%
						\IfFileExists{\subfolder/\figname.\extension}{%
								\PackageInfo{gnuplottex}{\subfolder/\figname.gnuplot converted}%
                \ifcleanup
                    \ifmiktex
                        \immediate\write18{del "\subfolder/\figname.gnuplot"}%
                    \else
                        \immediate\write18{rm -f "\subfolder/\figname.gnuplot"}%
                    \fi%
                \fi%
            }
						{\PackageWarningNoLine{gnuplottex}
								{Conversion of \subfolder/\figname.gnuplot failed}}}{}%
		\fi}
\long\def\gnuploterrors@eatpar#1#2\@nil{\def\gnuploterrors@{#2}}
\AtEndDocument{%
  \ifmiktex
  \else
  \IfFileExists{\jobname.gnuploterrors}{%
      \CatchFileDef\gnuploterrors@{\jobname.gnuploterrors}{\endlinechar=`^^J \catcode`\ =12 }%
      \expandafter\gnuploterrors@eatpar\gnuploterrors@\@nil
      \ifx\gnuploterrors@\@empty\else
        \PackageWarningNoLine{gnuplottex}{Gnuplot execution produced errors:^^J%
          \detokenize\expandafter{\gnuploterrors@}}%
      \fi
    }{}
  \fi
}
%    \end{macrocode}
%
% \subsection{Graph inclusion}
%    \begin{macrocode}
\long\gdef\gnuplotgraphicsinclude{%
		\IfFileExists{\subfolder/\figname.\extension}{%
				\ifthenelse{\equal{\extension}{\string tex}}
						{\scalebox{\gnuplotscale}{\input{\subfolder/\figname.\extension}}}
						{\includegraphics[scale=\gnuplotscale]{\subfolder/\figname.\extension}}
		}
		{\PackageWarningNoLine{gnuplottex}
				{Please convert \subfolder/\figname.gnuplot manually}}
}
%    \end{macrocode}
%
% \subsection{\texttt{.gnuplot} file processing}
%    \begin{macrocode}
\newcommand{\gnuplotloadfilewrite}[2]{%
  \immediate\openout \verbatim@out #1%
  \message{Opening gnuplot stream #1}%
  \immediate\write\verbatim@out{\string set terminal \gnuplotterminal \gnuplotterminaloptions}%
  \immediate\write\verbatim@out{\string set output '\subfolder/\figname.\gnuplottexextension{\gnuplotterminal}'}%
  \ifusesiunitx
    \ifthenelse{\equal{\extension}{\string tex}}{\usesiunitxingnuplot}{\PackageWarningNoLine{gnuplottex}{Axis numbers not written in \noexpand\num{}. Use a terminal that allows TeX output to enable this feature.}}
  \else
    \relax
  \fi
  \ifusesiunitx
      {\escapechar=-1\edef\percentforgnuplot{\string\%}
          \escapechar=-1\edef\backslashforgnuplot{\string\\}
      \immediate\write\verbatim@out{set format '\backslashforgnuplot num{\percentforgnuplot g}'}}
  \else
      \relax
  \fi
  \immediate\write\verbatim@out{\string load '#2'}%
  \immediate\closeout\verbatim@out%
 }

 \newcommand{\gnuplotloadfile}[2][]{
  \stepcounter{fignum}%
  \def\gnuplotterminal{latex}
  \def\gnuplotterminaloptions{}
  \def\gnuplotscale{1}
  \setkeys{pic}{#1}
  \xdef\gnuplotCutFile{\subfolder/\figname.gnuplot}
  \gnuplotloadfilewrite{\gnuplotCutFile}{#2}
  \gnuplotgraphicsprocess%
  \gnuplotgraphicsinclude
 }
%    \end{macrocode}
%
% \Finale
\endinput
