% This is french_doc.pdf (informations en francais dans % efrench.pdf et faq.pdf) % % As e-French since 2010 under LPPL Copyright. %.................................................................... % Copyright GUTenberg-Gaulle 1992-1998, Bernard Gaulle 1999-2007: % ============================================================== % % En tant qu'e-French sous Copypright LPPL depuis 2010. %.................................................................... % Copyright Gaulle-GUTenberg 1992-1998, B. Gaulle 1999-2007. % ========================================================= %.........................................................................V2.5 %.................................................................... % NOTICE that this work was done without any formal support. % Friendly helps, supports as well as sponsors are welcome! %.................................................................... %\def\ds@le{\input frenchle.sty}% % % french.sty was developped by Bernard GAULLE for French-Speaking Users % This file is now a part of the e-French package. % For more details please read efrench.pdf %\expandafter\ifx\csname frenchTeXmods\endcsname\relax% %\else \endinput \fi% \def\frenchname{french}% \def\frenchpack{e-french}% eFrench \def\ds@french{}% \def\ds@pmfrench{\pmfrench}% {\catcode`\@=11{% \ifx\@unexpandable@protect\undefined\let\protect\empty% \else\let\protect\@unexpandable@protect% \fi% \xdef\FSfd{6 septembre 2019}% eFrench \xdef\FSfv{V6,11}% \xdef\frenchstyleid{\FSfv\space-- \FSfd\space --}% }}% \edef\FSfd{2019/09/06}% % % History as given by Bernard Gaulle: % I started this job years ago (in 1989) firstly % using ideas by Jacques DESARMENIEN, the French pioneer and also by % Eric PICHERAL (CICB, Rennes), Nicolas BROUARD (INED, Paris), % Marc SHAPIRO (INRIA, Rocquencourt), Raymond SEROUL (Lab Typo. Strasbourg), % Philippe LOUARN (IRISA, Rennes), Olivier NICOLE (INRA, Jouy), % Rainer SCH\"OPF (Uni. Mainz), Johannes BRAAMS (PTT, NL) and others. % I stopped to collect the names of the good guys in 1991 when i decided % to make a seriously enhanced & rewritten distribution i released as V3.0. % %% Free gift to GUTenberg (Frenchspeaking TeX Users Group) %% during 12 years. (Groupe francophone des Utilisateurs de TeX). %% Shareware since january 2001 (Version 5,00). % % Send suggestions/bug reports/corrections to the maintainer of e-French: % Laurent Bloch, lb@laurentbloch.org % (http://www.laurent-bloch.org/spip.php?article166) % % Canonical Archives server is: www.gutenberg.eu.org % (in /pub/GUTenberg/french) % where these files are archived. % % Running only with LaTeX2e, oldest format required: \NeedsTeXFormat{LaTeX2e}[1996/12/01]% -the latest one acceptable % > utf8 specialities % These specifications are here to facilitate the use of % french guillemets with a XeLaTex motor under utf8 \newif\ifeF@NoEnc %No encoding (XeTex, LuaLaTex) \expandafter\expandafter \expandafter\ifx\csname XeTeXrevision\endcsname\relax \else \eF@NoEnctrue \fi % \newif\ifeF@LuaTeX \expandafter\ifx\csname lualatexversion\endcsname\relax \else \eF@LuaTeXtrue \eF@NoEnctrue \fi % this is in order having some accomodations with \XeTeXinterchartokenstate \newif\ifeFr@Typo\eFr@Typotrue % In order having no encoding by messages declare this : \let\kbencoding\@gobble % < utf8 specialities \let\auxWARNINGi=\@gobble% -accept aux files produced by french % This style is using, at most: %%< %%> 577 strings out of 11731 (4.9%); %%> 4675 string characters out of 85497 (5.4%); %%> 11217 words of memory out of 262141 (4.2%); %%> 567 multiletter control sequences out of 9500 (5.9%). % % (I used usual teTeX with option mltex). % % Lastest updates (previous updates infos in history file) % =============== % V5,995 % Released --bg 2005/04/18 % \XeTeXinputencoding is no more running: supporting % XeTeX is now differed. Jonathan Kew informed. --bg 2005/12/25 % V5,996 patch to allow \label to run in math mode. --bg 2005/09/09 % Reported by Simon Pierre Desrosiers. % % \captionseparator is off with memoir.cls, --bg 2005/10/08 % use \captiondelim. % Reported by Frederic Connes. % % Patch for relsize [2003/07/04 ver 3.1] to avoid messages when % the smallest size is less than de default of 6pt. --bg 2005/12/22 % Reported by Frederic Connes. % % Patch for nomencl.sty which force \kbtypeout to be % called from \item in an unexpandable environment and % then producing an undefined \f@tempa break. So i add % \nofrenchwarnings in \printnomenclature. The problem % was reported by J.B. Moreau. --bg 2006/01/19 % % Released 2006/03/25 % V5,997 Emergency message added when frlicense.dat is empty. % Change in tabbing environnement: \tabbingaccents is % now the default in French since 8bits chars in T1 % are always converted to 7bits chars "a la TeX". % \notabbingaccents added in \nofrenchtypography. % The pb was reported by Frederic Petit. 2006/04/25 % V5,998 Released - new production scheme. 2006/07/04 % V5,999 Patch for frenchle: ## illegal parameter in \@tempa (\') ? % issuing message with superfluous double \string (\@w@s). 2006/08/15 % Natbib correction: bibitem macro was one oboslate of % jurabib. Jurabib bibitem macro obsolate and misplaced. % Full code revisited. 2006/08/18 % Released 2006/08/25 % V5,9991 When FrenchPro is called from babel(fr) all given options % should not be processed by the msg package, so we call msg % saying it's an \intern@lc@llfrom{FrenchPro} and it has to % use the French language. % But don't force French when calling from kernel. 2006/10/03 % V5,9992 German localisation completed, thanks To Werner Struchmann. % 2006/10/13 % V5,9993 Empty \caption was not processed correctly and thus the % the caption separator was erroneously printed. 2007/02/09 % \texttt is now robust, avoiding wrong expansion in title % heads especially. % \MakeRobustCommand now creating \cmd_fp in place of % \cmd_. (a LaTeX robust command can be made robust for % FrenchPro too). 2007/02/11 % % V5,9994 Correction for empty caption didn't run with hyperref. In % a first step i remove the modification and will try to % find the good mod to avoid the \captionseparator be % printed. 2007/06/28 % % and also check if there is any frpatch.sty file available. % %%%%%%%%%%%%%%%%%%%%%%% % Distributed as eFrench under LPPL is same as version 5,9994 % but without the test for a shareware licence % Changes made by Raymond Juillerat 2010/05/04 % % V5,9995 Some changes because a problem arose with the language arabic % in that case, the language switch \arabic was in conflict with the % arabic format for numbers, also \arabic. % Therefore in this version, the switch is to be made with \arabicLang, but % the configuration file for the language arabic is as usual \arabicTeXmods. % These changes affect all languages were \ already % exists and would enter in conflict with. Language switch is made with % \Lang and the context is defined with \TeXmods. % Same changes were made in frenchle % Changes made by Raymond Juillerat 2011/09/26 % % V6,0 The reading of *languages.dat* has been reduced to french and % english suppressing the problem with \arabic. This reduction is % possible because eFrench is not compatible with babel but needs the % hyphenations rules for french and english. For german or ngerman, % the mlp module is responsible for finding the hyphenation. % This is possible because german or ngerman and french are the only % language style running without babel. % For babel there are other versions of these language packages. % Changes made by Raymond Juillerat 2015/10/30 % V6,01 % Correction of \originaloutput % Changes made by Raymond Juillerat 2017/02/24 % \newcount, \newdimen, \newbox only not redefind if from eTeX % Changes made by Raymond Juillerat 2017/08/10 % V6,02 % some preparations for XeLaTeX and LuaLaTeX % New file efrenchu.tex in order having utf8 french guillemets % active. % This file corrects also the hyphenation problem with apostroph % Problems with LuaLaTex remain but by using msg.sty! % Changes made by Raymond Juillerat 2019/01/07 % V6,1 % Changes made necessary because of BibLaTeX and Interchartoks % Changes made by Raymond Juillerat 2019/03/08 % V6,101 % Two minor corrections by interchartoks % Changes made by Raymond Juillerat 2019/05/30 % V6,11 % Possibility of choice for non-breakable spaces: % - as made by Bernard Gaulle (fine spaces except for guillemets) % - as required by the Imprimerie Nationale de France % (fine spaces only for ; ! ? full for : << and >>) % - only fine spaces like in Guide du Typographe % and choice of the fine space defined by the user % Changes made by Raymond Juillerat 2019/09/06 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % Object: DOCUMENT CLASS OPTION for printing French texts with TeX or LaTeX % as well as english. (or multilingual texts in which French is the % main language). %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % It can be called: % via \usepackage{french} % french is alone % or \usepackage[french]{mlp} % using The Multi-Lingual Package % or as an option of \documentclass, when using mlp. % % Commands to be used by the end users: % ==================================== % \frenchtest between \document.... and \end{document} will run % the LaTeX "Torture Test" (see french*.tex files). % \frenchdoc between \document..... and \end{document} will compose % the LaTeX documentation (see frenchlu.tex file). % \french Apply French conventions including hyphenation, % typography, page layout, titles inside documents and % few other things helping when typing a document. % This is the default language. % \begin{french}...\end{french} to bind the French text with LaTeX. % \french ... \endfrench with TeX. % \pmfrench (preambule command) ... the poor man way % (or \usepackage{pmfrench} vi pmfrench.sty) % to let the French style run even the TeX motor % (ie format) was not installed or configured in a way to % use the French language (hyphenation, language.dat,...) % Be aware that a lot of things might not provide their % usual featuring. Notice also that then the following % commands do nothing: % - \noeveryparguillemets % - \lettrine and \flettrine % - \abbreviations and "..." % - \frhyphex % \usersfrenchoptions{.. French options ..} to allow the user to change the % default options. All options given inside braces remain % active all along the document inside language French. % This command can be reused, provided arguments are % then cumulated. % \english for going back to "normal" English conventions % And if you have a language.dat config file defining % german languages, as it is normally the case. % \beginFWdirection switch to the first direction of writing when TeX--XeT. %-------------------- % Commands for compatibility: % % \inferieura is the original less than sign (<) % \superieura is the original greater than sign (>) % \pointvirgule is the original ";" % \deuxpoints is the original ":" % \pointexclamation is the original "!" % \pointinterrogation is the original "?" % \lq and \rq stands for ` and ' % ^\prime stands for ' in maths % \lqq and \rqq stands for `` and '' % \dittomark stands for " % % \originalinput{file_of_code} is supplied to input any code that might be % incompatible with the French style. % You can also disable the French style using: % \begin{nonfrench}...\end{nonfrench} with LaTeX % \nonfrench..........\endnonfrench with plain TeX % \originaloutput[file]{text} is supplied to output any text that would % otherwise generate expanded macros for activated chars % instead of original characters. "file" is a stream % number related to open file defined by \newwrite. % \def\encodingdefault{...} can be set to "T1" or "OT1" to change the default % font encoding that is normally set in the format % (with initex material and specially kbconfig.tex) %-------------------- % \frhyphex Reload once French hyphenation exceptions file from % language.dat (give this order in the preambule) % Not usable with plain (or low level languages). % \frenchhyphenation Apply French rules on hyphenation: % - as stated in the patterns file % - with exceptions as established by \hyphenation % - of words starting with one upper case letter % and also allows accent macros in \hyphenation % or \showhyphens. % \nofrenchhyphenation Nullify former actions % % Other commands for hyphenation that remains unchanged over \french reinit. % % \allowhyphens allow the following word to be hyphenated (useful % sepcially in the second part of a compund word. % \allowuchyph allow hyphenation of words starting with a capital % letter (this is the default as in plain & lplain) % \allowfulluchyph allow it even if a \hbox would normally forbid it in % the present code. % \disallowuchyph forbid it (this is my own recommandation) % \tthyphenation allow hyphenation of words in the present \tt font % \notthyphenation disallow hyphenation of words in the present \tt font % (never saved; last value in a \par is that which works; % default value is that given by the main doc-style; % presumely the default -if not: tell me \tthyphenation; % this is the default in lplain.tex) %-------------------- % \frenchtypography Apply French typography (spacing) on : % - double punctuation ! ? ; : % - guillemets (<< >>).Use \endguillemets instead of >> % for ending 2 levels of guill. at the same time or % when the ("everypar") open guillemets were ended in % a previous inner environnement. % Italic correction automatically added if necessary. % - footnote marks in the text and minipages. % - footnote references (\refmark). % - thanks in titles. % Print footnote number in the same font as the footnote % text followed by a dot and appropriate spacing. When % used in table environment footnote marks are typeset % as in a minipage. % Italicize the caption text (using \captionfont defaultly % set to \emph). % Change caption separator (":" replaced by value of % \captionseparator which default is "~--") % Suboption: \frenchmathcomma % Remove space after coma in math mode (default) % \regularmathcomma % to set space, as usual after comma in math mode. % (chosen option is used to print numbers with \nombre). % \originalmathcomma % to reset coma mathcode as before FrenchPro wass called. % Suboption: \unnumberedcaptions{figure/table} to remove headings in % caption tiltles. This is a global suboption. % It nullify the according \listof...(figures/tables). % It can be used only once. Can't be turned back later % in French. % Hyphenate correctly. (The lowest level of application % is the paragraph.) % Discourage page breaking after ``:'' % Forbid line breaking before double punctuation and >> % and after <<. % Suboption: \noTeXdots will change them to 3 closed dots % \TeXdots leave \dots, \ldots as well known TeX dots (default) % Suboption: \nofrenchguillemets stops producing French guillemets. % \frenchguillemets starts producing French guillemets (default) % Suboption: \ancientguillemets start every paragraph of second level % guillemets with closing >> instead of <<. % \todayguillemets normal way at the present time (default) % Suboption: \noguillemetsinarrays will print << or >> in standard arrays % textual modes (depending of the font used). % \guillemetsinarrays is the usual default value. % Suboption: \guillemetsinallfonts allows to print them in any font but % \guillemetsinroman remains the usual default value. % Suboption: \guillemetsfont allows, when in a T1 font encoding running % scheme to choose the font for guillemets, just define or % redefine \guillemetsfont. % Command: \endguillemets ends levels 2 & 1 at the same time (i.e. >>>>) % Suboption: \noenglishquote replace TeX ` ' quotes AND apostrophes % by accents ` ' (to use only temporary). % Do nothing inside a tabbing environement. % \...code and \char become unusable asis. % \englishquote is the default % Suboption: \noenglishdoublequotes for replacing `` with << and '' with >> % Do nothing inside a tabbing environement. % \...code and \char become unusable asis. % \englishdoublequotes normal quoting ``...'' is the default % Suboption: \untypedspaces force a space where normally French people % type one (before ; : ? ! >> and after <<) % \typedspaces is the default value % Suboption: \tabbingaccents allow to put \` and \' diactrics on letters % when used in tabbing environment. \' and \` remain their % original tabbing usage if followed by a blank space. % Also usefull for 8bits chars ; this is the default. % \notabbingaccents is the usual LaTeX usage. % Suboption: \idotless suppress point on i when accented with ^ and " % \iwithdot is the default % Suboption: \EBCDICbrackets replace non-math mode < ... > by [ ... ] % (..IBM has no brackets so < and > are often used as brackets) % \normalbrackets is the default % Suboption: \letpunctutionactivefor to use allways with something else % (like \wrongtypedspaces), let punctuation (! : ; ?) active % after French style. Caution: it's extremly dangerous! % (specify the suboptions after \frenchtypography) % (sub-options are not saved/restored over a language switch) % \nofrenchtypography Nullify former actions % Suboption: \wrongtypedspaces suppress spaces before double punctuation % (! : ; ?) which was erroneously typed \`a la fran\c caise. % \text{...} Allows to typeset text in math mode (AmS like command). %-------------------- % \ConstantLayout is a one time macro that disallow to change page layout % and any other typographic feature when switching to another % language. Once used in any language it is applied for the % whole document. % \frenchlayout Apply: % - indentation of all (first LaTeX) paragraphs: % Suboption: \indentfirst is the default or % \nonindentfirst which forces no indentation at all. % - set item markers as --. User can choose others % markers via the command % \frlabelitems{\renewcommand{\labelitemi}...}. % Look at documentation for more details and specially % for the use of \checkitemguillemets. % - reset section counter when starting a part. % Suboption: \noresetatpart nullify the former action. % Suboption: \noresetatchapter will not reset footnote counter at chapter % change. % Suboption: \frenchtrivsep sets (reduced) vertical spacing in lists, this % is the default. As this spacing is forced warning % message is issued when other spacing is user % expected. Look at \frenchwarnings part. % You can choose your own values by setting the lengths % with the command \frtrivseplengths{\setlength...}. % In that case no warning message is issued. % \nofrenchtrivsep resets the standard spacing in lists. % - special spacing with the experimental "order" list. % - print table footnotes as in minipages. % - print a coma between consecutive footnotes. % Suboption: \frenchpagestyle apply a French pagestyle when starting a % Part or a Chapter or an Index (provides \printindex) % \nofrenchpagestyle will not. % Suboption: \beginingfolio print the folio on theses pages (default) % \nobeginingfolio will not. % - modify thebibliography environnement to be referred % in toc and have a valid anchor in hyperref docs. % - with letter.sty: address placement, typeset \closing % as a paragraph and with \fclosing in place of % closing you can chose spacing between closing and % signature by saying \fclosing[n]{...} with n being % the number of \medskipamount (default is 9). % to typeset the date with \location{Paris, le ...} % \yourref{...} to refer to a received letter % \ourref{...} for your own reference % \object{...} to precise the object % \PS{...} for a post-scriptum % \email{...} for the email address % \def\formhead{...} for the odd page headings % (not operational with \nopagenumbers) % \def\formfoot{...} for the odd page footings % (not operational with \nopagenumbers) % \wideletter to enlarge the default linewidth. % - offer macros for starting paragraphs with a dropped % initial capital letter: % with \lettrine the first letter of the first % token will be dropped. (warning: in 7-bit % write {\c C} for example). Remaining part % of the token in printed in small caps. % with \flettrine a box will be printed around. % Generic syntax: % \lettrine{Begining of the paragraph} % \flettrine{Begining of the paragraph} % or \lettrine[<< {Begining} >>] (let spacing!) % \flettrine[<< {Begining} >>] (ending >> might % be given later in the text) % \lettrine or \flettrine START a paragraph! And % to avoid any problem the paragrpah must end with an % explicit \par. This is a fragile macro! % Suboption: \noautomaticlettrine (default) processing; % the lettrine uses a standard LaTeX font size. % You can use \lettrinefont to define the font you % want at the size you want. As default \lettrinefont % is set to \Huge. % Use \def\lettrinehang{n} to force hanging of n % lines (there is no default value). % \automaticlettrine processing: the lettrine uses a computed % font size. % You can use \lettrinefontname to set the font % (default is current font) and it will start the % \automaticlettrine feature that means a new value % of \lettrinefont is established (font-size). % \lettrinehang is defaultly set to 2 lines and % can be changed. % The \automaticlettrine feature can be stoped by % calling \noautomaticlettrine. % Suboption: \everyparguillemets open guillemets on every paragraph % until closing and do nothing at level 2. % This is the default. % \everyparguillemetsremoved switch off the previous feature. % \noeveryparguillemets don't start each par with guillemets % but start each level 2 line with them. % \guillemets is forbidden, use 7/8bit % guillemets chars. % (see documentation for further explanations) % Suboption: \overfullhboxmark print the TeX black box exactly where there % is an overfull hbox (as draft option do) % \nooverfullhboxmark is the default in LaTeX % Suboption: \labelsinmargin put labels in margin for debugging purposes % This option can be used anywhere (outside % \frenchlayout as well as \french environment) % \nolabelsinmargin is the default % % Propose the following environments: % % Environment \begin{drapeaufg}...\end{drapeaufg} to typeset raggedright % with hyphenation. % Environment \begin{drapeaufgIN}...\end{drapeaufgIN} to typeset raggedright % without hyphenation (rules of Imprimerie Nationale) % As text is never split and overfull can occur % you may have to split lines by hand. % Environment \begin{drapeaufd}...\end{drapeaufd} to typeset raggedleft % with hyphenation. % Environment \begin{drapeaufdIN}...\end{drapeaufdIN} to typeset raggedleft % without hyphenation (rules of Imprimerie Nationale) % Text printed past the line limit may occur. % Environment \begin{order}...\end{order} to enumerate items with % via \primo \secundo etc. and with sepcial spacing % Environment \begin{figurette}...\end{figurette} to place a (little) % figure EXACTLY here. % Environment \begin{versatim}...\end{versatim} to print verbatim % but with hyphenation typeset as in \verse and with % \noenglishquote and \noenglishdoublequotes available % Commands: \vers|...| the inline (or intext) vserion of "versatim" % \verbatimfile{filename} the filename is inputed in verbatim % BUGED!! (\nopagenumbers reintroduced if undefined) % \nofrenchlayout Nullify former actions %-------------------- % \frenchtranslation . Translate all English titles used in LaTeX, to french % and generate French dates. This is the default. % All things should normally run with std LaTeX or Babel. % You can also create your own styles using these captions % A lot of captions are newly defined for letters. % You can also change the titles with your own definitions % by using \fraddto\captionsfrench{\..name}{title}. % Environment \begin{resume}...\end{resume} to print an abstract % . \resume has been defined for French abstracts (we often % need French and English abstracts together). You must % be in \french before using it. (like you are in \english % when you use \begin{abstract}...\end{abstract}). % Environment \begin{motsclef}...\end{motsclef} to print a keywords list. % . \motsclef has been defined for French keywords. % (Environment \begin{keywords}...\end{keywords} to print a keywords list) % (by the way i have defined \keywords \endkeywords) % . \sommaire is defined as a toc in front of a document. % \sommaire[1] don't print paragraphs entries and below. % \sommaire[2] don't print subsubsection entries and below % \sommaire[3] don't print subsection entries and below, % this is the default for \sommaire. % \sommaire[4] don't print section entries and below, % . \annexe and \annexes have been defined. % . \glossaire and \glossaires have been defined. If the % "theglossary" is undefined, allow: % \printglossary[filename] (default is jobname.gls % produced by pgm "makeindex -s gglo.ist") % NB: code preferably \glossary{[name :] explanation} % and: without makeindex allow to code jobname.glo % (instead of .gls) & print something acceptable. % . makeidx.sty is included and translated. % . \seealso is defined for indexes. % \nofrenchtranslation Nullify former actions. %-------------------- % \frenchmacros Add a lot of macros to help in typographic process. % \ier for printing 1\ier (premier) (examples) % \iere for printing 1\iere (premiere) % \ieme for printing 2\ieme (deuxieme) % and their plurials \iers, \ieres and \iemes. % \FileName{file_name} for 8bit file names, then % use it by calling \theFileName (e.g with \input). % \WindowsUnits{name1=A,...,namen=N} to define macros % names to assign to Windows units which will be called % in any input file process (\name1: ... \nameN:) % protecting from the activated colon character. % \at for printing @ (at) % \vert for printing | (vertical bar) % \chap for printing ^ (hat or circonflexe) % \backslash for \ (backslash) % \tilde for printing ~ (tilde) % \nombre for printing large numbers and have the correct % spacing (p.ex. \nombre{123 456,789 012}) % \numero for printing (no) % \Numero for printing (No) % as well as \numeros and \Numeros % \degres for printing (degrees) % \leftguillemets for << (unbalanced left guillemets) % \rightguillemets for >> (unbal. right guillemets) % \fup{X} to put X in a smaller size supscript % \primo \secundo \tertio \quarto \quando={n} % [or:\primo) \secundo) \tertio) \quarto) not recommanded] % \fsc{name} or \fsc{NAME} will print as \textsc{Name} % \fsc*{name} or \fsc*{NAME} forces use of \rmfamily % \lsc{name} or \lsc{NAME} will print as \textsc{name} % \lsc*{name} or \lsc*{NAME} forces use of \rmfamily % \refmark{X} stands for \footnotemark[\ref{X}] % \moretolerance will double each TeX tolerance within % any chosen grouping (useful in narrow situations). % \Sauter#Lignes will skip # lines (for specific usage) % \! (negative thin space) run in non math mode % \frenchalias\your_short_name\the_long_french_macro_name % to give a short name to a very long macro name. % Suboption: \abbreviations allowing to ask for: "name_to_be_abbreviated" % will print abbreviation if found otherwise will give a % warning and print the name asis. The first char. of % "name" is not compared, except if the abbreviation file % contains {Name}. Customisation is allowed like this: % \abbreviations[my_abbrev_file] % \noabbreviations is the default option % \nofrenchmacros Nullify former actions % % Some complemetary macros used in other parts: % \ordinal{counter} gives "premier", "deuxieme", ... "vingtieme" % \Ordinal{counter} gives "Premier", "deuxieme" ... % \ordinale{counter} gives "premi\`ere", ... % \Ordinale{counter} gives "Premi\`ere", ... % % Macros to output messages: % \kbtypeout{msg} issue msg on console, translating or not % the accent macros and not expanding the activated chars. % Under control of \@kbspecials for 8-bit output % translation possibility. Such package like % kbconfig/keyboard can translate to the % appropriate keyboard encoding. In fact \kbtypeout is % equivallent to \kbIO[\typeout]. % \kbIO[output_macro]{msg_text} allows to output the message % either on log file (\wlog), or on console (\tyepout) % or even on any file (\immediate\write...) % %-------------------- % \frenchwarnings let french issue its warnings, this is the default. This % part has the followings sub-options: % Suboption: \frenchtrivsepwarnings let french inform the user when % vertical spacing is not respected as requested in % a non-standard environment. This is the default % Suboption: \nofrenchtrivsepwarnings ask french not to issue any warning % regarding the vertical spacing requested by the % user and not applied. This is the default when user % choose his own values for spacing via \frtrivseplengths. % \nofrenchwarnings instruct french to stop to issue messages. % This syntax is probably not the final one. %-------------------- % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % =============================== % | About typing | % =============================== %% No code here, just an advice. %% %% Inputing French punctuation you must type a space: %% - before a double punctuation (! ? ; :) %% - before >> %% - after << ; : %% Double " or single quoting ` ' as well as single guillemets < > must not %% be used in french. %% Type ... normally (instead of \dots or \ldots). %% Respect French abbreviations like: %% \hbox{c.-\`a-d.} / \emph{i.e.} / p.ex. / \etc. / cf. / id. / %% p.i. / p.o. / doc. / chap. / part. / vol. / paragr. / R.S.V.P. / ... %% %% Please apply these allmost elementary (and historical) rules. %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % \def\@txt@msg#1{#1}% -Just get arg and remove {}. \def\@gobbleopt[#1]{}% \def\f@issue#1#2{#1{#2}\@ifnextchar[{\@gobbleopt}{}% -] }% %#< % Firstly we add the material to use the "msg" package for localization. \def\@tempc{% \def\f@issue##1##2{\f@issue@[##1]##2\void}% -The local \issuemsg macro. % -which will call the real one; % -#1 is the macro message required. % -#2 is the message header + msg number % -such as "^^J -234-", just message % -number (234) is kept. \def\f@issue@[##1]##2-##3-##4\void{\issuemsg[##1]##3(french)}% \PassOptionsToPackage{french}{msg}% \ifx\LdfInit\@undefined% \RequirePackage{msg}% -Usually, load the msg package. \else% -But with Babel, dont use \usepackage or such, \let\@GOfrench\@currname% -Save current package name. \xdef\@currname{msg}% -Set package req. \def\intern@lc@llfrom{\frenchpack}% -Say him it's an internal/kernel call. \let\fp@languagename\languagename% -Save current language name. % -now we force French for the msg package. \ifx\documentclass\@twoclasseserror% -When not a kernel case \def\languagename{french}% - force French for the msg package. \fi \@@input msg.sty% -and input it now \let\languagename\fp@languagename% -Reset current language name. \let\fp@languagename\undefined% \let\intern@lc@llfrom\undefined% \let\@currname\@GOfrench% -Reset original package name. \fi% }% -\@tempc \def\@tempd{\def\f@issue##1##2{\@ifnextchar[{\@gobbleopt}{}% -] }% }% -\@tempd % Prepare to compare \jobname and license file name. \edef\@tempa{\expandafter\noexpand\csname str-\jobname\endcsname}% \edef\@tempb{\expandafter\noexpand\csname str-frlicense\endcsname}% % FrenchPro requires msg.sty and *-msg.tex files \ifx\@tempa\@tempb% -but only for typesetting a document. \IfFileExists{msg.sty}{\@tempc}{\@tempd}\else% \IfFileExists{msg.sty}{\@tempc}{% -Avoid loading it if msg.sty doesn't exist. \typeout{^^J -81- WARNING: "msg" package not found;% ^^J\space\space\space\space\space\space continuing without message texts.}% }% \fi% %#> \newif\ifECM% % Here come \if-switches codes in case of french.sty badly initiated \def\ErrFrench{\f@issue\@fW{-26- % %\@txt@msg{Erreur d\'etect\'ee dans \frenchname.sty !}% %\@txt@msg{(voir p.ex. le fichier language.dat)}% }}% \def\ifFTY{\ErrFrench}\def\ifFTR{\ErrFrench}\def\ifFG{\ErrFrench}% \def\ifFLA{\ErrFrench}\def\ifFMA{\ErrFrench}\def\ifFH{\ErrFrench}% \def\ifArG{\ErrFrench}\def\ifFTSW{\ErrFrench}\def\ifFW{\ErrFrench}% % \edef\GOfrench{`\string @}% -temp def further correctly defined \ifnum\catcode\GOfrench=11% -mods of code proposed by DT that \let\resetat\relax% -accepts also that @ were active \else\edef\resetat{\noexpand\catcode\GOfrench=\the\catcode\GOfrench}% \makeatletter\fi% % \let\@currnameORI\@currname% -save current package name \xdef\@currname{\frenchname}% -set pasckage req. {\def\'{\string\'}% -to avoid \accent@spacefactor=\undefined (in pr\'e-) \ProvidesPackage{\frenchname}% [\FSfd\space The \frenchpack\space package /\FSfv/]% }% \def\GOfrench{babel}\ifx\@currnameORI\GOfrench% -allow Babel to load me \ifx\undefined\babel@core@loaded\input babel.def\relax\fi% \ifx\undefined\babel@core@loaded% -still undefined (>3.5)? \let\babel@core@loaded\main@language\fi% \fi% %#< %\let\FSfd=\undefined% let it defined for possible patch test. \def\@tempa#1V#2,#3\@nil{\def\@FSfv{#2}}\expandafter\@tempa\FSfv\@nil% %#> \let\FSfv=\undefined% -return to the pool \IfFileExists{frpatch.sty}{\def\FSfd@patch{unknown}}{\let\FSfd@patch\FSfd}% % \if@compatibility% -provide error msg with 2.09 emulation \f@issue\typeout{^^J -68- %\@txt@msg{ERROR: \frenchpack\space is no more running }% %\@txt@msg{with 2.09 emulation, sorry!}% }\expandafter\stop% \fi% % \ifeF@LuaTeX\relax\else \ifx\l@french\undefined\f@issue\typeout{^^J -20- %\@txt@msg{WARNING:}% %\@txt@msg{the French language is undefined in your format.}% }% \fi% \fi% % % more posibilities by high-punctuation and guillemets % three commands for the user % - with \NobrkSpacesINFr punctuation as asked by the Imprimerie Nationnale % - with \NobrkSpacesFine only fine spaces as in theGuide du Typographe % - with \NobrkSpacesFpro punctuation as it was till version 6.101 % %\newif\ifeFrfisp@v@ria \newif\ifeFr@DPtfine% semicolon fine or not \newif\ifeFr@Guifine% guillemets fine or not \newif\ifUSP@GuiFinSpa % for OG space made unbreakable or unused \newif\ifPonctu@ctived % no more changes in definitions after having used % some non-breaking spaces \def\nbsp@ce{\penalty\@M\space} \def\fispce@rigide{\,}% \def\eFrFinSp@ce{\penalty\@M% \hskip 0.5\fontdimen2\font}% % a possibility for the user to define an own fine non breakable space \def\MonEspaceFine#1#2#3{\def\eFrFinSp@ce{\penalty\@M% \hskip #1\fontdimen2\font% plus #2\fontdimen3\font% minus #3\fontdimen4\font} }% % by guillemets, if fine space, it is always present \def\eFr@OGsp@cSpl{\ifeFr@Guifine\eFrFinSp@ce \else\nbsp@ce\fi\ignorespaces} % for the user: fine, Imprimerie Nationale-France or Frenchpro \def\NobrkSpacesFine{\ifPonctu@ctived % don't redefine punctuation behavior \f@issue\@fw{-94-}[NobrkSpacesFine] \else\eFr@DPtfinetrue\eFr@Guifinetrue % espaces fines \fi} \def\NobrkSpacesFpro{\ifPonctu@ctived % don't redefine punctuation behavior \f@issue\@fw{-94-}[NobrkSpacesFpro] \else\eFr@DPtfinetrue\eFr@Guifinefalse% comme Frenchpro \fi} \def\NobrkSpacesINFr{\ifPonctu@ctived % don't redefine punctuation behavior \f@issue\@fw{-94-}[NobrkSpacesINFr] \else\eFr@DPtfinefalse\eFr@Guifinefalse % % [Imprimerie Nationale de France \fi} \fontencoding{\encodingdefault}\selectfont% \def\@temp@{OT1}\ifx\@temp@\f@encoding% \def\@temp@{\global\ECMfalse}% \else\def\@temp@{LO1}\ifx\@temp@\f@encoding% \def\@temp@{\global\ECMfalse}% \else% -could be LY1 \def\@temp@{\global\ECMtrue}% \fi% \fi% \@temp@% \def\@tempa{\let\ifEightBitOutput\iffalse}% \ifx\EightBitOutputfalse\undefined\expandafter\@tempa\fi% \ifECM\else\ifx\charsubdef\undefined% \def\@tempa{\noexpand\dGs}% \ifx\@tempa\dGs\else% \ifx\@kb@msgXXIX\relax\else% -Don't issue if already done. \f@issue\typeout{^^J -29- % %\@txt@msg{***Warning***\string: TeX engine in use along with CM fonts }% %\@txt@msg{(as in current TeX format) isn't sufficient to hyphenate }% %\@txt@msg{words containing diacritics (like in French).}% }% \let\@kb@msgXXIX\relax% \fi% \fi% \fi\fi% \ifx\undefined\@dblarg% -....................................... \@dblarg \long\def\@dblarg#1{\@ifnextchar[{#1}{\@xdblarg{#1}}}}% \long\def\@xdblarg#1#2{#1[{#2}]{#2}}% \fi% \newdimen\@FrDimen% -general def for the style \def\usualmessages{\let\ifEightBitOutput\iftrue}% \ifnum\inputlineno=-1\def\@o@l{.}% -may be negative \else\def\@o@l{ (\`a la ligne \the\inputlineno).}\fi% \expandafter\let\expandafter\@aiguORI\expandafter=% \csname OT\string1\string\'\endcsname% \expandafter\let\expandafter\@gravORI\expandafter=% \csname OT\string1\string\`\endcsname% \expandafter\let\expandafter\@acchORI\expandafter=% \csname OT\string1\string\^\endcsname% \expandafter\let\expandafter\@tremORI\expandafter=% \csname OT\string1\string\"\endcsname% \expandafter\let\expandafter\@cediORI\expandafter=% \csname OT\string1\string\c\endcsname% %#< This is a little code to avoid braces to be striped when the token % is provided via a macro parameter. \def\@PreserveBraces[#1#2]% -................................... \@PreserveBraces {\ifcat\noexpand#1$ #1#2\def\@temp@{}% \else\def\@temp@{#2}% \ifx\@temp@\empty\def\@temp@{#1}% \else\def\@temp@{{#1#2}}\fi% \fi\expandafter\@temp@}% % \def\@temp@{lplain-bilingual}% -E.P. wrong old def checking \ifx\fmtname\@temp@\f@issue\typeout{-64- % \@txt@msg{ERROR: invalid \string\fmtname\space in lplain.tex}% }\stop\fi% %% code to test the shareware licence suppressed eFrench \let\@tempc\relax% -AmS bug: \@tempc=\if. % \ifx\today\undefined\let\today\cejour\fi% -for lettre.cls \ifx\today\undefined\f@issue\typeout{^^J -52- % %\@txt@msg{Error: the \frenchpack\space package doesn't run in }% %\@txt@msg{such minimal document class, sorry!}% }\expandafter\stop% \fi% {\def\GOfrench{\global\let\ifEightBitOutput\iffalse}% -force seven bits \let\add@accent\@gobble\edef\@tempa{\`{}}% \def\@tempb{{\setbox \@tempboxa \hbox {}\accent 18 }}% \ifx\@tempa\@tempb% -hum, OT1 is just loaded, so no expand. \expandafter% \GOfrench% -and force seven bits for all \@fw messages. \fi% }% % Macro to send a message without header: \def\@fW#1{{\let\@nobraces\@firstofone% \ifEightBitOutput% \setbox\@tempboxa\hbox{\`\space}% -For \add@accent expansion. \ifx\charsubdef\undefined\else% -case MlTeX only \let\add@accent\@gobble% -Avoid redef. by fontenc loading. \def\'##1{\expandafter\@nobraces\@aiguORI##1}% \def\`##1{\expandafter\@nobraces\@gravORI##1}% \def\^##1{\expandafter\@nobraces\@acchORI##1}% \fi% \else% \let\protect\string\let\add@accent\@gobble% \fi% \edef\@tempa{#1}\typeout{\@tempa}}}% {\def\ier{er}% -this is the French typographic abbreviation of "st" \f@issue% \@fW{^^J -23- %\@txt@msg{Extension \string : \frenchpack\space}% %\@txt@msg{\frenchstyleid\space(B.Gaulle)}% }% }% % \let\ifFW\iftrue% -Start with (warning) messages \def\@fw#1{{\let\@NoFr\relax% -Avoid any loop inside \kbtypeout. \ifFW\kbtypeout% -..................................... French warning {^^J \frenchname.sty \string : #1\@o@l}% \fi% }}% -Notice: after \begin{document} there is no more need to % protect active characters against expansion. \ifx\kbtypeout\undefined% % Notice that \kbtypeout can be set to \relax\egroup by keyboard.sty. \def\@kbtypeout[#1]#2{\ifEightBitOutput\let\@typeset@protect\protect\fi% \let\@inpenc@undefined@\@gobble% -To avoid loop. \edef\f@tempa{#2\empty}% -Expand it now and type out. #1{\f@tempa}\egroup}% \def\kbtypeout{\kbIO[\typeout]}% -.................................. \kbtypeout \def\kbIO{\bgroup% -................................................ \kbIO \ifECM\fontencoding{OT1}\selectfont\fi% -Basic fontencoding needed. %\nofrenchtypography% To apply only after \begin{document}. \let\@nobraces\@firstofone% -could be provided separately, \let\protect\string% \ifEightBitOutput% -eg by kbconfig. \def\'##1{\expandafter\@nobraces\@aiguORI##1}% \def\`##1{\expandafter\@nobraces\@gravORI##1}% \def\^##1{\expandafter\@nobraces\@acchORI##1}% \def\"##1{\expandafter\@nobraces\@tremORI##1}% \def\c##1{\expandafter\@nobraces\@cediORI##1}% \csname @kbspecials\endcsname% -Translation settings. \else% -7-bit output wanted. \let\add@accent\@gobble% \def\set@display@protect{\let\protect\noexpand}% -Have spaces! \fi% \@kbtypeout}% \fi% \ifx\@kbtypeout\undefined% -A default \@kbtypeout macro. \def\@kbtypeout[#1]#2{#1{#2}\egroup}% \fi% \def\@tempb{\let\ifEightBitOutput\iffalse}% \ifx\kbtypeout\typeout% -If no kb output encoding then set a correct \@fw cs. \long\def\@tempa{\add@accent{19}}% -Case standard OT1 (re)loaded \ifx\@tempa\@aiguORI\expandafter\@tempb\fi% -then force 7-bit. \def\@fw#1{\ifFW\bgroup\let\@nobraces\@firstofone% \ifEightBitOutput% \ifx\charsubdef\undefined\else% \def\'##1{\expandafter\@nobraces\@aiguORI##1}% \def\`##1{\expandafter\@nobraces\@gravORI##1}% \fi% \else% \let\protect\string\let\add@accent\@gobble% \fi% \@kbtypeout[\typeout]{^^J \frenchname.sty \string : #1\@o@l}% \fi% }% -Notice: after \begin{document} there is no more need to \fi % \def\@Ffnt#1{\f@issue\@fw{-2- %\@txt@msg{fichier #1 non trouv\'e}% }[#1]}% \def\@finput#1{\InputIfFileExists{#1}{}{\@Ffnt{#1}}}% \def\@NoFr{\f@issue\@fw{-3- % %\@txt@msg{\frenchpack\space n'est pas actif ici !}% }}% \let\ifFrench\iffalse% % \ifx\addto\undefined% -............................................. \addto \def\addto#1#2{\ifx#1\@undefined\def#1{#2}% \else\ifx#1\relax\def #1{#2}% \else{\toks@\expandafter{#1#2}% \xdef#1{\the\toks@}}% \fi% \fi% }% \fi% \def\fraddto#1#2{\addto{#1}{#2}% -.................................... \fraddto \ifFrench\french\else\english\fi}% % The following macro designed to protect against expansion. \ifx\MakeRobustCommand\undefined% -.......................... \MakeRobustCommand \def\MakeRobustCommand#1{\expandafter\expandafter\expandafter% \let\expandafter\expandafter\csname #1 fp\endcsname% \csname #1\endcsname% \expandafter% \edef\csname #1\endcsname{\expandafter\protect% \expandafter\noexpand\csname #1 fp\endcsname} }% \fi% % \ifx\DocInput\undefined\else% -...................................... \DocInput \let\fr@di\DocInput\def\DocInput#1{% -for ltxdoc.cls \ifFrench\english\fr@di{#1}\french% \else\fr@di{#1}% \fi\relax}% \fi% \ifx\url\undefined\else% -................................................ \url \let\fr@ul\url\def\url#1{% -for hyperref package \ifFrench\english\fr@ul{#1}\french% \else\fr@ul{#1}% \fi\relax}% \fi% \ifx\xy\undefined\else% -.................................................. \xy \let\fr@xy\xy\def\xy{% -for XY-pic and diagxy packages \ifFrench\nofrenchguillemets\DFPdp\fi\fr@xy}% \fi% \ifx\hyper@n@rmalise\undefined\else% -.............................. \href \let\fr@hne\hyper@n@rmalise\def\fr@hnr#1#2{\fr@hne{#1}{#2}}% -. \hyperref \def\hyper@n@rmalise{\ifFrench\english\expandafter\fr@hnr% -.. \hyperimage \else\expandafter\fr@hne\fi}% \fi% \ifx\PDFSCR@Info\undefined\else% -Remove last dot in sect. numbers of pdfscreen. \def\@seccntformat#1{\protect\textcolor{section\thesection@level}% {\expandafter\upshape\csname the#1\endcsname}\quad}% \fi% % The following should be obsolated: \ifx\listing\undefined\else% -........................................ \listing \let\fr@li\listing% -Save current definition of \listing. %\newcommand\listing[2][1]{...} definition inside moreverb package, i.e.: \edef\listing{\noexpand\@protected@testopt\noexpand\listing% \expandafter\noexpand\csname\string\listing\endcsname {1}}% %% Old moreverb def: \def\listing{\@ifnextchar[{\@listing}{\@listing[1]}}% \ifx\fr@li\listing% \def\listing{% -for moreverb package \ifFrench\expandafter\english\expandafter\fr@li% \else\expandafter\fr@li% \fi}% \else% \long\def\listing{% -for listing package \ifFrench\expandafter\english\expandafter\fr@li% \else\expandafter\fr@li% \fi\relax}% \fi% \fi% \ifx\inputlisting\undefined\else% -.............................. \inputlisting \let\fr@PL\lst@ProcessListing\def\lst@ProcessListing[#1]{% \ifFrench\english\fr@PL[#1]\french% \else\fr@PL[#1]% \fi\relax}% \fi% % For listings package > (or equal to) V0.2000 \ifx\lstlisting\undefined\else% -.................................. \lstlisting \let\fr@lsi\lstlisting\long\def\lstlisting{% -for listings package \ifFrench\expandafter\english\expandafter\fr@lsi% \else\expandafter\fr@lsi% \fi}% \fi% \ifx\lstinputlisting\undefined\else% -........................ \lstinputlisting \let\fr@PL\lst@ProcessListing\def\lst@ProcessListing[#1]{% \ifFrench\english\fr@PL[#1]\french% \else\fr@PL[#1]% \fi}% \fi% %#< \def\ifFrench#1\fi{\@NoFr}% -a temporary definition for error messages %(\endnonfrench remains \undefined) \def\originalinput#1{\ifFrench\english\@finput{#1}\french% -..... \originalinput \else\@finput{#1}\fi\relax}% \def\originaloutput[#1]{% -..................................... \originaloutput \ifFrench\english\fi% \def\@riginalout##1##2{\immediate\write##1{##2}}% \@riginalout{#1}}% \let\ifFLA\iffalse% -We need \ifFLA now \@ifundefined{printindex}{% -makeidx.sty is included (as of 20-jan-87) \def\see#1#2{\seename% -i assume this macro is defined in non-english sty. \/ {#1}}% -.........................................\see \def\printindex{\clearpage% -................................ \printindex \ifx\hyper@refstepcounter\undefined\else% \stepcounter{subparagraph}% \hyper@refstepcounter{subparagraph}% \fi% \addcontentsline{toc}{chapter}% {\protect\indexname}% {\let\@ti\theindex% -........................ \theindex \def\theindex{\@ti\ifFLA\thispagestyle{french}\fi}% \@finput{\jobname.ind}}}}{}% \ifx\printnomenclature\undefined\else% -................... \printnomenclature \let\@pne\printnomenclature% -No French warnings with the nomenclature \def\printnomenclature{\nofrenchwarnings\@pne}% -package. \fi% \ifx\thebibliography\undefined\else% \let\@tbs\thebibliography% \let\fr@savebib\thebibliography% \long\def\thebibliography#1{% -..............USUAL........... \thebibliography \ifFLA% \ifx\hyper@refstepcounter\undefined\else% \stepcounter{subparagraph}% \hyper@refstepcounter{subparagraph}% \fi% \ifx\bibname\undefined% \addcontentsline{toc}{chapter}{\refname}% \else% \addcontentsline{toc}{chapter}{\bibname}% \fi% \fi% \@tbs{#1}% }% \ifx\bt@stepcnt\undefined% \else% -bibtopic mods adapted for jurabib too. % A specific recoding is made for ........BIBTOPIC......... \thebibliography % to allow bibtopic to extract de first three tokens which % begin \thebibliography (e.g. \section*{\refname}). \let\thebibliography\@tbs% \let\bt@saveitem\bibitem% \AtBeginDocument{\let\bt@savebib\fr@savebib}% -Give back thebibliography. \def\@tempd#1#2#3#4\void{\def\@tempa{\noexpand#1}\def\@tempb{\noexpand#2}% \def\@tempc{\noexpand#3}\def\@@tbs##1{#4}}% \expandafter\@tempd\thebibliography{\string#1}\void% \edef\thebibliography#1{\@tempa\@tempb\@tempc% \noexpand\@@tbs{#1}\noexpand\@tbs}% \def\@tbs{\ifFLA% \ifx\hyper@refstepcounter\undefined\else% \stepcounter{subparagraph}% \hyper@refstepcounter{subparagraph}% \fi% \ifx\bibname\undefined% \addcontentsline{toc}{chapter}{\refname}% \else% \addcontentsline{toc}{chapter}{\bibname}% \fi% \fi% }% \fi% -bibtopic test. \fi% -\thebibliography defined? % \def\ifFLA{\ErrFrench}% -reset it to normal value here \@ifundefined{disableindex}{}% -Ok index.sty is not loaded; {% -Otherwise we must redefine its \see \def\see#1#2{\seename\/ {#1}}% -which contains \emph{\seename}. }% \@ifundefined{seealso}{% -cf TUGboat V12#2 p290 and V13#1 p 95 .. \seealso \def\subsee#1#2{\seealsoname% -i assume this macro is defined in non-engl. \/ {#1}}% -the #2 consumes a comma or \dotfill \let\nosee\@gobble% -consumes the page number \def\seealso{\bgroup\edef\@temp@{}\@ifNextNB[{\see@@so}% -] case index.sty {\see@lso}}% \def\see@lso#1#2{\expandafter% \index\@temp@{#1!zzzzz@\protect\subsee{#2}|nosee}\egroup}% \def\see@@so[#1]{\edef\@temp@{[#1]}\see@lso}}{}% %#> % \if switches mechanism for french typography % \def\@ifFTYfalse{\let\ifFTY\iffalse}% \def\@ifFTYback{\let\ifFTY\if@Back}% \let\if@PMF\iffalse% -PMF siwtch off for french light. %#< % Poor man defs % \newif\if@PMF\@PMFfalse% \def\pmfrench{\@PMFtrue\f@issue\@fw{-4- % %\@txt@msg{entering now "Poor-Man-French-Style" way}% }% \def\frenchname{pmfrench}}% %#> % Font processing % % look at \GOfrench for \footnotesize, \Huge, \sm@ller, \l@rger and co. % % information messages: \f@issue% \@fW{ -24- % %\@txt@msg{\frenchname.sty utilise dans ce document le codage de fonte }% %\@txt@msg{\f@encoding.^^J}% }% % \f@issue% \@fW{ -25- %\@txt@msg{\frenchname.sty affiche ici ses messages en }% %\@txt@msg{\ifEightBitOutput8-bits.\else7-bits << \string\`a la TeX >>.\fi}% %\@txt@msg{^^J^^J}% }% % %For testing purposes ........................................ \CheckSevenBits \def\CheckSevenBits/#1{\def\@tempa##1##2/##3{\ifx##2\empty\else% \f@issue% \@fw{-51- % %\@txt@msg{ERREUR : ce document n'a pas \'et\'e converti en 8-bits...}% }% \expandafter ##3\fi}\expandafter\@tempa\noexpand#1}% % \@ifundefined{tt}{\def\tt{\fontfamily{\ttdefault}\selectfont}}{}% -........ \tt %#< % What font use for guillemets? % if \guillemetsinallfonts: the current font % if \guillemetsinroman: 1- try EC 2- or lasy 3- otherwise math simulation \let\ifGIAF\iftrue% -by now assume guillemets in all fonts \@ifundefined{ly}% -try to define \ly with NFSS ........................... \ly {% -Allways load latexsym in case of any OT1 usage. \ifx\symlasy\undefined% -if nfltxsym option not used \ifx\undefined\babel@core@loaded% \RequirePackage{latexsym}% -load LaTeX symbols defs \else% -special case Babel (dont use \usepackage) \xdef\@currname{latexsym}% -set package req. \@@input latexsym.sty\@@input ulasy.fd% \fi% \fi% \def\@ly{\fontencoding{U}\fontfamily{lasy}% -set encoding & family \ifGIAF\else\fontseries{m}\fontshape{n}\fi\selectfont}% \def\ly{\ifFG\ifECM\rm\else\@ly\fi\fi}% -default is rm otherwise lasy. }{}% % \ifx\guillemetsfont\undefined% \def\guillemetsfont{\fontfamily{\rmdefault}% -................... \guillemetsfont \fontseries{m}\fontshape{n}\selectfont}% \fi% \def\@gfnt{\guillemetsfont}% -Default guillemets' font is \rm. %#> % \string definitions and saved chars % \edef\lq{\string`}\edef\rq{\string'}% -as usual in LaTeX .............. \lq \rq \let\@cilq='% -this will be the catcode independent left quote \edef\lqq{\string`\string`}\edef\rqq{\string'\string'}% -.............. \lqq \rqq \edef\pointvirgule{\string;}% -.................................... \pointvirgule \edef\deuxpoints{\string:}% -........................................ \deuxpoints \let\@cidp=:% -this will be the catcode independent double point \edef\pointexclamation{\string!}% -........................... \pointexclamation \edef\pointinterrogation{\string?}% -....................... \pointinterrogation \edef\inferieura{\string<}% -....................................... \inferieura \edef\superieura{\string>}% -....................................... \superieura \edef\dittomark{\string"}% -......................................... \dittomark \let\f@par\par% -save it for \lettrine inside a list environment. \let\@SLQ\lq% \def\@SRQ@{^\bgroup\prim@s}% \def\@SRQ{\ifmmode\expandafter\@SRQ@\else\rq\fi}% %#< \let\@gotl\guillemotleft% \let\@gotr\guillemotright% \def\@temp@{LO1}\ifx\@temp@\f@encoding% \else\edef\@temp@{OT1}\fi% \def\@tempa#1{\expandafter\relax% -define OT1-guillemets or LO1 ones \expandafter\global% \expandafter\def% \csname\@temp@\string#1\endcsname}% \@tempa{\guillemotleft}{\let\ifECM\iffalse% \ifFG\ly(\kern-0.20em(\else<<\fi}% \@tempa{\guillemotright}{\let\ifECM\iffalse% \ifFG\unskip% -last kern was not in the correct font. \ly\kern+0.20em)\kern-0.20em)% \else>>% \fi}% \let\@LSG\inferieura\def\@DOG{\inferieura\inferieura}% \let\@RSG\superieura\def\@DFG{\superieura\superieura}% \def\@SOC{\string[% -] emacs }% \def\@SFC{% -[ emacs \string]}% \edef\@LP{\ifECM023\else(\fi% -) emacs }% \edef\@RP{% -( emacs \ifECM024\else)\fi}% %#> % Define Options ............................ French style OPTIONS definitions % \newif\ifFH% \let\@noBDfr\@nodocument% -options can only be set after \begin{document} \def\frenchhyphenation{\@noBDfr}% -or in \usersfrenchoptions \def\nofrenchhyphenation{\@noBDfr}% \def\frenchtypography{\@noBDfr}% \def\regularmathcomma{\@noBDfr}% \def\frenchmathcomma{\@noBDfr}% \def\frenchwarnings{\@noBDfr}% \def\nofrenchwarnings{\@noBDfr}% \def\nofrenchtypography{\@noBDfr}% \def\nofrenchtranslation{\@noBDfr}% \def\frenchtranslation{\@noBDfr}% \ifx\RIfM@\undefined% -used before \begin{document} by AmS classes \def\nofrenchguillemets{\@noBDfr}% \def\frenchguillemets{\@noBDfr}% \def\nofrenchbguillemets{\@noBDfr}% \def\frenchbguillemets{\@noBDfr}% \fi% % Defaultly, layout is not constant from one language to another. \global\let\ifCLAfrench\iffalse% -No defaultly constant French page layout. \def\ConstantLayout{\@noBDfr}% %\def\nombre{\@noBDfr}% %\def\WindowsUnits{\@noBDfr}% %\def\FileName{\@noBDfr}% %\def\theFileName{\@noBDfr}% %#< \def\originalmathcomma{\@noBDfr}% \def\everyparguillemetsremoved{\@noBDfr}% \def\Numeros{\@noBDfr}% \def\order{\@noBDfr}% \def\endorder{\@noBDfr}% \def\sommairename{\@noBDfr}% \def\versatim{\@noBDfr}% \def\endversatim{\@noBDfr}% %#> \def\nofrenchmacros{\@noBDfr}% \def\frenchmacros{\@noBDfr}% \def\automaticlettrine{\@noBDfr}% \def\noautomaticlettrine{\@noBDfr}% \def\noeveryparguillemets{\@noBDfr}% \def\everyparguillemets{\@noBDfr}% \def\nofrenchlayout{\@noBDfr}% \def\frenchlayout{\@noBDfr}% \def\indentfirst{\@noBDfr}% \def\nonindentfirst{\@noBDfr}% \def\NouveauLangage{\@noBDfr}% \def\letpunctutionactivefor{\@noBDfr}% % This dirty hack to bypass ugly latex209 output routine of seminar slides. \def\@tempa{\let\ifarticle\iffalse}% \ifx\ifarticle\undefined\expandafter\@tempa\fi% \ifx\@seminarerr\undefined\else\ifarticle\else% \let\@soORI\shipout% \def\shipout#1#2{\def\@tempa{slide}\def\@tempb{slide*}% {\ifx\@tempa\@currenvir\let\protect\noexpand% \else\ifx\@tempb\@currenvir\let\protect\noexpand\fi% \fi% \@soORI#1#2}% \global\let\shipout\@soORI% -just one time mod. }% \fi\fi% -\@seminarerr % The new \hyphenation macro is used first at language.dat loading for frhyphex \let\h@yphenation\hyphenation% -save original \hyphenation \long\def\f@hyphenation#1{\bgroup% \let\par\space% -For \h@yphenation. \def\-{ }% -Stops compound words. \let\allowhyphens\undefined% -but not \allowhyphens. \csname accenthyphcodes\endcsname% \lowercase{\edef\@tempa{#1}}% \h@yphenation{\@tempa}\egroup}% % \def\@tempa{\let\iffrenchbibliography\iftrue}% \ifx\iffrenchbibliography\undefined\expandafter\@tempa\fi% % \ifx\nombre\undefined\else\let\@nomORI\nombre\fi% % \begingroup\obeyspaces% \gdef\@@nombre{\ifFTY\@mathcomma\obeyspaces\let =\,\fi}% \endgroup% \def\@nombre#1{\bgroup\let\ifFTY\iftrue\def\@tempa{#1}% \def\,{\ifmmode\mskip\thinmuskip\fi}% \if@filesw{\immediate\openout\@inputcheck=\jobname.tmp% \let\protect\noexpand% \ifmmode% \immediate\write\@inputcheck{\protect\makeatletter% \protect\@@nombre% \@tempa\ignorespaces}% \else% \immediate\write\@inputcheck{\protect\makeatletter% \protect\@@nombre% $\@tempa$\ignorespaces}% \fi% \immediate\closeout\@inputcheck% }% \immediate\openin\@inputcheck=\jobname.tmp% \immediate\read\@inputcheck to\@tempa% \immediate\closein\@inputcheck% \def\@tempa{{\input{\jobname.tmp}}}% \fi% \@tempa\egroup% }% % French Lite defs: \ifx\nombre\undefined\DeclareRobustCommand*{\nombre}{\@nombre}\fi% \ifx\WindowsUnits\undefined% -.................................... \WindowsUnits \def\WindowsUnits{\@wu}\fi% % \def\FileName{\bgroup% -.............................................. \FileName \def\@FNenc@loop##1##2{\@tempcnta`##1\relax% \loop\catcode\@tempcnta=11% \ifnum\@tempcnta<`##2\relax% \advance\@tempcnta\@ne% \repeat}% \@FNenc@loop\^^A\^^H% \@FNenc@loop\^^K\^^K% \@FNenc@loop\^^N\^^_% \@FNenc@loop\^^?\^^ff% -128-255 \@FileName}% \def\@FileName#1{\gdef\theFileName{#1}\egroup}% -................... \theFileName % \let\og\empty\let\fg\empty% -Guillemets for French light: % Extrait de frenchb.ldf 2004/04/02 v1.6f on 2005/03/23: \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}}} \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)}}} \ifeF@NoEnc\else \IfFileExists{t1lmr.fd}{\PolishGuillemets}{\LasyGuillemets} \fi \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 ''}} %%%%%%%%%%%%%%% \def\@ifo{% -\GOfrench 1st part: options to be defined at \begin{document} \def\kbIO{\bgroup% -Is redefined at \begin{document} \ifECM\fontencoding{OT1}\selectfont\fi% -Basic fontencoding needed. \ifFTY\expandafter\nofrenchtypography\fi% \let\@nobraces\@firstofone% -could be provided separately, \let\protect\string% \ifEightBitOutput% -eg by kbconfig. \def\'####1{\expandafter\@nobraces\@aiguORI####1}% \def\`####1{\expandafter\@nobraces\@gravORI####1}% \def\^####1{\expandafter\@nobraces\@acchORI####1}% \def\"####1{\expandafter\@nobraces\@tremORI####1}% \def\c####1{\expandafter\@nobraces\@cediORI####1}% \csname @kbspecials\endcsname% -Translation settings. \else% -7-bit output wanted. \let\add@accent\@gobble% \def\set@display@protect{\let\protect\noexpand}% -Have spaces! \fi% \@kbtypeout}% \let\s@owhyphens\showhyphens% % Save original settings of \dospecials et \@sanitize \let\@dsORI\dospecials% -...........................\@dospecials.........original \@ifundefined{@sanitize}{\def\@sanitize{\relax}}{}% \let\@saORI\@sanitize% -............................\@sanitize...........original \def\frenchhyphenation{% \ifFH\else\FHtrue% -....................\frenchhyphenation \edef\@uchORI{\the\uchyph}% -save previous uchyph value \def\@Hif{\ifFH}\let\@Hfi\fi% \lccode `\'=`\'% \ifx\flowercase\undefined\else\def\lowercase{\flowercase}\fi% \@ifundefined{allowhyphens}{% -.............................. \allowhyphens \def\allowhyphens{\ifhmode\nobreak\hskip\z@skip\fi}}{}% % % There is no need to change here left&right hyphenmin counts % % but other languages might have changed default values \@ifundefined{lefthyphenmin}{}% {\lefthyphenmin=2\righthyphenmin=3}% -disallow x- or -xx breaks \@whatUCH% -set Upper Case Hyphenation whatsit \def\@tempa####1{{\accenthyphcodes\h@yphenation{####1}}}% \ifx\@tempa\hyphenation\f@issue% \@fw{-41- %\@txt@msg{your format is out of date, }% %\@txt@msg{please run initex again!}% }\stop% \fi% \def\accenthyphcodes{% -Use fontencoding just \let\@typeset@protect\protect% -in a \ifx\protect\noexpand\else% -typesetting process. \ifECM\else\fontencoding{T1}% \let\pickup@font\@gobble% \let\size@update\relax\selectfont% \fi\fi}% \let\hyphenation\f@hyphenation% \def\showhyphens####1{\bgroup% \csname accenthyphcodes\endcsname% \protected@edef\@tempa{####1}% \s@owhyphens{\@tempa}\egroup}% \fi}% -\ifFH \def\nofrenchhyphenation{% \ifFH\FHfalse% -....................\nofrenchhyphenation \lccode`\'=0% \let\hyphenation\h@yphenation% -restore original \hyphenation \let\showhyphens\s@owhyphens% \ifx\lowercaseORI\undefined\else\let\lowercase\lowercaseORI\fi% \@ifundefined{lefthyphenmin}{}% {\lefthyphenmin=2\righthyphenmin=3}% -disallow x- or -xx breaks \uchyph=\@uchORI% -reset original hyph. on words starting with capitals \fi}% %#< \edef\originalmathcomma% -.................................. \originalmathcomma {\noexpand\mathcode`,=\the\mathcode`,}% %#> \@tempcnta=\the\mathcode`,\@tempcntb=\the\mathcode`,% \divide\@tempcnta by 4096\relax% -On r'ecup`ere la classe (demi octet poids fort) \multiply\@tempcnta by -4096\relax% -en 'eliminant les poids failbles. \advance\@tempcntb by \@tempcnta% -On garde le restant de poids faible. \edef\@tempb{\noexpand\mathcode`,=\the\@tempcntb}% -French is usually "013B. \advance\@tempcntb by 24576\relax% \edef\@tempa{\noexpand\mathcode`,=\the\@tempcntb}% -Regular is usually "613B. % Regular LaTeX math code for comma is usually "613B (ie 24891). \edef\regularmathcomma{% -.................................... \regularmathcomma \noexpand\def\noexpand\@mathcomma{\@tempa}% \noexpand\@mathcomma}% \def\@tempa{\if\space\next\else\mathord\fi\mathcomma}% \let\ifFTY\iftrue% -For the following definitions: \ifx\@tempa\sm@rtcomma% -In case icomma is in force we use: \def\frenchmathcomma{% -...................................... \frenchmathcomma \def\@mathcomma{\ifFTY\mathcode`\,="8000\fi}% \@mathcomma}% \else% -otherwise: \edef\frenchmathcomma{% -French math code for comma is usually "013B (ie 315). \noexpand\def\noexpand\@mathcomma% {\noexpand\ifFTY\@tempb\noexpand\fi}% \noexpand\@mathcomma}% \fi% \frenchmathcomma% -Is the default for french. \def\ifFTY{\ErrFrench}% % \def\nofrenchtypography{% -...................................\nofrenchtypography \let\ifFTY\iffalse\let\if@Back\ifFTY% % Reset OT1 definition of \textbackslash to undefined. \expandafter\let\csname OT1\string\textbackslash \endcsname\undefined% %#< \notabbingaccents% -usefull in T1 too with 8bits chars. %#> \nofrenchguillemets% -reseting our guillemets \nofrenchbguillemets% -and those as frenchb \sloppy% -may extend line past the right hand \nonfrenchspacing% \regularmathcomma% % necessary to commute in case of \XeTeXinterchartokenstate \eFr@Typofalse }% \def\frenchtypography{% -.......................................\frenchtypography \let\ifFTY\iftrue\let\if@Back\ifFTY% % Add OT1 definition of \textbackslash, missing inside \LaTeX. \expandafter\let\csname OT1\string\textbackslash \endcsname\@boiORI% \let\ifLPA\iffalse% -default is clean... \typedspaces% %#< \nowrongtypedspaces% \tabbingaccents% -usefull in T1 too with 8bits chars. \englishquote\englishdoublequotes% \nolabelsinmargin% \frenchguillemets% %#> \frenchbguillemets% %#< \normalbrackets\todayguillemets% \guillemetsinroman\guillemetsinarrays% %#> \edef\@tempa{\the\vfuzz}% -AmS may have changed \vfuzz \fussy% -must not extend line past the right hand \vfuzz=\@tempa% -and should not change \vfuzz \frenchspacing% \frenchmathcomma% % \nooverfullhboxmark% std LaTeX default not plain % necessary to commute in case of \XeTeXinterchartokenstate \eFr@Typotrue }% \def\nofrenchtranslation{% \let\ifFTR\iffalse\@cORI}% -........\nofrenchtranslation \def\frenchtranslation{% \let\ifFTR\iftrue\captionsfrench}% -....\frenchtranslation \let\frenchguillemets\relax\let\nofrenchguillemets\relax% \let\frenchbguillemets\bbl@frenchguillemets% -............... \frenchbguillemets \let\nofrenchbguillemets\bbl@nonfrenchguillemets% -........ \nofrenchbguillemets %#< \def\frenchguillemets{% \let\ifFG\iftrue% -..................... \frenchguillemets \let\guillemets\@LG% \let\endguillemets\RG@% \let\guillemotleft\f@guillemets% \let\guillemotright\endf@guillemets% \AFPinfsup}% \def\nofrenchguillemets{% \let\ifFG\iffalse% -.................. \nofrenchguillemets \let\guillemotleft\@gotl% \let\guillemotright\@gotr% \let\guillemets\f@guillemets% \let\endguillemets\endf@guillemets% \DFPinfsup}% \def\noeveryparguillemets{\let\ifEPG\iffalse% -.............\noeveryparguillemets \@desarm\let\@desarm\relax% -release memory \def\guillemets{%%\leavevmode\unskip% \f@issue% \@fw{-53- % %\@txt@msg{environnement guillemets }% %\@txt@msg{ inutilisable avec l'option }% %\@txt@msg{\string\noeveryparguillemets}% }% \bgroup\bgroup% \def\guillemets{\bgroup% \let\endguillemets\egroup}}% }% \def\everyparguillemets{\let\ifEPGR\iffalse% -.............. \everyparguillemets \let\ifEPG\iftrue% \let\guillemets\@LG% \let\endguillemets\RG@% }% \def\everyparguillemetsremoved{% \let\ifEPGR\iftrue}% -........ \everyparguillemetsremoved %#> \def\@tempa{\global\let\ifCLA\iffalse}% -If not already set, no defaultly \ifx\ifCLA\undefined\expandafter\@tempa\fi% -constant language layout. \def\ConstantLayout{\global\let\ifCLA\iftrue% -...................\ConstantLayout \expandafter\let\csname ifCLA\languagename\endcsname\iftrue% \def\@tempa{\let\ifbbbbfixlanguage\iftrue}% \ifx\ifbbbbfixlanguage\undefined\@tempa\fi% \def\@tempa{\ifbbbbfixlanguage\else% \f@issue% \@fw{-85- %\@txt@msg{Attention \string: l'option fixlanguage }% %\@txt@msg{n'a pas ete fournie a l'appel de babelbib}% }\fi% }% \ifx\@nodocument\relax\@tempa% \else\ifx\btxselectlanguage\undefined% \PassOptionsToPackage{fixlanguage}{babelbib}% \else\@tempa% \fi% \fi% \let\ConstantLayout\relax}% -This is a one time macro. % \def\nofrenchlayout{\nofrenchtrivsep% \let\ifFLA\iffalse\@EIM}% -...................\nofrenchlayout \def\frenchlayout{% \let\ifFLA\iftrue\everyparguillemets% -...........\frenchlayout \@FIM\@FL\let\@FL\empty\noautomaticlettrine% \frenchtrivsep}% \def\frenchwarnings{\let\ifFW\iftrue% -......................... \frenchwarnings \frenchtrivsepwarnings}% \def\nofrenchwarnings{\let\ifFW\iffalse% -..................... \nofrenchwarnings }% -This code is not completed. %#< \def\nofrenchmacros{\let\ifFMA\iffalse}% -........................\nofrenchmacros \def\frenchmacros{\let\ifFMA\iftrue\@ifm% -.........................\frenchmacros \let\@ifm\relax}% -release memory %#> }% -end of \@ifo {\GOfrench part 1} %#< \long\def\usersfrenchoptions% -............................. \usersfrenchoptions {\bgroup\makeatletter% % \expandafter\makeatother% \expandafter\egroup% \g@addto@macro\@ufo}% %#> \ifx\@ufo\undefined% \let\@ufo\empty% -necessary for babel when loading \fi% % %....................................................... Modified TeX macros % \def\prim@s{\prime\futurelet\@let@token\pr@m@s}% \def\pr@m@s{\ifx\@cilq\@let@token\expandafter\pr@@@s% \else\ifx^\@let@token\expandafter\expandafter\expandafter\pr@@@t% \else\egroup\fi% \fi}% \let\@fsORI\frenchspacing% -modified for guillemets............. \frenchspacing \def\frenchspacing{\@fsORI\ifECM\sfcode`\(=0\sfcode`\)=1000\fi}% %%%% % let < ' : ` > active for the following macros and \catcode`<=\active\catcode`>=\active\catcode`'=\active% \catcode`:=\active\catcode``=\active% \let<=\inferieura\let>=\superieura% -define them for french light. \def\@Fstr{\def<{\@LSG}\def>{\@RSG}\def`{\@SLQ}\def'{\@SRQ}% \def:{\deuxpoints}% \let\dGs\empty}% -Nullify any \dGs macro from keyboard.sty. \def\@LiN{\let\@sogORI<\let\@sfgORI>\let\@lqORI`\let\@rqORI'% \let\@dpORI:\@Fstr\@ifFTYfalse}% \def\@LiB{\let<\@sogORI\let>\@sfgORI\let`\@lqORI\let'\@rqORI% \let:\@dpORI\@ifFTYback}% \catcode\lq:=12% \let\@s@ORI\special% -................................................. \special % done in \GOfrench: %\def\special#1{\@ifFTYfalse\bgroup\@Fstr\@s@ORI{#1}\egroup\@ifFTYback}% % \newcount, \newdimen, \newbox were \outer defs in plain. % but with eTeX these definitions are ok (rj, v 6,01) \ifx\eTeXversion\undefined% (rj) \def\newcount{\alloc@0\count\countdef\insc@unt}% -.................... \newcount \def\newdimen{\alloc@1\dimen\dimendef\insc@unt}% -.................... \newdimen \def\newbox{\alloc@4\box\chardef\insc@unt}% -......................... \newbox \fi% (rj) % %........................................ Modified package's & LaTeX macros % % Those defs which need to be set at \begin{document} are delayed. % Take in account the varioref package if present: \let\ifFTY\iffalse% -Temporary definition. \ifx\vref\undefined\else% -As \@ifpackageloaded is forbidden at \@ifpackageloaded{varioref}{\def\@vrfCode{% -\begin{document}, test it now. \@gG{vr}{vref}{/}{1}% -................................... \vref \@gG{vpr}{vpageref}{1}{1}% -...........................\vpageref \@gG{vprr}{vpagerefrange}{1}{2}% -................\vpagerefrange \def\reftextpagerange##1##2{% -...............\reftextpagerange pages~\pageref{##1}\ifFTY -\else --\fi\pageref{##2}}% }% }{}% \fi% \def\ifFTY{\ErrFrench}% -Reset original value. % Take in account the beamer class (don't use \l@chapter) \@ifclassloaded{beamer}{\let\l@chapter\empty% \def\beamer@captiontemplate{\small\structure% {\insertcaptionname\captionseparator\space}% \insertcaption} }{}% % \def\GOfrench{% -this is the code to initiate the French style \def\special##1{\@ifFTYfalse\bgroup\@Fstr\@s@ORI{##1}% \egroup\@ifFTYback}% \let\@noBDfr\relax% -release french options/commands now {\catcode\lq\<=\active\ifx<\undefined\else\global% \let\@mLSG<\global% \def\@LSG{\ifmmode\@mLSG\else\inferieura\fi}\fi}% {\catcode\lq\>=\active\ifx>\undefined\else\global% \let\@mRSG>\global% \def\@RSG{\ifmmode\@mRSG\else\superieura\fi}\fi}% \if@PMF\def\pmfrench{}\def\noeveryparguillemets{}\def\@stared{}% \def\@desarm{}\def\@qquotes{}\def\@staring{}\def\@fniv2{}\fi% \def\sm@llerthree{\protect\sm@ller\protect\sm@ller\protect\sm@ller} \@ifundefined{smaller}{\def\sm@ller{\small}% -... you can use ...[smaller.sty] \let\sm@llerthree\scriptsize% \def\l@rger{\large}}% {\def\RSsmallest{4pt}% -... you can use ...[relsize.sty] \ifx\undefined\sm@ller% \let\sm@ller\smaller\fi}% \@ifundefined{footnotesize}{% -.................................... \footnotesize \def\footnotesize{\sm@ller\sm@ller}}{}% \@ifundefined{Huge}{% -.................................................... \Huge \def\Huge{\l@rger\l@rger\l@rger\l@rger\l@rger}}{}% %#< \@ifundefined{lettrinefont}{\let\lettrinefont\Huge}{}% -........... \lettrinefont \let\sv@lf=\lettrinefont% -save it \ifx\@pdfcreator\undefined% -Complete pdf creator name. \else\addto\@pdfcreator{, with \frenchpack\space package}\fi% %#> % Command to leave chapter counter asis.................... \noresetatpart \def\noresetatpart{\ifFLA\let\cl@part\empty\fi}% % Command to leave footnote counter asis over chapter change. \def\noresetatchapter{\ifFLA\let\cl@chapter\empty\fi}% -....... \noresetatchapter % Let \chapter be defined. \@ifundefined{chapter}{}{}% -.......................................... \chapter % Reset chapter counter when starting a part & \@ifundefined{c@chapter}{\newcounter{chapter}}{\@addtoreset{chapter}{part}}% \@ifundefined{quotation}{\def\quotation{}}{}% -...................... \quotation \ifx\tableofcontents\undefined% \else\let\@tocORI\tableofcontents\fi% -permit toc normal processing \ifx\pdfstringdef\undefined% -Save orginal \contentsline for hyperref. \else\let\contentslineORI\contentsline\fi% % Coding to bypass pb of duplicate in hyprref < 6,69f %\ifx\undefined\pdfstringdef\@tempa% Using pdfTeX hyperref should % \else\ifx\theHchapter\undefined% have no \thechapter otherwise % \else\@tempa% it complains arguing there is a duplicate section % \fi% #, %\fi% so we no more define \thechapter in that case. \@ifundefined{l@chapter}{% -...................................... \l@chapter \def\@tempa{% \def\l@chapter####1####2{\addpenalty{-\@highpenalty}% \vskip 1.0em plus\p@\@tempdima 1.5em% -numbering size \begingroup% \parindent \z@ \rightskip \@pnumwidth \parfillskip -\@pnumwidth% \bfseries \leavevmode \advance\leftskip\@tempdima \hskip -\leftskip% ####1\nobreak\hfil \nobreak\hbox to\@pnumwidth{\hss ####2}\par% \penalty\@highpenalty% \endgroup}}% \ifx\RIfM@\undefined\@tempa% -use l@chapter \else% % -even with AmS styles \ifx\fr@RIfM@cls\undefined\@tempa \fi% -but not for AmS classes \fi}{}% -undefined in article.sty % Due to resetting of chapter counter at part change we have to better \@ifundefined{theHchapter}{}% -qualify the chapter anchor names. {\renewcommand{\theHchapter}{\arabic{part}.\arabic{chapter}}}% % % General code for generating replacement macros for \cite \nocite etc. % \@gG{a string "s" for letting \@"s"@ORI as the original macro} % {original macro name -without backslash} % {string "/" if original macro had no [optional arg] otherwise empty} % "1" if original macro has one req. [o.p. arg 1] % "2" if original macro has two req. [o.p.1][o.p.2] % "//"if no optional arg but more than one required arg: % {number of required args} % default is 1, maximum is 3. \def\@gG##1##2##3##4{% \def\@temp@{\expandafter\let\csname @##1@ORI\endcsname=}% \expandafter\@temp@\csname ##2\endcsname% \if##3\empty% \if2##4% \expandafter\def\csname ##2\endcsname####1####2% {\protect\atgG{##1}{{####1}{####2}}}% \else% \if3##4% \expandafter\def\csname ##2\endcsname####1####2####3% {\protect\atgG{##1}{{####1}{####2}{####3}}}% \else% \expandafter\def\csname ##2\endcsname####1% {\protect\atgG{##1}{{####1}}}% \fi% \fi% \else% -Case of just one required argument, check optional args: \if/##3\expandafter\def\csname ##2\endcsname{\protect\atgH{##1}}% \else% \if2##4\expandafter\def\csname ##2\endcsname{\protect\atgN{##1}}% \else\expandafter\def\csname ##2\endcsname{\protect\atgM{##1}}% \fi% \fi% \fi}% \def\atgG##1##2{\bgroup\@ifFTYfalse\@Fstr% \expandafter\csname @##1@ORI\endcsname##2\egroup}% \def\atgH##1##2{\bgroup\@ifFTYfalse\@Fstr% \expandafter\csname @##1@ORI\endcsname{##2}\egroup}% \def\atgM##1{\@ifNextNB[{\@gM@@{##1}}{\@gM@@{##1}[\empty]}% -]emacs }% \def\atgN##1{\@ifNextNB[{\@gM@@@{##1}}{\@gM@@@{##1}[\empty]}% -]emacs }% \def\@gM@@##1[##2]##3{\@gM@@@{##1}[##2]{##3}{}}% \def\@gM@@@##1[##2]##3##4{\bgroup\@ifFTYfalse\@Fstr% \xdef\@temp@{\noexpand\@gG@{##3}{##4}}\egroup% \ifx\empty##2\let\@gG@=\empty% \else\protected@edef\@gG@{[##2]}\fi% \let\@typeset@protect\protect% \protected@edef\@temp@{\noexpand\expandafter% \noexpand\expandafter% \noexpand\csname @##1@ORI\noexpand\endcsname% \@temp@}\@temp@}% % Nullify Babel mechanism which doesn't run correctly in its current version \ifx\babel@sanitize@arg\undefined\else% \def\babel@sanitize@arg##1{##1}% \wlog{\frenchname.sty\string: use of the babel package force me to nullify % \noexpand\babel@sanitize@arg.}% \fi% \ifx\ifthenelse\undefined\else\let\@iTeORI\ifthenelse% \long\def\ifthenelse##1##2##3{\@ifFTYfalse\@iTeORI{##1}% {\@ifFTYback##2}{\@ifFTYback##3}}% \fi% \ifx\texttt\undefined\else\@gG{xt}{texttt}{/}{1}% -...................... \texttt \MakeRobustCommand{texttt}\fi% \ifx\hyperbaseurl\undefined\else\@gG{hl}{hyperbaseurl}{/}{1}\fi% -. \hyperbaseurl \ifx\Ginclude@graphics\undefined\else\@gG{ig}% -.............. \Ginclude@graphics {Ginclude@graphics}{/}{1}\fi% -. (\includegraphics) % As \citeyear is in various packages we check first for natbib.sty and \ifx\NAT@citex\undefined% -then modify all \cite... commands via \@citex. \ifx\cite\undefined\else\@gG{c}{cite}{1}{1}\fi% -.................... \cite \ifx\citeyear\undefined\else\@gG{cy}{citeyear}{/}{1}\fi% -........... \citeyear \else% -....................................................... Natbib \cite... \let\@cxORI\@citex% \def\@citex[##1][##2]##3{\@ifFTYfalse% \let\mbox\mboxORI% \@cxORI[##1][##2]{##3}\aftergroup\@ifFTYback}% %%%%%%%%%%%%%%%%%%%%%%% %Following code for Natbib and jurabib wrong, obsolate and misplaced.2006/08/15 %\@gG{fc}{fullcite}{1}{1}% %\@gG{cin}{citation}{/}{1}% %\def\@lbibitem[##1]##2{\protected@edef\jb@key{##2}\def\jb@tempb{##1}}% \@gG{cin}{citation}{/}{1}% -............................................\citation \ifx\ifjb@index@bib\undefined\let\ifjb@index@bib\iffalse\fi% \ifx\jb@lbibitem\undefined\else% -............... JURABIB ........ \jb@lbibitem % Modify jurabib definition of \jb@lbibitem as of jurabib v0.6 (2004/01/25) % with a \protected@xdef for \jb@key. \def\jb@lbibitem[##1]##2{% \gdef\jb@tempb{##1}% \protected@xdef\jb@key{##2}%\gdef\jb@key{##2}% \ifjb@index@bib% \jb@call@index{aut}{##2}% \jb@call@index{ed}{##2}% \jb@call@index{org}{##2}% \fi% \endgroup}% \@gG{fc}{fullcite}{1}{1}% -.......................JURABIB.............\fullcite \fi% \fi% \ifx\nocite\undefined\else\@gG{nc}{nocite}{/}{1}\fi% -................... \nocite % As \bibcite has not originally any argument the following definition % is remove and \@newl@bel is introduced in replacement of \newlabel. %\ifx\bibcite\undefined\else\@gG{bc}{bibcite}{1}{1}\fi%............... \bibcite \ifx\backcite\undefined\else\@gG{bkc}{backcite}{//}{2}\fi% -........... \backcite \ifx\bibitem\undefined\else\let\@biORI\bibitem% -...................... \bibitem \def\bibitem{\@LiN\@ifNextNB[{\@bi@cb}{\@bi@ca}% -]emacs }% \def\@bi@ca##1{\@biORI{##1}\@LiB}% \def\@bi@cb[##1]##2{\@biORI[##1]{##2}\@LiB}% \fi% \expandafter\ifx\string\bt@@item\undefined% -... bibtopic \\bt@@item \else\@gG{bti}{\string\bt@@item}{1}{1}% \fi% % Take in account varioref package if present at \begin{document}: \ifx\vref\undefined\else% -Nullify \@vrfCode if varioref is \ifx\reftextvario\undefined\let\@vrfCode\undefined% -now loaded. \fi\fi% % \ifx\ref\undefined\else\@gG{r}{ref}{/}{1}\fi% -............................. \ref \ifx\tag\undefined\else\@gG{tG}{tag}{/}{1}\fi% -............................ \tag \ifx\pageref\undefined\else\let\pageref@ORI\pageref% \let\f@pageref\pageref\@gG{fpr}{f@pageref}{/}{1}% \def\pageref{\ifFTY\expandafter\f@pageref\else% -....................\pageref \expandafter\pageref@ORI\fi}% \fi% \csname @vrfCode\endcsname% -load mods for varioref package \vref, \vpageref \xdef\@lim{}\let\ifMOVING\iffalse% % The label for the subfigure package ...........................\sf@@sub@label \ifx\sf@@sub@label\undefined\else\@gG{ss}{sf@@sub@label}{/}{1}\fi% % Set code for labels in margin. \def\@temp@{% \def\label{\protect\@LabeL}% -needed to be protected for \thanks % Remove patch $\label$ for Simon Pierre DESROSIERS 9/09/05 % \def\@LabeL{\ifmmode\expandafter\s@LabeL\else\expandafter\t@LabeL\fi}% % \def\s@LabeL####1{\gdef\r@LabeL{\label{####1}}\aftergroup\r@LabeL}% % New patch for \label en mode math. 4/07/2006 % \def\r@LabeL{\ifx\@lim\empty% -Special def to put labels in margin \else\marginpar{\@lim@}\xdef\@lim{}% -at end of maths $$. \fi}% -No need to nullify MOVING after group. \def\m@LabeL{\def\@setMGtrue{\let\ifMOVING\iftrue}% \ifmmode\@setMGtrue% -If maths go like a moving block. \aftergroup\r@LabeL% -Do final margin at end of maths group. \fi% \expandafter\t@LabeL}% -Go process \label as usual. \def\@LabeL{\ifMOVING\expandafter\t@LabeL% -If already moving process as usual \else\m@LabeL% -else test for maths. \fi}% % \def\t@LabeL####1{\@ifFTYfalse\if@labelsinmargin\ifMOVING% \xdef\@lim{\ifx\@lim\empty\else\@lim\@@par\relax\fi[####1]}% \gdef\@lim@{\@ifFTYfalse\hbadness=\@M\tt\@lim\@ifFTYback}% \else\marginpar{% \@ifFTYfalse\hbadness=\@M\tt[####1]\@ifFTYback}\fi\fi% % how suppress Overful \hbox here? \bgroup\@Fstr\@lORI{####1}\egroup\@ifFTYback}% }% \ifx\fr@RIfM@cls\undefined\else% -isolate maketitle action with AmS classes. \let\@mtORI\maketitle% -............................................ \maketitle \def\maketitle{{\@mtORI}}% -avoid removing of keywords environement. \fi% \ifx\label\undefined\else\let\@lORI\label% -.............................. \label \@temp@% -new def apply \let\ltx@label\label% -for amsmath.sty \fi% %instead this coding, active chars in \label must be protected inside a \thanks % As the internal macro of \newlabel is \@newl@bel #1 the following % definition of \newlabel is removed and replace by \@newl@bel. %\ifx\newlabel\undefined\else\@gG{nl}{newlabel}{/}{1}\fi%............ \newlabel \ifx\@newl@bel\undefined\else\@gG{nl}{@newl@bel}{//}{3}\fi% -......... \@newl@bel \def\@temp@{% \let\@aclORI\addcontentsline% -............................ \addcontentsline \global\let\ifCG\iftrue% -Nullify if-guillemets on a new sectioning \def\addcontentsline####1####2####3{\@ifFTYfalse\bgroup\@Fstr% \@aclORI{####1}{####2}{####3}\egroup\@ifFTYback}% }% \@ifundefined{addcontentsline}{\gdef\addcontentsline##1##2##3{}}% -dummy def {\@temp@}% \let\ifFrench\iffalse% -let it be known now \def\@temp@{% \def\index{\bgroup\ifFrench\@DFP\fi% -Is further redefined \expandafter\egroup\@iORI}% -inside \footnote. }% \ifx\index\undefined\else\let\@iORI\index% -.............................. \index \@temp@% -new def apply \fi% % \ifx\list\undefined\else% -Mods to keep track \let\@liORI\list% -that we are in a list environment ........ \list \fi% \let\@topsepORI\topsep% -ans save original vertical \let\@partopsepORI\partopsep% -spaces \let\@itemsepORI\itemsep% -so that we could warn when \let\@parsepORI\parsep% -user try to change them. %\def\GOfrench{continuation -emacs pb- \def\warn@seps{\def\topsep{\@w@s{\string\topsep}\@topsepORI}% \def\partopsep{\@w@s{\string\partopsep}\@partopsepORI}% \def\itemsep{\@w@s{\string\itemsep}\@itemsepORI}% \def\parsep{\@w@s{\string\parsep}\@parsepORI}% \def\@tempa{verse}\def\@tempb{quotation}% \ifx\@tempa\@currenvir\let\@w@s\@gobble\else% \ifx\@tempb\@currenvir\let\@w@s\@gobble\fi% \fi% }% \def\@w@s##1{\ifFTSW\f@issue% \@fw{-58- %\@txt@msg{valeur de ##1 ignor\'ee}% % dans l\string'environnement \@currenvir% }[##1]\fi}% \def\org@seps{\let\topsep\@topsepORI% \let\partopsep\@partopsepORI% \let\itemsep\@itemsepORI% \let\parsep\@parsepORI% }% \def\list##1##2{\def\@inAlist{}\@liORI{##1}{% \ifx\@trivlist\@tlORI\else\warn@seps\fi% ##2\org@seps}}% \ifx\@makecaption\undefined\else\let\@mcORI\@makecaption\fi% -.... \@makecaption % \ifx\captionseparator\undefined% \def\captionseparator{~--}% -............................ \captionseparator \fi% \let\ifFTY\iffalse% -Let it be knwon temporary. % \captionseparator is off with memoir.cls, use \captiondelim. \ifx\@contdelim\undefined\else% -..............(ccaption/memoir) \@contdelim \ifx\@memerror\undefined% \let\@cdORI\@contdelim% -The definition for ccaption: \def\@contdelim{\ifFTY\space\else\@cdORI\fi}% \else%\let\@contdelim\@cdORI% -Don't modify \@contdelim for memoir.cls \let\captionseparator\empty% -Suppress our \captionseparator for table/figure \let\captionfont\@conttfont% -Apply requested memoir font. \fi% \fi% \def\ifFTY{\ErrFrench}% \ifx\captionfont\undefined% -..................................... \captionfont \let\captionfont\emph% -Std is italics. \else\let\@cfORI\captionfont% -Might be Caption2, thus \def\captionlabelfont{\upshape}% -set defaults. \def\captionfont{\itshape\@cfORI}% \ifx\captionlabeldelim\undefined\else% -Use Caption2 delimitor cs \let\captionlabeldelim\captionseparator% -if any, and set our \let\captionseparator\empty% -default value. \fi% \fi% \def\@makecaption##1##2{\ifFTY% \def\@secondofmany####1####2\void{####2}% % Removed mod for empty \caption (pb with hyperref) 2007/06/28 % \protected@edef\@tempa{\@secondofmany##2\void}% % The previous coding don't remove the unusefull \captionseparator: \def\@tempa{\@secondofmany##2\void}% -To debug. \ifx\@tempa\empty% \let\captionseparator\empty% \fi% \@mcORI{##1}{\relax% -for AmSLaTeX V1.2 96/11 \captionfont{##2}}% \else\@mcORI{##1}{##2}\fi}% % %Leslie claims that "The footnotemarker is regarded as having zero width, which %is appropriate when it comes at the end of line"(p164) <== not a French habit. \def\@temp@{% \def\thanks####1{\global\let\@makefntext\fr@makefntext% -........... \thanks \bgroup% \ifFTY\ifhmode\ifdim\lastskip>\z@\unskip\fi\nobreak\fi% \def\@footnotemark{\hbox{\@textsuperscript{\normalfont\,\@thefnmark}}}% \fi\let\ifFTY\iffalse\@thORI{####1}% \egroup}% }% \ifx\thanks\undefined\else\let\@thORI\thanks\@temp@\fi% \let\ifFTY\iffalse% -temp def for next processing \ifx\@makefnmark\undefined\else\let\@mfnmORI\@makefnmark% -........ \@makefnmark \def\@makefnmark{\ifFTY\hbox{\@textsuperscript{\normalfont% \ifx\thefootnote\relax\else\,\fi% \@thefnmark}}% \else\@mfnmORI\fi}% \fi% \def\@temp@{\long\def\fr@makefntext####1{% footline starts here % \bgroup% \ifFTY\def\@tempa{footnote}\let\@tfnORI\@thefnmark% \ifx\@tempa\@mpfn% -do it only for page footnotes not minipages ones \def\@thefnmark{% -marker under the footline, no more in superscript. % two grouping levels in pure 2e. \egroup\egroup% -no point when no marker \long\def\@tempa{\fnsymbol{footnote}}% \ifx\@tempa\thefootnote% -When using symbols put them \expandafter\raise+0.55ex% -higher (cf Lexique IN p. 33) \fi% -\thefootnote \hbox\bgroup\textnormal\bgroup% \def\@temp@{% \ifx\fr@RIfM@cls\undefined% -Remove space when \thanks and AmS classes. \ifx\thanks\relax\else\kern-1.1\parindent\fi% -.1 should be explained. \else \kern-\parindent% -otherwise remove superfluous spacing. \fi% %\@ifnextchar\relax{\def\@temp@{\,}}% Prefered: \@ifnextchar\relax{\def\@temp@{\hphantom{.}\kern+0.25em}}% {\def\@temp@{.\kern+0.25em}}% }% \expandafter\@temp@\@tfnORI\@temp@% }% \leavevmode\kern+0.5em% -add some spacing for at least 3 digits \else\def\@thefnmark{\@tfnORI\,}\fi% -add thin space in mpfootmarks \fi\@mfntORI{####1}\egroup}% -\@makefntext }% \let\@mfntORI\@makefntext\@temp@% \let\@makefntext\fr@makefntext% -............................. \@makefntext \def\ifFTY{\ErrFrench}% \let\@fntORI\@footnotetext% -nullify marginpar in ................ \@footnotext \long\def\@footnotetext##1{\bgroup\let\if@labelsinmargin\iffalse% \@fntORI{##1}\egroup}% % Why \footnote doesn't \unskip the previous space? % Allow hyphenation too with \nobreak (as suggested by Bernd Raichle) \let\@fnORI\footnote% -............................................... \footnote \def\footnote{\bgroup% \def\index{\@ifnextchar[{\f@index}% -] {\f@index@}% }% \def\f@index[####1]####2{\@ifFTYfalse\@iORI[####1]{####2}% \@ifFTYback}% \def\f@index@####1{\@ifFTYfalse\@iORI{####1}\@ifFTYback}% \ifFTY\ifhmode\ifdim\lastskip>\z@\unskip\fi% \nobreak\fi\fi% \ifmmode\let\@fnORI\fr@footnote\fi% \@ifNextNB[% -] for balancing \@Footnote\@Fntnorm}% \long\def\@Footnote[##1]##2{\@fnORI[##1]{##2}% \egroup\@ifNextNBc\footnote\refmark\@Fntcoma{}}% \long\def\@Fntnorm##1{\@fnORI{##1}% \egroup\@ifNextNBc\footnote\refmark\@Fntcoma{}}% \def\@Fntcoma{\ifFLA\@textsuperscript{,}\nobreak\fi}% \def\@Fxloat##1[##2]{\@xfORI{##1}[##2]\csname @Fend\@currenvir\endcsname}% \let\@fgeORI\figure\let\@efgeORI\endfigure% -needed for figurette \def\@temp@{\let\@fgeORI\figure% -..................................... \figure \def\figure{\let\ifMOVING\iftrue% \let\if@minipage\iftrue% \@set@fr@fn@% \ifx\@xfORI\undefined% \let\@xfORI\@xfloat\let\@xfloat\@Fxloat% \fi% \@fgeORI}}% \ifx\figure\undefined\let\@temp@\relax\fi\@temp@% \def\@Fendfigure{\let\@efgeORI\endfigure% -.......................... \endfigure \def\endfigure{\@efgeORI% \ifx\@lim\empty\else\marginpar{\@lim@}% \xdef\@lim{}\fi\let\ifMOVING\iffalse}}% \ifx\endfigure\undefined\let\@Fendfigure\relax\fi% \let\@cnORI\caption% -\caption is redefined in the table environement : \def\@tablescaption{\@dblarg\@t@blescaption}% -footnote will be only \let\mboxORI\mbox% -save \mbox definition. \def\mbox##1{\leavevmode\hbox{\protect\@set@fr@fn@##1}}%% -.............. \mbox \def\@set@fr@fn@{\ifFrench\let\footnote\fr@footnote\fi}% -Footnote's text lost \def\fr@footnote{\@ifNextNB[\fr@fn@{\fr@fn@[]}% -] in tables }% -caption. \def\fr@fn@[##1]##2{\footnotemark% \f@issue% \@fw{-8- % -\@txt@msg{\string\footnotetext{##2} perdu.} %\@txt@msg{Coder \'event. \string\protect\string\footnote}% }[##2]% -\mbox }% \def\@t@blescaption[##1]##2{\let\cur@fn\footnote% -footnote mark in tables \let\footnote\fr@footnote% -caption and text \@cnORI[##1]{##2}\let\footnote\cur@fn}% -will be lost. \def\@temp@{% \let\@tbeORI\table% -footnotes made like in minipages ...... \table \def\table{\let\ifMOVING\iftrue% \let\if@minipage\iftrue% \ifFLA\begingroup% \def\@mpfn{mpfootnote}% \def\thempfn{\thempfootnote}\c@mpfootnote\z@% \ifx\@captype\undefined\def\@captype{table}\fi% -for ams classes \let\caption\@tablescaption% -allow page footnote in \caption \let\@footnotetext\@mpfootnotetext\fi% \ifx\@xfORI\undefined% \let\@xfORI\@xfloat\let\@xfloat\@Fxloat% \fi% \@tbeORI}% \expandafter\let% \expandafter\@dbtbeORI\csname table*\endcsname% -......... \table* \expandafter\def\csname table*\endcsname{\let\ifMOVING\iftrue% \let\if@minipage\iftrue% \ifFLA\begingroup% \def\@mpfn{mpfootnote}% \def\thempfn{\thempfootnote}\c@mpfootnote\z@% \ifx\@captype\undefined\def\@captype{table}\fi% -for amsbook \let\caption\@tablescaption% -allow page footnote in \caption \let\@footnotetext\@mpfootnotetext\fi% \ifx\@xfORI\undefined% \let\@xfORI\@xfloat\let\@xfloat\@Fxloat% \fi% \@dbtbeORI}% }% \ifx\table\undefined\let\@temp@\relax\fi\@temp@% \def\@Fendtable{% -Will be called by \@Fxloat. \let\@etORI\endtable% -................................... \endtable \def\endtable{\ifFLA\par% \vskip-\lastskip% -make footnotes here \ifvoid\@mpfootins\else\vskip\skip\@mpfootins% \footnoterule\unvbox\@mpfootins\fi% \fi\@etORI\ifFLA\endgroup\fi% \ifx\@lim\empty\else\marginpar{\@lim@}% \xdef\@lim{}\fi\let\ifMOVING\iffalse}% }% \ifx\endtable\undefined\let\@Fendtable\relax\fi% \def\@temp@{\def\endtable{\ifFLA\endgroup% -\endtable may be \relax \expandafter\let\csname endtable*\endcsname\endtable% -as in endfloat \fi}% }% \ifx\endtable\relax\@temp@% -is also used in frenchll for testing purpose \fi% \expandafter\def\csname @Fendtable*\endcsname{% -Will be called by \@Fxloat. \expandafter\let% \expandafter\@dbetORI\csname endtable*\endcsname% -...... \endtable* \expandafter\def% \csname endtable*\endcsname{\ifFLA\par% \vskip-\lastskip% -make footnotes here \ifvoid\@mpfootins\else\vskip\skip\@mpfootins% \footnoterule\unvbox\@mpfootins\fi% \fi\@dbetORI\ifFLA\endgroup\fi% \ifx\@lim\empty\else\marginpar{\@lim@}% \xdef\@lim{}\fi\let\ifMOVING\iffalse}% }% \expandafter\ifx\csname endtable*\endcsname\relax% \expandafter\let\csname endtable*\endcsname\endtable% \fi% -for ams classes % The following code is for beamer which don't use float for figures/tables. \expandafter\ifx\csname\string\table\endcsname\undefined\else% \expandafter\let\expandafter\BfigureORI\csname\string\figure\endcsname% \expandafter\def\csname\string\figure\endcsname{\@Fendfigure\BfigureORI}% \expandafter\let\expandafter\BtableORI\csname\string\table\endcsname% \expandafter\def\csname\string\table\endcsname{\@Fendtable\BtableORI}% \fi% %#< \def\drapeaufg{\ifFLA% -........................................... \drapeaufg \raggedright\hbadness=6000% \rightskip=0.3em plus 0.75em\hfuzz=0.4em\relax% \let\enddrapeaufg\par\fi}% \def\drapeaufgIN{\ifFLA% -................/........................ \drapeaufgIN \raggedright\hbadness=6000% \rightskip=0.3em plus 0.75em\hfuzz=6em% \lefthyphenmin=12\righthyphenmin=10\relax% \let\enddrapeaufgIN\par\fi}% \def\drapeaufd{\ifFLA\raggedleft% -................................ \drapeaufd \let\enddrapeaufd\par\fi}% \def\drapeaufdIN{\ifFLA% -......................................... \drapeaufdIN \raggedleft\hfuzz=6em% \lefthyphenmin=12\righthyphenmin=10\relax% \let\enddrapeaufdIN\par\fi}% %#> %\GOfrench{ -emacs pb- % continuing definition of \GOfrench \ifx\undefined\Hy@PDFDef\let\Hy@PDFDef\pdfstringdef\fi% -......... \pdfstringdef \ifx\undefined\Hy@PDFDef\else% -For the old hyperref package. \let\@hpdORI\Hy@PDFDef% \def\Hy@PDFDef##1##2{\@ifFTYfalse\afterassignment% \@Fstr\@hpdORI{##1}{##2}\@ifFTYback}% \fi% \ifx\pdfstringdef\undefined\else% \let\pdfstringdef\Hy@PDFDef% \fi% \let\@lti\labelitemi\let\@ltii\labelitemii% \let\@ltiii\labelitemiii\let\@ltiv\labelitemiv% \@ifo% -define French options, GOfrench part 1 \let\@ifo\undefined% -now release memory \@doFh% -process language.dat, GOfrench part 2 \let\@doFh\undefined% -release memory \let\hyphex\undefined\let\frhyphex\undefined% \let\@temp@\undefined% \let\ifFTY\iffalse\let\ifFTR\iffalse% -if begin language isnt \let\ifFLA\iffalse\let\ifFMA\iffalse\let\ifFH\iffalse% -french % Get original \everypar control command but not hebrew macro. \def\@tempa##1{\o@everypar{\rl@everypar##1}}% \ifx\@tempa\everypar\let\TeXeverypar\o@everypar% \else\let\TeXeverypar=\everypar% \fi% % % As eTeX is bugged (no respect of \csname beginL\endcsname=\relax when % TeX--XeT option disabled), Philip Taylor suggested the following code % to replace the test about \beginL: % %\ifx\beginL\undefined\else% \ifx \TeXXeTstate \undefined% \edef \next {\ifx \beginL \undefined 00\else 01\fi}% \else% \edef \next {\ifnum \TeXXeTstate = 0 00\else 01\fi}% \fi% \if \next\let\beginL\relax\let\beginR\relax% -patch eTeX. \else% % assume Left to right for *the* document if TeX--XeT. \edef\@fepORI{{\the\TeXeverypar}}% \def\@SetBFWdirection{\csname begin% \beginFWdirection\endcsname}% \TeXeverypar={\@SetBFWdirection% \let\@SetBFWdirection\relax% {\let\@nodocument\relax% -In case hebrew. \@fepORI}}% \fi% \let\ErrFrench\@Ffnt\def\@Ffnt##1{}% % insure files integrity \ifx\undefined\babel@core@loaded% -already done for Babel in .ldf \protected@write\@auxout{}{\protect% \csname auxWARNINGi\protect\endcsname{\protect\typeout% {-34- this file and other auxiliary files require to % use the following}}}% \protected@write\@auxout{}{\protect% \csname auxWARNINGi\protect\endcsname{\protect\typeout% {-34- LaTeX packages: \frenchpack!}}}% \protected@write\@auxout{}{\protect% \csname auxWARNINGi\protect\endcsname{\protect\typeout% {-34- check \protect\protect\protect\usepackage% \protect\space or remove these files. % Typesetting is aborted!}% \protect\stop}}% %\let\auxWARNINGi=\@gobble% set in the preambule \fi% % for french guillemets with a XeLaTex motor under utf8 % patch inclusion: \@finput{frpatch.sty}% \ifx\FSfd@patch\FSfd\else \f@issue% \@fw{-42- % %\@txt@msg{The French patch file (frpatch.sty) is not suitable^^J}% %\@txt@msg{for this version of the "\frenchpack" package dated \FSfd}% }% \batchmode\@@end% \fi% \let\@Ffnt\ErrFrench\let\ErrFrench\undefined% -ditto %%% Since "msg" is in use, \InputIfFileExists no more input the file, why? %%% \InputIfFileExists{\frenchname.cfg}{% load site config file. %%% \f@issue% %%% \@fw{-48- %\@txt@msg{Lecture du fichier de }% %%% %\@txt@msg{configuration de \frenchpack}% %%% }}{}% %%% so we now call \IfFileExists ... \@finput % by default, the nobreak punctuation set like by Bernard Gaulle \NobrkSpacesFpro% \IfFileExists{\frenchname.cfg}{% -load site config file. \f@issue% \@fw{-48- %\@txt@msg{Lecture du fichier de }% %\@txt@msg{configuration de \frenchpack}% }% \@finput{\frenchname.cfg}}{}% \beginlanguage}% -now the new language (end of \GOfrench) % \let\@dORI\document% -................................... \begin{document} \def\document{% -\slidesonly of seminar must not gobble me! \ifx\noxcomment\undefined\else% \global\let\@x@hk\xcomment@hook\global\noxcomment\fi% \ifx\btxselectlanguage\undefined% \else\ifx\babel@savevariable\undefined% \f@issue\@fw{-87- % %\@txt@msg{ERREUR \string: }% %\@txt@msg{babelbib s'utilise uniquement avec babel}% }% \stop% \fi% \fi% \ifx\@bglngpk\babel@savevariable% \else% -Babel loaded after french. \f@issue\@fw{-71- % %\@txt@msg{ATTENTION : }% %\@txt@msg{si babel est utilis\'e, mettre \frenchname\space en option}% }% \fi\let\@bglngpk\undefined% \@dORI% -execute original \document \GOfrench% -now initiate the style \let\GOfrench\undefined% -release memory \ifx\noxcomment\undefined\else\let\xcomment@hook\@x@hk% \expandafter\xcomment@hook\fi}% % now reset < ` ' > as other chars \@makeother`\@makeother<\@makeother>\@makeother'% % ReRead of aux file at \end{document} may create problems. % As French things are already applied, so it's unuseful after \end{document} \let\enddocumentasusual\enddocument% -............................ \enddocument \def\enddocument{\def\@tempa{\AtEndDocument{\french\f@clearpage% \global\let\ifCLA\iffalse% -No more page, thus no layout. \let\ifCLAfrench\iffalse% \endfrench}}% %%% Notice we specially use \AtEndDocument to avoid AmS hook material %%% to print outside of the current (final) page the \@setaddresses. \csname f@lastpage\endcsname% -Allow user mods here. \@CGroup% -end any remaining opened << group \ifFLA% -At the real end of document we should \@tempa% -output last page in french. \def\@tempa{empty}\ifx\@specialstyle\@tempa% \else\gdef\@specialstyle{french}\fi% \fi% \let\GOfrench\relax% -Stop to generate \beginL. \switchtolanguage\englishTeXmods% \let\f@clearpage\clearpage% -Keep \clearpage for \AtEndDocument % Avoid the lastpage package do a \clearpage until last \french page \ifx\lastpage@putlabel\undefined% -and avoid any change of \else\let\clearpage\relax% -the page counter: \let\lastpage@putlabelORI\lastpage@putlabel% \def\lastpage@putlabel{\addtocounter{page}{+1}\lastpage@putlabelORI% \addtocounter{page}{-1}}% \fi% % Redef of \@newl@bel due to Babel \select@language \ifx\undefined\babel@core@loaded\else% -i.e. \@testdef: \ifx\@testdef\undefined\else% -................ \newlabel \@gG{@td}{@testdef}{//}{3}\fi% -............ \@testdef \fi% % Let few stuff expand in \edef for TeX4ht. \ifx\ConfigureToc\undefined\else% \let\@ifFTYfalse\relax\let\@ifFTYback\relax% \@Fstr\let\@Fstr\relax% \fi% \enddocumentasusual% }% \let\@whatUCH\relax% -\@whatUCH is \relax with french light. %#< % =============================== % | Hyphenation | % =============================== % % Allow or not hyphenation of words starting with a capital letter \def\allowfulluchyph{\@noBDfr% \uchyph=1\let\@whatUCH\allowfulluchyph% -.. \allowfulluchyph \let\@uchbox\empty}% \def\allowuchyph{\@noBDfr% \uchyph=1\let\@whatUCH\allowuchyph% -.............. \allowuchyph \let\@uchbox\hbox}% \def\disallowuchyph{\@noBDfr% \uchyph=-1% -................................ \disallowuchyph \let\@whatUCH\disallowuchyph\let\@uchbox\hbox}% \def\notthyphenation{\@noBDfr% {\tt\hyphenchar\font=-1}% -.................\notthyphenation \let\ifTTH\iffalse}% \def\tthyphenation{\@noBDfr% {\tt\hyphenchar\font=`\-}% -.................. \tthyphenation \let\ifTTH\iftrue}% \let\@whatUCH\allowuchyph% -is normaly the TeX default \let\ifTTH\iffalse% -we presume that there no tt hyph. by default \let\ifFH\iffalse% -we assume we start with no French hyphenation (wrong!) % % A macro asking to load a language specific exceptions file. % Argument provides the language name. File name is in language.dat \def\hyphex#1{% -available before \begin{document} \if#1\empty% -........................................... (\hyphex) \else% -a general macro for other languages \edef\@excn{#1}\fi% \let\if@FE\iftrue}% -\hyphex{} before begin document will % % load exceptions files \def\frhyphex{% -available before \begin{document} \if@PMF\else\hyphex{\frenchname}\fi}% -................. \frhyphex %#> % =============================== % | Translations | % =============================== % % The following is to ``repair'' default captions used in standard V2 styles % prior October 91 as "Figure n:" and "Table n:". \def\@eatDP{\@ifNextNB:{\@gobble}{}}% %\def\@eatP#1{\@ifNextNB.{\@gobble}{}}% for any AmS class \def\f@ffrench{\ifx\listoffigures\relax\else% \figurename~\thefigure\ifFTY\captionseparator\fi\fi% \ifFTY\expandafter\@eatDP\fi}% \def\f@tfrench{\ifx\listoftables\relax\else% \tablename~\thetable\ifFTY\captionseparator\fi\fi% \ifFTY\expandafter\@eatDP\fi}% \def\unnumberedcaptions#1{\@noBDfr% %............................... \unnumberedcaptions \expandafter\let\csname listof#1s\endcsname\relax% \ifx\listoffigures\relax\ifx\listoftables\relax% \let\unnumberedcaptions\undefined% \fi\fi% }% % % Titles ....................................................... \captionsnames \@ifundefined{captionsnames}{\def\captionsnames{\relax}\let\@tempa\@currname% % load English captions but force language name for ... \xdef\@currname{fenglish}\@finput{fenglish.sty}\let\@currname\@tempa}{}% \def\languagename{french}% -... any further msg message with \kbencoding. \let\ifnonenglishheadings\iftrue% -Bypass to a LaTeX slight bug... %#< \def\tocreduite#1#2{}% -Reduce toc to a toc-summary for \sommaire. \def\@sEAT#1#2{\@sORI*{\sommairename}}% -Normally a \sommaire is short \def\@cEAT#1#2{\@chORI*{\sommairename}}% -and need no headings. \def\@smr[#1]{\let\@tempa\contentsname% -Save it for \let\contentsname\sommairename% -memoir.cls. \ifx\tableofcontents\undefined\else% \begingroup\ifcase #1 0% -Process \sommaire[1-4] \or \let\l@paragraph\tocreduite% -.....\sommaire[1] \let\l@subparagraph\tocreduite% \or \let\l@subsubsection\tocreduite% -.\sommaire[2] \let\l@paragraph\tocreduite% \let\l@subparagraph\tocreduite% \or \let\l@subsection\tocreduite% -....\sommaire[3] DEFAULT \let\l@subsubsection\tocreduite% \let\l@paragraph\tocreduite% \let\l@subparagraph\tocreduite% \else \let\l@section\tocreduite% -.......\sommaire[4] \let\l@subsection\tocreduite% \let\l@subsubsection\tocreduite% \let\l@paragraph\tocreduite% \let\l@subparagraph\tocreduite% \fi% \let\@sORI\section\let\@chORI\chapter% \let\section\@sEAT\let\chapter\@sEAT% \let\@ToCisNOT\relax% -let it be a sommaire first ie there is no toc \def\@starttoc##1{% -\@startoc locally redefined to let toc reusable \ifx\fr@RIfM@cls\undefined% -special case AmS document class \else\chapter*{\sommairename}% -print sommaire now \fi% \begingroup\makeatletter% -any case require a second pass \immediate\openin\@inputcheck \jobname.##1 % \if@filesw \expandafter\newwrite\csname tf@##1\endcsname\fi% \ifeof\@inputcheck \@Ffnt{\jobname.##1}% \if@filesw\immediate\openout \csname tf@##1\endcsname% \jobname.##1\relax\fi% \else\immediate\closein\@inputcheck \relax\@@input \jobname.##1 % \@ifundefined{@ToCisNOT}{% -let a toc be defined further \if@filesw\immediate\openout \csname tf@##1\endcsname% \jobname.##1\relax\fi}{}% \fi\global\@nobreakfalse \endgroup}% \ifx\fr@RIfM@cls\undefined% -special case AmS document class \else\def\contentsname{}% -dont print table of contents at all here! \fi% -in usual cases (LaTeX document classes) we do \tableofcontents\endgroup% -print the sommaire now. \def\tableofcontents{% -new def that records there is a toc in the doc \ifx\pdfstringdef\undefined% -Reset orginal \contentsline \else\let\contentsline\contentslineORI\fi% -for hyperref. \addtocontents{toc}{\protect% \let% -just to be not \protect\@ToCisNOT\protect\empty}% -as relax \begingroup% -\@starttoc locally redefined to avoid pb with Atari \def\@starttoc####1{\begingroup% -normal def without newdef of tf@ \makeatletter\@input{\jobname.####1}% \if@filesw\immediate\openout \csname tf@####1\endcsname% \jobname.####1\relax\fi% \global\@nobreakfalse \endgroup}% \@tocORI\endgroup}% -now the original toc command \fi% -of \if\tableofcontents\undefined \let\contentsname\@tempa% -Restore it for memoir.cls. }% -\@smr \def\sommaire{\@ifNextNB[{\@smr}{\@smr[3]}% -]......................... \sommaire }% -a Sommaire is a TOC in front of a document \def\@temp@{\let\if@twocolumn\iffalse}% \@ifundefined{if@twocolumn}{\@temp@}{}% \@ifundefined{abstract}{% -undefined in book \def\abstract{\let\@w@s\@gobble% \if@twocolumn\section*{\abstractname}% \else\sm@ller\begin{center}% \textbf{\abstractname\vspace*{-.5em}\vspace*{\z@}}% \end{center}\quotation\fi}% \def\endabstract{\if@twocolumn\else\endquotation\fi}}{}% \@ifundefined{resume}{% -there are styles already defining \resume \def\resume{% -.......................................................... \resume \let\@w@s\@gobble% -no warning for \parsep mod. \abstract}% \let\endresume\endabstract% -......................................... \endresume }{}% % \def\@tempa{% \def\endkeywords{\@noBDfr}% \def\keywords{\@noBDfr% -.............................................. \keywords \let\@w@s\@gobble% -no warning for \parsep mod. \quotation\noindent\sm@ller{% \ifx\fr@RIfM@cls\undefined% \else\let\textbf\textsc\fi% -for AmS classes \kwname}% \let\endkeywords=\endquotation}% -.................... \endkeywords }% \@ifundefined{keywords}{\@tempa}% {\ifx\fr@RIfM@cls\undefined% \else\@tempa% -do redefine AmS class keyords def \fi% }% \@ifundefined{endkeywords}{\let\endkeywords\relax}{}% % \def\motsclef{\keywords\relax% case any arg. % -....................... \motsclef \def\endmotsclef{\endkeywords}}% -.................... \endmotsclef % \let\ifFTR\iftrue% -Default translation is on. \ifx\texteuro\undefined\else% \let\textcurrencyORI\textcurrency% -.............................. \textcurrency \def\textcurrency{\ifFTR\expandafter\texteuro% \else\expandafter\textcurrencyORI% \fi}% \fi% \def\annexe {\@ann{\appendixname}}% -................................... \annexe \def\annexes{\@ann{\appendixname s}}% -................................. \annexes \def\@ann#1{\@noBDfr\leavevmode% \ifx\fr@RIfM@cls\undefined\else% -for AmS classes \let\chaptername\appendixname% -forget Chapter \fi% \ifx\chapter\undefined\else% \par\setcounter{chapter}{0}\setcounter{section}{0}% \def\@chapapp{\appendixname}\def\thechapter{\Alph{chapter}}% \addcontentsline{toc}{chapter}{\protect#1}% \fi}% \@ifundefined{@restonecolfalse}{\def\@restonecolfalse{}% \def\@restonecoltrue{}}{}% -dummy def \@ifundefined{@mkboth}{\def\@mkboth#1#2{}}{}% -idem \def\glossaire{\@glo{%\protect% \glossaryname}}% -............................. \glossaire \def\glossaires{\@glo{%\protect% \glossaryname s}}% -......................... \glossaires \def\@glo#1{\ifx\chapter\undefined\else% \setcounter{chapter}{0}\setcounter{section}{0}% \@restonecolfalse\if@twocolumn\@restonecoltrue\onecolumn\fi% \hbox{}% -to simulate any text that will allow the writes \clearpage% -to be done to the file instead of the terminal \ifx\fr@RIfM@cls\undefined% -no need with AmS classes \chapter*{#1% \@mkboth{\MakeUppercase{#1}}{\MakeUppercase{#1}}% }% \addcontentsline{toc}{chapter}{\protect#1}% \else\chapter*{#1}% -just this for AmS classes \fi% \ifx\undefined\@glossaryfile\else% \immediate\closeout\@glossaryfile% \ifx\undefined\glossaryentry% -dummy def .... \glossaryentry \long\def\glossaryentry##1##2{\noindent-- ##1\par}% \fi% \ifx\undefined\theglossary% % default glossary defs, type \glossary{[entry :] comments} % and use \printglossary[filename] default is jobname.gls ..... \printglossary \let\theglossary\description% \let\endtheglossary\enddescription% \let\scan@allowedfalse\makeatother% -gglo.ist call this \def\pfill##1 {}% -nullify page num. unneded \def\@pgf[##1]{\@finput{##1}}% \def\printglossary{\@ifNextNB[% -] emacs {\@pgf}{\@pgf[\jobname.gls]}}% \fi% \fi\fi}% -\input \jobname.glo will typeset the glossary %#> \def\datefrench{% \def\todayfrench{\ifx\ier\undefined\def\ier{er}\fi% \ifnum\day=1\relax 1\ier% \else \number\day\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}% }\datefrench% \if@filesw \def\ordinalSecondNam{{s}econd}% \def\ordinalSecondName{{s}econde}% \else% \def\ordinalSecondNam{{d}euxi\`eme}% \let\ordinalSecondName\ordinalSecondNam% \fi% \def\@osn#1#2{\expandafter\ifx\csname#1osn\endcsname% \relax#2\else\csname#1osn\endcsname\fi}% \def\ordinal#1{\ifcase\value{#1}\or {p}remier% \or\@osn{#1}{\ordinalSecondNam}\else\ordin@l{#1}\fi}% \def\ordin@l#1{\ifcase\value{#1}\or\or\or % {t}roisi\`eme\if@filesw{\protected@write\@auxout{}{% \protect\expandafter% \protect\gdef\protect\csname#1osn% \protect\endcsname% {{d}euxi\`eme}}}% \fi% \or {q}uatri\`eme\or {c}inqui\`eme\or {s}ixi\`eme\or % {s}epti\`eme\or {h}uiti\`eme\or {n}euvi\`eme\or {d}ixi\`eme\or % {o}nzi\`eme\or {d}ouzi\`eme\or {t}reizi\`eme\or {q}uatorzi\`eme\or % {q}uinzi\`eme\or {s}eizi\`eme\or {d}ix-septi\`eme\or {d}ix-huiti\`eme\or % {d}ix-neuvi\`eme\or {v}ingti\`eme\fi}% \def\ordinale#1{\ifcase\value{#1}\or {p}remi\`ere% \or\@osn{#1}{\ordinalSecondName}\else\ordin@l{#1}\fi}% \def\Ordinal{\expandafter\uppercase\ordinal}% \def\Ordinale{\expandafter\uppercase\ordinale}% % \def\captionsfrench{% -......................................... \captionsfrench \ifFTR% -Is French translation allowed? \ifx\captionsnames\captionsfrench\else% \let\@tdORI\today% -................................................... \today \let\f@fORI\fnum@figure% -......................................... \fnum@... \let\f@tORI\fnum@table% \let\@cnsORI\captionsnames% % The following for styles or classes: article, report and book \def\pagename{page}% \def\refname{R\'ef\'erences}% \def\abstractname{R\'esum\'e}% \ifx\bibname\undefined\else% \def\bibname{Bibliographie}% \fi% \ifx\btxselectlanguage\undefined% -Don't call \bibsfrench if babelbib loaded. \csname bibsfrench\endcsname% -more bibs-names if any. \fi% \def\contentsname{Table des mati\`eres}% \def\listfigurename{Table des figures}% \def\listtablename{Liste des tableaux}% \ifx\listalgorithmname\undefined\else% \def\ALG@name{algorithme}% \def\listalgorithmname{Liste des \ALG@name s}% \fi% \def\indexname{Index}% \def\seename{\emph{voir}}% -used normally in makeidx.sty \def\seealsoname{\emph{voir aussi}}% -added macro \seealso \def\figurename{\textsc{Fig.}}% \def\tablename{\textsc{Tab.}}% \def\sommairename{Sommaire}% \def\partname{% -"Premi\`ere partie" instead of "Part I" \ignorespaces\Ordinale{part}\space partie% \@RPtNoInDoc\noexpand\@RPtNoInToc}% \def\glossaryname{Glossaire}% -added \def\kwname{\textbf{Mots-cl\'e} : }% \def\draftname{- \noexpand\351preuve -}% -PostScript IsoLatin1 \'epreuve \def\prefacename{Pr\'eface}% \ifx\proofname\undefined\else\def\proofname{D\'emonstration}\fi% % % Comment for further dev: % Next ones depend from the class of document in use, thus the translations % should apply _only_ when the corresponding class is loaded. Thus it should % be better to define these names when loading french, not dynamically at % run time when typesetting the document. % \ifx\fr@RIfM@cls\undefined% -figure and table captions modified \let\fnum@figure\f@ffrench% -except for any AmSLaTeX V1.2 class \let\fnum@table\f@tfrench% -for which it remains unsolved pbs. \def\@RPtNoInToc{}% \def\@RPtNoInDoc{\def\thepart{}}% -nullify \thepart \else\def\@RPtNoInToc##1.{.}% -remove until dot \def\@RPtNoInDoc##1\thepart{}% -remove until value % \let\@eatDP\@eatP% \fi% % The following is only for letter \ifx\opening\undefined\else% \def\headtoname{}% \def\ccname{c.c. }% -copie conforme \def\enclname{P.j. }% -Pieces jointes \def\PSname{P.-S. :}% -Post-Scriptum \def\Objectname{Objet :}% -Object of the letter \def\YourRefname{v/r\'ef. :}% -Your reference number \def\OurRefname{n/r\'ef. :}% -Our reference number \def\emailname{m.\'el. :}% -Email address \fi% % The following is for seminar \ifx\slidename\undefined\else% \def\slidename{Transparent}% \def\listslidename{Liste des transparents}% \fi% % The following is for endnotes 98/01 \ifx\notesname\undefined\else% \def\notesname{Notes}% \fi% % The following is only for report and book ... \def\chaptername{Chapitre}% \def\appendixname{Annexe}% \let\captionsnames\captionsfrench% \fi% \else of \ifx\captionsnames\captionsfrench% \let\today\todayfrench% \def\@cORI{\@cnsORI% -Restore original caption names \let\today\@tdORI% \let\fnum@figure\f@fORI% \let\fnum@table\f@tORI}% \fi% -\ifFTR }% -end of captionsfrench %#< \iffrenchbibliography% \ifx\@rbibstyid\undefined% \let\@rbibstyid\empty% \ifx\jb@pkg@name\undefined\else% \def\@rbibstyid{jb}% \fi% \fi% \ifx\bibsfrench\undefined% \edef\@tempa{fr\@rbibstyid bib.ldf}% \IfFileExists{\@tempa}{% \f@issue% \@fW{ -65- % %\@txt@msg{\frenchname.sty charge }% %\@txt@msg{les traductions pour la bibliographie \string:}% }\@finput{\@tempa}}{}% \fi% \ifx\bibsenglish\relax% \edef\@tempa{en\@rbibstyid bib.ldf}% \InputIfFileExists{\@tempa}{}{}% \fi% \fi% %#> %%%%%%%%%%%%%%%%%% % =============================== % | Layout | % =============================== % % NB: See elsewhere in the code for appearance of \ifFLA, to find % all French layout coding. \let\@tlORI\@trivlist% \def\frenchtrivsepwarnings{\let\ifFTSW\iftrue}% -........ \frenchtrivsepwarnings \def\nofrenchtrivsepwarnings{\let\ifFTSW\iffalse}% -... \nofrenchtrivsepwarnings \long\def\frtrivseplengths#1{% -............................... \frtrivseplengths \nofrenchtrivsepwarnings% \long\def\fr@tsl{#1}% }% \def\fr@tsl{\setlength{\parsep}{0.2ex plus 0.1ex minus 0.1ex}% \setlength{\itemsep}{0.2ex plus 0.1ex minus 0.1ex}% \setlength{\topsep}{0.4ex plus 0.2ex minus 0.2ex}% \setlength{\partopsep}{1.6ex plus 0.8ex minus 0.8ex}% }% \def\frenchtrivsep{\ifFLA\def\@trivlist{% -...................... \frenchtrivsep \fr@tsl\@tlORI}% \fi} \def\nofrenchtrivsep{\let\@trivlist\@tlORI}% -................. \nofrenchtrivsep \@ifundefined{@afterindenttrue}{\let\@afterindenttrue\relax% \let\@afterindentfalse\relax}{}% \let\@aifORI\@afterindentfalse% -save first indent \edef\@piORI{\the\parindent}% -save \parindent \begingroup \catcode `| =0 \catcode `[ = 1 \catcode`] =2% \catcode `\{=12 \catcode `\}=12 \catcode`\\=12% |gdef|@xversatim#1\end{versatim}[#1|end[versatim]]% |endgroup% -running macro for versatim % \let\@FIM@\relax% -Macro is relax with french light %#< \def\@FIM@{\ifCG\else\ifFLA\ifEPG\ifEPGR\else\leftguillemets\fi\fi\fi\fi}% \let\checkitemguillemets\@FIM@% %#> \def\fr@idf{\let\@afterindentfalse\@afterindenttrue\@afterindenttrue}% \def\fr@nidf{\let\@afterindentfalse\@aifORI\@afterindentfalse}% \ifx\titlespacing\undefined% \let\which@indent\fr@idf% -French default is \indentfirst \else\let\which@indent\fr@nidf% -but let's titlesec package decide if loaded. \fi% \def\fr@lbi{\def\labelitemi{\@FIM@--}\def\labelitemii{\@FIM@--}% \def\labelitemiii{\@FIM@--}\def\labelitemiv{\@FIM@--}% }% \long\def\frlabelitems#1{\ifFLA\long\def\fr@lbi{#1}% -............. \frlabelitems \fr@lbi\fi}% \def\@FIM{% -Correct labels in itemize environement .............. \labelitem.. \fr@lbi% \def\indentfirst{\ifFLA\fr@idf\fi}% -.................... \indentfirst \def\nonindentfirst{\ifFLA\fr@nidf\fi}% -............. \nonindentfirst \which@indent% -Apply requested indent in first paragraph %#< % The "order" list .................... \begin{order} & \end{order} \def\labelfrenchenumi{\@FIM@\quando={\arabic{enumi}}}% \def\labelfrenchenumii{\@FIM@\quando={\arabic{enumii}}}% \def\labelfrenchenumiii{\@FIM@\quando={\arabic{enumiii}}}% \def\labelfrenchenumiv{\@FIM@\quando={\arabic{enumiv}}}% \def\order{\ifnum \@enumdepth >3 \@toodeep\else% \advance\@enumdepth \@ne% \edef\@enumctr{enum\romannumeral\the\@enumdepth}\list% {\csname labelfrench\@enumctr\endcsname}% {\usecounter{\@enumctr}% \ifFLA% -French layout might be switched after the definition \addtolength{\leftmargin}{0.9em}% -allow a second digit and << \fi% \def\makelabel####1{\hss\llap{####1}}}\fi}% -\order \let\endorder =\endlist% % The "versatim" environment .... \begin{versatim} & \end{versatim} % inapropriate for multi-level of indentation! \def\versatim{\bgroup\let\@w@s\@gobble% -nullify warning 58 \ifFLA% -protect our new settings \let\dospecials\@dsversa% -our specials for versatim \def\@xobeysp{\leavevmode{}\space}% -allow hypenation at space \ifx\verbatim@font\undefined\let\verbatim@font=\tt\fi% \let\@ttORI\verbatim@font% -save the original \tt definition \def\verbatim@font{\@ttORI% -execute it first to know the font \verse% -now enter verse environment (\itemindent is negative) \vskip-2\parskip% -remove vertical par skips \vskip-1\partopsep\vskip-\topsep% \leavevmode% \leftskip=-2\itemindent% -the margin is increased \parindent=2\itemindent% -each line will go in the margin \parskip\z@% -no more interline (interpar) spacing \pretolerance=\@M\tolerance=\@M\hbadness=\@M% -max tolerance \hyphenchar\the\font=`\-}% \let\tt=\verbatim@font% -useful outside NFSS \fi% -ifFLA end of \verbatim@font new def \let\@xverbatim\@xversatim% -define environment \verbatim}% -now enter usual verbatim \def\endversatim{\endverse% \ifTTH\else\hyphenchar\the\font=-1\fi% -was a global def \endverbatim\ifFLA\vskip+1\partopsep\fi\egroup}% \@ifundefined{vers}{% \def\@vers##1{\def\@tempa ####1##1{\leavevmode\null####1% \endgroup}\@tempa}% \def\vers{% -................................................ \vers \begingroup% -protect local modifications \def\@xobeysp{\ifFLA\else\penalty\@M\fi\space}% -allow \catcode``=13 \@noligs \tt% -hyphenation at blank space % word hyphenation done only if \tthyphenation typed \ifFLA\let\dospecials\@dsversa\fi% \let\do\@makeother\dospecials\@vobeyspaces \frenchspacing% \@vers}}{}% \@ifundefined{verbatimfile}% -........................... \verbatimfile {\def\verbatimfile##1{\begingroup\@verbatim\frenchspacing \@vobeyspaces\input ##1\endgroup}}{}% %#> }% -end of \@FIM %===================== for the letter ... \def\@temp@{% -a temporary def of all material \let\@ps@fp\ps@firstpage% \def\@opening{% \let\@wideletter\relax% -Definitions for french light here. \let\emailadd\@empty\let\@yourref\@empty\let\@ourref\@empty% \let\@object\@empty% %#< \@ifundefined{wideletter}{% \def\@wideletter{}\def\wideletter{% -.............................. \wideletter \def\@wideletter{\leftskip-0.25\indentedwidth}}}{}% \@ifundefined{email}{% \def\email####1{\def\emailadd{\texttt{####1}}}}{}% -.................... \email \@ifundefined{emailadd}{\def\emailadd{}}{}% \@ifundefined{yourref}{% \def\yourref####1{\def\@yourref{####1}}}{}% -......................... \yourref \@ifundefined{@yourref}{\def\@yourref{}}{}% \@ifundefined{ourref}{% \def\ourref####1{\def\@ourref{####1}}}{}% -............................ \ourref \@ifundefined{@ourref}{\def\@ourref{}}{}% \@ifundefined{object}{% \def\object####1{\def\@object{####1}}}{}% -............................ \object \@ifundefined{@object}{\def\@object{}}{}% \@ifundefined{PS}{% \def\PS####1{{\raggedright\PSname\space ####1}}}{}% -...................... \PS %#> \def\ps@firstpage{\ifFLA% \advance\topmargin by -20\p@% -I also suggest to add in % document preambule: \advance\textheight by 20\p@% \def\@oddhead{\ifx\undefined\formhead\else% \bgroup\hss\formhead\hss\egroup\fi}% \def\@oddfoot{\raisebox{-45\p@}[\z@]% {\hbox to \textwidth{% \ifcase \@ptsize\relax% \normalsize% \or \sm@ller% \or \footnotesize% \fi% %\hspace*{100\p@}\fromlocation \hfill \telephonenum \ifx\undefined\formfoot\hfill\else% \bgroup\hss\formfoot\hss\egroup\fi% }}\hss}% \def\@evenhead{}\def\@evenfoot{}% \else\@ps@fp\fi}% \long\def\opening####1{% -.......................................... \opening \ifFLA%%% -these 3 counts not saved for other languages (unnecessary) \advance\indentedwidth by -0.25\longindentation% \advance\longindentation by 0.22\textwidth% \advance\parindent by 1.5em% -null in standard ..... %%% \let\nopagenumbers\relax% -Avoid to switch to empty page style. \thispagestyle{firstpage}% -set firstpage allowing the user to % use \@oddhead & \@oddfoot in \ps@firstpage \raggedbottom% -force address to remain in the same place \ifx\@empty\fromlocation\location{Le}\fi% \ifx\@empty\fromaddress\let\fromaddress\space\fi% -make an blank box {\raggedright\hspace*{-0.25\indentedwidth}% \parbox[t]{0.5\textwidth}{\ignorespaces% \vbox to 0\p@{\fromaddress\vss}}% \\*[1.75\baselineskip]% % \\*[0.65in]% dont let the date appearing in the window % \vspace*{-5\baselineskip}\vspace*{60\p@}% error average \par}% \ifx\@empty\toname% -in fact \toname is never empty in LaTeX V2.09! % except if you code \begin{letter}{} {\raggedleft\bgroup\fromlocation\space\@date\egroup\par}% \else% {\raggedleft\begin{tabular}{l}\ignorespaces% % \toname\\ \toaddress\\*[8\parskip]% \toname\\ \toaddress\\*[6\parskip]% \fromlocation\space\@date\end{tabular}\par}% \fi% \ifx\@empty\@ourref\else% {\raggedright \hspace*{-0.25\indentedwidth}% \OurRefname\space\@ourref \par}% \fi% \ifx\@empty\@yourref\else% {\raggedright \hspace*{-0.25\indentedwidth}% \YourRefname\space\@yourref \par}% \fi% \ifx\@empty\@object\else% {\raggedright \hspace*{-0.25\indentedwidth}% \textbf{\Objectname}\space\@object \par}% \fi% \par\vspace*{3\parskip}% \noindent####1\hfill\vspace*{3\parskip}% no need of \linebreak% \@wideletter% \else\@oORI{####1}% \fi}}% \def\@closing{% \def\closing{\fclosing@[9]}% -...................................... \closing \def\fclosing{\@ifNextNB[{\fclosing@}{\fclosing@[9]}% -]........... \fclosing }% \long\def\fclosing@[####1]####2{% \ifFLA% \par% -\nobreak \vspace{\parskip}\stopbreaks% \ignorespaces ####2\\[####1\medskipamount]% \ifx\@empty\fromaddress\else% \hspace*{-0.25\indentedwidth}% \hspace*{\longindentation}\fi% {\raggedright\begin{tabular}{l}\ignorespaces% \ifx\@empty\fromsig% \fromname% \else \fromsig \fi% \ifx\@empty\emailadd\else\\{\footnotesize% \emph{\emailname} \emailadd}\fi% \strut\end{tabular}}\par% \vskip 0pt plus 1fil% -un peu d'elasticite \else\@cloORI{####2}% \fi}% \def\endletter{\ifFLA\vskip 0pt plus 3fil\fi% -un peu d'elasticite \@elORI}}% -@closing \@ifundefined{opening}{\def\@opening{}\def\@closing{}}% {\let\@oORI\opening\let\@cloORI\closing% \let\@elORI\endletter% \@opening\@closing}% }% -\@temp@ \ifx\opening\undefined\let\@temp@\relax\fi% \@temp@% -only if letter ..... %===================== %#< %............................................................ \begin{figurette} \let\ifFLA\iffalse% -dummy def for next processing \def\@temp@{% \def\figurette{\@noBDfr% \ifx\@fgeORI\undefined\figure\fi% -can't work without figure \ifFLA\bgroup% \def\@xfloat####1[h]{% \expandafter\let\csname end####1\endcsname\endfigurette% \vskip\intextsep\def\@captype{####1}\parindent\z@}% \@fgeORI[h]\else\figure[h]\fi}% \def\endfigurette{\@noBDfr% %.......................................... \end{figurette} \ifFLA\vskip\intextsep\egroup\else\@efgeORI\fi% \ifx\@lim\empty\else\marginpar{\@lim@}\xdef\@lim{}\fi% \let\ifMOVING\iffalse}% }% \ifx\figure\undefined\def\@temp@{}\fi% -only when \figure is already defined \@temp@% %#> % Reset chapter counter when starting a part --> \GOfrench % % Check for AmS package's class \def\@tempa{\let\fr@RIfM@cls\undefined}% -will set the no AmS class loaded flag \let\fr@RIfM@cls\RIfM@% -if no AmS package, no class as well \ifx\RIfM@\undefined\else% \expandafter\ifx\csname @classname\endcsname\relax\@tempa% \else\def\@tempb#1#2#3#4\@nil{% \if#1a\if#2m\if#3s\else\@tempa\fi% \else\@tempa\fi\else\@tempa\fi}% \expandafter\@tempb\@classname\@nil% \fi% \fi% -\RIfM@\undefined % % This is the French pagestyle to use instead in place of plain wrongly % used by LaTeX in many situations. Quite simple one................ \ps@french \def\@temp@{\def\ps@french{\if@fancyplain\ps@plain@fancy\else\ps@plain\fi}}% \ifx\ps@fancyplain\undefined% -do nothing outside fancyheadings \ifx\fr@RIfM@cls\undefined\def\ps@french{}% -in standard LaTeX, but not \else\def\ps@french{\global\topskip\normaltopskip}% -with AmS classes. \fi% \fr@RIfM@cls\undefined% \else\@temp@% -to avoid pb in case \if@fancy... undefined \fi% \let\ps@frenchORI\ps@french% -Save final french page style def. \let\@sdORI\secdef% -will be used at each new sectioning. \def\nofrenchpagestyle{\let\secdef\@sdORI}% -................. \nofrenchpagestyle \def\frenchpagestyle{% -........................................ \frenchpagestyle \def\secdef{\ifFLA\thispagestyle{french}\fi\@sdORI}% -.............. (\secdef) }% \frenchpagestyle% -Now run the french page style if \frenchlayout. \ifx\aliaspagestyle\undefined% -Is memoir.cls loaded? no: \def\nobeginingfolio{\let\ps@french\ps@empty}% -................ \nobeginingfolio \else% \def\nobeginingfolio{\let\ps@french\ps@empty% -yes: \aliaspagestyle{chapter}{empty}% }% \fi% \def\beginingfolio{\let\ps@french\ps@frenchORI% -................. \beginingfolio \frenchpagestyle}% -This is the default value. %#< \@ifundefined{nopagenumbers}{% -don't run everywhere............ (\nopagenumbers) \def\nopagenumbers{\ifFLA\pagestyle{empty}% \thispagestyle{empty}\fi}% }{}% \def\ifFLA{\ErrFrench}% % \newif\ifnonvoid% -still an outer def. \def\@desarm{% -the \noeveryparguillemets processing \newbox\@FrBoxi\newbox\@FrBoxii\newbox\@FrBoxiii% \newbox\@FrBoxiiii\newbox\@FrBoxvi\newbox\@FrBoxvii\newbox\@FrBoxQuotes% \ifx\@FrDimenS\undefined\newdimen\@FrDimenS\fi% \def\@setpartozero{\widowpenalty=\z@\clubpenalty=\z@% \interlinepenalty=\z@\brokenpenalty=\z@\displaywidowpenalty=\z@}% \def\nonvoidtrue{\let\ifnonvoid\iftrue}% \def\nonvoidfalse{\let\ifnonvoid\iffalse}% \def\@transfervbox##1##2{\nonvoidtrue% \loop% \setbox\@FrBoxi=\vbox{\unvbox##1\global\setbox\@FrBoxiii=\lastbox% \unskip}% \ifvoid\@FrBoxiii\nonvoidfalse\fi% \ifnonvoid% \setbox\@FrBoxii=\vbox{\unvbox##2\box\@FrBoxiii}% \setbox##1=\box\@FrBoxi\setbox##2=\box\@FrBoxii% \repeat}% \def\@transferaddvbox##1##2{\nonvoidtrue% \setbox\@FrBoxi=\vbox{\unvbox##1\global\setbox\@FrBoxiii=\lastbox% \unskip}% \setbox##2=\vbox{\box\@FrBoxiii}% \setbox##1=\box\@FrBoxi% \loop% \setbox\@FrBoxi=\vbox{\unvbox##1\global\setbox\@FrBoxiii=\lastbox% \unskip}% \ifvoid\@FrBoxiii\nonvoidfalse\setbox##1=\box\@FrBoxi\fi% \ifnonvoid% \setbox\@FrBoxii=\vbox{\unvbox##2% \hbox to \@FrDimen{\copy\@FrBoxQuotes\unhbox\@FrBoxiii}}% \setbox##1=\box\@FrBoxi\setbox##2=\box\@FrBoxii% \repeat}% \def\@sendtopage##1{\nonvoidtrue% \loop% \setbox\@FrBoxi=\vbox{\unvbox##1\global\setbox\@FrBoxiii=\lastbox% \unskip}% \ifvoid\@FrBoxiii\nonvoidfalse\setbox##1=\box\@FrBoxi\fi% \ifnonvoid% \unhbox\@FrBoxiii\unskip\break% \setbox##1=\box\@FrBoxi% \repeat}% \def\@stared{\egroup% \@transfervbox\@FrBoxvi\@FrBoxvii% \@transferaddvbox\@FrBoxvii\@FrBoxvi% \setbox\@FrBoxvii=\vbox{\unvbox\@FrBoxvi% \global\setbox\@FrBoxiiii=\lastbox\unskip}% \@transfervbox\@FrBoxvii\@FrBoxvi% \noindent \@sendtopage\@FrBoxvi% \unhbox\@FrBoxiiii\unskip\unskip\unpenalty}% \def\@fniv2{\egroup% \@transfervbox\@FrBoxvi\@FrBoxvii% \@transferaddvbox\@FrBoxvii\@FrBoxvi% \setbox\@FrBoxvii=\vbox{\unvbox\@FrBoxvi% \global\setbox\@FrBoxiiii=\lastbox\unskip}% \@transfervbox\@FrBoxvii\@FrBoxvi% \noindent \@sendtopage\@FrBoxvi% \setbox\@FrBoxvii=\vbox\bgroup\@setpartozero% \noindent \unhbox\@FrBoxiiii\unskip\unskip\unpenalty}% \def\@qqguill{\relax}% \def\@staring{\global\setbox\@FrBoxQuotes=\hbox to 0.81em{\@qqguill}\egroup% \setbox\@FrBoxvi=\vbox{\unvbox\@FrBoxvii% \global\setbox\@FrBoxiiii=\lastbox\unskip}% \@transfervbox\@FrBoxvi\@FrBoxvii% \noindent\@sendtopage\@FrBoxvii% \setbox\@FrBoxvi=\vbox\bgroup\@setpartozero% \hangindent=\wd\@FrBoxQuotes\hangafter=1% \setbox\@FrBoxvii=\hbox{\unhcopy\@FrBoxiiii\unskip\unskip% \unpenalty}% \@FrDimenS=\@FrDimen \advance\@FrDimenS by -2em% \ifvoid\@FrBoxiiii\indent\copy\@FrBoxQuotes% \else% \parindent=\z@% \ifdim \wd\@FrBoxvii>\@FrDimenS \unhbox\@FrBoxvii\break% \else \unhbox\@FrBoxvii% \fi\fi}% \def\@qquotes{\setbox\@FrBoxvii=\vbox\bgroup\@setpartozero}% }% -end \@desarm %#> \def\@EIM{\def\labelitemi{\@lti}\def\labelitemii{\@ltii}% \def\labelitemiii{\@ltiii}\def\labelitemiv{\@ltiv}% \let\@afterindentfalse\@aifORI\@afterindentfalse% \parindent\@piORI}% -restore \parindent \let\@FL\relax% -\@FL is \relax with french light. %#< {\catcode`.=12\catcode`p=12\catcode`t=12\gdef\auTo@gf#1.#2pt{#1}}% \def\@FL{% -LETTRINES defs \def\automaticlettrine{% \ifx\lettrinefontname\undefined% -..... \automaticlettrine \def\@tempa####1 ####2\@@{% -extract font name \def\lettrinefontname{####1}}% \edef\@tempb{ }% \expandafter\@tempa\fontname% \expandafter\font\@tempb\@@\fi% \let\sv@lf=\lettrinefont}% \def\noautomaticlettrine{% \let\lettrinefontname=\undefined% -.\noautomaticlettrine \let\lettrinefont=\sv@lf}% -reset font \ifx\lettrine\undefined% -............................................. \lettrine \def\lettrine{\par% \let\@tempa\relax% \def\@tempa{\def\@fbr{\fboxrule=\z@}% \protect\@lettrineS% }% \@tempa}% \if@PMF\def\@Ettrine[##1]{##1}\let\@ettrine\relax\else% \def\@ettrine##1##2\par{\bgroup\parskip=\z@% -NFSS requires a {\ly\xdef\bef@ly{\the\font}}% -global def! \let\newpage=\relax\let\clearpage=\relax% \let\cleardoublepage=\relax% \edef\bef@fnt{\the\font}% \ifCG\def\bef@let{}% \else\def\bef@let{\bef@fnt\def\ly{\bef@ly}% \leftguillemets\space}% \fi\@@ttrine{##1}{##2}\egroup}% \def\@@ttrine##1##2{\ifFLA\def\@@ttrnxt{\@@@trine##1\@@{##2}}% \else\def\@@ttrnxt{##1\space\ignorespaces##2}% \fi% -fol.hbox to start a new par after 1 line lett. \@@ttrnxt\unskip\par% -First \par is for lineno package. \f@par% -The second \par ends the \lettrine. \@nobreakfalse}% -Allow breaks after that paragraph. \def\@@@trine##1##2\@@##3{\@fbr\TeXeverypar{}% %%% start of automatic font calculation (a piece of code coming from Ronan) \ifx\lettrinefontname\undefined\let\auTo@lh\undefined% \else\let\auTo@lh\lettrinehang% \ifx\auTo@lh\undefined\def\auTo@lh{2}\fi% \bgroup% \ifx\@htfreq\undefined\newdimen\@htfreq\newdimen\@htfbase\fi% \setbox0=\hbox{M}\@htfreq=\ht0% \def\dimentocount####1{\expandafter\auTo@gf\the####1}% \font\@fontreq=\lettrinefontname% \setbox0=\hbox{\@fontreq ##1}\@htfbase=\ht0% \advance\@htfreq by \auTo@lh\baselineskip% \advance\@htfreq by \lineskip% -inapropriate increment \advance\@htfreq by -\baselineskip% \multiply\@htfreq by 100 % -To be more precise \multiply\@htfbase by 100 % \divide\@htfreq by \dimentocount\@htfbase% -\relax \multiply\@htfreq by \@m% \global\font\lettrinefont=\lettrinefontname\space scaled \dimentocount\@htfreq% \egroup% \fi% %%% end of automatic font calculation \setbox0\hbox{% -\fbox is eliminated for that measuring {\shortstack{\bef@let{\lettrinefont##1}\relax% \ifdim\fontdimen\@ne\font>\z@\/\space\fi}}}% \@FrDimenH=\ht0\advance\@FrDimenH by\dp0% \@FrDimenS=\@FrDimenH\advance\@FrDimenS by\fboxsep% \ifdim\baselineskip\superieura0pt% \divide\@FrDimenS by\baselineskip% \fi\@FrCount=\@FrDimenS% \@FrDimen=\baselineskip\multiply\@FrDimen by-\@FrCount% \advance\@FrDimen by\@FrDimenH% \ifdim\@FrDimen>0.025\baselineskip \advance\@FrCount by 1\fi% \ifx\auTo@lh\undefined\else\@FrCount=\auTo@lh\fi% \ifx\lettrinehang\undefined\else\@FrCount=\lettrinehang\fi% \@FrDimenI=\wd0% \ifdim\fboxrule=\z@\else\advance\@FrDimenI by2\fboxrule% \advance\@FrDimenI by2\fboxsep\fi% \@FrDimenS=\fontdimen2\font\advance\@FrDimenI by+3\@FrDimenS% \ifdim\fboxrule=\z@\advance\@FrDimenI by-0.30\@FrDimenS\fi% \advance\@FrCount by -1% \@FrDimen=\@FrCount\baselineskip% \advance\@FrCount by 1% \ifdim\fboxrule=\z@\else\advance\@FrDimen by -\fboxrule\fi% \@FrDimenH=-\dp0% -to get baseline alignement \setbox0\hbox{\ifdim\fboxrule=\z@\kern-\fboxsep\fi% \fbox{\shortstack{{% \def\@LSG{\f@issue\@fw{-5- % %\@txt@msg{d\'efinition de lettrine incorrecte}% }}% \let\@RSG=\@LSG\bef@let% \lettrinefont\raise-\@FrDimen\hbox{##1}\relax% \ifdim\fontdimen\@ne\font>\z@\/\space\fi}}}}% \box0\@FrDimen=\@FrDimenH% \advance\@FrDimenH by-\@FrCount\baselineskip% \advance\@FrDimenH by \lineskip% -inapropriate action \ifdim\fboxrule=\z@\else\advance\@FrDimenH by -\fboxrule\fi% \vspace*{\@FrDimenH}% -where to write the rest of the line \hangindent=\@FrDimenI% \ifx\lettrinehang\undefined% -hangafter change then allowed \ifdim\@FrDimen<-0.025\baselineskip% -if dp0 > 25/1000 then \advance\@FrCount by\@ne% -add one more line hangafter \divide\@FrDimen by-\baselineskip% -and may be it could \advance\@FrCount by\@FrDimen% -extend past a line. \fi% \fi% \ifnum\@FrCount=1\f@issue\@fw{-6- %\@txt@msg{lettrine \`a revoir}% }\fi% \hangafter=-\@FrCount% \noindent\kern-2.5\@FrDimenS% \def\@temp@{##2}% \ifx\empty\@temp@\f@issue\@fw{-7- % %\@txt@msg{lettrine r\'eduite \`a 1 seule lettre}% }% \else{\scshape ##2}\fi\def\@temp@{##3}% \ifx\@temp@\empty\else\space\ignorespaces##3\fi% }% -@@@trine \def\@Ettrine[##1 ##2 ##3]##4\par{\bgroup\parskip=0pt% -NFSS requires a {\ly\xdef\bef@ly{\the\font}}% -global def! \let\newpage=\relax% \edef\bef@fnt{\the\font}\@gN% \ifFLA\def\bef@let{\bef@fnt\def\ly{\bef@ly}##1\space}% \else ##1\space\fi% \@@ttrine{##2}{{\def\@aft@let{##3}\ifx\@aft@let\empty% \else##3\space\fi% \ignorespaces ##4}}\egroup}% \fi% -\if@PMF \def\flettrine{\par% -................................................ \flettrine \let\@tempa\relax% \def\@tempa{\def\@fbr{}\protect\@lettrineS}% \@tempa}% \def\@lettrineS{\ifx\@FrDimenH\undefined% \newdimen\@FrDimenH\newdimen\@FrDimenI\fi% \ifx\@FrDimenS\undefined\newdimen\@FrDimenS\fi% \@ifNextNB[{\@Ettrine}{\@ettrine}% -] emacs }% \fi% -\lettrine undefined }% -end of \@FL %%%%%%%%%%%%%%%%% %#> % =============================== % | Typography | % =============================== % % Let the possibility to turn all off \def\nonfrench{\ifFrench\@DFP% -....................... \begin & \end{nonfrench} \def\@temp@{\@AFP}% -\@AFP only for non LaTeX users \else\@NoFr\def\@temp@{\relax}\fi% \def\endnonfrench{\@temp@\ignorespaces}% \ignorespaces}% % % Original settings of \dospecials et \@sanitize saved at \begin{document} % include ! ? ; : < > ` ' ^ " in dospecials and sanitize: \def\@dospecialsfrench{\do\`\do'\@dsversa}% -..................\@dospecialsfrench \def\@dsversa{% -specials reduced for versatim envir..........\@dsversa \do\ \do\\\do\{\do\}\do\$\do\&\do\#\do\|\do\^^K\do\_\do\^^A\do\%\do\~% -$emacs \do\!\do\?\do\;\do\:\do\<\do\>\do\^\do\"}% \def\@sanitizefrench{% -.........................................\@sanitizefrench % \@makeother\ \@makeother\\\@makeother\$\@makeother\&%$emacs % \@makeother\#\@makeother\|\@makeother\^^K\@makeother\_% % \@makeother\^^A\@makeother\%\@makeother\~% \@saORI% -get original \@sanitize and add ours: \@makeother\!\@makeother\?\@makeother\;\@makeother\:% \@makeother\`\@makeother'\@makeother\<\@makeother\>% \@makeother\^\@makeother\"}% % %\@ifNextNB X {YES} {NO} ... if next char is X then YES else NO ... \@ifNextNB \def\@ifNextNB#1#2#3{\let\@tempe=#1\def\@tempa{#2}\def\@tempb{#3}\futurelet% \@tempc\@Fifnch}% \def\@Fifnch{\ifx \@tempc \@tempe\let\@tempd\@tempa% -Next char may be an \else\let\@tempd\@tempb\fi\@tempd}% -active space. %\ifNextNBc X or Y {YES} {NO} ... ... \@ifNextNBc \def\@ifNextNBc#1#2#3#4{\let\@tempe=#1\let\@tempf=#2% \def\@tempa{#3}\def\@tempb{#4}\futurelet% \@tempc\@Fifnchc}% \def\@Fifnchc{\ifx\@tempc\@tempf\@tempa\else\@Fifnch\fi}% % \def\@skiplastspace{\ifdim\lastskip>\z@\unskip\penalty\@M\fi}% -..\@skiplastspace % \let\ifFrench\iftrue% -temporary setting \def\@AFP{% -................................ \@AFP = Activate French Punctuation \let\dospecials\@dospecialsfrench% \let\@sanitize\@sanitizefrench% \AFPdp\AFPinfsup}% \def\AFPdp{\ifFrench\catcode`\!=\active\catcode`\?=\active% \catcode`\;=\active\catcode`\:=\active\fi}% \let\AFPinfsup\relax% %#< \def\AFPinfsup{\ifFrench\ifFG\catcode`\<=\active\catcode`\>=\active\fi\fi}% %#> \def\AFPq{\ifFrench\catcode`'=\active\catcode``=\active\fi}% \def\AFPdq{\catcode`"=\active}% % \def\@DFP{% -............................ \@DFP = Desactivate French Punctuation \DFPq\DFPinfsup\ifLPA\else\DFPdp% \let\dospecials\@dsORI% \let\@sanitize\@saORI\fi}% \def\DFPq{\ifFrench\catcode``=12\catcode`'=12\fi}% \let\DFPinfsup\relax% %#< \def\DFPinfsup{\ifFrench\catcode`<=12\catcode`>=12\fi}% %#> \def\DFPdp{\ifFrench\catcode`;=12\catcode`:=12% \catcode`!=12\catcode`?=12\fi}% \def\DFPdq{\catcode`"=12}% %#< % Typographic process of dots (default is: let dots macros as usual) % \let\@doORI\dots\let\@ldoORI\ldots% \def\TeXdots{\@noBDfr% \ifFTY\let\dots\@doORI\let\ldots\@ldoORI\fi}% -.............\TeXdots \def\noTeXdots{\@noBDfr% \ifFTY\def\dots{...}\def\ldots{...}\fi}% -............ \noTeXdots % % i dotless (for those who haven't a good text editor) % \let\@hatORI\^\let\@treORI\"% \def\idotless{\@noBDfr% \ifFTY% -............................................... \idotless \def\^##1{{\expandafter\@hatORI\ifx ##1i\i\else##1\fi}}% \def\"##1{{\expandafter\@treORI\ifx ##1i\i\else##1\fi}}% \fi}% \def\iwithdot{\@noBDfr% \let\^\@hatORI\let\"\@treORI}% -.....(no MlTeX command). \iwithdot %#> % Typographic process of double punctuation: % \let\ifLPA\iffalse% -\ifLPA must be initiated. \let\ifFG\iffalse% -\ifFG must be initiated. \def\@tempa#1{\f@issue% \@fw{-13- %\@txt@msg{le caract\`ere "#1" est d\'ej\`a actif}% }[#1]% \let\@tempb\next\let\@tempc\empty}% -warning message \let\@tempb\empty% \AFPdp% -activate first part \let\ifWTS\iffalse% -set wrong typed spaces to false \def\@WTS{\relax\ifmmode\else\ifhmode% -skip wrong typed space \ifdim\lastskip>\z@\unskip\fi% \fi\fi}% % this part is necessary because some modules like biblatex ares conceived to % run only with babel or polyglossia and some definitions are necessary % because of \XeTeXinterchartokenstate % Necessary : % Add a thin space before punctuation ; : and ! in place of a space \def\intercharpunct{% % \lccode\lccode8217=8217 \XeTeXinterchartokenstate=1 \XeTeXcharclass `\! \french@punctthin \XeTeXcharclass `\? \french@punctthin \XeTeXcharclass `\; \french@punctthin \XeTeXcharclass `\: \french@semicolon \XeTeXinterchartoks \z@ \french@punctthin = {\ifUSP\nobreak\thinspace\fi}% \XeTeXinterchartoks \z@ \french@semicolon = {\ifUSP\ifeFr@DPtfine\nobreak\thinspace\else\nobreakspace\fi\fi}% \XeTeXinterchartoks 4095 \french@punctthin = {\efr@unskip\nobreak\thinspace}% \XeTeXinterchartoks 4095 \french@semicolon = {\efr@unskip\ifeFr@DPtfine\nobreak\thinspace\else\nobreakspace\fi}% } \def\nointercharpunct{% % \lccode8217=\z@ \XeTeXcharclass `\! \z@ \XeTeXcharclass `\? \z@ \XeTeXcharclass `\; \z@ \XeTeXcharclass `\: \z@ \XeTeXinterchartokenstate=0 } \newcount\eF@nonchar \newif\ifeF@active@punct % est pour la ponctuation \newif\ifeF@xetex@punct \ifdefined\XeTeXinterchartokenstate \eF@xetex@puncttrue\eF@active@punctfalse \ifdim\the\XeTeXversion\XeTeXrevision pt<0.99994pt \eF@nonchar=255 \relax \else \eF@nonchar=4095 \relax \fi \fi % ceci ou largeur fixe ? % insecable : space : \char160 fine : \char8239 \ifeF@xetex@punct \newXeTeXintercharclass\french@punctthin % ! ? ; et autres \newXeTeXintercharclass\french@semicolon % : deux points - Dpt % \def\efr@unskip{\ifhmode\ifdim\lastskip>\z@\unskip\fi\fi} % \def\eFresp@dpt{\ifeFr@DPtfine\nobreak\thinspace\else\nobreakspace\fi} \def\xpg@nospace#1{#1} % \ifeFr@Typo\protect\intercharpunct\else\nointercharpunct\fi \fi% % < for XeLaTex ****** \ifeF@NoEnc \@finput{efrenchu.tex} % and at begin should not use interchartoks \AtBeginDocument{\nointercharpunct} \fi % now we come to the treatement of punctuation without \XeTeXinterchartokenstate % \XeTeXinterchartokenstate make inactive the following treatments \def\@tempc{% \def;{\ifFTY\protect\@PV%{}% -............................................... ";" \else\ifWTS\@WTS\fi\string;\fi}% }% \def\@tempd{\@tempa{\string;}}% \ifx;\undefined\def\@tempd{}\fi\@tempd\@tempc% \def\@PV{\relax\ifmmode\string;\else% % don't redefine punctuation behavior \Ponctu@ctivedtrue \ifhmode\ifUSP\unskip\space\fi% \ifdim\lastskip>\z@\unskip\eFrFinSp@ce\fi% \fi\string;\fi}% \def\@tempc{% \def:{\ifFTY\protect\@DP%{}% -............................................... ":" \else\ifWTS\@WTS\fi\string:\fi}% }% \def\@tempd{\@tempa{\string:}}% \ifx:\undefined\def\@tempd{}\fi\@tempd\@tempc% \@ifundefined{@beginparpenalty}{\def\@beginparpenalty=#1{\penalty#1}}{}% \def\@DP{\relax\ifmmode\string:\else% % don't redefine punctuation behavior \Ponctu@ctivedtrue \ifeFr@DPtfine\let\eFresp@dpt=\eFrFinSp@ce \else\let\eFresp@dpt=\nbsp@ce\fi \ifhmode\ifUSP\unskip\space\fi% \ifdim\lastskip>\z@\unskip\eFresp@dpt\fi% \fi% \string:% \@beginparpenalty=\@M\relax% % -Page break forbidden after ":" \fi}% % -but remains not perfect... % Stuff for \WindowsUnits \def\@wu#1{\@@wu#1,\void}% \def\@@wu#1,#2{\ifx#1\empty\else\@@@wu #1\fi% \def\@tempa{\@@wu#2}% \ifx#2\void\else\expandafter\@tempa\fi% }% \def\@@@wu#1=#2{\expandafter\edef\csname #1\endcsname:{#2\string:}}% % \hhline modification should be removed if the version % [1997/11/24 v3.x beta] is generally in use (and distributed). \ifx\hhline\undefined\else\let\@hhlORI\hhline% -......................... \hhline \def\hhline{\omit\ifFrench\let:\@cidp\fi% \expandafter\@gobble\@hhlORI}% \fi% \def\@tempc{% \def!{\ifFTY\protect\@PE%{}% -............................................... "!" \else\ifWTS\@WTS\fi\string!\fi}% }% \def\@tempd{\@tempa{\string!}}% \ifx!\undefined\def\@tempd{}\fi\@tempd\@tempc% \def\@PE{\ifmmode\string!\else% % don't redefine punctuation behavior \Ponctu@ctivedtrue \ifhmode\ifUSP\unskip\space\fi% \ifdim\lastskip>\z@\unskip\eFrFinSp@ce\fi% \fi% \string!\fi}% \def\@tempc{% \def?{\ifFTY\protect\@PI%{}% -............................................... "?" \else\ifWTS\@WTS\fi\string?\fi}% }% \def\@tempd{\@tempa{\string?}}% \ifx?\undefined\def\@tempd{}\fi\@tempd\@tempc% \def\@PI{\relax\ifmmode\string?\else% % don't redefine punctuation behavior \Ponctu@ctivedtrue \ifhmode\ifUSP\unskip\space\fi% \ifdim\lastskip>\z@\unskip\eFrFinSp@ce% \fi% \fi% \string?\fi}% \ifx\@tempb\next\let\AFPdp\empty\f@issue% \@fw{-13b- % \@txt@msg{la double ponctuation est alors d\'esactiv\'ee}}\fi% \let\ifLPA\ErrFrench% -\ifLPA restored. \let\ifFG\ErrFrench% -\ifFG restored. \let\@aORI\@array% -........................................ \@array for \array \def\@array{}% -default noop, further defined. % 2e float placement correction \DFPdp\AFPdp% -normally a noop but in case of warning... \ifx\AFPdp\empty\else% -only for activated exclamation mark \def\@array{\let\noexpand\@tempa=\noexpand!% \def\noexpand!{\noexpand\string\noexpand!}% \edef\noexpand\@tempb{##1}% -asis substitution \let\noexpand!=\noexpand\@tempa}% \fi% \catcode`<=13\catcode`>=13% -temporary activation \let\ifArG\iftrue% -by now assume guillemets are available in arrays. \edef\@array[#1]{\edef\noexpand\@tempb{#1}% -default substitution \noexpand\ifArG\noexpand\else% \noexpand\ifnum\catcode`\noexpand<=\active% \noexpand\ifmmode\let\noexpand<\noexpand\inferieura% \let\noexpand>\noexpand\superieura% \noexpand\fi\noexpand\fi\@array% \noexpand\fi% \noexpand\@aORI[{\noexpand\@tempb}]}% \let\@eaORI\eqnarray% -.............................................. \eqnarray \def\eqnarray{\ifArG\else\ifnum\catcode`<=\active% \let<\inferieura\let>\superieura% \fi\fi\@eaORI}% \ifx\@@array\undefined\else% -When array package loaded we must ...... \@@array \let\@@aORI\@@array% -protect it too \def\@@array{\ifArG\else\ifnum\catcode`<=\active% \let<\inferieura\let>\superieura% \fi\fi\@@aORI}% -as for eqnarray (and standard array). \fi% \catcode`<=12\catcode`>=12% \DFPdp% -desactivate first part \let\@CGroup\relax\let\@@FG\relax% -Should be relax for french light. \let\@LG\relax% %#< % Process of guillemets (typed << and >>)%.......................... Guillemets % % here is the oldest way to def. guillemets (still useful with plain} \def\@og{\leavevmode\ifdim\lastskip>\z@\unskip% \penalty-9\hskip0.35em minus 0.35em\fi% \raise0.27ex\hbox{$\scriptscriptstyle\ll$}\,\nobreak\ignorespaces}% \def\@cg{\@skiplastspace\nobreak\,\leavevmode\raise0.27ex% \hbox{$\scriptscriptstyle\gg$}}% \let\ifFG\iftrue% -set the default \AFPinfsup% -activate for guillemets % special definition for \lettrine and \flettrine: \def\@gN{\def<##1{\ifx ##1<\leftguillemets\else\@LSG##1\fi}% \def>##1{\ifx ##1>\rightguillemets\else\@RSG##1\fi}}% \let\@oldog\<\let\@oldcg\>% -let it run if previously defined \def\@ogx<{\ifFTY\@og\else\@DOG\fi}% \def\@cgx>{\ifFTY\@cg\else\@DFG\fi}% % Guillemets must not be typed \<< and \>>, the following is for compatibility %\def\<{\@ifNextNB<{\@ogx}{\@oldog}}% %\def\>{\@ifNextNB>{\@cgx}{\@oldcg}}% % %\def<{\ifnum\catcode`< =\active% look at \normalbrackets................. "<< % \expandafter\@genGL\else\@LSG\fi}% \EBCDICbrackets are different \def\@@LFG{\ifFTY\ifmmode\protect\@LSG\else% \ifIEB\@SOC\else\@LSG\fi% -EBCDICbracket \fi% \else\@LSG\fi}% \global\let\ifCG\iftrue% \let\inside@an@expand\empty% -Stuff to expand in an usual \edef. \def\if@mid@expandable#1#2{\let\inside@an@expand\relax\relax% \ifx\inside@an@expand\relax% \let\inside@an@expand\empty% \expandafter#2% \else\expandafter#1% \fi}% % A command to avoid wrong crash when expanding a macro which is not % fully expandable; usage: \edef\XX{\stop@mid@expandable}\XX \def\stop@mid@expandable{\if@mid@expandable{% \errmessage{This macro is not expandable, please % \string\protect \space it.}\stop}{}% }% %%%\def\@LG{\relax\ifFTY\ifmmode\@DOG\else\@@@OG\fi\else\@DOG\fi}% \def\@LG{\relax\if@mid@expandable{\@@@LG}{\@@LG}}% \def\@@LG{\ifFTY\ifmmode\@DOG\else\@@@OG\fi\else\@DOG\fi}% \def\@@@LG{\relax\noexpand <<\relax} \def\@SifDOGon{\global\let\ifDOG\iftrue}% -set scnd level of guillemets flag \def\@SifDOGoff{\global\let\ifDOG\iffalse}\@SifDOGoff% -now set it off \def\@@@OG{\ifCG\ifFLA\ifEPG\else% -now be tolerant... in noeverypar \hbadness=10000% -all this stuff is really dirty ! \ifhmode\newline\fi% -We force newline if any stuff already typeset. \bgroup\def\par{}% \@FrDimen=\textwidth% -line size on mono-column \if@twocolumn\tolerance=5000\pretolerance=5000% \advance\@FrDimen by -\columnsep% \divide\@FrDimen by 2\fi% -for two-column \@ifundefined{@inAlist}{}{% -revisite box size in a list environment \advance\@FrDimen by -\leftmargin\advance\@FrDimen by -\rightmargin% \advance\@FrDimen by -\listparindent\hsize=\@FrDimen}% \@qquotes\fi\fi\fi% \sp@inogfalse% \@oguills% \ifFLA\ifEPG\bgroup\def\@currenvir{guillemets}% -simulate an environment \let\@CGroup\egroup\fi\fi% -for error processing \ifCG\ifFLA\ifEPG% -save the current \everypar and apply it first \xdef\@epORI{{\the\TeXeverypar}}% \TeXeverypar={\@epORI% -Original \everypar. \ifEPGR\else\@AG% -guide du typographe \sp@inogtrue% \@oguills% -insert guillemets and \@ifundefined{@OuvOpen}{% -then according }{}% \fi}% \fi\fi% \else\@SifDOGon\@AG% -ancient guillemets featuring \ifFLA\ifEPG\else\def\@qqguill{\@oguills}\@staring\fi\fi\fi% %%% \protect\@CGfalse% \global\let\ifCG\iffalse% \ifeFr@Guifine\USP@GuiFinSpatrue% OG full space not used \let\eFresp@gui=\eFrFinSp@ce% OG fine unbreakable space \else\USP@GuiFinSpafalse% OG full space possible \let\eFresp@gui=\nbsp@ce% OG full unbreakable space \fi% %% don't redefine punctuation behavior \Ponctu@ctivedtrue \ifUSP\USP@GuiFinSpatrue\fi% OG full space not used \ifUSP@GuiFinSpa\eFr@OGsp@cSpl% \else\relax\penalty\@M\fi}% % \ifUSP\kern+0.13em\penalty\@M\ignorespaces% - >> V6,1 BG \def\@AG{\ifAG\let\@LP\@RP\let\@gotl\@gotr% \fi}% -Apply ancient guillemets if required \def\f@guillemets{<<}% % do not repeat the non breakable space \newif\ifsp@inog \def\@oguills{% \ifeFr@Guifine% \let\eFresp@gui=\eFrFinSp@ce% \else\let\eFresp@gui=\nbsp@ce% no space to be made unbreakable \fi% % don't redefine punctuation behavior \Ponctu@ctivedtrue \bgroup\@ifundefined{@OuvOpen}{\def\@OuvOpen{}% -avoid duplicate << \@ifundefined{ly}{\@og}% {\leavevmode\ifECM\hbox{{\ifGIAF\else\@gfnt\fi% \ifx\@gotl\undefined\char\rq\@LP% % \else\@gotl\fi\kern+0.20em}}% - >> V6,1 BG \else\@gotl\fi% \ifeFr@Guifine% \let\eFresp@gui=\eFrFinSp@ce% \else\let\eFresp@gui=\nbsp@ce\fi% \ifsp@inog\eFresp@gui\fi}}% V6,11 RJ \else\hbox{{\ly\@LP\kern-0.20em\@LP\kern+0.20em}}\fi% \nobreak}}{}\egroup}% %\def>{\ifnum\catcode`> =\active% look at \normalbrackets................. ">>" % \expandafter\@genGR\else\@RSG\fi}% \EBCDICbrackets are different \def\@@RFG{\ifFTY\ifmmode\protect\@RSG\else% \ifIEB\@SFC\else\@RSG\fi% -EBCDICbracket \fi% \else\@RSG\fi}% \def\@SifFTY{\let\ifFTY\iffalse}% -to turn of FTY temporary %%%\def\@RG{\relax\ifmmode\@SifFTY\fi\ifFTY\@@FG\else\@DFG\fi}% \def\@RG{\relax\if@mid@expandable{\@@@RG}{\@@RG}}% \def\@@RG{\ifmmode\@SifFTY\fi\ifFTY\@@FG\else\@DFG\fi}% \def\@@@RG{\relax\noexpand >>\relax} \def\endf@guillemets{>>}% \ifx\RIfM@\undefined\else% -For AmSTeX we force \nofrenchguillemets. \edef\@emORI{\the\everymath\relax}% -Save original \everymath. \edef\@edORI{\the\everydisplay\relax}% -Save original \everydisplay. \f@issue\@fW{^^J -18- % %\@txt@msg{\frenchname.sty force l'option }% New definition takes care %\@txt@msg{\string\nofrenchguillemets\space en maths avec AmSLaTeX.}% }% -that \nofrenchguillemets may % be still undefined; expansion differed. \everymath={\csname nofrenchguillemets\endcsname\@emORI}% \everydisplay={\csname nofrenchguillemets\endcsname\@edORI}% \fi% \DFPinfsup% -desactivate for guillemets % The grammar environnement from syntax package...................... \grammar \ifx\grammar\undefined% -can't use French guillemets. \else\let\@grORI\grammar\def\grammar{\nofrenchguillemets\@grORI}% \fi% \newif\ifsp@infg \def\@@FG{\ifCG\f@issue% \@fw{-14- %\@txt@msg{fermeture de guillemets non ouverts}% }\fi% % don't redefine punctuation behavior \Ponctu@ctivedtrue \ifeFr@Guifine% \USP@GuiFinSpatrue% \fi% \ifUSP\USP@GuiFinSpatrue\fi% FG full space not used \ifUSP@GuiFinSpa\unskip\eFrFinSp@ce% \else \ifdim\lastskip>\z@\unskip\nbsp@ce\fi% \fi% \sp@infgfalse \xdef\@tempd{\@currenvir}\def\@tempe{guillemets}% \ifx\@tempd\@tempe% \@CGroup\@fguills% -end group if any and put closing guillemets \else\ifEPG% \@fguills% -typeset but no real closing (see \@@@FG) \def\@CGroup{\egroup\@gobble}% -warning until \endguillemets: \ifFLA% -Message issued only when french layout is active. \f@issue% \@fw{-49- %\@txt@msg{fermeture pr\'ematur\'ee de guillemets}% }% \fi% \else\@CGroup\@fguills% \fi% \fi% % \edef\@currenvir{\@tempd}% generates error instead of just a warning. \ifDOG\ifFLA\ifEPG\else\@fniv2\fi\fi% \@SifDOGoff\else\@@@FG\fi% -reset secnd and first level % following code would be fine but doesn't run: % \@ifNextNB\space{\penalty-\@highpenalty}{}% allow break if space after }% \let\guillemets\@LG% -................................. \begin & \end guillemets \def\RG@{\ifFTY\ifCG% -could be still closed in a prev. envir \else\@RG% -Assume first closing >> and print it \fi% \@CGroup\@@@FG\relax\fi}% -end second level >> \let\endguillemets\RG@% \def\@@@FG{\ifFLA\ifEPG\ifx\@epORI\undefined\else% -\everypar is restored \expandafter\TeXeverypar=\@epORI\fi% \xdef\@epORI{{}}% -any way \xdef can be cleared \else\@staring\@stared\egroup\fi\fi% \global\let\ifCG\iftrue\let\@CGroup\relax}% \def\@fguills{\@ifundefined{ly}{\@cg}% -ECM {\nobreak\leavevmode\ifECM\hbox{{\ifGIAF\else\@gfnt\fi% %\kern+0.20em% bg % don't redefine punctuation behavior \Ponctu@ctivedtrue \ifsp@infg \ifeFr@Guifine\let\eFresp@gui=\eFrFinSp@ce% \else\let\eFresp@gui=\nbsp@ce\fi% \ifUSP\unskip\space\fi \ifdim\lastskip>\z@\unskip\eFresp@gui\fi \fi \ifx\@gotr\undefined\char\rq\@RP% \else\@gotr\fi}}% \else\hbox{{\ly\kern+0.20em\@RP\kern-0.20em\@RP}}\fi}% \ifGIAF\else\ifdim\fontdimen\@ne\font>\z@\/\fi\fi% -italic correction simulated }% %#> \def\@normalrq{\relax\ifmmode^\prime\else\@frq\fi}% \def\@frq{{\catcode`'=12{\ifNEQ\ifECM\char\rq001% \else\char\rq023\hbox{}\fi% \else\string'\fi}}}% \AFPq% -activate quoting \def`{\protect\@PLQ}% -..................................................... "``" \let\@PLQ@\lq% \def\@PLQ{\ifmmode\string`\let\@PLQ@\relax% \else\ifNED\let\@PLQ@\@PLQn\fi% -may start a par. \ifhmode\let\@PLQ@\@PLQn\fi% \fi\@PLQ@}% \def\@PLQn{\@ifNextNB`{\protect\@OQ}% {\ifNEQ\ifECM\char\rq000\hbox{}% \else\char\rq022\hbox{}\fi% \else\string`\fi}% }% \def\@OQ`{\ifNED\protect\@LG\else\string``\fi}% \def'{\protect\@PRQ}% -..................................................... "''" \let\@PRQ@\rq% -set the default \def\@PRQ{\ifmmode\let\@PRQ@\@SRQ@% \else\ifhmode\let\@PRQ@\@PRQn\fi% \fi\@PRQ@}% \def\@@FGp'{\@@FG}% \def\@PRQn{\let\@PRQ@\rq% -reset the default \@ifNextNB'{\ifNED\let\@PRQn@\@@FGp% \else\let\@PRQn@\relax\string'\fi\@PRQn@}% {\protect\@normalrq}}% % % SUBOPTIONS definitions............................................ SUBOPTIONS \let\ifNED\iffalse% -False for french light. \let\ifNEQ\iffalse% -False for french light. %#< \def\noenglishdoublequotes{\@noBDfr% \AFPq\let\ifNED\iftrue% -...... \noenglishdoublequotes \ifFrench\let\@cilq='\fi}% \def\noenglishquote{\@noBDfr% \AFPq\let\ifNEQ\iftrue% -................... \noenglishquote \ifFrench\let\@cilq='\fi}% %#> \DFPq% -disactivate quoting \def\untypedspaces{\@noBDfr% \let\ifUSP\iftrue}% -......................... \untypedspaces \def\typedspaces{\@noBDfr% \let\ifUSP\iffalse}% -............................ \typedspaces \let\if@labelsinmargin\iffalse% -Should be false for french light. %#< \def\englishdoublequotes{\@noBDfr% \let\ifNED\iffalse% -.............. \englishdoublequotes \DFPq\ifFrench\let\@cilq='\fi}% \def\englishquote{\@noBDfr% \let\ifNEQ\iffalse\DFPq% -...................... \englishquote \ifFrench\let\@cilq='\fi}% \def\labelsinmargin{\@noBDfr% \let\if@labelsinmargin\iftrue}% -............ \labelsinmargin \def\nolabelsinmargin{\@noBDfr% \let\if@labelsinmargin\iffalse}% -........\nolabelsinmargin \def\letpunctuationactivefor{\@noBDfr% %........................ \letpunctuationactivefor \global\let\ifLPA\iftrue% \def\wrongtypedspaces{\@noBDfr% \global\let\ifWTS\iftrue}% -.............\wrongtypedspaces }% \def\wrongtypedspaces{\f@issue\@fw{-17- % %\@txt@msg{\string\wrongtypedspaces\space est }% %\@txt@msg{inop\'erant dans ce contexte}% }}% \def\nowrongtypedspaces{\@noBDfr% \global\let\ifWTS\iffalse% -......... \nowrongtypedspaces \ifLPA\DFPdp% -don't change \dospecials and \@sanitize \fi\global\let\ifLPA\iffalse}% -it might be dangerous % With \tabbingaccents you can't put a diacritic (` or ') on a blank space % but it's okay for all accentuated letters. Usefull in full 8bits with % ECM too! because 8bits chars are firstly converted to 7bits "a la TeX". \def\tabbingaccents{\@noBDfr% \let\@ifTA\iffalse}% -...................... \tabbingaccents \def\notabbingaccents{\@noBDfr% \let\@ifTA\iftrue}% -................... \notabbingaccents \AFPq% % tabbing environment is modified to be able to put diacritics \def\@temp@{% \def\tabbing{\def\@tempa{\let`=\lq\let'=\@normalrq}% -............ \tabbing % \noenglishquote and \noenglishdoublequotes will do nothing in \tabbing \ifNED\@tempa\fi\ifNEQ\@tempa\fi% \def\@tempa{\let\@ifTA\iftrue}% \ifFTY\else\expandafter\@tempa\fi% \ifFTY\@ifTA\else% \let\@trjORI\@tabrj\let\@tlabORI\@tablab% \let\@ORIrj=\`\let\@ORIlab=\'% \def\@@tabrj{\ifcat\@tempc\space\let\@tempa=\@trjORI% \else\let\@tempa=\@ORIrj\fi\@tempa}% \def\@@tablab{\ifcat\@tempc\space\let\@tempa=\@tlabORI% \else\let\@tempa=\@ORIlab\fi\@tempa}% \def\@tabrj{\futurelet\@tempc\@@tabrj}% \def\@tablab{\futurelet\@tempc\@@tablab}% \fi\fi\@tgORI}% }% \ifx\tabbing\undefined% \else\let\@tgORI\tabbing% -put diacritics \` & \' \@temp@% -new def apply \fi% \DFPq% \AFPinfsup% -activate < and > \def\EBCDICbrackets{\@noBDfr% \let\ifIEB\iftrue% -......................... \EBCDICbrackets \ifFG% \def<{\protect\@LFG}% -old code generate \ifnum incompatibilty \def\@LFG{\@ifNextNB<{\protect\@OG}{\@@LFG}}% \def\@OG<{\ifnum\catcode`< =\active\expandafter\@LG% \else\@@LFG\@@LFG\fi}% \def>{\protect\@RFG}% \def\@RFG{\@ifNextNB>{\protect\@FG}{\@@RFG}}% \def\@FG>{\ifnum\catcode`> =\active\expandafter\@RG% \else\@@RFG\@@RFG\fi}% \fi}% \long\def\@BracesOrNot[#1]{\ifmmode\@PreserveBraces[#1]% \else\expandafter#1\fi}% \let\@fobeyspaces\empty% \long\def\@genG#1#2#3{\@fobeyspaces% \ifx#2#3\expandafter\protect\csname @#1G\endcsname% \else\csname @@#1FG\endcsname\expandafter\@BracesOrNot% \expandafter[\expandafter{% \expandafter#3\expandafter}\expandafter]% \fi}% \edef\@genGL{\noexpand\@genG{L}\noexpand<}% \edef\@genGR{\noexpand\@genG{R}\noexpand>}% % Hacking for blank space after "<" or ">" doesn't run in any \ifdim x > y % like in \footnote, so the code is nullified until... %\def\@bobeyspaces{\obeyspaces% % \def\@fobeyspaces{\catcode`\ =10\let\@fobeyspaces\relax}}% \let\@bobeyspaces\empty \def\normalbrackets{\@noBDfr% \let\ifIEB\iffalse% -........................ \normalbrackets \ifFG% \def<{\ifnum\catcode`< =\active\@bobeyspaces\expandafter\expandafter% \expandafter\@genGL\ifmmode\relax\fi% \else\@LSG\fi}% \def>{\ifnum\catcode`> =\active\@bobeyspaces\expandafter\expandafter% \expandafter\@genGR\ifmmode\relax\fi% \else\@RSG\fi}% \fi}% \DFPinfsup% -desactivate < and > %#> \let\ifFG\iffalse% -default further choice %#< \def\ancientguillemets{\@noBDfr% \let\ifAG\iftrue}% -................... \ancientguillemets \def\todayguillemets{\@noBDfr% \let\ifAG\iffalse}% -...................... \todayguillemets \def\guillemetsinarrays{\@noBDfr% \let\ifArG\iftrue}% -................ \guillemetsinarrays \def\noguillemetsinarrays{\@noBDfr% \let\ifArG\iffalse}% -........... \noguillemetsinarrays \def\guillemetsinallfonts{\@noBDfr% \let\ifGIAF\iftrue}% -........... \guillemetsinallfonts \def\guillemetsinroman{\@noBDfr% \let\ifGIAF\iffalse}% -................ \guillemetsinroman \def\overfullhboxmark{\@noBDfr% \ifFLA\overfullrule=5pt\fi}% -.......... \overfullhboxmark \def\nooverfullhboxmark{\@noBDfr% \ifFLA\overfullrule=0pt\fi}% -....... \nooverfullhboxmark %#> \let\ifFrench\iffalse% -reset original value % % For compatibility with MlTeX docs but unneeded in this style%...\fhyph \ehyph {\def\@genMLhyph{\@ifundefined{french}{}{\gdef\fhyph{\french}}% \@ifundefined{english}{}{\gdef\ehyph{\english}}}% \@ifundefined{fhyph}{\@genMLhyph}{}% }% % \gdef\frenchTeXmods{% -............................................\frenchTeXmods \global\let\ifFrench\iftrue% \ifCLA% \ifCLAfrench% \@AFP% -activate French punctuation \frenchtypography\frenchtranslation\frenchlayout% \fi% \else% \@AFP% -activate French punctuation \frenchtypography\frenchtranslation\frenchlayout% \fi% \frenchmacros\frenchwarnings% \let\@HifORI\@Hif\let\@HfiORI\@Hfi% \frenchhyphenation% \csname @xtrasfrench\endcsname% -from other packages % (TeX-XeT first direction of writing will be set by the first \everypar) \ifx\GOfrench\undefined% -When document is really started, \csname beginL\endcsname% -set TeX--XeT direction of writing. \fi% \def\languagename{french}% -set it for mlp. \@ufo% -user options \let\switchtolanguage\endfrench% \ignorespaces% }% -end \frenchTeXmods % Declare Options, extras and even more extras \ifx\undefined\babel@core@loaded% \edef\extrasfrench{}\def\@xtrasfrench{\extrasfrench}% -for other packages. \DeclareOption{french}{\def\beginlanguage{% \ifx\babel@savevariable% -selectlanguage \undefined\french% \else\endenglish\selectlanguage{french}\fi}% }% \DeclareOption{english}{\def\beginlanguage{% \ifx\babel@savevariable% -selectlanguage \undefined\english% \else\selectlanguage{english}\fi}% }% \else\let\extrasfrench\frenchTeXmods% \AtBeginDocument{% -With babel, at begin document we should \def\@tempa{\protect\@LabeL}% -test if our label def had \ifx\@tempa\label\else% -been changed by any package such as hyperref \let\@lORI\label\let\label\@tempa\fi% -and then reset it. \def\@tempa{\protect\atgH{r}}% -Same test and action \ifx\@tempa\ref\else\@gG{r}{ref}{/}{1}\fi% -for \ref. }% \fi% % \@ifundefined{switchtolanguage}{% \def\switchtolanguage#1{#1}}{}% -.(style depending)........ \switchtolanguage \let\@stlORI\switchtolanguage \def\@DFPtestANDset{% -Test if French was activated, \ifx\ifFrench\iffalse% -if not \ifLPA will make French to crash \f@issue\@fw{-71- % %\@txt@msg{ATTENTION : }% with message -26*-; better is that message. % %\@txt@msg{si babel est utilis\'e, mettre \frenchname\space en option}% }% \fi% \let\@DFPtestANDset\@DFP% \@DFP}% \def\endfrench{% -............................................. \endfrench %%% This \endL should be omitted otherwise it will be an extra for eTeX. %%% \ifx\undefined\GOfrench% When french document really started, %%% \csname endL\endcsname% stop any TeX--XeT french direction of writing. %%% \fi% \ifCLAfrench\else% \@DFPtestANDset% \nofrenchtypography\nofrenchtranslation\nofrenchlayout% \fi% \nofrenchmacros% \nofrenchhyphenation% \let\@Hif\@HifORI\let\@Hfi\@HfiORI% \let\switchtolanguage\@stlORI% \let\ifFrench\iffalse\@stlORI% \ignorespaces}% -end of \endfrench \let\noextrasfrench\endfrench% %#< \def\frenchtest{\@finput{french.tst}}% -The Torture Test ........... \frenchtest \def\frenchdoc{\@finput{frdoc.tex}}% -The Documentation ............. \frenchdoc %#> %%%%%%%%%%%%%%%%%% % =============================== % | Language switch mechanism | % =============================== % based on language.dat file % \@ifundefined{englishTeXmods}{\gdef\englishTeXmods{}}{}% -....... \englishTeXmods % \global\let\@Hif\empty\global\let\@Hfi\empty% -dflt \if...\fi hyphenation switch \global\let\if@FE\iffalse% -don't reload hyphenation exception if not required. \newif\if@more\@moretrue% \def\@doFh{% -define processing for reading language.dat at \begin{document} \def\f@ERRdat{\f@issue% \errmessage{-9- %\@txt@msg{Corrupted/absent language.dat file.}% }\global\let\french\@@end% }% \bgroup% -there is a marmelade here for a temporary usage. \let\ORIGfrench\french% \newcount\@FrCount% \def\tl@ng##1{}% -no need at this time to test if \TeXmods is defined \def\@rhef##1/##2 /{\def\@tempa{##2}% -reloading of hyphenation exceptions files \def\@tempb{##1}% -language name \def\@tempc{\ifx\space\@tempa\else% \expandafter\gdef\csname ##1@hefn\endcsname{##2\relax}% \if@FE\expandafter\@@input##2\relax\fi\fi}% \ifx\undefined\@excn\@tempc% \else\ifx\@tempb\@excn\@tempc\fi\fi}% \gdef\NouveauLangage[##1]##2{%....................... \NouveauLangage[##]{name} %-- check for an anormal change in language.dat: \expandafter\@ifundefined{l@##2}{}% do nothing, unused at initex {% First accept babel definitions (\chardef) of languages. \chardef\l@no##1\expandafter\if\csname l@##2\endcsname\l@no\else% \edef\l@no{##1}\expandafter% % Secondly accept our own defs. \ifx\csname l@##2\endcsname\l@no% OK \else\f@issue\typeout{^^J \frenchname.sty \string: -27- % %\@txt@msg{language \l@no\space (##2) was initially }% %\@txt@msg{(at initex) numbered \csname l@##2\endcsname\space(ERROR!)}% }[##2]\f@ERRdat% \fi\fi}% %-- \expandafter\tl@ng\csname##2TeXmods\endcsname% \expandafter\gdef\csname##2 \endcsname% The protected language cs. {\expandafter\switchtolanguage\csname ##2TeXmods\endcsname% \@Hif\language=##1\@Hfi\relax}% \expandafter\gdef\csname##2\endcsname% The language cs. {\protect\csname##2 \endcsname}% }%\NouveauLangage % ============================================ % begin definition of Nouveau@Langage \def\Nouveau@Langage[##1]##2{% -....................... \Nouveau@Langage[##]{name} %arabic as a language should not change the definition of \arabic V5,9995 % the same is valid for future similar cases V5,9995 \expandafter\@ifundefined{##2}{\lang@defifalse}% V5,9995 {\lang@defitrue}% V5,9995 %-- check for an anormal change in language.dat: \expandafter\@ifundefined{mlp##2}{\langmlp@defifalse}% {\langmlp@defitrue}% \def\l@n@test{##2} % here only the choises french or english, excluding arabic as language V6,0 \ifx \l@n@fre\l@n@test\langok@defitrue\fi % french is accepted:\def\l@n@fre{french}% \ifx \l@n@eng\l@n@test\langok@defitrue\fi % english accepted: \def\l@n@eng{english}% % \iflangok@defi \typeout{ ##1 : ##2}\fi% % < -- arabic prepare \expandafter\@ifundefined{l@##2}{}% \iflangok@defi {% \expandafter\tl@ng\csname##2TeXmods\endcsname% \iflang@defi% ++ test same name existing? \expandafter\gdef\csname##2Lang \endcsname% {\expandafter\switchtolanguage\csname ##2TeXmods\endcsname% \@Hif\language=##1\@Hfi\relax}% \expandafter\gdef\csname##2Lang\endcsname% {\protect\csname##2Lang \endcsname}% \typeout{eFrench Info : % \\##2Lang commute sur langue ##2 }% \typeout{eFrench Info : % et \\##2TeXmods pour ses extensions }% \typeout{eFrench Info : % avec \\ = une seule barre oblique inverse ===}% \else% ** name not yet existing \expandafter\gdef\csname##2 \endcsname% {\expandafter\switchtolanguage\csname ##2TeXmods\endcsname% \@Hif\language=##1\@Hfi\relax}% \expandafter\gdef\csname##2\endcsname% {\protect\csname##2 \endcsname}% \fi% same name already existing ? }% \fi% -- french or english accepted }% -\Nouveau@Langage % end definition of Nouveau@Langage % ============================================ % using Nouveau@Langage also for dialects: % test if #1 equal ``='' that means same language hyphenation but a dialect. \edef\@temp@{=}% \def\@langue##1##2 ##3 ##4/##5{\def\@tempa{=}\def\@tempb{##1}% \ifx\@tempa\@tempb% \ifnum\@FrCount > 0 \advance\@FrCount by -1\fi% \relax% -relax Max! Why is it absolutely needed? \expandafter\Nouveau@Langage\expandafter[\the\@FrCount]{##2}% \ifnum\@FrCount \@temp@ 0 \@FrCount= -1\fi% \else\langok@defifalse\edef\@temp@{<}\@l@ngue##1##2 ##3 ##4/{##5}% \fi}% \def\@l@ngue##1 ##2 ##3/##4{\Nouveau@Langage[##4]{##1}% %%%\typeout{La langue ##1 est utilis\'ee sous le num\'ero \the\@FrCount} %\expandafter\@@input##2\relax%% loading of patterns is done at initex %% % \if@FE \@rhef##1/##3/% -Check if reload of exceptions file is needed. %%%\fi }% -end of \Nouveau@Langage % \let\hyphenation\f@hyphenation% -use our new macro. % % Nouveau@Langage (as @l@ngue will be use to read language.dat : % \openin\@inputcheck = language.dat \def\@tempb{}% \ifeof\@inputcheck\@Ffnt{language.dat}% \ifx\undefined\french % -language.dat is absent but \french might be def. \else\xdef\@PrevF{\french}% \gdef\french{\switchtolanguage\frenchTeXmods\@PrevF}% {\@PrevF\f@issue\@fw{-15- % %\@txt@msg{le langage \frenchname\space porte le }% %\@txt@msg{num\'ero \the\language}% }}% \fi% \ifx\undefined\l@english % -any default English language number? \def\l@english{0}% -set it \fi% \ifx\undefined\english % -check English (fenglish.sty usally loaded) \else\xdef\@PrevE{\language=\l@english}% \gdef\english{\switchtolanguage\englishTeXmods\@PrevE}% {\@PrevE\f@issue\@fw{-16 % %\@txt@msg{the English language\space is numbered }% %\@txt@msg{\the\language}% }}% \fi \else\@FrCount=-1% % =============================== % begin some indicators for language testing \newif\iflang@defi% V5,9995 RJ \newif\iflangmlp@defi% V5,9995 RJ \newif\iflangok@defi% V6,0 RJ \def\l@n@fre{french}% V6,0 RJ \def\l@n@eng{english}% V6,0 RJ \let\englishORI\english% V5,9995 RJ \let\english\undefined% V5,9995 RJ % end some indicators % =============================== \loop \endlinechar=-1 \read\@inputcheck to \@lineD \endlinechar`\^^M% \ifx\@lineD\empty \else \advance\@FrCount by 1% \edef\@lineD{\@lineD\space\space/{\the\@FrCount}}% \expandafter\@langue\@lineD% \fi% \ifeof\@inputcheck \@morefalse \fi% \if@more\repeat% \fi\closein\@inputcheck% < language.dat \ifx\undefined\english\let\english\englishORI\fi% V5,9995 ! \let\hyphenation\@hyphenation% -reset original cs. % \def\@MLtst{\@ifundefined{fhyph}% -if French and \fhyph undef. (no language.dat) {\if@PMF\gdef\french{\switchtolanguage\frenchTeXmods}% \f@issue% \@fw{-19- % %\@txt@msg{utilisation du langage interne num\'ero \the\language}% }% \else\f@issue% \typeout{^^J \frenchname.sty: -20b- %\@txt@msg{the French language is undefined (ERROR!)}% }\f@ERRdat\fi}% %if \fhyph defined as in MlTeX then : {\gdef\french{\switchtolanguage\frenchTeXmods\fhyph}% \gdef\english{\switchtolanguage\englishTeXmods\ehyph}% }% }% -@MLtst \@ifundefined{french}{\@MLtst}{}% -French might be still undefined! \@ifundefined{endenglish}{\global\let\endenglish\french}{}% -and \endenglish \gdef\tl@ng##1{\ifx ##1\relax\f@issue% \@fw{-21- %\@txt@msg{##1 n'est pas d\'efini}% }[##1]\fi}% \ifx\ORIGfrench\french\f@ERRdat\fi% \egroup% -this is the end of the marmelade }% -end of \@doFh (\GOfrench part 2) %%%%%%%%%%%%%%%%%% Insure AmSTeX will not be loaded later. \ifx\vert\undefined\else\let\@bvORI\vert\fi% -Already done before macros. \def\@fwVIIIII{\f@issue% \kbtypeout{^^J -73- %\@txt@msg{ERREUR avec AmSTeX : }% %\@txt@msg{\frenchname.sty a \'et\'e charg\'e trop t\^ot !}% }\stop}% \ifx\RIfM@\undefined% \def\vert{\ifx\RIfM@\undefined\expandafter\@bvORI\else\expandafter% \@fwVIIIII\fi}% \else% \def\vert{\@bvORI}% \fi% %%%%%%%%%%%%%%%%%% %#< % =============================== % | Macros for help | % =============================== % % Abbreviations \def\@abbf[#1]{\def\abbrevfilename{#1}}% \AFPdq% -Activate " char for the following coding \def\abbreviations{\if@PMF\else\AFPdq\fi% -...................... \abbreviations \@abbdefs\let\@abbdefs\relax% \@ifNextNB[% -] emacs {\@abbf}{\@abbf[frabbrev.tex]}}% % The following lines are excluded from high speed \if...\fi scan \def\f@protect{\ifx\protect\@typeset@protect% \else\f@x@protect\fi}% \def\f@x@protect\fi#1{\fi\protect"}% \def\@eatprotect#1\protect#2\@nil{#1}% \if@PMF\let\f@protect\undefined\let\f@x@protect\undefined% \let\@eatprotect\undefined% \fi% -\if@PMF \def\@abbdefs{% -the needed defs for abbrevs \def\ABBfound{\global\let\ifABBfound\iftrue}% \let\ifABBfound\iffalse% \def\@abbrev##1##2 ##3##4 ##5/{% \let\ifFMA\iftrue% -allways true here \edef\@tempa{##1##2}% \ifx##3*\edef\@tempb{##4}\edef\@tempc{##4s}% \else\edef\@tempb{##3##4}\edef\@tempc{}% \fi% \ifx\@tempa\@tempb##5\ABBfound% \else\ifx\@tempc\empty% \else\ifx\@tempa\@tempc##5\ABBfound\fi% \fi% \fi% \ifABBfound% \else\edef\@tempa{##2}\edef\@tempb{##4}% \ifx\@tempa\@tempb##5\ABBfound% \else\ifx\@tempc\empty% \else\ifx\@tempa\@tempc##5\ABBfound\fi% \fi% \fi% \fi}% \def\@openabbrev##1{\openin\@inputcheck=##1 % \ifeof\@inputcheck\@Ffnt{##1}\fi}% \def"{\f@protect\AbbrevName}% -"......................................... "xx" \def\AbbrevName##1"{\def\@tempa{##1}\ifx\@tempa\space``\space''% \else\@@bbrev##1"\fi}% \def\@@bbrev##1{\expandafter\@@@bbrev\@eatprotect##1\protect\@nil}% \def\@@@bbrev##1"{\begingroup% \def\ABBMfalse{\global\let\ifABBM\iffalse}% \let\ifABBM\iftrue\global\let\ifABBfound\iffalse% \@openabbrev{\abbrevfilename}% \ifeof\@inputcheck\else% \loop\endlinechar=-1\read\@inputcheck to \@lineD\endlinechar`\^^M% \ifx\@lineD\empty% \else\edef\@lineD{##1 \@lineD/}\expandafter\@abbrev\@lineD\fi% \ifABBfound\ABBMfalse\fi% \ifeof\@inputcheck \ABBMfalse\ifABBfound\else% \f@issue% \@fw{-22- % %\@txt@msg{abr\'eviation de \string"##1\string" non trouv\'ee}% }[##1]% \fi\fi% \ifABBM\repeat% \fi\closein\@inputcheck% \ifABBfound\else``##1''\fi\endgroup}% }% -end of \@abbdefs \if@PMF\let\@abbdefs\relax\fi% -No need with PMF. \DFPdq% -Deactivate " char \def\noabbreviations{\if@PMF\else\DFPdq\fi}% -................. \noabbreviations % Save original macros if they exist before the French option loading \let\@atORI\at% % \let\@bvORI\vert% Already done before macros. \let\@bsORI\backslash% \catcode`\/=0{\catcode`/\=12% /gdef/@boiORI{{/protect/string\}}}% -}emacs+TeX /catcode`/\=0\catcode`\/=12% \let\@boi\textbackslash% -Should be ok with hyperref \let\@chapORI\chap% \let\@tildeORI\tilde% \let\@etcORI\etc% \let\@numORI\numero% \let\@numsORI\numeros% \let\@NumORI\Numero% \let\@NumsORI\Numeros% \let\@degreORI\degre% \let\@degresORI\degres% \let\@iemeORI\ieme% \let\@iemesORI\iemes% \let\@ierORI\ier% \let\@iersORI\iers% \let\@iereORI\iere% \let\@ieresORI\ieres% \let\@fscORI\fsc% \let\@lscORI\lsc% \let\@ntsORI\!% \let\@hntscORI\halfnegthinspace% \def\@ifm{%\noabbreviations% -this is the default % original commands would be better preceeded by \expandafter \def\at{\ifFMA\string @\else\@atORI\fi}% -at char ............. \at \ifx\RIfM@\undefined% \def\vert{\ifx\RIfM@\undefined% \ifmmode\expandafter\@bvORI% \else\ifFMA\string |\else\@bvORI\fi\fi% \else\expandafter\@fwVIIIII% \fi}% \else% \def\vert{\ifmmode\expandafter\@bvORI% -| .............. \vert \else\ifFMA\string |\else\@bvORI\fi\fi}% \fi% \def\backslash{\ifmmode\@bsORI% -(barre oblique inversee) ........ \backslash \else\ifFMA% \protect\@boi% \else\@bsORI% \fi% \fi}% \def\chap{\ifFMA\string ^\else\@chapORI\fi}% -hat char ........... \chap \def\tilde{\relax\ifFMA\ifmmode\expandafter% -tilde char.......... \tilde \expandafter\expandafter\@tildeORI% \else\string~\fi\else\expandafter\@tildeORI\fi}% \def\@Fsp##1{\ifFMA\ifmmode^{\mathrm{##1}}% \else$^{\mathrm{##1}}$\fi% \else##1\fi}% \def\@umer##1{\protect\@Fsp{##1}\kern.2em\ignorespaces}% \long\def\etc{\def\@tempa{}% -etc. ................ \etc \ifFMA% \ifhmode\ifUSP\unskip\space\fi% \ifdim\lastskip>\z@\unskip\penalty\@M~\fi% \fi% etc\def\@tempa{\@ifNextNB.{}{% \@fw{-60- % %\@txt@msg{point manquant apr\`es \string\etc}% }}}% \else\@etcORI% \fi\@tempa}% \let\nombre\undefined% -To avoid redefinition info message of LaTeX. \DeclareRobustCommand*{\nombre}% -..................................... \nombre {\ifFMA\expandafter\@nombre% -This control command designed \else\expandafter\@nomORI% -to typeset french numbers \fi}% -with correct spacing like in 123 456,789 012. \def\numero{\ifFMA n\@umer{o}\else\@numORI\fi}% -n^o ........... \numero \def\Numero{\ifFMA N\@umer{o}\else\@NumORI\fi}% -N^o ........... \Numero \def\numeros{\ifFMA n\@umer{os}\else\@numsORI\fi}% -n^os ........... \numeros \def\Numeros{\ifFMA N\@umer{os}\else\@NumsORI\fi}% -N^os ........... \Numeros \def\degre{\ifFMA\r{}\space% -degree char....... \degre \else\expandafter\@degreORI\fi}% \def\degres{\ifFMA\@Fsp{o}\else\@degresORI\fi}% -degrees sign..... \degres \def\leftguillemets{\@noBDfr% \ifFMA\@oguills% -<< char...\leftguillemets \else<<\fi}% \def\rightguillemets{\@noBDfr% \ifFMA\sp@infgtrue\@fguills% ->> char..\rightguillemets \else>>\fi}% \def\fup{\@noBDfr\ifFTY% -.............................................. \fup \expandafter\@fup\fi}\MakeRobustCommand{fup}% \def\@fup{\@ifstar{\csname\string\!\endcsname\@@fup}{\@@fup}}% \def\@@fup##1{\def\@tempa{\leavevmode\raise+0.80ex% \hbox{\protect\sm@llerthree% \MakeLowercase{##1}}% \@ifNextNB\bgroup{\@@@fup}{\kern+.17em}}% \ifFMA\expandafter\@tempa\else##1\fi% }% \def\@@@fup##1{\ifx\empty##1\else\kern+.17em{##1}\fi}% % \def\ieme{\ifFMA\protect\fup{e}\else\@iemeORI\fi}% % \def\iemes{\ifFMA\protect\fup{es}\else\@iemesORI\fi}% \def\@tgifFMA##1##2{\ifFMA\expandafter\protect\expandafter##1% \else\expandafter\protect\expandafter##2\fi% }% \def\ieme{\@tgifFMA\@Ieme\@iemeORI}% -............... ieme sign..... \ieme \def\@Ieme{\@ifstar{\@ieme}{\@@eme}}% \def\@ieme{\fup*{e}}% \def\@@eme{\fup{e}}\MakeRobustCommand{ieme}% \def\iemes{\@tgifFMA\@Iemes\@iemesORI}% -............ iemes sign..... \iemes \def\@Iemes{\@ifstar{\@iemes}{\@@emes}}% \def\@iemes{\fup*{es}}\MakeRobustCommand{iemes}% \def\@@emes{\fup{es}}% \def\ier{\@tgifFMA\@ier\@ierORI}% -.................. ier sign..... \ier \def\@ier{\fup*{er}}\MakeRobustCommand{ier}% \def\iers{\@tgifFMA\@iers\@iersORI}% -............... iers sign..... \iers \def\iers{\fup*{ers}}\MakeRobustCommand{iers}% \def\iere{\@tgifFMA\@iere\@iereORI}% -............... iere sign..... \iere \def\iere{\fup*{re}}\MakeRobustCommand{iere}% \def\ieres{\@tgifFMA\@ieres\@ieresORI}% -............ ieres sign..... \ieres \def\@ieres{\fup*{res}}\MakeRobustCommand{ieres}% \def\fsc{\@noBDfr\Fsc@@}% -....................... small caps for names \fsc \MakeRobustCommand{fsc}% \def\Fsc@@{\@ifNextNB*{\let\Fsc@F\@sc@F\FSC@}{\let\Fsc@F\relax\FSC@*}}% \def\@sc@F{\rmfamily\mdseries}% -The star option forces cmr and m font. \def\FSC@*##1{\fsc@##1\@@}% % Still bugged bec \fsc{{{...}}} generates a wrong output \def\fsc@##1##2\@@{\ifFMA\leavevmode{\ifECM\Fsc@F\else\@sc@F\fi% \textsc{% \@uchbox{\let\protect\@empty% \let\@typeset@protect\@empty% \let\@changed@x\@changed@x@mouth% \if\relax\noexpand##1\fsc@@@##1##2\@@% \else\edef\@tempa{##1}% \expandafter\fsc@@\@tempa##2\@@% \fi}}}% \else\@fscORI##1\fi}% \def\fsc@@##1##2\@@{\MakeUppercase{##1}\lsc@*{##2}}% -remove surrounding {} \def\fsc@@@##1##2##3\@@{\MakeUppercase{##1{##2}}\lsc@*{##3}}% % \def\lsc{\@noBDfr\Lsc@@}% -............... allways lower case small caps \lsc \MakeRobustCommand{lsc}% \def\Lsc@@{\@ifNextNB*{\let\Fsc@F\@sc@F\lsc@}{\let\Fsc@F\relax\lsc@*}}% \def\lsc@*##1{\ifFMA\leavevmode{\ifECM\Fsc@F\else\@sc@F\fi% \textsc{\@uchbox{\MakeLowercase{##1}}}}% \else\@lscORI##1\fi}% %......................................... \primo \secundo \tertio \quarto% %((((..................................... \primo) \secundo) \tertio) \quarto) \def\@FE{\@noBDfr% -( emacs \@ifNextNB){\@@FPE}{\@@FE}}% \def\@@FE{\the\@FrCount$^{\mathrm o}$\kern+.29em}% % \def%( emacs % \@@FPE){\the\@FrCount\kern-.25em\lower.2ex\hbox{\degre}% % \kern-.55em%(emacs % )\kern+.3em}% \def% -( emacs \@@FPE){\setbox0=\hbox{\degre}\@FrDimen=\wd0\multiply\@FrDimen by 10% \divide\@FrDimen by 45\leavevmode% \the\@FrCount\kern-\@FrDimen% \setbox0=\hbox{\the\@FrCount}\@tempdima=\ht0% \setbox0=\hbox{\degre}\@tempdimb=\ht0% \advance\@tempdimb by -\@tempdima% \lower\@tempdimb\hbox{\degre}% \multiply\@FrDimen by 45% \divide\@FrDimen by 20% \kern-\@FrDimen% -(emacs )\kern+.3em}% \def\quando=##1{\@FrCount=##1\@FE}% -(emacs.......... \quando=n or \quando=n) \MakeRobustCommand{quando}% \def\primo{\@FrCount=1\@FE}% \def\secundo{\@FrCount=2\@FE}% \def\tertio{\@FrCount=3\@FE}% \def\quarto{\@FrCount=4\@FE}% \def\frenchalias##1##2{% -.......................................... \frenchalias \ifx##1\undefined\let##1 ##2\relax% \else\f@issue% \@fw{-1- %\@txt@msg{la macro \string##1 existe d\'ej\`a}% }[\string##1]% \expandafter\stop% \fi}% % % (Leslie says: "... counters are referencable, footnote counters are not.") % Now we do. A facility to be added in future LaTeX releases I hope. \@ifundefined{refmark}% -stands for \footnotemark[\ref{...}] .......... \refmark {\def\refmark##1{\@noBDfr% \ifFTY\ifhmode% -unskip last space \ifdim\lastskip>\z@\unskip\fi\fi\fi% \hbox{% -following patch due to NFSS2: %%%\ifx\DeclareFontShape\undefined\else\let\bf\mathbf\fi%\bf is used in \ref! $^{\,% -\ref may force \itshape \let\itshape\relax% -which don't run in math. \textrm{\scriptsize% -\textrm introduced to avoid \pdfannotlink (13d) to crash. \ref{##1}% }% -(Bypass to be removed when version 14 widely installed). }$}}}{}%....}% \def\!{\relax\ifFMA\ifmmode% \mskip-\thinmuskip\else\negthinspace\fi% -......... \! \else\@ntsORI\fi}% \expandafter\def\csname\string\!\endcsname{\kern-.083335em}% \def\halfnegthinspace{\ifFMA\expandafter% -Not documented macro: \csname\string\!\endcsname% -..... \halfnegthinspace \else\expandafter\@hntsORI\fi}% \@ifundefined{moretolerance}{\def\moretolerance{% -.............. \moretolerance \@noBDfr% \advance\tolerance by \the\tolerance% -double each tolerance \advance\pretolerance by \the\pretolerance}}{}% \@ifundefined{I}{\def\I{I}}{}% -to uppercase \i ........................... \I \def\Sauter##1Lignes{\@noBDfr% \vspace*{##1\baselineskip}}% -............ \Sauter#Lignes }% -end of \@ifm %%%%% Logo symbolisant TeX, LaTeX et les autres \@ifundefined{AllTeX}{% -............................................... \AllTeX \def\AllTeX{(\kern-.075em L\kern-.36em{\sbox\z@ T\vbox to\ht\z@{\hbox{% \check@mathfonts\fontsize\sf@size\z@\math@fontsfalse% \selectfont A}\vss}}\kern-.15em)\kern-.075em\TeX}% \MakeRobustCommand{AllTeX}% }{}% %#> %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \let\@currname\@currnameORI% -reset current package name \def\languagename{english}% -Let's go in english until \begin{document} \def\beginlanguage{% -.......\beginlanguage might be used after \begin{document} \ifx\babel@savevariable% -selectlanguage \undefined\french% \else\endenglish\selectlanguage{french}\fi% }% \let\@bglngpk\babel@savevariable% -Set it for further integrity tests. \ifx\pg@add@to\undefined\else% -polyglot is running \def\pg@begin{\begingroup}% -Javier Bezos \def\pg@end{\endgroup}% -as of 98/05/15 \fi% % \edef\beginFWdirection{L}% -write Left to right \ifx\undefined\babel@core@loaded\ProcessOptions*% -Activate options \else% -special case Babel \PackageInfo{\frenchname}% {Initialisation de l'option \frenchname\space pour Babel}% \GOfrench\let\GOfrench\relax% \fi% \let\@FW\undefined% -No more used macro. % REMember that \french is equal to \frenchTeXmods PLUS hyphen. stuff. \resetat% -........................................................ reset @ char %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % Let few other packages know that french is loaded. % \PassOptionsToPackage{french}{varioref}% \PassOptionsToPackage{french}{pdfscreen}% % \endinput%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%