From: "Alejandro Colomar (man-pages)" <alx.manpages@gmail.com>
To: "G. Branden Robinson" <g.branden.robinson@gmail.com>
Cc: "Michael Kerrisk (man-pages)" <mtk.manpages@gmail.com>,
linux-man@vger.kernel.org, colomar.6.4.3@gmail.com
Subject: Re: .RS
Date: Wed, 11 Nov 2020 16:34:15 +0100 [thread overview]
Message-ID: <c6919fec-4a95-888d-93fd-ecb254ec2377@gmail.com> (raw)
In-Reply-To: <20201111150950.u7lf3xeulydbd2vr@localhost.localdomain>
Thanks, Branden!
And [+4n] is because you can also indent negatively?
But I guess I can omit [+] safely always.
Thanks,
Alex
On 11/11/20 4:09 PM, G. Branden Robinson wrote:
> Hi Alex!
>
> And hi to Michael, too. I'm sorry I haven't responded to your pings
> about a good idiom for inset code examples. The main reason is that I
> don't yet have one that satisfies all of your criteria. The other is
> that groff is heaving its vast bulk toward a release, and I've been in a
> perfectionist frenzy trying to clear my plate of my personal release
> goals for it. This includes man pages totalling 323 pages (not counting
> groff_mdoc(7)[1]), which might not sound all that daunting to the author
> of the scale-tipping _LPMI_ codex. :D
>
> At 2020-11-11T15:22:27+0100, Alejandro Colomar (man-pages) wrote:
>> Hi,
>>
>> We already talked about something similar some time ago.
>>
>> I see [.RS 4] and [.RS +4n] used in the man pages.
>> And there are also [.in +4n] and I think I've also seen [.in 4].
>> Is there any difference between [+4n] and a simple [4]?
>
> Not usually. *roff parameters can be dimensionless (like hyphenation
> modes), but many of them, like page length, line length, page offset,
> indent(ation), and many others, have dimensions. groff, like AT&T troff
> before it, supports the expression of dimensions in a variety of units,
> including U.S. traditional, metric, and printer's units (points, picas).
> Ultimately, internally, all these different units are converted to
> "basic units" which are meaningless outside of the formatter (but you
> sometimes see them in diagnostic messages).
>
> So when you use a request or a built-in register that has a dimension
> associated with it, you need to either know what units are required to
> get predictable output, or _tell_ *roff what units you want to use.
> The way you do that is with a letter called a "scaling indicator".
>
> These are documented. See the section "NUMERICAL EXPRESSIONS"[2] in
> groff(7) for a complete list.
>
> Requests and (some) registers have a "default scaling indicator". These
> are document with the corresponding item.
>
> "n" refers to "ens", a typographer's unit that is, roughly half an "em",
> and an "em" is the width of a lowercase "m" in the current font. For
> character-cell terminals, 1m equals 1n equals 1 character cell, so it's
> pretty easy to get a handle on.
>
>> Which is the preferred one?
>
> That's a terrific question. I've wavered on this issue myself.
> Semantically, there is no difference between ".RS" (or ".in") "4" and
> "4n"--because the default scaling indicator for this macro (or request)
> is "n".
>
> At present I kind of lean toward "4n" because I think it disserves man
> page authors to get too far away from the knowledge that groff is a
> _typesetting_ system as troff and nroff (and roff, and Saltzer's RUNOFF)
> were before it.
>
> If man pages were only ever rendered to character-cell terminals[3], I'd
> probably just settle on ignoring scaling indicators. In fact, I'm not
> sure they existed in *roff languages before Ossanna wrote troff. As I
> understand it, on Teletypes and line printers, your horizontal dimension
> was character cells, your vertical dimension was lines, and you had
> special logic for reverse line feeds and half line feeds in either
> direction, and that was as granular as things got.
>
>> And BTW, does [.RS] do anything different than [.in]?
>
> At its core, no--but it saves a lot of state so that you can nest
> further .RS calls, and use .RE, and so that the sectioning macros (.SH
> and .SS) can undo their effect without causing havoc.
>
>> I guess the code implementing those macros is written somewhere.
>> Where can I have a look at that code to see it myself?
>
> Here's the bleeding edge version:
>
> https://git.savannah.gnu.org/cgit/groff.git/tree/tmac/an-old.tmac
>
> There is almost certainly a copy of this file, probably from groff
> 1.22.4 on your system. On my Debian box, it's at
> /usr/share/groff/1.22.4/tmac/an-old.tmac.
>
> Thomas Dickey once complained about the lack of comments in this
> file--he's right, the things that a casual user most needs commented,
> are not. I've tried to remedy that defect in groff_man(7), but a more
> Doxygenish approach to the package source itself would also be a good
> idea.
>
> Regards,
> Branden
>
> [1] groff_mdoc(7) will _ship_, but a person _really_ doesn't want to
> know why it's not in my page count. Ask me if you want a challenge
> involving possibly diversions and traps.
>
> [2] In groff 1.23.0, to no longer be in shouty capitals. :D
>
> [3] I sometimes get into a bit of conflict with some man page writers
> who care less than nothing for any output device that isn't a terminal.
> I want to accommodate such people as much as I can without compromising
> quality for those who want to want to see man pages properly typeset.
>
> The most recent episode of contretemps involves the sad history of
> ASCII, ISO 8859, Unicode, and how exactly ' and ` (and to a lesser
> extent, ^ and ~) should be rendered. Some painful choices were made in
> the 1970s, and some procrastination was coddled in the 2000s, that have
> people grumbling today. People threaten that the masses will just "go
> to Markdown" if ignorance is not coddled. For people who really care
> _only_ about terminal input, I'm not sure such an out-migration can be
> stopped, or should be. Proper typesetting carries a lot of complexity
> and it's hard to justify that complexity to people who don't want what
> it can accomplish.
>
> About the only challenge Markdown faces is filling, and I'm sure there
> are tools to handle that it in its much simpler problem domain. That,
> or people just resize or horizontally scroll their terminals. The
> mindset is a bit foreign to me.
>
next prev parent reply other threads:[~2020-11-11 15:34 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-11-11 14:22 .RS Alejandro Colomar (man-pages)
2020-11-11 15:09 ` .RS G. Branden Robinson
2020-11-11 15:34 ` Alejandro Colomar (man-pages) [this message]
2020-11-12 7:09 ` .RS G. Branden Robinson
2020-11-12 9:49 ` .RS Alejandro Colomar (man-pages)
2020-11-12 19:57 ` .RS Alejandro Colomar (man-pages)
2020-11-12 20:57 ` .RS Alejandro Colomar (man-pages)
2020-11-13 8:03 ` .RS G. Branden Robinson
2020-11-13 8:52 ` .RS Michael Kerrisk (man-pages)
[not found] ` <20201113093846.jzxlkw3o3pqkkr47@localhost.localdomain>
2020-11-13 10:02 ` .RS Michael Kerrisk (man-pages)
2020-11-13 10:15 ` .RS Alejandro Colomar
2020-11-13 10:27 ` .RS Michael Kerrisk (man-pages)
2020-11-13 10:34 ` .RS G. Branden Robinson
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=c6919fec-4a95-888d-93fd-ecb254ec2377@gmail.com \
--to=alx.manpages@gmail.com \
--cc=colomar.6.4.3@gmail.com \
--cc=g.branden.robinson@gmail.com \
--cc=linux-man@vger.kernel.org \
--cc=mtk.manpages@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).