summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/latex/smflatex/smflatex.dtx
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/source/latex/smflatex/smflatex.dtx')
-rw-r--r--Master/texmf-dist/source/latex/smflatex/smflatex.dtx8531
1 files changed, 8531 insertions, 0 deletions
diff --git a/Master/texmf-dist/source/latex/smflatex/smflatex.dtx b/Master/texmf-dist/source/latex/smflatex/smflatex.dtx
new file mode 100644
index 00000000000..855de2b4c6b
--- /dev/null
+++ b/Master/texmf-dist/source/latex/smflatex/smflatex.dtx
@@ -0,0 +1,8531 @@
+% \iffalse meta-comment
+%
+% smflatex package version 1.6-20210418
+% Copyright (c) 1999-2021 Societe mathematique de France
+%
+% Ce fichier contient classes, paquetages et documentation pour
+% les publications de la Societe mathematique de France (SMF).
+%
+% Ces classes utilisent du code des classes amsart et amsbook de
+% l'American Mathematical Society (AMS).
+%
+% Leur modification est interdite \`a moins de modifier le nom de
+% la classe.
+%
+% \fi
+% \CheckSum{11858}
+%% \CharacterTable
+%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+%% Digits \0\1\2\3\4\5\6\7\8\9
+%% Exclamation \! Double quote \" Hash (number) \#
+%% Dollar \$ Percent \% Ampersand \&
+%% Acute accent \' Left paren \( Right paren \)
+%% Asterisk \* Plus \+ Comma \,
+%% Minus \- Point \. Solidus \/
+%% Colon \: Semicolon \; Less than \<
+%% Equals \= Greater than \> Question mark \?
+%% Commercial at \@ Left bracket \[ Backslash \\
+%% Right bracket \] Circumflex \^ Underscore \_
+%% Grave accent \` Left brace \{ Vertical bar \|
+%% Right brace \} Tilde \~}
+%
+% \changes{v0.2}{1997/01/02}{Utilisation de \texttt{doc.sty} et cr\'eation
+% d'une documentation}
+% \changes{v0.3}{1997/05/20}{Diverses options pour les th\'eor\`emes}
+% \changes{v0.3}{1997/05/21}{Ajout du manuel}
+% \changes{v0.3}{1997/05/28}{Fin de l'\'etat 1 du manuel (v.f.)}
+% \changes{v0.4}{1997/07/01}{Manuel dans un fichier s\'epar\'e,
+% au format smfart}
+% \changes{v0.5}{1997/07/10}{Packages auxiliaires pour les revues}
+% \changes{v0.5}{1997/07/10}{Package de th\'eor\`emes}
+% \changes{v0.6}{1997/07/15}{Package smfmulti}
+%
+% \changes{v1.2}{1999/11/17}{Use \cs{GetFileInfo}}
+% \changes{v1.3}{1999/11/20}{Remise \`a jour de la documentation}
+% \changes{v1.3a}{2000/02/15}{Modification des styles revues}
+%
+% \changes{v1.3b}{2001/09/26}{Am\'elioration des commentaires et
+% meilleure utilisation de \textsf{docstrip}}
+% \changes{v1.3b}{2001/10/04}{Les labels de biblio s'ajustent
+% automatiquement}
+% \changes{v1.3b}{2001/10/04}{babel est charg\'e en dernier}
+% \changes{v1.3b}{2001/10/04}{Pr\'evision de polices pour l'Euro}
+% \changes{v1.3b}{2001/10/04}{Introuduction de \cs{emergencyhyphenate}}
+% \changes{v1.3c}{2001/10/10}{Corrections mineures}
+% \changes{v1.3c}{2001/10/10}{Introduction de \cs{smfmulti@protect}}
+% \changes{v1.3d}{2002/07/02}{Remise \`a jour des environnements de preuve}
+% \changes{v1.3e}{2003/01/13}{Modification d'un bug dans les environnements
+% de figures et tables; rajout des env. figure* et table*}
+% \changes{v1.3f}{2003/10/28}{Ajout d'une p\'enalit\'e n\'egative avant
+% les \'enonc\'es de th\'eor\`emes}
+% \changes{v1.4f}{2010/11/07}{Mise \`a jour suite \`a une s\'erie
+% d'incompatibilit\'es avec hyperref (sections, th\'eor\`emes)}
+% \changes{v1.5}{2012/09/26}{Mise à jour sérieuse (théorèmes, sections)}
+% \changes{v1.5a}{2012/09/29}{Modifications supplémentaires en lien avec hyperref}
+% \changes{v1.5b}{2014/01/11}{Réparation d'un bug ayant fait disparaître les titres de sections dans les titres courants}
+% \changes{v1.5c}{2015/09/02}{Réparation d'un petit bug dans les environnements de théorèmes}
+% \changes{v1.5d}{2018/05/30}{Ajout de option 14pt}
+% \changes{v1.5e}{2019/07/11}{Ajout de appendixname (détecté par @KpanRambles)}
+% \changes{v1.5f}{2020/11/05}{Remplacement de latin1 par utf8 et réparation de GetFileInfo}
+% \changes{v1.6}[2021/03/28]{Ajout de préfixes smf aux noms de fichiers}
+% \changes{v1.6}[2021/03/28]{Incorporation de upitparen dans smfgen}
+% \changes{v1.6}[2021/04/18]{Correction de smfhyperref (backref)}
+%
+%
+% \DoNotIndex{\@,\@@par,\@beginparpenalty,\@empty}
+% \DoNotIndex{\@flushglue,\@gobble,\@input}
+% \DoNotIndex{\@makefnmark,\@makeother,\@maketitle}
+% \DoNotIndex{\@namedef,\@ne,\@spaces,\@tempa}
+% \DoNotIndex{\@tempb,\@tempswafalse,\@tempswatrue}
+% \DoNotIndex{\@thanks,\@thefnmark,\@topnum}
+% \DoNotIndex{\@@,\@elt,\@forloop,\@fortmp,\@gtempa,\@totalleftmargin}
+% \DoNotIndex{\",\/,\@ifundefined,\@nil,\@verbatim,\@vobeyspaces}
+% \DoNotIndex{\|,\~,\ ,\active,\advance,\aftergroup,\begingroup,\bgroup}
+% \DoNotIndex{\mathcal,\csname,\def,\documentstyle,\dospecials,\edef}
+% \DoNotIndex{\egroup}
+% \DoNotIndex{\else,\endcsname,\endgroup,\endinput,\endtrivlist}
+% \DoNotIndex{\expandafter,\fi,\fnsymbol,\futurelet,\gdef,\global}
+% \DoNotIndex{\hbox,\hss,\if,\if@inlabel,\if@tempswa,\if@twocolumn}
+% \DoNotIndex{\ifcase}
+% \DoNotIndex{\ifcat,\iffalse,\ifx,\ignorespaces,\index,\input,\item}
+% \DoNotIndex{\jobname,\kern,\leavevmode,\leftskip,\let,\llap,\lower}
+% \DoNotIndex{\m@ne,\next,\newpage,\nobreak,\noexpand,\nonfrenchspacing}
+% \DoNotIndex{\obeylines,\or,\protect,\raggedleft,\rightskip,\rm,\sc}
+% \DoNotIndex{\setbox,\setcounter,\small,\space,\string,\strut}
+% \DoNotIndex{\strutbox}
+% \DoNotIndex{\thefootnote,\thispagestyle,\topmargin,\trivlist,\tt}
+% \DoNotIndex{\twocolumn,\typeout,\vss,\vtop,\xdef,\z@}
+% \DoNotIndex{\,,\@bsphack,\@esphack,\@noligs,\@vobeyspaces,\@xverbatim}
+% \DoNotIndex{\`,\catcode,\end,\escapechar,\frenchspacing,\glossary}
+% \DoNotIndex{\hangindent,\hfil,\hfill,\hskip,\hspace,\ht,\it,\langle}
+% \DoNotIndex{\leaders,\long,\makelabel,\marginpar,\markboth,\mathcode}
+% \DoNotIndex{\mathsurround,\mbox,\newcount,\newdimen,\newskip}
+% \DoNotIndex{\nopagebreak}
+% \DoNotIndex{\parfillskip,\parindent,\parskip,\penalty,\raise,\rangle}
+% \DoNotIndex{\section,\setlength,\TeX,\topsep,\underline,\unskip,\verb}
+% \DoNotIndex{\vskip,\vspace,\widetilde,\\,\%,\@date,\@defpar}
+% \DoNotIndex{\[,\{,\},\]}
+% \DoNotIndex{\count@,\ifnum,\loop,\today,\uppercase,\uccode}
+% \DoNotIndex{\baselineskip,\begin,\tw@}
+% \DoNotIndex{\a,\b,\c,\d,\e,\f,\g,\h,\i,\j,\k,\l,\m,\n,\o,\p,\q}
+% \DoNotIndex{\r,\s,\t,\u,\v,\w,\x,\y,\z,\A,\B,\C,\D,\E,\F,\G,\H}
+% \DoNotIndex{\I,\J,\K,\L,\M,\N,\O,\P,\Q,\R,\S,\T,\U,\V,\W,\X,\Y,\Z}
+% \DoNotIndex{\1,\2,\3,\4,\5,\6,\7,\8,\9,\0}
+% \DoNotIndex{\!,\#,\$,\&,\',\(,\),\+,\.,\:,\;,\<,\=,\>,\?,\_}
+% \DoNotIndex{\discretionary,\immediate,\makeatletter,\makeatother}
+% \DoNotIndex{\meaning,\newenvironment,\par,\relax,\renewenvironment}
+% \DoNotIndex{\repeat,\scriptsize,\selectfont,\the,\undefined}
+% \DoNotIndex{\arabic,\do,\makeindex,\null,\number,\show,\write,\@ehc}
+% \DoNotIndex{\@author,\@ehc,\@ifstar,\@sanitize,\@title,\everypar}
+% \DoNotIndex{\if@minipage,\if@restonecol,\ifeof,\ifmmode}
+% \DoNotIndex{\lccode,\newtoks,\onecolumn,\openin,\p@,\SelfDocumenting}
+% \DoNotIndex{\settowidth,\@resetonecoltrue,\@resetonecolfalse,\bf}
+% \DoNotIndex{\clearpage,\closein,\lowercase,\@inlabelfalse}
+% \DoNotIndex{\selectfont,\mathcode,\newmathalphabet,\rmdefault}
+% \DoNotIndex{\bfdefault}
+%
+% \iffalse
+% \begin{macrocode}
+%<*doc>
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesFile{smfdoc.tex}[2020/11/05 v1.5f
+ Documentation LaTeX pour les classes et styles SMF]
+\documentclass{ltxdoc}
+\GetFileInfo{smfdoc.tex}
+\usepackage{amssymb,amstext}
+\usepackage[T1]{fontenc}
+\usepackage[utf8]{inputenc}
+\usepackage[frenchb]{babel}
+% \end{macrocode}
+% On veut un index avec les num\'eros de ligne
+% ainsi qu'une liste des changements.
+% \begin{macrocode}
+ % \DisableCrossrefs if index is ready
+ % Say \EnableCrossrefs if index is not ready
+\EnableCrossrefs
+\RecordChanges
+\CodelineIndex
+\setlength\hfuzz{15pt} % dont make so many
+\hbadness=7000 % over and under full box warnings
+
+\IndexPrologue{\section*{Index} Les nombres en \usage{italique}
+d\'esignent les pages o\`u l'entr\'ee correspondante est d\'ecrite,
+ceux \main{soulign\'es} leur d\'efinition, et les autres signalent
+les endroits o\`u l'entr\'ee est utilis\'ee.}
+
+\begin{document}
+ \let\oldsection\section
+ \def\section{\clearpage\oldsection}
+ \DocInput{smflatex.dtx}
+\end{document}
+% \end{macrocode}
+%</doc>
+% \fi
+%
+% \title{Classes \LaTeXe\ pour les publications de la SMF}
+% \author{A.\ Chambert-Loir \&\ SMF}
+% \date{\today --- Version \fileversion{}, dat\'ee du \filedate{}.}
+%
+% \maketitle
+%%
+% \let\paquet\textsf
+% \let\classe\textsf
+% \def\paquetoption#1{{\sffamily\itshape #1}}
+%
+% Les classes \classe{smfbook} et \classe{smfart} ont
+% \'et\'e d\'evelopp\'ees pour permettre la composition automatique de
+% documents conform\'ement aux sp\'ecifications de la Soci\'et\'e
+% math\'ematique de France.
+% Les quelques pages qui suivent ont
+% pour but de donner quelques informations sur leur utilisation.
+% Ces classes ont \'et\'e con\c{c}ues pour \^etre le plus possible
+% compatible avec les
+% classes d\'evelopp\'ees par l'AMS \classe{amsart} et \classe{amsbook}.
+%
+% Pour les utiliser, il faut disposer~:
+% \begin{itemize}
+% \item de \LaTeXe, si possible une version r\'ecente. La classe
+% ne fonctionne pas avec l'ancienne version \LaTeX 2.09,
+% obsol\`ete depuis plusieurs ann\'ees~;
+% \item des divers {\em package}s {AMS-\LaTeX} fournis par l'AMS~;
+% il est pr\'ef\'erable de disposer de la version de novembre 1996,
+% mais cela devrait fonctionner avec celle de 1995.
+% \end{itemize}
+% Pour mettre en page un \'eventuel index,
+% il est de plus souhaitable de disposer du {\em package}
+% \paquet{multicol}.
+%
+% D'autre part, il est important de composer le document de la mani\`ere
+% le plus standard possible, en limitant le nombre de macros
+% {\og maison\fg} suppl\'ementaires,
+% d'autant que de nombreux {\em package}s apportent
+% de nouvelles fonctionnalit\'es \`a \LaTeXe. Nous sugg\'erons ainsi
+% d'utiliser~:
+% \begin{itemize}
+% \item \paquet{xypic}, pour les diagrammes~;
+% \item \paquet{epsfig}, pour l'inclusion de dessins r\'ealis\'es
+% en {\scshape PostScript} (encapsul\'e)~;
+% \item \paquet{babel},
+% qui permet des documents multilingues (c\'esure, etc.). Sont
+% g\'er\'ees les options \paquetoption{frenchb} et
+% \paquetoption{english}.
+% \end{itemize}
+%
+% Nous avons aussi d\'evelopp\'e un certain nombres de packages :
+% \begin{itemize}
+% \item \paquet{smfthm} d\'efinit quelques envionnements
+% de th\'eor\`emes et permet de
+% g\'erer leur apparence de mani\`ere (un peu) transparente.
+% \item \paquet{smfenum} am\'eliore les param\`etres des listes.
+% J'esp\`ere l'inclure
+% dans les classes un jour ou l'autre.
+% \item \paquet{smfmulti} permet de composer un document
+% en plusieurs morceaux
+% (cha\^i nage automatique, etc.).
+% \end{itemize}
+% Les revues ont chacune leurs bidouillages propres, d'o\`u des
+% paquetages aux noms transparents : \paquet{asterisque}, etc.
+% Ce qui est commun \`a chaque revue est fait dans \texttt{smfgen}.
+% Un certain nombre de donn\'ees volatiles (directeur de
+% publication, prix, etc.) sont entr\'ees dans le paquetage
+% \paquet{smfvar}. Celui-ci n'est pas inclus dans ce qui
+% suit.
+%
+% Enfin, pour faciliter la gestion des bases de donn\'ees
+% internes \`a la SMF, le paquet \paquet{smfbib} fabrique des
+% notices bibliographiques normalis\'ees.
+%
+% \StopEventually
+%
+% \tableofcontents
+%
+% \section{Ent\^etes}
+% \begin{macrocode}
+%<article|book>\NeedsTeXFormat{LaTeX2e}
+%<*article>
+\ProvidesClass{smfart}[2021/03/28 v1.6
+ Classe LaTeX pour les articles publies par la SMF]
+\def\@classname{smfart}
+%</article>
+%<*book>
+\ProvidesClass{smfbook}[2021/03/28 v1.6
+ Classe LaTeX pour les monographies editees par la SMF]
+\def\@classname{smfbook}
+%</book>
+% \end{macrocode}
+% \section{Mise en page}
+% \begin{macrocode}
+%<*article|book>
+\RequirePackage{amsgen}
+% \end{macrocode}
+% \subsection{Majuscules}
+% \begin{macro}{\uppercasenonmath}
+% Ces macros sont pomp\'ees de l'AMS. Bizarrement, l'ancienne version s'est
+% mise \`a bugger r\'ecemment ! Elles servent \`a mettre un texte en majuscules
+% en \'evitant les maths.
+% Si \verb|\toto| s'expande en \texttt{Salut}, apr\`es
+% \verb|\uppercasenonmath\toto|, \verb|\toto| s'expande en \texttt{SALUT}.
+% \begin{macrocode}
+\newcommand{\uppercasenonmath}[1]{\toks@\@emptytoks
+ \@xp\@skipmath\@xp\@empty#1$$%
+ \edef#1{\@nx\@upprep\the\toks@}%
+}
+\newcommand{\@upprep}{%
+ \spaceskip1.3\fontdimen2\font plus1.3\fontdimen3\font
+ \upchars@}
+\newcommand{\upchars@}{%
+ \def\ss{SS}\def\i{I}\def\j{J}\def\ae{\AE}\def\oe{\OE}%
+ \def\o{\O}\def\aa{\AA}\def\l{\L}\def\Mc{M{\scshape c}}}
+\newcommand{\@skipmath}{}
+\long\def\@skipmath#1$#2${%
+ \@xskipmath#1\(\)%
+ \@ifnotempty{#2}{\toks@\@xp{\the\toks@$#2$}\@skipmath\@empty}}%
+\newcommand{\@xskipmath}{}
+\long\def\@xskipmath#1\(#2\){%
+ \uppercase{\toks@\@xp\@xp\@xp{\@xp\the\@xp\toks@#1}}%
+ \@ifnotempty{#2}{\toks@\@xp{\the\toks@\(#2\)}\@xskipmath\@empty}}%
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\MakeUppercase}
+% On red\'efinit |\MakeUppercase| afin qu'il utilise |\uppercasenonmath| et
+% qu'il ne mette pas les math\'ematiques en majuscules.
+% \DescribeMacro{\@smfprotect}
+% La macro |\@smfprotect| permet de prot\'eger les |\\|.
+% \begin{macrocode}
+\def\@smfprotect{\let\smfcr\\\def\\{\protect\smfcr}}
+\DeclareRobustCommand{\MakeUppercase}[1]{{%
+ \@smfprotect\upchars@
+ \protected@edef\reserved@a{#1}\uppercasenonmath\reserved@a\reserved@a}}
+\protected@edef\MakeUppercase#1{\MakeUppercase{#1}}
+% \end{macrocode}
+% \end{macro}
+% \subsection{Date (anglaise)}
+% \DescribeMacro{\today}
+% \begin{macrocode}
+\newcommand{\today}{%
+ \relax\ifcase\month\or
+ January\or February\or March\or April\or May\or June\or
+ July\or August\or September\or October\or November\or December\fi
+ \space\number\day, \number\year}
+% \end{macrocode}
+% \subsection{Commandes de caract\`eres pr\'e-NFSS}
+% \DescribeMacro{\rm}
+% \DescribeMacro{\sf}
+% \DescribeMacro{\tt}
+% \DescribeMacro{\bf}
+% \DescribeMacro{\it}
+% \DescribeMacro{\it}
+% \DescribeMacro{\sl}
+% \DescribeMacro{\sc}
+% Avant d'avoir l'effet escompt\'e, ces macros reviennent en |\normalfont|,
+% comme autrefois dans \LaTeX 2.09 (avant NFSS).
+% Ces commandes sont rajout\'ees par AMS-\LaTeX, il faut bien avouer
+% qu'elles peuvent \^etre salvatrices face \`a certains fichiers d\'emod\'es,
+% alors je les laisse~!
+% \begin{macrocode}
+\DeclareOldFontCommand{\rm}{\normalfont\rmfamily}{\mathrm}
+\DeclareOldFontCommand{\sf}{\normalfont\sffamily}{\mathsf}
+\DeclareOldFontCommand{\tt}{\normalfont\ttfamily}{\mathtt}
+\DeclareOldFontCommand{\bf}{\normalfont\bfseries}{\mathbf}
+\DeclareOldFontCommand{\it}{\normalfont\itshape}{\mathit}
+\DeclareOldFontCommand{\sl}{\normalfont\slshape}{\@nomath\sl}
+\DeclareOldFontCommand{\sc}{\normalfont\scshape}{\@nomath\sc}
+% \end{macrocode}
+% \subsection{Changements de casse}
+% \DescribeMacro{\larger}
+% \DescribeMacro{\smaller}
+% Ce code est emprunt\'e \`a \texttt{amsbook.cls}, il serait donc de bon ton de
+% demander l'avis de l'$\mathcal{AMS}$ avant de publier cette classe, ou
+% alors de tout r\'ecrire.
+% \begin{macrocode}
+\newcommand{\larger}[1][1]{%
+ \count@\@currsizeindex \advance\count@#1\relax
+ \ifnum\count@<\z@ \count@\z@
+ \else\ifnum\count@>12 \count@12 \fi\fi
+ \ifcase\count@
+ \Tiny\or\Tiny\or\tiny\or\SMALL\or\Small\or\small
+ \or\normalsize
+ \or\large\or\Large\or\LARGE\or\huge\or\Huge\else\Huge
+ \fi
+}
+\newcommand{\smaller}[1][1]{\larger[-#1]}
+\def\@adjustvertspacing{%
+ \bigskipamount.7\baselineskip plus.7\baselineskip
+ \medskipamount\bigskipamount \divide\medskipamount\tw@
+ \smallskipamount\medskipamount \divide\smallskipamount\tw@
+ \abovedisplayskip\medskipamount
+ \belowdisplayskip \abovedisplayskip
+ \abovedisplayshortskip\abovedisplayskip
+ \advance\abovedisplayshortskip-1\abovedisplayskip
+ \belowdisplayshortskip\abovedisplayshortskip
+ \advance\belowdisplayshortskip 1\smallskipamount
+ \jot\baselineskip \divide\jot 4 \relax
+}
+% \end{macrocode}
+% On d\'efinit les macros usuelles pour changer de tailles.
+% C'est la macro |\@setfontsize| qui fera le travail. Elle utilise
+% |\@typesizes| qui est d\'efini plus bas.
+% \begin{macrocode}
+\renewcommand\normalsize{\@xsetfontsize\normalsize 6%
+ \@adjustvertspacing \let\@listi\@listI}
+\newcommand\Tiny{\@xsetfontsize\Tiny 1}
+\newcommand\tiny{\@xsetfontsize\tiny 2}
+\newcommand\SMALL{\@xsetfontsize\SMALL 3}
+\newcommand\Small{\@xsetfontsize\Small 4%
+ \@adjustvertspacing
+ \def\@listi{\topsep\smallskipamount \parsep\z@skip
+ \itemsep\z@skip}}
+\newcommand\small{\@xsetfontsize\small 5\@adjustvertspacing}
+\def\footnotesize{\Small}
+\def\scriptsize{\SMALL}
+\newcommand\large{\@xsetfontsize\large 7\@adjustvertspacing}
+\newcommand\Large{\@xsetfontsize\Large 8\@adjustvertspacing}
+\newcommand\LARGE{\@xsetfontsize\LARGE 9}
+\newcommand\huge{\@xsetfontsize\huge{10}}
+\newcommand\Huge{\@xsetfontsize\Huge{11}}
+\def\@xsetfontsize#1#2{%
+ \chardef\@currsizeindex#2\relax
+ \edef\@tempa{\@nx\@setfontsize\@nx#1%
+ \@xp\ifcase\@xp\@currsizeindex\@typesizes
+ \else{99}{99}\fi}%
+ \@tempa
+}
+% \end{macrocode}
+% \subsection{Param\`etres}
+% Je ne comprends pas tous ces param\`etres, il faudra les \'etudier un par
+% un.
+%
+% Le premier r\'ef\`ere la taille courante (|\normalsize|).
+% \begin{macrocode}
+\chardef\@currsizeindex=6
+% \end{macrocode}
+% Les veuves, orphelines et c\'esures sont proscrites en bas de page.
+% \begin{macrocode}
+\widowpenalty=10000
+\clubpenalty=10000
+\brokenpenalty=10000
+% \end{macrocode}
+% La macro |\linespacing| est utilis\'ee \`a plusieurs endroits~:
+% elle vaut essentiellement |\baselineskip|.
+% Ces param\`etres servent aussi pour la gestion
+% des formules math\'ematiques dans
+% les packages {\em amsmath} et {\em amstex}.
+% \begin{macrocode}
+\newdimen\linespacing
+\lineskip=1pt \normallineskip=1pt
+\lineskiplimit=1pt \normallineskiplimit=1pt
+% \end{macrocode}
+% Le texte me para\^{\i}trait plus lisible un peu plus espac\'e que la
+% normale, je mais tout de m\^eme un |\baselinestretch| de |{1}|.
+% \begin{macrocode}
+\def\baselinestretch{1} %% 1.1 is better
+% \end{macrocode}
+% Les sp\'ecifications g\'en\'eriques de la SMF pour le format des pages~:
+% \begin{itemize}
+% \item un cadre de $13\times 21{,}5\,\text{cm}$, titres courants et pied de
+% page compris~;
+% \item Un espace de $1\,\text{cm}$ entre la premi\`ere ligne du texte et le
+% titre courant~;
+% \item un espace de $1\,\text{cm}$, voire $1{,}5\,\text{cm}$
+% entre le pied de page et la derni\`ere ligne du texte.
+% \end{itemize}
+% \begin{macrocode}
+\textheight 21.5cm
+\textwidth 13cm
+\headheight=10pt
+\headsep 10mm
+\footskip 10mm % was .7
+\columnsep=10pt \columnseprule=0pt
+\marginparsep=10pt
+\marginparpush=5pt
+\marginparwidth=90pt
+\newskip\normaltopskip
+% \end{macrocode}
+% \begin{macrocode}
+\skip\footins=12pt plus12pt
+\skip\@mpfootins=\skip\footins
+
+\fboxsep=3pt \fboxrule=.4pt
+
+\arrayrulewidth=.4pt \doublerulesep=2pt
+\labelsep=5pt \arraycolsep=\labelsep
+\tabcolsep=\labelsep \tabbingsep=\labelsep
+
+\floatsep=15pt plus 12pt \dblfloatsep=15pt plus 12pt
+\textfloatsep=\floatsep \dbltextfloatsep=15pt plus 12pt
+\intextsep=\floatsep
+
+\@fptop=0pt plus1fil \@dblfptop=0pt plus1fil
+\@fpbot=0pt plus1fil \@dblfpbot=0pt plus1fil
+\@fpsep=10pt plus2fil \@dblfpsep=10pt plus2fil\relax
+% \end{macrocode}
+% Aucun espacement entre deux paragraphes. Sinon, comme |\@parboxrestore|
+% supprime l'alin\'ea dans des notes de bas de page, on utilise l'astuce de
+% {\em amsart} pour la r\'etablir~; |\normalparindent| est la largeur de
+% l'alin\'ea standard.
+% \begin{macrocode}
+\parskip=0pt
+
+\newdimen\normalparindent
+\normalparindent=12pt
+\parindent=\normalparindent
+
+\parsep 0pt
+\partopsep=0pt \relax \parsep=0pt \relax \itemsep=0pt \relax
+
+\@lowpenalty=51 \@medpenalty=151 \@highpenalty=301
+\@beginparpenalty=-\@lowpenalty
+\@endparpenalty=-\@lowpenalty
+\@itempenalty=-\@lowpenalty
+% \end{macrocode}
+% \subsection{Calculs}
+% \begin{macro}{\calclayout}
+% Dans cette impl\'ementation, la partie imprim\'ee de la feuille
+% est centr\'ee aussi bien verticalement qu'horizontalement.
+% \begin{macrocode}
+\def\calclayout{\normalsize
+ \topskip\normaltopskip
+ \settoheight{\footnotesep}{\normalfont\footnotesize M$^1$}%
+ \@tempdima=\textheight
+ \advance\textheight -\headheight
+ \advance\textheight -\headsep
+ \advance\textheight -\footskip
+ \advance\textheight -\topskip
+ \divide\textheight\baselineskip\@tempcnta\textheight
+ \textheight\@tempcnta\baselineskip
+ \advance\textheight \topskip
+ \headsep\@tempdima
+ \advance\headsep -\textheight \advance\headsep -\headheight
+ \footskip=.5\headsep\advance\footskip .5\baselineskip
+ \advance\headsep by -\footskip
+
+ \oddsidemargin\paperwidth
+ \advance\oddsidemargin -\textwidth
+ \divide\oddsidemargin\tw@
+ \ifdim\oddsidemargin<.5truein \oddsidemargin.5truein \fi
+ \advance\oddsidemargin -1truein
+
+ \evensidemargin\oddsidemargin
+
+ \topmargin\paperheight \advance\topmargin -\textheight
+ \advance\topmargin -\headheight \advance\topmargin -\headsep
+ \advance\topmargin -\footskip
+ \divide\topmargin\tw@
+ \ifdim\topmargin<.5truein \topmargin.5truein \fi
+ \advance\topmargin -1truein\relax
+}
+% \end{macrocode}
+% \end{macro}
+% \subsection{Ent\^etes et pieds de page}
+% \subsubsection{empty}
+% \begin{macro}{\ps@empty}
+% Rien du tout sur la page\dots
+% \begin{macrocode}
+\def\ps@empty{\let\@mkboth\@gobbletwo
+ \let\@oddhead\@empty \let\@evenhead\@empty
+ \let\@oddfoot\@empty \let\@evenfoot\@empty
+ \global\topskip\normaltopskip}
+% \end{macrocode}
+% \end{macro}
+% \subsubsection{plain}
+% \begin{macro}{\ps@plain}
+% Ent\^etes vierges, num\'eros de pages centr\'es en bas de page.
+% \begin{macrocode}
+\def\ps@plain{\ps@empty
+ \def\@oddfoot{\normalfont\scriptsize \hfil\thepage\hfil}%
+ \let\@evenfoot\@oddfoot}
+%</article|book>
+% \end{macrocode}
+% \end{macro}
+% \subsubsection{headings}
+% \begin{macro}{ps@headings}
+% C'est le style standard, les num\'eros de pages sont en haut, en gras,
+% avec le texte des |\mark|, le pied de page est vierge.
+% \begin{macrocode}
+%<*article>
+\def\ps@headings{\ps@empty
+ \def\@oddfoot{}%
+ \def\@evenfoot{}%
+ \def\@evenhead{\normalfont\scriptsize
+ \rlap{\bfseries\thepage}\hfil \leftmark{}{}\hfil}%
+ \def\@oddhead{\normalfont\scriptsize
+ \hfil \rightmark{}{}\hfil \llap{\bfseries\thepage}}%
+ \let\@mkboth\@gobbletwo}
+%</article>
+%<*book>
+\def\ps@headings{\ps@empty
+ \def\@oddfoot{}%
+ \def\@evenfoot{}%
+ \def\@evenhead{\normalfont\scriptsize
+ \rlap{\bfseries\thepage}\hfil \leftmark{}{}\hfil}%
+ \def\@oddhead{\normalfont\scriptsize
+ \hfil \rightmark{}{}\hfil \llap{\bfseries\thepage}}%
+ \let\@mkboth\org@markboth
+ \def\partmark {\@secmark\markboth\partrunhead\partname}%
+ \def\chaptermark {\@secmark\markboth\chapterrunhead\chaptername}%
+ \def\sectionmark {\@secmark\markright\sectionrunhead\sectionname}%
+ \def\indexmark {\@secmark\markboth\indexrunhead\indexname}%
+}
+%</book>
+% \end{macrocode}
+% \end{macro}
+% \subsubsection{copyright}
+% Vierge en standard.
+% \begin{macrocode}
+%<*article|book>
+\let\ps@copyright\ps@empty
+% \end{macrocode}
+% \subsubsection{myheadings}
+% C'est le style \texttt{headings} sauf que les marques droite et gauche
+% sont d\'ecid\'ees par l'utilisateur.
+% \begin{macrocode}
+\def\ps@myheadings{\ps@headings \let\@mkboth\@gobbletwo}
+% \end{macrocode}
+% \subsection{Marques}
+% \begin{macrocode}
+\def\leftmark{\expandafter\@firstoftwo\topmark{}{}}
+\def\rightmark{\expandafter\@secondoftwo\botmark{}{}}
+\long\def\@nilgobble#1\@nil{}
+\def\@secmark#1#2#3#4{%
+ \begingroup \let\protect\@unexpandable@protect
+ \edef\@tempa{\endgroup \toks@{\protect#2{#3}{\@secnumber}}}%
+ \@tempa
+ \toks@\@xp{\the\toks@{#4}}%
+ \afterassignment\@nilgobble\@temptokena\@themark{}\@nil
+ \edef\@tempa{\@nx\@mkboth{%
+ \ifx\markright#1\the\@temptokena\else\the\toks@\fi}{\the\toks@}}%
+ \@tempa}
+\let\@secnumber\@empty
+\def\markboth#1#2{%
+ \begingroup
+ \@temptokena{{#1}{#2}}\xdef\@themark{\the\@temptokena}%
+ \mark{\the\@temptokena}%
+ \endgroup
+ \if@nobreak\ifvmode\nobreak\fi\fi}
+\let\org@markboth\markboth
+% \end{macrocode}
+% Avant de d\'ecider le style d'ent\^ete utilis\'e, pas de marques.
+% \begin{macrocode}
+\let\partmark\@gobble
+\let\tocmark\@gobble
+\let\sectionmark\@gobble
+\let\subsectionmark\@gobble
+\let\subsubsectionmark\@gobble
+\let\paragraphmark\@gobble
+% \end{macrocode}
+% \subsection{Red\'efinition de \texttt{cleardoublepage}}
+% En effet, la page saut\'ee lorsque par exemple un chapitre commence sur
+% la page de droite doit \^etre vierge de tout ent\^ete/pied de page.
+% \begin{macrocode}
+\def\cleardoublepage{\clearpage\if@twoside \ifodd\c@page\else
+ \thispagestyle{empty}\hbox{}\newpage
+ \if@twocolumn\hbox{}\newpage\fi\fi\fi}
+% \end{macrocode}
+% \section{Options}
+% \subsection{Taille du papier}
+% La taille par d\'efaut sera la taille A4 (\texttt{a4paper}) mais l'option
+% \texttt{letterpaper} est conserv\'ee pour que la classe se comporte bien
+% aux \'E.U.
+% \begin{macrocode}
+\DeclareOption{a4paper}{\paperheight 297mm\paperwidth 210mm}
+\DeclareOption{letterpaper}{\paperheight 11in\paperwidth 8.5in }
+% \end{macrocode}
+% \subsection{Recto-verso}
+% Cette option est appel\'ee \`a dispara\^{\i}tre.
+% \begin{macrocode}
+\DeclareOption{oneside}{\@twosidefalse \@mparswitchfalse}
+\DeclareOption{twoside}{\@twosidetrue \@mparswitchtrue}
+% \end{macrocode}
+% \subsection{Version pr\'eliminaire}
+% L'option \texttt{draft} correspond aux versions pr\'eliminaires, les
+% barres noires d'{\itshape overfull hbox} sont visibles.
+% Dans les packages additionnels smf, cela supprime les pages de
+% couverture.
+% \begin{macrocode}
+\newif\if@draft
+\DeclareOption{draft}{\@drafttrue\overfullrule5\p@ }
+\DeclareOption{final}{\@draftfalse\overfullrule\z@ }
+% \end{macrocode}
+% \subsection{Une ou deux colonnes}
+% \begin{macrocode}
+\DeclareOption{onecolumn}{\@twocolumnfalse}
+\DeclareOption{twocolumn}{\@twocolumntrue}
+% \end{macrocode}
+% \subsection{Num\'eros d'\'equations}
+% \begin{macrocode}
+\newif\iftagsleft@
+\DeclareOption{leqno}{%
+ \tagsleft@true \PassOptionsToPackage{leqno}{amsmath}}
+\DeclareOption{reqno}{%
+ \tagsleft@false \PassOptionsToPackage{reqno}{amsmath}}
+% \end{macrocode}
+% \subsection{Alignement des \'equations \`a gauche}
+% \begin{macrocode}
+\DeclareOption{fleqn}{%
+ \def\[{\relax
+ \ifmmode\@badmath
+ \else
+ \begin{trivlist}%
+ \@beginparpenalty\predisplaypenalty
+ \@endparpenalty\postdisplaypenalty
+ \item[]\leavevmode
+ \hbox to\linewidth\bgroup$\displaystyle
+ \hskip\mathindent\bgroup
+ \fi}%
+ \def\]{\relax
+ \ifmmode
+ \egroup \m@th$\hfil \egroup
+ \end{trivlist}%
+ \else \@badmath
+ \fi}%
+ \renewenvironment{equation}{%
+ \@beginparpenalty\predisplaypenalty
+ \@endparpenalty\postdisplaypenalty
+ \refstepcounter{equation}%
+ \@topsep\abovedisplayskip \trivlist
+ \item[]\leavevmode
+ \hbox to\linewidth\bgroup\hskip\mathindent$\displaystyle
+ }{%
+ \m@th$\hfil \displaywidth\linewidth \hbox{\@eqnnum}\egroup
+ \endtrivlist
+ }%
+ \renewenvironment{eqnarray}{%
+ \stepcounter{equation}\let\@currentlabel\theequation
+ \global\@eqnswtrue \global\@eqcnt\z@ \tabskip\mathindent
+ \let\\=\@eqncr \abovedisplayskip\topsep
+ \ifvmode \advance\abovedisplayskip\partopsep \fi
+ \belowdisplayskip\abovedisplayskip
+ \belowdisplayshortskip\abovedisplayskip
+ \abovedisplayshortskip\abovedisplayskip
+ $$\everycr{}\halign to\linewidth\bgroup
+ \hskip\@centering
+ $\displaystyle\tabskip\z@skip####\m@th$&%
+ \@eqnsel \global\@eqcnt\@ne
+ \hfil${}####{}\m@th$\hfil&%
+ \global\@eqcnt\tw@
+ $\displaystyle ####\m@th$\hfil\tabskip\@centering&%
+ \global\@eqcnt\thr@@
+ \hbox to \z@\bgroup\hss####\egroup\tabskip\z@skip\cr
+ }{%
+ \@@eqncr \egroup \global\advance\c@equation\m@ne$$%
+ \global\@ignoretrue
+ }%
+ \newdimen\mathindent \mathindent\leftmargini
+}
+% \end{macrocode}
+% \subsection{Math\'ematiques grasses}
+% Cette option est faite pour que les math\'ematiques soient
+% grasses dans des titres gras.
+% \begin{macrocode}
+\let\smf@boldmath\relax
+\DeclareOption{boldmath}{%
+ \def\smf@boldmath{\mathversion{bold}}}
+% \end{macrocode}
+% \subsection{Choix de la langue}
+% Le choix de cette option est n\'ecessaire \`a la bonne marche de la
+% classe, mais par d\'efaut, on choisit {\tt francais}.
+% \begin{macrocode}
+\DeclareOption{french}{%
+ \global\def\smf@language{french}}
+\DeclareOption{francais}{%
+ \global\def\smf@language{french}}
+\DeclareOption{english}{%
+ \global\def\smf@language{english}}
+% \end{macrocode}
+% \subsection{Options de tailles de caract\`eres}
+% Pour l'instant, l'option par d\'efaut est d'imprimer en 10 points mais il
+% est possible de revenir \`a 11 ou 12 points, voire de laisser le choix
+% \`a l'auteur. Il y a aussi une option 14 points.
+% \begin{macrocode}
+\def\@xxxpt{29.86}
+\DeclareOption{10pt}{\def\@mainsize{10}\def\@ptsize{0}%
+ \normaltopskip=10pt \relax
+ \def\@typesizes{%
+ \or{5}{6}\or{6}{7}\or{7}{8}\or{8}{10}\or{9}{11}%
+ \or{10}{12}% normalsize
+ \or{\@xipt}{13}\or{\@xiipt}{14}\or{\@xivpt}{17}%
+ \or{\@xviipt}{20}\or{\@xxpt}{24}}%
+ \normalsize \linespacing=\baselineskip }
+
+\DeclareOption{11pt}{\def\@mainsize{11}\def\@ptsize{1}%
+ \normaltopskip=11pt \relax
+ \def\@typesizes{%
+ \or{6}{7}\or{7}{8}\or{8}{10}\or{9}{11}\or{10}{12}%
+ \or{\@xipt}{13}% normalsize
+ \or{\@xiipt}{14}\or{\@xivpt}{17}\or{\@xviipt}{20}%
+ \or{\@xxpt}{24}\or{\@xxvpt}{30}}%
+ \normalsize \linespacing=\baselineskip }
+
+\DeclareOption{12pt}{\def\@mainsize{12}\def\@ptsize{2}%
+ \normaltopskip=12pt \relax
+ \def\@typesizes{%
+ \or{7}{8}\or{8}{10}\or{9}{11}\or{10}{12}\or{\@xipt}{13}%
+ \or{\@xiipt}{14}% normalsize
+ \or{\@xivpt}{17}\or{\@xviipt}{20}\or{\@xxpt}{24}%
+ \or{\@xxvpt}{30}\or{\@xxxpt}{36}}%
+ \normalsize \linespacing=\baselineskip }
+
+\DeclareOption{14pt}{\def\@mainsize{14}\def\@ptsize{3}%
+ \normaltopskip=14pt \relax
+ \def\@typesizes{%
+ \or{8}{10}\or{9}{11}\or{10}{12}\or{\@xipt}{13}%
+ \or{\@xiipt}{14}\or{\@xivpt}{17}% normalsize
+ \or{\@xviipt}{20}\or{\@xxpt}{24}%
+ \or{\@xxvpt}{30}\or{\@xxxpt}{36}\or{\@xxxpt}{36}}%
+ \normalsize \linespacing=\baselineskip }
+
+\DeclareOption{8pt}{\def\@mainsize{8}\def\@ptsize{8}%
+ \normaltopskip=8pt \relax
+ \def\@typesizes{%
+ \or{5}{6}\or{5}{6}\or{5}{6}\or{6}{7}\or{7}{8}%
+ \or{8}{10}% normalsize
+ \or{9}{11}\or{10}{12}\or{\@xipt}{13}%
+ \or{\@xiipt}{14}\or{\@xivpt}{17}}%
+ \normalsize \linespacing=\baselineskip }
+
+\DeclareOption{9pt}{\def\@mainsize{9}\def\@ptsize{9}%
+ \normaltopskip=9pt \relax
+ \def\@typesizes{%
+ \or{5}{6}\or{5}{6}\or{6}{7}\or{7}{8}\or{8}{10}%
+ \or{9}{11}% normalsize
+ \or{10}{12}\or{\@xipt}{13}\or{\@xiipt}{14}%
+ \or{\@xivpt}{17}\or{\@xviipt}{20}}%
+ \normalsize \linespacing=\baselineskip }
+% \end{macrocode}
+% \subsection{\'Ex\'ecution des options}
+% \begin{macrocode}
+\ExecuteOptions{leqno,centertags,%
+ a4paper,portrait,%
+ 10pt,twoside,onecolumn,%
+ final,francais}
+\ProcessOptions\relax
+\@ifundefined{numberwithin}%
+ {\let\@tempa\relax}%
+ {\let\@tempa\@gobbletwo}
+\@tempa
+\ifx\relax\mathfrak \@xp\@gobbletwo
+ \else \let\mathfrak\relax \fi
+\RequirePackage{amsfonts}\relax
+\RequirePackage{amsmath}\relax
+% \end{macrocode}
+% Il faut aussi supprimer l'espacement avant et apr\`es
+% les points de suspension...
+% \begin{macrocode}
+\def\tdots@{$\m@th\ldots$}
+% \end{macrocode}
+% \section{Titre, premi\`eres pages}
+% \subsection{Titre}
+% \DescribeMacro{\title}
+% Usage~: |\title[|\meta{titre courant}|]{|\meta{titre}|}|. C'est
+% \meta{titre} qui va en table des mati\`eres et \meta{titre courant}
+% sur chaque haut de page.
+%
+% \DescribeMacro{\alttitle}
+% La commande |\alttitle{|\meta{titre dans l'autre langue}|}| sert \`a
+% introduire le titre de l'article dans l'autre langue (anglais/fran\c cais).
+% \begin{macrocode}
+\renewcommand{\title}[2][]{\gdef\shorttitle{#1}\gdef\@title{#2}}
+\edef\title{\@nx\@dblarg
+ \@xp\@nx\csname\string\title\endcsname}
+\let\@title\@empty \let\shorttitle\@empty
+\def\alttitle#1{\gdef\@alttitle{#1}}
+\let\@alttitle\@empty
+% \end{macrocode}
+% \subsection{Auteur(s)}
+% \DescribeMacro{\author}
+% \DescribeMacro{\shortauthor}
+% \begin{macrocode}
+\renewcommand{\author}[2][]{%
+ \ifx\@empty\authors
+ \gdef\shortauthors{#1}\gdef\authors{#2}%
+ \else
+ \g@addto@macro\shortauthors{\and#1}%
+ \g@addto@macro\authors{\and#2}%
+ \fi
+ \g@addto@macro\addresses{\author{#1}}%
+}
+\edef\author{\@nx\@dblarg
+ \@xp\@nx\csname\string\author\endcsname}
+% \end{macrocode}
+% Initialisation des listes
+% \begin{macrocode}
+\let\shortauthors\@empty \let\authors\@empty
+% \end{macrocode}
+% Quelques macros piqu\'ees encore \`a l'AMS pour g\'erer les listes d'auteurs.
+% \begin{macrocode}
+\newcommand{\xandlist}[4]{\@andlista{{#1}{#2}{#3}}#4\and\and}
+\def\@andlista#1#2\and#3\and{\@andlistc{#2}\@ifnotempty{#3}{%
+ \@andlistb#1{#3}}}
+\def\@andlistb#1#2#3#4#5\and{%
+ \@ifempty{#5}{%
+ \@andlistc{#2#4}%
+ }{%
+ \@andlistc{#1#4}\@andlistb{#1}{#3}{#3}{#5}%
+ }}
+\let\@andlistc\@iden
+\newcommand{\nxandlist}[4]{%
+ \def\@andlistc##1{\toks@\@xp{\the\toks@##1}}%
+ \toks@{\toks@\@emptytoks \@andlista{{#1}{#2}{#3}}}%
+ \the\@xp\toks@#4\and\and
+ \edef#4{\the\toks@}%
+ \let\@andlistc\@iden}
+% \end{macrocode}
+% \DescribeMacro{\andify}
+% Les auteurs sont s\'epar\'es par des virgules et le dernier est introduit
+% par |\smfandname| (qui vaut \texttt{et} ou \texttt{and} suivant la langue
+% du texte).
+% \begin{macrocode}
+\newcommand{\andify}{%
+ \nxandlist{\unskip, }{\unskip{} \smfandname~}{\unskip{} \smfandname~}}
+\def\and{\unskip{} \smfandname\ \ignorespaces}
+% \end{macrocode}
+% \subsection{Adresses}
+% \DescribeMacro{\address}
+% La macro |\address| contient l'adresse de l'auteur,
+% \DescribeMacro{\curraddr}
+% la macro |\curraddr| son adresse courante (inutilis\'ee).
+% \DescribeMacro{\urladdr}
+% La macro |\urladdr| contient son URL et
+% \DescribeMacro{\email}
+% la macro |\urladdr| son adresse m\'el.
+% Ce sont les m\^emes noms que dans les classes AMS.
+% Ces macros se contentent de rajouter ce qu'il faut \`a la macro
+% |\addresses|.
+% \begin{macrocode}
+\let\addresses\@empty \let\thankses\@empty
+\newcommand{\address}[2][]{\g@addto@macro\addresses{\address{#1}{#2}}}
+\newcommand{\curraddr}[2][]{\g@addto@macro\addresses{\curraddr{#1}{#2}}}
+\newcommand{\email}[2][]{\g@addto@macro\addresses{\email{#1}{#2}}}
+\newcommand{\urladdr}{\bgroup\catcode`\:=12\catcode`\~=12\@urladdr}
+\newcommand{\@urladdr}[2][]{\g@addto@macro\addresses{\urladdr{#1}{#2}}\egroup}
+% \end{macrocode}
+% \DescribeMacro{\addresses}
+% \DescribeMacro{\@setaddresses}
+% Suivant la classe, on compose l'addresse. Dans les articles, elle est en
+% fin de texte, ligne par ligne.
+% \begin{macrocode}
+%<*article>
+\def\@setaddresses{\par\nobreak
+ \begingroup
+ \parindent-2em\leftskip2em
+ \rightskip=0pt plus 20pt
+ \emergencystretch .5\textwidth
+ \exhyphenpenalty=-100
+ \interlinepenalty\@M
+ \def\baselinestretch{1}\normalfont\footnotesize
+ \def\\{\unskip, \penalty-10\ignorespaces}%
+ \def\cond@bullet {{\setbox0\hbox{\quad$\bullet$\quad}%
+ \hskip 0pt plus 3cm\penalty -30\hskip 0pt plus -3cm
+ \cleaders \copy0 \hskip\wd0 }}%
+ \def\author##1{\ifhmode\par\nobreak \vskip\smallskipamount\fi
+ {\scshape ##1}\let\address\firstaddress}%
+ \def\firstaddress##1##2{\unskip, \let\address\otheraddress
+ \penalty-20\ignorespaces##2}%
+ \def\otheraddress##1##2{\cond@bullet \ignorespaces##2}%
+ \def\curraddr{\address}%
+ \let\address\firstaddress
+ \def\email##1##2{\@ifnotempty{##2}%
+ {\cond@bullet
+ \hbox{\itshape E-mail~:}~{\ttfamily\ignorespaces ##2}}}%
+ \def\urladdr##1##2{\@ifnotempty{##2}%
+ {\cond@bullet
+ {\itshape Url~:}~{\ttfamily\ignorespaces ##2}\par}}%
+ \addresses
+ \par\endgroup
+}
+%</article>
+% \end{macrocode}
+% Dans les livres, elle est plus a\'er\'ee.
+% \begin{macrocode}
+%<*book>
+\def\@setaddresses{\par\nobreak
+ \begingroup
+ \raggedright
+ \interlinepenalty\@M
+ \def\baselinestretch{1}\par
+ \normalfont
+ \def\\{\unskip, \penalty-5\ignorespaces}%
+ \def\author##1{\nobreak \bigskip
+ {\itshape ##1}\par}%
+ \def\address##1##2{\smallskip\nobreak
+ \ignorespaces##2\unskip.\par}%
+ \let\curraddr\address
+ \def\email##1##2{\@ifnotempty{##2}{\smallskip\nobreak
+ {\itshape E-mail~:} {\ttfamily\ignorespaces##2}\par}}%
+ \def\urladdr##1##2{\@ifnotempty{##2}{\smallskip\nobreak
+ {\itshape Url~:} {\ttfamily\ignorespaces##2}\par}}%
+ \addresses
+ \endgroup
+}
+%</book>
+% \end{macrocode}
+% \subsection{Remerciements}
+% \DescribeMacro{\thanks}
+% Pour les reconnaissances de dettes\dots
+% \begin{macrocode}
+\renewcommand{\thanks}[1]{\g@addto@macro\thankses{\thanks{#1}}}
+\def\@setthanks{\def\thanks##1{\par##1\@addpunct{{\upshape.}}}\thankses}
+% \end{macrocode}
+% \subsection{Date}
+% \DescribeMacro{\date}
+% \begin{macrocode}
+\let\@date\@empty
+\def\@setdate{{\itshape\@date\@@par}} %% enleve le \@addpunct. avant \@@par
+% \end{macrocode}
+% \subsection{D\'edicace}
+% \begin{macrocode}
+\def\dedicatory#1{\def\@dedicatory{#1}}
+\let\@dedicatory\@empty
+%</article|book>
+%<*article>
+\def\dedicatoryfont{\normalfont\footnotesize\itshape}
+\def\@setdedicatory{%
+ \begingroup
+ \def\signature##1{\nobreak\hskip 2em plus 1fil
+ \penalty-5\hbox{}\nobreak\hfil\parfillskip=0pt
+ \mbox{\upshape ##1}\par}
+ \raggedleft
+ \dedicatoryfont
+ \@dedicatory\par
+ \endgroup}
+%</article>
+% \end{macrocode}
+% Dans les livres, elle est mise en page sur une page seule (normalement,
+% une page droite).
+% \begin{macrocode}
+%<*book>
+\def\dedicatoryfont{\normalfont\itshape}
+\def\@setdedicatory{%
+ \ifx\@dedicatory\@empty\else
+ \begingroup
+ \def\signature##1{\nobreak\hskip 2em plus 1fil
+ \penalty-5\hbox{}\nobreak\hfil\parfillskip=0pt
+ \mbox{\upshape ##1}\par}
+ \clearpage\thispagestyle{empty}
+ \hbox{}\vfil
+ \leftskip=.2\textwidth
+ \dedicatoryfont
+ \@dedicatory
+ \par\vfil
+ \cleardoublepage
+ \endgroup
+ \fi}
+%</book>
+% \end{macrocode}
+% \subsection{Mots-clefs}
+% \DescribeMacro{\keywords}
+% La macro |\keywords| prend une liste de mots clefs dans la langue
+% principale de l'article.
+% \begin{macrocode}
+%<*article|book>
+\def\keywords#1{\def\@keywords{#1}}
+\let\@keywords=\@empty
+\def\@setkeywords{%
+ \abstractfont
+ {\abstractheadfont\keywordsname\MakePointrait}\enspace\ignorespaces
+ \@keywords\@addpunct{{\upshape.}}}
+% \end{macrocode}
+% \DescribeMacro{\keywords}
+% La macro |\altkeywords| prend une liste de mots clefs dans la langue
+% secondaire de l'article.
+% \begin{macrocode}
+\def\altkeywords#1{\def\@altkeywords{#1}}
+\let\@altkeywords=\@empty
+\def\@setaltkeywords{%
+ \abstractfont
+ {\abstractheadfont\altkeywordsname\MakePointrait}\enspace\ignorespaces
+ \@altkeywords\@addpunct{{\upshape.}}}
+% \end{macrocode}
+% \subsection{Classification AMS}
+% \begin{macrocode}
+\def\subjclass#1{\def\@subjclass{#1}}
+\let\@subjclass=\@empty
+\def\@setsubjclass{%
+ \abstractfont
+ {\abstractheadfont\subjclassname\MakePointrait}\enspace\ignorespaces
+ \@subjclass\@addpunct{{\upshape.}}}
+% \end{macrocode}
+% \subsection{Traducteur(s)}
+% \begin{macrocode}
+\def\translator#1{%
+ \ifx\@empty\@translators
+ \gdef\@translators{#1}\else
+ \g@addto@macro\@translators{\and#1}\fi}
+\let\@translators\@empty
+\def\@settranslators{\par
+ \begingroup
+ \translatedby\ \andify\@translators
+ {\itshape \ignorespaces\@translators} \@@par
+ \endgroup}
+% \end{macrocode}
+% \subsection{ISBN, ISSN}
+% \begin{macrocode}
+\def\ISBN#1{\def\@isbn{#1}}
+\def\ISSN#1{\def\@issn{#1}}
+\let\@isbn\@empty
+\let\@issn\@empty
+% \end{macrocode}
+% \subsection{R\'esum\'es}
+% \DescribeMacro{\abstractheadfont}
+% \DescribeMacro{\abstractfont}
+% \DescribeMacro{\abstractmargin}
+% Quelques param\`etres g\'en\'eraux pour commencer.
+% |\abstractheadfont| et |\abstractfont| sont des macros qui sp\'ecifient la
+% police utilis\'ee pour les ent\^etes de r\'esum\'es et les r\'esum\'es.
+% \begin{macrocode}
+\def\abstractheadfont{\bfseries\smf@boldmath\itshape}
+%<article>\def\abstractfont{\def\baselinestretch{1}\footnotesize}
+%<book>\def\abstractfont{\normalfont}
+% \end{macrocode}
+% Le r\'esum\'e est mis en page avec des marges \'elargies de |\abstractmargin|.
+% \begin{macrocode}
+\newdimen\abstractmargin
+%<article>\abstractmargin1cm
+%<book>\abstractmargin0pt
+% \end{macrocode}
+% \subsubsection{Une macro tordue}
+% \DescribeEnv{@genabstract}
+% L'environnement |@genabstract| est un peu compliqu\'e. Son but premier est
+% d'attrapper tout ce qui se trouve entre un |\begin{abstract}| et un
+% |\end{abstract}| dans une macro |\@abstract|.
+% Mais je ne sais plus pourquoi j'ai invent\'e \c ca !!!
+% Actuellement, cela permet \`a |\abstract| et |\altabstract| d'avoir des
+% d\'efinitions plus courtes.
+% C'est aussi r\'eutilis\'e pour les r\'esum\'es courts.
+% \begin{macrocode}
+\newtoks\@genabs\newtoks\@genabstokb
+\newenvironment{@genabstract}[1]{%
+ \gdef\@genabstext{}\def\smf@tempb{#1}\@getgenabstext
+}{%
+ \@xp\@xp\global\@xp\let\csname @\smf@tempb\endcsname \@genabstext}
+
+\long\def\@getgenabstext#1\end #2{%
+ \@genabs=\expandafter{\@genabstext}
+ \def\@tempa{#2}\ifx\@tempa\smf@tempb
+ \@genabstokb={#1}%
+ \edef\@next{\noexpand\end{@genabstract}\noexpand\end{\smf@tempb}}%
+ \else
+ \@genabstokb={#1\end{#2}}%
+ \let\@next\@getgenabstext
+ \fi
+ \global\edef\@genabstext {\the\@genabs \the\@genabstokb}%
+ \@next}
+
+\def\@setgenabstract#1{%
+\@xp\ifx\csname @#1\endcsname\@empty\else
+ \vbox\bgroup
+ \abstractfont
+ \list{}{\labelwidth\z@
+ \leftmargin\abstractmargin \rightmargin\leftmargin
+ \listparindent\normalparindent
+ \itemindent\z@
+ % \itemindent\normalparindent % \advance\itemindent\labelsep
+ \parsep\z@ \@plus\p@
+ \let\fullwidthdisplay\relax}%
+ \sbox\@tempboxa{\csname @set#1head\endcsname}%
+ \ifdim\wd\@tempboxa>.7\textwidth \smf@skippttrue\fi
+ \item\relax
+ {\csname @set#1head\endcsname
+ \ifsmf@skippt
+ \global\smf@skipptfalse
+ \@@par\nobreak
+ \else
+ \pointrait\nobreak
+ \fi}
+ \ignorespaces
+ \csname @#1language\endcsname
+ \csname @#1\endcsname
+ \endlist
+ \egroup
+\fi}
+% \end{macrocode}
+% \subsubsection{R\'esum\'e principal}
+% \begin{macrocode}
+\def\@abstract{}
+\def\@abstractlanguage{\@smflanguage}
+\newenvironment{abstract}{%
+ \ifx\maketitle\relax
+ \ClassWarning{\@classname}{Abstracts should precede
+ \protect\maketitle\space in SMF documentclasses; reported}%
+ \fi
+ \begin{@genabstract}{abstract}%
+}{%
+% \end{macrocode}
+% Si |\@setabstract| est |\relax|, cela signifie que |\maketitle| est pass\'e
+% par l\`a. Dans ce cas, on met tout de suite le r\'esum\'e
+% principal.
+% \begin{macrocode}
+ \ifx\@setabstract\relax \@setabstracta\par\bigskip \fi
+}
+% \end{macrocode}
+% Enfin, la macro |\@setabstracthead| pr\'ecise comment composer l'ent\^ete du
+% r\'esum\'e.
+% \begin{macrocode}
+\def\@setabstracthead{\abstractheadfont\abstractname}
+% \end{macrocode}
+% On introduit |\ifsmfabstracta| qui conditionne l'affichage du r\'esum\'e
+% dans la langue de l'article : dans des ouvrages collectifs notamment, on
+% peut vouloir mettre les r\'esum\'es ensemble.
+% \begin{macrocode}
+\newif\ifsmfabstracta\smfabstractatrue
+\def\@setabstract{\ifsmfabstracta
+ \@setabstracta
+ \global\let\@setabstract\relax
+ \fi}
+\def\@setabstracta{\@setgenabstract{abstract}}
+% \end{macrocode}
+% \subsubsection{R\'esum\'e dans l'autre langue}
+% \begin{macrocode}
+\def\@altabstract{}
+\def\@altabstractlanguage{\@smfaltlanguage}
+\newenvironment{altabstract}{%
+ \ifx\maketitle\relax
+ \ClassWarning{\@classname}{Abstracts should precede
+ \protect\maketitle\space in SMF documentclasses; reported}%
+ \fi
+ \begin{@genabstract}{altabstract}%
+}{%
+% \end{macrocode}
+% Si |\@setaltabstract| est |\relax|, on met tout de suite le resum\'e dans
+% l'autre langue
+% \begin{macrocode}
+ \ifx\@setaltabstract\relax \@setaltabstracta\par\bigskip \fi
+}
+% \end{macrocode}
+% Enfin, la macro |\@setaltabstracthead| pr\'ecise comment composer l'ent\^ete du
+% r\'esum\'e alternatif.
+% \begin{macrocode}
+\def\@setaltabstracthead{\abstractheadfont \altabstractname
+ \ifx\@alttitle\@empty\else\
+ {\@altabstractlanguage\textup(\emph{\@alttitle}\textup)}\fi}
+% \end{macrocode}
+% On introduit |\ifsmfaltabstracta| qui est le pendant de
+% |\ifsmfabstracta|.
+% \begin{macrocode}
+\newif\ifsmfaltabstracta\smfaltabstractatrue
+\def\@setaltabstract{\ifsmfaltabstracta
+ \@setaltabstracta
+ \global\let\@setaltabstract\relax
+ \fi}
+\def\@setaltabstracta{\@setgenabstract{altabstract}}
+% \end{macrocode}
+% \subsection{Page de titre~?}
+% \begin{macrocode}
+\def\titlepage{%
+ \cleardoublepage
+ \thispagestyle{empty}\setcounter{page}{0}}
+\def\endtitlepage{\newpage}
+% \end{macrocode}
+% \subsection{Affichage de la page de titre}
+% L'option |draft| ou une option |notitlepage| devrait permettre
+% d'all\'eger cette pr\'esentation, notamment lorsqu'on ne pr\'epare pas la
+% version finale.
+% \DescribeMacro{\maketitle}
+% \DescribeMacro{\@maketitlehook}
+% Cette macro est g\'en\'eriques. Elles se contente de s\'electionner un symbole
+% de note vide et appelle |\@maketitle|. Pour finir, elle appelle
+% |\@endmaketitlehook|.
+% \begin{macrocode}
+\def\maketitle{\par \@topnum\z@
+ % this prevents figures from falling at the top of page 1
+ \begingroup
+ \let\@makefnmark\relax \let\@thefnmark\relax
+ \@maketitle
+ \@endmaketitlehook
+ \endgroup
+ \c@footnote\z@
+ \let\maketitle\relax \let\@maketitle\relax }
+\def\@endmaketitlehook{}
+%</article|book>
+% \end{macrocode}
+% \subsection{Dans les articles}
+% \DescribeMacro{\smf@journalhead}
+% |\smf@journalhead| est vide dans les classes standard. Dans la version
+% finale, c'est une macro qu'appelle |\@maketitle| pour afficher
+% les r\'ef\'erences de l'article en haut
+% de la premi\`ere page.
+% \begin{macrocode}
+%<*article>
+\def\smf@journalhead{}
+\def\smf@authorfont{}
+\def\@maketitle{\cleardoublepage\thispagestyle{copyright}
+ \begingroup
+ \uppercasenonmath\shorttitle
+ \ifx\@empty\shortauthors \let\shortauthors\shorttitle
+ \else \uppercasenonmath\shortauthors \andify\shortauthors \fi
+ \toks@\@xp{\shortauthors}\@temptokena\@xp{\shorttitle}%
+ \edef\@tempa{\@nx\markboth{\the\toks@}{\the\@temptokena}}\@tempa
+ \topskip\z@skip
+ \vtop to 55 mm{%
+ \parindent=0pt
+ \hrule
+ \medskip
+ {\abstractfont\smf@journalhead\par}\vfil
+ \begin{center}
+ \def\baselinestretch{1.2}\large\vfil
+ {\bfseries\smf@boldmath\MakeUppercase\@title\par}
+ \vfil
+ \ifx\@empty\smfbyname\else
+ {\smf@byfont\smfbyname\ifsmf@byauthor\par\vfil\else\ \fi}%
+ \fi
+ {\smf@authorfont
+ \edef\smfandname{{\noexpand\normalfont \smfandname}}
+ \andify\authors\authors\par}
+ \vfil \vrule height .4pt width .3\textwidth \vfil
+ \end{center}}
+ \@maketitlehook
+ \par\bigskip
+ \ifx\@empty\@dedicatory\else\@setdedicatory\medskip\fi
+ \@setabstract\par\smallskip\@setaltabstract\par
+ \bigskip\bigskip
+ \endgroup}
+% \end{macrocode}
+% \DescribeMacro{\ifsmf@byauthor}
+% \DescribeMacro{\smf@byfont}
+% |\ifsmf@byauthor| est vrai ou faux, suivant que l'on veut que dans
+% le titre, les auteurs soient pr\'ec\'ed\'es d'un {\og par\fg}.
+% \begin{macrocode}
+\newif\ifsmf@byauthor\smf@byauthortrue
+\def\smf@byfont{\normalfont\itshape}
+% \end{macrocode}
+% \DescribeMacro{\@maketitlehook}
+% Pour que les styles auxiliaires puissent facilement ins\'erer des choses
+% dans le titre. Par d\'efaut, c'est l'affichage de la classification,
+% des mots-clefs et des subventions.
+% \begin{macrocode}
+\def\@maketitlehook{%
+ \ifx\@empty\@subjclass\else\@footnotetext{\@setsubjclass}\fi
+ \ifx\@empty\@keywords\else\@footnotetext{\@setkeywords}\fi
+ \ifx\@empty\thankses\else\def\par{\let\par\@par}\@footnotetext{\@setthanks}\fi
+}
+% \end{macrocode}
+% \DescribeMacro{\smf@enddoc}
+% Adresses, date, traducteurs sont report\'ees en fin d'article,
+% lorsque la macro |\smf@enddoc| est ex\'ecut\'ee.
+% \begin{macrocode}
+\def\smf@enddoc{%
+ \par\vskip 2\bigskipamount
+ \bgroup
+ \def\baselinestretch{1}\normalfont\footnotesize
+ \raggedright
+ \hrule width .2\textwidth\par\bigskip
+ \ifx\@empty\@date \else \@setdate\medskip \fi
+ \ifx\@empty\@translators\else \@settranslators\medskip \fi
+ \ifx\@empty\addresses \else \@setaddresses \fi
+ \par\egroup}
+\AtEndDocument{\smf@enddoc}
+%</article>
+% \end{macrocode}
+% \subsection{Dans les livres}
+% C'est plus compliqu\'e car les pages de titre sont au nombre de 4.
+% La premi\`ere contient titre et auteurs.
+% \begin{macrocode}
+%<*book>
+\def\smf@titlei{\clearpage\thispagestyle{empty}
+ \vspace*{-2cm}\enlargethispage{2cm}
+ \topskip\z@skip
+ \vfil
+ \begin{raggedleft}
+ \Large \bfseries
+ \def\and{\par\medskip}\authors\par
+ \end{raggedleft}
+ \vfil
+ \hrule height 1pt
+ \vfil
+ \begin{raggedright}
+ \huge\bfseries\smf@boldmath
+ \MakeUppercase\@title\par
+ \vfil
+ \hrule height 1pt
+ \vfil\vfil
+ \end{raggedright}
+ \vfilneg
+}
+% \end{macrocode}
+% La seconde contient adresses, classification, mots-clefs,
+% traducteurs, remerciements et la date.
+% \begin{macrocode}
+\def\smf@titleii{\clearpage
+ \thispagestyle{empty}
+ \ifx\@empty\addresses\else \@setaddresses\fi
+ \vfill
+ \ifx\@empty\@subjclass
+ \ifx\@empty\@keywords\else
+ \hrule\medskip\@setkeywords\medskip\hrule\vfill\fi
+ \else
+ \hrule\medskip\@setsubjclass\par\medskip
+ \ifx\@empty\@keywords\else\@setkeywords\par\medskip\fi
+ \hrule\vfill
+ \fi
+ \ifx\@empty\@translators\else\@settranslators\bigskip\fi
+ \ifx\@empty\thankses\else\@setthanks\par\fi
+ \ifx\@empty\@date\else\@setdate\fi
+ \vfilneg
+}
+% \end{macrocode}
+% La troisi\`eme reprend le titre et les auteurs et affiche les deux r\'esum\'es.
+% J'avais pr\'evu qu'on puisse ins\'erer une image en haut de la page, comme
+% dans le \emph{Panoramas et Synth\`eses} de th\'eorie de Hodge.
+% \begin{macrocode}
+\def\smf@titleiii{%
+ \clearpage\thispagestyle{copyright}
+ \markboth{\@nx\shortauthors}{\@nx\shorttitle}
+ %% INSERER UNE IMAGE
+ \null
+ \vskip 12\medskipamount plus 8\medskipamount
+ \begin{center}\Large\bfseries\smf@boldmath
+ {\MakeUppercase\@title\par}
+ \vskip 4\medskipamount plus 2\medskipamount
+ \def\and{,\ \penalty-1}\authors\par
+ \end{center}
+ \vskip 8\medskipamount plus 4 \medskipamount
+ \@setabstract\par
+ \vskip 1\medskipamount plus 1\medskipamount
+ \penalty-100
+ \@setaltabstract\par
+}
+% \end{macrocode}
+% \DescribeMacro{\@maketitle}
+% Et le titre est constitu\'e des pages 1 et 2, puis d'une d\'edicace
+% (cf. |\@setdedicatory|) et de la page 3.
+% \begin{macrocode}
+\def\@maketitle{\cleardoublepage
+ \begingroup
+ \parindent\z@
+ \smf@titlei \smf@titleii \@setdedicatory \smf@titleiii \cleardoublepage
+ \endgroup}
+%</book>
+% \end{macrocode}
+% \section{Environnements}
+% \subsection{trivlist}
+% \DescribeEnv{trivlist}
+% L'environnement \texttt{trivlist} est \`a peu pr\`es standard.
+% \begin{macrocode}
+%<*article|book>
+\def\trivlist{\parsep\parskip\@nmbrlistfalse
+ \@trivlist \labelwidth\z@ \leftmargin\z@
+ \itemindent\z@
+ \let\@itemlabel\@empty
+ \def\makelabel##1{\upshape##1}}
+% \end{macrocode}
+% \subsection{list}
+% \DescribeEnv{list}
+% Il me para\^{\i}t souhaitable de supprimer |\listI| (manque de sym\'etrie
+% surprenant).
+% \begin{macrocode}
+\newskip\listisep \listisep\smallskipamount
+\def\@listi{\leftmargin\leftmargini \parsep\z@skip
+ \topsep\listisep \itemsep\z@skip
+ \listparindent\normalparindent}
+\def\@listii{\leftmargin\leftmarginii
+ \labelwidth\leftmarginii \advance\labelwidth-\labelsep
+ \topsep\z@skip \parsep\z@skip \partopsep\z@skip \itemsep\z@skip}
+\def\@listiii{\leftmargin\leftmarginiii
+ \labelwidth\leftmarginiii \advance\labelwidth-\labelsep}
+\def\@listiv{\leftmargin\leftmarginiv
+ \labelwidth\leftmarginiv \advance\labelwidth-\labelsep}
+\def\@listv{\leftmargin\leftmarginv
+ \labelwidth\leftmarginv \advance\labelwidth-\labelsep}
+\def\@listvi{\leftmargin\leftmarginvi
+ \labelwidth\leftmarginvi \advance\labelwidth-\labelsep}
+% \end{macrocode}
+% Pour compatibilit\'e, avant de voir~:
+% \begin{macrocode}
+\let\@listI\@listi
+% \end{macrocode}
+% \subsection{enumerate}
+% \DescribeEnv{enumerate}
+% \begin{macrocode}
+\def\enumerate{\ifnum \@enumdepth >3 \@toodeep\else
+ \advance\@enumdepth \@ne
+ \edef\@enumctr{enum\romannumeral\the\@enumdepth}\list
+ {\csname label\@enumctr\endcsname}{\usecounter
+ {\@enumctr}\def\makelabel##1{\hss\llap{\upshape##1}}}\fi}
+\def\labelenumi{\theenumi.}
+\def\theenumi{\@arabic\c@enumi}
+\def\labelenumii{(\theenumii)}
+\def\theenumii{\@alph\c@enumii}
+\def\p@enumii{\theenumi}
+\def\labelenumiii{(\theenumiii)}
+\def\theenumiii{\@roman\c@enumiii}
+\def\p@enumiii{\theenumi(\theenumii)}
+\def\labelenumiv{(\theenumiv)}
+\def\theenumiv{\@Alph\c@enumiv}
+\def\p@enumiv{\p@enumiii\theenumiii}
+% \end{macrocode}
+% \subsection{itemize}
+% \DescribeEnv{itemize}
+% \begin{macrocode}
+\def\itemize{%
+ \ifnum\@itemdepth>3 \@toodeep
+ \else \advance\@itemdepth\@ne
+ \edef\@itemitem{labelitem\romannumeral\the\@itemdepth}%
+ \list{\csname\@itemitem\endcsname}%
+ {\def\makelabel##1{\hss\llap{\upshape##1}}}%
+ \fi}
+\def\labelitemi{\bfseries --}% \upshape already done by \itemize
+\def\labelitemii{$\m@th\bullet$}
+\def\labelitemiii{$\m@th\ast$}
+\def\labelitemiv{$\m@th\cdot$}
+% \end{macrocode}
+% \subsection{verse}
+% \DescribeEnv{verse}
+% Le texte est compos\'e avec des marges augment\'ees de 1.5\textit{em} et un
+% alin\'ea n\'egatif de $-1.5$\textit{em}.
+% \begin{macrocode}
+\def\verse{\let\\\@centercr
+ \list{}{\itemsep\z@ \itemindent -1.5em\listparindent\itemindent
+ \rightmargin\leftmargin \advance\leftmargin 1.5em\relax}\item[]}
+\let\endverse=\endlist
+% \end{macrocode}
+% \subsection{quotation}
+% \DescribeEnv{quotation}
+% Les marges droites et gauches sont fix\'ees \`a 3\textit{pc}, l'espacement
+% entre paragraphes quasiment nul. Les alin\'eas ne changent pas.
+% \begin{macrocode}
+\def\quotation{\list{}{%
+ \leftmargin3pc \listparindent\normalparindent
+ \itemindent\z@
+ \rightmargin\leftmargin \parsep\z@ \@plus\p@}%
+ \item[]}
+\let\endquotation=\endlist
+% \end{macrocode}
+% \DescribeEnv{quote}
+% Marges droites et gauches sont \'egales \`a la valeur fix\'ee par
+% le niveau de profondeur de l'environnement \texttt{list}.
+% \begin{macrocode}
+\def\quote{\list{}{\rightmargin\leftmargin}\item[]}
+\let\endquote=\endlist
+% \end{macrocode}
+% \subsection{description}
+% \DescribeEnv{description}
+% Il est hideux : c'est une liste, le label est en gras suivi d'un
+% deux-points. Les marges sont augment\'ees et le premier alin\'ea est n\'egatif.
+% Je ne suis pas s\^ur que les param\`etres soient robustes.
+% \begin{macrocode}
+\newcommand{\descriptionlabel}[1]{\hspace\labelsep
+ \upshape\bfseries\smf@boldmath #1\unskip\ :}
+\newcommand{\description}{\list{}{%
+ \advance\leftmargini6\p@ \itemindent-12\p@
+ \labelwidth\z@ \let\makelabel\descriptionlabel}}
+\let\enddescription=\endlist
+% \end{macrocode}
+% \subsection{Ajustement des param\`etres}
+% Ainsi, les marges sont ajust\'ees au d\'ebut de la mise en page du
+% document (suivant les polices, casses utilis\'ees).
+% \begin{macrocode}
+\AtBeginDocument{%
+ \labelsep=5pt
+ \settowidth\leftmargini{\labelenumi\hskip\labelsep}%
+ \advance\leftmargini by \normalparindent
+ \settowidth\leftmarginii{\labelenumii\hskip\labelsep}%
+ \advance\leftmarginii by 15pt
+ \settowidth\leftmarginiii{\labelenumiii\hskip\labelsep}%
+ \advance\leftmarginiii by 12pt
+ \settowidth\leftmarginiv{\labelenumiv\hskip\labelsep}%
+ \advance\leftmarginiv by 10pt
+ \leftmarginv=10pt
+ \leftmarginvi=10pt
+ \leftmargin=\leftmargini
+ \labelwidth=\leftmargini \advance\labelwidth-\labelsep
+ \@listi}
+% \end{macrocode}
+% \section{Chapitres et sections}
+% \subsection{Macros g\'en\'erales}
+% \DescribeMacro{\@startsection}
+% La macro |\@startsection| prend 6 arguments.
+% \begin{enumerate}
+% \item
+% Si |#1| vaut \texttt{section}, on utilise le compteur |\c@section|, les
+% marques |\sectionmark|, etc.
+% \item
+% |#2| contient le niveau de profondeur de la section. S'il
+% est sup\'erieur \`a |\c@secnumdepth|, il n'y pas de num\'eros, s'il est
+% sup\'erieur \`a |\c@tocdepth|, l'entr\'ee ne va pas dans la toc.
+% \item
+% |\#3| est le d\'ecalage horizontal avant l'affichage du titre.
+% \item
+% |#4| est l'espacement vertical avant l'affichage de la section.
+% \item
+% Si |#5| est positif, il contient l'espacement vertical apr\`es la section,
+% s'il est n\'egatif, sa valeur absolue est l'espacement horizontal et le
+% titre n'est pas suivi d'un retour \`a la ligne.
+% \item
+% |#6| permet les changements de polices. Il peut se terminer par
+% |\MakeUppercase| afin que le titre soit en majuscules.
+% \end{enumerate}
+% Les environnements standard (|\section|, etc., voir plus bas) d\'efinissent
+% ces 6 premiers param\`etres.
+%
+% Si ces six arguments sont suivis d'une ast\'erisque \texttt{*}, le
+% param\`etre |#2| est mis \`a |\@m| (1000). Cela a l'effet de supprimer la
+% num\'erotation et l'entr\'ee de table des mati\`eres.
+%
+% \begin{macrocode}
+\def\@startsection#1#2#3#4#5#6{%
+ \if@noskipsec \leavevmode \fi
+ \par \@tempskipa #4\relax
+ \@afterindenttrue
+ \ifdim \@tempskipa <\z@ \@tempskipa -\@tempskipa \@afterindentfalse\fi
+ \if@nobreak \everypar{}\else
+ \addpenalty\@secpenalty\addvspace\@tempskipa\fi
+ \@ifstar{\@dblarg{\@sect{#1}{\@m}{#3}{#4}{#5}{#6}}}%
+ {\@dblarg{\@sect{#1}{#2}{#3}{#4}{#5}{#6}}}%
+}
+% \end{macrocode}
+% \DescribeMacro{\@seccntformat}
+% \begin{macrocode}
+\def\@seccntformat#1{%
+ \protect\textup{\protect\@secnumfont
+ \csname the#1\endcsname
+ \protect\@secnumpunct
+ }%
+}
+% \end{macrocode}
+% \DescribeMacro{\@secnumfont}
+% \begin{macrocode}
+\def\@secnumfont{\bfseries}
+%</article|book>
+% \end{macrocode}
+% \DescribeMacro{\@sect}
+% Nouvelle version de |\@sect|, reprise des classes Ams.
+% Cependant, il a fallu faire trois adaptations pour traiter le point-trait,
+% permettre de compsoer des titres de section en capitales,
+% et se débrouiller pour que hyperref fonctionne.
+%
+%
+% |\ifsmf@ee| (\emph{empty eight}) dira si l'argument |#8| est vide ou non.
+% Le souci est qu'hyperref le rend toujours non vide.
+% Le test se fera en le composant dans la boîte |\smf@eebox|.
+% Enfin, le compteur |\smf@sf| contient le |\spacefactor| après la composition
+% du titre de section (avant passage éventuel en capitales).
+% \begin{macrocode}
+%<*article|book>
+\newif\ifsmf@ee
+\newbox\smf@eebox
+\newcount\smf@sf
+% \end{macrocode}
+% \begin{macrocode}
+\def\@sect#1#2#3#4#5#6[#7]#8{%
+ \edef\@toclevel{\ifnum#2=\@m 0\else\number#2\fi}%
+ \ifnum #2>\c@secnumdepth \let\@secnumber\@empty
+ \else \@xp\let\@xp\@secnumber\csname the#1\endcsname\fi
+ \@tempskipa #5\relax
+% \end{macrocode}
+% C'est ici qu'on décide une fois pour toute de la vacuité de |#8|.
+% Pour gérer le point-trait après des titres qui se terminent par un
+% signe de ponctuation,
+% on garde aussi une trace du |\spacefactor| après |#8|.
+% \begin{macrocode}
+ \setbox\smf@eebox\hbox{#8\global\smf@sf\the\spacefactor}%
+ \ifdim\wd\smf@eebox>\z@\smf@eefalse\else\smf@eetrue\fi
+% \end{macrocode}
+% On reprend le fil de la macro de l'Ams.
+% \begin{macrocode}
+ \ifnum #2>\c@secnumdepth
+ \let\@svsec\@empty
+ \else
+ \refstepcounter{#1}%
+ \edef\@secnumpunct{%
+ \ifdim\@tempskipa>\z@ % not a run-in section heading
+ \ifsmf@ee\else .\@nx\enspace\fi
+ \else
+ \ifsmf@ee \else .\@nx\enspace\fi
+ \fi}%
+ \ifsmf@ee
+ \ifnum #2=\tw@ \def\@secnumfont{\bfseries}\fi
+ \fi
+ \protected@edef\@svsec{%
+ \ifnum#2<\@m
+ \@ifundefined{#1name}{}{%
+ \ignorespaces\csname #1name\endcsname\space
+ }%
+ \fi
+ \@seccntformat{#1}%
+ }%
+ \fi
+ \ifdim \@tempskipa>\z@ % then this is not a run-in section heading
+% \end{macrocode}
+% On reprend l'ancienne formulation qui permet que |#6| se termine
+% par |\MakeUppercase|.
+% \begin{macrocode}
+ \begingroup #6{\relax
+ \@hangfrom{\hskip #3\relax\@svsec}{\interlinepenalty\@M #8\@@par}}%
+ \endgroup
+% \end{macrocode}
+% Dans la classe article de l'AMS,
+% les titres de section n'apparaissent pas dans les titres courants ;
+% ici, on supprime cette particularité,
+% il est toujours possible de rendre |\sectionmark| égal à |\@gobble|.
+% \begin{macrocode}
+ \csname #1mark\endcsname{#7}%
+% \end{macrocode}
+% \begin{macrocode}
+ \ifnum#2>\@m \else \@tocwrite{#1}{#8}\fi
+ \else
+% \end{macrocode}
+% Lorsque |#8| n'est pas vide, on rétablit le |\spacefactor|
+% qui pourrait avoir été perturbé par le passage en capitales.
+% \begin{macrocode}
+ \ifsmf@ee
+ \def\@svsechd{#6{\hskip #3\@svsec\unskip}\MakePointrait
+ \ifnum#2>\@m \else \@tocwrite{#1}{#8}\fi }%
+ \else
+ \def\@svsechd{#6{\hskip #3\@svsec\ignorespaces #8}\unskip
+ \spacefactor\smf@sf\MakePointrait%
+ \ifnum#2>\@m \else \@tocwrite{#1}{#8}\fi }%
+ \fi
+\fi
+ \global\@nobreaktrue
+ \@xsect{#5}}
+% \end{macrocode}
+% \subsection{Profondeur de num\'erotation}
+% \begin{macrocode}
+\setcounter{secnumdepth}{5}
+% \end{macrocode}
+% \subsection{D\'efinition des compteurs de sections}
+% \begin{macrocode}
+\newcounter{part}
+%<book>\newcounter{chapter}
+%<book>\newcounter{section}[chapter]
+%<article>\newcounter{section}
+\newcounter{subsection}[section]
+\newcounter{subsubsection}[subsection]
+\newcounter{paragraph}[subsubsection]
+% \end{macrocode}
+% ... et leur style par d\'efaut.
+% \begin{macrocode}
+\renewcommand\thepart {\Roman{part}}
+%<book>\renewcommand\thechapter {\arabic{chapter}}
+%<book>\renewcommand\thesection {\thechapter.\arabic{section}}
+%<article>\renewcommand\thesection {\arabic{section}}
+\renewcommand\thesubsection{\thesection.\arabic{subsection}}
+\renewcommand\thesubsubsection
+ {\thesubsection.\arabic{subsubsection}}
+\renewcommand\theparagraph {\thesubsubsection.\arabic{paragraph}}
+%</article|book>
+% \end{macrocode}
+% \subsection{Partie}
+% \begin{macrocode}
+%<*article>
+\def\part{\@startsection{part}{1}%
+ \z@{3\linespacing\@plus\linespacing}{2\linespacing}%
+ {\centering\normalfont\bfseries\smf@boldmath\MakeUppercase}}
+%</article>
+%<*book>
+\def\part{\cleardoublepage \thispagestyle{empty}%
+ \null\vfil \markboth{}{}\secdef\@part\@spart}
+\def\@part[#1]#2{%
+ \ifnum \c@secnumdepth >-2\relax \refstepcounter{part}%
+ \addcontentsline{toc}{part}{\partname\ \thepart.
+ \protect\enspace\protect\noindent#1}%
+ \else
+ \addcontentsline{toc}{part}{#1}\fi
+ \begingroup
+ \centering
+ \ifnum \c@secnumdepth >-2\relax
+ {\huge\bfseries\smf@boldmath
+ \MakeUppercase{\partname\ \thepart}}
+ \vfil \fi
+ \huge\bfseries\smf@boldmath
+ \MakeUppercase{#1}\par
+ \vfil\vfil
+ \endgroup
+ \newpage\thispagestyle{empty}}
+
+\def\@spart#1{\addcontentsline{toc}{part}{\protect\noindent#1}%
+ \begingroup
+ \centering
+ \huge\bfseries\smf@boldmath
+ \MakeUppercase{#1}\par
+ \vfil\vfil
+ \endgroup
+ \newpage\thispagestyle{empty}}
+% \end{macrocode}
+% \subsection{Chapitre}
+% \DescribeMacro{\chapter}
+% \DescribeMacro{\chapterspace}\DescribeMacro{\chapterheight}
+% La dimension \texttt{chapterheight} ou la macro |\chapterspace|
+% permettent de diminuer l'espace d'un chapitre la taille de l'ent\^ete de
+% ce chapitre. C'est cens\'e \^etre utile avant les tables des mati\`eres
+% notamment, pour \'eviter manuellement quelques orphelines.
+% Si l'on tape |\chapterspace{-1}|, cela permet de gagner une ligne sur la
+% page, on peut aussi taper |\chapterheight -1cm|.
+% \begin{macrocode}
+\newdimen\chapterheight\chapterheight\z@
+\def\chapterspace#1{\global\chapterheight=#1\baselineskip\relax}
+\def\chapter{\cleardoublepage
+ \thispagestyle{empty}\global\@topnum\z@
+ \@afterindenttrue
+ \@ifstar{\@schapter}{\@dblarg\@chapter}}
+\def\@chapter[#1]#2{\refstepcounter{chapter}%
+ \ifnum\c@secnumdepth<\z@ \let\@secnumber\@empty
+ \else \let\@secnumber\thechapter \fi
+ \typeout{\chaptername\space\@secnumber}%
+ \def\@toclevel{0}%
+ \ifx\chaptername\appendixname
+ \@tocwriteb\tocappendix{chapter}{#2}%
+ \else \@tocwriteb\tocchapter{chapter}{#2}\fi
+ \chaptermark{#1}%
+ \addtocontents{lof}{\protect\addvspace{10\p@}}%
+ \addtocontents{lot}{\protect\addvspace{10\p@}}%
+ \@makechapterhead{#2}\@afterheading}
+\def\@schapter#1{\typeout{#1}%
+ \let\@secnumber\@empty
+ \def\@toclevel{0}%
+ \ifx\chaptername\appendixname
+ \@tocwriteb\tocappendix{chapter}{#1}%
+ \else \@tocwriteb\tocchapter{chapter}{#1}\fi
+ \chaptermark{#1}%
+ \addtocontents{lof}{\protect\addvspace{10\p@}}%
+ \addtocontents{lot}{\protect\addvspace{10\p@}}%
+ \@makeschapterhead{#1}\@afterheading}
+\def\@makechapterhead#1{\global\topskip 0pt\relax
+ \advance\chapterheight 6cm
+ \vbox to \chapterheight{\Large\bfseries\smf@boldmath\centering
+ \vskip 0pt plus 0.7fil\relax
+ \ifnum\c@secnumdepth>\m@ne
+ \uppercase\@xp{\chaptername}\enspace\thechapter\par\vskip2pc\fi
+ \MakeUppercase{#1}\par
+ \vfil}\global\chapterheight\z@\relax}
+\def\@makeschapterhead#1{\global\topskip 0pt\relax
+ \advance\chapterheight 6cm
+ \vbox to \chapterheight{\Large\bfseries\smf@boldmath\centering
+ \vskip0pt plus 0.7fil\relax
+ \MakeUppercase{#1}\par
+ \vfil}\global\chapterheight\z@\relax}
+% \end{macrocode}
+% \subsection{Chapitre sp\'ecial}
+% \DescribeMacro{\specialchapter}
+% Permet un chapitre sans titre num\'erot\'e automatiquement du genre
+% `Appendice A' ou `Chapitre 2'.
+% \begin{macrocode}
+\def\specialchapter{\refstepcounter{chapter}%
+ \chapter*{\chaptername\space\thechapter}}
+%</book>
+% \end{macrocode}
+% \subsection{Appendices}
+% \begin{macrocode}
+%<*article>
+\def\appendix{\par
+ \begingroup
+ \def\@elt##1{\global\csname c@##1\endcsname\z@\relax
+ \csname cl@##1\endcsname}
+ \global\c@section\z@
+ \cl@section
+ \endgroup
+ \let\sectionname\appendixname
+ \def\thesection{\@Alph\c@section}}
+%</article>
+%<*book>
+\def\appendix{\par
+ \begingroup
+ \def\@elt##1{\global\csname c@##1\endcsname\z@\relax
+ \csname cl@##1\endcsname}
+ \global\c@chapter\z@
+ \cl@chapter
+ \endgroup
+ \let\chaptername\appendixname
+ \renewcommand\thechapter{\Alph{chapter}}}
+%</book>
+% \end{macrocode}
+% \subsection{Section sp\'eciale}
+% \DescribeMacro{\specialsection}
+% Dans AMS\LaTeX, cette section sp\'eciale permet une s\'eparation non
+% num\'erot\'ee englobant des sections.
+% L\`a, c'est une section usuelle, un peu plus espac\'ee du texte et
+% dont le titre est en majuscules.
+% \begin{macrocode}
+%<*article|book>
+\def\specialsection{\@startsection{section}{1}%
+ \z@{2\linespacing\@plus\linespacing}{.5\linespacing}%
+ {\centering\normalfont\bfseries\smf@boldmath\MakeUppercase}}
+%</article|book>
+% \end{macrocode}
+% \subsection{Section}
+% \begin{macrocode}
+%<*article>
+\def\section{\@startsection{section}{1}%
+ \z@{1.5\linespacing\@plus\linespacing}{.5\linespacing}%
+ {\normalfont\bfseries\smf@boldmath\centering}}
+%</article>
+%<*book>
+\def\section{\@startsection{section}{1}%
+ \z@{1.5\linespacing\@plus\linespacing}{.5\linespacing}%
+ {\normalfont\bfseries\smf@boldmath}}
+%</book>
+%<*article|book>
+\let\sectionname\@empty
+% \end{macrocode}
+% \subsection{Sous-section}
+% On d\'efinit deux sous-sections : |\subsection|, pour laquelle le texte
+% continue, et |\Subsection| pour laquelle le texte est renvoy\'e \`a la
+% ligne.
+% \begin{macrocode}
+\def\subsection{\@startsection{subsection}{2}%
+ \z@{.7\linespacing\@plus.7\linespacing}{-.5em}%
+ {\normalfont\bfseries\smf@boldmath}}
+\def\Subsection{\@startsection{subsection}{2}%
+ \z@{.7\linespacing\@plus.7\linespacing}{.3\linespacing}
+ {\normalfont\bfseries\smf@boldmath}}
+\let\subsectionname\@empty
+% \end{macrocode}
+% \subsection{Sous-sous-section}
+% L\`a encore, il y en a deux.
+% \begin{macrocode}
+\def\subsubsection{\@startsection{subsubsection}{3}%
+ \z@{.4\linespacing}{-.5em}%
+ {\normalfont\itshape}}
+\def\Subsubsection{\@startsection{subsubsection}{3}%
+ \z@{.4\linespacing}{.2\linespacing}%
+ {\normalfont\itshape}}
+\let\subsubsectionname\@empty
+% \end{macrocode}
+% \subsection{Paragraphe}
+% \begin{macrocode}
+\def\paragraph{\@startsection{paragraph}{4}%
+ \z@{.4\linespacing}{-\fontdimen2\font}%
+ {\normalfont\itshape}}
+\let\paragraphname\@empty % ACL
+% \end{macrocode}
+% \subsection{Sous-paragraphe}
+% \begin{macrocode}
+\def\subparagraph{\@startsection{subparagraph}{5}%
+ \z@{.3\linespacing}{-\fontdimen2\font}%
+ \normalfont}
+% \end{macrocode}
+% \subsection{Hauts de pages provoqu\'es par les sections}
+% \begin{macrocode}
+ \def\partrunhead#1#2#3{%
+ \@ifnotempty{#2}
+ {\MakeUppercase{#1 #2}\@ifnotempty{#3}{.\ }}%
+ \@ifnotempty{#3}{\MakeUppercase{#3}}}
+%</article|book>
+%<*book>
+ \let\chapterrunhead\partrunhead
+ \def\indexrunhead#1#2#3{%
+ \@xp\MakeUppercase{#3}}
+%</book>
+%<*article|book>
+\let\sectionrunhead\partrunhead
+% \end{macrocode}
+% \subsection{Re-d\'efinition de \texttt{@Roman}}
+% \begin{macrocode}
+\def\@Roman#1{\@xp\@slowromancap \romannumeral#1@}
+\def\@slowromancap#1{\ifx @#1% then terminate
+ \else
+ \if i#1I\else\if v#1V\else\if x#1X\else\if l#1L\else\if
+ c#1C\else\if m#1M\else#1\fi\fi\fi\fi\fi\fi
+ \@xp\@slowromancap
+ \fi }
+%</article|book>
+% \end{macrocode}
+% \subsection{Exercices}
+% L'AMS pr\'evoyait des macros particuli\`eres pour les exercices,
+% diff\'erentes suivant que les exercices sont dans le cours du texte ou
+% bien en fin de chapitre. Pour l'instant, rien n'est fait hors quelques
+% macros de style `th\'eor\`emes'.
+% \subsection{Subdivisions d'un livre}
+% Cela me para\^{\i}t inutile pour l'instant, mais est standard en
+% \LaTeXe. Il faut ou d\'evelopper l'id\'ee, ou la supprimer.
+% \begin{macrocode}
+%<*book>
+\def\frontmatter{\cleardoublepage\pagenumbering{roman}}
+\def\mainmatter{\cleardoublepage
+ \setcounter{page}{1}\def\baselinestretch{1.1}\normalfont
+ \pagenumbering{arabic}}
+\def\backmatter{\cleardoublepage
+ \def\baselinestretch{1}\normalfont}
+%</book>
+%<*article>
+\def\frontmatter{}
+\def\mainmatter{\def\baselinestretch{1.1}\normalfont}
+\def\backmatter{\def\baselinestretch{1}\normalfont}
+%</article>
+% \end{macrocode}
+% \section{Tables des mati\`eres}
+% \subsection{Param\`etres}
+% \begin{macrocode}
+%<*article|book>
+\newcommand{\@pnumwidth}{1.6em}
+\newcommand{\@tocrmarg}{2.6em}
+\setcounter{tocdepth}{1}
+%</article|book>
+% \end{macrocode}
+% \subsection{Macro g\'en\'erale}
+% Une nouveaut\'e est qu'on \'ecrit la toc dans tous les cas, m\^eme quand
+% elle n'est pas incluse dans la document. C'est important pour
+% \texttt{smfmulti}.
+% \begin{macrocode}
+%<*article>
+\def\@starttoc#1#2{\begingroup
+ \par\removelastskip\vskip\z@skip
+ \@startsection{toc}\@M\z@{\linespacing\@plus\linespacing}%
+ {.5\linespacing}{\centering\normalfont\bfseries}{#2}%
+ \ifx\contentsname#2%
+ \else \addcontentsline{toc}{section}{#2}\fi
+ \list{}{\labelwidth\z@
+ \leftmargin\abstractmargin \rightmargin\leftmargin
+ \listparindent\z@
+ \itemindent\z@
+ \parsep\z@ \@plus\p@
+ \def\baselinestretch{1}\normalfont
+ \let\fullwidthdisplay\relax}%
+ \item\relax
+ \makeatletter
+ \@input{\jobname.#1}%
+ \def\@tempa{toc}\def\@tempb{#1}\ifx\@tempa\@tempb\else
+ \if@filesw
+ \@xp\newwrite\csname tf@#1\endcsname
+ \immediate\@xp\openout\csname tf@#1\endcsname \jobname.#1\relax
+ \fi\fi\par
+ \endlist
+ \global\@nobreakfalse \endgroup
+ \addvspace{32\p@\@plus14\p@}%
+}
+%</article>
+%<*book>
+\def\@starttoc#1#2{\begingroup
+ \cleardoublepage
+ \thispagestyle{empty}\global\@topnum\z@
+ \@afterindenttrue
+ \let\@secnumber\@empty % for \@tocwrite and \chaptermark
+ \ifx\contentsname#2%
+ \else \@tocwrite{chapter}{#2}\fi
+ \typeout{#2}\@xp\chaptermark\@xp{#2}%
+ \@makeschapterhead{#2}\@afterheading
+ \makeatletter
+ \@input{\jobname.#1}%
+ \def\@tempa{toc}\def\@tempb{#1}\ifx\@tempa\@tempb\else
+ \if@filesw
+ \@xp\newwrite\csname tf@#1\endcsname
+ \immediate\@xp\openout\csname tf@#1\endcsname \jobname.#1\relax
+ \fi\fi
+ \global\@nobreakfalse \endgroup
+ \newpage }
+%</book>
+% \end{macrocode}
+% \subsection{D\'efinitions particuli\`eres}
+% \begin{macrocode}
+%<*article|book>
+\def\tableofcontents{\@starttoc{toc}\contentsname
+ \let\tableofcontents\relax}
+\def\listoffigures{\@starttoc{lof}\listfigurename}
+\def\listoftables{\@starttoc{lot}\listtablename}
+% \end{macrocode}
+% \subsection{Ajustement de param\`etres}
+% J'ai cru d\'eceler un bug dans les macros originales d'amsbook. En effet,
+% si |\tocindent| augmente, il ne semble pas pouvoir rediminuer
+% apr\`es\dots
+% \begin{macrocode}
+\AtBeginDocument{%
+ \@for\@tempa:=-1,0,1,2,3,4,5,10000\do{%
+ \@ifundefined{r@tocindent\@tempa}{%
+ \@xp\gdef\csname r@tocindent\@tempa\endcsname{0pt}}{}%
+ }%
+}
+\def\@writetocindents{%
+ \begingroup
+ \@for\@tempa:=-1,0,1,2,3,4,5,10000\do{%
+ \immediate\write\@auxout{%
+ \string\newlabel{tocindent\@tempa}{%
+ \csname r@tocindent\@tempa\endcsname}}%
+ }%
+ \endgroup}
+\AtEndDocument{\@writetocindents}
+\AtEndDocument{%
+ \if@filesw
+ \@xp\newwrite\csname tf@toc\endcsname
+ \immediate\@xp\openout\csname tf@toc\endcsname \jobname.toc\relax
+ \fi}
+% \end{macrocode}
+% \subsection{Fabrication d'une ligne dans la table}
+% \begin{macrocode}
+\let\indentlabel\@empty
+\def\@tochangmeasure#1{\sbox\z@{#1}%
+ \ifdim\wd\z@>\csname r@tocindent\@toclevel\endcsname\relax
+ \@xp\xdef\csname r@tocindent\@toclevel\endcsname{\the\wd\z@}%
+ \fi
+}
+% \end{macrocode}
+% Les arguments sont les suivants :
+% \begin{enumerate}
+% \item degr\'e de profondeur ;
+% \item espacement avant la ligne ;
+% \item indentation \`a gauche ;
+% \item espacement suppl\'ementaire \`a gauche. S'il est vide, les macros
+% |\r@tocindent?| le calculent ;
+% \item polices ;
+% \item entr\'ee de tdm proprement dite ;
+% \item num\'ero de page.
+% \end{enumerate}
+% Il y a aussi une p\'enalit\'e \cs{tochyphenpenalty} de c\'esure dans
+% TdM. Par d\'efaut, elle vaut \cs{@M}=10\,000.
+% \begin{macrocode}
+\newcount\tochyphenpenalty
+\tochyphenpenalty\@M
+\def\@tocline#1#2#3#4#5#6#7{\relax
+ \ifnum #1>\c@tocdepth % then omit
+ \else
+ \par \addpenalty\@secpenalty\addvspace{#2}%
+ \begingroup \hyphenpenalty\tochyphenpenalty
+ \@ifempty{#4}{%
+ \@tempdima\csname r@tocindent\number#1\endcsname\relax
+ }{%
+ \@tempdima#4\relax
+ }%
+ \parindent\z@ \leftskip#3\relax
+ \advance\leftskip\@tempdima\relax
+ \advance\rightskip\@pnumwidth % plus1em
+ \parfillskip-\@pnumwidth
+ {#5{\leavevmode\hskip-\@tempdima #6}}%
+ \nobreak
+ \xleaders\hbox to1ex{\normalfont\hss.\hss}\hfil\nobreak
+ \hbox to\@pnumwidth{\@tocpagenum{#7}}\par
+ \nobreak
+ \endgroup
+ \fi}
+\def\@tocpagenum#1{\hss{\mdseries #1}}
+\def\@tocwrite#1{\@xp\@tocwriteb\csname toc#1\endcsname{#1}}
+\def\@tocwriteb#1#2#3{\begingroup
+ \def\@tocline##1##2##3##4##5##6{\ifnum##1>\c@tocdepth
+ \else \sbox\z@{##5\let\indentlabel\@tochangmeasure##6}\fi}%
+ \csname l@#2\endcsname
+ {#1{\csname#2name\endcsname}{\@secnumber}{}}%
+ \endgroup
+ \addcontentsline{toc}{#2}%
+ {\protect#1{\csname#2name\endcsname}{\@secnumber}{#3}}}
+% \end{macrocode}
+% \subsection{Affichage des sections dans la table}
+% \begin{macrocode}
+\newcommand{\tocpart}[3]{%
+ \indentlabel{\@ifnotempty{#2}{\ignorespaces#1 #2.\kern1ex}}#3}
+%</article|book>
+%<*book>
+\newcommand{\tocchapter}[3]{%
+ \indentlabel{\@ifnotempty{#2}{\ignorespaces #2.\kern1ex}}#3}
+\let\tocappendix\tocchapter
+%</book>
+%<*article|book>
+\let\tocsection\tocpart
+\let\tocsubsection\tocsection
+\let\tocsubsubsection\tocsection
+\let\tocparagraph\tocsection
+
+\def\l@part{\@tocline{-1}{12pt plus2pt}{0pt}{}{\bfseries\smf@boldmath}}
+%</article|book>
+%<*book>
+\def\l@chapter{\@tocline{0}{8pt plus1pt}{0pt}{}{\bfseries\smf@boldmath}}
+\def\l@section{\@tocline{1}{0pt}{1pc}{}{}}
+\def\l@subsection{\@tocline{2}{0pt}{2pc}{}{}}
+\def\l@subsubsection{\@tocline{3}{0pt}{3pc}{}{}}
+\def\l@paragraph{\@tocline{5}{0pt}{4pc}{}{}}
+%</book>
+%<*article>
+\def\l@section{\@tocline{1}{0pt}{0pc}{}{}}
+\def\l@subsection{\@tocline{2}{0pt}{1pc}{}{}}
+\def\l@subsubsection{\@tocline{3}{0pt}{2pc}{}{}}
+\def\l@paragraph{\@tocline{5}{0pt}{3pc}{}{}}
+%</article>
+%<*article|book>
+\def\l@figure{\@tocline{0}{3pt plus2pt}{0pt}{}{}}
+\let\l@table\l@figure
+% \end{macrocode}
+% \section{Bibliographie}
+% La bibliographie est une section usuelle, dont le titre n'est finalement
+% plus en majuscules (03/10/97).
+% La taille du plus grand label est calcul\'ee automatiquement
+% et est sauv\'ee dans \cs{r@maxlabelwd}, via le \texttt{.aux}.
+% Il peut y a plusieurs environnements \texttt{thebibliography},
+% chacun a son \cs{r@maxlabelwd} (ils sont num\'erot\'es via \cs{smf@nthebib}).
+% \begin{macrocode}
+\newcount\smf@nthebib
+\newdimen\smf@tempwidtha
+\newdimen\smf@tempwidthb
+%<article>\let\bibliosection\section
+%<book>\let\bibliochapter\chapter
+%<article>\def\bibliofont{\def\baselinestretch{1}\small}
+%<book>\def\bibliofont{}
+\newenvironment{thebibliography}[1]{%
+ \global\advance\smf@nthebib1
+%<article> \bibliosection*{\refname}%
+%<book> \bibliochapter*{\bibname}%
+ \normalfont\labelsep .5em\relax
+ \renewcommand\theenumiv{\arabic{enumiv}}\let\p@enumiv\@empty
+ \list{\@biblabel{\theenumiv}}{%
+ \global\smf@tempwidtha 0pt
+ \expandafter\ifx
+ \csname r@maxlabelwd\the\smf@nthebib\endcsname
+ \relax
+ \settowidth\labelwidth{\@biblabel{#1}}%
+ \else
+ \expandafter\expandafter\expandafter\labelwidth
+ \csname r@maxlabelwd\the\smf@nthebib\endcsname
+ \fi
+ \leftmargin\labelwidth \advance\leftmargin\labelsep
+ \usecounter{enumiv}%
+ \itemindent 0pt
+%<article> \itemsep 0.1\baselineskip plus0.1\baselineskip
+%<article> minus0.1\baselineskip
+%<book> \itemsep .7\baselineskip plus0.1\baselineskip
+%<book> minus0.2\baselineskip
+ }
+ \bibliofont
+ \sloppy \clubpenalty\@M \widowpenalty\clubpenalty
+ \sfcode`\.=\@m
+}{%
+ \def\@noitemerr{%
+ \@latex@warning{Empty `thebibliography' environment}}% ' (hack)
+ \endlist
+ \immediate\write\@auxout
+ {\string\newlabel{maxlabelwd\the\smf@nthebib}{\the\smf@tempwidtha}}
+}
+\def\bysame{\leavevmode\hbox to3em{\hrulefill}\thinspace}
+\def\newblock{}
+\def\@biblabel#1{\@ifnotempty{#1}{[#1]}}
+\def\@cite#1#2{{%
+ \m@th\upshape\mdseries[{\bfseries #1}{\if@tempswa, #2\fi}]}}
+\@ifundefined{cite }{%
+ \expandafter\let\csname cite \endcsname\cite
+ \edef\cite{\@nx\protect\@xp\@nx\csname cite \endcsname}%
+}{}
+% \end{macrocode}
+% On red\'efinit |\bibitem|, etc. pour calculer la longueur du plus grand
+% label.
+% \begin{macrocode}
+\def\bibitem{\@ifnextchar[\@lbibitem\@bibitem}
+\def\smf@lbibitem[#1]#2{\item[\@biblabel{#1}\hfill]%
+ \settowidth\smf@tempwidthb{\@biblabel{#1}}%
+ \ifdim\smf@tempwidthb>\smf@tempwidtha
+ \global\smf@tempwidtha=\smf@tempwidthb
+ \fi
+ \if@filesw
+ {\let\protect\noexpand
+ \immediate
+ \write\@auxout{\string\bibcite{#2}{#1}}}\fi\ignorespaces}
+\def\smf@bibitem#1{\item\if@filesw \immediate\write\@auxout
+ {\string\bibcite{#1}{\the\value{\@listctr}}}\fi
+ \settowidth\smf@tempwidthb{\@biblabel{\theenumiv}}%
+ \ifdim\smf@tempwidthb>\smf@tempwidtha
+ \global\smf@tempwidtha=\smf@tempwidthb
+ \fi\ignorespaces}
+\let\@lbibitem\smf@lbibitem\let\@bibitem\smf@bibitem
+% \end{macrocode}
+% \section{Index}
+% L'index est en deux colonnes. Si le package |multicol| existe, on
+% l'utilise, car il \'equilibre automatiquement les colonnes en fin
+% d'index.
+% \begin{macrocode}
+\newif\ifhave@multicol
+\IfFileExists{multicol.sty}%
+ {\ClassInfo{\@classname}{Loading multicol.sty}%
+ \RequirePackage{multicol}\have@multicoltrue}%
+ {\ClassInfo{\@classname}%
+ {multicol.sty is unavailable, using LaTeX's twocolumn}}
+\newcommand\printindex{\@input{\jobname.ind}}%
+\newif\if@restonecol
+% \def\indexchap{\@startsection{chapter}{1}{\z@}{92pt}{10pc}%
+% {\centering\fontsize{\@xivpt}{18}\bfseries}}%
+%<article>\let\indexsection\section
+%<book>\let\indexchapter\chapter
+\def\theindex{\@restonecoltrue\if@twocolumn\@restonecolfalse\fi
+ \columnseprule0pt \columnsep 35\p@
+%</article|book>
+%<*article>
+ \ifhave@multicol
+ \begin{multicols}{2}[\indexsection*{\indexname}]%
+ \else
+ \twocolumn[\indexsection*{\indexname}]%
+ \fi
+%</article>
+%<*book>
+ \ifhave@multicol
+ \begin{multicols}{2} [\indexchapter*{\indexname}]
+ \else
+ \twocolumn [\indexchapter*{\indexname}]
+ \fi
+ \@xp\indexmark\@xp{\indexname}%
+ \thispagestyle{empty}%
+%</book>
+%<*article|book>
+ \let\item\@idxitem
+ \parindent\z@ \parskip\z@\@plus.3\p@\relax
+ \footnotesize}
+\def\@idxitem{\par\hangindent 2em}
+\def\subitem{\par\hangindent 2em\hspace*{1em}}
+\def\subsubitem{\par\hangindent 3em\hspace*{2em}}
+%</article|book>
+%<*article>
+\def\endtheindex{\ifhave@multicol
+ \end{multicols}%
+ \else
+ \if@restonecol\onecolumn\fi
+ \fi}
+%</article>
+%<*book>
+\def\endtheindex{\ifhave@multicol
+ \end{multicols}\clearpage
+ \else
+ \if@restonecol\onecolumn\else\clearpage\fi
+ \fi}
+%</book>
+%<*article|book>
+\def\indexspace{\par}
+%</article|book>
+% \end{macrocode}
+% \section{Notes de bas de page}
+% Suivant le message pr-tools/2664 de Frank Mittelbach, on revient \`a la
+% d\'efinition originelle de \LaTeXe.
+% \begin{macrocode}
+%<book>\@addtoreset{footnote}{chapter}
+%<*article|book>
+\def\footnoterule{\kern-.4\p@
+ \hrule\@width 5pc\kern10\p@\kern-\footnotesep}
+\def\@makefnmark{\hbox{$\m@th^{(\@thefnmark)}$}}
+\def\@makefntext{\parindent0pt\sloppy\indent\@makefnmark}
+% \end{macrocode}
+% \section{Figures}
+% \subsection{Param\`etres}
+% \begin{macrocode}
+\hfuzz=1pt \vfuzz=\hfuzz
+\def\sloppy{\tolerance9999 \emergencystretch 3em\relax}
+\setcounter{topnumber}{4}
+\setcounter{bottomnumber}{4}
+\setcounter{totalnumber}{4}
+\setcounter{dbltopnumber}{4}
+\renewcommand{\topfraction}{.97}
+\renewcommand{\bottomfraction}{.97}
+\renewcommand{\textfraction}{.03}
+\renewcommand{\floatpagefraction}{.9}
+\renewcommand{\dbltopfraction}{.97}
+\renewcommand{\dblfloatpagefraction}{.9}
+\setlength{\floatsep}{12pt plus 6pt minus 4pt}
+\setlength{\textfloatsep}{15pt plus 8pt minus 5pt}
+\setlength{\intextsep}{12pt plus 6pt minus 4pt}
+\setlength{\dblfloatsep}{12pt plus 6pt minus 4pt}
+\setlength{\dbltextfloatsep}{15pt plus 8pt minus 5pt}
+\setlength{\@fptop}{0pt}% removed ``plus 1fil''
+\setlength{\@fpsep}{8pt}% removed ``plus 2fil''
+\setlength{\@fpbot}{0pt plus 1fil}
+\setlength{\@dblfptop}{0pt}% removed ``plus 1fil''
+\setlength{\@dblfpsep}{8pt}% removed ``plus 2fil''
+\setlength{\@dblfpbot}{0pt plus 1fil}
+\newcommand{\fps@figure}{tbp}
+\newcommand{\fps@table}{tbp}
+%</article|book>
+%<*article>
+\newcounter{figure}
+\newcounter{table}
+%</article>
+%<*book>
+\newcounter{figure}[chapter]
+\newcounter{table}[chapter]
+%</book>
+%<*article|book>
+\def\ftype@figure{1}
+\def\ext@figure{lof}
+\def\fnum@figure{\figurename\ \thefigure}
+\newenvironment{figure}{\@float{figure}}{\end@float}
+\newenvironment{figure*}{\@dblfloat{figure}}{\end@dblfloat}
+\def\ftype@table{2}
+\def\ext@table{lot}
+\def\fnum@table{\tablename\ \thetable}
+\newenvironment{table}{\@float{table}}{\end@float}
+\newenvironment{table*}{\@dblfloat{table}}{\end@dblfloat}
+% \end{macrocode}
+% \subsection{L\'egende}
+% \begin{macrocode}
+\newskip\abovecaptionskip \abovecaptionskip=12pt \relax
+\newskip\belowcaptionskip \belowcaptionskip=12pt \relax
+\newdimen\captionindent \captionindent=3pc
+%% \def\captionheadfont@{\scshape}
+%% \def\captionfont@{\normalfont}
+\def\@captionheadfont{\normalfont\scshape\small}
+\def\@captionfont{\normalfont\small}
+\long\def\smf@makecaption#1#2{%
+ \ifdim\captionindent>.1\hsize \captionindent.1\hsize \fi
+ \setbox\@tempboxa\vbox{\color@setgroup
+ \advance\hsize-2\captionindent\noindent
+ \@captionfont\@captionheadfont#1\@xp\@ifnotempty\@xp
+ {\@cdr#2\@nil}{\@addpunct{.}\@captionfont\rmfamily\upshape\enspace#2}%
+ \unskip\kern-2\captionindent\par
+ \global\setbox\@ne\lastbox\color@endgroup}%
+ \ifhbox\@ne % the normal case
+ \setbox\@ne\hbox{\unhbox\@ne\unskip\unskip\unpenalty\unkern}%
+ \fi
+ \ifdim\wd\@tempboxa=\z@ % this means caption will fit on one line
+ \setbox\@ne\hbox to\columnwidth{\hss\kern-2\captionindent\box\@ne\hss}%
+ \@tempdima\wd\@ne\advance\@tempdima-\captionindent
+ \wd\@ne\@tempdima
+ \else % tempboxa contained more than one line
+ \setbox\@ne\vbox{\rightskip=0pt plus\captionindent\relax
+ \unvbox\@tempboxa\parskip\z@skip
+ \noindent\unhbox\@ne\advance\hsize-2\captionindent\par}%
+ \fi
+ \ifnum\@tempcnta<64 % if the float IS a figure...
+ \addvspace\abovecaptionskip
+ \noindent\kern\captionindent\box\@ne
+ \else % if the float IS NOT a figure...
+ \noindent\kern\captionindent\box\@ne
+ \nobreak
+ \vskip\belowcaptionskip
+ \fi
+\relax
+}
+\let\@makecaption\smf@makecaption
+% \end{macrocode}
+% \section{Th\'eor\`emes}
+% On utilise le package AMS, actuellement, des environnements sont
+% d\'efinis dans la classe, cela me para\^{\i}t souhaitable (comparer avec
+% ce que font Springer, Kluwer and co).
+% Malheureusement, la nouvelle version de {\tt amsthm.sty} n'est pas
+% compatible avec l'ancienne\dots
+% \begin{macrocode}
+\def\@upn{}
+\RequirePackage{amsthm}
+\@ifundefined{@restorelabelsep}{\let\@restorelabelsep\relax}{}
+\@ifundefined{thm@headfont}{%
+ \let\thm@indent\theoremindent
+ \let\thm@headfont\theoremheadfont
+ \let\thm@notefont\theoremnotefont
+ \let\thm@preskip\theorempreskipamount
+ \let\thm@postskip\theorempostskipamount
+ \let\thm@headpunct\theoremheadpunct}{}
+\def\@swapped#1#2{#2\@ifnotempty{#1}{\@addpunct{{\upshape.}}\quad#1\unskip}}
+% \end{macrocode}
+% Et il y a encore une nouvelle version [2000/06/02] de {\tt amsthm.sty}
+% qui change la num\'erotation. Il faudra comparer et \'elaguer...
+% \begin{macrocode}
+\def\swappedhead#1#2#3{%
+ \thmnumber{#2.}%
+ \thmname{\@ifnotempty{#2}{~}#1}%
+ \thmnote{ {\the\thm@notefont(#3)}}}
+% \end{macrocode}
+% On inclut la macro |\@thmheadnl| qui sauvegarde ce qu'a d\'ecid\'e l'AMS
+% lorsqu'un \'enonc\'e de th\'eor\`eme d\'ebute \`a la ligne au lieu de continuer apr\`es
+% son titre.
+% \begin{macrocode}
+\def\@thmheadnl{%
+ \@noskipsectrue
+ \everypar{\global\@minipagefalse \global\@newlistfalse
+ \global\@inlabelfalse \global\@nobreakfalse
+ {\setbox\z@\lastbox}\box\@labels
+ {\parskip0pt\par}\global\@nobreaktrue
+ \everypar{}\indent}}%
+% \end{macrocode}
+% On red\'efinit |\@begintheorem|
+% en reprenant une version récente de l'AMS.
+% Pour régler le problème des noms de th\'eor\`emes trop longs ; si la
+% longueur du nom dépasse 70\%\ de la largeur du texte, l'énoncé passe
+% à la ligne.
+% De plus, le système de l'AMS pose un problème lorsqu'un environnement de liste
+% suit un entête de théorème qui passe à la ligne.
+% La solution est donnée par David Carlisle dans tex.stackexchange.
+% On doit définir |\thmnewline| qui rend |true| le test |\ifsmf@thmnewline|,
+% et modifier l'environnement |\@trivlist| pour qu'il s'en serve.
+% \begin{macrocode}
+\newif\ifsmf@thmnewline
+\def\thmnewline{\newline\global\smf@thmnewlinetrue}
+\def\@begintheorem#1#2[#3]{%
+ \global\smf@thmnewlinefalse
+ \def\@theoremhead{\the\thm@headfont \thm@indent
+ \@ifempty{#1}{\let\thmname\@gobble}{\let\thmname\@iden}%
+ \@ifempty{#2}{\let\thmnumber\@gobble}{\let\thmnumber\@iden}%
+ \@ifempty{#3}{\let\thmnote\@gobble}{\let\thmnote\@iden}%
+ \thm@swap\swappedhead\thmhead{#1}{#2}{#3}%
+ \the\thm@headpunct
+ \thmheadnl % possibly a newline.
+ \hskip\thm@headsep
+ }%
+ \ifsmf@skippt\else
+ {\thm@headpunct{.}\sbox\@labels{\@theoremhead}%
+ \ifdim\wd\@labels>.7\linewidth\skippointrait\fi}\fi
+ \ifsmf@skippt\def\thmheadnl{\newline\indent\global\smf@thmnewlinetrue}\fi
+ \deferred@thm@head{\@theoremhead}%
+ \ignorespaces}
+% \end{macrocode}
+% La rédéfinition de |\@trivlist|.
+% \begin{macrocode}
+\let\smf@org@trivlist\@trivlist
+\def\@trivlist{%
+ \if@inlabel\ifsmf@thmnewline
+ \mbox{}\par\nobreak
+ \vskip\glueexpr-\parskip-\baselineskip+3pt\relax
+ \hrule\@height\z@
+ \global\smf@thmnewlinefalse
+ \fi\fi
+ \smf@org@trivlist}
+% \end{macrocode}
+% Pour regler le probleme des noms de demonstrations trop longs ; si la
+% longueur du nom depasse 70\%\ de la largeur du texte, la demonstration
+% est sur la ligne suivante.
+% On s'adapte aussi \`a la nouvelle version de \textsf{amsthm} qui offre une
+% macro \cs{qedhere} plus efficace que l'ancien \cs{MakeQed}.
+% \begin{macrocode}
+\newif\ifx@pushQED
+\@ifundefined{pushQED}{\x@pushQEDfalse}{\x@pushQEDtrue}
+\renewenvironment{proof}[1][\proofname]{\par
+ \ifx@pushQED \pushQED{\qed}\fi
+ \normalfont
+% \topsep6\p@\@plus6\p@
+ \topsep0pt
+ \trivlist \itemindent\z@ %% \normalparindent
+ \def\@proofhead{\normalfont\itshape #1}%
+ \sbox\@tempboxa{\@proofhead}%
+ \ifdim\wd\@tempboxa>0.7\linewidth \smf@skippttrue\fi
+ \ifsmf@skippt
+% \penalty-\@medpenalty
+ \global\smf@skipptfalse
+ \item[]{\@proofhead\@@par}
+ \nobreak
+ \else
+ \item[\hskip\labelsep
+ \unhbox\@tempboxa\pointrait]%
+ \fi
+ \ignorespaces
+}{%
+ \MakeQed
+ \endtrivlist
+ \@endpefalse
+ \medskip
+}
+\def\MakeQed{\ifsmf@qed
+ \ifx@pushQED\popQED\else\qed\fi
+ \fi\global\smf@qedtrue}
+\newif\ifsmf@qed\smf@qedtrue
+\def\skipqed{\global\smf@qedfalse}
+% \end{macrocode}
+% \subsection{Styles g\'en\'eraux}
+% \begin{macrocode}
+\def\th@plain{%
+ \let\thm@indent\noindent
+ \thm@headfont{\bfseries\smf@boldmath\itshape}%
+ \thm@notefont{\bfseries\smf@boldmath\upshape}%
+ \thm@preskip 0pt %% was: .5\linespacing \@plus .5\linespacing
+ \thm@postskip\thm@preskip
+ \thm@headpunct{\MakePointrait}
+ \itshape }
+\def\th@definition{\th@plain \upshape }
+\def\th@remark{\th@definition }
+% \end{macrocode}
+% \section{Compatibilit\'e avec \emph{babel.sty}}
+% Tout doit \^etre fait pour que la classe puisse \^etre multilingue.
+% Le probl\`eme est toutefois que \emph{babel} n'existe pas partout,
+% et que je ne veux pas forcer son utilisation (par exemple pour un
+% texte anglais...)
+% \subsection{Anglais}
+% \begin{macrocode}
+\def\smf@captionsenglish{%
+ \def\abstractname{Abstract}%
+ \def\contentsname{Contents}%
+ \def\partname{Part}%
+ \def\chaptername{Chapter}%
+ \def\refname{References}%
+ \def\bibname{Bibliography}%
+ \def\indexname{Index}%
+ \def\altabstractname{R\'esum\'e}%
+ \def\appendixname{Appendix}%
+ \def\tablename{Table}%
+ \def\listtableename{List of tables}%
+ \def\figurename{Figure}%
+ \def\listfigurename{List of figures}%
+ \def\seename{see also}%
+ \def\keywordsname{Key words and phrases}%
+ \def\altkeywordsname{Mots clefs}%
+ \def\translatedby {Translated by}%
+ \def\subjclassname
+ {\textup{2000} Mathematics Subject Classification}%
+ \def\proofname{Proof}%
+ \def\definame{Definition}%
+ \def\propname{Proposition}%
+ \def\theoname{Theorem}%
+ \def\conjname{Conjecture}%
+ \def\coroname{Corollary}%
+ \def\exemname{Example}%
+ \def\lemmname{Lemma}%
+ \def\remaname{Remark}%
+ \def\smfbyname{by}\def\smfandname{\&}%
+ \def\smfedbyname{edited by}%
+ \def\smfedname{ed.}\def\smfedsname{eds.}%
+ \def\smfphdthesisname{Ph.D. Thesis}%
+ \def\smfmastersthesisname{Master's Thesis}%
+ \let\@makecaption\smf@makecaption
+}
+% \end{macrocode}
+% \subsection{Fran\c cais}
+% \begin{macrocode}
+\def\smf@captionsfrench{%
+ \def\abstractname{R\'esum\'e}%
+ \def\contentsname{Table des mati\`eres}%
+ \def\partname{Partie}%
+ \def\chaptername{Chapitre}%
+ \def\bibname{Bibliographie}%
+ \def\indexname{Index}%
+ \def\refname{R\'ef\'erences}%
+ \def\altabstractname{Abstract}%
+ \def\appendixname{Appendice}%
+ \def\figurename{Figure}%
+ \def\listfigurename{Liste des figures}%
+ \def\tablename{Table}%
+ \def\listtablename{Liste des tables}%
+ \def\seename{voir}%
+ \def\keywordsname{Mots clefs}%
+ \def\altkeywordsname{Key words and phrases}%
+ \def\subjclassname
+ {Classification math\'ematique par sujets \textup{(2000)}}%
+ \def\translatedby {Traduit par}%
+ \def\proofname{D\'emonstration}%
+ \def\definame{D\'efinition}%
+ \def\propname{Proposition}%
+ \def\theoname{Th\'eor\`eme}%
+ \def\conjname{Conjecture}%
+ \def\coroname{Corollaire}%
+ \def\exemname{Exemple}%
+ \def\lemmname{Lemme}%
+ \def\remaname{Remarque}%
+ \def\smfbyname{par}\def\smfandname{\&}%
+ \def\smfedbyname{\'edit\'e par}%
+ \def\smfedname{\'ed.}\def\smfedsname{\'eds.}%
+ \def\smfphdthesisname{Th\`ese}%
+ \def\smfmastersthesisname{M\'emoire}%
+ \csname bbl@nonfrenchlistspacing\endcsname
+ \let\@makecaption\smf@makecaption
+}
+% \end{macrocode}
+% \subsection{Int\'egration dans {\em babel}}
+% Cela doit se faire au |\begin{document}| car \textit{babel} repousse
+% jusque l\`a la plupart de ses d\'eclarations.
+% \begin{macrocode}
+\AtBeginDocument{%
+ \expandafter\csname smf@captions\smf@language\endcsname
+ \ifx\ldf@quit\@undefined % babel n'est pas charge
+ \let\@smflanguage\relax
+ \let\@smfaltlanguage\relax
+ \else
+ \expandafter\main@language\expandafter{\smf@language}
+% \end{macrocode}
+% Si le dialecte babel \texttt{frenchb} n'est pas charg\'e,
+% on teste le dialecte \texttt{french} :
+% En fait, les versions r\'ecentes de \textit{babel/frenchb} utilisent
+% \verb'captionsfrench'.
+% \begin{macrocode}
+ \ifx\captionsfrenchb\@undefined\else
+ \addto\captionsfrenchb{\smf@captionsfrench}\fi
+ \ifx\captionsfrench\@undefined\else
+ \addto\captionsfrench{\smf@captionsfrench}\fi
+ \ifx\captionsfrancais\@undefined\else
+ \addto\captionsfrancais{\smf@captionsfrench}\fi
+% \end{macrocode}
+% On regarde si le dialecte babel \texttt{english} est charg\'e
+% \begin{macrocode}
+ \ifx\captionsenglish\@undefined\else
+ \addto\captionsenglish{\smf@captionsenglish}%
+ \fi
+ \def\@temp{french}%
+ \ifx\smf@language\@temp
+ \def\@smflanguage{\smf@silentselectlanguage{french}}%
+ \def\@smfaltlanguage{\smf@silentselectlanguage{english}}%
+ \else
+ \def\@smflanguage{\smf@silentselectlanguage{english}}%
+ \def\@smfaltlanguage{\smf@silentselectlanguage{french}}%
+ \fi
+ \fi }
+\def\smf@silentselectlanguage#1{%
+ \def\smf@tmp{}%
+ \expandafter\ifx\csname date#1\endcsname\relax\else
+ \def\smf@tmp{\selectlanguage{#1}}\fi\smf@tmp}
+% \end{macrocode}
+% \subsection{Guillemets fran\c cais}
+% {\LaTeXe} a des macros pr\'evues pour tout cela qui sont
+% parfaits lorsque l'{\em encoding} des caract\`eres est {\tt T1},
+% il est peut-\^etre utile de les red\'efinir pour qu'ils soient bien quand
+% l'auteur n'a pas tap\'e |\usepackage{T1}{fontenc}|.
+% \begin{macrocode}
+\ProvideTextCommandDefault{\guillemotleft}%
+ {\leavevmode\hbox{\fontencoding{U}\fontfamily{lasy}%
+ \fontseries{m}\fontshape{n}\selectfont
+ (\kern-0.20em(\kern+0.20em}\nobreak}
+\ProvideTextCommandDefault{\guillemotright}%
+ {\nobreak\leavevmode
+ \hbox{\fontencoding{U}\fontfamily{lasy}%
+ \fontseries{m}\fontshape{n}\selectfont
+ \kern+0.20em)\kern-0.20em)}}
+% \end{macrocode}
+% \subsection{Espace ins\'ecable, tiret}
+% Je ne sais plus d'o\`u viennent ces deux lignes. Le point-trait est
+% introduit pour \'eviter les incoh\'erences.
+% \begin{macrocode}
+\def\nonbreakingspace{\unskip\nobreak\ \ignorespaces}
+\def~{\protect\nonbreakingspace}
+% \end{macrocode}
+% Les titres de sections qui sont imm\'ediatement suivies du texte sont
+% affubli\'es d'un point--trait, conform\'ement \`a certains usages en
+% typographie fran\c caise. Seulement, il faut pouvoir le supprimer lorsque
+% le texte qui suit va tout de m\^eme \`a la ligne (c'est par exemple le
+% cas si le paragraphe d\'ebute par une liste). La commande
+% |\skippointrait| supprime l'affichage du prochain point--trait.
+% \begin{macrocode}
+\newif\ifsmf@skippt \smf@skipptfalse
+\def\skippointrait{\global\smf@skippttrue}
+\DeclareRobustCommand{\@pointrait}{%
+ \unskip
+ \ifnum\spacefactor>\@m \hskip1ex\hbox{---}\else
+ {\upshape.\hskip 1ex\hbox{---}}\fi}
+\DeclareRobustCommand{\MakePointrait}{%
+ \ifsmf@skippt\global\smf@skipptfalse \else\nobreak\@pointrait\fi}
+\let\pointrait\MakePointrait
+% \end{macrocode}
+% \subsection{Divers}
+% \begin{macrocode}
+\def\fullwidthdisplay{\displayindent\z@ \displaywidth\columnwidth}
+\edef\@tempa{\noexpand\fullwidthdisplay\the\everydisplay}
+\everydisplay\expandafter{\@tempa}
+\newcommand\see[2]{{\em \seename\/} #1}%
+% \end{macrocode}
+% Pour que \emph{hyperref} fonctionne, on charge \emph{smfhyperref.sty}
+% au |\begin{document}|.
+% \begin{macrocode}
+\AtBeginDocument{%
+ \csname @ifpackageloaded\endcsname{hyperref}{\RequirePackage{smfhyperref}}{}}
+% \end{macrocode}
+% \section{Initialisation}
+% \begin{macrocode}
+\calclayout % initialize
+\pagenumbering{arabic}
+\pagestyle{headings}
+\thispagestyle{plain}
+% \end{macrocode}
+% La variable |\emergencystretch| est initialis\'ee \`a \texttt{2em} pour
+% \'eviter des \emph{Overfull hbox}es trop fr\'equentes.
+% \begin{macrocode}
+\emergencystretch 2em
+%</article|book>
+% \end{macrocode}
+% \section{Pour qu'\texttt{hyperref} fonctionne}
+%<*hyperref>
+% \begin{macrocode}
+\ProvidesPackage{smfhyperref}[2021/04/18 v1.6
+ Adaptations pour faire cohabiter hyperref et les classes smf]
+% \end{macrocode}
+% Redéfinition des macros d'index.
+% \begin{macrocode}
+\def\@@wrindex#1|#2|#3\\{%
+ \ifx\\#2\\%
+ \protected@write\@indexfile{}{%
+ \string\indexentry{#1}{\thepage}%
+ }%
+ \else
+ \def\Hy@temp@A{#2}%
+ \ifx\Hy@temp@A\HyInd@ParenLeft
+ \protected@write\@indexfile{}{%
+ \string\indexentry{#1|#2}{\thepage}%
+ }%
+ \else
+ \protected@write\@indexfile{}{%
+ \string\indexentry{#1|#2}{\thepage}%
+ }%
+ \fi
+ \fi
+ \endgroup
+ \@esphack
+ }%
+% \end{macrocode}
+% Redéfinition des macros de bibliographie.
+% \begin{macrocode}
+\ltx@IfUndefined{NAT@parse}{%
+ \def\@lbibitem[#1]#2{%
+ \@skiphyperreftrue
+ \H@item[%
+ \ifx\Hy@raisedlink\@empty
+ \hyper@anchorstart{cite.#2\@extra@b@citeb}%
+ \@BIBLABEL{#1}%
+ \hyper@anchorend
+ \else
+ \Hy@raisedlink{%
+ \hyper@anchorstart{cite.#2\@extra@b@citeb}\hyper@anchorend
+ }%
+ \@BIBLABEL{#1}%
+ \fi
+ \hfill
+ ]%
+ \settowidth\smf@tempwidthb{\@biblabel{#1}}%
+ \ifdim\smf@tempwidthb>\smf@tempwidtha
+ \global\smf@tempwidtha=\smf@tempwidthb
+ \fi
+ \@skiphyperreffalse
+ \if@filesw
+ \begingroup
+ \let\protect\noexpand
+ \immediate\write\@auxout{%
+ \string\bibcite{#2}{#1}%
+ }%
+ \endgroup
+ \fi
+ \ignorespaces
+ }%
+ \def\@bibitem#1{%
+ \@skiphyperreftrue\H@item\@skiphyperreffalse
+ \Hy@raisedlink{%
+ \hyper@anchorstart{cite.#1\@extra@b@citeb}\relax\hyper@anchorend
+ }%
+ \if@filesw
+ \begingroup
+ \let\protect\noexpand
+ \immediate\write\@auxout{%
+ \string\bibcite{#1}{\the\value{\@listctr}}%
+ }%
+ \endgroup
+ \fi
+ \settowidth\smf@tempwidthb{\@biblabel{\theenumiv}}%
+ \ifdim\smf@tempwidthb>\smf@tempwidtha
+ \global\smf@tempwidtha=\smf@tempwidthb
+ \fi
+ \ignorespaces
+ }%
+}{}
+% \end{macrocode}
+%</hyperref>
+% \section{Package de th\'eor\`emes}
+% \begin{macrocode}
+%<*smfthm>
+\ProvidesPackage{smfthm}[1999/03/05 v1.0.h
+ Environnements predefinis de theoremes]
+% \end{macrocode}
+% \subsection{Options laiss\'ees au choix de l'utilisateur}
+% Ici se pose un probl\`eme~: il faut arbitrer entre la libert\'e de
+% l'auteur
+% et l'uniformit\'e du style. Dans un recueil d'articles, il faudra
+% permettre
+% de changer d'options d'un article \`a l'autre, c'est pourquoi ce choix
+% est constitu\'e d'une option par d\'efaut et de macros qui permettent de
+% changer l'apparence --- malheureusement en cours de texte,
+% mais il ne faut pas le dire --- au choix de l'auteur. \'Eventuellement,
+% de nouvelles options pourraient \^etre rajout\'ees plus tard au fur et
+% \`a
+% mesure de l'apparition des besoins, si bien que de
+% nombreuses solutions devraient \^etre possibles.
+% Dans tous les cas, pour plus de lisibilit\'e,
+% il me semble que tous les \'enonc\'es doivent \^etre num\'erot\'es
+% \`a la suite (Th\'eor\`eme 1~; Lemme 2; % Proposition 3; Lemme 4).
+% Il y a plusieurs options, qui doivent \^etre entr\'ees \emph{avant} le
+% |\begin{document}|.
+% \begin{itemize}
+% \item
+% |\NumberTheoremsIn{|\meta{nom de compteur}|}| \par
+% on peut pr\'eciser le niveau de profondeur
+% auquel les num\'eros d'\'enonc\'es sont remis \`a z\'ero
+% (|section| me para\^it le mieux)
+% \item
+% |\NumberTheoremsAs{|\meta{nom de compteur}|}|\par
+% on utilise un d\'ecoupage en paragraphes, dont les th\'eor\`emes sont des
+% cas
+% particuliers (|paragraph| me para\^it le plus adapt\'e dans ce cas).
+% \item
+% |\SwapTheoremNumbers|\par
+% on met le num\'ero avant le type d'\'enonc\'e,
+% comme dans \og 1.~Th\'eor\`eme\fg ;
+% \item
+% |\NoSwapTheoremNumbers|\par
+% on met le type d'\'enonc\'e avant son num\'ero, exemple~: \og
+% Th\'eor\`eme\fg.
+% \end{itemize}
+% En standard, je propose\par
+% |\NumberTheoremsIn{section}\NoSwapTheoremNumbers|.
+% \begin{macrocode}
+\newif\ifsmf@thmsin\smf@thmsintrue
+\def\NumberTheoremsIn#1{\@ifempty{#1}%
+ {\smf@thmsinfalse}%
+ {\@ifundefined{c@#1}{\@nocounterr{#1}}%
+ {\smf@thmsintrue\def\@NumberTheorems{#1}}}}
+ \NumberTheoremsIn{section}
+\def\NumberTheoremsAs#1{\@ifempty{#1}%
+ {\smf@thmsintrue}%
+ {\@ifundefined{c@#1}{\@nocounterr{#1}}%
+ {\smf@thmsinfalse\def\@NumberTheorems{#1}}}}
+ \NumberTheoremsAs{}
+\def\SwapTheoremNumbers{\def\thm@swap{S}}
+\def\NoSwapTheoremNumbers{\def\thm@swap{N}}
+ \NoSwapTheoremNumbers
+% \end{macrocode}
+% \subsection{D\'efinition de th\'eor\`emes}
+% L\`a sont d\'efinies d\'efinitions, th\'eor\`emes, corollaires, etc. Il
+% n'y a qu'un seul compteur (\texttt{defi}),
+% tout est donc num\'erot\'e \`a la suite, ce qui pourrait \^etre
+% modifi\'e.
+% \begin{macrocode}
+\def\smf@thmdefs{%
+ \theoremstyle{plain}
+ \ifsmf@thmsin
+% \ClassInfo{Theoremes numerotes dans les \@NumberTheorems}
+ \newcounter{smfthm}[\@NumberTheorems]
+ \xdef\thesmfthm
+ {\expandafter\noexpand\csname the\@NumberTheorems\endcsname
+ .\noexpand\arabic{smfthm}}%
+ \gdef\smf@thm{smfthm}
+ \else
+% \ClassInfo{Theoremes numerotes comme les \@NumberTheorems}
+ \xdef\smf@thm{\@NumberTheorems}
+ \fi
+ \newtheorem{theo}[\smf@thm]{\theoname}%
+ \newtheorem{prop}[\smf@thm]{\propname}%
+ \newtheorem{conj}[\smf@thm]{\conjname}%
+ \newtheorem{coro}[\smf@thm]{\coroname}%
+ \newtheorem{lemm}[\smf@thm]{\lemmname}%
+%
+ \theoremstyle{definition}%
+ \newtheorem{defi}[\smf@thm]{\definame}%
+%
+ \theoremstyle{remark}%
+ \newtheorem{rema}[\smf@thm]{\remaname}%
+ \newtheorem{exem}[\smf@thm]{\exemname}%
+ \theoremstyle{plain}}
+% \end{macrocode}
+% \subsection{Th\'eor\`eme g\'en\'erique}
+% L'environnement \texttt{enonce} permet un th\'eor\`eme g\'en\'erique dont
+% le nom change \`a la demande, par exemple~:\par
+% |\begin{enonce}{Formulaire}| \meta\dots |\end{enonce}|\par
+% \noindent provoque l'affichage d'un `Formulaire', num\'erot\'e comme il
+% se doit.
+% L'environnement \texttt{enonce*} est le pendant de l'environnement
+% \texttt{enonce}, mais sans num\'erotation.
+% \begin{macrocode}
+\def\smf@enoncedef{%
+ \newenvironment{enonce}[2][plain]%
+ {\let\smfenonce\relax \theoremstyle{##1}%
+ \newtheorem{smfenonce}[\smf@thm]{##2}%
+ \begin{smfenonce}}%
+ {\end{smfenonce}}%
+ \newenvironment{enonce*}[2][plain]%
+ {\let\smfenonce\relax \theoremstyle{##1}%
+ \newtheorem*{smfenonce}{##2}%
+ \begin{smfenonce}}%
+ {\end{smfenonce}}%
+}
+% \end{macrocode}
+% \subsection{Mise en place des th\'eor\`emes}
+% Lors du |\begin{document}|, on met tout en place, suivant les options
+% choisies.
+% \begin{macrocode}
+\AtBeginDocument{%
+ \smf@thmdefs\smf@enoncedef}
+%</smfthm>
+% \end{macrocode}
+% \section{Am\'elioration des param\`etres de listes}
+% Ce package est pour l'instant \`a part. \`A terme, j'esp\`ere l'inclure
+% totalement dans \texttt{smfart} et \texttt{smfbook}.
+%
+% \begin{macrocode}
+%<*smfenum>
+\ProvidesPackage{smfenum}[2002/02/07 v1.2b
+ Nouvelle version des parametres d'enumerations]
+% \end{macrocode}
+% Il faut pour l'instant charger \paquet{smfenum} AVANT \paquet{babel}.
+% \begin{macrocode}
+\ifx\captionsfrenchb\@undefined\else
+ \PackageError{smfenum}
+ {Il vaut mieux charger smfenum avant la langue frenchb de babel!}
+\fi
+\def\enumerate{\ifnum \@enumdepth >3 \@toodeep\else
+ \advance\@enumdepth \@ne
+ \edef\@enumctr{enum\romannumeral\the\@enumdepth}\list
+ {\csname label\@enumctr\endcsname}{\usecounter
+ {\@enumctr}\def\makelabel##1{{\upshape##1}}}\fi}
+
+\def\itemize{%
+ \ifnum \@itemdepth >\thr@@\@toodeep\else
+ \advance\@itemdepth\@ne
+ \edef\@itemitem{labelitem\romannumeral\the\@itemdepth}%
+ \expandafter
+ \list
+ \csname\@itemitem\endcsname
+ {\def\makelabel##1{{\upshape ##1}}}%
+ \fi}
+
+\def\quote{\list{}%
+ {\advance\leftmargin2\normalparindent
+ \rightmargin\leftmargin
+ \labelwidth\z@
+ \itemindent\z@}%
+ \item[]}
+
+\def\@genlists{%
+ \itemsep\z@skip
+ \partopsep\z@skip
+ \topsep\z@skip
+ \parsep\z@skip
+ \labelwidth-\labelsep
+ \listparindent\normalparindent
+ \itemindent\normalparindent}
+
+\def\@listi {\@genlists \leftmargin\leftmargini \topsep\listisep}
+\let\@listI\@listi
+\def\@listii {\@genlists \leftmargin\leftmarginii \topsep\listiisep}
+\def\@listiii{\@genlists \leftmargin\leftmarginiii \topsep\listiiisep}
+\def\@listiv {\@genlists \leftmargin\leftmarginiv \topsep\listivsep}
+\def\@listv {\@genlists \leftmargin\leftmarginv \topsep\listvsep}
+\def\@listvi {\@genlists \leftmargin\leftmarginvi \topsep\listvisep}
+
+\def\labelitemi{--}
+\def\labelenumi{(\theenumi)}
+\def\theenumi{\@arabic\c@enumi}
+\expandafter\ifx\csname listisep\endcsname\relax
+ \newskip\listisep
+\fi
+\listisep \smallskipamount
+
+\let\labelitemii\labelitemi
+\def\p@enumii{\theenumi}
+\def\labelenumii{(\theenumii)}
+\def\theenumii{\@alph\c@enumii}
+\newdimen\listiisep
+\listiisep \smallskipamount
+
+\let\labelitemiii\labelitemi
+\def\labelenumiii{(\theenumiii)}
+\def\theenumiii{\@roman\c@enumiii}
+\def\p@enumiii{\theenumi(\theenumii)}
+\newdimen\listiiisep
+\listiiisep \smallskipamount
+
+\let\labelitemiv\labelitemi
+\def\labelenumiv{(\theenumiv)}
+\def\theenumiv{\@Alph\c@enumiv}
+\def\p@enumiv{\p@enumiii\theenumiii}
+\newdimen\listivsep
+\listivsep \smallskipamount
+
+\AtBeginDocument{%
+\labelsep=1ex
+\leftmargini 0pt
+\leftmarginii 2\normalparindent
+\leftmarginiii 4\normalparindent
+\leftmarginiv 6\normalparindent
+\leftmarginv 8\normalparindent
+\leftmarginvi 10\normalparindent
+\leftmargin=\leftmargini
+\@listi}
+% \end{macrocode}
+% Pour d\'esamorcer la gestion des espacements des listes dans Babel.
+% \begin{macrocode}
+\AtBeginDocument{%
+ \csname FrenchItemizeSpacingfalse\endcsname
+ \csname FrenchListSpacingfalse\endcsname
+}
+%</smfenum>
+% \end{macrocode}
+% \section{Packages suppl\'ementaires pour chaque revue}
+% Ces packages sont priv\'es (c'est-\`a-dire ne seront pas
+% diffus\'es) et permettent d'adapter la pr\'esentation de chaque
+% revue, sur la base des styles \texttt{smfbook} et \texttt{smfart}.
+% \subsection{Parties communes}
+% \begin{macrocode}
+%<*smfgen>
+\ProvidesPackage{smfgen}[2012/10/03 v1.9b
+ Fichier additionnel pour les Publications de la SMF]
+% \end{macrocode}
+% Un certain nombre de packages doivent \^etre charg\'es syst\'ematiquement
+% (babel, amssymb, amscd et XY). Tant pis pour l'efficacit\'e.
+% On met une option \texttt{nopackage} pour que
+% ceux-ci ne soient pas charg\'es .
+% \begin{macrocode}
+ \newif\ifsmf@nopackage
+ \DeclareOption{nopackage}{\smf@nopackagetrue}
+% \end{macrocode}
+% Viennent ensuite quelques options concernant le contr\^ole de polices.
+% Avec l'option \texttt{ec}, les polices EC sont charg\'ees.
+% Avec l'option \texttt{ae}, on charge le package \texttt{ae.sty} en
+% prenant en outre les guillemets dans la police \textit{Times}.
+% Enfin, l'option \texttt{mltex} utilise un moteur Ml\TeX.
+% \begin{macrocode}
+\newif\ifsmf@ec
+\newif\ifsmf@ae
+\newif\ifsmf@bask
+ \DeclareOption{ec}{\smf@ectrue\smf@aefalse}
+ \DeclareOption{mltex}{\smf@ecfalse\smf@aefalse}
+ \DeclareOption{ae}{\smf@ecfalse\smf@aetrue}
+ \DeclareOption{bask}{\smf@ecfalse\smf@aefalse\smf@basktrue}
+\newif\ifsmf@upitparen
+ \DeclareOption{upitparen}{\smf@upitparentrue}
+ \DeclareOption{noupitparen}{\smf@upitparenfalse}
+\newif\ifsmf@xy
+ \DeclareOption{xy}{\smf@xytrue}
+ \DeclareOption{noxy}{\smf@xyfalse}
+% \end{macrocode}
+% \begin{macrocode}
+ \DeclareOption{euro}{\def\@FrenchCurrency{\texteuro}}
+ \DeclareOption{FF}{\def\@FrenchCurrency{FF}}
+% \end{macrocode}
+% Maintenant, on ex\'ecute les options. Par d\'efaut, on choisit l'option
+% \texttt{ae} afin de pouvoir faire des PDF corrects. \`A terme, il
+% faudrait peut-\^etre se payer les polices EM. Il y aura aussi le passage en
+% \texttt{smfbask} \`a incorporer.
+% Depuis le premier janvier 2002, on paie en euros.
+% \begin{macrocode}
+\ExecuteOptions{ae,xy,euro,noupitparen}
+\ProcessOptions\relax
+% \end{macrocode}
+% Il y a l'option \texttt{nopackage} pour ne rien faire de ce qui suit.
+% \begin{macrocode}
+\ifsmf@nopackage\else
+% \end{macrocode}
+% Avec l'option \texttt{ec}, on charge juste \paquet{fontenc}, option
+% \texttt{T1}. Cela appelle les polices EC (probl\`eme pour le PDF puisque
+% ces polices ne sont pas en Type~1 --- s*@\#?! de bug d'Acrobat!).
+% \begin{macrocode}
+ \ifsmf@ec\RequirePackage[T1]{fontenc}\else
+% \end{macrocode}
+% Avec l'option \texttt{ae}, on charge le paquet du m\^eme nom et on met les
+% guillemets en Times. (Pour les guillemets, il faut le faire au
+% |\begin{document}|.)
+%% \changes{v1.7b}{2001/10/10}{D\'efinition des guillemets retard\'ee au
+%% begin document}
+% \begin{macrocode}
+ \ifsmf@ae
+ \RequirePackage{ae}
+ \AtBeginDocument{%
+ \def\selectguillfont{\fontencoding{T1}\fontfamily{ptm}\selectfont}
+ \def\guillemotleft{{\selectguillfont\symbol{19}}}
+ \def\guillemotright{{\selectguillfont\symbol{20}}}}
+ \else
+% \end{macrocode}
+% Option \texttt{bask}: on charge \paquet{smfbask}. Mais il resterait sans
+% doute des choses \`a arranger ici.
+% \begin{macrocode}
+ \ifsmf@bask
+ \RequirePackage{smfbask}
+% \end{macrocode}
+% Plus rien \`a faire, sinon Ml\TeX...
+% \begin{macrocode}
+ \else
+ \PackageWarning{smfgen}{Requiring MlTeX...}
+ \RequirePackage{mltex}
+ \fi\fi\fi
+% \end{macrocode}
+% Pour l'Euro, il y a deux solutions: soit la police d'Adobe (mod\`ele
+% officiel par exemple), soit avec le paquetage \paquet{textcomp}, mais ce
+% ne sera pas en Type~1 (\emph{refrain}...).
+% \begin{macrocode}
+ \ifsmf@ec
+ \RequirePackage{textcomp} % T1...
+ \else
+ \RequirePackage{europs}
+ \let\texteuro\EURofc % Adobe, modele officiel de la CE
+ \fi
+% \end{macrocode}
+% presque \`a la fin, \paquet{babel} !
+% \begin{macrocode}
+ \RequirePackage[english,frenchb]{babel}
+% \end{macrocode}
+% Avec l'option \texttt{upitparen}, on fait en sorte que parenth\`eses et
+% ponctuation haute soient syst\'ematiquement imprim\'ees en romain.
+% Les macros de \paquet{upitparen} requi\`erent que \paquet{babel} soit
+% charg\'e.
+% Cela a une cons\'equence sur les |\catcode| et on doit y faire attention
+% plus tard au chargement de~\paquet{xy}.
+% \begin{macrocode}
+ \ifsmf@upitparen
+\declare@shorthand{french}{;}{%
+ \ifhmode
+ \ifdim\lastskip>\z@\unskip\penalty\@M\thinspace\else\FDP@thinspace\fi
+ \fi
+ \ifmmode\string;\else\textup{\string;}\fi}
+\declare@shorthand{french}{!}{%
+ \ifhmode
+ \ifdim\lastskip>\z@\unskip\penalty\@M\thinspace\else\FDP@thinspace\fi
+ \fi
+ \ifmmode\string!\else\textup{\string!}\fi}
+\declare@shorthand{french}{?}{%
+ \ifhmode
+ \ifdim\lastskip>\z@\unskip\penalty\@M\thinspace\else\FDP@thinspace\fi
+ \fi
+ \ifmmode\string?\else \textup{\string?}\fi}
+\declare@shorthand{french}{:}{%
+ \ifhmode
+ \ifdim\lastskip>\z@\unskip\penalty\@M\Fcolonspace\else\FDP@colonspace\fi
+ \fi
+ \ifmmode\string:\else\textup{\string:}\fi}
+\initiate@active@char{(}
+\initiate@active@char{)}
+\declare@shorthand{french}{(}{%
+ \ifmmode\string(\else\textup{\string(}\penalty\@M\fi}
+\declare@shorthand{french}{)}{%
+ \ifmmode\string)\else\penalty\@M\textup{\string)}\fi}
+\declare@shorthand{system}{(}{\string(}
+\declare@shorthand{system}{)}{\string)}
+\addto\extrasfrench{\bbl@activate{(}\bbl@activate{)}}
+\addto\noextrasfrench{\bbl@deactivate{(}\bbl@deactivate{)}}
+ \fi
+% \end{macrocode}
+% On charge enfin plus ou moins automatiquement \paquet{xy}.
+% Normalement, la red\'efinition de |\xymatrixcompile| permet de compiler
+% les matrices: \paquet{xy} est charg\'e avec tous les |\catcode| \`a~12,
+% et ils y sont remis...
+% \begin{macrocode}
+ \ifsmf@xy
+ \makeatother
+ \RequirePackage[all,ps,cmtip]{xy}\def\labelstyle{\textstyle}
+ \makeatletter
+ \let\old@xymatrixcompile\xymatrixcompile
+ \xdef\xymatrixcompile{%
+ \catcode`!=12 \catcode`;=12 \catcode`:=12 \catcode`?=12
+ \ifsmf@upitparen \catcode`)=12 \catcode`(=12\fi
+ \noexpand \old@xymatrixcompile}
+ \fi
+% \end{macrocode}
+% On a aussi besoin des paquetage \paquet{url}, \paquet{xspace},
+% \paquet{amssymb} et \paquet{amscd} (ces derniers pour des raisons
+% obscures). L\`a encore, il faut faire gaffe aux |\catcode|s.
+% \begin{macrocode}
+ \ifsmf@upitparen \catcode`)=13 \catcode`(=13 \fi
+ \catcode`!=13 \catcode`;=13 \catcode`:=13 \catcode`?=13
+ \RequirePackage{url,xspace}
+ \RequirePackage{amssymb,amscd}
+ \ifsmf@upitparen \catcode`)=12 \catcode`(=12 \fi
+ \catcode`!=12 \catcode`;=12 \catcode`:=12 \catcode`?=12
+% \end{macrocode}
+% Fin du chargement des divers paquetages...
+% \begin{macrocode}
+\fi
+% \end{macrocode}
+% Pour garder des traces des polices CM.
+% \begin{macrocode}
+\def\smf@restorecmr{%
+ \renewcommand{\rmdefault}{cmr}
+ \renewcommand{\sfdefault}{cmss}
+ \renewcommand{\ttdefault}{cmtt}}
+% \end{macrocode}
+% Auteurs/\'editeurs
+% \begin{macrocode}
+\newif\ifsmf@editor
+\def\editor{\global\smf@editortrue\author}
+% \end{macrocode}
+% Informations de la page de garde, comit\'e de r\'edaction, prix, num\'ero
+% de t\'el\'ephone, etc.
+% \begin{macrocode}
+\newif\ifsubventionCNRS\subventionCNRSfalse
+\newif\ifsubventionMCC\subventionMCCfalse
+\newif\ifsubventionCNRSMCC\subventionCNRSMCCfalse
+\def\smf@year{}
+\def\smfyear#1{\def\smf@year{#1}\year#1\relax}
+\def\@setyear{\ifx\smf@year\@empty\number\year\else\smf@year\fi}
+\def\comitedered#1{\def\@comitedered{#1}}
+\let\@comitedered\@empty
+\def\comitedir#1{\def\@comitedir{#1\unskip\ (dir.)}}
+\let\@comitedir\@empty
+\let\smf@commparitaire\@empty
+\newif\ifEDP
+\def\tarifAbo#1#2#3{% %% Europe, Hors Europe (euros), Hors Europe ($)
+ \def\@tarifAboEurope{#1}%
+ \def\@tarifAboHors{#2}%
+ \def\@tarifAboDolHors{#3}}
+\let\@tarifAboEurope\@empty
+\newif\ifsmf@tarifs
+\def\tarifNum#1#2{% %% Euro, $
+ \smf@tarifstrue
+ \def\@tarifNum{#1}%
+ \def\@tarifNumDol{#2}}
+\let\@tarifNum\@empty
+\let\@tarifNumDol\@empty
+\def\secretariatSMF#1{\def\@secretariatSMF{#1}}
+\let\@secretariatSMF\@empty
+\def\telSMF#1{\def\@telSMF{#1}}
+\let\@telSMF\@empty
+\def\emailSMF#1{\def\@emailSMF{#1}}
+\let\@emailSMF\@empty
+\def\ISBN#1{\def\@isbn{#1}}
+\let\@isbn\@empty
+\def\ISSN#1{\def\@issn{#1}}
+\let\@issn\@empty
+\def\smf@Directeur{Directeur\xspace}
+% \end{macrocode}
+% Logos, commandes de volumes, etc.
+% \begin{macrocode}
+\def\smf@logo{Soci\'et\'e Math\'ematique de France}
+\def\smf@LOGO{SOCI\'ET\'E MATH\'EMATIQUE DE FRANCE}
+\def\ps@copyright{\ps@empty
+ \def\@oddfoot{\normalfont\Small\hfil {\smf@copyright}}}
+\def\smfvolume#1{\gdef\smf@volume{#1}}
+\def\smffascicule#1{\gdef\smf@fascicule{#1}}
+\def\smffirstpage#1{\gdef\smf@firstpage{#1}}
+\def\smflastpage#1{\gdef\smf@lastpage{#1}}
+\def\smf@volume{}
+\def\smf@fascicule{}
+\def\smf@firstpage{}
+\def\smf@lastpage{}
+\def\smf@journalhead{{\normalfont\itshape \smf@titrecourt\/}\\
+ \ifx\smf@volume\@empty \else {\bfseries\smf@volume}\unskip \fi
+ \ifx\smf@fascicule\@empty \else {\ (\smf@fascicule\unskip)}\fi
+ , \@setyear
+ \ifx\smf@firstpage\@empty \else
+ , p.\ \smf@firstpage --\smf@lastpage\fi}
+% \end{macrocode}
+% Si la classe est \texttt{smfbook}, on modifie la page de titre et les
+% hauts de pages en cons\'equence. On cr\'ee aussi une page de garde.
+% \begin{macrocode}
+\def\@tempb{smfbook}
+\ifx\@classname\@tempb
+ \def\smf@frontpages{}
+ \def\smf@pages{\ifx\smf@frontpages\@empty\else\smf@frontpages+\fi\smf@lastpage}
+ \def\mainmatter{\cleardoublepage
+ {\advance\c@page -1\xdef\smf@frontpages{\roman{page}}}%
+ \setcounter{page}{1}\def\baselinestretch{1.1}\normalfont
+ \pagenumbering{arabic}}
+ \def\ps@headings{\ps@empty
+ \def\@oddfoot{\normalfont\Tiny\hfil
+ {\smf@LOGO\ \@setyear}}%
+ \def\@evenfoot{\normalfont\tiny
+ {\MakeUppercase\smf@titrecourt
+ \ifx\smf@volume\@empty\else{\unskip\ \smf@volume}\fi\hfil}}%
+ \def\@evenhead{\normalfont\scriptsize
+ \rlap{\bfseries\thepage}\hfil \leftmark{}{}\hfil}%
+ \def\@oddhead{\normalfont\scriptsize
+ \hfil \rightmark{}{}\hfil \llap{\bfseries\thepage}}%
+ \let\@mkboth\org@markboth
+ \def\partmark {\@secmark\markboth\partrunhead\partname}%
+ \def\chaptermark {\@secmark\markboth\chapterrunhead\chaptername}%
+ \def\sectionmark {\@secmark\markright\sectionrunhead\sectionname}%
+ \def\indexmark {\@secmark\markboth\indexrunhead\indexname}%
+}
+% \end{macrocode}
+% \subsubsection{R\'esum\'e court}
+% A priori, il ne sert qu'\`a la derni\`ere page de couverture, et encore,
+% dans le cas o\`u le r\'esum\'e principal est jug\'e trop long.
+%
+% \begin{macrocode}
+\def\@shortabstract{}
+\def\@shortabstractlanguage{\@smflanguage}
+\newenvironment{shortabstract}{%
+ \begin{@genabstract}{shortabstract}%
+}{}
+% \end{macrocode}
+% La macro |\@setshortabstracthead| pr\'ecise comment composer l'ent\^ete du
+% r\'esum\'e.
+% \begin{macrocode}
+\def\@setshortabstracthead{}
+% \end{macrocode}
+% \begin{macrocode}
+\def\@setshortabstract{%
+ \ifx\@shortabstract\@empty\let\@shortabstract\@abstract\fi
+ \ifx\@shortabstract\@empty
+ \PackageWarning{smfgen}{An abstract is missing for the last page.}%
+ \else
+ \skippointrait
+ \@setgenabstract{shortabstract}
+ \fi
+ \global\let\@setshortabstract\relax}
+% \end{macrocode}
+% \subsubsection{R\'esum\'e court dans l'autre langue}
+% Comme le pr\'ec\'edent, mais dans la langue secondaire du texte.
+% \begin{macrocode}
+\def\@shortaltabstract{}
+\def\@shortaltabstractlanguage{\@smfaltlanguage}
+\newenvironment{shortaltabstract}{%
+ \begin{@genabstract}{shortaltabstract}%
+}{}
+% \end{macrocode}
+% La macro |\@setshortaltabstracthead| pr\'ecise comment composer l'ent\^ete du
+% r\'esum\'e.
+% \begin{macrocode}
+\def\@setshortaltabstracthead{}
+% \end{macrocode}
+% \begin{macrocode}
+\def\@setshortaltabstract{%
+ \ifx\@shortaltabstract\@empty\let\@shortaltabstract\@altabstract\fi
+ \ifx\@shortaltabstract\@empty
+ \PackageWarning{smfgen}{An alt-abstract is missing for the last page.}%
+ \else
+ \skippointrait
+ \@setgenabstract{shortaltabstract}
+ \fi
+ \global\let\@setshortaltabstract\relax}
+% \end{macrocode}
+% Si l'option \texttt{draft} est utilis\'ee, on n'affiche pas les pages de
+% couverture.
+% \begin{macrocode}
+\if@draft\else
+\def\AMS{$\mathcal{AMS}$}
+\def\@maketitle{\cleardoublepage
+ \begingroup
+ \smf@restorecmr
+ \parindent\z@
+ \c@page-1
+ \smf@gardei\smf@gardeii
+ \smf@titlei \smf@titleii \@setdedicatory \smf@titleiii
+ \cleardoublepage
+ \endgroup}
+% \end{macrocode}
+% Page exterieure de titre
+% \begin{macrocode}
+\def\smf@gardei{\clearpage\thispagestyle{empty}\bgroup
+ \vspace*{-2cm}\enlargethispage{2cm}
+ \topskip\z@skip
+ \begin{raggedleft}
+ \bfseries
+ \ifsmf@editor{\Large \smfedbyname \par\medskip}\fi
+ \huge
+ \def\and{\par\medskip}\authors\par
+ \end{raggedleft}
+ \vfil
+ \hrule height 1pt
+ \vfil
+ \begin{raggedright}
+ \huge\bfseries\smf@boldmath
+ \baselineskip=1.2\baselineskip
+ \MakeUppercase\@title\par
+ \vfil
+ \hrule height 1pt
+ \vfil
+ {\large \MakeUppercase\smf@titre\nobreak
+ \ifx\smf@volume\@empty\else{\unskip\ \smf@volume}\fi\par}%
+ \end{raggedright}
+ \vfil\vfil
+ {\centering\large\bfseries \smf@logo\ \@setyear\par}
+ \vfilneg\egroup}
+% \end{macrocode}
+% Deuxi\`eme de couverture (adresses, ISBN, etc.)
+% \begin{macrocode}
+\def\smf@gardeii{\clearpage\thispagestyle{empty}\bgroup
+\vspace*{-2cm}\enlargethispage{2cm}
+\sffamily
+\multicolsep0pt
+\ifx\smf@commparitaire\@empty\else
+ {\hrule height1pt\vfil
+ \leftskip .1\textwidth plus 1fil minus .1\textwidth
+ \rightskip\leftskip\parfillskip0pt\relax
+ \smf@commparitaire\par\vfil}
+\fi
+\hrule height 1pt\vfil
+\begin{center}
+ {\bfseries\itshape Comit\'e de r\'edaction}\\ \bigskip
+ \begin{multicols}{2} \@comitedered \end{multicols}\par
+ \@comitedir\par
+ \vfil
+ {\bfseries\itshape Diffusion}\par\bigskip
+ \mbox {%
+ \vbox{\hsize=\ifEDP.32\else.5\fi\textwidth
+ Maison de la SMF \\ B.P. 67 \\ 13274 Marseille Cedex 9 \\ France \\
+ \texttt{smf@smf.univ-mrs.fr}}
+ \hss
+ \vbox{\hsize=\ifEDP.28\else.5\fi\textwidth
+ AMS \\ P.O. Box 6248 \\ Providence RI 02940 \\ USA \\
+ \texttt{www.ams.org}}
+ \ifEDP
+ \hss
+ \vbox{\hsize=.4\textwidth
+ EDP Sciences\\ 17, avenue du Hoggar\\ 91944 les Ulis cedex A\\ France\\
+ \texttt{www.edpsciences.com}}
+ \fi }\\
+ \vfil
+ {\bfseries\itshape Tarifs \@setyear}\par\medskip
+ {\itshape Vente au num\'ero :} \@tarifNum~\@FrenchCurrency\space
+ (\$\,\@tarifNumDol)\\
+ \ifx\@tarifAboEurope\@empty\else
+ {\itshape Abonnement}
+ \quad Europe : \@tarifAboEurope~\@FrenchCurrency,
+ hors Europe : \@tarifAboHors~\@FrenchCurrency\space
+ (\$\,\@tarifAboDolHors)\\\fi
+ \smallskip
+ Des conditions sp\'eciales sont accord\'ees aux membres de la SMF.\\
+ \vfil
+ {\bfseries\itshape Secr\'etariat
+ \ifx\@secretariatSMF\@empty\else : \@secretariatSMF\fi} \\
+ \smallskip
+ \smf@titre \\
+ Soci\'et\'e Math\'ematique de France \\
+ Institut Henri Poincar\'e, 11, rue Pierre et Marie Curie \\
+ 75231 Paris Cedex 05, France \\
+ \begin{tabular}{ccc}
+ T\'el : \@telSMF & $\bullet$& Fax : (33) 01 40 46 90 96\\
+ \texttt{\@emailSMF}& $\bullet$&\url{http://smf.emath.fr/}
+ \end{tabular}
+ \vfil
+ {\itshape
+ {\normalfont\copyright}\ \smf@logo\ \@setyear}\\
+\end{center}
+\medskip
+{\itshape\footnotesize\noindent
+ Tous droits r\'eserv\'es (article L~122--4 du Code de la propri\'et\'e
+ intellectuelle). Toute repr\'esentation ou reproduction int\'egrale ou
+ partielle faite sans le consentement de l'\'editeur est illicite.
+ Cette repr\'esentation ou reproduction par quelque proc\'ed\'e que ce soit
+ constituerait une contrefa\c con sanctionn\'ee par les articles L~335--2
+ et suivants du CPI. \par}
+\vfil
+\begin{center}
+ \ifx\@issn\@empty\else ISSN \@issn \\ \medskip\fi
+ \ifx\@isbn\@empty\else ISBN \@isbn \\ \fi
+\vfil
+ \smf@Directeur de la publication : \@dirpub\\
+\end{center}
+\vfil\hrule height 1pt
+\vfilneg\egroup}
+% \end{macrocode}
+% Page de titre int\'erieure
+% \begin{macrocode}
+\def\smf@titlei{\clearpage\thispagestyle{empty}
+\vspace*{-2cm}\enlargethispage{2cm}
+\bgroup
+\begin{center}\bfseries\smf@boldmath
+ {\Large \MakeUppercase\smf@titre\nobreak\ \smf@volume\par}
+ \vfil\vfil
+ {\huge\MakeUppercase\@title\par}
+ \vfil
+ \ifsmf@editor{\large \smfedbyname\par\medskip}\fi
+ \def\and{\par\medskip}\centering
+ {\LARGE\authors\par}
+ \vfil\vfil
+ {\Large \smf@logo\ \@setyear\par}
+ \ifsubventionCNRS
+ \smallskip{\small
+ Publi\'e avec le concours du Centre National
+ de la Recherche Scientifique\par}\fi
+ \ifsubventionMCC
+ \smallskip{\small
+ Publi\'e avec le concours du Minist\`ere de la
+ Culture et de la Communication\par}\fi
+ \ifsubventionCNRSMCC
+ \smallskip{\small
+ Publi\'e avec le concours du Centre National
+ de la Recherche Scientifique\\
+ et du Minist\`ere de la Culture et de
+ la Communication\par}\fi
+\end{center}
+\vfilneg
+\egroup}
+\def\smf@titleiii{\clearpage\thispagestyle{copyright}
+ \markboth{\@nx\shortauthors}{\@nx\shorttitle}
+ %% INSERER UNE IMAGE
+ \null
+ \vskip 12\medskipamount plus 8\medskipamount
+ \begin{center}\Large\bfseries\smf@boldmath
+ {\MakeUppercase\@title\par}
+ \vskip 4\medskipamount plus 2\medskipamount
+ \ifsmf@editor{\smfedbyname\ }\fi
+ \def\and{,\ \penalty-1}\authors\par
+ \end{center}
+ \vskip 8\medskipamount plus 4 \medskipamount
+ \@setabstract\par
+ \vskip 1\medskipamount plus 1\medskipamount
+ \penalty-100
+ \@setaltabstract\par
+}
+% \end{macrocode}
+% Troisi\`eme de courverture, instructions aux auteurs.
+% \begin{macrocode}
+\def\smf@gardeiii{%
+ \thispagestyle{empty}\bgroup
+ \vspace*{-2cm}\enlargethispage{2cm}
+ \smf@restorecmr
+ \sffamily\footnotesize
+ \columnseprule.4pt\multicolsep\z@
+ \hrule height 1pt\vfil
+ {\centering\itshape\bfseries Instructions aux auteurs\par}
+ \bigskip
+ \begin{multicols}{2}
+ \selectlanguage{french}
+ \texteplaquettefrancais\par \medskip
+ \instructionsfrancais\par
+ \end{multicols}
+ \vfil\hrule\vfil
+ {\centering \itshape\bfseries Instructions to Authors\par}
+ \bigskip
+ \begin{multicols}{2}
+ \selectlanguage{english}
+ \texteplaquetteenglish \par\medskip
+ \instructionsenglish\par
+ \end{multicols}
+ \vfil\hrule height 1pt\vfilneg\egroup}
+% \end{macrocode}
+% Quatri\`eme de couverture, r\'esum\'es (\'eventuellement raccourcis).
+% \begin{macrocode}
+\def\smf@gardeiv{\clearpage\thispagestyle{empty}\bgroup\large
+ \smf@restorecmr
+ \mbox{}\vfil
+ \@setshortabstract
+ \bigskip
+ \@setshortaltabstract
+ \vfil\egroup}
+% \end{macrocode}
+% \DescribeMacro{\specialaddress}
+% \DescribeMacro{\specialaddresses}
+% \DescribeMacro{\@setspecialaddresses}
+% Pour \emph{Documents} et \emph{Cours Sp\'ecialis\'es}, l'adresse est
+% mise en page diff\'eremment des autres s\'eries: sur la quatri\`eme de
+% couverture. On utilise pour cela la macro |\specialaddress| qui contient
+% tout le texte qu'on veut afficher, un par auteur en th\'eorie.
+% \begin{macrocode}
+\let\specialaddresses\@empty
+\newcommand{\specialaddress}[2][]
+ {\g@addto@macro\specialaddresses{\specialaddress{#1}{#2}}}
+\def\@setspecialaddresses{\par\nobreak
+ \begingroup
+ \normalfont
+ \def\author##1{\par\bigskip}%
+ \long\def\address##1##2{\par
+ \begin{quote}\itshape
+ \ignorespaces##2\par\end{quote}}%
+ \def\curraddr##1##2{}%
+ \let\email\curraddr
+ \let\urladdr\curraddr
+ \addresses
+ \endgroup
+}
+% \end{macrocode}
+% Macros g\'en\'eriques pour la liste des revues
+% \begin{macrocode}
+\def\smf@curyear{0}
+\def\smf@curvol{0}
+\def\smf@printvol[#1/#2/#3]{#1#2}
+\def\smflabel#1{% %%% exemple : {241/***}, ou {68}
+ \setbox0=\hbox{\smf@printvol[#1//].\ }\leftskip=\wd0}
+\def\smf@revue #1#2#3#4{%
+%% {annee}{numero/etoiles}{auteur}{titre}
+ \def\smf@newyear{#1}\def\smf@newvol{#2}%
+ \ifx\smf@curyear\smf@newyear\else
+ \smallskip \penalty -100
+ {\centering {\bfseries #1\par\nobreak\smallskip\nobreak}}
+ \fi
+ \ifx\smf@curvol\smf@newvol\else
+ \leavevmode\llap{\smf@printvol [#2//].\ }\fi
+ \@ifempty{#3}{#4}{#3~--\ {\itshape #4}}
+ \par\nobreak
+ \def\smf@curyear{#1}\def\smf@curvol{#2}}
+\def\smf@liste{}
+\def\smf@pubfinale{}
+% \end{macrocode}
+% Ce qu'il faut pour qu'\`a la fin, on ait les listes, etc.
+% \begin{macrocode}
+\def\smf@endbook{\smf@restorecmr
+ \clearpage
+ {\advance\c@page -1\xdef\smf@lastpage{\thepage}}%
+ \cleardoublepage \c@page 997
+ \smf@liste
+ \cleardoublepage \c@page 999
+ \smf@pubfinale
+ \cleardoublepage \c@page 1001
+ \smf@gardeiii \smf@gardeiv}
+\AtEndDocument{\smf@endbook}
+% \end{macrocode}
+% Le texte des instructions.
+% \begin{macrocode}
+\def\smf@combien{double}\def\smf@howmany{Two}
+\def\instructionsfrancais{%
+Le manuscrit doit \^etre envoy\'e en {\itshape \smf@combien} exemplaire au
+secr\'etariat des publications en pr\'ecisant le nom de la revue.
+
+Le fichier \emph{source} \TeX\ (un seul fichier par article ou
+monographie) peut aussi \^etre envoy\'e par courrier \'electronique ou
+ftp, \emph{sous r\'eserve} que sa compilation par le secr\'etariat SMF
+soit possible. Contacter le secr\'etariat \`a l'adresse \'electronique
+\texttt{\@emailSMF} pour obtenir des pr\'ecisions.
+
+La SMF recommande \emph{vivement} l'utilisation d'\AMS-\LaTeX\ avec les
+classes \texttt{smfart} ou \texttt{smfbook}, disponibles ainsi que leur
+documentation sur le serveur \url{http://smf.emath.fr/} ou sur demande au
+secr\'etariat des publications SMF.
+
+Les fichiers \AMS-\LaTeX\ au format \texttt{amsart} ou \texttt{amsbook},
+ainsi que les fichiers \LaTeX\ au format \texttt{article} ou
+\texttt{book} sont aussi les bienvenus. Ils seront saisis suivant
+les normes suivantes:
+\begin{itemize}
+\item taille des caract\`eres \'egale \`a 10~points (option \texttt{10pt});
+\item largeur du texte (\texttt{textwidth}) de 13~cm;
+\item hauteur du texte (\texttt{textheight}) \'egale \`a 21.5~cm;
+\item le texte \'etant en outre centr\'e sur une feuille A4
+(option \texttt{a4paper}).
+\end{itemize}
+
+Les autres formats \TeX\ et les autres types de traitement de texte
+ne sont pas utilisables par le secr\'etariat et sont \emph{fortement}
+d\'econseill\'es.
+
+Avant de saisir leur texte, les auteurs sont invit\'es \`a prendre
+connaissance du document \emph{Recommandations aux auteurs\/} disponible
+au secr\'etariat des publications de la SMF ou sur le serveur de la SMF.}
+
+\def\instructionsenglish{%
+{\itshape \smf@howmany} copies of the original ma\-nu\-script
+should be sent to the
+editorial board of the SMF, indicating to which publication the paper is
+being submitted.
+
+The \TeX\ \emph{source} file (a single file for each article or monograph)
+may also be sent by electronic mail or ftp, in a format suitable for
+typsesetting by the secretary.
+Please, send an email to \texttt{\@emailSMF} for precise information.
+
+The SMF has a \emph{strong} preference for \AMS-\LaTeX\ together with
+the documentclasses \texttt{smfart} or \texttt{smfbook}, available with
+their user's guide at \url{http://smf.emath.fr/} (Internet) or on request
+from the editorial board of the SMF.
+
+The \AMS-\LaTeX\ files using the documentclasses \texttt{amsart} or
+\texttt{amsbook}, or the \LaTeX\ files using the documentclasses
+\texttt{article} or \texttt {book} are also encouraged.
+They will be prepared following the rules below:
+\begin{itemize}
+\item font size equal to 10~points (\texttt{10pt} option);
+\item text width (\texttt{textwidth}): 13~cm;
+\item text height (\texttt{textheight}): 21.5~cm;
+\item the text being centered on a A4 page (\texttt{a4paper} option).
+\end{itemize}
+
+Files prepared with other \TeX\ dialects or other word processors cannot be
+used by the editorial board and are \emph{not} encouraged.
+
+Before preparing their electronic manuscript, the authors should read the
+\emph{Advice to authors\/}, available on request from the
+editorial board of the SMF or from the web site of the SMF.}
+\fi
+\else
+% \end{macrocode}
+% Et sinon, c'est que la classe est \texttt{smfart}\dots
+% \begin{macrocode}
+\def\@tempb{smfart}\ifx\@classname\@tempb
+\def\ps@headings{\ps@empty
+ \def\@oddfoot{\normalfont\Tiny\hfil
+ {\smf@LOGO\ {\@setyear}}}%
+ \def\@evenfoot{\normalfont\tiny
+ {\MakeUppercase\smf@titrecourt
+ \ifx\smf@volume\@empty\else{\unskip\ \smf@volume}\fi\hfil}}%
+ \def\@evenhead{\normalfont\scriptsize
+ \rlap{\bfseries\thepage}\hfil \leftmark{}{}\hfil}%
+ \def\@oddhead{\normalfont\scriptsize
+ \hfil \rightmark{}{}\hfil \llap{\bfseries\thepage}}%
+ \let\@mkboth\@gobbletwo}
+\AtBeginDocument{\smf@getfirstpage}
+\AtEndDocument{\smf@getlastpage}
+\def\smf@getfirstpage{\gdef\smf@firstpage{1}}
+\def\smf@getlastpage{\clearpage
+ {\advance\c@page-1 \xdef\smf@lastpage{\arabic{page}}}}
+\def\smf@pages{\smf@firstpage-\smf@lastpage}
+\fi\fi
+\ps@headings
+% \end{macrocode}
+% Le gras italique est pris dans la police times.
+% \begin{macrocode}
+\def\th@plain{%
+ \let\thm@indent\noindent
+ \thm@headfont{\fontfamily{ptm}\bfseries\itshape}%
+ \thm@notefont{\fontfamily{ptm}\bfseries\upshape}%
+ \thm@preskip.5\linespacing \@plus .5\linespacing
+ \thm@postskip\thm@preskip
+ \thm@headpunct{\MakePointrait}
+ \let\thmheadnl\relax
+ \itshape }
+\def\abstractheadfont{\fontfamily{ptm}\bfseries\itshape}
+% \end{macrocode}
+% \subsection{Table des mati\`eres et c\'esures}
+% \DescribeMacro{\emergencyhyphenate}
+% \begin{macrocode}
+\def\@savehyphenpenalty{\xdef\@tmphyphpenalty{\the\hyphenpenalty}}
+\def\@restorehyphenpenalty{%
+ \expandafter\expandafter\global\expandafter\hyphenpenalty\@tmphyphpenalty}
+\DeclareRobustCommand{\emergencyhyphenate}{\global\hyphenpenalty9999\relax}
+\def\@tocline#1#2#3#4#5#6#7{\relax
+ \@savehyphenpenalty
+ \ifnum #1>\c@tocdepth % then omit
+ \else
+ \par \addpenalty\@secpenalty\addvspace{#2}%
+ \begingroup \hyphenpenalty\tochyphenpenalty
+ \@ifempty{#4}{%
+ \@tempdima\csname r@tocindent\number#1\endcsname\relax
+ }{%
+ \@tempdima#4\relax
+ }%
+ \parindent\z@ \leftskip#3\relax
+ \advance\leftskip\@tempdima\relax
+ \advance\rightskip\@pnumwidth % plus1em
+ \parfillskip-\@pnumwidth
+ {#5{\leavevmode\hskip-\@tempdima #6}}%
+ \hskip 1ex\nobreak
+ \xleaders\hbox to1ex{\normalfont\hss.\hss}\hfil\nobreak
+ \hbox to\@pnumwidth{\@tocpagenum{#7}}\par
+ \nobreak
+ \endgroup
+ \fi
+ \@restorehyphenpenalty}
+% \subsection{Indication de changements}
+% \begin{macrocode}
+\def\smfmargin#1{\if@draft\marginpar{\ ? #1}\else\fi}
+\def\smfchange#1#2{\if@draft{\boldmath\bfseries #1}\smfmargin{#2}\else {#1}\fi}
+\def\smfredac#1#2{\smfmargin{R\'edaction de \og #1 \dots #2\fg}}
+\def\smfok{\smfmargin{OK}}
+%%\let\smfchangen\@firstoftwo
+%%\let\smfchangeo\@secondoftwo
+\def\smfchangen#1#2{#1}
+\def\smfchangeo#1#2{#2}
+% \end{macrocode}
+% \subsection{Macros diverses}
+% \begin{macrocode}
+\let\ldots\dots
+\let\emptyset\varnothing
+\let\skpt\skippointrait
+\let\dpl\displaystyle
+\def\sfrac#1#2{{#1}/{#2}}
+% \end{macrocode}
+% Pour que les arguments des |\bibitem| servent de labels.
+% \begin{macrocode}
+\def\manualbibitems{%
+ \let\oldbibitem\bibitem
+ \def\bibitem##1{\oldbibitem[##1]{##1}}}
+% \end{macrocode}
+% Pour que les arguments des |\bibitem| servent de labels.
+% \begin{macrocode}
+\def\manualbibitems{%
+ \let\oldbibitem\bibitem
+ \def\bibitem##1{\oldbibitem[##1]{##1}}}
+% \end{macrocode}
+% Finalement, on requiert \texttt{smfbib}.
+% \begin{macrocode}
+ \RequirePackage{smfbib}
+%</smfgen>
+% \end{macrocode}
+% \subsection{Ast\'erisque}
+% \begin{macrocode}
+%<*asterisque>
+\ProvidesPackage{smfasterisque}[2001/01/05 v1.4
+ Fichier additionnel pour Asterisque]
+\RequirePackageWithOptions{smfgen}
+\def\smf@plaintitre{asterisque}
+\def\smf@titre {Ast\'erisque}
+\let\smf@titrecourt\smf@titre
+\def\smf@copyright{\copyright\ \smf@titre
+ \ifx\smf@volume\@empty\else{\ \smf@volume\unskip}\fi
+ , SMF\ \@setyear}
+\def\smf@commparitaire{%
+\smf@titre\ est un p\'eriodique
+\mbox{de la Soci\'et\'e math\'ematique de France.} \par\medskip
+Num\'ero~\smf@volume,
+\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~\@setyear}
+
+\RequirePackage[asterisque]{smfvar}
+
+\secretariatSMF{Nathalie Christia\"en}
+\telSMF{(33) 01 44 27 67 99}
+\emailSMF{revues@smf.ens.fr}
+\ISSN{0303-1179}
+\EDPfalse
+\subventionCNRStrue
+
+\def\texteplaquettefrancais{%
+Revue internationale de haut niveau, \textit{Ast\'erisque} publie
+en fran\c cais et en anglais des monographies de qualit\'e, des
+s\'eminaires prestigieux, ou des comptes-rendus de grands colloques
+internationaux. Les textes sont choisis pour leur contenu original ou
+pour la nouveaut\'e de la pr\'esentation qu'ils donnent d'un domaine
+de recherche. Chaque volume est consacr\'e \`a un seul sujet, et tout
+le spectre des math\'ematiques est en principe couvert.}
+\def\texteplaquetteenglish{%
+\textit{Ast\'erisque} is a high level international journal which publishes
+excellent research monographs in French or in English, and proceedings of
+prestigious seminars or of outstanding international meetings. The texts
+are selected for the originality of their contents or the new presentation
+they give of some area of research. Each volume is devoted to a single
+topic, chosen, in principle, from the whole spectrum of mathematics.}
+
+\def\smf@liste{\cleardoublepage \pagestyle{empty}\bgroup
+ \parindent=0pt\sffamily \footnotesize
+ \begin{center}\bfseries\uppercase{Ast\'erisque}\end{center}
+ \medskip
+ \pretolerance2000\tolerance4000
+ \rightskip=0pt plus 10pt
+ \let\aster\smf@revue
+ \input asterisque.lst
+ \par\egroup}
+
+\def\smf@pubfinale{\cleardoublepage \pagestyle{empty}\bgroup
+ \parindent=0pt
+ \InputIfFileExists{pubfinale.tex}{}{}
+ \par\egroup}
+
+\def\smf@gardeiv{\clearpage\thispagestyle{empty}\bgroup
+ \large\centering
+ \smf@restorecmr
+ \null \vfil
+ \fboxsep 1cm
+ \fbox{\begin{minipage}[t]{11cm}{\@setshortabstract}\end{minipage}}
+%% \vfil
+%% \fbox{\begin{minipage}[t]{11cm}{\@setshortaltabstract}\end{minipage}}
+ \egroup}
+%</asterisque>
+% \end{macrocode}
+% \subsection{Bulletin de la SMF}
+% \begin{macrocode}
+%<*bulletin>
+\ProvidesPackage{smfbulletin}[2002/02/07 v1.6b
+ Fichier additionnel pour le Bulletin de la SMF]
+\DeclareOption*{\PassOptionsToPackage{\CurrentOption}{smfgen}}
+\DeclareOption{master}{\PassOptionsToPackage{master}{smfmulti}}
+\DeclareOption{slave}{\PassOptionsToPackage{slave}{smfmulti}}
+\ProcessOptions\relax
+\RequirePackage{smfgen}
+\RequirePackage{smfmulti}
+ \ifsmf@slave
+ \def\frontmatter{}\def\mainmatter{}\def\backmatter{}
+ \else
+ \setcounter{tocdepth}{0}
+ \addto\smf@captionsfrench{\def\contentsname{Sommaire}}
+ \fi
+\def\smf@plaintitre{bulletin}
+\def\smf@titre {Bulletin de la Soci\'et\'e math\'ematique de France}
+\def\smf@titrecourt{Bull.\ Soc.\ math.\ France}
+\def\smf@copyright{\copyright\ \smf@titre
+ \ifx\smf@volume\@empty\else{\ \smf@volume\unskip}\fi,\ \@setyear}
+\def\smf@commparitaire{%
+\mbox{Le \smf@titre}\ est un p\'eriodique
+trimestriel \mbox{de la Soci\'et\'e math\'ematique de France.} \par\medskip
+Fascicule~\smf@fascicule, tome~\smf@volume,
+\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~\@setyear}
+
+\let\ps@copyright\ps@empty
+
+\textheight 18cm
+\textwidth 12cm
+\addtolength{\oddsidemargin}{.5cm}
+\addtolength{\evensidemargin}{.5cm}
+\addtolength{\topmargin}{.5cm}
+\headheight=10pt
+\headsep 7mm
+\footskip 7mm
+\arraycolsep 1.5pt
+\abstractmargin\normalparindent
+
+\RequirePackage[bulletin]{smfvar}
+
+\secretariatSMF{Nathalie Christia\"en et Raymond S\'eroul}
+\telSMF{(33) 01 44 27 67 99}
+\emailSMF{revues@smf.ens.fr}
+\ISSN{0037-9484}
+\EDPfalse
+\subventionCNRStrue
+
+\def\texteplaquettefrancais{%
+Le Bulletin est un p\'eriodique \`a vocation internationale, couvrant
+l'ensemble des math\'ematiques, comme en t\'emoignent le choix des articles
+publi\'es en fran\c cais et en anglais, ainsi que la composition du
+Comit\'e de r\'edaction. Par une politique scientifique rigoureuse, il
+entend \^etre parmi les meilleures revues internationales, tout en
+r\'eservant une large place aux travaux de jeunes chercheurs.}
+
+\def\texteplaquetteenglish{The subjects treated by the \textit{Bulletin}
+cover the whole of mathematics. The articles, written in French or English,
+are submitted to an editor who is chosen from among the best international
+specialists in the area. Articles submitted are original and the results
+are thoroughly demonstrated.}
+
+\def\instructionsfrancais{%
+Le manuscrit doit \^etre envoy\'e en {\itshape \smf@combien} exemplaire au
+secr\'etariat des publications en pr\'ecisant le nom de la revue.
+
+Le fichier \emph{source} \TeX\ (un seul fichier par article) peut aussi
+\^etre envoy\'e par courrier \'electronique ou
+ftp, \emph{sous r\'eserve} que sa compilation par le secr\'etariat SMF
+soit possible. Contacter le secr\'etariat \`a l'adresse \'electronique
+\texttt{\@emailSMF} pour obtenir des pr\'ecisions.
+
+La SMF recommande \emph{vivement} l'utilisation d'\AMS-\LaTeX\ avec sa
+classe \texttt{smfart} et le paquet \texttt{bull.sty}, disponibles ainsi
+que leur documentation sur le serveur \url{http://smf.emath.fr/} ou sur demande
+au secr\'etariat des publications SMF.
+
+Les fichiers \AMS-\LaTeX\ au format \texttt{amsart},
+ainsi que les fichiers \LaTeX\ au format \texttt{article} sont aussi les
+bienvenus. Ils seront saisis suivant
+les normes suivantes:
+\begin{itemize}
+\item taille des caract\`eres \'egale \`a 10~points (option \texttt{10pt});
+\item largeur du texte (\texttt{textwidth}) de 12~cm;
+\item hauteur du texte (\texttt{textheight}) \'egale \`a 18~cm;
+\item le texte \'etant en outre centr\'e sur une feuille A4
+(option \texttt{a4paper}).
+\end{itemize}
+
+Les autres formats \TeX\ et les autres types de traitement de texte
+ne sont pas utilisables par le secr\'etariat et sont \emph{fortement}
+d\'econseill\'es.
+
+Avant de saisir leur texte, les auteurs sont invit\'es \`a prendre
+connaissance du document \emph{Recommandations aux auteurs\/} disponible
+au secr\'etariat des publications de la SMF ou sur le serveur de la SMF.}
+
+\def\instructionsenglish{%
+{\itshape \smf@howmany} copies of the original manu\-script should be sent to
+the
+editorial board of the SMF, indicating to which publication the paper is
+being submitted.
+
+The \TeX\ \emph{source} file (a single file for each article)
+may also be sent by electronic mail or ftp, in a format suitable for
+typsesetting by the secretary.
+Please, send an email to \texttt{\@emailSMF} for precise information.
+
+The SMF has a \emph{strong} preference for \AMS-\LaTeX\ together with
+the documentclass \texttt{smfart} and the package \texttt{bull.sty},
+available with their user's guide at \url{http://smf.emath.fr/} (Internet)
+or on request from the editorial board of the SMF.
+
+The \AMS-\LaTeX\ files using the documentclass \texttt{amsart}
+or the \LaTeX\ files using the documentclass
+\texttt{article} are also encouraged.
+They will be prepared following the rules below:
+\begin{itemize}
+\item font size equal to 10~points (\texttt{10pt} option);
+\item text width (\texttt{textwidth}): 12~cm;
+\item text height (\texttt{textheight}): 18~cm;
+\item the text being centered on a A4 page (\texttt{a4paper} option).
+\end{itemize}
+
+Files prepared with other \TeX\ dialects or other word processors cannot be
+used by the editorial board and are \emph{not} encouraged.
+
+Before preparing their electronic manuscript, the authors should read the
+\emph{Advice to authors\/}, available on request from the
+editorial board of the SMF or from the web site of the SMF.}
+
+\def\smf@combien{triple}\def\smf@howmany{Three}
+\def\th@plain{%
+ \let\thm@indent\noindent
+ \thm@headfont{\normalfont\scshape}%
+ \thm@notefont{\normalfont}%
+ \thm@preskip.5\linespacing \@plus .5\linespacing\relax
+ \thm@postskip\thm@preskip
+ \thm@headpunct{\MakePointrait}
+ \let\thmheadnl\relax
+ \itshape }
+\def\abstractheadfont{\normalfont\scshape}
+
+\def\bibliofont{\normalfont}
+\def\specialsection{\@startsection{section}{1}%
+ \z@{2\linespacing\@plus\linespacing}{.5\linespacing}%
+ {\centering\normalfont\MakeUppercase}}
+\def\bibliosection{\let\refname\bibname\specialsection}
+\def\@cite#1#2{{%
+ \m@th\upshape\mdseries[{#1}{\if@tempswa, #2\fi}]}}
+
+\def\smf@enddoc{}
+\renewcommand{\author}[2][]{%
+ \ifx\@empty\authors
+ \gdef\shortauthors{#1}\gdef\authors{#2}%
+ \else
+ \g@addto@macro\shortauthors{\and#1}%
+ \g@addto@macro\authors{\and#2}%
+ \fi
+ \g@addto@macro\addresses{\author{#2}}%
+}
+\def\@setaddresses{\begingroup
+ \rightskip=0pt plus 1cm
+ \emergencystretch .5\textwidth
+ \exhyphenpenalty=-100
+ \interlinepenalty\@M
+ \def\baselinestretch{1}% \normalfont\footnotesize
+ \def\\{\unskip, \penalty-10\ignorespaces}%
+ \def\cond@bullet {{\setbox0\hbox{\quad$\bullet$\quad}%
+ \hskip 0pt plus 3cm\penalty -30\hskip 0pt plus -3cm
+ \cleaders \copy0 \hskip\wd0 }}%
+ \def\firstauthor##1{{\scshape ##1}\let\address\firstaddress
+ \let\author\otherauthor}%
+ \def\otherauthor##1{\par\nobreak
+ {\scshape ##1}\let\address\firstaddress}%
+ \def\firstaddress##1##2{\unskip, \let\address\otheraddress
+ \penalty-20\ignorespaces##2}%
+ \def\otheraddress##1##2{\cond@bullet \ignorespaces##2}%
+ \let\author\firstauthor
+ \let\address\firstaddress
+ \def\curraddr{\address}%
+ \def\email##1##2{\@ifnotempty{##2}%
+ {\cond@bullet
+ \hbox{\itshape E-mail~:}~{\ttfamily\ignorespaces ##2}}}%
+ \def\urladdr##1##2{\@ifnotempty{##2}%
+ {\cond@bullet
+ {\itshape Url~:}~{\ttfamily\ignorespaces ##2}\par}}%
+ \addresses
+ \endgroup}
+\def\smf@boldmath{\mathversion{bold}}
+\def\@setdate{{\itshape\@date}} %% enleve le \@@par
+\def\smf@byfont{\scshape}
+\csname smf@byauthorfalse\endcsname %% ``par'' et auteur sur la meme ligne
+\def\smf@authorfont{\scshape}
+\def\@endmaketitlehook{}%
+\def\@maketitlehook{\bgroup
+ \normalparindent0pt
+ \footnotetext{%
+ \ifx\@empty\@date\else\@setdate\par\smallskip\fi
+ \@setaddresses\par\smallskip
+ \def\abstractheadfont{}
+ \ifx\@empty\@subjclass\else\@setsubjclass\par\smallskip\fi
+ \ifx\@empty\@keywords\else\@setkeywords\par\smallskip\fi
+ \ifx\@empty\thankses\else \@setthanks\par\smallskip\fi
+ \par\bigskip\tiny
+ {\MakeUppercase\smf@titre}\hfil\nobreak
+ \hbox{\@issn/\@setyear/\smf@firstpage/$\$\,5.00$}{\parfillskip=0pt\par}
+ \copyright\ \smf@logo\par}
+ \egroup}
+\def\ps@headings{\ps@empty
+\def\@oddfoot{\quad\normalfont\tiny{\MakeUppercase\smf@titre}\hfil}%
+ \def\@evenfoot{\quad\normalfont\tiny\scshape
+ tome\ifx\smf@volume\@empty\else{\unskip\ \smf@volume}\fi
+ \ --\
+ \@setyear
+ \ --\
+ n\textsuperscript{\normalfont o} \smf@fascicule\hfil}%
+ \def\@evenhead{\normalfont\scriptsize
+ \rlap{\bfseries\thepage}\hfil \leftmark{}{}\hfil}%
+ \def\@oddhead{\normalfont\scriptsize
+ \hfil \rightmark{}{}\hfil \llap{\bfseries\thepage}}%
+}
+\ps@headings
+
+\ifsmf@slave\else
+\def\@maketitle{\cleardoublepage
+ \begingroup
+ \smf@restorecmr
+ \parindent\z@
+ \c@page-1
+ \smf@gardei\smf@gardeii
+ \smf@titlei \smf@titleii \@setdedicatory \smf@titleiii
+ \cleardoublepage
+ \endgroup}
+
+% \def\smf@gardei{\clearpage\thispagestyle{empty}\bgroup
+% \vspace*{-2cm}\enlargethispage{2cm}
+% \topskip\z@skip
+% \begin{raggedright}
+% \bfseries
+% \Huge Bulletin \\
+% \large de la SOCI\'ET\'E MATH\'EMATIQUE DE FRANCE\\
+% \vfil
+% \LARGE
+% Tome \smf@volume\\
+% Fascicule \smf@fascicule\\
+% \vfil
+% \@setyear
+% \end{raggedright}
+% \vfil
+% \gdef\SMF@first{}\xdef\SMF@last{}
+% \smftableofcontents
+% \vfilneg\egroup}
+
+\def\smf@gardei{\clearpage\thispagestyle{empty}\bgroup
+ \vspace*{-2cm}\enlargethispage{2cm}%
+ \topskip\z@skip
+ \vfil
+ \gdef\SMF@first{}\xdef\SMF@last{}%
+ \def\odo@smftoc ##1{%
+ \ifx\smf@fascicule\smf@compilefascicule
+ \smf@read {##1}%
+ \def\@pnumwidth{3em}%
+ \makeatletter
+ \@tocline{-2}{6pt plus 2pt}{2em}{0pt}{}{%%%%% MODIF 12pt -> 6pt
+ {\def\smfandname{\&}\andify\smf@shortauthors
+ \bfseries\MakeUppercase{\smf@shortauthors}}
+ ---
+ {\let\\\relax\ignorespaces\smf@title\unskip\ }}%
+ {\smf@firstpage}%
+ \ifx\SMF@first\@empty\xdef\SMF@first{\smf@firstpage}\fi
+ \xdef\SMF@last{\smf@lastpage}
+ \fi}%
+ \def\contentsname{}\fontfamily{ptm}%
+ \emergencystretch3em
+ \renewcommand{\baselinestretch}{.9}\normalfont
+ \smftableofcontents
+ \vfilneg\egroup}
+
+\def\smftableofcontents{\let\do@smftoc\odo@smftoc\@starttoc{toc}{}}
+\def\smftableofarticles{\let\do@smftoc\odo@smftoc\@starttoc{toc}\contentsname}
+\def\smftableofpapers{\bgroup
+ \english
+ \let\do@smftoc\edo@smftoc\@starttoc{toc}\contentsname
+ \egroup}
+
+% smf@gardeii est OK
+
+\def\@starttoc#1#2{\begingroup
+ \@afterindenttrue
+ \let\@secnumber\@empty % for \@tocwrite and \chaptermark
+ \ifx\contentsname\@empty\else
+ {\centering\bfseries\huge
+ \MakeUppercase{\contentsname}\par}%
+ \bigskip\bigskip
+ \fi
+ \advance\rightskip2em
+ \advance\textwidth-1em \advance\hsize-1em
+ \makeatletter
+ \@input{\jobname.#1}%
+ \def\@tempa{toc}\def\@tempb{#1}\ifx\@tempa\@tempb\else
+ \if@filesw
+ \@xp\newwrite\csname tf@#1\endcsname
+ \immediate\@xp\openout\csname tf@#1\endcsname \jobname.#1\relax
+ \fi\fi
+ \global\@nobreakfalse \endgroup
+}
+
+\def\odo@smftoc #1{%
+ \ifx\smf@fascicule\smf@compilefascicule
+ \smf@read {#1}
+ \def\@pnumwidth{3em}
+ \makeatletter
+ \@tocline{-2}{12pt plus 2pt}{2em}{0pt}{}{%
+ {\def\smfandname{\&}\andify\smf@shortauthors
+ \bfseries\MakeUppercase{\smf@shortauthors}}
+ ---
+ {\let\\\relax\ignorespaces\smf@title\unskip\ }}%
+ {\smf@firstpage}%
+ \ifx\SMF@first\@empty\xdef\SMF@first{\smf@firstpage}\fi
+ \xdef\SMF@last{\smf@lastpage}
+ \fi}
+
+\def\edo@smftoc #1{%
+ \ifx\smf@fascicule\smf@compilefascicule
+ \smf@read {#1}
+ \def\@pnumwidth{3em}
+ \makeatletter
+ \@tocline{-2}{12pt plus 2pt}{2em}{0pt}{}{%
+ {\def\smfandname{\&}\andify\smf@shortauthors
+ \bfseries\MakeUppercase{\smf@shortauthors}}
+ ---
+ {\let\\\relax\ignorespaces\smf@etitre\unskip\ }}%
+ {\smf@firstpage}%
+ \ifx\SMF@first\@empty\xdef\SMF@first{\smf@firstpage}\fi
+ \xdef\SMF@last{\smf@lastpage}
+ \fi}
+
+\def\smf@titlei{%
+ \cleardoublepage\thispagestyle{empty}
+ \parindent=0pt
+ \hrule height 1pt
+ \bigskip
+ \vbox to 0pt{\edef\smf@firstpage{\SMF@first}\edef\smf@lastpage{\SMF@last}%
+ \noindent\@xp\ifx\csname smf@journalhead\endcsname\relax
+ \else \smf@journalhead\fi
+ \par\vss}%
+ \vfill
+ \smftableofarticles
+ \vfill\hbox{}
+}
+
+\def\smf@titleii{%
+ \clearpage\thispagestyle{empty}
+ \parindent=0pt
+ \hrule height 1pt
+ \bigskip
+ \vbox to 0pt{\edef\smf@firstpage{\SMF@first}\edef\smf@lastpage{\SMF@last}%
+ \noindent\@xp\ifx\csname smf@journalhead\endcsname\relax
+ \else \smf@journalhead\fi
+ \par\vss}%
+ \vfill
+ \smftableofpapers
+ \vfill\hbox{}
+}
+
+\def\smf@titleiii{}
+
+\def\smf@fasciculefinal{4}
+\def\smf@tableannuelle{%
+ \cleardoublepage
+ \thispagestyle{empty}\pagestyle{empty}
+ \bgroup
+ \begin{center}
+ {\LARGE
+ BULLETIN DE LA\par
+ \vskip3mm
+ SOCI\'ET\'E MATH\'EMATIQUE DE FRANCE\par}
+ \vskip8mm
+ Tome \smf@volume, ann\'ee \@setyear, fascicules 1 \`a 4\par
+ \vskip8mm
+ {\large\bfseries TABLE ANNUELLE\par}
+ \vskip8mm
+ ---------\par
+ \vskip12mm
+ \end{center}
+ \def\@pnumwidth{2.5em}
+ \def\do@smftoc ##1{\bgroup
+ \smf@read {##1}%
+ \makeatletter
+ \@tocline{-2}{6pt plus 1pt minus 1pt}{0pt}{0pt}{}{%
+ {\def\smfandname{\&}\andify\smf@shortauthors
+ \scshape\smf@shortauthors}
+ ---
+ {\itshape\let\\\relax\ignorespaces\smf@title\unskip\ }}%
+ {\smf@firstpage}
+ \egroup}
+ \makeatletter\input{\jobname.tocan}
+ \egroup
+}
+
+\def\smf@printvol[#1/#2/#3]{#1\@ifnotempty{#2}{/#2}}
+\def\smf@liste{%
+ \ifx\smf@compilefascicule\smf@fasciculefinal
+ \tochyphenpenalty9999
+ \smf@tableannuelle
+ \fi
+ \cleardoublepage \pagestyle{empty}\bgroup
+ \parindent=0pt\sffamily\footnotesize
+ \begin{center}
+ {\bfseries\MakeUppercase
+ {M\'emoires de la Soci\'et\'e math\'ematique de France}}\par
+ Nouvelle s\'erie
+ \end{center}
+ \bigskip
+ \footnotesize
+ \pretolerance2000\tolerance4000
+ \rightskip=0pt plus 10pt
+ \let\memoire\smf@revue
+ \input memoires.lst
+ \par\egroup}
+
+\def\smf@pubfinale{\cleardoublepage \pagestyle{empty}\bgroup
+ \parindent=0pt
+ \InputIfFileExists{pubfinale.tex}{}{}
+ \par\egroup}
+
+\def\smf@gardeiv{\clearpage}
+
+\def\currentfascicule#1{\def\smf@fascicule{#1}}
+\def\smffascicule#1{\def\smf@fascicule{#1}\gdef\smf@compilefascicule{#1}}
+
+\newif\if@makefasc
+
+\newenvironment{fascicule}[1]{%
+ \currentfascicule{#1}
+ \addtocontents{toc}{\protect\currentfascicule{#1}}
+ \ifx\smf@fascicule\smf@compilefascicule
+ \@makefasctrue
+ \else\@makefascfalse
+ \fi
+}{\global\c@page\the\c@page}
+
+\fi
+%</bulletin>
+% \end{macrocode}
+% \subsection{Bulletin (fichier pour les auteurs)}
+% \begin{macrocode}
+%<*bull>
+\ProvidesPackage{smfbull}[2001/10/17 v1.0c
+ Fichier additionnel pour la soumission des articles au Bulletin]
+
+\let\ps@copyright\ps@empty
+
+\textheight 18cm
+\textwidth 12cm
+\addtolength{\oddsidemargin}{.5cm}
+\addtolength{\evensidemargin}{.5cm}
+\addtolength{\topmargin}{.5cm}
+\headheight=10pt
+\arraycolsep 1.5pt
+\headsep 7mm
+\footskip 7mm
+\abstractmargin\normalparindent
+
+\def\th@plain{%
+ \let\thm@indent\noindent
+ \thm@headfont{\normalfont\scshape}%
+ \thm@notefont{\normalfont}%
+ \thm@preskip.5\linespacing \@plus .5\linespacing\relax
+ \thm@postskip\thm@preskip
+ \thm@headpunct{\MakePointrait}
+ \let\thmheadnl\relax
+ \itshape }
+\def\abstractheadfont{\normalfont\scshape}
+\def\smf@enddoc{}
+
+\renewcommand{\author}[2][]{%
+ \ifx\@empty\authors
+ \gdef\shortauthors{#1}\gdef\authors{#2}%
+ \else
+ \g@addto@macro\shortauthors{\and#1}%
+ \g@addto@macro\authors{\and#2}%
+ \fi
+ \g@addto@macro\addresses{\author{#2}}%
+}
+\edef\author{\@nx\@dblarg
+ \@xp\@nx\csname\string\author\endcsname}
+\def\@setaddresses{\begingroup
+ \rightskip=0pt plus 1cm
+ \emergencystretch .5\textwidth
+ \exhyphenpenalty=-100
+ \interlinepenalty\@M
+ \def\baselinestretch{1}% \normalfont\footnotesize
+ \def\\{\unskip, \penalty-10\ignorespaces}%
+ \def\cond@bullet {{\setbox0\hbox{\quad$\bullet$\quad}%
+ \hskip 0pt plus 3cm\penalty -30\hskip 0pt plus -3cm
+ \cleaders \copy0 \hskip\wd0 }}%
+ \def\firstauthor##1{{\scshape ##1}\let\address\firstaddress
+ \let\author\otherauthor}%
+ \def\otherauthor##1{\par\nobreak
+ {\scshape ##1}\let\address\firstaddress}%
+ \def\firstaddress##1##2{\unskip, \let\address\otheraddress
+ \penalty-20\ignorespaces##2}%
+ \def\otheraddress##1##2{\cond@bullet \ignorespaces##2}%
+ \let\author\firstauthor
+ \let\address\firstaddress
+ \def\curraddr{\address}%
+ \def\email##1##2{\@ifnotempty{##2}%
+ {\cond@bullet
+ \hbox{\itshape E-mail~:}~{\ttfamily\ignorespaces ##2}}}%
+ \def\urladdr##1##2{\@ifnotempty{##2}%
+ {\cond@bullet
+ {\itshape Url~:}~{\ttfamily\ignorespaces ##2}\par}}%
+ \addresses
+ \endgroup}
+\def\@setdate{{\itshape\@date}} %% enleve le \@addpunct. avant \@@par
+\def\smf@boldmath{\mathversion{bold}}
+\smf@byauthorfalse
+\def\smf@byfont{\normalfont\scshape}
+\def\smf@authorfont{\scshape}
+\def\@maketitlehook{\bgroup
+ \normalparindent 0pt
+ \ifx\@empty\@date\else\footnotetext{\@setdate\smallskip}\fi
+ \footnotetext{\@setaddresses\smallskip}%
+ \def\abstractheadfont{}
+ \ifx\@empty\@subjclass\else\footnotetext{\@setsubjclass\smallskip}\fi
+ \ifx\@empty\@keywords\else\footnotetext{\@setkeywords\smallskip}\fi
+ \ifx\@empty\thankses\else \footnotetext{\@setthanks\smallskip}\fi
+ \egroup}
+
+\def\bibliofont{\normalfont}
+\def\specialsection{\@startsection{section}{1}%
+ \z@{2\linespacing\@plus\linespacing}{.5\linespacing}%
+ {\centering\normalfont\MakeUppercase}}
+\def\bibliosection{\let\refname\bibname\specialsection}
+\def\@cite#1#2{{%
+ \m@th\upshape\mdseries[{#1}{\if@tempswa, #2\fi}]}}
+
+\def\frontmatter{}
+\def\mainmatter{}
+\def\backmatter{}
+%</bull>
+% \end{macrocode}
+% \subsection{Cours Sp\'ecialis\'es}
+% \begin{macrocode}
+%<*courspe>
+\ProvidesPackage{smfcourspe}[2002/09/01 v1.4
+ Fichier additionnel pour les Cours Specialises]
+\RequirePackageWithOptions{smfgen}
+\RequirePackage[courspe]{smfvar}
+\RequirePackage[greekstraight]{smfbask}
+\secretariatSMF{Nathalie Christia{\"e}n}
+\telSMF{(33) 01 44 27 67 99}
+\emailSMF{revues@smf.ens.fr}
+\ISSN{1284-6090}
+\EDPtrue
+
+\def\smf@plaintitre{cours-spe}
+
+%% POUR UTILISER SMFBASK%%
+\def\smf@restorecmr{}
+\def\th@plain{
+ \let\thm@indent\noindent
+ \thm@headfont{\bfseries\itshape}
+ \thm@notefont{\bfseries\upshape}
+ \thm@preskip.5\linespacing \@plus .5\linespacing
+ \thm@postskip\thm@preskip
+ \thm@headpunct{\MakePointrait}
+ \let\thmheadnl\relax
+ \itshape }
+\def\abstractheadfont{\bfseries\itshape}
+%%%%
+\def\smf@logo{Soci\'et\'e Math\'ematique de France}
+\def\smf@LOGO{SOCI\'ET\'E MATH\'EMATIQUE DE FRANCE}
+\def\smf@titre {Cours Sp\'ecialis\'es}
+\let\smf@titrecourt\smf@titre
+\def\smf@copyright{\copyright\ \smf@titre
+ \ifx\smf@volume\@empty\else{\unskip\ \smf@volume\unskip}\fi
+ , SMF\ \@setyear}
+
+
+\def\smf@titlei{\clearpage\thispagestyle{empty}
+\vspace*{-2cm}\enlargethispage{2cm}
+\bgroup
+\begin{center}\bfseries\smf@boldmath
+ \mbox{ }
+ \vfil\vfil
+ {\huge\MakeUppercase\@title\par}
+ \vfil
+ \ifsmf@editor{\large \smfedbyname\par\medskip}\fi
+ \def\and{\par\medskip}\centering
+ {\LARGE\authors\par}
+ \vfil\vfil
+ \mbox{ }
+\end{center}
+\vfilneg
+\egroup}
+\def\smf@titleii{\clearpage\thispagestyle{empty}\bgroup
+\vspace*{-2cm}\enlargethispage{2cm}
+\sffamily
+\multicolsep0pt
+\ifx\smf@commparitaire\@empty\else
+ {\vfil
+ \leftskip .1\textwidth plus 1fil minus .1\textwidth
+ \rightskip\leftskip\parfillskip0pt\relax
+ \smf@commparitaire\par\vfil}
+\fi
+\vfil
+\begin{center}
+ {\bfseries\itshape Comit\'e de r\'edaction}\\ \bigskip
+ \begin{multicols}{2} \@comitedered \end{multicols}\par
+ \@comitedir\par
+ \vfil
+ {\bfseries\itshape Diffusion}\par\bigskip
+ \mbox {%
+ \vbox{\hsize=\ifEDP.32\else.5\fi\textwidth
+ Maison de la SMF \\ B.P. 67 \\ 13274 Marseille Cedex 9 \\ France \\
+ \texttt{smf@smf.univ-mrs.fr}}
+ \hss
+ \vbox{\hsize=\ifEDP.28\else.5\fi\textwidth
+ AMS \\ P.O. Box 6248 \\ Providence RI 02940 \\ USA \\
+ \texttt{www.ams.org}}
+ \ifEDP
+ \hss
+ \vbox{\hsize=.4\textwidth
+ EDP Sciences\\ 17, avenue du Hoggar\\ 91944 les Ulis cedex A\\ France\\
+ \texttt{www.edpsciences.com}}
+ \fi }\\
+ \vfil
+ {\bfseries\itshape Tarifs \@setyear}\par\medskip
+ {\itshape Vente au num\'ero :} \@tarifNum~\@FrenchCurrency\space
+ (\$\,\@tarifNumDol)\\
+ \ifx\@tarifAboEurope\@empty\else
+ {\itshape Abonnement}
+ \quad Europe : \@tarifAboEurope~\@FrenchCurrency,
+ hors Europe : \@tarifAboHors~\@FrenchCurrency\space
+ (\$\,\@tarifAboDolHors)\\\fi
+ \smallskip
+ Des conditions sp\'eciales sont accord\'ees aux membres de la SMF.\\
+ \vfil
+ {\bfseries\itshape Secr\'etariat
+ \ifx\@secretariatSMF\@empty\else : \@secretariatSMF\fi} \\
+ \smallskip
+ \smf@titre \\
+ Soci\'et\'e Math\'ematique de France \\
+ Institut Henri Poincar\'e, 11, rue Pierre et Marie Curie \\
+ 75231 Paris Cedex 05, France \\
+ \begin{tabular}{ccc}
+ T\'el : \@telSMF & $\bullet$& Fax : (33) 01 40 46 90 96\\
+ \texttt{\@emailSMF}& $\bullet$&\url{http://smf.emath.fr/}
+ \end{tabular}
+ \vfil
+ {\itshape
+ {\normalfont\copyright}\ \smf@logo\ \@setyear}\\
+\end{center}
+\medskip
+{\itshape\footnotesize\noindent
+ Tous droits r\'eserv\'es (article L~122--4 du Code de la propri\'et\'e
+ intellectuelle). Toute repr\'esentation ou reproduction int\'egrale ou
+ partielle faite sans le consentement de l'\'editeur est illicite.
+ Cette repr\'esentation ou reproduction par quelque proc\'ed\'e que ce soit
+ constituerait une contrefa\c con sanctionn\'ee par les articles L~335--2
+ et suivants du CPI. \par}
+\vfil
+\begin{center}
+ \ifx\@issn\@empty\else ISSN \@issn \\ \medskip\fi
+ \ifx\@isbn\@empty\else ISBN \@isbn \\ \fi
+\vfil
+ \smf@Directeur de la publication : \@dirpub\\
+\end{center}
+\vfil
+\vfilneg\egroup}
+
+\def\smf@titleiii{\clearpage\thispagestyle{empty}
+\vspace*{-2cm}\enlargethispage{1cm}
+\bgroup
+\begin{center}\bfseries\smf@boldmath
+ {\Large \MakeUppercase\smf@titre\nobreak\ \smf@volume\par}
+ \vfil\vfil
+ {\huge\MakeUppercase\@title\par}
+ \vfil
+ \ifsmf@editor{\large \smfedbyname\par\medskip}\fi
+ \def\and{\par\medskip}\centering
+ {\LARGE\authors\par}
+ \vfil\vfil
+ {\Large \smf@logo\ \@setyear\par}
+ \ifsubventionCNRS
+ \smallskip{\small
+ Publi\'e avec le concours du Centre National
+ de la Recherche Scientifique\par}\fi
+ \ifsubventionMCC
+ \smallskip{\small
+ Publi\'e avec le concours du Minist\`ere de la
+ Culture et de la Communication\par}\fi
+ \ifsubventionCNRSMCC
+ \smallskip{\small
+ Publi\'e avec le concours du Centre National
+ de la Recherche Scientifique\\
+ et du Minist\`ere de la Culture et de
+ la Communication\par}\fi
+\end{center}
+\vfilneg
+\egroup}
+
+\def\smf@gardeii{\clearpage\thispagestyle{empty}\mbox{ }}
+\def\smf@gardeiii{\thispagestyle{empty}\mbox{ }}
+
+\def\texteplaquettefrancais{%
+La s\'erie \textit{Cours sp\'ecialis\'es} a pour vocation de publier des
+ouvrages de niveau correspondant au troisi\`eme cycle et qui n'exigent
+que les connaissances de base de la ma\^\i trise de math\'ematiques. Les
+auteurs s'appuient en g\'en\'eral sur un cours enseign\'e dans le cadre
+d'une formation doctorale. Le public vis\'e est celui des \'etudiants
+de troisi\`eme cycle, doctorants et chercheurs d\'ebutants.}
+
+\def\texteplaquetteenglish{%
+The role of the series \textit{Cours sp\'ecialis\'es} is to publish books
+of a moderately advanced (graduate) level, which only require a basic
+knowledge of elementary mathematics (undergraduate level). They are aimed
+at graduate students and beginners in mathematical research. Authors
+usually rely on lectures given in a graduate course.}
+
+\def\smf@liste{\cleardoublepage \pagestyle{empty}\bgroup
+ \parindent=0pt\sffamily \footnotesize
+ \begin{center}\bfseries\uppercase{Collection SMF}\end{center}
+ \vspace{3cm}
+ \begin{center}\bfseries
+ S\'erie~~\uppercase{S\'eminaires et Congr\`es}
+ \end{center}
+ \medskip
+ \pretolerance2000\tolerance4000
+ \rightskip=0pt plus 10pt
+ \let\collection\smf@revue
+ \input seminaires.lst
+ \vspace{1cm}
+ \begin{center}\bfseries
+ S\'erie~~\uppercase{Cours Sp\'ecialis\'es}
+ \end{center}
+ \medskip
+ \input courspe.lst
+ \par\egroup}
+\def\smf@pubfinale{\cleardoublepage \pagestyle{empty}\bgroup
+ \parindent=0pt
+ \InputIfFileExists{pubfinale.tex}{}{}
+ \par\egroup}
+\def\smf@gardeiv{\clearpage\thispagestyle{empty}\bgroup\large
+ \smf@restorecmr
+ \mbox{}\vfil
+ \@setshortabstract
+ \vspace {1cm}
+ \@setspecialaddresses
+ \vfil\egroup}
+%</courspe>
+% \end{macrocode}
+% \subsection{M\'emoires de la SMF}
+% \begin{macrocode}
+%<*memoires>
+\ProvidesPackage{smfmemoires}[2003/08/28 v1.4
+ Fichier additionnel pour les Memoires de la SMF]
+\RequirePackageWithOptions{smfgen}
+\def\smf@plaintitre{memoires}
+\def\smf@titre {M\'emoires de la SMF}%
+\let\smf@titrecourt\smf@titre
+\def\smf@copyright{\copyright\
+ M\'emoires de la Soci\'et\'e Math\'ematique de France
+ \ifx\smf@volume\@empty\else{\unskip\ \smf@volume\unskip}\fi
+ , SMF\ \@setyear}
+
+\RequirePackage[memoires]{smfvar}
+\secretariatSMF{Nathalie Christia\"en}
+\telSMF{(33) 01 44 27 67 99}
+\emailSMF{revues@smf.ens.fr}
+\ISSN{0249-633-X}
+\EDPfalse
+\subventionCNRStrue
+
+\def\texteplaquettefrancais{%
+Les \textit{M\'emoires} de la SMF publient, en fran\c cais ou en
+anglais, de longs articles de recherche, des monographies originales
+ou des s\'eries d'articles centr\'es sur un m\^eme sujet. Les volumes
+ont entre 100 et 150 pages environ.}
+\def\texteplaquetteenglish{%
+In the \textit{M\'emoires} of the SMF are published, in French or in
+English, long research articles, original research monographs or series of
+articles on the same topic of current research. Each volume should be
+approximately 100-150 pages long.}
+
+\def\th@plain{%
+ \let\thm@indent\noindent
+ \thm@headfont{\normalfont\sc}%
+ \thm@notefont{\normalfont}%
+ \thm@preskip.5\linespacing\@plus.5\linespacing
+ \thm@postskip\thm@preskip
+ \let\thmheadnl\relax
+ \thm@headpunct{\MakePointrait}
+ \itshape }
+
+\def\smf@printvol[#1/#2/#3]{#1\@ifnotempty{#2}{/#2}}
+\def\smf@liste{\cleardoublepage \pagestyle{empty}\bgroup
+ \parindent=0pt\sffamily\footnotesize
+ \begin{center}
+ {\bfseries\uppercase
+ {M\'emoires de la Soci\'et\'e math\'ematique de France}}\par
+ Nouvelle s\'erie
+ \end{center}
+ \bigskip
+ \footnotesize
+ \pretolerance2000\tolerance4000
+ \rightskip=0pt plus 10pt
+ \let\memoire\smf@revue
+ \input memoires.lst
+ \par\egroup}
+\def\smf@pubfinale{\cleardoublepage \pagestyle{empty}\bgroup
+ \parindent=0pt
+ \InputIfFileExists{pubfinale.tex}{}{}
+ \par\egroup}
+%</memoires>
+% \end{macrocode}
+% \subsection{Cours Sp\'ecialis\'es (version EDP Sciences)}
+% \begin{macrocode}
+%<*courspeedp>
+\ProvidesPackage{smfcourspeedp}[2000/02/27 v1.3
+ Fichier additionnel pour les Cours Specialises (EDP Sciences)]
+\PassOptionsToPackage{ptmbf}{smfgen}
+\RequirePackageWithOptions{smfgen}
+\RequirePackage[courspe]{smfvar}
+\RequirePackage[greekstraight]{smfbask}
+\secretariatSMF{Nathalie Christia{\"e}n}
+\telSMF{(33) 01 44 27 67 99}
+\emailSMF{revues@smf.ens.fr}
+\EDPtrue
+
+\def\smf@plaintitre{cours-spe}
+
+%% POUR UTILISER SMFBASK%%
+\def\smf@restorecmr{}
+\def\th@plain{
+ \let\thm@indent\noindent
+ \thm@headfont{\bfseries\itshape}
+ \thm@notefont{\bfseries\upshape}
+ \thm@preskip.5\linespacing \@plus .5\linespacing
+ \thm@postskip\thm@preskip
+ \thm@headpunct{\MakePointrait}
+ \let\thmheadnl\relax
+ \itshape }
+\def\abstractheadfont{\bfseries\itshape}
+%%%%
+
+\def\smf@logo{Soci\'et\'e Math\'ematique de France \& EDP-Sciences}
+\def\smf@LOGO{SOCI\'ET\'E MATH\'EMATIQUE DE FRANCE \& EDP-SCIENCES}
+\def\smf@titre {Cours Sp\'ecialis\'es}
+\let\smf@titrecourt\smf@titre
+\def\smf@copyright{\copyright\ \smf@titre
+ \ifx\smf@volume\@empty\else{\unskip\ \smf@volume\unskip}\fi
+ , SMF \& EDP-Sciences\ \@setyear}
+
+\def\texteplaquettefrancais{%
+La s\'erie \textit{Cours sp\'ecialis\'es} a pour vocation de publier des
+ouvrages de niveau correspondant au troisi\`eme cycle et qui n'exigent
+que les connaissances de base de la ma\^\i trise de math\'ematiques. Les
+auteurs s'appuient en g\'en\'eral sur un cours enseign\'e dans le cadre
+d'une formation doctorale. Le public vis\'e est celui des \'etudiants
+de troisi\`eme cycle, doctorants et chercheurs d\'ebutants.}
+
+\def\texteplaquetteenglish{%
+The role of the series \textit{Cours sp\'ecialis\'es} is to publish books
+of a moderately advanced (graduate) level, which only require a basic
+knowledge of elementary mathematics (undergraduate level). They are aimed
+at graduate students and beginners in mathematical research. Authors
+usually rely on lectures given in a graduate course.}
+\def\smf@liste{\cleardoublepage \pagestyle{empty}\bgroup
+ \parindent=0pt\sffamily \footnotesize
+ \begin{center}\bfseries\uppercase{Collection SMF}\end{center}
+ \vspace{3cm}
+ \begin{center}\bfseries
+ S\'erie~~\uppercase{S\'eminaires et Congr\`es}
+ \end{center}
+ \medskip
+ \pretolerance2000\tolerance4000
+ \rightskip=0pt plus 10pt
+ \let\collection\smf@revue
+ \input seminaires.lst
+ \vspace{1cm}
+ \begin{center}\bfseries
+ S\'erie~~\uppercase{Cours Sp\'ecialis\'es}
+ \end{center}
+ \medskip
+ \input courspe.lst
+ \par\egroup}
+\def\smf@pubfinale{\cleardoublepage \pagestyle{empty}\bgroup
+ \parindent=0pt
+ \InputIfFileExists{pubfinale.tex}{}{}
+ \par\egroup}
+
+\def\@setaddresses{\begingroup
+ \rightskip=0pt plus 1cm
+ \emergencystretch .5\textwidth
+ \exhyphenpenalty=-100
+ \interlinepenalty\@M
+ \def\baselinestretch{1}% \normalfont\footnotesize
+ \def\\{\unskip, \penalty-10\ignorespaces}%
+ \def\cond@bullet {\unskip
+ {\discretionary{}{}{\hbox{\ $\bullet$\ }}}}%
+ \def\firstauthor##1{{\scshape ##1}\let\address\firstaddress
+ \let\author\otherauthor}%
+ \def\otherauthor##1{\par\nobreak
+ {\scshape ##1}\let\address\firstaddress}%
+ \def\firstaddress##1##2{\unskip, \let\address\otheraddress
+ \penalty-20\ignorespaces##2}%
+ \def\otheraddress##1##2{\cond@bullet \ignorespaces##2}%
+ \let\author\firstauthor
+ \let\address\firstaddress
+ \def\email##1##2{\@ifnotempty{##2}%
+ {\cond@bullet
+ \hbox{\slshape E-mail~:}~{\ttfamily\ignorespaces ##2}}}%
+ \def\urladdr##1##2{\@ifnotempty{##2}%
+ {\cond@bullet
+ {\slshape Url~:}~{\ttfamily\ignorespaces ##2}\par}}%
+ \addresses
+ \endgroup}
+\def\@setdate{{\sl\@date}} %% enleve le \@@par
+
+
+\def\smf@titleii{\clearpage
+ \thispagestyle{empty}\mbox{ }
+}
+\def\smf@titleiii{%
+ \clearpage\thispagestyle{copyright}
+ \markboth{\@nx\shortauthors}{\@nx\shorttitle}
+ %% INSERER UNE IMAGE
+ \null
+ \vskip 12\medskipamount plus 8\medskipamount
+ \begin{center}\Large\bfseries\smf@boldmath
+ {\MakeUppercase\@title\par}
+ \vskip 4\medskipamount plus 2\medskipamount
+ \def\and{,\ \penalty-1}\authors\par
+ \end{center}
+ \vskip 8\medskipamount plus 4 \medskipamount
+ \@setabstract\par
+ \vskip 1\medskipamount plus 1\medskipamount
+ \penalty-100
+ \@setaltabstract\par\vfill\nopagebreak
+ \ifx\@empty\@subjclass
+ \ifx\@empty\@keywords\else
+ \hrule\medskip\ifx\@empty\addresses\else
+ \@setaddresses\par\medskip\fi
+ \@setkeywords\par\medskip
+ \ifx\@empty\@translators\else\@settranslators\medskip\fi
+ \ifx\@empty\thankses\else\@setthanks\fi
+ \ifx\@empty\@date\else\@setdate\fi
+ \hrule\vfill
+ \fi
+ \else
+ \hrule\medskip\ifx\@empty\addresses\else
+ \@setaddresses\par\medskip\fi
+ \@setsubjclass\par\medskip
+ \ifx\@empty\@keywords\else\@setkeywords\par\medskip\fi
+ \ifx\@empty\@translators\else\@settranslators\medskip\fi
+ \ifx\@empty\thankses\else\@setthanks\fi
+ \ifx\@empty\@date\else\@setdate\fi
+ \hrule\vfill
+ \fi
+ \vfilneg
+ }
+%</courspeedp>
+% \end{macrocode}
+% \subsection{Documents math\'ematiques}
+% \begin{macrocode}
+%<*documents>
+\ProvidesPackage{smfdocuments}[2000/10/12 v1.3b
+ Fichier additionnel pour Documents]
+\RequirePackageWithOptions{smfgen}
+\def\smf@plaintitre{documents}
+\def\smf@titre {Documents Math\'ematiques}
+\def\smf@titrecourt{Documents Math\'ematiques}
+\def\smf@logo{Soci\'et\'e Math\'ematique de France}
+\def\smf@LOGO{SOCI\'ET\'E MATH\'EMATIQUE DE FRANCE}
+\def\smf@copyright{\copyright\ \smf@titre
+ \ifx\smf@volume\@empty\else{\unskip\ \smf@volume\unskip}\fi
+ , SMF\ \@setyear}
+%%
+\def\comitedir#1{\def\@comitedir{#1}}
+\RequirePackage[documents]{smfvar}
+%%
+\secretariatSMF{Nathalie Christia\"en}
+\telSMF{(33) 01 44 27 67 99}
+\emailSMF{revues@smf.ens.fr}
+\ISSN{1629-4939}
+\EDPtrue
+\subventionCNRSfalse
+\def\smf@titleii{\clearpage\thispagestyle{empty}\enlargethispage{1cm}
+\bgroup
+\sffamily
+\multicolsep0pt
+\begin{center}
+ {\bfseries\itshape \smf@titre\par\bigskip
+ s\'erie dirig\'ee par \@comitedir}\par
+ \vfill
+ {\bfseries\itshape Secr\'etariat
+ \ifx\@secretariatSMF\@empty\else : \@secretariatSMF\fi} \\
+ \smallskip
+ \smf@titre \\
+ Soci\'et\'e Math\'ematique de France \\
+ Institut Henri Poincar\'e, 11, rue Pierre et Marie Curie \\
+ 75231 Paris Cedex 05, France \\
+ \begin{tabular}{ccc}
+ T\'el : \@telSMF & $\bullet$& Fax : (33) 01 40 46 90 96\\
+ \texttt{\@emailSMF}& $\bullet$&\url{http://smf.emath.fr/}
+ \end{tabular}
+ \par\bigskip
+ {\itshape
+ {\normalfont\copyright}\ \smf@logo\ \@setyear}\\
+\end{center}
+\medskip
+{\itshape\footnotesize\noindent
+ Tous droits r\'eserv\'es (article L~122--4 du Code de la propri\'et\'e
+ intellectuelle). Toute repr\'esentation ou reproduction int\'egrale ou
+ partielle faite sans le consentement de l'\'editeur est illicite.
+ Cette repr\'esentation ou reproduction par quelque proc\'ed\'e que ce soit
+ constituerait une contrefa\c con sanctionn\'ee par les articles L~335--2
+ et suivants du CPI. \par}
+\par\bigskip
+\begin{center}
+ \ifx\@issn\@empty\else ISSN \@issn \\ \medskip\fi
+ \ifx\@isbn\@empty\else ISBN \@isbn \\ \fi
+\bigskip
+ \smf@Directeur de la publication : \@dirpub\\
+\end{center}
+\vfilneg\egroup}
+\def\smf@titlei{\clearpage\thispagestyle{empty}
+\vspace*{-2cm}\enlargethispage{2cm}
+\bgroup
+\begin{center}\bfseries\smf@boldmath
+ \mbox{ }
+ \vfil\vfil
+ {\huge\MakeUppercase\@title\par}
+ \vfil
+ \ifsmf@editor{\large \smfedbyname\par\medskip}\fi
+ \def\and{\par\medskip}\centering
+ {\LARGE\authors\par}
+ \vfil\vfil
+ \mbox{ }
+\end{center}
+\vfilneg
+\egroup}
+\def\smf@titleiii{\clearpage\thispagestyle{empty}
+\vspace*{-2cm}\enlargethispage{2cm}
+\bgroup
+\begin{center}\bfseries\smf@boldmath
+ {\Large \MakeUppercase\smf@titre\nobreak\ \smf@volume\par}
+ \vfil\vfil
+ {\huge\MakeUppercase\@title\par}
+ \vfil
+ \ifsmf@editor{\large \smfedbyname\par\medskip}\fi
+ \def\and{\par\medskip}\centering
+ {\LARGE\authors\par}
+ \vfil\vfil
+ {\Large \smf@logo\ \@setyear\par}
+ \ifsubventionCNRS
+ \smallskip{\small
+ Publi\'e avec le concours du Centre National
+ de la Recherche Scientifique\par}\fi
+ \ifsubventionMCC
+ \smallskip{\small
+ Publi\'e avec le concours du Minist\`ere de la
+ Culture et de la Communication\par}\fi
+ \ifsubventionCNRSMCC
+ \smallskip{\small
+ Publi\'e avec le concours du Centre National
+ de la Recherche Scientifique\\
+ et du Minist\`ere de la Culture et de
+ la Communication\par}\fi
+\end{center}
+\vfilneg
+\egroup}
+\def\smf@gardeii{\clearpage\thispagestyle{empty}\mbox{ }}
+\def\smf@gardeiii{%
+ \thispagestyle{empty}\mbox{ }}
+\def\smf@gardeiv{\clearpage\thispagestyle{empty}\bgroup\large
+ \smf@restorecmr
+ \mbox{}\vfil
+ \@setshortabstract
+ \vspace {1cm}
+ \@setspecialaddresses
+ \vfil\egroup}
+%</documents>
+% \end{macrocode}
+% \subsection{S\'eminaires et congr\`es}
+% \begin{macrocode}
+%<*seminaires>
+\ProvidesPackage{smfseminaires}[2000/10/12 v1.3b
+ Fichier additionnel pour Seminaires et Congres]
+\RequirePackageWithOptions{smfgen}
+\def\smf@plaintitre{seminaires}
+\def\smf@titre {S\'eminaires et Congr\`es}
+\def\smf@titrecourt{S\'eminaires \&\ Congr\`es}
+\def\smf@copyright{\copyright\ \smf@titre
+ \ifx\smf@volume\@empty\else{\unskip\ \smf@volume\unskip}\fi
+ , SMF\ \@setyear}
+%%
+\RequirePackage[seminaires]{smfvar}
+%%
+\secretariatSMF{Nathalie Christia\"en}
+\telSMF{(33) 01 44 27 67 99}
+\emailSMF{revues@smf.ens.fr}
+\ISSN{1285-2783}
+\EDPfalse
+\subventionCNRSfalse
+\def\texteplaquettefrancais{%
+La collection \textit{S\'eminaires \&\ Congr\`es} publie
+\'electroniquement, apr\`es avis favorable de son comit\'e de
+r\'edaction, les actes de manifestations scientifiques dans le domaine
+des math\'ematiques (congr\`es, colloques, \'ecoles d'\'et\'e, \ldots).
+L'essentiel du volume doit {\^e}tre compos{\'e} de textes originaux,
+complets (donc avec des d{\'e}monstrations) et sous leur forme d{\'e}finitive.
+Les textes de type \og survey \fg\ ou de synth{\`e}se sont admis {\`a}
+condition d'{\^e}tre bien {\'e}crits et dans une proportion ne devant pas
+d{\'e}passer le tiers du volume.
+}
+\def\texteplaquetteenglish{%
+The series \textit{S\'eminaires \&\ Congr\`es} publishes electronically
+proceedings of mathematical meetings (conferences, workshops, summer schools,
+\ldots),
+after acceptation by its editorial board.
+Most of the volume should consist of original articles, in a final form.
+Survey articles are accepted provided they are well written, but they should
+not make up more than one third of the volume.}
+\def\smf@liste{\cleardoublepage \pagestyle{empty}\bgroup
+ \parindent=0pt\sffamily \footnotesize
+\begin{center}\bfseries\uppercase{Collection SMF}\end{center}
+ \vspace{3cm}
+ \begin{center}\bfseries
+ S\'erie~~\uppercase{S\'eminaires et Congr\`es}
+ \end{center}
+ \medskip
+ \pretolerance2000\tolerance4000
+ \rightskip=0pt plus 10pt
+ \let\collection\smf@revue
+ \input seminaires.lst
+ \vspace{1cm}
+ \begin{center}\bfseries
+ S\'erie~~\uppercase{Cours Sp\'ecialis\'es}
+ \end{center}
+ \medskip
+ \input courspe.lst
+ \par\egroup}
+\def\smf@pubfinale{\cleardoublepage \pagestyle{empty}\bgroup
+ \parindent=0pt
+ \InputIfFileExists{pubfinale.tex}{}{}
+ \par\egroup}
+%</seminaires>
+% \end{macrocode}
+% \subsection{Panoramas et synth\`ese}
+% \begin{macrocode}
+%<*panoramas>
+\ProvidesPackage{smfpanoramas}[2000/10/13 v1.3b
+ Fichier additionnel pour Panoramas et Syntheses]
+\RequirePackageWithOptions{smfgen}
+\def\smf@plaintitre{panoramas}
+\def\smf@titre {Panoramas et Synth\`eses}
+\def\smf@titrecourt{Panoramas \&\ Synth\`eses}
+\def\smf@copyright{\copyright\ \smf@titre
+ \ifx\smf@volume\@empty\else{\unskip\ \smf@volume\unskip}\fi
+ , SMF\ \@setyear}
+%%
+\RequirePackage[panoramas]{smfvar}
+%%
+\secretariatSMF{Nathalie Christia\"en}
+\telSMF{(33) 01 44 27 67 99}
+\emailSMF{revues@smf.ens.fr}
+\ISSN{1272-3835}
+\EDPtrue
+\subventionCNRStrue
+\def\texteplaquettefrancais{%
+La s\'erie \textit{Panoramas et Synth\`eses} publie, en fran\c cais ou en
+anglais, des textes de 100 \`a 150 pages environ faisant le point sur
+l'\'etat pr\'esent d'un sujet math\'ematique. Dans une pr\'esentation soign\'ee,
+les auteurs s'attachent \`a mettre en \'evidence les difficult\'es, \`a donner
+un parfum des d\'emonstrations et un aper\c cu de l'histoire r\'ecente du
+sujet. Les textes, destin\'es \`a des math\'ematiciens professionnels non
+sp\'ecialistes, doivent \^etre utilisables par des \'etudiants de doctorat.}
+\def\texteplaquetteenglish{%
+In the series \textit{Panoramas et Synth\`eses} are published
+texts from 100 to 150 pages, in French or in English, which give an
+account of the present state of some mathematical area.
+The authors aim at explaining the main problems, while giving some
+flavour of the proofs and an overview of the recent developments of their
+subject. The texts, which are intended to be read by non-specialists,
+should be accessible to graduate students.}
+\def\smf@liste{\cleardoublepage \pagestyle{empty}\bgroup
+ \parindent=0pt\sffamily \footnotesize
+ \begin{center}\bfseries\uppercase{Panoramas et Synth\`eses}\end{center}
+ \medskip
+ \pretolerance2000\tolerance4000
+ \rightskip=0pt plus 10pt
+ \let\panoramas\smf@revue
+ \input panoramas.lst
+ \par\egroup}
+\def\smf@pubfinale{\cleardoublepage \pagestyle{empty}\bgroup
+ \parindent=0pt
+ \InputIfFileExists{pubfinale.tex}{}{}
+ \par\egroup}
+%</panoramas>
+% \end{macrocode}
+% \section{Package pour les ouvrages multi-auteurs}
+% Ce package est fait pour g\'erer des ouvrages collectifs de sorte que
+% table des mati\`eres, etc. soient automatis\'es, mais que chaque article
+% soit compil\'e s\'epar\'ement. Les informations utiles sont \'ecrites
+% dans des fichiers \texttt{.smf} cr\'e\'es automatiquement par le package.
+%
+% Il y a deux options : \paquetoption{master} pour le document principal et
+% \paquetoption{slave} pour les articles individuels.
+%
+% \DescribeMacro{\smfinclude}
+% Le fonctionnement g\'en\'eral est le suivant. Dans le document ma\^{\i}tre (celui
+% avec l'option \paquetoption{master}), les fichiers \`a inclure
+% virtuellement (esclaves, \paquetoption{slave} sous-entendue)
+% sont appel\'es par la commande |\smfinclude|. Celle-ci met \`a
+% jour la liste des fichiers inclus et cr\'ee pour le fichier esclave
+% inclus un fichier \texttt{.smf} qui contient les informations dont
+% celui-ci pourra avoir besoin : num\'ero de premi\`ere page, num\'ero de volume,
+% etc. Ce fichier permet aussi aux fichiers esclaves de communiquer avec le
+% ma\^{\i}tre : il renvoie notamment la derni\`ere page.
+% \begin{macrocode}
+%<*multi>
+\ProvidesPackage{smfmulti}[2000/11/20 v1.3
+ Package SMF pour les ouvrages multi-auteurs]
+\newif\ifsmf@slave
+\DeclareOption{slave}{\smf@slavetrue}
+\DeclareOption{master}{\smf@slavefalse}
+\ExecuteOptions{slave}
+\ProcessOptions\relax
+\RequirePackage{url}
+\newwrite\smf@out
+\newread\smf@in
+\newtoks\smf@toks
+% \end{macrocode}
+% \begin{macrocode}
+\def\smf@newfiles{}
+\def\smf@empty{}
+{\catcode`\%=11\gdef\smf@pc{%}}
+% \end{macrocode}
+% Ces macros sont communiqu\'ees entre le ma\^{\i}tre et les esclaves. Elles
+% doivent exister pour que \c{c}a marche.
+% \begin{macrocode}
+\def\authors{}\def\shortauthors{}\def\shorttitle{}
+\def\@abstract{}\def\@altabstract{}\def\@alttitle{}
+\def\smf@volume{}\def\smf@fascicule{}% \def\smf@year{}
+% \end{macrocode}
+% \DescribeMacro{\do@volumerefs}
+% Cette macro permet de transf\'erer les informations valables pour tous les
+% esclaves. Les donn\'ees en question doivent \^etre entr\'ees dans le fichier
+% ma\^{\i}tre.
+% Le principe de ces \cs{do}\cs{maca}\cs{macb}
+% est d'ins\'erer dans les \texttt{.smf}
+% une ligne \cs{def}\cs{maca}|{|$\langle$valeur de |\macb|$\rangle$|}|.
+% Rien n'interdit \emph{a priori} que \cs{maca}$=$\cs{macb}. Il faut quand m\^eme
+% prendre garde \`a ce que le fichier esclave pourrait d\'efinir \cs{maca} !
+% \begin{macrocode}
+\def\do@volumerefs{%
+% \end{macrocode}
+% On transmet ainsi num\'eros de volume, de fascicule, ISBN et ISSN.
+% Ainsi que l'ann\'ee
+% \begin{macrocode}
+ \do\smf@year\smf@year
+ \do\smf@volume\smf@volume
+ \do\smf@fascicule\smf@fascicule
+ \do\@isbn\@isbn
+ \do\@issn\@issn}
+% \end{macrocode}
+% \DescribeMacro{\do@paperrefs}
+% \begin{macrocode}
+\ifsmf@slave
+% \end{macrocode}
+% En mode esclave,
+% cette macro sert \`a ins\'erer dans les \texttt{.smf} les informations
+% venant des esclaves :
+% \begin{macrocode}
+\def\do@paperrefs{%
+% \end{macrocode}
+% fichier d'avant, premi\`ere page, derni\`ere page,
+% \begin{macrocode}
+ \do\@precfile\@precfile
+ \do\smf@firstpage\smf@firstpage
+ \do\smf@lastpage\smf@lastpage
+% \end{macrocode}
+% auteur(s)
+% \begin{macrocode}
+ \do\smf@authors\authors
+ \do\smf@shortauthors\shortauthors
+% \end{macrocode}
+% langue de l'article, titre et titre court dans celle-ci,
+% \begin{macrocode}
+ \do\smf@langue\smf@language
+ \do\smf@title\@title
+ \do\smf@shorttitle\shorttitle
+% \end{macrocode}
+% titres en fran\c{c}ais, en anglais, r\'esum\'e (fran\c{c}ais) et abstract (anglais),
+% \begin{macrocode}
+ \def\@tempa{french}\ifx\smf@language\@tempa
+ \do\smf@ftitre\@title
+ \do\smf@etitre\@alttitle
+ \do\smf@resume\@abstract
+ \do\smf@abstract\@altabstract
+ \else
+ \do\smf@ftitre\@alttitle
+ \do\smf@etitre\@title
+ \do\smf@resume\@altabstract
+ \do\smf@abstract\@abstract\fi
+}
+\else
+% \end{macrocode}
+% En mode \texttt{master}, on r\'ecup\`ere les informations correspondantes.
+% C'est presque la m\^eme chose qu'avant sauf que les informations sont
+% lues et r\'ecup\'er\'ees dans la m\^eme macro (afin de pouvoir les r\'ecrire
+% \`a l'identique).
+% \begin{macrocode}
+\def\do@paperrefs{%
+% \end{macrocode}
+% fichier d'avant, premi\`ere page, derni\`ere page,
+% \begin{macrocode}
+ \do\@precfile\@precfile
+ \do\smf@firstpage\smf@firstpage
+ \do\smf@lastpage\smf@lastpage
+% \end{macrocode}
+% auteur(s)
+% \begin{macrocode}
+ \do\smf@authors\smf@authors
+ \do\smf@shortauthors\smf@shortauthors
+% \end{macrocode}
+% langue et titre, titre court dans cette langue,
+% \begin{macrocode}
+ \do\smf@langue\smf@langue
+ \do\smf@title\smf@title
+ \do\smf@shorttitle\smf@shorttitle
+% \end{macrocode}
+% titres fran\c{c}ais, anglais, r\'esum\'e, abstract,
+% \begin{macrocode}
+ \do\smf@ftitre\smf@ftitre
+ \do\smf@etitre\smf@etitre
+ \do\smf@resume\smf@resume
+ \do\smf@abstract\smf@abstract
+}
+\fi
+% \end{macrocode}
+% \DescribeMacro{\reset@paperrefs}
+% On initialise \`a |{}| toutes les macros |\maca| des donn\'ees intervenant dans
+% |\do@paperrefs|.
+% \begin{macrocode}
+\def\reset@paperrefs{%
+ \bgroup
+ \def\do##1##2{\xdef##1{}}%
+ \do@paperrefs
+ \egroup
+}
+\reset@paperrefs
+% \end{macrocode}
+% \DescribeMacro{\smfinclude}
+% La macro pour inclure virtuellement un fichier,
+% \begin{macrocode}
+\def\smfmulti@protect{\let\do\relax}
+\def\smfinclude#1{%
+% \end{macrocode}
+% On change de double page, ent\^etes vierges.
+% Modif. 2002, on ajoute sur cette ligne le shortauteur
+% \begin{macrocode}
+ \cleardoublepage\thispagestyle{empty}\markboth{}{}
+% \end{macrocode}
+% On inclut le nom du fichier dans |\smf@newfiles|
+% \begin{macrocode}
+ \bgroup
+ \smfmulti@protect
+ \xdef\smf@newfiles{\smf@newfiles\do{#1}}%
+ \egroup
+% \end{macrocode}
+% Puis on pr\'epare le fichier \texttt{.smf}
+% \begin{macrocode}
+ \smf@read{#1}
+% \end{macrocode}
+% La table des mati\`eres apprend
+% l'existence du fichier via une entr\'ee
+% |\do@smftoc{|$\langle$fichier$\rangle$|}|.
+% \begin{macrocode}
+ \addtocontents{toc}%
+ {{\protect\do@smftoc{#1}}\protect\@gobble{\smf@shortauthors}}
+% \end{macrocode}
+% L'article d\'ebute sur la page \cs{c@page} et termine sur
+% $\mbox{\cs{smf@lastpage}}-\mbox{\cs{smf@firstpage}}+\mbox{\cs{c@page}}$.
+% Les |0| dans les lignes suivantes tiennent compte des cas o\`u
+% |\smf@lastpage| ou |\smf@firstpage| sont vides.
+% \begin{macrocode}
+ \edef\@@smf@firstpage{\smf@firstpage}
+ \edef\smf@tempa{%
+ \noexpand\advance\c@page 0\smf@lastpage\relax
+ \noexpand\advance\c@page -0\smf@firstpage\relax}
+ \edef\smf@firstpage{\arabic{page}}
+ \smf@tempa
+ \edef\smf@lastpage{\the\c@page}
+ \ifx\smf@firstpage\@@smf@firstpage\else
+ \PackageWarning{smfmulti}{Difference de premiere page}\fi
+ \advance\c@page -1\relax
+ \ifodd\c@page\else\advance\c@page 1\relax\fi
+% \end{macrocode}
+% On affiche une page de titre pour le fichier |#1.smf|. Cela permet de
+% contourner un ``bug'' qui fait que des |\write| sont ignor\'es si \TeX\
+% n'a rien \`a |\ship|er apr\`es.
+% \begin{macrocode}
+ \@makeincludetitle{#1}
+% \end{macrocode}
+% \begin{macrocode}
+% Et on met \`a jour le fichier \texttt{.smf}.
+ \smf@write{#1}}
+% \end{macrocode}
+% \DescribeMacro{\@makeincludetitle}
+% Les macros qui affichent l'ent\^ete de fichier virtuel. De toutes fa\c{c}ons,
+% ces pages seront jet\'ees (voire m\^eme pas imprim\'ees!).
+% On en profite quand m\^eme pour donner quelques informations.
+% \begin{macrocode}
+\def\@makeincludetitle#1{%
+ \vtop to 55 mm{%
+ \parindent=0pt
+ \hrule height 1pt
+ \bigskip
+ \vbox to 0pt{\noindent \url{#1}%
+ \noindent\@xp\ifx\csname smf@journalhead\endcsname\relax
+ , p.\ \smf@firstpage --\smf@lastpage\else
+ \par\smf@journalhead\fi
+ \par\vss}\bigskip
+ \begin{center}
+ \large\vfil
+ {\bfseries\smf@boldmath\MakeUppercase\smf@title\par}
+ \vfil
+ {\edef\smfandname{{\noexpand\normalfont \smfandname}}
+ \andify\smf@authors\smf@authors\par}
+ \vfil \vrule height 1pt width .3\textwidth \vfil
+ \end{center}}
+ \vfil
+ {\sffamily\centering
+ Veuillez compiler ce fichier s\'epar\'ement et l'ins\'erer ici\par\medskip
+ Please compile this file separately and insert it here\par }}
+% \end{macrocode}
+% \DescribeMacro{\smf@read}
+% Cette macro charge le contenu du fichier |#1.smf| s'il existe.
+% S'il n'existe pas, les macros attendues sont initialis\'ees.
+% (Dans ces fichiers, ceraines macros contiennent des |@| qui est
+% ainsi une lettre.)
+% \begin{macrocode}
+\def\smf@read#1{%
+ \makeatletter
+ \openin\smf@in=#1.smf
+ \ifeof\smf@in
+ \closein \smf@in
+ \reset@paperrefs
+ \else
+ \closein \smf@in
+ \input #1.smf
+ \fi
+ \makeatother
+}
+% \end{macrocode}
+% \DescribeMacro{\smf@write}
+% R\'eciproquement, on \'ecrit \'ecrit dans le |#1.smf| les informations venant
+% du volume et de l'article.
+% (2001/10/24) On met des \% \`a la fin de chaque |\def| sinon, \c{c}a fait des
+% espaces ind\'esirables lorsqu'on lit un fichier \texttt{.smf} en mode
+% horizontal (\'eventuellement utile dans une biblio).
+% \begin{macrocode}
+\def\smf@write#1{%
+ \makeatletter
+ \immediate\openout\smf@out=#1.smf
+ \bgroup
+ \def\do##1##2{\smf@toks=\expandafter{##2}%
+ \immediate\write\smf@out
+ {\string\def\string ##1\noexpand{\the\smf@toks\noexpand}\smf@pc}}%
+ \do@volumerefs\do@paperrefs
+ \egroup
+ \immediate\closeout\smf@out
+ \makeatother
+}
+% \end{macrocode}
+% \subsection{Macros Slave}
+% \begin{macrocode}
+\ifsmf@slave
+% \end{macrocode}
+% Met a jour la premiere page, utile qu'en version slave
+% Correction d'un bug (2001/10/12) qui ne mettait pas \`a 1 la premi\`ere page
+% si elle n'\'etait pas d\'efinie. La conclusion, c'\'etait une page blanche!
+% \begin{macrocode}
+\def\smf@getfirstpage{%
+ \smf@read \jobname
+ \ifx\smf@firstpage\@empty
+ \xdef\smf@firstpage{1}\else
+ \c@page=\smf@firstpage\fi}
+% \end{macrocode}
+% Met a jour la derni\`ere page, version slave
+% \begin{macrocode}
+\def\smf@getlastpage{%
+ \clearpage
+ {\advance\c@page -1 \xdef\smf@lastpage{\arabic{page}}}%
+ \ifodd\c@page\else\thispagestyle{empty}\hbox{}\fi
+ \smf@write\jobname }
+% \end{macrocode}
+% \subsection{Macros Master}
+% \begin{macrocode}
+\else
+% \end{macrocode}
+% On recupere la liste des fichiers
+% \begin{macrocode}
+\def\smf@getfilelist {%
+ \makeatletter
+ \def\smf@files{}%
+ \InputIfFileExists{\jobname.smf}{\def\smf@files{}}%
+ \makeatother
+}
+% \end{macrocode}
+% R\'eciproquement, on ecrit ce qu'il faut dans |#1.smf|
+% \begin{macrocode}
+\def\smf@writefilelist {%
+ \makeatletter
+ \immediate\openout\smf@out=\jobname.smf
+ \smf@toks=\expandafter{\smf@newfiles}%
+ \immediate\write\smf@out
+ {\string\def\string \smf@files\noexpand{\the\smf@toks\noexpand}\smf@pc}%
+ \ifx\smf@files\smf@newfiles\else
+ \PackageWarning{smfmulti}{Difference dans la liste des fichiers !}
+ \fi
+ \makeatother
+}
+% \end{macrocode}
+% \'Ecrit la table des mati\`eres de l'ouvrage, seulement en version master
+% En fait, inutile puisqu'on avait pris soin (eh oui...) de faire en sorte
+% que |\tableofcontents| remplisse son r\^ole...
+% On ajoute le fait que les parties sont en gras, centr\'ees.
+% \begin{macrocode}
+\let\smftableofcontents\tableofcontents
+\def\@ctocline#1#2#3#4#5{\relax
+ \ifnum#1>\c@tocdepth % then omit
+ \else
+ \par \addpenalty\@secpenalty\addvspace{#2}%
+ \begingroup \hyphenpenalty\@M
+ \centering {#3{#4}}%
+ \par\nobreak
+ \endgroup
+ \fi}
+\def\l@part{\@ctocline{-1}{12pt plus 2pt}{\bfseries\smf@boldmath}}
+
+% \end{macrocode}
+% \DescribeMacro{\do@smftoc}
+% Ins\`ere les informations relatives au fichier |#1| dans
+% la table des matieres de l'ouvrage
+% \begin{macrocode}
+\def\do@smftoc #1{%
+ \smf@read {#1}
+ \makeatletter
+ \@tocline{-2}{12pt plus 2pt}{0pt}{0pt}{}{%
+ {\def\smfandname{\&}\andify\smf@shortauthors
+ \scshape
+ \smf@shortauthors}
+ ---
+ {\itshape\let\\\relax\ignorespaces\smf@title\unskip\ }}%
+ {\smf@firstpage}
+ \def\l@part{\@tocline{-1}{0pt}{12pt}{}{}}
+ \def\l@section{\@tocline{1}{0pt}{12pt}{}{}}
+ \def\l@subsection{\@tocline{2}{0pt}{24pt}{}{}}
+ \def\l@subsubsection{\@tocline{3}{0pt}{36pt}{}{}}
+ \def\l@paragraph{\@tocline{5}{0pt}{48pt}{}{}}
+ \@input{#1.toc}}
+% \end{macrocode}
+% Table des r\'esum\'es francais
+% \begin{macrocode}
+\def\smftableofresumes{%%
+ \chapter*{R\'esum\'es des articles}
+ \def\do##1{{\do@smfresume{##1}}}\smf@files}
+\def\do@smfresume #1{%
+ \smf@read{#1}%
+ \@tocline {-2}{12pt plus 2pt}{0pt}{0pt}{}{%
+ {\itshape\let\\\relax\ignorespaces\smf@title\unskip}\\
+ {\def\smfandname{\&}\andify \smf@authors
+ \scshape
+ \smf@authors }}%
+ {\smf@firstpage}
+ \begin{list}{}{\labelwidth\z@ \leftmargin1cm \rightmargin0pt
+ \listparindent\normalparindent
+ \itemindent\normalparindent \advance\itemindent\labelsep
+ \parsep\z@ \@plus\p@
+ \let\fullwidthdisplay\relax}%
+ \item[] \smf@resume\end{list}}
+
+% \end{macrocode}
+% Table des r\'esum\'es anglais
+% \begin{macrocode}
+\def\smftableofabstracts{%%
+ \chapter*{Abstracts}
+ \def\do##1{{\do@smfabstract{##1}}}\smf@files}
+
+\def\do@smfabstract #1{%
+ \smf@read{#1}%
+ \@tocline {-2}{12pt plus 2pt}{0pt}{0pt}{}{%
+ {\itshape\let\\\relax\ignorespaces\smf@title\unskip}\\
+ {\def\smfandname{\&}\andify\smf@authors
+ \scshape\smf@authors }}%
+ {\smf@firstpage}
+ \begin{list}{}{\labelwidth\z@ \leftmargin1cm \rightmargin0pt
+ \listparindent\normalparindent
+ \itemindent\normalparindent \advance\itemindent\labelsep
+ \parsep\z@ \@plus\p@
+ \let\fullwidthdisplay\relax}%
+ \item[] \smf@abstract\par\end{list}}
+% \end{macrocode}
+% Mise \`a jour de la derni\`ere page : la version master .
+% \begin{macrocode}
+\AtBeginDocument{\smf@getfilelist}
+\AtEndDocument{\smf@writefilelist}
+\fi
+%</multi>
+% \end{macrocode}
+% \section{Package pour l'automatisation des notices bibliographiques}
+% \begin{macrocode}
+%<*smfbib>
+\ProvidesPackage{smfbib}[2000/10/13 v1.3d
+ Automatisation des notices biblio pour la SMF]
+
+\AtEndDocument{\@makesmfbib}
+
+\newwrite\smfbib@out
+\newtoks\smfbib@toks
+
+\bgroup
+ \catcode`\%=11
+ \catcode`\{=11\catcode`\}=11
+ \catcode`\[=1\catcode`\]=2
+ \global\def\smf@pc[%]
+ \global\def\smf@com[%\smf@space\smf@space\smf@space]
+ \global\def\smf@lb[{]
+ \global\def\smf@rb[}]
+\egroup
+
+\def\@makesmfbib{%
+\bgroup
+ \def\smf@space{ }
+ \def\smf@tab{\smf@space\smf@space\smf@space\smf@space}
+ \def\do##1##2{\smfbib@toks=\@xp{##2}%
+ \immediate\write\smfbib@out{%
+ \smf@tab ##1 = \smf@lb\the\smfbib@toks\smf@rb,}}%
+ \def\language{french}%
+ \immediate\openout\smfbib@out=\jobname.smfbib
+
+ \immediate\write\smfbib@out{%
+\smf@pc&smfbib^^J%
+\smf@com bib_file\smf@lb^^J%
+\smf@com nom =\smf@lb\jobname.smfbib\smf@rb,^^J%
+\smf@com date =\smf@lb\number\year/\number\month/\number\day\smf@rb,^^J%
+\smf@com auteur =\smf@lb smfbib\smf@rb,^^J%
+\smf@com note =\smf@lb\smf@rb^^J%
+\smf@com \smf@rb^^J^^J%
+}
+ \newif\ifsmf@article
+ \def\smf@tempb{smfart}\ifx\@classname\smf@tempb \smf@articletrue\fi
+ \ifsmf@article
+ \immediate\write\smfbib@out {@Article%
+\smf@lb\smf@plaintitre:\@setyear:\smf@volume:\smf@firstpage--\smf@lastpage,}
+ \else
+ \immediate\write\smfbib@out{@Book%
+\smf@lb\smf@plaintitre:\@setyear:\smf@volume, }\fi
+ \do{publisher }\smf@logo
+ \ifsubventionCNRS
+\do{sponsor }{Centre National de la Recherche Scientifique}
+ \else\ifsubventionMCC
+\do{sponsor }{Minist\`ere de la Culture et de la Communication}
+ \else\ifsubventionCNRSMCC
+\do{sponsor }{Centre National de la Recherche Scientifique et
+ Minist\`ere de la Culture et de la Communication}
+ \else
+\do{sponsor }\@empty
+ \fi\fi\fi
+\ifsmf@article
+ \do{type }{article}\else
+ \do{type }{monographie}\fi
+\ifx\smf@language\language
+ \do{language }{fre}
+ \do{titre }\@title
+ \do{title }\@alttitle
+ \do{resume }\@abstract
+ \do{abstract }\@altabstract
+ \ifsmf@article\else
+ \do{shortresume }\@shortabstract
+ \do{shortabstract }\@shortaltabstract
+ \fi
+ \do{mots_clefs}\@keywords
+ \do{keywords }\@altkeywords
+\else
+ \do{language }{eng}
+ \do{titre }\@alttitle
+ \do{title }\@title
+ \do{resume }\@altabstract
+ \do{abstract }\@abstract
+ \ifsmf@article\else
+ \do{shortresume }\@shortaltabstract
+ \do{shortabstract }\@shortabstract
+ \fi
+ \do{keywords }\@keywords
+ \do{mots_clefs}\@altkeywords
+\fi
+% \def\andify{\nxandlist{, }{ and }{ and }}%
+% \andify\authors
+\ifsmf@editor
+ \do{editor }\authors
+\else
+ \do{author }\authors
+\fi
+\do{shortauthor}\shortauthors
+\edef\tmp@year{\@setyear}
+\do{year }\tmp@year
+\do{collection}\smf@titre
+\do{volume }\smf@volume
+\do{number }\smf@fascicule
+\xdef\@pages{\smf@pages}
+\do{pages }\@pages
+\do{class_math}\@subjclass
+\do{issn }\@issn
+\do{isbn }\@isbn
+\xdef\@pseudodoi{smf:%
+ \ifx\@issn\@empty\@isbn\else\@issn\ifx\@isbn\@empty\else/\@isbn\fi\fi:%
+ \@setyear:%
+ \smf@volume:%
+ \smf@pages:}
+\do{id }\@pseudodoi
+\immediate\write\smfbib@out{%
+\smf@rb^^J%
+}%
+\ifsmf@tarifs
+ \newcount\@prixmembre\@prixmembre \@tarifNum
+ \newcount\@reductionmembre\@reductionmembre\@prixmembre
+ \multiply\@reductionmembre by 30\divide\@reductionmembre by 100
+ \advance\@prixmembre by -\@reductionmembre
+ \immediate\write\smfbib@out{%
+ \smf@com prix_public_euros = \smf@lb \@tarifNum\smf@rb, ^^J%
+ \smf@com prix_membre_euros = \smf@lb \the\@prixmembre\smf@rb,
+ \smf@com 70 \smf@pc\smf@space du prix public%
+ }%
+\fi
+\immediate\closeout\smfbib@out
+\egroup}
+%</smfbib>
+% \end{macrocode}
+% \section{Bourbaki dans Ast\'erisque}
+% \begin{macrocode}
+%<*asterki>
+% \end{macrocode}
+% Ent\^ete.
+% \begin{macrocode}
+\ProvidesClass{smfbourbaki}
+ [2003/02/21 v2.1c
+ Classe LaTeX pour les seminaires Bourbaki
+ (Asterisque ou Brochure)]
+\def\filename{bourbaki.cls}
+\def\fileversion{2.1c} \def\filedate{2003-02-21}
+\immediate\write16{%
+LaTeX document class `BOURBAKI' (\fileversion, \filedate)}
+% \end{macrocode}
+% On d\'eclare les options.
+% La m\^eme classe sert \`a la fois aux brochures de Bourbaki et au document
+% final dans Ast\'erisque. \`A part des finesses de mise en page,
+% la seule chose qui doit changer est la taille des caract\`eres (10 points
+% pour le texte final et 12 pour les brochures). La taille du texte est
+% r\'egl\'ee proportionnellement pour que la mise en page ne change
+% essentiellement pas.
+% On met donc une option brochure.
+% \begin{macrocode}
+\DeclareOption{11pt}{\typeout{Desole --- le volume est en 10 points}}
+\DeclareOption{12pt}{\typeout{Desole --- le volume est en 10 points}}
+\newif\if@brochure
+\DeclareOption{brochure}{\typeout{Brochure Bourbaki : 12 points, etc.}%
+ \PassOptionsToClass{12pt}{smfart}%
+ \@brochuretrue}
+\DeclareOption{twocolumn}{\typeout{Desole ---
+ une seule colonne dans le style BOURBAKI.}}
+\DeclareOption{openbib}{\typeout{Desole ---
+ pas d'option openbib dans le style BOURBAKI.}}
+\DeclareOption{fleqn}{\typeout{Desole ---
+ pas d'equations a gauche dans le style BOURBAKI.}}
+\DeclareOption{titlepage}{\typeout{Desole ---
+ pas d'option titlepage dans le style BOURBAKI.}}
+\def\@bbklanguage{2}
+\DeclareOption{french}%
+ {\typeout{Style BOURBAKI -- version francaise}\def\@bbklanguage{1}%
+ \PassOptionsToClass{french}{smfart}}
+\DeclareOption{francais}%
+ {\typeout{Style BOURBAKI -- version francaise}\def\@bbklanguage{1}%
+ \PassOptionsToClass{french}{smfart}}
+\DeclareOption{english}%
+ {\typeout{Style BOURBAKI -- english version}\def\@bbklanguage{0}%
+ \PassOptionsToClass{english}{smfart}}
+
+\DeclareOption*{\PassOptionsToClass{\CurrentOption}{smfart}}
+
+\newif\if@bbkswapnumbers
+\DeclareOption{swapnumbers}
+ {\typeout{Style BOURBAKI -- num\'eros avant les intitul\'es}%
+ \@bbkswapnumberstrue}
+
+\newif\if@bbkmaster
+\DeclareOption{master}{\@bbkmastertrue}
+
+\newif\if@draft
+
+% \def\smf@volume{}
+% \def\smf@fascicule{}
+% \def\@abstract{}
+% \def\@altabstract{}
+% \def\@alttitle{}
+
+
+\ExecuteOptions{10pt,a4paper,twoside}
+\ProcessOptions\relax
+
+\def\smf@getfirstpage{\gdef\smf@firstpage{1}}
+\def\smf@getlastpage{\clearpage
+ {\advance\c@page-1 \xdef\smf@lastpage{\arabic{page}}}}
+\def\smf@pages{\smf@firstpage-\smf@lastpage}
+
+\if@bbkmaster
+ \if@brochure
+ \ClassWarning{bourbaki}{Options brochure et master incompatibles.
+J'ignore l'option brochure.}%
+ \@brochurefalse
+ \fi
+ \message{Fichier ma\^{\i}tre d'un Ast\'erisque Bourbaki...}
+ \LoadClass{smfbook}
+ \def\@classname{smfbook}
+ \RequirePackage{smfenum}
+ \RequirePackage[noxy]{asterisque}
+ \RequirePackage[master]{smfmulti}
+ \addto\do@paperrefs{\do\smf@subtitle\smf@subtitle
+ \do\smf@altsubtitle\smf@altsubtitle
+ \do\smf@bbknumero\smf@bbknumero
+ \do\smf@keywords\smf@keywords
+ \do\smf@subjclass\smf@subjclass}
+ \addto\do@volumerefs{\do\smf@bbkannee\@bbkannee}
+ \def\@pnumwidth{3em}
+
+\else
+ \LoadClass{smfart}
+ \def\@classname{smfart}
+ \if@brochure
+ \textwidth 13cm
+ \textheight 21.5cm
+ \headheight=12pt
+ \headsep 12mm
+ \footskip 12mm
+ \textwidth 1.2\textwidth
+ \textheight 1.2\textheight
+ \calclayout
+ \else
+ \RequirePackage{smfenum}
+ \RequirePackage[noxy]{asterisque}
+ \RequirePackage{smfmulti}
+ \addto\do@paperrefs{\do\smf@subtitle\@subtitle
+ \do\smf@altsubtitle\@altsubtitle
+ \do\smf@bbknumero\@bbknumero
+ \do\smf@keywords\@keywords
+ \do\smf@subjclass\@subjclass}
+ \addto\do@volumerefs{\do\smf@bbkannee\smf@bbkannee}
+ \fi
+\fi
+
+% \AtBeginDocument{\smf@getfirstpage}
+% \AtEndDocument{\smf@getlastpage}
+
+
+\def\altsubtitle#1{\def\@altsubtitle{#1}}
+\def\@altsubtitle{}
+\def\subtitle#1{\def\@subtitle{#1}}
+\def\@subtitle{}
+
+\def\@setaltabstracthead{\abstractheadfont \altabstractname
+ \ifx\@alttitle\@empty\else\ \textup(\emph{\@alttitle}%
+ \ifx\@altsubtitle\@empty\else
+ \ \textup[\emph{\@altsubtitle}\textup]\fi\textup)\fi}
+
+\def\@bbknumero{}\def\smf@bbknumero{}
+\def\@bbkannee{}\def\smf@bbkannee{}
+\def\bbknumero#1{\gdef\@bbknumero{#1}\gdef\smf@bbknumero{#1}}
+\def\bbkannee#1{\gdef\@bbkannee{#1}}
+
+\if@bbkmaster
+
+\def\smf@titleii{\clearpage
+ \thispagestyle{empty}
+ \ifx\@empty\addresses\else \@setaddresses\fi
+ \vfill
+ \hrule
+ \bigskip
+ \@setkeyclass
+ \bigskip
+ \hrule
+ \vfilneg
+}
+
+\def\@setkeyclass{%
+ \bgroup
+ \def\baselinestretch{1}
+ \abstractfont\smaller[2]
+ {\abstractheadfont
+ Mots clefs et classification math\'ematique par sujets \textup{(2000)}\par
+ \medskip}
+ \def\donot##1{}
+ \let\do\do@setkeyclass
+ \smf@files
+ \egroup
+}
+
+\def\do@setkeyclass #1{\bgroup
+ \smf@read{#1}%
+ \noindent
+ {\bfseries Expos\'e n\textsuperscript o \smf@bbknumero\MakePointrait}%
+ \enspace\ignorespaces
+ \smf@keywords\MakePointrait\enspace\ignorespaces
+ \smf@subjclass\@addpunct. \par\egroup}
+
+\def\smf@titleiii{%
+ \clearpage\thispagestyle{copyright}
+ \markboth{\@nx\shorttitle}{\@nx\shorttitle}
+ %% INSERER UNE IMAGE
+ \null
+ \vskip 12\medskipamount plus 8\medskipamount
+ \begin{center}\Large\bfseries\smf@boldmath
+ {\MakeUppercase\@title\par}
+% \vskip 4\medskipamount plus 2\medskipamount
+% \def\and{,\ \penalty-1}\authors\par
+ \end{center}
+ \vskip 8\medskipamount plus 4 \medskipamount
+% \def\abstractmargin{1cm}
+ \@setabstract\par
+ \vskip 1\bigskipamount plus 1\bigskipamount
+ \penalty-100
+ \@setaltabstract\par
+}
+
+% \def\smf@titleiii{\clearpage}
+
+%% Modifications smfmulti
+
+\def\smfmulti@protect{%
+ \let\do\relax
+ \let\donot\relax
+ \let\bourbakisession\relax}
+
+\def\smf@addfile#1{\bgroup
+ \smfmulti@protect
+ \smf@toks=\expandafter{\smf@newfiles}%
+ \xdef\smf@newfiles{\the\smf@toks\do{#1}}%
+ \egroup}
+
+\def\bbksession#1{\addtocontents{toc}{\protect\bourbakisession{#1}}%
+ \bgroup
+ \smfmulti@protect
+ \smf@toks=\expandafter{\smf@newfiles}%
+ \xdef\smf@newfiles{\the\smf@toks\donot{\bourbakisession{#1}}}
+ \egroup
+}
+
+\DeclareRobustCommand{\bourbakisession}[1]{\bigskip
+ \noindent
+ {\itshape\MakeUppercase{#1}}\par\medskip}
+
+%%% Table des matieres
+
+\def\ps@contents{
+ \def\@oddfoot{\normalfont\Tiny\hfil
+ {\smf@LOGO\ \@setyear}}%
+ \def\@evenfoot{\normalfont\tiny
+ {\MakeUppercase\smf@titrecourt
+ \ifx\smf@volume\@empty\else{\unskip\ \smf@volume}\fi\hfil}}%
+ \def\@evenhead{\normalfont\scriptsize
+ \rlap{\bfseries\thepage}\hfil {\itshape TABLE DES MATI\`ERES}\hfil}%
+ \def\@oddhead{\normalfont\scriptsize
+ \def\\{\unskip\space\ignorespaces}%
+ \hfil {\itshape TABLE DES MATI\`ERES}\hfil
+ \llap{\bfseries\thepage}}%
+ \let\@mkboth\org@markboth
+ }
+
+
+\def\l@chapter{\@tocline{0}{0pt}{0pt}{}{}}
+
+\def\tableofcontents{\begingroup
+ \cleardoublepage
+ \pagestyle{contents}\thispagestyle{contents}
+ \hbox{}\vfil
+ \typeout{Table des matieres}%
+ \makeatletter
+ \@input{\jobname.toc}%
+ \global\@nobreakfalse \endgroup
+ \newpage }
+
+\def\do@smftoc #1{%
+ \smf@read {#1}
+ \makeatletter
+ \@tocline{-2}{4pt plus 2pt}{0pt}{4em}{}{%
+ {\def\smfandname{\&}\andify\smf@authors
+ \hbox to 3em{\smf@bbknumero\hss}\smf@authors}
+ ---
+ {\itshape\let\\\relax\ignorespaces\smf@title\unskip\space
+ \ifx\smf@subtitle\@empty\else
+ \textup[\smf@subtitle\unskip\textup]\space\fi }}%
+ {\smf@firstpage}
+}
+
+%% Resumes
+
+\newskip \resumepreskipamount
+\resumepreskipamount 18pt plus 6pt minus 6pt % 1.5 \bigskipamount
+\def\smftableofresumes{%%
+ \bgroup
+ \cleardoublepage
+ \def\baselinestretch{1}\small
+ \let\@secnumber\@empty
+ \addcontentsline{toc}{chapter}{R\'esum\'es des expos\'es}
+ \pagestyle{resumes}
+%% IL FAUDRAIT SE DEBROUILLER POUR QU'IL Y EN AIT EXACTEMENT 5 PAR PAGE !
+ \def\donot##1{##1}
+ \def\bourbakisession##1{\clearpage}
+% \def\donot##1{}
+ \def\do##1{\vskip\resumepreskipamount
+ \do@smfresume{##1}}
+ \smf@files\clearpage
+ \egroup}
+
+\def\do@smfresume #1{\bgroup
+ \smf@read{#1}%
+ \edef\@tempa{\noexpand\smf@silentselectlanguage{\smf@langue}}\@tempa
+ \vbox{%
+ \noindent
+ {\def\smfandname{\&}\andify \smf@authors
+ \normalfont
+ \smf@authors } --
+ {\itshape\let\\\relax\ignorespaces\smf@title\unskip
+ \ifx\smf@subtitle\@empty\else
+ \space\ignorespaces\textup[\smf@subtitle\textup]\fi}}
+ \par\nobreak
+ \def\smf@tempa{english}\ifx\smf@langue\smf@tempa
+ \smf@abstract\else\smf@resume\fi\par
+ \egroup
+}
+
+\def\ps@resumes{
+ \def\@oddfoot{\normalfont\Tiny\hfil
+ {\smf@LOGO\ \@setyear}}%
+ \def\@evenfoot{\normalfont\tiny
+ {\MakeUppercase\smf@titrecourt
+ \ifx\smf@volume\@empty\else{\unskip\ \smf@volume}\fi\hfil}}%
+ \def\@evenhead{\normalfont\scriptsize
+ \rlap{\bfseries\thepage}\hfil {\itshape R\'ESUM\'ES DES EXPOS\'ES}\hfil}%
+ \def\@oddhead{\normalfont\scriptsize
+ \def\\{\unskip\space\ignorespaces}%
+ \hfil {\itshape R\'ESUM\'ES DES EXPOS\'ES}\hfil
+ \llap{\bfseries\thepage}}%
+ \let\@mkboth\org@markboth
+ }
+
+%% Derniere de couv.
+%
+% \def\smf@gardeiv{\clearpage\thispagestyle{empty}\bgroup
+% \large\centering
+% \smf@restorecmr
+% \null \vfil
+% \fboxsep 1cm
+% \fbox{\begin{minipage}[t]{11cm}{\@setshortabstract}\end{minipage}}
+% \vfil
+% \fbox{\begin{minipage}[t]{11cm}{\@setshortaltabstract}\end{minipage}}
+% \par\vfil
+% \egroup}
+%
+
+\else
+ \let\@mkboth\@gobbletwo
+ \let\partmark\@gobble\let\sectionmark\@gobble
+ \let\subsectionmark\@gobble
+
+ \def\@setthanks{\def\thanks##1{##1\@addpunct{{\upshape.}}}\thankses}
+ \if@brochure
+
+ \def\ps@copyright{\ps@empty}
+ \def\ps@expose{\ps@empty
+ \def\@evenhead{\normalfont
+ \hfil \@bbknumero--\ifnum\c@page<10 0\fi\the\c@page\hfil}
+ \let\@oddhead\@evenhead }
+ \ps@expose
+
+ \else
+
+ \def\ps@copyright{\ps@empty
+ \def\@oddfoot{\normalfont\Tiny\hfil {\smf@LOGO\ \@setyear}}%
+ \def\@evenfoot{\normalfont\tiny
+ {\MakeUppercase\smf@titrecourt
+ \ifx\smf@volume\@empty\else{\unskip\ \smf@volume}\fi\hfil}}}
+ \def\ps@expose{%
+ \def\@oddfoot{\normalfont\Tiny\hfil {\smf@LOGO\ \@setyear}}%
+ \def\@evenfoot{\normalfont\tiny
+ {\MakeUppercase\smf@titrecourt
+ \ifx\smf@volume\@empty\else{\unskip\ \smf@volume}\fi\hfil}}%
+ \def\@evenhead{\normalfont\scriptsize
+ \rlap{\bfseries\thepage}\hfil {\itshape \leftmark{}{}}\hfil}%
+ \def\@oddhead{\normalfont\scriptsize
+ \def\\{\unskip\space\ignorespaces}%
+ \hfil {\itshape (\@bbknumero)\quad \rightmark{}{}}\hfil
+ \llap{\bfseries\thepage}}%
+ \let\@mkboth\org@markboth }
+ \ps@expose
+
+ \fi
+
+ \def\@maketitle{%
+ \cleardoublepage
+ \thispagestyle{copyright}
+ \parindent=0pt \normalfont\normalsize
+ \let\@makefnmark\relax \let\@thefnmark\relax
+%% REMERCIEMENTS
+ \ifx\@empty\thankses\else\@footnotetext{\@setthanks}\fi
+ \topskip0\p@ %% on commence tout en haut.
+%% L'ENTETE
+ {\let\\\relax
+ \uppercasenonmath\shorttitle
+ \ifx\@empty\shortauthors \let\shortauthors\shorttitle
+ \else \uppercasenonmath\shortauthors \andify\shortauthors \fi
+ \toks@\@xp{\shortauthors}\@temptokena\@xp{\shorttitle}%
+ \edef\@tempa{\@nx\markboth{\the\toks@}{\the\@temptokena}}%
+ \@tempa}
+ \vtop to 55 true mm{%
+ \hbox to\textwidth{S\'eminaire BOURBAKI\hfil \@date}
+ \hbox to\textwidth{\if@brochure
+ \@bbkannee, n\raise4pt\hbox{\small o} \@bbknumero\else
+ \smf@bbkannee, n\raise4pt\hbox{\small o} \@bbknumero,
+ p.~\smf@firstpage\ \`a \smf@lastpage
+ \fi
+ \hss}
+ \vfil
+ {\centering\bf
+ \MakeUppercase\@title \@@par
+ \ifx\@empty\@subtitle\else\textup[\@subtitle\textup]\@@par\fi
+ \bigskip
+ {\normalfont \smfbyname\ }\authors\@@par
+ \vfil
+ \ifx\@empty\@dedicatory
+ \else{\raggedleft\it\@dedicatory\@@par}\vfil\fi}\par}%
+ }
+
+% Auteur, adresse
+
+\renewcommand{\author}[2][]{%
+ \ifx\@empty\authors
+ \gdef\shortauthors{#1}\gdef\authors{#2}%
+ \else
+ \g@addto@macro\shortauthors{\and#1}%
+ \g@addto@macro\authors{\and#2}%
+ \fi
+ \g@addto@macro\addresses{\author{#2}}%
+}
+
+\def\@setaddresses{\par
+ \nobreak \begingroup
+ \parindent \addressindent\normalfont
+ \def\author##1{\begingroup
+ \addvspace\bigskipamount \indent ##1\par\endgroup}%
+ \def\\{\par\nobreak\ignorespaces}%
+ \interlinepenalty\@M
+ \def\address##1##2{\begingroup
+ \par\nobreak\addvspace\medskipamount\indent
+ \@ifnotempty{##1}{(\ignorespaces##1\unskip) }%
+ {\normalfont\ignorespaces##2}\par\endgroup}%
+ \def\curraddr##1##2{\begingroup
+ \@ifnotempty{##2}{\nobreak\indent{\itshape Addresse courante}%
+ \@ifnotempty{##1}{, \ignorespaces##1\unskip}~:\space
+ ##2\par\endgroup}}%
+ \def\email##1##2{\begingroup
+ \@ifnotempty{##2}{\nobreak\indent{\itshape \emailname}%
+ \@ifnotempty{##1}{, \ignorespaces##1\unskip}~:\space
+ \ttfamily##2\par\endgroup}}%
+ \def\urladdr##1##2{\begingroup
+ \@ifnotempty{##2}{\nobreak\indent{\itshape \urlname}%
+ \@ifnotempty{##1}{, \ignorespaces##1\unskip}~:\space
+ \ttfamily##2\par\endgroup}}%
+ \addresses
+ \endgroup
+}
+\def\emailname{E-mail}
+\def\urlname{Web}
+
+\def\baselinestretch{1.1}
+\parskip 0pt plus 4pt
+
+\binoppenalty 2500 % normalement 700
+\relpenalty 1500 % normalement 500
+
+\newdimen\addressindent
+\addressindent .5\textwidth
+
+\fi
+
+\def\part{\@startsection{part}{1}%
+ \z@{3\linespacing\@plus\linespacing}{2\linespacing}%
+ {\raggedright\normalfont\bfseries\smf@boldmath\MakeUppercase}}
+\def\section{\@startsection{section}{1}%
+ \z@{2\linespacing\@plus\linespacing}{\linespacing}%
+ {\raggedright\normalfont\bfseries\smf@boldmath\MakeUppercase}}
+\def\specialsection{\@startsection{section}{1}%
+ \z@{2\linespacing\@plus\linespacing}{\linespacing}%
+ {\centering\normalfont\bfseries\smf@boldmath\MakeUppercase}}
+\let\sectionname\@empty
+\def\subsection{\@startsection{subsection}{2}%
+ \z@{.7\linespacing\@plus.7\linespacing}{.3\linespacing}
+ {\normalfont\bfseries\smf@boldmath}}
+\let\Subsection\subsection
+
+\let\bibliosection\specialsection
+\def\bibliofont{\normalfont}
+ % {\def\baselinestretch{1.2}\normalfont}
+ % \let\specialsection\section
+
+\def\th@plain{%
+ \let\thm@indent\noindent
+ \thm@headfont{\normalfont\scshape}%
+ \thm@notefont{\normalfont}%
+ \thm@preskip.5\linespacing \@plus .5\linespacing
+ \thm@postskip\thm@preskip
+ \thm@headpunct{\MakePointrait}
+ \itshape }
+\def\th@definition{\th@plain } % was \upshape
+\def\th@remark{\th@definition \thm@headfont{\itshape} \upshape}
+
+%%%% THEOREMES, DEFINITIONS
+\if@bbkswapnumbers\swapnumbers\fi
+
+\theoremstyle{plain}
+\newtheorem{defi}{\definame}[section]
+\newtheorem{prop}[defi]{\propname}
+\newtheorem{theo}[defi]{\theoname}
+\newtheorem{conj}[defi]{\conjname}
+\newtheorem{coro}[defi]{\coroname}
+\newtheorem{fait}[defi]{\faitname}
+\theoremstyle{definition}
+\newtheorem{lemm}[defi]{\lemmname}
+\theoremstyle{remark}
+\newtheorem{rema}[defi]{\remaname}
+\newtheorem{exem}[defi]{\exemname}
+\theoremstyle{plain}
+
+\newenvironment{enonce}[2][plain]%
+ {\let\smfenonce\relax \theoremstyle{#1}%
+ \newtheorem{smfenonce}[\smf@thm]{#2}%
+ \begin{smfenonce}}%
+ {\end{smfenonce}}%
+\newenvironment{enonce*}[2][plain]%
+ {\let\smfenonce\relax \theoremstyle{#1}%
+ \newtheorem*{smfenonce}{#2}%
+ \begin{smfenonce}}%
+ {\end{smfenonce}}%
+
+%%%% CITATIONS
+
+\def\@cite#1#2{{%
+ \m@th\upshape\mdseries[{#1}{\if@tempswa, #2\fi}]}}
+
+%%%% FIN DU DOCUMENT
+
+\g@addto@macro\smf@captionsenglish{\def\faitname{Fact}}
+\g@addto@macro\smf@captionsfrench{\def\faitname{Fait}}
+
+\def\smf@enddoc{%
+ \par\vskip 2\bigskipamount
+ \bgroup
+ \def\baselinestretch{1}\normalfont
+ \raggedright
+ \ifx\@empty\@translators\else \@settranslators\medskip \fi
+ \ifx\@empty\addresses \else \@setaddresses \fi
+ \par\egroup}
+%</asterki>
+% \end{macrocode}
+% \section{Ponctuation haute en romain m\^eme en italiques}
+% Ce package requiert que \paquet{babel} soit charg\'e et sous-entend que
+% l'on est en fran\c cais.
+% \begin{macrocode}
+%<*upitparen>
+\ProvidesPackage{upitparen}[2003/08/28 v1.1
+ Ponctuation haute en romain m\^eme en italiques]
+\declare@shorthand{french}{;}{%
+ \ifhmode
+ \ifdim\lastskip>\z@\unskip\penalty\@M\thinspace\else\FDP@thinspace\fi
+ \fi
+ \ifmmode\string;\else\textup{\string;}\fi}
+\declare@shorthand{french}{!}{%
+ \ifhmode
+ \ifdim\lastskip>\z@\unskip\penalty\@M\thinspace\else\FDP@thinspace\fi
+ \fi
+ \ifmmode\string!\else\textup{\string!}\fi}
+\declare@shorthand{french}{?}{%
+ \ifhmode
+ \ifdim\lastskip>\z@\unskip\penalty\@M\thinspace\else\FDP@thinspace\fi
+ \fi
+ \ifmmode\string?\else \textup{\string?}\fi}
+\declare@shorthand{french}{:}{%
+ \ifhmode
+ \ifdim\lastskip>\z@\unskip\penalty\@M\Fcolonspace\else\FDP@colonspace\fi
+ \fi
+ \ifmmode\string:\else\textup{\string:}\fi}
+
+\initiate@active@char{(}
+\initiate@active@char{)}
+\declare@shorthand{french}{(}{%
+ \ifmmode\string(\else\textup{\string(}\penalty\@M\fi}
+\declare@shorthand{french}{)}{%
+ \ifmmode\string)\else\penalty\@M\textup{\string)}\fi}
+\declare@shorthand{system}{(}{\string(}
+\declare@shorthand{system}{)}{\string)}
+
+\addto\extrasfrench{\bbl@activate{(}\bbl@activate{)}}
+\addto\noextrasfrench{\bbl@deactivate{(}\bbl@deactivate{)}}
+% \end{macrocode}
+%</upitparen>
+% \section{Style \BibTeX\ alphabétique}
+%<*smfalpha>
+% \begin{macrocode}
+%% @BibTeX-style-file{"smfalpha.bst"
+%% date="1998/06/15",
+%% version="v0.1"}
+%% Types of entries currently allowed in a BibTeX file:
+%% ARTICLE -- An article from a journal or magazine.
+%% BOOK -- A book with an explicit publisher.
+%% BOOKLET -- A work that is printed and bound,
+%% but without a named publisher or sponsoring institution.
+%% CONFERENCE -- The same as INPROCEEDINGS,
+%% included for Scribe compatibility.
+%% INBOOK -- A part of a book,
+%% which may be a chapter (or section or whatever) and/or a range of pages.
+%% INCOLLECTION -- A part of a book having its own title.
+%% INPROCEEDINGS -- An article in a conference proceedings.
+%% MANUAL -- Technical documentation.
+%% MASTERSTHESIS -- A Master's thesis.
+%% MISC -- Use this type when nothing else fits.
+%% PHDTHESIS -- A PhD thesis.
+%% PROCEEDINGS -- The proceedings of a conference.
+%% TECHREPORT -- A report published by a school or other institution,
+%% usually numbered within a series.
+%% UNPUBLISHED -- A document having an author and title, but not formally
+%% published.
+ENTRY
+ { address
+ author
+ booktitle
+ chapter
+ edition
+ editor
+ howpublished
+ institution
+ journal
+ key
+ language
+ month
+ note
+ number
+ organization
+ pages
+ publisher
+ school
+ series
+ title
+ type
+ volume
+ year
+ }
+ {}
+ { label extra.label extra.same.label sort.label }
+
+INTEGERS { output.state before.all mid.sentence after.name }
+
+FUNCTION {init.state.consts}
+{ #0 'before.all :=
+ #1 'after.name :=
+ #2 'mid.sentence :=
+}
+
+
+STRINGS { s t }
+FUNCTION {not}
+{ { #0 }
+ { #1 }
+ if$
+}
+
+FUNCTION {and}
+{ 'skip$
+ { pop$ #0 }
+ if$
+}
+
+FUNCTION {or}
+{ { pop$ #1 }
+ 'skip$
+ if$
+}
+
+FUNCTION {field.or.null}
+{ duplicate$ empty$
+ { pop$ "" }
+ 'skip$
+ if$
+}
+
+FUNCTION {emphasize}
+{ duplicate$ empty$
+ { pop$ "" }
+ { "\emph{" swap$ * "}" * }
+ if$
+}
+
+FUNCTION {guillemetize}
+{ duplicate$ empty$
+ { pop$ "" }
+ { "{\og " swap$ * "\fg}" * }
+ if$
+}
+
+FUNCTION {scapify}
+{ duplicate$ empty$
+ { pop$ "" }
+ { "{\scshape " swap$ * "}" * }
+ if$
+}
+
+
+FUNCTION {n.dashify}
+{ 't :=
+ ""
+ { t empty$ not }
+ { t #1 #1 substring$ "-" =
+{ t #1 #2 substring$ "--" = not
+ { "--" *
+ t #2 global.max$ substring$ 't :=
+ }
+ { { t #1 #1 substring$ "-" = }
+{ "-" *
+ t #2 global.max$ substring$ 't :=
+}
+ while$
+ }
+ if$
+}
+{ t #1 #1 substring$ *
+ t #2 global.max$ substring$ 't :=
+}
+ if$
+ }
+ while$
+}
+
+
+FUNCTION {tie.or.space.connect}
+{ duplicate$ text.length$ #3 <
+ { "~" }
+ { " " }
+ if$
+ swap$ * *
+}
+
+FUNCTION {add.space.if.necessary}
+{ duplicate$ "" =
+ 'skip$
+ { " " * }
+ if$
+}
+
+
+FUNCTION {either.or.check}
+{ empty$
+ 'pop$
+ { "can't use both " swap$ * " fields in " * cite$ * warning$ }
+ if$
+}
+
+
+FUNCTION {output.nonnull}
+{ 's :=
+ output.state after.name =
+ { extra.same.label "\bysame" =
+ { ", " * write$ }
+ { " -- " * write$ }
+ if$
+ mid.sentence 'output.state := }
+ { output.state mid.sentence =
+ { ", " * write$ }
+ { output.state before.all =
+ 'write$
+ { add.period$ " " * write$ }
+ if$
+ after.name 'output.state := }
+ if$ }
+ if$
+ s
+}
+
+
+FUNCTION {output}
+{ duplicate$ empty$
+ 'pop$
+ 'output.nonnull
+ if$
+}
+
+
+FUNCTION {missing.warning}
+{ "missing " swap$ * " in " * cite$ * warning$ }
+
+
+FUNCTION {output.check}
+{ 't :=
+ duplicate$ empty$
+ { pop$ t missing.warning }
+ 'output.nonnull
+ if$
+}
+
+FUNCTION {output.bibitem}
+{ newline$
+ "\bibitem[" write$
+ label write$
+ "]{" write$
+ cite$ write$
+ "}" write$
+ newline$
+ ""
+ before.all 'output.state :=
+}
+
+FUNCTION {fin.entry}
+{ add.period$
+ write$
+ newline$
+}
+
+
+FUNCTION {format.language}
+{ language empty$
+ { "" }
+ { " (" language * ")" * }
+ if$
+}
+INTEGERS { nameptr namesleft numnames }
+
+
+FUNCTION {format.names}
+{ 's :=
+ #1 'nameptr :=
+ s num.names$ 'numnames :=
+ numnames 'namesleft :=
+ { namesleft #0 > }
+ { s nameptr "{f.~}{vv~}{ll}{, jj}" format.name$ 't :=
+ nameptr #1 >
+{ namesleft #1 >
+ { ", " * t * }
+ { numnames #2 >
+{ "" * }
+'skip$
+ if$
+ t "others" =
+{ " {\normalfont et~al.}" * }
+{ " {\normalfont \smfandname} " * t * }
+ if$
+ }
+ if$
+}
+'t
+ if$
+ nameptr #1 + 'nameptr :=
+ namesleft #1 - 'namesleft :=
+ }
+ while$
+}
+
+FUNCTION {format.authors}
+{ author empty$
+ { "" }
+ { extra.same.label "\bysame" =
+ { "\bysame " }
+ { author format.names scapify }
+ if$
+ }
+ if$
+}
+
+FUNCTION {format.editors}
+{ editor empty$
+ { "" }
+ { extra.same.label "\bysame" =
+ { "\bysame " }
+ { editor format.names scapify }
+ if$
+ editor num.names$ #1 >
+ { " (\smfedsname)" * }
+ { " (\smfedname)" * }
+ if$
+ "\nomorebysame" 'extra.same.label :=
+ }
+ if$
+}
+
+FUNCTION {format.nonauthor.editors}
+{ editor empty$
+ { "" }
+ { editor format.names
+ editor num.names$ #1 >
+{ ", \smfedsname" * }
+{ ", \smfedname" * }
+ if$
+ }
+ if$
+}
+
+FUNCTION {format.booktitle}
+{ title empty$
+ { "" }
+ { title "t" change.case$ emphasize }
+ if$
+}
+
+FUNCTION {format.title}
+{ title empty$
+ { "" }
+ { title "t" change.case$ guillemetize }
+ if$
+}
+
+FUNCTION {format.journal.vol.year}
+{ journal empty$
+ { "journal name" missing.warning ""}
+ { journal emphasize }
+ if$
+ volume empty$
+ 'skip$
+ { " \textbf{" * volume * "}" * }
+ if$
+ year empty$
+ { "year" missing.warning }
+ { " (" * year * ")" * }
+ if$
+}
+
+
+FUNCTION {format.number}
+{ number empty$
+ { "" }
+ { "no.~" number * }
+ if$
+}
+
+
+FUNCTION {format.date}
+{ year empty$
+ { month empty$
+{ "" }
+{ "there's a month but no year in " cite$ * warning$
+ month
+}
+ if$
+ }
+ { month empty$
+'year
+{ month " " * year * }
+ if$
+ }
+ if$
+}
+
+
+FUNCTION {format.bookvolume.series.number}
+{ volume empty$
+ { "" % Push the empty string as a placeholder in case everything else
+ % is empty too.
+ series empty$
+ 'skip$
+ { pop$ series } % if series is not empty put in stack
+ if$
+ number empty$
+ 'skip$
+ { duplicate$ empty$ % if no preceding material,
+ 'skip$ % do nothing, otherwise
+ { ", " * } % add a comma and space to separate.
+ if$
+ "no." number tie.or.space.connect * % add the number information
+ }
+ if$
+ }
+%% If the volume is NOT EMPTY:
+ { "vol." volume tie.or.space.connect % vol. XX
+ number empty$
+ { series empty$
+ 'skip$
+ { series ", " * swap$ *} % Series Name, vol. XX
+ if$
+ }
+ { series empty$
+ { "can't use both volume and number if series info is missing"
+ warning$
+ "in BibTeX entry type `" type$ * "'" * top$
+ }
+ { ", " * series * ", no." * number tie.or.space.connect }
+ if$
+ }
+ if$
+ }
+ if$
+
+} % end of format.bookvolume.series.number
+
+%% format.inproc.title.where.editors is used by inproceedings entry types
+
+FUNCTION {format.inproc.title.address.editors}
+{ booktitle empty$
+ { "" }
+%% Emphasizing the title. We want initial caps.
+ { "in " booktitle emphasize *}
+ if$
+%% We add parentheses around the address (place where conference
+%% was held).
+ address empty$
+ 'skip$
+ { add.space.if.necessary "(" * address * ")" * }
+ if$
+%% Likewise we add parentheses around the editors' names.
+ editor empty$
+ 'skip$
+ { add.space.if.necessary "(" * format.nonauthor.editors * ")" * }
+ if$
+}
+
+%% format.incoll.title.editors is similar to format.inproc... but
+%% omits the address. For collections that are not proceedings volumes.
+
+FUNCTION {format.incoll.title.editors}
+{ booktitle empty$
+ { "" }
+%% Emphasizing the title. We want initial caps.
+ { "in " booktitle emphasize * }
+ if$
+%% We add parentheses around the editors' names.
+ editor empty$
+ 'skip$
+ { add.space.if.necessary "(" * format.nonauthor.editors * ")" * }
+ if$
+}
+
+
+FUNCTION {format.number.series}
+{ series empty$
+ { number empty$
+ { "" }
+ { "there's a number but no series in " cite$ * warning$ }
+ if$
+ }
+ { series
+ number empty$
+ 'skip$
+ { "\ \textbf{" * number * "}" * }
+ if$
+ }
+ if$
+}
+
+FUNCTION {format.edition}
+{ edition empty$
+ { "" }
+ { output.state mid.sentence =
+{ edition "l" change.case$ " \smfedname" * }
+{ edition "t" change.case$ " \smfedname" * }
+ if$
+ }
+ if$
+}
+
+INTEGERS { multiresult }
+
+FUNCTION {multi.page.check}
+{ 't :=
+ #0 'multiresult :=
+ { multiresult not
+ t empty$ not
+ and
+ }
+ { t #1 #1 substring$
+ duplicate$ "-" =
+ swap$ duplicate$ "," =
+ swap$ "+" =
+ or or
+{ #1 'multiresult := }
+{ t #2 global.max$ substring$ 't := }
+ if$
+ }
+ while$
+ multiresult
+}
+
+FUNCTION {format.pages}
+{ pages empty$
+ { "" }
+ { "p.~" pages n.dashify * }
+ if$
+}
+
+FUNCTION {format.book.pages}
+{ pages empty$
+ { "" }
+ { pages multi.page.check
+{ "p.~" pages n.dashify * }
+{ "p.~" pages * }
+ if$
+ }
+ if$
+}
+
+FUNCTION {format.chapter.pages}
+{ chapter empty$
+ 'format.pages
+ { type empty$
+{ "ch.~" }
+{ type "l" change.case$ " " * }
+ if$
+ chapter *
+ pages empty$
+'skip$
+{ ", " * format.book.pages * }
+ if$
+ }
+ if$
+}
+
+FUNCTION {empty.misc.check}
+{ author empty$ title empty$ howpublished empty$
+ month empty$ year empty$ note empty$
+ and and and and and
+ key empty$ not and
+ { "all relevant fields are empty in " cite$ * warning$ }
+ 'skip$
+ if$
+}
+
+FUNCTION {format.thesis.type}
+{ type empty$
+ 'skip$
+ { pop$
+ type "t" change.case$
+ }
+ if$
+}
+
+FUNCTION {format.tr.number}
+{ type empty$
+ { "Tech. Report" }
+ 'type
+ if$
+ number empty$
+ { "t" change.case$ }
+ { number tie.or.space.connect }
+ if$
+}
+
+FUNCTION {format.article.crossref}
+{ key empty$
+ { journal empty$
+{ "need key or journal for " cite$ * " to crossref " * crossref *
+ warning$
+ ""
+}
+{ "in " journal * }
+ if$
+ }
+ { "in " key * }
+ if$
+ " \cite{" * crossref * "}" *
+}
+
+FUNCTION {format.crossref.editor}
+{ editor #1 "{vv~}{ll}" format.name$
+ editor num.names$ duplicate$
+ #2 >
+ { pop$ " et~al." * }
+ { #2 <
+'skip$
+{ editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
+ { " et~al." * }
+ { " \smfandname\ " * editor #2 "{vv~}{ll}" format.name$ * }
+ if$
+}
+ if$
+ }
+ if$
+}
+
+FUNCTION {format.book.crossref}
+{ volume empty$
+ { "empty volume in " cite$ * "'s crossref of " * crossref * warning$
+ "in "
+ }
+ { "vol." volume tie.or.space.connect
+ " de " *
+ }
+ if$
+ editor empty$
+ editor field.or.null author field.or.null =
+ or
+ { key empty$
+{ series empty$
+ { "need editor, key, or series for " cite$ * " to crossref " *
+ crossref * warning$
+ "" *
+ }
+ { series * }
+ if$
+}
+{ key * }
+ if$
+ }
+ { format.crossref.editor * }
+ if$
+ " \cite{" * crossref * "}" *
+}
+
+FUNCTION {format.incoll.inproc.crossref}
+{ key empty$
+ { booktitle empty$
+ { editor empty$
+ editor field.or.null author field.or.null =
+ or
+ { "need editor, key, or booktitle for " cite$ * "to crossref " *
+ crossref * warning$ "" }
+ { "in " format.crossref.editor * }
+ if$ }
+ { "in " booktitle emphasize * }
+ if$ }
+ { "in " key * }
+ if$
+ " \cite{" * crossref * "}" *
+}
+
+
+FUNCTION {article}
+{ output.bibitem
+ format.authors "author" output.check
+ format.title "title" output.check
+ crossref missing$
+ { format.journal.vol.year output
+ format.number output
+ format.pages "pages" output.check
+ }
+ { format.article.crossref output.nonnull
+ format.pages output
+ }
+ if$
+ format.language *
+ note output
+ fin.entry
+}
+
+FUNCTION {book}
+{ output.bibitem
+ author empty$
+ { format.editors "author and editor" output.check }
+ { format.authors output.nonnull
+ crossref missing$
+{ "author and editor" editor either.or.check }
+'skip$
+ if$
+ }
+ if$
+ format.booktitle "title" output.check
+ format.edition output
+ crossref missing$
+ { format.bookvolume.series.number output
+ publisher "publisher" output.check
+ address output
+ }
+ { format.book.crossref output.nonnull
+ }
+ if$
+ format.date "year" output.check
+ format.language *
+ note output
+ fin.entry
+}
+FUNCTION {booklet}
+{ output.bibitem
+ format.authors output
+ format.booktitle "title" output.check
+ howpublished output
+ address output
+ format.date output
+ note output
+ fin.entry
+}
+
+FUNCTION {inbook}
+{ output.bibitem
+ author empty$
+ { format.editors "author and editor" output.check }
+ { format.authors output.nonnull
+ crossref missing$
+{ "author and editor" editor either.or.check }
+'skip$
+ if$
+ }
+ if$
+ format.title "title" output.check
+ crossref missing$
+ { format.bookvolume.series.number output
+ format.chapter.pages "chapter and pages" output.check
+ format.number.series output
+ publisher "publisher" output.check
+ address output
+ }
+ { format.chapter.pages "chapter and pages" output.check
+ format.book.crossref output.nonnull
+ }
+ if$
+ format.edition output
+ format.date "year" output.check
+ format.language *
+ note output
+ fin.entry
+}
+
+FUNCTION {incollection}
+{ output.bibitem
+ format.authors "author" output.check
+ format.title "title" output.check
+ crossref missing$
+ { format.incoll.title.editors "booktitle" output.check
+ format.bookvolume.series.number output
+ publisher "publisher" output.check
+ address output
+ format.edition output
+ format.date "year" output.check
+ }
+ { format.incoll.inproc.crossref output.nonnull
+ }
+ if$
+ note output
+ format.book.pages output
+ format.language *
+ fin.entry
+}
+
+FUNCTION {inproceedings}
+{ output.bibitem
+ format.authors "author" output.check
+ format.title "title" output.check
+ crossref missing$
+ { format.inproc.title.address.editors "booktitle" output.check
+ format.bookvolume.series.number output
+ organization output
+ publisher output
+ format.date "year" output.check
+ }
+ { format.incoll.inproc.crossref output.nonnull
+ }
+ if$
+ note output
+ format.book.pages output
+ format.language *
+ fin.entry
+}
+
+FUNCTION {conference} { inproceedings }
+
+FUNCTION {manual}
+{ output.bibitem
+ author empty$
+ { organization empty$
+'skip$
+{ organization output.nonnull
+ address output
+}
+ if$
+ }
+ { format.authors output.nonnull }
+ if$
+ format.booktitle "title" output.check
+ author empty$
+ { organization empty$
+{ address output }
+'skip$
+ if$
+ }
+ { organization output
+ address output
+ }
+ if$
+ format.edition output
+ format.date output
+ note output
+ fin.entry
+}
+
+FUNCTION {mastersthesis}
+{ output.bibitem
+ format.authors "author" output.check
+ format.booktitle "title" output.check
+ "\smfmastersthesisname" format.thesis.type output.nonnull
+ school "school" output.check
+ address output
+ format.date "year" output.check
+ note output
+ fin.entry
+}
+
+FUNCTION {phdthesis}
+{ output.bibitem
+ format.authors "author" output.check
+ format.title "title" output.check
+ "\smfphdthesisname" format.thesis.type output.nonnull
+ school "school" output.check
+ address output
+ format.date "year" output.check
+ note output
+ format.book.pages output
+ fin.entry
+}
+
+FUNCTION {proceedings}
+{ output.bibitem
+ editor empty$
+ { organization output }
+ { format.editors output.nonnull }
+ if$
+ format.booktitle "title" output.check
+ format.bookvolume.series.number output
+ address empty$
+ { editor empty$
+ 'skip$
+{ organization output }
+ if$
+ publisher output
+ format.date "year" output.check
+ }
+ { address output.nonnull
+ editor empty$
+'skip$
+{ organization output }
+ if$
+ publisher output
+ format.date "year" output.check
+ }
+ if$
+ note output
+ fin.entry
+}
+
+FUNCTION {techreport}
+{ output.bibitem
+ format.authors "author" output.check
+ format.title "title" output.check
+ format.tr.number output.nonnull
+ institution "institution" output.check
+ address output
+ format.date "year" output.check
+ note output
+ fin.entry
+}
+
+
+FUNCTION {misc}
+{ output.bibitem
+ format.authors output
+ format.title output
+ howpublished output
+ format.date output
+ note output
+ format.book.pages output
+ fin.entry
+ empty.misc.check
+}
+
+FUNCTION {unpublished}
+{ output.bibitem
+ format.authors "author" output.check
+ format.title "title" output.check
+ note "note" output.check
+ format.date output
+ fin.entry
+}
+FUNCTION {default.type} { misc }
+READ
+
+FUNCTION {sortify}
+{ purify$
+ "l" change.case$
+}
+
+INTEGERS { len }
+
+FUNCTION {chop.word}
+{ 's :=
+ 'len :=
+ s #1 len substring$ =
+ { s len #1 + global.max$ substring$ }
+ 's
+ if$
+}
+
+INTEGERS { et.al.char.used }
+
+FUNCTION {initialize.et.al.char.used}
+{ #0 'et.al.char.used :=
+}
+
+EXECUTE {initialize.et.al.char.used}
+
+FUNCTION {format.lab.names}
+{ 's :=
+ s num.names$ 'numnames :=
+ numnames #1 >
+ { numnames #4 >
+ { #3 'namesleft := }
+ { numnames 'namesleft := }
+ if$
+ #1 'nameptr :=
+ ""
+ { namesleft #0 > }
+ { nameptr numnames =
+ { s nameptr "{ff }{vv }{ll}{ jj}" format.name$ "others" =
+ { "{\etalchar{+}}" *
+ #1 'et.al.char.used :=
+ }
+ { s nameptr "{v{}}{l{}}" format.name$ * }
+ if$
+ }
+ { s nameptr "{v{}}{l{}}" format.name$ * }
+ if$
+ nameptr #1 + 'nameptr :=
+ namesleft #1 - 'namesleft :=
+ }
+ while$
+ numnames #4 >
+ { "{\etalchar{+}}" *
+ #1 'et.al.char.used :=
+ }
+ 'skip$
+ if$
+ }
+ { s #1 "{v{}}{l{}}" format.name$
+ duplicate$ text.length$ #2 <
+ { pop$ s #1 "{ll}" format.name$ #3 text.prefix$ }
+ 'skip$
+ if$
+ }
+ if$
+}
+
+FUNCTION {author.key.label}
+{ author empty$
+ { key empty$
+ { cite$ #1 #3 substring$ }
+ { key #3 text.prefix$ }
+ if$
+ }
+ { author format.lab.names }
+ if$
+}
+
+FUNCTION {author.editor.key.label}
+{ author empty$
+ { editor empty$
+ { key empty$
+ { cite$ #1 #3 substring$ }
+ { key #3 text.prefix$ }
+ if$
+ }
+ { editor format.lab.names }
+ if$
+ }
+ { author format.lab.names }
+ if$
+}
+
+FUNCTION {author.key.organization.label}
+{ author empty$
+ { key empty$
+ { organization empty$
+ { cite$ #1 #3 substring$ }
+ { "The " #4 organization chop.word #3 text.prefix$ }
+ if$
+ }
+ { key #3 text.prefix$ }
+ if$
+ }
+ { author format.lab.names }
+ if$
+}
+
+FUNCTION {editor.key.organization.label}
+{ editor empty$
+ { key empty$
+ { organization empty$
+ { cite$ #1 #3 substring$ }
+ { "The " #4 organization chop.word #3 text.prefix$ }
+ if$
+ }
+ { key #3 text.prefix$ }
+ if$
+ }
+ { editor format.lab.names }
+ if$
+}
+
+FUNCTION {calc.label}
+{ type$ "book" =
+ type$ "inbook" =
+ or
+ 'author.editor.key.label
+ { type$ "proceedings" =
+ 'editor.key.organization.label
+ { type$ "manual" =
+ 'author.key.organization.label
+ 'author.key.label
+ if$
+ }
+ if$
+ }
+ if$
+ duplicate$
+ year field.or.null purify$ #-1 #2 substring$
+ *
+ 'label :=
+ year field.or.null purify$ #-1 #4 substring$
+ *
+ sortify 'sort.label :=
+}
+FUNCTION {sort.format.names}
+{ 's :=
+ #1 'nameptr :=
+ ""
+ s num.names$ 'numnames :=
+ numnames 'namesleft :=
+ { namesleft #0 > }
+ { nameptr #1 >
+{ " " * }
+'skip$
+ if$
+%% s nameptr "{vv{ } }{ll{ }}{ ff{ }}{ jj{ }}" format.name$ 't :=
+ s nameptr "{ll{ }}{ ff{ }}{ jj{ }}" format.name$ 't :=
+ nameptr numnames = t "others" = and
+{ "et~al" * }
+{ t sortify * }
+ if$
+ nameptr #1 + 'nameptr :=
+ namesleft #1 - 'namesleft :=
+ }
+ while$
+}
+
+FUNCTION {sort.format.title}
+{ 't :=
+ "A " #2
+ "An " #3
+ "The " #4 t chop.word
+ chop.word
+ chop.word
+ sortify
+ #1 global.max$ substring$
+}
+
+FUNCTION {author.sort}
+{ author empty$
+ { key empty$
+{ "to sort, need author or key in " cite$ * warning$
+ ""
+}
+{ key sortify }
+ if$
+ }
+ { author sort.format.names }
+ if$
+}
+
+FUNCTION {author.editor.sort}
+{ author empty$
+ { editor empty$
+{ key empty$
+ { "to sort, need author, editor, or key in " cite$ * warning$
+ ""
+ }
+ { key sortify }
+ if$
+}
+{ editor sort.format.names }
+ if$
+ }
+ { author sort.format.names }
+ if$
+}
+
+FUNCTION {author.organization.sort}
+{ author empty$
+ { organization empty$
+{ key empty$
+ { "to sort, need author, organization, or key in " cite$ * warning$
+ ""
+ }
+ { key sortify }
+ if$
+}
+{ "The " #4 organization chop.word sortify }
+ if$
+ }
+ { author sort.format.names }
+ if$
+}
+
+FUNCTION {editor.organization.sort}
+{ editor empty$
+ { organization empty$
+{ key empty$
+ { "to sort, need editor, organization, or key in " cite$ * warning$
+ ""
+ }
+ { key sortify }
+ if$
+}
+{ "The " #4 organization chop.word sortify }
+ if$
+ }
+ { editor sort.format.names }
+ if$
+}
+
+FUNCTION {presort}
+{
+ calc.label
+ sort.label
+ " "
+ *
+ type$ "book" =
+ type$ "inbook" =
+ or
+ 'author.editor.sort
+ { type$ "proceedings" =
+'editor.organization.sort
+{ type$ "manual" =
+ 'author.organization.sort
+ 'author.sort
+ if$
+}
+ if$
+ }
+ if$
+ *
+ " "
+ *
+ year field.or.null sortify
+ *
+ " "
+ *
+ title field.or.null
+ sort.format.title
+ *
+ #1 entry.max$ substring$
+ 'sort.key$ :=
+}
+
+ITERATE {presort}
+
+SORT
+STRINGS { longest.label last.sort.label next.extra this.author prev.author }
+
+INTEGERS { longest.label.width last.extra.num }
+
+FUNCTION {initialize.longest.label}
+{ "" 'longest.label :=
+ #0 int.to.chr$ 'last.sort.label :=
+ "" 'next.extra :=
+ #0 'longest.label.width :=
+ #0 'last.extra.num :=
+ "abcxyz" 'prev.author :=
+ "" 'this.author :=
+}
+FUNCTION {forward.pass}
+{ last.sort.label sort.label =
+ { last.extra.num #1 + 'last.extra.num :=
+ last.extra.num int.to.chr$ 'extra.label :=
+ }
+ { "a" chr.to.int$ 'last.extra.num :=
+ "" 'extra.label :=
+ sort.label 'last.sort.label :=
+ }
+ if$
+
+ author empty$
+ { editor empty$
+ { "" }
+ 'editor
+ if$
+ }
+ 'author
+ if$
+ 'this.author :=
+ this.author prev.author =
+ { "\bysame" 'extra.same.label := }
+ { "" 'extra.same.label :=
+ this.author "" =
+ { "abcxyz" }
+ 'this.author
+ if$
+ 'prev.author :=
+ }
+ if$
+}
+
+FUNCTION {reverse.pass}
+{ next.extra "b" =
+ { "a" 'extra.label := }
+ 'skip$
+ if$
+ label extra.label * 'label :=
+ label width$ longest.label.width >
+ { label 'longest.label :=
+ label width$ 'longest.label.width :=
+ }
+ 'skip$
+ if$
+ extra.label 'next.extra :=
+}
+
+
+
+EXECUTE {initialize.longest.label}
+
+ITERATE {forward.pass}
+
+REVERSE {reverse.pass}
+FUNCTION {begin.bib}
+{
+ et.al.char.used
+ { "\newcommand{\etalchar}[1]{$^{#1}$}" write$ newline$ }
+ 'skip$
+ if$
+ preamble$ empty$
+ 'skip$
+ { preamble$ write$ newline$ }
+ if$
+ "\providecommand{\bysame}{\leavevmode ---\ }" write$ newline$
+ "\providecommand{\og}{``}" write$ newline$
+ "\providecommand{\fg}{''}" write$ newline$
+ "\providecommand{\smfandname}{\&}" write$ newline$
+ "\providecommand{\smfedsname}{\'eds.}" write$ newline$
+ "\providecommand{\smfedname}{\'ed.}" write$ newline$
+ "\providecommand{\smfmastersthesisname}{M\'emoire}" write$ newline$
+ "\providecommand{\smfphdthesisname}{Th\`ese}" write$ newline$
+ "\begin{thebibliography}{" longest.label * "}" * write$ newline$
+}
+
+EXECUTE {begin.bib}
+
+EXECUTE {init.state.consts}
+
+ITERATE {call.type$}
+
+FUNCTION {end.bib}
+{ newline$
+ "\end{thebibliography}" write$ newline$
+}
+
+EXECUTE {end.bib}
+% \end{macrocode}
+%</smfalpha>
+% \section{Style \BibTeX\ numérique}
+%<*smfplain>
+% \begin{macrocode}
+%% @BibTeX-style-file{"smfplain.bst"
+%% date="1998/06/15",
+%% version="v0.1"}
+%% Types of entries currently allowed in a BibTeX file:
+%% ARTICLE -- An article from a journal or magazine.
+%% BOOK -- A book with an explicit publisher.
+%% BOOKLET -- A work that is printed and bound,
+%% but without a named publisher or sponsoring institution.
+%% CONFERENCE -- The same as INPROCEEDINGS,
+%% included for Scribe compatibility.
+%% INBOOK -- A part of a book,
+%% which may be a chapter (or section or whatever) and/or a range of pages.
+%% INCOLLECTION -- A part of a book having its own title.
+%% INPROCEEDINGS -- An article in a conference proceedings.
+%% MANUAL -- Technical documentation.
+%% MASTERSTHESIS -- A Master's thesis.
+%% MISC -- Use this type when nothing else fits.
+%% PHDTHESIS -- A PhD thesis.
+%% PROCEEDINGS -- The proceedings of a conference.
+%% TECHREPORT -- A report published by a school or other institution,
+%% usually numbered within a series.
+%% UNPUBLISHED -- A document having an author and title, but not formally
+%% published.
+ENTRY
+ { address
+ author
+ booktitle
+ chapter
+ edition
+ editor
+ howpublished
+ institution
+ journal
+ key
+ language
+ month
+ note
+ number
+ organization
+ pages
+ publisher
+ school
+ series
+ title
+ type
+ volume
+ year
+ }
+ {}
+ { label extra.label }
+
+INTEGERS { output.state before.all mid.sentence after.name }
+
+FUNCTION {init.state.consts}
+{ #0 'before.all :=
+ #1 'after.name :=
+ #2 'mid.sentence :=
+}
+
+
+STRINGS { s t }
+FUNCTION {not}
+{ { #0 }
+ { #1 }
+ if$
+}
+
+FUNCTION {and}
+{ 'skip$
+ { pop$ #0 }
+ if$
+}
+
+FUNCTION {or}
+{ { pop$ #1 }
+ 'skip$
+ if$
+}
+
+FUNCTION {field.or.null}
+{ duplicate$ empty$
+ { pop$ "" }
+ 'skip$
+ if$
+}
+
+FUNCTION {emphasize}
+{ duplicate$ empty$
+ { pop$ "" }
+ { "\emph{" swap$ * "}" * }
+ if$
+}
+
+FUNCTION {guillemetize}
+{ duplicate$ empty$
+ { pop$ "" }
+ { "{\og " swap$ * "\fg}" * }
+ if$
+}
+
+FUNCTION {scapify}
+{ duplicate$ empty$
+ { pop$ "" }
+ { "{\scshape " swap$ * "}" * }
+ if$
+}
+
+
+FUNCTION {n.dashify}
+{ 't :=
+ ""
+ { t empty$ not }
+ { t #1 #1 substring$ "-" =
+{ t #1 #2 substring$ "--" = not
+ { "--" *
+ t #2 global.max$ substring$ 't :=
+ }
+ { { t #1 #1 substring$ "-" = }
+{ "-" *
+ t #2 global.max$ substring$ 't :=
+}
+ while$
+ }
+ if$
+}
+{ t #1 #1 substring$ *
+ t #2 global.max$ substring$ 't :=
+}
+ if$
+ }
+ while$
+}
+
+
+FUNCTION {tie.or.space.connect}
+{ duplicate$ text.length$ #3 <
+ { "~" }
+ { " " }
+ if$
+ swap$ * *
+}
+
+FUNCTION {add.space.if.necessary}
+{ duplicate$ "" =
+ 'skip$
+ { " " * }
+ if$
+}
+
+
+FUNCTION {either.or.check}
+{ empty$
+ 'pop$
+ { "can't use both " swap$ * " fields in " * cite$ * warning$ }
+ if$
+}
+
+
+FUNCTION {output.nonnull}
+{ 's :=
+ output.state after.name =
+ { extra.label "\bysame" =
+ { ", " * write$ }
+ { " -- " * write$ }
+ if$
+ mid.sentence 'output.state := }
+ { output.state mid.sentence =
+ { ", " * write$ }
+ { output.state before.all =
+ 'write$
+ { add.period$ " " * write$ }
+ if$
+ after.name 'output.state := }
+ if$ }
+ if$
+ s
+}
+
+
+FUNCTION {output}
+{ duplicate$ empty$
+ 'pop$
+ 'output.nonnull
+ if$
+}
+
+
+FUNCTION {missing.warning}
+{ "missing " swap$ * " in " * cite$ * warning$ }
+
+
+FUNCTION {output.check}
+{ 't :=
+ duplicate$ empty$
+ { pop$ t missing.warning }
+ 'output.nonnull
+ if$
+}
+
+FUNCTION {output.bibitem}
+{ newline$
+ "\bibitem{" write$
+ cite$ write$
+ "}" write$
+ newline$
+ ""
+ before.all 'output.state :=
+}
+
+FUNCTION {fin.entry}
+{ add.period$
+ write$
+ newline$
+}
+
+
+FUNCTION {format.language}
+{ language empty$
+ { "" }
+ { " (" language * ")" * }
+ if$
+}
+INTEGERS { nameptr namesleft numnames }
+
+
+FUNCTION {format.names}
+{ 's :=
+ #1 'nameptr :=
+ s num.names$ 'numnames :=
+ numnames 'namesleft :=
+ { namesleft #0 > }
+ { s nameptr "{f.~}{vv~}{ll}{, jj}" format.name$ 't :=
+ nameptr #1 >
+{ namesleft #1 >
+ { ", " * t * }
+ { numnames #2 >
+{ "" * }
+'skip$
+ if$
+ t "others" =
+{ " {\normalfont et~al.}" * }
+{ " {\normalfont \smfandname} " * t * }
+ if$
+ }
+ if$
+}
+'t
+ if$
+ nameptr #1 + 'nameptr :=
+ namesleft #1 - 'namesleft :=
+ }
+ while$
+}
+
+FUNCTION {format.authors}
+{ author empty$
+ { "" }
+ { extra.label "\bysame" =
+ { "\bysame " }
+ { author format.names scapify }
+ if$
+ }
+ if$
+}
+
+FUNCTION {format.editors}
+{ editor empty$
+ { "" }
+ { extra.label "\bysame" =
+ { "\bysame " }
+ { editor format.names scapify }
+ if$
+ editor num.names$ #1 >
+ { " (\smfedsname)" * }
+ { " (\smfedname)" * }
+ if$
+ "\nomorebysame" 'extra.label :=
+ }
+ if$
+}
+
+FUNCTION {format.nonauthor.editors}
+{ editor empty$
+ { "" }
+ { editor format.names
+ editor num.names$ #1 >
+{ ", \smfedsname" * }
+{ ", \smfedname" * }
+ if$
+ }
+ if$
+}
+
+FUNCTION {format.booktitle}
+{ title empty$
+ { "" }
+ { title "t" change.case$ emphasize }
+ if$
+}
+
+FUNCTION {format.title}
+{ title empty$
+ { "" }
+ { title "t" change.case$ guillemetize }
+ if$
+}
+
+FUNCTION {format.journal.vol.year}
+{ journal empty$
+ { "journal name" missing.warning ""}
+ { journal emphasize }
+ if$
+ volume empty$
+ 'skip$
+ { " \textbf{" * volume * "}" * }
+ if$
+ year empty$
+ { "year" missing.warning }
+ { " (" * year * ")" * }
+ if$
+}
+
+
+FUNCTION {format.number}
+{ number empty$
+ { "" }
+ { "no.~" number * }
+ if$
+}
+
+
+FUNCTION {format.date}
+{ year empty$
+ { month empty$
+{ "" }
+{ "there's a month but no year in " cite$ * warning$
+ month
+}
+ if$
+ }
+ { month empty$
+'year
+{ month " " * year * }
+ if$
+ }
+ if$
+}
+
+
+FUNCTION {format.bookvolume.series.number}
+{ volume empty$
+ { "" % Push the empty string as a placeholder in case everything else
+ % is empty too.
+ series empty$
+ 'skip$
+ { pop$ series } % if series is not empty put in stack
+ if$
+ number empty$
+ 'skip$
+ { duplicate$ empty$ % if no preceding material,
+ 'skip$ % do nothing, otherwise
+ { ", " * } % add a comma and space to separate.
+ if$
+ "no." number tie.or.space.connect * % add the number information
+ }
+ if$
+ }
+%% If the volume is NOT EMPTY:
+ { "vol." volume tie.or.space.connect % vol. XX
+ number empty$
+ { series empty$
+ 'skip$
+ { series ", " * swap$ *} % Series Name, vol. XX
+ if$
+ }
+ { series empty$
+ { "can't use both volume and number if series info is missing"
+ warning$
+ "in BibTeX entry type `" type$ * "'" * top$
+ }
+ { ", " * series * ", no." * number tie.or.space.connect }
+ if$
+ }
+ if$
+ }
+ if$
+
+} % end of format.bookvolume.series.number
+
+%% format.inproc.title.where.editors is used by inproceedings entry types
+
+FUNCTION {format.inproc.title.address.editors}
+{ booktitle empty$
+ { "" }
+%% Emphasizing the title. We want initial caps, roman.
+ { "in " booktitle emphasize * }
+ if$
+%% We add parentheses around the address (place where conference
+%% was held).
+ address empty$
+ 'skip$
+ { add.space.if.necessary "(" * address * ")" * }
+ if$
+%% Likewise we add parentheses around the editors' names.
+ editor empty$
+ 'skip$
+ { add.space.if.necessary "(" * format.nonauthor.editors * ")" * }
+ if$
+}
+
+%% format.incoll.title.editors is similar to format.inproc... but
+%% omits the address. For collections that are not proceedings volumes.
+
+FUNCTION {format.incoll.title.editors}
+{ booktitle empty$
+ { "" }
+%% Emphasizing the title. We want initial caps
+ { "in " booktitle emphasize * }
+ if$
+%% We add parentheses around the editors' names.
+ editor empty$
+ 'skip$
+ { add.space.if.necessary "(" * format.nonauthor.editors * ")" * }
+ if$
+}
+
+
+FUNCTION {format.number.series}
+{ series empty$
+ { number empty$
+ { "" }
+ { "there's a number but no series in " cite$ * warning$ }
+ if$
+ }
+ { series
+ number empty$
+ 'skip$
+ { "\ \textbf{" * number * "}" * }
+ if$
+ }
+ if$
+}
+
+FUNCTION {format.edition}
+{ edition empty$
+ { "" }
+ { output.state mid.sentence =
+{ edition "l" change.case$ " \smfedname" * }
+{ edition "t" change.case$ " \smfedname" * }
+ if$
+ }
+ if$
+}
+
+INTEGERS { multiresult }
+
+FUNCTION {multi.page.check}
+{ 't :=
+ #0 'multiresult :=
+ { multiresult not
+ t empty$ not
+ and
+ }
+ { t #1 #1 substring$
+ duplicate$ "-" =
+ swap$ duplicate$ "," =
+ swap$ "+" =
+ or or
+{ #1 'multiresult := }
+{ t #2 global.max$ substring$ 't := }
+ if$
+ }
+ while$
+ multiresult
+}
+
+FUNCTION {format.pages}
+{ pages empty$
+ { "" }
+ { "p.~" pages n.dashify * }
+ if$
+}
+
+FUNCTION {format.book.pages}
+{ pages empty$
+ { "" }
+ { pages multi.page.check
+{ "p.~" pages n.dashify * }
+{ "p.~" pages * }
+ if$
+ }
+ if$
+}
+
+FUNCTION {format.chapter.pages}
+{ chapter empty$
+ 'format.pages
+ { type empty$
+{ "ch.~" }
+{ type "l" change.case$ " " * }
+ if$
+ chapter *
+ pages empty$
+'skip$
+{ ", " * format.book.pages * }
+ if$
+ }
+ if$
+}
+
+FUNCTION {empty.misc.check}
+{ author empty$ title empty$ howpublished empty$
+ month empty$ year empty$ note empty$
+ and and and and and
+ key empty$ not and
+ { "all relevant fields are empty in " cite$ * warning$ }
+ 'skip$
+ if$
+}
+
+FUNCTION {format.thesis.type}
+{ type empty$
+ 'skip$
+ { pop$
+ type "t" change.case$
+ }
+ if$
+}
+
+FUNCTION {format.tr.number}
+{ type empty$
+ { "Tech. Report" }
+ 'type
+ if$
+ number empty$
+ { "t" change.case$ }
+ { number tie.or.space.connect }
+ if$
+}
+
+FUNCTION {format.article.crossref}
+{ key empty$
+ { journal empty$
+{ "need key or journal for " cite$ * " to crossref " * crossref *
+ warning$
+ ""
+}
+{ "in " journal * }
+ if$
+ }
+ { "in " key * }
+ if$
+ " \cite{" * crossref * "}" *
+}
+
+FUNCTION {format.crossref.editor}
+{ editor #1 "{vv~}{ll}" format.name$
+ editor num.names$ duplicate$
+ #2 >
+ { pop$ " et~al." * }
+ { #2 <
+'skip$
+{ editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
+ { " et~al." * }
+ { " \smfandname\ " * editor #2 "{vv~}{ll}" format.name$ * }
+ if$
+}
+ if$
+ }
+ if$
+}
+
+FUNCTION {format.book.crossref}
+{ volume empty$
+ { "empty volume in " cite$ * "'s crossref of " * crossref * warning$
+ "in "
+ }
+ { "vol." volume tie.or.space.connect
+ " de " *
+ }
+ if$
+ editor empty$
+ editor field.or.null author field.or.null =
+ or
+ { key empty$
+{ series empty$
+ { "need editor, key, or series for " cite$ * " to crossref " *
+ crossref * warning$
+ "" *
+ }
+ { series * }
+ if$
+}
+{ key * }
+ if$
+ }
+ { format.crossref.editor * }
+ if$
+ " \cite{" * crossref * "}" *
+}
+
+FUNCTION {format.incoll.inproc.crossref}
+{ key empty$
+ { booktitle empty$
+ { editor empty$
+ editor field.or.null author field.or.null =
+ or
+ { "need editor, key, or booktitle for " cite$ * "to crossref " *
+ crossref * warning$ "" }
+ { "in " format.crossref.editor * }
+ if$ }
+ { "in " booktitle emphasize * }
+ if$ }
+ { "in " key * }
+ if$
+ " \cite{" * crossref * "}" *
+}
+
+
+FUNCTION {article}
+{ output.bibitem
+ format.authors "author" output.check
+ format.title "title" output.check
+ crossref missing$
+ { format.journal.vol.year output
+ format.number output
+ format.pages "pages" output.check
+ }
+ { format.article.crossref output.nonnull
+ format.pages output
+ }
+ if$
+ format.language *
+ note output
+ fin.entry
+}
+
+FUNCTION {book}
+{ output.bibitem
+ author empty$
+ { format.editors "author and editor" output.check }
+ { format.authors output.nonnull
+ crossref missing$
+{ "author and editor" editor either.or.check }
+'skip$
+ if$
+ }
+ if$
+ format.booktitle "title" output.check
+ format.edition output
+ crossref missing$
+ { format.bookvolume.series.number output
+ publisher "publisher" output.check
+ address output
+ }
+ { format.book.crossref output.nonnull
+ }
+ if$
+ format.date "year" output.check
+ format.language *
+ note output
+ fin.entry
+}
+FUNCTION {booklet}
+{ output.bibitem
+ format.authors output
+ format.booktitle "title" output.check
+ howpublished output
+ address output
+ format.date output
+ note output
+ fin.entry
+}
+
+FUNCTION {inbook}
+{ output.bibitem
+ author empty$
+ { format.editors "author and editor" output.check }
+ { format.authors output.nonnull
+ crossref missing$
+{ "author and editor" editor either.or.check }
+'skip$
+ if$
+ }
+ if$
+ format.title "title" output.check
+ crossref missing$
+ { format.bookvolume.series.number output
+ format.chapter.pages "chapter and pages" output.check
+ format.number.series output
+ publisher "publisher" output.check
+ address output
+ }
+ { format.chapter.pages "chapter and pages" output.check
+ format.book.crossref output.nonnull
+ }
+ if$
+ format.edition output
+ format.date "year" output.check
+ format.language *
+ note output
+ fin.entry
+}
+
+FUNCTION {incollection}
+{ output.bibitem
+ format.authors "author" output.check
+ format.title "title" output.check
+ crossref missing$
+ { format.incoll.title.editors "booktitle" output.check
+ format.bookvolume.series.number output
+ publisher "publisher" output.check
+ address output
+ format.edition output
+ format.date "year" output.check
+ }
+ { format.incoll.inproc.crossref output.nonnull
+ }
+ if$
+ note output
+ format.book.pages output
+ format.language *
+ fin.entry
+}
+
+FUNCTION {inproceedings}
+{ output.bibitem
+ format.authors "author" output.check
+ format.title "title" output.check
+ crossref missing$
+ { format.inproc.title.address.editors "booktitle" output.check
+ format.bookvolume.series.number output
+ organization output
+ publisher output
+ format.date "year" output.check
+ }
+ { format.incoll.inproc.crossref output.nonnull
+ }
+ if$
+ note output
+ format.book.pages output
+ format.language *
+ fin.entry
+}
+
+FUNCTION {conference} { inproceedings }
+
+FUNCTION {manual}
+{ output.bibitem
+ author empty$
+ { organization empty$
+'skip$
+{ organization output.nonnull
+ address output
+}
+ if$
+ }
+ { format.authors output.nonnull }
+ if$
+ format.booktitle "title" output.check
+ author empty$
+ { organization empty$
+{ address output }
+'skip$
+ if$
+ }
+ { organization output
+ address output
+ }
+ if$
+ format.edition output
+ format.date output
+ note output
+ fin.entry
+}
+
+FUNCTION {mastersthesis}
+{ output.bibitem
+ format.authors "author" output.check
+ format.booktitle "title" output.check
+ "\smfmastersthesisname" format.thesis.type output.nonnull
+ school "school" output.check
+ address output
+ format.date "year" output.check
+ note output
+ fin.entry
+}
+
+FUNCTION {phdthesis}
+{ output.bibitem
+ format.authors "author" output.check
+ format.title "title" output.check
+ "\smfphdthesisname" format.thesis.type output.nonnull
+ school "school" output.check
+ address output
+ format.date "year" output.check
+ note output
+ format.book.pages output
+ fin.entry
+}
+
+FUNCTION {proceedings}
+{ output.bibitem
+ editor empty$
+ { organization output }
+ { format.editors output.nonnull }
+ if$
+ format.booktitle "title" output.check
+ format.bookvolume.series.number output
+ address empty$
+ { editor empty$
+ 'skip$
+{ organization output }
+ if$
+ publisher output
+ format.date "year" output.check
+ }
+ { address output.nonnull
+ editor empty$
+'skip$
+{ organization output }
+ if$
+ publisher output
+ format.date "year" output.check
+ }
+ if$
+ note output
+ fin.entry
+}
+
+FUNCTION {techreport}
+{ output.bibitem
+ format.authors "author" output.check
+ format.title "title" output.check
+ format.tr.number output.nonnull
+ institution "institution" output.check
+ address output
+ format.date "year" output.check
+ note output
+ fin.entry
+}
+
+
+FUNCTION {misc}
+{ output.bibitem
+ format.authors output
+ format.title output
+ howpublished output
+ format.date output
+ note output
+ format.book.pages output
+ fin.entry
+ empty.misc.check
+}
+
+FUNCTION {unpublished}
+{ output.bibitem
+ format.authors "author" output.check
+ format.title "title" output.check
+ note "note" output.check
+ format.date output
+ fin.entry
+}
+FUNCTION {default.type} { misc }
+READ
+
+FUNCTION {sortify}
+{ purify$
+ "l" change.case$
+}
+
+INTEGERS { len }
+
+FUNCTION {chop.word}
+{ 's :=
+ 'len :=
+ s #1 len substring$ =
+ { s len #1 + global.max$ substring$ }
+ 's
+ if$
+}
+
+FUNCTION {sort.format.names}
+{ 's :=
+ #1 'nameptr :=
+ ""
+ s num.names$ 'numnames :=
+ numnames 'namesleft :=
+ { namesleft #0 > }
+ { nameptr #1 >
+{ " " * }
+'skip$
+ if$
+%% s nameptr "{vv{ } }{ll{ }}{ ff{ }}{ jj{ }}" format.name$ 't :=
+ s nameptr "{ll{ }}{ ff{ }}{ jj{ }}" format.name$ 't :=
+ nameptr numnames = t "others" = and
+{ "et~al" * }
+{ t sortify * }
+ if$
+ nameptr #1 + 'nameptr :=
+ namesleft #1 - 'namesleft :=
+ }
+ while$
+}
+
+FUNCTION {sort.format.title}
+{ 't :=
+ "A " #2
+ "An " #3
+ "The " #4 t chop.word
+ chop.word
+ chop.word
+ sortify
+ #1 global.max$ substring$
+}
+
+FUNCTION {author.sort}
+{ author empty$
+ { key empty$
+{ "to sort, need author or key in " cite$ * warning$
+ ""
+}
+{ key sortify }
+ if$
+ }
+ { author sort.format.names }
+ if$
+}
+
+FUNCTION {author.editor.sort}
+{ author empty$
+ { editor empty$
+{ key empty$
+ { "to sort, need author, editor, or key in " cite$ * warning$
+ ""
+ }
+ { key sortify }
+ if$
+}
+{ editor sort.format.names }
+ if$
+ }
+ { author sort.format.names }
+ if$
+}
+
+FUNCTION {author.organization.sort}
+{ author empty$
+ { organization empty$
+{ key empty$
+ { "to sort, need author, organization, or key in " cite$ * warning$
+ ""
+ }
+ { key sortify }
+ if$
+}
+{ "The " #4 organization chop.word sortify }
+ if$
+ }
+ { author sort.format.names }
+ if$
+}
+
+FUNCTION {editor.organization.sort}
+{ editor empty$
+ { organization empty$
+{ key empty$
+ { "to sort, need editor, organization, or key in " cite$ * warning$
+ ""
+ }
+ { key sortify }
+ if$
+}
+{ "The " #4 organization chop.word sortify }
+ if$
+ }
+ { editor sort.format.names }
+ if$
+}
+
+FUNCTION {presort}
+{
+ type$ "book" =
+ type$ "inbook" =
+ or
+ 'author.editor.sort
+ { type$ "proceedings" =
+'editor.organization.sort
+{ type$ "manual" =
+ 'author.organization.sort
+ 'author.sort
+ if$
+}
+ if$
+ }
+ if$
+ " "
+ *
+ year field.or.null sortify
+ *
+ " "
+ *
+ title field.or.null
+ sort.format.title
+ *
+ #1 entry.max$ substring$
+ 'sort.key$ :=
+}
+
+ITERATE {presort}
+
+SORT
+STRINGS { longest.label prev.author this.author }
+
+INTEGERS { number.label longest.label.width }
+
+FUNCTION {initialize.longest.label}
+{ "" 'longest.label :=
+ #1 'number.label :=
+ #0 'longest.label.width :=
+ "abcxyz" 'prev.author :=
+ "" 'this.author :=
+}
+
+FUNCTION {longest.label.pass}
+{ number.label int.to.str$ 'label :=
+ number.label #1 + 'number.label :=
+ label width$ longest.label.width >
+ { label 'longest.label :=
+ label width$ 'longest.label.width :=
+ }
+ 'skip$
+ if$
+ author empty$
+ { editor empty$
+ { "" }
+ 'editor
+ if$
+ }
+ 'author
+ if$
+ 'this.author :=
+ this.author prev.author =
+ { "\bysame" 'extra.label := }
+ { "" 'extra.label :=
+ this.author "" =
+ { "abcxyz" }
+ 'this.author
+ if$
+ 'prev.author :=
+ }
+ if$
+}
+
+EXECUTE {initialize.longest.label}
+
+ITERATE {longest.label.pass}
+FUNCTION {begin.bib}
+{
+ preamble$ empty$
+ 'skip$
+ { preamble$ write$ newline$ }
+ if$
+ "\providecommand{\bysame}{\leavevmode ---\ }" write$ newline$
+ "\providecommand{\og}{``}" write$ newline$
+ "\providecommand{\fg}{''}" write$ newline$
+ "\providecommand{\smfandname}{\&}" write$ newline$
+ "\providecommand{\smfedsname}{\'eds.}" write$ newline$
+ "\providecommand{\smfedname}{\'ed.}" write$ newline$
+ "\providecommand{\smfmastersthesisname}{M\'emoire}" write$ newline$
+ "\providecommand{\smfphdthesisname}{Th\`ese}" write$ newline$
+ "\begin{thebibliography}{" longest.label * "}" * write$ newline$
+}
+
+EXECUTE {begin.bib}
+
+EXECUTE {init.state.consts}
+
+ITERATE {call.type$}
+
+FUNCTION {end.bib}
+{ newline$
+ "\end{thebibliography}" write$ newline$
+}
+
+EXECUTE {end.bib}
+% \end{macrocode}
+%</smfplain>
+% \clearpage
+% \def\filename{index}
+% \PrintIndex
+% \clearpage
+% \PrintChanges
+% \Finale
+% \end{document}