Saya ingin mengonversi beberapa halaman manual Linux ke HTML tanpa menggunakan groff. Prasangka saya terhadap groff adalah karena beberapa masalah rendering PNG itu memberi saya yang tampaknya dilokalisasi ke Sabayon (karena masalah ini tampaknya tidak terjadi pada VM VirtualBox saya untuk distro lain). Saya menyadari ini adalah bug, tetapi solusi tampaknya tidak dalam waktu dekat jadi saya ingin bertanya apakah ada cara lain untuk mengubah halaman manual Linux ke HTML. Menggunakan halaman HTML di http://linux.die.net/man bukan solusi yang dapat diterima karena beberapa halaman manual yang saya minati tidak ada di sana (misalnya, emerge(1)
tidak ada di sana).
man
conversion
html
BH2017
sumber
sumber
troff
? Ini gratis.warning: can't find font `b'
pesan - yang mungkin menjadi penyebabnya karena file png yang dibuat cenderung hanya berupa teks dalam format grafis. mungkin paket font yang hilang yang perlu diinstal.Jawaban:
Ada banyak alternatif seperti roffit , troff , man2html . Ada juga peramban manpage online berbasis perl, seperti manServer .
Favorit saya adalah
pandoc
, meskipun sayangnya tampaknya tidak mendukung input ROFF secara default (meskipun Anda mungkin dapat menggunakannya jika Anda perlu untuk menghubungkan beberapa filter transformasi bersama.contoh man2html:
contoh roffit:
Alat lainnya:
troff
- Akan mencoba http://heirloom.sourceforge.net/doctools.html . Saya menduga schily memiliki OpenSolaris dan teman-teman dalam pikiran :-).sumber
man2html
contoh ini? Dan mengapa mengarahkan ke file di/var/www/html
? Tidak perlu server web, cukup arahkan kembali ke file lokal dan Anda dapat mengarahkan browser Anda ke sana. Juga, apakah Anda memeriksaman2html
output Anda ? Saya mencobanya di Arch saya dan tidak menghasilkan output yang diformat..bz2
format alih-alih.gz
, jadi bisakah Anda menulis ulang jawaban Anda? Seperti memodifikasi baris zcat dengan yang akan berfungsi dengan halaman manual yang dikompresi bzip2.Bit pertama ini adalah rip tak tahu malu dari situs web resmi :
pacman
memberi tahu sayamdocml
ukuran paket yang saya instal secara lokal adalah 3.28mb, dan itu termasuk/usr/bin
binari yang terletak di bawah ini :Dengan itu saya bisa melakukan:
Anda dapat menerapkan stylesheet Anda sendiri sesuka Anda. Semua dokumentasinya online , juga. Dan semua itu, seperti yang saya pikirkan, dikompilasi
mandoc
juga.sumber
mandoc
.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, daripadatroff
ataunroff
output. Program ini ditambahkan ke man suite Frederico Lucifredi.Program ini memahami semantik
man
danmandoc
makro, dan menampilkan struktur HTML yang masuk akal. Misalnya ketika Anda menggunakan paragraf indentasi, seperti ini: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
):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 menambahkanM2
register dengan mana Anda dapat menulis kode yang mendeteksi bahwa itu berjalan di bawahman2html
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 olehgenman.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
:Untuk contoh tentang bagaimana output berbeda secara kondisional antara HTML dan
nroff
kita dapat melihat bagian dariman
output:Di atas, perhatikan bagaimana parameter dilambangkan
<angle>
<brackets>
. Dalam versi HTML, mereka muncul dalam huruf miring .Bagian sintaks muncul di kode sumber seperti ini:
yang semuanya makro kustom didefinisikan dalam dokumen yang sama. Di bawah
.mets
,< b
berartib
adalah variabel meta-sintaksis.>> a b
berartia
adalah sintaksis konkret, di sebelahnya adalah meta-sintaksisb
tanpa ruang intervensi, dan<> a b c
berartib
adalah meta-sintaksis yang berderak antaraa
danc
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.sumber
Sejak OpenSolaris dibuat tersedia sebagai OSS, ada yang gratis
troff
.Satu set sumber porting ada di sini:
http://heirloom.sourceforge.net/doctools.html
tetapi Heirloom adalah proyek mati sejak aprox. 2007. Anda mungkin ingin memeriksa
https://github.com/nt-roff/heirloom-doctools
di mana beberapa orang melanjutkan proyek pusaka mati.
Bersama dengan
man2html
, troff memungkinkan Anda untuk membuat halaman manual html yang bagus secara otomatis.Lihat misalnya halaman manual SchilliX:
http://schillix.sourceforge.net/man/
dengan Schily Bourne Shell:
http://schillix.sourceforge.net/man/man1/bosh.1.html
Saya senang dengan ini dan dengan opsi yang tepat, Anda bisa ditautkan halaman manual ke dokumentasi lain dari grup yang sama. Saya menggunakan mis perintah ini:
itu adalah bagian dari sistem file make di alat schily. Perhatikan file
../conf/pre.html
dan../conf/post.html
dari sistem makefiles schily yang diperlukan untuk judul dan lain-lain. Anda mungkin ingin mengubah ini empat kebutuhan Anda.Yang disempurnakan
man2thml
adalah bagian dari alat schily (lihat bagian bawahbosh
halaman manual).BTW: informasi lucu: seluruh
troff
kode sumber ditambah semua sumber untuk semua program pembantu sepertisoelim
,,tbl
... ditambahman
sumber program hanya setengah dari kode yang Anda butuhkan untukmandoc
program danmandoc
hanya memilikitbl
dukungan yang sangat terbatas yang membuat sebagian besar Solaris tidak bisa halaman.Jika Anda memerlukan dukungan untuk
mandoc
sumber troff yang diformat dari FreeBSD dan sejenisnya, saya membuat satu set makro mandoc yang cocok untuknyatroff
. Periksa sumber SchilliX di: https://sourceforge.net/p/schillix-on/schillix-on/ci/default/tree/usr/src/cmd/troff/troff.d/tmac.d/ Kode yang dimaksud ada dalam fileandoc
dandoc*
.Sumber
man
program di SchilliX-ON telah diubah untuk memanggilnroff -mandoc
alih-alihnroff -man
.sumber
heirloom-doctools
juga. Harus mengutak-atikmk.config
:-).Masalah OP dengan file PNG cocok dengan pengalaman saya menggunakan groff untuk halaman manual xterm dan dokumentasi urutan-kontrol. Masalahnya adalah bahwa groff berusaha membuat tabel sebagai gambar yang dipotong dari file PDF, dan itu telah bermasalah selama beberapa tahun. Walaupun saya telah menggunakan skrip Perl man2html sejak 1990-an untuk dokumentasi ncurses, untuk program lain saya merasa lebih mudah untuk menghasilkan file ad hoc html dan pdf menggunakan groff. File PDF berfungsi dengan baik; file html tidak.
Pada saat yang sama, skrip Perl memiliki masalah sendiri.
Karena tidak ada yang hilang (dan karena alternatif yang disarankan belum menjadi perbaikan, karena menambah ketergantungan atau memperkenalkan batasan lain), saya menyelesaikan masalah dengan melakukan perbaikan pada man2html (di atas semua yang telah saya buat selama beberapa tahun) dan menambahkan opsi skrip konfigurasi baru untuk setiap program untuk memungkinkan menggunakan groff sebagai manpage default ke html converter, tetapi menggunakan man2html ketika saya mengatur opsi. Setelah melakukan ini, saya menghapus semua file html yang dihasilkan groff tahun ini dari situs web saya . Ada halaman "man2html" di situs web yang mendokumentasikan ini; skrip yang sebenarnya tersedia di halaman skrip aneka saya .
Beberapa saran dan komentar tampaknya tidak memperhatikan bahwa ada (setidaknya) dua program bernama man2html:
Program C melakukan pemformatannya sendiri, tidak bergantung pada nroff / groff / apa pun. Ia dapat membaca halaman manual dari input standar, atau sebagai file aktual (antara lain - lihat halaman manualnya ). Diberikan halaman manual sintaksis nroff "foo.1", Anda dapat memformatnya menggunakan salah satu dari perintah ini:
Skrip Perl membaca halaman manual yang diformat , misalnya, dari
nroff
(yang untuk pertanyaan OP adalah pembungkus untukgroff
). Anda bisa menggunakannya seperti ini:Saya menyelidiki menggunakan program C sebagai alternatif untuk skrip Perl, tetapi membuangnya karena
Kebetulan, ia menangani beberapa pengalihan yang digunakan dalam file ini (yang merupakan masalah dengan warisan troff - alasan instruksi instalasi ncurses menyarankan menggunakan groff selama 20 tahun terakhir).
sumber
man2html
mengambil output nroff sebagai inputnya, Anda karenanya tidak dapat memberikan file sumber halaman manual sebagai input.man2html
kamu bicarakan.