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
\begin{enumerate}
\item élément numéroté
\item élément numéroté
\end{enumerate}
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 :
\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 :
<BOUCLE_articles(ARTICLES)>
\chapter{[(#TITRE*|propre_latex)]}\label{art#ID_ARTICLE}
</BOUCLE_articles>
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 packagehyperref
, 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 typep
- 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 :
- https://fr.wikibooks.org/wiki/LaTeX/%C3%89l%C3%A9ments_flottants_et_figures
- https://fr.wikibooks.org/wiki/LaTeX/Images#Extension_graphicx
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
<BOUCLE_document(DOCUMENTS){id_document}>
…
</BOUCLE_document>
En revanche, je ne peux pas dans le modèle correspondant latex_document.html
faire cela. Il faut que je fasse :
<BOUCLE_document(DOCUMENTS){id_document=#ENV{id}}>
…
</BOUCLE_document>
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 :
\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 :
\setotherlanguage{english}
On obtiendra les résultats suivants :
- Pour un code présent présent entre
<cadre>
:\begin{english} \begin{minted}[linenos]{langage} Code numéroté \end{minted} \end{english}
- Pour un code présent entre
<code>
:\begin{english} \begin{minted}{langage} Code non numéroté \end{minted} \end{english}
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.
Discussions par date d’activité
3 discussions
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 :
Et ça après :
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 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...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 ?
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
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é.
merci, corrigé par http://zone.spip.org/trac/spip-zone/changeset/81817
Répondre à ce message
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
C’est sûrement pas le meilleur endroit pour corriger ce problème, mais ça permet de générer sans erreur un pdf.
quel est le caractère étrange ? tu pourrais m’envoyer le fichier exporté ? (ou l’extrait problematique).
Si le problème est avéré, je peux reporter cela sur le code du plugin.
En tous cas ravis que cela serve. C’est dans quel cadre ?
ok, c’est lié a PHP 5.4 ... voir http://fr.php.net/manual/fr/language.types.string.php.
Je vais essayer de trouver une solution qui fonctionne pour les deux ;-)
http://zone.spip.org/trac/spip-zone/changeset/79792
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 :
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 : |