C コード内で pdflatex を呼び出す

C コード内で pdflatex を呼び出す

私はファイルを書き出すCコードを書いています。そして、モードでLaTeX使用してファイルをコンパイルしようとします(つまり、何らかのプロセスを自動化していて、致命的なエラーでユーザーの入力を待ちたくない場合)。LaTeXファイルは出力され、コマンドを使用してコンパイルしようとします。pdflatexnon-interactive./data/output_date.tex

system("./pdflatex --interaction=nonstopmode --output-directory=data ./data/output_date.tex");

しかし、次のエラー メッセージが表示されます:

This is pdfTeX, Version 3.1415926-1.40.10 (TeX Live 2009/Debian)
entering extended mode
(./data/output_date.tex
LaTeX2e <2009/09/24>
Babel <v3.8l> and hyphenation patterns for english, usenglishmax, dumylang, noh
yphenation, loaded.
(/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/pbox/pbox.sty
(/usr/share/texmf-texlive/tex/latex/tools/calc.sty)
(/usr/share/texmf-texlive/tex/latex/base/ifthen.sty))
(data/output_2013_date.aux))
! Emergency stop.
<*> ./data/output_date.tex

!  ==> Fatal error occurred, no output PDF file produced!
Transcript written on data/output_date.log.

緊急停止が発生する理由を正確には解明できないようです。特に、ターミナルから (C実行可能ファイルと同じフォルダーから) まったく同じコマンドを実行すると、LaTeXは に正常にコンパイルされるからですpdf

コードからコマンドとしてコンパイラを呼び出すので、何か特別なことをする必要があるのでしょうかC?

編集: 対応するファイルのテキストは次のとおりです.log。 とだけ書かれていますが、ソース ファイルをチェックしてとが一致していることno legal \end foundを確認したため、混乱しています。\begin\end

This is pdfTeX, Version 3.1415926-1.40.10 (TeX Live 2009/Debian) (format=pdflatex 2013.5.23)  15 JUL 2013 09:50
entering extended mode
 %&-line parsing enabled.
**./data/output_date.tex
(./data/output_date.tex
LaTeX2e <2009/09/24>
Babel <v3.8l> and hyphenation patterns for english, usenglishmax, dumylang, noh
yphenation, loaded.
(/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
File: size10.clo 2007/10/19 v1.4h Standard LaTeX file (size option)
)
\c@part=\count79
\c@section=\count80
\c@subsection=\count81
\c@subsubsection=\count82
\c@paragraph=\count83
\c@subparagraph=\count84
\c@figure=\count85
\c@table=\count86
\abovecaptionskip=\skip41
\belowcaptionskip=\skip42
\bibindent=\dimen102
)
(/usr/share/texmf-texlive/tex/latex/pbox/pbox.sty
Package: pbox 2003/04/06 v1.0 Dynamic parboxes

(/usr/share/texmf-texlive/tex/latex/tools/calc.sty
Package: calc 2007/08/22 v4.3 Infix arithmetic (KKT,FJ)
\calc@Acount=\count87
\calc@Bcount=\count88
\calc@Adimen=\dimen103
\calc@Bdimen=\dimen104
\calc@Askip=\skip43
\calc@Bskip=\skip44
LaTeX Info: Redefining \setlength on input line 76.
LaTeX Info: Redefining \addtolength on input line 77.
\calc@Ccount=\count89
\calc@Cskip=\skip45
)
(/usr/share/texmf-texlive/tex/latex/base/ifthen.sty
Package: ifthen 2001/05/26 v1.1c Standard LaTeX ifthen package (DPC)
)
\pb@xlen=\skip46
)
(data/output_date.aux)
\openout1 = `output_date.aux'.

LaTeX Font Info:    Checking defaults for OML/cmm/m/it on input line 8.
LaTeX Font Info:    ... okay on input line 8.
LaTeX Font Info:    Checking defaults for T1/cmr/m/n on input line 8.
LaTeX Font Info:    ... okay on input line 8.
LaTeX Font Info:    Checking defaults for OT1/cmr/m/n on input line 8.
LaTeX Font Info:    ... okay on input line 8.
LaTeX Font Info:    Checking defaults for OMS/cmsy/m/n on input line 8.
LaTeX Font Info:    ... okay on input line 8.
LaTeX Font Info:    Checking defaults for OMX/cmex/m/n on input line 8.
LaTeX Font Info:    ... okay on input line 8.
LaTeX Font Info:    Checking defaults for U/cmr/m/n on input line 8.
LaTeX Font Info:    ... okay on input line 8.
LaTeX Font Info:    External font `cmex10' loaded for size
(Font)              <12> on input line 9.
LaTeX Font Info:    External font `cmex10' loaded for size
(Font)              <8> on input line 9.
LaTeX Font Info:    External font `cmex10' loaded for size
(Font)              <6> on input line 9.
LaTeX Font Info:    External font `cmex10' loaded for size
(Font)              <7> on input line 15.
LaTeX Font Info:    External font `cmex10' loaded for size
(Font)              <5> on input line 15.
)
! Emergency stop.
<*> ./data/output_date.tex

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


Here is how much of TeX's memory you used:
 375 strings out of 495061
 4422 string characters out of 1182621
 56939 words of memory out of 3000000
 3619 multiletter control sequences out of 15000+50000
 6675 words of font info for 24 fonts, out of 3000000 for 9000
 28 hyphenation exceptions out of 8191
 23i,14n,19p,304b,189s stack positions out of 5000i,500n,10000p,200000b,50000s
!  ==> Fatal error occurred, no output PDF file produced!

答え1

コマンドでコンパイルする前に、書き込み用にファイルを閉じる必要があることがわかりました (C コード内) pdflatex。誤ってコマンドの後に追加してしまいましたfclose

私の推測では、コンパイルを試みる前に、私の命令によってバッファが最後にもう一度フラッシュされていなかったか (これには が含まれていたはずです\end{document})、使用中のファイルが何らかの形で pdflatex に影響を与えたと考えられます。

関連情報