2010-09-12 28 views
1

J'ai un problème pour appeler une application externe à partir d'une application ocaml compilée, pdflatex. J'utilise la chaîne appropriée comme argument, quand je le lance à partir du premier niveau j'obtenir les résultats escomptés,ocaml Unix.system appel à pdflatex

Unix.system "pdflatex -interaction batchmode -output-directory res ALGO_GEN.tex";; 

Et il génère la sortie correcte,

This is pdfTeX, Version 3.1415926-1.40.10 (TeX Live 2009/Debian) 
restricted \write18 enabled. 
entering extended mode 
(/usr/share/texmf-texlive/tex/latex/base/article.cls 
Document Class: article 2007/10/19 v1.4h Standard LaTeX document class 
(/usr/share/texmf-texlive/tex/latex/base/size10.clo)) 
(/usr/share/texmf-texlive/tex/latex/amsmath/amsmath.sty 
For additional information on amsmath, use the `?' option. 
(/usr/share/texmf-texlive/tex/latex/amsmath/amstext.sty 
(/usr/share/texmf-texlive/tex/latex/amsmath/amsgen.sty)) 
(/usr/share/texmf-texlive/tex/latex/amsmath/amsbsy.sty) 
(/usr/share/texmf-texlive/tex/latex/amsmath/amsopn.sty)) 
(/usr/share/texmf-texlive/tex/latex/algorithms/algorithmic.sty 
(/usr/share/texmf-texlive/tex/latex/base/ifthen.sty) 
(/usr/share/texmf-texlive/tex/latex/graphics/keyval.sty)) 
No file ALGO_GEN.aux. 
[1{/var/lib/texmf/fonts/map/pdftex/updmap/pdftex.map}] 
(maze.html.res/ALGO_GEN.aux))</usr/share/texmf-texlive/fonts/type1/public/a 
msfonts/cm/cmbx10.pfb></usr/share/texmf-texlive/fonts/type1/public/amsfonts/cm/ 
cmmi10.pfb></usr/share/texmf-texlive/fonts/type1/public/amsfonts/cm/cmr10.pfb>< 
/usr/share/texmf-texlive/fonts/type1/public/amsfonts/cm/cmsy10.pfb> 
Output written on res/ALGO_GEN.pdf (1 page, 36816 bytes). 
Transcript written on res/ALGO_GEN.log. 
- : Unix.process_status = Unix.WEXITED 0 

De l'application compilée, le journal indique que,

*** (job aborted, no legal \end found) 

Cela m'a dérouté pendant un certain temps. J'ai utilisé d'autres appels système du module Unix et d'autres options de ligne de commande. Je me demande si quelqu'un peut donner des conseils sur la façon de procéder. L'application génère quelques documents tex, et ils doivent être convertis en pdf. De haut niveau, appeler une carte sur une liste d'entre eux génère correctement le fichier PDF; seulement compilé (code octet) ne fonctionne pas.

+1

Est-ce que c'est le journal complet (pas 'This is pdfTeX', etc)? Mon intuition serait que vous n'ayez pas un fichier appelé 'ALGO_GEN.tex' à ce point dans votre vrai programme, ou qu'il ne contient pas ce que vous pensez qu'il fait. Avez-vous essayé d'inspecter 'ALGO_GEN.tex' à ce moment-là? – Gilles

+0

Merci. J'ai trouvé que je ne fermais pas le canal de sortie au fichier tex, rien n'avait été écrit à ce moment-là. Merci de votre aide. – nlucaroni

Répondre

0

Je ne fermais pas le canal au fichier tex précédemment écrit, donc aucune donnée ne serait potentiellement écrite. Merci à Gilles de m'avoir suggéré d'inspecter les fichiers pendant l'exécution.