Pertama, harus dicatat bahwa ada lebih dari satu program yang disebut man2html
.
Salah satu utilitas yang disebut man2html
adalah 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 troff
atau nroff
output. Program ini ditambahkan ke man suite Frederico Lucifredi.
Program ini memahami semantik man
dan mandoc
makro, 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 man2html
program C, ditambah post-processing outputnya menjadi "season to taste".
Akhirnya, saya menginginkan dokumen HTML yang jauh lebih berkualitas, jadi saya mulai menulis troff
makro. 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 M2
register dengan mana Anda dapat menulis kode yang mendeteksi bahwa itu berjalan di bawah man2html
dan kondisional dapat melakukan beberapa hal secara berbeda (gulir ke bawah untuk contoh). Juga, saya menambahkan .M2SS
perintah yang memungkinkan Anda memancarkan bagian header HTML kustom.
Halaman besar saya diinangi di sini . Ini diproduksi dengan man2html
, setelah diproses oleh genman.txr
program 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 nroff
kita dapat melihat bagian dari man
output:
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
, < b
berarti b
adalah variabel meta-sintaksis. >> a b
berarti a
adalah sintaksis konkret, di sebelahnya adalah meta-sintaksis b
tanpa ruang intervensi, dan <> a b c
berarti b
adalah meta-sintaksis yang berderak antara a
dan c
literal.
Versi perbaikan saya man2html
memahami makro yang cukup rumit yang mengimplementasikan konvensi markup ini.
Juga, perhatikan bagaimana manual memiliki nomor bagian: itu semua dilakukan oleh kode troff, yang man2html
mengerti.
troff
? Ini gratis.