Đầu tiên, cần lưu ý rằng có nhiều hơn một chương trình được gọi man2html.
Một tiện ích được gọi man2htmllà bản gốc chương trình C được viết vào cuối những năm 1990 bởi Richard Verhoeven tại Đại học Công nghệ Eindhoven vào cuối những năm 1990. Chương trình này có nội bộ kỳ quặc. Tuy nhiên, nó có lợi thế là nó hoạt động với nguồn trang man thô, thay vì troffhoặc nroffđầu ra. Chương trình này đã được thêm vào bộ người đàn ông Frederico Lucifredi's.
Chương trình hiểu được ngữ nghĩa của manvà mandocmacro, và kết quả đầu ra một cấu trúc HTML hợp lý. Chẳng hạn, khi bạn sử dụng các đoạn được thụt lề, như thế này:
.IP từ
Định nghĩa của
từ.
.RS
chương trình sẽ đưa ra một danh sách định nghĩa HTML.
Tôi duy trì một trang người rất lớn (hầu hết là một megabyte nguồn và dài gần 400 trang, khi được chuyển đổi thành cỡ chữ PDF theo groff):
$ ls -l txr.1
-rw-rw-r-- 1 kaz kaz 980549 ngày 3 tháng 1 11:38 txr.1
Khi tôi cần chuyển đổi nó thành HTML, khoảng năm năm trước, điều duy nhất tôi thấy đã làm một công việc hợp lý là man2htmlchương trình C, cộng với xử lý hậu kỳ của đầu ra của nó thành "mùa để nếm thử".
Cuối cùng, tôi muốn có một tài liệu HTML chất lượng tốt hơn nhiều, vì vậy tôi bắt đầu viết troffmacro. Những hạn chế của chương trình C trở nên rõ ràng một cách đau đớn, vì vậy tôi đã rẽ nhánh nó. Trên trang git của tôi, bạn có thể tìm thấy một git repo với 30 bản vá cho man2html . Các bản vá này sửa một số lỗi và tăng cường chương trình với khả năng cải tiến nhiều để giải thích các macro troff, điều kiện, vòng lặp và các cấu trúc khác. Tôi cũng đã thêm một M2thanh ghi bằng phương tiện mà bạn có thể viết mã phát hiện ra nó đang chạy man2htmlvà có thể làm một số điều khác biệt (cuộn xuống để lấy ví dụ). Đồng thời, tôi đã thêm một .M2SSlệnh cho phép bạn phát ra phần tiêu đề HTML tùy chỉnh.
Trang chủ lớn của tôi được lưu trữ ở đây . Chương trình này được sản xuất với man2html, được xử lý hậu kỳ bởi genman.txrchương trình của tôi , sắp xếp lại các phần và thêm siêu liên kết trong toàn bộ tài liệu. Nó cũng viết lại các liên kết nội bộ trong mục lục thành các URL ổn định (dựa trên băm thay vì liệt kê tùy ý) và làm cho mục lục có thể thu gọn thông qua một số Javascript.
Các lệnh chính xác được sử dụng bởi my Makefile:
man2html txr.1 | ./txr genman.txr -> txr-manpage.html
tbl txr.1 | pdfroff -man --no-toc -> txr-manpage.pdf
Để biết ví dụ về cách đầu ra khác nhau có điều kiện giữa HTML và nroffchúng ta có thể xem xét một phần của manđầu ra:
9.19.4 Cấu trúc macro
Cú pháp:
(làm tắc nghẽn {<name> | (<name> <arg> *)} <super>
<trình xác định vị trí> *)
Macro cấu trúc xác định một kiểu cấu trúc mới và các thanh ghi
nó dưới <name>, phải là một biểu tượng ràng buộc, theo
các chức năng ràng buộc. Tương tự, tên của mọi <slot> phải
cũng là một biểu tượng ràng buộc.
Ở trên, lưu ý cách các tham số được ký hiệu trong <angle> <brackets>. Trong phiên bản HTML, chúng xuất hiện in nghiêng .
Phần cú pháp xuất hiện trong mã nguồn như thế này:
.coNP Macro @ khử
.synb
.mets (hủy cấu trúc >> {name | >> (tên << arg *)} <super
.mets \ \ << trình xác định vị trí *)
.
đó là tất cả các macro tùy chỉnh được xác định trong cùng một tài liệu. Theo .mets, < bcó nghĩa blà một biến siêu cú pháp. >> a bcó nghĩa alà một cú pháp cụ thể, bên cạnh đó là cú pháp siêu cú pháp bmà không có bất kỳ khoảng trắng can thiệp nào, và <> a b cphương tiện blà một cú pháp cú pháp giòn giã giữa avà cchữ.
Phiên bản cải tiến của tôi man2htmlhiểu được macro khá phức tạp thực hiện các quy ước đánh dấu này.
Ngoài ra, lưu ý cách hướng dẫn sử dụng các phần được đánh số tự động: tất cả đều được thực hiện bằng mã troff, điều này man2htmlhiểu.
troff? Nó là miễn phí.