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.