#LyX 1.1 created this file. For more info see http://www.lyx.org/
\lyxformat 218
\textclass article
\language frenchb
\inputencoding latin1
\fontscheme default
\graphics default
\paperfontsize default
\spacing single 
\papersize a4paper
\paperpackage a4
\use_geometry 0
\use_amsmath 0
\paperorientation portrait
\secnumdepth 3
\tocdepth 3
\paragraph_separation indent
\defskip medskip
\quotes_language french
\quotes_times 2
\papercolumns 1
\papersides 1
\paperpagestyle default

\layout Section

L'insert d'Objet Externe
\begin_float footnote 
\layout Standard

Traduit par 
\noun on 
Adrien Rebollo
\noun default 
 
\family typewriter 
<adrien.rebollo@gmx.fr>
\family default 
.
\end_float 

\begin_inset Info
Informations de révision :
Traduction : Mise à jour, Date: 22/04/2001
Original : Révision: 1.??, Date: ??/??/????
\end_inset 


\layout Subsection

Contexte
\layout Standard

Une fonction souvent réclamée par les utilisateurs de LyX est la capacité
 à l'interfacer avec XFig, Dia ou d'autres applications similaires spécialisées
 dans la production d'un type particulier de diagramme, figure, schéma ou
 autre, que vous aimeriez insérer dans votre document.
 Auparavant, il n'était possible d'inclure dans LyX que des images fixes,
 statiques, avec l'insert de figures, mais cette méthode a plusieurs limites
 :
\layout Itemize

Si vous voulez changer la figure, vous devez invoquer un programme externe
 à la main
\layout Itemize

LyX ne remarque pas que les fichiers en question ont changé, et l'affichage
 à l'écran devient donc vite périmé, ce qui est aggravé par l'impossibilité
 de rafraîchir l'affichage
\layout Itemize

L'insert de figures ne supporte que du PostScript
\layout Itemize

L'insert de figures ne fournit aucun mécanisme pour copier les images dans
 des formats d'exportation comme DocBook, HTML ou ASCII brut.
\layout Standard

L'insert d'objet externe tente de résoudre tous ces problèmes
\begin_float footnote 
\layout Standard

Même si l'insert de figures présente ces inconvénients, il reste valable
 car il permet de visualiser la figure à l'écran, et autorise des transformation
s géométriques complexes avec une interface utilisateur confortable.
\end_float 
.
 Il offre une méthode générale pour interfacer LyX avec des applications
 externes.
 Au lieu de nous mettre à écrire une infinité d'inserts spécialisés adaptés
 à chaque application, nous avons choisi de sacrifier l'affichage de l'objet
 inséré, et de fournir un schéma général pour couvrir un vaste champ d'applicati
ons.
 C'est l'insert externe.
 Un insert externe se présente dans le document comme un simple bouton,
 mais ne vous y trompez pas.
 Quand vous cliquez dessus, une fenêtre apparaît qui vous permet de choisir
 exactement quel objet inclure, et dans la suite vous apprendrez que c'est
 effectivement un mécanisme puissant qui peut résoudre tous les problèmes
 posés plus haut, et qui permet bien d'autres choses.
\layout Subsection

Comment fonctionne-t-il ?
\layout Standard

L'insert externe repose sur le concept de 
\emph on 
cadre
\begin_float footnote 
\layout Standard

NdT : Traduction de 
\begin_inset Quotes fld
\end_inset 

template
\begin_inset Quotes frd
\end_inset 

 dans ce contexte.
\end_float 
.
 Un cadre définit comment LyX doit s'interfacer avec un type d'objet donné.
 Tel qu'il est distribué, LyX possède des cadres prédéfinis pour les figures
 XFig, pour les diagrammes Dia, pour différents formats d'images rastérisées,
 pour gnuplot, et d'autres.
 Vous pouvez en consulter la liste avec 
\family sans 
Insérer\SpecialChar \menuseparator
Objet\SpecialChar ~
externe
\family default 
.
 En outre, il est possible de créer votre propre cadre pour supporter un
 type donné d'objet.
 Nous décrivons plus loin en détail ce qu'il faut faire, et nous espérons
 que vous nous enverrez tous les cadres que vous créerez pour que nous puissions
 les inclure dans de futures versions de LyX.
\layout Standard

