那么为什么我在 Ubuntu 上的控制台没有按照手册进行渲染呢man
?如果我在控制台中输入,man man
我会得到一份man
.例如,它指出italic text replace with appropriate argument.
但我能看到的是一个字符串斜体文本这是强调的。为什么这个例子不是斜体,为什么是下划线?是这样还是因为我的控制台以与其他控制台不同的方式呈现文本,所以有人可能会看到斜体文本?
答案1
不是man
谁不打印斜体,而是格式化程序roff
应该受到指责。由于历史原因。
文本模式是在古代开发的,早在图形可用之前,为了兼容性,这些文本模式被现代显卡继承...并且这些模式(仍然由实际控制台使用)没有斜体完全没有能力。
因此,当文本格式化程序打印输出到文本控制台时, ///roff
会替换斜体下划线。如果您指定 html 作为目标格式,则文档中的斜体文本将为斜体。groff
troff
nroff
同时,几乎所有使用 GUI 的现代终端(xterm
、gnome-terminal
等)都能够绘制斜体字体。只需执行:
echo -e "\e[3mabcd\e[23m"
您应该看到斜体文本。
terminfo 有正确的斜体代码:
infocmp $TERM | grep -e sitm -e ritm
您很可能会看到sitm=\E[3m
和ritm=\E[23m
。
也许,在遥远的未来,当文本视频模式变得过时并从视频卡中消失时 - 在那之后的一两年内,我们将看到groff
......也许......的变化
答案2
一如既往解释了由于历史原因,默认情况下你不会得到斜体。但是,如果您使用的是理解斜体的终端(模拟器),您可以定义一个iman
使用如下管道的函数:
iman() {
zcat -f $(command man -w "$1") |
tbl |
groff -man -Tutf8 -P-i |
"${PAGER:-less}"
}
然后将其调用为
iman ls
在我的*xterm
模拟器上,我在以前显示下划线的地方变成斜体。