Version PDF avec SPIP2LaTeX

SPIP2LaTeX converti le langage de marquage de SPIP en LaTeX. Utilisé avec une installation de LaTeX, il permet de produire des versions PDF des articles d’un site.

Le style par défaut des PDF produits est peu excitant, l’usager final voudra sans aucun doute procéder à une personnalisation.

Voir un exemple de beau PDF.

Configuration du serveur web

Le serveur web doit avoir la commande pdflatex dans son PATH. SPIP doit aussi être capable de charger les URL  ?page=latex (voir ci-dessous) depuis localhost. Ceci requiert allow_url_fopen=true dans php.ini et un accès anonyme autorisé depuis 127.0.0.1

URL introduites par le plugin

Version LaTeX d’un article ou d’une rubrique :

  http://www.example.net/?page=latex&id_article=4
  http://www.example.net/?page=latex&id_rubrique=7

Version PDF d’un article ou d’une rubrique :

  http://www.example.net/?page=pdf&id_article=4
  http://www.example.net/?page=pdf&id_rubrique=7

On peut aussi ajouter la ligne suivante tout au début du squelette
article.html pour obtenir la version PDF en ajoutant  ?formatpdf=1 a
la fin de l’URL d’un article.

[[(#INCLUDE{fond=latex/document.tex,env}|
	spip2latex_pdf{[(#ENV**|unserialize)]})](#ENV{formatpdf})]

Modèles introduits par le plugin

Faire un lien vers la version PDF d’un article ou d’une rubrique avec un modèle :

  <pdf0|id_article=4>
  <pdf0|id_rubrique=7>

On peut aussi faire le lien dans un squelette, avec la balise #MODELE :

  [(#MODELE{pdf}{id_article=#ID_ARTICLE})]

Pour personnaliser l’affichage, il faut appliquer des styles CSS à la classe .spip2latex_pdf

Personnalisation des PDF produits

Le squelette latex.html utilise #INCLURE sur latex/document.tex.html, qui utilise à son tour #INCLURE sur les noisettes suivantes :

  • latex/preambule.tex.html avant \begin{document}
  • latex/entete.tex.html après \begin{document} mais avant le contenu
  • latex/pied.tex.html après le contenu mais avant \end{document}

Il faut surcharger ces noisettes pour personnaliser l’affichage des PDF produits. latex/preambule.tex.html est particulièrement intéressant à ce titre, car c’est là que sont définis les styles des éléments traduits depuis SPIP. Voici les commandes et environnements LaTeX candidats à la surcharge :

Environnements LaTeX utilisés par SPIP2LaTeX
environnements LaTeXUsage
spiptolatexthead Titre de colonne de table
spiptolatextsummary Description de table
spiptolatexexergue Pour [* Texte mis en evidence *]
spiptolatexaltexergue Pour [** Texte mis en evidence (alternatif) *]
spiptolatexquote Pour <quote>Citation</quote>
spiptolatexcadre Pour <cadre>Texte encadré</cadre>
spiptolatexpoesie Pour <poesie>Poésie</poesie>
spiptolatexcode Pour <code>Code source</code>
spiptolatexright Pour [/ Alignement à droite /]
spiptolatexcenter Pour [| Centrage |]

Langue et jeu de caractère

Les squelettes de base de SPIP2LaTeX tentent de configurer la langue et le jeu de caractère. Seules ont été testées pour l’instant les associations de français et anglais d’une part, et ISO-8859-1 et UTF-8 d’autre part.

Pour ce qui est de la langue, le filtre spip2latex_lang tente de convertir le code langue ISO de l’article en option de langue pour le paquetage babel. Si une langue ne passe pas, il est toujours possible de surcharger latex/preambule.html, mais il serait encore mieux de modifier le filtre spip2latex_lang dans le fichier spip2latex.php et de contribuer la modification, pour que les autres en profitent.

Le jeu de caractère de sortie est par défaut ISO-8859-1. Un formulaire CFG permet de configurer globalement un autre jeu de caractère. Il est aussi possible de remplacer dans un squelette le jeu de caractère par défaut, en utilisant la balise #SPIP2LATEX_CHARSET.

Invoquée avec un argument, elle permet de fixer le jeu de caractère de sortie de SPIP2LaTeX, c’est ce qui est fait dans le squelette latex/document.tex.html, mais on la ré-invoquer dans une noisette si on le souhaite, pour choisir un autre jeu de caractères. Utilisée sans argument, elle renvoie le jeu de caractère courant. Le squelette latex/preambule.html l’utilise sans argument, pour configurer le paquetage inputenc avec le jeu de caractère courant.

Le jeu de caractère de sortie de SPIP2LaTeX n’est pas contraint par le jeu de caractère utilisé par SPIP. Une conversion aura lieu si nécessaire.

Il arrive de temps en temps qu’un caractère un peu exotique empêche LaTeX de compiler le PDF. La balise #SPIP2LATEX_UNICODE_FILTER permet d’indiquer quels points de code UCS doivent être filtrés. Le formulaire de configuration de SPIP2LaTeX permet d’indiquer sa valeur par défaut.

Un exemple pour éliminer tout ce qui pose problème quand on travaille sur une langue latine :
0x0000-0x001f,0x007f0x009f,!0x000d,!0x000a,0x0126,0x0127,0x0138,0x013f,0x0140,0x0149,0x0166,0x0167,0x017f-0xffff

Production de code LaTeX par les modèles

Lorsqu’un modèle <trucXX> est rencontré, SPIP2LaTeX utilise modeles/latex_truc.html pour obtenir du code LaTeX. Le plugin fournit des modèles pour <docXX> et <imgXX>, qui peuvent être
surchargés en redéfinisant les fichiers modeles/latex_doc.html et modeles/latex_img.html

Vous devez produire des versions LaTeX pour vos modèles personnalisés.

Raffraîchir le cache

Les pages  ?page=latex&id_article=xxx ne sont pas cachées. Les squelettes qui les construisent voient en revanche leur forme compilée tomber dans le cache. Il est donc nécessaire de recharger  ?page=latex&id_article=xxx&var_mode=recalcul après avoir modifé latex/(preambule|entete|pied).tex.html

Les PDF générés sont cachés jusqu’à ce que l’article ou la rubrique correspondant soit calculé, ce qui se produit normalement après qu’un utilisateur l’ait modifié. Il est aussi possible de purger le cache d’un PDF en ajoutant  ?var_mode=calcul à l’URL qui permet de le télécharger.

Discussion

Aucune discussion

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