% \iffalse
%% Copyright 2005 Personal TeX, Inc.
%%
%<*dtx>
          \ProvidesFile{lucimatx.dtx}
%</dtx>
%<package>\NeedsTeXFormat{LaTeX2e}[1997/06/01]
%<package>\ProvidesPackage{lucimatx}
%<driver>\ProvidesFile{lucimatx.drv}
% \fi
%         \ProvidesFile{lucimatx.dtx}
 [2005/11/28 1.0.1%
%<package> Lucida Bright/New Math font support (PCTeX Inc)%
]
%
% \iffalse
%
%<*driver>
\documentclass[10pt]{ltxdoc}
\OnlyDescription
%
\usepackage[lucidasmallscale, math-style=iso, nofontinfo]{lucimatx}
\linespread{1.05}
\usepackage{xspace,url,tabularx}
\newcommand*{\Lpack}[1]{\textsf{#1}}
\newcommand*{\Lopt}[1]{\texttt{#1}}
\renewcommand{\labelitemi}{$\triangleright$}
\renewcommand*\descriptionlabel[1]{\hspace\labelsep #1}
\makeatletter
\renewcommand*\l@section{\@dottedtocline{1}{1.5em}{2em}}      % ???
\renewcommand*\l@subsection{\@dottedtocline{2}{2.8em}{3.5em}} % ???
\setlength{\@fptop}{0\p@ \@plus 1fil}
\setlength{\@fpsep}{8\p@ \@plus 2fil}
\setlength{\@fpbot}{0\p@\@plus 2fil}
\makeatother
%
% Logos, patched for use with Lucida:
\makeatletter
\def\hlhTeX{T\kern-.1667em\lower.4ex\hbox{E}\kern-.075emX\@}
\DeclareRobustCommand{\hlhLaTeX}{L\kern-.3em %
        {\setbox0\hbox{T}%
         \vbox to\ht0{\hbox{\textsc{a}}%
                      \vss}%
        }%
        \kern-.09em % -.07em ?
        \hlhTeX}
\let\TeX=\hlhTeX
\let\LaTeX=\hlhLaTeX
\makeatother
%abbreviations:
\newcommand{\lbr}{Lucida Bright\xspace}
\newcommand{\lnm}{Lucida New Math\xspace}
\newcommand{\ltwo}{\Lpack{lucimatx}\xspace}
%
%  this serves to show the upright math alphabet:
\DeclareSymbolFontAlphabet{\mathup}{upright}
%  ...and the alterative math italics:
\DeclareMathVersion{std}
\SetSymbolFont{letters}{std}{OML}{hlcm}{m}{itx}
%
\begin{document}
\DocInput{lucimatx.dtx}
\end{document}
%</driver>
% \fi
%
% \CheckSum{2238}
%
% \GetFileInfo{lucimatx.dtx}
%
% \title{The macro package \Lpack{lucimatx}\thanks{%
%           This   document refers to 
%           version \fileversion\ of the package.\quad\textcopyright\ 2005 Personal TeX, Inc. 
%           }%
%        }
%
% \date{\filedate}
% \author{Walter Schmidt}
% \maketitle
% \begin{abstract}
% \noindent 
% This document describes the macro package \ltwo,
% which serves for using the Lucida\textregistered\ Bright 
% and Lucida\textregistered\ New Math fonts\footnote{%
% Lucida \textregistered\ is a trademark of Bigelow \& Holmes Inc.\ 
% registered in the U. S. Patent \& Trademark
% Office and other jurisdictions.\par
% The fonts are non-free and must be acquired from a licensed distributor.}
% with \LaTeX. 
% It constitutes a successor to the packages \Lpack{lucidabr} and \Lpack{lucbmath}.
% The present document serves also as a font sample, 
% since it was typeset using the Lucida fonts
% and shows at least one member of each single font family in the collection.
% \end{abstract}
%
% \tableofcontents
% \clearpage
%
% \sloppy
%
%
% \section{Introduction}
% Lucida is a `super-family' of harmonized typefaces that includes a variety of
% styles: serifed and sans-serif, roman and italic, normal and bold weights,
% scripts, typewriter and blackletter.
% The related math fonts (`Lucida New Math') contain the character set needed for use with \TeX,
% including the `AMS symbols', fraktur and doublestroke alphabets and
% complete Greek alphabets in both upright and slanted form.
% Even though they were designed for use with the Lucida text fonts,
% they may blend harmoniously with other typefaces, too.
%
% To make the use of the Lucida text and math fonts with \LaTeX\ most easy, 
% the macro package \ltwo is provided.  Loading the package
% \begin{verse}
%   |\usepackage|\oarg{options}|{lucimatx}|
% \end{verse}
% makes \LaTeX{} use the \lbr and \lnm fonts in place of 
% the default Computer Modern text and math fonts.  In detail:
% \begin{itemize}
%   \item Computer Modern Roman is replaced with Lucida Bright,
%   \item CM Sans is replaced with {\sffamily Lucida Sans,}
%   \item CM Typewriter is replaced with {\ttfamily Lucida Sans Typewriter},
%   \item the CM Math fonts are replaced with Lucida New Math.
% \end{itemize}
% The following sections describe the Lucida fonts,
% the particular features of the package,
% and the additional options that control its behavior.  
%
%
%
% \section{Package option syntax}
% All package options are set using a \mbox{\meta{key} = \meta{value}} scheme;
% valid keys and values will be explained in the course of this document.
% So-called `boolean' options accept |true| and |false| 
% as values.  Specifying a boolean key without a value is equivalent to
% setting it to |true|.
%
% For a summary of all package options see section~\ref{sec:allopts}.
%
%
% \section{Font size and baseline distance}
% \label{sec:scaling}
% The Lucida text and math fonts are larger than many other typefaces (including CM) when used at the same
% nominal size.  This may lead to problems with the default vertical spacing of 
% existing document classes and with the blending with other fonts possibly used in the 
% document.  The package \ltwo provides two alternative means to control the effective
% font size, if you cannot (or do not want to) modify the document class acordingly:
% 
% First, there is an option key \Lopt{scale}.\footnote{Notice that the key is named \Lopt{scale},
% rather than \Lopt{scaled} as in certain other packages.}
% Its value indicates a factor by which the
% Lucida fonts will be scaled; for instance, |scale=0.9| causes the Lucida fonts to be
% used at 90\% of their nominal size (which is a reasonable value under normal circumstances).
%
% Second, for the sake of compatibility with the package \Lpack{lucidabr}, 
% \ltwo provides also an alternative way to control the effective font size:  
% When the package is loaded with the boolean
% option \Lopt{lucidascale} or \Lopt{lucidasmallscale} set to \Lopt{true}, a sort of
% `nonlinear' scaling is enabled, i.e., different sizes are scaled differently:
% \begin{center}
% \begin{tabular}{lccccc}
%                          &  $< 5\,\mathrm{pt}$ & \dots & $10\,\mathrm{pt}$ & \dots & $\ge 22.5\,\mathrm{pt}$ \\
% \hline
% \Lopt{lucidascale}:      &  $1.04$             & \dots & $0.95$            & \dots & $0.89$ \\
% \Lopt{lucidasmallscale}: &  $0.98$             & \dots & $0.90$            & \dots & $0.85$
% \end{tabular}
% \end{center}
%
% Notice that linear and nonlinear scaling cannot be combined, i.e., you can select either
% the option |scale=...| or \Lopt{lucidascale} or \Lopt{lucidasmallscale}.
%
% Because of the relatively large x-height of the Lucida fonts, the 
% ratio of baseline distance to font size must be considerably larger than with Computer Modern.
% The standard document classes (and most others, too) are, however, optimized for the CM fonts,
% so the leading must be enlarged, even when the Lucida fonts are already scaled down.
% Since the optimum setting is a question of document design and line width,
% adjusting the baseline distance is left to the user.  If necessary, all you have to do is to issue
% the command
% \begin{verse}
%   \cmd{\linespread}\marg{factor}
% \end{verse}
% in the preamble; as a result, the baseline distance is enlarged by the given factor.
% Typical values for \meta{factor} are $1.04 \dots 1.05$, provided that the fonts
% are simultaneously scaled down to 90\%.  
% 
%
%
% \section{The Lucida text fonts}
% Table~\ref{tab:nfss} lists all font families in the Lucida distribution\footnote{as of October 2005}
% and the available font encodings, series and shapes.
% For more detailed information see the file \path{doc/fonts/lucida/lucida.txt}
% in your \TeX\ file system hierarchy.
% \DeleteShortVerb{\|}
% {\renewcommand{\arraystretch}{1.1}
% \begin{table}[hbt]
%   \begin{center}
%   \begin{tabular}{|l|l|l|l|}
%   \hline
%   \textbf{encodings} & \textbf{family} & \textbf{series} & \textbf{shape(s)}  \\
%   \hline\hline
%   \multicolumn{4}{|c|}{Lucida Bright}\\ \hline
%    T1, TS1, LY1 & \texttt{hlh}  & \texttt{m, b} & \texttt{n, it, sl, sc} \\ \hline\hline
%   \multicolumn{4}{|c|}{Lucida Bright, oldstyle figures }\\ \hline
%    T1, TS1      & \texttt{hlhj} & \texttt{m} & \texttt{n, it, sc} \\ \hline
%    T1, TS1      & \texttt{hlhj} & \texttt{b} & \texttt{n, sc} \\ \hline\hline
%   \multicolumn{4}{|c|}{{\sffamily Lucida Sans}}\\ \hline
%    T1, TS1, LY1 & \texttt{hls}  & \texttt{m, b, ub} & \texttt{n, it} \\ \hline\hline
%   \multicolumn{4}{|c|}{{\ttfamily Lucida Sans Typewriter}}\\ \hline
%    T1, TS1, LY1 & \texttt{hlst} & \texttt{m, b} & \texttt{n, sl} \\ \hline\hline
%   \multicolumn{4}{|c|}{{\fontfamily{hlct}\selectfont Lucida Typewriter}}\\ \hline
%    T1, TS1, LY1 & \texttt{hlct} & \texttt{m, b} & \texttt{n, sl} \\ \hline\hline
%   \multicolumn{4}{|c|}{{\fontfamily{hlx}\selectfont Lucida Fax}}\\ \hline
%    T1, TS1, LY1 & \texttt{hlx}  & \texttt{m, b} & \texttt{n, it} \\ \hline\hline
%   \multicolumn{4}{|c|}{{\fontfamily{hlce}\selectfont Lucida Calligraphy}}\\ \hline
%    T1, TS1, LY1 & \texttt{hlce}  & \texttt{m}   & \texttt{it} \\ \hline\hline
%   \multicolumn{4}{|c|}{{\fontfamily{hlcn}\selectfont Lucida Casual}}\\ \hline
%    T1, TS1, LY1 & \texttt{hlcn}  & \texttt{m}   & \texttt{n, it} \\ \hline\hline
%   \multicolumn{4}{|c|}{{\fontfamily{hlcw}\selectfont Lucida Handwriting}}\\ \hline
%    T1, TS1, LY1 & \texttt{hlcw}  & \texttt{m}  & \texttt{it} \\ \hline\hline
%   \multicolumn{4}{|c|}{{\fontfamily{hlcf}\selectfont Lucida Blackletter}}\\ \hline
%    T1, TS1, LY1 & \texttt{hlcf}  & \texttt{m}  & \texttt{n} \\ \hline
%   \end{tabular}
% \caption{NFSS classification of the Lucida text fonts}\label{tab:nfss}
% \end{center}
% \end{table}}
% \MakeShortVerb{\|}
%
%
% \subsection{Choice of text fonts through package options}
% \label{sec:textfonts}
% When the package \ltwo is used, the roman font family of the document (\cmd{\rmdefault}) 
% can be chosen through the package option \Lopt{romanfamily}. Possible values are:
% \begin{description}
% \item[\Lopt{romanfamily=bright}:] Lucida Bright (default setting) 
% \item[\Lopt{romanfamily=bright-osf}:] Lucida Bright with oldstyle figures
% \item[\Lopt{romanfamily=fax}:] {\fontfamily{hlx}\selectfont Lucida Fax}
% \item[\Lopt{romanfamily=casual}:]  {\fontfamily{hlcn}\selectfont Lucida Casual}
% \end{description}
%
% Under normal circumstances, the commands \cmd{\itshape} and \cmd{\textit} select the italic
% shape that belongs to the current font family.   
% The package can optionally replace this with the
% Lucida Calligraphic or Lucida Handwriting font.  This facility is controlled using the package
% option \Lopt{italics}.  Possible values are:
% \begin{description}
% \item[\Lopt{italics=handwriting}:]  use {\fontfamily{hlcw}\selectfont Lucida Handwriting}
% \item[\Lopt{italics=calligraphic}:] use {\fontfamily{hlce}\selectfont Lucida Calligraphic}
% \item[\Lopt{italics=default}:]      do not replace the italics (default setting)
% \end{description}
% Notice, however, that this affects the roman font family only.  The italics of the sans-serif
% and typewriter families will remain unchanged.
%
% By default, the package \ltwo selects {\ttfamily Lucida Sans Typewriter} as the 
% typewriter font family (\cmd{\ttdefault}).
% To use the serifed variant {\fontfamily{hlct}\selectfont Lucida Typewriter} instead,
% specify the boolean package option \Lopt{seriftt=true}.
%
%
% \subsection{Encoding}
% \label{sec:encoding}
% The Lucida text fonts are currently available with T1/TS1 (European) and
% LY1 (TeX'n\,ANSI) encoding, whereas they are no longer made available with the 
% obsolete OT1 encoding (which is still the default setting in \LaTeX).
% 
% LY1 encoding is supported primarily with respect to Y\&Y-TeX\ systems\footnote{%
% Using the Lucida fonts with T1/TS1 encoding requires virtual font support,
% which is not available on Y\&Y-TeX.} and legacy documents, and it implies a few restrictions:
% The font family \texttt{hlhj} is not available with LY1 encoding,
% the command \cmd{\oldstylenums} does not work properly,
% and Euro symbols (\cmd{\texteuro}) are not available in all font families.
% These restrictions do not apply with T1/TS1 encoding, which is to be preferred,
% if possible.
%
% When the \ltwo package is loaded
% with OT1 encoding still being in effect, it will change the font encoding to T1 and load
% the package \Lpack{textcomp} additionally.  To use LY1 instead, or to
% declare additional encodings, you must load the \Lpack{fontenc} package \emph{before} 
% \ltwo; in this case \Lpack{textcomp} is \emph{not} loaded automatically.
%
%
% \subsection{Additional usage notes}
% The Lucida text fonts do not include all symbols of the TS1 (`text  companion') 
% font encoding.  Only those symbols are available, that
% belong to the ISO-Adobe~1 character set, plus the \textohm\ (\cmd{\textohm})
% and the \texteuro\ \cmd{\texteuro}.
%
% The font series \texttt{b} is actually assigned \emph{demibold} fonts.
% To access Lucida Sans Bold, which is assigned to the series \texttt{ub} (ultra bold),
% use a declaration such as |\fontseries{ub}\sffamily|.  
%
% Oldstyle numerals are available in the font family \texttt{hlhj}, where they
% constitute the default numerals, and in the family \texttt{hlh}, where they
% can be accessed through \cmd{\oldstylenums}.  The latter way requires the use
% of a recent version of the \Lpack{textcomp} package, as shipped with \LaTeX\ from
% the 2003/12/01 release on.
%
% The blackletter font is primarily intended to be used in math.  
% When used as a text font with T1 or LY1 encoding, no `long s' is made
% available, while there are many accented or special characters that actually
% do not make much sense with this typeface.  Consequently, no package option or 
% `user level' command  is provided to select Lucida Blackletter for text, but you 
% can access it through the declaration |\fontfamily{hlcf}\selectfont|.
%
%
%
% \section{Using \lnm with `foreign' text fonts}
% \label{sec:onlymath}
%
% Instead of changing both text and math fonts of the document to Lucida,
% it is possible to make the package change only the math fonts;
% to do so, specify the boolean option \Lopt{onlymath=true}.
% Thus, the \lnm fonts can be used with `foreign'
% text fonts.  Notice that the default font families used 
% for the text must be selected \emph{before} loading \ltwo; for instance,
% to use \lnm with Charter as the default roman typeface:
% \begin{verse}
%   |\usepackage{charter}| \\
%   |\usepackage[onlymath=true,scale=.9,...]{lucimatx}|
% \end{verse}
% The text font encoding, too, must be chosen \emph{before} the loading of \ltwo, unless you are staying
% with OT1.
%
% The options described in the above section \ref{sec:textfonts} have no effect, when \Lopt{onlymath}
% is selected.
%
%
% 
% \section{Math typesetting}
%
% \subsection{Choice of math italics}
% \label{sec:mathitalics}
% \lnm includes two italic math alphabets with different shapes of the
% lower-case Latin letters:
% \begin{center}
% \begin{tabular}{ll}
%  Lucida New Math Italic:           & {\mathversion{std}\Large $ a, b \dots\ m, n, o, p, q, r \dots\ z$} \\
%  Lucida New Math Alternate Italic: & {\Large $ a, b \dots\ m, n, o, p, q, r \dots\ z$}
% \end{tabular}
% \end{center}
%
% Despite its name, the `Alternate' variant is the one that is used by default for
% variables in formulas.
% To use the `standard' one instead, load \ltwo with the package option
% |stdmathitalics=true|.  
%
% 
% \subsection{Upright vs. italic letters in math mode}
% \label{sec:upright}
% With \TeX{} or \LaTeX{}, uppercase Greek letters in math mode 
% are usually typeset as upright, even though they are usually meant to designate
% variables.  This violates the
% International Standards ISO31-0:1992 to ISO31-13:1992.
% Loading the package with the option \Lopt{math-style=iso} will result
% in slanted uppercase Greek letters \cmd{\Gamma}, \cmd{\Delta} etc.
% 
% Upright lowercase and uppercase Greek letters are available with command
% names such as \cmd{\upalpha}, \cmd{\upbeta}, \cmd{\upGamma}, \cmd{\upDelta}, etc.
% They are always upright, regardless of the value of the \Lopt{math-style} option.
%
% The package supports also the French tradition of typesetting all Greek variables
% (both uppercase and lowercase) upright, and ditto the uppercase roman variables.
% This behavior is selected by specifying the option \Lopt{math-style=french}.
%
% The following table is to clarify the differences between \TeX's default behavior
% and the options |math-style=iso| and |french|:
% \begin{center}
% \begin{tabular}{rl}
% default: & $ M \in \upGamma \Leftrightarrow OM = x\rho $\\
% ISO    : & $ M \in \Gamma \Leftrightarrow OM = x\rho $\\
% French : & $ \mathup{M} \in \upGamma \Leftrightarrow \mathup{OM} = x\uprho $
% \end{tabular}
% \end{center}
%
% 
% \subsection{Using bold math fonts}
% All Lucida math fonts, except for the extensible operator symbols,
% are available in a normal and a bold version.  The appropriate way to use the bold math fonts
% depends on the particular purpose:
% \begin{itemize}
% \item
% The declaration \cmd{\boldmath} will embolden all formulas within its scope.
% Use it, for instance,  to emphasize complete formulas
% or to make sure that mathematical expressions within bold section titles also appear in
% bold type.  
% The declaration \cmd{\boldmath} can, however, \emph{not} be issued when you are already in
% math mode.  Thus it is not a suitable means to embolden single letters,
% e.g., if you want to designate vectors with bold type.  
% \item
% The `canonical' way to embolden single letters or symbols is to use the
% macro package \Lpack{bm}.  It defines the command \cmd{\bm}, 
% which can embolden almost anything---provided that the required font exists.
% The package \Lpack{bm} belongs to the \Lpack{tools} collection, 
% which is part of every \LaTeX\ system.  Make sure to load the package
% only \emph{after} \ltwo.  
% \end{itemize}
%
%
% \subsection{Math alphabets}
% \begin{itemize}
% \item The standard math alphabets \cmd{\mathrm}, \cmd{\mathsf}
%   and \cmd{\mathtt} are mapped to the roman, sans-serif and typewriter 
%   text fonts, as expected.
%   \item Correspondingly, \cmd{\mathbf} uses the bold variant of the 
%   roman text font.
% \item \cmd{\mbf} is similar, but uses the
%   upright LucidaNewMath-Demibold font.
%   with the spacing and the letter shapes adapted to math typesetting.  
%   Thus \cmd{\mbf} is appropriate to typeset single variables, while
%   \cmd{\mathbf} can be used, e.g., to emphasize an operator name.
% \item \cmd{\mathcal} uses the calligraphic alphabet of the Lucida New Math Symbol font;
%   notice that only upper-case Latin letters are available:
%   $\mathcal{A, B, \dots Z}$  
% \item \cmd{\mathbb} uses the doublestroke alphabet in the Lucida New Math fonts;
%   again, only upper-case letters are available:
%   $\mathbb{A, B, \dots Z}$
% \item \cmd{\mathfrak} points to the Lucida Blackletter font:
%   $ \mathfrak{a, b, \dots z, A, B, \dots Z}$
% \end{itemize}
% The `Blackboard bold' and fraktur alphabets are provided by the \ltwo package;
% do \emph{not} load the packages \Lpack{amsfonts} or \Lpack{amssymb} for this purpose!
% 
% The symbols \cmd{\Re} and \cmd{\Im} 
% are, by default, not exactly the same as the corresponding letters from these 
% \cmd{\mathfrak} alphabets. If you would prefer 
% to have \cmd{\Re} and \cmd{\Im} use the \cmd{\mathfrak} alphabet, 
% just redefine these macros appropriately:
% \begin{verse}
%   |\renewcommand{\Re}{\mathfrak{R}}|\\
%   |\renewcommand{\Im}{\mathfrak{I}}|\\
% \end{verse}
%
%
% \subsection{Digits in math mode}
% \label{sec:mathdigits}
% Digits in formulas are normally taken from the default roman text font family
% of the document, i.e., \cmd{\rmdefault}.
% This may not always meet your expectations, for instance, if this font family has 
% oldstyle digits.  The option |stdmathdigits=true| forces the macro package
% to use always the Lucida lining figures in math mode, regardless of the text fonts.
%
%
% \subsection{AMS symbols}
% The \lnm fonts contain the so-called `AMS symbols' described, for instance, 
% in \cite{tlc2}, section~8.9.  With Computer Modern the symbols are made available
% by loading the package \Lpack{amssymb}; with Lucida, in contrast, no additional
% package is needed beside \ltwo.  Do \emph{not} load \Lpack{amssymb}
% or \Lpack{amsfonts}; all features usually provided by these packages are already
% built into \ltwo.
% 
% Notice that the mathematical symbols \cmd{\digamma} and \cmd{\yen} are not available 
% with the Lucida fonts.  
%
% \subsection{Additional symbols not available with standard \LaTeX}
%
% \subsubsection{Integrals}
% A surface integral symbol $\surfint$ is available under the name \cmd{\surfint}.
%
%
% \subsubsection{Negated relation symbols}
% \label{sec:negrel}
% \lnm includes a number of ready-made negated relation symbols, 
% which are normally built from pieces.  For instance, with \ltwo you should write
% |\notequiv| instead of |\not\equiv|.
% For most of these symbols an alternative name is indicated,
% which follows the naming scheme of the \Lpack{amssymb} package:
% 
% \begin{center}
% \begin{tabular}{ll@{\qquad}ll}
%  $\nequiv $      & \cmd{\notequiv}, \cmd{\nequiv}           & $\napprox $     & \cmd{\notapprox}, \cmd{\napprox} \\
%  $\nsubset $     & \cmd{\notsubset}, \cmd{\nsubset}         & $\nsupset $     & \cmd{\notsupset}, \cmd{\nsupset}  \\
%  $\nsubseteq $   & \cmd{\notsubseteq}, \cmd{\nsubseteq}     & $\nsupseteq $   & \cmd{\notsupseteq}, \cmd{\nsupseteq} \\
%  $\nsim $        & \cmd{\notsim}, \cmd{\nsim}               & $\nsimeq $      & \cmd{\notsimeq}, \cmd{\nsimeq} \\
%  $\nsqsubseteq $ & \cmd{\notsqsubseteq}, \cmd{\nsqsubseteq} & $\nsqsupseteq $ & \cmd{\notsqsupseteq}, \cmd{\nsqsupseteq} \\
%  $\nasymp $      & \cmd{\notasymp}, \cmd{\nasymp}           & $\ncong $       & \cmd{\notcong}, \cmd{\ncong} \\
%  $\notni $       & \cmd{\notni}    \\
% \end{tabular}
% \end{center}
%
% \subsubsection{Miscellaneous symbols}
% \label{sec:miscsym}
% Further extra symbols, too, are not defined with standard \LaTeX.
% These are relations, except for the lightning and the dashed arrows,
% which are of type `ordinary', and the open face brackets, which are
% delimiters:
% \begin{center}
% \begin{tabular}{ll@{\qquad}ll}
%  $\defineeq $ & \cmd{\defineeq}, \cmd{\defineequal}  & $\hateq $ & \cmd{\hateq} \\
%  $\coloneq $ & \cmd{\coloneq}  & $\eqcolon $ & \cmd{\eqcolon} \\
%  $\image $ & \cmd{\image}  & $\original $ & \cmd{\original} \\
%  $\longimage $ & \cmd{\longimage}  & $\longoriginal $ & \cmd{\longoriginal} \\
%  $\updownarrows $ & \cmd{\updownarrows}  & $\downuparrows $ & \cmd{\downuparrows} \\
%  $\leadsfrom $ & \cmd{\leadsfrom}  & $\lightning $ & \cmd{\lightning} \\
%  $\dashuparrow $ & \cmd{\dashuparrow}  & $\dashdownarrow $ & \cmd{\dashdownarrow} \\
%  $\ldbrack $ & \cmd{\ldbrack}  & $\rdbrack $ & \cmd{\rdbrack} \\
% \end{tabular}
% \end{center}
%
%
% \subsection{Compatibility with \Lpack{amsmath}}
% In contrast to its predecessors \Lpack{lucidabr} and \Lpack{lucbmath},
% the package \ltwo should be fully compatible with \Lpack{amsmath},
% and it should not matter which package is loaded first.\footnote{%
% This holds for \Lpack{amsmath} version 2.13. Later versions may behave differently;
% in case you experience any problems, please let us know!}
% Also, it should work together with the \Lpack{chemarr} package,
% which constitutes an extension to \Lpack{amsmath}.
%
% The only exception affects the commands \cmd{\leftroot} and \cmd{\uproot}
% provided by \Lpack{amsmath}.  They have no effect, when the Lucida math fonts
% are used, because \ltwo has a method of its own to optimize the placement
% of root indices without interaction of the user.
% 
%
% \section{Diagnostic output}
% \label{sec:warnings}
% \ltwo applies a large number of changes to the default font settings
% of the \LaTeX\ program, which would normally result in lots of warnings on the terminal
% (console).  To avoid this, the package makes any font warnings appear in the
% log file only.  Optionally you can suppress font warnings in the log file, too,
% by issuing the package option |nofontinfo=true|.  Finer control over the
% diagnostic output can be achieved by using the package \Lpack{tracefnt},
% which is to be loaded after \ltwo.
%
%
% \section{Option summary}
% \label{sec:allopts}
% The following table lists all options (keys) of the \ltwo package.
% Values that correspond to the default behavior of the package are
% marked by an asterisk and need normally not to be specified.
% \smallskip
%
% {\small\noindent
% \begin{tabularx}{\linewidth}{ll>{\raggedright}X}
% key & values & see section\dots \tabularnewline
% \hline
% \Lopt{italics}          &  |default|*, |handwriting|, |calligraphic|  & \ref{sec:textfonts} \tabularnewline
% \Lopt{lucidascale}      &  |true|, |false|*           & \ref{sec:scaling}     \tabularnewline
% \Lopt{lucidasmallscale} &  |true|, |false|*           & \ref{sec:scaling}     \tabularnewline
% \Lopt{onlymath}        &  |true|, |false|*           & \ref{sec:onlymath}    \tabularnewline
% \Lopt{math-style}       &  |tex|*, |iso|, |french|    & \ref{sec:upright}     \tabularnewline
% \Lopt{nofontinfo}       &  |true|, |false|*           & \ref{sec:warnings}    \tabularnewline
% \Lopt{romanfamily}      &  |bright|*, |bright-osf|, |fax|, |casual| & \ref{sec:textfonts}   \tabularnewline
% \Lopt{scale}            &  \meta{factor}             & \ref{sec:scaling}     \tabularnewline
% \Lopt{seriftt}          &  |true|, |false|*           & \ref{sec:textfonts}   \tabularnewline
% \Lopt{stdmathdigits}    &  |true|, |false|*           & \ref{sec:mathdigits} \tabularnewline
% \Lopt{stdmathitalics}   &  |true|, |false|*           & \ref{sec:mathitalics} \tabularnewline
% \end{tabularx}
% \par\smallskip}
% 
%
%
% \section{Migrating from \Lpack{lucidabr} v4.2 to \ltwo}
% Almost all documented features of the packages \Lpack{lucidabr} and \Lpack{lucbmath}
% (version 4.2)
% are available with \ltwo, too.  Exceptions affect mainly the facilities to choose
% between italic and upright letters in math mode, i.e., the former package options
% \Lopt{mathitalics3}, \Lopt{slantedgreek}, \Lopt{uprightgreek} and \Lopt{vargreek}:
% A completely different behavior has been implemented now, which is---to our opinion---much
% more useful and complies with de-facto standards implemented already in other packages;
% see section \ref{sec:upright}.
% 
% Most other options are still available through the key-value syntax; 
% a few are no longer needed:
% \begin{description}
% \item[\Lopt{expert}, \Lopt{noexpert}:]  
%   These options don't exist any more, since the Lucida fonts are always distributed
%   as a whole now.
% \item[\Lopt{nolucidascale}, \Lopt{lucidascale}, \Lopt{lucidasmallscale}:]
%   The latter two options exist still (see section~\ref{sec:scaling}), but the {\bfseries default}
%   behavior is now {\bfseries not to apply any scaling.}  
% \item[\Lopt{mathitalic1}, \Lopt{mathitalic2}:]  The former option corresponds to
%   the default behavior, the latter corresponds to |stdmathitalics=true|.
% \item[\Lopt{OT1}, \Lopt{T1}, \Lopt{LY1}:]  These options are no longer needed;
%   \ltwo works with any of OT1, T1 or LY1 and will auto-detect the
%   encoding that is in use when package is loaded.
% \item[\Lopt{seriftt}:]  See section~\ref{sec:textfonts}.
% \item[\Lopt{fax}, \Lopt{casual}:]  Use the corresponding values of the option
%   \Lopt{romanfamily} instead.
% \item[\Lopt{handwriting}, \Lopt{calligraphic}:] Use the corresponding values of the option
%   \Lopt{italics} instead.
% \item[\Lopt{noamssymbols}:]  The option is no longer provided, because contemporary \TeX\ systems
%   have sufficient memory.
% \item[\Lopt{errorshow}, \Lopt{warningshow}, \Lopt{nofontinfo}:]  \ltwo provides only 
%   the latter option.  
%   Finer control over font-related infos and warnings can be achieved by loading
%   the package \Lpack{tracefnt} after \ltwo.
% \item[\Lopt{altbullet}:] The option is no longer provided.  Instead of patching the
%   font definitions, redefine \cmd{\labelitemi} appropriately, if you don't like the
%   shape of the default item label \cmd{\textbullet}.
% \end{description} 
% 
%
% \StopEventually{%
% \begin{thebibliography}{9}
%   \raggedright
%   \bibitem{tlc2} 
%     Frank Mittelbach and Michel Goosens: \textit{The LaTeX Companion}.\\
%     Addison Wesley, 2nd ed., 2004.
% \end{thebibliography}
% \par\vfill
% }
%
%
% \section{The implementation of the macro package \ltwo}
% The package code is, to some extent, based on \Lpack{lucidabr}~v4.2,
% written by Sebastian Rahtz and David Carlisle, distributed under the 
% \LaTeX\ Project Public License (LPPL).
% 
% 
%
% \subsection{Options}
% We require the \Lpack{keyval} package, so that options can be specified
% using a key-value syntax:
%    \begin{macrocode}
%<*package>
\RequirePackage{keyval}
%    \end{macrocode}
% Additional tools to declare and evaluate options,
% partially `stolen' from \Lpack{hyperref}. (Thank you, Heiko!)
%    \begin{macrocode}
\def\Lbt@boolkey{\@dblarg\Lbt@@boolkey}
\def\Lbt@true{true}
\def\Lbt@false{false}
\def\Lbt@@boolkey[#1]#2#3{%
  \lowercase{\def\Lbt@tempa{#3}}%
  \ifx\Lbt@tempa\@empty
    \let\Lbt@tempa\Lbt@true
  \fi
  \ifx\Lbt@tempa\Lbt@true
  \else
    \ifx\Lbt@tempa\Lbt@false
    \else
      \let\Lbt@tempa\relax
    \fi
  \fi
  \ifx\Lbt@tempa\relax
    \Lbt@WarnOptionValue{#3}{#1}{`true' or 'false'}%
  \else
    \csname Lbt@#2\Lbt@tempa\endcsname
  \fi
}
\def\Lbt@WarnOptionValue#1#2#3{%
  \PackageWarningNoLine{lucimatx}{%
    Unexpected value `#1'\MessageBreak
    of option `#2' instead of\MessageBreak
    #3%
  }
}
%    \end{macrocode}
% 
% Now lets's declare the keys and the variables to store the values.
%
% These are for \Lopt{scale}, \Lopt{lucidascale}, \Lopt{lucidasmallscale}:
%    \begin{macrocode}
\let\Lbt@scale\relax
\define@key{Lbt}{scale}[1.0]{%
  \def\Lbt@scale{#1}}
\newif\ifLbt@lucidascale\Lbt@lucidascalefalse
\newif\ifLbt@lucidasmallscale\Lbt@lucidasmallscalefalse
\define@key{Lbt}{lucidascale}[true]{%
  \Lbt@boolkey{lucidascale}{#1}}
\define@key{Lbt}{lucidasmallscale}[true]{%
  \Lbt@boolkey{lucidasmallscale}{#1}}
%    \end{macrocode}
%
%\Lopt{onlymath}:
%    \begin{macrocode}
\newif\ifLbt@onlymath\Lbt@onlymathfalse
\define@key{Lbt}{onlymath}[true]{%
  \Lbt@boolkey{onlymath}{#1}}
%    \end{macrocode}
%
% \Lopt{seriftt}:
%    \begin{macrocode}
\newif\ifLbt@seriftt\Lbt@serifttfalse
\define@key{Lbt}{seriftt}[true]{%
  \Lbt@boolkey{seriftt}{#1}}
%    \end{macrocode}
%
% \Lopt{stdmathitalics}:
%    \begin{macrocode}
\newif\ifLbt@stdmathitalics\Lbt@stdmathitalicsfalse
\define@key{Lbt}{stdmathitalics}[true]{%
  \Lbt@boolkey{stdmathitalics}{#1}}
%    \end{macrocode}
%
% \Lopt{romanfamily}:
%    \begin{macrocode}
\def\Lbt@rmfamily{bright}
\define@key{Lbt}{romanfamily}[bright]{%
  \def\Lbt@rmfamily{#1}}
%    \end{macrocode}
%
% \Lopt{italics}:
%    \begin{macrocode}
\def\Lbt@italics{default}
\define@key{Lbt}{italics}[default]{%
  \def\Lbt@italics{#1}}
%    \end{macrocode}
%
% \Lopt{math-style}:
%    \begin{macrocode}
\def\Lbt@style{tex}
\define@key{Lbt}{math-style}[tex]{%
  \def\Lbt@style{#1}}
%    \end{macrocode}
% 
% \Lopt{stdmathdigits}:
%    \begin{macrocode}
\newif\ifLbt@stdmathdigits\Lbt@stdmathdigitsfalse
\define@key{Lbt}{stdmathdigits}[true]{%
  \Lbt@boolkey{stdmathdigits}{#1}}
%    \end{macrocode}
% 
% \Lopt{nofontinfo}:
%    \begin{macrocode}
\newif\ifLbt@nofontinfo\Lbt@nofontinfofalse
\define@key{Lbt}{nofontinfo}[true]{%
  \Lbt@boolkey{nofontinfo}{#1}}
%    \end{macrocode}
%
% Evaluating the options:
%    \begin{macrocode}
\def\ProcessOptionsWithKV#1{%
  \let\@tempc\relax
  \let\Lbt@tempa\@empty
  \@for\CurrentOption:=\@classoptionslist\do{%
    \@ifundefined{KV@#1@\CurrentOption}%
    {}%
    {%
      \edef\Lbt@tempa{\Lbt@tempa,\CurrentOption,}%
      \@expandtwoargs\@removeelement\CurrentOption
        \@unusedoptionlist\@unusedoptionlist
    }%
  }%
  \edef\Lbt@tempa{%
    \noexpand\setkeys{#1}{%
      \Lbt@tempa\@ptionlist{\@currname.\@currext}%
    }%
  }%
  \Lbt@tempa
  \let\CurrentOption\@empty
}
\ProcessOptionsWithKV{Lbt}
\AtEndOfPackage{%
  \let\@unprocessedoptions\relax
}
%    \end{macrocode}
%
%
% \subsection{Scaling}
% \cmd{\DeclareLucidaFontShape} is defined according to the scaling required
% through the options:
%    \begin{macrocode}
\ifx\Lbt@scale\relax
  \def\DeclareLucidaFontShape#1#2#3#4#5#6{%
     \DeclareFontShape{#1}{#2}{#3}{#4}{<->#5}{#6}}
\else
  \edef\Lbt@@scale{s*[\csname Lbt@scale\endcsname]}%
  \def\DeclareLucidaFontShape#1#2#3#4#5#6{%
    \DeclareFontShape{#1}{#2}{#3}{#4}{<->\Lbt@@scale #5}{#6}}
  \PackageInfo{lucimatx}{Scaling Lucida fonts to \Lbt@scale}
\fi
%    \end{macrocode}
% The implementation of \Lopt{lucidascale} and \Lopt{lucidasmallscale} is
% adopted from the \Lpack{lucidabr} package.  The particular scaling values
% actually come from Frank Mittelbach:
%    \begin{macrocode}
\ifLbt@lucidascale
  \def\DeclareLucidaFontShape#1#2#3#4#5{%
    \DeclareFontShape{#1}{#2}{#3}{#4}{%
    <-5.5>s*[1.04]#5%
    <5.5-6.5>s*[1.02]#5%
    <6.5-7.5>s*[.99]#5%
    <7.5-8.5>s*[.97]#5%
    <8.5-9.5>s*[.96]#5%
    <9.5-10.5>s*[.95]#5%
    <10.5-11.5>s*[.94]#5%
    <11.5-13>s*[.93]#5%
    <13-15.5>s*[.92]#5%
    <15.5-18.5>s*[.91]#5%
    <18.5-22.5>s*[.9]#5%
    <22.5->s*[.89]#5}{}%
  }
  \PackageInfo{lucimatx}{Nonlinear scaling (`lucidascale')}
\fi
\ifLbt@lucidasmallscale
  \def\DeclareLucidaFontShape#1#2#3#4#5{%
    \DeclareFontShape{#1}{#2}{#3}{#4}{%
    <-5.5>s*[.98]#5%
    <5.5-6.5>s*[.96]#5%
    <6.5-7.5>s*[.94]#5%
    <7.5-8.5>s*[.92]#5%
    <8.5-9.5>s*[.91]#5%
    <9.5-10.5>s*[.9]#5%
    <10.5-11.5>s*[.89]#5%
    <11.5-13>s*[.88]#5%
    <13-15.5>s*[.87]#5%
    <15.5-18.5>s*[.86]#5%
    <18.5-22.5>s*[.85]#5%
    <22.5->s*[.84]#5}{}%
  }
  \PackageInfo{lucimatx}{Nonlinear scaling (`lucidasmallscale')}
\fi
%    \end{macrocode}
%
% 
% \subsection{Choice of text fonts}
% If the text fonts are not to be touched, we issue a message only:
%    \begin{macrocode}
\ifLbt@onlymath
  \PackageInfo{lucimatx}{Changing only the math fonts}
\else
%    \end{macrocode}
% Otherwise, set up the default font families, according to the options specified:
%    \begin{macrocode}
  \renewcommand{\sfdefault}{hls}
  \renewcommand{\ttdefault}{hlst}
  \def\@tempa{bright}
  \ifx\Lbt@rmfamily\@tempa
    \renewcommand{\rmdefault}{hlh}
  \else
  \def\@tempa{fax}
  \ifx\Lbt@rmfamily\@tempa
    \renewcommand{\rmdefault}{hlx}
  \else
  \def\@tempa{casual}
  \ifx\Lbt@rmfamily\@tempa
    \renewcommand{\rmdefault}{hlcn}
  \else
  \def\@tempa{bright-osf}
  \ifx\Lbt@rmfamily\@tempa
    \renewcommand{\rmdefault}{hlhj}
  \else
    \Lbt@WarnOptionValue{%
      \Lbt@rmfamily}{romanfamily}{`bright', `bright-osf', `fax' or `casual'}%
  \fi
  \fi
  \fi
  \fi
  \ifLbt@seriftt
    \renewcommand{\ttdefault}{hlct}
  \fi
%    \end{macrocode}
% If the encoding is still OT1, switch to T1 instead:
%    \begin{macrocode}
  \edef\operator@encoding{\encodingdefault}
  \def\@tempa{OT1}
  \ifx\operator@encoding\@tempa
%    \end{macrocode}
% Switch to T1 only after selecting a new |\rmdefault|,
% to avoid spurious loading of an EC font, which may not exist:
%    \begin{macrocode}
    \fontfamily{\rmdefault}\RequirePackage[T1]{fontenc}
    \RequirePackage{textcomp}
    \PackageInfo{lucimatx}{%
      Default font encoding changed to T1;\MessageBreak
      package `textcomp' loaded additionally} 
  \fi
%    \end{macrocode}
% Current \Lpack{textcomp} blocks \cmd{\oldstylenums} in family |hlh|, because
% OsF are not available in all shapes.  Fix this:
%    \begin{macrocode}
  \@ifpackageloaded{textcomp}{%  
      \ifx\DeclareEncodingSubset\@undefined
        \PackageWarningNoLine{lucimatx}{%
          Obsolete version of package textcomp found;\MessageBreak
          \string\oldstylenums\space may not work as expected}
      \else
        \DeclareEncodingSubset{TS1}{hlh}{1}
        \fi}{}
%    \end{macrocode}
% (Demi-)bold Lucida fonts are assigned the series |b|:
%    \begin{macrocode}
  \renewcommand{\bfdefault}{b}
%    \end{macrocode}
% If required, patch the font definitions of the roman font family
% and replace the default italics with the  Calligraphic or Handwriting font:
%    \begin{macrocode}
  \def\@tempa{default}
  \ifx\Lbt@italics\@tempa
  \else
  \def\@tempa{calligraphic}
  \ifx\Lbt@italics\@tempa
    \normalfont
    \DeclareFontShape\encodingdefault\rmdefault{m}{it}%
                                     {<->ssub*hlce/m/it}{}
    \PackageInfo{lucimatx}{Using Lucida Calligraphic for italics}
  \else
  \def\@tempa{handwriting}
  \ifx\Lbt@italics\@tempa
    \normalfont
    \DeclareFontShape\encodingdefault\rmdefault{m}{it}%
                                     {<->ssub*hlcw/m/it}{}%
    \PackageInfo{lucimatx}{Using Lucida Handwriting for italics}
  \else
    \Lbt@WarnOptionValue{%
      \Lbt@italics}{italics}{`default', `calligraphic' or `handwriting'}%
  \fi
  \fi
  \fi
\fi  
%    \end{macrocode}
%
%
% \subsection{Choice of math fonts}
% If required, use the `standard' math italics (which are assigned the shape |itx|).
% The shape is stored in the macro \cmd{\letters@shape}, which will be evaluated when
% the math symbol fonts are actually set up:
%    \begin{macrocode}
\ifLbt@stdmathitalics
  \def\letters@shape{itx}
\else
  \def\letters@shape{it}
\fi  
%    \end{macrocode}
% Declare three switches to indicate whether uc Greek, lc Greek and
% uc Latin are to be typeset upright, rather than slanted:
%    \begin{macrocode}
\newif\ifLbt@uprightGreek
\newif\ifLbt@uprightgreek
\newif\ifLbt@uprightLatin
%    \end{macrocode}
% Now set the above switches, according to the package options.
% They will be evaluated when the math symbols are declared:
%    \begin{macrocode}
\def\@tempa{tex}
\ifx\Lbt@style\@tempa
  \Lbt@uprightGreektrue
  \Lbt@uprightgreekfalse
  \Lbt@uprightLatinfalse
  \PackageInfo{lucimatx}{TeX math style}
\else
\def\@tempa{iso}
\ifx\Lbt@style\@tempa
  \Lbt@uprightGreekfalse
  \Lbt@uprightgreekfalse
  \Lbt@uprightLatinfalse
  \PackageInfo{lucimatx}{ISO math style}
\else
\def\@tempa{french}
\ifx\Lbt@style\@tempa
  \Lbt@uprightGreektrue
  \Lbt@uprightgreektrue
  \Lbt@uprightLatintrue
  \PackageInfo{lucimatx}{`French' math style}
\else
  \Lbt@WarnOptionValue{%
    \Lbt@style}{math-style}{`tex', `iso' or `french'}%
\fi
\fi
\fi
%    \end{macrocode}
%
%
% \subsection{Font info}
% This package makes a lot of redefinitions. The warnings can be rather
% annoying, so we make \LaTeX\ write both info and warning messages to the 
% log file only.  If the option \Lopt{nofontinfo} was selected,
% infos and warnings are entirely suppressed.
%    \begin{macrocode}
\ifLbt@nofontinfo
   \let\@font@info\@gobble
   \let\@font@warning\@gobble
\else
  \def\@font@info#1{%
        \GenericInfo{(Font)\@spaces\@spaces\@spaces\space\space}%
                    {LaTeX Font Info: \space\space\space#1}}%
  \def\@font@warning#1{%
        \GenericInfo{(Font)\@spaces\@spaces\@spaces\space\space}%
                    {LaTeX Font Warning: #1}}
\fi                    
%    \end{macrocode}
%
%  
% \subsection{Encoding of the `operators' font}
% We start with evaluating the encoding to be used for 
% operator names, \cmd{\mathrm}, \cmd{\mathsf} and \cmd{\mathtt}
% and store it in the macro \cmd{\operator@encoding}:
%    \begin{macrocode}
\edef\operator@encoding{\encodingdefault}
\def\@tempa{T1}
\ifx\operator@encoding\@tempa
\else
\def\@tempa{OT1}
\ifx\operator@encoding\@tempa
\else
\def\@tempa{LY1}
\ifx\operator@encoding\@tempa
\else
%    \end{macrocode}
% If the default encoding is not OT1, T1 or LY1, the package uses T1 for
% operator names etc.  Assuming that the roman font family exists with this
% encoding is rather safe, yet a warning is issued:
%    \begin{macrocode}
  \def\operator@encoding{T1}
  \PackageWarningNoLine{lucimatx}%
  {Using T1 encoding for the math `operators' font\MessageBreak
   regardless of the default text font encoding (\encodingdefault)}
\fi
\fi
\fi
%    \end{macrocode}
% 
% 
% \subsection{Math font definitions}
% Instead of relying on external fd files, the package declares
% the math font families internally.  Thus,  potential problems
% with obsolete fd files using Y\&Y-style font names are avoided:
% 
%    \begin{macrocode}
\DeclareFontEncoding{LMR}{}{}
\DeclareFontSubstitution{LMR}{hlcm}{m}{n}
%    \end{macrocode}
%    \begin{macrocode}
\DeclareFontFamily{OML}{hlcm}{\skewchar\font=127}
\DeclareLucidaFontShape{OML}{hlcm}{m}{n}{hlcrm}{} 
\DeclareLucidaFontShape{OML}{hlcm}{b}{n}{hlcdm}{}
\DeclareLucidaFontShape{OML}{hlcm}{m}{it}{hlcrima}{}
\DeclareLucidaFontShape{OML}{hlcm}{b}{it}{hlcdima}{}
\DeclareLucidaFontShape{OML}{hlcm}{m}{itx}{hlcrim}{}
\DeclareLucidaFontShape{OML}{hlcm}{b}{itx}{hlcdim}{}
%    \end{macrocode}
%    \begin{macrocode}
\DeclareFontFamily{OMS}{hlcy}{\skewchar\font=48}
\DeclareLucidaFontShape{OMS}{hlcy}{m}{n}{hlcry}{}
\DeclareLucidaFontShape{OMS}{hlcy}{b}{n}{hlcdy}{}
%    \end{macrocode}
%    \begin{macrocode}
\DeclareFontFamily{OMX}{hlcv}{}
\DeclareLucidaFontShape{OMX}{hlcv}{m}{n}{hlcrv}{}
%    \end{macrocode}
%    \begin{macrocode}
\DeclareFontFamily{LMR}{hlcm}{}
\DeclareLucidaFontShape{LMR}{hlcm}{m}{n}{hlcra}{}
\DeclareLucidaFontShape{LMR}{hlcm}{b}{n}{hlcda}{}
%    \end{macrocode}
%
%
% \subsection{Math font setup}
% Beside the standard symbol fonts and math alphabets, 
% two additional symbol fonts named `arrows' and `upright' will be declared.
% They hold the plethora of additional (AMS) symbols as well as the upright
% math alphabets.  
%    \begin{macrocode}
\DeclareSymbolFont{letters}{OML}{hlcm}{m}{\letters@shape}
\DeclareSymbolFont{upright}{OML}{hlcm}{m}{n}
\DeclareSymbolFont{symbols}{OMS}{hlcy}{m}{n}
\DeclareSymbolFont{largesymbols}{OMX}{hlcv}{m}{n}
\SetSymbolFont{letters}{bold}{OML}{hlcm}{b}{\letters@shape}
\SetSymbolFont{upright}{bold}{OML}{hlcm}{b}{n}
\SetSymbolFont{symbols}{bold}{OMS}{hlcy}{b}{n}
\DeclareSymbolFont{arrows}{LMR}{hlcm}{m}{n}
\SetSymbolFont{arrows}{bold}{LMR}{hlcm}{b}{n}
\DeclareSymbolFont{operators}{\operator@encoding}{\rmdefault}{m}{n}
\SetSymbolFont{operators}{bold}{\operator@encoding}{\rmdefault}{b}{n}
\DeclareMathAlphabet\mathbf  \operator@encoding{\rmdefault}{b}{n}
\DeclareMathAlphabet\mbf     {OML}{hlcm}{b}{n}
\DeclareMathAlphabet\mathrm  \operator@encoding{\rmdefault}{m}{n}
\DeclareMathAlphabet\mathsf  \operator@encoding{\sfdefault}{m}{n}
\DeclareMathAlphabet\mathit  \operator@encoding{\rmdefault}{m}{it}
\DeclareMathAlphabet\mathtt  \operator@encoding{\ttdefault}{m}{n}
\DeclareMathAlphabet\mathfrak\operator@encoding{hlcf}{m}{n}
\SetMathAlphabet{\mathsf}{bold}{\operator@encoding}{\sfdefault}{b}{n}
\SetMathAlphabet{\mathrm}{bold}{\operator@encoding}{\rmdefault}{b}{n}
\SetMathAlphabet{\mathit}{bold}{\operator@encoding}{\rmdefault}{b}{it}
\SetMathAlphabet{\mathtt}{bold}{\operator@encoding}{\ttdefault}{b}{n}
\DeclareSymbolFontAlphabet{\mathbb}{arrows}
\DeclareSymbolFontAlphabet{\mathcal}{symbols}
%    \end{macrocode}
%
%
% \subsection{Digits}
% Make digits come from the upright math font, if required:
%    \begin{macrocode}
\ifLbt@stdmathdigits
  \DeclareMathSymbol{0}\mathalpha{upright}{"30}
  \DeclareMathSymbol{1}\mathalpha{upright}{"31}
  \DeclareMathSymbol{2}\mathalpha{upright}{"32}
  \DeclareMathSymbol{3}\mathalpha{upright}{"33}
  \DeclareMathSymbol{4}\mathalpha{upright}{"34}
  \DeclareMathSymbol{5}\mathalpha{upright}{"35}
  \DeclareMathSymbol{6}\mathalpha{upright}{"36}
  \DeclareMathSymbol{7}\mathalpha{upright}{"37}
  \DeclareMathSymbol{8}\mathalpha{upright}{"38}
  \DeclareMathSymbol{9}\mathalpha{upright}{"39}
\fi
%    \end{macrocode}
%
%
% \subsection{Math accents}
% The definitions of the math accents must take the 
% \cmd{\operator@encoding} into account, which is no longer
% guaranteed to be OT1 (as with standard LaTeX).
%    \begin{macrocode}
\def\@tempa{T1}
\ifx\operator@encoding\@tempa
  \DeclareMathAccent{\acute}{\mathalpha}{operators}{1}
  \DeclareMathAccent{\grave}{\mathalpha}{operators}{0}
  \DeclareMathAccent{\ddot}{\mathalpha}{operators}{4}
  \DeclareMathAccent{\tilde}{\mathalpha}{operators}{3}
  \DeclareMathAccent{\bar}{\mathalpha}{operators}{9}
  \DeclareMathAccent{\breve}{\mathalpha}{operators}{8}
  \DeclareMathAccent{\check}{\mathalpha}{operators}{7}
  \DeclareMathAccent{\hat}{\mathalpha}{operators}{2}
  \DeclareMathAccent{\dot}{\mathalpha}{operators}{10}
  \DeclareMathAccent{\mathring}{\mathalpha}{operators}{6}
\else
\def\@tempa{OT1}
\ifx\operator@encoding\@tempa
  \DeclareMathAccent{\acute}{\mathalpha}{operators}{19}
  \DeclareMathAccent{\grave}{\mathalpha}{operators}{18}
  \DeclareMathAccent{\ddot}{\mathalpha}{operators}{127}
  \DeclareMathAccent{\tilde}{\mathalpha}{operators}{126}
  \DeclareMathAccent{\bar}{\mathalpha}{operators}{22}
  \DeclareMathAccent{\breve}{\mathalpha}{operators}{21}
  \DeclareMathAccent{\check}{\mathalpha}{operators}{20}
  \DeclareMathAccent{\hat}{\mathalpha}{operators}{94}
  \DeclareMathAccent{\dot}{\mathalpha}{operators}{95}
  \DeclareMathAccent{\mathring}{\mathalpha}{operators}{23}
\else % LY1
  \DeclareMathAccent{\acute}{\mathalpha}{operators}{19}
  \DeclareMathAccent{\grave}{\mathalpha}{operators}{18}
  \DeclareMathAccent{\ddot}{\mathalpha}{operators}{127}
  \DeclareMathAccent{\tilde}{\mathalpha}{operators}{126}
  \DeclareMathAccent{\bar}{\mathalpha}{operators}{22}
  \DeclareMathAccent{\breve}{\mathalpha}{operators}{21}
  \DeclareMathAccent{\check}{\mathalpha}{operators}{20}
  \DeclareMathAccent{\hat}{\mathalpha}{operators}{94}
  \DeclareMathAccent{\dot}{\mathalpha}{operators}{5}
  \DeclareMathAccent{\mathring}{\mathalpha}{operators}{23}
\fi\fi
%    \end{macrocode}
% Notice that \cmd{\mathring} has been added, which was forgotten
% in \Lpack{lucidabr} 4.2.
%
%
% \subsection{Uppercase Latin alphabet}
% Make uc Latin letters come from the upright font, if required.
% This can occur only with the option |math-style=french|.
%    \begin{macrocode}
\ifLbt@uprightLatin
  \DeclareMathSymbol{A}{\mathalpha}{upright}{`A}
  \DeclareMathSymbol{B}{\mathalpha}{upright}{`B}
  \DeclareMathSymbol{C}{\mathalpha}{upright}{`C}
  \DeclareMathSymbol{D}{\mathalpha}{upright}{`D}
  \DeclareMathSymbol{E}{\mathalpha}{upright}{`E}
  \DeclareMathSymbol{F}{\mathalpha}{upright}{`F}
  \DeclareMathSymbol{G}{\mathalpha}{upright}{`G}
  \DeclareMathSymbol{H}{\mathalpha}{upright}{`H}
  \DeclareMathSymbol{I}{\mathalpha}{upright}{`I}
  \DeclareMathSymbol{J}{\mathalpha}{upright}{`J}
  \DeclareMathSymbol{K}{\mathalpha}{upright}{`K}
  \DeclareMathSymbol{L}{\mathalpha}{upright}{`L}
  \DeclareMathSymbol{M}{\mathalpha}{upright}{`M}
  \DeclareMathSymbol{N}{\mathalpha}{upright}{`N}
  \DeclareMathSymbol{O}{\mathalpha}{upright}{`O}
  \DeclareMathSymbol{P}{\mathalpha}{upright}{`P}
  \DeclareMathSymbol{Q}{\mathalpha}{upright}{`Q}
  \DeclareMathSymbol{R}{\mathalpha}{upright}{`R}
  \DeclareMathSymbol{S}{\mathalpha}{upright}{`S}
  \DeclareMathSymbol{T}{\mathalpha}{upright}{`T}
  \DeclareMathSymbol{U}{\mathalpha}{upright}{`U}
  \DeclareMathSymbol{V}{\mathalpha}{upright}{`V}
  \DeclareMathSymbol{W}{\mathalpha}{upright}{`W}
  \DeclareMathSymbol{X}{\mathalpha}{upright}{`X}
  \DeclareMathSymbol{Y}{\mathalpha}{upright}{`Y}
  \DeclareMathSymbol{Z}{\mathalpha}{upright}{`Z}
\fi
%    \end{macrocode}
% Otherwise, stay with the default definitions from the \LaTeX\ kernel.
%
% \subsection{Uppercase Greek alphabet}
% Provide macros for upright letters.  These macro names comply with
% many other packages:
%    \begin{macrocode}
\DeclareMathSymbol{\upGamma}{\mathord}{upright}{0}
\DeclareMathSymbol{\upDelta}{\mathord}{upright}{1}
\DeclareMathSymbol{\upTheta}{\mathord}{upright}{2}
\DeclareMathSymbol{\upLambda}{\mathord}{upright}{3}
\DeclareMathSymbol{\upXi}{\mathord}{upright}{4}
\DeclareMathSymbol{\upPi}{\mathord}{upright}{5}
\DeclareMathSymbol{\upSigma}{\mathord}{upright}{6}
\DeclareMathSymbol{\upUpsilon}{\mathord}{upright}{7}
\DeclareMathSymbol{\upPhi}{\mathord}{upright}{8}
\DeclareMathSymbol{\upPsi}{\mathord}{upright}{9}
\DeclareMathSymbol{\upOmega}{\mathord}{upright}{10}
%    \end{macrocode}
% Now decide whether \cmd{\Gamma}, \cmd{\Delta} etc.\ are to print 
% upright or cursive letters:
%    \begin{macrocode}
\ifLbt@uprightGreek
  \let\Gamma\upGamma
  \let\Delta\upDelta
  \let\Theta\upTheta
  \let\Lambda\upLambda
  \let\Xi\upXi
  \let\Pi\upPi
  \let\Sigma\upSigma
  \let\Upsilon\upUpsilon
  \let\Phi\upPhi
  \let\Psi\upPsi
  \let\Omega\upOmega
\else
  \DeclareMathSymbol{\Gamma}{\mathord}{letters}{0}
  \DeclareMathSymbol{\Delta}{\mathord}{letters}{1}
  \DeclareMathSymbol{\Theta}{\mathord}{letters}{2}
  \DeclareMathSymbol{\Lambda}{\mathord}{letters}{3}
  \DeclareMathSymbol{\Xi}{\mathord}{letters}{4}
  \DeclareMathSymbol{\Pi}{\mathord}{letters}{5}
  \DeclareMathSymbol{\Sigma}{\mathord}{letters}{6}
  \DeclareMathSymbol{\Upsilon}{\mathord}{letters}{7}
  \DeclareMathSymbol{\Phi}{\mathord}{letters}{8}
  \DeclareMathSymbol{\Psi}{\mathord}{letters}{9}
  \DeclareMathSymbol{\Omega}{\mathord}{letters}{10}
\fi
%    \end{macrocode}
%
% \subsection{Lowercase Greek alphabet}
% Provide macros for upright letters.  These macro names comply with
% many other packages:
%    \begin{macrocode}
\DeclareMathSymbol{\upalpha}{\mathord}{upright}{11}
\DeclareMathSymbol{\upbeta}{\mathord}{upright}{12}
\DeclareMathSymbol{\upgamma}{\mathord}{upright}{13}
\DeclareMathSymbol{\updelta}{\mathord}{upright}{14}
\DeclareMathSymbol{\upepsilon}{\mathord}{upright}{15}
\DeclareMathSymbol{\upzeta}{\mathord}{upright}{16}
\DeclareMathSymbol{\upeta}{\mathord}{upright}{17}
\DeclareMathSymbol{\uptheta}{\mathord}{upright}{18}
\DeclareMathSymbol{\upiota}{\mathord}{upright}{19}
\DeclareMathSymbol{\upkappa}{\mathord}{upright}{20}
\DeclareMathSymbol{\uplambda}{\mathord}{upright}{21}
\DeclareMathSymbol{\upmu}{\mathord}{upright}{22}
\DeclareMathSymbol{\upnu}{\mathord}{upright}{23}
\DeclareMathSymbol{\upxi}{\mathord}{upright}{24}
\DeclareMathSymbol{\uppi}{\mathord}{upright}{25}
\DeclareMathSymbol{\uprho}{\mathord}{upright}{26}
\DeclareMathSymbol{\upsigma}{\mathord}{upright}{27}
\DeclareMathSymbol{\uptau}{\mathord}{upright}{28}
\DeclareMathSymbol{\upupsilon}{\mathord}{upright}{29}
\DeclareMathSymbol{\upphi}{\mathord}{upright}{30}
\DeclareMathSymbol{\upchi}{\mathord}{upright}{31}
\DeclareMathSymbol{\uppsi}{\mathord}{upright}{32}
\DeclareMathSymbol{\upomega}{\mathord}{upright}{33}
\DeclareMathSymbol{\upvarepsilon}{\mathord}{upright}{34}
\DeclareMathSymbol{\upvartheta}{\mathord}{upright}{35}
\DeclareMathSymbol{\upvarpi}{\mathord}{upright}{36}
\DeclareMathSymbol{\upvarrho}{\mathord}{upright}{37}
\DeclareMathSymbol{\upvarsigma}{\mathord}{upright}{38}
\DeclareMathSymbol{\upvarphi}{\mathord}{upright}{39}
%    \end{macrocode}
% With the `French' math style, \cmd{\alpha}, \cmd{\beta} etc.\ are to print 
% upright letters:
%    \begin{macrocode}
\ifLbt@uprightgreek
  \let\alpha\upalpha
  \let\beta\upbeta
  \let\gamma\upgamma
  \let\delta\updelta
  \let\epsilon\upepsilon
  \let\zeta\upzeta
  \let\eta\upeta
  \let\theta\upeta
  \let\iota\upiota
  \let\kappa\upkappa
  \let\lambda\uplambda
  \let\mu\upmu
  \let\nu\upnu
  \let\xi\upxi
  \let\pi\uppi
  \let\rho\uprho
  \let\sigma\upsigma
  \let\tau\uptau
  \let\upsilon\upupsilon
  \let\phi\upphi
  \let\chi\upchi
  \let\psi\uppsi
  \let\omega\upomega
  \let\varepsilon\upvarepsilon
  \let\vartheta\upvartheta
  \let\varpi\upvarpi
  \let\varrho\upvarrho
  \let\varsigma\upvarsigma
  \let\varphi\upvarphi
\fi
%    \end{macrocode}
% Otherwise we can stay with the default definitions 
% supplied by the \LaTeX\ kernel.
% 
%
%
% \subsection{Lucida-specific patches and additions}
% These symbols come normally from the `operators' font.
% \lnm provides them in the `letters' font, too.
% That's where we take them from, because the `operators' font
% may vary:
%    \begin{macrocode}
\DeclareMathDelimiter{[}{\mathopen} {letters}{134}{largesymbols}{2}
\DeclareMathDelimiter{]}{\mathclose}{letters}{135}{largesymbols}{3}
\DeclareMathDelimiter{(}{\mathopen} {letters}{132}{largesymbols}{0}
\DeclareMathDelimiter{)}{\mathclose}{letters}{133}{largesymbols}{1}
\DeclareMathDelimiter{/}{\mathord}{letters}{61}{largesymbols}{14}
\DeclareMathSymbol{=}{\mathrel} {symbols}{131}
\DeclareMathSymbol{+}{\mathbin} {symbols}{130}
%    \end{macrocode}
%
% The following stuff is adopted from \Lpack{lucidabr}.
% To close up gaps in special math characters constructed from pieces:
%    \begin{macrocode}
\def\joinrel{\mathrel{\mkern-4mu}}
%    \end{macrocode}
% Define some extra large sizes --- always done using extensible parts:
%    \begin{macrocode}
\def\bigggl{\mathopen\biggg}
\def\bigggr{\mathclose\biggg}
\def\Bigggl{\mathopen\Biggg}
\def\Bigggr{\mathclose\Biggg}
%    \end{macrocode}
% Make open face brackets accessible, i.e. [[ and ]]:
%    \begin{macrocode}
\DeclareMathDelimiter{\ldbrack}
  {\mathopen}{letters}{130}{largesymbols}{130}
\DeclareMathDelimiter{\rdbrack}
  {\mathclose}{letters}{131}{largesymbols}{131}
%    \end{macrocode}
% Provide access to surface integral signs
% (linked from text to display size):
%    \begin{macrocode}
\DeclareMathSymbol{\surfintop}{\mathop}{largesymbols}{144}
%    \end{macrocode}
% \Lpack{lucidabr} would also declare a number of `medium' size integrals, 
% which cannot change their size between text and display mode.
% % IMHO, they should not be used with \TeX, so I have omitted them;
% after all, they were never documented, anyway.
%
% Some characters that need construction in CM exist complete in \lnm:
%    \begin{macrocode}
\let\notin\undefined
\let\bowtie\undefined
\let\models\undefined
\let\cong\undefined
\let\angle\undefined
\DeclareMathSymbol{\notin}{\mathrel}{arrows}{29}
\DeclareMathSymbol{\bowtie}{\mathrel}{letters}{246}
\DeclareMathSymbol{\models}{\mathrel}{symbols}{238}
\DeclareMathSymbol{\cong}{\mathrel}{symbols}{155}
\DeclareMathSymbol{\angle}{\mathord}{symbols}{139}
\let\rightleftharpoons\undefined
\DeclareMathSymbol{\rightleftharpoons}{\mathrel}{arrows}{122}
\let\neq\undefined
\DeclareMathSymbol{\neq}{\mathrel}{arrows}{148}
%    \end{macrocode}
% These need undefining, too:
%    \begin{macrocode}
\let\sqsubset\undefined
\let\sqsupset\undefined
%    \end{macrocode}
% Adopted from \Lpack{lucidabr} (why?):
%    \begin{macrocode}
\def\mathstrut{\vphantom{f}}
%    \end{macrocode}
%
% Here are some extra definitions of mathematical symbols and operators.
% Let's start with those that were in \Lpack{lucidabr}, too:
%    \begin{macrocode}
\DeclareMathSymbol{\defineeq}{\mathrel}{symbols}{214}
\let\defineequal=\defineeq
\DeclareMathSymbol{\notequiv}{\mathrel}{arrows}{149}
\let\nequiv=\notequiv
\DeclareMathSymbol{\notapprox}{\mathrel}{arrows}{152}
\let\napprox=\notapprox
\DeclareMathSymbol{\notasymp}{\mathrel}{arrows}{243}
\let\nasymp=\notasymp
\DeclareMathSymbol{\notsubset}{\mathrel}{arrows}{198}
\let\nsubset=\notsubset
\DeclareMathSymbol{\notsupset}{\mathrel}{arrows}{199}
\let\nsupset=\notsupset
\DeclareMathSymbol{\notsubseteq}{\mathrel}{arrows}{200}
\let\nsubseteq=\notsubseteq
\DeclareMathSymbol{\notsupseteq}{\mathrel}{arrows}{201}
\let\nsupseteq=\notsupseteq
\DeclareMathSymbol{\notsimeq}{\mathrel}{arrows}{151}
\let\nsimeq=\notsimeq
\DeclareMathSymbol{\notsqsubseteq}{\mathrel}{arrows}{212}
\let\nsqsubseteq=\notsqsubseteq
\DeclareMathSymbol{\notsqsupseteq}{\mathrel}{arrows}{213}
\let\nsqsupseteq=\notsqsupseteq
\DeclareMathSymbol{\notcong}{\mathrel}{arrows}{153}
\let\ncong=\notcong
\DeclareMathSymbol{\notni}{\mathrel}{arrows}{31}
\DeclareMathSymbol{\leadsfrom}{\mathrel}{arrows}{141}
\let\leftsquigarrow\leadsfrom
\DeclareMathSymbol{\leftrightharpoons}{\mathrel}{arrows}{121}
% \DeclareMathSymbol{\arrowaxisright}{\mathord}{arrows}{55} % ?
% \DeclareMathSymbol{\arrowaxisleft}{\mathord}{arrows}{54} % ?
% \DeclareMathSymbol{\axisshort}{\mathord}{arrows}{45} % ?
\DeclareMathSymbol{\dashuparrow}{\mathord}{arrows}{57}
\DeclareMathSymbol{\dashdownarrow}{\mathord}{arrows}{59}
\DeclareMathSymbol{\image}{\mathrel}{letters}{198}
\DeclareMathSymbol{\original}{\mathrel}{letters}{197}
%    \end{macrocode}
%
% The following symbols were not available in \Lpack{lucidabr}:
%    \begin{macrocode}
\DeclareRobustCommand{\longoriginal}{%
  \mathrel\circ\mkern-.07mu\relbar\relbar\mkern-.07mu\mathrel\bullet}
\DeclareRobustCommand{\longimage}{%
  \mathrel\bullet\mkern-.07mu\relbar\relbar\mkern-.07mu\mathrel\circ}
%    \end{macrocode}
% The 0.07\,em were found by trial and error; without these, tiny
% gaps would remain between the shaft and the bullet or circle.  (Why?)
%    \begin{macrocode}
\DeclareMathSymbol{\updownarrows}{\mathrel}{arrows}{111}
\DeclareMathSymbol{\downuparrows}{\mathrel}{arrows}{112}
\DeclareMathSymbol{\hateq}{\mathrel}{symbols}{210}
\DeclareMathSymbol{\coloneq}{\mathrel}{symbols}{205}
\DeclareMathSymbol{\eqcolon}{\mathrel}{symbols}{206}
%    \end{macrocode}
%
% The default \cmd{\Leftrightarrow} in \lnm is ugly.
% The \lnm fonts include also a longer one, which was already used by the \Lpack{lucidabr} package,
% even though its length does not match the one-directional arrows:
%    \begin{macrocode}
\let\Leftrightarrow\undefined
\DeclareMathSymbol{\Leftrightarrow}{\mathrel}{arrows}{97}
%    \end{macrocode}
%
%
% \subsection{AMS symbols}
% MSAM equivalents:
%    \begin{macrocode}
\DeclareMathSymbol{\boxdot}{\mathbin}{symbols}{237}
\DeclareMathSymbol{\boxplus}{\mathbin}{symbols}{234}
\DeclareMathSymbol{\boxtimes}{\mathbin}{symbols}{236}
\DeclareMathSymbol{\square}{\mathord}{arrows}{2}
\DeclareMathSymbol{\blacksquare}{\mathord}{arrows}{3}
\DeclareMathSymbol{\centerdot}{\mathbin}{arrows}{225}
\DeclareMathSymbol{\lozenge}{\mathord}{arrows}{8}
\DeclareMathSymbol{\blacklozenge}{\mathord}{arrows}{9}
\DeclareMathSymbol{\circlearrowright}{\mathrel}{arrows}{140}
\DeclareMathSymbol{\circlearrowleft}{\mathrel}{arrows}{139}
\DeclareMathSymbol{\rightleftharpoons}{\mathrel}{arrows}{122}
\DeclareMathSymbol{\leftrightharpoons}{\mathrel}{arrows}{121}
\DeclareMathSymbol{\boxminus}{\mathbin}{symbols}{235}
\DeclareMathSymbol{\Vdash}{\mathrel}{symbols}{240}
\DeclareMathSymbol{\Vvdash}{\mathrel}{letters}{211}
\DeclareMathSymbol{\vDash}{\mathrel}{symbols}{238}
\DeclareMathSymbol{\twoheadrightarrow}{\mathrel}{arrows}{37}
\DeclareMathSymbol{\twoheadleftarrow}{\mathrel}{arrows}{35}
\DeclareMathSymbol{\leftleftarrows}{\mathrel}{arrows}{113}
\DeclareMathSymbol{\rightrightarrows}{\mathrel}{arrows}{115}
\DeclareMathSymbol{\upuparrows}{\mathrel}{arrows}{114}
\DeclareMathSymbol{\downdownarrows}{\mathrel}{arrows}{116}
\DeclareMathSymbol{\upharpoonright}{\mathrel}{arrows}{117}
\DeclareMathSymbol{\downharpoonright}{\mathrel}{arrows}{119}
\DeclareMathSymbol{\upharpoonleft}{\mathrel}{arrows}{118}
\DeclareMathSymbol{\downharpoonleft}{\mathrel}{arrows}{120}
\DeclareMathSymbol{\rightarrowtail}{\mathrel}{arrows}{41}
\DeclareMathSymbol{\leftarrowtail}{\mathrel}{arrows}{40}
\DeclareMathSymbol{\leftrightarrows}{\mathrel}{arrows}{110}
\DeclareMathSymbol{\rightleftarrows}{\mathrel}{arrows}{109}
\DeclareMathSymbol{\Lsh}{\mathrel}{arrows}{123}
\DeclareMathSymbol{\Rsh}{\mathrel}{arrows}{125}
\DeclareMathSymbol{\rightsquigarrow}{\mathrel}{arrows}{142}
\DeclareMathSymbol{\leftrightsquigarrow}{\mathrel}{arrows}{145}
\DeclareMathSymbol{\looparrowleft}{\mathrel}{arrows}{63}
\DeclareMathSymbol{\looparrowright}{\mathrel}{arrows}{64}
\DeclareMathSymbol{\circeq}{\mathrel}{symbols}{208}
\DeclareMathSymbol{\succsim}{\mathrel}{symbols}{225}
\DeclareMathSymbol{\gtrsim}{\mathrel}{symbols}{221}
\DeclareMathSymbol{\gtrapprox}{\mathrel}{letters}{219}
\DeclareMathSymbol{\multimap}{\mathrel}{letters}{199}
\DeclareMathSymbol{\therefore}{\mathrel}{symbols}{144}
\DeclareMathSymbol{\because}{\mathrel}{symbols}{145}
\DeclareMathSymbol{\doteqdot}{\mathrel}{symbols}{202}
\DeclareMathSymbol{\triangleq}{\mathrel}{symbols}{213}
\DeclareMathSymbol{\precsim}{\mathrel}{symbols}{224}
\DeclareMathSymbol{\lesssim}{\mathrel}{symbols}{220}
\DeclareMathSymbol{\lessapprox}{\mathrel}{letters}{218}
\DeclareMathSymbol{\eqslantless}{\mathrel}{letters}{226}
\DeclareMathSymbol{\eqslantgtr}{\mathrel}{letters}{227}
\DeclareMathSymbol{\curlyeqprec}{\mathrel}{letters}{230}
\DeclareMathSymbol{\curlyeqsucc}{\mathrel}{letters}{231}
\DeclareMathSymbol{\preccurlyeq}{\mathrel}{letters}{228}
\DeclareMathSymbol{\leqq}{\mathrel}{symbols}{218}
\DeclareMathSymbol{\leqslant}{\mathrel}{letters}{224}
\DeclareMathSymbol{\lessgtr}{\mathrel}{symbols}{222}
\DeclareMathSymbol{\backprime}{\mathord}{letters}{200}
\DeclareMathSymbol{\risingdotseq}{\mathrel}{symbols}{204}
\DeclareMathSymbol{\fallingdotseq}{\mathrel}{symbols}{203}
\DeclareMathSymbol{\succcurlyeq}{\mathrel}{letters}{229}
\DeclareMathSymbol{\geqq}{\mathrel}{symbols}{219}
\DeclareMathSymbol{\geqslant}{\mathrel}{letters}{225}
\DeclareMathSymbol{\gtrless}{\mathrel}{symbols}{223}
\DeclareMathSymbol{\sqsubset}{\mathrel}{symbols}{228}
\DeclareMathSymbol{\sqsupset}{\mathrel}{symbols}{229}
\DeclareMathSymbol{\vartriangleright}{\mathrel}{letters}{46}
\DeclareMathSymbol{\vartriangleleft}{\mathrel}{letters}{47}
\DeclareMathSymbol{\trianglerighteq}{\mathrel}{symbols}{245}
\DeclareMathSymbol{\trianglelefteq}{\mathrel}{symbols}{244}
\DeclareMathSymbol{\bigstar}{\mathord}{arrows}{171}
\DeclareMathSymbol{\between}{\mathrel}{letters}{242}
\DeclareMathSymbol{\blacktriangledown}{\mathord}{arrows}{7}
\DeclareMathSymbol{\blacktriangleright}{\mathrel}{letters}{241}
\DeclareMathSymbol{\blacktriangleleft}{\mathrel}{letters}{240}
\DeclareMathSymbol{\vartriangle}{\mathrel}{arrows}{4}
\DeclareMathSymbol{\blacktriangle}{\mathord}{arrows}{5}
\DeclareMathSymbol{\triangledown}{\mathord}{arrows}{6}
\DeclareMathSymbol{\eqcirc}{\mathrel}{symbols}{207}
\DeclareMathSymbol{\lesseqgtr}{\mathrel}{letters}{232}
\DeclareMathSymbol{\gtreqless}{\mathrel}{letters}{233}
\DeclareMathSymbol{\lesseqqgtr}{\mathrel}{letters}{234}
\DeclareMathSymbol{\gtreqqless}{\mathrel}{letters}{235}
\DeclareMathSymbol{\Rrightarrow}{\mathrel}{arrows}{108}
\DeclareMathSymbol{\Lleftarrow}{\mathrel}{arrows}{106}
\DeclareMathSymbol{\veebar}{\mathbin}{letters}{210}
\DeclareMathSymbol{\barwedge}{\mathbin}{symbols}{246}
\DeclareMathSymbol{\doublebarwedge}{\mathbin}{symbols}{212}
\DeclareMathSymbol{\angle}{\mathord}{symbols}{139}
\DeclareMathSymbol{\measuredangle}{\mathord}{symbols}{140}
\DeclareMathSymbol{\sphericalangle}{\mathord}{symbols}{141}
\DeclareMathSymbol{\varpropto}{\mathrel}{symbols}{47} 
\DeclareMathSymbol{\smallsmile}{\mathrel}{letters}{94} % ?
\DeclareMathSymbol{\smallfrown}{\mathrel}{letters}{95} % ?
\DeclareMathSymbol{\Subset}{\mathrel}{symbols}{248}
\DeclareMathSymbol{\Supset}{\mathrel}{symbols}{249}
\DeclareMathSymbol{\Cup}{\mathbin}{symbols}{250}
\DeclareMathSymbol{\Cap}{\mathbin}{symbols}{251}
\DeclareMathSymbol{\curlywedge}{\mathbin}{symbols}{132}
\DeclareMathSymbol{\curlyvee}{\mathbin}{symbols}{133}
\DeclareMathSymbol{\leftthreetimes}{\mathbin}{letters}{208}
\DeclareMathSymbol{\rightthreetimes}{\mathbin}{letters}{209}
\DeclareMathSymbol{\subseteqq}{\mathrel}{letters}{238}
\DeclareMathSymbol{\supseteqq}{\mathrel}{letters}{239}
\DeclareMathSymbol{\bumpeq}{\mathrel}{symbols}{200}
\DeclareMathSymbol{\Bumpeq}{\mathrel}{symbols}{199}
\DeclareMathSymbol{\lll}{\mathrel}{letters}{222}
\DeclareMathSymbol{\ggg}{\mathrel}{letters}{223}
\DeclareMathSymbol{\circledS}{\mathord}{letters}{202}
\DeclareMathSymbol{\pitchfork}{\mathrel}{letters}{243}
\DeclareMathSymbol{\dotplus}{\mathbin}{symbols}{137}
\DeclareMathSymbol{\backsim}{\mathrel}{letters}{248}
\DeclareMathSymbol{\backsimeq}{\mathrel}{letters}{249}
\DeclareMathSymbol{\complement}{\mathord}{letters}{148}
\DeclareMathSymbol{\intercal}{\mathbin}{letters}{217}
\DeclareMathSymbol{\circledcirc}{\mathbin}{symbols}{230}
\DeclareMathSymbol{\circledast}{\mathbin}{symbols}{231}
\DeclareMathSymbol{\circleddash}{\mathbin}{letters}{204}
\DeclareMathSymbol{\dashrightarrow}{\mathord}{arrows}{58}
\DeclareMathSymbol{\dashleftarrow}{\mathord}{arrows}{56}
\let\dasharrow\dashrightarrow
\DeclareMathDelimiter\ulcorner{\mathopen}{arrows}{91}{arrows}{91}
\DeclareMathDelimiter\urcorner{\mathclose}{arrows}{92}{arrows}{92}
\DeclareMathDelimiter\llcorner{\mathopen}{arrows}{93}{arrows}{93}
\DeclareMathDelimiter\lrcorner{\mathclose}{arrows}{94}{arrows}{94}
\edef\checkmark{\noexpand\mathhexbox{\hexnumber@\symarrows}AC}
\edef\circledR{\noexpand\mathhexbox{\hexnumber@\symletters}C9}
\edef\maltese{\noexpand\mathhexbox{\hexnumber@\symletters}CB}
%    \end{macrocode}
% NB:  \Lpack{lucidabr} 4.2 was lacking \cmd{\doublebarwedge}.
%
% MSBM equivalents:
%    \begin{macrocode}
\DeclareMathSymbol{\lvertneqq}{\mathrel}{arrows}{222}
\DeclareMathSymbol{\gvertneqq}{\mathrel}{arrows}{223}
\DeclareMathSymbol{\nleq}{\mathrel}{arrows}{156}
\DeclareMathSymbol{\ngeq}{\mathrel}{arrows}{157}
\DeclareMathSymbol{\nless}{\mathrel}{arrows}{154}
\DeclareMathSymbol{\ngtr}{\mathrel}{arrows}{155}
\DeclareMathSymbol{\nprec}{\mathrel}{arrows}{229}
\DeclareMathSymbol{\nsucc}{\mathrel}{arrows}{230}
\DeclareMathSymbol{\lneqq}{\mathrel}{arrows}{220}
\DeclareMathSymbol{\gneqq}{\mathrel}{arrows}{221}
\DeclareMathSymbol{\nleqslant}{\mathrel}{arrows}{214}
\DeclareMathSymbol{\ngeqslant}{\mathrel}{arrows}{215}
\DeclareMathSymbol{\lneq}{\mathrel}{arrows}{218}
\DeclareMathSymbol{\gneq}{\mathrel}{arrows}{219}
\DeclareMathSymbol{\npreceq}{\mathrel}{arrows}{231}
\DeclareMathSymbol{\nsucceq}{\mathrel}{arrows}{232}
\DeclareMathSymbol{\precnsim}{\mathrel}{arrows}{235}
\DeclareMathSymbol{\succnsim}{\mathrel}{arrows}{236}
\DeclareMathSymbol{\lnsim}{\mathrel}{arrows}{224}
\DeclareMathSymbol{\gnsim}{\mathrel}{arrows}{226}
\DeclareMathSymbol{\nleqq}{\mathrel}{arrows}{216}
\DeclareMathSymbol{\ngeqq}{\mathrel}{arrows}{217}
\DeclareMathSymbol{\precneqq}{\mathrel}{arrows}{233}
\DeclareMathSymbol{\succneqq}{\mathrel}{arrows}{234}
\DeclareMathSymbol{\precnapprox}{\mathrel}{arrows}{237}
\DeclareMathSymbol{\succnapprox}{\mathrel}{arrows}{238}
\DeclareMathSymbol{\lnapprox}{\mathrel}{arrows}{227}
\DeclareMathSymbol{\gnapprox}{\mathrel}{arrows}{228}
\DeclareMathSymbol{\nsim}{\mathrel}{arrows}{150}
\DeclareMathSymbol{\ncong}{\mathrel}{arrows}{153}
\DeclareMathSymbol{\diagup}{\mathrel}{arrows}{11}
\DeclareMathSymbol{\diagdown}{\mathrel}{arrows}{12}
\DeclareMathSymbol{\varsubsetneq}{\mathrel}{arrows}{208}
\DeclareMathSymbol{\varsupsetneq}{\mathrel}{arrows}{209}
\DeclareMathSymbol{\nsubseteqq}{\mathrel}{arrows}{202}
\DeclareMathSymbol{\nsupseteqq}{\mathrel}{arrows}{203}
\DeclareMathSymbol{\subsetneqq}{\mathrel}{arrows}{206}
\DeclareMathSymbol{\supsetneqq}{\mathrel}{arrows}{207}
\DeclareMathSymbol{\varsubsetneqq}{\mathrel}{arrows}{210}
\DeclareMathSymbol{\varsupsetneqq}{\mathrel}{arrows}{211}
\DeclareMathSymbol{\subsetneq}{\mathrel}{arrows}{204}
\DeclareMathSymbol{\supsetneq}{\mathrel}{arrows}{205}
\DeclareMathSymbol{\nsubseteq}{\mathrel}{arrows}{200}
\DeclareMathSymbol{\nsupseteq}{\mathrel}{arrows}{201}
\DeclareMathSymbol{\nparallel}{\mathrel}{arrows}{247}
\DeclareMathSymbol{\nmid}{\mathrel}{arrows}{246}
\DeclareMathSymbol{\nshortmid}{\mathrel}{arrows}{244}
\DeclareMathSymbol{\nshortparallel}{\mathrel}{arrows}{245}
\DeclareMathSymbol{\nvdash}{\mathrel}{arrows}{248}
\DeclareMathSymbol{\nVdash}{\mathrel}{arrows}{250}
\DeclareMathSymbol{\nvDash}{\mathrel}{arrows}{249}
\DeclareMathSymbol{\nVDash}{\mathrel}{arrows}{251}
\DeclareMathSymbol{\ntrianglerighteq}{\mathrel}{arrows}{242}
\DeclareMathSymbol{\ntrianglelefteq}{\mathrel}{arrows}{241}
\DeclareMathSymbol{\ntriangleleft}{\mathrel}{arrows}{239}
\DeclareMathSymbol{\ntriangleright}{\mathrel}{arrows}{240}
\DeclareMathSymbol{\nleftarrow}{\mathrel}{arrows}{50}
\DeclareMathSymbol{\nrightarrow}{\mathrel}{arrows}{51}
\DeclareMathSymbol{\nLeftarrow}{\mathrel}{arrows}{102}
\DeclareMathSymbol{\nRightarrow}{\mathrel}{arrows}{104}
\DeclareMathSymbol{\nLeftrightarrow}{\mathrel}{arrows}{103}
\DeclareMathSymbol{\nleftrightarrow}{\mathrel}{arrows}{52}
\DeclareMathSymbol{\divideontimes}{\mathbin}{letters}{247}
%    \end{macrocode}
% \cmd{\emptyset} and \cmd{\varnothing} have changed 
% their places, as compared with Computer Modern:
%    \begin{macrocode}
\DeclareMathSymbol{\emptyset}{\mathord}{letters}{156}
\DeclareMathSymbol{\varnothing}{\mathord}{symbols}{59}
%    \end{macrocode}
%    \begin{macrocode}
\DeclareMathSymbol{\nexists}{\mathord}{arrows}{32}
\DeclareMathSymbol{\Finv}{\mathord}{letters}{144}
\DeclareMathSymbol{\Game}{\mathord}{letters}{145}
\DeclareMathSymbol{\eth}{\mathord}{operators}{240}
\DeclareMathSymbol{\eqsim}{\mathrel}{symbols}{153}
\DeclareMathSymbol{\beth}{\mathord}{letters}{149}
\DeclareMathSymbol{\gimel}{\mathord}{letters}{150}
\DeclareMathSymbol{\daleth}{\mathord}{letters}{151}
\DeclareMathSymbol{\lessdot}{\mathrel}{letters}{220}
\DeclareMathSymbol{\gtrdot}{\mathrel}{letters}{221}
\DeclareMathSymbol{\ltimes}{\mathbin}{letters}{206}
\DeclareMathSymbol{\rtimes}{\mathbin}{letters}{207}
\DeclareMathSymbol{\shortmid}{\mathrel}{letters}{244}
\DeclareMathSymbol{\shortparallel}{\mathrel}{letters}{245}
\DeclareMathSymbol{\smallsetminus}{\mathbin}{letters}{216} %?
\DeclareMathSymbol{\thicksim}{\mathrel}{symbols}{24} %?
\DeclareMathSymbol{\thickapprox}{\mathrel}{symbols}{25} %?
\DeclareMathSymbol{\approxeq}{\mathrel}{symbols}{157}
\DeclareMathSymbol{\succapprox}{\mathrel}{letters}{237}
\DeclareMathSymbol{\precapprox}{\mathrel}{letters}{236}
\DeclareMathSymbol{\curvearrowleft}{\mathrel}{arrows}{135}
\DeclareMathSymbol{\curvearrowright}{\mathrel}{arrows}{136}
%\DeclareMathSymbol{\digamma}{\mathord}{letters}{70} %?
\DeclareMathSymbol{\varkappa}{\mathord}{letters}{155}
\DeclareMathSymbol{\Bbbk}{\mathord}{arrows}{107}
\DeclareMathSymbol{\hslash}{\mathord}{letters}{157}
\DeclareMathSymbol{\hbar}{\mathord}{arrows}{27}
\DeclareMathSymbol{\backepsilon}{\mathrel}{letters}{251} %?
%    \end{macrocode}
% Certain AMS symbols have aliases:
%    \begin{macrocode}
\let\restriction\upharpoonright
\let\Doteq\doteqdot
\let\doublecup\Cup
\let\doublecap\Cap
\let\llless\lll
\let\gggtr\ggg
\let\notsim\nsim
%    \end{macrocode}
% The lucida fonts are lacking a few AMS symbols.  Instead of
% letting them undefined, we make them result in useful
% error messages.
%    \begin{macrocode}
\newcommand{\digamma}{%
  \PackageError{lucimatx}{%
    The mathematical symbol \protect\digamma\space is not available\MessageBreak
    in the Lucida New Math fonts}%
    {Type <return> to proceed; the command will be ignored.}}
\newcommand{\mathyen}{%
  \PackageError{lucimatx}{%
    The mathematical symbol \yen\space is not available\MessageBreak
    in the Lucida New Math fonts}%
    {Type <return> to proceed; the command will be ignored.}}
\DeclareRobustCommand{\yen}{\ifmmode\mathyen\else\textyen\fi}
%    \end{macrocode}
%
%
% \subsection{Encoding-specific math commands}
% \cmd{\mathsterling} needs to be taken from the `operators' font,
% because it is not provided in the the \lnm fonts.
%    \begin{macrocode}
\edef\operator@encoding{\encodingdefault}
\def\@tempa{LY1}
\ifx\operator@encoding\@tempa
    \DeclareMathSymbol{\mathsterling}{\mathord}{operators}{163}
\else
\def\@tempa{T1}
\ifx\operator@encoding\@tempa
  \DeclareMathSymbol{\mathsterling}{\mathord}{operators}{191}
\fi
\fi
%    \end{macrocode}
%
%
% \subsection{\LaTeX\ symbols}
% So-called \LaTeX\ symbols are mapped to the most similar AMS symbol:
%    \begin{macrocode}
\let\leadsto\rightsquigarrow
\let\Join\bowtie
\let\Box\square
\let\Diamond\lozenge
\let\rhd\undefined
\let\lhd\undefined
\let\unlhd\undefined
\let\unrhd\undefined
\DeclareMathSymbol{\rhd}{\mathrel}{letters}{46}
\DeclareMathSymbol{\lhd}{\mathrel}{letters}{47}
\DeclareMathSymbol{\unlhd}{\mathrel}{symbols}{244}
\DeclareMathSymbol{\unrhd}{\mathrel}{symbols}{245}
%    \end{macrocode}
%
% \subsection{Deferred declarations}
% The following is deferred until |\begin{document}|:
%    \begin{macrocode}
\AtBeginDocument{%
%    \end{macrocode}
%
% Distinguish whether or not \Lpack{amsmath} is used, too:
%    \begin{macrocode}
\@ifpackageloaded{amsmath}{%
%    \end{macrocode}
% Adopted from \Lpack{lucidabr}~4.2:
%    \begin{macrocode}
  \def\biggg{\bBigg@\thr@@}
  \def\Biggg{\bBigg@{3.5}}
%    \end{macrocode}
% From David Carlisle's reply to psnfss/2437:
%    \begin{macrocode}
  \def\rightarrowfill@#1{%
    \m@th\setboxz@h{$#1\relbar$}\ht\z@\z@
    $#1\mkern4.5mu\mathrel{\copy\z@}%
    \kern-\wd\z@
    \cleaders\hbox{$#1\mkern-2mu\box\z@\mkern-2mu$}\hfill%
    \mkern-4.5mu %
    \rightarrow$}%
  \def\leftarrowfill@#1{%
    \m@th\setboxz@h{$#1\relbar$}\ht\z@\z@
    $#1\leftarrow
    \mkern-4.5mu %
    \cleaders\hbox{$#1\mkern-2mu\copy\z@\mkern-2mu$}\hfill
    \kern-\wd\z@
    \mathrel{\box\z@}\mkern4.5mu$}
  \def\leftrightarrowfill@#1{\m@th\setboxz@h{$#1\relbar$}\ht\z@\z@
    $#1\leftarrow
    \mkern-12mu %
    \cleaders\hbox{$#1\mkern-2mu\box\z@\mkern-2mu$}\hfill
    \rightarrow$}%
%    \end{macrocode}
% The definition of \cmd{\surfint} must work together with
% the facilities provided by \Lpack{amsmath} to control
% the placement of limits and dots:
%    \begin{macrocode}
\def\surfint{\DOTSI\surfintop\ilimits@}
%    \end{macrocode}
% The spacing of the multiple integrals provided by \Lpack{amsmath} should
% match the ready-made \cmd{\surfint}:
%    \begin{macrocode}
\def\intkern@{\mkern-7.4mu\mathchoice{\mkern-.6mu}{}{}{}}
%    \end{macrocode}
% Also, placement of limits on multiple integrals must be corrected wrt/ Lucida:
%    \begin{macrocode}
\def\ints@b{\mathop\bgroup\let\ilimits@\egroup}%
%    \end{macrocode}
% Here comes the code to be used \emph{without} \Lpack{amsmath}.  
% The definitions of \cmd{\big} \& friends are adopted from \Lpack{lucidabr}.
% Actually, they stem from Berthold Horn's \path{lcdlatex.tex} 
% \textcopyright\ 1991 -- 1994 Y\&Y.
%    \begin{macrocode}
}{%
  \def\big#1{{\hbox{$\left#1\vbox to8.20\p@{}\right.\n@space$}}}
  \def\Big#1{{\hbox{$\left#1\vbox to10.80\p@{}\right.\n@space$}}}
  \def\bigg#1{{\hbox{$\left#1\vbox to13.42\p@{}\right.\n@space$}}}
  \def\Bigg#1{{\hbox{$\left#1\vbox to16.03\p@{}\right.\n@space$}}}
  \def\biggg#1{{\hbox{$\left#1\vbox to17.72\p@{}\right.\n@space$}}}
  \def\Biggg#1{{\hbox{$\left#1\vbox to21.25\p@{}\right.\n@space$}}}
  \def\n@space{\nulldelimiterspace\z@ \m@th}
%    \end{macrocode}
% Without \Lpack{amsmath}, the surface integral can be  declared `as usual':
%    \begin{macrocode}
\def\surfint{\surfintop\nolimits}
%    \end{macrocode}
%    \begin{macrocode}
}
%    \end{macrocode}
%
% \Lpack{chemarr} is an extension to \Lpack{amsmath}.
% Its commands for extensible arrows must be adapted to Lucida.
% The value of 6.1\,mu was found by trial and error.
%    \begin{macrocode}
\@ifpackageloaded{chemarr}{%
  \def\rightharpoonupfill@#1{%
    \m@th\setboxz@h{$#1\relbar$}\ht\z@\z@
    $#1\mkern6.1mu\mathrel{\copy\z@}%
    \kern-\wd\z@
    \cleaders\hbox{$#1\mkern-2mu\box\z@\mkern-2mu$}\hfill%
    \mkern-6.1mu %
    \rightharpoonup$}%
  \def\leftharpoondownfill@#1{%
    \m@th\setboxz@h{$#1\relbar$}\ht\z@\z@
    $#1\leftharpoondown
    \mkern-6.1mu %
    \cleaders\hbox{$#1\mkern-2mu\copy\z@\mkern-2mu$}\hfill
    \kern-\wd\z@
    \mathrel{\box\z@}\mkern6.1mu$}
}{}
%    \end{macrocode}
%
% In n-th root, don't want the `n' to come too close to the radical.
% (Adopted from \Lpack{lucidabr}~4.2).
% Here, too, we must make sure that a different definition possibly 
% issued by \Lpack{amsmath} is overwritten again:
%    \begin{macrocode}
\def\r@@t#1#2{\setbox\z@\hbox{$\m@th#1\sqrt{#2}$}%
  \dimen@\ht\z@ \advance\dimen@-\dp\z@
  \mkern5mu\raise.6\dimen@\copy\rootbox \mkern-7.5mu\box\z@}
%    \end{macrocode}
%
% \Lpack{amsmath} provides its own definitions for the following
% symbols, which work for CM only.  Make sure that the Lucida-specific
% definitions are used in the end:
%    \begin{macrocode}
\DeclareMathSymbol{\relbar@}{\mathord}{arrows}{45}
\def\relbar{\mathrel{\smash\relbar@}\mathrel{\mkern-2.5mu}}
\DeclareMathSymbol{\Relbar@}{\mathrel}{arrows}{61}
\def\Relbar{\Relbar@\mathrel{\mkern-2.5mu}}
%    \end{macrocode}
% The |\mkern-2.5mu| undoes the bogus `italic correction'
% after joiners in LBMA.  (Adopted from \Lpack{lucidabr}~4.2.)
%    \begin{macrocode}
\let\hookleftarrow\undefined
\let\hookrightarrow\undefined
\let\mapsto\undefined
\let\doteq\undefined
\DeclareRobustCommand\longleftarrow{\leftarrow\relbar\mathrel{\mkern4mu}}
\DeclareRobustCommand\longrightarrow{\mathrel{\mkern4mu}\relbar\rightarrow}
\DeclareRobustCommand\Longleftarrow{\Leftarrow\Relbar\mathrel{\mkern4mu}}
\DeclareRobustCommand\Longrightarrow{\mathrel{\mkern4mu}\Relbar\Rightarrow}
\DeclareMathSymbol{\hookleftarrow}{\mathrel}{arrows}{60}
\DeclareMathSymbol{\hookrightarrow}{\mathrel}{arrows}{62}
\DeclareMathSymbol{\mapsto}{\mathrel}{arrows}{44}
\DeclareMathSymbol{\doteq}{\mathrel}{symbols}{201}
%    \end{macrocode}
% Ditto, because of \Lpack{latexsym} and \Lpack{wasysym}:
%    \begin{macrocode}
\let\mho\undefined
\DeclareMathSymbol{\mho}{\mathord}{letters}{146}
\let\lightning\undefined
\DeclareMathSymbol{\lightning}{\mathord}{arrows}{147}
%    \end{macrocode}
%    \begin{macrocode}
} % AtBeginDocument
%    \end{macrocode}
%
%
%    \begin{macrocode}
%</package>
%    \end{macrocode}
% 
% \Finale
