From: "Michal Vlasák" <lahcim8@gmail.com>
To: "mailing list for ConTeXt users" <ntg-context@ntg.nl>
Cc: Pablo Rodriguez <oinos@gmx.es>
Subject: [NTG-context] Re: named destinations in /GoToR
Date: Mon, 13 Nov 2023 23:30:45 +0100 [thread overview]
Message-ID: <CWY1G7BJGMH3.1R7439BTOFQ1R@gmail.com> (raw)
In-Reply-To: <fbb0c3e9-fcee-de9b-1011-7d3bb0833540@gmx.es>
Hello Pablo,
On Mon Nov 13, 2023 at 5:25 PM CET, Pablo Rodriguez via ntg-context wrote:
> Dear list,
>
> imagine I have a PDF document (named "whatever.pdf") such as the one
> generated from this source:
>
> \setupinteraction[state=start,
> focus=standard]
> \starttext
> \dorecurse{5}
> {\chapter[\recurselevel]{Chapter}
> \section[sec-\recurselevel]{Section}}
> \stoptext
>
> This source only samples PDF documents not generated with ConTeXt. This
> means that no .tuc file may be available and named destinations may
> contain only digits.
>
> Then I need to access some named destinations from a document such as:
>
> \setupinteraction[state=start,
> focus=standard]
> \starttext
> \dorecurse{5}
> {\goto{Chapter \recurselevel}[whatever.pdf::\recurselevel],
> \goto{section \recurselevel}[whatever.pdf::sec-\recurselevel]\par}
> \stoptext
>
> Sorry, but after reading again lpdf-ano.mkxl I’m not sure whether I can
> get named destinations (such as "/D (4)" or "/D (sec-3)") and how I
> could get them.
>
> With the previous code, the only destination reads in the PDF source:
>
> 5 0 obj
> <<
> /D [ 0 /Fit ]
> /F (whatever.pdf)
> /S /GoToR
> >>
> endobj
It seems that the default mode for outer (external file) references is
the "auto" mode. This one seems to load the whatever.pdf file, check the
named destinations and decide based on that.
I am not exactly sure why your example fails, because it seems desirable
that the auto mode detects the named destination and refers to it
instead, or at least refers to the page number the destination is
actually at.
In any case, you can try the "name" mode, which forces the use of
destination names (i.e. "/D (...)"):
% both inner and outer references in name mode
\setupinteraction[page=name]
% inner default (auto mode) and outer name mode
\setupinteraction[page={auto,name}]
Unfortunately, the second one doesn't work due to a typo in
strc-ref.lmt:
--- a/tex/context/base/mkxl/strc-ref.lmt
+++ b/tex/context/base/mkxl/strc-ref.lmt
end
if toboolean(outer) or outer == v_page or outer == v_yes then
outermethod = v_page
- elseif inner == v_name then
+ elseif outer == v_name then
outermethod = v_name
else
outermethod = v_auto
Other thing you can try Pablo, is to not actually have the destination
file (whatever.pdf) present when running context. This works, because if
ConTeXt can't find the file, the auto mode fails and you get named
destinations unless in page mode (`page=page`).
Whether something better can be done (and in a backwards compatible way)
at the ConTeXt side I am not sure, I didn't go that deep.
Michal
PS: Sorry if this message finds its way onto the list twice, I got
blocked by automoderation by initially also including the full
strc-ref.lmt file, which is too big.
___________________________________________________________________________________
If your question is of interest to others as well, please add an entry to the Wiki!
maillist : ntg-context@ntg.nl / https://mailman.ntg.nl/mailman3/lists/ntg-context.ntg.nl
webpage : https://www.pragma-ade.nl / https://context.aanhet.net (mirror)
archive : https://github.com/contextgarden/context
wiki : https://wiki.contextgarden.net
___________________________________________________________________________________
next prev parent reply other threads:[~2023-11-13 22:30 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-11-13 16:25 [NTG-context] " Pablo Rodriguez via ntg-context
2023-11-13 22:30 ` Michal Vlasák [this message]
2023-11-14 17:28 ` [NTG-context] " Pablo Rodriguez via ntg-context
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=CWY1G7BJGMH3.1R7439BTOFQ1R@gmail.com \
--to=lahcim8@gmail.com \
--cc=ntg-context@ntg.nl \
--cc=oinos@gmx.es \
/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).