- Tác giả đã sử dụng Typst để viết luận án tiến sĩ, và đây là một thử thách mới khác với LaTeX truyền thống
- Nhờ tốc độ biên dịch nhanh, ngôn ngữ scripting nhất quán và mạnh mẽ, khả năng tùy biến bố cục dễ dàng, cùng code highlighting xuất sắc, việc chỉnh sửa tài liệu và tinh chỉnh template trở nên rất hiệu quả
- Tuy vậy, vẫn tồn tại rõ ràng những bất tiện và giới hạn như sự bất tiện trong quản lý thư mục tài liệu tham khảo, hạn chế khi chuyển đổi sang LaTeX, thiếu template do hệ sinh thái còn non trẻ, và giới hạn của thông báo lỗi
- Vẫn còn thiếu sót về khả năng tương thích với LaTeX, cộng tác, và hỗ trợ các định dạng được yêu cầu khi nộp luận văn; điều này cho thấy LaTeX trên thực tế vẫn là tiêu chuẩn cho cộng tác học thuật và nộp bài hội nghị
- Typst đặc biệt có lợi khi cần độ tự do mang tính lập trình và các tính năng hiện đại, nhưng không được khuyến nghị cho người mới bắt đầu hoặc các nhu cầu tiêu chuẩn
Vì sao tôi viết luận án tiến sĩ bằng Typst
- Gần đây, tác giả đã viết luận án tiến sĩ bằng Typst, thử dùng một ngôn ngữ dàn trang mới thay cho LaTeX vốn được sử dụng phổ biến từ lâu
- Typst là sự kết hợp giữa Markdown và Rust kiểu động, khiến việc soạn tài liệu tự nhiên hơn so với LaTeX, đồng thời cũng có khả năng mở rộng rất tốt như một ngôn ngữ scripting
- Cú pháp trực quan, và việc chuyển đổi qua lại giữa code và tài liệu cũng rất dễ dàng
Ưu điểm của Typst
Tốc độ biên dịch
- Trình biên dịch Typst có tốc độ rất nhanh, nên ngay cả khi tài liệu lớn vẫn có thể xem trước PDF theo thời gian thực
- Toàn bộ quá trình build cũng hoàn tất trong khoảng 15 giây, và khi thay đổi nội dung thì gần như có thể thấy kết quả ngay lập tức
- Có thể lặp lại hiệu quả việc chỉnh bố cục và style, từ đó nâng cao chất lượng đầu ra cuối cùng
Thiết kế ngôn ngữ và tận dụng script
- Ngôn ngữ Typst có tính nhất quán cao, và nhờ thiết kế dựa trên Rust nên đường cong học tập thấp
- Sự bất tiện do thiếu nhất quán cú pháp giữa các package trong LaTeX được giải quyết trong Typst
- Có nhiều ứng dụng mang tính lập trình phong phú, chẳng hạn như trực tiếp parse file TOML để tự động trực quan hóa dữ liệu trong tài liệu
- Khả năng tích hợp với các công cụ hiện đại (compiler, quản lý dependency, LSP, v.v.) cũng là một điểm mạnh
Chỉnh sửa template và bố cục
- Cấu trúc template của Typst rõ ràng, nên có thể dễ dàng sửa đổi và mở rộng theo ý muốn
- So với việc chỉnh sửa các template phức tạp của LaTeX, trải nghiệm cấu hình trực quan và nhanh hơn rất nhiều
Tô sáng mã nguồn
- Nhờ hỗ trợ syntax highlighting tích hợp sẵn, mã nguồn trong luận án dễ đọc hơn
- Có thể tận dụng Textmate grammar, đồng thời cũng dễ dàng triển khai các định nghĩa tùy chỉnh dựa trên regex
- Tác giả cũng đã thử nghiệm tự viết parser bằng script để highlight các cú pháp cụ thể
Thông báo lỗi
- So với LaTeX, Typst chỉ ra vị trí và nguyên nhân lỗi rõ ràng hơn, giúp giảm đáng kể thời gian xử lý vấn đề
- Không có các đầu ra terminal thừa thãi, và thông tin lỗi thực sự hữu ích
Nhược điểm của Typst
Quản lý thư mục tài liệu tham khảo (bibliography)
- Chỉ hỗ trợ một bibliography duy nhất cho toàn bộ luận án, nên không thể dùng các file thư mục tài liệu tham khảo khác nhau theo từng chương hoặc cho từng tài liệu được chèn vào luận án
- Thiếu hỗ trợ cho các tính năng nâng cao như biến Bibtex, nên cần tích hợp thủ công bằng Makefile
- Có thể giải quyết một phần bằng package (Alexandria), nhưng mức độ tiện dụng và tự động hóa còn thấp
- Việc chuyển đổi citation style, mapping field, v.v. vẫn chưa hoàn thiện ở mức chi tiết, nên khó tránh khỏi thao tác thủ công
- Các field của thư mục tài liệu tham khảo khác với chuẩn Bibtex nên kết quả có thể phát sinh khác biệt
Giới hạn của thông báo lỗi
- Trong các trường hợp phức tạp (ví dụ khi dùng Alexandria), đôi khi chỉ hiện thông báo thất bại đơn giản mà không có giải thích lỗi cụ thể
- Các show rule dựa trên trạng thái khiến việc lần theo vị trí lỗi trở nên khó khăn, làm tăng độ khó khi debug
- Một số cảnh báo liên quan đến bố cục cũng không dễ xác định nguyên nhân
Thực tế phức tạp: tính tương thích và hệ sinh thái
Tương thích với LaTeX và cộng tác
- Các bài báo hiện có hoặc bài nộp thường cần định dạng LaTeX, nên tác giả phải chuyển bản viết bằng Typst sang bằng Pandoc hoặc công cụ tương tự để sử dụng
- Ngay cả các bài mới cũng cần được soạn nháp bằng Typst trước rồi chuyển đổi sang bản cuối để nộp
- Việc chuyển đổi tự động từ Typst sang LaTeX chưa hoàn hảo, nên tác giả đã phải phát triển công cụ riêng để tiếp tục công việc
- Một số phần trong kết quả chuyển đổi (ví dụ: code) phải dùng
\includepdf của LaTeX, và điều này có thể không phù hợp với yêu cầu của nhà xuất bản
- Vì LaTeX là tiêu chuẩn, người cộng tác cũng phải học Typst từ đầu, gây thêm bất tiện
Tình hình hệ sinh thái Typst
- Typst vẫn là một hệ sinh thái giai đoạn đầu, nên template chính thức hoặc các mẫu nộp bài còn hạn chế
- Nhiều trường hợp người dùng phải tự tạo template tùy chỉnh
- Các template Typst cho hội nghị và tạp chí lớn vẫn chưa hoàn thiện về phạm vi hỗ trợ lẫn chất lượng
Kết luận và khuyến nghị
- Nếu bạn thích lập trình và bị thu hút bởi khả năng tùy biến công cụ ở mức chi tiết, thì việc viết luận án bằng Typst hoàn toàn đáng được khuyến nghị
- Nó mang lại lợi thế là có thể thử nghiệm lặp đi lặp lại với mức tự do tùy biến cao để tạo ra thành phẩm đẹp hơn
- Ngược lại, nếu cần dùng ngay mà không muốn thiết lập thêm, thì hiện tại Typst vẫn chưa phù hợp với các tài liệu lớn như luận án tiến sĩ
- Với các tài liệu quy mô nhỏ hoặc thử nghiệm cá nhân, Typst vẫn là một lựa chọn đáng để thử
1 bình luận
Ý kiến trên Hacker News
tinymist, và cả các editor trả phí như Typstify cũng tồn tại độc lập với công tytexriêng rồi sau đó gom lại để biên dịch; cũng rất hợp với VCS như git. Nếu tạo hình bằng script, LaTeX có thể tự phát hiện file mới và biên dịch lại. Trong Word thì phải tự đi tìm và thay từng hình, rất kém hiệu quả. Tài liệu càng lớn thì Word càng bất tiện, còn LaTeX chỉ vất vả lúc đầu để thiết lập, sau đó lại hiệu quả hơnmakefilecũng hay không ổn định. Nhiều khi phải chạy nhiều lần mới ra kết quả đúng, thậm chí đôi lúc phảigit clean -xdfmới giải quyết được vấn đề. Đến giờ vẫn không rõ chính xác vì sao hiện tượng này xảy ra, mà bản thân cácmakefilecũng quá phức tạp-outdirđể tách quản lý các file trung gianmitexcũng là một lựa chọn, xem gói mitex. Còn tôi thì không còn đủ can đảm để học thêm một hệ ký hiệu khác nữa$x^2=1$vẫn hoạt động bình thường