2009-09-18 142 views
2

我運行在一個命名管道在Unix FIFO乳膠。我創建了FIFO樣這樣:在命名管道(fifo)上調用LaTeX?

$ mkfifo fifo 

我然後運行乳膠狀,所以:

$ latex fifo 

這個過程塊,沒有輸出,直到我寫的,從另一個shell先進先出:

$ echo "\\end" > fifo 

然後$乳膠FIFO輸出變爲:

This is pdfTeXk, Version 3.1415926-1.40.9 (Web2C 7.5.7) 
%&-line parsing enabled. 
entering extended mode 

然而,LaTeX的過程永遠不會結束。你怎麼才能讓LaTeX結束?我試着發送它chr(0)和chr(4)(即ctrl-d),但都不起作用。是否有一些命令會告訴LaTeX退出(即\退出)?

感謝您的閱讀。

編輯

$ echo "story\\end" > fifo 

(同時,在TEX:

按預期當您運行TEX代替乳膠的變體則以下作品值得注意控制檯)

$ tex fifo 
This is TeX, Version 3.1415926 (Web2C 7.5.7) 
(./fifo [1]) 
Output written on fifo.dvi (1 page, 212 bytes). 
Transcript written on fifo.log. 

何wever,雖然張國榮蘭波特在一個文檔準備系統的LaTeX指出233頁上\最終被替換\年底{文件},既不以下的結束一個LaTeX會話:

$ echo "\begin{document}story\end{document}" 
$ echo "\\begin{document}story\\end{document}" 

回答

2

我建議允許你的shell到FIFO管道直接在標準

latex < fifo 

當我這樣做,我得到這個輸出第一:

This is pdfeTeXk, Version 3.141592-1.21a-2.2 (Web2C 7.5.4) (format=latex 2009.3.25) 18 SEP 2009 14:25 
entering extended mode 
file:line:error style messages enabled. 
%&-line parsing enabled. 

,然後echo命令後:

**\end 

* 
! Emergency stop. 
<*> \end 

End of file on the terminal! 
+0

brianegge:非常感謝您的回答 - 確實有效,但它會隨着-interaction = nonstopmode而爆炸,並且會使日誌混亂。 「(請輸入命令或說'\ end')」。 – 2009-09-18 04:47:42

1

如果我贊同一個空行到FIFO中第一和然後呼應文檔的其餘部分,它工作正常。

mkfifo test 
latex test 

其他控制檯:

echo "" > test 
echo "\documentclass{report}\begin{document}asdf\end{document}" > test 

第一個控制檯:

xdvi test 

我的猜測是,乳膠使得文件的兩個通道,而TeX的沒有。在第一遍時,LaTeX嘗試確定某些內容,然後關閉該文件,並在第二遍時重新打開該文件。

+0

@dreamlax:感謝您的回覆。當我嘗試使用xelatex時遇到以下錯誤:! LaTeX錯誤:缺少\ begin {document}。 請參閱LaTeX手冊或LaTeX Companion以獲取解釋。 H型號尋求即時幫助。 ... l.1 o cumentclass {report} \ begin {document} asdf \ end {document} – 2009-09-18 04:51:19

+0

@dreamlax:我注意到它可以正常使用LaTeX。男孩。 – 2009-09-18 04:54:47

+0

@布萊恩:哦,聽起來像是一個複雜問題的大網站。 。 。如果你將相同的東西兩次回覆到xelatex而不是首先回顯空行,會發生什麼? – dreamlax 2009-09-18 04:58:09