[Framers] Basic question: hyperlinks to paragraphs

Bertrand Meyer Bertrand.Meyer at inf.ethz.ch
Thu Oct 29 06:18:25 PDT 2020


I think I now have all the elements and that basically what I want to do is (1) extremely natural, (2) impossible in FrameMaker today, and (3) addable to FrameMaker in... maybe one day of work? But I don’t see (through successive releases since FrameMaker ceased to be an independent company) an effort to improve the basic capabilities so I am not holding my breath.

 

What I need, and I am sure many others have wanted it to, is “hyperlinks to paragraphs”. I ask to create a hyperlink and can display a list of target paragraphs just to choose one. Exactly like one does for cross-references, except it’s a hyperlink, not a cross-reference.

 

What’s amazing is that the design of the cross-reference mechanism in FrameMaker, which must date back to the nineties, is brilliant. I have not seen anything similar elsewhere. For example the “Update references” command to resolve references when you move files around. It would be  a breeze to generalize it. I just used it to turn a single-file document into a book; without this mechanism updating the hundreds of cross-references would have been a nightmare.

 

At this point the only way to do what is described above is to type a gotolink command for every hyperlink and a newlink command for every target paragraph (what the manual calls “source”, which is confusing). The gotolink commands (in the case of cross-links between files of a book) must include the file name, so they are of the form

 

                gotolink full_file_name:full_paragraph_name

 

No one in his right mind would type this (on both sides, new and goto) hundreds or thousands of time.

 

FrameMaker on Unix had a macro facility which at least would have simplified this task. As far as I know it never existed in the Windows version.

 

(As an aside, I am pretty sure the cross-reference facility predates the Web. The hyperlink facility, with this absurd let-the-user-type-everything gotolink/newlink facility cannot have been designed by the same obfiously talented people who designed cross-references. It looks like a quick patch added when the Web came out. Which is OK, but it should have been replaced long ago with something smarter.)

 

I am willing to try scripts but I doubt they will help much since one still needs to type in the file name and the link name each time. We have computers with a graphical UI. They are supposed to display such lists to us to pick from them, not force us to type and retype information that “the computer” has! This is crazy.

 

I must say I did find a workaround, which is crazy too. Let me describe it for the benefit of anyone else who runs into the same issue. Fasten your seat belts.

 

Again the problem is that I want to have what others in this thread have called a glossary, which contains definitions, for example

 

                cat: a kind of *beast* whose pictures some people have an urge to post on Facebook

 

Each definition appears in a paragraph of a certain type (format), which I call the “target type”. (Again this is not the manual’s terminology, but it makes more sense.) Let me call TT the target type. There could be several, but I will assume just one for simplicity. (The technique easily generalizes to several target types.)

 

In the rest of the text there may be references to concepts defined in the glossary. For example:

 

                ... coming home last night I saw a *cat* roaming in the street...

 

Such mentions, which I call source mentions, are marked with a special character type, say Underline. They appear between asterisks above (maybe the mailer shows them in boldface). Note that a glossary entry can itself have a source mention, such as “beast” in the definition of “cat”. This does not raise any particular problem.

 

I want to ensure that every source mention gets turned, in the generated PDF, into a clickable hyperlink to the corresponding target paragraph in the glossary (of type TT).

 

As an aside, “glossary” is a convenient term, but the glossary entries do not necessarily appear all collected in one section or chapter. They can be scattered throughout the text. But they are special, as defined by the TT paragraph type.

 

There is actually a solution using cross references, which would be the solution of last resort (if nothing else worked). It’s a bit like what Wikipedia occasionally uses by putting an arrow after a bibliographic reference, to indicate a hyperlink to a web resource. I could mark every source mention with a special character, say “@”, which will be a cross-reference. The above example becomes

 

                                ... coming home last night I saw a *cat@* roaming in the street...

 

The “@” will actually be a cross-reference, which will point to the proper target paragraph (which I will have created the way I want to: by selecting a TT paragraph from a menu using the normal FM UI). I can devise a reference format that actually does not involve the text of the target paragraph (as reference formats usually do, e.g.  with <$paratext>) but just the character “@”.

 

I haven’t actually tried this solution but it should work. However it is not ideal because in this approach only the “@” is clickable (a hyperlink). The reader of my document has to understand that convention and click at exactly the right place. Besides, having those “@” all over the place pollutes the text. Still, I reserve the possibility of using this approach if everything else fails.

 

The crazy approach is different. It does require some manual work: for every “glossary” entry in a paragraph of type TT I will have to insert, above or below, a zombie paragraph, of a paragraph type that I will call ZMB for this discussion. The zombie paragraph contains only the word being defined. So the above glossary example will now contain

 

                cat

cat: a kind of *beast* whose pictures some people have an urge to post on Facebook

 

with the first paragraph of type ZMB and the second one of type TT as above. Now every source mention will be a cross reference, to the ZMB paragraph (not the originally intended one, of type TT, appearing just below) with the format <$paratext>, i.e. it reproduces the paragraph text, in this case “cat”.

 

