summaryrefslogtreecommitdiff
path: root/support/xlatex
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /support/xlatex
Initial commit
Diffstat (limited to 'support/xlatex')
-rw-r--r--support/xlatex/Imakefile39
-rw-r--r--support/xlatex/Imakefile.irix38
-rw-r--r--support/xlatex/Imakefile.ok39
-rw-r--r--support/xlatex/NOUVEAUTES25
-rw-r--r--support/xlatex/README53
-rw-r--r--support/xlatex/Xlatex.ad185
-rw-r--r--support/xlatex/Xlatex.ad.english184
-rw-r--r--support/xlatex/Xlatex.ad.french185
-rw-r--r--support/xlatex/icone.h51
-rw-r--r--support/xlatex/patchlevel.h1
-rw-r--r--support/xlatex/xlatex.c1935
-rw-r--r--support/xlatex/xlatex.dessiner20
-rw-r--r--support/xlatex/xlatex.dvips20
-rw-r--r--support/xlatex/xlatex.editer20
-rw-r--r--support/xlatex/xlatex.faconner17
-rw-r--r--support/xlatex/xlatex.imprimer21
-rw-r--r--support/xlatex/xlatex.man480
-rw-r--r--support/xlatex/xlatex.man.english364
-rw-r--r--support/xlatex/xlatex.man.french480
-rw-r--r--support/xlatex/xlatex.quitter19
-rw-r--r--support/xlatex/xlatex.statut20
-rw-r--r--support/xlatex/xlatex.visionner20
22 files changed, 4216 insertions, 0 deletions
diff --git a/support/xlatex/Imakefile b/support/xlatex/Imakefile
new file mode 100644
index 0000000000..768736d796
--- /dev/null
+++ b/support/xlatex/Imakefile
@@ -0,0 +1,39 @@
+#
+# Imakefile for xlatex
+#
+
+#ifdef BandAidCompiler
+#include BandAidCompiler
+#endif
+
+# Problem with the test below :
+# The DEFINES= -DIRIX must be set manually in the Makefile for IRIX
+# #if (OSName == IRIX)
+# DEFINES= -DIRIX
+# #endif
+
+#ifdef HPArchitecture
+DEFINES= -DHPUX
+#endif
+
+#if OSMajorVersion == 5
+CC=gcc
+DEFINES= -DBSD_COMP
+#endif
+
+DEPLIBS = XawClientDepLibs
+LOCAL_LIBRARIES = XawClientLibs
+
+SRCS = xlatex.c
+OBJS = xlatex.o
+
+XLATEX_BITMAPS = xlatex.editer xlatex.visionner xlatex.faconner \
+ xlatex.imprimer xlatex.statut xlatex.quitter \
+ xlatex.dvips xlatex.dessiner
+
+ComplexProgramTarget(xlatex)
+BuildIncludes($(XLATEX_BITMAPS),bitmaps,..)
+InstallAppDefaults(Xlatex)
+INSTALLFLAGS = $(INSTINCFLAGS)
+InstallMultiple($(XLATEX_BITMAPS),$(INCDIR)/bitmaps)
+
diff --git a/support/xlatex/Imakefile.irix b/support/xlatex/Imakefile.irix
new file mode 100644
index 0000000000..5f64cbae9b
--- /dev/null
+++ b/support/xlatex/Imakefile.irix
@@ -0,0 +1,38 @@
+#
+# Imakefile for xlatex
+#
+
+#ifdef BandAidCompiler
+#include BandAidCompiler
+#endif
+
+# Problem with the test below :
+# The DEFINES= -DIRIX must be set manually in the Makefile for IRIX
+# #if (OSName == IRIX)
+DEFINES= -DIRIX
+# #endif
+
+#ifdef HPArchitecture
+DEFINES= -DHPUX
+#endif
+
+#if OSMajorVersion == 5
+DEFINES= -D BSD_COMP
+#endif
+
+DEPLIBS = XawClientDepLibs
+LOCAL_LIBRARIES = XawClientLibs
+
+SRCS = xlatex.c
+OBJS = xlatex.o
+
+XLATEX_BITMAPS = xlatex.editer xlatex.visionner xlatex.faconner \
+ xlatex.imprimer xlatex.statut xlatex.quitter \
+ xlatex.dvips xlatex.dessiner
+
+ComplexProgramTarget(xlatex)
+BuildIncludes($(XLATEX_BITMAPS),bitmaps,..)
+InstallAppDefaults(Xlatex)
+INSTALLFLAGS = $(INSTINCFLAGS)
+InstallMultiple($(XLATEX_BITMAPS),$(INCDIR)/bitmaps)
+
diff --git a/support/xlatex/Imakefile.ok b/support/xlatex/Imakefile.ok
new file mode 100644
index 0000000000..768736d796
--- /dev/null
+++ b/support/xlatex/Imakefile.ok
@@ -0,0 +1,39 @@
+#
+# Imakefile for xlatex
+#
+
+#ifdef BandAidCompiler
+#include BandAidCompiler
+#endif
+
+# Problem with the test below :
+# The DEFINES= -DIRIX must be set manually in the Makefile for IRIX
+# #if (OSName == IRIX)
+# DEFINES= -DIRIX
+# #endif
+
+#ifdef HPArchitecture
+DEFINES= -DHPUX
+#endif
+
+#if OSMajorVersion == 5
+CC=gcc
+DEFINES= -DBSD_COMP
+#endif
+
+DEPLIBS = XawClientDepLibs
+LOCAL_LIBRARIES = XawClientLibs
+
+SRCS = xlatex.c
+OBJS = xlatex.o
+
+XLATEX_BITMAPS = xlatex.editer xlatex.visionner xlatex.faconner \
+ xlatex.imprimer xlatex.statut xlatex.quitter \
+ xlatex.dvips xlatex.dessiner
+
+ComplexProgramTarget(xlatex)
+BuildIncludes($(XLATEX_BITMAPS),bitmaps,..)
+InstallAppDefaults(Xlatex)
+INSTALLFLAGS = $(INSTINCFLAGS)
+InstallMultiple($(XLATEX_BITMAPS),$(INCDIR)/bitmaps)
+
diff --git a/support/xlatex/NOUVEAUTES b/support/xlatex/NOUVEAUTES
new file mode 100644
index 0000000000..f0061bd9c3
--- /dev/null
+++ b/support/xlatex/NOUVEAUTES
@@ -0,0 +1,25 @@
+24 aout 1994
+Xlatex 3.3c vient de sortir :
+ - un nouveau bouton pour modifier le nom du pilote est disponible,
+ la valeur par defaut en est dvips (pour autoriser l'appel de dvips2e)
+ - remplacement de texx par xdvi2e dans les ressources
+ - nouveau bouton dans le formulaire d'impression pour le nombre de copies
+
+17 mai 1994
+Xlatex 3.3b vient de sortir :
+ - simplifications et adaptations mineures
+ - adaptations pour differentes plateformes ; test positifs sur :
+ Sun3, Sun4 sous Solaris 2 et SunOS4.1, HP 7xx, IBM RS 6000 ,
+ SGI, DEC-alpha sous OSF/1, DEC Stations sous Ultrix
+ contributions de B. Decouty (IRISA), E. Picheral (CRI U. Rennes 1)
+
+3 decembre 1992
+Xlatex 3.3a vient de sortir :
+
+ - suppression des ressources inputFont, outputFont, commandFont, labelFont
+ et genericFont
+ - ajout du bouton DESSINER
+ - selection visionneur par defaut (dans les ressources visionneurs
+ ou visionneursPS, preceder le visionneur choisi par '*'
+ - anomalies mineures
+ - adaptation HP-UX par Pierre DAVID (Jussieu)
diff --git a/support/xlatex/README b/support/xlatex/README
new file mode 100644
index 0000000000..9169ab7561
--- /dev/null
+++ b/support/xlatex/README
@@ -0,0 +1,53 @@
+*** Xlatex 3.3c INSTALLATION NOTES ***
+
+ Xlatex is intended to facilitate the use of text processing commands
+ around TeX :
+ - entering text editor session
+ - submitting a '.tex' document to LaTeX or TeX processor
+ - previewing the 'dvi' or 'ps' file
+ - printing document to PostScript printer (after converting it from
+ dvi to postscript)
+ - examining printer queue
+ - calling a graphic editor
+
+ Most of Xlatex environment is customizable (see manual) except for printing
+ the document which uses the dvips arguments.
+
+1. French and English customizations are available. If you choose english:
+ cp Xlatex.ad.english Xlatex.ad
+ cp xlatex.man.english xlatex.man
+
+2. Check Xlatex.ad and decide wether or not you want bitmap images
+ for command buttons. The default is to have bitmaps.
+
+3. If you don't have xmkmf, we provide the Makefile.sun template file
+ for sun 4 sunos 4.1.1 X11R6. It can be edited and changed for your own
+ environment. In particular, check for the make variables :
+ PROJECTROOT
+ USRLIBDIR
+ BINDIR
+ INCROOT
+ MANPATH
+ MANSUFFIX
+
+4. If xmkmf is available, generate the Makefile:
+ xmkmf
+
+5. Compile and install :
+ make
+ make install
+ make install.man
+
+
+Please send bugs and comments to:
+
+ dragone@iu-vannes.fr
+
+ Dragone Mario
+ IUT Vannes
+ rue Montaigne
+ BP 1104
+ 56014 Vannes
+ France
+
+ 97.46.31.06
diff --git a/support/xlatex/Xlatex.ad b/support/xlatex/Xlatex.ad
new file mode 100644
index 0000000000..22ad5e2971
--- /dev/null
+++ b/support/xlatex/Xlatex.ad
@@ -0,0 +1,185 @@
+! Polices de caracteres
+! ---------------------
+Xlatex*Text*Font: -adobe-courier-bold-r-normal--12-*
+Xlatex*interaction*Font: 9x15bold
+Xlatex*interaction.height: 300
+Xlatex*Command*Font: -adobe-helvetica-bold-r-normal--14-*
+Xlatex*Label*Font: -adobe-courier-medium-o-normal--12-*
+!
+! Environnement de travail
+! ------------------------
+Xlatex.visionneurs: *xdvi xdvi2e
+Xlatex.visionneursPS: ghostview gs
+!
+! Specification de tous les libelles
+! ----------------------------------
+!
+Xlatex.form.Label.width: 100
+Xlatex*faconner.label: Façonner
+Xlatex*visionner.label: Visionner
+Xlatex*imprimer.label: Imprimer
+Xlatex*postscript.label: PostScript
+Xlatex*statut.label: Statut imp.
+Xlatex*editer.label: Editer
+Xlatex*quitter.label: Quitter
+!
+! Pour ne pas avoir de bitmap dans les boutons de commande, commenter
+! les ressources qui suivent
+!
+Xlatex*faconner.bitmap: xlatex.faconner
+Xlatex*visionner.bitmap: xlatex.visionner
+Xlatex*dessiner.bitmap: xlatex.dessiner
+Xlatex*postscript.bitmap: xlatex.dvips
+Xlatex*imprimer.bitmap: xlatex.imprimer
+Xlatex*editer.bitmap: xlatex.editer
+Xlatex*statut.bitmap: xlatex.statut
+Xlatex*quitter.bitmap: xlatex.quitter
+!
+!
+Xlatex*repertoireLab.label: Répertoire:
+Xlatex*dessinLab.label: Dessin:
+Xlatex*documentLab.label: Document:
+Xlatex*faconneurLab.label: Façonneur:
+Xlatex*visionneursLab.label: Visionneur:
+Xlatex*piloteLab.label: Pilote:
+Xlatex*editeurLab.label: Éditeur:
+Xlatex*impressionLab.label: Impression:
+Xlatex*imprimanteLab.label: Imprimante:
+Xlatex*toutesLab.label: toutes les pages
+Xlatex*deLab.label: de la page
+Xlatex*aLab.label: à
+Xlatex*ok.label: Ok
+Xlatex*annuler.label: Annuler
+Xlatex*copiesLab.label: copies
+!
+! Contraintes de placement
+! ------------------------
+!
+Xlatex*repertoireLab.fromVert: faconner
+Xlatex*repertoire.fromVert: faconner
+Xlatex*repertoire.fromHoriz: repertoireLab
+
+Xlatex*dessinLab.fromHoriz: repertoire
+Xlatex*dessinLab.fromVert: faconner
+Xlatex*dessin.fromVert: faconner
+Xlatex*dessin.fromHoriz: dessinLab
+
+Xlatex*documentLab.fromVert: repertoireLab
+Xlatex*document.fromVert: repertoireLab
+Xlatex*document.fromHoriz: documentLab
+
+Xlatex*visionneursLab.fromVert: repertoireLab
+Xlatex*visionneursLab.fromHoriz:document
+Xlatex*visionneurs.fromVert: repertoireLab
+Xlatex*visionneurs.fromHoriz: visionneursLab
+
+Xlatex*faconneurLab.fromVert: documentLab
+Xlatex*faconneur.fromVert: documentLab
+Xlatex*faconneur.fromHoriz: faconneurLab
+
+Xlatex*editeurLab.fromVert: documentLab
+Xlatex*editeurLab.fromHoriz: faconneur
+Xlatex*editeur.fromVert: documentLab
+Xlatex*editeur.fromHoriz: editeurLab
+
+Xlatex*piloteLab.fromVert: documentLab
+Xlatex*piloteLab.fromHoriz: editeur
+Xlatex*pilote.fromVert: documentLab
+Xlatex*pilote.fromHoriz: piloteLab
+
+Xlatex*interaction.fromVert: editeurLab
+
+Xlatex*impression.fromHoriz: impressionLab
+Xlatex*imprimanteLab.fromVert: impressionLab
+Xlatex*imprimante.fromVert: impressionLab
+Xlatex*imprimante.fromHoriz: imprimanteLab
+Xlatex*toutesTog.fromVert: imprimanteLab
+Xlatex*toutesLab.fromVert: imprimanteLab
+Xlatex*toutesLab.fromHoriz: toutesTog
+Xlatex*deTog.fromVert: toutesTog
+Xlatex*deLab.fromVert: toutesTog
+Xlatex*deLab.fromHoriz: deTog
+Xlatex*de.fromVert: toutesTog
+Xlatex*de.fromHoriz: deLab
+Xlatex*aLab.fromVert: toutesTog
+Xlatex*aLab.fromHoriz: de
+Xlatex*a.fromVert: toutesTog
+Xlatex*a.fromHoriz: aLab
+Xlatex*ok.fromVert: deTog
+Xlatex*annuler.fromVert: deTog
+Xlatex*annuler.fromHoriz: ok
+Xlatex*copiesLab.fromVert: deTog
+Xlatex*copiesLab.fromHoriz: annuler
+Xlatex*copies.fromVert: deTog
+Xlatex*copies.fromHoriz: copiesLab
+!
+! Accelerateurs
+! -------------
+Xlatex*input: true
+Xlatex.accelerators: #override\n\
+ Meta<Key>e: editer()\n\
+ Meta<Key>f: faconner()\n\
+ Meta<Key>d: dessiner()\n\
+ Meta<Key>l: faconner()\n\
+ Meta<Key>i: imprimer()\n\
+ Meta<Key>p: postscript()\n\
+ Meta<Key>q: quitter()\n\
+ Meta<Key>s: statut()\n\
+ Meta<Key>v: visionner()
+!
+! Autres ressources
+! -----------------
+Xlatex*top: chaintop
+Xlatex*right: chainleft
+Xlatex*left: chainleft
+Xlatex*bottom: chaintop
+
+Xlatex*pilote: dvips
+Xlatex*editeurAvecXterm: true
+Xlatex*editeur: emacs
+Xlatex*visionneurs.borderWidth: 0
+Xlatex*visionneurs.justify: left
+Xlatex*menuVisionneurs*justify: center
+Xlatex*Text.borderWidth: 2
+Xlatex*repertoire.insertPosition: 999999
+Xlatex*interaction.borderWidth: 1
+Xlatex*Background: #a5c0f2
+Xlatex*Text*Background: #ffe8d7
+Xlatex*Command*Background: #c8ebde
+Xlatex*interaction*Background: MintCream
+Xlatex*resizable: true
+Xlatex*Command.justify: center
+Xlatex*Text.topMargin: 0
+Xlatex*Text.bottomMargin: 0
+Xlatex*Text.resize: width
+Xlatex*Text*editType: edit
+Xlatex*Text*useStringInPlace: true
+Xlatex*Text*displayCaret: no
+Xlatex*Label.borderWidth: 0
+Xlatex*Label.justify: right
+Xlatex*Toggle.label:
+Xlatex*Toggle.shapeStyle: ellipse
+Xlatex*interaction.resize: never
+Xlatex*Text.translations: #override\n\
+ <FocusIn>: display-caret(on)\n\
+ <FocusOut>: display-caret(off)\n\
+ <EnterWindow>: Focaliser()\n\
+ <Key>Tab: ChampSuivant()\n\
+ <Key>Return: ChampSuivant()
+Xlatex*Toggle.translations: #replace\n\
+ <EnterWindow>: highlight(Always)\n\
+ <LeaveWindow>: unhighlight()\n\
+ <Btn1Down>,<Btn1Up>: set() notify()
+Xlatex*interaction.translations: #override\n\
+ <EnterWindow>: Focaliser(interaction)\n\
+ Ctrl<Key>C: end-of-file() newline() Control()\n\
+ Ctrl<Key>D: end-of-file() newline() Control()\n\
+ <Key>Delete: end-of-file() delete-previous-character() Delete() \n\
+ <Key>BackSpace: end-of-file() delete-previous-character() Delete() \n\
+ <Key>Return: end-of-file() newline() Send()\n\
+ <Key>: Insert() end-of-file() insert-char()
+Xlatex*interaction.scrollHorizontal: never
+Xlatex*interaction.scrollVertical: always
+Xlatex*interaction.autoFill: true
+Xlatex*interaction.wrap: never
+Xlatex*interaction.displayCaret: true
diff --git a/support/xlatex/Xlatex.ad.english b/support/xlatex/Xlatex.ad.english
new file mode 100644
index 0000000000..b7bedbcaed
--- /dev/null
+++ b/support/xlatex/Xlatex.ad.english
@@ -0,0 +1,184 @@
+!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+! Fonts
+! -----
+Xlatex.inputFont: -adobe-courier-bold-r-normal--12-*
+Xlatex.outputFont: 7x13
+Xlatex.commandFont: -adobe-helvetica-bold-r-normal--14-*
+Xlatex.labelFont: -adobe-courier-medium-o-normal--12-*
+!
+! Working environment
+! -------------------
+Xlatex.visionneurs: *xdvi xdvi2e
+Xlatex.visionneursPS: ghostview gs
+!
+! Labels
+! ------
+!
+Xlatex*faconner.label: Process
+Xlatex*visionner.label: View
+Xlatex*dessiner.label: Draw
+Xlatex*postscript.label: PostScript
+Xlatex*imprimer.label: Print
+Xlatex*statut.label: Status
+Xlatex*editer.label: Edit
+Xlatex*quitter.label: Quit
+!
+! To keep labels inside command buttons, comment the following resources
+!
+Xlatex*faconner.bitmap: xlatex.faconner
+Xlatex*visionner.bitmap: xlatex.visionner
+Xlatex*dessiner.bitmap: xlatex.dessiner
+Xlatex*postscript.bitmap: xlatex.dvips
+Xlatex*imprimer.bitmap: xlatex.imprimer
+Xlatex*editer.bitmap: xlatex.editer
+Xlatex*statut.bitmap: xlatex.statut
+Xlatex*quitter.bitmap: xlatex.quitter
+!
+!
+Xlatex*repertoireLab.label: Directory:
+Xlatex*dessinLab.label: Draw Processor:
+Xlatex*documentLab.label: Document:
+Xlatex*faconneurLab.label: Text Processor:
+Xlatex*visionneursLab.label: Previewer:
+Xlatex*editeurLab.label: Editor:
+Xlatex*piloteLab.label: Driver:
+Xlatex*impressionLab.label: Printing Command:
+Xlatex*imprimanteLab.label: Printer:
+Xlatex*toutesLab.label: all pages
+Xlatex*deLab.label: from page
+Xlatex*aLab.label: to
+Xlatex*ok.label: Ok
+Xlatex*annuler.label: Cancel
+Xlatex*copiesLab.label: copies
+!
+! Placement constraints
+! ------------------------
+!
+Xlatex*repertoireLab.fromVert: faconner
+Xlatex*repertoire.fromVert: faconner
+Xlatex*repertoire.fromHoriz: repertoireLab
+
+Xlatex*dessinLab.fromHoriz: repertoire
+Xlatex*dessinLab.fromVert: faconner
+Xlatex*dessin.fromVert: faconner
+Xlatex*dessin.fromHoriz: dessinLab
+
+Xlatex*documentLab.fromVert: repertoireLab
+Xlatex*document.fromVert: repertoireLab
+Xlatex*document.fromHoriz: documentLab
+
+Xlatex*visionneursLab.fromVert: repertoireLab
+Xlatex*visionneursLab.fromHoriz:document
+Xlatex*visionneurs.fromVert: repertoireLab
+Xlatex*visionneurs.fromHoriz: visionneursLab
+
+Xlatex*faconneurLab.fromVert: documentLab
+Xlatex*faconneur.fromVert: documentLab
+Xlatex*faconneur.fromHoriz: faconneurLab
+
+Xlatex*editeurLab.fromVert: documentLab
+Xlatex*editeurLab.fromHoriz: faconneur
+Xlatex*editeur.fromVert: documentLab
+Xlatex*editeur.fromHoriz: editeurLab
+
+Xlatex*piloteLab.fromVert: documentLab
+Xlatex*piloteLab.fromHoriz: editeur
+Xlatex*pilote.fromVert: documentLab
+Xlatex*pilote.fromHoriz: piloteLab
+
+Xlatex*interaction.fromVert: editeurLab
+
+Xlatex*impression.fromHoriz: impressionLab
+Xlatex*imprimanteLab.fromVert: impressionLab
+Xlatex*imprimante.fromVert: impressionLab
+Xlatex*imprimante.fromHoriz: imprimanteLab
+Xlatex*toutesTog.fromVert: imprimanteLab
+Xlatex*toutesLab.fromVert: imprimanteLab
+Xlatex*toutesLab.fromHoriz: toutesTog
+Xlatex*deTog.fromVert: toutesTog
+Xlatex*deLab.fromVert: toutesTog
+Xlatex*deLab.fromHoriz: deTog
+Xlatex*de.fromVert: toutesTog
+Xlatex*de.fromHoriz: deLab
+Xlatex*aLab.fromVert: toutesTog
+Xlatex*aLab.fromHoriz: de
+Xlatex*a.fromVert: toutesTog
+Xlatex*a.fromHoriz: aLab
+Xlatex*ok.fromVert: deTog
+Xlatex*annuler.fromVert: deTog
+Xlatex*annuler.fromHoriz: ok
+Xlatex*copiesLab.fromVert: deTog
+Xlatex*copiesLab.fromHoriz: annuler
+Xlatex*copies.fromVert: deTog
+Xlatex*copies.fromHoriz: copiesLab
+!
+! Accelerateurs
+! -------------
+Xlatex*input: true
+Xlatex.accelerators: #override\n\
+ Meta<Key>e: editer()\n\
+ Meta<Key>t: faconner()\n\
+ Meta<Key>l: faconner()\n\
+ Meta<Key>f: dessiner()\n\
+ Meta<Key>d: postscript()\n\
+ Meta<Key>p: imprimer()\n\
+ Meta<Key>q: quitter()\n\
+ Meta<Key>s: statut()\n\
+ Meta<Key>v: visionner()
+!
+! Autres ressources
+! -----------------
+Xlatex*top: chaintop
+Xlatex*right: chainleft
+Xlatex*left: chainleft
+Xlatex*bottom: chaintop
+
+Xlatex*pilote: dvips
+Xlatex*editeurAvecXterm: true
+Xlatex*editeur: emacs
+Xlatex*visionneurs.borderWidth: 0
+Xlatex*visionneurs.justify: left
+Xlatex*menuVisionneurs*justify: center
+Xlatex*Text.borderWidth: 2
+Xlatex*repertoire.insertPosition: 999999
+Xlatex*interaction.borderWidth: 1
+Xlatex*Background: #a5c0f2
+Xlatex*Text*Background: #ffe8d7
+Xlatex*Command*Background: #c8ebde
+Xlatex*interaction*Background: MintCream
+Xlatex*resizable: true
+Xlatex*Command.justify: center
+Xlatex*Text.topMargin: 0
+Xlatex*Text.bottomMargin: 0
+Xlatex*Text.resize: width
+Xlatex*Text*editType: edit
+Xlatex*Text*useStringInPlace: true
+Xlatex*Text*displayCaret: no
+Xlatex*Label.borderWidth: 0
+Xlatex*Label.justify: right
+Xlatex*Toggle.label:
+Xlatex*Toggle.shapeStyle: ellipse
+Xlatex*interaction.resize: never
+Xlatex*Text.translations: #override\n\
+ <FocusIn>: display-caret(on)\n\
+ <FocusOut>: display-caret(off)\n\
+ <EnterWindow>: Focaliser()\n\
+ <Key>Tab: ChampSuivant()\n\
+ <Key>Return: ChampSuivant()
+Xlatex*Toggle.translations: #replace\n\
+ <EnterWindow>: highlight(Always)\n\
+ <LeaveWindow>: unhighlight()\n\
+ <Btn1Down>,<Btn1Up>: set() notify()
+Xlatex*interaction.translations: #override\n\
+ <EnterWindow>: Focaliser(interaction)\n\
+ Ctrl<Key>C: end-of-file() newline() Control()\n\
+ Ctrl<Key>D: end-of-file() newline() Control()\n\
+ <Key>Delete: end-of-file() delete-previous-character() Delete() \n\
+ <Key>BackSpace: end-of-file() delete-previous-character() Delete() \n\
+ <Key>Return: end-of-file() newline() Send()\n\
+ <Key>: Insert() end-of-file() insert-char()
+Xlatex*interaction.scrollHorizontal: never
+Xlatex*interaction.scrollVertical: always
+Xlatex*interaction.autoFill: true
+Xlatex*interaction.wrap: never
+Xlatex*interaction.displayCaret: true
diff --git a/support/xlatex/Xlatex.ad.french b/support/xlatex/Xlatex.ad.french
new file mode 100644
index 0000000000..22ad5e2971
--- /dev/null
+++ b/support/xlatex/Xlatex.ad.french
@@ -0,0 +1,185 @@
+! Polices de caracteres
+! ---------------------
+Xlatex*Text*Font: -adobe-courier-bold-r-normal--12-*
+Xlatex*interaction*Font: 9x15bold
+Xlatex*interaction.height: 300
+Xlatex*Command*Font: -adobe-helvetica-bold-r-normal--14-*
+Xlatex*Label*Font: -adobe-courier-medium-o-normal--12-*
+!
+! Environnement de travail
+! ------------------------
+Xlatex.visionneurs: *xdvi xdvi2e
+Xlatex.visionneursPS: ghostview gs
+!
+! Specification de tous les libelles
+! ----------------------------------
+!
+Xlatex.form.Label.width: 100
+Xlatex*faconner.label: Façonner
+Xlatex*visionner.label: Visionner
+Xlatex*imprimer.label: Imprimer
+Xlatex*postscript.label: PostScript
+Xlatex*statut.label: Statut imp.
+Xlatex*editer.label: Editer
+Xlatex*quitter.label: Quitter
+!
+! Pour ne pas avoir de bitmap dans les boutons de commande, commenter
+! les ressources qui suivent
+!
+Xlatex*faconner.bitmap: xlatex.faconner
+Xlatex*visionner.bitmap: xlatex.visionner
+Xlatex*dessiner.bitmap: xlatex.dessiner
+Xlatex*postscript.bitmap: xlatex.dvips
+Xlatex*imprimer.bitmap: xlatex.imprimer
+Xlatex*editer.bitmap: xlatex.editer
+Xlatex*statut.bitmap: xlatex.statut
+Xlatex*quitter.bitmap: xlatex.quitter
+!
+!
+Xlatex*repertoireLab.label: Répertoire:
+Xlatex*dessinLab.label: Dessin:
+Xlatex*documentLab.label: Document:
+Xlatex*faconneurLab.label: Façonneur:
+Xlatex*visionneursLab.label: Visionneur:
+Xlatex*piloteLab.label: Pilote:
+Xlatex*editeurLab.label: Éditeur:
+Xlatex*impressionLab.label: Impression:
+Xlatex*imprimanteLab.label: Imprimante:
+Xlatex*toutesLab.label: toutes les pages
+Xlatex*deLab.label: de la page
+Xlatex*aLab.label: à
+Xlatex*ok.label: Ok
+Xlatex*annuler.label: Annuler
+Xlatex*copiesLab.label: copies
+!
+! Contraintes de placement
+! ------------------------
+!
+Xlatex*repertoireLab.fromVert: faconner
+Xlatex*repertoire.fromVert: faconner
+Xlatex*repertoire.fromHoriz: repertoireLab
+
+Xlatex*dessinLab.fromHoriz: repertoire
+Xlatex*dessinLab.fromVert: faconner
+Xlatex*dessin.fromVert: faconner
+Xlatex*dessin.fromHoriz: dessinLab
+
+Xlatex*documentLab.fromVert: repertoireLab
+Xlatex*document.fromVert: repertoireLab
+Xlatex*document.fromHoriz: documentLab
+
+Xlatex*visionneursLab.fromVert: repertoireLab
+Xlatex*visionneursLab.fromHoriz:document
+Xlatex*visionneurs.fromVert: repertoireLab
+Xlatex*visionneurs.fromHoriz: visionneursLab
+
+Xlatex*faconneurLab.fromVert: documentLab
+Xlatex*faconneur.fromVert: documentLab
+Xlatex*faconneur.fromHoriz: faconneurLab
+
+Xlatex*editeurLab.fromVert: documentLab
+Xlatex*editeurLab.fromHoriz: faconneur
+Xlatex*editeur.fromVert: documentLab
+Xlatex*editeur.fromHoriz: editeurLab
+
+Xlatex*piloteLab.fromVert: documentLab
+Xlatex*piloteLab.fromHoriz: editeur
+Xlatex*pilote.fromVert: documentLab
+Xlatex*pilote.fromHoriz: piloteLab
+
+Xlatex*interaction.fromVert: editeurLab
+
+Xlatex*impression.fromHoriz: impressionLab
+Xlatex*imprimanteLab.fromVert: impressionLab
+Xlatex*imprimante.fromVert: impressionLab
+Xlatex*imprimante.fromHoriz: imprimanteLab
+Xlatex*toutesTog.fromVert: imprimanteLab
+Xlatex*toutesLab.fromVert: imprimanteLab
+Xlatex*toutesLab.fromHoriz: toutesTog
+Xlatex*deTog.fromVert: toutesTog
+Xlatex*deLab.fromVert: toutesTog
+Xlatex*deLab.fromHoriz: deTog
+Xlatex*de.fromVert: toutesTog
+Xlatex*de.fromHoriz: deLab
+Xlatex*aLab.fromVert: toutesTog
+Xlatex*aLab.fromHoriz: de
+Xlatex*a.fromVert: toutesTog
+Xlatex*a.fromHoriz: aLab
+Xlatex*ok.fromVert: deTog
+Xlatex*annuler.fromVert: deTog
+Xlatex*annuler.fromHoriz: ok
+Xlatex*copiesLab.fromVert: deTog
+Xlatex*copiesLab.fromHoriz: annuler
+Xlatex*copies.fromVert: deTog
+Xlatex*copies.fromHoriz: copiesLab
+!
+! Accelerateurs
+! -------------
+Xlatex*input: true
+Xlatex.accelerators: #override\n\
+ Meta<Key>e: editer()\n\
+ Meta<Key>f: faconner()\n\
+ Meta<Key>d: dessiner()\n\
+ Meta<Key>l: faconner()\n\
+ Meta<Key>i: imprimer()\n\
+ Meta<Key>p: postscript()\n\
+ Meta<Key>q: quitter()\n\
+ Meta<Key>s: statut()\n\
+ Meta<Key>v: visionner()
+!
+! Autres ressources
+! -----------------
+Xlatex*top: chaintop
+Xlatex*right: chainleft
+Xlatex*left: chainleft
+Xlatex*bottom: chaintop
+
+Xlatex*pilote: dvips
+Xlatex*editeurAvecXterm: true
+Xlatex*editeur: emacs
+Xlatex*visionneurs.borderWidth: 0
+Xlatex*visionneurs.justify: left
+Xlatex*menuVisionneurs*justify: center
+Xlatex*Text.borderWidth: 2
+Xlatex*repertoire.insertPosition: 999999
+Xlatex*interaction.borderWidth: 1
+Xlatex*Background: #a5c0f2
+Xlatex*Text*Background: #ffe8d7
+Xlatex*Command*Background: #c8ebde
+Xlatex*interaction*Background: MintCream
+Xlatex*resizable: true
+Xlatex*Command.justify: center
+Xlatex*Text.topMargin: 0
+Xlatex*Text.bottomMargin: 0
+Xlatex*Text.resize: width
+Xlatex*Text*editType: edit
+Xlatex*Text*useStringInPlace: true
+Xlatex*Text*displayCaret: no
+Xlatex*Label.borderWidth: 0
+Xlatex*Label.justify: right
+Xlatex*Toggle.label:
+Xlatex*Toggle.shapeStyle: ellipse
+Xlatex*interaction.resize: never
+Xlatex*Text.translations: #override\n\
+ <FocusIn>: display-caret(on)\n\
+ <FocusOut>: display-caret(off)\n\
+ <EnterWindow>: Focaliser()\n\
+ <Key>Tab: ChampSuivant()\n\
+ <Key>Return: ChampSuivant()
+Xlatex*Toggle.translations: #replace\n\
+ <EnterWindow>: highlight(Always)\n\
+ <LeaveWindow>: unhighlight()\n\
+ <Btn1Down>,<Btn1Up>: set() notify()
+Xlatex*interaction.translations: #override\n\
+ <EnterWindow>: Focaliser(interaction)\n\
+ Ctrl<Key>C: end-of-file() newline() Control()\n\
+ Ctrl<Key>D: end-of-file() newline() Control()\n\
+ <Key>Delete: end-of-file() delete-previous-character() Delete() \n\
+ <Key>BackSpace: end-of-file() delete-previous-character() Delete() \n\
+ <Key>Return: end-of-file() newline() Send()\n\
+ <Key>: Insert() end-of-file() insert-char()
+Xlatex*interaction.scrollHorizontal: never
+Xlatex*interaction.scrollVertical: always
+Xlatex*interaction.autoFill: true
+Xlatex*interaction.wrap: never
+Xlatex*interaction.displayCaret: true
diff --git a/support/xlatex/icone.h b/support/xlatex/icone.h
new file mode 100644
index 0000000000..52a2ddb421
--- /dev/null
+++ b/support/xlatex/icone.h
@@ -0,0 +1,51 @@
+/* icone.h */
+
+static Pixmap xlatex_bitmap;
+#define xlatex_width 64
+#define xlatex_height 64
+static char xlatex_bits[] = {
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
+ 0xe1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x83, 0x11, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x70, 0x84, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x88,
+ 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x90, 0x05, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x04, 0x90, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc2, 0x90,
+ 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x91, 0x09, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x02, 0x91, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x91,
+ 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x90, 0xe1, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0x7f, 0x88, 0x01, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88,
+ 0x01, 0x20, 0x00, 0x00, 0x1c, 0xf0, 0x00, 0x88, 0x01, 0x10, 0xc0, 0x1f,
+ 0xe3, 0x9d, 0x01, 0x84, 0x01, 0x10, 0x3c, 0xf0, 0x01, 0x00, 0x06, 0x84,
+ 0x01, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x01, 0x08, 0xe0, 0x07,
+ 0x70, 0xf0, 0x03, 0x82, 0x01, 0x08, 0x9e, 0xec, 0xcb, 0x1f, 0x04, 0x82,
+ 0x01, 0x04, 0x00, 0x10, 0x04, 0x00, 0x00, 0x81, 0x01, 0x04, 0x70, 0x00,
+ 0x00, 0xd8, 0x01, 0x81, 0x01, 0x04, 0x9f, 0xfb, 0xc7, 0x27, 0x02, 0x81,
+ 0x01, 0x82, 0x00, 0x04, 0x38, 0x01, 0x80, 0x80, 0x01, 0x02, 0x00, 0x00,
+ 0x00, 0x00, 0x80, 0x80, 0x01, 0x41, 0x18, 0x08, 0x80, 0x13, 0x40, 0x80,
+ 0x01, 0x41, 0x67, 0xfd, 0xf3, 0xee, 0x40, 0x80, 0x81, 0x80, 0x80, 0x00,
+ 0x0e, 0x00, 0x20, 0x80, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x80,
+ 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x80, 0x41, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x10, 0x80, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x80,
+ 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x80, 0x21, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x08, 0x80, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x80,
+ 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x80, 0x11, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x04, 0x80, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x80,
+ 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x80, 0x09, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x02, 0x80, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x80,
+ 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x80, 0x05, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x01, 0x80, 0x05, 0x93, 0xc7, 0x61, 0x18, 0x00, 0x01, 0x80,
+ 0x05, 0x60, 0x24, 0x9e, 0x37, 0x04, 0x01, 0x80, 0x05, 0x00, 0x18, 0x0c,
+ 0xc0, 0x03, 0x01, 0x80, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x80,
+ 0x05, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x80, 0xc5, 0x42, 0x38, 0x00,
+ 0x00, 0x08, 0x01, 0x80, 0x05, 0xbc, 0x6f, 0xf8, 0x3c, 0x0c, 0xff, 0x8f,
+ 0x05, 0x08, 0x80, 0x07, 0xc3, 0x07, 0x81, 0x90, 0x05, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x41, 0xa0, 0x05, 0x40, 0x00, 0x00, 0x00, 0x00, 0x41, 0xa0,
+ 0x85, 0xe7, 0x7c, 0x10, 0x18, 0x04, 0x41, 0xa2, 0x85, 0x94, 0x83, 0x6e,
+ 0xae, 0x1f, 0x81, 0xa1, 0x09, 0x08, 0x00, 0x83, 0xe1, 0x10, 0x02, 0xa0,
+ 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x90, 0x31, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x0c, 0x88, 0xc1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87,
+ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff};
+
+
diff --git a/support/xlatex/patchlevel.h b/support/xlatex/patchlevel.h
new file mode 100644
index 0000000000..2867bba9dd
--- /dev/null
+++ b/support/xlatex/patchlevel.h
@@ -0,0 +1 @@
+#define PATCHLEVEL 0
diff --git a/support/xlatex/xlatex.c b/support/xlatex/xlatex.c
new file mode 100644
index 0000000000..b42a0458c2
--- /dev/null
+++ b/support/xlatex/xlatex.c
@@ -0,0 +1,1935 @@
+/* xlatex.c
+ *
+ * xlatex est une application X facilitant l'utilisation des produits de
+ * composition de texte (tels que TeX et LaTeX) librement distribuable.
+ * Mario Dragone en a un Copyright (1990). Vous pouvez modifier et
+ * utiliser ce programme, a condition de lui envoyer les modifications. Il
+ * peut etre inclus dans toute distribution, commerciale ou non, a
+ * condition que cette notice et la banniere definie ci-dessous ne soient
+ * pas modifies (sauf pour le numero de version) et que cette banniere
+ * soit affichee a l'appel du programme. Toute contribution, correction
+ * de bogue et commentaires doivent etre envoyes a :
+ *
+ * Mario Dragone, IUT Vannes
+ * rue Montaigne
+ * BP 1104
+ * 56014 Vannes - France
+ * Tel: 99.46.31.06
+ *
+ * e-mail: dragone@iu-vannes.fr
+ *
+ * picheral@univ-rennes1.fr 11/06/93 modifie pour HP-UX
+ * picheral@univ-rennes1.fr 08/09/93 modifie pour IRIX
+ * message fin dvips
+ * decouty@irisa.fr 23/09/93 modifie pour Solaris 2
+ * picheral@univ-rennes1.fr 11/08/94 ressource et widget => pilote
+ * picheral@univ-rennes1.fr 25/08/94 #define ALPR et ALPQ
+ * picheral@univ-rennes1.fr 08/09/94 waitpid sur tous les fils en Solaris 2
+ * sinon la terminaison de "xterm emacs"
+ * terminait aussi xlatex !
+ * picheral@univ-rennes1.fr 08/09/94 LG_NOM mis a 128 au lieu de 32
+ * LG_PATH mis a MAXPATHLENGTH au lieu de 128
+ */
+
+#define VERSION "3.3c"
+#define BANNER "xlatex, version %s -- Copyright(c) 1990-1994 CICB\n"
+
+/************************************************************************
+ * Application X concue autour des Athena Widgets pour faciliter
+ * l'utilisation des commandes associees a TeX et LaTeX. Appel :
+ *
+ * xlatex [options] [document] [toolkit_options]
+ *
+ *
+ * L'utilisateur dispose des boutons de commandes:
+ *
+ * Faconner faconnage du document courant
+ * Visionner epreuvage sur ecran
+ * PostScript production d'un document PostScript
+ * Imprimer impression du document sur la station courante. Une
+ * fenetre ``popup'' apparait pour positionner les options
+ * telles que:
+ * - commande d'impression et ses arguments
+ * - station de sortie
+ * - pages a imprimer
+ * - nb. de copies
+ * File d'attente etat de l'imprimante
+ * Editer session edition de texte
+ * Quitter fin de l'application
+ *
+ * Les champs suivants sont egalement definis:
+ *
+ * visionneur utilitaire de visualisation sur ecran du document
+ * repertoire repertoire courant de travail
+ * document nom du document (correspond au nom du fichier sans
+ * suffixe 'tex'
+ * faconnage utilitaire de faconnage de documents
+ * editeur editeur de texte
+ * pilote pilote de conversion en PostScript
+ * interaction c'est une fenetre 'ascenseur' qui recoit toutes les
+ * sorties 'ecran' des commandes generees par selection
+ * des boutons de commande. Elle permet egalement a
+ * l'utilisateur d'introduire du texte pour notamment
+ * dialoguer avec la commande latex.
+ *
+ * Voici la correspondance 'shell-like' des actions realisees par les boutons de
+ * commande :
+ *
+ * faconner <faconnage> <document> &
+ * imprimer <pilote> [-p page -n nbpages] [-c copies]
+ * -o '!<impression>
+ * -P<imprimante>' <document> & (BSD)
+ * -d<imprimante>' <document> & (System V)
+ * visionner <visionneur> <document> &
+ * file attente lpq -P<imprimante> & (BSD)
+ * lpstat -o<imprimante> & (System V)
+ * editeur xterm -e <editeur> <document>.tex &
+ *
+ * ***************************************************************************
+ */
+
+/*
+ * Notes :
+ * - xlatex est prevu pour utiliser les versions 5.4 et ulterieures de dvips
+ */
+
+/*
+ * Versions :
+ * 3.0 03/06/91: premiere version a diffusion restreinte X11R4
+ * 3.1 26/06/91: version diffusable
+ * 3.2 24/09/91: adaptation X11R5, meilleure designation des champs
+ * et possibilite de deplacement par tabulation
+ * 3.3 29/01/92: ajout du bouton PostScript et possibilite d'epreuver
+ * le PostScript si le mode choisi est PostScript
+ * 3.3a 03/12/92: ajout bouton xfig et amenagements mineurs
+ * 3.3b 10/12/93: adaptations pour differentes plate-formes
+ * 3.3c 11/08/94: ajout ressource et widget => pilote
+ */
+
+#include <stdio.h>
+#include <errno.h>
+#include <signal.h>
+#include <search.h>
+#include <sys/types.h>
+#include <sys/ioctl.h>
+#include <sys/wait.h>
+#include <sys/stat.h>
+#include <sys/param.h> /* pour MAXPATHLEN */
+
+#include <X11/Xos.h>
+#include <X11/Intrinsic.h>
+#include <X11/StringDefs.h>
+#include <X11/Shell.h>
+#include <X11/Xaw/Command.h>
+#include <X11/Xaw/Form.h>
+#include <X11/Xaw/AsciiText.h>
+#include <X11/Xaw/Label.h>
+#include <X11/Xaw/Toggle.h>
+#include <X11/Xaw/Dialog.h>
+#include <X11/Xaw/SimpleMenu.h>
+#include <X11/Xaw/SmeBSB.h>
+#include <X11/Xaw/SmeLine.h>
+#include <X11/Xaw/MenuButton.h>
+
+#if (defined(SVR4) || defined(SYSV))
+#include <sys/types.h>
+#include <fcntl.h>
+#if ! defined(HPUX) && ! defined(AIXV3) && ! defined(IRIX)
+#include <sys/filio.h> /* pour FIOREAD */
+#endif
+#endif
+
+#include "icone.h"
+
+#define LG_NOM 128
+#define LG_FICH MAXPATHLEN
+#define LG_CHEMIN MAXPATHLEN
+#define DVIPS "dvips"
+#if (defined(SVR4) || defined(SYSV)) && ! defined(BSD_COMP)
+#define LPR "lp"
+#define ALPR "-d"
+#define ALPQ "-o"
+#define LPQ "lpstat"
+#else
+#define LPR "lpr"
+#define ALPR "-P"
+#define ALPQ "-P"
+#define LPQ "lpq"
+#endif
+
+#define POINT_INSERTION 999999
+
+
+#if defined(SVR4)
+char *sys_errlist[0230];
+#else
+char *sys_errlist[];
+#endif
+int errno;
+
+extern char
+#ifndef AIXV3
+ *strrchr (),
+#endif
+#if (defined(SVR4) || defined(SYSV)) && ! defined(IRIX)
+ *getcwd (),
+#else
+ *getwd (),
+#endif
+ *strtok (),
+ *getenv ();
+extern ENTRY *hsearch ();
+
+
+/* --- STATIQUES ---*/
+
+/*
+ * References en avant
+ */
+
+static XtInputCallbackProc
+ Procedure_entreeINP ();
+static void FaconnerCB (),
+ VisionnerCB (),
+ DessinerCB (),
+ PostScriptCB (),
+ ImprimerCB (),
+ StatutCB (),
+ EditerCB (),
+ QuitterCB (),
+ MenuVisionneursCB (),
+ MenuVisionneursPSCB (),
+ Toutes_pagesCB (),
+ De_la_pageCB (),
+ OkCB (),
+ AnnulerCB ();
+static XtActionProc
+ FocaliserACT (),
+ ChampSuivantACT (),
+ ControlACT (),
+ InsertACT (),
+ DeleteACT (),
+ SendACT ();
+static void Connecter_pipes (),
+ Reinitialiser_fenetre_interaction (),
+ Supprimer_suffixe_tex ();
+
+/*
+ * Implementation des groupes de tabulation des champs de saisie
+ * Chaque entree du tableau designe un widget et son suivant (chainage boucle)
+ * Pour acceder a une entree par le nom d'un widget, on utilise la fonction
+ * de hash-coding hsearch
+ */
+typedef struct {
+ char *nom;
+ int suivant;
+ Widget wg;
+} _groupeT;
+
+static _groupeT TabGroup[15];
+static int IGroup = 0;
+static ENTRY TabElem;
+
+/*
+ * Tableau des widgets boutons de commande et leur fonction de CallBack
+ */
+typedef void (*fptr) ();
+typedef struct {
+ char *nom;
+ fptr CB;
+ Widget wg;
+} _commandesT;
+
+static _commandesT Commandes[] = {
+ {"editer", EditerCB},
+ {"dessiner", DessinerCB},
+ {"faconner", FaconnerCB},
+ {"visionner", VisionnerCB},
+ {"postscript", PostScriptCB},
+ {"imprimer", ImprimerCB},
+ {"statut", StatutCB},
+ {"quitter", QuitterCB}
+};
+
+
+/*
+ * Description des ressources de l'application Xlatex
+ */
+
+typedef struct _AppRessources {
+ String repertoire_initial,
+ dessin,
+ faconneur,
+ visionneurs,
+ visionneursPS,
+ pilote,
+ impression,
+ editeur;
+ Boolean editeur_avec_xterm;
+ /* ressources maintenues pour compatibilite avec la version anterieure */
+ String repertoire;
+} RessourcesXlatex;
+
+static RessourcesXlatex Ressources_xlatex;
+
+static XtResource Ressources[] = {
+ {"repertoireInitial", "RepertoireInitial", XtRString, sizeof (String),
+ XtOffset (RessourcesXlatex *, repertoire_initial), XtRString, NULL},
+ {"faconneur", "Faconneur", XtRString, sizeof (String),
+ XtOffset (RessourcesXlatex *, faconneur), XtRString, "latex"},
+ {"dessin", "Dessin", XtRString, sizeof (String),
+ XtOffset (RessourcesXlatex *, dessin), XtRString, "xfig"},
+ {"visionneurs", "Visionneurs", XtRString, sizeof (String),
+ XtOffset (RessourcesXlatex *, visionneurs), XtRString, "*xdvi texx"},
+ {"visionneursPS", "VisionneursPS", XtRString, sizeof (String),
+ XtOffset (RessourcesXlatex *, visionneursPS), XtRString, "ghostview gs"},
+ {"editeur", "Editeur", XtRString, sizeof (String),
+ XtOffset (RessourcesXlatex *, editeur), XtRString, NULL},
+ {"pilote", "Pilote", XtRString, sizeof (String),
+ XtOffset (RessourcesXlatex *, pilote), XtRString, NULL},
+ {"impression", "Impression", XtRString, sizeof (String),
+ XtOffset (RessourcesXlatex *, impression), XtRString, LPR},
+ {"editeurAvecXterm", "EditeurAvecXterm", XtRBoolean, sizeof (Boolean),
+ XtOffset (RessourcesXlatex *, editeur_avec_xterm), XtRString, NULL},
+};
+
+static String Ressources_defaut[] = {
+ NULL,
+};
+
+
+/*
+ * Table des actions
+ */
+static XtActionsRec Table_actions[] = {
+ {"Focaliser", (XtActionProc) FocaliserACT},
+ {"ChampSuivant", (XtActionProc) ChampSuivantACT},
+ {"Control", (XtActionProc) ControlACT},
+ {"Insert", (XtActionProc) InsertACT},
+ {"Delete", (XtActionProc) DeleteACT},
+ {"Send", (XtActionProc) SendACT},
+ {"faconner", (XtActionProc) FaconnerCB},
+ {"editer", (XtActionProc) EditerCB},
+ {"dessiner", (XtActionProc) DessinerCB},
+ {"visionner", (XtActionProc) VisionnerCB},
+ {"postscript", (XtActionProc) PostScriptCB},
+ {"imprimer", (XtActionProc) ImprimerCB},
+ {"statut", (XtActionProc) StatutCB},
+ {"quitter", (XtActionProc) QuitterCB},
+ {NULL, NULL}
+};
+
+static Widget Toplevel,
+ Document_wg,
+ Imprimer_wg,
+ Form_wg,
+ Popup_wg,
+ Repertoire_wg,
+ Visionneurs_wg,
+ Faconneur_wg,
+ Editeur_wg,
+ Dessin_wg,
+ Interaction_wg,
+ Imprimante_wg,
+ Impression_wg,
+ Pilote_wg,
+ ToutesLab_wg,
+ DeLab_wg,
+ De_wg,
+ ALab_wg,
+ A_wg,
+ CopiesLab_wg,
+ Copies_wg;
+Widget Focus = (Widget) NULL;
+
+XtAppContext Xlatex_app_con;
+Display *Dpy;
+
+static int Pipe_entree[2],
+ Pipe_sortie[2];
+
+static char Faconneur[LG_NOM] = "",
+ Editeur[LG_NOM] = "",
+ Dessin[LG_NOM] = "",
+ Impression[LG_NOM] = "",
+ Visionneur[LG_NOM] = "",
+ Document[LG_FICH] = "",
+ Repertoire[LG_CHEMIN] = "",
+ Pilote[LG_NOM] = "",
+ Imprimante[LG_NOM] = "";
+static Boolean PostScript = False;
+
+static int FaconneurPid = -9999;
+static Boolean FaconneurActif = False;
+static int ImpressionPid = -9999;
+static Boolean ImpressionActive = False;
+static int PostScriptPid = -9999;
+static Boolean PostScriptActif = False;
+static int Pgid;
+static char TamponEntree[256] = "";
+static int TamponEntree_lg = 0;
+
+static Boolean ToutesPages = True,
+ DeLaPage = False;
+
+static char PageDebut[5] = "0",
+ PageFin[5] = "0",
+ Pages[5] = "0",
+ Copies[5] = "1";
+
+static Pixel CouleurDeBordure,
+ CouleurDeFond;
+
+static char *TabArg[15];
+
+static char *Visionneurs[10],
+ *VisionneursPS[10];
+
+static char Programme[] = "Xlatex";
+
+
+/* --- INTERNES --- */
+
+#if (defined(SVR4) || defined(SYSV))
+ killpg(ProcessGroup, Signal)
+ int ProcessGroup;
+ int Signal;
+{
+if (ProcessGroup < 0)
+ {
+ errno = ESRCH;
+ return (-1);
+ }
+ return (kill(-ProcessGroup, Signal));
+ }
+#endif
+
+ /************************************************************
+ Changer_Repertoire
+
+ - modification de la variable d'environnement PATH
+ - changement de repertoire
+ ************************************************************/
+
+static int Changer_repertoire (repertoire)
+/****************************************/
+ char *repertoire;
+{
+ extern char **environ;
+ static char **nouvelEnviron = NULL;
+ static char pwdEnv[256];
+ static Boolean nouvelEnvCree = False;
+ int nbVarEnv;
+ char **newPtr,
+ **oldPtr;
+
+ if (nouvelEnvCree == False) {
+
+ /* Enumeration des variables d'environnement */
+ for (oldPtr = environ; *oldPtr; oldPtr++);
+ nbVarEnv = (oldPtr - environ);
+
+ nouvelEnviron = (char **) XtMalloc ((nbVarEnv + 2) * sizeof (char **));
+ if (!nouvelEnviron) {
+ fprintf (stderr,
+ "%s: echec allocation de %d pointeurs de l'environnement\n",
+ Programme, nbVarEnv + 2);
+ exit (1);
+ }
+ /* placer PWD=repertoire en premiere position */
+ strcpy (pwdEnv, "PWD=");
+ newPtr = nouvelEnviron;
+ *newPtr++ = pwdEnv;
+
+ /* copie des autres variables de l'environnement */
+ for (oldPtr = environ; *oldPtr; oldPtr++) {
+ if (strncmp (*oldPtr, "PWD=", 4) != 0)
+ *newPtr++ = *oldPtr;
+ }
+ *newPtr = NULL;
+ environ = nouvelEnviron;
+ nouvelEnvCree = True;
+ }
+ /* Changement de repertoire */
+ strcpy (pwdEnv + 4, repertoire);
+ return (chdir (repertoire));
+}
+
+
+ /************************************************************
+ Connecter_pipes
+
+ On se situe dans le cadre d'un processus FILS.
+ Les organes d'E/S standard sont connectes aux pipes Pipe_entree
+ et Pipe_sortie :
+
+ 0 recevra les caracteres en provenance du PERE
+ 1,2 enverront les caracteres au PERE qui activera la procedure
+ Procedure_entreeINP
+
+ PERE FILS
+ [1] Pipe_entree [0] == 0
+ Procedure_entreeINP [0] Pipe_sortie [1] == 1, 2
+
+ Ce processus est affilie au 'process group' de son pere ce qui
+ permet a ce dernier d'envoyer un signal de terminaison a
+ l'ensemble du groupe en fin d'application
+ ************************************************************/
+
+static void Connecter_pipes ()
+/****************************************/
+{
+ long arg;
+ char buf[32];
+ int len;
+
+ /*
+ On se situe ici dans le cadre d'un processus qui s'est cree mais avant
+ qu'il ne realise l'execvp. on connecte 0, 1 et 2 aux pipes d'E/S
+ */
+ dup2 (Pipe_entree[0], 0);
+ dup2 (Pipe_sortie[1], 1);
+ dup2 (Pipe_sortie[1], 2);
+
+ close (Pipe_entree[0]);
+ close (Pipe_entree[1]);
+ close (Pipe_sortie[0]);
+ close (Pipe_sortie[1]);
+
+ /* Purge des entrees anticipees */
+ ioctl (0, FIONREAD, &arg);
+#ifndef IRIX
+ while (arg > 0) {
+ len = read (0, buf, sizeof (buf));
+ ioctl (0, FIONREAD, &arg);
+ }
+#endif
+}
+
+
+ /************************************************************
+ Afficher
+
+ Affichage d'un message suivi d'un retour a la ligne
+ dans le widget Interaction.
+ ************************************************************/
+
+static int Afficher (msg)
+/****************************************/
+ char *msg;
+{
+ char aLaLigne = '\n';
+ XawTextBlock text;
+
+ /* On affiche le message dans la fenetre d'interaction */
+ text.firstPos = 0;
+ text.ptr = msg;
+ text.format = FMT8BIT;
+ text.length = strlen (msg);
+
+ XawTextReplace (Interaction_wg, POINT_INSERTION, POINT_INSERTION, &text);
+
+ text.ptr = &aLaLigne;
+ text.length = 1;
+
+ XawTextReplace (Interaction_wg, POINT_INSERTION, POINT_INSERTION, &text);
+ XawTextSetInsertionPoint (Interaction_wg, POINT_INSERTION);
+
+ XFlush (Dpy);
+}
+
+
+ /************************************************************
+ Reinitialiser_fenetre_interaction
+
+ Effacement du contenu du widget Interaction, generalement
+ provoque a chaque faconnage
+ ************************************************************/
+
+static void Reinitialiser_fenetre_interaction ()
+/****************************************/
+{
+ XawTextBlock text;
+ char car = '\00';
+
+ text.firstPos = 0;
+ text.ptr = &car;
+ text.format = FMT8BIT;
+ text.length = 0;
+
+ XawTextReplace (Interaction_wg, (XawTextPosition) 0, POINT_INSERTION, &text);
+ XawTextSetInsertionPoint (Interaction_wg, POINT_INSERTION);
+}
+
+
+ /************************************************************
+ Supprimer_suffixe_tex
+
+ Suppression du suffixe .tex du champ Document. Un suffixe
+ approprie est ajoute ulterieurement.
+ ************************************************************/
+
+static void Supprimer_suffixe_tex ()
+/****************************************/
+{
+ char *ptex;
+ if ((ptex = rindex (Document, '.')) == NULL)
+ return;
+ if (strcmp (ptex, ".tex") == 0) {
+ *ptex = '\00';
+ XtVaSetValues (Document_wg, XtNstring, Document, NULL);
+ }
+}
+
+
+ /************************************************************
+ Positionner_arguments
+
+ Analyse une ligne de commande et positionne le tableau
+ d'arguments TabArg
+ ************************************************************/
+
+static void Positionner_arguments (commande)
+/****************************************/
+ char *commande;
+{
+ int i = 0;
+ TabArg[i] = strtok (commande, " ");
+ while ((TabArg[++i] = strtok (NULL, " ")) != NULL);
+}
+
+
+ /************************************************************
+ Acquitter_processus
+
+ Reaction au signal de terminaison SIGCHLD.
+ Dans le cas du processus de faconnage, d'impression et de
+ generation PoscScript, on memorise et signale
+ sa terminaison.
+ ************************************************************/
+
+static void Acquitter_processus ()
+/****************************************/
+{
+ int status;
+ int pid;
+
+#if defined(SVR4)
+ while ((pid = waitpid ((pid_t) -1, &status, WNOHANG)) > 0) {
+#else
+#if defined(SYSV) && ! defined(IRIX)
+ while ((pid = waitpid ((pid_t) 0, &status, WNOHANG)) > 0) {
+#else
+ while ((pid = wait3 (&status, WNOHANG, 0)) > 0) {
+#endif
+#endif
+ if (pid == FaconneurPid) {
+ char msg[256];
+ FaconneurActif = False;
+ sprintf (msg, "--- Exit %s ---", Faconneur);
+ Afficher (msg);
+ }
+ if (pid == ImpressionPid) {
+ char msg[256];
+ ImpressionActive = False;
+ sprintf (msg, "--- Exit %s ---", Impression);
+ Afficher (msg);
+ }
+ if (pid == PostScriptPid) {
+ char msg[256];
+ PostScriptActif = False;
+ sprintf (msg, "--- Exit %s ---", Pilote);
+ Afficher (msg);
+ }
+ }
+ signal (SIGCHLD, Acquitter_processus);
+}
+
+
+ /************************************************************
+ Initialiser_pipes
+
+ Creation des pipes Pipe_entree et Pipe_sortie
+ ************************************************************/
+
+static void Initialiser_pipes ()
+/****************************************/
+{
+ pipe (Pipe_entree);
+ pipe (Pipe_sortie);
+#if (defined(SVR4) || defined(SYSV))
+ fcntl (Pipe_entree[1], F_SETFL, O_NDELAY);
+ fcntl (Pipe_sortie[0], F_SETFL, O_NDELAY);
+#else
+ fcntl (Pipe_entree[1], F_SETFL, FNDELAY);
+ fcntl (Pipe_sortie[0], F_SETFL, FNDELAY);
+#endif
+}
+
+
+ /************************************************************
+ Initialiser_Xt
+
+ Creation de l'application Xlatex, traitement des ressources
+ et initialisation de l'environnement de travail
+ ************************************************************/
+
+static void Initialiser_Xt (argc, argv)
+/****************************************/
+ int argc;
+ char *argv[];
+{
+ char msg[256];
+ char titre[256];
+ char *rep,
+ *doc,
+ *imp,
+ *edi;
+ int iv;
+ char *vp;
+
+ /* Initialisation du processus de hash-coding : on prevoit 15 entrees max */
+ hcreate (15);
+
+ /*
+ Interception du signal de changement d'etat (en l'occurence leur
+ terminaison) des processus fils pour eviter leur etat <defunct>
+ */
+ signal (SIGCHLD, Acquitter_processus);
+
+
+ /* Demarrage de l'application X */
+ Toplevel = XtAppInitialize (&Xlatex_app_con, Programme, NULL,
+ 0, &argc, argv,
+ Ressources_defaut, NULL, 0);
+
+ Dpy = XtDisplay (Toplevel);
+
+ XtAppAddActions (Xlatex_app_con, Table_actions, XtNumber (Table_actions));
+ XtAppAddInput (Xlatex_app_con, Pipe_sortie[0], (XtPointer) XtInputReadMask,
+ (XtInputCallbackProc) Procedure_entreeINP, NULL);
+
+ /* Obtention des ressources de l'application */
+ XtGetApplicationResources (Toplevel, (XtPointer) & Ressources_xlatex,
+ Ressources, XtNumber (Ressources), NULL, 0);
+
+ /* Fabrication des listes des visionneurs */
+ Visionneur[0] = '\0';
+ iv = 0;
+ vp = strtok (Ressources_xlatex.visionneurs, " ,");
+ while (vp) {
+ if (*vp == '*') {
+ vp++;
+ strcpy (Visionneur, vp);
+ PostScript = False;
+ }
+ Visionneurs[iv++]=vp;
+ vp = strtok (NULL, " ,");
+ }
+ iv = 0;
+ vp = strtok (Ressources_xlatex.visionneursPS, " ,");
+ while (vp) {
+ if (*vp == '*') {
+ vp++;
+ strcpy (Visionneur, vp);
+ PostScript = True;
+ }
+ VisionneursPS[iv++]=vp;
+ vp = strtok (NULL, " ,");
+ }
+
+ if (! Visionneur[0]) {
+ strcpy (Visionneur, Visionneurs[0]);
+ PostScript = False;
+ }
+
+ /* Prise en compte des anciens noms de ressources */
+ if (Ressources_xlatex.repertoire != NULL)
+ Ressources_xlatex.repertoire_initial = Ressources_xlatex.repertoire;
+
+ /* Fabrication de l'icone */
+ xlatex_bitmap = XCreateBitmapFromData (Dpy,
+ RootWindow (Dpy, DefaultScreen (Dpy)),
+ xlatex_bits, xlatex_width, xlatex_height);
+ sprintf (titre, "%s %s", Programme, VERSION);
+ XtVaSetValues (Toplevel,
+ XtNiconPixmap, xlatex_bitmap,
+ XtNtitle, titre,
+ NULL);
+
+ /*
+ Determination du nom du document. S'il est fourni en parametre : son
+ chemin d'acces est expanse et on en deduit le repertoire et son nom
+ sinon si la ressource repertoireInitial est positionnee : elle devient
+ le repertoire courant de travail sinon le repertoire courant est pris
+ */
+
+ if (argc > 1) {
+ doc = strrchr (argv[1], '/');
+ if (doc == NULL)
+ strcpy (Document, argv[1]);
+ else {
+ strcpy (Document, doc + 1);
+ *doc = '\00';
+ if (Changer_repertoire (argv[1]) == -1) {
+ sprintf (msg, "chdir %s", argv[1]);
+ perror (msg);
+ exit (1);
+ }
+ }
+ } else {
+ strcpy (Document, "document");
+ if (Ressources_xlatex.repertoire_initial != NULL) {
+ if (Changer_repertoire (Ressources_xlatex.repertoire_initial) == -1) {
+ sprintf (msg, "chdir %s", Ressources_xlatex.repertoire_initial);
+ perror (msg);
+ exit (1);
+ }
+ }
+ };
+#if (defined(SVR4) ||defined(SYSV)) && ! defined(IRIX)
+ rep = getcwd (Repertoire, MAXPATHLEN);
+#else
+ rep = getwd (Repertoire);
+#endif
+
+ /*
+ Obtention du nom de l'imprimante et de l'editeur par les variables
+ d'environnement.
+ */
+#if (defined(SVR4) || defined(SYSV)) && ! defined(BSD_COMP)
+ imp = getenv ("LPDEST");
+#else
+ imp = getenv ("PRINTER");
+#endif
+ if (imp != NULL)
+ strcpy (Imprimante, imp);
+ if (Ressources_xlatex.editeur == NULL) {
+ edi = getenv ("EDITOR");
+ if (edi != NULL)
+ strcpy (Editeur, edi);
+ else
+ strcpy (Editeur, "emacs");
+ } else
+ strcpy (Editeur, Ressources_xlatex.editeur);
+ if (Ressources_xlatex.pilote != NULL)
+ strcpy (Pilote, Ressources_xlatex.pilote);
+ else
+ strcpy (Pilote, DVIPS);
+ strcpy (Dessin, Ressources_xlatex.dessin);
+ strcpy (Faconneur, Ressources_xlatex.faconneur);
+ strcpy (Impression, Ressources_xlatex.impression);
+}
+
+
+
+ /************************************************************
+ Creer_popup_imprimer
+
+ Creation du formulaire d'impression
+ Creation du groupe secondaire de tabulation pour ce formulaire.
+ IGroup designe la derniere entree occupee dans TabGroup
+ ************************************************************/
+
+static void Creer_popup_imprimer ()
+/****************************************/
+{
+ Widget form_wg,
+ impressionLab_wg,
+ imprimanteLab_wg,
+ toutesTog_wg,
+ deTog_wg,
+ ok_wg,
+ annuler_wg;
+ Widget widgets[30];
+ Cardinal nwg = 0;
+ int debut;
+
+ Popup_wg = XtVaCreatePopupShell ("popup", transientShellWidgetClass, Form_wg, NULL);
+ form_wg = XtVaCreateManagedWidget ("form", formWidgetClass, Popup_wg, NULL);
+
+ widgets[nwg++] = impressionLab_wg = XtVaCreateWidget ("impressionLab", labelWidgetClass, form_wg,
+ NULL);
+
+ debut = ++IGroup;
+ TabGroup[IGroup].suivant = IGroup + 1;
+ TabGroup[IGroup].nom = "impression";
+ TabGroup[IGroup].wg = widgets[nwg++] = Impression_wg = XtVaCreateWidget (TabGroup[IGroup].nom, asciiTextWidgetClass, form_wg,
+ XtNstring, Impression,
+ XtNlength, LG_NOM,
+ XtNborderColor, CouleurDeFond,
+ NULL);
+
+ widgets[nwg++] = imprimanteLab_wg = XtVaCreateWidget ("imprimanteLab", labelWidgetClass, form_wg,
+ NULL);
+
+ IGroup++;
+ TabGroup[IGroup].suivant = IGroup + 1;
+ TabGroup[IGroup].nom = "imprimante";
+ TabGroup[IGroup].wg = widgets[nwg++] = Imprimante_wg = XtVaCreateWidget (TabGroup[IGroup].nom, asciiTextWidgetClass, form_wg,
+ XtNstring, Imprimante,
+ XtNlength, LG_NOM,
+ XtNborderColor, CouleurDeFond,
+ NULL);
+
+ widgets[nwg++] = toutesTog_wg = XtVaCreateWidget ("toutesTog", toggleWidgetClass, form_wg,
+ XtNstate, ToutesPages,
+ NULL);
+ XtAddCallback (toutesTog_wg, XtNcallback, Toutes_pagesCB, NULL);
+
+ widgets[nwg++] = ToutesLab_wg = XtVaCreateWidget ("toutesLab", labelWidgetClass, form_wg,
+ XtNsensitive, ToutesPages,
+ NULL);
+
+ widgets[nwg++] = deTog_wg = XtVaCreateWidget ("deTog", toggleWidgetClass, form_wg,
+ XtNradioGroup, toutesTog_wg,
+ XtNstate, DeLaPage,
+ NULL);
+ XtAddCallback (deTog_wg, XtNcallback, De_la_pageCB, NULL);
+
+ widgets[nwg++] = DeLab_wg = XtVaCreateWidget ("deLab", labelWidgetClass, form_wg,
+ XtNsensitive, DeLaPage,
+ NULL);
+
+ IGroup++;
+ TabGroup[IGroup].suivant = IGroup + 1;
+ TabGroup[IGroup].nom = "de";
+ TabGroup[IGroup].wg = widgets[nwg++] = De_wg = XtVaCreateWidget (TabGroup[IGroup].nom, asciiTextWidgetClass, form_wg,
+ XtNstring, PageDebut,
+ XtNlength, sizeof (PageDebut),
+ XtNwidth, 35,
+ XtNsensitive, DeLaPage,
+ XtNborderColor, CouleurDeFond,
+ NULL);
+
+
+ widgets[nwg++] = ALab_wg = XtVaCreateWidget ("aLab", labelWidgetClass, form_wg,
+ XtNsensitive, DeLaPage,
+ NULL);
+
+ IGroup++;
+ TabGroup[IGroup].suivant = IGroup + 1;
+ TabGroup[IGroup].nom = "a";
+ TabGroup[IGroup].wg = widgets[nwg++] = A_wg = XtVaCreateWidget (TabGroup[IGroup].nom, asciiTextWidgetClass, form_wg,
+ XtNstring, PageFin,
+ XtNlength, sizeof (PageFin),
+ XtNwidth, 35,
+ XtNsensitive, DeLaPage,
+ XtNborderColor, CouleurDeFond,
+ NULL);
+
+ widgets[nwg++] = ok_wg = XtVaCreateWidget ("ok", commandWidgetClass, form_wg,
+ NULL);
+
+ XtAddCallback (ok_wg, XtNcallback, OkCB, NULL);
+
+ widgets[nwg++] = annuler_wg = XtVaCreateWidget ("annuler", commandWidgetClass, form_wg,
+ NULL);
+ XtAddCallback (annuler_wg, XtNcallback, AnnulerCB, NULL);
+
+ widgets[nwg++] = CopiesLab_wg = XtVaCreateWidget ("copiesLab", labelWidgetClass, form_wg,
+ NULL);
+
+ IGroup++;
+ TabGroup[IGroup].suivant = debut;
+ TabGroup[IGroup].nom = "copies";
+ TabGroup[IGroup].wg = widgets[nwg++] = Copies_wg = XtVaCreateWidget (TabGroup[IGroup].nom, asciiTextWidgetClass, form_wg,
+ XtNstring, Copies,
+ XtNlength, sizeof (Copies),
+ XtNwidth, 35,
+ XtNborderColor, CouleurDeFond,
+ NULL);
+
+ XtManageChildren (widgets, nwg);
+
+
+ /* Hash-coding du groupe de tabulation cree */
+
+ {
+ int i;
+ for (i=debut; i<= IGroup; i++) {
+ TabElem.key = TabGroup[i].nom;
+ TabElem.data= (char *) &TabGroup[i].suivant;
+ hsearch (TabElem, ENTER);
+ }
+ }
+
+}
+
+
+ /************************************************************
+ Creer_widgets
+
+ Creation des widgets de l'application Xlatex
+ Creation du groupe principal de tabulation dans TabGroup
+ ************************************************************/
+
+static void Creer_widgets ()
+/****************************************/
+{
+ Widget repertoireLab_wg,
+ modeLab_wg,
+ documentLab_wg,
+ dessinLab_wg,
+ visionneursLab_wg,
+ menuVisionneurs_wg,
+ faconneurLab_wg,
+ piloteLab_wg,
+ editeurLab_wg;
+ Widget widgets[32];
+ WidgetList bouttons;
+ Widget wg;
+ int iv, i;
+ Cardinal nwg = 0;
+
+ Form_wg = XtVaCreateManagedWidget ("form", formWidgetClass, Toplevel, NULL);
+
+ for (i = 0; i < XtNumber (Commandes); i++) {
+ widgets[nwg++] = Commandes[i].wg = XtVaCreateWidget (
+ Commandes[i].nom, commandWidgetClass, Form_wg,
+ XtNfromHoriz, (i == 0 ? NULL : Commandes[i - 1].wg),
+ NULL);
+ XtAddCallback (Commandes[i].wg, XtNcallback, Commandes[i].CB, NULL);
+ }
+ widgets[nwg++] = repertoireLab_wg = XtVaCreateWidget ("repertoireLab", labelWidgetClass, Form_wg,
+ NULL);
+ IGroup = 0;
+ TabGroup[IGroup].suivant = IGroup + 1;
+ TabGroup[IGroup].nom = "repertoire";
+ TabGroup[IGroup].wg = widgets[nwg++] = Repertoire_wg = XtVaCreateWidget (TabGroup[IGroup].nom, asciiTextWidgetClass, Form_wg,
+ XtNstring, Repertoire,
+ XtNlength, LG_CHEMIN,
+ NULL);
+
+ XtVaGetValues (Repertoire_wg,
+ XtNbackground, &CouleurDeFond,
+ XtNborderColor, &CouleurDeBordure,
+ NULL);
+ XtVaSetValues (Repertoire_wg,
+ XtNborderColor, CouleurDeFond,
+ NULL);
+
+ widgets[nwg++] = dessinLab_wg = XtVaCreateWidget ("dessinLab", labelWidgetClass, Form_wg,
+ NULL);
+
+ IGroup++;
+ TabGroup[IGroup].suivant = IGroup + 1;
+ TabGroup[IGroup].nom = "dessin";
+ TabGroup[IGroup].wg = widgets[nwg++] = Dessin_wg = XtVaCreateWidget (TabGroup[IGroup].nom, asciiTextWidgetClass, Form_wg,
+ XtNstring, Dessin,
+ XtNlength, LG_NOM,
+ XtNborderColor, CouleurDeFond,
+ NULL);
+
+ widgets[nwg++] = documentLab_wg = XtVaCreateWidget ("documentLab", labelWidgetClass, Form_wg,
+ NULL);
+
+ IGroup++;
+ TabGroup[IGroup].suivant = IGroup + 1;
+ TabGroup[IGroup].nom = "document";
+ TabGroup[IGroup].wg = widgets[nwg++] = Document_wg = XtVaCreateWidget (TabGroup[IGroup].nom, asciiTextWidgetClass, Form_wg,
+ XtNstring, Document,
+ XtNlength, LG_NOM,
+ XtNborderColor, CouleurDeFond,
+ NULL);
+
+ widgets[nwg++] = visionneursLab_wg = XtVaCreateWidget ("visionneursLab", labelWidgetClass, Form_wg,
+ NULL);
+
+ widgets[nwg++] = Visionneurs_wg = XtVaCreateManagedWidget ("visionneurs", menuButtonWidgetClass, Form_wg,
+ XtNmenuName, "menuVisionneurs",
+ XtNlabel, Visionneur,
+ NULL);
+
+ menuVisionneurs_wg = XtVaCreatePopupShell ("menuVisionneurs", simpleMenuWidgetClass, Visionneurs_wg, NULL);
+
+ iv = 0;
+ while (Visionneurs[iv]) {
+ wg = XtVaCreateManagedWidget (Visionneurs[iv], smeBSBObjectClass, menuVisionneurs_wg,
+ NULL);
+ XtAddCallback (wg, XtNcallback, MenuVisionneursCB, (XtPointer) iv);
+ iv++;
+ }
+ XtVaCreateManagedWidget ("separateur", smeLineObjectClass, menuVisionneurs_wg, NULL);
+ iv = 0;
+ while (VisionneursPS[iv]) {
+ wg = XtVaCreateManagedWidget (VisionneursPS[iv], smeBSBObjectClass, menuVisionneurs_wg,
+ NULL);
+ XtAddCallback (wg, XtNcallback, MenuVisionneursPSCB, (XtPointer) iv);
+ iv++;
+ }
+
+
+ widgets[nwg++] = faconneurLab_wg = XtVaCreateWidget ("faconneurLab", labelWidgetClass, Form_wg,
+ NULL);
+
+ IGroup++;
+ TabGroup[IGroup].suivant = IGroup + 1;
+ TabGroup[IGroup].nom = "faconneur";
+ TabGroup[IGroup].wg = widgets[nwg++] = Faconneur_wg = XtVaCreateWidget (TabGroup[IGroup].nom, asciiTextWidgetClass, Form_wg,
+ XtNstring, Faconneur,
+ XtNlength, LG_NOM,
+ XtNborderColor, CouleurDeFond,
+ NULL);
+
+ widgets[nwg++] = editeurLab_wg = XtVaCreateWidget ("editeurLab", labelWidgetClass, Form_wg,
+ NULL);
+
+ IGroup++;
+ TabGroup[IGroup].suivant = IGroup + 1;
+ TabGroup[IGroup].nom = "editeur";
+ TabGroup[IGroup].wg = widgets[nwg++] = Editeur_wg = XtVaCreateWidget (TabGroup[IGroup].nom, asciiTextWidgetClass, Form_wg,
+ XtNstring, Editeur,
+ XtNlength, LG_NOM,
+ XtNborderColor, CouleurDeFond,
+ NULL);
+
+ widgets[nwg++] = piloteLab_wg = XtVaCreateWidget ("piloteLab", labelWidgetClass, Form_wg,
+ NULL);
+
+ IGroup++;
+ TabGroup[IGroup].suivant = 0;
+ TabGroup[IGroup].nom = "pilote";
+ TabGroup[IGroup].wg = widgets[nwg++] = Pilote_wg = XtVaCreateWidget (TabGroup[IGroup].nom, asciiTextWidgetClass, Form_wg,
+ XtNstring, Pilote,
+ XtNlength, LG_NOM,
+ XtNborderColor, CouleurDeFond,
+ NULL);
+
+ widgets[nwg++] = Interaction_wg = XtVaCreateWidget ("interaction", asciiTextWidgetClass, Form_wg,
+ XtNtop, XtChainTop,
+ XtNright, XtChainRight,
+ XtNleft, XtChainLeft,
+ XtNbottom, XtChainBottom,
+ XtNuseStringInPlace, False,
+ NULL);
+
+ XtManageChildren (widgets, nwg);
+
+ /* Ajustement de la taille de la fenetre d'interaction */
+
+ {
+ Dimension largeur;
+ XFontStruct *police;
+ XtVaGetValues (Interaction_wg, XtNfont, &police, NULL);
+ largeur = (police->max_bounds.width + police->min_bounds.width) / 2;
+ XtVaSetValues (Interaction_wg, XtNwidth, largeur * 80 + 05,
+ XtNheight, (police->max_bounds.ascent + police->max_bounds.descent) * 20 + 10,
+ NULL);
+ }
+
+ Supprimer_suffixe_tex ();
+
+ /* Hash-coding du groupe de tabulation */
+
+ {
+ int i;
+ for (i=0; i<= IGroup; i++) {
+ TabElem.key = TabGroup[i].nom;
+ TabElem.data= (char *) &TabGroup[i].suivant;
+ hsearch (TabElem, ENTER);
+ }
+ }
+
+ Focus = Repertoire_wg;
+}
+
+
+ /************************************************************
+ Installer_accelerateurs
+
+ Mise en place des accelerateurs
+ ************************************************************/
+
+static void Installer_accelerateurs ()
+/****************************************/
+{
+ XtInstallAllAccelerators (Toplevel, Toplevel);
+ XtInstallAllAccelerators (Repertoire_wg, Toplevel);
+ XtInstallAllAccelerators (Document_wg, Toplevel);
+ XtInstallAllAccelerators (Visionneurs_wg, Toplevel);
+ XtInstallAllAccelerators (Dessin_wg, Toplevel);
+ XtInstallAllAccelerators (Faconneur_wg, Toplevel);
+ XtInstallAllAccelerators (Pilote_wg, Toplevel);
+ XtInstallAllAccelerators (Editeur_wg, Toplevel);
+ XtInstallAllAccelerators (Interaction_wg, Toplevel);
+ XtInstallAllAccelerators (Imprimante_wg, Toplevel);
+ XtInstallAllAccelerators (Impression_wg, Toplevel);
+}
+
+
+/* --- INPUT READ PROCEDURE --- */
+
+ /************************************************************
+ Procedure_entreeINP
+
+ Procedure activee lors de la presence de caracteres dans le
+ pipe Pipe_sortie[0].
+ ************************************************************/
+
+static XtInputCallbackProc Procedure_entreeINP (cd, s, id)
+/****************************************/
+ caddr_t cd;
+ int *s;
+ XtInputId *id;
+{
+ char tamp[100];
+ XawTextBlock text;
+
+ text.firstPos = 0;
+ text.ptr = tamp;
+ text.format = FMT8BIT;
+
+ /* Boucle de transfert */
+ while ((text.length = read (*s, tamp, sizeof (tamp))) > 0)
+ XawTextReplace (Interaction_wg, POINT_INSERTION, POINT_INSERTION, &text);
+
+ XawTextSetInsertionPoint (Interaction_wg, POINT_INSERTION);
+
+ return (0);
+}
+
+
+/* --- CALLBACKS --- */
+
+ /************************************************************
+ OkCB
+
+ Confirmation de l'impression. La commande d'impression est
+ preparee puis executee.
+ ************************************************************/
+
+static void OkCB (w, client_data, call_data)
+/****************************************/
+ Widget w;
+ XtPointer client_data,
+ call_data;
+{
+ int pd;
+ int pf;
+ int cp;
+ int etat;
+ char msg[256];
+
+ /* Calcul du nombre de pages a sortir dans Pages */
+ pd = atoi (PageDebut);
+ pf = atoi (PageFin);
+
+ sprintf (Pages, "%d", (pf - pd) + 1);
+
+ if (DeLaPage == True)
+ if (pd > pf) {
+ Afficher ("Mauvais parametres de pages. DEB > FIN !");
+ return;
+ }
+ cp = atoi (Copies);
+ if (cp < 1) {
+ Afficher ("Nombre de copies errone !");
+ return;
+ }
+ if (Changer_repertoire (Repertoire) == -1) {
+ sprintf (msg, "%s: %s", Repertoire, sys_errlist[errno]);
+ Afficher (msg);
+ return;
+ }
+ Reinitialiser_fenetre_interaction ();
+ Supprimer_suffixe_tex ();
+ if (DeLaPage == True)
+ if (cp > 1)
+ sprintf (msg, "%s -c %s -p %s -n %s -o '!%s %s%s' %s", Pilote,
+ Copies, PageDebut, Pages, Impression, ALPR,
+ Imprimante, Document);
+ else
+ sprintf (msg, "%s -p %s -n %s -o '!%s %s%s' %s", Pilote, PageDebut,
+ Pages, Impression, ALPR, Imprimante, Document);
+ else
+ if (cp > 1)
+ sprintf (msg, "%s -c %s -o '!%s %s%s' %s", Pilote, Copies,
+ Impression, ALPR, Imprimante, Document);
+ else
+ sprintf (msg, "%s -o '!%s %s%s' %s", Pilote, Impression,
+ ALPR, Imprimante, Document);
+ Afficher (msg);
+ ImpressionActive = True;
+ if ((ImpressionPid = fork ()) == 0) {
+ sprintf (msg, "!%s %s%s", Impression, ALPR, Imprimante);
+ Connecter_pipes ();
+ if (DeLaPage == True)
+ if (cp > 1)
+ etat = execlp (Pilote, Pilote, "-c", Copies, "-p", PageDebut,
+ "-n", Pages, "-o", msg, Document, '\00');
+ else
+ etat = execlp (Pilote, Pilote, "-p", PageDebut,
+ "-n", Pages, "-o", msg, Document, '\00');
+ else
+ if (cp > 1)
+ etat = execlp (Pilote, Pilote, "-c", Copies, "-o", msg, Document,
+ '\00');
+ else
+ etat = execlp (Pilote, Pilote, "-o", msg, Document, '\00');
+ if (etat == -1) {
+ printf ("%s est inaccessible.\n", Pilote);
+ exit (-1);
+ }
+ }
+ else if (ImpressionPid == -1) {
+ sprintf (msg, "fork: %s", sys_errlist[errno]);
+ Afficher (msg);
+ ImpressionActive = False;
+ }
+ XtPopdown (Popup_wg);
+}
+
+
+ /************************************************************
+ MenuVisionneursCB
+
+ Selection d'un visionneur
+ ************************************************************/
+
+static void MenuVisionneursCB (w, client_data, call_data)
+/****************************************/
+ Widget w;
+ XtPointer client_data,
+ call_data;
+{
+ int iv = (int) client_data;
+ strcpy (Visionneur, Visionneurs[iv]);
+ PostScript = False;
+ XtVaSetValues (Visionneurs_wg, XtNlabel, Visionneur, NULL);
+}
+
+
+ /************************************************************
+ MenuVisionneursPSCB
+
+ Selection d'un visionneur PostScript
+ ************************************************************/
+
+static void MenuVisionneursPSCB (w, client_data, call_data)
+/****************************************/
+ Widget w;
+ XtPointer client_data,
+ call_data;
+{
+ int iv = (int) client_data;
+ strcpy (Visionneur, VisionneursPS[iv]);
+ PostScript = True;
+ XtVaSetValues (Visionneurs_wg, XtNlabel, Visionneur, NULL);
+}
+
+
+ /************************************************************
+ AnnulerCB
+
+ Abandon de l'impression
+ ************************************************************/
+
+static void AnnulerCB (w, client_data, call_data)
+/****************************************/
+ Widget w;
+ XtPointer client_data,
+ call_data;
+{
+ XtPopdown (Popup_wg);
+}
+
+
+ /************************************************************
+ De_la_pageCB
+
+ Selection de l'option 'de la page nn a mm', desensibilisation
+ de l'option 'toutes les pages'
+ ************************************************************/
+
+static void De_la_pageCB (w, client_data, call_data)
+/****************************************/
+ Widget w;
+ XtPointer client_data,
+ call_data;
+{
+ Boolean etat;
+
+ XtVaGetValues (w, XtNstate, &etat, NULL);
+ if (etat == True) {
+ DeLaPage = True;
+ XtVaSetValues (DeLab_wg, XtNsensitive, True, NULL);
+ XtVaSetValues (De_wg, XtNsensitive, True, NULL);
+ XtVaSetValues (ALab_wg, XtNsensitive, True, NULL);
+ XtVaSetValues (A_wg, XtNsensitive, True, NULL);
+ } else {
+ DeLaPage = False;
+ XtVaSetValues (DeLab_wg, XtNsensitive, False, NULL);
+ XtVaSetValues (De_wg, XtNsensitive, False, NULL);
+ XtVaSetValues (ALab_wg, XtNsensitive, False, NULL);
+ XtVaSetValues (A_wg, XtNsensitive, False, NULL);
+ }
+}
+
+
+ /************************************************************
+ Toutes_pagesCB
+
+ Selection de l'option 'toutes les pages' et desensibilisation
+ de l'option 'de la page nn a mm'
+ ************************************************************/
+
+static void Toutes_pagesCB (w, client_data, call_data)
+/****************************************/
+ Widget w;
+ XtPointer client_data,
+ call_data;
+{
+ Boolean etat;
+
+ XtVaGetValues (w, XtNstate, &etat, NULL);
+ if (etat == True) {
+ ToutesPages = True;
+ XtVaSetValues (ToutesLab_wg, XtNsensitive, True, NULL);
+ } else {
+ ToutesPages = False;
+ XtVaSetValues (ToutesLab_wg, XtNsensitive, False, NULL);
+ }
+}
+
+
+ /************************************************************
+ ImprimerCB
+
+ Apparition du formulaire d'impression
+ ************************************************************/
+
+static void ImprimerCB (w, client_data, call_data)
+/****************************************/
+ Widget w;
+ XtPointer client_data,
+ call_data;
+{
+ Position x,
+ y;
+ Dimension largeur,
+ hauteur;
+
+ /* Calcul des coordonnees en fonction de celles de l'application */
+ XtVaGetValues (Toplevel,
+ XtNwidth, &largeur,
+ XtNheight, &hauteur,
+ NULL);
+ XtTranslateCoords (Form_wg, (Position) (largeur / 3), (Position) (hauteur / 3), &x, &y);
+
+ XtVaSetValues (Popup_wg,
+ XtNx, x,
+ XtNy, y,
+ NULL);
+
+ XtPopup (Popup_wg, XtGrabNone);
+ XRaiseWindow (Dpy, XtWindow (Popup_wg));
+}
+
+
+ /************************************************************
+ VisionnerCB
+
+ Execution de la commande de visionnage
+ ************************************************************/
+
+static void VisionnerCB (w, client_data, call_data)
+/****************************************/
+ Widget w;
+ XtPointer client_data,
+ call_data;
+{
+ char msg[255];
+ int pid;
+
+ if (Changer_repertoire (Repertoire) == -1) {
+ sprintf (msg, "%s: %s", Repertoire, sys_errlist[errno]);
+ Afficher (msg);
+ return;
+ }
+ Supprimer_suffixe_tex ();
+ if (PostScript == True) {
+ struct stat dvi,
+ ps;
+ char fdvi[LG_CHEMIN],
+ fps[LG_CHEMIN];
+ sprintf (fdvi, "%s.dvi", Document);
+ sprintf (fps , "%s.ps" , Document);
+ if (stat (fdvi, &dvi) == 0) {
+ if (stat (fps, &ps) == 0) {
+ if (dvi.st_mtime > ps.st_mtime) {
+ sprintf (msg, "PSST !! %s.ps n'est pas a jour ...");
+ Afficher (msg);
+ }
+ }
+ }
+ sprintf (msg, "%s %s.ps", Visionneur, Document);
+ }
+ else
+ sprintf (msg, "%s %s.dvi", Visionneur, Document);
+ Afficher (msg);
+ Positionner_arguments (msg);
+ if ((pid = fork ()) == 0) {
+ Connecter_pipes ();
+ if (execvp (TabArg[0], TabArg) == -1) {
+ printf ("%s n'a pas marche.\n", msg);
+ exit (-1);
+ }
+
+ }
+ else if (pid == -1) {
+ sprintf (msg, "fork: %s", sys_errlist[errno]);
+ Afficher (msg);
+ }
+}
+
+
+ /************************************************************
+ DessinerCB
+
+ Execution de la commande de dessin
+ ************************************************************/
+
+static void DessinerCB (w, client_data, call_data)
+/****************************************/
+ Widget w;
+ XtPointer client_data,
+ call_data;
+{
+ char msg[255];
+ int pid;
+
+ if (Changer_repertoire (Repertoire) == -1) {
+ sprintf (msg, "%s: %s", Repertoire, sys_errlist[errno]);
+ Afficher (msg);
+ return;
+ }
+ sprintf (msg, "%s", Dessin);
+ Afficher (msg);
+ Positionner_arguments (msg);
+ if ((pid = fork ()) == 0) {
+ Connecter_pipes ();
+ if (execvp (TabArg[0], TabArg) == -1) {
+ printf ("%s n'a pas marche.\n", msg);
+ exit (-1);
+ }
+
+ }
+ else if (pid == -1) {
+ sprintf (msg, "fork: %s", sys_errlist[errno]);
+ Afficher (msg);
+ }
+}
+
+
+ /************************************************************
+ PostScriptCB
+
+ Production d'un document PostScript
+ ************************************************************/
+
+static void PostScriptCB (w, client_data, call_data)
+/****************************************/
+ Widget w;
+ XtPointer client_data,
+ call_data;
+{
+ char msg[255];
+
+ if (Changer_repertoire (Repertoire) == -1) {
+ sprintf (msg, "%s: %s", Repertoire, sys_errlist[errno]);
+ Afficher (msg);
+ return;
+ }
+ if (PostScriptActif == True) {
+ sprintf (msg, "%s (PID=%d) encore actif !", Pilote, PostScriptPid);
+ Afficher (msg);
+ return;
+ }
+ Supprimer_suffixe_tex ();
+ sprintf (msg, "%s -o %s.ps %s", Pilote, Document, Document);
+ Afficher (msg);
+ Positionner_arguments (msg);
+ PostScriptActif = True;
+ if ((PostScriptPid = fork ()) == 0) {
+ Connecter_pipes ();
+ if (execvp (TabArg[0], TabArg) == -1) {
+ printf ("%s n'a pas marche.\n", msg);
+ exit (-1);
+ }
+
+ }
+ else if (PostScriptPid == -1) {
+ sprintf (msg, "fork: %s", sys_errlist[errno]);
+ Afficher (msg);
+ PostScriptActif = False;
+ }
+}
+
+
+ /************************************************************
+ FaconnerCB
+
+ Execution de la commande de faconnage. Plusieurs processus
+ pouvant etre lances, un groupe de processus est cree
+ permettant d'agir globalement avec les signaux
+ ************************************************************/
+
+static void FaconnerCB (w, client_data, call_data)
+/****************************************/
+ Widget w;
+ XtPointer client_data,
+ call_data;
+{
+ char msg[255];
+
+ if (Changer_repertoire (Repertoire) == -1) {
+ sprintf (msg, "%s: %s", Repertoire, sys_errlist[errno]);
+ Afficher (msg);
+ return;
+ }
+ if (FaconneurActif == True) {
+ sprintf (msg, "%s (PID=%d) encore actif !", Faconneur, FaconneurPid);
+ Afficher (msg);
+ return;
+ }
+ Reinitialiser_fenetre_interaction ();
+ Supprimer_suffixe_tex ();
+ sprintf (msg, "%s %s", Faconneur, Document);
+ Afficher (msg);
+ Positionner_arguments (msg);
+ FaconneurActif = True;
+ if ((FaconneurPid = fork ()) == 0) {
+ Connecter_pipes ();
+ if (execvp (TabArg[0], TabArg) == -1) {
+ printf ("%s est inaccessible.\n", Faconneur);
+ exit (-1);
+ }
+ }
+ else if (FaconneurPid == -1) {
+ sprintf (msg, "fork: %s", sys_errlist[errno]);
+ Afficher (msg);
+ FaconneurActif = False;
+ }
+}
+
+
+ /************************************************************
+ StatutCB
+
+ Interrogation de la file d'attente de l'imprimante
+ ************************************************************/
+
+static void StatutCB (w, client_data, call_data)
+/****************************************/
+ Widget w;
+ XtPointer client_data,
+ call_data;
+{
+ int pid;
+ char msg[255],
+ arg[255];
+
+ sprintf (msg, "%s %s%s", LPQ, ALPQ, Imprimante);
+ Afficher (msg);
+
+ sprintf (arg, "%s%s", ALPQ, Imprimante);
+
+ if ((pid = fork ()) == 0) {
+ Connecter_pipes ();
+ if (execlp (LPQ, LPQ, arg, '\00') == -1) {
+ printf ("%s: %s.\n", msg, sys_errlist[errno]);
+ exit (-1);
+ }
+ }
+ else if (pid == -1) {
+ sprintf (msg, "fork: %s", sys_errlist[errno]);
+ Afficher (msg);
+ }
+}
+
+
+ /************************************************************
+ EditerCB
+
+ Execution de la commande d'edition de texte
+ ************************************************************/
+
+static void EditerCB (w, client_data, call_data)
+/****************************************/
+ Widget w;
+ XtPointer client_data,
+ call_data;
+{
+ char msg[255];
+ int pid;
+
+ if (Changer_repertoire (Repertoire) == -1) {
+ sprintf (msg, "%s: %s", Repertoire, sys_errlist[errno]);
+ Afficher (msg);
+ return;
+ }
+ Supprimer_suffixe_tex ();
+ if (Ressources_xlatex.editeur_avec_xterm == True)
+ sprintf (msg, "xterm -e %s %s.tex", Editeur, Document);
+ else
+ sprintf (msg, "%s %s.tex", Editeur, Document);
+ Afficher (msg);
+ Positionner_arguments (msg);
+ if ((pid = fork ()) == 0) {
+ Connecter_pipes ();
+ if (execvp (TabArg[0], TabArg) == -1) {
+ printf ("%s: %s.\n", msg, sys_errlist[errno]);
+ exit (-1);
+ }
+ }
+ else if (pid == -1) {
+ sprintf (msg, "fork: %s", sys_errlist[errno]);
+ Afficher (msg);
+ }
+}
+
+
+ /************************************************************
+ QuitterCB
+
+ Fin de l'application Xlatex.
+ Tous les processus lances encore actifs sont termines.
+ ************************************************************/
+
+static void QuitterCB (w, client_data, call_data)
+/****************************************/
+ Widget w;
+ XtPointer client_data,
+ call_data;
+{
+ signal (SIGTERM, SIG_IGN);
+ killpg (Pgid, SIGTERM);
+ XtDestroyWidget (Toplevel);
+ exit (0);
+}
+
+/* --- ACTIONS --- */
+
+ /************************************************************
+ FocaliserACT
+
+ Entree de la souris dans un champ d'entree de texte.
+ Demarquage du pourtour du champ precedent
+ Marquage du pourtour du champ courant
+ Positionnement du focus
+ ************************************************************/
+
+static XtActionProc FocaliserACT (wg, event, params, num_params)
+/****************************************/
+ Widget wg;
+ XEvent *event;
+ String *params;
+ Cardinal *num_params;
+{
+ if (XtIsSensitive(wg)) {
+ XtVaSetValues (Focus, XtNborderColor, CouleurDeFond, NULL);
+ if (*num_params == 0) {
+ XtVaSetValues (wg, XtNborderColor, CouleurDeBordure, NULL);
+ Focus = wg;
+ }
+ XtSetKeyboardFocus (XtParent (wg), wg);
+ }
+ else
+ ChampSuivantACT(wg, event, params, num_params);
+
+ return (0);
+}
+
+
+ /************************************************************
+ ChampSuivantACT
+
+ Recherche du champ suivant dans le groupe de tabulation
+ Une fois trouve, focalisation sur celui-ci
+ ************************************************************/
+
+static XtActionProc ChampSuivantACT (wg, event, params, num_params)
+/****************************************/
+ Widget wg;
+ XEvent *event;
+ String *params;
+ Cardinal *num_params;
+{
+ ENTRY elem,
+ *elem_cherche;
+ char *nom;
+ int i;
+
+ nom = XtName(wg);
+ elem.key=nom;
+ elem_cherche=hsearch(elem,FIND);
+ i = *(int *)elem_cherche->data;
+ FocaliserACT (TabGroup[i].wg,event,params,num_params);
+ return (0);
+}
+
+
+ /***********************************************************
+ ControlACT
+
+ Entree d'une sequence d'interruption.
+ ^C -> envoi du signal SIGINT aux processus de faconnage
+ ^D -> envoi du signal SIGTERM aux processus de faconnage
+ ************************************************************/
+
+static XtActionProc ControlACT (wg, event, params, num_params)
+/****************************************/
+ Widget wg;
+ XKeyEvent *event;
+ String *params;
+ Cardinal *num_params;
+{
+ char car;
+ int lg;
+
+ /* Obtention du caractere frappe */
+ lg = XLookupString (event, &car, 1, NULL, NULL);
+
+ switch (car) {
+ case 3: /* Ctrl-C */
+ kill (FaconneurPid, SIGINT);
+ break;
+ case 4: /* Ctrl-D */
+ kill (FaconneurPid, SIGTERM);
+ break;
+ }
+
+ TamponEntree_lg = 0;
+ XawTextSetInsertionPoint (Interaction_wg, POINT_INSERTION);
+
+ return (0);
+}
+
+
+ /************************************************************
+ InsertACT
+
+ Entree d'un caractere dans la fenetre d'interaction.
+ Le caractere est memorise dans le tampon TamponEntree
+ ************************************************************/
+
+static XtActionProc InsertACT (wg, event, params, num_params)
+/****************************************/
+ Widget wg;
+ XKeyEvent *event;
+ String *params;
+ Cardinal *num_params;
+{
+ char str[32];
+ int lg;
+ register int i;
+
+ /* Obtention des caracteres frappes */
+ lg = XLookupString (event, str, sizeof (str), NULL, NULL);
+
+ strncat (TamponEntree, str, lg);
+ TamponEntree_lg += lg;
+
+ XawTextSetInsertionPoint (Interaction_wg, POINT_INSERTION);
+
+ return (0);
+}
+
+
+ /************************************************************
+ DeleteACT
+
+ Correction de frappe dans la fenetre d'interaction.
+ Le tampon TamponEntree est mis a jour.
+ ************************************************************/
+
+static XtActionProc DeleteACT (wg, event, params, num_params)
+/****************************************/
+ Widget wg;
+ XEvent *event;
+ String *params;
+ Cardinal *num_params;
+{
+ /*
+ On veille a ne pas corriger au dela des caracteres precedemment
+ introduits.
+ */
+ if (TamponEntree_lg > 0)
+ TamponEntree[--TamponEntree_lg] = '\00';
+
+ return (0);
+}
+
+
+ /************************************************************
+ SendACT
+
+ Frappe d'un retour a la ligne dans la fenetre d'interaction.
+ Le contenu du tampon TamponEntree est envoye dans le pipe
+ Pipe_entree[1].
+ ************************************************************/
+
+static XtActionProc SendACT (wg, event, params, num_params)
+/****************************************/
+ Widget wg;
+ XEvent *event;
+ String *params;
+ Cardinal *num_params;
+{
+ /* Envoi de la commande */
+ strcat (TamponEntree, "\n");
+ TamponEntree_lg++;
+
+ (void) write (Pipe_entree[1], TamponEntree, TamponEntree_lg);
+
+ /*
+ Reinitialisation de TamponEntree et mise a jour de la position dans la
+ fenetre d'interaction
+ */
+ TamponEntree[0] = '\00';
+ TamponEntree_lg = 0;
+
+ return (0);
+}
+
+
+/*
+ * ---------------------------------------------------------------------------
+ * PROGRAMME PRINCIPAL
+ * ---------------------------------------------------------------------------
+ */
+main (argc, argv)
+/****************************************/
+ int argc;
+ char *argv[];
+{
+/* fprintf (stderr, BANNER, VERSION);*/
+
+ if ((Pgid = fork ()))
+ exit (0);
+
+/*
+ * La, c'est un peu galere ! Il faut assurer que ce processus est leader
+ * du groupe qu'il va dominer
+ * Sur Sun (SunOS 4.x), setsid() ou setpgrp(0,0) serait tout indique ...
+ */
+
+#ifdef gould
+ setpgrp (0, Pgid);
+#else
+ setsid ();
+#endif /* gould */
+
+ Initialiser_pipes ();
+ Initialiser_Xt (argc, argv);
+
+ Creer_widgets ();
+ Creer_popup_imprimer ();
+
+ Installer_accelerateurs ();
+
+ XtRealizeWidget (Toplevel);
+
+ XtAppMainLoop (Xlatex_app_con);
+}
diff --git a/support/xlatex/xlatex.dessiner b/support/xlatex/xlatex.dessiner
new file mode 100644
index 0000000000..b05adfab89
--- /dev/null
+++ b/support/xlatex/xlatex.dessiner
@@ -0,0 +1,20 @@
+#define xlatex_width 54
+#define xlatex_height 28
+static char xlatex_bits[] = {
+ 0x00, 0x00, 0x40, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00,
+ 0x10, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x20,
+ 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x40, 0x00, 0x00,
+ 0x00, 0x10, 0x00, 0x00, 0x40, 0x00, 0xf0, 0xff, 0xff, 0x0f, 0x00, 0x40,
+ 0x00, 0x10, 0x00, 0x10, 0x08, 0x00, 0x40, 0x00, 0x10, 0x00, 0x10, 0x08,
+ 0x00, 0x40, 0x00, 0x10, 0x00, 0x10, 0x08, 0x00, 0x40, 0x00, 0x10, 0x00,
+ 0x10, 0x08, 0x00, 0x40, 0x00, 0x10, 0x00, 0x10, 0x08, 0x00, 0x40, 0x00,
+ 0x10, 0x00, 0x10, 0x08, 0x02, 0x40, 0x00, 0x10, 0x00, 0x20, 0x08, 0x04,
+ 0x20, 0x00, 0x10, 0x00, 0x20, 0x08, 0x18, 0x20, 0x00, 0x10, 0x00, 0x40,
+ 0x08, 0x20, 0x10, 0x00, 0x10, 0x00, 0x40, 0x08, 0x40, 0x10, 0x00, 0x10,
+ 0x00, 0x80, 0x08, 0x80, 0x09, 0x00, 0x10, 0x00, 0x00, 0x09, 0x00, 0x06,
+ 0x00, 0x10, 0x00, 0x00, 0x0e, 0x00, 0x07, 0x00, 0x10, 0x00, 0x00, 0x18,
+ 0xc0, 0x18, 0x00, 0x10, 0x00, 0x00, 0xe8, 0x3f, 0x20, 0x00, 0xf0, 0xff,
+ 0xff, 0x0f, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x20};
diff --git a/support/xlatex/xlatex.dvips b/support/xlatex/xlatex.dvips
new file mode 100644
index 0000000000..28fca1db71
--- /dev/null
+++ b/support/xlatex/xlatex.dvips
@@ -0,0 +1,20 @@
+#define xlatex_width 54
+#define xlatex_height 28
+static char xlatex_bits[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0xe0, 0x8f, 0xc7, 0xbd, 0x3f, 0xbc, 0x00, 0xc0, 0x18,
+ 0x83, 0x18, 0x73, 0xc6, 0x00, 0xc0, 0x30, 0xc3, 0x18, 0x63, 0x86, 0x00,
+ 0xc0, 0x30, 0x46, 0x18, 0x63, 0x0e, 0x00, 0xc0, 0x30, 0x66, 0x18, 0x63,
+ 0x3c, 0x00, 0xc0, 0x30, 0x26, 0x18, 0x3f, 0x70, 0x00, 0xc0, 0x30, 0x2c,
+ 0x18, 0x03, 0xe0, 0x00, 0xc0, 0x30, 0x3c, 0x18, 0x03, 0xc2, 0x00, 0xc0,
+ 0x18, 0x18, 0x18, 0x03, 0xc6, 0x00, 0xe0, 0x0f, 0x18, 0xbc, 0x07, 0x7e,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00};
diff --git a/support/xlatex/xlatex.editer b/support/xlatex/xlatex.editer
new file mode 100644
index 0000000000..c404dd1ae3
--- /dev/null
+++ b/support/xlatex/xlatex.editer
@@ -0,0 +1,20 @@
+#define editer_width 54
+#define editer_height 28
+static char editer_bits[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0xe6, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x08, 0x44, 0xe0,
+ 0x01, 0x00, 0x00, 0x00, 0x08, 0x18, 0x81, 0x0f, 0x00, 0x00, 0x00, 0x1c,
+ 0x30, 0x04, 0xf0, 0x00, 0x00, 0x00, 0x1c, 0xd0, 0x38, 0x80, 0x01, 0x00,
+ 0x00, 0x08, 0x80, 0xc3, 0x03, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x06,
+ 0x60, 0x00, 0x00, 0x00, 0x00, 0x30, 0x38, 0xe0, 0x00, 0x00, 0x00, 0x00,
+ 0xc0, 0xc0, 0x80, 0x01, 0x00, 0x00, 0x00, 0x80, 0x07, 0x06, 0x07, 0x00,
+ 0x00, 0x00, 0x00, 0x1c, 0x18, 0x02, 0x80, 0xff, 0x07, 0x00, 0xe0, 0x20,
+ 0x06, 0x00, 0x01, 0x02, 0x00, 0x00, 0x07, 0x06, 0x00, 0x01, 0x02, 0x00,
+ 0x00, 0xb8, 0x05, 0xf0, 0x00, 0x3c, 0x00, 0x00, 0xc0, 0x00, 0x08, 0x00,
+ 0x40, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00,
+ 0xf8, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0x7f, 0x00, 0x00,
+ 0x00, 0x00, 0xf8, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0x3f,
+ 0x00, 0x00, 0x00, 0x00};
diff --git a/support/xlatex/xlatex.faconner b/support/xlatex/xlatex.faconner
new file mode 100644
index 0000000000..5b1edd5ce9
--- /dev/null
+++ b/support/xlatex/xlatex.faconner
@@ -0,0 +1,17 @@
+#define tex_width 54
+#define tex_height 28
+static char tex_bits[] = {
+ 0xff,0xff,0x07,0x00,0x7f,0x00,0xff,0xff,0xff,0x07,0x00,0x1c,0x00,0xcc,0x07,
+ 0x07,0x07,0x00,0x1c,0x00,0xc4,0x03,0x07,0x06,0x00,0x38,0x00,0xc6,0x01,0x07,
+ 0x04,0x00,0x70,0x00,0xc3,0x01,0x07,0x04,0x00,0x70,0x80,0xc1,0x00,0x07,0x00,
+ 0x00,0xe0,0x80,0xc0,0x00,0x07,0xfc,0xff,0xc1,0x61,0xc0,0x00,0x07,0x1c,0xc0,
+ 0x81,0x33,0xc0,0x00,0x07,0x1c,0x80,0x01,0x17,0xc0,0x00,0x07,0x1c,0x00,0x01,
+ 0x1f,0xc0,0x00,0x07,0x1c,0x00,0x01,0x0e,0xc0,0x00,0x07,0x1c,0x00,0x00,0x1e,
+ 0xc0,0x00,0x07,0x1c,0x00,0x00,0x1e,0xc0,0x00,0x07,0x1c,0x08,0x80,0x71,0xc0,
+ 0x00,0x07,0x1c,0x08,0xc0,0x70,0xc0,0x00,0x07,0xfc,0x0f,0x40,0xe0,0xc0,0x00,
+ 0x07,0xfc,0x0f,0x60,0xc0,0xc1,0x00,0x07,0x1c,0x08,0x30,0xc0,0xc1,0x00,0x07,
+ 0x1c,0x08,0x18,0x80,0xc3,0x00,0x07,0x1c,0x00,0x08,0x00,0xc7,0xc0,0x1f,0x1c,
+ 0x00,0x7f,0x80,0xff,0x00,0x00,0x1c,0x00,0x00,0x00,0xc0,0x00,0x00,0x1c,0x00,
+ 0x01,0x00,0xc0,0x00,0x00,0x1c,0x00,0x01,0x00,0xc0,0x00,0x00,0x1c,0x80,0x01,
+ 0x00,0xc0,0x00,0x00,0x1c,0xc0,0x01,0x00,0xc0,0x00,0x00,0xfc,0xff,0x01,0x00,
+ 0xc0};
diff --git a/support/xlatex/xlatex.imprimer b/support/xlatex/xlatex.imprimer
new file mode 100644
index 0000000000..51ca8314fc
--- /dev/null
+++ b/support/xlatex/xlatex.imprimer
@@ -0,0 +1,21 @@
+#define imprimer_width 54
+#define imprimer_height 28
+static char imprimer_bits[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x20, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x20,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x0f, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xa0, 0x00, 0x00, 0xf8,
+ 0x03, 0x00, 0x08, 0xa0, 0x00, 0x00, 0x08, 0x02, 0x00, 0x08, 0xa0, 0x00,
+ 0x00, 0xa8, 0x02, 0x00, 0x04, 0xa0, 0x00, 0x00, 0xf8, 0x03, 0x00, 0x02,
+ 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xe0, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0xfc, 0xf8, 0xff,
+ 0xff, 0xff, 0x9f, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x84,
+ 0xf8, 0xff, 0xff, 0xff, 0x9f, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x80,
+ 0x00, 0xe0, 0xf8, 0xff, 0xff, 0xff, 0x9f, 0x00, 0xc0, 0x00, 0x00, 0x00,
+ 0x00, 0x80, 0x00, 0x80, 0xf8, 0xff, 0xff, 0xff, 0x9f, 0x00, 0x00, 0x01,
+ 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0x00,
+ 0x00, 0x7c, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00,
+ 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00 };
+
diff --git a/support/xlatex/xlatex.man b/support/xlatex/xlatex.man
new file mode 100644
index 0000000000..50122d5ab4
--- /dev/null
+++ b/support/xlatex/xlatex.man
@@ -0,0 +1,480 @@
+.TH XLATEX 1 "24 aout 1994" "Xlatex Version 3.3c"
+.\" so /usr/lib/ms/s.acc
+
+.\" @(#)ms.acc 1.1 86/07/08 SMI; from UCB 4.2
+. \" AM - accent mark definitions
+.\" modif accent aigu troff CICB, E. Picheral
+.\" modif cedille et trema CICB, E. Picheral
+.\" modif ^ et .. , accents majuscules, distinction italique CICB, E. Picheral
+.bd S B 3
+. \" fudge factors for nroff and troff
+.if n \{\
+. ds #H 0
+. ds #V .8m
+. ds #F .3m
+. ds #[ \f1
+. ds #] \fP
+.\}
+.if t \{\
+. ds #H (-(1u-(\\\\n(.fu%2u))*.13m)
+. ds #J 0
+. ds #K (-(1u-(\\\\n(.fu%2u))*.08m)
+. ds #L (-(1u-(\\\\n(.fu%2u))*.04m)
+. ds #V .6m
+. ds #W (-(1u-(\\\\n(.fu%2u))*.05m)
+. ds #X (-(1u-(\\\\n(.fu%2u))*.03m)
+. ds #Y -.25m
+. ds #F 0
+. ds #[ \&
+. ds #] \&
+.\}
+. \" simple accents for nroff and troff
+.if n \{\
+. ds ' "
+. ds ` "
+. ds ^ "
+. ds , "
+. ds ~ "
+. ds ? ?
+. ds ! !
+. ds / "
+. ds : "
+.\}
+.if t \{\
+. ds ' \\k:\h'-(\\n(.wu*9/10-\*(#J)'\'\h"|\\n:u"
+. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#K)'\v'\*(#W'\`\v'-\*(#W'\h'|\\n:u'
+. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#L)'^\h'|\\n:u'
+. ds , \\k:\h'-(\\n(.wu*8/10)'\(cd\h'|\\n:u'
+. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'\v'-.03m'~\v'.03m'\h'|\\n:u'
+. ds ? \s-2c\h'-\w'c'u*7/10'\u\h'\*(#H'\zi\d\s+2\h'\w'c'u*8/10'
+. ds ! \s-2\(or\s+2\h'-\w'\(or'u'\v'-.8m'.\v'.8m'
+. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
+. ds q o\h'-\w'o'u*8/10'\s-4\v'.4m'\z\(*i\v'-.4m'\s+4\h'\w'o'u*8/10'
+. ds : \\k:\h'-(\\n(.wu*9/10-\*(#K)'\(..\h'|\\n:u'
+. ds G' \\k:\h'-(\\n(.wu*8/10-\*(#J)'\v'\*(#Y'\'\v'-\*(#Y'\h'|\\n:u'
+. ds G` \\k:\h'-(\\n(.wu*7/10-\*(#K)'\v'\*(#Y'\`\v'-\*(#Y'\h'|\\n:u'
+. ds G^ \\k:\h'-(\\n(.wu*8/10-\*(#J)'\v'\*(#Y'^\v'-\*(#Y'\h'|\\n:u'
+. ds G: \\k:\h'-(\\n(.wu*8/10-\*(#J)'\v'\*(#Y'\(..\v'-\*(#Y'\h'|\\n:u'
+.\}
+. \" troff and (daisy-wheel) nroff accents
+. \" .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
+.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
+.ds v \\k:\h'-(\\n(.wu*9/10-\*(#H)'\v'-\*(#V'\*(#[\s-4v\s0\v'\*(#V'\h'|\\n:u'\*(#]
+.ds _ \\k:\h'-(\\n(.wu*9/10-\*(#H+(\*(#F*2/3))'\v'-.4m'\z\(hy\v'.4m'\h'|\\n:u'
+.ds . \\k:\h'-(\\n(.wu*8/10)'\v'\*(#V*4/10'\z.\v'-\*(#V*4/10'\h'|\\n:u'
+.ds 3 \*(#[\v'.2m'\s-2\&3\s0\v'-.2m'\*(#]
+.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
+.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
+.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
+.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
+.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
+.ds ae a\h'-(\w'a'u*4/10)'e
+.ds Ae A\h'-(\w'A'u*4/10)'E
+.ds oe o\h'-(\w'o'u*4/10)'e
+.ds Oe O\h'-(\w'O'u*4/10)'E
+. \" corrections for vroff
+.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
+.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
+. \" for low resolution devices (crt and lpr)
+.if \n(.H>23 .if \n(.V>19 \
+\{\
+. ds : "
+. ds 8 B
+. ds v "
+. ds _ \h'-1'^
+. ds . \h'-1'.
+. ds 3 3
+. ds o a
+. ds d- d\h'-1'\(ga
+. ds D- D\h'-1'\(hy
+. ds th \o'bp'
+. ds Th \o'LP'
+. ds ae ae
+. ds Ae AE
+. ds oe oe
+. ds Oe OE
+.\}
+.rm #[ #] #H #V #F C
+
+.SH SYNTAXE D'APPEL
+.B xlatex
+[\fIarguments\ \ Toolkit\fP]\ \ [\fIarguments\ de\ contro\*^le\fP]\ \ [\fBdocument\fP]
+
+.SH DESCRIPTION
+.PP
+
+\fIXlatex\fP est une application X destine\*'e a\*` simplifier le fac\*,onnage
+de documents TeX ou LaTeX, a\*` savoir l'exe\*'cution d'une session
+d'e\*'dition de texte, la soumission d'un document \fI.tex\fP a\*` un
+processeur de \fIfac\*,onnage\fP, l'e\*'preuvage sur e\*'cran par un
+\fIvisionneur\fP, l'impression du \fI.dvi\fP par le pilote d'impression
+Postscript \fBdvips\fP. La constitution du document \fI.tex\fP est de
+l'entie\*`re responsabilite\*' de l'utilisateur.
+
+.SH ARGUMENT
+.sp 1
+.TP 1c
+\fBdocument\fP
+chemin d'acce\*`s absolu ou relatif du document LaTeX. Si le suffixe \fI.tex\fP
+est spe\*'cifie\*', il est automatiquement enleve\*'. Par de\*'faut, le
+fichier \fBdocument.tex\fP est pris dans le re\*'pertoire courant.
+.PP
+
+.SH ARGUMENTS DE CONTROLE
+.sp 1
+.TP 1c
+\fB-gfont\fP\ \ \fIfont\fP
+police ge\*'ne\*'rique utilise\*'e dans la pre\*'sentation de l'application
+\fIxlatex\fP. Se reporter a\*` la description de la ressource
+\fBgenericFont\fP.
+.PP
+
+
+.SH ENVIRONNEMENT DE TRAVAIL PAR DEFAUT
+.sp 1
+La plupart de ces valeurs peuvent e\*^tre change\*'es par les \fBressources\fP.
+
+.ta 3c
+.sp 1
+re\*'pertoire re\*'pertoire de travail
+.sp 0
+document \fBdocument.tex\fP
+.sp 0
+fac\*,onneur \fBlatex\fP
+.sp 0
+visionneur \fBxdvi\fP
+.sp 0
+pilote \fBdvips\fP
+.sp 0
+dessin \fBxfig\fP
+.sp 0
+impression \fBlpr\fP
+.sp 0
+imprimante de\*'finie par la variable d'environnement \fBPRINTER\fP
+.sp 0
+e\*'diteur de\*'finie par la variable d'environnement \fBEDITOR\fP
+.DT
+
+.SH LA FENETRE XLATEX
+
+La fene\*^tre \fIXlatex\fP est divise\*'e en trois parties :
+.RS 1c
+- les boutons de commande
+.sp 0
+- les champs de\*'finissant l'environnement de travail
+.sp 0
+- une fene\*^tre d'interaction
+.RE
+
+.sp 1
+.B Les boutons de commande
+.sp 1
+
+.TP 2.5c
+\fBFACONNER\fP
+soumet le document courant au processeur de fac\*,onnage\ ;
+.TP 2.5c
+\fBDESSINER\fP
+active un outil de dessin\ ;
+.TP 2.5c
+\fBVISIONNER\fP
+e\*'preuve le document sur e\*'cran avec le visionneur courant\ ;
+.TP 2.5c
+\fBDVIPS\fP
+ge\*'ne\*'ration du document PostScript\ ;
+.TP 2.5c
+\fBIMPRIMER\fP
+fait apparai\*^tre un formulaire permettant de se\*'lectionner les pages
+a\*` imprimer, le nombre de copies, la commande d'impression et ses arguments
+optionnels ainsi que l'imprimante.
+L'impression doit e\*^tre confirme\*'e en cliquant dans le
+bouton de commande \fIOk\fP ou abandonne\*'e en cliquant dans
+\fIAnnuler\fP\ ;
+.TP 2.5c
+\fBSTATUT IMPR\fP
+e\*'tat de la file d'attente de l'imprimante se\*'lectionne\*'e\ ;
+.TP 2.5c
+\fBE\*'DITEUR\fP
+session \fIxterm\fP exe\*'cutant un e\*'diteur de texte sur le document
+courant\ ;
+.TP 2.5c
+\fBQUITTER\fP
+sortie de l'application \fIxlatex\fP.
+.PP
+
+.sp 2
+.B
+Les champs de de\*'finition de l'environnement de travail
+.sp 0
+
+Les champs pouvant e\*^tre interactivement modifie\*'s sont :
+.RS 1c
+.TP 2.5c
+\fBre\*'pertoire\fP
+re\*'pertoire courant ou\*` se trouvent le ou les documents \fI.tex\fP
+.TP 2.5c
+\fBdocument\fP
+nom du fichier TeX ou LaTeX de re\*'fe\*'rence (sans le suffixe \fI.tex\fP)
+.TP 2.5c
+\fBdessin\fP
+outil de dessin
+.TP 2.5c
+\fBvisionneur\fP
+commande d'e\*'preuvage sur e\*'cran du document. En cliquant dedans on fait
+apparai\*^tre une double liste de visionneurs, la premie\*`re liste e\*'tant
+relative aux visionneurs \fIDVI\fP a\*` partir du document \fB.dvi\fP
+(ressource \fBvisionneurs\fP), la seconde
+aux visionneurs \fIPostScript\fP a\*` partir du document \fB.ps\fP
+(ressource \fBvisionneursPS\fP).
+.TP 2.5c
+\fBfac\*,onneur\fP
+commande de fac\*,onnage du document \fI.tex\fP
+.TP 2.5c
+\fBe\*'diteur\fP
+e\*'diteur de texte
+.TP 2.5c
+\fBpilote\fP
+commande d'appel du pilote PostScript (boutons \fBDVIPS\fP et \fBIMPRIMER\fP)
+.RE
+
+Le passage d'un champ a\*` l'autre est aussi possible par tabulation
+ou par la touche retour a\*` la ligne.
+
+.PP
+
+.sp 2
+.B
+La fene\*^tre d'interaction
+.sp 0
+
+La fene\*^tre d'interaction rec\*,oit tous les messages produits par
+l'exe\*'cution des commandes telles ques \fIlatex, dvips, xdvi\fP et \fIlpq\fP.
+Au besoin, l'utilisateur peut introduire du texte dans cette fene\*^tre pour
+s'acquitter de certaines interventions.
+
+Les se\*'quences \fB^C\fP et \fP^D\fP ge\*'ne\*`rent le signal
+\fPSIGINT\fP et \fPSIGTERM\fP au processus de \fIfac\*,onnage\fP.
+
+
+.SH NOTES
+.PP
+Les commandes associe\*'es aux boutons sont directement exe\*'cute\*'es par
+\fIexecv\fP (3) ou \fIexecl\fP (3). En conse\*'quence, ces commandes ne
+peuvent e\*^tre des shell-scripts.
+
+
+.SH ACCELERATEURS
+.PP
+Utilisables n'importe ou\*` dans la fene\*^tre \fIxlatex\fP, les
+acce\*'le\*'rateurs re\*'alisent les me\*^mes actions que les boutons de
+commande\ :
+.sp 1
+.RS 1c
+Meta-f fac\*,onner
+.sp 0
+Meta-d dessiner
+.sp 0
+Meta-i imprimer
+.sp 0
+Meta-v visionner
+.sp 0
+Meta-p postscript
+.sp 0
+Meta-s statut d'impression
+.sp 0
+Meta-e session d'e\*'dition de texte
+.sp 0
+Meta-q quitter l'application
+.RE
+
+.SH RESSOURCES
+.PP
+Les ressources peuvent figurer dans le fichier \fB~/.Xdefaults\fP sous la
+forme\ :
+.sp 1
+ \fBXlatex.<ressource>: valeur\fP
+.sp 1
+Les diffe\*'rentes \fB<ressources>\fP sont\ :
+.TP 2.5c
+\fBrepertoireInitial\fP
+re\*'pertoire de travail
+.TP 2.5c
+\fBfaconneur\fP
+commande de fac\*,onnage des documents (\fBlatex\fP par de\*'faut)
+.TP 2.5c
+\fBvisionneurs\fP
+liste des visionneurs (se\*'pare\*'s par un espace ou une virgule)
+travaillant a\*` partir du fichier \fB.dvi\fP. Un aste\*'risque pre\*'ce\*'dant
+une entre\*'e de\*'signe le visionneur par de\*'faut.
+.TP 2.5c
+\fBediteur\fP
+e\*'diteur de texte (celui de\*'fini dans la variable d'environnement
+\fBEDITOR\fP par de\*'faut). Voir la ressource associe\*'e
+\fBediteurAvecXterm\fP
+.TP 2.5c
+\fBpilote\fP
+commande d'appel du pilote PostScript (\fBdvips\fP) par de\*'faut)
+.TP 2.5c
+\fBimpression\fP
+commande d'impression du document PostScript (\fBlpr\fP par de\*'faut)
+.TP 2.5c
+\fBdessin\fP
+commande de dessin (\fBxfig\fP par de\*'faut)
+.TP 2.5c
+\fBediteurAvecXterm\fP
+indique s'il faut appeler l'e\*'diteur de texte sous le contro\*^le d'une
+session \fBxterm\fP ou pas (\fBtrue\fP par de\*'faut, il en est ainsi pour tous
+les e\*'diteurs qui ne sont pas une application X)
+
+.PP
+.SH EXEMPLES DE RESSOURCES
+.sp 1
+Xlatex.visionneurs: xdvi, texx
+.sp 1
+Xlatex.visionneurPS: ghostview, *gs
+.sp 1
+.DT
+
+Les ressources standard \fBbitmap\fP des boutons de commande peuvent e\*^tre
+positionne\*'es\ :
+.sp 1
+Xlatex*faconner.bitmap: xlatex.faconner
+.sp 0
+Xlatex*visionner.bitmap: xlatex.visionner
+.sp 0
+Xlatex*imprimer.bitmap: xlatex.imprimer
+.sp 0
+Xlatex*dessiner.bitmap: xlatex.dessiner
+.sp 0
+Xlatex*editer.bitmap: xlatex.editer
+.sp 0
+Xlatex*statut.bitmap: xlatex.statut
+.sp 0
+Xlatex*quitter.bitmap: xlatex.quitter
+.sp 1
+
+.PP
+.SH HIERARCHIE DES WIDGETS
+.sp 1
+.ta 2c 3c 4c 5c 6c 7c 8c 9c
+.sp 0
+Xlatex xlatex
+.sp 0
+ Form form
+.sp 0
+ Command editer
+.sp 0
+ Command dessiner
+.sp 0
+ Command faconner
+.sp 0
+ Command visionner
+.sp 0
+ Command postscript
+.sp 0
+ Command imprimer
+.sp 0
+ Command statut
+.sp 0
+ Command quitter
+.sp 0
+ Label repertoireLab
+.sp 0
+ Text repertoire
+.sp 0
+ Label dessinLab
+.sp 0
+ Text dessin
+.sp 0
+ Label documentLab
+.sp 0
+ Text document
+.sp 0
+ Label visionneursLab
+.sp 0
+ MenuButton visionneurs
+.sp 0
+ SimpleMenu menuVisionneurs
+.sp 0
+ SmeBSB xdvi
+.sp 0
+ SmeBSB texx
+.sp 0
+ SmeLine separateur
+.sp 0
+ SmeBSB ghostview
+.sp 0
+ SmeBSB gs
+.sp 0
+ Label faconneurLab
+.sp 0
+ Text faconneur
+.sp 0
+ Label editeurLab
+.sp 0
+ Text editeur
+.sp 0
+ Label piloteLab
+.sp 0
+ Text pilote
+.sp 0
+ Text interaction
+.sp 0
+ TransientShell popup
+.sp 0
+ Form form
+.sp 0
+ Label impressionLab
+.sp 0
+ Text impression
+.sp 0
+ Label imprimanteLab
+.sp 0
+ Text imprimante
+.sp 0
+ Toggle toutesTog
+.sp 0
+ Label toutesLab
+.sp 0
+ Toggle deTog
+.sp 0
+ Label deLab
+.sp 0
+ Text de
+.sp 0
+ Label aLab
+.sp 0
+ Text a
+.sp 0
+ Command ok
+.sp 0
+ Command annuler
+.sp 0
+ Label copiesLab
+.sp 0
+ Text copies
+.sp 0
+.PP
+.SH FICHIERS
+.sp 0
+/usr/lib/X11/app-defaults/Xlatex
+.sp 0
+~/.Xdefaults
+
+
+.SH PROBLEMES RECENCES
+.sp 1
+Lorsque \fBXlatex\fP se termine, il envoie le signal de terminaison \fBSIGTERM\fP
+au groupe de processus qu'il domine. Cependant si certains d'entre eux ont cre\*'e
+un nouveau groupe ou une session, ce signal ne sera pas effectif.
+
+.SH AUTEUR
+.PP
+Mario Dragone
+.br
+IUP Vannes (France)
+.br
+
+Envoyer commentaires et rapports d'anomalies a\*`\ :
+.sp 1
+ dragone@iu-vannes.fr
diff --git a/support/xlatex/xlatex.man.english b/support/xlatex/xlatex.man.english
new file mode 100644
index 0000000000..4ebd5066b1
--- /dev/null
+++ b/support/xlatex/xlatex.man.english
@@ -0,0 +1,364 @@
+.TH XLATEX 1 "august 24, 1994" "Xlatex Version 3.3c"
+
+
+.SH SYNTAX
+.B xlatex
+[\fIToolkit args\fP] [\fIcontrol args\fP] [\fBdocument\fP]
+
+.SH DESCRIPTION
+.PP
+\fIXlatex\fP has been designed to simplify the use of text processing tools
+relatives to \fITeX\fP or \fILaTeX\fP. It's a main board with \fBcommand
+buttons\fP to initiate the work, \fPchangeable fields\fP representing the
+working environment and a \fBscrollable input/output window\fP receiving
+diagnostic messages. Xlatex is \fBNOT\fP a new previewer nor a \fIwysiwyg\fP
+package: it's just a fast and practice commands sequencer.
+
+.SH ARGUMENTS
+.sp 1
+.TP 1c
+\fBdocument\fP
+absolute or relative path to the \fILaTeX\fP document. The \fI.tex\fP suffix
+may or may not be specified. By default \fBdocument.tex\fP is assumed.
+
+.PP
+
+.SH CONTROL ARGUMENT
+.sp 1
+.TP 1c
+\fB-gfont\fP \fIfont\fP
+Generic font for the various fonts used in the design of \fIxlatex\fP. See \fB
+font resources\fP below.
+
+.PP
+
+.SH DEFAULT XLATEX WORKING ENVIRONMENT
+
+Most of these defaults may be overriden by resources specification.
+.ta 4c
+.sp 1
+directory current working directory
+.sp 0
+document \fBdocument.tex\fP
+.sp 0
+text processor \fBlatex\fP
+.sp 0
+previewer \fBxdvi\fP
+.sp 0
+driver \fBdvips\fP
+.sp 0
+drawing tool \fBxfig\fP
+.sp 0
+printer command \fBlpr\fP
+.sp 0
+printer station defined in the \fBPRINTER\fP environment variable
+.sp 0
+text editor defined in the \fBEDITOR\fP environment variable
+.DT
+
+.PP
+
+.SH THE XLATEX WINDOW
+
+The xlatex window is divided in three parts:
+.RS 1c
+- command buttons
+.sp 0
+- fields defining the working environment
+.sp 0
+- scrollable input/output window
+.RE
+
+.sp 1
+.B command buttons
+.sp 1
+.TP 2.5c
+\fBPROCESS\fP
+submit the document to the text processor
+.TP 2.5c
+\fBDRAW\fP
+call a drawing tool
+.TP 2.5c
+\fBVIEW\fP
+call the previewer
+.TP 2.5c
+\fBPOSTSCRIPT\fP
+generate a PostScript document
+.TP 2.5c
+\fBPRINT\fP
+popup a form which allow you to specify the printing command and its optional
+arguments, the printer, the pages range and the number of copies. By clicking
+in the \fBOK\fP button, the \fBdvips\fP command is executed in pipe with the
+\fIprinter\fP command.
+.TP 2.5c
+\fBSTATUS\fP
+show the printer queue.
+.TP 2.5c
+\fBEDIT\fP
+invoke the text editor with the current document. If the \fBediteurAvecXterm\fP
+resource has a \fBtrue\fP value, the editor is invoked inside an \fBxterm\fP
+session.
+.TP 2.5c
+\fBQUIT\fP
+quit the application.
+
+.PP
+
+.sp 1
+.B fields defining the working environment
+.sp 1
+These fields can be modified at any time.
+.RS 1c
+.TP 2.5c
+\fBdirectory\fP
+current working directory
+.TP 2.5c
+\fBdocument\fP
+current document (the \fI.tex\fP doesn't appear)
+.TP 2.5c
+\fBpreviewer\fP
+current previewer. Cliking inside popups a menu showing a list of \fIdvi\fP
+previewers (see \fBvisionneurs\fP resource) and next a list of \fIPostScript\fP
+previewers (see \fBvisionneursPS\fP resource).
+.TP 2.5c
+\fBtext processor\fP
+current text processor
+.TP 2.5c
+\fBdrawing tool\fP
+current drawing tool.
+.TP 2.5c
+\fBeditor\fP
+current text editor.
+.RE
+.PP
+.sp 1
+.B scrolled input/output window
+.sp 1
+
+This window receives all the messages produced by the execution of
+commands submited like \fIlatex\fP and so on. You can type
+messages which are send to the current executing command.
+
+Note that the \fB^C\fP and \fP^D\fP sequences send the \fPSIGINT\fP and
+\fPSIGTERM\fP respectively to the last submited text processor.
+
+.SH
+NOTES
+.PP
+Commands linked with buttons are executed by \fIexecv\fP (3) or
+\fIexecl\fP (3). Therefore, these commands can't be shell scripts.
+
+
+.SH ACCELERATORS
+.PP
+Available everywhere in the xlatex window, accelerators have the same
+effect as command buttons. Here are the relationships between
+accelerators and the command buttons:
+.sp 1
+.RS 1c
+Meta-t PROCESS (\fBT\fPeX)
+.sp 0
+Meta-f FIG
+.sp 0
+Meta-p PRINT
+.sp 0
+Meta-d DVIPS
+.sp 0
+Meta-v VIEW
+.sp 0
+Meta-s STATUS
+.sp 0
+Meta-e EDIT
+.sp 0
+Meta-q QUIT
+.RE
+
+.SH RESSOURCES
+.PP
+Resources may figure in your X-defaults resources file, \fBXlatex\fP is
+the application name.
+.TP 2.5c
+\fBrepertoireInitial\fP
+initial directory. If not specified, it's the current working directory.
+It may be usefull to specify this resource if you always invoke xlatex
+from a menu.
+.TP 2.5c
+\fBfaconneur\fP
+text processor (\fBlatex\fP by default)
+.TP 2.5c
+\fBvisionneurs\fP
+list of device-independent previewers (separated by a space or comma). A default
+previewer can be set by preceding its name by a wildcard character (*).
+.TP 2.5c
+\fBvisionneursPS\fP
+list of PostScript previewers (separated by a space or comma). A default
+previewer can be set by preceding its name by a wildcard character (*).
+.TP 2.5c
+\fBediteur\fP
+text editor (issued by default from the \fBEDITOR\fP environment
+variable)
+.TP 2.5c
+\fBpilote\fP
+PostScript driver command (\fBdvips\fP) by default)
+.TP 2.5c
+\fBimpression\fP
+Postscript printer command piped with dvips (\fBlpr\fP by default)
+.TP 2.5c
+\fBdessin\fP
+drawing command (default \fBxfig\fP)
+.TP 2.5c
+\fBediteurAvecXterm\fP
+If \fBTrue\fP (the default), the text editor session will be invoked
+under an xterm session (\fIgnu-emacs\fP doesn't require this).
+
+.PP
+.SH RESSOURCES EXAMPLES
+.sp 1
+.ta
+Xlatex.visionneurs: *xdvi, texx
+.sp 0
+Xlatex.visionneursPS: ghostview, gs
+.sp 1
+.DT
+
+\fBbitmap\fP standard resources can be applied to command buttons :
+.sp 1
+Xlatex*faconner.bitmap: xlatex.faconner
+.sp 0
+Xlatex*visionner.bitmap: xlatex.visionner
+.sp 0
+Xlatex*dessiner.bitmap: xlatex.dessiner
+.sp 0
+Xlatex*imprimer.bitmap: xlatex.imprimer
+.sp 0
+Xlatex*editer.bitmap: xlatex.editer
+.sp 0
+Xlatex*statut.bitmap: xlatex.statut
+.sp 0
+Xlatex*quitter.bitmap: xlatex.quitter
+.sp 1
+
+.PP
+.SH WIDGETS TREE
+.sp 1
+.ta 2c 3c 4c 5c 6c 7c 8c 9c
+p.sp 0
+Xlatex xlatex
+.sp 0
+ Form form
+.sp 0
+ Command editer
+.sp 0
+ Command dessiner
+.sp 0
+ Command faconner
+.sp 0
+ Command visionner
+.sp 0
+ Command postscript
+.sp 0
+ Command imprimer
+.sp 0
+ Command statut
+.sp 0
+ Command quitter
+.sp 0
+ Label repertoireLab
+.sp 0
+ Text repertoire
+.sp 0
+ Label dessinLab
+.sp 0
+ Text dessin
+.sp 0
+ Label documentLab
+.sp 0
+ Text document
+.sp 0
+ Label visionneursLab
+.sp 0
+ MenuButton visionneurs
+.sp 0
+ SimpleMenu menuVisionneurs
+.sp 0
+ SmeBSB xdvi
+.sp 0
+ SmeBSB texx
+.sp 0
+ SmeLine separateur
+.sp 0
+ SmeBSB ghostview
+.sp 0
+ SmeBSB gs
+.sp 0
+ Label faconneurLab
+.sp 0
+ Text faconneur
+.sp 0
+ Label editeurLab
+.sp 0
+ Text editeur
+.sp 0
+ Label piloteLab
+.sp 0
+ Text pilote
+.sp 0
+ Text interaction
+.sp 0
+ TransientShell popup
+.sp 0
+ Form form
+.sp 0
+ Label impressionLab
+.sp 0
+ Text impression
+.sp 0
+ Label imprimanteLab
+.sp 0
+ Text imprimante
+.sp 0
+ Toggle toutesTog
+.sp 0
+ Label toutesLab
+.sp 0
+ Toggle deTog
+.sp 0
+ Label deLab
+.sp 0
+ Text de
+.sp 0
+ Label aLab
+.sp 0
+ Text a
+.sp 0
+ Command ok
+.sp 0
+ Command annuler
+.sp 0
+ Label copiesLab
+.sp 0
+ Text copies
+.sp 0
+.PP
+.SH FILES
+.sp 0
+/usr/lib/X11/app-defaults/Xlatex
+.sp 0
+~/.Xdefaults
+
+
+.SH BUGS
+.sp 1
+When \fBXlatex\fP exits, it sends \fBSIGTERM\fP signal to the process group of
+which it's the leader. However if some of these process create a new process group
+or session, this signal will be ineffective.
+
+.SH AUTHOR
+.PP
+Mario Dragone
+.br
+IUP Vannes (France)
+
+Send bugs and comments to:
+.sp 1
+ dragone@iu-vannes.fr
diff --git a/support/xlatex/xlatex.man.french b/support/xlatex/xlatex.man.french
new file mode 100644
index 0000000000..50122d5ab4
--- /dev/null
+++ b/support/xlatex/xlatex.man.french
@@ -0,0 +1,480 @@
+.TH XLATEX 1 "24 aout 1994" "Xlatex Version 3.3c"
+.\" so /usr/lib/ms/s.acc
+
+.\" @(#)ms.acc 1.1 86/07/08 SMI; from UCB 4.2
+. \" AM - accent mark definitions
+.\" modif accent aigu troff CICB, E. Picheral
+.\" modif cedille et trema CICB, E. Picheral
+.\" modif ^ et .. , accents majuscules, distinction italique CICB, E. Picheral
+.bd S B 3
+. \" fudge factors for nroff and troff
+.if n \{\
+. ds #H 0
+. ds #V .8m
+. ds #F .3m
+. ds #[ \f1
+. ds #] \fP
+.\}
+.if t \{\
+. ds #H (-(1u-(\\\\n(.fu%2u))*.13m)
+. ds #J 0
+. ds #K (-(1u-(\\\\n(.fu%2u))*.08m)
+. ds #L (-(1u-(\\\\n(.fu%2u))*.04m)
+. ds #V .6m
+. ds #W (-(1u-(\\\\n(.fu%2u))*.05m)
+. ds #X (-(1u-(\\\\n(.fu%2u))*.03m)
+. ds #Y -.25m
+. ds #F 0
+. ds #[ \&
+. ds #] \&
+.\}
+. \" simple accents for nroff and troff
+.if n \{\
+. ds ' "
+. ds ` "
+. ds ^ "
+. ds , "
+. ds ~ "
+. ds ? ?
+. ds ! !
+. ds / "
+. ds : "
+.\}
+.if t \{\
+. ds ' \\k:\h'-(\\n(.wu*9/10-\*(#J)'\'\h"|\\n:u"
+. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#K)'\v'\*(#W'\`\v'-\*(#W'\h'|\\n:u'
+. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#L)'^\h'|\\n:u'
+. ds , \\k:\h'-(\\n(.wu*8/10)'\(cd\h'|\\n:u'
+. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'\v'-.03m'~\v'.03m'\h'|\\n:u'
+. ds ? \s-2c\h'-\w'c'u*7/10'\u\h'\*(#H'\zi\d\s+2\h'\w'c'u*8/10'
+. ds ! \s-2\(or\s+2\h'-\w'\(or'u'\v'-.8m'.\v'.8m'
+. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
+. ds q o\h'-\w'o'u*8/10'\s-4\v'.4m'\z\(*i\v'-.4m'\s+4\h'\w'o'u*8/10'
+. ds : \\k:\h'-(\\n(.wu*9/10-\*(#K)'\(..\h'|\\n:u'
+. ds G' \\k:\h'-(\\n(.wu*8/10-\*(#J)'\v'\*(#Y'\'\v'-\*(#Y'\h'|\\n:u'
+. ds G` \\k:\h'-(\\n(.wu*7/10-\*(#K)'\v'\*(#Y'\`\v'-\*(#Y'\h'|\\n:u'
+. ds G^ \\k:\h'-(\\n(.wu*8/10-\*(#J)'\v'\*(#Y'^\v'-\*(#Y'\h'|\\n:u'
+. ds G: \\k:\h'-(\\n(.wu*8/10-\*(#J)'\v'\*(#Y'\(..\v'-\*(#Y'\h'|\\n:u'
+.\}
+. \" troff and (daisy-wheel) nroff accents
+. \" .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
+.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
+.ds v \\k:\h'-(\\n(.wu*9/10-\*(#H)'\v'-\*(#V'\*(#[\s-4v\s0\v'\*(#V'\h'|\\n:u'\*(#]
+.ds _ \\k:\h'-(\\n(.wu*9/10-\*(#H+(\*(#F*2/3))'\v'-.4m'\z\(hy\v'.4m'\h'|\\n:u'
+.ds . \\k:\h'-(\\n(.wu*8/10)'\v'\*(#V*4/10'\z.\v'-\*(#V*4/10'\h'|\\n:u'
+.ds 3 \*(#[\v'.2m'\s-2\&3\s0\v'-.2m'\*(#]
+.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
+.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
+.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
+.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
+.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
+.ds ae a\h'-(\w'a'u*4/10)'e
+.ds Ae A\h'-(\w'A'u*4/10)'E
+.ds oe o\h'-(\w'o'u*4/10)'e
+.ds Oe O\h'-(\w'O'u*4/10)'E
+. \" corrections for vroff
+.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
+.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
+. \" for low resolution devices (crt and lpr)
+.if \n(.H>23 .if \n(.V>19 \
+\{\
+. ds : "
+. ds 8 B
+. ds v "
+. ds _ \h'-1'^
+. ds . \h'-1'.
+. ds 3 3
+. ds o a
+. ds d- d\h'-1'\(ga
+. ds D- D\h'-1'\(hy
+. ds th \o'bp'
+. ds Th \o'LP'
+. ds ae ae
+. ds Ae AE
+. ds oe oe
+. ds Oe OE
+.\}
+.rm #[ #] #H #V #F C
+
+.SH SYNTAXE D'APPEL
+.B xlatex
+[\fIarguments\ \ Toolkit\fP]\ \ [\fIarguments\ de\ contro\*^le\fP]\ \ [\fBdocument\fP]
+
+.SH DESCRIPTION
+.PP
+
+\fIXlatex\fP est une application X destine\*'e a\*` simplifier le fac\*,onnage
+de documents TeX ou LaTeX, a\*` savoir l'exe\*'cution d'une session
+d'e\*'dition de texte, la soumission d'un document \fI.tex\fP a\*` un
+processeur de \fIfac\*,onnage\fP, l'e\*'preuvage sur e\*'cran par un
+\fIvisionneur\fP, l'impression du \fI.dvi\fP par le pilote d'impression
+Postscript \fBdvips\fP. La constitution du document \fI.tex\fP est de
+l'entie\*`re responsabilite\*' de l'utilisateur.
+
+.SH ARGUMENT
+.sp 1
+.TP 1c
+\fBdocument\fP
+chemin d'acce\*`s absolu ou relatif du document LaTeX. Si le suffixe \fI.tex\fP
+est spe\*'cifie\*', il est automatiquement enleve\*'. Par de\*'faut, le
+fichier \fBdocument.tex\fP est pris dans le re\*'pertoire courant.
+.PP
+
+.SH ARGUMENTS DE CONTROLE
+.sp 1
+.TP 1c
+\fB-gfont\fP\ \ \fIfont\fP
+police ge\*'ne\*'rique utilise\*'e dans la pre\*'sentation de l'application
+\fIxlatex\fP. Se reporter a\*` la description de la ressource
+\fBgenericFont\fP.
+.PP
+
+
+.SH ENVIRONNEMENT DE TRAVAIL PAR DEFAUT
+.sp 1
+La plupart de ces valeurs peuvent e\*^tre change\*'es par les \fBressources\fP.
+
+.ta 3c
+.sp 1
+re\*'pertoire re\*'pertoire de travail
+.sp 0
+document \fBdocument.tex\fP
+.sp 0
+fac\*,onneur \fBlatex\fP
+.sp 0
+visionneur \fBxdvi\fP
+.sp 0
+pilote \fBdvips\fP
+.sp 0
+dessin \fBxfig\fP
+.sp 0
+impression \fBlpr\fP
+.sp 0
+imprimante de\*'finie par la variable d'environnement \fBPRINTER\fP
+.sp 0
+e\*'diteur de\*'finie par la variable d'environnement \fBEDITOR\fP
+.DT
+
+.SH LA FENETRE XLATEX
+
+La fene\*^tre \fIXlatex\fP est divise\*'e en trois parties :
+.RS 1c
+- les boutons de commande
+.sp 0
+- les champs de\*'finissant l'environnement de travail
+.sp 0
+- une fene\*^tre d'interaction
+.RE
+
+.sp 1
+.B Les boutons de commande
+.sp 1
+
+.TP 2.5c
+\fBFACONNER\fP
+soumet le document courant au processeur de fac\*,onnage\ ;
+.TP 2.5c
+\fBDESSINER\fP
+active un outil de dessin\ ;
+.TP 2.5c
+\fBVISIONNER\fP
+e\*'preuve le document sur e\*'cran avec le visionneur courant\ ;
+.TP 2.5c
+\fBDVIPS\fP
+ge\*'ne\*'ration du document PostScript\ ;
+.TP 2.5c
+\fBIMPRIMER\fP
+fait apparai\*^tre un formulaire permettant de se\*'lectionner les pages
+a\*` imprimer, le nombre de copies, la commande d'impression et ses arguments
+optionnels ainsi que l'imprimante.
+L'impression doit e\*^tre confirme\*'e en cliquant dans le
+bouton de commande \fIOk\fP ou abandonne\*'e en cliquant dans
+\fIAnnuler\fP\ ;
+.TP 2.5c
+\fBSTATUT IMPR\fP
+e\*'tat de la file d'attente de l'imprimante se\*'lectionne\*'e\ ;
+.TP 2.5c
+\fBE\*'DITEUR\fP
+session \fIxterm\fP exe\*'cutant un e\*'diteur de texte sur le document
+courant\ ;
+.TP 2.5c
+\fBQUITTER\fP
+sortie de l'application \fIxlatex\fP.
+.PP
+
+.sp 2
+.B
+Les champs de de\*'finition de l'environnement de travail
+.sp 0
+
+Les champs pouvant e\*^tre interactivement modifie\*'s sont :
+.RS 1c
+.TP 2.5c
+\fBre\*'pertoire\fP
+re\*'pertoire courant ou\*` se trouvent le ou les documents \fI.tex\fP
+.TP 2.5c
+\fBdocument\fP
+nom du fichier TeX ou LaTeX de re\*'fe\*'rence (sans le suffixe \fI.tex\fP)
+.TP 2.5c
+\fBdessin\fP
+outil de dessin
+.TP 2.5c
+\fBvisionneur\fP
+commande d'e\*'preuvage sur e\*'cran du document. En cliquant dedans on fait
+apparai\*^tre une double liste de visionneurs, la premie\*`re liste e\*'tant
+relative aux visionneurs \fIDVI\fP a\*` partir du document \fB.dvi\fP
+(ressource \fBvisionneurs\fP), la seconde
+aux visionneurs \fIPostScript\fP a\*` partir du document \fB.ps\fP
+(ressource \fBvisionneursPS\fP).
+.TP 2.5c
+\fBfac\*,onneur\fP
+commande de fac\*,onnage du document \fI.tex\fP
+.TP 2.5c
+\fBe\*'diteur\fP
+e\*'diteur de texte
+.TP 2.5c
+\fBpilote\fP
+commande d'appel du pilote PostScript (boutons \fBDVIPS\fP et \fBIMPRIMER\fP)
+.RE
+
+Le passage d'un champ a\*` l'autre est aussi possible par tabulation
+ou par la touche retour a\*` la ligne.
+
+.PP
+
+.sp 2
+.B
+La fene\*^tre d'interaction
+.sp 0
+
+La fene\*^tre d'interaction rec\*,oit tous les messages produits par
+l'exe\*'cution des commandes telles ques \fIlatex, dvips, xdvi\fP et \fIlpq\fP.
+Au besoin, l'utilisateur peut introduire du texte dans cette fene\*^tre pour
+s'acquitter de certaines interventions.
+
+Les se\*'quences \fB^C\fP et \fP^D\fP ge\*'ne\*`rent le signal
+\fPSIGINT\fP et \fPSIGTERM\fP au processus de \fIfac\*,onnage\fP.
+
+
+.SH NOTES
+.PP
+Les commandes associe\*'es aux boutons sont directement exe\*'cute\*'es par
+\fIexecv\fP (3) ou \fIexecl\fP (3). En conse\*'quence, ces commandes ne
+peuvent e\*^tre des shell-scripts.
+
+
+.SH ACCELERATEURS
+.PP
+Utilisables n'importe ou\*` dans la fene\*^tre \fIxlatex\fP, les
+acce\*'le\*'rateurs re\*'alisent les me\*^mes actions que les boutons de
+commande\ :
+.sp 1
+.RS 1c
+Meta-f fac\*,onner
+.sp 0
+Meta-d dessiner
+.sp 0
+Meta-i imprimer
+.sp 0
+Meta-v visionner
+.sp 0
+Meta-p postscript
+.sp 0
+Meta-s statut d'impression
+.sp 0
+Meta-e session d'e\*'dition de texte
+.sp 0
+Meta-q quitter l'application
+.RE
+
+.SH RESSOURCES
+.PP
+Les ressources peuvent figurer dans le fichier \fB~/.Xdefaults\fP sous la
+forme\ :
+.sp 1
+ \fBXlatex.<ressource>: valeur\fP
+.sp 1
+Les diffe\*'rentes \fB<ressources>\fP sont\ :
+.TP 2.5c
+\fBrepertoireInitial\fP
+re\*'pertoire de travail
+.TP 2.5c
+\fBfaconneur\fP
+commande de fac\*,onnage des documents (\fBlatex\fP par de\*'faut)
+.TP 2.5c
+\fBvisionneurs\fP
+liste des visionneurs (se\*'pare\*'s par un espace ou une virgule)
+travaillant a\*` partir du fichier \fB.dvi\fP. Un aste\*'risque pre\*'ce\*'dant
+une entre\*'e de\*'signe le visionneur par de\*'faut.
+.TP 2.5c
+\fBediteur\fP
+e\*'diteur de texte (celui de\*'fini dans la variable d'environnement
+\fBEDITOR\fP par de\*'faut). Voir la ressource associe\*'e
+\fBediteurAvecXterm\fP
+.TP 2.5c
+\fBpilote\fP
+commande d'appel du pilote PostScript (\fBdvips\fP) par de\*'faut)
+.TP 2.5c
+\fBimpression\fP
+commande d'impression du document PostScript (\fBlpr\fP par de\*'faut)
+.TP 2.5c
+\fBdessin\fP
+commande de dessin (\fBxfig\fP par de\*'faut)
+.TP 2.5c
+\fBediteurAvecXterm\fP
+indique s'il faut appeler l'e\*'diteur de texte sous le contro\*^le d'une
+session \fBxterm\fP ou pas (\fBtrue\fP par de\*'faut, il en est ainsi pour tous
+les e\*'diteurs qui ne sont pas une application X)
+
+.PP
+.SH EXEMPLES DE RESSOURCES
+.sp 1
+Xlatex.visionneurs: xdvi, texx
+.sp 1
+Xlatex.visionneurPS: ghostview, *gs
+.sp 1
+.DT
+
+Les ressources standard \fBbitmap\fP des boutons de commande peuvent e\*^tre
+positionne\*'es\ :
+.sp 1
+Xlatex*faconner.bitmap: xlatex.faconner
+.sp 0
+Xlatex*visionner.bitmap: xlatex.visionner
+.sp 0
+Xlatex*imprimer.bitmap: xlatex.imprimer
+.sp 0
+Xlatex*dessiner.bitmap: xlatex.dessiner
+.sp 0
+Xlatex*editer.bitmap: xlatex.editer
+.sp 0
+Xlatex*statut.bitmap: xlatex.statut
+.sp 0
+Xlatex*quitter.bitmap: xlatex.quitter
+.sp 1
+
+.PP
+.SH HIERARCHIE DES WIDGETS
+.sp 1
+.ta 2c 3c 4c 5c 6c 7c 8c 9c
+.sp 0
+Xlatex xlatex
+.sp 0
+ Form form
+.sp 0
+ Command editer
+.sp 0
+ Command dessiner
+.sp 0
+ Command faconner
+.sp 0
+ Command visionner
+.sp 0
+ Command postscript
+.sp 0
+ Command imprimer
+.sp 0
+ Command statut
+.sp 0
+ Command quitter
+.sp 0
+ Label repertoireLab
+.sp 0
+ Text repertoire
+.sp 0
+ Label dessinLab
+.sp 0
+ Text dessin
+.sp 0
+ Label documentLab
+.sp 0
+ Text document
+.sp 0
+ Label visionneursLab
+.sp 0
+ MenuButton visionneurs
+.sp 0
+ SimpleMenu menuVisionneurs
+.sp 0
+ SmeBSB xdvi
+.sp 0
+ SmeBSB texx
+.sp 0
+ SmeLine separateur
+.sp 0
+ SmeBSB ghostview
+.sp 0
+ SmeBSB gs
+.sp 0
+ Label faconneurLab
+.sp 0
+ Text faconneur
+.sp 0
+ Label editeurLab
+.sp 0
+ Text editeur
+.sp 0
+ Label piloteLab
+.sp 0
+ Text pilote
+.sp 0
+ Text interaction
+.sp 0
+ TransientShell popup
+.sp 0
+ Form form
+.sp 0
+ Label impressionLab
+.sp 0
+ Text impression
+.sp 0
+ Label imprimanteLab
+.sp 0
+ Text imprimante
+.sp 0
+ Toggle toutesTog
+.sp 0
+ Label toutesLab
+.sp 0
+ Toggle deTog
+.sp 0
+ Label deLab
+.sp 0
+ Text de
+.sp 0
+ Label aLab
+.sp 0
+ Text a
+.sp 0
+ Command ok
+.sp 0
+ Command annuler
+.sp 0
+ Label copiesLab
+.sp 0
+ Text copies
+.sp 0
+.PP
+.SH FICHIERS
+.sp 0
+/usr/lib/X11/app-defaults/Xlatex
+.sp 0
+~/.Xdefaults
+
+
+.SH PROBLEMES RECENCES
+.sp 1
+Lorsque \fBXlatex\fP se termine, il envoie le signal de terminaison \fBSIGTERM\fP
+au groupe de processus qu'il domine. Cependant si certains d'entre eux ont cre\*'e
+un nouveau groupe ou une session, ce signal ne sera pas effectif.
+
+.SH AUTEUR
+.PP
+Mario Dragone
+.br
+IUP Vannes (France)
+.br
+
+Envoyer commentaires et rapports d'anomalies a\*`\ :
+.sp 1
+ dragone@iu-vannes.fr
diff --git a/support/xlatex/xlatex.quitter b/support/xlatex/xlatex.quitter
new file mode 100644
index 0000000000..d6794cbf79
--- /dev/null
+++ b/support/xlatex/xlatex.quitter
@@ -0,0 +1,19 @@
+#define quit_width 48
+#define quit_height 28
+static char quit_bits[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xc0, 0xc3, 0x30, 0x3f, 0xff, 0x00, 0x60, 0xc6, 0x30, 0x0c, 0x99, 0x00,
+ 0x30, 0xcc, 0x30, 0x0c, 0x18, 0x00, 0x30, 0xcc, 0x30, 0x0c, 0x18, 0x00,
+ 0x30, 0xcc, 0x30, 0x0c, 0x18, 0x00, 0x30, 0xcc, 0x30, 0x0c, 0x18, 0x00,
+ 0x30, 0xcc, 0x30, 0x0c, 0x18, 0x00, 0x30, 0xcc, 0x30, 0x0c, 0x18, 0x00,
+ 0x30, 0xcc, 0x30, 0x0c, 0x18, 0x00, 0x30, 0xcc, 0x30, 0x0c, 0x18, 0x00,
+ 0x60, 0x86, 0x19, 0x0c, 0x18, 0x00, 0xc0, 0x03, 0x0f, 0x3f, 0x18, 0x01,
+ 0x00, 0x03, 0x00, 0x00, 0x80, 0x01, 0x00, 0x06, 0x00, 0x00, 0xc0, 0x00,
+ 0x00, 0xfc, 0xff, 0xff, 0x7f, 0x00, 0x00, 0xf8, 0xff, 0xff, 0x3f, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ };
+
diff --git a/support/xlatex/xlatex.statut b/support/xlatex/xlatex.statut
new file mode 100644
index 0000000000..9354213dff
--- /dev/null
+++ b/support/xlatex/xlatex.statut
@@ -0,0 +1,20 @@
+#define statut_width 54
+#define statut_height 28
+static char statut_bits[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x10, 0x00, 0x00,
+ 0x00, 0x40, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x10,
+ 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 0x7f, 0x00,
+ 0x00, 0x20, 0x00, 0x00, 0x00, 0x40, 0xf8, 0x03, 0x20, 0x00, 0xf0, 0x01,
+ 0x40, 0x04, 0x04, 0x20, 0x00, 0x10, 0x01, 0x40, 0x04, 0x04, 0x20, 0x00,
+ 0xb0, 0x01, 0x20, 0x04, 0x04, 0x20, 0x00, 0xf0, 0x01, 0x10, 0x00, 0x02,
+ 0x20, 0x00, 0x00, 0x00, 0x08, 0x00, 0x01, 0xf0, 0xff, 0xff, 0xff, 0x0f,
+ 0x80, 0x00, 0x20, 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x3e, 0xff, 0xff,
+ 0xff, 0x09, 0x40, 0x00, 0x22, 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x22,
+ 0xff, 0xff, 0xff, 0x09, 0x40, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x08, 0x40,
+ 0x00, 0x30, 0xff, 0xff, 0xff, 0x09, 0x40, 0x00, 0x30, 0x00, 0x00, 0x00,
+ 0x08, 0x00, 0x00, 0x20, 0xff, 0xff, 0xff, 0x09, 0x00, 0x00, 0x40, 0x00,
+ 0x00, 0x00, 0x08, 0x40, 0x00, 0x80, 0xff, 0xff, 0xff, 0x0f, 0x40, 0x00,
+ 0x80, 0x07, 0x00, 0x80, 0x07, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00};
diff --git a/support/xlatex/xlatex.visionner b/support/xlatex/xlatex.visionner
new file mode 100644
index 0000000000..06df9b968c
--- /dev/null
+++ b/support/xlatex/xlatex.visionner
@@ -0,0 +1,20 @@
+#define visionner_width 54
+#define visionner_height 28
+static char visionner_bits[] = {
+ 0x00, 0x00, 0x58, 0x9a, 0x04, 0x00, 0xc0, 0x00, 0x00, 0x50, 0x8c, 0x04,
+ 0x00, 0xc0, 0x00, 0x44, 0x53, 0xcc, 0x24, 0x00, 0xc0, 0x00, 0x6c, 0x92,
+ 0x4c, 0x14, 0x09, 0xc0, 0x80, 0x48, 0xb2, 0x4e, 0x99, 0x0a, 0xc0, 0x28,
+ 0xb3, 0xb6, 0x7f, 0x99, 0x5a, 0xc0, 0x48, 0xfc, 0xff, 0xff, 0xbd, 0x2e,
+ 0xc0, 0x91, 0xfb, 0xff, 0xff, 0x7f, 0xc7, 0xc0, 0xfd, 0x0f, 0xf0, 0x73,
+ 0x08, 0x9e, 0xc2, 0xf9, 0x01, 0x58, 0x2d, 0x08, 0xf8, 0xd5, 0x3e, 0x00,
+ 0xf8, 0x1e, 0x0c, 0xe4, 0xca, 0x1a, 0x00, 0x5c, 0x0f, 0x1a, 0xc0, 0xd7,
+ 0x0c, 0x00, 0xdc, 0xff, 0x1e, 0x20, 0xc5, 0x14, 0x00, 0xac, 0xff, 0x1d,
+ 0x40, 0xcf, 0x08, 0x00, 0xdc, 0xff, 0x1a, 0x00, 0xcf, 0x38, 0x00, 0xac,
+ 0xff, 0x1d, 0xa0, 0xcf, 0x70, 0x00, 0xac, 0x7f, 0x1d, 0x80, 0xc7, 0xe0,
+ 0x01, 0x78, 0xbf, 0x0e, 0x20, 0xc7, 0x80, 0x0f, 0xb8, 0xd2, 0x0f, 0x80,
+ 0xc1, 0x00, 0x18, 0xf0, 0xaf, 0x06, 0xb8, 0xc0, 0x00, 0xf8, 0xc0, 0xff,
+ 0x01, 0x0a, 0xc0, 0x00, 0x80, 0x0f, 0x7f, 0xfc, 0x03, 0xc0, 0x00, 0x00,
+ 0xf0, 0xff, 0x0f, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0xc0};