2009-09-18 108 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