[[!meta author="spalax"]] [[!template id=plugin name=poetry author="[[Louis|spalax]]"]] # Poetry The poetry plugin provides the [[ikiwiki/directive/poetry]] directive, used to render poetry (or songs). ## Why? ### Typography In regular text, there are two different meaning of a new line: a break between two paragraphs, and the line wrap. When rendering poetry, we need a third one: the carriage return between two verse lines. This one should be different from the line wrap carriage return, otherwise one will not be able to tell apart these two: is a word displayed at the begenning of its line a new verse line, or the previous verse line, continuing on a new line because it is too long? Generally, wrapped text is indented, whereas verse lines are not. ### Markdown One could use carriage return (two white spaces at the end of a line) between verse lines, and paragraph break between stanzas, but: * adding white spaces at the end of lines is painful; * there is no easy way to render chorus (in a different way from verses). ## Usage The directive takes only one argument `content`, containing the poetry to render. Carriage returns are respected. Chorus are lines with `> ` as a starting character. Lines starting with `) ` are consored/outdated/crossed out verses. [[!toggle id=example text="View example"]] [[!toggleable id=example text=''' \[[!poetry content=""" This is a verse Made of several lines > And here is the chorus > La la la! > A beautiful chorus Another verse A bit longer Than the previous one ) This one is deleted ) Because I did not like it """]] ''']] ## CSS This plugin is useless without some corresponding CSS. An example is given below. [[!toggle id=css text="CSS"]] [[!toggleable id=css text=""" .poetry { padding-left: 1em; border-left: 0.1em solid lightgray; border-radius: 0.5em; } .poetry .stanza { padding-left: 1em; } .poetry .paren { font-style: italic; font-size: smaller; text-decoration: line-through; } .poetry .paren:hover { text-decoration: initial; } .poetry .chorus { margin-left: 0.1em; padding-left: 2em; border-left: 0.3em solid slategray; } .poetry .line { display: block; text-indent: -1em; } """]] ## Example This plugin is used to render songs on [this choir's website](http://barricades.int.eu.org/repertoire/bread_and_roses/). ## Code Code and documentation can be found here : [[https://atelier.gresille.org/projects/gresille-ikiwiki/wiki/Poetry]].