All of lore.kernel.org
 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 15:01 ` 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-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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.