每种格式都有其可执行文件/命令,将 tex 文件编译为 dvi、pdf 等文档。
例如
- 对于 TeX (正确),它的可执行文件是什么?
- 对于 Plain TeX,其可执行文件是
tex
将纯 TeX 文件转换为 dvi 文件。 - 对于 LaTex,其可执行文件是
latex
将 LaTeX 文件转换为 dvi 文件。 - 对于 ConTeXt,其可执行文件是
texexec
将 ConTeXt 文件转换为 pdf 文件。
TeX 引擎是一个程序,它可以将 tex 文件转换为 dvi、pdf 等文档,它是实现不同 TeX 格式的实际可执行二进制文件。
例如
- Knuth 的 TeX ('TeX-82')(可执行:
initex
,或 -ini 标志为tex
) - e-TeX(可执行
etex
:) - PDFTeX(可执行
pdftex
:) - XeTeX(可执行
xetex
:) - LuaTeX(可执行
luatex
:)
- Knuth 的 TeX ('TeX-82')(可执行:
请问格式的可执行文件、引擎的可执行文件、引擎的可执行文件三者之间有什么样的联系和区别呢?
谢谢!
答案1
在一开始的时候....
有 tex 和 initex (和 virtex)
initex 用于制作格式(这基本上意味着它有一个额外定义的命令\dump
,可以停止作业并保存其内部状态的二进制文件,可以加载。
virtex 是一个没有预加载格式的 vanilla tex,只有 tex 原语,你可以使用例如以下格式加载它:
virtex &plain myplain.tex
或者
virtex &latex mylatexdoc,tex
tex 与 virtex 类似,但默认为纯 tex 格式(但如果与上述 &latex 一起使用则会切换格式)
一旦基于 web2c tex 的系统开始使用替代语法,这种区别就变得模糊了。姓名程序的默认格式。因此,如果您复制tex
到latex
或只是创建一个符号链接,则可以通过任一名称调用该命令
tex file
将使用纯文本,但
latex file
将会使用 latex 尽管 tex 和 latex 是相同的可执行文件。
类似地,tex 和 initex 被合并为一个可执行文件,其使用由命令行选项控制,而现在大多数人使用的格式是全部由“pdftex”引擎驱动,该引擎结合了原始 tex 和 e-tex 扩展原语以及生成 pdf 的扩展,并且根据可执行文件的调用名称将使用纯文本或乳胶或上下文或任何其他格式。
context 的 texexec 有点不同,它是一个包装脚本,将调用 tex 和任何其他辅助程序,通常执行任何需要的操作。(所以它更像是 makefile 或其他旨在多次运行 latex/bibtex 的脚本)
答案2
没有预加载格式的引擎几乎无法使用。例如,你甚至不能做
\def\macro{something}
因为括号没有它们通常的含义。因此,引擎的每次调用通常都与预加载的格式相关联。例如,调用tex
会加载由
tex -ini -jobname=tex plain
类似地etex
,、pdftex
和xetex
preload luatex
(修改形式) Plain。
实际上etex
通常是 的符号链接pdftex
。
基于 Web2C 的二进制文件(TeX Live 或 MiKTeX 中的二进制文件)具有内置机制,通过该机制,它们可以用不同的名称调用并预加载具有相同名称的格式。例如,pdflatex
是指向 的符号链接,pdftex
并预加载pdflatex.fmt
。(在 Windows 系统上没有符号链接,但原理几乎相同。)
请注意,调用tex -ini
并不完全相同于不预加载任何格式所获得的结果;可以通过以下方式生成“无预加载格式”的 TeX 引擎
tex -ini -jobname=virtex "\dump"
并将创建的virtex.fmt
文件移动到合适的位置;当前目录适合从命令行开始进行交互式实验
tex "&virtex"
如果你\relax
在**
提示符下输入,然后\show{
在*
提示符下你得到
> the character {.
这表明支架是不是一个开始组字符。例如
\catcode`{=1 \show{
答案是
> begin-group character {.
总结:没有格式(至少进行了一些初始化)的引擎无法用于排版:引擎只知道基本命令,但甚至无法使用它们。或者必须对要排版的每个文件进行初始化。