diff options
Diffstat (limited to 'Master/texmf-dist/source/latex')
-rw-r--r-- | Master/texmf-dist/source/latex/screenplay/screenplay.dtx | 584 |
1 files changed, 409 insertions, 175 deletions
diff --git a/Master/texmf-dist/source/latex/screenplay/screenplay.dtx b/Master/texmf-dist/source/latex/screenplay/screenplay.dtx index 1a1428aba14..1275b59b3c9 100644 --- a/Master/texmf-dist/source/latex/screenplay/screenplay.dtx +++ b/Master/texmf-dist/source/latex/screenplay/screenplay.dtx @@ -34,7 +34,7 @@ %</dtx> %<driver>\ProvidesFile{screenplay.drv} % \fi -%\ProvidesFile{screenplay}[2006/11/04 v1.521 +%\ProvidesFile{screenplay}[2006/11/15 v1.538 % LaTeX2e Draft Screenplay document class % (C)2006 John Pate % released under the GNU General Public License] @@ -54,7 +54,7 @@ pdfsubject=LaTeX2e\ class\ documentation\ and\ source\ (C)2006\ John\ Pate] %</driver> % \fi % -% \CheckSum{309} +% \CheckSum{356} % \changes{1.0.0}{2006 Sep 23}{first \texttt{screenplay.dtx, 2006/09/23, v1.457}} % \changes{1.0.1}{2006 Sep 24}{minor code changes, revision to documentation, % v1.461} @@ -174,14 +174,14 @@ pdfsubject=LaTeX2e\ class\ documentation\ and\ source\ (C)2006\ John\ Pate] % The formatting required is minimalist. \texttt{screenplay.cls} will % issue an error message if you use any options. % -% |\documentclass{screenplay}[2006/11/04]| \\ +% |\documentclass{screenplay}[2006/11/15]| \\ % is your first command, you can give the optional date argument in % case of any earlier copies of \texttt{screenplay.cls} lying around. % % You are now in the \textit{document preamble} where you should % initialise the values of some commands. % -% You must define the title of screenplay\ldots\\ +% You must define the title of the screenplay\ldots\\ % |\title{The Title of Your Opus}| \\ % \ldots it will be uppercased automagically so don't fuss. % If it's for the \textit{Nicholl Competition} you're done. @@ -192,7 +192,8 @@ pdfsubject=LaTeX2e\ class\ documentation\ and\ source\ (C)2006\ John\ Pate] % |\address{99 Any Street \\| \\ % |Any Town \\ Postcode / Zip \\| \\ % |Phone \\| \\ -% |email@whereami }| +% |email@whereami }| \\ +% \ldots which you will need for a ``proper'' title page. % % The preamble is closed, of course, by\ldots\\ % |\begin{document}| @@ -206,7 +207,7 @@ pdfsubject=LaTeX2e\ class\ documentation\ and\ source\ (C)2006\ John\ Pate] % % The first thing you need to see in your screenplay is % FADE~IN: left justified with a blank line underneath. -% Scripts always start this way, because they do. You deploy +% Screenplays always start this way, because they do. You deploy % the |\fadein| command for this. % % Next would typically be a slugline, \\ @@ -247,24 +248,23 @@ pdfsubject=LaTeX2e\ class\ documentation\ and\ source\ (C)2006\ John\ Pate] % % 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. \texttt{example.tex} demonstrates this, read through -% the raw \texttt{.tex} file and try modifying it as indicated. -% It's likely you will have to put quite a few linebreaks -% ``by hand'' into dialogue text due to the restricted margins. +% \changes{1.2.7}{2006 Nov 15}{revision to documentation} +% The only tricky part of the formatting is deciding where to +% put any \emph{pagebreaks} that are required to help \TeX\ out +% with formatting. % % \textbf{Do not put in pagebreaks until you have really, really, % really finished editing.} % -% Putting in pagebreaks will likely involve using the |\dialbreak| +% The bottom margin should be between a half and one and a half inches. +% \texttt{screenplay} will format pages avoiding breaks in blocks of +% dialogue or titleover passages, will not widow sluglines or ``TITLE +% OVER'' headers. +% +% Putting in manual 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. % @@ -279,26 +279,66 @@ pdfsubject=LaTeX2e\ class\ documentation\ and\ source\ (C)2006\ John\ Pate] % % For further enlightenment, you should scrutinise the markup of % \texttt{example.tex} and peruse \textbf{The Coding} -% section of this document. +% section of this document where other useful commands may +% be found. +% +% Here are lists of the \texttt{screenplay} commands you should +% familiarise yourself with. +% +% For the title page\ldots +% \begin{itemize} +% \item |\title{}| +% \item |\author{}| +% \item |\realauthor{}| +% \item |\address{}| +% \item |\agent{}| +% \item |\coverpage| +% \item |\nicholl| +% \end{itemize} +% +% In your screenplay text\ldots +% \begin{itemize} +% \item |\fadein| +% \item |\intslug[]{}| +% \item |\extslug[]{}| +% \item |\intextslug[]{}| +% \item |\extintslug[]{}| +% \item |\begin{dialogue}[]{}| \ldots\ |\end{dialogue}| +% \item |\paren{}| (for use inside dialogue environment); +% \item |\dialbreak[]{}| for pagebreak in dialogue environment; +% \item |\begin{titleover}| \ldots\ |\end{titleover}| +% \item |\titbreak| for pagebreak in titleover environment; +% \item |\centretitle{}| +% \item |\intercut| gives ``INTERCUT~WITH:'' flushright; +% \item \verb*|\pov\ | gives ``P.O.V.'' as a ``word'' (n.b.\ +% the \verb*| | symbol denotes a space); +% \item \verb*|\revert\ | gives ``REVERSE~P.O.V.'' as a ``word''; +% \item |\fadeout| +% \item |\theend| +% \end{itemize} +% (|\fadeout| and |\fadein| should not be confused with ``FADE~TO:'' +% which is, IMHO, unnecessary in a Draft Screenplay.) % -% You can see a completed script marked-up -% via \LaTeXe\ and formatted with \texttt{screenplay.cls} +% You can see a completed screenplay marked-up via \LaTeXe\ and +% typeset with the latest revision of \texttt{screenplay.cls} % at \href{http://dvc.org.uk/sacrific.txt/}% % {\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. -% +% There is also, at time of writing, a ``work-in-progress'' +% uncompleted screenplay that has not had manual pagebreaks inserted. +% % \section{Hard Margins package} % \changes{1.0.9}{2006 Oct 06}{added \texttt{hardmarg.sty}, v1.502} -% -% Here we're emulating a typewriter. On a typewriter, the left -% margin is a hard stop, whereas the right margin is a bell -% (those of us who typed in the stone age well remember -% that ``ding''). Even the best typist would run past the -% right margins by a character or two once in a while, sometimes -% deliberately. Hence the ``fudge factors'' interpolated by me, -% which in days of yore would perhaps have been referred to as -% the \textit{gutter}. +% \changes{1.2.6}{2006 Nov 10}{revision to documentation, v1.533} +% +% Here we're emulating a typewriter. On a typewriter, the +% left margin is a hard stop, whereas the right margin was +% signified by a bell warning you to to hit the carriage return +% (those of us who typed in the stone age well remember that +% ``ding''). Even the best typist (let alone me) would hit the +% margin release and run past the right margins by a character +% or two once in a while, sometimes deliberately. Hence the +% ``fudge factors'' interpolated by me, which in days of yore +% would perhaps have been referred to as the \textit{gutter}. % % The provided \texttt{hardmarg.sty} shows you what happens % with the \textit{fudge factors} eliminated. Place the command @@ -306,13 +346,16 @@ pdfsubject=LaTeX2e\ class\ documentation\ and\ source\ (C)2006\ John\ Pate] % (i.e.\ between |\documentclass{|\ldots|}| and |\begin{document}|) % and judge for yourself. Personally I'll stick with my % \textit{fudge}. All the brain-work makes me crave carbs anyway. -% But if you want, use it to fix your script to tighter margins. +% But if you want then use it to fix your screenplay to tighter +% margins, or perhaps compose an amended version to give your +% interpretation of ``the standard.'' % % \section{User customisation} % % \emph{\textbf{Don't!}} It really is a case of KISS for Draft -% Screenplay formatting. There are a couple of things you might -% get away with though\ldots +% Screenplay formatting. The margins are already ``relaxed,'' +% unless you use \texttt{hardmarg.sty}. There are a few things +% you might get away with though\ldots % % You may want to change how the time of day is spaced from the % rest of the slugline. You can do this without editing the @@ -324,13 +367,16 @@ pdfsubject=LaTeX2e\ class\ documentation\ and\ source\ (C)2006\ John\ Pate] % of uppercase for (MORE) and (CONT'D) you can |\renewcommand*| the % |\more| and |\contd| macros. % -% Should you not want page number 1 to appear on the first page -% of the body of the script put the |\thispagestyle{empty}| command +% Should you not want page number~1 to appear on the first page +% of the body of the screenplay put the |\thispagestyle{empty}| command % in your document source file immediately \emph{after} the command % to build the title page. % % Likely, in the usual \LaTeXe\ fashion, you should develop your own % style package depending on what conventions you want to use. +% If you feel you must, the lengths/widths and texts used are defined +% as macros you can redefine in your own style packages without having +% to amend the |class| file---refer to \textbf{The Coding}. % % \section{Specs from \textit{The Academy}} % @@ -343,26 +389,26 @@ pdfsubject=LaTeX2e\ class\ documentation\ and\ source\ (C)2006\ John\ Pate] % (the model document). % % \begin{itemize} -% \item 20lb Letter paper (8.5"x11.0") \\ +% \item 20lb 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" \\ +% \item\textbf{Page} \\* +% 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" \\ +% \item\textbf{Dialogue} \\* +% tab NAME to: 4.2" \\* +% Left margin: 3.0" \\* +% Right margin: 2.5" \\* +% \textsl{Parenthetical} \\* +% Left margin: 3.7" \\* % Right margin: 3.3" % -% \item\textbf{Numbering} \nopagebreak \\ -% top right, Arabic \\ -% Top margin: 0.5" \\ +% \item\textbf{Numbering} \\* +% top right, Arabic \\* +% Top margin: 0.5" \\* % Right margin: 0.75" % \end{itemize} % @@ -378,8 +424,10 @@ pdfsubject=LaTeX2e\ class\ documentation\ and\ source\ (C)2006\ John\ Pate] % \changes{1.1.5}{2006 Oct 19}{minor code changes, revision to % comments, v1.511} % \changes{1.2.0}{2006 Nov 04}{minor code, documentation, changes, v1.521} +% \changes{1.2.3}{2006 Nov 07}{revisions to macros (code cleanups)} +% \changes{1.2.7}{2006 Nov 15}{revisions (bugfixes) to macros, v1.535} % -% \texttt{screenplay.cls v1.521} was tested with\ldots +% \texttt{screenplay.cls v1.538} 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 @@ -387,9 +435,6 @@ pdfsubject=LaTeX2e\ class\ documentation\ and\ source\ (C)2006\ John\ Pate] % \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 @@ -399,7 +444,7 @@ pdfsubject=LaTeX2e\ class\ documentation\ and\ source\ (C)2006\ John\ Pate] % \end{macrocode} % Say it like it is\ldots % \begin{macrocode} -\ProvidesClass{screenplay}[2006/11/04 v1.521 +\ProvidesClass{screenplay}[2006/11/15 v1.538 LaTeX2e Draft Screenplay document class (C)2006 John Pate released under the GNU General Public License] @@ -407,8 +452,8 @@ pdfsubject=LaTeX2e\ class\ documentation\ and\ source\ (C)2006\ John\ Pate] % 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.521}} + \PackageError{screenplay}{Unwanted option '\CurrentOption'}% + {There are no options available for class screenplay v1.538}} \ProcessOptions\relax % \end{macrocode} % |ifthen| needed for testing for optional args\ldots @@ -495,7 +540,8 @@ pdfsubject=LaTeX2e\ class\ documentation\ and\ source\ (C)2006\ John\ Pate] % \begin{macrocode} \newcommand*{\slugspace}{\hspace{2.0em plus 0em minus 0em}} % \end{macrocode} -% (will result in a total of |3em| space). +% (will result in a total of |3em| space). See also, |\placesep| and +% |\sepintext|, below. % \end{macro} % \begin{macro}{Margins/tabs} % \changes{1.1.4}{2006 Oct 17}{minor code changes, revision to documentation, v1.509} @@ -579,23 +625,60 @@ pdfsubject=LaTeX2e\ class\ documentation\ and\ source\ (C)2006\ John\ Pate] % \changes{1.1.8}{2006 Nov 01}{revisions to title page build, % documentation, v1.517} % \changes{1.1.9}{2006 Nov 03}{minor revision to title page build, v1.518} -% +% \changes{1.2.2}{2006 Nov 06}{minor revisions to title page code, v1.526} +% \changes{1.2.3}{2006 Nov 07}{revisions to title page code comments, v1.530} % Use one of |\nicholl| or |\coverpage| to taste. -% This must be the first typesetting command after |\begin{document}|. -% (|\title| and |\author| code is already defined in the |article| class.) -% +% This should be the first typesetting command after |\begin{document}|, +% presuming you want \texttt{screenplay} to generate a title page for you. +% \begin{macro}{\title} +% |\title{The Title}| with |\\| if you feel you must.\\ +% The code is already defined in the |article| class, here I +% helpfully set a default title in case you can't decide\ldots +% \begin{macrocode} +\title{My First Screenplay} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\titheadskip} +% Distance down from top of page for title\ldots +% \begin{macrocode} +\newlength{\titheadskip} +\setlength{\titheadskip}{2.25in} +% \end{macrocode} +% \end{macro} % \begin{macro}{\nicholl} % For Nicholl Competition---just the title\ldots % \begin{macrocode} \newcommand{\nicholl}{ \thispagestyle{empty} - \vspace*{2.25in} + \vspace*{\titheadskip} \begin{center}\MakeUppercase{\@title}\end{center} \newpage\setcounter{page}{1} } % \end{macrocode} % \end{macro} +% \begin{macro}{\author} +% |\author{Author Details}| \\ +% The code is already defined in the |article| class, here +% I helpfully define a default author in case you can't decide\ldots +% \begin{macrocode} +\author{Alan Smithee} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\realauthor} +% |\realauthor{Your Name}| with no formatting code. \\ +% This is for when you've used a pseudonym for |\author{}|, or +% if there are multiple authors and/or formatting code in |\author{}|. +% It's used by |\coverpage| when typesetting the ``author's address +% details.'' It will default to the whatever is set as |\author{}| +% if you don't set it\ldots +% \begin{macrocode} +\newcommand{\@realauthor}{\@author} +\newcommand{\realauthor}[1]{\renewcommand{\@realauthor}{#1}} +% \end{macrocode} +% \end{macro} % \begin{macro}{\address} +% |\address{Contact Address}| (\emph{without} name) with |\\| as +% appropriate.\\ % Your address details for the title page\ldots % \begin{macrocode} \newcommand{\@address}{Contact via Agency} @@ -604,21 +687,24 @@ pdfsubject=LaTeX2e\ class\ documentation\ and\ source\ (C)2006\ John\ Pate] % \ldots see also\ldots % \end{macro} % \begin{macro}{\agent} +% |\agent{Agent name and address details}| with |\\| as appropriate. \\ % Some people like to put copyright and WGA registration -% details on their submitted scripts\ldots although the received +% details on their submitted screenplays---although the received % wisdom is that this marks you as an amateur, you can use % this macro. % -% I'm calling this |\agent| to pretend you're putting +% I'm calling this |\agent{}| to pretend you're putting % your Agent's details instead of your own address---hence -% if you don't define |\address| (and use |\coverpage|) you'll -% get the boilerplate text ``Contact via Agency'' under your +% if you don't define |\address{}| (and use |\coverpage|) you'll +% get the boilerplate text ``Contact via Agency'' under the % name in the ``author's address details'' area. What -% you would do is omit your own address and only have your -% Agent's address. Putting this the other side of the page -% makes it immediately clear what's who. No really, there's -% no need to use this \emph{unless} you're with an agency -% but it's your script\dots +% you would do is omit your own contact details and only have your +% Agent's address (you could define |\realauthor{}| and |\address{}| +% as a non-printing character, e.g.\ |~|, to make your contact +% details blank if you like). Putting this the other side of +% the page makes it immediately clear what's who. No really, +% there's no need to use this \emph{unless} you're with an +% agency but it's your screenplay\dots % \begin{macrocode} \newcommand{\@agent}{~} \newcommand{\agent}[1]{\renewcommand{\@agent}{#1}} @@ -635,26 +721,54 @@ pdfsubject=LaTeX2e\ class\ documentation\ and\ source\ (C)2006\ John\ Pate] \setlength{\titskip}{3.75in plus 0in minus 1.5in} % \end{macrocode} % \end{macro} +% \begin{macro}{\addrwidth} +% Size of boxes for |\agent| and |\realname|/|\address| +% (19 characters wide at 2")\ldots +% \begin{macrocode} +\newlength{\addrwidth} +\setlength{\addrwidth}{2.0in} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\addrseplen} +% \changes{1.2.1}{2006 Nov 05}{minor revision to title page code, v1.523} +% Separation between Agent and author/address details, rubber to +% allow for possible use of |hardmarg.sty|\ldots +% \begin{macrocode} +\newlength{\addrseplen} +\setlength{\addrseplen}{2.0in plus 0in minus 0.5in} +% \end{macrocode} +% \end{macro} % \begin{macro}{\coverpage} % Now the ability to make the the type of title page for -% Draft Scripts submitted to Agents, +% Draft Screenplays submitted to Agents\ldots +% \begin{macro}{\bytext \byskip} +% \changes{1.2.4}{2006 Nov 08}{revisions to title page code, v1.531} +% In case you want to fiddle with this\ldots +% \begin{macrocode} +\newcommand*{\bytext}{by} +\newcommand*{\byskip}{\baselineskip} +% \end{macrocode} +% \end{macro} +% |\coverpage| will build a title page\ldots % \begin{macrocode} \newcommand{\coverpage}{ \thispagestyle{empty} - \vspace*{2.25in} + \vspace*{\titheadskip} \begin{center}{\MakeUppercase{\@title}}\\ - \vspace{\baselineskip} - by\\ - \vspace{\baselineskip} + \vspace{\byskip} + \bytext\\ + \vspace{\byskip} \@author \end{center} \vspace{\titskip} % \end{macrocode} -% |\agent| details at left margin in a |\parbox|, 2" space then -% |\author| and |\address| details in a |\parbox|\ldots +% |\agent| (if any, otherwise |\addrwidth| space) details at left margin in +% a |\parbox|, |\addrseplen| space then contact details for the author +% (|\realname|, which will default to |\author| if not defined, and |\address|) +% in a |\parbox|\ldots % \begin{macrocode} -\parbox[t]{2.0in}{\@agent}\hspace{2.0in} -\parbox[t]{2.0in}{\@author\\\@address} +\parbox[t]{\addrwidth}{\@agent}\hspace{\addrseplen} +\parbox[t]{\addrwidth}{\@realauthor\\\@address} % \end{macrocode} % Reset page numbers\ldots % \begin{macrocode} @@ -680,13 +794,15 @@ pdfsubject=LaTeX2e\ class\ documentation\ and\ source\ (C)2006\ John\ Pate] % \end{macro} % \textbf{Dialogue blocks}\ldots % \begin{macro}{\paren} +% \changes{1.2.8}{2006 Nov 15}{bugfix} % |\paren{hello world}| \\ % parenthetical within dialogue environment\ldots -% only for \emph{very short} text (directions) within dialogue, -% the optional argument is for internal use \emph{only}\ldots +% only for \emph{very short} text (directions) within +% dialogue\ldots % \begin{macrocode} -\newcommand{\paren}[2][\\]{% -#1\parentab\parbox[t]{\parenwidth}{\raggedright(#2)\dialfix}\\ +\newcommand{\paren}[1]{% + +\parentab\parbox[t]{\parenwidth}{\raggedright(#1)\dialfix}\\ } % \end{macrocode} % \end{macro} @@ -699,7 +815,7 @@ pdfsubject=LaTeX2e\ class\ documentation\ and\ source\ (C)2006\ John\ Pate] % \textbf{Name} is outside |\minipage| to mitigate `|Overfull \hbox|' % warnings with long names\ldots % \begin{macrocode} -\newenvironment{dialogue}[2][]{ +\newenvironment{dialogue}[2][]{% \dialtab\dialnametab\hbox{\MakeUppercase{#2}}\\* \dialtab\begin{minipage}[b]{\dialwidth} @@ -707,15 +823,16 @@ pdfsubject=LaTeX2e\ class\ documentation\ and\ source\ (C)2006\ John\ Pate] \raggedright \ifthenelse{\not\equal{#1}{}} { -\paren[]{#1} +\paren{#1} }{} -}{ +}{% \end{minipage} } % \end{macrocode} % \end{macro} % \begin{macro}{\dialbreak} +% \changes{1.2.8}{2006 Nov 15}{bugfix} % Forcing pagebreak in dialogue,\\ % |\dialbreak{Character}| \\ % |\dialbreak[directions]{Character}|\\ @@ -725,8 +842,9 @@ pdfsubject=LaTeX2e\ class\ documentation\ and\ source\ (C)2006\ John\ Pate] % 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}% +\newcommand{\dialbreak}[2][]{% +\nopagebreak +\dialnametab\hbox{\more}% \end{dialogue} \newpage \ifthenelse{\not\equal{#1}{}} @@ -743,14 +861,18 @@ pdfsubject=LaTeX2e\ class\ documentation\ and\ source\ (C)2006\ John\ Pate] % 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{macro}{\placesep} +% What punctuation/spacing comes after the likes of INT and EXT\ldots % \begin{macrocode} -\newcommand{\intslug}[2][]{ +\newcommand*{\placesep}{.~} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\slug} internal command used for building +% the various user commands\ldots +% \begin{macrocode} +\newcommand{\slug}[3][]{% -\MakeUppercase{INT. #2}% +\MakeUppercase{#2\placesep#3}% \ifthenelse{\not\equal{#1}{}} {% \slugspace\MakeUppercase{#1}\hspace{\fill} @@ -760,21 +882,28 @@ pdfsubject=LaTeX2e\ class\ documentation\ and\ source\ (C)2006\ John\ Pate] } % \end{macrocode} % \end{macro} +% \begin{macro}{\intslug} +% INT. SLUGLINE DESCRIPTION \quad DAY\\ +% |\intslug[time of day]{description text}|\\ +% |\intslug{description text}| +% \begin{macrocode} +\newcommand*{\inttext}{INT} +\newcommand{\intslug}[2][]{\slug[#1]{\inttext}{#2}} +% \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 - -} +\newcommand*{\exttext}{EXT} +\newcommand{\extslug}[2][]{\slug[#1]{\exttext}{#2}} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\sepintext} +% Complementary to |\placesep|\ldots +% \begin{macrocode} +\newcommand*{\sepintext}{./} % \end{macrocode} % \end{macro} % \begin{macro}{\intextslug} @@ -783,16 +912,8 @@ pdfsubject=LaTeX2e\ class\ documentation\ and\ source\ (C)2006\ John\ Pate] % |\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 - -} +\newcommand{\intextslug}[2][]{% +\slug[#1]{\inttext\sepintext\exttext}{#2}} % \end{macrocode} % \end{macro} % \begin{macro}{\extintslug} @@ -801,16 +922,29 @@ pdfsubject=LaTeX2e\ class\ documentation\ and\ source\ (C)2006\ John\ Pate] % |\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 - -} +\newcommand{\extintslug}[2][]{% +\slug[#1]{\exttext\sepintext\inttext}{#2}} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\sccentre \scflushright} +% Internal formatting commands for various macros\ldots \\ +% |\sccentre{}| used in macros todo centring, you should use this if rolling +% your own\ldots +% \begin{macrocode} +\newcommand*{% +\sccentre}[1]{\hspace*{\fill}{#1}\hspace{\fill}\hspace{\widthgutter}} +% \end{macrocode} +% |\scflushright{}| used in macros todo flushright, you should use this if rolling +% your own\ldots +% \begin{macrocode} +\newcommand*{% +\scflushright}[1]{\hspace*{\fill}{#1}\hspace{\widthgutter}} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\punctchar} +% What you use to punctuate things like FADE~TO and TITLE~OVER\ldots +% \begin{macrocode} +\newcommand*{\punctchar}{:} % \end{macrocode} % \end{macro} % \textbf{Title Over} @@ -820,18 +954,19 @@ pdfsubject=LaTeX2e\ class\ documentation\ and\ source\ (C)2006\ John\ Pate] % as pseudo dialogue environment (think ``Star Wars'') % the optional argument is for internal use \emph{only}\ldots % \begin{macrocode} -\newenvironment{titleover}[1][]{ +\newcommand*{\titleovertext}{TITLE~OVER} +\newenvironment{titleover}[1][]{% \ifthenelse{\not\equal{#1}{}} -{ -TITLE OVER #1: -}{ -TITLE OVER: +{% +\titleovertext #1\punctchar +}{% +\titleovertext\punctchar }% \\*[\baselineskip] \dialtab\begin{minipage}[b]{\dialwidth} \raggedright -}{ +}{% \end{minipage} } @@ -839,13 +974,15 @@ TITLE OVER: % \end{macro} % % \begin{macro}{\titbreak} +% \changes{1.2.8}{2006 Nov 15}{bugfix, v1.538} % pagebreak for titleover environment\ldots % \begin{macrocode} -\newcommand{\titbreak}{ -\\\dialnametab\hbox{\more}% +\newcommand{\titbreak}{% +\nopagebreak +\dialnametab\hbox{\more}% \end{titleover} \newpage -\begin{titleover}[\contd] +\begin{titleover}[\contd]% } % \end{macrocode} % \end{macro} @@ -854,10 +991,10 @@ TITLE OVER: % titleover for short text most often a date, centred with % adjustment for gutter\ldots % \begin{macrocode} -\newcommand{\centretitle}[1]{ +\newcommand{\centretitle}[1]{% -TITLE OVER:\\*[\baselineskip] -\hspace*{\fill}{#1}\hspace{\fill}\hspace{\widthgutter} +\titleovertext\punctchar\\*[\baselineskip]% +\sccentre{#1} } % \end{macrocode} @@ -865,23 +1002,25 @@ TITLE OVER:\\*[\baselineskip] % \textbf{Other macros} % % \begin{macro}{\fadein} -% Always the \emph{first} thing in your script, for some reason\ldots +% Always the \emph{first} thing in your screenplay, for some reason\ldots % \begin{macrocode} -\newcommand{\fadein}{ +\newcommand*{\fadeintext}{FADE~IN} +\newcommand{\fadein}{% -FADE IN: +\fadeintext\punctchar } % \end{macrocode} % \end{macro} % \begin{macro}{\fadeout} -% Always the last thing in your script for some reason, +% Always the last thing in your screenplay, for some reason, % flush right with adjustment for gutter\ldots % % \begin{macrocode} -\newcommand{\fadeout}{ +\newcommand*{\fadeouttext}{FADE~OUT} +\newcommand{\fadeout}{% -\hspace*{\fill}FADE OUT:\hspace{\widthgutter} +\scflushright{\fadeouttext\punctchar} } % \end{macrocode} @@ -889,9 +1028,10 @@ FADE IN: % \begin{macro}{\intercut} % flush right with adjustment for gutter\ldots % \begin{macrocode} -\newcommand{\intercut}{ +\newcommand*{\intercuttext}{INTERCUT~WITH} +\newcommand{\intercut}{% -\hspace*{\fill}INTERCUT WITH:\hspace{\widthgutter} +\scflushright{\intercuttext\punctchar} } % \end{macrocode} @@ -904,17 +1044,18 @@ FADE IN: % \end{macrocode} % \ldots switch it back\ldots % \begin{macrocode} -\newcommand*{\revert}{REVERSE \pov} +\newcommand*{\revert}{REVERSE~\pov} % \end{macrocode} % \end{macro} % % \begin{macro}{\theend} % But this is what we've all been waiting for\ldots -% OK, so this is actually the \emph{last} thing in the script\ldots +% OK, so this is actually the \emph{last} thing in the screenplay\ldots % \begin{macrocode} -\newcommand{\theend}{ +\newcommand*{\thirty}{THE~END} +\newcommand{\theend}{% -\hspace*{\fill}THE END\hspace{\fill}\hspace{\widthgutter} +\sccentre{\thirty} }%THE END % \end{macrocode} @@ -934,7 +1075,7 @@ FADE IN: % % Issue info as to what we do\ldots % \begin{macrocode} -\ProvidesPackage{hardmarg}[2006/11/04 v1.521 +\ProvidesPackage{hardmarg}[2006/11/15 v1.538 For use with class screenplay (C)2006 John Pate released under the GNU General Public License] @@ -969,10 +1110,10 @@ released under the GNU General Public License] % (Well, strictly speaking the Americans have defined their measures % using metric standards but let's not get into that.) % Americans have a 24lb weight paper that's close to 80gsm. -% I've got samples of Letter in both 20lb and 80gsm. The same script, with -% the same card covers (240gsm plain white card) measures 12mm vs 15mm -% in thickness. The 80gsm stuff is noticeably heavier and thicker -% (less flexible). +% I've got samples of Letter in both 20lb and 80gsm. The same +% screenplay, with the same card covers (240gsm plain white card) +% measures 12mm vs 15mm in thickness. The 80gsm stuff is +% noticeably heavier and thicker (less flexible). % % IMHO good quality 20lb is nicer in handling and you can very much % tell the difference. Old-style typing paper was usually pretty @@ -1020,9 +1161,69 @@ released under the GNU General Public License] % top and one in the bottom hole leaving the central hole empty. % % And while I'm on about paper, 120 pages is really the absolute -% longest you should go. A script that runs between 100 and 110 +% longest you should go. A screenplay that runs between 100 and 110 % pages is a better bet---and that's with plenty of whitespace in the % passages of description. +% +% \section{\LaTeX\ for the impatient} +% \changes{1.2.5}{2006 Nov 09}{additions to documentation, v1.532} +% +% You will likely need to be familiar with the following standard \LaTeX\ +% foibles and constructs. +% +% In \TeX\ the \textsl{space} or \textsl{blank} character has special +% properties: +% \begin{itemize} +% \item one blank is the same as a thousand and counts as one, +% except for \textsl{carriage returns} where two, or more, consecutive +% carriage returns signal a paragraph break. A single carriage +% return is treated as a blank; +% \item blanks at the beginning of a line are ignored; +% \item blanks terminating a command name are removed (except +% in the case of printing \textsl{command characters}, see for example +% |\$| below); +% \item blanks following \textsl{full stop} (period) get extra +% space inserted, except where the full stop follows an uppercase +% character. Blanks following a \textsl{colon} get extra space +% inserted, as do those after an \textsl{exclamation mark}; +% \end{itemize} +% So to work with this you likely need to know: +% \begin{itemize} +% \item \verb*|\ | force single space (e.g.\ after e.g. and +% see |\pov| and |\revert| \texttt{screenplay} commands which follow +% convention and therefore need this to get a space after them); +% \item |\@| force double space after full stop +% following an uppercase character (place it before the offending +% full stop); +% \item |%| is the \textsl{comment character} (makes things invisible +% to \TeX)---the comment character used immediately before a carriage +% return suppresses the space \TeX\ would otherwise substitute for +% the carriage return; +% \item |\\| force a linebreak; +% \item |\\*| force a linebreak but don't allow a pagebreak; +% \item |\pagebreak| (works in description text) +% \item |\nopagebreak| +% \item |~| non-breaking space, |$\sim$| gives a $\sim$ symbol; +% \end{itemize} +% You \emph{do} want \TeX\ to munge space for you, I advise you +% \emph{against} the use of the |\frenchspacing| command +% with \texttt{screenplay} (even if you're French). +% +% Special characters you might want: +% \begin{itemize} +% \item |\#| to produce a \# symbol; +% \item |\$| to produce a \$ symbol; +% \item |\%| to produce a \% symbol; +% \item |$\backslash$| to produce a $\backslash$ symbol; +% \item |\ldots| ellipsis \ldots +% \end{itemize} +% +% A \LaTeX\ installation comes with extensive +% documentation---\emph{read it}! +% +% Also check out the \textit{\TeX\ Users Group} +% \href{http://www.tug.org/}% +% {\texttt{http://www.tug.org}}. % % \section{Todo} % If anybody else uses it maybe they'll spot stuff that's @@ -1038,16 +1239,44 @@ released under the GNU General Public License] % \texttt{test.pdf} show identical pitch and the inter-line % spacing is pretty close. However, I chose a |\baselinestretch| % value to complement the |\baselineskip| and be more typographically -% correct rather than exactly match \texttt{script.pdf}. +% appropriate rather than exactly match \texttt{script.pdf} +% (i.e.\ we're emulating a typewriter). % -% You can easily tell which is which because \texttt{test.pdf} -% numbers the first page whilst \texttt{script.pdf} starts numbering -% on page~2. +% You can tell which is which because \texttt{test.pdf} +% numbers the first page whilst \texttt{script.pdf} starts +% numbering on the second page of the screenplay. % % If I get any \emph{useful} feedback I \emph{may} alter things -% accordingly. -% -% Feel free to help with documentation. +% accordingly. In that regard Don (the webmaster) at, +% \href{http://www.simplyscripts.com/}% +% {\texttt{http://www.simplyscripts.com}} +% has judged the results as, ``Script is in some generally agreed +% upon screenplay format or close enough,'' which is my intention +% for this |class|. +% +% If anyone comes up with additional |style| package(s) suitably +% applicable I'll add such to the |.dtx| bundle. Having researched +% the subject I believe it's inappropriate to use constructs like +% CUT TO:, DISSOLVE TO:, FADE TO:, etc.\ in a Draft Screenplay, though +% they might legitimately appear in a Shooting Script or something +% getting close to it. This |class| is aimed at Draft Screenplays, +% IMHO any further elaboration of capabilities should be via +% additional |style| packages---which I leave as an exercise for the +% reader. +% +% Please ensure you have tried latest available version before +% reporting any bugs. +% +% \section{Disclaimer} +% The arcane art of writing screenplays has spawned a whole industry +% of books and software. \texttt{screenplay} is my modest and, more +% importantly, \emph{free} contribution. It is \copyright 2006 +% John Pate, released under the \textit{GNU General Public License}. +% Your mileage may vary. E\&OE. +% +% For howto contact the author see, +% \href{http://dvc.org.uk/johnny.html}% +% {\texttt{http://dvc.org.uk/johnny.html}}. % % \newpage % \section{A note for our Sponsor} @@ -1064,13 +1293,13 @@ released under the GNU General Public License] % %\iffalse %<*rider> -%% Test document: facsimile of first page +%% Test document: facsimile of title and 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/11/04] +\documentclass{screenplay}[2006/11/15] \title{For a Few Days More} \author{April Rider} \address{555 George St NNW\\ @@ -1129,7 +1358,7 @@ comes. %\fi %\iffalse %<*example> -\documentclass{screenplay}[2006/11/04] +\documentclass{screenplay}[2006/11/15] \title{Example .tex File} @@ -1155,14 +1384,21 @@ johnny@dvc.org.uk %% 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. +%% You can, of course, define LaTeX macros to shorten the command names. %% %% Anyhoo, on with the show ... -%% + %% for some reason this always happens at the start ... \fadein \intslug[illumination]{example sample -- screenplay.cls} +In space, nobody knows what time of day it is. Wait, there is no +day. + +So BOB, a cross-dressing Republican, and BROWN, a Christian +fundamentalist Democrat, are talking nonsense instead. + \begin{dialogue}{Bob} That means that someone @@ -1176,11 +1412,10 @@ 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 +JOHN and MARK are at adjacent consoles. FRED is with them. TOM is at another console slightly further away. \begin{dialogue}{John} @@ -1207,13 +1442,14 @@ They look up at the main screen. \begin{dialogue}[to John and Mark]{Fred} Lock on to that. -\dialbreak[to Tom]{Fred}% +\dialbreak[to Tom]{Fred} Establish planetary orbit. \end{dialogue} \intextslug[day]{in or out} Apparently some people do this. +\intercut \extintslug[night]{out or in} Or even this. @@ -1225,9 +1461,7 @@ tell the time. You probably will need to specify. 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. +It isn't the done thing to hyphenate for formatting purposes. \centretitle{http://dvc.org.uk/sacrific.txt/} That was a centred titleover. |