关于 XeTeX 和 XeLaTeX 之间的区别以及它们与 TeX 和 LaTeX 的关系的问题?

关于 XeTeX 和 XeLaTeX 之间的区别以及它们与 TeX 和 LaTeX 的关系的问题?

问题的最简短版本(看到评论后):

XeTeX 和 XeLaTeX 之间的唯一区别在于命令xetexxelatex兼容性不同TeX乳胶格式化的文档?

那就是特克斯西拉特克斯排版引擎实际上是相同的,并且和xetex都是xelatex这些引擎的命令,并且这些命令有所不同。


XeTeX和之间的主要区别是什么?它们只是和XeLaTeX之间的类似区别吗?前者是一个排版引擎,带有一组基本的宏(),而后者是一组更全面的宏?TeXLaTeXplain-tex

是否XeTeX包含LaTeX宏?在XeTeX网页,似乎暗示了这一点,说

XeTeX现在是标准TeX发行版的一部分TeX 直播并且可以与和之TeX类的宏包很好地配合。LaTeXConTeXt

XeTeX如果是这样,那么在处理您的文档时是否需要特别调用它们?

此外,如果LaTeX在某种意义上已经“包含”在 中XeTeX,那么 有什么不同XeLaTeX?即XeTeX和是否XeLaTeX相同?

维护者是否XeTeX与 的维护者相同XeLaTeX?如果是,在哪里可以找到有关此信息(请注意,它不包含在 TUG 链接参考 XeTeX也不是XeTeX网页)?

是否有 支持的软件包XeTeX不受 支持的软件包? 这些软件包是否XeLaTeX与 支持的软件包相同?TeXLaTeX

是否有 支持的软件包XeLaTeX不受 支持的软件包? 这些软件包是否LaTeX与 支持的软件包相同?LaTeXTeX

XeTeX结构是否能够自动合并对代码库TeX的更新?LaTeX

结构是否能够自动合并XeLaTeX更新TeXLaTeX代码库?


正如预期的那样,这个问题被标记为重复,它包含了以前的问题所没有的许多其他方面(例如,询问维护者西拉特克斯),并且我已就其不同之处作了序言说明。如果您认为这是重复的,请阅读下文。

类似的问题实际上已经之前问过,但它被列为重复,指向的问题实际上并未回答有关XeTeX和之间差异的原始问题XeLaTeX我是 TeX 新手。我应该使用 LaTeX、XeLaTeX 还是……?回答了关于新用户最喜欢使用哪种排版引擎的问题。XeTeX和之间的区别XeLaTeX并没有写在任何地方;事实上,XeTeXXeLaTeX甚至没有出现在同一个句子或同一个段落中。

另一个问题中似乎有一个答案几乎成立(TeXworks 编辑器中的 XeTeX 和 XeLaTeX),但实际上似乎并不准确,因为它声称在以该LaTeX格式书写时不能使用 XeTeX。TeXworks 中的选项可能实际上遵循了这一约定,即使该xetex命令在命令行中运行时本身能够处理LaTeX格式化的文档。

我今天花了很长时间试图找到这个问题的答案,然后我本来想将其写成一篇博客文章,但我找不到任何明确的答案。

在将其标记为重复之前,请考虑以下事项:

  • 即使存在和,它们之间的关系也XeTeX并不明显。例如,和也共享此命名约定,但它们之间的差异与和之间的差异不同。XeLaTeXTeXLaTeXBibTeXBibLaTeXTeXLaTeX
  • 如果你看看关于XeTeX或 的许多问题和答案,这两个术语的使用就好像它们可以自由交换一样(当然,和 的XeLaTeX情况并非如此)。事实上,问题作者在TeXLaTeXTeXworks 编辑器中的 XeTeX 和 XeLaTeX明确陈述这一假设。
  • 的网页没有提及和XeTeX之间的关系,关于的大部分文档只是间接地提到了命令(如果有的话),并且似乎没有自己的网页。XeTeXXeLaTeXXeTeXxelatexXeLaTeXXeLaTeX
  • 我猜这个问题被搜索得足够频繁,以至于将答案与符合人们预期搜索词的问题联系起来对许多人来说都是有用的。即使关于TeXWorks“新用户应该使用哪个引擎”的问题回答了这个问题(如上所述,它们没有回答),它们也不会成为人们寻找答案的搜索对象。

答案1

tex

tex是一个可执行文件——一个可运行的程序。默认情况下,它预加载了 Plain TeX 格式,因此当您运行时,tex file.tex它已准备好读取 中定义的宏plain.tex。它产生 DVI 输出。

