Skip to content

jacorbal/screenwriter

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

screenwriter -- A LaTeX class for writing screenplays

  • Author: J. A. Corbal (jacorbal [at] gmail [dot] com)
  • Last update: Sun May 10 20:02:45 UTC 2026
  • Version: 1.0.3

License

This work may be distributed and/or modified under the conditions of the LaTeX Project Public License (LPPL), either version 1.3c of this license or (at your option) any later version. The latest version of the license is available at: https://www.latex-project.org/lppl.txt

The project is maintained by the author (for now).

Overview

The screenwriter class provides a LaTeX document class for writing film and television screenplays. It is based on John Pate's screenplay.cls, but updated for current LaTeX distributions and extended with a modular language system and better integration with babel.

The class focuses on:

  • A standard screenplay layout (12pt typewriter, one column, US Letter or A4 paper).
  • Convenient macros for sluglines, dialogue, transitions, and cover pages.
  • Language‑dependent strings (such as “FADE IN”, “THE END”, “INT.”, “EXT.”) implemented via separate language definition files.

Files

The distribution typically contains:

  • The main class file:

    • screenwriter.cls
  • Language definition files providing localized versions of all internal strings used by the class (e.g., “FADE IN”, “THE END”, “TITLE OVER”, “(O.S.)”, &c.):

    • screenwriter-lang-english.ldf
    • screenwriter-lang-catalan.ldf
    • screenwriter-lang-esperanto.ldf
    • screenwriter-lang-french.ldf
    • screenwriter-lang-galician.ldf
    • screenwriter-lang-german.ldf
    • screenwriter-lang-italian.ldf
    • screenwriter-lang-portuguese.ldf
    • screenwriter-lang-spanish.ldf
  • User documentation and examples:

    • screenwriter-doc-a4.tex
    • screenwriter-doc-a4.pdf
    • screenwriter-doc-letter.tex
    • screenwriter-doc-letter.pdf
    • sample.tex
    • sample.pdf
  • License file (LPPL 1.3c):

    • LICENSE
  • This file:

    • README

Installation

For a local installation in a personal TEXMF tree, copy the files as follows:

  • Place screenwriter.cls and all screenwriter-lang-*.ldf files into a directory such as:

    TEXMFHOME/tex/latex/screenwriter/
    

    where TEXMFHOME is your local TEXMF root (for example ~/texmf on a typical TeX Live installation).

  • Run mktexlsr or the equivalent command for your TeX distribution to update the file name database, if required.

Once installed, LaTeX should find the class and language files automatically.

Usage

A minimal document using the default (English) settings:

\documentclass{screenwriter}

\title{My First Screenplay}
\author{Screenwriter Name}

\begin{document}
    \coverpage

    \fadein
    \intslug[DAY]{Office}

    \begin{dialogue}{WRITER}
        This is a line of dialogue.
    \end{dialogue}

    \theend
\end{document}

Page Layout and Options

The class loads the standard article class internally and sets up a screenplay-friendly layout:

  • 12pt typewriter font
  • One column, one-sided
  • US Letter (default) or A4 paper
  • Ragged-right text, custom margins and dialogue widths

Paper options:

  • a4paper -- use A4 paper and adjust the width of dialogue and address blocks accordingly.
  • letterpaper -- use US Letter paper (default).

Example:

\documentclass[a4paper]{screenwriter}

Screenplay style options:

  • literary -- sluglines without scene numbers (default).
  • technical -- sluglines with automatically numbered scenes in the margins.

Example:

\documentclass[technical]{screenwriter}

Language support

The class provides a simple language mechanism for its own internal strings (such as “FADE IN”, “THE END”, “INT.”, “EXT.”, etc.). This is separate from, but designed to cooperate with, babel.

There are two ways to select a language:

  1. Via class options (explicit language)

    You can explicitly choose the language used for the internal strings by passing one of the available language options to the class:

    • english (default)
    • catalan
    • esperanto
    • french
    • galician
    • german
    • italian
    • portuguese
    • spanish

    Example:

     \documentclass[spanish]{screenwriter}
    

    This will load screenwriter-lang-spanish.ldf and use Spanish versions for all internal labels, regardless of whether babel is loaded.

  2. Via babel (implicit language)

    If no explicit language option is given to the class, but babel is loaded with a language option, the class will attempt to detect the current language through \languagename at \begin{document} and load the corresponding screenwriter-lang-<language>.ldf file, if available.

    Example:

     \documentclass{screenwriter}
     \usepackage[french]{babel}
    

    In this case, the class will try to use screenwriter-lang-french.ldf. If no matching language file is found, it falls back to English.

Note that the class does not load babel on its own; users are expected to load babel (or polyglossia) in the usual way if they require language-specific hyphenation and typography.

Main commands

The class defines several commands and environments tailored to screenplays:

  • Cover and title

    • \coverpage Produce a standard cover page with title, author, and contact information.

    • \nicholl Alternative simple title page variant.

    • \title{...}, \author{...} Standard LaTeX macros reused by the class.

    • \realauthor{...} Set the real author name for the cover in case that \author is a pseudonym, or a shorter version of the name.

    • \address{...}, \agent{...} Provide address and agent information for the cover page.

  • Sluglines

    • \intslug[QUALIFIER]{LOCATION} Interior slugline (INT.).

    • \extslug[QUALIFIER]{LOCATION} Exterior slugline (EXT.).

    • \intextslug[QUALIFIER]{LOCATION} Combined interior/exterior slugline (INT./EXT.).

    • \extintslug[QUALIFIER]{LOCATION} Combined exterior/interior slugline (EXT./INT.).

    The exact abbreviations and punctuation are language-dependent and defined in the corresponding .ldf files.

  • Dialogue

    • Environment dialogue[paren]{CHARACTER} Typesets character name and dialogue in the standard screenplay layout. An optional parenthetical can be provided in the optional argument.

    • \dialbreak[paren]{CHARACTER} Ends the current dialogue block with a “(MORE)” marker, starts a new page, and continues the same character's dialogue marked as “(CONT'D)”.

  • Transitions and labels

    • \fadein, \fadeout Insert “FADE IN:” and “FADE OUT:” (or their localized versions).

    • \intercut, \flashback, \flashforward Insert transition labels such as “INTERCUT WITH:” and “FLASHBACK TO:”.

    • \titleover environment For “TITLE OVER:” blocks (such as on-screen text).

    • \theend Typesets the final “THE END” (or localized equivalent) centered.

For detailed examples and spacing behaviour, see the accompanying screenwriter-doc.pdf.

Development and contributions

The class is intended as an up-to-date, language-aware replacement for the original screenplay.cls, while preserving the general user interface familiar to screenwriters using LaTeX.

Bug reports, suggestions, and contributions (especially new language definition files) are welcome. Please contact the maintainer at: (jacorbal [at] gmail [dot] com).

About

A LaTeX class for writing screenplays

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages