Indexing with Page Breaks from Quark

I started indexing a book yesterday, and I wanted to work on the text of the document in electronic form, with page breaks that matched those of the galleys, which had already been typeset in QuarkXPress. After a little experimentation, I figured out the following procedure:

1. Ask the typesetter to provide a postscript file, exported from QuarkXPress.

2. Open the postscript file using the free Ghostscript and GSview programs:

http://www.cs.wisc.edu/~ghost/

3. In GSview, click Edit > Text Extract and save the resulting file to the desktop.

4. Open the file in Microsoft Word. Wow! All of the page breaks are exactly where they're supposed to be (inserted as manual page breaks). Of course, formatting has been lost (since this is a text file), but for pure indexing purposes that doesn't matter.

5. Click File > Page Setup > Layout and set paper size to 22 by 22 inches. Why? So Word won't insert any automatic page breaks and thus throw off pagination.

6. Insert a section break (Insert > Break > Odd page) between the book's front matter and chapters to prepare for step 7.

7. Put the cursor in the front matter, click Insert > Page Numbers, click the Format button, and specify a number format of lowercase Roman numeral. Also specify that page numbering should start at page i. Then click OK and click OK again.

8. Put the cursor in the first chapter, after the section break, click Insert > Page Numbers, click the Format button, and specify a number format of lowercase Arabic numbers. Also specify that page numbering should start at page 1. Then click OK and click OK again.

Now, when the cursor is in the front matter, the far left side of Word's status bar will display the correct page number in Roman numerals. When the cursor is in the chapters, the far left side of Word's status bar will display the correct page number in Arabic numbers. And when the index is generated, the page numbers will be Roman or Arabic as required.

After I was finished with all this, I began indexing with pleasure. Now you can too.

_________________________________________

READERS WRITE

After reading the article on pasting tracked revisions (August 11 issue), Francelia Sevin wrote:

"On my Mac in Word 2001, toggling the track changes on/off doesn't work. I still cannot copy and paste text and include the tracked changes. I have upgraded with the latest patches for 2001 and that hasn't made any difference."

I tried this on my Mac with the same result. It seems Word 2001 doesn't support this feature. If you're a Mac user, gentle reader, and know a way around this problem, please let me know.

---------------------------------

William T. Buckley wrote:

"What practical use is there for Word's 'Bar' option in setting tab types. (Please, no jokes about my not knowing uses for a bar tab!) ;~) The option looks very handy if I could think of a use for it, but none comes to mind."

I responded:

To draw a vertical line through the text of your document. 🙂

I found this on Microsoft's site:

"When you set a bar tab stop, a vertical bar line appears where you set the tab stop (you don't need to press the TAB key). A bar tab is similar to strikethrough formatting, but it runs vertically through your paragraph at the location of the bar tab stop. Like other types of tabs, you can set a bar tab stop before or after you type the text of your paragraph."

What that means | is that you could have

some text like | this so you could, say,

compare lines of | poetry or other text.

How about listing foreign language equivalents?

Merci. | Thank you.

Je ne sais pas. | I don't know.

How about drawing T accounts for use in accounting, or for analyzing pros and cons?

_____________________

|
|

|
|

|

Honestly, until your message, I'd never even heard of this feature. 🙂

But maybe it could come in handy.

Many thanks to Francelia and William.

_________________________________________

RESOURCES

Microsoft has created an interesting set of multimedia Word tutorials called "So that's how! Great Word features." Learn about Word's new reading layout view, international characters and symbols, and much more:

http://tinyurl.com/44e2w

Indexing with a Two-Column Concordance, Part 2

In last week's newsletter, I promised to show you the perfect example of when to use a double-column concordance in preparing an index, and an automatic way to create such a concordance. The perfect example is a poetry anthology, but almost any consistently structured compilation of articles or addresses will lend itself to this kind of indexing.

Let's say you've got that poetry anthology in front of you on the screen--"100 Poems to Brighten Your Day." As you look through the anthology, you notice a consistency in the way the poems are laid out:

Title

Author

Poem

For example:

Your Day

Jack M. Lyon

Roses are red;

Violets are blue;

This is a day

especially for you.

How inspiring!

And of course, the anthology was edited by an astute editor (probably you) who used paragraph styles for each text level:

Heading 1 (for the title)

Heading 2 (for the author)

Poem First Line (for the poem's first line)

Since this is a poetry anthology, you'll need to create at least three indexes:

Index of Titles

Index of Authors

Index of First Lines

Let's start with the titles. Since they've been styled as Heading 1, you can easily pull them out to put them in a concordance:

1. Click Edit > Replace.

2. Make sure your cursor is in the Find What box.

3. Click the More button if it's available.

4. Click the Format button.

5. Click Style.

6. Scroll down to Heading 1 and select it.

7. Click the OK button.

8. Move your cursor to the Replace With box.

9. Enter "<^&>" (without the quotation marks). That code in the middle of the angle brackets, ^&, is the "Find What Text" code, which you can learn more about here:

http://lists.topica.com/lists/editorium/read/message.html?mid=1703525514

10. Click the Replace All button.

All of your poem titles should now be enclosed in angle brackets:

Now install my Puller program (use it free for 45 days), which makes it easy to pull delimited items into a separate document:

http://www.editorium.com/puller.htm

Use Puller to pull the items in angle brackets (the poem titles) into a separate file, which will look something like this:

Use Word's Replace feature to find "<" and replace it with nothing, then ">" and replace it with nothing, leaving just the list of titles:

Your Day

The Birds Are Singing

Sunshine and Lollipops

A Smile for You

Now put the titles into a table:

1. Click Edit > Select All.

2. Click Table > Convert > Text to Table.

3. In the dialog box, under "Separate text at," make sure "Paragraphs" is selected. Make sure "Number of columns" is set to 1.

4. Click the OK button.

Your titles will now be inside a single-column table. But this is supposed to be a double-column concordance. Why? You'll see. First, make it so:

1. Put your cursor inside the table.

2. Click Table > Select > Column.

3. Click Edit > Copy.

4. Put your cursor to the right of (and outside) the table's first row. (Just click there with your mouse and make sure nothing is selected. You should see just your regular, thin cursor to the right of the table's top row.)

5. Click Edit > Paste Columns.

There! Two columns! And you'll need two columns, because the second column tells Word how to index what's in the first column. For example, you're going to want to lose those initial articles:

The Birds Are Singing Birds Are Singing

A Smile for You Smile for You

Thus, in the finished index, the titles will look like this:

Birds Are Singing

Smile for You

Sunshine and Lollipops

Your Day

Here's an easy way to get rid of those initial articles:

1. Select the second column by putting your cursor into it and clicking Table > Select > Column.