Un autre concept de base est qu'il faut faire la distinction entre le fichier
 d'origine qui sert de point de départ et le fichier transformé qui est
 inclus avec votre document exporté ou imprimé.
 Voyons par exemple une figure produite avec XFig.
 L'application XFig elle-même travaille sur un fichier avec l'extension
 
\family typewriter 
.fig
\family default 
.
 Dans XFig, vous créez et modifiez votre figure.
 Quand c'est fini, vous enregistrez le fichier 
\family typewriter 
fig
\family default 
.
 Quand vous voulez inclure la figure dans votre document, vous invoquez
 
\family typewriter 
transfig
\family default 
 pour créer un fichier PostScript qui sera aisément inclus dans votre fichier
 LaTeX.
 Dans ce cas, le fichier 
\family typewriter 
.fig
\family default 
 est le fichier d'origine, et le fichier PostScript est le fichier transformé.
\layout Standard

Cette distinction est importante pour pouvoir mettre à jour l'objet pendant
 l'écriture de votre document.
 En outre, elle vous donne la flexibilité requise pour supporter des formats
 d'exportation différents.
 Par exemple, dans le cas de l'exportation en Ascii, ce n'est pas vraiment
 une super idée d'inclure la figure en PostScript brut.
 À la place, vous préférerez soit inclure une référence à la figure, soit
 essayer un convertisseur graphique vers Ascii pour rendre un résultat final
 approchant du graphique d'origine.
 L'insert d'objet externe vous permet de le faire, car il est paramétré
 avec les différents formats d'exportation supportés par LyX.
\layout Standard

En plus de supporter la génération de fichiers transformés différents selon
 le format d'exportation, l'insert externe travaille en étroite collaboration
 avec les applications d'édition et de visualisation.
 Dans le cas d'une figure XFig, vous pouvez invoquer 
\family typewriter 
xfig
\family default 
 sur le fichier d'origine d'un simple clic depuis l'insert externe de LyX,
 et aussi visualiser le fichier transformé PostScript avec 
\family typewriter 
ghostview
\family default 
 d'un autre clic.
 Il n'y a plus à se bagarrer avec la ligne de commande ou avec des explorateurs
 de fichier pour localiser et manipuler le fichier d'origine et le fichier
 transformé.
 De cette façon, vous pouvez enfin profiter à plein des nombreuses applications
 différentes qui servent à la production de documents, et serez finalement
 plus efficaces.
\layout Standard

Ainsi, en définitive, LyX a des informations sur un certain nombre de programmes
 différents, qu'il peut utiliser en arrière-plan.
 L'information en question est exactement celle contenue dans les cadres.
 Dans chaque cadre, il y a une liste de commandes qui servent à invoquer
 une application, à convertir le fichier d'origine en fichier transformé,
 etc.
 Ce mécanisme permet à l'utilisateur avancé d'étendre les capacités de LyX
 sans se bagarrer avec le code source.
 Il faut faire quelques efforts pour définir toutes les différentes commandes
 et options, mais heureusement l'équipe LyX a fait le gros du travail.
\layout Standard

Nous devons reconnaître que nous avons fait au moins une omission.
 Comme l'insert externe peut produire de nombreux types de fichiers différents
 pour aller avec chaque format d'exportation, on pourrait aussi s'attendre
 à pouvoir prévisualiser chaque fichier transformé.
 Mais l'équipe LyX a décidé de ne pas le faire pour conserver une interface
 utilisateur simple.
 Au lieu d'avoir un bouton par format d'exportation, nous avons décidé d'introdu
ire le concept de format primaire et de n'avoir qu'un seul bouton.
 Quand vous appuyez sur 
\family sans 
Voir\SpecialChar ~
le\SpecialChar ~
résultat
\family default 
 dans la fenêtre d'insert externe, vous avez un aperçu du fichier transformé
 dans le format primaire.
 Et le format primaire est défini par votre classe de document.
 Pour la plupart des classes de document, le format primaire est LaTeX,
 mais pour les classes DocBook, le format primaire est DocBook.
 Donc quand vous visualisez le fichier transformé, gardez à l'esprit que
 ce n'est qu'un aperçu du résultat principal.
 Si vous voulez voir à quoi ressemblent les autres formats d'exportation,
 vous devez exporter votre document et le visualiser à la main.
\layout Subsection

La Fenêtre de l'Insert d'Objet Externe
\layout Standard

