Man

如何使用.RB.IR防止選項和參數之間的換行?

  • March 27, 2022

在編寫命令的手冊頁時,SYNOPSIS 包含:

.RB [ \-v
.IR version ]

不幸的是,在格式化 SYNOPSIS 時,“

$$ -v" and “version $$”。 我怎樣才能避免這種情況?

添加明顯

根據多次要求,這裡是一個較長的範例輸入,因為缺乏想像力,以及顯示問題的螢幕截圖: 格式化樣本的螢幕截圖(突出顯示的問題區域)

這是來源:

.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...

Thomas Dickey 有一個正確(且可移植)的解決方案,但像您一樣,由於字型選擇轉義序列,我發現它有點不受歡迎。我更喜歡man (7) 的字型樣式宏。

此外,\ (反斜杠空格)轉義序列可能很醜陋,因為它的牢不可破的空間是固定寬度的;在經過調整的線路上,這可能是顯而易見的和不和諧的。

因此,我建議使用輸出行繼續轉義序列\c來允許輸入行結束而不會導致插入可破壞的空間,並使用\~轉義序列用於不可破壞但可調整的空間。

您在範例中關閉了調整,但正如我將展示的那樣,這不是必需的。通過使用\~,可以在大綱的各行之間均勻地進行調整,而不會造成問題。此轉義序列可移植到除 plan9port 之外的所有目前維護的troff**項目——groff從2000 年 12 月開始使用,Heirloom Doctools 從 2015 年 9 月開始使用,neatroff從 2016 年 9 月開始使用,以及mandoc(它不是troff,但會解析手冊頁)自 2019 年 3 月起。1

在您的範例中,您使用了groff寄存器.hygroff的擴展插值語法來實現它。如果您正在使用groff,您可能需要考慮它的SY/對man (7) 宏包的YS擴展來設置您的命令概要。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

引用自:https://unix.stackexchange.com/questions/694622