AccueilretourCaractères

Fonctions avancées de LyX

Découvrir LyX

Utiliser LyX

LyX et LATEX

Fn. avancées

    Recherche

    Macros

    Exemple

        mise en place
        arguments
        définition
        utilisation
        diffusion

Correspondance

   

Cette page est consacrée à quelques-unes des fonctions avancées de LyX.

Par "avancées", nous ne voulons pas dire que ces fonctions seraient irréalisables en LATEX. Mais elles profitent de l'efficacité de l'interface de LyX. Elle rendent accessibles des manipulations qui seraient fastidieuses en LATEX pur.

Cette section est appelée à s'étendre au fil des nouvelles versions de LyX.

Rechercher et remplacer (élaboré)

LyX propose deux niveaux de recherche et remplacement.

S'il s'agit simplement de substituer un mot ou (une expression) à un autre, la boîte de dialogue "simple" suffit amplement. On l'appelle grâce à Édition > Rechercher et remplacer (simple)... ou au raccourci clavier F3 :



Comme on le voit,
  • elle ne contient aucun formatage (et le texte de remplacement sera formaté comme celui d'origine) ;
  • elle ne donne pas accès aux constructions mathématiques de LATEX.

Depuis la version 2.0 de LyX, il existe une fonction de recherche et remplacement élaborée qui prend en compte tout ce que l'interface de LyX peut afficher, y compris les maths ! On l'appelle par Édition > Rechercher et remplacer (élaboré)... ; elle se positionne dans une nouvelle sous-fenêtre à droite du document ouvert (comme le correcteur orthographique) :



Dans l'exemple ci-dessus nous remplaçons les coefficients binomiaux écrits sous forme de fraction par ceux "à l'ancienne" (Cnp). Quelques autres possibilités tirées du manuel :
  • remplacer les occurrences d'un mot avec un style personnalisé du même mot : par exemple, remplacer les occurrences de "fonction()" par sa version en chasse fixe "fonction()" ;
  • changer une notation mathématique : par exemple, remplacer les occurrences de "R" par "" (vous pouvez cocher Mots complets et Selon la casse et décocher Ignorer le format dans l'onglet Paramètres, pour éviter de remplacer toutes les occurrences des lettres "R" apparaissant dans le texte normal) ;
  • remplacer toutes les occurrences de "xij" par xi, j, ou les occurrences de x[k] par xk...

Les possibilités sont très étendues, car il est possible d'utiliser les expressions régulières, dont la description sort du cadre de cette introduction. Il est possible, par exemple, de rechercher les fractions mathématiques présentant un certain numérateur (ou dénominateur).

haut de page


Macros

Dans notre premier document LyX, nous avons eu l'occasion de créer une construction mathématique assez simple donnant la définition de la fonction ζ de Riemann :


L'écriture de la somme, malgré sa simplicité, nécessite un certain nombre d'étapes, qui peuvent être réalisées au clavier ou à la souris. Pour rappel :
  • créer l'opérateur de sommation ∑ ;
  • passer en indice, introduire n=1 et sortir de l'indice ;
  • passer en exposant, introduire ∞ et sortir de l'exposant.
Dans un document comportant de nombreuses telles sommes, cela peut vite devenir fastidieux. Bien sûr, on peut procéder par copier-coller. Mais si les sommes comportent des indices et/ou des bornes différentes, est-ce vraiment une simplification ? Sans parler des risques d'erreur ou d'oubli.

LyX, depuis la version 2.0, a bien mieux à nous proposer : les macros [1]. Illustrons leur puissance dans un cas précis.

Exemple

Nous cherchons à abréger la construction décrite ci-dessus. Notre macro

  • devra former la somme de certaines quantités xi pour i allant d'une valeur initiale a à une valeur finale b ;
  • devra nous laisser le choix des noms de l'indice muet (i) et de la quantité sommée (x) ;
  • adoptera toutefois les valeurs par défaut suivantes : x, i et 1 (pour a ; b devant être précisé).

Elle aura donc 4 arguments dont 3 posséderont une valeur par défaut. Le 1er argument sera x, le deuxième i, le troisième a et le dernier, l'argument non optionnel b.

1. Mettons en place notre macro.

Ouvrons un document LyX [2] et plaçons-nous au début. Insérons un cadre de macro :
Insertion > Maths > Macro ou . Nous remarquons (peut-être) l'apparition d'une nouvelle barre d'outils au bas de la fenêtre :


et nous voyons ceci :



Le nom de notre nouvelle macro est déjà sélectionné. Remplaçons-le par quelque-chose de plus évocateur, somme p.ex. :



2. Réservons les arguments de notre macro.

Il en faut donc 3 optionnels, et nous cliquons 3 fois sur le 6ème bouton de la barre d'outil Macro, et un argument non optionnel obtenu grâce au 2ème bouton [3]. Nous devrions avoir :



Tant que nous y sommes, remplissons les valeurs par défaut (x, i et 1) de nos trois premiers arguments optionnels en les plaçant entre les crochets prévus à cet effet :



3. Définissons notre macro.

Il s'agit d'expliquer à LyX :

"somme pour [2ème argument] allant de [3ème argument] à [4ème argument] de [1er argument] indice [2ème argument]".

Il "suffit" donc de savoir comment désigner à LyX le kième argument. Vous l'avez sans doute deviné en observant les copies d'écran ci-dessus :

le kième argument est dénoté #k.

Mais attention, ce # n'est pas le caractère #, mais l'opérateur # : il faut donc taper \#k pour l'obtenir.

Dans la deuxième "boîte" du cadre de la macro (celle qui s'intitule TeX), plaçons la construction LyX correspondante, après avoir effacé le contenu par défaut #1#2#3#4 :



Et la boîte intitulée LyX ? Nous l'ignorons dans ce cas. Elle ne sert qu'à définir une forme abrégée à l'affichage dans LyX pour les macros dont le résultat est très long.

4. Utilisons notre macro.

Il faut d'abord lui faire appel. Pour cela, nous passons en mode mathématique et nous appelons notre macro après un backslash, comme s'il s'agissait d'une fonction interne de TEX : \som... Mais à peine avons-nous tapé les premières lettres que LyX nous propose le nom complet : . À ce stade, nous pouvons valider avec Tab pour obtenir :



où les cases reçoivent les arguments à leurs emplacements définitifs.

Supposons que nous souhaitions écrire "∑n=1un" :
  • le 1er argument doit être remplacé par u (sa valeur par défaut étant x),
  • le deuxième par n (au lieu de i),
  • le 4ème (obligatoire) par ∞,
  • le troisième argument n'a pas à être rempli, puisqu'il vaut 1, qui est sa valeur par défaut. 
Nous écrivons les arguments corrects :



Nous remarquons que, dès que nous remplissons un "n" (argument n°2), l'autre qui est présent dans la formule "suit" automatiquement.

Dès que le curseur quitte la boîte de la macro, celle-ci produit son résultat définitif :
ou selon que l'aperçu rapide est activé ou non.

C'est bien le résultat souhaité, et nous pouvons utiliser notre macro à souhait pour abréger les sommes présentes dans notre document.

Notons que
  • la définition de la macro (telle qu'au point 3.) n'apparaît pas lorsque le document est prévisualisé ;
  • elle doit évidemment précéder toute utilisation de la macro dans le document. C'est pourquoi les macros prennent naturellement place au début.

5. Diffusons notre macro.

En procédant comme ci-dessus, la macro est utilisable uniquement dans le document où elle est définie. C'est parfois suffisant. Mais plus vraisemblablement, nous aurons envie de nous constituer un "stock" de macros utiles appelées à servir dans plusieurs documents.

Voici comment procéder :
  • plaçons toutes les macros dont nous avons besoin dans un fichier dédié, p. ex. mesmacros.lyx.
  • ouvrons un document [2], dans lequel nous souhaitons faire appel à certaines de ces macros. Plaçons-nous au début du document, de préférence sur une ligne vide.
  • choisissons Insertion > Fichier > Sous-document... pour faire apparaître la boîte de dialogue suivante :



    ... dans laquelle nous naviguons ("Parcourir") vers notre fichier mesmacros.tex, et nous laissons "Type de sous-document :" à sa valeur (Inclus(include)) par défaut ;
  • en haut de notre fichier apparaît alors le champ suivant : , qui nous rappelle l'inclusion effectuée.

Nous pouvons maintenant utiliser dans notre document toutes les macros présentes dans le fichier mesmacros.tex ; elles se comportent exactement comme si elles étaient présentes dans le fichier lui-même.

Une seule précaution : si vous distribuez ce fichier à une tierce personne, il ne faudra pas oublier de lui communiquer également le fichier de définition de macros.

haut de page


Note

[1]  LATEX permet les macros. L'instruction de base est \newcommand. Mais le simple exemple que nous donnons ici va déjà au-delà, puisque \newcommand est limitée à un seul argument optionnel. En fait, la construction que nous effectuons est possible en LATEX, mais utilise \newcommandx du package xargs. La syntaxe LATEX de notre macro serait ainsi :

\newcommandx\somme[4][usedefault, 1=x, 2=i, 3=1]{\sum_{#2=#3}^{#4}#1_{#2}}

une construction qui nécessite déjà une bonne connaissance de LATEX, dont LyX nous dispense !

[2]  nouveau ou existant

[3]  Nous pourrions également les introduire au clavier, en utilisant la syntaxe décrite au point 3.

haut de page