% This is frltx209.sty % of GUTenberg (Frenchspeaking TeX Users Group) % (Groupe francophone des Utilisateurs de TeX). % by Bernard GAULLE since 1989. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % This file intended for LaTeX 2.09 is now definetely frozen. --bg 97/12/11 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %.................................................................... % Have you registered? if not, fill in the form in frmsgOK file and send it % now, otherwise Bernard will never accept your messages requesting help. %.................................................................... % Copyright GUTenberg-Bernard Gaulle 1992-1997: % - You are NOT ALLOWED to change this file in any way. % - You are NOT ALLOWED to take money for the distribution or use of % these files except for a nominal charge for copying etc. % - Redistribution of these unchanged files is allowed provided that % up to date informations about the GUTenberg association including % addresses are distributed in the same package. % - You are NOT ALLOWED to include these files in a package/software in % a way that will reduce its capabilities or features. % - All the files included in the distribution are available freely inside % the Internet public domain (and specially on CTAN servers). % - Assuming that there are other files needed to use correctly this % French style file (e.g. French hyphenation files), %>>>> if you receive this file alone from someone, be careful/complain! %>>>> (FOR INSTALLATION: read the printed file ALIRE.dvi in main directory) % - There was no virus at the time these files were completed for % distribution. % - This computer code is offered in hopes that it will be found useful, % and in the belief that it is correct, but it is offered without any % warranty of any kind, including warranty of fitness for any purpose. % Users of this code do so entirely at their own risk. The author neither % admits nor accepts any liability for any loss, direct, indirect, % consequential, incidental, or otherwise, resulting from the use of this % computer code. % - You are NOT ALLOWED to substitute author's authority by applying % modifications even, in your point of view, they correct deficiences. % International, European (91-255) and French (94-361) laws apply. %.................................................................... % NOTICE that this work was done without any support of any kind. % Friendly helps, supports as well as sponsors are welcome! %.................................................................... %% %% checksum = "50044 2577 9281 138584" %% \expandafter\ifx\csname frenchTeXmods\endcsname\relax%...\ifundefined \else \endinput \fi%......... \then go ahead \else do nothing \fi \def\frenchname{french}% this is the name of our language \def\ds@french{}% this might be usefull if loaded before \document... \def\ds@pmfrench{\pmfrench}% further defined % \newif\ifopenin\openintrue% temporary: OzTeX and VMS have/had \openin pbs %\def\OPENINPATH{PB}% \expandafter\ifx\csname OPENINPATH\endcsname\relax% pb \openin in VMS & OzTeX \else\openinfalse\fi% % % french.sty done by Bernard GAULLE for French-Speaking Users as of: {\catcode`\@=11{% \ifx\@unexpandable@protect\undefined\let\protect\empty% \else\let\protect\@unexpandable@protect% \fi% \xdef\FSfd{29 mai 1997}% \xdef\FSfv{V3,51% \ifopenin\else (special openin)\fi}% \xdef\frenchstyleid{\FSfv\space-- \FSfd\space --}% }}% \edef\FSfd{1997/05/29 }% % % 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 (Labo 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. % % Send suggestions/bug reports/corrections to the author: gaulle@idris.fr % (Bernard Gaulle, 4 av. Cadoux-Girault, F-92270 Bois-Colombes) % % Canonical Archive server is: ftp.univ-rennes1.fr (in pub/GUTenberg/french) % where these files are archived. % % Tested with LaTeX as released on: \ifx\documentclass\undefined\else\NeedsTeXFormat{LaTeX2e}[1996/12/01]\fi% % % 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 the big MlTeX version distributed for Ultrix by GUTenberg). % % Last updates, starting after releasing version 3,49 (January 28th, 1997): % =========== % % V3,50 \undefine instead of \undefined, as pointed by Jose Grimm % at the end of french. --bg 97/02/24 % New replacement strings (\inferieura, \superieura, etc.) % protected against "activation". Pointed by Adrian Rezus % with \RomanianTeX. --bg 97/02/25 % Allow package relsize.sty to be used with french (test % made by C. Labouisse) like smaller.sty --bg 97/03/03 % \footnote didn't accept argument with \par (as reported % by Ph. Louarn). \long added in \defs. --bg 97/03/05 % Footnote 11x, 22x, etc. incorrectly typeset. Due to the % sequence \if\thefootnote\relax instead of \ifx. % (pb reported by F.Boulanger). --bg 97/03/06 % \l@chapter was not defined when AmS code present but should % be done only for packages styles. Now defined if AmS % document classes are unused. --bg 97/03/07 % Introduce adapted \hyphenation and \showhyphens macros. Need % formats to be recreated, according to the current % distributed initex files, otherwise msg --41-. --bg 97/03/26 % Slight internal mod to define \babel@core@loaded % as in french.ldf used by babel. --bg 97/03/26 % \DFPinfsup modified, \< and \> doesn't exist. % Loop over \hyphenation, due to \h@yphenation multiply % redefined and not restored at language switch. --bg 97/04/28 % V3,51 % Fine tuning of kerning and glue by D.B.Roegel on spacing % after (opening) and before (closing) french guillemets. D.B.R97/05/07 % Italic correction before closing guillemets made of usual % \/ now, and only when \guillemetsinroman. Otherwise the % italic correction might not be appropriate, as suggested % by T. Bouche. % \vpageref doesn't provided optional argument as pointed by % Ph. Esperet. --bg 97/05/16 % As of today french is now definitely frozen under Plain TeX % with the name frplain.sty. --bg 97/05/29 % % and also check if there is any frpatch.sty file. % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % 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 \input french.sty with Plain TeX % or via \usepackage{french} with LaTeX % (or as an option of Babel) %[or via \documentstyle[french]{any_style} with LaTeX 2.09] % % 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 \document.....[pmfrench]{...}) % 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. % \english for going back to "normal" English conventions % And if you have a language.dat config file defining % german and dutch languages OR you use % \NouveauLangage[n]{german} and % \NouveauLangage[p]{dutch} where n and p are internal % unused language number, then you can type: % \german to switch to German conventions % \dutch or to switch to Dutch conventions or to % \any_name (any language created by \NouveauLangage[n]{any_name}) % \NouveauLangage[n]{language_name} (as previously explained) % define \language_name which will call \language_nameTeX % assuming that \language_nameTeX is/will be defined % (normally in a style file). % \beginlanguage switch in LaTeX to the language that started first after % \begin{document} (depending of the last lang. style opt) % \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 destroy the default % font encoding that is normally set in the format % (with initex material and specially kbconfig.tex) and % should not be changed any way! Used by NFSS2 too. %-------------------- % \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 % \nofrenchhyphenation Nullify former actions % % Other commands for hyphenation that remains unchanged over \french reinit. % % \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. % 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. % 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: \guillemetsinallfonts allow to print them in any font but % \guillemetsinroman remains the usual default value. % 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. % \notabbingaccents is the default value. % 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. %-------------------- % \frenchlayout Apply: % - indentation of all (first LaTeX) paragraphs. % - set item markers as --. % - reset section counter when starting a part. % Suboption: \noresetatpart nullify the former action. % - special spacing with the experimental "order" list. % - print table footnotes as in minipages. % - print a coma between consecutive footnotes. % - a French pagestyle when starting a Part or a Chapter % or an Index. % - 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 % \def\formfoot{...} for the odd page footings % \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. % \noeveryparguillemets don't start each par with guillemets % but start each level 2 line with them. % (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{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" % 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. % 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. % \at for printing @ (at) % \vert for printing | (vertical bar) % \chap for printing ^ (hat or circonflexe) % \backslash for \ (backslash) % \tilde for printing ~ (tilde) % \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 {\sc Name} % \lsc{name} or \lsc{NAME} will print as {\sc name} % \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 % The following is for help in headings until ECM not installed: % \minMAJ{oe} to print \oe or \OE in all cases % \minMAJ{ae} to print \ae or \AE in all cases % \minMAJ{i} to print \i or I in all cases % 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. % \abbreviations[my_abbrev_file] is allowed. % \noabbreviations is the default option % \nofrenchmacros Nullify former actions %-------------------- % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % =============================== % | 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.} / {\em 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. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % \ifx\undefined\language\countdef\language=19\fi%undefined in TeX V2.. \language \newif\ifECM\newif\ifLPLAIN% % Here come \if-switches codes in case of french.sty badly initiated \def\ErrFrench{\message{-26- Erreur d\'etect\'ee dans \frenchname.sty !}% \message{(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}% % Here are basic macros often coming from latex.tex \ifx\undefined\makeatletter% \def\makeatletter{\catcode`\@=11\relax}\fi%...................\makeatletter \ifx\undefined\makeatother% \def\makeatother{\catcode`\@=12\relax}\fi%....................\makeatother \edef\GOfrench{`\string @}% temp def futher 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 \def\GOfrench{babel}\ifx\@currname\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% \ifx\ProvidesPackage\undefined\else\xdef\@currname{french}% set package req. \ProvidesPackage{french}[\FSfd\space French package /\FSfv/ % (2e and 2.09 compatible)]% \fi% %\let\FSfd=\undefined% let it defined for possible patch test. \let\FSfv=\undefined% return to the pool % \ifx\undefined\@makeother% to avoid @ being \undefined \def\@makeother#1{\catcode`#1=12\relax}\fi%...................\@makeother \def\@temp@{lplain-bilingual}% E.P. wrong old def checking \ifx\fmtname\@temp@\typeout{ERROR: check for lplain.tex in ALIRE}\stop\fi% % \ifx\undefined\@dblarg% ....................................... \@dblarg \long\def\@dblarg#1{\@ifnextchar[{#1}{\@xdblarg{#1}}}% \long\def\@xdblarg#1#2{#1[{#2}]{#2}}% \fi% % 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@}% % % Include here needed LaTeX compatible definitions. % \def\newwrite{\alloc@7\write\chardef\sixt@@n}%not an outer def..\newwrite \ifx\@unused\undefined\newwrite\@unused\fi%.....................\@unused \ifx\protect\undefined\let\protect\empty\fi%....................\protect \ifx\@typeset@protect\undefined%.............. (used with 2e).\@typeset@protect \let\@typeset@protect\protect\fi% \ifx\@ifundefined\undefined% \long\def\@ifundefined#1#2#3{\expandafter\ifx\csname%.......... \@ifundefined #1\endcsname\relax#2\else#3\fi}% \fi% \@ifundefined{typeout}{%........................................\typeout \global\newlinechar`\^^J% \def\typeout#1{{\let\protect\string\immediate\write\@unused{#1}}}% }{}% \@ifundefined{inputlineno}{\def\@o@l{.}}% \inputlineno undefined in V2 {\ifnum\inputlineno=-1\def\@o@l{.}% may be negative \else\def\@o@l{ (\`a la ligne \the\inputlineno).}\fi}% \ifx\documentclass\undefined% \let\@aiguORI=\'\let\@gravORI=\`\let\@acchORI=\^% \else% \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% \fi \def\@fw#1{{\def\@nobraces##1{##1}% \ifx\charsubdef\undefined\let\protect\string% \let\add@accent\@gobble% for 2e \else% \def\'##1{\expandafter\@nobraces\@aiguORI##1}% \def\`##1{\expandafter\@nobraces\@gravORI##1}% % \def\^##1{\expandafter\@nobraces\@acchORI##1}% \fi% \edef\@tempa{#1}\typeout{\@tempa}}}% {\def\ier{er}% this is the French typographic abbreviation of "st" \def\'#1{\expandafter\@nobraces\@aiguORI#1}% \def\^#1{\expandafter\@nobraces\@acchORI#1}% \@fw{^^J -23- Extension \string : vieux style \frenchname\space^^J% pour LaTeX 2.09 % \frenchstyleid\space(B.Gaulle, GUTenberg)}% \let\frenchstyleid\undefined% \ifopenin\else% \@fw{ *******************************************************************}% \@fw{ * -24- ATTENTION, restrictions dues \`a votre moteur TeX :}% \@fw{ * 1- fichier langage.dat inutilis\'e ;}% \@fw{ * 2- gestion appauvrie des documents multilingues ;}% \@fw{ * 3- pas de possibilit\'e d'abr\'eviations automatiques ;}% \@fw{ * 4- pas de chargement dynamique du fichier des exceptions.}% \@fw{ *******************************************************************}% \fi% }% % \def\@fw#1{{\def\@nobraces##1{##1}% ........................... French warning \ifx\charsubdef\undefined\let\protect\string% \let\add@accent\@gobble% for 2e \else% \def\'##1{\expandafter\@nobraces\@aiguORI##1}% \def\`##1{\expandafter\@nobraces\@gravORI##1}% \fi% \edef\@tempa{#1\@o@l}% expand it now \typeout{^^J \frenchname.sty \string : \@tempa}}}% % {\def\set@filesw{\global\let\if@filesw\iftrue}% \ifx\undefined\if@filesw\set@filesw\fi}%.......................\if@filesw \ifx\undefined\@@input\let\@@input=\input\fi%...................\@@input \def\@Ffnt#1{\@fw{-2- fichier #1 non trouv\'e}}% \def\@finput#1{\openin\@ne #1 \ifeof\@ne \@Ffnt{#1}%............\@finput \else\closein\@ne \relax\@@input #1 \fi}% \def\@NoFr{\@fw{-3- l'option \frenchname\space n'est pas active ici !}}% \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 \bgroup\ifFrench\english\fi% \def\@riginalout##1##2{\immediate\write##1{##2}\egroup}% \@riginalout{#1}}% \@ifundefined{fussy}{\def\fussy{\relax}}{}%.....................\fussy \@ifundefined{sloppy}{\def\sloppy{\relax}}{}%...................\sloppy \@ifundefined{pcomma}{%.........................................\, \def\,{\protect\pcomma}% \def\pcomma{\relax\ifmmode\mskip\thinmuskip\else\thinspace\fi}}{}% \@ifundefined{date}{\def\date#1{\def\@date{#1}}%.............. \date \def\@date{\today}}{}%Default is today's date \@ifundefined{vspace}{\def\vspace*#1{\vskip#1}}{}%............ \vspace % We need \ifFLA now \let\ifFLA\iffalse% \@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\addcontentsline{toc}{chapter}%.. \printindex {\protect\indexname}% {\let\@ti\theindex%........................ \theindex \def\theindex{\@ti\ifFLA\thispagestyle{french}\fi}% \@finput{\jobname.ind}}}}{}% \def\ifFLA{\ErrFrench}% reset it to normal value here \@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 \let\nosee\@gobble% consume the page number \def\seealso{\bgroup\edef\@temp@{}\@ifNextNB[{\see@@so}%] case index.sty {\see@lso}}% \def\see@lso#1#2{\expandafter% \subsee no more protected by \string V3,47 \index\@temp@{#1!zzzzz@\subsee{#2}|nosee}\egroup}% \def\see@@so[#1]{\edef\@temp@{[#1]}\see@lso}}{}% \@ifundefined{textwidth}{\def\textwidth{\hsize}%............... \textwidth \def\leftmargin{0pt}\def\rightmargin{0pt}%....... \right & \leftmargin \def\columnsep{0pt}%..................................... \columnsep \def\listparindent{0pt}}{}%.............................. \listparindent % % {\@lowpenalty 51 \@medpenalty 151 \@highpenalty 301} \@ifundefined{@highpenalty}{\def\@highpenalty{301}}{}%......... \@...penalty % \@ifundefined{clearpage}{\def\clearpage{\par\vfill\eject}}{}%.. \clearpage % % \if switches mechanism \def\@ifFTYfalse{\let\if@Back\ifFTY\let\ifFTY\iffalse}% \def\@ifFTYback{\let\ifFTY\if@Back}% % % Poor man defs \newif\if@PMF\@PMFfalse% \def\pmfrench{\@PMFtrue\@fw{-4- entering now "Poor-Man-French-Style" way}% \def\frenchname{pmfrench}}% % % Font processing % % test if LaTeX fonts can be used (is format lplain or LaTeX2e?) {\def\@LPLAINtrue{\global\let\ifLPLAIN\iftrue}% set it global \def\@LPLAINfalse{\global\let\ifLPLAIN\iffalse}% \@ifundefined{fmtname}{\LPLAINfalse}{\@LPLAINfalse% \def\@fmt{lplain}\ifx\fmtname\@fmt\@LPLAINtrue\gdef\@lySym{nfltxsym}\fi% \def\@fmt{LaTeX2e}\ifx\fmtname\@fmt\@LPLAINtrue\gdef\@lySym{latexsym}% \xdef\@currname{latexsym}% set current package req \fi% }% }% \ifx\ly\undefined% \ifx\documentclass\undefined\else% load latexsym now silently to avoid warning. \ifx\documentclass\@twoclasseserror% \@@input latexsym.sty\@@input ulasy.fd% dont use \usepackage in 2.09! % \DeclareFontShape{U}{lasy}{b}{n}{ <-10> ssub * lasy/m/n% % <10> <10.95> <12> <14.4> <17.28> <20.74> <24.88>lasyb10 }{}% \fi% \fi% \fi% \ly\undefined % look at \GOfrench for \footnotesize, \Huge, \sm@ller, \l@rger and co. % % % new defs for Plain TeX % \@ifundefined{@@par}{\let\@@par\par}{}%........................ \@@par \@ifundefined{normalfont}{\def\normalfont{}}{}%................ \normalfont % \small, \normalsize, \large, \em \sc were undefined in plain TeX \ifLPLAIN\else{% \@ifundefined{small}{\def\@tempa#1 #2\@@{% \global\font\small=%...................... \small #1\space scaled 900}% \edef\@tempb{ }% \expandafter\@tempa\fontname% \expandafter\font\@tempb\@@}{}% \@ifundefined{normalsize}{\global\let\normalsize\tenrm}{}%..... \normalsize \@ifundefined{large}{\def\@tempa#1 #2\@@{% \global\font\large=%...................... \large #1\space scaled \magstep4}% \edef\@tempb{ }% \expandafter\@tempa\fontname% \expandafter\font\@tempb\@@}{}% \@ifundefined{sc}{\gdef\sc{\rm}}{}% we will do nothing for ......\sc \@ifundefined{em}{\gdef\em{\it}}{}% we will italicize with it ...\em }\fi% % if \encodingdefault is undefined test if ECM or DC are in use. \def\@temp@{% a temporary def {\def\is@DC##1##2##3\relax{\if d##11\fi \if e##11\fi \if c##22\fi}% \def\dc@first##1##2{##1}% \def\dc@second##1##2{##2}% \def\dcdo{% \dcdo code Version 3 as of 01/27/92 on DCFONT discussion list \ifnum 12=0\expandafter\is@DC\fontname\font xx\relax\space% \expandafter\dc@first% \else \expandafter\dc@second% \fi}% {\rm\dcdo{\global\let\ifECM\iftrue}{\global\let\ifECM\iffalse}}}%final DC test }%\@temp@ % if \encodingdefault is defined use this information: \ifx\encodingdefault\undefined% \else\ifx\fontencoding\undefined\edef\f@encoding{\encodingdefault}% \else\fontencoding{\encodingdefault}\selectfont% \fi% \def\@temp@{T1}\ifx\@temp@\f@encoding% \def\@temp@{\global\ECMtrue}% \else\def\@temp@{\global\ECMfalse}% \fi% \fi%\encodingdefault \@temp@% \message{^^J -25- \frenchname.sty utilise dans ce document le codage de fonte % \ifECM T1\else OT1\fi.}% \@ifundefined{mathrm}{\def\mathrm{\rm}}{}% for compatibility with NFSS % What font use for guillemets? % if \guillemetsinroman: 1- DC 2- lasy (LaTeX+NFSS) 3- math simulation \let\ifGIAF\iftrue% by now assume guillemets in all fonts \@ifundefined{ly}% if lplain try to define \ly with NFSS ................. \ly {\ifLPLAIN% \ifECM\def\ly{\rm}% default is \rm \else% \ifx\DeclareFontShape\undefined% the following for NFSS V1 \def\ly{\family{lasy}% set shape and series \ifGIAF\else\series{m}\shape{n}\fi\selectfont}% \else% the following for NFSS2 \ifx\symlasy\undefined% if nfltxsym option not used \expandafter\@@input \@lySym.sty\fi% load LaTeX symbols defs \def\ly{\fontencoding{U}\fontfamily{lasy}% set encoding & family \ifGIAF\else\fontseries{m}\fontshape{n}\fi\selectfont}% \fi% end of NFSS version testing \fi% \else\ifECM\def\ly{\rm}\fi% else with ECM default is \rm \fi}{}% % \@ifundefined{rmdefault}{\def\rmdefault{cmr}}{}% ................... \rmdefault \@ifundefined{new@fontshape}{\def\@MYrm{\rm}}% My \rm stands for : {\ifx\fontfamily\undefined% \def\@MYrm{\family{\rmdefault}\series{m}\shape{n}\selectfont}% for NFSS1 \else\def\@MYrm{% \fontfamily{\rmdefault}\fontseries{m}\fontshape{n}\selectfont}% 2e \fi}% \@ifundefined{mdseries}{\ifx\mediumseries\undefined% used in docs. \mdseries \def\mdseries{}% default for plain \else\let\mdseries\mediumseries% for NFSS 1 \fi}{}% \@ifundefined{@textsuperscript}{\def\@textsuperscript#1{%.... \@textsuperscript $^{{#1}}\m@th$}}{}% % % \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 \edef\pointexclamation{\string!}%........................... \pointexclamation \edef\pointinterrogation{\string?}%....................... \pointinterrogation \edef\inferieura{\string<}%....................................... \inferieura \edef\superieura{\string>}%....................................... \superieura \edef\dittomark{\string"}%......................................... \dittomark % \let\@gotl\guillemotleft% \let\@gotr\guillemotright% %\def\@SLQ{\string`} % \ifmmode^\prime\else\string'\fi}% \let\@SLQ\lq\def\@SRQ{%\relax \ifmmode^\prime\else\rq\fi}% %\def\@LSG{\string<}\def\@DOG{\string<\string<}% \let\@LSG\inferieura\def\@DOG{\inferieura\inferieura}% %\def\@RSG{\string>}\def\@DFG{\string>\string>}% \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% \def\@TooEarly{. Ne peut pas etre precise avant le \begin{document} !}% \let\frenchhyphenation\@TooEarly%options can only be set after \begin{document} \let\nofrenchhyphenation\@TooEarly% or in \usersfrenchoptions \let\frenchtypography\@TooEarly% \let\nofrenchtypography\@TooEarly% \let\nofrenchtranslation\@TooEarly% \let\frenchtranslation\@TooEarly% \let\noeveryparguillemets\@TooEarly% \let\everyparguillemets\@TooEarly% \let\nofrenchlayout\@TooEarly% \let\frenchlayout\@TooEarly% \let\nofrenchmacros\@TooEarly% \let\frenchmacros\@TooEarly% % %%%\let\ifLPA\iffalse% bab 3.5 % \def\@ifo{% options to be defined at \begin{document} \let\h@yphenation\hyphenation% save original \hyphenation \def\frenchhyphenation{\ifFH\else\FHtrue%....................\frenchhyphenation \edef\@uchORI{\the\uchyph}% save previous uchyph value \def\@Hif{\ifFH}\let\@Hfi\fi% \lccode `\'=`\'% % % 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% \@fw{-41- your format is out of date, % please run initex again!}\stop% \fi% \ifLPLAIN\def\accenthyphcodes{% \ifECM\else\fontencoding{T1}% \let\pickup@font\@gobble% \let\size@update\relax\selectfont% \fi}% \fi% \def\hyphenation####1{\bgroup% \csname accenthyphcodes\endcsname% \lowercase{\edef\@tempa{####1}}% \h@yphenation{\@tempa}\egroup}% \let\s@owhyphens\showhyphens% \def\showhyphens####1{\bgroup% \csname accenthyphcodes\endcsname% \edef\@tempa{####1}\s@owhyphens{\@tempa}\egroup}% \fi}%\ifFH \def\nofrenchhyphenation{\ifFH\FHfalse%....................\nofrenchhyphenation \lccode`\'=0% \let\hyphenation\h@yphenation% restore original \hyphenation \@ifundefined{lefthyphenmin}{}% {\lefthyphenmin=2\righthyphenmin=3}% disallow x- or -xx breaks \uchyph=\@uchORI%reset original hyph. on words starting with capitals \fi}% % \def\nofrenchtypography{%...................................\nofrenchtypography \let\ifFTY\iffalse% \nofrenchguillemets% reseting \sloppy% may extend line past the right hand \nonfrenchspacing% }% \def\frenchtypography{%.......................................\frenchtypography \let\ifFTY\iftrue\englishquote\englishdoublequotes% \nolabelsinmargin\typedspaces% \let\ifLPA\iffalse% default is clean... \nowrongtypedspaces\notabbingaccents% useless with ECM \frenchguillemets% \normalbrackets\todayguillemets% \guillemetsinroman% \fussy% must not extend line past the right hand \frenchspacing% % \nooverfullhboxmark% std LaTeX default not plain }% \def\nofrenchtranslation{\let\ifFTR\iffalse\@cORI}%........\nofrenchtranslation \def\frenchtranslation{\let\ifFTR\iftrue\captionsfrench}%....\frenchtranslation \def\frenchguillemets{\let\ifFG\iftrue%..................... \frenchguillemets \let\guillemotleft\fguillemets% \let\guillemotright\endfguillemets% \AFPinfsup}% \def\nofrenchguillemets{\let\ifFG\iffalse%................ \nofrenchguillemets \let\guillemotleft\@gotl% \let\guillemotright\@gotr% \DFPinfsup}% \def\noeveryparguillemets{\let\ifEPG\iffalse%.............\noeveryparguillemets \@desarm\let\@desarm\relax}% release memory \def\everyparguillemets{\let\ifEPG\iftrue}%.................\everyparguillemets \def\nofrenchlayout{\let\ifFLA\iffalse\@EIM}%...................\nofrenchlayout \def\frenchlayout{\let\ifFLA\iftrue\everyparguillemets%...........\frenchlayout \@FIM\@FL\let\@FL\empty\noautomaticlettrine}% \def\nofrenchmacros{\let\ifFMA\iffalse}%........................\nofrenchmacros \def\frenchmacros{\let\ifFMA\iftrue\@ifm%.........................\frenchmacros \let\@ifm\relax}% release memory \let\@TooEarly\relax% let suboptions as relax outside french \ifx\verb\undefined% \else\let\@vORI\verb% Let normal LaTeX \verb protected ............. \verb \def\verb{\protect\@vORI}\fi% }% end of \@ifo {\GOfrench part 1} % \long\def\usersfrenchoptions#1{\long\def\@ufo{#1}}%....... \usersfrenchoptions \@ifundefined{@ufo}{% define... \usersfrenchoptions{}% default users options... }{}% but do nothing if allready defined % %....................................................... Modified TeX macros % \ifx\documentclass\undefined% don't change it in 2e \def\pr@m@s{\ifx\@cilq\next\let\next\pr@@@s% to process prime when ' active \else\ifx^\next\let\next\pr@@@t\else\let\next\egroup\fi% \fi\next}% \else% David Carlisle said the new code is safer: \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}% \fi% \let\@fsORI\frenchspacing% modified for guillemets............. \frenchspacing \def\frenchspacing{\@fsORI\ifECM\sfcode`\(=0\sfcode`\)=1000\fi}% %%%% % let < ' ` > active for the following macros \catcode`<=\active\catcode`>=\active\catcode`'=\active\catcode``=\active \def\@Fstr{\def<{\@LSG}\def>{\@RSG}\def`{\@SLQ}\def'{\@SRQ}}% \let\@s@ORI\special%................................................. \special \def\special#1{\@ifFTYfalse\bgroup\@Fstr\@s@ORI{#1}\egroup\@ifFTYback}% % \newcount, \newdimen, \newbox were \outer defs in plain. \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 % %....................................................... Modified LaTeX macros % %%% need to be defined only after style initiation so we delay. % \def\GOfrench{% this is the code to initiate the French style {\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% \@ifundefined{smaller}{\def\sm@ller{\small}% ... you can use ...[smaller.sty] \def\l@rger{\large}}% {\ifx\undefined\sm@ller% ... you can use ...[relsize.sty] \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 \@ifundefined{quotation}{\def\quotation{}}{}%...................... \quotation \ifx\tableofcontents\undefined% \else\let\@tocORI\tableofcontents\fi% permit toc normal processing % Reset chapter counter when starting a part & ................ \noresetatpart \@ifundefined{chapter}{\newcounter{chapter}}{\@addtoreset{chapter}{part}% \def\noresetatpart{\let\cl@part\empty}}% \@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% \bf \leavevmode \advance\leftskip\@tempdima \hskip -\leftskip% ####1\nobreak\hfil \nobreak\hbox to\@pnumwidth{\hss ####2}\par% \penalty\@highpenalty% \endgroup}}% \ifx\RIfM@\undefined\@tempa% l@chapter defined, not for AmSLaTeX V1.2 classes \else% % but for AmSLaTeX styles. \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}{}% undefined in article.sty % \@ifundefined{protected@edef}{\let\protected@edef\edef}{}%..... \protected@edef % % 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 parm] otherwise empty} % {number of other parms} % not implemented now \def\@gG##1##2##3##4{\def\@temp@{% \expandafter\let\csname @##1@ORI\endcsname=}% \expandafter\@temp@\csname ##2\endcsname% \if/##3\expandafter\def\csname ##2\endcsname{\protect\@gM@{##1}}% \else\expandafter\def\csname ##2\endcsname{\protect\@gM{##1}}% \fi}% \def\@gM@##1##2{\bgroup\@ifFTYfalse\@Fstr% \expandafter\csname @##1@ORI\endcsname{##2}\egroup}% \def\@gM##1{\@ifNextNB[{\@gM@@{##1}}{\@gM@@{##1}[\empty]}%]emacs }% \def\@gM@@##1[##2]##3{\bgroup\@ifFTYfalse\@Fstr\xdef\@temp@{##3}\egroup% \protected@edef\@gG@{##2}% \ifx\@gG@\empty\else\protected@edef\@gG@{[##2]}\fi% \let\@typeset@protect\protect% \expandafter\expandafter% \csname @##1@ORI\endcsname\@gG@{\@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\string: use of the babel package force me to nullify % \noexpand\babel@sanitize@arg.}% \fi% \ifx\texttt\undefined\else\@gG{xt}{texttt}{/}{1}\fi%................... \texttt \ifx\cite\undefined\else\@gG{c}{cite}{}{1}\fi%........................... \cite \ifx\nocite\undefined\else\@gG{nc}{nocite}{/}{1}\fi%................... \nocite \ifx\bibcite\undefined\else\@gG{bc}{bibcite}{}{1}\fi%................. \bibcite \ifx\bibitem\undefined\else\let\@biORI\bibitem% ...................... \bibitem \def\@LiN{\let\@sogORI<\let\@sfgORI>\let\@lqORI`\let\@rqORI'\let\@dqORI"% \@Fstr\@ifFTYfalse}% \def\@LiB{\let<\@sogORI\let>\@sfgORI\let`\@lqORI\let'\@rqORI% \@ifFTYback}% \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% \ifx\ref\undefined\else\@gG{r}{ref}{/}{1}\fi%............................. \ref \ifx\tag\undefined\else\@gG{tG}{tag}{/}{1}\fi%............................ \tag \ifx\pageref\undefined\else\@gG{pr}{pageref}{/}{1}\fi%.................\pageref % take in account varioref package if present: \ifx\vref\undefined\else\@gG{vr}{vref}{/}{1}\fi%......................... \vref \ifx\vpageref\undefined\else\@gG{vpr}{vpageref}{}{1}\fi%..............\vpageref \xdef\@lim{}\let\ifMOVING\iffalse% \def\@temp@{% \def\label{\protect\@LabeL}% needed to be protected for \thanks \def\@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\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 \ifx\newlabel\undefined\else\@gG{nl}{newlabel}{}{1}\fi%.............. \newlabel %\@ifundefined{addtocontents}{\gdef\addtocontents##1##2{}}{}%....\addtocontents \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\@sanitize\@@Findex}% % \def\@@Findex####1{\@iORI{####1}\egroup}% \def\index{\bgroup\ifFrench\@DFP\fi% \expandafter\egroup\@iORI}% }% \ifx\index\undefined\else\let\@iORI\index%.............................. \index \@temp@% new def apply \fi% % \ifx\list\undefined\else% just to set for \noeveryparguillemets \let\@liORI\list\fi% that we are in a \def\list##1##2{\def\@inAlist{}\@liORI{##1}{##2}}% list environment...... \list \ifx\@makecaption\undefined\else\let\@mcORI\@makecaption\fi%.... \@makecaption \def\@makecaption##1##2{\ifFTY\@mcORI{##1}{\relax% for AmSLaTeX V1.2 96/11 {\em ##2}}% in italics \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{\bgroup%......................................... \thanks \ifFTY\ifhmode\ifdim\lastskip>\z@\unskip\fi\nobreak\fi% \def\@footnotemark{\hbox{\@textsuperscript{\normalfont\,\@thefnmark}}}% \fi\@thORI{####1}% \egroup}%Restore original \@footnotemark in \thanks... (\@footnotemark) }% \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% % no more need of \! correction in \@fnsymbol. 12/27/95 %\ifx\@fnsymbol\undefined\else\let\@fnsORI\@fnsymbol\fi% %\def\@fnsymbol##1{\@fnsORI{##1}\ifFTY\!\fi}% spacing pb bypass .... \@fnsymbol \def\@temp@{% \long\def\@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 \hbox\bgroup\textnormal\bgroup% \def\@temp@{\@ifnextchar\relax{\def\@temp@{\,}}% {\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 }% \ifx\@makefntext\undefined\else%................................. \@makefntext \let\@mfntORI\@makefntext\@temp@% \fi% \def\@temp@{% one level in 2.09 \long\def\@makefntext####1{\bgroup% \def\@tempa{footnote}\let\@tfnORI\@thefnmark% \ifFTY% really dirty this coding! \ifx\@tempa\@mpfn%do it only for page footnotes not minipages ones \def\@thefnmark{\,\egroup% no point when no marker \def\@temp@{\def\@temp@{}\@ifnextchar\relax% {}{\def\@temp@{.\kern+0.25em}}}% \expandafter\@temp@\@tfnORI\@temp@\bgroup}% \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 }% \@temp@ \def\@tempb{% \def\@tempa{\if@compatibility\@temp@\fi}% 2.09 compatibility case \ifx\documentclass\undefined\@temp@\else\@tempa\fi% 2e case \def\@temp@{}% reset to empty }% \ifx\@makefntext\undefined\else\@tempb\fi% \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{\ifFTY\ifhmode\ifdim\lastskip>\z@\unskip\fi% \nobreak\fi\fi\@ifNextNB[\@Footnote\@Fntnorm}% \long\def\@Footnote[##1]##2{\@fnORI[##1]{##2}\@ifNextNB\footnote\@Fntcoma{}}% \long\def\@Fntnorm##1{\@fnORI{##1}\@ifNextNB\footnote\@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% \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 \def\@t@blescaption[##1]##2{\let\cur@fn\footnote% footnote mark in \def\footnote####1{\footnotemark%tables caption \@fw{-8- \string\footnotetext{####1} perdu}}% 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% \ifLPLAIN\ifFLA\bgroup% \def\@mpfn{mpfootnote}% \def\thempfn{\thempfootnote}\c@mpfootnote\z@% \let\caption\@tablescaption% allow page footnote in \caption \let\@footnotetext\@mpfootnotetext\fi\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% \ifLPLAIN\ifFLA\bgroup% \def\@mpfn{mpfootnote}% \def\thempfn{\thempfootnote}\c@mpfootnote\z@% \let\@footnotetext\@mpfootnotetext\fi\fi% \ifx\@xfORI\undefined% \let\@xfORI\@xfloat\let\@xfloat\@Fxloat% \fi% \@dbtbeORI}% }% \ifx\table\undefined\let\@temp@\relax\fi\@temp@% \def\@Fendtable{% \let\@etORI\endtable%................................... \endtable \def\endtable{\ifFLA\ifLPLAIN\par% \vskip-\lastskip% make footnotes here \ifvoid\@mpfootins\else\vskip\skip\@mpfootins% \footnoterule\unvbox\@mpfootins\fi% \fi\fi\@etORI\ifFLA\ifLPLAIN\egroup\fi\fi% \ifx\@lim\empty\else\marginpar{\@lim@}% \xdef\@lim{}\fi\let\ifMOVING\iffalse}% }% \expandafter\def\csname @Fendtable*\endcsname{% \expandafter\let% \expandafter\@dbetORI\csname endtable*\endcsname%...... \endtable* \expandafter\def% \csname endtable*\endcsname{\ifFLA\ifLPLAIN\par% \vskip-\lastskip% make footnotes here \ifvoid\@mpfootins\else\vskip\skip\@mpfootins% \footnoterule\unvbox\@mpfootins\fi% \fi\fi\@dbetORI\ifFLA\ifLPLAIN\egroup\fi\fi% \ifx\@lim\empty\else\marginpar{\@lim@}% \xdef\@lim{}\fi\let\ifMOVING\iffalse}% }% \ifx\endtable\undefined\let\@Fendtable\relax\fi% \def\@temp@{\def\endtable{\ifLPLAIN\ifFLA\egroup% \endtable may be \relax \expandafter\let\csname endtable*\endcsname\endtable%as in endfloat \fi\fi}% }% \ifx\endtable\relax\@temp@\fi% is also used in frenchll for testing purpose % continuing definition of \GOfrench \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 % assume Left to right for *the* document if TeX--XeT. \ifx\beginL\undefined\else% \edef\@fepORI{{\the\everypar}}% \everypar={\csname begin% \beginFWdirection\endcsname\@fepORI}% \fi% \let\ErrFrench\@Ffnt\def\@Ffnt##1{}% \@finput{frpatch.sty}% \let\@Ffnt\ErrFrench\let\ErrFrench\undefined% ditto \beginlanguage}% now the new language %%% \@ifundefined{document}{}% let it undefined..........................\document {\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% \@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} \def\@temp@{% \def\enddocument{\@CGroup% end any remaining opened << group \ifFLA% \clearpage% output last page in french \gdef\@specialstyle{french}% \fi% \let\endL\relax% no further need. \switchtolanguage\englishTeXmods% \enddocumentasusual% }% }% \ifx\enddocument\undefined% \else\let\enddocumentasusual\enddocument%.................... \enddocument \@temp@% new def apply \fi% % % =============================== % | Hyphenation | % =============================== % % Allow or not hyphenation of words starting with a capital letter \def\allowfulluchyph{\uchyph=1\let\@whatUCH\allowfulluchyph%.. \allowfulluchyph \let\@uchbox\empty}% \def\allowuchyph{\uchyph=1\let\@whatUCH\allowuchyph%.............. \allowuchyph \let\@uchbox\hbox}% \def\disallowuchyph{\uchyph=-1%................................ \disallowuchyph \let\@whatUCH\disallowuchyph\let\@uchbox\hbox}% \def\notthyphenation{{\tt\hyphenchar\font=-1}%.................\notthyphenation \let\ifTTH\iffalse}% \def\tthyphenation{{\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!) % \def\hyphex#1{\if#1\empty%........................................... (\hyphex) \else\edef\@excn{#1}\fi% a general macro for other languages \let\if@FE\iftrue}% \hyphex{} before begin document will % % load exceptions files \def\frhyphex{\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\f@ffrench{\ifx\listoffigures\relax\else% \figurename\space\thefigure\space--\fi\@eatDP}% \def\f@tfrench{\ifx\listoftables\relax\else% \tablename\space\thetable\space--\fi\@eatDP}% \def\unnumberedcaptions#1{%............................... \unnumberedcaptions \expandafter\let\csname listof#1s\endcsname\relax% \let\unnumberedcaptions\undefined}% % % Titles ....................................................... \captionsnames \@ifundefined{captionsnames}{\def\captionsnames{\relax}% let it be known \@finput{fengl209.sty}}{}% load English captions \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}}%\@mkboth{\sommairename}{\sommairename} \def\@cEAT#1#2{\@chORI*{\sommairename%\@mkboth{\uppercase{\sommairename}}% % {\uppercase{\sommairename}}% }}% normally a \sommaire is short and need no headings \def\@smr[#1]{\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\@cEAT% \let\@ToCisNOT\relax% let it be a sommaire first ie there is no toc \def\@starttoc##1{% \@startoc locally redefined to let toc reusable \begingroup\makeatletter% any case require a second pass \immediate\openin\@ne \jobname.##1 % \if@filesw \expandafter\newwrite\csname tf@##1\endcsname\fi% \ifeof\@ne \@Ffnt{\jobname.##1}% \if@filesw\immediate\openout \csname tf@##1\endcsname% \jobname.##1\relax\fi% \else\immediate\closein\@ne \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}% \tableofcontents\endgroup% print the sommaire \def\tableofcontents{% new def that records there is a toc in the doc \ifLPLAIN% % For the "Winter" release all lines containing "Bug in 2e patch 3" should % probably be deleted, as FMi said: "\protect will probably vanish again with % the winter release which we hope will have a better protect mechanism." % \ifx\documentclass\undefined% Bug in 2e patch 3 \addtocontents{toc}{\protect% \let% just to be not \protect\@ToCisNOT\protect\empty}% as relax % \else% Bug in 2e patch 3 % \addtocontents{toc}{\protect\@SetEmpty{@ToCisNOT}}%Bug in 2e patch 3 % \fi% Bug in 2e patch 3 \fi% \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 }%\@smr %\ifx\documentclass\undefined\else% Bug in 2e patch 3 %\def\@SetEmpty#1{\expandafter\let\csname #1\endcsname\empty}% %\fi% Bug in 2e patch 3 \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{\if@twocolumn\section*{\abstractname}% \else\sm@ller\begin{center}% {\bf\abstractname\vspace*{-.5em}\vspace*{\z@}}% \end{center}\quotation\fi}% \def\endabstract{\if@twocolumn\else\endquotation\fi}}{}% \@ifundefined{resume}{% there are styles already defining \resume \let\resume\abstract%.................................................. \resume \let\endresume\endabstract%......................................... \endresume }{}% % \def\keywords{\quotation\noindent\sm@ller\kwname%.................... \keywords \let\endkeywords=\endquotation}%.................... \endkeywords \def\motsclef{\keywords\def\endmotsclef{\endkeywords}}%.............. \motsclef % %.............. \endmotsclef \def\annexe {\@ann{\appendixname}}%................................... \annexe \def\annexes{\@ann{\appendixname s}}%................................. \annexes \def\@ann#1{\par\setcounter{chapter}{0}\setcounter{section}{0}% \def\@chapapp{\appendixname}\def\thechapter{\Alph{chapter}}% %%%\clearpage\addtocontents{toc}{ }% be sure in vertical mode \addcontentsline{toc}{chapter}{\protect#1}}% \@ifundefined{@restonecolfalse}{\def\@restonecolfalse{}% \def\@restonecoltrue{}}{}% dummy def \@ifundefined{@mkboth}{\def\@mkboth#1#2{}}{}% idem \ifx\documentclass\undefined% bypass this code for 2e \let\@wg\@wrglossary% protect \glossary \def\@wrglossary#1{\let\protect\noexpand% wasn't protected! \@wg{#1}}%...................... (\@wrglossary) \fi% \def\glossaire{\@glo{%\protect% \glossaryname}}%............................. \glossaire \def\glossaires{\@glo{%\protect% \glossaryname s}}%......................... \glossaires \def\@glo#1{\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 \chapter*{#1\@mkboth{\uppercase{#1}}{\uppercase{#1}}}% \addcontentsline{toc}{chapter}{\protect#1}% \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}% \input \jobname.glo will typeset the glossary \def\datefrench{% \def\todayfrench{\ifx\ier\undefined\def\ier{er}\fi% \ifnum\day=1\relax 1\ier%........................ \todayfrench \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% no need of \datefrench def for babel <3.6 \def\captionsfrench{%......................................... \captionsfrench \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}% \def\bibname{Bibliographie}% \def\contentsname{Table des mati\`eres}% \def\listfigurename{Table des figures}% \def\listtablename{Liste des tableaux}% \def\indexname{Index}% \def\seename{{\em voir}}% used normally in makeidx.sty \def\seealsoname{{\em voir aussi}}% added macro \seealso \def\figurename{{\sc Fig.}}% %%%\def\figuresepname{:}% if compatibility needed with Shapiro styles \def\tablename{{\sc Tab.}}% \def\sommairename{Sommaire}% \def\partname{\protect\@RPt partie}% "Premi\`ere partie" instead of "Part I" \def\@RPt{{\ifcase\value{part}\or Premi\`ere\or Deuxi\`eme\or % Troisi\`eme\or Quatri\`eme\or Cinqui\`eme\or Sixi\`eme\or % Septi\`eme\or Huiti\`eme\or Neuvi\`eme\or Dixi\`eme\or % Onzi\`eme\or Douzi\`eme\or Treizi\`eme\or Quatorzi\`eme\or % Quinzi\`eme\or Seizi\`eme\or Dix-septi\`eme\or Dix-huiti\`eme\or % Dix-neuvi\`eme\or Vingti\`eme\fi}\space\def\thepart{}}% \def\glossaryname{Glossaire}% added \def\kwname{{\bf Mots-cl\'e} : }% \def\draftname{- \noexpand\351preuve -}% PostScript IsoLatin1 \'epreuve \def\prefacename{Pr\'eface}% % The following is also for the letter ..... \ifx\RIfM@\undefined% except for AmSLaTeX V1.2 \let\fnum@figure\f@ffrench% \let\fnum@table\f@tfrench% \fi% % The following is only for the letter ..... \ifx\opening\undefined\else% % \def\headtoname{\`a\space}% lettre de X \`a Y (inusite en francais) \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 \fi% % The following is only for report and book .....s \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}% }%end of captionsfrench %%%%%%%%%%%%%%%%%% % =============================== % | Layout | % =============================== % % NB: See elsewhere in the code for appearance of \ifFLA, to find % all French layout coding. \@ifundefined{@afterindenttrue}{\let\@afterindenttrue\relax% \let\@afterindentfalse\relax}{}% \let\@aifORI\@afterindentfalse% \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 % \def\@FIM@{\ifCG\else\ifFLA\ifEPG\leftguillemets\fi\fi\fi}% \def\@FIM{% Correct labels in itemize environement .............. \labelitem.. \def\labelitemi{\@FIM@--}\def\labelitemii{\@FIM@--}% \def\labelitemiii{\@FIM@--}\def\labelitemiv{\@FIM@--}% % Indent first paragraphs \let\@afterindentfalse\@afterindenttrue% \@afterindenttrue% % 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{\ifLPLAIN\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 << \labelsep 0.1em% \itemsep 0.2ex plus 0.1ex minus 0.1ex% \topsep 0.2ex plus 0.1ex minus 0.1ex% \partopsep 1.6ex plus 0.8ex minus 0.8ex% \fi% \def\makelabel####1{\hss\llap{####1}}}\fi\fi}% \let\endorder =\endlist% % The "versatim" environment .... \begin{versatim} & \end{versatim} % inapropriate for multi-level of indentation! \def\versatim{\bgroup\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 \ifLPLAIN% might be used with plain too \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 \fi% \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\ifLPLAIN% \vskip+1\partopsep\fi\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}}{}% }% end of \@FIM %===================== for the letter ..... \def\@temp@{% a temporary def of all material \let\@ps@fp\ps@firstpage% \def\@opening{% \@ifundefined{wideletter}{% \def\@wideletter{}\def\wideletter{%.............................. \wideletter \def\@wideletter{\leftskip-0.25\indentedwidth}}}{}% \@ifundefined{email}{% \def\email####1{\def\emailadd{{\tt ####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% \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 ..... %%% \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% %%%% the following is for 2e 961201 beta %%%\ \\*[-1\baselineskip]% restore correct environnement (specially \\) \ifx\@empty\fromaddress\let\fromaddress\space\fi% make an blank box {\raggedright\hspace*{-0.25\indentedwidth}% \parbox[t]{0.5\textwidth}{\ignorespaces% \vbox to 0pt{\fromaddress\vss}}% \\*[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]% \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}% {\bf\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% {\em email}\/ : \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{\ifx\@fgeORI\undefined\figure\fi% can't work without figure \ifLPLAIN\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\fi}% \def\endfigurette{\ifLPLAIN%................................. \end{figurette} \ifFLA\vskip\intextsep\egroup\else\@efgeORI\fi% \ifx\@lim\empty\else\marginpar{\@lim@}\xdef\@lim{}\fi% \fi\let\ifMOVING\iffalse}% }% % Hum! \figure might be still undefined, specially with pmfrench %\ifx\figure\undefined\let\@temp@\relax\fi% so don't test it \@temp@% \@ifundefined{@addtoreset}{\def\@addtoreset#1#2{}}{}% Dummy definition \@ifundefined{newcounter}{\def\newcounter#1{\relax}}{}% idem % Reset chapter counter when starting a part --> \GOfrench % % This is the French pagestyle to use instead in place of plain wrongly % used by LaTeX in many situations. Quite simple one. \def\@temp@{\def\ps@french{\if@fancyplain\ps@plain@fancy\else\ps@plain\fi}}% \ifx\ps@fancyplain\undefined% do nothing outside fancyheadings \def\ps@french{}%.............................................. \ps@french \else\@temp@% to avoid pb in case \if@fancy... undefined \fi% \let\@sdORI\secdef% will be used at each new sectioning. \def\secdef{\ifFLA\thispagestyle{french}\fi\@sdORI}%................. (\secdef) % We could define \nofrenchpagestyle if necessary (document option). %\def\nofrenchpagestyle{\let\secdef\@sdORI}% % \ifLPLAIN% (\nopagenumbers is defined in plain) \@ifundefined{nopagenumbers}{%don't run everywhere............ (\nopagenumbers) \def\nopagenumbers{\ifFLA\pagestyle{empty}% \thispagestyle{empty}\fi}% }{}% \fi\def\ifFLA{\ErrFrench}% % \newif\ifnonvoid% still an outer def. \newdimen\@FrDimen% general def for the style \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}% % {\catcode`.=12\catcode`p=12\catcode`t=12\gdef\auTo@gf#1.#2pt{#1}}% \def\@FL{% LETTRINES defs for LaTeX only \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% \ifLPLAIN\def\@tempa{\def\@fbr{\fboxrule=\z@}% \protect\@lettrineS% }% \fi\@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}% \def\@@@trine##1##2\@@##3{\@fbr\everypar{}% %%% 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% \divide\@FrDimenS by\baselineskip\@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{\@fw{-5- 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\@fw{-6- lettrine \`a revoir}\fi% \hangafter=-\@FrCount% \noindent\kern-2.5\@FrDimenS% \def\@temp@{##2}% \ifx\empty\@temp@\@fw{-7- lettrine r\'eduite \`a 1 seule lettre}% \else{\lsc{##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% \ifLPLAIN\def\@tempa{\def\@fbr{}\protect\@lettrineS}\fi% \@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}% % Save original settings of \dospecials et \@sanitize \let\@dsORI\dospecials%...........................\@dospecials.........original \@ifundefined{@sanitize}{\def\@sanitize{\relax}}{}% \let\@saORI\@sanitize%............................\@sanitize...........original % 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. \ifx\@ifnextchar\undefined\let\@ifnextchar\@ifNextNB\fi%for plain..\@ifnextchar % \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}% \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}% \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{\ifFTY\let\dots\@doORI\let\ldots\@ldoORI\fi}%.............\TeXdots \def\noTeXdots{\ifFTY\def\dots{...}\def\ldots{...}\fi}%............ \noTeXdots % % i dotless (for those who haven't a good text editor) % \let\@hatORI\^\let\@treORI\"% \def\idotless{\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{\let\^\@hatORI\let\"\@treORI}%.....(no MlTeX command). \iwithdot % % Typographic process of double punctuation: % \def\@tempa#1{\@fw{-13- le caract\`ere "#1" est d\'ej\`a actif}% \let\@tempb\next\let\@tempc\empty}% warning message \let\@tempb\empty% \AFPdp% activate first part \def\@WTS{\relax\ifmmode\else\ifhmode% skip wrong typed space \ifdim\lastskip>\z@\unskip\fi% \fi\fi}% % Add a thin space before punctuation ; : and ! in place of a space \def\@tempc{% \def;{\ifFTY\protect\@PV{}%................................................ ";" \else\ifWTS\@WTS\fi\string;\fi}% }% \ifx;\undefined\else\@tempa{\string;}\fi\@tempc% \def\@PV{\relax\ifmmode\string;\else% \ifhmode\ifUSP\unskip\space\fi% \ifdim\lastskip>\z@\unskip\penalty\@M\,\fi% \fi\string;\fi}% \def\@tempc{% \def:{\ifFTY\protect\@DP{}%................................................ ":" \else\ifWTS\@WTS\fi\string:\fi}% }% \ifx:\undefined\else\@tempa{\string:}\fi\@tempc% \@ifundefined{@beginparpenalty}{\def\@beginparpenalty=#1{\penalty#1}}{}% \def\@DP{\relax\ifmmode\string:\else% \ifhmode\ifUSP\unskip\space\fi% \ifdim\lastskip>\z@\unskip\penalty\@M\,\fi% \fi% \string:% \@beginparpenalty=\@M\relax% Page break forbidden after ":" \fi}% % but remains imperfect... \def\@tempc{% \def!{\ifFTY\protect\@PE{}%................................................ "!" \else\ifWTS\@WTS\fi\string!\fi}% }% \ifx!\undefined\else\@tempa{\string!}\fi\@tempc% \def\@PE{\ifmmode\string!\else% \ifhmode\ifUSP\unskip\space\fi% \ifdim\lastskip>\z@\unskip\penalty\@M\,\fi% \fi% \string!\fi}% \def\@tempc{% \def?{\ifFTY\protect\@PI{}%................................................ "?" \else\ifWTS\@WTS\fi\string?\fi}% }% \ifx?\undefined\else\@tempa{\string?}\fi\@tempc% \def\@PI{\relax\ifmmode\string?\else% \ifhmode\ifUSP\unskip\space\fi% \ifdim\lastskip>\z@\unskip\penalty\@M% \hskip +0.09em plus 0.07667em%max glue accepted \fi% \fi% \string?\fi}% \ifx\@tempb\next\let\AFPdp\empty% \@fw{la double ponctuation est alors d\'esactiv\'ee}\fi% \DFPdp\AFPdp% normally a noop but in case of warning... \ifx\documentclass\undefined\else%............... 2e float placement correction \ifx\AFPdp\empty\else% only for activated exclamation mark \let\@aORI\@array\def\@array[#1]{\let\@tempa=!\def!{\string!}% \edef\@tempb{#1}% \let!=\@tempa\@aORI[\@tempb]}% \fi% \fi% 2e floats \DFPdp% desactivate first part % % 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\@CGroup\relax% \def\@@LG{\relax\ifFTY\ifmmode\@DOG\else\@@@OG\fi\else\@DOG\fi}% \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 ! \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% \@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\everypar}}% \everypar={\@epORI\@oguills\kern0.31em}\fi\fi% \else\@SifDOGon\@AG% ancient guillemets featuring \ifFLA\ifEPG\else\def\@qqguill{\@oguills}\@staring\fi\fi\fi% \global\let\ifCG\iffalse% \ifUSP\kern+0.13em\penalty\@M\ignorespaces% \else\kern-0.19em\relax\penalty\@M\fi}%likely as \ignorespaces\fi \def\@AG{\ifAG\let\@LP\@RP\fi}% Apply ancient guillemets if required \def\fguillemets{<<}% a cs for the 8-bit char ................... \fguillemets \def\@oguills{% \bgroup\@ifundefined{@OuvOpen}{\def\@OuvOpen{}% avoid duplicate << \@ifundefined{ly}{\@og}% {\leavevmode\ifECM\hbox{{\ifGIAF\else\@MYrm\fi% \char\rq\@LP\kern+0.20em}}% \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\endfguillemets{>>}%...................................... \endfguillemets \ifx\RIfM@\undefined\else% for AmSTeX we force \nofrenchguillemets \message{^^J -18- \frenchname.sty force l'option % \string\nofrenchguillemets\space en maths avec AmSLaTeX.}% \edef\@emORI{\the\everymath\relax}%\nofrenchguillemets may be still undefined \everymath={\csname nofrenchguillemets\endcsname\@emORI}% \edef\@edORI{\the\everydisplay\relax}% thus we differ expansion \everydisplay={\csname nofrenchguillemets\endcsname\@edORI}% \fi% \DFPinfsup% desactivate for guillemets \def\@@FG{\ifUSP\unskip\kern+0.13em\else% \ifdim\lastskip>\z@\unskip% skip previous space \penalty\@M% don't break here \space% better than \kern % %\hskip 0pt% add null glue to balance left spacing % % plus 0.167em minus 0.167em% \penalty\@M% % %\kern+0.30em% \fi% \kern-0.19em% \fi% %%% \ifdim\fontdimen\@ne\font>\z@\kern+0.167em\fi% italic correction simulated \ifGIAF\else\ifdim\fontdimen\@ne\font>\z@\/\fi\fi%italic correction simulated \ifCG\@fw{-14- fermeture de guillemets non ouverts}\fi% \@CGroup\@fguills% end group if any and put closing guillemets \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\endguillemets{\ifFTY\@@RG% Assume first closing >> and print it \@CGroup\@@@FG\relax\fi}% end second level >> \def\@@@FG{\ifFLA\ifEPG\ifx\@epORI\undefined\else% \everypar is restored \expandafter\everypar=\@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\@MYrm\fi% \kern+0.20em\char\rq\@RP}}% \else\hbox{{\ly\kern+0.20em\@RP\kern-0.20em\@RP}}\fi}}% % \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\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\def\@PRQ@{^\bgroup\prim@s}% \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 % \def\noenglishdoublequotes{\AFPq\let\ifNED\iftrue%...... \noenglishdoublequotes \ifFrench\let\@cilq='\fi}% \def\noenglishquote{\AFPq\let\ifNEQ\iftrue%................... \noenglishquote \ifFrench\let\@cilq='\fi}% \DFPq% disactivate quoting \def\englishdoublequotes{\let\ifNED\iffalse%.............. \englishdoublequotes \DFPq\ifFrench\let\@cilq='\fi}% \def\englishquote{\let\ifNEQ\iffalse\DFPq%...................... \englishquote \ifFrench\let\@cilq='\fi}% \def\labelsinmargin{\let\if@labelsinmargin\iftrue}%............ \labelsinmargin \def\nolabelsinmargin{\let\if@labelsinmargin\iffalse}%........\nolabelsinmargin \def\untypedspaces{\let\ifUSP\iftrue}%......................... \untypedspaces \def\typedspaces{\let\ifUSP\iffalse}%............................ \typedspaces \def\letpunctuationactivefor{%........................ \letpunctuationactivefor \global\let\ifLPA\iftrue% \def\wrongtypedspaces{\global\let\ifWTS\iftrue}%.............\wrongtypedspaces }% \def\wrongtypedspaces{\@fw{-17- \string\wrongtypedspaces\space est % inop\'erant dans ce contexte}}% \def\nowrongtypedspaces{\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 letters. Useless in full 8bits with ECM! % Useless too with the initex stuff of the French distribution. \def\tabbingaccents{\let\@ifTA\iffalse}%...................... \tabbingaccents \def\notabbingaccents{\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{\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}% \long\def\@genG#1#2#3{\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>}% \def\normalbrackets{\let\ifIEB\iffalse%........................ \normalbrackets \ifFG% \def<{\ifnum\catcode`< =\active\expandafter\expandafter% \expandafter\@genGL\ifmmode\relax\fi% \else\@LSG\fi}% \def>{\ifnum\catcode`> =\active\expandafter\expandafter% \expandafter\@genGR\ifmmode\relax\fi% \else\@RSG\fi}% \fi}% \DFPinfsup% desactivate < and > \let\ifFG\iffalse% default further choice \def\ancientguillemets{\let\ifAG\iftrue}%................... \ancientguillemets \def\todayguillemets{\let\ifAG\iffalse}%...................... \todayguillemets \def\guillemetsinallfonts{\let\ifGIAF\iftrue}%........... \guillemetsinallfonts \def\guillemetsinroman{\let\ifGIAF\iffalse}%................ \guillemetsinroman \def\overfullhboxmark{\ifFLA\overfullrule=5pt\fi}%.......... \overfullhboxmark \def\nooverfullhboxmark{\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}{\ifopenin\@genMLhyph% \openin pb \else\gdef\fhyph{\FR}\gdef\ehyph{\US}\fi% \openin pb }{}}% % \gdef\frenchTeXmods{%............................................\frenchTeXmods \global\let\ifFrench\iftrue% \@AFP% activate French punctuation \frenchtypography\frenchtranslation\frenchlayout\frenchmacros% \let\@HifORI\@Hif\let\@HfiORI\@Hfi% \frenchhyphenation% % TeX-XeT first direction of writing will be set by the first \everypar % \csname beginL\endcsname% set TeX--XeT first direction of writing \@ufo% user options \let\switchtolanguage\endfrench% \ignorespaces% }%end \frenchTeXmods \let\extrasfrench\frenchTeXmods% % \@ifundefined{switchtolanguage}{% \def\switchtolanguage#1{#1}}{}%.(style depending)........ \switchtolanguage \let\@stlORI\switchtolanguage \def\endfrench{%............................................. \endfrench \csname endL\endcsname% stop TeX--XeT first direction of writing \@DFP% \nofrenchtypography\nofrenchtranslation\nofrenchlayout% \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{frfrench.doc}}% 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} \bgroup% there is a marmelade here for a temporary usage. \newcount\@FrCount% \def\tl@ng##1{}% no need at this time to test if \TeXmods is defined \def\ERRdat{\errmessage{-9- Corrupted/absent language.dat file.}% \@ifundefined{enddocument}% {\gdef\enddocument{\csname bye\endcsname}}% {}% \global\let\french\enddocument}% \def\@rhef##1/##2/{\def\@tempa{##2}%reloading of hyphenation exceptions files \def\@tempb{##1}% language name \def\@tempc{\ifx\space\@tempa\else\expandafter\@@input##2\relax\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\typeout{^^J \frenchname.sty: -27- language ##1 (##2) was initially % (at initex) numbered \csname l@##2\endcsname\space(ERROR!)}\ERRdat% \fi\fi}% %-- \expandafter\tl@ng\csname##2TeXmods\endcsname% \expandafter\gdef\csname##2\endcsname% {\expandafter\switchtolanguage\csname ##2TeXmods\endcsname% \@Hif\language=##1\@Hfi\relax}}% % 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\NouveauLangage\expandafter[\the\@FrCount]{##2}% \ifnum\@FrCount \@temp@ 0 \@FrCount= -1\fi% \else\edef\@temp@{<}\@l@ngue##1##2 ##3 ##4/{##5}% \fi}% \def\@l@ngue##1 ##2 ##3/##4{\NouveauLangage[##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/\fi}% end of \NouveauLangage \ifopenin% \openin1 = language.dat \def\@tempb{} \ifeof1\@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\@fw{-15- le langage \frenchname\space porte le % 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 (fengl209.sty usally loaded) \else\xdef\@PrevE{\language=\l@english}% \gdef\english{\switchtolanguage\englishTeXmods\@PrevE}% {\@PrevE\@fw{-16- the English language\space is numbered % \the\language}}% \fi \else\@FrCount=-1% \loop \endlinechar=-1 \read1 to \@lineD \endlinechar`\^^M% \ifx\@lineD\empty \else \advance\@FrCount by 1% \edef\@lineD{\@lineD\space\space/\the\@FrCount}% \expandafter\@langue\@lineD% \fi% \ifeof1 \@morefalse \fi% \if@more\repeat% \fi\closein1% \else% \openin pb of OzTeX \gdef\french{\switchtolanguage\frenchTeXmods\fhyph}% \gdef\english{\switchtolanguage\englishTeXmods\ehyph}% \fi% \openin pb of OzTeX \def\@MLtst{\@ifundefined{fhyph}% if French and \fhyph undef. (no language.dat) {\if@PMF\gdef\french{\switchtolanguage\frenchTeXmods}% \@fw{-19- utilisation du langage interne num\'ero \the\language}% \else\typeout{^^J \frenchname.sty: -20- the French language is undefined (ERROR!)}\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\@fw{-21- ##1 n'est pas d\'efini}\fi}% \egroup% this is the end of the marmelade }% end of \@doFh (\GOfrench part 2) %%%%%%%%%%%%%%%%%% % % =============================== % | 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 \@ifNextNB[%] emacs {\@abbf}{\@abbf[frabbrev.tex]% \@abbdefs\let\@abbdefs\relax}}% \if@PMF\let\@abbdefs\relax\else% no need in poor man french \def\@abbdefs{% the needed defs for abbrevs \def\ABBfound{\global\let\ifABBfound\iftrue}% \let\ifABBfound\iffalse% \def\@abbrev##1 ##2 ##3/{\edef\@tempa{##1}\edef\@tempb{##2}% \let\ifFMA\iftrue% allways true here \ifx\@tempa\@tempb##3\ABBfound\fi}% \def\@openabbrev##1{\openin1=##1 \ifeof1\@Ffnt{##1}\fi}% \def"{\protect\AbbrevName}%"........................................... "xx" \def\AbbrevName##1"{\def\@tempa{##1}\ifx\@tempa\space``\space''% \else\@@bbrev##1"\fi}% \def\@@bbrev##1"{\begingroup% \def\ABBMfalse{\global\let\ifABBM\iffalse}% \let\ifABBM\iftrue\global\let\ifABBfound\iffalse% \ifopenin% \@openabbrev{\abbrevfilename}% \ifeof1\else% \loop\endlinechar=-1\read1 to \@lineD\endlinechar`\^^M% \ifx\@lineD\empty% \else\edef\@lineD{##1 \@lineD/}\expandafter\@abbrev\@lineD\fi% \ifABBfound\ABBMfalse\fi% \ifeof1 \ABBMfalse\@fw{-22- abr\'eviation de % \string"##1\string" non trouv\'ee}\fi% \ifABBM\repeat% \fi\closein1% \fi% OzTeX openin pb \ifABBfound\else``##1''\fi\endgroup}% }% end of \@abbdefs \fi% \if@PMF \DFPdq% Deactivate " char \def\noabbreviations{\if@PMF\else\DFPdq\fi}%................. \noabbreviations % \catcode`\/=0{\catcode`/\=12/gdef/@boi{{/protect/string\}}}%}emacs+TeX /catcode`/\=0\catcode`\/=12% % Save original macros if they exist before the French option loading \ifx\at\undefined\else\let\@atORI\at\fi% \ifx\vert\undefined\else\let\@bvORI\vert\fi% \let\@bsORI\backslash% \ifx\chap\undefined\else\let\@chapORI\chap\fi% \let\@tildeORI\tilde% \ifx\numero\undefined\else\let\@numORI\numero\fi% \ifx\numeros\undefined\else\let\@numsORI\numeros\fi% \ifx\Numero\undefined\else\let\@NumORI\Numero\fi% \ifx\Numeros\undefined\else\let\@NumsORI\Numeros\fi% \ifx\degre\undefined\else\let\@degreORI\degre\fi% \ifx\degres\undefined\else\let\@degresORI\degres\fi% \ifx\ieme\undefined\else\let\@iemeORI\ieme\fi% \ifx\iemes\undefined\else\let\@iemesORI\iemes\fi% \ifx\ier\undefined\else\let\@ierORI\ier\fi% \ifx\iers\undefined\else\let\@iersORI\iers\fi% \ifx\iere\undefined\else\let\@iereORI\iere\fi% \ifx\ieres\undefined\else\let\@ieresORI\ieres\fi% \ifx\fsc\undefined\else\let\@fscORI\fsc\fi% \ifx\lsc\undefined\else\let\@lscORI\lsc\fi% \let\@ntsORI\!% \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 \def\vert{\ifmmode\@bvORI% | ........... \vert \else\ifFMA\string |\else\@bvORI\fi\fi}% % \let\bv\vert% \bv will be obsolate \def\backslash{\ifmmode\@bsORI%(barre oblique inversee) ....... \backslash \else\protect\@boi\fi}% % \let\boi\backslash% \boi will be obsolate \def\chap{\ifFMA\string ^\else\@chapORI\fi}% hat char .......... \chap \def\tilde{\relax\ifFMA\ifmmode\@tildeORI% tilde char......... \tilde \else\string~\fi\else\@tildeORI\fi}% % \def\No{\kern-.25em\lower.2ex\hbox{\degre}}% number char(obsolete) \def\@Fsp##1{\ifFMA$^{\mathrm ##1}$\else##1\fi}% \def\@umer##1{\@Fsp{##1}\kern.2em\ignorespaces}% \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 \edef\degre{\ifFMA{\ifECM\char\rq006\else\char\rq27\fi}\space% \else\@degreORI\fi}% degree char....... \degre \def\degres{\ifFMA\@Fsp{o}\else\@degresORI\fi}% degrees sign..... \degres \def\leftguillemets{\ifFMA\@oguills% << char...\leftguillemets \else<<\fi}% \def\rightguillemets{\ifFMA\@fguills% >> char..\rightguillemets \else>>\fi}% \def\fup##1{\ifFMA\leavevmode\raise+0.55ex% \hbox{\protect\sm@ller\lowercase{##1}}\kern+.17em%....... \fup \else##1\fi}% % \def\up##1{\raise 1ex\hbox{\protect\sm@ller##1}}% now obsolate \def\ieme{\ifFMA\protect\fup{e}\else\@iemeORI\fi}% ieme sign..... \ieme \def\iemes{\ifFMA\protect\fup{es}\else\@iemesORI\fi}% iemes sign..... \iemes \def\ier{\ifFMA\protect\fup{er}\else\@ierORI\fi}% ier sign..... \ier \def\iers{\ifFMA\protect\fup{ers}\else\@iersORI\fi}% iers sign..... \iers \def\iere{\ifFMA\protect\fup{re}\else\@iereORI\fi}% iere sign..... \iere \def\ieres{\ifFMA\protect\fup{res}\else\@ieresORI\fi}%ieres sign..... \ieres % \def\fsc##1{\ifFMA\leavevmode{% ................ small caps for names \fsc % \sc\@uchbox{\expandafter\@fsc##1/}}\else\@fscORI\fi}% % \def\@fsc##1##2/{\uppercase{##1}\protect\@lsc{##2}}% % \fsc is really more complicated with 2e. % \def\fsc##1{\protect\fsc@##1\@@}% the final \fsc definition waiting patch \def\fsc@@@@##1{\fsc@##1\@@}% \def\fsc{\protect\fsc@@@@}% 2e Alpha % Still bugged bec \fsc{{{...}}} generates a wrong output \def\fsc@##1##2\@@{\ifFMA\leavevmode{%........... small caps for names \fsc \sc\@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\@@{\uppercase{##1}\lsc@{##2}}% remove one surrounding {} \def\fsc@@@##1##2##3\@@{\uppercase{##1{##2}}\lsc@{##3}}% % \def\lsc{\protect\lsc@}%........... allways lower case small caps \lsc \def\lsc@##1{\ifFMA\leavevmode{\sc\@uchbox{\lowercase{##1}}}% \else\@lscORI##1\fi}% %......................................... \primo \secundo \tertio \quarto% %((((..................................... \primo) \secundo) \tertio) \quarto) %% \newcount\@FrCount% already defined when reading language.dat \def\@FE{%( 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\quando=##1{\@FrCount=##1\@FE}%(emacs.......... \quando=n or \quando=n) \def\primo{\@FrCount=1\@FE}% \def\secundo{\@FrCount=2\@FE}% \def\tertio{\@FrCount=3\@FE}% \def\quarto{\@FrCount=4\@FE}% \let\quatro\quarto% \quatro is obsolate, should be removed \def\minMAJ{\ifx\protect\relax\else\expandafter\protect\fi\minMA@}% \def\minMA@##1{\csname ##1\endcsname}% unuseful with ECM ....... \minMAJ % % (Leslie says: "... counters are referencable, footnote counters are not.") % Now we can. A facility to be added in future LaTeX releases I hope. \@ifundefined{refmark}% stands for \footnotemark[\ref{...}] .......... \refmark {\def\refmark##1{\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{##1}}$}}}{}%....}% % \def\!{\relax\ifFMA\ifmmode% \mskip-\thinmuskip\else\negthinspace\fi%......... \! \else\@ntsORI\fi}% \@ifundefined{moretolerance}{\def\moretolerance{%.............. \moretolerance \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{\vspace*{##1\baselineskip}}%............ \Sauter#Lignes }% end of \@ifm %%%%% Logo symbolisant tous les TeX ... avec lequel le French marche ! \@ifundefined{AllTeX}{%............................................... \AllTeX \def\AllTeX{\protect\p@alltex}% \def\p@alltex{{\@ifundefined{small}{\def\sm@ller{\sc}\def\upC{}}% {\def\upC{\uppercase}}% (L\kern-.36em\raise.3ex\hbox{\sm@ller\upC{a}}\kern-.15em)% T\kern-.1667em\lower.7ex\hbox{E}\kern-.125emX}}% }{}% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \let\@currname\@currnameORI% reset current package name \def\beginlanguage{%........\beginlanguage might be used after \begin{document} \ifx\babel@savevariable%selectlanguage \undefined\french% \else\endenglish\selectlanguage{french}\fi }% \edef\beginFWdirection{L}% write Left to right \ifLPLAIN% it will be the case in lplain format. \ifx\undefined\babel@core@loaded\else% special case Babel \PackageInfo{french}{Initialisation de l'option \frenchname{} pour Babel}% \GOfrench\let\GOfrench\relax% \fi% \else% if outside any high level format having a cs \document \expandafter\ifx\csname document\endcsname\relax% \GOfrench%then switch directly to French environnement \let\GOfrench\undefined% release memory \fi% \fi% REMember that \french is equal to \frenchTeXmods PLUS hyphen. stuff. \resetat%........................................................ reset @ char % The following is to bypass a wrong change in 209 emulation. % Some commands are now wrongly defined by \newcommand. \ifx\documentclass\undefined\else% reset already 209 defined commands \ifx\undefined\babel@core@loaded% dont do it for Babel {\makeatletter\global\let\l@chapter=\undefined}% \let\contentsname\undefined% \let\listfigurename\undefined% \let\listtablename\undefined% \let\bibname\undefined% \let\indexname\undefined% \let\figurename\undefined% \let\tablename\undefined% \let\partname\undefined% \let\chaptername\undefined% \let\appendixname\undefined% \fi% \fi% \endinput% replace by \pmfrench% for any transmission of Poor-Man-French style.