%                                                         Bayreuth, 23.09.1990
%
%       Stylefile zur Formatierung von Veroeffentlichungen in den
%                  Bayreuther Mathematischen Schriften
%
%                                                         Version 1.3
% Es wurde folgendes vorbereitet:
%
% 1. Formatierung der Seitengroesse auf DINA5 --- "so wie's gedruckt wird".
%    Die Piflaser-Optionen "-l -do" erzeugen zwei Seiten nebeneinander auf
%    einem DINA4-Papier.
%    Wird eine DINA4-Vorlage gewuenscht, wo kann diese mit Hilfe der
%    Piflaser-Optionen "-m 1440 -x 0.2 -y 0.2" erzeugt werden.
%
% 2. Es werden zwei zusaetzliche Pagestyles bereitgestellt, naemlich
%    -- "title" (siehe 3.) und
%    -- "bmshead" (siehe 4.).
%    Default ist, dass auf der Titelseite --- erzeugt durch \maketitle oder
%    mit Hilfe des Environments titlepage --- der "bmshead" verwendet wird,
%    und auf den anderen Seiten der Pagestyle "title".
%    Diese default-Werte koennen durch 
%    -- \pagestyle{<gewuenschter Style>} fuer die "normalen" Seiten,
%    -- \titlepagestyle{<gewuenschter Style>} fuer die Titelseite und
%    -- \thispagestyle{<gewuenschter Style>} fuer "ausgezeichnete" Seiten
%    umgesetzt und auch wieder zurueckgesetzt werden.
%    Diese drei \...style-Kommandos duerfen damit folgende Argumente haben:
%        empty, plain, headings, myheadings, title, bmshead.
%
% 3. Der Pagestyle "title" leistet folgendes:
%    -- Als linker Header wird das Argument von \author hergenommen;
%       fuer die Faelle, wo dieses Argument zu lang ist oder zu viele
%       Daten enthaelt (z.B. \and, \thanks), kann man \author in der Form
%           \author[<Eintrag im linken Header>]{<normales Arg. von \author>}
%       verwenden. Dann wird als linker Header das erste in '[' und ']'
%       eingeschlossene Argument von \author verwendent.
%    -- Als rechter Header wird das Argument von \title hergenommen;
%       falls dieses z.B. zu lang ist, kann man durch Eingabe von
%           \title[<Kurzform des Titels>]{<Titel>}
%       erreichen, dass im rechten Header eine Kurzform des Titels erscheint.
%
% 4. Der Pagestyle "bmshead", default fuer die Titelseite, erzeugt die
%    Kopfzeile:
%       Bayreuther Mathematische Schriften {\bf ??} (<Jahr>), <aktuelle Seite>-
%                                                                <letzte Seite>
%    Um Latex mitzuteilen, welche Nummer die aktuelle "Schrift" hat
%    (sonst erscheint nur "??"), muss man das Kommando
%        \bmsnr{<Nummer>}
%    verwenden. Dieses hat auch eine erweiterte Form:
%        \bmsnr[<Jahr>]{Nummer>}
%    Verwendet man diese, wird im Header das hier angegebene Jahr und nicht
%    das aktuelle verwendet.
%    Die letzte Seite wird aus dem .aux-File entnommen und stimmt deshalb
%    fruehestens nach dem zweiten Durchlauf von Latex!
%
% 5. Mit Hilfe des Kommandos
%       \startpage{<Nummer der 1. Seite>}
%    kann man erreichen, dass die Seitenzaehlung nicht bei 1 beginnt.
%
% 6. Zur formatierten Ausgabe der Adresse des Autors dienen folgende Kommands:
%       \address:         Dieses Kommando hat ein Argument, in dem Sie Ihre
%                         komplette Adresse eingeben k\"onnen;
%       \uniaddress:      dieses Kommando liefert die komplette Adresse des
%                         Lehrstuhls II der Universit\"at Bayreuth 
%                         einschlie\ss lich Telefon- und E-Mail-Nummer,
%                         wenn Sie als erstes Argument Ihren Namen
%                         und als zweites die letzten vier Ziffern Ihrer 
%                         Telefonnummer (ohne die 55) angeben; --- um die
%			  richtige E-Mail-Nrummer zu erhalten muessen Sie 
%			  mit Hilfe von 
%	\sunloginname	  Ihren Loginnamen auf der Sun angeben; aus Gruenden
%			  der Aufwaertskompatibilitaet erscheint dann, wenn
%			  dieses Kommando nicht verwendet wurde noch die
%			  alte BITNET-Nummer der Vax;
%       \makeaddress:     erzeugt die Adresse am Ende des Dokuments; es ist
%                         damit sinnvoll \und m\"oglich makeaddress dort 
%                         anzugeben, wo auch \maketitle steht;
%       \makeaddresshere: erzeugt die Adresse an der Stelle, wo dieses Kommando
%                         steht.
%
% 7. Nach Eingabe des Kommandos
%       \english
%    wird f\"ur alle von bms.sty erzeugten Texte die englischer Sprache 
%    gew\"ahlt.
%    Achtung: \english sollte das erste Kommando nach \documentstyle sein!
%
% 8. Es wird \flushbottom eingeschaltet.
%
% 9. If problems occur, ask me, Bernd Schmalz. I'll try to help you, if I can.
%

