Groff è distribuito insieme ad almeno tre preprocessori,
tbl, eqn e
pic (che su alcuni sistemi sono chiamati
gtbl, geqn e
gpic). Essi servono a tradurre
le macro del preprocessore e i loro dati in normale input per troff.
Tbl è un preprocessore di tabelle,
eqn di equazioni/formule matematiche e
pic di immagini. Si faccia riferimento
alle pagine man relative per altre informazioni sulle funzionalità da
esse fornite. Per farla breve: non scrivete pagine man
che richiedano uno qualsiasi di questi preprocessori.
Eqn
produce solitamente un output che risulta tremendo per i dispositivi di videoscrittura e similari; sfortunatamente
questo è il 99% di tutti i dispositivi su cui vengono visualizzate le pagine di manuale (be', almeno
questo è quello che capita a me). Per esempio, XAllocColor.3x utilizza alcune formule
con l'esponenziale. A causa della natura dei dispositivi di videoscrittura,
l'esponente si troverà sulla stessa riga della base. N elevato a
due diventa `N2'. Tbl andrebbe evitato
perché non funziona con xman, in tutte le versioni da me incontrate. Xman 3.1.6 usa
il seguente comando per formattare le pagine man (nell'esempio si utilizza la pagina man signal(7)):
gtbl /usr/man/man7/signal.7 | geqn | gtbl | groff
-Tascii -man /tmp/xmana01760 2> /dev/null
e tale comando fallisce su sorgenti che usano gtbl,
perché l'output di gtbl viene ridato in pasto a
gtbl stesso. L'effetto finale è una pagina man priva di tabelle. Non so se si tratta di un bug o di una funzionalità, ma le possibilità sono due: o gtbl fa semplicemente fiasco nel processare il suo stesso output, oppure xman dovrebbe
fare più attenzione a non utilizzare due volte gtbl.
Inoltre, alcuni sistemi usano grog per determinare
l'opzione da passare a groff. Sfortunatamente, a volte grog sbaglia
e suggerisce di eseguire groff -t anche quando
tbl non andrebbe usata. Per gestire le tabelle
ci rimangono due trucchi:
Formattare a mano la tabella e posizionarla tra le righe .nf e
.fi, evitando di inserire altra formattazione. Con questo metodo
non avremo a disposizione grassetti o corsivi, ma
potremo inserire facilmente tutte le tabelle che vorremo.
Usare una macro qualsiasi di tbl avendo cura di
distribuire l'output di tbl invece dell'input. Tuttavia,
rimane ancora sospesa la questione di grog: per questa utility,
ogni file contenente una riga che inizia per .TS,
richiede l'uso di tbl. L'output di Tbl, per
qualche ragione a me sconosciuta, contiene ancora .TS
e .TE; potete semplicemente eliminarli
e continuare ad avere un buon risultato. YMMV, per cui verificatelo
sulla vostra pagina man particolare.
Devo ancora vedere una pagina man che richieda la preprocessazione pic, ma non credo mi piacerebbe; come potete aver letto più sopra,
xman non l'userebbe e
groff farà certamente pasticci quando l'avrà in input.