bug-groff
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[bug #63827] withdraw contrib/pdfmark


From: Deri James
Subject: [bug #63827] withdraw contrib/pdfmark
Date: Thu, 29 Aug 2024 19:47:03 -0400 (EDT)

Follow-up Comment #16, bug #63827 (group groff):

Hi Branden,

Generally it is only "distillers" which process pdfmark instruction. Given the
pdfmark.tmac only supports a subset of the pdfmark reference, none of which
alter position on the page, it is safe for an ordinary PS interpreter to just
ignore them. If you use pdfmark instructions which are modal (alter the state
of the interpreter) then I think you need specific code in the postscript
prolog, see the pdfmark reference.

Pdfmark's use of "gropdf" in "gropdf-info:href" pre-dates my introduction of
gropdf.pl. It is Keith's solution to the forward reference issue. Pdfroff
collects these outputs and writes them to a ref file as .pdfhref D commands,
you can view the file in a directory within /tmp if you pass
--keep-temporary-files to pdfroff. Gropdf solves the same problem by passing
.tm .ds lines down the pipeline.

Another issue pdfroff has to solve, is the movement of hotspots areas. Given
that the text of a forward reference may be unknown during the first run, when
it is subsequently populated in a subsequent run, the whole text flow of the
document will have changed, a hotspot may have moved from the bottom of one
page to the top of the next. Pdfroff accomodates this by using .tm
grohtml-info:page, which pdfroff collects, it contains the page number and
location on the page of a hotspot, which it then uses to mark the hotspot.
This actually comes from node.cpp. This is why pdfroff uses a loop to wait for
the page/positions to settle, which, if the document uses PDFPIC with pdfroff,
can produce very long run-times, because each time around the loop PDFPIC will
be calling pdftops -eps each time.

Gropdf has a much easier time of dealing with hotspots which may move after
the first run has populated the forward references, because it does not use
the information from node.cpp but instead plants markers in the text stream
(pdf: mark[start/stop/suspend/resume] and gropdf "knows" where it is on the
page when it receives the marker.

The inclusion of "gropdf-info:ref" lines in om.tmac is due to an oddity in
pdf.tmac (which is not in pdfmark.tmac), when pdfbookmark is called with -T,
pdf.tmac uses the -T parameter as a named target which you can link to with a
pdfhref L call, otherwise bookmarks get an anonymous name "pdf:bmNN" which are
only called from the pdf overview panel. In pdfmark (grops) -T appends a tag
name to the bookmark to become pdf:bmNNtagname, so it is still anonymous, I
believe the idea is to make it possible to merge different runs together using
the tag to differenciate otherwise duplicate names. In pdf.tmac I decided that
this problem was better solved outside pdf.tmac. In an.tmac, when you make
subsections as named destinations you realised that they would need extra
qualified names, such as "gropdf(1)#See Also" so as to be unique in documents
like groff_man_pages.pdf. So the gropdf-info lines are to make pdfmark work
the same way, i.e. if a bookmark is named it becomes a named destination as
well as a bookmark.


    _______________________________________________________

Reply to this item at:

  <https://savannah.gnu.org/bugs/?63827>

_______________________________________________
Message sent via Savannah
https://savannah.gnu.org/

Attachment: signature.asc
Description: PGP signature


reply via email to

[Prev in Thread] Current Thread [Next in Thread]