2. Copy the column (Edit > Copy).

3. Create a new document (CTRL + N).

4. Paste the column into it (Edit > Paste).

5. Select the column in the new document.

6. Click Table > Convert > Table to Text.

7. Click the OK button.

8. For each article you want to get rid of ("The," "A," "An," and so on), search for a paragraph return followed by the article (^pThe ) and replace it with a carriage return (^p). This will miss an article on the first item in your list, so you'll need to remove that one by hand.

9. Select your edited list.

10. Convert the list back to a table.

11. Copy the single-column table.

12. Switch back to your document with the double-column concordance.

13. Select the second column.

14. Paste the edited column over the selected column.

15. Save your concordance with a name like "Title Concordance."

Next, you'll need to make a concordance of authors. Just follow the instructions above, searching for Heading 2 rather than heading 1. You'll end up with a double-column table that looks like this:

Jack M. Lyon Jack M. Lyon

Ima Happy Ima Happy

Sonny Day Sonny Day

What you really want, however, is a concordance that looks like this:

Jack M. Lyon Lyon, Jack M.

Ima Happy Happy, Ima

Sonny Day Day, Sonny

The easiest way to get one is to follow steps 1 through 7 in the instructions immediately above. That will give you a list of names, not in a table, and you can use my free NameSwapper macro to transpose the names with last name first:

http://www.editorium.com/freebies.htm

To get your list of names back into the concordance, follow steps 9 through 14 above. Then save your concordance with a name like "Author Concordance."

You can repeat all of this for the index of first lines, although you may not need to change anything in that second column. Up to you!

When you're finished, create your index, using each concordance to automatically mark index entries:

1. Click Insert > Index and Tables > Index > AutoMark. (In Word 2002 and

later, click Insert > Reference > Index and Tables > Index > Mark

Entry.)

2. Navigate to your concordance file and click it to select it.

3. Click the Open button and wait while Word marks all of those index

entries.

4. Generate your index as explained here:

http://www.topica.com/lists/editorium/read/message.html?mid=1714065147

If you're doing a poetry anthology, you'll probably also need an index of topics. Unfortunately, there's no good way to automate that. Instead, you'll need to use your indexer's brain. But maybe the techniques explained in this article will help when you do have items that can be indexed automatically.

_________________________________________

READERS WRITE

Editing and Microsoft Word expert Geoff Hart wrote to suggest that I might want to make a further clarification about what a concordance is. When I say concordance, I'm not talking about a back-of-the-book index, such as an index of topics in a poetry anthology or an index of subjects in a textbook. In my opinion, such an index can be created only by a human mind. As Geoff wrote:

"An indexer examines each occurrence of a word and communicates why that occurrence is important by providing context. For example, 'Washington, George' (in a concordance) becomes "Washington, George--birth of, --death of, --election of" and so on in an index. Similarly, an indexer provides cross-references (e.g., President: see Washington), synonyms (Walstein: see Washington -- here, a fictitious example assuming that George Walstein changed his name to George Washington to make it more likely he'd be elected ), and so on. The index is clearly more useful, but is also enormously more difficult to create.

"I'm a half-decent indexer, but stand in awe of the real pros like Lori Lathrop, who provide an almost magical means of access to a large book. A concordance can help a professional indexer in their work, but it can't take the place of an index, and an amateur shouldn't even attempt this task without doing some study to learn how it's done. The Chicago Manual of Style provides a decent introduction to indexing."

In last week's newsletter, I mentioned two definitions for "concordance":

1. A list of all words in a document, to be used as an aid in editing.

2. A list of words used to create an index, as explained in today's article.

Geoff is suggesting one more definition:

3. A list of every word in a document and the *pages* on which that word appears.

This kind of concordance is most commonly seen in the back of certain editions of the Bible, making it possible for readers to look up any word used in the Bible and find the places in the text where that word is used. Again, let me emphasize that this is not the same as a back-of-the-book index. A concordance can be created by a computer; an index can be created only by a human mind.

Of course, the human mind can use a computer to *help* with the creation of an index, and I'm pleased to announce that the indexing program I've been working on for more than a year is nearly ready for release. I'll be making an "official" announcement and description of the program soon in this newsletter, so stay tuned. In the meantime, I'll just mention that the program is a Word add-in that allows you to select specific document text from *here* to *there*; press a key to create an empty row in a Word table in an accompanying document; type your index heading, subheading, cross-reference, and so on into the row; rinse and repeat until your index is finished; edit as needed; automatically embed Word index entries based on the table you've created; and finally generate the index and page numbers (locators), with the option to sort word by word or *letter by letter.* Index subheadings can also be sorted *by page.* You can see all of your entries at all times in the index table; no more indexing in the dark, and no more working directly with embedded commands. If you like, once the table has been created, you can import it into Cindex or other dedicated indexing programs for final processing, *without* having to type in page numbers. I've tried to build in plenty of power and flexibility for all. The program has many more features, and I'll be explaining what those are in the near future. *If you have suggestions* about what you'd like to see in the program, *please* let me know, and soon!

mailto:editor [at symbol] editorium.com

Many thanks to Geoff for his clarifying comments and for the opportunity to plug my forthcoming program.

_________________________________________

RESOURCES

I recently learned about DesignGeek, which is a newsletter sort of like Editorium Update but written for people who inhabit that alternative universe of designers! If you spend part (or all) of your time in that universe, you'll definitely want to check out DesignGeek, which offers the same kind of useful, gritty, real-life tips and instruction you enjoy (I hope) in Editorium Update:

http://senecadesign.com/tips-pubs/designgeek.html

The Web site says:

"DesignGeek is a free e-mail newsletter written by Anne-Marie 'HerGeekness' Concepcion, president of Seneca Design & Training. Coming at you every couple weeks or so, each issue contains about a page's worth of her newest finds: advanced tips, techniques, links, and late-breaking news for Mac and PC designers who use the world's coolest software: InDesign, QuarkXPress, Photoshop, Acrobat, Illustrator, GoLive, Dreamweaver and more.

As I started to explore this site, I was blown away by how much Anne-Marie knows that I don't. There's stuff here I've never even heard of. Pixel fonts? Cool! "HerGeekness" indeed! I'm going to be reading and learning here for a long time to come. Enjoy!

Indexing with a Two-Column Concordance

Recent articles in this newsletter have discussed editing with a concordance, which may be confusing for some readers. Let me explain. In those articles, "concordance" really means "word list." It's simply a list of all the words in a document, and it can come in pretty handy in editing.

Experienced Word users know, however, that a concordance is also a list of words used to create an index. You can learn more in my article here:

