[efrench] efrench/efrenchsources: [82] Pour la version 6,11

[ Thread Index | Date Index | More lists.tuxfamily.org/efrench Archives ]


Revision: 82
Author:   rayj
Date:     2019-09-02 09:21:01 +0200 (Mon, 02 Sep 2019)
Log Message:
-----------
Pour la version 6,11
Extensions pour les espaces (fines) non sécables.
 - \NobrkSpacesINFr pour suivre les règles de l'Imprimerie Nationnale
 - \NobrkSpacesFine espaces fines comme dans le Guide du Typographe
 - \NobrkSpacesFpro pour rester au comportement de la version 6.101
 - \MonEspaceFine pour définir sa propre espace fine non sécable

Modified Paths:
--------------
    trunk/doc/efrench.tex
    trunk/doc/french_doc.txt
    trunk/inputs/french/french-msg.tex
    trunk/inputs/french/french.sty
    trunk/inputs/french/french_french-msg.tex

Modified: trunk/doc/efrench.tex
===================================================================
--- trunk/doc/efrench.tex	2019-05-31 12:54:44 UTC (rev 81)
+++ trunk/doc/efrench.tex	2019-09-02 07:21:01 UTC (rev 82)
@@ -68,6 +68,7 @@
 \makeindex
 \begin{document}
 %                       \labelsinmargin