Vous placez un insert externe avec le menu 
\family sans 
Insérer
\family default 
.
 Un bouton est alors placé dans votre document, et la fenêtre de l'insert
 d'objet externe s'affiche.
 Cette fenêtre vous permet de décrire exactement quel objet inclure et comment.
 En outre, elle permet d'accéder aux applications externes pour visualiser,
 éditer ou transformer l'objet.
\layout Standard

En haut de cette fenêtre, il y a une liste déroulante où vous pouvez choisir
 le cadre à utiliser.
 Juste en dessous, il ya une zone de texte avec un court blabla concernant
 le cadre que vous avez sélectionné.
 La plupart du temps, c'est une brève description du cadre, et quelques
 conseils pour paramétrer son utilisation.
 Plus bas, vous trouvez un champ dans lequel vous entrez le nom du fichier,
 ainsi qu'un bouton 
\family sans 
Parcourir
\family default 
 pour choisir avec l'explorateur de fichiers le fichier à inclure.
 Ce champ spécifie le fichier d'origine.
 Comme le fichier transformé est généré automatiqument quand c'est nécessaire,
 il n'y a pas besoin d'accéder directement à celui-ci.
\layout Standard

En bas de la fenêtre, vous trouvez un champ pour les 
\family sans 
Paramètres
\family default 
.
 Ils servent à paramétrer le cadre.
 Les options possibles doivent être décrites dans le texte d'aide associé
 à celui-ci.
 En général elles vous permettent de changer la façon de générer le fichier
 transformé.
\layout Standard

À droite de la fenêtre, vous trouvez trois boutons : 
\family sans 
Éditer\SpecialChar ~
le\SpecialChar ~
fichier
\family default 
, 
\family sans 
Voir\SpecialChar ~
le\SpecialChar ~
résultat
\family default 
 et 
\family sans 
Mettre\SpecialChar ~
à\SpecialChar ~
jour
\family default 
.
 Ils vous permettent respectivement d'éditer votre fichier d'origine avec
 l'application appropriée, de visualiser le fichier transformé qui sera
 inclus dans le document primaire, et enfin de forcer la mise à jour de
 l'objet résultant dans le format primaire.
 Normalement, le bouton 
\family sans 
Mise\SpecialChar ~
à\SpecialChar ~
jour
\family default 
 est désactivé, car la plupart des cadres sont configurés pour mettre à
 jour automatiquement le fichier transformé quand c'est nécessaire.
 Dans ces cas-là, il n'y a pas besoin de forcer la production d'un nouveau
 fichier transformé.
 Cependant, certains cadres sont configurés pour ne pas le produire automatiquem
ent, parce que le temps de transformer le fichier étant important, ça serait
 pénible de le faire à chaque fois.
 Ces inserts sont des inserts externes 
\emph on 
manuels
\emph default 
.
 Dans ces cas-là, vous pouvez utiliser le bouton pour forcer la production
 du fichier transformé juste quand vous en avez besoin, et contrôler ainsi
 les ressources utilisées.
 En fait, c'est alors à 
\emph on 
vous
\emph default 
 de le faire pour avoir des documents à jour : avant d'imprimer, avant d'exporte
r, avant de visualiser, etc.
 Un jour, LyX vous aidera peut-être à faire ça.
 Ce serait pas mal d'avoir une commande 
\family sans 
Éditer\SpecialChar \menuseparator
Mettre\SpecialChar ~
à\SpecialChar ~
jour\SpecialChar ~
inserts\SpecialChar ~
externes
\family default 
 pour mettre à jour tous les inserts externes qui ont un cadre manuel.
 Mais attendez-vous à ce que cette amélioration mette un moment à arriver.
\layout Standard

En bas de la fenêtre, vous trouvez les boutons 
\family sans 
OK
\family default 
 et 
\family sans 
Annuler
\family default 
 habituels.
 La seule chose à dire à leur sujet est que tout changement dans le cadre,
 le nom du fichier ou les paramètres est en fait appliqué dès que vous appuyez
 sur 
\family sans 
Éditer\SpecialChar ~
le\SpecialChar ~
fichier
\family default 
, 
\family sans 
Voir\SpecialChar ~
le\SpecialChar ~
résultat
\family default 
 ou 
\family sans 
Mettre\SpecialChar ~
à\SpecialChar ~
jour
\family default 
.
 Une fois que vous avez utilisé l'un de ceux-là, vous ne pourrez plus annuler
 les changements précédents avec 
