24

In theatre (and film) there's a tendency for actors to let each other finish what they're saying, possibly even making a small pause before starting their turn. But that is not how real life conversation work and it leads to a particular stiff "theatre tone".

To counter that I'm letting my actors practise speaking at the same time (intentionally, that is, in real life they're doing it all the time). And in order to help them gain an idea of what the result is supposed to be like, I want to give them their text already in a format that visualises this.

I made a text/plain example for what I need:

ALICE: I‘m saying something in
this mock drama of ours, it is      BOB: Yes.
supposed to be a little             CHARLES: No doubt.
monologue of medium length. I‘m
still supposed to be talking,       BOB: I can see that.
because our author needs an
example for you trying to
interrupt me. But, while I‘m
certainly perceiving what you‘re
saying, I‘m not yet letting you
take what linguists call your       BOB: I want to ...
„turn“, for I really want to
finish my thought.                  BOB: I want to say something right
                                    now. I have to admit, I don‘t really
CHARLES: I feel that, too ...       have something to say. But I would
                                    feel left out, if I did not get my
ALICE: Of course.                   turn. I would feel that I‘d be
                                    vanishing in this piece, if I
                                    wouldn‘t say something. I feel that
                                    my sole purpose is to have a little
CHARLES: That‘s ...                 speech right here. And although I
                                    rather feel compelled to talk right
CHARLES: That‘s great, because      now, I also derive some strange kind
it expresses exactly my             of joy from it.
sentiments also. You‘re really
giving voice to ...                 ALICE: Of course, Bob, and now we
                                    all had our turn, except Charles, 
                                    whom I‘m interrupting right now, but
                                    that is intentional. And now we
                                    can finish this little farce,
                                    right? I mean, like: Stop it
                                    right now!

So, basically, I need two columns. The content of each column needs to be positioned relative to the text in the other column. In the example, when Bob says "Yes." in the right column, this should occur on the same line as the word "drama" in Alice's speech in the left column. And the other way around: When Charles says "I feel that, too ..." in the left column, this should occur after Bob's "I don't really have" in the right column.

I guess, that, provided it is feasible at all, this is rather non-trivial to achieve in LaTeX. Basically, I need a solution right now, but also a possibly more thorough one for future projects. I have a nagging suspicion that for right now I'm better off with Inkscape or Scribus. I'd love to be wrong about this. For the future, I'd like to find a solution with LaTeX or TeX. I have little to no experience with LaTeX hacking, but I'm confident that I can get into it, given enough time. Pointers on where to look and tips as for the general logic on how to achieve it could greatly facilitate it. Also, I'm an org-mode user and feel quite at home with Emacs-Lisp hacking. So, one possibility would be to write an emacs interface and produce TeX code programmatically.

A possible LaTeX interface could, for instance, include a command \turn{LABEL} to indicate the start of a new turn in the other column and \turnlabel{LABEL} to indicate where it should be vertically positioned in relation to the previous turn. The interface could, again just for instance, include a command \interruption for interruptions that don't constitute a turn. For instance:

%% mock LaTeX

\turn{Alice} 

ALICE: I‘m saying something in this mock drama
\interruption{BOB: Yes.} \interruption{CHARLES: No doubt.}
of ours, it is supposed to be a little monologue of medium
length. I‘m still supposed to be talking \interruption{BOB:
  I can see that.}, because our author needs an example for
you trying to interrupt me. But, while I‘m certainly
perceiving what you‘re saying, I‘m not yet letting you take
what linguists \interruption{BOB: I want to ...} call your
„turn“, for I really want to finish \turnlabel{Bob} my
thought.

\turn{Bob}
BOB: I want to say something right now. [...]
  • 4
    Try »paracol«, »parallel« or »parcolumns«. – Thorsten Donig Sep 10 '13 at 10:17
  • 2
    could you edit your question to include that text as text rather than as a screen dump. – David Carlisle Sep 10 '13 at 10:49
  • 2
    @DavidCarlisle: I'd love to; in fact, I tried originally both with a <pre> tag and; but the text/plain example is based on absolute positioning of the right column based on characer count. In the preview, this appeared ragged, and because of the amount of text, completely messy. – Oliver Scholz Sep 10 '13 at 10:59
  • @ThorstenDonig Great! Thank you very much, this might be a starting point. – Oliver Scholz Sep 10 '13 at 10:59
  • 1
    You could use the code button {} (or simply indent by 4 spaces) to lay out the text exactly – David Carlisle Sep 10 '13 at 11:20
