L’estensione Poem permette una facile inclusione di poesie e materiale simile nelle pagine, delimitandole semplicemente fra tag <poem></poem> invece di aggiungere il tag <br> alla fine, o il carattere : all’inizio di ogni verso, come si faceva in passato. L'estensione, è utilissima su Wikisource dove sono comuni poesie con migliaia di versi.

I tag <poem>...</poem> compiono automaticamente a livello di server queste quattro azioni:

  1. apertura e chiusura di un tag html <div class="poem">;
  2. apertura e chiusura di un tag <p> in testa e in coda;
  3. aggiunta, riga per riga, di un <br />;
  4. sostituzione di tutti gli spazi all'inizio del verso con spazi non divisori &nbsp;

Oltre a questo l'estensione non fa altro: i wikilink, i template, la formattazione aggiuntiva ecc. eventualmente presenti nelle strofe sono conservati.

Esempio

modifica
Input text Output
<poem>
In [[W:Xanadu|Xanadu]] did Kubla Khan
A stately pleasure-dome decree:
Where Alph, the sacred river, ran
Through caverns measureless to man
Down to a sunless sea.

So twice five miles of fertile ground
With walls and towers were girdled round:
And there were gardens bright with sinuous rills,
Where blossomed many an incense-bearing tree;
And here were forests ancient as the hills,
Enfolding sunny spots of greenery.
</poem>

In Xanadu did Kubla Khan
A stately pleasure-dome decree:
Where Alph, the sacred river, ran
Through caverns measureless to man
Down to a sunless sea.

So twice five miles of fertile ground
With walls and towers were girdled round:
And there were gardens bright with sinuous rills,
Where blossomed many an incense-bearing tree;
And here were forests ancient as the hills,
Enfolding sunny spots of greenery.

In Xanadu did Kubla Khan
A stately pleasure-dome decree:
Where Alph, the sacred river, ran
Through caverns measureless to man
Down to a sunless sea.

So twice five miles of fertile ground
With walls and towers were girdled round:
And there were gardens bright with sinuous rills,
Where blossomed many an incense-bearing tree;
And here were forests ancient as the hills,
Enfolding sunny spots of greenery.

Il testo identificato da poem è incluso in un div, che per default non ha uno un attributo style; ma che eredita qualsiasi style o class passato al tag poem.

Per esempio, mentre il testo senza a capo automatico può essere utilizzato per evitare il ridimensionamento automatico di un riquadro, in alcuni casi il risultato è fastidioso da leggere, perchè le righe lunghe non sono spezzate automaticamente. Un risultato simile, ma in qualche modo migliore può essere utilizzato con il codice

<poem style="border: 1px dashed #2f6fab; background-color: #f9f9f9; padding: 1em;">

Applicato all’esempio precedente, il risultato è il seguente:

In Xanadu did Kubla Khan
A stately pleasure-dome decree:
Where Alph, the sacred river, ran
Through caverns measureless to man
Down to a sunless sea.

So twice five miles of fertile ground
With walls and towers were girdled round:
And there were gardens bright with sinuous rills,
Where blossomed many an incense-bearing tree;
And here were forests ancient as the hills,
Enfolding sunny spots of greenery.

L’opzione "compact"

modifica

Normalmente, il parser restituisce ogni testo delimitato dai tag poem in un paragrafo. Talora questo non è l’effetto desiderato; l’utilizzo dell’opzione compact sopprime le righe bianche automatiche fra paragrafi successivi, permettendo a segmenti continui di poesie senza spazi tra i versi di fondersi insieme. [Nota: il problema è risolto con opportuno settaggio della classe poem di Mediawiki:common.css e del corrispondente .poem p]

Input Output Input Output
<poem>
One,
Two.
</poem>
<poem>
Three?
Four!
</poem>

One,
Two.

Three?
Four!

<poem compact>
One,
Two.
</poem>
<poem compact>
Three?
Four!
</poem>
One,
Two.
Three?
Four!

Problemi e soluzioni

modifica
  • le variabili e le ParserFunctions funzionano all'interno del testo racchiuso da <poem> ... </poem> ma NON FUNZIONANO all'interno dello stesso tag <poem ... >; questo impedisce la costruzione di templates tipo <poem style="{{{1}}}">
  • un modo di aggirare il problema è di utilizzare un div esterno: <div style="{{{1}}}"><poem> ... </poem></div> .* un altro sistema è di utilizzare la magic word #tag : {{#tag:poem| ... |style="{{{1}}}"}}.
Input (dentro il testo OK, dentro il tag NO) Output
<poem style="{{{1|border: 1px solid Black;}}}">
One,
{{{2|Two.}}}
</poem>

One,
Two.

Input (sia dentro il testo che dentro il tag OK) Output
<div style="{{{1|border: 1px solid Black;}}}"><poem>
One,
{{{2|Two.}}}
</poem></div>

One,
Two.

{{#tag:poem|
One,
{{{2|Two.}}}
|style="{{{1|border: 1px solid Black;}}}"
}}

One,
Two.

Problemi e soluzioni specifici per le opere proofread in versi

modifica

