% \CheckSum{635}
% \iffalse
%
% File `eulervm.dtx'.
% Copyright (c) 1999--2005 Walter Schmidt
%
% This file is part of the `Euler-VM Bundle'.
% -------------------------------------------
%
% It may be distributed and/or modified under the conditions
% of the LaTeX Project Public License, either version 1.1
% of this license or (at your option) any later version.
% The latest version of this license is in
%   http://www.latex-project.org/lppl.txt
% and version 1.1 or later is part of all distributions of LaTeX
% version 1999/06/01 or later.
%
% The list of all files belonging to the `Euler-VM Bundle' is
% given in the file `manifest.txt'.
%
% \fi
%
% \iffalse
%<*driver>
\ProvidesFile{eulervm.dtx}
%</driver>
%
%<package>\ProvidesPackage{eulervm}
%<uzeur>\ProvidesFile{uzeur.fd}%
%<uzeus>\ProvidesFile{uzeus.fd}%
%<uzeuex>\ProvidesFile{uzeuex.fd}%
           [2005/01/11 v4.0 (WaS)]
%
%<*driver>
\documentclass{ltxdoc}    
\OnlyDescription
\usepackage{flafter}
\usepackage{caption}[2004/01/23]
\renewcommand{\rmdefault}{pplx}
\linespread{1.06}
\usepackage[euler-digits]{eulervm}
% *** We are using Palatino and Euler-VM at 10pt. ***
% ***   Do NOT change this through ltxdoc.cfg!    ***
\def\tempa{cmss}\ifx\sfdefault\tempa
  \usepackage[scaled]{helvet}
\fi  
\usepackage{url,mflogo}
\captionsetup{labelfont={small,bf},textfont={small}}
\DeclareMathAccent\eulerhat\mathalpha{symbols}{222}
\renewcommand{\TeX}{TeX\@}
\renewcommand{\LaTeX}{La\TeX}
\begin{document}
   \DocInput{eulervm.dtx}
