32
Tralics et Raweb Tralics et le Raweb Comment produire et afficher du XML José Grimm Projet Apics Institut National de Recherche en Informatique et Automatique Sophia Antipolis Méditerranée 06 octobre 2008

Tralics et le Raweb Comment produire et afficher du XMLTralics et Raweb Logiciels Tralics: untraducteurdeLaTeXversXML LogicielécritenC++ Logiciellibre,licenceCeCILL Versioncourante2.13.0

  • Upload
    others

  • View
    4

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Tralics et le Raweb Comment produire et afficher du XMLTralics et Raweb Logiciels Tralics: untraducteurdeLaTeXversXML LogicielécritenC++ Logiciellibre,licenceCeCILL Versioncourante2.13.0

Tralics et Raweb

Tralics et le RawebComment produire et afficher du XML

José Grimm

Projet ApicsInstitut National de Recherche en Informatique et Automatique

Sophia Antipolis Méditerranée

06 octobre 2008

Page 2: Tralics et le Raweb Comment produire et afficher du XMLTralics et Raweb Logiciels Tralics: untraducteurdeLaTeXversXML LogicielécritenC++ Logiciellibre,licenceCeCILL Versioncourante2.13.0

Tralics et RawebIntroduction

Introduction

L’Inria a fêté ses 40 ans en 2007Premier rapport en Latex 1987: voir Cahier GUTenberg 0Version HTML depuis 1994 (Grif puis latex2html)Description du Raweb (journées Gut1999, Lyon)Version papier jusqu’en 1998 (Sophia: 600 pages A4)Taille: 80 textes en 1998, 179 en 2007Versions XML depuis 2002 sur le WebVersion anglais depuis 2003Présentation de Tralics à EuroTeX 2003Autres utilisateurs : Connexions, Cedrics

Page 3: Tralics et le Raweb Comment produire et afficher du XMLTralics et Raweb Logiciels Tralics: untraducteurdeLaTeXversXML LogicielécritenC++ Logiciellibre,licenceCeCILL Versioncourante2.13.0

Tralics et RawebIntroduction

Auteurs et Contributeurs du Raweb

Historique: Jacques André et Martin Jourdan. Philippe LouarnRaweb: Albert Benveniste (Pierron, Grimm, Le Moal, Paget)Raweb XML: Grimm, Pierron, Durollet, Vatton plus Verjus,Benveniste, Le Moal.Chefs: Millet, Verjus, Vercoustre, Berthod, Kahn, Marmol, PuechDéveloppeurs: Rossi, Durollet, Marmol

Page 4: Tralics et le Raweb Comment produire et afficher du XMLTralics et Raweb Logiciels Tralics: untraducteurdeLaTeXversXML LogicielécritenC++ Logiciellibre,licenceCeCILL Versioncourante2.13.0

Tralics et RawebSur le Web

RA1994 Introduction

Page 5: Tralics et le Raweb Comment produire et afficher du XMLTralics et Raweb Logiciels Tralics: untraducteurdeLaTeXversXML LogicielécritenC++ Logiciellibre,licenceCeCILL Versioncourante2.13.0

Tralics et RawebSur le Web

RA1994 page de texte

Page 6: Tralics et le Raweb Comment produire et afficher du XMLTralics et Raweb Logiciels Tralics: untraducteurdeLaTeXversXML LogicielécritenC++ Logiciellibre,licenceCeCILL Versioncourante2.13.0

Tralics et RawebSur le Web

RA1995 page de texte

Page 7: Tralics et le Raweb Comment produire et afficher du XMLTralics et Raweb Logiciels Tralics: untraducteurdeLaTeXversXML LogicielécritenC++ Logiciellibre,licenceCeCILL Versioncourante2.13.0

Tralics et RawebSur le Web

RA1998 page de titre

Page 8: Tralics et le Raweb Comment produire et afficher du XMLTralics et Raweb Logiciels Tralics: untraducteurdeLaTeXversXML LogicielécritenC++ Logiciellibre,licenceCeCILL Versioncourante2.13.0

Tralics et RawebSur le Web

RA1999 page de titre

Page 9: Tralics et le Raweb Comment produire et afficher du XMLTralics et Raweb Logiciels Tralics: untraducteurdeLaTeXversXML LogicielécritenC++ Logiciellibre,licenceCeCILL Versioncourante2.13.0

Tralics et RawebSur le Web

RA1999 page de texte

Page 10: Tralics et le Raweb Comment produire et afficher du XMLTralics et Raweb Logiciels Tralics: untraducteurdeLaTeXversXML LogicielécritenC++ Logiciellibre,licenceCeCILL Versioncourante2.13.0

Tralics et RawebSur le Web

RA2002 page de texte

