From f293e42154e00d9414a9ed54e00742b27b8c9066 Mon Sep 17 00:00:00 2001
From: Karl Berry <karl@freefriends.org>
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, <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.
+% 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

