1 điểm bởi GN⁺ 7 giờ trước | 1 bình luận | Chia sẻ qua WhatsApp
  • Kết hợp soạn thảo tài liệu dựa trên Markdown với khả năng dàn trang ở cấp độ LaTeX, cho phép xử lý từ bài báo khoa học đến sách, bản trình bày, trang web tĩnh và knowledge base trong một công cụ duy nhất
  • Trong cú pháp giảm boilerplate, có thể chèn trực tiếp các thành phần như tác giả, lề trang, tóm tắt, hình ảnh, trích dẫn để viết nội dung và bố cục cùng lúc
  • Chỉ với một dòng cấu hình .doctype, có thể chuyển giữa các kiểu tài liệu paged, plain, docs, slides, đồng thời hỗ trợ cả bản trình bày tương tác
  • Cung cấp biên dịch nhanh và live preview, cùng scripting Turing complete để tái sử dụng hàm và tham số, giúp giảm các công việc bố cục lặp lại
  • Được phát hành dưới dạng mã nguồn mở miễn phí, có hơn 10K stars trên GitHub, tích hợp VS Code, kèm Quickstart và tài liệu để mở rộng khả năng ứng dụng thực tế

Tính năng cốt lõi

  • Là một hệ thống soạn thảo tài liệu hiện đại kết hợp Markdown với khả năng dàn trang ở cấp độ LaTeX
  • Được thiết kế để xử lý từ bài báo khoa học, sách, bản trình bày, website tĩnh đến knowledge base bằng một công cụ duy nhất
  • Miễn phí và được cung cấp dưới dạng mã nguồn mở, trình biên dịch vẫn đang tiếp tục phát triển và được duy trì như phần mềm tự do
  • Quarkdown, Wiki, Discuss

Trải nghiệm viết

  • Được thiết kế để tập trung vào việc viết không cần boilerplate
  • Có thể chèn trực tiếp các thành phần như docauthor, pagemargin, abstract, hình ảnh, trích dẫn vào trong cú pháp để xử lý cả bố cục tài liệu và nội dung cùng lúc
  • Tài liệu ví dụ được sắp xếp theo luồng viết tiêu đề, tác giả, lề trang, hình ảnh, tóm tắt và trích dẫn cùng trong một tệp
  • Cú pháp mở rộng cho phép biểu đạt nhiều hơn so với Markdown cơ bản

Kiểu tài liệu và doctype

  • Kiểu tài liệu được chuyển đổi bằng một dòng cấu hình .doctype
  • paged dùng cho bài viết, sách và báo cáo
  • plain dùng cho ghi chú, knowledge base và website tĩnh đơn giản
  • docs dùng cho wiki, tài liệu kỹ thuật và knowledge base quy mô lớn
  • slides dùng cho bài giảng, thuyết trình và bản trình bày tương tác

Xem trước phản hồi nhanh và scripting

  • Thông qua biên dịch nhanh và live preview, có thể xem kết quả ngay khi đang nhập
  • Bao gồm tính năng scripting Turing complete để giảm công việc lặp lại
  • Có thể áp dụng cùng một mẫu bố cục cho nhiều mục bằng cách định nghĩa hàm và tái sử dụng tham số
  • Trong ví dụ, sau khi định nghĩa hàm animal, hệ thống tái sử dụng tên, hệ sinh thái và cấu hình hình minh họa để tạo nhiều mục

Cài đặt và cách bắt đầu

Hệ sinh thái và tài liệu

  • Được hiển thị là đã đạt hơn 10K stars trên GitHub
  • Cung cấp lộ trình học tập và tích hợp trình soạn thảo qua Quickstart, Docs, VS Code, Wiki