\end{document}
%</driver>
% \fi
%
% \GetFileInfo{eulervm.dtx}
% \renewcommand{\labelitemi}{$\triangleright$}
% \newcommand\Lopt[1]{\textsf{#1}}
% \let\Lpack\Lopt
% \title{The Euler Virtual Math Fonts \\ for use with \LaTeX}
% \author{Walter Schmidt\thanks{\texttt{w-a-schmidt@gmx.net}}}
% \date{\fileversion{} -- \filedate}
%
% \maketitle
%
% \begin{abstract}\noindent
% The Euler math fonts are suitable for math typesetting in conjunction with a
% variety of popular text fonts which do not provide math character sets
% of their own.
% Euler-VM is a set of virtual math fonts based on Euler and CM, accompanied
% by a macro package for easy use with \LaTeX.
% \end{abstract}
% 
% \tableofcontents
% 
% 
%
% \section{The Euler math fonts}
% `With Donald Knuth's assistance and encouragement, Hermann Zapf, one of the
% premier font designers of this century, was commissioned to create designs
% for Fraktur and script, and for a somewhat experimental, upright cursive
% alphabet that would represent a mathematician's handwriting on a blackboard
% and that could be used in place of italic.  The designs that resulted were
% named Euler, in honor of Leonhard Euler, a prominent mathematician of the
% eighteenth century.  Zapf's designs were rendered in \MF{} code by graduate
% students at Stanford, working under Knuth's direction. [\dots]
% Knuth also noticed that the
% style of some symbols in the Computer Modern extension font, in particular
% the integral sign, was too slanted to be attractive with Euler, and
% consequently he prepared a new (partial) extension font for use with Euler.'
% \cite{amsfndoc}
%
% Knuth's book \textit{Concrete Mathematics} was typeset using
% the Concrete font family for text and the Euler fonts for math. 
% With \LaTeX, the particular math font setup of this book can be mimicked 
% by means of the package \Lpack{euler}, see \cite{euler}.
% In the meantime it became
% obvious that the Euler fonts match other text font families equally well.
%
% Unfortunately, the Euler fonts do not comprise all symbols required for 
% mathematical typesetting with \LaTeX. As a result, the \Lpack{euler} package
% needs to redefine most of \LaTeX's math font setup, so that certain
% symbols are taken from Euler, whereas others must still come from the
% CM math fonts.  
%
%
% \section{The Euler-VM fonts}
% Euler Virtual Math (Euler-VM)
% is a set of \emph{virtual} fonts based primarily on the Euler fonts.
% The missing symbols are taken from Computer Modern, and the encoding
% follows CM-Math as closely as possible.
% This approach has several advantages over immediately using the 
% \emph{real} Euler fonts, as practiced in the \Lpack{euler} package:
% Most noticeably, less \TeX{} resources are consumed,
% the quality of various math symbols is improved,
% and there will be far lesser compatibility problems with other packages.
% 
% Actually, the reason for creating Euler-VM was the fact that the
% \Lpack{euler} package does not provide a usable \cmd{\hbar} or 
% \cmd{\hslash}, and that the \cmd{\hslash} symbol from the
% \Lpack{amssymb} package cannot be used, either, because it follows CM Roman style.
% This made the beautiful Euler fonts more or less unusable for 
% physics and related fields.
% The only way to fix this was to provide a `faked' Euler-style \cmd{\hslash} 
% using the virtual font mechanism.
% As a side effect, it was possible to make the layout of the virtual fonts 
% compatible with CM Math to a large extent, and -- since the style file
% had to be rewritten anyway -- further improvements were introduced.
%
%
% \section{Suitable text font families}
% Beside the above-mentioned Concrete, the font families Palatino, Aldus 
% and Melior blend well with Euler -- which is not surprising, since they were
% designed by H.~Zapf, too.
% The Euler math fonts have also proven to go sufficiently well 
% with other typefaces such Sabon\footnote{the classical one, not Sabon Next -- unfortunately} 
% or Minion, that do not differ too much from Euler as far as the weight (stroke width) 
% and x-height are concerned.  
%
% Changing the default text font family is easy, see \cite{fntguide}.
% For instance, in the present document the command
% \begin{quote}
% |\renewcommand{\rmdefault}{pplx}|
% \end{quote}
% makes \LaTeX{} use Palatino in place of CM~Roman.
%
% Do \emph{not} use the Euler math fonts in conjunction
% with the default Computer Modern text fonts -- this is ugly!
%
%
% \section{The \LaTeX{} package \Lpack{eulervm}}
% 
% Loading the \Lpack{eulervm} package will redefine \LaTeX's 
% math font setup, so that the Euler-VM fonts and the default body font
% are substituted for CM Math and CM Roman.  Roughly said:
% \begin{itemize}
%   \item CM Math Italic is replaced with Euler Roman.
%   \item CM Calligraphic is replaced with Euler Script.
%   \item Several operator and delimiter symbols are replaced with
%         alternative variants matching the Euler style.
%   \item In numbers and operator names,
%         CM Roman is replaced with the default text font.
% \end{itemize}
% Figure \ref{fig:roman}  shows the Euler Roman and Script alphabets.
%
% \begin{figure}
% {\centering
% $ABCDEFGHIJKLMNOPQRSTUVWXYZ$\\
% $abcdefghijklmnopqrstuvwxyz$\\
% $\Gamma \Delta \Theta \Lambda \Xi \Pi \Sigma \Upsilon \Phi \Psi \Omega$\\
% $ \alpha \beta \gamma \delta \epsilon \varepsilon \zeta \eta \theta \vartheta \iota \kappa
% \lambda \mu \nu \xi \pi \varpi \rho   
% \sigma \tau \upsilon \phi \varphi \chi \psi \omega$\\
% $\mathcal{ABCDEFGHIJKLMNOPQRSTUVWXYZ}$\\}
% \caption{The Euler Roman and Script alphabets}
% \label{fig:roman}
% \end{figure}
%
%
% \subsection{Special features}
%
% \subsubsection{The package option \Lopt{small}}
% \label{sec:small}
% Loading the package with the option \Lopt{small} causes the
% Euler fonts to be loaded at 95\% of their nominal size,
% thus blending better with certain text font families, 
% for instance Aldus or Minion.  
% The option acts also on the AMS symbols and Euler Fraktur fonts,
% which can be used by means of the \Lpack{amssymb} and \Lpack{eufrak} packages;
% any further math fonts used in your document are, however,  
% unaffected.
%
%
% \subsubsection{Slashed \textit{h}}
% In contrast to `normal' \LaTeX, a \cmd{\hslash} symbol $\hslash$
% is provided, but there is no \cmd{\hbar}.
%
%
% \subsubsection{Bold math alphabet}
% The package defines a new math alphabet \cmd{\mathbold} to typeset
% math variables, incl.\ Greek, in a bold style:
% \begin{verse}
% Default: $a, b, c, \dots, z$ \qquad \cmd{\mathbold}: $\mathbold{a, b, c, }\dots,\mathbold{z}$
% \end{verse}
% Do not mix this up with \cmd{\mathbf}:  The latter will produce
% characters from the bold \emph{text} font, whereas \cmd{\mathbold}
% will use the bold series of the Euler math font.
%
%
% \subsubsection{Size of the `large' math symbols}
% The size of the `large' math symbols is automatically adjusted with respect
% to the base font size.  You need \emph{not} load the extra package
% \Lpack{exscale} for this purpose.
%
%
% \subsection{Text fonts in math}
%
% \subsubsection{Math alphabets}
% Function names as well as math accents are taken from the default text font family.
% This holds for the math alphabets \cmd{\mathrm} and \cmd{\mathbf}, too.
% The \Lpack{eulervm} package determines the default font family
% (i.e.,\ the meaning of the macro \cmd{\familydefault})
% at load time and will apply it for the above purposes then.
% In the same way, the math alphabets \cmd{\mathsf} and \cmd{\mathtt}
% are mapped to \cmd{\sfdefault} and \cmd{\ttdefault}.
% Thus, you should redefine the default text fonts \emph{before}
% loading the \Lpack{eulervm} package!
%
%
% \subsubsection{Numbers and punctuation in math mode}
% The normal behavior is to take the digits, the comma and the period
% from the default text font family.
% Popular text fonts may, however, not be suitable for typesetting math:  
% Maybe the numeral `1' cannot be distinguished 
% clearly enough from the letter `l', or the style of the numerals does
% not sufficiently suit the Euler letters, or you are using oldstyle digits.
% Furthermore, most text fonts are scaled linearly, so that the digits
% may become too thin when used in super- or subscripts.
%
% The \Lpack{eulervm} package provides the option \Lopt{euler-digits}, 
% which makes the digits, the comma and the period come from Euler Roman
% in math mode.  Note that the Euler fonts come with separate designs sizes
% of 10\,pt, 7\,pt and 5\,pt\,!
% The option should be used with care, because entering
% |$1.23$| will yield a different result than |1.23| then, 
% and you will in each case have to decide whether an input fragment 
% is a math or a non-math entity.  
% The samples on page~\pageref{sec:samples} show the Euler digits.
%
%
% \subsubsection{The `hat' accent for math}
% By default, the math accent |\hat| is taken from the text font 
% With the option \Lopt{euler-hat-accent},
% an alternative one from Euler Fraktur will be used.  Compare the
% default accent (in the present document from Palatino) with the
% alternative variant:
% \[
% \hat{u} \longleftrightarrow \eulerhat{u}
% \]
%
%
% \subsubsection{Encoding}
% The default text font encoding 
% (i.e.\ the meaning of the macro \cmd{\encodingdefault}) 
% is determined when \Lpack{eulervm} is loaded; this encoding 
% will then be applied to any text fonts used in math mode (see above.)
% The \Lpack{eulervm} package can, however, handle the encodings OT1 (\LaTeX's default),
% T1 and LY1 only.  If your preferred text font encoding is a different one,
% or if you want to override the default setting for one reason or another,
% you have to specify one of the above as a package option, e.g.:
% \begin{verse}
%  |\usepackage[OT1]{eulervm}|
% \end{verse}
% This makes the \Lpack{eulervm} package use the given encoding for the text
% fonts in math, without affecting text mode.
% Be sure that the text fonts are actually available with this encoding!
%
%
% \subsection{Using PostScript fonts}
% The CM as well as the Euler fonts 
% are available in both \MF\ and Type1 (PostScript) format. 
% The collection of Type1 fonts distributed by the AMS 
% (or in conjunction with VTeX, resp.) is, however, 
% lacking a few sizes.  In contrast to the \Lpack{euler} package,
% \Lpack{eulervm} does \emph{not} make use of these missing fonts;
% thus, you can create documents which do not require any bitmap fonts.
%
%
% \subsection{Options and command summary}
% \noindent Options of the \Lpack{eulervm} package:
% \begin{itemize}
% \item \Lopt{small}\quad Load the Euler fonts at 95\% of their nominal size.
% \item \Lopt{euler-digits}\quad Take numerals, comma and period from 
%   Euler Roman in math mode.
% \item \Lopt{euler-hat-accent}\quad Use the \cmd{\hat} accent from Euler Fraktur.
% \item \Lopt{OT1}\quad Use OT1 encoding for text fonts in math, regardless
%   of the default text font encoding.
% \item \Lopt{T1}\quad ditto, T1
% \item \Lopt{LY1}\quad ditto, LY1
% \end{itemize}
% New commands:
% \begin{itemize}
% \item \cmd{\mathbold}\quad A bold Euler-style math alphabet.
% \item \cmd{\hslash}\quad A slashed Euler-style h. 
% \end{itemize}
%
%
% \subsection{Known problems and deficiencies}
% \begin{itemize}
% \item Certain symbols in the bold math fonts are far from perfect.  
%   E.g., the bold equals sign of the Euler fonts 
%   is actually smaller than the regular one!  
% \item The dot-generating macros such as \cmd{\dots}, \cmd{vdots} etc.\ take
%   their dots from different fonts.  This results partially from a design flaw
%   in \LaTeX, which can be fixed by loading of the package \Lpack{mathdots};
%   yet, the macros \cmd{\cdot} and \cmd{\cdots} will always produce dots from the
%   Computer Modern Symbols font, which may not perfectly match the other dot
%   symbols used.
% \end{itemize}
%
%
% \section{Credits}
% Frank Jensen's \Lpack{euler} package \cite{euler} served as a model
% for parts of \Lpack{eulervm}.  The implementation
% of the \Lopt{OT1}, \Lopt{T1} and \Lopt{LY1} options was adopted
% from Frank Mittelbach's \Lpack{lucidabr} package \cite{lucidabr}.
% Special thanks to Henning `Hraban' Ramm for typographical and
% Frank Mittelbach for \TeX{}nical advice.
%
%
% \section{Sample Formulas}
% \label{sec:samples}
% \subsubsection*{From the \MF\ book, p.\,298}
% [...] If $n > 2$, the identity
% \[
%   t[u_1,\dots,u_n] = t\bigl[t[u_1,\dots,u_{n_1}], t[u_2,\dots,u_n]\bigr]
% \]
% defines $t[u_1,\dots,u_n]$ recursively, and it can be shown that the alternative definition
% \[
%   t[u_1,\dots,u_n] = t\bigl[t[u_1,u_2],\dots,t[u_{n-1},u_n]\bigr]
% \]
% gives the same result.  Indeed, we have
% \[
%   t[u_1,\dots,u_n] = \sum_{k=1}^n{{n-1} \choose {k-1}} (1-t)^{n-k}t^{k-1}u_k\,\mbox{,}
% \]
% a Bernstein polynomial of order $n-1$.
%
% \subsubsection*{From the \MF\ book, p.\,59}
% \[
%   \frac{x_1 + 20}{x_2 - 20} + \sqrt{a^2 - \frac{2}{3}\sqrt b}
% \]
%
% \subsubsection*{From the \TeX\ book, exercise 19.13}
% \[
% \int_{-\infty}^{+\infty} \mathrm{e}^{-x^2}\,\mathrm{d}x = \sqrt{\pi}
% \]
% 
%
% \StopEventually{
% \begin{thebibliography}{1}
%    \raggedright
%    \bibitem{amsfndoc}
%        American Mathematical Society:\\
%        \textit{User's Guide to AMSFonts Version 2.2}.\\
%        Jan.\ 1995.\\
%        CTAN: \path{fonts/amsfonts/doc/amsfndoc.ps}
%    \bibitem{concrete}
%        Ronald L.\ Graham, Donald E. Knuth, and
%        Oren Patashnik:\\
%        \textit{Concrete Mathematics}.\\
%        Addison-Wesley, 1989.
%    \bibitem{fntguide}
%        \LaTeX3 Project Team (Ed.):\\
%        \textit{LaTeX2e font selection.}
%        (Part of the \LaTeX{} online documentation.)
%    \bibitem{euler}
%        Frank Jensen:\\
%        \textit{The \Lpack{euler} package, v2.5}.\\
%        Mar.\ 1995.\\
%        CTAN: \path{macros/latex/contrib/euler/}
%    \bibitem{lucidabr}
%        Frank Mittelbach:\\
%        \textit{The \Lpack{lucidabr} package, v4.10}.\\
%        Jan.\ 1998.\\
%        CTAN: \path{macros/latex/contrib/psnfssx/lucidabr/}
% \end{thebibliography}
% }
%
% {\sloppy
% \section{The implementation of the \Lpack{eulervm} package}
%
% \subsection{Switching off font warnings}
% We suppress the annoying `warnings' about math fonts being redefined:
%    \begin{macrocode}
%<*package>
\let\evm@info\@font@info
\let\evm@warning\@font@warning
\let\@font@info\@gobble
\let\@font@warning\@gobble
%    \end{macrocode}
% 
% \subsection{Options}
% In addition to usual options processing we also have to memorize the 
% options via \cmd{\newif}'s in order to handle some cross-dependencies.
%
% The option \Lopt{small}.
% Note that only a fixed scaling of 0.95 is provided,
% for the time being.  This suits, for instance, the Aldus, 
% and Minion text fonts.
%    \begin{macrocode}
\DeclareOption{small}{%
  \def\zeu@Scale{.95}}
%    \end{macrocode}
%
% The option \Lopt{euler-digits}:
%    \begin{macrocode}
\newif\ifevm@ed
\DeclareOption{euler-digits}{%
  \evm@edtrue
  \DeclareMathSymbol{0}\mathalpha{letters}{"30}
  \DeclareMathSymbol{1}\mathalpha{letters}{"31}
  \DeclareMathSymbol{2}\mathalpha{letters}{"32}
  \DeclareMathSymbol{3}\mathalpha{letters}{"33}
  \DeclareMathSymbol{4}\mathalpha{letters}{"34}
  \DeclareMathSymbol{5}\mathalpha{letters}{"35}
  \DeclareMathSymbol{6}\mathalpha{letters}{"36}
  \DeclareMathSymbol{7}\mathalpha{letters}{"37}
  \DeclareMathSymbol{8}\mathalpha{letters}{"38}
  \DeclareMathSymbol{9}\mathalpha{letters}{"39}
}
%    \end{macrocode}
%
% The option \Lopt{euler-hat-accent}:
%    \begin{macrocode}
\newif\ifevm@eha
\DeclareOption{euler-hat-accent}{\evm@ehatrue}
%    \end{macrocode}
%
%  The text encoding for the `operators' font:
%    \begin{macrocode}
\edef\operator@encoding{\encodingdefault}
\DeclareOption{OT1}{\def\operator@encoding{OT1}}
\DeclareOption{T1}{\def\operator@encoding{T1}}
\DeclareOption{LY1}{\def\operator@encoding{LY1}}
%    \end{macrocode}
%
% The \Lopt{icomma} option is provided only for compatibility 
% with previous versions.
%    \begin{macrocode}
\newif\ifevm@ic
\DeclareOption{icomma}{\evm@ictrue}
%    \end{macrocode}
%
%
% \subsection{Math font setup}
% We redefine the `letters', `symbols' and `largesymbols'
% alphabets.
% The `operators' font will be redefined only after processing
% of the options.
%    \begin{macrocode}
\DeclareSymbolFont{letters}       {U}{zeur}{m}{n}
\SetSymbolFont{letters}{bold}     {U}{zeur}{b}{n}
\DeclareSymbolFont{symbols}       {U}{zeus}{m}{n}
\SetSymbolFont{symbols}{bold}     {U}{zeus}{b}{n}
\DeclareSymbolFont{largesymbols}  {U}{zeuex}{m}{n}
\DeclareMathAlphabet{\mathbold}   {U}{zeur}{b}{n}
%    \end{macrocode}
%
%
% \subsection{The `letters' math font}
%
% The uppercase Greek letters are to be taken from Euler Roman now:
%    \begin{macrocode}
\DeclareMathSymbol\Gamma    {\mathalpha}{letters}{"00}
\DeclareMathSymbol\Delta    {\mathalpha}{letters}{"01}
\DeclareMathSymbol\Theta    {\mathalpha}{letters}{"02}
\DeclareMathSymbol\Lambda   {\mathalpha}{letters}{"03}
\DeclareMathSymbol\Xi       {\mathalpha}{letters}{"04}
\DeclareMathSymbol\Pi       {\mathalpha}{letters}{"05}
\DeclareMathSymbol\Sigma    {\mathalpha}{letters}{"06}
\DeclareMathSymbol\Upsilon  {\mathalpha}{letters}{"07}
\DeclareMathSymbol\Phi      {\mathalpha}{letters}{"08}
\DeclareMathSymbol\Psi      {\mathalpha}{letters}{"09}
\DeclareMathSymbol\Omega    {\mathalpha}{letters}{"0A}
%    \end{macrocode}
% Lowercase Greek letters are made |\mathalpha|, too, because
% we want the |\mathbold| command to act on them:
%    \begin{macrocode}
\DeclareMathSymbol{\alpha}  {\mathalpha}{letters}{"0B}
\DeclareMathSymbol{\beta}   {\mathalpha}{letters}{"0C}
\DeclareMathSymbol{\gamma}  {\mathalpha}{letters}{"0D}
\DeclareMathSymbol{\delta}  {\mathalpha}{letters}{"0E}
\DeclareMathSymbol{\epsilon}{\mathalpha}{letters}{"0F}
\DeclareMathSymbol{\zeta}   {\mathalpha}{letters}{"10}
\DeclareMathSymbol{\eta}    {\mathalpha}{letters}{"11}
\DeclareMathSymbol{\theta}  {\mathalpha}{letters}{"12}
\DeclareMathSymbol{\iota}   {\mathalpha}{letters}{"13}
\DeclareMathSymbol{\kappa}  {\mathalpha}{letters}{"14}
\DeclareMathSymbol{\lambda} {\mathalpha}{letters}{"15}
\DeclareMathSymbol{\mu}     {\mathalpha}{letters}{"16}
\DeclareMathSymbol{\nu}     {\mathalpha}{letters}{"17}
\DeclareMathSymbol{\xi}     {\mathalpha}{letters}{"18}
\DeclareMathSymbol{\pi}     {\mathalpha}{letters}{"19}
\DeclareMathSymbol{\rho}    {\mathalpha}{letters}{"1A}
\DeclareMathSymbol{\sigma}  {\mathalpha}{letters}{"1B}
\DeclareMathSymbol{\tau}    {\mathalpha}{letters}{"1C}
\DeclareMathSymbol{\upsilon}{\mathalpha}{letters}{"1D}
\DeclareMathSymbol{\phi}    {\mathalpha}{letters}{"1E}
\DeclareMathSymbol{\chi}    {\mathalpha}{letters}{"1F}
\DeclareMathSymbol{\psi}    {\mathalpha}{letters}{"20}
\DeclareMathSymbol{\omega}  {\mathalpha}{letters}{"21}
\DeclareMathSymbol{\varepsilon}{\mathalpha}{letters}{"22}
\DeclareMathSymbol{\vartheta}{\mathalpha}{letters}{"23}
\DeclareMathSymbol{\varpi}  {\mathalpha}{letters}{"24}
\DeclareMathSymbol{\varphi} {\mathalpha}{letters}{"27}
%    \end{macrocode}
%
% {\sloppy
% When the upper-case  Greek letters are of  type |\mathalpha| 
% and do \emph{not} come from the operators font, |\mathrm{\Omega}| 
% yields garbage.
% This is likely to happen in conjunction with the packages 
% \Lpack{gensymb} and \Lpack{units}.  As a countermeasure, we provide
% a macro |\upOmega| with type |\mathord|.  The \Lpack{gensymb} package will
% automatically use this macro, rather than |\Omega|.  This is the only way 
% to make |\unit{\ohm}| work as expected.
% For the sake of full compatibility with other packages, a corresponding 
% |\upDelta| is made available, too.  
% }
%    \begin{macrocode}
\DeclareMathSymbol\upOmega  {\mathord}{letters}{"0A}
\DeclareMathSymbol\upDelta  {\mathord}{letters}{"01}
%    \end{macrocode}
%
% Euler doesn't have the special variants of |\sigma| and |\rho|:
%    \begin{macrocode}
\let\varsigma=\sigma
\let\varrho=\rho
%    \end{macrocode}
%
% Euler-VM has its own |\hslash|, but there is no |\hbar|:
%    \begin{macrocode}
\DeclareMathSymbol{\evm@hslash}{\mathord}{letters}{128}
\def\evm@hbar{\evm@hslash%
  \PackageWarning{eulervm}{%
    Symbol \protect\hbar\space not available;\MessageBreak
    \protect\hslash\space will be used instead}}
%    \end{macrocode}
% The actual macros \cmd{\hbar} and \cmd{\hslash} will be defined
% after the preamble.
%
% The slash used to come from `operators':
%    \begin{macrocode}
\DeclareMathDelimiter{/}{\mathord}{letters}{61}{largesymbols}{"0E}
%    \end{macrocode}
%
%
% \subsection{The `symbols' math font}
% The following characters are usually taken from the `operators'
% font; now they come from `symbols':
%    \begin{macrocode}
\DeclareMathSymbol{+}\mathbin  {symbols}{171}
\DeclareMathSymbol{:}\mathrel  {symbols}{186}
\DeclareMathSymbol{=}\mathrel  {symbols}{189}
%    \end{macrocode}
%    \begin{macrocode}
\DeclareMathDelimiter{(}{\mathopen} {symbols}{168}{largesymbols}{"00}
\DeclareMathDelimiter{)}{\mathclose}{symbols}{169}{largesymbols}{"01}
\DeclareMathDelimiter{[}{\mathopen} {symbols}{219}{largesymbols}{"02}
\DeclareMathDelimiter{]}{\mathclose}{symbols}{221}{largesymbols}{"03}
%    \end{macrocode}
%
% The font family \texttt{zeus} provides a semicolon in slot~187,
% an exclamation mark in slot~161, and a question mark in slot~191, too;
% for the time being these are unused.
%
%
% \subsection{Extensible arrows}
%
% The long arrows are made using the macros |\Relbar| (for double
% arrows) and |\relbar| (for single arrows).  The standard \LaTeX\
% definitions of these macros use the `\texttt{=}' and `\texttt{-}'
% characters to produce the extension part of the long arrows.  
% These characters come, however, from Euler Fraktur now.  Thus we
% have to redefine the |\Relbar| and |\relbar| macros so as to use
% appropriately scaled characters from CM, which are 
% provided in our virtual `letters' font. 
%    \begin{macrocode}
\DeclareMathSymbol{\cm@minus}{\mathord}{letters}{129}
\def\relbar{\mathrel{\smash\cm@minus}}
\let\Relbar\undefined          
\DeclareMathSymbol{\Relbar}{\mathrel}{letters}{130}
%    \end{macrocode}
% Unfortunately, since the definitions of the `arrow-filling' macros
% (|\leftarrowfill| and |\rightarrowfill|) in standard \LaTeX\ still
% use explicit minus signs (instead of |\relbar|), we also have to
% redefine those macros:
%    \begin{macrocode}
\def\leftarrowfill
   {$\m@th\mathord\leftarrow\mkern-6mu%
     \cleaders\hbox{$\mkern-2mu\cm@minus\mkern-2mu$}\hfill
     \mkern-6mu\cm@minus$}
\def\rightarrowfill
   {$\m@th\cm@minus\mkern-6mu%
     \cleaders\hbox{$\mkern-2mu\cm@minus\mkern-2mu$}\hfill
     \mkern-6mu\mathord\rightarrow$}
%    \end{macrocode}
%
%
% \subsection{Miscellaneous}
% Our virtual `largesymbols' font comprises \texttt{euex10}, which
% provides also the $\infty$ symbol.
%    \begin{macrocode}
\DeclareMathSymbol{\infty}{\mathord}{largesymbols}{153}
%    \end{macrocode}
%
% Knuth wanted a little extra space before the prime superscript:
%    \begin{macrocode}
\begingroup
   \catcode`\'=\active
   \gdef'{^\bgroup\mskip2mu\prim@s}
\endgroup
%    \end{macrocode}
%
%
% \subsection{Options procesing}
% This must be done before the `operators' font is defined.
%    \begin{macrocode}
\ProcessOptions\relax
%    \end{macrocode}
% We still have to map the comma and the period to the text font,
% in case the \Lopt{euler-digits} option has \emph{not} been selected:
%    \begin{macrocode}
\ifevm@ed\relax\else
  \DeclareMathSymbol{,}{\mathpunct}{operators}{44}
  \DeclareMathSymbol{.}{\mathord}{operators}{46}
  \DeclareMathSymbol{\ldotp}{\mathpunct}{operators}{46}
\fi  
%    \end{macrocode}
%
%
% \subsection{Text fonts in math}\label{text-fonts}
%
% The text fonts used in particular math alphabets and in the
% `operators' symbol font should be the same as the fonts used for the
% main text.  (It is now easy to replace the fonts for the `operators'
% symbol font, since the uppercase Greek letters are taken from
% the Euler Roman fonts.)
%
% In order to reduce the total number of fonts needed, we shall -- if
% possible -- use text fonts in the same encoding for both text and
% math.  We have already determined which encoding has been selected
% as the default encoding. 
%
% We redefine the `operators' symbol font and the math alphabets
% |\mathsf|, |\mathit| and |\mathtt|.  
% Due to the current implementation of math accents 
% which take their glyphs from text fonts, 
% all text fonts must be used in a common encoding.  
%    \begin{macrocode}
\DeclareSymbolFont{operators}{\operator@encoding}{\familydefault}{m}{n}
\SetSymbolFont{operators}{bold}{\operator@encoding}{\familydefault}{b}{n}
\SetSymbolFont{operators}{normal}{\operator@encoding}{\familydefault}{m}{n}
%    \end{macrocode}
%
%    \begin{macrocode}
% \DeclareSymbolFontAlphabet{\mathrm}              {operators}
% \DeclareSymbolFontAlphabet{\mathnormal}          {letters}
\DeclareMathAlphabet{\mathsf}  {\operator@encoding}{\sfdefault}{m}{n}
\DeclareMathAlphabet{\mathit}  {\operator@encoding}{\rmdefault}{m}{it}
\DeclareMathAlphabet{\mathtt}  {\operator@encoding}{\ttdefault}{m}{n}
\SetMathAlphabet{\mathsf}{bold}{\operator@encoding}{\sfdefault}{b}{n}
\SetMathAlphabet{\mathit}{bold}{\operator@encoding}{\rmdefault}{b}{it}
\SetMathAlphabet{\mathtt}{bold}{\operator@encoding}{\ttdefault}{b}{n}
\DeclareMathAlphabet\mathbf  \operator@encoding{\rmdefault}{b}{n}
%    \end{macrocode}
% Note that |\mathrm| and |\mathnormal| will automatically follow 
% the `operators' font.
%
% Before redefining the math accents with respect to the actual 
% encoding of the `operators' symbol font, they should be `undefined'.
% This is required for compatibility with older versions of the \Lpack{amsmath}
% package.
%    \begin{macrocode}
\let\acute\undefined
\let\grave\undefined
\let\ddot\undefined
\let\tilde\undefined
\let\bar\undefined
\let\breve\undefined
\let\check\undefined
\let\hat\undefined
\let\dot\undefined
%    \end{macrocode}
%
%    \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}
%    \end{macrocode}
%
%    \begin{macrocode}
\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}
%    \end{macrocode}
%
%    \begin{macrocode}
\else
\def\@tempa{LY1}
\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}{5}
%    \end{macrocode}
%
%    \begin{macrocode}
\else
  \PackageWarningNoLine{eulervm}
    {Unknown Operator Encoding!\MessageBreak
     Math accents may be wrong: assuming OT1 positions}
\fi\fi\fi
%    \end{macrocode}
% The \cmd{\hat} accent is normally taken from the `operators' symbol font.
% With the option \Lopt{euler-hat accent}, however, we take an alternative
% one from Euler Fraktur, which is provided in the `symbols' alphabet.
% The above definition must be overwritten then:
%    \begin{macrocode}
\ifevm@eha
  \DeclareMathAccent\hat\mathalpha{symbols}{222}
\fi
%    \end{macrocode}
%
% \subsection{An intelligent comma}
% \label{sec:icomma}
% An `intelligent' comma for use within decimal numbers,
% which was once posted by Donald Arseneau on the 
% \path{comp.text.tex} news group.    
% It does not work with arbitarily long numbers, so 
% it is no longer advertised, and I recommend to use the
% newer package \path{icomma.sty} instead.
%    \begin{macrocode}
\ifevm@ic
  \mathchardef\mathcomma\mathcode`\,
  \mathcode`\,="8000
  \catcode`,=\active
  \def,{\afterassignment\domathcomma\finalhyphendemerits=1}
  \def\domathcomma{\ifnum\finalhyphendemerits>1\mathord\fi
    \mathcomma
    \expandafter\@gobble\number\finalhyphendemerits}
  \catcode`\,=12
\fi
%    \end{macrocode}
%
% \subsection{Using extra AMS fonts} 
% Euler Fraktur and the AMS symbol fonts should be used with the same design sizes
% as the Euler-VM fonts, and should honor the \Lopt{small} option.
% We defer the font definitions until |\AtBeginDocument|, to ensure 
% against loading of \Lpack{eufrak} or \Lpack{ammssymb} with the \Lopt{psamsfonts} option.
%    \begin{macrocode}
\AtBeginDocument{%
  \begingroup
  \nfss@catcodes
  \expandafter\ifx\csname zeu@Scale\endcsname\relax   
    \let\zeu@@Scale\@empty                             
  \else                                               
    \edef\zeu@@Scale{s*[\csname zeu@Scale\endcsname]}% 
  \fi                                                 
  \DeclareFontFamily{U}{euf}{}
  \DeclareFontShape{U}{euf}{m}{n}{%
    <-6>\zeu@@Scale eufm5% 
    <6-9>\zeu@@Scale eufm7% 
    <9->\zeu@@Scale eufm10%
    }{}
  \DeclareFontShape{U}{euf}{b}{n}{%
    <-6>\zeu@@Scale eufb5%
    <6-9>\zeu@@Scale eufb7% 
    <9->\zeu@@Scale eufb10%
  }{}
  \DeclareFontFamily{U}{msa}{}%
  \DeclareFontShape{U}{msa}{m}{n}{%
    <-6>\zeu@@Scale msam5%
    <6-9>\zeu@@Scale msam7% 
    <9->\zeu@@Scale msam10%
  }{}%
  \DeclareFontFamily{U}{msb}{}%
  \DeclareFontShape{U}{msb}{m}{n}{%
    <-6>\zeu@@Scale msbm5%
    <6-9>\zeu@@Scale msbm7% 
    <9->\zeu@@Scale msbm10%
  }{}%
  \endgroup
}

%    \end{macrocode}
% \subsection{Peaceful coexistence with the AMS packages}
%
% We define \cmd{\hslash} and \cmd{\hbar} after the premable only,
% in order to protect them from being overwritten by \Lpack{amsfonts}:
%    \begin{macrocode}
\AtBeginDocument{
  \let\hslash\evm@hslash\let\hbar\evm@hbar
%    \end{macrocode}  
% When the \texttt{amsmath} package is loaded, the
% multiple integral signs must be fixed wrt.\ the Euler extension font, 
% and we have to take care of the macros \cmd{\relbar} and 
% \cmd{\Relbar}:
%    \begin{macrocode}
  \@ifpackageloaded{amsmath}{%
     \def\intkern@{\mkern -4mu }%
     \def\relbar{\mathrel{\smash\cm@minus}}
     \let\Relbar\undefined          
     \DeclareMathSymbol{\Relbar}{\mathrel}{letters}{130}
  }%        
%    \end{macrocode}
% Scaling of the math extension font requires the following patches 
% (see the description of the \Lpack{exscale} package), unless \Lpack{amsmath}
% is also loaded:
%    \begin{macrocode}
  {%
    \newdimen\big@size
    \addto@hook\every@math@size{\setbox\z@\vbox{\hbox{$($}\kern\z@}%
       \global\big@size 1.2\ht\z@}
    \def\bBigg@#1#2{%
       {\hbox{$\left#2\vcenter to#1\big@size{}\right.\n@space$}}}
    \def\big{\bBigg@\@ne}
    \def\Big{\bBigg@{1.5}}
    \def\bigg{\bBigg@\tw@}
    \def\Bigg{\bBigg@{2.5}}
  }
}  
%    \end{macrocode}
%
% \subsection{Restoring normal font warnings}
%    \begin{macrocode}
\let\@font@info\evm@info
\let\@font@warning\evm@warning
%</package>
%    \end{macrocode}
%
% \section{The font definition files}
%
% \subsection{Common code for scaling}
%    \begin{macrocode}
%<uzeur|uzeus|uzeuex> \expandafter\ifx\csname zeu@Scale\endcsname\relax
%<uzeur|uzeus|uzeuex>  \let\zeu@@Scale\@empty
%<uzeur|uzeus|uzeuex> \else
%<uzeur|uzeus|uzeuex>  \edef\zeu@@Scale{s*[\csname zeu@Scale\endcsname]}%
%<uzeur|uzeus|uzeuex> \fi
%    \end{macrocode}
%
% \subsection{Euler Roman}
%    \begin{macrocode}
%<*uzeur>
\DeclareFontFamily{U}{zeur}{\skewchar \font =127}
\DeclareFontShape{U}{zeur}{m}{n}{
   <9-> \zeu@@Scale zeurm10
   <6-9> \zeu@@Scale zeurm7
   <-6> \zeu@@Scale zeurm5
}{}
\DeclareFontShape{U}{zeur}{b}{n}{
   <9-> \zeu@@Scale zeurb10
   <6-9> \zeu@@Scale zeurb7
   <-6> \zeu@@Scale zeurb5
}{}
\DeclareFontShape{U}{zeur}{bx}{n}{<->ssub * zeur/b/n}{}
%</uzeur>
%    \end{macrocode}
%
% \subsection{Euler Script}
%    \begin{macrocode}
%<*uzeus>
\DeclareFontFamily{U}{zeus}{\skewchar \font =176}
\DeclareFontShape{U}{zeus}{m}{n}{
   <9-> \zeu@@Scale zeusm10
   <6-9> \zeu@@Scale zeusm7
   <-6> \zeu@@Scale zeusm5
}{}
\DeclareFontShape{U}{zeus}{b}{n}{
   <9-> \zeu@@Scale zeusb10
   <6-9> \zeu@@Scale zeusb7
   <-6> \zeu@@Scale zeusb5
}{}
\DeclareFontShape{U}{zeus}{bx}{n}{<->ssub * zeus/b/n}{}
%</uzeus>
%    \end{macrocode}
%
% \subsection{Euler Extension}
%    \begin{macrocode}
%<*uzeuex>
\DeclareFontFamily{U}{zeuex}{}
\DeclareFontShape{U}{zeuex}{m}{n}{
   <-> \zeu@@Scale zeuex10
}{}
%</uzeuex>
%    \end{macrocode}
% 
% }
%
% \Finale
%
% \iffalse
% The next line of code prevents DocStrip from adding the
% character table to all modules:
\endinput
% \fi
%
%% \CharacterTable
%%  {Upper-case    \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
%%   Lower-case    \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
%%   Digits        \0\1\2\3\4\5\6\7\8\9
%%   Exclamation   \!     Double quote  \"     Hash (number) \#
%%   Dollar        \$     Percent       \%     Ampersand     \&
%%   Acute accent  \'     Left paren    \(     Right paren   \)
%%   Asterisk      \*     Plus          \+     Comma         \,
%%   Minus         \-     Point         \.     Solidus       \/
%%   Colon         \:     Semicolon     \;     Less than     \<
%%   Equals        \=     Greater than  \>     Question mark \?
%%   Commercial at \@     Left bracket  \[     Backslash     \\
%%   Right bracket \]     Circumflex    \^     Underscore    \_
%%   Grave accent  \`     Left brace    \{     Vertical bar  \|
%%   Right brace   \}     Tilde         \~}
%%
