63.10 frenchb.ldf

<..frenchb.4ht..>
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 % frenchb.4ht                           2014-07-12-22:36 %
 % Copyright (C) 2001--2009       Eitan M. Gurari         %
 <.TeX4ht copyright.>
 <.declare frenchb shorthand.>
 <.frenchb nbsp.>
 \Hinput{frenchb}
 \endinput
 -_-_-

<..declare frenchb shorthand..>
 \def\frenchb:shorthand#1#2#3#4{%
   \ifhmode
      \ifdim \lastskip >\z@ \unskip \penalty \@M
         \csname a:#1-#2\endcsname#3\csname b:#1-#2\endcsname
      \else
         \csname a:#1-#2\endcsname#4\csname b:#1-#2\endcsname
   \fi \fi }
 -_-_-

<..frenchb nbsp..>
 \def\:temp{\leavevmode \nobreak \csname a:system-nbsp\endcsname\ \csname
                   b:system-nbsp\endcsname}
 \expandafter\HLet\csname \system@group @sh@\string ~@\endcsname=\:temp
 \expandafter \ifx \csname FDP@space\endcsname\relax
   <.since 2001/09/09 v1.5g frenchb.>
 \else
   <.pre 2001/09/09 v1.5g frenchb.>
 \fi
 \AtBeginDocument{%
  \def\:temp{\frenchb:shorthand{frenchb}{thinspace}
                               {\thinspace }{\FDP@thinspace}\string ;}%
  \expandafter\HLet\csname\language@group @sh@\string ;@\endcsname=\:temp
  \def\:temp{\frenchb:shorthand{frenchb}{thinspace}
                               {\thinspace }{\FDP@thinspace}\string !}%
  \expandafter\HLet\csname\language@group @sh@\string !@\endcsname=\:temp
  \def\:temp{\frenchb:shorthand{frenchb}{thinspace}
                               {\thinspace }{\FDP@thinspace}\string ?}%
  \expandafter\HLet\csname\language@group @sh@\string ?@\endcsname=\:temp
 }
 \NewConfigure{frenchb-nbsp}{2}
 \NewConfigure{frenchb-thinspace}{2}
 \NewConfigure{system-nbsp}{2}
 -_-_-

<..pre 2001/09/09 v1.5g frenchb..>
 \AtBeginDocument{%
  \def\:temp{\frenchb:shorthand{frenchb}{nbsp}{\ }{\FDP@space}\string :}%
  \expandafter\HLet\csname\language@group @sh@\string :@\endcsname=\:temp
 }
 -_-_-

<..since 2001/09/09 v1.5g frenchb..>
 \AtBeginDocument{%
  \def\:temp{\frenchb:shorthand{frenchb}{nbsp}{\ }{\FDP@colonspace}\string :}%
  \expandafter\HLet\csname\language@group @sh@\string :@\endcsname=\:temp
 }
 -_-_-

\declare@shorthand{frenchb}{:}{% 
    \ifhmode 
      \ifdim\lastskip>\z@ 
        \unskip\penalty\@M\ 
      \else 
        \FDP@space 
      \fi 
    \fi 
    \string:} 
\declare@shorthand{french}{:}{% 
    \ifhmode 
      \ifdim\lastskip>\z@ 
        \unskip\penalty\@M\Fcolonspace 
      \else 
        \FDP@colonspace 
      \fi 
    \fi 
    \string:} 

The following is for code such as

 \documentclass{article} 
  \usepackage[francais]{babel} 
 \begin{document} 
 
 \tableofcontents 
 
 \section{Ma premi{\‘e}re section !} 
 
 \section{Culture : d{\’e}sillusions} 
 
 \section{Culture :d{\’e}sillusions} 
 \end{document} 

<..frenchb nbsp..>+
 \catcode‘\:=13
 \expandafter\let\csname protect\string:\endcsname=:
 \expandafter\def\csname active\string
     :prefix\endcsname#1{\protect#1\ifx#1:{}\fi}
 \catcode‘\:=11
 -_-_-

With the package \usepackage[francais]{babel} , every ‘;’ ‘:’ ... must be preceded by an unbreakable space. This works okay for the input ‘a:’ and ‘a :’, but for ‘a~:’ TeX4ht introduces _2_ unbreakable spaces instead of one.