So this works, at least for the very specific purpose of my text, but I have polluted the glossary with lots of zombie paragraphs – one for each entry. Elementary, my dear Watson: I now define the ZMB paragraph type so that the corresponding paragraphs are invisible. The best (i.e most invisible) way I have found so far is: use White as the font color; use 0 points as line spacing for the paragraph, and use 0 point too for the space before and after each ZMB paragraph; and use the smallest possible font that FrameMaker will accept, which I found to be 2pt. (Any better suggestion?)

 

I also have an auxiliary paragraph type, say ZOMBIE-PREPARATION, with reasonable (black, big enough) font, which I can use for the future ZMB paragraphs when I type them, then change them to ZMB.

 

The net effect on the text is that there will be some invisible paragraphs here and there (in glossary entries), adding a very small amount of line spacing, but it should be hardly noticeable by the document’s reader, and I might even be able to remove it altogether by removing 2pt from the standard above or below paragraph spacing of type TT.

 

I still have to type in all the ZMB paragraphs with the glossary entries. But there are far fewer glossary entries than source mentions. Maybe a couple hundred glossary entries, and thousands of source mentions. For the source mentions, I can just use the beautiful UI mechanism of cross references: select the target file, select the paragraph type (ZMB), scroll to the right term (which will be easy since the text of a ZMB paragraphs is precisely the glossary term), select it.

 

(I still have a small problem with letter-case variants of the source mentions, for example if a sentence start

 

                Cat is not what I would call this particular thing, it looks more like a dog to me.

 

Because of the initial upper-case “C” per the rules of written English I need two ZMB paragraphs in this case, one of “cat” and one for “Cat”. This also adds another 2pt of line spacing. However it is not such a frequent occurrence so I assume I can live with it in practice.)

 

If you are still with me at this point thanks (and admiration) for your patience. Why we have to indulge in such bizarre tricks is left as an exercise – we should just be able to create a hyperlink the way we create a cross-reference, by getting a list of paragraphs from a UI dialog. But since the facility is not there, at least the bizarre trick provides a way to proceed.

 

Thanks for all the comments received.

 

-- Bertrand Meyer

 

 

 

 

 

From: Lin Sims [mailto:ljsims.ml at gmail.com] 
Sent: Wednesday, October 28, 2020 20:56
To: An email list for people using Adobe FrameMaker software. <framers at lists.frameusers.com>
Cc: Bertrand.Meyer at inf.ethz.ch
Subject: Re: [Framers] Basic question: hyperlinks to paragraphs

 

He's already using markers. His issue is that there are thousands of them and he doesn't want to have to manually type everything out everytime he inserts a link to another location in the document. 

 

If I understood him correctly, what he wants is to be able to select which predefined target marker to go to from a drop-down list when inserting the marker to create the hypertext link instead of having to manually type it in each time he inserts the gotolink marker. This would have to be scripted. Neither the Hypertext Marker insert nor the general Marker Insert window provide a drop-down list for anything other than the type of marker or type of Hypertext command to make part of the marker. 

 

I suppose a brute force method would be to create the destination marker first, then find the first instance of the word or term you want to hyperlink to a definition, create your gotolink, copy the word or term including the marker, then do a search for the word or term and replace it with the information on the clipboard. In fact, I think that was the method recommended by Matt Sullivan when he described how to set up special markers for glossary terms and definitions in the article I linked to earlier in the thread. Except in Matt's solution, you can (I think) get it to open a non-modal window with the text of the definition at the spot so the user can just click the link, read the term in the pop-up, and close the pop-up without having to return the the original location in the document because you never left it. Or maybe that was one of Shlomo Perets TimeSavers.

 

On Wed, Oct 28, 2020 at 12:06 PM Wim Hooghwinkel - idtp <wim at idtp.eu <mailto:wim at idtp.eu> > wrote:

Hi Bertrand,

not sure if that will work, but did you try to use markers? Insert a marker (of your own type) at the target location and create a link (hyperlink or cross-ref) to that marker that displays the marker text. Additional benefit is that it will also allow you to create an 'index' of those markers in your publication.

Else, best advise is to contact Rick Quatro and ask him to propose a script that will help you to insert those newlink and gotolink markers in asiple manner. He’s very good at that. A script is an investment, but ROI is very quick.


Vriendelijke groet / Kind regards,

Wim Hooghwinkel


_______________________________________________

This message is from the Framers mailing list

Send messages to framers at lists.frameusers.com <mailto:framers at lists.frameusers.com> 
Visit the list's homepage at  http://www.frameusers.com
Archives located at http://www.mail-archive.com/framers%40lists.frameusers.com/
Subscribe and unsubscribe at http://lists.frameusers.com/listinfo.cgi/framers-frameusers.com
Send administrative questions to listadmin at frameusers.com <mailto:listadmin at frameusers.com> 




 

-- 

Lin Sims



More information about the Framers mailing list