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 troff
o nroff
uscita. Questo programma è stato aggiunto alla suite uomo di Frederico Lucifredi.
Il programma comprende la semantica del man
e mandoc
macro, 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 man2html
programma 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 troff
macro. 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 M2
registro per mezzo del quale è possibile scrivere codice che rileva che è in esecuzione man2html
e che può fare condizionalmente alcune cose in modo diverso (scorrere verso il basso per un esempio). Inoltre, ho aggiunto un .M2SS
comando 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.txr
programma, 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 nroff
possiamo guardare una sezione man
dell'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
, < b
significa b
è una variabile meta-sintattica. >> a b
significa a
è una sintassi concreta, accanto alla quale si trova la meta-sintattica b
senza alcuno spazio intermedio , e <> a b c
indica b
una meta-sintattica stretta tra a
e c
letterali.
La mia versione migliorata di man2html
comprende 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 man2html
capisce.
troff
? È gratis.