Principe
Les raccourcis typographiques ont —comme leur nom ne l’indique pas vraiment— un rôle sémantique (on devrait peut-être justement les appeler des raccourcis sémantiques, non ?).
Le nombre d’accolades qui entoure un mot ou une expression est proportionnel à l’emphase [1] que l’on veut y mettre. Ainsi, lorsque l’on insiste un peu sur une expression on l’entoure de simples accolades. Dans SPIP cela va se traduire par un affichage en {
italiques}
(et c’est comme cela que c’est indiqué dans la barre de raccourcis typographiques). Lorsque l’on veut insister plus, on utilise les accolades doubles, ce qui donne du {{
gras}}
. Le stade ultime de l’emphase (ou de l’insistance) dans SPIPc’est trois accolades, ce qui crée un titre [2].
Ne vous méprenez pas, cet affichage de l’emphase n’est pas universel, et les malvoyants —en utilisant des périphériques de synthèse audio— ne les perçoivent pas de la même façon, mais bien comme de l’insistance. On peut aussi changer complètement la façon dont c’est affiché dans les CSS. Il faut donc veiller à ne pas utiliser ces raccourcis typographiques pour de la décoration, mais bien pour donner plus de sens à votre texte. Ces raccourcis, servent donc à baliser les zones du textes sur lesquelles on veut insister un peu beaucoup à la folie, ou pas du tout.
Si le texte est balisé, un petit programme peut très bien retrouver ces balises et identifier les différents éléments du texte : isoler les titres, faire ressortir les mots et expressions sur lesquelles l’auteur a voulu insister.
Et c’est là que l’on revient dans le vif du sujet car c’est précisément le rôle des filtres de cette contrb’.
Le code des filtres
Les filtres vont donc chercher les occurrences des balisages dus aux raccourcis typographiques. Le premier filtre recherche toutes les expressions entourées de triples accolades (soit les titres). Ensuite, il liste ces titres en les précédant chacun d’un tiret. L’intérêt de cette façon de faire est que si on laisse à SPIP le soin de traiter ce qui sort de ce filtre on aura au final une liste de puces.
{{{titre}}}
traité par le filtre de la contrib’ donne : -titre
qui une fois traité par le filtre « propre » de SPIP donne :
- titre
Si vous utilisez l’excellente contribution de chtitux et mortimer Génération automatique de numérotation, table des matières et références qui permet —enfin— d’avoir dans SPIP plusieurs niveaux de titre, je vous conseille d’adopter quelques petites modifications de mon cru (citées ici) qui rendent la contrib’ plus cohérente avec SPIP (les dièses « # » servent pour les objets numérotés et les étoiles « * » pour les objets non numérotés, les titres sont sémantiques sous forme de h3
, h4
, h5
, etc.). Vous obtiendrez alors à la sortie du filtre ci-dessous une liste de puces (numérotées ou non, selon la qualité de votre titre) qui reflétera la hiérarchie du plan de l’article (qui certes, double la balise #TABLEMATIEREs apportée par la contrib’).
Voici le code qui utilise principalement une expression régulière pour retrouver les textes encadrées par des triplets d’accolades.
<?php
function extrait_titres($texte) {
preg_match_all("/\{\{\{(.*?)\}\}\}/",$texte,$matches);
$key = key($matches[1]);
$val = current($matches[1]);
while(list ($key, $val) = each ($matches[1]))
{
$sortie .= "- ".$val."\n";
};
return $sortie;
}
?>
La sortie de ce filtre est donc une liste de titre précédés d’un tiret et suivis d’un retour à la ligne. Pour obtenir la liste de puces, il faut faire passer ce résultat dans le filtre « propre » de SPIP. Dans vos squelettes vous écrirez [(#TEXTE*|extrait_titres|propre)]
[3].
Pour les emphases fortes (doubles accolades), on fait exactement pareil. Excepté que cette fois on ne va pas rajouter de tiret, mais rajouter des guillemets typographiques français.
Notez que l’on ne veut pas que notre expression régulière relève les triples accolades (qui contiennent aussi des doubles accolades) qui encadrent les titres, il y a donc une première expression régulière (preg_replace) qui les enlève du texte à traiter.
<?php
function extrait_emphaseforte($texte) {
$texte=preg_replace("/(\{\{\{)(.*?)(\}\}\})/","",$texte);
preg_match_all("/\{\{(.*?)\}\}/",$texte,$matches);
$key = key($matches[1]);
$val = current($matches[1]);
while(list ($key, $val) = each ($matches[1]))
{
$sortie .= "«".$val."»; ";
};
return $sortie;
}
?>
Même principe pour finir avec les emphases normales (et on élimine cette fois les titres et les emphases fortes).
<?php
function extrait_emphase($texte) {
$texte=preg_replace("/(\{\{\{)(.*?)(\}\}\})/","",$texte);
$texte=preg_replace("/(\{\{)(.*?)(\}\})/","",$texte);
preg_match_all("/\{(.*?)\}/",$texte,$matches);
$key = key($matches[1]);
$val = current($matches[1]);
while(list ($key, $val) = each ($matches[1]))
{
$sortie .= "«".$val."»; ";
};
return $sortie;
}
?>
Pour les liens la démarche est à peu près la même. Ce filtre va rechercher et extraire dans le texte tous les raccourcis typos de liens et ne lister qu’eux, en sautant une ligne entre-eux.
Comme précédemment, pour éviter les notes, élimine d’abord les textes entre doubles crochets pour s’intéresser à ceux qui sont entre simples crochets...
<?php
function extrait_liens($texte) {
$texte=preg_replace("/(\[\[)(.*?)(\]\])/","",$texte);
preg_match_all("/(\[.*?\])/",$texte,$matches);
$key = key($matches[1]);
$val = current($matches[1]);
while(list ($key, $val) = each ($matches[1]))
{
$sortie .= $val."\n\n";
};
return $sortie;
}
?>
Soyons clairs, la programmation, c’est pas mon truc, et je n’y connais rien. Ça marche dans la plupart des cas, chez moi. Ça devrait donc fonctionner parfois, voire souvent chez vous (mais évitez les liens dans les notes, par exemple)...
installation et intégration dans les squelettes
L’installation est très simple elle se fait en recopiant le code du filtre voulu dans le fichier mes_fonctions.php[[pour SPIP<1.9> http://www.spip.net/fr_article901.html?var_recherche=mes_fonctions.php3].
Ensuite dans vos squelettes, il vous suffit d’appeler les filtres sur vos balises qui contiennent du texte (avec des raccourcis typographiques). Avec la balise #TEXTE cela donne :
- [(#TEXTE*|extrait_titres|propre)]
pour extraire la liste des titres,
- [(#TEXTE*|extrait_emphaseforte|propre)]
pour extraire la liste des mots sur lesquels l’auteur a voulu beaucoup insister,
- [(#TEXTE*|extrait_emphase|propre)]
pour extraire la liste des mots sur lesquels l’auteur a voulu insister,
- [(#TEXTE*|extrait_liens|propre)]
pour extraire la liste des liens contenus dans #TEXTE.
N’oubliez surtout pas de repasser le résultats de vos filtres dans « propre » comme dans l’exemple ci-dessus.
Voici un exemple de squelette qui analyse le contenu d’un article passé en contexte.
<BOUCLE_Article(ARTICLES){id_article}>
<h2>Résumé synthétique de l'article : "#TITRE".</h2>
[<div class="bloc-analyse">
<h3>Descriptif :</h3>
(#DESCRIPTIF)
</div>]
[<div class="bloc-analyse">
<h3>Plan :</h3>
(#TEXTE*|extrait_titres|propre)
</div>]
[<div class="bloc-analyse">
<h3>Expressions les plus importantes :</h3>
(#TEXTE*|extrait_emphaseforte|propre)
</div>]
[<div class="bloc-analyse">
<h3>Autres expressions importantes :</h3>
(#TEXTE*|extrait_emphase|propre)
</div>]
[<div class="bloc-analyse">
<h3>Liens à visiter cités dans l'article :</h3>
(#TEXTE*|extrait_liens|propre)
</div>]
<div class="bloc-analyse">
<h3>Documents d'illustration ou de référence :</h3>
<BOUCLE_Photos(DOCUMENTS){id_article}{par titre}>
<div style="float: left; width: 120px; margin: 0.2em;">
[(#LOGO_DOCUMENT|#URL_DOCUMENT||reduire_image{120,0})]
#TITRE
</div>
</BOUCLE_Photos>
</div>
</BOUCLE_Article>
Intérêt pédagogique
L’intérêt principal que je vois à cette batterie de filtres est de faire comprendre aux rédacteurs combien il est important d’écrire sémantique dans SPIP, c’est-à-dire de ne pas tenir compte de la présentation de leur article (prise en charge automatiquement par SPIP), mais seulement du sens de leur texte, dans lequel les raccourcis leur permettent d’identifier et de baliser des éléments.
Aucune discussion
Ajouter un commentaire
Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :
Merci d’avance pour les personnes qui vous aideront !
Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.
Suivre les commentaires : |