2010-09-12 63 views
1

我有一个问题,从编译的ocaml应用程序pdflatex调用外部应用程序。我使用的是正确的字符串作为参数,当我从顶层我得到预期的结果运行,ocaml Unix.system调用到pdflatex

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

并生成适当的输出,

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 

从编译的应用程序,日志表明,

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

它一直困惑我一段时间。我使用了Unix模块的其他系统调用以及其他命令行选项。我想知道是否有人可以就如何进行提供一些建议。该应用程序生成几个tex文件,并且他们需要被转换为pdf。从顶层,通过列表调用地图可以正确生成pdf;只有编译(字节码)不起作用。

+1

是完整的日志(不是'这是pdfTeX'等)?我的预感是你在某个程序中没有一个名为'ALGO_GEN.tex'的文件,或者它没有包含你认为它的作用。你有没有尝试过检查'ALGO_GEN.tex'? – Gilles 2010-09-12 19:13:01

+0

谢谢。我发现我没有关闭tex文件的输出通道,在那时没有写入任何内容。谢谢你的帮助。 – nlucaroni 2010-09-13 14:42:05

回答

0

我没有关闭之前写入tex文件的通道,所以没有数据可能被写入。感谢Gilles建议我在运行时检查文件。