summaryrefslogtreecommitdiff
path: root/macros/plain/contrib/pdcmac/pdcmisc.dtx
diff options
context:
space:
mode:
Diffstat (limited to 'macros/plain/contrib/pdcmac/pdcmisc.dtx')
-rw-r--r--macros/plain/contrib/pdcmac/pdcmisc.dtx555
1 files changed, 555 insertions, 0 deletions
diff --git a/macros/plain/contrib/pdcmac/pdcmisc.dtx b/macros/plain/contrib/pdcmac/pdcmisc.dtx
new file mode 100644
index 0000000000..ad7cad7262
--- /dev/null
+++ b/macros/plain/contrib/pdcmac/pdcmisc.dtx
@@ -0,0 +1,555 @@
+% pdcmisc.dtx -- documentation and source code for misc macro files -*-tex-*-
+
+%%%@TeX-document-file {
+%%% title = "Miscellanous macro files",
+%%% filename = "$texmf/doc/plain/pdcmac/pdcmisc.dtx",
+%%% version = "$Revision: 1.4 $",
+%%% package = "pdcmac 1.0",
+%%% date = "$Date: 1995/03/30 16:13:08 $",
+%%% author = "P. Damian Cugley",
+%%% email = "damian.cugley@comlab.ox.ac.uk",
+%%% address = "Oxford University Computing Laboratory,"
+%%% Parks Road, Oxford OX1 3QD, UK",
+%%% abstract = "This document describes and is the source code for
+%%% the TeX definitions files pdcmigr.tex, pdcimth.tex,
+%%% pdchyex.tex, pdcmasyb.tex.
+%%% Running plain TeX on this file produces both the
+%%% definitions files and the printed documentation.",
+%%% copyright = "Copyright (c) 1991-1995 P. Damian Cugley",
+%%% copying = "This program is free software; you can redistribute
+%%% it and/or modify it under the terms of the GNU
+%%% General Public License as published by the Free
+%%% Software Foundation; either version 2 of the License,
+%%% or (at your option) any later version.",
+%%% notice = "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. See the GNU General Public
+%%% License for more details.",
+%%% notice = "You should have received a copy of the GNU General
+%%% Public License along with this program; if not, write
+%%% to the Free Software Foundation, Inc., 675 Mass Ave,
+%%% Cambridge, MA 02139, USA.",
+%%% codetable = "USASCII",
+%%% dependencies = "pdccode.tex"
+%%%}
+
+%{{{ pdcmisc.dtx
+%{{{ preamble
+
+\relax
+\input pdccode
+
+\document
+\rcs$Id: pdcmisc.dtx,v 1.4 1995/03/30 16:13:08 pdc Exp $\endrcs
+
+\def\newfile{\lineno=0 }
+%}}} preamble
+%{{{ intro
+\author{P. Damian Cugley}
+\title{Miscellaneous macro files}
+
+%}}} intro
+%{{{ pdcmigr
+
+\newfile
+\section{PDCMIGR: Use math italic Greek capitals}
+
+ Knuth notes that it is conventional to use unslanted Greek
+ capitals in maths, even though other letters are slanted
+ (I~personally think that it looks nicer to use slanted Greek
+ caps). Thus \TeX\ takes the Greek capitals from fam~0 by
+ default.
+
+ If you are using a body text font that does not have the Greek
+ capitals---for example, almost any PostScript or Cork-style
+ font---then this no longer works. Better then to switch to
+ using the Greek capitals from the math italic font (fam~1).
+ That's what the file |pdcmigr.tex| does. The characters are
+ still in maths class~7, meaning that they will respect changes
+ to |\fam| made by font-switching commands.
+
+\codefile{pdcmigr.tex}
+
+\code
+ \|\% pdcmigr.tex \fileversion~\filedate -- see end of file %
+ for more info
+ \|\\message\{\fileversion~<\fileauthor~\filedate>\}
+\smallbreak
+ |\mathchardef\Gamma = "7100
+ |\mathchardef\Delta = "7101
+ |\mathchardef\Theta = "7102
+ |\mathchardef\Lambda = "7103
+ |\mathchardef\Xi = "7104
+ |\mathchardef\Pi = "7105
+ |\mathchardef\Sigma = "7106
+ |\mathchardef\Upsilon = "7107
+ |\mathchardef\Phi = "7108
+ |\mathchardef\Psi = "7109
+ |\mathchardef\Omega = "710A
+\endcode
+
+ This file has more comments than code. Since the code is so
+ short I think I'll get away with putting the comments after an
+ |\endinput|.
+\code
+ |\endinput
+\smallskip
+ |%%%@TeX-definition-file {
+ |%%% filename = "$texmf/tex/plain/pdcmac/pdcmigr.tex",
+ \|\%\%\% version~~~~~~~~= "\fileversion",
+ \|\%\%\% date~~~~~~~~~~~= "\filedate",
+ |%%% package = "pdcmac 1.0",
+ |%%% author = "P. Damian Cugley",
+ |%%% email = "damian.cugley@comlab.ox.ac.uk",
+ |%%% address = "Oxford University Computing Laboratory,
+ |%%% Parks Road, Oxford OX1 3QD, UK",
+ |%%% codetable = "USASCII",
+ |%%% keywords = "TeX, plain TeX, macros",
+ |%%% supported = "Maybe",
+ |%%% abstract = "A definition file for TeX, which redefines
+ |%%% \Gamma, ..., \Omega to use letters from the
+ |%%% maths italic font instead of the roman font.
+ |%%% This file was generated by running
+ |%%% plain TeX on pdcmisc.dtx",
+ |%%% copyright = "Copyright (c) 1991, 1995 P. Damian Cugley",
+ |%%% copying = "DO NOT DISTRIBUTE THIS FILE.
+ |%%% Distribute pdcmisc.dtx only as part of the
+ |%%% package it came in.",
+ |%%% dependencies = "",
+ |%%% }
+\endcode
+
+\endcodefile
+%}}} pdcmigr
+%{{{ pdcimth
+
+\newfile
+\section{PDCIMTH: use text italic letters in maths mode}
+
+ Very few existing font families have a separate math-italic font. When
+ using these fonts as body fonts, with the Computer Modern fonts as
+ maths fonts, it looks wrong to have the maths letters in a completely
+ different style form the text italic. Therefore it makes sense to
+ redefine maths mode so that the letters come from the text italic font.
+
+ This is also useful when multiple-letter identifiers are used in maths
+ mode. We c an say |$difference:=height+depth$| and get `$\it
+ difference:=height+depth$' instead of `$difference:=height+depth$'.
+
+ In the following, the counters |\count0| to |\count4| are used as
+ follows:
+$$\centerline{\vbox{\halign{\tt\cs{#}\hfil&&\quad#\hfil\cr
+ count0&mathcode for current upper case char\cr
+ count1&mathcode for current lower case char\cr
+ count2&ASCII code of current upper case char\cr
+ count3&ASCII code of current lower case char\cr
+ count4&number of characters left to redefine\cr
+}}}$$
+ The grouping prevents this temporary use conflicting with \TeX's
+ use of these counters.
+
+\codefile{pdcimth.tex}
+\code
+ \|\% pdcimth.tex \fileversion~\filedate~- maths letters in text italic
+ \|\\message\{\fileversion~\filedate\}
+ |
+ |\begingroup
+\smallbreak
+ | \count0="7400 \count1=\count0
+ | \advance\count0 by`A \advance\count1 by`a
+ | \count2=`A \count3=`a \count4=26
+\smallbreak
+ | \loop\ifnum\count4>0
+ | \advance\count4 by-1
+ | \global\mathcode\count2=\count0
+ | \global\mathcode\count3=\count1
+ | \advance\count0 by1 \advance\count1 by1
+ | \advance\count2 by1 \advance\count3 by1
+ | \repeat
+\smallbreak
+ |\endgroup
+\endcode
+\noindent
+ The value $\hbox{\H{}\tt 7400} + c$ used above means mathcode~7,
+ fam~4 (|\itfam|), character~$c$.
+
+ Once again, the code is short enough that I think I can get away
+ with putting the comments at the end:
+\code
+ |\endinput
+\smallskip
+ |%%%@TeX-definition-file {
+ |%%% filename = "$texmf/tex/plain/pdcmac/pdcimth.tex",
+ \|\%\%\% version~~~~~~~~= "\fileversion",
+ \|\%\%\% date~~~~~~~~~~~= "\filedate",
+ |%%% package = "pdcmac 1.0",
+ |%%% author = "P. Damian Cugley",
+ |%%% email = "damian.cugley@comlab.ox.ac.uk",
+ |%%% address = "Oxford University Computing Laboratory,
+ |%%% Parks Road, Oxford OX1 3QD, UK",
+ |%%% codetable = "USASCII",
+ |%%% keywords = "TeX, plain TeX, macros",
+ |%%% supported = "Maybe",
+ |%%% abstract = "A definition file for TeX, which redefines
+ |%%% mathcodes to use letters from the
+ |%%% text italic font instead of math italic.
+ |%%% This file was generated by running
+ |%%% plain TeX on pdcmisc.dtx",
+ |%%% copyright = "Copyright (c) 1991, 1995 P. Damian Cugley",
+ |%%% copying = "DO NOT DISTRIBUTE THIS FILE.
+ |%%% Distribute pdcmisc.dtx only as part of the
+ |%%% package it came in.",
+ |%%% dependencies = "",
+ |%%% }
+\endcode
+\endcodefile
+%}}} pdcimth
+%{{{ pdchyex
+
+\newfile
+\section{PDCHYEX: Hyphenation exceptions}
+
+ These hyphenation exceptions are ones I~use for must documents.
+
+\notepar
+ Of all the macro files in this package, this is the one you
+ should be most chary of using. These are written for a \TeX\
+ system which uses American English hyphenation patterns, but are
+ intended to help it produce hyphenations suitable for British
+ English, and this peverse approach will probably lead to all
+ sorts of anomalies. Ideally separate hyphenation patterns will
+ be used for British English documents.
+\endnotepar
+
+\codefile{pdchyex.tex}
+
+\subsec{File identification}
+
+ The list of exceptions is expected to grow, so it seems best to
+ have the identification at the top of the file.
+
+\code
+ \|\% pdchyex.tex \fileversion~\filedate~-- some British hyphenations
+\smallskip
+ |%%%@TeX-definition-file {
+ |%%% filename = "$texmf/tex/plain/pdcmac/pdchyex.tex",
+ \|\%\%\% version~~~~~~~~= "\fileversion",
+ \|\%\%\% date~~~~~~~~~~~= "\filedate",
+ |%%% package = "pdcmac 1.0",
+ |%%% author = "P. Damian Cugley",
+ |%%% email = "damian.cugley@comlab.ox.ac.uk",
+ |%%% address = "Oxford University Computing Laboratory,
+ |%%% Parks Road, Oxford OX1 3QD, UK",
+ |%%% codetable = "USASCII",
+ |%%% keywords = "TeX, plain TeX, macros",
+ |%%% supported = "Maybe",
+ |%%% abstract = "A non-exhaustive set of hyphenation exceptions
+ |%%% designed to make TeX with American hyphenation
+ |%%% tables produce some British hyphenations.
+ |%%% This file was generated by running
+ |%%% plain TeX on pdcmisc.dtx",
+ |%%% copyright = "Copyright (c) 1991, 1995 P. Damian Cugley",
+ |%%% copying = "DO NOT DISTRIBUTE THIS FILE.
+ |%%% Distribute pdcmisc.dtx only as part of the
+ |%%% package it came in.",
+ |%%% dependencies = "",
+ |%%%}
+ |
+ \|\\message\{\fileversion~<\fileauthor~\filedate>\}
+ |
+\endcode
+
+\subsec{Setting parameters}
+
+ These settings are from {\it Hart's Rules} p.\thinspace141.
+\code
+ |\lefthyphenmin=2 \righthyphenmin=3 \uchyph=0
+\endcode
+
+\subsec{And finally, the hyphenation exceptions}
+
+\code
+ |\hyphenation{
+\endcode
+ First, some words from {\it Hart's Rules}\/ pp.\thinspace14--15.
+ I've taken the list on p.\thinspace14 and included here those
+ which were given wrong hyphenation by \TeX's default tables.
+\code
+ | le-gend le-gends re-adjust re-appear exact-ing
+\smallbreak
+
+ | abs-cess abs-cess-es abs-cessed ana-lyse ana-lyses
+ | ana-lysis ana-lyses appear-ance appear-ances bio-graphy
+ | celeb-rate celeb-rates celeb-rations cor-respond-ence
+ | depend-ent des-pise des-pises dis-pised dimin-ish
+ | dimin-ish-es dimin-ish-ed dis-connect dis-connect-ed
+ | dis-connects forget-ting gener-ally haemor-rhage
+ | illus-trate immedi-ate immedi-ately immport-ance
+ | inexplic-able inter-pret inter-est inter-ested
+ | inter-est-ing minis-ter origin-ally philo-sophy
+ | philo-sophic philo-sophic-ally prim-ary prob-ably
+ | semb-lance
+\smallbreak
+ | calm-est debt-ors fea-ther fea-thers post-humous lamb-like
+ | poingn-ant tough-ish ach-ing archaeo-logy etymo-logy
+ | philo-logist psycho-logist tauto-logy zoolo-gist
+\endcode
+ Now some random hyphenations I~encountered in my own documents
+ at some point. I~haven't checked these in a spelling
+ dictionary, so don't use them in documents where your life
+ depends on correct hyphenation.
+\code
+
+ | art-iest cig-ar-ette bio-logy bio-chem-is-try boy-friend
+ | brit-ain brit-ish com-ic com-ics cug-ley dogs-body
+ | dor-mouse gai-man graph-ic immedie-ate immedi-ate
+ | immedi-ately issue mckean mis-hap mis-haps news-letter
+ | news-paper night-crawler origin-ally origin-ator phys-ique
+ | phys-iques porn-o-graphy porn-o-graphic rec-om-mend-ation
+ | Ser-geant ser-geant Sien-kie-wicz spon-tan-e-ous
+ | spon-tan-e-ously stop-ped strip-ped teen-ager teen-agers
+ | tem-per-men-tal Thatch-er-ism Thatch-er-ite under-ground
+ | under-grounds var-i-able venge-ance warp-smith warp-smiths
+ | whirl-pool
+
+ |}
+\endcode
+\endcodefile
+
+%}}} pdchyex
+%{{{ pdccmsub
+
+\newfile
+\codefile{pdccmsub.tex}
+\section{PDCCNSUB: Substitutions using Computer Modern glyphs}
+
+ The Malvern and PostScript repertoire includes some characters
+ not included in the \TeX\ Text fonts used by plain \TeX. I~have
+ made macros for some of these that assemble symbols from
+ existing characters. This way documents can be switched between
+ the different font encoding schemes mroe easily. They won't
+ look very pretty though.
+
+\notepar
+ These work acceptably with ten-point Computer Modern but might
+ need adjustment with other fonts.
+\endnotepar
+
+%{{{ indentification
+\subsec{File dientification}
+
+\code
+ \|\% \filename~\fileversion~\filedate~-- CM subs for PS glyphs
+\smallskip
+ |%%%@TeX-definition-file {
+ |%%% filename = "$texmf/tex/plain/pdcmac/pdcmigr.tex",
+ \|\%\%\% version~~~~~~~~= "\fileversion",
+ \|\%\%\% date~~~~~~~~~~~= "\filedate",
+ |%%% package = "pdcmac 1.0",
+ |%%% author = "P. Damian Cugley",
+ |%%% email = "damian.cugley@comlab.ox.ac.uk",
+ |%%% address = "Oxford University Computing Laboratory,
+ |%%% Parks Road, Oxford OX1 3QD, UK",
+ |%%% codetable = "USASCII",
+ |%%% keywords = "TeX, plain TeX, macros",
+ |%%% supported = "Maybe",
+ |%%% abstract = "Macros for simulating some PostScript characters
+ |%%% using glyphs form the Computer Modern family.
+ |%%% This file was generated by running
+ |%%% plain TeX on pdcmisc.dtx",
+ |%%% copyright = "Copyright (c) 1991-1995 P. Damian Cugley",
+ |%%% copying = "DO NOT DISTRIBUTE THIS FILE.
+ |%%% Distribute pdcmisc.dtx only as part of the
+ |%%% package it came in.",
+ |%%% dependencies = "",
+ |%%% }
+ |
+ \|\\message\{\fileversion~\filedate\}
+ |
+\endcode
+
+%}}} indentification
+
+
+\code
+ |\dimendef\dimena=0
+\endcode
+\dimendef\dimena=0
+
+%{{{ currency
+
+\subsec{Currency signs}
+
+\def\yen{{%
+ \ooalign{%
+ \hfil\raise0.25ex\hbox{$\scriptscriptstyle=$}\hfil\crcr
+ \hfil Y\hfil
+ }%
+}}
+\def\currency{{%
+ \ooalign{%
+ \dimena-0.10em
+ \hskip\dimena \raise0.2ex \hbox{\mathhexbox202}\hskip\dimena\crcr
+ \hfil \raise0.2ex \hbox{\mathhexbox20E}\hfil
+ }%
+}}
+
+ The Yen sign looks like `50\thinspace000\yen', the cents sign
+ like `37\rlap/c'. The pounds-sterling sign is always italic.
+\code
+ |\def\pounds{{\it\char36 }}
+\smallbreak
+ |\def\yen{{%
+ | \ooalign{%
+ | \hfil\raise0.25ex\hbox{$\scriptscriptstyle=$}\hfil\crcr
+ | \hfil Y\hfil
+ | }%
+ |}}
+\smallbreak
+ |\def\cents{\leavevmode\hbox{\rm\rlap/c}}
+\endcode
+
+ The ISO~646 currency sign---originally created to replace the
+ dollar sign in the international reference version character
+ set---is supposed to be drawn as a circle with four `ears';
+ we'll have to fake it rather crudely: `\currency', as in
+ `\currency100' or possibly `100\currency'.
+\code
+ |\def\currency{{%
+ | \ooalign{%
+ | \hskip-0.1em
+ | \raise0.2ex \hbox{\mathhexbox202}\hskip-0.1em\crcr
+ | \hfil \raise0.2ex \hbox{\mathhexbox20E}\hfil
+ | }%
+ |}}
+\endcode
+
+ The florin sign `{\it f}' seems to have started life as a way of
+ getting an italic {\it f} on dot-matrix printers. In an italic
+ context it still has to be in itaics---switching to a roman
+ letter does not seem appropriate.
+\code
+ |\def\florin{{\it f\/}}
+\endcode
+
+%}}} currency
+%{{{ circled letters
+
+
+\subsec{Things in circles}
+
+\def\circledletter#1#2{{%
+ \ooalign{%
+ \hfil\kern#1\hbox{$\scriptstyle\rm #2$}\hfil\crcr
+ \mathhexbox20D%
+ }%
+}}
+\def\registered{\circledletter{0.02em}R}
+\def\copyright{\circledletter{-0.045em}C}
+ Here's a general macro for making letters in circles---like
+ the registered trade mark sign `\registered', or the signs
+ `\circledletter{0.04em}P' and `\circledletter{0.02em}S'
+ (I~don't use them so I~haven't given them names) or even `\circledletter{0.05em}1'. A matching
+ copyright sing (using a small capital {\it c} instead of a
+ lower case {\it c}) looks like `\copyright'. Parameter |#1|
+ to the macro is the amount to shift the small letter relative
+ to the circle to get it optically centred.
+\code
+ |\def\circledletter#1#2{{%
+ | \ooalign{%
+ | \hfil\kern#1\raise0.00ex \hbox{$\scriptstyle\rm #2$}\hfil\crcr
+ | \mathhexbox20D%
+ | }%
+ |}}
+\smallbreak
+ |\def\registered{\circledletter{0.02em}R}
+ |\def\copyright{\circledletter{-0.045em}C}
+\endcode
+%}}} circled letters
+%{{{ guillemets
+
+\subsec{Guillemets}
+
+\def\lguillemet{\leavevmode \raise0.5ex \hbox{$\scriptscriptstyle\langle\!\langle$}}
+\def\rguillemet{\leavevmode \raise0.5ex \hbox{$\scriptscriptstyle\rangle\!\rangle$}}
+
+ Ersatz guillemets look like \lguillemet this\rguillemet.
+\code
+ |\def\lguillemet{%
+ | \leavevmode
+ | \raise0.5ex \hbox{$\scriptscriptstyle\langle\!\langle$}%
+ |}
+\smallbreak
+ |\def\rguillemet{%
+ | \leavevmode
+ | \raise0.5ex \hbox{$\scriptscriptstyle\rangle\!\rangle$}%
+ |}
+\endcode
+%}}} guillemets
+%{{{ misc
+\subsec{Miscellaneous}
+
+\def\permille{{%
+ \setbox0 \hbox{/}%
+ \flushtop{$\scriptstyle0\!$}/%
+ \lower\dp0 \hbox{$\!\scriptstyle00$}%
+}}
+\def\orda{\flushtop{\the\scriptfont\ifnum\fam>0 \fam\else 0\fi \b a}}
+\def\ordo{\flushtop{\the\scriptfont\ifnum\fam>0 \fam\else 0\fi \b o}}
+
+ The per-mille sign `\permille' can't be made from `\%' sign because
+ matching the rings is impossible, so we use `0/00':
+\code
+ |\def\permille{{%
+ | \setbox0 \hbox{/}%
+ | \flushtop{$\scriptstyle0\!$}/%
+ | \lower\dp0 \hbox{$\!\scriptstyle00$}%
+ |}}
+\endcode
+
+ The British decimal point is a raised dot: `3\mathhexbox201141'
+ instead of `3.141'.
+\code
+ |\def\gbdecimal{\mathhexbox201}
+\endcode
+ Unfortunately, this symbol has become a casualty of the `DTP
+ revolution', and the American use of a full stop as a decimal
+ point has become common.
+
+ The glyphs `\orda' and `\ordo' are used in to abbreviate Spanish
+ ordinal numbers: the feminine {\it primera} becomes 1\orda, and
+ the masculine {\it primero} 1\ordo.
+\code
+ |\def\orda{\flushtop{\the\scriptfont\ifnum\fam>0 \fam\else 0\fi \b a}}
+ |\def\ordo{\flushtop{\the\scriptfont\ifnum\fam>0 \fam\else 0\fi \b o}}
+\endcode
+
+
+%}}} misc
+%{{{ sc and csc
+
+\subsec{Substitutions for Malvern's alphabet-switching commands}
+
+ The macros used to select small capitals etc.\ in Malvern fonts
+ cannot work with Computer Modern, but might appear in documents
+ anyway. Instead they are all made equivalent to |\relax|.
+
+\code
+ |\let\sc=\relax
+ |\let\csc=\relax
+ |\let\mc=\relax
+\endcode
+
+%}}} sc and csc
+
+\endcodefile
+
+%}}} pdcmasub
+\enddocument
+\bye
+%}}} pdcmisc.dtx
+%Local Variables:
+%fill-prefix: " "
+%fold-folded-p: t
+%End: