SPIP-Contrib

SPIP-Contrib

عربي | Deutsch | English | Español | français | italiano | Nederlands

286 Plugins, 197 contribs sur SPIP-Zone, 236 visiteurs en ce moment

Accueil > Contribs dédiées > Livre avec SPIP > LaTeXWheel > Référence de LaTeXWheel

Référence de LaTeXWheel

21 janvier 2012 – par Maïeul – 10 commentaires

2 votes

LaTeXWheel est le plugin qui permet de convertir des raccourcis SPIP en code LaTeX.

Il fonctionne grâce à textwheel. Il s’utilise généralement en conjonction avec Zippeur.

Cet article liste :

  • les transformations de LaTeXWheel
  • les packages LaTeX nécéssaire pour chaque outils.

On consultera le tutoriel pour une première approche.

Les fonctions de base

La fonction de base est la fonction |propre_latex. Elle s’applique sur un champ brut, c’est à dire suivi d’une * [1].

[(#CHAMP*|propre_latex)]

Si on utilise le système de langue avec <multi>, il faut appliquer au préalable le filtre extraire_multi.

[(#CHAMP*|extraire_multi{#LANG}|propre_latex)]

Les raccourcis qui ne demandent pas de package supplémentaire

Les caractères suivants : \$%&_# qui ont une signification particulière en LaTeX sont automatiquement protégés en étant précédés de \.

{texte en emphase} donne \emph{texte en emphase}

{{texte en gras}} donne \textbf{texte en gras}

{{{intertitre}}} donne \subsection{intertitre}

[[Note de bas page]] donne \footnote{Note de bas de page}

<quote>texte cité</quote> produit \begin{quotation}texte cité\end{quotation}

Les raccourcis du type :

- x
- x
- x

ne sont pas encore traités.

En revanche :

-* élément non numéroté
-* élément non numéroté

produit

\begin{itemize}
\item élément numéroté
\item élément numéroté
\end{itemize}

On consultera aussi un article de Bébert pour faire des styles persos de listes à puce en LaTeX.

De même :

-# élément numéroté
-# élément numéroté

produit

  1. \begin{enumerate}
  2. \item élément numéroté
  3. \item élément numéroté
  4. \end{enumerate}

Télécharger

Pour rappel en LaTeX, en standard, on ne peut pas imbriquer plus de quatre niveaux de listes [2].

La langue

On utilisera le package polyglossia (de préférence à Babel) pour indiquer la langue.

Le filtre lang_polyglossia permet de transformer un code langue de spip (ex : fr, en) en code langue de polyglossia.

Ex :

  1. \setmainlanguage{[(#LANG|lang_polyglossia)]}

Les liens externes

Il est nécessaire d’utiliser le package hyperref.

[->http://url.com] produit \url{http://url.com}

[lien externe->http://url.com] produit \href{http://url.com}{lien externe}

Les liens internes

Pour mettre des liens internes, il est nécessaire d’insérer des \label correspondant à l’endroit vers lequel un lien doit pointer.

On relira d’abord une introduction aux références croisées en LaTeX.

Par exemple :

  1. <BOUCLE_articles(ARTICLES)>
  2. \chapter{[(#TITRE*|propre_latex)]}\label{art#ID_ARTICLE}
  3. </BOUCLE_articles>

Télécharger

Pour rappel, il existe trois commandes qui permettent de se servir d’une référence croisée :

  • \ref renvoie au numéro de la référence.
  • \pageref renvoie à la page de la référence.
  • \nameref, du package hyperref, donne le titre de l’élément sur lequel on renvoie.

Voici comment LaTeXwheel transforme les raccourcis :

[texte->xxx] donne texte (p.~\pageref{artxxx})

[texte->artxxx] donne texte (p.~\pageref{artxxx})

[->artxxx] donne \nameref{artxxx} (p.~\pageref{artxxx})

Par défaut, les abréviations de type art,rub,sont conservés.

En revanche articlexxx donne artxxx et rubriquexxx donne rubxxx.

En revanche motxxx ou autxxx reste tel que, simplement mis dans la commande LaTeX.

Les tableaux

Gros morceaux. Je ne rentrerais pas dans les détails, car pour avoir des tableaux correspondant aux styles voulus, il faut mettre la main « dans le camboui » une fois le fichier .tex produit.

Je renvoie aux fiches de Bébert sur les tableaux.

Sachons juste les réglages par défaut :

  • les tableaux sont de type longtable, donc nécéssitent le package du même nom.
  • la largeur des colonnes correspond à la largeur \textwidth, c’est à dire la largeur du texte, divisé par le nombre de colonnes. Les colonnes sont de type p
  • il n’y a pas de traits.
  • le \endhead est géré pour les entêtes.
  • les colonnes et les lignes peuvent être fusionnées. Le cas échéant, il faut utiliser le package \multirow.

Le modèles

Il faut se rappeler ce qu’est un modèle : http://www.spip.net/fr_article3454.html.
Les modèles sont utilisés par SPIP, par exemple pour insérer des images.
Le principe adopté pour la conversion vers LaTeX est de laisser de la souplesse.

Tout modèle xxx.html qui produit du html devrait avoir un équivalent latex_xxx.html.

À l’intérieur, on utilisera les commandes LaTeX adaptées. Voir par exemple :

Il faut faire particulièrement attention.

En effet, soit un modèle document.html. Si je l’appelle de la manière suivante : <document1>, je possède alors une variable d’environnement #ENV{id_document} égale à 1.

Je peux donc faire

  1. <BOUCLE_document(DOCUMENTS){id_document}>
  2. </BOUCLE_document>

Télécharger

En revanche, je ne peux pas dans le modèle correspondant latex_document.html faire cela. Il faut que je fasse :

  1. <BOUCLE_document(DOCUMENTS){id_document=#ENV{id}}>
  2. </BOUCLE_document>

Télécharger

Par ailleurs, si on utilise une image, il faudra se servir du filtre |latex_copier_img pour s’assurer que l’image sera bien présente dans le zip.

Ce filtre s’applique sur le chemin de l’image. Il reçoit comme premier argument le nom du zip que l’on souhaite produire, et comme second argument le dossier dans lequel l’image se trouvera à l’intérieur du zip.
Ex :

  1. \includegraphics{[(#FICHIER|latex_copier_img{ziptex,IMG})]}

On pourra s’inspirer des modèles présents dans le squelette Documentation2LaTeX.

Le code

Un code entre deux balises code produit \verb¡lecode¡.

Si on utilise le plugin coloration code, alors il faudra utiliser le package minted dans le fichier LaTeX final.

Ce package nécéssite :

  • d’avoir pygments installé.
  • de compiler en ligne de commande, avec xelatex -shell-escape xxx.

En outre, il faudra avoir l’anglais déclaré comme langue, dans le préambule :

  1. \setotherlanguage{english}

On obtiendra les résultats suivants :

  • Pour un code présent présent entre <cadre> :
    1. \begin{english}
    2. \begin{minted}[linenos]{langage}
    3. Code numéroté
    4. \end{minted}
    5. \end{english}

    Télécharger

  • Pour un code présent entre <code> :
    1. \begin{english}
    2. \begin{minted}{langage}
    3. Code non numéroté
    4. \end{minted}
    5. \end{english}

    Télécharger

En outre, deux cas particulier :
-  Si on cite du code PHP, il faut ajouter : #FILTRE{latex_recuperer_php} dans le squelette.
-  Si on cite du code SPIP, il faut installer le module de coloration syntaxique de SPIP pour pygments.

Notes

[2Je cherche encore un package permettant de le faire.

Dernière modification de cette page le 4 juin 2015

Retour en haut de la page

Vos commentaires

  • Le 3 juin 2015 à 11:56, par Dorch En réponse à : Référence de LaTeXWheel

    Traitement des équations LaTeX écrites dans SPIP.

    SPIP permet d’écrire des équations au format LaTeX avec les balises math et le symbole $. Et en utilisant le filtre propre_latex, j’ai vu que les équations étaient converties en images par echappe_html et que ce qui se trouve entre $ n’était pas préservé ce qui aurait permis d’afficher correctement les équations en LaTeX.

    J’ai fait un bout de script qui détecte et protège les équations avant l’appelle à echappe_html et qui remet les équations non modifiées à la fin du traitement.

    J’ai donc ça avant les appels contenus dans propre_latex :

    1. '#(<math>.*?</math>)#is',
    2. function ($matches) {
    3. $t = str_replace(array('<math>','</math>'),'',$matches[0]);
    4. '#(\$\$.*?\$\$)#is',
    5. function ($matches) {
    6. return '£'.base64_encode($matches[0]).'£';
    7. },
    8. $t
    9. );
    10. '#(\$.*?\$)#is',
    11. function ($matches) {
    12. return '£'.base64_encode($matches[0]).'£';
    13. },
    14. $t
    15. );
    16. return $t;
    17. },
    18. $t
    19. );

    Télécharger

    Et ça après :

    1. // On remet les équations à l'endroit
    2. '#(\£.*?\£)#',
    3. function ($matches) {
    4. return base64_decode(substr($matches[0],1,-1));
    5. },
    6. $t
    7. );

    Télécharger

    Dans mon traitement, j’ai aussi relégué l’appel à echappe_html après l’appel à appliquer_regles_wheel($t,array(’latex/latex.yaml’)) ; mais je ne me sais plus si c’est lié aux équations ou à autre chose.

    Voilà, je ne sais pas si mon patch contourne une mauvaise utilisation de ma part ou si les équations ne sont effectivement pas prises en compte dans LaTeXWheel et qu’il serait intéressant de l’intégrer dans le plugin.

    Merci d’avance pour vos réactions.

    • Le 3 juin 2015 à 12:04, par Maïeul En réponse à : Référence de LaTeXWheel

      le comportement standard de spip veut que pour marque qu’il faille lire le code LaTeX, il faut être entre <math> et </math>. Ceci permet d’utiliser des $ dans le corps du texte sans risque de se retrouver avec du code LaTeX interprété sans qu’on le souhaite...

    • Le 3 juin 2015 à 12:07, par Maïeul En réponse à : Référence de LaTeXWheel

      arg, je suis fatigué, c’est dans « latexwheel » que tu parle, pas dans « textwheel »... alors oui,

      effectivement les équations n’étaient pas prise en compte dans LaTeXwheel.

      bah si du coup ton patch marche, tu peux l’intégrer au code de latexwheel sur la zone ?

    • Le 3 juin 2015 à 16:10, par Dorch En réponse à : Référence de LaTeXWheel

      Je l’ai testé dans des cas compliqué avec des équations au milieu de texte comme ici : http://sic.g-eau.net/l-equation-de-transport-diffusion
      Et je n’ai pas noté d’effet de bord sur les autres fonctionnalités de LatexWheel.

      Je vais faire un commit avec cette modif et incrémenter la version du plugin.

      @+
      Dorch

    Répondre à ce message

  • Le 10 avril 2014 à 20:47, par Pierre Andre En réponse à : Référence de LaTeXWheel

    Bonsoir,

    je viens d’avoir le même problème pour une liste, où il faut faire le même patch pour latex-listes.php (lignes 75 et 79). J’ai testé et ça fonctionne.

    Tant qu’a faire il y as aussi 3 occurrences dans latex-code.php et 1 dans latex.php mais là je n’ai pas testé.

    Répondre à ce message

  • Le 21 décembre 2013 à 17:24, par Pierre Andre En réponse à : Référence de LaTeXWheel

    Je viens d’avoir un problème avec un tableau lors de la génération des fichiers tex. La balise fermante du tableau \end{longtable} avais sont \e de remplacé par un caractère étrange.

    Pour retrouver le fonctionnement normal, j’ai échappé le \.

    Voila la fin de mon fichier latex-tableau.php

           return "\n\n\begin/debutlongtable/fin$alignement\n"
                   . $debut_table
                   . $html
                   . "\\end/debutlongtable/fin\n\n";

    C’est sûrement pas le meilleur endroit pour corriger ce problème, mais ça permet de générer sans erreur un pdf.

    Répondre à ce message

Répondre à cet article

Qui êtes-vous ?

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 Les choses à faire avant de poser une question (Prolégomènes aux rapports de bugs. )
Ajouter un document

Retour en haut de la page

Ça discute par ici

  • Metas +

    3 décembre – commentaires

    Améliorez l’indexation de vos articles dans les moteurs et leur affichage sur les réseaux sociaux grâce aux métadonnées Dublin Core, Open Graph et Twitter Card. Installation Activer le plugin dans le menu dédié. Dans le panel de configuration, (...)

  • Critère {mots}

    6 août 2009 – 316 commentaires

    Permettre de sélectionner facilement des objets SPIP ayant un ou des mots clefs en communs.

  • LinkCheck : vérificateur de liens

    13 février 2015 – 64 commentaires

    Ce plugin permet de chercher et tester l’ensemble des liens présents dans les objets. Vous pourrez donc en quelques clics connaître les liens brisés ou défectueux qui se sont immiscés dans le contenu de votre site SPIP. La vérification s’effectue en (...)

  • Import ICS 2 (agenda distant)

    2 août – 39 commentaires

    La version 2 du plugin « import ICS » en reprend la principale fonctionnalité, à savoir l’ajout automatique d’évènements distants dans la liste des évènements d’un site. À la différence de la première version, elle ne dépend pas du plugin « Séminaire » et est (...)

  • GIS 4

    11 août 2012 – 1286 commentaires

    Présentation et nouveautés La version 4 de GIS abandonne la libraire Mapstraction au profit de Leaflet. Cette librairie permet de s’affranchir des librairies propriétaires tout en gardant les mêmes fonctionnalités, elle propose même de nouvelles (...)

Ça spipe par là