summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/eurofont
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/latex/contrib/eurofont
Initial commit
Diffstat (limited to 'macros/latex/contrib/eurofont')
-rw-r--r--macros/latex/contrib/eurofont/adobeuro/readme.txt11
l---------macros/latex/contrib/eurofont/adobeuro/tfmfiles1
-rw-r--r--macros/latex/contrib/eurofont/eurofont.dtx4148
-rw-r--r--macros/latex/contrib/eurofont/eurofont.ins451
-rw-r--r--macros/latex/contrib/eurofont/marvosym/readme.txt11
-rw-r--r--macros/latex/contrib/eurofont/marvosym/source/fmvr8x.afm121
-rw-r--r--macros/latex/contrib/eurofont/marvosym/source/mvrit.tex34
-rw-r--r--macros/latex/contrib/eurofont/marvosym/tfmfiles/original/fmvr8x.tfmbin0 -> 1468 bytes
-rw-r--r--macros/latex/contrib/eurofont/marvosym/tfmfiles/original/fmvri8x.tfmbin0 -> 1600 bytes
-rw-r--r--macros/latex/contrib/eurofont/marvosym/tfmfiles/yandy/fmvr8x.tfmbin0 -> 1440 bytes
-rw-r--r--macros/latex/contrib/eurofont/marvosym/tfmfiles/yandy/fmvri8x.tfmbin0 -> 1576 bytes
-rw-r--r--macros/latex/contrib/eurofont/readme.txt124
12 files changed, 4901 insertions, 0 deletions
diff --git a/macros/latex/contrib/eurofont/adobeuro/readme.txt b/macros/latex/contrib/eurofont/adobeuro/readme.txt
new file mode 100644
index 0000000000..f552f16b29
--- /dev/null
+++ b/macros/latex/contrib/eurofont/adobeuro/readme.txt
@@ -0,0 +1,11 @@
+file readme.txt, part of the eurofont package distribution
+
+Copyright 1998 Rowland McDonnell
+email rebecca@astrid.u-net.com
+
+
+This directory contains directories holding files needed to use Adobe's
+Eurofonts with the eurofont package.
+
+Please refer to the eurofont package documention before using any of these
+files.
diff --git a/macros/latex/contrib/eurofont/adobeuro/tfmfiles b/macros/latex/contrib/eurofont/adobeuro/tfmfiles
new file mode 120000
index 0000000000..6a891c9810
--- /dev/null
+++ b/macros/latex/contrib/eurofont/adobeuro/tfmfiles
@@ -0,0 +1 @@
+../../../../..//fonts/adobe-euro/tfm \ No newline at end of file
diff --git a/macros/latex/contrib/eurofont/eurofont.dtx b/macros/latex/contrib/eurofont/eurofont.dtx
new file mode 100644
index 0000000000..57800578f5
--- /dev/null
+++ b/macros/latex/contrib/eurofont/eurofont.dtx
@@ -0,0 +1,4148 @@
+%%\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 \ No newline at end of file
diff --git a/macros/latex/contrib/eurofont/eurofont.ins b/macros/latex/contrib/eurofont/eurofont.ins
new file mode 100644
index 0000000000..65c20f0b98
--- /dev/null
+++ b/macros/latex/contrib/eurofont/eurofont.ins
@@ -0,0 +1,451 @@
+\iffalse
+Copyright 1998 Rowland McDonnell
+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.
+\fi
+\ProvidesFile{eurofont.ins}
+%
+% fd file for Marvosym:
+\begin{filecontents}{uzmvs.fd}
+% Filename: uzmvs.fd
+% Copyright 1998 Rowland McDonnell
+% email rebecca@astrid.u-net.com
+%
+% Fount definitions for Marvosym
+%
+% THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
+%
+% The slightly strange name is because Marvosym already has an
+% official name and I'd like to avoid any conflicts. So make the
+% Marvosym used by eurofont.sty a bizzare one (z prefix) because
+% nothing else seems right to me.
+%
+% Please don't use this file for anything directly: it's meant to
+% provide NFSS fount definitions so that the eurofont package can make
+% a half-decent job of printing euro symbols using the Marvosym
+% fount. Because of this, it's a bit eccentric to match eurofont's
+% eccentric way of doing things.
+%
+% If you want to modify the code in this file, save the file under a
+% different name and modify *that*. Please make sure you add a note
+% indicating that you've changed things.
+%
+\ProvidesFile{uzmvs.fd}
+ [1998/10/10 Hacked by RJMM font definitions for U/zmvs.]
+%
+\DeclareFontFamily{U}{zmvs}{}
+\DeclareFontShape{U}{zmvs}{m}{n} {<-> fmvr8x}{}
+%
+% Extra font defs needed
+\DeclareFontShape{U}{zmvs}{m}{it}{<-> fmvri8x}{}
+\DeclareFontShape{U}{zmvs}{m}{sl}{<-> fmvri8x}{}
+\DeclareFontShape{U}{zmvs}{m}{sc}{<-> fmvr8x}{}
+%
+\DeclareFontShape{U}{zmvs}{l}{n} {<-> fmvr8x}{}
+\DeclareFontShape{U}{zmvs}{l}{it}{<-> fmvri8x}{}
+\DeclareFontShape{U}{zmvs}{l}{sl}{<-> fmvri8x}{}
+\DeclareFontShape{U}{zmvs}{l}{sc}{<-> fmvr8x}{}
+%
+\DeclareFontShape{U}{zmvs}{l} {ui} {<->ssub * zmvs/m/n}{}
+\DeclareFontShape{U}{zmvs}{m} {ui} {<->ssub * zmvs/m/n}{}
+%
+\endinput
+\end{filecontents}
+
+% fd file for Adobe Euroserif:
+\begin{filecontents}{uzpeur.fd}
+% Filename: uzpeur.fd
+% Copyright 1998 Rowland McDonnell
+% email rebecca@astrid.u-net.com
+%
+% Fount definitions for Adobe Euroserif
+%
+%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
+
+\ProvidesFile{uzpeur.fd}
+ [1998/10/10 Eurofont package font definitions for U/zpeur.]
+
+\DeclareFontFamily{U}{zpeur}{\hyphenchar\font\m@ne}%
+
+\DeclareFontShape{U}{zpeur}{m}{n} {<->zpeur} {}
+\DeclareFontShape{U}{zpeur}{m}{it}{<->zpeuri}{}
+\DeclareFontShape{U}{zpeur}{m}{sl}{<->ssub * zpeur/m/it}{}
+\DeclareFontShape{U}{zpeur}{m}{sc}{<->ssub * zpeur/m/n}{}
+
+\DeclareFontShape{U}{zpeur}{b}{n} {<->zpeub} {}
+\DeclareFontShape{U}{zpeur}{b}{it}{<->zpeubi}{}
+\DeclareFontShape{U}{zpeur}{b}{sl}{<->ssub * zpeur/b/it} {}
+\DeclareFontShape{U}{zpeur}{b}{sc}{<->ssub * zpeur/b/n}{}
+
+\DeclareFontShape{U}{zpeur}{l}{n} {<->ssub * zpeur/m/n} {}
+\DeclareFontShape{U}{zpeur}{l}{it}{<->ssub * zpeur/m/it}{}
+\DeclareFontShape{U}{zpeur}{l}{sl}{<->ssub * zpeur/m/it}{}
+\DeclareFontShape{U}{zpeur}{l}{sc}{<->ssub * zpeur/m/n} {}
+
+\DeclareFontShape{U}{zpeur}{bx}{n} {<->ssub * zpeur/b/n} {}
+\DeclareFontShape{U}{zpeur}{bx}{it}{<->ssub * zpeur/b/it}{}
+\DeclareFontShape{U}{zpeur}{bx}{sl}{<->ssub * zpeur/b/it}{}
+\DeclareFontShape{U}{zpeur}{bx}{sc}{<->ssub * zpeur/b/n} {}
+
+\DeclareFontShape{U}{zpeur}{l} {ui} {<->ssub * zpeur/m/n}{}
+\DeclareFontShape{U}{zpeur}{m} {ui} {<->ssub * zpeur/m/n}{}
+\DeclareFontShape{U}{zpeur}{b} {ui} {<->ssub * zpeur/b/n}{}
+\DeclareFontShape{U}{zpeur}{bx}{ui} {<->ssub * zpeur/b/n}{}
+%
+\endinput
+\end{filecontents}
+
+% fd file for Adobe Eurosans:
+\begin{filecontents}{uzpeuss.fd}
+% Filename: uzpeuss.fd
+% Copyright 1998 Rowland McDonnell
+% email rebecca@astrid.u-net.com
+%
+% Fount definitions for Adobe Eurosans
+%
+%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
+
+\ProvidesFile{uzpeuss.fd}
+ [1998/10/10 Eurofont package font definitions for U/zpeuss.]
+
+\DeclareFontFamily{U}{zpeuss}{\hyphenchar\font\m@ne}%
+
+\DeclareFontShape{U}{zpeuss}{m}{n} {<->zpeurs} {}
+\DeclareFontShape{U}{zpeuss}{m}{it}{<->zpeuris}{}
+\DeclareFontShape{U}{zpeuss}{m}{sl}{<->ssub * zpeuss/m/it}{}
+\DeclareFontShape{U}{zpeuss}{m}{sc}{<->ssub * zpeuss/m/n}{}
+
+\DeclareFontShape{U}{zpeuss}{b}{n} {<->zpeubs} {}
+\DeclareFontShape{U}{zpeuss}{b}{it}{<->zpeubis}{}
+\DeclareFontShape{U}{zpeuss}{b}{sl}{<->ssub * zpeuss/b/it} {}
+\DeclareFontShape{U}{zpeuss}{b}{sc}{<->ssub * zpeuss/b/n}{}
+
+\DeclareFontShape{U}{zpeuss}{l}{n} {<->ssub * zpeuss/m/n}{}
+\DeclareFontShape{U}{zpeuss}{l}{it}{<->ssub * zpeuss/m/it}{}
+\DeclareFontShape{U}{zpeuss}{l}{sl}{<->ssub * zpeuss/m/it}{}
+\DeclareFontShape{U}{zpeuss}{l}{sc}{<->ssub * zpeuss/m/n} {}
+
+\DeclareFontShape{U}{zpeuss}{bx}{n} {<->ssub * zpeuss/b/n} {}
+\DeclareFontShape{U}{zpeuss}{bx}{it}{<->ssub * zpeuss/b/it}{}
+\DeclareFontShape{U}{zpeuss}{bx}{sl}{<->ssub * zpeuss/b/it}{}
+\DeclareFontShape{U}{zpeuss}{bx}{sc}{<->ssub * zpeuss/b/n} {}
+
+\DeclareFontShape{U}{zpeuss}{l} {ui} {<->ssub * zpeuss/m/n}{}
+\DeclareFontShape{U}{zpeuss}{m} {ui} {<->ssub * zpeuss/m/n}{}
+\DeclareFontShape{U}{zpeuss}{b} {ui} {<->ssub * zpeuss/m/b}{}
+\DeclareFontShape{U}{zpeuss}{bx}{ui} {<->ssub * zpeuss/m/b}{}
+%
+\endinput
+\end{filecontents}
+
+% fd file for Adobe Euromono:
+\begin{filecontents}{uzpeutt.fd}
+%Filename: uzpeutt.fd
+% Copyright 1998 Rowland McDonnell
+% email rebecca@astrid.u-net.com
+%
+% Fount definitions for Adobe Euromono
+%
+%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
+
+\ProvidesFile{Uzpeutt.fd}
+ [1998/10/10 Eurofont package font definitions for U/zpeutt.]
+
+\DeclareFontFamily{U}{zpeutt}{\hyphenchar\font\m@ne}%
+
+\DeclareFontShape{U}{zpeutt}{m}{n} {<->zpeurt} {}
+\DeclareFontShape{U}{zpeutt}{m}{it}{<->zpeurit}{}
+\DeclareFontShape{U}{zpeutt}{m}{sl}{<->ssub * zpeutt/m/it}{}
+\DeclareFontShape{U}{zpeutt}{m}{sc}{<->ssub * zpeutt/m/n}{}
+
+\DeclareFontShape{U}{zpeutt}{b}{n} {<->zpeubt} {}
+\DeclareFontShape{U}{zpeutt}{b}{it}{<->zpeubit}{}
+\DeclareFontShape{U}{zpeutt}{b}{sl}{<->ssub * zpeutt/b/it} {}
+\DeclareFontShape{U}{zpeutt}{b}{sc}{<->ssub * zpeutt/b/n}{}
+
+\DeclareFontShape{U}{zpeutt}{l}{n} {<->ssub * zpeutt/m/n}{}
+\DeclareFontShape{U}{zpeutt}{l}{it}{<->ssub * zpeutt/m/it}{}
+\DeclareFontShape{U}{zpeutt}{l}{sl}{<->ssub * zpeutt/m/it}{}
+\DeclareFontShape{U}{zpeutt}{l}{sc}{<->ssub * zpeutt/m/n} {}
+
+\DeclareFontShape{U}{zpeutt}{bx}{n} {<->ssub * zpeutt/b/n} {}
+\DeclareFontShape{U}{zpeutt}{bx}{it}{<->ssub * zpeutt/b/it}{}
+\DeclareFontShape{U}{zpeutt}{bx}{sl}{<->ssub * zpeutt/b/it}{}
+\DeclareFontShape{U}{zpeutt}{bx}{sc}{<->ssub * zpeutt/b/n} {}
+
+\DeclareFontShape{U}{zpeutt}{l} {ui} {<->ssub * zpeutt/m/n}{}
+\DeclareFontShape{U}{zpeutt}{m} {ui} {<->ssub * zpeutt/m/n}{}
+\DeclareFontShape{U}{zpeutt}{b} {ui} {<->ssub * zpeutt/m/b}{}
+\DeclareFontShape{U}{zpeutt}{bx}{ui} {<->ssub * zpeutt/m/b}{}
+%
+\endinput
+\end{filecontents}
+
+% Config file
+\begin{filecontents}{eurofont.cfg}
+% Configuration file for the eurofont package
+% Copyright 1998 Rowland McDonnell
+% email rebecca@astrid.u-net.com
+%
+% Please do change this file as much as you like, but don't distribute
+% modified versions.
+%
+% If you change this file, do make sure that you change the date,
+% version number, and identification note below:
+%
+\ProvidesFile{eurofont.cfg}[1998/11/03 v1.0 Default config file for
+the eurofont package]
+%
+% 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}
+%
+% And two non-standard weights:
+%
+\EFaddtolist{\EFultraboldserieslist}{xb,ebd}
+%
+\endinput
+\end{filecontents}
+\begin{filecontents}{dvidrive.txt}
+File dvidrive.txt
+Copyright 1998 Rowland McDonnell
+email rebecca@astrid.u-net.com
+
+
+This file contains information on how to configure dvips and OzTeX to use
+Adobe's Eurofonts and the Marvosym fount. I believe that pdfTeX can use
+dvips entries.
+
+If there are any problems with the information below, or if you have
+information on how to configure other dvi drivers, please let me know by
+emailing: rebecca@astrid.u-net.com
+
+
+DVI DRIVER CONFIGURATION LINES FOR ADOBE'S EUROFONTS
+====================================================
+
+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 pdftex can do partial fount downloading using Adobe's
+Eurofonts.
+
+Eurofont configuration lines for Windows/Unix/any others?
+=========================================================
+
+(you need to re-name the *.PFB files *.pfb; thanks to Stefan Ulrich
+<ulrich@cis.uni-muenchen.de> for this and the following entries)
+
+
+psfonts.map entries for Windows/Unix/other
+dvips v5.78 or similar
+
+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
+
+
+psfonts.map entries for Windows/Unix/other
+dvips v5.70 or before, dvips v5.83 and above, and pdftex:
+
+(note that I don't use pdftex; this suggestion might not work)
+
+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
+
+
+Eurofont configuration lines for Macs
+=====================================
+
+
+Macintosh psfonts.map entries for dvips v5.78 or similar
+
+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
+
+
+Macintosh psfonts.map entries for
+dvips v5.70 or before, dvips v5.83 and above, and pdftex:
+
+(note that I don't use pdftex; this suggestion might not work)
+
+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
+
+
+OzTeX config file entries
+
+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
+
+
+DVI DRIVER CONFIGURATION LINES FOR MARVOSYM
+===========================================
+
+Here are some lines to configure dvips to use the Marvosym fount:
+
+Dvips psfonts.map entries for the original Marvosym fount:
+
+fmvr8x Martin_Vogels_Symbole <marvosym.pfb
+fmvri8x Martin_Vogels_Symbole " .167 SlantFont" <marvosym.pfb
+
+
+Dvips psfonts.map entries for the Y&Y `ATM compatible'
+re-worked Marvosym fount:
+
+fmvr8x Marvosym <marvosym.pfb
+fmvri8x Marvosym " .167 SlantFont" <marvosym.pfb
+
+
+I have assumed that all dvi drivers that can use PostScript Type 1
+founts can also produce fake italic founts by slanting an upright
+version. Because of this, I have made no provision for dvi drivers
+that can't do this. If you have a dvi driver that can't fake an
+italic, please let me know and I'll modify the eurofont package to
+take this into account, probably by adding another option and writing
+a new fd file.
+
+Note for Macintosh users
+
+A Mac version of the Marvosym fount has been created in PostScript Type 1
+and TrueType versions. It uses the Y&Y names as above, and these lines are
+be needed for dvips's psfonts.map file:
+
+fmvr8x Marvosym <Marvo
+fmvri8x Marvosym " .167 SlantFont" <Marvo
+
+And these lines for OzTeX's default config file:
+
+fmvr8x Marvosym Marvosym nil
+fmvri8x Marvosym Marvosym nil i
+
+
+If a version of the original Marvosym fount is ever released for Macs,
+these lines will be needed for dvips's psfonts.map file:
+
+fmvr8x Martin_Vogels_Symbole <MartiVogSym
+fmvri8x Martin_Vogels_Symbole " .167 SlantFont" <MartiVogSym
+
+And these lines for OzTeX's default config file:
+
+fmvr8x MartiVogSym "Martin Vogels Symbole" nil
+fmvri8x MartiVogSym "Martin Vogels Symbole" nil i
+\end{filecontents}
+
+\begin{filecontents}{eurofont.tmp}
+\ProvidesFile{eurofont.tmp}
+\def\batchfile{eurofont.tmp}
+\input{docstrip}
+\keepsilent
+\generateFile{eurofont.sty}{t}{\from{eurofont.dtx}{package}}
+\typeout{Finished stripping the comments from eurofont.dtx.}
+\typeout{}
+\typeout{To finish the installation, put these files in a sensible place}
+\typeout{on your system's TeX search path:}
+\typeout{}
+\typeout{eurofont.sty, eurofont.cfg, and all the files ending in fd.}
+\typeout{}
+\typeout{To produce the documentation, run LaTeX on eurofont.dtx.}
+\typeout{}
+\typeout{To find out what to do with the tfm files, read the documentation.}
+\typeout{}
+\typeout{You might like to keep the original files safe as a backup, or}
+\typeout{in case you want to pass on the eurofont package to someone.}
+\typeout{}
+\typeout{You can delete:}
+\typeout{eurofont.dvi, eurofont.aux, eurofont.toc, eurofont.log, and
+ eurofont.tmp}
+\typeout{}
+\endinput
+\end{filecontents}
+\input{eurofont.tmp}
+\endinput
diff --git a/macros/latex/contrib/eurofont/marvosym/readme.txt b/macros/latex/contrib/eurofont/marvosym/readme.txt
new file mode 100644
index 0000000000..15fb0da824
--- /dev/null
+++ b/macros/latex/contrib/eurofont/marvosym/readme.txt
@@ -0,0 +1,11 @@
+file readme.txt, part of the eurofont package distribution
+
+Copyright 1998 Rowland McDonnell
+email rebecca@astrid.u-net.com
+
+
+This directory contains directories holding files needed to use the
+Marvosym fount with the eurofont package.
+
+Please refer to the eurofont package documention before using any of these
+files.
diff --git a/macros/latex/contrib/eurofont/marvosym/source/fmvr8x.afm b/macros/latex/contrib/eurofont/marvosym/source/fmvr8x.afm
new file mode 100644
index 0000000000..399d8b27b2
--- /dev/null
+++ b/macros/latex/contrib/eurofont/marvosym/source/fmvr8x.afm
@@ -0,0 +1,121 @@
+StartFontMetrics 2.0
+FontName Martin_Vogels_Symbole
+Weight Regular
+Version 19980521
+IsFixedPitch false
+FullName Martin_Vogels_Symbole
+UnderlinePosition 0
+ItalicAngle 0.0
+FamilyName Martin Vogels Symbole
+Notice Freeware - All rights reserved - http://www.fh-bochum.de/fb1/vogel/marvosym.html
+UnderlineThickness 0
+FontBBox -1172 -431 3324 2056
+StartCharMetrics 106
+C 32 ; WX 556 ; N space ; B 556 0 556 0 ;
+C 33 ; WX 831 ; N exclam ; B 3 2 741 740 ;
+C 34 ; WX 978 ; N quotedbl ; B 0 -176 977 148 ;
+C 35 ; WX 978 ; N numbersign ; B 89 3 910 735 ;
+C 36 ; WX 978 ; N dollar ; B 89 -174 917 735 ;
+C 37 ; WX 978 ; N percent ; B 79 -179 899 735 ;
+C 38 ; WX 978 ; N ampersand ; B 273 2 665 725 ;
+C 39 ; WX 978 ; N quoteright ; B 320 2 711 725 ;
+C 40 ; WX 978 ; N parenleft ; B 278 0 666 731 ;
+C 41 ; WX 978 ; N parenright ; B 2 -1 973 718 ;
+C 42 ; WX 649 ; N asterisk ; B 16 2 448 484 ;
+C 43 ; WX 509 ; N plus ; B 18 66 438 480 ;
+C 46 ; WX 861 ; N period ; B 9 1 734 727 ;
+C 48 ; WX 556 ; N zero ; B 42 -12 507 719 ;
+C 49 ; WX 556 ; N one ; B 79 0 394 719 ;
+C 50 ; WX 556 ; N two ; B 25 0 506 719 ;
+C 51 ; WX 556 ; N three ; B 38 -12 513 719 ;
+C 52 ; WX 556 ; N four ; B 19 0 533 719 ;
+C 53 ; WX 556 ; N five ; B 44 -12 526 706 ;
+C 54 ; WX 556 ; N six ; B 42 -12 521 719 ;
+C 55 ; WX 556 ; N seven ; B 42 0 512 706 ;
+C 56 ; WX 556 ; N eight ; B 41 -13 511 719 ;
+C 57 ; WX 556 ; N nine ; B 32 -13 510 719 ;
+C 61 ; WX 643 ; N equal ; B 20 182 613 646 ;
+C 62 ; WX 707 ; N greater ; B 28 46 680 501 ;
+C 64 ; WX 975 ; N at ; B 30 -210 972 729 ;
+C 65 ; WX 594 ; N A ; B 0 0 566 566 ;
+C 66 ; WX 854 ; N B ; B 33 31 702 475 ;
+C 67 ; WX 1152 ; N C ; B 79 -9 1081 708 ;
+C 69 ; WX 465 ; N E ; B 0 0 382 714 ;
+C 70 ; WX 698 ; N F ; B 35 0 662 773 ;
+C 72 ; WX 727 ; N H ; B -6 -2 679 1004 ;
+C 73 ; WX 1046 ; N I ; B 0 0 996 709 ;
+C 75 ; WX 993 ; N K ; B 0 0 842 773 ;
+C 77 ; WX 814 ; N M ; B 20 -12 757 726 ;
+C 79 ; WX 521 ; N O ; B 22 59 499 543 ;
+C 80 ; WX -2 ; N P ; B -572 738 -2 925 ;
+C 81 ; WX 769 ; N Q ; B 29 63 733 486 ;
+C 82 ; WX 770 ; N R ; B 57 249 711 274 ;
+C 83 ; WX 769 ; N S ; B 22 63 727 486 ;
+C 84 ; WX 755 ; N T ; B 6 0 725 492 ;
+C 85 ; WX 659 ; N U ; B 0 -1 659 659 ;
+C 86 ; WX 521 ; N V ; B 18 -8 542 543 ;
+C 88 ; WX 521 ; N X ; B 0 -74 497 543 ;
+C 90 ; WX 933 ; N Z ; B 19 38 872 455 ;
+C 98 ; WX 851 ; N b ; B 25 3 794 565 ;
+C 99 ; WX 748 ; N c ; B 23 -21 667 732 ;
+C 100 ; WX 686 ; N d ; B 47 -17 623 613 ;
+C 101 ; WX 729 ; N e ; B 23 -6 661 693 ;
+C 102 ; WX 739 ; N f ; B 0 0 704 713 ;
+C 105 ; WX 827 ; N i ; B 9 -3 743 731 ;
+C 111 ; WX 739 ; N o ; B 19 11 695 691 ;
+C 112 ; WX 0 ; N p ; B -572 585 -2 773 ;
+C 113 ; WX 770 ; N q ; B 44 39 712 503 ;
+C 114 ; WX 770 ; N r ; B 10 190 665 216 ;
+C 115 ; WX 770 ; N s ; B 13 39 681 503 ;
+C 116 ; WX 513 ; N t ; B 0 0 488 487 ;
+C 117 ; WX 1058 ; N u ; B 1 0 1058 732 ;
+C 118 ; WX 1013 ; N v ; B 0 -3 947 723 ;
+C 134 ; WX 474 ; N dagger ; B 35 0 454 685 ;
+C 135 ; WX 673 ; N daggerdbl ; B 48 3 566 680 ;
+C 136 ; WX 475 ; N circumflex ; B 0 2 421 696 ;
+C 140 ; WX 772 ; N OE ; B 27 -70 745 739 ;
+C 150 ; WX 832 ; N endash ; B 89 263 743 397 ;
+C 151 ; WX 820 ; N emdash ; B 83 -2 737 652 ;
+C 152 ; WX 684 ; N tilde ; B 81 0 603 652 ;
+C 153 ; WX 793 ; N trademark ; B 69 -3 724 652 ;
+C 154 ; WX 801 ; N scaron ; B 74 -2 727 652 ;
+C 155 ; WX 824 ; N guilsinglright ; B 77 -21 746 647 ;
+C 156 ; WX 781 ; N oe ; B 64 -2 717 652 ;
+C 164 ; WX 824 ; N currency ; B 10 -10 748 741 ;
+C 167 ; WX 790 ; N section ; B 7 0 561 555 ;
+C 169 ; WX 615 ; N copyright ; B 19 19 574 574 ;
+C 174 ; WX 1382 ; N registered ; B 46 10 1338 770 ;
+C 192 ; WX 878 ; N Agrave ; B 67 -20 823 730 ;
+C 193 ; WX 825 ; N Aacute ; B 48 -14 763 738 ;
+C 194 ; WX 484 ; N Acircumflex ; B 53 -13 417 723 ;
+C 195 ; WX 552 ; N Atilde ; B 64 -9 501 735 ;
+C 196 ; WX 922 ; N Adieresis ; B 49 -26 886 726 ;
+C 197 ; WX 627 ; N Aring ; B 63 5 563 748 ;
+C 198 ; WX 649 ; N AE ; B 53 -22 575 729 ;
+C 199 ; WX 567 ; N Ccedilla ; B 59 -15 508 721 ;
+C 200 ; WX 691 ; N Egrave ; B 45 -14 646 729 ;
+C 201 ; WX 544 ; N Eacute ; B 30 1 514 747 ;
+C 204 ; WX 171 ; N Igrave ; B 3 3 135 740 ;
+C 205 ; WX 157 ; N Iacute ; B 6 1 120 745 ;
+C 206 ; WX 269 ; N Icircumflex ; B 1 2 255 749 ;
+C 207 ; WX 356 ; N Idieresis ; B 2 2 338 747 ;
+C 224 ; WX 947 ; N agrave ; B 37 0 892 745 ;
+C 225 ; WX 612 ; N aacute ; B 43 -14 560 725 ;
+C 226 ; WX 712 ; N acircumflex ; B 49 0 663 743 ;
+C 227 ; WX 952 ; N atilde ; B 51 -12 906 740 ;
+C 228 ; WX 807 ; N adieresis ; B 34 -8 767 747 ;
+C 229 ; WX 865 ; N aring ; B 36 0 823 745 ;
+C 230 ; WX 709 ; N ae ; B 61 -14 679 729 ;
+C 231 ; WX 1070 ; N ccedilla ; B 45 -38 1017 731 ;
+C 232 ; WX 748 ; N egrave ; B 34 -14 713 729 ;
+C 233 ; WX 835 ; N eacute ; B 53 -22 782 729 ;
+C 234 ; WX 959 ; N ecircumflex ; B 58 -16 894 728 ;
+C 235 ; WX 620 ; N edieresis ; B 28 -14 578 729 ;
+C 240 ; WX 722 ; N eth ; B 0 0 718 716 ;
+C 241 ; WX 611 ; N ntilde ; B 68 -197 574 530 ;
+C 247 ; WX 411 ; N divide ; B 295 306 391 400 ;
+C 253 ; WX 1726 ; N yacute ; B 3 0 1623 692 ;
+C 254 ; WX 1005 ; N thorn ; B 17 8 939 858 ;
+C 255 ; WX 1110 ; N UNKN ; B 46 -199 561 796 ;
+EndCharMetrics
+EndFontMetrics
diff --git a/macros/latex/contrib/eurofont/marvosym/source/mvrit.tex b/macros/latex/contrib/eurofont/marvosym/source/mvrit.tex
new file mode 100644
index 0000000000..35a956c302
--- /dev/null
+++ b/macros/latex/contrib/eurofont/marvosym/source/mvrit.tex
@@ -0,0 +1,34 @@
+%&Plain
+% File mvrit.tex
+% Copyright 1998 Rowland McDonnell although I don't know why I bother
+%
+% This is the file used to create the faked italic version of the
+% Marvosym metrics.
+%
+% It requires fontinst, currently (October 1998) available from CTAN:
+%
+% fonts/utilities/fontinst/
+%
+%
+\input fontinst.sty
+
+\installfonts
+\afmtomtx{fmvr8x}{fmvr8x}
+\mtxtopl{fmvr8x}{fmvr8x}
+
+%fudge italic from roman
+\transformfont{fmvri8x}{\slantfont{167}{\fromafm{fmvr8x}}}
+
+\endinstallfonts
+
+\bye
+
+\endinput
+
+Notes:
+
+The file fmvr8x.afm is the original marvosym.afm file re-named.
+
+fmvri8x.tfm was created from fmvr8x.afm using fontinst and pltotf.
+
+fmvr8x.tfm is the original fmvr8x.tfm. \ No newline at end of file
diff --git a/macros/latex/contrib/eurofont/marvosym/tfmfiles/original/fmvr8x.tfm b/macros/latex/contrib/eurofont/marvosym/tfmfiles/original/fmvr8x.tfm
new file mode 100644
index 0000000000..114800be1a
--- /dev/null
+++ b/macros/latex/contrib/eurofont/marvosym/tfmfiles/original/fmvr8x.tfm
Binary files differ
diff --git a/macros/latex/contrib/eurofont/marvosym/tfmfiles/original/fmvri8x.tfm b/macros/latex/contrib/eurofont/marvosym/tfmfiles/original/fmvri8x.tfm
new file mode 100644
index 0000000000..90f48e99e6
--- /dev/null
+++ b/macros/latex/contrib/eurofont/marvosym/tfmfiles/original/fmvri8x.tfm
Binary files differ
diff --git a/macros/latex/contrib/eurofont/marvosym/tfmfiles/yandy/fmvr8x.tfm b/macros/latex/contrib/eurofont/marvosym/tfmfiles/yandy/fmvr8x.tfm
new file mode 100644
index 0000000000..ce403fb48c
--- /dev/null
+++ b/macros/latex/contrib/eurofont/marvosym/tfmfiles/yandy/fmvr8x.tfm
Binary files differ
diff --git a/macros/latex/contrib/eurofont/marvosym/tfmfiles/yandy/fmvri8x.tfm b/macros/latex/contrib/eurofont/marvosym/tfmfiles/yandy/fmvri8x.tfm
new file mode 100644
index 0000000000..a4a036aab8
--- /dev/null
+++ b/macros/latex/contrib/eurofont/marvosym/tfmfiles/yandy/fmvri8x.tfm
Binary files differ
diff --git a/macros/latex/contrib/eurofont/readme.txt b/macros/latex/contrib/eurofont/readme.txt
new file mode 100644
index 0000000000..8612943826
--- /dev/null
+++ b/macros/latex/contrib/eurofont/readme.txt
@@ -0,0 +1,124 @@
+File readme.txt
+Part of the eurofont package
+Copyright 1998 Rowland McDonnell
+email: rebecca@astrid.u-net.com
+
+The eurofont package consists of the following files:
+
+adobeuro
+ readme.txt
+ tfmfiles
+ zpeub.tfm
+ zpeubi.tfm
+ zpeubis.tfm
+ zpeubit.tfm
+ zpeubs.tfm
+ zpeubt.tfm
+ zpeur.tfm
+ zpeuri.tfm
+ zpeuris.tfm
+ zpeurit.tfm
+ zpeurs.tfm
+ zpeurt.tfm
+eurofont.dtx
+eurofont.ins
+marvosym
+ readme.txt
+ source
+ fmvr8x.afm
+ mvrit.tex
+ tfmfiles
+ original
+ fmvr8x.tfm
+ fmvri8x.tfm
+ yandy
+ fmvr8x.tfm
+ fmvri8x.tfm
+readme.txt
+
+To install the package, do the following:
+
+Run LaTeX on eurofont.ins
+
+Put eurofont.sty, eurofont.cfg, and all the files ending in .fd into a
+directory on your tex-inputs search path.
+
+Run LaTeX on eurofont.dtx and print out the documentation.
+
+Read at least the introductory sections of the documentation.
+
+If you want to use Adobe's Eurofonts, put the files zpeub.tfm -
+zpeurt.tfm (all the files in the adobeuro/tfm/ directory) into a directory
+on your tex-fonts search path. The file dvidrive.txt has
+information on how to configure your dvi driver to use Adobe's Eurofonts.
+
+If you want to use the Marvosym fount, read the eurofont package
+documentation. The file dvidrive.txt has information on how to configure
+your dvi driver to use the marvosym fount.
+
+Read the documentation so you can set up the package to meet your needs.
+
+
+FONTS CONTAINING EURO SYMBOLS
+=============================
+
+Aside from the Text Companion founts which accompany the EC founts (the T1
+encoded version of the standard Computer Modern founts), Metafont euro
+symbols are included in two other founts that I know of, both available
+from CTAN. The following urls retrieve the packages from my nearest CTAN
+mirror:
+
+ftp://ftp.tex.ac.uk/tex-archive/macros/latex/contrib/supported/china2e.zip
+ftp://ftp.tex.ac.uk/tex-archive/fonts/eurosym.zip
+
+(other CTAN sites are listed at the end of this document)
+
+There are PostScript 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.
+
+Adobe's Eurofonts are available (September 1998) in a Mac version
+from here:
+
+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
+
+For Textures users on Macs, take the installer from CTAN:
+
+systems/mac/textures/contrib/IdealFonts/EuroDefs.sit.hqx
+systems/mac/textures/contrib/IdealFonts/README.IF
+
+You should still download Adobe's Eurofonts separately.
+
+And in a version suitable for MS-Windows PCs and Unix from here:
+
+ftp://ftp.adobe.com/pub/adobe/type/win/all/eurofont.exe
+ftp://ftp-pac.adobe.com/pub/adobe/type/win/all/eurofont.exe
+
+these files are self-extracting archives on MS-Windows computers which
+can be decompressed on Unix computers with the unzip command.
+
+The marvosym fount is available from CTAN; this url retrieves the marvosym
+fount from my nearest CTAN site (November 1998):
+
+ftp://ftp.tex.ac.uk/tex-archive/fonts/psfonts/marvosym.zip
+
+
+CTAN SITES -- JANUARY 1999.
+===========================
+
+The three CTAN primary sites:
+
+ctan.tug.org (in Massachusetts, USA)
+ftp.dante.de (in Deutschland)
+ftp.tex.ac.uk (in England)
+
+this url can point you to your nearest CTAN site - there are many more
+than the three above:
+
+http://www.ucc.ie/cgi-bin/ctan
+
+