HocThuatSo.comHọc Thuật Số
Gửi thư
LaTeX và Overleaf

Tiếng Việt trong LaTeX: gói, phông chữ và trình biên dịch nên chọn

Gõ tiếng Việt trong LaTeX không còn khó: lưu tệp UTF-8, chọn XeLaTeX hoặc LuaLaTeX với một phông có đủ dấu, hoặc pdfLaTeX với bảng mã T5. Phần đầu tệp mẫu, cách đọc lỗi dấu và cách sửa.

Tiếng Việt trong LaTeX: gói, phông chữ và trình biên dịch nên chọn

Cách ít lỗi nhất là lưu tệp ở mã UTF-8, biên dịch bằng XeLaTeX hoặc LuaLaTeX, dùng gói fontspec với một phông có đủ chữ tiếng Việt và gói babel với tuỳ chọn vietnamese. Nếu mẫu bắt buộc pdfLaTeX, dùng bảng mã T5 của bộ vntex.

Phần lớn lỗi dấu tiếng Việt trong LaTeX không do LaTeX mà do ba thứ quanh nó: bộ gõ sinh ký tự tổ hợp, phông chữ thiếu dấu, hoặc chọn nhầm trình biên dịch so với phần đầu tệp. Bài này cho phần đầu tệp mẫu cho từng trường hợp và cách đọc thông báo lỗi.

Nên biên dịch bằng XeLaTeX, LuaLaTeX hay pdfLaTeX?

Ba trình biên dịch đều in được tiếng Việt, khác nhau ở cách xử lý phông và mức tương thích với mẫu của nhà xuất bản.

Trình biên dịchPhông chữHợp khiĐiểm cần lưu ý
XeLaTeXDùng phông OpenType, TrueType có trong hệ thống qua fontspecLuận án, giáo trình, tài liệu tiếng Việt là chínhMột số mẫu của nhà xuất bản không chạy được
LuaLaTeXNhư XeLaTeX, thêm khả năng lập trình bằng LuaNhư XeLaTeX; tài liệu lớn, nhiều tuỳ biếnBiên dịch chậm hơn pdfLaTeX
pdfLaTeXPhông Type 1 theo bảng mã, tiếng Việt cần bảng mã T5Bài nộp tạp chí mà mẫu chỉ hỗ trợ pdfLaTeXÍt lựa chọn phông có dấu tiếng Việt

Trên Overleaf, trình biên dịch chọn trong phần thiết lập (Settings) của dự án, mục Compiler. Chọn sai trình biên dịch so với phần đầu tệp là lỗi phổ biến nhất: tệp dùng fontspec mà biên dịch bằng pdfLaTeX sẽ dừng ngay với thông báo gói này cần XeTeX hoặc LuaTeX.

Phần đầu tệp mẫu cho từng trường hợp

XeLaTeX hoặc LuaLaTeX

Đây là cách nên dùng cho tài liệu tiếng Việt là chính:

\documentclass[12pt]{article}
\usepackage{fontspec}
\setmainfont{TeX Gyre Termes}
\usepackage[vietnamese]{babel}

TeX Gyre Termes là phông kiểu Times có sẵn trong TeX Live và trên Overleaf, có đủ chữ tiếng Việt. Muốn dùng phông khác, đổi tên trong \setmainfont; trước đó kiểm phông có đủ dấu theo cách ở mục sau.

pdfLaTeX

Khi mẫu bắt buộc pdfLaTeX, phần đầu tối thiểu là:

\usepackage[T5]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[vietnamese]{babel}

Bảng mã T5 do bộ vntex cung cấp, có trong TeX Live đầy đủ và trên Overleaf. Từ năm 2018 LaTeX mặc định đọc tệp nguồn là UTF-8 nên dòng inputenc không còn bắt buộc, nhưng giữ lại cũng không hại và giúp tệp chạy với bản TeX cũ. Phông mặc định khi dùng T5 là phông Computer Modern có dấu của vntex.

Tài liệu song ngữ

Nếu bài chủ yếu tiếng Anh, chỉ có tên riêng hoặc vài đoạn tiếng Việt, khai cả hai ngôn ngữ, ngôn ngữ chính đặt cuối: \usepackage[vietnamese,english]{babel}. Đoạn tiếng Việt bọc trong môi trường otherlanguage với tham số vietnamese để tiêu đề tự sinh và quy tắc ngắt dòng đổi theo.

Bộ gõ: chọn Unicode dựng sẵn, không chọn tổ hợp

Bộ gõ tiếng Việt như Unikey, EVKey có hai kiểu Unicode: dựng sẵn (mỗi chữ có dấu là một ký tự) và tổ hợp (chữ cái gốc cộng ký tự dấu đứng riêng). LaTeX với bảng mã T5 chỉ xử lý dạng dựng sẵn; XeLaTeX xử lý được dạng tổ hợp nhưng dấu có thể đặt lệch hoặc chồng lên nhau tuỳ phông. Đặt bộ gõ ở bảng mã Unicode (dựng sẵn) là xong phần lớn vấn đề.

