texlive dans SPIP ?

Bonjour ou bonsoir à tous,

Meilleurs voeux à toute la liste.

Je cherche un moyen d’intégrer de manière la plus complète possible
TexLive pour la rédaction d’articles SPIP. Je m’explique. Voici par
exemple dans ce courriel l’image d’une preuve formelle produite via le
package proof.sty:

latexAe2ooU_d4a3908742cf54ec57ed460cdb402cdea4945c30.png

L’image png apparait ensuite dans un courriel au format
html. J’aimerais pouvoir obtenir cette facilité dans mon site sous
SPIP, je précise que j’ai accès à un serveur dédié que j’administre
sous Debian Stretch et que j’ai installé la distribution texlive.

Puisque j’arrive à utiliser texlive dans Gnus (emacs) pour le
courriel, je pense qu’il doit être techniquement possible d’obtenir
cette commodité avec SPIP, mais comme mes premières tentatives (en
suivant la doc sur https://contrib.spip.net/LaTeX) ont échoué,
j’envoie cette requête sur la liste, avec mes voeux à tous que je
renouvelle.

Bonne année 2019 !


Joseph

Le 04/01/2019 à 16:34, Joseph Vidal-Rosset a écrit :

Bonjour ou bonsoir à tous,

Meilleurs voeux à toute la liste.

Je cherche un moyen d’intégrer de manière la plus complète possible
TexLive pour la rédaction d’articles SPIP. Je m’explique. Voici par
exemple dans ce courriel l’image d’une preuve formelle produite via le
package proof.sty:

latexAe2ooU_d4a3908742cf54ec57ed460cdb402cdea4945c30.png

L’image png apparait ensuite dans un courriel au format
html. J’aimerais pouvoir obtenir cette facilité dans mon site sous
SPIP, je précise que j’ai accès à un serveur dédié que j’administre
sous Debian Stretch et que j’ai installé la distribution texlive.

Puisque j’arrive à utiliser texlive dans Gnus (emacs) pour le
courriel, je pense qu’il doit être techniquement possible d’obtenir
cette commodité avec SPIP, mais comme mes premières tentatives (en
suivant la doc sur <span style="font-family:serif;margin-right:-.7em">L<span style="font-size:0.9em;position:relative;top:-.1em;left:-.4em;">A</span><span style="position:relative;left:-.5em;">T</span><span style="position:relative;top:.2em;left:-.6em;">E</span><span style="position:relative;left:-.7em;">X</span></span>) ont échoué,
j’envoie cette requête sur la liste, avec mes voeux à tous que je
renouvelle.

On peut saisir ce genre de formules de math sous LibreOffice sans
problème et du coup utiliser le plugin odt2spip.

Ce serait un contournement possible.

--

Ysabeau
Services, s. m. pl. Mot usité dans cette formule à peu près invariable
du typo en quête de travail: Monsieur, je viens vous offrir mes services
pour la casse.
Dictionnaire de l'argot des typographes - Eugène Boutmy, correcteur
d'imprimerie, 1883.

Le 04/01/2019 à 16:34, Joseph Vidal-Rosset a écrit :

Puisque j’arrive à utiliser texlive dans Gnus (emacs) pour le
courriel, je pense qu’il doit être techniquement possible d’obtenir
cette commodité avec SPIP, mais comme mes premières tentatives (en
suivant la doc sur <span style="font-family:serif;margin-right:-.7em">L<span style="font-size:0.9em;position:relative;top:-.1em;left:-.4em;">A</span><span style="position:relative;left:-.5em;">T</span><span style="position:relative;top:.2em;left:-.6em;">E</span><span style="position:relative;left:-.7em;">X</span></span>) ont échoué,
j’envoie cette requête sur la liste, avec mes voeux à tous que je
renouvelle.

Normalement il n'est pas obligé de créer ton propre serveur puisqu'il y a un serveur spip communautaire.
La doc officielle est là : Insérer des formules mathématiques en LaTEX - SPIP

JLuc

Merci à tous pour vos réponses. Je vais relire la doc et tenter un second essai. Je vous tiendrai au courant.

Bon week-end à tous !

Joseph

Le sam. 5 janv. 2019 à 00:17, JLuc <jluc@no-log.org> a écrit :

Le 04/01/2019 à 16:34, Joseph Vidal-Rosset a écrit :

Puisque j’arrive à utiliser texlive dans Gnus (emacs) pour le
courriel, je pense qu’il doit être techniquement possible d’obtenir
cette commodité avec SPIP, mais comme mes premières tentatives (en
suivant la doc sur https://contrib.spip.net/LaTeX) ont échoué,
j’envoie cette requête sur la liste, avec mes voeux à tous que je
renouvelle.

Normalement il n’est pas obligé de créer ton propre serveur puisqu’il y a un serveur spip communautaire.
La doc officielle est là : https://www.spip.net/fr_article3016.html

JLuc


liste spip
spip@rezo.net - désabonnement : envoyer un mail à spip-off@rezo.net

Archives : https://www.mail-archive.com/spip@rezo.net/maillist.html

Infos : https://listes.rezo.net/mailman/listinfo/spip

Documentation de SPIP : http://www.spip.net/

Irc : de l’aide à toute heure : http://spip.net/irc

Bonsoir,

Je suis parvenu à une solution que je considère être un bricolage qui n’a rien à voir avec ce qui serait à mon avis un système idéal, de mon point de vue évidemment. Je vais expliquer la solution en question qui passe par l’usage de l’export html avec emacs en org-mode puis la récupération des images dans le texte de l’article sous SPIP.

Si cela peut intéresser un certain nombre d’usagers de cette liste, il est actuellement possible d’utiliser l’éditeur emacs avec un système qui s’appelle « org-mode » pour exporter tout texte.org en texte.tex (ou directement en texte.pdf) mais aussi en tex.html, texte.odt, etc. :

https://orgmode.org/ https://orgmode.org/worg/

Donc, en écrivant mon-texte.org dans un dossier, avec cette ligne dans l’en-tête de mon texte: #+OPTIONS: tex:imagemagick l’export org-mode dépose les images png qui sont crées dans un dossier parent intitulé « ltximg ». En téléversant via SPIP les images png créées par l’export, je peux les intégrer ensuite sans difficulté dans l’article SPIP.

L’idéal pour l’utilisateur serait bien sûr d’avoir directement ce système de l’export html d’org-mode dans SPIP qui profiterait de tout le système texlive. Or le système actuel limite beaucoup l’usage de LaTeX car on lit dans la doc:

Le système est limité à l’affichage de formules mathématiques. De ce fait, toutes les autres fonctions de TEX sont désactivées. Parmi la plus importante interdiction : il n’est pas possible de définir ses propres macros

Cela signifie que tous les packages que l’on peut utiliser avec LaTeX pour écrire des formules que MathJax échouent à traduire (d’où l’usage d’imagemagick) ne peuvent pas non plus être utilisés par SPIP, si j’ai bien compris.

Mes compétences en codage sont beaucoup trop limitées pour que je puisse même imaginer comment il serait possible d’intégrer un tel système dans SPIP, mais si c’est réalisable, je crois que cela serait très intéressant. Mais, pour reprendre un dicton italien facilement compréhensible: « dal dire al fare c’è di mezzo il mare »…

Bonne soirée,

Joseph

Le sam. 5 janv. 2019 à 00:17, JLuc <jluc@no-log.org> a écrit :

Le 04/01/2019 à 16:34, Joseph Vidal-Rosset a écrit :

Puisque j’arrive à utiliser texlive dans Gnus (emacs) pour le
courriel, je pense qu’il doit être techniquement possible d’obtenir
cette commodité avec SPIP, mais comme mes premières tentatives (en
suivant la doc sur https://contrib.spip.net/LaTeX) ont échoué,
j’envoie cette requête sur la liste, avec mes voeux à tous que je
renouvelle.

Normalement il n’est pas obligé de créer ton propre serveur puisqu’il y a un serveur spip communautaire.
La doc officielle est là : https://www.spip.net/fr_article3016.html

JLuc


liste spip
spip@rezo.net - désabonnement : envoyer un mail à spip-off@rezo.net

Archives : https://www.mail-archive.com/spip@rezo.net/maillist.html

Infos : https://listes.rezo.net/mailman/listinfo/spip

Documentation de SPIP : http://www.spip.net/

Irc : de l’aide à toute heure : http://spip.net/irc

Le dim. 06 janv. 2019 à 12:47:26 , Beurt

Bonjour,

La solution avec

ne te

convenait pas ?

Bonjour,

Toutes les formules mathématiques produites avec MathJax ont un bien
meilleur rendu, donc je préférerais de très loin utiliser
systématiquement MathJax. Mais les preuves formelles produites par
proof.sty, comme celle-ci par exemple:

latexZHn7oa_6385dabfb6288a284509239f8fa89aed17312b0b.png

donc le code est:

\infer[^{L\lnot {\rm \mathit{def}}}]{\lnot \lnot P \Rightarrow P}{
  \infer[^{L\lnot {\rm \mathit{def}}}]{\lnot P \supset \bot \Rightarrow P}{
    \infer[^{L\supset\supset}]{(P \supset \bot) \supset \bot \Rightarrow P}{
      \infer[^{{\rm \mathit{Ax_{c}}}}]{\bot \supset \bot, P \Rightarrow \bot, P}{}
      &
      \infer[^{L\bot}]{\bot \Rightarrow P}{}
    }
  }
}

n’est pas traduite correctement par MathJax, ainsi que bien d’autres
produites par d’autres packages disponibles dans texlive. Si je fais
erreur et s’il y a un moyen de contourner cette limitation de MathJax,
je suis évidemment preneur.

Bien cordialement,


Joseph

Hello

Voici un site specialise en Mathjax qui permet de creer des equations. Si tes preuves formelles sont faisables sur ce site c’est que Mathjax les fait:

George

latexZHn7oa_6385dabfb6288a284509239f8fa89aed17312b0b.png

Merci pour la référence de ce site. En logique, rien n’est publié sur ce site. :frowning:

D’autre part les exemples que j’ai donnés ne sont pas des équations, mais des preuves formelles, il s’agit de dérivations en calcul des séquents ou en déduction naturelle. MathJax à ma connaissance ne traduit hélas pas ces macros, et c’est vraiment dommage. En l’état actuel des choses, il n’y a donc pas d’autres solutions que de passer par la fabrication d’images .png, du moins je crois.

Bonne soirée à tous,

Joseph

Le dim. 6 janv. 2019 à 20:48, George <george@middleeastwatch.net> a écrit :

Hello

Voici un site specialise en Mathjax qui permet de creer des equations. Si tes preuves formelles sont faisables sur ce site c’est que Mathjax les fait:

http://equatheque.net/

George

On 06/01/2019 14:01, Joseph Vidal-Rosset wrote:

Le dim. 06 janv. 2019 à 12:47:26 , Beurt a envoyé ce message:

Bonjour,

La solution avec

ne te

convenait pas ?

Bonjour,

Toutes les formules mathématiques produites avec MathJax ont un bien
meilleur rendu, donc je préférerais de très loin utiliser
systématiquement MathJax. Mais les preuves formelles produites par
proof.sty, comme celle-ci par exemple:

latexZHn7oa_6385dabfb6288a284509239f8fa89aed17312b0b.png

donc le code est:

\infer[^{L\lnot {\rm \mathit{def}}}]{\lnot \lnot P \Rightarrow P}{
  \infer[^{L\lnot {\rm \mathit{def}}}]{\lnot P \supset \bot \Rightarrow P}{
    \infer[^{L\supset\supset}]{(P \supset \bot) \supset \bot \Rightarrow P}{
      \infer[^{{\rm \mathit{Ax_{c}}}}]{\bot \supset \bot, P \Rightarrow \bot, P}{}
      &
      \infer[^{L\bot}]{\bot \Rightarrow P}{}
    }
  }
}

n’est pas traduite correctement par MathJax, ainsi que bien d’autres
produites par d’autres packages disponibles dans texlive. Si je fais
erreur et s’il y a un moyen de contourner cette limitation de MathJax,
je suis évidemment preneur.

Bien cordialement,


Joseph

_______________________________________________
liste spip
[spip@rezo.net](mailto:spip@rezo.net) - désabonnement : envoyer un mail à  [spip-off@rezo.net](mailto:spip-off@rezo.net)

Archives : [https://www.mail-archive.com/spip@rezo.net/maillist.html](https://www.mail-archive.com/spip@rezo.net/maillist.html)

Infos : [https://listes.rezo.net/mailman/listinfo/spip](https://listes.rezo.net/mailman/listinfo/spip)

Documentation de SPIP : [http://www.spip.net/](http://www.spip.net/)

Irc : de l'aide à toute heure : [http://spip.net/irc](http://spip.net/irc)

liste spip
spip@rezo.net - désabonnement : envoyer un mail à spip-off@rezo.net

Archives : https://www.mail-archive.com/spip@rezo.net/maillist.html

Infos : https://listes.rezo.net/mailman/listinfo/spip

Documentation de SPIP : http://www.spip.net/

Irc : de l’aide à toute heure : http://spip.net/irc

Bonjour

Pour information le serveur communautaire n’acceptera pas la formule indiquée.
Par sécurité les mots clef suivants sont interdis :

include|def|command|loop|repeat|open|toks|output|input|catcode|name|\^\^|every|errhelp|errorstopmode|scrollmode|nonstopmode|batchmode|read|write|csname|newhelp|uppercase|lowercase|relax|aftergroup|afterassignment|expandafter|noexpand|special

On s'appuie sur la liste d’exclusion définies dans le code du projet texrender :

[https://web.archive.org/web/20140828033438/http://www.mayer.dial.pipex.com/tex.htm](https://web.archive.org/web/20140828033438/http://www.mayer.dial.pipex.com/tex.htm)

PS on peut faire évoluer la liste d'exclusion si on peut préciser pourquoi cela ne pose pas de problème de sécurité ou autre.

Km

latexZHn7oa_6385dabfb6288a284509239f8fa89aed17312b0b.png

Le 07/01/2019 à 09:05, cam.lafit@azerttyu.net a écrit :

Bonjour

Pour information le serveur communautaire n'acceptera pas la formule indiquée.
Par sécurité les mots clef suivants sont interdis :

include|def|command|loop|repeat|open|toks|output|input|catcode|name|\^\^|every|errhelp|errorstopmode|scrollmode|nonstopmode|batchmode|read|write|csname|newhelp|uppercase|lowercase|relax|aftergroup|afterassignment|expandafter|noexpand|special

On s'appuie sur la liste d’exclusion définies dans le code du projet texrender :

LatexRender & TeX Converter

PS on peut faire évoluer la liste d'exclusion si on peut préciser pourquoi cela ne pose pas de problème de sécurité ou autre.

Km

alors pour répondre à ta question camille :
- *mode gère le mode de compilation, je refuserait
- special permet d'écrire du code arbitraire dans le pdf, je m'en mefierai
- read/write/open li des fichiers externes
- le restrte ce sont des structures de controle TeX

mais si j'ai bien compris c'est pas un vrai TeX que tu as sur le site, donc je suis pas sur que cela pourrait être interprété correctement.

Bonsoir à tous, ou bonjour,

Merci pour vos réponses sur ce fil. Il y a une question que je me pose
encore, parce que je ne suis pas certain d’avoir bien tout compris:
est-ce qu’il est possible ou non, si l’on a dispose d’un serveur dédié
sur lequel on a les droits d’administration, de passer outre les
limitations du serveur communautaires pour produire des pages web à
partir de texlive sans forcément se limiter à ce que peut traduire
MathJax pour l’instant? Est-ce que le script qui est sur la
documentation le permet ou pas?

Si je pose cette question, c’est parce que je trouve que la méthode
qui consiste à produire des images hors SPIP, puis à la téléverser
dans SPIP pour ensuite les intégrer dans le texte, est une méthode
laborieuse, surtout lorsqu’on a l’habitude d’exporter à partir d’un
texte en .org différents formats, dont le format html. Il serait
génial d’avoir quelque chose de comparable à emacs+org-mode dans
SPIP (c’est une suggestion pour les développeurs de SPIP, car org-mode
est ultra-puissant). Pour ceux que cela intéresse, voici une vidéo
instructive de John Kitchin, qui donne une idée de ce que je raconte:

https://www.youtube.com/watch?v=fgizHHd7nOo

il est question de l’export en html à la 16ème minute environ. Pour
aller plus loin et pour des résultats plus jolis, il y a cet outil
développé par Fabrice Niessen: https://github.com/fniessen/org-html-themes

Je donne copie de mon courriel à la liste à Bastien Guerry
https://bzg.fr/about/, à qui l’on doit worg
https://orgmode.org/worg/worg-about.html, et qui connaît SPIP pour
l’avoir utilisé.

Bien cordialement,


Joseph

je dirais que la réponse théorique est oui, la réponse pratique est
"faux creuser"

Le lundi 07 janvier 2019 à 19:37 +0100, Joseph Vidal-Rosset a écrit :

Bonsoir à tous, ou bonjour,
Merci pour vos réponses sur ce fil. Il y a une question que je me pose
encore, parce que je ne suis pas certain d’avoir bien tout compris:
est-ce qu’il est possible ou non, si l’on a dispose d’un serveur dédié
sur lequel on a les droits d’administration, de passer outre les
limitations du serveur communautaires pour produire des pages web à
partir de texlive sans forcément se limiter à ce que peut traduire
MathJax pour l’instant? Est-ce que le script qui est sur la
documentation le permet ou pas?
Si je pose cette question, c’est parce que je trouve que la méthode
qui consiste à produire des images hors SPIP, puis à la téléverser
dans SPIP pour ensuite les intégrer dans le texte, est une méthode
laborieuse, surtout lorsqu’on a l’habitude d’exporter à partir d’un
texte en .org différents formats, dont le format html. Il serait
génial d’avoir quelque chose de comparable à emacs+org-mode dans
SPIP (c’est une suggestion pour les développeurs de SPIP, car org-mode
est ultra-puissant). Pour ceux que cela intéresse, voici une vidéo
instructive de John Kitchin, qui donne une idée de ce que je raconte:
https://www.youtube.com/watch?v=fgizHHd7nOo
il est question de l’export en html à la 16ème minute environ. Pour
aller plus loin et pour des résultats plus jolis, il y a cet outil
développé par Fabrice Niessen:
GitHub - fniessen/org-html-themes: Transform your Org mode files into stunning HTML documents in minutes with our Org mode HTML theme. Elevate your productivity and impress your readers! #orgmode #html #theme #productivity #design
Je donne copie de mon courriel à la liste à Bastien Guerry
Programmeur, libriste - Bastien Guerry, à qui l’on doit worg
About Worg, et qui connaît SPIP pour
l’avoir utilisé.
Bien cordialement,

Joseph

Bonjour

est-ce qu’il est possible ou non, si l’on a dispose d’un serveur dédié
sur lequel on a les droits d’administration, de passer outre les
limitations du serveur communautaires pour produire des pages web à
partir de texlive sans forcément se limiter à ce que peut traduire
MathJax pour l’instant? Est-ce que le script qui est sur la
documentation le permet ou pas?

Oui la documentation fournie indique comment déployer les outils
nécessaires pour faire fonctionner latex. Il y aura probablement des
ajustements à faire la documentation étant un peu ancienne.
Dans ce cas les sécurités sont à la discrétion de l'administrateur système.

Coté communautaire, il y aura toujours des restrictions du fait même
qu'il est communautaire. On doit prendre en compte des contraintes
qu'on n'a pas forcément lorsqu'on maîtrise son propre ecosystème.

Km

Merci. J’ai donc probablement fait au moins une erreur quand j’ai tenté de faire fonctionner le script qui est sur la documentation. Je reviendrai sur ce sujet après d’autres tentatives. Encore merci pour vos réponses éclairantes.

J.

Le mar. 8 janv. 2019 à 10:35, cam.lafit@azerttyu.net <cam.lafit@azerttyu.net> a écrit :

Bonjour

est-ce qu’il est possible ou non, si l’on a dispose d’un serveur dédié
sur lequel on a les droits d’administration, de passer outre les
limitations du serveur communautaires pour produire des pages web à
partir de texlive sans forcément se limiter à ce que peut traduire
MathJax pour l’instant? Est-ce que le script qui est sur la
documentation le permet ou pas?

Oui la documentation fournie indique comment déployer les outils
nécessaires pour faire fonctionner latex. Il y aura probablement des
ajustements à faire la documentation étant un peu ancienne.
Dans ce cas les sécurités sont à la discrétion de l’administrateur système.

Coté communautaire, il y aura toujours des restrictions du fait même
qu’il est communautaire. On doit prendre en compte des contraintes
qu’on n’a pas forcément lorsqu’on maîtrise son propre ecosystème.

Km

Rebonjour à tous,

Je reviens donc sur le sujet puisque j’ai modifié le code du serveur
tex.php en désactivant la protection contre les code dangereux:

<?php

//
// Serveur d'images TeX developpe pour SPIP par
// Philippe Riviere [<fil@rezo.net>](mailto:fil%40rezo.net)
// et Benjamin Sonntag [<benjamin@sonntag.fr>](mailto:benjamin%40sonntag.fr)
// Distribue sous licence GNU/GPL
// © 2004 - v0.2
//  [->ChangeLog]  : ajout d'une box
//

// Necessite l'installation de TeX,  [->ImageMagick] , et du script
// qui fait la glue entre les deux : tex2im, lui-meme etant
// disponible a http://www.nought.de/tex2im.php sous GNU/GPL

// Cache du serveur
$cache_dir = "CACHE/spiTeX";
if (!is_dir($cache_dir))
    mkdir ($cache_dir);

// Supprimer les codes dangereux pour  [->551]  ;
// extrait de http://www.mayer.dial.pipex.com/tex.htm
//function math_ignore_dangerous($texte) {
//  $danger = "include|def|command|loop|repeat|open|toks|".
//  "output|input|catcode|name|\^\^|every|errhelp|".    
//  "errorstopmode|scrollmode|nonstopmode|batchmode|read|".
//  "write|csname|newhelp|uppercase|lowercase|relax|".
//  "aftergroup|afterassignment|expandafter|noexpand|".
//  "special";
//
//  if (ereg("($danger)",$texte,$regs))
//  return "\\textrm{\color{red}Don't ``$regs[1]'' me.}";
//
//  return $texte;
//}

function math_enhance($tex) {
    // Correction pour forcer la ligne de base
    $tex = "\\setbox1=\\hbox{\$\\displaystyle ".$tex."\$}\n"
        ."\\newdimen\\haut\n\\newdimen\prof\n"
        ."\\haut=\\ht1\n\\prof=\\dp1\n"
        ."\\ifdim\\haut>\\prof\\prof=\\haut\\else\\haut=\\prof\\fi\n"
        ."\\advance\haut by .5em\n"
        ."\\color{white}\\vrule height \\haut depth \\prof width 0.1pt\\color{black}\\box1";
    return $tex;
}

function math_($texte) {
    // Options de tex2im
    // -z = fond transparent ; -r = resolution
    $options = "-r 90x90";

    global $cache_dir;

    $fichier = "$cache_dir/".md5(trim($texte)).'.png';

    if (!file_exists($fichier) OR (filemtime($fichier)<filemtime("spitex.php"))) {
        $texte = escapeshellarg(math_enhance($texte));
        $cmd = "/usr/local/bin/tex2im $options -o $fichier $texte";
        exec($cmd);
    }

    return $fichier;
}

// Retourner l'image demandee
header("Content-Type: image/png");
readfile(math_(urldecode($_SERVER['QUERY_STRING'])));

// Options de tex2im
    // -z = fond transparent ; -r = resolution
    $options = "-r 90x90";
    //
//  $options .= " -x tex_header.tex";

?>

j’ai bien un tex_header.tex à côté de ce texte qui contient

J’ai même ajouté la référence à ces packages dans tex2im .

Néanmoins, tout se passe comme si la compilation ignorait proof.sty et
l’image produite est celle que je donne en pièce jointe.

Je me demande si le fichier config/mes_options.php fonctionne
correctement et si finalement le code client TeX est intégré en
standard dans SPIP continue avec les mêmes limitations qui empêchent
l’usage de proof.sty (tout comme de bussproofs.sty).

Par avance, merci pour votre aide,


Joseph

Pardon pour les « trous » de mon message précédent. Voici l’image produite. Le fichier tex_header.tex contient:

\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{amsfonts}
\usepackage{proof}
\usepackage{bussproofs}

Le mar. 8 janv. 2019 à 12:36, Joseph Vidal-Rosset <joseph.vidal.rosset@gmail.com> a écrit :

Rebonjour à tous,

Je reviens donc sur le sujet puisque j’ai modifié le code du serveur
tex.php en désactivant la protection contre les code dangereux:

<?php

//
// Serveur d'images TeX developpe pour SPIP par
// Philippe Riviere [<fil@rezo.net>](mailto:fil%40rezo.net)
// et Benjamin Sonntag [<benjamin@sonntag.fr>](mailto:benjamin%40sonntag.fr)
// Distribue sous licence GNU/GPL
// © 2004 - v0.2
//  [->ChangeLog]  : ajout d'une box
//

// Necessite l'installation de TeX,  [->ImageMagick] , et du script
// qui fait la glue entre les deux : tex2im, lui-meme etant
// disponible a [http://www.nought.de/tex2im.php](http://www.nought.de/tex2im.php) sous GNU/GPL

// Cache du serveur
$cache_dir = "CACHE/spiTeX";
if (!is_dir($cache_dir))
    mkdir ($cache_dir);

// Supprimer les codes dangereux pour  [->551]  ;
// extrait de [http://www.mayer.dial.pipex.com/tex.htm](http://www.mayer.dial.pipex.com/tex.htm)
//function math_ignore_dangerous($texte) {
//  $danger = "include|def|command|loop|repeat|open|toks|".
//  "output|input|catcode|name|\^\^|every|errhelp|".    
//  "errorstopmode|scrollmode|nonstopmode|batchmode|read|".
//  "write|csname|newhelp|uppercase|lowercase|relax|".
//  "aftergroup|afterassignment|expandafter|noexpand|".
//  "special";
//
//  if (ereg("($danger)",$texte,$regs))
//  return "\\textrm{\color{red}Don't ``$regs[1]'' me.}";
//
//  return $texte;
//}

function math_enhance($tex) {
    // Correction pour forcer la ligne de base
    $tex = "\\setbox1=\\hbox{\$\\displaystyle ".$tex."\$}\n"
        ."\\newdimen\\haut\n\\newdimen\prof\n"
        ."\\haut=\\ht1\n\\prof=\\dp1\n"
        ."\\ifdim\\haut>\\prof\\prof=\\haut\\else\\haut=\\prof\\fi\n"
        ."\\advance\haut by .5em\n"
        ."\\color{white}\\vrule height \\haut depth \\prof width 0.1pt\\color{black}\\box1";
    return $tex;
}

function math_($texte) {
    // Options de tex2im
    // -z = fond transparent ; -r = resolution
    $options = "-r 90x90";

    global $cache_dir;

    $fichier = "$cache_dir/".md5(trim($texte)).'.png';

    if (!file_exists($fichier) OR (filemtime($fichier)<filemtime("spitex.php"))) {
        $texte = escapeshellarg(math_enhance($texte));
        $cmd = "/usr/local/bin/tex2im $options -o $fichier $texte";
        exec($cmd);
    }

    return $fichier;
}

// Retourner l'image demandee
header("Content-Type: image/png");
readfile(math_(urldecode($_SERVER['QUERY_STRING'])));

// Options de tex2im
    // -z = fond transparent ; -r = resolution
    $options = "-r 90x90";
    //
//  $options .= " -x tex_header.tex";

?>

j’ai bien un tex_header.tex à côté de ce texte qui contient

J’ai même ajouté la référence à ces packages dans tex2im .

Néanmoins, tout se passe comme si la compilation ignorait proof.sty et
l’image produite est celle que je donne en pièce jointe.

Je me demande si le fichier config/mes_options.php fonctionne
correctement et si finalement le code client TeX est intégré en
standard dans SPIP continue avec les mêmes limitations qui empêchent
l’usage de proof.sty (tout comme de bussproofs.sty).

Par avance, merci pour votre aide,


Joseph

edcae214c80f6889080d36f4d57c883a-5827e.png

Bonjour à nouveau,

Grâce à ce tuto https://archives.steinmetz.fr/tutoriels/category/spip.html j’ai avancé et j’ai pu constater que mon serveur avec tex.php fonctionne comme je le souhaite, on peut le vérifier:

[https://www.vidal-rosset.net/tex.php?$$\infer[](https://www.vidal-rosset.net/tex.php?$$\infer[)^{L\land}]{(P%20\supset%20Q)%20\land%20P%20\supset%20R%20\Rightarrow%20P%20\supset%20Q%20\land%20R}{\infer[^{R\supset}]{P%20\supset%20Q,%20P%20\supset%20R%20\Rightarrow%20P%20\supset%20Q%20\land%20R}{\infer[^{L0\supset}]{P,%20P%20\supset%20Q,%20P%20\supset%20R%20\Rightarrow%20Q%20\land%20R}{\infer[^{L0\supset}]{Q,%20P,%20P%20\supset%20R%20\Rightarrow%20Q%20\land%20R}{\infer[^{R\land}]{Q,%20R,%20P%20\Rightarrow%20Q%20\land%20R}{\infer[^{{\rm%20\mathit{Ax}}}]{Q,%20R,%20P%20\Rightarrow%20Q}{}&\infer[^{{\rm%20\mathit{Ax}}}]{Q,%20R,%20P%20\Rightarrow%20R}{}}}}}}$$

Le problème est que si l’on tape cette formule entre dollars dans un article de mon site sous SPIP, ça ne fonctionne pas du tout, même entre les balises …

Il y a quelque chose que je dois modifier, mais je ne sais pas quoi…

à plus tard, et par avance merci,

Joseph

Le mar. 8 janv. 2019 à 12:41, Joseph Vidal-Rosset <joseph.vidal.rosset@gmail.com> a écrit :

Pardon pour les « trous » de mon message précédent. Voici l’image produite. Le fichier tex_header.tex contient:

\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{amsfonts}
\usepackage{proof}
\usepackage{bussproofs}

Le mar. 8 janv. 2019 à 12:36, Joseph Vidal-Rosset <joseph.vidal.rosset@gmail.com> a écrit :

Rebonjour à tous,

Je reviens donc sur le sujet puisque j’ai modifié le code du serveur
tex.php en désactivant la protection contre les code dangereux:

<?php

//
// Serveur d'images TeX developpe pour SPIP par
// Philippe Riviere [<fil@rezo.net>](mailto:fil%40rezo.net)
// et Benjamin Sonntag [<benjamin@sonntag.fr>](mailto:benjamin%40sonntag.fr)
// Distribue sous licence GNU/GPL
// © 2004 - v0.2
//  [->ChangeLog]  : ajout d'une box
//

// Necessite l'installation de TeX,  [->ImageMagick] , et du script
// qui fait la glue entre les deux : tex2im, lui-meme etant
// disponible a [http://www.nought.de/tex2im.php](http://www.nought.de/tex2im.php) sous GNU/GPL

// Cache du serveur
$cache_dir = "CACHE/spiTeX";
if (!is_dir($cache_dir))
    mkdir ($cache_dir);

// Supprimer les codes dangereux pour  [->551]  ;
// extrait de [http://www.mayer.dial.pipex.com/tex.htm](http://www.mayer.dial.pipex.com/tex.htm)
//function math_ignore_dangerous($texte) {
//  $danger = "include|def|command|loop|repeat|open|toks|".
//  "output|input|catcode|name|\^\^|every|errhelp|".    
//  "errorstopmode|scrollmode|nonstopmode|batchmode|read|".
//  "write|csname|newhelp|uppercase|lowercase|relax|".
//  "aftergroup|afterassignment|expandafter|noexpand|".
//  "special";
//
//  if (ereg("($danger)",$texte,$regs))
//  return "\\textrm{\color{red}Don't ``$regs[1]'' me.}";
//
//  return $texte;
//}

function math_enhance($tex) {
    // Correction pour forcer la ligne de base
    $tex = "\\setbox1=\\hbox{\$\\displaystyle ".$tex."\$}\n"
        ."\\newdimen\\haut\n\\newdimen\prof\n"
        ."\\haut=\\ht1\n\\prof=\\dp1\n"
        ."\\ifdim\\haut>\\prof\\prof=\\haut\\else\\haut=\\prof\\fi\n"
        ."\\advance\haut by .5em\n"
        ."\\color{white}\\vrule height \\haut depth \\prof width 0.1pt\\color{black}\\box1";
    return $tex;
}

function math_($texte) {
    // Options de tex2im
    // -z = fond transparent ; -r = resolution
    $options = "-r 90x90";

    global $cache_dir;

    $fichier = "$cache_dir/".md5(trim($texte)).'.png';

    if (!file_exists($fichier) OR (filemtime($fichier)<filemtime("spitex.php"))) {
        $texte = escapeshellarg(math_enhance($texte));
        $cmd = "/usr/local/bin/tex2im $options -o $fichier $texte";
        exec($cmd);
    }

    return $fichier;
}

// Retourner l'image demandee
header("Content-Type: image/png");
readfile(math_(urldecode($_SERVER['QUERY_STRING'])));

// Options de tex2im
    // -z = fond transparent ; -r = resolution
    $options = "-r 90x90";
    //
//  $options .= " -x tex_header.tex";

?>

j’ai bien un tex_header.tex à côté de ce texte qui contient

J’ai même ajouté la référence à ces packages dans tex2im .

Néanmoins, tout se passe comme si la compilation ignorait proof.sty et
l’image produite est celle que je donne en pièce jointe.

Je me demande si le fichier config/mes_options.php fonctionne
correctement et si finalement le code client TeX est intégré en
standard dans SPIP continue avec les mêmes limitations qui empêchent
l’usage de proof.sty (tout comme de bussproofs.sty).

Par avance, merci pour votre aide,


Joseph

En correction de mon message précédent, voici le lien qui montre que
le serveur tex.php fonctionne chez moi correctement:

[[https://www.vidal-rosset.net/tex.php?$$\infer[L∧]{(P%20⊃%20Q)%20∧%20P%20⊃%20R%20⇒%20P%20⊃%20Q%20∧%20R}{[R⊃]{P%20⊃%20Q,%20P%20⊃%20R%20⇒%20P%20⊃%20Q%20∧%20R}{[L0⊃]{P,%20P%20⊃%20Q,%20P%20⊃%20R%20⇒%20Q%20∧%20R}{[L0⊃]{Q,%20P,%20P%20⊃%20R%20⇒%20Q%20∧%20R}{[R∧]{Q,%20R,%20P%20⇒%20Q%20∧%20R}{[{%20}]{Q,%20R,%20P%20⇒%20Q}{}&[{%20}]{Q,%20R,%20P%20⇒%20R}{}}}}}}$$]]


Joseph

Désolé pour ces ratés... l'adresse entre crochets ici:

[[https://www.vidal-rosset.net/tex.php?$$\infer[^{L\land}]{(P%20\supset%20Q)%20\land%20P%20\supset%20R%20\Rightarrow%20P%20\supset%20Q%20\land%20R}{\infer[^{R\supset}]{P%20\supset%20Q,%20P%20\supset%20R%20\Rightarrow%20P%20\supset%20Q%20\land%20R}{\infer[^{L0\supset}]{P,%20P%20\supset%20Q,%20P%20\supset%20R%20\Rightarrow%20Q%20\land%20R}{\infer[^{L0\supset}]{Q,%20P,%20P%20\supset%20R%20\Rightarrow%20Q%20\land%20R}{\infer[^{R\land}]{Q,%20R,%20P%20\Rightarrow%20Q%20\land%20R}{\infer[^{{\rm%20\mathit{Ax}}}]{Q,%20R,%20P%20\Rightarrow%20Q}{}&\infer[^{{\rm%20\mathit{Ax}}}]{Q,%20R,%20P%20\Rightarrow%20R}{}}}}}}$$]]

a été modifiée par l'export html de Gnus... j'arrête maintenant de polluer la
liste, en attendant des suggestion de solution dans SPIP.
--
Joseph

Bonjour à tous,

Je reviens sur ma question. Mon serveur tex.php fonctionne bien, mais hélas, c’est bien SPIP qui interdit l’importation d’images qui sont pourtant correctement produites par le tex.php . Si j’écris dans un article SPIP:
$$ A \supset B $$ j’obtiens l’image souhaitée. Mais si je remplace ce qui est entre les deux couples de $ par \infer{A}{B} cela ne fonctionnera pas. Or pourtant l’image est produite correctement comme vous pouvez le vérifier: https://www.vidal-rosset.net/tex.php?$$\infer{B}{A}$$

Comment parvenir à se débarrasser de cette limitation dans SPIP?

Par avance merci.

Joseph

Le mar. 8 janv. 2019 à 14:32, Joseph Vidal-Rosset <joseph.vidal.rosset@gmail.com> a écrit :

Désolé pour ces ratés… l’adresse entre crochets ici:

[[[https://www.vidal-rosset.net/tex.php?$$\infer[](https://www.vidal-rosset.net/tex.php?$$\infer[)^{L\land}]{(P%20\supset%20Q)%20\land%20P%20\supset%20R%20\Rightarrow%20P%20\supset%20Q%20\land%20R}{\infer[^{R\supset}]{P%20\supset%20Q,%20P%20\supset%20R%20\Rightarrow%20P%20\supset%20Q%20\land%20R}{\infer[^{L0\supset}]{P,%20P%20\supset%20Q,%20P%20\supset%20R%20\Rightarrow%20Q%20\land%20R}{\infer[^{L0\supset}]{Q,%20P,%20P%20\supset%20R%20\Rightarrow%20Q%20\land%20R}{\infer[^{R\land}]{Q,%20R,%20P%20\Rightarrow%20Q%20\land%20R}{\infer[^{{\rm%20\mathit{Ax}}}]{Q,%20R,%20P%20\Rightarrow%20Q}{}&\infer[^{{\rm%20\mathit{Ax}}}]{Q,%20R,%20P%20\Rightarrow%20R}{}}}}}}$$]]

a été modifiée par l’export html de Gnus… j’arrête maintenant de polluer la
liste, en attendant des suggestion de solution dans SPIP.

Joseph