diff options
Diffstat (limited to 'Master/texmf-dist/source/generic/babel/frenchb.dtx')
-rw-r--r-- | Master/texmf-dist/source/generic/babel/frenchb.dtx | 2477 |
1 files changed, 2477 insertions, 0 deletions
diff --git a/Master/texmf-dist/source/generic/babel/frenchb.dtx b/Master/texmf-dist/source/generic/babel/frenchb.dtx new file mode 100644 index 00000000000..279ee712f9b --- /dev/null +++ b/Master/texmf-dist/source/generic/babel/frenchb.dtx @@ -0,0 +1,2477 @@ +% \iffalse meta-comment +% +% Copyright 1989-2005 Johannes L. Braams and any individual authors +% listed elsewhere in this file. All rights reserved. +% +% This file is part of the Babel system. +% -------------------------------------- +% +% It may be distributed and/or modified under the +% conditions of the LaTeX Project Public License, either version 1.3 +% of this license or (at your option) any later version. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3 or later is part of all distributions of LaTeX +% version 2003/12/01 or later. +% +% This work has the LPPL maintenance status "maintained". +% +% The Current Maintainer of this work is Johannes Braams. +% +% The list of all files belonging to the Babel system is +% given in the file `manifest.bbl. See also `legal.bbl' for additional +% information. +% +% The list of derived (unpacked) files belonging to the distribution +% and covered by LPPL is defined by the unpacking scripts (with +% extension .ins) which are part of the distribution. +% \fi +% \CheckSum{1985} +% +% \iffalse +% Tell the \LaTeX\ system who we are and write an entry on the +% transcript. Nothing to write to the .cfg file, if generated. +%<*dtx> +\ProvidesFile{frenchb.dtx} +%</dtx> +%<code>\ProvidesLanguage{french} +%\ProvidesFile{frenchb.dtx} +%<*!cfg> + [2005/02/06 v1.6g French support from the babel system] +%</!cfg> +%<*cfg> +%% frenchb.cfg: configuration file for frenchb.ldf +%% Daniel Flipo Daniel.Flipo at univ-lille1.fr +%</cfg> +%% File `frenchb.dtx' +%% Babel package for LaTeX version 2e +%% Copyright (C) 1989 - 2005 +%% by Johannes Braams, TeXniek +% +%<*!cfg> +%% Frenchb language Definition File +%% Copyright (C) 1989 - 2005 +%% by Johannes Braams, TeXniek +%% Daniel Flipo, GUTenberg +% +%% Please report errors to: Daniel Flipo, GUTenberg +%% Daniel.Flipo at univ-lille1.fr +%</!cfg> +% +% 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[a4paper]{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]^^A\] + Daniel \textsc{Flipo}\\ + \texttt{Daniel.Flipo@univ-lille1.fr} +\end{center} + \DocInput{frenchb.dtx} +\end{document} +%</filedriver> +%\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.} +% +% \changes{frenchb-1.3f}{1999/04/11}{Deleted sectioning command +% \cs{section}\{About French Typography\}.} +% +% \section{The French language} +% +% 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! +% +% The command |\selectlanguage{french}| switches to the French +% language% +% \footnote{\texttt{\textbackslash selectlanguage\{francais\}} +% and \texttt{\textbackslash selectlanguage\{frenchb\}} are kept +% for backward compatibility but should no longer be used.}, +% 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 default items in itemize environment are set to `--' +% instead of \textbullet, and all vertical spacing and glue +% is deleted, a hook to reset standard \LaTeX{} spacing +% is provided (|\FrenchItemizeSpacingfalse|); +% it is possible to change `--' to something else (`---' +% for instance) by redefining |\FrenchLabelItem|; +% apart from the global hook |\FrenchLabelItem|, it is +% also possible to change the `labelitems' at any level +% (1 to 4) in French, using the standard \LaTeX{} syntax, +% for instance: |\renewcommand{\labelitemii}{\textbullet}|; +% in order to be effective in French, the redefinitions +% have to be made when French is the current language +% (i.e.\ \emph{after} the |\begin{document}|), the changes are +% saved when switching to another language and will be +% remembered of, when switching back to French; +% \item vertical spacing in general \LaTeX{} lists is +% shortened, a hook to reset standard \LaTeX{} settings +% is provided (|\FrenchListSpacingfalse|) ; +% \item the first paragraph of each section is indented +% (\LaTeX{} only); +% \item the space after |\dots| is removed in French. +% \end{enumerate} +% +% Some commands are provided in |frenchb| to make typesetting +% easier: +% \begin{enumerate} +% \item French quotation marks can be entered 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{} \emph{and} +% |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 and better +% horizontal spacing). +% |\og| and |\fg| can be used outside French, they provide +% then English quotes `` and ''. +% \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 the symbol 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 In math mode the comma has to be surrounded with +% braces to avoid a spurious space being inserted after it, +% in decimal numbers for instance (see the \TeX{}book p.~134). +% The command |\DecimalMathComma| makes the comma be an +% ordinary character \emph{in French only} (no space added); +% as a counterpart, if |\DecimalMathComma| is active, an +% explicit space has to be added in lists and intervals: +% |$[0,\ 1]$|, |$(x,\ y)$|. |\StandardMathComma| switches back +% to the standard behaviour of the comma. +% \item A command |\nombre| is provided to easily typeset 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): +% each slice of three digits will be separated either with +% a comma in English or with a space in French (if you prefer +% a thin space instead of a normal space, just add the command +% |\ThinSpaceInFrenchNumbers| to the preamble of your document, +% or to |frenchb.cfg|). +% The command |\nombre| is a contribution of Vincent Jalby +% using ideas of David Carlisle in comma.sty. +% \item |frenchb| has been designed to take advantage of the |xspace| +% package if present: adding |\usepackage{xspace}| in the +% preamble will force macros like |\fg|, |\ier|, |\ieme|, +% |\dots|, \dots, to respect the spaces you type after them, +% for instance typing `|1\ier juin|' will print +% `1\textsuperscript{er} juin' (no need for a forced space +% after |1\ier|). +% \item Two commands, |\FrenchLayout| and |\StandardLayout| (to be +% used \emph{only in the preamble}) are provided to unify the +% layout of multilingual documents (it mainly concerns lists) +% regardless the current language (see section~\ref{sec-global} +% for details). +% \item Two commands |\AddThinSpaceBeforeFootnotes| and +% |\FrenchFootnotes| enable to customize the layout of +% footnotes following the French IN's specifications; +% the first one, which can only be used \emph{before} the +% |\begin{document}|, adds a thinspace in the running text +% before the number or symbol calling the footnote; the +% second one modifies the footnote's layout: it typesets +% leading numbers as `1.\hspace{.5em}' instead of +% `$\hbox{}^1$'. |\FrenchFootnotes| has no effect on footnotes +% numbered with symbols (as in the |\thanks| command). +% +% None of these commands are active by default, both can +% be best added to |frenchb.cfg| or to the preamble of the +% document. |\FrenchFootnotes| and |\StandardFootnotes|, +% which cancels the effect of |\FrenchFootnotes| for the +% text coming next, can be used anywhere in the document. +% The command |\StandardFootnotes| may be useful when +% some footnotes are numbered with letters (inside minipages +% for instance). +% +% |\AddThinSpaceBeforeFootnotes| and |\FrenchFootnotes| act +% on \emph{all} footnotes whatever the current language is. +% \end{enumerate} +% +% \vspace{\baselineskip} +% 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 (see the example +% configuration file below in section~\ref{sec-cfg}), 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{\baselineskip} +% 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 behaviour of |frenchb|. +% +% \vspace{\baselineskip} +% 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). \\[3mm]^^A\] +% |%%% Test file for French hyphenation.|\\ +% |\documentclass{article}|\\ +% |\usepackage[|\textit{my-encoding}|]{inputenc}|\\ +% |\usepackage[T1]{fontenc} % Use EC fonts for French|\\ +% |%\usepackage{aeguill} % Uncomment this line and|\\ +% | % comment out the preceeding one|\\ +% | % to use AE virtual fonts.|\\ +% |\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 US-English, not for +% French; +% \item you get no hyphen at all in \texttt{\'ev\'e-ne-ment}, this +% probably means that you are using CM fonts and the macro +% |\accent| to produce accented characters. +% Using EC fonts with built-in accented characters or Ml\TeX{} +% with CM fonts avoids this type of mismatch. +% \end{itemize} +% +% \vspace{\baselineskip} +% |frenchb| has been improved using helpful suggestions from many +% people, the main contributions came from Vincent~Jalby. +% Thanks to all of them! +% +% \subsection*{Changes} +% +% First version released: 1.1 as of 1996/05/31 part of +% \babel-3.6beta. +% +% \textbf{Changes in version 1.1b}: update for \babel-3.6. +% +% \textbf{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). +% +% \textbf{Changes in version 1.3}: +% \begin{itemize} +% \item The `xspace' package, when present, now controls +% spacing after all (sensible) macros, formerly `xspace' +% worked on |\fg| (suggested by Vincent~Jalby); +% \item spacing after opening and before closing guillemets +% improved as suggested by Thierry~Bouche; +% \item a replacement for poor looking guillemets in OT1 encoding +% (\emph{math} fonts are used to emulate them) is provided +% if the file |ot2wncyr.fd| is found: this file defines an +% OT2 encoding using AMS Cyrillic fonts; these +% have built-in guillemets, they are \emph{text} fonts, +% are free, and are distributed as METAFONT and Type1 fonts +% (good for pdftex!), the replacement was suggested by +% G\'erard~Degrez; if the files |ot2wncyr.fd|, |wncy*.mf|, +% |wncy*.tfm|, and |wncy*.pfb| aren't available on your +% system, you \emph{should} get them from \mbox{CTAN}; +% if your system complains about missing |wncy*.tfm| fonts, +% it means your \TeX{} system is \emph{incomplete}, as a +% quick fix, you can either remove |ot2wncyr.fd| or add the +% command |\LasyGuillemets| to the preamble of your document +% or to |frenchb.cfg|, then |frenchb| will behave as it did +% in the previous versions.\\ +% In case Cyrillic guillemets do not fit, it is possible +% to pick French guillemets from any font using the +% command |\FrenchGuillemetsFrom| which requires 4 arguments +% |\FrenchGuillemetsFrom{|{\it coding}|}{|{\it font}\relax +% |}{|{\it char-left}|}{|{\it char-right}|}|, for instance, +% add |\FrenchGuillemetsFrom{T1}{ppl}{19}{20}| to the +% preamble of your document or to |frenchb.cfg|, to pick +% French guillemets from Palatino (fontname=ppl, char 19 +% and 20 are left and right guillemets in T1-encoding). +% This was suggested by Michel~Bovani. +% \item the environment `itemize' has been redesigned in French +% according to specifications from Jacques~Andr\'e +% and Thierry~Bouche; it is possible to switch back to the +% settings of version~1.2: add |\FrenchItemizeSpacingfalse| +% \emph{after} loading |frenchb| in the preamble (this can +% be useful to process old documents); +% \item two switches have been added to go back to standard +% \LaTeX{} list spacing |\FrenchItemizeSpacingfalse| +% and |\FrenchListSpacingfalse|; +% \item |\nombre| now properly handles signs in \LaTeXe; +% \item definition of |\dots| changed in French; +% \item in French, with the standard \LaTeX{} classes, captions +% in figures and tables are printed with an endash instead +% of a colon. +% \end{itemize} +% +% \textbf{Changes in version 1.4}: +% \begin{itemize} +% \item the redefinition of|\@makecaption| is changed not to +% overwrite the changes made by some classes (koma-script, +% amsart, ua-thesis\dots) as pointed out by Werner~Lemberg; +% \item a hook, |\FrenchGuillemetsFrom|, is provided to pick +% French guillemets from any font (suggested by +% Michel~Bovani, works \emph{only} in OT1-encoding); +% \item a hook, |\FrenchLabelItem|, is provided to enable marks +% other than `--' (|\textendash|) in French lists +% (also suggested by Michel~Bovani); +% \item |\DecimalMathComma|, |\StandardMathComma|, +% |\ThinSpaceInFrenchNumbers| added; +% \item |\FrenchLayout| and |\StandardLayout| added; +% \item an example of customization file |frenchb.cfg| is +% included in |frenchb.dtx|. +% \end{itemize} +% +% \textbf{Changes in version 1.5}: +% \begin{itemize} +% \item The settings for spacing in French lists are no longer +% tuned at the |\@trivlist| level but within |\list|; this +% enables the users to provide their own settings for the +% lists they define with |\list| (suggested by P. Pichaureau). +% Although the layout of the standard lists +% \emph{has not changed}, some lists, based directly on +% |\@trivlist| or |\trivlist|, could possibly be typeset +% differently when upgrading from version 1.4 to 1.5. +% The command |\FrenchOldTrivlisttrue| could then, be useful +% to process older documents. +% \item Apart from the global hook |\FrenchLabelItem|, it is +% now also possible to change the `labelitems' at any level +% (1 to 4) in French, using the standard \LaTeX{} syntax, +% for instance: |\renewcommand{\labelitemii}{\textbullet}|. +% \item The internal name for the French language has been +% changed from |frenchb| to |french|, it means that +% |\captionsfrench|, |\datefrench|, |\extrasfrench|, +% |\noextrasfrench|, are to be used now instead of +% |\captionsfrenchb|, |\datefrenchb|, |\extrasfrenchb|, +% |\noextrasfrenchb|. +% \item From version 1.5f on, it is possible to customize +% the space inserted before a colon in French; its default +% value is |\space| (as in previous versions of |frenchb|), +% but it can now be changed to |\thinspace| by redefining +% |\Fcolonspace|. +% \end{itemize} +% +% \textbf{Changes in version 1.6}: +% \begin{itemize} +% \item Two new commands are provided: +% |\AddThinSpaceBeforeFootnotes| and |\FrenchFootnotes|; +% they enable to typeset footnotes according to the +% French IN's specifications (suggested by Jacques~Andr\'e). +% \item |frenchb| will make use of |\textdegree| (TS1 encoding) +% to typeset degrees whenever possible. +% \item Default guillemets have been changed \emph{in OT1 +% encoding only} in version~1.6c: the former ones were picked +% up in the wncyr fonts, which forced the cyrillic encoding to +% OT2 when \babel{} was loaded with option |frenchb| before a +% cyrillic language (|russian|, |ukrainian| or |bulgarian|). +% Now, LM fonts for T1-encoding are available, we pick up the +% guillemets from them, for OT1-encoding. +% \item The config file |frenchb.cfg| is now loaded only when +% \LaTeXe{} is used (from version~1.6g). +% \item The command |\degres| now works also in math mode (from +% version~1.6g), but not in bold versions (it is a text +% character basically). +% \end{itemize} +% +% \StopEventually{} +% +% \subsection*{Customizing frenchb: an example of configuration file} +% \label{sec-cfg} +% +% \changes{frenchb-1.4d}{1999/12/19}{Do NOT set catcodes of French +% quotes to 12 before launching \cs{initiate@active@char} in +% frenchb.cfg, (problem on Mac reported by M.Bovani).} +% +% \begin{macrocode} +%<*cfg> +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% If you want to customize frenchb, please DO NOT hack into the code, +%% copy this file into a directory searched by TeX, preferably a +%% personal one on multi-user systems, and customize it as you like. +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% WARNING: If you exchange your documents with colleagues using +%% a different TeX installation, it is best NOT TO HAVE a frenchb.cfg +%% file, and add instead the customization commands to the preamble +%% of your documents after babel and frenchb have been loaded. +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% +%% Uncomment the following line if you dislike frenchb automatically +%% adding a space before French double punctuation (see frenchb.dtx +%% for more information). +%% +%%\NoAutoSpaceBeforeFDP +%% +%% frenchb inserts a normal space before a colon in French (following +%% I.N. specifications), but some people prefer a thinspace instead; +%% uncomment the following line if you prefer a thinspace. +%% +%%\renewcommand{\Fcolonspace}{\thinspace} +%% +%% Uncomment the following line to force lasy font emulation for +%% French guillemets in OT1 encoding; Polish guillemets are +%% FAR BETTER LOOKING, you should normally leave this line commented out. +%% +%%\LasyGuillemets +%% +%% The following option is for backward compatibility ONLY +%% (it might conflict with the russian option of babel). +%% Uncomment the following line if you want to get back to +%% the default guillemets used in versions $<$ 1.6b for OT1-encoding +%% (no effect in T1-encoding). +%% +%%\CyrillicGuillemets +%% +%% If you dislike Polish guillemets in OT1-encoding, you can easily +%% pick up yours from other fonts, examples below: Palatino or +%% cyrillic CMR T2A encoded font. +%% The four arguments are: encoding, font name, character codes of +%% the opening and closing guillemets in the selected font. +%% +%%\FrenchGuillemetsFrom{T1}{ppl}{19}{20} +%%\FrenchGuillemetsFrom{T2A}{cmr}{190}{191} +%% +%% Uncomment the following line if you don't want frenchb to change +%% LaTeX standard settings for vertical spacing in 'itemize' lists. +%% LaTeX standard settings were used by frenchb in versions < 1.3, +%% so you may want to uncomment the following line to process older +%% documents. +%% +%%\FrenchItemizeSpacingfalse +%% +%% frenchb tunes vertical spaces in all lists (at \list level), +%% uncomment the following line if you prefer LaTeX standard settings +%% (this flag is new in version 1.3). When \ifFrenchItemizeSpacing is +%% `true' (default setting), this flag has no effect on itemize lists. +%% +%%\FrenchListSpacingfalse +%% +%% The command \FrenchLabelItem can be used to set the `labelitems' +%% for all levels in French. For instance, to get long dashes, use: +%% +%%\renewcommand{\FrenchLabelItem}{\textemdash} +%% +%% You can also have different `labelitems' for each level in French: +%% +%%\renewcommand{\Frlabelitemi}{\textemdash} +%%\renewcommand{\Frlabelitemii}{\bfseries\textendash} +%%\renewcommand{\Frlabelitemiii}{\textbullet} +%%\renewcommand{\Frlabelitemiv}{} +%% +%% Uncomment the following line if you want a thinspace to be added +%% in the running text before the footnote number or symbol. +%% +%%\AddThinSpaceBeforeFootnotes +%% +%% Uncomment the following line if you want footnotes to be typeset +%% according the specifications of the French `Imprimerie Nationale'. +%% +%%\FrenchFootnotes +%% +%% Uncomment the following line if you want the command \nombre to +%% insert thin spaces (1/6em) instead of normal spaces (0.3em) +%% between slices of 3 digits when typesetting numbers in French. +%% +%%\ThinSpaceInFrenchNumbers +%% +%% If you are bored to type {,} every time you want a decimal comma in +%% math mode, uncomment the following line (and don't forget to add a +%% forced space after the comma in lists and intervals: $(x,\ y)$ and +%% $[0,\ 1]$). I suggest NOT TO UNCOMMENT the following line, +%% and to switch between the decimal comma and the standard comma +%% using \DecimalMathComma and \StandardMathComma inside the document. +%% +%%\DecimalMathComma +%% +%% If you do not want the appearance of lists to depend on the current +%% language, add ONE of these two commands: \FrenchLayout (for a +%% document mainly in French) or \StandardLayout (for a document +%% mainly in English). +%% +%%\FrenchLayout +%%\StandardLayout +%% +%% With the standard LaTeX classes (article.cls, report.cls, book.cls) +%% you can change the separator used in figure and table captions in +%% French with \CaptionSeparator, for instance (the default value of +%% \CaptionSeparator in French is '\space\textendash\space'): +%% +%%\addto\captionsfrench{\def\CaptionSeparator{\space\textemdash\space}} +%% +%% You might want to change some of the translations of caption names, +%% you can do it this way, for instance: +%% +%%\addto\captionsfrench{\def\figurename{{\scshape Figure}}} +%%\addto\captionsfrench{\def\tablename{{\scshape Table}}} +%%\addto\captionsfrench{\def\proofname{Preuve}} +%% +%% If French guillemets are available on your keyboard, you can use +%% them instead of the commands \og and \fg: REPLACE << and >> in +%% the following code by your ready-made guillemets (2 occurrences +%% for each) AND uncomment the resulting code. +%% WARNINGS: +%% 1) This will reduce the portability of your source files! +%% 2) This adds two active characters. +%% 3) If you add this stuff to the preamble of a document, you'll +%% need to wrap it in \makeatletter ... \makeatother. +%% +%% \ifx\mule@def\undefined +%% \initiate@active@char{<<} +%% \initiate@active@char{>>} +%% \AtBeginDocument{% +%% \def<<{\og\ignorespaces}% +%% \def>>{{\fg}}% +%% }% +%% \else %%% For the CJK package, see MULEenc.sty. +%% \mule@def{11}{\og\ignorespaces} +%% \mule@def{27}{{\fg}} +%% \fi +%% +%% The rest is for compatibility with Bernard Gaulle's french.sty: +%% if you want to typeset with babel/frenchb files originally written +%% for french.sty, you will probably want to uncomment these lines. +%% +%% Uncomment these lines if you want the aliases \numero and \Numero +%% (as in french.sty) for \no and \No. +%% +%%\let\numero=\no +%%\let\Numero=\No +%% +%% Uncomment the following lines if you want to substitute `\bsc' to +%% either (or both) of french.sty macros `\fsc' and `\lsc'. +%% +%%\let\fsc=\bsc +%%\let\lsc=\bsc +%% +%% Uncomment the following line if you want to substitute `\up' to +%% french.sty macro `\fup'. +%% +%%\let\fup=\up +%% +%% Uncomment the following lines if you intend to use commands \french +%% and \english to switch between languages, as in french.sty. +%% +%%\def\french{\leavevmode\selectlanguage{french}} +%%\def\english{\leavevmode\selectlanguage{english}} +%% +%% Uncomment the following lines if you intend to use the command +%% \AllTeX to refer to all flavours of TeX, (this command has been +%% made popular by french.sty). +%% +%%\newcommand*{\AllTeX}{% +%% (L\kern-.36em\raise.3ex\hbox{\sc a}\kern-.15em)% +%% T\kern-.1667em\lower.7ex\hbox{E}\kern-.125emX} +%</cfg> +% \end{macrocode} +% +% \section{\TeX{}nical details} +% +% \subsection{Initial setup} +% +% 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} +% +% \changes{frenchb-1.5g}{2001/09/09}{Let \cs{LdfInit} check for +% \cs{datefrench} instead of \cs{NoAutoSpaceBeforeFDP}, +% as the later is also defined by russianb.ldf!} +% +% \begin{macrocode} +%<*code> +%% +\LdfInit\CurrentOption\datefrench +% \end{macrocode} +% +% \begin{macro}{\ifLaTeX} +% \begin{macro}{\ifLaTeXe} +% \changes{frenchb-1.1}{1996/02/12}{Use \cs{fmtname} to check +% the format instead of \cs{newcommand}; define \cs{PlainFmtName} +% and \cs{LaTeXeFmtName}.} +% +% \changes{frenchb-1.3f}{1999/04/11}{Use \cs{magnification} to check +% if the format is plain (i.e \emph{not} \LaTeX). Checking the +% format's name was not reliable: plain-like formats may not be +% called just `plain' but `babel-plain'.} +% +% To check the format in use (plain, \LaTeX{} or \LaTeXe), +% we'll need two new `if'. +% \begin{macrocode} +\newif\ifLaTeX +\ifx\magnification\@undefined\LaTeXtrue\fi +\newif\ifLaTeXe +\ifx\@compatibilitytrue\@undefined\else\LaTeXetrue\fi +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\if@Two@E} +% \changes{frenchb-1.1}{1996/03/01}{New test \cs{if@Two@E}.} +% +% We will need another `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} +% +% \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; we allow for the names `french', +% `francais', `canadien' or `acadian'. The latter two are both +% names used in Canada for variants of French that are in use in +% that country. +% +% \changes{frenchb-1.5b}{2001/02/09}{Added support for canadien and +% acadian} +% +% \begin{macrocode} +\ifx\l@french\@undefined + \ifx\l@francais\@undefined + \ifx\l@canadien\@undefined + \ifx\l@acadian\@undefined + \@nopatterns{French} + \adddialect\l@french0 + \else + \let\l@french\l@acadian + \fi + \else + \let\l@french\l@canadien + \fi + \else + \let\l@french\l@francais + \fi +\fi +% \end{macrocode} +% After the statement above |\l@french| is sure to always be +% defined. +% +% \changes{frenchb-1.2}{1997/01/05}{`french' `frenchb' and +% `francais' are synonymous regardless of \cs{CurrentOption}.} +% The internal name for the French language will be `french'; +% `francais' and `frenchb' will be synonymous for `french': +% first let both names use the same hyphenation patterns. +% Later we will have to set aliases for |\captionsfrench|, +% |\datefrench|, |\extrasfrench| and |\noextrasfrench|. +% As French uses the standard values of |\lefthyphenmin| (2) +% and |\righthyphenmin| (3), no special setting is required here. +% +% \changes{frenchb-1.5d}{2001/02/16}{The internal name for the +% French language is changed from `frenchb' to `french'.} +% +% \begin{macrocode} +\def\CurrentOption{french} +\ifx\l@francais\@undefined + \let\l@francais\l@french +\fi +\ifx\l@frenchb\@undefined + \let\l@frenchb\l@french +\fi +% \end{macrocode} +% When this language definition file was loaded for one of the +% Canadian versions of French we need to make sure that a suitable +% hyphenation pattern register will be found by \TeX. +% +% \changes{babel-1.5b}{2001/02/09}{Added support for canadien and +% acadian} +% +% \begin{macrocode} +\ifx\l@canadien\@undefined + \let\l@canadien\l@french +\fi +\ifx\l@acadian\@undefined + \let\l@acadian\l@french +\fi +% \end{macrocode} +% +% \changes{frenchb-1.5g}{2001/09/09}{Instead of issuing a warning when +% \cs{captionsfrancais} or \cs{captionsfrenchb} are customized in +% the preamble, we merge the changes into \cs{captionsfrench}.} +% +% This language definition can be loaded for different variants of +% the French language. The `key' \babel\ macros are only defined +% once, using `french' as the language name, but |frenchb| and +% |francais| are synonymous. As some users who choose |frenchb| +% or |francais| as option of \babel, might customize +% |\captionsfrenchb| or |\captionsfrancais| in the preamble, +% we merge their changes at the |\begin{document}| when they do so +% (only possible in \LaTeXe). +% The other three commands for |\date|, |\extras|, and |\noextras| +% are not likely to be modified by end-users. +% The other variants of languages are defined by checking if the +% relevant option was used and then adding one extra level of +% expansion. +% +% \changes{frenchb-1.6c}{2003/06/30}{Bug correction: it is necessary +% to re-execute \cs{captionsfrench} after merging +% \cs{captionsfrenchb} and \cs{captionsfrancais}.} +% +% \begin{macrocode} +\def\datefrancais{\datefrench} +\def\extrasfrancais{\extrasfrench} +\def\noextrasfrancais{\noextrasfrench} +\def\datefrenchb{\datefrench} +\def\extrasfrenchb{\extrasfrench} +\def\noextrasfrenchb{\noextrasfrench} +\ifLaTeXe + \AtBeginDocument{\let\captions@French\captionsfrench + \ifx\captionsfrenchb\@undefined + \let\captions@Frenchb\relax + \else + \let\captions@Frenchb\captionsfrenchb + \fi + \ifx\captionsfrancais\@undefined + \let\captions@Francais\relax + \else + \let\captions@Francais\captionsfrancais + \fi + \def\captionsfrench{\captions@French + \captions@Francais\captions@Frenchb}% + \def\captionsfrancais{\captionsfrench}% + \def\captionsfrenchb{\captionsfrench}% + \iflanguage{french}{\captionsfrench}{}% + } +\else + \def\captionsfrancais{\captionsfrench} + \def\captionsfrenchb{\captionsfrench} +\fi +\@ifpackagewith{babel}{canadien}{% + \def\captionscanadien{\captionsfrench}% + \def\datecanadien{\datefrench}% + \def\extrascanadien{\extrasfrench}% + \def\noextrascanadien{\noextrasfrench}% + }{} +\@ifpackagewith{babel}{acadian}{% + \def\captionsacadian{\captionsfrench}% + \def\dateacadian{\datefrench}% + \def\extrasacadian{\extrasfrench}% + \def\noextrasacadian{\noextrasfrench}% + }{} +% \end{macrocode} +% +% \begin{macro}{\extrasfrench} +% \begin{macro}{\noextrasfrench} +% The macro |\extrasfrench| will perform all the extra +% definitions needed for the French language. +% The macro |\noextrasfrench| is used to cancel the actions of +% |\extrasfrench|.\\ +% 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} +% \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{Caption names} +% +% The next step consists of defining the French equivalents for +% the \LaTeX{} caption names. +% +% \changes{frenchb-1.3c}{1997/10/08}{changed \cs{@makecaption} +% definition to add a hook \cs{CaptionSeparator}.} +% +% In French, captions in figures and tables should be printed with +% endash (`--') instead of the standard `:'. If another separator +% is preferred, see in the example configuration file above +% (section~\ref{sec-cfg}) how to change the default value of +% |\CaptionSeparator|. +% +% \changes{frenchb-1.4a}{1999/10/23}{frenchb-1.3 silently redefined +% \cs{@makecaption}, overwriting changes made by some classes +% like koma-script, ua-thesis\dots (pointed out by Werner~Lemberg). +% New implementation suggested by Vincent~Jalby.} +% +% \changes{frenchb-1.4e}{2000/03/12}{Captions print twice with AMS +% classes (amsart, amsbook). Bug reported by Jean-Fran\c cois +% Mertens. Revert to implementation of version 1.4, which is +% safer as \@makecaption can be changed unpredictably.} +% +% We first store the standard definition of |\@makecaption| +% (e.g., the one provided in article.cls, report.cls, book.cls +% which is frozen for \LaTeXe{} according to Frank Mittelbach), +% in |\STD@makecaption|. `ATBeginDocument' we compare it to its +% current definition (some classes like koma-script classes, +% AMS classes, ua-thesis.cls\dots change it). +% If they are identical, frenchb just adds a hook called +% |\CaptionSeparator| to |\@makecaption|, |\CaptionSeparator| +% defaults to ': ' as in the standard |\@makecaption|, and will be +% changed to ' -- ' in French. +% If the definitions differ, frenchb doesn't overwrite the changes, +% but prints a message in the .log file. +% +% \changes{frenchb-1.4f}{2000/04/07}{Only issue a warning if +% \cs{@makecaption} exists} +% +% \begin{macrocode} +\ifLaTeXe + \long\def\STD@makecaption#1#2{% + \vskip\abovecaptionskip + \sbox\@tempboxa{#1: #2}% + \ifdim \wd\@tempboxa >\hsize + #1: #2\par + \else + \global \@minipagefalse + \hb@xt@\hsize{\hfil\box\@tempboxa\hfil}% + \fi + \vskip\belowcaptionskip} + \def\CaptionSeparator{\string:\space} + \long\def\FB@makecaption#1#2{% + \vskip\abovecaptionskip + \sbox\@tempboxa{#1\CaptionSeparator #2}% + \ifdim \wd\@tempboxa >\hsize + #1\CaptionSeparator #2\par + \else + \global \@minipagefalse + \hb@xt@\hsize{\hfil\box\@tempboxa\hfil}% + \fi + \vskip\belowcaptionskip} + \AtBeginDocument{% + \ifx\@makecaption\STD@makecaption + \let\@makecaption\FB@makecaption + \else + \ifx\@makecaption\@undefined\else + \PackageWarning{frenchb.ldf}% + {The definition of \protect\@makecaption\space + has been changed,\MessageBreak + frenchb will NOT customize it;\MessageBreak reported}% + \fi + \fi + \let\FB@makecaption\relax + \let\STD@makecaption\relax} + \expandafter\addto\csname noextras\CurrentOption\endcsname{% + \def\CaptionSeparator{\string:\space}} +\fi +% \end{macrocode} +% +% \begin{macro}{\captionsfrench} +% The macro |\captionsfrench| 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\captionsfrench{\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{captionsfrenchb} +% and \cs{captionsfrancais}.} +% +% \changes{frenchb-1.3c}{1997/10/08}{Added \cs{CaptionSeparator}.} +% +% \changes{frenchb-1.4a}{1999/10/23}{Changed `--' to +% \cs{textendash} in \cs{CaptionSeparator} in case the ligature +% doesn't exist (tt-fonts).} +% +% \changes{frenchb-1.4f}{2000/04/06}{Added \cs{glossaryname}} +% +% \begin{macrocode} +\ifLaTeX +\@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.}}% + \def\CaptionSeparator{\space\textendash\space}% +% \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\glossaryname{Glossaire}% + } +\fi +% \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{french}} +% \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 |\extrasfrench| needs to do is to make sure that +% |\frenchspacing| is in effect. If this is not the case the +% execution of |\noextrasfrench| 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}{\french@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 +% thin space, or as |\@empty|. +% +% \begin{macrocode} +\declare@shorthand{french}{;}{% + \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}{\french@sh@!@} +% \begin{macro}{\french@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{french}{!}{% + \ifhmode + \ifdim\lastskip>\z@ + \unskip\penalty\@M\thinspace + \else + \FDP@thinspace + \fi + \fi + \string!} +% \end{macrocode} +% +% \begin{macrocode} +\declare@shorthand{french}{?}{% + \ifhmode + \ifdim\lastskip>\z@ + \unskip\penalty\@M\thinspace + \else + \FDP@thinspace + \fi + \fi + \string?} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\french@sh@:@} +% +% The `:' requires a normal space before it, instead of +% a |\thinspace|. +% +% \begin{macrocode} +\declare@shorthand{french}{:}{% + \ifhmode + \ifdim\lastskip>\z@ + \unskip\penalty\@M\Fcolonspace + \else + \FDP@colonspace + \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'.} +% +% \changes{frenchb-1.5f}{2001/06/02}{Added a hook to customize +% the space before the colon in French (thin or normal).} +% +% \begin{macro}{\Fcolonspace} +% \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} +\newcommand{\Fcolonspace}{\space} +\def\AutoSpaceBeforeFDP{% + \def\FDP@thinspace{\penalty\@M\thinspace}% + \def\FDP@colonspace{\penalty\@M\Fcolonspace}} +\def\NoAutoSpaceBeforeFDP{\let\FDP@thinspace\@empty + \let\FDP@colonspace\@empty} +\AutoSpaceBeforeFDP +% \end{macrocode} +% \end{macro} +% \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} +% +% \changes{frenchb-1.3}{1997/04/24}{New implementation of guillemets.} +% +% \changes{frenchb-1.4}{1999/07/08}{Add a hook to pick French +% guillemets from any font (suggested by Michel Bovani).} +% +% \changes{frenchb-1.3e}{1999/01/02}{Try to use AMS Cyrillic fonts +% to provide better looking guillemets in OT1 encoding.} +% +% \changes{frenchb-1.6b}{2003/04/05}{Default OT1 guillemets are +% now borrowed from Polish fonts, rather than from wncyr.} +% +% \changes{frenchb-1.6c}{2003/06/30}{OT1 `Polish' guillemets are +% now taken from the LM fonts which will be part of TL8.} +% +% EC/LM fonts and standard PostScript fonts have built-in +% guillemets, we of course use them. CM fonts have no French +% guillemets built-in, so we have to emulate them: +% \begin{itemize} +% \item if a file `t1lmr.fd' is found, we expect the LM fonts +% to be present on the system, so we pick up French guillemets +% from them; before version 1.6b, French guillemets were +% borrowed from the `wncyr' fonts, this has been changed because +% it resulted in a conflict with the russian option of \babel. +% Former Cyrillic guillemets are still available through the +% command |\CyrillicGuillemets| (for backward compatibility). +% \item otherwise we use math symbols, either \LaTeX's `lasy' font +% if available, or \TeX{}~symbols |\ll| and |\gg| otherwise; +% \end{itemize} +% +% The standard names for French quotation marks are |\guillemotleft| +% and |\guillemotright|, these commands are defined in |t1enc.def| +% for T1-encoding. +% In \LaTeXe{} formats, we first define these commands for +% OT1-encoding (for CM fonts), using either the Polish `pl*' fonts +% or \LaTeX{}'s `lasy' fonts. +% Other local text encodings \emph{should} define them too, +% but if they don't, the OT1 definitions will be used. +% The standard PostScript fonts should \emph{always} be used together +% with T1-encoding (\emph{not} OT1), for proper hyphenation and +% built-in (better looking) French quotation marks. +% +% \changes{frenchb-1.2b}{1997/04/24}{Spacing after opening and before +% closing guillemets slightly enlarged and some glue added, +% as suggested by Th.~Bouche. Unlike \cs{kern}, \cs{hskip} doesn't +% inhibit hyphenation, nothing like \cs{allowhyphens} is required.} +% +% The next step is to provide correct spacing after |\guillemotleft| +% and before |\guillemotright| : a space precedes and follows +% quotation marks but no line break is allowed neither \emph{after} +% the opening one, nor \emph{before} the closing one. +% |\guill@spacing| which does the spacing, has been fine tuned by +% Thierry Bouche. +% +% \changes{frenchb-1.3d}{1998/04/20}{Spacing after opening and before +% closing guillemets changed again: normal space with little glue +% (suggested by Th. Bouche).} +% +% The top macros for quotation marks will be called |\og| +% (``\underline{o}uvrez \underline{g}uillemets'') and |\fg| +% (``\underline{f}ermez \underline{g}uillemets'').\\ +% The top level definitions for French quotation marks are switched +% on and off through the |\extrasfrench| |\noextrasfrench| +% mechanism. Outside French, |\og| and |\fg| will typeset standard +% English opening and closing double quotes.\\ +% 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|. +% +% \begin{macro}{\guillemotleft} +% \begin{macro}{\guillemotright} +% \begin{macro}{\og} +% \begin{macro}{\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. +% +% \changes{frenchb-1.2b}{1997/04/24}{Define \cs{xspace} as \relax if +% it is not defined by D. Carlisle `xspace.sty'. Will be used in +% \cs{fg}, and \cs{ieme} ... \cs{ieres} (new for this release).} +% +% \changes{frenchb-1.5f}{2001/04/21}{\cs{og} and \cs{fg} should not +% be expanded when written to a file; use \cs{renewcommand} (in +% \cs{LaTeX}) to redefine them instead of \cs{let} or \cs{def}.} +% +% \begin{macrocode} +\newcommand{\og}{\@empty} +\newcommand{\fg}{\@empty} +% \end{macrocode} +% \begin{macro}{\FrenchGuillemetsFrom} +% \begin{macrocode} +\ifLaTeXe + \def\FrenchGuillemetsFrom#1#2#3#4{% + \DeclareFontEncoding{#1}{}{}% + \DeclareFontSubstitution{#1}{#2}{m}{n}% + \DeclareTextCommand{\guillemotleft}{OT1}{% + {\fontencoding{#1}\fontfamily{#2}\selectfont\char#3}}% + \DeclareTextCommand{\guillemotright}{OT1}{% + {\fontencoding{#1}\fontfamily{#2}\selectfont\char#4}}} +% \end{macrocode} +% \begin{macro}{\CyrillicGuillemets} +% \begin{macro}{\PolishGuillemets} +% \begin{macro}{\LasyGuillemets} +% \begin{macro}{\bbl@frenchguillemets} +% \begin{macro}{\bbl@nonfrenchguillemets} +% \begin{macrocode} + \def\CyrillicGuillemets{\FrenchGuillemetsFrom{OT2}{wncyr}{60}{62}} + \def\PolishGuillemets{\FrenchGuillemetsFrom{T1}{lmr}{19}{20}} + \def\LasyGuillemets{% + \DeclareTextCommand{\guillemotleft}{OT1}{\hbox{% + \fontencoding{U}\fontfamily{lasy}\selectfont(\kern-0.20em(}}% + \DeclareTextCommand{\guillemotright}{OT1}{\hbox{% + \fontencoding{U}\fontfamily{lasy}\selectfont)\kern-0.20em)}}} + \IfFileExists{t1lmr.fd}{\PolishGuillemets}{\LasyGuillemets} + \DeclareTextSymbolDefault{\guillemotleft}{OT1} + \DeclareTextSymbolDefault{\guillemotright}{OT1} + \def\guill@spacing{\penalty\@M\hskip.8\fontdimen2\font + plus.3\fontdimen3\font + minus.8\fontdimen4\font} + \DeclareRobustCommand*{\begin@guill}{\leavevmode + \guillemotleft\penalty\@M\guill@spacing} + \DeclareRobustCommand*{\end@guill}{\ifdim\lastskip>\z@\unskip\fi + \penalty\@M\guill@spacing\guillemotright\xspace} + \AtBeginDocument{\ifx\xspace\@undefined\let\xspace\relax\fi} + \def\bbl@frenchguillemets{\renewcommand{\og}{\begin@guill}% + \renewcommand{\fg}{\end@guill}} + \def\bbl@nonfrenchguillemets{\renewcommand{\og}{``}% + \renewcommand{\fg}{\ifdim\lastskip>\z@\unskip\fi ''}} +% \end{macrocode} +% For \emph{Plain}\TeX, and \LaTeX-2.09 we define |\begin@guill| +% and |\end@guill| using math symbols |\ll| and |\gg|. +% \begin{macrocode} +\else + \def\begin@guill{\leavevmode\raise0.25ex + \hbox{$\scriptscriptstyle\ll$}% + \penalty\@M\hskip.8\fontdimen2\font + plus.3\fontdimen3\font + minus.3\fontdimen4\font} + \def\end@guill{\ifdim\lastskip>\z@\unskip\penalty\@M\fi + \penalty\@M\hskip.8\fontdimen2\font + plus.3\fontdimen3\font minus.3\fontdimen4\font + \raise0.25ex\hbox{$\scriptscriptstyle\gg$}} + \let\xspace\relax + \def\bbl@frenchguillemets{\let\og\begin@guill + \let\fg\end@guill} + \def\bbl@nonfrenchguillemets{\def\og{``}% + \def\fg{\ifdim\lastskip>\z@\unskip\fi ''}} +\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} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \subsection{French lists} +% \label{sec-lists} +% +% \begin{macro}{\bbl@frenchlistspacing} +% \begin{macro}{\bbl@nonfrenchlistspacing} +% Vertical spacing in general lists 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; as most lists are based on +% |\list| we will redefine |\list| (up to version~1.4, the more +% internal command |\@trivlist| was redefined, this ensured that +% all lists would have common settings, but didn't allow the users +% to provide their own settings, as pointed out by P.~Pichaureau). +% If standard LaTeX{} settings are preferred, it is easy to issue +% the command |\FrenchListSpacingfalse| in the preamble or in +% |frenchb.cfg|. Please note that changing the flag +% |\FrenchListSpacing| will \emph{not} take effect immediately, +% but next time language French is switched on. +% +% 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.\\ +% Of course, this code is only for \LaTeX. +% +% \changes{frenchb-1.3}{1997/05/30}{Add a switch to allow \cs{LaTeXe} +% standard settings.} +% +% \changes{frenchb-1.5a}{2001/01/02}{Redefine \cs{list} instead of +% \cs{@trivlist} to provide more freedom to the user, but still +% allow the former way with \cs{ifFrenchOldTrivlist}.} +% +% \changes{frenchb-1.5g}{2001/09/09}{\cs{parskip} is of type `skip', +% its mean value only (not the glue) should be moved from +% \cs{topsep} to \cs{partopsep}: substracting glue can lead to +% weird results. Bug pointed out by Michel Bovani.} +% +% \begin{macrocode} +\newif\ifFrenchListSpacing \FrenchListSpacingtrue +\newif\ifFrenchOldTrivlist +\ifLaTeX + \let\listORI\list +% \end{macrocode} +% |\endlist| is not redefined, but |\endlistORI| is provided for +% the users who prefer to define their own lists from the original +% command, they can code: |\begin{listORI}{}{} \end{listORI}|. +% \begin{macrocode} + \let\endlistORI\endlist + \def\FR@listsettings{% + \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}% +% \end{macrocode} +% |\parskip| is of type `skip', its mean value only (\emph{not +% the glue}) should be substracted from |\topsep| and added to +% |\partopsep|, so convert |\parskip| to a `dimen' using +% |\@tempdima|. +% \begin{macrocode} + \@tempdima=\parskip + \addtolength{\topsep}{-\@tempdima}% + \addtolength{\partopsep}{\@tempdima}}% + \def\listFR#1#2{\listORI{#1}{\FR@listsettings #2}}% +% \end{macrocode} +% Keep the |\@trivlist| redefinition from version 1.4 (only +% for compatibility reasons). The flag |\ifFrenchOldTrivlist| +% could happen to be useful to process older documents. +% \begin{macrocode} + \let\@trivlistORI\@trivlist + \def\@trivlistFR{\FR@listsettings\@trivlistORI} + \def\bbl@frenchlistspacing{\ifFrenchListSpacing\let\list\listFR\fi + \ifFrenchOldTrivlist\let\@trivlist\@trivlistFR + \let\list\listORI\fi} + \def\bbl@nonfrenchlistspacing{\let\list\listORI + \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} +% +% \begin{macro}{\bbl@frenchitemize} +% \begin{macro}{\bbl@nonfrenchitemize} +% The layout of French itemize-lists has changed between version~1.2 +% and~1.3. Jacques Andr\'e and Thierry Bouche pointed out to me +% that vertical spacing between items, before and after the list, +% should \emph{null} with \emph{no glue} added. Moreover +% horizontal spacing was not correct either: the item labels of a +% first level list should be vertically aligned on the paragraph's +% first character (at |\parindent| from the left margin). +% Checking the book ``Lexique des r\`egles typographiques en usage +% \`a l'Imprimerie nationale'' confirmed their points, so the itemize +% environment has been totally redefined for French in version~1.3. +% +% Several people pointed out to me that the layout of lists can +% either be set by the current language or be tuned independently of +% the language as part of the layout of the document. So hooks should +% be provided to switch off the special settings made in |frenchb|. +% Setting |\FrenchItemizeSpacingfalse| \emph{after} loading |frenchb| +% in the preamble switches back to settings of version~1.2 (this can +% be useful to process old documents). If you want all list spacings +% to be exactly what they are in standard \LaTeXe{}, then add also +% |\FrenchListSpacingfalse| in the preamble \emph{after} loading +% |frenchb|. Both switches can also be set in |frenchb.cfg|. +% Please note that changing the flags |\FrenchItemizeSpacing| and +% |\FrenchListSpacing| will \emph{not} take effect immediately, +% but next time language French is switched on. +% +% The \textbullet{} is never used in French itemize-lists, +% a long dash `--' is preferred for all levels. The item label used +% in French is stored in |\FrenchLabelItem}|, it defaults to '--' and +% can be changed using |\renewcommand| (see the example +% configuration file above). +% +% \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.} +% +% \changes{frenchb-1.3}{1997/05/30}{Change -{}- to \cs{textendash}, +% completely redesign the itemize environment in French and add +% a hook to switch back to \cs{LaTeXe} standard itemize lists.} +% +% \changes{frenchb-1.4}{1999/07/08}{\cs{newif} only in LaTeX.} +% +% \changes{frenchb-1.4}{1999/07/08}{Add a hook \cs{FrenchLabelItem} +% which defaults to \cs{textendash}, this was suggested by +% Michel Bovani to allow some customization of label items.} +% +% \changes{frenchb-1.5a}{2001/01/02}{Redesign \cs{itemize} to allow +% users to change the markers of any level in itemize lists.} +% +% \changes{frenchb-1.5g}{2001/09/09}{\cs{parskip} is of type `skip', +% its mean value only (not the glue) should be moved from +% \cs{topsep} to \cs{partopsep}: substracting glue can lead to +% weird results. Bug pointed out by Michel Bovani.} +% +% \begin{macrocode} +\newif\ifFrenchItemizeSpacing \FrenchItemizeSpacingtrue +\ifLaTeX + \newcommand{\FrenchLabelItem}{\textendash} + \newcommand{\Frlabelitemi}{\FrenchLabelItem} + \newcommand{\Frlabelitemii}{\FrenchLabelItem} + \newcommand{\Frlabelitemiii}{\FrenchLabelItem} + \newcommand{\Frlabelitemiv}{\FrenchLabelItem} + \def\bbl@frenchitemize{% + \let\@ltiORI\labelitemi + \let\@ltiiORI\labelitemii + \let\@ltiiiORI\labelitemiii + \let\@ltivORI\labelitemiv + \let\itemizeORI\itemize + \let\labelitemi\Frlabelitemi + \let\labelitemii\Frlabelitemii + \let\labelitemiii\Frlabelitemiii + \let\labelitemiv\Frlabelitemiv + \ifFrenchItemizeSpacing +% \end{macrocode} +% Make sure |\itemize| uses |\@trivlistORI| even with +% |\FrenchOldTrivlisttrue|. +% \begin{macrocode} + \def\itemize{\let\@trivlist\@trivlistORI + \ifnum \@itemdepth >\thr@@\@toodeep\else + \advance\@itemdepth\@ne + \edef\@itemitem{labelitem\romannumeral\the\@itemdepth}% + \expandafter + \listORI + \csname\@itemitem\endcsname + {\settowidth{\labelwidth}{\csname\@itemitem\endcsname}% + \setlength{\leftmargin}{\labelwidth}% + \addtolength{\leftmargin}{\labelsep}% + \ifnum\@listdepth=0 + \setlength{\itemindent}{\parindent}% + \else + \addtolength{\leftmargin}{\parindent}% + \fi + \setlength{\itemsep}{\z@}% + \setlength{\parsep}{\z@}% + \setlength{\topsep}{\z@}% + \setlength{\partopsep}{\z@}% +% \end{macrocode} +% |\parskip| is of type `skip', its mean value only (\emph{not +% the glue}) should be substracted from |\topsep| and added to +% |\partopsep|, so convert |\parskip| to a `dimen' using +% |\@tempdima|. +% \begin{macrocode} + \@tempdima=\parskip + \addtolength{\topsep}{-\@tempdima}% + \addtolength{\partopsep}{\@tempdima}}% + \fi}% + \fi} +% \end{macrocode} +% The user's changes in labelitems are saved when leaving French +% for further use when switching back to French. +% \begin{macrocode} + \def\bbl@nonfrenchitemize{\let\Frlabelitemi\labelitemi + \let\Frlabelitemii\labelitemii + \let\Frlabelitemiii\labelitemiii + \let\Frlabelitemiv\labelitemiv + \let\labelitemi\@ltiORI + \let\labelitemii\@ltiiORI + \let\labelitemiii\@ltiiiORI + \let\labelitemiv\@ltivORI + \let\itemize\itemizeORI} + \expandafter\addto\csname extras\CurrentOption\endcsname{% + \bbl@frenchitemize} + \expandafter\addto\csname noextras\CurrentOption\endcsname{% + \bbl@nonfrenchitemize} +\fi +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \subsection{French indentation of sections} +% \label{sec-indent} +% +% \begin{macro}{\bbl@frenchindent} +% \begin{macro}{\bbl@nonfrenchindent} +% In French the first paragraph of each section should be indented, +% this is another difference with US-English. +% Add this code only in \LaTeX. +% +% \changes{frenchb-1.2}{1996/12/27}{Corrected typo +% \cs{bbl@nonfrenchident}.} +% +% \begin{macrocode} +\ifLaTeX + \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 footnotes} +% +% \changes{frenchb-1.6a}{2003/02/02}{Add two hooks to customize +% footnotes: \cs{AddThinSpaceBeforeFootnotes} and +% \cs{FrenchFootnotes} (suggested by Jacques Andr\'e).} +% +% \begin{macro}{\AddThinSpaceBeforeFootnotes} +% \begin{macro}{\FrenchFootnotes} +% \begin{macro}{\StandardFootnotes} +% |\AddThinSpaceBeforeFootnotes| redefines |\@footnotemark| (whose +% definition is saved at the |\begin{document}| in order to include +% any customization that packages might have done) to add a thinspace +% before the number or symbol calling a footnote (any space typed +% in is removed first). |\AddThinSpaceBeforeFootnotes| has no effect +% on the layout of the footnote itself. Note that |\thanks| in +% |\maketitle| also relies on |\@footnotemark|, so the thinspace +% is added there too. +% +% \changes{frenchb-1.6f}{2003/04/02}{Move \cs{newif} and +% \cs{newdimen} commands outside \cs{ifLaTeXe} ... \cs{fi} +% for compatibility with the plain format.} +% +% \begin{macrocode} +\newif\ifthinspace@FN +\newif\ifFR@fntlayout +\newdimen\parindentFFN +\ifLaTeXe + \newcommand{\AddThinSpaceBeforeFootnotes}{\thinspace@FNtrue} + \AtBeginDocument{\let\@footnotemarkORI\@footnotemark + \def\@footnotemarkFR{\leavevmode\unskip\unkern + \,\@footnotemarkORI}% + \ifthinspace@FN + \let\@footnotemark\@footnotemarkFR + \fi} +% \end{macrocode} +% +% We then define |\@makefntextFR|, a variant of |\@makefntext| +% which is responsible for the layout of footnotes, to match the +% specifications of the French `Imprimerie Nationale': Footnotes +% will be indented by |\parindentFFN|, numbers (if any) typeset on +% the baseline (instead of textsuperscripts) and followed by a dot +% and an half quad space. Whenever symbols are used to number +% footnotes (as in |\thanks| for instance), we switch back to the +% standard layout (the French layout of footnotes is meant for +% footnotes numbered by arabic or roman digits). +% The value of |\parindentFFN| will be defined at the +% |\begin{document}|, as the maximum of |\parindent| and 1.5em. +% +% \begin{macrocode} + \def\ftnISsymbol{\@fnsymbol\c@footnote} + \long\def\@makefntextFR#1{\ifx\thefootnote\ftnISsymbol + \@makefntextORI{#1}% + \else + \parindent=\parindentFFN + \rule\z@\footnotesep + \setbox\@tempboxa\hbox{\@thefnmark}% + \ifdim\wd\@tempboxa>\z@ + \llap{\@thefnmark}.\kern.5em + \fi #1 + \fi}% +% \end{macrocode} +% We now define two commands |\FrenchFootnotes| and +% |\StandardFootnotes| which select French or Standard layout +% for footnotes; we have to save the standard definition of +% |\@makefntext| at the |\begin{document}|, and then redefine +% |\@makefntext| according to the value of an internal flag set +% by |\FrenchFootnotes| and reset by |\StandardFootnotes|. +% \begin{macrocode} + \AtBeginDocument{\parindentFFN=\parindent + \ifdim\parindentFFN<1.5em\parindentFFN=1.5em\fi + \let\@makefntextORI\@makefntext + \long\def\@makefntext#1{% + \ifFR@fntlayout + \@makefntextFR{#1}% + \else + \@makefntextORI{#1}% + \fi + }% + } + \newcommand{\FrenchFootnotes}{\FR@fntlayouttrue} + \newcommand{\StandardFootnotes}{\FR@fntlayoutfalse} +\fi +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \subsection{Formatting numbers} +% \label{sec-numbers} +% +% \changes{frenchb-1.4}{1999/10/02}{Add a hook to let the comma +% be in math mode of type \cs{mathord} in French, as a decimal +% separator should be.} +% +% \changes{frenchb-1.6e}{2003/11/09}{The change from \cs{mathpunct} +% to \cs{mathord} should be encoding independent (suggested by +% Michel Bovani): just strip the highest hexadecimal digit to +% switch from type \cs{mathpunct} to type \cs{mathord}.} +% +% \begin{macro}{\DecimalMathComma} +% \begin{macro}{\StandardMathComma} +% As mentioned in the \TeX{}book p.~134, the comma is of type +% |\mathpunct| in math mode: it is automatically followed by a +% space. This is convenient in lists and intervals but +% unpleasant when the comma is used as a decimal separator +% in French: it has to be entered as |{,}|. +% |\DecimalMathComma| makes the comma be an ordinary character +% (of type |\mathord|) in French \emph{only} (no space added); +% |\StandardMathComma| switches back to the standard behaviour +% of the comma. +% \begin{macrocode} +\newcount\std@mcc +\newcount\dec@mcc +\std@mcc=\mathcode`\, +\dec@mcc=\std@mcc +\@tempcnta=\std@mcc +\divide\@tempcnta by "1000 +\multiply\@tempcnta by "1000 +\advance\dec@mcc by -\@tempcnta +\newcommand{\DecimalMathComma}{\iflanguage{french}% + {\mathcode`\,=\dec@mcc}{}% + \addto\extrasfrench{\mathcode`\,=\dec@mcc}} +\newcommand{\StandardMathComma}{\mathcode`\,=\std@mcc + \addto\extrasfrench{\mathcode`\,=\std@mcc}} +\expandafter\addto\csname noextras\CurrentOption\endcsname{% + \mathcode`\,=\std@mcc} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \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: in math mode, 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 package `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. +% +% \changes{frenchb-1.2b}{1997/04/24}{Extra care taken to handle +% signs properly inside \cs{nombre} in \LaTeXe.} +% +% \changes{frenchb-1.2b}{1997/04/24}{Definition of \cs{nombre} changed +% to correct a bug with moving arguments in \LaTeX-2.09.} +% +% \changes{frenchb-1.4g}{2000/10/07}{Added a new hook +% \cs{ThinSpaceInFrenchNumbers} to have thin spaces instead of +% normal spaces (the default) when formatting French numbers.} +% +% \begin{macrocode} +\mathchardef\m@comma=\dec@mcc +\def\@comma@{\ifmmode\m@comma\else,\fi} +\def\f@thousandsep{\ifmmode\mskip5.5mu\else\penalty\@M\kern.3em\fi} +\def\ThinSpaceInFrenchNumbers{\def\f@thousandsep{% + \ifmmode\mskip3mu\else\penalty\@M\kern.16667em\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} +% +% \changes{frenchb-1.3}{1997/05/24}{Avoid mixing text and math mode +% whenever possible: check if \cs{textminus} and co. are available.} +% Signs can now be entered inside |\nombre|. When |\nombre| is +% used in text-mode, signs should be text symbols to get the +% series, shape... from the current text-font. When signs are not +% available in text-mode, we provide some defaults. +% +% \begin{macrocode} +\providecommand{\textminus}{\textendash} +\providecommand{\textplusminus}{\ensuremath{\pm}} +\providecommand{\textminusplus}{\ensuremath{\mp}} +\def\fb@minus{\ifmmode-\else\textminus\fi} +\def\fb@plusminus{\ifmmode\pm\else\textplusminus\fi} +\def\fb@minusplus{\ifmmode\mp\else\textminusplus\fi} +% \end{macrocode} +% +% \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|. +% +% \changes{frenchb-1.3}{1997/05/24}{Added \cs{@empty} to the +% definitions of \cs{nb@first} and \cs{nb@suite}, as suggested +% by V. Jalby, to cope with possibly empty integer part as in +% \cs{nombre{,123}}.} +% +% \begin{macrocode} +\if@Two@E + \newcommand{\nombre}[2][\decimalsep]{\def\@decimalsep{#1}% + \@@nombre#2\@empty,\@empty,\@nil} +\else + \def\@decimalsep{\decimalsep} + \newcommand{\nombre}[1]{\@nombre#1\@empty,\@empty,\@nil} +\fi +\def\@firstofmany#1#2,{#1} +\def\@@nombre#1,#2,#3\@nil{% + \def\nb@sign{}% + \edef\nb@first{\@firstofmany #1\@empty,}% + \edef\nb@suite{\@secondoftwo #1\@empty,}% + \if+\nb@first \def\nb@sign{+}\fi + \if-\nb@first \def\nb@sign{\fb@minus}\fi + \expandafter\ifx\nb@first\pm \def\nb@sign{\fb@plusminus}\fi + \expandafter\ifx\nb@first\mp \def\nb@sign{\fb@minusplus}\fi + \ifx\@empty\nb@sign + \let\@tmp\nb@suite\edef\nb@suite{\nb@first\@tmp}% + \fi + \nb@sign\expandafter\@nombre\nb@suite#2,#3\@nil} +\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{Dots\dots} +% \label{sec-dots} +% +% \changes{frenchb-1.3}{1997/06/03}{Added this section.} +% \LaTeXe's standard definition of |\dots| in text-mode is +% |\textellipsis| which includes a |\kern| at the end; +% this space is not wanted in some cases (before a closing brace +% for instance) and |\kern| breaks hyphenation of the next word. +% We define |\Frtextellipsis| for French (in \LaTeXe{} only). +% +% \changes{frenchb-1.4c}{1999/11/17}{Bug correction: \cs{xspace} +% didn't work in \cs{dots} without amsmath.sty.} +% The |\if| construction in the \LaTeXe{} definition of |\dots| +% doesn't allow the use of |xspace| (|xspace| is always followed +% by a |\fi|), so we use the AMS-\LaTeX{} construction of |\dots|; +% this has to be done `AtBeginDocument' not to be overwritten +% when \file{amsmath.sty} is loaded after \babel. +% +% \changes{frenchb-1.4d}{2000/02/01}{AMS-LaTeX 2.0 provides a much +% better spacing for \cs{dots} than 1.2, so let's take advantage +% of it when amsmath (up to 1.2 or newer) is loaded.} +% +% \begin{macro}{\Frtextellipsis} +% \begin{macrocode} +\ifLaTeXe + \DeclareTextCommandDefault{\Frtextellipsis}{% + .\kern\fontdimen3\font.\kern\fontdimen3\font.\xspace} +% \end{macrocode} +% |\Mdots@| and |\Tdots@ORI| hold the definitions of |\dots| in +% Math and Text mode. They default to those of amsmath-2.0, and +% will revert to standard \LaTeX{} definitions `AtBeginDocument', +% if amsmath has not been loaded. |\Mdots@| doesn't change when +% switching from/to French, while |\Tdots@| is |\Frtextellipsis| +% in French and |\Tdots@ORI| otherwise. +% \begin{macrocode} + \newcommand{\Tdots@ORI}{\@xp\textellipsis} + \newcommand{\Tdots@}{\Tdots@ORI} + \newcommand{\Mdots@}{\@xp\mdots@} + \AtBeginDocument{\DeclareRobustCommand{\dots}{\relax + \csname\ifmmode M\else T\fi dots@\endcsname}% + \ifx\@xp\@undefined\let\@xp\relax\fi + \ifx\mdots@\@undefined\let\Tdots@ORI\textellipsis + \let\Mdots@\mathellipsis\fi} + \def\bbl@frenchdots{\let\Tdots@\Frtextellipsis} + \def\bbl@nonfrenchdots{\let\Tdots@\Tdots@ORI} + \expandafter\addto\csname extras\CurrentOption\endcsname{% + \bbl@frenchdots} + \expandafter\addto\csname noextras\CurrentOption\endcsname{% + \bbl@nonfrenchdots} +\fi +% \end{macrocode} +% \end{macro} +% +% \subsection{Global layout} +% \label{sec-global} +% +% \changes{frenchb-1.4}{1999/10/03}{Added this section.} +% +% In multilingual documents, some typographic rules must depend +% on the current language (e.g., hyphenation, typesetting of +% numbers, spacing before double punctuation\dots), +% others should, IMHO, be kept global to the document: +% especially the layout of lists (see~\ref{sec-lists}) +% and the indentation of the first paragraph of sections +% (see~\ref{sec-indent}). +% +% \begin{macro}{\FrenchLayout} +% \begin{macro}{\StandardLayout} +% In a multilingual document, a unified look, either the French +% one or the standard one, can be assigned to the whole document: +% adding |\FrenchLayout| will give a global ``French look'' to +% the document (e.g., lists, regardless the current language, will +% be typeset as in French) and |\StandardLayout| forces a global +% ``US-English'' look. +% Both of these commands can only be used \emph{before} the +% |\begin{document}|. +% |\StandardLayout| can also be of interest for class designers +% who do not want |frenchb| to interfere with their global layout +% choices. +% +% As of version~1.4, |\FrenchLayout| and |\StandardLayout| only +% affect: +% \begin{itemize} +% \item the layout of lists (see~\ref{sec-lists}), +% \item the indentation of the first paragraph of sections +% (see~\ref{sec-indent}). +% \end{itemize} +% +% \changes{frenchb-1.6c}{2003/06/30}{Bug correction: the definitions +% of \cs{labelitemi} ... \cs{itemize} need to be saved in +% \cs{StandardLayout}.} +% +% \begin{macrocode} +\ifLaTeXe + \newcommand{\FrenchLayout}{% + \renewcommand{\StandardLayout}{% + \PackageWarning{frenchb.ldf}% + {\protect\StandardLayout\space makes no change\MessageBreak + (\protect\FrenchLayout\space has been selected before + \MessageBreak for the whole document)}% + }% + \AtBeginDocument{\bbl@frenchitemize\bbl@frenchlistspacing + \bbl@frenchindent}% + \let\bbl@nonfrenchitemize\relax + \let\bbl@nonfrenchlistspacing\relax + \let\bbl@nonfrenchindent\relax} + \newcommand{\StandardLayout}{% + \renewcommand{\FrenchLayout}{% + \PackageWarning{frenchb.ldf}% + {\protect\FrenchLayout\space makes no change\MessageBreak + (\protect\StandardLayout\space has been selected before + \MessageBreak for the whole document)}% + }% + \let\@ltiORI\labelitemi + \let\@ltiiORI\labelitemii + \let\@ltiiiORI\labelitemiii + \let\@ltivORI\labelitemiv + \let\itemizeORI\itemize + \let\bbl@frenchitemize\relax + \let\bbl@frenchlistspacing\relax + \let\bbl@frenchindent\relax} + \@onlypreamble\FrenchLayout + \@onlypreamble\StandardLayout +\fi +% \end{macrocode} +% \end{macro} +% \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}.} +% +% \changes{frenchb-1.2b}{1997/04/24}{Use \cs{xspace} to control spacing +% after \cs{ieme} ... \cs{ieres}.} +% +% |\ieme| is provided for compatibility with |francais.sty|, +% the other 5 for compatibility with |french.sty|: +% \begin{macrocode} +\def\ieme{\up{\lowercase{e}}\xspace} +\def\iemes{\up{\lowercase{es}}\xspace} +\def\ier{\up{\lowercase{er}}\xspace} +\def\iers{\up{\lowercase{ers}}\xspace} +\def\iere{\up{\lowercase{re}}\xspace} +\def\ieres{\up{\lowercase{res}}\xspace} +% \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} +% +% \changes{frenchb-1.3c}{1997/10/08}{Typos corrected: quatro, fquatro} +% +% Typing |\primo| should result in `$1^{\rm o}$\kern+.3em', +% \begin{macrocode} +\def\primo{\FrenchEnumerate1} +\def\secundo{\FrenchEnumerate2} +\def\tertio{\FrenchEnumerate3} +\def\quarto{\FrenchEnumerate4} +% \end{macrocode} +% while typing |\fprimo)| gives `1$^{\rm o}$)\kern+.3em. +% \begin{macrocode} +\def\fprimo){\FrenchPopularEnumerate1} +\def\fsecundo){\FrenchPopularEnumerate2} +\def\ftertio){\FrenchPopularEnumerate3} +\def\fquarto){\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}.} +% +% \changes{frenchb-1.3}{1997/05/24}{Use \cs{textbackslash} to define +% \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|. +% +% \changes{frenchb-1.3}{1997/05/24}{Use \cs{r{}} to access the +% character `degree', as suggested by V. Jalby.} +% +% |\degre| needs a special treatment: it is |\char6| +% in T1-encoding and |\char23| in OT1-encoding, both can be +% accessed by the command |\r{}| for ring accent. +% +% \changes{frenchb-1.1}{1996/03/03}{Do not use commands related to +% encodings outside \LaTeXe.} +% +% \changes{frenchb-1.4}{1999/10/03}{Add definitions for \cs{at}, +% \cs{circonflexe} and \cs{tild} in other encodings (mlTeX's LO1).} +% +% \begin{macrocode} +\ifLaTeXe + \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{\at}{T1}{64} + \DeclareTextSymbol{\at}{OT1}{64} + \DeclareTextSymbol{\circonflexe}{T1}{94} + \DeclareTextSymbol{\circonflexe}{OT1}{94} + \DeclareTextSymbol{\tild}{T1}{126} + \DeclareTextSymbol{\tild}{OT1}{126} + \DeclareTextSymbolDefault{\at}{OT1} + \DeclareTextSymbolDefault{\circonflexe}{OT1} + \DeclareTextSymbolDefault{\tild}{OT1} + \DeclareRobustCommand*{\boi}{\textbackslash} + \DeclareRobustCommand*{\degre}{\r{}} +\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} +% We now define a macro |\degres| for typesetting the abbreviation +% for `degrees' (as in `degrees Celsius'). As the bounding box of +% the character `degree' has \emph{very} different widths in CM/EC +% 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|). +% +% If the \TeX{} Companion fonts are available (\file{textcomp.sty}), +% we pick up |\textdegree| from them instead of using emulating +% `degrees' from the |\r{}| accent. Otherwise we overwrite the +% (poor) definition of |\textdegree| given in \file{latin1.def}, +% \file{applemac.def} etc. (called by \file{inputenc.sty}) by +% our definition of |\degres|. We also advice the user (once only) +% to use TS1-encoding. +% +% \changes{frenchb-1.1}{1996/01/25}{Fixed width bounding box for +% correct spacing with both CM, EC and PostScript fonts} +% +% \changes{frenchb-1.1}{1996/05/31}{Added \cs{leavevmode} in the +% \cs{degres}'s definition} +% +% \changes{frenchb-1.6a}{2003/02/02}{Replace \cs{degres} by +% \cs{textdegree} from textcomp.sty when possible (suggested +% by Michel Bovani).} +% +% \changes{frenchb-1.6g}{2005/02/06}{Add \cs{hbox} in the definition +% of \cs{degres} when textcomp.sty is loaded, so that \cs{degres} +% can be used in math mode.} +% +% \begin{macrocode} +\ifLaTeXe + \def\Warning@degree@TSone{% + \PackageWarning{frenchb.ldf}{% + Degrees would look better in TS1-encoding: + \MessageBreak add \protect + \usepackage{textcomp} to the preamble. + \MessageBreak Degrees used}} + \AtBeginDocument{\expandafter\ifx\csname M@TS1\endcsname\relax + \DeclareRobustCommand*{\degres}{% + \leavevmode\hbox to 0.3em{\hss\degre\hss}% + \Warning@degree@TSone + \global\let\Warning@degree@TSone\relax}% + \let\textdegree\degres + \else + \DeclareRobustCommand*{\degres}{% + \hbox{\UseTextSymbol{TS1}{\textdegree}}}% + \fi} +\else + \DeclareRobustCommand*{\degres}{% + \leavevmode\hbox to 0.3em{\hss\degre\hss}} +\fi +% \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} +\ifLaTeXe + \AtBeginDocument{% + \ifx\csubinverse\@undefined + \DeclareTextCompositeCommand{\^}{OT1}{i}{\^\i}% + \DeclareTextCompositeCommand{\"}{OT1}{i}{\"\i}% + \fi} +\fi +% \end{macrocode} +% +% \subsection{Date and clean up} +% +% \begin{macro}{\datefrench} +% The macro |\datefrench| redefines the command |\today| to +% produce French dates. +% +% \changes{frenchb-1.2}{1997/01/05}{Added aliases \cs{datefrenchb} +% and \cs{datefrancais}. Use \cs{ier} instead of \cs{up}.} +% +% \changes{frenchb-1.3b}{1997/10/01}{Use \cs{edef} to define +% \cs{today} to save memory} +% +% \changes{frenchb-1.3d}{1998/07/04}{Move this code to the end +% of file, until \cs{ier} is defined (due to use of \cs{edef}); +% expansion of \cs{ier} has to be stopped anyway.} +% +% \changes{frenchb-1.3g}{1999/08/18}{Replaced \cs{edef} with \cs{def} +% to prevent problems with unexpandable accent commands} +% +% \changes{frenchb-1.4d}{2000/02/01}{Changed \cs{noexpand}\cs{ier} +% to \cs{ier}, as a result of the replacement of \cs{edef} by +% \cs{def}, see previous change. Also add braces around \cs{ier} +% for xspace.sty.} +% +% \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}} +% \end{macrocode} +% \end{macro} +% +% The macro |\ldf@quit| takes care for setting the main language +% to be switched on at |\begin{document}| and resetting the +% category code of \texttt{@} to its original value. +% The config file searched for has to be `frenchb.cfg', and +% |\CurrentOption| has been set to `french', so +% |\ldf@finish\CurrentOption| cannot be used: we first load +% `frenchb.cfg' (in LaTeX2e only), then call +% |\ldf@quit\CurrentOption|. +% The macro-space used by some control sequences we do not +% need any longer, is freed. +% +% \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}.} +% +% \changes{frenchb-1.5d}{2001/02/16}{Load frenchb.cfg first and +% change \cs{ldf@finish} to \cs{ldf@quit}.} +% +% \changes{frenchb-1.6g}{2005/02/06}{frenchb.cfg is now loaded only +% with LaTeX2e, as the customization makes sense only in LaTeX2e. +% Suggested by J.F. Burnol.} +% +% \begin{macrocode} +\ifLaTeXe + \loadlocalcfg{frenchb} +\fi +\let\T@one\relax +\let\@FI@\relax +\let\ifLaTeX\@undefined +\let\LaTeXtrue\@undefined +\let\LaTeXfalse\@undefined +\let\ifLaTeXe\@undefined +\let\LaTeXetrue\@undefined +\let\LaTeXefalse\@undefined +\ldf@quit\CurrentOption +%</code> +% \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 |