\family sans 
Annuler
\family default 
.
 Heureusement, vous pouvez utiliser la fonction d'annulation globale de
 LyX pour revenir dans un état précédent.
\layout Subsection

Exemples
\layout Standard

Dans cette section, nous inclurons quelques exemples d'utilisation de l'insert
 d'objet externe.
 Ces exemples pourraient comprendre :
\layout Itemize

Les images rastérisées
\layout Itemize

Les figures XFig
\layout Itemize

Les diagrammes d'échecs
\layout Itemize

Les sons
\layout Itemize

L'utilisation des makefiles
\layout Itemize

Les cadres externes récursifs
\layout Subsection

Le fichier de configuration des cadres externes
\layout Standard

Il est assez facile de définir de nouveaux cadres externes dans LyX.
 Cependant, sachez que si vous le faites de façon négligente, vous introduirez
 
\emph on 
sûrement
\emph default 
 une faille de sécurité facilement exploitable.
 Avant de commencer, lisez donc plus bas ce qui concerne la sécurité.
\layout Standard

Ceci dit, nous vous encourageons à créer des cadres intéressants et à nous
 les proposer.
\layout Standard

Les cadres externes sont définis dans le fichier 
\family typewriter 
lib/external_templates
\begin_float footnote 
\layout Standard

NdT : Nous rappelons que 
\begin_inset Quotes fld
\end_inset 

cadre
\begin_inset Quotes frd
\end_inset 

 est la traduction de 
\begin_inset Quotes fld
\end_inset 

template
\begin_inset Quotes frd
\end_inset 

 dans ce contexte de l'insert externe.
\end_float 
.
 Vous pouvez mettre votre propre version dans 
\family typewriter 
.lyx/external_templates
\family default 
.
 Nous espérons qu'un jour, quelqu'un documentera le contenu des cadres,
 et la syntaxe à utiliser.
\layout Subsection

Le mécanisme de substitution
\layout Standard

Quand l'insert d'objet externe invoque un programme externe, il le fait
 selon la commande définie dans le fichier de configuration des cadres.
 Ces commandes peuvent contenir diverses macros qui sont interprétées avant
 l'exécution.
 Les commandes sont toujours exécutées dans le répertoire du document.
\layout Standard

Ainsi, quand un insert externe est affiché, un mécanisme de substitution
 génère son nom.
\layout Standard

Les macros disponibles sont les suivantes :
\layout Description

$$FName Le nom du fichier spécifié dans la fenêtre d'insert externe.
\layout Description

$$Basename Le nom du fichier sans l'extension.
\layout Description

$$Tempname Le nom et le chemin absolu d'un fichier temporaire qui sera automatiq
uement effacé quand le document sera fermé, ou l'insert externe effacé.
\layout Description

$$Contents(
\begin_inset Quotes fld
\end_inset 

nom_fichier.ext
\begin_inset Quotes frd
\end_inset 

) Le contenu du fichier de nom 
\family typewriter 
nom_fichier.ext
\family default 
.
\layout Description

$$Sysdir Le chemin absolu du répertoire système.
 Typiquement utilisé pour pouvoir trouver les différents scripts auxiliaires
 fournis avec LyX.
\layout Standard

En plus de tout cela, le mécanisme de substitution interprétera les variables
 globales d'environnement comme 
\family typewriter 
${PATH}
\family default 
.
\layout Subsection

La question de la sécurité
\layout Standard

L'insert d'objet externe crée une interface avec un paquet de programmes
 externes et le fait de manière automatique, nous devons donc en examiner
 les conséquences en matière de sécurité.
 En particulier, comme vous avez la possibilité d'inclure vos propres noms
 de fichier et/ou paramètres et qu'ils sont interprétés pour former une
 commande, il semble possible de créer un document malveillant qui exécute
 des commandes indésirables quand un utilisateur le visualise ou l'imprime.
 C'est quelque chose que nous voulons absolument éviter.
\layout Standard

Cependant, comme les commandes du programme externe sont définies seulement
 dans le fichier de configuration des cadres, il n'y a pas de problème de
 sécurité si LyX est configuré correctement avec seulement des cadres sûrs.
 Ceci parce que les programmes externes sont invoqués via l'appel système
 
\family typewriter 
execvp
\family default 
 et non via l'appel système 