16

enter image description here

This isn't too smart about multi-line interruptions near a page break, or interruptions too close together.

Commented out you will see some code that records the vertical start and end positions in a .pos file at the end of the run, this could be used on a later pass to automatically move things around but that gets tricky and unstable, and possibly for a play you ultimately want manual control anyway, so this uses a simpler scheme that \turn and \interruption take an optional first parameter than shifts the text by that number of baselineskip.

\documentclass[a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}

\makeatletter

\setlength\columnsep{20pt}

\newwrite\iterpos

%\immediate\openout\iterpos=\jobname.pos

\raggedbottom
\parskip\z@

\newcount\turncnt
\newcount\intercnt

\def\dialog{%
\par
\global\turncnt\z@
\linewidth=\dimexpr(\textwidth-\columnsep)/2\relax
\hsize\linewidth}

\def\enddialog{\par}


\newcommand\turn[2][0]{%
\global\advance\turncnt\@ne
\setbox0\hbox{\textbf{#2: }}%
\everypar{\setbox2\lastbox\box0\everypar{}}
\par
\ifnum#1=\z@\else\vskip#1\baselineskip\fi
\ifodd\turncnt
\hsize\linewidth
\leftskip\z@
\else
\hsize\dimexpr2\linewidth+\columnsep\relax
\leftskip\dimexpr\linewidth+\columnsep\relax
\fi
\ignorespaces}

\newcommand\interruption[3][0]{%
\global\advance\intercnt\@ne
\@bsphack
\strut\vadjust{\noindent
\ifodd\turncnt
\hspace*{\dimexpr\linewidth+\columnsep\relax}%
\else
\hspace*{\dimexpr-\linewidth-\columnsep\relax}%
\fi
\raisebox{\dimexpr\dp\strutbox
\ifnum#1=\z@\else-(#1\baselineskip)\fi
\relax}[\z@][\z@]{\parbox[t]{\linewidth}{%
%\pdfsavepos
%\edef\tmp{\write\iterpos{\string\def\string\intterstart\romannumeral\intercnt{\noexpand\the\pdflastypos}}}\tmp
\textbf{#2: }#3%
  \ifhmode\unskip\fi
%\pdfsavepos
%\edef\tmp{\write\iterpos{\string\def\string\intterend\romannumeral\intercnt{\noexpand\the\pdflastypos}}}\tmp
}}}%
\@esphack}

\makeatother


\begin{document}
\begin{dialog}
\turn{ALICE}I‘m saying something in
this mock drama
\interruption{BOB}{Yes.} \interruption[1]{CHARLES}{No doubt.}
 of ours, it is supposed to be a little            
monologue of medium length. I‘m
still supposed to be talking\interruption{BOB}{I can see that.},     
because our author needs an
example for you trying to
interrupt me. But, while I‘m
certainly perceiving what you‘re
saying, I‘m not yet letting you
take what linguists\interruption{BOB}{I want to ...} call your       
„turn“, for I really want to
finish my thought.                  \turn[-2]{BOB}

                                    I want to say something right
                                    now. I have to admit, I don‘t really
                                   have something to say.\interruption{CHARLES}{ feel that, too ...} But I would
                                    feel left out, if I did not get my
                  turn.\interruption{ALICE}{Of course.} I would feel that I‘d be
                                    vanishing in this piece, if I
                                    wouldn‘t say something. I feel that
                                    my sole purpose is to have a little
                 speech right here.\interruption{CHARLES}{That‘s ...} And although I
                                    rather feel compelled to talk right
                                    now, I also derive some strange kind
                                    of joy from it.
\turn[-2]{CHARLES}
That‘s great, because     
it expresses exactly my             
sentiments also. You‘re really
giving voice to ...               \turn{ALICE}

                                    Of course, Bob, and now we
                                    all had our turn, except Charles, 
                                    whom I‘m interrupting right now, but
                                    that is intentional. And now we
                                    can finish this little farce,
                                    right? I mean, like: Stop it
                                    right now!

\end{dialog}
\end{document}
  • I'm speechless. Thank you very much! Yes, for a play I need manual control anyways, since the exact positioning of cues is part of the creative work. This definitely gets the job done; and it's a HUGE help for me. Again: Thank you! – Oliver Scholz Sep 11 '13 at 10:36

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.