Tag: outline

Chapter Outlines

NaNoWriMo confession time: I have never been a pantser*. I need an outline before I start to write a novel, and although a zeroth draft is a discovery process for me that discovery does not extend to the plot. I need to have an end in mind or things go badly.

The kind of outline I use is tuned to NaNoWriMo itself. I start off with 25 chapter summaries, and aim to put 2000 words into each chapter**. The chapter summaries themselves have evolved over time, but the form I use now is very strongly influenced by my software career: they look like use cases.

A use case captures a particular mode of use of a system and will include the initial conditions, the user inputs, the actions the system takes, the resulting conditions, and any error or alternative flows. A set of use cases will have precursor and successor use cases for each one.

To use a non-software example such as a hammer, you might have a couple of modes: one for putting nails in, and another for taking nails out. The nail insertion use case has initial conditions of the material to be nailed being firmly held, a nail being available, and the hammer being in close proximity to the user. User inputs would be siting the nail and grasping the hammer the right way around. System actions would be striking the nail with the hammer repeatedly until the nail was flush with the target surface. Final state would be that the nail is installed in the material, and the joint is solid. I will leave alternative flows and error conditions to your imagination.

I try to build my chapter summaries in a similar way:

  • initial conditions – location, things that are around.
  • characters involved – just the primary characters. Inventing other characters in the writing is allowed, even encouraged.
  • plot points that need to be hit – questions that need to be asked or answered, character interactions that should happen.
  • end point – the target I am trying to hit with the chapter: where the characters need to be, what they know now, and so on.

The point of this is that, like use cases, you can string these chapters and scenes together. As long as you connect the beginning and ending conditions, you could reorder the scenes. It’s not quite to the rigour of contract-based programming, but it sets the stage for the action to happen in a way that pulls the reader through the story.

Do you have a preferred outline style? Are you a pantser instead?

[*] I have written pantsed fiction, but I have never pantsed to a NaNoWriMo victory.

[**] although more than 2k is common.

Leave a Comment

Combining Text

As I wrote before, I started the second draft of Shapes on Monday.

I’ve been working in text files for the most part, with the original draft text in one file with labelled lines and the outline form of that text in another. That outline has been changed quite a lot, with lines re-ordered, added to, and generally modified to match the new vision of how this story works.

So I have two files, but I want one to work on the text of: one file with the original text and the outline content on one line.

As I do in this situation, I wrote a script to do this (included at the end). It’s called combine-outline and it imposes some requirements on the files –

  1. the text file can have labelled lines. The labels look like <label>:, but if they’re omitted then the script will use the line number.
  2. the outline defines the order of the combined content. An outline line consists of an optional label and a piece of outline text.

What the script does is to walk the outline, looking for labels. The label is used to extract the corresponding line from the text file, then it prints out the text and any outline string enclosed in square brackets.

For example, if we combine this text file –

1: There once was a frog.
2: Billy the Frog lived in a house made of mud and leaves.
3: The frog was named Billy.
4: Next door to Billy's house was an earwig nightclub.
5: Yellow wasps invaded Billy's dreams, like sharp-fingered thieves.
6: The nightclub was no trouble, though, because earwigs dance to smell.

… and this outline file –

1: introduce the frog.
3: give the frog's name first
2:
4: talk about the nightclub next door.
The earwigs danced through the day.
6: explain why the nightclub was no bother

… then this script call –

combine-outline text outline combination

… produces this combined output –

