SPIP-Contrib

SPIP-Contrib

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

286 Plugins, 197 contribs sur SPIP-Zone, 263 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

  • Une horloge (suisse ?) pour le Couteau

    30 avril 2010 – 25 commentaires

    L’outil décrit ici est une fonctionnalité du plugin Le Couteau Suisse. « Horloge » vous offre la possibilité d’insérer l’heure et/ou la date du jour dans vos contenus éditoriaux ou dans vos squelettes.

  • Facteur

    21 janvier 2010 – 383 commentaires

    Un plugin pour regrouper toutes les fonctions avancées autour de l’envoi de courriels. Introduction SPIP propose une fonction générique envoyer_mail() pour envoyer un courriel. Elle est assez simple d’utilisation mais peut paraître limitée (...)

  • Albums 3

    8 août 2014 – 224 commentaires

    Le plugin « Albums » évolue dans une version 3 pour SPIP 3. Avant d’effectuer une mise à jour depuis la version 1 ou 2, consultez les notes sur la rétro-compatibilité. Les modèles, notamment, on reçut quelques changements pour la bonne cause. En (...)

  • ciag : plugin « Groupes d’auteurs »

    30 novembre 2011 – 22 commentaires

    Ce plugin facilite l’affectation des auteurs aux rubriques, via des groupes d’auteurs. Il offre également des vues globales des affectations de rubriques aux auteurs. Les objectifs de ce plugin Le premier objectif est de faciliter (...)

  • Tickets, suivi de bugs

    28 novembre 2008 – 45 commentaires

    Tickets est un outil de suivi de bugs directement intégré à l’espace privé de SPIP. Il est conçu pour faciliter la phase de développement du site (notamment les squelettes du site public). Tickets est un système simple de suivi de bugs directement (...)