MathGroup Archive 1999

[Date Index] [Thread Index] [Author Index]

Search the Archive

Updating hyperlinks after splitting a notebook

  • To: mathgroup at smc.vnet.net
  • Subject: [mg18375] Updating hyperlinks after splitting a notebook
  • From: Tom Burton <tburton at brahea.com>
  • Date: Wed, 30 Jun 1999 14:13:34 -0400
  • Sender: owner-wri-mathgroup at wolfram.com

When a notebook becomes so large with graphics that navigation and
especially searching is ponderous, I consider splitting the notebook into
several smaller notebooks. The effort needed to restore functionality after
the split has presented a modest potential barrier, tending to keep a
notebook in one piece a little too long.

Recently, as I have become a fan of hyperlinks, this barrier has grown
dramatically: most of the effort to restore functionality consists of
repairing broken hyperlinks. As the list of hyperlinks in a single notebook
becomes hard to scroll in the Create Hyperlink dialog, these same
hyperlinks push me into the barrier.

So I am casting about for an easy way to repair broken links after
splitting up a notebook. I note the simple difference between the
ButtonData of an internal link and those of an external link to a notebook
in the same directory:

internal link               external link
tag                         {nbx, tag}

How about the following algorithm? Does anything like this exist?  Thanks.

Read all notebooks of a given directory into the kernel.

For each notebook, made current one at a time,

  For each hyperlink in the current notebook:

         bbx:ButtonBox[___,ButtonStype->"Hyperlink",___]

    Get the link

         First at Cases[bbx, (ButtonData->link) -> link]

    If the link is a string (just a tag), and
     If the tag is in any CellTags within the current notebook, then
      break to next hyperlink.
    {nbx,tag} = link
    If tag is in any CellTags within 0 or >1 of the open notebooks, 
      then complain and break to the next hyperlink.
    Set nbx to the 1 notebook containing tag.
    Update the ButtonData:

         bbx /. (ButtonData->_) -> (ButtonData->{nbx,tag})


  • Prev by Date: Re: Plot vs FindMinimum
  • Next by Date: [Q] Graphics with 2 Y-axis
  • Previous by thread: Re(2): easiest way to sort a list?
  • Next by thread: [Q] Graphics with 2 Y-axis