There once was a frog. [introduce the frog.]
The frog was named Billy. [give the frog's name first]
Billy the Frog lived in a house made of mud and leaves.
Next door to Billy's house was an earwig nightclub. [talk about the nightclub next door.]
[The earwigs danced through the day.]
The nightclub was no trouble, though, because earwigs dance to smell. [explain why the nightclub was no bother]

Tracking work on this needs word count for the actual text, and I get that on the command line thus –

cat second-draft-text | sed 's/\[[^]]*\]//' | wc

Anyway, back to making words.

Here is the script –

#!/usr/bin/ruby

# Combines content of outline and text files into a single output file.
# The outline file must have line numbers while the text need not, 
# Both the outline and text files are numbered. The outline numbers reference
# those of the text, ordering the text lines according to the line numbers.

help_text = <<END_HELP
Usage:
    combine-outline   
                --force

... where:
     is the original text whose lines are used as labels
     is the outline referencing those labels
     is the file where the combined output should be
        written. This will abort if the file already exists.
    --force will overwrite an existing 
END_HELP

show_help = false
source_file = nil
outline_file = nil
target_file = nil
force_target_write = false

# Read text and map lines by label
# Read outline.
# For each outline line:
# - if there is a label, find corresponding text line.
# - print outline line number, text in braces, and outline as annotation

ARGV.each do |arg|
  if (arg == "--force")
    force_target_write = true
  elsif arg == "-?" || arg == "-h" || arg == "--help"
    show_help = true
  elsif source_file.nil?
    source_file = arg
  elsif outline_file.nil?
    outline_file = arg
  elsif target_file.nil?
    target_file = arg
  else
    $stderr.puts "*** Unrecognised arg '#{arg}'"
    show_help = true
  end
end

# Validate
if !source_file.nil? && !File.exists?(source_file)
  puts "Cannot find text source file #{source_file}"
  show_help = true
end
if !outline_file.nil? && !File.exists?(outline_file)
  puts "Cannot find outline file #{outline_file}"
  show_help = true
end
if !target_file.nil? && File.exists?(target_file) && !force_target_write
  puts "Target text file #{target_file} is already present; aborting."
  show_help = true
end

if show_help
  puts help_text
  exit 1
end

# Read inputs
source_lines = File.read(source_file).split("\n")
outline_lines = File.read(outline_file).split("\n")

# Read text, and map text lines by label
text_by_label = {}
File.foreach(source_file).with_index do |line, line_num|
  if !(matches = line.scan(/^([^:]+:)?\s*(.*)$/)).empty?
    m = matches[0]
    label = m[0]
    text = m[1]
    if label.nil? || label.empty?
      label = (line_num+1).to_s
    end
    text_by_label[label] = text
  end
end

# Open target file
File.open(target_file, 'w') do |f|
  # Read outline
  # For each outline line:
  # - if there is a label, find corresponding text line.
  # - print outline line number, text in braces, and outline as annotation
  File.foreach(outline_file).with_index do |line, line_num|
    if !(matches = line.scan(/^([^:]+:)?\s*(.*)$/)).empty?
      m = matches[0]
      label = m[0]
      outline = m[1]
      text = if !label.nil? && !label.empty?
        text_by_label[label]
      end
      result = []
      result << text unless text.nil? || text.empty?
      result << "[#{outline}]" unless outline.nil? || outline.empty?
      f.puts result.join(" ")
    end
  end
end

Leave a Comment

Putting It Back

I’m in the closing stages of work on the outline for the second draft of Shapes at the moment, which means populating the plot structure in the last section.

This last section was where I ran out of time in November 2013 and ended up cutting more than half the scenes in order to finish the writing before the end of NaNoWriMo. It would have been better to keep those in and keep writing, but one of the things about November’s literary frenzy is that it is followed by December and I knew I would not be able to keep writing with the same intensity going into the Christmas season.

When I cut those scenes I moved them into a Morgue folder in my Scrivener project and I spent some time yesterday reviewing them for relevance to the new outline.

There was not a great of deal of relevance to be found…

The scenes in the Morgue fall into three groups:

  1. things that are covered elsewhere. There are a couple of explicatory scenes which I managed to shoehorn the content of into other places, so those are redundant.
  2. scenes which no longer fit the plot. Some scenes were devised in the context of a plot structure which no longer applies, so those just don’t need to happen any more.
  3. scenes with something useful to say. Either there’s a bit of character development that got left out or a bridge that should have been crossed but was missed, but there are a few scenes with meaningful content in them.

Even these few useful scenes need to be changed quite significantly to fit the second draft plot and characters, though, so I would class this as a useful thing to review for inspiration rather than a valuable dig into an untapped mine.

Do you keep a morgue for unwanted or otherwise unused material? Do you ever go back to it?

Leave a Comment

Hot Spots

The tiny bit of meticulous process I am working on right now is working through the questions raised in my outline. This is serving several valuable purposes:

  • raising questions I need to answer about the setting (“But how does this ability actually work?”)
  • identifying holes in detail (“Weren’t those eyes green before?”)
  • flagging places in the outline which need significant attention to make them sane (“This a poorly structured diplomatic mission, especially without any diplomats on it.”)

The setting questions are going in the world book, because those are the foundations on which the story is built. The detail observations just go into correcting the outline and thence the text, but I’ll keep them around to validate once the text is done.

However, the thin outline spots want more room for discussion than I want to pollute the outline with so I am putting them into a “hot spots” document. In there I have a series of broad headings for particular spots in the story, and some bullets to capture the flavour of the criticisms I have for each story area. I will then add more discursive content to work things through and record any conclusions.

The goal here is similar to the world book: having the broad categories in front of me so I can pick those things up easily as I pass through the relevant sections. All of this comes back to tracking what I am doing and not entirely losing state when I spend time on other projects.

How do you analyse your stories for inconsistencies and crumminess?

Leave a Comment

Outline Progress

It was with great joy and not a little tiredness that I completed the detailed outline for Shapes last night. That is why I didn’t post anything on the blog yesterday – I was writing the last few summary sentences for the novel.

There’s good and bad about this detailed outline process:

  1. good: it gives you an intimate knowledge of the story and its current state.
  2. good: it brings forward lots of ideas to improve the story.
  3. bad: it takes a long time. I started this outline at the beginning of the year, so it’s taken me almost eight weeks for a 100k manuscript. There again, I do now have a 30k outline.

Having completed that significant effort, what’s next?

My plan for the year was to pick up Song for a bit, to review that second draft and fix it up for publication, but having built the car I want to take it for a spin.

So the new plan is to work with the outline to make Shapes into a better story. There’s a handful of things I need to do and lots of ideas for things I want to try out. These include:

  • fixing timing issues
  • who knows what when
  • tweaking the initial conditions
  • making the antagonists more consistent in their behavior
  • defining the protagonist’s abilities a bit better
  • fiddling with the plot to improve the pacing
  • completing the closing scenes (because the fourth act was truncated which lost a lot of the character motivation information)

I am expecting to work on this outline until it’s done, then take a break from it before writing the second draft. We’ll see whether the car holds up.

How are your writing efforts going? Do you use outlines?

Leave a Comment

Working With An Outline, part 2

Last time I talked about the specifics of how I lay out and compile a detailed outline. This time I want to talk about what I use that outline for.

This post covers both things I’ve already done (or am in the middle of) and things I plan on doing once the outline is complete. Many of these activities are also going to be things to be applied iteratively. Keeping multiple versions of the outline file might be a good idea too, but that is a subject for another post.

Finding Big Holes

As you’re making the outline notes, insert commentary and questions about the plot or setting or breadcrumbs you want to include. In this contrived example, I’ve got a couple of questions to raise for when I’m going through the outline later.

1: Introduce Mary, shepherdess. [Once upon a time, there was a young woman called Mary. She was a shepherdess, which means she spent long periods of time up on the moors away from other people but surrounded by sheep.]
2: Describe how Mary is well-suited to this isolated work and does not care for the villagers. Q: did Mary grow up in the village? [This suited Mary fine, since she generally found the villagers who owned the sheep to be about as bright as the sheep themselves.]
3: Recount that the villagers reciprocate by not caring for Mary much either. Q: do sheep have harnesses? [Despite entrusting their sheep to Mary, her work as a shepherdess was not highly-regarded by the villagers and so they didn't always keep the sheep harnesses in good repair.]
4: Mary had a little lamb. Mention that she got it from the blacksmith. [Mary also had one lamb of her own that the blacksmith had given her in lieu of payment for her shepherding. She tried not to play favourites with the sheep (not that the sheep would notice, of course) but she was very fond of this little lamb, who she called Algernon.]

This is where I am at the moment in this process for Shapes – adding outline notes and notes on holes.

Making It Just An Outline

Next up is the need to remove the actual text, and start working on the outline itself.

1: Introduce Mary, shepherdess. [Once upon a time, there was a young woman called Mary. She was a shepherdess, which means she spent long periods of time up on the moors away from other people but surrounded by sheep.]
2: Describe how Mary is well-suited to this isolated work and does not care for the villagers. Q: did Mary grow up in the village? [This suited Mary fine, since she generally found the villagers who owned the sheep to be about as bright as the sheep themselves.]
3: Recount that the villagers reciprocate by not caring for Mary much either. Q: do sheep have harnesses? [Despite entrusting their sheep to Mary, her work as a shepherdess was not highly-regarded by the villagers and so they didn't always keep the sheep harnesses in good repair.]
4: Mary had a little lamb. Mention that she got it from the blacksmith. [Mary also had one lamb of her own that the blacksmith had given her in lieu of payment for her shepherding. She tried not to play favourites with the sheep (not that the sheep would notice, of course) but she was very fond of this little lamb, who she called Algernon.]

As a reminder, the vim command to do this is:

:%s/ \[[^\]]\+\]//

Fixing Big Holes

Now we can start fixing holes.

1: Introduce Mary, who came up from the lowlands with her family and is now a shepherdess.
2: Describe how Mary is well-suited to this isolated work and because she does not care for the villagers who seem foolish to her.
3: Recount that the villagers reciprocate by not caring for Mary much either.
Tell how the villagers treat their sheep poorly when they are not with Mary and so her job is harder.
4: Mary had a little lamb. Mention that she got it from the blacksmith.

Obviously this is a contrived example so the “fixes” don’t necessarily help, but note how I’ve added an unnumbered outline element between lines 3 and 4. This will become relevant in the last step of the process.

Trying Out Ideas

We now have a much more manageable piece of text to work with, do it easier to experiment with large scale changes to the structure of the story.

This is where you get to mutate the story into something else. I’m not going to work through this since it’s pretty meaningless in this example context, but things I’m looking at for the Shapes outline include:

  • changing the initial conditions: make the protaganist different, add or remove secondary characters, and so on. Work through the consequences of the protagonist being a half-orc who suffers uncontrollable rage at the smell of bananas after the change is made.
  • add or remove sub-plots: is something the protagonist does coming out of the blue? Maybe she needs to go on an adventure with her kid sister to explain why she would be such a killer shot with a rubber band gun. Or perhaps the quest to find the last My Little Pony figure in the 1993 set is distracting from William’s primary goal of putting together a crack squad of goat herders for the Capricorn Cup. Add or remove such sub-plots as necessary
  • fill out truncated writing: this is an especial problem for me during NaNoWriMo – if I am running out of November to finish the story, I will trim the closing chapters to finish the story arc. So, a large part of my outline work will be to fill in the missing plot points so as to explain why the head Bad Panda has such an animus against the protagonist.

… and so on. This is where you play with the storytelling to make it better.

It seems likely that you’ll make the new plot points at a macro level and then refine them. This kind of iteration and refinement is used in the Snowflake Method, although this is rather more organic.

Making It A Story Again

You may have wondered about those line numbers in the outline format I use. It is when reinflating an outline back to a full story that they come into play – you can use those line references to find the original text and copy it back across.

The process goes like this:

  1. copy the original text back into the outline form. This is something I will likely use a script for when it comes to Shapes (and I will post that script here when I write it), unless there have been a great many changes in the outline structure, nut the basic point is to restore the text so as to have something to apply the outline notes to.
  2. go through the outline + text combo doing the following:
    • changing the original text to match the outline
    • writing new text to fill in the new elements of the outline
    • updating the outline notes to match new insights into the text

This is going to be a fun bit.

Once you’re done, you now have a new text version and a new outline to match. Separate those into distinct files if you like, and copy the text into the processing tool of your choice.

Whatever’s Next

This series has been predicated on working with existing text in order to analyse and (one would hope) improve upon it. The next thing for me to try is to write the outline first and turn that into a story. I’m thinking I might do a worked example of that on a short story at some point, since I’ve always had trouble writing short stories.

One Response

Working With An Outline, part 1

Since I am working on a detailed outline for Shapes, I thought it might be useful to make some notes about how I intend to use that outline once it’s complete. Although these notes are formed in the context of the one book, I expect they’ll be relevant to other outlined projects I work on too (like Song, for example).

Outline Format

Before digging in on what to use an outline for, these are some specific thoughts on the format of the outline itself.

Working as I am with existing text, I took that text and applying the following transformations to it:

<line number>: <outline line> [ <text line> ]

So given this text:

Once upon a time, there was a young woman called Mary. She was a shepherdess, which means she spent long periods of time up on the moors away from other people but surrounded by sheep.
This suited Mary fine, since she generally found the villagers who owned the sheep to be about as bright as the sheep themselves.
Despite entrusting their sheep to Mary, her work as a shepherdess was not highly-regarded by the villagers and so they didn’t always keep the sheep harnesses in good repair.
Mary also had one lamb of her own that the blacksmith had given her in lieu of payment for her shepherding. She tried not to play favourites with the sheep (not that the sheep would notice, of course) but she was very fond of this little lamb, who she called Algernon.

… I start with the following content in the outline document:

1: [Once upon a time, there was a young woman called Mary. She was a shepherdess, which means she spent long periods of time up on the moors away from other people but surrounded by sheep.]
2: [This suited Mary fine, since she generally found the villagers who owned the sheep to be about as bright as the sheep themselves.]
3: [Despite entrusting their sheep to Mary, her work as a shepherdess was not highly-regarded by the villagers and so they didn't always keep the sheep harnesses in good repair.]
4: [Mary also had one lamb of her own that the blacksmith had given her in lieu of payment for her shepherding. She tried not to play favourites with the sheep (not that the sheep would notice, of course) but she was very fond of this little lamb, who she called Algernon.]

This transformation is exactly the kind of thing that text editors like vim and emacs excel at.

Turning Text Into An Outlineable Format

I am a vim user, and these are the steps I followed in that editor to turn my story text into the outline form:

:%s/.*/[&]/
%! perl -e 'my $ln = 0; while (<>) { $ln++; print "$ln: $_" }'

That “perl” line calls out to a one line script which adds line numbers to standard input.

Additionally, once the outline text has been added, I performed the following command to strip the original text.

:%s/ \[[^\]]\+\]//

Sketching the Outline

When the text is laid out appropriately, I add outline notes between the line number and the bracketed text. The goal of this outline is to capture the beats in the text – it’s not just relating the story, but how that story is going to be told.

1: Introduce Mary, shepherdess. [Once upon a time, there was a young woman called Mary. She was a shepherdess, which means she spent long periods of time up on the moors away from other people but surrounded by sheep.]
2: Describe how Mary is well-suited to this isolated work and does not care for the villagers. [This suited Mary fine, since she generally found the villagers who owned the sheep to be about as bright as the sheep themselves.]
3: Recount that the villagers reciprocate by not caring for Mary much either. [Despite entrusting their sheep to Mary, her work as a shepherdess was not highly-regarded by the villagers and so they didn't always keep the sheep harnesses in good repair.]
4: Mary had a little lamb. Mention where she got it. [Mary also had one lamb of her own that the blacksmith had given her in lieu of payment for her shepherding. She tried not to play favourites with the sheep (not that the sheep would notice, of course) but she was very fond of this little lamb, who she called Algernon.]

Next time, I’ll write about what I do with the outline once it’s got some content in it.

2 Responses