SPIP-Contrib

SPIP-Contrib

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

273 Plugins, 191 contribs sur SPIP-Zone, 35 visiteurs en ce moment

Accueil du site > Rédaction > Latex et SPIP > Générer un fichier pdf à partir d’un document LaTeX

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

3 août 2005 – par Christian.Mercat – <blink style='color:red;'>public|spip|ecrire:commentaires</blink>

5 votes

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.

Retour en haut de la page

Vos commentaires

  • Le 14 avril 2007 à 16:44, par rambc En réponse à : Générer un fichier pdf à partir d’un document LaTeX

    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

  • Le 14 août 2005 à 09:53, par Déesse A. En réponse à : > Générer un fichier pdf à partir d’un document LaTeX

    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 ?

    • Le 18 octobre 2006 à 09:40, par Christian.Mercat En réponse à : Insérer le html

      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.

    • Le 17 mars 2007 à 05:36, par Ernest En réponse à : Insérer le html

      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

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

  • Typographie avancée

    3 mars 2010 – <blink style='color:red;'>public|spip|ecrire:commentaires</blink>

    « Typographie avancée » active automatiquement un grand nombre d’automatismes destinés à affiner la typographie des textes produits par SPIP. Nécessite PHP 5 au minimum. « Typographie avancée » est l’adaptation, pour SPIP, de la classe « PHP Typography », (...)

  • Plugin Convertisseur

    24 février 2008 – 15 <blink style='color:red;'>public|spip|ecrire:commentaires</blink>

    Convertit différents formats d’articles (wiki, docx, pdf, etc..). en format SPIP (texte avec les raccourcis typographiques SPIP)

  • Thèmes pour l’interface privée

    22 février 2010 – <blink style='color:red;'>public|spip|ecrire:commentaires</blink>

    Un sélecteur d’interfaces graphiques pour l’espace privé de SPIP 2.1. Une petite collection d’interfaces est livrée avec le plugin. Ce plugin permet à chaque participant à l’espace privé de sélectionner sa propre interface graphique en fonction de ses (...)

  • Albums

    8 novembre 2011 – 29 <blink style='color:red;'>public|spip|ecrire:commentaires</blink>

    Ce plugin permet d’afficher une ou plusieurs galeries d’images au fil du texte, dans les articles et ailleurs. Qui rédige un récit de voyage, par exemple, aimerait pouvoir illustrer son article de plusieurs petites séries de photos, une par jour. Or (...)

  • Navigation AJAX

    31 janvier – 17 <blink style='color:red;'>public|spip|ecrire:commentaires</blink>

    Ce plugin permet de modifier automatiquement une parties des liens internes de manière à ce qu’ils ne déclenchent pas un chargement complet de la page cible, mais un chargement en AJAX de certains éléments spécifiés à l’avance. Il permet aussi de (...)