Two column layout for stage play

Extending Zarko's nice idea, I would define a custom description environment play using the enumitem package and define some commands for the actors names \Anna, \Daniel, \Susan etc so that you can write the play in a more intuitive way as

\begin{play}
\Daniel  Hi there, what are you up to?
\Anna    I was just gonna go to the store to grab some
groceries, do you want something?
\Daniel  A pack of gum would be nice, thanks!
\end{play}

It would also be good to have a "direction command" that allows you to "interrupt" the dialogue and add stage directions. To set the width of the "actor column" and to define the macros for the actor's names I have added another command:

\DeclareActors{Daniel, Anna, Susan}

Putting this together your play begins to take shape as:

enter image description here

You can further customise the play environment by reading the enumitem manual. Here is the full code:

\documentclass{article}
\usepackage{calc}
\usepackage{enumitem}
\usepackage{etoolbox}
% define some macros for the play
\newlist{play}{description}{1}
\newlength\widthofactor
\newlength\widthofactors% will become width of widest actor name
\setlength\widthofactors{10mm}
\newcommand\DeclareActors[1]{% define actor commands
   \renewcommand*\do[1]{
     \csdef{##1}{\item[##1]}
     \setlength\widthofactor{\widthof{##1\quad}}
     \ifdim\widthofactors<\widthofactor
       \setlength\widthofactors\widthofactor
     \fi
   }
   \docsvlist{#1}
   \setlist[play]{labelwidth=\widthofactors, leftmargin=!}
}
\newcommand\Direction[1]{\end{play}\textit{#1}\begin{play}}

%%%%

\DeclareActors{Daniel, Anna, Susan}

\begin{document}

\begin{play}
\Daniel  Hi there, what are you up to?
\Anna    I was just gonna go to the store to grab some
groceries, do you want something?
\Daniel  A pack of gum would be nice, thanks!
\Direction{Anna exits stage left, going to the shops}
\Susan   What's on your mind?
\end{play}

\end{document}

Tags:

Formatting