TL;DR

总的来说,在 TeX 世界有两个主要概念,一个是 TeX,一个是 LaTeX。TeX 是一个排版引擎,它为用户提供的排版命令较为底层。LaTeX 是在 TeX 的基础上制作的宏包,它可以让用户不再关注那些底层命令。XeTeX 和 XeLaTeX 分别是 TeX 和 LaTeX 的 Unicode 版本,他们弥补了 TeX 和 LaTeX 只能编译英文文档的缺陷,其使用的命令与 TeX 和 LaTeX 完全相同。

LaTeX 和 TeX

LaTeX 和 TeX 的关系可以用下面的方式描述:

  1. TeX 是一种由 Donald Knuth 在 1978 年创建的排版系统,它提供了一套强大的宏语言及工具用于排版文档,特别是数学、物理学和计算机科学的论文。TeX 是底层的排版引擎,它允许用户通过编程式的方式精确控制文档的版面布局。
  2. LaTeX 是一个构建在 TeX 之上的宏包,由 Leslie Lamport 在 20 世纪 80 年代初期开发。LaTeX 使用 TeX 作为其排版引擎,但为用户提供了更加方便、抽象化的接口来撰写和排版文档。LaTeX 通过预定义好的模板(称为类文件)和宏命令,简化了文档的排版流程,让用户更加专注于内容的编写而不是版面设计的细节。
  3. 总结来说,TeX 是基础设施,提供了排版文档的基本机制和工具,而 LaTeX 是建构在这些设施之上的建筑,提供了易于使用的接口和功能。实际上,大多数使用 TeX 排版系统的用户都是通过 LaTeX 这一层来进行文档的编写和排版的,很少直接使用纯 TeX 命令进行文档排版。LaTeX 简化了 TeX 的复杂性,并扩展了它的功能,使其更加适合于撰写各类文档,从简单的文章到完整的书籍。

简而言之,LaTeX 是 TeX 的一个宏集,用户通常是与 LaTeX 交互,而 TeX 则在底层工作。

从 LaTeX 处理的代码和 TeX 处理的代码之间我们可以看出 LaTeX 和 TeX 的区别:

下面是一段简单的 TeX 代码示例:

\font\myfont=cmr12 at 12pt
\myfont
Hello, world!
\bye

上面的代码用 TeX 设置字体大小并打印 “Hello, world!”。

然后,这里是一段 LaTeX 代码示例:

\documentclass[12pt]{article}
\begin{document}
Hello, world!
\end{document}

可以看到 LaTeX 更专注于文档层面的格式调整,而 TeX 的调整则更底层。

这个 LaTeX 示例设置了一个基本的文档,包含文章类别和指定了 12pt 的字体大小,然后输出 “Hello, world!”。

这两个示例展示了 TeX 和 LaTeX 两种不同水平的使用。TeX 距离排版的低层操作更近,而 LaTeX 提供了更加用户友好的接口和更复杂的宏供用户使用。在实际应用中,LaTeX 比纯 TeX 更为常用,因为它大大简化了文档的组织。

如果要编译 TeX 文档,你可以使用 tex 工具将 .tex 文件编译为 .dvi 文件,或者使用 pdftex 工具将 .tex 文件编译为 PDF 文件。

如果要编译 LaTeX 文档,你可以使用 latex 工具将 .tex 文件编译为 .dvi 文件,或者使用 pdflatex 工具将 .tex 文件编译为 PDF 文件。

XeTeX 和 TeX

XeLaTeX、XeTeX、和 TeX 之间的关系可以通过它们各自的用途和能力来理解:

  • TeX:TeX 是由 Donald E. Knuth 开发的排版系统,它非常适合进行数学、科技和计算机文档的排版。TeX 系统提供了一系列工具用于文档排版,其中包含用于设置和调整字体、版面和间距的命令和环境。LaTeX 就是建立在 TeX 之上的一种排版系统,目的是简化文档的编写,它使用宏来自动化排版过程,让作者可以不用过多考虑文档的格式。
  • XeTeX:XeTeX(“Zee-Tech”)是由 Jonathan Kew 开发的 TeX 排版引擎,并作为 TeX Live 和其他发行版的一部分提供。XeTeX 的显著特点在于其对现代字体技术的支持,如 Unicode、OpenType 和 TrueType,这使得它能更好地支持多语言排版和复杂的字体特性。XeTeX 可以直接访问系统中安装的字体,这是传统的 TeX 和 LaTeX 系统所不能做到的。
  • XeLaTeX:XeLaTeX 实际上是在 XeTeX 之上使用 LaTeX 宏包的排版系统。它结合了 XeTeX 引擎的功能和 LaTeX 的易于使用性。XeLaTeX 使得用户能够通过 LaTeX 的语法来利用 XeTeX 的强大特性,如直接使用系统字体和复杂的文字排版能力。

总结起来,TeX 是整个系统的基础,LaTeX 是在 TeX 基础上提供高级宏的排版系统,XeTeX 是 TeX 的扩展,提供对现代字体和编码的支持,而 XeLaTeX 则将 LaTeX 的宏功能带入到 XeTeX 的世界,保留了 LaTeX 的易用性并且增加了对现代字体特性的支持。

简单地说,XeLaTeX 可以认为是 LaTeX 到 XeTeX 的过渡:它既能让你使用 LaTeX 的复杂宏来排版复杂的文档,同时又允许你利用 XeTeX 处理现代字体和编码系统的能力。

