如何编写真正的“Hello World”程序

如何编写真正的“Hello World”程序

几乎所有编程语言中最简单的任务之一就是编写一个将“Hello World”写入终端的程序。TeX 中类似的事情是:

tex '\empty Hello world! \bye'

但是,这会创建一个 dvi 文件,其中Hello World写入但不会Hello World在终端中写入“ ”。

因此我的问题是,真正的 Hello World 程序(打印到终端)在 TeX 中是什么样的?

答案1

TeX 是一个排版程序,所以如果你“只是写”了一些东西,它将进入输出 DVI 或 PDF 文件。要让它写入终端,你需要明确地告诉它。有几种方法可以做到这一点,根据你的需求,它们会产生略有不同的结果。以下是显示一些文本的几个选项:


该原语\message{<text>}会扩展<text>并将其写入终端,没有前导或尾随换行符,但消息周围有空格。

tex '\message{<}\message{Hello world!}\message{>} \bye'

印刷:

This is TeX, Version 3.14159265 (TeX Live 2020) (preloaded format=tex)
< Hello world! >
No pages of output.
Transcript written on texput.log.

\write<stream>{<text>}语将展开<text>并将其写入<stream>新行。如果<stream>未打开文件,TeX 将写入<text>终端。流 17 无法打开文件(LuaTeX 除外),因此您可以使用它写入终端(任何其他流都可以,只要它未打开)。 \immediate使\write立即执行,而不是在下一页发送出去时执行。

tex '\message{<}\immediate\write17{Hello world!}\message{>} \bye'

印刷:

This is TeX, Version 3.14159265 (TeX Live 2020) (preloaded format=tex)
<
Hello world!
>
No pages of output.
Transcript written on texput.log.

此外,在大多数当前实现中,写入流 18 将<text>作为 shell 命令执行(大多数都需要标志)。在输入文件上运行 TeX 时写入 -1 将(仅)-shell-escape写入文件。.log


原语\errmessage{<text>}会扩展<text>并将其与错误消息一起写入终端,因此 TeX 会在打印消息后提示您进行交互。

tex '\errmessage{Hello world!} \bye'

印刷:

This is TeX, Version 3.14159265 (TeX Live 2020) (preloaded format=tex)
! Hello world!.
<*> \errmessage{Hello world!}
                              \bye
? 
No pages of output.
Transcript written on texput.log.

相关内容