gnuplottex anpassen

Redefinition von Makros, Definition eigener Befehle sowie neuer Umgebungen


IrenaSekuta
Forum-Century
Forum-Century
Beiträge: 230
Registriert: Di 2. Dez 2008, 10:05

gnuplottex anpassen

Beitrag von IrenaSekuta »

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
----------------------------------
- WinXP und Win 7 und ansatzweise Ubuntu 9.10 :-)
- Miktex 2.9 (Portable)
- WinEdt 6

MQuadrat

Beitrag von MQuadrat »

Hallo,

der Beitrag ist zwar schon etwas älter, aber ich hätte so eine Lösung auch gerne und hab ihn jetzt erst entdeckt. Ahnung hab ich leider auch keine, aber wie wäre es, wenn du deinen Vorschlag mal dem gnuplottex-Entwickler schickst? Der hat vielleicht ganz schnell eine Lösung parat.

Grüße

Markus

Antworten