%\iffalse % MetaComment
%%
%% + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +
%% | Copyright(C) 1997-1999 by Francesco Bosisio                 |
%% |                                                             |
%% | This program can be redistributed and/or modified under the |
%% | terms of the LaTeX Project Public License Distributed from  |
%% | CTAN archives in directory macros/latex/base/lppl.txt;      |
%% | either version 1 of the License, or any later version.      |
%% |                                                             |
%% | E-mail:   fbosisio@bigfoot.com                              |
%% | Web page: http://www.bigfoot.com/~fbosisio/LaTeX            |
%% | CTAN location: macros/latex/contrib/supported/bosisio/      |
%% + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +
%%
%%
%%	If you make any improvment, find any bug or have
%%	any suggestion, please let me know about it.
%%
%<*package,driver>
%\fi
%
\def\FileName{dblfont}
%\iffalse % MetaComment
%</package,driver>
%<*package>
%\fi
\def\fileversion{2.0}
\def\filedate{1997/12/13}
\def\docdate{1997/12/13}
\def\filedescr{Blackboard-bold symbols (BF)}
%
%\iffalse % MetaComment
%</package>
%<*dtx>
%- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
%		This section is the installation driver
%
\def\batchfile{\FileName.dtx}
%
\input docstrip
%
\keepsilent
% \askforoverwritefalse
%
\generateFile{\FileName.sty}{f}{\from{\FileName.dtx}{package}}
%
\generateFile{\FileName.drv}{f}{\from{\FileName.dtx}{driver}}
%
\Msg{******************************************************}
\Msg{*}
\Msg{* To produce the documentation run the}
\Msg{* file `\FileName.drv' through LaTeX.}
\Msg{*}
\Msg{******************************************************}
%
\endbatchfile
%
%		End of the installation driver
%- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
%</dtx>
%
%		This section is the documentation driver
%
%<+driver>\documentclass[12pt,a4paper]{ltxdoc}
%<+driver>  \EnableCrossrefs
%<+driver>  \CodelineIndex
%<+driver>  \RecordChanges
%<+driver>  %\OnlyDescription   % Uncomment not to see the implementation
%<+driver>\begin{document}
%<+driver>  \DocInput{\FileName.dtx}
%<+driver>  \PrintIndex
%<+driver>  \PrintChanges
%<+driver>\end{document}
%
%		End of the documentation driver
%- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
%<*package>
%\fi
%
% \changes{v0.1}{1 November 1997}{First release}
% \changes{v1.0}{7 November 1997}{Documentation added}
% \changes{v1.1}{17 November 1997}{Added options in ``XX'' format}
% \changes{v2.0}{13 December 1997}{Used ``newcommand*'' instead of ``def''}
% \changes{v2.1}{5 March 1999}{Added copyright notice and changed addresses}
%
% \MakeShortVerb{\|}
%
% \title{Package \texttt{\FileName}\thanks{This is version \fileversion,
% last revised \filedate; documentation date \docdate}}
% \author{F. Bosisio\\\normalsize E-mail: \texttt{fbosisio@bigfoot.com}\\
% \small Web page: \texttt{http://www.bigfoot.com/$\sim$fbosisio/LaTeX}}
% \date{\filedate}
% \maketitle
%
% \begin{abstract}
%	Documentation for the package \texttt{\FileName}.
% \end{abstract}
%
% \section{Introduction}
%	This package provides the font ``|\DblFont|" (font |msbm10|), which
%	corresponds to the so called blackdoard-bold symbols.
%
% \section{The options}
%	For each uppercase letter ``|X|" a corresponding ``|X|" and ``|XX|"
%	options exist: they declare the command ``|\X|" and ``|\XX|" which
%	generates the letter |X| in |DblFont|.
%	If a command named ``|\X|" or ``|\XX|" already exists in \LaTeX{},
%	their definition is first saved in ``|\BackDoubleX|" or
%       ``|\BackDoubleXX|", respectively.
%
%	\noindent
%	Also a ``|RT|" option exists: it declares the ``|\RT|" command,
%	which generates the two letters |RT| in |DblFont| (used for the
%	Raviart-Thomas spaces).
%
% \StopEventually{}
% \newpage
% \section{Implementation}
%
%    \begin{macrocode}
%%
\NeedsTeXFormat{LaTeX2e}[1995/12/01]
\ProvidesPackage{\FileName}[\filedate\space v\fileversion\space\filedescr]
%    \end{macrocode}
%
%    The font ``|\DblFont|" is loaded, if not already done.
%    \begin{macrocode}
%%
\newfont{\DblFont}{msbm10 scaled \magstep1}
%    \end{macrocode}
%
%    The  ``|\DeclareDblFontSymbol|" has one argument which is used
%    both as the command name to define and as the output it should
%    generate (in |\DblFont|).
%    The ``|\csname #1 \endcsname|" sequence adds a backslash in front
%    of the argument, to get the command name.
%    \begin{macrocode}
%%
\newcommand*\DeclareDblFontSymbol[1]{%
\expandafter\newcommand*\csname #1\endcsname{\ensuremath{\mathbb{#1}}}%
}
%    \end{macrocode}
%    The  ``|\dECL@REdBLfONTsYMBOL|" has one argument which is used
%    both as the command name to define (doubled) and as the output
%    it should generate (in |\DblFont|).
%    The ``|\csname #1#1 \endcsname|" sequence adds a backslash in front
%    of the argument and doubles it, to get the command name.
%    \begin{macrocode}
\newcommand*\dECL@REdBLfONTsYMBOL[1]{%
\expandafter\newcommand*\csname #1#1\endcsname{\ensuremath{\mathbb{#1}}}%
}
%    \end{macrocode}
%
%    The command ``|\BackUpL@texCmd{<X>}|" saves the command ``|\<X>|" in
%    the macro ``|\BackDouble<X>|" and then undefines ``|\<X>|", so that a
%    ``|\newcommand*\<X>{..}|" can be used to redefine it.
%    \begin{macrocode}
%%
\newcommand*\BackUpL@texCmd[1]{%
\expandafter\let\csname BackDouble#1\endcsname=\csname #1\endcsname%
\expandafter\let\csname #1\endcsname\undefined%
\typeout{*** Command name ``#1'' has been replaced by ``BackDouble#1''! ***}%
}
%    \end{macrocode}
%
%    An option exists for each uppercase letter: it declares the
%    command ``|\X|" which generates the letter |X| in |DblFont|,
%    where |X| denotes the letter under consideration.
%    If a command named ``|\X|" already exists in \LaTeX{}, its definition
%    is saved in ``|\BackDoubleX|", before being redefined.
%    \begin{macrocode}
%%
\DeclareOption{A}{\DeclareDblFontSymbol{A}}
\DeclareOption{B}{\DeclareDblFontSymbol{B}}
\DeclareOption{C}{\DeclareDblFontSymbol{C}}
\DeclareOption{D}{\DeclareDblFontSymbol{D}}
\DeclareOption{E}{\DeclareDblFontSymbol{E}}
\DeclareOption{F}{\DeclareDblFontSymbol{F}}
\DeclareOption{G}{\DeclareDblFontSymbol{G}}
\DeclareOption{H}{\BackUpL@texCmd{H} \DeclareDblFontSymbol{H}}
\DeclareOption{I}{\DeclareDblFontSymbol{I}}
\DeclareOption{J}{\DeclareDblFontSymbol{J}}
\DeclareOption{K}{\DeclareDblFontSymbol{K}}
\DeclareOption{L}{\BackUpL@texCmd{L} \DeclareDblFontSymbol{L}}
\DeclareOption{M}{\DeclareDblFontSymbol{M}}
\DeclareOption{N}{\DeclareDblFontSymbol{N}}
\DeclareOption{O}{\BackUpL@texCmd{O} \DeclareDblFontSymbol{O}}
\DeclareOption{P}{\BackUpL@texCmd{P} \DeclareDblFontSymbol{P}}
\DeclareOption{Q}{\DeclareDblFontSymbol{Q}}
\DeclareOption{R}{\DeclareDblFontSymbol{R}}
\DeclareOption{S}{\BackUpL@texCmd{S} \DeclareDblFontSymbol{S}}
\DeclareOption{T}{\DeclareDblFontSymbol{T}}
\DeclareOption{U}{\DeclareDblFontSymbol{U}}
\DeclareOption{V}{\DeclareDblFontSymbol{V}}
\DeclareOption{W}{\DeclareDblFontSymbol{W}}
\DeclareOption{X}{\DeclareDblFontSymbol{X}}
\DeclareOption{Y}{\DeclareDblFontSymbol{Y}}
\DeclareOption{Z}{\DeclareDblFontSymbol{Z}}
%    \end{macrocode}
%
%    An option ``|XX|" exists for each uppercase letter ``|X|": it declares
%    the command ``|\XX|" which generates the letter |X| in |DblFont|.
%    If a command named ``|\XX|" already exists in \LaTeX{}, its
%    definition is saved in ``|\BackDoubleXX|", before being redefined.
%    \begin{macrocode}
%%
\DeclareOption{AA}{\dECL@REdBLfONTsYMBOL{A}}
\DeclareOption{BB}{\dECL@REdBLfONTsYMBOL{B}}
\DeclareOption{CC}{\dECL@REdBLfONTsYMBOL{C}}
\DeclareOption{DD}{\dECL@REdBLfONTsYMBOL{D}}
\DeclareOption{EE}{\dECL@REdBLfONTsYMBOL{E}}
\DeclareOption{FF}{\dECL@REdBLfONTsYMBOL{F}}
\DeclareOption{GG}{\dECL@REdBLfONTsYMBOL{G}}
\DeclareOption{HH}{\dECL@REdBLfONTsYMBOL{H}}
\DeclareOption{II}{\dECL@REdBLfONTsYMBOL{I}}
\DeclareOption{JJ}{\dECL@REdBLfONTsYMBOL{J}}
\DeclareOption{KK}{\dECL@REdBLfONTsYMBOL{K}}
\DeclareOption{LL}{\dECL@REdBLfONTsYMBOL{L}}
\DeclareOption{MM}{\dECL@REdBLfONTsYMBOL{M}}
\DeclareOption{NN}{\dECL@REdBLfONTsYMBOL{N}}
\DeclareOption{OO}{\dECL@REdBLfONTsYMBOL{O}}
\DeclareOption{PP}{\dECL@REdBLfONTsYMBOL{P}}
\DeclareOption{QQ}{\dECL@REdBLfONTsYMBOL{Q}}
\DeclareOption{RR}{\dECL@REdBLfONTsYMBOL{R}}
\DeclareOption{SS}{\BackUpL@texCmd{SS} \dECL@REdBLfONTsYMBOL{S}}
\DeclareOption{TT}{\dECL@REdBLfONTsYMBOL{T}}
\DeclareOption{UU}{\dECL@REdBLfONTsYMBOL{U}}
\DeclareOption{VV}{\dECL@REdBLfONTsYMBOL{V}}
\DeclareOption{WW}{\dECL@REdBLfONTsYMBOL{W}}
\DeclareOption{XX}{\dECL@REdBLfONTsYMBOL{X}}
\DeclareOption{YY}{\dECL@REdBLfONTsYMBOL{Y}}
\DeclareOption{ZZ}{\dECL@REdBLfONTsYMBOL{Z}}
%    \end{macrocode}
%
%    A further option is for Raviart-Thomas spaces: it declares the
%    command ``|\RT|" which generates the two letters |RT| in |DblFont|
%    \begin{macrocode}
%
\DeclareOption{RT}{\DeclareDblFontSymbol{RT}}
%    \end{macrocode}
%
%    Finally, the user option are parsed, thereby defining the
%    corresponding commands.
%    \begin{macrocode}
%
\ProcessOptions
%    \end{macrocode}
%
%\iffalse % MetaComment
%<*package>
%\fi
%
% \CheckSum{154}
% \Finale
%
\endinput

