% \iffalse meta-comment % % Copyright (c) 2006-2015, Lars Kotthoff and contributors % % Large portions copied from pdftex, % Copyright (c) 2001-3, Radhakrishnan CV % Rajagopal CV % 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 % % 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} % % \NeedsTeXFormat{LaTeX2e}[1999/12/01] % \ProvidesPackage{gnuplottex} %<*package> [2020/03/19 v0.9.5 gnuplot graphs in LaTeX] \RequirePackage{graphicx,moreverb,keyval,ifthen,catchfile} % % %<*driver> \documentclass{ltxdoc} % \iffalse %<*example> \usepackage{xcolor,epstopdf,siunitx,eepic,epic,eepicemu,gnuplot-lua-tikz} % \fi % \iffalse % % \fi \usepackage[siunitx]{gnuplottex} \EnableCrossrefs \CodelineIndex \RecordChanges \begin{document} \DocInput{gnuplottex.dtx} \PrintChanges \PrintIndex \end{document} % % \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 % % \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 % % \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 % % \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 % % \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 % % \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 % % \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 % % \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