In primo luogo, va notato che esiste più di un programma chiamato man2html.
Un'utilità chiamata man2htmlè un programma C originariamente scritto alla fine degli anni '90 da Richard Verhoeven alla Eindhoven University of Technology alla fine degli anni '90. Il programma ha interni sostanzialmente eccentrici. Tuttavia, si ha il vantaggio che funziona con il sorgente della pagina man prime, piuttosto che troffo nroffuscita. Questo programma è stato aggiunto alla suite uomo di Frederico Lucifredi.
Il programma comprende la semantica del mane mandocmacro, ed emette una struttura HTML ragionevole. Ad esempio, quando usi paragrafi rientrati, in questo modo:
Parola .IP
Definizione di
parola.
.RS
il programma pubblicherà un elenco di definizioni HTML.
Mantengo una pagina man molto grande (la maggior parte di un megabyte di sorgente e lunga quasi 400 pagine, quando convertito in formato PDF da:) groff:
$ ls -l txr.1
-rw-rw-r-- 1 kaz kaz 980549 3 gennaio 11:38 txr.1
Quando avevo bisogno di convertirlo in HTML, circa cinque anni fa, l'unica cosa che ho trovato che ha fatto un lavoro ragionevole era il man2htmlprogramma C, oltre a post-elaborazione del suo output in "stagione a piacere".
Alla fine, volevo un documento HTML di qualità molto migliore, quindi ho iniziato a scrivere troffmacro. I limiti del programma C sono diventati dolorosamente evidenti, quindi l'ho biforcuta. Sul mio sito git, puoi trovare un repository git con 30 patch per man2html . Queste patch risolvono una serie di bug e migliorano il programma con una capacità molto migliorata di interpretare macro di troff, condizionali, loop e altri costrutti. Ho anche aggiunto un M2registro per mezzo del quale è possibile scrivere codice che rileva che è in esecuzione man2htmle che può fare condizionalmente alcune cose in modo diverso (scorrere verso il basso per un esempio). Inoltre, ho aggiunto un .M2SScomando che ti consente di emettere una sezione di intestazione HTML personalizzata.
La mia grande manpage è ospitata qui . Questo è prodotto con man2html, post-elaborato dal mio genman.txrprogramma, che riorganizza le sezioni e aggiunge hyperlink in tutto il documento. Riscrive anche i collegamenti interni nel sommario in modo che siano URL stabili (basati sull'hash anziché sull'enumerazione arbitraria) e rende il sommario pieghevole tramite alcuni Javascript.
I comandi esatti usati dal mio Makefile:
man2html txr.1 | ./txr genman.txr -> txr-manpage.html
tbl txr.1 | pdfroff -man --no-toc -> txr-manpage.pdf
Per un esempio di come l'output è condizionatamente diverso tra HTML e nroffpossiamo guardare una sezione mandell'output:
9.19.4 Macro defstruct
Sintassi:
(defstruct {<name> | (<name> <arg> *)} <super>
<Slot specificatore> *)
La macro defstruct definisce un nuovo tipo di struttura e registri
sotto <name>, che deve essere un simbolo associabile, secondo
la funzione associabile. Allo stesso modo, il nome di ogni <slot> deve
anche essere un simbolo vincolante.
Sopra, nota come sono indicati i parametri <angle> <brackets>. Nella versione HTML, appaiono in corsivo .
La sezione della sintassi appare nel codice sorgente in questo modo:
.coNP Macro @ defstruct
.synb
.mets (defstruct >> {name | >> (name << arg *)} <super
.mets \ \ << specificatore di slot *)
.syne
che è tutte le macro personalizzate definite nello stesso documento. Sotto .mets, < bsignifica bè una variabile meta-sintattica. >> a bsignifica aè una sintassi concreta, accanto alla quale si trova la meta-sintattica bsenza alcuno spazio intermedio , e <> a b cindica buna meta-sintattica stretta tra ae cletterali.
La mia versione migliorata di man2htmlcomprende la macro piuttosto complicata che implementa queste convenzioni di markup.
Inoltre, nota come il manuale abbia numerato automaticamente le sezioni: tutto ciò è fatto dal codice troff, che man2htmlcapisce.
troff? È gratis.