Ressources LaTeX dans SCENARI
LaTeX est un format utilisé pour la publication de documents, en particulier utilisé pour rédiger et publier des formules de mathématiques / physique.
Prés-requis utilisateurs
En régle générale :
- Si vous utilisez un atelier local : LaTeX doit être installé en local
- Si vous utilisez un atelier connecté à un SCENARIserver : LaTeX doit être installé sur le serveur (pas besoin de le mettre sur tous les clients)
Une installation "de base" de LaTeX n'est pas nécessairement assez complète pour faire fonctionner les publications de Scenari qui utilisent des fonctionnalités avancées (UTF-8, positionnement des formules...). Il faut généralement rajouter certains packages supplémentaires, d'ou le but de cette première partie du document.
Les versions suivantes du moteur latex ont été testées :
- TexLive sous Linux (nous testons avec ubuntu 8.10) et sous MacOS X (besoin de contributeurs pour tester !)
- Miktex sous windows (nous testons avec XP et vista, Miktex 2.7)
Exemple de liste de packages nécessaires sous ubuntu linux :
- texlive-latex-base
- texlive-latex-recommended
- texlive-latex-extra
- preview-latex-style
- dvipng
- texlive-fonts-recommended est aussi nécessaire sur Ubuntu 10.04
- Remarque : Sous Ubuntu il est possible par la suite de supprimer les packages "doc" suivant qui sont lourds et inutiles, surtout sur un serveur :
- xlive-latex-extra-doc
- texlive-latex-base-doc
- texlive-pictures-doc
- texlive-pstricks-doc
- texlive-fonts-recommended-doc
Exemple pour installation avec Centos, packages à installer avec yum :
- tetex
- tetex-latex
- tetex-fonts
- tetex-afm
A priori certains packages LaTeX ne sont pas distribués par Centos, il faut :
- télécharger à la main http://mirror.ctan.org/macros/latex/contrib/unicode.zip , le dézipper dans un répertoire temporaire, lancer "tex preview.ins"
- télécharger à la main http://mirror.ctan.org/macros/latex/contrib/preview.zip , créer le répertoire /usr/share/texmf/tex/latex/ucs et déziper le fichier téléchargé directement dedans.
- lancer texhash
Exemple de liste de packages nécessaires sous windows avec miktex :
- miktex-freetype-bin
- miktex-dvipng-bin
- unicode
- amslatex
- preview
- txfonts
- zhmetrics (depuis miktex 2.9)
Procédure sous Mac OS X (Remerciements à Alex54 / Alexandre) :
(besoin de contributeurs pour vérifier ces listes)
Miktex propose d'installer automatiquement les packages manquant ce qui peut être utile dans une utilisation locale. Si vous êtes administrateur de SCENARIserveur et que vous voulez installer votre propre serveur de transformation sous windows, bloquez impérativement cette auto-installation car elle paralyserait les génération en laissant une fenêtre ouverte. Pour désactiver cette option, allez dans menu démarrer -> programmes -> miktex -> settings, sur l'onglet "General", configurez "install missing packages on the fly de "ask me first" à "no".
Scenari fera appel à 2 exécutables de ces distributions latex (ces exécutables doivent impérativement être dans la variable d'environnement "path", c'est bon par défaut avec les distributions latex prises en exemple) :
- latex
- dvipng
Historique
Pour la version du 21/07/2009 (aux environs de la nightly Scenari 3.6.0.14), il existait 2 technologies possibles pour transformer du code source LaTeX en formule affichable / imprimable.
- Latex -> MML -> PNG / SWF / ODF par asciimathml et openoffice (prérequis : nécessite OpenOffice, certaines formules ne sont pas générées correctement dû à l'extensibilité du langage et les limites des programmes tiers dans la chaîne de transformation)
- Latex -> PNG, transformation par un vrai moteur latex (prés-requis : nécessite un moteur latex installé sur son PC ou une connexion a un moteur distant)
La 2eme méthode est la seule retenue dans les nouvelles versions (depuis Opale 3.2).
Transformation par le moteur latex
Ces transformeurs sont accessibles dans math/latex/native. Cette transformation permet un rendu PNG avec une validité assez fiable, à condition de rester dans le sous ensemble latex classique + amsmath. De plus, les formules ne peuvent pas contenir de commandes personnalisées ou macro globales qui ne seraient défini "ailleurs dans le document" ou dans une autre formule. La "preview" dans l'interface auteur n'utilise pas ce mécanisme, et passe par asciimathml (beaucoup plus rapide), ce qui fait que la preview peut être incorrecte mais le résultat parfait en publication.
Choix d'implémentation pré-programmées
Ces informations techniques ne sont utiles qu'aux personnes souhaitant participer aux développements de l'intégration du moteur latex dans Scenari.
Préambule :
\documentclass{article}
\usepackage[utf8x]{inputenc}
\usepackage{amssymb,amsmath}
\usepackage{color}
\usepackage{txfonts}
\renewcommand{\frac}{\dfrac}
\IfFileExists{scenaricustom.sty} { \usepackage{scenaricustom} }{}
\usepackage[active]{preview}
\pagestyle{empty}
\begin{document}
\begin{preview}
\begin{math}
Postambule :
\end{math}
\end{preview}
\end{document}
De plus si la formule source ne commence par aucun de ces textes : "\begin{math}", "\begin{displaymath}", "\begin{eqnarray}", "\begin{equation}", "\begin{align}", "\begin{alignat}" (et d'autres), on considère que la formule n'a pas de type spécifiée et elle est automatiquement encadré par "\begin{math}" + "\end{math}".
Explication des choix de certain packages :
- utf8x permet la gestion correcte des caractères UTF-8, toutes les formules Scenari sont éditées en UTF-8 que ce soit en inline ou dans le micro-éditeur
- txfonts est une des rares polices a reposer assez peu (voir pas du tout ?) sur les caractères bitmap. On cherche a éviter les caractères bitmap avec miktex car il se produit le bug étrange "lors de la première transformation à une résolution donnée, certains caractères sont manquants", l'erreur se produit même en dehors de Scenari, c'est assez incompréhensible ! CF http://ctan.tug.org/tex-archive/info/Free_Math_Font_Survey/survey.html pour une description très intéressante des polices couramment utilisées sur des documents latex pour les maths.
- preview à dvipng de récupérer correctement des informations de positionnement verticales (paramètres --depth, cf ...je ne retrouve pas de source très complète qui décrit le mécanisme dans son ensemble...)
- \renewcommand{\frac}{\dfrac} : reformatage automatique des formules pour les afficher plus grandes : par défaut, chaque ajout de fraction \frac diminue la taille des numérateur et dénominateurs et elle deviennent difficile à lire, cette commande garantie que la taille restera assez grosse et lisible (vous pouvez rétablir le comportement par défaut de latex en utilisant \tfrac au lieu de \frac.
- ...\usepackage{scenaricustom}... : cf partie suivante "surcharger le préambule
Surcharger le préambule
Surcharger le préambule permet d'ajouter de nouvelles commandes ou nouvelles fonctionnalités à LaTeX qui ne sont pas présentes par défaut.
- Créez un package latex nommé "scenaricustom", le fichier scenaricustom.sty correspondant sera automatiquement chargé. (par exemple créez un fichier "C:\Program Files\MiKTeX 2.7\tex\latex\scenaricustom\scenaricustom.sty"
- saisissez l'entête de package puis vos commandes dans ce fichier, exemple :
\NeedsTeXFormat{LaTeX2e} \ProvidesPackage{scenaricustom}[20/07/2009 classe personnalisee pour scenari] \RequirePackage{mathrsfs} - et lancez le programme texhash a partir d'une fenêtre de ligne de commande (démarrer -> exécuter -> cmd + OK, et taper texhash + entrée)
Attention: si vous utilisez des packages personnalisés, il faudra la distribuer et expliquer son installation a tous les auteurs souhaitant publier vos contenus '''
Dans une prochaine version, ces préambules / postambules pourraient devenir paramétrables dans SCENARIbuilder ou lors de l'installation d'un SCENARIserver.
La ligne de commande utilisée pour appeler LaTeX
(todo : Ecrire la doc sur la ligne de commande utilisé a partir de :
vCommands[0] = Latex.getCommand("latex");
vCommands[1] = "-halt-on-error";
vCommands[2] = "-interaction=nonstopmode";
vCommands[3] = "-aux-directory=" + vTmpDir.getCanonicalPath();
vCommands[5] = "-output-directory=" + vTmpDir.getCanonicalPath();
vCommands[6] = vTexFile.getCanonicalPath();
vCommands[0] = Latex.getCommand("dvipng");
vCommands[1] = "-T";
vCommands[2] = "tight";
vCommands[3] = "-z";
vCommands[4] = "9";
vCommands[5] = "-bg";
vCommands[6] = xGetBgColor(pParams);
vCommands[7] = "-D";
vCommands[8] = Integer.toString(xGetResolution(pParams));
vCommands[9] = vTmpDir.getCanonicalPath() + "/" + vTexFileName;
vCommands[10] = "-q0";//
vCommands[11] = "-v0";//
vCommands[12] = "--depth";
vCommands[13] = "--height";//--height
vCommands[14] = "--strict";//
vCommands[15] = "-o";
vCommands[16] = vOutFile.getCanonicalPath();
)
Utilisation du système de transformation a distance
Si un programme Scenari ne passe pas par un SCENARIserver, il peut fonctionner selon 2 modes possibles :
- si les exécutables latex sont installés sur le poste local, ils sont utilisés
- si les exécutables ne sont pas trouvés, le programme Scenari peut utiliser un serveur distant sur lequel est installé un serveur de transformation dédié aux formules (cf partie serveur de transformation distant ci-après pour la configuration nécessaire)
Coté serveur
SCENARIserver peu jouer le role de serveur de transformation de formules :
- Utilisez un SCENARIserver 3.6.015 ou supérieur
- Modifier le paramétrage de build.property :
- server.conf.authentication=false
- server.conf.transform=true
- Construire la webApp
- Il est conseillé de se créer un serveur dédié en changeant le nom de la webApp : server.webapp.name=transformSrv
- LaTeX doit être installé sur le serveur (même pré-requis que pour une utilisation de latex en mode local)
Coté client
Il faut modifier un fichier de configuration :
- rajouter la ligne : "<properties type="Alone" code="com.scenari.s.co.transform.latex.HTransformerLatex2Img.sProxyUrl" level="2000"> http://#ipDuServeur#:#portDuServeur#/s/chain/u/transform</properties>" dans le fichier init.xml
Paramètres de la transformation
(todo : compléter cette doc)
Transformation par asciimathml + openoffice
Remarques sur les ressources LaTeX acceptées dans SCENARI
- Le cycle de transformation est le suivant : LaTeX -> MML -> (PNG ou ODF ou SWF). La transformation LaTeX en MathML est assurée par une transcription du travail de http://www.chapman.edu/~jipsen/mathml en java. Les contraintes imposées sur la syntaxe du LaTeX en entrée sont décrites à cette page http://www.maths.nottingham.ac.uk/personal/drw/lm.html.
Intégration des ressources LaTeX dans les générateurs openDocument
- Le LaTeX est intégré en tant qu'objet OLE sous sa forme ODF;
- Un freeTransf a du être utilisé. Il contient une section "sm:styleFile.styles" qui permet de styler la frame insérée (centrer horizontalement pour les ODF inline, ...).
Intégration des ressources LaTeX dans les générateurs XHTML
- La formule LaTeX peut être intégrée sous sa forme 'MathML', 'SWF' ou 'PNG' en utilisant l'axis correspondant dans les transformers 'mathTex_web.transf' et 'mathTex_web@…';
- Veuillez consulter les remarques de visualisation des MathML dans un navigateur Web.
Intégration des ressources LaTeX comme ressource interne
- Pour faire celà, il faut créer un textLeaf dédié une primitive texte (textPrim).
- Edition : pour proposer à l'auteur un aperçu de la formule lors de la saisie, il sera utile de déclarer un controleur pointant vers "mathTexInlineController.doss" dans la textPrim (cf. 'parTextPrim.JPG').);
- publication OD : le textLeafTag correspondant devra délarer le widget "mathTexInline_od.uiwidget", et la zone "zMathTex" (ex : /demo/pub/paper/transf/txt.transf ).
- publication Web : le textLeafTag correspondant devra délarer un des widget "mathTexInline_web.xxx.uiwidget".
Attachments
-
parTextPrim.JPG
(52.7 KB) -
added by anp 4 years ago.
Exemple de paramétrage d'une textPrim