当前位置: 首页 > 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。
http://www.xdnf.cn/news/174421.html

相关文章:

  • 打造企业级AI文案助手:GPT-J+Flask全栈开发实战
  • CodeGeeX 免费的国产AI编程助手
  • ros2的基本使用以及框架介绍(ros2入门基础)
  • 轻桌面tv版安卓版下载-轻桌面app最新版-水滴轻桌面官网下载
  • 当元数据遇见 AI 运维:智能诊断企业数据资产健康度
  • 【软件工程】 白盒测试简介
  • linux系统上使用nginx访问php文件返回File not found错误处理方案
  • Greenbone(绿骨)开源GVM容器docker部署和汉化介绍
  • rocketmq一些异常记录
  • Linux中线程池的简单实现 -- 线程安全的日志模块,策略模式,线程池的封装设计,单例模式,饿汉式单例模式,懒汉式单例模式
  • 自然语言处理之机器翻译:注意力机制在低资源翻译中的突破与哲思
  • MIT XV6 - 1.1 Lab: Xv6 and Unix utilities - sleep
  • 时空特征如何融合?LSTM+Resnet有奇效,SOTA方案预测准确率超91%
  • 2025系统架构师---解释器架构风格‌
  • 单例模式:确保类的唯一实例
  • 类间@符号装饰器
  • php:实现窗口选择数据,并返回给主页面
  • Alibaba Druid 完整配置与 Keepalive 优化指南
  • 前端分页与瀑布流最佳实践笔记 - React Antd 版
  • 前端-介绍一个好用的波浪背景生成器
  • 《操作系统真象还原》第十章(1)——输入输出系统
  • Java 设计模式
  • ADS基本操作之AC仿真
  • rt-linux下的D状态的堆栈抓取及TASK_RTLOCK_WAIT状态
  • AVFormatContext 再分析
  • 手写SpringMVC(基本框架)
  • 视觉“解锁”触觉操控:Franka机器人如何玩转刚柔物体?
  • matlab simulink中理想变压激磁电流容易有直流偏置的原因分析。
  • C++ AVL树的实现
  • 日语学习-日语知识点小记-进阶-JLPT-N2阶段(9):语法单词