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. 实测分享,瑞芯微RK3588八核国产处理器性能测评!确实“遥遥领先”!

    RK3588处理器优势 RK3588是瑞芯微最新一代旗舰工业处理器,它具有如下卓越优势: 超强运算能力:四核ARM Cortex-A76@2.4GHz + 四核ARM Cortex-A55@1.8GH ...

  2. NXP i.MX 6ULL工业开发板硬件说明书( ARM Cortex-A7,主频792MHz)

    前  言 本文档主要介绍TLIMX6U-EVM评估板硬件接口资源以及设计注意事项等内容. 创龙科技TLIMX6U-EVM是一款基于NXP i.MX 6ULL的ARM Cortex-A7高性能低功耗处理 ...

  3. Java反射机制原理详解

    什么是反射? Java反射机制的核心是在程序运行时动态加载类并获取类的详细信息,从而操作类或对象的属性和方法.本质是JVM得到class对象之后,再通过class对象进行反编译,从而获取对象的各种信息 ...

  4. ASP.NET Core修改CentOS的IP地址

    最近做的一个产品中有个需求,就是客户使用的时候可以通过Web网页修改服务器的IP地址(客户是普通使用者,没有Linux使用经验,我们的产品作为一台服务器部署到客户机房,客户通过HTTP方式访问使用). ...

  5. Three光源Target位置改变光照方向不变的问题及解决方法

    0x00 楔子 在 Three.js 中,光源的目标(target)是一种用于指定光源方向的重要元素.在聚光灯中和定向光(DirectionalLight)中都有用到. 有时我们可能会遇到光源目标位置 ...

  6. 题解:AT_abc359_e [ABC359E] Water Tank

    背景 中考结束了,但是暑假只有一天,这就是我现在能在机房里面写题解的原因-- 分析 这道题就是个单调栈. 题目上问你第一滴水流到每个位置的时间.我们考虑,答案其实就是比当前木板高且距离当前木板最近的那 ...

  7. FFmpeg开发笔记(三十九)给Visual Studio的C++工程集成FFmpeg

    ​<FFmpeg开发实战:从零基础到短视频上线>一书的"第11章  FFmpeg的桌面开发"介绍了如何在Windows环境对Qt结合FFmpeg实现桌面程序,那么Win ...

  8. C#实现单例模式的6种方法

    介绍 单例模式是软件工程学中最富盛名的设计模式之一.从本质上看,单例模式只允许被其自身实例化一次,且向外部提供了一个访问该实例的接口.通常来说,单例对象进行实例化时一般不带参数,因为如果不同的实例化请 ...

  9. Fiddler 使用fiddler无法抓取苹果手机https请求问题解决方案

    使用fiddler无法抓取苹果手机https请求问题解决方案 by:授客 QQ:1033553122   测试环境 Win10 Fiddle4 IPhone6s 问题描述 使用fiddler抓取IPh ...

  10. FFmpeg开发笔记(四十一)结合OBS与MediaMTX实现SRT直播推流

    ​<FFmpeg开发实战:从零基础到短视频上线>一书的"10.2  FFmpeg推流和拉流"提到直播行业存在RTSP和RTMP两种常见的流媒体协议.除此以外,还有于20 ...