"but I lose the formatting information, which I'd like to preserve."
Não é que ele pense que você não está em um tty, é que ele pensa que você está em um realmente velho tty que faz truques de overstrike através de grotty , o processador de back-end do groff. Na página do manual:
Use the -c switch to revert to the old behaviour, printing a bold character c with the sequence 'c BACKSPACE c' and an italic character c by the sequence '_ BACKSPACE c'. At the same time, color output is disabled. The same effect can be achieved by setting either the GROFF_NO_SGR environment variable or using the 'sgr' X command (see below).
O problema é que você não quer o -c
ou o GROFF_NO_SGR
definido, mas, por algum motivo, ele acha que um ou ambos são.
Verifique seu ambiente para GROFF*
e a variável TERM
para valores sãos.