%%\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} % %\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{euro} exists (where || 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{euro} is looked for, where || 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{euro}, where || 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{euro} % & If it exists, \comname{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{fakeeuro} exists, % where || 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.fd| exists (where || 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{fakeeuro} exists % (where || is the name of the current fount family); if so, it % executes \comname{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{fakeeuro} exists % (where || is the name of the current fount family); if so, it % executes \comname{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{fakeeuro} exists % (where || is the name of the current fount family); if so, it % executes \comname{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 % ||, 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 <| 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 is in \userlist, \makeusereuro % else % if \euro exists, \euro % else % if is in \texteurolist, \maketexteuro % else % if is in \chinaelist, \makechinaeeuro % else % if is in \cmlist, \makecmeuro % else % if is in \serifeurolist, \makeserifeuro % else % if is in \sanseurolist, \makesanseuro % else % if is in \monoeurolist, \makemonoeuro % else % if is in \makefakelighteurolist, \makefakelighteuro % else % if is in \makefakemediumeurolist, \makefakemediumeuro % else % if 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{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{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.fd} exists (where || 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{fakeeuro} exists, where || 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{fakeeuro} exists (where || 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{fakeeuro} exists (where || 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{fakeeuro} exists (where || 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.fd} % exists, where \filename{} 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{fakeeuro} (where % || 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{fakeeuro} (where % || 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{fakeeuro} (where % || 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{fakeeuro} (where || 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 ||, and draws the two rules. Each rule is % || thick, and the centre lines of the rules are % separated by a vertical distance of || (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 ||, and the bottom rule has a % horizontal length of ||. The rules are positioned % half-way up the `C', plus ||; 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.fd}, where || 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" % 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 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 % 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 % \fakeeuro, and changed other bits too but my brain hurts % now); added support for 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 ||: % %\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 ||, %\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 is in \faketexteurolist, #2, % else % if \texteuro is defined and TS1.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.fd exists, #1. Can't usefully test for glyph existing {#2}% if ts1.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{fakeeuro} exists, do \comname{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 \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 's not listed, \makefakemediumeuro% print medium faked euro \fi \fi \fi }% % If \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 |\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 \euro exists, \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.fd and \texteuro exist, % \makefakeeuro otherwise %\end{verbatim} % % |\maketexteuro|: %\begin{verbatim} % \texteuro if: % not in \faketexteurolist and TS1.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 \euro {\EF@debugrep{EFeuro \f@family euro}\relax% do \euro \@tempswafalse\csname\f@family euro\endcsname}\relax% do \euro \if@tempswa% if \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 % %% %% End of file `eurofont.sty' %% \fi