Summary: If possible, present only one poem per window, so that the reader can concentrate on a single creation at a time. Allow generous white space to the left and right of the poem. Source-structure the poem into verse-lines, and when the poet has made such divisions, into stanzas. Control the indents using a style sheet.
As Oliver Simon points out in his Introduction to Typography (1945), poetry is more slowly and deliberately read than prose, which means that the reader is more than usually aware of typographical qualities. The defining feature of poetry is the division of the text into lines whose beginnings and ends are decided by the poet, not the editor. HTML has no provision at all for the mark-up of verse or song lyrics. At the opposite extreme is an enormously complex coding proposal from the Text Encoding Initiative (TEI) which is likely to overwhelm most HTML code writers.
My own survey of online magazines publishing contemporary poetry in March 2002 found that most presentations of poetry contained only rudimentary mark-up, with the stanzas commonly treated as paragraphs and
<br> tags inserted for the turns. Curiously enough, this line-break command is quite in harmony with the origins of the term verse, the Latin versus, which means "turning", but it is not adequate to meet the needs of the mark-up era. (It should be noted that the term "verse" in its strict meaning today refers to a single line of poetry, though in former, and continued colloquial usage it is often taken to mean a strophe or stanza, or any section of a song between refrains.)
Early digital publishers of poetry from the English literary canon, such as the 1992-2007 Electronic Text Center at the University of Virginia Library or the University of Toronto English Library, have encoded their source texts using a small number of TEI elements, but even as of 2002, the output is converted to crude HTML with simple spaces and breaks for presentation on the web.
To gain the maximum ability to adjust verse-lines, and even to address them individually with scripts, each line will need to be labelled as an element in its own right. In XML it is possible to enclose the lines in tags like this:
<verse>line goes here
</verse>, or, TEI-style, in order to make the source markup file more legible:
<l>line goes here
In HTML the most practical course at present is to adapt the paragraph or
<p> tag to the task of enclosing each line.
<p> has the great advantage of taking up just three character spaces, so that the source file can still be read as poetry, with each line bracketed within
<p> tags, without too much strain.
There are two minor practical disadvantages to this. One is that most visual browsers leave white space above and below every
<p> element if it is not given any additional styling. This can easily be overcome using styles to close up these top and bottom margins. The more serious disadvantage is that a marked-up document is likely to contain other text paragraphs as well, which will also, naturally enough, be enclosed in
<p> tags. In order to ensure these non-poem sections are not displayed as if they were poetry too, some kind of labelling scheme should be devised at the initial design stage. Conventional-text paragraphs that also occupy the poetry page should be marked off into some kind of non-poetry class of their own, for example like this:
Let's go through the stages of setting up a poem for digital presentation.