8 điểm bởi GN⁺ 2025-06-23 | 1 bình luận | Chia sẻ qua WhatsApp
  • 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

 
GN⁺ 2025-06-23
Ý kiến trên Hacker News
  • Lo ngại rằng sau 30 năm nữa, LaTeX nhiều khả năng vẫn sẽ là mã nguồn mở và còn được duy trì, còn Typst có cấu trúc pha trộn giữa mã nguồn mở và mã nguồn đóng nên nếu công ty biến mất thì dự án cũng dễ không được duy trì
    • Bản thân dự án Typst khó có thể xem là mô hình pha trộn mã nguồn mở và mã nguồn đóng; chính nhà phát triển đã nói mục tiêu cốt lõi là để CLI và web app hoạt động giống nhau, xem bình luận trong issue này. Ngoài ra còn có phần mềm mã nguồn mở do cộng đồng làm như triển khai LSP tinymist, và cả các editor trả phí như Typstify cũng tồn tại độc lập với công ty
    • Trình biên tập web của Typst là mã nguồn đóng, nhưng hầu hết thành phần cần cho việc biên tập đều là mã nguồn mở nên trên môi trường local vẫn có thể có trải nghiệm tương tự hoặc tốt hơn. Trình biên dịch Typst, LSP, v.v. đều là mã nguồn mở. Điều này giống với các trường hợp tạo dự án LaTeX trên Overleaf, và nếu công ty Typst biến mất thì việc tải package cũng dựa trên các kho git mã nguồn mở nên chỉ cần dựng kho thay thế là không thành vấn đề lớn
    • Nếu phần mã nguồn mở bị bỏ mặc, thì thực ra cũng chẳng khác mấy so với phần lớn dự án được phát hành hoàn toàn dưới dạng mã nguồn mở
    • Không rõ cụ thể “tính năng cốt lõi” nào lại nằm trong phần mã nguồn đóng
  • Thắc mắc vì sao các nghiên cứu sinh tiến sĩ ngành khoa học máy tính lại ám ảnh việc dàn trang đến vậy; thấy họ tỏ ra cực kỳ quan tâm đến LaTeX rồi lại dành hàng tháng trời cho macro thì chỉ nghĩ là lại có thêm một người sa vào LaTeX. LaTeX giống như một cái bẫy trì hoãn đối với sinh viên
    • Với tư cách người học toán, việc viết tay mọi thứ quá bất tiện, còn gõ tài liệu có nhiều công thức cũng không hề dễ. Thực tế ở vật lý còn khó gõ hơn. Khi cuộc sống xoay quanh việc làm luận văn và bài tập, việc ghi lại ý tưởng dễ đến mức nào là điều cực kỳ quan trọng. Vì vậy người ta nhạy cảm với chất lượng của engine và cũng thường xuyên chia sẻ mẹo macro cho nhau; văn hóa nhận lời khuyên từ người xung quanh và chia sẻ phần header cơ bản là rất tự nhiên
    • Dùng LaTeX tạo ra một kiểu “cảm giác chính thống”. Công thức viết trong tài liệu LaTeX trông cực kỳ nghiêm túc, còn làm trong Word thì không như vậy. Giống như cảm giác trở thành dân chuyên nghiệp khi lần đầu làm newsletter bằng Aldus PageMaker rồi in ra bằng máy in laser
    • Có thể quản lý tài liệu lớn, như luận án, bằng cách tách từng phần vào các file tex riê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ơn
    • Vào những năm 2000, chỉ cần có một ít công thức thôi mà làm bằng Word cũng đã rất khổ. Nếu cần hàng chục trang công thức với tham chiếu chéo thì gần như không thể làm nổi nếu không dùng LaTeX. Việc chia file theo từng chương và tích hợp với editor tử tế cũng là ưu điểm quan trọng
    • Trong 10 năm viết paper và báo cáo, việc tích lũy những snippet lặt vặt không phải là ám ảnh mà là kết quả tự nhiên
  • Typst trông rất hứa hẹn vì cung cấp sẵn các template phổ biến như IEEE, và kết quả đầu ra gần như giống hệt LaTeX. Toolchain của LaTeX có nhiều bất tiện, makefile cũ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ải git clean -xdf mớ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ác makefile cũng quá phức tạp
    • Người ta hay nói “làm cùng một việc hai lần và mong kết quả khác đi là điên rồ”, còn biên dịch LaTeX đúng nghĩa là như vậy
    • Không phải lời giải hoàn hảo, nhưng có thể giới thiệu Latexmk vì nó tự động hóa phần khổ sở của quá trình build LaTeX. Xem hướng dẫn sử dụng. Ngoài ra còn có thể dùng tùy chọn -outdir để tách quản lý các file trung gian
    • Trước đây tôi từng hiểu vì sao phải chạy nhiều lần, nhưng giờ thì không còn nhớ nữa. Trong script build cá nhân ngày xưa tôi từng viết điều kiện là nếu dùng bibtex thì chạy ba lần, còn không thì hai lần. Giờ nhìn lại chỉ thấy nhẹ nhõm vì thời đó đã qua
    • Dạo này dùng Tectonic thì các vấn đề biên dịch lặp kiểu đó được xử lý tự động, không còn phải bận tâm
  • AI giờ là đối tượng chính của việc viết lách, đồng thời cũng là lý do chính để chọn định dạng markup. Xét về mức độ nén ngữ nghĩa, Typst, markdown và asciidoc đều gọn hơn LaTeX rất nhiều. Cá nhân tôi trong 6 tháng qua đã trải qua thay đổi cực lớn khi dùng AI cho nghiên cứu toán học và công việc code, và trong lĩnh vực này thật sự khó tìm được đáp án hay lời khuyên chắc chắn. Trên thực tế AI đọc sơ đồ toán học dạng SVG còn tốt hơn con người, và lại ghét đọc source LaTeX. Tôi hiểu yêu cầu định dạng từ phía journal, nhưng cũng có nhiều editor journal vẫn ép đầu ra 2 cột lỗi thời. Thời đại mà bản in trên giấy không còn quá quan trọng nên tôi cũng không bận tâm lắm, và sau này dự định sẽ để lại kết quả nghiên cứu của mình dưới dạng animation hoặc tài liệu Typst
    • Trong môi trường khoa học chuyên nghiệp, nơi mọi người thực sự in paper ra để đọc, giấy vẫn rất hiệu quả
  • Vì journal hay conference vẫn chưa chấp nhận Typst, nên tôi không cố tình bám lấy LaTeX mà đơn giản là hiện thực buộc phải ở lại với LaTeX. Việc có áp dụng hay không phụ thuộc vào ý chí của họ trong việc tích hợp nó vào toolchain
  • Tôi đang dần chuyển công việc sang Typst và thấy nó nhanh, mượt. Tuy vậy, rào cản lớn nhất là phải học lại cách ký hiệu toán; Typst có những quy tắc riêng nên phải học lại từ đầu
    • Typst cũng có vẻ hay, nhưng tôi lại quay về dùng LaTeX với tổ hợp Claude Code và VS Code. Tôi đã xa LaTeX một thời gian khá lâu, hơn 10 năm kể từ khi tốt nghiệp tiến sĩ; hồi trước từng dùng đến mức thuộc cả TikZ, công thức và macro trong preamble. Với Claude Code, chỉ cần nhập điều tôi muốn là sau 1, 2 lần đã ra gần đúng kết quả mong muốn. Ngay cả việc giải mã thông báo lỗi LaTeX thì Claude cũng xử lý được 95%, nên giờ nó không còn là vấn đề lớn như trước
    • mitex cũ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
  • Nếu tò mò về source Typst và kết quả đầu ra, tôi chia sẻ vài tài liệu tự làm:
  • Có quan điểm cho rằng Typst nhiều khả năng sẽ biến mất trong vài năm tới hoặc bị công ty khác thâu tóm, còn LaTeX thì sẽ tồn tại thêm hàng chục năm nữa
  • Tôi từng định chuyển sang Typst vì nó hấp dẫn hơn LaTeX ở các điểm như kiểm soát bố cục theo chiều dọc, nhưng gần đây khả năng sinh code của các LLM kiểu ChatGPT đã khá lên, trong khi với các engine markup mới, đặc biệt là Typst, lại còn khá yếu. AI với LaTeX tuy vẫn tệ nhưng so với Typst thì tốt hơn hẳn; còn với Typst thì gần như không ra được kết quả. Có thể sau 6 tháng hay 1 năm nữa mọi thứ sẽ cải thiện
    • Dùng LLM thì đúng là đỡ phải suy nghĩ, khá tiện, nhưng điều gây bực là có quá nhiều người phụ thuộc vào LLM đến mức không dùng nổi công cụ mới. Điều này giống hiện tượng ngày trước nhiều người ngại học ngôn ngữ mới chỉ vì không thể copy-paste hoặc khó tìm snippet code
    • Với markdown hay Rust thì AI dùng khá ổn. Nếu đưa dàn ý tài liệu Typst vào prompt của LLM thì có lẽ cũng sẽ giúp được phần nào
  • Điểm tôi không thích ở Typst là hiện nay cú pháp công thức LaTeX gần như đã trở thành tiêu chuẩn, lại được dùng rất rộng rãi, nên việc học một cú pháp toán mới là khá khó
    • Thực ra trong Typst, cách viết như $x^2=1$ vẫn hoạt động bình thường