Résumé d’article automatique

Des filtres pour les fabriquer

Voici un jeu de filtres exploitant les raccourcis typographiques de SPIP et permettant d’afficher une analyse sémantique des documents SPIP.

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&nbsp;: "#TITRE".</h2>
	[<div class="bloc-analyse">
		<h3>Descriptif&nbsp;:</h3>
		(#DESCRIPTIF)
	</div>]
	[<div class="bloc-analyse">
		<h3>Plan&nbsp;:</h3>
		(#TEXTE*|extrait_titres|propre)
	</div>]
	[<div class="bloc-analyse">
		<h3>Expressions les plus importantes&nbsp;:</h3>
		(#TEXTE*|extrait_emphaseforte|propre)
	</div>]
	[<div class="bloc-analyse">
		<h3>Autres expressions importantes&nbsp;:</h3>
		(#TEXTE*|extrait_emphase|propre)
	</div>]
	[<div class="bloc-analyse">
		<h3>Liens à visiter cités dans l'article&nbsp;:</h3>
		(#TEXTE*|extrait_liens|propre)
	</div>]
	<div class="bloc-analyse">
		<h3>Documents d'illustration ou de référence&nbsp;:</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.

Notes

[1le terme d’emphase est un anglicisme de Geek qui doit en fait être remplacé par insistance

[2Donc essayer du faire du gras-italique dans SPIP n’a pas de sens puisque cela signifie à la fois que l’on veut insister sur le mot (entouré par une accolade) en insistant fortement aussi (double accolade), sans pour autant insister suffisamment pour utiliser une triple accolade !

[3l’étoile « * » sert à éviter que SPIP ne transforme le texte avant que nous le moulinions

Le logo de cet article est une photo d’Alain Bachellier, visible sur Flickr : Loupes & Lettres par Alain Bachellier sur Flickr.

Cette image est sous licence CC : Attribution-NonCommercial-NoDerivs 2.0 (by-cc-nd).

Discussion

2 discussions

  • ivandps

    Web sémantique. Cette notion est relativement nouvelle pour moi. A approfondir, mais déjà merci pour ce cours fort intéressant.

    Connaissez-vous Scenari ?. Scenari est une suite logicielle libre de conception et d’utilisation de chaînes éditoriales pour la création de documents multimédia, justement basée sur le sémantique et xml.

    Que pensez-vous de la pertinence d’une passerelle Spip-Scenari en tant que ce dernier permet la publication multicanal au format odt (Le coeur de métier de Spip se situant surtout sur la publication Web ?!)

    Répondre à ce message

  • 1

    Cher Beurt,

    excellente idée que ce jeu de filtres. Et si tes propos sur l’insistance se fondent sur le bon sens, ils mettent à rude épreuve les règles typo.

    Quelques règles dont je me souviens :

    -  l’italique signale des titres (de journaux : Le Monde, Libération), marque les citations (beurt dit : « Voici un jeu de filtres […] »), etc. ;
    -  le gras, s’il sert parfois à insister, s’utilise plutôt pour la titraille que dans le corps du texte. Un intertitre, par exemple, doit attirer l’œil et l’esprit, pas forcément par la profondeur de son sens mais parce qu’il est accrocheur et peut relancer l’intérêt du lecteur.

    Un post trop agressif ?

    Pas question ici de nier l’intérêt de ta contrib, non. Mais plutôt prévenir les potentiels expérimentateurs qu’ils doivent, pour tirer la substantifique moelle de ton œuvre, se référer à ton approche de l’insistance plutôt qu’aux règles de la typo pour alimenter leurs sites.

    m

    • En réalité, que sont les raccourcis dits typographiques (remarque l’utilisation de l’italique) ?

      -  Soit, comme leur nom l’indique depuis toujours dans Spip, un moyen d’enrichir la typographie du texte (et sous-entendu de respecter des règles de typographie, comme celles qui sont propres à l’édition). Donc un moyen de présentation.

      -  Soit, comme leur nom ne l’indique pas, mais comme le fonctionnement de Spip le montre : transformation des doubles accolades en <strong></strong> et des simples accolades en <em></em>. em signifiant emphasis, et strong strong emphasis. Un moyen de donner du sens par l’insistance.

      Où en sommes-nous alors ? Je pense que Spip a beaucoup muri depuis qu’il existe et qu’il inventa les raccourcis typos. Je crois aussi que le web sémantique a pris de plus en plus de place dans Spip (notamment à cause du souci de validation XHTML). Aujourd’hui, la terminologie « raccourcis typographiques » me parait moins adaptée qu’avant dans la mesure où il a été choisi de considérer que les accolades étaient de l’emphase (donc sémantiques) et non de la présentation (ce qui aurait pu se faire en remplaçant les doubles accolades par des <b></b> et les simples par <i></i> ce qui était tout autant valide XHTML).

      C’est mon avis, et... je le partage ! Mais je comprends bien qu’on pense continuer à utiliser les raccourcis de Spip comme de la présentation.

      Pour ma part, je gère un Spip institutionnel, et l’accessibilité est une réelle préoccupation. À ce titre j’exige que les rédacteurs aient une utilisation sémantique des raccourcis. D’où cette contrib’ et l’intérêt pédagogique que je lui trouve.

      Pour finir, quand on regarde comment tu suggères d’utiliser ces raccourcis pour respecter les règles typographiques dont tu te souviens, et comment je les utilise pour insister plus ou moins sur certaines expressions, on constate une certaine homologie. Et cela s’explique bien simplement : la typographie est déjà sémantique !

    Répondre à ce message

Ajouter un commentaire

Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :

  • Désactiver tous les plugins que vous ne voulez pas tester afin de vous assurer que le bug vient bien du plugin X. Cela vous évitera d’écrire sur le forum d’une contribution qui n’est finalement pas en cause.
  • Cherchez et notez les numéros de version de tout ce qui est en place au moment du test :
    • version de SPIP, en bas de la partie privée
    • version du plugin testé et des éventuels plugins nécessités
    • version de PHP (exec=info en partie privée)
    • version de MySQL / SQLite
  • Si votre problème concerne la partie publique de votre site, donnez une URL où le bug est visible, pour que les gens puissent voir par eux-mêmes.
  • En cas de page blanche, merci d’activer l’affichage des erreurs, et d’indiquer ensuite l’erreur qui apparaît.

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.

Qui êtes-vous ?
[Se connecter]

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Ajouter un document

Suivre les commentaires : RSS 2.0 | Atom