nntp2http.com
Posting
Suche
Optionen
Hilfe & Kontakt

Re: Externe Programme aufrufen?

Von: Ulrike Fischer (news2@nililand.de) [Profil]
Datum: 10.10.2008 12:49
Message-ID: <dzrirxvhe2c1.dlg@nililand.de>
Newsgroup: de.comp.text.tex
Am Fri, 10 Oct 2008 10:35:26 +0000 (UTC) schrieb Marek Kubica:

> On Fri, 10 Oct 2008 12:11:12 +0200, Christoph Hänisch wrote:
>
> Hallo Christoph,
>
> vielen Dank für deine umfassende und hilfreiche Antwort. In Zwischenzeit
> habe ich den Parameter in der Manpage von pdflatex gefunden. Eigentlich
> brauche ich beides: Prozesse starten (klappt inzwischen wunderbar) und
> Dateien schreiben.
>
> Eigentlich klappt das schon, aber leider nur theoretisch, denn ich habe
> mir hier folgenden Befehl zusammengebaut:
>
> \newcommand{\pygmentize}[2]{
>   \newwrite\code
>   \immediate\openout\code\jobname.pyg
>   \immediate\write\code{#2}
>   \closeout\code
>
>   \immediate\write18{pygmentize -l #1 -f latex -o \jobname.out.pyg
> \jobname.pyg}
>   %%\input{\jobname.out.pyg}
> }
>
> Das Problem ist nun, dass wenn ich write18 aufrufe ``pygmentize`` zwar
> durchaus aufgerufen wird, jedoch \jobname.pyg zu der Zeit noch keinen
> Inhalt hat, so dass mir ``pygmentize`` im wesentlichen nur ein leeres
> Verbatim in \jobname.out.pyg reinschreibt. Ich nehme an, es fehlt nach
> dem Schließen der Datei ein flush oder so, aber ich habe keine Ahnung wie
> man das erzwingen kann - hätte eigentlich erwartet dass die Datei nach
> dem Schließen direkt verwendbar ist.

Du hast sie ja noch nicht geschlossen. Da fehlt das \immediate.

Außerdem solltest du den \newwrite-Befehl aus deinem Makro rausnehmen,
sonst wird bei jedem Aufruf ein neues write-Register alloziiert und bei
16 ist Schluss.


--
Ulrike Fischer

[ Auf dieses Posting antworten ]

Antworten