Back and Forth Between Scrivener and InDesign

The Beginning of a Long Journey

Jackie introduced me to Scrivener, a writing program. I wrote a draft script for Parts in it, using the Comic Script template provided with the program, and tips from its author Antony Johnston.

This format gave me automatically-incrementing page and scene numbers, which are adjusted on output. There were paragraph formats for character names, dialogue, narration, and more. It was a lot like the well-known screenwriting program Final Draft.

Final Draft itself is of course one of the well-known programs for screenwriting. It allows the writer to manage characters and plot points and make sure that all the loose ends are tied up. I believe that there is a detailed script output goes so far as to tabulate what characters (and therefore actors) and locations and even important props are in each scene (clearly useful in panning the shooting of a movie).

I have found that graphic-novel scripts are a lot more like screenplays than regular prose novels, and I tend to think more in pictures than text when creating story. I considered using Final Draft for my script, but decided to try Scrivener, as I found that Scrivener was a considerably lighter program, aimed more for writing.

However, Scrivener (and Final Draft) are text only. Parts is going to be a graphic novel. I decided to lay it out in Adobe InDesign, which I had used before. In InDesign I can design pages, choosing page size, margins, fonts, and so on. Then I cam import and place artwork. InDesign is much more flexible than Scrivener in the way that it can size and arrange artwork on a page. It places images and text in “frames”, which can themselves have different shapes and outlines. I immediately thought of dialogue boxes and word balloons in comics.

Ideally, I would like to write the script in Scrivener (or Final Draft for that matter), and export it in such a way that the structural information of the script is preserved. It would include not just a piece of text, but some record that the text was a piece of dialogue spoken by Character X.

InDesign would have to take the script and lay out pages and panes and narration and dialogue, and be ready for insertion of artwork. And then if I make changes in InDesign, I would like to be able save the script in such a way that Scrivener could import it and recreate it with the appropriate page and panel headings, and paragraphs of narration and character names and dialogue with the appropriate styles.

Thus the first question arose: How do I get the script from Scrivener into InDesign? At a minimum, I could just copy the text from Scrivener and paste it into an InDesign text frame, but that would just yield a lump of text with no structure. I wanted individual dialogue segments to go into individual text frames, at the least. If the import could create pages and panels, so much the better.

There’s a way of writing things down in such a way that you can describe their structure at the same time. It’s called Extensible Markup Language, or XML. It can be customized to whatever needs you might have.

See: What is XML?

InDesign has a method of importing XML, so possibly that could be used. But that would mean that the script would have to be stored as XML after it exited Scrivener.

Ideally, I would like to export my Scrivener script into XML, taking the paragraph formats and content and building XML. For example, consider this piece of dialogue spoken by Aisha:

    AISHA
Where is the car?

In the Scrivener document, it consists of two paragraphs. The first is in the Character style, and names the speaker. The second is in the Dialogue style, and contains the text of the dialogue.

These might be transformed to something like:

<dialogue character="Aisha">Where is the car?</dialogue>

The script would need to take the contents of the Dialogue paragraph and create a dialogue element, inserting the contents as text between the element’s opening <dialogue> tag and closing </dialogue> tag. It would then need to take the contents of the Character paragraph (the name of the speaker), and use it to create a character attribute for the dialogue element.

I came up with a simple example of XML that describes the structure of a few pages of my book, as well as carrying the text of the book:

<book>
   <page number="1"> <!-- <p>"PAGE 1"-->
      <panel number="1"><!-- <p>"PANEL 1"-->
        <description>Aerial view of a factory.</description>
      </panel>
    </page>
    <page number="2">
      <panel number="1">
        <description>Inside the factory. Assembly lines with assembly workers in their red shirts hard at work. Nearby, warehouse space containing towering racks of bins and boxes. Forklifts darting about.</description>
      </panel>
      <panel number="2">
        <description>A box among boxes, high on a shelf.</description>
      </panel>
      <panel number="3">
        <description>Inside one box, parts wait patiently, arrayed in rows and columns and layers, resting in niches in their plastic packing material.</description>
      </panel>
    </page>
    <page number="3">
      <panel number="1">
        <description>The parts rest in their box.</description>
        <dialogue character="Narrator 1">To the outside viewer, all is silent and still… but there is activity.</dialogue>
        <dialogue character="Narrator 1">In their own way, the parts are communicating, laughing, cajoling, planning, arguing, playing, sulking. </dialogue>
        <dialogue character="Narrator 1">There are classes. Sylvain is discoursing to half a dozen students about how you can never really prove that solipsism isn’t true, and Vandan is helping other students organize their minds.</dialogue>
        <dialogue character="Narrator 1">There are games. Deb is masterminding a game of Factories and Forklifts, in which Brian is leading a team of adventurers through a fantasy world, dodging horrendous mobile monster machines on the way to their goal.</dialogue>
      </panel>
      <panel number="2">
        <description>The parts are electronic circuit boards, complete with heavy metal heat sinks on one side, and an assortment of electronic components and electrical connectors on the other. Among the electronic components is a pair of lenses, and underneath them a pair of light-emitting diodes.</description>
        <dialogue character="Narrator 1">A few parts feel themselves a little separate from the usual part society. Away from the whirl of social events, they sense somehow that they are there for some purpose, and that their whole being is built around that purpose.</dialogue>
      </panel>
    </page>
    <page number="4">
      <panel number="1">
        <description>A view of the box on its rack. Inside, things are going as usual for the parts.</description>
      </panel>
      <panel number="2">
        <description>A materials handler lifts the box from the rack.</description>
      </panel>
      <panel number="3">
        <description>The materials handler moves it over toward a staging rack by the assembly line.</description>
      </panel>
      <panel number="4">
        <description>The materials handler places the box briefly on a worktable, cutting the packing tape open with a utility knife, folding the box flaps back, and securing them to the sides of the box with a looped bungee cord.</description>
      </panel>
      <panel number="5">
        <description>The materials handler places the box on the staging rack by the assembly line. The assembler is taking parts from another box in front.</description>
      </panel>
    </page>
  </book>

There would have to be some sort of output mechanism from Scrivener that would create the needed XML. And there would have to be a way of loading XML back into Scrivener and rebuilding the script.

Scrivener has things called “compile formats” which might be capable of doing this, but I am at the very beginning of learning about these.

Now, that’s the Scrivener end of things. What about InDesign?

The InDesign XML-import mechanism seems to be more complicated than I first thought. InDesign will import XML and make it available, but then the various elements have to be placed in the InDesign document. Some kind of scripting will be necessary to automate this process.

InDesign can also export a book as XML. However, it seems to use a word-processing XML format that includes a truly mind-boggling number of style elements; the actual text of the document is buried. I would like to be able to export in the simple format that I created to import from. More scripting will be required.

It looks like a lot of work. I now understand slightly about what goes on with animated movies, when you’re looking at the credits and they give all sorts of information about custom software developed to solve some production problem…