Tệp Markdown: văn bản thuần theo quy ước, và có nhiều hơn một quy ước
Tệp .md là gì, vì sao không trình hiển thị nào giống nhau, và tiêu đề, danh sách được dựng lại từ PDF vốn không ghi chúng ra sao. Chuyển đổi trên trình duyệt.
Tóm tắt nhanh
- Loại
- Tài liệu
- Đuôi tệp
- .md, .markdown
- Kiểu MIME
- text/markdown
- Tên gọi khác
- MD
Tệp .md là một tệp văn bản. Không có định dạng chứa, không nén và không có gì nhị phân — mở bằng Notepad là bạn thấy chính xác những gì nó chứa. Định dạng là quy ước chứ không phải ngôn ngữ đánh dấu: ký tự # ở đầu dòng nghĩa là tiêu đề, dấu gạch nối nghĩa là một mục danh sách, và trình hiển thị hiểu quy ước đó sẽ biến chúng thành HTML. Ý tưởng chỉ có vậy, và đó là lý do định dạng này sống lâu hơn mọi trình soạn thảo văn bản định dạng cùng thời: tệp đọc được ngay cả trước khi có gì hiển thị nó, và vẫn đọc được khi công cụ bạn dùng để viết đã không còn.
Đọc thêm
Điều phức tạp là không có một Markdown duy nhất. Bản cài đặt gốc năm 2004 để ngỏ rất nhiều trường hợp, nên mỗi trình hiển thị tự giải quyết theo cách riêng; CommonMark ra đời để chốt lại những chỗ mơ hồ đó, và GitHub Flavored Markdown xây thêm bảng, danh sách việc cần làm và gạch ngang chữ lên trên nó. Tình trạng này được thừa nhận chính thức: khi text/markdown được đăng ký làm kiểu phương tiện trong RFC 7763 vào tháng 3 năm 2016, bản đăng ký có cả một tham số variant, chính vì nói một tệp là Markdown chưa cho biết đó là Markdown nào. Thứ trang này xuất ra là text/markdown với UTF-8, và chỉ dùng những cấu trúc mà mọi phương ngữ đều đồng ý — tiêu đề bằng dấu thăng, đoạn văn ngăn bằng dòng trống, gạch đầu dòng bằng dấu gạch nối và đường kẻ ngang.
Chuyển PDF sang Markdown nghĩa là chế tạo ra cấu trúc mà PDF chưa từng có. PDF ghi lại cỡ chữ chứ không ghi tiêu đề, nên các cỡ chữ trên trang được xếp hạng và sáu cỡ lớn nhất trở thành sáu cấp tiêu đề; một dòng chỉ cần lớn hơn chữ thân bài là thành tiêu đề, dù tác giả có coi nó là tiêu đề hay không. Danh sách còn khó hơn: PDF hoàn toàn không có cấu trúc danh sách, và dấu đầu dòng bạn thấy thực chất là một ký tự trong văn bản, nên cách duy nhất để danh sách sống sót là nhận ra ký tự đó và viết lại thành dấu gạch nối. Các mục đánh số thì không cần giúp như vậy — “1. ” và “1) ” vốn đã là Markdown, và vốn đã mang nghĩa danh sách.
Có hai chi tiết đáng biết vì chúng làm thay đổi chính văn bản. Dòng kết thúc bằng dấu gạch nối được coi là một từ bị ngắt qua chỗ xuống dòng và được nối lại không có dấu đó; còn các dòng liên tiếp bằng tiếng Trung hay tiếng Nhật được nối mà không có dấu cách ở giữa, vì những hệ chữ đó không đặt dấu cách. Các trang được ngăn bằng một đường kẻ ngang, nên tài liệu mười ba trang sẽ có mười hai đường như vậy. Nếu PDF là bản quét không có lớp chữ, cùng mô hình nhận dạng dùng cho PDF sang Word sẽ đọc ký tự từ ảnh các trang trước, ngay trên máy của bạn.
Chuyển định dạng khác sang Markdown
Câu hỏi thường gặp về Markdown
Tệp .md chỉ là tệp văn bản thôi sao?
Đúng vậy. Không có định dạng chứa, không nén, không có gì nhị phân. Trình soạn thảo văn bản nào cũng mở được, và các ký hiệu — #, -, ** — là những ký tự bình thường mà bạn đọc được ngay như vậy.
Tôi nhận được loại Markdown nào?
Chỉ những phần mà mọi phương ngữ đều đồng ý: tiêu đề bằng dấu thăng, đoạn văn ngăn bằng dòng trống, gạch đầu dòng bằng dấu gạch nối và đường kẻ ngang. Không có gì ở đây phụ thuộc vào phần mở rộng của GitHub hay CommonMark, nên dán vào đâu cũng hiển thị như nhau.
Vì sao trong tài liệu của tôi có các dòng gạch ngang?
Đó là chỗ ngắt trang. Mỗi dòng là một đường kẻ ngang đánh dấu nơi một trang PDF kết thúc và trang tiếp theo bắt đầu, nên tài liệu mười ba trang sẽ có mười hai dòng như vậy.
Một tiêu đề bị ra sai cấp. Vì sao?
Cấp được xếp theo cỡ chữ, vì PDF lưu cỡ chữ chứ không lưu tiêu đề. Khi tài liệu dùng cỡ chữ để nhấn mạnh chứ không phải để phân cấp — một câu trích nổi bật, một dòng đầu cỡ lớn — việc xếp hạng đi theo cỡ chữ và gán sai cấp.
Bảng có được giữ lại không?
Bảng vẽ bằng đường kẻ thì có — chúng ra thành bảng Markdown, với hàng đầu tiên làm hàng tiêu đề. Bảng trên trang quét ra thành các dòng thường, vì bản quét không có đường kẻ nào để đọc. Nếu bảng là lý do chính để bạn chuyển đổi, PDF sang Excel sẽ đưa từng bảng vào hàng và cột để bạn làm việc.
Có dùng được với PDF bản quét không?
Có. Khi không có lớp chữ, một mô hình nhận dạng AI chạy trong trình duyệt và đọc ký tự từ ảnh các trang. Khi đó tiêu đề được xếp hạng theo chiều cao dòng đo được thay vì cỡ chữ, và không có gì bị tải lên.