diff options
author | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
commit | e0c6872cf40896c7be36b11dcc744620f10adf1d (patch) | |
tree | 60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/latex/contrib/smflatex |
Initial commit
Diffstat (limited to 'macros/latex/contrib/smflatex')
-rw-r--r-- | macros/latex/contrib/smflatex/README | 47 | ||||
-rw-r--r-- | macros/latex/contrib/smflatex/e-doc.pdf | bin | 0 -> 524328 bytes | |||
-rw-r--r-- | macros/latex/contrib/smflatex/e-doc.tex | 674 | ||||
-rw-r--r-- | macros/latex/contrib/smflatex/f-doc.pdf | bin | 0 -> 522585 bytes | |||
-rw-r--r-- | macros/latex/contrib/smflatex/f-doc.tex | 753 | ||||
-rw-r--r-- | macros/latex/contrib/smflatex/smflatex.dtx | 8503 | ||||
-rw-r--r-- | macros/latex/contrib/smflatex/smflatex.ins | 73 |
7 files changed, 10050 insertions, 0 deletions
diff --git a/macros/latex/contrib/smflatex/README b/macros/latex/contrib/smflatex/README new file mode 100644 index 0000000000..d6a6f94e27 --- /dev/null +++ b/macros/latex/contrib/smflatex/README @@ -0,0 +1,47 @@ +The Société mathématique de France provides +a set of classes, packages and bibtex styles +that are used in its publications. +They are based on Ams classes (whose code is sometimes recopied) +and mainly "upward-compatible". + +Their main features are + 1. different design, similar to traditional French mathematical journals + 2. new environments for typesetting some informations +in two languages (altabstract, alttitle, altkeywords) + 3. if necessary, use of babel (option french) and desactivation +of some features of french. + +The following files are included. + + smfart.cls + smfbook.cls classes for articles and books + + smfenum.sty package for new alignment style of enumerations + smfthm.sty package for simplified definition of theorems + + smfplain.bst + smfalpha.bst BibTeX styles + + e-doc.tex documentation and advices (in english) + f-doc.tex documentation et conseils (in french) + +The present distribution is version 1.5 +The documentation files are slightly outdated. + +INSTALLATION : + unload these files to $TEXMF/src/latex/smflatex + compile smflatex.ins + move .cls, .sty files to $TEXMF/tex/latex/smflatex + move .bst files to $TEXMF/bibtex/bst/smflatex + move .tex and .pdf files to $TEXMF/doc/latex/smflatex + +This work is subject to the LaTeX Project Public License (version 1.3c). + +-- +Société mathématique de France +Institut Henri Poincaré +11 rue Pierre et Marie Curie, F-75231 Paris cedex 05 + +Email : revues@smf.ens.fr +Url : http://smf.emath.fr + diff --git a/macros/latex/contrib/smflatex/e-doc.pdf b/macros/latex/contrib/smflatex/e-doc.pdf Binary files differnew file mode 100644 index 0000000000..8d62465e98 --- /dev/null +++ b/macros/latex/contrib/smflatex/e-doc.pdf diff --git a/macros/latex/contrib/smflatex/e-doc.tex b/macros/latex/contrib/smflatex/e-doc.tex new file mode 100644 index 0000000000..af18072a6b --- /dev/null +++ b/macros/latex/contrib/smflatex/e-doc.tex @@ -0,0 +1,674 @@ +\documentclass[11pt,english]{smfart} + +\usepackage[T1]{fontenc} +\usepackage[english,francais]{babel} + +\usepackage{amssymb,url,xspace,smfthm} + +\def\meta#1{$\langle${\it #1}$\rangle$} +\newcommand{\myast}{($\star$)\ } +\makeatletter + \def\ps@copyright{\ps@empty + \def\@oddfoot{\hfil\small\copyright 1997, \SMF}} +\makeatother + +\newcommand{\SmF}{Soci\'et\'e ma\-th\'e\-ma\-ti\-que de France} +\newcommand{\SMF}{Soci\'et\'e Ma\-th\'e\-Ma\-ti\-que de France} +\newcommand{\BibTeX}{{\scshape Bib}\kern-.08em\TeX} +\newcommand{\T}{\S\kern .15em\relax } +\newcommand{\AMS}{$\mathcal{A}$\kern-.1667em\lower.5ex\hbox + {$\mathcal{M}$}\kern-.125em$\mathcal{S}$} +\newcommand{\resp}{\emph{resp}.\xspace} + +\tolerance 400 +\pretolerance 200 + + +\title{Advice to authors} +\date {English version 5, dated October 2000} +\author{Soci\'et\'e Ma\-th\'e\-ma\-ti\-que de France} + +\address{Institut Henri Poincar\'e\\ +11 rue Pierre et Marie Curie, F-75231 Paris cedex 05} +\email{revues@smf.ens.fr} +\urladdr{http://smf.emath.fr/} +\keywords{\LaTeXe, SMF, typesetting} + +\begin{document} +\def\smfbyname{} + +\begin{abstract} +The classes \texttt{smfbook} and \texttt{smfart} are intended to help the preparation in \LaTeX\ of the monographs and articles to be published by the \SmF. They require \LaTeXe\ and the \AMS-\LaTeX\ packages.\par +This paper exhibits the main features of these classes. +\end{abstract} + +\begin{altabstract} +Les classes \texttt{smfbook} et \texttt{smfart} sont destin\'ees \`a la composition en \LaTeX\ des monographies et articles \'edit\'es par la \SmF. Elles n\'ecessitent \LaTeXe\ ainsi que les macros \LaTeX\ de l'AMS.\par +Ce document en pr\'esente l'utilisation. +\end{altabstract} +\maketitle + +\tableofcontents + +\section{Introduction} +The \SmF\ provides the authors of its publications with \LaTeXe\ ``document classes'' (\texttt{smfbook} for monographs and \texttt{smfart} for articles). The authors should submit their articles as \LaTeXe\ files prepared using these classes or with the \AMS-\LaTeX\ classes (\texttt{amsbook} or \texttt{amsart}) provided by the AMS (see \T\ref{sec:compatible} for the compatibility between these classes). + +This text contains a user's guide to these classes as well as some elementary typographical rules that the authors should read thoroughly before preparing their manuscript as a \LaTeXe\ file: sending a file prepared with the SMF classes following these rules will reduce the number of errors introduced by the editing process and will save the author proofreading time. This will hence minimize the time needed for the article to reach its printed form (and reduce the publishing costs). + + +\section{Typographical hygiene} +The file sent by the author will be adapted to the style of the journal where it will be published by the editorial board of the \SmF. It is therefore {\em important} that the \LaTeXe\ file is prepared in a very standard way, in particular by a {\em systematic} use of theorem- and proof-like environments (see \T\ref{sec:presentationthm}), of \verb|\label| and \verb|\ref| commands for referring to the corresponding numbers, and of \verb|\cite| for bibliographical references. Moreover, ``home'' macros must be clearly written in the preamble. {\em No} ``home'' macro will be used in the title, the address, the abstracts (French and English), the keywords. + +\Subsection{Horizontal and vertical spacing} + +\begin{itemize} +\item +Delete all spacing commands like \verb|\,| or \verb|\;| or \verb|\!| +{\em before or after} mathematical symbols, parentheses, +punctuation marks, etc. Horizontal spaces (in mathematical mode in particular) are handled automatically by \TeX, the author should not add any. +\item +On the other hand, the author may impose indivisible spaces in places where she/he does not want a carriage return, e.g. +\verb|Tintin~\cite{RG3}| instead of \verb|Tintin \cite{RG3}|. + +\item +The author should not type any space or carriage return \emph{before} +punctuation marks. However, such a space or carriage return \emph{always} comes after punctuation marks + +\item +No space \emph{before} a closing parentheses or bracket, +as well as \emph{after} an opening parentheses or bracket. + +\item +Do not use any \verb|\linebreak|, \verb|\\|, \verb|\pagebreak|, \verb|\newpage|, etc.\ in the text. + +\item +Avoid commands as \verb|\hskip|, \verb|\hspace| +or \verb|\vskip|, \verb|\vspace| in the text. +\end{itemize} + +\Subsection{Punctuation marks} + +\begin{itemize} +\item +Do not put {\em any} punctuation marks at the end of any title: +\begin{itemize} +\item +\verb|\section{Introduction}| and not \verb|\section{Introduction.}| +\item +\verb|\begin{remark}| and not \verb|\begin{remark.}| +\item etc. +\end{itemize} + +\item +In text mode, punctuation marks are typed \emph{outside of} the mathematical mode. Write for example: + +``\dots\ \verb|the level $\eta_0$: $$ A=B.$$|'' + +\noindent and not + +``\dots\ \verb|the level $\eta_0:$ $$A=B.$$|'' + +\item +Concerning points of suspension: +\begin{itemize} +\item +replace \verb|...| with \verb|\ldots\ | in the text (in English); +\item +replace \verb|...| or \verb|\ldots| with \verb|\cdots| +between operators (as in, for instance, +$A<\cdots<B$, $A+\cdots+B$ or $A=\cdots=B$) +and with \verb|\dots| or \verb|\ldots| for mathematical punctuation (for instance $i=1, \dots ,n$); +\item +suppress \verb|...| after ``etc.''. +\end{itemize} +\item +For a product, use \verb|\cdot| and not \verb|.|; +In the same way, rewrite formulas like $h(.)$ or $(.,.)$ as $h(\cdot)$ or +$(\cdot,\cdot)$. + +\item +Replace explicit hyphenation (as in \verb|presenta-tion|) +with optional hyphenation \verb|\-| (as in \verb|presenta\-tion|). +Of course, ordinary hyphens are kept for compound words. +\end{itemize} + +\subsection{Titles} + +Titles begin with an upper case letter and are typed in {\em lower case letters}. +When necessary, \LaTeX\ will produce an upper case output. +No punctuation marks should be inserted at the end of titles (see above). + +\subsection{Language} + +The author should follow the rules of the language she/he uses, in particular when typing numbers: +in French, one should write ``deux nombres \'egaux \`a $2$'' and in the file one should type + +\verb|deux nombres \'egaux \`a $2$|. + +\noindent +On the other hand, recall that French upper case letters take accents as do lower case letters. + +\Subsection{Numbering} + +\begin{itemize} +\item +Use as much as possible the automatic numbering and the corresponding \LaTeXe\ commands \verb|\label|, \verb|\ref|. To this end, keep {\em a consistent numbering convention}. Do not \og ask\fg\ commands such as +\verb|\section| or \verb|\begin{theoreme}| to produce a complicated output. Recall that the final output will be done by the editorial board of the \SmF: please, try to help the secretary in her/his task. + +\item +Use a simple logic for internal references: +\begin{itemize} +\item +\verb|\label{sec:1}| for the first section, + +\item +\verb|\label{th:invfunct}| for the inverse function theorem, + +\item +\verb|\label{rem:stupid}| for an interesting remark. +\end{itemize} + +\item +Do not number equations which are not referred to in the text. +\end{itemize} + +\Subsection{The mathematical mode} + +\begin{itemize} +\item +Do not put pieces of text between \verb|$ $| to change their style. +The mathematical mode should only be used for writing mathematical formulas. + +\item +The numbers written as digits should be typed in mathematical mode, even if this does not appear to be necessary. + +\item +Do not add horizontal spaces in mathematical formulas. +When necessary, the editorial board will do it. + +\item +Use the right mathematical \TeX\ or \LaTeX\ symbol at the right place: for instance, the symbols \verb|<| and \verb|>| should not be used for making a bracket $\langle,\rangle$; this bracket is obtained with +\verb|$\langle,\rangle$|. + +\item +Please, before using your own solution, check all available \AMS-\LaTeX\ capabilities to place and cut mathematical formulas in display style (see \cite{amslatex}). +\end{itemize} + +\Subsection{The bibliography} +\begin{itemize} +\item +Make a uniform bibliography and do not change the convention according to the entry (use {\BibTeX} for instance). +\item +{\em Systematically} use the \verb|\cite| command to cite the entries of the bibliography. +\end{itemize} + +\section{The environment} + +The \SmF\ (SMF) provides authors with the following files: +\begin{itemize} +\item +two class files \texttt{smfbook.cls} (for monographs) and \texttt{smfart.cls} (for articles), +\item +two {\BibTeX} style files: +\begin{itemize} +\item +\texttt{smfplain.bst} (for numerical citations) and +\item +\texttt{smfalpha.bst} (for alphabetical citations), +\end{itemize} +\item +a supplementary package \texttt{smfthm.sty} described in \T\ref{sec:smfthm}, +\item +a supplementary package \texttt{smfenum.sty} for enumerations in the French style, +\item +a supplementary package \texttt{bull.sty} for articles submitted to the \textsl{Bulletin}. +\end{itemize} +They may be obtained on the web site of the SMF: + +\texttt{http://smf.emath.fr/} + +\noindent under the heading \verb|Publications/Formats|. + +\smallskip +These classes have been written to remain compatible +with the \texttt{amsbook} and \texttt{amsart} classes developped +by the American Mathematical Society (AMS). To use them, you need: +\begin{itemize} +\item \LaTeXe, preferebly some recent version. The class +doesn't work with the old \LaTeX 2.09 version which has been obsolete for years; +\item the various packages furnished by the American Mathematical +Society; it is better to have the November 1996 version +although it should work with the 1995 one. +\item +To typeset an index, it is better to have the +\texttt{multicol.sty} {\em package} available. +\end{itemize} +The file \texttt{smfbook.cls} (\resp \texttt{smfart.cls}) is used instead of \texttt{amsbook.cls} (\resp \texttt{amsart.cls}) and has to be put in the directory containing \TeX\ inputs. In order to use the package \texttt{smfthm} (see \T\ref{sec:smfthm}) or \texttt{bull.sty}, one should put the files \texttt{smfthm.sty} or \texttt{bull.sty} in the same directory. + +Many standard packages add capabilities to \LaTeXe. In this respect, we suggest using +\begin{itemize} +\item \texttt{epsfig.sty}, \cite{epsfig}, for the inclusion of (encapsulated) {\scshape PostScript} pictures; +\item \texttt{graphics.sty} or \texttt{graphicx.sty}, \cite{graphics,graphicx}, in order to include pictures drawn by \LaTeX; +\item \texttt{babel.sty}, \cite{babel}, for a text written in various languages (hyphenation, \ldots); +\item \texttt{xypic.sty}, +\cite{xypic}, for the diagrams; +\item {\BibTeX}, \cite[Appendix B]{lamport94} or \cite{hypatia}, +for the bibliography. +\end{itemize} + +\section{Structure of the document}\label{sec:struct} + +A document typeset with one of the classes +\texttt{smfbook} or \texttt{smfart} has the following structure. +Fields within brackets are optional. + +\begin{verse} +\verb|\documentclass[|\meta{options}\verb|]{smfbook| or \verb|smfart}|\\ +Preamble (packages, macros, theoremlike environments, \ldots) e.g.\\ +{\advance\leftskip 1.5em +\verb|\usepackage[francais,english]{babel}| \\ +\verb|\usepackage{smfthm}|\\ +\verb|\usepackage{bull}|\quad (for articles submitted to the \textsl{Bulletin})\\ +\verb|\theoremstyle{plain} \newtheorem{scholie}{Scholie}|\\ +} +\smallskip +\verb|\author[|\meta{short name}\verb|]{|\meta{Firstname Lastname}\verb|}| \\ +\verb|\address{|\meta{line 1}\verb|\\ |\meta{line 2}\verb|\\ |\dots +\meta{line $n$}\verb|}| \\ +\verb|\email{|\meta{email address}\verb|}| \\ +\verb|\urladdr{|\meta{WWW address}\verb|}|\\ +\smallskip +\verb|\title[|\meta{short title}\verb|]{|\meta{title of text}\verb|}| \\ +\verb|\alttitle{|\meta{title in the other language + (French or English)}\verb|}| \\ +\smallskip +\verb|\begin{document}|\\ +\verb|\frontmatter|\\ +\smallskip +\verb|\begin{abstract}|\par\nopagebreak\noindent +\quad\meta{Abstract in the main language of text}\par\nopagebreak\noindent +\verb|\end{abstract}|\\ \smallskip +\verb|\begin{altabstract}|\\ +\quad\meta{Abstract in the other language (French or English)}\\ +\verb|\end{altabstract}| \\ +\smallskip +\verb|\subjclass{|\meta{AMS classification}\verb|}| \\ +\verb|\keywords{|\meta{Key words}\verb|}| \\ +\verb|\altkeywords{|\meta{Mots-clefs in the other language (French or English)}\verb|}| \\ +\smallskip +\quad \verb|\translator{|\meta{Firstname Lastname}\verb|}|\\ +\quad \verb|\thanks{|\meta{Grants}\verb|}|\\ +\quad \verb|\dedicatory{|\meta{dedication}\verb|}|\\ +\smallskip +\verb|\maketitle|\\ +\quad \verb|\tableofcontents |\meta{if needed}\verb||\\ +\smallskip +\verb|\mainmatter|\\ +Main body of the text\\ +\smallskip +\verb|\backmatter|\\ +Bibliography, index, etc.\\ +\verb|\end{document}| +\end{verse} + +\Subsection*{Remarks} +\begin{itemize} +\item +If there are many authors, or if an author has more than one address, +one may type as many \par +\begin{verse} \rm +\verb|\author{|\meta{author}\verb|}| \\ +\verb|\address{|\meta{address}\verb|}| \\ +\verb|\email{|\meta{email address}\verb|}| \\ +\verb|\urladdr{|\meta{WWW address}\verb|}| +\end{verse} +commands as needed, in the right order of course. +\item +All data introduced before the \verb|\maketitle| command will be used for different purposes: back cover, advertisement, electronic abstracts, data banks. It is therefore important that {no personal macro} is used in the corresponding fields. +\item +Do not hesitate to be prolix when filling the field \verb|\subjclass|. One may consult for instance the web site + +\url|http://www.ams.org/msc/| +\end{itemize} + +\section{Class options} +These options are entered the following way: +\begin{verse} +\verb|\documentclass[|\meta{option1,option2,...}% +\verb|]{smfbook| or \verb|smfart}| +\end{verse} +Default options are indicated with a star. + +\Subsection{Usual options} +\begin{itemize} +\item {\tt \myast a4paper}, + A4 printing +\item {\tt letterpaper}, + US Letter printing, to make easier the typesetting of documents + in the United States +\item {\tt draft}, + preliminary draft, {\em overfull hbox}es are shown by black rules; +\item {\tt \myast leqno}, + equation numbers on the left +\item {\tt reqno}, + equation numbers on the right +\item {\tt \myast 10pt}, + normal character size = 10 points +\item {\tt 11pt}, + normal character size = 11 points +\item {\tt 12pt}, + normal character size = 12 points +\end{itemize} + +\Subsection{Language of the text} + +\begin{itemize} +\item {\tt \myast francais}, + if the main language of the text is French +\item {\tt english}, + if it is English. +\end{itemize} + +\subsection{Remark} +Do not mix up the {\tt francais} or {\tt english} options of the SMF class with the {\tt francais} or {\tt english} options of {\tt babel}: the latter has to be entered as indicated in the example of \T\ref{sec:struct}. + + +\section{Sectioning commands} +As in any \LaTeXe{} class, some commands are devoted to the sectioning of +the document: +\begin{center} +\begin{tabular}{ll} +\verb|\part| \\ +\verb|\chapter| & \texttt{smfbook} only \\ +\verb|\section| \\ +\verb|\subsection| \\ +\verb|\subsubsection| \\ +\verb|\paragraph| \\ +\verb|\subparagraph| +\end{tabular} +\end{center} + +\noindent +The table of contents is inserted automatically with +\verb|\tableofcontents|. + +\noindent +The macro \par +\verb|\appendix| \par\noindent +starts the appendix. + +The bibliography is entered as usual, +\begin{verse} +\verb|\begin{thebibliography}{|\meta{longest label}\verb|}| \\ +\meta{Bibliography entries} \\ +\verb|\end{thebibliography}| +\end{verse} +The use of {\BibTeX} is recommended, +see for example~\cite[Appendix B]{lamport94} +and~\cite{hypatia} for an introduction. +The {\BibTeX} styles \texttt{smfplain.bst} and \texttt{smfalpha.bst} may be obtained on the web site \url|http://smf.emath.fr/|\ of the SMF. The bibliography is then entered as follows +\begin{verse} +\verb|\bibliographystyle{smfplain| or \verb|smfalpha}| \\ +\verb|\bibliography{myfile.bib}| +\end{verse} +if \verb|myfile.bib| is the {\BibTeX} data file. + +\section{Presentation of theorems}\label{sec:presentationthm} + +Theorems are typeset thanks to the package {\tt amsthm}. For details, we refer to its documentation~\cite{amslatex}. One should use such environments in a {\em systematic} way for statements and proofs. + + +\subsection{Theorem styles}\label{subsec:thm} + +Three styles of theorems are defined: {\tt plain}, +{\tt definition} and {\tt remark}. The two last are identical +and only differ from the first one in that the text of the statement +is in straight letters instead of italics. All \verb|\newtheorem|($*$) commands should be introduced clearly in the preamble. + +The \verb|\newtheorem| command creates or uses some counter in order to define the numbering of the corresponding environment. + +Use the \verb|\newtheorem*| command to get nonnumbered theoremlike environments, e.g. + +\verb|\newtheorem*{curveselectionlemma}{Curve Selection Lemma}| + +\medskip +Different kinds of numberings may also be introduced in the preamble, e.g. for propositions numbered alphabetically: + +\verb|\newtheorem{theoremalph}{Proposition}| + +\verb|\def\thetheoremalph{\Alph{theoremalph}}|. + + +\subsection{Proof environment}\label{subsec:proof} + +The proof environment \par +\verb|\begin{proof}| \dots \verb|\end{proof}|\par\noindent +allows a standard presentation of proofs, beginning with +``Proof'' and ending with the traditional small box $\qedsymbol$. + +It is possible to change the word ``Proof'' as in:\par +\verb|\begin{proof}[Idea of proof]| \dots \verb|\end{proof}| \par\noindent +which shows +\begin{proof}[Idea of proof] +Exercise for the interested reader. +\end{proof} + +\section{The \texttt{smfthm.sty} package}\label{sec:smfthm} + +This section describes the \texttt{smfthm.sty} package. Its use is not mandatory. + +\subsection{Theoremlike environments} + +Some theoremlike environments are defined. They use one and the same counter. +\par\nobreak +\begin{center}\begin{tabular}{lccc} +\noalign{\hrule height .08em\vskip.65ex} +Style & {\tt Macro} \LaTeX & Nom fran\c{c}ais & English name\quad \\ +\noalign{\vskip .4ex \hrule height 0.05em\vskip.65ex} +\it plain & \tt theo & Th\'eor\`eme & \it Theorem \\ + & \tt prop & Proposition & \it Proposition \\ + & \tt conj & Conjecture & \it Conjecture \\ + & \tt coro & Corollaire & \it Corollary \\ + & \tt lemm & Lemme & \it Lemma \\ +\noalign{\vskip .4ex \hrule height 0.05em\vskip.65ex} +\it definition & \tt defi & D\'efinition & \it Definition \\ +\noalign{\vskip .4ex \hrule height 0.05em\vskip.65ex} +\it remark & \tt rema & Remarque & \it Remark \\ + & \tt exem & Exemple & \it Example \\ +\noalign{\vskip .4ex \hrule height 0.08em\vskip.65ex} +\end{tabular}\end{center} +One uses them e.g. as follows: +\begin{verse} +\verb|\begin{theo}[Wiles]| \\ +\verb|If $n\geq 3$ and if $x$, $y$, $z$ are integers| \\ +\verb|such that $x^n+y^n=z^n$, then $xyz=0$.|\\ +\verb|\end{theo}| +\end{verse} +\begin{theo}[Wiles] +If $n\geq 3$ and if $x$, $y$, $z$ are integers such that +$x^n+y^n=z^n$, then $xyz=0$. +\end{theo} + +\subsection{Fixing the choice of the numbering} +The way of numbering the statements is defined by the following commands, +which have to been entered {\em before\/} the %\par\noindent +\verb|\begin{document}|: +\begin{itemize} +\item +\verb|\NumberTheoremsIn{|\meta{counter name}\verb|}|, + indicates the level + at which the statement numbers are reset to zero, + (\verb|section| for instance); the counter {\tt smfthm} is then defined; +\item +\verb|\NumberTheoremsAs{|\meta{counter name}\verb|}|, + allows the statement coun\-ter to be one of the usual sectioning counters + (e.g. \verb|section|, \verb|subsection|, \verb|paragraph|, etc.); +\item +\verb|\SwapTheoremNumbers|, + to put the statement number before the statement name, + as in ``1.4.~Theorem'' +\item +\verb|\NoSwapTheoremNumbers|, + the converse, e.g. ``Theorem~3.1'' +\end{itemize} + +\smallskip +The default options of the package are\par +\verb|\NumberTheoremsIn{section}\NoSwapTheoremNumbers| \par\noindent +which means that the counter {\tt smfthm} is defined and reset at the beginning of every section and that the statement numbers, which take the form + +{\tt section number.value of the counter smfthm} + +\noindent are written after the statement name. + + +\subsection{Generic statement} + +The {\tt enonce} environment allows one to typeset a generic theorem +whose name changes on demand, e.g.:\par +\begin{verse} +\verb|\begin{enonce}{Assumption}|\\ +\meta\dots \\ +\verb|\end{enonce}| +\end{verse} +typesets an `Assumption', numbered as it should be. + +The {\tt enonce} environment uses the {\it plain} theorem style, but one can change this style by putting another style inside brakets, e.g.: +\begin{verse} +\verb|\begin{enonce}[remark]{Key remark}|\\ +\meta\dots \\ +\verb|\end{enonce}| +\end{verse} + +Finally, there exists a corresponding \verb|enonce*| environment. + +\subsection{Other statements} +The author may introduce other kinds of theoremlike environments as explained in \T\ref{subsec:thm}. Notice, however, that in order to introduce environments numbered as the ones of {\tt smfthm.sty}, one uses {\tt enonce}: + +\verb|\newenvironment{scholie}{\begin{enonce}{Scholie}}{\end{enonce}}| + +\noindent which should be entered \emph{after} \verb|\begin{document}|. + + +\section{Adapting a manuscript from another dialect}\label{sec:compatible} +If you already have typed your manuscript in \textsc{Plain} \TeX, +or in \LaTeX 2.09, or in \LaTeXe, but with another class, +and if you want to adapt it to the SMF classes, this paragraph +will give you some hints. + +\subsection{From another \LaTeXe\ class} +If it is an AMS class, you'll have very little to do: for an article written in English for instance, replace + +\verb|\documentstyle[12pt,leqno]{amsart}| + +\noindent with + +\verb|\documentstyle[leqno,english]{smfart}| + +\noindent + +You'll need to enter another abstract +(\texttt{altabstract}) and another title (\texttt{alttitle}), +in French if your text is in English and in English otherwise. + +The inverse transformation (SMF $\rightarrow$ AMS) can be done in a similar way. + +\medskip +If it is a standard class (\texttt{article} ou \texttt{book}), +things are a bit more complicated. Be careful to type the abstracts +{\em before} the \verb|\maketitle|; some mathematical formulas might +not work properly, but the AMS packages offer such a variety of +uses, that it should not be very difficult to do. + +\subsection{From \LaTeX2.09} +In this case, you'll have to make the adjustments described +in the previous paragraph, and also those needed by the +\LaTeX2.09--\LaTeXe\ mutation. +A priori, it should mostly concern the font faces commands +and the conforming to +the {\em New Font Selection Scheme} (NFSS). + +\subsection{From {P\smaller[3]LAIN} \TeX} +In this case, you have to take up your manuscript again, +and replace title, theorems, sectioning and bibliographical commands, by the adequate ones, refering to the \LaTeXe\ user's guide and the recommendations above. We bring your attention +to the automatic numbering of paragraphs and theoremlike environments: it might differ from the original one. Pay similar attention to your references. +The macros \textsc{Plain} \TeX{} uses to change the typefaces +are most often ineffective in \LaTeXe, so you'll have to adapt +them too. Concerning mathematics, few changes are needed, except +for aligned equations and matrices. + + + +\def\refname{L\MakeLowercase{iterature and sources}} +\begin{thebibliography}{99} +\bibitem {lamport94} + {\sc L.\ Lamport.} --- + {\it LaTeX: A Document Preparation System.} + Second edition. Addison-Wesley, 1994. + +\bibitem {goossens93} + {\sc M.\ Goossens, F.\ Mittelbach, A.\ Samarin.} --- + {\it The LaTeX Companion.} + Addison-Wesley, 1993. + +\bibitem {goossens96} + {\sc M.\ Goossens, S.\ Rahtz and F.\ Mittelbach.} --- + {\it The LaTeX Graphics Companion: Illustrating Documents With TeX and + Postscript.} + Tools and Techniques for Computer Typesetting Series, + Addison-Wesley, 1996. + +\bibitem {short} +{\it The Not So Short Introduction to LaTeX2e,} {\scshape T.\ Oetiker, +H.\ Partl, I.\ Hyna, E.\ Schlegl,} +\url|http://www.loria.fr/tex/general/flshort2e.dvi| + +\bibitem {amslatex} +{\it AMS-LaTeX version 1.2 User's Guide}, +\url|http://www.loria.fr/tex/ctan-doc/macros/latex/packages/amslatex/amsldoc.dvi| + +\bibitem{babel} +{\it Babel, a multilingual package for use with \LaTeX's standard document +classes,} +{\scshape J.\ Braams,} +\url|http://www.loria.fr/tex/ctan-doc/macros/latex/packages/babel/babel.dvi| + +\bibitem{epsfig} +{\it The \texttt{epsfig} package,} +{\scshape S.\ Rahtz,} +\url|http://www.loria.fr/tex/ctan-doc/macros/latex/packages/graphics/epsfig.dvi| + +\bibitem{graphics} +{\it The \texttt{graphics} package,} +{\scshape D.\ Carlisle, S.\ Rahtz,} +\url|http://www.loria.fr/tex/ctan-doc/macros/latex/packages/graphics/graphics.dvi| + +\bibitem{graphicx} +{\it The \texttt{graphicx} package,} +{\scshape D.\ Carlisle, S.\ Rahtz,} +\url|http://www.loria.fr/tex/ctan-doc/macros/latex/packages/graphics/graphicx.dvi| + +\bibitem {hypatia} +{\it Hypatia's Guide to BibTeX,} +\url|http://hypatia.dcs.qmw.ac.uk/html/bibliography.html| + +\bibitem{xypic} +{\it Xy-pic User's Guide,} +{\scshape K.\ Rose, R.\ Moore,} +\url{http://www.loria.fr/tex/graph-pack/doc-xypic/xyguide.dvi} +\end{thebibliography} + + +The most recent versions of macros files and of their documentations +are also available by anonymous \texttt{ftp} on the CTAN sites +({\em Comprehensive TeX Archive Network\/}) +In the United States, one may use the address \texttt{ftp.shsu.edu}; +the sites +\texttt{ftp.loria.fr} or \verb|ftp.jussieu.fr| in France, +\texttt{ftp.tex.ac.uk} in England, and +\texttt{ftp.dante.de} in Germany also +hold the archive. + +\end{document} + + diff --git a/macros/latex/contrib/smflatex/f-doc.pdf b/macros/latex/contrib/smflatex/f-doc.pdf Binary files differnew file mode 100644 index 0000000000..50539b7413 --- /dev/null +++ b/macros/latex/contrib/smflatex/f-doc.pdf diff --git a/macros/latex/contrib/smflatex/f-doc.tex b/macros/latex/contrib/smflatex/f-doc.tex new file mode 100644 index 0000000000..25b5e85ae4 --- /dev/null +++ b/macros/latex/contrib/smflatex/f-doc.tex @@ -0,0 +1,753 @@ +\documentclass[11pt,francais]{smfart} + +\usepackage[T1]{fontenc} +\usepackage[english,francais]{babel} + +\usepackage{amssymb,url,xspace,smfthm} + +\def\meta#1{$\langle${\it #1}$\rangle$} +\newcommand{\myast}{($\star$)\ } +\makeatletter + \def\ps@copyright{\ps@empty + \def\@oddfoot{\hfil\small\copyright 1997, \SMF}} +\makeatother + +\newcommand{\SmF}{Soci\'et\'e ma\-th\'e\-ma\-ti\-que de France} +\newcommand{\SMF}{Soci\'et\'e Ma\-th\'e\-Ma\-ti\-que de France} +\newcommand{\BibTeX}{{\scshape Bib}\kern-.08em\TeX} +\newcommand{\T}{\S\kern .15em\relax } +\newcommand{\AMS}{$\mathcal{A}$\kern-.1667em\lower.5ex\hbox + {$\mathcal{M}$}\kern-.125em$\mathcal{S}$} +\newcommand{\resp}{\emph{resp}.\xspace} + +\tolerance 400 +\pretolerance 200 + + +\title{Recommandations aux auteurs} +\date {Version 5, octobre 2000} +\author{Soci\'et\'e Ma\-th\'e\-ma\-ti\-que de France} + +\address{Institut Henri Poincar\'e\\ +11 rue Pierre et Marie Curie, F-75231 Paris cedex 05} +\email{revues@smf.ens.fr} +\urladdr{http://smf.emath.fr/} +\keywords{\LaTeXe, SMF, composition, format} + +\begin{document} +\def\smfbyname{} + +\begin{abstract} +Les classes \texttt{smfbook} et \texttt{smfart} sont destin\'ees \`a la composition en \LaTeX\ des monographies et articles \'edit\'es par la \SmF. Elles n\'ecessitent \LaTeXe\ ainsi que les macros \LaTeX\ de l'AMS.\par +Ce document en pr\'esente l'utilisation. +\end{abstract} + +\begin{altabstract} +The classes \texttt{smfbook} and \texttt{smfart} are intended to help the preparation in \LaTeX\ of the monographs and articles to be published by the \SmF. They require \LaTeXe\ and the \AMS-\LaTeX\ packages.\par +This paper exhibits the main features of these classes. +\end{altabstract} +\maketitle + +\tableofcontents + +\section{Introduction} +La \SmF\ met \`a la disposition des auteurs de ses publications un format +\LaTeXe\ (\texttt{smfbook} pour les monographies et \texttt{smfart} pour +les articles). Elle invite les auteurs \`a soumettre leurs articles dans ce +format, ou, \`a d\'efaut, au format {\AMS-\LaTeX} (\texttt{amsbook} ou +\texttt{amsart}) d\'evelopp\'e par l'American Mathematical Society (voir le +\T\ref{sec:compatible} \`a propos des compatibilit\'es entre les deux). + +\smallskip +Ce texte contient un mode d'emploi du format ainsi que certaines r\`egles +d'hygi\`ene typographique dont les auteurs voudront bien prendre +connaissance avant de taper ou transformer leur fichier \LaTeX: envoyer un +fichier au format SMF en suivant ces quelques r\`egles \'el\'ementaires +minimisera l'introduction d'erreurs au cours de la composition ainsi que le +temps pass\'e aux fastidieuses relectures multiples qui en d\'ecoulent, et +diminuera de ce fait les d\'elais de parution (de m\^eme que le co\^ut de +publication). + +\section{Hygi\`ene typographique: quelques r\`egles} + +Le fichier envoy\'e par l'auteur est mis au format de la revue dans +laquelle il doit para\^\i tre par le secr\'etariat de r\'edaction de la +\SmF. Il est donc {\em important} que la composition \LaTeXe\ soit le plus +standard possible, notamment par l'utilisation {\em syst\'ematique} des +environnements d'\'enonc\'e et de d\'emonstration (voir le +\T\ref{sec:presentationthm}), par celle de \verb|\label| et +\verb|\ref| pour les r\'ef\'erences aux num\'eros correspondants et par celle de +\verb|\cite| pour les citations bibliographiques. De plus, les macros \og maison\fg\ doivent \^etre \'ecrites clairement dans le pr\'eambule. {\em Aucune} macro personnelle ne doit \^etre utilis\'ee dans le titre, l'adresse, les r\'esum\'es (fran\c cais et anglais), mots-cl\'es. + +\Subsection{Les espacements horizontaux et verticaux} + +\begin{itemize} +\item +Supprimer tous les espacements du type \verb|\,| ou \verb|\;| ou \verb|\!| +{\em devant ou derri\`ere} les symboles math\'ematiques, les parenth\`eses, +les signes de ponctuation, etc. Les espacements sont g\'er\'es par \TeX, +l'auteur n'en impose \emph{aucun}. +\item +En revanche, l'auteur peut mettre des blancs ins\'ecables aux endroits ou il ne +d\'esire pas de coupure, par exemple +\verb|Tintin~\cite{RG3}| au lieu de \verb|Tintin \cite{RG3}|. + +\item +Il vaut mieux ne mettre {\em aucun} espace ou retour chariot \emph{avant} +un signe de ponctuation. Par contre on met toujours un blanc ou un retour +chariot \emph{apr\`es}. + +\item +Ne mettre aucun espace ni \emph{avant} une parenth\`ese ou un crochet fermant, +ni \emph{apr\`es} une parenth\`ese ou un crochet ouvrant. + +\item +Ne mettre aucune coupure de ligne (\verb|\linebreak| ou \verb|\\|) +dans les phrases, aucune coupure de page +(\verb|\pagebreak|, \verb|\newpage| ou autres). + +\item +\'Eviter d'introduire des \verb|\hskip|, \verb|\hspace| +ou \verb|\vskip|, \verb|\vspace|. +\end{itemize} + + +\Subsection{La ponctuation} + +\begin{itemize} +\item +Ne mettre de ponctuation finale dans \emph{aucun} titre: +\begin{itemize} +\item +\verb|\section{Introduction}| et non \verb|\section{Introduction.}| +\item +\verb|\begin{remarque}| et non \verb|\begin{remarque.}| +\item etc. +\end{itemize} + +\item +Les signes de ponctuation du texte en ligne sont \`a l'\emph{ext\'erieur} du mode math\'ematique. +On \'ecrit par exemple: + +\og\dots\ \verb|le seuil $\eta_0$: $$ A=B.$$|\fg + +\noindent et non + +\og\dots\ \verb|le seuil $\eta_0:$ $$A=B.$$|\fg + +\item +En ce qui concerne les points de suspension: +\begin{itemize} +\item +remplacer \verb|...| par \verb|\ldots\ | dans les phrases (en anglais); +\item +remplacer \verb|...| ou \verb|\ldots| par \verb|\cdots| +entre des op\'erateurs (comme dans, par exemple, +$A<\cdots<B$, $A+\cdots+B$ ou $A=\cdots=B$) +et par \verb|\dots| ou \verb|\ldots| comme signe de ponctuation +math\'ematique (par exemple $i=1, \dots ,n$); +\item +supprimer \verb|...| apr\`es \og etc.\fg. +\end{itemize} +\item +Remplacer les points \verb|.| de multiplication par des \verb|\cdot|; +remplacer aussi les formules du type $h(.)$ ou $(.,.)$ par $h(\cdot)$ ou +$(\cdot,\cdot)$. + +\item +Remplacer les tirets de c\'esure explicite (comme \verb|pr\'esenta-tion|) +par le tiret de c\'esure optionnel \verb|\-| +(comme dans \verb|pr\'esenta\-tion|). +Bien entendu, on garde les tirets pour les mots compos\'es. +\end{itemize} + +\subsection{Les titres} + +Tous les titres d\'ebutent par une majuscule et sont \'ecrits +en {\em minuscules}. +Si certains titres doivent appara\^\i tre en majuscules, +c'est \LaTeX\ qui se chargera de le faire. +Pas de ponctuation finale dans les titres (voir ci-dessus). + +\subsection{La langue} + +Il faut respecter les r\`egles propres \`a chaque langue, +notamment en ce qui concerne l'\'ecriture des nombres: +en fran\c cais, on \'ecrit \og deux nombres \'egaux \`a $2$\fg\ et +dans le fichier on tape + +\verb|deux nombres \'egaux \`a $2$|. + +\noindent +D'autre part, on rappelle que les majuscules fran\c caises s'accentuent +tout autant que les minuscules. + +\Subsection{La num\'erotation} + +\begin{itemize} +\item +Utiliser au maximum la num\'erotation automatique et les commandes +\verb|\label|, \verb|\ref|. \`A cette fin, garder {\em un type de +num\'erotation homog\`ene}. Ne pas \og forcer\fg\ les commandes de type +\verb|\section| ou \verb|\begin{theoreme}| pour qu'elles fassent des choses +compliqu\'ees. Il faut se rappeler que la mise en page finale est du +ressort du secr\'etariat de r\'edaction de la \SmF: autant lui faciliter le +travail. + +\item +Utiliser une logique simple pour les r\'ef\'erences internes: +\begin{itemize} +\item +\verb|\label{sec:1}| pour la premi\`ere section, + +\item +\verb|\label{th:invloc}| pour le th\'eor\`eme d'inversion locale, + +\item +\verb|\label{rem:stupide}| pour une remarque int\'eressante. +\end{itemize} + +\item +Ne pas num\'eroter les \'equations auxquelles +il n'est pas fait r\'ef\'erence dans le texte. +\end{itemize} + +\Subsection{Le mode math\'ematique} + +\begin{itemize} +\item +Ne pas mettre entre \verb|$ $| des parties de texte pour changer leur style. +Le mode math\'ematique sert uniquement \`a \'ecrire des +formules math\'emati\-ques. + +\item +Les nombres \'ecrits en chiffres doivent \^etre entr\'es +en mode math\'ematique, m\^eme si ceci ne semble pas toujours n\'ecessaire. + +\item +Ne pas ajouter d'espacement dans les formules. +Si n\'ecessaire, le secr\'eta\-riat de r\'edaction s'en chargera. + +\item +Utiliser les symboles math\'ematiques \TeX\ ou \LaTeX\ \`a bon escient: par +exemple, les symboles \verb|<| et \verb|>| ne sont pas faits pour fabriquer +un crochet $\langle,\rangle$; ce crochet est en effet obtenu \`a l'aide de +\verb|$\langle,\rangle$|. + +\item +Ne pas se priver des facilit\'es d'\AMS-\LaTeX\ pour positionner +et couper des formules (voir \cite{amslatex}). +\end{itemize} + +\Subsection{La bibliographie} +\begin{itemize} +\item +Faire une bibliographie uniforme et ne pas changer de convention suivant +les entr\'ees (utiliser {\BibTeX} par exemple). +\item +Utiliser {\em syst\'ematiquement} la commande \verb|\cite| pour citer les +r\'ef\'erences bibliographiques. +\end{itemize} + +\section{L'environnement} + +La \SmF\ fournit aux auteurs les fichiers suivants: +\begin{itemize} +\item +deux fichiers de classe \texttt{smfbook.cls} (pour les monographies) et \texttt{smfart.cls} (pour les articles), +\item +deux fichiers de style {\BibTeX} \texttt{smfplain.bst} (pour les +citations num\'eriques) and \texttt{smfalpha.bst} (pour les citations +alphab\'etiques), +\item +un paquet \texttt{smfenum.sty} permettant de pr\'esenter les +\'enum\'erations dans un style fran\c cais, +\item +un paquet suppl\'ementaire \texttt{smfthm.sty} d\'ecrit au \T\ref{sec:smfthm}, +\item +un paquet additionnel \texttt{bull.sty} pour les articles soumis au \textsl{Bulletin}. +\end{itemize} +Ils sont disponible sur le serveur de la SMF: + +\texttt{http://smf.emath.fr/} + +\noindent sous la rubrique \verb|Publications/Formats|. + +\smallskip +L'environnement n\'ecessaire \`a l'utilisation des classes de la \SmF\ est +{\em le m\^eme} que pour les classes {\AMS-\LaTeX}. 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; +\item +Pour mettre en page un \'eventuel index, +il est de plus souhaitable de disposer du {\em package} +\texttt{multicol.sty}. +\end{itemize} +A la place du fichier \texttt{amsbook.cls} (\resp \texttt{amsart.cls}) on +utilisera le fichier \texttt{smfbook.cls} (\resp \texttt{smfart.cls}) qui +doit \^etre plac\'e dans le m\^eme dossier. Si l'auteur utilise les macros +\texttt{smfthm} (voir le \T\ref{sec:smfthm}), \texttt{smfenum.sty} ou \texttt{bull.sty}, il y placera aussi les fichier \texttt{smfthm.sty} ou \texttt{bull.sty}. + +\smallskip +De nombreux {\em package}s standard apportent +de nouvelles fonctionnalit\'es \`a \LaTeXe. Nous sugg\'erons ainsi +d'utiliser: +\begin{itemize} +\item \texttt{epsfig.sty}, \cite{epsfig}, +pour l'inclusion de dessins r\'ealis\'es +en {\scshape PostScript} (encapsul\'e); +\item \texttt{graphics.sty} ou \texttt{graphicx.sty}, +\cite{graphics} et~\cite{graphicx}, pour +l'inclusion de dessins r\'ealis\'es par \LaTeX{}; +\item \texttt{babel.sty}, \cite{babel}, +qui permet des documents multilingues (c\'esure, etc.); +\item \texttt{xypic.sty}, +\cite{xypic}, pour les diagrammes; +\item {\BibTeX}, \cite[Appendix B]{lamport94} ou \cite{hypatia}, + pour g\'erer la bibliographie. +\end{itemize} + + +\section{Structure du document}\label{sec:struct} + +Un fichier mis en page avec l'une des classes \texttt{smfbook} +ou \texttt{smfart} a la structure suivante. +Les champs entre crochets sont optionnels. + +\begin{verse} +\verb|\documentclass[|\meta{options}\verb|]{smfbook| ou \verb|smfart}|\\ +Pr\'eambule (packages, macros, environnements d'\'enonc\'es\dots), par +exemple: \\ +{\advance\leftskip 1.5em +\verb|\usepackage[francais,english]{babel}| \\ +\verb|\usepackage{smfthm}|\\ +\verb|\usepackage{bull}|\quad (pour les articles soumis au \textsl{Bulletin})\\ +\verb|\theoremstyle{plain} \newtheorem{scholie}{Scholie}|\\ +} +\smallskip +\verb|\author[|\meta{nom raccourci}\verb|]{|\meta{Pr\'enom Nom}\verb|}| \\ +\verb|\address{|\meta{ligne 1}\verb|\\ |\meta{ligne 2}\verb|\\ |\dots +\meta{ligne $n$}\verb|}| \\ +\verb|\email{|\meta{adresse m\'el}\verb|}| \\ +\verb|\urladdr{|\meta{adresse WWW}\verb|}|\\ +\smallskip +\verb|\title[|\meta{titre court}\verb|]{|\meta{titre dans la langue de + l'article}\verb|}| \\ +\verb|\alttitle{|\meta{titre dans l'autre langue + (fran\c{c}ais ou anglais)}\verb|}| \\ +\bigskip +\verb|\begin{document}|\\ +\verb|\frontmatter|\\ +\smallskip +\verb|\begin{abstract}|\\ +\quad\meta{R\'esum\'e dans la langue de l'article}\\ +\verb|\end{abstract}|\\ +\smallskip +\verb|\begin{altabstract}|\\ +\quad\meta{R\'esum\'e dans l'autre langue (fran\c{c}ais ou anglais)}\\ +\verb|\end{altabstract}| \\ +\smallskip +\verb|\subjclass{|\meta{classification}\verb|}| \\ +\verb|\keywords{|\meta{Mots-clefs dans la langue de l'article}\verb|}| \\ +\verb|\altkeywords{|\meta{Mots-clefs dans l'autre langue (fran\c{c}ais ou anglais)}\verb|}| \\ +\smallskip +\quad \verb|\translator{|\meta{Pr\'enom Nom}\verb|}|\\ +\quad \verb|\thanks{|\meta{Subventions}\verb|}|\\ +\quad \verb|\dedicatory{|\meta{D\'edicace}\verb|}|\\ +\smallskip +\verb|\maketitle|\\ +\quad \verb|\tableofcontents |\meta{si n\'ecessaire}\verb||\\ +\smallskip +\verb|\mainmatter|\\ +Corps de l'ouvrage\\ +\smallskip +\verb|\backmatter|\\ +Bibliographie, index, etc.\\ +\verb|\end{document}| +\end{verse} + +\Subsection*{Remarques} +\begin{itemize} +\item +S'il y a plusieurs auteurs, ou si un auteur a plusieurs adresses, entrer +tout simplement autant de commandes \par +\begin{verse} \rm +\verb|\author{|\meta{auteur}\verb|}| \\ +\verb|\address{|\meta{adresse}\verb|}| \\ +\verb|\email{|\meta{adresse m\'el}\verb|}| \\ +\verb|\urladdr{|\meta{adresse WWW}\verb|}| +\end{verse} +qu'il le faut, dans l'ordre bien entendu. +\item +Toutes les donn\'ees intervenant avant \verb|\maketitle| sont aussi utilis\'ees pour les pages de couverture, la publicit\'e, les r\'esum\'es \'electroniques, les bases de donn\'ees. Aussi, {\em aucune macro personnelle} ne doit y figurer. L'auteur fournira une {\em traduction anglaise du titre} si celui-ci est en fran\c cais. +\item +Ne pas h\'esiter \`a \^etre prolixe sur le contenu de \verb|\subjclass|. On pourra consulter \`a ce propos + +\url|http://www-mathdoc.ujf-grenoble.fr/MSC2000/msc.html| +\end{itemize} + +\section{Options de la classe} +Ces options s'introduisent de la mani\`ere suivante: +\begin{verse} +\verb|\documentclass[|\meta{option1,option2,\dots}% +\verb|]{smfbook| ou \verb|smfart}| +\end{verse} +Les options marqu\'ees d'une \'etoile sont s\'electionn\'ees par +d\'efaut. + + +\Subsection{Options usuelles} +\begin{itemize} +\item {\tt \myast a4paper}: + Impression sur du papier A4 +\item {\tt letterpaper}: + Impression sur du papier \og US Letter\fg, pour + faciliter l'utilisation de cette classe aux \'Etats-Unis, + lors de la mise au point du texte. +\item {\tt draft}: + Version pr\'eliminaire, les {\em overfull hbox\,}es sont marqu\'ees d'un trait noir. +\item {\tt \myast leqno}: + Num\'eros d'\'equations \`a gauche +\item {\tt reqno}: + Num\'eros d'\'equations \`a droite +\item {\tt \myast 10pt}: + Taille normale des caract\`eres = 10 points +\item {\tt 11pt}: + Taille normale des caract\`eres = 11 points +\item {\tt 12pt}: + Taille normale des caract\`eres = 12 points +\end{itemize} + + +\Subsection{Langue du texte} + +\begin{itemize} +\item {\tt \myast francais}: + pour un texte en fran\c{c}ais +\item {\tt english}: + pour un texte en anglais +\end{itemize} + +\subsection{Remarque} +Ne pas confondre l'option {\tt francais} ou {\tt english} de la classe SMF avec l'option {\tt francais} ou {\tt english} de {\tt babel}, qui, elle, doit \^etre introduite comme indiqu\'e dans l'exemple du \T\ref{sec:struct}. + + +\section{D\'ecoupage du texte} +Comme dans toutes les classes \LaTeXe, des commandes permettent de +sectionner le document (voir \cite{lamport94,goossens93,short} pour une information pr\'ecise): +\begin{center} +\begin{tabular}{ll} +\verb|\part| \\ +\verb|\chapter| & \texttt{smfbook} uniquement \\ +\verb|\section| \\ +\verb|\subsection| \\ +\verb|\subsubsection| \\ +\verb|\paragraph| \\ +\verb|\subparagraph| +\end{tabular} +\end{center} + +\noindent +La table des mati\`eres est ins\'er\'ee automatiquement avec \par +\verb|\tableofcontents|. + +\noindent +La commande \par +\verb|\appendix| \par\noindent +permet de d\'ebuter les appendices. + +La bibliographie est entr\'ee comme d'habitude en \LaTeX, +\begin{verse} +\verb|\begin{thebibliography}{|\meta{label le plus long}\verb|}| \\ +\meta{Entr\'ees de bibliographies} \\ +\verb|\end{thebibliography}| +\end{verse} +Il est possible, bien s\^ur, d'utiliser {\BibTeX}, voir par exemple~\cite[Appendix~B]{lamport94} et~\cite{hypatia} pour une introduction. +Les styles \texttt{smfplain.bst} et \texttt{smfalpha.bst} pour la pr\'esentation automatique avec {\BibTeX} des bibliographies est disponible sur le serveur \url|http://smf.emath.fr/|\ de la SMF. On entre alors la bibliographie comme suit: +\begin{verse} +\verb|\bibliographystyle{smfplain| ou \verb|smfalpha}| \\ +\verb|\bibliography{myfile.bib}| +\end{verse} +si \verb|myfile.bib| est le fichier de donn\'ees bibliographique {\BibTeX}. + + +\section{Pr\'esentation des th\'eor\`emes}\label{sec:presentationthm} + +Les th\'eor\`emes sont mis en page gr\^ace au {\em package} {\tt amsthm}. +Nous renvoyons \`a la documentation~\cite{amslatex} +de celui-ci pour plus de d\'etails. Il est recommand\'e d'utiliser {\em syst\'ematiquement} les environnements d'\'enonc\'e et de d\'emonstration. + + +\subsection{Styles de th\'eor\`emes}\label{subsec:thm} + +Sont d\'efinis trois styles de th\'eor\`emes: {\tt plain}, +{\tt definition} et {\tt remark}. Ces deux derniers sont identiques +et diff\`erent du premier par le fait que le texte de l'\'enonc\'e +est en caract\`eres droits et non en italique. + +Les environnements sont introduits par la commande \verb|\newtheorem| dans le pr\'eambule, qui cr\'ee ou utilise un compteur pour les num\'eroter automatiquement. + +Les \'enonc\'es non num\'erot\'es sont obtenus par la commande \verb|\newtheorem*| dans le pr\'eambule: par exemple + +\verb|\newtheorem*{lemmepetitchemin}{Lemme des petits chemins}| + +\medskip +Les \'enonc\'es num\'erot\'es suivant une num\'erotation sp\'eciale sont introduits s\'epar\'ement dans le pr\'eambule, par exemple, pour des propositions num\'erot\'ees alphab\'etiquement: + +\verb|\newtheorem{theoremalph}{Proposition}| + +\verb|\def\thetheoremalph{\Alph{theoremalph}}|. + +\subsection{Environnement de d\'emonstration} +\label{subsec:proof} + +L'environnement de preuve \par +\verb|\begin{proof}| \dots \verb|\end{proof}|\par\noindent +permet une pr\'esentation standard d'une d\'emonstration, d\'ebutant +par {\og D\'e\-mons\-tra\-tion\fg} et se terminant par le traditionnel +petit carr\'e $\qedsymbol$. + +\smallskip +Il est possible de changer le terme {\og D\'emonstration\fg} en fournissant +un argument suppl\'ementaire, comme dans: \par +\verb|\begin{proof}[Id\'ee de la d\'emonstration]| \dots +\verb|\end{proof}| \par\noindent +qui affiche +\begin{proof}[Id\'ee de la d\'emonstration] +Laiss\'ee au lecteur. +\end{proof} + +\section{Le {\em package} \texttt{smfthm.sty}}\label{sec:smfthm} +Dans un article ou une monographie pour lequel la num\'erotation des \'enonc\'es est homog\`ene, l'auteur peut utiliser le {\em package} \texttt{smfthm.sty} (et y ajouter ses propres environnements si besoin). +Cette section d\'ecrit les fonctionnalit\'es apport\'ees par ce +{\em package} \texttt{smfthm.sty}. Son utilisation +{\em n'est pas obligatoire}. + +\subsection{Environnements de th\'eor\`emes} + +Un certain nombre d'environnements de type th\'eor\`eme sont pr\'e-d\'efinis. Ils utilisent un seul et m\^eme compteur. +\par\nobreak +\begin{center}\begin{tabular}{lccc} +\noalign{\hrule height .08em\vskip.65ex} +Style & {\tt Macro} \LaTeX & Nom fran\c{c}ais & English name\quad \\ +\noalign{\vskip .4ex \hrule height 0.05em\vskip.65ex} +\it plain & \tt theo & Th\'eor\`eme & \it Theorem \\ + & \tt prop & Proposition & \it Proposition \\ + & \tt conj & Conjecture & \it Conjecture \\ + & \tt coro & Corollaire & \it Corollary \\ + & \tt lemm & Lemme & \it Lemma \\ +\noalign{\vskip .4ex \hrule height 0.05em\vskip.65ex} +\it definition & \tt defi & D\'efinition & \it Definition \\ +\noalign{\vskip .4ex \hrule height 0.05em\vskip.65ex} +\it remark & \tt rema & Remarque & \it Remark \\ + & \tt exem & Exemple & \it Example \\ +\noalign{\vskip .4ex \hrule height 0.08em\vskip.65ex} +\end{tabular}\end{center} +On les utilise par exemple comme suit: +\begin{verse} +\verb|\begin{conj}[Fermat]| \\ +\verb|Si $n\geq 3$ et si $x$, $y$, $z$ sont trois| \\ +\verb|entiers naturels tels que $x^n+y^n=z^n$,|\\ +\verb|alors $xyz=0$.| \\ +\verb|\end{conj}| +\end{verse} +\begin{conj}[Fermat] +Si $n\geq 3$ et si $x$, $y$, $z$ sont trois entiers +naturels tels que $x^n+y^n=z^n$, alors $xyz=0$. +\end{conj} + +\subsection{Choix de la num\'erotation} +Le type de num\'erotation de \'enonc\'es est d\'efini par les commandes +suivantes, qui doivent \^etre entr\'ees dans le pr\'eambule, +c'est-\`a-dire {\em avant\/} le %\par\noindent +\verb|\begin{document}|: +\begin{itemize} +\item +\verb|\NumberTheoremsIn{|\meta{nom de compteur}\verb|}|: + pr\'ecise le niveau de profondeur auquel les num\'eros d'\'enonc\'es sont remis \`a z\'ero + (\verb|section| par exemple); ces num\'eros utilisent alors le compteur {\tt smfthm}; +\item +\verb|\NumberTheoremsAs{|\meta{nom de compteur}\verb|}|: + utilise un d\'ecoupage qui s'int\`egre dans celui donn\'e par un compteur d\'ej\`a d\'efini (par exemple \verb|section|, \verb|subsection|, \verb|paragraph|, etc.); +\item +\verb|\SwapTheoremNumbers|: + met le num\'ero avant le type d'\'enonc\'e, comme dans {\og 1.~Th\'eor\`eme\fg}; +\item +\verb|\NoSwapTheoremNumbers|: + met le type d'\'enonc\'e avant son num\'ero, par exem\-ple: \og Th\'eor\`eme 1\fg. +\end{itemize} + +Sans autres pr\'ecisions, la classe utilise \par +\verb|\NumberTheoremsIn{section}\NoSwapTheoremNumbers| \par\noindent +ce qui signifie que les th\'eor\`emes sont remis \`a z\'ero au d\'ebut de chaque +section et que les num\'eros d'\'enonc\'es, qui apparaissent sous la forme + +{\tt num\'ero de section.valeur du compteur smfthm} + +\noindent sont plac\'es apr\`es le nom de l'environnement. + +\subsection{\'Enonc\'e g\'en\'erique} + +L'environnement \texttt{enonce} est un environnement +de th\'eor\`emes dont +le nom change \`a la demande, par exemple:\par +\begin{verse} +\verb|\begin{enonce}{Formulaire}|\\ +\meta\dots \\ +\verb|\end{enonce}| +\end{verse} +provoque l'affichage d'un \og Formulaire\fg, num\'erot\'e comme les \'enonc\'es du tableau ci-dessus. + +\smallskip +Par d\'efaut, l'{\tt enonce} est dans le style de th\'eor\`eme {\it plain}, +mais il est possible de faire autrement en indiquant entre crochets le +style voulu, par exemple:\par +\begin{verse} +\verb|\begin{enonce}[remark]{Remarque clef}|\\ +\meta\dots \\ +\verb|\end{enonce}| +\end{verse} + +Enfin, on dispose de l'environnement non num\'erot\'e \verb|enonce*| qui lui correspond. + +\subsection{Autres \'enonc\'es} + +L'auteur peut introduire d'autres \'enonc\'es comme il est expliqu\'e au \T\ref{subsec:thm}. Pour introduire un \'enonc\'e num\'erot\'e comme ceux de {\tt smfthm.sty}, on utilise {\tt enonce}: + +\verb|\newenvironment{scholie}{\begin{enonce}{Scholie}}{\end{enonce}}| + +\noindent que l'on saisit \emph{apr\`es} \verb|\begin{document}|. + +\section{Adapter un manuscrit depuis un autre dialecte} +\label{sec:compatible} + +Ce paragraphe donne quelques indications pour mettre au format SMF un manuscrit tap\'e en \textsc{Plain} \TeX, ou bien +en \LaTeX 2.09, ou bien en \LaTeXe, mais avec une autre classe. + +\subsection{Depuis une classe \LaTeXe} +S'il s'agit d'une classe AMS, tr\`es peu de travail suffit: remplacer par exemple (pour un article \'ecrit en anglais): + +\verb|\documentstyle[12pt,leqno]{amsart}| + +\noindent par + +\verb|\documentstyle[leqno,english]{smfart}| + +\noindent +Il faudra aussi entrer un r\'esum\'e (\texttt{altabstract}) et un titre (\texttt{alttitle}), en fran\c{c}ais si le texte est en anglais et en anglais sinon. + +L'op\'eration inverse (SMF $\rightarrow$ AMS) est bien s\^ur possible de la m\^eme mani\`ere. + +\medskip +S'il s'agit d'une classe standard (\texttt{article} ou \texttt{book}), +les choses seront \`a peine plus compliqu\'ees. Penser \`a taper +les r\'esum\'es avant le \verb|\maketitle|; quelques formules math\'ematiques +pourraient ne plus marcher, mais les {\em package}s AMS offrent +une telle souplesse d'utilisation qu'il ne devrait pas \^etre tr\`es +difficile de faire la transition. + +\subsection{Depuis \LaTeX2.09} +Dans ce cas, il faudra faire les adaptations d\'e\-cri\-tes +au paragraphe pr\'ec\'edent, ainsi que celles contraintes par la mutation +\LaTeX2.09--\LaTeXe. A priori, celles-ci concernent surtout les polices +de caract\`eres et l'utilisation de NFSS ({\em New Font Selection Scheme,} +nouveau sch\'ema de s\'election de polices). + + +\subsection{Depuis {P\smaller[3]LAIN} \TeX} +Dans ce cas, il faut reprendre tout votre tapuscrit +et remplacer vos commandes de titres, de th\'eor\`emes, de bibliographie, +par les commandes {\em ad hoc,} en vous r\'ef\'erant \`a la documention +qui pr\'ec\`ede. + +Nous attirons l'attention sur la num\'erotation automatique +des paragraphes et des \'enonc\'es: elle peut diff\'erer de la num\'erotation +manuelle; faire donc attention aux r\'ef\'erences d'\'enonc\'es. + +Les commandes de changement de polices utilis\'ees avec \textsc{Plain} \TeX{} +sont souvent inop\'erantes en \LaTeXe, il faudra aussi les adapter. +Concernant les math\'ematiques, il y a peu de changements \`a faire, +\`a l'exception notamment des \'equations align\'ees et (parfois) des matrices. + +\def\refname{D\MakeLowercase{ocumentation et sources}} +\begin{thebibliography}{99} +\bibitem {lamport94} + {\sc L.\ Lamport.} --- + {\it \LaTeX: A Document Preparation System.} + Second edition. Addison-Wesley, 1994. + +\bibitem {goossens93} + {\sc M.\ Goossens, F.\ Mittelbach, A.\ Samarin.} --- + {\it The \LaTeX\ Companion.} + Addison-Wesley, 1993. + +\bibitem {goossens96} + {\sc M.\ Goossens, S.\ Rahtz and F.\ Mittelbach.} --- + {\it The \LaTeX\ Graphics Companion: Illustrating Documents With TeX and + Postscript.} + Tools and Techniques for Computer Typesetting Series, + Addison-Wesley, 1996. + +\bibitem {short} +{\it Une courte (?) introduction a \LaTeX2e,} {\scshape T.\ Oetiker, + H.\ Partl, I.\ Hyna, E.\ Schlegl,} traduit de + l'allemand par {\scshape M.\ Herrb,} +\url|http://www.loria.fr/tex/general/flshort2e.dvi| + +\bibitem {amslatex} +{\it \AMS-\LaTeX\ version 1.2 User's Guide}, +\url|http://www.loria.fr/tex/ctan-doc/macros/latex/packages/amslatex/amsldoc.dvi| + +\bibitem{babel} +{\it Babel, a multilingual package for use with \LaTeX's standard document +classes,} +{\scshape J.\ Braams,} +\url|http://www.loria.fr/tex/ctan-doc/macros/latex/packages/babel/babel.dvi| + +\bibitem{epsfig} +{\it The \texttt{epsfig} package,} +{\scshape S.\ Rahtz,} +\url|http://www.loria.fr/tex/ctan-doc/macros/latex/packages/graphics/epsfig.dvi| + +\bibitem{graphics} +{\it The \texttt{graphics} package,} +{\scshape D.\ Carlisle, S.\ Rahtz,} +\url|http://www.loria.fr/tex/ctan-doc/macros/latex/packages/graphics/graphics.dvi| + +\bibitem{graphicx} +{\it The \texttt{graphicx} package,} +{\scshape D.\ Carlisle, S.\ Rahtz,} +\url|http://www.loria.fr/tex/ctan-doc/macros/latex/packages/graphics/graphicx.dvi| + +\bibitem {hypatia} +{\it Hypatia's Guide to \BibTeX,} +\url|http://hypatia.dcs.qmw.ac.uk/html/bibliography.html| + +\bibitem{xypic} +{\it Xy-pic User's Guide,} +{\scshape K.\ Rose, R.\ Moore,} +\url{http://www.loria.fr/tex/graph-pack/doc-xypic/xyguide.dvi} +\end{thebibliography} + + +Les fichiers de macros et leur documentation +sont aussi disponibles dans leur derni\`ere mise \`a jour +par \texttt{ftp} anonyme sur les sites CTAN ({\em Comprehensive TeX Archive +Network,} archive structur\'ee de documents pour {\TeX} et ses d\'eriv\'es). +En France, on peut utiliser les adresses \texttt{ftp.loria.fr} +ou \verb|ftp.jussieu.fr|; +les adresses \texttt{ftp.tex.ac.uk} en Grande-Bretagne, +\texttt{ftp.dante.de} en Allemagne con\-ti\-en\-nent aussi l'archive. + +\end{document} + + + + + + diff --git a/macros/latex/contrib/smflatex/smflatex.dtx b/macros/latex/contrib/smflatex/smflatex.dtx new file mode 100644 index 0000000000..b75c6db84c --- /dev/null +++ b/macros/latex/contrib/smflatex/smflatex.dtx @@ -0,0 +1,8503 @@ +% \iffalse meta-comment +% +% Copyright (c) 1999-2015 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{11820} +%% +%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% %% Classes, paquetages pour les publications de la SMF %% +%% %% (c) 1999-2014 Societe mathematique de France %% +%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% +%% \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} +% +% +% \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}[2012/09/26 v1.4 + Documentation LaTeX pour les classes et styles SMF] +\documentclass{ltxdoc} +\usepackage{amssymb,amstext} +\usepackage[T1]{fontenc} +\usepackage[latin1]{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 +% % \GetFileInfo{smflatex.dtx} +% +% \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}[2015/09/02 v1.5c + Classe LaTeX pour les articles publies par la SMF] +\def\@classname{smfart} +%</article> +%<*book> +\ProvidesClass{smfbook}[2015/09/02 v1.5c + 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. +% \begin{macrocode} +\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{\@xxvpt}{30}}% + \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\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\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\indent\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{\thmnewline\indent}\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@ \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 +} +\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.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\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}[2012/09/29 v1.0 + 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 + }% +}{} +\@ifpackageloaded{backref}{% +\def\BR@@lbibitem[#1]#2#3\par{% + \smf@lbibitem[#1]{#2}#3 + \newblock + \backref{\csname br@#2\endcsname}% + \par +}% +\def\BR@@bibitem#1#2\par{% + \smf@bibitem{#1}#2 + \newblock + \backref{\csname br@#1\endcsname}% + \par +} +\def\thebibliography{% + % \@starttoc{brf}{}% + \BRorg@thebibliography +}% +} +% \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 \RequirePackage{upitparen}\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{asterisque}[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{bulletin}[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{bull}[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{courspe}[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{memoires}[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{courspeedp}[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{documents}[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{seminaires}[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{panoramas}[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{bourbaki} + [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} diff --git a/macros/latex/contrib/smflatex/smflatex.ins b/macros/latex/contrib/smflatex/smflatex.ins new file mode 100644 index 0000000000..433556c0a8 --- /dev/null +++ b/macros/latex/contrib/smflatex/smflatex.ins @@ -0,0 +1,73 @@ +\NeedsTeXFormat{LaTeX2e}% LaTeX June 94 or later required +\def\batchfile{smflatex.ins} +\def\smffileversion{v1.5d} +\def\smffiledate{2018/05/30} +%% +%% This is the installation file for the smflatex bundle +%% Run LaTeX on this file +%% +%% (c) 1999-2018 Societe mathematique de France +%% +\input docstrip.tex +\preamble + + This is smflatex \smffileversion (\smffiledate) + LaTeX bundle for the SMF publications + (c) 1999-2018 Societe mathematique de France + +\endpreamble +\declarepreamble\bstfilepreamble +BibTeX style for the smflatex bundle, version \smffileversion +\endpreamble +\declarepostamble\bstfilepostamble +\endpostamble +\keepsilent +\askonceonly +% \csname newtoks\endcsname\filesmsg +% \def\dofile#1#2{\generateFile{#1}{}{\from{smflatex.dtx}{#2}}% +% \filesmsg\expandafter{\the\filesmsg \Msg{* \space\space#1}} + +\def\dofile#1#2{% + \file{#1}{\from{smflatex.dtx}{#2}}} + +\generate{% + \usedir{tex/latex/smflatex}% +% Classes smfbook et smfart + \dofile{smfbook.cls}{book} + \dofile{smfart.cls}{article} +% Package d'adaptations pour hyperref + \dofile{smfhyperref.sty}{hyperref} +% Package de theoremes + \dofile{smfthm.sty}{smfthm} +% Package pour la ponctuation haute + \dofile{upitparen.sty}{upitparen} +% Package de listes + \dofile{smfenum.sty}{smfenum} +% Fichiers de configuration SMF + \dofile{smfgen.sty}{smfgen} +% Fichiers pour les revues + \dofile{asterisque.sty}{asterisque} + \dofile{bulletin.sty}{bulletin} + \dofile{bull.sty}{bull} + \dofile{courspe.sty}{courspe} + \dofile{courspeedp.sty}{courspeedp} + \dofile{documents.sty}{documents} + \dofile{memoires.sty}{memoires} + \dofile{panoramas.sty}{panoramas} + \dofile{seminaires.sty}{seminaires} +% Bourbaki (Brochure/Astérisque) + \dofile{bourbaki.cls}{asterki} +% Package multi + \dofile{smfmulti.sty}{multi} +% Package smfbib + \dofile{smfbib.sty}{smfbib} +% Styles BiBTeX smfalpha et smfplain + \usedir{tex/bibtex/bst/smflatex} + \usepreamble\bstfilepreamble + \usepostamble\bstfilepostamble + \dofile{smfalpha.bst}{smfalpha} + \dofile{smfplain.bst}{smfplain} +% Source commente des macros + \usedir{doc/latex/smflatex} + \dofile{smfdoc.tex}{doc} +} |