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.pswp.cn/pingmian/79021.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/79021.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/79021.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【Unity】一個UI框架例子

使用框架前置條件:調整腳本運行順序, Canvas掛載UIManager, Panel掛載對應的UIController、UI控件掛載UIControl。 UIManager:UI管理器,用于處理和管理各個UIController和UIControl的業務邏輯,掛載在Canvas上; UIController:界面層…

kalibr:相機模型

文章目錄 ??簡介Kalibr標定支持的相機模型及適用場景?? 針孔相機模型(Pinhole)?? 全向相機模型(Omnidirectional)?? 特殊模型?? 選型建議?? 注意事項??簡介 Kalibr作為多傳感器標定的重要工具,支持多種相機模型以適應不同光學特性的視覺傳感器。其核心相機…

今日行情明日機會——20250430

指數目前仍然在震蕩區間,等后續的方向選擇以及放量后的主線~ 2025年4月30日漲停主要行業方向分析 一、核心主線方向 機器人概念(政策催化技術突破) ? 漲停家數:18家。 ? 代表標的: ? 全筑股份(工業機器…

量子加密通信:打造未來信息安全的“銅墻鐵壁”

在數字化時代,信息安全已成為全球關注的焦點。隨著量子計算技術的飛速發展,傳統的加密算法面臨著前所未有的挑戰。量子計算機的強大計算能力能夠輕易破解現有的加密體系,這使得信息安全領域急需一種全新的加密技術來應對未來的威脅。量子加密…

微信小程序中基于 SSE 實現輕量級實時通訊 —— 原理、實踐與對比分析

本文系統梳理了在微信小程序開發中,如何使用 SSE(Server-Sent Events)方式實現輕量級即時通訊,結合實際項目實踐,詳細講解原理、實現流程、對比 WebSocket/TCP/UDP 通訊方式,并給出完整模塊封裝與最佳實踐建…

OpenCV 圖形API(73)圖像與通道拼接函數-----執行 查找表操作圖像處理函數LUT()

操作系統:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 編程語言:C11 算法描述 對矩陣執行查找表變換。 函數 LUT 使用來自查找表中的值填充輸出矩陣。輸入矩陣中的值作為查找表的索引。也就是說,函數對 src 中的…

MyBatis 類型處理器(TypeHandler)注冊與映射機制:JsonListTypeHandler和JsonListTypeHandler注冊時機

下面幾種機制會讓你的 List<String>/Map<String,?> 能正確讀寫成 JSON 數組&#xff0f;對象文本&#xff1a; MyBatis-Plus 自動注冊 最新版本的 MyBatis-Plus starter 會把類路徑下所有帶 MappedTypes({List.class})、MappedJdbcTypes(JdbcType.VARCHAR) 這類注…

專題二十一:無線局域網——WLAN

一、WLAN簡介 WLAN&#xff08;Wireless Local Area Network &#xff09;無線局域網&#xff0c;使用的是 IEEE 802.11 標準系列。 標準版本發布年份最大傳輸速率頻段Wi-Fi代數特點/描述IEEE 802.1119971–2 Mbps2.4 GHzWi-Fi 0最早的無線局域網標準&#xff0c;傳輸速率低&…

python多進程的使用

多進程編程全面指南&#xff1a;從入門到實踐 摘要&#xff1a;本文是為初學者設計的Python多進程編程全攻略&#xff0c;涵蓋基礎概念、核心函數詳解、系統特性分析&#xff0c;并附帶流程圖、測試用例、開源項目推薦和經典書籍清單。通過8個實戰代碼示例和3個性能對比實驗&am…

數據庫管理與安全:從用戶權限到備份恢復的全面指南

引言 在數字化時代&#xff0c;數據已成為組織最寶貴的資產之一。數據庫作為存儲和管理這些數據的核心系統&#xff0c;其安全性和可靠性直接關系到企業的運營和發展。無論是金融交易記錄、醫療健康信息&#xff0c;還是電子商務平臺的用戶數據&#xff0c;都需要通過完善的數…

Electron Forge【實戰】帶圖片的 AI 聊天

改用支持圖片的 AI 模型 qwen-turbo 僅支持文字&#xff0c;要想體驗圖片聊天&#xff0c;需改用 qwen-vl-plus src/initData.ts {id: 2,name: "aliyun",title: "阿里 -- 通義千問",desc: "阿里百煉 -- 通義千問",// https://help.aliyun.com/z…

在 Elastic 中使用 JOIN 進行威脅狩獵!

作者&#xff1a;來自 Elastic Paul Ewing, Jonhnathan Ribeiro Elastic 的管道查詢語言 ES | QL 為查詢帶來了 join 功能。 威脅狩獵者歡呼吧&#xff01;你是否一直在尋找一種通過 Elastic 的速度和強大功能來連接數據的方法&#xff1f;好消息&#xff01;Elastic 現在可以通…

從實列中學習linux shell5: 利用shell 腳本 檢測硬盤空間容量,當使用量達到80%的時候 發送郵件

下面是用于檢測硬盤空間并在使用量達到80%時發送郵件的Shell腳本 第一步 編寫腳本 #!/bin/bash# 郵件配置 recipient"zhaoqingyou99qhzt.com" subject"磁盤空間警報" mail_cmd"/usr/bin/mail" # 根據實際郵件命令路徑修改# 檢查是否安裝郵件工…

Ethan獨立開發產品日報 | 2025-04-30

1. Daytona 安全且靈活的基礎設施&#xff0c;用于運行你的人工智能生成代碼。 Daytona Cloud重新定義了AI代理的基礎設施&#xff0c;具備低于90毫秒的啟動時間、原生性能和有狀態執行能力&#xff0c;這些是傳統云服務無法比擬的。您可以以前所未有的速度和靈活性來創建、管…

Unity SpriteMask(精靈遮罩)

&#x1f3c6; 個人愚見&#xff0c;沒事寫寫筆記 &#x1f3c6;《博客內容》&#xff1a;Unity3D開發內容 &#x1f3c6;&#x1f389;歡迎 &#x1f44d;點贊?評論?收藏 &#x1f50e;SpriteMask&#xff1a;精靈遮罩 &#x1f4a1;作用就是對精靈圖片產生遮罩&#xff0c…

OpenHarmony全局資源調度管控子系統之內存管理部件

OpenHarmony之內存管理部件 內存管理部件 簡介目錄框架 進程回收優先級列表 補充 回收策略/查殺策略 使用說明參數配置說明 availbufferSizeZswapdParamkillConfignandlife 相關倉 簡介 內存管理部件位于全局資源調度管控子系統中&#xff0c;基于應用的生命周期狀態&#…

姜老師的MBTI課程筆記小結(1)ENFJ人格

課程文稿&#xff1a; 好&#xff0c;今天我們的重點其實并不在ENTJ&#xff0c;而是在于如果一個人其他都很像&#xff0c;只是在思考和感受這兩端選擇的時候&#xff0c;他缺了思考而更尊重感受&#xff0c;它會是什么樣的一個人格特質呢&#xff1f;這就是ENFG在16人格的學派…

Node.js 應用場景

Node.js 應用場景 引言 Node.js 是一個基于 Chrome V8 JavaScript 引擎的開源、跨平臺 JavaScript 運行環境。它主要用于服務器端開發&#xff0c;通過非阻塞 I/O 模型實現了高并發處理能力。本文將詳細介紹 Node.js 的應用場景&#xff0c;幫助你了解其在實際項目中的應用。…

Qt/C++面試【速通筆記六】—Qt 中的線程同步

在多線程編程中&#xff0c;多個線程同時訪問共享資源時&#xff0c;可能會出現數據不一致或者錯誤的情況。這時&#xff0c;我們需要線程同步機制來保證程序的正確性。Qt 提供了多種線程同步方式&#xff0c;每種方式適用于不同的場景。 1. 互斥鎖&#xff08;QMutex&#xff…

JDK-17 保姆級安裝教程(附安裝包)

文章目錄 一、下載二、安裝三、驗證是否安裝成功1、看 java 和 javac 是否可用2、看 java 和 javac 的版本號是否無問題 一、下載 JDK-17_windows-x64_bin.exe 二、安裝 三、驗證是否安裝成功 java&#xff1a;執行工具 javac&#xff1a;編譯工具 1、看 java 和 javac 是否…