Hallo zusammen,
ich möchte gerne das gnuplottex-Style meinen Bedürfnissen anpassen.
Einmal der Ansatz meiner Anpassung, die auch soweit funktioniert:
\NeedsTeXFormat{LaTeX2e}[1999/12/01]
\ProvidesPackage{gnuplottex}
[2007/10/13 v0.4.2 gnuplot graphs in LaTeX]
\RequirePackage{latexsym,graphicx,moreverb,keyval,ifthen}
\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
\def\tmpfile{w18-test-\the\year\the\month\the\day\the\time}
\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}
\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}
%\def\figname{\jobname-gnuplottex-fig\thefignum} % ORIGINAL
\def\figname{\gnuplotoutput}
\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 '\figname.\gnuplottexextension{\gnuplotterminal}'} % ORIGINAL
\immediate\write\verbatim@out{\string set output '\gnuplotoutput.\gnuplottexextension{\gnuplotterminal}'}
}
\@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}
\def\gnuplottexextension@latex{\string tex}
\def\gnuplottexextension@epslatex{\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#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}{output}{\def\gnuplotoutput{#1}} % Neu von mir erstellt
\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{\figname.gnuplot}
\gnuplotverbatimwrite{\gnuplotCutFile}}
{\endgnuplotverbatimwrite%
\gnuplotgraphicsprocess%
\gnuplotgraphicsinclude}
\def\extension{\gnuplottexextension{\gnuplotterminal}}
\long\gdef\gnuplotgraphicsprocess{%
\ifShellEscape
\IfFileExists{\figname.gnuplot}{%
\immediate\write18{gnuplot \figname.gnuplot}
\IfFileExists{\figname.\extension}{%
\PackageInfo{gnuplottex}{\figname.gnuplot converted}}
{\PackageWarningNoLine{gnuplottex}
{Conversion of \figname.gnuplot failed}}}{}
\fi}
\long\gdef\gnuplotgraphicsinclude{%
\IfFileExists{\figname.\extension}{%
\ifthenelse{\equal{\extension}{\string tex}}
{\scalebox{\gnuplotscale}{\input{\figname.\extension}}}
{\includegraphics[scale=\gnuplotscale]{\figname.\extension}}
}
{\PackageWarningNoLine{gnuplottex}
{Please convert \figname.gnuplot manually}}
}
\endinput
Ich habe neben der bereits bestehenden Optionen "scale, terminal, terminaloptions" noch die Option "output" definiert.
Nun würde ich gerne, dass das Makro \figname wie folgt aussieht:
Falls die Option "output" nicht angegeben wurde, so soll alles bleiben wie im Original. Anderenfalls soll "option" berücksichtigt werden. Dazu müsste ich m.E. folgenden Code anpassen:
\def\figname{\jobname-gnuplottex-fig\thefignum}
Ich verusche es einmal in anderem Code auszudrücken:
if output.given? = true then
\figname{\gnuplotterminal}
else
\figname{\jobname-gnuplottex-fig\thefignum}
end
Fairerweise möchte ich anmerken, dass ich von der Programmierung in Tex noch nicht allzu viel erfahrung habe und mich an solchen Beispielen üben möchte.
Mag mir jemand behilflich sein?
Eventuell gibt es auch die Möglichkeit, dass ich einen eigenen Style schreibe, der quasi den Quellcode von gnuplottex.sty erbt. Dann könnte ich die Anpassungen in meinem Style vornehmen und müsste nicht in dem Originalstyle rumpfutschen.
Gruß,
Irena