SPIP - Contrib

[ar] [en] [es] [fr] [it]



Accueil du site > Rédaction > Latex et SPIP

Générer un fichier pdf à partir d’un document LaTeX

mercredi 3 août 2005, par Christian.Mercat. Dernier ajout samedi 27 janvier 2007


crée et attache automatiquement le pdf et le html associés à un fichier LaTeX attaché.


A propos de Latex

LaTeX est un logiciel de traitement de texte à orientation scientifique. Dans mon milieu (une fac de math), on l’utilise à la place d’OpenOffice ou d’autres suites bureautiques pour à peu près tout écrire. Mes rédacteurs sont des collègues qui écrivent des textes avec des math dedans, ils maîtrisent LaTeX et n’ont pas envie de se former à spip ou de modifier un document qu’ils ont déjà sous la forme LaTeX, simplement pour le mettre en ligne.

Ces documents sont : des feuilles de Travaux Dirigés, des notes de cours, des descriptions de contenu du cours, des notes techniques, des partitions de musique...

Je propose donc à mes rédacteurs d’attacher un fichier LaTeX et que ça compile pour eux directement des fichiers lisibles par les autres (du pdf et du html).

L’intérêt est double : 1. pas de manipulations pour eux et 2. celà tient lieu d’archivage du source (qu’ils peuvent cacher si c’est la fonctionnalité principale de la chose). Ainsi 1. les étudiants ont un document imprimable et 2. l’année suivante on sait où est le code, pas sur le disque dur de quelqu’un de qui il faut obtenir le fichier, mais mis en commun, attaché dans l’arborescence, là où on en a besoin.

Cette contribution

Cette contribution s’adresse donc à des administrateurs qui ont un accès shell (pas de site sur free par exemple), qui ont confiance dans leurs rédacteurs (LaTeX est capable de tout, c’est un vrai langage de programmation si on sait l’utiliser), lesquels désirent mettre en ligne simplement le résultat de la compilation d’un fichier LaTeX.

Ce filtre prend en entrée un id_document associé à un fichier .tex, une archive .tex.zip, ou même un .dvi ou un .ps, et fabrique le pdf associé, ainsi que le html au cas où. Le html est rarement utilisable avec latex2html, tex4ht est mieux mais plus rare.

Il suffit d’appeler le filtre dans la boucle des documents attachés, par exemple :

Une autre utilisation (avec plutôt tex4ht que latex2html) est, quand un article a un corps vide, de carrément le remplacer par la version html du fichier LaTeX attaché :

La première fois qu’un document .tex.zip, .tex, .dvi ou .ps est rencontré, ça crée le pdf (et le html), et ça les attache au même élément (article, rubrique ou brève). Pour un zip, il faut que le nom de l’archive soit le même que le nom du fichier à compiler, ex : monFichier.tex.zip contient monFichier.tex (et d’autres fichiers, possiblement des répertoires etc...)

On crée l’archive avec la commande (sous linux)

zip monFichier.tex.zip monDossier/*

Je n’utilise pas pdflatex mais dvipdfm qui doit être installé sur votre système.

Pour que ça fonctionne, il faut installer le filtre suivant dans mes_fonctions.php3 :

C’est un peu brut de décoffrage, mais ça fonctionne, les commentaires sont les bienvenus.

Le filtre translate_url sert à faire pointer les liens relatifs à l’intérieur du dossier de départ. Il y a sûrement mieux.

On peut bien-sûr utiliser cette idée pour post-traiter automatiquement d’autres types de documents attachés et leur faire subir les pires outrages.

Une contrib autour du même sujet, qui permet de faire une sortie pdf à partir d’un article ou d’une rubrique en utilisant LaTeX. Je l’utilise également pour fabriquer un fichier LaTeX que je peux ensuite éditer de manière à fabriquer rapidement un document très propre qui reprend les informations du site.


Répondre à cet article

  • Je cherche une classe ou une fonction PhP qui permettrait la création de fichier PDF à partir d’un fichier LaTeX indépendemment de SPIP (en utilisant EasyPhP en local par exemple). Etant "débutant" mais motivé pour apprendre, je souhaitrais savoir si le code ci-dessus contient ce qu’il faut pour arriver à mon but.

    Par avance merci.

    Répondre à ce message

    Retour au début des forums

  • Bravo, ca répond à un vrai besoin. As-tu essayé de carrément remplacer le champ TEXTE par le HTML généré plutot que de placer celui-ci en pièce jointe ?

    Répondre à ce message

    • Insérer le html 18 octobre 2006 09:40, par Christian.Mercat

      Oui, c’est ce que ça fait : ça attache le html puis ça insère le html à la place du texte, c’est ce que cette boucle fait :

      <BOUCLE_documents_html(DOCUMENTS){id_article}{extension=html}{doublons}{"<br />"}>
      [(#URL_DOCUMENT|spip_file_get_contents|translate_url{#URL_DOCUMENT})]
      </BOUCLE_documents_html>

      Le petit problème c’est qu’il faut recalculer 2 fois...

      À propos des images aussi, j’étais passé à côté de la commande LaTeX

      \usepackage{graphicx,color}
      \graphicspath{{$spip_dir/IMG/eps/}{$spip_dir/IMG/pdf/}{$spip_dir/IMG/png/}%
      {$spip_dir/IMG/ps/}{$spip_dir/IMG/jpg/}{$spip_dir/IMG/}{./}}
      % pratique: inclure ici une liste de répertoires {{rep1/}{rep2/}...{repn/}}
      \DeclareGraphicsExtensions{eps, pdf, png,  ps, jpg}

      plutôt que le (couteux)

      for f in `ls $spip_dir/IMG/eps/*.eps`;  
      do test -f \${f##*/} || ln -s \$f .;
      done;  
      ln -s '$fichier' .;

      On m’a demandé aussi si c’était possible sur un serveur windows. En installant cygwin et en faisant un .bat qui va bien (ne me posez pas de question là-dessus), peut-être...

      En espérant que ça serve.

      Répondre à ce message

      • Insérer le html 17 mars 2007 05:36, par Ernest

        Bonjour Monsieur,

        Je cherche un example tres simple d’incorporation de formules mathematiques dans un site Web. J’apprecierais enormement le plus banal des exemples, pourvu qu’il presente tous les etapes elementaires. Merci Ernest

        Répondre à ce message

    Retour au début des forums



Suivre la vie du site RSS 2.0 | Plan du site | Espace privé | Charte et fonctionnement SPIP-Contrib | SPIP | L'autre.net