> For the complete documentation index, see [llms.txt](https://overleaf-pro.ayaka.space/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://overleaf-pro.ayaka.space/latex/vi/bai-viet-chuyen-sau/55-what-s-in-a-name-a-guide-to-the-many-flavours-of-tex.md).

# Trong một cái tên có gì: Hướng dẫn về nhiều biến thể của TeX

## Giới thiệu

Có lẽ bạn đã từng nghe nói, hoặc đọc về, một thứ gọi là “TeX”, “LaTeX” hay “pdfLaTeX”—hoặc bất kỳ một trong vô số thuật ngữ nghe tương tự khác—nhưng bạn chưa thật sự chắc chúng thực sự có nghĩa là gì? Nếu vậy, bài viết này dành cho bạn: một phần giới thiệu phi kỹ thuật để giải thích nhiều biến thể của phần mềm dựa trên TeX—chúng có nghĩa là gì và vì sao chúng tồn tại. Tạm thời, chúng ta sẽ đơn giản hóa cuộc thảo luận bằng cách dùng thuật ngữ chung “TeX”, nhưng về sau chúng ta sẽ giải thích bối cảnh và ý nghĩa của nhiều dẫn xuất và biến thể của nó: LaTeX, pdfTeX, pdfLaTeX, XeTeX, XeLaTeX, LuaTeX và LuaLaTeX. Bạn có thể đã thấy một số thuật ngữ đó trong menu của Overleaf, nơi nó cho phép bạn chọn “Trình biên dịch” ưa thích của mình:

![Chọn trình biên dịch LaTeX trong Overleaf](/files/804ae5d45e8d3dddbb950aca62ab8b0afcf518ea)

Trừ khi bạn là người dùng TeX dày dạn kinh nghiệm, hoặc quen thuộc với hệ sinh thái của nó, thì nhiều “biến thể của TeX” có thể gây nhầm lẫn; tuy nhiên, đến cuối bài viết này bạn sẽ cảm thấy hiểu biết hơn nhiều và thoải mái hơn khi trao đổi với bất kỳ đồng nghiệp, tác giả hay biên tập viên tạp chí nào thông thạo thuật ngữ dựa trên TeX.

### Bối cảnh: 40 năm phát triển

Nguồn gốc của TeX bắt đầu từ cuối thập niên 1970 và những thập kỷ sau khi nó ra đời đã chứng kiến sự phát triển của vô số chương trình dàn trang dựa trên TeX, mang lại những cải tiến và chức năng bổ sung đáng kể so với chương trình TeX nguyên bản. Những ai mới tiếp cận xuất bản STM, hoặc đang cân nhắc theo đuổi lĩnh vực này, có thể ngạc nhiên khi biết rằng phần mềm dàn trang có nguồn gốc cách đây khoảng 40 năm vẫn được các tác giả kỹ thuật sử dụng rộng rãi—và là một thành phần quan trọng trong nhiều quy trình xuất bản hiện đại thông qua các dịch vụ như Overleaf.

### TeX không chỉ dành cho toán học

Đây là một quan niệm sai lầm phổ biến, dù dễ hiểu, rằng việc sử dụng TeX bị giới hạn trong các lĩnh vực khoa học và kỹ thuật; cụ thể là dàn trang các công thức toán học phức tạp. Mặc dù TeX có nhiều người dùng nhất trong các lĩnh vực đó, phần mềm dựa trên TeX được dùng rộng rãi để tạo nội dung không phải toán học—nhờ chất lượng đầu ra cao và tính linh hoạt đáng kinh ngạc. Ngoài việc dàn trang toán học, các phiên bản TeX mới nhất (gọi là XeTeX và LuaTeX) hỗ trợ các công nghệ phông chữ hiện đại (OpenType), nhập văn bản dựa trên Unicode, phông toán học dựa trên OpenType (theo cách Microsoft Word đã tiên phong), dàn trang đa ngôn ngữ (bao gồm tiếng Ả Rập và các hệ chữ viết phức tạp khác), xuất trực tiếp ra PDF và nhiều hơn nữa. Ví dụ, dưới đây là một minh họa về khả năng [dàn trang đa ngôn ngữ với các ngôn ngữ có hệ chữ phức tạp](https://www.overleaf.com/latex/examples/how-to-write-multilingual-text-with-different-scripts-in-latex/wfdxqhcyyjxz)bao gồm tiếng Ả Rập, tiếng Phạn, tiếng Hindi, tiếng Trung, tiếng Nhật, tiếng Hàn, tiếng Hy Lạp và tiếng Thái. Hoặc, nếu bạn quan tâm đến nấu ăn, thì sao về việc tạo ra [một cuốn sách công thức](https://www.overleaf.com/latex/examples/simple-recipes-for-first-time-away-from-home-cooks/gscqdhnwzsfg)?

## Sự ra đời của TeX: Lược sử ngắn gọn

Nhà sử học người Mỹ [Daniel J. Boorstin](https://en.wikipedia.org/wiki/Daniel_J._Boorstin) từng nhận xét rằng:

> “Cố gắng lập kế hoạch cho tương lai mà không có cảm thức lịch sử thì giống như cố trồng hoa đã cắt rời.”

Đúng với tinh thần của câu trích dẫn đó, chúng ta sẽ bắt đầu bằng một lịch sử ngắn gọn của TeX: nó đến từ đâu, ai đã tạo ra nó—và tại sao?

Vào ngày 30 tháng 3 năm 1977, nhật ký của Giáo sư Donald Knuth, một nhà khoa học máy tính tại Đại học Stanford, đã ghi lại dòng chú thích sau để thể hiện sự không hài lòng của ông với chất lượng các bản in thử được dàn trang mà ông vừa nhận cho tập 2 của bộ sách *The Art of Computer Programming*:

> “Bản in thử cho tập 2 cuối cùng cũng đến, trông thật tệ... (về mặt kiểu chữ). Tôi quyết định mình phải tự giải quyết vấn đề này.”

Câu trích dẫn ở trên nằm ở trang 482 của [Digital Typography](https://www.amazon.co.uk/Digital-Typography-Language-Information-Publication/dp/1575860104) của Donald E. Knuth. Mục nhật ký nhỏ bé đó của Giáo sư Knuth đã đánh dấu tác nhân khởi đầu cho một hành trình lập trình kéo dài nhiều năm và dẫn đến việc tạo ra phần mềm dàn trang có khả năng tạo ra toán học được dàn trang tuyệt đẹp và, tất nhiên, cả văn bản được dàn trang đẹp mắt: một chương trình mà Knuth đặt tên là *TeX*.

Knuth là một nhà khoa học máy tính xuất sắc và trong khi phát triển TeX, ông cùng các đồng nghiệp đã thiết kế những thuật toán mới và tinh vi để giải quyết một số vấn đề dàn trang rất phức tạp: bao gồm [ngắt dòng tự động](http://onlinelibrary.wiley.com/doi/10.1002/spe.4380111102/abstract), [gạch nối](http://www.tug.org/docs/liang/liang-thesis.pdf) và, tất nhiên, [dàn trang toán học](http://www.tug.org/TUGboat/tb27-1/tb86jackowski.pdf). Trong quá trình phát triển TeX, Knuth cần các bộ phông để dùng với phần mềm dàn trang của mình, nên ông đã phát triển công nghệ phông riêng gọi là MetaFont—mặc dù chúng ta sẽ không bàn chi tiết về nó ở đây.

### TeX là một thành công lớn

Có nhiều lý do góp phần vào sự phổ biến của TeX, bao gồm:

* *Chất lượng dàn trang cao*: Ngoài các thuật toán tinh vi được tích hợp trong TeX, sự chú trọng cực độ của Knuth đến chi tiết kiểu chữ đã giúp TeX có khả năng tạo ra toán học và văn bản dàn trang với chất lượng rất cao.
* *TeX có thể lập trình*: Knuth đã trao cho TeX ngôn ngữ lập trình riêng. Người dùng có thể viết “macro TeX” (một tập hợp các lệnh TeX), cho họ rất nhiều quyền kiểm soát đối với quá trình dàn trang của TeX. Khả năng lập trình của TeX là một chủ đề quan trọng và chúng ta sẽ bàn kỹ hơn bên dưới.
* *TeX là miễn phí*: Knuth cung cấp TeX miễn phí—including cả mã nguồn của nó (tức là mã chương trình).
* *Tính di động*: Knuth thiết kế cấu trúc nội bộ của TeX để đảm bảo nó có tính di động cao và có thể chạy trên nhiều hệ thống máy tính khác nhau. Với cùng một đầu vào, TeX sẽ cho ra đầu ra giống hệt nhau, bất kể nó chạy trên hệ thống nào—điều đó bao gồm cả việc tạo ra cùng cách ngắt dòng và ngắt trang.

Các tác giả rất hài lòng vì TeX cho phép các nhà toán học, nhà vật lý, nhà khoa học máy tính và những người khác kiểm soát chính xác việc dàn trang và hình thức trình bày tác phẩm của họ. Tác giả có thể dùng TeX để viết bài báo hoặc sách của mình và nộp bản thảo (các tệp TeX) cho nhà xuất bản, với cảm giác tự tin hơn rằng các bản in thử của họ sẽ không phải chịu số phận giống như của Knuth vào năm 1977.

## Knuth vẫn duy trì TeX, nhưng các “phiên bản” mới đã ra đời

Trong thập niên 1980, Knuth quyết định đóng băng việc phát triển TeX vì ông muốn đảm bảo tính ổn định lâu dài cho phần mềm của mình: ông quyết định sẽ không thêm tính năng mới nào vào TeX. Năm 1989, Knuth được thuyết phục để thực hiện [một đợt thay đổi cuối cùng](https://www.tug.org/TUGboat/tb10-3/tb25knut.pdf) đối với TeX—chủ yếu là chuyển từ bộ ký tự 7-bit sang 8-bit. Năm 1990, Knuth xuất bản một bài viết có tên [Tương lai của TeX và MetaFont](https://www.tug.org/TUGboat/tb11-4/tb30knut.pdf) trong đó ông tuyên bố rằng việc phát triển TeX (và các phần mềm liên quan) của mình đã kết thúc, nhưng những người khác thì tự do xây dựng trên nền tảng công trình ông đã làm.

Ngày nay, sau khoảng 4 thập kỷ kể từ sự khởi đầu định mệnh của TeX, Knuth vẫn tiếp tục thực hiện các bản sửa lỗi định kỳ cho mã nguồn chính của TeX—vốn có thể tải từ [CTAN (Comprehensive TeX Archive Network)](https://www.ctan.org/tex-archive/systems/knuth/dist/tex/). Các bản cập nhật đó diễn ra vài năm một lần, bản gần nhất là [Bản chỉnh sửa TeX năm 2014](https://www.tug.org/TUGboat/tb35-1/tb109knut.pdf) như được báo cáo trong tạp chí TeX [TUGboat](https://www.tug.org/TUGboat/Contents/contents35-1.html)—đợt chỉnh sửa tiếp theo được lên kế hoạch vào năm 2021! Trong các đợt chỉnh sửa đó, Knuth không thêm tính năng mới cho TeX, thực sự chỉ là các bản sửa lỗi—mặc dù nhiều người coi TeX là chương trình ít lỗi nhất trên thế giới.

**Một lưu ý về các “phiên bản” của TeX**: Khi viết về TeX, điều cực kỳ quan trọng là phải nhấn mạnh rằng, nếu nói chính xác thì chỉ có một phiên bản “TeX” duy nhất mang tính chuẩn mực: phiên bản mà Knuth đã viết và đang duy trì. Thực tế, “TeX” (được nhận diện bằng logo dàn trang của nó) là một nhãn hiệu của Hiệp hội Toán học Hoa Kỳ. Knuth không loại trừ hay ngăn cản người khác dùng mã của ông để phát triển phần mềm *dựa trên TeX*—mở rộng phần mềm của Knuth để thêm các tính năng và chức năng vượt ra ngoài những gì Knuth đã chọn triển khai. Tuy nhiên, Knuth, như quyền tuyệt đối của mình, đã đưa ra một quy định mạnh mẽ, có thể tìm thấy trong mã nguồn của TeX:

`Nếu chương trình này bị thay đổi, hệ thống tạo ra không nên được gọi là TeX; tên chính thức TeX tự thân được dành riêng cho các hệ thống phần mềm hoàn toàn tương thích với nhau.`

Do đó, không hoàn toàn chính xác khi gọi các chương trình được dẫn xuất từ mã nguồn của Knuth là “phiên bản” của TeX. Nói một cách chặt chẽ, *dựa trên TeX* phần mềm dẫn xuất từ mã nguồn của TeX nên được gọi là “biến thể” hoặc “dẫn xuất”, nhưng để đơn giản chúng ta sẽ tiếp tục dùng thuật ngữ “phiên bản”, đồng thời lưu ý những cảnh báo đã nêu ở đây.

Mặc dù Knuth đã đóng băng việc phát triển, vẫn có một nhu cầu rất lớn đối với các tính năng TeX mới, hoặc các cải tiến cho những tính năng hiện có, và qua nhiều năm đã có nhiều nỗ lực khác nhau nhằm phát triển “thế hệ TeX tiếp theo”—một số rất thành công, một số thì không. Đó là một lịch sử thú vị nhưng không phải điều chúng ta có thể đi sâu ở đây—bạn đọc dũng cảm có thể tìm thấy một bản tường thuật đầy đủ hơn nhiều trong bài viết của Frank Mittelbach: [TUGboat, Tập 34 (2013), Số 1](https://www.tug.org/TUGboat/tb34-1/tb106mitt.pdf).

Trong thập niên 1990, một số phần của TeX đã bộc lộ dấu hiệu lỗi thời—bao gồm cách xử lý phông chữ và định dạng tệp được dùng cho đầu ra của TeX: định dạng gọi là DeVice Independent, hay DVI. Phần lớn người dùng chuyển đầu ra của TeX sang PostScript nhưng đến giữa thập niên 1990, PostScript dần bị lu mờ bởi sự trỗi dậy của PDF như định dạng tệp đầu ra được ưa chuộng. Và dĩ nhiên, còn có vị trí của TeX trong một thế giới lúc này đã có internet. Tuy nhiên, bất chấp những hạn chế đó, nhiều thuật toán cốt lõi của TeX—ngắt dòng và canh đều, gạch nối và dàn trang toán học—vẫn chưa hề bị vượt qua. Các nhà phát triển muốn xây dựng trên những điểm mạnh của TeX nhưng cập nhật những khu vực mà thế giới đã tiến lên và TeX thực sự cần bắt kịp.

### Có gì trong một cái tên?

Đã trở thành quy ước rằng phần mềm được dẫn xuất từ TeX sẽ nhận tên bằng cách thêm một tiền tố vào từ “TeX”: tạo ra các tên chương trình như **pdf**TeX, **Xe**TeX và **Lua**TeX. Mặc dù các chương trình này được dẫn xuất từ phần mềm TeX nguyên bản của Knuth, chúng chứa các tính năng và chức năng không có trong phiên bản nguyên bản của Knuth. Tập thể, các chương trình thực thi này thường được gọi là **bộ máy TeX**—hãy coi chúng như phần mềm *điều khiển* quá trình dàn trang. Một mô tả ngắn gọn về pdfTeX, XeTeX và LuaTeX được cung cấp ở cuối bài viết này.

### LaTeX: một tập hợp macro, không phải một bộ máy TeX

Chúng ta đã nhắc rằng các chương trình dựa trên TeX được dẫn xuất từ phần mềm của Knuth có những tên như pdfTeX hay XeTeX; tự nhiên bạn có thể nghĩ rằng LaTeX chỉ là một phiên bản khác của phần mềm Knuth. Đáng tiếc là không đơn giản như vậy. LaTeX không phải là một phiên bản của chương trình dàn trang TeX có thể thực thi: nó là một tập hợp các *macro TeX*, một chủ đề chúng ta sẽ bàn kỹ hơn bên dưới. Các macro tạo nên LaTeX được Leslie Lamport viết vào giữa thập niên 1980—người đã đặt tên cho gói này. Giống như chính các bộ máy TeX, gói macro LaTeX vẫn đang được phát triển tích cực và người quan tâm có thể tìm hiểu thêm trên [trang web dự án LaTeX](https://www.latex-project.org/).

## Vậy, thực ra TeX làm gì?

Như đã lưu ý, TeX là một chương trình dàn trang nhưng nếu bạn hình dung một giao diện người dùng đồ họa (GUI) bóng bẩy, như Adobe InDesign, thì hãy nghĩ lại. Vào thời điểm TeX ra đời (cuối thập niên 1970), các giao diện đồ họa và hệ điều hành tinh vi ngày nay vẫn còn nằm ở tương lai khá xa và cách thức hoạt động của TeX vẫn phản ánh di sản đó, ngay cả đối với các biến thể TeX hiện đại mới hơn.

Những ai quen dùng các ứng dụng dàn trang hiện đại, chẳng hạn Adobe InDesign, có thể sẽ ngạc nhiên khi thấy TeX hoạt động như thế nào. Giả sử ai đó đưa cho bạn một bản sao của một phần mềm TeX nào đó (nhưng không có trình soạn thảo văn bản sang trọng) và bạn quyết định chạy nó để xem chuyện gì xảy ra: bạn sẽ thấy gì? Thật ra, không nhiều! TeX sử dụng cái gọi là [giao diện dòng lệnh](https://en.wikipedia.org/wiki/Command-line_interface): nó không có một màn hình đồ họa hào nhoáng để bạn nhập văn bản cần dàn trang hay trỏ, nhấp, chạm để đặt tùy chọn hoặc cấu hình. Nếu bạn chạy một trong các chương trình TeX (bộ máy) thì bạn sẽ thấy một màn hình đơn giản với con trỏ nhấp nháy—ví dụ, chạy LuaTeX trên máy cục bộ (luatex.exe trên Windows):

![Chạy LuaTeX dưới Windows](/files/a8257ea8186bba34703288c0f5a83bec6f665610)

Dĩ nhiên, những người dùng phần mềm dựa trên TeX thông qua Overleaf sẽ được cung cấp một giao diện thuận tiện và thân thiện với tác giả hơn nhiều.

### Hiểu về khả năng lập trình của TeX

Rõ ràng, nếu bạn muốn một phần mềm dàn trang gì đó thì bạn sẽ cần cung cấp cho nó một dạng đầu vào nào đó (nội dung cần dàn trang) rồi sau đó đưa cho nó một số “chỉ dẫn” nói cho nó biết bạn muốn đạt được điều gì—chẳng hạn như dùng phông nào và kích thước trang của tài liệu cuối cùng, cùng với nhiều chi tiết khác. Nếu bạn đang dùng một công cụ như Adobe InDesign, bạn có thể chọn từ các menu, màn hình và hộp thoại khác nhau để thiết lập các tham số giúp bạn có một mức ảnh hưởng và kiểm soát nhất định đối với hành vi của phần mềm. Tuy nhiên, nếu không có màn hình như vậy và tất cả những gì bạn có chỉ là một màn hình trống và con trỏ nhấp nháy thì sao? Đây là lúc *khả năng lập trình* của TeX phát huy tác dụng.

### TeX là chương trình và TeX là ngôn ngữ lập trình

Vì TeX không có giao diện người dùng đồ họa tích hợp sẵn để bạn kiểm soát và điều khiển hành vi của nó, bạn phải cung cấp cho nó các chỉ dẫn bằng văn bản rõ ràng để dẫn dắt nó trong quá trình dàn trang. Bạn tạo một tệp văn bản không chỉ chứa nội dung tác phẩm của mình mà còn cả các chỉ dẫn dàn trang rõ ràng (hoặc lệnh) nói cho TeX biết bạn muốn nó làm gì. Khi đã viết xong tệp TeX của mình, ví dụ mybook.tex, bạn ra lệnh cho TeX xử lý nó và, nếu mọi thứ ổn, bạn sẽ nhận được một tài liệu được dàn trang đẹp mắt “mybook.pdf” làm đầu ra.

Những “chỉ dẫn dàn trang” dùng để điều khiển hành vi của TeX thực ra được viết bằng một ngôn ngữ lập trình—một ngôn ngữ được Knuth thiết kế riêng để mang lại cho người dùng TeX rất nhiều khả năng kiểm soát đối với chương trình dàn trang tinh vi của ông. Chính ngôn ngữ lập trình dàn trang này đã đem lại cho TeX sức mạnh và sự linh hoạt đáng kinh ngạc.

Giờ đây chúng ta có thể bắt đầu thấy rằng TeX, trên thực tế, là một phần mềm dàn trang mà người dùng có thể điều khiển bằng cách cung cấp các chỉ dẫn viết bằng một ngôn ngữ lập trình đặc biệt. Bạn nên xem “TeX” như một chương trình thực thi (bộ máy dàn trang) có thể được điều khiển bằng các chỉ dẫn của bạn được viết trong ngôn ngữ dàn trang TeX. Dĩ nhiên, vì TeX được điều khiển bằng một ngôn ngữ lập trình nên luôn có khả năng mắc lỗi—những lỗi trong tệp TeX của bạn mà TeX không thể hiểu hoặc đơn giản là không cho ra kết quả như bạn mong đợi. Đó là một “niềm vui” hằng ngày mà người dùng phần mềm liên quan đến TeX đều quá quen thuộc. Hiểu rằng các bộ máy TeX có thể lập trình là chìa khóa để thực sự cảm nhận được sự khác biệt giữa LaTeX, pdfTeX, pdfLaTeX, XeTeX, LuaTeX và những cái tên tương tự. Mỗi bộ máy TeX (chương trình) hiểu hàng trăm lệnh gọi là *nguyên thủy* Lệnh. “Nguyên thủy” trong ngữ cảnh này không có nghĩa là “đơn giản” hay “không tinh vi”, mà có nghĩa là chúng là các khối xây dựng cơ bản của ngôn ngữ TeX. Một phép so sánh đơn giản, dù không hoàn toàn chính xác, là bảng chữ cái của một ngôn ngữ nhất định: các ký tự riêng lẻ của bảng chữ cái không thể giản lược thành các thực thể đơn giản hơn; chúng là các khối xây dựng cơ bản từ đó tạo thành từ, câu, v.v.

## Và cuối cùng: từ TeX đến pdfTeX, XeTeX và LuaTeX

Tóm lại. Khi Knuth viết phiên bản TeX nguyên bản, ông đã cung cấp cho nó các tính năng và khả năng mà ông cho là đủ để đáp ứng nhu cầu dàn trang văn bản và toán học tinh vi dựa trên môi trường công nghệ của thời điểm đó—bao gồm năng lực xử lý và bộ nhớ của máy tính, công nghệ phông chữ và thiết bị đầu ra. Đặc tả TeX của Knuth bao gồm thiết kế nội bộ/lập trình của nó (và các thuật toán dàn trang) cùng với, dĩ nhiên, việc định nghĩa ngôn ngữ TeX dùng để “đánh dấu” nội dung cần dàn trang. Điều chúng ta muốn nói khi “định nghĩa ngôn ngữ TeX” là định nghĩa tập hợp vài trăm lệnh nguyên thủy mà bộ máy TeX có thể hiểu—và hành động mà bộ máy TeX thực hiện bất cứ khi nào nó gặp một trong những nguyên thủy đó trong quá trình xử lý văn bản đầu vào của bạn.

Tất nhiên, môi trường công nghệ luôn phát triển: máy tính nhanh hơn và có nhiều bộ nhớ/lưu trữ hơn, các công nghệ phông mới được phát hành (Type 1, TrueType, OpenType), các định dạng đầu ra tệp phát triển (ví dụ, chuyển từ PostScript sang PDF) và Unicode trở thành cách mã hóa văn bản thống trị. Tất nhiên, người dùng TeX muốn những công nghệ mới đó được hỗ trợ—bên cạnh việc bổ sung các tính năng và chức năng mới không có trong chương trình TeX nguyên bản của Knuth.

Như đã lưu ý trước đó, trong thập niên 1980 Knuth quyết định đóng băng việc phát triển TeX của mình: không thêm tính năng mới nào vào phiên bản của ông nữa. Vì có nhu cầu thực sự phải cập nhật/hiện đại hóa phần mềm nguyên bản của Knuth, các chuyên gia lập trình TeX đã lấy mã nguồn gốc của Knuth và cải tiến nó để thêm các tính năng mới và hỗ trợ các công nghệ dàn trang hiện đại. Những phiên bản TeX mới đó không chỉ cung cấp các tính năng bổ sung (ví dụ, xuất trực tiếp ra PDF, hỗ trợ phông OpenType) mà còn mở rộng và điều chỉnh cả ngôn ngữ TeX: các lệnh nguyên thủy mới được thêm vào bộ lệnh gốc của Knuth, qua đó mang lại cho người dùng nhiều sức mạnh lập trình hơn và tính linh hoạt lớn hơn để kiểm soát và tận dụng các chức năng bổ sung được tích hợp trong các bộ máy dàn trang dựa trên TeX mới.

Mỗi bộ máy TeX mới được đặt một tên riêng để phân biệt với phần mềm nguyên bản của Knuth: vì vậy giờ đây bạn có pdfTeX, XeTeX và LuaTeX. Ba bộ máy TeX đó không tương thích 100% với nhau và hoàn toàn có thể chuẩn bị đầu vào mà một bộ máy TeX xử lý được nhưng lại không chạy được trên các bộ khác—đơn giản vì một bộ máy TeX cụ thể có thể hỗ trợ các lệnh nguyên thủy mà những bộ khác không có. Nhưng không phải là hết cách: chào mừng đến với thế giới của các macro TeX!

### Nguyên thủy không phải là toàn bộ câu chuyện: macro TeX

Chúng ta đã nhắc rằng mỗi bộ máy TeX hỗ trợ một tập hợp lệnh cấp thấp nhất định gọi là các nguyên thủy—nhưng đó chưa phải là toàn bộ câu chuyện. Dĩ nhiên, nhiều nguyên thủy giống nhau được tất cả các bộ máy hỗ trợ nhưng một số lại chỉ đặc thù cho từng bộ máy. TeX đạt được sức mạnh và sự tinh vi thực sự thông qua cái gọi là macro TeX. Các lệnh nguyên thủy của ngôn ngữ TeX của một bộ máy có thể được kết hợp với nhau để định nghĩa các lệnh mới (gọi là macro), được xây dựng từ các tổ hợp của các lệnh nguyên thủy cấp thấp và/hoặc các macro khác. Macro TeX cho phép người dùng định nghĩa các lệnh mới có khả năng thực hiện các thao tác dàn trang phức tạp, tiết kiệm rất nhiều thời gian, công sức gõ phím và lỗi lập trình. Ngoài ra, các bộ máy TeX còn cung cấp các nguyên thủy có thể xác định bộ máy TeX nào đang được dùng để dàn trang một tài liệu—nhờ đó một bộ máy TeX có thể, ngay tức thì, điều chỉnh hành vi của nó tùy vào việc nó có hỗ trợ một nguyên thủy cụ thể nào đó mà nó có thể gặp hay không. Nếu một nguyên thủy nhất định không được hỗ trợ trực tiếp nhưng có thể được “giả lập” (bằng cách kết hợp các nguyên thủy khác) thì thường mọi chuyện vẫn ổn—nhưng nếu bộ máy TeX được chọn thực sự không xử lý được một nguyên thủy cụ thể thì việc dàn trang sẽ thất bại và một lỗi sẽ được báo cáo. Dù sao đi nữa, ngôn ngữ TeX vẫn là một ngôn ngữ lập trình, dù được thiết kế để giải quyết các vấn đề dàn trang; nhưng với tư cách là một ngôn ngữ lập trình, TeX cực kỳ khó hiểu và hoạt động rất khác với hầu hết các ngôn ngữ lập trình mà bạn có thể gặp ngày nay.

### Vậy cuối cùng, LaTeX là gì?

Chúng ta đã nói về các phiên bản khác nhau của bộ máy TeX—từ TeX nguyên bản của Knuth đến các hậu duệ của nó là pdfTeX, XeTeX và LuaTeX, và cũng đã thảo luận ngắn gọn về TeX như một ngôn ngữ dàn trang: các nguyên thủy, lập trình và khả năng viết macro. Cuối cùng, giờ đây chúng ta đã có thể bàn về LaTeX. Sự mở rộng logic của việc viết từng macro TeX riêng cho mục đích cá nhân của bạn là chuẩn bị một tập hợp macro mà người khác cũng có thể dùng—a package macro cung cấp một số công cụ và lệnh hữu ích để những người dùng (La)TeX khác có thể hưởng lợi. Và đó chính xác là LaTeX: một tập hợp rất lớn các macro phức tạp và tinh vi được thiết kế để giúp bạn dàn trang sách, bài báo tạp chí, v.v. Nó cung cấp vô số tính năng để điều khiển những thứ như bố cục trang, phông chữ và vô vàn chi tiết dàn trang khác. Không chỉ vậy, LaTeX còn được thiết kế để có thể mở rộng: bạn có thể gắn thêm các gói macro chuyên biệt hơn, được viết để giải quyết các vấn đề dàn trang cụ thể—ví dụ như tạo bảng được dàn trang đẹp, dàn trang các dạng toán học đặc biệt phức tạp, sơ đồ hóa học, v.v. Nếu bạn truy cập [Mạng Lưu trữ TeX Toàn diện](https://www.ctan.org) bạn có thể chọn từ hàng trăm, nếu không muốn nói là hàng nghìn, gói macro đã được viết và đóng góp bởi người dùng trên khắp thế giới.

Vì vậy, nếu ai đó nói họ đang dàn trang tác phẩm của mình bằng LaTeX thì họ mới chỉ nói cho bạn biết một phần câu chuyện. Điều họ thực sự muốn nói là họ đang dùng gói macro LaTeX với một bộ máy TeX cụ thể—thường là pdfTeX nhưng có thể là XeTeX (cho công việc đa ngôn ngữ) hoặc LuaTeX (có lẽ cho sản xuất tài liệu tùy biến nâng cao). Thường bạn sẽ thấy các thuật ngữ như pdfLaTeX, XeLaTeX hay LuaLaTeX: nhưng thực ra đây không phải là tên của các bộ máy TeX, tất cả những gì chúng biểu thị là bộ máy TeX nào đang được dùng để chạy bộ sưu tập macro LaTeX:

* pdfLaTeX có nghĩa là dùng gói macro LaTeX với bộ máy pdfTeX
* XeLaTeX có nghĩa là dùng gói macro LaTeX với bộ máy XeTeX
* LuaLaTeX có nghĩa là dùng gói macro LaTeX với bộ máy LuaTeX

Ví dụ, nói “Tôi đang dùng pdfLaTeX” có nghĩa là “Tôi đang chuẩn bị tài liệu được dàn trang của mình bằng gói macro LaTeX và xử lý nó bằng bộ máy pdfTeX”. Tương tự, nếu ai đó nói với bạn rằng họ đang “dùng TeX” thì giờ đây bạn nên thấy rằng phát biểu đó có lẽ không cho bạn biết toàn bộ câu chuyện—trừ khi họ đang dùng phiên bản TeX nguyên bản của Knuth, điều này ngày nay khá khó xảy ra.

## Từ các bộ máy TeX đến các bản cài đặt TeX

Chúng ta đã lược qua lịch sử TeX và thấy rằng các hậu duệ hiện đại của nó—pdfTex, XeTeX và LuaTeX—đã bổ sung nhiều tính năng và chức năng mới cho phần mềm nguyên bản của Knuth. Để kết thúc phần thảo luận, chúng ta sẽ xem nhanh ba bộ máy TeX phổ biến nhất và lược khảo ngắn về các bản cài đặt TeX.

### Các tính năng chính của pdfTeX, XeTeX và LuaTeX

Đây là phần tóm tắt về *một số* tính năng chính do ba bộ máy TeX phổ biến nhất cung cấp:

* **pdfTeX**: Đúng như tên gọi, nó cung cấp khả năng xuất trực tiếp ra PDF, giúp người dùng không phải chuyển định dạng DVI gốc của TeX sang PostScript rồi chuyển tiếp sang PDF qua GhostScript hoặc Acrobat Distiller (Lưu ý: một số người dùng cũng đi từ DVI sang PDF bằng các công cụ như dvipdf). pdfTeX cũng đưa vào các tinh chỉnh cho việc dàn trang của TeX—chẳng hạn như kerning lề (character protrusion). pdfTeX được Hàn Thế Thành phát triển và các chi tiết triển khai của nó đã trở thành cơ sở cho luận án tiến sĩ của ông [Mở rộng vi kiểu chữ cho hệ thống dàn trang TeX](https://www.tug.org/TUGboat/tb21-4/tb69thanh.pdf).
* Ngày phát hành lần đầu (theo ghi chú phát hành): tháng 8 năm 2001
* Thông tin thêm: [www.tug.org/applications/pdftex](http://www.tug.org/applications/pdftex)
* **XeTeX**: Nó giới thiệu khả năng đọc/nhập trực tiếp các tệp TeX được lưu hoặc tạo bằng mã hóa UTF-8, bổ sung xử lý tinh vi cho việc dàn trang đa ngôn ngữ—including các hệ chữ phức tạp như tiếng Ả Rập. Một tính năng đặc biệt hữu ích là XeTeX cho phép sử dụng phông OpenType rất dễ dàng và thuận tiện, và các phiên bản sau đó đã bổ sung dàn trang toán học dựa trên OpenType. XeTeX được phát triển bởi Jonathan Kew, mặc dù việc phát triển sau đó do các thành viên khác của cộng đồng TeX dẫn dắt.
* Ngày phát hành lần đầu (Wikipedia): Ban đầu chỉ dành cho Mac OSX, tháng 4 năm 2004
* Thông tin thêm: <http://tug.org/xetex>
* **LuaTeX**: Có lẽ là mạnh mẽ và linh hoạt nhất trong tất cả các bộ máy TeX, LuaTeX được dẫn xuất từ pdfTeX (ngoài nhiều nguồn/thư viện khác) và cung cấp thêm nhiều chức năng đáng kể. Đổi mới then chốt là việc bổ sung ngôn ngữ kịch bản Lua, cho phép kiểm soát bộ máy TeX rất tinh vi thông qua một ngôn ngữ kịch bản dễ dùng. Nó cũng hỗ trợ mã hóa văn bản UTF-8, dàn trang toán học dựa trên OpenType và việc sử dụng rất nâng cao các phông OpenType cho dàn trang văn bản—mặc dù cơ chế khác với cơ chế được XeTeX sử dụng. LuaTeX cũng tích hợp ngôn ngữ đồ họa MetaPost, cho phép người dùng khai thác đầy đủ khả năng vẽ tinh vi của MetaPost. Ngoài việc chuẩn bị sách và bài báo tạp chí, LuaTeX rất lý tưởng cho thiết kế tài liệu nâng cao hoặc tùy biến—một tính năng mạnh mẽ là khả năng mở rộng của LuaTeX thông qua các “plugin” viết bằng C/C++ và được nạp dưới dạng .DLL (Windows) hoặc .so (trên Linux). LuaTeX được phát triển bởi một nhóm gồm Hans Hagen, Taco Hoekwater, Luigi Scarso và những người khác.
* Ngày phát hành lần đầu: Công việc phát triển bắt đầu khoảng năm 2006 với nhiều bản beta, kết thúc bằng bản phát hành 1.0 vào tháng 9 năm 2016. Nó vẫn đang được phát triển rất tích cực.
* Thông tin thêm: [www.luatex.org](http://www.luatex.org)

### Các bản cài đặt TeX: TeX Live

Có lẽ bạn đang tự hỏi làm thế nào người dùng có thể tiếp cận các chương trình dàn trang dựa trên TeX khác nhau và các gói macro LaTeX đi kèm? Câu trả lời là sử dụng một thứ gọi là *bản phân phối TeX* mà người dùng có thể tải về và cài đặt—các bản cài đặt TeX hiện đại nay chứa nhiều hơn rất nhiều so với chỉ các bộ máy dàn trang dựa trên TeX. Qua nhiều năm, người dùng TeX trên khắp thế giới đã phát triển và đóng góp một loạt đáng kinh ngạc các công cụ và phần mềm liên quan đến TeX, cùng với hàng trăm phông chữ và, tất nhiên, số lượng khổng lồ các gói LaTeX chuyên dụng. Bộ sưu tập phần mềm khổng lồ này được quản lý và cập nhật bởi các thành viên hàng đầu của cộng đồng TeX và culminates trong các bản phát hành hằng năm của một bản phân phối có tên là [TeX Live](https://www.tug.org/texlive/)—bản này cũng sẽ chứa các bản phát hành ổn định mới nhất của các bộ máy TeX cho từng nền tảng được hỗ trợ (Windows, Linux, v.v.). Người dùng Windows thường sử dụng một bản phân phối khác gọi là [MiKTeX](https://miktex.org/).

## Overleaf: Hỗ trợ hệ sinh thái LaTeX

Bối cảnh của môi trường nghiên cứu ngày nay, dĩ nhiên, là một môi trường có tính liên kết cao và hợp tác chặt chẽ—including việc cùng nhau viết và chuẩn bị bài báo để xuất bản. Việc gửi và chia sẻ các bài viết bằng LaTeX qua e-mail, bao gồm mọi hình ảnh hoặc dữ liệu đi kèm, có thể rất phiền toái—không chỉ do vấn đề kiểm soát phiên bản (và kích thước tệp) mà còn vì khả năng thực tế là một hoặc nhiều đồng tác giả có một bản cài đặt LaTeX không thể xử lý tệp LaTeX đó; ví dụ do thiếu phông, sự khác nhau về tính sẵn có của gói hoặc các bản phát hành LaTeX đã lỗi thời. Một đồng tác giả có thể đang đi công tác hoặc tạm thời làm việc ở nơi không có quyền truy cập LaTeX. Tất cả cộng lại thành một tình huống có thể rất bực bội—đặc biệt là khi gần đến hạn nộp bài! Các cơ sở học thuật hoặc doanh nghiệp muốn cung cấp cho nhân viên hay nhóm của họ quyền truy cập LaTeX có thể cần cài đặt rồi duy trì, cập nhật và hỗ trợ một hệ thống TeX toàn diện ở quy mô tổ chức. Đây có thể là một công việc phức tạp, có thể đòi hỏi chuyên môn đặc biệt chỉ nằm ở một cá nhân. Nếu chuyên gia cài đặt LaTeX của bạn chuyển sang công việc khác thì việc thay thế họ có thể là một thách thức. Các bản cài đặt TeX phải được duy trì tích cực vì thế giới TeX không đứng yên và bản cài đặt của bạn có thể sớm trở nên lỗi thời—điều khiến người dùng của bạn khó chịu, vì họ có thể cần tận dụng các công cụ dựa trên TeX mới hơn hoặc tiên tiến hơn. Các gói LaTeX mới và được cập nhật liên tục được phát hành, cũng như các phông chữ bổ sung và công cụ phần mềm liên quan đến TeX. Ngoài ra, các bộ máy TeX, đặc biệt là LuaTeX, vẫn tiếp tục được phát triển.

### Overleaf: Giải pháp LaTeX cho tác giả và tổ chức

Overleaf cung cấp cho tác giả và tổ chức của họ một hệ thống sáng tác và quản lý dự án LaTeX trên nền tảng đám mây—được hỗ trợ bởi các máy chủ mạnh mẽ với một bản cài đặt TeX hiện đại hàng đầu.

#### Overleaf dành cho tác giả

Bằng trình soạn thảo LaTeX trên trình duyệt của Overleaf, tác giả có thể tạo, chia sẻ, cộng tác và quản lý các dự án dựa trên LaTeX của mình ở bất cứ đâu họ đang làm việc. Tất cả những gì bạn cần là có kết nối Internet và một thiết bị với trình duyệt hiện đại.

Overleaf cung cấp một cách rất tiện lợi để sử dụng LaTeX, bao gồm:

* Không cần gửi tệp LaTeX và các hình ảnh khổng lồ qua e-mail nữa—chỉ cần gửi cho đồng nghiệp của bạn một liên kết đến dự án của bạn trên Overleaf để bắt đầu cộng tác và chia sẻ.
* Hỗ trợ kỹ thuật tuyệt vời—liên hệ với chúng tôi bất cứ lúc nào nếu bạn có câu hỏi về việc sử dụng LaTeX.
* Đồng tác giả cùng chia sẻ một bản cài đặt LaTeX—không cần phụ thuộc vào bản cài đặt cục bộ hay bị giới hạn bởi một hệ thống LaTeX đã lỗi thời.
* Bạn có thể làm cho tài liệu của mình nổi bật—chọn từ nhiều phông OpenType hiện đại sẵn dùng, hoặc tải thêm phông lên dự án của bạn. Đơn giản và dễ dùng với gói fontspec.
* Không cần bạn phải chạy các bộ máy TeX—Overleaf sẽ làm điều đó cho bạn. Tiết kiệm thời gian và tận dụng khả năng xem trước nhanh, theo thời gian thực của tài liệu LaTeX đã dàn trang của bạn, hoặc chuyển sang làm mới thủ công nếu bạn thích.
* Gửi bài báo của bạn trực tiếp đến các tạp chí và dịch vụ preprint tham gia hỗ trợ hoặc tải toàn bộ dự án LaTeX của bạn xuống dưới dạng một tệp ZIP duy nhất để chuyển tiếp tới tạp chí bạn chọn.
* Truy cập vào một máy chủ Linux được trang bị đầy đủ: những công cụ và tiện ích bạn có thể cần cho xử lý đồ họa và văn bản—\write18 của TeX chưa bao giờ vui đến thế!
* Chọn bộ máy TeX để xử lý mã LaTeX của bạn hoặc để Overleaf tự phát hiện và dùng bộ máy phù hợp nhất với việc xử lý tài liệu của bạn. Overleaf hỗ trợ xử lý LaTeX với pdfTeX, XeTeX, LuaTeX và dvipdf.

#### Overleaf dành cho các tổ chức và doanh nghiệp

Cung cấp cho cộng đồng và nhóm của bạn quyền truy cập vào một bản cài đặt LaTeX hiện đại hàng đầu—nhưng không có bất kỳ gánh nặng quản lý nào. Không còn các cuộc gọi hỗ trợ kỹ thuật về cài đặt LaTeX nữa, không cần lo lắng về Windows, Linux hay Mac OS—hãy tận dụng cơ sở hạ tầng kỹ thuật của Overleaf. Cộng đồng người dùng LaTeX của bạn sẽ đánh giá cao bộ tính năng mà Overleaf cung cấp để quản lý các dự án LaTeX—từ việc tải tệp và hình ảnh lên cho đến chia sẻ liên kết dự án cho phép các nhóm làm việc cùng nhau trên cùng một bài báo. Mang đến một dịch vụ xuất sắc cho các nhà nghiên cứu—thúc đẩy hợp tác để hỗ trợ những nghiên cứu tốt nhất. Cảm ơn bạn đã đọc bài viết này, chúng tôi hy vọng bạn thấy điều gì đó thú vị. Nếu bạn có bất kỳ câu hỏi nào về Overleaf, xin đừng ngần ngại [liên hệ với chúng tôi](https://www.overleaf.com/contact)—đội ngũ Overleaf rất mong nhận được hồi âm từ bạn.

Chúc bạn (La)TeX vui vẻ!


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://overleaf-pro.ayaka.space/latex/vi/bai-viet-chuyen-sau/55-what-s-in-a-name-a-guide-to-the-many-flavours-of-tex.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
