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. 【论文阅读】Optimization-Based Collision Avoidance

    前言与参考 论文地址:https://ieeexplore.ieee.org/document/9062306 文章是2018年5月提出的,但是到了2020年才发表到ACC 所以时间轴上写的是2021 ...

  2. ubuntu 同时安装python2 和 python3 版本的 gunicorn

    前言 最近在学习使用 gunicorn 部署 flask 项目.发现使用 pip3 安装完 gunicorn后,如如果再使用 pip2 安装 gunicorn,后安装的 gunicorn 就会覆盖掉原 ...

  3. Java使用不同方式优雅拆分业务逻辑

    如何处理复杂的业务逻辑 在实际的业务开发当中,经常会遇到复杂的业务逻辑,可能实现出来的代码并没有什么问题,但是代码的可读性很差. 那么在实际开发中如何避免大面积的 if-else 代码块的问题? 补充 ...

  4. 一天快速入门Django:从0到1创建属于自己的Web应用

    DjangoWeb开发 Day1 1. Django的安装 pip install django 2. 创建项目 2.1 终端创建 "python环境路径\scripts\django-ad ...

  5. 自动修改网卡 IP

    1. 讲个故事 我的一同事需要调试 PLC,需要经常修改电脑 IP 在各个工位的 PLC 间来回连接.于是,每次需要改变 IP 的时候都是手动点开网络管理界面然后再修改.终于有一天,一天改 80 次 ...

  6. 国内版Unity 2023编辑器无法切换到DX12模式的解决方法

    2024.7.4更新:至6000.0.5f1c1,此问题已修复 在{安装目录}\Editor里(也就是Unity安装的根目录)建立一个名叫D3D12的文件夹. 去{安装目录}\Editor\Data\ ...

  7. AT_abc180_d 题解

    洛谷链接&Atcoder 链接 本篇题解为此题较简单做法及较少码量,并且码风优良,请放心阅读. 题目简述 现有 \(STR\) 和 \(EXP\) 两个变量,初始化分别为 \(X\) 和 \( ...

  8. 简单的字符串处理函数_C语言

    字符串数组 // Code file created by C Code Develop #include "stdio.h" #include "stdlib.h&qu ...

  9. AppiumDesktop控制手机和安卓模拟器

    前言: 本期内容 如何用AppiumDesktop连接安卓手机和安卓模拟器 AppiumDesktop基本参数的获取方法,及如何驱动安卓设备 AppiumDesktop在模拟登陆和爬虫中用到的基本功能 ...

  10. Jmeter循环控制器

    循环控制器(Loop Controller),循环控制器会将该控制器里面所有请求循环运行指定次数 循环次数:勾选"永远"则程序会一直循环运行不会停止,不勾选"永远&quo ...