Nelle opere proofread in versi, il problema più delicato è rendere "perfetta" la transclusione, ossia:

  1. evitare che siano inserite righe vuote all'interno di una strofa, quando la fine pagina cade a metà strofa;
  2. riprodurre fedelmente la spaziatura fra una strofa e l'altra (una riga vuota) quando la fine strofa cade sulla fine della pagina;
  3. mantenere la corretta indentatura sinistra nel primo verso di una nuova pagina.

1: Come evitare le righe vuote indesiderate

modifica

Per evitare le righe vuote basta porre il tag di chiusura </poem> alla fine dell'ultimo verso, evitando che ci siano successive righe vuote nella pagina, e porre il tag di apertura <poem> all'inizio del primo verso nella pagina successiva, senza che ci siano righe vuote in testa e senza utilizzare un acapo dopo il tag.

2: Come ottenere una riga vuota fra una strofa e la successiva

modifica

Funzionano due metodi, "tipo Edo" e "tipo Alex".

  1. Tipo Edo: alla fine della strofa precedente, a fine pagina, porre </poem> alla fine dell'ultimo verso e poi dare TRE acapo;
  2. Tipo Alex: Non mettere acapo a fine strofa dopo </poem> ma mettere UN acapo dopo il tag <poem> nella pagina successiva, all'inizio della strofa seguente.

3. Come ottenere la corretta indentatura nel primo verso di una strofa spezzata in due pagine

modifica

Il tag <poem> non gestisce bene gli eventuali spazi che lo seguono immediatamente; agisce invece bene sugli spazi in testa ai versi successivi.

Quindi, il codice per motivi misteriosi nel nsPagina NON dà il risultato atteso.

codice risultato
<poem>     Questo verso dovrebbe essere indentato di 5 spazi
     e anche questo qui</poem>

     Questo verso dovrebbe essere indentato di 5 spazi
     e anche questo qui

Per "forzare" spazi bianchi si può usare, al posto degli spazi, la "HTML entity" &nbsp; e scrivere quindi:

<poem>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Questo verso dovrebbe essere indentato di 5 spazi
     e anche questo qui</poem>

Almeno, questo fino a prova contraria...

4. Margine sinistro di strofe e singoli versi: stato dell'arte

modifica

Re Orso è una favola in versi, in cui la formattazione è parte integrante dell'opera; è composta di strofe molto diverse, talora molto lunghe, talora brevissime, e con una generalizzata convenzione di "indentatura inversa" (sporgenza verso sinistra) del primo verso della strofa; le strofe, inoltre, sono centrate nella pagina. In varie strofe, alcuni brevi versi erano spostati verso sinistra rispetto ai versi molto più lunghi della stessa strofa.

Queste sono le tecniche utilizzate per il posizionamento delle strofe e dei singoli versi, che si basano esclusivamente su definizioni di margine sinistro, senza utilizzare caratteri speciali come &nbsp; nè spazi aggiuntivi, nè i tag : a inizio verso. Agendo sul solo margine sinistro, si ottiene il normale funzionamento del template {{R}}.

  1. per definire il margine sinistro di una strofa, è stato utilizzato il {{Ms}} (Margine sinistro), che accetta un parametro di ampiezza; si suggerisce di utilizzare sempre la misura "elastica" em. Il template apre un "elemento blocco" div, e quindi va chiuso con un tag esplicito </div>. È opportuno che il template sia apposto internamente al tag poem.
  2. per modificare la posizione di un singolo verso relativamente alla posizione della strofa, è stato utilizzato un tag <span>...</span>, per il quale al momento (3 gennaio 2011) non esiste ancora un template.

Esempio: il codice:

<poem>{{Ms|4em}}
<span style="margin-left:-1.5em">{{R|1}}A mezzanotte - lo scarafaggio</span>
Incontra un vermine - sul suo sentier.
{{R|3}}« Hai l’ossa rotte - fratel, coraggio! »
Grida beffandolo - l’insetto ner.
{{R|5}}E il verme: « Ho corso - la terra e il mare,
« Solcai la faccia - del mondo intier.
{{R|7}}« Cerco Re Orso ». — 

</div></poem>

produce questo risultato (il testo è stato incluso in una div class=testi con bordo punteggiato per visualizzare la posizione della strofa e dei versi rispetto a una pagina in Ns0):


A mezzanotte - lo scarafaggio
Incontra un vermine - sul suo sentier.
3« Hai l’ossa rotte - fratel, coraggio! »
Grida beffandolo - l’insetto ner.
5E il verme: « Ho corso - la terra e il mare,
« Solcai la faccia - del mondo intier.
7« Cerco Re Orso ». —

  1. Il primo template {{Ms|4em}} è stato aperto immediatamento dopo il tag <poem>, e viene chiuso dall'ultimo tag </div> immediatamente precedente il tag </poem>;
  2. il codice: <span style="margin-left:-1.5em">, chiuso dal tag </span> alla fine del verso, produce uno spostamento verso sinistra di 1.5em del primo verso.

Note storiche

modifica

Questo testo è stato tratto dalla versione attuale della documentazione di poem su https://www.mediawiki.org, integrato da osservazioni sull'implementazione del tag poem in de.source, fr.source e en.source.

Nikola Smolenski ha scritto l’estensione come esercizio per il lavoro sulle estensioni, sviluppando un’idea di Yann Forget [1].

È stata implementata su wikisource e sperimentata nel giugno 2006, e sui siti rimanenti dal febbraio 2007.

Pagine correlate

modifica