我使用man
和man2html
自动生成一些html文档,与man manpage | man2html
一致。这很有效,除非我在Travis CI上运行它,man
没有生成正确的转义序列以使标题和选项变为粗体。有没有办法强制man
生成这些代码?
我还看了一下使用groffer --mode=tty
代替man
,它可以在我的Mac上运行,但在Linux上运行(即Travis CI),而不是生成{{1}的二进制ANSI代码可以读取,它生成纯文本代码,如man2html
。
答案 0 :(得分:1)
有一些缺失的信息,但我会尝试填写:
man2html
的程序。我相信你指的是我也使用的Perl脚本。 (我已经在scripts page上找到了一些改进,但这并没有改变这个问题。)groff
的开发人员添加了(误)功能,将nroff
的默认行为更改为产品转义序列以获取颜色。对于彩色或粗体文字,这些类似于^[[34m
或^[[1m
。nroff
产生的不是转义序列`而是退格序列,使用重击来模拟下划线或粗体文本(_ ^ HXX ^例如HX。groff
功能(例如参见此mailing list comment)。groff
来覆盖GROFF_NO_SGR
功能,如grotty
的手册页中所述。除了转义序列与退格序列的问题之外,如果您使用的编码为UTF-8的语言环境,groff
可能会生成UTF-8。有几个地方值得注意:
man2html
脚本对UTF-8等多字节编码一无所知,会做出意想不到的事情。解决方法是,通过设置这些环境变量,将语言环境设置覆盖到POSIX可以解决问题:
LANG=C
LC_ALL=C
LC_CTYPE=C
LANGUAGE=C
答案 1 :(得分:0)
我在我的代码中使用这个环境变量来生成man的改写代码,用于非交互式shell:
export MAN_KEEP_FORMATTING=1
答案就在这里How to run man with formatting in not interactive shell?