控制台未根据 man 手册进行渲染

控制台未根据 man 手册进行渲染

那么为什么我在 Ubuntu 上的控制台没有按照手册进行渲染呢man?如果我在控制台中输入,man man我会得到一份man.例如,它指出italic text replace with appropriate argument.但我能看到的是一个字符串斜体文本这是强调的。为什么这个例子不是斜体,为什么是下划线?是这样还是因为我的控制台以与其他控制台不同的方式呈现文本,所以有人可能会看到斜体文本?

答案1

不是man谁不打印斜体,而是格式化程序roff应该受到指责。由于历史原因。

文本模式是在古代开发的,早在图形可用之前,为了兼容性,这些文本模式被现代显卡继承...并且这些模式(仍然由实际控制台使用)没有斜体完全没有能力。

因此,当文本格式化程序打印输出到文本控制台时, ///roff会替换斜体下划线。如果您指定 html 作为目标格式,则文档中的斜体文本将为斜体。grofftroffnroff

同时,几乎所有使用 GUI 的现代终端(xtermgnome-terminal等)都能够绘制斜体字体。只需执行:

echo -e "\e[3mabcd\e[23m"

您应该看到斜体文本。

terminfo 有正确的斜体代码:

infocmp $TERM | grep -e sitm -e ritm

您很可能会看到sitm=\E[3mritm=\E[23m

也许,在遥远的未来,当文本视频模式变得过时并从视频卡中消失时 - 在那之后的一两年内,我们将看到groff......也许......的变化

答案2

一如既往解释了由于历史原因,默认情况下你不会得到斜体。但是,如果您使用的是理解斜体的终端(模拟器),您可以定义一个iman使用如下管道的函数:

iman() {
    zcat -f $(command man -w "$1") |
        tbl |
        groff -man -Tutf8 -P-i |
        "${PAGER:-less}"
}

然后将其调用为

iman ls

在我的*xterm模拟器上,我在以前显示下划线的地方变成斜体。

相关内容