summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/mflogo/mflogo.dtx
blob: 1fa1ab198fe3a6c00af3c200469524f7ab5673c0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
% \CheckSum{33}
% \iffalse
%
% mflogo.dtx --- LaTeX package for Metafont and MetaPost logos.
%
% Copyright (C) 1994--99 Ulrik Vieth
%
% This program is free software; you can redistribute it and/or
% modify it under the terms of the LaTeX Project Public License
% as described in lppl.txt in the base LaTeX distribution; either
% version 1 of the License, or (at your option) any later version.
%
% This program is distributed in the hope that it will be useful,
% but WITHOUT ANY WARRANTY; without even the implied warranty of
% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
%
%<*driver>
\documentclass{ltxdoc}
\usepackage{mflogo}
\GetFileInfo{mflogo.sty}
\begin{document}
  \DocInput{mflogo.dtx}
\end{document}
%</driver>
% \fi
%
% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% \changes{1.0} {1994/05/02}{initial version}
% \changes{1.1} {1994/05/06}{changed assignments for bold series}
% \changes{1.1a}{1994/05/10}{revised documentation}
% \changes{1.1b}{1994/05/12}{revised documentation}
% \changes{1.1c}{1994/05/16}{renamed \cs{MPS} to \cs{MP}}
% \changes{1.1d}{1994/05/18}{updated TTN reference}
% \changes{1.2} {1994/05/21}{clean-up for public release}
% \changes{1.3} {1994/08/21}{update for June 94 LaTeX2e distribution,
%   never released}
% \changes{1.4} {1994/12/26}{changed font selection, assume Knuth's
%   local variants are available}
% \changes{1.4a}{1994/12/26}{use \cs{\@} to correct space factor
%   after \cs{\MF} and \cs{\MP}}
% \changes{1.4b}{1994/12/26}{eliminated \cs{filename}, \cs{filedate},
%   use \cs{GetFileInfo}}
% \changes{1.5} {1995/05/14}{major documentation rewrite}
% \changes{1.5a}{1995/08/28}{minor documentation fixes}
% \changes{1.5b}{1995/08/29}{added copyright notice similar to PSNFSS}
% \changes{1.5c}{1995/12/04}{replaced \cs{\-} by \cs{@dischyph} 
%   to fix problem in tabbing environment}
% \changes{2.0} {1999/03/10}{use the LaTeX Project Public License}
%
%
% \title{The \texttt{mflogo} package}
% \author{Ulrik Vieth}
% \date{1999-03-10 v2.0}
%
% \maketitle
%
% \section{Introduction}
%
%    This \LaTeX{} package provides the font declarations needed to
%    access the \texttt{logo} font family in terms of \textsf{NFSS2},
%    the no-longer-new font selection scheme used in \LaTeXe{}.
%    It also provides a package file that ilustrates how to define the
%    \MF{} and \MP{} logos and some appropriate font changing commands
%    in these terms.
%
%    Using this package, there should no longer be a need to define
%    special macros for the slanted version of these logos, and
%    it should be possible to avoid such errors as on page~2 of
%    \textit{The \LaTeX{} Companion} where the \MF{} logo appears
%    in upright shape within an italics context of a book title.
%
% \DescribeMacro{\logofamily}
% \DescribeMacro{\textlogo}
%    Once you have installed the font definition file
%    \texttt{ulogo.fd} provided here, you can use low-level \LaTeX{}
%    font commands to access the \texttt{logo} fonts in your
%    documents, even if you do not plan to use the package file
%    \texttt{mflogo.sty}.  Apart from defining the \MF{} and \MP{}
%    logos in terms of \LaTeX{} font commands this package file also
%    provides a declarative font changing command |\logofamily| and
%    a font changing command |\textlogo| that takes one argument.
%
%
% \section{The \MF{} source files}
%    
%    In this package, we assume that your \TeX{} distribution includes
%    the \MF{} sources for the \texttt{logo} font family, available
%    from the directory \texttt{/systems/knuth/lib} on CTAN archives.
%    These consists of the \MF{} program file \texttt{logo.mf} and a
%    number of \MF{} driver files for various font shapes and sizes,
%    all of which are described in \textit{The \MF{}book}.  
%    (Please note that the file \texttt{logo.mf} has been updated by
%    DEK in 1993, adding the letters `\textlogo{P}' and~`\textlogo{S}'
%    for the \MP{} logo. If \TeX{} complains about missing characters
%    in some of the \texttt{logo} fonts while processing this
%    documentation, you should consider updating your copy
%    of~\texttt{logo.mf} and regenerating all the \texttt{logo}
%    fonts.)
%
%    We also assume that your installation has the additional variants 
%    of the \texttt{logo} fonts (\texttt{logosl9} and \texttt{logod10})
%    from the directory \texttt{/systems/knuth/local/lib}.
%    Many modern \TeX{} distributions already have them included,
%    but in case you don't have them, it shouldn't be too difficult
%    to retrieve them individually.
%
%    Finally, in order to provide a reasonably orthogonal range of
%    sizes and shapes, this package uses another non-standard variant
%    of the \texttt{logo} fonts (\texttt{logosl8}), which is derived
%    from the existing variants by analogy.^^A
%    \footnote{This is just a simple matter of replacing `9' by `8'.}
%
%    The \MF{} source for this font shape is distributed separately
%    with this package since we want to avoid the overhead of
%    \textsc{DOCSTRIP} headers in such a trivial file, which would
%    result if it were generated from the same |.dtx| file as the
%    \LaTeX{} font definitions and the package file.
%
%
% \StopEventually{}
%
%
% \section{Hello, World!}
%
%    First, we announce the package and the font definition file.
%
%    \begin{macrocode}
%<package>\NeedsTeXFormat{LaTeX2e}[1994/06/01]
%<package>\ProvidesPackage{mflogo}
%<Ulogo>\ProvidesFile{ulogo.fd}
%<+package>[1999/03/10 v2.0 LaTeX package for Metafont and MetaPost logos]
%<-package>[1999/03/10 v2.0 LaTeX font defs for Metafont and MetaPost logos]
%    \end{macrocode}
%
%
% \section{The font definition file: \texttt{Ulogo.fd}}
%    
%    The first thing to do is to declare a new font family
%    \texttt{logo} using an appropriate encoding scheme.  According to
%    \textit{The \MF{}book} the \texttt{logo} fonts have the font
%    encoding scheme \texttt{"AEFMNOT only"} (or maybe
%    \texttt{"AEFMNOPST only"} after the recent changes).  Clearly,
%    this is a well-defined encoding scheme, but not one of those
%    presently supported in \LaTeX{}.  One might be tempted to define
%    some new encoding scheme~`MF', but the letter~`M' is already
%    reserved for 256-character math fonts. Therefore, we will use the
%    encoding scheme~`U' for the font family~\texttt{logo}.
%    \begin{macrocode}
%<*Ulogo>
\DeclareFontFamily{U}{logo}{}
%    \end{macrocode}
%
% \subsection{Font shape declarations for medium series}
%
%    Now, we will discuss the font shape declarations for the medium
%    series. We will support sizes in the range from 8\,pt up to
%    magstep~5, which should be sufficient to cover the range from
%    |\footnotesize| to~|\Huge|. We assign the \texttt{logosl} fonts
%    to |\itshape| because their slant parameter matches that of 
%    Computer Modern Italics rather than that of Computer Modern
%    Slanted.^^A
%    \footnote{This might be due to the fact that the \texttt{logosl} 
%       fonts were first used in combination with Computer Modern 
%       Italics in the running heads of \textit{The \MF{}book}. 
%       Thus they may have been tuned for this purpose.}
%    For |\slshape| we provide a silent font substitution.
%    \begin{macrocode}
\DeclareFontShape{U}{logo}{m}{n}{
  <8> <9> gen * logo
  <10> <10.95> <12> <14.4> <17.28> <20.74> <24.88> logo10
}{}
\DeclareFontShape{U}{logo}{m}{it}{
  <8> <9> gen * logosl
  <10> <10.95> <12> <14.4> <17.28> <20.74> <24.88> logosl10
}{}
\DeclareFontShape{U}{logo}{m}{sl}{
  <-> ssub * logo/m/it
}{}
%    \end{macrocode}
%
% \subsection{Font shape delarations for bold series}
%
%    Finally, we turn to the font shape declarations for the bold
%    and bold extended series. At present, there are no slanted
%    versions of bold \texttt{logo} fonts, but they could be created
%    easily, if desired. However, we do not attempt to create them
%    here, because the resulting name would be too long to fit into
%    8~characters and it isn't clear how it should be abbreviated.
%
%    We assign the \texttt{logobf} font shape to the semibold condensed
%    series because there are some indications that it was designed
%    to match Computer Modern Sans Serif Demibold Condensed, the
%    font that was used in chapter headings in the \TeX{} and \MF{}
%    manuals. In sizes below 10\,pt, we simply substitute medium
%    series because we want to avoid scaling down fonts below their
%    design size.
%    \begin{macrocode}
\DeclareFontShape{U}{logo}{sbc}{n}{
  <8> <9> sub * logo/m/n
  <10> <10.95> <12> <14.4> <17.28> <20.74> <24.88> logobf10
}{}
%    \end{macrocode}
%
%    Since we assume that the extra variants of the \texttt{logo} fonts
%    are available at your installation, we will use the \texttt{logod} 
%    font shape in the bold and bold extended series.
%
%    As the name \texttt{logod} implies a demibold version, this
%    decision may seem a little odd, but there is a good reason
%    behind it: As mentioned before, \texttt{logobf} was originally
%    designed to match the semibold condensed version of Computer
%    Modern Sans Serif. It also fits well in combination with the
%    bold extended version of that font family because the weight
%    of these two versions is not too different. However, when
%    used in combination with the bold or bold extended version
%    of Computer Modern Roman, the \texttt{logobf} font turns out
%    to be slightly too heavy, and the \texttt{logod} font seems
%    to be a more appropriate alternative.^^A
%    \footnote{The history of the \texttt{logod} font is not very
%       clear. It was first released together with updates for
%       \TeX{} and \MF{} in March~1992. It might have been used
%       in DEK's book \textit{Literate Programming} where bold
%       extended Computer Modern Roman is used in headings.}
%
%    For this reason, we assign the \texttt{logod} font to the bold
%    series (only available in Computer Modern Roman) and set up 
%    a silent font substitution for the bold extended series, based 
%    on the assumption that Computer Modern Roman will be used in 
%    |bfseries| much more frequently than Computer Modern Sans Serif. 
%    However, when using bold extended Computer Modern Sans Serif, 
%    \texttt{logod} will be the wrong choice and one would prefer 
%    \texttt{logobf} instead. 
%
%    Unfortunately, there doesn't seem to be a completely satisfactory 
%    solution to this conflict of interests, short of modifying the 
%    standard font definitions for the Computer Modern family in 
%    a way that bold extended CM Sans Serif would be classified as
%    ultrabold compared to bold extended CM Roman.
%    \begin{macrocode}
\DeclareFontShape{U}{logo}{b}{n}{
  <8> <9> sub * logo/m/n
  <10> <10.95> <12> <14.4> <17.28> <20.74> <24.88> logod10
}{}
\DeclareFontShape{U}{logo}{bx}{n}{
  <-> ssub * logo/b/n
}{}
%</Ulogo>
%    \end{macrocode}
%
%
% \section{The package file: \texttt{mflogo.sty}}
%
%    After having discussed the font definition file, we now turn
%    to the package file that shows how to access the \texttt{logo}
%    font family by defining high-level macros based on the low-level
%    \LaTeX{} font commands.
%
% \begin{macro}{\logofamily}
%    First, we define the declarative font changing command |\logofamily|.
%    This is accomplished using the low-level font commands
%    |\fontencoding| and |\fontfamily| followed by |\selectfont|.
%    If |\logofamily| is encountered in math mode, an error message
%    will be issued.
%
%    In the definition of |\logofamily| we now use |\DeclareRobustCommand| 
%    provided in the production \LaTeXe{} releases dated |1994/06/01|
%    or later. 
%    \begin{macrocode}
%<*package>
\DeclareRobustCommand\logofamily{%
  \not@math@alphabet\logofamily\relax
  \fontencoding{U}\fontfamily{logo}\selectfont}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\textlogo}
%    Next, we define a font changing command |\textlogo| with one
%    argument using |\DeclareTextFontCommand| also provided in the
%    latest \LaTeXe{} release.
%    \begin{macrocode}
\DeclareTextFontCommand{\textlogo}{\logofamily}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\MF}
% \begin{macro}{\MP}
%    Finally, we define macros for the \MF{} and \MP{} logos.  Since
%    the letters `\textlogo{P}' and~`\textlogo{S}' needed for the
%    \MP{} logo were added as recently as 1993, this will only work 
%    if you have an up-to-date version of the \texttt{logo} fonts.  
%    To update them, you just have to install the new version of the
%    \MF{} program file \texttt{logo.mf} and regenerate the
%    \texttt{logo} fonts using exactly the same \MF{} driver files as
%    before.
%
%    There should be no doubt that |\MF| is the standard abbreviation 
%    for the \MF{} logo. For \MP{}, we use the abbreviation |\MP|,
%    which also seems to be the standard abbreviation used for \MP{}
%    input files and the program itself. 
%    
%    According to an e-mail message from John Hobby, he personally 
%    prefers the spelling ``MetaPost'' (in plain roman) instead of 
%    the \texttt{logo} font, but since it was Don Knuth himself who 
%    introduced the alternate spelling, it is acceptable to use 
%    the \texttt{logo} font for \MP{} as well, if you prefer that. 
% \changes{1.4a}{1994/12/26}{use \cs{\@} to correct space factor 
%   after \cs{MF} and \cs{MP}}
% \changes{1.5c}{1995/12/04}{replaced \cs{\-} by \cs{@dischyph} 
%   to fix problem in tabbing environment}
%    \begin{macrocode}
\def\MF{\textlogo{META}\@dischyph\textlogo{FONT}\@}
\def\MP{\textlogo{META}\@dischyph\textlogo{POST}\@}
%</package>
%    \end{macrocode}
%    In order to fix the space factor after the logos in all uppercase 
%    letters, we better add |\@|, which expands to |\spacefactor\@m|,
%    at the end of our macro definitions.  This is exactly how it is 
%    done for the |\TeX| and |\LaTeX| logos in the \LaTeXe{} sources
%    (see |ltspace.dtx| and |ltlogos.dtx|).
% 
%    In closing, it should be pointed out that the above definitions of 
%    the \MF{} and \MP{} logos will make them honor all font changing 
%    commands just like the \TeX{} logo does and always did. Thus both 
%    logos will finally behave identically with respect to font changes, 
%    thanks to \LaTeXe{} and \textsf{NFSS2}.
% \end{macro}
% \end{macro}
%
% \Finale
%
\endinput
%
%% \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         \~}