FrenchPro L^{A}TEX^{1}

Version V5,9994 – 28 juin 2007 –

“Torture” Test (frenchlb) with OT1 Font Encoding

Bernard Gaulle^{2}

et...^{2}

Printed on 28th June 2007

1We are here in english, notice the problem when we use, like in frenchla, a \fnsymbol in a box. Notice also that \backslashcan’t be used. 2Thanks to those good guys who helped me. This test note is also referred by a \refmark call.

Sommaire

I Ce qui marche est ici... 3

1 Avertissements 5 2 La torture 7 Bibliographie 41 Glossaires 49 Index 50

II Ce qui ne marche pas (bien)... 51

1 Quelques questions à étudier 53 2 Améliorations à envisager 55 Annexes 55 A Copyright 57

B Le fichier language.dat  61
C Le fichier frabbrev.tex  63

D Le fichier french.cmd 69 E Le fichier french.chk 71 F Un style english (fenglish) 73 G Le code de l’extension FrenchPro 79

Remarque :

la commande \sommaire^{a},^{b} est un apport de FrenchPro.

a Cette note a été demandée depuis une minipage. b Cette deuxième note aussi.

Essai de note avec \fnsymbol^{∗}.

Essai de note de bas de page non numérotée . iv

∗ Note avec une étoile.

Note non numérotée.

Préface

Certains croient qu’une préface peut apporter de la valeur au livre, moi je pense plutôt que cela apporte de la valeur à l’auteur... (dans tous les sens du terme). vi

Introduction

Mots-clé : french, style, francisation, francophonie, multilingue, english, option, extension.

Résumé

Ce document a été conçu uniquement pour tester intensivement FrenchPro (anciennement appelé option de style^{3} french).

Notez que les deux environnements resume et motsclef (ainsi que keywords) sont des apports de FrenchPro.

Si le libellé Résumé apparaît dans la partie anglaise, cela signifie que FrenchPro ne possédait pas de définition d’\abstract et donc l’a remplacé par \resume. Cela signifie aussi que les libellés anglais n’ont pas été définis (\captionnames^{4} n’était pas défini par les extensions appelées avant FrenchPro). Rappelezvous aussi que \abstract ne fait pas partie de la classe de document book.

Remarquez les différences entre les numéros de notes de bas de page en français et en anglais, ainsi que l’impression de ce même numéro en bas de la page.

Keywords: French, Style, Option, Package, French-Speaking usage, English, Multilingual.

Abstract

The object of this paper is to test intensively FrenchPro.

Notice that the three environments resume, keywords and motsclef are all introduced by FrenchPro.

Notice that if the abstract name printed here is not “Abstract” you are using packages that have no \abstractname defined for english. The english package defining such captions is loaded only if \captionsnames^{5} was previously undefined. (Remember also that as \abstract is not defined in the book document class the FrenchPro assumes it is a

                                        \resume.)

Notice the different typesetting of the footnote numbers in French and English as well as the printing of that numbers before the footnote text.

5The fenglish package is given with FrenchPro, so \captionnames are normally defined because French-Pro is calling automatically the fenglish package in the previously cited case.

3. Cette note a pour but de faire appel à une macro \index contenant des caractères actifs.

4. Une extension fenglish est fournie conjointement avec FrenchPro ; \captionnames y est défini.

Cette extension fenglish est automatiquement appelée par FrenchPro dans le cas que nous avons cité.

2

Première partie

Ce qui marche est ici...

Chapitre 1

Avertissements

Seul le document authentique qui est fourni par l’auteur sous une forme composée constitue la référence. Cela veut dire que l’installateur de FrenchPro sur un système doit comparer son résultat (sous forme papier ou fichier .dvi) avec la forme authentique fournie par l’auteur.

FrenchPro a été conçu pour fonctionner avec la majorité basés sur L^{A}TEX^{1}.

(L^{A})TEX est mon logo ; il symbolise tous les TEX ; on peut l’imprimer correctement dans toutes les polices ((L^{A})TEX, (L^{A})TEX, (L^{A})TEX, (L^{A})TEX, ...) grâce à la partie NFSS de L^{A}TEX 2ε^{2} .

Only the authentic author’s document in a composed form is the reference. That means that the on site FrenchPro installator must compare his result (paper or .dvi file) with the authentic form provided by the author.

FrenchPro was designed to work with all formats based on L^{A}TEX.

(L^{A})TEX is my logo ; it’s a symbol for expressing all TEX ; one can print it correctly in all shapes ((L^{A})TEX, (L^{A})TEX, (L^{A})TEX, (L^{A})TEX, etc.) due to the NFSS part of L^{A}TEX 2ε^{3}.

1. Au siècle dernier (XX^{e} ), FrenchPro était appelé style french et pouvait fonctionner en dehors de L^{A}TEX mais l’effort pour assurer cette facilité dans de trop nombreux formats exotiques était totalement disproportionné ; ceci a donc été abandonné (au moment de la sortie de L^{A}TEX 2ε).

2. Le document de référence (frenchrf) a été produit avec NFSS. Ce document-ci a été composé avec le format LaTeX2e.

3The reference document was produced with NFSS of LaTeX2e.

6 CHAPITRE 1. AVERTISSEMENTS

Chapitre 2 La torture

2.1 Le saviez-vous?

Nos journaux, livres, revues, articles scientifiques ou autres ont été pendant ces trente dernières années imprimés par des machines d’origine américaine. Ainsi, petit à petit, nous perdîmes l’habitude de lire des majuscules accentuées parce que tout simplement les polices de caractères utilisables sur ces machines n’en comportaient pas.

L’usage de plus en plus généralisé de l’informatique américaine fit ainsi disparaître pendant un temps tous les accents de notre langue écrite.

De la même manière un certain nombre de mauvaises habitudes furent prises quasiment inconsciemment tout simplement parce que les programmes informatiques ne pouvaient pas faire autrement. Ainsi de nombreuses coquetteries de notre typographie sont tombées dans l’oubli.

Saviez-vous par exemple qu’on n’imprime pas des guillemets comme ceci “ ” ni même ‘ ’ mais ainsi ? Nous nous autoriserons toutefois à utiliser dans ce document ces guillemets (‘ ’) que nous considérons comme techniques.

2.2 Did you know that?

Our (french) newspapers, books, magazines, scientific articles and other things have been printed with american machines during these last thirty years. So our habits to read accented uppercase letters declined because they simply were not included in the machinery.

Together with American computer usage growth, all french diacritics disappeared from our french written language.

In a same way bad habits took place, inconsciously, for the only reason that computer programs could not do otherwise. So, a lot of french typographic coquetteries are largely forgotten.

Did you know for example that we never typeset french guillemets like this “ ” neither ‘ ’ but^{1} and ? Instead, we will authorised ourselves to use (‘ ’) in this document because we consider they are technical guillemets.

1We switched to French here to be able to print valid glyphs.

*** Cet espace est laissé intentionellement à blanc ***

2.3 Typographie française

La typographie française est spécifique en ce qui concerne l’utilisation des signes suivants :

‘. : ; ! ? << >>’.

La répartition des espaces dans une ligne se fait de façon équitable entre les mots (jamais à l’intérieur des mots) et après la ponctuation (c’est le \frenchspacing de TEX) contrairement à la typographie anglaise.

Les ‘; ! ?’ doivent être précédés d’une espace fine insécable. C’est ce que nous avons appliqué dans FrenchPro. Le cas du ‘?’ a été traité spécialement car l’espace fine ayant été jugée trop grande (par des spécialistes), a été réduite tout en adjoignant une peu de glue d’extensibilité.

En ce qui concerne le ‘:’, le code typographique^{2} précise qu’il est précédé d’une espace mot insécable. D’autres ont jugé que c’était inesthétique et cela a été remplacé par une espace fine.

Les guillemets français doivent être suivis d’une espace mot insécable qui a été remplacée ici par une espace moindre. Les guillemets fermants sont, eux, précédés de la même espace.

Lorsque la ligne n’est pas assez remplie et qu’il existe un ‘:’, les typographes ont – semblet-il – l’habitude de répartir largement les espaces autour des deux points. C’est ce qui a été fait dans FrenchPro qui pourra éventuellement produire une ligne : peu remplie^{3} ou aussi bien une ligne se terminant ainsi : comme font les pros lorsqu’ils ne trouvent pas d’autre moyen mais il devrait s’agir que de cas extrêmes. À noter que cela a pour avan-

tage de réduire les over/under-full hbox de

façon significative.

Paragraphe de remplissage... ...

... pour vérifier que le ‘:’ ne termine ni la page ni la colonne. Ainsi :

– les deux points et le texte qui suit sont tous deux sur la même page.

2.4 French printing

French printing use specific typographic rules specially in concern with the following: ‘. : ; ! ?’ and french guillemets.

Interword spacing in a line is allways equal (and never modified inside a word). It’s the same way after punctuation (standard \frenchspacing) as opposed to the english typography.

All ‘; ! ?’ are preceeded by a thin and uncuttable space. We apply this automatically in FrenchPro. (We have added few stretching glue to the question mark).

Regarding the ‘:’ we have not inserted an inter-word space but a thin space and also have added some glue.

French guillemets are processed the same way.

In an underfull line containing a ‘:’ man has habits to share spaces around the double points. This way used in FrenchPro can also produce a line with a ragged right, as shown in the french column. This technique reduce a lot of overfull and underfull hboxes produced by TEX.

As shown also, FrenchPro is reluctant to print a double point at the end of a page or a column.

2. Nous avons choisi d’adopter les recommandations de l’imprimerie nationale française.

3. Le cas présenté ici a été créé artificiellement et peut donc apparaître exagéré dans certaines mises-en-pages.

2.5 Rappels concernant la dactylographie

Les habitudes de saisie c.-à-d. les habitudes dactylographiques, veulent que les signes suivants ‘:;!?>>’ soient toujours précédés d’un blanc (barre d’espace sur les claviers) et les << toujours suivis d’un blanc. FrenchPro remplacera automatiquement ce blanc (à la composition) par l’espace appropriée.

Les guillemets français (et respectivement )...^{4}

Les vrais guillemets français (et respectivement ) s’utilisent toujours doublés (<< et respectivement >>). Ainsi < et > ne sont que des signes mathématiques et n’ont pas d’autre sens en français que : inférieur à et supérieur à.

Il est fortement conseillé de poursuivre ces habitudes dactylographiques qui contribuent aussi à éclaircir le texte saisi et donc ainsi à faciliter les corrections ultérieures.

2.5.1 Test de la ponctuation française ‘. : ; ! ?’

Le deux points s’imprime comme ceci : s’il est précédé d’un blanc (au moins un) sinon rien n’est changé (par ex. 11:33). Notez l’espace après le point terminant la phrase ; le point virgule est aussi précédé d’une espace fine s’il n’est pas collé au mot le précédant (comme dans cet exemple dû à une faute de frappe; assez fréquente). Oh ! Quoi-donc? Notez ici l’espacement utilisé devant le ‘!’ et le ‘?’. Il ne faut pas oublier aussi de taper le blanc avant, sinon? tout est collé! Voyez-vous la différence? Bravo !

Mais pour les documents mal saisis (c.-à-d. sans blanc) il est toujours possible de spécifier la sous-option \untypedspaces pour obtenir une insertion automatique des espaces manquants comme ici ! où il avait été saisi ‘ici!’. Vérifions pour les autres ponctuations : ;? que nous n’obtenons pas :;? serrées comme ici.

Vérification de l’espacement :

  \typedspaces X~; Y ; Z; = X ; Y ; Z;
\untypedspaces X~; Y ; Z; = X ; Y ; Z ;

2.6 French typing

French typists have some habits. For example they type a space before ‘: ; ! ? »’ and after «. FrenchPro replace automatically this blank space by the appropriate spacing.

There is only one kind of quoting in French by the mean of guillemets which are allways typed « and ». Usual english simple and double quotes must be prohibited.

                                 2.6.1 \untypedspaces

This control command offers the ability to repair automatically a document badly typed i.e. in which spaces were not typed before french punctuation. This bypass can help but is not the good way to use daily because there are many cases where, for example, a double point must never be preceeded by a space.

Now we verify that the spacing is unchanged in English:

                                          \typedspaces X~; Y ; Z; = X ; Y ; Z;
                                        \untypedspaces X~; Y ; Z; = X ; Y ; Z;
                                 2.6.2 \wrongtypedspaces

A french typist may input spaces before punctuation as it is usual in French. These unfortunate space can be removed by simply letting FrenchPro do it with* the control sequence:

                                        \letpunctuationactivefor
                                                       \wrongtypedspaces

Let’s try the previous example:

                                          X~; Y ; Z; = X; Y; Z;
                                          Now we say \nowrongtypedspaces to come

back to the normal situation.

4. Avec les options fournies telles A4 et doublecolumn on obtient là un overfull hbox difficilement réductible de façon automatique mais je l’ai réduit avec 3 \moretolerance.

2.7 Test des guillemets français ( )

Les guillemets français s’écrivent et se saisissent normalement comme ceci : << normalement >> ou éventuellement en italiques mais toujours normalement ; ici nous avons

tapé au clavier : << \em normalement >>. Et

en tapant par contre :

<<\em anormalement (sans espace)>> on

obtient... anormalement (sans espace) . Remarquez que les guillemets font office d’accolades TEX et que donc les changements de polices sont restaurés en sortant de la citation.

Pour les documents déjà saisis sans espace FrenchPro insérera systématiquement un espace à l’endroit désiré si l’on a donné la sousoption \untypedspaces. Et en tapant à nou-

veau <<\em anormalement (sans espace)>>

on obtient anormalement (sans espace) .

Parfois on désirera remplacer systématiquement tous les guillemets anglais (“ et ”) d’un texte par de vrais guillemets français, il suffira alors de fournir l’étrange option :

\noenglishdoublequotes

pour obtenir : .

(même test en début de paragraphe).

Lorsqu’une citation est faite dans un texte, celle-ci commence toujours par des guillemets. Cette citation peut se poursuivre sur plusieurs paragraphes.

Dans ce cas, le style insérera systématiquement les guillemets nécessaires en début de chaque paragraphe.

Mais une citation peut aussi en contenir une autre. Dans ce cas l’imprimerie nationale précise dans ses Règles typographiques : Lorsque la première citation est elle-même placée entre guillemets, chaque ligne de la seconde débutera par un guillemet ouvrant. Ce dispositif, comme on le voit, n’est pas mis en œuvre ici (voir son application au paragraphe 2.7.1). La deuxième citation peut aussi...

se poursuivre sur un ou plusieurs paragraphes. Notez bien qu’avant cette citation nous avons demandé les \ancientguillemets pour produire ces guillemets fermants en début de ligne. Le \todayguillemets rétablit la situation une fois le deuxième niveau terminé.

Il arrive que la fin d’une citation de deuxième niveau coïncide avec celle du premier niveau. Dans ce cas il faudra coder, comme ici :

\endguillemets à la place de “>>” .

Deux tests : XXX et X XXX X servant à vérifier l’espacement quand on uti-

                                        lise \begin et \end.

Le paragraphe suivant va alors démarrer de façon tout à fait normale... On peut aussi coder :

                                        \begin{guillemets}
                                        Une citation...
                                        \end{guillemets}

ce qui donnera : Une citation... et en tapant

                                        à la TEX : \guillemets{} Une citation...

\endguillemets{} nous devons obtenir absolument la même chose : Une citation...

Vérifions maintenant l’espacement dans les différents cas : X . . . . . . . X %\typedspaces sans blanc X . . . . . X %\typedspaces normal X . . . . . X %\untypedspaces avec blanc X . . . . . X %\untypedspaces sans blanc

A blabla bla blabla : Ceci est mon test de césure ... reste possible.

Ceci est un test avec \raggedright qui – théoriquement – ne devrait plus nous poser de problème.

                                 2.7.1 \noeveryparguillemets

Cette option permet de gérer correctement les citations de second rang mais elle est tout à fait contraire au processus \everypar cité précédemment grâce auquel les guillemets sont générés automatiquement à chaque début de paragraphe. Voici ce que produit l’option nor-

                                        male \everyparguillemets sur le paragraphe

suivant :

Tout le monde s’accorde à trouver légitime la division : extra-ordinaire. Le cas des mots composés est le seul à rencontrer cette unanimité. Dans les autres, les opinions sont très partagées. Frey est le plus catégorique : il n’admet de division selon la formation que pour des mots de composition complètement française, et la rejette sinon... Le Code typographique, tout en adoptant ce même point de vue ... [reconnaît] néanmoins que certains auteurs de travaux scientifiques préfèrent la division étymologique qui fait ressortir la racine grecque ou latine. Quant à Gouriou, il écrit : On préfèrera cependant garder la coupure étymologique chaque fois que les composants sont aisément reconnaissables. (L’italique est de Gouriou.) Telle est aussi l’opinion de Girodet .

Ici on a tri- ché avec des \!

  Et voici l’effet de \noeveryparguillemets :

Tout le monde s’accorde à trouver légitime la division : extra-ordinaire. Le cas des mots composés est le seul à rencontrer cette unanimité. Dans les autres, les opinions sont très partagées. Frey est le plus catégorique : il n’admet de division selon la formation que pour des mots de composition complètement française, et la rejette sinon... Le Code typographique, tout en adoptant ce même point de vue ... [reconnaît] néanmoins que certains auteurs de travaux scientifiques préfèrent la division étymologique qui fait ressortir la racine grecque ou latine. Quant à Gouriou, il écrit : On préfèrera cependant garder la coupure étymologique chaque fois que les composants sont aisément reconnaissables. (L’italique est de Gouriou.) Telle est aussi l’opinion de Girodet .

Il faut noter que cette option impose que le paragraphe commence et se termine par des guillemets. C’est pour cela que nous n’avons pas mis cette option par défaut.

Un test assez méchant

Voici un exemple d’utilisation dans un environement quotation^{5} :

Je ne peux mieux faire que de citer la définition qu’a donnée de la gravure un de nos maîtres fondeurs, Fournier le Jeune :

La science du graveur, ditil, consiste à connaître la figure la plus parfaite que l’on puisse donner aux caractères, les dimensions qu’ils doivent avoir et à les représenter sur l’acier pour les frapper sur le cuivre afin d’en former des matrices qui perpétuent des lettres à l’infini par la fonte.

Le même exemple sans quotation :

Je ne peux mieux faire que de citer la définition qu’a donnée de la gravure un de nos maîtres fondeurs, Fournier le Jeune :

La science du graveur, dit-il, consiste à connaître la figure la plus parfaite que l’on puisse donner aux caractères, les dimensions qu’ils doivent avoir et à les représenter sur l’acier pour les frapper sur le cuivre afin d’en former des matrices qui perpétuent des lettres à l’infini par la fonte.

                                          Puis avec \noeveryparguillemets (c.-à-d.
                                        sans quotation) :

Je ne peux mieux faire que de citer la définition qu’a donnée de la gravure un de nos maîtres fondeurs, Fournier le Jeune : La science du graveur, dit-il, consiste à connaître la figure la plus parfaite que l’on puisse donner aux caractères, les dimensions qu’ils doivent avoir et à les représenter sur l’acier pour les frapper sur le cuivre afin d’en former des matrices qui perpétuent des lettres à l’infini par la fonte.

Et enfin avec quotation, voilà ce que cela peut donner : Il y a ici

un problème à étudier en 2 colonnes !

Je ne peux mieux faire que de citer la définition qu’a donnée de la gravure un de nos maîtres fondeurs, Fournier le Jeune :

La science du graveur, dit-il, consiste à connaître la figure la plus parfaite que l’on puisse donner aux caractères, les dimensions qu’ils doivent avoir et à les représenter sur l’acier pour les frapper sur le cuivre afin d’en former des matrices qui perpétuent des lettres à l’infini par la fonte.

On notera ici les espaces inter-mots beaucoup plus tolérants. C’est la seule solution trouvée pour arriver à imprimer quelque chose d’à peu près correct en double colonnage.

Terminons la page en anglais pour tester le haut de page. Les guillemets doivent être bons avec le codage T1.

Let’s complete the page with english text in order to test and show how will be printed the header.

5. Nous avons introduit \moretolerance pour obtenir une composition correcte.

Même test en \onecolumn

Voici un exemple en environement quotation :

Je ne peux mieux faire que de citer la définition qu’a donnée de la gravure un de nos maîtres fondeurs, Fournier le Jeune :

La science du graveur, dit-il, consiste à connaître la figure la plus parfaite que l’on puisse donner aux caractères, les dimensions qu’ils doivent avoir et à les représenter sur l’acier pour les frapper sur le cuivre afin d’en former des matrices qui perpétuent des lettres à l’infini par la fonte.

Le même exemple sans quotation : Je ne peux mieux faire que de citer la définition qu’a donnée de la gravure un de nos

maîtres fondeurs, Fournier le Jeune :

La science du graveur, dit-il, consiste à connaître la figure la plus parfaite que l’on puisse donner aux caractères, les dimensions qu’ils doivent avoir et à les représenter sur l’acier pour les frapper sur le cuivre afin d’en former des matrices qui perpétuent des lettres à l’infini par la fonte.

Puis avec \noeveryparguillemets (sans quotation) :

Je ne peux mieux faire que de citer la définition qu’a donnée de la gravure un de nos maîtres fondeurs, Fournier le Jeune : La science du graveur, dit-il, consiste à connaître la figure la plus parfaite que l’on puisse donner aux caractères, les dimensions qu’ils doivent avoir et à les représenter sur l’acier pour les frapper sur le cuivre afin d’en former des matrices qui perpétuent des lettres à l’infini par la fonte.

Et enfin avec quotation :

Je ne peux mieux faire que de citer la définition qu’a donné de la gravure un de nos maîtres fondeurs, Fournier le Jeune : La science du graveur, dit-il, consiste à connaître la figure la plus parfaite que l’on puisse donner aux caractères, les dimensions qu’ils doivent avoir et à les représenter sur l’acier pour les frapper sur le cuivre afin d’en former des matrices qui perpétuent des lettres à l’infini par la fonte.

Test de stretchability

Les espaces doivent être également répartis sur la ligne :

etiord-gauche^{6}  centre-ertnec  ^{7}ehcuag-droite

2.7.2 Test des commandes \ifnum

1 < 3 est VRAI, bien sûr ! comme 3 > 1 est aussi VRAI, bien sûr !

2.7.3 Test des commandes \everypar

J’ai codé dans cette section \everypar{$++\,$} : ++ Paragraphe 1 citation niveau 1 ++ Paragraphe 2 citation niveau 2 ++ Paragraphe 3 fin citation niveau 2 puis fin niveau 1 ++ Paragraphe 4

6. En plain TEX l’espacement est ici curieusement incorrect ! ...

7. ... alors qu’il faudrait la même répartition de l’espace.

2.7.4 Test de fermeture prématurée

Il arrive que les guillemets soient fermés dans un environnement plus intérieur qui n’apparie donc pas correctement les blocs. Voici un exemple d’utilisation :

Ma^ıtre Corbeau dit à son clerc : << \itshape Cher collègue,
\begin{itemize}
\item Ah que vous ^etes joli !
\item Ah que vous me semblez beau ! >> \upshape
et s'enfuit de ce pas...
\end{itemize}
\endguillemets
\textsf{Quel homme étrange, n'est-ce pas ?}

Voici ce que cela donne comme composition :

Maître Corbeau dit à son clerc : Cher collègue,

– Ah que vous êtes joli !

– Ah que vous me semblez beau ! et s’enfuit de ce pas...

Quel homme étrange, n’est-ce pas?

On notera plusieurs choses. Premièrement il a fallu rétablir \upshape après les guillemets fermants, du fait du mauvais appariement des blocs. Ensuite un message sort indiquant une fermeture prématurée des guillemets. Cette fermeture restant incomplète on note enfin que l’on a forcé un \endguillemets pour clore proprement et définitivement l’environnement guillemets.

2.7.5 \everyparguillemetsremoved

Dans le même exemple nous pouvons aussi interdire la génération automatique des guillemets ouvrants à chaque début de paragraphe ; il faut alors saisir \everyparguillemetsremoved :

Maître Corbeau dit à son clerc : Cher collègue,

– Ah que vous êtes joli !

– Ah que vous me semblez beau ! et s’enfuit de ce pas...

Quel homme étrange, n’est-ce pas?

Il suffit ensuite de rétablir \everyparguillemets.

2.7.6 Test de l’espacement

a | b

14 CHAPITRE 2. LA TORTURE

Page intentionnellement laissée blanche

2.7.7 Guillemets interrompus

Une citation peut être en anglais et donc se commencer par <<\english et se terminer par \french >>. Ce cas ne doit plus générer de message fermeture de guillemets non ouverts ! Voici le test, réalisé ici tout d’abord avec l’environnement nonfrench :

1 Text in English

Puis avec :

\begin{english} ... \end{english} :

2 Text in English

  Et enfin avec \english ... \endenglish :

3 Text in English

Ceci avait aussi pour but de tester ces possibilités de changement de langage et de vérifier l’espacement qui devrait être ainsi :

0 Text in English

2.7.8 \noenglishdoublequotes

Nous avons mis la commande \noenglishdoublequotes juste avant le titre de section de façon à remplacer les quotes anglaises par des guillemets français dans ce titre. Il s’agit de vérifier aussi que la génération des fichiers auxiliaires .aux et .toc ne pose pas de problème lorsque ces fichiers sont réutilisés. Bien sûr, si cette option n’est pas activée pour tout le document, comme ici, on ne retrouvera pas les guillemets français dans la table des matières.

                                 2.7.9 \nofrenchguillemets
                                          En codant \nofrenchguillemets on n’uti-

lise plus les guillemets programmés dans l’extension french. Si on les utilise malgré tout, le résultat dépendra de la police. Ici nous utilisons la police cmr10 et nous obtenons :

¡¡ en 7-bits ¿¿ et aussi : « en 8-bits ». Réactivons maintenant les guillemets avec la commande \frenchguillemets et faisons le même test : en 7-bits et aussi : en 8-bits . Voyez-vous?

2.7.10 Haut de page+guillemets

En 8-bits

Il ne devrait pas y avoir de problème du tout. Car, puisqu’il s’agit d’un guillemet en 8-bits, cela doit être forcément un vrai guillemet français. Mais, malheureusement, la solution pour l’implémenter n’est pas encore trouvée avec le codage OT1. Le codage de fonte de ce document imprime : ¡¡ ¿¿ (doit être parfait en T1).

En 7-bits

En codage OT1 les guillemets 7-bits de haut de page ne peuvent être bons sur cette page QUE parce que nous avons terminé la page en français, sinon nous aurions eu : ¡¡ et ¿¿

2.7.11 Guillemets et maths

L’équation suivante ne doit plus produire le fameux message :

! Argument of \@genG has an extra }.

U^{k+1} = U^{k} − < g_{k},d_{k} >

2.8 D’autres guillemets

Avec FrenchPro il est possible de substituer automatiquement aux guillemets ‘anglais’ la forme ` que voici´ en donnant la sous-option \noenglishquote. Mais attention, les apostrophes deviennent des accents comme dans : il s´ agit ici de l´ exemple qui aurait dû être imprimé : il s’agit ici de l’exemple. Un usage intensif de cette option est plutôt à déconseiller.

2.9 French guillemets

Using french guillemets in an english document (« and ») will give (depending of font encoding) that: « and », it is normal!

As you can look in the previous columns, french guillemets have specific rules. They are used for quotation when an author is cited or each time an emphasis is needed. Normally, italic is not used inside a quoted french text, excepted when you really want to show some wording.

When opened, each paragraph of the quoted text will start left with the opening french guillemets.

Another quotated text can take place inside a first level. This second level citation is also very specific. Each line must start with guillemets.

The style designer, from time to time, chose to apply here an ancient rule by putting here closing guillemets.

The technical tools involved in French-Pro disallow to have at the same time the \everypar possibility and the second level mechanism.

2.9.1 Guillemets and maths

The following equation is always correct:

U^{k+1} = U^{k} − < g_{k}, d_{k} >

and never produce an error message.

2.10 Other guillemets

With FrenchPro it is possible to replace english guillemets by diacritic caracters. But, be careful, all apostrophes will be diacritics too.

2.11 Trois petits points

Les points de suspension sont : ... et non pas ceux de TEX : … En codant \noTeXdots les commandes \dots ou \ldots de L^{A}TEX donneront : ... Mais l’option par défaut a été volontairement maintenue au standard (\TeXdots) puisqu’il suffit de ne pas les utiliser.

2.12 Crochets

IBM, en son temps, avait créé l’EBCDIC dans lequel ne figurait pas les crochets ([ ]). C’est la raison pour laquelle les utilisateurs IBM ont parfois substitué < et > aux crochets. La sous option \EBCDICbrackets permet de les remplacer comme ici [automatiquement] par des crochets. Mais faites attention, les doubles guillemets << et >> ne donneront jamais des crochets mais et (sauf en mode verbatim). On peut en général se contenter de < < et > > pour obtenir [ [ et ] ]. On revient à la situation antérieure en tapant la commande

suivante : \normalbrackets.

2.13 Débordements

Nous venons de choisir l’option d’indication de débordement de ligne \overfullhboxmark et nous voyons son effet lorsque la ligne ne peut être coupée grâce à l’impression de la petite boîte noire. Cette option est activée au minimum pour une page entière. Ne pas spécifier l’option et son contraire sur la même page sinon l’effet est inchangé.

2.14 \labelsinmargin
[labels: in: margin]

FrenchPro offre la possibilité, comme cela a été demandé à partir de cette section, d’imprimer dans la marge le libellé des étiquettes utilisées dans les ordres \label. Cette option, utilisable aussi en dehors du français, est la

suivante : \labelsinmargin.

2.15 Three dots

Usual and common TEX and L^{A}TEX dots are not french dots.

2.16 Brackets

An option is offered to replace < and > by brackets.

                            2.17 \overfullhboxmark
                                        The command \overfullhboxmark print a

black box where your have an overfull hbox i.e. when a line can’t be hyphenated. The de-

                                        fault is \nooverfullhboxmark.

2.18 Labels in margin

                                                                                [labels are in margin]

An option allow you to print the labels you use in a page. These labels are printed in margins.

2.19 Des points sur...

Inutile de mettre les points sur les i quand on accentue un i. Tout bon éditeur de texte doit faire ce travail pour vous. Sinon il existe la sous-option \idotless qui produira î si on lui demande d’imprimer \^i. La valeur par défaut dans FrenchPro est \iwithdot qui donnera malgré tout de bons i accentués avec MLTEX (î) s’ils sont saisis directement en 8 bits (vérifiez dans votre fichier source).

2.20 Ponctuation et mode mathématique

Il s’agit de vérifier que les modifications introduites par l’extension FrenchPro ne posent aucun genre de problème en mode mathématique. Nous définissons une macro \test :

\def\test#1{#1}

pour voir si le mode mathématique peut être appelé sans problème en argument de macroinstructions. L’appel de \test{$x''$} ne doit pas poser de problème, ni même \texttt{-

[$x''=0$]}
Ainsi : \texttt{[$x''=0$]}

donne : [x′′ = 0] et

$A':B''_1<C_{d'}>D^2\ et\,\ !n\ ?\ ;$
\test{$A':B''_1<C_{d'}$}

donne : A′ : B′′_{1} < C_{d′} > D^{2} et !n ? ;

A′ : B′′_{1} < C_{d′}

Avec \noenglishquote cela...

donne : A′ : B′′_{1} < C_{d′} > D^{2} et !n ? ;

A′ : B′′_{1} < C_{d′}

puis avec \noenglishdoublequotes et mise

en vedette :

A′ : B′′_{1} < C_{d′} > D^{2} et !n ? ;
A′ : B′′_{1} < C_{d′}

De même :

{\tt CALL SUBR($<$iopt$<$,ilopt$>%
                                 >$)}

doit s’imprimer :

CALL SUBR(<iopt<,ilopt>>)

sans produire le message d’erreur Fermeture de guillemets non ouverts ! .

2.21 An ıdotless

Everybody knows that a french “i circonflexe” has no dot on it. (In my opinion it is a TEX bug to leave the dot when a diacritic is put on.) To suppress the dot automatically the best way is to use a well programmed text editor. FrenchPro offers another opportunity

                                        with \idotless.

2.22 Math mode and punctuation

Here we verify that french modifications about punctation does not introduce any problem in printing mathematics. We define a new macro \test :

                                        \def\test#1{#1}

in order to see if there is no more problem when passing maths inside a macro argument. Calling \test{$x''$} must not introduce any

                                        problem, as well as \texttt{[$x''=0$]}
                                        So: \texttt{[$x''=0$]}

gives: [x′′ = 0] and

                                        $A':B''_1<C_{d'}>D^2\ et\,\ !n\ ?\ ;$
                                        \test{$A':B''_1<C_{d'}$}

gives: A′ : B′′_{1} < C_{d′} > D^{2} et !n ? ;

A′ : B′′_{1} < C_{d′}

                                        With \noenglishquote it. . .

gives: A′ : B′′_{1} < C_{d′} > D^{2} et !n ? ;

A′ : B′′_{1} < C_{d′}

                                        and with \noenglishdoublequotes in “dis-

play” math mode:

A′ : B′′_{1} < C_{d′} > D^{2} et !n ? ;
A′ : B′′_{1} < C_{d′}

Also:

                                        {\tt CALL SUBR($<$iopt$<$,ilopt$>%
                                                                         >$)}

must print:

                                        CALL SUBR(<iopt<,ilopt>>)

without producing the error message: “Fermeture de guillemets non ouverts !”.

Pour ma part lorsque je désire des crochets que je n’ai pas au clavier, je préfère taper :

{\tt CALL SUBR(<iopt<,ilopt> >)} et uti-
liser l’option \EBCDICbrackets :
CALL SUBR([iopt[,ilopt] ])

Cette option n’a pas d’effet en mode mathématique :

1233 < 1234 << 1235 >> 1234 > 1233

Vérifions aussi (x < \frac{1}{3} < \frac{1}{2} > \frac{1}{4}) :

x < \frac{1}{3} < \frac{1}{2} > \frac{1}{4}

puis aussi :

pour |y| < \frac{111}{444}

La double ponctuation ne doit avoir aucun effet (visible) dans une formule en mode mathématiques, est-ce bien le cas sur l’exemple ci-dessous :

a := b,(c!n = m) ; vrai?

On notera que la partie texte de la formule a été saisie avec la commande :

\textrm{ ; vrai ?}

et que l’espacement français y a été appliqué.

2.22.1 Le cas de la virgule

En standard (L^{A})TEX (ou alors avec l’option spéciale \regularmathcomma de FrenchPro) le traitement de la virgule est spécifique, ainsi quand on tape ce qui suit en mode mathématique de mise en valeur :

$$\textrm{La fonction}\ f(x,y)\
  \textrm{ou le Vecteur}\ V(x, y, z)$$
$$Total=1,255\,\$\ ou\
      1\,500,00\,\textrm{EUR}$$

on obtient des espacements après les virgules, qu’il y ait ou non des espaces dans le source TEX :

La fonction f(x, y) ou le Vecteur V (x, y, z)

T otal = 1, 255 $ ou 1 500, 00 EUR

(ce qui montre une anomalie dans la composition des nombres relatifs)

When I have no brackets on my keyboard I prefer to type:

                                        {\tt CALL SUBR(<iopt<,ilopt> >)}

using the option \EBCDICbrackets but the result in english remains unchanged:

                                        CALL SUBR(<iopt<,ilopt> >)

And within math mode:

1233 < 1234 << 1235 >> 1234 > 1233

Let’s verify also (x < \frac{1}{3} < \frac{1}{2} > \frac{1}{4}) :

x < \frac{1}{3} < \frac{1}{2} > \frac{1}{4}

and:

pour |y| < \frac{111}{444}

The “double punctuation” should not have any effect in maths, which is obviously the case in the following English example:

a := b, (c!n = m) ; vrai ?

Though the text part of the formula has been typed via a command:

                                        \textrm{ ; vrai ?}

the french spacing doesn’t apply here.

2.22.2 The comma case

With (L^{A})TEX standard (or with the special FrenchPro \regularmathcomma the processing of comma is really specific. So, when you type in the following in display math mode:

                                        $$\textrm{La fonction}\ f(x,y)\
                                          \textrm{ou le Vecteur}\ V(x, y, z)$$
                                        $$Total=1,255\,\$\ ou\
                                              1\,500,00\,\textrm{EUR}$$

you will get thin spaces after the commas, no matter spaces are given or not in the TEX source:

La fonction f(x, y) ou le Vecteur V (x, y, z)

T otal = 1, 255 $ ou 1 500, 00 EUR

(which shows a french typesetting error for the relative numbers).

Par contre avec FrenchPro on n’obtient aucun espacement supplémentaire :

La fonction f(x,y) ou le Vecteur V (x,y,z)

T otal = 1,255 $ ou 1 500,00 EUR

cela est dû à l’option \frenchmathcomma qui est activée par défaut avec FrenchPro. Mais cela montre alors une anomalie de composition dans les listes (x,y,z).

Si l’on veut des espaces il faut alors les indiquer explicitement, comme cela est l’usage, plus généralement, en mode mathématique :

$$\textrm{La fonction}\ f(x,\,y)\
\textrm{ou le Vecteur}\
V(x,\,y,\,z)$$
$$Total=1,255\,\$\ ou\
1\,500,00\,\textrm{EUR}$$

ce qui donnera :

La fonction f(x, y) ou le Vecteur V (x, y, z)

T otal = 1,255 $ ou 1 500,00 EUR

On notera que FrenchPro obéit à l’extension icomma lorsque cette dernière est chargée avant FrenchPro, mais seulement en français.

With the FrenchPro package there is no space added at all:

La fonction f(x, y) ou le Vecteur V (x, y, z)

T otal = 1, 255 $ ou 1 500, 00 EUR

this is due to the option \frenchmathcomma which is defaultly activated in the FrenchPro package. People will then distinguish a typesetting error in the lists (x, y, z).

If you want spaces you should then give them to TEX explicitely, as usually done, more generally in math mode:

$$\textrm{La fonction}\ f(x,\,y)\
  \textrm{ou le Vecteur}\
      V(x,\,y,\,z)$$
$$Total=1,255\,\$\ ou\
      1\,500,00\,\textrm{EUR}$$

which will give:

La fonction f(x, y) ou le Vecteur V (x, y, z)

T otal = 1, 255 $ ou 1 500, 00 EUR

You should notice that FrenchPro respect the choice of the icomma package when that last one is loaded before FrenchPro; but it only applies in French.

2.25. MY ANTISLASH IS \ 21

2.23 Mon antislash est \

L’antislash n’existe pas dans toutes les polices en OT1. Que vous utilisiez \backslash ou \textbackslash vous obtiendrez la même chose, ainsi en romain droit on obtient :

textbackslash=“ backslash=“

mais avec la fonte tt on obtient :

textbackslash=\
backslash=\

2.24 Notes de bas de page

Nous comparons ici la composition des notes de bas de page (avec et sans \fnsymbol) dans une langue et dans l’autre. Voyons ce que cela donne :

Numérotation normale^{8}. Voici une note^{∗} puis une autre^{†} puis encore

une autre^{‡}

2.25 My antislash is \

The antislash glyph doesn’t exist in all OT1 font. Whatever you use, \backslash or \textbackslash you will obtain the same output, so in upright roman you obtain:

textbackslash=\

backslash=\ but with the tt font you obtain:

  textbackslash=\
  backslash=\

but \backslash is only available in math mode.

2.26 Compared footnotes

We compare the typesetting of footnotes (with and without \fnsymbol) in one language versus the other. Let’s look at them.

Numérotation normale^{8}.

Voici une note^{∗} puis une autre^{†} puis encore une autre^{‡}

8. Une note normalement numérotée.

∗ Première note.

† Deuxième note.

‡ Troisième note.

8Une note normalement numérotée.

∗Première note.

†Deuxième note.

‡Troisième note.

2.27 \guillemetsinarrays

Avec FrenchPro l’utilisation de guillemets à la française en mode texte dans les environnements array ou eqnarray est possible mais il est nécessaire de protéger les opérateurs inférieur (<) et supérieur (>) lorsqu’ils terminent une colonne. On rajoute alors une paire d’accolades ou \relax pour terminer la macrocommande :

$
\begin{array}{ccc}
a  & \inferieura        &b\\
a  & \protect<          &b\\
a  & b                  &<\\
a  & >{}                &c\\
<{}& << >>              &c\\
<{}& \textrm{<< text >>}&c
\end{array}
$

ce qui donne :

\begin{aligned}a & < & b \\ a & < & b \\ a & b & < \\ a & > & c \\ < & <<>> & c \\ < & text & c \end{aligned}

On peut éviter d’avoir à modifier des tableaux existants et dans ce cas on codera \no-

guillemetsinarrays :
\noguillemetsinarrays
$
\begin{array}{ccc}
a  & \inferieura        &b\\
a  & <                  &b\\
a  & b                  &<\\
a  & >                  &c\\
<  & << >>              &c\\
<  & \textrm{<< text >>}&c
\end{array}
$

ce qui donne alors :

\begin{aligned}a & < & b \\ a & < & b \\ a & b & < \\ a & > & c \\ < & <<>> & c \\ < & ¡¡ text ¿¿ & c \end{aligned}

2.28 Guillemets in arrays

The FrenchPro package allows people to print french guillemets in array environments (but in text mode). This usually breaks the code for < or > when they finish an array slot. So you should protect them; like this:

                                        $
                                        \begin{array}{ccc}
                                        a  & \inferieura        &b\\
                                        a  & \protect<          &b\\
                                        a  & b                  &<\\
                                        a  & >{}                &c\\
                                        <{}& \textrm{« text »}&c
                                        \end{array}
                                        $

which gives:

\begin{aligned}a & < & b \\ a & < & b \\ a & b & < \\ a & > & c \\ < & « text » & c \end{aligned}

One can avoid to modify existing arrays

                                        and then just say \noguillemetsinarrays

but this command is not interesting in English because the problem doesn’t exist at all:

                                        $
                                        \begin{array}{ccc}
                                        a  & \inferieura        &b\\
                                        a  & <                  &b\\
                                        a  & b                  &<\\
                                        a  & >                  &c\\
                                        <  & \textrm{« text »}&c
                                        \end{array}
                                        $

gives the following result:

\begin{aligned}a & < & b \\ a & < & b \\ a & b & < \\ a & > & c \\ < & « text » & c \end{aligned}

Cette commande est aussi valable pour les environnements eqnarray :

a  <  b  (2.1)
a  >  c  (2.2)
< <<>> c  (2.3)
< ¡¡ text ¿¿ c  (2.4)

Pour terminer je rétablis la valeur par dé-

faut : \guillemetsinarrays et si j’essaye le

même exemple j’obtiendrais le message :

! Argument of \@PreserveBraces has an
extra }.

2.29 Guillemets verbatim

  Avec l’option \nofrenchguillemets il est

possible – si FrenchPro travaille en codage de fonte du genre T1 (mais ca ne semble pas être le cas ici) – d’imprimer des guillemets 8-bits en verbatim : « ».

2.30 Environnement guillemets exclus

\guillemets{} Je me suis dit que :
<< avec l'option [...] les  guillemets
sont inopérants. \endguillemets{}
  [\guillemets{}] Je me suis dit que :
  avec l’option \noeveryparguillemets

on ne doit pas avoir un environnement qui se termine avant la fin du paragraphe. C’est pourquoi l’environnement guillemets n’est plus autorisé dans ce cadre. Désormais un message est émis et ces environnements guillemets sont inopérants.

On note que \guillemets{} n’a aucun effet visible et que le début de paragraphe est forcé aux premiers caractères-guillemets ouvrants qui suivent. Le \endguillemets{} de fin d’environnement ferme cependant le paragraphe.

[\guillemets{}]Ces environnements exclus dans le cadre de cette option peuvent être de premier ou / deuxième / niveau comme ici

(slashs). [\endguillemets{}]

Notice that with standard L^{A}TEX you obtain a message saying that \guillemotleft and \guillemotright are invalid in math mode when you try to use guillemets in an array environement.

2.31 Verbatim Guillemets

The 8bit french guillemets chars printed within a verbatim environnement give here: « »

2.32 Utilisation de la toc

Il n’est pas prévu de pouvoir composer une table des matières ou un sommaire dans plus d’une langue. On notera que \sommaire est un apport de FrenchPro.

2.33 Fichiers lof et lot

On vérifie ici que la ponctuation française n’a pas créé d’ennui particulier. Nous avons laissé en blanc la figure 2.1 qui n’est qu’un simple test. De même le tableau 2.1 n’est là que pour créer une entrée dans la liste des tableaux.

Le caption de la figure 2.1 doit apparaître comme ceci : essai ; 2 cm ! pourquoi pas?

Peu importe la figure...

Fig. 2.1 – essai ; 2 cm ! pourquoi pas? (cf. aussi le tableau 2.10)

Le caption du tableau 2.1 doit être comme ceci : ‘ essai ; 2 cm ! pourquoi pas? ’

Tab. 2.1 – ‘ essai ; 2 cm ! pourquoi pas? ’ (cf. aussi le tableau 2.10)

Peu importe le tableau^{a}...

a Une note de tableau.

On notera les libellés (Fig. et Tab.) plus conformes à l’usage français. Ne pas oublier non plus que les titres de tableaux sont toujours placés, en français, avant ceux-ci contrairement aux figures.

FrenchPro ne prévoit pas que l’on puisse composer une partie des tables des figures (ou tableaux) en français et une autre en anglais par exemple. Les fichiers .lof et .lot seront donc composés entièrement dans la langue présélectionnée.

2.34 toc file use

No facility is given to typeset the .toc in various languages.

Notice that \sommaire is a new command brought up with this package.

2.35 lof and lot files

Same test in English just to verify that our french modifications does not affect the text in English.

You will notice, of course, that the caption names are re-established to their original values (figure and table).

The following figure (not referable) caption must look like: « essai »; 2 cm! Why not?

No matter how is the figure…

Figure 2.2: « essai »; 2 cm! Why not?

(cf. also the table 2.10)

The caption of the table (not referable) must look like: ‘ « essai »; 2 cm! Why not? ’

No matter how is the table^{9}…

Table 2.2: ‘ « essai »; 2 cm! Why not? ’ (cf. also the table 2.10)

Notice that we have here the standard caption names used by L^{A}TEX.

You can see in the French column the specific labels and places of caption titles (under the figure but over the table).

Don’t try to compose .lof and .lot files in more than one language, it’s not designed in this (stupid?) way!

9A note from a table.

2.38. \LABELSINMARGIN AGAIN  25

Tab. 2.3 – ‘ essai ; 2 cm ! pourquoi pas? ’ (cf. aussi le tableau 2.10)

Peu importe le tableau sur deux colonnes^{a}...

a Une note de tableau.

2.36 Encore un tableau...

Mais celui-ci est sur deux colonnes si l’option twocolumn est active. Vérifions simplement que le traitement est le même qu’en une seule colonne.

Le caption du tableau 2.3 doit être comme ceci : ‘ essai ; 2 cm ! pourquoi pas? ’

2.37 Encore

      \labelsinmargin

À nouveau nous utilisons \labelsinmargin pour vérifier son fonctionnement dans une figure et un titre de figure

Peu importe la figure...

Fig. 2.3 – le titre de la figure avec label

[label de la figure] [label du titre fig.]

Même test avec un tableau :

Tab. 2.4 – le titre du tableau avec label

Peu importe le tableau...

[label du tableau] [label du titre tab.]

Désactivons définitivement l’option avec

\nolabelsinmargin.

                            2.38 \labelsinmargin again

Again we test \labelsinmargin to verify that it is running within a figure and in a figure’s caption.

No matter the figure…

Figure 2.4: title with a label

                                                                                [label in a figure] [label in fig. caption]

Same test with a table:

No matter the table…

Table 2.5: title with a label

                                                                                [label in a table] [label in a tab. caption]

Disactivate definitely the option with

                                        \nolabelsinmargin.

2.39 Notes dans \caption

Si une note dans un tableau doit être imprimée à la fin du tableau, une note dans un titre de tableau doit être imprimée en fin de page. Malheureusement L^{A}TEX perd le texte des notes dans les environnements figure et table. L’extension FrenchPro prévient l’utilisateur que le texte doit être réinséré à l’aide

de \footnotetext.

Tab. 2.6 – Légende^{10}

Peu importe le tableau...

2.40 \caption vide

Tab. 2.7 –

Tableau sans légende

2.41 \nombre

Les nombres en français sont imprimés correctement lorsque l’on utilise \nombre, ainsi :

\nombre{123 456,123 456}

imprime 123 456,123 456 au lieu de la forme habituelle 123456, 123456 ou 123 456,123 456 suivant que l’on est en mode math ou en mode texte.

On y voit des espaces fines à chaque millier et (normalement) une virgule sans espace supplémentaire comme cela se produit en mode math avec TEX standard.

2.42 Autre chose?

Non ! [espace libre utilisable]

2.43 Notes within \caption

Normally in French we print table’s footnotes at the end of the table but it can’t be the case when a footnote is called from a caption title. But unfortunately footnote’s text is lost when inside a L^{A}TEX figure or table environnement, as shown here. Thus french.sty warn the user with the appropriate message, but in English nothing is done.

No matter the table…

Table 2.8: Caption title^{11}

2.44 Empty \caption

Empty caption

Table 2.9:

2.45 \nombre

French number should be correctly printed us-

ing \nombre, so :
\nombre{123 456,123 456}

should not print as usual 123456, 123456 nor 123 456,123 456 (depending you are in math or in text mode) but 123 456,123 456.

We see here thin spaces between each thousand part and no (usual) space after the comma (as it is in math with standard TEX).

2.46 Anything else?

No! [free space to reuse]

10. Une note de bas de page.

2.47 Le 1^{er} paragraphe

Notez bien que le 1^{er} paragraphe d’une section ne commence jamais au fer à gauche en français, comme vous le voyez ici.

Le deuxième paragraphe démarre comme le premier...^{12}

2.48 Test des listes

Voici un test d’énumération (itemize) de L^{A}TEX :

– liste de niveau 1 ;

– incluant un niveau 2, – mais aussi un niveau 3,

– peu utilisé ;

– le niveau 2 se terminant ici ;

– suite de la liste de niveau 1 ;

– dernier élément de niveau 1.

On remarquera les deux choses suivantes : 1^{o} les marqueurs sont identiques quel que soit le niveau et 2^{o} aucun élément ne commence par une majuscule.

2.49 Définition de langue

On peut se définir une langue comme par exemple le kathmandouais par :

\NouveauLangage[2]{kathmandouais}

et ensuite on peut écrire kathmandouais en tapant : \kathmandouais bla... blabla... bla^{13} et revenir au français par \french^{14}. S’il n’y

a pas de commande \kathmandouaisTeXmods

de définie rien ne se passera vraiment, cela sera équivalent à \relax, seul un message d’avertissement sera émis.

2.50 First paragraph

In English each paragraph is indented except the first one of a section, subsection, etc. as you can see in this example.

Subsequent paragraphs start indented…

2.51 Itemized lists

Here is the same french itemize list:

• liste de niveau 1;

– incluant un niveau 2,

∗ mais aussi un niveau 3,

∗ peu utilisé ;

– le niveau 2 se terminant ici ;

• suite de la liste de niveau 1 ;

• dernier élément de niveau 1.

You can compare english and french lists. Notice firstly that item markers are identical at each level and secondly that each item never starts with an uppercase letter.

2.52 Create a language

There is a new control sequence to allow the creation of new language:

\NouveauLangage[n]{language}

This command is in fact used internally but it can be also used elsewhere to define a new language which rules will be set by: \<language>TeXmods (if defined.) The internal language number n tells TEX what hyphenation table is to use among those defined at

INITEX time.

12. La typographie du titre de section (1^{er} ) est à noter ; mysmaller.sty a été utilisé à la compilation de frenchrf avec L^{A}TEX. Il existe aussi l’extension relsize qui fonctionne bien avec FrenchPro.

13Mais bien entendu les césures ne seront pas bonnes car elles seront faites à partir d’un language existant.

On notera la typographie du numéro de cette note saisie en Katmandouais.

14. Si le point qui suit n’est pas accolé au mot french alors cela signifie que des blank space traînent dans FrenchPro.

Attention : psfig est périmé ; il n’est utilisé ici qu’à des fins de test.

2.53 Caractères actifs

Quelques jeux de macros doivent parfois être chargés directement dans le document et utilisent les caractères actifs de FrenchPro. Il y a alors conflit ouvert. Plusieurs solutions sont offertes, soit utiliser l’ordre :

   \originalinput{fichier}

soit :

   \begin{nonfrench}
          ... macros-instructions...
   \end{nonfrench}

Nous avons adopté la deuxième solution ici :

Saluons au passage Trevor Darrell,
      l'auteur de \verb|psfig| :
 \begin{nonfrench}
   \let\psfig\undefined
   \input mypsfig.sty
   \begin{center}
       \ \hbox{\vbox{\psfig{figure=%
          myfigure.ps,height=1in}}}\
   \end{center}
 \end{nonfrench}

Saluons au passage Trevor Darrell, l’auteur

de psfig :

Mais attention n’utilisez pas en français un code que vous auriez chargé en anglais ou réciproquement !

En fait, l’extension FrenchPro est compatible avec psfig. En voici l’exemple – sans uti-

liser nonfrench – avec \psdraft :

2.54 Active characters

Codes that were designed for English might bring problems when used with FrenchPro because few characters are activated. Few solutions are offered, either:

                                           \originalinput{file}

or:

                                           \begin{nonfrench}
                                                  ... macros-instructions...
                                           \end{nonfrench}

We used here the second solution:

                                        Saluons au passage Trevor Darrell,
                                                   l'auteur de \verb|psfig| :
                                         \begin{nonfrench}
                                           \let\psfig\undefined
                                           \input mypsfig.sty
                                           \begin{center}
                                               \ \hbox{\vbox{\psfig{figure=%
                                                  myfigure.ps,height=1in}}}\
                                           \end{center}
                                         \end{nonfrench}

Saluons au passage Trevor Darrell, l’auteur

                                        de psfig :

But be carefull, don’t use in French a code that was loaded in English or reciprocally!

In fact the FrenchPro is fully compatible with psfig once FrenchPro starts working i.e.

                                        after the \begin{document}.

2.55 Abréviations

Si on demande \abbreviations alors on a accès à un fichier d’abréviations typographiques françaises. Ainsi je saisis "monseigneur" et j’imprime M^{gr}. De même, avec MLTEX je saisis "deuxième" (vérifiez dans le source que ce mot est bien codé en 8bits) et j’imprime 2^{e}. Ainsi il n’est plus vraiment indispensable de se rappeler que l’abréviation de madame est M^{me} (et maître : M^{e}).

Lorsqu’un mot ne figure pas dans le fichier d’abréviations, il est alors imprimé tel que. Ainsi "GUTenberg" imprimera “GUTenberg”. Mais n’oubliez jamais le double guillemet fermant sinon vous obtiendrez un message du genre :

 Paragraph ended before \AbbrevName
      was complete.

Je peux aussi donner mon fichier personnel d’abréviations en codant :

\abreviations[mon_fichier_personnel]

On retire ces possibilités par la commande \noabbreviations. N’oublions pas que le caractère " sert normalement en TEX comme en L^{A}TEX à exprimer les nombres en hexadécimal.

2.56 Monsieur s’abrège M.

  Que je saisisse "Monsieur" ou "monsieur"

j’obtiens la même abréviation : M. ou M., respectivement.

Il n’en est pas toujours de même... ainsi lorsqu’on saisit "Numéro" et "numéro" on obtient respectivement : N^{o} et n^{o} , car Numéro est une entrée dans le fichier des abbréviations où il est écrit {Numéro}.

Il est désormais possible de placer une abréviation dans un titre de chapitre ou de section, comme le titre de cette section le démontre ; nous avons saisi :

\section{Monsieur s'abrège "Monsieur"}

2.57 Abbreviations

The abbreviation facility offered in FrenchPro is based on an abbreviations file. When requested by \abbreviations one may call any "abbreviation". If this abbreviation is found in the file it will be replaced by the typographic expansion, if not it will be printed as is.

But never forget the ending double quotes otherwise you will obtain the terrible message:

                                        Paragraph ended before \AbbrevName was
                                        complete.

You can have your own abbreviations file by

                                        calling: \abreviations[my_file].

Saying \noabbreviations this facility is lost. Remember that the char " is used normally in TEX as in L^{A}TEX to start an hexadecimal number.

But used in English, "monsieur" will give ”monsieur”^{15}.

15Notice the quoting!

2.58 Autres macros utiles

\fsc{KnUtH} permet d’imprimer Knuth et \lsc{SnCf} donne sncf. Cela doit aussi marcher si le mot commence par une accentuation comme ici avec le mot Épinal et même quand cette accentuation est plus loin dans le mot comme ici dans André.

Voici une note^{16} de bas de page comman-

dée par \footnote{La note.\label{NOTE}}.

Je peux faire à nouveau appel à cette note^{16}

par l’ordre \refmark{NOTE}.

Par analogie avec l’environnement verse :

1^{re} ligne : cette ligne est bien trop longue, elle doit être coupée autant de fois que nécessaire... 2^{e} ligne : le test terrible de... 3^{e} ligne : ‘ceci est le test des quotes’

voici le même test (sans \\) avec l’environnement versatim qui est un environnement verbatim composé avec des coupures de lignes comme l’est l’environnement verse et dont les quotes peuvent être imprimées avec des accents si on précise \noenglishquote :

1\iere{} ligne : cette ligne est bien
      trop longue,  elle doit ^etre
      coupée autant de fois que
      nécessaire...
2\ieme{} ligne : le test terrible de
      \end{document}
3\ieme{} ligne : `ceci est le test des
      quotes'

Et maintenant voici l’ordre réduit \vers qui s’utilise comme \verb et doit permettre de couper une longue chaîne de caractères verbatim. Celle-ci sera coupée par défaut entre les mots (\notthyphenation) mais pourra l’être à l’intérieur des mots si on précise \tthyphe-

nation comme ici : Longue Cha^ıne De Ca-
ractères À Couper Absolument . Les mots

commençant en majuscule ne pourront être coupés que si \uchyph=1, valeur par défaut dans FrenchPro (\allowuchyph) qui est utilisée pour cette partie uniquement.

Test de \fsc (French caps)

Ce paragraphe teste la protection de certaines macro-instructions.

2.59 Other useful macros

French patronymic names are printed in small capitals with the first letter in uppercase. That is done with the \fsc macro. Another macro \lsc is available to print all the word(s) in small capitals, specially usefull for trademark or companies names.

L^{A}TEX is at the current time unable to print a \ref as a footnotemark, the command \refmark is able to do that.

Also, L^{A}TEX doesn’t offer any verbatim style able to hyphenate lines. FrenchPro is able to do this with the environment versatim or the \vers order within a line.

These environments allow to replace the tt quoting (` ') by more realistic ones (` ´ ) with the order \noenglishquote. Of course this environment produce nothing different from the standard verbatim when used in

                                        \english:
                                        1\iere{} ligne : cette ligne est bien trop
                                        2\ieme{} ligne : le test terrible de...
                                        3\ieme{} ligne : `ceci est le test des...

And now this a test of a

long  string  within  a  \vers:

                                        “Longue Cha^ıne De Caractères À Couper A

This string would be hyphenated only if someone said \tthyphenation previously.

16. La note.

2.60 Accents et tabbing

FrenchPro apporte une solution pour pouvoir introduire des lettres accentuées dans un environnement tabbing lorsque le source TEX est en 7bits ou utilise MlTEX^{17}; c’est l’option par défaut \tabbingaccents. L’exemple :

Bidon :  d’huile  A′ = B′′ normal
Caisse :  à outils  rustique

Toile : à matelas confort doit s’imprimer ainsi :

Bidon :  d’huile  A′ = B′′ normal
Caisse :  à outils  rustique

Toile : à matelas confort

Nous l’avions saisi comme suit :

\begin{tabbing}
Les TYPES : \=  Les matieres  \= Les
      genres \kill
Bidon :     \>   d'huile
      \>$A'=B''$\` normal \\
Caisse :    \>   \`%
                   a outils     \>
      rustique \\
Toile :     \>   \a`%
                   a matelas    \>
      confort
\end{tabbing}

2.61 Figurettes

Le style french propose un environnement spécial, appelé figurette, pour placer les figures à l’enfroit exact où ces figures se présentent dans le texte. Cela est particulièrement utile pour des petites figures, domaine où L^{A}TEX n’est pas adapté en standard. Pour réaliser ceci :

essai

Fig. 2.5 – Ceci est une figurette

Nous avons écrit :

  \begin{figurette}
        \center\fbox{essai}
  \caption{Ceci est une figurette}
                 \label{figurette}
  \end{figurette}

2.62 Diacritics & tabbing

There is no way in a L^{A}TEX tabbing to put diacritics on letters as we use them usually. Here is how is printed the tabbing you can find in the french part:

Bidon :  d’huile  A′ = B′′ normal
Caisse :  a outils  rustique
Toile :  a matelas  confort

and that would normally be printed as follows:

Bidon :  d’huile  A′ = B′′ normal
Caisse :  à outils  rustique

Toile : à matelas confort

essai

Figure 2.6: Originally a figurette

2.63 Little figures

FrenchPro offers a special environment called figurette which allows to put little figures EXACTLY where they appear in the text. This is a lack in the present versions of L^{A}TEX. In English the environment figurette is replaced by an environment figure[h]; look at figure 2.6 we tried to put here without success and we typed like this:

                                          \begin{figurette}
                                                \center\fbox{essai}
                                          \caption{Originally a figurette}
                                                \label{engfig}
                                          \end{figurette}

17. Cette option est aussi utile désormais en T1 car les lettres accentuées sont traduites avec FrenchPro, de façon interne, en 7-bits à la TEX.

2.64 Composition en drapeau

À gauche on trouve une composition justifiée standard L^{A}TEX. Dessous, une composition avec l’environnement drapeaufg proposé par l’extension FrenchPro, il s’agit d’une composition en drapeau, au fer à gauche. À droite, il s’agit aussi d’une composition en drapeau, au fer à gauche mais cette fois-ci avec l’environnement drapeaufgIN, sans coupure de mots, comme cela est recommandé par l’imprimerie nationale.

2.64.1 Tests ordinaires Texte justifié de référence

Par ailleurs, les lignes n’occupant pas toute la justification (titres ou légendes le plus souvent) peuvent être centrées ou se présenter alignées verticalement par la gauche sur la marge de gauche de la page, ou verticalement par la droite sur la marge de droite de la page. On dira alors qu’elles sont composées en drapeau, au fer à gauche ou en drapeau, au fer à droite. Dans ce type de composition, les coupures de mots sont proscrites et les rejets à la ligne devront obéir à une certaine logique souvent dictée par le sens. Ainsi on ne séparera pas l’article du substantif, le pronom personnel sujet de son verbe, l’adjectif numéral du nom auquel il se rapporte, etc. (règles Imprimerie Nationale, p 153)

Drapeau, au fer à gauche

Par ailleurs, les lignes n’occupant pas toute la justification (titres ou légendes le plus souvent) peuvent être centrées ou se présenter alignées verticalement par la gauche sur la marge de gauche de la page, ou verticalement par la droite sur la marge de droite de la page. On dira alors qu’elles sont composées en drapeau, au fer à gauche ou en drapeau, au fer à droite. Dans ce type de composition, les coupures de mots sont proscrites et les rejets à la ligne devront obéir à une certaine logique souvent dictée par le sens. Ainsi on ne séparera pas l’article du substantif, le pronom personnel sujet de son verbe, l’adjectif numéral du nom auquel il se rapporte, etc. (règles Imprimerie Nationale, p 153)

Dans ce dernier cas, des débordements dans la marge droite sont possibles ; ils sont à traiter au cas par cas par de simples coupures de lignes placées aux endroits recommandés par l’imprimerie nationale (selon texte encadré). Le dernier texte est ainsi corrigé.

Drapeau fg , selon IN

Par ailleurs, les lignes n’occupant pas toute la justification (titres ou légendes le plus souvent) peuvent être centrées ou se présenter alignées verticalement par la gauche sur la marge de gauche de la page, ou verticalement par la droite sur la marge de droite de la page. On dira alors qu’elles sont composées en drapeau, au fer à gauche ou en drapeau, au fer à droite. Dans ce type de composition, les coupures de mots sont proscrites et les rejets à la ligne devront obéir à une certaine logique souvent dictée par le sens. Ainsi on ne séparera pas l’article du substantif, le pronom personnel sujet de son verbe, l’adjectif numéral du nom auquel il se rapporte, etc. (règles Imprimerie Nationale, p 153)

Drapeau fg IN , corrigé

Par ailleurs, les lignes n’occupant pas toute la justification (titres ou légendes le plus souvent) peuvent être centrées ou se présenter alignées verticalement par la gauche sur la marge de gauche de la page, ou verticalement par la droite sur la marge de droite de la page. On dira alors qu’elles sont composées en drapeau, au fer à gauche ou en drapeau, au fer à droite. Dans ce type de composition, les coupures de mots sont proscrites et les rejets à la ligne devront obéir à une certaine logique souvent dictée par le sens. Ainsi on ne séparera pas l’article du substantif, le pronom personnel sujet de son verbe, l’adjectif numéral du nom auquel il se rapporte, etc. (règles Imprimerie Nationale, p 153)

2.64.2 Tests en drapeau fg , aux limites

Voici deux tests aux limites de la composition en drapeau, au fer à gauche, sur une colonne étroite (2cm) tout d’abord avec l’environnement drapeaufg et ensuite avec la recommandation de l’imprimerie nationale appliquée à FrenchPro (ou interprètée par l’environnement drapeaufgIN).

Les coefficients de laideur (badness) acceptés sont élevés, c’est la raison pour laquelle aucun message d’underfull hbox (tout comme celui d’overfull) n’est émis dans les deux cas ci-dessous.

instit instits institut instituts institution institutions institutionnel institutionnels institutionnelle institutionnelles institutionnellement constitutionnellement inconstitutionnellement instit instits institut instituts institution institutions institutionnel institutionnels institutionnelle institutionnelles institutionnellement constitutionnellement inconstitutionnellement

2.64.3 Tests en drapeau fd , aux limites

Nous effectuons ici les mêmes test mais avec les environnements drapeaufd (fer à droite) et drapeaufdIN (selon imprimerie nationale). En fait, l’environnement drapeaufd est tout simplement un raggedleft.

instit instits institut instituts institution institutions institution-

nel institution-

nels institution-

nelle institution-

nelles institutionnellement constitutionnellement

inconstitutionnellement instit instits institut instituts institution institutions institutionnel institutionnels institutionnelle institutionnelles institutionnellement constitutionnellement inconstitutionnellement

2.64.4 Test fd classique

Par ailleurs, les lignes n’occupant pas toute la

justification (titres ou légendes

le plus souvent) peuvent être centrées ou se présenter alignées verticalement par la gauche sur la marge de gauche de la page, ou verticalement par la droite

sur la marge de droite de la page. On dira alors qu’elles sont composées en drapeau, au fer à gauche ou en drapeau, au fer à

droite. Dans ce type de composition, les coupures de

mots sont proscrites et les rejets à la ligne devront obéir à une certaine logique souvent dictée

par le sens. Ainsi on ne séparera pas l’article du

substantif, le pronom personnel sujet de son verbe, l’adjectif numéral du nom auquel il se

rapporte, etc. (règles Imprimerie Nationale, p 153)

2.64.5 Test fd IN

Par ailleurs, les lignes n’occupant pas toute la

justification (titres ou légendes le plus souvent) peuvent être centrées ou se présenter alignées verticalement par la gauche sur la marge de gauche de la page, ou verticalement par la droite sur la marge de droite de la page. On dira alors qu’elles sont composées en drapeau, au fer à gauche ou en drapeau, au fer à

droite. Dans ce type de composition, les coupures de mots sont proscrites et les rejets à la ligne devront obéir à une certaine logique souvent dictée

par le sens. Ainsi on ne séparera pas l’article du

substantif, le pronom personnel sujet de son verbe, l’adjectif numéral du nom auquel il se

rapporte, etc. (règles Imprimerie Nationale, p 153)

Quelque soit le corps de la police (dans les 2.64. COMPOSITION EN DRAPEAU 35

L’œil aiguisé sera troublé car les deux colonnes ne sont pas alignées horizontalement ; cela est dû à la différence de matériel à composer, au total, dans chacune des deux colonnes.

limites classiques de L^{A}TEX), avec cette largeur de colonne, on n’obtient pas de différence de mise en page entre les deux environnements.

Les règles de l’imprimerie nationale sont donc plus largement appliquées dans ce cas.

Page intentionnellement laissée blanche 2.65 Lettrines

Voici le test des lettrines proposées en mode semi-automatique avec FrenchPro :

\flettrine{Quoi ?}

Q

uoi? Paris sera toujours Paris. Ceci est une lettrine obtenue grâce au collègue allemand E. Schalück et aux diffé-

rents codes qu’il m’a donnés.

Ici démarre une lettrine dans une citation.

P

aris sera toujours Paris. Ceci est une

lettrine obtenue grâce au collègue allemand E. Schalück et aux différents codes qu’il m’a donnés.

P aris sera toujours Paris. Ceci est une

lettrine obtenue grâce au collègue al-

lemand E. Schalück et aux différents codes qu’il m’a donnés.

et la citation se termine ici.

\font\lettrinefont=cmr17 scaled
\magstep5\lettrine[`` {Paris} '']

“Paris ” sera toujours Paris. Ceci est une lettrine obtenue grâce au collègue allemand E. Schalück et aux

différents codes qu’il m’a donnés.

\lettrine[<< {Paris} >>]

P

aris sera toujours Paris. Ceci est une

lettrine obtenue grâce au collègue allemand E. Schalück et aux différents codes qu’il m’a donnés.

\flettrine[<< {Paris} ]

P aris sera toujours Paris. Ceci est une

lettrine obtenue grâce au collègue al-

lemand E. Schalück et aux différents codes qu’il m’a donnés.

\font\lettrinefont=cmti12 scaled \mag-

step4\lettrine % vérification d’italique.

B

lalbla je blablate, tu blablates, ils blablatent, b... (ceci est l’exemple même de

ce qu’il ne faut pas faire car ainsi le mot n’est pas mis en petites capitales). Ceci avait pour but de tester une police italique.

’absurdité de cette lettrine...

2.66 Illuminated letters

Look at the French part of this document because, in English, these macros have no effect:

                    \flettrine{Quoi ?}

Quoi ? Paris sera toujours Paris. Ceci est une lettrine obtenue grâce au collègue allemand E. Schalück et aux différents codes qu’il m’a donnés.

« Ici démarre une lettrine dans une citation.

Paris sera toujours Paris. Ceci est une lettrine obtenue grâce au collègue allemand E. Schalück et aux différents codes qu’il m’a donnés.

Paris sera toujours Paris. Ceci est une lettrine obtenue grâce au collègue allemand E. Schalück et aux différents codes qu’il m’a donnés.

et la citation se termine ici. »

       \font\lettrinefont=cmr17 scaled
   \magstep5\lettrine[`` {Paris} '']

“ Paris ” sera toujours Paris. Ceci est une lettrine obtenue grâce au collègue allemand E. Schalück et aux différents codes qu’il m’a donnés.

              \lettrine[« {Paris} »]

« Paris » sera toujours Paris. Ceci est une lettrine obtenue grâce au collègue allemand E. Schalück et aux différents codes qu’il m’a donnés.

               \flettrine[« {Paris} ]

« Paris sera toujours Paris. Ceci est une lettrine obtenue grâce au collègue allemand E. Schalück et aux différents codes qu’il m’a donnés. »

\font\lettrinefont=cmti12 scaled
 \magstep4\lettrine

B lalbla je blablate, tu blablates, ils blablatent, b... (ceci est l’exemple même de ce qu’il ne faut pas faire car ainsi le mot n’est pas mis en petites capitales). Ceci avait pour but de tester une police italique.

L’absurdité de cette lettrine...

2.67 Lettrines automatiques ou non

T

HIS IS A TEST (a non-automatic one) is a piece of text and some more and some more and some more and some more and some more and some more and some more and some

more and some more and some more and some more and some more and some more and some more.

T

HIS IS A TEST (a non-automatic one) is a piece of text and some more and some more and some more and some more and some more and some more and some more and

some more and some more and some more and some more and some more and some more and some more.

T

HIS IS A TEST (a default automatic one) is a piece of text and some more and some more and some more and some more and some more and some more and some more

and some more and some more and some more and some more and some more and some more and some more.

T

HIS IS A TEST (a default automatic one) is a piece of text and some more and some more and some more and some more and some more and some more and some more

and some more and some more and some more and some more and some more and some more and some more.

T

HIS IS A TEST (a cmr17 automatic one) is a piece of text and some more and some more and some more and some more and some more and some more and some more and

some more and some more and some more and some more and some more and some more and some more.

T

HIS IS A TEST (a cmr17 automatic one) is a piece of text and some more and some more and some more and some more and some more and some more and some more

and some more and some more and some more and some more and some more and some more and some more.

Q

ue vaut ce test? (en automatique) is a piece of text and some more and some more and some more and some more and some more and some more and some more and some more and some more and some more and some more and some more and some more

and some more.

T

HIS IS A TEST (a non-automatic one) is a piece of text and some more and some more and some more and some more and some more and some more and some more and some

more and some more and some more and some more and some more and some more and some more.

Q

ue vaut ce test? (non-automatique) is a piece of text and some more and some more and some more and some more and some more and some more and some more and some more and some more and some more and some more and some more and some more and

some more.

2.68 Énumérations

L’espacement des énumérations françaises est profondément modifié avec FrenchPro, pour s’en convaincre voir le test des listes page 27 ou l’environnement order ci-après.

2.69 L’environnement order

Un environnement spécifique est proposé, il s’agit de l’environnement order pour L^{A}TEX dont voici un petit exemple :

1^{o} Bien regarder ;

2^{o} l’espacement de chaque élément est spécial ; 3^{o} l’espacement vertical est aussi différent. 4^{o} A-D-O-P-T-E-Z L-E !

Ce prototype correspond bien aux énumérations françaises (je ne parle pas uniquement des marqueurs – primo, secundo, etc. – mais aussi de la gestion des espaces). En voici un autre exemple concret :

Les guillemets entrent aussi en ligne de compte : Je citerai 3 cas très importants : 1^{o} le premier cas ; 2^{o} le second ; 3^{o} le dernier. qui sont [...]

À noter que ce mécanisme de rajout des guillemets en début de chaque élément de liste marche aussi avec un environnement comme itemize.

2.70 Tests aux limites des guillemets anglais

Vérifions qu’il est possible d’activer temporairement quelques caractères sans perturber le traitement. Exemple :

{\catcode`\'=\active\catcode`\'=\active
 `` Test guillemets anglais ''
}

“ Test guillemets anglais ’’

Un cas bien spécial avait été rencontré avec l’extension amstex qui utilisait une référence avec des mathématiques dans une autre référence, ce qui entrainait une boucle infinie avec FrenchPro. Voici le test en question : 1 ′ = 1 ′

Autre test aux limites?

2.71. AUTRES TESTS 39

2.71 Autres tests

Nous sommes ici en une colonne. Voici un test d’encadré contenant le mode centering :

Information : si vous voulez me joindre, mon tél. : 01 69 35 85 40. Je n’y suis qu’aux horaires de bureau.

Bon?^{18} Tab. 2.10 – Dactylographie et typographie comparées

dactylographie  typographie

use \dots or \ldots use . . . or . . .
 utilisez...  utilisez...
 semi-colon;  semi-colon;
point-virgule ; point-virgule ;
     My god!  My god!
  Mon dieu !  Mon Dieu !
    Why not?  Why not?
Pourquoi pas ? Pourquoi pas?
   ``I say''  “I say”
<< Je dis >>  Je dis
He said: Yes  He said: Yes
Il dit : non  Il dit : non
$1\,234,567$  1 234,567
  $f(x,\,y)$  f(x, y)

18. L’objet de cette note de bas de page est de vérifier l’espacement des inférieurs et supérieurs, 1^{o} en \tt :

XXXX ===> <=== YYYY et 2^{o} en verbatim : french V4 < french V5 > frenchOLD.

2.71.1 Test des guillemets dans un \edef

Les guillemets peuvent être appelés dans une définition de macro telle que \edef mais comme les guillemets ne sont pas expansibles entièrement il a donc fallu arriver à réaliser une définition acceptable.

Ainsi \edef\testedef{<< essai >>} donnera la curieuse définition suivante :

    macro:->\protect \relax \let \relax \relax \relax <<\relax  essai \protect
\relax \let \relax \relax \relax >>\relax {} ;

elle reste complètement expansible (dans certaines conditions) ou pas du tout (comme ici appelée en tt on obtiendra le résultat suivant : << essai >>).

2.71.2 < et > redéfinis

Mes utilisateurs sont terribles ! Ils veulent le beurre, l’argent du beurre et aussi la fermière... S’ils codent \def\truc<#1|#2>{/#1 OU #2/} ils veulent pouvoir obtenir /Essai OU Erreur/ en saisissant \truc<Essai|Erreur>. Faisons l’essai réel : /Essai OU Erreur/.

Encore plus fort : nous voulons avoir une notation de Backus-Naur c’est-à-dire des \rangle et \langle. Voici la définition que nous avons entrée avant le \begin{document} :

{\catcode`\<=\active\catcode`\>=\active%
\global\def<{\left\langle}\global\def>{\right\rangle}
}

Pour tester l’efficacité de ces macros il suffit alors de faire par exemple :

<< $<assignement>$ >>

à condition que l’option \frenchguillemets soit active (en maths).

Essayons cela : ⟨assignement⟩ .

2.71.3 \special

L’inclusion d’une commande \special est ici testée :

\special{ps:%%%  Texte bidon {`<<manuel:C;!?>>'}}

2.71.4 \refmark dans un tableau

Où l’on reparle encore de \refmark...

La note 19 est référencée depuis le tableau ci-dessous, tout comme les notes du tableau lui-même.

Lettre Utilisation
h  petit blabla gentil et anodin^{19}
l  ici reblabla assez moyen^{19}^{,} ^{a}
L  autre grand grand grand blabla^{a}

Tab. 2.11 – Le titre du tableau.

a La note du tableau refmark .

En dehors du tableau on peut faire appel^{19} à une note qui est, par contre, référencée dans le tableau. Tout cela est réalisé grâce à l’ordre \refmark introduit par l’extension FrenchPro.

19. La note de page.

2.71.5 \nombre en argument

Voici un test simple permettant de valider \nombre lorsqu’il est en argument d’une macroinstruction :

\noindent
1\,234 un nombre simple !\\
$*$\\
\nombre{1 234} un nombre simple !\\
\nombre{1 234,5} avec une décimale.\\
\texttt{\nombre{1 234,56} avec fonte tt.}\\
\emph{\nombre{1 234,567} en mode emphasé.}\\
\nombre{1 234,567 8} avec encore une décimale.

Il faut noter que l’ordre \nombre est toujours composé en mode mathématique ce qui force l’utilisation des fontes mathématiques. Tout changement de fonte doit donc être précisé de façon ad hoc. Par ailleurs, la composition n’est garantie que si l’option \nofiles n’a pas été indiquée en début de document. Voici ce que ce test donne : 1 234 un nombre simple ! ∗ 1 234 un nombre simple ! 1 234,5 avec une décimale.

1 234,56 avec fonte tt.

1 234,567 en mode emphasé. 1 234,567 8 avec encore une décimale.

2.71.6 \label en mode math

Il s’agit ici de tester la commande \label dans un environnement equation :

Vérifions le numéro de l'équation \ref{labelequation} ci-dessous :
\begin{equation}\label{labelequation}
V_{Lm}=\frac{L}{t_p}
\end{equation}

Voici le résultat du test :

Vérifions le numéro de l’équation 2.5 ci-dessous :

V_{Lm} = \frac{L}{t_{p}}  (2.5)

2.71.7 Bibliographie

Voyons maintenant la bibliographie. Dans [1] on trouvera... Par contre [Knuth 99, pp.1–3, X & consorts] est beaucoup plus fourni en exemples et commentaires... Mais dans [3, p. 25 § 13 et seq.] toutes ces informations sont plus détaillées.

Ce qui suit n’est pas un exemple de belle bibliographie, juste une vérification de bon fonctionnement.

42 CHAPITRE 2. LA TORTURE

Bibliographie

Bibliographie dans le document

[Knuth 99] Le TEXbook ou la bible des gourous TEX [1] B. Gaulle, Le résultat d’une dure journée de travail !

[2] R. Keryell, Le gentil normalien qui m’a beaucoup aidé grâce à sa thèse...

[3] B. Gaulle, Notice d’utilisation du style french, 1991-1999.

[4] B. Gaulle, Notice d’utilisation de l’extension FrenchPro pour L^{A}TEX, 2000-20xx.

Bibliographie en dehors du document

Avec certaines extensions de bibliographie il peut s’avérer utile de protéger les caractères actifs à l’intérieur même de la base de données bibliographique.

44 BIBLIOGRAPHIE

Table des figures

2.1 essai ; 2 cm ! pourquoi pas?

(cf. aussi le tableau 2.10) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 2.2 essai ; 2 cm! Why not?

(cf. also the table 2.10) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 2.3 le titre de la figure avec label . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 2.4 title with a label . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 2.5 Ceci est une figurette . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 2.6 Originally a figurette . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 46 TABLE DES FIGURES

Liste des tableaux

2.1 ‘ essai ; 2 cm ! pourquoi pas? ’

(cf. aussi le tableau 2.10) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 2.2 ‘ essai ; 2 cm! Why not? ’

(cf. also the table 2.10) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 2.3 ‘ essai ; 2 cm ! pourquoi pas? ’ (cf. aussi le tableau 2.10) . . . . . . . . . . . 25 2.4 le titre du tableau avec label . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 2.5 title with a label . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 2.6 Essai de footnote dans un caption de tableau . . . . . . . . . . . . . . . . . . . 26

2.7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

2.8 footnote try within a table’s caption . . . . . . . . . . . . . . . . . . . . . . . . 26

2.9 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

2.10 Dactylographie et typographie comparées . . . . . . . . . . . . . . . . . . . . . 39 2.11 Le titre du tableau. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 48 LISTE DES TABLEAUX

Glossaires

Glossaire des mots techniques

– : ; style? !

– Façon cordon bleu

– magnification

– caractères spéciaux :

Pour imprimer ceci  Saisir cela

        @  \at
        |           \texttt{\vert}
        ˜ \tilde
        \        \texttt{\backslash}
        ˆ \chap
        ˚ \degre
        o  \degres
       1^{er} étage  1\ier{} étage
        (2^{e})  (2\ieme\!)
        1^{o}  \primo
       2˚ )  \secundo)

On notera que le caractère \degre n’est pas le signe typographique usuellement utilisé pour exprimer des degrés mais que \degres est plus conforme à la tradition. On remarque bien les différences entre \primo et \secundo) (la forme parenthésée n’est pas valable en belle typographie française). 1^{o} ... 2^{o} ... 3^{o} ... 4^{o} ... 1˚ ) ... 2˚ ) ... 3˚ ) ... 4˚ ) ...

Glossaire argotique

Le pied

Index

– Symboles –

< (\inferieura) . . . . . . . . . . . . . . . . . . . . . . . . . . 1 : ; depuis la note de bas de page? . . . . . . . 1 : ; style? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1 > (\superieura) . . . . . . . . . . . . . . . . . . . . . . . . . . 1

– F –

french

Le point d’exclamation est un caractère spécial de Makeindex . . . . . . . . . . . . . 1

– M –

Magic di N’Konga (auteur célèbre) . . . . . . . . 1

Seconde partie

Ce qui ne marche pas (bien)...

Chapitre 1

Quelques questions à étudier

Cette partie ne comporte que des anomalies que l’auteur espère résoudre d’ici quelque temps, grâce à votre aide... peut être?

En fait il ne reste vraiment pas grand chose à règler mais ce sont probablement des vieux problèmes sacrément compliqués.

1.1 Le 2 points

Le 2 points a une fâcheuse tendance à rester en bas de page lorsqu’il est suivi d’un verbatim. Il serait souhaitable d’en trouver la raison.

1.2 Les guillemets

Le problème avec quotation page 11. Voir le cas des notes de bas de page ou en marge qui produis(ai ?)ent des désastres avec

\noeveryparguillemets.

1.3 Le cas des extensions mal écrites ...

... ne se résout souvent que par la modification de l’extension en question. Cela a été le cas de nombreuses extensions depuis le début de FrenchPro et j’ai bien peur que cela continue éternellement (et à propos : qui me succèdera?).

Certains cas sont insolubles, par exemple : l’extension here.sty redéfinissait au vol l’ordre L^{A}TEX \table au lieu de modifier l’existant ; cela posait un réel problème à FrenchPro qui se base sur la modification d’une commande \table existante. Heureusement ce style périmé peut être remplacé avantageusement par float.

54 CHAPITRE 1. QUELQUES QUESTIONS À ÉTUDIER

Chapitre 2

Améliorations à envisager

2.1 Index et bibliographie

Deux thèmes qui n’ont que très peu été abordés.

2.2 Abréviations

Il est fâcheux d’avoir à connaître quelles sont les mots abrégeables pour pouvoir demander leur abréviation ; autant les saisir correctement dès le début...

Faut-il arrêter la composition L^{A}TEX quand une abréviation n’est pas trouvée? Faut-il offrir la possibilité de lister toutes les abréviations?

56 CHAPITRE 2. AMÉLIORATIONS À ENVISAGER

Annexe A

Copyright

 1 % This file is the Copyright notice for the _FrenchPro_package of LaTeX, in
 2 % French and in English below. The original files of that _FrenchPro_package
 3 % are available from <http://wwww.frenchpro6.com/french.html>.
 4 % Please read this notice instead.
 5 %
 6 % Copyright GUTenberg-Gaulle 1992-1998, Bernard Gaulle 1999-2007:
 7 % ==============================================================
 8 %    - La distribution de l'extension FrenchPro pour LaTeX est effectuee
 9 %      selon le mode shareware. Apres installation et essai de ces fichiers
10 %      pendant un mois vous devez decider soit de les garder pour en faire
11 %      un usage regulier soit de les detruire. Si vous les conservez il vous
12 %      faut regler vos droits d'utilisation aupres de l'auteur (29 euros
13 %      pour une licence individuelle, voir fichier REGISTER)
14 %    - Vous n'etes AUCUNEMENT autorise a modifier les fichiers marques du
15 %      mot  << Copyright >>.
16 %    - La redistribution gratuite de cette distribution est autorisee
17 %      dans la mesure ou elle est complete et non pre-installee.
18 %      Vous n'etes AUCUNEMENT autorise a faire payer cette distribution ou
19 %      l'utilisation de ses fichiers si ce n'est pour un cout reduit de copie.
20 %      Tous les logiciels revendus par un circuit commercial sont consideres
21 %      en tirer benefice (meme s'il ne s'agit pas d'un grand profit) et donc
22 %      la redistribution est strictement soumise a un accord prealable avec
23 %      l'auteur.
24 %    - Vous n'etes PAS AUTORISE a inclure cette distribution dans un progiciel
25 %      qui reduirait ses possibilites intrinseques ; vous n'avez donc pas
26 %      le droit, par exemple, de ne redistribuer qu'une partie des fichiers
27 %      d'origine.
28 %    - Tous les fichiers de cette distribution sont accessibles gratuitement
29 %      sur le domaine de l'Internet (dont les serveurs CTAN).
30 %    - Aucun virus n'a ete detecte au moment ou ces fichiers furent termines
31 %      et prets a la distribution.
32 %    - Le code informatique est offert ici dans l'espoir qu'il soit utile et
33 %      avec la volonte qu'il soit correct mais aucune garantie ne peut etre
34 %      fournie, de quelque ordre que ce soit. Les utilisateurs l'utilisent
35 %      entierement a leur propre risque. L'auteur n'admettra et n'acceptera
36 %      d'etre lie par un quelconque engagement en cas de manque a gagner,
37 %      direct, indirect, immediat, consecutif ou autre, resultant de son
38 %      utilisation.

39 %    - Vous n'etes PAS AUTORISE a vous substituer a l'autorite de l'auteur
40 %      en appliquant des modifications, meme si de votre point de vue, elles
41 %      corrigent des deficiences.
42 %      Les lois internationales, europeennes (91-255) et francaises (94-361)
43 %      sont applicables.
44 %      L'utilisateur de ce logiciel peut toutefois le personnaliser a volonte
45 %      par differents moyens expliques dans la documentation. L'auteur du
46 %      logiciel n'est toutefois aucunement lie par une modification introduite
47 %      par une personnalisation utilisateur.

48 %

49 % Copyright Gaulle-GUTenberg 1992-1998, B. Gaulle 1999-2007.
50 % =========================================================
51 %    - The distribution of the FrenchFro package for LaTeX is made on
52 %      the shareware mode. After installation and tests of these files
53 %      during one month you have to decide either to keep them for
54 %      further use or to delete them. If you keep them you have to
55 %      pay the usage fees to the author (29 euros for single user licence,
56 %      look at the REGISTER file).
57 %    - You are NOT ALLOWED to change in any way all files marked
58 %      with  "Copyright".
59 %    - Free redistribution of this distribution is authorized but only
60 %      when complete and not pre-installed.
61 %      You are NOT ALLOWED to take money for the distribution or use of
62 %      these files except for a nominal charge for copying etc.
63 %      All softwares sold via commercial distributors are considered to
64 %      make money, even they don't make an important profit, thus the
65 %      redistribution is strictly limited to a previous agreement with
66 %      the author.
67 %    - You are NOT ALLOWED to include these files in a package/software in
68 %      a way that will reduce its capabilities or features; this doesn't allow
69 %      you, for example, to redistribute only few parts of the whole original
70 %      files.
71 %    - All the files included in the distribution are available freely inside
72 %      the Internet domain (and specially on CTAN servers).
73 %    - There was no virus at the time these files were completed for
74 %      distribution.
75 %    - This computer code is offered in hopes that it will be found useful,
76 %      and in the belief that it is correct, but it is offered without any
77 %      warranty of any kind, including warranty of fitness for any purpose.
78 %      Users of this code do so entirely at their own risk. The author neither
79 %      admits nor accepts any liability for any loss, direct, indirect,
80 %      consequential, incidental, or otherwise, resulting from the use of this
81 %      computer code.
82 %    - You are NOT ALLOWED to substitute author's authority by applying
83 %      modifications even if, in your point of view, they correct deficiences.
84 %      International, European (91-255) and French (94-361) laws apply.
85 %      There is still the possibility for the user to customize this
86 %      package at his wishes by various means explained in the documentation.
87 %      The author of the package is not liable for any change introduced
88 %      by any users customization.
89 %.........................................................................V2.5
90 %%
91 %%      checksum        = "27379 93 872 5726"

59

92 %% 93 %..............................................................................

60 ANNEXE A. COPYRIGHT

Annexe B

 Le fichier language.dat

 1 %%% This is language.dat as of September 2006 at (your site)
 2 %%%
 3 %%% This file: is coming from FrenchPro <http://www.frenchpro6.com/french.html>
 4 %%%            is to be used with hycongig.tex version not less than V2.0;
 5 %%%            is babel compatible (since V3.6 of Babel).
 6 %%%            is MikTeX compatible (since MikTeX 2.5)
 7 %%%
 8 %%% This file tells TeX which are the languages and dialects,
 9 %%%                     which are the hyphenation files (patterns),
10 %%%                     which are the hyphenation exception files,
11 %%%                 and which encoding is to be used for other hyphenation char.
12 %%%                     (For syntax look at the bottom.)
13 %%%
14 %%% CHECK IF THIS IS THE ONLY language.dat FILE OF YOUR SYSTEM, otherwise
15 %%% remove (or rename) all unused, and keep just (this) one.
16 %%%
17 %%%===========================================================================%
18 %%% Name    |  patterns    | exceptions     | encoding % comments             %
19 %%%===========================================================================%
20 usenglish     ushyph.tex % this is the original default TeX language...
21  % Don. Knuth's hyphen.tex file can be used instead
22  =english     enhyph.tex  enhyphex.tex    % default language is "english"
23  french    frhyph1.tex  frhyphex.tex    % ici on parle francais
24  =acadien %                              %
25  =canadien %                              %
26  =francais %                              %
27  =patois  %                              % et ses patois...
28 %    german    dehypht.tex % traditional german
29 %   ngerman    dehyphn.tex % new german ortography
30 %   russian   ruhyphen.tex - - % russian (using defaultly t2 encoding)
31  dumylang  zerohyph.tex % for testing a new language.
32 nohyphenation zerohyph.tex % a language with no patterns at all.
33 %%%============================================================================%
34 %%% Each of the three parts (language_name, patterns_file and exceptions_file)
35 %%% must be separated by a blank space. You can omit any of the file names if
36 %%% your language has not this component.
37 %%%
38 %%% First language will have language number 0 when used by hyconfig.tex

39 %%% at an INITeX time or used by french.sty version > 3.
40 %%%                      (once INITeX is done don't change the language order!)
41 %%%
42 %%% An "=" in front of the language name means that this language must use the
43 %%% same language number that the previous language (and the same patterns or
44 %%% exceptions files). So you can use the equal sign to define dialects.
45 %%% If this is the first language then the next language will be numbered 0 too;
46 %%% the language name is the only thing used here; patterns, exceptions file
47 %%% and encoding are never taken in account in this special dialect case.
48 %%%
49 %%% Font encoding (last field) is defaultly "t1". That field gives you the
50 %%% possibility to use the appropriate hyphen char when you switch to that
51 %%% font encoding. If you don't want default value then set it to "-".
52 %%%
53 %%% Any missing field can be replaced by a "-" (except language name and
54 %%%                                             patterns file)
55 %%%
56 %%% At INITeX time, the basic files to congigurate are:
57 %%% - language.dat, (that file you are reading!),
58 %%% - plain.tex for plain TeX format, which calls "\input hyphen".
59 %%%   In order to use "language.dat" for language definition you have to replace
60 %%%   "\input hyphen" by "\input hyphen.cfg". Then do as for LaTeX:
61 %%% - hyphen.cfg for LaTeX format which will load the master hyphenation code
62 %%%   hyconfig.tex that does the job of loading the appropriate files.
63 %%%
64 %%% Notice that "enhyph.tex" and "enhyphex.tex" are often derivates of the
65 %%% original "hyphen.tex" (in fact only a split between patterns and exceptions)
66 %%% But you must know that english (ie british) patterns exist. See archives.
67 %%%
68 %%% Notice also that few TeX engines may require non-empty hyphenation
69 %%% "exceptions file" fields. In such cases provide null.tex.
70 %%%============================================================================%

Annexe C

 Le fichier frabbrev.tex

 1 % frabbrev.tex file (French typographic abbreviations)
 2 % should always be used in 8bit format (generated from
 3 % fxabbrev.tex which is full ASCII 7bit)
 4 %
 5 %                                 Copyright Bernard Gaulle as in french_doc.pdf
 6 %
 7 %                                                            B. Gaulle 01/16/92
 8 %
 9 %     Don't change this to a 7bits coding except if you are using 7bits input

10 %

11 % History of mods:
12 % ===============
13 %    - Change \^i into ^ı_--bg 01/16/92
14 %    - Added shorten "cad" (remark coming from Jacques Andre)     --bg 02/07/92
15 %    - paragraph sign (\S) followed by a tilde                    --bg 05/15/92
16 %    - recoded to 8bits                                           --bg 08/24/92
17 %    - add second, seconds, premiers, premières, troisièmes...
18 %                              numéros, Numéros  and pages.
19 %                                                                 --bg 01/12/93
20 %    - strings containing a space must be within a group.         --bg 98/05/15
21 %    - THE FIRST LETTER IS NO MORE TESTED except if the string is
22 %      within braces. Thus, any string beginning whith an uppercase
23 %      letter should be enclosed within braces.                 --bg 1999/11/08
24 %    - f8abbrev.tex and frabbrev.850 definitely removed.
25 %      f7abbrev.tex rename fxabbrev.tex                         --bg 2000/06/14
26 %    - few adds coming from Yves Perrousseaux' book on typo.    --bg 2001/08/03
27 %    - corrections for second(s) and seconde(s).                --bg 2001/09/20
28 %    - * facility added for plurals ==> 6 changes.
29 %    - legal units added and few other names.
30 %      HAPPY 10 YEARS ANNIVERSARY!                              --bg 2001/01/21
31 %    - abbrev. from Louis Guéry from CFPJ.                    --bg 2002/02/21
32 %%
33 %%      checksum        = "20285 297 1013 10463"
34 %%

35

36 % Checked name      Replacement
37 % ============      ===========

39 % Notice that when the checked name is inside braces all that name
40 % should be equal to "name" otherwise the first letter is not checked.
41 % If checked name begins with "*" then "_name_" and "_name_s" will
42 % be checked, the replacement name is the same in the two cases.

43 %

44 % NB: All macros have to be not expanded.

45

46 premier             1\noexpand\ier%
47 premiers            1\noexpand\iers%
48 première            1\noexpand\iere%
49 premières           1\noexpand\ieres%
50 deuxième            2\noexpand\ieme%
51 deuxièmes           2\noexpand\iemes%
52 second              2\noexpand\fup{d}%
53 seconds             2\noexpand\fup{ds}%
54 seconde             2\noexpand\fup{de}%
55 secondes            2\noexpand\fup{des}%
56 troisième           3\noexpand\ieme%
57 troisièmes          3\noexpand\iemes%
58 quatrième           4\noexpand\ieme%
59 quatrièmes          4\noexpand\iemes%

60

61 primo               \noexpand\quando{1}%
62 secundo             \noexpand\quando{2}%
63 tertio              \noexpand\quando{3}%
64 quarto              \noexpand\quando{4}%
65 quinto              \noexpand\quando{5}%
66 sexto               \noexpand\quando{6}%
67 septuno             \noexpand\quando{7}%
68 octavo              \noexpand\quando{8}%
69 nono                \noexpand\quando{9}%
70 decimo              \noexpand\quando{10}%

71

72 {Numéro}            \noexpand\Numero%
73 {Numéros}           \noexpand\Numeros%
74 numéro              \noexpand\numero%
75 numéros             \noexpand\numeros%

76

77 monsieur            M.%
78 messieurs           MM.%
79 mademoiselle        M\noexpand\fup{lle}%
80 mesdemoiselles      M\noexpand\fup{lles}%
81 madame              M\noexpand\fup{me}%
82 mesdames            M\noexpand\fup{mes}%
83 ma^ıtre              M\noexpand\fup{e}%
84 ma^ıtres             M\noexpand\fup{es}%

85

86 {Compagnie}         c\noexpand\fup{ie}%
87 canton              C\noexpand\fup{on}%
88 docteur             D\noexpand\fup{r}%
89 folio               f\noexpand\fup{o}%
90 folios              f\noexpand\fup{os}%
91 monseigneur         M\noexpand\fup{gr}%

 92 paragraphe          \noexpand\S~% doit ^etre suivi d'un numéro.
 93 recto               r\noexpand\fup{o}%
 94 verso               v\noexpand\fup{o}%

95

 96 {Académie}          Acad.%
 97 adjectif            adj.%
 98 {Administration}    Admin.%
 99 ancien              anc.%
100 annexe              ann.% from LG 2002/02/21
101 {Antiquité}         Antiq.%
102 appendice           append.%
103 après               apr.%
104 archives            arch.%
105 archéologie         archéol.%
106 arithmétique        arithm.%
107 arrondissement      arr.%
108 article             art.%
109 astronomie          astron.%
110 avant               av.%
111 avenue              av.% from LG 2002/02/21
112 bibliographie       bibliogr.%
113 bibliothèque    bibl.% from LG 2002/02/21
114 biologie            biol.%
115 botanique           bot.%
116 boulevard           bd%
117 bulletin            bull.%
118 cad                 \noexpand\hbox{c.-à-d.}%
119 chapitre            chap.%
120 chef-lieu           ch.-l.%
121 chronologie         chronol.%
122 circulaire          circ.%
123 circonscription     circonscr.%
124 {Code civil}        C.civ.%
125 {Code pénal}        C.pén.%
126 *collaborateur      coll.%
127 collection          coll.%
128 colonne             col.% from LG 2002/02/21
129 commandeur          C.% from LG 2002/02/21
130 département         dép.%
131 dictionnaire        dict.%
132 document            doc.%
133 {Est}               E%
134 *éditeur            éd.% * from LG 2002/02/21
135 *édition            éd.% * from LG 2002/02/21
136 environ             env.%
137 épitre              ép.%
138 épilogue            épil.%
139 établissements      Éts%
140 étymologie          étym.%
141 exemple             ex.%
142 expéditeur          exp.% from LG 2002/02/21
143 fascicule           fasc.%
144 faubourg            fg%

145 féminin             fém.%
146 feuillet            f.%
147 figure              fig.%
148 Frère               F.% from LG 2002/02/21
149 géographie          géogr.%
150 géologie            géol.%
151 géométrie           géom.%
152 graphique           graph.%
153 gravure             grav.%
154 habitants           hab.%
155 hauteur             haut.%
156 iconographie        iconogr.%
157 *illustrations      illustr.% 21/01/2002
158 inférieur           inf.%
159 introduction        introd.%
160 invariable          invar.%
161 italique            ital.%
162 juridique           jur.%
163 jurisprudence       jur.%
164 *ligne              l.% 21/01/2002
165 largeur             larg.%
166 latitude            lat.%
167 librairie           libr.%
168 livre               liv.%
169 locution            loc.%
170 longitude           long.%
171 longueur            long.%
172 manuscrit           ms.%
173 manuscrits          mss.%
174 masculin            masc.%
175 mathématiques       math.%
176 maximum             max.% from LG 2002/02/21
177 mécanique           mécan.%
178 mémoire             mém.%
179 musique             mus.%
180 mythologie          myth.%
181 {Nord}              N%
182 nouveau             nouv.%
183 nouvelle            nouv.%
184 numismatique        numism.%
185 officier            O.% from LG 2002/02/21
186 {Ouest}             O% from LG 2002/02/21
187 ouvrage             ouvr.%
188 *page               p.% 21/01/2002
189 partie              part.%
190 Père                P.% from LG 2002/02/21
191 photographie        phot.%
192 physique            phys.%
193 *planche            pl.% 21/01/2002
194 relié             rel.% from LG 2002/02/21
195 reliure             rel.%
196 rédaction         réd.
197 route               rte% from LG 2002/02/21

198 {Sud}               S.%
199 science             sc.%
200 scène               sc.%
201 section             sect.%
202 {Saint}             St%
203 {Saints}            Sts%
204 {Sainte}            Ste%
205 {Saintes}           Stes%
206 section             sect.% from LG 2002/02/21
207 siècle             s.% from LG 2002/02/21
208 {société}           sté% 21/01/2002
209 {Société}           Sté%  Yves Perrousseaux 2001/08/03
210 substantif          subst.%
211 *suivant            suiv.% 21/01/2002
212 *suivante           suiv.% 21/01/2002
213 supèrieur           sup.% from LG 2002/02/21
214 supplément          suppl.%
215 téléphone           tél.% Yves Perrousseaux 2001/08/03
216 tome                t.% from LG 2002/02/21
217 traducteur          trad.%
218 traduction          trad.%
219 variante            var% from LG 2002/02/21
220 vers                v.% from LG 2002/02/21
221 voir                V% from LG 2002/02/21
222 volume              vol.%

223

224 % Unités légales :

225

226 *ampère             A%
227 *are                a%
228 *bel                B% from LG 2002/02/21
229 *candela            cd% from LG 2002/02/21
230 centi               c% from LG 2002/02/21
231 *centiare           ca%
232 *centigramme        cg%
233 *centilitre         cl%
234 *centimètre         cm%
235 déca                da% from LG 2002/02/21
236 *décalitre          dal%
237 dècamètre           dam%
238 déci                d% from LG 2002/02/21
239 décibel             dB%
240 décigramme             dg% from LG 2002/02/21
241 décilitre             dl% from LG 2002/02/21
242 *franc              F%
243 giga                G% from LG 2002/02/21
244 *grade              gr%
245 *gramme             g%
246 *hectare            ha%
247 hect                h% from LG 2002/02/21
248 *hectogramme        hg%
249 *hectolitre         hl%
250 *hectomètre         hm%

251 *hertz              Hz% from LG 2002/02/21
252 *heure              h%
253 *jour               j%
254 *kelvin             K% from LG 2002/02/21
255 kilo                k% from LG 2002/02/21
256 *kilogramme         kg%
257 *kilohertz          kHz% from LG 2002/02/21
258 *kilomètre          km%
259 *kilovoltampère        kVA% from LG 2002/02/21
260 *kilowatt           kW%
261 kilowatt-heure      kWh%
262 kilowatts-heure     kWh%
263 *litre              l%
264 lux                 lx% from LG 2002/02/21
265 méga              M% from LG 2002/02/21
266 *mégahertz          MHz% from LG 2002/02/21
267 *mètre              m%
268 % micro est a introduire qd on aura \mu en romain droit.
269 milli               m% from LG 2002/02/21
270 *millibar           mbar%
271 *milligramme        mg% from LG 2002/02/21
272 *millilitre         ml%
273 *millimètre         mm%
274 *milliseconde        ms% from LG 2002/02/21
275 *minute             min%
276 *mole               mol% from LG 2002/02/21
277 nano                n% from LG 2002/02/21
278 *nanoseconde        nc% from LG 2002/02/21
279 *newton             N% from LG 2002/02/21
280 *pascal             Pa% from LG 2002/02/21
281 pico                p% from LG 2002/02/21
282 *picoseconde        ps% from LG 2002/02/21
283 quintal             q% from LG 2002/02/21
284 quintaux            q% from LG 2002/02/21
285 *radian             rad% from LG 2002/02/21
286 *seconde            s%
287 *stère              st%
288 téra              T% from LG 2002/02/21
289 *thermie            th% from LG 2002/02/21
290 *tonne              t%
291 *volt               V%
292 *watt               W%
293 *wattheure          Wh% from LG 2002/02/21

294

295 % Excerpt from ``Lexique des règles typographiques en usage a l'Imprimerie
296 %                nationale'', Abréviations, p7-11 and few additions.
297 % plus other usual (referenced) names.

Annexe D

 Le fichier french.cmd

 1 % This is the list of all french macros introduced/modified by the french style
 2 %                                 Copyright Bernard Gaulle as in french_doc.pdf
 3 %
 4 % to be used only for testing/debugging purposes.
 5 %
 6 % All pseudo standard titles cs (like \slidename) are omitted.
 7 % Just specific french macros are there.
 8 %                                                              rev. 2005/03/24
 9 %%
10 %%      checksum        = "06437 89 241 5032"
11 %%
12 \dummydef[french,english,frenchtest,frenchdoc,NouveauLangage,%        % 5
13 beginlanguage,inferieura,superieura,lqq,rqq,originalinput,%           %10
14 nonfrench,endnonfrench,frenchtypography,noTeXdots,TeXdots,%           %15
15 ancientguillemets,todayguillemets,guillemetsinallfonts,%18
16  guillemetsinroman,endguillemets,%20
17 noenglishquote,englishquote,noenglishdoublequotes,englishdoublequotes,%24
18  untypedspaces,%25
19 typedspaces,idotless,iwithdot,EBCDICbrackets,normalbrackets,%         %30
20 letpunctutionactivefor,wrongtypedspaces,nofrenchtypography,%33
21  frenchlayout,everyparguillemetsremoved,%35
22 everyparguillemets,noeveryparguillemets,overfullhboxmark,%38
23  nooverfullhboxmark,labelsinmargin,%40
24 nolabelsinmargin,Numeros,nopagenumbers,order,nofrenchlayout,%         %45
25 frenchtranslation,resume,sommaire,annexe,annexes,%                    %50
26 glossaire,glossaires,printindex,see,seealso,%                         %55
27 nofrenchtranslation,frenchmacros,dittomark,frenchname,ordinal,%       %60
28 keywords,endkeywords,motsclef,endmotsclef,pmfrench,%                  %65
29 CheckSevenBits,frenchhyphenation,nofrenchhyphenation,hyphex,frhyphex,%%70
30 letpunctuationactivefor,endfrench,prefacename,vert,tilde,%            %75
31 automaticlettrine,noautomaticlettrine,frenchguillemets,%78
32  nofrenchguillemets,wideletter,%80
33 abbreviations,noabbreviations,nofrenchmacros,frenchstyleid,%84
34  originaloutput,%85
35 abstract,endabstract,email,unnumberedcaptions,nowrongtypedspaces,%    %90
36 <,>,endorder,Ordinale,Ordinal,%                                       %95
37 allowuchyph,disallowuchyph,versatim,usualmessages,nohyphenation,%    %100
38 endversatim,tthyphenation,notthyphenation,!,tabbingaccents,%         %105

39 notabbingaccents,usersfrenchoptions,PS,yourref,ourref,%              %110
40 object,AllTeX,ordinale,guillemetsinarrays,noguillemetsinarrays,%     %115
41 pointvirgule,deuxpoints,pointexclamation,kbtypeout,%119
42  pointinterrogation,%120
43 guillemets,regularmathcomma,frenchmathcomma,frenchwarnings,%124
44  nofrenchwarnings,%125
45 frenchtrivsepwarnings,nofrenchtrivsepwarnings,emailname,fraddto,%129
46 nombre,%                                                             %130
47 frtrivseplengths,frlabelitems,checkitemguillemets,indentfirst,%      %135
48 nonindentfirst,kbIO,ConstantLayout,WindowsUnits,verbatimfile,%       %140
49 frenchpagestyle,nofrenchpagestyle,beginingfolio,nobeginingfolio,%    %144
50  FileName,%145
51 theFileName,frenchbguillemets,nofrenchbguillemets,%
52  FrenchGuillemetsFrom,CyrillicGuillemets,%150
53 PolishGuillemets,LasyGuillemets,og,fg,%                      %154

54 %

55  % 154 commandes definies avant \begin{document}%
56  %----------------------------------------------%

57 %

58 %%%%%%%%%%%%%
59 % Macros defined after \begin{document}

60 %

61 ier,iere,ieme,iers,ieres,%                                           %005
62 iemes,numeros,lettrinefont,degre,degres,%                            %010
63 leftguillemets,rightguillemets,fup,primo,secundo,%                   %015
64 tertio,quarto,quando,fsc,refmark,%                                   %020
65 moretolerance,Sauter,lsc,vers,formfoot,%                             %025
66 formhead,figurette,endfigurette,printglossary,lettrine,%             %030
67 flettrine,at,chap,lettrinehang,lettrinefontname,%                    %035
68 noresetatpart,etc,allowhyphens,captionfont,originalmathcomma,%       %040
69 frenchpack,halfnegthinspace,%     42

70 %

71  %   42 commandes definies apres \begin{document}%
72  %+ 154 commandes definies avant \begin{document}%
73  %= 196 commandes utilisables dans FrenchPro     %
74 %                   %-----------------------------------------------%
75 %%%%%%%%%%%%

76 %

77 % Macros not entered in the list or removed

78 %

79 %GOfrench,% is not a user command
80 %fguillemets,endfguillemets,%150 % removed 2000/03/08
81 %languagename is defined by babel
82 %slidename and listslidename will be in seminar too
83 %notesname is already in endnotes
84 %proofname is in AmS
85 %No, % was it really defined in the past?
86 %addto is defined by babel
87 ]}%
88 \endinput
89 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

Annexe E

 Le fichier french.chk

 1 % This is the french style check file (that check french cs & issue a warning)
 2 %                                 Copyright Bernard Gaulle as in french_doc.pdf
 3 %
 4 % to be used only to see if a document is french-style compatible
 5 %
 6 %                                                              rev. 2005/05/17
 7 %%
 8 %%      checksum        = "38378 56 214 2510"
 9 %%
10 \catcode`\/=0{\catcode`/\=12/gdef/Aboi{/string\}}%}emacs+TeX
11 /catcode`/\=0\catcode`\/=12\catcode`\@=11
12 % THERE IS A LOOP when using the msg package thus
13 \let\kbBissue\relax% i don't use it.
14 % Localisation code for numbered \typeout: "\kbBissue% localise it."
15 % For debugging one can remove "msg" access, just uncomment
16 %\let\kbBissue\relax% this line.
17  \ifx\kbBissue\undefined%
18 % Firstly we add the material to use the "msg" package for localization.
19  \def\kb@issue#1#2{\kb@issue@[#1]#2\void}% The local \issuemsg macro.
20  % which will call the real one;
21  % #1 is the macro message required.
22  % #2 is the message header + msg number
23  %    such as "^^J -234-", just message
24  %    number (234) is kept.
25  \let\kbBissue\kb@issue%
26  \def\kb@issue@[#1]#2-#3-#4\void{\issuemsg[#1]#3(french)}%
27  \ifx\issuemsg\undefined\let\kbBissue\relax\let\typeouA\typeout\fi%
28  \fi%

29 %

30 \catcode`\@=12
31 {\catcode`\]=13\def]{}
32 \gdef\ErrMsgF#1{%
33 \ifx\kbBissue\relax%
34  \errhelp{-46- Cette commande est deja definie dans le style french}%
35 %   \errhelp{-46- Your command will be ignored, type <return> to proceed}%
36 \fi%
37 \kbBissue% localise it.
38 \errmessage{-46- Probleme eventuel avec FrenchPro (macro \Aboi #1)}}

39 \def\DmyDeF#1{\expandafter\gdef\csname#1\endcsname{\ErrMsgF{#1}}}%
40 \def\Dmydef#1,#2]{\DmyDeF{#1}%
41  \def\temp{#2}\ifx\temp\empty\let\Dmydef\relax\fi%
42  \Dmydef#2]}%
43 \def\dummydef[{\Dmydef}%
44 \input french.cmd %
45 % the following for super-activated-characters
46 \catcode`\"=\active
47 \gdef"{{\def\Aboi{}\ErrMsgF{\string"}}}
48 \catcode`<=\active\catcode`>=\active
49 \gdef<{{\def\Aboi{}\ErrMsgF{\string<}}}
50 \gdef>{{\def\Aboi{}\ErrMsgF{\string>}}}
51 \catcode`<=12\catcode`>=12
52 \gdef\EBCDICbrackets{\catcode`<=\active\catcode`>=\active}
53 \gdef\noEBCDICbrackets{\catcode`<=12\catcode`>=12}
54 \def\frenchTeXmods{\ErrMsgF{frenchTeXmods}}% normally unused by user
55 \endinput
56 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

Annexe F

Un style english (fenglish)

 1 % fenglish_doc.txt original file name.
 2 %
 3 % Defining usual english caption names (for multilingual french documents)
 4 %                                          a minimum set by B.Gaulle 11/18/1991
 5 %
 6 % History of mods.
 7 % ================
 8 % \englishTeX didn't call \captionsenglish%               Daniel Flipo  1/16/92
 9 % \beginlanguage introduced to be used at \begin{document}  time  --bg 02/10/92
10 % Suppress ":" from ccname and enclname                           --bg 09/22/92
11 % Disallow twice loading (loop pointed by Marc Torzynski)
12 % "Subject" is better than "Object" (pointed by M.T.)             --bg 10/20/92
13 % Let the last english option loaded be the last used language
14 %                   as proposed by Marc Torzynski.                --bg 11/06/92
15 % Don't reset \captionsnames if already done
16 % Change \englishTeX to \englishTeXmods                           --bg 11/16/92
17 % \captionsnames was badly re-initialized(pointed by M. Torzynski)--bg 11/23/92
18 % Adding the keywords name.                                       --bg 02/12/93
19 % \draftname added.                                               --bg 03/08/93
20 % Don't define letter captions outside letter.sty.                --bg 03/18/93
21 % Write "cc" but not "Cc"                                         --bg 04/19/93
22 % \prefacename added as in babel.                                 --bg 08/17/93
23 % TeX--XeT interface added.
24 % Offer \begin{english} and \end{english} too.                    --bg 08/31/93
25 % \@ifundefined added for plain TeX.                              --bg 09/03/93
26 % Spaces ignored after \english and \endenglish.
27 % Space removed after \beginL.                                    --bg 10/11/93
28 % This file is now named english.doc                              --bg 05/02/94
29 % "Liste of Tables" corrected (a mod from Yannick Lallement).     --YL 11/07/94
30 % Don't start a TeX-XeT paragraph before \begin{document}.        --bg 12/08/94
31 % \dateenglish added for babel.                                   --bg 04/07/95
32 % \english replaced by \selectlanguage{english} when you use it
33 %   (with babel) as the default language for the document.        --bg 04/10/95
34 % TeX--XeT mods removed from format default language.             --bg 04/11/95
35 % Introduce \beginFWdirection ie the first writing direction.     --bg 04/13/95
36 % \usepackage{index,french,english} generated an error message
37 %   (\nodocument) as shown by E.Picheral. This was due to
38 %   \@ifundefined which redefintion was forced and different

39 %   with 2e.                                                      --bg 06/08/95
40 % This file, english.sty renamed frenglish.sty.                   --bg 04/04/96
41 % Replacing \em, \bf by \emph and \textbf.                        --bg 97/06/30
42 % Pass option english to known packages. \@xtrasenglish code
43 %   added if any (equal to \extrasenglish outside babel).
44 % Allow "english" to be a global option.                          --bg 97/10/27
45 % Add \ProcessOptions, needed when fenglish loaded separately.
46 % \dateenglish loaded with \captionsenglish (for mlp).            --bg 97/11/05
47 % \slidename now defined (targeting seminar).                     --bg 97/11/18
48 % \languagename now defined for mlp.                              --bg 97/11/24
49 % Introduce \notesname for endnotes.sty                           --bg 98/01/20
50 % Introduce \proofname for AmS classes.                           --bg 98/11/13
51 %                              or packages.                       --bg 99/04/28
52 % \emailname added for the letter class.                          --bg 99/09/23
53 % \ProvidesFile added.                                          --bg 2000/09/06
54 % Execute \bibsenglish if any.                                  --bg 2000/10/25
55 % Provide names for the "algorithm" package.
56 % Let \bibname undefined if not already defined.                --bg 2002/02/06
57 % \ConstantLayout flags now defined.                            --bg 2003/09/15
58 % \@currname initialisation required in french.sty for
59 %    options processing (\ProcessOptions).                      --bg 2004/06/23
60 % Don't call \bibsenglish in \capstionsenglish when babelbib
61 %    is loaded.                                                 --bg 2005/01/05

62 %

63 % "@" is assumed to be of category 11.

64 %

65 %%
66 %%      checksum        = "09208 215 940 10528"
67 %%
68 %#<
69 \ProvidesFile{fenglish.sty}%
70  [2004/06/23 english interface for the french(le/pro) package]
71 %#>
72 \def\beginlanguage{% might be used at \begin{document} time
73  \ifx\selectlanguage\undefined\english%
74  \else\selectlanguage{english}\fi}%
75 \edef\beginFWdirection{L}% write Left to right
76 \ifx\undefined\babel@core@loaded%
77 \DeclareOption{english}{\def\beginlanguage{% language to start
78  \ifx\selectlanguage\undefined\english%
79  \else\selectlanguage{english}\fi}%
80  }%
81 \ProcessOptions% English option need, at least, to be processed.
82 \fi%
83 \expandafter\ifx\csname englishTeXmods\endcsname\relax%.\ifundefined
84 \else \endinput \fi%........     \then go ahead \else do nothing \fi
85 % LaTeX compatible macro for plain TeX
86 \ifx\@ifundefined\undefined%
87 \long\def\@ifundefined#1#2#3{\expandafter\ifx\csname%.......... \@ifundefined
88  #1\endcsname\relax#2\else#3\fi}%
89 \fi%

90 %

91 \let\ifCLAenglish\iffalse%

 92 \def\@tempa{\global\let\ifCLA\iffalse%
 93  }%
 94 \ifx\ifCLA\undefined\expandafter\@tempa\fi%

95 96 %

 97 \global\let\ifnonenglishheadings\iffalse%english style allows english headings!

98 %

 99 \gdef\captionsenglish{%......................................  \captionsenglish
100  \ifx\captionsnames\captionsenglish\else
101 % The following for styles: article, report and book
102  \def\pagename{page}%
103  \def\refname{References}%
104  \def\abstractname{Abstract}%
105 \ifx\bibname\undefined\else%
106  \def\bibname{Bibliography}%
107 \fi%
108 \ifx\btxselectlanguage\undefined% Don't call \bibsenglish if babelbib loaded.
109  \csname bibsenglish\endcsname%
110 \fi%
111  \def\contentsname{Table of Contents}%
112  \def\listfigurename{List of Figures}%
113  \def\listtablename{List of Tables}%
114 \ifx\listalgorithmname\undefined\else%
115  \def\ALG@name{algorithm}%
116  \def\listalgorithmname{List of \ALG@name s}%
117 \fi%
118  \def\indexname{Index}%
119  \def\seename{\emph{see}}% used normally in makeidx.sty
120  \def\seealsoname{\emph{see also}}% added macro  \seealso
121  \def\figurename{Figure}%
122  \def\tablename{Table}%
123  \def\partname{Part}%
124  \def\glossaryname{Glossary}%
125  \def\kwname{\textbf{Keywords}: }%
126  \def\draftname{DRAFT}%
127  \def\prefacename{Preface}%
128 % The following is for AmS packages/classes
129 \ifx\proofname\undefined\else%
130  \def\proofname{Proof}%
131 \fi%
132 % The following is only for the letter style
133 \ifx\opening\undefined\else%
134  \def\headtoname{To}%
135  \def\ccname{cc}%
136  \def\enclname{Encl}%
137  \def\PSname{PS:}% Post-Scriptum
138  \def\Objectname{Subject:}% Subject of the letter
139  \def\YourRefname{Your Ref:}% Your reference number
140  \def\OurRefname{Our Ref:}% Our reference number
141  \def\emailname{email:}% Email address
142 \fi%
143 % The following is for seminar
144 \ifx\slidename\undefined\else%

145  \def\slidename{Slide}%
146 \fi%
147 % The following is for endnotes 98/01
148 \ifx\notesname\undefined\else%
149  \def\notesname{Notes}%
150 \fi%
151 % The following is only for report and book styles
152 \ifnonenglishheadings% Bypass to a LaTeX slight bug...
153 \else%
154  \def\chaptername{Chapter}%
155 \fi%
156  \def\appendixname{Appendix}%
157  \fi%
158 \let\captionsnames\captionsenglish%

159 }%

160 % The command to initialize all english tools except hyphenation:
161 \@ifundefined{englishTeXmods}{%................................ \englishTeXmods
162  \gdef\englishTeXmods{%\captionsnames are normally restored by prev. langua.
163  \ifCLA
164 \ifCLAenglish%
165  \ifx\captionsnames\captionsenglish%
166  \else\captionsenglish\dateenglish%
167  \fi%
168 \fi%
169  \else%
170  \ifx\captionsnames\captionsenglish%
171  \else\captionsenglish\dateenglish%
172  \fi%
173 \fi%
174  \csname @xtrasenglish\endcsname%
175  \def\languagename{english}% set it for mlp.
176  \let\switchtolanguage\endenglish%

177 }%

178  }{}%
179 % extras and even more extras
180 \ifx\dateenglish\undefined%...................................... \dateenglish
181 \def\dateenglish{\def\today{\ifcase\day\or 1st\or 2nd\or 3rd\or 4th\or 5th\or
182 6th\or 7th\or 8th\or 9th\or 10th\or 11th\or 12th\or 13th\or 14th\or 15th\or
183 16th\or 17th\or 18th\or 19th\or 20th\or 21st\or 22nd\or 23rd\or 24th\or
184 25th\or 26th\or 27th\or 28th\or 29th\or 30th\or 31st\fi~\ifcase\month\or
185 January\or February\or March\or April\or May\or June\or July\or August\or
186 September\or October\or November\or December\fi\space \number\year}}%
187 \fi%
188 \ifx\undefined\babel@core@loaded%
189 \edef\extrasenglish{}\def\@xtrasenglish{\extrasenglish}% for other packages.
190 \else% the date mechanism
191 \let\extrasenglish\englishTeXmods%
192 \fi%
193 % The command to set english hyphenation:
194 % (normally set at INITeX) it should equal to \language=x and nothing else
195 \@ifundefined{english}{\gdef\english{\relax}}{}% Default............   \english
196 % The command to do extra things and switch to another language:
197 \@ifundefined{switchtolanguage}{%............................ \switchtolanguage

198  \gdef\switchtolanguage#1{#1}}{}%
199 \let\@enstORI\switchtolanguage% save original switchtolanguage if any.
200 \let\englishORI\english% assuming \language=x was set here
201 \def\endenglish{\let\switchtolanguage\@enstORI%
202 %               \csname endL\endcsname%stop TeX--XeT 1st direction of writing
203  \ignorespaces}% but they are not after \end{english} !
204 \let\noextrasenglish\endenglish%
205 % The final command to initialize english stuff:
206 \def\english{\switchtolanguage\englishTeXmods\englishORI%...... Final \english
207  \ignorespaces}% but they are not after \begin{english} !
208 \english% Ready now to activate the mechanism [english is the default language]
209 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

210 %

211 % Let few other packages know that french is loaded.

212 %

213 %\PassOptionsToPackage{english}{varioref}% defaultly executed

214 %

215 \endinput%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

78 ANNEXE F. UN STYLE ENGLISH (FENGLISH)

Annexe G

Le code de l’extension FrenchPro

 1 % This is french_doc.pdf             (informations en francais dans frdoc.tex)
 2 %      by  Bernard GAULLE since 1989.
 3 %....................................................................
 4 % Have you registered? if not, fill in the form in the REGISTER file and send
 5 % it now, otherwise Bernard will never accept your messages requesting help.
 6 %....................................................................
 7 % (Copyright notice in English just after the French one)
 8 % Copyright GUTenberg-Gaulle 1992-1998, Bernard Gaulle 1999-2007:
 9 % ==============================================================
10 %    - La distribution de l'extension FrenchPro pour LaTeX est effectuee
11 %      selon le mode shareware. Apres installation et essai de ces fichiers
12 %      pendant un mois vous devez decider soit de les garder pour en faire
13 %      un usage regulier soit de les detruire. Si vous les conservez il vous
14 %      faut regler vos droits d'utilisation aupres de l'auteur (29 euros
15 %      pour une licence individuelle, voir fichier REGISTER)
16 %    - Vous n'etes AUCUNEMENT autorise a modifier les fichiers marques du
17 %      mot  << Copyright >>.
18 %    - La redistribution gratuite de cette distribution est autorisee
19 %      dans la mesure ou elle est complete et non pre-installee.
20 %      Vous n'etes AUCUNEMENT autorise a faire payer cette distribution ou
21 %      l'utilisation de ses fichiers si ce n'est pour un cout reduit de copie.
22 %      Tous les logiciels revendus par un circuit commercial sont consideres
23 %      en tirer benefice (meme s'il ne s'agit pas d'un grand profit) et donc
24 %      la redistribution est strictement soumise a un accord prealable avec
25 %      l'auteur.
26 %    - Vous n'etes PAS AUTORISE a inclure cette distribution dans un progiciel
27 %      qui reduirait ses possibilites intrinseques ; vous n'avez donc pas
28 %      le droit, par exemple, de ne redistribuer qu'une partie des fichiers
29 %      d'origine.
30 %    - Tous les fichiers de cette distribution sont accessibles gratuitement
31 %      sur le domaine de l'Internet (dont les serveurs CTAN).
32 %    - Aucun virus n'a ete detecte au moment ou ces fichiers furent termines
33 %      et prets a la distribution.
34 %    - Le code informatique est offert ici dans l'espoir qu'il soit utile et
35 %      avec la volonte qu'il soit correct mais aucune garantie ne peut etre
36 %      fournie, de quelque ordre que ce soit. Les utilisateurs l'utilisent
37 %      entierement a leur propre risque. L'auteur n'admettra et n'acceptera
38 %      d'etre lie par un quelconque engagement en cas de manque a gagner,

39 %      direct, indirect, immediat, consecutif ou autre, resultant de son
40 %      utilisation.
41 %    - Vous n'etes PAS AUTORISE a vous substituer a l'autorite de l'auteur
42 %      en appliquant des modifications, meme si de votre point de vue, elles
43 %      corrigent des deficiences.
44 %      Les lois internationales, europeennes (91-255) et francaises (94-361)
45 %      sont applicables.
46 %      L'utilisateur de ce logiciel peut toutefois le personnaliser a volonte
47 %      par differents moyens expliques dans la documentation. L'auteur du
48 %      logiciel n'est toutefois aucunement lie par une modification introduite
49 %      par une personnalisation utilisateur.

50 %

51 % Copyright Gaulle-GUTenberg 1992-1998, B. Gaulle 1999-2007.
52 % =========================================================
53 %    - The distribution of the FrenchFro package for LaTeX is made on
54 %      the shareware mode. After installation and tests of these files
55 %      during one month you have to decide either to keep them for
56 %      further use or to delete them. If you keep them you have to
57 %      pay the usage fees to the author (29 euros for single user licence,
58 %      look at the REGISTER file).
59 %    - You are NOT ALLOWED to change in any way all files marked
60 %      with  "Copyright".
61 %    - Free redistribution of this distribution is authorized but only
62 %      when complete and not pre-installed.
63 %      You are NOT ALLOWED to take money for the distribution or use of
64 %      these files except for a nominal charge for copying etc.
65 %      All softwares sold via commercial distributors are considered to
66 %      make money, even they don't make an important profit, thus the
67 %      redistribution is strictly limited to a previous agreement with
68 %      the author.
69 %    - You are NOT ALLOWED to include these files in a package/software in
70 %      a way that will reduce its capabilities or features; this doesn't allow
71 %      you, for example, to redistribute only few parts of the whole original
72 %      files.
73 %    - All the files included in the distribution are available freely inside
74 %      the Internet domain (and specially on CTAN servers).
75 %    - There was no virus at the time these files were completed for
76 %      distribution.
77 %    - This computer code is offered in hopes that it will be found useful,
78 %      and in the belief that it is correct, but it is offered without any
79 %      warranty of any kind, including warranty of fitness for any purpose.
80 %      Users of this code do so entirely at their own risk. The author neither
81 %      admits nor accepts any liability for any loss, direct, indirect,
82 %      consequential, incidental, or otherwise, resulting from the use of this
83 %      computer code.
84 %    - You are NOT ALLOWED to substitute author's authority by applying
85 %      modifications even if, in your point of view, they correct deficiences.
86 %      International, European (91-255) and French (94-361) laws apply.
87 %      There is still the possibility for the user to customize this
88 %      package at his wishes by various means explained in the documentation.
89 %      The author of the package is not liable for any change introduced
90 %      by any users customization.
91 %.........................................................................V2.5

 92 %%
 93 %%      checksum        = "58183 3991 14896 209605"
 94 %%
 95 %....................................................................
 96 % NOTICE that this work was done without any formal support.
 97 %        Friendly helps, supports as well as sponsors are welcome!
 98 %....................................................................
 99 \expandafter\ifx\csname frenchTeXmods\endcsname\relax%...\ifundefined
100 \else \endinput \fi%......... \then go ahead \else do nothing \fi
101 \def\frenchname{french}% This is the name of our language.
102 \def\frenchpack{FrenchPro}% This is the name of the product.
103 \def\ds@french{}% this might be usefull if loaded before \document...
104 \def\ds@pmfrench{\pmfrench}% further defined
105 %\def\ds@le{\input frenchle.sty}%

106 %

107 %   french.sty developped by Bernard GAULLE for French-Speaking Users as of:
108 {\catcode`\@=11{%
109 \ifx\@unexpandable@protect\undefined\let\protect\empty%
110 \else\let\protect\@unexpandable@protect%
111 \fi%
112  \xdef\FSfd{28 juin 2007}%
113  \xdef\FSfv{V5,9994}%
114  \xdef\frenchstyleid{\FSfv\space-- \FSfd\space --}%
115 }}%
116  \edef\FSfd{2007/06/28 }%

117 %

118 %   I started this job years ago (in 1989) firstly
119 %   using ideas by Jacques DESARMENIEN, the French pioneer and also by
120 %   Eric PICHERAL (CICB, Rennes), Nicolas BROUARD (INED, Paris),
121 %   Marc SHAPIRO (INRIA, Rocquencourt), Raymond SEROUL (Lab Typo. Strasbourg),
122 %   Philippe LOUARN (IRISA, Rennes), Olivier NICOLE (INRA, Jouy),
123 %   Rainer SCH\"OPF (Uni. Mainz), Johannes BRAAMS (PTT, NL) and others.
124 %   I stopped to collect the names of the good guys in 1991 when i decided
125 %   to make a seriously enhanced & rewritten distribution i released as V3.0.

126 %

127 %%  Free gift to GUTenberg  (Frenchspeaking TeX Users Group)
128 %%  during 12 years.        (Groupe francophone des Utilisateurs de TeX).
129 %%  Shareware since january 2001 (Version 5,00).

130 %

131 % Send suggestions/bug reports/corrections to the author: frenchprobg@free.fr
132 %                 (Bernard Gaulle, 44 rue P. Curie, F-92700 Colombes)

133 %

134 % Canonical Archives server is: www.gutenberg.eu.org
135 %                              (in /pub/GUTenberg/french)
136 %                               where these files are archived.

137 %

138 % Running only with LaTeX2e, oldest format required:
139 \NeedsTeXFormat{LaTeX2e}[1996/12/01]% the latest one acceptable
140 \let\auxWARNINGi=\@gobble% accept aux files produced by french
141 % This style is using, at most:
142 %%<
143 %%> 577 strings out of 11731 (4.9%);
144 %%> 4675 string characters out of 85497 (5.4%);

145 %%> 11217 words of memory out of 262141 (4.2%);
146 %%> 567 multiletter control sequences out of 9500 (5.9%).

147 %

148 % (I used usual teTeX with option mltex).

149 %

150 % Lastest updates (previous updates infos in history file)
151 % ===============

152 %

153 % V5,995
154 %Released                                                      --bg 2005/04/18
155 %        \XeTeXinputencoding is no more running: supporting
156 %        XeTeX is now differed. Jonathan Kew informed.         --bg 2005/12/25
157 % V5,996 patch to allow \label to run in math mode.            --bg 2005/09/09
158 %        Reported by Simon Pierre Desrosiers.

159 %

160 %        \captionseparator is off with memoir.cls,             --bg 2005/10/08
161 %        use \captiondelim.
162 %        Reported by Frederic Connes.

163 %

164 %        Patch for relsize [2003/07/04 ver 3.1] to avoid messages when
165 %        the smallest size is less than de default of 6pt.     --bg 2005/12/22
166 %        Reported by Frederic Connes.

167 %

168 %        Patch for nomencl.sty which force \kbtypeout to be
169 %        called from \item in an unexpandable environment and
170 %        then producing an undefined \f@tempa break. So i add
171 %        \nofrenchwarnings in \printnomenclature. The problem
172 %        was reported by J.B. Moreau.                          --bg 2006/01/19

173 %

174 % Released                                                          2006/03/25
175 % V5,997 Emergency message added when frlicense.dat is empty.
176 %        Change in tabbing environnement: \tabbingaccents is
177 %          now the default in French since 8bits chars in T1
178 %          are always converted to 7bits chars "a la TeX".
179 %          \notabbingaccents added in \nofrenchtypography.
180 %          The pb was reported by Frederic Petit.                   2006/04/25
181 % V5,998 Released - new production scheme.                          2006/07/04
182 % V5,999 Patch for frenchle: ## illegal parameter in \@tempa (\')  ?
183 %        issuing message with superfluous double \string (\@w@s).   2006/08/15
184 %        Natbib correction: bibitem macro was one oboslate of
185 %           jurabib. Jurabib bibitem macro obsolate and misplaced.
186 %           Full code revisited.                                    2006/08/18
187 % Released 2006/08/25
188 % V5,9991 When FrenchPro is called from babel(fr) all given options
189 %         should not be processed by the msg package, so we call msg
190 %         saying it's an \intern@lc@llfrom{FrenchPro} and it has to
191 %         use the French language.
192 %         But don't force French when calling from kernel.          2006/10/03
193 % V5,9992 German localisation completed, thanks To Werner Struchmann.
194 %                                                                   2006/10/13
195 % V5,9993 Empty \caption was not processed correctly and thus the
196 %         the caption separator was erroneously printed.            2007/02/09
197 %         \texttt is now robust, avoiding wrong expansion in title

198 %         heads especially.
199 %         \MakeRobustCommand now creating \cmd_fp in place of
200 %         \cmd_. (a LaTeX robust command can be made robust for
201 %         FrenchPro too).                                           2007/02/11

202 %

203 % V5,9994 Correction for empty caption didn't run with hyperref. In
204 %         a first step i remove the modification and will try to
205 %         find the good mod to avoid the \captionseparator be
206 %         printed.                                                  2007/06/28

207 %

208 % and also check if there is any frpatch.sty file available.

209 %

210 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

211 %

212 % Object: DOCUMENT CLASS OPTION for printing French texts with TeX or LaTeX
213 %         as well as english. (or multilingual texts in which French is the
214 %         main language).
215 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

216 %

217 % It can be called:
218 % via       \usepackage{french}      % french is alone
219 % or        \usepackage[french]{mlp} % using The Multi-Lingual Package
220 % or as an option of \documentclass, when using mlp.
221 %(or via Babel, with less features)

222 %

223 % Commands to be used by the end users:
224 % ====================================
225 % \frenchtest          between \document.... and \end{document} will run
226 %                      the LaTeX "Torture Test" (see french*.tex files).
227 % \frenchdoc           between \document..... and \end{document} will compose
228 %                      the LaTeX documentation (see frenchlu.tex file).
229 % \french              Apply French conventions including hyphenation,
230 %                      typography, page layout, titles inside documents and
231 %                      few other things helping when typing a document.
232 %                      This is the default language.
233 % \begin{french}...\end{french} to bind the French text with LaTeX.
234 % \french ... \endfrench with TeX.
235 % \pmfrench (preambule command) ... the poor man way
236 %                      (or \usepackage{pmfrench} vi pmfrench.sty)
237 %                      to let the French style run even the TeX motor
238 %                      (ie format) was not installed or configured in a way to
239 %                      use the French language (hyphenation, language.dat,...)
240 %                      Be aware that a lot of things might not provide their
241 %                      usual featuring. Notice also that then the following
242 %                      commands do nothing:
243 %                            - \noeveryparguillemets
244 %                            - \lettrine and \flettrine
245 %                            - \abbreviations and "..."
246 %                            - \frhyphex
247 % \usersfrenchoptions{.. French options ..} to allow the user to change the
248 %                      default options. All options given inside braces remain
249 %                      active all along the document inside language French.
250 %                      This command can be reused, provided arguments are

251 %                      then cumulated.
252 % \english             for going back to "normal" English conventions
253 %                      And if you have a language.dat config file defining
254 %                      german and dutch languages OR you use
255 %                      \NouveauLangage[n]{german} and
256 %                      \NouveauLangage[p]{dutch}  where n and p are internal
257 %                      unused language number, then you can type:
258 % \german              to  switch to German conventions
259 % \dutch               or to  switch to Dutch conventions or to
260 % \any_name            (any language created by \NouveauLangage[n]{any_name})
261 % \NouveauLangage[n]{language_name}  (as previously explained)
262 %                      define \language_name which will call \language_nameTeX
263 %                      assuming that \language_nameTeX is/will be defined
264 %                      (normally in a style file).
265 % \beginlanguage       switch to the language that started first after
266 %                      \begin{document} (depending of the last lang.style opt)
267 % \beginFWdirection    switch to the first direction of writing when TeX--XeT.
268 %--------------------
269 % Commands for compatibility:

270 %

271 % \inferieura          is the original less than sign (<)
272 % \superieura          is the original greater than sign (>)
273 % \pointvirgule        is the original ";"
274 % \deuxpoints          is the original ":"
275 % \pointexclamation    is the original "!"
276 % \pointinterrogation  is the original "?"
277 % \lq  and \rq         stands for `  and  '
278 %         ^\prime      stands for ' in maths
279 % \lqq and \rqq        stands for `` and ''
280 % \dittomark           stands for "

281 %

282 % \originalinput{file_of_code} is supplied to input any code that might be
283 %                      incompatible with the French style.
284 %                      You can also disable the French style using:
285 % \begin{nonfrench}...\end{nonfrench} with LaTeX
286 % \nonfrench..........\endnonfrench   with plain TeX
287 % \originaloutput[file]{text} is supplied to output any text that would
288 %                      otherwise generate expanded macros for activated chars
289 %                      instead of original characters. "file" is a stream
290 %                      number related to open file defined by \newwrite.
291 % \def\encodingdefault{...} can be set to "T1" or "OT1" to change the default
292 %                      font encoding that is normally set in the format
293 %                      (with initex material and specially kbconfig.tex)
294 %--------------------
295 % \frhyphex            Reload once French hyphenation exceptions file from
296 %                         language.dat (give this order in the preambule)
297 %                         Not usable with plain (or low level languages).
298 % \frenchhyphenation   Apply French rules on hyphenation:
299 %                         - as stated in the patterns file
300 %                         - with exceptions as established by \hyphenation
301 %                         - of words starting with one upper case letter
302 %                      and also allows accent macros in \hyphenation
303 %                      or \showhyphens.

304 % \nofrenchhyphenation Nullify former actions

305 %

306 % Other commands for hyphenation that remains unchanged over \french reinit.

307 %

308 % \allowhyphens        allow the following word to be hyphenated (useful
309 %                            sepcially in the second part of a compund word.
310 % \allowuchyph         allow hyphenation of words starting with a capital
311 %                            letter (this is the default as in plain & lplain)
312 % \allowfulluchyph     allow it even if a \hbox would normally forbid it in
313 %                            the present code.
314 % \disallowuchyph      forbid it (this is my own recommandation)
315 % \tthyphenation       allow hyphenation of words in the present \tt font
316 % \notthyphenation     disallow hyphenation of words in the present \tt font
317 %                      (never saved; last value in a \par is that which works;
318 %                       default value is that given by the main doc-style;
319 %                       presumely the default -if not: tell me \tthyphenation;
320 %                       this is the default in lplain.tex)
321 %--------------------
322 % \frenchtypography    Apply French typography (spacing) on :
323 %                        - double punctuation ! ? ; :
324 %                        - guillemets (<< >>).Use \endguillemets instead of >>
325 %                          for ending 2 levels of guill. at the same time or
326 %                          when the ("everypar") open guillemets were ended in
327 %                          a previous inner environnement.
328 %                          Italic correction automatically added if necessary.
329 %                        - footnote marks in the text and minipages.
330 %                        - footnote references (\refmark).
331 %                        - thanks in titles.
332 %                      Print footnote number in the same font as the footnote
333 %                          text followed by a dot and appropriate spacing. When
334 %                          used in table environment footnote marks are typeset
335 %                          as in a minipage.
336 %                      Italicize the caption text (using \captionfont defaultly
337 %                          set to \emph).
338 %                      Change caption separator (":" replaced by value of
339 %                          \captionseparator which default is "~--")
340 %     Suboption: \frenchmathcomma
341 %                      Remove space after coma in math mode (default)
342 %                \regularmathcomma
343 %                      to set space, as usual after comma in math mode.
344 %                (chosen option is used to print numbers with \nombre).
345 %                \originalmathcomma
346 %                      to reset coma mathcode as before FrenchPro wass called.
347 %     Suboption: \unnumberedcaptions{figure/table} to remove headings in
348 %                          caption tiltles. This is a global suboption.
349 %                          It nullify the according \listof...(figures/tables).
350 %                          It can be used only once. Can't be turned back later
351 %                          in French.
352 %                      Hyphenate correctly. (The lowest level of application
353 %                                            is the paragraph.)
354 %                      Discourage page breaking after ``:''
355 %                      Forbid line breaking before double punctuation and >>
356 %                                                  and after <<.

357 %     Suboption: \noTeXdots will change them to 3 closed dots
358 %                \TeXdots leave \dots, \ldots as well known TeX dots (default)
359 %     Suboption: \nofrenchguillemets stops producing French guillemets.
360 %                \frenchguillemets starts producing French guillemets (default)
361 %     Suboption: \ancientguillemets start every paragraph of second level
362 %                                   guillemets with closing >> instead of <<.
363 %                \todayguillemets   normal way at the present time (default)
364 %     Suboption: \noguillemetsinarrays will print << or >> in standard arrays
365 %                      textual modes (depending of the font used).
366 %                \guillemetsinarrays is the usual default value.
367 %     Suboption: \guillemetsinallfonts allows to print them in any font but
368 %                \guillemetsinroman remains the usual default value.
369 %     Suboption: \guillemetsfont allows, when in a T1 font encoding running
370 %                scheme to choose the font for guillemets, just define or
371 %                redefine \guillemetsfont.
372 %     Command:   \endguillemets ends levels 2 & 1 at the same time (i.e. >>>>)
373 %     Suboption: \noenglishquote replace TeX ` ' quotes AND apostrophes
374 %                                by accents ` '  (to use only temporary).
375 %                                Do nothing inside a tabbing environement.
376 %                                \...code and \char become unusable asis.
377 %                \englishquote   is the default
378 %     Suboption: \noenglishdoublequotes for replacing `` with << and '' with >>
379 %                                Do nothing inside a tabbing environement.
380 %                                \...code and \char become unusable asis.
381 %                \englishdoublequotes   normal quoting ``...'' is the default
382 %     Suboption: \untypedspaces force a space where normally French people
383 %                               type one (before ; : ? ! >> and after <<)
384 %                \typedspaces   is the default value
385 %     Suboption: \tabbingaccents allow to put \` and \' diactrics on letters
386 %                when used in tabbing environment. \' and \` remain their
387 %                original tabbing usage if followed by a blank space.
388 %                Also usefull for 8bits chars ; this is the default.
389 %                \notabbingaccents is the usual LaTeX usage.
390 %     Suboption: \idotless suppress point on i when accented with ^and "
391 %                \iwithdot is the default
392 %     Suboption: \EBCDICbrackets replace non-math mode < ... > by [ ... ]
393 %                (..IBM has no brackets so < and > are often used as brackets)
394 %                \normalbrackets is the default
395 %     Suboption: \letpunctutionactivefor to use allways with something else
396 %                (like \wrongtypedspaces), let punctuation (! : ; ?) active
397 %                after French style. Caution: it's extremly dangerous!
398 %     (specify the suboptions after \frenchtypography)
399 %     (sub-options are not saved/restored over a language switch)
400 % \nofrenchtypography  Nullify former actions
401 %     Suboption: \wrongtypedspaces suppress spaces before double punctuation
402 %                (! : ; ?) which was erroneously typed \`a la fran\c caise.
403 % \text{...}     Allows to typeset text in math mode (AmS like command).
404 %--------------------
405 % \ConstantLayout is a one time macro that disallow to change page layout
406 %                 and any other typographic feature when switching to another
407 %                 language. Once used in any language it is applied for the
408 %                 whole document.
409 % \frenchlayout        Apply:

410 %                        - indentation of all (first LaTeX) paragraphs:
411 %      Suboption: \indentfirst is the default or
412 %                 \nonindentfirst which forces no indentation at all.
413 %                        - set item markers as --. User can choose others
414 %                          markers via the command
415 %                          \frlabelitems{\renewcommand{\labelitemi}...}.
416 %                          Look at documentation for more details and specially
417 %                          for the use of \checkitemguillemets.
418 %                        - reset section counter when starting a part.
419 %      Suboption: \noresetatpart nullify the former action.
420 %      Suboption: \noresetatchapter will not reset footnote counter at chapter
421 %                          change.
422 %      Suboption: \frenchtrivsep sets (reduced) vertical spacing in lists, this
423 %                          is the default. As this spacing is forced warning
424 %                          message is issued when other spacing is user
425 %                          expected. Look at \frenchwarnings part.
426 %                       You can choose your own values by setting the lengths
427 %                       with the command \frtrivseplengths{\setlength...}.
428 %                       In that case no warning message is issued.
429 %                 \nofrenchtrivsep resets the standard spacing in lists.
430 %                        - special spacing with the experimental "order" list.
431 %                        - print table footnotes as in minipages.
432 %                        - print a coma between consecutive footnotes.
433 %       Suboption: \frenchpagestyle apply a French pagestyle when starting a
434 %                          Part or a Chapter or an Index (provides \printindex)
435 %                \nofrenchpagestyle will not.
436 %       Suboption: \beginingfolio print the folio on theses pages (default)
437 %                \nobeginingfolio will not.
438 %                        - modify thebibliography environnement to be referred
439 %                          in toc and have a valid anchor in hyperref docs.
440 %                        - with letter.sty: address placement, typeset \closing
441 %                          as a paragraph and with \fclosing in place of
442 %                          closing you can chose spacing between closing and
443 %                          signature by saying \fclosing[n]{...} with n being
444 %                          the number of \medskipamount (default is 9).
445 %                          to typeset the date with \location{Paris, le ...}
446 %                          \yourref{...} to refer to a received letter
447 %                          \ourref{...} for your own reference
448 %                          \object{...} to precise the object
449 %                          \PS{...} for a post-scriptum
450 %                          \email{...} for the email address
451 %                          \def\formhead{...} for the odd page headings
452 %                                         (not operational with \nopagenumbers)
453 %                          \def\formfoot{...} for the odd page footings
454 %                                         (not operational with \nopagenumbers)
455 %                          \wideletter to enlarge the default linewidth.
456 %                        - offer macros for starting paragraphs with a dropped
457 %                          initial capital letter:
458 %                             with \lettrine the first letter of the first
459 %                                  token will be dropped. (warning: in 7-bit
460 %                                  write {\c C} for example). Remaining part
461 %                                  of the token in printed in small caps.
462 %                             with \flettrine a box will be printed around.

463 %                             Generic syntax:
464 %                                  \lettrine{Begining of the paragraph}
465 %                                 \flettrine{Begining of the paragraph}
466 %                             or   \lettrine[<< {Begining} >>] (let spacing!)
467 %                                 \flettrine[<< {Begining} >>] (ending >> might
468 %                                                   be given later in the text)
469 %                          \lettrine or \flettrine START a paragraph! And
470 %                          to avoid any problem the paragrpah must end with an
471 %                          explicit \par. This is a fragile macro!
472 %     Suboption: \noautomaticlettrine (default) processing;
473 %                      the lettrine uses a standard LaTeX font size.
474 %                          You can use \lettrinefont to define the font you
475 %                          want at the size you want. As default \lettrinefont
476 %                          is set to \Huge.
477 %                          Use \def\lettrinehang{n} to force hanging of n
478 %                          lines (there is no default value).
479 %                \automaticlettrine processing: the lettrine uses a computed
480 %                          font size.
481 %                          You can use \lettrinefontname to set the font
482 %                          (default is current font) and it will start the
483 %                          \automaticlettrine feature that means a new value
484 %                          of \lettrinefont is established (font-size).
485 %                          \lettrinehang is defaultly set to 2 lines and
486 %                          can be changed.
487 %                          The \automaticlettrine feature can be stoped by
488 %                          calling \noautomaticlettrine.
489 %     Suboption: \everyparguillemets open guillemets on every paragraph
490 %                                    until closing and do nothing at level 2.
491 %                                    This is the default.
492 %                \everyparguillemetsremoved switch off the previous feature.
493 %                \noeveryparguillemets don't start each par with guillemets
494 %                                  but start each level 2 line with them.
495 %                                  \guillemets is forbidden, use 7/8bit
496 %                                  guillemets chars.
497 %                                 (see documentation for further explanations)
498 %     Suboption: \overfullhboxmark print the TeX black box exactly where there
499 %                                  is an overfull hbox (as draft option do)
500 %                \nooverfullhboxmark is the default in LaTeX
501 %     Suboption: \labelsinmargin put labels in margin for debugging purposes
502 %                                This option can be used anywhere (outside
503 %                                \frenchlayout as well as \french environment)
504 %                \nolabelsinmargin is the default

505 %

506 %                      Propose the following environments:

507 %

508 %  Environment   \begin{drapeaufg}...\end{drapeaufg} to typeset raggedright
509 %                           with hyphenation.
510 %  Environment   \begin{drapeaufgIN}...\end{drapeaufgIN} to typeset raggedright
511 %                           without hyphenation (rules of Imprimerie Nationale)
512 %                           As text is never split and overfull can occur
513 %                           you may have to split lines by hand.
514 %  Environment   \begin{drapeaufd}...\end{drapeaufd} to typeset raggedleft
515 %                           with hyphenation.

516 %  Environment   \begin{drapeaufdIN}...\end{drapeaufdIN} to typeset raggedleft
517 %                           without hyphenation (rules of Imprimerie Nationale)
518 %                           Text printed past the line limit may occur.
519 %  Environment   \begin{order}...\end{order} to enumerate items with
520 %                           via \primo \secundo etc. and with sepcial spacing
521 %  Environment   \begin{figurette}...\end{figurette} to place a (little)
522 %                           figure EXACTLY here.
523 %  Environment   \begin{versatim}...\end{versatim} to print verbatim
524 %                          but with hyphenation typeset as in \verse and with
525 %                          \noenglishquote and \noenglishdoublequotes available
526 %     Commands:  \vers|...| the inline (or intext) vserion of "versatim"
527 %                \verbatimfile{filename} the filename is inputed in verbatim
528 %      BUGED!!   (\nopagenumbers reintroduced if undefined)
529 % \nofrenchlayout      Nullify former actions
530 %--------------------
531 % \frenchtranslation . Translate all English titles used in LaTeX, to french
532 %                      and generate French dates. This is the default.
533 %                      All things should normally run with std LaTeX or Babel.
534 %                      You can also create your own styles using these captions
535 %                      A lot of captions are newly defined for letters.
536 %                      You can also change the titles with your own definitions
537 %                      by using \fraddto\captionsfrench{\..name}{title}.
538 %  Environment   \begin{resume}...\end{resume} to print an abstract
539 %                    . \resume has been defined for French abstracts (we often
540 %                      need French and English abstracts together). You must
541 %                      be in \french before using it. (like you are in \english
542 %                      when you use \begin{abstract}...\end{abstract}).
543 %  Environment   \begin{motsclef}...\end{motsclef} to print a keywords list.
544 %                    . \motsclef has been defined for French keywords.
545 % (Environment   \begin{keywords}...\end{keywords} to print a keywords list)
546 %                      (by the way i have defined \keywords \endkeywords)
547 %                    . \sommaire is defined as a toc in front of a document.
548 %                      \sommaire[1] don't print paragraphs entries and below.
549 %                      \sommaire[2] don't print subsubsection entries and below
550 %                      \sommaire[3] don't print subsection entries and below,
551 %                                   this is the default for \sommaire.
552 %                      \sommaire[4] don't print section entries and below,
553 %                    . \annexe and \annexes have been defined.
554 %                    . \glossaire and \glossaires have been defined. If the
555 %                         "theglossary" is undefined, allow:
556 %                         \printglossary[filename] (default is jobname.gls
557 %                                      produced by pgm "makeindex -s gglo.ist")
558 %                         NB: code preferably \glossary{[name :] explanation}
559 %                         and: without makeindex allow to code jobname.glo
560 %                              (instead of .gls) & print something acceptable.
561 %                    . makeidx.sty is included and translated.
562 %                    . \seealso  is defined for indexes.
563 % \nofrenchtranslation Nullify former actions.
564 %--------------------
565 % \frenchmacros        Add a lot of macros to help in typographic process.
566 %                      \ier    for printing 1\ier  (premier)       (examples)
567 %                      \iere   for printing 1\iere (premiere)
568 %                      \ieme   for printing 2\ieme (deuxieme)

569 %                         and their plurials \iers, \ieres and \iemes.
570 %                      \FileName{file_name} for 8bit file names, then
571 %                         use it by calling \theFileName (e.g with \input).
572 %                      \WindowsUnits{name1=A,...,namen=N} to define macros
573 %                         names to assign to Windows units which will be called
574 %                         in any input file process (\name1: ... \nameN:)
575 %                         protecting from the activated colon character.
576 %                      \at     for printing @      (at)
577 %                      \vert   for printing |      (vertical bar)
578 %                      \chap   for printing ^(hat or circonflexe)
579 %                      \backslash for       \      (backslash)
580 %                      \tilde  for printing ~      (tilde)
581 %                      \nombre for printing large numbers and have the correct
582 %                              spacing (p.ex. \nombre{123 456,789 012})
583 %                      \numero for printing        (no)
584 %                      \Numero for printing        (No)
585 %                         as well as \numeros and \Numeros
586 %                      \degres for printing        (degrees)
587 %                      \leftguillemets for  <<     (unbalanced left guillemets)
588 %                      \rightguillemets for >>     (unbal.  right guillemets)
589 %                      \fup{X} to  put X in a smaller size supscript
590 %                      \primo      \secundo  \tertio  \quarto \quando={n}
591 %                      [or:\primo) \secundo) \tertio) \quarto) not recommanded]
592 %                      \fsc{name} or \fsc{NAME} will print as \textsc{Name}
593 %                      \fsc*{name} or \fsc*{NAME} forces use of \rmfamily
594 %                      \lsc{name} or \lsc{NAME} will print as \textsc{name}
595 %                      \lsc*{name} or \lsc*{NAME} forces use of \rmfamily
596 %                      \refmark{X} stands for \footnotemark[\ref{X}]
597 %                      \moretolerance will double each TeX tolerance within
598 %                            any chosen grouping (useful in narrow situations).
599 %                      \Sauter#Lignes will skip # lines (for specific usage)
600 %                      \! (negative thin space) run in non math mode
601 %                      \frenchalias\your_short_name\the_long_french_macro_name
602 %                              to give a short name to a very long macro name.
603 %     Suboption: \abbreviations allowing to ask for: "name_to_be_abbreviated"
604 %                      will print abbreviation if found otherwise will give a
605 %                      warning and print the name asis. The first char. of
606 %                      "name" is not compared, except if the abbreviation file
607 %                      contains {Name}. Customisation is allowed like this:
608 %                      \abbreviations[my_abbrev_file]
609 %                \noabbreviations is the default option
610 % \nofrenchmacros      Nullify former actions

611 %

612 % Some complemetary macros used in other parts:
613 %                \ordinal{counter} gives "premier", "deuxieme", ... "vingtieme"
614 %                \Ordinal{counter} gives "Premier", "deuxieme" ...
615 %                \ordinale{counter} gives "premi\`ere", ...
616 %                \Ordinale{counter} gives "Premi\`ere", ...

617 %

618 % Macros to output messages:
619 %                \kbtypeout{msg} issue msg on console, translating or not
620 %                      the accent macros and not expanding the activated chars.
621 %                      Under control of \@kbspecials for 8-bit output

622 %                      translation possibility. Such package like
623 %                      kbconfig/keyboard can translate to the
624 %                      appropriate keyboard encoding. In fact \kbtypeout is
625 %                      equivallent to \kbIO[\typeout].
626 %                \kbIO[output_macro]{msg_text} allows to output the message
627 %                      either on log file (\wlog), or on console (\tyepout)
628 %                      or even on any file (\immediate\write...)

629 %

630 %--------------------
631 % \frenchwarnings let french issue its warnings, this is the default. This
632 %                 part has the followings sub-options:
633 %     Suboption: \frenchtrivsepwarnings let french inform the user when
634 %                      vertical spacing is not respected as requested in
635 %                      a non-standard environment. This is the default
636 %     Suboption: \nofrenchtrivsepwarnings ask french not to issue any warning
637 %                      regarding the vertical spacing requested by the
638 %                      user and not applied. This is the default when user
639 %                      choose his own values for spacing via \frtrivseplengths.
640 % \nofrenchwarnings instruct french to stop to issue messages.
641 %                   This syntax is probably not the final one.
642 %--------------------

643 % 644 %

645 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

646 %

647 %                  ===============================
648 %                  |       About typing          |
649 %                  ===============================
650 %% No code here, just an advice.

651 %%

652 %% Inputing French punctuation you must type a space:
653 %% - before a double punctuation (! ? ; :)
654 %% - before >>
655 %% - after << ; :
656 %% Double " or single quoting ` ' as well as single guillemets < > must not
657 %% be used in french.
658 %% Type ... normally (instead of \dots or \ldots).
659 %% Respect French abbreviations like:
660 %% \hbox{c.-\`a-d.} /  \emph{i.e.} /  p.ex. / \etc. /   cf.   /    id.   /
661 %%     p.i. / p.o. / doc. / chap. /  part. /  vol. / paragr. / R.S.V.P. / ...

662 %%

663 %% Please apply these allmost elementary (and historical) rules.

664 %%

665 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

666 %

667 \def\@txt@msg#1{#1}% Just get arg and remove {}.
668 \def\@gobbleopt[#1]{}%
669 \def\f@issue#1#2{#1{#2}\@ifnextchar[{\@gobbleopt}{}%]

670 }%

671 %#<
672 % Firstly we add the material to use the "msg" package for localization.
673 \def\@tempc{%
674 \def\f@issue##1##2{\f@issue@[##1]##2\void}% The local \issuemsg macro.

675 %                                     % which will call the real one;
676  % #1 is the macro message required.
677  % #2 is the message header + msg number
678  %    such as "^^J -234-", just message
679  %    number (234) is kept.
680 \def\f@issue@[##1]##2-##3-##4\void{\issuemsg[##1]##3(french)}%
681 \PassOptionsToPackage{french}{msg}%
682 \ifx\LdfInit\@undefined%
683  \RequirePackage{msg}% Usually, load the msg package.
684 \else% But with Babel, dont use \usepackage or such,
685  \let\@GOfrench\@currname% Save current package name.
686  \xdef\@currname{msg}% Set package req.
687  \def\intern@lc@llfrom{\frenchpack}% Say him it's an internal/kernel call.
688  \let\fp@languagename\languagename% Save current language name.
689  \ifx\documentclass\@twoclasseserror% When not a kernel case
690  \def\languagename{french}% force French for the msg package.
691  \fi%
692  \@@input msg.sty% and input it now.
693  \let\languagename\fp@languagename% Reset current language name.
694  \let\fp@languagename\undefined%
695  \let\intern@lc@llfrom\undefined%
696  \let\@currname\@GOfrench% Reset original package name.
697 \fi%
698  }%\@tempc
699 \def\@tempd{\def\f@issue##1##2{\@ifnextchar[{\@gobbleopt}{}%]

700 }%

701  }%\@tempd
702 % Prepare to compare \jobname and license file name.
703 \edef\@tempa{\expandafter\noexpand\csname str-\jobname\endcsname}%
704 \edef\@tempb{\expandafter\noexpand\csname str-frlicense\endcsname}%
705 % FrenchPro requires msg.sty and *-msg.tex files
706 \ifx\@tempa\@tempb% but only for typesetting a document.
707 \IfFileExists{msg.sty}{\@tempc}{\@tempd}\else%
708 \IfFileExists{msg.sty}{\@tempc}{% Avoid loading it if msg.sty doesn't exist.
709  \typeout{^^J -81- WARNING: "msg" package not found;%
710 ^^J\space\space\space\space\space\space continuing without message texts.}%

711 }%

712 \fi%
713 %#>
714 \newif\ifECM%
715 % Here come \if-switches codes in case of french.sty badly initiated
716 \def\ErrFrench{\f@issue\@fW{-26- %
717  %\@txt@msg{Erreur d\'etect\'ee dans \frenchname.sty !}%
718  %\@txt@msg{(voir p.ex. le fichier language.dat)}%
719  }}%
720 \def\ifFTY{\ErrFrench}\def\ifFTR{\ErrFrench}\def\ifFG{\ErrFrench}%
721 \def\ifFLA{\ErrFrench}\def\ifFMA{\ErrFrench}\def\ifFH{\ErrFrench}%
722 \def\ifArG{\ErrFrench}\def\ifFTSW{\ErrFrench}\def\ifFW{\ErrFrench}%

723 %

724 \edef\GOfrench{`\string @}% temp def further correctly defined
725 \ifnum\catcode\GOfrench=11% mods of code proposed by DT that
726  \let\resetat\relax% accepts also that @ were active
727 \else\edef\resetat{\noexpand\catcode\GOfrench=\the\catcode\GOfrench}%

728  \makeatletter\fi%

729 %

730 \let\@currnameORI\@currname% save current package name
731 \xdef\@currname{\frenchname}% set pasckage req.
732 {\def\'{\string\'}% to avoid \accent@spacefactor=\undefined (in pr\'e-)
733  \ProvidesPackage{\frenchname}%
734  [\FSfd\space The \frenchpack\space package /\FSfv/]%

735 }%

736 \def\GOfrench{babel}\ifx\@currnameORI\GOfrench% allow Babel to load me
737  \ifx\undefined\babel@core@loaded\input babel.def\relax\fi%
738  \ifx\undefined\babel@core@loaded% still undefined (>3.5)?
739  \let\babel@core@loaded\main@language\fi%
740  \fi%
741 %#<
742 %\let\FSfd=\undefined% let it defined for possible patch test.
743 \def\@tempa#1V#2,#3\@nil{\def\@FSfv{#2}}\expandafter\@tempa\FSfv\@nil%
744 %#>
745 \let\FSfv=\undefined% return to the pool
746 \IfFileExists{frpatch.sty}{\def\FSfd@patch{unknown}}{\let\FSfd@patch\FSfd}%

747 %

748 \if@compatibility% provide error msg with 2.09 emulation
749  \f@issue\typeout{^^J -68-
750  %\@txt@msg{ERROR: \frenchpack\space is no more running }%
751  %\@txt@msg{with 2.09 emulation, sorry!}%
752  }\expandafter\stop%
753 \fi%

754 %

755 \ifx\l@french\undefined\f@issue\typeout{^^J -20-
756  %\@txt@msg{WARNING:}%
757  %\@txt@msg{the French language is undefined in your format.}%

758 }%

759 \fi%

760 %

761 \fontencoding{\encodingdefault}\selectfont%
762  \def\@temp@{OT1}\ifx\@temp@\f@encoding%
763  \def\@temp@{\global\ECMfalse}%
764  \else\def\@temp@{LO1}\ifx\@temp@\f@encoding%
765  \def\@temp@{\global\ECMfalse}%
766  \else%  could be LY1
767  \def\@temp@{\global\ECMtrue}%
768  \fi%
769  \fi%
770 \@temp@%
771 \def\@tempa{\let\ifEightBitOutput\iffalse}%
772 \ifx\EightBitOutputfalse\undefined\expandafter\@tempa\fi%
773 \ifECM\else\ifx\charsubdef\undefined%
774  \def\@tempa{\noexpand\dGs}%
775  \ifx\@tempa\dGs\else%
776  \ifx\@kb@msgXXIX\relax\else% Don't issue if already done.
777  \f@issue\typeout{^^J -29- %
778  %\@txt@msg{***Warning***\string: TeX engine in use along with CM fonts }%
779  %\@txt@msg{(as in current TeX format) isn't sufficient to hyphenate }%
780  %\@txt@msg{words containing diacritics (like in French).}%

781 }%

782  \let\@kb@msgXXIX\relax%
783  \fi%
784  \fi%
785 \fi\fi%
786 \ifx\undefined\@dblarg% ....................................... \@dblarg
787 \long\def\@dblarg#1{\@ifnextchar[{#1}{\@xdblarg{#1}}}}%
788 \long\def\@xdblarg#1#2{#1[{#2}]{#2}}%
789 \fi%
790 \newdimen\@FrDimen% general def for the style
791 \def\usualmessages{\let\ifEightBitOutput\iftrue}%
792  \ifnum\inputlineno=-1\def\@o@l{.}% may be negative
793  \else\def\@o@l{ (\`a la ligne \the\inputlineno).}\fi%
794 \expandafter\let\expandafter\@aiguORI\expandafter=%
795  \csname OT\string1\string\'\endcsname%
796 \expandafter\let\expandafter\@gravORI\expandafter=%
797  \csname OT\string1\string\`\endcsname%
798 \expandafter\let\expandafter\@acchORI\expandafter=%
799  \csname OT\string1\string\^\endcsname%
800 \expandafter\let\expandafter\@tremORI\expandafter=%
801  \csname OT\string1\string\"\endcsname%
802 \expandafter\let\expandafter\@cediORI\expandafter=%
803  \csname OT\string1\string\c\endcsname%
804 %#< This is a little code to avoid braces to be striped when the token
805 %   is provided via a macro parameter.
806 \def\@PreserveBraces[#1#2]%................................... \@PreserveBraces
807  {\ifcat\noexpand#1$ #1#2\def\@temp@{}%
808  \else\def\@temp@{#2}%
809  \ifx\@temp@\empty\def\@temp@{#1}%
810  \else\def\@temp@{{#1#2}}\fi%
811  \fi\expandafter\@temp@}%

812 %

813 \def\@temp@{lplain-bilingual}% E.P. wrong old def checking
814 \ifx\fmtname\@temp@\f@issue\typeout{-64- %
815  \@txt@msg{ERROR: invalid \string\fmtname\space in lplain.tex}%
816  }\stop\fi%

817 %

818 \let\@FrReg\iftrue\def\@FrVal{}%
819 \begingroup%
820 \let\@FrReg\iftrue\def\@FrVal{0pt}\let\@FrGo\endgroup%
821 \let\ladate\@tempcnta\let\lasem\@tempcntb%
822 \def\TOdate#1#2#3{\ladate=#2\advance\ladate by -2000\multiply\ladate by 100%
823  \advance\ladate by 2000\advance\ladate by #18000%
824  \lasem=#3\multiply\lasem by 4%
825  \if#12\advance\lasem by -4\edef\@tempb{\string>}%
826  \else\advance\lasem by 4\edef\@tempb{\string<}\fi%
827  \advance\ladate by \lasem%
828  \let\laver=\@tempcntb\laver=\@FSfv%
829  \if#12\advance\laver by 200\else\advance\laver by 400\fi
830  \multiply\laver by 100000%
831  \let\lakey=\laver\advance\lakey by \ladate%
832  \@FrDimen\lakey sp%
833  \def\@tempd{\ifdim0pt=\@FrVal\else%

834  \ifdim\@FrDimen\@tempb\@FrVal\def\@tempa{}%
835  \else\ifdim\@FrDimen=\@FrVal\def\@tempa{}%
836  \fi\fi\fi}%
837  \@FrReg\def\@tempa{\let\@FrReg=\iffalse%
838  \def\@FrGo{\endgroup\stop}%
839  \edef\@FrVax{NO MORE }\let\@tempg\fi}%
840  \expandafter\@tempd%
841  \fi\@tempa%

842 }%

843 \def\@tempc{\endlinechar=-1\def\@FrVal{}%
844  \read\@inputcheck to \@FrVal%
845  \ifeof\@inputcheck\endgroup%
846  \typeout{*** ERROR: frlicense.dat is empty\string!}\stop%
847  \fi%
848  \read\@inputcheck to \@FrVal%
849  \@FrVal\def\@FrVal{0pt}\read\@inputcheck to \@FrVal%
850  \ifx\@FrVal\empty\def\@FrVal{0pt}\edef\@FrVax{UN}\fi%
851  \TOdate{2}{\the\year}{\the\month}\edef\@tempe{\the\@FrDimen}%
852  \ifdim0pt=\@FrVal\edef\@FrVax{UN}\fi%
853  \read\@inputcheck to \@FrVal%
854  \ifx\@FrVal\empty\def\@FrVal{0pt}\edef\@FrVax{UN}\fi%
855  \@FrReg\ifx\@FrVal\empty\def\@FrVal{0pt}\fi%
856  \TOdate{4}{\the\year}{\the\month}%
857  \fi
858  \ifdim0pt=\@FrVal\edef\@FrVax{UN}\fi%
859  \read\@inputcheck to \@FrVal%
860  \endlinechar`\^^M%

861 }%

862 \openin\@inputcheck=frlicense.dat %
863 \let\@tempa\relax\def\@Ffnt#1{\f@issue%
864  \typeout{-2- %\@txt@msg{#1 file not found.}%
865  }[#1]}%
866 \ifeof\@inputcheck\@Ffnt{frlicense.dat}\def\@tempa{\endgroup\stop}\fi%
867 \@tempa\@tempc%
868 \closein\@inputcheck%
869 \def\@tempa{\let\@FrReg\iffalse}%
870 \def\@tempb{0pt}%
871 \ifx\@FrVal\empty\def\@FrVal{0pt}\fi%
872 \ifx\@FrVal\@tempb\@tempa\TOdate{4}{\the\year}{\the\month}%
873 \immediate\openout\@inputcheck=frlicense.dat %
874 \catcode`\%=12\immediate\write\@inputcheck{\string%%
875 frlicense.dat file providing license numbers for FrenchPro}\catcode`\%=14
876 \immediate\write\@inputcheck{\noexpand\makeatletter\noexpand\let%
877  \noexpand\@nodocument\noexpand\@@end}%
878 \immediate\write\@inputcheck{\@tempe}\advance\@FrDimen by 5 sp%
879 \immediate\write\@inputcheck{\the\@FrDimen}%
880  \edef\@FrVal{ONE MONTH TRIAL (starting \the\year/\the\month/\the\day)}%
881 \immediate\write\@inputcheck{\@FrVal}%
882 \immediate\write\@inputcheck{This is a private file. Never copy. %
883  never modify.}%
884 \immediate\write\@inputcheck{Ne jamais modifier, ni recopier ce fichier.}%
885 \immediate\closeout\@inputcheck\let\@FrGo\endgroup%
886 \fi%

887 \def\@tempa{ONE}%
888 \def\@tempc#1 #2\@nil{\def\@tempc{#1}}\expandafter\@tempc\@FrVal{} \@nil%
889 \def\@tempb{\let\@FrReg\iffalse\edef\@FrVax{UN}}%
890 \ifx\@tempc\@tempa\@tempb\fi%
891 \def\@tempb{\let\@FrReg\iffalse\edef\@FrVal{\@FrVax REGISTERED COPY}}%
892 \ifx\@FrGo\endgroup\else\@tempb\fi%
893 \@FrReg\f@issue%
894 \typeout{^^J -**a- %\@txt@msg{\frenchpack\space serial number is *\@FrVal*.}%

895 }%

896 \else%
897 \expandafter\f@issue%
898 \expandafter\typeout{^^J -**b- %\@txt@msg{-**- \@FrVal\space of \frenchpack.}%

899 }%

900 \fi\@FrGo%
901 %#>
902 \let\@tempc\relax% AmS bug: \@tempc=\if.

903 %

904 \ifx\today\undefined\let\today\cejour\fi% for lettre.cls
905 \ifx\today\undefined\f@issue\typeout{^^J -52- %
906 %\@txt@msg{Error: the \frenchpack\space package doesn't run in }%
907 %\@txt@msg{such minimal document class, sorry!}%
908  }\expandafter\stop%
909 \fi%
910 {\def\GOfrench{\global\let\ifEightBitOutput\iffalse}% force seven bits
911 \let\add@accent\@gobble\edef\@tempa{\`{}}%
912 \def\@tempb{{\setbox \@tempboxa \hbox {}\accent 18 }}%
913 \ifx\@tempa\@tempb% hum, OT1 is just loaded, so no expand.
914  \expandafter%
915  \GOfrench% and force seven bits for all \@fw messages.
916 \fi%

917 }%

918 % Macro to send a message without header:
919 \def\@fW#1{{\let\@nobraces\@firstofone%
920  \ifEightBitOutput%
921  \setbox\@tempboxa\hbox{\`\space}% For \add@accent expansion.
922  \ifx\charsubdef\undefined\else% case MlTeX only
923  \let\add@accent\@gobble% Avoid redef. by fontenc loading.
924  \def\'##1{\expandafter\@nobraces\@aiguORI##1}%
925  \def\`##1{\expandafter\@nobraces\@gravORI##1}%
926  \def\^##1{\expandafter\@nobraces\@acchORI##1}%
927  \fi%
928  \else%
929  \let\protect\string\let\add@accent\@gobble%
930  \fi%
931  \edef\@tempa{#1}\typeout{\@tempa}}}%
932 {\def\ier{er}% this is the French typographic abbreviation of "st"
933 \f@issue%
934 \@fW{^^J -23- %\@txt@msg{Extension \string : \frenchpack\space}%
935  %\@txt@msg{\frenchstyleid\space(B.Gaulle)}%

936 }% 937 }% 938 %

939 \let\ifFW\iftrue% Start with (warning) messages

940 \def\@fw#1{{\let\@NoFr\relax% Avoid any loop inside \kbtypeout.
941  \ifFW\kbtypeout%..................................... French warning
942  {^^J \frenchname.sty \string : #1\@o@l}%
943  \fi%
944  }}% Notice: after \begin{document} there is no more need to
945  % protect active characters against expansion.
946 \ifx\kbtypeout\undefined%
947 % Notice that \kbtypeout can be set to \relax\egroup by keyboard.sty.
948 \def\@kbtypeout[#1]#2{\ifEightBitOutput\let\@typeset@protect\protect\fi%
949  \let\@inpenc@undefined@\@gobble% To avoid loop.
950  \edef\f@tempa{#2\empty}% Expand it now and type out.
951  #1{\f@tempa}\egroup}%
952 \def\kbtypeout{\kbIO[\typeout]}%..................................  \kbtypeout
953 \def\kbIO{\bgroup%................................................  \kbIO
954  \ifECM\fontencoding{OT1}\selectfont\fi% Basic fontencoding needed.
955  %\nofrenchtypography% To apply only after \begin{document}.
956  \let\@nobraces\@firstofone% could be provided separately,
957  \let\protect\string%
958  \ifEightBitOutput% eg by kbconfig.
959  \def\'##1{\expandafter\@nobraces\@aiguORI##1}%
960  \def\`##1{\expandafter\@nobraces\@gravORI##1}%
961  \def\^##1{\expandafter\@nobraces\@acchORI##1}%
962  \def\"##1{\expandafter\@nobraces\@tremORI##1}%
963  \def\c##1{\expandafter\@nobraces\@cediORI##1}%
964  \csname @kbspecials\endcsname% Translation settings.
965  \else% 7-bit output wanted.
966  \let\add@accent\@gobble%
967  \def\set@display@protect{\let\protect\noexpand}% Have spaces!
968  \fi%
969  \@kbtypeout}%
970 \fi%
971 \ifx\@kbtypeout\undefined% A default \@kbtypeout macro.
972  \def\@kbtypeout[#1]#2{#1{#2}\egroup}%
973 \fi%
974 \def\@tempb{\let\ifEightBitOutput\iffalse}%
975 \ifx\kbtypeout\typeout% If no kb output encoding then set a correct \@fw cs.
976 \long\def\@tempa{\add@accent{19}}% Case standard OT1 (re)loaded
977 \ifx\@tempa\@aiguORI\expandafter\@tempb\fi% then force 7-bit.
978 \def\@fw#1{\ifFW\bgroup\let\@nobraces\@firstofone%
979  \ifEightBitOutput%
980  \ifx\charsubdef\undefined\else%
981  \def\'##1{\expandafter\@nobraces\@aiguORI##1}%
982  \def\`##1{\expandafter\@nobraces\@gravORI##1}%
983  \fi%
984  \else%
985  \let\protect\string\let\add@accent\@gobble%
986  \fi%
987  \@kbtypeout[\typeout]{^^J \frenchname.sty \string : #1\@o@l}%
988  \fi%
989  }% Notice: after \begin{document} there is no more need to
990 \fi

991 %

992 \def\@Ffnt#1{\f@issue\@fw{-2- %\@txt@msg{fichier #1 non trouv\'e}%

 993  }[#1]}%
 994 \def\@finput#1{\InputIfFileExists{#1}{}{\@Ffnt{#1}}}%
 995 \def\@NoFr{\f@issue\@fw{-3- %
 996  %\@txt@msg{\frenchpack\space n'est pas actif ici !}%
 997  }}%
 998 \let\ifFrench\iffalse%

999 %

1000 \ifx\addto\undefined%.............................................  \addto
1001 \def\addto#1#2{\ifx#1\@undefined\def#1{#2}%
1002  \else\ifx#1\relax\def #1{#2}%
1003  \else{\toks@\expandafter{#1#2}%
1004  \xdef#1{\the\toks@}}%
1005  \fi%
1006  \fi%

1007 }%

1008 \fi%
1009 \def\fraddto#1#2{\addto{#1}{#2}%....................................  \fraddto
1010  \ifFrench\french\else\english\fi}%
1011 % The following macro designed to protect against expansion.
1012 \ifx\MakeRobustCommand\undefined%.......................... \MakeRobustCommand
1013 \def\MakeRobustCommand#1{\expandafter\expandafter\expandafter%
1014  \let\expandafter\expandafter\csname #1 fp\endcsname%
1015  \csname #1\endcsname%
1016  \expandafter%
1017  \edef\csname #1\endcsname{\expandafter\protect%
1018  \expandafter\noexpand\csname #1 fp\endcsname}

1019 }%

1020 \fi%

1021 %

1022 \ifx\DocInput\undefined\else%......................................  \DocInput
1023  \let\fr@di\DocInput\def\DocInput#1{% for ltxdoc.cls
1024  \ifFrench\english\fr@di{#1}\french%
1025  \else\fr@di{#1}%
1026  \fi\relax}%
1027 \fi%
1028 \ifx\url\undefined\else%................................................  \url
1029  \let\fr@ul\url\def\url#1{% for hyperref package
1030  \ifFrench\english\fr@ul{#1}\french%
1031  \else\fr@ul{#1}%
1032  \fi\relax}%
1033 \fi%
1034 \ifx\xy\undefined\else%..................................................  \xy
1035  \let\fr@xy\xy\def\xy{% for XY-pic and diagxy packages
1036  \ifFrench\nofrenchguillemets\DFPdp\fi\fr@xy}%
1037 \fi%
1038 \ifx\hyper@n@rmalise\undefined\else%.............................. \href
1039  \let\fr@hne\hyper@n@rmalise\def\fr@hnr#1#2{\fr@hne{#1}{#2}}%. \hyperref
1040  \def\hyper@n@rmalise{\ifFrench\english\expandafter\fr@hnr%.. \hyperimage
1041  \else\expandafter\fr@hne\fi}%
1042 \fi%
1043 \ifx\PDFSCR@Info\undefined\else% Remove last dot in sect. numbers of pdfscreen.
1044 \def\@seccntformat#1{\protect\textcolor{section\thesection@level}%
1045  {\expandafter\upshape\csname the#1\endcsname}\quad}%

1046 \fi%
1047 % The following should be obsolated:
1048 \ifx\listing\undefined\else%........................................  \listing
1049  \let\fr@li\listing% Save current definition of \listing.
1050 %\newcommand\listing[2][1]{...} definition inside moreverb package, i.e.:
1051 \edef\listing{\noexpand\@protected@testopt\noexpand\listing%
1052  \expandafter\noexpand\csname\string\listing\endcsname {1}}%
1053 %% Old moreverb def: \def\listing{\@ifnextchar[{\@listing}{\@listing[1]}}%
1054  \ifx\fr@li\listing%
1055  \def\listing{% for moreverb package
1056  \ifFrench\expandafter\english\expandafter\fr@li%
1057  \else\expandafter\fr@li%
1058  \fi}%
1059  \else%
1060  \long\def\listing{% for listing package
1061  \ifFrench\expandafter\english\expandafter\fr@li%
1062  \else\expandafter\fr@li%
1063  \fi\relax}%
1064  \fi%
1065 \fi%
1066 \ifx\inputlisting\undefined\else%..............................  \inputlisting
1067  \let\fr@PL\lst@ProcessListing\def\lst@ProcessListing[#1]{%
1068  \ifFrench\english\fr@PL[#1]\french%
1069  \else\fr@PL[#1]%
1070  \fi\relax}%
1071 \fi%
1072 % For listings package > (or equal to) V0.2000
1073 \ifx\lstlisting\undefined\else%..................................  \lstlisting
1074  \let\fr@lsi\lstlisting\long\def\lstlisting{% for listings package
1075  \ifFrench\expandafter\english\expandafter\fr@lsi%
1076  \else\expandafter\fr@lsi%
1077  \fi}%
1078 \fi%
1079 \ifx\lstinputlisting\undefined\else%........................  \lstinputlisting
1080  \let\fr@PL\lst@ProcessListing\def\lst@ProcessListing[#1]{%
1081  \ifFrench\english\fr@PL[#1]\french%
1082  \else\fr@PL[#1]%
1083  \fi}%
1084 \fi%

1085 %#<

1086 \def\ifFrench#1\fi{\@NoFr}% a temporary definition for error messages
1087  %(\endnonfrench remains \undefined)
1088 \def\originalinput#1{\ifFrench\english\@finput{#1}\french%..... \originalinput
1089  \else\@finput{#1}\fi\relax}%
1090 \def\originaloutput[#1]{%..................................... \originaloutput
1091  \bgroup\ifFrench\english\fi%
1092  \def\@riginalout##1##2{\immediate\write##1{##2}\egroup}%
1093  \@riginalout{#1}}%
1094 \let\ifFLA\iffalse% We need \ifFLA now
1095 \@ifundefined{printindex}{% makeidx.sty is included (as of 20-jan-87)
1096  \def\see#1#2{\seename%i assume this macro is defined in non-english sty.
1097  \/ {#1}}%.........................................\see
1098  \def\printindex{\clearpage%................................ \printindex

1099  \ifx\hyper@refstepcounter\undefined\else%
1100  \stepcounter{subparagraph}%
1101  \hyper@refstepcounter{subparagraph}%
1102  \fi%
1103  \addcontentsline{toc}{chapter}%
1104  {\protect\indexname}%
1105  {\let\@ti\theindex%........................ \theindex
1106  \def\theindex{\@ti\ifFLA\thispagestyle{french}\fi}%
1107  \@finput{\jobname.ind}}}}{}%
1108 \ifx\printnomenclature\undefined\else%................... \printnomenclature
1109 \let\@pne\printnomenclature% No French warnings with the nomenclature
1110 \def\printnomenclature{\nofrenchwarnings\@pne}% package.
1111 \fi%
1112 \ifx\thebibliography\undefined\else%
1113 \let\@tbs\thebibliography%
1114 \let\fr@savebib\thebibliography%
1115 \long\def\thebibliography#1{%..............USUAL........... \thebibliography
1116  \ifFLA%
1117  \ifx\hyper@refstepcounter\undefined\else%
1118  \stepcounter{subparagraph}%
1119  \hyper@refstepcounter{subparagraph}%
1120  \fi%
1121 \ifx\bibname\undefined%
1122  \addcontentsline{toc}{chapter}{\refname}%
1123 \else%
1124  \addcontentsline{toc}{chapter}{\bibname}%
1125 \fi%
1126  \fi%
1127  \@tbs{#1}%

1128 }%

1129 \ifx\bt@stepcnt\undefined%
1130 \else% bibtopic mods adapted for jurabib too.
1131 % A specific recoding is made for ........BIBTOPIC.........  \thebibliography
1132 % to allow bibtopic to extract de first three tokens which
1133 % begin \thebibliography (e.g. \section*{\refname}).
1134 \let\thebibliography\@tbs%
1135 \let\bt@saveitem\bibitem%
1136 \AtBeginDocument{\let\bt@savebib\fr@savebib}% Give back thebibliography.
1137 \def\@tempd#1#2#3#4\void{\def\@tempa{\noexpand#1}\def\@tempb{\noexpand#2}%
1138  \def\@tempc{\noexpand#3}\def\@@tbs##1{#4}}%
1139 \expandafter\@tempd\thebibliography{\string#1}\void%
1140 \edef\thebibliography#1{\@tempa\@tempb\@tempc%
1141  \noexpand\@@tbs{#1}\noexpand\@tbs}%
1142 \def\@tbs{\ifFLA%
1143  \ifx\hyper@refstepcounter\undefined\else%
1144  \stepcounter{subparagraph}%
1145  \hyper@refstepcounter{subparagraph}%
1146  \fi%
1147  \ifx\bibname\undefined%
1148  \addcontentsline{toc}{chapter}{\refname}%
1149  \else%
1150  \addcontentsline{toc}{chapter}{\bibname}%
1151  \fi%

1152  \fi%

1153 }%

1154 \fi% bibtopic test.
1155 \fi% \thebibliography defined?

1156 %

1157 \def\ifFLA{\ErrFrench}% reset it to normal value here
1158 \@ifundefined{disableindex}{}% Ok index.sty is not loaded;
1159  {% Otherwise we must redefine its \see
1160  \def\see#1#2{\seename\/ {#1}}% which contains \emph{\seename}.

1161 }%

1162 \@ifundefined{seealso}{%cf TUGboat V12#2 p290 and V13#1 p 95 .. \seealso
1163  \def\subsee#1#2{\seealsoname% i assume this macro is defined in non-engl.
1164  \/ {#1}}% the #2 consumes a comma or \dotfill
1165  \let\nosee\@gobble% consumes the page number
1166  \def\seealso{\bgroup\edef\@temp@{}\@ifNextNB[{\see@@so}%] case index.sty
1167  {\see@lso}}%
1168  \def\see@lso#1#2{\expandafter%
1169  \index\@temp@{#1!zzzzz@\protect\subsee{#2}|nosee}\egroup}%
1170  \def\see@@so[#1]{\edef\@temp@{[#1]}\see@lso}}{}%

1171 %#>

1172 % \if switches mechanism for french typography

1173 %

1174 \def\@ifFTYfalse{\let\ifFTY\iffalse}%
1175 \def\@ifFTYback{\let\ifFTY\if@Back}%
1176 \let\if@PMF\iffalse% PMF siwtch off for french light.

1177 %#<

1178 % Poor man defs

1179 %

1180 \newif\if@PMF\@PMFfalse%
1181 \def\pmfrench{\@PMFtrue\f@issue\@fw{-4- %
1182  %\@txt@msg{entering now "Poor-Man-French-Style" way}%

1183 }%

1184  \def\frenchname{pmfrench}}%

1185 %#>

1186 % Font processing

1187 %

1188 % look at \GOfrench for \footnotesize, \Huge, \sm@ller, \l@rger and co.

1189 %

1190 % information messages:
1191 \f@issue%
1192 \@fW{ -24- %
1193  %\@txt@msg{\frenchname.sty utilise dans ce document le codage de fonte }%
1194  %\@txt@msg{\f@encoding.^^J}%

1195 }% 1196 %

1197 \f@issue%
1198 \@fW{ -25- %\@txt@msg{\frenchname.sty affiche ici ses messages en }%
1199 %\@txt@msg{\ifEightBitOutput8-bits.\else7-bits << \string\`a la TeX >>.\fi}%
1200 %\@txt@msg{^^J^^J}%

1201 }% 1202 %

1203 %For testing purposes ........................................  \CheckSevenBits
1204 \def\CheckSevenBits/#1{\def\@tempa##1##2/##3{\ifx##2\empty\else%

1205 \f@issue%
1206 \@fw{-51- %
1207  %\@txt@msg{ERREUR : ce document n'a pas \'et\'e converti en 8-bits...}%

1208 }%

1209 \expandafter ##3\fi}\expandafter\@tempa\noexpand#1}%

1210 %

1211 \@ifundefined{tt}{\def\tt{\fontfamily{\ttdefault}\selectfont}}{}%........   \tt

1212 %#<

1213 % What font use for guillemets?
1214 % if \guillemetsinallfonts: the current font
1215 % if \guillemetsinroman: 1- try EC 2- or lasy  3- otherwise math simulation
1216 \let\ifGIAF\iftrue% by now assume guillemets in all fonts
1217 \@ifundefined{ly}% try to define \ly with NFSS ...........................  \ly
1218 {% Allways load latexsym in case of any OT1 usage.
1219  \ifx\symlasy\undefined% if nfltxsym option not used
1220  \ifx\undefined\babel@core@loaded%
1221  \RequirePackage{latexsym}% load LaTeX symbols defs
1222  \else% special case Babel (dont use \usepackage)
1223  \xdef\@currname{latexsym}% set package req.
1224  \@@input latexsym.sty\@@input ulasy.fd%
1225  \fi%
1226  \fi%
1227  \def\@ly{\fontencoding{U}\fontfamily{lasy}% set encoding & family
1228  \ifGIAF\else\fontseries{m}\fontshape{n}\fi\selectfont}%
1229  \def\ly{\ifFG\ifECM\rm\else\@ly\fi\fi}% default is rm otherwise lasy.
1230  }{}%

1231 %

1232 \ifx\guillemetsfont\undefined%
1233 \def\guillemetsfont{\fontfamily{\rmdefault}%................... \guillemetsfont
1234  \fontseries{m}\fontshape{n}\selectfont}%
1235 \fi%
1236 \def\@gfnt{\guillemetsfont}% Default guillemets' font is \rm.

1237 %#>

1238 % \string definitions and saved chars

1239 %

1240 \edef\lq{\string`}\edef\rq{\string'}% as usual in LaTeX .............. \lq  \rq
1241 \let\@cilq='% this will be the catcode independent left quote
1242 \edef\lqq{\string`\string`}\edef\rqq{\string'\string'}%.............. \lqq \rqq
1243 \edef\pointvirgule{\string;}%.................................... \pointvirgule
1244 \edef\deuxpoints{\string:}%........................................ \deuxpoints
1245 \let\@cidp=:% this will be the catcode independent double point
1246 \edef\pointexclamation{\string!}%...........................  \pointexclamation
1247 \edef\pointinterrogation{\string?}%.......................  \pointinterrogation
1248 \edef\inferieura{\string<}%.......................................  \inferieura
1249 \edef\superieura{\string>}%.......................................  \superieura
1250 \edef\dittomark{\string"}%.........................................  \dittomark
1251 \let\f@par\par% save it for \lettrine inside a list environment.
1252 \let\@SLQ\lq%
1253 \def\@SRQ@{^\bgroup\prim@s}%
1254 \def\@SRQ{\ifmmode\expandafter\@SRQ@\else\rq\fi}%

1255 %#<

1256 \let\@gotl\guillemotleft%
1257 \let\@gotr\guillemotright%

1258 \def\@temp@{LO1}\ifx\@temp@\f@encoding%
1259  \else\edef\@temp@{OT1}\fi%
1260 \def\@tempa#1{\expandafter\relax% define OT1-guillemets or LO1 ones
1261  \expandafter\global%
1262  \expandafter\def%
1263  \csname\@temp@\string#1\endcsname}%
1264 \@tempa{\guillemotleft}{\let\ifECM\iffalse%
1265  \ifFG\ly(\kern-0.20em(\else<<\fi}%
1266 \@tempa{\guillemotright}{\let\ifECM\iffalse%
1267  \ifFG\unskip% last kern was not in the correct font.
1268  \ly\kern+0.20em)\kern-0.20em)%
1269  \else>>%
1270  \fi}%
1271 \let\@LSG\inferieura\def\@DOG{\inferieura\inferieura}%
1272 \let\@RSG\superieura\def\@DFG{\superieura\superieura}%
1273 \def\@SOC{\string[% ] emacs

1274 }%

1275 \def\@SFC{% [ emacs
1276  \string]}%
1277 \edef\@LP{\ifECM023\else(\fi% ) emacs

1278 }%

1279 \edef\@RP{% ( emacs
1280  \ifECM024\else)\fi}%

1281 %#>

1282 % Define Options ............................  French style OPTIONS definitions

1283 %

1284 \newif\ifFH%
1285 \let\@noBDfr\@nodocument% options can only be set after \begin{document}
1286 \def\frenchhyphenation{\@noBDfr}%  or in \usersfrenchoptions
1287 \def\nofrenchhyphenation{\@noBDfr}%
1288 \def\frenchtypography{\@noBDfr}%
1289 \def\regularmathcomma{\@noBDfr}%
1290 \def\frenchmathcomma{\@noBDfr}%
1291 \def\frenchwarnings{\@noBDfr}%
1292 \def\nofrenchwarnings{\@noBDfr}%
1293 \def\nofrenchtypography{\@noBDfr}%
1294 \def\nofrenchtranslation{\@noBDfr}%
1295 \def\frenchtranslation{\@noBDfr}%
1296 \ifx\RIfM@\undefined% used before \begin{document} by AmS classes
1297 \def\nofrenchguillemets{\@noBDfr}%
1298 \def\frenchguillemets{\@noBDfr}%
1299 \def\nofrenchbguillemets{\@noBDfr}%
1300 \def\frenchbguillemets{\@noBDfr}%
1301 \fi%
1302 % Defaultly, layout is not constant from one language to another.
1303 \global\let\ifCLAfrench\iffalse% No defaultly constant French page layout.
1304 \def\ConstantLayout{\@noBDfr}%
1305 %\def\nombre{\@noBDfr}%
1306 %\def\WindowsUnits{\@noBDfr}%
1307 %\def\FileName{\@noBDfr}%
1308 %\def\theFileName{\@noBDfr}%

1309 %#<

1310 \def\originalmathcomma{\@noBDfr}%

1311 \def\everyparguillemetsremoved{\@noBDfr}%
1312 \def\Numeros{\@noBDfr}%
1313 \def\order{\@noBDfr}%
1314 \def\endorder{\@noBDfr}%
1315 \def\sommairename{\@noBDfr}%
1316 \def\versatim{\@noBDfr}%
1317 \def\endversatim{\@noBDfr}%

1318 %#>

1319 \def\nofrenchmacros{\@noBDfr}%
1320 \def\frenchmacros{\@noBDfr}%
1321 \def\automaticlettrine{\@noBDfr}%
1322 \def\noautomaticlettrine{\@noBDfr}%
1323 \def\noeveryparguillemets{\@noBDfr}%
1324 \def\everyparguillemets{\@noBDfr}%
1325 \def\nofrenchlayout{\@noBDfr}%
1326 \def\frenchlayout{\@noBDfr}%
1327 \def\indentfirst{\@noBDfr}%
1328 \def\nonindentfirst{\@noBDfr}%
1329 \def\NouveauLangage{\@noBDfr}%
1330 \def\letpunctutionactivefor{\@noBDfr}%
1331 % This dirty hack to bypass ugly latex209 output routine of seminar slides.
1332 \def\@tempa{\let\ifarticle\iffalse}%
1333 \ifx\ifarticle\undefined\expandafter\@tempa\fi%
1334 \ifx\@seminarerr\undefined\else\ifarticle\else%
1335 \let\@soORI\shipout%
1336 \def\shipout#1#2{\def\@tempa{slide}\def\@tempb{slide*}%
1337  {\ifx\@tempa\@currenvir\let\protect\noexpand%
1338  \else\ifx\@tempb\@currenvir\let\protect\noexpand\fi%
1339  \fi%
1340  \@soORI#1#2}%
1341  \global\let\shipout\@soORI% just one time mod.

1342 }%

1343 \fi\fi% \@seminarerr
1344 % The new \hyphenation macro is used first at language.dat loading for frhyphex
1345 \let\h@yphenation\hyphenation% save original \hyphenation
1346 \long\def\f@hyphenation#1{\bgroup%
1347  \let\par\space% For \h@yphenation.
1348  \def\-{ }% Stops compound words.
1349  \let\allowhyphens\undefined% but not \allowhyphens.
1350  \csname accenthyphcodes\endcsname%
1351  \lowercase{\edef\@tempa{#1}}%
1352  \h@yphenation{\@tempa}\egroup}%

1353 %

1354 \def\@tempa{\let\iffrenchbibliography\iftrue}%
1355 \ifx\iffrenchbibliography\undefined\expandafter\@tempa\fi%

1356 %

1357 \ifx\nombre\undefined\else\let\@nomORI\nombre\fi%

1358 %

1359 \begingroup\obeyspaces%
1360 \gdef\@@nombre{\ifFTY\@mathcomma\obeyspaces\let =\,\fi}%
1361 \endgroup%
1362 \def\@nombre#1{\bgroup\let\ifFTY\iftrue\def\@tempa{#1}%
1363 \def\,{\ifmmode\mskip\thinmuskip\fi}%

1364 \if@filesw{\immediate\openout\@inputcheck=\jobname.tmp%
1365  \let\protect\noexpand%
1366  \ifmmode%
1367  \immediate\write\@inputcheck{\protect\makeatletter%
1368  \protect\@@nombre%
1369  \@tempa\ignorespaces}%
1370  \else%
1371  \immediate\write\@inputcheck{\protect\makeatletter%
1372  \protect\@@nombre%
1373  $\@tempa$\ignorespaces}%
1374  \fi%
1375  \immediate\closeout\@inputcheck%

1376 }%

1377  \immediate\openin\@inputcheck=\jobname.tmp%
1378  \immediate\read\@inputcheck to\@tempa%
1379  \immediate\closein\@inputcheck%
1380  \def\@tempa{{\input{\jobname.tmp}}}%
1381 \fi%
1382  \@tempa\egroup%

1383 }%

1384 % French Lite defs:
1385 \ifx\nombre\undefined\DeclareRobustCommand*{\nombre}{\@nombre}\fi%
1386 \ifx\WindowsUnits\undefined%....................................  \WindowsUnits
1387  \def\WindowsUnits{\@wu}\fi%

1388 %

1389 \def\FileName{\bgroup%..............................................  \FileName
1390  \def\@FNenc@loop##1##2{\@tempcnta`##1\relax%
1391  \loop\catcode\@tempcnta=11%
1392  \ifnum\@tempcnta<`##2\relax%
1393  \advance\@tempcnta\@ne%
1394  \repeat}%
1395  \@FNenc@loop\^^A\^^H%
1396  \@FNenc@loop\^^K\^^K%
1397  \@FNenc@loop\^^N\^^_%
1398  \@FNenc@loop\^^?\^^ff% 128-255
1399  \@FileName}%
1400 \def\@FileName#1{\gdef\theFileName{#1}\egroup}%................... \theFileName

1401 %

1402 \let\og\empty\let\fg\empty% Guillemets for French light:
1403 % Extrait de frenchb.ldf 2004/04/02 v1.6f on 2005/03/23:
1404  \def\FrenchGuillemetsFrom#1#2#3#4{%
1405  \DeclareFontEncoding{#1}{}{}%
1406  \DeclareFontSubstitution{#1}{#2}{m}{n}%
1407  \DeclareTextCommand{\guillemotleft}{OT1}{%
1408  {\fontencoding{#1}\fontfamily{#2}\selectfont\char#3}}%
1409  \DeclareTextCommand{\guillemotright}{OT1}{%
1410  {\fontencoding{#1}\fontfamily{#2}\selectfont\char#4}}}
1411  \def\CyrillicGuillemets{\FrenchGuillemetsFrom{OT2}{wncyr}{60}{62}}
1412  \def\PolishGuillemets{\FrenchGuillemetsFrom{T1}{lmr}{19}{20}}
1413  \def\LasyGuillemets{%
1414  \DeclareTextCommand{\guillemotleft}{OT1}{\hbox{%
1415  \fontencoding{U}\fontfamily{lasy}\selectfont(\kern-0.20em(}}%
1416  \DeclareTextCommand{\guillemotright}{OT1}{\hbox{%

1417  \fontencoding{U}\fontfamily{lasy}\selectfont)\kern-0.20em)}}}
1418  \IfFileExists{t1lmr.fd}{\PolishGuillemets}{\LasyGuillemets}
1419  \DeclareTextSymbolDefault{\guillemotleft}{OT1}
1420  \DeclareTextSymbolDefault{\guillemotright}{OT1}
1421  \def\guill@spacing{\penalty\@M\hskip.8\fontdimen2\font
1422  plus.3\fontdimen3\font
1423  minus.8\fontdimen4\font}
1424  \DeclareRobustCommand*{\begin@guill}{\leavevmode
1425  \guillemotleft\penalty\@M\guill@spacing}
1426  \DeclareRobustCommand*{\end@guill}{\ifdim\lastskip>\z@\unskip\fi
1427  \penalty\@M\guill@spacing\guillemotright\xspace}
1428  \AtBeginDocument{\ifx\xspace\@undefined\let\xspace\relax\fi}
1429  \def\bbl@frenchguillemets{\renewcommand{\og}{\begin@guill}%
1430  \renewcommand{\fg}{\end@guill}}
1431  \def\bbl@nonfrenchguillemets{\renewcommand{\og}{``}%
1432  \renewcommand{\fg}{\ifdim\lastskip>\z@\unskip\fi ''}}
1433 %%%%%%%%%%%%%%%
1434 \def\@ifo{% \GOfrench 1st part: options to be defined at \begin{document}
1435 \def\kbIO{\bgroup% Is redefined at \begin{document}
1436  \ifECM\fontencoding{OT1}\selectfont\fi% Basic fontencoding needed.
1437  \ifFTY\expandafter\nofrenchtypography\fi%
1438  \let\@nobraces\@firstofone% could be provided separately,
1439  \let\protect\string%
1440  \ifEightBitOutput% eg by kbconfig.
1441  \def\'####1{\expandafter\@nobraces\@aiguORI####1}%
1442  \def\`####1{\expandafter\@nobraces\@gravORI####1}%
1443  \def\^####1{\expandafter\@nobraces\@acchORI####1}%
1444  \def\"####1{\expandafter\@nobraces\@tremORI####1}%
1445  \def\c####1{\expandafter\@nobraces\@cediORI####1}%
1446  \csname @kbspecials\endcsname% Translation settings.
1447  \else% 7-bit output wanted.
1448  \let\add@accent\@gobble%
1449  \def\set@display@protect{\let\protect\noexpand}% Have spaces!
1450  \fi%
1451  \@kbtypeout}%
1452 \let\s@owhyphens\showhyphens%
1453 % Save original settings of \dospecials et \@sanitize
1454 \let\@dsORI\dospecials%...........................\@dospecials.........original
1455 \@ifundefined{@sanitize}{\def\@sanitize{\relax}}{}%
1456 \let\@saORI\@sanitize%............................\@sanitize...........original
1457 \def\frenchhyphenation{%
1458  \ifFH\else\FHtrue%....................\frenchhyphenation
1459  \edef\@uchORI{\the\uchyph}% save previous uchyph value
1460  \def\@Hif{\ifFH}\let\@Hfi\fi%
1461  \lccode `\'=`\'%
1462  \ifx\flowercase\undefined\else\def\lowercase{\flowercase}\fi%
1463  \@ifundefined{allowhyphens}{% .............................. \allowhyphens
1464  \def\allowhyphens{\ifhmode\nobreak\hskip\z@skip\fi}}{}%
1465 %         % There is no need to change here left&right hyphenmin counts
1466 %         % but other languages might have changed default values
1467  \@ifundefined{lefthyphenmin}{}%
1468  {\lefthyphenmin=2\righthyphenmin=3}% disallow x- or -xx breaks
1469  \@whatUCH% set Upper Case Hyphenation whatsit

1470  \def\@tempa####1{{\accenthyphcodes\h@yphenation{####1}}}%
1471  \ifx\@tempa\hyphenation\f@issue%
1472  \@fw{-41- %\@txt@msg{your format is out of date, }%
1473  %\@txt@msg{please run initex again!}%
1474  }\stop%
1475  \fi%
1476  \def\accenthyphcodes{% Use fontencoding just
1477  \let\@typeset@protect\protect% in a
1478  \ifx\protect\noexpand\else% typesetting process.
1479  \ifECM\else\fontencoding{T1}%
1480  \let\pickup@font\@gobble%
1481  \let\size@update\relax\selectfont%
1482  \fi\fi}%
1483  \let\hyphenation\f@hyphenation%
1484  \def\showhyphens####1{\bgroup%
1485  \csname accenthyphcodes\endcsname%
1486  \protected@edef\@tempa{####1}%
1487  \s@owhyphens{\@tempa}\egroup}%
1488  \fi}%\ifFH
1489 \def\nofrenchhyphenation{%
1490  \ifFH\FHfalse%....................\nofrenchhyphenation
1491  \lccode`\'=0%
1492  \let\hyphenation\h@yphenation% restore original \hyphenation
1493  \let\showhyphens\s@owhyphens%
1494  \ifx\lowercaseORI\undefined\else\let\lowercase\lowercaseORI\fi%
1495  \@ifundefined{lefthyphenmin}{}%
1496  {\lefthyphenmin=2\righthyphenmin=3}% disallow x- or -xx breaks
1497  \uchyph=\@uchORI%reset original hyph. on words starting with capitals
1498  \fi}%

1499 %#<

1500 \edef\originalmathcomma%..................................   \originalmathcomma
1501 {\noexpand\mathcode`,=\the\mathcode`,}%

1502 %#>

1503 \@tempcnta=\the\mathcode`,\@tempcntb=\the\mathcode`,%
1504 \divide\@tempcnta by 4096\relax% On récupère la classe (demi octet poids fort)
1505 \multiply\@tempcnta by -4096\relax% en éliminant les poids failbles.
1506 \advance\@tempcntb by \@tempcnta% On garde le restant de poids faible.
1507 \edef\@tempb{\noexpand\mathcode`,=\the\@tempcntb}% French is usually "013B.
1508 \advance\@tempcntb by 24576\relax%
1509 \edef\@tempa{\noexpand\mathcode`,=\the\@tempcntb}% Regular is usually "613B.
1510 % Regular LaTeX math code for comma is usually "613B (ie 24891).
1511 \edef\regularmathcomma{%....................................  \regularmathcomma
1512  \noexpand\def\noexpand\@mathcomma{\@tempa}%
1513  \noexpand\@mathcomma}%
1514 \def\@tempa{\if\space\next\else\mathord\fi\mathcomma}%
1515 \let\ifFTY\iftrue% For the following definitions:
1516 \ifx\@tempa\sm@rtcomma% In case icomma is in force we use:
1517 \def\frenchmathcomma{%......................................  \frenchmathcomma
1518  \def\@mathcomma{\ifFTY\mathcode`\,="8000\fi}%
1519  \@mathcomma}%
1520 \else% otherwise:
1521 \edef\frenchmathcomma{% French math code for comma is usually "013B (ie 315).
1522  \noexpand\def\noexpand\@mathcomma%

1523  {\noexpand\ifFTY\@tempb\noexpand\fi}%
1524  \noexpand\@mathcomma}%
1525 \fi%
1526 \frenchmathcomma% Is the default for french.
1527 \def\ifFTY{\ErrFrench}%

1528 %

1529 \def\nofrenchtypography{%...................................\nofrenchtypography
1530  \let\ifFTY\iffalse\let\if@Back\ifFTY%
1531 % Reset OT1 definition of \textbackslash to undefined.
1532 \expandafter\let\csname OT1\string\textbackslash \endcsname\undefined%

1533 %#<

1534  \notabbingaccents% usefull in T1 too with 8bits chars.

1535 %#>

1536  \nofrenchguillemets% reseting our guillemets
1537  \nofrenchbguillemets% and those as frenchb
1538  \sloppy% may extend line past the right hand
1539  \nonfrenchspacing%
1540  \regularmathcomma%

1541 }%

1542 \def\frenchtypography{%.......................................\frenchtypography
1543  \let\ifFTY\iftrue\let\if@Back\ifFTY%
1544 % Add OT1 definition of \textbackslash, missing inside \LaTeX.
1545 \expandafter\let\csname OT1\string\textbackslash \endcsname\@boiORI%
1546  \let\ifLPA\iffalse% default is clean...
1547  \typedspaces%

1548 %#<

1549  \nowrongtypedspaces%
1550  \tabbingaccents% usefull in T1 too with 8bits chars.
1551  \englishquote\englishdoublequotes%
1552  \nolabelsinmargin%
1553  \frenchguillemets%

1554 %#>

1555  \frenchbguillemets%

1556 %#<

1557  \normalbrackets\todayguillemets%
1558  \guillemetsinroman\guillemetsinarrays%

1559 %#>

1560  \edef\@tempa{\the\vfuzz}% AmS may have changed \vfuzz
1561  \fussy% must not extend line past the right hand
1562  \vfuzz=\@tempa% and should not change \vfuzz
1563  \frenchspacing%
1564  \frenchmathcomma%
1565 %                     \nooverfullhboxmark% std LaTeX default not plain

1566 }%

1567 \def\nofrenchtranslation{%
1568  \let\ifFTR\iffalse\@cORI}%........\nofrenchtranslation
1569 \def\frenchtranslation{%
1570  \let\ifFTR\iftrue\captionsfrench}%....\frenchtranslation
1571 \let\frenchguillemets\relax\let\nofrenchguillemets\relax%
1572 \let\frenchbguillemets\bbl@frenchguillemets%...............  \frenchbguillemets
1573 \let\nofrenchbguillemets\bbl@nonfrenchguillemets%........  \nofrenchbguillemets

1574 %#<

1575 \def\frenchguillemets{%

1576  \let\ifFG\iftrue%.....................  \frenchguillemets
1577  \let\guillemets\@LG%
1578  \let\endguillemets\RG@%
1579  \let\guillemotleft\f@guillemets%
1580  \let\guillemotright\endf@guillemets%
1581  \AFPinfsup}%
1582 \def\nofrenchguillemets{%
1583  \let\ifFG\iffalse%..................  \nofrenchguillemets
1584  \let\guillemotleft\@gotl%
1585  \let\guillemotright\@gotr%
1586  \let\guillemets\f@guillemets%
1587  \let\endguillemets\endf@guillemets%
1588  \DFPinfsup}%
1589 \def\noeveryparguillemets{\let\ifEPG\iffalse%.............\noeveryparguillemets
1590  \@desarm\let\@desarm\relax% release memory
1591  \def\guillemets{%\leavevmode\unskip%
1592  \f@issue%
1593  \@fw{-53- %
1594  %\@txt@msg{environnement guillemets }%
1595  %\@txt@msg{  inutilisable avec l'option }%
1596  %\@txt@msg{\string\noeveryparguillemets}%

1597 }%

1598  \bgroup\bgroup%
1599  \def\guillemets{\bgroup%
1600  \let\endguillemets\egroup}}%

1601 }%

1602 \def\everyparguillemets{\let\ifEPGR\iffalse%..............  \everyparguillemets
1603  \let\ifEPG\iftrue%
1604  \let\guillemets\@LG%
1605  \let\endguillemets\RG@%

1606 }%

1607 \def\everyparguillemetsremoved{%
1608  \let\ifEPGR\iftrue}%........ \everyparguillemetsremoved

1609 %#>

1610 \def\@tempa{\global\let\ifCLA\iffalse}% If not already set, no defaultly
1611 \ifx\ifCLA\undefined\expandafter\@tempa\fi% constant language layout.
1612 \def\ConstantLayout{\global\let\ifCLA\iftrue%...................\ConstantLayout
1613  \expandafter\let\csname ifCLA\languagename\endcsname\iftrue%
1614  \def\@tempa{\let\ifbbbbfixlanguage\iftrue}%
1615  \ifx\ifbbbbfixlanguage\undefined\@tempa\fi%
1616  \def\@tempa{\ifbbbbfixlanguage\else%
1617  \f@issue%
1618  \@fw{-85- %\@txt@msg{Attention \string: l'option fixlanguage }%
1619  %\@txt@msg{n'a pas ete fournie a l'appel de babelbib}%
1620  }\fi%

1621 }%

1622  \ifx\@nodocument\relax\@tempa%
1623  \else\ifx\btxselectlanguage\undefined%
1624  \PassOptionsToPackage{fixlanguage}{babelbib}%
1625  \else\@tempa%
1626  \fi%
1627  \fi%
1628  \let\ConstantLayout\relax}% This is a one time macro.

1629 %

1630 \def\nofrenchlayout{\nofrenchtrivsep%
1631  \let\ifFLA\iffalse\@EIM}%...................\nofrenchlayout
1632 \def\frenchlayout{%
1633  \let\ifFLA\iftrue\everyparguillemets%...........\frenchlayout
1634  \@FIM\@FL\let\@FL\empty\noautomaticlettrine%
1635  \frenchtrivsep}%
1636 \def\frenchwarnings{\let\ifFW\iftrue%.........................  \frenchwarnings
1637  \frenchtrivsepwarnings}%
1638 \def\nofrenchwarnings{\let\ifFW\iffalse%..................... \nofrenchwarnings
1639  }% This code is not completed.

1640 %#<

1641 \def\nofrenchmacros{\let\ifFMA\iffalse}%........................\nofrenchmacros
1642 \def\frenchmacros{\let\ifFMA\iftrue\@ifm%.........................\frenchmacros
1643  \let\@ifm\relax}% release memory

1644 %#>

1645 }% end of \@ifo  {\GOfrench part 1}

1646 %#<

1647 \long\def\usersfrenchoptions%.............................  \usersfrenchoptions
1648  {\bgroup\makeatletter%
1649 %                               \expandafter\makeatother%
1650  \expandafter\egroup%
1651  \g@addto@macro\@ufo}%

1652 %#>

1653 \ifx\@ufo\undefined%
1654 \let\@ufo\empty% necessary for babel when loading
1655 \fi%

1656 %

1657 %.......................................................  Modified  TeX  macros

1658 %

1659 \def\prim@s{\prime\futurelet\@let@token\pr@m@s}%
1660 \def\pr@m@s{\ifx\@cilq\@let@token\expandafter\pr@@@s%
1661  \else\ifx^\@let@token\expandafter\expandafter\expandafter\pr@@@t%
1662  \else\egroup\fi%
1663  \fi}%
1664 \let\@fsORI\frenchspacing% modified for guillemets.............  \frenchspacing
1665 \def\frenchspacing{\@fsORI\ifECM\sfcode`\(=0\sfcode`\)=1000\fi}%
1666 %%%%
1667 % let < ' : ` > active for the following macros and
1668 \catcode`<=\active\catcode`>=\active\catcode`'=\active%
1669 \catcode`:=\active\catcode``=\active%
1670 \let<=\inferieura\let>=\superieura% define them for french light.
1671 \def\@Fstr{\def<{\@LSG}\def>{\@RSG}\def`{\@SLQ}\def'{\@SRQ}%
1672  \def:{\deuxpoints}%
1673  \let\dGs\empty}% Nullify any \dGs macro from keyboard.sty.
1674 \def\@LiN{\let\@sogORI<\let\@sfgORI>\let\@lqORI`\let\@rqORI'%\let\@dqORI"%
1675  \let\@dpORI:\@Fstr\@ifFTYfalse}%
1676 \def\@LiB{\let<\@sogORI\let>\@sfgORI\let`\@lqORI\let'\@rqORI%
1677  \let:\@dpORI\@ifFTYback}%
1678 \catcode\lq:=12%
1679 \let\@s@ORI\special%.................................................  \special
1680 % done in \GOfrench:
1681 %\def\special#1{\@ifFTYfalse\bgroup\@Fstr\@s@ORI{#1}\egroup\@ifFTYback}%

1682 % \newcount, \newdimen, \newbox were \outer defs in plain.
1683 \def\newcount{\alloc@0\count\countdef\insc@unt}%....................  \newcount
1684 \def\newdimen{\alloc@1\dimen\dimendef\insc@unt}%....................  \newdimen
1685 \def\newbox{\alloc@4\box\chardef\insc@unt}%.........................  \newbox

1686 %

1687 %........................................  Modified package's & LaTeX macros

1688 %

1689 % Those defs which need to be set at \begin{document} are delayed.
1690 % Take in account the varioref package if present:
1691 \let\ifFTY\iffalse% Temporary definition.
1692 \ifx\vref\undefined\else% As \@ifpackageloaded is forbidden at
1693 \@ifpackageloaded{varioref}{\def\@vrfCode{% \begin{document}, test it now.
1694  \@gG{vr}{vref}{/}{1}%................................... \vref
1695  \@gG{vpr}{vpageref}{1}{1}%...........................\vpageref
1696  \@gG{vprr}{vpagerefrange}{1}{2}%................\vpagerefrange
1697  \def\reftextpagerange##1##2{%...............\reftextpagerange
1698  pages~\pageref{##1}\ifFTY -\else --\fi\pageref{##2}}%

1699 }%

1700  }{}%
1701 \fi%
1702 \def\ifFTY{\ErrFrench}% Reset original value.
1703 % Take in account the beamer class (don't use \l@chapter)
1704 \@ifclassloaded{beamer}{\let\l@chapter\empty%
1705  \def\beamer@captiontemplate{\small\structure%
1706  {\insertcaptionname\captionseparator\space}%
1707  \insertcaption}
1708  }{}%

1709 %

1710 \def\GOfrench{% this is the code to initiate the French style
1711  \def\special##1{\@ifFTYfalse\bgroup\@Fstr\@s@ORI{##1}%
1712  \egroup\@ifFTYback}%
1713  \let\@noBDfr\relax% release french options/commands now
1714  {\catcode\lq\<=\active\ifx<\undefined\else\global%
1715  \let\@mLSG<\global%
1716  \def\@LSG{\ifmmode\@mLSG\else\inferieura\fi}\fi}%
1717  {\catcode\lq\>=\active\ifx>\undefined\else\global%
1718  \let\@mRSG>\global%
1719  \def\@RSG{\ifmmode\@mRSG\else\superieura\fi}\fi}%
1720 \if@PMF\def\pmfrench{}\def\noeveryparguillemets{}\def\@stared{}%
1721  \def\@desarm{}\def\@qquotes{}\def\@staring{}\def\@fniv2{}\fi%
1722 \def\sm@llerthree{\protect\sm@ller\protect\sm@ller\protect\sm@ller}
1723 \@ifundefined{smaller}{\def\sm@ller{\small}%   ... you can use ...[smaller.sty]
1724  \let\sm@llerthree\scriptsize%
1725  \def\l@rger{\large}}%
1726  {\def\RSsmallest{4pt}%   ... you can use ...[relsize.sty]
1727  \ifx\undefined\sm@ller%
1728  \let\sm@ller\smaller\fi}%
1729 \@ifundefined{footnotesize}{%.................................... \footnotesize
1730  \def\footnotesize{\sm@ller\sm@ller}}{}%
1731 \@ifundefined{Huge}{%.................................................... \Huge
1732  \def\Huge{\l@rger\l@rger\l@rger\l@rger\l@rger}}{}%

1733 %#<

1734 \@ifundefined{lettrinefont}{\let\lettrinefont\Huge}{}%........... \lettrinefont

1735 \let\sv@lf=\lettrinefont% save it
1736 \ifx\@pdfcreator\undefined% Complete pdf creator name.
1737 \else\addto\@pdfcreator{, with \frenchpack\space shareware}\fi%

1738 %#>

1739 % Command to leave chapter counter asis....................  \noresetatpart
1740 \def\noresetatpart{\ifFLA\let\cl@part\empty\fi}%
1741 % Command to leave footnote counter asis over chapter change.
1742 \def\noresetatchapter{\ifFLA\let\cl@chapter\empty\fi}%....... \noresetatchapter
1743 % Let \chapter be defined.
1744 \@ifundefined{chapter}{}{}%..........................................  \chapter
1745 % Reset chapter counter when starting a part &
1746 \@ifundefined{c@chapter}{\newcounter{chapter}}{\@addtoreset{chapter}{part}}%
1747 \@ifundefined{quotation}{\def\quotation{}}{}%......................  \quotation
1748 \ifx\tableofcontents\undefined%
1749  \else\let\@tocORI\tableofcontents\fi% permit toc normal processing
1750 \ifx\pdfstringdef\undefined% Save orginal \contentsline for hyperref.
1751 \else\let\contentslineORI\contentsline\fi%
1752 % Coding to bypass pb of duplicate in hyprref < 6,69f
1753 %\ifx\undefined\pdfstringdef\@tempa% Using pdfTeX hyperref should
1754 % \else\ifx\theHchapter\undefined% have no \thechapter otherwise
1755 %       \else\@tempa% it complains arguing there is a duplicate section
1756 %      \fi% #,
1757 %\fi% so we no more define \thechapter in that case.
1758 \@ifundefined{l@chapter}{%...................................... \l@chapter
1759 \def\@tempa{%
1760  \def\l@chapter####1####2{\addpenalty{-\@highpenalty}%
1761  \vskip 1.0em plus\p@\@tempdima 1.5em% numbering size
1762  \begingroup%
1763  \parindent \z@ \rightskip \@pnumwidth \parfillskip -\@pnumwidth%
1764  \bfseries \leavevmode \advance\leftskip\@tempdima \hskip -\leftskip%
1765  ####1\nobreak\hfil \nobreak\hbox to\@pnumwidth{\hss ####2}\par%
1766  \penalty\@highpenalty%
1767  \endgroup}}%
1768 \ifx\RIfM@\undefined\@tempa% use l@chapter
1769 \else%                    % even with AmS styles
1770 \ifx\fr@RIfM@cls\undefined\@tempa
1771 \fi% but not for AmS classes
1772 \fi}{}% undefined in article.sty
1773 % Due to resetting of chapter counter at part change we have to better
1774 \@ifundefined{theHchapter}{}% qualify the chapter anchor names.
1775 {\renewcommand{\theHchapter}{\arabic{part}.\arabic{chapter}}}%

1776 %

1777 % General code for generating replacement macros for \cite \nocite etc.
1778 % \@gG{a string "s" for letting \@"s"@ORI as the original macro}
1779 %     {original macro name -without backslash}
1780 %     {string "/" if original macro had no [optional arg] otherwise empty}
1781 %             "1" if original macro has one req. [o.p. arg 1]
1782 %             "2" if original macro has two req. [o.p.1][o.p.2]
1783 %             "//"if no optional arg but more than one required arg:
1784 %     {number of required args} % default is 1, maximum is 3.
1785  \def\@gG##1##2##3##4{%
1786  \def\@temp@{\expandafter\let\csname @##1@ORI\endcsname=}%
1787  \expandafter\@temp@\csname ##2\endcsname%

1788  \if##3\empty%
1789  \if2##4%
1790  \expandafter\def\csname ##2\endcsname####1####2%
1791  {\protect\atgG{##1}{{####1}{####2}}}%
1792  \else%
1793  \if3##4%
1794  \expandafter\def\csname ##2\endcsname####1####2####3%
1795  {\protect\atgG{##1}{{####1}{####2}{####3}}}%
1796  \else%
1797  \expandafter\def\csname ##2\endcsname####1%
1798  {\protect\atgG{##1}{{####1}}}%
1799  \fi%
1800  \fi%
1801  \else% Case of just one required argument, check optional args:
1802  \if/##3\expandafter\def\csname ##2\endcsname{\protect\atgH{##1}}%
1803  \else%
1804  \if2##4\expandafter\def\csname ##2\endcsname{\protect\atgN{##1}}%
1805  \else\expandafter\def\csname ##2\endcsname{\protect\atgM{##1}}%
1806  \fi%
1807  \fi%
1808  \fi}%
1809  \def\atgG##1##2{\bgroup\@ifFTYfalse\@Fstr%
1810  \expandafter\csname @##1@ORI\endcsname##2\egroup}%
1811  \def\atgH##1##2{\bgroup\@ifFTYfalse\@Fstr%
1812  \expandafter\csname @##1@ORI\endcsname{##2}\egroup}%
1813  \def\atgM##1{\@ifNextNB[{\@gM@@{##1}}{\@gM@@{##1}[\empty]}%]emacs

1814 }%

1815  \def\atgN##1{\@ifNextNB[{\@gM@@@{##1}}{\@gM@@@{##1}[\empty]}%]emacs

1816 }%

1817  \def\@gM@@##1[##2]##3{\@gM@@@{##1}[##2]{##3}{}}%
1818  \def\@gM@@@##1[##2]##3##4{\bgroup\@ifFTYfalse\@Fstr%
1819  \xdef\@temp@{\noexpand\@gG@{##3}{##4}}\egroup%
1820  \ifx\empty##2\let\@gG@=\empty%
1821  \else\protected@edef\@gG@{[##2]}\fi%
1822  \let\@typeset@protect\protect%
1823  \protected@edef\@temp@{\noexpand\expandafter%
1824  \noexpand\expandafter%
1825  \noexpand\csname @##1@ORI\noexpand\endcsname%
1826  \@temp@}\@temp@}%
1827 % Nullify Babel mechanism which doesn't run correctly in its current version
1828 \ifx\babel@sanitize@arg\undefined\else%
1829 \def\babel@sanitize@arg##1{##1}%
1830 \wlog{\frenchname.sty\string: use of the babel package force me to nullify %
1831  \noexpand\babel@sanitize@arg.}%
1832 \fi%
1833 \ifx\ifthenelse\undefined\else\let\@iTeORI\ifthenelse%
1834 \long\def\ifthenelse##1##2##3{\@ifFTYfalse\@iTeORI{##1}%
1835  {\@ifFTYback##2}{\@ifFTYback##3}}%
1836 \fi%
1837 \ifx\texttt\undefined\else\@gG{xt}{texttt}{/}{1}%...................... \texttt
1838  \MakeRobustCommand{texttt}\fi%
1839 \ifx\hyperbaseurl\undefined\else\@gG{hl}{hyperbaseurl}{/}{1}\fi%. \hyperbaseurl
1840 \ifx\Ginclude@graphics\undefined\else\@gG{ig}%.............. \Ginclude@graphics

1841  {Ginclude@graphics}{/}{1}\fi%.              (\includegraphics)
1842 % As \citeyear is in various packages we check first for natbib.sty and
1843 \ifx\NAT@citex\undefined% then modify all \cite... commands via \@citex.
1844 \ifx\cite\undefined\else\@gG{c}{cite}{1}{1}\fi%.................... \cite
1845 \ifx\citeyear\undefined\else\@gG{cy}{citeyear}{/}{1}\fi%........... \citeyear
1846 \else% ....................................................... Natbib \cite...
1847  \let\@cxORI\@citex%
1848  \def\@citex[##1][##2]##3{\@ifFTYfalse%
1849  \let\mbox\mboxORI%
1850  \@cxORI[##1][##2]{##3}\aftergroup\@ifFTYback}%
1851 %%%%%%%%%%%%%%%%%%%%%%%
1852 %Following code for Natbib and jurabib wrong, obsolate and misplaced.2006/08/15
1853 %\@gG{fc}{fullcite}{1}{1}%
1854 %\@gG{cin}{citation}{/}{1}%
1855 %\def\@lbibitem[##1]##2{\protected@edef\jb@key{##2}\def\jb@tempb{##1}}%
1856 \@gG{cin}{citation}{/}{1}%............................................\citation
1857 \ifx\ifjb@index@bib\undefined\let\ifjb@index@bib\iffalse\fi%
1858 \ifx\jb@lbibitem\undefined\else%............... JURABIB ........ \jb@lbibitem
1859 % Modify jurabib definition of \jb@lbibitem as of jurabib v0.6 (2004/01/25)
1860 % with a \protected@xdef for \jb@key.
1861 \def\jb@lbibitem[##1]##2{%
1862  \gdef\jb@tempb{##1}%
1863  \protected@xdef\jb@key{##2}%\gdef\jb@key{##2}%
1864  \ifjb@index@bib%
1865  \jb@call@index{aut}{##2}%
1866  \jb@call@index{ed}{##2}%
1867  \jb@call@index{org}{##2}%
1868  \fi%
1869  \endgroup}%
1870 \@gG{fc}{fullcite}{1}{1}%.......................JURABIB.............\fullcite
1871 \fi%
1872 \fi%
1873 \ifx\nocite\undefined\else\@gG{nc}{nocite}{/}{1}\fi%................... \nocite
1874 % As \bibcite has not originally any argument the following definition
1875 % is remove and \@newl@bel is introduced in replacement of \newlabel.
1876 %\ifx\bibcite\undefined\else\@gG{bc}{bibcite}{1}{1}\fi%............... \bibcite
1877 \ifx\backcite\undefined\else\@gG{bkc}{backcite}{//}{2}\fi%........... \backcite
1878 \ifx\bibitem\undefined\else\let\@biORI\bibitem% ...................... \bibitem
1879  \def\bibitem{\@LiN\@ifNextNB[{\@bi@cb}{\@bi@ca}%]emacs

1880 }%

1881  \def\@bi@ca##1{\@biORI{##1}\@LiB}%
1882  \def\@bi@cb[##1]##2{\@biORI[##1]{##2}\@LiB}%
1883 \fi%
1884 \expandafter\ifx\string\bt@@item\undefined% ... bibtopic \\bt@@item
1885  \else\@gG{bti}{\string\bt@@item}{1}{1}%
1886  \fi%
1887 % Take in account varioref package if present at \begin{document}:
1888 \ifx\vref\undefined\else% Nullify \@vrfCode if varioref is
1889  \ifx\reftextvario\undefined\let\@vrfCode\undefined% now loaded.
1890 \fi\fi%

1891 %

1892 \ifx\ref\undefined\else\@gG{r}{ref}{/}{1}\fi%............................. \ref
1893 \ifx\tag\undefined\else\@gG{tG}{tag}{/}{1}\fi%............................ \tag

1894 \ifx\pageref\undefined\else\let\pageref@ORI\pageref%
1895  \let\f@pageref\pageref\@gG{fpr}{f@pageref}{/}{1}%
1896  \def\pageref{\ifFTY\expandafter\f@pageref\else%....................\pageref
1897  \expandafter\pageref@ORI\fi}%
1898 \fi%
1899 \csname @vrfCode\endcsname% load mods for varioref package \vref, \vpageref
1900 \xdef\@lim{}\let\ifMOVING\iffalse%
1901 % The label for the subfigure package ...........................\sf@@sub@label
1902 \ifx\sf@@sub@label\undefined\else\@gG{ss}{sf@@sub@label}{/}{1}\fi%
1903 % Set code for labels in margin.
1904 \def\@temp@{%
1905  \def\label{\protect\@LabeL}% needed to be protected for \thanks
1906 % Remove patch $\label$ for Simon Pierre DESROSIERS 9/09/05
1907 %     \def\@LabeL{\ifmmode\expandafter\s@LabeL\else\expandafter\t@LabeL\fi}%
1908 %     \def\s@LabeL####1{\gdef\r@LabeL{\label{####1}}\aftergroup\r@LabeL}%
1909 % New patch for \label en mode math. 4/07/2006 %
1910 \def\r@LabeL{\ifx\@lim\empty%  Special def to put labels in margin
1911  \else\marginpar{\@lim@}\xdef\@lim{}% at end of maths $$.
1912  \fi}% No need to nullify MOVING after group.
1913 \def\m@LabeL{\def\@setMGtrue{\let\ifMOVING\iftrue}%
1914  \ifmmode\@setMGtrue% If maths go like a moving block.
1915  \aftergroup\r@LabeL% Do final margin at  end of maths group.
1916  \fi%
1917  \expandafter\t@LabeL}% Go process \label as usual.
1918 \def\@LabeL{\ifMOVING\expandafter\t@LabeL% If already moving process as usual
1919  \else\m@LabeL% else test for maths.
1920  \fi}%

1921 %

1922  \def\t@LabeL####1{\@ifFTYfalse\if@labelsinmargin\ifMOVING%
1923  \xdef\@lim{\ifx\@lim\empty\else\@lim\@@par\relax\fi[####1]}%
1924  \gdef\@lim@{\@ifFTYfalse\hbadness=\@M\tt\@lim\@ifFTYback}%
1925  \else\marginpar{%
1926  \@ifFTYfalse\hbadness=\@M\tt[####1]\@ifFTYback}\fi\fi%
1927  % how suppress  Overful \hbox here?
1928  \bgroup\@Fstr\@lORI{####1}\egroup\@ifFTYback}%

1929 }%

1930 \ifx\fr@RIfM@cls\undefined\else% isolate maketitle action with AmS classes.
1931 \let\@mtORI\maketitle% ............................................  \maketitle
1932 \def\maketitle{{\@mtORI}}% avoid removing of keywords environement.
1933 \fi%
1934 \ifx\label\undefined\else\let\@lORI\label%.............................. \label
1935  \@temp@% new def apply
1936  \let\ltx@label\label% for amsmath.sty
1937 \fi%
1938 %instead this coding, active chars in \label must be protected inside a \thanks
1939 % As the internal macro of \newlabel is \@newl@bel #1 the following
1940 % definition of \newlabel is removed and replace by \@newl@bel.
1941 %\ifx\newlabel\undefined\else\@gG{nl}{newlabel}{/}{1}\fi%............ \newlabel
1942 \ifx\@newl@bel\undefined\else\@gG{nl}{@newl@bel}{//}{3}\fi%......... \@newl@bel
1943 \def\@temp@{%
1944  \let\@aclORI\addcontentsline%............................ \addcontentsline
1945  \global\let\ifCG\iftrue% Nullify if-guillemets on a new sectioning
1946  \def\addcontentsline####1####2####3{\@ifFTYfalse\bgroup\@Fstr%

1947  \@aclORI{####1}{####2}{####3}\egroup\@ifFTYback}%

1948 }%

1949 \@ifundefined{addcontentsline}{\gdef\addcontentsline##1##2##3{}}% dummy def
1950  {\@temp@}%
1951 \let\ifFrench\iffalse% let it be known now
1952 \def\@temp@{%
1953  \def\index{\bgroup\ifFrench\@DFP\fi% Is further redefined
1954  \expandafter\egroup\@iORI}% inside \footnote.

1955 }%

1956 \ifx\index\undefined\else\let\@iORI\index%.............................. \index
1957  \@temp@% new def apply
1958 \fi%

1959 %

1960 \ifx\list\undefined\else% Mods to keep track
1961  \let\@liORI\list%  that we are in a list environment ........ \list
1962 \fi%
1963  \let\@topsepORI\topsep% ans save original vertical
1964  \let\@partopsepORI\partopsep% spaces
1965  \let\@itemsepORI\itemsep% so that we could warn when
1966  \let\@parsepORI\parsep% user try to change them.
1967 %\def\GOfrench{continuation -emacs pb-
1968 \def\warn@seps{\def\topsep{\@w@s{\string\topsep}\@topsepORI}%
1969  \def\partopsep{\@w@s{\string\partopsep}\@partopsepORI}%
1970  \def\itemsep{\@w@s{\string\itemsep}\@itemsepORI}%
1971  \def\parsep{\@w@s{\string\parsep}\@parsepORI}%
1972  \def\@tempa{verse}\def\@tempb{quotation}%
1973  \ifx\@tempa\@currenvir\let\@w@s\@gobble\else%
1974  \ifx\@tempb\@currenvir\let\@w@s\@gobble\fi%
1975  \fi%

1976 }%

1977 \def\@w@s##1{\ifFTSW\f@issue%
1978  \@fw{-58- %\@txt@msg{valeur de ##1 ignor\'ee}%
1979 %             dans l\string'environnement \@currenvir%
1980  }[##1]\fi}%
1981 \def\org@seps{\let\topsep\@topsepORI%
1982  \let\partopsep\@partopsepORI%
1983  \let\itemsep\@itemsepORI%
1984  \let\parsep\@parsepORI%

1985 }%

1986 \def\list##1##2{\def\@inAlist{}\@liORI{##1}{%
1987  \ifx\@trivlist\@tlORI\else\warn@seps\fi%
1988  ##2\org@seps}}%
1989 \ifx\@makecaption\undefined\else\let\@mcORI\@makecaption\fi%....  \@makecaption

1990 %

1991 \ifx\captionseparator\undefined%
1992  \def\captionseparator{~--}%............................  \captionseparator
1993 \fi%
1994 \let\ifFTY\iffalse% Let it be knwon temporary.
1995 % \captionseparator is off with memoir.cls, use \captiondelim.
1996 \ifx\@contdelim\undefined\else%..............(ccaption/memoir)  \@contdelim
1997 \ifx\@memerror\undefined%
1998  \let\@cdORI\@contdelim% The definition for ccaption:
1999  \def\@contdelim{\ifFTY\space\else\@cdORI\fi}%

2000 \else%\let\@contdelim\@cdORI% Don't modify \@contdelim for memoir.cls
2001  \let\captionseparator\empty% Suppress our \captionseparator for table/figure
2002  \let\captionfont\@conttfont% Apply requested memoir font.
2003 \fi%
2004 \fi%
2005 \def\ifFTY{\ErrFrench}%
2006 \ifx\captionfont\undefined% .....................................  \captionfont
2007  \let\captionfont\emph% Std is italics.
2008 \else\let\@cfORI\captionfont% Might be Caption2, thus
2009  \def\captionlabelfont{\upshape}% set defaults.
2010  \def\captionfont{\itshape\@cfORI}%
2011  \ifx\captionlabeldelim\undefined\else% Use Caption2 delimitor cs
2012  \let\captionlabeldelim\captionseparator% if any, and set our
2013  \let\captionseparator\empty% default value.
2014  \fi%
2015 \fi%
2016 \def\@makecaption##1##2{\ifFTY%
2017  \def\@secondofmany####1####2\void{####2}%
2018 % Removed mod for empty \caption (pb with hyperref) 2007/06/28
2019 %                        \protected@edef\@tempa{\@secondofmany##2\void}%
2020 % The previous coding don't remove the unusefull \captionseparator:
2021  \def\@tempa{\@secondofmany##2\void}% To debug.
2022  \ifx\@tempa\empty%
2023  \let\captionseparator\empty%
2024  \fi%
2025  \@mcORI{##1}{\relax% for AmSLaTeX V1.2 96/11
2026  \captionfont{##2}}%
2027  \else\@mcORI{##1}{##2}\fi}%

2028 %

2029 %Leslie claims that "The footnotemarker is regarded as having zero width, which
2030 %is appropriate when it comes at the end of line"(p164) <== not a French habit.
2031 \def\@temp@{%
2032  \def\thanks####1{\global\let\@makefntext\fr@makefntext%........... \thanks
2033  \bgroup%
2034  \ifFTY\ifhmode\ifdim\lastskip>\z@\unskip\fi\nobreak\fi%
2035  \def\@footnotemark{\hbox{\@textsuperscript{\normalfont\,\@thefnmark}}}%
2036  \fi\let\ifFTY\iffalse\@thORI{####1}%
2037  \egroup}%

2038 }%

2039 \ifx\thanks\undefined\else\let\@thORI\thanks\@temp@\fi%
2040 \let\ifFTY\iffalse% temp def for next processing
2041 \ifx\@makefnmark\undefined\else\let\@mfnmORI\@makefnmark%........  \@makefnmark
2042 \def\@makefnmark{\ifFTY\hbox{\@textsuperscript{\normalfont%
2043  \ifx\thefootnote\relax\else\,\fi%
2044  \@thefnmark}}%
2045  \else\@mfnmORI\fi}%
2046 \fi%
2047 \def\@temp@{\long\def\fr@makefntext####1{% footline starts here %
2048  \bgroup%
2049  \ifFTY\def\@tempa{footnote}\let\@tfnORI\@thefnmark%
2050  \ifx\@tempa\@mpfn%do it only for page footnotes not minipages ones
2051  \def\@thefnmark{% marker under the footline, no more in superscript.
2052  % two grouping levels in pure 2e.

2053  \egroup\egroup% no point when no marker
2054  \long\def\@tempa{\fnsymbol{footnote}}%
2055  \ifx\@tempa\thefootnote% When using symbols put them
2056  \expandafter\raise+0.55ex% higher (cf Lexique IN p. 33)
2057  \fi% \thefootnote
2058  \hbox\bgroup\textnormal\bgroup%
2059  \def\@temp@{%
2060 \ifx\fr@RIfM@cls\undefined% Remove space when \thanks and AmS classes.
2061 \ifx\thanks\relax\else\kern-1.1\parindent\fi% .1 should be explained.
2062 \else       \kern-\parindent% otherwise remove superfluous spacing.
2063 \fi%
2064 %\@ifnextchar\relax{\def\@temp@{\,}}% Prefered:
2065  \@ifnextchar\relax{\def\@temp@{\hphantom{.}\kern+0.25em}}%
2066  {\def\@temp@{.\kern+0.25em}}%

2067 }%

2068  \expandafter\@temp@\@tfnORI\@temp@%

2069 }%

2070  \leavevmode\kern+0.5em% add some spacing for at least 3 digits
2071  \else\def\@thefnmark{\@tfnORI\,}\fi% add thin space in mpfootmarks
2072  \fi\@mfntORI{####1}\egroup}% \@makefntext

2073 }%

2074  \let\@mfntORI\@makefntext\@temp@%
2075  \let\@makefntext\fr@makefntext%.............................  \@makefntext
2076 \def\ifFTY{\ErrFrench}%
2077 \let\@fntORI\@footnotetext% nullify marginpar in ................  \@footnotext
2078 \long\def\@footnotetext##1{\bgroup\let\if@labelsinmargin\iffalse%
2079  \@fntORI{##1}\egroup}%
2080 % Why \footnote doesn't \unskip the previous space?
2081 % Allow hyphenation too with \nobreak (as suggested by Bernd Raichle)
2082 \let\@fnORI\footnote%............................................... \footnote
2083 \def\footnote{\bgroup%
2084  \def\index{\@ifnextchar[{\f@index}%]
2085  {\f@index@}%

2086 }%

2087  \def\f@index[####1]####2{\@ifFTYfalse\@iORI[####1]{####2}%
2088  \@ifFTYback}%
2089  \def\f@index@####1{\@ifFTYfalse\@iORI{####1}\@ifFTYback}%
2090  \ifFTY\ifhmode\ifdim\lastskip>\z@\unskip\fi%
2091  \nobreak\fi\fi%
2092  \ifmmode\let\@fnORI\fr@footnote\fi%
2093  \@ifNextNB[% ] for balancing
2094  \@Footnote\@Fntnorm}%
2095 \long\def\@Footnote[##1]##2{\@fnORI[##1]{##2}%
2096  \egroup\@ifNextNBc\footnote\refmark\@Fntcoma{}}%
2097 \long\def\@Fntnorm##1{\@fnORI{##1}%
2098  \egroup\@ifNextNBc\footnote\refmark\@Fntcoma{}}%
2099 \def\@Fntcoma{\ifFLA\@textsuperscript{,}\nobreak\fi}%
2100 \def\@Fxloat##1[##2]{\@xfORI{##1}[##2]\csname @Fend\@currenvir\endcsname}%
2101 \let\@fgeORI\figure\let\@efgeORI\endfigure% needed for figurette
2102 \def\@temp@{\let\@fgeORI\figure%.....................................  \figure
2103  \def\figure{\let\ifMOVING\iftrue%
2104  \let\if@minipage\iftrue%
2105  \@set@fr@fn@%

2106  \ifx\@xfORI\undefined%
2107  \let\@xfORI\@xfloat\let\@xfloat\@Fxloat%
2108  \fi%
2109  \@fgeORI}}%
2110 \ifx\figure\undefined\let\@temp@\relax\fi\@temp@%
2111 \def\@Fendfigure{\let\@efgeORI\endfigure%.......................... \endfigure
2112  \def\endfigure{\@efgeORI%
2113  \ifx\@lim\empty\else\marginpar{\@lim@}%
2114  \xdef\@lim{}\fi\let\ifMOVING\iffalse}}%
2115 \ifx\endfigure\undefined\let\@Fendfigure\relax\fi%
2116 \let\@cnORI\caption% \caption is redefined in the table environement :
2117 \def\@tablescaption{\@dblarg\@t@blescaption}% footnote will be only
2118 \let\mboxORI\mbox% save \mbox definition.
2119 \def\mbox##1{\leavevmode\hbox{\protect\@set@fr@fn@##1}}%%..............  \mbox
2120 \def\@set@fr@fn@{\ifFrench\let\footnote\fr@footnote\fi}% Footnote's text lost
2121 \def\fr@footnote{\@ifNextNB[\fr@fn@{\fr@fn@[]}%] in tables
2122  }%                               caption.
2123 \def\fr@fn@[##1]##2{\footnotemark%
2124  \f@issue%
2125  \@fw{-8- %\@txt@msg{\string\footnotetext{##2} perdu.}
2126  %\@txt@msg{Coder \'event. \string\protect\string\footnote}%
2127  }[##2]% \mbox

2128 }%

2129 \def\@t@blescaption[##1]##2{\let\cur@fn\footnote% footnote mark in tables
2130  \let\footnote\fr@footnote% caption and text
2131  \@cnORI[##1]{##2}\let\footnote\cur@fn}% will be lost.
2132 \def\@temp@{%
2133  \let\@tbeORI\table% footnotes made like in minipages ...... \table
2134  \def\table{\let\ifMOVING\iftrue%
2135  \let\if@minipage\iftrue%
2136  \ifFLA\begingroup%
2137  \def\@mpfn{mpfootnote}%
2138  \def\thempfn{\thempfootnote}\c@mpfootnote\z@%
2139  \ifx\@captype\undefined\def\@captype{table}\fi% for ams classes
2140  \let\caption\@tablescaption% allow page footnote in \caption
2141  \let\@footnotetext\@mpfootnotetext\fi%
2142  \ifx\@xfORI\undefined%
2143  \let\@xfORI\@xfloat\let\@xfloat\@Fxloat%
2144  \fi%
2145  \@tbeORI}%
2146  \expandafter\let%
2147  \expandafter\@dbtbeORI\csname table*\endcsname% .........  \table*
2148  \expandafter\def\csname table*\endcsname{\let\ifMOVING\iftrue%
2149  \let\if@minipage\iftrue%
2150  \ifFLA\begingroup%
2151  \def\@mpfn{mpfootnote}%
2152  \def\thempfn{\thempfootnote}\c@mpfootnote\z@%
2153  \ifx\@captype\undefined\def\@captype{table}\fi% for amsbook
2154  \let\caption\@tablescaption% allow page footnote in \caption
2155  \let\@footnotetext\@mpfootnotetext\fi%
2156  \ifx\@xfORI\undefined%
2157  \let\@xfORI\@xfloat\let\@xfloat\@Fxloat%
2158  \fi%

2159  \@dbtbeORI}%

2160 }%

2161 \ifx\table\undefined\let\@temp@\relax\fi\@temp@%
2162 \def\@Fendtable{% Will be called by \@Fxloat.
2163  \let\@etORI\endtable%................................... \endtable
2164  \def\endtable{\ifFLA\par%
2165  \vskip-\lastskip% make footnotes here
2166  \ifvoid\@mpfootins\else\vskip\skip\@mpfootins%
2167  \footnoterule\unvbox\@mpfootins\fi%
2168  \fi\@etORI\ifFLA\endgroup\fi%
2169  \ifx\@lim\empty\else\marginpar{\@lim@}%
2170  \xdef\@lim{}\fi\let\ifMOVING\iffalse}%

2171 }%

2172 \ifx\endtable\undefined\let\@Fendtable\relax\fi%
2173 \def\@temp@{\def\endtable{\ifFLA\endgroup% \endtable may be \relax
2174  \expandafter\let\csname endtable*\endcsname\endtable%as in endfloat
2175  \fi}%

2176 }%

2177 \ifx\endtable\relax\@temp@% is also used in frenchll for testing purpose
2178 \fi%
2179 \expandafter\def\csname @Fendtable*\endcsname{% Will be called by \@Fxloat.
2180  \expandafter\let%
2181  \expandafter\@dbetORI\csname endtable*\endcsname%......  \endtable*
2182  \expandafter\def%
2183  \csname endtable*\endcsname{\ifFLA\par%
2184  \vskip-\lastskip% make footnotes here
2185  \ifvoid\@mpfootins\else\vskip\skip\@mpfootins%
2186  \footnoterule\unvbox\@mpfootins\fi%
2187  \fi\@dbetORI\ifFLA\endgroup\fi%
2188  \ifx\@lim\empty\else\marginpar{\@lim@}%
2189  \xdef\@lim{}\fi\let\ifMOVING\iffalse}%

2190 }%

2191 \expandafter\ifx\csname endtable*\endcsname\relax%
2192 \expandafter\let\csname endtable*\endcsname\endtable%
2193 \fi% for ams classes
2194 % The following code is for beamer which don't use float for figures/tables.
2195 \expandafter\ifx\csname\string\table\endcsname\undefined\else%
2196  \expandafter\let\expandafter\BfigureORI\csname\string\figure\endcsname%
2197  \expandafter\def\csname\string\figure\endcsname{\@Fendfigure\BfigureORI}%
2198  \expandafter\let\expandafter\BtableORI\csname\string\table\endcsname%
2199  \expandafter\def\csname\string\table\endcsname{\@Fendtable\BtableORI}%
2200 \fi%

2201 %#<

2202 \def\drapeaufg{\ifFLA%...........................................  \drapeaufg
2203  \raggedright\hbadness=6000%
2204  \rightskip=0.3em plus 0.75em\hfuzz=0.4em\relax%
2205  \let\enddrapeaufg\par\fi}%
2206 \def\drapeaufgIN{\ifFLA%................/........................  \drapeaufgIN
2207  \raggedright\hbadness=6000%
2208  \rightskip=0.3em plus 0.75em\hfuzz=6em%
2209  \lefthyphenmin=12\righthyphenmin=10\relax%
2210  \let\enddrapeaufgIN\par\fi}%
2211 \def\drapeaufd{\ifFLA\raggedleft%................................  \drapeaufd

2212  \let\enddrapeaufd\par\fi}%
2213 \def\drapeaufdIN{\ifFLA%.........................................  \drapeaufdIN
2214  \raggedleft\hfuzz=6em%
2215  \lefthyphenmin=12\righthyphenmin=10\relax%
2216  \let\enddrapeaufdIN\par\fi}%

2217 %#>

2218 %\GOfrench{ -emacs pb-
2219 % continuing definition of \GOfrench
2220 \ifx\undefined\Hy@PDFDef\let\Hy@PDFDef\pdfstringdef\fi% ......... \pdfstringdef
2221 \ifx\undefined\Hy@PDFDef\else% For the old hyperref package.
2222  \let\@hpdORI\Hy@PDFDef%
2223  \def\Hy@PDFDef##1##2{\@ifFTYfalse\afterassignment%
2224  \@Fstr\@hpdORI{##1}{##2}\@ifFTYback}%
2225 \fi%
2226 \ifx\pdfstringdef\undefined\else%
2227  \let\pdfstringdef\Hy@PDFDef%
2228 \fi%
2229  \let\@lti\labelitemi\let\@ltii\labelitemii%
2230  \let\@ltiii\labelitemiii\let\@ltiv\labelitemiv%
2231  \@ifo% define French options, GOfrench part 1
2232  \let\@ifo\undefined% now release memory
2233  \@doFh% process language.dat, GOfrench part 2
2234  \let\@doFh\undefined% release memory
2235  \let\hyphex\undefined\let\frhyphex\undefined%
2236  \let\@temp@\undefined%
2237  \let\ifFTY\iffalse\let\ifFTR\iffalse% if begin language isnt
2238  \let\ifFLA\iffalse\let\ifFMA\iffalse\let\ifFH\iffalse% french
2239 % Get original \everypar control command but not hebrew macro.
2240 \def\@tempa##1{\o@everypar{\rl@everypar##1}}%
2241 \ifx\@tempa\everypar\let\TeXeverypar\o@everypar%
2242 \else\let\TeXeverypar=\everypar%
2243 \fi%

2244 %

2245 % As eTeX is bugged (no respect of \csname beginL\endcsname=\relax when
2246 % TeX--XeT option disabled), Philip Taylor suggested the following code
2247 % to replace the test about \beginL:
2248 %              %\ifx\beginL\undefined\else%
2249  \ifx \TeXXeTstate \undefined%
2250  \edef \next {\ifx \beginL \undefined 00\else 01\fi}%
2251  \else%
2252  \edef \next {\ifnum \TeXXeTstate = 0 00\else 01\fi}%
2253  \fi%
2254  \if \next\let\beginL\relax\let\beginR\relax% patch eTeX.
2255  \else%
2256 % assume Left to right for *the* document if TeX--XeT.
2257  \edef\@fepORI{{\the\TeXeverypar}}%
2258  \def\@SetBFWdirection{\csname begin%
2259  \beginFWdirection\endcsname}%
2260  \TeXeverypar={\@SetBFWdirection%
2261  \let\@SetBFWdirection\relax%
2262  {\let\@nodocument\relax% In case hebrew.
2263  \@fepORI}}%
2264  \fi%

2265  \let\ErrFrench\@Ffnt\def\@Ffnt##1{}%
2266 % insure files integrity
2267 \ifx\undefined\babel@core@loaded% already done for Babel in .ldf
2268 \protected@write\@auxout{}{\protect%
2269 \csname auxWARNINGi\protect\endcsname{\protect\typeout%
2270  {-34- this file and other auxiliary files require to %
2271  use the following}}}%
2272 \protected@write\@auxout{}{\protect%
2273 \csname auxWARNINGi\protect\endcsname{\protect\typeout%
2274  {-34- LaTeX packages: \frenchpack!}}}%
2275 \protected@write\@auxout{}{\protect%
2276 \csname auxWARNINGi\protect\endcsname{\protect\typeout%
2277  {-34- check \protect\protect\protect\usepackage%
2278  \protect\space or remove these files. %
2279  Typesetting is aborted!}%
2280  \protect\stop}}%
2281 %\let\auxWARNINGi=\@gobble% set in the preambule
2282 \fi%
2283 % patch inclusion:
2284 \@finput{frpatch.sty}%
2285 \ifx\FSfd@patch\FSfd\else
2286 \f@issue%
2287 \@fw{-42- %
2288  %\@txt@msg{The French patch file (frpatch.sty) is not suitable^^J}%
2289  %\@txt@msg{for this version of the "\frenchpack" package dated \FSfd}%

2290 }%

2291  \batchmode\@@end%
2292 \fi%
2293  \let\@Ffnt\ErrFrench\let\ErrFrench\undefined% ditto
2294 %%% Since "msg" is in use, \InputIfFileExists no more input the file, why?
2295 %%%            \InputIfFileExists{\frenchname.cfg}{% load site config file.
2296 %%%                               \f@issue%
2297 %%%                               \@fw{-48- %\@txt@msg{Lecture du fichier de }%
2298 %%%                                   %\@txt@msg{configuration de \frenchpack}%
2299 %%%                                   }}{}%
2300 %%% so we now call \IfFileExists ... \@finput
2301  \IfFileExists{\frenchname.cfg}{% load site config file.
2302  \f@issue%
2303  \@fw{-48- %\@txt@msg{Lecture du fichier de }%
2304  %\@txt@msg{configuration de \frenchpack}%

2305 }%

2306  \@finput{\frenchname.cfg}}{}%
2307  \beginlanguage}% now the new language (end of \GOfrench)

2308 %

2309  \let\@dORI\document%...................................  \begin{document}
2310  \def\document{% \slidesonly of seminar must not gobble me!
2311  \ifx\noxcomment\undefined\else%
2312  \global\let\@x@hk\xcomment@hook\global\noxcomment\fi%
2313  \ifx\btxselectlanguage\undefined%
2314  \else\ifx\babel@savevariable\undefined%
2315  \f@issue\@fw{-87- %
2316  %\@txt@msg{ERREUR \string: }%
2317  %\@txt@msg{babelbib s'utilise uniquement avec babel}%

2318 }%

2319  \stop%
2320  \fi%
2321  \fi%
2322  \ifx\@bglngpk\babel@savevariable%
2323  \else% Babel loaded after french.
2324  \f@issue\@fw{-71- %
2325  %\@txt@msg{ATTENTION : }%
2326  %\@txt@msg{si babel est utilis\'e, mettre \frenchname\space en option}%

2327 }%

2328  \fi\let\@bglngpk\undefined%
2329  \@dORI% execute original \document
2330  \GOfrench% now initiate the style
2331  \let\GOfrench\undefined% release memory
2332  \ifx\noxcomment\undefined\else\let\xcomment@hook\@x@hk%
2333  \expandafter\xcomment@hook\fi}%
2334 % now reset < ` ' > as other chars
2335 \@makeother`\@makeother<\@makeother>\@makeother'%
2336 % ReRead of aux file at \end{document} may create problems.
2337 % As French things are already applied, so it's unuseful after   \end{document}
2338 \let\enddocumentasusual\enddocument%............................  \enddocument
2339  \def\enddocument{\def\@tempa{\AtEndDocument{\french\f@clearpage%
2340  \global\let\ifCLA\iffalse% No more page, thus no layout.
2341  \let\ifCLAfrench\iffalse%
2342  \endfrench}}%
2343 %%% Notice we specially use \AtEndDocument to avoid AmS hook material
2344 %%% to print outside of the current (final) page the \@setaddresses.
2345  \csname f@lastpage\endcsname% Allow user mods here.
2346  \@CGroup% end any remaining opened << group
2347  \ifFLA% At the real end of document we should
2348  \@tempa% output last page in french.
2349  \def\@tempa{empty}\ifx\@specialstyle\@tempa%
2350  \else\gdef\@specialstyle{french}\fi%
2351  \fi%
2352  \let\GOfrench\relax% Stop to generate \beginL.
2353  \switchtolanguage\englishTeXmods%
2354  \let\f@clearpage\clearpage% Keep \clearpage for \AtEndDocument
2355 % Avoid the lastpage package do a \clearpage until last \french page
2356 \ifx\lastpage@putlabel\undefined% and avoid any change of
2357 \else\let\clearpage\relax% the page counter:
2358  \let\lastpage@putlabelORI\lastpage@putlabel%
2359  \def\lastpage@putlabel{\addtocounter{page}{+1}\lastpage@putlabelORI%
2360  \addtocounter{page}{-1}}%
2361 \fi%
2362  % Redef of \@newl@bel due to Babel \select@language
2363  \ifx\undefined\babel@core@loaded\else% i.e. \@testdef:
2364  \ifx\@testdef\undefined\else% ................  \newlabel
2365  \@gG{@td}{@testdef}{//}{3}\fi%............ \@testdef
2366  \fi%
2367  % Let few stuff expand in \edef for TeX4ht.
2368 \ifx\ConfigureToc\undefined\else%
2369  \let\@ifFTYfalse\relax\let\@ifFTYback\relax%
2370  \@Fstr\let\@Fstr\relax%

2371 \fi%
2372  \enddocumentasusual%

2373 }%

2374 \let\@whatUCH\relax% \@whatUCH is \relax with french light.

2375 %#<

2376 %                  ===============================
2377 %                  |        Hyphenation          |
2378 %                  ===============================

2379 %

2380 % Allow or not hyphenation of words starting with a capital letter
2381 \def\allowfulluchyph{\@noBDfr%
2382  \uchyph=1\let\@whatUCH\allowfulluchyph%.. \allowfulluchyph
2383  \let\@uchbox\empty}%
2384 \def\allowuchyph{\@noBDfr%
2385  \uchyph=1\let\@whatUCH\allowuchyph%.............. \allowuchyph
2386  \let\@uchbox\hbox}%
2387 \def\disallowuchyph{\@noBDfr%
2388  \uchyph=-1%................................ \disallowuchyph
2389  \let\@whatUCH\disallowuchyph\let\@uchbox\hbox}%
2390 \def\notthyphenation{\@noBDfr%
2391  {\tt\hyphenchar\font=-1}%.................\notthyphenation
2392  \let\ifTTH\iffalse}%
2393 \def\tthyphenation{\@noBDfr%
2394  {\tt\hyphenchar\font=`\-}%..................  \tthyphenation
2395  \let\ifTTH\iftrue}%
2396 \let\@whatUCH\allowuchyph% is normaly the TeX default
2397 \let\ifTTH\iffalse% we presume that there no tt hyph. by default
2398 \let\ifFH\iffalse%we assume we start with no French hyphenation (wrong!)

2399 %

2400 % A macro asking to load  a language specific exceptions file.
2401 % Argument provides the language name. File name is in language.dat
2402 \def\hyphex#1{% available before \begin{document}
2403  \if#1\empty%........................................... (\hyphex)
2404  \else%  a general macro for other languages
2405  \edef\@excn{#1}\fi%
2406  \let\if@FE\iftrue}% \hyphex{} before begin document will
2407 %                                  % load exceptions files
2408 \def\frhyphex{% available before \begin{document}
2409  \if@PMF\else\hyphex{\frenchname}\fi}%.................  \frhyphex

2410 %#>

2411 %                  ===============================
2412 %                  |       Translations          |
2413 %                  ===============================

2414 %

2415 % The following is to ``repair'' default captions used in standard V2 styles
2416 % prior October 91 as "Figure n:" and "Table n:".
2417 \def\@eatDP{\@ifNextNB:{\@gobble}{}}%
2418 %\def\@eatP#1{\@ifNextNB.{\@gobble}{}}% for any AmS class
2419 \def\f@ffrench{\ifx\listoffigures\relax\else%
2420  \figurename~\thefigure\ifFTY\captionseparator\fi\fi%
2421  \ifFTY\expandafter\@eatDP\fi}%
2422 \def\f@tfrench{\ifx\listoftables\relax\else%
2423  \tablename~\thetable\ifFTY\captionseparator\fi\fi%

2424  \ifFTY\expandafter\@eatDP\fi}%
2425 \def\unnumberedcaptions#1{\@noBDfr%
2426  %...............................  \unnumberedcaptions
2427  \expandafter\let\csname listof#1s\endcsname\relax%
2428  \ifx\listoffigures\relax\ifx\listoftables\relax%
2429  \let\unnumberedcaptions\undefined%
2430  \fi\fi%

2431 }% 2432 %

2433 % Titles ....................................................... \captionsnames
2434 \@ifundefined{captionsnames}{\def\captionsnames{\relax}\let\@tempa\@currname%
2435 % load English captions  but force language name for ...
2436 \xdef\@currname{fenglish}\@finput{fenglish.sty}\let\@currname\@tempa}{}%
2437 \def\languagename{french}% ... any further msg message with \kbencoding.
2438 \let\ifnonenglishheadings\iftrue% Bypass to a LaTeX slight bug...

2439 %#<

2440 \def\tocreduite#1#2{}% Reduce toc to a toc-summary for \sommaire.
2441 \def\@sEAT#1#2{\@sORI*{\sommairename}}% Normally a \sommaire is short
2442 \def\@cEAT#1#2{\@chORI*{\sommairename}}% and need no headings.
2443 \def\@smr[#1]{\let\@tempa\contentsname% Save it for
2444  \let\contentsname\sommairename% memoir.cls.
2445  \ifx\tableofcontents\undefined\else%
2446  \begingroup\ifcase #1 0% Process \sommaire[1-4]
2447  \or   \let\l@paragraph\tocreduite%.....\sommaire[1]
2448  \let\l@subparagraph\tocreduite%
2449  \or   \let\l@subsubsection\tocreduite%.\sommaire[2]
2450  \let\l@paragraph\tocreduite%
2451  \let\l@subparagraph\tocreduite%
2452  \or   \let\l@subsection\tocreduite%....\sommaire[3] DEFAULT
2453  \let\l@subsubsection\tocreduite%
2454  \let\l@paragraph\tocreduite%
2455  \let\l@subparagraph\tocreduite%
2456  \else \let\l@section\tocreduite%.......\sommaire[4]
2457  \let\l@subsection\tocreduite%
2458  \let\l@subsubsection\tocreduite%
2459  \let\l@paragraph\tocreduite%
2460  \let\l@subparagraph\tocreduite%
2461  \fi%
2462  \let\@sORI\section\let\@chORI\chapter%
2463  \let\section\@sEAT\let\chapter\@sEAT%
2464  \let\@ToCisNOT\relax% let it be a sommaire first ie there is no toc
2465  \def\@starttoc##1{% \@startoc locally redefined to let toc reusable
2466  \ifx\fr@RIfM@cls\undefined% special case AmS document class
2467  \else\chapter*{\sommairename}% print sommaire now
2468  \fi%
2469  \begingroup\makeatletter% any case require a second pass
2470  \immediate\openin\@inputcheck \jobname.##1 %
2471  \if@filesw \expandafter\newwrite\csname tf@##1\endcsname\fi%
2472  \ifeof\@inputcheck \@Ffnt{\jobname.##1}%
2473  \if@filesw\immediate\openout \csname tf@##1\endcsname%
2474  \jobname.##1\relax\fi%
2475  \else\immediate\closein\@inputcheck \relax\@@input \jobname.##1 %
2476  \@ifundefined{@ToCisNOT}{% let a toc be defined further

2477  \if@filesw\immediate\openout \csname tf@##1\endcsname%
2478  \jobname.##1\relax\fi}{}%
2479  \fi\global\@nobreakfalse \endgroup}%
2480  \ifx\fr@RIfM@cls\undefined% special case AmS document class
2481  \else\def\contentsname{}% dont print table of contents at all here!
2482  \fi% in usual cases (LaTeX document classes) we do
2483  \tableofcontents\endgroup% print the sommaire now.
2484  \def\tableofcontents{% new def that records there is a toc in the doc
2485  \ifx\pdfstringdef\undefined% Reset orginal \contentsline
2486  \else\let\contentsline\contentslineORI\fi% for hyperref.
2487  \addtocontents{toc}{\protect%
2488  \let% just to be not
2489  \protect\@ToCisNOT\protect\empty}% as relax
2490  \begingroup% \@starttoc locally redefined to avoid pb with Atari
2491  \def\@starttoc####1{\begingroup% normal def without newdef of tf@
2492  \makeatletter\@input{\jobname.####1}%
2493  \if@filesw\immediate\openout \csname tf@####1\endcsname%
2494  \jobname.####1\relax\fi%
2495  \global\@nobreakfalse \endgroup}%
2496  \@tocORI\endgroup}% now the original toc command
2497  \fi% of \if\tableofcontents\undefined
2498  \let\contentsname\@tempa% Restore it for memoir.cls.
2499  }% \@smr
2500 \def\sommaire{\@ifNextNB[{\@smr}{\@smr[3]}%]......................... \sommaire
2501  }% a Sommaire is a TOC in front of a document
2502 \def\@temp@{\let\if@twocolumn\iffalse}%
2503 \@ifundefined{if@twocolumn}{\@temp@}{}%
2504 \@ifundefined{abstract}{% undefined in book
2505  \def\abstract{\let\@w@s\@gobble%
2506  \if@twocolumn\section*{\abstractname}%
2507  \else\sm@ller\begin{center}%
2508  \textbf{\abstractname\vspace*{-.5em}\vspace*{\z@}}%
2509  \end{center}\quotation\fi}%
2510  \def\endabstract{\if@twocolumn\else\endquotation\fi}}{}%
2511 \@ifundefined{resume}{% there are styles already defining \resume
2512 \def\resume{%.......................................................... \resume
2513  \let\@w@s\@gobble% no warning for \parsep mod.
2514  \abstract}%
2515 \let\endresume\endabstract%......................................... \endresume
2516  }{}%

2517 %

2518 \def\@tempa{%
2519 \def\endkeywords{\@noBDfr}%
2520 \def\keywords{\@noBDfr%.............................................. \keywords
2521  \let\@w@s\@gobble% no warning for \parsep mod.
2522  \quotation\noindent\sm@ller{%
2523  \ifx\fr@RIfM@cls\undefined%
2524  \else\let\textbf\textsc\fi% for AmS classes
2525  \kwname}%
2526  \let\endkeywords=\endquotation}%.................... \endkeywords

2527 }%

2528 \@ifundefined{keywords}{\@tempa}%
2529  {\ifx\fr@RIfM@cls\undefined%

2530  \else\@tempa% do redefine AmS class keyords def
2531  \fi%

2532 }%

2533 \@ifundefined{endkeywords}{\let\endkeywords\relax}{}%

2534 %

2535 \def\motsclef{\keywords\relax% case any arg. %....................... \motsclef
2536  \def\endmotsclef{\endkeywords}}%.................... \endmotsclef

2537 %

2538 \let\ifFTR\iftrue% Default translation is on.
2539 \ifx\texteuro\undefined\else%
2540 \let\textcurrencyORI\textcurrency%.............................. \textcurrency
2541 \def\textcurrency{\ifFTR\expandafter\texteuro%
2542  \else\expandafter\textcurrencyORI%
2543  \fi}%
2544 \fi%
2545 \def\annexe {\@ann{\appendixname}}%................................... \annexe
2546 \def\annexes{\@ann{\appendixname s}}%................................. \annexes
2547 \def\@ann#1{\@noBDfr\leavevmode%
2548  \ifx\fr@RIfM@cls\undefined\else% for AmS classes
2549  \let\chaptername\appendixname% forget Chapter
2550  \fi%
2551  \ifx\chapter\undefined\else%
2552  \par\setcounter{chapter}{0}\setcounter{section}{0}%
2553  \def\@chapapp{\appendixname}\def\thechapter{\Alph{chapter}}%
2554  \addcontentsline{toc}{chapter}{\protect#1}%
2555  \fi}%
2556 \@ifundefined{@restonecolfalse}{\def\@restonecolfalse{}%
2557  \def\@restonecoltrue{}}{}% dummy def
2558 \@ifundefined{@mkboth}{\def\@mkboth#1#2{}}{}% idem
2559 \def\glossaire{\@glo{%\protect%
2560  \glossaryname}}%.............................  \glossaire
2561 \def\glossaires{\@glo{%\protect%
2562  \glossaryname s}}%.........................  \glossaires
2563 \def\@glo#1{\ifx\chapter\undefined\else%
2564  \setcounter{chapter}{0}\setcounter{section}{0}%
2565  \@restonecolfalse\if@twocolumn\@restonecoltrue\onecolumn\fi%
2566  \hbox{}% to simulate any text that will allow the writes
2567  \clearpage% to be done to the file instead of the terminal
2568  \ifx\fr@RIfM@cls\undefined% no need with AmS classes
2569  \chapter*{#1%
2570  \@mkboth{\MakeUppercase{#1}}{\MakeUppercase{#1}}%

2571 }%

2572  \addcontentsline{toc}{chapter}{\protect#1}%
2573  \else\chapter*{#1}% just this for AmS classes
2574  \fi%
2575  \ifx\undefined\@glossaryfile\else%
2576  \immediate\closeout\@glossaryfile%
2577  \ifx\undefined\glossaryentry% dummy def .... \glossaryentry
2578  \long\def\glossaryentry##1##2{\noindent-- ##1\par}%
2579  \fi%
2580  \ifx\undefined\theglossary%
2581 % default glossary defs, type \glossary{[entry :] comments}
2582 % and use \printglossary[filename] default is jobname.gls .....  \printglossary

2583  \let\theglossary\description%
2584  \let\endtheglossary\enddescription%
2585  \let\scan@allowedfalse\makeatother% gglo.ist call this
2586  \def\pfill##1 {}% nullify page num. unneded
2587  \def\@pgf[##1]{\@finput{##1}}%
2588  \def\printglossary{\@ifNextNB[%] emacs
2589  {\@pgf}{\@pgf[\jobname.gls]}}%
2590  \fi%
2591  \fi\fi}% \input \jobname.glo will typeset the glossary

2592 %#>

2593 \def\datefrench{%
2594 \def\todayfrench{\ifx\ier\undefined\def\ier{er}\fi%
2595  \ifnum\day=1\relax 1\ier%........................ \todayfrench
2596  \else \number\day\fi%
2597  \space\ifcase\month\or janvier\or f\'evrier\or mars\or %
2598  avril\or mai\or juin\or juillet\or ao\^ut\or septembre\or %
2599  octobre\or novembre\or d\'ecembre\fi \space\number\year}%
2600 }\datefrench% no need of \datefrench def for babel <3.6
2601 \if@filesw
2602  \def\ordinalSecondNam{{s}econd}%
2603  \def\ordinalSecondName{{s}econde}%
2604 \else%
2605  \def\ordinalSecondNam{{d}euxi\`eme}%
2606  \let\ordinalSecondName\ordinalSecondNam%
2607 \fi%
2608  \def\@osn#1#2{\expandafter\ifx\csname#1osn\endcsname%
2609  \relax#2\else\csname#1osn\endcsname\fi}%
2610  \def\ordinal#1{\ifcase\value{#1}\or {p}remier%
2611  \or\@osn{#1}{\ordinalSecondNam}\else\ordin@l{#1}\fi}%
2612  \def\ordin@l#1{\ifcase\value{#1}\or\or\or %
2613  {t}roisi\`eme\if@filesw{\protected@write\@auxout{}{%
2614  \protect\expandafter%
2615  \protect\gdef\protect\csname#1osn%
2616  \protect\endcsname%
2617  {{d}euxi\`eme}}}%
2618  \fi%
2619  \or {q}uatri\`eme\or {c}inqui\`eme\or {s}ixi\`eme\or %
2620  {s}epti\`eme\or {h}uiti\`eme\or {n}euvi\`eme\or {d}ixi\`eme\or %
2621  {o}nzi\`eme\or {d}ouzi\`eme\or {t}reizi\`eme\or {q}uatorzi\`eme\or %
2622  {q}uinzi\`eme\or {s}eizi\`eme\or {d}ix-septi\`eme\or {d}ix-huiti\`eme\or %
2623  {d}ix-neuvi\`eme\or {v}ingti\`eme\fi}%
2624  \def\ordinale#1{\ifcase\value{#1}\or {p}remi\`ere%
2625  \or\@osn{#1}{\ordinalSecondName}\else\ordin@l{#1}\fi}%
2626  \def\Ordinal{\expandafter\uppercase\ordinal}%
2627  \def\Ordinale{\expandafter\uppercase\ordinale}%

2628 %

2629 \def\captionsfrench{%.........................................  \captionsfrench
2630 \ifFTR% Is French translation allowed?
2631 \ifx\captionsnames\captionsfrench\else%
2632  \let\@tdORI\today%................................................... \today
2633  \let\f@fORI\fnum@figure%.........................................  \fnum@...
2634  \let\f@tORI\fnum@table%
2635  \let\@cnsORI\captionsnames%

2636 % The following for styles or classes: article, report and book
2637  \def\pagename{page}%
2638  \def\refname{R\'ef\'erences}%
2639  \def\abstractname{R\'esum\'e}%
2640 \ifx\bibname\undefined\else%
2641  \def\bibname{Bibliographie}%
2642 \fi%
2643 \ifx\btxselectlanguage\undefined% Don't call \bibsfrench if babelbib loaded.
2644  \csname bibsfrench\endcsname% more bibs-names if any.
2645 \fi%
2646  \def\contentsname{Table des mati\`eres}%
2647  \def\listfigurename{Table des figures}%
2648  \def\listtablename{Liste des tableaux}%
2649 \ifx\listalgorithmname\undefined\else%
2650  \def\ALG@name{algorithme}%
2651  \def\listalgorithmname{Liste des \ALG@name s}%
2652 \fi%
2653  \def\indexname{Index}%
2654  \def\seename{\emph{voir}}% used normally in makeidx.sty
2655  \def\seealsoname{\emph{voir aussi}}% added macro  \seealso
2656  \def\figurename{\textsc{Fig.}}%
2657  \def\tablename{\textsc{Tab.}}%
2658  \def\sommairename{Sommaire}%
2659  \def\partname{% "Premi\`ere partie" instead of "Part I"
2660  \ignorespaces\Ordinale{part}\space partie%
2661  \@RPtNoInDoc\noexpand\@RPtNoInToc}%
2662  \def\glossaryname{Glossaire}% added
2663  \def\kwname{\textbf{Mots-cl\'e} : }%
2664  \def\draftname{- \noexpand\351preuve -}% PostScript IsoLatin1 \'epreuve
2665  \def\prefacename{Pr\'eface}%
2666 \ifx\proofname\undefined\else\def\proofname{D\'emonstration}\fi%

2667 %

2668 % Comment for further dev:
2669 % Next ones depend from the class of document in use, thus the translations
2670 % should apply _only_when the corresponding class is loaded. Thus it should
2671 % be better to define these names when loading french, not dynamically at
2672 % run time when typesetting the document.

2673 %

2674 \ifx\fr@RIfM@cls\undefined% figure and table captions modified
2675  \let\fnum@figure\f@ffrench% except for any AmSLaTeX V1.2 class
2676  \let\fnum@table\f@tfrench% for which it remains unsolved pbs.
2677  \def\@RPtNoInToc{}%
2678  \def\@RPtNoInDoc{\def\thepart{}}% nullify \thepart
2679  \else\def\@RPtNoInToc##1.{.}% remove until dot
2680  \def\@RPtNoInDoc##1\thepart{}% remove until value
2681 %   \let\@eatDP\@eatP%
2682 \fi%
2683 % The following is only for letter
2684 \ifx\opening\undefined\else%
2685  \def\headtoname{}%
2686  \def\ccname{c.c. }% copie conforme
2687  \def\enclname{P.j. }% Pieces jointes
2688  \def\PSname{P.-S. :}% Post-Scriptum

2689  \def\Objectname{Objet :}% Object of the letter
2690  \def\YourRefname{v/r\'ef. :}% Your reference number
2691  \def\OurRefname{n/r\'ef. :}% Our reference number
2692  \def\emailname{m.\'el. :}% Email address
2693 \fi%
2694 % The following is for seminar
2695 \ifx\slidename\undefined\else%
2696  \def\slidename{Transparent}%
2697  \def\listslidename{Liste des transparents}%
2698 \fi%
2699 % The following is for endnotes 98/01
2700 \ifx\notesname\undefined\else%
2701  \def\notesname{Notes}%
2702 \fi%
2703 % The following is only for report and book ...
2704  \def\chaptername{Chapitre}%
2705  \def\appendixname{Annexe}%
2706  \let\captionsnames\captionsfrench%
2707 \fi% \else of \ifx\captionsnames\captionsfrench%
2708  \let\today\todayfrench%
2709 \def\@cORI{\@cnsORI% Restore original caption names
2710  \let\today\@tdORI%
2711  \let\fnum@figure\f@fORI%
2712  \let\fnum@table\f@tORI}%
2713 \fi% \ifFTR
2714 }%end of captionsfrench

2715 %#<

2716 \iffrenchbibliography%
2717 \ifx\@rbibstyid\undefined%
2718  \let\@rbibstyid\empty%
2719  \ifx\jb@pkg@name\undefined\else%
2720  \def\@rbibstyid{jb}%
2721  \fi%
2722 \fi%
2723 \ifx\bibsfrench\undefined%
2724  \edef\@tempa{fr\@rbibstyid bib.ldf}%
2725  \IfFileExists{\@tempa}{%
2726 \f@issue%
2727 \@fW{ -65- %
2728  %\@txt@msg{\frenchname.sty charge }%
2729  %\@txt@msg{les traductions pour la bibliographie \string:}%
2730  }\@finput{\@tempa}}{}%
2731 \fi%
2732 \ifx\bibsenglish\relax%
2733  \edef\@tempa{en\@rbibstyid bib.ldf}%
2734  \InputIfFileExists{\@tempa}{}{}%
2735 \fi%
2736 \fi%

2737 %#>

2738 %%%%%%%%%%%%%%%%%%
2739 %                  ===============================
2740 %                  |           Layout            |
2741 %                  ===============================

2742 %

2743 % NB: See elsewhere in the code for appearance of \ifFLA, to find
2744 %     all French layout coding.
2745 \let\@tlORI\@trivlist%
2746 \def\frenchtrivsepwarnings{\let\ifFTSW\iftrue}%........  \frenchtrivsepwarnings
2747 \def\nofrenchtrivsepwarnings{\let\ifFTSW\iffalse}%...  \nofrenchtrivsepwarnings
2748 \long\def\frtrivseplengths#1{%............................... \frtrivseplengths
2749  \nofrenchtrivsepwarnings%
2750  \long\def\fr@tsl{#1}%

2751 }%

2752 \def\fr@tsl{\setlength{\parsep}{0.2ex plus 0.1ex minus 0.1ex}%
2753  \setlength{\itemsep}{0.2ex plus 0.1ex minus 0.1ex}%
2754  \setlength{\topsep}{0.4ex plus 0.2ex minus 0.2ex}%
2755  \setlength{\partopsep}{1.6ex plus 0.8ex minus 0.8ex}%

2756 }%

2757 \def\frenchtrivsep{\ifFLA\def\@trivlist{%......................  \frenchtrivsep
2758  \fr@tsl\@tlORI}%
2759  \fi}
2760 \def\nofrenchtrivsep{\let\@trivlist\@tlORI}%.................  \nofrenchtrivsep
2761 \@ifundefined{@afterindenttrue}{\let\@afterindenttrue\relax%
2762  \let\@afterindentfalse\relax}{}%
2763 \let\@aifORI\@afterindentfalse% save first indent
2764 \edef\@piORI{\the\parindent}% save \parindent
2765 \begingroup \catcode `| =0  \catcode `[ = 1 \catcode`] =2%
2766  \catcode `\{=12 \catcode `\}=12 \catcode`\\=12%
2767  |gdef|@xversatim#1\end{versatim}[#1|end[versatim]]%
2768  |endgroup% running macro for versatim

2769 %

2770 \let\@FIM@\relax% Macro is relax with french light

2771 %#<

2772 \def\@FIM@{\ifCG\else\ifFLA\ifEPG\ifEPGR\else\leftguillemets\fi\fi\fi\fi}%
2773 \let\checkitemguillemets\@FIM@%

2774 %#>

2775 \def\fr@idf{\let\@afterindentfalse\@afterindenttrue\@afterindenttrue}%
2776 \def\fr@nidf{\let\@afterindentfalse\@aifORI\@afterindentfalse}%
2777 \ifx\titlespacing\undefined%
2778  \let\which@indent\fr@idf% French default is \indentfirst
2779 \else\let\which@indent\fr@nidf% but let's titlesec package decide if loaded.
2780 \fi%
2781 \def\fr@lbi{\def\labelitemi{\@FIM@--}\def\labelitemii{\@FIM@--}%
2782  \def\labelitemiii{\@FIM@--}\def\labelitemiv{\@FIM@--}%

2783 }%

2784 \long\def\frlabelitems#1{\ifFLA\long\def\fr@lbi{#1}%............. \frlabelitems
2785  \fr@lbi\fi}%
2786 \def\@FIM{% Correct labels in itemize environement ..............  \labelitem..
2787  \fr@lbi%
2788  \def\indentfirst{\ifFLA\fr@idf\fi}%.................... \indentfirst
2789  \def\nonindentfirst{\ifFLA\fr@nidf\fi}%............. \nonindentfirst
2790  \which@indent% Apply requested indent in first paragraph

2791 %#<

2792  % The "order" list ....................  \begin{order} & \end{order}
2793  \def\labelfrenchenumi{\@FIM@\quando={\arabic{enumi}}}%
2794  \def\labelfrenchenumii{\@FIM@\quando={\arabic{enumii}}}%

2795  \def\labelfrenchenumiii{\@FIM@\quando={\arabic{enumiii}}}%
2796  \def\labelfrenchenumiv{\@FIM@\quando={\arabic{enumiv}}}%
2797  \def\order{\ifnum \@enumdepth >3 \@toodeep\else%
2798  \advance\@enumdepth \@ne%
2799  \edef\@enumctr{enum\romannumeral\the\@enumdepth}\list%
2800  {\csname labelfrench\@enumctr\endcsname}%
2801  {\usecounter{\@enumctr}%
2802  \ifFLA% French layout might be switched after the definition
2803  \addtolength{\leftmargin}{0.9em}% allow a second digit and <<
2804  \fi%
2805  \def\makelabel####1{\hss\llap{####1}}}\fi}% \order
2806  \let\endorder =\endlist%
2807  % The "versatim" environment  ....  \begin{versatim} & \end{versatim}
2808  % inapropriate for multi-level of indentation!
2809  \def\versatim{\bgroup\let\@w@s\@gobble% nullify warning 58
2810  \ifFLA% protect our new settings
2811  \let\dospecials\@dsversa% our specials for versatim
2812  \def\@xobeysp{\leavevmode{}\space}% allow hypenation at  space
2813  \ifx\verbatim@font\undefined\let\verbatim@font=\tt\fi%
2814  \let\@ttORI\verbatim@font%  save the original \tt definition
2815  \def\verbatim@font{\@ttORI% execute it first to know the font
2816  \verse% now enter verse environment (\itemindent is negative)
2817  \vskip-2\parskip%  remove vertical   par   skips
2818  \vskip-1\partopsep\vskip-\topsep%
2819  \leavevmode%
2820  \leftskip=-2\itemindent% the margin is increased
2821  \parindent=2\itemindent% each line will go in the margin
2822  \parskip\z@% no more interline (interpar) spacing
2823  \pretolerance=\@M\tolerance=\@M\hbadness=\@M% max tolerance
2824  \hyphenchar\the\font=`\-}%
2825  \let\tt=\verbatim@font% useful outside NFSS
2826  \fi% ifFLA end of \verbatim@font new def
2827  \let\@xverbatim\@xversatim% define environment
2828  \verbatim}% now enter usual verbatim
2829  \def\endversatim{\endverse%
2830  \ifTTH\else\hyphenchar\the\font=-1\fi% was a global def
2831  \endverbatim\ifFLA\vskip+1\partopsep\fi\egroup}%
2832  \@ifundefined{vers}{%
2833  \def\@vers##1{\def\@tempa ####1##1{\leavevmode\null####1%
2834  \endgroup}\@tempa}%
2835  \def\vers{%................................................ \vers
2836  \begingroup% protect local modifications
2837  \def\@xobeysp{\ifFLA\else\penalty\@M\fi\space}% allow
2838  \catcode``=13 \@noligs \tt% hyphenation at blank  space
2839  % word hyphenation done only if \tthyphenation typed
2840  \ifFLA\let\dospecials\@dsversa\fi%
2841  \let\do\@makeother\dospecials\@vobeyspaces \frenchspacing%
2842  \@vers}}{}%
2843  \@ifundefined{verbatimfile}%........................... \verbatimfile
2844  {\def\verbatimfile##1{\begingroup\@verbatim\frenchspacing
2845  \@vobeyspaces\input ##1\endgroup}}{}%

2846 %#>

2847 }% end of \@FIM

2848 %===================== for the letter ...
2849 \def\@temp@{% a temporary def of all material
2850 \let\@ps@fp\ps@firstpage%
2851 \def\@opening{%
2852 \let\@wideletter\relax% Definitions for french light here.
2853 \let\emailadd\@empty\let\@yourref\@empty\let\@ourref\@empty%
2854 \let\@object\@empty%

2855 %#<

2856 \@ifundefined{wideletter}{%
2857 \def\@wideletter{}\def\wideletter{%.............................. \wideletter
2858  \def\@wideletter{\leftskip-0.25\indentedwidth}}}{}%
2859 \@ifundefined{email}{%
2860 \def\email####1{\def\emailadd{\texttt{####1}}}}{}%.................... \email
2861  \@ifundefined{emailadd}{\def\emailadd{}}{}%
2862 \@ifundefined{yourref}{%
2863 \def\yourref####1{\def\@yourref{####1}}}{}%......................... \yourref
2864  \@ifundefined{@yourref}{\def\@yourref{}}{}%
2865 \@ifundefined{ourref}{%
2866 \def\ourref####1{\def\@ourref{####1}}}{}%............................ \ourref
2867  \@ifundefined{@ourref}{\def\@ourref{}}{}%
2868 \@ifundefined{object}{%
2869 \def\object####1{\def\@object{####1}}}{}%............................ \object
2870  \@ifundefined{@object}{\def\@object{}}{}%
2871 \@ifundefined{PS}{%
2872 \def\PS####1{{\raggedright\PSname\space ####1}}}{}%...................... \PS

2873 %#>

2874 \def\ps@firstpage{\ifFLA%
2875  \advance\topmargin by -20\p@% I also suggest to add in
2876  % document preambule: \advance\textheight by 20\p@%
2877  \def\@oddhead{\ifx\undefined\formhead\else%
2878  \bgroup\hss\formhead\hss\egroup\fi}%
2879  \def\@oddfoot{\raisebox{-45\p@}[\z@]%
2880  {\hbox to \textwidth{%
2881  \ifcase \@ptsize\relax%
2882  \normalsize%
2883  \or      \sm@ller%
2884  \or      \footnotesize%
2885  \fi%
2886  %\hspace*{100\p@}\fromlocation \hfill \telephonenum
2887  \ifx\undefined\formfoot\hfill\else%
2888  \bgroup\hss\formfoot\hss\egroup\fi%
2889  }}\hss}%
2890  \def\@evenhead{}\def\@evenfoot{}%
2891  \else\@ps@fp\fi}%
2892 \long\def\opening####1{% ..........................................  \opening
2893  \ifFLA%%% these 3 counts not saved for other languages (unnecessary)
2894  \advance\indentedwidth   by -0.25\longindentation%
2895  \advance\longindentation by  0.22\textwidth%
2896  \advance\parindent       by  1.5em% null in standard .....

2897 %%%

2898  \let\nopagenumbers\relax% Avoid to switch to empty page style.
2899  \thispagestyle{firstpage}% set firstpage allowing the user to
2900  % use \@oddhead & \@oddfoot in \ps@firstpage

2901  \raggedbottom% force address to remain in the same place
2902  \ifx\@empty\fromlocation\location{Le}\fi%
2903  \ifx\@empty\fromaddress\let\fromaddress\space\fi% make an blank box
2904  {\raggedright\hspace*{-0.25\indentedwidth}%
2905  \parbox[t]{0.5\textwidth}{\ignorespaces%
2906  \vbox to 0\p@{\fromaddress\vss}}%
2907  \\*[1.75\baselineskip]%
2908 %             \\*[0.65in]% dont let the date appearing in the window
2909 %             \vspace*{-5\baselineskip}\vspace*{60\p@}% error average
2910  \par}%
2911  \ifx\@empty\toname% in fact \toname is never empty in LaTeX V2.09!
2912  % except if you code \begin{letter}{}
2913  {\raggedleft\bgroup\fromlocation\space\@date\egroup\par}%
2914  \else%
2915  {\raggedleft\begin{tabular}{l}\ignorespaces%
2916 %              \toname\\ \toaddress\\*[8\parskip]%
2917  \toname\\ \toaddress\\*[6\parskip]%
2918  \fromlocation\space\@date\end{tabular}\par}%
2919  \fi%
2920  \ifx\@empty\@ourref\else%
2921  {\raggedright \hspace*{-0.25\indentedwidth}%
2922  \OurRefname\space\@ourref \par}%
2923  \fi%
2924  \ifx\@empty\@yourref\else%
2925  {\raggedright \hspace*{-0.25\indentedwidth}%
2926  \YourRefname\space\@yourref \par}%
2927  \fi%
2928  \ifx\@empty\@object\else%
2929  {\raggedright \hspace*{-0.25\indentedwidth}%
2930  \textbf{\Objectname}\space\@object \par}%
2931  \fi%
2932  \par\vspace*{3\parskip}%
2933  \noindent####1\hfill\vspace*{3\parskip}% no need of \linebreak%
2934  \@wideletter%
2935  \else\@oORI{####1}%
2936  \fi}}%
2937 \def\@closing{%
2938  \def\closing{\fclosing@[9]}%......................................  \closing
2939  \def\fclosing{\@ifNextNB[{\fclosing@}{\fclosing@[9]}%]...........  \fclosing

2940 }%

2941  \long\def\fclosing@[####1]####2{%
2942  \ifFLA%
2943  \par%\nobreak
2944  \vspace{\parskip}\stopbreaks%
2945  \ignorespaces ####2\\[####1\medskipamount]%
2946  \ifx\@empty\fromaddress\else%
2947  \hspace*{-0.25\indentedwidth}%
2948  \hspace*{\longindentation}\fi%
2949  {\raggedright\begin{tabular}{l}\ignorespaces%
2950  \ifx\@empty\fromsig%
2951  \fromname%
2952  \else \fromsig \fi%
2953  \ifx\@empty\emailadd\else\\{\footnotesize%

2954  \emph{\emailname} \emailadd}\fi%
2955  \strut\end{tabular}}\par%
2956  \vskip 0pt plus 1fil% un peu d'elasticite
2957  \else\@cloORI{####2}%
2958  \fi}%
2959  \def\endletter{\ifFLA\vskip 0pt plus 3fil\fi% un peu d'elasticite
2960  \@elORI}}% @closing
2961 \@ifundefined{opening}{\def\@opening{}\def\@closing{}}%
2962  {\let\@oORI\opening\let\@cloORI\closing%
2963  \let\@elORI\endletter%
2964  \@opening\@closing}%
2965 }% \@temp@
2966 \ifx\opening\undefined\let\@temp@\relax\fi%
2967 \@temp@% only if letter .....
2968 %=====================

2969 %#<

2970 %............................................................ \begin{figurette}
2971 \let\ifFLA\iffalse% dummy def for next processing
2972 \def\@temp@{%
2973 \def\figurette{\@noBDfr%
2974  \ifx\@fgeORI\undefined\figure\fi% can't work without figure
2975  \ifFLA\bgroup%
2976  \def\@xfloat####1[h]{%
2977  \expandafter\let\csname end####1\endcsname\endfigurette%
2978  \vskip\intextsep\def\@captype{####1}\parindent\z@}%
2979  \@fgeORI[h]\else\figure[h]\fi}%
2980 \def\endfigurette{\@noBDfr%
2981  %..........................................   \end{figurette}
2982  \ifFLA\vskip\intextsep\egroup\else\@efgeORI\fi%
2983  \ifx\@lim\empty\else\marginpar{\@lim@}\xdef\@lim{}\fi%
2984  \let\ifMOVING\iffalse}%

2985 }%

2986 \ifx\figure\undefined\def\@temp@{}\fi%only when \figure is already defined
2987 \@temp@%

2988 %#>

2989 % Reset chapter counter when starting a part --> \GOfrench

2990 %

2991 % Check for AmS package's class
2992 \def\@tempa{\let\fr@RIfM@cls\undefined}% will set the no AmS class loaded flag
2993 \let\fr@RIfM@cls\RIfM@% if no AmS package, no class as well
2994 \ifx\RIfM@\undefined\else%
2995 \expandafter\ifx\csname @classname\endcsname\relax\@tempa%
2996  \else\def\@tempb#1#2#3#4\@nil{%
2997  \if#1a\if#2m\if#3s\else\@tempa\fi%
2998  \else\@tempa\fi\else\@tempa\fi}%
2999  \expandafter\@tempb\@classname\@nil%
3000  \fi%
3001 \fi% \RIfM@\undefined

3002 %

3003 % This is the French pagestyle to use instead in place of plain wrongly
3004 % used by LaTeX in many situations. Quite simple one................ \ps@french
3005 \def\@temp@{\def\ps@french{\if@fancyplain\ps@plain@fancy\else\ps@plain\fi}}%
3006 \ifx\ps@fancyplain\undefined% do nothing outside fancyheadings

3007 \ifx\fr@RIfM@cls\undefined\def\ps@french{}% in standard LaTeX, but not
3008 \else\def\ps@french{\global\topskip\normaltopskip}% with AmS classes.
3009 \fi% \fr@RIfM@cls\undefined%
3010 \else\@temp@% to avoid pb in case \if@fancy... undefined
3011 \fi%
3012 \let\ps@frenchORI\ps@french% Save final french page style def.
3013 \let\@sdORI\secdef% will be used at each new sectioning.
3014 \def\nofrenchpagestyle{\let\secdef\@sdORI}%................. \nofrenchpagestyle
3015 \def\frenchpagestyle{%........................................ \frenchpagestyle
3016  \def\secdef{\ifFLA\thispagestyle{french}\fi\@sdORI}%.............. (\secdef)

3017 }%

3018 \frenchpagestyle% Now run the french page style if \frenchlayout.
3019 \ifx\aliaspagestyle\undefined% Is memoir.cls loaded? no:
3020 \def\nobeginingfolio{\let\ps@french\ps@empty}%................ \nobeginingfolio
3021 \else%
3022 \def\nobeginingfolio{\let\ps@french\ps@empty% yes:
3023  \aliaspagestyle{chapter}{empty}%

3024 }%

3025 \fi%
3026 \def\beginingfolio{\let\ps@french\ps@frenchORI%................. \beginingfolio
3027  \frenchpagestyle}% This is the default value.

3028 %#<

3029 \@ifundefined{nopagenumbers}{%don't run everywhere............ (\nopagenumbers)
3030  \def\nopagenumbers{\ifFLA\pagestyle{empty}%
3031  \thispagestyle{empty}\fi}%
3032  }{}%
3033 \def\ifFLA{\ErrFrench}%

3034 %

3035  \newif\ifnonvoid% still an outer def.
3036 \def\@desarm{% the \noeveryparguillemets processing
3037  \newbox\@FrBoxi\newbox\@FrBoxii\newbox\@FrBoxiii%
3038  \newbox\@FrBoxiiii\newbox\@FrBoxvi\newbox\@FrBoxvii\newbox\@FrBoxQuotes%
3039  \ifx\@FrDimenS\undefined\newdimen\@FrDimenS\fi%
3040  \def\@setpartozero{\widowpenalty=\z@\clubpenalty=\z@%
3041  \interlinepenalty=\z@\brokenpenalty=\z@\displaywidowpenalty=\z@}%
3042  \def\nonvoidtrue{\let\ifnonvoid\iftrue}%
3043  \def\nonvoidfalse{\let\ifnonvoid\iffalse}%
3044  \def\@transfervbox##1##2{\nonvoidtrue%
3045  \loop%
3046  \setbox\@FrBoxi=\vbox{\unvbox##1\global\setbox\@FrBoxiii=\lastbox%
3047  \unskip}%
3048  \ifvoid\@FrBoxiii\nonvoidfalse\fi%
3049  \ifnonvoid%
3050  \setbox\@FrBoxii=\vbox{\unvbox##2\box\@FrBoxiii}%
3051  \setbox##1=\box\@FrBoxi\setbox##2=\box\@FrBoxii%
3052  \repeat}%
3053  \def\@transferaddvbox##1##2{\nonvoidtrue%
3054  \setbox\@FrBoxi=\vbox{\unvbox##1\global\setbox\@FrBoxiii=\lastbox%
3055  \unskip}%
3056  \setbox##2=\vbox{\box\@FrBoxiii}%
3057  \setbox##1=\box\@FrBoxi%
3058  \loop%
3059  \setbox\@FrBoxi=\vbox{\unvbox##1\global\setbox\@FrBoxiii=\lastbox%

3060  \unskip}%
3061  \ifvoid\@FrBoxiii\nonvoidfalse\setbox##1=\box\@FrBoxi\fi%
3062  \ifnonvoid%
3063  \setbox\@FrBoxii=\vbox{\unvbox##2%
3064  \hbox to \@FrDimen{\copy\@FrBoxQuotes\unhbox\@FrBoxiii}}%
3065  \setbox##1=\box\@FrBoxi\setbox##2=\box\@FrBoxii%
3066  \repeat}%
3067  \def\@sendtopage##1{\nonvoidtrue%
3068  \loop%
3069  \setbox\@FrBoxi=\vbox{\unvbox##1\global\setbox\@FrBoxiii=\lastbox%
3070  \unskip}%
3071  \ifvoid\@FrBoxiii\nonvoidfalse\setbox##1=\box\@FrBoxi\fi%
3072  \ifnonvoid%
3073  \unhbox\@FrBoxiii\unskip\break%
3074  \setbox##1=\box\@FrBoxi%
3075  \repeat}%
3076  \def\@stared{\egroup%
3077  \@transfervbox\@FrBoxvi\@FrBoxvii%
3078  \@transferaddvbox\@FrBoxvii\@FrBoxvi%
3079  \setbox\@FrBoxvii=\vbox{\unvbox\@FrBoxvi%
3080  \global\setbox\@FrBoxiiii=\lastbox\unskip}%
3081  \@transfervbox\@FrBoxvii\@FrBoxvi%
3082  \noindent \@sendtopage\@FrBoxvi%
3083  \unhbox\@FrBoxiiii\unskip\unskip\unpenalty}%
3084  \def\@fniv2{\egroup%
3085  \@transfervbox\@FrBoxvi\@FrBoxvii%
3086  \@transferaddvbox\@FrBoxvii\@FrBoxvi%
3087  \setbox\@FrBoxvii=\vbox{\unvbox\@FrBoxvi%
3088  \global\setbox\@FrBoxiiii=\lastbox\unskip}%
3089  \@transfervbox\@FrBoxvii\@FrBoxvi%
3090  \noindent \@sendtopage\@FrBoxvi%
3091  \setbox\@FrBoxvii=\vbox\bgroup\@setpartozero%
3092  \noindent \unhbox\@FrBoxiiii\unskip\unskip\unpenalty}%
3093  \def\@qqguill{\relax}%
3094  \def\@staring{\global\setbox\@FrBoxQuotes=\hbox to 0.81em{\@qqguill}\egroup%
3095  \setbox\@FrBoxvi=\vbox{\unvbox\@FrBoxvii%
3096  \global\setbox\@FrBoxiiii=\lastbox\unskip}%
3097  \@transfervbox\@FrBoxvi\@FrBoxvii%
3098  \noindent\@sendtopage\@FrBoxvii%
3099  \setbox\@FrBoxvi=\vbox\bgroup\@setpartozero%
3100  \hangindent=\wd\@FrBoxQuotes\hangafter=1%
3101  \setbox\@FrBoxvii=\hbox{\unhcopy\@FrBoxiiii\unskip\unskip%
3102  \unpenalty}%
3103  \@FrDimenS=\@FrDimen \advance\@FrDimenS by -2em%
3104  \ifvoid\@FrBoxiiii\indent\copy\@FrBoxQuotes%
3105  \else%
3106  \parindent=\z@%
3107  \ifdim \wd\@FrBoxvii>\@FrDimenS \unhbox\@FrBoxvii\break%
3108  \else \unhbox\@FrBoxvii%
3109  \fi\fi}%
3110  \def\@qquotes{\setbox\@FrBoxvii=\vbox\bgroup\@setpartozero}%
3111 }% end \@desarm

3112 %#>

3113 \def\@EIM{\def\labelitemi{\@lti}\def\labelitemii{\@ltii}%
3114  \def\labelitemiii{\@ltiii}\def\labelitemiv{\@ltiv}%
3115  \let\@afterindentfalse\@aifORI\@afterindentfalse%
3116  \parindent\@piORI}% restore \parindent
3117 \let\@FL\relax% \@FL is \relax with french light.

3118 %#<

3119 {\catcode`.=12\catcode`p=12\catcode`t=12\gdef\auTo@gf#1.#2pt{#1}}%
3120 \def\@FL{% LETTRINES defs
3121 \def\automaticlettrine{%
3122  \ifx\lettrinefontname\undefined%..... \automaticlettrine
3123  \def\@tempa####1 ####2\@@{% extract font name
3124  \def\lettrinefontname{####1}}%
3125  \edef\@tempb{ }%
3126  \expandafter\@tempa\fontname%
3127  \expandafter\font\@tempb\@@\fi%
3128  \let\sv@lf=\lettrinefont}%
3129 \def\noautomaticlettrine{%
3130  \let\lettrinefontname=\undefined%.\noautomaticlettrine
3131  \let\lettrinefont=\sv@lf}% reset font
3132 \ifx\lettrine\undefined%............................................. \lettrine
3133 \def\lettrine{\par%
3134  \let\@tempa\relax%
3135  \def\@tempa{\def\@fbr{\fboxrule=\z@}%
3136  \protect\@lettrineS%

3137 }%

3138  \@tempa}%
3139 \if@PMF\def\@Ettrine[##1]{##1}\let\@ettrine\relax\else%
3140  \def\@ettrine##1##2\par{\bgroup\parskip=\z@% NFSS requires a
3141  {\ly\xdef\bef@ly{\the\font}}% global def!
3142  \let\newpage=\relax\let\clearpage=\relax%
3143  \let\cleardoublepage=\relax%
3144  \edef\bef@fnt{\the\font}%
3145  \ifCG\def\bef@let{}%
3146  \else\def\bef@let{\bef@fnt\def\ly{\bef@ly}%
3147  \leftguillemets\space}%
3148  \fi\@@ttrine{##1}{##2}\egroup}%
3149  \def\@@ttrine##1##2{\ifFLA\def\@@ttrnxt{\@@@trine##1\@@{##2}}%
3150  \else\def\@@ttrnxt{##1\space\ignorespaces##2}%
3151  \fi% fol.hbox to start a new par after 1 line lett.
3152  \@@ttrnxt\unskip\par% First \par is for lineno package.
3153  \f@par% The second \par ends the \lettrine.
3154  \@nobreakfalse}% Allow breaks after that paragraph.
3155  \def\@@@trine##1##2\@@##3{\@fbr\TeXeverypar{}%
3156 %%% start of automatic font calculation (a piece of code coming from Ronan)
3157  \ifx\lettrinefontname\undefined\let\auTo@lh\undefined%
3158  \else\let\auTo@lh\lettrinehang%
3159  \ifx\auTo@lh\undefined\def\auTo@lh{2}\fi%
3160  \bgroup%
3161  \ifx\@htfreq\undefined\newdimen\@htfreq\newdimen\@htfbase\fi%
3162  \setbox0=\hbox{M}\@htfreq=\ht0%
3163  \def\dimentocount####1{\expandafter\auTo@gf\the####1}%
3164  \font\@fontreq=\lettrinefontname%
3165  \setbox0=\hbox{\@fontreq ##1}\@htfbase=\ht0%

3166  \advance\@htfreq by \auTo@lh\baselineskip%
3167  \advance\@htfreq by \lineskip% inapropriate increment
3168  \advance\@htfreq by -\baselineskip%
3169  \multiply\@htfreq by 100 % To be more precise
3170  \multiply\@htfbase by 100 %
3171  \divide\@htfreq by \dimentocount\@htfbase%\relax
3172  \multiply\@htfreq by \@m%
3173 \global\font\lettrinefont=\lettrinefontname\space scaled \dimentocount\@htfreq%
3174  \egroup%
3175  \fi%
3176 %%% end of automatic font calculation
3177  \setbox0\hbox{%\fbox is eliminated for that measuring
3178  {\shortstack{\bef@let{\lettrinefont##1}\relax%
3179  \ifdim\fontdimen\@ne\font>\z@\/\space\fi}}}%
3180  \@FrDimenH=\ht0\advance\@FrDimenH by\dp0%
3181  \@FrDimenS=\@FrDimenH\advance\@FrDimenS by\fboxsep%
3182  \ifdim\baselineskip\superieura0pt%
3183  \divide\@FrDimenS by\baselineskip%
3184  \fi\@FrCount=\@FrDimenS%
3185  \@FrDimen=\baselineskip\multiply\@FrDimen by-\@FrCount%
3186  \advance\@FrDimen by\@FrDimenH%
3187  \ifdim\@FrDimen>0.025\baselineskip \advance\@FrCount by 1\fi%
3188  \ifx\auTo@lh\undefined\else\@FrCount=\auTo@lh\fi%
3189  \ifx\lettrinehang\undefined\else\@FrCount=\lettrinehang\fi%
3190  \@FrDimenI=\wd0%
3191  \ifdim\fboxrule=\z@\else\advance\@FrDimenI by2\fboxrule%
3192  \advance\@FrDimenI by2\fboxsep\fi%
3193  \@FrDimenS=\fontdimen2\font\advance\@FrDimenI by+3\@FrDimenS%
3194  \ifdim\fboxrule=\z@\advance\@FrDimenI by-0.30\@FrDimenS\fi%
3195  \advance\@FrCount by -1%
3196  \@FrDimen=\@FrCount\baselineskip%
3197  \advance\@FrCount by 1%
3198  \ifdim\fboxrule=\z@\else\advance\@FrDimen by -\fboxrule\fi%
3199  \@FrDimenH=-\dp0% to get baseline alignement
3200  \setbox0\hbox{\ifdim\fboxrule=\z@\kern-\fboxsep\fi%
3201  \fbox{\shortstack{{%
3202  \def\@LSG{\f@issue\@fw{-5- %
3203  %\@txt@msg{d\'efinition de lettrine incorrecte}%

3204 }}%

3205  \let\@RSG=\@LSG\bef@let%
3206  \lettrinefont\raise-\@FrDimen\hbox{##1}\relax%
3207  \ifdim\fontdimen\@ne\font>\z@\/\space\fi}}}}%
3208  \box0\@FrDimen=\@FrDimenH%
3209  \advance\@FrDimenH by-\@FrCount\baselineskip%
3210  \advance\@FrDimenH by \lineskip% inapropriate action
3211  \ifdim\fboxrule=\z@\else\advance\@FrDimenH by -\fboxrule\fi%
3212  \vspace*{\@FrDimenH}% where to write the rest of the line
3213  \hangindent=\@FrDimenI%
3214 \ifx\lettrinehang\undefined% hangafter change then allowed
3215  \ifdim\@FrDimen<-0.025\baselineskip% if dp0 > 25/1000 then
3216  \advance\@FrCount by\@ne% add one more line hangafter
3217  \divide\@FrDimen by-\baselineskip% and may be it could
3218  \advance\@FrCount by\@FrDimen% extend past a line.

3219  \fi%
3220 \fi%
3221  \ifnum\@FrCount=1\f@issue\@fw{-6- %\@txt@msg{lettrine \`a revoir}%
3222  }\fi%
3223  \hangafter=-\@FrCount%
3224  \noindent\kern-2.5\@FrDimenS%
3225  \def\@temp@{##2}%
3226  \ifx\empty\@temp@\f@issue\@fw{-7- %
3227  %\@txt@msg{lettrine r\'eduite \`a 1 seule lettre}%

3228 }%

3229  \else{\scshape ##2}\fi\def\@temp@{##3}%
3230  \ifx\@temp@\empty\else\space\ignorespaces##3\fi%
3231  }%@@@trine
3232  \def\@Ettrine[##1 ##2 ##3]##4\par{\bgroup\parskip=0pt% NFSS requires a
3233  {\ly\xdef\bef@ly{\the\font}}% global def!
3234  \let\newpage=\relax%
3235  \edef\bef@fnt{\the\font}\@gN%
3236  \ifFLA\def\bef@let{\bef@fnt\def\ly{\bef@ly}##1\space}%
3237  \else ##1\space\fi%
3238  \@@ttrine{##2}{{\def\@aft@let{##3}\ifx\@aft@let\empty%
3239  \else##3\space\fi%
3240  \ignorespaces ##4}}\egroup}%
3241 \fi% \if@PMF
3242 \def\flettrine{\par%................................................ \flettrine
3243  \let\@tempa\relax%
3244  \def\@tempa{\def\@fbr{}\protect\@lettrineS}%
3245  \@tempa}%
3246 \def\@lettrineS{\ifx\@FrDimenH\undefined%
3247  \newdimen\@FrDimenH\newdimen\@FrDimenI\fi%
3248  \ifx\@FrDimenS\undefined\newdimen\@FrDimenS\fi%
3249  \@ifNextNB[{\@Ettrine}{\@ettrine}%] emacs

3250 }%

3251 \fi% \lettrine undefined
3252  }% end of \@FL
3253 %%%%%%%%%%%%%%%%%

3254 %#>

3255 %                  ===============================
3256 %                  |         Typography          |
3257 %                  ===============================

3258 %

3259 % Let the possibility to turn all off
3260 \def\nonfrench{\ifFrench\@DFP%.......................  \begin & \end{nonfrench}
3261  \def\@temp@{\@AFP}% \@AFP only for non LaTeX users
3262  \else\@NoFr\def\@temp@{\relax}\fi%
3263  \def\endnonfrench{\@temp@\ignorespaces}%
3264  \ignorespaces}%

3265 %

3266 % Original settings of \dospecials et \@sanitize saved at \begin{document}
3267 % include ! ? ;  : < > ` '  ^" in dospecials and sanitize:
3268 \def\@dospecialsfrench{\do\`\do'\@dsversa}%..................\@dospecialsfrench
3269 \def\@dsversa{% specials reduced for versatim envir..........\@dsversa
3270 \do\ \do\\\do\{\do\}\do\$\do\&\do\#\do\|\do\^^K\do\_\do\^^A\do\%\do\~%$emacs
3271 \do\!\do\?\do\;\do\:\do\<\do\>\do\^\do\"}%

3272 \def\@sanitizefrench{%.........................................\@sanitizefrench
3273 %     \@makeother\ \@makeother\\\@makeother\$\@makeother\&%$emacs
3274 %     \@makeother\#\@makeother\|\@makeother\^^K\@makeother\_%
3275 %     \@makeother\^^A\@makeother\%\@makeother\~%
3276  \@saORI% get original \@sanitize and add ours:
3277  \@makeother\!\@makeother\?\@makeother\;\@makeother\:%
3278  \@makeother\`\@makeother'\@makeother\<\@makeother\>%
3279  \@makeother\^\@makeother\"}%

3280 %

3281 %\@ifNextNB X {YES} {NO}  ... if next char is X then YES else NO ... \@ifNextNB
3282 \def\@ifNextNB#1#2#3{\let\@tempe=#1\def\@tempa{#2}\def\@tempb{#3}\futurelet%
3283  \@tempc\@Fifnch}%
3284  \def\@Fifnch{\ifx \@tempc \@tempe\let\@tempd\@tempa% Next char may be an
3285  \else\let\@tempd\@tempb\fi\@tempd}%            % active space.
3286 %\ifNextNBc X or Y {YES} {NO} ...                               ... \@ifNextNBc
3287 \def\@ifNextNBc#1#2#3#4{\let\@tempe=#1\let\@tempf=#2%
3288  \def\@tempa{#3}\def\@tempb{#4}\futurelet%
3289  \@tempc\@Fifnchc}%
3290  \def\@Fifnchc{\ifx\@tempc\@tempf\@tempa\else\@Fifnch\fi}%

3291 %

3292 \def\@skiplastspace{\ifdim\lastskip>\z@\unskip\penalty\@M\fi}%..\@skiplastspace

3293 %

3294 \let\ifFrench\iftrue% temporary setting
3295 \def\@AFP{%................................ \@AFP = Activate French Punctuation
3296  \let\dospecials\@dospecialsfrench%
3297  \let\@sanitize\@sanitizefrench%
3298  \AFPdp\AFPinfsup}%
3299 \def\AFPdp{\ifFrench\catcode`\!=\active\catcode`\?=\active%
3300  \catcode`\;=\active\catcode`\:=\active\fi}%
3301 \let\AFPinfsup\relax%

3302 %#<

3303 \def\AFPinfsup{\ifFrench\ifFG\catcode`\<=\active\catcode`\>=\active\fi\fi}%

3304 %#>

3305 \def\AFPq{\ifFrench\catcode`'=\active\catcode``=\active\fi}%
3306 \def\AFPdq{\catcode`"=\active}%

3307 %

3308 \def\@DFP{%............................ \@DFP = Desactivate French Punctuation
3309  \DFPq\DFPinfsup\ifLPA\else\DFPdp%
3310  \let\dospecials\@dsORI%
3311  \let\@sanitize\@saORI\fi}%
3312 \def\DFPq{\ifFrench\catcode``=12\catcode`'=12\fi}%
3313 \let\DFPinfsup\relax%

3314 %#<

3315 \def\DFPinfsup{\ifFrench\catcode`<=12\catcode`>=12\fi}%

3316 %#>

3317 \def\DFPdp{\ifFrench\catcode`;=12\catcode`:=12%
3318  \catcode`!=12\catcode`?=12\fi}%
3319 \def\DFPdq{\catcode`"=12}%

3320 %#<

3321 % Typographic process of dots  (default is: let dots macros as usual)

3322 %

3323 \let\@doORI\dots\let\@ldoORI\ldots%
3324 \def\TeXdots{\@noBDfr%

3325  \ifFTY\let\dots\@doORI\let\ldots\@ldoORI\fi}%.............\TeXdots
3326 \def\noTeXdots{\@noBDfr%
3327  \ifFTY\def\dots{...}\def\ldots{...}\fi}%............  \noTeXdots

3328 %

3329 % i dotless (for those who haven't a good text editor)

3330 %

3331 \let\@hatORI\^\let\@treORI\"%
3332 \def\idotless{\@noBDfr%
3333  \ifFTY%...............................................  \idotless
3334  \def\^##1{{\expandafter\@hatORI\ifx ##1i\i\else##1\fi}}%
3335  \def\"##1{{\expandafter\@treORI\ifx ##1i\i\else##1\fi}}%
3336  \fi}%
3337 \def\iwithdot{\@noBDfr%
3338  \let\^\@hatORI\let\"\@treORI}%.....(no MlTeX command).  \iwithdot

3339 %#>

3340 % Typographic process of double punctuation:

3341 %

3342 \let\ifLPA\iffalse% \ifLPA must be initiated.
3343 \let\ifFG\iffalse% \ifFG must be initiated.
3344 \def\@tempa#1{\f@issue%
3345  \@fw{-13- %\@txt@msg{le caract\`ere "#1" est d\'ej\`a actif}%
3346  }[#1]%
3347  \let\@tempb\next\let\@tempc\empty}% warning message
3348 \let\@tempb\empty%
3349 \AFPdp% activate first part
3350 \let\ifWTS\iffalse% set wrong typed spaces to false
3351 \def\@WTS{\relax\ifmmode\else\ifhmode% skip wrong typed space
3352  \ifdim\lastskip>\z@\unskip\fi%
3353  \fi\fi}%
3354 % Add a thin space before punctuation ; : and ! in place of a space
3355 \def\@tempc{%
3356 \def;{\ifFTY\protect\@PV%{}%............................................... ";"
3357  \else\ifWTS\@WTS\fi\string;\fi}%

3358 }%

3359 \def\@tempd{\@tempa{\string;}}%
3360 \ifx;\undefined\def\@tempd{}\fi\@tempd\@tempc%
3361 \def\@PV{\relax\ifmmode\string;\else%
3362  \ifhmode\ifUSP\unskip\space\fi%
3363  \ifdim\lastskip>\z@\unskip\penalty\@M\,\fi%
3364  \fi\string;\fi}%
3365 \def\@tempc{%
3366 \def:{\ifFTY\protect\@DP%{}%............................................... ":"
3367  \else\ifWTS\@WTS\fi\string:\fi}%

3368 }%

3369 \def\@tempd{\@tempa{\string:}}%
3370 \ifx:\undefined\def\@tempd{}\fi\@tempd\@tempc%
3371 \@ifundefined{@beginparpenalty}{\def\@beginparpenalty=#1{\penalty#1}}{}%
3372 \def\@DP{\relax\ifmmode\string:\else%
3373  \ifhmode\ifUSP\unskip\space\fi%
3374  \ifdim\lastskip>\z@\unskip\penalty\@M\,\fi%
3375  \fi%
3376  \string:%
3377  \@beginparpenalty=\@M\relax% Page break forbidden after ":"

3378  \fi}%             % but remains not perfect...
3379 % Stuff for \WindowsUnits
3380 \def\@wu#1{\@@wu#1,\void}%
3381 \def\@@wu#1,#2{\ifx#1\empty\else\@@@wu #1\fi%
3382  \def\@tempa{\@@wu#2}%
3383  \ifx#2\void\else\expandafter\@tempa\fi%

3384 }%

3385 \def\@@@wu#1=#2{\expandafter\edef\csname #1\endcsname:{#2\string:}}%
3386 % \hhline modification should be removed if the version
3387 % [1997/11/24 v3.x beta] is generally in use (and distributed).
3388 \ifx\hhline\undefined\else\let\@hhlORI\hhline%......................... \hhline
3389  \def\hhline{\omit\ifFrench\let:\@cidp\fi%
3390  \expandafter\@gobble\@hhlORI}%
3391 \fi%
3392 \def\@tempc{%
3393 \def!{\ifFTY\protect\@PE%{}%............................................... "!"
3394  \else\ifWTS\@WTS\fi\string!\fi}%

3395 }%

3396 \def\@tempd{\@tempa{\string!}}%
3397 \ifx!\undefined\def\@tempd{}\fi\@tempd\@tempc%
3398 \def\@PE{\ifmmode\string!\else%
3399  \ifhmode\ifUSP\unskip\space\fi%
3400  \ifdim\lastskip>\z@\unskip\penalty\@M\,\fi%
3401  \fi%
3402  \string!\fi}%
3403 \def\@tempc{%
3404 \def?{\ifFTY\protect\@PI%{}%............................................... "?"
3405  \else\ifWTS\@WTS\fi\string?\fi}%

3406 }%

3407 \def\@tempd{\@tempa{\string?}}%
3408 \ifx?\undefined\def\@tempd{}\fi\@tempd\@tempc%
3409 \def\@PI{\relax\ifmmode\string?\else%
3410  \ifhmode\ifUSP\unskip\space\fi%
3411  \ifdim\lastskip>\z@\unskip\penalty\@M%
3412  \hskip +0.09em plus 0.07667em%max glue accepted
3413  \fi%
3414  \fi%
3415  \string?\fi}%
3416 \ifx\@tempb\next\let\AFPdp\empty\f@issue%
3417  \@fw{-13b- %
3418  \@txt@msg{la double ponctuation est alors d\'esactiv\'ee}}\fi%
3419 \let\ifLPA\ErrFrench% \ifLPA restored.
3420 \let\ifFG\ErrFrench% \ifFG restored.
3421 \let\@aORI\@array% ........................................ \@array for \array
3422 \def\@array{}% default noop, further defined.
3423 % 2e float placement correction
3424 \DFPdp\AFPdp% normally a noop but in case of warning...
3425 \ifx\AFPdp\empty\else% only for activated exclamation mark
3426 \def\@array{\let\noexpand\@tempa=\noexpand!%
3427  \def\noexpand!{\noexpand\string\noexpand!}%
3428  \edef\noexpand\@tempb{##1}% asis substitution
3429  \let\noexpand!=\noexpand\@tempa}%
3430 \fi%

3431 \catcode`<=13\catcode`>=13% temporary activation
3432 \let\ifArG\iftrue% by now assume guillemets are available in arrays.
3433 \edef\@array[#1]{\edef\noexpand\@tempb{#1}% default substitution
3434  \noexpand\ifArG\noexpand\else%
3435  \noexpand\ifnum\catcode`\noexpand<=\active%
3436  \noexpand\ifmmode\let\noexpand<\noexpand\inferieura%
3437  \let\noexpand>\noexpand\superieura%
3438  \noexpand\fi\noexpand\fi\@array%
3439  \noexpand\fi%
3440  \noexpand\@aORI[{\noexpand\@tempb}]}%
3441 \let\@eaORI\eqnarray% .............................................. \eqnarray
3442 \def\eqnarray{\ifArG\else\ifnum\catcode`<=\active%
3443  \let<\inferieura\let>\superieura%
3444  \fi\fi\@eaORI}%
3445 \ifx\@@array\undefined\else% When array package loaded we must ...... \@@array
3446 \let\@@aORI\@@array% protect it too
3447 \def\@@array{\ifArG\else\ifnum\catcode`<=\active%
3448  \let<\inferieura\let>\superieura%
3449  \fi\fi\@@aORI}% as for eqnarray (and standard array).
3450 \fi%
3451 \catcode`<=12\catcode`>=12%
3452 \DFPdp% desactivate first part
3453 \let\@CGroup\relax\let\@@FG\relax% Should be relax for french light.
3454 \let\@LG\relax%

3455 %#<

3456 % Process of guillemets (typed << and >>)%.......................... Guillemets

3457 %

3458 % here is the oldest way to def. guillemets (still useful with plain}
3459 \def\@og{\leavevmode\ifdim\lastskip>\z@\unskip%
3460  \penalty-9\hskip0.35em minus 0.35em\fi%
3461  \raise0.27ex\hbox{$\scriptscriptstyle\ll$}\,\nobreak\ignorespaces}%
3462 \def\@cg{\@skiplastspace\nobreak\,\leavevmode\raise0.27ex%
3463  \hbox{$\scriptscriptstyle\gg$}}%
3464 \let\ifFG\iftrue% set the default
3465 \AFPinfsup% activate for guillemets
3466 % special definition for \lettrine and \flettrine:
3467 \def\@gN{\def<##1{\ifx ##1<\leftguillemets\else\@LSG##1\fi}%
3468  \def>##1{\ifx ##1>\rightguillemets\else\@RSG##1\fi}}%
3469 \let\@oldog\<\let\@oldcg\>% let it run if previously defined
3470 \def\@ogx<{\ifFTY\@og\else\@DOG\fi}%
3471 \def\@cgx>{\ifFTY\@cg\else\@DFG\fi}%
3472 % Guillemets must not be typed \<< and \>>, the following is for compatibility
3473 %\def\<{\@ifNextNB<{\@ogx}{\@oldog}}%
3474 %\def\>{\@ifNextNB>{\@cgx}{\@oldcg}}%

3475 %

3476 %\def<{\ifnum\catcode`< =\active% look at \normalbrackets................. "<<
3477 %      \expandafter\@genGL\else\@LSG\fi}% \EBCDICbrackets are different
3478 \def\@@LFG{\ifFTY\ifmmode\protect\@LSG\else%
3479  \ifIEB\@SOC\else\@LSG\fi% EBCDICbracket
3480  \fi%
3481  \else\@LSG\fi}%
3482 \global\let\ifCG\iftrue%
3483 \let\inside@an@expand\empty% Stuff to expand in an usual \edef.

3484 \def\if@mid@expandable#1#2{\let\inside@an@expand\relax\relax%
3485  \ifx\inside@an@expand\relax%
3486  \let\inside@an@expand\empty%
3487  \expandafter#2%
3488  \else\expandafter#1%
3489  \fi}%
3490 % A command to avoid wrong crash when expanding a macro which is not
3491 % fully expandable; usage: \edef\XX{\stop@mid@expandable}\XX
3492 \def\stop@mid@expandable{\if@mid@expandable{%
3493  \errmessage{This macro is not expandable, please %
3494  \string\protect \space it.}\stop}{}%

3495 }%

3496 %%%\def\@LG{\relax\ifFTY\ifmmode\@DOG\else\@@@OG\fi\else\@DOG\fi}%
3497 \def\@LG{\relax\if@mid@expandable{\@@@LG}{\@@LG}}%
3498 \def\@@LG{\ifFTY\ifmmode\@DOG\else\@@@OG\fi\else\@DOG\fi}%
3499 \def\@@@LG{\relax\noexpand <<\relax}
3500 \def\@SifDOGon{\global\let\ifDOG\iftrue}% set scnd level of guillemets flag
3501 \def\@SifDOGoff{\global\let\ifDOG\iffalse}\@SifDOGoff% now set it off
3502 \def\@@@OG{\ifCG\ifFLA\ifEPG\else% now be tolerant... in noeverypar
3503  \hbadness=10000% all this stuff is really dirty !
3504  \ifhmode\newline\fi% We force newline if any stuff already typeset.
3505  \bgroup\def\par{}%
3506  \@FrDimen=\textwidth% line size on mono-column
3507  \if@twocolumn\tolerance=5000\pretolerance=5000%
3508  \advance\@FrDimen by -\columnsep%
3509  \divide\@FrDimen by 2\fi% for two-column
3510  \@ifundefined{@inAlist}{}{% revisite box size in a list environment
3511  \advance\@FrDimen by -\leftmargin\advance\@FrDimen by -\rightmargin%
3512  \advance\@FrDimen by -\listparindent\hsize=\@FrDimen}%
3513  \@qquotes\fi\fi\fi%
3514  \@oguills%
3515  \ifFLA\ifEPG\bgroup\def\@currenvir{guillemets}% simulate an environment
3516  \let\@CGroup\egroup\fi\fi%  for error processing
3517  \ifCG\ifFLA\ifEPG% save the current \everypar and apply it first
3518  \xdef\@epORI{{\the\TeXeverypar}}%
3519  \TeXeverypar={\@epORI% Original \everypar.
3520  \ifEPGR\else% If not allready done,
3521  \@oguills% insert guillemets and
3522  \@ifundefined{@OuvOpen}{% then according
3523  \,% kerning just after.
3524  }{}%
3525  \fi}%
3526  \fi\fi%
3527  \else\@SifDOGon\@AG% ancient guillemets featuring
3528  \ifFLA\ifEPG\else\def\@qqguill{\@oguills}\@staring\fi\fi\fi%
3529 %%%       \protect\@CGfalse%
3530  \global\let\ifCG\iffalse%
3531  \ifUSP\kern+0.13em\penalty\@M\ignorespaces%
3532  \else\kern-0.19em\relax\penalty\@M\fi}%likely as \ignorespaces\fi
3533 \def\@AG{\ifAG\let\@LP\@RP\let\@gotl\@gotr%
3534  \fi}% Apply ancient guillemets if required
3535 \def\f@guillemets{<<}%
3536 \def\@oguills{%

3537  \bgroup\@ifundefined{@OuvOpen}{\def\@OuvOpen{}% avoid duplicate <<
3538  \@ifundefined{ly}{\@og}%
3539  {\leavevmode\ifECM\hbox{{\ifGIAF\else\@gfnt\fi%
3540  \ifx\@gotl\undefined\char\rq\@LP%
3541  \else\@gotl\fi\kern+0.20em}}%
3542  \else\hbox{{\ly\@LP\kern-0.20em\@LP\kern+0.20em}}\fi%
3543  \nobreak}}{}\egroup}%
3544 %\def>{\ifnum\catcode`> =\active% look at \normalbrackets................. ">>"
3545 %      \expandafter\@genGR\else\@RSG\fi}% \EBCDICbrackets are different
3546 \def\@@RFG{\ifFTY\ifmmode\protect\@RSG\else%
3547  \ifIEB\@SFC\else\@RSG\fi% EBCDICbracket
3548  \fi%%
3549  \else\@RSG\fi}%
3550 \def\@SifFTY{\let\ifFTY\iffalse}% to turn of FTY temporary
3551 %%%\def\@RG{\relax\ifmmode\@SifFTY\fi\ifFTY\@@FG\else\@DFG\fi}%
3552 \def\@RG{\relax\if@mid@expandable{\@@@RG}{\@@RG}}%
3553 \def\@@RG{\ifmmode\@SifFTY\fi\ifFTY\@@FG\else\@DFG\fi}%
3554 \def\@@@RG{\relax\noexpand >>\relax}
3555 \def\endf@guillemets{>>}%
3556 \ifx\RIfM@\undefined\else% For AmSTeX we force \nofrenchguillemets.
3557 \edef\@emORI{\the\everymath\relax}% Save original \everymath.
3558 \edef\@edORI{\the\everydisplay\relax}% Save original \everydisplay.
3559 \f@issue\@fW{^^J -18- %
3560  %\@txt@msg{\frenchname.sty force l'option }% New definition takes care
3561  %\@txt@msg{\string\nofrenchguillemets\space en maths avec AmSLaTeX.}%
3562  }% that \nofrenchguillemets may
3563  % be still undefined; expansion differed.
3564  \everymath={\csname nofrenchguillemets\endcsname\@emORI}%
3565  \everydisplay={\csname nofrenchguillemets\endcsname\@edORI}%
3566 \fi%
3567 \DFPinfsup% desactivate for guillemets
3568 % The grammar environnement from syntax package...................... \grammar
3569 \ifx\grammar\undefined% can't use French guillemets.
3570 \else\let\@grORI\grammar\def\grammar{\nofrenchguillemets\@grORI}%
3571 \fi%

3572

3573 \def\@@FG{\ifCG\f@issue%
3574  \@fw{-14- %\@txt@msg{fermeture de guillemets non ouverts}%
3575  }\fi%
3576  \ifUSP\unskip\kern+0.13em\else%
3577  \ifdim\lastskip>\z@\unskip% skip previous space
3578  \penalty\@M% don't break here
3579  \space% better than \kern
3580  \penalty\@M%
3581  \fi%
3582  \kern-0.19em%
3583  \fi%
3584  \xdef\@tempd{\@currenvir}\def\@tempe{guillemets}%
3585  \ifx\@tempd\@tempe%
3586  \@CGroup\@fguills% end group if any and put closing guillemets
3587  \else\ifEPG%
3588  \@fguills% typeset but no real closing (see \@@@FG)
3589  \def\@CGroup{\egroup\@gobble}% warning until \endguillemets:

3590  \ifFLA% Message issued only when french layout is active.
3591  \f@issue%
3592  \@fw{-49- %\@txt@msg{fermeture pr\'ematur\'ee de guillemets}%

3593 }%

3594  \fi%
3595  \else\@CGroup\@fguills%
3596  \fi%
3597  \fi%
3598 %    \edef\@currenvir{\@tempd}% generates error instead of just a warning.
3599  \ifDOG\ifFLA\ifEPG\else\@fniv2\fi\fi%
3600  \@SifDOGoff\else\@@@FG\fi% reset secnd and first level
3601 % following code would be fine but doesn't run:
3602 %     \@ifNextNB\space{\penalty-\@highpenalty}{}% allow break if space after

3603 }%

3604 \let\guillemets\@LG%.................................  \begin & \end guillemets
3605 \def\RG@{\ifFTY\ifCG% could be still closed in a prev. envir
3606  \else\@RG% Assume first closing >> and print it
3607  \fi%
3608  \@CGroup\@@@FG\relax\fi}% end second level >>
3609 \let\endguillemets\RG@%
3610 \def\@@@FG{\ifFLA\ifEPG\ifx\@epORI\undefined\else% \everypar is  restored
3611  \expandafter\TeXeverypar=\@epORI\fi%
3612  \xdef\@epORI{{}}% any way \xdef can be cleared
3613  \else\@staring\@stared\egroup\fi\fi%
3614  \global\let\ifCG\iftrue\let\@CGroup\relax}%
3615 \def\@fguills{\@ifundefined{ly}{\@cg}%  ECM
3616  {\nobreak\leavevmode\ifECM\hbox{{\ifGIAF\else\@gfnt\fi\kern+0.20em%
3617  \ifx\@gotr\undefined\char\rq\@RP%
3618  \else\@gotr\fi}}%
3619  \else\hbox{{\ly\kern+0.20em\@RP\kern-0.20em\@RP}}\fi}%
3620 \ifGIAF\else\ifdim\fontdimen\@ne\font>\z@\/\fi\fi%italic correction simulated

3621 }% 3622 %#>

3623 \def\@normalrq{\relax\ifmmode^\prime\else\@frq\fi}%
3624 \def\@frq{{\catcode`'=12{\ifNEQ\ifECM\char\rq001%
3625  \else\char\rq023\hbox{}\fi%
3626  \else\string'\fi}}}%
3627 \AFPq% activate quoting
3628 \def`{\protect\@PLQ}%..................................................... "``"
3629  \let\@PLQ@\lq%
3630  \def\@PLQ{\ifmmode\string`\let\@PLQ@\relax%
3631  \else\ifNED\let\@PLQ@\@PLQn\fi% may start a par.
3632  \ifhmode\let\@PLQ@\@PLQn\fi%
3633  \fi\@PLQ@}%
3634  \def\@PLQn{\@ifNextNB`{\protect\@OQ}%
3635  {\ifNEQ\ifECM\char\rq000\hbox{}%
3636  \else\char\rq022\hbox{}\fi%
3637  \else\string`\fi}%

3638 }%

3639  \def\@OQ`{\ifNED\protect\@LG\else\string``\fi}%
3640 \def'{\protect\@PRQ}%..................................................... "''"
3641  \let\@PRQ@\rq% set the default
3642  \def\@PRQ{\ifmmode\let\@PRQ@\@SRQ@%

3643  \else\ifhmode\let\@PRQ@\@PRQn\fi%
3644  \fi\@PRQ@}%
3645  \def\@@FGp'{\@@FG}%
3646  \def\@PRQn{\let\@PRQ@\rq% reset the default
3647  \@ifNextNB'{\ifNED\let\@PRQn@\@@FGp%
3648  \else\let\@PRQn@\relax\string'\fi\@PRQn@}%
3649  {\protect\@normalrq}}%

3650 %

3651 % SUBOPTIONS definitions............................................ SUBOPTIONS
3652 \let\ifNED\iffalse% False for french light.
3653 \let\ifNEQ\iffalse% False for french light.

3654 %#<

3655 \def\noenglishdoublequotes{\@noBDfr%
3656  \AFPq\let\ifNED\iftrue%...... \noenglishdoublequotes
3657  \ifFrench\let\@cilq='\fi}%
3658 \def\noenglishquote{\@noBDfr%
3659  \AFPq\let\ifNEQ\iftrue%................... \noenglishquote
3660  \ifFrench\let\@cilq='\fi}%

3661 %#>

3662 \DFPq% disactivate quoting
3663 \def\untypedspaces{\@noBDfr%
3664  \let\ifUSP\iftrue}%.........................  \untypedspaces
3665 \def\typedspaces{\@noBDfr%
3666  \let\ifUSP\iffalse}%............................  \typedspaces
3667 \let\if@labelsinmargin\iffalse% Should be false for french light.

3668 %#<

3669 \def\englishdoublequotes{\@noBDfr%
3670  \let\ifNED\iffalse%.............. \englishdoublequotes
3671  \DFPq\ifFrench\let\@cilq='\fi}%
3672 \def\englishquote{\@noBDfr%
3673  \let\ifNEQ\iffalse\DFPq%...................... \englishquote
3674  \ifFrench\let\@cilq='\fi}%
3675 \def\labelsinmargin{\@noBDfr%
3676  \let\if@labelsinmargin\iftrue}%............ \labelsinmargin
3677 \def\nolabelsinmargin{\@noBDfr%
3678  \let\if@labelsinmargin\iffalse}%........\nolabelsinmargin
3679 \def\letpunctuationactivefor{\@noBDfr%
3680  %........................ \letpunctuationactivefor
3681  \global\let\ifLPA\iftrue%
3682 \def\wrongtypedspaces{\@noBDfr%
3683  \global\let\ifWTS\iftrue}%.............\wrongtypedspaces

3684 }%

3685 \def\wrongtypedspaces{\f@issue\@fw{-17- %
3686  %\@txt@msg{\string\wrongtypedspaces\space est }%
3687  %\@txt@msg{inop\'erant dans ce contexte}%

3688 }}%

3689 \def\nowrongtypedspaces{\@noBDfr%
3690  \global\let\ifWTS\iffalse%......... \nowrongtypedspaces
3691  \ifLPA\DFPdp% don't change \dospecials and \@sanitize
3692  \fi\global\let\ifLPA\iffalse}% it might be dangerous
3693 % With \tabbingaccents you can't put a diacritic (` or ') on a blank space
3694 % but it's okay for all accentuated letters. Usefull in full 8bits with
3695 % ECM too! because 8bits chars are firstly converted to 7bits "a la TeX".

3696 \def\tabbingaccents{\@noBDfr%
3697  \let\@ifTA\iffalse}%......................  \tabbingaccents
3698 \def\notabbingaccents{\@noBDfr%
3699  \let\@ifTA\iftrue}%...................  \notabbingaccents
3700 \AFPq%
3701 % tabbing environment is modified to be able to put diacritics
3702 \def\@temp@{%
3703  \def\tabbing{\def\@tempa{\let`=\lq\let'=\@normalrq}%............ \tabbing
3704 % \noenglishquote and \noenglishdoublequotes will do nothing in \tabbing
3705  \ifNED\@tempa\fi\ifNEQ\@tempa\fi%
3706  \def\@tempa{\let\@ifTA\iftrue}%
3707  \ifFTY\else\expandafter\@tempa\fi%
3708  \ifFTY\@ifTA\else%
3709  \let\@trjORI\@tabrj\let\@tlabORI\@tablab%
3710  \let\@ORIrj=\`\let\@ORIlab=\'%
3711  \def\@@tabrj{\ifcat\@tempc\space\let\@tempa=\@trjORI%
3712  \else\let\@tempa=\@ORIrj\fi\@tempa}%
3713  \def\@@tablab{\ifcat\@tempc\space\let\@tempa=\@tlabORI%
3714  \else\let\@tempa=\@ORIlab\fi\@tempa}%
3715  \def\@tabrj{\futurelet\@tempc\@@tabrj}%
3716  \def\@tablab{\futurelet\@tempc\@@tablab}%
3717  \fi\fi\@tgORI}%

3718 }%

3719 \ifx\tabbing\undefined%
3720  \else\let\@tgORI\tabbing%put diacritics \` & \'
3721  \@temp@% new def apply
3722 \fi%
3723 \DFPq%
3724 \AFPinfsup% activate < and >
3725 \def\EBCDICbrackets{\@noBDfr%
3726  \let\ifIEB\iftrue%......................... \EBCDICbrackets
3727  \ifFG%
3728  \def<{\protect\@LFG}%old code generate \ifnum incompatibilty
3729  \def\@LFG{\@ifNextNB<{\protect\@OG}{\@@LFG}}%
3730  \def\@OG<{\ifnum\catcode`< =\active\expandafter\@LG%
3731  \else\@@LFG\@@LFG\fi}%
3732  \def>{\protect\@RFG}%
3733  \def\@RFG{\@ifNextNB>{\protect\@FG}{\@@RFG}}%
3734  \def\@FG>{\ifnum\catcode`> =\active\expandafter\@RG%
3735  \else\@@RFG\@@RFG\fi}%
3736  \fi}%
3737 \long\def\@BracesOrNot[#1]{\ifmmode\@PreserveBraces[#1]%
3738  \else\expandafter#1\fi}%
3739 \let\@fobeyspaces\empty%
3740 \long\def\@genG#1#2#3{\@fobeyspaces%
3741  \ifx#2#3\expandafter\protect\csname @#1G\endcsname%
3742  \else\csname @@#1FG\endcsname\expandafter\@BracesOrNot%
3743  \expandafter[\expandafter{%
3744  \expandafter#3\expandafter}\expandafter]%
3745  \fi}%
3746 \edef\@genGL{\noexpand\@genG{L}\noexpand<}%
3747 \edef\@genGR{\noexpand\@genG{R}\noexpand>}%
3748 % Hacking for blank space after "<" or ">" doesn't run in any \ifdim x > y

3749 % like in \footnote, so the code is nullified until...
3750 %\def\@bobeyspaces{\obeyspaces%
3751 %                  \def\@fobeyspaces{\catcode`\ =10\let\@fobeyspaces\relax}}%
3752 \let\@bobeyspaces\empty
3753 \def\normalbrackets{\@noBDfr%
3754  \let\ifIEB\iffalse%........................ \normalbrackets
3755  \ifFG%
3756  \def<{\ifnum\catcode`< =\active\@bobeyspaces\expandafter\expandafter%
3757  \expandafter\@genGL\ifmmode\relax\fi%
3758  \else\@LSG\fi}%
3759  \def>{\ifnum\catcode`> =\active\@bobeyspaces\expandafter\expandafter%
3760  \expandafter\@genGR\ifmmode\relax\fi%
3761  \else\@RSG\fi}%
3762  \fi}%
3763 \DFPinfsup% desactivate < and >

3764 %#>

3765 \let\ifFG\iffalse% default further choice

3766 %#<

3767 \def\ancientguillemets{\@noBDfr%
3768  \let\ifAG\iftrue}%................... \ancientguillemets
3769 \def\todayguillemets{\@noBDfr%
3770  \let\ifAG\iffalse}%...................... \todayguillemets
3771 \def\guillemetsinarrays{\@noBDfr%
3772  \let\ifArG\iftrue}%................ \guillemetsinarrays
3773 \def\noguillemetsinarrays{\@noBDfr%
3774  \let\ifArG\iffalse}%........... \noguillemetsinarrays
3775 \def\guillemetsinallfonts{\@noBDfr%
3776  \let\ifGIAF\iftrue}%........... \guillemetsinallfonts
3777 \def\guillemetsinroman{\@noBDfr%
3778  \let\ifGIAF\iffalse}%................ \guillemetsinroman
3779 \def\overfullhboxmark{\@noBDfr%
3780  \ifFLA\overfullrule=5pt\fi}%..........  \overfullhboxmark
3781 \def\nooverfullhboxmark{\@noBDfr%
3782  \ifFLA\overfullrule=0pt\fi}%....... \nooverfullhboxmark

3783 %#>

3784 \let\ifFrench\iffalse% reset original value

3785 %

3786 % For compatibility with MlTeX docs but unneeded in this style%...\fhyph \ehyph
3787 {\def\@genMLhyph{\@ifundefined{french}{}{\gdef\fhyph{\french}}%
3788  \@ifundefined{english}{}{\gdef\ehyph{\english}}}%
3789 \@ifundefined{fhyph}{\@genMLhyph}{}%

3790 }% 3791 %

3792 \gdef\frenchTeXmods{%............................................\frenchTeXmods
3793  \global\let\ifFrench\iftrue%
3794 \ifCLA%
3795  \ifCLAfrench%
3796  \@AFP% activate French punctuation
3797  \frenchtypography\frenchtranslation\frenchlayout%
3798  \fi%
3799 \else%
3800  \@AFP% activate French punctuation
3801  \frenchtypography\frenchtranslation\frenchlayout%

3802 \fi%
3803  \frenchmacros\frenchwarnings%
3804  \let\@HifORI\@Hif\let\@HfiORI\@Hfi%
3805  \frenchhyphenation%
3806  \csname @xtrasfrench\endcsname% from other packages
3807 % (TeX-XeT first direction of writing will be set by the first \everypar)
3808  \ifx\GOfrench\undefined% When document is really started,
3809  \csname beginL\endcsname% set TeX--XeT direction of writing.
3810  \fi%
3811  \def\languagename{french}% set it for mlp.
3812  \@ufo%  user options
3813  \let\switchtolanguage\endfrench%
3814  \ignorespaces%
3815  }%end \frenchTeXmods
3816 % Declare Options, extras and even more extras
3817 \ifx\undefined\babel@core@loaded%
3818 \edef\extrasfrench{}\def\@xtrasfrench{\extrasfrench}% for other packages.
3819  \DeclareOption{french}{\def\beginlanguage{%
3820  \ifx\babel@savevariable%selectlanguage
3821  \undefined\french%
3822  \else\endenglish\selectlanguage{french}\fi}%

3823 }%

3824  \DeclareOption{english}{\def\beginlanguage{%
3825  \ifx\babel@savevariable%selectlanguage
3826  \undefined\english%
3827  \else\selectlanguage{english}\fi}%

3828 }%

3829 \else\let\extrasfrench\frenchTeXmods%
3830  \AtBeginDocument{% With babel, at begin document we should
3831  \def\@tempa{\protect\@LabeL}% test if our label def had
3832  \ifx\@tempa\label\else% been changed by any package such as hyperref
3833  \let\@lORI\label\let\label\@tempa\fi% and then reset it.
3834  \def\@tempa{\protect\atgH{r}}% Same test and action
3835  \ifx\@tempa\ref\else\@gG{r}{ref}{/}{1}\fi% for \ref.

3836 }%

3837 \fi%

3838 %

3839 \@ifundefined{switchtolanguage}{%
3840  \def\switchtolanguage#1{#1}}{}%.(style depending)........ \switchtolanguage
3841 \let\@stlORI\switchtolanguage
3842 \def\@DFPtestANDset{% Test if French was activated,
3843  \ifx\ifFrench\iffalse% if not \ifLPA will make French to crash
3844  \f@issue\@fw{-71- %
3845  %\@txt@msg{ATTENTION : }% with message -26*-; better is that message. %
3846  %\@txt@msg{si babel est utilis\'e, mettre \frenchname\space en option}%

3847 }%

3848  \fi%
3849  \let\@DFPtestANDset\@DFP%
3850  \@DFP}%
3851 \def\endfrench{%............................................. \endfrench
3852 %%% This \endL should be omitted otherwise it will be an extra for eTeX.
3853 %%%     \ifx\undefined\GOfrench% When french document really started,
3854 %%%      \csname endL\endcsname% stop any TeX--XeT french direction of writing.

3855 %%%     \fi%
3856 \ifCLAfrench\else%
3857  \@DFPtestANDset%
3858  \nofrenchtypography\nofrenchtranslation\nofrenchlayout%
3859 \fi%
3860  \nofrenchmacros%
3861  \nofrenchhyphenation%
3862  \let\@Hif\@HifORI\let\@Hfi\@HfiORI%
3863  \let\switchtolanguage\@stlORI%
3864  \let\ifFrench\iffalse\@stlORI%
3865  \ignorespaces}% end of \endfrench
3866 \let\noextrasfrench\endfrench%

3867 %#<

3868 \def\frenchtest{\@finput{french.tst}}% The Torture Test ........... \frenchtest
3869 \def\frenchdoc{\@finput{frdoc.tex}}% The Documentation ............. \frenchdoc

3870 %#>

3871 %%%%%%%%%%%%%%%%%%
3872 %                  ===============================
3873 %                  |  Language switch mechanism  |
3874 %                  ===============================
3875 %                    based on language.dat file

3876 %

3877 \@ifundefined{englishTeXmods}{\gdef\englishTeXmods{}}{}%....... \englishTeXmods

3878 %

3879 \global\let\@Hif\empty\global\let\@Hfi\empty% dflt \if...\fi hyphenation switch
3880 \global\let\if@FE\iffalse% don't reload hyphenation exception if not required.
3881 \newif\if@more\@moretrue%
3882 \def\@doFh{% define processing for reading language.dat at \begin{document}
3883 \def\f@ERRdat{\f@issue%
3884  \errmessage{-9- %\@txt@msg{Corrupted/absent language.dat file.}%
3885  }\global\let\french\@@end%

3886 }%

3887  \bgroup% there is a marmelade here for a temporary usage.
3888  \let\ORIGfrench\french%
3889  \newcount\@FrCount%
3890 \def\tl@ng##1{}% no need at this time to test if \<language>TeXmods is defined
3891 \def\@rhef##1/##2 /{\def\@tempa{##2}%reloading of hyphenation exceptions files
3892  \def\@tempb{##1}% language name
3893  \def\@tempc{\ifx\space\@tempa\else%
3894  \expandafter\gdef\csname ##1@hefn\endcsname{##2\relax}%
3895  \if@FE\expandafter\@@input##2\relax\fi\fi}%
3896  \ifx\undefined\@excn\@tempc%
3897  \else\ifx\@tempb\@excn\@tempc\fi\fi}%
3898 \gdef\NouveauLangage[##1]##2{%....................... \NouveauLangage[##]{name}
3899 %-- check for an anormal change in language.dat:
3900  \expandafter\@ifundefined{l@##2}{}% do nothing, unused at initex
3901  {% First accept babel definitions (\chardef) of languages.
3902  \chardef\l@no##1\expandafter\if\csname l@##2\endcsname\l@no\else%
3903  \edef\l@no{##1}\expandafter%
3904  % Secondly accept our own defs.
3905  \ifx\csname l@##2\endcsname\l@no% OK
3906  \else\f@issue\typeout{^^J \frenchname.sty \string: -27- %
3907  %\@txt@msg{language \l@no\space (##2) was initially }%

3908  %\@txt@msg{(at initex) numbered \csname l@##2\endcsname\space(ERROR!)}%
3909  }[##2]\f@ERRdat%
3910  \fi\fi}%

3911 %--

3912  \expandafter\tl@ng\csname##2TeXmods\endcsname%
3913  \expandafter\gdef\csname##2 \endcsname% The protected language cs.
3914  {\expandafter\switchtolanguage\csname ##2TeXmods\endcsname%
3915  \@Hif\language=##1\@Hfi\relax}%
3916  \expandafter\gdef\csname##2\endcsname% The language cs.
3917  {\protect\csname##2 \endcsname}%
3918  }%\NouveauLangage
3919 % test if #1 equal ``='' that means same language hyphenation but a dialect.
3920 \edef\@temp@{=}%
3921 \def\@langue##1##2 ##3 ##4/##5{\def\@tempa{=}\def\@tempb{##1}%
3922  \ifx\@tempa\@tempb%
3923  \ifnum\@FrCount > 0 \advance\@FrCount by -1\fi%
3924  \relax% relax Max! Why is it absolutely needed?
3925  \expandafter\NouveauLangage\expandafter[\the\@FrCount]{##2}%
3926  \ifnum\@FrCount \@temp@ 0 \@FrCount= -1\fi%
3927  \else\edef\@temp@{<}\@l@ngue##1##2 ##3 ##4/{##5}%
3928  \fi}%
3929 \def\@l@ngue##1 ##2 ##3/##4{\NouveauLangage[##4]{##1}%
3930 %%%\typeout{La langue ##1 est utilis\'ee sous le num\'ero \the\@FrCount}
3931  %\expandafter\@@input##2\relax%% loading of patterns is done at initex
3932 %%%          \if@FE
3933  \@rhef##1/##3/% Check if reload of exceptions file is needed.
3934 %%%\fi
3935  }% end of \NouveauLangage

3936 %

3937 \let\hyphenation\f@hyphenation% use our new macro.
3938 \openin\@inputcheck = language.dat \def\@tempb{}%
3939 \ifeof\@inputcheck\@Ffnt{language.dat}%
3940  \ifx\undefined\french % language.dat is absent but \french might be def.
3941  \else\xdef\@PrevF{\french}%
3942  \gdef\french{\switchtolanguage\frenchTeXmods\@PrevF}%
3943  {\@PrevF\f@issue\@fw{-15- %
3944  %\@txt@msg{le langage \frenchname\space porte le }%
3945  %\@txt@msg{num\'ero \the\language}%

3946 }}%

3947  \fi%
3948  \ifx\undefined\l@english % any default English language number?
3949  \def\l@english{0}% set it
3950  \fi%
3951  \ifx\undefined\english % check English (fenglish.sty usally loaded)
3952  \else\xdef\@PrevE{\language=\l@english}%
3953  \gdef\english{\switchtolanguage\englishTeXmods\@PrevE}%
3954  {\@PrevE\f@issue\@fw{-16 %
3955  %\@txt@msg{the English language\space is numbered }%
3956  %\@txt@msg{\the\language}%

3957 }}% 3958 \fi

3959 \else\@FrCount=-1%
3960 \loop  \endlinechar=-1  \read\@inputcheck to \@lineD  \endlinechar`\^^M%

3961 \ifx\@lineD\empty  \else \advance\@FrCount by 1%
3962  \edef\@lineD{\@lineD\space\space/{\the\@FrCount}}%
3963  \expandafter\@langue\@lineD%
3964 \fi%
3965 \ifeof\@inputcheck \@morefalse \fi%
3966 \if@more\repeat%
3967 \fi\closein\@inputcheck%
3968 \let\hyphenation\@hyphenation% reset original cs.

3969 %

3970 \def\@MLtst{\@ifundefined{fhyph}% if French and \fhyph undef. (no language.dat)
3971  {\if@PMF\gdef\french{\switchtolanguage\frenchTeXmods}%
3972  \f@issue%
3973  \@fw{-19- %
3974  %\@txt@msg{utilisation du langage interne num\'ero \the\language}%

3975 }%

3976  \else\f@issue%
3977  \typeout{^^J \frenchname.sty: -20b-
3978  %\@txt@msg{the French language is undefined  (ERROR!)}%
3979  }\f@ERRdat\fi}%
3980 %if \fhyph defined as in MlTeX then :
3981  {\gdef\french{\switchtolanguage\frenchTeXmods\fhyph}%
3982  \gdef\english{\switchtolanguage\englishTeXmods\ehyph}%

3983 }%

3984  }%@MLtst
3985 \@ifundefined{french}{\@MLtst}{}% French might be still undefined!
3986 \@ifundefined{endenglish}{\global\let\endenglish\french}{}% and \endenglish
3987 \gdef\tl@ng##1{\ifx ##1\relax\f@issue%
3988  \@fw{-21- %\@txt@msg{##1 n'est pas d\'efini}%
3989  }[##1]\fi}%
3990 \ifx\ORIGfrench\french\f@ERRdat\fi%
3991  \egroup% this is the end of the marmelade
3992  }% end of \@doFh (\GOfrench part 2)
3993 %%%%%%%%%%%%%%%%%% Insure AmSTeX will not be loaded later.
3994 \ifx\vert\undefined\else\let\@bvORI\vert\fi% Already done before macros.
3995 \def\@fwVIIIII{\f@issue%
3996  \kbtypeout{^^J  -73- %\@txt@msg{ERREUR avec AmSTeX : }%
3997  %\@txt@msg{\frenchname.sty a \'et\'e  charg\'e trop t\^ot !}%
3998  }\stop}%
3999 \ifx\RIfM@\undefined%
4000 \def\vert{\ifx\RIfM@\undefined\expandafter\@bvORI\else\expandafter%
4001  \@fwVIIIII\fi}%
4002 \else%
4003 \def\vert{\@bvORI}%
4004 \fi%
4005 %%%%%%%%%%%%%%%%%%

4006 %#<

4007 %                  ===============================
4008 %                  |       Macros for help       |
4009 %                  ===============================

4010 %

4011 % Abbreviations
4012 \def\@abbf[#1]{\def\abbrevfilename{#1}}%
4013 \AFPdq% Activate " char for the following coding

4014 \def\abbreviations{\if@PMF\else\AFPdq\fi%......................  \abbreviations
4015  \@abbdefs\let\@abbdefs\relax%
4016  \@ifNextNB[%] emacs
4017  {\@abbf}{\@abbf[frabbrev.tex]}}%
4018 % The following lines are excluded from high speed \if...\fi scan
4019 \def\f@protect{\ifx\protect\@typeset@protect%
4020  \else\f@x@protect\fi}%
4021 \def\f@x@protect\fi#1{\fi\protect"}%
4022 \def\@eatprotect#1\protect#2\@nil{#1}%
4023 \if@PMF\let\f@protect\undefined\let\f@x@protect\undefined%
4024  \let\@eatprotect\undefined%
4025 \fi% \if@PMF
4026 \def\@abbdefs{% the needed defs for abbrevs
4027  \def\ABBfound{\global\let\ifABBfound\iftrue}%
4028  \let\ifABBfound\iffalse%
4029  \def\@abbrev##1##2 ##3##4 ##5/{%
4030  \let\ifFMA\iftrue% allways true here
4031  \edef\@tempa{##1##2}%
4032  \ifx##3*\edef\@tempb{##4}\edef\@tempc{##4s}%
4033  \else\edef\@tempb{##3##4}\edef\@tempc{}%
4034  \fi%
4035  \ifx\@tempa\@tempb##5\ABBfound%
4036  \else\ifx\@tempc\empty%
4037  \else\ifx\@tempa\@tempc##5\ABBfound\fi%
4038  \fi%
4039  \fi%
4040  \ifABBfound%
4041  \else\edef\@tempa{##2}\edef\@tempb{##4}%
4042  \ifx\@tempa\@tempb##5\ABBfound%
4043  \else\ifx\@tempc\empty%
4044  \else\ifx\@tempa\@tempc##5\ABBfound\fi%
4045  \fi%
4046  \fi%
4047  \fi}%
4048  \def\@openabbrev##1{\openin\@inputcheck=##1 %
4049  \ifeof\@inputcheck\@Ffnt{##1}\fi}%
4050  \def"{\f@protect\AbbrevName}%"......................................... "xx"
4051  \def\AbbrevName##1"{\def\@tempa{##1}\ifx\@tempa\space``\space''%
4052  \else\@@bbrev##1"\fi}%
4053  \def\@@bbrev##1{\expandafter\@@@bbrev\@eatprotect##1\protect\@nil}%
4054  \def\@@@bbrev##1"{\begingroup%
4055  \def\ABBMfalse{\global\let\ifABBM\iffalse}%
4056  \let\ifABBM\iftrue\global\let\ifABBfound\iffalse%
4057  \@openabbrev{\abbrevfilename}%
4058  \ifeof\@inputcheck\else%
4059  \loop\endlinechar=-1\read\@inputcheck to \@lineD\endlinechar`\^^M%
4060  \ifx\@lineD\empty%
4061  \else\edef\@lineD{##1 \@lineD/}\expandafter\@abbrev\@lineD\fi%
4062  \ifABBfound\ABBMfalse\fi%
4063  \ifeof\@inputcheck \ABBMfalse\ifABBfound\else%
4064  \f@issue%
4065  \@fw{-22- %
4066  %\@txt@msg{abr\'eviation de \string"##1\string" non trouv\'ee}%

4067  }[##1]%
4068  \fi\fi%
4069  \ifABBM\repeat%
4070  \fi\closein\@inputcheck%
4071  \ifABBfound\else``##1''\fi\endgroup}%
4072  }% end of \@abbdefs
4073 \if@PMF\let\@abbdefs\relax\fi% No need with PMF.
4074 \DFPdq% Deactivate " char
4075 \def\noabbreviations{\if@PMF\else\DFPdq\fi}%.................  \noabbreviations
4076 % Save original macros if they exist before the French option loading
4077  \let\@atORI\at%
4078 %  \let\@bvORI\vert% Already done before macros.
4079  \let\@bsORI\backslash%
4080 \catcode`\/=0{\catcode`/\=12%
4081 /gdef/@boiORI{{/protect/string\}}}%}emacs+TeX
4082 /catcode`/\=0\catcode`\/=12%
4083  \let\@boi\textbackslash% Should be ok with hyperref
4084  \let\@chapORI\chap%
4085  \let\@tildeORI\tilde%
4086  \let\@etcORI\etc%
4087  \let\@numORI\numero%
4088  \let\@numsORI\numeros%
4089  \let\@NumORI\Numero%
4090  \let\@NumsORI\Numeros%
4091  \let\@degreORI\degre%
4092  \let\@degresORI\degres%
4093  \let\@iemeORI\ieme%
4094  \let\@iemesORI\iemes%
4095  \let\@ierORI\ier%
4096  \let\@iersORI\iers%
4097  \let\@iereORI\iere%
4098  \let\@ieresORI\ieres%
4099  \let\@fscORI\fsc%
4100  \let\@lscORI\lsc%
4101  \let\@ntsORI\!%
4102  \let\@hntscORI\halfnegthinspace%
4103 \def\@ifm{%\noabbreviations% this is the default
4104 % original commands would be better preceeded by \expandafter
4105  \def\at{\ifFMA\string @\else\@atORI\fi}%         at char .............  \at
4106 \ifx\RIfM@\undefined%
4107  \def\vert{\ifx\RIfM@\undefined%
4108  \ifmmode\expandafter\@bvORI%
4109  \else\ifFMA\string |\else\@bvORI\fi\fi%
4110  \else\expandafter\@fwVIIIII%
4111  \fi}%
4112 \else%
4113  \def\vert{\ifmmode\expandafter\@bvORI%        |       ..............  \vert
4114  \else\ifFMA\string |\else\@bvORI\fi\fi}%
4115 \fi%
4116  \def\backslash{\ifmmode\@bsORI%(barre oblique inversee)  ........ \backslash
4117  \else\ifFMA%
4118  \protect\@boi%
4119  \else\@bsORI%

4120  \fi%
4121  \fi}%
4122  \def\chap{\ifFMA\string ^\else\@chapORI\fi}%     hat char ...........  \chap
4123  \def\tilde{\relax\ifFMA\ifmmode\expandafter%     tilde char.......... \tilde
4124  \expandafter\expandafter\@tildeORI%
4125  \else\string~\fi\else\expandafter\@tildeORI\fi}%
4126  \def\@Fsp##1{\ifFMA\ifmmode^{\mathrm{##1}}%
4127  \else$^{\mathrm{##1}}$\fi%
4128  \else##1\fi}%
4129  \def\@umer##1{\protect\@Fsp{##1}\kern.2em\ignorespaces}%
4130  \long\def\etc{\def\@tempa{}%                      etc. ................ \etc
4131  \ifFMA%
4132  \ifhmode\ifUSP\unskip\space\fi%
4133  \ifdim\lastskip>\z@\unskip\penalty\@M~\fi%
4134  \fi%
4135  etc\def\@tempa{\@ifNextNB.{}{%
4136  \@fw{-60- %
4137  %\@txt@msg{point manquant apr\`es \string\etc}%
4138  }}}%
4139  \else\@etcORI%
4140  \fi\@tempa}%
4141 \let\nombre\undefined% To avoid redefinition info message of LaTeX.
4142 \DeclareRobustCommand*{\nombre}% .....................................  \nombre
4143  {\ifFMA\expandafter\@nombre% This control command designed
4144  \else\expandafter\@nomORI% to typeset french numbers
4145  \fi}% with correct spacing like in 123 456,789 012.
4146  \def\numero{\ifFMA n\@umer{o}\else\@numORI\fi}%    n^o  ........... \numero
4147  \def\Numero{\ifFMA N\@umer{o}\else\@NumORI\fi}%    N^o  ........... \Numero
4148  \def\numeros{\ifFMA n\@umer{os}\else\@numsORI\fi}% n^os ........... \numeros
4149  \def\Numeros{\ifFMA N\@umer{os}\else\@NumsORI\fi}% N^os ........... \Numeros
4150  \def\degre{\ifFMA\r{}\space%                     degree  char....... \degre
4151  \else\expandafter\@degreORI\fi}%
4152  \def\degres{\ifFMA\@Fsp{o}\else\@degresORI\fi}%    degrees sign..... \degres
4153  \def\leftguillemets{\@noBDfr%
4154  \ifFMA\@oguills%          <<  char...\leftguillemets
4155  \else<<\fi}%
4156  \def\rightguillemets{\@noBDfr%
4157  \ifFMA\@fguills%         >>  char..\rightguillemets
4158  \else>>\fi}%
4159  \def\fup{\@noBDfr\ifFTY%.............................................. \fup
4160  \expandafter\@fup\fi}\MakeRobustCommand{fup}%
4161  \def\@fup{\@ifstar{\csname\string\!\endcsname\@@fup}{\@@fup}}%
4162  \def\@@fup##1{\def\@tempa{\leavevmode\raise+0.80ex%
4163  \hbox{\protect\sm@llerthree%
4164  \MakeLowercase{##1}}%
4165  \@ifNextNB\bgroup{\@@@fup}{\kern+.17em}}%
4166  \ifFMA\expandafter\@tempa\else##1\fi%

4167 }%

4168  \def\@@@fup##1{\ifx\empty##1\else\kern+.17em{##1}\fi}%
4169 %  \def\ieme{\ifFMA\protect\fup{e}\else\@iemeORI\fi}%
4170 %  \def\iemes{\ifFMA\protect\fup{es}\else\@iemesORI\fi}%
4171  \def\@tgifFMA##1##2{\ifFMA\expandafter\protect\expandafter##1%
4172  \else\expandafter\protect\expandafter##2\fi%

4173 }%

4174  \def\ieme{\@tgifFMA\@Ieme\@iemeORI}%...............  ieme  sign..... \ieme
4175  \def\@Ieme{\@ifstar{\@ieme}{\@@eme}}%
4176  \def\@ieme{\fup*{e}}%
4177  \def\@@eme{\fup{e}}\MakeRobustCommand{ieme}%
4178  \def\iemes{\@tgifFMA\@Iemes\@iemesORI}%............  iemes  sign..... \iemes
4179  \def\@Iemes{\@ifstar{\@iemes}{\@@emes}}%
4180  \def\@iemes{\fup*{es}}\MakeRobustCommand{iemes}%
4181  \def\@@emes{\fup{es}}%
4182  \def\ier{\@tgifFMA\@ier\@ierORI}%..................  ier    sign..... \ier
4183  \def\@ier{\fup*{er}}\MakeRobustCommand{ier}%
4184  \def\iers{\@tgifFMA\@iers\@iersORI}%...............  iers   sign..... \iers
4185  \def\iers{\fup*{ers}}\MakeRobustCommand{iers}%
4186  \def\iere{\@tgifFMA\@iere\@iereORI}%...............  iere   sign..... \iere
4187  \def\iere{\fup*{re}}\MakeRobustCommand{iere}%
4188  \def\ieres{\@tgifFMA\@ieres\@ieresORI}%............  ieres  sign..... \ieres
4189  \def\@ieres{\fup*{res}}\MakeRobustCommand{ieres}%
4190  \def\fsc{\@noBDfr\Fsc@@}%....................... small caps for names \fsc
4191  \MakeRobustCommand{fsc}%
4192  \def\Fsc@@{\@ifNextNB*{\let\Fsc@F\@sc@F\FSC@}{\let\Fsc@F\relax\FSC@*}}%
4193  \def\@sc@F{\rmfamily\mdseries}% The star option forces cmr and m font.
4194  \def\FSC@*##1{\fsc@##1\@@}%
4195 % Still bugged bec \fsc{{{...}}} generates a wrong output
4196  \def\fsc@##1##2\@@{\ifFMA\leavevmode{\ifECM\Fsc@F\else\@sc@F\fi%
4197  \textsc{%
4198  \@uchbox{\let\protect\@empty%
4199  \let\@typeset@protect\@empty%
4200  \let\@changed@x\@changed@x@mouth%
4201  \if\relax\noexpand##1\fsc@@@##1##2\@@%
4202  \else\edef\@tempa{##1}%
4203  \expandafter\fsc@@\@tempa##2\@@%
4204  \fi}}}%
4205  \else\@fscORI##1\fi}%
4206  \def\fsc@@##1##2\@@{\MakeUppercase{##1}\lsc@*{##2}}%remove surrounding {}
4207  \def\fsc@@@##1##2##3\@@{\MakeUppercase{##1{##2}}\lsc@*{##3}}%

4208 %

4209  \def\lsc{\@noBDfr\Lsc@@}%............... allways lower case small caps \lsc
4210  \MakeRobustCommand{lsc}%
4211  \def\Lsc@@{\@ifNextNB*{\let\Fsc@F\@sc@F\lsc@}{\let\Fsc@F\relax\lsc@*}}%
4212  \def\lsc@*##1{\ifFMA\leavevmode{\ifECM\Fsc@F\else\@sc@F\fi%
4213  \textsc{\@uchbox{\MakeLowercase{##1}}}}%
4214  \else\@lscORI##1\fi}%
4215 %.........................................  \primo  \secundo  \tertio  \quarto%
4216 %((((.....................................  \primo) \secundo) \tertio) \quarto)
4217  \def\@FE{\@noBDfr%( emacs
4218  \@ifNextNB){\@@FPE}{\@@FE}}%
4219  \def\@@FE{\the\@FrCount$^{\mathrm o}$\kern+.29em}%
4220 %   \def%( emacs
4221 %        \@@FPE){\the\@FrCount\kern-.25em\lower.2ex\hbox{\degre}%
4222 %                \kern-.55em%(emacs
4223 %                            )\kern+.3em}%
4224  \def%( emacs
4225  \@@FPE){\setbox0=\hbox{\degre}\@FrDimen=\wd0\multiply\@FrDimen by 10%

4226  \divide\@FrDimen by 45\leavevmode%
4227  \the\@FrCount\kern-\@FrDimen%
4228  \setbox0=\hbox{\the\@FrCount}\@tempdima=\ht0%
4229  \setbox0=\hbox{\degre}\@tempdimb=\ht0%
4230  \advance\@tempdimb by -\@tempdima%
4231  \lower\@tempdimb\hbox{\degre}%
4232  \multiply\@FrDimen by 45%
4233 \divide\@FrDimen by 20%
4234  \kern-\@FrDimen%(emacs
4235  )\kern+.3em}%
4236  \def\quando=##1{\@FrCount=##1\@FE}%(emacs..........  \quando=n or \quando=n)
4237  \MakeRobustCommand{quando}%
4238  \def\primo{\@FrCount=1\@FE}%
4239  \def\secundo{\@FrCount=2\@FE}%
4240  \def\tertio{\@FrCount=3\@FE}%
4241  \def\quarto{\@FrCount=4\@FE}%
4242 \def\frenchalias##1##2{%.......................................... \frenchalias
4243  \ifx##1\undefined\let##1 ##2\relax%
4244  \else\f@issue%
4245  \@fw{-1- %\@txt@msg{la macro \string##1 existe d\'ej\`a}%
4246  }[\string##1]%
4247  \expandafter\stop%
4248  \fi}%

4249 %

4250 % (Leslie says:  "... counters are referencable, footnote counters are not.")
4251 % Now we do. A facility to be added in future LaTeX releases I hope.
4252 \@ifundefined{refmark}% stands for \footnotemark[\ref{...}] .......... \refmark
4253  {\def\refmark##1{\@noBDfr%
4254  \ifFTY\ifhmode% unskip last space
4255  \ifdim\lastskip>\z@\unskip\fi\fi\fi%
4256  \hbox{% following patch due to NFSS2:
4257 %%%\ifx\DeclareFontShape\undefined\else\let\bf\mathbf\fi%\bf is used in  \ref!
4258  $^{\,% \ref may force \itshape
4259  \let\itshape\relax% which don't run in math.
4260 \textrm{\scriptsize% \textrm introduced to avoid \pdfannotlink (13d) to crash.
4261  \ref{##1}%
4262  }% (Bypass to be removed when version 14 widely installed).
4263  }$}}}{}%....}%
4264 \def\!{\relax\ifFMA\ifmmode%
4265  \mskip-\thinmuskip\else\negthinspace\fi%......... \!
4266  \else\@ntsORI\fi}%
4267 \expandafter\def\csname\string\!\endcsname{\kern-.083335em}%
4268 \def\halfnegthinspace{\ifFMA\expandafter% Not documented macro:
4269  \csname\string\!\endcsname%.....  \halfnegthinspace
4270  \else\expandafter\@hntsORI\fi}%
4271 \@ifundefined{moretolerance}{\def\moretolerance{%..............  \moretolerance
4272  \@noBDfr%
4273  \advance\tolerance by \the\tolerance% double each tolerance
4274  \advance\pretolerance by \the\pretolerance}}{}%
4275 \@ifundefined{I}{\def\I{I}}{}% to uppercase \i  ...........................  \I
4276  \def\Sauter##1Lignes{\@noBDfr%
4277  \vspace*{##1\baselineskip}}%............ \Sauter#Lignes
4278  }% end of \@ifm

4279 %%%%% Logo symbolisant TeX, LaTeX et les autres
4280 \@ifundefined{AllTeX}{%...............................................  \AllTeX
4281 \def\AllTeX{(\kern-.075em L\kern-.36em{\sbox\z@ T\vbox to\ht\z@{\hbox{%
4282  \check@mathfonts\fontsize\sf@size\z@\math@fontsfalse%
4283  \selectfont A}\vss}}\kern-.15em)\kern-.075em\TeX}%
4284 \MakeRobustCommand{AllTeX}%
4285  }{}%

4286 %#>

4287 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4288 \let\@currname\@currnameORI% reset current package name
4289 \def\languagename{english}% Let's go in english until \begin{document}
4290 \def\beginlanguage{%.......\beginlanguage might be used after \begin{document}
4291  \ifx\babel@savevariable%selectlanguage
4292  \undefined\french%
4293  \else\endenglish\selectlanguage{french}\fi%

4294 }%

4295 \let\@bglngpk\babel@savevariable% Set it for further integrity tests.
4296 \ifx\pg@add@to\undefined\else% polyglot is running
4297 \def\pg@begin{\begingroup}% Javier Bezos <jbezos@mx3.redestb.es>
4298 \def\pg@end{\endgroup}% as of 98/05/15
4299 \fi%

4300 %

4301 \edef\beginFWdirection{L}% write Left to right
4302 \ifx\undefined\babel@core@loaded\ProcessOptions*% Activate options
4303 \else% special case Babel
4304  \PackageInfo{\frenchname}%
4305  {Initialisation de l'option \frenchname\space pour Babel}%
4306  \GOfrench\let\GOfrench\relax%
4307 \fi%
4308 \let\@FW\undefined% No more used macro.
4309 % REMember that \french is equal to \frenchTeXmods PLUS hyphen. stuff.
4310 \resetat%........................................................ reset @ char
4311 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

4312 %

4313 % Let few other packages know that french is loaded.

4314 %

4315 \PassOptionsToPackage{french}{varioref}%
4316 \PassOptionsToPackage{french}{pdfscreen}%

4317 %

4318 \endinput%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

Table des matières

I Ce qui marche est ici... 3

1 Avertissements 5

2 La torture 7 2.1 Le saviez-vous? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 2.2 Did you know that? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 2.3 Typographie française . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 2.4 French printing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 2.5 Dactylographie française . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

2.5.1 Test de la ponctuation française ‘. : ; ! ?’ . . . . . . . . . . . . . . . . . 9 2.6 French typing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

2.6.1 fp “untypedspaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 2.6.2 fp “wrongtypedspaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

2.7 Test des guillemets français, 7 ( ) et 8-bits ( ) . . . . . . . . . . . . . . . . . . 10 2.7.1 fp “noeveryparguillemets . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 2.7.2 Test des commandes fp “ifnum . . . . . . . . . . . . . . . . . . . . . . . . . 12 2.7.3 Test des commandes fp “everypar . . . . . . . . . . . . . . . . . . . . . . . 12 2.7.4 Test de fermeture prématurée . . . . . . . . . . . . . . . . . . . . . . . . . . 13 2.7.5 fp “everyparguillemetsremoved . . . . . . . . . . . . . . . . . . . . . . . . . 13 2.7.6 Test de l’espacement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 2.7.7 Guillemets interrompus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 2.7.8 fp “noenglishdoublequotes . . . . . . . . . . . . . . . . . . . . . . . . . 15 2.7.9 fp “nofrenchguillemets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 2.7.10 Haut de page+guillemets . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 2.7.11 Guillemets et maths . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

2.8 D’autres guillemets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 2.9 French guillemets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

2.9.1 Guillemets and maths . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 2.10 Other guillemets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 2.11 Trois petits points . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 2.12 Crochets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 2.13 Débordements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 2.14 fp “labelsinmargin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 2.15 Three dots . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 2.16 Brackets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 2.17 fp “overfullhboxmark . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 2.18 Labels in margin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 2.19 Des points sur... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 2.20 Ponctuation et mode mathématique . . . . . . . . . . . . . . . . . . . . . . . . . . 18 2.21 An ıdotless . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 2.22 Math mode and punctuation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 2.22.1 Le cas de la virgule . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 2.22.2 The comma case . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

2.23 Mon antislash est fp “ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 2.24 Notes de bas de page . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 2.25 My antislash is fp “ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 2.26 Compared footnotes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 2.27 fp “guillemetsinarrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 2.28 Guillemets in arrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 2.29 Guillemets verbatim . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 2.30 Environnement guillemets exclus . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 2.31 Verbatim Guillemets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 2.32 Utilisation de la fp toc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 2.33 Fichiers fp lof et fp lot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 2.34 fp toc file use . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 2.35 fp lof and fp lot files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 2.36 Encore un tableau... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 2.37 Encore fp “labelsinmargin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 2.38 fp “labelsinmargin again . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 2.39 Notes dans fp “caption . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 2.40 fp “caption vide . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 2.41 fp “nombre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 2.42 Autre chose? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 2.43 Notes within fp “caption . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 2.44 Empty fp “caption . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 2.45 fp “nombre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 2.46 Anything else? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 2.47 Le 1^{er} paragraphe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 2.48 Test des listes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 2.49 Définition de langue . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 2.50 First paragraph . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 2.51 Itemized lists . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 2.52 Create a language . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 2.53 Caractères actifs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 2.54 Active characters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 2.55 Abréviations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 2.56 Monsieur s’abrège M. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 2.57 Abbreviations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 2.58 Autres macros utiles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 2.59 Other useful macros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 2.60 Accents et tabbing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 2.61 Figurettes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 2.62 Diacritics & tabbing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 2.63 Little figures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 2.64 Composition

en drapeau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 2.64.1 Tests ordinaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 2.64.2 Tests en drapeau fg , aux limites . . . . . . . . . . . . . . . . . . . . . . 33 2.64.3 Tests en drapeau fd , aux limites . . . . . . . . . . . . . . . . . . . . . . 33 2.64.4 Test fd classique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 2.64.5 Test fd IN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

2.65 Lettrines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 2.66 Illuminated letters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 2.67 Lettrines automatiques ou non . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 2.68 Énumérations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 2.69 L’environnement fp order . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 2.70 Tests aux limites des guillemets anglais . . . . . . . . . . . . . . . . . . . . . . . . 38 2.71 Autres tests . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

2.71.1 Test des guillemets dans un fp “edef . . . . . . . . . . . . . . . . . . . . . . 40 2.71.2 < et > redéfinis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 2.71.3 fp “special . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 2.71.4 fp “refmark dans un tableau . . . . . . . . . . . . . . . . . . . . . . . . . . 40 2.71.5 fp “nombre en argument . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 2.71.6 fp “label en mode math . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 2.71.7 Bibliographie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

Bibliographie 41

Glossaires 49

Index 50

II Ce qui ne marche pas (bien)... 51

1 Quelques questions à étudier 53 1.1 Le 2 points . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 1.2 Les guillemets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 1.3 Le cas des extensions mal écrites ... . . . . . . . . . . . . . . . . . . . . . . . . . . . 53

2 Améliorations à envisager 55 2.1 Index et bibliographie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 2.2 Abréviations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55

Annexes 55

A Copyright 57

B Le fichier language.dat  61
C Le fichier frabbrev.tex  63

D Le fichier french.cmd 69

E Le fichier french.chk 71

F Un style english (fenglish) 73

G Le code de l’extension FrenchPro 79