Văn bản dán từ PDF, từ trang web hoặc từ tên tệp trên máy Mac đôi khi ở dạng tổ hợp dù bạn không gõ. Dấu hiệu nhận biết: chữ trông đúng trong trình soạn nhưng biên dịch ra dấu lệch, hoặc tìm kiếm chữ đó trong tệp không ra. Cách sửa là chuẩn hoá văn bản về dạng NFC; nhiều trình soạn có lệnh này, hoặc dùng chức năng chuyển mã của Unikey cho đoạn văn đã dán.

Kiểm phông có đủ chữ tiếng Việt trước khi dùng

Vì sao phải kiểm

Phông đẹp trên Word chưa chắc có đủ các chữ như ẳ, ỡ, ự. Với XeLaTeX, thiếu chữ không làm biên dịch dừng: chữ thiếu chỉ biến mất khỏi PDF, và nhật ký ghi một dòng cảnh báo dễ bị bỏ qua. Bạn có thể nộp bài mà mất chữ không hay.

Cách kiểm

Biên dịch một trang thử có câu chứa đủ nguyên âm có dấu, ví dụ một đoạn ngắn gồm các chữ ă, â, ê, ô, ơ, ư, đ với đủ năm dấu. Sau đó mở tệp nhật ký (log) và tìm cụm Missing character. Không có dòng nào là phông đạt. Trên Overleaf, xem nhật ký đầy đủ qua nút xem log thô (raw logs) cạnh nút biên dịch.

Phông nên thử

Các phông có sẵn trong TeX Live như họ TeX Gyre (Termes, Pagella, Heros), Libertinus, và họ Noto đều có tiếng Việt. Phông thương mại cài trên máy cá nhân dùng được với XeLaTeX cài tại máy, nhưng Overleaf không có những phông đó trừ khi bạn tải tệp phông lên dự án và được phép về bản quyền.

Thông báo lỗi hay gặp và cách sửa

Thông báo hoặc hiện tượngNguyên nhân thường gặpCách sửa
Unicode character ... not set up for use with LaTeXBiên dịch pdfLaTeX mà thiếu bảng mã T5Thêm \usepackage[T5]{fontenc} hoặc chuyển sang XeLaTeX
Missing character: There is no ... in font ...Phông đang dùng thiếu chữ tiếng ViệtĐổi phông có đủ chữ, kiểm lại bằng trang thử
Gói fontspec báo cần XeTeX hoặc LuaTeXTrình biên dịch đang là pdfLaTeXĐổi Compiler sang XeLaTeX hoặc LuaLaTeX
Dấu lệch, chồng lên chữVăn bản ở dạng Unicode tổ hợpChuẩn hoá về dạng dựng sẵn (NFC)
Tiêu đề tự sinh vẫn là Contents, ChapterThiếu babel tiếng Việt hoặc ngôn ngữ chính đặt saiKhai vietnamese và đặt ngôn ngữ chính ở cuối danh sách
Chữ có dấu trong tài liệu tham khảo bị hỏngBibTeX cổ điển xử lý UTF-8 kémDùng biblatex với biber

Những việc không cần làm nữa

Không cần gõ dấu bằng lệnh. Cách viết kiểu dùng lệnh dấu cho từng chữ là di sản từ thời chưa có UTF-8; nó làm tệp nguồn khó đọc, khó sửa và không cần thiết với các bản TeX hiện nay.

Không cần các bảng mã cũ như VISCII hay TCVN3. Tệp nguồn nên luôn là UTF-8. Nếu nhận tài liệu cũ ở bảng mã khác, chuyển mã một lần rồi lưu lại ở UTF-8.

Không cần cài thêm gói tiếng Việt trên Overleaf. Overleaf có sẵn TeX Live đầy đủ, gồm vntex, babel tiếng Việt và các phông TeX Gyre; chỉ cần khai trong phần đầu tệp.

Khoảng trắng, dấu ngoặc kép và ngắt dòng trong văn bản Việt

Tiếng Việt viết theo âm tiết cách nhau bằng khoảng trắng, nên LaTeX gần như luôn ngắt dòng ở khoảng trắng và hiếm khi phải ngắt giữa âm tiết. Nếu thấy một âm tiết bị cắt đôi bằng gạch nối ở cuối dòng, kiểm lại ngôn ngữ chính đã khai đúng tiếng Việt chưa; khai sai ngôn ngữ thì LaTeX áp quy tắc ngắt từ của tiếng Anh lên chữ Việt.

