Modèle:Ppoem

La bibliothèque libre.
Documentation
Logo du langage Lua.
Ce modèle utilise le module Ppoem, un script écrit dans le langage de programmation Lua. Toute expérimentation devrait être conduite d’abord via une sous-page bac à sable ou dans votre espace utilisateur. Voir le Projet:Scribunto (de la Wikipédia en français) si vous voulez en savoir plus.

Ppoem permet la mise en forme de poèmes sur Wikisource. Il propose des fonctionnalités supplémentaires par rapport à la balise <poem>.


Usage[modifier]

Ppoem, soit « Proper Poem » en anglais.

Comment Ce modèle est expérimental sur fr.wikisource. Il a été importé depuis en.wikisource le 11 février 2022 suite à une discussion sur le Scriptorium.

Sur en.wikisource, il est considéré comme suffisamment stable et adapté pour la pluparat des utilisations de mise en forme d’un poème. Il pourrait ne pas fonctionner pour certains poèmes très particuliers.


Paramètres
  • 1 : le contenu du poème ;
  • gutter left, right or both : à utiliser si vous affichez les numéros de ligne ou de vers et qu’ils n'apparaissent pas lors du premier appel du modèle ;
  • class : classes supplémentaires à placer sur l'élément div entourant le poème ;
  • align : alignement du texte, à placer sur l’élément div entourant le poème (exemple : center) ;
  • style : styles supplémentaires à placer sur l'élément div entourant le poème ;

Syntaxe spéciale :

  • les lignes qui commencent par >> sont alignées à droite ;
  • celles qui commencent par <> sont centrées ;
  • celles qui se terminent par >>> XXX ont un numéro de ligne « XXX » ajouté à droite, au-delà de la marge de droite ;
  • celles qui commencent par XXX <<< on un numéro de ligne « XXX » rajouté à gauche, au-delà de la marge de gauche ;
  • celles qui commencent par {class} reçoivent la classe HTML class. La classe doit figurer dans la feuille de style CSS TemplateStyles ;
  • les espaces situés au début de la ligne sont remplacés par des espaces insécables &nbsp; ;
  • les double-points situés au début de la ligne sont transformés en espaces &emsp;.

Vous pouvez contrôler les strophes avec une syntaxe similaire :

  • une ligne vide marque le début d’une nouvelle strophe ;
  • une strophe préfixée avec {class} reçoit la classe HTML class. La classe doit figurer dans la feuille de style TemplateStyles ;
  • une strophe préfixée avec >> est alignée à droite ;
  • une strophe préfixée avec <> est centrée.
Code wiki Rendu
{{ppoem|
1 <<< {{lettrineP|O}}nce upon a midnight dreary, while I pondered, weak and weary,
Over many a quaint and curious volume of forgotten lore,
"While I nodded, nearly napping, suddenly there came a tapping,
 As of some one gently rapping, rapping at my chamber door.
"'Tis some visiter," I muttered, "tapping at my chamber door— >>> 5
::::::{raven_green} Only this, and nothing more."
>> {{sc|The Raven}}

{raven_green}
2 <<< La classe <code>raven_green</code> est appliquée
À la strophe entière.

>>
Cette strophe est alignée à droite
Comme ceci

<>
Et cette strophe est centrée
Comme ceci

<> ''Fin''
}}
1 Once upon a midnight dreary, while I pondered, weak and weary,
Over many a quaint and curious volume of forgotten lore,
"While I nodded, nearly napping, suddenly there came a tapping,
 As of some one gently rapping, rapping at my chamber door.
5"'Tis some visiter," I muttered, "tapping at my chamber door—
      Only this, and nothing more."
The Raven

2 La classe raven_green est appliquée
À la strophe entière.

Cette strophe est alignée à droite
Comme ceci

Et cette strophe est centrée
Comme ceci

Fin

Les lignes sont par défaut indentées de 4em, la première ligne étant suspendue, ce qui convient à peu près pour la majeure partie de la poésie imprimée.

