groff
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: How to print a literal '.' as the first character in a line?


From: Alejandro Colomar
Subject: Re: How to print a literal '.' as the first character in a line?
Date: Tue, 3 May 2022 22:11:22 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.8.1

Hi, Branden!

On 5/2/22 00:52, G. Branden Robinson wrote:
Hi, Alex--

At 2022-05-01T22:24:04+0200, Alejandro Colomar wrote:
On 5/1/22 13:00, Ralph Corderoy wrote:
Hi Alejandro,

https://man.openbsd.org/mandoc_char#Accents
https://man.openbsd.org/mandoc_char#Periods

Or, more generally, which may be more useful in future,
CSTR 54 §4.1, https://troff.org/54.pdf, and

      info groff Requests | less -j12 +/precede

Thank you too.

Branden, any chance you may add that to any groff manual page?

Already done!  I would have responded sooner but I've just completed (I
_think_) migrating my data to a new machine.  Moar cores, moar fun.

I'm also being a bit randomly inactive these days.


At any rate, groff_man(7) in groff 1.22.4 does in fact cover this.

[[
        \&     Zero-width space.  Append to an input line to prevent an
               end-of-sentence punctuation sequence from being
               recognized as such, or insert at the beginning of an
               input line to prevent a dot or apostrophe from being
               interpreted as the beginning of a roff request.
]]

Hmm, I didn't expect to find it there, since it's a groff fundamental and not a man(7) thing. I don't remember the exact details of my research, since that was about more than a month ago, but I guess that since I didn't find it in my extensive search in groff(7) and groff_char(7), I didn't put much effort in groff_man(7).


In groff 1.23.0, this material will move to groff_man_style(7), since
groff_man(7) is meant to slim itself down to a reference for the macro
package proper, and not cover *roff language fundamentals.

It makes sense.


groff 1.22.4's groff(7) has this.  groff 1.23.0 is similar.

[[
        \&     Non-printable, zero-width glyph.
]]

You could be forgiven for not inferring its utility in this case from
such a terse description.

Yes, I was mainly looking for something 'dot' 'period' 'point' or something like that. No way I could have considered that. Even if I had read the whole page, I probably wouldn't have deducted that it would be useful to this case :)


In groff 1.23.0, we'll have this in roff(7), which will include much
other introductory material.

[[
        Any input line that is not a control line is a text line.  See
        section “Line continuation” in groff(7) for an exception to this
        rule.  Text lines generally become formatted output.  To start a
        text line with the control or no‐break control character, prefix
        the character with the \& escape sequence.
]]

Hmmm. So we have the info in roff(7) and groff_man_style(7) in 1.23.0. I'm not sure my understanding of all of the groff manual pages is correct, but let me think out loud a bit:

roff(7) is historical stuff, right? I wouldn't open this manual page for finding details on escaping '.'.

Since it's something related to the core language, I'd also skip groff_man*(7) pages.

Not saying it shouldn't be on those pages; probably readers of those pages (casual manual page maintainers) will be interested in knowing that without having to read through the whole groff(7) documentation. But for more seasoned manual page maintainers, who distinguish some difference between the man(7) macro package and the basic language, will probably be inclined to look at some core language manual page for finding this.

My first attempt would be groff_char(7), probably looking for some escape sequence that produces a '.' glyph. Something hypothetical like '\.' or '\[dot]'. After finding that there's no such thing, I'd go directly to groff(7) trying to find something that helps.

At the same time, I tend to not like having repeated documentation in 3 or 4 pages. We have similar things in the Linux man-pages, and I'd like to change that. Buuuut, at the same time, I see some need for documenting that in several pages, each with a different purpose. Not sure what would be the best thing to do. But I'd propose adding a paragraph with this info to groff(7) too. In fact that's the page that I'd chose if I had to put it in a single place and refer from the others.


Our Texinfo manual is similarly expanded.

[[
We have now encountered almost all of the syntax there is in the 'roff'
language, with an exception already noted in passing.  A "request" is an
instruction to the formatter that occurs after a control character.  A
"control character" must occur at the beginning of an input line to be
recognized.(1)  (*note Requests and Macros-Footnote-1::) The regular
control character has a counterpart, the "no-break control character",
which suppresses the break that is implied by some requests.  The
default control characters are the dot ('.') and the neutral apostrophe
('''), the latter being the no-break control character.  These
characters were chosen because it is uncommon for lines of text in
natural languages to begin them.  If you require a formatted period or
apostrophe (closing single quotation mark) where GNU 'troff' is
expecting a control character, prefix the dot or neutral apostrophe with
the non-printing input break escape sequence, '\&'.
]]

Ahh, yes, GNU prefers info(1) over man(1)... I rarely read those. Please forgive me :-)


Do you find the above responsive to your request?  I sure hope so!

Sure!

Thanks!

Alex



Regards,
Branden

--
Alejandro Colomar
Linux man-pages comaintainer; https://www.kernel.org/doc/man-pages/
http://www.alejandro-colomar.es/



reply via email to

[Prev in Thread] Current Thread [Next in Thread]