[cstex] Problém s komunikací s GNUPlotem

Zdenek Wagner zdenek.wagner at gmail.com
Tue Oct 27 10:45:44 CET 2009


2009/10/27 "Procházka Lukáš Ing. - Pontex s. r. o." <LPr at pontex.cz>:
> Děkuji panu Střížovi za [téměř fungující] návod.
>
> Doplnil bych o vlastní poznatky:
>
> - Ve gnuplottex.sty jsem podle rady skutečně opravil "rem" za "echo". (Jen
> jsem místo "echo t" dal "echo.", což produkuje prázdný řádek.)
>
> - Bylo nutno vytvořit adresář tmp v rootu (!) - C:/tmp. Windows defaultně
> takový nemají.
>
> - - S tím souvisí dotaz: Dá s v LaTeXu nějak přistupovat k proměnným
> prostředí? Hodilo by se totiž zjistit hodnotu proměnné TEMP, něco jako
> \[e]def\TEMP{\getsysvar{TEMP}}.
>
Nedá. K proměnným prostředí má přístup knihovna kpathsea, ale používá
jen to, co je tam nadefinováno, na úrovni maker to již viditelné není.
Nevím, zda má něco luatex, je možné, že pomocí lua to jde. Další
možností je využití \write18, kde si pomocí echo %TEMP% vypíšete tuto
proměnou do nějakého souboru, zabalíte do vhodného makra a pak to
načtete pomocí \input.