Page 11: Tralics et le Raweb Comment produire et afficher du XMLTralics et Raweb Logiciels Tralics: untraducteurdeLaTeXversXML LogicielécritenC++ Logiciellibre,licenceCeCILL Versioncourante2.13.0

Tralics et RawebSur le Web

RA2003 page de texte

Page 12: Tralics et le Raweb Comment produire et afficher du XMLTralics et Raweb Logiciels Tralics: untraducteurdeLaTeXversXML LogicielécritenC++ Logiciellibre,licenceCeCILL Versioncourante2.13.0

Tralics et RawebSur le Web

RA2003 Introduction

Page 13: Tralics et le Raweb Comment produire et afficher du XMLTralics et Raweb Logiciels Tralics: untraducteurdeLaTeXversXML LogicielécritenC++ Logiciellibre,licenceCeCILL Versioncourante2.13.0

Tralics et RawebSur le Web

RA2007 Introduction

Page 14: Tralics et le Raweb Comment produire et afficher du XMLTralics et Raweb Logiciels Tralics: untraducteurdeLaTeXversXML LogicielécritenC++ Logiciellibre,licenceCeCILL Versioncourante2.13.0

Tralics et RawebSur le Web

RA2007 Recherche (partenaires)

Page 15: Tralics et le Raweb Comment produire et afficher du XMLTralics et Raweb Logiciels Tralics: untraducteurdeLaTeXversXML LogicielécritenC++ Logiciellibre,licenceCeCILL Versioncourante2.13.0

Tralics et RawebSur le Web

RA2007 Recherche bibliographique par auteur

Page 16: Tralics et le Raweb Comment produire et afficher du XMLTralics et Raweb Logiciels Tralics: untraducteurdeLaTeXversXML LogicielécritenC++ Logiciellibre,licenceCeCILL Versioncourante2.13.0

Tralics et RawebSur le Web

RA2007 Recherche bibliographique par revue

Page 17: Tralics et le Raweb Comment produire et afficher du XMLTralics et Raweb Logiciels Tralics: untraducteurdeLaTeXversXML LogicielécritenC++ Logiciellibre,licenceCeCILL Versioncourante2.13.0

Tralics et RawebSur le Web

RA2007 Tableau récapitulatif

Page 18: Tralics et le Raweb Comment produire et afficher du XMLTralics et Raweb Logiciels Tralics: untraducteurdeLaTeXversXML LogicielécritenC++ Logiciellibre,licenceCeCILL Versioncourante2.13.0

Tralics et RawebSur le Web

RA2007 Tableau récapitulatif

Page 19: Tralics et le Raweb Comment produire et afficher du XMLTralics et Raweb Logiciels Tralics: untraducteurdeLaTeXversXML LogicielécritenC++ Logiciellibre,licenceCeCILL Versioncourante2.13.0

Tralics et RawebLogiciels

Tralics : un traducteur de LaTeX vers XML

Logiciel écrit en C++Logiciel libre, licence CeCILLVersion courante 2.13.0Taille du code : 57k lignes, 1.7MoClasses et extensions : 99Fichiers de test : 35Site web: http://www-sop.inria.fr/apics/tralicsSources: ftp://ftp-sop.inria.fr/apics/tralics-src

Page 20: Tralics et le Raweb Comment produire et afficher du XMLTralics et Raweb Logiciels Tralics: untraducteurdeLaTeXversXML LogicielécritenC++ Logiciellibre,licenceCeCILL Versioncourante2.13.0

Tralics et RawebLogiciels

Challenge 1

Challenge : convertir le fichier test de l’Ams. Problèmes :

1 Undefined command \@@italiccorr.2 Undefined command \bysame3 Undefined command \AmS.4 \newcommand: Cannot define \st; token is already defined.5 Undefined command \Hat.6 \renewcommand: Cannot define \labelenumi; token is undefined.7 Undefined command \hdotsfor.8 bad hbox.9 bad math env align*.10 bad math env align.11 Undefined environment alignat.

Page 21: Tralics et le Raweb Comment produire et afficher du XMLTralics et Raweb Logiciels Tralics: untraducteurdeLaTeXversXML LogicielécritenC++ Logiciellibre,licenceCeCILL Versioncourante2.13.0

Tralics et RawebLogiciels

Challenge 2Modifications du fichier de test; environnemnt verbatim

\usepackage{fancyvrb}\DefineVerbatimEnvironment{verbatim}{Verbatim}

{pre=pre,style=latex,firstnumber=last}

Commande verbatim. Ne marche pas dans align

