On 01/07/11 10:20, Sam Liddicott wrote:
Attached is a patch that provides hyperlink support when the file is exported to ps and then converted to pdf using ps2pdf.
No external style sheets are needed.
After patching and re-building you WILL need to:
texmacs --delete-style-cache
once, or within texmacs click on "tools, updates, styles"
The only problem I am aware of is that the link generally moves to the top of the target page (or bottom, if it is the last page) instead of the correct part of the target page.
labels have a new internal definition and are implemented as a locus containing a link of type "anchor" in which the id is written as a named destination in postscript.
(In fact the ID is always written as a named destination even for non-anchor links, which probably doesn't matter).
The body of the locus is the original label definition so it should all work fine I hope.
(Let me know if labels behave badly).
best regards
Anyone want to review this, or commit this to the main project?
Sam
On 30/06/11 20:55, Sam Liddicott wrote:
I think I'm abusing locus a little too much and it's not robust.
I think I need to change the definition of reference:
env ("reference")= tree (MACRO, "Id",
tree (LOCUS, copy (ref_id), ln3, reftxt));
and replace reftxt with something like
tree(DECORATE_LINK, tree(ARG, "Id"), refrext);
And DECORATE_LINK will work something like datoms but emit the right postscript.
This can be a general way for annotating a box with hidden postscript.
Sam
On 30/06/11 17:57, Sam Liddicott wrote:
I've decided to extend the built-in label macro to also contain a special locus that will generate the pdfmark for a named destination (anchor to html people).
I've already got my hackery in place for locus, so spotting a new kind should be easy enough.
I hope to post the full patch sometime tomorrow.
(Sadly it only works for postscript -> pdf and not new pdf rendering).
Sam
On 30/06/11 12:21, Sam Liddicott wrote:
On 29/06/11 19:54, marc lalaude-labayle wrote:
I follow your posts about this feature and really hopes you'll achieve to add this one to texmacs.
I've done it.
It's hell.
B the time a <reference> is rendered it's a locus and knowledge that it was a reference has gone, and the actual reference value is hard 9for me) to get hold of.
However I've got the locus rendering to emit the required pdfmark, and that's hacky but works.
Joris may have something to say.
I would rather have done this as a <specific printer> macro but I have no knowledge of the bounding rect which is needed.
However, a <label> is not actually rendered so there is nowhere for me to overload to add the pdfmark to the postscript.
Based on my hacking of <specific|printer<image|<tuple|<raw-data|magic-macro>... I'm emitting the pdfmark stuff for the label.
(It's very slow generating the post-script).
Anyway, it works - although I have to override the label macro to emit this..
The downsides are:
1. hackyness
2. slow - I need to have the label rendered directly or find some better means of injecting post-script
3. despite me trying to do do the label's properly (in postscript) the link-targets just seem to be to "the page" rather that the right part of the page, so I'll have to see what I did wrong there.
Sam
Marc
2011/6/29 Sam Liddicott <address@hidden <mailto:address@hidden>>
Wow, I'm nearly there.
Using post_display on locus_box_rep I can blot out a hyperlink!
So I'm just adding the anchor and href methods to the renderer class.
Sam
On 28/06/11 18:15, Sam Liddicott wrote:
I'm determined to add PDF hyperlink support to texmacs.
This post-script can be inserted wherever a <label> is rendered:
[ /Dest (LABEL-ID-HERE) cvn /View [/XYZ null null null] /DEST
pdfmark
I've found the point at which the label is rendered but
because it has no real appearance of it's own I've still got
to poke my way through to the printer_rep layer..
This post-script can be inserted wherever a reference appears,
by which I mean a certain type of LOCUS.
[
/Rect [ .. ..... .. ]
/Border [16 16 1 [3 10]]
/Color [1 0 0]
/Dest (LABEL-ID-HERE) cvn
/Subtype /Link
/ANN pdfmark
The rect coordinates are the same as used when rendering the
locus with mouse-over so that it shows a green box.
I've tested the post-script by hand-editing files and it does
work.
I'm sure that I get to do this somewhere around the final
print statement in concater_rep::typeset_locus file
concat_active.cpp but I still can't make the link between that
point and the printer_rep renderer, unless concat_active is a
subclass which I doubt.
So right now I'm trying to track down what locus_box does. I
see it in change_boxes.cpp but am no closer to finding the
point at which printer_rep's print() is invoked or where the
green rect coords are kept, but I hope to find it soon.
I'm both cases LABEL-ID-HERE has to have weird symbols in
octal with \, and \ ( ) escaped by \
This is taking me HOURS so if anyone who knows the C better
than me wants to speak out, please do.
Sam
_______________________________________________
Texmacs-dev mailing list
address@hidden <mailto:address@hidden>
https://lists.gnu.org/mailman/listinfo/texmacs-dev
-- [FSF Associate Member #2325]
<http://www.fsf.org/register_form?referrer=2325>
<http://www.openrightsgroup.org/>
_______________________________________________
Texmacs-dev mailing list
address@hidden <mailto:address@hidden>
https://lists.gnu.org/mailman/listinfo/texmacs-dev
_______________________________________________
Texmacs-dev mailing list
address@hidden
https://lists.gnu.org/mailman/listinfo/texmacs-dev
--
[FSF Associate Member #2325] <
http://www.fsf.org/register_form?referrer=2325>
<
http://www.openrightsgroup.org/>
______________________________
_________________
Texmacs-dev mailing list
address@hidden
https://lists.gnu.org/mailman/listinfo/texmacs-dev