summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/gnuplottex/gnuplottex.dtx
diff options
context:
space:
mode:
Diffstat (limited to 'macros/latex/contrib/gnuplottex/gnuplottex.dtx')
-rw-r--r--macros/latex/contrib/gnuplottex/gnuplottex.dtx904
1 files changed, 904 insertions, 0 deletions
diff --git a/macros/latex/contrib/gnuplottex/gnuplottex.dtx b/macros/latex/contrib/gnuplottex/gnuplottex.dtx
new file mode 100644
index 0000000000..58286bc6fc
--- /dev/null
+++ b/macros/latex/contrib/gnuplottex/gnuplottex.dtx
@@ -0,0 +1,904 @@
+% \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>
+ [2016/08/21 v0.9.2 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{457}
+%
+% \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).}
+%
+% \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.
+%
+% \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.
+%
+% 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 dashed 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 dashed 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 dashed 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
+ \ifmiktex
+ \immediate\write18{mkdir gnuplottex}
+ \immediate\write18{echo test > "gnuplottex/\tmpfile"}
+ \else
+ \immediate\write18{mkdir -p "gnuplottex"}
+ \immediate\write18{touch "gnuplottex/\tmpfile"}
+ \fi
+ \IfFileExists{gnuplottex/\tmpfile}{
+ \ifmiktex
+ \immediate\write18{del "gnuplottex\@backslashchar\tmpfile"}
+ \else
+ \immediate\write18{rm -f "gnuplottex/\tmpfile"}
+ \fi
+ \def\subfolder{gnuplottex/}
+ }{
+ \PackageWarningNoLine{gnuplottex}
+ {Creation of subfolder failed.\MessageBreak
+ You'll need to create the folder yourself}
+ \def\subfolder{}
+ }
+\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