% \iffalse meta-comment % % Copyright (c) 2006, Lars Kotthoff % % 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> [2006/10/28 v0.2 gnuplot graphs in LaTeX] \RequirePackage{latexsym,graphicx,moreverb,keyval} % % %<*driver> \documentclass{ltxdoc} \usepackage{gnuplottex} \EnableCrossrefs \CodelineIndex \RecordChanges \begin{document} \DocInput{gnuplottex.dtx} \PrintChanges \PrintIndex \end{document} % % \fi % % \CheckSum{164} % % \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.} % % \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\\ \texttt{metalhead@metalhead.ws}} % % \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 and converted to LaTeX files, which will then be included. If % shell escape isn't used, the user will have to manually convert the % files by running gnuplot on the extracted .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}. % % \section{Requirements} % % To use gnuplottex, you'll need the \texttt{graphicx}, \texttt{latexsym}, % \texttt{keyval} and \texttt{moreverb} packages and, of course, gnuplot. % % \section{Usage} % % To load the package, simply \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. % \item[\oarg{noshell}] Don't use shell escape, graphs must be generated % manually. % \item[\oarg{miktex}] We're using mikTeX. % \end{description} % % The following environments 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. % % You may specify a scaling factor for the graphs by adding the parameter after % the beginning of the environment, like so: % \verb=\begin{gnuplottex}=[scale=\meta{scale}] % % \StopEventually{} % % \section{Implementation} % % \subsection{Initialization} % \begin{macrocode} \newif\ifShellEscape \newif\ifmiktex \miktexfalse \DeclareOption{shell}{\ShellEscapetrue} \DeclareOption{noshell}{\ShellEscapefalse} \DeclareOption{miktex}{\global\miktextrue} \ExecuteOptions{shell} \ProcessOptions\relax %% test if shell escape really works \ifShellEscape \def\tmpfile{/tmp/w18-test-\the\year\the\month\the\day\the\time} \ifmiktex \immediate\write18{rem >"\tmpfile"} \else \immediate\write18{touch \tmpfile} \fi \ifmiktex \IfFileExists{\tmpfile.}{\ShellEscapetrue}{\ShellEscapefalse} \else \IfFileExists{\tmpfile}{\ShellEscapetrue}{\ShellEscapefalse} \fi \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\gnuplotverbatimwrite#1{% \def\BeforeStream {\message{Opening gnuplot stream #1}% \immediate\write\verbatim@out{\string set terminal latex} \immediate\write\verbatim@out{\string set output '\figname.tex'} } \@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} \define@key{pic}{scale}{\def\gnuplotscale{#1}} \newenvironment{gnuplot}[1][]{\stepcounter{fignum}% \def\gnuplotscale{1} \setkeys{pic}{#1} \xdef\gnuplotCutFile{\figname.gnuplot} \gnuplotverbatimwrite{\gnuplotCutFile}} {\endgnuplotverbatimwrite% \gnuplotgraphicsinclude} % \end{macrocode} % % \subsection{\texttt{.gnuplot} file processing} % \begin{macrocode} \long\gdef\gnuplotgraphicsprocess{% \ifShellEscape \IfFileExists{\figname.gnuplot}{% \immediate\write18{gnuplot \figname.gnuplot} \IfFileExists{\figname.tex}{% \PackageInfo{gnuplottex} {\figname.gnuplot converted}} {\PackageWarningNoLine{gnuplottex} {Conversion of \figname.gnuplot failed.}}}{} \fi} % \end{macrocode} % % \subsection{Graph inclusion} % \begin{macrocode} \long\gdef\gnuplotgraphicsinclude{\gnuplotgraphicsprocess% \IfFileExists{\figname.tex}{% \scalebox{\gnuplotscale}{\input{\figname}}} {\PackageWarningNoLine{gnuplottex} {Please convert \figname.gnuplot manually}} } % \end{macrocode} % % \Finale \endinput