\def\LTC{\leavevmode\xbox{latexcode}}\newcommand{\cn}[1]{\LTC{\protect\ntt\bslash#1}}

Numéro des équations

\def\maketag@@@#1{\hbox{\m@th\normalfont\bfseries#1}}\def\maketag@@@@@#1{\hbox{\m@th\normalfont#1}}\def\tagform@@#1{\maketag@@@@@{%

(\ignorespaces#1\unskip\@@italiccorr)}}\renewcommand{\eqref}[1]{\textup{\tagform@@{\ref{#1}}}}

Page 22: Tralics et le Raweb Comment produire et afficher du XMLTralics et Raweb Logiciels Tralics: untraducteurdeLaTeXversXML LogicielécritenC++ Logiciellibre,licenceCeCILL Versioncourante2.13.0

Tralics et RawebLogiciels

Challenge 3

Équations 7.22 et 3.17 mal numérotéesLe théorème commence par une équation

Page 23: Tralics et le Raweb Comment produire et afficher du XMLTralics et Raweb Logiciels Tralics: untraducteurdeLaTeXversXML LogicielécritenC++ Logiciellibre,licenceCeCILL Versioncourante2.13.0

Tralics et RawebLogiciels

Challenge 4

Page 24: Tralics et le Raweb Comment produire et afficher du XMLTralics et Raweb Logiciels Tralics: untraducteurdeLaTeXversXML LogicielécritenC++ Logiciellibre,licenceCeCILL Versioncourante2.13.0

Tralics et RawebLogiciels

Challenge 5; pourquoi ces proof ?

Page 25: Tralics et le Raweb Comment produire et afficher du XMLTralics et Raweb Logiciels Tralics: untraducteurdeLaTeXversXML LogicielécritenC++ Logiciellibre,licenceCeCILL Versioncourante2.13.0

Tralics et RawebLogiciels

Exemple de texte

% Tralics configuration file ’test0.tcf’\ChangeElementName{theorem}{Theorem}\newtheorem{theo}[subsection]{Theorem}

\begin{module}{fondements}{desc}{\’Etude du problème}\begin{participants}\persB{Jean}{Dupond}[Lyon]{Chercheur}{CNRS}[Détaché][y]

\end{participants}L’équation \eqref{A} de \cite{E}\begin{theo}\begin{equation}e=mc^2 \label{A}\end{equation}

\end{theo}\end{module}

Page 26: Tralics et le Raweb Comment produire et afficher du XMLTralics et Raweb Logiciels Tralics: untraducteurdeLaTeXversXML LogicielécritenC++ Logiciellibre,licenceCeCILL Versioncourante2.13.0

Tralics et RawebLogiciels

Traduction XML par Tralics<!DOCTYPE unknown SYSTEM ’unknown.dtd’><fondements id-text=’fondements’ id=’uid1’><module id-text=’1’ id=’uid2’><head>Étude du problème</head><participants><pers prenom=’Jean’ nom=’Dupond’ affiliation=’cnrs’

profession=’Research’ hdr=’y’>Détaché</pers></participants><p>L’équation (<ref target=’uid4’/>) de

<cit><ref target=’bid0’/></cit></p><Theorem style=’plain’ type=’theo’ id-text=’1’ id=’uid3’><head>Theorem</head><p/><formula id-text=’1’ id=’uid4’ type=’display’><math mode=’display’ xmlns=’...’><mrow> <mi>e</mi> <mo>=</mo> <mi>m</mi>

<msup><mi>c</mi> <mn>2</mn> </msup></mrow></math></formula>

</Theorem>

Page 27: Tralics et le Raweb Comment produire et afficher du XMLTralics et Raweb Logiciels Tralics: untraducteurdeLaTeXversXML LogicielécritenC++ Logiciellibre,licenceCeCILL Versioncourante2.13.0

Tralics et RawebLogiciels

Traduire en HTML

On utilise XSLT (xsltproc Linux et Mac)Il faut une DTD valide (pour les id)Une feuille principale pour découpage en pagesUne feuille de style pour les meta donnéesUne feuille de style génériquePour l’exemple: ex1html.xsl + clsb.xsl + amsart.xslPour le raweb: 45 feuilles de styles (17k lignes)

Page 28: Tralics et le Raweb Comment produire et afficher du XMLTralics et Raweb Logiciels Tralics: untraducteurdeLaTeXversXML LogicielécritenC++ Logiciellibre,licenceCeCILL Versioncourante2.13.0

Tralics et RawebLogiciels

Traduction HTML

<p>L´équation (<a href="#uid6">2</a>) de<a href="#bid0" title="Einstein1989">[1]</a></p>

<div class="theorem-theo"><i><p><a style="..." id="uid5">Theorem 1.1. </a></p><div class="mathdisplay"><table width="100%" id="uid6">

<tr valign="middle"><td class="leqno"></td><td><math mode="display">...</math></td><td class="eqno">(2)</td></tr></table></div></i></div>

<h1 id="bibliography">Bibliography</h1><p class="noindent nofirst" id="bid0">[1]

<span class="smallcap">Albert Einstein.</span><i>The collected papers of Albert Einstein...</i>Princeton, NJ, 1989.</p>

Page 29: Tralics et le Raweb Comment produire et afficher du XMLTralics et Raweb Logiciels Tralics: untraducteurdeLaTeXversXML LogicielécritenC++ Logiciellibre,licenceCeCILL Versioncourante2.13.0

Tralics et RawebLogiciels

Feuille de style 1.proof p:first-child:before {font-style:italic; content : "Proof. "}samp { color: maroon;}<xsl:template match="latexcode"><samp><xsl:apply-templates/></samp></xsl:template><xsl:template match="head"/><xsl:template match="div0" mode="normal"><h1 style="text-align:center"> .... </h1><xsl:apply-templates/></xsl:template>

<xsl:template match="div1"><xsl:apply-templates/></xsl:template><xsl:template match="div1" mode="first-par"><a style="...">

...<xsl:apply-templates select="head" mode="full"/>...<xsl:template match="p">

<xsl:choose><xsl:when test="parent::pre"> <xsl:apply-templates/> </xsl:when><xsl:when test="parent::div1 and position()=2"> ... </xsl:when><xsl:when test="parent::theorem and position()=2"> ... </xsl:when><xsl:when test="parent::theorem and position()=3

and preceding-sibling::alt_head[1]"><p><xsl:apply-templates select=".." mode="first-par"/><xsl:apply-templates/>

Page 30: Tralics et le Raweb Comment produire et afficher du XMLTralics et Raweb Logiciels Tralics: untraducteurdeLaTeXversXML LogicielécritenC++ Logiciellibre,licenceCeCILL Versioncourante2.13.0

Tralics et RawebLogiciels

Feuille de style 2

<xsl:template match="theorem"><div class=’theorem-@type’><i> <xsl:apply-templates/></i></div></xsl:template>

<xsl:template match="theorem" mode="first-par"><a style="font-weight: bold;font-style:normal;"><xsl:call-template name="id"/><xsl:apply-templates select="head" mode="full"/><xsl:call-template name="calculateTheoremNumber"/><xsl:apply-templates select="alt_head" mode="text"/><xsl:text>. </xsl:text></a>

</xsl:template><xsl:template match="theorem/alt_head" mode="text">

<span style="font-weight: normal">(<xsl:apply-templates/>)

</span></xsl:template>

Page 31: Tralics et le Raweb Comment produire et afficher du XMLTralics et Raweb Logiciels Tralics: untraducteurdeLaTeXversXML LogicielécritenC++ Logiciellibre,licenceCeCILL Versioncourante2.13.0

Tralics et RawebLogiciels

Feuille de style 3 : Makefile

Ne pas utiliser xsl:document pour avoir plusieurs pages HTML

for uid in uid0 ‘/usr/bin/xsltproc --catalogs $(RAWEBDIR)/src/comptage-modules.xsl $(PROJET).xml1|grep -v ^$$‘;

doecho u=$$uid ;/usr/bin/xsltproc --catalogs --stringparam pageid $$uid

--stringparam year $(YEAR) $(RAWEBDIR)/ralyx-src/EnglobeDynamic2008.xsl2>&1 $(PROJET).xml1 > $(PROJET)/$$uid.html

| tee -a $(LOGDIR)/$(PROJET)-xsltprocHtml.log; \sed -i -e ’s# src="/static/# src="../static/#g’ $(PROJET)/$$uid.html 2>&1 | tee -a $(LOGDIR)/$(PROJET)-xsltprocHtml.log; \sed -i -e ’s# href="/static/# href="../static/#g’ $(PROJET)/$$uid.html 2>&1 | tee -a $(LOGDIR)/$(PROJET)-xsltprocHtml.log; \

done;

Page 32: Tralics et le Raweb Comment produire et afficher du XMLTralics et Raweb Logiciels Tralics: untraducteurdeLaTeXversXML LogicielécritenC++ Logiciellibre,licenceCeCILL Versioncourante2.13.0

Tralics et RawebLogiciels

Feuille de style 4 : ExtractMath.pl

Script Perl, 1350 lignesTraite les images et les formules de math (substitution)Utilise gs pour convertir le PS en png, tenant compte desoptions width, height, scale, et la BB du PS.Interprète les formules de math simple, x2, partage des imagesφ+A, crée des images, calcule l’attribut alt.Formule de math XML convertie par LATEX en dvi; boundingbox dans le log; dvi converti en ps par dvips; png via convertou pstoimg