latex - 在命名管道 (fifo) 上调用 LaTeX?

标签 latex named-pipes fifo

我在 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/

相关文章:

c# - Windows 和 Linux 应用程序之间的管道

embedded - 嵌入式系统中线程安全的单消费者、单生产者 FIFO

linux - 中断处理程序可以写入 FIFO

r - 在苏门答腊 PDF 阅读器中打开编译的 .rnw 的自定义函数?

LaTeX Beamer 包,在\againframe 中更改框架标题

latex - 我如何在 latex 中垂直和水平地居中报价?

windows - 如何优雅地停止正在监听 Windows 管道的服务器进程

r - 使用 knititations 在 RMarkdown 文档中包含引用书目

node.js - aws FIFO 队列返回空队列,即使它有可用消息