Вызывать LaTeX для именованного канала (fifo)? - PullRequest
2 голосов
/ 18 сентября 2009

Я использую LaTeX на именованном канале fifo в Unix. Я создаю fifo как-то так:

$ mkfifo fifo

Затем я запускаю LaTeX примерно так:

$ latex fifo

Этот процесс блокируется и не выводится, пока я не запишу в 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)?

Спасибо за чтение.

EDIT

Примечательно, что когда вы запускаете tex вместо варианта latex , тогда работает следующее, как и ожидалось:

$ echo "story\\end" > fifo

(между тем в текстовой консоли)

$ 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.

Однако, хотя Лесли Лампорт и отмечает в Системе подготовки документов LaTeX на стр. 233, что \ end был заменен \ end {document}, ни одно из следующих действий не завершает сеанс LaTeX:

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

Ответы [ 2 ]

2 голосов
/ 18 сентября 2009

Я бы предложил разрешить вашей оболочке направлять трубу 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!
1 голос
/ 18 сентября 2009

Если я сначала выводю пустую строку в fifo, а , то повторяет остальную часть документа, все работает нормально.

mkfifo test
latex test

Другая консоль:

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

Первая консоль:

xdvi test

Я предполагаю, что LaTeX делает два прохода файла, а TeX - нет. На первом проходе LaTeX пытается что-то определить, затем закрывает файл и открывает его для второго прохода.

...