% % This document was generated using % w2LaTeX % Bug Reports: jgarmend@cyberspace.org % \documentstyle[a4]{article} \parindent = 0 pt \oddsidemargin0cm \evensidemargin0cm \hoffset18pt \textwidth434pt \vsize=572pt \font\mathex=cmex10 \font\pzrm=cmr10 \pagestyle{myheadings} \begin{document} \par % \normalsize \pzrm \pzrm \normalsize \pzrm \par \par % \normalsize \pzrm \begin{center} {% \bf \LARGE \bf Word2\LaTeX\ \par }% \end{center} \par % \normalsize \pzrm \begin{center} {% \bf \Large \bf Traducteur de Formats de Texte. \par \par }% \end{center} \par % \normalsize \pzrm \begin{center} Javier Garmendia, \par ES2I pour le: \par Centre International de Rencontres Math\'ematiques, \par Parc Scientifique de Luminy (Marseille). \par \par 14 Juillet 1994. \par \par \end{center} \par % \normalsize \pzrm \begin{center} Ce document a \'et\'e\ r\'edig\'e\ sous Word\copyright , et traduit en \LaTeX\ en utilisant Word2\LaTeX . \par \end{center} \par % \normalsize \pzrm \begin{center} {% \bf Abstract \par }% \par % \end{center} \par % \normalsize \pzrm \parindent = 18 pt \leftskip = 18 pt \rightskip = 36 pt Word2\LaTeX\ est un outil de conversion de formats descripteurs de texte, permettant de traduire un document r\'edig\'e\ sous certaines versions de Word\copyright \ pour obtenir du code \LaTeX . Le but premier \'etant de convertir des documents issus du traitement de texte Word\copyright , le document source pour Word2\LaTeX\ sera sous l'un des formats de sortie de ce logiciel. En l'occurence, et pour faciliter la portabilit\'e, en RTF (Rich Text Format), un format propri\'etaire de Microsoft\copyright . \par \leftskip = 18 pt \rightskip = 36 pt \parindent = 18 pt Word2\LaTeX\ n'utilise pas les fonctions cr\'e\'ees par Paul Dubois pour r\'ealiser des lecteurs de RTF. Ceci pr\'esente en partie l'avantage d'avoir une reconnaissance propre du document d'origine. Il est constitu\'e\ d'un seul programme ex\'ecutable, sans feuilles de style, sans librairies \`a\ installer. Le but premier de Word2\LaTeX\ est de permettre la conversion de documents contenant des param\`etres de pr\'esentation et de mise en page, mais aussi de formules math\'ematiques, et de tableaux. \par \leftskip = 18 pt \rightskip = 36 pt \parindent = 18 pt \leftskip = 0 pt \rightskip = 0 pt \parindent = 0 pt \par % \normalsize \pzrm \parindent = 18 pt \leftskip = 18 pt \rightskip = 36 pt Ce document pr\'esente les principales fonctionalit\'es de Word2\LaTeX , et indique comment l'obtenir et l'installer. \par \leftskip = 18 pt \rightskip = 36 pt \parindent = 18 pt \leftskip = 0 pt \rightskip = 0 pt \parindent = 0 pt \par % \normalsize \pzrm \parindent = 18 pt \newpage {% \bf \Large \bf 1. Introduction \par \parindent = 18 pt }% \parindent = 0 pt \par % \normalsize \pzrm \parindent = 18 pt {% \bf \Large \bf \hspace{36pt} \par \parindent = 18 pt }% \parindent = 0 pt \par % \normalsize \pzrm \parindent = 18 pt Ce document d\'ecrit le traducteur de RTF vers du \LaTeX . Il a \'et\'e\ \'ecrit en C. Cependant l'analyse grammaticale a \'et\'e\ r\'ealis\'ee en utilisant l'excellent g\'en\'erateur de compilateurs du GNU: Bison \par \parindent = 18 pt \parindent = 0 pt \par % \normalsize \pzrm \parindent = 18 pt Ce traducteur: \par \parindent = 18 pt \hspace{36pt} \par \parindent = 18 pt \parindent = 0 pt \par % \normalsize \pzrm \parindent = 18 pt $\bullet $\ Permet de traduire tout ce qui est texte 'simple': caract\`eres en gras, italique, soulign\'e, caract\`eres sp\'eciaux de la police Symbol... \par \parindent = 18 pt \parindent = 0 pt \par % \normalsize \pzrm \parindent = 18 pt \par % \parindent = 18 pt \parindent = 0 pt \par % \normalsize \pzrm \parindent = 18 pt $\bullet $\ Conserve le plus pr\'ecisemment possible la mise en page: Largeur de la colonne de texte, justification, texte \`a\ droite, centr\'e, taille des tabulations et des retraits. \par \parindent = 18 pt \parindent = 0 pt \par % \normalsize \pzrm \parindent = 18 pt \par % \parindent = 18 pt \parindent = 0 pt \par % \normalsize \pzrm \parindent = 18 pt $\bullet $\ Traduit les formules math\'ematiques, aussi bien \`a\ partir du format math\'ematique de Word sous PC, que celui de Word sous Macintosh. En effet, le codage des formules math\'ematiques ne se fait pas de la m\^eme fa\c{c}on sous les deux environnements. \par \parindent = 18 pt \parindent = 0 pt \par % \normalsize \pzrm \parindent = 18 pt \par % \parindent = 18 pt \parindent = 0 pt \par % \normalsize \pzrm \parindent = 18 pt $\bullet $\ Traduit le plus pr\'ecisemment possible les caract\`eres accentu\'es, et caract\`eres sp\'eciaux pour leur \'equivalent ISO-LATIN-1. (\'e\`a\`e\^A\ \S \"o\ae \^A\^e\copyright {\cal Sun}@) \par \parindent = 18 pt \parindent = 0 pt \par % \normalsize \pzrm \parindent = 18 pt \par % \parindent = 18 pt \parindent = 0 pt \par % \normalsize \pzrm \parindent = 18 pt $\bullet $\ Conserve la structure des tableaux, mais ne les encadre pas. Ce point sera \'eventuellement am\'elior\'e\ dans des versions futures. \par \parindent = 18 pt \parindent = 0 pt \par % \normalsize \pzrm \parindent = 18 pt \par % \parindent = 18 pt $\bullet $\ G\`ere la taille des polices de caract\`eres, autant que possible. \par \parindent = 18 pt \par \parindent = 18 pt \parindent = 0 pt \par % \normalsize \pzrm \parindent = 18 pt $\bullet $\ Pour all\'eger la distribution et faciliter le fonctionnement, le programme par d\'efaut traduit toute police du type Times en CMR et celles de type Helvetica, Courier en environnement 'typewriter'. La Section XYZ d\'ecrit l'installation de nouvelles polices. \par \parindent = 18 pt \parindent = 0 pt \par % \normalsize \pzrm \parindent = 18 pt \par % \parindent = 18 pt \parindent = 0 pt \par % \normalsize \pzrm \parindent = 18 pt $\bullet $\ Poss\`ede de nombreuses limitations dues au nombre \'etonant de versions existantes de RTF. Ce point est consid\'er\'e\ dans la S\'ection 2. \par \parindent = 18 pt \parindent = 0 pt \par % \normalsize \pzrm \parindent = 18 pt \par % \parindent = 18 pt \parindent = 0 pt \par % \normalsize \pzrm \parindent = 18 pt $\bullet $\ Peut \'evoluer (et j'esp\`ere qu'il le fera) facilement, gr\^ace \`a\ la structure gramaticale adopt\'ee. Les points restant en suspens sont d\'etaill\'es dans la Section XYZ. \par \parindent = 18 pt \parindent = 0 pt \par % \normalsize \pzrm \parindent = 18 pt \hspace{36pt} \par \parindent = 18 pt \hspace{36pt} \par \parindent = 18 pt \hspace{36pt} \par \parindent = 18 pt \parindent = 0 pt \par % \normalsize \pzrm \parindent = 18 pt {% \bf \Large \bf 2. Le Format d'Origine: Rich Text Format.}% \par % \parindent = 18 pt \parindent = 0 pt \par % \normalsize \pzrm \parindent = 18 pt \hspace{36pt} \par \parindent = 18 pt \parindent = 0 pt \par % \normalsize \pzrm \parindent = 18 pt Word2\LaTeX\ a \'et\'e\ r\'ealis\'e\ sous la norme RTF publi\'ee par Microsoft, pour la version 6.0 et suivantes de son logiciel de traitement de textes: Word. Cependant, les exemples et tests r\'ealis\'es lors du d\'eveloppement de Word2\LaTeX\ sont issus des versions 2.0 pour PC, et 5.1 pour Macintosh. Ceci nous a permis, en particulier, de d\'etecter des incompatibilit\'es entre les versions pr\'ec\'edentes du format RTF. \par \parindent = 18 pt \parindent = 0 pt \par % \normalsize \pzrm \parindent = 18 pt Notons aussi que RTF est un format qui n'est pas uniquement g\'en\'er\'e\ par Word, mais aussi par d'autres traitements de texte fonctionnant sous diff\'erents environnements. L'avantage commun avec \LaTeX\ de la codification ASCII 7 bits permet une traduction avec Word2\LaTeX\ sous un environnement quelconque. \par \parindent = 18 pt \parindent = 0 pt \par % \normalsize \pzrm \parindent = 18 pt Seule limitation: les formules. La norme RTF 1.23 ne consid\`ere les formules qu'en tant que 'champs' ou 'fields' externes et propres \`a\ chaque traitement de texte. Il existe des sp\'ecifications correspondant aux {% \it fields}% \ pr\'esents dans Word 6.0. Le codage au sein des versions ant\'erieures de Word ayant \'et\'e\ diff\'erent, il est probable que certains documents ne puissent pas \^etre traduits de mani\`ere satisfaisante. \par \parindent = 18 pt \parindent = 0 pt \par % \normalsize \pzrm \parindent = 18 pt Voici un exemple des commandes RTF permettant d'\'ecrire l'int\'egrale de sin(x) entre 0 et 1: \par \parindent = 18 pt $\bullet $\ Version Macintosh 5.1: \par \parindent = 18 pt \parindent = 0 pt \par % \normalsize \pzrm \par % \normalsize \pzrm \parindent = 18 pt $\bullet $\ Version PC 2.0: \par \parindent = 18 pt \parindent = 0 pt \par % \normalsize \pzrm \par % \normalsize \pzrm \parindent = 18 pt $\bullet $\ Dans les Sp\'ecifications: \par \parindent = 18 pt \hspace{36pt} \par \parindent = 18 pt \parindent = 0 pt \par % \normalsize \pzrm \parindent = 18 pt Nous ne rentrerons pas dans le d\'etail des absurdit\'es et incorrections admises dans ce langage de description. Nous voulons simplement signaler que nous avons fait de notre mieux pour pouvoir relire les documents r\'ealis\'es ant\'erieurement \`a\ la version 6.0. \par \parindent = 18 pt \parindent = 0 pt \par % \normalsize \pzrm \parindent = 18 pt \hspace{36pt} \par \parindent = 18 pt \hspace{36pt} \par \parindent = 18 pt \hspace{36pt} \par \parindent = 18 pt \parindent = 0 pt \par % \normalsize \pzrm \parindent = 18 pt {% \bf \Large \bf 3. Mat\'eriel N\'ec\'essaire;\ Installation}% {% \Large \par \parindent = 18 pt }% {% \bf \Large \bf \hspace{36pt} \par \parindent = 18 pt }% \parindent = 0 pt \par % \normalsize \pzrm \parindent = 18 pt Tout ce dont vous avez besoin pour installer et faire fonctionner Word2\LaTeX\ est un ordinateur avec un compilateur de langage C. En ce qui concerne Word2\LaTeX , vous n'avez m\^eme pas besoin d'avoir Word, ni m\^eme \LaTeX ! Les librairies de base (stdio.h, stdlib.h, string.h et malloc.h) devraient suffir pour la compilation de la version 1.0 de Word2\LaTeX . \par \parindent = 18 pt \parindent = 0 pt \par % \normalsize \pzrm \parindent = 18 pt D\'etarez, d\'ecompressez, d\'ezipez en fonction de l''environnement dans lequel vous vous trouvez, et compilez le fichier rtf.tab.c. \par \parindent = 18 pt \parindent = 0 pt \par % \normalsize \pzrm \parindent = 18 pt Sous Unix, tapez: \par \parindent = 18 pt \hspace{36pt}cc rtf.tab.c -o w2\LaTeX\ \par \parindent = 18 pt ou mieux: \par \parindent = 18 pt \hspace{36pt}gcc rtf.tab.c -o w2\LaTeX\ \par \parindent = 18 pt \parindent = 0 pt \par % \normalsize \pzrm \parindent = 18 pt Vous n'avez pas besoin de Make, vous pouvez mettre l'ex\'ecutable o\`u\ vous voudrez. (Oui! en ce qui me concerne, vous pouvez le mettre dans /tmp !). \par \parindent = 18 pt \parindent = 0 pt \par % \normalsize \pzrm \parindent = 18 pt \hspace{36pt} \par \parindent = 18 pt Le programme a \'et\'e\ test\'e\ sur Sun Solaris, SGI, IBM RS-6000 (AIX), Linux, DOS, et System 7. \par \parindent = 18 pt \hspace{36pt} \par \parindent = 18 pt \parindent = 0 pt \par % \normalsize \pzrm \parindent = 18 pt {% \bf \Large \bf \hspace{36pt} \par \parindent = 18 pt 4. Utilisation de Word2\LaTeX\ \par \parindent = 18 pt }% \parindent = 0 pt \par % \normalsize \pzrm \parindent = 18 pt \hspace{36pt} \par \parindent = 18 pt Syntaxe: \par \parindent = 18 pt \hspace{36pt}\% w2\LaTeX\ $<$inputfile[.rtf]$>$ [-uglyframes] \par \parindent = 18 pt \hspace{36pt} \par \parindent = 18 pt \parindent = 0 pt \par % \normalsize \pzrm \parindent = 18 pt Dans cette premi\`ere version du programme, il n'y a qu'une option, qui sera d\'ecrite plus tard. Le fichier d'entr\'ee doit \^etre au format RTF (obtenu en sauvegardant sous Word avec l'option du menu: Save As...). Si tout se passe bien (et m\^eme s'il y a des erreurs), Word2\LaTeX\ g\'en\`ere un fichier \LaTeX\ appel\'e\ {% \it inputfile}% .tex. \par \parindent = 18 pt \parindent = 0 pt \par % \normalsize \pzrm \parindent = 18 pt \hspace{36pt} \par \parindent = 18 pt \parindent = 0 pt \par % \normalsize \pzrm \parindent = 18 pt Ce fichier de sortie poss\`ede une structure \LaTeX\ standard: le "documentstyle" est par d\'efaut 'report', et la taille de la page imprim\'ee A4. Dans des versions succ\'essives, on tachera de param\'etrer ceci. \par \parindent = 18 pt Les dimensions des marges et des tabulations par d\'efaut (qui sont fonction du fichier RTF d'origine), sont r\'egl\'es avant la directive "begin\{document\}". \par \parindent = 18 pt \parindent = 0 pt \par % \normalsize \pzrm \parindent = 18 pt Un inconv\'enient majeur des traducteurs automatiques (et celui-ci n'est sans doute pas une exception \`a\ la r\`egle), c'est qu'ils ne traduisent correctement, et dans le meilleur des cas que 95\% des donn\'ees). Il faut donc en g\'en\'eral relire le fichier \LaTeX\ g\'en\'er\'e. Dans le meilleur des cas (o\`u\ aucune erreur ne s'est produite lors de la traduction), il faut quand m\^eme que le r\'esultat soit relativement lisible. Pour ce faire, nous avons d\'ecid\'e\ de placer le plus de "retours \`a\ la lgne" que possible. Pour ne pas casser la structure du fichier \LaTeX , de nombreuses lignes se terminent par des "\%", ce qui fait que \LaTeX\ ignore le reste de la ligne y compris le retour chariot. \par \parindent = 18 pt \parindent = 0 pt \par % \normalsize \pzrm \parindent = 18 pt \hspace{36pt} \par \parindent = 18 pt \hspace{36pt} \par \parindent = 18 pt \parindent = 0 pt \par % \normalsize \pzrm \parindent = 18 pt {% \bf \Large \bf 5. Performances et Limitations de Word2\LaTeX . \par \parindent = 18 pt }% \parindent = 0 pt \par % \normalsize \pzrm \parindent = 18 pt \hspace{36pt} \par \parindent = 18 pt \parindent = 0 pt \par % \normalsize \pzrm \parindent = 18 pt Dans la version 1.0 (celle qui acompagne ce document), l'int\'egralit\'e\ du texte est traduit. Les symboles (et en particulier ceux de la police Symbol) sont traduits par leur homologue \LaTeX\ (les symboles AMS ne sont pas support\'es actuellement), ou par un symbole voisin dans les cas d\'efavorables. Certains symboles sont n\'eanmoins intraduisibles. Ils seront repr\'esent\'es dans le document \LaTeX\ par un @. La pr\'esence de ce symbole peut donc signifier trois choses: \par \parindent = 18 pt \parindent = 0 pt \par % \normalsize \pzrm \parindent = 18 pt $\bullet $\ Il y avait un @ dans le document d'origine. \par \parindent = 18 pt $\bullet $\ Dans le document source se trouve un symbole non repr\'esent\'e\ \par \parindent = 18 pt $\bullet $\ Il y a eu une erreur de traduction d'un symbole. \par \parindent = 18 pt \par \parindent = 18 pt \parindent = 0 pt \par % \normalsize \pzrm \parindent = 18 pt Les caract\'eristiques du texte seront maintenues en ce qui concerne le texte en {% \bf Gras}% , en {% \it Italique}% , ou {% \underline {Soulign\'e}% }% . Notez par contre le mauvais r\'esultat d'un fragment de texte trop grand en soulign\'e. \LaTeX\ le fera d\'eborder sur les marges. Remarquons qu'il ne s'agit pas l\`a\ d'un d\'efaut du traducteur, mais d'une caract\'eristique de \LaTeX , dont le principe est qu'aucun texte ne doit \^etre soulign\'e. Lors de la r\'ealisation du traducteur Word2\LaTeX , nous avions pens\'e\ \`a\ permettre la d\'ecoupe des phrases soulign\'ees en mots isol\'es. Le r\'esultat \'etant des plus horribles, nous l'avons abandonn\'e\ de suite. \par \parindent = 18 pt \parindent = 0 pt \par % \normalsize \pzrm \parindent = 67 pt \leftskip = 107 pt \rightskip = -35 pt Les marges seront respect\'ees, dans la limite des diff\'erences entre les polices Word et \LaTeX . Et les retraits faits dans le corps du texte seront traduits et respect\'es. Ce paragraphe en est un exemple. Les tabulations et retraits des marges ont \'et\'e\ modifi\'es par rapport au paragraphe pr\'ec\'edent. Observez le r\'esultat. \par \leftskip = 107 pt \rightskip = -35 pt \parindent = 67 pt \leftskip = 0 pt \rightskip = 0 pt \parindent = 0 pt \par % \normalsize \pzrm \parindent = 18 pt \hspace{36pt} \par \parindent = 18 pt \parindent = 0 pt \par % \normalsize \pzrm \parindent = 18 pt Les formules math\'ematiques seront reprises aussi. Il faut noter que la traduction des formules se fait uniquement si celles-ci ont \'et\'e\ r\'ealis\'e\'es en utilisant les commandes 'Ins\'erer ... Objet ... Formule'. Le format g\'en\'er\'e\ par l'\'editeur d'\'equations est propri\'et\'e\ de Microsoft, et \`a\ notre connaissance, il n'a pas \'et\'e\ rendu publique. \par \parindent = 18 pt \parindent = 0 pt \par % \normalsize \pzrm \parindent = 18 pt Les tableaux sont traduits eux aussi, mais \'etant donn\'e\ le codage \'etrange des tableaux en RTF, le moyen utilis\'e\ est de les transformer en une suite de "minipages" juxtapos\'ees. En effet, sous Word, il peut y avoir plusieurs paragraphes \`a\ l'int\'erieur d'un tableau, de fa\c{c}on tout \`a\ fait naturelle. Ceci n'est pas permis en principe par \LaTeX . Pour passer outre, nous avons d\'ecid\'e\ d'int\'egrer la structure de minipages. De cette fa\c{c}on, on garde la plus grande ressemblance structurelle avec le document d'origine. \par \parindent = 18 pt \parindent = 0 pt \par % \normalsize \pzrm \parindent = 18 pt Le probl\`eme se pose pour les tableaux encadr\'es. Les minipages n'ayant pas toutes les m\^emes dimensions, le r\'esultat peut \^etre relativement affreux. Par d\'efaut, les tableaux n'auront aucun cadre. Si vous sp\'ecifiez dans la ligne de commande l'option {% \it -uglyframes}% , les minipages seront encadr\'ees. On esp\`ere trouver une solution pour la gestion des tableaux dans les versions succ\'essives. \par \parindent = 18 pt \parindent = 0 pt \par % \normalsize \pzrm \parindent = 18 pt \hspace{36pt} \par \parindent = 18 pt \hspace{36pt} \par \parindent = 18 pt \parindent = 0 pt \par % \normalsize \pzrm \parindent = 18 pt {% \bf \Large \bf 6. Divers \par \parindent = 18 pt }% \parindent = 0 pt \par % \normalsize \pzrm \parindent = 18 pt {% \bf \hspace{36pt} \par \parindent = 18 pt \hspace{36pt} \par \parindent = 18 pt }% \parindent = 0 pt \par % \normalsize \pzrm \parindent = 18 pt {% \bf \Large \bf 7. Remerciements \par \parindent = 18 pt }% \parindent = 0 pt \par % \normalsize \pzrm \parindent = 18 pt {% \bf \hspace{36pt} \par \parindent = 18 pt \hspace{36pt} \par \parindent = 18 pt }% \parindent = 0 pt \par % \normalsize \pzrm \parindent = 18 pt {% \bf \Large \bf 8. Copyright \par \parindent = 18 pt }% \parindent = 0 pt \par % \normalsize \pzrm \parindent = 18 pt {% \bf \hspace{36pt} \par \parindent = 18 pt \hspace{36pt} \par \parindent = 18 pt }% \parindent = 0 pt \par % \normalsize \pzrm \parindent = 18 pt {% \bf \Large \bf 9. Index \par \parindent = 18 pt }% \parindent = 0 pt \par % \normalsize \pzrm \parindent = 18 pt {% \bf \hspace{36pt} \par \parindent = 18 pt \par \parindent = 18 pt }% \par % \parindent = 18 pt \end{document}