28 July 2012

How to do cross-references in Scrivener

One habit I've brought to Scrivener from Word is to insert graphics and tables as I write.  I like to include cross-references to them in my text as I peck along.  Word has an effective way of doing that via the Insert | Caption and Insert | Cross-Reference menus.  An advantage is that numbers are automatically updated and regenerated (at least at print-time) if you move things around.  Disadvantages to Word's implementation include limited call-out flexibility (for example, you can label a figure with "Figure" but not "Fig." or "FIGURE" as some publications mandate).  And there's Word's annoying habit of forcing you to wade through much of the full menu with each entry, and of course there's always the Random Format Generator that seems to kick in whenever you ask Word to do anything.

After much googling it seems there is a way of doing something quite adequate in Scrivener to support cross-references.

What the Scrivener folks have implemented in recent releases is an expansion of their Auto-Number functionality, which let you insert a placeholder (such as <$n> to specify an Indo-Arabic numeral placeholder) that, on compilation, would be filled-in with a number in proper sequence.

The placeholder code can now be appended with a type code for the cross-reference, and a label of your choice.  For example, expanding on the Scrivener draft I started in my last post, I've pasted in a couple of graphics from one of my source references (a time-series graphic and some statistics stuff) and typed in cross-reference codes of my own choosing to help me keep track as I write.

Here's how it looks as I compose my draft in Scrivener (click to enlarge):

Note the cross-reference callouts, <$n:figure:time_series> and <$n:figure:statistics_stuff>.  These will render only as numbers when compiled.  The numbers will be in simple order of appearance in the document.  Although codes such as these are a departure from WYSIWYG and may seem a little WordStar-ish, they do have the benefit that I can quickly see that they reference figures, and that one references the time series while the other references the statistics stuff.  That's actually nice for composing-- in Word's way of doing things, I have to scroll down to see what "Figure 1" points to.

Here's how it looks when exported ("compiled") to Word:

And here's what happens when the citations in the text are reversed... note the citations are renumbered in order of appearance.


  1. I'm adding links to this posting and the previous posting in the Google+ Scrivener Users community. We have over 160 members.

    Because the community is public, you are welcome to read our content.

    All Scrivener Users are also welcome to join and participate.


    1. Many thanks! Also note my post on using Zotero for citation management in Scrivener: http://unvexed.blogspot.com/2012/07/how-to-use-zotero-to-make-citations.html

  2. Hi Scott - this is just what I've been looking for, so thanks for posting it.

    The only trouble is that I can't get it to work... I can't find reference to this technique in the manual. The simple <$n> works fine, but I can't get it to use the variables within. Do you know if this is a MAC-only function? I'm using the Windows version...

    1. That strikes me as likely... worth asking the Literature & Latte people, either via their contact points (http://www.literatureandlatte.com/contact.php) or via Twitter. The Windows version of Scrivener does tend to lag behind the Mac version... the variables are a fairly recent addition, so you may have to wait. Please report back if you learn of any tricks that work on your platform!