Hi John:
Wow! That's quite an impressive workaround! If I hadn't already come
up with one that works exceedingly well, I probably would be using
yours, and lobbying for a change in the document configuration
specifications. As it is, the current specs preclude the use of
bookmarks for cross-references.
The workaround I developed is conceptually very simple, was very easy
to execute, and it was fast. In fact, I will probably use it from now
on. Even if Microsoft fixes the bug, there is still an enormous
user-time-cost built into the current design of the Cross-reference
window -- an un-Mac-like design deficiency that seems to afflict a
great many if not all of Office's dialog boxes and special function
windows; lack of resizability. But I'll get to that later in this
post. First, here's my dirt-simple workaround:
_____________________
1. Move the cursor to the end of the document and pull down the Window
menu to "New Window". You might want to hit the Return key a couple of
times to put some space between the cursor and the end of the
document. The cursor position defines the insertion point in the
procedure that follows.
2. Pull down the Insert menu to "Cross-reference...". When the
Cross-reference window appears, select the "Reference type", select
the referent from "Insert reference to", select the other checkbox
options as desired, and wait until the list of items in the "For which
numbered item" pane has fully loaded. (It's easy to tell when that
happens -- press the Down-arrow key and hold it. If the list hasn't
fully loaded, the highlighting that indicates which item is selected
will try to move down through the list, but it will keep jumping
around violently near the top of the list until it has fully loaded.
After loading is complete, it will begin scrolling smoothly through
the list at a uniform rate.)
3. The top item in the list is selected by default, but if the
selection moved during Step 2 (above) press the Up-arrow key to move
the highlighted selection back to the top item.
4. Press the Enter key once, and the top referent on the list is
inserted as a cross-reference field at the cursor location in the
document.
5. Press the Down-arrow key once, and the highlighted selection moves
down to the second item on the list.
6. Repeat Steps 4 and 5 alternately; Step 4 inserts the
cross-reference field, Step 5 moves the highlighted selection to the
next lower item on the list, repeating Step 4 inserts the
cross-reference field for that referent, repeating Step 5 moves the
highlighted selection to the next lower item on the list...and so on,
until you reach the end of the list. You can develop a rhythm and run
through the list very quickly. I was able to do it very comfortably at
the rate of three keystrokes per second, which inserted three links
per 2 seconds; 90 links in 60 seconds, and I could have done it
faster.
NOTE: Stay in the Cross-reference window for Steps 2 through 6. If you
click outside the window for any reason, the list will reload when you
return to it, and you'll have to wait for that process to complete
before you can select a list item and insert its corresponding
cross-reference field. Anytime you leave the Cross-reference window,
it will always reload when you return.
7. Following the conclusion of Step 6, you will have a solid block of
cross-reference fields all jammed together at the insertion point at
the end of the document, but not to worry; it's not as big or
unmanageable a mess as it first appears. The next step is to separate
the fields so you can access them individually without accidentally
clicking on them and getting whisked away to the corresponding parts
of the document. It's actually pretty easy, and it can be done very
quickly. You can close the Cross-reference window at this point; you
will not need it again for the remainder of the cross-reference
insertion process.
8. Here's an example of the string of characters that showed up in my
document representing all Section 5 heading numbers up to and
including the heading for Section 5.2:
55.15.1.15.1.25.1.2.15.1.2.25.1.35.2...etc.
When you're done with this step, the characters will look like this:
5
5.1
5.1.1
5.1.2
5.1.2.1
5.1.2.2
5.1.3
5.2
NOTE: Actually, they'll be listed separately on their own lines as
shown above, but each one with have the gray highlighting associated
with a Word field, which doesn't show up in this post.
Place the cursor at the head (upper left corner) of the block of
cross-reference fields. You can use the Right-arrow key to scroll over
to the point that divides the first and second fields ("5" and "5.1"),
then hit the Return key, then scroll over to the next point, then hit
the return key... and so on, but I don't recommend doing that. There's
a much easier way.
Instead, just use the same kind of alternating keystroke technique you
used in Step 6, except in this case, you'll alternate between the
Right-arrow key and the Return key. You don't even have to look at the
screen...just concentrate on the rhythm of alternately hitting the
keys (Hey Clive...it's a meditation!)
The reason it works is because Word will not allow you to insert a
line break in the middle of a cross-reference field, so it only
inserts the line break when the cursor is precisely over the dividing
point between two fields. It simply ignores the Return key strokes
that occur when the cursor is inside the field.
Yes...you'll be making some "wasted" Return key strokes, but from my
perspective, "wasted" Return keystrokes are a lot less costly than the
time it was taking me to work under Word's bug. Up to this point in
this workaround process, I now had every heading's cross-reference
field in the document, on a separate line...and I did it in about the
same amount of time (~3.5 minutes) it would have taken to insert about
6 or 7 cross-references while waiting for Word to load the list each
time. That's quite a significant increase in efficiency. But stay with
me on this -- it gets better.
Now that you have the links on separate lines in an easily viewable
vertical list, all that remains is to copy them from that list and
paste them wherever you want them in the document.
NOTE: I had used green highlighting for the heading numbers when I
originally typed them into the text, so they were very easy to find.
9. Pull down the Window menu to New Window, and create as many windows
as you need to show all the cross-reference fields you've just
inserted in sequential order. Resize and tile the windows as needed to
make all the links visible in their own respective windows and still
leave enough room on the screen to display the part of the document in
which you're going to insert the cross-reference fields ("the working
document window"). In the remainder of this procedure, the working
document window is on the left and the tiled windows containing the
cross-references are on the right, and they're all visible. (It helps
if you have a 23" HD Cinema Display; I do, so I was able to fit
everything on the screen at once with some room to spare. )
10. Find the first insertion point and the cross-reference it
specifies in the document window on the left. Then find the
corresponding cross-reference field in the sequential list you've
created in the tiled windows on the right. Since all the fields are
visible and they're all listed sequentially, you can find any field
very quickly by visually scanning the tiled windows that contain them.
11. Once you've located the field you're looking for, place the cursor
in the left margin of the line that contains the link you want to
insert and click the mouse button. The entire line is selected and
highlighted.
NOTE: If your Word
references:Edit options are configured with the
"Include paragraph marks when selecting paragraphs" checkbox checked,
selecting the entire line will also select the paragraph mark, which
will copy and paste with the link. You probably don't want that to
happen, so if your preferences are set that way, you'll need to
unselect the end of the line, which will prevent the paragraph mark
from being copied to the clipboard and pasted into the text. To
unselect the paragraph mark in the highlighted line, press the
Shift+Right-arrow keystroke combination, and the highlighting will be
reduced to include only the cross-reference field.
12. Press Command+C to copy the field (or whichever action you prefer
to execute the Copy command).
13. Move the cursor back to the working document window on the left,
place the cursor at the correct insertion point, and press Command+V
(or your preferred Paste action). The cross-reference field is pasted
into the document at the insertion point. Delete the hard-entered text
entry that originally specified the cross-reference. (Alternatively,
you can click+drag to select the hard-entered text entry before you
execute the Paste command, and the paste will replace the text entry
with the cross-reference field.)
14. Work your way through the document, copying and pasting the fields
as needed until all the text-entry references have been replaced with
cross-reference fields.
_____________________
Now for the part about the un-Mac-like design deficiency that afflicts
Office's dialog boxes and special function windows (like the
Cross-reference window). They're not resizable, and they're too small
to make it efficient to use them. I didn't realize it until I tried
Daiya's suggestion (which originated with Clive, as I understand it)
to use Word 2001 for the cross-reference insertion. I did try it, and
sure enough, it doesn't have the reload-the-list-every-time bug; once
the list items load, they stay loaded. But the list items window is so
painfully small that it's exceedingly difficult and time consuming to
scroll to the exact item you want to select.
The problem was accentuated in Word 2001 because the list doesn't
scroll in real time in correspondence to the movement of the scroll
bar "thumb". That is, you can grab the scroll "thumb" with the cursor
and drag it up and down within the scroll bar, but the list doesn't
move as you drag, so you can't see where you are until you release the
mouse button. Your only other option for navigating the list is to
click+hold on the up or down arrows in the scroll bar ends and wait
for the scrolling to take you where you want to go. Additionally, the
text in which the list items are displayed looks just plain awful (no
Quartz Extreme) in Word 2001. It would drive me nuts trying to find
what I'm looking for in such a tiny viewing area.
The scrolling action in Word 2004/OSX is vastly superior to that in
Word 2001/OS 9, but it still takes an unreasonably long time to
navigate to the desired list item due to the small size of the list
items pane (it only displays 9 items). That's what clued me in to the
fact that a big part of the time-cost in the cross-reference insertion
procedure is the referent selection process. If the window were
resizable, you could make it big enough to be able to view many more
referents at once, making it much easier (and FASTER) to visually scan
the list and make your selection.
Without a resizable window, even if the bug were fixed and the list of
referents stayed loaded, you'd still have to scroll through the list
in that tiny little window. In fact, an associate who's running
WinWord (Word 2003, methinks) said that after each insertion, the list
resets itself to the top if you have clicked anywhere outside the
Cross-reference window -- for example, to select the next insertion
point. So even over on the WinWord side, the process is afflicted by
the way the Cross-reference window is designed, imposing an
unreasonable time-cost on the user.
I haven't done the A-B comparison that it would take to rigorously
quantify the relative time requirements for each procedure (that is,
the time-cost difference between using Word 2001 to insert the links
versus using the workaround I've described above). Frankly, I'm not
inclined to do so. After suffering through the process of using the
minuscule referent list pane that Word's non-resizable windows
provides, I'd much rather use my method. It's simple, fast, and easy.
My recommendation to Microsoft in fixing the bug is to go all the way
to a more user-friendly solution: make the dialog boxes and special
purpose windows resizable, as they are in applications that more
strictly follow the OS X GUI convention. For that matter, the fix
should be applied to provide the same functionality in WinWord for
Windows users. That will make processes like cross-reference
insertion, bookmark selection, and other similar tasks with elements
whose numbers increase in proportion to document size much more
user-friendly, and less costly in the amount of time and tedium
required to execute them.
As for your workaround, despite the fact that the existing document
configuration specifications preclude the use of bookmarks for
cross-references, if I hadn't developed the procedure I've described
above, I probably would have used your workaround, and then attempted
to sell it to the documentation manager.
Personally, though, I have tended to avoid the use of bookmarks in an
application like the one I've described here;they have always been a
bit buggy for me, although that may be more a result of my own
ignorance as to their proper use than of any intrinsic fault in the
bookmark mechanism. In any case, they're not usable unless
Word
references:View is configured to display them, and in a document
as liberally peppered with cross-references as the one I'm currently
working on, the visual noise they impose would be objectionable. Of
course, that's a personal preference, and certainly not a reflection
on their functionality.
Anyhow, thanks for your elegant workaround, John. I will play with it
to ensure that I know how it works in case an application for it crops
up. In a project of this duration and magnitude, it's probable that
your workaround will be very useful for one purpose or another.
Oh...and thanks very much for the suggestion to switch to normal view
to avoid automatic repagination. It's not much of a problem when I'm
working on the DP G5 2.5GHz, but on my PowerBook it can be a downright
nuisance waiting for Word to repaginate.
Best regards,
Vito
John McGhie said:
Hi Vito:
OK, try this:
1) Insert a bookmark at the destination
2) Insert a cross-reference to the bookmark.
I just tried a few of those on a 300-page document, and each insertion takes
about three seconds. Make the bookmark names meaningful (to you) so you can
find them later.
The mechanism is essentially what Word is doing each time you insert a
cross-reference, except that Word has to repaginate the document twice each
time, once to find the destination and insert the (hidden) bookmark, then
again to resolve the cross reference.
If needed, you can quickly make a macro to insert the bookmarks for you. I
have included one below that you can customise. It takes about five seconds
to run on a 300-page document. Hint: If the document is more than 100
pages, switch to Normal View before you run the macro, otherwise Word will
pause to paginate the document each time it inserts a bookmark.
To make the display more meaningful in a long document, include some of the
text of the paragraph in the bookmark name.
Note: If you get a compile error when you paste this in, check that you
have not pasted non-breaking spaces instead of spaces at the beginnings of
lines.
(previous content snipped by Vito)