%%\iffalse
%% File eurofont.sty
%% copyright Rowland McDonnell 1998
%% email rebecca@astrid.u-net.com
%%\This file is part of the eurofont distribution.  You can distribute it 
%% freely provided that you include the rest of the eurofont distribution 
%% with this file and make no more than a nominal charge to cover the 
%% costs of distributing it.
%%
%% If you would like to change the contents of this file, please make a 
%% copy of it under a different name and change that instead. Keep my 
%% copyright notice attached, but make it clear that the new file is your 
%% responsibility so you get the credit for the improvements and I don't 
%% get blamed for the bugs.
%
% Remove \OnlyDescription to get the code typeset.
%
% Note to me: comment out \OnlyDescription to get the checksum right, 
% and then uncomment it.  Maybe.
% 
%\fi
%\iffalse
%<*driver>
\documentclass[a4paper,10pt]{ltxdoc}
\usepackage{tabularx,varioref,xspace}
\usepackage[OT1]{fontenc}
% \OnlyDescription
\begin{document}
 \DocInput{eurofont.dtx}
\end{document}
%</driver>
%\fi
%\iffalse
%<*package>
%\fi
%% \CheckSum{1267}
%% \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         \~}
%
% \author{Rowland McDonnell\\ \texttt{rebecca@astrid.u-net.com}}
% \title{The \packname{eurofont} package v1.1.3}
% \date{30th January 1999}
% 
% \newcommand*{\packname}[1]{{\sffamily #1}}
% \newcommand*{\classname}[1]{{\ttfamily #1}}
% \newcommand*{\optname}[1]{{\ttfamily #1}}
% \newcommand*{\lfntname}[1]{{\ttfamily #1}}
% \newcommand*{\filename}[1]{{\ttfamily #1}}
% \DeclareRobustCommand*{\filename}[1]{{\ttfamily#1}}
% \newcommand*{\OzTeX}{O\kern-.03em z\kern-.15em\TeX}
% \newcommand{\PS}{PostScript\xspace}
% \newcommand{\dvidriver}{dvi driver\xspace}
% \newcommand{\Dvidriver}{Dvi driver\xspace}
%
%\makeatletter
%\iffalse
% The instances of ^^A are `real' comment characters to suppress the 
% end-of-line space in the middle of the command definitions.
%\fi
%
%\newcommand{\ttlb}{{\ttfamily\def\@tempcmda{OT1}^^A
%\ifx\f@encoding\@tempcmda\char"7B\else\{\fi}}
%
%\newcommand{\ttrb}{{\ttfamily\def\@tempcmda{OT1}^^A
%\ifx\f@encoding\@tempcmda\char"7D\else\}\fi}}
%
%\newcommand{\ttbs}{{\ttfamily\def\@tempcmda{OT1}^^A
%\ifx\f@encoding\@tempcmda\char`\\\else\textbackslash\fi}}
% 
%\newcommand*{\comname}[2][VF500F2E]{{\ttfamily\ttbs #2^^A
%\def\@tempcmda{VF500F2E}\def\@tempcmdb{#1}^^A
%\ifx\@tempcmda\@tempcmdb\else\comarg{#1}\fi}}
%
%\newcommand*{\comarg}[1]{{\ttfamily\ttlb$\langle$^^A
%{\rmfamily\itshape#1}\/$\rangle$\ttrb}}
%
%\newcommand*{\comoptarg}[1]{{\ttfamily[$\langle$^^A
%{\rmfamily\itshape#1}\/$\rangle$]}}
%
%\makeatother
%
% \maketitle
% 
% \tableofcontents
%
% \section{Introduction}
%  
% The \packname{eurofont} package was written to do two complementary 
% jobs: firstly, to automate the process of using a euro symbol from any 
% source in any fount\footnote{I am one of the last people in the world 
% to use this spelling of the word to refer to `a set of type in one 
% size and style'.}; secondly, to generate a `faked' euro symbol from a C 
% with two lines across it, which can be used automatically when no 
% suitable real euro symbol exists.
% 
% Despite the name, the \packname{eurofont} package does not itself 
% have a fount containing euro symbols: it's meant to help you use 
% founts with euro symbols.
% 
% The \packname{eurofont} package defines two commands meant to be used 
% in documents: the \comname{euro} command which prints a euro symbol, 
% and the \comname[amount]{euros} command which prints a euro symbol 
% next to its argument -- normally a number -- with a small space in 
% between the two. The particular euro symbol printed depends on the way 
% \packname{eurofont} has been set up: the decision made is based on the 
% fount in use at the time you use the command. The \comname{euros} 
% command uses the \comname{euro} command to print the euro symbol, so 
% these commands print the same symbol under the same circumstances.
% 
% There are several ways of controlling which particular euro symbol you 
% get with any given fount; the idea is that -- with a bit of luck -- 
% most users won't need to do anything more complicated than passing 
% options to \packname{eurofont} and making minor changes to the 
% configuration file, \filename{eurofont.cfg}.
% 
% Note for \OzTeX\ users (and perhaps others): throughout this document, 
% I refer to the standard set of \PS Type 1 founts (Times, Helvetica, 
% Courier, etc). If, like me, you use TrueType versions of Times, 
% Palatino, etc., instead of \PS Type 1 versions, the difference doesn't 
% matter.
% 
% This is the second public release of the \packname{eurofont} package; 
% as I had expected, at least one bug did escape my notice in the first 
% release (it was a problem with the advice given on configuring dvips). 
% I've fixed the problem reported, but there's probably a few more bugs 
% lurking in the package; if you do spot any bugs, have any trouble with 
% the documentation, you'd like to tell me how to configure the 
% \dvidriver \emph{you} use (I'd love to hear from Amiga or Archimedes 
% \TeX\ users in particular), or you'd just like to make a comment or 
% suggestion about the \packname{eurofont} package, I'd appreciate an 
% email at: |rebecca@astrid.u-net.com|.
% 
% \subsection{What else do I need?}
% 
% The only thing you must have to use the \packname{eurofont} package is 
% a working \LaTeX2e\ installation. This package has only been tested 
% with the June 1998 release of \LaTeX2e, but will probably work 
% correctly with earlier versions. \packname{Eurofont} will not work 
% with \LaTeX~2.09.
% 
% The \packname{eurofont} package can be configured to produce useful 
% euro symbols in the absence of any founts containing real euro 
% symbols, but you will need to edit the configuration file if you want 
% this; an introduction to configuring this package can be found in 
% section~\vref{sec:config_intro}.
% 
% In its default configuration, \packname{eurofont} expects to find 
% Adobe's Eurofonts installed. If you want to avoid these, you can pass 
% the \optname{marvosym} option to \packname{eurofont} and it'll expect 
% the Marvosym fount instead. Adobe's Eurofonts have italic, bold, and 
% bold italic variants which Marvosym lacks.
% 
% Both Marvosym and the Eurofonts are \PS Type 1 founts: you can use 
% them if you have a \PS printer, ATM (Adobe Type Manager), or a \PS 
% emulator like Ghostscript. Section~\vref{sec:getPSfounts} has more on 
% these founts and how to get them.
% 
% The \packname{eurosym} and \packname{China2e} packages both have euro 
% symbols in Metafont format which can be used by \packname{eurofont}. 
% You'll get \packname{eurosym}'s euro symbol if you pass the 
% \optname{eurosym} option to \packname{eurofont} -- this gives you 
% \packname{eurosym}'s euro symbol instead of Adobe's Eurofonts or 
% Marvosym's euro symbols, and also replaces the euro symbols you get 
% with the Computer Modern founts. You will need to edit the 
% configuration file if you want to use the euro symbol from the China2e 
% fount.
% 
% 
% \subsection{How to install the package -- in brief}
% 
% \begin{enumerate}
% \item Run \LaTeX\ on \filename{eurofont.ins}.
% \item Put \filename{eurofont.sty}, \filename{eurofont.cfg}, and all 
% the files ending in \filename{.fd} into a directory on your 
% tex-inputs search path.
% \item (optional) Get and install Adobe's Eurofonts, and/or the 
% marvosym fount, and/or the \packname{China2e} package, and/or the EC 
% founts (the T1 encoded re-working of the original Computer Modern 
% founts), and/or the \packname{Eurosym} package. See 
% section~\vref{sec:getfounts} for details.
% \item (optional) If you want to use Adobe's Eurofont's, put the 
% \filename{zpeu...tfm} files into a directory on your tex-fonts search 
% path, and the \filename{zpeu...vf} files into a directory on your vf 
% (virtual founts) search path.
% \item (optional) If you intend to use the marvosym fount, put one 
% of the two files \filename{fmvri8x.tfm} into a directory on your 
% tex-fonts search path; put it with the file \filename{fmvr8x.tfm} that 
% comes with the \packname{marvosym} distribution.
% \item (optional) Copy the appropriate lines from 
% \filename{dvidrive.txt} to the appropriate file on your system to 
% configure your \dvidriver to use marvosym and/or Adobe's Eurofonts. 
% This procedure is also covered in section~\vref{sec:dvidriver_config}.
% \item (optional) Modify the file \filename{eurofont.cfg} as you like.
% \end{enumerate}
% 
% \subsection{How to use the package -- a brief introduction}
% 
% This is how to use \packname{eurofont} in your document:
%\begin{verbatim}
%    \documentclass[a4paper]{article}
%      \usepackage{eurofont}
%      \begin{document}
%        The euro symbol looks like this: \euro.  A sum of money can
%        be written like this: \euros{500}.
%      \end{document}
%\end{verbatim}
% The \comname{euro} command prints the euro symbol; the \comname{euros} 
% command is meant to be used to typeset a sum of money in euros: it 
% prints the euro symbol to the left (by default) of its argument, with 
% a small amount of space between the symbol and the text of the 
% argument. If you give the \packname{eurofont} package the 
% \optname{right} option, the euro symbol will be on the right.
% 
% The \packname{eurofont} package's default setup assumes that you've 
% got Adobe's Eurofonts installed. If you want use to euro symbols from 
% the Marvosym fount instead, use the \optname{marvosym} option:
%\begin{verbatim}
%    \usepackage[marvosym]{eurofont}
%\end{verbatim}
% 
% The next question is: what do you get when you use the \comname{euro} 
% or \comname{euros} command? The \packname{eurofont} package decides 
% which euro symbol to use depending on the fount in use at the place 
% where the \comname{euro} command is encountered.  The way the package 
% is set up initially, you get this:
% \begin{itemize}
% \item All bar one of the `standard' set of \PS founts get a 
% euro symbol from one of Adobe's Eurofonts: Bookman, Times, Palatino, New 
% Century Schoolbook, and Utopia use Euroserif; Avant Garde, Helvetica, 
% Symbol, and Zapf Dingbats use Eurosans; and Courier uses Euromono.
% \item Zapf Chancery (the one exception) uses a euro symbol faked with 
% medium rules.
% \item Each of the three Computer Modern text fount families (Computer 
% Modern Roman, Computer Modern Sanserif, and Computer Modern 
% Typewriter (\lfntname{cmr}, \lfntname{cmss}, and \lfntname{cmtt}) uses 
% either the appropriate euro symbol from the matching `text companion' (TC) 
% fount (if installed); or, if the TC founts appear to be missing, 
% \packname{eurofont} will print a faked euro symbol instead.
% \item Everything else gets a euro symbol faked with medium weight 
% rules.
% \end{itemize}
% The \optname{marvosym} option tells \packname{eurofont} to use the 
% Marvosym fount's euro symbols in place of Adobe's Eurofonts.
% 
% The faked euro symbols I refer to above are euro symbols produced by 
% superimposing a pair of horizontal lines over a letter `C'.  The 
% result can be surprisingly tolerable in some cases.
% 
% \subsubsection{Options}
% 
% This is my best guess at the options most new users are likely to 
% want to know about first, not a full list of all the options -- you 
% can find that in section~\vref{sec:all_options}.
% \begin{description}
% \item[\optname{left}] This option makes the \comname{euros} command 
% print the euro symbol to the left of its argument, which is normally a 
% number; the \comname{euros} command is meant for typesetting sums of 
% money. This is the default behaviour.
% 
% \item[\optname{right}] This option makes the \comname{euros} command 
% print the euro symbol to the right of its argument, which is normally 
% a number; the \comname{euros} command is meant for typesetting sums of 
% money.
% 
% \item[\optname{marvosym}] This option tells \packname{eurofont} to use 
% the Marvosym fount's euro symbols for the standard set of \PS 
% Type 1 founts. The \packname{eurofont} package automatically fakes a 
% bold version when needed, and you'll also get a decent faked 
% italic/slanted version if your \dvidriver can slant a fount.
% 
% \item[\optname{eurosym}] This option tells \packname{eurofont} to use 
% the \packname{eurosym} package's euro symbol for the Computer Modern 
% families and for the standard set of \PS Type 1 founts. If the 
% \packname{eurosym} package isn't available, \packname{eurofont} 
% complains and all euro symbols are created using the normal 
% \packname{eurofont} code for printing faked euro symbols.
% \end{description}
% 
% \subsection{Some founts with euro symbols}\label{sec:someeurofounts}
% 
% It's a good idea to get some founts containing the euro symbol. 
% Section~\vref{sec:getfounts} has more details of some freely available 
% founts. In brief, the founts with euro symbols in that I know about are:
% \begin{center}
% \begin{tabularx}{\textwidth}{@{}ll>{\raggedright\arraybackslash}X@{}}
% \textbf{Fount}  & \textbf{Format}  & \textbf{Notes} \\[1ex]
% Adobe Eurofonts & PS Type 1        & Seriffed, sanserif, and 
%                                      monospaced all in upright,
%                                      italic, bold, and bold italic\\
% Marvosym        & pfa and pfb only & Seriffed, sanserif, and monospaced 
%                                      in upright medium only\\[0.5ex]
% China2e         & Metafont         & A single beautiful upright euro 
%                                      symbol \\[0.5ex]
% Eurosym         & Metafont         & The official euro and an 
%                                      alternative approach to printing a 
%                                      faked euro\\[0.5ex]
% Text Companion  & Metafont         & Founts containing extra 
%                                      symbols that come with the T1 
%                                      encoded version of the Computer
%                                      Modern founts \\
% \end{tabularx}
% \end{center}
% If you know of other founts containing euro symbols that are used 
% with \LaTeX\, do please let me know and I'll add them to this list.
% 
% The \packname{china2e} and \packname{marvosym} packages come with 
% founts in one shape and weight only: medium upright. Despite this, the 
% \packname{eurofont} package will print what looks like a bold euro symbol 
% from either fount, and can (with a bit of help from your \dvidriver) 
% also manage italic and bold italic euro symbols from \packname{marvosym}.
% 
% The way it works is this: \packname{eurofont} comes with two 
% \filename{tfm} files -- both called \filename{fmvri8x.tfm} -- for a 
% slanted version of the Marvosym fount\footnote{Use the \filename{tfm} 
% file from the \filename{original} directory if you're using the 
% original version of Marvosym (the \filename{pfa} or \filename{pfb} 
% files from CTAN or the TrueType version from Martin Vogel's Web site); 
% and use the \filename{tfm} file from the \filename{yandy} folder if 
% you're using the Y\&Y version of Marvosym -- either downloaded from 
% the Y\&Y Web site, or the Macintosh version from CTAN.}. This fount 
% doesn't really exist, but some \dvidriver{}s can create a slanted 
% fount from an upright one by leaning it to one side.
% 
% Assuming your \dvidriver can create a slanted fount (dvips can -- see 
% section~\ref{sec:dvidriver_config:mvs} for more details), this extra 
% \filename{tfm} file means you can use the Marvosym fount's euro 
% symbols with slanted or italic founts: the results you get with this 
% should be good enough for all practical purposes. \packname{Eurofont} 
% also has two commands to print a `poor man's bold' version of a euro 
% symbol; one of these is used automatically to print bold versions of 
% the Marvosym or China2e euro symbols, which are missing bold variants. 
% These poor man's bold commands print six copies of the requested 
% symbol, each offset from the others by a very small amount in a 
% hexagonal arrangement. There's a bit more detail in 
% section~\vref{sec:howitworks:EFpmb}.
% 
% If you want to use the euro symbol from China2e, you could do worse 
% than to read section~\vref{sec:config_intro}.
% 
% \subsection{How to change what you get -- a brief 
% intro}\label{sec:config_intro}
% 
% The \packname{eurofont} package comes with a configuration file called 
% \filename{eurofont.cfg}. The idea is that you can change this file as 
% much as you like to meet your preferences.
% 
% But before diving in and changing anything, there are several options 
% that can change what the package does. There's a brief description of 
% some of them in section~\vref{sec:someeurofounts}, and 
% section~\vref{sec:all_options} tells all.
% 
% The basic idea behind \packname{eurofont}'s \comname{euro} command is 
% this: there are several lists which have their contents defined in the 
% file \filename{eurofont.cfg}. When you use the \comname{euro} or 
% \comname{euros} command, the current fount family is checked against 
% each list in turn. If the fount family matches an entry in a list, 
% then the command corresponding to that list is executed. This command 
% prints a particular euro symbol. The first match you get decides which 
% euro symbol you get: you can't get two euro symbols if one fount 
% family is listed in, say, the \comname{chinaelist} and the 
% \comname{seriflist}
% 
% So, for example, the fount family \lfntname{ptm} (Adobe Times) is 
% listed in \comname{seriflist}. If you use the \comname{euro} command 
% in the middle of some text typeset in Times, the command 
% \comname{makeserifeuro} is executed, and you get a euro symbol from 
% Adobe's Euroserif fount (by default, that is; if you've used the 
% \optname{marvosym} option, you'll get Marvosym's seriffed euro 
% symbol). I'll explain how to find out the internal fount family name 
% of each fount in a bit.
% 
% The configuration file (\filename{eurofont.cfg}) contains this by 
% default:
%\begin{verbatim}
%%
%%    List contents                                Corresponding command
%%
%   \EFaddtolist{\userlist}{}%                     \makeusereuro
%   \EFaddtolist{\texteurolist}{}%                 \maketexteuro
%   \EFaddtolist{\chinaelist}{}%                   \makechinaeeuro
%   \EFaddtolist{\cmlist}{cmr,cmss,cmtt}%          \makecmeuro
%   \EFaddtolist{\seriflist}{pbk,pnc,ppl,ptm,put}% \makeserifeuro
%   \EFaddtolist{\sanslist}{pag,phv,psy,pzd}%      \makesanseuro
%   \EFaddtolist{\monolist}{pcr}%                  \makemonoeuro
%   \EFaddtolist{\fakemediumlist}{pzc}%            \makefakemediumeuro
%   \EFaddtolist{\fakelightlist}{}%                \makefakelighteuro
%   \EFaddtolist{\fakeheavylist}{}%                \makefakeheavyeuro
%\end{verbatim}
% The lists are created at the start of the \packname{eurofont} 
% package with nothing in them: the code above tells you 
% the full story about what's in each list.  You can use the 
% \comname{EFaddtolist} command anywhere after the \packname{eurofont} 
% package has been loaded; you can use it in individual document 
% preambles if you like, as well as in \filename{eurofont.cfg}.
% 
% Each fount in \LaTeX\ belongs to a fount family. For example, Bookman 
% Roman, Bookman Italic, Bookman Bold, and Bookman Bold Italic are all 
% different founts, but they belong to the Bookman family. This family 
% has an internal \LaTeX\ name: \lfntname{pbk}. One way of discovering 
% the name of a fount family is to use \packname{eurofont}'s 
% \comname{showfontfamily} command in your document: it displays the 
% internal name of the current fount family on the screen and in the log 
% file.
% 
% Before going any further, remember this: each list is a list of fount 
% family names. If you're using a fount family that's in a particular 
% list, you get the euro symbol generated by the command corresponding 
% to that list. Section~\vref{sec:fountfamilies} has more notes on 
% \LaTeX\ fount families.
% 
% If, for example, you don't like the euro symbol that you get with 
% Computer Modern Roman, and you'd rather have the euro symbol from 
% China2e with Computer Modern Roman, you can do this by changing two lines.  
% Where the configuration file says this:
%\begin{verbatim}
%    \EFaddtolist{\chinaelist}{}
%    \EFaddtolist{\cmlist}{cmr,cmss,cmtt}
%\end{verbatim}
% you should change it to this:
%\begin{verbatim}
%    \EFaddtolist{\chinaelist}{cmr}
%    \EFaddtolist{\cmrlist}{cmss,cmtt}
%\end{verbatim}
% 
%    You might have a new \PS fount that you'd like to use Adobe's 
% Euroserif euro symbol with. If that fount is, say, Monotype Joanna 
% (fount family name \lfntname{mjo}), you can do this by adding 
% \lfntname{mjo} to the \comname{seriflist}:
%\begin{verbatim}
%    \EFaddtolist{\seriflist}{pbk,pnc,ppl,ptm,put,mjo}
%\end{verbatim}
% 
% Or you might be using (say) Bitstream Bernhard Modern (family name 
% \lfntname{bb7}) which you might think doesn't go well with any of the 
% real euro symbols on offer. You might prefer a euro symbol faked with 
% light rules in this case. You can get this by saying:
%\begin{verbatim}
%    \EFaddtolist{\fakelightlist}{bb7}
%\end{verbatim}
% 
% Then again, you might have a fount that has a real euro symbol in it: 
% call it Adobe Xyzzy (\lfntname{pxy}) for the sake of argument. If this 
% fount has been set up properly for use with \LaTeX, the euro symbol 
% will be available using the \comname{texteuro} command. Rather than 
% having to use a different command to select the euro symbol if you're 
% using this fount family, you can say:
%\begin{verbatim}
%    \EFaddtolist{\texteurolist}{pxy}
%\end{verbatim}
% 
% There are mechanisms that allow you to bypass the standard behaviours. 
% You can, for example, use \comname{newcommand} in the configuration 
% file to define any of the \comname{make...euro} commands to anything 
% you like. You could, for example, say:
%\begin{verbatim}
%    \newcommand{\makesanseuro}
%        {{\fontfamily{phv}\selectfont\makefakeeuro}}
%\end{verbatim}
% and all fount families in the \comname{sanseurolist} would have a euro 
% symbol faked from a C in Helvetica with two rules drawn across it.
% 
% Alternatively, you could put a fount in \comname{usereurolist}, and 
% you'd get a euro symbol generated by the \comname{makeusereuro} 
% command. This is meant to be defined by you: by default, it prints a 
% euro symbol faked with medium weight rules and displays on the screen a 
% message explaining that you should have defined the 
% \comname{makeusereuro} command to do what you want it to do.  For 
% example, the following lines in the configuration file:
%\begin{verbatim}
%    \newcommand{\makeusereuro}
%        {EUR}
%\end{verbatim}
% will give you `EUR' -- the standard international currency 
% abbreviation for the euro currency unit -- for the euro symbol in all 
% fount families listed in the \comname{usereurolist}.
% 
% \comname{usereurolist} is the first list looked at: if a fount 
% family is listed in the \comname{usereurolist} as well as another 
% list, what you get is the euro symbol produced by 
% \comname{makeusereuro}.
% 
% Immediately after \comname{usereurolist} is examined, the 
% \comname{euro} command looks to see if a command of the form 
% \comname{<fam>euro} exists (where |<fam>| is the name of the 
% current fount family). If it does, this command is executed and the 
% \comname{euro} command finishes. For example, assume you've designed a 
% euro symbol to match URW's Arnold Boecklin fount (family name 
% \lfntname{uab}). Let's say you've written a command 
% \comname{arnoldboecklineuro} to print this symbol. You could say this:
%\begin{verbatim}
%    \newcommand{\uabeuro}{\arnoldboecklineuro}
%\end{verbatim}
% and the \comname{euro} command would print your new euro symbol 
% whenever you were using Arnold Boecklin.
% 
% \subsection{About this package and document}
% 
% The original aim of the \packname{eurofont} package was to provide a 
% trivial interface to allow one to use the euro symbols from Adobe's 
% Eurofonts with any fount. The package has grown a bit since the 
% original idea, which might explain a few things. While their 
% contributions to the final code might look small, this package 
% couldn't have been started (let alone finished) without the help of 
% Donald Arseneau and Stefan Ulrich (in alphabetical order, in case 
% you're wondering).  They provided the list handling code which is at 
% the heart of the package.
% 
% The biggest problem I had with this package was documenting it.  I've 
% no idea whether or not the documentation has `hit the right note' -- 
% if you've any comments at all to make about the documentation (or the 
% package for that matter), do please email me and let me know what you 
% think.  Comments, suggestions, and bug reports are all very much 
% welcome.  To say that writing the documentation was a headache is 
% putting it mildly.  If you read the documentation from start to 
% finish, you'll notice that there's a certain amount of repetition.  
% This is deliberate, and is meant to make it easier to use the 
% documentation.
% 
% One problem that this package will face is that more and more founts 
% containing euro symbols will appear as time goes on. With a bit of 
% luck, it's flexible enough for you to be able to configure it to deal 
% with these new founts. If not, or if you've had a thought about what 
% might be done with one or more of these new founts, do please let me 
% know by email -- if it's practical, it would be nice to modify this 
% package to make it more useful.
% 
% \section{Installing the \packname{eurofont} package}
% \label{sec:installation}
% 
% The \packname{eurofont} package proper comes in two files: 
% \filename{eurofont.dtx} and \filename{eurofont.ins}.  Running 
% \LaTeX\ on \filename{eurofont.dtx} produces this document, so I'll 
% assume you've done that.  Running \LaTeX\ on \filename{eurofont.ins} 
% generates:
% \begin{center}
% \begin{tabularx}{\textwidth}{@{}l>{\raggedright\arraybackslash}X@{}}
% \filename{dvidrive.txt}& Information on configuring \dvidriver{}s to
%                          use Adobe's Eurofonts and the Marvosym fount. \\
% \filename{eurofont.cfg}& The configuration file: edit this file to change
%                          \packname{eurofont}'s behaviour. \\
% \filename{eurofont.sty}& The package file proper. \\
% \filename{uzmvs.fd}    & \LaTeX\ code for selecting the Marvosym fount. \\
% \filename{uzpeur.fd}   & \LaTeX\ code for selecting Adobe's Euroserif fount.\\
% \filename{uzpeuss.fd}  & \LaTeX\ code for selecting Adobe's Eurosans fount.\\
% \filename{uzpeutt.fd}  & \LaTeX\ code for selecting Adobe's Euromono fount.\\
% \end{tabularx}
% \end{center}
% \filename{eurofont.cfg} and \filename{eurofont.sty} should be put in  
% a directory on your tex-inputs search path: they're both essential.  
% If you're using either Adobe's Eurofonts or the Marvosym fount, read 
% \filename{dvidrive.txt}.  Once you've used it, you can discard it.
% 
% The \filename{fd} files are only needed if you're using the founts in 
% question. What they're for is this: \TeX\ can only typeset text in a 
% particular fount if it has a \filename{tfm} file corresponding to that 
% fount to look at. \LaTeX\ \filename{fd} files contain code to select a 
% \filename{tfm} file when you ask for a particular fount using \LaTeX\ 
% commands. For example, you might ask for `U encoded Adobe Euroserif in 
% bold italic'. \LaTeX\ would then look at the file 
% \filename{uzpeur.fd}, and discover that this request corresponded to 
% \filename{zpeubi.tfm}.
% 
% If you intend to use the Marvosym fount, put the file 
% \filename{uzmvs.fd} into a directory on your tex-inputs search path. 
% This file is named so that it won't clash with the original Marvosym 
% fount definitions: you don't have to worry about the 
% \packname{marvosym} package getting confused because the 
% \packname{eurofont} package uses the \packname{marvosym} fount 
% differently.
% 
% If you intend to use Adobe's Eurofonts, put the three 
% \filename{uzpeu...fd} files into a directory on your tex-inputs search 
% path. If you already have files with these names from a different 
% source, I suggest that you replace the older files with the 
% \filename{fd} files that come with \packname{eurofont}. If this causes 
% any problems, please let me know by emailing 
% \texttt{rebecca@astrid.u-net.com}.
% 
% \subsection{Using Marvosym and Adobe's Eurofonts}
% 
% How to get these founts is covered in section~\vref{sec:getfounts}. To 
% use them with the \packname{eurofont} package, you need to install the 
% appropriate \filename{fd} files and configure your \dvidriver, as 
% explained above. Assuming you have installed the actual fount files on 
% your computer, you then need \filename{tfm} files for these founts: 
% these are the files that tells \TeX\ exactly what size each letter is, 
% and allows it to produce output with a given fount.
% 
% The \packname{eurofont} package comes with suitable \filename{tfm} 
% files for Adobe's Eurofonts, and two extra \filename{tfm} files for 
% the Marvosym fount. Which of these two \filename{tfm} files you should 
% use depends on which version of the Marvosym fount you have.
% 
% \subsubsection{Using Adobe's Eurofonts}
% 
% If you intend to use Adobe's Eurofonts, you should put all 12 files in 
% the \filename{adobeuro/tfmfiles/} directory into a tex-fonts 
% directory. These files should exist happily alongside any other 
% \filename{tfm} files generated for Adobe's Eurofonts: being generated 
% by \packname{afm2tfm}, they should be identical to any others you 
% might have. I suggest that you remove any other \filename{tfm} files 
% you might have for these founts unless you know that you need to keep 
% them installed. If this advice causes you any problems, please email 
% me and let me know.
% 
% \subsubsection{Using the Marvosym fount}
%
% The Marvosym fount comes with a \filename{tfm} file of its own, and 
% the \packname{eurofont} package includes two extra \filename{tfm} 
% files: you should use one of these to allow you access to a faked 
% italic/slanted version of Marvosym, assuming that your \dvidriver can 
% produce a faked italic by slanting an upright fount. Both dvips and 
% \OzTeX\ can do this.
% 
% If you are using a version of the original Marvosym fount (the 
% original \filename{pfa} or \filename{pfb} files from CTAN, or the 
% Truetype version from Martin Vogel's Web site), then you should take 
% the file \filename{fmvri8x.tfm} from the directory 
% \filename{marvosym/tfmfiles/original}, and put it in the same 
% tex-fonts directory as the file \filename{fmvr8x.tfm} which came with 
% the \packname{marvosym} package.
% 
% If you are using one of the ATM-compatible versions of the Marvosym 
% fount from Y\&Y (either from Y\&Y's Web site or any of the Mac 
% versions from CTAN), things are slightly more complicated. In this 
% case, you might be using the Y\&Y supplied \filename{tfm} file 
% \filename{marvosym.tfm} to use this fount. If so, leave 
% \filename{marvosym.tfm} alone: take the files \filename{fmvr8x.tfm} 
% and \filename{fmvri8x.tfm} from the directory 
% \filename{marvosym/tfmfiles/yandy}, and put them in the tex-fonts 
% directory which contains \filename{marvosym.tfm}. If you have changed 
% the name of the Y\&Y supplied \filename{tfm} file to 
% \filename{fmvr8x.tfm}, just add \filename{fmvri8x.tfm}.
% 
% Note that you should not use the file \filename{fmvr8x.tfm} supplied 
% for the original Marvosym fount with any of the Y\&Y versions of 
% Marvosym, or vice versa: the founts are very, very similar, but differ 
% in tiny details which affect the metrics file very slightly. You 
% should therefore use the \filename{tfm} file supplied with the 
% particular fount you're using. If you're not sure of the source of the 
% Marvosym \filename{tfm} file already installed on your computer, you 
% might prefer to replace it with the appropriate version of 
% \filename{fmvr8x.tfm} supplied with the \packname{eurofont} package.
% 
% The original \PS version of the Marvosym fount has the \PS name 
% \texttt{Martin\_Vogels\_Symbole}, while the Y\&Y re-worked version has 
% the \PS name \texttt{Marvosym}; this leads to different \dvidriver 
% configuration file entries which should help you avoid any confusion 
% over which version you've got.
% 
% \section{All the options}\label{sec:all_options}
% 
% Here are all of \packname{eurofont}'s options, presented in no 
% particular order.
% \begin{description}
% \item[\optname{left}] This option makes the \comname{euros} command 
% print the euro symbol to the left of its argument. When you use this 
% option, it's also passed to the \packname{eurosym} package, so that 
% \packname{eurosym}'s \comname{EUR} command will also print the euro 
% symbol to the left of its argument. This is the default behaviour.
% 
% \item[\optname{right}] This option makes the \comname{euros} command 
% print the euro symbol to the right of its argument.  When you use this 
% option, it's also passed to the \packname{eurosym} package, so that 
% \packname{eurosym}'s \comname{EUR} command will also print the euro 
% symbol to the right of its argument. 
% 
% \item[\optname{marvosym}] This option tells \packname{eurofont} to use 
% the Marvosym fount's euro symbols for the standard set of \PS 
% Type 1 founts. The \packname{eurofont} package automatically fakes a 
% bold version when needed, and you'll also get a decent faked 
% italic/slanted version if your \dvidriver can slant a fount.  This 
% option counteracts the \optname{adobeeurofonts} option, and can be 
% over-ridden by the \optname{eurosym} option.
% 
% \item[\optname{adobeeurofonts}] This option tells \packname{eurofont} 
% to use Adobe's Eurofonts to supply the euro symbols for the standard 
% set of \PS Type 1 founts; this setting is used by default. This 
% option counteracts the \optname{marvosym} option, and can be 
% over-ridden by the \optname{eurosym} option.
% 
% \item[\optname{eurosym}] This option tells \packname{eurofont} to use 
% the \packname{eurosym} package's euro symbol for the Computer Modern 
% families, and the standard set of \PS Type 1 founts. If the 
% \packname{eurosym} package isn't available, \packname{eurofont} 
% complains and all euro symbols are created using the normal 
% \packname{eurofont} code for printing faked euro symbols.
% 
% \item[\optname{noeurosym}] This option counteracts the 
% \optname{eurosym} option; if (for example) you have a configuration 
% file that says \comname{ExecuteOptions\ttlb eurosym\ttrb}, you can tell 
% \packname{eurofont} \emph{not} to use \packname{eurosym}'s euro 
% symbols, and use the normal founts -- typically Adobe's Eurofonts and 
% the Text Companion founts. This is the default behaviour.
% \end{description}
% 
% These next four options only affect what you get when you've given the 
% \packname{eurofont} package the \optname{eurosym} option. See the 
% \packname{eurosym} package's documentation for more details.
% \begin{description}
% \item[\optname{official}]This option is passed to the 
% \packname{eurosym} package, and tells it to give you the official euro 
% symbol.
%                    
% \item[\optname{gen}]This option is passed to the \packname{eurosym} 
% package, and tells it to give you a faked euro symbol.
%               
% \item[\optname{gennarrow}] This option is passed to the 
% \packname{eurosym} package, and tells it to give you a faked euro 
% symbol with narrow cross-strokes.
%                     
% \item[\optname{genwide}]This option is passed to the 
% \packname{eurosym} package, and tells it to give you a faked euro 
% symbol with wide cross-strokes.
% \end{description}
% 
% The following three options affect how \packname{eurofont} produces 
% faked euro symbols.
% \begin{description}
% \item[\optname{noslantfakeeuro}] \packname{Eurofont}'s faked euro 
% symbols are produced with two rules of the same length.
% 
% \item[\optname{normalslantfakeeuro}] \packname{Eurofont}'s faked euro 
% symbols are produced with two rules of slightly different length: the 
% lower rule is the shorter of the two.  This is the default 
% behaviour; it approximates the difference in length of the two rules 
% in the official euro symbol.
% 
% \item[\optname{bigslantfakeeuro}] \packname{Eurofont}'s faked euro 
% symbols are produced with two rules of greatly different length: the 
% lower rule is by far the shorter of the two.  This was inspired by 
% the China2e fount's euro symbol.
% \end{description}
% 
% And finally, some options which don't seem to belong with anything 
% else.
% \begin{description}
% \item[\optname{notextcomp}] This option tells the \packname{eurofont} 
% package not to load the \packname{textcomp} package; it counteracts 
% the \optname{textcomp} option. You might want to use this option if 
% you find that some characters or accents are unexpectedly wrong when 
% using the \packname{eurofont} package -- this sort of thing can be 
% caused by loading the \packname{textcomp} package.  See also the 
% \optname{fixtieaccent} option.
% 
% \item[\optname{textcomp}] This option tells the \packname{eurofont} 
% package to load the \packname{textcomp} package (part of the standard 
% \LaTeX\ distribution) if it is available. This package defines the 
% \comname{texteuro} command (amongst other things). Trying to load 
% \packname{textcomp} is the default behaviour. One possibly unwanted 
% effect of loading \packname{textcomp} is that tie accents are 
% typically messed up if you're using \PS Type 1 founts; the 
% \optname{fixtieaccent} option can help out with this.
% 
% \item[\optname{fixtieaccent}] This option counteracts the 
% \optname{nofixtieaccent} option: it makes \packname{eurofont} define 
% the tie accent to work the way it does as standard when the 
% \packname{textcomp} package hasn't been loaded. If you find tie 
% accents no longer work when using \packname{eurofont}, you can use 
% either this option or the \optname{notextcomp} option to fix things.
% 
% \item[\optname{nofixtieaccent}] This option counteracts the 
% \optname{fixtieaccent} option: it stops \packname{eurofont} defining 
% the tie accent to work the way it does as standard when the 
% \packname{textcomp} package hasn't been loaded. This is the default 
% behaviour.
% 
% \item[\optname{debugreport}] This option tells the 
% \packname{eurofont} package to print all sorts of debugging 
% information out when you use its commands.  I added this option for my 
% own benefit, but you might find it useful if you're configuring 
% \packname{eurofont} in strange fashions and not getting what you want.
% 
% \item[\optname{nodebugreport}]This option tells the 
% \packname{eurofont} package not to print out any debugging 
% information.  This is the default behaviour.
% \end{description}
% 
% For those who might be interested: the following lines are executed 
% just before loading the configuration file:
%{\small
%\begin{verbatim}
% \ExecuteOptions{adobeeurofonts}%      Use Adobe's Eurofonts
% \ExecuteOptions{noeurosym}%           Don't use eurosym
% \ExecuteOptions{left}%                Euro symbol on left
% \ExecuteOptions{normalslantfakeeuro}% Fake euros with slight slant
% \ExecuteOptions{nodebugreport}%       No debugging reports
% \ExecuteOptions{textcomp}%            Load the textcomp package
% \ExecuteOptions{nofixtieaccent}%      Don't modify tie accents
%\end{verbatim}
%}
% You can therefore over-ride any of these defaults by placing a 
% subsequent \comname{ExecuteOptions} statement in the configuration 
% file.  For example, to make the \comname{euros} command place the 
% euro symbol on the right of the sum by default, add:
%\begin{verbatim}
%    \ExecuteOptions{right}
%\end{verbatim}
% to the configuration file, \filename{eurofont.cfg}.
% 
% \section{Configuring the \packname{eurofont} package}\label{sec:config}
% 
% There are three main mechanisms for changing the behaviour of 
% \packname{eurofont}'s \comname{euro} command: passing an option to 
% the \packname{eurofont} package, adding a fount family name to one 
% of \packname{eurofont}'s lists, and re-defining the \comname{make...} 
% commands used by the \comname{euro} command to print euro symbols.  
% Options have been covered in section~\vref{sec:all_options}; the 
% other two are covered here.
% 
% The \packname{eurofont} package comes with a configuration file -- 
% \filename{eurofont.cfg} -- that's meant to be changed to match your 
% preferences. If you want to add a fount family to a list, or re-define 
% some commands, you can make the changes in the configuration file. You 
% can also put code to do these jobs in a document file if you like.  
% Please don't change \filename{eurofont.sty} itself, unless you change 
% its name to something else.
% 
% The way the \comname{euro} command works is this: when you use the 
% \comname{euro} command, it compares the current fount family name with 
% the contents of a series of lists. If the current fount family name is 
% in a given list, the command corresponding to that list is executed. 
% This prints a particular euro symbol, and the \comname{euro} command 
% finishes. If you don't know what a fount family name is in \LaTeX, 
% have a look at section~\vref{sec:fountfamilies}.
% 
% The lists are created at the start of the \packname{eurofont} package, 
% and have fount family names entered into them by the 
% \comname{EFaddtolist} command. There's more than just the lists I've 
% mentioned in section~\ref{sec:config_intro}, though. The configuration 
% file contains the following lines by default:
%\begin{verbatim}
%%
%%    List contents                                Corresponding command
%%
%   \EFaddtolist{\userlist}{}%                     \makeusereuro
%   \EFaddtolist{\texteurolist}{}%                 \maketexteuro
%   \EFaddtolist{\chinaelist}{}%                   \makechinaeeuro
%   \EFaddtolist{\cmlist}{cmr,cmss,cmtt}%          \makecmeuro
%   \EFaddtolist{\seriflist}{pbk,pnc,ppl,ptm,put}% \makeserifeuro
%   \EFaddtolist{\sanslist}{pag,phv,psy,pzd}%      \makesanseuro
%   \EFaddtolist{\monolist}{pcr}%                  \makemonoeuro
%   \EFaddtolist{\fakemediumlist}{pzc}%            \makefakemediumeuro
%   \EFaddtolist{\fakelightlist}{}%                \makefakelighteuro
%   \EFaddtolist{\fakeheavylist}{}%                \makefakeheavyeuro
% 
%   \EFaddtolist{\faketexteurolist}{}
% 
%% Put all the standard LaTeX weights (and likely extras)
%% into one of the following lists:
% 
%   \EFaddtolist{\EFlightserieslist}{ul,el,l,ulc,elc,lc,ulx,elx,lx}
%   \EFaddtolist{\EFmediumserieslist}
%                        {m,mb,db,sb,mc,mbc,dbc,sbc,mx,mbx,dbx,sbx}
%   \EFaddtolist{\EFboldserieslist}{b,bx,bc}
%   \EFaddtolist{\EFultraboldserieslist}{eb,ub,ebc,ubc,ebx,ubx}
%\end{verbatim}
% The point of the configuration file is that you should change it any 
% way you like. But what do all these lines mean? In brief, what goes on 
% is this: when you use the \comname{euro} command (and remember that 
% the \comname{euro} command is used by the \comname{euros} command so 
% this discussion applies to both commands), the current \LaTeX\ fount 
% family name is compared to the contents of each of the lists above, in 
% the order given, with an extra test I'll mention in a bit. If, for 
% example, you're using New Century Schoolbook (fount family name 
% \lfntname{pnc}), what happens with the default settings is this:
% \begin{enumerate}
% \item \comname{userlist} is examined. It's empty, so no match is 
% found, and the command continues.
% \item This is the extra test mentioned above: a test is made to see if 
% the command \comname{pnceuro} exists (in general, the command 
% \comname{<fam>euro} is looked for, where |<fam>| is the \LaTeX\ fount 
% family name of the current fount). If this command exists, it's 
% executed and the \comname{euro} command terminates. In this case, the 
% command doesn't exist, so the command continues.
% \item \comname{texteurolist} is examined.  It's empty, so the 
% \comname{euro} command continues.
% \item \comname{chinaelist} is examined.  It's empty, so the 
% \comname{euro} command continues.
% \item \comname{cmlist} is examined. It's not empty: the current fount 
% family is \lfntname{pnc}, but the list contains \lfntname{cmr}, 
% \lfntname{cmss}, and \lfntname{cmtt}. No match is found, so the 
% \comname{euro} command continues.
% \item \comname{seriflist} is examined. It's not empty: the current 
% fount family is \lfntname{pnc}, and the list contains \lfntname{pbk}, 
% \lfntname{pnc}, \lfntname{ppl}, \lfntname{ptm}, and \lfntname{put}. A 
% match is found, so \comname{makeserifeuro} -- the command 
% corresponding to this list -- is executed, which prints a euro symbol 
% from one of Adobe's Euroserif founts, and the \comname{euro} command 
% finishes.
% \end{enumerate}
% You might be wondering what the \comname{faketexteuro} list is for. If 
% a fount family is listed in \comname{faketexteuro}, the 
% \comname{maketexteuro} command will always execute the 
% \comname{makefakeeuro} command to generate a faked euro symbol for 
% that fount family. It prevents the \comname{euro} command from 
% printing a euro symbol using the \comname{texteuro} command. I'm not 
% sure that this is particularly useful, but it seemed like a good idea 
% at the time.
% 
% Another unanswered question is: what happens if the \comname{euro} 
% command has made all its tests and not printed a euro symbol? In this 
% case, the \comname{makedefaulteuro} command is executed. By default, 
% this command executes the \comname{makefakeeuro} command which prints 
% a euro symbol faked with medium weight rules. You can of course 
% re-define the \comname{makedefaulteuro} and \comname{makefakeeuro} 
% commands any way you like.
% 
% The \comname{EF...serieslist} commands are used by the commands that 
% print faked euro symbols; these commands are slightly more involved 
% than you might think. I'll deal with this in detail in a bit.
% 
% \subsection{The \comname{make...euro} commands}\label{sec:config-makeeuro}
% 
% It might be that you want to do something that can't be done 
% conveniently by just changing which fount families are listed in the 
% lists above. If so, you'll probably find it most convenient to play 
% around with the definitions of the various \comname{make...euro} 
% commands; please do cut-and-paste the original definitions into the 
% configuration file and modify them there if you think this will help. 
% I used the \comname{providecommand} command to define all the 
% \comname{make...euro} commands so that the definitions in 
% \filename{eurofont.sty} won't have any effect if the commands have 
% been defined earlier. There's more detail on what these commands do in 
% section~\vref{sec:how_it_works} and in the commented source code.
% 
% The \comname{euro} command works like this: the current fount family 
% name is compared against the contents of a series of lists. If the 
% current fount family is present in a particular list, the command 
% corresponding to that list is executed. The first match ends the 
% execution of the \comname{euro} command: you'll not get two euro 
% symbols if the current fount family is in two lists. You can see what 
% I mean in section~\vref{sec:how_euro_works}.
% 
% One anomaly is the second test made in the \comname{euro} command, 
% directly after looking in \comname{userlist}: this second test doesn't 
% check for a match in a list, but instead checks for the existence of a 
% command \comname{<fam>euro}, where |<fam>| is the current fount family 
% name. If this command exists, it's executed and the \comname{euro} 
% command ends. For example, if you define:
%\begin{verbatim}
%    \newcommand{\pcreuro}{EUR}
%\end{verbatim}
% every time you use the \comname{euro} or \comname{euros} command while 
% using Courier -- which has the fount family name \lfntname{pcr} -- 
% you'll get `EUR' printed (the standard international abbreviation for 
% the euro) rather than a euro symbol of any sort.
% 
% This table is a partial summary of what goes on:
% \begin{center}\small
% \begin{tabularx}{\textwidth}{@{}ll>{\raggedright\arraybackslash}X@{}}
% \textbf{List name}       & \textbf{Command executed}
%                          & \textbf{What you get by default}      \\[1ex]
% \comname{userlist}       & \comname{makeusereuro}   
%                          & Fakes a euro and prints a warning.      \\
%                          & \comname{<fam>euro}
%                          & If it exists, \comname{<fam>euro} is 
%                            executed.                               \\
% \comname{texteurolist  } & \comname{maketexteuro}    
%                          & Prints a euro symbol from the current 
%                            fount or a faked euro symbol.           \\
% \comname{chinaelist}     &  \comname{makechinaeeuro}
%                          & Prints the euro from the China2e fount. \\
% \comname{cmlist}         &  \comname{makecmeuro}
%                          & Prints a euro symbol from the current
%                            fount or a faked euro symbol.           \\
% \comname{seriflist}      &  \comname{makeserifeuro}  
%                          & Prints a euro from Adobe Euroserif.     \\
% \comname{sanslist}       &  \comname{makesanseuro}  
%                          & Prints a euro from Adobe Eurosans.      \\ 
% \comname{monolist}       &  \comname{makemonoeuro}  
%                          & Prints a euro from Adobe Euromono.      \\ 
% \comname{fakelightlist}  &  \comname{makefakelighteuro}   
%                          & Fakes a euro with light weight rules.   \\
% \comname{fakemediumlist} &  \comname{makefakemediumeuro} 
%                          & Fakes a euro with medium weight rules.  \\
% \comname{fakeheavylist}  &  \comname{makefakeheavyeuro}   
%                          & Fakes a euro with heavy weight rules.   \\
% \end{tabularx}
% \end{center}
% What happens when you use the \comname{euro} command is that each list 
% is considered in turn, starting with the \comname{userlist}. If the 
% fount family being used at that point in the document is in that list, 
% a euro symbol is generated by the specified command and that's the end 
% of the command. If the fount family being used isn't in the first 
% list, the next list is looked at and so on. If this explanation is 
% less than crystal clear, you might find it useful to read 
% section~\vref{sec:how_euro_works}.
% 
% If each list has been checked and the current fount family hasn't been 
% found in any of them, the \comname{makedefaulteuro} command is 
% executed. This produces a faked euro symbol: the \packname{eurofont} package 
% has commands to make these by drawing two rules over a letter C; they 
% can be surprisingly acceptable particularly if made with a sanserif 
% fount.
% 
% A brief description of what each of the \comname{make...euro} command 
% does is:
% 
% \begin{description}
% \item[\comname{makefakeeuro}] This command doesn't correspond to a 
% list, but is used by the \comname{makedefaulteuro} command and other 
% parts of the \packname{eurofont} package. What it does is this: it 
% first checks to see if the command \comname{<fam>fakeeuro} exists, 
% where |<fam>| is the current \LaTeX\ fount family name. If this 
% command exists, it's executed; if not, the current fount family name 
% is checked against (in this order) the \comname{fakelightlist}, 
% \comname{fakemediumlist}, and \comname{fakeheavylist}. If there's a 
% match, it executes \comname{makefakelighteuro}, 
% \comname{makefakemediumeuro}, or \comname{makefakeheavyeuro} 
% (depending on which list had the match). If it finds no match, it 
% executes \comname{makefakemediumeuro}.
% 
% The \comname{makefake...euro} commands produce euro symbols faked by 
% placing a pair of rules over a letter `C'.
% 
% For example, if you were using Zapf Chancery, which has an internal 
% \LaTeX\ fount family name of \lfntname{pzc}, and 
% \comname{makefakeeuro} were executed, the first test would be to see 
% if \comname{pzcfakeeuro} existed. Since \packname{eurofont} does 
% define this command, it exists, and is executed.
% 
% \item[\comname{makeusereuro}] Meant to be defined by you; by default, 
% this command generates an on-screen warning and executes the 
% \comname{fakemediumrule\-euro} command which prints a euro symbol 
% faked with medium rules.
% 
% \item[\comname{maketexteuro}]\label{item:maketexteuro:config}
% This command executes the \comname{texteuro} command if these three 
% conditions are met: the current \LaTeX\ fount family is not listed in 
% the \comname{faketexteurolist}, the \comname{texteuro} command exists 
% (it's defined by the \packname{textcomp} package which 
% \packname{eurofont} tries to load by default), and the fount 
% definition file |ts1<fam>.fd| exists (where |<fam>| is the current 
% \LaTeX\ fount family name -- this \filename{fd} file will normally 
% exist if the fount does have a euro symbol available). If these 
% conditions are not met, it executes \comname{makefakeeuro} instead of 
% \comname{texteuro}.
% 
% The \comname{texteuro} command, defined by \packname{textcomp}, prints 
% a euro symbol from the current fount, assuming everything's working 
% right; the \comname{makefakeeuro} command prints a euro symbol faked 
% by placing two rules over a letter `C'.
% 
% \item[\comname{makechinaeeuro}] This command prints the euro symbol 
% from the China2e fount. If the current fount series is listed as light 
% or medium by being in either \comname{EFlightserieslist} or 
% \comname{EFmediumserieslist} you'll get the straight China2e euro 
% symbol; if the current fount series is listed as bold or ultra bold by 
% being in either \comname{EFbold\-series\-list} or 
% \comname{EFultraboldserieslist} you'll get a faked bold China2e euro 
% symbol. If the current fount series isn't listed in any of these 
% lists, you'll get a straight China2e euro symbol.
% 
% The \comname{makechinaeeuro} command checks for the \packname{china2e} 
% package: if it's missing, you'll get a warning message and a faked 
% euro symbol.
% 
% \item[\comname{makecmeuro}] This command normally has the same effect 
% as \comname{maketexteuro}: it executes the \comname{texteuro} command 
% if the three conditions are met (see above, in the 
% \comname{maketexteuro} entry on 
% page~\pageref{item:maketexteuro:config}); otherwise, it executes 
% \comname{makefakeeuro} -- this command fakes a euro symbol from a C 
% over-printed with two rules. This behaviour can be changed using an 
% option: if you've passed the \packname{eurosym} option to 
% \packname{eurofont}, the \comname{makecmeuro} command prints Eurosym's 
% euro symbol instead.
% 
% \item[\comname{makeserifeuro}]
% This command normally prints a euro symbol from one of Adobe's 
% Euroserif founts (medium, italic, bold, or bold italic). If you've 
% passed the \optname{marvosym} option to \packname{eurofont}, you'll 
% get a seriffed euro symbol from the Marvosym fount instead. Since 
% Marvosym doesn't have real bold euro symbols, you'll get a faked bold 
% euro symbol if the current fount series is listed in  
% \comname{EFboldserieslist} or \comname{EFultraboldserieslist} (as 
% with the \comname{makechinaeeuro} command).
% 
% If you've passed the \optname{eurosym} option to \packname{eurofont}, 
% you'll get a euro symbol generated by \packname{eurosym}'s 
% \comname{euro} command: this option over-rides both the 
% \optname{marvosym} option and the default \optname{adobeeurofonts} 
% option.
% 
% The commands \comname{makeserifeuro}, \comname{makesanseuro}, and 
% \comname{makemonoeuro} are very similar.
% 
% \item[\comname{makesanseuro}] 
% This command normally prints a euro symbol from one of Adobe's 
% Eurosans founts (medium, italic, bold, or bold italic). If you've 
% passed the \optname{marvosym} option to \packname{eurofont}, you'll 
% get a sanserif euro symbol from the Marvosym fount instead. Since 
% Marvosym doesn't have real bold euro symbols, you'll get a faked bold 
% euro symbol if the current fount series is listed in 
% \comname{EFboldserieslist} or \comname{EFultraboldserieslist} (as 
% with the \comname{makechinaeeuro} command).
% 
% If you've passed the \optname{eurosym} option to \packname{eurofont}, 
% you'll get a euro symbol generated by \packname{eurosym}'s \comname{euro} 
% command: this option over-rides both the \optname{marvosym} option and 
% the default \optname{adobeeurofonts} option.
% 
% The commands \comname{makeserifeuro}, \comname{makesanseuro}, and 
% \comname{makemonoeuro} are very similar.
% 
% \item[\comname{makemonoeuro}] 
% This command normally prints a euro symbol from one of Adobe's 
% Euromono founts (medium, italic, bold, or bold italic). If you've 
% passed the \optname{marvosym} option to \packname{eurofont}, you'll 
% get a monospaced euro symbol from the Marvosym fount instead. Since 
% Marvosym doesn't have real bold euro symbols, you'll get a faked bold 
% euro symbol if the current fount series is listed in 
% \comname{EFboldserieslist} or \comname{EFultraboldserieslist} (as 
% with the \comname{makechinaeeuro} command).
% 
% If you've passed the \optname{eurosym} option to \packname{eurofont}, 
% you'll get a euro symbol generated by \packname{eurosym}'s \comname{euro} 
% command: this option over-rides both the \optname{marvosym} option and 
% the default \optname{adobeeurofonts} option.
% 
% The commands \comname{makeserifeuro}, \comname{makesanseuro}, and 
% \comname{makemonoeuro} are very similar.
% 
% \item[\comname{makefakelighteuro}] 
% First checks to see if the command \comname{<fam>fakeeuro} exists 
% (where |<fam>| is the name of the current fount family); if so, it 
% executes \comname{<fam>fakeeuro} (as with \comname{makefakeeuro}). If 
% not, it executes \comname{fakelighteuro} -- this gives you a euro 
% symbol faked with light rules.
% 
% The particular weight (or thickness) of these rules varies depending 
% on which \comname{EF...serieslist} the current fount series is in: the 
% rules are lightest if the current fount series is listed in 
% \comname{EFlightserieslist}, progressively heavier if listed in 
% \comname{EFmediumseries} and \comname{EFboldseries}, and heaviest if 
% listed in \comname{EFultraboldseries}. If the current fount series 
% isn't listed in any of these lists, you get the rules you'd get if the 
% current series were listed in \comname{EFmediumseries}.
% 
% This command is very similar to the commands 
% \comname{makefakemediumeuro} and \comname{makefakeheavyeuro}.
% 
% \item[\comname{makefakemediumeuro}] 
% First checks to see if the command \comname{<fam>fakeeuro} exists 
% (where |<fam>| is the name of the current fount family); if so, it 
% executes \comname{<fam>fakeeuro} (as with \comname{makefakeeuro}). If 
% not, it executes \comname{fakemediumeuro} -- this gives you a euro 
% symbol faked with medium weight rules.
% 
% The particular weight (or thickness) of these rules varies depending 
% on which \comname{EF...serieslist} the current fount series is in: the 
% rules are lightest if the current fount series is listed in 
% \comname{EFlightserieslist}, progressively heavier if listed in 
% \comname{EFmediumseries} and \comname{EFboldseries}, and heaviest if 
% listed in \comname{EFultraboldseries}. If the current fount series 
% isn't listed in any of these lists, you get the rules you'd get if the 
% current series were listed in \comname{EFmediumseries}.
% 
% This command is very similar to the commands 
% \comname{makefakemediumeuro} and \comname{makefakeheavyeuro}.
% 
% \item[\comname{makefakeheavyeuro}] 
% First checks to see if the command \comname{<fam>fakeeuro} exists 
% (where |<fam>| is the name of the current fount family); if so, it 
% executes \comname{<fam>fakeeuro} (as with \comname{makefakeeuro}). If 
% not, it executes \comname{fakeheavyeuro} -- this gives you a euro 
% symbol faked with heavy rules.
% 
% The particular weight (or thickness) of these rules varies depending 
% on which \comname{EF...serieslist} the current fount series is in: the 
% rules are lightest if the current fount series is listed in 
% \comname{EFlightserieslist}, progressively heavier if listed in 
% \comname{EFmediumseries} and \comname{EFboldseries}, and heaviest if 
% listed in \comname{EFultraboldseries}. If the current fount series 
% isn't listed in any of these lists, you get the rules you'd get if the 
% current series were listed in \comname{EFmediumseries}.
% 
% This command is very similar to the commands 
% \comname{makefakemediumeuro} and \comname{makefakeheavyeuro}.
% 
% \item[\comname{makedefaulteuro}] 
% This command normally prints a faked euro symbol generated with the 
% \comname{makefakeeuro} command.
% 
% If you've passed the \optname{eurosym} option to \packname{eurofont}, 
% the \comname{makedefaulteuro} command prints a euro symbol generated 
% by \packname{eurosym}'s \comname{euro} command. Otherwise, the 
% \comname{makedefaulteuro} command prints a faked euro symbol generated 
% with the \comname{makefakeeuro} command.
% 
% For the curious: \packname{eurofont} defines the \comname{ESeuro} 
% command to be whatever \packname{eurosym} defined the \comname{euro} 
% command to be. \packname{Eurofont} can then define the \comname{euro} 
% command to be something else, but \packname{eurosym}'s \comname{euro} 
% code is still accessible by using the \comname{ESeuro} command.
% 
% \end{description}
% 
% \section{Founts containing euro symbols}\label{sec:getfounts}
% 
% This section was written in October 1998: I know that there are founts 
% other than the ones I've noted below that contain euro symbols, but 
% these are the only ones I know of that are convenient to use with 
% \LaTeX. As far as I know, the founts currently included with `euro 
% compatible' versions of MS-Windows and the MacOS have a euro symbol 
% that is close to the official euro symbol. This doesn't match the 
% fount it's included with in most cases. It seems to me that there is 
% nothing to be gained by using these euro symbols with \LaTeX. I expect 
% this situation will change in time, and matching euro symbols are 
% designed for more founts.
% 
% Aside from the Text Companion founts which accompany the EC founts 
% (the relatively new T1 encoded versions of the standard Computer 
% Modern founts used by \LaTeX -- I think they are included with all 
% recent \LaTeX\ distributions), Metafont euro symbols are included in 
% two other founts available from CTAN: China2e, which has a single very 
% lovely euro symbol; and Eurosym, which has the official euro symbol. 
% You can find out how to get all of these in 
% section~\vref{sec:getMFfounts}.
% 
% The euro symbols in the Text Companion founts were designed before 
% the final official euro symbol was decided on, and might be considered 
% a bit eccentric by some.
% 
% I know of two sets of \PS Type 1 founts containing euro 
% symbols: Adobe's Eurofonts, a set of 12 founts providing seriffed, 
% sanserif, and monospaced euro symbols in medium upright, italic, bold, 
% and bold italic version; and the Marvosym fount, which has three euro 
% symbols, very similar to the medium upright seriffed, sanserif, and 
% monospaced euro symbols from Adobe.
% 
% Your \TeX\ system's documentation should tell you if you can use \PS 
% Type 1 founts. Typically, you need either: a \PS printer or \PS 
% interpreter on your computer such as Ghostscript; or Adobe Type 
% Manager (ATM) installed on your computer and a \dvidriver (such as 
% \OzTeX's) which can take advantage of this.
% 
% \subsection{Getting Marvosym or Adobe's Eurofonts}\label{sec:getPSfounts}
% 
% Adobe's Eurofonts are available (October 1998) in a Mac version 
% from here:
%\begin{verbatim}
% ftp://ftp.adobe.com/pub/adobe/type/mac/all/eurofont.sea.hqx
% ftp://ftp-pac.adobe.com/pub/adobe/type/mac/all/eurofont.sea.hqx
%\end{verbatim}
% Textures users on Macs should also download these files from CTAN:
%\begin{verbatim}
% systems/mac/textures/contrib/IdealFonts/EuroDefs.sit.hqx
% systems/mac/textures/contrib/IdealFonts/README.IF
%\end{verbatim}
% You should still download Adobe's Eurofonts separately.
% 
% Adobe's Eurofonts are available (October 1998) in a version suitable 
% for MS-Windows PCs and Unix from here:
%\begin{verbatim}
% ftp://ftp.adobe.com/pub/adobe/type/win/all/eurofont.exe
% ftp://ftp-pac.adobe.com/pub/adobe/type/win/all/eurofont.exe
%\end{verbatim}
% These files are self-extracting archives on MS-Windows computers which 
% can be decompressed on Unix computers with the \verb|unzip| command.
% 
% The Marvosym fount is available from CTAN in \filename{pfb} and 
% \filename{pfa} versions, and I gather these versions won't work with 
% ATM. There are also Mac versions based on the Y\&Y re-working of 
% Marvosym mentioned below -- a Truetype version and a Mac PS Type 1 
% version that will work with ATM.
% 
% The Marvosym fount and package are (October 1998) in this location at 
% CTAN:
% site (October 1998):
%\begin{verbatim}
%    /fonts/psfonts/marvosym/
%\end{verbatim}
%
% A version which is apparently ATM compatible (implying the original 
% version from CTAN isn't) is available from here:
%\begin{verbatim}
%    http://www.YandY.com/download/marvosym.zip
%\end{verbatim}
% Note that the metrics for this version of Marvosym are slightly 
% different to the original; to use this version of Marvosym with 
% \packname{eurofont}, you should re-name the file 
% \filename{marvosym.tfm} to \filename{fmvr8x.tfm} and put it on your 
% tex-fonts path.
% 
% Martin Vogel's Web page contains a TrueType version of Marvosym, in 
% a format suitable for MS-Windows computers:
%\begin{verbatim}
%   http://www.fh-bochum.de/fb1/vogel/marvosym.html
%\end{verbatim}
% 
% \subsection{\Dvidriver configuration for 
% Adobe's Eurofonts and the Marvosym fount} \label{sec:dvidriver_config}
% 
% This section contains information on how to configure dvips and 
% \OzTeX\ to use Adobe's Eurofonts and the Marvosym fount. I believe 
% that pdf\TeX\ can use dvips entries.
% 
% You might find it useful to refer to the file \filename{dvidrive.txt} 
% that is created by running \LaTeX\ on \filename{eurofont.ins}: 
% \filename{dvidrive.txt} contains a plain text version of this 
% \dvidriver configuration information, so you can cut and paste the 
% lines you need to the appropriate file on your computer.
% 
% If you have any problems with this information, or if you have 
% information on how to configure other \dvidriver{}s, please let me 
% know by email.
% 
% \subsubsection{\Dvidriver configuration lines for Adobe's Eurofonts}
% 
% This section contains information for configuring \dvidriver{}s to use 
% these \PS Type 1 founts; what you need to do is add the given 
% lines to a file so that your \dvidriver knows which \PS Type 1 fount 
% file (and so on) corresponds to a particular \filename{tfm} file in a 
% \filename{dvi} file. In the case of dvips, the file you add lines to 
% is typically called \filename{psfonts.map}. In the case of \OzTeX, you 
% will normally add lines to the \filename{Default} configuration file 
% -- if you also use dvips, you'll add lines to \filename{psfonts.map} 
% as well.
% 
% Note that versions of dvips before v5.83 have trouble doing partial fount 
% downloading with Adobe's Eurofonts. Because of this, I have listed the 
% dvips psfont.map entries with `|<<|' and with `|<|': the `|<<|' 
% entries prevent dvips attempting to do partial fount downloading with 
% that particular fount.
% 
% The `|<<|' syntax does not work with all versions of dvips; it does 
% work with dvips~v5.78, but doesn't work with v5.70. If you're using a 
% pre `|<<|' dvips, you should use the entries with `|<|' and don't use 
% partial fount downloading with any document containing Adobe's 
% Eurofonts; passing the |-j0| switch to dvips will prevent it from 
% doing partial fount downloading if this is normally turned on.
% 
% I've asked the author of dvips when the `|<<|' syntax was first introduced, 
% and he can't remember.
% 
% I am told that pdf\TeX\ can do partial fount downloading using Adobe's 
% Eurofonts.
% 
% \paragraph{Eurofont configuration lines for MS-Windows and Unix}
% 
% The following lines were supplied by Stefan Ulrich 
% |<ulrich@cis.uni-muenchen.de>|, who tells me that you need to re-name 
% the \filename{PFB} files \filename{pfb}.
% 
% If these lines work with computers other than those running 
% MS-Windows and Unix, please let me know so I can change the 
% documentation to suit.
% 
% The following entries are for dvips~v5.78 and possibly some other 
% versions:
%\begin{verbatim}
%    zpeurs  EuroSans-Regular     <<_1______.pfb
%    zpeubs  EuroSans-Bold        <<_1B_____.pfb
%    zpeuris EuroSans-Italic      <<_1I_____.pfb
%    zpeubis EuroSans-BoldItalic  <<_1BI____.pfb
%    zpeurt  EuroMono-Regular     <<_2______.pfb
%    zpeubt  EuroMono-Bold        <<_2B_____.pfb
%    zpeurit EuroMono-Italic      <<_2I_____.pfb
%    zpeubit EuroMono-BoldItalic  <<_2BI____.pfb
%    zpeur   EuroSerif-Regular    <<_3______.pfb
%    zpeub   EuroSerif-Bold       <<_3B_____.pfb
%    zpeuri  EuroSerif-Italic     <<_3I_____.pfb
%    zpeubi  EuroSerif-BoldItalic <<_3BI____.pfb
%\end{verbatim}
% 
% The following entries are for dvips~v5.70 or earlier, probably dvips 
% v5.79 and above, and pdf\TeX. Since that I don't use pdf\TeX, this 
% suggestion might not work -- please let me know if you have any 
% problems.
%\begin{verbatim}
%    zpeurs  EuroSans-Regular     <_1______.pfb
%    zpeubs  EuroSans-Bold        <_1B_____.pfb
%    zpeuris EuroSans-Italic      <_1I_____.pfb
%    zpeubis EuroSans-BoldItalic  <_1BI____.pfb
%    zpeurt  EuroMono-Regular     <_2______.pfb
%    zpeubt  EuroMono-Bold        <_2B_____.pfb
%    zpeurit EuroMono-Italic      <_2I_____.pfb
%    zpeubit EuroMono-BoldItalic  <_2BI____.pfb
%    zpeur   EuroSerif-Regular    <_3______.pfb
%    zpeub   EuroSerif-Bold       <_3B_____.pfb
%    zpeuri  EuroSerif-Italic     <_3I_____.pfb
%    zpeubi  EuroSerif-BoldItalic <_3BI____.pfb
%\end{verbatim}
% 
% \paragraph{Eurofont configuration lines for Macs}
% 
% Macintosh \filename{psfonts.map} entries for dvips v5.78 and possibly 
% some other versions:
%\begin{verbatim}
%    zpeur   EuroSerif-Regular     <<EuroSerReg
%    zpeuri  EuroSerif-Italic      <<EuroSerIta
%    zpeub   EuroSerif-Bold        <<EuroSerBol
%    zpeubi  EuroSerif-BoldItalic  <<EuroSerBolIta
%    zpeurs  EuroSans-Regular      <<EuroSanReg
%    zpeuris EuroSans-Italic       <<EuroSanIta
%    zpeubs  EuroSans-Bold         <<EuroSanBol
%    zpeubis EuroSans-BoldItalic   <<EuroSanBolIta
%    zpeurt  EuroMono-Regular      <<EuroMonReg
%    zpeurit EuroMono-Italic       <<EuroMonIta
%    zpeubt  EuroMono-Bold         <<EuroMonBol
%    zpeubit EuroMono-BoldItalic   <<EuroMonBolIta
%\end{verbatim}
% 
% 
% Macintosh \filename{psfonts.map} entries for dvips~v5.70 or before, 
% probably dvips v5.79 and above, and pdf\TeX. Since that I don't use 
% pdf\TeX, this suggestion might not work -- please let me know if you 
% have any problems.
%\begin{verbatim}
%    zpeur   EuroSerif-Regular     <EuroSerReg
%    zpeuri  EuroSerif-Italic      <EuroSerIta
%    zpeub   EuroSerif-Bold        <EuroSerBol
%    zpeubi  EuroSerif-BoldItalic  <EuroSerBolIta
%    zpeurs  EuroSans-Regular      <EuroSanReg
%    zpeuris EuroSans-Italic       <EuroSanIta
%    zpeubs  EuroSans-Bold         <EuroSanBol
%    zpeubis EuroSans-BoldItalic   <EuroSanBolIta
%    zpeurt  EuroMono-Regular      <EuroMonReg
%    zpeurit EuroMono-Italic       <EuroMonIta
%    zpeubt  EuroMono-Bold         <EuroMonBol
%    zpeubit EuroMono-BoldItalic   <EuroMonBolIta
%\end{verbatim}
% 
% 
% \OzTeX\ config file entries: these lines are normally added to the 
% \filename{Default} config file in \OzTeX's \filename{Configs} folder. 
% These lines should work with any version of \OzTeX\ from at least 
% version~1.7 onwards. Please let me know if you have any problems.
%\begin{verbatim}
%    zpeur    EuroSerif-Regular     "Euro Serif"      nil   
%    zpeuri   EuroSerif-Italic      "Euro Serif"      nil i 
%    zpeub    EuroSerif-Bold        "Euro Serif"      nil b 
%    zpeubi   EuroSerif-BoldItalic  "Euro Serif"      nil bi
%    zpeurs   EuroSans-Regular      "Euro Sans"       nil   
%    zpeuris  EuroSans-Italic       "Euro Sans"       nil i 
%    zpeubs   EuroSans-Bold         "Euro Sans"       nil b 
%    zpeubis  EuroSans-BoldItalic   "Euro Sans"       nil bi
%    zpeurt   EuroMono-Regular      "Euro Monospace"  nil   
%    zpeurit  EuroMono-Italic       "Euro Monospace"  nil i 
%    zpeubt   EuroMono-Bold         "Euro Monospace"  nil b 
%    zpeubit  EuroMono-BoldItalic   "Euro Monospace"  nil bi
%\end{verbatim}
% 
% \subsubsection{\Dvidriver configuration lines for 
% Marvosym}\label{sec:dvidriver_config:mvs}
% 
% I have been greatly confused while trying to work out how to configure 
% \dvidriver{}s to use Marvosym. I think I've got it right, but I can't 
% test on anything but my Mac. I'd appreciate an email if you find that 
% any of the information below turns out to be wrong.
% 
% There are two versions of the Marvosym out there in network land: the 
% original, and a version that's been re-worked by Y\&Y. As far as I can 
% work out, the Y\&Y version of Marvosym has identical glyphs to the 
% original, and differs in that it works properly with ATM and has 
% better hinting. This means that the new version should render better 
% at low and medium resolutions. In other words, I think the Y\&Y 
% version is better than the original.  The metrics for the two 
% versions are very slightly different to each other, so you should make 
% sure you're using the \filename{tfm} file that came with the version 
% of the Marvosym fount that you're using.
% 
% Dvips \filename{psfonts.map} entries for the original Marvosym fount:
%\begin{verbatim}
%  fmvr8x  Martin_Vogels_Symbole                   <marvosym.pfb
%  fmvri8x Martin_Vogels_Symbole " .167 SlantFont" <marvosym.pfb
%\end{verbatim}
%
% Dvips \filename{psfonts.map} entries for the Y\&Y `ATM compatible' 
% re-worked Marvosym fount:
%\begin{verbatim}
%  fmvr8x   Marvosym                    <marvosym.pfb
%  fmvri8x  Marvosym " .167 SlantFont"  <marvosym.pfb
%\end{verbatim}
%
% I have assumed that all \dvidriver{}s that can use \PS Type 1 founts 
% can also produce fake italic founts by slanting an upright version.  
% Because of this, I have made no provision for \dvidriver{}s that can't 
% do this.  If you have a \dvidriver that can't fake an italic, please 
% let me know and I'll modify the \packname{eurofont} package to take 
% this into account, probably by adding another option and writing a 
% new \filename{fd} file.
% 
% \paragraph{Note for Macintosh users}
%
% A Mac version of the Marvosym fount has been created in \PS Type 1 and 
% TrueType versions. It uses the Y\&Y names as above, and 
% these lines are be needed for dvips's \filename{psfonts.map} file:
%\begin{verbatim}
%  fmvr8x   Marvosym                    <Marvo
%  fmvri8x  Marvosym " .167 SlantFont"  <Marvo
%\end{verbatim}
% And these lines for \OzTeX's default config file:
%\begin{verbatim}
%  fmvr8x    Marvosym     Marvosym     nil
%  fmvri8x   Marvosym     Marvosym     nil i
%\end{verbatim}
%
% If a version of the original Marvosym fount is ever released for Macs, 
% these  lines will be needed for dvips's \filename{psfonts.map} file:
%\begin{verbatim}
%  fmvr8x  Martin_Vogels_Symbole                   <MartiVogSym
%  fmvri8x Martin_Vogels_Symbole " .167 SlantFont" <MartiVogSym
%\end{verbatim}
% And these lines for \OzTeX's default config file:
%\begin{verbatim}
%  fmvr8x    MartiVogSym  "Martin Vogels Symbole"       nil
%  fmvri8x   MartiVogSym  "Martin Vogels Symbole"       nil i
%\end{verbatim}
% 
% \subsection{Metafont founts containing euro symbols}\label{sec:getMFfounts}
% 
% The three Metafont sources of euro symbols that I know of are the 
% Text Companion founts, the China2e fount, and the Eurosym fount.  If 
% you know of others, I'd appreciate an email to tell me about them.
% 
% The current (October 1998) version of \LaTeX\ is set up to work with 
% the relatively new T1 (and TS1) encoded versions of the usual Computer 
% Modern founts. If you don't have the `European Computer Modern' and 
% `Text Companion' founts -- otherwise known as the EC and TC founts -- 
% it might be a good idea to get them now: the TS1 encoded Text 
% Companion founts are the ones containing euro symbols. 
% 
% If the above paragraph doesn't make much sense to you, you can find 
% out if your \LaTeX\ has access to the European Computer Modern and 
% Text Companion founts by \LaTeX ing this file:
%\begin{verbatim}
%    \documentclass{article}
%      \usepackage[T1]{fontenc}
%      \usepackage{textcomp}
%      \begin{document}
%        Hello world.  \texteuro.
%      \end{document}
%\end{verbatim}
% If you get no error messages, you have access to both the European 
% Computer Modern (EC) and Text Companion (TC) founts.
% 
% If not, you can get these founts, as well as the Eurosym and China2e 
% founts and packages, from these locations at your nearest CTAN 
% site:
%\begin{verbatim} 
%    /fonts/ec/
%    /fonts/eurosym/
%    /macros/latex/contrib/supported/china2e/
%\end{verbatim}
% 
% \section{Potentially useful extra information}
% 
% Most of the ideas in the \packname{eurofont} package are not my own 
% invention, and are documented elsewhere. \LaTeX's fount selection 
% scheme, for example, is documented in the file 
% \filename{fntguide.tex} which is part of the standard \LaTeX\ 
% distribution. The file \filename{simple-nfss.tex} kept in the
% \filename{info/} directory at CTAN is also useful.
% 
% If you're interested in understanding the details of the source code, 
% you'll probably find it useful to read \filename{clsguide.tex} (also 
% part of the standard \LaTeX\ distribution), as well as Leslie 
% Lamport's `\LaTeX, a document preparation system', 2nd edition, 
% Addison-Wesley.  Donald Knuth's `The \TeX book', also published by 
% Addison-Wesley, is probably essential reading.  Goosens, Mittlebach, 
% and Samarin's `The \LaTeX\ Companion', published by Addison-Wesley, is 
% apparently a useful source of documentation on the internals of 
% \LaTeX; I've found the commented \LaTeX\ source code an adequate 
% substitute for this book.
% 
% \subsection{Fount families and series}\label{sec:fountfamilies}
% 
% \LaTeXe\ comes with a way of selecting founts called the New Fount 
% Selection Scheme (NFSS). Each fount you use is specified by five 
% things: encoding, family, series, shape, and size. A typical 
% specification is |OT1/ptm/m/n at 12pt|. This means an \lfntname{OT1} 
% encoded version of \lfntname{ptm} (Adobe Times) family, \lfntname{m} 
% (medium) series, \lfntname{n} (normal upright roman) shape, in a size 
% of 12pt. The point of the NFSS is to take a particular fount 
% specification -- like |OT1/ptm/m/n at 12pt| -- and work out which 
% \filename{tfm} file should be used.
% 
% This job is essential, because as far as \TeX\ is concerned, a 
% \filename{tfm} file \emph{is} a fount: without a \filename{tfm} file, 
% you get no letters on the page. A \filename{tfm} file is just a list 
% of sizes of each letter and things like that; the actual letter shapes 
% are kept elsewhere. The \dvidriver needs to know which \filename{tfm} 
% file corresponds to which `real' fount, which is what dvips's 
% \filename{psfonts.map} is for.
% 
% What the NFSS does is add a high-level interface to let you select a 
% particular \filename{tfm} file without having to deal with any of the 
% awkward details -- \LaTeX\ has always had some sort of interface to 
% allow this sort of thing, but the NFSS is much better than earlier 
% efforts, and much, much easier to set up for a new set of founts.
% 
% The precise details of exactly which \filename{tfm} file is to be used 
% for each fount specification are contained in the various 
% \filename{fd} files installed on your computer (they're kept somewhere 
% on the tex-inputs path). \filename{ot1ptm.fd}, for example, is 
% consulted in the above example. It says that \filename{ptm7t.tfm} 
% should be used for |OT1/ptm/m/n| at all sizes. This doesn't mean that 
% you can only get Adobe Times in one size, because \TeX\ will scale the 
% fount to the appropriate size -- the instruction to do this is 
% included in the \filename{fd} file.
% 
% You might be wondering what an encoding is. Well, when you type 
% information into a computer, each character you type is given a number 
% and this number is stored in memory: this number `is' the character 
% you have just typed. The relationship between the characters and 
% numbers is called an encoding. ASCII encoding, for example, says that 
% the letter `A' has the number 65; `B' has the number 66, and so on. In 
% the case of \LaTeX, you have two encodings: the input encoding -- 
% which is used to translate the input file into \TeX's internal 
% encoding (which you can forget about for now); and the output 
% encoding, which is used to create the \filename{dvi} file. For 
% example, a Mac user might type an \"{o} (number 194) into a 
% \filename{tex} file. Assuming that he'd said 
% \comname{usepackage[applemac]\ttlb inputenc\ttrb}, that would result 
% in the appropriate character appearing in the \filename{dvi} file. 
% This character would be represented in the \filename{dvi} file by a 
% number 246 if you were using a \lfntname{T1} encoded fount at that 
% point. If you were using an \lfntname{OT1} encoded fount, it would be 
% represented by a combination of character number 128 (umlaut) placed 
% over character number 111 (the letter o). There are many other output 
% and input encodings that are commonly used. It is, for example, common 
% to use ASCII input encoding, so you have to type |\"{o}| to get \"{o}. 
% \LaTeX\ usually sorts out all the details for you so you don't have 
% to think about encodings that often.
% 
% From the point of view of configuring the \packname{eurofont} package, 
% you can probably ignore encodings. The two most common text fount 
% encodings used with \LaTeX\ are \lfntname{OT1} and \lfntname{T1}: 
% the original 7-bit standard encoding and the newer 8-bit standard 
% encoding respectively.
% 
% What \packname{eurofont} is most interested in is the fount family 
% name. This comes after the encoding: |OT1/ptm|, and is usually a three 
% letter abbreviation like \lfntname{ptm} for Adobe Times. The full 
% explanation of the naming scheme is presented in the fontname 
% documentation\footnote{Available from CTAN: \texttt{/info/fontname/}}. 
% In brief, the first letter of this family usually indicates the firm 
% that made the fount. Adobe is indicated by a `\lfntname{p}' (for \PS, 
% because Adobe created \PS). The next two letters indicates the name of 
% the fount. Times is indicated by `\lfntname{tm}'. Not all fount 
% families follow this pattern: the Computer Modern families pre-date 
% the fontname naming scheme, so (for example) the Computer Modern 
% Sanserif family has the name `\lfntname{cmss}'. And some fount families 
% named according to the fontname scheme have very strange names. The 
% Adobe Euroserif family has the name `\lfntname{zpeur}', the letter 
% \lfntname{z} being a prefix meaning `bizarre'.
% 
% There's effectively an unlimited range of fount family names. One way 
% of finding out what the name is of a particular fount family is using 
% \packname{eurofont}'s \comname{showfontfamily} command in your 
% document: it'll print the current fount family on the console and in 
% the log file. For example, if you \LaTeX\ this file:
%\begin{verbatim}
%  \documentclass{article}
%    \usepackage{otherfont}% A fictitious package to select a fount
%    \usepackage{eurofont}
%    \begin{document}
%      Blah blah blah
%     \showfontfamily
%    \end{document}
%\end{verbatim}
% You'll get a message in the log file and the terminal output telling 
% you what the fount family used to typeset `Blah blah blah' is.
% 
% Another way of finding out a particular fount family name is this: 
% files for using different founts with \LaTeX\ -- such as 
% \filename{times.sty} -- tend to contain lines like:
%\begin{verbatim}
%    \renewcommand{\sfdefault}{phv}
%    \renewcommand{\rmdefault}{ptm}
%    \renewcommand{\ttdefault}{pcr}
%\end{verbatim}
% This means that the \lfntname{phv} (Adobe Helvetica) family is used 
% for \comname{sffamily}, the \lfntname{ptm} family (Adobe Times) family 
% is used for \comname{rmfamily}, and the \lfntname{pcr} family (Adobe 
% Courier) is used for \comname{ttfamily}. This means you can find out 
% which fount family is used by examining the package file you use to 
% select it.
% 
% If you're interested in the details of producing faked euro 
% symbols, the fount series becomes relevant.  The normally available 
% fount series are just different weights:
% \begin{center}
% \begin{tabular}{ll|ll}
% ul & ultra light      & sb & semi bold    \\
% el & extra light      & b  & bold         \\
% l  & light            & bx & bold extended\\
% m  & normal (medium)  & eb & extra bold   \\
% mb & medium bold      & ub & ultra bold   \\
% db & demi bold        &                   \\
% \end{tabular}
% \end{center}
% Of these, only two are selectable with normal commands. 
% \comname{bfseries}, for example, selects the \lfntname{bx} (bold 
% extended) series; and \comname{mdseries} selects the \lfntname{m} 
% (normal `medium' weight). Most fount families come in two different 
% weights only. No normal founts are available in the range of weights 
% just listed, although Multiple Master founts (those with a weight 
% design axis) can be used in any number of different weights over 
% almost any range. If you have produced a Multiple Master fount setup 
% that gives you access to the full standard range of \LaTeX\ fount 
% series, you are clearly mad\footnote{And probably called something 
% like Melissa or Sebastian} and equally clearly don't need me to 
% explain anything about the NFSS.
% 
% If you want to select something like ultrabold, one way is to say:
%\begin{verbatim}
%    \fontseries{ub}\selectfont
%\end{verbatim}
% 
% A complication is that some fount families have condensed versions, 
% and this has to be indicated by the fount series too.  This means 
% that the list of `standard' series can be extended to include:
% \begin{center}
% \begin{tabular}{ll|ll}
% ulc & ultra light condensed     & dbc & demi bold condensed       \\
% elc & extra light condensed     & sbc & semi bold condensed       \\
% lc  & light condensed           & bc  & bold condensed            \\
% mc  & normal (medium) condensed & ebc & extra bold condensed      \\
% mbc & medium bold  condensed    & ubc & ultra bold condensed      \\
% \end{tabular}
% \end{center}
% Likewise, a fount family might have extended version of some weights 
% (Computer Modern Roman's Bold Extended is an example of this), so the 
% `standard' list of series must also include variants like 
% \lfntname{ulx} for ultra light extended. This is only relevant to 
% \packname{eurofont} when it's asked to create a faked euro symbol: it 
% has to know which series are bold (or whatever) to decide what 
% thickness lines to draw across the C.
% 
% \section{How \packname{eurofont} works -- in detail}
% \label{sec:how_it_works}
%
% This section is not meant to be a replacement for the rest of the 
% documentation for \TeX nical people. The idea is that this is an 
% intermediate step between the usual user documentation and the rather 
% eccentrically-commented source code -- it's probably a good idea to 
% read the earlier parts of this document before digging in to this 
% section.
%
% The \packname{eurofont} package provides two commands meant to be used 
% in documents for generating a euro symbol: \comname{euro} which just 
% prints a euro symbol, and \comname[amount]{euros} which prints a euro 
% symbol (generated by the \comname{euro} command) next to the argument 
% of the command, with a small space between the two. The euro symbol is 
% to the left of the argument by default: if you pass the 
% \optname{right} option to the \packname{eurofont} package, the euro 
% symbol is printed to the right of the argument of the command.
%
% The \comname{euros} command uses the \comname{euro} command to 
% generate the euro symbol, so everything that applies to the 
% \comname{euro} command also applies to the \comname{euros} command.
%
% I see the package code as being in several main parts: the code for 
% handling the lists, the \comname{euro} command and supporting 
% \comname{make...} commands, the other commands for selecting and 
% printing euro symbols, and the code to construct fake euro symbols.  
% This is an entirely arbitrary division; I mention it in the hope that 
% it might explain the way I've divided up this part of the documentation.
% 
% Note that the \comname{make...euro} commands are all meant to be 
% called directly by the \comname{euro} command; the idea is to give you 
% a `top level' set of commands to modify in the configuration file any 
% way you like, while still allowing access to any of the euro symbols 
% the \packname{eurofont} package is set up to work with by default: 
% the \comname{make...euro} commands are all defined in terms of other 
% commands, and it's these other commands that do the job of actually 
% printing a euro symbol.  You might, for example, change the 
% \comname{makechinaeeuro} command to print `EUR':
%\begin{verbatim}
%    \newcommand{\makechinaeeuro}{EUR}
%\end{verbatim}
% and use entries in the \comname{chinaeeuro} list to select this, rather 
% than the euro symbol I intended.  Even so, the `lower level' command 
% \comname{chinaeeuro} will be unaffected: it will still produce the 
% euro symbol from the China2e fount, and you will still be able to use 
% it.  For example, you might say:
%\begin{verbatim}
%    \newcommand{\pgyeuro}{\chinaeeuro}
%\end{verbatim}
% to get a euro symbol from the China2e fount with Adobe Goudy (family 
% name \lfntname{pgy})
% 
% A point that might be useful to know is this: the \packname{eurofont} 
% package doesn't define the \comname{euro} command when it's loaded 
% using the \comname{usepackage\ttlb eurofont\ttrb} command. What 
% happens is that \packname{eurofont} defines the \comname{EFeuro} 
% command to begin with: \comname{EFeuro} is just \packname{eurofont}'s 
% \comname{euro} command under a different name. The \packname{eurofont} 
% package arranges for the \comname{euro} command that you use in your 
% document to be created later. The way it's done is this: 
% \packname{eurofont} adds some code to the \comname{AtBeginDocument} 
% hook. This code uses \TeX's \comname{let} command to make the 
% \comname{euro} command identical to \comname{EFeuro} at the 
% \comname{begin\ttlb document\ttrb} command. Immediately before this, 
% the code added by \packname{eurofont} uses \TeX's \comname{let} 
% command again to make the \comname{oldeuro} command identical to the 
% \comname{euro} command. This means that \packname{eurofont}'s 
% definition of \comname{euro} will over-ride any earlier definitions, 
% while saving any earlier definitions for you to use. This might also 
% explain strange behaviour you encounter if trying to re-define 
% \comname{euro} yourself in a document preamble. It's probably best to 
% do something like this:
% \label{sec:how_it_works:redefine_euro}
%\begin{verbatim}
%  \documentclass{whateveryouwant}
%    ...
%    \usepackage{eurofont}
%    \newcommand{\myeuro}{Some code}
%    \AtBeginDocument{\let\euro\myeuro}
%    ...
%    \begin{document}
%\end{verbatim}
% The \packname{eurosym} package is a special case: if you pass the 
% \optname{eurosym} option to \packname{eurofont}, \packname{eurofont} 
% uses \comname{let} to make the \comname{ESeuro} command identical to 
% \packname{eurosym}'s \comname{euro} command just after 
% \packname{eurofont} has loaded \packname{eurosym}. This 
% \comname{ESeuro} command appears in \packname{eurofont}'s code in 
% various places: remember that it's defined to be whatever the 
% \packname{eurosym} package defined the \comname{euro} command to be.
% 
% \subsection{The \comname{euro} command}\label{sec:how_euro_works}
% 
% The \comname{euro} command works like this: it looks at the current 
% fount family (I shall call this \verb|<fam>| for now -- \lfntname{ptm} 
% for Adobe Times, \lfntname{cmr} for Computer Modern Roman, and so on), 
% and performs the following sequence of tests:
%\begin{verbatim}
%If <fam> is in \userlist, \makeusereuro
% else
% if \<fam>euro exists, \<fam>euro
%  else
%  if <fam> is in \texteurolist, \maketexteuro
%   else
%   if <fam> is in \chinaelist, \makechinaeeuro
%    else
%    if <fam> is in \cmlist, \makecmeuro
%     else
%     if <fam> is in \serifeurolist, \makeserifeuro
%      else
%      if <fam> is in \sanseurolist, \makesanseuro
%       else
%       if <fam> is in \monoeurolist, \makemonoeuro
%        else
%        if <fam> is in \makefakelighteurolist, \makefakelighteuro
%         else
%         if <fam> is in \makefakemediumeurolist, \makefakemediumeuro
%          else
%          if <fam> is in \makefakeheavyeurolist, \makefakeheavyeuro
%           else \makedefaulteuro
%           fi fi fi fi fi fi fi fi fi fi fi
%\end{verbatim} 
% In other words, it first looks to see if the current fount family is 
% listed in the \comname{usereurolist}. If it is, it executes the 
% \comname{usereuro} command and finishes. If not, it looks to see if a 
% command \comname{<fam>euro} exists. For example, if you're typesetting 
% with Adobe Times at that point (family name \lfntname{ptm}), it'll 
% look for the \comname{ptmeuro} command. If this command exists, it is 
% executed and the \comname{euro} command finishes. If not, it looks to 
% see if the current fount family is in the \comname{texteurolist}. If 
% it is, the \comname{texteuro} command is executed, and the 
% \comname{euro} command finishes. This continues to the final test: if 
% the current fount family is in the \comname{makefakeheavyeurolist}, 
% the \comname{makefakeheavyeuro} command is executed, and the 
% \comname{euro}command finishes. If it's got to the end of the tests 
% and no match has been found, the \comname{defaulteuro} command is 
% executed.
% 
% It's up to you to define the \comname{makeusereuro} and 
% \comname{<fam>euro} commands.  All the other \comname{make...euro} 
% commands may be re-defined as you see fit, but are defined by the 
% \packname{eurofont} package to produce euro symbols.
% 
% \subsection{The \comname{make...euro} commands}
% 
% What each of these commands does by default is this:
% 
% \subsubsection{\comname{maketexteuro}}
% Executes either the \comname{texteuro} command or the 
% \comname{makefakeeuro} command. The \comname{texteuro} command is 
% normally defined by the \packname{textcomp} package (part of the 
% standard \LaTeX\ distribution) to print a euro symbol from the TS1 
% encoded complement to the current fount. This TS1 encoded complement 
% often does not exist, and even if it does exist, it usually (October 
% 1998) does not have a euro symbol. The \comname{makefakeeuro} command 
% is described in section~\vref{sec:howitworks:makefakeeuro}. The 
% \packname{eurofont} package tries to load the \packname{textcomp} 
% package by default; see section~\vref{sec:all_options} for more 
% details.
% 
% The decision on whether to execute \comname{texteuro} or 
% \comname{makefakeeuro} is made like this: the \comname{texteuro} 
% command is executed if these three conditions are met: 1)~the current 
% fount family is not listed in \comname{faketext\-eurolist}, 2)~the 
% \packname{textcomp} package has been loaded, and 3)~that the fount 
% definition file \filename{ts1<fam>.fd} exists (where |<fam>| is the 
% current fount family name). That \filename{fd} file is the thing that 
% tells \LaTeX\ where to find the symbol asked for in the 
% \comname{texteuro} command defined by the \packname{textcomp} package: 
% if it doesn't exist, the current fount family certainly doesn't have a 
% euro symbol available in the expected place.
% 
% The decision isn't foolproof: there's no way that \TeX\ can check for 
% the existence of a real glyph in a fount (the matter is complicated 
% greatly by virtual founts and `missing glyph' rule boxes), so 
% \comname{maketexteuro}'s checks mustn't be relied on.
% 
% \subsubsection{\comname{makefakeeuro}}
% \label{sec:howitworks:makefakeeuro}
% This command first checks to see if the command 
% \comname{<fam>fakeeuro} exists, where |<fam>| is the name of the 
% current fount family; if this command exists, it's executed. If not, 
% \comname{makefakeeuro} then checks for the presence of the current 
% fount family name in (in this order) \comname{EFfakelightlist}, 
% \comname{EFfakemediumlist}, and \comname{EFfake\-heavylist}. If it finds 
% a match, it executes the corresponding \comname{makefake...euro} 
% command; these are explained below. If it finds no match, it executes 
% the \comname{makefakemediumeuro} command. \comname{makefakeeuro} 
% doesn't appear directly in the definition of the \comname{euro} 
% command.
% 
% \subsubsection{\comname{makechinaeeuro}}
% \label{sec:howitworks:makechinaeeuro}
% Executes the \comname{chinaeeuro} command, which prints a fake 
% bold euro symbol created from the China2e fount's euro symbol if the 
% current \comname{fontseries} is listed in the 
% \comname{EFbold\-serieslist} or the \comname{EFultraboldserieslist}, 
% and a straight euro symbol from the China2e fount otherwise.  The 
% \comname{chinaeeuro} command is described in 
% section~\vref{sec:howitworks:chinaeeuro}.
% 
% \subsubsection{\comname{makecmeuro}} 
% \label{sec:howitworks:makecmeuro}
% If you've given the \optname{eurosym} option to the 
% \packname{eurofont} package and the \packname{eurosym} package has 
% been loaded successfully, \comname{makecmeuro} executes the 
% \comname{ESeuro} command which prints the specified \packname{eurosym} 
% euro symbol, as described in section~\vref{sec:howitworks:makecmeuro}. 
% Otherwise, the \comname{cmeuro} command is executed, which gives you 
% either a euro symbol from the text companion founts, or a faked euro 
% symbol; this faked euro symbol is made with light rules for Computer 
% Modern Roman and medium weight rules for Computer Modern Sanserif 
% and Typewriter. The \comname{cmeuro} command is described in 
% section~\vref{sec:howitworks:cmeuro}.
% 
% \subsubsection{\comname{makeserifeuro}} 
% \label{sec:howitworks:makeserifeuro}
% This executes the \comname{serifeuro} command, described in 
% section~\vref{sec:howitworks:serifeuro}. By default, 
% \comname{serifeuro} executes the \comname{zpeureuro} command, 
% described in section~\vref{sec:howitworks:zpeureuro}, which prints a 
% euro symbol from Adobe's Euroserif fount. If you have given the 
% \optname{marvosym} option to \packname{eurofont} and you have not used 
% the \optname{eurosym} option, the \comname{serifeuro} command will 
% instead execute the \comname{marvosymserifeuro} command, described in 
% section~\vref{sec:howitworks:marvosymserifeuro}: this will try to 
% print a seriffed euro symbol from the Marvosym fount. If the current 
% fount series is in \comname{EFboldserieslist} or 
% \comname{EFultraboldserieslist}, you'll get a faked bold euro from the 
% Marvosym fount. The default setup assumes that your \dvidriver can 
% print a faked italic version of the Marvosym fount.
% 
% If you've given the \optname{eurosym} option to the 
% \packname{eurofont} package and the \packname{eurosym} package has 
% been loaded successfully, the \comname{serifeuro} command prints the 
% specified \packname{eurosym} euro symbol by executing the 
% \comname{ESeuro} command. The \comname{ESeuro} command is described in 
% section~\vref{sec:howitworks:ESeuro}.
% 
% \subsubsection{\comname{makesanseuro}}
% \label{sec:howitworks:makesanseuro}
% This executes the \comname{sanseuro} command, described in 
% section~\vref{sec:howitworks:sanseuro}. By default, \comname{sanseuro} 
% executes the \comname{zpeusseuro} command, described in 
% section~\vref{sec:howitworks:zpeusseuro}, which prints a euro symbol 
% from Adobe's Eurosans fount. If you have given the \optname{marvosym} 
% option to \packname{eurofont} and you have not used the 
% \optname{eurosym} option, the \comname{sanseuro} command will instead 
% execute the \comname{marvosymsanseuro} command, described in 
% section~\vref{sec:howitworks:marvosymsanseuro}: this will try to print 
% a sanserif euro symbol from the Marvosym fount. If the current fount 
% series is in \comname{EFboldserieslist} or the 
% \comname{EFultraboldserieslist}, you'll get a faked bold euro from the 
% Marvosym fount. The default setup assumes that your \dvidriver can 
% print a faked italic version of the Marvosym fount.
% 
% If you've given the \optname{eurosym} option to the 
% \packname{eurofont} package and the \packname{eurosym} package has 
% been loaded successfully, the \comname{sanseuro} command prints the 
% specified \packname{eurosym} euro symbol by executing the \comname{ESeuro} 
% command.
% 
% \subsubsection{\comname{makemonoeuro}} 
% \label{sec:howitworks:makemonoeuro}
% This executes the \comname{monoeuro} command, described in 
% section~\vref{sec:howitworks:monoeuro}. By default, 
% \comname{monoeuro} executes the \comname{zpeutteuro} command, 
% described in section~\vref{sec:howitworks:zpeutteuro}, which prints a 
% euro symbol from Adobe's Euroserif fount. If you have given the 
% \optname{marvosym} option to \packname{eurofont} and you have not used 
% the \optname{eurosym} option, the \comname{monoeuro} command will 
% instead execute the \comname{marvosymmonoeuro} command, described in 
% section~\vref{sec:howitworks:marvosymserifeuro}: this will try to 
% print a monospaced euro symbol from the Marvosym fount. If the current 
% fount series is in \comname{EFboldserieslist} or 
% \comname{EFultraboldserieslist}, you'll get a faked bold euro from the 
% Marvosym fount. The default setup assumes that your \dvidriver can 
% print a faked italic version of the Marvosym fount.
% 
% If you've given the \optname{eurosym} option to the 
% \packname{eurofont} package and the \packname{eurosym} package has 
% been loaded successfully, the \comname{sanseuro} command prints the 
% specified \packname{eurosym} euro symbol by executing the \comname{ESeuro} 
% command.
% 
% \subsubsection{\comname{makefakelighteuro}} 
% \label{sec:howitworks:makefakelighteuro}
% If the command \comname{<fam>fakeeuro} exists (where |<fam>| is the 
% name of the current fount family), execute it. Otherwise, execute the 
% \comname{fakelighteuro} command, which prints a euro symbol faked from 
% a letter C with two light rules printed over it; you can find out more 
% about this in section~\vref{sec:howitworks:fakelighteuro}. The 
% \comname{makefakelighteuro} command is unaffected by the 
% \optname{eurosym} option.
% 
% 
% \subsubsection{\comname{makefakemediumeuro}} 
% \label{sec:howitworks:makefakemediumeuro}
% If the command \comname{<fam>fakeeuro} exists (where |<fam>| is the 
% name of the current fount family), execute it. Otherwise, execute the 
% \comname{fakemediumeuro} command, which prints a euro symbol faked 
% from a letter C with two light rules printed over it; you can find out 
% more about this in section~\vref{sec:howitworks:fakemediumeuro}. The 
% \comname{makefakemediumeuro} command is unaffected by the 
% \optname{eurosym} option.
% 
% \subsubsection{\comname{makefakeheavyeuro}} 
% \label{sec:howitworks:makefakeheavyeuro}
% If the command \comname{<fam>fakeeuro} exists (where |<fam>| is the 
% name of the current fount family), execute it. Otherwise, execute the 
% \comname{fakeheavyeuro} command, which prints a euro symbol faked 
% from a letter C with two light rules printed over it; you can find out 
% more about this in section~\vref{sec:howitworks:fakeheavyeuro}. The 
% \comname{makefakeheavyeuro} command is unaffected by the 
% \optname{eurosym} option.
% 
% \subsubsection{\comname{makedefaulteuro}}
% \label{sec:howitworks:makedefaulteuro}
% Executes the \comname{makefakeeuro} command. This usually prints a 
% euro faked with medium weight rules. See 
% section~\vref{sec:howitworks:makefakeeuro} for more details.
% 
% \subsection{Other commands to print euro symbols}
% 
% \subsubsection{\comname{chinaeeuro}}
% \label{sec:howitworks:chinaeeuro}
% 
% This prints the euro symbol from the China2e fount. There is only one 
% euro character available, in the upright shape and medium weight only. 
% This command uses the \comname{SelectOnWeight} command to print either 
% a China2e euro symbol in its natural state (for light and medium 
% weights), or a `poor man's bold' version for bold and ultra bold 
% weights.
% 
% The \comname{SelectOnWeight} command is described in 
% section~\vref{sec:howitworks:selectonweight}.
% 
% \subsubsection{\comname{cmeuro}}
% \label{sec:howitworks:cmeuro}
% 
% The \comname{cmeuro} command executes the \comname{texteuro} command to 
% print a euro symbol from the TS1 encoded complement of the current 
% fount if these three conditions are met: 1) the current fount family 
% is not in the \comname{faketexteurolist}; 2) the command 
% \comname{texteuro} exists; and 3) the file \filename{ts1<fam>.fd} 
% exists, where \filename{<fam>} is the name of the current fount 
% family. If all three conditions are not met, \comname{cmeuro} executes 
% the \comname{makefakeeuro} command to print a faked euro symbol; this 
% command is described in section~\vref{sec:howitworks:makefakeeuro}.
%
% \subsubsection{\comname{EFeuro}}
% \label{sec:howitworks:EFeuro}
% 
% This is the name under which the \comname{euro} command is defined 
% originally; the \packname{eurofont} package adds some code to the 
% standard \LaTeX\ \comname{AtBeginDocument} hook that makes the 
% \comname{euro} command equivalent to the \comname{EFeuro} command 
% (using the primitive \TeX\ \comname{let} command). This code added to 
% the \comname{AtBeginDocument} hook is executed, unsurprisingly, at the 
% \comname{begin\ttlb document\ttrb} command. It's best not to use the 
% \comname{EFeuro} command yourself unless you have a particular need 
% to, but if you're writing a class or package file that uses 
% \packname{eurofont}, you might have such a need.
% 
% The \comname{EFeuro} command is identical to the \comname{euro} 
% command, but they are different commands. If you want to change the 
% \comname{euro} command in your document, you should do so after the 
% \comname{begin\ttlb document\ttrb} command. One suggestion on how to 
% do this is in section~\vref{sec:how_it_works:redefine_euro}. This way 
% of re-defining the \comname{euro} command means you still have access 
% to \packname{eurofont}'s original \comname{euro} command under the 
% name \comname{EFeuro}. The \comname{EFeuro} command shouldn't be used 
% directly in a \LaTeX\ document. It's not that anything terrible will 
% happen if you do, just that \LaTeX\ convention states that commands 
% with mixed-case names are meant for use by class and package writers 
% only, and it seemed right to me to add this restriction to the 
% \comname{EFeuro} command.
% 
% \subsubsection{\comname{ESeuro}}
% \label{sec:howitworks:ESeuro}
% 
% If you tell the \packname{eurofont} package to load the 
% \packname{eurosym} package, \packname{eurofont} makes the 
% \comname{ESeuro} command identical to the \comname{euro} command 
% defined by \packname{eurosym}. This means that \packname{eurosym}'s 
% \comname{euro} command is still available as \comname{ESeuro}, even 
% though \packname{eurofont} re-defines the \comname{euro} command to be 
% something completely different. It's probably best not to use the 
% \comname{ESeuro} command unless you have no choice in the matter, as 
% is often the case when writing package files.
% 
% In case you're wondering, the \comname{ESeuro} command will be the 
% same as the \comname{oldeuro} command if \packname{eurofont} has 
% loaded \packname{eurosym}.
% 
% \subsubsection{\comname{oldeuro}}
% \label{sec:howitworks:oldeuro}
% 
% The \packname{eurofont} package adds another bit of code to the 
% \comname{AtBeginDocument} hook: this code not only sets the 
% \comname{euro} command to be whatever \comname{EFeuro} has been 
% defined as (as mentioned in section~\vref{sec:howitworks:EFeuro}), but 
% just before that, the code sets the \comname{oldeuro} command to be 
% whatever the \comname{euro} command was at that instant. This means 
% that any package which has defined a \comname{euro} command has not 
% wasted its effort: its command is still available as 
% \comname{oldeuro}.
% 
% As mentioned above, the \comname{ESeuro} command will be the 
% same as the \comname{oldeuro} command if \packname{eurofont} has 
% loaded \packname{eurosym}.
% 
% 
% \subsubsection{\comname{sanseuro}}
% \label{sec:howitworks:sanseuro}
% 
% Depending on what you've asked for in the options to the 
% \packname{eurofont} package, this command executes one of three 
% commands. By default, or if you've used the \optname{adobeeurofonts} 
% option, it executes \comname{zpeusseuro}; if you've used the 
% \optname{marvosym} option, it executes \comname{marvosymsanseuro}; and 
% if you've used the eurosym option (which over-rides the other two), it 
% executes \comname{ESeuro}.
%
% The \comname{zpeusseuro} command is described in 
% section~\vref{sec:howitworks:zpeusseuro}; the 
% \comname{marvosymsans\-euro} is described in 
% section~\vref{sec:howitworks:marvosymsanseuro}; and the 
% \comname{ESeuro} command is described in 
% section~\vref{sec:howitworks:ESeuro}.
% 
% \subsubsection{\comname{serifeuro}}
% \label{sec:howitworks:serifeuro}
% 
% Depending on what you've asked for in the options to the 
% \packname{eurofont} package, this command executes one of three 
% commands. By default, or if you've used the \optname{adobeeurofonts} 
% option, it executes \comname{zpeureuro}; if you've used the 
% \optname{marvosym} option, it executes \comname{marvosymserifeuro}; and 
% if you've used the eurosym option (which over-rides the other two), it 
% executes \comname{ESeuro}.
%
% The \comname{zpeureuro} command is described in 
% section~\vref{sec:howitworks:zpeureuro}; the 
% \comname{marvosymserif\-euro} is described in 
% section~\vref{sec:howitworks:marvosymserifeuro}; and the 
% \comname{ESeuro} command is described in 
% section~\vref{sec:howitworks:ESeuro}.
% 
% \subsubsection{\comname{monoeuro}}
% \label{sec:howitworks:monoeuro}
% 
% Depending on what you've asked for in the options to the 
% \packname{eurofont} package, this command executes one of three 
% commands. By default, or if you've used the \optname{adobeeurofonts} 
% option, it executes \comname{zpeutteuro}; if you've used the 
% \optname{marvosym} option, it executes \comname{marvosymmonoeuro}; and 
% if you've used the eurosym option (which over-rides the other two), it 
% executes \comname{ESeuro}.
%
% The \comname{zpeutteuro} command is described in 
% section~\vref{sec:howitworks:zpeureuro}; the 
% \comname{marvosymmono\-euro} is described in 
% section~\vref{sec:howitworks:marvosymmonoeuro}; and the 
% \comname{ESeuro} command is described in 
% section~\vref{sec:howitworks:ESeuro}.
% 
% \subsubsection{\comname{zpeureuro}}
% \label{sec:howitworks:zpeureuro}
% 
% This command prints a euro symbol from one of Adobe's four Euroserif 
% founts (Roman, Italic, Bold, or Bold Italic).  The selection is done 
% using \LaTeX's usual fount selection mechanism.
% 
% \subsubsection{\comname{zpeusseuro}}
% \label{sec:howitworks:zpeusseuro}
% 
% This command prints a euro symbol from one of Adobe's four Eurosans 
% founts (Roman, Italic, Bold, or Bold Italic).  The selection is done 
% using \LaTeX's usual fount selection mechanism.
%
% \subsubsection{\comname{zpeutteuro}}
% \label{sec:howitworks:zpeutteuro}
% 
% This command prints a euro symbol from one of Adobe's four Euromono 
% founts (Roman, Italic, Bold, or Bold Italic).  The selection is done 
% using \LaTeX's usual fount selection mechanism.
% 
% \subsubsection[\comname{marvosymeuro}]
% {\comname{marvosymeuro}\comarg{char}}
% \label{sec:howitworks:marvosymeuro}
% 
% This command is used by \comname{marvosymserifeuro} (and friends) to 
% print a euro symbol from the Marvosym fount. Like the 
% \comname{chinaeeuro} command, it uses the \comname{SelectOnWeight} 
% command -- covered in section~\vref{sec:howitworks:selectonweight} -- 
% to print a normal euro symbol for medium and light weight founts, and 
% produces a `poor man's bold' version when you're using a bold or ultra 
% bold fount.
% 
% The \comname{marvosymeuro} command takes a single argument, which is 
% the number of the character to be printed: 99 for the sanserif euro symbol, 
% 100 for the monospaced euro symbol, and 101 for the seriffed euro symbol.
% 
% \subsubsection{\comname{marvosymsanseuro}}
% \label{sec:howitworks:marvosymsanseuro}
% 
% The \comname{marvosymsanseuro} command prints a sanserif euro 
% symbol from the Marvosym fount by executing 
% \comname{marvosymeuro\ttlb 99\ttrb}.
% 
% \subsubsection{\comname{marvosymserifeuro}}
% \label{sec:howitworks:marvosymserifeuro}
% 
% The \comname{marvosymsanseuro} command prints a seriffed euro 
% symbol from the Marvosym fount by executing 
% \comname{marvosymeuro\ttlb 101\ttrb}.
% 
% \subsubsection{\comname{marvosymmonoeuro}}
% \label{sec:howitworks:marvosymmonoeuro}
% 
% The \comname{marvosymsanseuro} command prints a monospaced euro 
% symbol from the Marvosym fount by executing 
% \comname{marvosymeuro\ttlb 100\ttrb}.
% 
% \subsubsection{\comname{cmrfakeeuro}}
% \label{sec:howitworks:cmrfakeeuro}
% 
% This command creates a euro symbol faked with light rules, using the 
% \comname{fakelight\-euro} command which is described in 
% section~\vref{sec:howitworks:fakelighteuro}. Note that the 
% \comname{euro} command will execute \comname{<fam>fakeeuro} (where 
% |<fam>| is the current fount family) if it's asked to fake a euro 
% symbol using any of the \comname{makefake...euro} commands. This means 
% that you need to re-define \comname{cmrfakeeuro} if you want to change 
% the sort of faked euro symbol you get with Computer Modern Roman; just 
% putting |cmr| in (say) \comname{fakemediumlist} won't do the job.
% 
% \subsubsection{\comname{cmssfakeeuro}}
% \label{sec:howitworks:cmssfakeeuro}
% 
% This command creates a euro symbol faked with medium rules, using the 
% \comname{fake\-mediumeuro} command which is described in 
% section~\vref{sec:howitworks:fakemediumeuro}. Note that the 
% \comname{euro} command will execute \comname{<fam>fakeeuro} (where 
% |<fam>| is the current fount family) if it's asked to fake a euro 
% symbol using any of the \comname{makefake...euro} commands. This means 
% that you need to re-define \comname{cmssfakeeuro} if you want to 
% change the sort of faked euro symbol you get with Computer Modern 
% Sanserif; just putting |cmss| in (say) \comname{fakelightlist} won't 
% do the job.
% 
% \subsubsection{\comname{cmttfakeeuro}}
% \label{sec:howitworks:cmttfakeeuro}
% 
% This command creates a euro symbol faked with medium rules, using the 
% \comname{fake\-mediumeuro} command which is described in 
% section~\vref{sec:howitworks:fakemediumeuro}. Note that the 
% \comname{euro} command will execute \comname{<fam>fakeeuro} (where 
% |<fam>| is the current fount family) if it's asked to fake a euro 
% symbol using any of the \comname{makefake...euro} commands. This means 
% that you need to re-define \comname{cmttfakeeuro} if you want to 
% change the sort of faked euro symbol you get with Computer Modern 
% Typewriter; just putting |cmtt| in (say) \comname{fakelightlist} won't 
% do the job.
% 
% \subsubsection{\comname{pzcfakeeuro}}
% \label{sec:howitworks:pzcfakeeuro}
% 
% This command creates a euro symbol faked with medium rules, using the 
% \comname{fakemediumeuro[-0.1ex]} command. The optional argument 
% lowers the height of the cross-strokes by 0.1\,ex to match the C in 
% Zapf Chancery.
% 
% Note that the \comname{euro} command will execute 
% \comname{<fam>fakeeuro} (where |<fam>| is the current fount family) if 
% it's asked to fake a euro symbol using any of the 
% \comname{makefake...euro} commands. This means that you need to 
% re-define \comname{pzcfakeeuro} if you want to change the sort of 
% faked euro symbol you get with Zapf Chancery; just putting |pzc| in 
% (say) \comname{fakelightlist} won't do the job.
% 
% \subsection{Commands used to produce faked euro symbols}
% 
% \subsubsection[\comname{fakeheavyeuro}]
% {\comname{fakeheavyeuro}\comoptarg{lift}\comoptarg{slant corr}}
% \label{sec:howitworks:fakeheavyeuro}
% 
% This is one of three similar commands: this command prints a euro 
% symbol faked with heavy rules. It's executed by the \comname{euro} 
% command if the current fount family is in the \comname{fakeheavylist}. 
% It takes two optional arguments: the first one, \comoptarg{lift}, 
% lifts the cross-strokes of the faked euro symbol by the specified 
% length; the default length is 0\,pt. The second optional argument, 
% \comoptarg{slant corr}, is a percentage factor by which the nominal 
% slant of the fount is multiplied by before calculating the horizontal 
% position of the rules. Its default value is 100 (i.e., multiply the 
% slant by $100/100 = 1$); this argument never has any effect on upright 
% founts because they have no slant.
% 
% If you pass one optional argument to \comname{fakeheavyeuro}, it is 
% interpreted as being the \comoptarg{lift} argument.
% 
% \comname{fakeheavyeuro} is defined to be one of these three:
% \begin{center}
% \begin{tabular}{ll}
% \textbf{Option}                & \textbf{Command}                \\[1ex]
% \optname{noslantfakeeuro}      & \comname{heavyruleeuronoslant}  \\
% \optname{normalslantfakeeuro}  & \comname{heavyruleeuronorm}     \\
% \optname{bigslantfakeeuro}     & \comname{heavyruleeurobigslant} \\
% \end{tabular}
% \end{center}
% The optional argument to \comname{fakeheavyeuro} is passed as the 
% first argument (rule lift) to the given \comname{heavyrule\-euro...} 
% command; it's 0\,ex by default.  The second argument (slant 
% correction factor) to the \comname{heavyrule\-euro...} command is 
% left blank, so it defaults to 100.  See 
% section~\vref{sec:howitworks:EFruleeuro} for more about this.
% 
% This command was written for the sake of symmetry more than 
% anything else; I would be surprised if anyone found a real use for 
% it.
% 
% \subsubsection[\comname{fakelighteuro}]
% {\comname{fakelighteuro}\comoptarg{lift}\comoptarg{slant corr}}
% \label{sec:howitworks:fakelighteuro}
% 
% This is one of three similar commands: this command prints a euro symbol 
% faked with light rules. It's executed by the \comname{euro} command if 
% the current fount family is in the \comname{fakelightlist}. It takes 
% two optional arguments: the first one, \comoptarg{lift}, lifts the 
% cross-strokes of the faked euro symbol by the specified length; the 
% default length is 0\,pt. The second optional argument, \comoptarg{slant 
% corr}, is a percentage factor by which the nominal slant of the fount 
% is multiplied by before calculating the horizontal position of the 
% rules. Its default value is 100 (i.e., multiply the 
% slant by $100/100 = 1$); this argument never has any effect on upright 
% founts because they have no slant.
% 
% If you pass one optional argument to \comname{fakeheavyeuro}, it is 
% interpreted as being the \comoptarg{lift} argument.
% 
% \comname{fakelighteuro} is defined by the options in 
% \packname{eurofont} to be one of these three; 
% \comname{lightruleeuronorm} by default.
% \begin{center}
% \begin{tabular}{ll}
% \textbf{Option}                & \textbf{Command}                \\[1ex]
% \optname{noslantfakeeuro}      & \comname{lightruleeuronoslant}  \\
% \optname{normalslantfakeeuro}  & \comname{lightruleeuronorm}     \\
% \optname{bigslantfakeeuro}     & \comname{lightruleeurobigslant} \\
% \end{tabular}
% \end{center}
% The optional argument to \comname{fakelighteuro} is passed as the 
% first argument (rule lift) to the given \comname{lightrule\-euro...} 
% command; it's 0\,ex by default.  The second argument (slant 
% correction factor) to the \comname{lightrule\-euro...} command is 
% left blank, so it defaults to 100.  See 
% section~\vref{sec:howitworks:EFruleeuro} for more about this.
% 
% \subsubsection[\comname{fakemediumeuro}]
% {\comname{fakemediumeuro}\comoptarg{lift}\comoptarg{slant corr}}
% \label{sec:howitworks:fakemediumeuro}
% 
% This is one of three similar commands: this command prints a euro symbol 
% faked with light rules. It's executed by the \comname{euro} command if 
% the current fount family is in the \comname{fakemediumlist}. It takes 
% two optional arguments: the first one, \comoptarg{lift}, lifts the 
% cross-strokes of the faked euro symbol by the specified length; the 
% default length is 0\,pt. The second optional argument, \comoptarg{slant 
% corr}, is a percentage factor by which the nominal slant of the fount 
% is multiplied by before calculating the horizontal position of the 
% rules.  Its default value is 100 (i.e., multiply the 
% slant by $100/100 = 1$); this argument never has any effect on upright 
% founts because they have no slant.
% 
% If you pass one optional argument to \comname{fakeheavyeuro}, it is 
% interpreted as being the \comoptarg{lift} argument.
% 
% \comname{fakemediumeuro} is defined by the options in 
% \packname{eurofont} to be one of these three; 
% \comname{lightruleeuronorm} by default.
% \begin{center}
% \begin{tabular}{ll}
% \textbf{Option}                & \textbf{Command}                 \\[1ex]
% \optname{noslantfakeeuro}      & \comname{mediumruleeuronoslant}  \\
% \optname{normalslantfakeeuro}  & \comname{mediumruleeuronorm}     \\
% \optname{bigslantfakeeuro}     & \comname{mediumruleeurobigslant} \\
% \end{tabular}
% \end{center}
% The optional argument to \comname{fakemediumeuro} is passed as the 
% first argument (rule lift) to the given \comname{mediumrule\-euro...} 
% command; it's 0\,ex by default.  The second argument (slant 
% correction factor) to the \comname{mediumrule\-euro...} command is 
% left blank, so it defaults to 100. See 
% section~\vref{sec:howitworks:EFruleeuro} for more about this.
% 
% \subsubsection{\comname{EFruleeuro}}\label{sec:EFruleeuro}
% \label{sec:howitworks:EFruleeuro}
% 
% The command generates a euro symbol from a `C' with a pair of rules 
% drawn on top of it. \comname{EFruleeuro} is not meant to be used in 
% documents directly; if you need it, you should follow the 
% \packname{eurofont} package's example and use it in the definition of 
% a new command to generate a euro symbol. The 
% \comname{mediumruleeuronorm} command and others show you a way of 
% doing this.
% 
% \comname{EFruleeuro} has six arguments:
% \begin{center}
%\begin{tabbing}
%    \comname{EFruleeuro}\= \\
%      \> \comarg{backshift \%age}\comarg{top rule width \%age}\relax
%                                 \comarg{bottom rule width \%age}\\
%      \> \comarg{rule thickness}\comarg{rule vertical spacing}\relax
%                                  \comarg{rule vertical offset}\\
%      \> \comarg{slant correction factor \%age}\\
%\end{tabbing}
% \end{center}
% 
% The first three arguments are numbers which are interpreted as a 
% percentage of the width of a letter `C' in the current fount. The next 
% three arguments are normal \LaTeX\ lengths. The final argument is 
% another number that's interpreted as a percentage: it's the percentage 
% by which the nominal slant of a fount (as specified in the 
% \filename{tfm} file) is multiplied by before working out the 
% horizontal position of the cross-strokes of a faked euro symbol; if 
% this slant correction factor argument is left blank, it defaults to 
% 100 (multiply by $100/100 = 1$, so it has no effect), which is what it 
% should be most of the time. This slant correction factor never has any 
% effect on upright founts, since they have a slant of 0.
% 
% The \comarg{rule vertical offset} and \comarg{slant correction factor 
% \%age} arguments are needed because the letters as printed are 
% sometimes not quite what the metrics files would have you believe.
% 
% The way the whole thing works is this: the \comname{EFruleeuro} 
% command begins by putting a letter `C' on the page. It then backs up 
% by |<backshift>|, and draws the two rules. Each rule is
% |<rule thickness>| thick, and the centre lines of the rules are 
% separated by a vertical distance of |<rule spacing>| (if this 
% dimension is 0\,pt, the rules are printed on top of each other and it 
% appears that you only have one rule printed). The top rule has a 
% horizontal length of |<top rule width>|, and the bottom rule has a 
% horizontal length of |<bottom rule width>|. The rules are positioned 
% half-way up the `C', plus |<rule vertical offset>|; this parameter is 
% needed because some letters have metrics that don't quite tie up with 
% reality. For example, the C in Zapf Chancery is actually lower than 
% the metrics would suggest, so \packname{eurofont}'s calculations go 
% awry and a `hand-correction' of -0.1\,ex needs to be applied. The 
% following code is executed by \packname{eurofont}'s 
% \comname{pzcfakeeuro} command:
%\begin{verbatim}
%    \EFruleeuro{110}{80}{72}{0.04ex}{0.27ex}{-0.1ex}{}
%\end{verbatim}
% This creates a euro symbol faked from a `C' with a pair of horizontal 
% rules drawn across it.
% 
% These rules have their left-hand edge 110\% of the width of the C to 
% the left of the right-hand edge of the C. The top rule has a width of 
% 80\% of the width of the C; the bottom rule has a width of 72\% of the 
% width of the C.
% 
% The rules are 0.04\,ex thick, and the distance between the centre 
% lines of the rules is 0.27\,ex. The centre line of the pair of rules 
% is usually half way up the C according to the fount metrics; in this 
% case, these rules are shifted down from this position by 0.1\,ex.
% 
% If the C used by \comname{EFruleeuro} is an italic C, the code to 
% place the rules takes this into account: it shifts the rules an 
% appropriate amount to the right. The rules are also staggered slightly 
% to match the slant of the C -- rather than put both rules directly 
% above each other at the specified position (taking the italic 
% correction into account), the top rule is placed a touch to the 
% right and the bottom rule a touch to the left.
% 
% And this brings me on to the final parameter: the slant correction 
% factor.  This is needed because some founts have italic or oblique 
% versions in which the slant angle specified in the fount metrics file 
% doesn't match the real slant of the printed letters.  I have no idea 
% why this is the case, but I do know that it means that 
% \comname{EFruleeuro}'s careful calculations to place the rules 
% correctly produce ugly results when working with these slanted 
% founts.  This slant correction factor is the percentage by which the 
% slant parameter is scaled by.  If the rules are being printed too far 
% to the left (so that they protrude out the back of the C too far), you 
% might try something like this:
%\begin{verbatim}
%    \EFruleeuro{110}{80}{72}{0.04ex}{0.27ex}{0ex}{200}
%\end{verbatim}
% which works very well with Adobe Optima -- the line above tells the 
% command to work on the basis that the slant is twice as great as 
% specified in the metrics file. Since the \packname{fontinst}-generated 
% \filename{tfm} file has the slant as $11^{\circ}$ ($1^{\circ}$ less 
% than in the \filename{afm} file due to rounding errors), and the slant 
% I measured is $21^{\circ}$, you can see that this should work well; 
% if you have this fount youself, you will see that it does indeed work 
% very well.
% 
% On the other hand, Bitstream Optima has a specified slant of 
% $10^{\circ}$, but a measured slant of $5^{\circ}$.  This means the 
% rules are placed too far to the right, so they don't protrude out the 
% back of the C far enough.  The obvious thing to try in this case is:
%\begin{verbatim}
%    \EFruleeuro{110}{80}{72}{0.04ex}{0.27ex}{0ex}{50}
%\end{verbatim}
% which is a definite improvement but far from perfect. This is because 
% the italic C in this fount is positioned further to the left than 
% expected for reasons which are rather involved.  There's no easy 
% and good way to deal with this without adding yet another parameter to 
% the \comname{EFruleeuro} command, which I decided wasn't justified. In 
% the case of Bitstream Optima, you might prefer the results you get 
% with a slant correction factor of 25\% or perhaps even 0\%.
% 
% A final note: in an attempt to reduce the Byzantine complexity of the 
% \comname{EFruleeuro} command to manageable levels, I have assumed that 
% the cross-strokes do not extend beyond the right-hand limit of the 
% letter `C' which they're printed over. This shouldn't cause any 
% problems unless you do something strange.
%
% \subsubsection[\comname{mediumruleeuronorm}]
% {\comname{mediumruleeuronorm}\comarg{lift}\comarg{slant corr}}
% \label{sec:howitworks:mediumruleeuronorm}
% 
% This command uses the \comname{SelectOnWeight} command (see 
% section~\vref{sec:howitworks:selectonweight}) to print a faked euro 
% symbol intended to match a medium weight fount family like Times: 
% thicker rules are used for bolder founts in the family, and thinner 
% rules are used for lighter founts in the family. The two rules drawn 
% across the C have slightly different lengths, approximately the same 
% as in the official euro symbol.
% 
% \comname{mediumruleeuronorm} takes two arguments: the first, the 
% length \comarg{lift}, raises the cross-stroke rules by the specified 
% amount from their default position half way up the `C'; and the 
% second, the number \comarg{slant corr}, is interpreted as the 
% percentage by which the specified slant of the current fount is 
% multiplied before calculating the horizontal position of the 
% cross-strokes. See the explanation of \comname{EFruleeuro} in 
% section~\vref{sec:howitworks:EFruleeuro} for a fuller description of 
% these parameters with examples.
% 
% \subsubsection[\comname{mediumruleeuronoslant}]
% {\comname{mediumruleeuronoslant}\comarg{lift}\comarg{slant corr}}
% \label{sec:howitworks:mediumruleeuronoslant}
% 
% This command uses the \comname{SelectOnWeight} command (see 
% section~\vref{sec:howitworks:selectonweight}) to print a faked euro 
% symbol intended to match a medium weight fount family like Times: 
% thicker rules are used for bolder founts in the family, and thinner 
% rules are used for lighter founts in the family. The two rules drawn 
% across the C have the same length.
% 
% \comname{mediumruleeuronoslant} takes two arguments: the first, the 
% length \comarg{lift}, raises the cross-stroke rules by the specified 
% amount from their default position half way up the `C'; and the 
% second, the number \comarg{slant corr}, is interpreted as the 
% percentage by which the specified slant of the current fount is 
% multiplied before calculating the horizontal position of the 
% cross-strokes. See the explanation of \comname{EFruleeuro} in 
% section~\vref{sec:howitworks:EFruleeuro} for a fuller description of 
% these parameters with examples.
% 
% \subsubsection[\comname{mediumruleeurobigslant}]
% {\comname{mediumruleeurobigslant}\comarg{lift}\comarg{slant corr}}
% \label{sec:howitworks:mediumruleeurobigslant}
% 
% This command uses the \comname{SelectOnWeight} command (see 
% section~\vref{sec:howitworks:selectonweight}) to print a faked euro 
% symbol intended to match a medium weight fount family like Times: 
% heavier rules are used for bolder founts in the family, and lighter 
% rules are used for lighter founts in the family. The two rules drawn 
% across the C have quite different lengths, following the example of 
% the China2e euro symbol.
% 
% \comname{mediumruleeurobigslant}takes two arguments: the first, the 
% length \comarg{lift}, raises the cross-stroke rules by the specified 
% amount from their default position half way up the `C'; and the 
% second, the number \comarg{slant corr}, is interpreted as the 
% percentage by which the specified slant of the current fount is 
% multiplied before calculating the horizontal position of the 
% cross-strokes. See the explanation of \comname{EFruleeuro} in 
% section~\vref{sec:howitworks:EFruleeuro} for a fuller description of 
% these parameters with examples.
% 
% \subsubsection[\comname{lightruleeuronorm}]
% {\comname{lightruleeuronorm}\comarg{lift}\comarg{slant corr}}
% \label{sec:howitworks:lightruleeuronorm}
% 
% This command behaves the same as \comname{mediumruleeuronorm} (see 
% section~\vref{sec:howitworks:mediumruleeuronorm}), but uses lighter 
% rules meant to match a fount family like Computer Modern Roman.
% 
% \subsubsection[\comname{lightruleeuronoslant}]
% {\comname{lightruleeuronoslant}\comarg{lift}\comarg{slant corr}}
% \label{sec:howitworks:lightruleeuronoslant}
% 
% This command behaves the same as \comname{mediumruleeuronoslant} (see 
% section~\vref{sec:howitworks:mediumruleeuronoslant}), but uses lighter rules 
% meant to match a fount family like Computer Modern Roman.
% 
% \subsubsection[\comname{lightruleeurobigslant}]
% {\comname{lightruleeurobigslant}\comarg{lift}\comarg{slant corr}}
% \label{sec:howitworks:lightruleeurobigslant}
% 
% This command behaves the same as \comname{mediumruleeurobigslant} (see 
% section~\vref{sec:howitworks:mediumruleeurobigslant}), but uses 
% lighter rules meant to match a fount family like Computer Modern 
% Roman.
% 
% \subsubsection[\comname{heavyruleeuronorm}]
% {\comname{heavyruleeuronorm}\comarg{lift}\comarg{slant corr}}
% \label{sec:howitworks:heavyruleeuronorm}
% 
% This command behaves the same as \comname{mediumruleeuronorm} (see 
% section~\vref{sec:howitworks:mediumruleeuronorm}), but uses heavier 
% rules that aren't likely to match anything but a few display founts.
% 
% \subsubsection[\comname{heavyruleeuronoslant}]
% {\comname{heavyruleeuronoslant}\comarg{lift}\comarg{slant corr}}
% \label{sec:howitworks:heavyruleeuronoslant}
% 
% This command behaves the same as \comname{mediumruleeuronoslant} (see 
% section~\vref{sec:howitworks:mediumruleeuronoslant}), but uses heavier 
% rules that aren't likely to match anything but a few display founts.
% 
% \subsubsection[\comname{heavyruleeurobigslant}]
% {\comname{heavyruleeurobigslant}\comarg{lift}\comarg{slant corr}}
% \label{sec:howitworks:heavyruleeurobigslant}
% 
% This command behaves the same as \comname{mediumruleeurobigslant} (see 
% section~\vref{sec:howitworks:mediumruleeurobigslant}), but uses 
% heavier rules that aren't likely to match anything but a few display 
% founts.
% 
% \subsection{Other supporting commands}
% 
% \subsubsection{\comname{showfontfamily}}
% \label{sec:howitworks:showfontfamily}
% 
% This command displays the current fount family name on the console, 
% and also notes the same information in the log file.  It's meant to 
% be used if you're configuring \packname{eurofont}, but aren't sure 
% what a particular fount family name is.
% 
% If you don't know what a fount family name is in \LaTeX, have a look 
% at section~\vref{sec:fountfamilies}.
% 
% \subsubsection[\comname{SelectOnWeight}]
% {\comname{SelectOnWeight}
% \comarg{light}\comarg{medium}\comarg{bold}\comarg{ultrabold}}
% \label{sec:howitworks:selectonweight}
% 
% This command takes four arguments: the first is executed if the 
% current fount series is listed in \comname{lightserieslist}; the 
% second if the current fount series is in the 
% \comname{mediumserieslist}; the third if it's in the 
% \comname{boldserieslist}; and the fourth if it's in the 
% \comname{ultraboldserieslist}. If the current fount series isn't 
% listed in any of these lists, the second argument (used for medium 
% weight founts) is executed.
% 
% A typical use of \comname{SelectOnWeight} is this:
%\begin{verbatim}
% \newcommand{\mediumruleeuronorm}[2]{%
% \SelectOnWeight%
% {\EFruleeuro{110}{80}{72}{0.04ex}{0.27ex}{#1}{#2}}% light
% {\EFruleeuro{110}{80}{72}{0.07ex}{0.27ex}{#1}{#2}}% medium
% {\EFruleeuro{110}{80}{72}{0.14ex}{0.27ex}{#1}{#2}}% bold
% {\EFruleeuro{110}{80}{72}{0.18ex}{0.27ex}{#1}{#2}}% ultra bold
% }
%\end{verbatim}
% This defines the \comname{mediumruleeuro} command so that it'll print 
% one of four different faked euro symbols, depending on the weight of the 
% current fount: lighter weight founts get a euro symbol faked with lighter 
% rules; the heavier the fount, the heavier the rules.  If the fount 
% series isn't in any of the lists, you get the rules used for the medium 
% weight series.
% 
% Section~\vref{sec:config} shows what's in the four different 
% \comname{EF...serieslist} commands by default.
% 
% \subsubsection[\comname{EFaddtolist}]
% {\comname{EFaddtolist}\comarg{list name}\comarg{items to add}}
% \label{sec:howitworks:EFaddtolist}
% 
% This command takes two arguments: the first argument is the name of a 
% list (which must have already been defined as a \TeX\ command), and 
% the second argument is a comma delimited list of items to add to the 
% list.  For example:
%\begin{verbatim}
%    \EFaddtolist{\sanslist}{pag,phv,psy,pzd}
%\end{verbatim}
% adds four items to the list called \comname{sanslist}. The list ends 
% up containing the given items with a special delimiter to make it 
% easier to examine the list using \TeX\ code. A check is made to ensure 
% that each item is unique: if you tried to put (say) \lfntname{ptm} 
% (Adobe Times) onto the list twice, you'd only end up with one instance 
% of \lfntname{ptm} in the list. No warnings are made when this happens.
% 
% \subsubsection[\comname{EFiftexteuroexists}]
% {\comname{EFiftexteuroexists}\comarg{if true}\comarg{if false}}
% \label{sec:howitworks:EFiftexteuroexists}
% 
% This command takes two arguments.  It's used by \comname{maketexteuro} 
% and \comname{cmeuro} like this:
%\begin{verbatim}
%    \EFiftexteuroexists{\texteuro}{\makefakeeuro}}
%\end{verbatim}
% What happens is that three tests are made: if the current fount family 
% is not listed in the \comname{faketexteurolist}, the 
% \comname{texteuro} command exists, and a TS1 encoded \filename{fd} file 
% exists for the current fount family, then the first argument is 
% executed (\comname{texteuro} in this example). If any of these tests 
% fails, then the second argument (\comname{makefakeeuro} in this 
% example) is executed.
% 
% The idea is that if there's a good chance that the \comname{texteuro} 
% command will print something useful, then the first argument is 
% executed; the second argument is executed otherwise.
% 
% The \comname{texteuro} command is defined by the standard 
% \LaTeX\ \packname{textcomp} package which \packname{eurofont} tries to 
% load by default.  The TS1 encoded \filename{fd} file searched for is 
% \filename{ts1<fam>.fd}, where |<fam>| is the name of the current fount 
% family.
% \subsubsection[\comname{EF@pmb}]{\comname{EF@pmb}\comarg{text}}
% \label{sec:howitworks:EFpmb}
% This command, not meant to be used in documents, is one of the two 
% commands the \packname{eurofont} package uses to print faked bold 
% characters. What it does is print six copies of its argument, each 
% copy offset from the others by a small amount in a hexagonal 
% arrangement. The other command to do this job, \comname{EF@pmsb}, is 
% identical except that it uses a slightly smaller vertical offset to 
% produce better results with the Marvosym euro symbols.
% 
% This fakery is no substitute for a real bold symbol, but it's much 
% better than the `poor man's bold' used in the TeXbook and the standard 
% \LaTeX\ \packname{bm} package. The \packname{eurofont} package's 
% \comname{EF@pmb} command produces tolerable results over the full 
% range I've tested it: sizes from 5\,pt to 90\,pt; whereas the 
% alternative three copy poor man's bold doesn't work at all well at 
% large sizes. Thanks are due to Donald Arseneau for suggesting a six 
% copy method.
% 
% If you're interested, the actual code can be found in 
% section~\vref{sec:code:EFpmb}.
% 
% \StopEventually{}
% 
%\iffalse
%
% 1999/01/30 v1.1.3 Made \EFeuro (and hence \euro) robust.  Added note 
%      about dvips v5.83 being able to partially download Adobe's 
%      eurofonts correctly.  Changed backslash printing in \comname.
% 1999/01/18 v1.1.2 Corrected a trivial literal error.  Unreleased.
% 1998/11/14 v1.1.1 Corrected \ttrb command.
% 1998/11/10 v1.1 Congratulations to "Walter Schmidt" <wschmi@ibm.net> 
%      for reporting the first bug *and* telling me how to fix it: say 
%      Marvosym not marvosym in dvips map file entries.  Done this, 
%      and made some very minor documentation mods.
% 1998/11/03 v1.0 <gulp>  This is it...  Minor doc changes, commented 
%      out some typeouts, and off we go (maybe).
% 1998/11/03 v0.32beta more documentation changes.  Sorted out some of 
%      the readmes.
% 1998/10/31 v0.31beta Spooky, eh?  Changed the \fake...euro commands 
%      to have two option arguments (thanks to Heiko Oberdiek 
%      <oberdiek@ruf.uni-freiburg.de> for the method).  Documentation 
%      mods to match the code mods.  Clobbered some extra spaces that 
%      had crept in somehow
% 1998/10/30 v0.30beta Some documentation changes again - dealing with 
%      slantfudge.  The washing machine has changed colour.
% 1998/10/29 v0.29beta I've got a (silver) washing machine, and I'm 
%      still feeling mean.  Changed \EFruleeuro to include 
%      slantfudge.  
% 1998/10/28 v0.28beta More documentation changes.  Fixed 
%      \makeusereuro bug.  Added \EF@pmsb command for Marvosym euro 
%      symbols.  Added \f@family etc to \EFeuro debugrep.
% 1998/10/22 v0.27beta More documentation changes.  Getting there...  
%      Modified \showfontfamily message.  Added \comarg and \comoptarg; 
%      modified \comname.
% 1998/10/21 v0.26beta More documentation changes; added note to 
%      dvidrive.txt about dvips fix. Does anybody want to buy a 
%      Starfighter?
% 1998/10/19 v0.25beta Added a documentation note about LaTeX 
%      versions - why did it take me so long to spot the need for 
%      this?  
% 1998/10/17 v0.24beta Added \EF@fakeeurobase to replace literal `C' 
%      in fake euro code.  \EFeuro now \providecommanded.  Brought 
%      config file replacement in eurofont.sty into line with current 
%      eurofont.cfg; did something similar with driver section.  
%      Dealt with overfull \hboxes one way or another, and documented
%      the overfullness and cheating in the code section.
% 1998/10/16 v0.23beta More documentation mods; fiddled with pmb 
%      code; fiddled with heavyruleeuros; fiddled with normruleeuro 
%      slant
% 1998/10/15 v0.22beta Did a spelling check :-)  More documentation 
%      changes.
% 1998/10/14 v0.21beta More documentation changes.
% 1998/10/13 v0.20beta More documentation.  The end is in sight.
% 1998/10/12 v0.19beta More documentation.  Is there never going to be 
%      an end to all this?  Added a test for china2e.sty to the 
%      \chinaeeuro command.
% 1998/10/06 v0.18beta More documentation.  Tidied up some redundant 
%     comments and code.  Improved bold faking.  Swapped some \defs 
%     for \providecommands.  Swapped debug reports around in 
%     \SelectOnWeight
% 1998/10/04 v0.17beta Yet more bloody documentation.  Added 
%     fixtieaccent and nofixtieaccent options.
% 1998/10/03 v0.16beta More documentation.  Modified \EFruleeuro and 
%     \EF@crosstrokes: they both now take C depth into account.
% 1998/10/01 v0.15beta Yet more documentation; \EF@crosstrokes now 
%     staggers the rules if the fount slants.  My head hurts.  Why is 
%     arithmetic in TeX such a pain, Dr Knuth?
% 1998/09/30 v0.14beta More documentation; added psy and pzd to 
%     seriflist
% 1998/09/29 v0.13beta More documentation; replaced cmr/ss/tteuro 
%     lists with single cmeuro list.
% 1998/09/28 v0.12beta changed \notexteuro to \faketexteuro; more 
%     documentation; got rid of \let\ESeuro at end; made textcomp 
%     loading optional; re-named \rightappenditem->\EF@rightappenditem.
% 1998/09/24 v0.11beta corrected \makesansesuro typo; added 
%     optargs to \fake...euro commands; modified ruleeuro commands.  
%     My brain hurts.
% 1998/09/24 v0.10beta Added \typeouts announcing beta status
% 1998/09/23 v0.9beta Changed values for ultrabold fakemedium and 
%     fakeheavy, and added \nobreaks to \euros commands
% 1998/09/22 v0.8beta Played about with faking code some more: added 
%     heavy stuff, and stuff for variant rules in fake euros 
%     controlled by options.  Removed the odd bug.  Added debugreport 
%     option and code.  Changed behaviour of eurosym option: almost 
%     all \makeeuro commands are now affected.
% 1998/09/17 v0.7beta Changed docs; made more \make... commands;
% 1998/09/12 v0.6beta Changed code docs; made \@ruleeuro->\EFruleeuro; 
%     added stuff for China2e euro; dropped \EUR and made \euros instead
% 1998/09/10 v0.5beta Added \notexteurolist and modified \texteuro 
%     stuff: new test.  Modifed \EFruleeuro to have different length 
%     cross-strokes.
% 1998/09/09 v0.4beta Added eurosym stuff; modified faking stuff 
%     (added four different weight lists, added support for 
%     \<fam>fakeeuro, and changed other bits too but my brain hurts 
%     now); added support for <fam>euro.  Changed \cmreuro (etc) to 
%     \makecmreuro.  Added some \AtBeginDocument stuff so \euro is 
%     always eurofont's \euro when eurosym is loaded; \EFeuro is 
%     defined here, and \let\euro\EFeuro \AtBeginDocument does the 
%     job.  eurosym's \euro is (also) saved if needed: 
%     \let\ESeuro\euro. 
% 1998/09/07 v0.3beta Added cfg file, eurosym options, and some more docs.
% 1998/09/07 v0.2beta First attempt to keep track of changes; added ui 
%     stuff to marvosym fd bits and farmed the whole lot out to an fd 
%     file.  Improved \EF@pmb a bit.  Added the start of the 
%     documentation and doc/docstrip-isation. Corrected an incredibly 
%     stupid fd file mistake. Changed some \defs to \providecommands in 
%     anticipation of the cfg file.
% 1998/08/something-1998/09/04 v0.1beta And so it grew...
% 
%\fi
%
% \section{The code itself}
% 
% To the interested reader: the code below grew rather than being 
% designed and constructed according to a plan. This is reflected in the 
% curious structure and eccentric comments; the comments were written 
% for the chap who wrote the code, rather than anyone else. There's a 
% fair bit of redundant code left (commented out) and quite a lot of 
% debugging reports and development notes left in -- these are me 
% talking to myself, so don't be worried if you see something 
% inexplicable.
%
% One problem with the documented code is that the visual formatting I 
% used means that quite a lot of lines are longer than 72 characters, so 
% they won't fit within the normal width of the text. There are 
% therefore rather a lot of overfull \comname{hboxes} below. I can't see 
% any easy way round this, so I have cheated and set \comname{hfuzz} to 
% a large value to suppress the warnings.
% 
% Say `hello' to the nice \LaTeX\ program. Who am I, and what do I need? 
% This package might work with any version of \LaTeXe, but I've 
% only tested it with the June 1998 release.  For best results, you 
% need the ec founts andthe  \packname{textcomp} package (part of recent 
% \LaTeX s).
%
%
%    \begin{macrocode}
\NeedsTeXFormat{LaTeX2e}[1998/06/01]
\ProvidesPackage{eurofont}[1999/01/30 v1.1.3 A package for using euro 
symbols]
%    \end{macrocode}
%
% Get all these defined before loading the config file which might 
% want to use them.
%
%    \begin{macrocode}
\def\userlist{}
\def\texteurolist{}
\def\chinaelist{}
\def\cmlist{}
\def\seriflist{}
\def\sanslist{}
\def\monolist{}
\def\fakemediumlist{}
\def\fakelightlist{}
\def\fakeheavylist{}
\def\faketexteurolist{}
% begin with list of what's light, medium, bold, and ultra bold
\def\EFlightserieslist{}
\def\EFmediumserieslist{}
\def\EFboldserieslist{}
\def\EFultraboldserieslist{}
%    \end{macrocode}
%\begin{macro}{\ifEF@debugreport}
%\begin{macro}{\EF@debugrep}
%
%Flag and command to allow option switching of debugging reports
%
%    \begin{macrocode}
\newif\ifEF@debugreport
\EF@debugreportfalse% Debugging reports off by default
\def\EF@debugrep#1{\ifEF@debugreport\typeout{eurofont: #1}\fi}
%    \end{macrocode}
%\end{macro}
%\end{macro}
%
% \subsection{List handling code}
% Needed by the config file etc., which is why it's here.
%\begin{verbatim}
% \EFaddtolist{\listname}{comma delimited list of items to add}
% \EF@checkiflisted{item}{\listname}
%   this sets \ifEF@listed to true or false
%\end{verbatim}
%
% Code from Stefan Ulrich |<ulrich@cis.uni-muenchen.de>|:
%
%\begin{macro}{\EF@checkiflisted}
%    \begin{macrocode}
\newif\ifEF@listed
%
\def\EF@checkiflisted#1#2{% check if element #1 is in list #2
\EF@listedfalse%
\edef\thiselem{#1}% changed to edef from def RJMM 1/9/98
\let\@@elt\@elt% Save \@elt (in case this command is executed 
%                  somewhere strange)
\def\@elt##1{\def\testelem{##1}%
\ifx\thiselem\testelem\EF@listedtrue\fi}%
#2\let\@elt\@@elt}% execute list and restore \@elt
%    \end{macrocode}
%\end{macro}
%
%\begin{macro}{\EFaddtolist}
%    \begin{macrocode}
\newcommand{\EFaddtolist}[2]{% #1 = list name;
%                            #2 = comma-delimited list of items to add
% \typeout{elements to add: #2}% debugging code; retain
%   \expandafter%%% this seems redundant
\EF@addtolist#2,:#1\end}
%    \end{macrocode}
%\end{macro}
%
%
%\begin{macro}{\EF@addtolist}
%    \begin{macrocode}
\def\EF@addtolist#1,#2:#3\end{% #3 is the list now
\def\@tempcmda{#2}%
\ifx\@tempcmda\@empty%
   \EF@debugrep{Last elem: #1}\relax% if #2 is empty, do this.
    \EF@addMember{#1}{#3}%            if #2 is empty, do this
    \else
     \EF@debugrep{elem: #1}\relax% if #2 is not empty, do this
      \EF@addMember{#1}{#3}%       if #2 is not empty, do this
%     \expandafter%%% this seems redundant
      \EF@addtolist#2:#3\end\fi}%  if #2 is not empty, do this
%    \end{macrocode}
%\end{macro}
%
%   
%\begin{macro}{\EF@addMember}
%    \begin{macrocode}
\newcommand{\EF@addMember}[2]{%
    %%% add #1 only if it isn't yet in the list
    %%% it surely would be more efficient without the check...
    {\EF@checkiflisted{#1}{#2}\relax% to suppress space
    \ifEF@listed
    \EF@debugrep{#1 already in the list}\relax%
    \else
    \EF@debugrep{adding #1 to \string #2}\relax%
    \EF@rightappenditem{#1}{#2}\fi}}
%    \end{macrocode}
%\end{macro}
%
%\begin{macro}{\EF@rightappenditem}
%    \begin{macrocode}
\newtoks\EF@tokb% token list register for temp use
\newcommand{\EF@rightappenditem}[2]%
{\@temptokena={\@elt{#1}}\EF@tokb=\expandafter{#2}%
\xdef#2{\the\EF@tokb\the\@temptokena}}% change the list globally
%    \end{macrocode}
%\end{macro}
%
% End Stefan's bit
%
% \subsection{Options}
% 
% Some options: select between Adobe's Eurofonts (typographically 
% better) or the Marvosym fount for |\serifeuro|, |\sanseuro|, and |\monoeuro|.
%
%    \begin{macrocode}
\newif\ifEF@marvosym\EF@marvosymfalse% Adobe Eurofonts by default
\newif\ifEF@eurosym\EF@eurosymfalse%   Don't use eurosym by default
\newif\ifEF@textcomp\EF@textcomptrue% Load the textcomp package if 
%                                     possible (by default)
\newif\ifEF@fixtieaccent\EF@fixtieaccentfalse% Don't re-define tie 
%                                     accent by default
%
\DeclareOption{marvosym}      {\EF@marvosymtrue}
\DeclareOption{adobeeurofonts}{\EF@marvosymfalse}
%
\DeclareOption{eurosym}  {\EF@eurosymtrue}
\DeclareOption{noeurosym}{\EF@eurosymfalse}
%
\DeclareOption{debugreport}{\EF@debugreporttrue}
\DeclareOption{nodebugreport}{\EF@debugreportfalse}
%
\DeclareOption{notextcomp}{\EF@textcompfalse}
\DeclareOption{textcomp}{\EF@textcomptrue}
%
\DeclareOption{fixtieaccent}{\EF@fixtieaccenttrue}
\DeclareOption{nofixtieaccent}{\EF@fixtieaccentfalse}
%    \end{macrocode}
%
%\begin{macro}{\fakelighteuro}
%\begin{macro}{\fakemediumeuro}
%\begin{macro}{\fakeheavyeuro}
%
% These commands were defined in the options: they're used by 
% \comname{makefake\-mediumeuro}, \comname{makefakelighteuro}, and 
% \comname{makefakeheavyeuro} commands later on.
%
% They all take two optional arguments:
%\begin{verbatim}
% \fake...euro[lift][slant correction factor%]
%\end{verbatim}
% The first argument is a normal dimension; the second is a 
% percentage.  Default values are 0\,pt and 100 respectively.  The 
% lift is the amount by which the cross-strokes are raised above the 
% nominal vertical centre line of the C; the slant correction factor is 
% the factor by which the nominal slant of an italic or oblique C is 
% multiplied by before working out where to put the cross-strokes.  
% Some founts have metrics that disagree with reality quite wildly in 
% terms of the specified italic angle. If the cross-strokes are too 
% far to the right in the case of slanted versions of a fake euro, this 
% second optional argument should be set to something less than 100 (50 
% or 25 are good values to try to begin with); if the cross-strokes are 
% too far to the left, this second optional argument should be set to 
% something more than 100 to begin with (200 is a good value to try to 
% begin with).
%{\hfuzz=10.0376pt
%    \begin{macrocode}
\newcommand*{\fakelighteuro}[1][0ex]{\def\EF@tmprlift{#1}\@fakelighteuro}
\newcommand*{\fakemediumeuro}[1][0ex]{\def\EF@tmprlift{#1}\@fakemediumeuro}
\newcommand*{\fakeheavyeuro}[1][0ex]{\def\EF@tmprlift{#1}\@fakeheavyeuro}
%    \end{macrocode}
%}
%\end{macro}
%\end{macro}
%\end{macro}
%
%
%\begin{macro}{\@fakelighteuro}
%\begin{macro}{\@fakemediumeuro}
%\begin{macro}{\@fakeheavyeuro}
% These commands are the ones that change depending on which sort 
% of slant you want on the rules; it's done like this so you can 
% effectively have two optional arguments for the \comname{fake...euro} 
% commands, which is awkward to arrange using \comname{newcommand}. 
% These commands are meant to be called only from the three 
% \comname{fake...euro} commands above.
%    \begin{macrocode}
\DeclareOption{noslantfakeeuro} {%
    \def\EF@fakeslant{0}% in case anyone's interested
    \newcommand*{\@fakemediumeuro}[1][100]
                {\mediumruleeuronoslant{\EF@tmprlift}{#1}}
    \newcommand*{\@fakelighteuro}[1][100]
                {\lightruleeuronoslant{\EF@tmprlift}{#1}}
    \newcommand*{\@fakeheavyeuro}[1][100]
                {\heavyruleeuronoslant{\EF@tmprlift}{#1}}}
\DeclareOption{normalslantfakeeuro} {%
    \def\EF@fakeslant{1}% in case anyone's interested
    \newcommand*{\@fakemediumeuro}[1][100]
                {\mediumruleeuronorm{\EF@tmprlift}{#1}}
    \newcommand*{\@fakelighteuro}[1][100]
                {\lightruleeuronorm{\EF@tmprlift}{#1}}
    \newcommand*{\@fakeheavyeuro}[1][100]
                {\heavyruleeuronorm{\EF@tmprlift}{#1}}}
\DeclareOption{bigslantfakeeuro} {%
    \def\EF@fakeslant{2}% in case anyone's interested
    \newcommand*{\@fakemediumeuro}[1][100]
                {\mediumruleeurobigslant{\EF@tmprlift}{#1}}
    \newcommand*{\@fakelighteuro}[1][100]
                {\lightruleeurobigslant{\EF@tmprlift}{#1}}
    \newcommand*{\@fakeheavyeuro}[1][100]
                {\heavyruleeurobigslant{\EF@tmprlift}{#1}}}
%    \end{macrocode}
%\end{macro}
%\end{macro}
%\end{macro}
%
% The |\euros| command was more-or-less stolen from eurosym.sty:
% The Euro Symbol Package for \LaTeX\ by
% Henrik Theiling |<theiling@coli.uni-sb.de>|,
%\begin{verbatim}
% http://www.coli.uni-sb.de/~theiling
% \ProvidesPackage{eurosymbol}
%     [1998/08/06 v1.1 European currency symbol ``Euro'']
%\end{verbatim}
% {\hfuzz=19.48749pt
%    \begin{macrocode}
\DeclareOption{left}{\PassOptionsToPackage{left}{eurosym}%
\DeclareRobustCommand{\euros}[1]{\euro\nobreak\,#1}}
\DeclareOption{right}{\PassOptionsToPackage{right}{eurosym}%
\DeclareRobustCommand{\euros}[1]{#1\nobreak\,\euro}}
\DeclareOption{official}{\PassOptionsToPackage{official}{eurosym}}
\DeclareOption{gen}{\PassOptionsToPackage{gen}{eurosym}}
\DeclareOption{gennarrow}{\PassOptionsToPackage{gennarrow}{eurosym}}
\DeclareOption{genwide}{\PassOptionsToPackage{genwide}{eurosym}}
%
\ExecuteOptions{adobeeurofonts}% Use Adobe's Eurofonts by default
\ExecuteOptions{noeurosym}%      Don't use eurosym by default
\ExecuteOptions{left}%           Euro symbol on left by default
\ExecuteOptions{normalslantfakeeuro}% Fake euros with slight slant by default
\ExecuteOptions{nodebugreport}%  No debugging reports by default
\ExecuteOptions{textcomp}%  Load the textcomp package by default
\ExecuteOptions{nofixtieaccent}%  Don't re-define the tie accent by 
%                                 default
%    \end{macrocode}
%}
% 
%    \begin{macrocode}
\InputIfFileExists{eurofont.cfg}{}%
{\PackageWarningNoLine{eurofont}%
{I can't find the eurofont.cfg configuration file.\MessageBreak
Perhaps something is wrong with this installation?\MessageBreak
The \protect\euro\space command will work with default settings}%
\EFaddtolist{\userlist}{}
\EFaddtolist{\texteurolist}{}
\EFaddtolist{\chinaelist}{}
\EFaddtolist{\cmlist}{cmr,cmss,cmtt}
\EFaddtolist{\seriflist}{pbk,pnc,ppl,ptm,put}
\EFaddtolist{\sanslist}{pag,phv,psy,pzd}
\EFaddtolist{\monolist}{pcr}
\EFaddtolist{\fakemediumlist}{pzc}
\EFaddtolist{\fakelightlist}{}
\EFaddtolist{\fakeheavylist}{}
%
\EFaddtolist{\faketexteurolist}{}
%    \end{macrocode}
% The following lists are used to decide which thickness line should be used 
% for producing faked euro symbols.  demibold and semibold are in the 
% medium list because I reckon it's better to have a line that's a 
% touch too light than too heavy.
% {\hfuzz=10.0376pt
%    \begin{macrocode}
\EFaddtolist{\EFlightserieslist}{ul,el,l,ulc,elc,lc,ulx,elx,lx}
\EFaddtolist{\EFmediumserieslist}{m,mb,db,sb,mc,mbc,dbc,sbc,mx,mbx,dbx,sbx}
\EFaddtolist{\EFboldserieslist}{b,bx,bc}
\EFaddtolist{\EFultraboldserieslist}{eb,ub,ebc,ubc,ebx,ubx}%
%
% And two non-standard series:
%
\EFaddtolist{\EFultraboldserieslist}{xb,ebd}
}
%    \end{macrocode}
%}
%
% Note: the stuff above should include more-or-less everything in the 
% default config file.
%
%
%    \begin{macrocode}
\ProcessOptions
%    \end{macrocode}
%
% If requested (as it is by default), load textcomp.sty if it exists; 
% this conditional code and subsequent checking for 
% \filename{textcomp.sty} should allow eurofont.sty to work with old or 
% OT1-only \LaTeX s.
%
%{\hfuzz=0.5877pt
%    \begin{macrocode}
\ifEF@textcomp\IfFileExists{textcomp.sty}{\RequirePackage{textcomp}}{}\fi
%    \end{macrocode}
%} 
%
% If the textcomp package is going to be loaded, it'll be loaded by 
% now, so now is the time to re-define the tie accent (if this has been 
% asked for):
%    \begin{macrocode}
\ifEF@fixtieaccent \DeclareTextAccentDefault{\t}{OML}\fi
%    \end{macrocode}
%
%    \begin{macrocode}
\ifEF@eurosym%
%    \end{macrocode}
% even if eurosym can't be loaded, ensure that some sort of euro is 
% printed:
%    \begin{macrocode}
\def\euro{\makefakeeuro}
%    \end{macrocode}
% Load eurosym if asked and if possible
%    \begin{macrocode}
\IfFileExists{eurosym.sty}{\RequirePackage{eurosym}}{%
\PackageError{eurofont}{I can't find the eurosym package}%
{You've used the eurosym option; this requires the eurosym package 
which doesn't appear to be installed}}%
%    \end{macrocode}
% Save eurosym's |\euro| as |\ESeuro|; if eurosym couldn't be 
% loaded, |\euro| is still defined as |\makefakeeuro| (see above), so a 
% sort of |\euro| symbol will be printed
%    \begin{macrocode}
\let\ESeuro\euro
\fi
%    \end{macrocode}
% 
% \subsection{A spare command or more?}
%
% \begin{macro}{\showfontfamily}
%    \begin{macrocode}
\newcommand{\showfontfamily}{
\typeout{**********************************}
\typeout{* \protect\showfontfamily:
      \space\space\space\space\space\space
      \space\space\space\space\space\space
      \space\space\space*}
\typeout{*\space\space\space\space\space\space
          \space\space\space\space\space\space
      \space\space\space\space\space\space
      \space\space\space\space\space\space
      \space\space\space\space\space\space
      \space\space\space*}
\typeout{* The current font family is: \f@family\space *}
\typeout{*\space\space\space\space\space\space
          \space\space\space\space\space\space
      \space\space\space\space\space\space
      \space\space\space\space\space\space
      \space\space\space\space\space\space
      \space\space\space*}
\typeout{***********************************}
}
%    \end{macrocode}
% \end{macro}
%
%
% \subsection{Code to fudge a euro if needed}
% 
% The author commands to generate faked euro symbols now select one of four 
% weights of cross-stroke to match light, medium, bold, and ultrabold. 
% This should do.
%
%\begin{macro}{\EF@crossstrokes}
%
% Arguments as noted; this is the command that draws the horizontal 
% strokes for a fake euro symbol.
% \hfuzz=14.76254pt
%    \begin{macrocode}
\def\EF@crossstrokes#1#2#3#4#5#6#7#8#9{%
%                   #1 = width of C
%                   #2 = height of C
%                   #3 = depth of C
%                   #4 = back shift as percentage of #1
%                   #5 = strokelen as percentage of #1
%                   #6 = strokelen of bottom rule as percentage of #1
%                   #7 = thickness of cross-strokes
%                   #8 = centre line spacing of cross-strokes
%                   #9 = extra rule lift
% Need to lift cross strokes by 1/2 (height C - height cross-strokes)
%
% N.B. slanted founts are an interesting thingy.
% The metrics often lie about the slant, so \EF@slantcorr is a 
% percentage to multiply the slant/point figure from the tfm file by.  
% Start out by ensuring that it exists:
\@ifundefined{EF@slantcorr}{\def\EF@slantcorr{100}}{}%
% \fontdimen1 is slant per point (in points).
\@tempdima=#8%
% \typeout{rule spacing = \the\@tempdima}%
\@tempdima=\fontdimen1\font%
% \typeout{slant per point = \the\@tempdima}%
% now apply fudge factor:
\@tempdima=0.1\@tempdima%
\@tempdima=\EF@slantcorr\@tempdima%
\@tempdima=0.1\@tempdima%
% (the eccentric multiplication is to reduce rounding error and 
% reduce the risk of the dimen getting too big)
\edef\@tempcmda{\strip@pt\@tempdima}%
% \typeout{fudged slant per point/points = \@tempcmda}%
% \@tempdima=#1%
\@tempdima=#2% Changed from width #1 to height #2
\@tempdima=\@tempcmda\@tempdima%
% \typeout{Width of C = #1}%
% \typeout{Height of C = #2}%
% \typeout{slant in points (for C) = \the\@tempdima}%
\@tempdima=0.5\@tempdima%
% \typeout{half slant in points (for C) = \the\@tempdima}%
% % now apply fudge factor:
% \@tempdima=0.1\@tempdima%
% \@tempdima=\EF@slantcorr\@tempdima%
% \@tempdima=0.1\@tempdima%
% % (the eccentric multiplication is to reduce rounding error and 
% % reduce the risk of the dimen getting too big)
\edef\EF@slantC{\the\@tempdima}%
% \typeout{final half slant in points (for C) = \EF@slantC}%
%
% \EF@slantC is now 1/2 the slant of a C;
% need this for shifting back and forth
%
% Now calculate horizontal offset between rules
% \@tempcmda is still the fudged slant per point/points, so...
\@tempdimb=#8% centre line spacing of rules
\@tempdimb=\@tempcmda\@tempdimb%
\@tempdimb=0.5\@tempdimb%
\edef\EF@rulehoffset{\the\@tempdimb}%
%
% below is the old, mad, and incorrect (?) calc
%
% \begin{madness}
%
% \@tempdima=#2
% \@tempdima=100\@tempdima
% \advance\@tempdima by0.5pt\@settopoint\@tempdima
% \edef\@tempcmda{\strip@pt\@tempdima}%
% \@tempdima=100pt%
% \divide\@tempdima by\@tempcmda%
% \edef\@tempcmda{\strip@pt\@tempdima}%
% \@tempdima=#8%
% \@tempdima=\@tempcmda\@tempdima%
% \@tempdimb=\EF@slantC%
% \@tempdimb=2\@tempdimb% since \EF@slantC is actually 1/2 slantC
% \edef\@tempcmda{\strip@pt\@tempdimb}%
% \@tempdima=\@tempcmda\@tempdima%
% \@tempdima=0.5\@tempdima%
% %
% \edef\EF@rulehoffset{\the\@tempdima}%
%
% \end{madness}
%
% \typeout{\protect\EF@rulehoffset\space = \EF@rulehoffset}%
%
% \EF@ruleoffset is now 1/2 the horizontal offset between rules;
% need this for shifting back and forth even more.
%
\@tempdima=#1%             \
\@tempdima=0.01\@tempdima%  \
\@tempdima=#4\@tempdima%     } move back to add cross-strokes
\kern-\@tempdima%           /
\kern\EF@slantC%           /  Slant correction forward for italic
% lift = (height C - depth C - rule gap - rule thickness)/2  + offset
% Note that `rule gap' is the distance between the centre lines of 
% the rules, not the gap between them
\@tempdima=#2%                      \
\advance\@tempdima by-#3%            \
\advance\@tempdima by-#8%             \ calc lift of cross-strokes
\advance\@tempdima by-#7%             /
\@tempdima=0.5\@tempdima%            / 
\advance\@tempdima by#9%            /
% 0.17ex was 1/2 height c/s; height 0.07ex; spacing 0.2ex
\@tempdimc=#8%             \ calc cross-stroke spacing
\advance\@tempdimc by-#7%  /
\raisebox{\@tempdima}{%            
\vbox{%                             \
\@tempdimb=#1%                \      \
\@tempdimb=0.01\@tempdimb%     } calc width of cross-stroke
\@tempdimb=#5\@tempdimb%      /        \
\hbox{\kern\EF@rulehoffset%             \ top rule
\vbox{\hrule width\@tempdimb height#7}}% \ 
\nointerlineskip%                         } draw cross-strokes
\vskip\@tempdimc%                        / (using \@tempdima/b/c from above)
\@tempdimb=#1%                \         /
\@tempdimb=0.01\@tempdimb%     } calc width of cross-stroke
\@tempdimb=#6\@tempdimb%      /       /
\hbox{\kern-\EF@rulehoffset%         /
\vbox{\hrule width\@tempdimb height#7}}}}%  bottom rule
\@tempcnta=#4%                   \
\advance\@tempcnta by-#5%  (aha!) \
\@tempdima=#1%                     \
\@tempdima=0.01\@tempdima%          \ move forward to end of C
\@tempdima=\@tempcnta\@tempdima%    /
\kern\@tempdima%                   /
% shift  by slant amount          /
\kern-\EF@slantC%                /   slant correction
}
%
%    \end{macrocode}
%\end{macro}
%\begin{macro}{\EF@fakeeurobase}
% This command contains the letter that's used as the base to fake a 
% euro symbol -- it's used by the \comname{EFruleeuro} command.
%    \begin{macrocode}
\providecommand\EF@fakeeurobase{C}
%    \end{macrocode}
% \end{macro}
% 
%\begin{macro}{\EFruleeuro}
% The internal command to generate faked euro symbols; meant to be used in 
% config files and things if the user wants to create new sorts of fake 
% euro symbols.
%    \begin{macrocode}
\def\EFruleeuro#1#2#3#4#5#6#7{{% Confine defs to \EFruleeuro
%             #1 = percentage of width of C that back shift of 
%                  rules is; 110 usually
%             #2 = percentage of width of C that width of 
%                  top rules is
%             #3 = percentage of width of C that width of 
%                  bottom rule is
%             #4 = rule thickness (dimen)
%             #5 = rule spacing (dimen)
%             #6 = extra rule lift (dimen)
%             #7 = slant fudge factor (percentage); this is used to 
%                  scale the slant per point dimension from the tfm 
%                  file; it's often wrong in terms of the C glyph
\settowidth{\@tempdima}{\EF@fakeeurobase}%
\settoheight{\@tempdimb}{\EF@fakeeurobase}%
\settodepth{\@tempdimc}{\EF@fakeeurobase}%
\edef\EF@Cwidth{\the\@tempdima}%
\edef\EF@Cheight{\the\@tempdimb}%
\edef\EF@Cdepth{\the\@tempdimc}%
\advance\@tempdimb by\@tempdimc%
% \edef\totalCheight{\the\@tempdimb}%\totalCheight is height+depth of C
% \typeout{\protect\EF@Cwidth\space = \EF@Cwidth}%
% \typeout{\protect\EF@Cheight\space = \EF@Cheight}%
% \typeout{\protect\EF@Cdepth\space = \EF@Cdepth}%
% First job: deal with slant fudge
\def\EF@slantcorr{#7}%
\ifx\EF@slantcorr\@empty\def\EF@slantcorr{100}\fi%
% Ensure that \EF@slantcorr is 100 (%) if not specified.  This 
% parameter is used by \EF@crossstrokes
\def\EF@backshift{#1}% percentage of \EF@Cwidth that back shift is
\@tempdimb=0.01\@tempdima%          swapped these two lines;
\@tempdimb=\EF@backshift\@tempdimb% dimen can get too big otherwise
% \@tempdimb now = length of shift back to add cross-strokes
% Note that this ignores the italic corrections.  Is this right?
% (ignoring italic correction seems to be right; but...  The 
% introduction of the horizontal offset to the rules might not be 
% right to ignore; it seems suitable in tests, but?  Since the amount 
% should always be small, I'll ignore it for now - dealing with it is 
% awkward and the offset *should* help things fit together better.)
% \@tempdima now = width of C
% typeset the faked euro
%
% Assumption: that the cross-strokes don't extend to the right of the 
% C (allows the width calculations to be a bit simpler than they 
% otherwise would be).
%
% \@tempdima = width of C; \@tempdimb = \EF@backshift x width of C
% \typeout{\the\@tempdima\space = width of C}%
% \typeout{\the\@tempdimb\space = \protect\EF@backshift x width of C}%
% Following line: make box = largest of (\@tempdima,\@tempdimb)
\ifdim\@tempdimb>\@tempdima\@tempdima=\@tempdimb\fi%
\makebox[\@tempdima][r]%
{\EF@fakeeurobase\EF@crossstrokes{\EF@Cwidth}{\EF@Cheight}{\EF@Cdepth}%
                                 {\EF@backshift}{#2}{#3}{#4}{#5}{#6}}%
}}
%    \end{macrocode}
%\end{macro}
%
%\begin{macro}{\SelectOnWeight}
%
%\begin{verbatim}
% if the current fount series:
%      is in the  light     list, do #1; else
% if it's in the  medium    list, do #2; else
% if it's in the  bold      list, do #3; else
% if it's in the  ultrabold list, do #4; else
% do #2
%\end{verbatim}
%
%    \begin{macrocode}
\def\SelectOnWeight#1#2#3#4{%
\EF@checkiflisted{\f@series}{\EFlightserieslist}%
\ifEF@listed\EF@debugrep{SelectOnWeight light}#1%
\else
\EF@checkiflisted{\f@series}{\EFmediumserieslist}%
\ifEF@listed\EF@debugrep{SelectOnWeight medium}#2%
\else
\EF@checkiflisted{\f@series}{\EFboldserieslist}%
\ifEF@listed\EF@debugrep{SelectOnWeight bold}#3%
\else
\EF@checkiflisted{\f@series}{\EFultraboldserieslist}%
\ifEF@listed\EF@debugrep{SelectOnWeight ultrabold}#4%
\else\EF@debugrep{SelectOnWeight default to medium}%
#2%
\fi\fi\fi\fi}
%    \end{macrocode}
%\end{macro}
%
%\begin{macro}{\mediumruleeuronorm}
%\begin{macro}{\mediumruleeuronoslant}
%\begin{macro}{\mediumruleeurobigslant}
% This is the standard command for faking a euro symbol.  It selects 
% one of four weights of cross-stroke depending on the current fount 
% series.
% 
% The light and ultra bold weights are fairly arbitrary. \hfuzz=57.28705pt
%
%    \begin{macrocode}
\providecommand*{\mediumruleeuronorm}[2]{\EF@debugrep{medium rule euro norm}%
\SelectOnWeight%
{\EFruleeuro{110}{80}{72}{0.04ex}{0.27ex}{#1}{#2}}% light
{\EFruleeuro{110}{80}{72}{0.07ex}{0.27ex}{#1}{#2}}% medium
{\EFruleeuro{110}{80}{72}{0.14ex}{0.27ex}{#1}{#2}}% bold
{\EFruleeuro{110}{80}{72}{0.18ex}{0.27ex}{#1}{#2}}% ultra bold - new numbers
}
\providecommand*{\mediumruleeuronoslant}[2]{\EF@debugrep{medium rule euro noslant}%
\SelectOnWeight%
{\EFruleeuro{110}{80}{80}{0.04ex}{0.27ex}{#1}{#2}}% light
{\EFruleeuro{110}{80}{80}{0.07ex}{0.27ex}{#1}{#2}}% medium
{\EFruleeuro{110}{80}{80}{0.14ex}{0.27ex}{#1}{#2}}% bold
{\EFruleeuro{110}{80}{80}{0.18ex}{0.27ex}{#1}{#2}}% ultra bold
}
\providecommand*{\mediumruleeurobigslant}[2]{\EF@debugrep{medium rule euro bigslant}%
\SelectOnWeight%
{\EFruleeuro{110}{80}{60}{0.04ex}{0.27ex}{#1}{#2}}% light
{\EFruleeuro{110}{80}{60}{0.07ex}{0.27ex}{#1}{#2}}% medium
{\EFruleeuro{110}{80}{60}{0.14ex}{0.27ex}{#1}{#2}}% bold
{\EFruleeuro{110}{80}{60}{0.18ex}{0.27ex}{#1}{#2}}% ultra bold
}
%    \end{macrocode}
%\end{macro}
%\end{macro}
%\end{macro}
%\begin{macro}{\lightruleeuronorm}
%\begin{macro}{\lightruleeuronoslant}
%\begin{macro}{\lightruleeurobigslant}\hfuzz=47.83716pt
% A complementary command for faking a euro with lighter cross-strokes; 
% suitable for founts like Computer Modern Roman.
%    \begin{macrocode}
\providecommand*{\lightruleeuronorm}[2]{\EF@debugrep{light rule euro norm}%
\SelectOnWeight%
{\EFruleeuro{110}{80}{72}{0.02ex}{0.27ex}{#1}{#2}}% light
{\EFruleeuro{110}{80}{72}{0.04ex}{0.27ex}{#1}{#2}}% medium
{\EFruleeuro{110}{80}{72}{0.07ex}{0.27ex}{#1}{#2}}% bold
{\EFruleeuro{110}{80}{72}{0.14ex}{0.27ex}{#1}{#2}}% ultra bold
}
\providecommand*{\lightruleeuronoslant}[2]{\EF@debugrep{light rule euro noslant}%
\SelectOnWeight%
{\EFruleeuro{110}{80}{80}{0.02ex}{0.27ex}{#1}{#2}}% light
{\EFruleeuro{110}{80}{80}{0.04ex}{0.27ex}{#1}{#2}}% medium
{\EFruleeuro{110}{80}{80}{0.07ex}{0.27ex}{#1}{#2}}% bold
{\EFruleeuro{110}{80}{80}{0.14ex}{0.27ex}{#1}{#2}}% ultra bold
}
\providecommand*{\lightruleeurobigslant}[2]{\EF@debugrep{light rule euro bigslant}%
\SelectOnWeight%
{\EFruleeuro{110}{80}{60}{0.02ex}{0.27ex}{#1}{#2}}% light
{\EFruleeuro{110}{80}{60}{0.04ex}{0.27ex}{#1}{#2}}% medium
{\EFruleeuro{110}{80}{60}{0.07ex}{0.27ex}{#1}{#2}}% bold
{\EFruleeuro{110}{80}{60}{0.14ex}{0.27ex}{#1}{#2}}% ultra bold
}
%    \end{macrocode}
%\end{macro}
%\end{macro}
%\end{macro}
%\begin{macro}{\heavyruleeuronorm}
%\begin{macro}{\heavyruleeuronoslant}
%\begin{macro}{\heavyruleeurobigslant}
% A complementary command for faking a euro with heavy cross-strokes; 
% it seemed inevitable after the other two.  I'm not sure that there's 
% any particular sense to the bold and ultra bold values in this case.
% 
% I'm still not \emph{completely} happy with this, but it's much better 
% now.\hfuzz=47.83716pt
%    \begin{macrocode}
\providecommand*{\heavyruleeuronorm}[2]{\EF@debugrep{heavy rule euro norm}%
\SelectOnWeight%
{\EFruleeuro{110}{80}{72}{0.14ex}{0.27ex}{#1}{#2}}% light
{\EFruleeuro{110}{80}{72}{0.18ex}{0.27ex}{#1}{#2}}% medium
{\EFruleeuro{110}{80}{72}{0.22ex}{0.30ex}{#1}{#2}}% bold
{\EFruleeuro{110}{80}{72}{0.26ex}{0.33ex}{#1}{#2}}% ultra bold
}
\providecommand*{\heavyruleeuronoslant}[2]{\EF@debugrep{heavy rule euro noslant}%
\SelectOnWeight%
{\EFruleeuro{110}{80}{80}{0.14ex}{0.27ex}{#1}{#2}}% light
{\EFruleeuro{110}{80}{80}{0.18ex}{0.27ex}{#1}{#2}}% medium
{\EFruleeuro{110}{80}{80}{0.22ex}{0.30ex}{#1}{#2}}% bold
{\EFruleeuro{110}{80}{80}{0.26ex}{0.33ex}{#1}{#2}}% ultra bold
}
\providecommand*{\heavyruleeurobigslant}[2]{\EF@debugrep{heavy rule euro bigslant}%
\SelectOnWeight%
{\EFruleeuro{110}{80}{60}{0.14ex}{0.27ex}{#1}{#2}}% light
{\EFruleeuro{110}{80}{60}{0.18ex}{0.27ex}{#1}{#2}}% medium
{\EFruleeuro{110}{80}{60}{0.22ex}{0.30ex}{#1}{#2}}% bold
{\EFruleeuro{110}{80}{60}{0.26ex}{0.33ex}{#1}{#2}}% ultra bold
}
%    \end{macrocode}
%\end{macro}
%\end{macro}
%\end{macro}
%
%\subsection{Code to use marvosym}
%
% Code to use marvosym fount; needs faked italic tfm (and \dvidriver 
% able to fake an italic)
%
%\begin{macro}{\EF@mvs}
%    \begin{macrocode}
\def\EF@mvs{\fontencoding{U}\fontfamily{zmvs}\fontseries{m}\selectfont}
%    \end{macrocode}
%\end{macro}
%
% Note that the |\mbox| is now redundant; leave it in in case 
% |\EF@pmb| changes again
%
%\begin{macro}{\marvosymeuro}
%    \begin{macrocode}
\providecommand{\marvosymeuro}[1]{%
\EF@debugrep{marvosymeuro}%
\SelectOnWeight%
{\EF@mvs\char#1}% light
{\EF@mvs\char#1}% medium
{\mbox{\EF@pmsb{\EF@mvs\char#1}}}% bold
{\mbox{\EF@pmsb{\EF@mvs\char#1}}}% ultra bold
}
%    \end{macrocode}
%\end{macro}
%    
%\begin{macro}{\marvosymserifeuro}
%\begin{macro}{\marvosymsanseuro}
%\begin{macro}{\marvosymmonoeuro}
%    \begin{macrocode}
\providecommand
 {\marvosymserifeuro}{\EF@debugrep{marvosymserifeuro}\marvosymeuro{101}}
\providecommand
 {\marvosymsanseuro}{\EF@debugrep{marvosymsanseuro}\marvosymeuro{99}}
\providecommand
 {\marvosymmonoeuro}{\EF@debugrep{marvosymmonoeuro}\marvosymeuro{100}}
%    \end{macrocode}
%\end{macro}
%\end{macro}
%\end{macro}
%
% \subsection{Faking a bold character}
% \label{sec:code:EFpmb}
%
% Original comments:
% |\EF@pmb| fakes bold; modified from the \TeX book
%
% I don't pretend to understand it all, but this seems to do the job 
% better, and ensures that the width taken by the box is the width taken 
% by the printed glyphs.  This is used by |\marvosymeuro|
% Original code:
%\begin{verbatim}
% \def\EF@pmb#1{\makebox{\setbox\@tempboxa=\hbox{#1}%
%   \kern0em\copy\@tempboxa\kern-\wd\@tempboxa
%   \kern.025em\raise.0216em\copy\@tempboxa\kern-\wd\@tempboxa
%   \kern.025em\box\@tempboxa }}
%\end{verbatim}
%
% This code produces a better faked bold; the idea of using a hexagonal 
% arrangement was suggested by Donald Arseneau.  You can probably tell 
% I wrote the |\EF@pmb| macro myself :-)  I might move to an 
% octagonal arrangement later on.
%
% Marvosym complicates matters; a vertical shift of |0.866 x 0.020em| 
% makes the horizontal strokes collide when you fake a bold Marvosym 
% euro symbol. The solution is to move away from a regular hexagon and 
% use a smaller vertical shift.
%
% So now there's two commands: \comname{EF@pmb} for normal fake bold, 
% and \comname{EF@pmsb} (semi bold) for the Marvosym euro symbols.  
% It's only slightly less heavy than the usual version.
% 
%\begin{macro}{\EF@pmbshift}
%\begin{macro}{\EF@pmb}
%\begin{macro}{\EF@pmsb}
%    \begin{macrocode}
\newlength{\EF@pmbshift}
%
\newcommand{\EF@pmsb}[1]{%
\EF@debugrep{EF@pmsb}%
\EF@pmbshift=0.020em% as was
\hbox{%
\rlap{#1}%
\kern0.5\EF@pmbshift%
\raisebox{0.50\EF@pmbshift}[0pt][0pt]{\rlap{#1}}%
\raisebox{-0.50\EF@pmbshift}[0pt][0pt]{\rlap{#1}}%
\kern1\EF@pmbshift%
\raisebox{0.50\EF@pmbshift}[0pt][0pt]{\rlap{#1}}%
\raisebox{-0.50\EF@pmbshift}[0pt][0pt]{\rlap{#1}}%
\kern0.5\EF@pmbshift%
#1}}
%
\newcommand{\EF@pmb}[1]{%
\EF@debugrep{EF@pmb}%
\EF@pmbshift=0.020em% as was
\hbox{%
\rlap{#1}%
\kern0.5\EF@pmbshift%
\raisebox{0.866\EF@pmbshift}[0pt][0pt]{\rlap{#1}}%
\raisebox{-0.866\EF@pmbshift}[0pt][0pt]{\rlap{#1}}%
\kern1\EF@pmbshift%
\raisebox{0.866\EF@pmbshift}[0pt][0pt]{\rlap{#1}}%
\raisebox{-0.866\EF@pmbshift}[0pt][0pt]{\rlap{#1}}%
\kern0.5\EF@pmbshift%
#1}}
%    \end{macrocode}
%\end{macro}
%\end{macro}
%\end{macro}
% 
%
% \subsection{The code to select and print euro symbols}
%
%
% But better yet: add a pair of options: `|adobeeurofont|' or 
% `|marvosym|'.  The |marvosym| option will set up 
% |\monoeuro| (etc) to use marvosym glyphs; the |adobeeurofont| option 
% (default) will set |\monoeuro| (etc) to use adobe glyphs.
% 
% Do this, \emph{and} add documentation on fiddling with |\userlist| (etc) 
% so you can use both
%
% |\texteuro| is a problem: this command is here to help.
%\begin{verbatim}
% if <fam> is in \faketexteurolist, #2,
%   else
%   if \texteuro is defined and TS1<fam>.fd exists #1,
%     else #2
%     fi fi
%\end{verbatim}
%\begin{macro}{\EFiftexteuroexists}
%    \begin{macrocode}
\def\EFiftexteuroexists#1#2{%
\EF@checkiflisted{\f@family}{\faketexteurolist}%
\ifEF@listed#2%
\else
\ifx\texteuro\@undefined#2% if \texteuro doesn't exist, #2 and finish
\else%
\IfFileExists{ts1\f@family.fd}%
{#1}% if ts1<fam>.fd exists, #1.  Can't usefully test for glyph existing
{#2}% if ts1<fam>.fd doesn't exist, #2 and finish
\fi\fi}
%    \end{macrocode}
%\end{macro}
%\begin{macro}{\zpeutteuro}
%\begin{macro}{\zpeureuro}
%\begin{macro}{\zpeusseuro}
% Define these for |\monoeuro| etc., to use.  Note that the command 
% names are such that if you happen to be in |zpeutt| and say |\euro|, 
% you'll get |\zpeutteuro| executed straight away.  I don't have to 
% list these fount families in |\seriflist| etc.
%    \begin{macrocode}
\providecommand{\zpeutteuro}{\EF@debugrep{zpeutteuro}%
{\fontencoding{U}\fontfamily{zpeutt}\selectfont e}}
\providecommand{\zpeureuro}{\EF@debugrep{zpeureuro}%
{\fontencoding{U}\fontfamily{zpeur}\selectfont e}}
\providecommand{\zpeusseuro}{\EF@debugrep{zpeusseuro}%
{\fontencoding{U}\fontfamily{zpeuss}\selectfont e}}
%    \end{macrocode}
%\end{macro}
%\end{macro}
%\end{macro}
%
% Use either marvosym or Adobe's Eurofonts for serif/sans/mono lists
%
% These might have already been defined in the cfg file; don't want 
% to over-ride those definitions, so |\providecommand| them.
% 
% It's not safe to assume that either Adobe's Eurofonts or the Marvosym 
% fount are in fact installed, but I don't see any easy way of finding 
% out the truth of the matter. I suspect it's best to leave it up to the 
% user to get the configuration right. Careful with that documentation, 
% Eugene.
%
%\begin{macro}{\monoeuro}
%\begin{macro}{\serifeuro}
%\begin{macro}{\sanseuro}
%    \begin{macrocode}
\ifEF@marvosym
\providecommand{\monoeuro}{\EF@debugrep{monoeuro}{\marvosymmonoeuro}}
\providecommand{\serifeuro}{\EF@debugrep{serifeuro}{\marvosymserifeuro}}
\providecommand{\sanseuro}{\EF@debugrep{sanseuro}{\marvosymsanseuro}}
\else
\providecommand{\monoeuro}{\EF@debugrep{monoeuro}\zpeutteuro}
\providecommand{\serifeuro}{\EF@debugrep{serifeuro}\zpeureuro}
\providecommand{\sanseuro}{\EF@debugrep{sanseuro}\zpeusseuro}
\fi
%    \end{macrocode}
%\end{macro}
%\end{macro}
%\end{macro}
% 
% Slightly more involved code for \comname{makeusereuro}: make it issue a 
% warning if it's not user defined.
%
%\begin{macro}{\makeusereuro}
%    \begin{macrocode}
\providecommand{\makeusereuro}
               {\EF@debugrep{makeusereuro}\makefakemediumeuro%
%
\PackageWarningNoLine{eurofont}{%
You have tried to use the \protect\makeusereuro\space command 
to\MessageBreak print a euro symbol, but you have not defined 
the\MessageBreak \protect\makeusereuro\space command. This has 
probably happened in\MessageBreak the \protect\euro\space command. I 
shall print a faked euro symbol\MessageBreak for now}}
%    \end{macrocode}
%\end{macro}
%
%\begin{macro}{\chinaeeuro}
% I have some misgivings about faking a bold from this euro symbol; 
% it's a beautiful glyph which doesn't really deserve this sort of 
% abuse.
% 
% Removed the anomalous parameter from definition of |\chinaeeuro|.  
% What was I thinking of?
%
% And finally\ldots\ Test for the existence of china2e.sty, and assume 
% that China2e's not been installed if the package file is missing.  I'd 
% rather test for the existence of the tfm file, but I don't know how: 
% if you know, I'd appreciate an email explaining how.
% 
%    \begin{macrocode}
\DeclareFontFamily{OT1}{chin}{}
\DeclareFontShape{OT1}{chin}{m}{n}{<-> china10}{}
%
\providecommand{\chinaeeuro}{%
\IfFileExists{china2e.sty}%
{\EF@debugrep{chinaeeuro}%
\SelectOnWeight%
{{\usefont{OT1}{chin}{m}{n}\char255}}% light
{{\usefont{OT1}{chin}{m}{n}\char255}}% medium
{\mbox{\EF@pmb{\usefont{OT1}{chin}{m}{n}\char255}}}% bold
{\mbox{\EF@pmb{\usefont{OT1}{chin}{m}{n}\char255}}}% ultra bold
}%
{\EF@debugrep{chinaeeuro - we have a problem}%
\PackageWarning{eurofont}{%
The \protect\euro\space command
is trying to print a euro symbol\MessageBreak
from the China2e fount, but I can't find the file\MessageBreak
china2e.sty.\MessageBreak\MessageBreak
I'm assuming that you've not got the China2e font\MessageBreak
installed, so I'm printing a faked euro instead\MessageBreak}%
\makefakeeuro}}
%    \end{macrocode}
%\end{macro}
%
%\begin{macro}{\cmrfakeeuro}
%\begin{macro}{\cmssfakeeuro}
%\begin{macro}{\cmttfakeeuro}
%    \begin{macrocode}
\providecommand{\cmrfakeeuro}{%
\EF@debugrep{\protect\cmrfakeeuro}\fakelighteuro}
%
\providecommand{\cmssfakeeuro}{%
\EF@debugrep{\protect\cmssfakeeuro}\fakemediumeuro}
%
\providecommand{\cmttfakeeuro}{%
\EF@debugrep{\protect\cmttfakeeuro}\fakemediumeuro}
%    \end{macrocode}
%\end{macro}
%\end{macro}
%\end{macro}
%\begin{macro}{\makefakeeuro}
%\begin{macro}{\makefakeheavyeuro}
%\begin{macro}{\makefakemediumeuro}
%\begin{macro}{\makefakelighteuro}
% If \comname{<fam>fakeeuro} exists, do \comname{<fam>fakeeuro}; else 
% \comname{fakelighteuro}, \comname{fake\-mediumeuro}, or 
% \comname{fakeheavyeuro} depending).
% 
% |\providecommand|s again so that these definitions can be 
% over-ridden in the config file
% 
%    \begin{macrocode}
\providecommand{\makefakemediumeuro}{\EF@debugrep{makefakemediumeuro}%
\@ifundefined{\f@family fakeeuro}{\fakemediumeuro}%
{\csname\f@family fakeeuro\endcsname}}
%
\providecommand{\makefakelighteuro}{\EF@debugrep{makefakelighteuro}%
\@ifundefined{\f@family fakeeuro}{\fakelighteuro}%
{\csname\f@family fakeeuro\endcsname}}
%
\providecommand{\makefakeheavyeuro}{\EF@debugrep{makefakeheavyeuro}%
\@ifundefined{\f@family fakeeuro}{\fakeheavyeuro}%
{\csname\f@family fakeeuro\endcsname}}
%
\providecommand{\makefakeeuro}{\EF@debugrep{makefakeeuro}%
\@ifundefined{\f@family fakeeuro}{%
% if \<fam>fakeeuro doesn't exist, do this:
\EF@checkiflisted{\f@family}{\fakelightlist}\relax
  \ifEF@listed \makefakelighteuro
    \else
    \EF@checkiflisted{\f@family}{\fakemediumlist}\relax
    \ifEF@listed \makefakemediumeuro
      \else
      \EF@checkiflisted{\f@family}{\fakeheavylist}\relax
      \ifEF@listed \makefakeheavyeuro
        \else%                If <fam>'s not listed,
        \makefakemediumeuro%  print medium faked euro
        \fi \fi \fi
}%
% If \<fam>fakeeuro does exist, execute it:
{\csname\f@family fakeeuro\endcsname}}
%    \end{macrocode}
%\end{macro}
%\end{macro}
%\end{macro}
%\end{macro}
%
% This turned into a heavy bummer.  Re-wrote the faking code to push 
% the top rule to the right and the bottom rule to the left when the 
% fount slants.
%
%\begin{macro}{\pzcfakeeuro}
%    \begin{macrocode}
\providecommand{\pzcfakeeuro}{\EF@debugrep{pzcfakeeuro}%
% \@tempdima=1ex% you what?
% commented out until I find out what I thought I was doing
\fakemediumeuro[-0.1ex]}
%    \end{macrocode}
%\end{macro}
%
% \subsection{Make euro commands}
% 
% Can't just |\let| one equal to the other because of the debugging 
% reports.
%\begin{macro}{\maketexteuro}
%\begin{macro}{\cmeuro}
%    \begin{macrocode}
\providecommand{\maketexteuro}{\EF@debugrep{maketexteuro}%
\EFiftexteuroexists{\texteuro}{\makefakeeuro}}
%
\providecommand{\cmeuro}{\EF@debugrep{cmeuro}%
\EFiftexteuroexists{\texteuro}{\makefakeeuro}}
%    \end{macrocode}
%\end{macro}
%\end{macro}
%
% If the eurosym option's been specified, switch to eurosym's version of 
% the euro for: the Computer Modern families, serifeuro, sanseuro, and 
% monoeuro, and the default euro.
% 
% This is the only place where these euro commands are defined; use 
% \comname{provide\-command} so they can be over-ridden by the config 
% file.
% 
% \begin{macro}{\makecmeuro}
% \begin{macro}{\makedefaulteuro}
% \begin{macro}{\makeserifeuro}
% \begin{macro}{\makesanseuro}
% \begin{macro}{\makemonoeuro}\hfuzz=33.66232pt
%    \begin{macrocode}
\ifEF@eurosym
\EF@debugrep{Using eurosym's euro command}
\providecommand{\makecmeuro}     {\EF@debugrep{makecmeuro;      ESeuro}\ESeuro}
\providecommand{\makedefaulteuro}{\EF@debugrep{makedefaulteuro; ESeuro}\ESeuro}
\providecommand{\makeserifeuro}  {\EF@debugrep{makeserifeuro;   ESeuro}\ESeuro}
\providecommand{\makesanseuro}   {\EF@debugrep{makesanseuro;    ESeuro}\ESeuro}
\providecommand{\makemonoeuro}   {\EF@debugrep{makemonoeuro;    ESeuro}\ESeuro}
\else
\EF@debugrep{Not using eurosym's euro command}
\providecommand{\makecmeuro}     {\EF@debugrep{makecmeuro     }\cmeuro}
\providecommand{\makedefaulteuro}{\EF@debugrep{makedefaulteuro}\makefakeeuro}
\providecommand{\makeserifeuro}  {\EF@debugrep{makeserifeuro  }\serifeuro}
\providecommand{\makesanseuro}   {\EF@debugrep{makesanseuro   }\sanseuro}
\providecommand{\makemonoeuro}   {\EF@debugrep{makemonoeuro   }\monoeuro}
\fi
%    \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \begin{macro}{\makechinaeeuro}
% This command needs a test to detect the existence of the china2e tfm 
% file before trying to use the fount
%    \begin{macrocode}
\providecommand{\makechinaeeuro}
               {\EF@debugrep{makechinaeeuro}\chinaeeuro}
%    \end{macrocode}
% \end{macro}
% 
% Note: |\makecmeuro|+|\maketexteuro| could have identical definitions, 
% since |\makefakeeuro| will call |\<fam>euro| if it exists before trying the 
% generic fake euro code.  (much later)  Does anyone know what I mean by this?
% 
% {\small\hfuzz=32.4455pt
%\begin{verbatim}
% If \f@family is in \userlist, \makeusereuro
%   else
%   if \<fam>euro exists, \<fam>euro
%     else
%     if \f@family is in \texteurolist, \maketexteuro
%       else
%       if \@family is in \chinaelist, \makechinaeeuro
%         else
%         if \f@family is in \cmlist, \makecmeuro
%           else
%           if \f@family is in \serifeurolist, \makeserifeuro
%             else
%             if \f@family is in \sanseurolist, \makesanseuro
%               else
%               if \f@family is in \monoeurolist, \makemonoeuro
%                 else
%                 if \f@family is in \makefakemediumeurolist, \makefakemediumeuro
%                   else
%                   if \f@family is in \makefakeheavyeurolist, \makefakeheavyeuro
%                     else
%                     if \f@family is in \makefakelighteurolist, \makefakelighteuro
%                       else \makedefaulteuro
%                       fi fi fi fi fi fi fi fi fi fi fi
%\end{verbatim}
%}
% |\makecmeuro|:
%\begin{verbatim}
% \texteuro if:
%    not in \faketexteurolist and  TS1<fam>.fd and \texteuro exist,
%       \makefakeeuro otherwise
%\end{verbatim}
%
% |\maketexteuro|:
%\begin{verbatim}
% \texteuro if:
%    not in \faketexteurolist and  TS1<fam>.fd and \texteuro exist, 
%   \makefakeeuro otherwise
%\end{verbatim}
%
% This is it\ldots\  The |\relaxes| are in there just to suppress unwanted 
% spaces and let me use the visual formatting in the command that I 
% wanted to.
%
%\begin{macro}{\EFeuro}\hfuzz=66.73694pt
%    \begin{macrocode}
\DeclareRobustCommand{\EFeuro}{\EF@debugrep{start EFeuro: 
 \f@encoding/\f@family/\f@series/\f@shape}%
 \EF@checkiflisted{\f@family}{\userlist}\relax
 \ifEF@listed\EF@debugrep{EFeuro makeuser euro}\makeusereuro
  \else
  \@ifundefined{\f@family euro}{\@tempswatrue}%   test for \<fam>euro
  {\EF@debugrep{EFeuro \f@family euro}\relax%           do \<fam>euro
  \@tempswafalse\csname\f@family euro\endcsname}\relax% do \<fam>euro
  \if@tempswa% if \<fam>euro doesn't exist, do the next test
    \EF@checkiflisted{\f@family}{\texteurolist}\relax
    \ifEF@listed \EF@debugrep{EFeuro texteuro}\maketexteuro
      \else
      \EF@checkiflisted{\f@family}{\chinaelist}\relax
      \ifEF@listed \EF@debugrep{EFeuro China2e euro}\makechinaeeuro
        \else
        \EF@checkiflisted{\f@family}{\cmlist}\relax
        \ifEF@listed \EF@debugrep{EFeuro cm euro}\makecmeuro
          \else
          \EF@checkiflisted{\f@family}{\seriflist}\relax
          \ifEF@listed \EF@debugrep{EFeuro serif euro}\makeserifeuro
            \else
            \EF@checkiflisted{\f@family}{\sanslist}\relax
            \ifEF@listed \EF@debugrep{EFeuro sans euro}\makesanseuro
              \else
              \EF@checkiflisted{\f@family}{\monolist}\relax
              \ifEF@listed \EF@debugrep{EFeuro mono euro}\makemonoeuro
                \else
                \EF@checkiflisted{\f@family}{\fakelightlist}\relax
                \ifEF@listed \EF@debugrep{EFeuro fake light euro}\makefakelighteuro
                  \else
                  \EF@checkiflisted{\f@family}{\fakemediumlist}\relax
                  \ifEF@listed \EF@debugrep{EFeuro fake med euro}\makefakemediumeuro
                    \else
                    \EF@checkiflisted{\f@family}{\fakeheavylist}\relax
                    \ifEF@listed \EF@debugrep{EFeuro fake heavy euro}\makefakeheavyeuro
                      \else \EF@debugrep{EFeuro default euro}\makedefaulteuro
                      \fi \fi \fi \fi \fi \fi \fi \fi \fi \fi \fi}
%    \end{macrocode}
%\end{macro}
%
% Now then\ldots \packname{eurofont's} euro-generating command is 
% defined as \comname{EFeuro} to begin with. That's so that it can be 
% defined without clashing with anything else (with luck). The following 
% code is to try and ensure that the \comname{euro} command used in the 
% document is what \packname{eurofont} wants it to be. If 
% \packname{eurosym}'s been loaded, its \comname{euro} command is saved 
% as \comname{ESeuro} just after its been loaded, and if any command 
% called \comname{euro} exists at all, it's renamed \comname{oldeuro} 
% at the \comname{begin\{document\}} command. Yes, that does mean that 
% \comname{ESeuro} and \comname{oldeuro} can end up identical if 
% you've loaded the \packname{eurosym} package.
%
%    \begin{macrocode}
\AtBeginDocument{%
% \@ifpackageloaded{eurosym}{\let\ESeuro\euro}{}% save eurosym's \euro
% No: this is redundant to an extent.  If the eurosym option has been 
% specified, \ESeuro has already be \let to \euro.  Best to leave it 
% at that, I think: any already-defined \euro command will be saved 
% as \EFoldeuro anyway.
\let\oldeuro\euro% save the previous \euro command (if one exists)
\let\euro\EFeuro}% make the \euro command be \EFeuro come what may
%    \end{macrocode}
%        
%    \begin{macrocode}               
\endinput
%    \end{macrocode}
% \Finale
%\iffalse
%</package>
%% 
%% End of file `eurofont.sty'
%% \fi