One of the oldest adages in modern day cinema is the simple formula which is the ratio between the number of pages in a screenplay and the number of minutes the final production is likely to end up running. This ratio, for simplicity, is set to 1 (ONE). That being the ratio, this ratio being the number 1, one half be not enough and one and three fourths is right out! The way this ratio can be ensured is by very specific formatting of the text of the script and proven statistical probability that for a given number of lines with a given line width and a fixed point size that a minute of final screen time shall be realized. Thanks to this basic rule, a production company reader can quickly and simply count pages in a submitted script to estimate its approximate running time. Thus, the key to achieving this ratio is proper, meticulous formatting of the potential script.
When I started writing scripts for Project KronoSphere, I decided to use the reStructured Text mark-up language for its simplicity and raw legibility. As reStructured Text does not explicitly define specific screenplay elements such as Act, Scene Number, Scene Heading, Slug, Action, Dialog or Parenthetical, I am forced to use more generic elements when writing and formatting my raw script. The basic approach I currently use is as follows:
- Title is underlined and overlined with number signs (#)
- Story Name is underlined and overlined with asterisks (*)
- Story Sequence is underlined and overlined with equals signs (=)
- Acts are underlined and overlined with hyphens(-)
- Scenes Numbers are underlined with circumflexes / carets (^)
- Scene Headings and Slug Lines are underlined with tildes (~)
- Action is straight paragraphical text, unjustified and without indent in 72 columns
- Speaker is a field name, without indent, on a line by itself and followed immediately by the corresponding Dialog
- Dialog is a field value, indented by 3 columns, unjustified and extending not past column 72 in paragraphical form
- Parenthetical is on a line by itself, interspersed with the Dialog elements, with a custom role assignment of action over the entire line of text
Specifically, a raw script may look something like this:
As you can see, such formatting is rather easy to read, which is why I chose it. The part that reads *various script headings* is an italicized placeholder for where things like character lists and descriptions would go. Here, the single asterisk (*) around the placeholder makes the phrase italicized, where as the double asterisk (**) around the phrase Goodbye causes this to be rendered in boldface. One important idiosyncrasy to notice is that on the third line of Voice's dialog we begin with a backslash (\) character to inform the text parser to treat that line as text and not as a comment since all comments begin a line with two periods (..). Because the parentheticals are marked as action, the document needs to know what the role action means. I thus have a comment (..) after the title blocks to define the role action as the generic character class action. Also, for the sake of editing and spell checking, there are a number of lines I always put at the tail end of my documents which appear as comments (starting with ..) so that they can be read by the editor but are ignored by the parser. Although the editor and spell checking parameters can occur at the end of the document, the role definition needs to appear at the beginning, which I find annoying to the point where I am looking into the docutils code to see if I can change how role definitions are matched with their uses.
Initially, and still in some of my older script, the dialog elements all bunched up as one continuous line following the Speaker's name, as well as the Action elements being continuous without breaks. Also, I didn't have a markup for Acts originally, and the markup currently used for Act was then used for Scene Number instead. Also, back then, the Scene Heading and Slug Lines were originally both underlined and overlined but are now just underlined. However, such differences do not change how the parser reads the script; the line length and line breaks within a text element are ignored by the parser. However, one serious difference is that parentheticals are now specifically marked up as action, where as before they were treated as normal dialog text. Also, I incorrectly used pause instead of the industry standard beat, for example:
When I find the time I will reconfigure these older scripts to better match the format as outlined previously as well as make some other consistency formatting changes. Specifically, a lot of my initial scripts contained foley notes which I am planning to hide with some specific formatting techniques as yet to be determined.
After I settled on a uniform formatting for my scripts within the reStructured Text guidelines, the next step that I faced was a way to turn that flat text file into something prettier. Specifically, I found a small web server written in Python by Mr. Jon Berg and modified it to use the docutils publish_string function to transform my reStructured Text into colourful HTML. This turned the above template into:
The colour is achieved with a GET Query by setting a character name to a colour, such as "Voice=red". Although non-standard, this is meant to give any potential actors an easier time identifying their lines. The main flaw, however, with this script is that in an early run-through of an early draft of Episode 01, we found the average run time of a page of dialog to be 1 minutes, 45 seconds, which, as I said before, was right out! Another annoyance, as you can see, is that the dialog between Voice and Joyce B Foist is not aligned: the indent of Voice is much less than that for Joyce's dialog.
As I worked on the first few scripts, I worried less about formatting and more about getting the story out. However, soon after attending my first Washington Screenwriters Meetup, as well as completing a first draft of Episode 04a, I decided it was time to get the formatting finally right. The first thing I did was to add the proper margins to the HTML page format. This was not easy, and I'll save the details for another post, but eventually I got the various page elements, such as paragraphs and table entries to align — the most recent change was actually a few days ago, so this is pretty cutting edge! I also set the page rendered font uniformly to the industry standard of Courier, 12 point. This, however, caused its own problems because most browsers render Courier as Courier New, which is a thinner font than Courier and is a sure sign of an amateurish script. Thus, you need to explicitly set your browser to render Courier as Courier and not Courier New to see these pages correctly. Finally, before tackling the problem of Character and Dialog elements being displayed horizontally instead of properly vertically, I used CSS to fix the dialog spacing so that Voice and Joyce B Foist's dialog would appear aligned, as can be seen below:
Although that looks much more realistic, and is actually a good hybrid between scripts for Radio plays and those for Television, Cinema and Animation, I wanted to get the Dialog elements to properly render vertically, as you see in the visual media formats since this would finally bring me in line with the 1 page = 1 minute rule. Since I used reStructured Text field lists to specify the Character and Dialog elements, the default docutils rendering is in an HTML table and thus always horizontal. In order to change this behaviour, I needed to add a series of Regular Expression replacements in the rendered HTML before displaying it — turning the table elements into div elements — before transmitting the HTML to the client browser. It's handy being able to role your own web server, isn't it? So, without further a dieu, here is the current version of my near Hollywood perfect screenplay format:
One final note: the boxes where you see each page rendered are made small to fit in this blog, and in fact the only way to make the page look like a true Hollywood script at this point is to view it in a browser window that is exactly 8 ½ inches at 72 dots per inch (DPI). However, when printed, the script should come out properly, all be it with the minor nit that a page break can currently occur in the middle of Dialog or Action lines. It will take a more robust document language, like LaTeX, to provide that level of perfection.
I hope you've enjoyed my first tutorial on how to turn reStructured Text into a screenplay formatted using Hollywood guidelines. This also concludes my posts referring to the events of my writing life which occurred during the month of February. I finished the first draft of Episode 04a and most of these formatting edits by the second week of March when the next Make a Video meetup was scheduled, but to find out what happened then, you'll just have to read my next post...