On Oct 17, 2025, at 2:14 PM, Denis Ovsienko <[email protected]> wrote:

> This is a side effect of stripping all style formatting from the source
> man page, which in both the man page viewer and the HTML rendering [1]
> uses italics for the placeholders.

Or, for the man command on at least some UN*Xes, uses underlining for the 
placeholders, mapping italics to underlining.

At least with 1) mandoc's version of the man command and 2) the Terminal 
terminal emulator on my Mac, *if* the man command is writing to the terminal, 
it uses escape sequences to italicize by using underlining. I think some 
versions of nroff could do the same.

If I send the output of man to a file, it uses underscore, backspace, character 
to italicize the character. The Terminal app doesn't turn those into italics, 
but the more command does.

So there's no guaranteed mechanism to man italics visible in plain text.

Part of the problem here is that the -man macro package doesn't have sufficient 
semantic markup - there's no way to mark something as an argument to a command 
or command-line flag (for programs) or to a function (for APIs). I think 
Berkeley's -mdoc package does a better job; unfortunately, it's not as 
universally available as -man, so using it isn't an option.

The original V7 man page for the ar command uses .I to italicize arguments (and 
.B for literal text, such as command-line flag names). I don't know to what 
extent the folks at Bell Labs used printing terminals, where 
underscoring-for-italicizing (and multiple-overstriking-for-boldfacing) would 
work.

The POSIX/SUS "Utility Argument Syntax" section cited in an earlier message is 
oriented towards print and rich-text display forms, in which italic text and 
fixed-width text are distinguishable from "normal" text. They do mention the 
angle bracket convention for command-argument variables, which is a convention 
that probably grew up as an alternative to italicizing for use in contexts 
where you didn't have italicizing, or even underscoring-for-italicizing, 
available.

> However, running "rpcapd -h" prints a usage message that follows a
> different convention for placeholders:

The angle-bracket convention is an appropriate convention when it's 
overwhelmingly likely that you're printing to a terminal, but there's no 
guaranteed way to get italics or boldface.

> This formatting convention works well for a portable (i.e. ASCII) usage
> message, it is also rather common and can be seen in usage messages of
> GCC, Clang, CMake and many other programs.  That said, for the man
> pages and the online HTML documentation Clang and CMake use angle
> brackets, whilst GCC uses italics.

Perhaps Clang and CMake are out of step with the general man-page convention. 
I've generally just seen italicization.

So, a convention survey on various UN*Xes I have available on VMs:

Ubuntu 24.04:

        GNU ar - in the man page, italics for placeholders
                 in the help message, nothing for command argument 
placeholders, angle brackets for placeholders for short options, capital 
letters for placeholders for long options

        GNU ls - in the man page, italicized capital letters for placeholders
                 in the help message, capital letters for placeholders, 
italicized if they're for long option and are optional

        OpenSSH ftp - in the man page, italics for placeholders
                      in the help message, nothing special for placeholders

So, not surprisingly, no consistency, given that commands come from various 
projects.

I suspect the same will be true of the BSDs, including CupertinoBSD; all of 
them have made some attempt to replace GPLed commands with more permissively 
licensed equivalents.

Solaris 11:

        ar - in the man page, italics? (inverse text) for placeholders
             in the help message, nothing special for placeholders

        ls - in the man page, italics? (inverse text) for placeholders
             in the help message, nothing special for placeholders

and, for a commercial UNIZ with no x86 version (so not available in any of my 
VMs):

> For reference, AIX 7.1 sed uses yet another convention for both the man
> page and the usage message:
> 
> Usage:  sed [-n] [-u] Script [File ...]
>        sed [-n] [-u] [-e Script] ... [-f Script_file] ... [File ...]

AIX... is, once again, *different* here.

> This way, one problem is that libpcap, tcpdump and tcpslice do not
> format the usage messages consistently and unambiguously, the use of
> angled brackets or uppercase placeholders would solve that.

I'd vote for angle brackets; I've seen that more than uppercase.

> Another problem is that the placeholders do not survive stripping the style 
> from
> the man pages.

I'd vote for italics, as that seems to be what most man pages do; losing that 
when stripping style will affect plenty of other projects' man pages as well.
_______________________________________________
tcpdump-workers mailing list -- [email protected]
To unsubscribe send an email to [email protected]
%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s

Reply via email to