From f293e42154e00d9414a9ed54e00742b27b8c9066 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Fri, 28 Apr 2017 21:17:39 +0000 Subject: stage (28apr17) git-svn-id: svn://tug.org/texlive/trunk@44100 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/tex/latex/stage/stage.cls | 265 +++++----------------------- 1 file changed, 49 insertions(+), 216 deletions(-) (limited to 'Master/texmf-dist/tex/latex/stage/stage.cls') diff --git a/Master/texmf-dist/tex/latex/stage/stage.cls b/Master/texmf-dist/tex/latex/stage/stage.cls index 13b24567883..d369724ccb8 100644 --- a/Master/texmf-dist/tex/latex/stage/stage.cls +++ b/Master/texmf-dist/tex/latex/stage/stage.cls @@ -1,5 +1,9 @@ %% stage.cls %% Copyright 2005 Robert Jahrling +%% Copyright 2017 Reuben Thomas +% +% This is a LaTeX2e class called stage, providing a class +% for stage play Manuscript Format. % % This work may be distributed and/or modified under the % conditions of the LaTeX Project Public License, either version 1.3 @@ -11,128 +15,23 @@ % % This work has the LPPL maintenance status "maintained". % -% This Current Maintainer of this work is Robert Jahrling +% This Current Maintainer of this work is Reuben Thomas % % 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. +% See https://github.com/rrthomas/stage or contact me at rrt@sc3d.org % + \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} +\ProvidesClass{stage}[2017/04/25 v1.00 Manuscript Format for stage plays] +% The class is based on the default book class +\LoadClass[12pt,oneside]{book} +\PassOptionsToClass{\CurrentOption}{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 +\RequirePackage{needspace} % 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 @@ -144,6 +43,14 @@ \raggedbottom + +%%% Customizable strings (Note: keep in sync with the docs) +\newcommand{\actname}{Act} +\newcommand{\scenename}{Scene} +\newcommand{\continuedname}{Continued} +\newcommand{\castname}{Cast of Characters} +\newcommand{\theendname}{The End} + %%% pagestyle commands % use fancy pagestyle \pagestyle{fancy} @@ -166,51 +73,28 @@ % No indentation. Double space between paragraphs. \parindent 0pt -% \parskip 1.6ex \parskip 0pt +\newlength{\doublespacelength} +\setlength{\doublespacelength}{1.6ex} % \doublespace leaves a line's worth of space between elements. -\newcommand{\doublespace}{\vspace{1.6ex}} +\newcommand{\doublespace}{\vspace{\doublespacelength}} % \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 +% \address is used for the writer's 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}% - }% -} +\setcounter{actcounter}{0} % Counts scenes per act \newcounter{scenecounter}[actcounter] % An environment for specifying margin changes \newenvironment{changemargin}[2]{% \begin{list}{}{% + % Without the following critical setting, we could use + % changepage’s adjustwidth environment + \setlength{\partopsep}{0pt}% \setlength{\topsep}{0pt}% \setlength{\leftmargin}{#1}% \setlength{\rightmargin}{#2}% @@ -219,25 +103,14 @@ \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} -% } +% \dialog sets the character's name above their speech \newcommand{\dialog}[2]{% - \doublespace% - \hskip 2.5in\textsc{#1}\par% - \nobreak - \extramarks{}{} - \nobreak - #2 - \extramarks{\textsc{#1}(Continued)}{} + \doublespace% + \needspace{2\baselineskip}% + \begin{changemargin}{2.5in}{0in}\textsc{#1}\end{changemargin}% + \extramarks{}{}% + #2% + \extramarks{\textsc{#1} (\continuedname)}{} } % \dialogue, for people who like that spelling better @@ -247,14 +120,14 @@ % % Start a new page for each Act except the first \newcommand{\act}{% + \renewcommand{\thepage}{\Roman{actcounter}-\arabic{page}}% \begin{changemargin}{2.5in}{0in} \ifthenelse{\value{actcounter} > 1}{\newpage}{} - \textsc{Act} \Roman{actcounter} \ifthenelse{\value{actcounter} = 1}{\doublespace}{} \stepcounter{actcounter} + \textsc{\actname} \Roman{actcounter} \end{changemargin} \setcounter{page}{1} -% \doublespace } % \scene creates a scene header, with arabic numerals % @@ -263,20 +136,15 @@ \begin{changemargin}{2.5in}{0in} \stepcounter{scenecounter} \ifthenelse{\value{scenecounter} > 1}{\newpage}{} - \textsc{Scene} \arabic{scenecounter} + \textsc{\scenename} \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. +% \stage sets the stage directions farther in than the box +% containing the dialog, and parenthesizes them. \newcommand{\stage}[1]{% \doublespace \begin{changemargin}{2in}{0in} - % \extramarks{}{(more)}% (#1)% \end{changemargin} } @@ -284,28 +152,15 @@ % 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}% + \begin{changemargin}{2in}{0in}% (#1)% - \end{changemargin} - % \parskip 0pt -} + \end{changemargin}} +% Undocumented, for backwards compatibility +\newcommand{\initsd}[1]{\charsd{#1}} % \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}} @@ -320,9 +175,6 @@ \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}} @@ -330,33 +182,17 @@ \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% + \center{\textsc{\castname}}% + \vspace{3ex}% \begin{changemargin}{0in}{0.5in}% }{% \end{changemargin}% @@ -364,17 +200,14 @@ \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 + \textsc{#1} & #2\\[\doublespacelength] \end{tabular} - \doublespace } -% Print "The End" at the end of the document. +% Mark the end of the document. \AtEndDocument{% \doublespace % \hskip 2.5in % - \textsc{The End}% + \textsc{\theendname}% } -- cgit v1.2.3