> - - - Zároveň by se hodilo, aby v proměnné byly zaměněny "\" za "/".
>
> - Dopsal jsem podle návodu:
>
>     \ifmiktex
>         \IfFileExists{\tmpfile.}{\immediate\write18{del
> \tmpfile}\ShellEscapetrue}{\ShellEscapefalse}
>     \else
>
>   Nicméně tmpfile v adresáři zůstával pořád, navíc se ve výstupu objevovalo:
>
> (c:/TeXLive2007/texmf-dist/tex/latex/pdftex-def/pdftex.def)))
> (c:/TeXLive2007/texmf-dist/tex/latex/moreverb/moreverb.sty
> (c:/TeXLive2007/texmf-dist/tex/latex/tools/verbatim.sty))Neplatný přepínač -
> tmp
> ) (./t-GPlot.aux)
> (c:/TeXLive2007/texmf-dist/tex/context/base/supp-pdf.tex
> [Loading MPS to PDF converter (version 2006.09.02).]
> ) Opening gnuplot stream t-GPlot-gnuplottex-fig1.gnuplot
> C:\Lukas\Jobs\Manuals\Test3>rem Required for 'gnuplottex' package (LaTeX) to
> work
>
>   Což mě vede k závěru, že tentokrát vadí Windowsům "/" v cestě, potřebovaly
> by "\".
>
> - Zároveň jsem nepotřeboval kopírovat wgnuplot.exe do gnuplot.exe. Stačí mít
> v cestě (PATH) soubor gnuplot.bat, který volá wgnuplot.exe celou cestou:
>
> @%Home%\..\Programs\GNUPlot\bin\wgnuplot.exe %*
>
> A tvorba grafu běží podle představ. (Akorát zůstává tmpfile v adresáři
> /tmp.)
>
> Pro p. Wágnera:
>
> Manuální překlad obrázků (třeba dávkou) jsem také zvažoval - v okamžiku,
> kdyby tvorba .pdf trvala příliš dlouho, nebo bych překlad měl volat příliš
> často, asi bych vaši cestu také volil. Nicméně budu rád, když budu umět oba
> způsoby.
>
> Zdravím
>
> Lukáš Procházka
>
>
> Pavel Striz wrote:
>
> Dobrý večer, TL2008, WinXP, dnešní verze GnuPlotu, gnuplottex.sty v0.4.2.
>
> GnuPlot jsem si nainstaloval do C:\gnuplot\, rozšířil jsem PATH o
> C:\gnuplot\bin\.
>
> Udělal jsem kopii wgnuplot.exe na gnuplot.exe (žádá si to gnuplottex.sty
> soubor).
>
> Udělejte si kopii gnuplottex.sty na gnuplottex-puvodni.sty.
>
> V gnuplottex.sty zasáhněte na řádcích 60 a 66, abyste dostal:
>   \immediate\write18{echo t > \tmpfile}
>   \immediate\write18{del \tmpfile}
>
> Ve své ukázce si zapněte miktex, bez ohledu na instalaci TL, spíše než
> miktex by byl zajímavější termín windows:
>   \usepackage[miktex]{gnuplottex}
>
> Například gnuplottex/example-pdf.tex jsem spustil, až když jsem zasáhl na
> řádcích 3 a 7 na:
>   \usepackage[miktex]{gnuplottex}
>   \begin{gnuplot}%[terminal=pdf,terminaloptions=fsize 20 linewidth 3]
> Další zkoumání je už o syntaxi.
>
> Přikládám váš soubůrek projetý:
>   pdflatex -shell-escape t-GPlot
>
> PS
>
>
> %%
> %% This is file `gnuplottex.sty',
> %% generated with the docstrip utility.
> %%
> %% The original source files were:
> %%
> %% gnuplottex.dtx  (with options: `package')
> %%
> %% Copyright (c) 2006, Lars Kotthoff <metalhead at metalhead.ws>
> %%
> %% Large portions copied from pdftex,
> %% Copyright (c) 2001-3, Radhakrishnan CV <cvr at river-valley.com>
> %%                       Rajagopal CV <cvr3 at 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 at math.polytechnique.fr>
> %%                     http://www.math.polytechnique.fr/\protect \unhbox
> \voidb at x \penalty \@M \ {}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.
> %%
>  \NeedsTeXFormat{LaTeX2e}[1999/12/01]
>  \ProvidesPackage{gnuplottex}
>    [2006/10/28 v0.2 gnuplot graphs in LaTeX]
> \RequirePackage{latexsym,graphicx,moreverb,keyval}
> \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"}
>        \immediate\write18{echo. > \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}
> \def\figname{\jobname-gnuplottex-fig\thefignum}
>
> \def\gnuplotverbatimwrite#1{%
>    \def\BeforeStream
>    {\message{Opening gnuplot stream #1}%
>        \immediate\write\verbatim at out{\string set terminal latex}
> \immediate\write\verbatim at out{\string set output '\figname.tex'}
>    }
>    \@bsphack
>    \immediate\openout \verbatim at out #1
>    \BeforeStream%
>    \let\do\@makeother\dospecials
>    \catcode`\^^M\active
>    \def\verbatim at processline{%
>        \immediate\write\verbatim at out
>        {\the\verbatim at line}}%
>    \verbatim at start}
> \def\endgnuplotverbatimwrite{%
>    \immediate\closeout\verbatim at out
>    \@esphack
> \catcode`\\0
> \catcode`\{1
> \catcode`\}2
> \catcode`\$3
> \catcode`\&4
> \catcode`\^^M5
> \catcode`\#6
> \catcode`\^7
> \catcode`\_8
> \catcode`\ 10
> \catcode`\%14}
> \define at 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}
> \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}
> \long\gdef\gnuplotgraphicsinclude{\gnuplotgraphicsprocess%
> \IfFileExists{\figname.tex}{%
> \scalebox{\gnuplotscale}{\input{\figname}}}
> {\PackageWarningNoLine{gnuplottex}
> {Please convert \figname.gnuplot manually}}
> }
> \endinput
> %%
> %% End of file `gnuplottex.sty'.
>
> _______________________________________________
> csTeX mailing list
> csTeX at cs.felk.cvut.cz
> http://lists.felk.cvut.cz/mailman/listinfo/cstex
>
>



-- 
Zdeněk Wagner
http://hroch486.icpf.cas.cz/wagner/
http://icebearsoft.euweb.cz



More information about the csTeX mailing list