Code wiki Rendu
{{ppoem|
Once upon a midnight dreary, while I pondered, weak and weary,
Over many a quaint and curious volume of forgotten lore,
While I nodded, nearly napping, suddenly there came a tapping,
As of some one gently rapping, rapping at my chamber door.
"'Tis some visiter," I muttered, "tapping at my chamber door—
::::::Only this, and nothing more."
}}
Once upon a midnight dreary, while I pondered, weak and weary,
Over many a quaint and curious volume of forgotten lore,
While I nodded, nearly napping, suddenly there came a tapping,
As of some one gently rapping, rapping at my chamber door.
"'Tis some visiter," I muttered, "tapping at my chamber door—
      Only this, and nothing more."

Sauts de page[modifier]

Le modèle fonctionne sur plusieurs pages et produit un seul conteneur de poème (contrairement à la balise <poem>).

Les paramètres start et end contrôlent l’assemblage des sections. Chacun dispose de quatre options : open/close (par défaut), follow, stanza et same-line :

  • pour la première section, utilisez start=open (ou ne mettez aucun paramètre) ;
  • pour une section qui termine une strophe, utilisez end=stanza, puis commencez la section suivante avec start=stanza ;
  • pour une section qui ne termine pas une strophe (de sorte que la section suivante poursuit la même strophe), la première section est marquée end=follow et la suivante start=follow ;
  • pour une ligne qui se poursuit sur la page suivante, la première section est marquée end=same-line et la suivante start=same-line ;
  • pour la dernière section, utilisez end=close (ou ne mettez aucun paramètre).

Ainsi, le paramètre end d'une section et le paramètre start de la section suivante ont toujours la même valeur. Pour un poème occupant une seule section, il n’est pas nécessaire d'utiliser les paramètres start et end.

Par exemple, pour un appel du modèle occupant quatre pages :

Code wiki Rendu
{{ppoem|end=follow|
Ceci est la première
page et la strophe
}}
{{ppoem|start=follow|end=stanza|
se poursuit sur cette page.

Mais ensuite, la seconde
page se termine à la fin
d’une strophe.}}
{{ppoem|start=stanza|end=same-line|
Et la page suivante
est une nouvelle strophe.
Ensuite il y une ligne vraiment très, très longue
}}
{{ppoem|start=same-line|end=close|
''qui se poursuit sur la page suivante.''

Et finalement quelques 
lignes normales à la fin.
}}
Ceci est la première
page et la strophe
se poursuit sur cette page.

Mais ensuite, la seconde
page se termine à la fin
d’une strophe.

Et la page suivante
est une nouvelle strophe.
Ensuite il y une ligne vraiment très, très longue qui se poursuit sur la page suivante.

Et finalement quelques
lignes normales à la fin.

Dans l’espace de noms Page, le modèle s’ouvre et se ferme sur chaque page, de sorte que le rendu sera correct aussi bien dans cet espace de noms que dans l’espace principal, du moment que les ppoems attenants sur les pages précédente et suivante utilisent les paramètres start et end correspondants.

Lettrine[modifier]

Un contenu flottant, tel qu’une {{lettrineP}}, devrait être placé normalement.

Avertissement : l’indentation n’est toutefois pas correcte, de sorte qu’une autre solution devrait probablement être trouvée.

Code wiki Rendu
{{ppoem|
{{lettrineP|B}}EHOLD these acts and scan them well
behold their pervers way:
These left the lord, these did his truth
which shold have ben their stay.
}}
BEHOLD these acts and scan them well
behold their pervers way:
These left the lord, these did his truth
which shold have ben their stay.

Accolades[modifier]

Les accolades fonctionnent comme prévu (à l’aide de la syntaxe >>> pour du flottant à droite):

Code wiki Rendu
{{ppoem|
No Place so Sacred from such Fops is barr'd,
Nor is ''Paul's Church'' more safe than ''Paul's Church-yard'':
Nay, run to ''Altars''; ''there'' they'll talk you dead;
For ''Fools'' rush in where ''Angels'' fear to tread.
Distrustful ''Sense'' with modest Caution speaks; >>> {{Accolade|d|3}}
It still ''looks home'', and ''short Excursions'' makes;
But ''ratling'' Nonsense in full ''Vollies'' breaks;
}}
No Place so Sacred from such Fops is barr'd,
Nor is Paul's Church more safe than Paul's Church-yard:
Nay, run to Altars; there they'll talk you dead;
For Fools rush in where Angels fear to tread.
Distrustful Sense with modest Caution speaks;
It still looks home, and short Excursions makes;
But ratling Nonsense in full Vollies breaks;

