summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/stage
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2006-01-13 00:07:44 +0000
committerKarl Berry <karl@freefriends.org>2006-01-13 00:07:44 +0000
commit2fb1c0615c05cf72bfc2544a530e4994605a53a4 (patch)
tree260e3bb0441208a1c5e074db1f20c72e64ba61ee /Master/texmf-dist/tex/latex/stage
parent200aa93862fd8511bede341b796d2a569643d325 (diff)
stage
git-svn-id: svn://tug.org/texlive/trunk@1345 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/stage')
-rw-r--r--Master/texmf-dist/tex/latex/stage/stage.cls380
1 files changed, 380 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/latex/stage/stage.cls b/Master/texmf-dist/tex/latex/stage/stage.cls
new file mode 100644
index 00000000000..13b24567883
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/stage/stage.cls
@@ -0,0 +1,380 @@
+%% stage.cls
+%% Copyright 2005 Robert Jahrling
+%
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either version 1.3
+% of this license or (at your option) any later version.
+% The latest version of this license is in
+% http://www.latex-project.org/lppl.txt
+% and version 1.3 or later is part of all distributions of LaTeX
+% version 2003/12/01 or later.
+%
+% This work has the LPPL maintenance status "maintained".
+%
+% This Current Maintainer of this work is Robert Jahrling
+%
+% This work consists of the file stage.cls.
+%
+% Contact me at jahrling@chorus.net
+%
+% I'd love to hear if or how people are using this! What do you
+% think of the "warts-and-all" approach I took? I left in all the
+% changes I made, and the stuff I didn't like (commented out).
+%
+% CHANGES NEEDED 5/16/2003:
+% Fix Margins
+% Fix Widows/Orphans
+%
+% Changes 5/17/2003:
+%
+% Added counters for acts.
+% Added counters for scenes.
+% Added comments and TODOs.
+%
+% Changes 5/18/2003:
+%
+% Correctly break pages for scenes.
+% Changed \dialog to be the way I wanted.
+% ...which entailed fixing up some spacing.
+% ...which entailed removing more \doublespace commands.
+% Added \paren as alias for \charsd for ScriptTeX compatibility.
+%
+% Changes 5/19/2003:
+%
+% Added \address command for \maketitle.
+% Added \opensd command (and \open).
+% Added \quotepage.
+%
+% Changes 5/20/2003:
+%
+% Added \castpage environment
+% Added \addcharacter command
+% Correct page numbering, <Act>-<page>
+% Removed old (commented-out) \dialog command
+% Deleted commented-out \doublespaces
+% Added \dialogue as implementation of \dialog
+% Added \AtEndDocument to print "The End" at the end of the document
+%
+% Changes 5/25/20003:
+%
+% Still monkeying with spacing
+% Added \oneact command for one-act plays.
+%
+% Changes 6/5/2003:
+%
+% Got spacing looking pretty good. Still not entirely happy.
+%
+% Changes 6/10/2003:
+%
+% Reorganized \dialog command to remove the use of the
+% changemargin environment. Requires adjustment to use of
+% \dialog in scripts, but the tradeoff is worth it,
+% because the tradeoff is...
+% PROPER CONTINUED MARKS. Added use of fancyhdr to create
+% a continued mark for interrupted dialog and a more mark
+% for interrupted stage directions.
+%
+% Changes 6/11/2003:
+%
+% Changed \lhead to set the text at the top left corner of
+% the picture box. As it stood, it was right-aligning,
+% which threw alignment off.
+% Break problem POSSIBLY solved. Must experiment.
+%
+% Changes 6/12/2003:
+%
+% Removed \extramarks from stage directions. Was having problem
+% with pages having extra marks where none were needed, mostly
+% when a stage direction was the last thing on the page and
+% was complete.
+% Added \copyrightnotice to separate copyright notice from the
+% address block. Use is completely optional. stage will ignore
+% its absence (unlike LaTeX and \author, for example).
+% Added \draft to indicate draft number. Also completely optional;
+% stage will ignore its absence.
+% Changed \maketitle to reflect the aforementioned new additions.
+% Added \pause.
+%
+% Changes 2/17/05:
+%
+% Added LPPL license notice. Per C.-E. Pfeiler's suggestion,
+% I'll be uploading stage.cls to CTAN.
+%
+% NOTES:
+% \castpage and \quotepage definitions must come after \maketitle
+% in any documents created with this class.
+% \act MUST appear or else page numbers get whacked. This should
+% be considered a TODO bugfix. Can be fixed by using \oneact.
+% As of 6/10, we're back to \dialog{speaker}{speech}.
+%
+% TODO:
+% Time/setting page
+% Character s.d. spacing is not the greatest.
+%
+% Required:
+%
+% This is a LaTeX2e class called stage, providing a class
+% for stage play Manuscript Format.
+%
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesClass{stage}[2003/05/15 Manuscript Format for stage plays]
+% The class is based on the default book class; since this
+% is so far a personal project, I am defaulting to letter
+% paper.
+\LoadClass[12pt,oneside,letterpaper]{book}
+% We're going to use ifthen to do some conditional page breaking.
+\RequirePackage{ifthen}
+\RequirePackage{fancyhdr}
+\RequirePackage{extramarks}
+% We provide a friendly warning when an option is specified;
+% since stage provides no options, all options return an error.
+\DeclareOption*{%
+ \ClassWarning{stage}{Unknown option `\CurrentOption'}%
+}
+% Required to process options.
+\ProcessOptions\relax
+% These three commands are required.
+% The default font size is 12/14. It looks better than 12 solid.
+% The textwidth and textheight represent one-inch margins all
+% around.
+\renewcommand{\normalsize}{\fontsize{12pt}{14pt}\selectfont}
+\setlength{\textwidth}{6.0in}
+\setlength{\textheight}{8.5in}
+\setlength{\topmargin}{0in}
+
+\raggedbottom
+
+%%% pagestyle commands
+% use fancy pagestyle
+\pagestyle{fancy}
+% Sets the left header to use the picture environment to put
+% continued marks where necessary!
+\lhead{\setlength{\unitlength}{\baselineskip}%
+ \begin{picture}(0,0)
+ \put(12.9,-1.1){\makebox(0,0)[tl]{\firstxmark}}
+ \end{picture}\leftmark}
+\rfoot{\lastxmark}
+% puts the page numbers in the header on the right
+\rhead{\thepage}
+% empties center foot; otherwise, the page number would display here.
+\cfoot{}
+% by default, fancyhdr puts a rule in the header, which I don't want.
+\renewcommand{\headrulewidth}{0pt}
+% since we're using a slightly larger font, we need more headheight
+\renewcommand{\headheight}{14pt}
+%%%
+
+% No indentation. Double space between paragraphs.
+\parindent 0pt
+% \parskip 1.6ex
+\parskip 0pt
+% \doublespace leaves a line's worth of space between elements.
+\newcommand{\doublespace}{\vspace{1.6ex}}
+% \introduce is used the first time we meet a character.
+\newcommand{\introduce}[1]{\textsc{#1}}
+% \address is used for the writer's copyright notice and address
+\newcommand{\address}[1]{\gdef\@address{#1}}
+% \draft is used if the writer wants to indicate draft number
+\newcommand{\draft}[1]{\gdef\@draftno{#1}}
+% \copyrightnotice is used if the writer wants to indicate copyright
+\newcommand{\copyrightnotice}[1]{\gdef\@crightnotice{#1}}
+% Counts acts
+\newcounter{actcounter}
+% We need to initialize actcounter for page numbering.
+\setcounter{actcounter}{1}
+% pagestyle and headers
+% 6/10/03 removed myheadings in favor of fancyhdr
+% \pagestyle{myheadings}
+% \thepage does page numbering.
+%
+% Yes, this is incredibly ugly. For some reason, acts were not being
+% numbered from 1, so I needed to initialize actcounter to 1.
+% This had a side effect of making the use of actcounter in the
+% headers off by 1, so we need to subtract 1 from the counter,
+% print the page number, and add the 1 back in.
+\renewcommand{\thepage}{%
+ \addtocounter{actcounter}{-1}%
+ \Roman{actcounter}-\arabic{page}%
+ \addtocounter{actcounter}{1}%
+}
+% If we're writing a one-act play, we don't need the special page
+% numbering scheme, so we tell stage that we're writing a one-act
+% and it takes care of that.
+\newcommand{\oneact}{%
+ \renewcommand{\thepage}{%
+ \arabic{page}%
+ }%
+}
+
+% Counts scenes per act
+\newcounter{scenecounter}[actcounter]
+% An environment for specifying margin changes
+\newenvironment{changemargin}[2]{%
+ \begin{list}{}{%
+ \setlength{\topsep}{0pt}%
+ \setlength{\leftmargin}{#1}%
+ \setlength{\rightmargin}{#2}%
+ \setlength{\listparindent}{\parindent}%
+ \setlength{\itemindent}{\parindent}%
+ \setlength{\parsep}{\parskip}%
+ }%
+ \item[]}{\end{list}}
+% \dialog sets the character's name above his speech
+% Still need to figure out how to keep name and speech together,
+% i.e. not allow pagebreaks between name and speech.
+% \newcommand{\dialog}[1]{%
+% \doublespace
+% % \parskip 1.6ex
+% \begin{changemargin}{2.5in}{0in}
+% \textsc{#1}%
+% \end{changemargin}
+% \vspace{-0.9ex}
+% }
+\newcommand{\dialog}[2]{%
+ \doublespace%
+ \hskip 2.5in\textsc{#1}\par%
+ \nobreak
+ \extramarks{}{}
+ \nobreak
+ #2
+ \extramarks{\textsc{#1}(Continued)}{}
+}
+
+% \dialogue, for people who like that spelling better
+\newcommand{\dialogue}[1]{\dialog{#1}}
+
+% \act creates an act header, with large roman numerals
+%
+% Start a new page for each Act except the first
+\newcommand{\act}{%
+ \begin{changemargin}{2.5in}{0in}
+ \ifthenelse{\value{actcounter} > 1}{\newpage}{}
+ \textsc{Act} \Roman{actcounter}
+ \ifthenelse{\value{actcounter} = 1}{\doublespace}{}
+ \stepcounter{actcounter}
+ \end{changemargin}
+ \setcounter{page}{1}
+% \doublespace
+}
+% \scene creates a scene header, with arabic numerals
+%
+% Start a new page for each scene except the first
+\newcommand{\scene}{%
+ \begin{changemargin}{2.5in}{0in}
+ \stepcounter{scenecounter}
+ \ifthenelse{\value{scenecounter} > 1}{\newpage}{}
+ \textsc{Scene} \arabic{scenecounter}
+ \ifthenelse{\value{scenecounter} = 1}{\doublespace}{}
+ \end{changemargin}
+}
+% \stage sets the stage directions a little farther in than the
+% dialog box and parenthesizes them.
+%
+% I'm not happy with this; I'd rather not have to put braces
+% around the stage directions, but it seems like there's no
+% way around it.
+\newcommand{\stage}[1]{%
+ \doublespace
+ \begin{changemargin}{2in}{0in}
+ % \extramarks{}{(more)}%
+ (#1)%
+ \end{changemargin}
+}
+% \charsd is like \paren in ScriptTeX, used for brief character
+% stage directions. It's intended to set properly into a passage
+% of dialog.
+\newcommand{\charsd}[1]{%
+ % \parskip 0pt
+ \begin{changemargin}{2in}{0in}
+ % \vspace{0.8ex}%
+ (#1)%
+ \end{changemargin}
+ % \parskip 0pt
+}
+
+% \pause is just convenient.
+\newcommand{\pause}{\stage{Pause.}}
+
+% \initsd is a quick hack to get around messed-up \charsd spacing
+% when a \charsd comes before any dialog.
+\newcommand{\initsd}[1]{%
+ \vspace{-0.6ex}%
+ \begin{changemargin}{2in}{0in}
+ (#1)%
+ \end{changemargin}
+ \parskip 0pt
+ \vspace{-0.6ex}
+}
+
+% Implemented \paren to ease transition from ScriptTeX
+\newcommand{\paren}[1]{\charsd{#1}}
+
+% \opensd is opening stage directions, set differently from
+% other stage directions; \opensd sets time and place.
+\newcommand{\opensd}[1]{%
+ \begin{changemargin}{2.5in}{0in}
+ (#1)%
+ \end{changemargin}
+}
+% \open is the same as \opensd
+\newcommand{\open}[1]{\opensd{#1}}
+
+% "placeholder" redefinition of \maketitle.
+%
+% TODO: address and copyright
+% 5/19/2003: done, but copyright just gets folded in to address.
+\renewcommand{\maketitle}{%
+ \begin{titlepage}
+ \center{\textsc{\@title}}
+ \par
+ \center{\@author}
+ \vspace{5in}
+ \begin{changemargin}{0in}{0in}
+ \ifthenelse{\not\isundefined{\@crightnotice}}{%
+ \copyright \@crightnotice}{}
+ \par
+ \ifthenelse{\not\isundefined{\@address}}{\@address}{}
+ \par
+ \ifthenelse{\not\isundefined{\@draftno}}{DRAFT \@draftno}{}
+ \end{changemargin}
+ \end{titlepage}
+ \setcounter{page}{1}
+}
+
+\newcommand{\quotepage}[2]{%
+ \thispagestyle{empty}
+ \begin{quote}
+ \end{quote}
+ \begin{quote}
+ \vspace{1in}
+ ``#1''\par\emph{#2}
+ \end{quote}
+ \setcounter{page}{0}
+ \newpage
+}
+% The castpage environment sets up the cast page
+\newenvironment{castpage}{%
+ \thispagestyle{empty}%
+ \center{\textsc{Cast of Characters}}%
+ \doublespace%
+ \begin{changemargin}{0in}{0.5in}%
+ }{%
+ \end{changemargin}%
+ \setcounter{page}{0}%
+ \newpage%
+}
+% \addcharacter adds characters to the cast page.
+% NOTE: There must be a blank line between \addcharacter commands
+% in the LaTeX source!
+\newcommand{\addcharacter}[2]{%
+ \begin{tabular}[2]{p{2in} p{4in}}
+ \textsc{#1} & #2
+ \end{tabular}
+ \doublespace
+}
+% Print "The End" at the end of the document.
+\AtEndDocument{%
+ \doublespace %
+ \hskip 2.5in %
+ \textsc{The End}%
+}