我在 Unix 上的命名管道 fifo 上运行 LaTeX。我像这样创建 fifo:
$ mkfifo fifo
然后我像这样运行 LaTeX:
$ latex fifo
此进程会阻塞并且没有输出,直到我从另一个 shell 写入 fifo:
$ echo "\\end" > fifo
然后$ Latex 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 退出(即类似\exit 的命令)?
感谢您的阅读。
编辑:
值得注意的是,当您运行 tex 而不是 latex 的变体时,以下内容将按预期工作:
$ echo "story\\end" > fifo
(同时,在 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.
然而,尽管 Leslie Lamport 在第 233 页的文档准备系统 LaTeX 中指出\end 已被\end{document} 取代,但以下任一情况都不会结束 LaTeX session :
$ echo "\begin{document}story\end{document}"
$ echo "\\begin{document}story\\end{document}"
最佳答案
我建议允许您的 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!
关于latex - 在命名管道 (fifo) 上调用 LaTeX?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1442559/