+\usualmessages
 \def\raccouXe{X\raisebox{1.2ex}{\hspace{-0.05ex}\rotatebox{180}{E}}\hspace{-0.3ex}}%
 
 \title{\fboxsep=2ex%
@@ -91,7 +92,7 @@
   {\em a priori\/} aucune connaissance particulière
   ni une utilisation forcenée de commandes spécifiques. Toutefois cet
   emploi n'est pas toujours {\em transparent}. 
-  Une version allégée est fournie (style \texttt{frenchle}).
+%  Une version allégée est fournie (style \texttt{frenchle}).
 Une version appauvrie (\texttt{pmfrench})
   est aussi utilisable sur tous les sites et dans toutes les
   configurations.  D'autres extensions accompagnent le style  \texttt{french}
@@ -299,7 +300,8 @@
 le fichier \verb|french.sty| mais dans %]
 \linkandfootnote{codefrench}{\texttt{french\_{}doc.pdf}}%
 {http://efrench.org/doc/french_doc.pdf}%
- (dont la mise à jour accuse un certain retard.\textbf{]}
+% (dont la mise à jour accuse un certain retard
+.\textbf{]}
 \index{fichier!french_doc.pdf@\texttt{french\string_doc.pdf}}%
 
 \subsection{Pour commencer}\label{Pour commencer}\index{pour commencer}%
@@ -348,9 +350,9 @@
 a été bien défini pour \LaTeX{} ou sinon : \verb|<<| et \verb|>>| ; toute
 autre sorte de guillemets est à prohiber en français
 (\verb|` " '| \`{ } \'{ } `` ,, '') ; 
-\item {\em french.sty} a été étendu pour accepter aussi les guillemets \MAJ
+\item {\em french.sty} a été étendu pour accepter aussi les guillemets 
 {\em utf8} sous \raccouXe\LaTeX ceci pour autant que {\em efrenchu.tex}
-soit accessible ;\endMAJ
+soit accessible ;
 \item on marque les intervalles avec un simple tiret 
 (\verb|-|) comme dans << la guerre de 1939-45 >> ou << voir explication
 p. 169-173 >> ;
@@ -1269,7 +1271,7 @@
 %===============
 %\input{frenchlet}   % activer dès l'instant où lettre.cls, version 3 est sur CTAN
 
-\subsection{La classe \emph{lettre} } \label{lettre}
+\subsubsection{La classe \emph{lettre}  de l'Observatoire de Genève } \label{lettre}
 La classe \texttt{lettre}
  de l'Observatoire de Genève peut aussi être utilisée
 par  {\eFrench}.
@@ -1277,32 +1279,105 @@
 S'il est vrai que la classe \texttt{lettre} a été conçue et développée d'abord pour être utilisée avec \textsl{babel},
 sa version 3.000 devrait être compatible avec \textsl{e-french}.
 Les versions précédentes sortaient dans certaines configurations (sous Windows avec Mik\TeX) une page blanche avant chaque lettre.
-\subsubsection{Exemples complets d'utilisation}
+\paragraph*{Exemples complets d'utilisation}
 On ne peut pas appliquer tels quels les exemples donnés dans la documentation 
 de la classe \texttt{lettre} sous \textsl{babel}. C'est pourquoi il existe une documentation spéciale et
  des exemples d'utilisation avec {\eFrench} sous
 \url{http://efrench.org/doc/eflettre.zip}
 
-\subsection{ \protect \raccouXe\LaTeX, Bib\LaTeX{} et InterCharToks}\label{interchartoks}\index{interchartoks}%
+\MAJ
+\subsection{Espaces insécables, ponctuation et guillemets} 
+\index{espaces non sécables}%
+Cette section précise certains éléments apportés à partir de la version 6,1 d'eFrench
+concernant la mise en œuvre des espaces insécables..
+La version 6,11 tient compte désormais des tendances actuelles de la typographie
+en donnant le choix à l'utilisateur entre les règles de l'Imprimerie Nationale Française,
+celles du Guide du Typographe\cite{romand} (autrefois guide Romand du Typographe\cite{romand5})
+et celles des versions antérieures d'eFrench (reprises de FrenchPro).
+\subsubsection{ Trois règles et leurs différences}
+Ces différences ne touchent que l'espace insécable précédant les deux-points et le guillemet fermant
+et celui suivant le guillemets ouvrant. Les avis semblent unanimes concernant les espaces précédant
+le point d'exclamation, le point d'interrogation et le point-virgule. C'est alors une espace fine insécable.
 
-Avec le moteur \raccouXe\LaTeX, il est possible d'utiliser {\em InterCharToks} pour définir le comportement
-des ponctuation hautes ( ! ; : et ?). Dans ce cas, une espace insécable (fine) est insérée entre le texte
-et la ponctuation, qu'il y ait ou qu'il n'y ait pas d'espace auparavant. Ce qui n'est pas le cas en utilisation
-habituelle qui prévoit la présence d'espace, sinon la ponctuation reste collée.
-La commande \verb|\intercharpunct| active le mode {\em InterCharToks}.
-La commande \verb|\nointercharpunct| inhibe cette façon et retourne à la manière habituelle.
-\subsubsection{Bib\LaTeX}\label{BibLaTeX}\index{BibLaTeX@\texttt{Bib\LaTeX}}
+\begin{enumerate}
+\item {\bf Imprimerie Nationale Française} : espaces insécables entières pour deux-points et guillemets ;
+\index{espaces non sécables!NobrkSpacesINFr@\texttt{\backslash NobrkSpacesINFr}}%
+\item{\bf Guide du typographe} : espaces fines insécables partout ;
+\index{espaces non sécables!NobrkSpacesINFr@\texttt{\backslash NobrkSpacesFine}}%
+\item{\bf FrenchPro} espace fine insécable pour les deux-points, espaces insécables entières pour les guillemets.
+\index{espaces non sécables!NobrkSpacesINFr@\texttt{\backslash NobrkSpacesFpro}}%
+\end{enumerate}
+Ainsi Bernard Gaulle s'était inspiré des deux modèles. Maintenant l'utilisateur a le choix, qu'il peut préciser soit
+dans le préambule après appel  de french.sty (\verb|\usepackage{efrench}|), 
+soit dans le fichier de configuration {\em french.cfg}, soit tout au début 
+du document. Voici les trois commandes disponibles :
+\begin{enumerate}
+\item \verb|\NobrkSpacesINFr| pour suivre les recommandations de l'Imprimerie Nationale Française ;
+\item \verb|\NobrkSpacesFine| pour suivre les recommandations du Guide du Typographe ;
+\item \verb|\NobrkSpacesFpro| pour revenir au comportement par défaut (si l'une des autres commandes
+a été mise en œuvre dans {\em french.cfg}).
+\end{enumerate}
 
+\paragraph*{Comportement des guillemets dans le choix d'espaces fines}
+Dans ce choix, l'espace fine est toujours présente, même si dans le fichier-source les guillemets sont collés au texte.
+\subsubsection{ \protect \raccouXe\LaTeX, Bib\LaTeX{} et InterCharToks}\label{interchartoks}\index{interchartoks}%
+\index{BibLaTeX@{Bib\LaTeX}}
+
+Au sein de Bib\LaTeX{}
+avec le moteur \raccouXe\LaTeX\index{XeLaTeX@{\raccouXe\LaTeX}},
+ il est nécessaire 
+ d'utiliser {\em InterCharToks} pour définir le comportement
+des ponctuation hautes ( ! ; : et ?). Dans la précédente version d'eFrench, 
+une espace insécable (fine) était toujours insérée entre le texte
+et la ponctuation, qu'il y ait ou non d'espace inséré. 
+Ce défaut est corrigé et les espaces de la ponctuation n’apparaissent
+que si l'on a une espace dans le source comme
+c'est le cas en utilisation habituelle.
+
+Les règles décrites précédemment concernant les choix entre espace entière et espace fine
+sont aussi actives sous  {\em InterCharToks}.
+Mais {\em InterCharToks} a sa propre définitions des espaces insécables. 
+À ce niveau, seuls les guillemets échappent à cette emprise et réagissent dans Bib\LaTeX{}
+comme dans le texte principal en ce qui concerne les espaces insécables.
+
 La compatibilité   {\em InterCharToks}\index{interchartoks}
- permet entre autres une utilisation correcte de BibLaTeX.
+ permet donc une utilisation correcte de BibLaTeX.
 Dans le programme demandant la bibliographie, on donnera l'ordre \verb|\intercharpunct|
-avant de placer la bibliographie. Au sein des fichiers sources de \texttt{Biber (*.bib)}, il faudra alors
+avant de placer la bibliographie. Au sein des fichiers sources de \texttt{Biber (*.bib)}, il ne faut plus
 entourer chaque texte non-français contenant une ponctuation haute entre  
 \verb|\nointercharpunct| et \verb|\intercharpunct| afin que la ponctuation étrangère
-ne réagisse pas comme la ponctuation française. Exemple :\\
-{\small\verb|TITLE="\nointercharpunct Alan Turing: the Enigma \intercharpunct(Alan Turing : l'Énigme de|...}
-\index{BibLaTeX@\texttt{Bib\LaTeX}}
+ne réagisse pas comme la ponctuation française. Il suffit de la coller au texte. On écrira  par exemple :\\
+{\small\verb|TITLE="Alan Turing: the Enigma (Alan Turing : l'Énigme de|...}
+\index{BibLaTeX@{Bib\LaTeX}} qui devient\\
+{\em Alan Turing: the Enigma (Alan Turing : l'Énigme de ...}
 
+Après Bib\LaTeX{}, s'il y a encore du texte, il faut retourner à l'état 
+\raccouXe\LaTeX normal en utilisant \verb|\nointercharpunct|.
+
+Exemple :
+
+\noindent
+\verb|\intercharpunct % | {\em pour la bibliographie, activation de la ponctuation interchartoks}
+\\
+\verb|\printbibliography|\\
+\verb|\nointercharpunct % | {\em pour la suite, retour à la ponctuation habituelle}
+
+\subsubsection{Choix d'une espace fine personnelle}
+Normalement, l'espace fine a la longueur d'une demi-espace normale et n'est pas élastique.
+C'est aussi le cas avec  {\em InterCharToks} où ce comportement n'est pas modifiable,
+les guillemets faisant exception.
+Pour le document principal, on peut appeler une commande \verb|\MonEspaceFine|.
+Le comportement normal de l'espace fine correspond à la commande
+\verb|\MonEspaceFine{0.5}{0}{0}.| Le premier paramètre indique que c'est la moitié
+de l'espace normale, le second qu'il n'y a pas d'extension, le troisième qu'il  n'y a pas de compression.
+Une commande \verb|\MonEspaceFine{0.5}{0.3}{0.2}| ajoute une certaine d'élasticité,
+peu en extension, encore moins en compression.
+Les paramètres sont relatifs à ceux du comportement de l'espace entière que l'on
+pourrait copier en définissant  \verb|\MonEspaceFine{1}{1}{1}|. 
+Le comportement final dépend fortement de la fonte en cours dans le texte.
+
+\endMAJ
+ 
 \subsection{Environnements}\label{Environnements}\index{environnements}%
 \subsubsection{Les messages à la console}\label{messages}
 
@@ -1312,6 +1387,7 @@
 en 7-bits ce qui est la seule solution pour éviter les mélanges
 entre 8-bits et unicode. Autre possibilité pour l'utilisateur :
 supprimer {\em french\_french-msg.tex} afin d'avoir les messages en anglais.
+C'est ainsi, par l'anglais, que french pour babel a résolu le problème.
 \endMAJ
 
 \subsubsection{À propos de césure\label{cesure}}
@@ -1346,7 +1422,7 @@
 séquence \verb|\-| est ici, avec {\eFrench}, équivalente
 à un espace) ; pour plus de détails se reporter à
 \verb|\frenchhyphenation| page \pageref{frenchhyphenation} et
-\verb|\moretolerance| page \pageref{moretolerance} ; \maj
+\verb|\moretolerance| page \pageref{moretolerance} ;% \maj
 %Par défaut, le fichier \vers|frhyphex.tex| contenant
 %quelques exceptions françaises est introduit dans \TeX{} à 
 %la création du {\em format}%
@@ -1647,7 +1723,7 @@
 arriver effectivement que \LaTeX{} ne les place pas dans l'ordre de leur
 numérotation).
 
-\subsection{Extension utiles}\label{Extension utiles}\index{extension utiles}%
+\subsection{Extensions utiles}\label{Extension utiles}\index{extension utiles}%
 
 \subsubsection{Petits outils supplémentaires}\label{outils}
 Il ne s'agit pas ici d'outils typiquement français mais 
@@ -1830,7 +1906,7 @@
              avec MacOs X ;
        la version du format \LaTeX\ doit dater au moins de 2003 
 (\texttt{2003/12/01}) pour bénéficier du codage \texttt{utf8}.
-C'est le codage par défaut de \raccouXe\LaTeX{}.\maj
+C'est le codage par défaut de \raccouXe\LaTeX{}.
 %(avec 
 %l'extension \emph{inputenc} à laquelle fait appel \eFrench\ pour
 %gérer ce cas spécifique) ;
@@ -2852,8 +2928,8 @@
 La bibliographie d'un document est réalisée en deux étapes : 
 tout d'abord la sélection et le tri des entrées bibliographiques (en général
 reprises d'une base bibliographique BiB\TeX{} ou BiB\LaTeX) avec le programme
-\index{bibtex8@\texttt{bibtex8}}%
-\index{BibLaTeX@\texttt{Bib\LaTeX}}%
+\index{bibtex8@{bibtex8}}%
+\index{BibLaTeX@{Bib\LaTeX}}%
 \texttt{bibtex}
 \footnote{Utiliser de préférence \texttt{bibtex8} pour le traitement 
 correct des caractères accentués. Mais avec XeLaTex, c'est une
@@ -2871,7 +2947,7 @@
 \emph{biblatex} est aussi fonctionnel}%
 \index{extension!jurabib@\emph{jurabib}}%
 \index{extension!fracm@\emph{fracm}}%
-\index{BibLaTeX@\texttt{Bib\LaTeX}}%
+\index{BibLaTeX@{Bib\LaTeX}}%
 . Par défaut, il traduit les libellés utilisés
 le plus fréquemment, comme nous allons le voir dans ce qui suit.
 
@@ -2961,7 +3037,7 @@
 \index{abreviations@abréviations!\texttt{\backslash abbreviations}}%
 \index{noabreviations@\texttt{\backslash noabbreviations}}%
 d'abréviations par la commande : \verb|\abbreviations[fichier]|.
-\paragraph*{Abbréviations pour sources en UTF8} Le fichier d'abbréviations \MAJ
+\paragraph*{Abbréviations pour sources en UTF8} Le fichier d'abbréviations 
 ouvert par défaut (\vers|frab|\-\vers|brev.tex|) est codé en latin9.
 \index{codage!utf8@\texttt{utf8}}
 Maintenant existe aussi le même en utf8 nommé \vers|frab|\-\vers|brev-u8.tex|.
@@ -2969,8 +3045,8 @@
 par la commande\\ \verb|\abbreviations[fichier]|
 celui qui convient au code source, par exemple\\ 
  \verb|\abbreviations[frabbrev-u8.tex]|.
-\endMAJ
 
+
 Rappelons qu'en \TeX{} le caractère \verb|"| est 
 normalement le début d'une valeur
 hexadécimale. L'option \verb|\abbreviations| interdit donc temporairement
@@ -2995,8 +3071,8 @@
 doublée. La portée de cet ordre doit donc être limitée par des 
 accolades \{\ \} ou tout autre moyen sûr. L'aspect négatif de cet
 ordre concerne l'extension de l'espace inter-mots qui ne manquera
-pas de se produire car \TeX\ aura alors tendance à rajouter de la
-\emph{glue} plutôt que de produire des coupures de mots en bout 
+pas de se produire car \TeX\ aura alors tendance à rajouter de 
+l'élasticité plutôt que de produire des coupures de mots en bout 
 de ligne, les deux étant toutefois possibles :
 \begin{figurette}
 \Large
@@ -3568,33 +3644,11 @@
 \index{T1@\texttt{T1} (codage)}%
 
 \item \texttt{-25- (pm)french.sty affiche ici ses messages en 7-bits}\\
-      \texttt{\phantom{-25-} }\verb|(\`|\texttt{a la TeX).}\\
-      Le format \LaTeX{} qui a été créé ne supporte pas le 8-bits en
-      sortie. Cela peut effectivement venir du moteur \TeX\ car tous
-\index{moteur!tex@\TeX}%
-      ne disposent pas de cette facilité. Si ce n'est pas le cas,
-      probablement que le format a été créé sans utiliser
-      le configurateur de clavier \texttt{kbconfig} 
-%%%%%%%%%%%%%%%%%%%%%
-\ifnoDOCinstall\else%
-%%%%%%%%%%%%%%%%%%%%%
-(cf. \ref{kbconfig} page \pageref{kbconfig})
-\fi%
-.\\ 
-      Dans d'autres cas, les messages ne peuvent même pas être
-      émis << à la \TeX\ >> ; les ordres d'accentuation
-      sont alors totalement éliminés.\\
-      Si vous souhaitez
-      toutefois afficher les messages en 8-bits, forcez l'option
-      \verb|\usualmessages|.
-\index{usualmessages@\texttt{\backslash usualmessages}}%
+Ceci est le cas généralement et c'est nouveau parce que le choix
+à faire entre tous les formats (ansii, utf8, etc) est souvent impossible.
 
 \texttt{-25- (pm)french.sty affiche ici ses messages en 8-bits.}\\
-      Ceci est l'option normale si le moteur \TeX{} est capable de produire
-\index{moteur!tex@\TeX}%
-      du 8-bits en sortie, à la place des caractères héxadécimaux sous
-      la forme \verb|^^xx|. Cette option peut avoir été forcée par la
-      commande \verb|\usualmessages|.
+Ce message ne devrait plus être affiché.
 
 \item\texttt{-26a- Erreur détectée dans (pm)french.sty.}\\
      \texttt{-26b- (voir p.ex. le fichier language.dat)}\\
@@ -4069,7 +4123,31 @@
 Le dispositif permettant de disposer de fichiers \texttt{*.kbc} en 
 \index{fichier!*.kbc@\texttt{*.kbc} avec Plain \TeX}%
 fonction du langage utilisé n'est pas disponible avec Plain TeX.
+\item \texttt{-81- ATTENTION  : extension "msg" non trouv\'ee ; \\%
+\phantom{-81-} on continue sans le texte des messages}\\
+Les fichiers de messages manquent ou ne sont pas accessibles
 
+\item \texttt{-85- Attention : l'option fixlanguage 
+         n'a pas \'et\'e fournie \`a l'appel de babelbib}\\
+Ceci ne devrait pas arriver car babelbib ne devrait pas être utilisé
+avec e-french
+
+\item \texttt{-87- ERREUR : \\% 
+         babelbib s'utilise uniquement avec babel}\\
+Ceci ne devrait pas arriver car efrench ne devrait pas être utilisé
+avec babel
+
+\MAJ
+\item \texttt{-94- Le changement de ponctuation (NobrkSpaces...)} \\
+\phantom{-94-} n'est plus permis apr\`es une utilisation de ponctuation active\\
+\phantom{-94-}  (\string! \string? \string; \string: \string<\string< \string>\string>).\\
+Veillez appeler la commande dans french.cfg ou 
+avant {\em \backslash begin\{document\}} ou tout au début de ce dernier,
+en tous cas avant l'emploi d'espace insécable\endMAJ
+
+\msgheader{-**-\space}
+
+
 \end{itemize}
 
 %%%%%%%%%%%%%%%%%%%%%
@@ -4341,9 +4419,15 @@
                    {\em The \LaTeX{} companion}, Addison-Wesley, 
                    second edition, 2004.
 
-\bibitem{romand} {\em Guide du typographe romand}, Association suisse
-                  des compositeurs à la machine, 6\ieme édition, 2000.
+%\bibitem{romand4} {\em Guide du typographe romand}, Association suisse
+ %des compositeurs {\`a} la machine, 4\ieme {\'e}dition, 1982
 
+\bibitem{romand5} {\em Guide du typographe romand}, Association suisse
+                  des compositeurs à la machine, 5\ieme édition, 1993.
+
+\bibitem{romand} {\em Guide du typographe}, Association suisse
+                  des typographes (AST), groupe de Lausanne, 7\ieme édition, 2015.
+
 \bibitem{latexbook}L. {\sc Lamport}, {\em \LaTeX, A
                    document preparation system}, Addison-Wesley, 1994.
 

Modified: trunk/doc/french_doc.txt
===================================================================
--- trunk/doc/french_doc.txt	2019-05-31 12:54:44 UTC (rev 81)
+++ trunk/doc/french_doc.txt	2019-09-02 07:21:01 UTC (rev 82)
@@ -30,11 +30,11 @@
  \ifx\@unexpandable@protect\undefined\let\protect\empty%
  \else\let\protect\@unexpandable@protect%
  \fi%
-                           \xdef\FSfd{8 mars 2019}%          eFrench
-                           \xdef\FSfv{V6,1}% 
+                           \xdef\FSfd{6 septembre 2019}%          eFrench
+                           \xdef\FSfv{V6,11}% 
                            \xdef\frenchstyleid{\FSfv\space-- \FSfd\space --}%
 }}%
-                           \edef\FSfd{2019/03/08}%
+                           \edef\FSfd{2019/09/06}%
 %
 % History as given by Bernard Gaulle:
 % I started this job years ago (in 1989) firstly
@@ -188,7 +188,17 @@
 % V6,1
 % Changes made necessary because of BibLaTeX and Interchartoks
 % Changes made by Raymond Juillerat 2019/03/08
-%
+% V6,101
+% Two minor corrections by interchartoks
+% Changes made by Raymond Juillerat 2019/05/30
+% V6,11
+% Possibility of choice for non-breakable spaces: 
+% - as made by Bernard Gaulle (fine spaces except for guillemets)
+% - as required by the Imprimerie Nationale de France
+%       (fine spaces only for ; ! ? full for : << and >>)
+% - only fine spaces like in Guide du Typographe
+% and choice of the fine space defined by the user
+% Changes made by Raymond Juillerat 2019/09/06
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %
 % Object: DOCUMENT CLASS OPTION for printing French texts with TeX or LaTeX
@@ -727,9 +737,51 @@
              %\@txt@msg{WARNING:}%
              %\@txt@msg{the French language is undefined in your format.}%
                                }%
+   \fi%
 \fi%
 %
-\fi%
+% more posibilities by high-punctuation and guillemets
+% three commands for the user
+% - with \NobrkSpacesINFr punctuation as asked by the Imprimerie Nationnale
+% - with \NobrkSpacesFine only fine spaces as in theGuide du Typographe
+% - with \NobrkSpacesFpro punctuation as it was till version 6.101
+%
+%\newif\ifeFrfisp@v@ria
+\newif\ifeFr@DPtfine% semicolon fine or not
+\newif\ifeFr@Guifine% guillemets fine or not
+\newif\ifUSP@GuiFinSpa % for OG space made unbreakable or unused
+\newif\ifPonctu@ctived % no more changes in definitions after having used
+                       % some non-breaking spaces  
+\def\nbsp@ce{\penalty\@M\space}
+\def\fispce@rigide{\,}%
+\def\eFrFinSp@ce{\penalty\@M%
+                     \hskip 0.5\fontdimen2\font}%
+% a possibility for the user to define an own fine non breakable space
+\def\MonEspaceFine#1#2#3{\def\eFrFinSp@ce{\penalty\@M%
+       \hskip #1\fontdimen2\font%
+        plus #2\fontdimen3\font%
+        minus #3\fontdimen4\font}
+}%
+% by guillemets, if fine space, it is always present
+\def\eFr@OGsp@cSpl{\ifeFr@Guifine\eFrFinSp@ce
+                   \else\nbsp@ce\fi\ignorespaces}
+% for the user: fine, Imprimerie Nationale-France or Frenchpro
+\def\NobrkSpacesFine{\ifPonctu@ctived
+% don't redefine punctuation behavior
+       \f@issue\@fw{-94-}[NobrkSpacesFine]
+    \else\eFr@DPtfinetrue\eFr@Guifinetrue % espaces fines
+	\fi}
+\def\NobrkSpacesFpro{\ifPonctu@ctived
+% don't redefine punctuation behavior
+       \f@issue\@fw{-94-}[NobrkSpacesFpro]
+    \else\eFr@DPtfinetrue\eFr@Guifinefalse% comme Frenchpro
+	\fi}
+\def\NobrkSpacesINFr{\ifPonctu@ctived
+% don't redefine punctuation behavior
+       \f@issue\@fw{-94-}[NobrkSpacesINFr]
+    \else\eFr@DPtfinefalse\eFr@Guifinefalse %
+%       			           [Imprimerie Nationale de France
+     \fi} 
 \fontencoding{\encodingdefault}\selectfont%
       \def\@temp@{OT1}\ifx\@temp@\f@encoding%
                            \def\@temp@{\global\ECMfalse}%
@@ -2196,6 +2248,8 @@
 %%% %\@txt@msg{configuration de \frenchpack}%
 %%% }}{}%
 %%% so we now call \IfFileExists ... \@finput
+% by default, the nobreak punctuation set like by Bernard Gaulle
+               \NobrkSpacesFpro%
                \IfFileExists{\frenchname.cfg}{% -load site config file.
                                   \f@issue%
                                   \@fw{-48- %\@txt@msg{Lecture du fichier de }%
@@ -3260,11 +3314,11 @@
       \XeTeXcharclass `\! \french@punctthin
       \XeTeXcharclass `\? \french@punctthin
       \XeTeXcharclass `\; \french@punctthin
-      \XeTeXcharclass `\: \french@punctthick
-      \XeTeXinterchartoks \z@ \french@punctthin = {\nobreak\thinspace}%
-      \XeTeXinterchartoks \z@ \french@punctthick = {\nobreakspace}%
+      \XeTeXcharclass `\: \french@semicolon  
+      \XeTeXinterchartoks \z@ \french@punctthin = {\ifUSP\nobreak\thinspace\fi}%
+      \XeTeXinterchartoks \z@ \french@semicolon = {\ifUSP\ifeFr@DPtfine\nobreak\thinspace\else\nobreakspace\fi\fi}%
       \XeTeXinterchartoks 4095 \french@punctthin = {\efr@unskip\nobreak\thinspace}%
-      \XeTeXinterchartoks 4095 \french@punctthick = {\efr@unskip\nobreakspace}%
+      \XeTeXinterchartoks 4095 \french@semicolon = {\efr@unskip\ifeFr@DPtfine\nobreak\thinspace\else\nobreakspace\fi}%
     }
 \def\nointercharpunct{%
 %    \lccode8217=\z@
@@ -3288,9 +3342,10 @@
 % ceci ou largeur fixe ? % insecable : space : \char160 fine : \char8239
 \ifeF@xetex@punct
   \newXeTeXintercharclass\french@punctthin % ! ? ; et autres
-  \newXeTeXintercharclass\french@punctthick % :
+  \newXeTeXintercharclass\french@semicolon % : deux points - Dpt
 %
   \def\efr@unskip{\ifhmode\ifdim\lastskip>\z@\unskip\fi\fi}
+%  \def\eFresp@dpt{\ifeFr@DPtfine\nobreak\thinspace\else\nobreakspace\fi}
   \def\xpg@nospace#1{#1}
 %
    \ifeFr@Typo\protect\intercharpunct\else\nointercharpunct\fi 
@@ -3311,8 +3366,10 @@
 \def\@tempd{\@tempa{\string;}}%
 \ifx;\undefined\def\@tempd{}\fi\@tempd\@tempc%
 \def\@PV{\relax\ifmmode\string;\else%
+% don't redefine punctuation behavior
+			\Ponctu@ctivedtrue
                               \ifhmode\ifUSP\unskip\space\fi%
-                              \ifdim\lastskip>\z@\unskip\penalty\@M\,\fi%
+             \ifdim\lastskip>\z@\unskip\eFrFinSp@ce\fi%
                          \fi\string;\fi}%
 \def\@tempc{%
 \def:{\ifFTY\protect\@DP%{}% -............................................... ":"
@@ -3322,8 +3379,12 @@
 \ifx:\undefined\def\@tempd{}\fi\@tempd\@tempc%
 \@ifundefined{@beginparpenalty}{\def\@beginparpenalty=#1{\penalty#1}}{}%
 \def\@DP{\relax\ifmmode\string:\else%
+% don't redefine punctuation behavior
+\Ponctu@ctivedtrue
+\ifeFr@DPtfine\let\eFresp@dpt=\eFrFinSp@ce
+  \else\let\eFresp@dpt=\nbsp@ce\fi
                               \ifhmode\ifUSP\unskip\space\fi%
-                                    \ifdim\lastskip>\z@\unskip\penalty\@M\,\fi%
+                                \ifdim\lastskip>\z@\unskip\eFresp@dpt\fi%
                               \fi%
                          \string:%
          \@beginparpenalty=\@M\relax%
@@ -3349,8 +3410,10 @@
 \def\@tempd{\@tempa{\string!}}%
 \ifx!\undefined\def\@tempd{}\fi\@tempd\@tempc%
 \def\@PE{\ifmmode\string!\else%
+% don't redefine punctuation behavior
+		\Ponctu@ctivedtrue
                               \ifhmode\ifUSP\unskip\space\fi%
-                                 \ifdim\lastskip>\z@\unskip\penalty\@M\,\fi%
+			\ifdim\lastskip>\z@\unskip\eFrFinSp@ce\fi%
                               \fi%
                               \string!\fi}%
 \def\@tempc{%
@@ -3360,9 +3423,10 @@
 \def\@tempd{\@tempa{\string?}}%
 \ifx?\undefined\def\@tempd{}\fi\@tempd\@tempc%
 \def\@PI{\relax\ifmmode\string?\else%
+% don't redefine punctuation behavior
+		\Ponctu@ctivedtrue
                             \ifhmode\ifUSP\unskip\space\fi%
-                               \ifdim\lastskip>\z@\unskip\penalty\@M%
-                               \hskip +0.09em plus 0.07667em% -max glue accepted
+		\ifdim\lastskip>\z@\unskip\eFrFinSp@ce%
                                \fi%
                             \fi%
                             \string?\fi}%
@@ -3464,6 +3528,7 @@
        \advance\@FrDimen by -\leftmargin\advance\@FrDimen by -\rightmargin%
        \advance\@FrDimen by -\listparindent\hsize=\@FrDimen}%
        \@qquotes\fi\fi\fi%
+	 \sp@inogfalse%
      \@oguills%
        \ifFLA\ifEPG\bgroup\def\@currenvir{guillemets}% -simulate an environment
                    \let\@CGroup\egroup\fi\fi% -for error processing
@@ -3470,10 +3535,10 @@
        \ifCG\ifFLA\ifEPG% -save the current \everypar and apply it first
                  \xdef\@epORI{{\the\TeXeverypar}}%
                  \TeXeverypar={\@epORI% -Original \everypar.
-                            \ifEPGR\else% -If not allready done,
+                            \ifEPGR\else\@AG%  -guide du typographe
+							\sp@inogtrue%
                             \@oguills% -insert guillemets and
                             \@ifundefined{@OuvOpen}{% -then according
-                            \,% -kerning just after.
                                                    }{}%
                             \fi}%
             \fi\fi%
@@ -3481,19 +3546,39 @@
        \ifFLA\ifEPG\else\def\@qqguill{\@oguills}\@staring\fi\fi\fi%
 %%% \protect\@CGfalse%
        \global\let\ifCG\iffalse%
+	   \ifeFr@Guifine\USP@GuiFinSpatrue%  OG full space not used
+		  \let\eFresp@gui=\eFrFinSp@ce%  OG fine unbreakable space
+	   \else\USP@GuiFinSpafalse%           OG full space possible 
+	      \let\eFresp@gui=\nbsp@ce%     OG full unbreakable space
+	   \fi%
+%% don't redefine punctuation behavior
+	   \Ponctu@ctivedtrue
+	   \ifUSP\USP@GuiFinSpatrue\fi%            OG full space not used
+	   \ifUSP@GuiFinSpa\eFr@OGsp@cSpl%
+       \else\relax\penalty\@M\fi}%  
 %       \ifUSP\kern+0.13em\penalty\@M\ignorespaces%   - >> V6,1 BG
-       \ifUSP\kern+0.13em\penalty\@M\ignorespaces%
-             \else\kern-0.19em\relax\penalty\@M\fi}% -likely as \ignorespaces\fi
 \def\@AG{\ifAG\let\@LP\@RP\let\@gotl\@gotr%
          \fi}% -Apply ancient guillemets if required
 \def\f@guillemets{<<}%
+% do not repeat the non breakable space
+\newif\ifsp@inog
 \def\@oguills{%
+	\ifeFr@Guifine%
+		\let\eFresp@gui=\eFrFinSp@ce%
+	\else\let\eFresp@gui=\nbsp@ce%     no space to be made unbreakable
+	\fi%
+% don't redefine punctuation behavior
+	\Ponctu@ctivedtrue
      \bgroup\@ifundefined{@OuvOpen}{\def\@OuvOpen{}% -avoid duplicate <<
      \@ifundefined{ly}{\@og}%
           {\leavevmode\ifECM\hbox{{\ifGIAF\else\@gfnt\fi%
                                    \ifx\@gotl\undefined\char\rq\@LP%
 %                                    \else\@gotl\fi\kern+0.20em}}%   - >> V6,1 BG
-                                    \else\@gotl\fi\kern+0.20em}}%
+                        \else\@gotl\fi%
+					\ifeFr@Guifine%
+					\let\eFresp@gui=\eFrFinSp@ce%
+					\else\let\eFresp@gui=\nbsp@ce\fi% 
+						\ifsp@inog\eFresp@gui\fi}}%    V6,11    RJ
                       \else\hbox{{\ly\@LP\kern-0.20em\@LP\kern+0.20em}}\fi%
            \nobreak}}{}\egroup}%
 %\def>{\ifnum\catcode`> =\active% look at \normalbrackets................. ">>"
@@ -3525,17 +3610,21 @@
  \else\let\@grORI\grammar\def\grammar{\nofrenchguillemets\@grORI}%
 \fi%
 
+\newif\ifsp@infg
 \def\@@FG{\ifCG\f@issue%
                \@fw{-14- %\@txt@msg{fermeture de guillemets non ouverts}%
                    }\fi%
-          \ifUSP\unskip\kern+0.13em\else%
-                 \ifdim\lastskip>\z@\unskip% -skip previous space
-                             \penalty\@M% -don't break here
-                             \space% -better than \kern
-                             \penalty\@M%
+% don't redefine punctuation behavior
+			\Ponctu@ctivedtrue		
+			\ifeFr@Guifine%
+            \USP@GuiFinSpatrue%
                  \fi%
-                 \kern-0.19em%
+	   \ifUSP\USP@GuiFinSpatrue\fi%            FG full space not used
+	   \ifUSP@GuiFinSpa\unskip\eFrFinSp@ce%
+       \else
+         \ifdim\lastskip>\z@\unskip\nbsp@ce\fi%
           \fi%
+	  \sp@infgfalse
       \xdef\@tempd{\@currenvir}\def\@tempe{guillemets}%
      \ifx\@tempd\@tempe%
                \@CGroup\@fguills% -end group if any and put closing guillemets
@@ -3568,7 +3657,16 @@
                        \else\@staring\@stared\egroup\fi\fi%
            \global\let\ifCG\iftrue\let\@CGroup\relax}%
 \def\@fguills{\@ifundefined{ly}{\@cg}% -ECM
-       {\nobreak\leavevmode\ifECM\hbox{{\ifGIAF\else\@gfnt\fi\kern+0.20em%
+       {\nobreak\leavevmode\ifECM\hbox{{\ifGIAF\else\@gfnt\fi%
+%\kern+0.20em% bg
+% don't redefine punctuation behavior
+        \Ponctu@ctivedtrue
+		\ifsp@infg
+			\ifeFr@Guifine\let\eFresp@gui=\eFrFinSp@ce%
+			\else\let\eFresp@gui=\nbsp@ce\fi%
+			\ifUSP\unskip\space\fi
+			\ifdim\lastskip>\z@\unskip\eFresp@gui\fi
+		\fi	
                                         \ifx\@gotr\undefined\char\rq\@RP%
                                         \else\@gotr\fi}}%
                         \else\hbox{{\ly\kern+0.20em\@RP\kern-0.20em\@RP}}\fi}%
@@ -4170,7 +4268,7 @@
                        \ifFMA\@oguills% -<< char...\leftguillemets
                              \else<<\fi}%
    \def\rightguillemets{\@noBDfr%
-                        \ifFMA\@fguills% ->> char..\rightguillemets
+                        \ifFMA\sp@infgtrue\@fguills% ->> char..\rightguillemets
                              \else>>\fi}%
    \def\fup{\@noBDfr\ifFTY% -.............................................. \fup
                      \expandafter\@fup\fi}\MakeRobustCommand{fup}%

Modified: trunk/inputs/french/french-msg.tex
===================================================================
--- trunk/inputs/french/french-msg.tex	2019-05-31 12:54:44 UTC (rev 81)
+++ trunk/inputs/french/french-msg.tex	2019-09-02 07:21:01 UTC (rev 82)
@@ -196,6 +196,9 @@
 \msg*{93}{You are using two French options for Babel, %
           \MessageBreak %
           please choose only one.}{}
+\msg{94}{A modification of ponctuation rules (#1) \MessageBreak%
+         is no more allowed after having used an active punctuation\MessageBreak %
+         (\string! \string? \string; \string: \string<\string< or \string>\string>).}{}
 \msgheader{-**-\space}
 \msg*{**a}{\frenchpack\space serial number is *\@FrVal*.}{}
 \msg*{**b}{\@FrVal\space of \frenchpack.}{}

Modified: trunk/inputs/french/french.sty
===================================================================
--- trunk/inputs/french/french.sty	2019-05-31 12:54:44 UTC (rev 81)
+++ trunk/inputs/french/french.sty	2019-09-02 07:21:01 UTC (rev 82)
@@ -10,11 +10,11 @@
  \ifx\@unexpandable@protect\undefined\let\protect\empty%
  \else\let\protect\@unexpandable@protect%
  \fi%
-                           \xdef\FSfd{8 mars 2019}%          eFrench
-                           \xdef\FSfv{V6,1}% 
+                           \xdef\FSfd{6 septembre 2019}%          eFrench
+                           \xdef\FSfv{V6,11}% 
                            \xdef\frenchstyleid{\FSfv\space-- \FSfd\space --}%
 }}%
-                           \edef\FSfd{2019/03/08}%
+                           \edef\FSfd{2019/09/06}%
 \NeedsTeXFormat{LaTeX2e}[1996/12/01]%
 % > utf8 and NoEncode specialities
 \newif\ifeF@NoEnc    %No encoding (XeTex, LuaLaTex)
@@ -29,6 +29,7 @@
 \else
   \eF@LuaTeXtrue \eF@NoEnctrue
 \fi
+% in order to follow by interchartoks 
 \newif\ifeFr@Typo\eFr@Typotrue
 % In order having no encoding by messages declare this :
   \let\kbencoding\@gobble
@@ -115,6 +116,37 @@
                                }%
    \fi%
 \fi%
+%
+\newif\ifeFr@DPtfine
+\newif\ifeFr@Guifine
+\newif\ifUSP@GuiFinSpa % for OG 
+\newif\ifPonctu@ctived %
+\def\nbsp@ce{\penalty\@M\space}
+\def\fispce@rigide{\,}%
+\def\eFrFinSp@ce{\penalty\@M%
+       \hskip 0.5\fontdimen2\font}%
+\def\MonEspaceFine#1#2#3{\def\eFrFinSp@ce{\penalty\@M%
+       \hskip #1\fontdimen2\font%
+        plus #2\fontdimen3\font%
+        minus #3\fontdimen4\font}
+}%
+\def\eFr@OGsp@cSpl{\ifeFr@Guifine\eFrFinSp@ce
+                   \else\nbsp@ce\fi\ignorespaces}
+% for the user: fine, France or Frenchpro
+\def\NobrkSpacesFine{\ifPonctu@ctived
+       \f@issue\@fw{-94-}[NobrkSpacesFine]
+    \else\eFr@DPtfinetrue\eFr@Guifinetrue % espaces fines
+	\fi}
+\def\NobrkSpacesFpro{\ifPonctu@ctived
+       \f@issue\@fw{-94-}[NobrkSpacesFpro]
+    \else\eFr@DPtfinetrue\eFr@Guifinefalse% comme Frenchpro
+	\fi}
+\def\NobrkSpacesINFr{\ifPonctu@ctived
+       \f@issue\@fw{-94-}[NobrkSpacesINFr]
+    \else\eFr@DPtfinefalse\eFr@Guifinefalse %
+%       			           [Imprimerie Nationale de France
+     \fi} 
+%that was for adaptations high-punct and guillem
 \fontencoding{\encodingdefault}\selectfont%
       \def\@temp@{OT1}\ifx\@temp@\f@encoding%
                            \def\@temp@{\global\ECMfalse}%
@@ -1392,6 +1424,7 @@
    \batchmode\@@end%
  \fi%
                \let\@Ffnt\ErrFrench\let\ErrFrench\undefined%
+               \NobrkSpacesFpro%
                \IfFileExists{\frenchname.cfg}{%
                                   \f@issue%
                                   \@fw{-48- %
@@ -2328,8 +2361,9 @@
 \def\@WTS{\relax\ifmmode\else\ifhmode%
                                    \ifdim\lastskip>\z@\unskip\fi%
                         \fi\fi}%
+%
 % > for XeLaTex 						******
-% de gloss-french
+% inspired from gloss-french
 \def\intercharpunct{%
 %    \lccode\lccode8217=8217
       \XeTeXinterchartokenstate=1
@@ -2336,11 +2370,11 @@
       \XeTeXcharclass `\! \french@punctthin
       \XeTeXcharclass `\? \french@punctthin
       \XeTeXcharclass `\; \french@punctthin
-      \XeTeXcharclass `\: \french@punctthick
-      \XeTeXinterchartoks \z@ \french@punctthin = {\nobreak\thinspace}%
-      \XeTeXinterchartoks \z@ \french@punctthick = {\nobreakspace}%
+      \XeTeXcharclass `\: \french@semicolon  
+      \XeTeXinterchartoks \z@ \french@punctthin = {\ifUSP\nobreak\thinspace\fi}%
+      \XeTeXinterchartoks \z@ \french@semicolon = {\ifUSP\ifeFr@DPtfine\nobreak\thinspace\else\nobreakspace\fi\fi}%
       \XeTeXinterchartoks 4095 \french@punctthin = {\efr@unskip\nobreak\thinspace}%
-      \XeTeXinterchartoks 4095 \french@punctthick = {\efr@unskip\nobreakspace}%
+      \XeTeXinterchartoks 4095 \french@semicolon = {\efr@unskip\ifeFr@DPtfine\nobreak\thinspace\else\nobreakspace\fi}%
     }
 \def\nointercharpunct{%
 %    \lccode8217=\z@
@@ -2363,7 +2397,7 @@
 \fi
 \ifeF@xetex@punct
   \newXeTeXintercharclass\french@punctthin % ! ? ; et autres
-  \newXeTeXintercharclass\french@punctthick % :
+  \newXeTeXintercharclass\french@semicolon % :
 %
   \def\efr@unskip{\ifhmode\ifdim\lastskip>\z@\unskip\fi\fi}
   \def\xpg@nospace#1{#1}
@@ -2384,9 +2418,10 @@
 \def\@tempd{\@tempa{\string;}}%
 \ifx;\undefined\def\@tempd{}\fi\@tempd\@tempc%
 \def\@PV{\relax\ifmmode\string;\else%
-                              \ifhmode\ifUSP\unskip\space\fi%
-                              \ifdim\lastskip>\z@\unskip\penalty\@M\,\fi%
-                         \fi\string;\fi}%
+			\Ponctu@ctivedtrue
+            \ifhmode\ifUSP\unskip\space\fi%
+             \ifdim\lastskip>\z@\unskip\eFrFinSp@ce\fi%
+            \fi\string;\fi}%
 \def\@tempc{%
 \def:{\ifFTY\protect\@DP%
        \else\ifWTS\@WTS\fi\string:\fi}%
@@ -2395,10 +2430,13 @@
 \ifx:\undefined\def\@tempd{}\fi\@tempd\@tempc%
 \@ifundefined{@beginparpenalty}{\def\@beginparpenalty=#1{\penalty#1}}{}%
 \def\@DP{\relax\ifmmode\string:\else%
-                              \ifhmode\ifUSP\unskip\space\fi%
-                                    \ifdim\lastskip>\z@\unskip\penalty\@M\,\fi%
-                              \fi%
-                         \string:%
+\Ponctu@ctivedtrue
+\ifeFr@DPtfine\let\eFresp@dpt=\eFrFinSp@ce
+  \else\let\eFresp@dpt=\nbsp@ce\fi
+                          \ifhmode\ifUSP\unskip\space\fi%
+                                \ifdim\lastskip>\z@\unskip\eFresp@dpt\fi%
+                          \fi%
+                     \string:%
          \@beginparpenalty=\@M\relax%
          \fi}%
 \def\@wu#1{\@@wu#1,\void}%
@@ -2418,10 +2456,11 @@
 \def\@tempd{\@tempa{\string!}}%
 \ifx!\undefined\def\@tempd{}\fi\@tempd\@tempc%
 \def\@PE{\ifmmode\string!\else%
-                              \ifhmode\ifUSP\unskip\space\fi%
-                                 \ifdim\lastskip>\z@\unskip\penalty\@M\,\fi%
-                              \fi%
-                              \string!\fi}%
+		\Ponctu@ctivedtrue
+		\ifhmode\ifUSP\unskip\space\fi%
+			\ifdim\lastskip>\z@\unskip\eFrFinSp@ce\fi%
+		\fi%
+		\string!\fi}%
 \def\@tempc{%
 \def?{\ifFTY\protect\@PI%
        \else\ifWTS\@WTS\fi\string?\fi}%
@@ -2429,12 +2468,12 @@
 \def\@tempd{\@tempa{\string?}}%
 \ifx?\undefined\def\@tempd{}\fi\@tempd\@tempc%
 \def\@PI{\relax\ifmmode\string?\else%
-                            \ifhmode\ifUSP\unskip\space\fi%
-                               \ifdim\lastskip>\z@\unskip\penalty\@M%
-                               \hskip +0.09em plus 0.07667em%
-                               \fi%
-                            \fi%
-                            \string?\fi}%
+		\Ponctu@ctivedtrue
+		\ifhmode\ifUSP\unskip\space\fi%
+		\ifdim\lastskip>\z@\unskip\eFrFinSp@ce%
+		\fi%
+	\fi%
+	\string?\fi}%
 \ifx\@tempb\next\let\AFPdp\empty\f@issue%
                 \@fw{-13b- %
                 \@txt@msg{la double ponctuation est alors d\'esactiv\'ee}}\fi%
@@ -2518,6 +2557,7 @@
        \advance\@FrDimen by -\leftmargin\advance\@FrDimen by -\rightmargin%
        \advance\@FrDimen by -\listparindent\hsize=\@FrDimen}%
        \@qquotes\fi\fi\fi%
+	 \sp@inogfalse%
      \@oguills%
        \ifFLA\ifEPG\bgroup\def\@currenvir{guillemets}%
                    \let\@CGroup\egroup\fi\fi%
@@ -2524,29 +2564,48 @@
        \ifCG\ifFLA\ifEPG%
                  \xdef\@epORI{{\the\TeXeverypar}}%
                  \TeXeverypar={\@epORI%
-                            \ifEPGR\else%
-                            \@oguills%
+                            \ifEPGR\else\@AG%  -guide du typographe
+							\sp@inogtrue%
+                            \@oguills% begin of paragraph
                             \@ifundefined{@OuvOpen}{%
-                            \,%
+                            %\,% space in @oguil
                                                    }{}%
                             \fi}%
             \fi\fi%
-       \else\@SifDOGon\@AG%
+       \else\@SifDOGon\@AG% in a citation
        \ifFLA\ifEPG\else\def\@qqguill{\@oguills}\@staring\fi\fi\fi%
        \global\let\ifCG\iffalse%
-       \ifUSP\kern+0.13em\penalty\@M\ignorespaces%
-             \else\kern-0.19em\relax\penalty\@M\fi}%
+	   \ifeFr@Guifine\USP@GuiFinSpatrue%  OG full space not used
+		  \let\eFresp@gui=\eFrFinSp@ce%  OG fine unbreakable space
+	   \else\USP@GuiFinSpafalse%           OG full space possible 
+	      \let\eFresp@gui=\nbsp@ce%     OG full unbreakable space
+	   \fi%
+	   \Ponctu@ctivedtrue
+	   \ifUSP\USP@GuiFinSpatrue\fi%            OG full space not used
+	   \ifUSP@GuiFinSpa\eFr@OGsp@cSpl%
+       \else\relax\penalty\@M\fi}%  
+%       \relax\ifeFr@Guifine\/\fi\penalty\@M}%  space is following
 \def\@AG{\ifAG\let\@LP\@RP\let\@gotl\@gotr%
          \fi}%
 \def\f@guillemets{<<}%
