You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
To be kind to 'whatis' database generators; move MACRO_DEF
out of the NAME section.
Every man page created by Perl Pod::Man has macro defs above
the .TH header. There are over 5000 of them on my system. So
it doesn't seem to be a problem to have them in the head.
commenter: grubert
posted: 2020-03-23 13:08:11.642000
title: #166 manpage.py: move macro defs to head
assigned_to: engelbert gruber
commenter: grubert
posted: 2020-03-23 13:22:27.775000
title: #166 manpage.py: move macro defs to head
I am still unsure, please be patient with me
man 7 man says:
Title line
The first command in a man page (after comment lines, that is, lines that start with .") should be
.TH title section date source manual
pod2man ignores this obviously, the whatis might be a perl program to begin with :-)
this seams important too
Sections
Sections are started with .SH followed by the heading name.
The only mandatory heading is NAME, which should be the first section and be followed on the next line by a one-
line description of the program:
.SH NAME
item \- description
It is extremely important that this format is followed, and that there is a backslash before the single dash which
follows the item name. This syntax is used by the mandb(8) program to create a database of short descriptions for
the whatis(1) and apropos(1) commands. (See lexgrog(1) for further details on the syntax of the NAME section.)
I am testing still
commenter: grubert
posted: 2020-03-23 14:04:57.482000
title: #166 manpage.py: move macro defs to head
lexgrog checking in sandbox/manpage-writer/expected
OK
expected/docinfo-deu-l_de.man: "deutsches_manpage_beispiel - manpage beschreibung"
expected/docinfo-deu-l_en.man: "deutsches_manpage_beispiel - manpage beschreibung"
expected/docinfo-deu.man: "deutsches_manpage_beispiel - manpage beschreibung"
expected/docinfo-eng-l_de.man: "english_manpage_sample - manpage description"
expected/docinfo-eng-l_en.man: "english_manpage_sample - manpage description"
expected/docinfo-eng.man: "english_manpage_sample - manpage description"
expected/man-de.1.man: "man - Programm zum Einsehen der Online-Manuale"
expected/optionslisttest.man: "OptionlistTest - Test for correct intention/detention of optionlists"
expected/test.man: "rst2man - generate unix manpages from reStructured text"
commenter: grubert
posted: 2020-03-23 14:06:08.843000
title: #166 manpage.py: move macro defs to head
could you send me your (minimal) document please
commenter: jwilliep
posted: 2020-03-23 20:01:15.147000
title: #166 manpage.py: move macro defs to head
On Mon, 23 Mar 2020, engelbert gruber wrote:
man 7 man says:
Title line
The first command in a man page (after comment lines, that is, lines that
start with .") should be
.TH title section date source manual
pod2man ignores this obviously, ...
Well, not exactly. IMO, Man(7) is written for a beginner man page author, and
the line you quote is intentionally over simplified.
Man pages are roff source files. In roff there is no such thing as a 'command'.
In roff terminology there are 'requests' and 'macros':
That line is referring to macros, specifically 'an macros'. So, the first man macro called must be TH. There is no problem calling roff requests before
the TH macro. Custom macros should be included before the document, just as
they would when included with the roff -m option.
roff(7)
Requests are the predefined basic formatting commands similar to the com‐
mands at the shell prompt. The user can define request-like elements us‐
ing predefined roff elements. These are then called macros. A document
writer will not note any difference in usage for requests or macros; both
are written on a line on their own starting with a dot.
I have an idea the reason the docutils macro definitions where originally added
in the NAME section is do to a misunderstanding of this comment:
groff_man(7):
If in doubt, copy the implementation into your page—after the .TH call and
the “Name” section
But that must be understood in the context it was written. It is referring to
the author redefining any of the GNU 'extension' an-ext.tmac man page macros,
which are included after the TH macro is processed. Meaning, if the author
tries to redefine them before the TH, they will get clobbered. I cannot imagine
why anyone would want to redefine a GNU an-ext.tmac macro, and manpage.py is
certainly not doing that.
could you send me your (minimal) document please
It looks like you are testing with lexgrog and trying to reproduce a failure.
That's fine, but there are at least 3 whatis parsers that I know of. I maintain
one of them. The macro defs did not cause a hard-fail for me, they just put
garbage in the index. So I cannot send you a manpage.py document that will
hard-fail lexgrog (if that is what you are asking for).
I have patched my parser to handle what manpage.py does, but it is still the
wrong location to be adding custom roff macro definitions. Polluting the
document space not only makes things harder for whatis parsers (and believe me
that is difficult enough with all the junk authors put in the NAME section),
but it also makes it harder for maintainers to review the source file.
I hope you will consider applying the patch and seeing if the results cause any
new failures for you. I'm confident that they will not.
Thank you Engelbert,
Willie
The text was updated successfully, but these errors were encountered:
author: jwilliep
created: 2020-03-22 19:03:19.377000
assigned: grubert
SF_url: https://sourceforge.net/p/docutils/patches/166
attachments:
To be kind to 'whatis' database generators; move MACRO_DEF
out of the NAME section.
Every man page created by Perl Pod::Man has macro defs above
the .TH header. There are over 5000 of them on my system. So
it doesn't seem to be a problem to have them in the head.
commenter: grubert
posted: 2020-03-23 13:08:11.642000
title: #166 manpage.py: move macro defs to head
commenter: grubert
posted: 2020-03-23 13:22:27.775000
title: #166 manpage.py: move macro defs to head
I am still unsure, please be patient with me
man 7 man says:
pod2man ignores this obviously, the whatis might be a perl program to begin with :-)
this seams important too
I am testing still
commenter: grubert
posted: 2020-03-23 14:04:57.482000
title: #166 manpage.py: move macro defs to head
lexgrog checking in sandbox/manpage-writer/expected
OK
expected/docinfo-deu-l_de.man: "deutsches_manpage_beispiel - manpage beschreibung"
expected/docinfo-deu-l_en.man: "deutsches_manpage_beispiel - manpage beschreibung"
expected/docinfo-deu.man: "deutsches_manpage_beispiel - manpage beschreibung"
expected/docinfo-eng-l_de.man: "english_manpage_sample - manpage description"
expected/docinfo-eng-l_en.man: "english_manpage_sample - manpage description"
expected/docinfo-eng.man: "english_manpage_sample - manpage description"
expected/man-de.1.man: "man - Programm zum Einsehen der Online-Manuale"
expected/optionslisttest.man: "OptionlistTest - Test for correct intention/detention of optionlists"
expected/test.man: "rst2man - generate unix manpages from reStructured text"
FAIL
expected/characters.man: parse failed
expected/compact_lists.man: parse failed
expected/dotted.man: parse failed
expected/indent.man: parse failed
expected/optionstoo.man: parse failed
but these fail because .SH NAME
commenter: grubert
posted: 2020-03-23 14:06:08.843000
title: #166 manpage.py: move macro defs to head
could you send me your (minimal) document please
commenter: jwilliep
posted: 2020-03-23 20:01:15.147000
title: #166 manpage.py: move macro defs to head
On Mon, 23 Mar 2020, engelbert gruber wrote:
Well, not exactly. IMO, Man(7) is written for a beginner man page author, and
the line you quote is intentionally over simplified.
Man pages are roff source files. In roff there is no such thing as a 'command'.
In roff terminology there are 'requests' and 'macros':
That line is referring to macros, specifically 'an macros'. So, the first
man macro called must be TH. There is no problem calling roff requests before
the TH macro. Custom macros should be included before the document, just as
they would when included with the roff -m option.
I have an idea the reason the docutils macro definitions where originally added
in the NAME section is do to a misunderstanding of this comment:
But that must be understood in the context it was written. It is referring to
the author redefining any of the GNU 'extension' an-ext.tmac man page macros,
which are included after the TH macro is processed. Meaning, if the author
tries to redefine them before the TH, they will get clobbered. I cannot imagine
why anyone would want to redefine a GNU an-ext.tmac macro, and manpage.py is
certainly not doing that.
It looks like you are testing with lexgrog and trying to reproduce a failure.
That's fine, but there are at least 3 whatis parsers that I know of. I maintain
one of them. The macro defs did not cause a hard-fail for me, they just put
garbage in the index. So I cannot send you a manpage.py document that will
hard-fail lexgrog (if that is what you are asking for).
I have patched my parser to handle what manpage.py does, but it is still the
wrong location to be adding custom roff macro definitions. Polluting the
document space not only makes things harder for whatis parsers (and believe me
that is difficult enough with all the junk authors put in the NAME section),
but it also makes it harder for maintainers to review the source file.
I hope you will consider applying the patch and seeing if the results cause any
new failures for you. I'm confident that they will not.
Thank you Engelbert,
Willie
The text was updated successfully, but these errors were encountered: