From: Deri <deri@chuzzlewit.myzen.co.uk>
To: "G. Branden Robinson" <g.branden.robinson@gmail.com>,
Alejandro Colomar <alx@kernel.org>
Cc: linux-man@vger.kernel.org, Brian.Inglis@shaw.ca
Subject: Re: No 6.05/.01 pdf book available
Date: Tue, 15 Aug 2023 00:26:07 +0100 [thread overview]
Message-ID: <5865599.MhkbZ0Pkbq@pip> (raw)
In-Reply-To: <3a7c42dd-d631-0ea2-3b0b-55f24f26fe20@kernel.org>
On Monday, 14 August 2023 22:32:49 BST Alejandro Colomar wrote:
> Hi Deri,
>
> On 2023-08-14 23:22, Deri wrote:
> > On Monday, 14 August 2023 21:01:46 BST Alejandro Colomar wrote:
> >> On 2023-08-14 19:37, Alejandro Colomar wrote:
> >>>> Another change which would need to be accepted is
> >>>> to allow a fourth parameter to .MR which is the destination name.
> >>>> Normally the name of the destination is derived from the first two
> >>>> parameters concatenated with "_", but if the name part of the .MR call
> >>>> to the man page includes non- ascii characters (such as ".MR
> >>>> my\-lovely\-page 7 ,") then it needs to provide a "clean" destination
> >>>> name.
> >>
> >> I just re-read this, and am confused. '\-' is an ASCII character, isn't
> >> it? In fact, all of the Linux man-pages pathnames are composed
> >> exclusively of ASCII characters, aren't they?
> >
> > Hi Alex,
> >
> > You are correct, but it is not relevent since we are talking about the
> > LinuxManBook. In this context .MR is a pointer to another page in the pdf,
> > this is termed an internal reference, it could be forward or backwards
> > within the pdf. If you look at the keyrings(7) man page you see examples
> > such as:-
> >
> > .SH SEE
> > .ad l
> > .nh
> > .BR keyctl (1),
> > .BR add_key (2),
> > .BR keyctl (2),
> > .BR request_key (2),
> > .BR keyctl (3),
> > .BR keyutils (7),
> > .BR persistent\-keyring (7),
> > .BR process\-keyring (7),
> > .BR session\-keyring (7),
> > .BR thread\-keyring (7),
> > .BR user\-keyring (7),
> > .BR user\-session\-keyring (7),
> > .BR pam_keyinit (8),
> > .BR request\-key (8)
> > .PP
> >
> > Which when converted to .MR calls looks like:-
> >
> > .SH SEE ALSO
> > .ad l
> > .nh
> > .MR "keyctl" "1" "," "keyctl"
> > .MR "add_key" "2" "," "add_key"
> > .MR "keyctl" "2" "," "keyctl"
> > .MR "request_key" "2" "," "request_key"
> > .MR "keyctl" "3" "," "keyctl"
> > .MR "keyutils" "7" "," "keyutils"
> > .MR "persistent\-keyring" "7" "," "persistent-keyring"
> > .MR "process\-keyring" "7" "," "process-keyring"
> > .MR "session\-keyring" "7" "," "session-keyring"
> > .MR "thread\-keyring" "7" "," "thread-keyring"
> > .MR "user\-keyring" "7" "," "user-keyring"
> > .MR "user\-session\-keyring" "7" "," "user-session-keyring"
> > .MR "pam_keyinit" "8" "," "pam_keyinit"
> > .MR "request\-key" "8" "" "request-key"
> > .PP
> >
> > On the keyrings(7) page in the pdf you should be able to see the
> > difference
> > between HYPHEN (U+2010), which is what \- becomes, and HYPHEN-MINUS
> > (U+002D) which is the ascii character.
>
> It shouldn't be that way. We use '\-' precisely to make it a HYPHEN-MINUS,
> as it's the name of the file. There shouldn't be any pages using '-', and
> if there are, those are bugs. All of our MR calls that have something
> resembling a dash should be using '\-', which I expect to produce an ASCII
> '-' (i.e., 45, 0x0D).
>
> Am I missing something?
>
> Cheers,
> Alex
Hi Alex,
It turns out we are both wrong! I confused my hyphen with my minus as seen in
the font:-
- 333,257 0 45 hyphen 002D
hy "
\- 564,286 0 173 minus 2212
But as you can see \- is not ascii, it is unicode U+2212 which is why it can't
be used to specify a destination, but it looks nicer as a glyph. The precise
reason is because special characters are converted to a node internally and
nodes can't be used as part of a .ds string name. This illustrates it:-
[derij@pip]$ echo ".ds pdflook(user\-keyring_7) 2508" | groff -z
troff:<standard input>:1: error: a special character is not allowed in an
identifier
troff:<standard input>:1: error: bad string definition
[derij@pip]$ echo ".ds pdflook(user-keyring_7) 2508" | groff -z
In old gropdf this may in fact have worked because I fudged the issue by
.asciifying the name which would convert \- to chr(173) which is ascii but
this meant that you could not use any UTF-8 text which preconv converted to \
[uXXXX] since that .asciified to nothing.
There are other possible solutions. On my branch I have a new command
.stringhex, which operates like .stringup/down but converts the contents to
ascii hex, which hides the contents from groff. So something like:-
[derij@pip]$ printf ".ds a user\-keyring_7
.stringhex a
.ds pdflook(\*a) 2508
.tm \*a
"|groff -z
757365721A6B657972696E675F37
Cheers
Deri
> > The problem is that the MR request is a bit
> > naughty in that it uses the first two parameters for two purposes, first
> > it is used as a destination, but it is also output as text. So as text it
> > may contain escapes to enhance the typography, for example using \- for a
> > better looking hyphen. It is not my job to impose artificial restrictions
> > on how a man page author wants his creation to look, better to separate
> > the two purposes, so there is no restriction.
> >
> >>> Is this really needed? Can't gropdf just translate them internally?
> >>> Say,
> >>> do unconditionally the equivalent of `| tr - _ |` or something like
> >>> that.
> >>>
> >>> [...]
> >
> > This is all happening in groff macros way before it gets to gropdf.
> >
> > Cheers
> >
> > Deri
next prev parent reply other threads:[~2023-08-14 23:27 UTC|newest]
Thread overview: 48+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-08-07 1:16 [PATCH] scripts/LinuxManBook/gropdf: use symlink instead of hard coded groff version Brian Inglis
2023-08-07 2:46 ` No 6.05/.01 pdf book available Brian Inglis
2023-08-07 8:45 ` Alejandro Colomar
2023-08-07 9:16 ` Alejandro Colomar
2023-08-07 16:21 ` Brian Inglis
2023-08-12 0:02 ` Alejandro Colomar
2023-08-12 1:48 ` G. Branden Robinson
2023-08-12 21:32 ` Alejandro Colomar
[not found] ` <21975186.EfDdHjke4D@pip>
2023-08-11 23:51 ` Alejandro Colomar
2023-08-12 3:04 ` G. Branden Robinson
2023-08-12 21:33 ` Alejandro Colomar
2023-08-12 17:02 ` Brian Inglis
2023-08-12 20:02 ` Deri
2023-08-13 20:30 ` Brian Inglis
2023-08-13 20:47 ` Alejandro Colomar
2023-08-13 21:55 ` G. Branden Robinson
2023-08-13 22:45 ` Alejandro Colomar
2023-08-13 22:18 ` Alejandro Colomar
2023-08-14 6:49 ` Brian Inglis
2023-08-14 10:46 ` Alejandro Colomar
2023-08-13 21:47 ` hyphens at ends of pages (was: No 6.05/.01 pdf book available) G. Branden Robinson
2023-08-14 5:28 ` Brian Inglis
2023-08-14 16:06 ` No 6.05/.01 pdf book available Deri
2023-08-14 17:37 ` Alejandro Colomar
2023-08-14 20:01 ` Alejandro Colomar
2023-08-14 21:22 ` Deri
2023-08-14 21:32 ` Alejandro Colomar
2023-08-14 23:26 ` Deri [this message]
2023-08-14 21:40 ` Deri
2023-08-15 0:50 ` groff features for hyperlinked man pages (was: No 6.05/.01 pdf book available) G. Branden Robinson
2023-08-15 10:34 ` G. Branden Robinson
2023-08-18 13:50 ` Alejandro Colomar
2023-08-19 4:37 ` G. Branden Robinson
2023-10-01 12:02 ` Alejandro Colomar
2023-08-18 10:29 ` No 6.05/.01 pdf book available Alejandro Colomar
2023-08-15 0:34 ` Brian Inglis
2023-08-20 16:48 ` Deri
2023-08-20 18:54 ` Alejandro Colomar
2023-08-20 19:06 ` Brian Inglis
[not found] ` <3262525.44csPzL39Z@pip>
2023-08-21 22:02 ` Alejandro Colomar
2023-08-21 23:10 ` Deri
2023-08-21 23:45 ` Brian Inglis
2023-08-28 12:17 ` Alejandro Colomar
2023-08-28 18:24 ` Brian Inglis
2023-08-28 21:11 ` Alejandro Colomar
2023-08-07 8:29 ` [PATCH] scripts/LinuxManBook/gropdf: use symlink instead of hard coded groff version Alejandro Colomar
2023-08-07 15:01 ` Brian Inglis
2023-08-11 23:57 ` Alejandro Colomar
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=5865599.MhkbZ0Pkbq@pip \
--to=deri@chuzzlewit.myzen.co.uk \
--cc=Brian.Inglis@shaw.ca \
--cc=alx@kernel.org \
--cc=g.branden.robinson@gmail.com \
--cc=linux-man@vger.kernel.org \
/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).