\family typewriter 
system
\family default 
.
 Il n'est donc pas possible d'exécuter des commandes arbitraires via le
 shell à partir du nom de fichier ou des paramètres.
\layout Standard

Ça implique aussi qu'il y a des restrictions dans les commandes définissables
 dans un cadre d'objet externe.
 En particulier, les pipes et les redirections ne sont pas disponibles.
 C'était obligatoire pour que LyX reste sûr.
 Si vous voulez utiliser quelques-unes des fonctions du shell, vous devez
 écrire un script sûr pour le faire de manière contrôlée, puis définir ce
 script comme commande.
 Dans le répertoire 
\family typewriter 
lib/scripts
\family default 
 de l'installation de LyX, vous trouverez un script d'emballage sûr appelé
 
\family typewriter 
general_command_wrapper.py
\family default 
 qui supporte la redirection des entrées et sorties.
 Il peut servir d'exemple pour écrire des scripts sûrs pour les cadres.
 Pour un exemple plus avancé qui utilise 
\family typewriter 
fork
\family default 
 et compagnie, jetez un oeil sur le script de conversion 
\family typewriter 
pic2ascii.py
\family default 
.
\layout Standard

Il est possible de créer un cadre qui interagit directement avec le shell,
 mais comme ça permettrait à un utilisateur malveillant d'exécuter des commandes
 arbitraires en écrivant des noms de fichier et/ou des paramètres bien choisis,
 nous vous recommandons d'utiliser en général des scripts sûrs qui marchent
 avec l'appel système 
\family typewriter 
execvp
\family default 
 d'une manière contrôlée.
 Bien sûr, si vous êtes dans un environnement dans lequel vous avez confiance,
 il est tentant de ne pas se fouler et d'utiliser des scripts shell ordinaires.
 Si vous faites ça, sachez que vous allez 
\emph on 
vraiment
\emph default 
 créer dans votre système une faille de sécurité facile à exploiter.
 Il est évident que de tels cadres non sécurisés ne seront jamais inclus
 dans la distribution standard de LyX, même si nous encourageons les gens
 à nous proposer de nouveaux cadres dans la tradition du logiciel libre.
 Mais LyX tel que vous vous le procurez par les voies officielles de distributio
n ne contiendra jamais de cadres non sécurisés.
\layout Standard

L'insert d'objet externe est un outil très puissant, et vous devez faire
 attention à ne pas mettre en péril la sécurité avec cette puissance.
 Une légère erreur dans une seule ligne d'un script apparemment inoffensif
 peut ouvrir la voie à d'énormes problèmes.
 Si vous n'avez pas une compréhension claire de ce qui est en jeu, nous
 vous recommandons de consulter un professionnel de la sécurité, ou de contacter
 l'équipe de déceloppement de LyX si vous vous demandez si votre cadre est
 sûr ou non.
 Faites-le avant de l'utiliser dans un environnement que vous ne contrôlez
 pas.
\layout Subsection

L'avenir de l'insert externe
\layout Standard

L'implémentation actuelle de l'insert externe donne une fonction stable
 et puissante qui permet d'accéder aux entrailles de LyX, mais comme pour
 n'importe quelle fonction, c'est un travail en devenir.
 Si quelqu'un a du temps à y consacrer, voici quelques orientations générales
 vers lesquelles tendre :
\layout Itemize

Supporter la prévisualisation en ligne dans différents formats, plutôt qu'avec
 le bouton dont nous nous contentons pour le moment.
\layout Itemize

Supporter l'édition en ligne avec OpenParts ou un autre protocole approprié.
\layout Itemize

Étendre l'information dynamique afin d'avoir des champs de paramètres optionnels
 pour les commandes de conversion dans tous les formats d'exportation, ainsi
 que pour ce qui est produit dans les différents formats d'exportation.
 Pour le moment, nous nous restreignons à un seul paramètre qui sert pour
 toutes ces diverses applications.
 En changeant cela, on pourrait aussi se débarrasser de l'étrange restriction
 à un format primaire.
\layout Itemize

Étendre la structure déjà existante pour offrir des options de personnalisation
 plus intelligentes, en plus des paramètres assez simplistes qui sont proposés.
 Avec un langage de script adapté, il serait possible d'implémenter des
 versions plus agréables pour beaucoup d'inserts personnalisables qui supportent
 un large éventail de formats, de paquetages LaTeX, d'éditeurs, etc.
\the_end
