From fe77ff4cdab25604b424a273c726920830f63abc Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Fri, 29 Sep 2006 14:02:32 +0000 Subject: screenplay update (26sep06) git-svn-id: svn://tug.org/texlive/trunk@2219 c570f23f-e606-0410-a88d-b1316a301751 --- .../source/latex/screenplay/screenplay.dtx | 1099 ++++++++++++++++++++ 1 file changed, 1099 insertions(+) create mode 100644 Master/texmf-dist/source/latex/screenplay/screenplay.dtx (limited to 'Master/texmf-dist/source/latex/screenplay/screenplay.dtx') diff --git a/Master/texmf-dist/source/latex/screenplay/screenplay.dtx b/Master/texmf-dist/source/latex/screenplay/screenplay.dtx new file mode 100644 index 00000000000..a497fa1de4c --- /dev/null +++ b/Master/texmf-dist/source/latex/screenplay/screenplay.dtx @@ -0,0 +1,1099 @@ +% \iffalse +% +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+= +% screenplay.dtx +% Latest version is available as: +% http://dvc.org.uk/sacrific.txt/screenplay.zip +% +% Authored by and Copyright (C)2006 by +% John Pate +% http://dvc.org.uk +% +% This program is free software; you can redistribute it and/or modify it +% under the terms of the GNU General Public License as published by the +% Free Software Foundation; either version 2 of the License, or (at your +% option) any later version. +% +% This program is distributed in the hope that it will be useful, but +% WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY +% or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +% for more details. +% +% You should have received a copy of the GNU General Public License along +% with this program; if not, write to the Free Software Foundation, Inc., +% 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +% +% GPL v2 text also available as: +% http://dvc.org.uk/gplv2.txt +% +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+= +% \fi +% +% \iffalse +%<*dtx> +\ProvidesFile{screenplay.dtx} +\NeedsTeXFormat{LaTeX2e}[2003/12/01] +% +%\ProvidesFile{screenplay.drv} +% \fi +%\ProvidesFile{screenplay}[2006/09/27 v1.487 +% LaTeX2e Draft Screenplay document class +% (C)2006 John Pate +% released under the GNU General Public License] +% \iffalse +%<*driver> +\documentclass{article} +\usepackage{doc} +\usepackage[dvips,letterpaper]{geometry} +\RecordChanges +\CodelineIndex +\begin{document} + \DocInput{screenplay.dtx} +\end{document} +% +% \fi +% +% \CheckSum{295} +% \changes{1.0.0}{2006 Sep 23}{initial version of \texttt{.dtx}, class date +% \texttt{[2006/09/23]}} +% \changes{1.0.1}{2006 Sep 24}{minor code changes, revision to documentation} +% \changes{1.0.2}{2006 Sep 26}{minor code changes, revision to documentation, +% added \texttt{test} file, % \texttt{example} file, to \texttt{.dtx}, +% amended \texttt{.ins}} +% \changes{1.0.3}{2006 Sep 27}{minor code changes, revision to documentation, +% added change history} +% +% \MakeShortVerb{\|} +% +% \GetFileInfo{screenplay} +% \title{\bfseries A \LaTeXe\ class for Draft Screenplays} +% \author{by\\John Pate} +% \date{This paper describes class \texttt{\filename}\\ +% version \fileversion, released \filedate} +% \maketitle +% +% \section{Introduction} +% +% Every year \textit{The Academy of Motion Picture Arts +% and Sciences} runs a competition for screenplay writers, +% the \textit{Nicholl Fellowships in Screenwriting}. +% Full-length feature film screenplays are submitted (for +% a fee). You can win money but, more importantly, placing in +% the competition will make agents take notice. The +% \textit{Academy} recommends a particular format which this +% \texttt{class} file attempts to duplicate, using a +% \texttt{.pdf} available from the Academy website as the +% model. This format has various functions, amongst which is a +% gate-keeping function to show you have at least a first idea. +% It also gives readers a better chance of assessing how long, +% in filmic terms, your screenplay would be. Formatted along +% the lines recommended, you should aim to have your screenplay +% in the region of 120 pages long. Although they say A4 +% paper is acceptable, it is widely held that you severely +% handicap yourself if you don't use American 8.5" by 11" +% Letter size paper. I have a ream on my lap as I type: 20 +% pound, 106 bright, acid free. My sister brought it from +% America for me---it's very expensive to buy outside the US +% and not easy to find. However, if all else fails you can +% have a stationer cut down A3 80gsm paper for you. It won't +% be the same weight but it's unlikely anyone will notice. One +% might imagine it's at the photocopy stage that dealing with A4 +% in America becomes a nuisance---one more reason to put +% your magnum opus to the bottom of the pile. +% +% Of course, if you didn't know this already you likely +% need to do some serious reading and research \emph{before} +% you start writing. I guess trying to understand what's +% going on here is a start. +% +% The format specifications are pretty straightforward. +% You'll have to believe me when I say it wasn't quite so +% straightforward for me to start from a minimal understanding +% of \TeX\ and \LaTeXe\ to a usable \texttt{.dtx} file. +% +% This is an attempt to turn \TeX\ into a typewriter emulator. +% A crazy idea---which is why it appealed to me, obviously. +% Fortunately I'm easily entertained. +% +% I hope \texttt{screenplay.dtx} proves of use (and +% instruction) to others as it has to me. +% +% Anyhoo, on with the show\dots +% \pagebreak +% \section{Getting started} +% +% You should have: +% \begin{itemize} +% \item\texttt{README}---plain text file +% \item\texttt{screenplay.dtx}---the source file +% \item\texttt{screenplay.ins}---driver file +% \item\texttt{screenplay.pdf}---the file I assume you're reading right now +% \item\texttt{test.pdf}---format test \texttt{.pdf} result +% \item\texttt{COPYING}---GNU General Public License +% \end{itemize} +% +% If not, get \texttt{screenplay.zip} via +% \texttt{http://dvc.org.uk/sacrific.txt/screenplay.zip} +% +% You use the command, \\ +% \texttt{> latex screenplay.ins} \\ +% to generate from \texttt{screenplay.dtx}\dots +% \begin{itemize} +% \item\texttt{screenplay.cls}---class file +% \item\texttt{example.tex}---example (very) mini-screenplay +% \item\texttt{test.tex}---format test source file +% \end{itemize} +% +% Once you've unpacked the bundle and generated the \texttt{class} +% file do, \\ +% \texttt{> latex test} \\ +% to generate the \texttt{test.dvi} you can compare with the +% \texttt{test.pdf}. +% +% Make sure everything in the printing chain can deal properly +% with \emph{letter paper}. Print out your version of +% \texttt{test} and the provided \texttt{test.pdf} (on letter +% paper of course!) and compare them. The two printouts should +% be dimensionally identical. If you have an old, or broken, +% version of \texttt{dvips} you'll need to fix it before you +% proceed further. +% +% \section{Some example bits of markup} +% +% Although \texttt{screenplay.cls} builds on the standard \TeX\ document +% class \texttt{article}, it is not intended you pass it any options +% (except for the release date specification, see below). +% The formatting required is minimalist. \texttt{screenplay.cls} will +% issue an error message if you use any options. +% +% |\documentclass{screenplay}[2006/09/27]| \\ +% is your first command, you can give the optional date argument in +% case of any earlier copies of \texttt{screenplay.cls} lying around. +% I'll try not to break things retro-actively with later revisions +% but this can't be guaranteed. Per this revision, anything marked +% with |[2006/09/23]| or later will produce the expected results. +% +% Your second command is, of course\ldots\\ +% |\begin{document}| +% +% The first typesetting command, in the body of the document, must +% be the one to build the title page. For the +% \textit{Nicholl Competition} this is simply,\\ +% |\nicholl{the title of your screenplay}| \\ +% for other formats, please refer to \textbf{The Coding} section or +% \texttt{example.tex}. +% +% The next command is always |\fadein| to produce the words FADE~IN: +% left justified. +% +% Next would typically be a slugline, \\ +% |\intslug[day]{Johnny's House}| \\ +% which would produce\ldots \\ +% INT.~JOHNNY'S HOUSE \quad DAY +% +% I made the time of day optional because my screenplay had +% stuff happening in space where there is no time of +% day. You will likely \emph{always} use either \textit{day} +% or \textit{night}. (Refer to the \textit{Academy's} information +% on formatting.) Likewise there's an |\extslug[]{}| for EXT. +% +% After a slugline you would typically have some description. This +% is simply ordinary text with paragraph breaks as per usual. +% +% When you get to dialogue, you have the |dialogue environment|. +% +% |\begin{dialogue}{Johnny}| |After| |some| |description| |you|\\ +% |would| |typically| |have|\quad |some| |dialogue.| |\end{dialogue}| +% +% Directions (short) can be put inside dialogue text either as an optional +% argument to the dialogue environment, |\begin{dialogue}[shouting]{Johnny}| +% which will result in parenthesized text below the dialogue name, or +% the |\paren{}| command can be used to put parentheticals into the +% blocks of dialogue text. +% +% Do not put any blank lines in dialogue text. +% +% So you wander on with your screenplay requiring little in the +% way of \LaTeXe's spiffy powers until you reach the end of the +% final scene. Personally I use \texttt{Elvis} with a selection +% of macros in my \texttt{.exrc} to save me having to type the +% commands I've invented. +% +% The command at the end of the final scene is always +% |\fadeout| to produce the words FADE~OUT: flushright. +% +% Then it's simply a case of |\theend| and |\end{document}|. +% +% The only tricky parts of the formatting are deciding where to +% put \emph{pagebreaks} and hunting down places where +% \emph{linebreaks}\ldots\ |\\|\ \dots will help \TeX\ out with +% formatting. You may need to insert linebreaks manually even +% where `|Overfull \hbox|' warnings are absent. You'll know +% when it is necessary by spotting extra vertical whitespace in +% the document. |example.tex| demonstrates this, read through +% the raw |.tex| file and try modifying it as indicated. +% It's likely you will have to put a quite a few linebreaks +% manually into dialogue text due to the restricted margins. +% +% \textbf{Do not put in pagebreaks until you have really, really, +% really finished editing.} +% +% Putting in pagebreaks will likely involve using the |\dialbreak| +% command, though for description text |\pagebreak| is all that +% is required. +% +% The |\dialbreak| command needs to know the character name and any +% optional directions as required. +% +% If you've used the |\titleover environment| you may +% need the |\titbreak| command (more tea, vicar?). However, mostly +% for TITLE OVER: you'll be doing a date to accommodate flash\-backs +% or flash\-forwards, I expect, so use the |\centretitle| command +% as in\\ +% |\centretitle{December 21, 2012}|.\\ +% Yes, that's the English (or for that matter French and Canadian) +% ``centre'' not ``center'' in a stunning break from tradition. +% +% For further enlightenment, you should scrutinise the raw text of +% \texttt{example.tex} and peruse \textbf{The Coding} +% section of this document. +% +% You can see a completed script marked-up +% via \LaTeXe\ and formatted with \texttt{screenplay.cls} +% at \texttt{http://dvc.org.uk/sacrific.txt/}. +% There is also, at time of writing, a ``work-in-progress'' script +% that has had manual linebreaks inserted but not manual pagebreaks. +% +% \section{Specs from the Academy} +% +% Be sure to read and inwardly digest, +% \texttt{http://www.oscars.org/nicholl/format.html} +% and view, \texttt{http://www.oscars.org/nicholl/script.pdf}, +% the model document. +% +% \begin{itemize} +% \item Letter paper 8.5"x11.0" \\ +% Courier 12pt, 10 pitch +% +% \item\textbf{Page} \nopagebreak \\ +% Top margin: 1.0" \\ +% Bottom margin: 0.5"-1.5" \\ +% Left margin: 1.5" \\ +% Right margin: 1.0" +% +% \item\textbf{Dialogue} \nopagebreak \\ +% tab NAME to: 4.2" \\ +% Left margin: 3.0" \\ +% Right margin: 2.5" \\ +% \textsl{Parenthetical}\nopagebreak \\ +% Left margin: 3.7" \\ +% Right margin: 3.3" +% +% \item\textbf{Numbering} \nopagebreak \\ +% top right, Arabic \\ +% Top margin: 0.5" \\ +% Right margin: 0.75" +% \end{itemize} +% +% INT/EXT. SLUG LINE DESCRIPTION \quad DAY/NIGHT \nopagebreak \\ +% (with some kind of extra spacing before time of day) +% +% \StopEventually{\PrintIndex\PrintChanges} +% +% \section{The Coding} +% +% \texttt{screenplay.cls v1.487} was tested with\ldots +% \begin{itemize} +% \item pdfe\TeX\ 3.141592-1.21a-2.2 (\Web2C\ 7.5.4) +% \item \texttt{dvips(k)} 5.95a +% \item \texttt{kpathsea} version 3.5.4 +% \item \texttt{article} 2004/02/16 v1.4f +% \end{itemize} +% +% IMHO, it's worth reading through the comments, there's +% some useful stuff for you in there. \\ +% \vspace{1ex} \\ +%\iffalse +%<*class> +%\fi +% We are a \LaTeXe\ thang\ldots +% \begin{macrocode} +\NeedsTeXFormat{LaTeX2e}[2003/12/01] +% \end{macrocode} +% Say it like it is\ldots +% \begin{macrocode} +\ProvidesClass{screenplay}[2006/09/27 v1.487 + LaTeX2e Draft Screenplay document class + (C)2006 John Pate + released under the GNU General Public License] +% \end{macrocode} +% Whinge if the user is being a bozo\ldots +% \begin{macrocode} +\DeclareOption*{% + \PackageError{screenplay}{Unwanted option '\CurrentOption'}% + {There are no options available for class screenplay v1.487}} +\ProcessOptions\relax +% \end{macrocode} +% |ifthen| needed for testing for optional args\ldots +% \begin{macrocode} +\RequirePackage{ifthen} +% \end{macrocode} +% Use \texttt{article} class for its base functionality, +% \emph{must} be +% American letter paper \emph{not} A4, \texttt{screenplay.cls} +% eats any papersize options and ignores them\ldots +% \begin{macrocode} +\LoadClass[12pt,letterpaper,onecolumn,oneside]{article}[2004/02/16] +% \end{macrocode} +% \texttt{geometry} package makes dvips/pdf do the right thang +% for letter paper\ldots +% \begin{macrocode} +\RequirePackage[dvips,letterpaper]{geometry} +% \end{macrocode} +% \ldots and make sure your printer driver knows letter. +% Yes, you \emph{must} use American 8.5"x11" letter +% paper---stationers in the UK call it `quarto' paper, +% see\ldots\\ +% \texttt{http://www.gwydir.demon.co.uk/jo/units/print.htm} +% \begin{macrocode} +\setlength{\paperheight}{11in} +\setlength{\paperwidth}{8.5in} +% \end{macrocode} +% +% \emph{Must} have \texttt{Courier} as font (may cause warnings about +% font stuff, ignore)\ldots +% \begin{macrocode} +\RequirePackage{courier} +\renewcommand*\familydefault{\ttdefault} +% \end{macrocode} +% Can load hyphenation ability for non-standard font\ldots +% \begin{macrocode} +%\RequirePackage[htt]{hyphenat} +% \end{macrocode} +% but \emph{don't}, you should \emph{not} hyphenate for Nicholl format +% you want this\dots +% \begin{macrocode} +\raggedright +% \end{macrocode} +% (you'll have to nuke |\raggedright| wherever found to test out +% hyphenation) +% +% \begin{macro}{Page Nums} +% Arabic top right\ldots +% \begin{macrocode} +\pagenumbering{arabic} +\pagestyle{myheadings} +% \end{macrocode} +% \begin{macro}{CR/LF} +% Line spacing / pitch---it looks to me the standard +% \LaTeXe\ \texttt{courier} font is correct pitch, +% 12pt line-spacing is what's in \texttt{script.pdf}\ldots +% \begin{macrocode} +\setlength{\baselineskip}{12pt plus 0pt minus 0pt} +% \end{macrocode} +% and this |\baselinestretch| appears to emulate \texttt{script.pdf} +% closely\dots +% \begin{macrocode} +\renewcommand*{\baselinestretch}{0.8} +% \end{macrocode} +% adjust space above |\minipage| in dialogue to emulate +% description linebreaks, must be adjusted if |\baselinestretch| +% is altered\ldots +% \begin{macrocode} +\newcommand{\dialfix}{\vspace{3pt}} +% \end{macrocode} +% skip one line between paras\ldots +% \begin{macrocode} +\setlength{\parskip}{\baselineskip} +% \end{macrocode} +% no paragraph indent\ldots +% \begin{macrocode} +\setlength{\parindent}{0in} +% \end{macrocode} +% \end{macro} +% \begin{macro}{Margins/tabs} +% See specs, +% fudge factors needed to resemble the `correct' +% layout, take a ruler to it and \texttt{script.pdf}\ldots +% +% left margin 1.5", default 1" + +% \begin{macrocode} +\setlength{\evensidemargin}{0.5in} +\setlength{\oddsidemargin}{0.5in} +% \end{macrocode} +% top margin (0.5" to number, 1" to body)\ldots +% \begin{macrocode} +\setlength{\topmargin}{-0.5in} +\setlength{\headsep}{0.4in} +\setlength{\topskip}{0in} +% \end{macrocode} +% 11" - (1" top margin) - (0.5" bottom) = +% \begin{macrocode} +\setlength{\textheight}{9.5in} +% \end{macrocode} +% \ldots bottom can go to 1.5" for page breaking purposes. +% +% 6" width for description text to give 1" right margin, +0.1" fudge\ldots +% \begin{macrocode} +\setlength{\textwidth}{6.1in} +% \end{macrocode} +% Extra inter-word spacing in sluglines\ldots +% \begin{macrocode} +\newcommand{\slugspace}{\hspace{2.0em plus 0em minus 0em}} +% \end{macrocode} +% \ldots could do it various other ways\ldots +% \begin{macrocode} +%\newcommand{\slugspace}{ - } +%\newcommand{\slugspace}{\quad} +% \end{macrocode} +% \textbf{Tabbing / spacing dialogues}\\ +% Width of dialogue text, 3" with 0.2" fudge\ldots +% \begin{macrocode} +\newcommand{\dialwidth}{3.2in} +% \end{macrocode} +% 3" from left edge of page (1.5" left margin + 1.5")\ldots +% \begin{macrocode} +\newcommand{\dialtab}{\hspace*{1.5in}} +% \end{macrocode} +% \textbf{name}, tab in 4.2" (margin + |\dialtab| + |\dialnametab|) +% from left edge of page\ldots +% \begin{macrocode} +\newcommand{\dialnametab}{\hspace*{1.2in}} +% \end{macrocode} +% parenthetical 1.5" with 0.2" fudge\ldots +% \begin{macrocode} +\newcommand{\parenwidth}{1.7in} +% \end{macrocode} +% parenthetical, tab in 3.7" (margin + |\dialtab| + |\parentab|) +% from left edge of page\ldots +% \begin{macrocode} +\newcommand{\parentab}{\hspace{0.7in}} +% \end{macrocode} +% fix for formatting of multi-line parenthetical +% (I really should look at the \TeX\ source sometime because +% I don't know why I had to do this.)\ldots +% \begin{macrocode} +\newcommand{\parenkludge}{\dialfix} +% \end{macrocode} +% +% AFAICS floats not involved\ldots +% \begin{macrocode} +\renewcommand*{\textfraction}{1} +\renewcommand*{\topfraction}{0} +\renewcommand*{\bottomfraction}{0} +% \end{macrocode} +% \end{macro} +% \textbf{Title Page} +% +% Use one of |\nicholl|, |\titleauthor|, |\titleextra| to taste. +% This must be the first command after |\begin{document}|. +% +% \begin{macro}{\nicholl} +% |\nicholl{title of your magnum opus}| +% for Nicholl Competition---just the title, not bolded\ldots +% \begin{macrocode} +\newcommand{\nicholl}[1]{ + \thispagestyle{empty} + \vspace*{2.25in} + \begin{center}\MakeUppercase{#1}\end{center} + \newpage\setcounter{page}{1} +}%nicholl +% \end{macrocode} +% \end{macro} +% Now the ability to make the the type of cover pages for +% Draft Scripts submitted to agents, +% |\titleauthor| being of the form suggested in \texttt{script.pdf}. +% +% You may have to adjust the |\titlesepspace| if you put in +% a lot of text but if you do there's probably too much\ldots +% \begin{macrocode} +\newcommand{\titlesepspace}{\vspace{3.75in plus 0in minus 1.0in}} +% \end{macrocode} +% there's also a the space occupied by the optional copyright +% year\ldots +% \begin{macrocode} +\newcommand{\copyspace}{\vspace*{2ex plus 0ex minus 0ex}} +% \end{macrocode} +% +% \begin{macro}{\titleauthor} +% |\titleauthor| |[year]| |{title}| |{author's name}| +% |{contact details\\email etc}| +% the copyright notice doesn't fit the spec so optional\dots if you +% put it on the web though \copyright\ certainly won't hurt! +% \begin{macrocode} +\newcommand{\titleauthor}[4][]{ +% \end{macrocode} +% no page number\ldots +% \begin{macrocode} + \thispagestyle{empty} +% \end{macrocode} +% 0.5" topmargin +\ldots +% \begin{macrocode} + \vspace*{2.25in} +% \end{macrocode} +% centre and bold the title (bolding the title is probably the only +% embellishment you're allowed)\ldots +% \begin{macrocode} + \begin{center}{\textbf{\MakeUppercase{#2}}}\\ + \vspace{\baselineskip} + by\\ + \vspace{\baselineskip} + #3\\ + \vspace*{\baselineskip} +% \end{macrocode} +% logic for handling optional \copyright\ argument\ldots +% \begin{macrocode} + \ifthenelse{\not\equal{#1}{}} + { + \scriptsize\copyright\normalsize#1 + }{ + \copyspace + } + \end{center} +% \end{macrocode} +% |\titlesepspace| is a rubber length, try not put in excessive +% amounts of text though\ldots +% \begin{macrocode} + \titlesepspace +% \end{macrocode} +% Details in a |\parbox| 5" out from left margin\ldots +% \begin{macrocode} + \hspace*{4.0in}\parbox[t]{2.0in}{\raggedright#4} +% \end{macrocode} +% reset page numbers for actual blurb\ldots +% \begin{macrocode} + \newpage\setcounter{page}{1} +}%titleauthor +% \end{macrocode} +% \end{macro} +% \begin{macro}{\tilteextra} +% |\titleextra{extra blurb}| |{title}| |{author's name}| +% |{contact details\\email etc}| +% for title page---author details with extra blurb +% not recommended by \texttt{script.pdf} but by popular request, +% apparently some people like to put in copyright and +% WGA registration details +% \begin{macrocode} +\newcommand{\titleextra}[4]{ + \thispagestyle{empty} + \vspace*{2.25in} + \begin{center}{\textbf{\MakeUppercase{#2}}}\\ + \vspace{\baselineskip} + by\\ + \vspace{\baselineskip} + #3\\ + \vspace*{\baselineskip} + \copyspace + \end{center} + \titlesepspace +% \end{macrocode} +% Extra details 3" out in a |\parbox|, 2" space then other details +% in a |\parbox| 5" out\ldots +% \begin{macrocode} + \parbox[t]{2.0in}{\raggedright#1}\hspace*{2.0in} + \parbox[t]{2.0in}{\raggedright#4} + \newpage\setcounter{page}{1} +}%titleextra +% \end{macrocode} +% \end{macro} +% End title page---author details +% \end{macro} +% \textbf{Dialogue blocks}\ldots +% \begin{macro}{\paren} +% |\paren{hello world}| +% parenthetical within dialogue environment stage dirs\ldots +% only for \emph{very short} text (directions) within dialogue +% environment, the optional argument is for internal use +% \emph{only}\ldots +% \begin{macrocode} +\newcommand{\paren}[2][\\]{% +#1\parentab\parbox[t]{\parenwidth}{\raggedright(#2)\parenkludge}\\ +}%paren +% \end{macrocode} +% \end{macro} +% \begin{macro}{dialogue env} +% |\begin{dialogue}[directions]{character name}| \ \ldots\ |\end{dialogue}|\\ +% |\begin{dialogue}{character name}| \ \dots\ |\end{dialogue}|\\ +% |\minipage| won't allow pagebreaks, see below for new manual +% pagebreak command for this environment. Do \emph{not} have blank lines +% inside this environment. +% \textbf{Name} is outside |\minipage| to mitigate `|Overfull \hbox|' +% warnings with long names\ldots +% \begin{macrocode} +\newenvironment{dialogue}[2][]{ + +\dialtab\dialnametab\hbox{\MakeUppercase{#2}}\nopagebreak\\ +\dialtab\begin{minipage}[b]{\dialwidth} +\dialfix +\raggedright +\ifthenelse{\not\equal{#1}{}} +{ +\paren[]{#1} +}{} +}{ +\end{minipage} + +}%dialogue +% \end{macrocode} +% \end{macro} +% \begin{macro}{\dialbreak} +% Forcing pagebreak in dialogue,\\ +% |\dialbreak{Character}| \\ +% |\dialbreak[directions]{Character}|\\ +% (need to know character name---\LaTeXe\ scoping rules don't +% seem to like global vars, somebody tell me otherwise) +% \emph{Note:} +% only do any manual pagebreaks when you absolutely positively +% have killed every muthafucka in the room!\dots +% \begin{macrocode} +\newcommand{\dialbreak}[2][]{ +\\\dialnametab\hbox{(MORE)}% +\end{dialogue} +\pagebreak +\ifthenelse{\not\equal{#1}{}} +{ +\begin{dialogue}[#1]{\MakeUppercase{#2} (CONT'D)} +}{ +\begin{dialogue}{\MakeUppercase{#2} (CONT'D)} +} +}%dialbreak +% \end{macrocode} +% \end{macro} +% \textbf{Sluglines}\\ +% Optional arg for night/day. +% You probably should not consider time of day optional when +% you're writing descriptions---unless you're in a spaceship, +% of course\ldots +% \begin{macro}{\intslug} +% INT. SLUGLINE DESCRIPTION \quad DAY\\ +% |\intslug[time of day]{description text}|\\ +% |\intslug{description text}| +% \begin{macrocode} +\newcommand{\intslug}[2][]{ + +\MakeUppercase{INT. #2}% +\ifthenelse{\not\equal{#1}{}} + {% +\slugspace\MakeUppercase{#1}\hspace{\fill} + }{} +\nopagebreak + + +}%intslug +% \end{macrocode} +% \end{macro} +% \begin{macro}{\extslug} +% EXT. SLUGLINE DESCRIPTION \quad DAY\\ +% |\extslug[time of day]{description text}| \\ +% |\extslug{description text}| +% \begin{macrocode} +\newcommand{\extslug}[2][]{ + +\MakeUppercase{EXT. #2}% +\ifthenelse{\not\equal{#1}{}} + {% +\slugspace\MakeUppercase{#1}\hspace{\fill} + }{} +\nopagebreak + + +}%extslug +% \end{macrocode} +% \end{macro} +% \begin{macro}{\intextslug} +% Apparently people do this\dots \\ +% INT./EXT. SLUGLINE DESCRIPTION \quad DAY\\ +% |\intextslug[time of day]{description text}| \\ +% |\intextslug{description text}| +% \begin{macrocode} +\newcommand{\intextslug}[2][]{ + +\MakeUppercase{INT./EXT. #2}% +\ifthenelse{\not\equal{#1}{}} + {% +\slugspace\MakeUppercase{#1}\hspace{\fill} + }{} +\nopagebreak + + +}%intextslug +% \end{macrocode} +% \end{macro} +% \begin{macro}{\extintslug} +% and/or this\dots \\ +% EXT./INT. SLUGLINE DESCRIPTION \quad DAY\\ +% |\extintslug[time of day]{description text}| \\ +% |\extintextslug{description text}| +% \begin{macrocode} +\newcommand{\extintslug}[2][]{ + +\MakeUppercase{EXT./INT. #2}% +\ifthenelse{\not\equal{#1}{}} + {% +\slugspace\MakeUppercase{#1}\hspace{\fill} + }{} +\nopagebreak + + +}%extintslug +% \end{macrocode} +% \end{macro} +% \textbf{Title Over} +% +% \begin{macro}{titleover env} +% Title Over\ldots\\ +% |\begin{titleover}| \ \ldots\ |\end{titleover}| +% as pseudo dialogue environment (think ``Star Wars'') +% the optional argument is for internal use \emph{only}\ldots +% \begin{macrocode} +\newenvironment{titleover}[1][]{ + +\ifthenelse{\not\equal{#1}{}} +{%true +TITLE OVER (#1):\\ +}{%false +TITLE OVER:\\ +}%ifthenelse +\vspace{\baselineskip} +\nopagebreak +\dialtab\begin{minipage}[b]{\dialwidth} +\raggedright +}{ +\end{minipage} + +}%titleover +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\titbreak} +% pagebreak for titleover environment\ldots +% \begin{macrocode} +\newcommand{\titbreak}{ +\\\dialnametab\hbox{(MORE)}% +\end{titleover} +\pagebreak +\begin{titleover}[CONT'D] +}%titbreak +% \end{macrocode} +% \end{macro} +% \begin{macro}{\centretitle} +% titleover for short text +% |\centretitle| |{short text}| +% most often a date\ldots +% \begin{macrocode} +\newcommand{\centretitle}[1]{ + + +TITLE OVER: +\nopagebreak + +\hspace*{\fill}{#1}\hspace{\fill} + + +}%centretitle +% \end{macrocode} +% \end{macro} +% \textbf{Other spiffy macros} +% +% \begin{macro}{\fadein} +% |\fadein| +% always the \emph{first} thing in your script, for some reason\ldots +% \begin{macrocode} +\newcommand{\fadein}{ + + +FADE IN: + + +}%fadein +% \end{macrocode} +% \end{macro} +% \begin{macro}{\fadeout} +% |\fadeout| +% always the last thing in your script, for some reason\ldots +% +% \begin{macrocode} +\newcommand{\fadeout}{ + + +\hspace*{\fill}FADE OUT: + + +}%fadeout +% \end{macrocode} +% \end{macro} +% \begin{macro}{\intercut} +% I don't bother with this but it's in \texttt{script.pdf}\ldots +% \begin{macrocode} +\newcommand{\intercut}{ + + +\hspace*{\fill}INTERCUT WITH: + + +}%intercut +% \end{macrocode} +% \end{macro} +% IMHO this stuff is useful for description ... +% \begin{macro}{\pov} +% point of view\ldots +% \begin{macrocode} +\newcommand{\pov}{P.O.V. } +% \end{macrocode} +% \end{macro} +% \begin{macro}{\nb} +% \begin{macrocode} +\newcommand{\nb}{NOTE: } +% \end{macrocode} +% \end{macro} +% \begin{macro}{\theend} +% Yeah! This is what we've been waiting for\ldots +% OK, so this is actually the \emph{last} thing in the script\ldots +% \begin{macrocode} +\newcommand{\theend}{ + + +\hspace*{\fill}THE END\hspace{\fill} + + +}%THE END +% \end{macrocode} +% \end{macro} +%\iffalse +% +%\fi +% \section{Todo} +% If anybody else uses it maybe they'll spot stuff that's +% wrong but \textsl{Johnny} says, ``It works for me.'' +% +% The test file \texttt{test.tex} shows \texttt{screenplay} +% markup applied to ``FOR A FEW DAYS MORE'' +% (\texttt{http://www.oscars.org/nicholl/script.pdf}) +% and the \texttt{test.pdf} file was generated from that. +% +% A printout of the first page \texttt{script.pdf} and +% \texttt{test.pdf} show identical pitch and the inter-line +% spacing is pretty damn close. +% You can easily tell which is which because \texttt{test.pdf} +% numbers the first page, \texttt{script.pdf} starts numbering +% on page~2. You can suppress the first page number in your +% own documents with the |\thispagestyle{empty}| command if +% you so desire. (The cover page is how \emph{I} want it.) +% +% If I get any \emph{useful} feedback I \emph{may} alter things +% accordingly. +% +% Feel free to help with documentation. +% +% \section{A note for our Sponsor} +% +% I don't think I'm alone when I say\ldots +% \bigskip +% +% \Huge Hail Eris! +% +% All Hail Discordia! +% +%\normalsize +%\iffalse +%<*rider> +%% Test document: facsimile of first page +%% of http://www.oscars.org/nicholl/script.pdf +%% to demonstrate veracity of class screenplay +%% see http://www.dvc.org.uk/sacrific.txt/ +%% for more information on the document class. +%% +\documentclass{screenplay}[2006/09/27] +\begin{document} +\titleauthor{For a Few Days More}{April Rider} +{April Rider\\ +555 George St NNW\\ +Kaplan, ND 77777\\ +999-999-9999} +\fadein +\intslug[day]{Driskill Hotel Seminar Room} +JOE and APRIL burst through the doors into a clean, well-lit +seminar room. +\begin{dialogue}{Joe} +Are we in time? +\end{dialogue} +\begin{dialogue}{April} +How could they start without us? +We're the main attraction. +\end{dialogue} +Joe catches his breath as he leans against the podium at the +front of the room. +\begin{dialogue}[looking about the room]{Joe} +We are? +\end{dialogue} +\begin{dialogue}{April} +Don't be a moron. You know we've +been invited to Austin to discuss +script format. +\end{dialogue} +\begin{dialogue}{Joe} +But why is the room empty? +\end{dialogue} +April and Joe both look out across the room~-- rows of empty +chairs and nary a person in sight. +\begin{dialogue}{April} +Okay, okay, don't panic. +\end{dialogue} +She takes three deep breaths. Then she looks at her watch +and smiles. +\begin{dialogue}[continuing]{April} +We're an hour early.\dots We should +rehearse. +\end{dialogue} +\begin{dialogue}{Joe} +Okay, you start. Margins? +\end{dialogue} +\begin{dialogue}{April} +Left, 1.5 inches. Right, 1.0 +inches. Top, 1.0 inches to the +body, 0.5 inches to the number. +Bottom, 0.5 to 1.5 inches, +depending on where the page break +comes. +\end{dialogue} +\end{document} +% +%\fi +%\iffalse +%<*example> +\documentclass{screenplay}[2006/09/27] +\begin{document} +%% cover page, this command has to go first ... +%% choose one of \titleauthor, \titleextra, \nicholl ... +%% +%% copyright year is [optional] +%% (apparently putting your copyright on things upsets studio moguls) +\titleauthor[2006] +{Example .tex} +{John Pate}{% +Your address\\ +here if you're\\ +going postal\\ +UK\\ +\vspace{2ex} % skip a line ++44~(0)131~999~9999\\ +johnny@dvc.org.uk +} +%% ... or use ... +%% \titleextra{% +%% \copyright 2006 John Pate\\ +%% ALL RIGHTS RESERVED +%% } +%% {Example .tex} +%% {John Pate}{% +%% Your address\\ +%% here if you're\\ +%% going postal\\ \\ +%% +44~(0)131~999~9999\\ +%% http://dvc.org.uk\\% +%% johnny@dvc.org.uk% +%% } +%% +%% or for the Nicholl Fellowships ... +%% \nicholl{Example .tex} +%% +%% end cover page +%% +%% TeX allows quite a lot of leeway in whitespace, so I've messed this +%% up a bit. I find keeping the format structured helps me a lot tho. +%% Note: but don't have blank lines *inside* the body of text in +%% a dialogue environment. +%% I use vi (Elvis) with macros to make a lot of typing disappear. +%% +%% Anyhoo, on with the show ... +%% +%% for some reason this always happens at the start ... +\fadein + +\intslug[illumination]{example sample -- screenplay.cls} + + +\begin{dialogue}{Bob} +That means that someone +sabotaged the unit and killed the +President! Was it one of us? +\end{dialogue} +\begin{dialogue}{Brown} +Who else is mad but us, Condi~-- +and Bliar? +\end{dialogue} + +Bob buries his head in his hands. +\intercut + +\intslug{Atlantis -- somewhere ANyway} + +John and Mark are at adjacent consoles. Fred is with them. Tom +is at another console slightly further away. + +\begin{dialogue}{John} +The planetoid seems to have a thin crust +covering a nickel-iron core. Could have +been an Earth-like planet at one time. +\end{dialogue} + +\begin{dialogue}{Mark} +We're coming up on the radio source now. +\end{dialogue} + +Brown walks in and goes to a console. + +He has a PARROT on his shoulder. + +The Parrot has an air of quiet insouciance. + +\begin{dialogue}{Fred} +Switch the visual to main screen so we +can get a good look.\end{dialogue} + +They look up at the main screen. + +\begin{dialogue}[to John and Mark]{Fred} +Lock on to that. +\dialbreak[to Tom]{Fred}% +Establish planetary orbit. +\end{dialogue} + +\intextslug[day]{in or out} +Apparently some people do this. + +\extintslug[night]{out or in} +Or even this. + +\extslug[day or nite]{NO WARRANTY -- EXPRESS OR IMPLIED} + +\pov I made the slugline DAY/NIGHT optional 'cause in space no-one can +tell the time. You probably will need to specify. + +\nb Don't put in pagebreaks by hand until you're really, really +finished editing! + +%% see what happens if you take out the linebreak +It isn't the done thing to hyphenate for formatting \\ + purposes. +\centretitle{http://dvc.org.uk/sacrific.txt/} + +That was a centred titleover. +\begin{titleover}There's a titleover environment for dialogue-like layout if you're +doing the "Star Wars" thing.\end{titleover}\extslug[All Hail Discordia!]{where to find us} +http://dvc.org.uk/sacrific.txt/screenplay.zip + +Use the source, Luke. + +\extslug[illumination]{for definitive info on layout} + +http://www.oscars.org/nicholl/format.html + +%% and this always happens at the end ... +\fadeout + +\theend + +\end{document} +% +%\fi +% \Finale +\endinput -- cgit v1.2.3