\typeout{bms.sty: Version 1.3; 23.09.1990}
\typeout{I'm defining pagesizes and -styles for ''Seminaire Lotharingien''}

% Festlegung der Seitengroessen:
\hoffset        0cm
\topmargin      -0.25cm
\textwidth      11.5cm
\textheight     16.5cm
\oddsidemargin  1.3cm
\evensidemargin 0.75cm
\marginparwidth 0cm
\marginparsep   0cm
\parindent      0cm
\headheight     .7cm
\topskip        0.3cm
\footskip       0.8cm
\footheight     0.3cm
\flushbottom

% setting the number of the first page
\def\startpage#1{\setcounter{page}{#1}}

% these commands provide the standard BMS-Header, which has the author
% on the left and the title on the right side
% these headlines are taken form the \author and \title command
% to be able to handle those cases, when the arguments of these commands are 
% too long, \author and \title are redefined so that they do understand
% an optional first argument between '[' and ']'; this first argument is
% used as BMS-header if present
\def\@@leftmark{}\def\@@rightmark{}
\def\ps@title{\def\@oddfoot{}\def\@evenfoot{}%
\def\@evenhead{\rm\thepage\hfil\sc\@@leftmark\hfil\hbox{}}%
\def\@oddhead{\hbox{}\hfil\sc\@@rightmark\hfil\normalsize\rm\thepage}%
\def\author{\@ifnextchar [{\authortwo}{\authorone}}
\def\authorone##1{\def\@@leftmark{##1}\gdef\@author{##1}}%
\def\authortwo[##1]##2{\def\@@leftmark{##1}\gdef\@author{##2}}%
\def\title{\@ifnextchar [{\titletwo}{\titleone}}
\def\titleone##1{\def\@@rightmark{##1}\gdef\@title{##1}}%
\def\titletwo[##1]##2{\def\@@rightmark{##1}\gdef\@title{##2}}}
\pagestyle{title}

% making the BMS-header; the command \bmsnr is provided; it is explained above
\def\bms@nr{??}
\def\pub@nr{??}
\def\sem@nr{??}
\def\bms@year{\number\year}
\def\bmsnr{\@ifnextchar [{\bmsnryear}{\bmsnr@}}
\def\bmsnr@#1{\def\bms@nr{#1}}
\def\bmsnryear[#1]#2{\def\bms@year{#1}\def\bms@nr{#2}}
\def\pubnr#1{\def\pub@nr{#1}}
\def\semnr#1{\def\sem@nr{#1}}
\def\ps@bmshead{\def\@oddfoot{}\def\@evenfoot{}%
               }

% definition of title as default titlepagestyle and definition of the
% command \titlepagestyle to be able to change this default
\def\thetitlepagestyle{bmshead}
\def\titlepagestyle#1{\def\thetitlepagestyle{#1}}

% redefiniton of the titlepage-environment to make it produce the "BMS-Header"
% (default) or the one given by the \titlepagestyle command on the titlepage
\def\titlepage{\@restonecolfalse\if@twocolumn\@restonecoltrue\onecolumn
\else \newpage \fi \thispagestyle{\thetitlepagestyle}\c@page\z@}

% for english documents you can use \english to get all texts produced by
% bms.sty in the english language
% ATTENTION: the \english-command should be the first after \documentstyle
\def\english{\gdef\theaddresshead{\eaddresshead}}

% the following commands are defined for printing the author's address:
% \address:         you can enter your whole address as the argument of \address
% \uniaddress:      you only have to enter your name as the first argument and
%                   the last four digits of your telefone number and the address
%                   this command produces contains alle date about the 
%                   university of Bayreuth (including e-mail number)
% \sunloginname	    with the help of this command you have to say your login
%		    name at the sun, so that \uniaddress can print the right
%		    e-mail number; if \sunloginname has not been used \uniadress
% 		    will print the old Vax-BITNET number (unward compatibility);
% \makeaddress:     produces the address at the end of the document
% \makeaddresshere: produces the address right where this command stands
\gdef\@address{}\gdef\@@address{\relax}\def\daddresshead{Adresse}
\def\eaddresshead{Address of the authors}\def\theaddresshead{\daddresshead}
\def\makeaddress{\def\@@address{\makeaddresshere}}
\def\makeaddresshere{\vfill\begin{flushleft}{\sc \theaddresshead:}%
\smallskip\\\@address\end{flushleft}\vfill}
\def\address#1{\gdef\@address{#1}}
\def\uniaddress#1#2{\gdef\@address{#1\\Universit\"at Bayreuth\\Lehrstuhl II
f\"ur Mathematik\\Universit\"atsstr.\ 30\\8580 Bayreuth\\Telefon: 
$09\,21/55$--$#2$\\\@emailnumber}}
\def\@emailnumber{Earn: BTM203 at DBTHRZ5.BITNET}
\def\sunloginname#1{\def\@emailnumber{E-Mail: #1@btm2x2.hrz.uni-bayreuth.dbp.de}}

% redefiniton of \maketitle to make it produce the "BMS-Header" (default)
% or the one given by the \titlepagestyle command on the titlepage
\@ifundefined{thechapter}{% to check if we have documentstyle "article"
\def\maketitle{\par\begingroup
\def\thefootnote{\fnsymbol{footnote}}
\def\@makefnmark{\hbox to 0pt{$^{\@thefnmark}$\hss}} 
\if@twocolumn \twocolumn[\@maketitle] 
\else \newpage \global\@topnum\z@
\@maketitle \fi\thispagestyle{\thetitlepagestyle}\@thanks \endgroup
\setcounter{footnote}{0}
\let\maketitle\relax \let\@maketitle\relax
\gdef\@thanks{}\gdef\@author{}\gdef\@title{}\let\thanks\relax}
}{}

% redefiniton of \enddocument to make it write the last pagenumber on the
% mainaux-file (needed for BMS-header); according to this \enddocument
% produces the address of the author if \makeaddress and \address or 
% \uniaddress has been used
\def\enddocument{\@@address\@checkend{document}\clearpage\addtocounter{page}{-1}
\immediate\write\@mainaux{\string\setcounter{lastpage}{\thepage}}
\begingroup \if@filesw \immediate\closeout\@mainaux 
\def\global\@namedef##1##2{} \def\setcounter##1##2{} \def\newlabel{\@testdef r}%
\def\bibcite{\@testdef b}\@tempswafalse \makeatletter \input \jobname.aux
\if@tempswa \@warning{Label(s) may have changed.  Rerun to get
cross-references right}\fi\fi\endgroup\deadcycles\z@\@@end}
\newcounter{lastpage}
