3tml
!screenplay.el

I wrote this because the only thing keeping me on Windows were some
stupid games that ate into my writing time and FinalDraft (tm) which is
screenwriting software.  I already had Garst Reese's hollywood LaTeX
class which was almost perfect.  So I hacked scripts.cls, which is
perfect and wrote an emacs mode that converts straight to the LaTeX,
using my scripts class.  Call me Code Girl.

Screenplay.el is used to create files with a .sp extension. And these
files not only convert into LaTeX, which goes to the printer and
produces tweakable output just like ScriptThing (tm) or any other
scriptware, but also good clean HTML that looks like a script no matter
how you size the browser, and text that is formatted like a script too.
While you are writing, you can get a decent page count just by hitting Alt-P.

Like I said, perfect.

Here is what you get using Emac's mode help with C-h m.
<pre>

Screenplay mode:
Major mode for writing industry-standard Hollywood spec-scripts.
Creates .sp files which are translated into LaTeX, dvi, PostScript, HTML
and text by external Python scripts. The resulting screenplays are
identical in format and appearance to the products of ScriptThing,
FinalDraft, and other professional scriptwriting software.

The .sp files can be either *movie* (95 pages plus) or *tv* (30 or 60
minute) scripts.  The Play menu skeletons determine this, marking the
first line of the file with the type for the benefit of the conversion
scripts. Skeletons repeat a prompt until they get an empty string - it's
an Emacs thing.  Mode expects ONE-LINE title, series, and episode.  But
use the skeleton author prompt for multiple authors and the contact-info
prompt for address, phone and email lines in the address paragraph of
the title page.

Mode is WYSISWYG [S for sort-of] and uses auto-fill-mode to maintain
margins. It is derived from outline.el which is derived from text.el. So
many benefits of those modes remain in the keymap. Scenes --scene, int.,
ext.-- are second-level outline elements. Mode ignores lines beginning
in asterisks that have more than one token. So you can use single-*
lines to outline your screenplay. Mode also ignores lines beginning with
# so that you can make notes within the script. M-n creates a new
note-line.

Mode tracks the last two speakers and M-Return alternates them. It also
tracks the last exterior and last interior location.  Enter a period at
the INT. or EXT. location-prompt to get the last location automatically
--then hit M-0 for the dash-CONTINUOUS.  Cool, no?

The only emphasis in a spec-script is underlining. To underline a word,
begin it with an underbar: this underlined is _this.  LaTeX commands
like 
ewpage take the form *command on a line by themselves.  The
backslash in the second position is the key.

Commands:key             binding
---             -------

ESC				Prefix Command
C-q				screenplay-fill-dialogue
C-c				Prefix Command
TAB				indent-relative

ESC p			screenplay-count-pages
ESC n			screenplay-notes
ESC 0			screenplay-continuous
ESC 9			screenplay-night
ESC 8			screenplay-day
ESC 3			screenplay-skeleton-tv60
ESC 2			screenplay-skeleton-tv30
ESC 1			screenplay-skeleton-movie
ESC RET			screenplay-style-alternate
ESC S			center-paragraph
ESC s			center-line
ESC TAB			ispell-complete-word

C-c C-x			screenplay-offscreen
C-c C-v			screenplay-voiceover
C-c C-r			screenplay-style-flushright
C-c C-o			screenplay-style-titleover
C-c C-p			screenplay-style-parenthetical
C-c C-n			screenplay-style-narrative
C-c RET			screenplay-emphasis
C-c C-g			screenplay-style-scene
C-c TAB			screenplay-style-interiorshot
C-c C-e			screenplay-style-exteriorshot
C-c C-u			screenplay-style-continuing
C-c C-c			screenplay-style-speaker
C-c C-q			hide-sublevels
C-c C-k			show-branches
C-c C-l			hide-leaves
C-c C-a			show-all
C-c C-t			hide-body
C-c C-b			outline-backward-same-level
C-c C-f			outline-forward-same-level
C-c C-d			hide-subtree
C-c C-s			show-subtree
C-c @			outline-mark-subtree

In addition to any hooks its parent mode `outline-mode' might have run,
this mode runs the hook `screenplay-mode-hook', as the final step
during initialization.

Abbrev minor mode (indicator Abbrev):
Toggle abbrev mode.
With argument ARG, turn abbrev mode on iff ARG is positive.
In abbrev mode, inserting an abbreviation causes it to expand
and be replaced by its expansion.

