TeX、LaTeX、XeTeX 和 XeLaTeX 之间的关系
TL;DR
总的来说,在 TeX 世界有两个主要概念,一个是 TeX,一个是 LaTeX。TeX 是一个排版引擎,它为用户提供的排版命令较为底层。LaTeX 是在 TeX 的基础上制作的宏包,它可以让用户不再关注那些底层命令。XeTeX 和 XeLaTeX 分别是 TeX 和 LaTeX 的 Unicode 版本,他们弥补了 TeX 和 LaTeX 只能编译英文文档的缺陷,其使用的命令与 TeX 和 LaTeX 完全相同。
LaTeX 和 TeX
LaTeX 和 TeX 的关系可以用下面的方式描述:
- TeX 是一种由 Donald Knuth 在 1978 年创建的排版系统,它提供了一套强大的宏语言及工具用于排版文档,特别是数学、物理学和计算机科学的论文。TeX 是底层的排版引擎,它允许用户通过编程式的方式精确控制文档的版面布局。
- LaTeX 是一个构建在 TeX 之上的宏包,由 Leslie Lamport 在 20 世纪 80 年代初期开发。LaTeX 使用 TeX 作为其排版引擎,但为用户提供了更加方便、抽象化的接口来撰写和排版文档。LaTeX 通过预定义好的模板(称为类文件)和宏命令,简化了文档的排版流程,让用户更加专注于内容的编写而不是版面设计的细节。
- 总结来说,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 之间的关系的更多相关文章
- TeX 家族(TeX, pdfTeX, XeTeX, LuaTeX, LaTeX, pdfLaTeX, XeLaTeX …)
TeX 家族 带有 TeX 的词,仅仅是本文就已经提到了 TeX, LaTeX, XeLaTeX.通常中国学生面对不了解意思的一群形近单词,都会有一种「本能的恐惧」(笑~).因此,「大神们」在为新手介 ...
- .NET Core与.NET Framework、Mono之间的关系
随着微软的.NET开源的推进,现在在.NET的实现上有了三个.NET Framework,Mono和.NET Core.经常被问起Mono的稳定性怎么样,后续Mono的前景如何,要回答这个问题就需要搞 ...
- .NET Core 和 .NET Framework 之间的关系
引用一段描述:Understanding the relationship between .NET Core and the .NET Framework. .NET Core and the .N ...
- 实体之间的关系【Entity Relationships】(EF基础系列篇9)
Here, you will learn how entity framework manages the relationships between entities. Entity framewo ...
- php CGI、Fastcgi、PHP-FPM的详细介绍与之间的关系
以下PHP CGI.Fastcgi.PHP-FPM的一些信息归纳和汇总----->详细介绍与之间的关系 一:CGI是干嘛的?CGI是为了保证web server传递过来的数据是标准格式的 web ...
- [转] valuestack,stackContext,ActionContext.之间的关系
三者之间的关系如下图所示: ActionContext 一次Action调用都会创建一个ActionContext 调用:ActionContext context = ActionContext ...
- angular源码阅读,依赖注入的原理:injector,provider,module之间的关系。
最开始使用angular的时候,总是觉得它的依赖注入方式非常神奇. 如果你跳槽的时候对新公司说,我曾经使用过angular,那他们肯定会问你angular的依赖注入原理是什么? 这篇博客其实是angu ...
- JavaScript和Java之间的关系
今天来简单而又详细地说说JavaScript和Java的关系. 开门见山总结性一句话,它们之间的关系 = 雷锋和雷峰塔之间的关系,换句话说:它们之间没什么关系. 但往往有不少初学者甚至中级者认为它们之 ...
- PHP类和对象之间的关系
类是对象的描述: 类和对象之间的关系类似于建房子的图纸和房子: 创建类--new对象--用对象: 一.对象的两个特性: --对象的行为(功能):可以对对象施加操作,例如,电视机的开.关.转换频道: - ...
- 关于计算机的ID和用户ID之间的关系
关于计算机的ID和用户ID之间的关系 计算机安装完系统后就会生成计算机ID,然后系统会以计算机ID为前缀附加数字创建Administrator(500)和Guest(501)用户ID,其他用户的ID将 ...
随机推荐
- python基础-字典dict {key:value }
字典的定义和操作 字典的特性: 元素数量 支持多个 元素类型 key :value key:除字典外的任何类型 Value:任何类型 下标索引 不支持 重复元素 key不支持 可修改性 支持 数据有序 ...
- RPC和心跳机制
hadoop在节点间的内部通讯使用的是RPC,RPC协议把消息翻译成二进制字节流发送到远程节点,远程节点再通过反序列化把二进制流转成原始的信息. namenode与datanode之间的通信,jobt ...
- Java -jar 启动程序参数说明
Springboot环境下的启动参数说明 # Java启动命令语法: java [options] -jar file.jar [arguments] java -jar [options] file ...
- Vue 处理异步加载顺序问题:在Konva中确保文本在图片之上显示
Vue 处理异步加载顺序问题:在Konva中确保文本在Konva之上显示 在使用Konva开发应用时,我们经常会遇到需要将文本绘制在图片之上的情况.一个常见的问题是,由于图像加载是异步的,文本有时会显 ...
- Java核心基础之数据类型
Java内置数据类型 计算机基础知识 bit 位 ,即0或者1, 0101010110 byte字节,8位作为⼀个字节,字节是处理数据的基本单位 1 byte = 8bits 1KB = 1024 b ...
- 解锁网络无限可能:揭秘微软工程师力作——付费代理IP池深度改造与实战部署指南
基于付费代理的代理IP池 项目来源 此项目为微软某个工程师构建的代理IP池,我对此进行了改造.可以用于生产环境中的爬虫项目 阅读前建议 阅读我之前发布的爬虫基础的文章,了解代理如何获取.使用等. 分为 ...
- django如何将查询结果的栏位和数值自动遍历出来
在Django中,MT003HModel.objects.all() 返回的是一个 QuerySet 对象,你可以使用迭代器来遍历其中的每个对象,然后访问对象的属性来获取栏位和数值. 以下是一个简单的 ...
- [oeasy]python0116_文字的起源_苏美尔文明_楔形文字_两河流域
文字起源 回忆上次内容 上次回顾了西里尔字符的编码过程 KOI-7 KOI-8 ISO-8859 系列进行总结 字符扩展 ascii 共 16 种 由iso组织制定 从 iso-8859-1 到 ...
- Day 5 - 双指针与折半搜索
双指针 本页面将简要介绍双指针. 引入 双指针是一种简单而又灵活的技巧和思想,单独使用可以轻松解决一些特定问题,和其他算法结合也能发挥多样的用处. 双指针顾名思义,就是同时使用两个指针,在序列.链表结 ...
- Java maven构建命令使用总结
实践环境 Apache Maven 3.0.5 (Red Hat 3.0.5-17) maven构建生命周期 学习Maven构建命令之前,我们不烦先简单了解下Maven构建生命周期. Maven基于构 ...