Visualiser les détails du résultat

IdentifiantProjetCatégorieVisibilitéDernière mise à jour
0001163Documentations SICGestion de la documentation sous SPIPpublic2015-06-03 14:11
RapporteurdorchAssigné àutilisateur16 
PrioriténormaleImpactcritiqueReproductibilitétoujours
Statut ferméRésolutioncorrigé 
Version du produit 
Version cibléeRésolu dans la version 
Résumé0001163: Latex : Traitement des listes à puces et numérotées
DescriptionDans SPIP les listes sont représentées par un trait d'union et une astérisque ou le trait d'union et le symbole dièse pour respectivement les listes à puces et les listes numérotées. (cf. http://contrib.spip.net/Les-raccourcis-typographiques-en-standard-avec-SPIP)
Dans les articles, les listes à puces sont souvent écrites, à tort, avec uniquement un trait d'union. Le plugin "Belles Puces" effectue donc automatiquement la conversion vers le format officiel pour que ces listes soient traitées correctement.

En LaTeX, l'équivalent correspond aux environnements itemize et enumerate encadrés par des begin/end et où chaque ligne commence par l'instruction \item.

Voici ci-joint le script de conversion LaTeX avec un script reprenant l’instruction de Belles Puces et effectuant la conversion.
Informations complémentairesInstructions à ajouter dans propre_export_doc_latex :
    // On traite les listes à puce et numérotées
    $t = preg_replace('/^-\s+/m','-* ',$t);
    $t = latex_liste($t,array('-*','itemize'));
    $t = latex_liste($t,array('-#','enumerate'));


Et la fonction qui va bien :
/**
 * Conversion des listes SPIP en listes latex avec l'environnement itemize
 * @param $t le texte à traiter
 * @param $type caractère de définition du type de liste et environnement latex correspondant
 * @return le texte traité
 * @author David Dorchies
 * @date 02/06/2015
 */
function latex_liste($t,$type=array('-*','itemize')){
    // On découpe le texte en lignes
    $lignes = explode("\n",$t);
    $bDansListe = false;
    $patsize = strlen($type[0]);
    $ret = array();
    foreach($lignes as $ligne) {
        if(substr($ligne,0,$patsize)==$type[0]) {
            // On est sur un item de liste !
            if(!$bDansListe) {
                // C'est un début de liste
                $ret[]='\begin{'.$type[1].'}';
                $bDansListe = true;
            }
            $ret[] = '\item '.substr($ligne,$patsize);
        }
        else {
            if ($bDansListe && trim($ligne)!='') {
                // On est sorti de la liste
                if(trim(end($ret))=='') {array_pop($ret);}
                $ret[] = '\end{'.$type[1].'}';
                $ret[] = '';
                $bDansListe = false;
            }
            $ret[] = $ligne;
        }
    }
    if($bDansListe) {
        // Il faut fermer la liste
        $ret[] = '\end{'.$type[1].'}';
    }
    return implode("\n",$ret);
}
BalisesAucune balise n'est associée.

Activités

utilisateur16

2015-06-03 14:11

  ~0001200

Cette méthode a été testée et est fonctionnelle. Elle sera intégré lors de la 1.3.4.

Historique du bogue

Date de modification Nom d’utilisateur Champ Changement
2015-06-03 09:37 dorch Nouveau bogue
2015-06-03 09:37 dorch Statut nouveau => affecté
2015-06-03 09:37 dorch Assigné à => utilisateur16
2015-06-03 14:11 utilisateur16 Note ajoutée: 0001200
2015-06-03 14:11 utilisateur16 Statut affecté => fermé
2015-06-03 14:11 utilisateur16 Résolution ouvert => corrigé