%  $Header: b-conv.sty,v 1.2 94/03/13 21:16:32 goossens Exp $
%%% ====================================================================
%%%  @LaTeX-style-file{
%%%     filename        = "b-conv.sty",
%%%     version         = "0.28",
%%%     date            = "30 August 1993",
%%%     time            = "09:00",
%%%     author          = "Authors",
%%%     address         = "CERN",
%%%     telephone       = "+41 22 767 3363",
%%%     checksum        = "????????????????",
%%%     email           = "goossens@cernvm.cern.ch (Internet)",
%%%     codetable       = "ISO/ASCII",
%%%     keywords        = "LaTeX, conventions, LaTeX-companion",
%%%     supported       = "yes",
%%%     docstring       = "
%%%
%%%     b-conv.sty
%%%
%%%     A LaTeX style option giving the coding conventions for
%%%     the book ``A LaTeX companion''.
%%%
%%%?     The checksum field above was produced by
%%%?     Robert Solovay's checksum utility.",
%%%  }
%%% ====================================================================
%
% Version 0.01 26 September
% Version 0.10 27 September  FM personal commands are included
% Version 0.11  7 November   Modify vertical spacing for BCmd environment
% Version 0.12 20 December   updates for NFSS2
% Version 0.13 20 December   added extraindex to turn off automatic
%                            index entries for reading.
% Version 0.14 27 February   de-activated active | (moved to ch7.tex)
%                            corrected a few bugs
%                            added a few command (e.g. \latextex)
% Version 0.15 10 April      Prepare final version for copy-editing
%                            added several commands for defining commands
%                            and environments
% Version 0.16 17 April      Add \rmfamily into \Lcs
% Version 0.17 02 May        Less space inside boxed command
% Version 0.18 04 May        Introduce \ttfamily in BDEF 
%                            introduce \Largb and \Largs in command 
%                            display environments.
% Version 0.19 05 May        Introduce unindexed versions of \LaTeX
%                            commandss and environments
% Version 0.20 06 May        Introduce DefEmoo commands + Llength
%                            change \pt, \Lfn, \erritem
% Version 0.21 08 May        Introduce Llenght and Lfont
% Version 0.22 31 May        Introduce RCS header, /Author, \DANTE
% Version 0.23  6 Jul        Bug corrected in DefCo (Largb -> Largs)
%                            Bug corrected in \exl (\char41 -> \char'41)
% Version 0.24 19 Jul        Add DefCoomm and BDefCoomm
% Version 0.25  2 August     Add comma to i.e., 
%                            Make \lref flush on left and right pages
%                            Add \strut to \Ucom to allow for descenders
% Version 0.26  4 August     Correct BDEF environment (4pt too much space,
%                            due to first columnsep of tabular; added @{}.
%                            add \(B)DefCmoomm commands
% Version 0.27 26 August     Introduce \Lmcs in boxed command definitions.
% Version 0.28 30 August     Introduce \LmBEG and \Lmenv for environment defs.
%                            Add \reset@font in text for all \L... commands
%                            Eliminate \reset@font from all \index commands
% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%<*x>
%
% This file may be used without modification as a style (.sty) file.
%
% If you have Mittelbach's doc.sty, this file may be formatted with a
% command like:
%                latex  b-conv.sty
%
% If you have the Mittelbach/Duchier/Braams docstrip utility, you may
% produce a faster loading .sty file. Rename this file to: b-conv.doc
% Then run this file through *plain* TeX:
%                tex b-conv.doc
% This should produce the file enumerate.sty.
% If you do not have plain TeX on your system, you can trick LaTeX into
% doing the work as follows:
%                latex \def\fmtname{plain} \input b-conv.doc
% Note that you may need to quote the arguments here to stop your
% operating system treating the \ characters incorrectly.
%
%                latex b-conv.doc
% Will produce a typeset version of the documentation, as above.
%
%
% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\def\plain{plain}\ifx\fmtname\plain\csname fi\endcsname
     \def\batchfile{b-conv.doc}
     \input docstrip
     \preamble
 
     Do not distribute the stripped version of this file.
     The checksum in the header refers to the documented version.
 
     \endpreamble
     \generateFile{b-conv.sty}{t}{\from{b-conv.doc}{}}
     \endinput
\fi
%
\ifcat a\noexpand @\let\next\relax\else\def\next{%
   \documentstyle[11pt,b-conv,doc,fullpage]{article}\MakePercentIgnore}\fi\next
%
%\def\eatmodule<#1>{}\eatmodule
%</x>
% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% \CodelineIndex     ^^A Code lines numbered.
% \DisableCrossrefs  ^^A No Cross references.
% \MakeShortVerb{\|} ^^A |\foo| works like \verb+\foo+
%
% \title{b-conv.sty}
% \author{The authors}
% \date{26 September 1992}
% \begin{document}
% \maketitle
% \begin{abstract}
% This style contains the coding conventions for the book
% ``The LaTeX companion''.
% \end{abstract}
%
% \section{Typography  --  shortcuts, abbreviations, emphasizing, etc.}
%
% `\eg' is produced by the |\eg|.
%
% `\ie' is produced by the |\ie|.
%
% `\etc' is produced by the |\etc|.
%
%  \missing{} missing text in quotations by |\missing|.
%
%  '\Lbook{}' is generated by |\Lbook|.
%
%  '\Tbook{}' is generated by |\Tbook|.
%
%    \begin{macrocode}

%\NeedsTeXFormat{LaTeX2e}

\let\packageORclassERROR\relax
   \renewcommand{\eg}{e.g.,\xspace} %FMi
   \renewcommand{\ie}{i.e.,\@\xspace} %FMi
   \renewcommand{\etc}{etc.\@\xspace} %FMi
   \newcommand{\missing}{[\ldots] } %FMi
   \newcommand{\Lbook}{\LaTeX{} \textrm{book}}
   \newcommand{\Tbook}{\TeX{} \textrm{book}}
   \newcommand{\Author}[1]{#1\xAuthor{#1}}
   \newcommand{\xAuthor}[1]{\x@Author#1\@nil}
   \def\x@Author#1 #2\@nil{\index{#2, #1}}            % run authors
						      % with alphabet?
   \renewcommand{\DANTE}{\textsc{dante}\index{DANTE\string~e.V.}}
%    \end{macrocode}
% `\dvi' is produced by the |\dvi| or |\DVI|.
%
% `\Dvips' is produced by the |\Dvips|.
%
% `\PS' is produced by the |\PS|.
%
% `\EPS' is produced by the |\EPS| or |\eps|.
%
% `\pt' is produced by the |\pt|.
%    \begin{macrocode}
  \newcommand{\babel}{\Lpack{babel}} 
  \newcommand{\dvi}{$\!${\normalfont\ttfamily.dvi}%
        \index{dvi@{\string\ttfamily.dvi} file}} %FMi
  \renewcommand{\DVI}{\texttt{dvi}}% MG
  \newcommand{\Dvips}{\Program{dvips}}
  \newcommand{\mDvips}{\mProgram{dvips}}
  \renewcommand{\PS}{PostScript\index{PostScript}} 
  \newcommand{\mPS}{PostScript\index{PostScript|idxbf}}
  \newcommand{\eps}{Encap\-su\-lated Post\-Script\index{Encapsulated PostScript}}
 \let\EPS=\eps
  \newcommand{\pt}{\mbox{\sffamily pt}}
%    \end{macrocode}
%
% For typewriter text we use the |\Lit{...}| or |\teletype{...}|
% commands, \eg \Lit{qqq}.
%
% For terms we use the |\EM{...}| command, \eg ``\EM{device-independant}
% or \DVI{} file''.
%
% For text to input by user we use the |\Ucom{...}| command, \eg
% \Ucom{latex myfile}.
%
% For marginal notes use the |\note| command.
% |\Open{...}| and |\m{...}| output the italized text in angle brackets,
% \eg \m{used by FM}.
% The acronyms are specified by |\acro{...}| command.
%    \begin{macrocode}
 
 \def\@minisanitize{\@makeother\$\@makeother\&\@makeother\#\@makeother\^\@makeother\_\@makeother\%\@makeother\~}
  \def\Lit{\begingroup\@minisanitize\@Lit}
  \def\@Lit#1{\ttfamily\upshape#1\endgroup}
  \let\teletype=\Lit
  \newcommand{\Ucom}[1]{{\ttfamily\underline{\strut#1}}}
  \def\meta#1{{\itshape#1\/}}
  \newcommand{\acro}[1]{{\scshape \lowercase{#1}}}
  \newcommand\Warning[1]{\typeout{*****}%
                       \errmessage{* #1}%
%                       \typeout{* #1}%
                       \typeout{*****}}   % make this an error in production
 
  \newcommand\extraindex[1]{\index{#1}}             % make this \index   in
                                          % production
% \Warning{Some updates necessary for the final run!}
%    \end{macrocode}
%
% \section{Cross-references}
%
% For references on \LaTeX book we use the \DefCmm{lref}{page}
% command, which puts the reference on the margin motes.
% FM sudgests also the |\vref| command, which produce
% twin (number and page number) reference.
% ^^A  \newcommand{\vref}[1]{\unskip~\ref{#1} on page~\pageref{#1}}
% \begin{macrocode}
%  \input varioref.sty
\newcommand{\lref}[1]{\marginpar[($\mathcal L$ #1)]%
                          {\hfill($\mathcal L$ #1)}}
%    \end{macrocode}
%
% \section{Commands for index generation}
%
% \LaTeX{} major style `\Lmsty{article}' should be mentioned as
% |\LMsty{article}|.
% \LaTeX{} minor style `\Lmsty{a4}' should be mentioned as |\Lmsty{a4}|.
% The |\xLMsty{...}| and |\xLmsty{...}| commands produce only the reference.
% The |\nxLMsty{...}| and |\nxLmsty{...}| commands are only typeset
% without entries in the index.
% \begin{macrocode}
\newcommand{\LMsty}[1]{\nxLMsty{#1}\xLMsty{#1}}
\newcommand{\xLMsty}[1]{\packageORclassERROR}
\newcommand{\nxLMsty}[1]{\mbox{\normalfont\sffamily#1}\packageORclassERROR}

\newcommand{\Lmsty}[1]{\nxLmsty{#1}\xLmsty{#1}}
\newcommand{\nxLmsty}[1]{\mbox{\normalfont\sffamily#1}\packageORclassERROR}
\newcommand{\xLmsty}[1]{\packageORclassERROR}
\let\Lsty\Lmsty
\let\xLsty\xLmsty
\let\nxLsty\nxLmsty


\newcommand{\Lclass}[1]{\nxLclass{#1}\xLclass{#1}}
\newcommand{\xLclass}[1]{\index{#1@{\sffamily#1} document class}%
              \index{Document class!#1@{\sffamily#1}}}
\newcommand{\nxLclass}[1]{\mbox{\normalfont\sffamily#1}}

\newcommand{\Lmclass}[1]{\nxLclass{#1}\xLmclass{#1}}
\newcommand{\xLmclass}[1]{\index{#1@{\sffamily#1} document class|idxbf}%
              \index{Document class!#1@{\sffamily#1}|idxbf}}


\newcommand{\Lpack}[1]{\nxLpack{#1}\xLpack{#1}}
\newcommand{\xLpack}[1]{\index{#1@{\sffamily#1} package}%
              \index{Package!#1@{\sffamily#1}}}
\newcommand{\nxLpack}[1]{\mbox{\normalfont\sffamily#1}}

\newcommand{\xLpackextra}[2]{\index{#1@{\sffamily#1} package!#2}}

\newcommand{\Lmpack}[1]{\nxLpack{#1}\xLmpack{#1}}
\newcommand{\xLmpack}[1]{\index{#1@{\sffamily#1} package|idxbf}%
              \index{Package!#1@{\sffamily#1}|idxbf}}

\newcommand{\xLpackrangel}[1]{\index{#1@{\sffamily#1} package|(}%
              \index{Package!#1@{\sffamily#1}|(}}
\newcommand{\xLpackranger}[1]{\index{#1@{\sffamily#1} package|)}%
              \index{Package!#1@{\sffamily#1}|)}}

\newcommand{\xLmpackrangel}[1]{\index{#1@{\sffamily#1} package|(idxbf}%
              \index{Package!#1@{\sffamily#1}|(idxbf}}
\newcommand{\xLmpackranger}[1]{\index{#1@{\sffamily#1} package|)idxbf}%
              \index{Package!#1@{\sffamily#1}|)idxbf}}


\newcommand{\Loption}[1]{\nxLoption{#1}\xLoption{#1}}
\newcommand{\xLoption}[1]{\index{#1@{\sffamily#1} 
%              class 
              option}%
              \index{Option (class or package)!#1@{\sffamily#1}}}
\newcommand{\nxLoption}[1]{\mbox{\normalfont\sffamily#1}}

\newcommand{\Lmoption}[1]{\nxLoption{#1}\xLmoption{#1}}
\newcommand{\xLmoption}[1]{\index{#1@{\sffamily#1}
%              class 
              option|idxbf}%
              \index{Option (class or package)!#1@{\sffamily#1}|idxbf}}


\newcommand{\Lskip}[1]{\nxLskip{#1}\xLskip{#1}}
\newcommand{\xLskip}[1]{\index{#1@{\ttfamily\idxbs#1} rubber length}%
              \index{Rubber length!#1@{\ttfamily\idxbs#1}}}
\newcommand{\nxLskip}[1]{\mbox{\normalfont\ttfamily\bs#1}}

\newcommand{\Lmskip}[1]{\nxLskip{#1}\xLmskip{#1}}
\newcommand{\xLmskip}[1]{\index{#1@{\ttfamily\idxbs#1} rubber length|idxbf}%
              \index{Rubber length!#1@{\ttfamily\idxbs#1}|idxbf}}


\newcommand{\Ldim}[1]{\nxLdim{#1}\xLdim{#1}}
\newcommand{\xLdim}[1]{\index{#1@{\ttfamily\idxbs#1} rigid length}%
              \index{Rigid length!#1@{\ttfamily\idxbs#1}}}
\newcommand{\nxLdim}[1]{\mbox{\normalfont\ttfamily\bs#1}}

\newcommand{\Lmdim}[1]{\nxLdim{#1}\xLmdim{#1}}
\newcommand{\xLmdim}[1]{\index{#1@{\ttfamily\idxbs#1} rigid length|idxbf}%
              \index{Rigid length!#1@{\ttfamily\idxbs#1}|idxbf}}




%    \end{macrocode}
 
% \LaTeX{} page style `\Psty{empty}' should be mentioned as |\Psty{empty}|.
% The |\xPsty{...}| command produces only the reference.
% The |\nxPsty{...}| command is only typeset without entries in the index.
% \begin{macrocode}
\newcommand{\Psty}[1]{\mbox{\sffamily#1}\xPsty{#1}}
\newcommand{\xPsty}[1]{\index{#1@{\sffamily#1} pagestyle}%
                       \extraindex{Page style!#1@{\sffamily#1}}}
\let\nxPsty\nxLmsty

\newcommand{\Pmsty}[1]{\mbox{\sffamily#1}\xPmsty{#1}}
\newcommand{\xPmsty}[1]{\index{#1@{\sffamily#1} pagestyle|idxbf}%
                       \extraindex{Page style!#1@{\sffamily#1}|idxbf}}

\newcommand{\PNsty}[1]{\xPNsty{#1}\nxPNsty{#1}}
\newcommand{\xPNsty}[1]{\index{#1@{\ttfamily#1} page number style}%
                        \extraindex{Page number style!#1@{\ttfamily#1}}}
\newcommand\nxPNsty[1]{{\normalfont\ttfamily#1}}

\newcommand{\PNmsty}[1]{\xPNmsty{#1}\nxPNsty{#1}}
\newcommand{\xPNmsty}[1]{\index{#1@{\ttfamily#1} page number style|idxbf}%
                \extraindex{Page number style!#1@{\ttfamily#1}|idxbf}}


%    \end{macrocode}
 
 
% \LaTeX{} control sequence `\Lcs{stop}' should be input as |\Lcs{stop}|
% to produce the text and the reference, as |\xLcs{stop}| to
% produce only the reference and as |\nxLcs{stop}| to only typeset the
% command sequence in the text.
% Note, the \Lcs{cs} command is the synonym for \Lcs{Lcs}.
%    \begin{macrocode}
\newcommand{\Lcs}[1]{\mbox{\normalfont\ttfamily\bs#1}\xLcs{#1}}
\newcommand{\xLcs}[1]{\index{#1@{\ttfamily\protect\idxbs#1}}}
\let\cs=\Lcs
\newcommand{\nxLcs}[1]{\mbox{\normalfont\ttfamily\bs#1}}
%    \end{macrocode}
%    \Lcs{Lmcs} makes a main index entry for places where one really
%    talks about a cs.
%    \begin{macrocode}
  \newcommand{\Lmcs}[1]{\mbox{\normalfont\ttfamily\bs#1}\xLmcs{#1}}           
  \newcommand{\xLmcs}[1]{\index{"#1@{\ttfamily\protect\idxbs"#1}|idxbf}}
%    \end{macrocode}
%    The \Lcs{Lcsextra} command is for producing a subentry to cs name.
%    \begin{macrocode}
  \newcommand{\Lcsextra}[1]{\mbox{\normalfont\ttfamily\bs#1}\xLcsextra{#1}}
  \newcommand{\xLcsextra}[2]{\index{#1@{\ttfamily\protect\idxbs#1}!#2}}
  \newcommand{\Lmcsextra}[1]{\mbox{\normalfont\ttfamily\bs#1}\xLmcsextra{#1}}
  \newcommand{\xLmcsextra}[2]{\index{#1@{\ttfamily\protect\idxbs#1}!#2|idxbf}}

\newcommand{\xLcsextrarangel}[2]{\index{"#1@{\ttfamily\protect\idxbs"#1}!#2|(}}
\newcommand{\xLcsextraranger}[2]{\index{"#1@{\ttfamily\protect\idxbs"#1}!#2|)}}

%    \end{macrocode}
 
% \LaTeX{} counter `\Lctr{chapter}' should be entered as |\Lctr{chapter}|.
% \begin{macrocode}
  \newcommand{\Lctr}[1]{\nxLctr{#1}\xLctr{#1}}
  \newcommand{\Lmctr}[1]{\nxLctr{#1}\xLmctr{#1}}
  \newcommand{\nxLctr}[1]{\mbox{\normalfont\ttfamily#1}}
  \newcommand{\xLctr}[1]{\index{#1@{\ttfamily#1} counter}}
  \newcommand{\xLmctr}[1]{\index{#1@{\ttfamily#1} counter|idxbf}}
  \newcommand{\xLctrextra}[2]{\index{#1@{\ttfamily#1} counter!#2}}
%    \end{macrocode}
 
% \LaTeX{} option name `\Lopt{11pt}' should be entered as
% |\Lopt{11pt}|.
% \begin{macrocode}
  \newcommand{\Lopt}[1]{\nxLopt{#1}\xLopt{#1}}
  \newcommand{\nxLopt}[1]{\mbox{\normalfont\sffamily#1}\updateERROR}
  \newcommand{\xLopt}[1]{{\index{#1@{\sffamily#1} option}}\updateERROR}
%    \end{macrocode}
 
% \LaTeX{} environment name
% `\Lenv{quote}' should be mentioned as |\Lenv{quote}|.
% The |\xLenv{...}| command produces only the reference.
% The |\nxLenv{...}| command is only typeset in the text and does
% not generate an index entry.
% The |\LBEG{quote}| will produce `\LBEG{quote}'.
% The |\LEND{quote}| will produce `\LEND{quote}'.
% \begin{macrocode}
\newcommand{\Lenv}[1]{\nxLenv{#1}\xLenv{#1}}
\newcommand{\Lmenv}[1]{\nxLenv{#1}\xLmenv{#1}}
\newcommand{\xLenv}[1]{\index{#1@{\ttfamily#1} environment}}
\newcommand{\xLmenv}[1]{\index{#1@{\ttfamily#1} environment|idxbf}}
\newcommand{\nxLenv}[1]{\mbox{\normalfont\ttfamily#1}}

\newcommand{\xLenvrangel}[1]{\index{#1@{\ttfamily#1} environment|(}}
\newcommand{\xLenvranger}[1]{\index{#1@{\ttfamily#1} environment|)}}
\newcommand{\xLmenvrangel}[1]{\index{#1@{\ttfamily#1} environment|(idxbf}}
\newcommand{\xLmenvranger}[1]{\index{#1@{\ttfamily#1} environment|)idxbf}}

\newcommand{\Lenvextra}[1]{\nxLenv{#1}\xLenvextra{#1}}
\newcommand{\xLenvextra}[2]{\index{#1@{\ttfamily#1} environment!#2}}
\newcommand{\xLmenvextra}[2]{\index{#1@{\ttfamily#1} environment!#2|idxbf}}

\newcommand{\xLenvextrarangel}[2]{\index{#1@{\ttfamily#1} environment!#2|(}}
\newcommand{\xLenvextraranger}[2]{\index{#1@{\ttfamily#1} environment!#2|)}}


\newcommand{\LBEG}[1]{{\normalfont\ttfamily\bs{}begin\lcb#1\rcb}\xLenv{#1}}
\newcommand{\LmBEG}[1]{{\normalfont\ttfamily\bs{}begin\lcb#1\rcb}\xLmenv{#1}}
\newcommand{\LEND}[1]{{\normalfont\ttfamily\bs{}end\lcb#1\rcb}\xLenv{#1}}
\newcommand{\LmEND}[1]{{\normalfont\ttfamily\bs{}end\lcb#1\rcb}\xLmenv{#1}}
%    \end{macrocode}
 
% \LaTeX{} file name
%  `\Lfn{toc}' should be entered as |\Lfn{toc}|.
%  |\nxLfn| is the un-indexed form.
% \begin{macrocode}
\newcommand{\Lfn}[1]{\nxLfn{#1}\xLfn{#1}}
\newcommand{\xLfn}[1]{\index{#1@{\ttfamily\protect\makebox[0pt][r]{.}#1} file}}
\newcommand{\nxLfn}[1]{\mbox{\normalfont\ttfamily.#1}}

\newcommand{\Lmfn}[1]{\nxLfn{#1}\xLmfn{#1}}
\newcommand{\xLmfn}[1]{\index{#1@{\ttfamily\protect\makebox[0pt][r]{.}#1} file|idxbf}}

\newcommand{\file}[1]{\mbox{\normalfont\ttfamily#1}\index{#1@{\ttfamily#1}}}

\newcommand\Lfont[1]{\mbox{\normalfont\ttfamily#1}}
%    \end{macrocode}
 
% term with any text
% \begin{macrocode}
  \def\ttfamilyx#1#2{{\normalfont\ttfamily#1}{\index{#1@{\ttfamily#1} #2}}}
%    \end{macrocode}
% `Meta' macro.
% \begin{macrocode}
   \def\Program#1{\textsf{#1}\extraindex{Program!#1}%
                  \index{#1 program}}%
   \def\mProgram#1{\textsf{#1}\extraindex{Program!#1|idxbf}%
                  \index{#1 program|idxbf}}%
%    \end{macrocode}
%
%
% \section{Description of the \LaTeX{} commands}
%
% The \LaTeX's commands are defined by :
% \begin{BDef}
% \DefCm{DefC}{name}\\
% \DefCmm{DefCm}{name}{mandatory-arg}\\
% \DefCmm{DefCo}{name}{optional-arg}\\
% \DefCmmm{DefCom}{name}{optional}{mandatory}\\
% \DefCmmm{DefCmm}{name}{optional}{mandatory}\\
% \end{BDef}
% An argument ``\Larg{arg}'' is mentioned as |\Larg{arg}|.
% A version surrounded by curly braces is |\Largb{arg}|.
% A version surrounded by square brackets is |\Largs{arg}|.
% The boxed display with command descriptions is produced by
% the \Lenv{BDef} environment.
%
% \begin{macrocode}
   \newsavebox{\boxdef}
   \newenvironment{BDef}{\begin{lrbox}{\boxdef}\def\arraystretch{1.0}%
      \begin{tabular}{@{}l@{}l@{}l@{}}}%
    {\end{tabular}\end{lrbox}\begin{flushleft}%
     \fbox{\usebox\boxdef}\end{flushleft}}
%    \end{macrocode}
%
% \typeout{End of the Description.}
% \typein[\answer]%
%   {Do you want an annotated listing of the internals (y/n) ?}
% \def\next{y}\ifx\answer\next\else\expandafter\stop\fi
%
%\section{Internals}
%
% \begin{macrocode}
\newcommand{\Larg}[1]{{\normalfont\itshape#1\/}}
\newcommand{\Largb}[1]{\lcb{\normalfont\itshape#1\/}\rcb}
\newcommand{\Largs}[1]{\lsb{\normalfont\itshape#1\/}\rsb}
\newenvironment{BCmd}{\flushleft}{\@endparpenalty10000 \endflushleft}
\newcommand{\DefC}[1]{\Lmcs{#1}}
\newcommand{\DefCm}[2]{\Lmcs{#1}\Largb{#2}}
\newcommand{\DefCo}[2]{\Lmcs{#1}\Largs{#2}}
\newcommand{\DefCmo}[3]{\Lmcs{#1}\Largb{#2}\Largs{#3}}
\newcommand{\DefCom}[3]{\Lmcs{#1}\Largs{#2}\Largb{#3}}
\newcommand{\DefCmm}[3]{\Lmcs{#1}\Largb{#2}\Largb{#3}}
\newcommand{\DefCmmo}[4]{\Lmcs{#1}\Largb{#2}\Largb{#3}\Largs{#4}}
\newcommand{\DefCmom}[4]{\Lmcs{#1}\Largb{#2}\Largs{#3}\Largb{#4}}
\newcommand{\DefComm}[4]{\Lmcs{#1}\Largs{#2}\Largb{#3}\Largb{#4}}
\newcommand{\DefCoom}[4]{\Lmcs{#1}\Largs{#2}\Largs{#3}\Largb{#4}}
\newcommand{\DefComo}[4]{\Lmcs{#1}\Largs{#2}\Largb{#3}\Largs{#4}}
\newcommand{\DefCmmm}[4]{\Lmcs{#1}\Largb{#2}\Largb{#3}\Largb{#4}}
\newcommand{\DefCmoom}[5]{\Lmcs{#1}\Largb{#2}\Largs{#3}\Largs{#4}\Largb{#5}}
\newcommand{\DefCoomm}[5]{\Lmcs{#1}\Largs{#2}\Largs{#3}\Largb{#4}\Largb{#5}}
\newcommand{\DefCooom}[5]{\Lmcs{#1}\Largs{#2}\Largs{#3}\Largs{#4}\Largb{#5}}
\newcommand{\DefCommm}[5]{\Lmcs{#1}\Largs{#2}\Largb{#3}\Largb{#4}\Largb{#5}}
\newcommand{\DefCmomm}[5]{\Lmcs{#1}\Largb{#2}\Largs{#3}\Largb{#4}\Largb{#5}}
\newcommand{\DefCmmom}[5]{\Lmcs{#1}\Largb{#2}\Largb{#3}\Largs{#4}\Largb{#5}}
\newcommand{\DefCmmmo}[5]{\Lmcs{#1}\Largb{#2}\Largb{#3}\Largb{#4}\Largs{#5}}
\newcommand{\DefCmmmm}[5]{\Lmcs{#1}\Largb{#2}\Largb{#3}\Largb{#4}\Largb{#5}}
\newcommand{\DefCmmmmm}[6]{\Lmcs{#1}\Largb{#2}\Largb{#3}\Largb{#4}\Largb{#5}\Largb{#6}}
\newcommand{\DefCmmomm}[6]{\Lmcs{#1}\Largb{#2}\Largb{#3}\Largs{#4}\Largb{#5}\Largb{#6}}
\newcommand{\DefCmomom}[6]{\Lmcs{#1}\Largb{#2}\Largs{#3}\Largb{#4}\Largs{#5}\Largb{#6}}
\newcommand{\DefCmoomm}[6]{\Lmcs{#1}\Largb{#2}\Largs{#3}\Largs{#4}\Largb{#5}\Largb{#6}}
\newcommand{\DefCmmmmmm}[7]{\Lmcs{#1}\Largb{#2}\Largb{#3}\Largb{#4}\Largb{#5}\Largb{#6}\Largb{#7}}
 
\newcommand{\BDefC}[1]{\begin{BCmd}\fbox{\DefC{#1}}\end{BCmd}}
\newcommand{\BDefCm}[2]{\begin{BCmd}\fbox{\DefCm{#1}{#2}}\end{BCmd}}
\newcommand{\BDefCo}[2]{\begin{BCmd}\fbox{\DefCo{#1}{#2}}\end{BCmd}}
\newcommand{\BDefCmo}[3]{\begin{BCmd}\fbox{\DefCmo{#1}{#2}{#3}}\end{BCmd}}
\newcommand{\BDefCom}[3]{\begin{BCmd}\fbox{\DefCom{#1}{#2}{#3}}\end{BCmd}}
\newcommand{\BDefCmm}[3]{\begin{BCmd}\fbox{\DefCmm{#1}{#2}{#3}}\end{BCmd}}
\newcommand{\BDefComo}[4]{\begin{BCmd}\fbox{\DefComo{#1}{#2}{#3}{#4}}\end{BCmd}}
\newcommand{\BDefCmmo}[4]{\begin{BCmd}\fbox{\DefCmmo{#1}{#2}{#3}{#4}}\end{BCmd}}
\newcommand{\BDefCmom}[4]{\begin{BCmd}\fbox{\DefCmom{#1}{#2}{#3}{#4}}\end{BCmd}}
\newcommand{\BDefComm}[4]{\begin{BCmd}\fbox{\DefComm{#1}{#2}{#3}{#4}}\end{BCmd}}
\newcommand{\BDefCmmm}[4]{\begin{BCmd}\fbox{\DefCmmm{#1}{#2}{#3}{#4}}\end{BCmd}}
\newcommand{\BDefCoom}[4]{\begin{BCmd}\fbox{\DefCoom{#1}{#2}{#3}{#4}}\end{BCmd}}
\newcommand{\BDefCmoom}[5]{\begin{BCmd}\fbox{\DefCmoom{#1}{#2}{#3}{#4}{#5}}\end{BCmd}}
\newcommand{\BDefCoomm}[5]{\begin{BCmd}\fbox{\DefCoomm{#1}{#2}{#3}{#4}{#5}}\end{BCmd}}
\newcommand{\BDefCmmmo}[5]{\begin{BCmd}\fbox{\DefCmmmo{#1}{#2}{#3}{#4}{#5}}\end{BCmd}}
\newcommand{\BDefCommm}[5]{\begin{BCmd}\fbox{\DefCommm{#1}{#2}{#3}{#4}{#5}}\end{BCmd}}
\newcommand{\BDefCmmmm}[5]{\begin{BCmd}\fbox{\DefCmmmm{#1}{#2}{#3}{#4}{#5}}\end{BCmd}}
\newcommand{\BDefCmmmmm}[6]{\begin{BCmd}\fbox{\DefCmmmmm{#1}{#2}{#3}{#4}{#5}{#6}}\end{BCmd}}
\newcommand{\BDefCmmomm}[6]{\begin{BCmd}\fbox{\DefCmmomm{#1}{#2}{#3}{#4}{#5}{#6}}\end{BCmd}}
\newcommand{\BDefCmomom}[6]{\begin{BCmd}\fbox{\DefCmomom{#1}{#2}{#3}{#4}{#5}{#6}}\end{BCmd}}
\newcommand{\BDefCmoomm}[6]{\begin{BCmd}\fbox{\DefCmoomm{#1}{#2}{#3}{#4}{#5}{#6}}\end{BCmd}}
%    Then for environments
\newcommand{\DefE}[1]{\LmBEG{#1}}
\newcommand{\DefEm}[2]{\LmBEG{#1}\Largb{#2}}
\newcommand{\DefEo}[2]{\LmBEG{#1}\Largs{#2}}
\newcommand{\DefEmo}[3]{\LmBEG{#1}\Largb{#2}\Largs{#3}}
\newcommand{\DefEom}[3]{\LmBEG{#1}\Largs{#2}\Largb{#3}}
\newcommand{\DefEmm}[3]{\LmBEG{#1}\Largb{#2}\Largb{#3}}
\newcommand{\DefEmom}[4]{\LmBEG{#1}\Largb{#2}\Largs{#3}\Largb{#4}}
\newcommand{\DefEomm}[4]{\LmBEG{#1}\Largs{#2}\Largb{#3}\Largb{#4}}
\newcommand{\DefEmoo}[4]{\LmBEG{#1}\Largb{#2}\Largs{#3}\Largs{#4}}
\newcommand{\DefEomo}[4]{\LmBEG{#1}\Largs{#2}\Largb{#3}\Largs{#4}}
\newcommand{\DefEmmm}[4]{\LmBEG{#1}\Largb{#2}\Largb{#3}\Largb{#4}}
\newcommand{\DefEooom}[5]{\LmBEG{#1}\Largs{#2}\Largs{#3}\Largs{#4}\Largb{#5}}
\newcommand{\DefEmmmmm}[6]{\LmBEG{#1}\Largb{#2}\Largb{#3}\Largb{#4}\Largb{#5}\Largb{#6}}
%   ......  and their boxed versions
\newcommand{\BDefE}[1]{\begin{BCmd}\fbox{\DefE{#1}}\end{BCmd}}
\newcommand{\BDefEm}[2]{\begin{BCmd}\fbox{\DefEm{#1}{#2}}\end{BCmd}}
\newcommand{\BDefEo}[2]{\begin{BCmd}\fbox{\DefEo{#1}{#2}}\end{BCmd}}
\newcommand{\BDefEmo}[3]{\begin{BCmd}\fbox{\DefEmo{#1}{#2}{#3}}\end{BCmd}}
\newcommand{\BDefEom}[3]{\begin{BCmd}\fbox{\DefEom{#1}{#2}{#3}}\end{BCmd}}
\newcommand{\BDefEmm}[3]{\begin{BCmd}\fbox{\DefEmm{#1}{#2}{#3}}\end{BCmd}}
\newcommand{\BDefEmom}[4]{\begin{BCmd}\fbox{\DefEmom{#1}{#2}{#3}{#4}}\end{BCmd}}
\newcommand{\BDefEomm}[4]{\begin{BCmd}\fbox{\DefEomm{#1}{#2}{#3}{#4}}\end{BCmd}}
\newcommand{\BDefEmoo}[4]{\begin{BCmd}\fbox{\DefEmoo{#1}{#2}{#3}{#4}}\end{BCmd}}
\newcommand{\BDefEomo}[4]{\begin{BCmd}\fbox{\DefEomo{#1}{#2}{#3}{#4}}\end{BCmd}}
\newcommand{\BDefEmmm}[4]{\begin{BCmd}\fbox{\DefEmmm{#1}{#2}{#3}{#4}}\end{BCmd}}
\newcommand{\BDefEmmmmm}[6]{\begin{BCmd}\fbox{\DefEmmmmm{#1}{#2}{#3}{#4}{#5}{#6}}\end{BCmd}}
%    \end{macrocode}
 
%
%      The |@| character requires special handling because it's
%      a special character for MakeIndex. To avoid trouble we
%      make a direct call to the |\char| command.
% \begin{macrocode}
  \def\at{\char64\relax}\let\atsign=\at
  \def\exl{\char'41\relax}
  \def\bs{{\protect\normalfont\ttfamily\char'134}}\let\bslash=\bs
\def\idxbs{\protect\makebox[0pt][r]{\protect\bs}}  
  \def\sbl{{\protect\normalfont\ttfamily\char'40}}
  \def\lcb{{\protect\normalfont\ttfamily\char'173}}
  \def\rcb{{\protect\normalfont\ttfamily\char'175}}
  \def\lsb{{\protect\normalfont\ttfamily\char'133}}
  \def\rsb{{\protect\normalfont\ttfamily\char'135}}
  \def\lab{{\protect\normalfont\ttfamily\char'074}}
  \def\rab{{\protect\normalfont\ttfamily\char'076}}
  \def\vbar{{\protect\normalfont\ttfamily\char'174}}
 
%    \end{macrocode}
%    Stuff especially for NFSS chapter FMi
%    \begin{macrocode}
\newcommand{\NFSS}{{\sffamily NFSS}}
\newcommand{\NFSSii}{{\sffamily NFSS2}}
\newcommand{\PSNFSS}{{\sffamily PSNFSS}}
\newcommand{\numberofCMfonts}{31}
\renewcommand{\pt}{\mbox{pt}}
\newcommand{\tmp}{}
\newcommand{\texprog}[1]{{\sffamily #1}}
\newcommand{\erritem}[1]{\item[\underline{\ttfamily#1}]\mbox{}\\}
\def\erritem#1\par{\item[{\normalfont\ttfamily#1}]\hskip-\labelsep
                         \mbox{}\\} % tmp fix because Fmi likes
                                            % pars there
 
\renewcommand{\*}{\protect\pstar{}}
\newcommand{\pstar}{\leavevmode\lower.8ex\hbox{$\,\widetilde{\
                       }\,$}}

 
\newcommand{\idxbf}[1]{{\fontseries{b}\selectfont#1}} % don't use
                                                      % extended bold
                                                      % in index
 
\newcommand{\latextex}{\texttt{latex.tex}%      file containing TeX
    \index{latex.tex@\texttt{latex.tex} file}}% code for basic LaTeX
 

\newcommand{\seealso}[2]{\emph{see also} #1}
\def\see#1#2{\emph{see} #1}


% index first to ensure that ital corr is handled correctly

%%%%%%%%%%% removed from ch13 and added here

\newcommand{\Bbfun}[1]{\texttt{#1}%
%\index{bibtex@\protect\BibTeX!style file built-in function!{\ttfamily#1}}%
%\index{function@ built-in function in \protect\BibTeX{} style file!{\ttfamily#1}}%
%\index{#1@{\ttfamily#1} (built-in function in \protect\BibTeX{} style file)}}
}
\newcommand{\Bcomm}[1]{\texttt{#1}%
%\index{bibtex@\protect\BibTeX!style file command!{\ttfamily#1}}%
%\index{command (in \protect\BibTeX{} style file)!{\ttfamily#1}}%
%\index{#1@{\ttfamily#1} (\protect\BibTeX{} style file command)}}
}
\newcommand{\Bfield}[1]{\texttt{#1}%
%\index{bibtex@\protect\BibTeX!field!{\ttfamily#1}}%
%\index{field (\protect\BibTeX)!{\ttfamily#1}}%
%\index{#1@{\ttfamily#1} (\protect\BibTeX{} field)}}
}
\newcommand{\Btype}[1]{\texttt{#1}%
%\index{bibtex@\protect\BibTeX!entry type!{\ttfamily#1}}%
%\index{entry type (\protect\BibTeX)!{\ttfamily#1}}%
%\index{#1@{\ttfamily#1} (\protect\BibTeX{} entry type)}}
}
\newcommand{\Btxbst}{\texttt{btxbst.doc}%
%\index{bibtex@\protect\BibTeX!style documentation file!{\ttfamily btxbst.doc}}%
%\index{btxbst@{\ttfamily btxbst.doc} (\protect\BibTeX{} style documentation file)}}
}
\newcommand{\Bpreamble}{\texttt{\at PREAMBLE}%
%\index{bibtex@\protect\BibTeX!\texttt{\at PREAMBLE} command}%
%\index{"@preamble@{\ttfamily\at PREAMBLE} (\protect\BibTeX{} command)}%
%\index{preamble@{\ttfamily\at PREAMBLE} (\protect\BibTeX{} command)}}
}
\newcommand{\Bstring}{{\ttfamily\at STRING}%
%\index{bibtex@\protect\BibTeX!{\ttfamily\at STRING} command}%
%\index{"@string@{\ttfamily\at STRING} (\protect\BibTeX{} command)}%
%\index{string@{\ttfamily\at STRING} (\protect\BibTeX{} command)}}
} 
\newcommand{\Bsty}[1]{\mbox{\sffamily#1}\xBsty{#1}}

\newcommand{\xBsty}[1]{\index{#1@{\sffamily#1} \protect\BibTeX{} style}%
           \extraindex{bibtex style@\string\protect\string\BibTeX{} style!{\sffamily#1}}}
\let\nxBsty\nxLpack

\newcommand{\Bmsty}[1]{\mbox{\sffamily#1}\xBmsty{#1}}
\newcommand{\xBmsty}[1]{\index{#1@{\sffamily#1} \protect\BibTeX{} style|idxbf}%
           \extraindex{bibtex style@\string\protect\string\BibTeX{} style!{\sffamily#1}|idxbf}}

%    \end{macrocode}
 
%
% \end{document}
\endinput