Sharing screenplays, stageplays and the like online is no trivial task. Typically, one writes these in specialist software, the most popular by far being Final Draft. That software can export a PDF and a PDF can be embedded in a webpage... but its contents won't be indexed for search purposes. So that's not too handy.
My current approach isn't what I'd consider the ideal solution, but it is a working one for the time being.
Write/Import the Screenplay in Highland
Highland 2 by Quote-Unquote Apps is a relatively new screenwriting software, but new is good. New is very, very good! The creators of Highland have done a lot of work to improve screenwriting over the years, including the development of a beautiful alternative Courier font. But perhaps their most interesting contribution to date is the Fountain document format. Highland itself has moved on to saving content as .highland files, but still makes use of Fountain behind the scenes and, important, has an option to export as .fountain.
So we start here. Either write a new script in Highland or import an old .fdx Final Draft file. Then:
Export as .fountain
Highland does allow you to export as either HTML or Markdown (each great formats for the web), but its built-in support for this gives no consideration for document formatting. So export it as a .fountain file instead, and we'll address conversion to a web format in the next step.
Convert to HTML with Screenplain
I tested a number of whatever-to-html converters to finally arrive on Screenplain. It is, hands down, the best for my purposes. Differently to other converters I tested, Screenplain has clear, semantic HTML classes which makes it a lot easier apply the necessary CSS to make a screenplay look like a screenplay.
Copy the HTML, Style as you please
Screenplain comes with its own CSS, but I've ignored that and written my own to be compatible with the rest of my site. Other than that minor detail, that's all there is to it. Beautiful screenplay HTML, easily styled and edited, thanks to Highland 2 and Screenplain.