% \iffalse meta-comment % % Copyright 1989-1996 Johannes L. Braams and any individual authors % listed elsewhere in this file. All rights reserved. % % For further copyright information see any other copyright notices in % this file. % % This file is part of the Babel system release 3.6. % -------------------------------------------------- % This system is distributed in the hope that it will be useful, % but WITHOUT ANY WARRANTY; without even the implied warranty of % MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. % % For error reports concerning UNCHANGED versions of this file no % more than one year old, see bugs.txt. % % Please do not request updates from me directly. Primary % distribution is through the CTAN archives. % % % IMPORTANT COPYRIGHT NOTICE: % % You are NOT ALLOWED to distribute this file alone. % % You are allowed to distribute this file under the condition that it % is distributed together with all the files listed in manifest.txt. % % If you receive only some of these files from someone, complain! % % Permission is granted to copy this file to another file with a % clearly different name and to customize the declarations in that % copy to serve the needs of your installation, provided that you % comply with the conditions in the file legal.txt from the LaTeX2e % distribution. % % However, NO PERMISSION is granted to produce or to distribute a % modified version of this file under its original name. % % You are NOT ALLOWED to change this file. % % % \fi % \CheckSum{1039} % % \iffalse % Tell the \LaTeX\ system who we are and write an entry on the % transcript. %<*dtx> \ProvidesFile{frenchb.dtx} % %\ProvidesFile{frenchb.ldf} %\fi %\ProvidesFile{frenchb.dtx} [1997/01/11 v1.2a French support from the babel system] %\iffalse % Babel package for LaTeX version 2e % Copyright (C) 1989 - 1997 % by Johannes Braams, TeXniek % % Frenchb language Definition File % Copyright (C) 1989 - 1997 % by Johannes Braams, TeXniek % Daniel Flipo, GUTenberg % % Please report errors to: Daniel Flipo, GUTenberg % Daniel.Flipo@univ-lille1.fr % % This file is part of the babel system, it provides the source % code for the French language definition file. % For differences with francais.sty (author J. Braams) and with % french.sty (author B. Gaulle), see documentation printed by % |latex frenchb.dtx|. % %<*filedriver> \documentclass{ltxdoc} \newcommand*\TeXhax{\TeX hax} \newcommand*\babel{\textsf{babel}} \newcommand*\langvar{$\langle \mathit lang \rangle$} \newcommand*\note[1]{} \newcommand*\Lopt[1]{\textsf{#1}} \newcommand*\file[1]{\texttt{#1}} \begin{document} \parindent = 0pt \begin{center} \textbf{\Large A Babel language definition file for French}\\[3mm] Daniel \textsc{Flipo}\\ \texttt{Daniel.Flipo@univ-lille1.fr} \end{center} \DocInput{frenchb.dtx} \end{document} % %\fi % \GetFileInfo{frenchb.dtx} % % \changes{frenchb-1.1}{1995/12/23}{Added a hook to insert space or % not before `double punctuation'.} % \changes{frenchb-1.1b}{1996/08/07}{Replaced \cs{undefined} with % \cs{@undefined} and \cs{empty} with \cs{@empty} for consistency % with \LaTeX} % \changes{frenchb-1.1b}{1996/10/10}{Moved the definition of % \cs{atcatcode} right to the beginning.} % % % \section{The French Language} % % \subsection{About French typography} % % The file \file{\filename}\footnote{The file described in this % section has version number \fileversion\ and was last revised on % \filedate.}, derived from \file{frenchy.sty}, defines all % the language definition macros for the French language. % % Customization for the French language is achieved following the % book ``Lexique des r\`egles typographiques en usage \`a % l'Imprimerie nationale'' troisi\`eme \'edition (1994), % ISBN-2-11-081075-0. % % This file has been designed to be used with \LaTeXe, \LaTeX-2.09 % and Plain\TeX{} formats. If you are still using \LaTeX-2.09, you % \emph{should} consider switching to \LaTeXe! % % Any of the commands |\selectlanguage{french}|, % |\selectlanguage{francais}|, or |\selectlanguage{frenchb}| % switches to the French language with the following effects: % \begin{enumerate} % % \item French hyphenation patterns are made active; % \item `double punctuation' is made active for correct spacing % in French; % \item |\today| prints the date in French; % \item the caption names are translated into French % (\LaTeX{} only); % \item the list items are set to `--' instead of $\bullet$ % (\LaTeX{} only); % \item the vertical spacing in lists is shortened % (\LaTeX{} only); % \item the first paragraph of each section is indented % (\LaTeX{} only); % \item French quotation marks can be typeset using the commands % |\og| and |\fg| which work in \LaTeXe, \LaTeX-2.09 and % Plain\TeX{}, their appearance depending on what is % available to draw them; if you use \LaTeXe{} with % |T1|-encoding you can also enter them as % |<<~French quotation marks~>>| but then % \emph{don't forget} the unbreakable spaces, (|\og| and % |\fg| provide for correct line breaks); % \item a command |\up| is provided to typeset superscripts like % |M\up{me}| (abbreviation for ``Madame''), |1\up{er}| (for % ``premier''); % \item family names should be typeset in small capitals and never % be hyphenated, the macro |\bsc| (boxed small caps) does % this, e.g., |Leslie~\bsc{Lamport}| will produce % Leslie~\mbox{\textsc{Lamport}}; % \item commands |\primo|, |\secundo|, |\tertio| and |\quarto| % may be used to enumerate in lists; % \item abbreviations for ``Num\'ero'' and ``num\'ero'' are % obtained via the commands |\No|, |\no|; % \item two commands are provided to typeset abbreviations for % ``degr\'e'': |\degre| prints the raw character and % |\degres| should be used to typeset temperatures (e.g., % ``|20~\degres C|'' with an unbreakable space), or for % alcohols' strengths (e.g., ``|45\degres|'' with \emph{no} % space in French); % \item an command |\nombre| is provided to ease the typesetting of % numbers: it works both in text and in math-mode: % inputting |\nombre{3141,592653}| will format this number % properly according to the current language (French or % non-French)% % \footnote{In math-mode the comma has to be surrounded with % braces to avoid a spurious space being inserted after it % (see the \TeX{}book p.~134). Besides this, each slice of % three digits should be separated either with a comma in % English or with a space in French.}. % The command |\nombre| is a contribution of Vincent Jalby % using ideas of David Carlisle in comma.sty. % \end{enumerate} % % \vspace{5mm} % All commands previously available in |francais.ldf| have been % included in |frenchb.ldf| for compatibility, sometimes with % updated definitions. % % The |french| package, by Bernard~\textsc{Gaulle}, was not % designed to run with \babel\ (although the latest versions claim % to be \babel\ compatible), but rather as a stand-alone package % for the French language. % It provides many more functionalities (like |\lettrine|, % |\sommaire|\dots) not available in |frenchb|, % at the cost of a much greater complexity and possible % incompatibilities with other languages. % % As |french| is known to produce the best layout available for % French typography, I have borrowed many ideas from Bernard's file. % I did my best to help users of both packages (|french| and % |frenchb|) to exchange their sources files easily, with one % exception which affects the way French quotation marks are % entered: |frenchb| uses \emph{macros} (|\og| and |\fg|) while % |french| uses active characters (|<<| and |>>|). % % \vspace{5mm} % French typographic rules specify that some white space should be % present before `double punctuation' characters. These characters % are |;| |!| |?| and |:|. % In order to get this white space automatically, the category code % of these characters is made |\active|. In French, the user % \emph{should} input these four characters preceded with a space, % but as many people forget about it (even among native French % writers!), the default behaviour of |frenchb| is to automatically % add a |\thinspace| before `|;|' `|!|' `|?|' and a normal % (unbreakable) space before~`|:|' (this is the rule in French % typography). It's up to the user to add or not a space % \emph{after} `double punctuation' characters: usually a space is % necessary, but not always (before a full point or a closing brace % for instance), so this cannot done automatically. % % In (rare) cases where no space should be added before a `double % punctuation', either use |\string;| |\string:| |\string!| % |\string?| instead of |;| |:| |!| |?|, or switch locally to % |english|. For instance you can type |C\string:TEX| or % |\begin{otherlanguage}{english}{C:TEX}\end{otherlanguage}| to % avoid the space before~|:| in a MS-DOS path. % % Some users dislike this automatic insertion of a space before % `double punctuation', and prefer to decide themselves whether a % space should be added or not; so a hook |\NoAutoSpaceBeforeFDP| % is provided: if this command is added (in file |frenchb.cfg|, or % anywhere in a document) |frenchb| will respect your typing, and % introduce a suitable space before `double punctuation' \emph{if % and only if} a space is typed in the source file before those % signs. % % The command |\AutoSpaceBeforeFDP| switches back to the % default behavior of |frenchb|. % % \vspace{5mm} % Once you have built your format, a good precaution would be to % perform some basic tests about hyphenation in French. For % \LaTeXe{} I suggest this: % \begin{itemize} % \item run the following file, with the encoding suitable for % your machine (\textit{my-encoding} will be |latin1| for % \textsc{unix} machines and PCs running~Windows, |applemac| % for Macintoshs, or |cp850| for PCs running~DOS. If you are % using Ml\TeX{} together with CMR fonts, comment out the % line \\ % |\usepackage[|\textit{my-encoding}|]{inputenc}|.\\[3mm] % |%%% Test file for French hyphenation.|\\ % |\documentclass{article}|\\ % |\usepackage[|\textit{my-encoding}|]{inputenc}|\\ % |\usepackage[francais]{babel}|\\ % |\begin{document}|\\ % |\showhyphens{signal, container, \'ev\'enement, alg\`ebre}|\\ % |\showhyphens{|\texttt{signal, container,\'ev\'enement, % alg\`ebre}|}|\\ % |\end{document}| % \item check the hyphenations proposed by \TeX{} in your log-file; % in French you should get with both 7-bit and 8-bit encodings\\ % \texttt{si-gnal, contai-ner, \'ev\'e-ne-ment, al-g\`ebre}.\\ % Do not care about how accented characters are displayed in the % log-file, what matters is the position of the `|-|' hyphen % signs \emph{only}. % \end{itemize} % If they are all correct, your installation (probably) works fine, % if one (or more) is (are) wrong, ask a local wizard to see what's % going wrong and perform the test again (or e-mail me about what % happens).\\ % Frequent mismatches: % \begin{itemize} % \item you get |sig-nal, con-tainer|, this probably means that the % hyphenation patterns you are using are for USenglish, not for % French; % \item you get no hyphen at all in \texttt{\'ev\'e-ne-ment}, this % probably means that you are using CMR fonts and the macro % |\accent| to produce accented characters. % Consider switching to DC/EC fonts and T1-encoding or use Ml\TeX. % \end{itemize} % % \vspace{5mm} % |frenchb| has been improved using helpful suggestions from many % people, the main contributions came from Vincent~Jalby. % Thanks to all of them! % % \vspace{5mm} % First version released: 1.1 as of 1996/05/31 part of % \babel-3.6beta. % % Changes in version 1.1b: update for \babel-3.6. % % Changes in version 1.2: new command |\nombre| to format numbers; % removed command |\fup| borrowed from the |french| package (|\up| % does a better job in \LaTeXe); also removed aliases |\french| % and |\english| (frenchb.cfg is a better place for these). % % \StopEventually{} % % \subsection{\TeX{}nical details} % % The macro |\LdfInit| takes care of preventing that this file is % loaded more than once, checking the category code of the % \texttt{@} sign, etc. % \changes{frenchb-1.1b}{1996/11/02}{Now use \cs{LdfInit} to perform % initial checks} % \begin{macrocode} %<*code> %% Please report errors to: Daniel Flipo, GUTenberg %% Daniel.Flipo@univ-lille1.fr %% \LdfInit{frenchb}\NoAutoSpaceBeforeFDP % \end{macrocode} % % \changes{frenchb-1.1b}{1996/11/07}{Removed test for \cs{l@english}} % \changes{frenchb-1.2}{1997/01/05}{Check for hyphenation patterns} % Check if hyphenation patterns for the French language have been % loaded in language.dat: requested name `french' or `francais'. % \begin{macrocode} \ifx\l@french\@undefined \ifx\l@francais\@undefined \@nopatterns{French} \adddialect\l@french0 \fi \fi % \end{macrocode} % % \changes{frenchb-1.2}{1997/01/05}{`french' `frenchb' and % `francais' are synonymous regardless of \cs{CurrentOption}.} % Regardless of |\CurrentOption| the internal name for the % French language will be `frenchb'; `francais' and `french' % will be synonymous for `frenchb': first let both names use the % same hyphenation patterns. Later we will have to set aliases % for |\captionsfrenchb|, |\datefrenchb|, |\extrasfrenchb| and % |\noextrasfrenchb|. As French uses the standard values of % |\lefthyphenmin| (2) and |\righthyphenmin| (3), no special % setting is required here. % % \begin{macrocode} \def\CurrentOption{frenchb} \ifx\l@francais\@undefined \let\l@francais\l@french \else \let\l@french\l@francais \fi \let\l@frenchb\l@french % \end{macrocode} % % \changes{frenchb-1.1}{1996/02/12}{Use \cs{fmtname} to check % the format instead of \cs{newcommand}; define \cs{PlainFmtName} % and \cs{LaTeXeFmtName}.} % To check the format in use (plain or LaTeX), we'll need macros % to hold the names of the plain and \LaTeXe{} formats. % \begin{macrocode} \def\PlainFmtName{plain} \def\LaTeXeFmtName{LaTeX2e} % \end{macrocode} % % \begin{macro}{\if@Two@E} % \changes{frenchb~1.1}{1996/03/01}{New test \cs{if@Two@E}.} % We will need a new `if' : |\if@Two@E| is true if and only if % \LaTeXe{} is running \emph{not} in compatibility mode. It is % used in the definitions of the command |\nombre| and |\up|. % The definition is somewhat complicated, due to the fact that % |\if@compatibility| is not recognized as a |\if| in % \LaTeX-2.09 based formats. % \begin{macrocode} \newif\if@Two@E \@Two@Etrue \def\@FI@{\fi} \ifx\@compatibilitytrue\@undefined \@Two@Efalse \def\@FI@{\relax} \else \if@compatibility \@Two@Efalse \fi \@FI@ % \end{macrocode} % \end{macro} % % \begin{macro}{\extrasfrenchb} % \begin{macro}{\noextrasfrenchb} % The macro |\extrasfrenchb| will perform all the extra % definitions needed for the French language. % The macro |\noextrasfrenchb| is used to cancel the actions of % |\extrasfrenchb|.\\ % In French ``apostrophe'' is used in hyphenation in expressions % like |l'ambulance| (French patterns provide entries for this kind % of words). This means that the |\lccode| of ``apostrophe'' has % to be non null in French for proper hyphenation of those % expressions, and to be reset to null when exiting French. % \changes{frenchb-1.2}{1997/01/05}{`french' `frenchb' and % `francais' are synonymous regardless of \cs{CurrentOption}.} % \begin{macrocode} \@namedef{extras\CurrentOption}{\lccode`\'=`\'} \@namedef{noextras\CurrentOption}{\lccode`\'=0} \def\extrasfrancais{\extrasfrenchb} \def\extrasfrench{\extrasfrenchb} \def\noextrasfrancais{\noextrasfrenchb} \def\noextrasfrench{\noextrasfrenchb} % \end{macrocode} % \end{macro} % \end{macro} % % \changes{frenchb-1.1}{1996/01/29}{Add some font changing % definitions.} % It is best to use \LaTeXe{}'s font changing commands, and to % emulated those we need when they are not available, as in % Plain\TeX{} or \LaTeX-2.09. Be aware that old commands |\sc|, % |\it|, \textit{etc.} exist in \LaTeXe{}, but they behave like % they did in \LaTeX-2.09 (i.\,e., they switch back to % |\normalfont| instead of keeping the other font attributes % unchanged). % \begin{macrocode} \ifx\scshape\@undefined \ifx\sc\@undefined \let\scshape\relax \else \let\scshape\sc \fi \fi \ifx\emph\@undefined \ifx\em\@undefined \let\emph\relax \else \def\emph#1{\em #1} \fi \fi % \end{macrocode} % % \subsection{Captionnames and date} % % The next step consists of defining the French equivalents for % the \LaTeX{} captionnames. % % \begin{macro}{\captionsfrenchb} % The macro |\captionsfrenchb| defines all strings used in the four % standard document classes provided with \LaTeX. Some authors do % not like some of these names; it is easy to change them in the % preamble \emph{after} loading |frenchb| (or in your file % |frenchb.cfg|), e.g % |\addto\captionsfrenchb{\def\figurename{Figure}}| will print % `Figure' in roman instead of `\textsc{Fig.}'. % \changes{frenchb-1.1}{1996/01/30}{This code is useless in Plain\TeX, % check the format before loading it.} % \changes{frenchb-1.2}{1997/01/05}{added aliases \cs{captionsfrench} % and \cs{captionsfrancais}.} % \begin{macrocode} \ifx\fmtname\PlainFmtName \else \@namedef{captions\CurrentOption}{% \def\refname{R\'ef\'erences}% \def\abstractname{R\'esum\'e}% \def\bibname{Bibliographie}% \def\prefacename{Pr\'eface}% \def\chaptername{Chapitre}% \def\appendixname{Annexe}% \def\contentsname{Table des mati\`eres}% \def\listfigurename{Table des figures}% \def\listtablename{Liste des tableaux}% \def\indexname{Index}% \def\figurename{{\scshape Fig.}}% \def\tablename{{\scshape Tab.}}% % \end{macrocode} % ``Premi\`ere partie'' instead of ``Part I'' % \begin{macrocode} \def\partname{\protect\@Fpt partie}% \def\@Fpt{{\ifcase\value{part}\or Premi\`ere\or Deuxi\`eme\or Troisi\`eme\or Quatri\`eme\or Cinqui\`eme\or Sixi\`eme\or Septi\`eme\or Huiti\`eme\or Neuvi\`eme\or Dixi\`eme\or Onzi\`eme\or Douzi\`eme\or Treizi\`eme\or Quatorzi\`eme\or Quinzi\`eme\or Seizi\`eme\or Dix-septi\`eme\or Dix-huiti\`eme\or Dix-neuvi\`eme\or Vingti\`eme\fi}\space\def\thepart{}}% \def\pagename{page}% \def\seename{{\emph{voir}}}% \def\alsoname{{\emph{voir aussi}}}% \def\enclname{P.~J. }% \def\ccname{Copie \`a }% \def\headtoname{}% \def\proofname{D\'emonstration}% for AMS-\LaTeX } \def\captionsfrench{\captionsfrenchb} \def\captionsfrancais{\captionsfrenchb} \fi % \end{macrocode} % \end{macro} % % \begin{macro}{\datefrenchb} % The macro |\datefrenchb| redefines the command |\today| to % produce French dates. % \changes{frenchb-1.2}{1997/01/05}{added aliases \cs{datefrench} % and \cs{datefrancais}. Use \cs{ier} instead of \cs{up}.} % \begin{macrocode} \@namedef{date\CurrentOption}{% \def\today{\number\day \ifnum1=\day \ier\fi \space \ifcase\month \or janvier\or f\'evrier\or mars\or avril\or mai\or juin\or juillet\or ao\^ut\or septembre\or octobre\or novembre\or d\'ecembre\fi \space \number\year}} \def\datefrench{\datefrenchb} \def\datefrancais{\datefrenchb} % \end{macrocode} % \end{macro} % % \subsection{Punctuation} % % The `double punctuation' characters (|;| |!| |?| and |:|) have to % be made |\active| for an automatic control of the amount of space % to insert before them. % \begin{macrocode} \initiate@active@char{:} \initiate@active@char{;} \initiate@active@char{!} \initiate@active@char{?} % \end{macrocode} % We specify that the French group of shorthands should be used. % \begin{macrocode} \expandafter\addto\csname extras\CurrentOption\endcsname{% \languageshorthands{frenchb}} % \end{macrocode} % These characters are `turned on' once, later their definition may % vary. % \begin{macrocode} \expandafter\addto\csname extras\CurrentOption\endcsname{% \bbl@activate{:}\bbl@activate{;}% \bbl@activate{!}\bbl@activate{?}} \expandafter\addto\csname noextras\CurrentOption\endcsname{% \bbl@deactivate{:}\bbl@deactivate{;}% \bbl@deactivate{!}\bbl@deactivate{?}} % \end{macrocode} % % One more thing |\extrasfrenchb| needs to do is to make sure that % |\frenchspacing| is in effect. If this is not the case the % execution of |\noextrasfrenchb| will switch it off again. % \begin{macrocode} \expandafter\addto\csname extras\CurrentOption\endcsname{% \bbl@frenchspacing} \expandafter\addto\csname noextras\CurrentOption\endcsname{% \bbl@nonfrenchspacing} % \end{macrocode} % % \begin{macro}{\frenchb@sh@;@} % We have to tune the amount of white space before \texttt{;} % \texttt{!} \texttt{?} and \texttt{:}. This should only happen % in horizontal mode, hence the test |\ifhmode|. % \changes{frenchb-1.1}{1995/12/23}{Added a hook to insert space % or not before `double punctuation'.} % In horizontal mode, if a space has been typed before `;' we % remove it and put an unbreakable |\thinspace| instead. If no % space has been typed, we add |\FDP@thinspace| which will be % defined, up to the user's wishes, as an automatic added % thinspace, or as |\@empty|. % % \begin{macrocode} \declare@shorthand{frenchb}{;}{% \ifhmode \ifdim\lastskip>\z@ \unskip\penalty\@M\thinspace \else \FDP@thinspace \fi \fi % \end{macrocode} % Now we can insert a |;| character. % \begin{macrocode} \string;} % \end{macrocode} % \end{macro} % % \begin{macro}{\frenchb@sh@!@} % \begin{macro}{\frenchb@sh@?@} % % Because these definitions are very similar only one is displayed % in a way that the definition can be easily checked. % % \begin{macrocode} \declare@shorthand{frenchb}{!}{% \ifhmode \ifdim\lastskip>\z@ \unskip\penalty\@M\thinspace \else \FDP@thinspace \fi \fi \string!} % \end{macrocode} % % \begin{macrocode} \declare@shorthand{frenchb}{?}{% \ifhmode \ifdim\lastskip>\z@ \unskip\penalty\@M\thinspace \else \FDP@thinspace \fi \fi \string?} % \end{macrocode} % \end{macro} % \end{macro} % % \begin{macro}{\frenchb@sh@:@} % % The `:' requires a normal space before it, instead of % a |\thinspace|. % % \begin{macrocode} \declare@shorthand{frenchb}{:}{% \ifhmode \ifdim\lastskip>\z@ \unskip\penalty\@M\ \else \FDP@space \fi \fi \string:} % \end{macrocode} % \end{macro} % % \changes{frenchb-1.1}{1995/12/23}{Added a hook to insert space % or not before `double punctuation'.} % \begin{macro}{\AutoSpaceBeforeFDP} % \begin{macro}{\NoAutoSpaceBeforeFDP} % |\FDP@thinspace| and |\FDP@space| are defined as unbreakable % spaces by\\ |\AutoSpaceBeforeFDP| or as |\@empty| by % |\NoAutoSpaceBeforeFDP|.\\ % Default is |\AutoSpaceBeforeFDP|. % \begin{macrocode} \def\AutoSpaceBeforeFDP{% \def\FDP@thinspace{\penalty\@M\thinspace}% \def\FDP@space{\penalty\@M\ }} \def\NoAutoSpaceBeforeFDP{\let\FDP@thinspace\@empty \let\FDP@space\@empty} \AutoSpaceBeforeFDP % \end{macrocode} % \end{macro} % \end{macro} % % \begin{macro}{\system@sh@:@} % \begin{macro}{\system@sh@!@} % \begin{macro}{\system@sh@?@} % \begin{macro}{\system@sh@;@} % % When the active characters appear in an environment where their % French behaviour is not wanted they should give an `expected' % result. Therefore we define shorthands at system level as well. % % \begin{macrocode} \declare@shorthand{system}{:}{\string:} \declare@shorthand{system}{!}{\string!} \declare@shorthand{system}{?}{\string?} \declare@shorthand{system}{;}{\string;} % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % % \subsection{French quotation marks} % % Several shapes of French quotation marks are provided for use % with CMR or EC/DC fonts, or PostScript fonts. CMR fonts have no % quotation marks built-in, so we have to emulate them using math % symbols, either \LaTeX{}'s `lasy' font if available, or % \TeX{}~symbols |\ll| and |\gg| otherwise. EC/DC fonts and % PostScript fonts have built-in quotation marks, so we will of % course use them.\\ % The following definitions will take care for correct spacing of % French quotation marks (a white space precedes and follows % quotation marks but no line break is allowed neither \emph{after} % the opening one, nor \emph{before} the closing one). % % \begin{macro}{\oPlainGuill} % \begin{macro}{\fPlainGuill} % For \emph{Plain}\TeX, we define |\oPlainGuill| and |\fPlainGuill| % using math symbols |\ll| and |\gg|. In order to have the word % following opening guillemets hyphenated properly we have to end % the definitions with the \TeX{} equivalent for |\allowhyphens| % which is |\penalty\@M\hskip\z@skip|. % \begin{macrocode} \def\oPlainGuill{\leavevmode\raise0.25ex% \hbox{$\scriptscriptstyle\ll$\kern 0.15em}% \penalty\@M\hskip\z@skip} \def\fPlainGuill{\ifdim\lastskip>\z@\unskip\penalty\@M\fi \leavevmode\raise0.25ex% \hbox{\kern 0.15em$\scriptscriptstyle\gg$}} % \end{macrocode} % \end{macro} % \end{macro} % % \begin{macro}{\oLasyGuill} % \begin{macro}{\fLasyGuill} % \changes{frenchb-1.1}{1996/03/01}{Guillemets changed in \LaTeX-2.09 % because of protection problems in moving arguments, now use the % same guillemets as in plain\TeX.} % In \LaTeXe{} better looking quotation marks are available via the % `lasy' font (`lasy' stands for \LaTeX{} Symbol). % \begin{macrocode} \ifx\fmtname\LaTeXeFmtName \def\oLasyGuill{\leavevmode \hbox{\fontencoding{U}\fontfamily{lasy}\selectfont (\kern-0.20em(\kern 0.20em}\allowhyphens} \def\fLasyGuill{\ifdim\lastskip>\z@\unskip\penalty\@M\fi\leavevmode \hbox{\kern0.20em% \fontencoding{U}\fontfamily{lasy}\selectfont )\kern-0.20em)}} \fi % \end{macrocode} % \end{macro} % \end{macro} % % \begin{macro}{\oECGuill} % \begin{macro}{\fECGuill} % Now let's define French quotation marks for T1 encoding. % \changes{frenchb-1.1}{1996/01/20}{\cs{char 19} and \cs{char 20} % changed to \cs{guillemotleft} and \cs{guillemotright} as % suggested by V.~Jalby.} % \begin{macrocode} \def\oECGuill{\leavevmode\hbox{\guillemotleft\kern 0.15em}% \allowhyphens} \def\fECGuill{\ifdim\lastskip>\z@\unskip\penalty\@M\fi \leavevmode\hbox{\kern 0.15em\guillemotright}} % \end{macrocode} % \end{macro} % \end{macro} % % \begin{macro}{\og} % \begin{macro}{\fg} % \begin{macro}{\bbl@frenchguillemets} % \begin{macro}{\bbl@nonfrenchguillemets} % Now let's define which kind of French quotation marks will be % used. The top macros for quotation marks will be called |\og| % (``\underline{o}uvrez \underline{g}uillemets'') and |\fg| % (``\underline{f}ermez \underline{g}uillemets'').\\ % Make the top level definitions for French quotation marks % available through the |\extrasfrenchb| |\noextrasfrenchb| % mechanism.\\ % As |\DeclareTextCommand| cannot be used after the % |\begin{document}| we introduce internal definitions % |\begin@guill| and |\end@guill|.\\ % We'll try to be smart to users of D.~\textsc{Carlisle}'s |xspace| % package: if this package is loaded there will be no need for |{}| % or |\ | to get a space after |\fg|.\\ % \changes{frenchb-1.1}{1996/01/20}{A warning is now issued if \cs{og} % or \cs{fg} have been defined elsewhere in a \LaTeXe{} document % (suggested by Vincent Jalby).} % In \LaTeXe{} we provide a dummy definition for |\og| and |\fg|, % just to display an error message in case |\og| or |\fg| have been % defined elsewhere. % \begin{macrocode} \ifx\fmtname\LaTeXeFmtName \newcommand{\og}{\@empty} \newcommand{\fg}{\@empty} \DeclareTextCommand{\begin@guill}{T1}{\oECGuill} \DeclareTextCommand{\end@guill}{T1}{\fECGuill} \DeclareTextCommand{\begin@guill}{OT1}{\oLasyGuill} \DeclareTextCommand{\end@guill}{OT1}{\fLasyGuill} \DeclareTextSymbolDefault{\begin@guill}{OT1} \DeclareTextSymbolDefault{\end@guill}{OT1} \else \let\begin@guill\oPlainGuill \let\end@guill\fPlainGuill \fi \def\bbl@frenchguillemets{\ifx\xspace\@undefined\let\xspace\relax\fi \def\og{\begin@guill}% \def\fg{\end@guill\xspace}} \def\bbl@nonfrenchguillemets{\def\og{``}% \def\fg{\ifdim\lastskip>\z@\unskip\fi ''}} \expandafter\addto\csname extras\CurrentOption\endcsname{% \bbl@frenchguillemets} \expandafter\addto\csname noextras\CurrentOption\endcsname{% \bbl@nonfrenchguillemets} % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % % \subsection{French lists} % % \begin{macro}{\bbl@frenchitems} % \begin{macro}{\bbl@nonfrenchitems} % \begin{macro}{\bbl@frenchlistspacing} % \begin{macro}{\bbl@nonfrenchlistspacing} % French lists are different from USenglish ones: the $\bullet$ is % never used (long dash `--' is prefered for all levels), and % vertical spacing between items, before and after the list, should % be shorter in French texts than the defaults provided by \LaTeX. % Note that the easy way, just changing values of vertical spacing % parameters when entering French and restoring them to their % defaults on exit would not work, so we have to redefine % |\@trivlist|.\\ % The amount of vertical space before and after a list is given by % |\topsep| + |\parskip| (+ |\partopsep| if the list starts a new % paragraph). IMHO, |\parskip| should be added \emph{only} when % the list starts a new paragraph, so I subtract |\parskip| from % |\topsep| and add it back to |\partopsep|; this will normally % make no difference because |\parskip|'s default value is 0pt, but % will be noticeable when |\parskip| is \emph{not} null.\\ % I would appreciate feedback from experts in French typography, % about the (somewhat experimental) values set here for % |\partopsep|, |\topsep|, |\itemsep| and |\parsep|.\\ % Of course, this code is only for \LaTeX. % \changes{frenchb-1.1}{1996/01/25}{Save original definitions of label % items, instead of hard coding them in \cs{bbl@nonfrenchitems} % (suggested by Vincent Jalby).} % \changes{frenchb-1.1}{1996/01/26}{Tune vertical spacing in % French lists.} % \begin{macrocode} \ifx\fmtname\PlainFmtName \else \let\@ltiORI\labelitemi \let\@ltiiORI\labelitemii \let\@ltiiiORI\labelitemiii \let\@ltivORI\labelitemiv \def\bbl@frenchitems{% \def\labelitemi{--}% \def\labelitemii{--}% \def\labelitemiii{--}% \def\labelitemiv{--}} \def\bbl@nonfrenchitems{% \let\labelitemi\@ltiORI \let\labelitemii\@ltiiORI \let\labelitemiii\@ltiiiORI \let\labelitemiv\@ltivORI} \expandafter\addto\csname extras\CurrentOption\endcsname{% \bbl@frenchitems} \expandafter\addto\csname noextras\CurrentOption\endcsname{% \bbl@nonfrenchitems} \let\@trivlistORI\@trivlist \def\bbl@frenchlistspacing{% \def\@trivlist{\setlength{\itemsep}{0.4ex plus 0.2ex minus 0.2ex}% \setlength{\parsep}{0.4ex plus 0.2ex minus 0.2ex}% \setlength{\topsep}{0.8ex plus 0.4ex minus 0.4ex}% \setlength{\partopsep}{0.4ex plus 0.2ex minus 0.2ex}% \addtolength{\topsep}{-\parskip}% \addtolength{\partopsep}{\parskip}% \@trivlistORI}} \def\bbl@nonfrenchlistspacing{\let\@trivlist\@trivlistORI} \expandafter\addto\csname extras\CurrentOption\endcsname{% \bbl@frenchlistspacing} \expandafter\addto\csname noextras\CurrentOption\endcsname{% \bbl@nonfrenchlistspacing} \fi % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % % \subsection{French indentation of sections} % % \begin{macro}{\bbl@frenchindent} % \begin{macro}{\bbl@nonfrenchindent} % In French the first paragraph of each section should be indented, % this is another difference with USenglish. % Add this code only in \LaTeX. % \changes{frenchb-1.2}{1996/12/27}{Corrected typo % \cs{bbl@nonfrenchident}.} % % \begin{macrocode} \ifx\fmtname\PlainFmtName \else \let\@aifORI\@afterindentfalse \def\bbl@frenchindent{\let\@afterindentfalse\@afterindenttrue \@afterindenttrue} \def\bbl@nonfrenchindent{\let\@afterindentfalse\@aifORI \@afterindentfalse} \expandafter\addto\csname extras\CurrentOption\endcsname{% \bbl@frenchindent} \expandafter\addto\csname noextras\CurrentOption\endcsname{% \bbl@nonfrenchindent} \fi % \end{macrocode} % \end{macro} % \end{macro} % % \subsection{Formatting numbers} % \label{numbers} % % \changes{frenchb~1.2}{1996/12/27}{New macros \cs{nombre} % \cs{decimalsep} and \cs{thousandsep} added to format numbers.} % In English the decimal part starts with a point and thousands % should be separated by a comma: an approximation of $1000\pi$ % should be inputed as |$3{,}141.592{,}653$| in math-mode and % as |3,141.592,653| in text. % In French the decimal part starts with a comma and thousands % should be separated by a space; the same approximation of % $1000\pi$ should be inputed as |$3\;141{,}592\;653$| in math-mode % and as something like |3~141,592~653| in text. % Remember braces are mandatory around the comma in math-mode, the % reason is mentioned in the \TeX{}book p.~134: the comma is % of type |\mathpunct| (thus normally followed by a space) while % the point is of type |\mathord| (no space added). % % Thierry Bouche suggested that a second type of comma, of type % |\mathord| would be useful in math-mode, and proposed to % introduce a command (named |\decimalsep| in this package), % the expansion of which would depend on the current language. % % Vincent Jalby suggested a command |\nombre| to conveniently % typeset numbers: inputting |\nombre{3141,592653}| either in % text or in math-mode will format this number properly according % to the current language (French or non-French). % % |\nombre| accepts an optional argument which happens to be % useful with the extension `dcolumn', it specifies the decimal % separator used in the \emph{source code}: % |\newcolumntype{d}{D{,}{\decimalsep}{-1}}| \\ % |\begin{tabular}{|d|}\hline | \\ % | 3,14 \\ | \\ % | \nombre[,]{123,4567} \\ | \\ % | \nombre[,]{9876,543}\\\hline| \\ % |\end{tabular} | \\ % will print a column of numbers aligned on the decimal point % (comma or point depending on the current language), each slice % of 3 digits being separated by a space or a comma according to % the current language. % % \begin{macro}{\decimalsep} % \begin{macro}{\thousandsep} % We need a internal definition, valid in both text and math-mode, % for the comma (|\@comma@|) and another one for the unbreakable % fixed length space (no glue) used in French (|\f@thousandsep|). % % The commands |\decimalsep| and |\thousandsep| get default % definitions (for the English language) when |frenchb| is loaded; % these definitions will be updated when the current language is % switched to or from French. % \begin{macrocode} \mathchardef\m@comma="013B \def\@comma@{\ifmmode\m@comma\else,\fi} \def\f@thousandsep{\ifmmode\mskip5.5mu\else\penalty\@M\kern.3em\fi} \newcommand{\decimalsep}{.} \newcommand{\thousandsep}{\@comma@} \expandafter\addto\csname extras\CurrentOption\endcsname{% \def\decimalsep{\@comma@}% \def\thousandsep{\f@thousandsep}} \expandafter\addto\csname noextras\CurrentOption\endcsname{% \def\decimalsep{.}% \def\thousandsep{\@comma@}} % \end{macrocode} % \end{macro} % \end{macro} % % \begin{macro}{\nombre} % The decimal separator used when \emph{inputing} a number % with |\nombre| \emph{has to be a comma}. % |\nombre| splits the inputed number into two parts: what % comes before the first comma will be formatted by % \cs{@integerpart} while the rest (if not empty) will be % formatted by \cs{@decimalpart}. Both parts, once formatted % separately will be merged together with between them, either % the decimal separator \cs{decimalsep} or (in \LaTeXe{} % \emph{only}) the optional argument of |\nombre|. % % \begin{macrocode} \if@Two@E \newcommand{\nombre}[2][\decimalsep]{% \def\@decimalsep{#1}\@nombre#2\@empty,\@empty,\@nil} \else \newcommand{\nombre}[1]{% \def\@decimalsep{\decimalsep}\@nombre#1\@empty,\@empty,\@nil} \fi \def\@nombre#1,#2,#3\@nil{% \ifx\@empty#2% \@integerpart{#1}% \else \@integerpart{#1}\@decimalsep\@decimalpart{#2}% \fi} % \end{macrocode} % The easiest bit is the decimal part: % We attempt to read the first four digits of the decimal part, if % it has less than 4 digits, we just have to print them, otherwise % |\thousandsep| has to be appended after the third digit, and the % algorithm is applied recursively to the rest of the decimal part. % \begin{macrocode} \def\@decimalpart#1{\@@decimalpart#1\@empty\@empty\@empty} \def\@@decimalpart#1#2#3#4{#1#2#3% \ifx\@empty#4% \else \thousandsep\expandafter\@@decimalpart\expandafter#4% \fi} % \end{macrocode} % Formatting the integer part is more difficult because the slices % of 3 digits start from the \emph{bottom} while the number is % read from the top! % This (tricky) code is borrowed from David Carlisle's comma.sty. % \begin{macrocode} \def\@integerpart#1{\@@integerpart{}#1\@empty\@empty\@empty} \def\@@integerpart#1#2#3#4{% \ifx\@empty#2% \@addthousandsep#1\relax \else \ifx\@empty#3% \@addthousandsep\@empty\@empty#1#2\relax \else \ifx\@empty#4% \@addthousandsep\@empty#1#2#3\relax \else \@@integerpartafterfi{#1#2#3#4}% \fi \fi \fi} \def\@@integerpartafterfi#1\fi\fi\fi{\fi\fi\fi\@@integerpart{#1}} \def\@addthousandsep#1#2#3#4{#1#2#3% \if#4\relax \else \thousandsep\expandafter\@addthousandsep\expandafter#4% \fi} % \end{macrocode} % \end{macro} % % \subsection{Extra utilities} % % All that is left to do now is to provide the French user % with some extra utilities. % % \begin{macro}{\up} % \begin{macro}{\ieme} % |\up| eases the typesetting of superscripts like % `1\raise0.55ex\hbox{\small er}'. |\up| relies on % |\textsuperscript| when available (i.\,e., in \LaTeXe). % \changes{frenchb-1.1}{1996/01/20}{Use \cs{textsuperscript} in \LaTeXe, % as suggested by Vincent Jalby.} % \changes{frenchb-1.1}{1996/01/26}{Internal macro \cs{up@size} % introduced by Johannes Braams to replace \cs{small}, % too fragile in 2.09).} % \changes{frenchb-1.1}{1996/05/03}{\cs{@ptsize} may not be undefined, % i.\,e. in slides.cls.} % \begin{macro}{\up@size} % The internal macro |\up@size| holds the size at which the % superscript will be typeset. The reason for this is that we have % to specify it differently for different formats. % \begin{macrocode} \ifx\sevenrm\@undefined \ifx\@ptsize\@undefined \let\up@size\small \else \ifx\selectfont\@undefined % \end{macrocode} % In this case the format is the original \LaTeX-2.09: % \begin{macrocode} \ifcase\@ptsize \let\up@size\ixpt\or \let\up@size\xpt\or \let\up@size\xipt \fi % \end{macrocode} % When |\selectfont| is defined we probably have NFSS available: % \begin{macrocode} \else \ifcase\@ptsize \def\up@size{\fontsize\@ixpt{10pt}\selectfont}\or \def\up@size{\fontsize\@xpt{11pt}\selectfont}\or \def\up@size{\fontsize\@xipt{12pt}\selectfont} \fi \fi \fi \else % \end{macrocode} % If we end up here it must be a plain based \TeX{} format, so: % \begin{macrocode} \let\up@size\sevenrm \fi % \end{macrocode} % \end{macro} % Now we can define |\up|. When \LaTeXe{} runs in % compatibility mode (\LaTeX-2.09 emulation), |\textsuperscript| is % also defined, but does no good job, so we give two different % definitions for |\up| using |\if@Two@E|. % \begin{macrocode} \if@Two@E \DeclareRobustCommand*{\up}[1]{\textsuperscript{#1}} \else \DeclareRobustCommand*{\up}[1]{\leavevmode\raise1ex\hbox{\up@size#1}} \fi % \end{macrocode} % \changes{frenchb-1.1}{1996/05/31}{Added 5 macros from french.sty and % missing \cs{lowercase}.} % |\ieme| is provided for compatibility with |francais.sty|, % the other 5 for compatibility with |french.sty|: % \begin{macrocode} \def\ieme{\up{\lowercase{e}}} \def\iemes{\up{\lowercase{es}}} \def\ier{\up{\lowercase{er}}} \def\iers{\up{\lowercase{ers}}} \def\iere{\up{\lowercase{re}}} \def\ieres{\up{\lowercase{res}}} % \end{macrocode} % \end{macro} % \end{macro} % % \begin{macro}{\No} % \begin{macro}{\no} % \begin{macro}{\primo} % \begin{macro}{\fprimo)} % And some more macros for numbering, first two support macros. % \changes{frenchb-1.1}{1996/01/25}{Avoid using math superscripts % in text mode (suggested by V.~Jalby), use \cs{up} instead. % The symbol `degree' has nothing to do in % \cs{FrenchPopularEnumerate}, replace it by a small `o'.} % \begin{macrocode} \DeclareRobustCommand*{\FrenchEnumerate}[1]{% #1\up{\lowercase{o}}\kern+.3em} \DeclareRobustCommand*{\FrenchPopularEnumerate}[1]{% #1\up{\lowercase{o}})\kern+.3em} % \end{macrocode} % % Typing |\primo| should result in `$1^{\rm o}$\kern+.3em', % \begin{macrocode} \def\primo{\FrenchEnumerate1} \def\secundo{\FrenchEnumerate2} \def\tertio{\FrenchEnumerate3} \def\quatro{\FrenchEnumerate4} % \end{macrocode} % while typing |\fprimo)| gives `1$^{\rm o}$)\kern+.3em. % \begin{macrocode} \def\fprimo){\FrenchPopularEnumerate1} \def\fsecundo){\FrenchPopularEnumerate2} \def\ftertio){\FrenchPopularEnumerate3} \def\fquatro){\FrenchPopularEnumerate4} % \end{macrocode} % % Let's provide two macros for the common abbreviations % of ``Num\'ero''. % \begin{macrocode} \DeclareRobustCommand*{\No}{N\up{\lowercase{o}}\kern+.2em} \DeclareRobustCommand*{\no}{n\up{\lowercase{o}}\kern+.2em} % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % % \changes{frenchb-1.1}{1996/01/29}{Added command \cs{bsc}.} % \changes{frenchb-1.1}{1996/05/31}{Added \cs{leavevmode} in \cs{bsc}} % \begin{macro}{\bsc} % As family names should be written in small capitals and never be % hyphenated, we provide a command (its name comes from Boxed Small % Caps) to input them easily; this is a simpler implementation of % commands |\fsc| and |\lsc| from |french.sty| : no automatic % uppercase/lowercase conversion is performed. % Usage: |Jean~\bsc{Duchemin}|. % \begin{macrocode} \DeclareRobustCommand*{\bsc}[1]{\leavevmode\hbox{\scshape #1}} % \end{macrocode} % \end{macro} % % \changes{frenchb-1.1}{1996/05/31}{Added \cs{AllTeX}.} % \changes{frenchb-1.2}{1997/01/08}{Removed \cs{AllTeX}.} % % \changes{frenchb-1.1}{1996/02/12}{Added T1-encodings for \oe, \OE, % \ae, \AE. \emph{Do not} re-define these symbols outside \LaTeXe.} % \changes{frenchb-1.1}{1996/02/14}{Corrected definitions of % \cs{boi}.} % Some definitions for special characters. The first eight are % mandatory for |\oe| etc. to work properly in moving arguments, % the others just for convenience. We won't define |\tilde| as a % Text Symbol not to conflict with the macro |\tilde| for math-mode % and use the name |\tild| instead. Note that |\boi| may \emph{not} % be used in math-mode, its name in math-mode is |\backslash|. % |\degre| needs a special treatment: it is |\char6| % in T1-encoding and |\char23| in OT1-encoding. % \changes{frenchb-1.1}{1996/03/03}{Do not use commands related to % encodings outside \LaTeXe.} % \begin{macrocode} \ifx\fmtname\LaTeXeFmtName \DeclareTextSymbol{\ae}{T1}{230} \DeclareTextSymbol{\ae}{OT1}{26} \DeclareTextSymbol{\oe}{T1}{247} \DeclareTextSymbol{\oe}{OT1}{27} \DeclareTextSymbol{\AE}{T1}{198} \DeclareTextSymbol{\AE}{OT1}{29} \DeclareTextSymbol{\OE}{T1}{215} \DeclareTextSymbol{\OE}{OT1}{30} \DeclareTextSymbol{\degre}{T1}{6} \DeclareTextSymbol{\degre}{OT1}{23} \DeclareTextSymbol{\boi}{T1}{92} \DeclareTextCommand{\boi}{OT1}{{$\backslash$}} \DeclareTextSymbol{\at}{T1}{64} \DeclareTextSymbol{\at}{OT1}{64} \DeclareTextSymbol{\circonflexe}{T1}{94} \DeclareTextSymbol{\circonflexe}{OT1}{94} \DeclareTextSymbol{\tild}{T1}{126} \DeclareTextSymbol{\tild}{OT1}{126} \else \def\T@one{T1} \ifx\f@encoding\T@one \newcommand{\degre}{\char6} \else \newcommand{\degre}{\char23} \fi \newcommand{\at}{\char64} \newcommand{\circonflexe}{\char94} \newcommand{\tild}{\char126} \newcommand{\boi}{{$\backslash$}} \fi % \end{macrocode} % % \begin{macro}{\degres} % Macro for typesetting the abbreviation for `degrees' (as in % `degrees Celsius'). As the bounding box of the character `degree' % has \emph{very} different widths in CMR/DC and PostScript fonts, % we fix the width of the bounding box of |\degres| to 0.3\,em, % this lets the symbol `degree' stick to the preceding % (e.g., |45\degres|) or following character (e.g., |20~\degres C|). % \changes{frenchb-1.1}{1996/01/25}{Fixed width bounding box for % correct spacing with both CMR/DC and PostScript fonts} % \changes{frenchb-1.1}{1996/05/31}{Added \cs{leavevmode} in the % \cs{degres}'s definition} % \begin{macrocode} \DeclareRobustCommand*{\degres}{% \leavevmode\hbox to 0.3em{\hss\degre\hss}} % \end{macrocode} % \end{macro} % % \changes{frenchb-1.1}{1996/01/16}{Special care has to be taken % with Ml\TeX.} % The following macros are used in the redefinition of |\^| and % |\"| to handle the letter~i: they allow users to type simply % |\^i| and |\"i| instead of |\^{\i}| and |\"{\i}|.\\ % Ml\TeX{}'s macros dealing with accents conflict with those of % \LaTeXe{}, so we check whether |\csubinverse| is defined or not. % If |\csubinverse| is \emph{defined}, we are in Ml\TeX. % \changes{frenchb-1.1}{1996/03/02}{Do this only in \LaTeXe.} % \changes{frenchb-1.1}{1996/03/12}{Do not redefine \cs{\char94} and % \cs{"} in Ml\TeX, because it would break hyphenation. The correct % place to redefine \cs{\char94i} and \cs{"i} is in the format % itself, see MLTeX.cfg.} % \begin{macrocode} \ifx\fmtname\LaTeXeFmtName \AtBeginDocument{% \ifx\csubinverse\@undefined \DeclareTextCompositeCommand{\^}{OT1}{i}{\^\i}% \DeclareTextCompositeCommand{\"}{OT1}{i}{\"\i}% \fi} \fi % \end{macrocode} % % Finally the macrospace used by some control sequences we do not % need any longer, is freed. % \begin{macrocode} \let\T@one\relax \let\@FI@\relax \let\PlainFmtName\relax \let\LaTeXeFmtName\relax % \end{macrocode} % % The macro |\ldf@finish| takes care of looking for a % configuration file, setting the main language to be switched on % at |\begin{document}| and resetting the category code of % \texttt{@} to its original value. % \changes{frenchb-1.1b}{1996/11/02}{Now use \cs{ldf@finish} to wrap % up} % \changes{frenchb-1.2}{1997/01/05}{The config file searched for is % `frenchb.cfg' regardless \cs{CurrentOption}.} % The config file searched for will always be `frenchb.cfg'. % Remember that |\CurrentOption| has been set to `frenchb', and % that `francais' and `french' are aliases for `frenchb'. % \begin{macrocode} \ldf@finish\CurrentOption % % \end{macrocode} % % \Finale %% %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z %% Digits \0\1\2\3\4\5\6\7\8\9 %% Exclamation \! Double quote \" Hash (number) \# %% Dollar \$ Percent \% Ampersand \& %% Acute accent \' Left paren \( Right paren \) %% Asterisk \* Plus \+ Comma \, %% Minus \- Point \. Solidus \/ %% Colon \: Semicolon \; Less than \< %% Equals \= Greater than \> Question mark \? %% Commercial at \@ Left bracket \[ Backslash \\ %% Right bracket \] Circumflex \^ Underscore \_ %% Grave accent \` Left brace \{ Vertical bar \| %% Right brace \} Tilde \~} %% \endinput