Groff wordt op z'n minst met drie preprocessors geleverd, tbl, eqn, en pic (op een aantal systemen worden ze gtbl, geqn en gpic genoemd.) Hun doel is preprocessor macro's en hun data om te zetten in reguliere troff invoer. Tbl is een preprocessor voor tabellen, eqn is een preprocessor voor vergelijkingen/berekeningen en pic is een preprocessor voor afbeeldingen. Raadpleeg alsjeblieft de manpages voor meer informatie over welke functionaliteit ze leveren. In een notedop: schrijf geen manpages waarvoor een preprocessor nodig is. Eqn zal gewoonlijk afschuwelijke uitvoer produceren voor schrijfmachine-achtige devices, helaas het type device waarop 99% van alle manpages worden bekeken (tenminste dat doe ik). Bijvoorbeeld XAllocColor.3x maakt gebruik van een paar formules met machtsverheffen. Vanwege de aard van schrijfmachine-achtige devices zal de exponent op dezelfde regel verschijnen als de basis. N tot de macht van twee verschijnt als `N2'. Tbl kan maar beter worden vermeden omdat alle xman programma's die ik heb gezien er op mislukken. Xman 3.1.6 maakt gebruik van de volgende opdracht om manpages te formatteren, b.v. signal(7):
gtbl /usr/man/man7/signal.7 | geqn | gtbl | groff -Tascii -man /tmp/xmana01760 2> /dev/null
wat bronnen verknalt waarin gebruik wordt gemaakt van gtbl, omdat de uitvoer van gtbl weer als invoer wordt gegeven aan gtbl. Het effect is een manpage zonder je tabel. Ik weet niet of het een programmeerfout of een feature is dat gtbl zich verslikt in zijn eigen uitvoer of dat xman een beetje slimmer zou kunnen zijn door gtbl niet tweemaal te gebruiken. Bovendien maakt een aantal systemen gebruik van grog om vast te stellen welke opties aan groff door te geven. Helaas gist grog soms verkeerd en beveelt groff -t aan wanneer in feite tbl moet worden gebruikt. We blijven in feite met twee oplossingen achter voor tabellen:
Maak de tabel zelf handmatig op en plaats het tussen .nf en .fi regels zodat het ongeformatteerd blijft. Je hebt op deze wijze geen vet en schuindruk, maar je tabel wordt altijd maar weer geslikt.
Gebruik de tbl macro's die je wilt, maar distribueer de tbl uitvoer in plaats van de invoer. Je hebt echter te maken met de eigenaardigheid van grog die denkt dat een bestand met een regel beginnend met .TS tbl vereist. Tbl uitvoer bevat om voor mij onbekende reden nog steeds de .TS en .TE. Het schijnt dat je ze simpelweg kunt verwijderen en dat het resultaat er dan nog steeds ok uitziet. YMMV, dus test het alsjeblieft bij je manpage.
Ik moet nog een manpage te zien krijgen die de pic preprocessing nodig heeft. Maar ik zou het niet prettig vinden. Zoals je hierboven kunt zien, zal xman het niet gebruiken en groff zal beslist die fantastische gekkigheid op de invoer toepassen.