当前位置: 首页 > news >正文

LaTex、pdfLaTex、XeLaTex和luaLaTex的区别和联系

之前一直搞不懂这些乱七八糟的Tex到底有啥区别,不同引擎不同编译器换来换去,查了些资料又问了下AI,总算是搞懂了。

大概是这样,很久以前有人写了个Tex排版引擎,输入一些代码命令,输出dvi文件(设备无关文件),但这个太难用了,就像汇编一样,非得专家来写不可,于是有人在这个基础上封装了一套宏,叫做LaTex,用\section、\begin{document}等内容来简化操作,久而久之就变成了一套标准,管你底下Tex怎么实现,你向上提供的接口是一样的,就像是不同的C语言编译器底下可能有不同的实现,但我写的C语言的代码语法格式都是一样的。

然后原始的Tex引擎输出dvi文件(设备无关文件),后来有人改了下这个Tex引擎,使得其能够直接输出pdf文件,更加方便更加现代,这个引擎叫做pdfTex,配合LaTex那套宏(语法标准)变成了pdfLaTex,可以理解为C语言的语法标准不变,写的代码格式什么的不变,只是底下的编译器变了,不再输出.o文件,而是一步到位输出exe或者dll等文件,当然,具体到pdfLaTex上可能还有些别的细节,但主要的区别就是这个。

后来有人觉得pdfLaTex没法混排不同的语言文字(不原生支持UTF-8),于是又改了下Tex引擎,变成了XeTex,配合LaTex那套宏变成了XeLaTex,能够支持包括中文在内的各种语言,原生支持中文,能够调用系统里的原生字体等等。

再后来有了更加复杂的排版需求,如一些动态特性或者高度自定义的需求等等,有人同样改了下Tex引擎,配合LaTex变成了luaLaTex,能够插入lua脚本,做一些很定制化的内容,同样因为需要解析脚本,所以编译速度也比较慢。

需要注意以下几点:

  1. LaTex是原始Tex引擎之上包装的一层宏语言,并非什么实体内容,算是一种标准。
  2. pdfLaTex、XeLaTex和luaLaTex都是修改了底层的Tex引擎,LaTex这套标准大家一直沿用。
  3. LaTex和pdfLaTex虽然无法支持多语言混排,但是对一些古老的宏包支持比较好,兼容性比较好。
  4. 这几种编译器并非递进关系,而是并排关系,均是出自不同需求的分支,因此在实际项目选择编译器的时候不要无脑选择最新的,而是根据实际需求选择。一般国外的期刊会议论文文章都选择LaTex或者pdfLaTex,国内的论文或者需要多语言混排的论文选择XeLaTex,需要高度自定义排版需求(如绘图)以及OpenType高级特性的选择luaLaTex。
  5. 编译速度:pdfLaTex > XeLaTex > luaLaTex。

相关文章:

  • Docker常见命令
  • 关于指针和指针算术
  • 开发常使用的团队协作工具
  • 再谈从视频中学习:从给视频打字幕的Humanoid-X、UH-1到首个人形VLA Humanoid-VLA:迈向整合第一人称视角的通用人形控制
  • 文本向量化
  • FastAPI + Redis Pub/Sub + WebSocket 组合解决方案的详细介绍
  • Redis01-基础-入门
  • 信创系统 sudoers 权限配置实战!从小白到高手
  • 引领印尼 Web3 变革:Mandala Chain 如何助力 1 亿用户迈向数字未来?
  • 刀客独家 | 潘胜接管百度移动生态市场部
  • 【Linux】Centos7 在 Docker 上安装 mysql8.0(最新详细教程)
  • 【嘉立创EDA】如何在更新或转换原理图到PCB时,保留已有布局器件
  • QML中的色彩应用
  • .dep 和.rpm有什么区别?
  • 马哥教育Linux云计算运维课程
  • 统信操作系统使用默认yum源安装 Docker 的踩坑
  • 2025通信会丨以创新技术赋能新型电力系统 锐捷知识大脑推动效率提升
  • markdown-it-katex 安装和配置指南
  • Dify框架面试内容整理-Dify如何处理知识库的集成?
  • 【Linux系统】详解Linux权限
  • 国家税务总局:“二套转首套”可以享受贷款利息个税专项扣除
  • 四川苍溪县教育局通报“工作人员辱骂举报学生”:停职检查
  • 我国首个核电工业操作系统发布,将在华龙一号新机组全面应用
  • 伊朗港口爆炸致18死800余伤,三分之二伤者已出院
  • 释新闻|SEVIS是什么?在美留学生遭身份中止意味什么?
  • 马上评丨喷淋头全是摆设,酒店消防岂能“零设防”