在 0.9.21-0.8 版本之前,文本输出存在一个错误。对于 sgml2txt,需要使用 --pass="-P-cbou" 选项才能获得纯文本输出,否则,如果您使用 -f 选项,您将得到文本输出,该输出通过使用转义序列和重叠打印来强调单词和字母。一个通过重叠打印制作的项目符号的例子是 +^Ho,在打印机上会先打印 +,然后退格 (^H),然后在已有的 + 上打印 o。这在显示终端上似乎不起作用(它们不能重叠打印)。请注意,即使您拥有最新版本,如果您未能使用 -f 选项,您仍然会得到这种不需要的输出。
如果您有兴趣,--pass 将 -P-cbou 选项传递给 groff 程序(由 sgml2txt 使用),groff 的 -P 选项将 -cbou 选项传递给 grotty(groff 的后处理器),强制 grotty 生成纯文本输出。请参阅 grotty 手册页。简而言之:-c 避免转义序列但允许重叠打印,但当使用 -c 选项时,-bou 禁止重叠打印。结果是输出中没有重叠打印也没有转义序列。-b 禁止重叠打印以使字符看起来加粗;-u 阻止重叠打印用于下划线;-o 禁止其他类型的重叠打印,如上面的项目符号示例。消除重叠打印的另一种方法是将 -f 选项与 sgml2txt 一起使用,但您仍然必须将 -c 选项传递给 grotty 才能消除转义序列,除非您有较新版本。
真是太混乱了!默认设置可能应该是纯文本,这样就不需要传递所有这些选项了。我终于让他们修复了这个问题,所以在 2007 年中期之后,您只需使用 -f 选项而不是 --pass="-P-cbou" 就可以了。如果您在输出文件中得到这些转义序列和重叠打印,但使用 Linux "cat" 命令来显示文本,它看起来很棒。但是,在文本输出文件上使用分页器或编辑器通常会导致转义字符被吞噬,因此您会在文本中看到一堆不需要的字符,这些字符本应是转义序列的一部分。在某些情况下,分页器可以很好地显示某些重叠打印,但编辑器(如 vim)则不行。因此,消除所有重叠打印允许您使用任何编辑器或分页器来读取它。