Giữa số và đơn vị, giữa chữ “Hình”, “Bảng” và số thứ tự, dùng dấu ngã ~ (khoảng trắng không ngắt) để hai phần không bị tách ra hai dòng: Hình~\ref{fig:a}, 25~kg. Với XeLaTeX và LuaLaTeX, dấu ngoặc kép cong “ ” gõ thẳng từ bàn phím là được; với pdfLaTeX, cách quen thuộc là gõ hai dấu huyền mở và hai dấu nháy đơn đóng, LaTeX sẽ in thành ngoặc kép cong.

Tình huống: giáo trình cũ soạn bằng phông TCVN3 cần đưa sang LaTeX

Một bộ môn muốn chuyển giáo trình soạn từ lâu trên Word với phông .VnTime sang LaTeX. Dán thẳng văn bản vào trình soạn sẽ ra chuỗi ký tự lạ, vì văn bản lưu theo bảng mã TCVN3 chứ không phải Unicode. Bước đầu tiên là chuyển mã toàn bộ tài liệu trên Word sang Unicode dựng sẵn bằng công cụ chuyển mã của bộ gõ (ví dụ chức năng chuyển mã của Unikey, chọn bảng mã nguồn TCVN3 và bảng mã đích Unicode), lưu thành bản mới, kiểm vài trang, rồi mới đưa sang LaTeX.

Công thức toán soạn bằng công cụ của Word không chuyển tự động được; phải gõ lại bằng cú pháp LaTeX hoặc dùng công cụ chuyển đổi rồi soát từng công thức. Kế hoạch thực tế là chuyển phần chữ trước, gõ lại công thức theo từng chương, và giữ bản Word gốc để đối chiếu.

Trình tự kiểm một dự án mới trong năm phút

Trước khi viết chương đầu tiên, chạy đủ năm bước để không phát hiện lỗi dấu khi đã viết hàng chục trang:

  1. Đặt trình biên dịch khớp với phần đầu tệp (XeLaTeX nếu dùng fontspec).
  2. Biên dịch một trang thử chứa đủ nguyên âm có dấu, chữ đ, chữ in hoa có dấu.
  3. Tìm Missing character trong nhật ký; không có thì phông đạt.
  4. Chèn thử một trích dẫn tài liệu tiếng Việt có tên tác giả có dấu, biên dịch cả phần tài liệu tham khảo.
  5. Sao chép một đoạn từ PDF ra trình soạn văn bản; chữ dán ra đúng dấu nghĩa là PDF tìm kiếm được.

Câu hỏi thường gặp

Overleaf có hỗ trợ tiếng Việt không?

Có. Overleaf chạy TeX Live đầy đủ, gồm bộ vntex, babel tiếng Việt và nhiều phông có dấu. Bạn chỉ cần khai phần đầu tệp đúng và chọn trình biên dịch tương ứng trong phần thiết lập của dự án.

Có dùng được Times New Roman trong LaTeX không?

Được, với XeLaTeX hoặc LuaLaTeX cài trên máy có phông Times New Roman, qua lệnh setmainfont. Trên Overleaf, phông này không có sẵn; TeX Gyre Termes là phông kiểu Times có đủ chữ tiếng Việt và thường được dùng thay.

Bài nộp tạp chí quốc tế có tên tác giả tiếng Việt thì dùng cách nào?

Giữ đúng trình biên dịch mà mẫu của tạp chí yêu cầu, thường là pdfLaTeX. Thêm bảng mã T5 nếu mẫu cho phép thêm gói; nếu không, hỏi toà soạn cách họ xử lý ký tự đặc biệt trong tên.

Vì sao PDF xuất ra không tìm được chữ tiếng Việt?

Thường do văn bản nguồn ở dạng Unicode tổ hợp, hoặc phông thiếu bảng ánh xạ ký tự. Chuẩn hoá văn bản về dạng dựng sẵn và dùng phông OpenType có đủ chữ với XeLaTeX là khắc phục được phần lớn trường hợp.

Có cần gói vietnam nếu đã dùng babel?

Với pdfLaTeX, babel tiếng Việt kết hợp bảng mã T5 là đủ cho hầu hết tài liệu; gói vietnam của vntex là một cách khai khác cho cùng mục đích. Với XeLaTeX và LuaLaTeX thì không cần gói vietnam.

Cần tư vấn cụ thể cho trường hợp của bạn?

Chúng tôi sẽ liên hệ trong vòng 24 giờ.

Đăng ký tư vấn ngay

Bài viết liên quan

🧭
Bạn đang ở chặng nào của đường học vị?
Nhập chỗ bạn đang đứng và đích bạn nhắm — công cụ trả về số năm, chi phí và việc phải làm từng chặng.
Xem lộ trình của tôi →
Miễn phí, không cần tài khoản. Xem tất cả công cụ

Bạn cần hỗ trợ thêm?

Để lại thông tin, chúng tôi sẽ liên hệ trong 24 giờ.

hoặc
[email protected]