Upload
others
View
4
Download
0
Embed Size (px)
Citation preview
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
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
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
Tralics et RawebSur le Web
RA1994 Introduction
Tralics et RawebSur le Web
RA1994 page de texte
Tralics et RawebSur le Web
RA1995 page de texte
Tralics et RawebSur le Web
RA1998 page de titre
Tralics et RawebSur le Web
RA1999 page de titre
Tralics et RawebSur le Web
RA1999 page de texte
Tralics et RawebSur le Web
RA2002 page de texte
Tralics et RawebSur le Web
RA2003 page de texte
Tralics et RawebSur le Web
RA2003 Introduction
Tralics et RawebSur le Web
RA2007 Introduction
Tralics et RawebSur le Web
RA2007 Recherche (partenaires)
Tralics et RawebSur le Web
RA2007 Recherche bibliographique par auteur
Tralics et RawebSur le Web
RA2007 Recherche bibliographique par revue
Tralics et RawebSur le Web
RA2007 Tableau récapitulatif
Tralics et RawebSur le Web
RA2007 Tableau récapitulatif
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
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.
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}}}}
Tralics et RawebLogiciels
Challenge 3
Équations 7.22 et 3.17 mal numérotéesLe théorème commence par une équation
Tralics et RawebLogiciels
Challenge 4
Tralics et RawebLogiciels
Challenge 5; pourquoi ces proof ?
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}
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>
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)
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>
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/>
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>
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;
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