 %%% fe-punct.tex MINI-SUPPORT FOR FRENCH (& ENGLISH) PUNCTUATION
 %%  part of fe-format-dumper-cm and -ck directories
 %%  L. Siebenmann, 5-92
 %%  Documentation in fe-dump.doc
 
 \newskip \FrColonSep

 \chardef\fePunctAt=\the\catcode`\@
 \catcode`\@=11
 \def\dofrenchpunct@{\do:\do;\do!\do?}

 \def\frpunctactive@{\def\do##1{\catcode`##1=13}\dofrenchpunct@}
 \def\frpunctother@{\def\do##1{\catcode`##1=12}\dofrenchpunct@}

  \frpunctactive@
 
 \def\minFrancais{\FR%
  \frpunctactive@
   \def;{\ifmmode\else\leavevmode\unskip\kern.3ex\fi\string;}
   \def!{\ifmmode\else\leavevmode\unskip\kern.3ex\fi\string!}
   \def?{\ifmmode\else\leavevmode\unskip\kern.3ex\fi\string?}
   \def:{\ifmmode\else\leavevmode\unskip\FrColonSep=.7\fontdimen2\font
       plus.7\fontdimen3\font 
       minus.7\fontdimen4\font 
      \nobreak\hskip\FrColonSep\nobreak\fi\string:}
  %%% User may tune the above to his taste.
  %%\fontdimen2 is interwordspace
  %%\fontdimen3 is interwordstretch
  %%\fontdimen4 is interwordshrink
   \frenchspacing}
 
 %%% \minAnglais keeps active punct (change sometimes dangerous)
 %%%  serves to suppress parasitic spaces before punct
 %%%  Bug: the \unskip suppresses kerning between previous 
 %%%  letter and the punctuation; so for fine typesetting
 %%%  better use \ManualPunctuation, or suppress
 %%%  \ifhmode\unskip\fi from the definition.
 %%%  Unfortunately, most French typists badly need the \unskip.
 %%%  The best tactic in a long article is to use \minAnglais (=\Anglais later)
 %%%  until typing is complete.  Then use \English instead,
 %%%  which uses manual punctuation, and clean out all spaces 
 %%%  before punctuation using a wordprocessor.
 %%%  

 \def\minAnglais{%
  \US\frpunctactive@
  \def;{\ifmmode\else\leavevmode\unskip\fi\string;}
  \def:{\ifmmode\else\leavevmode\unskip\fi\string:}
  \def!{\ifmmode\else\leavevmode\unskip\fi\string!}
  \def?{\ifmmode\else\leavevmode\unskip\fi\string?}
  \nonfrenchspacing}

  \let\Francais\minFrancais
  \let\French\minFrancais
  \let\Anglais\minAnglais
  \def\English{\Anglais\ManualPunctuation}
  \let\PonctuationManuelle\frpunctother@
  \let\ManualPunctuation\frpunctother@

  %%% To prevent \message from expanding punctuation ;:?!
  %%  See HyAcc-CM.doc for discussion.

 \frpunctactive@ %% temporarily make ;:?! active
 
 \ifx\undefined\@oldmessage@
   \let\@oldmessage@=\message
 \fi
 \def\message#1{\begingroup
    \def\'{'}\def\`{`}\def\"{"}\edef\^{\string^}%
    \def\i{i}\def\oe{oe}\def\ae{ae}\def\c{}%
    \def\.{}\def\u{}\def\v{}%
    \def\H{}\def\={}\def\relax{}%
    \edef~{\string~}%
    \edef:{\string:}%
    \edef;{\string;}%
    \edef?{\string?}%
    \edef!{\string!}%
    \@oldmessage@{#1}\endgroup}

 \catcode`\@=\fePunctAt  
 
 \Francais %%default

 \endinput
