Note: I'm using plain TeX
I'm trying to create a layout for theatrical plays that shows stage directions aligned to the right.
I had to enclose the directions in a \vbox
to prevent them from being split across pages. My problem is that I'm not getting the correct vertical spacing (I want \parskip
) before the \vbox
, only after.
I could insert a \vskip
inside the \vbox
, but that would cause problems when the directions block is at the top of the page. How do I get my spacing right? Thanks!
\parindent 0pt
\parskip8pt
\long\def\stage[#1]{
\par
\vbox{
\hsize=6in
\leftskip2.5in
\parindent10pt
\hfill
{\it #1}
}
}
\long\def\says #1:#2|{
\bgroup
\hskip-1in
\vbox{\hsize=0.75in\hfill #1:}
\hsize5.5in
\leftskip1in
\vskip-20pt
#2\par
\egroup}
\says Man: This is a rather odd problem to have, I'm not sure what to do with it.|
\says Chorus: Look behind you! You'll find it there!|
\stage [The man spins wildly in his chair]
\says Man: I don't see anything. Anything at all!|
\bye
\stage
usage is wrong in your example --\stage<foo>
is meant rather, I think\vbox
doesn't start a paragraph, so you don't get\parskip
glue. Just do\par\vskip\parskip\vbox{...}
. As an aside, I find the definition of\says
very peculiar. Wouldn't\hbox to0.75in{\hfil #1:}
be simpler than using a\vbox
?\par
, so you wouldn't need|
which seems rather awkward (i.e.\long\def\says#1:#2 \par{..}
), just in case you didn't consider that. The\stage [..]
seems more natural.