Index Topics from Styles or Conditions

Create topics and page references in InDesign documents using InDesign's index feature. The script looks for instances of the character styles or conditions you pick in the dialog and creates...

This script is part of the Indexes and Concordances collection. See the full collection here

The script creates topics for and page references to all text formatted with certain character or paragraph styles or conditional text. The latter is useful for text that that has already some character style applied, because in InDesign you can’t apply two or more character styles to the same text range.

Use

Open the documents that you want to process and run the script. It shows this dialog:

[image: index from character styles]

Style groups are shown in parentheses after a style name (nested style groups are separated by a colon). Select any character styles from the list in the usual way.

In the Target dropdown, select Character stylesParagraph styes, or Conditions.

In the Mode dropdown, select either of the three modes:

Content only The script includes in the index just the found text. This produces a flat, unstructured, index without any subtopics:

[image: index panel]

Style names nest topics A topic is created from the character style’s name, the found content is made into a subtopic. If the character style is in a style group, the style group’s name is made into the main topic, the style’s name into a subtopic, and the content appears as a subsubtopic. In the following screenshot birds is a style group, birds of prey is the name of a character style, and eagle and owl are text occurrences.

[image: index panel]

Style names are prefixes This option is useful if you want to create two or more indexes. Suppose that, in addition to a subject index, you want two separate indexes, e.g. a name index and an index of titles. The names have the condition Names applied, the titles, the condition Titles. Now when you select those two conditions and Style names are prefixes, you could get this index:

[image: index panel from conditional text]

Names and titles are now each grouped together. After the index is generated you can move these sections to the back of the index, then delete the placeholder names. You could make things even easier by prefixing the condition or style names with ZZ so that they are grouped together at the end of the index, which makes splitting the index more straightforward.

Check Replace existing index to delete all existing topics and page references.

Groups in conditions

Unlike character styles, conditions don’t have groups. If you want subtopics using conditions, use %% as a separator. For example, the condition name Titles%%Books, when applied to Bursting Bubbles, would create the topic hierarchy shown in the Index panel:

[image: index panel from conditional group]

Changing the order of first and last names

To change the order of first and last names, so that the text occurrence James McCawley appears in the index as McCawley, James, add @@ at the end of the character style’s or condition’s name, as in Authors@@.

By default, the script assumes that the first word of the found content is the first name, the second, the last name. If a name consists of two or more words and the first two words form the first name, insert a non-joiner after the last part of the first name. For instance, to have the text occurrence J. S. Bachappear as Bach, J. S., add a non-joiner immediately after S.:

[image: non-joiner]

To insert a non-joiner, go to Type > Insert special character > Other > Non-joiner). When you enable the display of hidden characters (Type > Show hidden characters), the non-joiner is shown as a hacek accent (a.k.a. caron).

Problems and troubleshooting

Errors are usually caused when a character style was applied to a special character such as an en-rule or a paragraph return. These characters can’t be used in topic names. If for any reason the script can’t handle a character style’s content or any conditional text, it creates a condition (‘index_from_charstyles_error’) and applies it to the problem text.

When the script finishes it tells you whether any problems occurred. If that’s the case, search for the condition (in the Grep or Text tab of the Find/Change window, empty the Find what field, click in the Find Format panel, then select Conditions in the Find Format Settings window and select the condition), correct the problem by applying the character style correctly or removing it from the text, then run the script again.


Version history

13 Feb. 2024: Bug fix.

8 Nov. 2023: Added paragraph styles to the mix of targets.

27 Mar. 2023: A footnote marker inside a character style instance creates two topics. Fixed. The footnote marker doesn’t show up in the index.

2 Feb. 2019: Added a problem reporter, see the Problems and troubleshooting section.

31 Mar. 2018: Added conditions as a target (in addition to character styles), and provided a third output format.

28 Aug. 2017: Added functionality to change the order of first and last names, e.g. ‘John Smith’ > ‘Smith, John’. See the text for details.

25 Oct. 2016: Fixed a display problem in CS6/Windows 10.

11 Sept. 2016: Improved the support for style groups, and added the addition of subtopics.

3 Sept. 2015: The script now deals with the InDesign bug that causes page reference markers to be placed incorrectly in documents that contain tables.

21 March 2014: Some minor changes to make the script more efficient.

20 Dec. 2012: The script sometimes missed some styles. Fixed.


Peter Kahrel Script Repository
Hosted as a community service, and with deep appreciation, by CreativePro.com


Scripts by Topic | Script Index
Basic Script Installation and Use
How to Modify or Configure These Scripts
Resources for Scripting and Publishing Automation
About This Repository


Contact Peter Kahrel


Note to users: You run scripts at your own risk: CreativePro and the author accept no liability for anything that may be caused by any of these scripts. Always take the necessary precautions. We encourage you to save backups and test scripts on copies of your documents.

Bookmark
Please login to bookmark Close

This article was last modified on August 22, 2026

Comments (0)

Leave a Reply

Your email address will not be published. Required fields are marked *

Loading comments...