pdftex

pdftex是可执行文件的另一个版本tex,其中包含对原始程序的某些扩展(扩展e-tex,包括附加内存寄存器)。默认情况下,它会直接生成 PDF 输出,而不是 DVI。它还预加载了 Plain TeX 格式。


latex

该命令latex调用pdftex程序(或“引擎”),但预加载 LaTeX 格式而不是 Plain TeX,并设置为产生 DVI 输出。

pdflatex

该命令pdflatex调用pdftex引擎,但预加载 LaTeX 格式而不是 Plain TeX,并设置为生成 PDF 输出。


xetex

xetextex是与和不同的可执行文件pdftex。它包括对原始程序的扩展,以允许 Unicode 输入和从右到左排版等功能。默认情况下,它预加载了 Plain TeX 格式并生成 PDF 输出。

xelatex

该命令xelatex调用xetex引擎,但预加载 LaTeX 格式而不是 Plain TeX,并生成 PDF 输出。


luatex

luatex是另一个不同的可执行文件,是 的部分重新实现,tex其中包含lua脚本语言。与 一样xetexluatex它被构建为接受 Unicode 输入。它预加载了 Plain TeX 格式并生成 PDF 输出。

lualatex

该命令lualatex调用luatex预加载的 LaTeX 格式(而不是 Plain TeX)的引擎,并生成 PDF 输出。


例子

纯 TeX 格式

您可以使用texpdftexxetex或成功编译此 Plain Tex 文件luatex

Test of Plain \TeX.\bye

带有 Unicode 输入的纯 TeX 格式

如果使用 Unicode 字符,则只能通过运行xetexluatex 选择包含它们的字体:

\font\tenrm=ecrm1000 \rm
Test of Unicode with Plain \TeX: Matthäuspassion, esdrújulo.\bye

LaTeX 格式

要编译 LaTeX 文档,请使用latexpdflatexxelatexlualatex

\documentclass{article}
\begin{document}
Test of \LaTeX.
\end{document}

带有 Unicode 输入的 LaTeX 格式

如果使用 Unicode 字符,则可以通过两种方式打印它们:

  1. 使用和包pdflatex设置正确的输入和字体编码 ,或者 inputencfontenc
  2. 使用xelatexlualatex并使用包选择一个 Unicode 字体fontspec

为了pdflatex

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\begin{document}
Test of Unicode with \LaTeX: Matthäuspassion, esdrújulo.
\end{document}

对于xelatexlualatex

 \documentclass{article}
 \usepackage{fontspec}
 \setmainfont{Latin Modern Roman}
 \begin{document}
 Test of Unicode with \LaTeX: Matthäuspassion, esdrújulo.
 \end{document}

答案2

我不知道这是否是一个完整的答案,但根据迄今为止对这个问题的评论,答案的某些部分开始形成。

因为问题具体询问了 XeTeX 和 XeLaTeX,所以我将具体解决它,但正如所选答案所建议并在评论中指出的那样,XeTeX 和 XeLaTeX 之间的关系没有什么特别之处。但是,由于这种特殊性,可以更详细地讨论,尽管如果不修改其他情况(至少在命令中输入的确切字符方面),它就不会概括。

这里有两类事物被混为一谈:特克斯是一个排版引擎,西拉特克斯是用于编译的格式文件乳胶格式化的文档特克斯引擎,xetex命令行命令是实际执行编译的二进制文件,并且xelatex是将适当格式的文件包含到命令中的便捷包装函数xetex

如果你谈到特克斯西拉特克斯因为两者都是排版引擎,所以两者之间没有区别(或者你描述错了西拉特克斯作为排版引擎)。

但是,xetexxelatex命令并不相同。事实上,是带有特定参数的命令xelatex的便捷包装器。xetex

xetex将无法使用指定的指令代码编译文档乳胶格式文件,它需要纯文本格式的文档,就像tex二进制文件一样。
xelatex是一个包装器,本质上与xetex "&xelatex"能够处理乳胶格式化的文档,其中涉及xelatex.ini作为序言的一部分进行调用。

这个答案对于澄清这一点有很大帮助:https://tex.stackexchange.com/a/126634/67313

您可以使用以下方式生成必要的格式文件xetex --ini latex.ltx,请参阅如何从 xetex 源构建 xelatex,尽管看起来可能需要添加额外的代码来构建实际上等同于xelatex.ini格式文件的东西。

也感谢评论中的每个人帮助我澄清我的理解和描述中“不正确”的地方。

相关内容