Ponctuation flottante[modifier]

Le modèle fonctionne aussi avec une ponctuation flottante, par exemple des guillemets situés en marge du poème.

Code wiki Rendu
{{ppoem|1=
<span class="wst-fqm" style="float:left; text-align:right; margin-left:-3em; width:3em;">« </span>Je suis l’esprit, vivant au sein des choses mortes.
Je sais forger les clefs quand on ferme les portes ;
Je fais vers le désert reculer le lion ;
Je m’appelle Bacchus, Noé, Deucalion ;
Je m’appelle Shakspeare, Annibal, César, Dante ;
}}
« Je suis l’esprit, vivant au sein des choses mortes.
Je sais forger les clefs quand on ferme les portes ;
Je fais vers le désert reculer le lion ;
Je m’appelle Bacchus, Noé, Deucalion ;
Je m’appelle Shakspeare, Annibal, César, Dante ;

Remarques :

  • dans ce code, le paramètre de {{ppoem}} commence par 1= parce que sa valeur inclut un site = ;
  • pour une utilisation courante, le code de la ponctuation flottante devrait être intégré dans un modèle tel que fqm sur en.wikisource.

Comparaison avec <poem>[modifier]

Ci-dessous est présentée une comparaison du rendu de ce modèle et de celui produit par la balise <poem> (or un code manuel <br/>, qui est équivalent), tel que vu comme un EPUB on dans une liseuse électronique.

Avec la balise poem :

{{ppoem}} affiche des lignes indentées et une ligne alignée à droite ne causant pas de saut de paragraphe :

Avantages[modifier]

  • La syntaxe est simple pour les situations courantes.
  • Gère l’indentation avec première ligne suspendue (évite l’utilisation de {{VersLong}} pour les vers risquant de s'étendre sur plusieurs lignes).
  • Plus correct sémantiquement : les lignes sont des span, les strophes sont des paragraphes et les poèmes sont des div.
  • Peut poursuivre une ligne d’une page à la suivante (ce qui n’est pas possible avec <poem>).
  • Combine deux éléments en un seul même lorsque la transclusion fait intervenir plusieurs pages.
  • Produit des lignes distinctes avec un copier/coller.
  • L’export est correct.
  • Centrage des blocs automatique (ce qui n’est pas possible avec <poem> car les éléments différents n’ont pas la même largeur).
  • Il est très facile d'appliquer des classes ou mises en forme CSS à certaines lignes ou strophes.
  • Peut remplacer <poem> directement.

Désavantages[modifier]

  • Il faut prendre garde à faire correspondre les paramètres start et end d’une page à la suivante.
  • Les lettrines entraînent parfois un retour à la ligne prématuré.
  • Parce que le contenu du poème est passé en valeur d’un paramètre du modèle, il faut éviter les caractères = et | dans le code. Une solution est d’utiliser la syntaxe {{ppoem|1=Ici le poème avec un signe =.}}.

Notes[modifier]


Template data[modifier]

Met en forme un poème

Paramètres du modèle[Modifier les données du modèle]

La mise en forme sur une seule ligne est préférée pour ce modèle.

ParamètreDescriptionTypeÉtat
11

Le contenu du poème

Exemple
Demain, dès l’aube, à l’heure où blanchit la campagne,
Contenuobligatoire
startstart

Le type de la première section du poème : une valeur parmi "open", "stanza", "follow", "same-line". Si la valeur n’est pas "open", elle doit être la même que celle du paramètre "end" précédent dans le même poème.

Exemple
stanza
Ligne de textesuggéré
endend

Le type de la dernière section du poème : une valeur parmi "close", "stanza", "follow", "same-line". Si la valeur n’est pas "close", le {{ppoem}} suivant DOIT utiliser la même valeur pour son paramètre "start".

Exemple
stanza
Ligne de textesuggéré

See also[modifier]