1 bình luận

 
Ý kiến trên Hacker News
  • Thành thật mà nói thì khá ấn tượng, nhưng với tôi, cốt lõi của Markdown nằm ở sự đơn giản đến cực độ
    Có thể chỉnh sửa mà không cần GUI, viết trong VIM ở terminal vẫn hình dung được đại khái kết quả sẽ trông ra sao, và bản thân file .md thô cũng khá dễ đọc
    Nhưng một khi cứ tiếp tục chồng thêm tính năng vào thì lại phải tra những lệnh lạ, rồi cuối cùng cũng chẳng nhớ nổi, lại không chắc hình thức sẽ thế nào nếu không render, và rồi bắt đầu mong có trình soạn thảo WYSIWYG
    Nó trông giống kiểu ý tưởng muốn nhét cả chữ Kirin, Devanagari, tiếng Trung, phím tiếng Ả Rập vào bàn phím QWERTY, để rồi cuối cùng lại có cảm giác quay về kiểu gõ hunt and peck

    • Với tôi, một trong những ưu điểm lớn của Markdown là nó mang tính WYSIWYG một nửa
      Cú pháp cơ bản tái sử dụng chính cách con người vốn bắt chước định dạng trong văn bản, nên bản thân phần nhập vào đa phần vẫn dễ đọc nguyên trạng
      Dù không biết chính xác cách viết Markdown thì thường cũng không gặp vấn đề khi đọc, bảng vẫn trông như bảng và đoạn văn vẫn trông như đoạn văn
      Thỉnh thoảng tôi cũng phải tra lại cú pháp, nhưng như vậy không sao cả. Vốn từ chủ động nhỏ hơn vốn từ thụ động là chuyện tự nhiên
      Vì thế tôi thường đánh giá theo độ dễ đọc của văn bản đầu vào, và khá nhiều thứ được trình bày ở đây có vẻ không đem lại lợi ích quá lớn theo tiêu chí đó
      Tuy vậy, tôi chưa thấy ví dụ định dạng công thức, mà những lúc hiếm hoi tôi dùng LaTeX thì phần lớn đều là vì công thức toán không làm được bằng Markdown, nên tôi khá tò mò phần đó trên thực tế trông sẽ ra sao
    • Lập luận đó khá thuyết phục
      Dù vậy, Quarkdown rõ ràng vẫn có vẻ là bản nâng cấp so với việc tự gõ LaTeX, đồng thời cũng có vẻ dự đoán kết quả tốt hơn và tương thích hơn với biên tập có hỗ trợ LLM so với trình soạn thảo GUI kiểu Word
    • Chỉ cần làm ra một Quarkdown mạnh hơn, không cần học mấy lệnh lạ, lại có UI/UX mượt mà
      Tên của nó có thể là Microsoft Word
    • Tôi cũng đang làm một Markdown renderer nhỏ, mà ngay cả chuyện đặt tên đã khó, còn khiến mọi người thực sự dùng sau khi hoàn thành thì còn khó hơn
      Dạo này chỉ một trình soạn thảo “plain markdown” bình thường thì khó mà nổi bật, và nếu muốn lên trang nhất HN thì có vẻ cuối cùng vẫn phải có tính năng và độ hoàn thiện vượt ra ngoài Markdown thông thường
      Cảm giác như một kiểu chọn lọc tự nhiên
    • Obsidian.md là một trình soạn thảo WYSIWYG cho Markdown cơ bản thực sự rất tuyệt
  • Sẽ rất hay nếu có tài liệu so sánh các công cụ và ngôn ngữ markup này trong cùng một chỗ
    Sẽ tốt nếu đặt MyST, Pandoc, Quarkdown, Quarto, Typst cạnh nhau
    Quarto và Pandoc dùng Pandoc Markdown, và https://www.zettlr.com/ cũng vậy
    Ngược lại, Quarkdown và Typst mang cảm giác giống ngôn ngữ markup có thể lập trình gần với LaTeX hay HTML+Javascript hơn, nên có vẻ vẫn chưa rõ ai sẽ thực sự trở thành người kế nhiệm LaTeX

    • Tôi đã dùng thử hầu hết và cũng định sẽ tiếp tục dùng, nên có thể phân loại đại khái như sau
      Markdown về cơ bản chỉ là .txt với một ít cú pháp đường mật, và có thể xuất sang PDF hoặc HTML
      Quarto là Markdown dành cho khi bạn muốn chạy code block
      Còn Typst là LaTeX được làm lại theo hướng hiện đại, nên giảm được khoảng 90% những thứ lặt vặt nhưng cũng có cảm giác mất đi chừng 10% tính năng
      Giới học thuật vốn không thích đồ mới, nên ngay cả khi dùng Typst họ cũng có thể sẽ không mấy hào hứng
      Pandoc rốt cuộc là công cụ để xuất sang các định dạng như PDF, HTML và nhiều dạng khác
      Thường thì khá nhanh để thấy mình cần công cụ nào, và tuy còn có cả asciidoc, nhưng nếu nghĩ xem còn mảng nào mà bộ markdown/quarto/typst không bao phủ được thì cũng không nhiều
      Thứ còn lại có lẽ chỉ là trình soạn thảo WYSIWYG
    • djot cũng đáng có mặt trong danh sách so sánh
      Nó trông như một superset khá chặt chẽ và được thiết kế tốt của Markdown
      https://djot.net/
    • Tôi đã rất muốn thực sự thích Typst
      Sẽ tuyệt nhất nếu không phải dùng LaTeX nữa, nhưng khi thử cho dự án thật thì có quá nhiều corner case nên cuối cùng tôi lại quay về LaTeX
      Có những phần vốn có trong LaTeX nhưng bị thiếu, và việc thiếu khả năng chuyển đổi qua Pandoc cũng là một vấn đề lớn
      Tôi thực sự mong 10% cuối cùng đó sớm được lấp đầy
    • Nếu là kiểu so sánh đó thì đã có rồi
      https://github.com/iamgio/quarkdown#comparison
    • Pandoc ở một tầng khác so với các công cụ còn lại
      Nó cho phép áp các filter tùy ý lên định dạng JSON trung gian, nên trên thực tế có thể hiện thực gần như bất kỳ phép biến đổi nào bạn muốn, đồng thời chuyển đủ loại định dạng sang JSON đó hoặc ngược lại
      Vì vậy tôi thích các hệ thống dựa trên Pandoc, và ngay cả những việc công cụ mặc định không làm được cũng thường giải quyết bằng một inline filter đơn giản
  • Theo mô hình chuẩn của phần mềm vật lý, Quarkdown nếu chỉnh sửa trong Atom thì sẽ thành Quarkup, còn Neutron Mail thì phải đổi thành Proton Mail
    Tuy nhiên, nó chỉ hoạt động nếu bạn vừa gõ bằng tay trái vừa làm ứng dụng Electron, lại còn viết cả anti-Neutrinos AI blogpost

  • Đánh giá ngắn của tôi là, đây về cơ bản gần giống Markdown được gắn thêm macro kiểu LaTeX
    Chỉ là ở đây họ gọi nó là hàm, có lẽ vì ít nhất cũng có một hàm có tác dụng phụ. Chính là cái hàm định nghĩa hàm mới ấy
    Tôi thích sự thuần nhất về cú pháp kiểu “mọi thứ đều là hàm”, nhưng việc trộn cấu trúc và styling theo kiểu HTML/CSS một cách tự nhiên như vậy thì hơi lưng chừng. Dù đúng là ranh giới đó vốn dĩ cũng đã mờ rồi
    Dù sao thì nó khá ngầu, và tôi hiểu vì sao có nhiều phản ứng hoài nghi với những nỗ lực thay đổi Markdown quá mạnh
    Phê bình rằng lạm dụng hàm có thể làm giảm khả năng đọc của văn bản gốc cũng là xác đáng, và đôi khi tính không Turing hoàn chỉnh lại là một ưu điểm
    Nhưng nếu chỉ xét thiết kế thêm hàm vào Markdown, thì tôi nghĩ đây thuộc loại thiết kế khá gọn gàng

  • Tôi là tác giả và project lead của Quarkdown
    Ban đầu nó khởi đầu như một dự án nghiên cứu ở đại học, và tôi chưa từng tưởng tượng sau 2 năm nó sẽ thành ra như thế này
    Cảm ơn mọi người đã quan tâm, tôi sẽ cố gắng trả lời comment nhiều nhất có thể

    • Không biết ở v3 có định “sửa” cú pháp bôi đậm không
      Tôi luôn nghĩ *bold*_italic_ hợp lý hơn **bold***italic*
      Cái dấu sao thêm vào của Markdown là một quyết định thiết kế không hay, nhất là khi chỉnh sửa Markdown trên điện thoại hay tablet thì khá bất tiện
    • Ý tưởng đưa hàm vào một định dạng văn bản nghe khá lạ
      Ngay cả trong tài liệu GUI người ta cũng thường tránh macro, nên tôi tò mò không biết Quarkdown có phải ngay từ đầu được thiết kế cho tài liệu phức tạp và lặp lại nhiều hay không
      Cảm ơn vì đã nhận câu hỏi
    • Tôi đã đọc https://iamgio.eu/2025-12-10-accidentally-in-silicon-valley/ và thấy có vẻ mọi việc đã diễn ra tốt đẹp, nên rất vui
  • Xem lướt qua tài liệu thì tôi hơi lo liệu mô hình đánh giá này có thực sự phù hợp với công việc đó không
    Bố cục văn bản thường là kiểu chỉ cần điều chỉnh một phần thì chỗ khác cũng bị lệch theo, nên phải chạy lại layout pass và cần cấu trúc lặp đến điểm cố định
    Typst có khái niệm context cho việc này https://typst.app/docs/reference/context/, còn ở Quarkdown thì tôi chưa thấy thứ gì tương tự. Có thể là tôi đã bỏ sót
    Tôi đã chuyển trong công việc viết sách từ tổ hợp pandoc/md/LaTeX sang Typst, và khá hài lòng
    Cảm giác như đang lập trình bằng một ngôn ngữ hiện đại, và tốc độ cũng nhanh hơn pandoc+LaTeX rất nhiều
    https://functionalprogrammingstrategies.com/

  • Nhìn từ phía AsciiDoc, thiết kế cú pháp của Quarkdown có vẻ gọn gàng, đặc biệt là hàm do người dùng định nghĩa
    Tuy vậy, điều khó hơn trong nhóm này theo tôi không phải bản thân ngôn ngữ nguồn mà là pipeline đầu ra
    Mở rộng Markdown với cross-reference, admonition, nội dung có điều kiện, tái sử dụng dựa trên hàm thì về mặt thiết kế hoàn toàn xử lý được
    Bức tường thật sự nằm sau đó, ví dụ như tagged PDF đáp ứng PDF/UA, deterministic build không bị dao động giữa các môi trường, hreflang và cross-document linking cho website tài liệu đa ngôn ngữ, hay incremental rebuild vẫn chịu nổi với sách 500 trang
    Đặc biệt ở EU, sau khi European Accessibility Act có hiệu lực vào ngày 28/6/2025, tầm quan trọng của PDF/UA còn lớn hơn nữa
    Tôi tò mò không biết bạn định đi theo hướng nào với bốn doctype, nhất là phía paged

  • Trong bảng so sánh nên có cả MyST
    https://mystmd.org/
    Trông có vẻ đây có thể trở thành chuẩn Markdown mới trong tương lai

    • Hoặc có thể thêm cả Typst
      Dù không phải mở rộng Markdown, nhưng mục tiêu và use case khá giống nhau
    • Tổ hợp MyST + Sphinx rất tốt
      Chỉ là hơi tiếc vì hỗ trợ LSP mạnh còn thiếu, ít nhất là tôi đã không thể chạy nó tử tế trong helix
      Blog của tôi cũng được làm bằng pydata-sphinx-theme và myst
    • Tôi không rành lắm về bên đó
      Nếu muốn thì bạn có thể tự cập nhật bảng bằng PR
  • Trong app của tôi, tôi chọn một cách tiếp cận hơi khác
    Tôi tập trung vào độ dễ đọc và việc xử lý các sơ đồ Mermaid lớn cho dễ hơn, gần đây còn thêm cả chế độ toàn màn hình để điều hướng như bản đồ
    https://mdview.io/s/97af684b

  • Khi dùng SSG, tôi thích giữ phần input là Markdown sạch nhất có thể, còn chi tiết định dạng thì dồn sang CSS
    Ví dụ không nhất thiết phải dùng thứ như .abstract, chỉ cần CSS xử lý đoạn đầu tiên như abstract là được
    Ngược lại, dự án này có vẻ đi theo hướng tạo ra các tài liệu tự thân đầy đủ phong phú hơn
    Không có CSS nhưng lại có nhiều tùy chọn styling được định nghĩa sẵn, nên cứ khiến tôi liên tưởng đến HTML thời kỳ đầu
    HTML 1 không có màu sắc và gần như không có định dạng nên khá giống Markdown, còn đến khoảng HTML 3 thì bắt đầu nhét thêm đủ thứ, nên trông khá giống dòng tiến hóa đó