STYLING SHAKESPEARE

To open a new direction for limpidsoft.com, we now provide ten of the most popular Shakespeare plays as both PDF and LaTeX files, with further plays in prospect:

The PDF files have been developed from the text source available from Complete Works of William Shakespeare.

They are provided for free download, together with the LaTeX text files from which they were generated, using pdflatex.
PLAY DOWNLOAD DOWNLOAD
Macbeth PDF LaTeX
Hamlet PDF LaTeX
Othello PDF LaTeX
Antony and Cleopatra PDF LaTeX
Romeo and Juliet PDF LaTeX
Julius Caesar PDF LaTeX
Midsummer Night‘s Dream PDF LaTeX
Merchant of Venice PDF LaTeX
King Lear PDF LaTeX
Coriolanus PDF LaTeX

The files emulate much of the style in the First Folio edition, particularly in the Scene headings, but we have chosen to alter the speaker style from indented italic to outdented small caps (because we find it easier to read). If you wish to change this, or any other setting, you can edit the preamble of the corresponding LaTeX file. Preamble? This is the first, and by far the least approachable, part of a LaTeX document: the part before \begin{document}.

Inside the Preamble

The first thing to note about the preamble is that it is identical in all the plays (that is why they all look the same!).

More broadly, we have attempted to make the document preamble as configurable as possible, so that it can be copied (with little or no editing) into other plays that you might wish to style.

We have also attempted to use the Literate Programming approach in styling, by defining all our document styles in terms of standard LaTeX commands and by giving our commands mnemonically sensible names, such as \Act and \Scene, as well as \Spk (speaker), \sd (inline stage direction), \SD (block-style stage direction) and \IB (indented block). This means that the commands are rememberable and, importantly, reconfigurable. Reconfigurable?

Consider the \Spk command: we have defined very indirectly:

\newcommand{\Tab}{\vspace*{1ex}\hspace*{-1.0em}}% negative indent gives outdent
\newcommand{\Speaker}{\textsc } % speaker in small caps
\newcommand{\Spk}[1]{\Tab\Speaker{#1}} % use these new commands

Very indirect, but very reconfigurable and reusable: outdented and in small caps style. But if, after we have assembled our LaTeX file, we decide that we want to indent the speaker line, we alter the the \Tab definition and/or the \Speaker definition and reprocess with pdflatex to get a restyled document. The body of the document is not touched. All this is very fast and easy.

Rebuilding PDF

The first tool that you need is a text editor--not a word processor. If you use Linux, you already have gedit but, for Windows, you might consider the Crimson Editor, a good free editor. Load one of the .tex (LaTeX) files. If you simply do not like it, go no further. Otherwise, start tinkering but, to build PDF files, you will also need a LaTeX system. In Linux, simply use the Package Manager to install the TeXLive system; for Windows, download the TeXLive package, free of charge.

The LaTeX variants are best used in a commandline environment. Assume that you are in your home directory (folder) and the LaTeX file (julius.tex) is in the SRC directory. Enter the following command twice:

 pdflatex SRC/julius

If there is no error, you will find the resulting julius.pdf in the current (home) directory, ready for viewing.

And there will be several julius.xxx files as well. These were used in the processing and can safely be removed.

Tinkering

Page Breaks: A play is highly factored and this increases the chances of bad page breaks. This means that, at the final stage of refining the document layout, it is necessary to insert forced page breaks. This can be done in one of two ways: either the explicit \ForcePage declaration or as part of a command, such as PgScene, which forces a page break before the start of a Scene heading. The reason for this is subtle: the document style is book (look at the preamble) and a book starts all chapters on a fresh odd-numbered page, while sections inside the chapter continue inline. Now our \Act command is really a wrapped-up chapter (look at the preamble again) and our \Scene is a wrapped-up section and it can sometimes be split by an unfortunate page break. As a result, the very final processing of the document is a look-through to find bad page breaks inside the compound scene titles. When a bad \Scene is found, it is changed to a \PgScene. Alternatively, but less elegantly, a \ForcePage declaration can be inserted before any problem \Scene. And, of course, \ForcePage can be used anywhere inside a document. And a final point about page breaks: we are configuring our plays in two columns. This means that a page break is really a break to the top of the next column (which may or may not be on the next page).

Page Settings: The size of the page defaults to a4paper (A4 paper: 297 x 210 mm) and the margins are set (perhaps unnecessarily) to illustrate the options. US letter paper (letterpaper: 270.5mm x 215.9mm) is a workable alternative--and slightly better if we are using multiple columns because there is less line wrapping of verse lines. If line wrapping is a problem, a useful option is a4paper, landscape or letterpaper, landscape, without any need to specify margins. It is so easy to tinker, but remember that any \ForcePage declarations may need to be changed.

Font: If you are using multiple columns in portrait mode, it is best to minimise line wrapping of speech lines by using a narrow font: timesfont (which was initially devised for use in narrow newspaper columns). Many (I) feel that timesfont is less readable than some of the broader fonts--notably Palatino (my favorite). So, unless you are using multiple columns, you might consider your choice of font. When?

This introduces one of the aims of my LaTeX documents: you may be arranging a discussion group or rehearsal of a play and want to distribute pocket-sized copies. Specify a5paper and choose the no-op option for the \Columns declaration! And then you would probably choose a wider font. And, finally, update any \ForcePage declarations.