Pertama, harus dicatat bahwa ada lebih dari satu program yang disebut man2html.
Salah satu utilitas yang disebut man2htmladalah program C yang aslinya ditulis pada akhir 1990-an oleh Richard Verhoeven di Eindhoven University of Technology pada akhir 1990-an. Program ini memiliki internal yang cukup unik. Namun, ini memiliki keuntungan bahwa ia bekerja dengan sumber halaman manual, daripada troffatau nroffoutput. Program ini ditambahkan ke man suite Frederico Lucifredi.
Program ini memahami semantik mandan mandocmakro, dan menampilkan struktur HTML yang masuk akal. Misalnya ketika Anda menggunakan paragraf indentasi, seperti ini:
Kata .IP
Definisi dari
kata.
.RS
program akan mengeluarkan daftar definisi HTML.
Saya memelihara satu halaman manual yang sangat besar (sebagian besar megabyte sumber, dan hampir 400 halaman, ketika dikonversi ke ukuran huruf PDF oleh groff):
$ ls -l txr.1
-rw-rw-r-- 1 kaz kaz 980549 3 Jan 11:38 txr.1
Ketika saya perlu mengonversikan ini ke HTML, sekitar lima tahun yang lalu, satu-satunya hal yang saya temukan yang melakukan pekerjaan yang masuk akal adalah man2htmlprogram C, ditambah post-processing outputnya menjadi "season to taste".
Akhirnya, saya menginginkan dokumen HTML yang jauh lebih berkualitas, jadi saya mulai menulis troffmakro. Keterbatasan program C menjadi sangat jelas, jadi saya memotongnya. Di situs git saya, Anda dapat menemukan repo git dengan 30 tambalan ke man2html . Tambalan ini memperbaiki sejumlah bug, dan meningkatkan program dengan kemampuan yang jauh lebih baik untuk menafsirkan makro truf, kondisional, loop, dan konstruksi lainnya. Saya juga menambahkan M2register dengan mana Anda dapat menulis kode yang mendeteksi bahwa itu berjalan di bawah man2htmldan kondisional dapat melakukan beberapa hal secara berbeda (gulir ke bawah untuk contoh). Juga, saya menambahkan .M2SSperintah yang memungkinkan Anda memancarkan bagian header HTML kustom.
Halaman besar saya diinangi di sini . Ini diproduksi dengan man2html, setelah diproses oleh genman.txrprogram saya , yang mengatur ulang bagian, dan menambahkan hyper-link di seluruh dokumen. Itu juga menulis ulang tautan internal dalam daftar isi menjadi URL yang stabil (berdasarkan hashing daripada enumerasi acak) dan membuat daftar isi dapat dilipat melalui beberapa Javascript.
Perintah persis yang digunakan oleh saya Makefile:
man2html txr.1 | ./txr genman.txr -> txr-manpage.html
tbl txr.1 | pdfroff -man --no-toc -> txr-manpage.pdf
Untuk contoh tentang bagaimana output berbeda secara kondisional antara HTML dan nroffkita dapat melihat bagian dari manoutput:
9.19.4 Macro defstruct
Sintaksis:
(defstruct {<name> | (<name> <arg> *)} <super>
<slot-specifier> *)
Makro defstruct mendefinisikan jenis dan register struktur baru
di bawah <name>, yang harus menjadi simbol yang bisa diikat, menurut
fungsi bindable. Demikian juga, nama setiap <slot> harus
juga menjadi simbol yang bisa diikat.
Di atas, perhatikan bagaimana parameter dilambangkan <angle> <brackets>. Dalam versi HTML, mereka muncul dalam huruf miring .
Bagian sintaks muncul di kode sumber seperti ini:
.coNP Macro @ defstruct
.synb
.mets (defstruct >> {name | >> (name << arg *)} <super
.mets \ \ << slot-specifier *)
.sejak itu
yang semuanya makro kustom didefinisikan dalam dokumen yang sama. Di bawah .mets, < bberarti badalah variabel meta-sintaksis. >> a bberarti aadalah sintaksis konkret, di sebelahnya adalah meta-sintaksis btanpa ruang intervensi, dan <> a b cberarti badalah meta-sintaksis yang berderak antara adan cliteral.
Versi perbaikan saya man2htmlmemahami makro yang cukup rumit yang mengimplementasikan konvensi markup ini.
Juga, perhatikan bagaimana manual memiliki nomor bagian: itu semua dilakukan oleh kode troff, yang man2htmlmengerti.
troff? Ini gratis.