如果 LaTeX 工具从头开始实现 TeX 功能

如果 LaTeX 工具从头开始实现 TeX 功能

我刚刚问过关于 LaTeX 用于文本布局的算法或技术的文档,从而导致LaTeX 的替代品其中指出了一些工具,例如语境我也听说过 LuaTeX,密克泰克斯TeX 直播, 和别的。

我不熟悉这些不同的“LaTeX 工具”是如何工作的,这也是这个问题的答案。我想知道他们是否真的实现了 TeX划痕也就是说,他们以某种方式读到了调查报告并实现了所有算法,而无需借助某些标准/中央 TeX 库。我所说的标准/中央 TeX 库是指实现研究论文中所有算法的中央代码存储库。如果所有这些工具都是从头开始实现研究,那么这将是一个有用的学习工具。

如果我列出的工具(以及其他类似的工具)只是围绕中央 TeX 库的包装器,那么我想知道那个中央库是什么。我见过https://github.com/latex3/latex2e,但考虑到LaTeX 和 TeX 不同,我不确定是否会考虑这一点tex-core。这个问题TeX、LuateX、pdfTeX 的源代码在哪里导致计算机辅助设计(还这里,看起来像是写在网络, 和如何编译它),但不确定是否所有东西都在使用它。如果有多种不同的 TeX 研究实现,那也会很有帮助。

答案1

你把不同种类的东西混为一谈了。此外,我认为你可能犯了分类错误,尽管我不确定。

  • MikTeX 和 TeX Live 是 TeX 的发行版,其含义是“全部”,或者更准确地说是“大部分”。如果安装它们,您将获得 TeX、LuaTeX、ConTeXt、XeTeX、LaTeX、一堆软件包、脚本、附加工具等。

  • TeX、pdfTeX、LuaTeX、XeTeX 和 ConTeXt 都是引擎。它们将.tex文件转换为可处理的文档:DVI 或 PDF。

  • plain、LaTeX 和 ConTeXt 都是格式。它们由核心 TeX 提供的原语构建而成。如果人们说他们使用的是 TeX,而不是 LaTeX,他们通常意味着他们使用的是 plain 格式。但这仍然是一种建立在核心之上的格式,就像其他格式一样。

    这份清单并不全面。有很多格式,你可以很容易地制作自己的格式。但这些可能是最知名的,至少在西方是如此。

    核心 TeX 和纯格式的描述见TeX 书。Lamport 的书和随该格式提供的文档中都描述了 LaTeX。据我所知,使用 LaTeX 格式相当于加载latex.ltx。使用 plain 相当于加载包含该格式定义的宏的文件。

ConTeXt 既是一个引擎,又是一种格式。

否则,你必须

  • 格式 + 引擎 -> 二进制或按名称二进制

  • 纯文本 + TeX ->tex

  • LaTeX + TeX ->latex
  • 纯文本 + pdfTeX ->pdftex
  • LaTeX + pdfTeX ->pdflatex
  • 普通 + LuaTeX ->luatex
  • LaTeX + LuaTeX ->lualatex
  • 普通 + XeTeX ->xetex
  • LaTeX + XeTeX ->xelatex

格式只是一堆预编译的代码,您可以加载,但它会更慢且不太方便。

上述许多二进制文件都是按名称二进制文件,我的意思是两个不同的名称调用同一个二进制文件,其行为取决于调用名称。

lrwxrwxrwx 1 texlive texlive    6 Tach 25  2016 ../bin/x86_64-linux/latex -> pdftex*
lrwxrwxrwx 1 texlive texlive    6 Tach 25  2016 ../bin/x86_64-linux/lualatex -> luatex*
-rwxr-xr-x 1 texlive texlive 8.4M Ebr   2 18:10 ../bin/x86_64-linux/luatex*
lrwxrwxrwx 1 texlive texlive    6 Tach 25  2016 ../bin/x86_64-linux/pdflatex -> pdftex*
-rwxr-xr-x 1 texlive texlive 2.1M Maw  26 23:02 ../bin/x86_64-linux/pdftex*
-rwxr-xr-x 1 texlive texlive 371K Maw  21 21:47 ../bin/x86_64-linux/tex*
lrwxrwxrwx 1 texlive texlive    5 Tach 25  2016 ../bin/x86_64-linux/xelatex -> xetex*
-rwxr-xr-x 1 texlive texlive  23M Ebr   2 18:10 ../bin/x86_64-linux/xetex*

如您所见,调用pdflatex与调用相同的二进制文件pdftex。不同之处在于前者导致使用指定 LaTeX 格式的选项。

正如在回答你上一个问题时所说,TeX 书和 TeX 的源代码是需要查看的地方。其余的只是详细说明。

LaTeX 3 项目涉及 LaTeX 格式的第三个主要版本的开发。目前的版本是 2e,尽管 L3 项目的某些部分目前可以在 2e 之上使用。与 2.09 和 2e 以及(大概)版本 1 一样,这“只是”一种基于 TeX 的格式。它与 TeX 并无不同,因为它是一种替代品。它与 TeX 的区别就像房子与地基的区别一样。

您链接的 CTAN 页面包含一些扩展的链接,例如 eTeX 和 pdfTeX。因此您可以查看例如https://tug.org/svn/pdftex/branches/stable,但您看到的是扩展版本,而不是基本版本,即如果您只想要核心,请查看核心的源代码。如果您想了解它是如何重新实现和扩展的,请查看 eTeX 或 pdfTeX 或 LuaTeX 或任何其他的源代码。

相关内容