在编写命令的手册页时,概要包含:
.RB [ \-v
.IR version ]
不幸的是,在格式化概要时,“[-v”和“版本]”之间有一个换行符。
我怎样才能避免这种情况?
添加显而易见的内容
根据多次要求,由于缺乏想象力,这里有一个较长的示例输入,以及显示问题的屏幕截图:
这是来源:
.TH FOOBAR-DEMO 8 2022-03-16 "Charlie Brown" "System Administration"
.\"
.SH NAME
foobar-demo \- demonstration of manual formatting
.\"
.SH SYNOPSIS
.na
.nr hy-mode-save \n[.hy]
.hy 0
.B foobar-demo123
.RB [ \-a
.IR match_spec ]
.RB [ \-\-resource-agent
.IR match_spec ]
.RB [ \-v
.IR version ]
.RB [ \-\-version
.IR version ]
.hy \n[hy-mode-save]
.ad b
.\"
.SH DESCRIPTION
The purpose of this page is none...
答案1
Thomas Dickey 有一个正确的(且可移植的)解决方案,但和您一样,我发现由于字体选择转义序列,它有点不引人注目。我更喜欢男人(7) 的字体样式宏。
此外,\
(反斜杠-空格)转义序列可以还丑陋是因为它牢不可破的空间是固定宽度的;在正在调整的线路上,这种情况可能会很明显并且令人不舒服。
因此,我建议使用输出行继续转义序列\c
来允许输入行结束,而不会导致插入可破坏的空格,以及\~
使用转义序列来插入不可破坏但可调整的空间。
您已在示例中关闭了调整,但这并不是必需的,正如我将展示的那样。通过使用\~
,可以在概要的各行之间均匀地进行调整,而不会引起问题。此转义序列可移植到所有当前维护的特罗夫除了 Illumos 中的项目。 格罗夫(至少)从 1991 年开始就有,Heirloom Doctools 从 2005 年 9 月开始就有,曼多克(这不是一个特罗夫但确实解析手册页)自 2009 年 9 月以来,尼特罗夫自 2016 年 9 月起,以及来自用户空间的计划 9特罗夫截至 2022 年 8 月。
在您的示例中,您使用了格罗夫注册.hy
并格罗夫的扩展插值语法来实现它。如果您正在使用格罗夫,您可能需要考虑它的SY
/YS
扩展男人(7) 用于设置命令概要的宏包。2 (这些宏还可以为您保存和恢复连字符模式。)
.TH FOOBAR-DEMO 8 2022-03-16 "Charlie Brown" "System Administration"
.\"
.SH NAME
foobar-demo \- demonstration of manual formatting
.\"
.SH SYNOPSIS
.B foobar\-demo123 \" I escaped this hyphen as well.
.RB [ \-a\~\c
.IR match_spec ]
.RB [ \-\-resource-agent\~\c
.IR match_spec ]
.RB [ \-v\~\c
.IR version ]
.RB [ \-\-version\~\c
.IR version ]
.\"
.SH DESCRIPTION
答案2
宏会妨碍你。您可以使用转义空格(不会分割行)来解决该问题,如下所示:
.TH FOOBAR-DEMO 8 2022-03-16 "Charlie Brown" "System Administration"
.\"
.SH NAME
foobar-demo \- demonstration of manual formatting
.\"
.SH SYNOPSIS
.na
.nr hy-mode-save \n[.hy]
.hy 0
.B foobar-demo123
\fB[\-a\ \fImatch_spec\fR]
\fB[\-\-resource-agent\ \fImatch_spec\fR]
\fB[\-v\ \fIversion\fR]
\fB[\-\-version\ \fIversion\fR]
.hy \n[hy-mode-save]
.ad b
.\"
.SH DESCRIPTION
The purpose of this page is none...
答案3
最有可能的是,行中包含 CRLF,而不是 LF。