http://lists.topica.com/lists/editorium/read/message.html?mid=1714146574

That article explains how to use a one-column concordance, but it's also possible to use a two-column concordance to create an index in a Word document. Why would that be useful? Because it tells Word to index certain words and phrases differently than they appear in the text.

Let's say your text includes a sentence like this:

"George Washington was the first president of the United States of America."

You can create a concordance entry that looks like this:

George Washington Washington, George

Then, when Word comes to the words "George Washington" in your document, it will create an index entry for "Washington, George." And it will do that for each instance of "George Washington" in your document.

To create a two-column concordance:

1. Create a new document (CTRL + N).

2. Click Table > Insert > Table.

3. Under "Number of columns," enter 2.

4. Under "Number of rows," enter 1.

5. Click the OK button to create your table.

6. In the table, enter your first term and its replacement. For example, in the first column you could enter "George Washington," and in the second column you could enter "Washington, George." (Don't include the quotation marks.)

7. Press the Tab key to create a new row.

8. Enter more terms and replacements and rows as needed.

9. Save your concordance.

When you're finished, create your index:

1. Switch to your document.

2. Click Insert > Index and Tables > Index > AutoMark. (In Word 2002 and later, click Insert > Reference > Index and Tables > Index > Mark Entry.)

3. Navigate to your concordance file and click it to select it.

4. Click the Open button and wait while Word marks all of those index entries.

5. Generate your index as explained here:

http://www.topica.com/lists/editorium/read/message.html?mid=1714065147

If you're a professional indexer, you probably avoid indexing in this way, although Steve Hudson's Indexer program can help a lot with creating embedded indexes in Word:

http://www.geocities.com/word_heretic/Indexing.html

Next week, however, I'll show you the perfect example of when to use a double-column concordance in preparing an index--and an automatic way to create it.

Thanks to Mark Taylor for suggesting this article.

_________________________________________

READERS WRITE

Mark Taylor wrote:

"Using a concordance table allows you to index using an 'alias.' A table also allows you to index multiple instances of a word, regardless of capitalization. For example, you could find Delaware and DELAWARE in the same document, but both would be a separate entry because the concordance is case sensitive. Using a concordance table gives you a simple workaround to this problem. You could force the index to have both entries found under the heading Delaware, or under DELAWARE."

----------------------------------

Last week's newsletter included a macro to count revised words in a Word document:

http://lists.topica.com/lists/editorium/read/message.html?mid=1717164663 (scroll down to the Readers Write column)

After looking through the macro (which included the line "For r = 1 To RevCount"), Wallace Sagendorph wrote, "What does that 'r' stand for, anyway?"

I responded:

It doesn't really stand for anything. It's just an incremental counter. Here's how it works:

RevCount = ActiveDocument.Revisions.Count

That counts the number of revisions in the active document and stores the count in a variable named RevCount. (Remember X in algebra? That's all a variable is; it's a placeholder for some number.)

Then we have this:

For r = 1 To RevCount

(Something happens here)

Next r

That says to Word, "Starting with the number 1, do (something) however many times RevCount is."

"Next r" just increments r by 1.

So, let's say RevCount = 3, and the (something) was "Insert 'hello' into my document." The macro would insert this:

hello

Then it would make r become 2 instead of 1 (Next r).

Then it would insert this:

hello

Then it would make r become 3 instead of 2 (Next r).

Then it would insert this:

hello

When r got to 4, the macro would stop, because 4 is one more than Revcount (3), and you'd have something like this in your document:

hello

hello

hello

----------------------------------

Paul Robinson wrote:

"I've just got your update. It reminded me that I've been meaning to get in touch to thank you properly for the revisions-counting macro. I'm very grateful for your help.

"The macro takes a bit of getting used to. I find it takes an awfully long time to count the revisions in 5-10,000-word documents. In fact, so long, that at first I thought it wasn't working--one really should go and make a cup of tea and leave the computer to itself! This might be worth mentioning in the update."

I responded, "Yes, and I don't have a way around this--other than get a faster computer. 🙂 I've made the macro as efficient as I know how."

If you, gentle reader, know how to speed this up, I'd love to hear from you.

----------------------------------

Bill Rubidge wrote:

It's a funny coincidence about your macro to count revisions. I have been tinkering with this a little myself, and had put together the following macro. It hasn't been optimized at all, in part because I'm still thinking about how to use it to quantify the degree of revision.

For example, I would consider replacing one word with another, in the same position, to be a very minor revision. A letter change within a word (colour to color) even more minor. But if a revision is long enough (X characters) to indicate a new sentence, that would be an indicator to my client that I had done more work.

The one weakness of the word revisions tracking tool is that it does not allow us to track a different kind of revision--where text is simply moved from one place to another in a document. (DeltaView from WorkShare can do this for you, but the license is designed for large organizations, so the tool is typically used by law firms. And I don't know whether that "moved" information would be accessible as a count, or through VBA.)

Anyway, as a work in process, here's my draft macro.

[If you don't know how to use such macros, you can learn how here:

http://lists.topica.com/lists/editorium/read/message.html?mid=1706922855.]


Sub CountRevs()
Dim intWordCount As Integer
intWordCount = ActiveDocument.Words.Count
Dim intRevCount As Integer
intRevCount = ActiveDocument.Revisions.Count
If intRevCount = 0 Then
MsgBox ("This document has no revisions.")
Exit Sub
End If
Dim intCounter As Integer
intCounter = 1
Dim intInsertionCount As Integer
intInsertionCount = 0
Dim intInsertionLongestLen As Integer
intInsertionLongestLen = 0
Dim intDeletionCount As Integer
intDeletionCount = 0
Dim intDeletionLongestLen As Integer
intDeletionLongestLen = 0
Dim intOtherRevCount As Integer
intOtherRevCount = 0
Do While intCounter < intRevCount + 1
If ActiveDocument.Revisions(intCounter).Type = _
wdRevisionInsert Then
intInsertionCount = intInsertionCount + 1
If Len(ActiveDocument.Revisions(intCounter).Range) > _
intInsertionLongestLen Then
intInsertionLongestLen = _
Len(ActiveDocument.Revisions(intCounter).Range)
End If
Else
If ActiveDocument.Revisions(intCounter).Type = _
wdRevisionDelete Then
intDeletionCount = intDeletionCount + 1
If Len(ActiveDocument.Revisions(intCounter).Range) > _
intDeletionLongestLen Then
intDeletionLongestLen = _
Len(ActiveDocument.Revisions(intCounter).Range)
End If
Else
intOtherRevCount = intOtherRevCount + 1
End If
End If
intCounter = intCounter + 1
Loop
MsgBox ("Results of Revision Inventory: " & vbCrLf & _
"- " & intWordCount & _
" total words in the document (simple count)." & _
vbCrLf & "- " & intInsertionCount & _
" insertions, and longest insertion has " & _
intInsertionLongestLen & " characters." & _
vbCrLf & "- " & intDeletionCount & _
" deletions, and longest deletion has " & _
intDeletionLongestLen & " characters." & _
vbCrLf & "- " & intOtherRevCount & _
" other revisions (might be formatting, etc.).")
End Sub

Many thanks to Mark, Wallace, Paul, and Bill for their terrific comments and help.

Page Down in Synch

Working on an index this week, I needed to ensure that pagination of the document I was indexing matched another document in which pagination had already been set. Because of the complexity of the material, I had to do this manually and visually, paging down in document 1, switching to document 2, paging down again, and then switching back to document 1. What a pain! It wasn't long before I found myself writing a macro to move down a page in both documents at once. Here it is, short but sweet:

'THE MACRO STARTS HERE
Sub PageDownInSynch()
Documents(2).Activate
Selection.GoTo What:=wdGoToPage
Documents(1).Activate
Selection.GoTo What:=wdGoToPage
End Sub
'THE MACRO ENDS HERE

If you don't know how to use macros like that one, you can learn how here:

For the macro to work, you must have two documents open in Word at the same time, and the process works best if you've sized and arranged the two documents vertically side by side. (Our Editor's ToolKit program includes an "Arrange Documents" macro that will do that for you instantly and automatically.)

For best results, assign the macro to a keyboard combination so you can quickly run it over and over with the touch of a key. You can learn how to do that here:

http://www.topica.com/lists/editorium/read/message.html?mid=1713088939

Now you can page through your documents, adjusting pagination as needed with manual page breaks (CTRL + ENTER). You'll probably find other uses for the macro as well. Enjoy!

_________________________________________

READERS WRITE

William T. Buckley wrote, "This is not a huge issue, but it does come up once in a while, especially in limited-space conditions. How do I produce a circled-c 'circa' sign or symbol, not to be confused with a (c) copyright symbol? I've looked at several grids and character maps, and don't find anything like what I need."

I was unable to find such a character, even in Unicode fonts. Do you, gentle reader, have an answer?

Preston Earle wrote, "Thanks for the improved Title Case macro. Is there a way to modify the macro such that it ignores a list of all-caps words like USA, NASA, MS (as in MS Word), and, perhaps, state abbreviations?"

I've now modified the macro to do this. Here's the new version:


'MACRO BEGINS HERE
Sub TitleCaseHeadings()
'Created by Jack M. Lyon
'
For h = 1 To 9
Selection.HomeKey Unit:=wdStory
Selection.Find.ClearFormatting
myHeading$ = "Heading" + Str(h)
Selection.Find.Style = ActiveDocument.Styles(myHeading$)
With Selection.Find
.Text = ""
.Replacement.Text = ""
.Forward = True
.Wrap = wdStop
.Format = True
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute
While Selection.Find.Found = True
Selection.Range.Case = wdTitleWord
For Each wrd In Selection.Range.Words
Select Case Trim(wrd)
Case "A", "An", "As", "At", "And", "But", _
"By", "For", "From", "In", "Into", "Of", _
"On", "Or", "Over", "The", "Through", _
"To", "Under", "Unto", "With"
wrd.Case = wdLowerCase
Case "Usa", "Nasa", "Usda", "Ibm", "Nato"
wrd.Case = wdUpperCase   End Select
Next wrd
wrdCount = Selection.Range.Words.Count
Selection.Range.Words(1).Case = wdTitleWord
Selection.Range.Words(wrdCount - 1).Case = wdTitleWord
strLength = Selection.Range.Characters.Count
For i = 1 To strLength
If Selection.Range.Characters(i) = ":" Then
Selection.Range.Characters(i + 2).Case = wdTitleWord
End If
Next i
Selection.Find.Execute
Wend
Next h
MsgBox "Finished!", , "Title Case Headings"
End Sub
'MACRO ENDS HERE

The line that makes the difference is this one:


Case "Usa", "Nasa", "Usda", "Ibm", "Nato"

Feel free to modify that line to suit your needs. The items I've included are just examples. Notice, though, that for the macro to work, you must type your items not in all caps (USA) but in title case (Usa). That's because the macro has already put the whole *line* in title case, so you're now specifying words in title case that you want to be in all caps.

Many thanks for the help, questions, and suggestions.

_________________________________________

RESOURCES

SoftSnow offers some very interesting software that may come in handy if you're involved in electronic publishing or converting documents to HTML. Book Proofer and HTML Book Fixer look especially interesting:

http://www.softsnow.biz/index.shtml

Indexing in the Dark

Microsoft Word uses what's known among professional indexers as "embedded indexing." That means the index entries are placed as codes in the text of the document being indexed. Then, later, the codes are used to generate the index automatically. (You can learn more about using Word's indexing features by searching for "Index" in Word's Help file.)

Embedded indexing offers one big advantage over traditional indexing: if your pagination changes (for whatever reason), you can easily regenerate the index with fresh, new page numbers for all the entries.

But embedded indexing also has a big *disadvantage* over traditional indexing: there's no way to see your entries in alphabetical order or even in one place, so it's like working in the dark. In books with many pages (the kind I tend to get), this is a real problem. For example, I may make an entry for "Gandhi, Mohandas" on page 300, not remembering my earlier entry for "Gandhi, Mahatma" on page 30. That means my index will need lots of editing after it's been generated.

Until I release my super-duper indexing program (patience, patience), you can alleviate the problem somewhat by opening your document in two windows at once, scrolling to the bottom of the second window, generating your index, and using the index for reference as you create more entries in the first window. Here's the procedure:

1. Open the document you want to index.

2. Place your cursor in some text where you want to insert an index entry.

3. Click Insert > Index and Tables > Index > Mark Entry. (In Word 2002, click Insert > Reference > Index and Tables > Index > Mark Entry.)

4. Type in your main entry, a subentry, and any other information you want to include.

5. Click the Mark button. If you like, you can enter more index entries for the same text selection, clicking the Mark button for each one. When you're finished, click the Close button.

6. Repeat steps 2 through 5 to create a few additional entries.

7. Open your document in a new window by clicking Window > New Window.

8. Click Window > Arrange All to put one Window at the top of your screen and the other at the bottom. If you have our Editor's ToolKit program, click Windows > Arrange Documents to place the windows side by side--or arrange them that way by hand.

9. Place your cursor in the second window and press CTRL + END to go to the end of the document.

10. Click Insert > Index and Tables > Index > OK to generate the (unfinished) index. (In Word 2002, click Insert > Reference > Index and Tables > Index > OK.)

11. Place your cursor in the first window and insert some more index entries.

12. Go back to the second window and update the index (so you can see your new entries in place) by placing your cursor in the index, clicking the right mouse button, and clicking "Update Field." On a big book with lots of entries, this may take several seconds. (On my not-so-fast computer, a 500-page document with 2,400 entries took 45 seconds to update.)

13. Repeat steps 11 and 12 as needed.

This is far from being the perfect solution to the problems of embedded indexing, but at least it will keep you from having to work completely in the dark.

If you like the idea of automatically arranging windows side by side, you can learn more about Editor's ToolKit here:

http://www.editorium.com/14857.htm

_________________________________________

READERS WRITE

Word guru Steve Hudson sent some useful tips for indexing with a concordance. Thanks, Steve!

Ya know Jack over at The Editorium, right? Well he and I have two completely different approaches to indexing. Yet some of the fringe bits are compatible. However, we both get the job done.

He is making tools for helping hand-build an index. I am making tools for helping clean up a concordance approach. Neither does the job properly without a skilled hand guiding them.

That having been said, naturally I have a heretical stance on the whole thing. This is an abridged and appended version of a longer yack I had with a writer up in the mountains last weekend. She is working on cleaning up my Word Spellbook. I've barely started indexing because there is more dump left. This is also the exact same issue I face doing up development documentation: there is always more to add, and that added stuff needs to be indexed like the old stuff.

Quicker, Easier Indexing by Subtraction

or

How to Use a Concordance File and Still Produce a Decent Index

or

The Heretic's Hack 'n' Slash Method of Indexing

Note key terms on the way by indexing them. It's just as easy to mark all as to mark one. Keep on developing away. Time for a minor, internal release. Update yer dynamic index. Copy it to a new doc, flatten it with ctrl+shift+f9 and be clever with find and replace wildcards to blow away numbering, leaving terms ready for use in a concordance file. This then re-performs "mark all" on all your entries.

This works great for getting a good start together. First you review for addition. Get all new terms in there. Either index them all or add them to the concordance. Do this until you are satisfied all key terms have been identified. Search out used synonyms and either kill them or add them to the index. Etc. Hunter-gatherer mode.

Then you review by subtraction, accountancy-management style. If it ain't important, slash it from your budget. During your passes, you marked separate instances of your word stems:

Finding

Find

Finder

Found

Search

Searching

Time to rationalise, quickly. Use find and replace to do the dirty work for you el pronto! I am planning to help this part with a macro to do stem matching and an interface for hand-matching synonyms and keeping that information in select peer-shared databases. Technically speaking, you can insert HERETIC-NOT-nnnnn bookmarks with the same range as spurious concordance artefacts for future proofing, and auto-expand multiple similar references based on a sliding log scale of the distance of the inference--but that's a while off yet.

This leaves you with a poor index. Now you do the stuff that good "hand" indexers do as part of their addition process that you've missed, which is pretty simple by now. Simply scan through the text looking at your index field placements. Forget the words themselves; we're beyond words now, we're being artistic.

Let's imagine that every major subject in the index is a colour. If it's a small range, it's a saturated strong colour; if it's a large range, it's pale. Synonyms are varying shades of that colour. This is badly implemented by a simple macro I wrote ages ago to highlight index entries. (Highlight doesn't have a custom color range.)

If I look at a document from a chapter perspective, I see a rainbow of the base colours with colour boundaries being clearly defined. I zoom in to section level. I see the base colour for that chapter and some interesting hues from cross-over colours where index entries straddle colour boundaries for their multiple relationships. Thickens the spectrum right out for that colour. Some sparkling of other colours is also starting to show.

I zoom in to topic level. Surprisingly at this level, from what we've seen above, the base hue is quite pale. A kaleidoscope of colours of all shades is present. Well, at least it SHOULD be, but it probably isn't if we've just finished the sluggo approach I outlined.

What you will have is lots of strong shades and no pale ones. So, we look at the patterns in front of us. Seas of white are either bad and need rectifying or they are long references or graphical content.

Pale shades should feature regularly and will generally be of the hue of the section. However, there should be patches of pale contrasting colour as well, otherwise our index is just a TOC and is useless. A tint of every colour should be represented, somehow, everywhere in a section.

If you see clusters of the strong colours, you need to smudge them and make them paler. Don't let areas of the same shade sit beside each other; make them paler and covering the whole area.

On a real-world level this means looking behind the words still for meta-concepts that flow from areas as well as ensuring your master : slave pairings are suitable and a good whack of 'em represented richly.

Indeed, it is possible even to try a network theory approach. The words themselves are scale free, but we don't index them all. Major word hubs are trivials. We try and deal with any minor hubs by clever document structures (TOC) rather than the index, yet still have power terms with many sub-entries. The index picks up the lesser nodes of interest. Log(references) x log(incidences) wouldn't be a straight line. References x incidences would be closer to a flat line. I'm sure there's an existing work that's been done on it somewhere 🙂

_________________________________________

RESOURCES

After reading today's article, you may want to know more about where to get help with embedded indexing in Word. If so, check out the WordIndexers discussion group. The group description reads, "Indexers who use Word for embedded indexing will find support, tips, tricks, and a safe place to scream in frustration."

http://groups.yahoo.com/group/WordIndexers/

Automated Letter-by-Letter Index Sorting

Last week's newsletter explained how to sort Word's index entries letter by letter rather than word by word:

Using "Found" Macros

But it didn't explain how to do it in an automated way. So here's an automated way, using wildcard Find and Replace. You can learn more about using wildcards in some of our past newsletters:

http://www.topica.com/lists/editorium/read/message.html?mid=1705963026

http://www.topica.com/lists/editorium/read/message.html?mid=1706069286

http://www.topica.com/lists/editorium/read/message.html?mid=1706069286

http://www.topica.com/lists/editorium/read/message.html?mid=1706069286

http://www.topica.com/lists/editorium/read/message.html?mid=1706365638

http://www.topica.com/lists/editorium/read/message.html?mid=1706458823

Here's the procedure, which you can record as a macro for future use. Or, better yet, just use the prerecorded macro I've included at the end of this article. Work through the procedure if you want to know more about using complicated searches, or if you just want to see how my devious little mind works. (There's probably a better way to do all this using Visual Basic for Applications, but that's a subject for another day.)

1. Make sure your index entries are visible by showing hidden text (Tools > Options > View > Hidden text).

2. Find the index entries and replace them with themselves colored as, say, plum, so your Find and Replace won't move across entry borders later:

Find What:

(XE "*")

Replace With:

1 (formatted as plum)

Use Wildcards:

Checked

3. Replace escaped colons and quotation marks with arbitrary symbols to be changed back later ("escaped" means they have a backslash in front of them, telling Word to treat them as characters, which is how you can use colons and quotation marks in your index entries!):

Find What:

:

Replace With:

&&&

Use Wildcards:

Unchecked

Find What:

"

Replace With:

@@@

Use Wildcards:

Unchecked

4. Put a colon after main-only (but actually, after all) entries:

Find What:

(XE "*)(")

Replace With:

1:2

Use Wildcards:

Checked

5. Find plum-colored, multiple-word index entries and enter semicolon entries, going from three spaces to one space, which ought to be enough for anybody (and besides, Word can only handle up to five "Find What Expression" wildcards):

Find What:

(XE ")([! :]@) ([! :]@) ([! :]@) ([! :]@): (formatted as plum)

Replace With:

12 3 4 5;2345:

Use Wildcards:

Checked

Find What:

(XE ")([! :]@) ([! :]@) ([! :]@): (formatted as plum)

Replace With:

12 3 4;234:

Use Wildcards:

Checked

Find What:

(XE ")([! :]@) ([! :]@): (formatted as plum)

Replace With:

12 3;23:

Use Wildcards:

Checked

6. Clean up colons at ends of entries:

Find What:

(XE "*):(") (formatted as plum)

Replace With:

12 (formatted as Automatic, which gets rid of all plum)

Use Wildcards:

Checked

7. Restore escaped colons and quotation marks, if any:

Find What:

&&&

Replace With:

:

Use Wildcards:

Unchecked

Find What:

@@@

Replace With:

"

Use Wildcards:

Unchecked

Now move to the bottom of your document and have Word generate your index (Insert > Index and Tables > Index). Well, look at that: The entries are sorted letter by letter. Neat!

If you want to work manually, you can insert a semicolon and alternate spelling after a main index entry to force Word to sort in any way you like. For example, let's say you've got some numbers in your index, ordered like this:

8123

835

86

Ordinarily, that's how they'd sort. But if you edit your index entries like this--

{XE "835;0835"}

{XE "86;0086"}

{XE "8123;8123"}

--you'll make them sort like this:

86

835

8123

If you really wanted to, you could even do something weird like this--

{XE "Zebra;1"}

--and force "Zebra" to the top of your index.

Pretty handy, no? At any rate, you now have an automated way to sort Word's index entries letter by letter. Enjoy!

Here's the prerecorded macro to make index entries sort letter by letter. If you don't know how to use such macros, you can find out here.

'THE MACRO STARTS HERE
Sub IndexEntriesLetterByLetter()
Selection.HomeKey Unit:=wdStory
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
Selection.Find.Replacement.Font.Color = wdColorPlum
With Selection.Find
.Text = "(XE "")([! :]@) ([! :]@):"
.Replacement.Text = "12 3;23:"
.Forward = True
.Wrap = wdFindContinue
.Format = True
.MatchCase = False
.MatchWholeWord = False
.MatchAllWordForms = False
.MatchSoundsLike = False
.MatchWildcards = True
End With
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
Selection.Find.Replacement.Font.Color = wdColorPlum
With Selection.Find
.Text = "(XE ""*"")"
.Replacement.Text = "1"
.Forward = True
.Wrap = wdFindContinue
.Format = True
.MatchCase = False
.MatchWholeWord = False
.MatchAllWordForms = False
.MatchSoundsLike = False
.MatchWildcards = True
End With
Selection.Find.Execute Replace:=wdReplaceAll
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = ":"
.Replacement.Text = "&&&"
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute Replace:=wdReplaceAll
With Selection.Find
.Text = """"
.Replacement.Text = "@@@"
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute Replace:=wdReplaceAll
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = "(XE ""*)("")"
.Replacement.Text = "1:2"
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchAllWordForms = False
.MatchSoundsLike = False
.MatchWildcards = True
End With
Selection.Find.Execute Replace:=wdReplaceAll
Selection.Find.ClearFormatting
Selection.Find.Font.Color = wdColorPlum
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = "(XE "")([! :]@) ([! :]@) ([! :]@) ([! :]@):"
.Replacement.Text = "12 3 4 5;2345:"
.Forward = True
.Wrap = wdFindContinue
.Format = True
.MatchCase = False
.MatchWholeWord = False
.MatchAllWordForms = False
.MatchSoundsLike = False
.MatchWildcards = True
End With
Selection.Find.Execute Replace:=wdReplaceAll
Selection.Find.ClearFormatting
Selection.Find.Font.Color = wdColorPlum
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = "(XE "")([! :]@) ([! :]@) ([! :]@):"
.Replacement.Text = "12 3 4;234:"
.Forward = True
.Wrap = wdFindContinue
.Format = True
.MatchCase = False
.MatchWholeWord = False
.MatchAllWordForms = False
.MatchSoundsLike = False
.MatchWildcards = True
End With
Selection.Find.Execute Replace:=wdReplaceAll
Selection.Find.ClearFormatting
Selection.Find.Font.Color = wdColorPlum
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = "(XE "")([! :]@) ([! :]@):"
.Replacement.Text = "12 3;23:"
.Forward = True
.Wrap = wdFindContinue
.Format = True
.MatchCase = False
.MatchWholeWord = False
.MatchAllWordForms = False
.MatchSoundsLike = False
.MatchWildcards = True
End With
Selection.Find.Execute Replace:=wdReplaceAll
Selection.Find.ClearFormatting
Selection.Find.Font.Color = wdColorPlum
Selection.Find.Replacement.ClearFormatting
Selection.Find.Replacement.Font.Color = wdColorAutomatic
With Selection.Find
.Text = "(XE ""*):("")"
.Replacement.Text = "12"
.Forward = True
.Wrap = wdFindContinue
.Format = True
.MatchCase = False
.MatchWholeWord = False
.MatchAllWordForms = False
.MatchSoundsLike = False
.MatchWildcards = True
End With
Selection.Find.Execute Replace:=wdReplaceAll
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = "(XE ""*):("")"
.Replacement.Text = "12"
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = "&&&"
.Replacement.Text = ":"
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute Replace:=wdReplaceAll
With Selection.Find
.Text = "@@@"
.Replacement.Text = """"
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute Replace:=wdReplaceAll
End Sub
'THE MACRO ENDS HERE

_________________________________________

READERS WRITE

The newsletter for July 31 explained how to make punctuation easier to see by formatting it as big, bold, and red; the following newsletter offered some reader tips on doing so; and last week's newsletter included a terrific macro by Phil Rabichow to automate the process.

This week, Steve Hudson provides a similar macro as an exercise in Visual Basic programming (and of course, it's useful, too!). It's a toggle, so you'll probably want to put the subroutine named SomeToolbarNameToggleBigPunctuation() on a toolbar button for easy access. You can learn how to do this here:

http://www.topica.com/lists/editorium/read/message.html?mid=1707286867

As you look through the macro, pay particular attention to Steve's comments, which explain what's going on. The macro is an excellent example of VBA, including find loops, wildcard matching, range objects, optional parameters, design analysis, and much more. Actually, the whole macro has many left-of-center concepts--for example, a Find that can return nothing yet still not have finished (it picks up the Chr$(7) that marks a table start, which can't be included in the wildcard entry). The macro also nicely changes the cursor and screen updating, and it backs out formatting changes. Steve is a master at this kind of stuff, so get ready to learn something. And why not contact Steve to take care of your custom programming needs?

By the way, you'll note Steve's humor throughout. Here is Steve's commentary, edited slightly by me to fit the context of this newsletter:

The past newsletters found and formatted punctuation by inclusion, which rules out Unicode and the like. So I figured a macro would be better with punctuation by exclusion in order to show up all sorts of strange dweebs.

The second problem was your suggestion to create a temporary style that mucks my document up with no subsequent hint of destruction.

The third was "How do I reverse this?" If I have a formula in character styling and another elsewhere in terminal screen, I can't find this style and kill it dead with a known something else. So I have to transpose my edits to have a safe working practice. Ack.

The fourth problem was not acknowledging No Proofing on styles.

So the first one is easy enough, we simply start the square brackets formula for the find with a ! and then what we are not interested in. Thus the string for a trivial solution is [!A-Za-z0-9^160]. Note the ^160 for the nonbreaking space; Word honours the ole caret at a higher priority than anything else. Basically, this finds anything *except* a letter, a number, or a nonbreaking space, but I've added additional characters in the macro itself.

The second is also easy. We all use STYLES like good little folk, so let's keep those in place and add--oooo--MANUAL FORMATTING. We can hunt it down and undo it easy enough later by resetting that range to its underlying style again, so it's a temporary aberration for our temporary aberration. That's the third taken care of as well.

Now, the fourth and last--is there any way we can tell the Find to do only those styles with proofing set? Err, no. So we have to check this ourselves manually. 🙁 Word's find falls down spectacularly with stuff like this. Easy enough, and should be faster as we are doing less styling work, which is expensive.

Now some little style notes--I prefer to use ranges and let the users have their selection object. It may be faster running selection.finds, dunno, duncare 🙂 It makes the resulting code smaller and easier to read and allows me sick puns--the last being the most important reason of course. What's the use of knowing all this junk if you can't have fun with it, I say. I know that some folks hate nonstandard variable naming, but I like code that is human readable.

Next, always reset stuff back to the way it was. If users do a find, do they want your settings?

'THE MACRO STARTS HERE
Public Sub SomeToolbarNameToggleBigPunctuation()
'Attach this to a button on a toolbar
'we use the toolbar name to start the sub so we know where
'this sub is called from
Static Toggle As Boolean
Toggle = Not Toggle
ProofReadBigPunctuation Toggle
End Sub
Public Sub ProofReadBigPunctuation(MakeBig As Boolean, Optional Scope As Range)
'$--------
Author: heretic [at symbol] tdfa.com
'$Short: If makebig is true, it makes punctuation marks BIG
'to aid proofreading as discussed by Editmeister Jack.
'If makebig is false, it removes this formatting
'$Known issues: Destroys original doc highlighting IF
'highlighting is used in the formatting process.
Dim HomeOnThe As Range 'Our findermatic
Dim Finished As Boolean
Dim Progress As Double 'enough space for calcs in big dox
'Be nice, don't assume system settings
Dim Cursor_pholder As WdCursorType
Dim ScreenUpdating_pholder As Boolean
'frilly bits: change the cursor whilst we work!
Cursor_pholder = System.Cursor
System.Cursor = wdCursorWait
'freeze the screen to speed things up
ScreenUpdating_pholder = Application.ScreenUpdating
Application.ScreenUpdating = False
'This basic technique can be used in as many ways as Bill
'has bux.
'________________________________
'Give our range a document range to hang off.
'The first .dupe is strictly speaking unnecc but a good habit
'to get into with range objects--the second one prevents us
'changing the passed scope without realising it!
'We avoid the other parts of the document by setting our
'ranges parent to be the range that is the content only.
'I regularly use Activedocument.Content too.
'Also note how we deal with no explicit scope being passed
'from that Optional parameter
If Scope Is Nothing Then Set Scope = _
ActiveDocument.StoryRanges(wdMainTextStory).Duplicate
Set HomeOnThe = Scope.Duplicate
'Collapse our range to a point at the start of the doc
'main body content, just like a cursor in a virgin document.
HomeOnThe.Collapse
'We don't have to clearformatting or anything as it's
'a whole new range. Just set up the find
'$Customize: the ! means NOT anything in the following list
With HomeOnThe.Find
'note we don't use If MakeBig = True then
If MakeBig Then 'errant chars
.Text = "[! 0-9A-Za-z^9^12^13^160]" '$Customize
.MatchWildcards = True
Else '$Customize: formatting
With .Font
.Color = wdColorRed
.Bold = True
End With
.Highlight = True
End If
End With
'Get started on a standard manual processing find loop.
While Not Finished
'let the poor user know where we are at
Progress = Int(HomeOnThe.End * 100 / Scope.End)
Application.StatusBar = "Restyling " & Format(Progress) & "%"
'ensure the statusbar change gets through
DoEvents
'the find!
With HomeOnThe.Find
.Execute Replace:=wdReplaceNone
Finished = Not .Found
End With
'Our range is now either null, meaning nothing found
'or it contains a range for us to examine
If Not Finished Then 'we caught one!
If MakeBig Then 'style if proofing on
If Not ActiveDocument.Styles(HomeOnThe.Style).NoProofing Then _
FormatFontGruesome HomeOnThe
Else 'unstyle
HomeOnThe.Font.Reset
HomeOnThe.HighlightColorIndex = wdNoHighlight
End If
End If
HomeOnThe.Collapse wdCollapseEnd 'so we keep moving along
Wend 'finished
'destroy our objects
Set HomeOnThe = Nothing
'reset our changes
Application.ScreenUpdating = ScreenUpdating_pholder
System.Cursor = Cursor_pholder
Application.StatusBar = "Finished"
End Sub
Private Sub FormatFontGruesome(Scope As Range)
'$Short: to make shtuff shtand out shorty, you
'gotta problem wid dat?
'$Customize: don't forget to keep this matched with the
'find requirements for the undo
'I don't like the thought of changing font name
'as that could change the displayed character
'Lets just make it BIG, BOLD and RED on a YELLOW background
With Scope.Font
.Color = wdColorRed
.Bold = True
.Grow
.Grow
.Grow
End With
Scope.HighlightColorIndex = wdYellow
End Sub
Sub TestProofReadBigPunctuationOn()
Dim i As Long
Application.ScreenUpdating = False
Documents.Add
DoEvents
For i = 27 To 1200
Selection.InsertAfter ChrW(i)
Next i
ProofReadBigPunctuation True
Application.ScreenUpdating = True
End Sub
Sub TestProofReadBigPunctuationOnSimple()
'run this on any trial doc to be sure
ProofReadBigPunctuation True
End Sub
Sub TestProofReadBigPunctuationOff()
ProofReadBigPunctuation False
End Sub
'THE MACRO ENDS HERE

Many thanks to Steve for the macro and for the tutorial.

_________________________________________

RESOURCES

If you're looking for indexing resources, don't miss those supplied by the School of Library, Archival and Information Studies at the University of British Columbia:

http://www.slais.ubc.ca/resources/indexing/index.htm

Sorting Index Entries Letter by Letter

If you've used Microsoft Word's Index feature, you know that Word alphabetizes index entries word by word, like this:

New Deal

New World

Newborn

News release

Most indexers and publishers, however, prefer to sort index entries letter by letter, like this:

Newborn

New Deal

News release

New World

Is there a way to get Word to sort entries in this way? Yes--with some manual intervention. (If you've never used Word's indexing feature, you might want to read about it in Word Help before continuing.)

A typical Word index entry looks like this--

{XE "New Deal"}

--and it will sort in word-by-word order.

However, if you add a semicolon to the entry, followed by a letter-by-letter spelling (in other words, a spelling that omits the space between words), you can make the entry sort letter by letter. (In case you're wondering, this feature isn't documented in Word Help; you have to dig for it on Microsoft's Web site.)

The edited entry should look like this:

{XE "New Deal;NewDeal"}

So for our other examples above, the edited entries would look like this:

{XE "New World;NewWorld"}

{XE "Newborn"}

{XE "News release;Newsrelease"}

("Newborn" doesn't need editing, since it's already just one word.)

If we then have Word generate an index using those entries, they'll be sorted letter by letter, like this:

Newborn

New Deal

News release

New World

Neat!

But now I'm wondering: Is there an automated way to edit those index entries?

[Offstage, right: Loud clanks and clunks as your correspondent rifles through his toolbox.]

Hmmm. Here's something that *might* do the job. I'll try it and get back to you in about a week.

_________________________________________

READERS WRITE

After reading last week's article "Glorious Color," Word expert Steve Hudson wrote:

I *knew* I had an unsettled feeling about your post. It's gelled.

#1: H9 sure - but yellow on white?

#2: Printing on a black and white printer...

After reading Steve's note, I could see where it might be easy to miss what I had in mind, so here's a clarification:

#1: H9 sure - but yellow on white?

DARK yellow, which looks pretty good on screen. Regular yellow, as Steve points out, doesn't work well.

#2: Printing on a black and white printer...

The point is that you use the colors only while editing on-screen. When you're ready to print, you attach the *real* template for the final look--and then print.

Thanks to Steve for helping me clarify things.

After reading our article about making punctuation big and bold, Phil Rabichow wrote:

I enjoyed your technique for making punctuation stand out for those of us, er uh, those whose eyes may not be the sharpest (or to avoid eyestrain). I took your idea and expanded on it. I created a macro that would:

1. Create a character style called Standout that was Times New Roman, 18 points, bold, and red.

2. Handle the error in case the style already existed.

3. Replace all punctuation marks in one fell swoop with the new style.

Because of the error handling in 2. above, you can run the macro, add text with additional punctuation, and run the macro again. Also, instead of doing successive Find/Replace operations, it uses wildcards and Finds: [.,:;"'""?!] i.e., all types of punctuation. The backslash in front of the question and exclamation marks finds those characters. The macro also finds all quotes (") and apostrophes. Although it doesn't show in an email, what appears to be 7 apostrophes are really 1 set of quotes, 1 apostrophe, 1 opening smart quote (Alt+0147) and 1 closing smart quote (Alt+0148). [On a Macintosh, the character numbers would be 210 and 211.] Replace contains: ^& (the operator for Find What Text) and is formatted for the Standout character style.

The macro is:


Sub BigPunctuation()
' BigPunctuation Macro
' Macro recorded 8/11/02 by Phil Rabichow
' Creates Standout style & replaces punctuation
' of selection with large red bold font
'
On Error Resume Next
ActiveDocument.Styles.Add Name:="Standout", _
Type:=wdStyleTypeCharacter
ActiveDocument.Styles("Standout").BaseStyle = _
"Default Paragraph Font"
With ActiveDocument.Styles("Standout").Font
.Name = "Times New Roman"
.Size = 18
.Bold = True
.Color = wdColorRed
End With
With ActiveDocument.Styles("Standout").Font
With .Shading
.Texture = wdTextureNone
.ForegroundPatternColor = wdColorAutomatic
.BackgroundPatternColor = wdColorAutomatic
End With
.Borders(1).LineStyle = wdLineStyleNone
.Borders.Shadow = False
End With
' Selection.HomeKey Unit:=wdStory
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = ""
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
Selection.Find.Replacement.Style = _
ActiveDocument.Styles("Standout")
With Selection.Find
.Text = _
"[.,:;""" & ChrW(8220) & ChrW(8221) & "'?!]"
.Replacement.Text = "^&"
.Forward = True
.Wrap = wdFindStop
.Format = True
.MatchCase = False
.MatchWholeWord = False
.MatchAllWordForms = False
.MatchSoundsLike = False
.MatchWildcards = True
End With
Selection.Find.Execute Replace:=wdReplaceAll
End Sub

Note that this macro will apply to a selection in case you only want to change some of the punctuation. If you remove the apostrophe before the line

Selection.HomeKey Unit:=wdStory

the macro will work on the entire document.

Thank you again for your time and a wonderful publication.

Thanks to Steve for the terrific macro! If you don't know how to use macros like this one, you can find out here.

And you can learn more about improving the visibility of punctuation (including how to get the big, bold punctuation back to normal) here:

http://www.topica.com/lists/editorium/read/message.html?mid=1710712423

_________________________________________

RESOURCES

The American Society of Indexers is "the only professional organization in the United States devoted solely to the advancement of indexing, abstracting, and database building." Their site has lots of links to indexing and publishing resources and, of course, tons of information about indexing:

http://www.asindexing.org/site/index.html