TeX、LaTeX、XeTeX 和 XeLaTeX 之间的关系的更多相关文章

  1. TeX 家族(TeX, pdfTeX, XeTeX, LuaTeX, LaTeX, pdfLaTeX, XeLaTeX …)

    TeX 家族 带有 TeX 的词,仅仅是本文就已经提到了 TeX, LaTeX, XeLaTeX.通常中国学生面对不了解意思的一群形近单词,都会有一种「本能的恐惧」(笑~).因此,「大神们」在为新手介 ...

  2. .NET Core与.NET Framework、Mono之间的关系

    随着微软的.NET开源的推进,现在在.NET的实现上有了三个.NET Framework,Mono和.NET Core.经常被问起Mono的稳定性怎么样,后续Mono的前景如何,要回答这个问题就需要搞 ...

  3. .NET Core 和 .NET Framework 之间的关系

    引用一段描述:Understanding the relationship between .NET Core and the .NET Framework. .NET Core and the .N ...

  4. 实体之间的关系【Entity Relationships】(EF基础系列篇9)

    Here, you will learn how entity framework manages the relationships between entities. Entity framewo ...

  5. php CGI、Fastcgi、PHP-FPM的详细介绍与之间的关系

    以下PHP CGI.Fastcgi.PHP-FPM的一些信息归纳和汇总----->详细介绍与之间的关系 一:CGI是干嘛的?CGI是为了保证web server传递过来的数据是标准格式的 web ...

  6. [转] valuestack,stackContext,ActionContext.之间的关系

    三者之间的关系如下图所示: ActionContext  一次Action调用都会创建一个ActionContext  调用:ActionContext context = ActionContext ...

  7. angular源码阅读,依赖注入的原理:injector,provider,module之间的关系。

    最开始使用angular的时候,总是觉得它的依赖注入方式非常神奇. 如果你跳槽的时候对新公司说,我曾经使用过angular,那他们肯定会问你angular的依赖注入原理是什么? 这篇博客其实是angu ...

  8. JavaScript和Java之间的关系

    今天来简单而又详细地说说JavaScript和Java的关系. 开门见山总结性一句话,它们之间的关系 = 雷锋和雷峰塔之间的关系,换句话说:它们之间没什么关系. 但往往有不少初学者甚至中级者认为它们之 ...

  9. PHP类和对象之间的关系

    类是对象的描述: 类和对象之间的关系类似于建房子的图纸和房子: 创建类--new对象--用对象: 一.对象的两个特性: --对象的行为(功能):可以对对象施加操作,例如,电视机的开.关.转换频道: - ...

  10. 关于计算机的ID和用户ID之间的关系

    关于计算机的ID和用户ID之间的关系 计算机安装完系统后就会生成计算机ID,然后系统会以计算机ID为前缀附加数字创建Administrator(500)和Guest(501)用户ID,其他用户的ID将 ...

随机推荐

  1. [UG 二次开发 PYTHON] 添加螺纹规格

    NX 1988 系列 在添加螺纹特征时,不能自定义螺纹规格, 从网上找到的资料上讲,改一个XML文件,在文件中添加自定义的螺纹规格,从而实现需要的效果. 自己写了一个小程序,方便手动添加螺纹规格. 效 ...

  2. 建立Model

    直接使用Sequelize虽然可以,但是存在一些问题. 团队开发时,有人喜欢自己加timestamp: var Pet = sequelize.define('pet', { id: { type: ...

  3. yb课堂之分布式应用下登陆校验解决方案 JWT讲解 json wen token 《八》

    什么是JWT? JWT是一个开放标准,它定义了一种用户简介,自包涵的用于通信双方之间以JSON对象的形式安全传递信息的方法.可以使用HMAC算法或者是RSA的公钥密钥进行签名 简单来说:就是通过一定规 ...

  4. SQLServer 的Distinct

    distinct去除重复的数据(distinct是对整个结果集进行数据重复处理,不是针对某一列) -> 检查返回不重复的数据(对于整条记录不重复才会去除,如ID不一样) 用法:select di ...

  5. 为什么学编程都从helloworld开始?

    你好世界 回忆上次内容 上次 了解了 游乐场规则 REPL       添加图片注释,不超过 140 字(可选)   print函数 可以输出 字符串"h"     添加图片注释, ...

  6. [oeasy]python0022_框架标题的制作_banner_结尾字符串_end

    ​ 结尾字符串(end) 回忆上次内容 ​python3​​ 的程序是一个 5.3M 的可执行文件 ​​python3​​ 里面存的是 cpu 指令 可以执行的那种 我们可以把指令对应的汇编找到 ​​ ...

  7. Java 网络编程(TCP编程 和 UDP编程)

    1. Java 网络编程(TCP编程 和 UDP编程) @ 目录 1. Java 网络编程(TCP编程 和 UDP编程) 2. 网络编程的概念 3. IP 地址 3.1 IP地址相关的:域名与DNS ...

  8. 广州大学第十八届ACM大学生程序设计竞赛(同步赛)——题解

    这套题我答的很失败.没有按照题目的难度去答题,前期浪费了不少时间. 题目: A-字符画 题解:思维.模拟.这道题我的通过率为62.5,没有过的原因是因为对细节的处理和把控不到位,对一些点忽视,我也记录 ...

  9. 搭建lnmp环境-nginx(第一步)

    建议: 本次lnmp采用yum形式安装,编译安装过于繁琐,操作不好还不如yum安装,所以不推荐. 全部安装在宿主机上,如果需要安装多个版本的软件才使用docker nginx无所谓版本了 刚安装好系统 ...

  10. SSH Exporter:基于Prometheus的远程系统性能监控神器

    SSH Exporter English | 中文 介绍 SSH Exporter 是一个基于 Prometheus 规范的监控工具,通过 SSH 协议远程收集目标服务器的系统性能数据,如 CPU 使 ...