auto-fill-function minor mode (indicator Fill):
Automatically break line at a previous space, in insertion of text.

</pre>

!fiction.el

This is also a very cool writing tool.  It has setups for both novels
and stories. And like the rest of ruby2shoes, you can use it without a
windowing system on an old computer.  Hit Esc-1 to start a novel, fill
out the skeleton, and you're writing away.  Check out the Alt-Enter key
stroke for starting new paragraphs and the Alt-P for word counts.

The best thing to me is that you no longer waste any time worrying about
how your fiction looks.  All you can deal with is the words because a
ruby2shoes file is an Emac's outline.  This lets you hide or reveal
parts, chapters, sections, subsections, and move them around as a whole.

Here is the help page from Emacs for this mode:
<pre>
Fiction mode:
Major mode for writing novels, children's stories, and other fiction.
Creates .fc files which are translated into LaTeX, dvi, ps, HTML and
text by external Python scripts.

Begin with M-1, the fiction skeleton.  Skeletons repeat a prompt until
they get an empty string - it's an Emacs thing.  Skeleton expects ONE
LINE title and chapter name.  But part, chapter and other titles can be
two lines long, just add another line below the asterisked one for
subtitles and such. Line-breaks are maintained in these two-line
titles. Use the skeleton author-prompt for multiple authors.

Mode is derived from outline.el which is derived from text.el. So many
benefits of those modes remain in the keymap. Chapters, sections, and
subsections are first-level outline elements and show their titles.  So
you can use single-* lines to outline your work. The second character of
these lines MUST be a space, i.e.: `* outline stuff'. Mode also ignores
lines beginning with pound-sign so that you can make notes within the
manuscript. M-n creates a new note-line.

Mode needs to identify normal paragraphs; use M-Return to begin them.
The only emphasis is underlining. To underline a word, begin it with an
underbar: this underlined is _this.  Use M-0 for forcing a line-break
outside of verse, quotes, and quotations and M-9 for forcing a new page.
M-8 inserts an asterisk-spacer, three asterisks in a centered paragraph.

If the mode becomes sluggish, as it will with larger novels on slower
machines, turn off the global font lock in Emac's Edit menu.  The
sluggishness comes from the way Emacs colors your fonts and turning off
the color returns you to normal, lightning-like speed.

Commands:key             binding
---             -------

ESC				Prefix Command
C-c				Prefix Command
TAB				indent-relative

ESC p			fiction-count-words
ESC o			fiction-outline
ESC n			fiction-notes
ESC m			fiction-insert-marker
ESC g			fiction-goto-marker
ESC 0			fiction-newline
ESC 9			fiction-newpage
ESC 8			fiction-asterisks
ESC 2			fiction-story-skeleton
ESC 1			fiction-novel-skeleton
ESC RET			fiction-style-paragraph
ESC S			center-paragraph
ESC s			center-line
ESC TAB			ispell-complete-word

C-c C-w			fiction-style-quotation
C-c C-v			fiction-style-verse
C-c C-u			fiction-emphasis
C-c C-p			fiction-style-part
C-c C-o			fiction-style-quote
C-c C-n			fiction-style-section
C-c RET			fiction-insert-marker2
C-c C-k			fiction-style-acknowledgements
C-c TAB			fiction-style-dedication
C-c C-g			fiction-goto-marker2
C-c C-e			fiction-style-epigraph
C-c C-c			fiction-style-chapter
C-c C-b			fiction-style-subsection
C-c C-q			hide-sublevels
C-c C-l			hide-leaves
C-c C-a			show-all
C-c C-t			hide-body
C-c C-f			outline-forward-same-level
C-c C-d			hide-subtree
C-c C-s			show-subtree
C-c @			outline-mark-subtree

In addition to any hooks its parent mode `outline-mode' might have run,
this mode runs the hook `fiction-mode-hook', as the final step
during initialization.

Abbrev minor mode (indicator Abbrev):
Toggle abbrev mode.
With argument ARG, turn abbrev mode on iff ARG is positive.
In abbrev mode, inserting an abbreviation causes it to expand
and be replaced by its expansion.

auto-fill-function minor mode (indicator Fill):
Automatically break line at a previous space, in insertion of text.</pre>

