From 2fb1c0615c05cf72bfc2544a530e4994605a53a4 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Fri, 13 Jan 2006 00:07:44 +0000 Subject: stage git-svn-id: svn://tug.org/texlive/trunk@1345 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/tex/latex/stage/stage.cls | 380 ++++++++++++++++++++++++++++ 1 file changed, 380 insertions(+) create mode 100644 Master/texmf-dist/tex/latex/stage/stage.cls (limited to 'Master/texmf-dist/tex/latex/stage') 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, - +% 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}% +} -- cgit v1.2.3