linux-man.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
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





  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).