Synchronize Text in More Than One Place in an InDesign Document
WC wrote:
Here’s the dilemma: I have a map with various labels on it. I also have an ordered list on the same page (eg. 1- studio a, 2 – Studio B etc). Is there some way to connect the two?
I was about to type “no” as a response when I suddenly got to thinking… there are ways to create “symbols” or “variables” in InDesign, but they’d be too much of a hassle for a map… there is also a way to synch text across multiple InDesign documents, but it’s also far too much work for the simple task you want. But…
There is a way to copy some text from one place in a document and display it someplace else: Cross-references! X-refs are a new feature in CS4, but they’re perfect for this task.
Start with some text — let’s say labels on an office map — and a text frame with the legend on it:
Make sure the labels each have the same paragraph style. In this case, they’re all tagged with the “name” para style.
Now place the text cursor in the “legend” frame (in this case, the frame that says “Office”) and click the New Cross-Reference button at the bottom of the Cross-References panel (which is also the Hyperlinks panel, by the way). Before you do anything else, click the Pencil icon in the x-ref dialog box to create a new format. That will open the Cross-Reference Formats dialog box:
Choose the Paragraph Text format in the list on the left, then click the Add (+) button at the bottom. Change the name of the format and remove the quotation marks in the Definition field. Now click OK to go back to the new x-ref dialog box:
Choose the name of the label’s paragraph style in the list on the left, then choose the paragraph in the list on the right. Set the Appearance Type pop-up menu to Invisible (or else you’ll get a really ugly black rectangle around the text).
When you click OK, the label (in this case “John”) will show up where you had placed the text cursor. Repeat for each label (it takes less time than you’d think).
Note that in this case, the paragraph style applied to the legend in the text frame on the left uses a auto-numbered list.
Okay, so what happens when you need to change one of the names? Well, before you do, heed this warning: Do not select all the text in one of those label text frames and just start typing! For example, don’t just select the word “John” by dragging over it or double-clicking it. Why? Because you will delete the invisible cross-reference character that is hiding just before the word!
Feel free to delete all the text except the first character, then backspace (gently) over the last character. Or better yet, press Command-Y to open it in Story Editor, where you can actually see that invisible character (and therefore avoid deleting it accidentally):
Then, once you’ve made your change, you’ll see a little yellow alert in the Cross-References panel:
Click the Update Cross-References button (it’s the one that looks like an Ouroboros) and the text in the legend “magically” updates, too:
Obviously, this isn’t something I would do if you just wanted to update the map once a year. But if you had to make changes often, the little bit of work up front would pay off grandly downstream.
I do this all the time with variables. Just make a character style variable and then apply the character style to the text. Then insert the variable where you want it to be synchronized.
@Fred: That’s a great solution if you only have one or two pieces of text you want to synchronize. But you’d probably have to make a different character style and a different variable for each and every one for a map like this, which would get tiresome.
“Choose the Paragraph Text format in the list on the left”
Is the screenshot incorrect, or the text? In the screenshot you have selected “Full Paragraph (2)”, not “Paragraph Text”, or is that the result from your actions in the dialog?
On another note… if I’m getting this right, the frames with the names are in the document once and then called (so to speak) into the other frame on as many different pages/locations within the same document as you want?
David, Great use of xRefs!
@Fred:
A big advantage to using cross-references over variables is that the cross-references are preserved as real text and can break across lines. Variables can’t break across lines…
If the text does not need to share a text frame, one could also create an InCopy story (no need for an assignment) and place it multiple times.
Abusing the table of contents feature might also be a feasible way for people still using CS3 or earlier.
I had a similar task with a map of classrooms.
I just threaded the text boxes for the room names and copied and pasted from the index list into the boxes.
Using two paragraph styles was the only other refinement. It would never have occurred to me to try and link the one to the other.
Roland, I’m guessing it’s a minor slip in the text, not the screen shot. In this case either one of the formats would’ve worked.
The only difference between the cross-ref formats “Paragraph Text” and “Full Paragraph” is that Paragraph Text will not include the numbers in autonumbered paragraphs. Since the names in the legend text boxes aren’t autonumbered, either format would have the same end result: just the paragraph text.
You might want to use the Full Paragraph types of x-ref formats when you’re referring to auto-numbered figures or section heads, for example. If your edits cause the autonumbered paragraphs to renumber, the x-refs would update to match, since they include the numbers.
Wow, very useful — thanks! I’ve been much frustrated by the cranky, too-complex-too-set-up Variables’s ornery unwillingness to break across lines — but these obliging X-refs trounce the damn Variables in an elegant, easy-to-edit way.
But . . . I have to press that Update button manually? Isn’t there some clever trick to also auto-update the X-refs? Could a script be made to “listen” for outdated X-refs and auto-update once every X seconds?
I know this post is several years old but it helped me out today. I was able to cross-reference an auto-numbered legend on a map that I’m working on. The client asked for changes. I updated the text and then realized that it needed to be back in alpha order. I used the sort paragraphs script with “retain formatting” checked. This reordered the list but kept the cross-reference anchor. I was then able to update the cross-references with the new numbers. It took a bit of time to setup but the payoff is nice.
Billy! A very clever twist to this solution. Great!