-\def\@oguills{%
+\newif\ifsp@inog
+\def\@oguills{% 
+	\ifeFr@Guifine%
+		\let\eFresp@gui=\eFrFinSp@ce%
+	\else\let\eFresp@gui=\nbsp@ce%     no space to be made unbreakable
+	\fi%
+	\Ponctu@ctivedtrue
      \bgroup\@ifundefined{@OuvOpen}{\def\@OuvOpen{}%
      \@ifundefined{ly}{\@og}%
           {\leavevmode\ifECM\hbox{{\ifGIAF\else\@gfnt\fi%
-                                   \ifx\@gotl\undefined\char\rq\@LP%
-                                    \else\@gotl\fi\kern+0.20em}}%
-                      \else\hbox{{\ly\@LP\kern-0.20em\@LP\kern+0.20em}}\fi%
-           \nobreak}}{}\egroup}%
+                    \ifx\@gotl\undefined\char\rq\@LP%
+                        \else\@gotl\fi%
+					\ifeFr@Guifine%
+					\let\eFresp@gui=\eFrFinSp@ce%
+					\else\let\eFresp@gui=\nbsp@ce\fi% 
+						\ifsp@inog\eFresp@gui\fi}}%    V6,11    RJ
+			\else\hbox{{\ly\@LP\kern-0.20em\@LP\kern+0.20em}}\fi%
+         \nobreak}}{}\egroup}%
 \def\@@RFG{\ifFTY\ifmmode\protect\@RSG\else%
                          \ifIEB\@SFC\else\@RSG\fi%
                  \fi%
@@ -2572,17 +2631,20 @@
  \else\let\@grORI\grammar\def\grammar{\nofrenchguillemets\@grORI}%
 \fi%
 
+\newif\ifsp@infg
 \def\@@FG{\ifCG\f@issue%
                \@fw{-14- %
                    }\fi%
-          \ifUSP\unskip\kern+0.13em\else%
-                 \ifdim\lastskip>\z@\unskip%
-                             \penalty\@M%
-                             \space%
-                             \penalty\@M%
-                 \fi%
-          \fi%
-      \kern-0.19em%
+			\Ponctu@ctivedtrue		
+			\ifeFr@Guifine%
+            \USP@GuiFinSpatrue%
+            \fi%
+	   \ifUSP\USP@GuiFinSpatrue\fi%            FG full space not used
+	   \ifUSP@GuiFinSpa\unskip\eFrFinSp@ce%
+       \else
+         \ifdim\lastskip>\z@\unskip\nbsp@ce\fi%
+	   \fi	
+	  \sp@infgfalse
       \xdef\@tempd{\@currenvir}\def\@tempe{guillemets}%
      \ifx\@tempd\@tempe%
                \@CGroup\@fguills%
@@ -2612,10 +2674,17 @@
                        \else\@staring\@stared\egroup\fi\fi%
            \global\let\ifCG\iftrue\let\@CGroup\relax}%
 \def\@fguills{\@ifundefined{ly}{\@cg}%
-       {\nobreak\leavevmode\ifECM\hbox{{\ifGIAF\else\@gfnt\fi\kern+0.20em%
-                                        \ifx\@gotr\undefined\char\rq\@RP%
-                                        \else\@gotr\fi}}%
-                        \else\hbox{{\ly\kern+0.20em\@RP\kern-0.20em\@RP}}\fi}%
+       {\nobreak\leavevmode\ifECM\hbox{{\ifGIAF\else\@gfnt\fi%
+        \Ponctu@ctivedtrue
+		\ifsp@infg
+			\ifeFr@Guifine\let\eFresp@gui=\eFrFinSp@ce%
+			\else\let\eFresp@gui=\nbsp@ce\fi%
+			\ifUSP\unskip\space\fi
+			\ifdim\lastskip>\z@\unskip\eFresp@gui\fi
+		\fi	
+        \ifx\@gotr\undefined\char\rq\@RP%
+        \else\@gotr\fi}}%
+    \else\hbox{{\ly\kern+0.20em\@RP\kern-0.20em\@RP}}\fi}%
 \ifGIAF\else\ifdim\fontdimen\@ne\font>\z@\/\fi\fi%
              }%
 \def\@normalrq{\relax\ifmmode^\prime\else\@frq\fi}%
@@ -3142,8 +3211,8 @@
                        \ifFMA\@oguills%
                              \else<<\fi}%
    \def\rightguillemets{\@noBDfr%
-                        \ifFMA\@fguills%
-                             \else>>\fi}%
+                        \ifFMA\sp@infgtrue\@fguills%
+                        \else>>\fi}%
    \def\fup{\@noBDfr\ifFTY%
                      \expandafter\@fup\fi}\MakeRobustCommand{fup}%
    \def\@fup{\@ifstar{\csname\string\!\endcsname\@@fup}{\@@fup}}%

Modified: trunk/inputs/french/french_french-msg.tex
===================================================================
--- trunk/inputs/french/french_french-msg.tex	2019-05-31 12:54:44 UTC (rev 81)
+++ trunk/inputs/french/french_french-msg.tex	2019-09-02 07:21:01 UTC (rev 82)
@@ -203,6 +203,9 @@
 \msg*{93}{Vous utilisez deux options de francisation avec Babel, %
           \MessageBreak %
           merci d'en choisir une seule.}{}
+\msg{94}{Le changement de ponctuation (#1) \MessageBreak%
+        n'est plus permis apr\`es une utilisation de ponctuation active\MessageBreak %
+        (\string! \string? \string; \string: \string<\string< \string>\string>).}{}
 \msgheader{-**-\space}
 \msg*{**a}{Le num\'ero de s\'erie de \frenchpack\space est *\@FrVal*.}{}
 \msg*{**b}{\@FrVal\space of \frenchpack.}{}


Mail converted by MHonArc 2.6.19+ http://listengine.tuxfamily.org/