From 465c3a91c12b03e3e44ed760e4356fa340f830b8 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Wed, 11 Jan 2006 23:49:22 +0000 Subject: trunk/Master/texmf-dist/source/plain git-svn-id: svn://tug.org/texlive/trunk@114 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/source/plain/pdcmac/changes.txt | 239 ++++ .../texmf-dist/source/plain/pdcmac/config.status | 35 + Master/texmf-dist/source/plain/pdcmac/configure | 302 +++++ Master/texmf-dist/source/plain/pdcmac/contents.txt | 40 + Master/texmf-dist/source/plain/pdcmac/copying.tex | 373 ++++++ Master/texmf-dist/source/plain/pdcmac/dtxtags | 67 ++ Master/texmf-dist/source/plain/pdcmac/dtxtags.1 | 207 ++++ Master/texmf-dist/source/plain/pdcmac/fig2epsf | 36 + Master/texmf-dist/source/plain/pdcmac/fig2epsf.1 | 46 + Master/texmf-dist/source/plain/pdcmac/ma55doc.tex | 70 ++ Master/texmf-dist/source/plain/pdcmac/ma55lft.tex | 70 ++ Master/texmf-dist/source/plain/pdcmac/maamac.dtx | 627 ++++++++++ Master/texmf-dist/source/plain/pdcmac/maamac.tex | 193 ++++ Master/texmf-dist/source/plain/pdcmac/magrmac.dtx | 231 ++++ Master/texmf-dist/source/plain/pdcmac/magrmac.tex | 67 ++ Master/texmf-dist/source/plain/pdcmac/magrman.tex | 604 ++++++++++ Master/texmf-dist/source/plain/pdcmac/makefile.in | 160 +++ Master/texmf-dist/source/plain/pdcmac/oput01.fig | 323 ++++++ Master/texmf-dist/source/plain/pdcmac/oput02.fig | 273 +++++ Master/texmf-dist/source/plain/pdcmac/pdcadobe.dtx | 609 ++++++++++ Master/texmf-dist/source/plain/pdcmac/pdcadobe.tex | 300 +++++ Master/texmf-dist/source/plain/pdcmac/pdccmdoc.tex | 64 ++ Master/texmf-dist/source/plain/pdcmac/pdccmlft.tex | 64 ++ Master/texmf-dist/source/plain/pdcmac/pdccmsub.tex | 70 ++ Master/texmf-dist/source/plain/pdcmac/pdccode.dtx | 881 +++++++++++++++ Master/texmf-dist/source/plain/pdcmac/pdccode.tex | 263 +++++ Master/texmf-dist/source/plain/pdcmac/pdccode2.tex | 292 +++++ Master/texmf-dist/source/plain/pdcmac/pdcdoc.def | 232 ++++ Master/texmf-dist/source/plain/pdcmac/pdcfmt2.dtx | 1194 ++++++++++++++++++++ Master/texmf-dist/source/plain/pdcmac/pdcfmt2.tex | 398 +++++++ Master/texmf-dist/source/plain/pdcmac/pdcfsel.dtx | 607 ++++++++++ Master/texmf-dist/source/plain/pdcmac/pdcfsel.tex | 110 ++ Master/texmf-dist/source/plain/pdcmac/pdcguide.fnt | 29 + Master/texmf-dist/source/plain/pdcmac/pdcguide.tex | 942 +++++++++++++++ Master/texmf-dist/source/plain/pdcmac/pdchyex.tex | 56 + Master/texmf-dist/source/plain/pdcmac/pdcimth.tex | 39 + Master/texmf-dist/source/plain/pdcmac/pdcl1maa.dtx | 248 ++++ Master/texmf-dist/source/plain/pdcmac/pdcl1maa.tex | 117 ++ Master/texmf-dist/source/plain/pdcmac/pdclft.def | 106 ++ Master/texmf-dist/source/plain/pdcmac/pdcmacvn.tex | 1 + Master/texmf-dist/source/plain/pdcmac/pdcmigr.tex | 37 + Master/texmf-dist/source/plain/pdcmac/pdcmisc.dtx | 555 +++++++++ Master/texmf-dist/source/plain/pdcmac/pdcmondo.tex | 189 ++++ Master/texmf-dist/source/plain/pdcmac/pdcoput5.dtx | 986 ++++++++++++++++ Master/texmf-dist/source/plain/pdcmac/pdcoput5.tex | 336 ++++++ Master/texmf-dist/source/plain/pdcmac/pdcpsdoc.tex | 81 ++ Master/texmf-dist/source/plain/pdcmac/pdcpslft.tex | 81 ++ Master/texmf-dist/source/plain/pdcmac/pdcsty.dtx | 1153 +++++++++++++++++++ Master/texmf-dist/source/plain/pdcmac/pinstall | 86 ++ Master/texmf-dist/source/plain/pdcmac/pinstall.1 | 108 ++ Master/texmf-dist/source/plain/pdcmac/pmkdir | 67 ++ Master/texmf-dist/source/plain/pdcmac/pmkdir.1 | 81 ++ 52 files changed, 14345 insertions(+) create mode 100644 Master/texmf-dist/source/plain/pdcmac/changes.txt create mode 100644 Master/texmf-dist/source/plain/pdcmac/config.status create mode 100644 Master/texmf-dist/source/plain/pdcmac/configure create mode 100644 Master/texmf-dist/source/plain/pdcmac/contents.txt create mode 100644 Master/texmf-dist/source/plain/pdcmac/copying.tex create mode 100644 Master/texmf-dist/source/plain/pdcmac/dtxtags create mode 100644 Master/texmf-dist/source/plain/pdcmac/dtxtags.1 create mode 100644 Master/texmf-dist/source/plain/pdcmac/fig2epsf create mode 100644 Master/texmf-dist/source/plain/pdcmac/fig2epsf.1 create mode 100644 Master/texmf-dist/source/plain/pdcmac/ma55doc.tex create mode 100644 Master/texmf-dist/source/plain/pdcmac/ma55lft.tex create mode 100644 Master/texmf-dist/source/plain/pdcmac/maamac.dtx create mode 100644 Master/texmf-dist/source/plain/pdcmac/maamac.tex create mode 100644 Master/texmf-dist/source/plain/pdcmac/magrmac.dtx create mode 100644 Master/texmf-dist/source/plain/pdcmac/magrmac.tex create mode 100644 Master/texmf-dist/source/plain/pdcmac/magrman.tex create mode 100644 Master/texmf-dist/source/plain/pdcmac/makefile.in create mode 100644 Master/texmf-dist/source/plain/pdcmac/oput01.fig create mode 100644 Master/texmf-dist/source/plain/pdcmac/oput02.fig create mode 100644 Master/texmf-dist/source/plain/pdcmac/pdcadobe.dtx create mode 100644 Master/texmf-dist/source/plain/pdcmac/pdcadobe.tex create mode 100644 Master/texmf-dist/source/plain/pdcmac/pdccmdoc.tex create mode 100644 Master/texmf-dist/source/plain/pdcmac/pdccmlft.tex create mode 100644 Master/texmf-dist/source/plain/pdcmac/pdccmsub.tex create mode 100644 Master/texmf-dist/source/plain/pdcmac/pdccode.dtx create mode 100644 Master/texmf-dist/source/plain/pdcmac/pdccode.tex create mode 100644 Master/texmf-dist/source/plain/pdcmac/pdccode2.tex create mode 100644 Master/texmf-dist/source/plain/pdcmac/pdcdoc.def create mode 100644 Master/texmf-dist/source/plain/pdcmac/pdcfmt2.dtx create mode 100644 Master/texmf-dist/source/plain/pdcmac/pdcfmt2.tex create mode 100644 Master/texmf-dist/source/plain/pdcmac/pdcfsel.dtx create mode 100644 Master/texmf-dist/source/plain/pdcmac/pdcfsel.tex create mode 100644 Master/texmf-dist/source/plain/pdcmac/pdcguide.fnt create mode 100644 Master/texmf-dist/source/plain/pdcmac/pdcguide.tex create mode 100644 Master/texmf-dist/source/plain/pdcmac/pdchyex.tex create mode 100644 Master/texmf-dist/source/plain/pdcmac/pdcimth.tex create mode 100644 Master/texmf-dist/source/plain/pdcmac/pdcl1maa.dtx create mode 100644 Master/texmf-dist/source/plain/pdcmac/pdcl1maa.tex create mode 100644 Master/texmf-dist/source/plain/pdcmac/pdclft.def create mode 100644 Master/texmf-dist/source/plain/pdcmac/pdcmacvn.tex create mode 100644 Master/texmf-dist/source/plain/pdcmac/pdcmigr.tex create mode 100644 Master/texmf-dist/source/plain/pdcmac/pdcmisc.dtx create mode 100644 Master/texmf-dist/source/plain/pdcmac/pdcmondo.tex create mode 100644 Master/texmf-dist/source/plain/pdcmac/pdcoput5.dtx create mode 100644 Master/texmf-dist/source/plain/pdcmac/pdcoput5.tex create mode 100644 Master/texmf-dist/source/plain/pdcmac/pdcpsdoc.tex create mode 100644 Master/texmf-dist/source/plain/pdcmac/pdcpslft.tex create mode 100644 Master/texmf-dist/source/plain/pdcmac/pdcsty.dtx create mode 100644 Master/texmf-dist/source/plain/pdcmac/pinstall create mode 100644 Master/texmf-dist/source/plain/pdcmac/pinstall.1 create mode 100644 Master/texmf-dist/source/plain/pdcmac/pmkdir create mode 100644 Master/texmf-dist/source/plain/pdcmac/pmkdir.1 (limited to 'Master/texmf-dist/source/plain/pdcmac') diff --git a/Master/texmf-dist/source/plain/pdcmac/changes.txt b/Master/texmf-dist/source/plain/pdcmac/changes.txt new file mode 100644 index 00000000000..c1da39eb921 --- /dev/null +++ b/Master/texmf-dist/source/plain/pdcmac/changes.txt @@ -0,0 +1,239 @@ +Thu Apr 6 12:32:28 1995 Damian Cugley + + * pdcguide.tex: Added dtxtags to file lists and TAGS to Makefile + targets. Shortened a couple of table entries by a word each so + that the GPL doesn't overflow onto the next page. + + * maamac.dtx (\toksa): Added definition of toksa + + * pdcfmt2.dtx (\alphabetletter): Added missing backslash. + + * pdcoput5.dtx (section{Routines for balanced columns}): Removed + spurious space from \makepartialpage + + * dtxtags: New shellscript, generates an etags-format tags file. + * makefile.in (mostlyclean): Added support for dtxtags. + + +Thu Mar 30 17:16:01 1995 Damian Cugley + + * Release 1.1 + + * makefile.in (dist): Made version.txt format prettier. + + * Changed all header comments to say doc/plain/pdcmac for the sake + of TWG-TDS 0.61. + +Tue Mar 28 13:18:47 1995 Damian Cugley + + * pdccode.dtx: Recognizes the "locker" field of RCS id. + Puts line numbers in headline. + + * pdcfsel.dtx: Tidied documentation. Changed \fsel_... to \FSEL... + +Fri Mar 24 17:08:36 1995 Damian Cugley + + + * pinstall: Created a shellscript `pinstall' to replace `install' + command on systems without GNU `install'. Trying to keep track of + all the stupid variants of `install' is pointlessly difficult. + * configure: uses 'pinstall' script if not gnu 'install'. + * makefile.in (install): much simplified by assuming either GNU + "install" or my "pinstall". Changed "mkdirhier" ro "pmkdir" at + the same time. Added manpages for the three shellscripts included + with the package. + + * pdcmisc.dtx (section{PDCIMTH}): Added version ID \message. + + * makefile.in: Added new target, version.txt, which is the version + IDs of all the DTX files. Checked all the DTX files in to RCS (at + long last). + +Thu Mar 16 12:52:02 1995 Damian Cugley + + * pdccode.dtx: notepars now allow \rightskip to shrink. + + * pdcfmt2.dtx: chased down some overfull hboxes + + * pdcsty.dtx (section{Starting up}): Changed name of pdcmasub to + the more sensible pdccmsub. + +Tue Mar 14 12:58:09 1995 Damian Cugley + + * pdcadobe.dtx: Corrected definition or rbrace. + +Thu Mar 9 16:42:07 1995 Damian Cugley + + * pdcmisc.dtx (pdccmsub.dtx): new name for pdcmasub.dtx. + \currency, \orda, \ordo, \florin, \brdecimal, \permille. + +Wed Mar 8 16:53:36 1995 Damian Cugley + + * pdcsty.dtx (\abstract): Stop from generating underfull + hbox. + + * pdcadobe.dtx (\brdecimal): Removed spurious redefinition. + + * pdcguide.tex: Added list of file suffixes. Added + pdcadobe.{dtx,tex} and pdcl1maa.{dtx,tex} to lists of files. + Added PostScript title for when POstScript fonts available. + +Mon Mar 6 16:54:15 1995 Damian Cugley + + * pdcl1maa.dtx: New file + + * pdcsty.dtx: Chased down some overful hboxes. + +Fri Mar 3 18:12:02 1995 Damian Cugley + + * pdcfmt2.dtx (verbatim): added \ttminus, so that PostScript fonts + used as typewriter fonts can change hyphens to minus signs. + + * pdcsty.dtx: Added use of \asyfam, etc. + + * pdcadobe.dtx: Tested with pdcguide and tested ISO Latin-1 + support, found several bugs. + +Thu Mar 2 18:08:48 1995 Damian Cugley + + * pdcsty.dtx: Added rudimentary support for PostScript fonts. + + * pdcadobe.dtx: New file!! + +Tue Feb 28 10:17:40 1995 Damian Cugley + + * pdcsty.dtx: Removed attempts to make a Concrete style; there + really doesn't seem to be much point. Put more of the common code + in pdc{lft,doc}1.tex. + + * pdcguide.tex: reorganized sections, expanded user guide and + installation sections. + +Mon Feb 27 14:43:43 1995 Damian Cugley + + * pdcguide.tex: Made it into a "doc" not a "lft"; expanded + installation section (unfinished) + + * pdccode.dtx: Added summary to end of file, and some backgorund + info at the start. + (section{Layout}): CHanged width to 72 \tentt characters not 36 + \tenrm ems. + +Fri Feb 24 18:55:30 1995 Damian Cugley + + * pdcguide.tex: Removed use of PostScript fonts -- now does a + title using the circlew10 font! + +Thu Feb 23 16:50:33 1995 Damian Cugley + + * install.txt: new file + + * configure (INSTALL): sets INSTALL and INSTALL_DATA to "cp + -p" and puts package name at end of "$docdir". + + * magrman.tex (\twocolgr): adjusted to use new \rigidbalance syntax + + * pdcoput5.dtx (section{Making a page vbox}): adjust colht by + + (section{Routines for balanced coumns}): \rigidpalane no longer + takes an argukent for the width of the completed columns; instead + one should enclose \rigidbalance in \hbox to ...{...}. Eliminated + some variables (\RGDfirstcol etc.). + + *depth* of topbox and partialpage as well as height. + + * pdccode.dtx: New file, which generates tmp.tex (the Makefile + checks it isn't truncated before renaming it to pdccode.tex). + (section{Code sections}): added \~ for a tilde in expanded lines. + + Changed text width and suppressed parindent at start of sections. + Copied verbatim text from pdcfmt2.dtx. Added \filelocker; this is + empty if the file has been checked in. + +Wed Feb 22 15:46:06 1995 Damian Cugley + + * pdcoput5.dtx: Added section headings and brief comments on the + rest of the file. Seached out overfull hboxes in the text so + far. + + (section{Routines for balanced coumns}): Added + \rigidbalancedpartialpage. + +Thu Feb 16 18:04:55 1995 Damian Cugley + + * pdcfmt2.dtx: Adjusted a little so that it now TeXs without hbox + warnings. + + * pdccode.tex: Changed to allow ragged-right printing inside + footnotes. Added \title and \author commands, and set \everycode + and \evercodeline so that some common code at the start of DTX + files is factored out. + +Wed Feb 15 15:45:30 1995 Damian Cugley + + * pdcsty.dtx (section{Starting up}): pdcoput->pdcoput5 + + * configure (cfgdate): Configuration shellscript, made by cutting + down the pdctt configure script. + + * pdcoput5.dtx: Changed name to prevent conflict with old version + of pdcoput (since the calling interface is changing). + +Tue Feb 14 12:20:41 1995 Damian Cugley + + * pdcoput.dtx (section{How to make one column}): Change to just + use vertical mode material to do illustrations insteasd of + separate and caption arguments. Added \topillustration + and \botillustration commands. + + * pdcsty.dtx (section{Layout}): foomarge->foomg to match pdcoput.dtx + + * config.status.sh: placeholder for configuration script. + +Mon Feb 13 14:23:50 1995 Damian Cugley + + * pdcoput.dtx: New file, made from pdcoput.tex 4.1.7. + +Fri Feb 10 13:46:10 1995 Damian Cugley + + * pdcguide.tex: Added a copy of the GNU GPL to the end. + + * copying.tex: new file -- a formatted copy of copying.txt, which + is the GNU General Public License. + + * *.dtx: Updated header comments to include GPL. + +Thu Feb 9 10:38:59 1995 Damian Cugley + + * pdccode2.tex: a new version of pdccode that allows multiple + files to be generated. + + * pdcsty.dtx: replaces ma55doc.dtx, pdccm*.dtx. Uses pdccode2 to + generate multiple files. Sectioning commands go in pdcdoc1.tex + and pdclft1.tex. + + * pdcguide.tex: new file + +Sat Dec 3 16:26:00 1994 P. Damian Cugley (pdc@alleged) + + * pdccode.tex: + Set the vertical margins so that files may be printed on American + paper without losing any of the print. + + * pdcfsel.dtx: + Added a title line on the first page. Removed the dependency of + the code file on pdcutil.tex by adding definitions for \expcs and + \noexpcs. + +Fri Dec 2 00:55:38 1994 P. Damian Cugley (pdc@alleged) + + * pdccode.tex: + Changed \rcs...\end to \rcs...\endrcs for consistency with other + macros that go \foo...\endfoo. + + * pdcfsel.dtx: Removed spurious definiton of \n. Changed + \rcs...\end to \rcs...\endrcs. Changed name of \ldfont to + \loadfont. Removed \setmag. Now produces pdcfsel.tex not xx.tex. + + * pdccode.tex: checked in with -k by pdc at 1994/12/02 00:50:24 + diff --git a/Master/texmf-dist/source/plain/pdcmac/config.status b/Master/texmf-dist/source/plain/pdcmac/config.status new file mode 100644 index 00000000000..34a118a9ff7 --- /dev/null +++ b/Master/texmf-dist/source/plain/pdcmac/config.status @@ -0,0 +1,35 @@ +# config.status -- configuration status file +# creator: configure for pdcmac 1.0 Time-stamp: < > +# created: 1996-04-29 +# command: configure + +case "$1" in + -r*|--r*) + shift + echo $0: rerunning configure 1>&2 + exec sh configure $* ;; +esac + +echo This is config.status, generated by configure for pdcmac on 1996-04-29 + +srcdir=. +date=1996-04-29 +files="${*-makefile}" +sedscript=' + s,@package@,pdcmac, + s,@srcdir@,., + s,@texmf@,//texmf, + s,@configure@,configure, + s,@INSTALL@,install, + s,@INSTALL_DATA@,$(INSTALL) --mode=644, + s,@texdir@,$(texmf)/tex/plain/$(package), + s,@docdir@,$(texmf)/doc/plain/$(package), +' + +for file in $files; do + echo $0: writing $file... 1>&2 + sed -e 's,Template for configure,Generated from '$file'.in on '$date' by '$0, \ + -e "$sedscript" $srcdir/$file.in > $file || exit 1 +done + +exit 0 diff --git a/Master/texmf-dist/source/plain/pdcmac/configure b/Master/texmf-dist/source/plain/pdcmac/configure new file mode 100644 index 00000000000..267494d6269 --- /dev/null +++ b/Master/texmf-dist/source/plain/pdcmac/configure @@ -0,0 +1,302 @@ +#!/bin/sh + +# Mini-configure script for PDCMAC for the benefit of UNIX users + +version="1.0 Time-stamp: " + +# Takes arguments a bit like the GNU autoconf, but only uses them to +# try to guess the TeX root directory + +package=pdcmac +date=`date +19%y-%m-%d` +files=makefile +unique=pdcmisc.dtx +cmd="$0 $@" +me=`basename $0` + +# The flag used with "test" to see if a directory is writable. +# For debugging, I sometimes set writable to -d so that +# the searches will pretend that I have write-access to system +# directories (so I can simulate running the script as root) +writable=-w + +echo "This is configure for $package $version $cfgdate" + +tmp=${TMPDIR-/tmp}/cfg$$ +trap 'rm -f $tmp; exit 1' 1 2 15 + +while test $# -gt 0; do + case $1 in + -n*|--n*) + nocreate=t ;; + -v*|--v*) + echo "configure for $package $version <$cfgauthor $cfgdate>" 1>&2 + exit 0 ;; + -h*|--h*) + cat 1>&2 <<@EOF +USAGE: configure [ option ]... + +Running this script creates config.status and optionally +$files. + +Options: + -h, -help, --help, -v, -version, --version + print a message and exit + + -p DIR, -prefix DIR, --prefix=DIR + prefix for installed file names, for example /usr/local + + -e DIR, -exec_prefix DIR, --exec_prefix=DIR + ignored + + -t DIR, -texmf DIR, --texmf=DIR + prefix for all TeX-related installed file names, for + example /usr/texmf or /usr/local/lib/tex + + -w tds, -with tds, --with-tds + Assume a TDS-like directory tree +@EOF + exit 0 ;; + --p*=*) + prefix=`expr $1 : '--p.*=\(.*\)'` ;; + -p|-prefix|--p*) + prefix=$2; shift ;; + -p*) + prefix=`expr $1 : '-p\(.*\)$'` ;; + --s*=*) + srcdir=`expr $1 : '--s.*=\(.*\)'` ;; + -s|-srcdir|--s*) + srcdir=$2; shift ;; + -s*) + srcdir=`expr $1 : '-s\(.*\)$'` ;; + --t*=*) + texmf=`expr $1 : '--t.*=\(.*\)'` ;; + -t|-texmf|--t*) + texmf=$2; shift ;; + -t*) + texmf=`expr $1 : '-t\(.*\)$'` ;; + --f*=*) + fonts=`expr $1 : '--f.*=\(.*\)'` ;; + -f|-fonts|--f*) + fonts=$2; shift ;; + -f*) + fonts=`expr $1 : '-f\(.*\)$'` ;; + --w*-*) + with=$with/`expr $1 : '--w.*-\(.*\)'`/ ;; + -w|-with|--w*) + with=$with/$2/; shift ;; + -w*) + with=$with/`expr $1 : '-w\(.*\)$'`/ ;; + -e*|--e*=*) + ;; + -e|--e*) + shift ;; + *) + echo $me: ignoring $1 1>&2 + ;; + esac + shift +done + +# Check for the "with" keywords we're interested in: +case $with in */tds/*) tds=t ;; esac +# case $with in */bigendian/*) bigendian=t ;; esac + # endianness doesn't matter because no fonts in this package + + +# Find out how to print a dot with no newline +n=-n c= +echo $n x$c > $tmp +case "`cat $tmp`" in + -n*) + n= c='\\c' ;; +esac +dot="$n .$c" + + +# INSTALL -- oh, I can't be bothered trying to be clever. +if install --version 2>&1 | grep GNU >/dev/null; then + INSTALL="install" +else + INSTALL='$(srcdir)/pinstall' +fi +INSTALL_DATA='$(INSTALL) --mode=644' +echo $me: install files with $INSTALL + + +# find srcdir +if test -z "$srcdir" ; then + echo $n "$me: searching for srcdir (package directory)..$c" + for d in . `dirname $0` ..; do + echo $dot + if test -f $d/$unique; then + echo srcdir=$d + srcdir=$d + break + fi + done +fi + +if test -z "$srcdir"; then + echo "" + echo $me: fatal error: could not find sourcdir + exit 1 +fi + +# User might use --prefix to give the TeX prefix: + +if test -z "$texmf"; then + case "$prefix" in + */texmf|*/tex) + texmf=$prefix ;; + esac +fi + +# If $texmf is not set, then search for it +# We look in all sorts of prefixes like /usr/local (with or without extra +# lib), using all sorts of directiry names like "tex" +# + +if test -z "$texmf"; then + prefixes="$prefix + `echo $TEXINPUTS:$TEXFONTS | tr : \\\\12 | + sed -n -e 's,/[Tt]e[Xx].*,,p' -e 's,/font.*,,p' | uniq` + / /usr /usr/local /opts /p /packages /package + /pd /usr/pd /usr/local/pd /usr/contrib /usr/TeX + $HOME" + echo $n $me: searching for \$texmf..$c + for d in texmf tex TeX tex3.14 tex3 tex82; do + for p in $prefixes; do + echo $dot + if test -d $p/$d -a $writable $p/$d; then + echo texmf=$p/$d + texmf=$p/$d + break 2 + fi + if test -d $p/lib/$d -a $writable $p/lib/$d; then + echo texmf=$p/lib/$d + texmf=$p/lib/$d + break 2 + fi + done + done +fi +if test -z "$texmf"; then + echo "" + echo $me: fatal error: could not guess a texmf directory 1>&2 + exit 1 +fi +if test ! -d "$texmf" -o ! -w "$texmf"; then + echo $me: warning: $texmf needs to be a writable directory 1>&2 +fi + + +# If --with-tds not set, try to guess whether we have found +# a TDS directory or not: +if test -n "$tds" || test -d $texmf/tex/plain; then + tds=t + echo "$me: using TWG-TDS 0.61 directory structure" +else + echo "$me: using old-style directory structure :-(" +fi + + +# Start making the config.status file + +f=config.status + +# Special care is taken with the -n option +# -- -n is not to be included by default when configure is run with +# "config.status -r", so it must be removed from $cmd +# -- -n (or other options) may be included on the command line +# of "config.status -r" and will be passed to configure +cmd2=`echo $cmd | sed 's/ --*n[a-z-]*//g'` +cat >$f <<@EOF +# config.status -- configuration status file +# creator: configure for $package $version <$cfgauthor $cfgdate> +# created: $date +# command: $cmd + +case "\$1" in + -r*|--r*) + shift + echo \$0: rerunning $cmd2 1>&2 + exec sh $cmd2 \$* ;; +esac + +echo This is config.status, generated by configure for $package on $date + +srcdir=$srcdir +date=`date +19%y-%m-%d` +files="\${*-$files}" +sedscript=' + s,@package@,$package, + s,@srcdir@,$srcdir, + s,@texmf@,$texmf, + s,@configure@,$0, + s,@INSTALL@,$INSTALL, + s,@INSTALL_DATA@,$INSTALL_DATA, +@EOF + +if test -n "$tds"; then + echo >>$f " s,@texdir@,\$(texmf)/tex/plain/\$(package)," + echo >>$f " s,@docdir@,\$(texmf)/doc/plain/\$(package)," +else + echo $n $me: searching for TeX macro dir..$c; found= + for d in inputs macros; do + echo $dot + if test -d $texmf/$d -a $writable $texmf/$d; then + echo $texmf/$d + echo >>$f " s,@texdir@,$texmf/$d," + found=t + break + fi + done + if test -z "$found"; then + echo "" + echo $0: fatal error: TeX macro dir NOT FOUND 1>&2 + exit 1 + fi + + # now same again for a documentation directory + echo $n $me: searching for documentation dir..$c; found= + for p in $texmf $fonts $prefixes; do + for d in doc doc/tex docs docs/tex ; do + echo $dot + if test -d $p/$d -a $writable $p/$d; then + echo $p/$d/$package + echo >>$f " s,@docdir@,$p/$d/\$(package)," + found=t + break 2 + fi + done + done + if test -z "$found"; then + echo "" + echo $0: warning: documentation dir NOT FOUND 1>&2 + fi +fi + + +# Finish off the config.status file: + +cat >>$f <<'@EOF' +' + +for file in $files; do + echo $0: writing $file... 1>&2 + sed -e 's,Template for configure,Generated from '$file'.in on '$date' by '$0, \ + -e "$sedscript" $srcdir/$file.in > $file || exit 1 +done + +exit 0 +@EOF + +echo $me: configuration status written on config.status + +if test -z "$nocreate"; then + sh config.status +fi + +rm -f $tmp +exit 0 diff --git a/Master/texmf-dist/source/plain/pdcmac/contents.txt b/Master/texmf-dist/source/plain/pdcmac/contents.txt new file mode 100644 index 00000000000..165cc4ab2fc --- /dev/null +++ b/Master/texmf-dist/source/plain/pdcmac/contents.txt @@ -0,0 +1,40 @@ +total 498 +-rw-r--r-- 1 pdc mc86 1006 Mar 20 14:23 00readme.txt +-rw-r--r-- 1 pdc mc86 7984 Apr 6 16:10 changes.txt +-rwxr-xr-x 1 pdc mc86 6910 Mar 24 18:56 configure +-rw-r--r-- 1 pdc mc86 0 Apr 6 16:10 contents.txt +-rw-r--r-- 1 pdc mc86 19466 Mar 8 18:16 copying.tex +-rw-r--r-- 1 pdc mc86 19038 Feb 10 11:02 copying.txt +-rwxr-xr-x 1 pdc mc86 1282 Apr 6 14:38 dtxtags +-rw-r--r-- 1 pdc mc86 4267 Apr 6 12:19 dtxtags.1 +-rwxr-xr-x 1 pdc mc86 787 Mar 24 18:34 fig2epsf +-rw-r--r-- 1 pdc mc86 1101 Mar 27 16:56 fig2epsf.1 +-rw-r--r-- 1 pdc mc86 3196 Feb 23 18:51 install.txt +-r--r--r-- 1 pdc mc86 21818 Apr 6 14:34 maamac.dtx +-r--r--r-- 1 pdc mc86 7785 Mar 29 17:32 magrmac.dtx +-rw-r--r-- 1 pdc mc86 21216 Feb 23 17:39 magrman.tex +-rw-r--r-- 1 pdc mc86 4854 Apr 6 12:43 makefile.in +-rw-r--r-- 1 pdc mc86 387 Apr 6 14:38 news.txt +-rw-r--r-- 1 pdc mc86 10187 Apr 6 12:42 oput01.eps +-rw-r--r-- 1 pdc mc86 8784 Feb 13 17:07 oput01.fig +-rw-r--r-- 1 pdc mc86 12285 Apr 6 12:42 oput02.eps +-rw-r--r-- 1 pdc mc86 8032 Feb 13 15:34 oput02.fig +-r--r--r-- 1 pdc mc86 20544 Mar 30 17:07 pdcadobe.dtx +-r--r--r-- 1 pdc mc86 29428 Mar 30 17:08 pdccode.dtx +-rw-r--r-- 1 pdc mc86 8194 Apr 6 12:44 pdccode.tex +-rw-r--r-- 1 pdc mc86 7961 Mar 3 15:41 pdccode2.tex +-r--r--r-- 1 pdc mc86 38300 Apr 6 12:55 pdcfmt2.dtx +-r--r--r-- 1 pdc mc86 23174 Mar 28 20:06 pdcfsel.dtx +-rw-r--r-- 1 pdc mc86 61708 Apr 6 16:04 pdcguide.dvi +-rw-r--r-- 1 pdc mc86 31674 Apr 6 16:04 pdcguide.tex +-r--r--r-- 1 pdc mc86 8670 Mar 30 17:10 pdcl1maa.dtx +-rw-r--r-- 1 pdc mc86 27 Apr 6 12:20 pdcmacvn.tex +-r--r--r-- 1 pdc mc86 18597 Mar 30 17:13 pdcmisc.dtx +-rw-r--r-- 1 pdc mc86 5207 Mar 29 15:54 pdcmondo.tex +-r--r--r-- 1 pdc mc86 32746 Apr 6 12:51 pdcoput5.dtx +-r--r--r-- 1 pdc mc86 37441 Mar 30 17:12 pdcsty.dtx +-rwxr-xr-x 1 pdc mc86 1695 Mar 24 19:10 pinstall +-rw-r--r-- 1 pdc mc86 1744 Mar 27 15:47 pinstall.1 +-rwxr-xr-x 1 pdc mc86 1876 Mar 27 14:22 pmkdir +-rw-r--r-- 1 pdc mc86 1538 Mar 27 16:49 pmkdir.1 +-rw-r--r-- 1 pdc mc86 789 Apr 6 14:38 version.txt diff --git a/Master/texmf-dist/source/plain/pdcmac/copying.tex b/Master/texmf-dist/source/plain/pdcmac/copying.tex new file mode 100644 index 00000000000..184f8803bdd --- /dev/null +++ b/Master/texmf-dist/source/plain/pdcmac/copying.tex @@ -0,0 +1,373 @@ +\section{GNU General Public License\ifnum\pageno>0 \note{This licence is reproduced + verbatim, therefore the American spelling is used.}\fi} + Version 2, June 1991 + +\noindent + Copyright \copyright~1989, 1991 Free Software Foundation, Inc., + 675~Mass Ave, Cambridge, MA 02139, USA + + Everyone is permitted to copy and distribute verbatim copies of + this license document, but changing it is not allowed. + + +\noindent{\bf Preamble}\quad + The licenses for most software are designed to take away your freedom +to share and change it. By contrast, the GNU General Public License is +intended to guarantee your freedom to share and change free software--to +make sure the software is free for all its users. This General Public +License applies to most of the Free Software Foundation's software and +to any other program whose authors commit to using it. (Some other Free +Software Foundation software is covered by the GNU Library General +Public License instead.) You can apply it to your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it if +you want it, that you can change the software or use pieces of it in new +free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1)~copyright the software, and +(2)~offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + +\bigskip +\noindent{\bf TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND + MODIFICATION\advance\rightskip0pt plus 1em \par} +\medskip + + 1. This License applies to any program or other work which contains a + notice placed by the copyright holder saying it may be distributed + under the terms of this General Public License. The `Program', + below, refers to any such program or work, and a `work based on the + Program' means either the Program or any derivative work under + copyright law: that is to say, a work containing the Program or a + portion of it, either verbatim or with modifications and/or + translated into another language. (Hereinafter, translation is + included without limitation in the term `modification'.) Each + licensee is addressed as `you'. + + Activities other than copying, distribution and modification are + not covered by this License; they are outside its scope. The act + of running the Program is not restricted, and the output from the + Program is covered only if its contents constitute a work based on + the Program (independent of having been made by running the + Program). Whether that is true depends on what the Program does. + + 2. You may copy and distribute verbatim copies of the Program's source + code as you receive it, in any medium, provided that you + conspicuously and appropriately publish on each copy an appropriate + copyright notice and disclaimer of warranty; keep intact all the + notices that refer to this License and to the absence of any + warranty; and give any other recipients of the Program a copy of + this License along with the Program. + + You may charge a fee for the physical act of transferring a copy, + and you may at your option offer warranty protection in exchange + for a fee. + + 3. You may modify your copy or copies of the Program or any portion of + it, thus forming a work based on the Program, and copy and + distribute such modifications or work under the terms of Section 1 + above, provided that you also meet all of these conditions: + +\numbered + \\You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + \\You must cause any work that you distribute or publish, that + in whole or in part contains or is derived from the Program or + any part thereof, to be licensed as a whole at no charge to + all third parties under the terms of this License. + + \\If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display + an announcement including an appropriate copyright notice and + a notice that there is no warranty (or else, saying that you + provide a warranty) and that users may redistribute the + program under these conditions, and telling the user how to + view a copy of this License. (Exception: if the Program + itself is interactive but does not normally print such an + announcement, your work based on the Program is not required + to print an announcement.) +\endnumbered + + These requirements apply to the modified work as a whole. If + identifiable sections of that work are not derived from the + Program, and can be reasonably considered independent and separate + works in themselves, then this License, and its terms, do not apply + to those sections when you distribute them as separate works. But + when you distribute the same sections as part of a whole which is a + work based on the Program, the distribution of the whole must be on + the terms of this License, whose permissions for other licensees + extend to the entire whole, and thus to each and every part + regardless of who wrote it. + + Thus, it is not the intent of this section to claim rights or + contest your rights to work written entirely by you; rather, the + intent is to exercise the right to control the distribution of + derivative or collective works based on the Program. + + In addition, mere aggregation of another work not based on the + Program with the Program (or with a work based on the Program) on a + volume of a storage or distribution medium does not bring the other + work under the scope of this License. + + 4. You may copy and distribute the Program (or a work based on it, + under Section 2) in object code or executable form under the terms + of Sections 1 and 2 above provided that you also do one of the + following: + +\numbered + \\ Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of + Sections 1 and 2 above on a medium customarily used for + software interchange; or, + + \\ Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a + medium customarily used for software interchange; or, + + \\ Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with + such an offer, in accord with Subsection b above.) +\endnumbered + + The source code for a work means the preferred form of the work for + making modifications to it. For an executable work, complete + source code means all the source code for all modules it contains, + plus any associated interface definition files, plus the scripts + used to control compilation and installation of the executable. + However, as a special exception, the source code distributed need + not include anything that is normally distributed (in either source + or binary form) with the major components (compiler, kernel, and so + on) of the operating system on which the executable runs, unless + that component itself accompanies the executable. + + If distribution of executable or object code is made by offering + access to copy from a designated place, then offering equivalent + access to copy the source code from the same place counts as + distribution of the source code, even though third parties are not + compelled to copy the source along with the object code. + + 5. You may not copy, modify, sublicense, or distribute the Program + except as expressly provided under this License. Any attempt + otherwise to copy, modify, sublicense or distribute the Program is + void, and will automatically terminate your rights under this + License. However, parties who have received copies, or rights, + from you under this License will not have their licenses terminated + so long as such parties remain in full compliance. + + 6. You are not required to accept this License, since you have not + signed it. However, nothing else grants you permission to modify + or distribute the Program or its derivative works. These actions + are prohibited by law if you do not accept this License. + Therefore, by modifying or distributing the Program (or any work + based on the Program), you indicate your acceptance of this License + to do so, and all its terms and conditions for copying, + distributing or modifying the Program or works based on it. + + 7. Each time you redistribute the Program (or any work based on the + Program), the recipient automatically receives a license from the + original licensor to copy, distribute or modify the Program subject + to these terms and conditions. You may not impose any further + restrictions on the recipients' exercise of the rights granted + herein. You are not responsible for enforcing compliance by third + parties to this License. + + 8. If, as a consequence of a court judgment or allegation of patent + infringement or for any other reason (not limited to patent + issues), conditions are imposed on you (whether by court order, + agreement or otherwise) that contradict the conditions of this + License, they do not excuse you from the conditions of this + License. If you cannot distribute so as to satisfy simultaneously + your obligations under this License and any other pertinent + obligations, then as a consequence you may not distribute the + Program at all. For example, if a patent license would not permit + royalty-free redistribution of the Program by all those who receive + copies directly or indirectly through you, then the only way you + could satisfy both it and this License would be to refrain entirely + from distribution of the Program. + + If any portion of this section is held invalid or unenforceable + under any particular circumstance, the balance of the section is + intended to apply and the section as a whole is intended to apply + in other circumstances. + + It is not the purpose of this section to induce you to infringe any + patents or other property right claims or to contest validity of + any such claims; this section has the sole purpose of protecting + the integrity of the free software distribution system, which is + implemented by public license practices. Many people have made + generous contributions to the wide range of software distributed + through that system in reliance on consistent application of that + system; it is up to the author/donor to decide if he or she is + willing to distribute software through any other system and a + licensee cannot impose that choice. + + This section is intended to make thoroughly clear what is believed + to be a consequence of the rest of this License. + + 9. If the distribution and/or use of the Program is restricted in + certain countries either by patents or by copyrighted interfaces, + the original copyright holder who places the Program under this + License may add an explicit geographical distribution limitation + excluding those countries, so that distribution is permitted only + in or among countries not thus excluded. In such case, this + License incorporates the limitation as if written in the body of + this License. + + 10. The Free Software Foundation may publish revised and/or new + versions of the General Public License from time to time. Such new + versions will be similar in spirit to the present version, but may + differ in detail to address new problems or concerns. + + Each version is given a distinguishing version number. If the + Program specifies a version number of this License which applies to + it and `any later version', you have the option of following the + terms and conditions either of that version or of any later version + published by the Free Software Foundation. If the Program does not + specify a version number of this License, you may choose any + version ever published by the Free Software Foundation. + + 11. If you wish to incorporate parts of the Program into other free + programs whose distribution conditions are different, write to the + author to ask for permission. For software which is copyrighted by + the Free Software Foundation, write to the Free Software + Foundation; we sometimes make exceptions for this. Our decision + will be guided by the two goals of preserving the free status of + all derivatives of our free software and of promoting the sharing + and reuse of software generally. + +\medbreak\centerline{\bf NO WARRANTY}\nobreak\smallskip\nobreak +\begingroup\tolerance=3000 \advance\rightskip 0pt plus 1em + + 12. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO + WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE + LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS + AND/OR OTHER PARTIES PROVIDE THE PROGRAM `AS IS' WITHOUT WARRANTY + OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND + PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE + DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR + OR CORRECTION. + + 13. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN + WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY + MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE + LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, + INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR + INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF + DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU + OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY + OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN + ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + +\endgroup +\bigskip \centerline{\bf END OF TERMS AND CONDITIONS}\medbreak + +\noindent{\bf How to Apply These Terms to Your New Programs}\quad + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these +terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least the +`copyright' line and a pointer to where the full notice is found. + +\quotation + {\it one line to give the program's name and a brief idea of what it does} + + Copyright (C) 19{\it yy} {\it name of author} +\smallskip + 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. +\smallskip + 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. +\smallskip + 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. +\endquotation + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + +\quotation + Gnomovision version 69, Copyright (C) 19YY NAME OF AUTHOR + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. +\endquotation + +The hypothetical commands `show w' and `show c' should show the +appropriate parts of the General Public License. Of course, the +commands you use may be called something other than `show w' and `show +c'; they could even be mouse-clicks or menu items---whatever suits your +program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a `copyright disclaimer' for the program, if +necessary. Here is a sample; alter the names: + +\quotation + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + SIGNATURE OF TY COON, 1 April 1989 + Ty Coon, President of Vice +\endquotation + +This General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications +with the library. If this is what you want to do, use the GNU Library +General Public License instead of this License. + + +%Local Variables: +%tex-mother-file: "pdcguide.tex" +%End: diff --git a/Master/texmf-dist/source/plain/pdcmac/dtxtags b/Master/texmf-dist/source/plain/pdcmac/dtxtags new file mode 100644 index 00000000000..a54f61760ab --- /dev/null +++ b/Master/texmf-dist/source/plain/pdcmac/dtxtags @@ -0,0 +1,67 @@ +#! /bin/sh + +# dtxtags -- getenerate a TAGS file for the DTX files +version="1.1 Time-stamp: " + +# The grep line produces LINE:BYTE:PATTERN +# the sed converts this to LINE:BYTE:PATTERN:TAG + +tmp=${TMP-/tmp}/mktags$$ +trap 'rm -f $tmp*' 0 + +me=`basename $0` +outfile=TAGS + +touch $tmp +while test $# -gt 0; do + case $1 in + --o*=*) + outfile=`expr $1 : '.*=\(.*\)$'` ;; + -o|--o*) + outfile=$2; shift ;; + -o*) + outfile=`expr $1 : '-.\(.*\)$'` ;; + -h|--h*) + cat <<@EOF +$me: construct an etags-style tags file from DTX files. + +USAGE: + $me [ --output=OUTFILE ] [ INFILE... ] + $me --help | --version +@EOF + exit 0 ;; + -V|--v*) + echo This is $me $version + exit 0 ;; + -*) + echo >&2 $me: $1: not understood, try $me --help + exit 2 ;; + *) + i=$1 + echo >&2 $1: + egrep -nb '^[ ]\|[ ]*\\([a-z]*def|new)' <$1 | + sed ' + s/\([ ]*|\\[a-z]*\\[A-Za-z]*\).*$/\1/ + t finish + s/\([ ]*|\\[a-z]*\\.\).*$/\1/ + t finish + s/\([ ]*|\\[a-z]*[^a-z]\).*$/\1/ + : finish + s/\([0-9]*\):\([0-9]*\):\(.*\)/\3\1,\2/ + ' > $tmp.a + wc $tmp.a + echo ' ' >> $tmp + echo $1,`wc -c <$tmp.a` >>$tmp + cat $tmp.a >> $tmp + ;; + esac + shift + +done + +mv 2>/dev/null $outfile $outfile.bak && +echo >&2 backup written to $outfile.bak + +mv $tmp $outfile + +exit 0 diff --git a/Master/texmf-dist/source/plain/pdcmac/dtxtags.1 b/Master/texmf-dist/source/plain/pdcmac/dtxtags.1 new file mode 100644 index 00000000000..1d37d72bac7 --- /dev/null +++ b/Master/texmf-dist/source/plain/pdcmac/dtxtags.1 @@ -0,0 +1,207 @@ +.TH DTXTAGS 1 "Time-stamp: " "PDCMAC 1.0" "CONTRIBUTED SOFTWARE" +.SH NAME +dtxtags \- generate an Emacs tags (etags) file from DTX files +.SH SYNOPSIS +.na +.B dtxtags +[ +.BI \-\-output= outfile +] [ +.I infile +]\|.\|.\|. +.br +.B dtxtags +.B \-\-help +| +.B \-\-version +.SH DESCRIPTION +.na +This is a shellscript that looks for definitions in +.B dtx +files +(Documented TeX Macros, as used in the +.SM PDCMAC +package), and generates a tags file in +.IR etags (1) +format. The tags file will be called +.SM +.B TAGS +by default. +Any old tags file will be written to +.BR TAGS.bak . +.SH OPTIONS +.TP +.BI \-\-output= outfile, " \-o " outfile +Write tags to +.I outfile +instead of the default. +Any existing file with that name will be renamed +.IB outfile .bak +first. +.TP +.BR \-\-help ", " \-h +Print a summary of options and exit. +.TP +.BR \-\-version ", " \-V +Print version identification and exit. +.SH "INPUT SYNTAX" +This section describes the constructs in the +.B dtx +that will be recognized as tags. You should already be acquainted with +TeX terminology like `control sequence'. +.PP +A +.I keyword +is (1)\ a TeX control sequence +.I containing +.RB ` def ', +such as +.B \edef +or +.B \edefverbatim +or +.BR \emathchardef , +or (2)\ a control sequence +.I starting +with +.RB ` \enew ', +like +.B \enewif +and +.BR \enewcount . +Keywords define the +.I tag +(a control sequence or single character) immediately following. +.PP +Keywords are recognized only if immediately following a +.RB ` | ' +at the start of a line, the code used to introduce macro code in +.B dtx +files. +.PP +There may be whitespace between the start of the line and the +vertical bar, and between the vertical bar and the keyword (this means a +few definitions appearing within definitions are spuriously tagged, but +this should be harmless). +.SH "OUTPUT FORMAT" +This section sumarizes the syntax of the tag file that is generated, +because the documentation for +.IR etags (1) +omits it. Since this syntax description was made by reverse-engineering +.I etags +output, it should not be taken as definitive! +.PP +A tags file is composed of +.I sections +catenated together, +each section made of a +.I header +followed by the +.IR body . +All numbers are expressed in ASCII in decimal notation. +.PP +The header consists of a form feed, a newline, the name of the file the +tags are found in, a comma, and the size in bytes of the body and a +newline. +.PP +The body consists of +.I entries +which may be in +old format or new format. +Old format entries are of the form +.IP "" 4n +.I fragment +.B \e177 +.IB line , +.I byte +.SM NL +.PP +where +.I fragment +is a fragment from the file containing the tag (where the start of the +fragment is at the beginning of a line in the file), +.B \e177 +is a +.SM DEL +character (character 127), +.I line +is the number of the line in which the fragment appears, +.I byte +is the position of the start of the fragment in bytes from the +start of the file, +and +.SM NL +is a newline (character 10). +.PP +New format entries are of the form +.IP "" 4n +.I fragment +.B \e177 +.IB line , +.IB byte , +.B \e001 +.I tag +[ +.B \e001 +.I tag +]\|.\|.\|. +.SM NL +.PP +(two commas) where +.B \e001 +is a +.SM SOH +character (character 1), and +.I tag +is the exact tag (necessary for C++, where the entire tag is not +necessarily found on the definition line). The brackets and ellipsis +indicate that there may be one or more tags in the entry. +.PP +Real tags files may also have references to other tag files, but I don't +use this feature. +.SH ENVIRONMENT +.TP +.SM TMP +Name of directory for temporary files. +Default is +.BR /tmp . +.SH FILES +.TP +.SB TAGS +Default output file name. +.TP +.B /tmp/mktags\(** +Temporary files. +.SH AUTHOR +P. Damian Cugley +.RI ( damian.cugley@comlab.ox.ac.uk ). +.SH "SEE ALSO" +etags(1), emacs(1) +.PP +The file +.B etc/etags.notes +in the Emacs distribution. +.PP +Richard Stallman, +.I Emacs Reference Manual +(or the corresponding Info file). +.PP +P. Damian Cugley, +.I PDCMAC User Guide +(file +.B pdcguide.tex +in the +.SM PDCMAC +distribution), +for information about +.B dtx +files. +.SH BUGS +This is just a shellscript emulating a subset of +.IR etags 's +functionality. +.PP +Despite the name, this program does not work with the +.B dtx +files used in LaTeX 2e distributions, which have a completely different +format (and their own indexing scheme). diff --git a/Master/texmf-dist/source/plain/pdcmac/fig2epsf b/Master/texmf-dist/source/plain/pdcmac/fig2epsf new file mode 100644 index 00000000000..210dd47edb8 --- /dev/null +++ b/Master/texmf-dist/source/plain/pdcmac/fig2epsf @@ -0,0 +1,36 @@ +#! /bin/sh + +# Convert Fig files to conformant EPSF-3.0 files +# Fig's PostScript translation creates EPSF files that cause +# many laser printers to abort in mid-document. +# This script attempts to remedy this. + +version="1.0 Time-stamp: " + +# Usage fig2epsf [ -m MAG ] [ -f FONT ] [ -s FSIZE ] [ + +case $1 in + -V|--version) + echo 'This is fig2epsf $version, using fig2dev from' + fig2dev -V + exit 0 +esac + +fig2dev -Lps $* | sed ' + s/^%!$/%!PS-Adobe-3.0 EPSF-3.0/ + s/^%!PS-Adobe-2.0 EPSF-2.0/%!PS-Adobe-3.0 EPSF-3.0/ + s/%%Pages: 0/%%Pages: 1/ + /\/\$F2psDict/d + /\$F2psDict begin/d + / end/d + /\/\$F2psBegin/d + /\/\$F2psEnd/d + /\$F2psBegin/d + /\/col-1/d + s/col-1//g + s,\$F2psDict /mtrx matrix put,/mtrx matrix def, + s/\$F2psEnd/showpage/ + /%%EndProlog/a\ +\ +%%Page: 1 1 +' diff --git a/Master/texmf-dist/source/plain/pdcmac/fig2epsf.1 b/Master/texmf-dist/source/plain/pdcmac/fig2epsf.1 new file mode 100644 index 00000000000..10985153141 --- /dev/null +++ b/Master/texmf-dist/source/plain/pdcmac/fig2epsf.1 @@ -0,0 +1,46 @@ +.TH FIG2EPSF 1 "Time-stamp: " "PDCMAC 1.0" "CONTRIBUTED SOFTWARE" +.SH NAME +fig2epsf \- convert Fig picture files into Encapsulate PostScript format +.SH SYNOPSIS +.na +.B fig2epsf +[ +.I fig2dev options +] +.I figfile +.B > +.I epsffile +.SH DESCRIPTION +.na +This is a shellscript that uses the +.IR fig2dev (1) +program to convert files in Fig's format +(see +.IR fig (1) +or +.IR xfig (1)) +into Encapsulated PostScript Format compliant with version 3.0 of the +.SM EPSF +guidelines. The +.SM EPSF +file is printed on the standard output stream. +.PP +This shellscript cleans up some of the redundant PostScript code that +.I fig2dev +2.1.4.1 produces, so that the resulting files may be printed on a +tiny-brained LaserWriter, and corrects the header comments so that it +may be previewed with +.IR ghostview (1). +.SH AUTHOR +P. Damian Cugley +.SH "SEE ALSO" +fig2dev(1) +.PP +.I +PostScript Language Reference Manual +Second Edition +(Addison\-Wesley, 1990), +Appendix E. +.SH BUGS +It is possible that later versions of TransFig will produce less buggy +PostScript files, and that these will break this shellscript. diff --git a/Master/texmf-dist/source/plain/pdcmac/ma55doc.tex b/Master/texmf-dist/source/plain/pdcmac/ma55doc.tex new file mode 100644 index 00000000000..c22a178174f --- /dev/null +++ b/Master/texmf-dist/source/plain/pdcmac/ma55doc.tex @@ -0,0 +1,70 @@ +% ma55doc.tex 1.2 1995/03/30 -- macros for short documents +%%%@TeX-definition-file { +%%% filename = "ma55doc.tex", +%%% version = "1.2", +%%% date = "1995/03/30", +%%% 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, style file", +%%% supported = "Maybe", +%%% abstract = "Top-level macro file for documents set in +%%% Malvern 55, 56 and 75 fonts. +%%% This macro file was generated by running plain +%%% TeX on pdcsty.dtx", +%%% copyright = "Copyright (c) 1991-1995 P. Damian Cugley", +%%% copying = "DO NOT DISTRIBUTE THIS FILE. +%%% Distribute pdcsty.dtx only as part of the +%%% package it came in.", +%%% dependencies = "maamac.tex, pdcfmt2.tex, pdcfsel.tex, +%%% pdchyex.tex, pdcimth.tex, pdcmigr.tex, +%%% pdcoput5.tex, pdcdoc.def", +%%%} + +\message{1.2 } + +\input pdcimth +\input pdcmigr +\input pdcfmt2 +\input pdchyex +\input pdcoput5 +\input pdcfsel +\input maamac +\def\footnotetextmark#1{{\rmsy#1}} +\def\footnotenotemark#1{{\rmsy#1}} +\autoloadfonts +\def\STYheadingT{% + \m{rm}{ma75a}\@\m{mi}{cmmi10}\@\m{sy}{cmsy10}% + \f{it}{ma76a}\@\f{tt}{cmtt10}\@\f{mf}{logo10}\@\f{mfi}{logosl10}% +} +\fontset{subheading}\STYheadingT{12}{14pt}{subheading}{subheading} +\fontset{heading}\STYheadingT{18}{20pt}{subheading}{subheading} +\newfam\rmsyfam +\def\STYbodyT{% + \m{rm}{ma55a}\f{rmsy}{ma55b}\m{it}{ma56a}% + \m{bf}{ma75a}\f{bi}{ma76a}% + \m{mi}{cmmi}\m{sy}{cmsy}% + \@\f{mf}{logo10}\@\f{mfi}{logosl10}% + \f{tt}{cmtt}\f{tb}{cmsltt}% +} +\font\bodymi=cmmi10 scaled \magstep2 +\font\bodysy=cmsy10 scaled \magstep2 +\font\notemi=cmmi10 scaled \magstep1 +\font\notesy=cmsy10 scaled \magstep1 +\font\smallmi=cmmi10 scaled \magstephalf +\font\smallsy=cmsy10 scaled \magstephalf +\fontset{tiny}\STYbodyT{7}{9pt}{tiny}{tiny} +\fontset{small}\STYbodyT{9}{11pt}{tiny}{tiny} +\fontset{note}\STYbodyT{10}{12pt}{tiny}{tiny} +\fontset{body}\STYbodyT{12}{14pt}{small}{tiny} +\def\everyloadfont#1#2{\fontdimen3#1=0pt \fontdimen4#1=0pt} +\rightskip=0pt plus 2em \tolerance=1000 +\bodyfonts +{\tt \hyphenchar\font=-1 } +\def\PS{\csc{PostScript}} +\def\La{L\negthinspace\flushtop{\char"C1 }} +\input pdcdoc.def +\inputifexists{ma55doc.cfg} diff --git a/Master/texmf-dist/source/plain/pdcmac/ma55lft.tex b/Master/texmf-dist/source/plain/pdcmac/ma55lft.tex new file mode 100644 index 00000000000..0b72a6e99a4 --- /dev/null +++ b/Master/texmf-dist/source/plain/pdcmac/ma55lft.tex @@ -0,0 +1,70 @@ +% ma55lft.tex 1.2 1995/03/30 -- macros for short documents +%%%@TeX-definition-file { +%%% filename = "ma55lft.tex", +%%% version = "1.2", +%%% date = "1995/03/30", +%%% 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, style file", +%%% supported = "Maybe", +%%% abstract = "Top-level macro file for documents set in +%%% Malvern 55, 56 and 75 fonts. +%%% This macro file was generated by running plain +%%% TeX on pdcsty.dtx", +%%% copyright = "Copyright (c) 1991-1995 P. Damian Cugley", +%%% copying = "DO NOT DISTRIBUTE THIS FILE. +%%% Distribute pdcsty.dtx only as part of the +%%% package it came in.", +%%% dependencies = "maamac.tex, pdcfmt2.tex, pdcfsel.tex, +%%% pdchyex.tex, pdcimth.tex, pdcmigr.tex, +%%% pdcoput5.tex, pdclft.def", +%%%} + +\message{1.2 } + +\input pdcimth +\input pdcmigr +\input pdcfmt2 +\input pdchyex +\input pdcoput5 +\input pdcfsel +\input maamac +\def\footnotetextmark#1{{\rmsy#1}} +\def\footnotenotemark#1{{\rmsy#1}} +\autoloadfonts +\def\STYheadingT{% + \m{rm}{ma75a}\@\m{mi}{cmmi10}\@\m{sy}{cmsy10}% + \f{it}{ma76a}\@\f{tt}{cmtt10}\@\f{mf}{logo10}\@\f{mfi}{logosl10}% +} +\fontset{subheading}\STYheadingT{12}{14pt}{subheading}{subheading} +\fontset{heading}\STYheadingT{18}{20pt}{subheading}{subheading} +\newfam\rmsyfam +\def\STYbodyT{% + \m{rm}{ma55a}\f{rmsy}{ma55b}\m{it}{ma56a}% + \m{bf}{ma75a}\f{bi}{ma76a}% + \m{mi}{cmmi}\m{sy}{cmsy}% + \@\f{mf}{logo10}\@\f{mfi}{logosl10}% + \f{tt}{cmtt}\f{tb}{cmsltt}% +} +\font\bodymi=cmmi10 scaled \magstep2 +\font\bodysy=cmsy10 scaled \magstep2 +\font\notemi=cmmi10 scaled \magstep1 +\font\notesy=cmsy10 scaled \magstep1 +\font\smallmi=cmmi10 scaled \magstephalf +\font\smallsy=cmsy10 scaled \magstephalf +\fontset{tiny}\STYbodyT{7}{9pt}{tiny}{tiny} +\fontset{small}\STYbodyT{9}{11pt}{tiny}{tiny} +\fontset{note}\STYbodyT{10}{12pt}{tiny}{tiny} +\fontset{body}\STYbodyT{12}{14pt}{small}{tiny} +\def\everyloadfont#1#2{\fontdimen3#1=0pt \fontdimen4#1=0pt} +\rightskip=0pt plus 2em \tolerance=1000 +\bodyfonts +{\tt \hyphenchar\font=-1 } +\def\PS{\csc{PostScript}} +\def\La{L\negthinspace\flushtop{\char"C1 }} +\input pdclft.def +\inputifexists{ma55lft.cfg} diff --git a/Master/texmf-dist/source/plain/pdcmac/maamac.dtx b/Master/texmf-dist/source/plain/pdcmac/maamac.dtx new file mode 100644 index 00000000000..a4398caa417 --- /dev/null +++ b/Master/texmf-dist/source/plain/pdcmac/maamac.dtx @@ -0,0 +1,627 @@ +% maamac.dtx -- documentation & source for maamac.tex -*-tex-*- + +%%%@TeX-document-file { +%%% title = "MAAMAC -- Malvern A Macros", +%%% filename = "$texmf/doc/plain/pdcmac/maamac.dtx", +%%% version = "$Revision: 1.5 $", +%%% package = "pdcmac 1.0", +%%% date = "$Date: 1995/04/06 13:33:44 $", +%%% 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 file maamac.tex. +%%% Running plain TeX on this file produces both the +%%% definitions file 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" +%%%} + +%{{{ maamac +%{{{ preamble + +\relax +\input pdccode + +\document +\rcs$Id: maamac.dtx,v 1.5 1995/04/06 13:33:44 pdc Exp $\endrcs + +\newcount\chcda \newcount\chcdc \newcount\chcdn +\def\changecodes#1#2#3#4{% + \chcda#2\relax \chcdc#3\relax \chcdn#4\relax + \loop \ifnum\chcdn>0 + #1\chcda\chcdc + \advance\chcda1 \advance\chcdc1 \advance\chcdn-1 + \repeat +} +\changecodes\mathcode{`a}{"7461}{26} + +\codefile{maamac.tex} +%}}} preamble +%{{{ introduction + +\author{P. Damian Cugley} +\title{MAAMAC---Malvern A Macros} +\advance\seccount-1 +\section{Introduction} + + This document describes |maamac.tex|, a collection of formatting + macros for plain \TeX\ documents using fonts with the Malvern~A + encoding. For example, it defines commands for making composite + letters and special symbols. + +\subsec{About this document} + + The definitions file and this printed documentation are both in + |maamac.dtx|, a `documented \TeX\ macros' file\footnote*{The + \LaTeX~2e distribution uses files with the `|dtx|' suffix for + similar purposes.} which, when processed by plain \TeX, + generates a fresh copy of |maamac.tex| in the current directory + in addition to the |dvi| file. This ensures that the printed + documentation and the code it describes are identical. The + |dtx| file uses the macros in |pdccode.tex|. + +\subsec{What is in MAAMAC?} + + The definitions in |maamac.tex| fall into three sections: +\smallskip +\item{\S1} Building {\it composite letters} like `\'e' from {\it + marks} like `\'{}' and {\it base letters} like `e'. This gives + new definitions for commands like |\'| and |\"|. +\item{\S2} Symbols and special letters: replacements for existing + commands like |\P| (\P) and |\ae| (\ae), and new commands like + |\registered| and |\pounds|. +\item{\S3} Switching between alphabets. The Malvern~A encoding includes + separate small capital and medium capital alphabets in addition + to the usual capitals and lower case. This section defines + commands for transliterating a list of tokens from one alphabet + to another. + +\smallskip\noindent + The first two sections make changes to commands described in + {\it\TeX book} Chapter~9 (and a few maths symbols from + Chapter~16) and defined in Appendix~B. + +%}}} introduction +%{{{ File identification +\subsec{File identification} + + Nowadays, macro files start with some comments identifying the + file. + +\code + \|\% maamac.tex \fileversion~\filedate~-- Malvern A Macros + | + |%%%@TeX-definition-file { + |%%% filename = "$texmf/tex/plain/pdcmac/maamac.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 using the Malvern-A font coding + |%%% scheme in plain TeX documents. + |%%% This file was generated by running + \|\%\%\%~~~~~~~~~~~~~~~~~~~plain TeX on \jobname.dtx", + |%%% copyright = "Copyright (c) 1991-1995 P. Damian Cugley", + |%%% copying = "DO NOT DISTRIBUTE THIS FILE. + \|\%\%\%~~~~~~~~~~~~~~~~~~~Distribute \jobname.dtx only as part of the + |%%% package it came in.", + |%%% dependencies = "", + |%%% } + | + \|\\message\{\fileversion~\} + | +\endcode + +%}}} +%{{{ building composite letters +\section{Building composite letters} + + THis section redefines commands listed at the start of Chapter~9 + of the {\it\TeX book}: |\'|, |\"|, etc. The main difference is + that these now use `medium capitals' and differently-drawn marks + to make composite capital letters. + + I~also define \ called |\acuteglyph|, + |\twodotsglyph| which may be used to print these marks in a + document: `the acute mark ``\'{}''\dots' might be typeset with + `|the acute mark ``\acuteglyph''|\dots'. Also, if you don't + like the way my macros look, you can say `|\accent\acuteglyph + E|' rather than having to look up its glyph number. + +%{{{ utility macros + +\subsec{Utility macros} + + First some nicknames for scratch registers. +\code + |\dimendef\dimena0 \dimendef\dimenb2 + |\toksdef\toksa0 + |\countdef\counta255 + |\ifx\countb\UNDEFINED \csname newcount\endcsname\countb \fi + |\ifx\countc\UNDEFINED \csname newcount\endcsname\countc \fi +\endcode + + A macro to find the code in \TeX's internal encoding for a + character. The character might be represented by (1)~a + character with category code~11 or~12, (2)~a token defined with + |\chardef|, or (3)~the token |\char| followed by a \. +\code + |\def\code#1{% + | \ifcat#1a% + | `#1 + | \else\ifcat#1+% + | `#1 + | \else\ifx\char#1 +\endcode +\hbox{\hskip6\fontdimen6\tentt + \% If the first token is |\char| the rest is the + \ we want.} +\code + | \else + | #1% + | \fi\fi\fi + |} +\endcode + + So as to make conditional macros that can be skipped over if + they appear nested inside another conditional, we make include + the token |\then| amongst the arguments, making this the `if-' + token to match the |\else| and |\fi| following it. This way we + write, for example +$$\hbox{|\ifcap|\ |\then| \ + |\else| \ |\fi|}$$ +\code + |\let\then=\iffalse +\smallbreak + |\def\ifcap#1\then{\expandafter\ifcapnum\code{#1}\then} + |\def\ifcapnum#1\then{\ifnum\lccode#1=#1} +\smallbreak + |\def\iflower#1\then{\expandafter\iflowernum\code{#1}\then} + |\def\iflowernum#1\then{\ifnum\uccode#1=#1} +\endcode + + A macro to extract the slant-per-point parameter of a font in + toe form of a \TeX\ \. +\code + |\def\fontslant#1{\expandafter\stripPT\the\fontdimen1#1} +\smallbreak + |\begingroup \uccode`2=`p \uccode`3=`t \uppercase{\toksa{\endgroup + | \def\\#123{#1} + |}} \the\toksa + |\let\stripPT=\\ +\endcode +%}}} utility macros +%{{{ macros for placing marks + +\subsec{Macros for placing marks} + + This simple macro places the text |#3| at displaced + $(\hbox{|#1|},\hbox{|#2|})$ from current position: +\code + |\def\putxy#1#2#3{\leavevmode\rlap{\hskip#1\raise#2\hbox{#3}}} +\endcode + + Now we have a generic mark-placement macro. It is similar to + the |\accent| primitive, but takes two extra parameters: +$$ + \hbox{|\putmarkxy|\arg{$xf$}\arg{$dy$}\arg{$mark$}\arg{$base$}} +$$ + The horizontal position $xf$ of the optical centre of the base + letter (ignoring slant) is expressed as a \ (i.e., + decimal fraction of the width of the base glyph). The vertical + displacement $dy$ is expressed as a fragment of \TeX\ code that + will calculate $dy$. The code is expanded after setting box~0 + to contain the base glyph, and must put the result in |\dimena|. + For example, we could define +$$ + \hbox{|\def\fakeaccent{\putmarkxy{0.5}{\dimena\ht0 + \advance\dimena-1ex }}|} +$$ + This produces an approximation to the primitive |\accent| + command. + + Given the $x$-factor $xf$, a base glyph with width $wd$, a font + with slant $s$, the horizontal displacement $dx$ is given by +$$ + dx = xf \times wd + s \times dy\quad. +$$ + In this macro it is stored in |\dimenb|. +\code + |\def\putmarkxy#1#2#3#4{{% + | \setbox0=\hbox{#4}#2\relax + | \dimenb#1\wd0 \advance\dimenb\fontslant\font\dimena + | \leavevmode + | \putxy{\dimenb}{\dimena}{\hbox to 0pt{\hss\char#3\hss}}% + | \box0 + |}} +\smallbreak + |\def\putmarky{\putmarkxy{0.5}} +\endcode +%}}} macros for placing marks +%{{{ type I marks + +\subsec{Type~I Marks} + + A Type~I mark is one which does not have any scope for being + `squashed' to go over capital letters---for example, the + two-dots mark `\"{}' and macron `\={}'. + + Here's a macro for placing a Type~I mark given by |#1| (a + \) over base glyph |#2| (which is anything that |\code| + understands). The difference between this macro and simply + using |\accent| is (1)~if presented with a capital letter it + will use the corresponding medium capital letter and (2)~the the + mark is raised by an amount intended to centre it vertically + between the top of the base letter and the top of the + body-height---assuming it was original centered between + body-height and $x$-height. + + If $H$ is the body height, $h$ the height of the base glyph, +$$ \mathcode`/="202F + \eqalign{dy &= { H + h \over 2 } - { H + 1\,{\rm + ex} \over 2}\cr + &= \textstyle { 1\over2}h - {1\over2}\,{\rm ex}\cr} +$$ +\code + |\def\typeImark#1#2{{% + | \setbox2=\hbox{#2}% + | \ifdim \ht2=1ex + | \accent#1\relax#2% + | \else + | \counta\code{#2}% + | \ifnum\counta>64 \ifnum\counta<96 + | \advance\counta 128 + | \fi \fi + | \putmarky{\dimena0.5\ht0 \advance\dimena-0.5ex } + | {#1}{\char\counta}% + | \fi + |}} +\endcode + + Finally we define the composite-letter-building commands. +\code + |\chardef\dotglyph22 \def\.{\typeImark\dotglyph} + |\chardef\twodotsglyph23 \def\"{\typeImark\twodotsglyph} + |\chardef\macronglyph150 \def\={\typeImark\macronglyph} + |\chardef\longmacronglyph151 + | \def\longmacronmark{\typeImark\longmacronglyph} +\endcode +%}}} type I marks +%{{{ type II marks + +\subsec{Type~II Marks} + + These marks have an alternative glyph for use of capital and + medium capital letters. As with |\typeImark|, |#1| is a + \ and |#2| is anything understood by |\code|. +\code + |\def\typeIImark#1#2{{% + | \counta#1\relax \countb\code{#2}% + | \ifcap{#2}\then + | \ifnum \counta<128 \advance\counta 128 \fi + | \ifnum \countb<128 \advance\countb 128 \fi + | \fi + | \accent\counta \char\countb + |}} +\smallbreak + |\chardef\acuteglyph8 \def\'{\typeIImark\acuteglyph} + |\chardef\graveglyph9 \def\`{\typeIImark\graveglyph} + |\chardef\circumglyph10 \def\^{\typeIImark\circumglyph} + |\chardef\tildeglyph11 \def\~{\typeIImark\tildeglyph} + |\chardef\ringglyph12 \def\ringmark{\typeIImark\ringglyph} + |\chardef\caronglyph13 \def\v{\typeIImark\caronglyph} + |\chardef\breveglyph14 \def\u{\typeIImark\breveglyph} + |\chardef\hungarglyph15 \def\H{\typeIImark\hungarglyph} +\endcode + I have abbreviated `circumflex' as `circum' (consistent with + Adobe's `|asciicircum|'). I~have called the hook `\v{}' + `|caron|' because that is its name as used by ISO and Adobe. + I~have called the long Hungarian umlaut `\H{}' `|hungar|' for + want of a better name (it's shorter than |hungarumlaut|).. +%}}} type II marks +%{{{ cedilla ogonek + +\subsec{Cedilla and ogonek} + + The cedilla and ogonek each have a variant intended for capital + letters (in this case the variant is larger not smaller). +\code + |\def\cedillalike#1#2#3{{% + | \setbox0=\hbox{#3}% + | \ifdim\ht0>1ex + | \ooalign{\hidewidth\char#2\relax\hidewidth\crcr\unhbox0 }% + | \else + | \accent#1 #3% + | \fi + |}} +\smallbreak + |\chardef\cedillaglyph6 \chardef\Cedillaglyph134 + |\def\c{\cedillalike\cedillaglyph\Cedillaglyph} +\smallbreak + |\chardef\ogonekglyph7 \chardef\Ogonekglyph135 + |\def\k{\cedillalike\ogonekglyph\Ogonekglyph} +\endcode +%}}} cedilla ogonek +%}}} +%{{{ symbols +\section{Symbols and special letters} +%{{{ special letters + +\subsec{Special letters} + + The letters defined here that are not included in Chapter~9 of + the {\it\TeX book} are the Icelandic thorn (|\TH|, |\th|) and + eth\footnote*{Also called `edh'.} (|\DH|, |\dh|), the Polish + {\it a} and {\it e} with ogonek (|\A|, |\a|, |\E|, |\e|), and + the Sami eng\footnote\dag{Also called `ing' or `ng'.} (|\NG|, + |\ng|). + + We also give replacements for {\it d}, {\it t} and {\it l} with + hook (which are usually drawn with a apostrophe-like mark), and + the Esperanto letter {\it hho} (\^h). +\code + |\chardef\TH"00 \chardef\th"10 \chardef\DH"04 \chardef\dh"14 + |\chardef\A "01 \chardef\a "11 \chardef\E "05 \chardef\e "15 + |\chardef\NG"02 \chardef\ng"12 \chardef\L "03 \chardef\l "13 + |\chardef\AE"5E \chardef\ae"7E \chardef\OE"5F \chardef\oe"7F + |\chardef\O "5C \chardef\o "7C +\smallbreak + |\chardef\vd"9C \chardef\vt"9D \chardef\h "9E \chardef\vl"9F + |\chardef\ss"18 \chardef\i "19 \chardef\j "1A +\smallbreak + |\def\aa{\ringmark a} \def\AA{\ringmark A} +\endcode + +\code +\smallbreak + |\chardef\orda"98 \chardef\ordo"99 \def\No{N\ordo} \def\no{n\ordo} + |\chardef\csuperior"98 \def\Mc{M\csuperior} +\endcode + The command |\Mc| is used for forming names like + M\flushtop{\the\scriptfont\fam \b c}Donald. +%}}} special letters +%{{{ text syms + +\subsec{Other symbols used in text} + + There are several new symbols here. Note that |\trademark| is + what you will get if you use the ASCII double quote character + `|"|' in your manuscript. +\code + |\chardef\trademark "22 + |\chardef\copyright "FB \chardef\registered"FD + |\chardef\careof "9A \chardef\Box "A0 + |\chardef\cents "A2 \chardef\pounds "A3 + |\chardef\currency "A4 \chardef\permille "A5 + |\chardef\yen "A8 \chardef\florin "A9 + |\chardef\dag "AA \chardef\ddag "AB + |\chardef\gbdecimal "AE \chardef\minus "AF + |\chardef\S "BA \chardef\P "BB + |\chardef\degrees "C0 + |\chardef\lguillemet"BC \chardef\rguillemet"BE +\endcode + The |\careof| sign ($\rm ^c\!/\!_o$) is an abbreviation for + `care of' in English-language addresses (actually, Australians + traditionally write `$\rm ^c\!/\!_-$'). The raised dot + |\gbdecimal| is the British decimal point (I~usually do + |\mathcode`.=\gbdecimal| and let maths mode do all the work). + The |\degrees| sign replaces \TeX's |$^\circ$|. + + The guillemets can also be obtained with the ligatures |<<| and + |>>|. + + +%}}} text syms +%{{{ maths syms + +\subsec{Symbols used in maths} + + I have stuck with the plain \TeX\ conventions as much as + possible---even though |\bullet| is more often used in text than + maths. +\code + |\mathcode`\,"602C \mathcode`\-"20AF + |\mathcode`\."002E \mathcode`\/"002F +\smallbreak + |\mathchardef\bullet "2020 \mathchardef\times "20A6 + |\mathchardef\backslash"005B \mathchardef\setminus "205B + |\mathchardef\cdot "20AE \mathchardef\cdotp "60AE +\smallbreak + |\def\langle{\delimiter"40DB30A } \delcode`\<"0DB30A + |\def\rangle{\delimiter"50DD30B } \delcode`\>"0DD30B + |\def\lbrace{\delimiter"407B308 } \let\{\lbrace \mathcode`\{"407B + |\def\rbrace{\delimiter"507D309 } \let\}\rbrace \mathcode`\}"407D +\endcode + +%}}} maths syms +%}}} symbols +%{{{ switching alphabets +\section{Switching between alphabets} + + This is one of the strange ideas that went into the design of + the Malvern font---I wanted to have small capitals and medium + capitals treated as separate alphabets rather than as a + different style, just as I treat old-style and ranging numerals + as separate symbols. These extra alphabets are present in all + Malvern~A encodings\footnote*{Fonts with the Malvern~A encoding + but made from normal PostScript fonts will have medium capitals + replaced with full capitals, and old-style numerals replaced + with ranging numerals.} + + These extra alphabets are obtained by transliterating a sequence + of letters using the |\uppercase| and |\lowercase| + commands.\footnote\dag{Alas! this task would be so much easier + and more efficient if it were possible to declare new + alphabet-switching tables styled after the |\uccode| and + |\lccode| tables which make |\uppercase| and |\lowercase| work. + Then all this nonsense could happen in \TeX's mouth, which has + some advantages. I~can imagine commands |\newchartable| (used + to create a token which can be used in the same way as + |\uccode|) and |\usechartable| (used to defined macros that work + like |\uppercase|). E\TeX\ hackers take note!} For example, to + transliterate capitals into small capitals (the |\sc| command), + we first make assignments so that, for example, |\lccode`a| is + set to the code for small-capital $\scriptstyle A$, then apply + |\lowercase| to the token list. + +\subsec{Setting upper and lower case codes for special letters} + + These entries in the |\uucode| and |\lccode| tables are used by + the composite-letter-building commands rather then the + alphabet-switchign commands, but they are included here to be + near the other code-hackery. + +\code + |\uccode\th\TH \lccode\TH\th \uccode\TH\TH \lccode\th\th + |\uccode\a \A \lccode\A \a \uccode\A \A \lccode\a \a + |\uccode\ng\NG \lccode\NG\ng \uccode\NG\NG \lccode\ng\ng + |\uccode\l \L \lccode\L \l \uccode\L \L \lccode\l \l + |\uccode\dh\DH \lccode\DH\dh \uccode\DH\DH \lccode\dh\dh + |\uccode\e \E \lccode\E \e \uccode\E \E \lccode\e \e + |\uccode\o \O \lccode\O \o \uccode\O \O \lccode\o \o + |\uccode\ae\AE \lccode\AE\ae \uccode\AE\AE \lccode\ae\ae + |\uccode\oe\OE \lccode\OE\oe \uccode\OE\OE \lccode\oe\oe +\smallbreak + |\uccode\i`I \uccode\j`J \lccode\i\i \lccode\j\j + |\uccode\csuperior`C +\endcode + + +\subsec{A macro for changing character codes} + + The |\changecodes| command is used to change those segments of + character tables that are contiguous and map onto a contiguous + segment in the range. It is invoked as +$$ + \hbox{\it |\changecodes| command x y n} +$$ + (where $\it command$ is a token like |\uccode| or |\mathcode| + and $x$, $y$, and $n$ are \s), and does the equivalent + of +$$ + {\it command}\;i\mathrel{\hbox{\tt=}} + j\qquad \hbox{for all $\cases{x \le i < x + n\cr + y \le j < y + n\cr}$} +$$ + +\code + |\def\changecodes#1#2#3#4{% + | \counta#2\relax \countb#3\relax \countc#4\relax + | \loop + | \ifnum\countc>0 + | #1\counta\countb + | \advance\counta 1 + | \advance\countb 1 + | \advance\countc-1 + | \repeat + |} +\endcode + + We can use this immediately to arrange that lowercasing medium caps + makes lower case, and uppercasing small caps makes full caps: +\code + |\changecodes\uccode{"E1}{`A}{26} + |\changecodes\uccode{"C1}{"C1}{26} + |\changecodes\lccode{"E1}{"E1}{26} + |\changecodes\lccode{"C1}{`a}{26} +\endcode + + We also make old-style numerals behave as lower case for ranging + numerals, and also arrange that maths mode uses ranging figures. +\code + |\changecodes\lccode{"B0}{`0}{10} + |\changecodes\uccode{`0}{"B0}{10} +\endcode + + In maths mode (1)~we use text italic for letters, since CM MAth + Italic will not match the body text and (2)~we use ranging + figures. +\code + |\changecodes\mathcode{`a}{"7461}{26} + |\changecodes\mathcode{`A}{"7441}{26} + |\changecodes\mathcode{`0}{"70B0}{10} +\endcode + +\subsec{Changing the alphabet for special letters got with commands} + + When applying |\uppercase| or |\lowercase| to a token list, + macros will be unaffected (|\ae| will still generate `ae'). To + get around this we define macros that redefine these control + sequences. They each take as parameters hex digits used to make + character codes. +\code + |\def\capspecials#1#2{% + | \chardef\TH"#10 \chardef\A "#11 \chardef\NG"#12 + | \chardef\L "#13 \chardef\DH"#14 \chardef\E "#15 + | \chardef\O "#2C \chardef\AE"#2E \chardef\OE"#2F + |} +\smallbreak + |\def\lcspecials#1#2#3{% + | \chardef\th"#10 \chardef\a "#11 \chardef\ng"#12 + | \chardef\l "#13 \chardef\dh"#14 \chardef\e "#15 + | \chardef\o "#2C \chardef\ae"#2E \chardef\oe"#2F + | \def\ss{\char"#23 \char"#23 }\chardef\i"#39 \chardef\j"#3A + |} +\endcode +\subsec{Pulling it all together} + Now we can define the user macros that do the work. These take + one argument, a piece of text to transliterate: |\sc{OX1~3QD}| + produces a small-capital `${\rm\scriptstyle OX}{\mit 1\ + 3}{\rm\scriptstyle QD}$'; + |\csc{ABCdef}| produces caps and small caps + `ABC{\the\scriptfont0 DEF}'. +\code + |\def\sc#1{{% + | \changecodes\lccode{`A}{"E1}{26}\capspecials9F\lowercase{#1}% + |}} +\smallbreak + |\def\mc#1{{% + | \changecodes\lccode{`A}{"C1}{26}\capspecials8D\lowercase{#1}% + |}} +\smallbreak + |\def\csc#1{{% + | \changecodes\uccode{`a}{"E1}{26}\lcspecials9FE\uppercase{#1}% + |}} +\smallbreak + |\def\allcaps#1{{% + | \lcspecials054\uppercase{#1}% + |}} +\smallbreak + |\def\alllc#1{{% + | \capspecials17\lowercase{#1}% + |}} +\endcode +%}}} switching alphabets +\endcodefile +\enddocument +\bye +%}}} maamac + + +% Local variables: +% fold-folded-p: t +% fill-prefix: "\t" +% End: diff --git a/Master/texmf-dist/source/plain/pdcmac/maamac.tex b/Master/texmf-dist/source/plain/pdcmac/maamac.tex new file mode 100644 index 00000000000..c3c2835eb10 --- /dev/null +++ b/Master/texmf-dist/source/plain/pdcmac/maamac.tex @@ -0,0 +1,193 @@ +% maamac.tex 1.5 1995/04/06 -- Malvern A Macros + +%%%@TeX-definition-file { +%%% filename = "$texmf/tex/plain/pdcmac/maamac.tex", +%%% version = "1.5", +%%% date = "1995/04/06", +%%% 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 using the Malvern-A font coding +%%% scheme in plain TeX documents. +%%% This file was generated by running +%%% plain TeX on maamac.dtx", +%%% copyright = "Copyright (c) 1991-1995 P. Damian Cugley", +%%% copying = "DO NOT DISTRIBUTE THIS FILE. +%%% Distribute maamac.dtx only as part of the +%%% package it came in.", +%%% dependencies = "", +%%% } + +\message{1.5 } + +\dimendef\dimena0 \dimendef\dimenb2 +\toksdef\toksa0 +\countdef\counta255 +\ifx\countb\UNDEFINED \csname newcount\endcsname\countb \fi +\ifx\countc\UNDEFINED \csname newcount\endcsname\countc \fi +\def\code#1{% + \ifcat#1a% + `#1 + \else\ifcat#1+% + `#1 + \else\ifx\char#1 + \else + #1% + \fi\fi\fi +} +\let\then=\iffalse +\def\ifcap#1\then{\expandafter\ifcapnum\code{#1}\then} +\def\ifcapnum#1\then{\ifnum\lccode#1=#1} +\def\iflower#1\then{\expandafter\iflowernum\code{#1}\then} +\def\iflowernum#1\then{\ifnum\uccode#1=#1} +\def\fontslant#1{\expandafter\stripPT\the\fontdimen1#1} +\begingroup \uccode`2=`p \uccode`3=`t \uppercase{\toksa{\endgroup + \def\\#123{#1} +}} \the\toksa +\let\stripPT=\\ +\def\putxy#1#2#3{\leavevmode\rlap{\hskip#1\raise#2\hbox{#3}}} +\def\putmarkxy#1#2#3#4{{% + \setbox0=\hbox{#4}#2\relax + \dimenb#1\wd0 \advance\dimenb\fontslant\font\dimena + \leavevmode + \putxy{\dimenb}{\dimena}{\hbox to 0pt{\hss\char#3\hss}}% + \box0 +}} +\def\putmarky{\putmarkxy{0.5}} +\def\typeImark#1#2{{% + \setbox2=\hbox{#2}% + \ifdim \ht2=1ex + \accent#1\relax#2% + \else + \counta\code{#2}% + \ifnum\counta>64 \ifnum\counta<96 + \advance\counta 128 + \fi \fi + \putmarky{\dimena0.5\ht0 \advance\dimena-0.5ex } + {#1}{\char\counta}% + \fi +}} +\chardef\dotglyph22 \def\.{\typeImark\dotglyph} +\chardef\twodotsglyph23 \def\"{\typeImark\twodotsglyph} +\chardef\macronglyph150 \def\={\typeImark\macronglyph} +\chardef\longmacronglyph151 + \def\longmacronmark{\typeImark\longmacronglyph} +\def\typeIImark#1#2{{% + \counta#1\relax \countb\code{#2}% + \ifcap{#2}\then + \ifnum \counta<128 \advance\counta 128 \fi + \ifnum \countb<128 \advance\countb 128 \fi + \fi + \accent\counta \char\countb +}} +\chardef\acuteglyph8 \def\'{\typeIImark\acuteglyph} +\chardef\graveglyph9 \def\`{\typeIImark\graveglyph} +\chardef\circumglyph10 \def\^{\typeIImark\circumglyph} +\chardef\tildeglyph11 \def\~{\typeIImark\tildeglyph} +\chardef\ringglyph12 \def\ringmark{\typeIImark\ringglyph} +\chardef\caronglyph13 \def\v{\typeIImark\caronglyph} +\chardef\breveglyph14 \def\u{\typeIImark\breveglyph} +\chardef\hungarglyph15 \def\H{\typeIImark\hungarglyph} +\def\cedillalike#1#2#3{{% + \setbox0=\hbox{#3}% + \ifdim\ht0>1ex + \ooalign{\hidewidth\char#2\relax\hidewidth\crcr\unhbox0 }% + \else + \accent#1 #3% + \fi +}} +\chardef\cedillaglyph6 \chardef\Cedillaglyph134 +\def\c{\cedillalike\cedillaglyph\Cedillaglyph} +\chardef\ogonekglyph7 \chardef\Ogonekglyph135 +\def\k{\cedillalike\ogonekglyph\Ogonekglyph} +\chardef\TH"00 \chardef\th"10 \chardef\DH"04 \chardef\dh"14 +\chardef\A "01 \chardef\a "11 \chardef\E "05 \chardef\e "15 +\chardef\NG"02 \chardef\ng"12 \chardef\L "03 \chardef\l "13 +\chardef\AE"5E \chardef\ae"7E \chardef\OE"5F \chardef\oe"7F +\chardef\O "5C \chardef\o "7C +\chardef\vd"9C \chardef\vt"9D \chardef\h "9E \chardef\vl"9F +\chardef\ss"18 \chardef\i "19 \chardef\j "1A +\def\aa{\ringmark a} \def\AA{\ringmark A} +\chardef\orda"98 \chardef\ordo"99 \def\No{N\ordo} \def\no{n\ordo} +\chardef\csuperior"98 \def\Mc{M\csuperior} +\chardef\trademark "22 +\chardef\copyright "FB \chardef\registered"FD +\chardef\careof "9A \chardef\Box "A0 +\chardef\cents "A2 \chardef\pounds "A3 +\chardef\currency "A4 \chardef\permille "A5 +\chardef\yen "A8 \chardef\florin "A9 +\chardef\dag "AA \chardef\ddag "AB +\chardef\gbdecimal "AE \chardef\minus "AF +\chardef\S "BA \chardef\P "BB +\chardef\degrees "C0 +\chardef\lguillemet"BC \chardef\rguillemet"BE +\mathcode`\,"602C \mathcode`\-"20AF +\mathcode`\."002E \mathcode`\/"002F +\mathchardef\bullet "2020 \mathchardef\times "20A6 +\mathchardef\backslash"005B \mathchardef\setminus "205B +\mathchardef\cdot "20AE \mathchardef\cdotp "60AE +\def\langle{\delimiter"40DB30A } \delcode`\<"0DB30A +\def\rangle{\delimiter"50DD30B } \delcode`\>"0DD30B +\def\lbrace{\delimiter"407B308 } \let\{\lbrace \mathcode`\{"407B +\def\rbrace{\delimiter"507D309 } \let\}\rbrace \mathcode`\}"407D +\uccode\th\TH \lccode\TH\th \uccode\TH\TH \lccode\th\th +\uccode\a \A \lccode\A \a \uccode\A \A \lccode\a \a +\uccode\ng\NG \lccode\NG\ng \uccode\NG\NG \lccode\ng\ng +\uccode\l \L \lccode\L \l \uccode\L \L \lccode\l \l +\uccode\dh\DH \lccode\DH\dh \uccode\DH\DH \lccode\dh\dh +\uccode\e \E \lccode\E \e \uccode\E \E \lccode\e \e +\uccode\o \O \lccode\O \o \uccode\O \O \lccode\o \o +\uccode\ae\AE \lccode\AE\ae \uccode\AE\AE \lccode\ae\ae +\uccode\oe\OE \lccode\OE\oe \uccode\OE\OE \lccode\oe\oe +\uccode\i`I \uccode\j`J \lccode\i\i \lccode\j\j +\uccode\csuperior`C +\def\changecodes#1#2#3#4{% + \counta#2\relax \countb#3\relax \countc#4\relax + \loop + \ifnum\countc>0 + #1\counta\countb + \advance\counta 1 + \advance\countb 1 + \advance\countc-1 + \repeat +} +\changecodes\uccode{"E1}{`A}{26} +\changecodes\uccode{"C1}{"C1}{26} +\changecodes\lccode{"E1}{"E1}{26} +\changecodes\lccode{"C1}{`a}{26} +\changecodes\lccode{"B0}{`0}{10} +\changecodes\uccode{`0}{"B0}{10} +\changecodes\mathcode{`a}{"7461}{26} +\changecodes\mathcode{`A}{"7441}{26} +\changecodes\mathcode{`0}{"70B0}{10} +\def\capspecials#1#2{% + \chardef\TH"#10 \chardef\A "#11 \chardef\NG"#12 + \chardef\L "#13 \chardef\DH"#14 \chardef\E "#15 + \chardef\O "#2C \chardef\AE"#2E \chardef\OE"#2F +} +\def\lcspecials#1#2#3{% + \chardef\th"#10 \chardef\a "#11 \chardef\ng"#12 + \chardef\l "#13 \chardef\dh"#14 \chardef\e "#15 + \chardef\o "#2C \chardef\ae"#2E \chardef\oe"#2F + \def\ss{\char"#23 \char"#23 }\chardef\i"#39 \chardef\j"#3A +} +\def\sc#1{{% + \changecodes\lccode{`A}{"E1}{26}\capspecials9F\lowercase{#1}% +}} +\def\mc#1{{% + \changecodes\lccode{`A}{"C1}{26}\capspecials8D\lowercase{#1}% +}} +\def\csc#1{{% + \changecodes\uccode{`a}{"E1}{26}\lcspecials9FE\uppercase{#1}% +}} +\def\allcaps#1{{% + \lcspecials054\uppercase{#1}% +}} +\def\alllc#1{{% + \capspecials17\lowercase{#1}% +}} diff --git a/Master/texmf-dist/source/plain/pdcmac/magrmac.dtx b/Master/texmf-dist/source/plain/pdcmac/magrmac.dtx new file mode 100644 index 00000000000..71f2dd83cfe --- /dev/null +++ b/Master/texmf-dist/source/plain/pdcmac/magrmac.dtx @@ -0,0 +1,231 @@ +% magrmac.dtx -- documentation and source for magrmac.tex -*-tex-*- + +%%%@TeX-document-file { +%%% title = "MAGRMAC.TEX -- Malvern Greek Macros", +%%% filename = "$texmf/doc/plain/pdcmac/magrmac.dtx", +%%% version = "$Revision: 1.3 $", +%%% package = "pdcmac 1.0", +%%% date = "$Date: 1995/03/29 16:32:24 $", +%%% 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 file magrmac.tex. +%%% Running plain TeX on this file produces both the +%%% definitions file 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" +%%%} + +%{{{ magrmac.dtx +%{{{ preamble + +\relax +\input pdccode + +\document +\rcs$Id: magrmac.dtx,v 1.3 1995/03/29 16:32:24 pdc Exp $\endrcs + +\codefile{magrmac.tex} + +%}}} preamble +%{{{ introduction +\author{P. Dmaian Cugley} +\title{MAGRMAC---Malvern Greek Macros} + +\section{Introduction} + + This document describes |magrmac.tex|, a small file of macros + for setting Greek with Malvern~G fonts. `Malvern~G' is the name + of an encoding for typesetting Greek texts. Malvern + release~$1{\cdot}2$ has a collection of fonts ({\tt + ma$XX$g$YY$}) which use this encoding. The Levy and Dryllerakis + fonts should work to an extent. + + The conventions for Malvern Greek text files are intended to be + similar to those for K.~J.\ Dryllerakis's Greek\TeX\ (the + `|kd|-' fonts), and will be most useful on computers where the + operating system uses latin letters (as opposed to those which + can display Greek letters on the screen). + + There is a brief guide for |magrmac.tex| called |magrman.tex|. +\notepar + These macros are not necessarily in final form and are not + intended to be supported. Use them at your own risk. +\endnotepar + + The document you are reading is a plain \TeX\ file called + |magrmac.dtx|. This `documented \TeX\ macros'\footnote*{The + suffix |dtx| is the same as files used to simlar effect in the + \LaTeX~2e distribution.} file produces the file `|magrmac.tex|' + in the current directory, in addition to the usual |dvi| file. + The code lines in the printed documentation are identical to + those in the macros file. + +%}}} introduction +%{{{ file identification +\section{File identification} + + Nowadays, macro files start with some comments identifying the + file, for the benefit of people wondering what the file is for. + +\code + \|\% magrmac.tex \fileversion~\filedate~-- Malvern Greek Macros + |%%%@TeX-definition-file { + |%%% filename = "$texmf/tex/plain/pdcmac/magrmac.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, Malvern, Greek, macros", + |%%% supported = "Maybe", + |%%% abstract = "Macros for using Malvern Greek fonts. + |%%% This file was generated by running + |%%% plain TeX on magrmac.dtx", + |%%% copyright = "Copyright (c) 1991-1995 P. Damian Cugley", + |%%% copying = "DO NOT DISTRIBUTE THIS FILE. + |%%% Distribute magrmac.dtx only as part of the + |%%% package it came in.", + |%%% dependencies = "", + |%%%} + | + \|\\message\{\fileversion~\filedate\} + | +\endcode +%}}} file identification +%{{{ greek mode +\section{Greek Mode} + + The Greek Mode is started with |\begingreek| for compatibility + with the precedent of Greek\TeX\ and Levy's original Greek + macros.\footnote*{The conventions of PDCFMT2 would suggest + |\greek|\dots|\endgreek| but (besides being incompatible with + existing Greek macros) it is probable that the hyphenation table + code (|\language| code) for Greek would be called |\greek|, + based on the names I~have seen used.} + + The token register |\everygreek| is expanded each time we enter + Greek mode. At a minimum it should contain a command to select + an appropriate Greek font. +\code + |\newtoks\everygreek + |\chardef\other=12 +\smallbreak + |\def\begingreek{% + | \begingroup + | \catcode`\~\other \catcode`\|\other \catcode`\"\other + | \the\everygreek + |} +\smallbreak + |\let\endgreek=\endgroup +\endcode +%}}} greek mode +\section{Customization} +%{{{ lunate sigma, curly phi + +\subsec{Lunate sigma} + + The macro |\grlunatesigma| belongs in |\everygreek|. It makes + |s| an active char expanding to |c|. A certain amount of + jiggery-pokery is required because making |s| active makes it + impossible to use the name |\grlunatesigma|! + +\code + |\toksdef\toksa=0 +\smallbreak + |\begingroup \let\\=\toksa \catcode`\s=13 \catcode`\S=13 \\={\endgroup + | \def\tmp{% + | \catcode`\s\active \chardef s`c + | \catcode`\S\active \chardef S`C + | } + |}\the\\ + |\let\grlunatesigma=\tmp +\endcode + +\subsec{Variant phi} + + In the end I~make the two-stroke phi $\phi$ the default one, + with $\varphi$ as the `variant', for compatibility with plain + \TeX. +\code + |\chardef\ninetytwo=92 +\smallbreak + |\begingroup \uccode`\~=`f \uppercase{\toksa={\endgroup + | \def\grvarphi{% + | \catcode`\f\active \chardef~\ninetytwo + | } + |}} \the\toksa +\endcode +%}}} lunate sigma +%{{{ accent + +\subsec{One-accent Greek} + + The |\monotonik| macro makes all the accent characters generate + the modern symmetrical accent, while the breathings and iota + subscript do nothing. +\code + |\begingroup \catcode`\<=\active \catcode`\>=\active + | \catcode`\'=\active \catcode`\`=\active \toksa={\endgroup + | \def\monotoniko{% + | \catcode\lq\'\active \chardef'3 + | \catcode\lq\`\active \chardef`3 + | \catcode\lq\~\active \chardef~3 + | \catcode\lq\<\active \let<\relax + | \catcode\lq\>\active \let>\relax + | \catcode\lq\|\active \let|\relax + | } + |}\the\toksa +\smallbreak + |\def\plutoniko{% + | \catcode`\'\other \catcode`\`\other \catcode`\~\other + | \catcode`\<\other \catcode`\>\other \catcode`\|\other + |} +\endcode +%}}} accent +%{{{ define delims + +\subsec{Choose shorthand delimiters for Greek Mode} + + Define |#1| to be a `greek shift' in the way |$| is a maths + shift. Like |$|, |#1| will stand for either |\begingreek| or + |\endgreek| as required. |#1| must be a one-character control + sequence (as might be used after |`|). +\code + |\def\grdelimiter#1{ + | \begingroup \uccode`~=`#1 \uppercase{\toksa={\endgroup + | \def~{\begingreek \let~\endgreek} + | }} \the\toksa + |} +\endcode + +%}}} define delims +\endcodefile +\enddocument +\bye +%}}} macros for greek + +% Local variables: +% fold-folded-p: t +% tex-macros-p: t +% End: diff --git a/Master/texmf-dist/source/plain/pdcmac/magrmac.tex b/Master/texmf-dist/source/plain/pdcmac/magrmac.tex new file mode 100644 index 00000000000..eebec3bdfac --- /dev/null +++ b/Master/texmf-dist/source/plain/pdcmac/magrmac.tex @@ -0,0 +1,67 @@ +% magrmac.tex 1.3 1995/03/29 -- Malvern Greek Macros +%%%@TeX-definition-file { +%%% filename = "$texmf/tex/plain/pdcmac/magrmac.tex", +%%% version = "1.3", +%%% date = "1995/03/29", +%%% 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, Malvern, Greek, macros", +%%% supported = "Maybe", +%%% abstract = "Macros for using Malvern Greek fonts. +%%% This file was generated by running +%%% plain TeX on magrmac.dtx", +%%% copyright = "Copyright (c) 1991-1995 P. Damian Cugley", +%%% copying = "DO NOT DISTRIBUTE THIS FILE. +%%% Distribute magrmac.dtx only as part of the +%%% package it came in.", +%%% dependencies = "", +%%%} + +\message{1.3 1995/03/29} + +\newtoks\everygreek +\chardef\other=12 +\def\begingreek{% + \begingroup + \catcode`\~\other \catcode`\|\other \catcode`\"\other + \the\everygreek +} +\let\endgreek=\endgroup +\toksdef\toksa=0 +\begingroup \let\\=\toksa \catcode`\s=13 \catcode`\S=13 \\={\endgroup + \def\tmp{% + \catcode`\s\active \chardef s`c + \catcode`\S\active \chardef S`C + } +}\the\\ +\let\grlunatesigma=\tmp +\chardef\ninetytwo=92 +\begingroup \uccode`\~=`f \uppercase{\toksa={\endgroup + \def\grvarphi{% + \catcode`\f\active \chardef~\ninetytwo + } +}} \the\toksa +\begingroup \catcode`\<=\active \catcode`\>=\active + \catcode`\'=\active \catcode`\`=\active \toksa={\endgroup + \def\monotoniko{% + \catcode\lq\'\active \chardef'3 + \catcode\lq\`\active \chardef`3 + \catcode\lq\~\active \chardef~3 + \catcode\lq\<\active \let<\relax + \catcode\lq\>\active \let>\relax + \catcode\lq\|\active \let|\relax + } +}\the\toksa +\def\plutoniko{% + \catcode`\'\other \catcode`\`\other \catcode`\~\other + \catcode`\<\other \catcode`\>\other \catcode`\|\other +} +\def\grdelimiter#1{ + \begingroup \uccode`~=`#1 \uppercase{\toksa={\endgroup + \def~{\begingreek \let~\endgreek} + }} \the\toksa +} diff --git a/Master/texmf-dist/source/plain/pdcmac/magrman.tex b/Master/texmf-dist/source/plain/pdcmac/magrman.tex new file mode 100644 index 00000000000..5e746d36fa8 --- /dev/null +++ b/Master/texmf-dist/source/plain/pdcmac/magrman.tex @@ -0,0 +1,604 @@ +% magman.tex -- info about Malvern Greek. +%{{{ Malvern Greek manual +%{{{ preamble + +\errorcontextlines=1000 +\input pdccmlft +\input magrmac + +\font\notegr=ma55g9 +\font\bodygr=ma55g11 +\font\biggr=ma55g24 % used in sample +\font\gri=ma56g11 % used in sample + +\toksa=\expandafter{\STYbodyT} +\edef\STYbodyT{\the\toksa\noexpand\f{gr}{ma55g}} + +\bodyfonts + +\everygreek{\gr \baselineskip=14pt} + +\grdelimiter\* % * is already an active char ++\defverbatim\_+ % | is often used in examples + +\majorheadline{Typesetting Greek using Malvern fonts} + +%{{{ font tables + +%% Code to typeset a font table -- lifted from my testfont.tex + +\newcount\tableN +\newcount\hexcount +\def\hexdigit#1{\ifcase#1\relax 0\or 1\or 2\or 3\or 4\or 5\or 6\or 7\or + 8\or 9\or A\or B\or C\or D\or E\or F\fi} + +\def\ntablecr +{% + \cr + \noalign{\nointerlineskip} + \multispan2\hfill &\multispan{33}\hrulefill +} +\def\ntable +{ + \medskip + \begingroup \openup1\jot + \def\\{\char\tableN \global\advance\tableN 1} + \def\0##1{&\omit&\sevenrm##1} + \halign to \hsize + {% + \chartstrut\hss##\tabskip=0pt plus 10pt & + &\hss##\hss&##\vrule\cr + \lower 6.5pt\null + &\00\01\02\03\04\05\06\07\08\09\0A\0B\0C\0D\0E\0F + \ntablecr + \global\tableN=0 + \ntablelines + \crcr + } + \medbreak + \endgroup +} + +\def\ntablelines +{% + \ifnum\tableN<256 + \let\next\ntablecontinuation + \else + \let\next\relax + \fi + \next +} + +\newcount\ntabtmp + +\def\ntablecontinuation +{% + % Find out if none of this row are defined by making a horizontal + % list of all of them preceeded by a penalty of 1; if any of them + % are defined then \lastpenalty will be something other than 1: + \setbox0=\hbox{\penalty1 + \def~{\char\tableN \advance\tableN 1}% + ~~~~~~~~~~~~~~~~\global\ntabtmp=\lastpenalty}% + % Now set the row in the table iff ntabtmp # 1: + \ifnum\ntabtmp=1 + \global\advance\tableN 16 \let\next=\ntablelines + \else + \let\next=\ntablecontinuationcontinuation + \fi + \next +} + +\def\ntablecontinuationcontinuation +{% + \cr + \noalign{\nointerlineskip \penalty5000 } + & \hexcount=\tableN \divide\hexcount16 \sevenrm\hexdigit\hexcount + &&\\&&\\&&\\&&\\&&\\&&\\&&\\&&\\&&\\&&\\&&\\&&\\&&\\&&\\&&\\&&\\& + \ntablecr + \ntablelines +} + +\def\chartstrut{\lower 0.25\baselineskip \vbox to \baselineskip{}} + +%}}} font tables +%{{{ two-column quotations + +\def\twocolgr{ + \smallskip + \beginthe{twocolgr} + \setbox0=\vbox\bgroup + \hsize=\bodywd \advance\hsize-\colsep \divide\hsize by 2 + \begingreek \strut \ignorespaces +} +\def\endtwocolgr{% + \par\endgreek \egroup + \moveleft\leftmargin\vbox{ + \hrule\smallskip + \hbox to \bodywd{\rigidbalance{0}{2}{\ht\strutbox}{\hfil}} + \smallskip\hrule + } + \smallbreak + \endthe{twocolgr} +} +%}}} two-column quotations +%}}} preamble +%{{{ bibliography + +\def\TB{{\it TUGboat}} + +\counta=0 +\newtoks\bibliography +\newcount\bibcount + +\def\FAQnote +{% + \par {\bf Note on FAQs}\quad An FAQ is an electronic document, posted + regularly to a USENET newsgroup, usually in the form of a list of + answers to frequently asked questions. Many FAQs are available on + the archive site |pit-manager.mit.edu| (alias |rtfm.mit.edu|) + [18.172.1.27] in the directory |pub/usenet/news.answers|. The + reference gives the name of the compiler, the title, the + last-modified date (in lieu of an edition or version number) and + name under which the FAQ is archived appears in parentheses. + \par +} + +\def\bibdef#1#2% +{ + \expcs\edef{cite#1}% + {% + \noexpand\docite\noexpcs{cite#1}\noexpcs{refer#1}% + } + \toks0={#2} + \expcs\edef{refer#1}{\noexpand\bibitem{\expcs\noexpand{cite#1}} + \the\toks0} +} +\def\docite#1#2% +{% + \global\advance\bibcount1 + \global\bibliography=\expandafter + {\the\bibliography #2}% + \global\edef#1% + {[\the\bibcount]}#1% +} + +\bibdef{Allen} +{ + W. Sidney Allen, {\it Vox Graeca: A Guide to Pronunciation of Classical + Greek}, 3rd Ed.\ (Cambridge University Press, 1987), + pp.\thinspace177--179. +} + +\bibdef{KD} +{ + K.~J. Dryllerakis (|kd@doc.ic.ac.uk|), {\it Typesetting Greek Texts with + Greek\TeX}, Greek\TeX~3.1 (also known as KDGreek) (CTAN + |fonts/greek/kd|). +} + +\bibdef{FAQ} +{ + Nikolaos Fotis (ed.), {\it soc.culture.greek} FAQ -- + Linguistics ({\tt greek-\penalty\exhyphenpenalty faq\slash + linguistics}, 1993/03/06). +} + +\bibdef{Yannis} +{ + Yannis Haralambous and Klaus Thull, Typesetting Modern Greek with 128 + Character Codes, \TB\/ 10 (1989), pp.\thinspace354--359 (CTAN + |fonts/greek/yannis|). +} + +\bibdef{Harts} +{ + Horace Hart, {\it Hart's Rules for Compositors and Readers at the + University Press, Oxford}, 39th Edition, revised (Oxford + University Press, 1989), pp.\thinspace111--116. +} + +\bibdef{Levy} +{ + Silvio Levy, Using Greek Fonts with \TeX, \TB\/ 9 (1988), + pp.\thinspace20--24 (CTAN |fonts/greek/levy|). +} + +\bibdef{COD} +{ + {\it The Concise Oxford Dictionary of Current English}, 8th Ed. + (Oxford University Press, 1990), p.\thinspace1453. +} + +\def\bibitem#1% +{% + \smallskip + \indent \llap{#1\hskip1pc}\ignorespaces +} + + +%}}} bibliography + +\twosidedtrue + +\noheadlinetrue +\majorheadline{Typesetting Greek using Malvern fonts} +\leftline{\headingfonts \the\majorheadline} +\bigskip +\leftline{P. Damian Cugley} +\leftline{Oxford University Computing Laboratory} +\leftline{(|Damian.Cugley@comlab.ox.ac.uk|)} +\leftline{April 1993} +\bigskip + +\noindent + Malvern is a sanserif font family, implemented in \MF. This + document describes Malvern encoding~G (the Greek alphabet). + +\section{Using Malvern G} + + Because most latin-alphabet languages require additional composite + letter glyphs to be properly typeset by \TeX, most Malvern fonts + will be used as the raw material for composite fonts. In contrast, + the Malvern Greek font can be used directly to typeset Greek, both + with the old accent-and-breathing systems and the newer (post-1974) + one-accent system. It follows the conventions of Silvio Levy's + original |gr| family \citeLevy\ and K.~J. Dryllerakis's Greek\TeX\ + (|kd| fonts) \citeKD. It is almost compatible with the reduced + Greek fonts (|rgr| and |mrgr| families) described by Yannis + Haralambous and Karl Thull \citeYannis. + +%{{{ typesetting + +\section{Macro file} + + The file |magrmac.tex| has some macros for setting texts in plain + \TeX. A future production release may instead work as an option or + extension of Greek\TeX, with the objective of making it possible to + switch an existing document to Malvern without much editing. + + Greek text is set within a \dfn{Greek mode}, delimited by macros + |\begingreek| and |\endgreek|. Each time Greek mode is entered, the + contents of the token register |\everygreek| is scanned first. + Since |magrmac| does {\it not} load a particular font by default, a + manuscript using |magrmac| will want to include an assignment like +\display + |\everygreek={\greekfont}|\cr + |\catcode`\*=\active \grdelimiter\*| +\enddisplay + where |\greekfont| has been bound to some Greek font or another such + as |ma55g12|. The macro |\grdelimiter| takes one parameter, an + active character (represented by a one-character control sequence), + and makes that character into a self-matching delimiter for Greek + mode (like |$|--|$| works for mathematics mode). Thus, `|*This is + Greek*|' produces `*This is Greek*'. + +\section{The alphabet} + + The letters are transliterated as + follows: +\table \hfil#\hfil&&\enspace\hfil#\hfil\cr + \gr a&\gr b&\gr g&\gr d&\gr e&\gr z&\gr h&\gr j&\gr i&\gr k&\gr + l&\gr m&\gr n&\gr x&\gr o&\gr p&\gr r&\gr ss&\gr c&\gr t&\gr + u&\gr f&\gr v& \gr q&\gr y&\gr w\cr + \tt a&\tt b&\tt g&\tt d&\tt e&\tt z&\tt h&\tt j&\tt i&\tt k&\tt + l&\tt m&\tt n&\tt x&\tt o&\tt p&\tt r&\tt s&\tt c&\tt t&\tt u&\tt + f&\tt v& \tt q&\tt y&\tt w\cr +\noalign{\smallskip}% + \gr A&\gr B&\gr G&\gr D&\gr E&\gr Z&\gr H&\gr J&\gr I&\gr K&\gr + L&\gr M&\gr N&\gr X&\gr O&\gr P&\gr R&\gr S&\gr C&\gr T&\gr + U&\gr F&\gr V& \gr Q&\gr Y&\gr W\cr + \tt A&\tt B&\tt G&\tt D&\tt E&\tt Z&\tt H&\tt J&\tt I&\tt K&\tt + L&\tt M&\tt N&\tt X&\tt O&\tt P&\tt R&\tt S&\tt C&\tt T&\tt U&\tt + F&\tt V& \tt Q&\tt Y&\tt W\cr +\endtable + The letter *C c* is \dfn{lunate sigma} (see below). The letter *V v* + is \dfn{digamma} (wau). I~put it next to *f* because I~don't know + where it belongs in the alphabet. + + A lower case sigma `*s@*' at the end of a word (or followed by + punctuation) is automatically changed to the final form `*s*' + through \TeX's ligature mechanism.\note{Occasionally \TeX's notion + of word boundaries causes the wrong glyph to appear. There are two + special invisible glyphs that can be used to control this in obscure + circumstances. The so-called \dfn{compound word mark} (or cwm) acts + as a word-boundary in the middle of a word. It has code~32, so + `|as^^`a|' produces `*as^^`a*', for example. The \dfn{null glyph} + is invisible, but, because it is not a boundary character, it can be + used to prevent a ligature with a following word boundary. It has + code 64, so `|as@|' produces `*as@*'.} + +\section{Composite letters} + + The marks that go above the letters are obtained with the + following characters, which go before the letter: +\table \gr#\hfil&\quad#\hfil&\quad #\hfil& \quad *#*\hfil\cr +\noalign{\hrule height 1pt \vskip1\jot}% + \omit Mark\hfil&\omit\quad Char\hfil& + Name&\omit\quad Name in \citeYannis\hfil\cr +\noalign{\vskip\jot \hrule \vskip\jot} + <@& |<|& asper (rough, = h)& dase'ia\cr + >@& |>|& lenis (smooth)& yil'h\cr + "@& |"| (double quote)& + diaeresis& dialutik'a\cr + '@& |'| (quote)& + acute accent& >oxe'ia\cr + `@& |`|& grave accent& bare'ia\cr + \char126 @& |~|& circumflex& perispwm'enh\cr +\noalign{\vskip1\jot \hrule height 1pt\smallskip}% +\endtable + A breathing or diaeresis can be combined with an accent, thus + `|<~a|' for *<~a*, `|>'e|' for *>'e*. + + + The vowels *a*, *h* and *w* may have an iota beneath them, called + `subscript': *a|*, *h|*, *w|*. These are produced with a vertical + bar `_|_' after the letter in Greek mode: `_a|_' makes + *a|*, `_en >arq~h| >~hn en + >arq~h| >~hn u*. Double *rr* +% used to be written *>r|' or `|d'|' (*d>* or *d'*). + + +\section{Punctuation} + + Here's a table of correspondences for punctuation: +\table \hfil#\hfil&&\enspace\hfil#\hfil\cr + *.*&*,*&*;*&*:*&*!*&*?*&*''*&*((*&*))*\cr + |.|&|,|&|;|&|:|&|!|&|?|&|''|&|((|&|))|\cr +\endtable + The apostrophe is also generated by a single single-quote at the end + of a word: `*d'*' can be generated by `|d'|'. There are also + digits, parentheses, brackets, hyphen, dashes, slash, per cent sign, + asterisk, plus and equals signs. + +\section{One-accent Greek} + + The easiest way to write modern Greek is simply to use |'| for the + accent and otherwise to use |\begingreek|--|\endgreek| as before: + `*en arq'h hn o l'ogos*' is generated with `|en arq'h hn o l'ogos|'. + + Malvern also has glyphs for a symmetrical accent (*\char3*) and + composite letters (such as *\char3 a*, *"\char3u*). The macro + |\monotoniko|\note{This macro is so named for compatibility with the + |rgr|/|mrgr| macros \citeYannis. It might usefully go in + |\everygreek|.} in Greek mode makes |'| an active character, + expanding to the symmetrical accent. Then `|En'w|' produces + `*En\char3w*'. In fact, the other accent characters |`| and |~| are + also made to substitute `*\char3*', and |<|, |>| and _|_ expand to + the null glyph, so that a text with all the breathings and accents + and be hacked into almost-correct one-accent Greek.\note{Again, for + compatibility with the |rgr|/|mrgr| macros. Because monosyllables + should not have accents at all in one-accent Greek, a complete + conversion from old-style to new-style requires changes to the + manuscript anyway, so the usefulness of this feature is debatable!} + For example, `_>En~w|_' becomes `*\monotoniko >En~w|*'. + +\section{Variant glyphs} + + Sigma has a variant called lunate sigma, written *Cc*. These + letters can be obtained directly (produced by the character `|c|' in + the manuscript). So that a given text can be switched between the + two styles, there is also a macro |\grlunatesigma|, which redefines + `|s|' is as active character equivalent to `|c|'. Obviously this is + only useful when Greek mode is only used for plain texts, since it + prevents `|s|' from being used in control sequence names. + + Similarly, there are two ways to write lower case phi: *f* and + *\char92 * (`|f|' and glyph~92). There is no difference in meaning + between *f* and *\char92 *; the choice of one or the other is only + made on aesthetic grounds. The macro |\grvarphi| redefines `|f|' as + an active character equivalent to `*\char92 *', in effect replacing + *f* with *\char92 *. + + Normally these macros, if used, will go in |\everygreek|. + +%}}} typesetting +\iffalse +%{{{ background +\section{Background} + + This section is optional reading. + +\subsection{Development of the Levy-derived font families} + + Silvio Levy's |gr| fonts \citeLevy\ used the \TeX~2 ligature system + to make *s* become *s@* when followed by a letter, and had glyphs + for almost all the composite letters. + + Yannis Haralambous and Klaus Thull created a set of reduced + (128-glyph) fonts, for \TeX\ systems still unable to manage + 256-glyph fonts \citeYannis. These fonts (the |rgr| and |mrgr| + families) still used Levy's character programs. Because they could + not include glyphs for all the composite letters, many composite + letters had to be obtained with macros rather than ligatures. The + |mrgr| family is for new-style (one-accent) Greek. + + Finally K.~J. Dryllerakis's Greek\TeX\ package (also called KDGreek) + \citeKD\ uses the Levy character programs again, but takes advantage + of the new ligature features of \TeX~3 to make *s@* become *s* + (without needing compound glyphs for every combination of *s@* with + a letter). The fonts are given names starting with |kd|. + Greek\TeX\ also includes format files for plain \TeX\ and \LaTeX, + transliteration programs and other useful things. + +\subsection{Designing Greek letters for Malvern} + + My Malvern-G encoding is intended to be `ligature-compatible' with + Levy's and Dryllerakis's, meaning that `|<'a|||' will produce + `*<'a|*' in each of them, even though this is glyph~141 in + |grreg10|, 201 in |kdgr10| and some random number in |ma55g10|. The + punctuation characters have the same encoding. + + Designing a sanserif Greek lower case alphabet (*alfabet*?) is tricky + because the lower case letters have a very cursive style, as if + hand-drawn with a brush by a scribe in a hurry -- which is pretty + much the opposite of most sanserif styles. I~made sketches (on + paper) of Greek letters forced into the same sorts of shapes as + other Malvern letters, and the results were uniformly horrid. The + original idea of Malvern was to make a humanist/geometric hybrid, so + I tried approaching it from the from the humanist end this time. + +%}}} background +\fi +%{{{ references + +\section{References} + + Since I don't speak a word of Greek -- the only word I know is + *barbaroi* and I don't know how to spell it -- I have relied on + reading between the lines of the documentation for other systems for + typesetting Greek, including Hart's Rules \citeHarts. + + CTAN is the Comprehensive \TeX\ Archive Network, a collection of FTP + sites (such as |ftp.tex.ac.uk|, under directory |tex-archive|). + +\beginthe{bib} \parskip=0pt \parindent=0pt + \the\bibliography + \par +\endthe{bib} + +%}}} postamble + +%{{{ samples + +\section{Examples of text in Malvern 55 and 56} + +\iffalse + This quotation is used by Haralambous and Thull \citeYannis\ as an + example of the old-style accent-and-breathing system: +%{{{ Popess Johanna + +\begin twocolgr + >En~w| exantl'hsas t`a murol'ogi'a tou + >ekoim~ato ep`i t~hs >'ammou t~hs paral'ias, + katab`as >ex o>uran~wn ap'ostolos >eke~inos t~wn Sax'onwn + >'hnoixe di`a maqa'iras t`a st'hjh to~u koimwm'enou, + e>is'hgage to`us is t`hn >op`hn kai + >exag`wn t`hn kard`ian >eb'ujisen a>ut'hn e>is l'akkon pl'hrh + <'udatos, <'oper eke'inh kard'ia >'efrizen e>is t`o <'udwr ent`os + to~u thgan'iou, >afo~u d`e >ekr'uwsen, >'ejese p'alin a>ut`hn + ep'estreyen e>is t`on >idik'on tou. + + >'Etuq'e pote, >anagn~wst'a mou, n`a >apokoimhj~h|s m`e + >anup'oforon b~hqa, koim'wmenos n`a exupn'hsas + n`a eiatreum'enos? >Agn~wn <'oti e>~isai + kal`a >ano'igeis mhqanik~ws t`o st'oma, <'ina plhr'wsh|s e>is + t`on >epikat'araton b~hqa t`on sun'hjh f'oron. >All`a + p'oshn a>isj'anesai qar'an, m`h eis t`on l'arugga + t`o >oqlhp`on jhr'ion! O<'utw <'ama >'hnoixe ka`i ofjalmo'us, is t`hn >aq'ariston >Iw'annan t`hn sun'hjh dakr'uwn + spond'hn, >all`a par`a p~asan prosdok'ian oofjalmo'i + tou e`h + n`a kla'ush| >h|sj'aneto >'orexin met`a polu'hmeron nhste'ian + All' >ako'usontai, >enper e>~u dok~h|s l'egein. t'ode d'e sou + >ene'ohsa <'ama l'egontos, ka`i pr`os >emaut`on skop~w; e>i <'oti + m'alist'a me E>uj'ufrwn did'axeien, 'adikon e>~inai, t'i m~allon >eg`w + mem'ajhka par' E>uj'ufronos, t'i pot' >est`in t`o <'osi'on te ka`i + t`o >an'osion? jeomis`es m`en g`ar to~uto t`o >'epgon, 'eoiken, e>'in >'an; >all`a g`ar o>u to'utw| >ef'anh >'arti + `on ka`i + jeofil`es >ef'anh. af'ihm'i se, >~w E>uj'ufron; + e>i bo'ulei, p'antes a>ut`o 'adikon ka`i p'antes + miso'untwn. >all' >~ara to~uto n~un >epanorj'wmeja >en t~w| l'ogw|, + an'osi'on >estin, <`o d' + >`an fil~wsin, <`osion; <`o d' >`an oud'etera >`h amf'otera? >~ar' o<'utw bo'ulei anos'iou? +\endtwocolgr + \rightline{Plato, `Euthyphro'} +\vskip 1\medskipamount plus \baselineskip + + + This quotation (similarly stolen) is in Malvern~56 and has + |\grvarphi| and |\grlunatesigma| in effect: + +\twocolgr \gri \grvarphi \grlunatesigma + T`h stigm`h to'uth ni'wjw p'oso bar'u ''nai t`o must'hrio t~hs + xomol'oghshs. 'Oros. O`h >ap`o mustikop'ajeia n`a z'hsw + mi`a perasm'enh >epoq'h. Ka`i t'wra, n'a, ntr'epomai n`a mil'hsw. + + P~ws n`a t`o p~w? Jumo~umai <'ena >anoixi'atiko deilin'o, po`u + kat'ebaina t`on Ta"'ugeto, mi`a xafnik`h j'uella m`e k'uklwse kont`a + sto'us Pentaulo'us. T'oso fober`os >anemos'ifounas, po`u >'epesa + katag~hs gi`a n`a m`hn gkremist~w. Oastrap`es m' >'exwsan + 'ekleisa t`a m'atia m`hn tuflwj~w, ka`i kat'aqama, + p'istoma, per'imena. <'Olo t`o pan'uyhlo boun`o >'etreme, ka`i du`o + >'elata d'ipla mou tsak'isthkan >ap' t`h m'esh ka`i br'onthxan + q'amou. >'Eniwja t`o jei'afi to~u kerauno~u st`on >a'era, ka`i + xafnik`a x'espase 'epesen 'anemos, ka`i qontr'es, + jerm'es st'ales broq`h qt'uphsan t`a dentr`a ka`i t`o q~wma. T`o + jum'ari, ap' t`o ner'o, t'inaxan t`is murwdi'es tous ki <'olh @ >'@ >`@ >~@ "@ "'@ "`@ "~@ + "\char3 @} +\endgreek +\medskip\hrule height 1pt +} +%}}} 24-pt sample +\bye +%}}} Malvern Greek manual + +% Local variables: +% fill-prefix: "\t" +% fill-column: 76 +% fold-folded-p: t +% End: diff --git a/Master/texmf-dist/source/plain/pdcmac/makefile.in b/Master/texmf-dist/source/plain/pdcmac/makefile.in new file mode 100644 index 00000000000..e1c797dcead --- /dev/null +++ b/Master/texmf-dist/source/plain/pdcmac/makefile.in @@ -0,0 +1,160 @@ +# Makefile for the PDCMAC package +# Template for configure + +package = @package@ + +# directory source code is in: +srcdir = @srcdir@ + +# directory for TeX macro files: +texmf = @texmf@ +texdir = @texdir@ +docdir = @docdir@ + +# End of configuration section +######################################################################## + +TEX = tex .fn + rm -rf `cat .fn` + mkdir `cat .fn` + cp -p $(distfiles) `cat .fn` + -cp -p ChangeLog `cat .fn`/changes.txt + -cp -p news.txt `cat .fn`/news.txt + cd `cat .fn`; ls -Rl > contents.txt + tar -cf `cat .fn`.tar `cat .fn` && gzip -v9f `cat .fn`.tar + cd `cat .fn`; zip -9qrl ../`cat ../.fn`.zip * + rm -rf `cat .fn` .fn + +version.txt: $(dtxfiles) $(miscscript) pdcmacvn.tex + sed -e 's/\\def\\pdcmacversion{\([0-9]*\.[0-9]*\)}/* $(package) release \1 */' \ + -e 's/\\def\\pdcmacversion{\([0-9]*\.[0-9]*\)\.\([0-9]*\)}/* $(package) release \1, patch level \2 */' \ + pdcmacvn.tex > version.txt + date '+Version ID list generated %Y-%m-%d' >> version.txt + echo >> version.txt + ( grep -h 'rcs\$$Id' $(dtxfiles) | \ + sed -e 's/^.*: \(.*\) \$$.*$$/\1/' -e 's/,v/ =/' | sort; echo; \ + grep version= $(miscscript) configure | \ + sed -e 's/:version=/ = /' -e 's/"//g' | sort ) | \ + align_equals >> version.txt + +tagfiles = $(dtxfiles) +TAGS: $(tagfiles) $(srcdir)/dtxtags + $(ETAGS) $(ETAGSFLAGS) $(tagfiles) + +######################################################################## +# Individual targets + +$(self_files) $(miscfiles): pdccode.tex +$(sty_files): pdccode2.tex + +pdcguide.dvi magrman.dvi: $(macro_files) +pdcguide.dvi: copying.tex pdcmacvn.tex + +pdcoput5.dvi pdcoput5.tex: $(figures) + +$(misc_files): .misc.flag +.misc.flag: $(misc_dtx) + $(TEX) $(misc_dtx) && touch .misc.flag + +$(sty_files): .sty.flag +.sty.flag: $(sty_dtx) + $(TEX) $(sty_dtx) && touch .sty.flag + +pdccode.dvi pdccode.tex: pdccode.dtx + $(TEX) pdccode.dtx + grep endinput tmp.tex && mv tmp.tex pdccode.tex + +pdcguide.ps: pdcguide.tex copying.tex $(macro_files) + echo '\let\usepsfonts! \input pdcguide' > tmp.tex + $(TEX) tmp + rm -f tmp.tex + $(DVIPS) $(DVIPSFLAGS) -o $@ tmp + +# A scratch file for doing tests: +tryit.dvi: tryit.tex ma55lft.tex pdcl1maa.tex + $(TEX) tryit + + +# rules for the configuration itself +makefile: makefile.in config.status + sh config.status makefile +config.status: $(srcdir)/configure + sh config.status --recheck --nocreate + +######################################################################## +# Implicit rules + +.SUFFIXES: .dtx .tex .dvi .ps .eps .fig +.dtx.tex: + $(TEX) $< +.tex.dvi: + $(TEX) $< +.dvi.ps: + $(DVIPS) $(DVIPSFLAGS) $< -o $@ +.fig.eps: + $(FIG2EPSF) $< > $@ diff --git a/Master/texmf-dist/source/plain/pdcmac/oput01.fig b/Master/texmf-dist/source/plain/pdcmac/oput01.fig new file mode 100644 index 00000000000..e4b75f258f0 --- /dev/null +++ b/Master/texmf-dist/source/plain/pdcmac/oput01.fig @@ -0,0 +1,323 @@ +#FIG 2.1 +80 2 +6 89 317 224 329 +2 1 0 1 -1 10 0 0 0.000 -1 0 0 + 89 329 224 329 9999 9999 +2 2 0 0 -1 10 0 4 0.000 0 0 0 + 224 329 224 317 89 317 89 329 224 329 9999 9999 +-6 +6 89 227 224 299 +6 89 287 224 299 +2 1 0 1 -1 10 0 0 0.000 -1 0 0 + 89 299 224 299 9999 9999 +2 2 0 0 -1 10 0 4 0.000 0 0 0 + 224 299 224 287 89 287 89 299 224 299 9999 9999 +-6 +6 89 272 224 284 +2 1 0 1 -1 10 0 0 0.000 -1 0 0 + 89 284 224 284 9999 9999 +2 2 0 0 -1 10 0 4 0.000 0 0 0 + 224 284 224 272 89 272 89 284 224 284 9999 9999 +-6 +6 89 257 224 269 +2 1 0 1 -1 10 0 0 0.000 -1 0 0 + 89 269 224 269 9999 9999 +2 2 0 0 -1 10 0 4 0.000 0 0 0 + 224 269 224 257 89 257 89 269 224 269 9999 9999 +-6 +6 89 242 224 254 +2 1 0 1 -1 10 0 0 0.000 -1 0 0 + 89 254 224 254 9999 9999 +2 2 0 0 -1 10 0 4 0.000 0 0 0 + 224 254 224 242 89 242 89 254 224 254 9999 9999 +-6 +6 89 227 224 239 +2 1 0 1 -1 10 0 0 0.000 -1 0 0 + 89 239 224 239 9999 9999 +2 2 0 0 -1 10 0 4 0.000 0 0 0 + 224 239 224 227 89 227 89 239 224 239 9999 9999 +-6 +-6 +6 89 152 224 224 +6 89 212 224 224 +2 1 0 1 -1 10 0 0 0.000 -1 0 0 + 89 224 224 224 9999 9999 +2 2 0 0 -1 10 0 4 0.000 0 0 0 + 224 224 224 212 89 212 89 224 224 224 9999 9999 +-6 +6 89 197 224 209 +2 1 0 1 -1 10 0 0 0.000 -1 0 0 + 89 209 224 209 9999 9999 +2 2 0 0 -1 10 0 4 0.000 0 0 0 + 224 209 224 197 89 197 89 209 224 209 9999 9999 +-6 +6 89 182 224 194 +2 1 0 1 -1 10 0 0 0.000 -1 0 0 + 89 194 224 194 9999 9999 +2 2 0 0 -1 10 0 4 0.000 0 0 0 + 224 194 224 182 89 182 89 194 224 194 9999 9999 +-6 +6 89 167 224 179 +2 1 0 1 -1 10 0 0 0.000 -1 0 0 + 89 179 224 179 9999 9999 +2 2 0 0 -1 10 0 4 0.000 0 0 0 + 224 179 224 167 89 167 89 179 224 179 9999 9999 +-6 +6 89 152 224 164 +2 1 0 1 -1 10 0 0 0.000 -1 0 0 + 89 164 224 164 9999 9999 +2 2 0 0 -1 10 0 4 0.000 0 0 0 + 224 164 224 152 89 152 89 164 224 164 9999 9999 +-6 +-6 +6 89 77 224 149 +6 89 137 224 149 +2 1 0 1 -1 10 0 0 0.000 -1 0 0 + 89 149 224 149 9999 9999 +2 2 0 0 -1 10 0 4 0.000 0 0 0 + 224 149 224 137 89 137 89 149 224 149 9999 9999 +-6 +6 89 122 224 134 +2 1 0 1 -1 10 0 0 0.000 -1 0 0 + 89 134 224 134 9999 9999 +2 2 0 0 -1 10 0 4 0.000 0 0 0 + 224 134 224 122 89 122 89 134 224 134 9999 9999 +-6 +6 89 107 224 119 +2 1 0 1 -1 10 0 0 0.000 -1 0 0 + 89 119 224 119 9999 9999 +2 2 0 0 -1 10 0 4 0.000 0 0 0 + 224 119 224 107 89 107 89 119 224 119 9999 9999 +-6 +6 89 92 224 104 +2 1 0 1 -1 10 0 0 0.000 -1 0 0 + 89 104 224 104 9999 9999 +2 2 0 0 -1 10 0 4 0.000 0 0 0 + 224 104 224 92 89 92 89 104 224 104 9999 9999 +-6 +6 89 77 224 89 +2 1 0 1 -1 10 0 0 0.000 -1 0 0 + 89 89 224 89 9999 9999 +2 2 0 0 -1 10 0 4 0.000 0 0 0 + 224 89 224 77 89 77 89 89 224 89 9999 9999 +-6 +-6 +6 239 77 374 149 +6 239 137 374 149 +2 1 0 1 -1 10 0 0 0.000 -1 0 0 + 239 149 374 149 9999 9999 +2 2 0 0 -1 10 0 4 0.000 0 0 0 + 374 149 374 137 239 137 239 149 374 149 9999 9999 +-6 +6 239 122 374 134 +2 1 0 1 -1 10 0 0 0.000 -1 0 0 + 239 134 374 134 9999 9999 +2 2 0 0 -1 10 0 4 0.000 0 0 0 + 374 134 374 122 239 122 239 134 374 134 9999 9999 +-6 +6 239 107 374 119 +2 1 0 1 -1 10 0 0 0.000 -1 0 0 + 239 119 374 119 9999 9999 +2 2 0 0 -1 10 0 4 0.000 0 0 0 + 374 119 374 107 239 107 239 119 374 119 9999 9999 +-6 +6 239 92 374 104 +2 1 0 1 -1 10 0 0 0.000 -1 0 0 + 239 104 374 104 9999 9999 +2 2 0 0 -1 10 0 4 0.000 0 0 0 + 374 104 374 92 239 92 239 104 374 104 9999 9999 +-6 +6 239 77 374 89 +2 1 0 1 -1 10 0 0 0.000 -1 0 0 + 239 89 374 89 9999 9999 +2 2 0 0 -1 10 0 4 0.000 0 0 0 + 374 89 374 77 239 77 239 89 374 89 9999 9999 +-6 +-6 +6 239 152 374 224 +6 239 212 374 224 +2 1 0 1 -1 10 0 0 0.000 -1 0 0 + 239 224 374 224 9999 9999 +2 2 0 0 -1 10 0 4 0.000 0 0 0 + 374 224 374 212 239 212 239 224 374 224 9999 9999 +-6 +6 239 197 374 209 +2 1 0 1 -1 10 0 0 0.000 -1 0 0 + 239 209 374 209 9999 9999 +2 2 0 0 -1 10 0 4 0.000 0 0 0 + 374 209 374 197 239 197 239 209 374 209 9999 9999 +-6 +6 239 182 374 194 +2 1 0 1 -1 10 0 0 0.000 -1 0 0 + 239 194 374 194 9999 9999 +2 2 0 0 -1 10 0 4 0.000 0 0 0 + 374 194 374 182 239 182 239 194 374 194 9999 9999 +-6 +6 239 167 374 179 +2 1 0 1 -1 10 0 0 0.000 -1 0 0 + 239 179 374 179 9999 9999 +2 2 0 0 -1 10 0 4 0.000 0 0 0 + 374 179 374 167 239 167 239 179 374 179 9999 9999 +-6 +6 239 152 374 164 +2 1 0 1 -1 10 0 0 0.000 -1 0 0 + 239 164 374 164 9999 9999 +2 2 0 0 -1 10 0 4 0.000 0 0 0 + 374 164 374 152 239 152 239 164 374 164 9999 9999 +-6 +-6 +6 239 227 374 299 +6 239 287 374 299 +2 1 0 1 -1 10 0 0 0.000 -1 0 0 + 239 299 374 299 9999 9999 +2 2 0 0 -1 10 0 4 0.000 0 0 0 + 374 299 374 287 239 287 239 299 374 299 9999 9999 +-6 +6 239 272 374 284 +2 1 0 1 -1 10 0 0 0.000 -1 0 0 + 239 284 374 284 9999 9999 +2 2 0 0 -1 10 0 4 0.000 0 0 0 + 374 284 374 272 239 272 239 284 374 284 9999 9999 +-6 +6 239 257 374 269 +2 1 0 1 -1 10 0 0 0.000 -1 0 0 + 239 269 374 269 9999 9999 +2 2 0 0 -1 10 0 4 0.000 0 0 0 + 374 269 374 257 239 257 239 269 374 269 9999 9999 +-6 +6 239 242 374 254 +2 1 0 1 -1 10 0 0 0.000 -1 0 0 + 239 254 374 254 9999 9999 +2 2 0 0 -1 10 0 4 0.000 0 0 0 + 374 254 374 242 239 242 239 254 374 254 9999 9999 +-6 +6 239 227 374 239 +2 1 0 1 -1 10 0 0 0.000 -1 0 0 + 239 239 374 239 9999 9999 +2 2 0 0 -1 10 0 4 0.000 0 0 0 + 374 239 374 227 239 227 239 239 374 239 9999 9999 +-6 +-6 +6 239 302 374 374 +6 239 362 374 374 +2 1 0 1 -1 10 0 0 0.000 -1 0 0 + 239 374 374 374 9999 9999 +2 2 0 0 -1 10 0 4 0.000 0 0 0 + 374 374 374 362 239 362 239 374 374 374 9999 9999 +-6 +6 239 347 374 359 +2 1 0 1 -1 10 0 0 0.000 -1 0 0 + 239 359 374 359 9999 9999 +2 2 0 0 -1 10 0 4 0.000 0 0 0 + 374 359 374 347 239 347 239 359 374 359 9999 9999 +-6 +6 239 332 374 344 +2 1 0 1 -1 10 0 0 0.000 -1 0 0 + 239 344 374 344 9999 9999 +2 2 0 0 -1 10 0 4 0.000 0 0 0 + 374 344 374 332 239 332 239 344 374 344 9999 9999 +-6 +6 239 317 374 329 +2 1 0 1 -1 10 0 0 0.000 -1 0 0 + 239 329 374 329 9999 9999 +2 2 0 0 -1 10 0 4 0.000 0 0 0 + 374 329 374 317 239 317 239 329 374 329 9999 9999 +-6 +6 239 302 374 314 +2 1 0 1 -1 10 0 0 0.000 -1 0 0 + 239 314 374 314 9999 9999 +2 2 0 0 -1 10 0 4 0.000 0 0 0 + 374 314 374 302 239 302 239 314 374 314 9999 9999 +-6 +-6 +6 239 377 374 449 +6 239 437 374 449 +2 1 0 1 -1 10 0 0 0.000 -1 0 0 + 239 449 374 449 9999 9999 +2 2 0 0 -1 10 0 4 0.000 0 0 0 + 374 449 374 437 239 437 239 449 374 449 9999 9999 +-6 +6 239 422 374 434 +2 1 0 1 -1 10 0 0 0.000 -1 0 0 + 239 434 374 434 9999 9999 +2 2 0 0 -1 10 0 4 0.000 0 0 0 + 374 434 374 422 239 422 239 434 374 434 9999 9999 +-6 +6 239 407 374 419 +2 1 0 1 -1 10 0 0 0.000 -1 0 0 + 239 419 374 419 9999 9999 +2 2 0 0 -1 10 0 4 0.000 0 0 0 + 374 419 374 407 239 407 239 419 374 419 9999 9999 +-6 +6 239 392 374 404 +2 1 0 1 -1 10 0 0 0.000 -1 0 0 + 239 404 374 404 9999 9999 +2 2 0 0 -1 10 0 4 0.000 0 0 0 + 374 404 374 392 239 392 239 404 374 404 9999 9999 +-6 +6 239 377 374 389 +2 1 0 1 -1 10 0 0 0.000 -1 0 0 + 239 389 374 389 9999 9999 +2 2 0 0 -1 10 0 4 0.000 0 0 0 + 374 389 374 377 239 377 239 389 374 389 9999 9999 +-6 +-6 +6 239 482 374 494 +2 1 0 1 -1 10 0 0 0.000 -1 0 0 + 239 494 374 494 9999 9999 +2 2 0 0 -1 10 0 4 0.000 0 0 0 + 374 494 374 482 239 482 239 494 374 494 9999 9999 +-6 +6 239 467 374 479 +2 1 0 1 -1 10 0 0 0.000 -1 0 0 + 239 479 374 479 9999 9999 +2 2 0 0 -1 10 0 4 0.000 0 0 0 + 374 479 374 467 239 467 239 479 374 479 9999 9999 +-6 +6 239 452 374 464 +2 1 0 1 -1 10 0 0 0.000 -1 0 0 + 239 464 374 464 9999 9999 +2 2 0 0 -1 10 0 4 0.000 0 0 0 + 374 464 374 452 239 452 239 464 374 464 9999 9999 +-6 +2 1 0 1 -1 0 0 0 0.000 -1 0 0 + 89 59 449 59 9999 9999 +2 1 0 1 -1 0 0 0 0.000 -1 0 0 + 89 524 449 524 9999 9999 +2 2 0 2 -1 0 0 0 0.000 0 0 0 + 479 554 479 29 59 29 59 554 479 554 9999 9999 +2 1 0 1 -1 10 0 0 0.000 -1 0 0 + 254 344 9999 9999 +2 1 0 2 -1 0 0 0 0.000 -1 0 0 + 89 308 224 308 9999 9999 +2 1 0 1 -1 0 0 0 0.000 -1 0 0 + 269 563 269 569 344 569 344 563 9999 9999 +2 1 0 1 -1 0 0 0 0.000 -1 0 0 + 308 569 317 581 320 581 9999 9999 +2 1 0 1 -1 0 0 0 0.000 -1 1 0 + 0 0 1.000 4.000 8.000 + 29 344 83 308 9999 9999 +2 2 1 1 -1 5 0 0 4.000 0 0 0 + 224 494 224 77 164 77 164 494 224 494 9999 9999 +2 2 1 1 -1 5 0 0 4.000 0 0 0 + 299 494 299 77 239 77 239 494 299 494 9999 9999 +2 2 1 1 -1 5 0 0 4.000 0 0 0 + 374 494 374 77 314 77 314 494 374 494 9999 9999 +2 2 0 0 -1 10 0 5 0.000 0 0 0 + 449 59 449 47 89 47 89 59 449 59 9999 9999 +2 2 0 0 -1 10 0 5 0.000 0 0 0 + 449 524 449 512 89 512 89 524 449 524 9999 9999 +2 2 1 1 -1 5 0 0 4.000 0 0 0 + 449 494 449 77 389 77 389 494 449 494 9999 9999 +2 2 1 1 -1 5 0 0 4.000 0 0 0 + 149 494 149 77 89 77 89 494 149 494 9999 9999 +4 0 0 12 0 -1 0 0.00000 4 15 36 113 326 caption +4 0 0 12 0 -1 0 0.00000 4 15 44 146 215 column 0 +4 0 0 12 0 -1 0 0.00000 4 15 44 311 218 column 1 +4 0 0 12 0 -1 0 0.00000 4 15 42 275 53 headline +4 0 0 12 0 -1 0 0.00000 4 15 37 359 515 footline +4 0 0 12 0 -1 0 0.00000 4 15 39 323 584 grid cell +4 0 0 12 0 -1 0 0.00000 4 15 48 8 371 separator +4 0 0 12 0 -1 0 0.00000 4 15 36 8 359 caption +4 0 0 12 0 -1 0 0.00000 4 15 54 104 419 illustration +4 0 0 12 0 -1 0 1.57080 4 15 54 419 404 illustration diff --git a/Master/texmf-dist/source/plain/pdcmac/oput02.fig b/Master/texmf-dist/source/plain/pdcmac/oput02.fig new file mode 100644 index 00000000000..fb7858b0c43 --- /dev/null +++ b/Master/texmf-dist/source/plain/pdcmac/oput02.fig @@ -0,0 +1,273 @@ +#FIG 2.1 +80 2 +6 179 317 254 329 +2 2 0 0 -1 10 0 4 0.000 0 0 0 + 254 329 254 317 179 317 179 329 254 329 9999 9999 +2 1 0 1 -1 10 0 0 0.000 -1 0 0 + 179 329 254 329 9999 9999 +-6 +6 179 332 254 344 +2 2 0 0 -1 10 0 4 0.000 0 0 0 + 254 344 254 332 179 332 179 344 254 344 9999 9999 +2 1 0 1 -1 10 0 0 0.000 -1 0 0 + 179 344 254 344 9999 9999 +-6 +6 179 287 254 299 +2 2 0 0 -1 10 0 4 0.000 0 0 0 + 254 299 254 287 179 287 179 299 254 299 9999 9999 +2 1 0 1 -1 10 0 0 0.000 -1 0 0 + 179 299 254 299 9999 9999 +-6 +6 179 272 254 284 +2 2 0 0 -1 10 0 4 0.000 0 0 0 + 254 284 254 272 179 272 179 284 254 284 9999 9999 +2 1 0 1 -1 10 0 0 0.000 -1 0 0 + 179 284 254 284 9999 9999 +-6 +6 179 257 254 269 +2 2 0 0 -1 10 0 4 0.000 0 0 0 + 254 269 254 257 179 257 179 269 254 269 9999 9999 +2 1 0 1 -1 10 0 0 0.000 -1 0 0 + 179 269 254 269 9999 9999 +-6 +6 179 242 254 254 +2 2 0 0 -1 10 0 4 0.000 0 0 0 + 254 254 254 242 179 242 179 254 254 254 9999 9999 +2 1 0 1 -1 10 0 0 0.000 -1 0 0 + 179 254 254 254 9999 9999 +-6 +6 179 227 254 239 +2 2 0 0 -1 10 0 4 0.000 0 0 0 + 254 239 254 227 179 227 179 239 254 239 9999 9999 +2 1 0 1 -1 10 0 0 0.000 -1 0 0 + 179 239 254 239 9999 9999 +-6 +6 179 212 254 224 +2 2 0 0 -1 10 0 4 0.000 0 0 0 + 254 224 254 212 179 212 179 224 254 224 9999 9999 +2 1 0 1 -1 10 0 0 0.000 -1 0 0 + 179 224 254 224 9999 9999 +-6 +6 179 197 254 209 +2 2 0 0 -1 10 0 4 0.000 0 0 0 + 254 209 254 197 179 197 179 209 254 209 9999 9999 +2 1 0 1 -1 10 0 0 0.000 -1 0 0 + 179 209 254 209 9999 9999 +-6 +6 179 182 254 194 +2 2 0 0 -1 10 0 4 0.000 0 0 0 + 254 194 254 182 179 182 179 194 254 194 9999 9999 +2 1 0 1 -1 10 0 0 0.000 -1 0 0 + 179 194 254 194 9999 9999 +-6 +6 179 167 254 179 +2 2 0 0 -1 10 0 4 0.000 0 0 0 + 254 179 254 167 179 167 179 179 254 179 9999 9999 +2 1 0 1 -1 10 0 0 0.000 -1 0 0 + 179 179 254 179 9999 9999 +-6 +6 269 347 344 359 +2 2 0 0 -1 10 0 4 0.000 0 0 0 + 344 359 344 347 269 347 269 359 344 359 9999 9999 +2 1 0 1 -1 10 0 0 0.000 -1 0 0 + 269 359 344 359 9999 9999 +-6 +6 269 317 344 329 +2 2 0 0 -1 10 0 4 0.000 0 0 0 + 344 329 344 317 269 317 269 329 344 329 9999 9999 +2 1 0 1 -1 10 0 0 0.000 -1 0 0 + 269 329 344 329 9999 9999 +-6 +6 269 332 344 344 +2 2 0 0 -1 10 0 4 0.000 0 0 0 + 344 344 344 332 269 332 269 344 344 344 9999 9999 +2 1 0 1 -1 10 0 0 0.000 -1 0 0 + 269 344 344 344 9999 9999 +-6 +6 269 287 344 299 +2 2 0 0 -1 10 0 4 0.000 0 0 0 + 344 299 344 287 269 287 269 299 344 299 9999 9999 +2 1 0 1 -1 10 0 0 0.000 -1 0 0 + 269 299 344 299 9999 9999 +-6 +6 269 272 344 284 +2 2 0 0 -1 10 0 4 0.000 0 0 0 + 344 284 344 272 269 272 269 284 344 284 9999 9999 +2 1 0 1 -1 10 0 0 0.000 -1 0 0 + 269 284 344 284 9999 9999 +-6 +6 269 257 344 269 +2 2 0 0 -1 10 0 4 0.000 0 0 0 + 344 269 344 257 269 257 269 269 344 269 9999 9999 +2 1 0 1 -1 10 0 0 0.000 -1 0 0 + 269 269 344 269 9999 9999 +-6 +6 269 242 344 254 +2 2 0 0 -1 10 0 4 0.000 0 0 0 + 344 254 344 242 269 242 269 254 344 254 9999 9999 +2 1 0 1 -1 10 0 0 0.000 -1 0 0 + 269 254 344 254 9999 9999 +-6 +6 269 227 344 239 +2 2 0 0 -1 10 0 4 0.000 0 0 0 + 344 239 344 227 269 227 269 239 344 239 9999 9999 +2 1 0 1 -1 10 0 0 0.000 -1 0 0 + 269 239 344 239 9999 9999 +-6 +6 269 212 344 224 +2 2 0 0 -1 10 0 4 0.000 0 0 0 + 344 224 344 212 269 212 269 224 344 224 9999 9999 +2 1 0 1 -1 10 0 0 0.000 -1 0 0 + 269 224 344 224 9999 9999 +-6 +6 269 197 344 209 +2 2 0 0 -1 10 0 4 0.000 0 0 0 + 344 209 344 197 269 197 269 209 344 209 9999 9999 +2 1 0 1 -1 10 0 0 0.000 -1 0 0 + 269 209 344 209 9999 9999 +-6 +6 269 182 344 194 +2 2 0 0 -1 10 0 4 0.000 0 0 0 + 344 194 344 182 269 182 269 194 344 194 9999 9999 +2 1 0 1 -1 10 0 0 0.000 -1 0 0 + 269 194 344 194 9999 9999 +-6 +6 269 167 344 179 +2 2 0 0 -1 10 0 4 0.000 0 0 0 + 344 179 344 167 269 167 269 179 344 179 9999 9999 +2 1 0 1 -1 10 0 0 0.000 -1 0 0 + 269 179 344 179 9999 9999 +-6 +6 269 362 344 374 +2 2 0 0 -1 10 0 4 0.000 0 0 0 + 344 374 344 362 269 362 269 374 344 374 9999 9999 +2 1 0 1 -1 10 0 0 0.000 -1 0 0 + 269 374 344 374 9999 9999 +-6 +6 269 377 344 389 +2 2 0 0 -1 10 0 4 0.000 0 0 0 + 344 389 344 377 269 377 269 389 344 389 9999 9999 +2 1 0 1 -1 10 0 0 0.000 -1 0 0 + 269 389 344 389 9999 9999 +-6 +6 269 302 344 314 +2 2 0 0 -1 10 0 4 0.000 0 0 0 + 344 314 344 302 269 302 269 314 344 314 9999 9999 +2 1 0 1 -1 10 0 0 0.000 -1 0 0 + 269 314 344 314 9999 9999 +-6 +2 1 0 1 -1 0 0 0 0.000 -1 0 0 + 89 59 434 59 9999 9999 +2 1 0 1 -1 0 0 0 0.000 -1 0 0 + 89 524 434 524 9999 9999 +2 2 0 2 -1 0 0 0 0.000 0 0 0 + 479 554 479 29 59 29 59 554 479 554 9999 9999 +2 1 0 1 -1 0 0 0 0.000 -1 1 1 + 0 0 1.000 4.000 8.000 + 0 0 1.000 4.000 8.000 + 494 74 494 494 9999 9999 +2 1 0 1 -1 0 0 0 0.000 -1 1 1 + 0 0 1.000 4.000 8.000 + 0 0 1.000 4.000 8.000 + 494 494 494 527 9999 9999 +2 1 0 1 -1 0 0 0 0.000 -1 1 1 + 0 0 1.000 4.000 8.000 + 0 0 1.000 4.000 8.000 + 509 59 509 89 9999 9999 +2 1 0 1 -1 0 0 0 0.000 -1 1 1 + 0 0 1.000 4.000 8.000 + 0 0 1.000 4.000 8.000 + 524 29 524 74 9999 9999 +2 1 0 1 -1 0 0 0 0.000 -1 1 1 + 0 0 1.000 4.000 8.000 + 0 0 1.000 4.000 8.000 + 524 494 524 554 9999 9999 +2 1 0 1 -1 0 0 0 0.000 -1 1 1 + 0 0 1.000 4.000 8.000 + 0 0 1.000 4.000 8.000 + 539 29 539 554 9999 9999 +2 1 0 1 -1 0 0 0 0.000 -1 1 1 + 0 0 1.000 4.000 8.000 + 0 0 1.000 4.000 8.000 + 89 569 434 569 9999 9999 +2 1 0 1 -1 0 0 0 0.000 -1 1 1 + 0 0 1.000 4.000 8.000 + 0 0 1.000 4.000 8.000 + 59 584 479 584 9999 9999 +2 1 1 1 -1 0 0 0 4.000 -1 0 0 + 425 89 515 89 9999 9999 +2 1 1 1 -1 0 0 0 4.000 -1 0 0 + 431 59 515 59 9999 9999 +2 1 0 1 -1 0 0 0 0.000 -1 1 0 + 0 0 1.000 4.000 8.000 + 449 59 449 74 9999 9999 +2 1 0 1 -1 0 0 0 0.000 -1 1 0 + 0 0 1.000 4.000 8.000 + 449 104 449 89 9999 9999 +2 1 0 1 -1 0 0 0 0.000 -1 1 0 + 0 0 1.000 4.000 8.000 + 329 158 344 158 9999 9999 +2 1 0 1 -1 0 0 0 0.000 -1 1 0 + 0 0 1.000 4.000 8.000 + 374 158 359 158 9999 9999 +2 2 0 0 -1 10 0 5 0.000 0 0 0 + 434 524 434 512 89 512 89 524 434 524 9999 9999 +2 2 0 0 -1 10 0 5 0.000 0 0 0 + 434 59 434 47 89 47 89 59 434 59 9999 9999 +2 2 1 1 -1 10 0 0 4.000 0 0 0 + 434 164 434 74 89 74 89 164 434 164 9999 9999 +2 2 1 1 -1 10 0 0 4.000 0 0 0 + 434 389 434 164 359 164 359 389 434 389 9999 9999 +2 2 1 1 -1 10 0 0 4.000 0 0 0 + 164 389 164 164 89 164 89 389 164 389 9999 9999 +2 2 0 1 -1 10 0 0 0.000 0 0 0 + 254 389 254 164 179 164 179 389 254 389 9999 9999 +2 2 0 1 -1 10 0 0 0.000 0 0 0 + 344 389 344 164 269 164 269 389 344 389 9999 9999 +2 1 0 1 -1 0 0 0 0.000 -1 1 0 + 0 0 1.000 4.000 8.000 + 155 284 155 299 9999 9999 +2 1 0 1 -1 0 0 0 0.000 -1 1 0 + 0 0 1.000 4.000 8.000 + 155 329 155 314 9999 9999 +2 1 0 1 -1 0 0 0 0.000 -1 1 1 + 0 0 1.000 4.000 8.000 + 0 0 1.000 4.000 8.000 + 179 158 254 158 9999 9999 +2 1 0 1 -1 0 0 0 0.000 -1 1 1 + 0 0 1.000 4.000 8.000 + 0 0 1.000 4.000 8.000 + 365 164 365 389 9999 9999 +2 1 0 2 -1 0 0 0 0.000 -1 0 0 + 170 164 170 389 9999 9999 +2 1 0 2 -1 0 0 0 0.000 -1 0 0 + 179 308 254 308 9999 9999 +2 1 0 2 -1 0 0 0 0.000 -1 0 0 + 260 164 260 389 9999 9999 +2 1 0 2 -1 0 0 0 0.000 -1 0 0 + 350 164 350 389 9999 9999 +2 2 1 1 -1 0 0 0 4.000 0 0 0 + 89 389 89 494 434 494 434 389 89 389 9999 9999 +4 1 1 10 0 -1 0 0.00000 4 13 32 269 566 bodywd +4 1 1 10 0 -1 0 0.00000 4 13 36 269 581 paperwd +4 1 1 10 0 -1 0 1.57080 4 13 24 521 524 botmg +4 1 1 10 0 -1 0 1.57080 4 13 49 491 509 footlineskip +4 1 1 10 0 -1 0 1.57080 4 13 28 491 284 bodyht +4 1 1 10 0 -1 0 1.57080 4 13 32 536 284 paperht +4 1 1 10 0 -1 0 1.57080 4 13 53 506 74 headlineskip +4 1 1 10 0 -1 0 1.57080 4 13 24 521 53 topmg +4 1 1 10 0 -1 0 0.00000 4 13 30 449 86 topskip +4 1 1 10 0 -1 0 0.00000 4 13 27 350 155 colsep +4 1 1 10 0 -1 0 0.00000 4 13 27 269 119 topbox +4 1 1 10 0 -1 0 0.00000 4 13 27 269 464 botbox +4 1 1 10 0 -1 0 0.00000 4 13 32 269 518 footline +4 1 1 10 0 -1 0 0.00000 4 13 36 254 56 headline +4 1 1 10 0 -1 0 0.00000 4 13 37 218 266 column 0 +4 1 1 10 0 -1 0 0.00000 4 13 37 305 266 column 1 +4 1 1 10 0 -1 0 0.00000 4 13 28 125 221 leftbox +4 1 1 10 0 -1 0 0.00000 4 13 31 218 338 caption +4 1 1 10 0 -1 0 0.00000 4 13 14 215 374 illo +4 1 1 10 0 -1 0 0.00000 4 13 25 215 152 colwd +4 1 1 10 0 -1 0 1.57080 4 13 21 374 284 colht +4 1 1 10 0 -1 0 0.00000 4 13 33 407 251 rightbox +4 1 1 10 0 -1 0 1.57080 4 13 29 152 308 capsep diff --git a/Master/texmf-dist/source/plain/pdcmac/pdcadobe.dtx b/Master/texmf-dist/source/plain/pdcmac/pdcadobe.dtx new file mode 100644 index 00000000000..443b766d82c --- /dev/null +++ b/Master/texmf-dist/source/plain/pdcmac/pdcadobe.dtx @@ -0,0 +1,609 @@ +% pdcadobe.dtx -- documentation & source for pdcadobe.tex -*-tex-*- + +%%%@TeX-document-file { +%%% title = "PDCADOBE -- Formatting Macros", +%%% filename = "$texmf/doc/plain/pdcmac/pdcadobe.dtx", +%%% version = "$Revision: 1.3 $", +%%% package = "pdcmac 1.0", +%%% date = "$Date: 1995/03/30 16:07:31 $", +%%% 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 file pdcadobe.tex. +%%% Running plain TeX on this file produces both the +%%% definitions file and the printed documentation.", +%%% copyright = "Copyright (c) 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" +%%%} + +%{{{ pdcadobe +%{{{ preamble +\relax +\input pdccode + +\document +\rcs$Id: pdcadobe.dtx,v 1.3 1995/03/30 16:07:31 pdc Exp $\endrcs + +\codefile{pdcadobe.tex} +%}}} preamble +%{{{ introduction + +\author{P. Damian Cugley} +\title{PDCAdobe---Macros for using Adobe fonts} +\section{Introduction} + + This document describes |pdcadobe.tex|, a collection of macros + for using Adobe's Standard Roman character set, via DVIPS's + variation on the \TeX\ Text encoding. + +\notepar + You will need to use a different strategy if your PostScript + fonts adhere strictly to the \TeX\ Text conventions (the + conventions of Computer Modern Roman, described in {\it\TeX + book}\/ Appendix~F, and called OT1 by the \LaTeX~3 team), such + as the fonts generated with Fontinst. +\endnotepar + +\subsec{New text symbols} + + The new characters now available in text are: +$$\halign{\indent\tt\char`\\#1\hfil&\quad#\hfil\cr + quotesingle& typewriter-style apostrophe ({\tt\char"0D })\cr + quotedouble& typewriter-style double apostrophe ({\tt"})\cr + asciicircum& ASCII circumflex\cr + asciitilde& ASCII tilde\cr +}$$ + + +\subsec{Use of the Symbol font} + + The assumption is that one of the resons for using PostScript + fonts is that, if you stick to the `Adobe~35', the resulting + PostScript files are much smaller because no font bitmaps need + to be downloaded. On this assumption, Adobe's Symbol font is + used whenever possible, even when the Computer Modern symbol is + arguably prettier. + + The Symbol font will need to have its own maths family, which by + convention this file expects to find defined as |\asyfam|. + +\subsec{Composite letters} + +\setbox0=\hbox{accent} +\edef\\{\vrule height\the\ht0 depth\the\dp0 width\the\wd0 \relax } + + Composite letters are those made from some base letter and a + {\it mark}, for example {\it\'e}, {\it\"u}.\footnote*{`Composite + letters' is a euphemism for what English speakers usually refer + to as `\\ed letters', since the word `\\' tends to provoke + lectures to the effect that composite letters are not considered + to be `\\ed' in many of the lanuages in which they are used.} + In the Adobe Standard Roman character set, and hence in + |afm2tfm|'s encoding, the composite letters of ISO 8859--1 are + included as separate glyphs. These glyphs are accessed using + ligatures between mark glyphs and base letters (so that |^^13e| + in the manuscript file produces `\'e'). Unfortunately, + exploiting this is tricky if we also want to allow for composite + glyphs {\it not} included in the PostScript fonts. + + The approach taken in these definitions is that \TeX's composite + letter commands (|\'|, |\"|, and friends) are left unchanged, so + that `|\'e|' works through \TeX's |\|\\ command. The magic + glyphs are available as commands with names like |\acuteglyph| + or via the Latin-1 special symbols, so that `|\acuteglyph e|' or + `|^^b4e|' (which might liik like `{\tt\char"13 e}' on the screen + if your computer uses Latin-1) produces `\'e' as a single glyph + (which might mean tha mark is better aligned). Finally, the + Latin-1 composite letters generate the single glyphs vial + ligatures, so that `|^^e9|' (which may well look like `{\tt\'e}' + on the screen) expands to `|\acuteglyph e|' and hence `\'e'. + +\subsec{About this document} + + The definitions file and the printed documentation are both in + |pdcadobe.dtx|, a `documented \TeX\ macros' file\footnote*{The + \LaTeX~2e distribution uses files with the `|dtx|' suffix for + similar purposes.} which, when processed by plain \TeX, + generates a fresh copy of |pdcadobe.tex| in the current directory + in addition to the |dvi| file. This ensures that the printed + documentation and the code it describes are identical. The + |dtx| file uses the macros in |pdccode.tex|. + +%}}} introduction +%{{{ File identification +\section{File identification} + + Nowadays, macro files start with some comments identifying the + file. + +\code + \|\% pdcadobe.tex \fileversion~\filedate~-- macros for Adobe style fonts + | + |%%%@TeX-definition-file { + |%%% filename = "$texmf/tex/plain/pdcmac/pdcadobe.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 = "Formatting macros for Adobe-style fonts. + |%%% This file was generated by running + \|\%\%\%~~~~~~~~~~~~~~~~~~~plain TeX on \jobname.dtx", + |%%% copyright = "Copyright (c) 1991-1995 P. Damian Cugley", + |%%% copying = "DO NOT DISTRIBUTE THIS FILE. + \|\%\%\%~~~~~~~~~~~~~~~~~~~Distribute \jobname.dtx only as part of the + |%%% package it came in.", + |%%% dependencies = "", + |%%% } + | + \|\\message\{\fileversion~\} + | +\endcode +%}}} file id +%{{{ chardefs +\section{Characters available in all styles} + + The following characters are in the fonts generated by + |afm2tfm|, so are available in all styles. +\code + |\chardef\quotesingle="0D + |\chardef\quotedouble="22 + |\chardef\_="5F + |\chardef\asciicircum="80 + |\chardef\asciitilde="81 + |\chardef\cents="A2 + |\chardef\pounds="A3 + |\chardef\fractionslash="A4 + |\chardef\yen="A5 + |\chardef\florin="A6 + |\chardef\S="A7 + |\chardef\currency="A8 + |\chardef\lguillemet="AB + |\chardef\dag="B2 + |\chardef\ddag="B3 + |\chardef\gbdecimal="B4 + |\chardef\P="B6 + |\chardef\bullet="B7 + |\chardef\quotesinglebase="B8 + |\chardef\quotedblbase="B9 + |\chardef\rguillemet="BB + |\chardef\ellipsis="BC \def\dots{\ellipsis\thinspace} + |\chardef\permille="BD + |\chardef\orda="E3 + |\chardef\ordo="EB +\endcode + Some glyphs, like |\fractionslash| and |\gbdecimal| may well be + used in maths mode, but are defined using |\chardef| to allow + them to be used in text as well. + + The definition of |\dots| adds the thin space that is included + in plain \TeX's |\dots|, so that `|\dots,|' will have a thin + space between the third full stop and the comma. + +\subsec{Maths stuff} + + These symbols are available in maths mode, coming from the |\rm| + font (fam~0). +\code + |\mathchardef\backslash="205C + |\edef\lbrace{\delimiter"407B308} \let\{=\lbrace \mathcode`\{="407B + |\mathcode`\|="707C \mathchardef\mid="307C + |\edef\rbrace{\delimiter"507D309} \let\}=\rbrace \mathcode`\}="507D + |\mathchardef\sim="3081 + |\mathchardef\cdot="20B4 + |\mathchardef\bullet="20B7 + |\mathchardef\ldots="60BC +\endcode + There {\it are} extensible braces in the Adobe Symbol font, + which I~would have used for the |\lbrace| and |\rbrace| + commands. Unfortunately, the TFM file generated with |afm2tfm| + seems to lack the special information that makes extensible + characters work, so the |cmex10| glyphs must be used instead. + +\subsec{Marks for composite letters} + + Some common accented letters can be got by printing the accent + glyph before the letter glyph. However not all combinations + will work, so I~have left plain \TeX's definitions in place. + + For later reference, the glyphs used for the accents are given + names. +\code + |\chardef\graveglyph="12 + |\chardef\acuteglyph="13 + |\chardef\hookglyph="14 + |\chardef\breveglyph="15 + |\chardef\macronglyph="16 + |\chardef\ringglyph="17 + |\chardef\cedillaglyph="18 + |\chardef\circumglyph="5E + |\chardef\tildeglyph="7E + |\chardef\twodotsglyph="7F + |\chardef\dotglyph="C7 + |\chardef\hungarianglyph="CD + |\chardef\ogonekglyph="CE +\endcode + + + Some special letters and marks have been moved to new slots. +\code + |\chardef\AA="C8 \chardef\aa="98 + |\chardef\L="E8 \chardef\l="F8 + |\def\.#1{\accent\dotglyph #1} + |\def\H#1{\accent\hungarianglyph"CD #1} +\endcode + +%}}} chardefs +%{{{ adobe sy +\section{Adobe Symbol font characters} + + Most of Adobe's Symbol font's glyphs exist already in one of the + maths fonts. Nevertheless I~think it makes sense to use them + whenever possible, because if it so happens that none of the + glyphs in the maths fonts are used, the bitmaps for the fonts + may be omitted from the PostScript file, making it much smaller. + For these definitions to work, there must be a family |\asyfam| + and font nickname |\asy|. + +\code + |\ifx\asyfam\UNDEFINED + | \newfam\asyfam + |\fi +\endcode + +\subsec{Extracting the fam name} + +\code + |\edef\\{\ifcase\asyfam 0\or 1\or 2\or 3\or 4\or 5\or 6\or 7\or + | 8\or 9\or A\or B\or C\or D\or E\or F\fi + |} +\endcode + + Where plain \TeX's definition uses glyphs from the roman font, + I~have let the definition stand. +\code + |\mathchardef\forall="0\\22 + |\mathchardef\exists="0\\24 + |\mathchardef\suchthat="0\\27 + |\mathcode`*="2\\2A + |\mathcode`,="6\\2C + |\mathcode`-="2\\2D + |\mathcode`.="2\\2E + |\mathcode`/="2\\2F + |\mathcode`<="3\\3C + |\mathcode`>="3\\3E +\smallbreak + |\mathchardef\cong="3\\40 + |\mathchardef\Alpha="0\\41 + |\mathchardef\Beta="0\\42 + |\mathchardef\Chi="0\\43 + |\mathchardef\Delta="0\\44 + |\mathchardef\Epsilon="0\\45 + |\mathchardef\Phi="0\\46 + |\mathchardef\Gamma="0\\47 + |\mathchardef\Eta="0\\48 + |\mathchardef\Iota="0\\49 + |\mathchardef\vartheta="0\\4A + |\mathchardef\Kappa="0\\4B + |\mathchardef\Lambda="0\\4C + |\mathchardef\Mu="0\\4D + |\mathchardef\Ni="0\\4E + |\mathchardef\Omicron="0\\4F +\smallbreak + |\mathchardef\Pi="0\\50 + |\mathchardef\Theta="0\\51 + |\mathchardef\Rho="0\\52 + |\mathchardef\Sigma="0\\53 + |\mathchardef\Tau="0\\54 + |\mathchardef\varUpsilon="0\\55 + |\mathchardef\varsigma="0\\56 + |\mathchardef\Omega="0\\57 + |\mathchardef\Xi="0\\58 + |\mathchardef\Psi="0\\59 + |\mathchardef\Zeta="0\\5A +% + |\mathchardef\therefore="3\\5C +% + |\mathchardef\perp="3\\5E +% +\smallbreak +% + |\mathchardef\alpha="0\\61 + |\mathchardef\beta="0\\62 + |\mathchardef\chi="0\\63 + |\mathchardef\delta="0\\64 + |\mathchardef\epsilon="0\\65 + |\mathchardef\phi="0\\66 + |\mathchardef\gamma="0\\67 + |\mathchardef\eta="0\\68 + |\mathchardef\iota="0\\69 + |\mathchardef\varphi="0\\6A + |\mathchardef\kappa="0\\6B + |\mathchardef\lambda="0\\6C + |\mathchardef\mu="0\\6D + |\mathchardef\ni="0\\6E + |\mathchardef\omicron="0\\6F +\smallbreak + |\mathchardef\pi="0\\70 + |\mathchardef\theta="0\\71 + |\mathchardef\rho="0\\72 + |\mathchardef\sigma="0\\73 + |\mathchardef\tau="0\\74 + |\mathchardef\upsilon="0\\75 + |\mathchardef\varpi="0\\76 + |\mathchardef\omega="0\\77 + |\mathchardef\xi="0\\78 + |\mathchardef\psi="0\\79 + |\mathchardef\zeta="0\\7A + |\mathchardef\sim="3\\7E +% +\smallbreak + |\mathchardef\Upsilon="0\\A1 + |\mathcode`'="0\\A2 \mathchardef\minutes="0\\A2 + |\mathchardef\leq="3\\A3 \let\le=\leq + |\mathchardef\fractionslash="0\\A4 + |\mathchardef\infinity="0\\A5 +% + |\mathchardef\clubsuit="0\\A7 + |\mathchardef\diamondsuit="0\\A8 + |\mathchardef\heartsuit="0\\A9 + |\mathchardef\spadesuit="0\\AA + |\mathchardef\leftrightarrow="3\\AB + |\mathchardef\leftarrow="3\\AC \let\gets=\rightarrow + |\mathchardef\uparrow="3\\AD + |\mathchardef\rightarrow="3\\AE \let\to=\rightarrow + |\mathchardef\downarrow="3\\AF +\smallskip + |\mathchardef\degrees="0\\B0 + |\mathchardef\pm="2\\B1 + |\mathchardef\seconds="0\\B2 + |\mathchardef\geq="3\\B3 \let\ge=\geq + |\mathchardef\times="2\\B4 + |\mathchardef\propto="3\\B5 + |\mathchardef\partial="0\\B6 +% + |\mathchardef\div="2\\B8 + |\mathchardef\neq="3\\B9 \let\ne=\neq + |\mathchardef\equiv="3\\BA + |\mathchardef\approx="3\\BB + |\mathchardef\ldots="6\\BC + |\edef\arrowvert{\delimiter"0\\BD33C } + |\mathchardef\relbar"3\\BE + |\edef\crlf{\noexpand\mathexbox\\BF} +\smallbreak + |\mathchardef\aleph="0\\C0 + |\mathchardef\Im="0\\C1 + |\mathchardef\Re="0\\C2 + |\mathchardef\wp="0\\C3 + |\mathchardef\otimes="2\\C4 + |\mathchardef\oplus="2\\C5 + |\mathchardef\emptyset="0\\C6 + |\mathchardef\cap="2\\C7 + |\mathchardef\cup="2\\C8 + |\mathchardef\supset="3\\C9 + |\mathchardef\supseteq="3\\CA + |\mathchardef\nsubset="3\\CB + |\mathchardef\subset="3\\CC + |\mathchardef\subseteq="3\\CD + |\mathchardef\in="3\\CE + |\mathchardef\nin="3\\CF +\smallbreak + |\mathchardef\angle="0\\D0 + |\mathchardef\nabla="0\\D1 + |\edef\registered{\noexpand\mathhexbox\\D2} + |\edef\copyright{\noexpand\mathhexbox\\D3} + |\edef\trademark{\noexpand\mathhexbox\\D4} + |\mathchardef\prod="1\\D5 + |\edef\sqrt{\radical"\\D6370 } + |\mathchardef\cdot="2\\D7 + |\mathchardef\neg="0\\D8 \let\lnot=\neg + |\mathchardef\wedge="3\\D9 \let\land=\wedge + |\mathchardef\vee="3\\DA \let\lor=\vee + |\mathchardef\Leftrightarrow="3\\DB + |\mathchardef\Leftarrow="3\\DC + |\mathchardef\Uparrow="3\\DD + |\mathchardef\Rightarrow="3\\DE + |\mathchardef\Downarrow="3\\DF +\smallbreak + |\mathchardef\diamond="3\\E0 + |\edef\langle{\delimiter"4\\E130A } + |\mathchardef\sum="1\\E5 + |\edef\rangle{\delimiter"5\\F130B } +\endcode + (I haven't bothered redefining those delimiters based on parts of + large delimiters.) + +%}}} adobe sy +%{{{ ISO 8859-1 support +\section{ISO 8859--1 input} + + ISO~8859--1 (Latin-1) is the de facto standard character + encoding in a large numebr of countries, and so we shall try to + make a reasonable number of Latin-1 characters available. + +\subsec{Symbols} + + Those characters whose code is the same as the code of the + corresponding glyph are left alone (with catcode~12). For + example, |^^a3| (pounds sterling) is left alone. + + Those that have an equivalent |\chardef| (or |\mathchardef|) + name are defined with |\let| (for example, |^^a4| is |\let| to + |\currency|). Those with an equivalent standard ligature use + that ligature. These conventions hopefully insulate these + definitions against changes in the encoding. + + The characters that represent marks for composite + letters\footnote*{This phrase is used on the grounds that the + word {\it accent} tends to provoke lectures on ways in which + many composite letters do {\it not} represent accents in the + languages in which they are used.} will form ligatures with the + following letter---one may write `{\tt\char"7F u\char"18 c}' to + get `\"u\c c'. + + I don't use |\declareactivechar| on these because they would not + work properly in verbatim text with catcode~12. (Extending + verbatim text to include Latin-1 will take a few definitions + along the same lines as |\ttlq| etc.). +\code + |\catcode`^^a0\active \let^^a0=~ + |\catcode`^^a1\active \def^^a1{!`} +% A2 +% A3 + |\catcode`^^a4\active \let^^a4=\currency +% A5 +% A6 XXX +% A7 + |\catcode`^^a8\active \let^^a8=\twodotsglyph + |\catcode`^^a9\active \let^^a9=\copyright + |\catcode`^^aa\active \let^^aa=\orda +% AB + |\catcode`^^ac\active \let^^ac=\lnot + |\catcode`^^ad\active \let^^ad=\- + |\catcode`^^ae\active \let^^ae=\registered + |\catcode`^^af\active \let^^af=\macronglyph +\smallbreak + |\catcode`^^b0\active \let^^b0=\degrees + |\catcode`^^b1\active \let^^b1=\pm + |\catcode`^^b2\active \def^^b2{^2} + |\catcode`^^b3\active \def^^b3{^3} + |\catcode`^^b4\active \let^^b4=\acuteglyph + |\catcode`^^b5\active \let^^b5=\mu +% B6 + |\catcode`^^b7\active \let^^b7=\gbdecimal + |\catcode`^^b8\active \let^^b8=\cedillaglyph + |\catcode`^^b9\active \def^^b9{^1} + |\catcode`^^ba\active \let^^ba=\ordo +% BB + |\catcode`^^bc\active \def^^bc{\frac14} + |\catcode`^^bd\active \def^^bd{\frac12} + |\catcode`^^be\active \def^^be{\frac34} + |\catcode`^^bf\active \def^^bf{?`} +\smallbreak + |\catcode`^^d7\active \let^^d7=\times + |\catcode`^^f7\active \let^^f7=\div +\endcode + +\subsec{Composite letters} + + The composite letters acer accessed via ligatures so that they + are immune to some possible changes in encoding. +\code + |\catcode`^^c0\active \def^^c0{\graveglyph A} + |\catcode`^^c1\active \def^^c1{\acuteglyph A} + |\catcode`^^c2\active \def^^c2{\circumglyph A} + |\catcode`^^c3\active \def^^c3{\tildeglyph A} + |\catcode`^^c4\active \def^^c4{\twodotsglyph A} + |\catcode`^^c5\active \def^^c5{\ringglyph A} + |\catcode`^^c6\active \let^^c6=\AE + |\catcode`^^c7\active \def^^c7{\cedillaglyph C} + |\catcode`^^c8\active \def^^c8{\graveglyph E} + |\catcode`^^c9\active \def^^c9{\acuteglyph E} + |\catcode`^^ca\active \def^^ca{\circumglyph E} + |\catcode`^^cb\active \def^^cb{\twodotsglyph E} + |\catcode`^^cc\active \def^^cc{\graveglyph I} + |\catcode`^^cd\active \def^^cd{\acuteglyph I} + |\catcode`^^ce\active \def^^ce{\circumglyph I} + |\catcode`^^cf\active \def^^cf{\twodotsglyph I} +\smallbreak +% |\catcode`^^d0\active \chardef^^d0="?? % DH + |\catcode`^^d1\active \def^^d1{\tildeglyph N} + |\catcode`^^d2\active \def^^d2{\graveglyph O} + |\catcode`^^d3\active \def^^d3{\acuteglyph O} + |\catcode`^^d4\active \def^^d4{\circumglyph O} + |\catcode`^^d5\active \def^^d5{\tildeglyph O} + |\catcode`^^d6\active \def^^d6{\twodotsglyph O} + |\catcode`^^d8\active \let^^d8=\O + |\catcode`^^d9\active \def^^d9{\graveglyph U} + |\catcode`^^da\active \def^^da{\acuteglyph U} + |\catcode`^^db\active \def^^db{\circumglyph U} + |\catcode`^^dc\active \def^^dc{\twodotsglyph U} + |\catcode`^^dd\active \def^^dd{\acuteglyph Y} +% |\catcode`^^de\active \def^^de{TH} + |\catcode`^^df\active \let^^df=\ss +\smallbreak + |\catcode`^^e0\active \def^^e0{\acuteglyph a} + |\catcode`^^e1\active \def^^e1{\graveglyph a} + |\catcode`^^e2\active \def^^e2{\circumglyph a} + |\catcode`^^e3\active \def^^e3{\tildeglyph a} + |\catcode`^^e4\active \def^^e4{\twodotsglyph a} + |\catcode`^^e5\active \def^^e5{\ringglyph a} + |\catcode`^^e6\active \let^^e6=\ae + |\catcode`^^e7\active \def^^e7{\cedillaglyph c} + |\catcode`^^e8\active \def^^e8{\graveglyph e} + |\catcode`^^e9\active \def^^e9{\acuteglyph e} + |\catcode`^^ea\active \def^^ea{\circumglyph e} + |\catcode`^^eb\active \def^^eb{\twodotsglyph e} + |\catcode`^^ec\active \def^^ec{\graveglyph i} + |\catcode`^^ed\active \def^^ed{\acuteglyph i} + |\catcode`^^ee\active \def^^ee{\circumglyph i} + |\catcode`^^ef\active \def^^ef{\twodotsglyph i} +\smallbreak +% |\catcode`^^f0\active \def^^f0{dh} + |\catcode`^^f1\active \def^^f1{\tildeglyph n} + |\catcode`^^f2\active \def^^f2{\graveglyph o} + |\catcode`^^f3\active \def^^f3{\acuteglyph o} + |\catcode`^^f4\active \def^^f4{\circumglyph o} + |\catcode`^^f5\active \def^^f5{\tildeglyph o} + |\catcode`^^f6\active \def^^f6{\twodotsglyph o} + |\catcode`^^f8\active \let^^f8=\o + |\catcode`^^f9\active \def^^f9{\graveglyph u} + |\catcode`^^fa\active \def^^fa{\acuteglyph u} + |\catcode`^^fb\active \def^^fb{\circumglyph u} + |\catcode`^^fc\active \def^^fc{\twodotsglyph u} + |\catcode`^^fd\active \def^^fd{\acuteglyph y} +% |\catcode`^^fe\active \def^^fe{th} + |\catcode`^^ff\active \def^^ff{\twodotsglyph y} +\endcode + +%}}} ISO 8859-1 support +%{{{ other hacks +\section{Modifications to other PDCMAC macros} + + + For typewriter text, less drastic revision of the string is + necessary. +\code + |\def\ttminus{--{}} + |\let\ttcircum=\asciicircum + |\let\tttilde=\asciitilde +\endcode + Note that ASCII quote and backquote characters are still got + from accents because a `neutral' quotation mark is not adequate + for computer listings where both sorts of `quote mark' might be + appear, with different meanings. + + +%}}} other hacks +\endcodefile +\enddocument +\bye +%}}} pdcadobe.dtx + +%Local variables: +%fill-prefix: "\t" +%fold-folded-p: t +%End: + diff --git a/Master/texmf-dist/source/plain/pdcmac/pdcadobe.tex b/Master/texmf-dist/source/plain/pdcmac/pdcadobe.tex new file mode 100644 index 00000000000..909cec7dfd2 --- /dev/null +++ b/Master/texmf-dist/source/plain/pdcmac/pdcadobe.tex @@ -0,0 +1,300 @@ +% pdcadobe.tex 1.3 1995/03/30 -- macros for Adobe style fonts + +%%%@TeX-definition-file { +%%% filename = "$texmf/tex/plain/pdcmac/pdcadobe.tex", +%%% version = "1.3", +%%% date = "1995/03/30", +%%% 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 = "Formatting macros for Adobe-style fonts. +%%% This file was generated by running +%%% plain TeX on pdcadobe.dtx", +%%% copyright = "Copyright (c) 1991-1995 P. Damian Cugley", +%%% copying = "DO NOT DISTRIBUTE THIS FILE. +%%% Distribute pdcadobe.dtx only as part of the +%%% package it came in.", +%%% dependencies = "", +%%% } + +\message{1.3 } + +\chardef\quotesingle="0D +\chardef\quotedouble="22 +\chardef\_="5F +\chardef\asciicircum="80 +\chardef\asciitilde="81 +\chardef\cents="A2 +\chardef\pounds="A3 +\chardef\fractionslash="A4 +\chardef\yen="A5 +\chardef\florin="A6 +\chardef\S="A7 +\chardef\currency="A8 +\chardef\lguillemet="AB +\chardef\dag="B2 +\chardef\ddag="B3 +\chardef\gbdecimal="B4 +\chardef\P="B6 +\chardef\bullet="B7 +\chardef\quotesinglebase="B8 +\chardef\quotedblbase="B9 +\chardef\rguillemet="BB +\chardef\ellipsis="BC \def\dots{\ellipsis\thinspace} +\chardef\permille="BD +\chardef\orda="E3 +\chardef\ordo="EB +\mathchardef\backslash="205C +\edef\lbrace{\delimiter"407B308} \let\{=\lbrace \mathcode`\{="407B +\mathcode`\|="707C \mathchardef\mid="307C +\edef\rbrace{\delimiter"507D309} \let\}=\rbrace \mathcode`\}="507D +\mathchardef\sim="3081 +\mathchardef\cdot="20B4 +\mathchardef\bullet="20B7 +\mathchardef\ldots="60BC +\chardef\graveglyph="12 +\chardef\acuteglyph="13 +\chardef\hookglyph="14 +\chardef\breveglyph="15 +\chardef\macronglyph="16 +\chardef\ringglyph="17 +\chardef\cedillaglyph="18 +\chardef\circumglyph="5E +\chardef\tildeglyph="7E +\chardef\twodotsglyph="7F +\chardef\dotglyph="C7 +\chardef\hungarianglyph="CD +\chardef\ogonekglyph="CE +\chardef\AA="C8 \chardef\aa="98 +\chardef\L="E8 \chardef\l="F8 +\def\.#1{\accent\dotglyph #1} +\def\H#1{\accent\hungarianglyph"CD #1} +\ifx\asyfam\UNDEFINED + \newfam\asyfam +\fi +\edef\\{\ifcase\asyfam 0\or 1\or 2\or 3\or 4\or 5\or 6\or 7\or + 8\or 9\or A\or B\or C\or D\or E\or F\fi +} +\mathchardef\forall="0\\22 +\mathchardef\exists="0\\24 +\mathchardef\suchthat="0\\27 +\mathcode`*="2\\2A +\mathcode`,="6\\2C +\mathcode`-="2\\2D +\mathcode`.="2\\2E +\mathcode`/="2\\2F +\mathcode`<="3\\3C +\mathcode`>="3\\3E +\mathchardef\cong="3\\40 +\mathchardef\Alpha="0\\41 +\mathchardef\Beta="0\\42 +\mathchardef\Chi="0\\43 +\mathchardef\Delta="0\\44 +\mathchardef\Epsilon="0\\45 +\mathchardef\Phi="0\\46 +\mathchardef\Gamma="0\\47 +\mathchardef\Eta="0\\48 +\mathchardef\Iota="0\\49 +\mathchardef\vartheta="0\\4A +\mathchardef\Kappa="0\\4B +\mathchardef\Lambda="0\\4C +\mathchardef\Mu="0\\4D +\mathchardef\Ni="0\\4E +\mathchardef\Omicron="0\\4F +\mathchardef\Pi="0\\50 +\mathchardef\Theta="0\\51 +\mathchardef\Rho="0\\52 +\mathchardef\Sigma="0\\53 +\mathchardef\Tau="0\\54 +\mathchardef\varUpsilon="0\\55 +\mathchardef\varsigma="0\\56 +\mathchardef\Omega="0\\57 +\mathchardef\Xi="0\\58 +\mathchardef\Psi="0\\59 +\mathchardef\Zeta="0\\5A +\mathchardef\therefore="3\\5C +\mathchardef\perp="3\\5E +\mathchardef\alpha="0\\61 +\mathchardef\beta="0\\62 +\mathchardef\chi="0\\63 +\mathchardef\delta="0\\64 +\mathchardef\epsilon="0\\65 +\mathchardef\phi="0\\66 +\mathchardef\gamma="0\\67 +\mathchardef\eta="0\\68 +\mathchardef\iota="0\\69 +\mathchardef\varphi="0\\6A +\mathchardef\kappa="0\\6B +\mathchardef\lambda="0\\6C +\mathchardef\mu="0\\6D +\mathchardef\ni="0\\6E +\mathchardef\omicron="0\\6F +\mathchardef\pi="0\\70 +\mathchardef\theta="0\\71 +\mathchardef\rho="0\\72 +\mathchardef\sigma="0\\73 +\mathchardef\tau="0\\74 +\mathchardef\upsilon="0\\75 +\mathchardef\varpi="0\\76 +\mathchardef\omega="0\\77 +\mathchardef\xi="0\\78 +\mathchardef\psi="0\\79 +\mathchardef\zeta="0\\7A +\mathchardef\sim="3\\7E +\mathchardef\Upsilon="0\\A1 +\mathcode`'="0\\A2 \mathchardef\minutes="0\\A2 +\mathchardef\leq="3\\A3 \let\le=\leq +\mathchardef\fractionslash="0\\A4 +\mathchardef\infinity="0\\A5 +\mathchardef\clubsuit="0\\A7 +\mathchardef\diamondsuit="0\\A8 +\mathchardef\heartsuit="0\\A9 +\mathchardef\spadesuit="0\\AA +\mathchardef\leftrightarrow="3\\AB +\mathchardef\leftarrow="3\\AC \let\gets=\rightarrow +\mathchardef\uparrow="3\\AD +\mathchardef\rightarrow="3\\AE \let\to=\rightarrow +\mathchardef\downarrow="3\\AF +\mathchardef\degrees="0\\B0 +\mathchardef\pm="2\\B1 +\mathchardef\seconds="0\\B2 +\mathchardef\geq="3\\B3 \let\ge=\geq +\mathchardef\times="2\\B4 +\mathchardef\propto="3\\B5 +\mathchardef\partial="0\\B6 +\mathchardef\div="2\\B8 +\mathchardef\neq="3\\B9 \let\ne=\neq +\mathchardef\equiv="3\\BA +\mathchardef\approx="3\\BB +\mathchardef\ldots="6\\BC +\edef\arrowvert{\delimiter"0\\BD33C } +\mathchardef\relbar"3\\BE +\edef\crlf{\noexpand\mathexbox\\BF} +\mathchardef\aleph="0\\C0 +\mathchardef\Im="0\\C1 +\mathchardef\Re="0\\C2 +\mathchardef\wp="0\\C3 +\mathchardef\otimes="2\\C4 +\mathchardef\oplus="2\\C5 +\mathchardef\emptyset="0\\C6 +\mathchardef\cap="2\\C7 +\mathchardef\cup="2\\C8 +\mathchardef\supset="3\\C9 +\mathchardef\supseteq="3\\CA +\mathchardef\nsubset="3\\CB +\mathchardef\subset="3\\CC +\mathchardef\subseteq="3\\CD +\mathchardef\in="3\\CE +\mathchardef\nin="3\\CF +\mathchardef\angle="0\\D0 +\mathchardef\nabla="0\\D1 +\edef\registered{\noexpand\mathhexbox\\D2} +\edef\copyright{\noexpand\mathhexbox\\D3} +\edef\trademark{\noexpand\mathhexbox\\D4} +\mathchardef\prod="1\\D5 +\edef\sqrt{\radical"\\D6370 } +\mathchardef\cdot="2\\D7 +\mathchardef\neg="0\\D8 \let\lnot=\neg +\mathchardef\wedge="3\\D9 \let\land=\wedge +\mathchardef\vee="3\\DA \let\lor=\vee +\mathchardef\Leftrightarrow="3\\DB +\mathchardef\Leftarrow="3\\DC +\mathchardef\Uparrow="3\\DD +\mathchardef\Rightarrow="3\\DE +\mathchardef\Downarrow="3\\DF +\mathchardef\diamond="3\\E0 +\edef\langle{\delimiter"4\\E130A } +\mathchardef\sum="1\\E5 +\edef\rangle{\delimiter"5\\F130B } +\catcode`^^a0\active \let^^a0=~ +\catcode`^^a1\active \def^^a1{!`} +\catcode`^^a4\active \let^^a4=\currency +\catcode`^^a8\active \let^^a8=\twodotsglyph +\catcode`^^a9\active \let^^a9=\copyright +\catcode`^^aa\active \let^^aa=\orda +\catcode`^^ac\active \let^^ac=\lnot +\catcode`^^ad\active \let^^ad=\- +\catcode`^^ae\active \let^^ae=\registered +\catcode`^^af\active \let^^af=\macronglyph +\catcode`^^b0\active \let^^b0=\degrees +\catcode`^^b1\active \let^^b1=\pm +\catcode`^^b2\active \def^^b2{^2} +\catcode`^^b3\active \def^^b3{^3} +\catcode`^^b4\active \let^^b4=\acuteglyph +\catcode`^^b5\active \let^^b5=\mu +\catcode`^^b7\active \let^^b7=\gbdecimal +\catcode`^^b8\active \let^^b8=\cedillaglyph +\catcode`^^b9\active \def^^b9{^1} +\catcode`^^ba\active \let^^ba=\ordo +\catcode`^^bc\active \def^^bc{\frac14} +\catcode`^^bd\active \def^^bd{\frac12} +\catcode`^^be\active \def^^be{\frac34} +\catcode`^^bf\active \def^^bf{?`} +\catcode`^^d7\active \let^^d7=\times +\catcode`^^f7\active \let^^f7=\div +\catcode`^^c0\active \def^^c0{\graveglyph A} +\catcode`^^c1\active \def^^c1{\acuteglyph A} +\catcode`^^c2\active \def^^c2{\circumglyph A} +\catcode`^^c3\active \def^^c3{\tildeglyph A} +\catcode`^^c4\active \def^^c4{\twodotsglyph A} +\catcode`^^c5\active \def^^c5{\ringglyph A} +\catcode`^^c6\active \let^^c6=\AE +\catcode`^^c7\active \def^^c7{\cedillaglyph C} +\catcode`^^c8\active \def^^c8{\graveglyph E} +\catcode`^^c9\active \def^^c9{\acuteglyph E} +\catcode`^^ca\active \def^^ca{\circumglyph E} +\catcode`^^cb\active \def^^cb{\twodotsglyph E} +\catcode`^^cc\active \def^^cc{\graveglyph I} +\catcode`^^cd\active \def^^cd{\acuteglyph I} +\catcode`^^ce\active \def^^ce{\circumglyph I} +\catcode`^^cf\active \def^^cf{\twodotsglyph I} +\catcode`^^d1\active \def^^d1{\tildeglyph N} +\catcode`^^d2\active \def^^d2{\graveglyph O} +\catcode`^^d3\active \def^^d3{\acuteglyph O} +\catcode`^^d4\active \def^^d4{\circumglyph O} +\catcode`^^d5\active \def^^d5{\tildeglyph O} +\catcode`^^d6\active \def^^d6{\twodotsglyph O} +\catcode`^^d8\active \let^^d8=\O +\catcode`^^d9\active \def^^d9{\graveglyph U} +\catcode`^^da\active \def^^da{\acuteglyph U} +\catcode`^^db\active \def^^db{\circumglyph U} +\catcode`^^dc\active \def^^dc{\twodotsglyph U} +\catcode`^^dd\active \def^^dd{\acuteglyph Y} +\catcode`^^df\active \let^^df=\ss +\catcode`^^e0\active \def^^e0{\acuteglyph a} +\catcode`^^e1\active \def^^e1{\graveglyph a} +\catcode`^^e2\active \def^^e2{\circumglyph a} +\catcode`^^e3\active \def^^e3{\tildeglyph a} +\catcode`^^e4\active \def^^e4{\twodotsglyph a} +\catcode`^^e5\active \def^^e5{\ringglyph a} +\catcode`^^e6\active \let^^e6=\ae +\catcode`^^e7\active \def^^e7{\cedillaglyph c} +\catcode`^^e8\active \def^^e8{\graveglyph e} +\catcode`^^e9\active \def^^e9{\acuteglyph e} +\catcode`^^ea\active \def^^ea{\circumglyph e} +\catcode`^^eb\active \def^^eb{\twodotsglyph e} +\catcode`^^ec\active \def^^ec{\graveglyph i} +\catcode`^^ed\active \def^^ed{\acuteglyph i} +\catcode`^^ee\active \def^^ee{\circumglyph i} +\catcode`^^ef\active \def^^ef{\twodotsglyph i} +\catcode`^^f1\active \def^^f1{\tildeglyph n} +\catcode`^^f2\active \def^^f2{\graveglyph o} +\catcode`^^f3\active \def^^f3{\acuteglyph o} +\catcode`^^f4\active \def^^f4{\circumglyph o} +\catcode`^^f5\active \def^^f5{\tildeglyph o} +\catcode`^^f6\active \def^^f6{\twodotsglyph o} +\catcode`^^f8\active \let^^f8=\o +\catcode`^^f9\active \def^^f9{\graveglyph u} +\catcode`^^fa\active \def^^fa{\acuteglyph u} +\catcode`^^fb\active \def^^fb{\circumglyph u} +\catcode`^^fc\active \def^^fc{\twodotsglyph u} +\catcode`^^fd\active \def^^fd{\acuteglyph y} +\catcode`^^ff\active \def^^ff{\twodotsglyph y} +\def\ttminus{--{}} +\let\ttcircum=\asciicircum +\let\tttilde=\asciitilde diff --git a/Master/texmf-dist/source/plain/pdcmac/pdccmdoc.tex b/Master/texmf-dist/source/plain/pdcmac/pdccmdoc.tex new file mode 100644 index 00000000000..843a8c96361 --- /dev/null +++ b/Master/texmf-dist/source/plain/pdcmac/pdccmdoc.tex @@ -0,0 +1,64 @@ +% pdccmdoc.tex 1.2 1995/03/30 -- macros for short documents +%%%@TeX-definition-file { +%%% filename = "pdccmdoc.tex", +%%% version = "1.2", +%%% date = "1995/03/30", +%%% 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, style file", +%%% supported = "Maybe", +%%% abstract = "Top-level macro file for documents set in +%%% Computer Modern fonts. +%%% This macro file was generated by running plain +%%% TeX on pdcsty.dtx", +%%% copyright = "Copyright (c) 1991-1995 P. Damian Cugley", +%%% copying = "DO NOT DISTRIBUTE THIS FILE. +%%% Distribute pdcsty.dtx only as part of the +%%% package it came in.", +%%% dependencies = "pdcfmt2.tex, pdcfsel.tex, pdchyex.tex, +%%% pdcimth.tex, pdccmsub.tex, pdcmigr.tex, +%%% pdcoput5.tex, pdcdoc.def", +%%%} + +\message{1.2 } + +\input pdcimth +\input pdcmigr +\input pdcfmt2 +\input pdchyex +\input pdcoput5 +\input pdcfsel +\input pdccmsub +\autoloadfonts +\def\STYheadingT{% + \m{rm}{cmss}\m{mi}{cmmi}\m{sy}{cmsy}% + \f{it}{cmssi}\f{tt}{cmtt}\f{mf}{logo}\f{mfi}{logosl}% +} +\font\headingrm=cmss17 \font\headingit=cmssi17 +\fontset{subheading}\STYheadingT{10 scaled 1200}{14pt} + {small}{tiny} +\fontset{heading}\STYheadingT{10 scaled 1728}{20pt} + {subheading}{small} +\def\STYbodyT{\m{rm}{cmr}\m{it}{cmti}% + \m{bf}{cmbx}\@\f{bi}{cmbxti10}% + \m{mi}{cmmi}\m{sy}{cmsy}% + \@\f{mf}{logo10}\@\f{mfi}{logosl10}% + \f{tt}{cmtt}\@\f{ttb}{cmsltt10}% +} +\font\tinytt=cmtt8 at 7pt +\font\bodysy=cmsy10 at 12pt +\fontset{tiny}\STYbodyT{7}{9pt}{tiny}{tiny} +\fontset{small}\STYbodyT{9}{11pt}{tiny}{tiny} +\fontset{note}\STYbodyT{10}{12pt}{tiny}{tiny} +\fontset{body}\STYbodyT{12}{14pt}{small}{tiny} +\def\everyloadfont#1#2{\fontdimen3#1=0pt \fontdimen4#1=0pt} +\rightskip=0pt plus 2em \tolerance=1000 +\bodyfonts +{\tt \hyphenchar\font=-1 } +\def\PS{PostScript} +\input pdcdoc.def +\inputifexists{pdccmdoc.cfg} diff --git a/Master/texmf-dist/source/plain/pdcmac/pdccmlft.tex b/Master/texmf-dist/source/plain/pdcmac/pdccmlft.tex new file mode 100644 index 00000000000..905b7d04627 --- /dev/null +++ b/Master/texmf-dist/source/plain/pdcmac/pdccmlft.tex @@ -0,0 +1,64 @@ +% pdccmlft.tex 1.2 1995/03/30 -- macros for short documents +%%%@TeX-definition-file { +%%% filename = "pdccmlft.tex", +%%% version = "1.2", +%%% date = "1995/03/30", +%%% 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, style file", +%%% supported = "Maybe", +%%% abstract = "Top-level macro file for documents set in +%%% Computer Modern fonts. +%%% This macro file was generated by running plain +%%% TeX on pdcsty.dtx", +%%% copyright = "Copyright (c) 1991-1995 P. Damian Cugley", +%%% copying = "DO NOT DISTRIBUTE THIS FILE. +%%% Distribute pdcsty.dtx only as part of the +%%% package it came in.", +%%% dependencies = "pdcfmt2.tex, pdcfsel.tex, pdchyex.tex, +%%% pdcimth.tex, pdccmsub.tex, pdcmigr.tex, +%%% pdcoput5.tex, pdclft.def", +%%%} + +\message{1.2 } + +\input pdcimth +\input pdcmigr +\input pdcfmt2 +\input pdchyex +\input pdcoput5 +\input pdcfsel +\input pdccmsub +\autoloadfonts +\def\STYheadingT{% + \m{rm}{cmss}\m{mi}{cmmi}\m{sy}{cmsy}% + \f{it}{cmssi}\f{tt}{cmtt}\f{mf}{logo}\f{mfi}{logosl}% +} +\font\headingrm=cmss17 \font\headingit=cmssi17 +\fontset{subheading}\STYheadingT{10 scaled 1200}{14pt} + {small}{tiny} +\fontset{heading}\STYheadingT{10 scaled 1728}{20pt} + {subheading}{small} +\def\STYbodyT{\m{rm}{cmr}\m{it}{cmti}% + \m{bf}{cmbx}\@\f{bi}{cmbxti10}% + \m{mi}{cmmi}\m{sy}{cmsy}% + \@\f{mf}{logo10}\@\f{mfi}{logosl10}% + \f{tt}{cmtt}\@\f{ttb}{cmsltt10}% +} +\font\tinytt=cmtt8 at 7pt +\font\bodysy=cmsy10 at 12pt +\fontset{tiny}\STYbodyT{7}{9pt}{tiny}{tiny} +\fontset{small}\STYbodyT{9}{11pt}{tiny}{tiny} +\fontset{note}\STYbodyT{10}{12pt}{tiny}{tiny} +\fontset{body}\STYbodyT{12}{14pt}{small}{tiny} +\def\everyloadfont#1#2{\fontdimen3#1=0pt \fontdimen4#1=0pt} +\rightskip=0pt plus 2em \tolerance=1000 +\bodyfonts +{\tt \hyphenchar\font=-1 } +\def\PS{PostScript} +\input pdclft.def +\inputifexists{pdccmlft.cfg} diff --git a/Master/texmf-dist/source/plain/pdcmac/pdccmsub.tex b/Master/texmf-dist/source/plain/pdcmac/pdccmsub.tex new file mode 100644 index 00000000000..a2712d5c445 --- /dev/null +++ b/Master/texmf-dist/source/plain/pdcmac/pdccmsub.tex @@ -0,0 +1,70 @@ +% pdcmisc.dtx 1.4 1995/03/30 -- CM subs for PS glyphs +%%%@TeX-definition-file { +%%% filename = "$texmf/tex/plain/pdcmac/pdcmigr.tex", +%%% version = "1.4", +%%% date = "1995/03/30", +%%% 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{1.4 1995/03/30} + +\dimendef\dimena=0 +\def\pounds{{\it\char36 }} +\def\yen{{% + \ooalign{% + \hfil\raise0.25ex\hbox{$\scriptscriptstyle=$}\hfil\crcr + \hfil Y\hfil + }% +}} +\def\cents{\leavevmode\hbox{\rm\rlap/c}} +\def\currency{{% + \ooalign{% + \hskip-0.1em + \raise0.2ex \hbox{\mathhexbox202}\hskip-0.1em\crcr + \hfil \raise0.2ex \hbox{\mathhexbox20E}\hfil + }% +}} +\def\florin{{\it f\/}} +\def\circledletter#1#2{{% + \ooalign{% + \hfil\kern#1\raise0.00ex \hbox{$\scriptstyle\rm #2$}\hfil\crcr + \mathhexbox20D% + }% +}} +\def\registered{\circledletter{0.02em}R} +\def\copyright{\circledletter{-0.045em}C} +\def\lguillemet{% + \leavevmode + \raise0.5ex \hbox{$\scriptscriptstyle\langle\!\langle$}% +} +\def\rguillemet{% + \leavevmode + \raise0.5ex \hbox{$\scriptscriptstyle\rangle\!\rangle$}% +} +\def\permille{{% + \setbox0 \hbox{/}% + \flushtop{$\scriptstyle0\!$}/% + \lower\dp0 \hbox{$\!\scriptstyle00$}% +}} +\def\gbdecimal{\mathhexbox201} +\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}} +\let\sc=\relax +\let\csc=\relax +\let\mc=\relax diff --git a/Master/texmf-dist/source/plain/pdcmac/pdccode.dtx b/Master/texmf-dist/source/plain/pdcmac/pdccode.dtx new file mode 100644 index 00000000000..2261d583f4e --- /dev/null +++ b/Master/texmf-dist/source/plain/pdcmac/pdccode.dtx @@ -0,0 +1,881 @@ +% pdccode.dtx -- documentation & source for pdccode.tex -*-tex-*- + +%%%@TeX-document-file { +%%% title = "PDCCODE -- Documented TeX Macros", +%%% filename = "$texmf/doc/plain/pdcmac/pdccode.dtx", +%%% version = "$Revision: 1.6 $", +%%% package = "pdcmac 1.0", +%%% date = "$Date: 1995/03/30 16:08:32 $", +%%% 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 file pdccode.tex. +%%% Running plain TeX on this file produces both a copy of the +%%% definitions file 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" +%%%} + +%{{{ pdccode +%{{{ preamble + +\relax +\input pdccode +\document +\rcs$Id: pdccode.dtx,v 1.6 1995/03/30 16:08:32 pdc Exp $\endrcs + +\codefile{tmp.tex} + +\defverbatim\" + +%}}} preamble +%{{{ introduction + +\author{P. Damian Cugley} +\title{PDCCODE---Documented \TeX\ Macros} +\section{Introduction} + + PDCCODE is a simpler and less featureful system than the + \LaTeX~2e Docstrip package, but uses the same file suffix + `|dtx|'. Lines between |\code| and |\endcode| markers are + written to a file (set with the |\codefile| command), as well as + being printed `verbatim' in document. Thus one \TeX\ pass + generates both the macro file(s) and a |dvi| file. + + This document---generated from |pdccode.dtx|---is a |dtx| file + for PDCCODE itself, the file of macros used by my |dtx| files. + It cannot be used to generate |pdccode.tex| directly (\TeX\ + might choke halfway through overwriting |pdccode.tex| with a new + version, leaving no |pdccode.tex| to generate |pdccode.tex| + with). Instead it produces its copy as `|tmp.tex|', and + `|tmp.tex|' can be compared to the supplied |pdccode.tex|. + +\subsec{How to read this document} + + The |dtx| files are programs (in \TeX's macro language) that + generate new programs (the macro files that will be used in + documents). The macros described in {\it this} file are used + when generating macro files. So, for example, the |\rcs| and + |\fileversion| macros used to extract identification information + from the |dtx| file are not defined in any of the generated + macro files. + +\subsec{Background} + + For some time I~have been using a collection of macro files to + typeset various types of document with \TeX. After using them + in Malvern\footnote*{Malvern is a sanserif font family + implemented in METAFONT. The current version is release $1.2$.} + releases I have discovered that they had been merged with the + Unix\TeX\ macros directory. Originally I~had never intended + that these files be used by anyone but me---they were full of + hacks and messy code and definitions I~don't use anymore. Since + then I~thought of tidying up the macros enough that I'm not + embarassed by them, but the task of doing this {\it and} + documenting their use was daunting. + + After installing \LaTeX~2e on my new computer, I~decided to have + a go at adapting the idea of `documented \TeX\ macros' files to + plain \TeX. This way I~could clean up the macros and document + them in a systematic fashion. + + The \LaTeX\ Docstrip/Doc-option approach evolved through several + different models and so is a complex format. Docstrip (a + program written in \TeX's macro language) was used to strip + comments from |doc| files making |sty| files, and the \LaTeX\ + Doc-option separately extracted \LaTeX\ code from comments in + |doc| files to make printed documentation. Both Doc and + Docstrip required the user to type in file names whenever they + ran---which made them useless for batch processing. So separate + driver files (with suffixes |drv| and |ins|) were added to + distributions. Finally, the |doc| files, which used to be + usable as |sty| files (just a little slower because of the + comments) were have been changed to be documents instead (making + |drv| files redundant, once the |ltxdoc.cfg| configuration file + was added to the conventions) and given a new suffix |dtx|. + + The system I~use---called PDCCODE---is simpler and faster, but + omits indexes, special change-log commands, and all the features + that come with \LaTeX\ formatting. It doesn't have Docstrip's + {\it options}\/ feature, which allows several largely-similar + files to be generated from the same source.\footnote\dag{I do + have an experimental version |pdccode2.tex| which does this but + I~am not particularly happy with it yet.} It doesn't print + statistics at the end, or do checksums, or even print comforting + lines of asterisks and percent signs in the log file. + + My |dtx| files use a single macro file |pdccode.tex| which + defines a `code mode' where lines are written to the macro file + as well as appearing in the printed documentation. One pass + generates both the macro file and the documentation in |dvi| + form. The |pdccode.tex| file also includes enough layout + commands to typeset the comments. +%}}} +%{{{ using pdccode +\section{Summary of using PDCCODE} + + These commands are explained in more detail below. + +\subsec{A skeleton code file} + + A code file using |pdccode.tex| will look something like this: +$$\it +\halign{\indent#\hfil\cr + "%" name "--" one line description\cr +\noalign{\smallskip} + "%%%@TeX-document-file {"\cr + header comments for the document\cr + "%%%}"\cr +\noalign{\smallskip} + "\relax"\cr + "\input pdccode"\cr + "\document"\cr + "\rcs$" RCS identification string "$\endrcs"\cr + "\codefile{" file name "}"\cr + "\author{" author name "}"\cr + "\title{" title for the document "}"\cr +\noalign{\smallbreak} + "\section{Introduction}"\cr + introduction\cr +\noalign{\smallbreak} + "\section{File identification}"\cr + "\code"\cr + " \|\% " file name "\fileversion~\filedate~--" one line desc\cr + " |"\cr + " |%%%@TeX-definition-file {"\cr + " " header comments for macro file\cr + " |%%%}"\cr + " |"\cr + " \|\\message\{\fileversion~<\fileauthor~\filedate>\}"\cr + " |"\cr + "\endcode"\cr +\noalign{\smallbreak}% + definitions and commentary\cr +\noalign{\smallbreak}% + "\endcodefile"\cr + "\enddocument"\cr + "\bye"\cr +}$$ + +\subsec{Commands in code sections} + + Code sections start with |\code| and end with |\endcode|. Before + the first |\code| you must do |\codefile{|\|}| to + specify the file. + + Vertical mode material may be used between lines (e.g., + |\smallbreaks|). Unexpanded code lines are introduced with "|", + expanded lines with "\|". In expanded lines, use "\{", "\}", + "\\", "\%", "\~" for those characters, "~" for a single space. + +\subsec{Commands in commentary} + + Most of the commentary will be typeset using the conventions of + plain \TeX. + + |\author{|\|}| (must precede |\title|) + + |\title{|\|}| + + |\section{|\|}| + + |\subsec{|\|}| + + |\noindenttrue| + + |\footnote| + + |\defverbatim|\ + + |$|\|\mm$| |$|\|\em$| |$|\|\pt$| + |$|\|\inch$| + + |\<|\|>| |\cs{|\|}| + |\arg{|\|}| + + |\TeX| |\LaTeX| |\LaTeX~2e| + + |\notepar| \ |\endnotepar| + + +%}}} using pdccode +%{{{ file identification +\section{File identification} + + Nowadays, macro files start with some comments identifying the + file. +\code \catcode`\"=12 + \|\% pdccode.tex \fileversion~\filedate~-- self-documenting TeX macros + | + |%%%@TeX-definition-file { + |%%% filename = "$texmf/tex/plain/pdcmac/pdccode.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 documented TeX macros (DTX files). + |%%% This file was generated by running + \|\%\%\%~~~~~~~~~~~~~~~~~~~plain TeX on \jobname.dtx", + |%%% copyright = "Copyright (c) 1991-1995 P. Damian Cugley", + |%%% copying = "DO NOT DISTRIBUTE THIS FILE. + \|\%\%\%~~~~~~~~~~~~~~~~~~~Distribute \jobname.dtx only as part of the + |%%% package it came in.", + |%%% dependencies = "", + |%%% } + | + \|\\message\{\fileversion~\} + | +\endcode +%}}} file id + +\bigskip\noindent + We start by making a nickname for a scratch register. This is + |\toks@| in plain \TeX; this definition gives it a name I~can + use without catcode hackery. +\code + |\toksdef\toksa=0 +\endcode + +%{{{ rcs support + +\section{RCS Support} + + RCS (Revision Control System) is a free source code control + system which is available from the Free Software Foundation. + It inserts keyword-value pairs enclosed in dollar signs into the + source code. This command extracts the file's version, date, + author and locker (if there is one). It is used like this: +$$\centerline{\vbox{\tt\def~{\char32 \ignorespaces} + \halign{#\hfil\cr + \cs{rcs}\$Id:~\,v~\~\~\\quad\cr + \hfill~\~\~{\rm[}\~{\rm]}\$\cs{endrcs}\cr +}}} $$ + The \ field is non-empty iff the file is `locked' + (meaning it has been edited and the changes are not checked in + yet). The |\filename| macro is defined, even though it will + almost certainly be identical to |\jobname|. +\code + |\def\rcs#1: #2,v #3 #4 #5 #6 #7 #8$#9\endrcs{ + | \def\filename{#2} + | \def\fileversion{#3} + | \def\filedate{#4} + | \def\fileauthor{#6} + | \def\filelocker{#8} + |} +\endcode + +%}}} rcs support +%{{{ verbatim text +\section{Verbatim text} + + Verbatim text is text that is printed identically to the + characters in the manuscript file. In the code sections, a + vertical bar is used to make lines for the code file. In the + documentation, the vertical bar is used as a self-matching + verbatim mode character. + + These definitions should be the same as the corresponding code + in |pdcfmt2.dtx|. + +\subsec{Lists of active characters} + + The verbatim text macros need to know if any characters have + been made special apart from the usual ones. This command tells + the verbatim macros that |#1| is an active char; in addition to + setting its catcode, this makes sure that the character will be + re-catcoded appropriately when in verbatim mode. |#1| should be + a something that will work after `|`|'; usually this means a + one-character control sequence. +\code + |\def\declareactivechar#1{% + | \toksa\expandafter{\verbatimplains\do#1}% + | \edef\verbatimplains{\the\toksa }% + | \catcode`#1\active + |} +\endcode + + Two list macros in the style of |\dospecials| are defined. The + first is for characters that must be set to catcode~12, such as + `|\|', `|{|', `|}|', `|_|', `|$|', `|#|', `|&|', and `|%|'. The + other is for a few characters that are given catcode~13, such as + `|`|', `|'|', `|~|', `|^|' and SP. +\code + |\def\verbatimplains{\do\\\do\{\do\}\do\_\do\$\do\#\do\&\do\%} + |\def\verbatimactives{\do\`\do\'\do\~\do\^\do\ } +\smallbreak + |\chardef\other=12 +\endcode + +\subsec{Setting up verbatim mode} + + This is a macro common to various verbatim text modes. The + default spacing of whatever font is used, without any + adjustments of spacefactor for punctuation. The characters + `|`|', `|'|', `|~|', and `|^|' produce slightly lowered glyphs. +\code + |\newtoks\everyverbatim +\smallbreak + |\bgroup \catcode`\^=13 \catcode`\'=13 \catcode`\`=13 \toksa={\egroup + | \def\setupverbatim{% + | \frenchspacing + | \spaceskip0pt \xspaceskip0pt % use spacing of font + | \def\do##1{\catcode\lq##112 }\verbatimplains + | \def\do##1{\catcode\lq##1\active }\verbatimactives + | \let`\ttlq \let'\ttrq + | \let~\tttilde \let^\ttcircum + | \the\everyverbatim + | } + |}\the\toksa +\endcode + + Here are the definitions for the munged glyphs. These are only + necessary in CM-Typewriter-like fonts; using something + like Courier, these definitions could probably be omitted. + + The names `rq' and `lq' are based on the use of |\lq| and |\rq| + in plain \TeX. An alternative definition for |\ttrq| would be + |\chardef\ttrq=13|, producing `{\tt\char13 }'. +\code + |\def\ttlq{\lower0.125ex \hbox{\char18 }} + |\def\ttrq{\lower0.125ex \hbox{\char19 }} + |\def\tttilde{\lower0.5ex \hbox{\char`\~ }} + |\def\ttcircum{\lower0.5ex \hbox{\char`\^ }} +\endcode + This makes the difference between |`'^~| and + {\tt`'\char`\^\char`\~}.\footnote*{It turns out that on some + \TeX\ systems, the CMTT font has been hacked to have an + ASCII-style reverse-apostrohe-cum-grave-accent as character~96 + and a matching apostrophe-cum-acute-accent as charcter~39, + thereby correcting the defects that my definitions of |\ttlq| + and |\ttrq| address. But such modified fonts are + nonstandard---they should {\it not} be called CMTT---and should + be replaced.} + +\subsec{Defining a self-matching character for verbatim text} + + A macro for defining a self-matching verbatim character (I~got + the idea of a macro for declaring verbatim characters from the + \LaTeX~2e documentation macros). |#1| must be a one-character + control sequence. If it isn't active already, then + |\declareactivechar| is applied to it first. +\code + |\def\defverbatim#1{% + | \ifcat\noexpand#1\noexpand~\else \declareactivechar#1 \fi + | \begingroup \uccode`\~=`#1 \uppercase{\toksa={\endgroup + | \def~{% + | \leavevmode + | \begingroup \tt \setupverbatim + | \catcode`#1\active \let~\endgroup + | }% + | }}\the\toksa + |} +\endcode + Note that there must be a font called |\tt| for it to switch to. + (The catcode of |#1| is set to 13 after calling |\setupverbatim| + because |#1| will be included in |\verbatimplains|.) + + Finally, we define vertical bar as the conventional + self-matching verbatim-mode character. +\code + |\defverbatim\| +\smallbreak + |\hyphenchar\tentt=-1 +\endcode + Both |\defverbatim| and |\defineactivechar| have local scope. + +%}}} verbatim text +%{{{ code sections +%{{{ intro +\section{Code sections} + + The markers |\code| \dots |\endcode| mark code to be written to + the definition file. Each line starts with either "|" or "\|" + and finishes with the end of the line in the manuscript file. + + Lines that start with "|" are written out as-is; no macro + expansion is allowed. This is how the vast majority of lines + are done. + + Lines starting "\|" are expanded. This is so that things like + the current version ID (extracted from the RCS identification + line or set with |\def|) may be included in the code file. + Within such an expanded line, the following macros are defined: + $$\halign{\indent#\hfil&&\quad#\hfil\cr + |\%|& |%|& per cent sign& + |\{|& |{|& left brace& + |\}|& |}|& right brace\cr + |\\|& |\|& backslash& + |~|& \tt\char32 & space& + |\~|& |~|& tilde\cr + } + $$ + (This list is probably incomplete.) +%}}} intro +%{{{ code file name + +\subsec{Setting the codefile name} + + Before the first code section, the |\codefile{|\|}| + command specifies the code file. The last code section should + be followed by |\endcodefile|. Only one code file may be open + at a time. +\code + |\newwrite\CODEwrite +\smallbreak + |\def\codefile#1{ + | \ifeof\CODEwrite\else \endcodefile \fi + | \def\thecodefile{#1} \openout\CODEwrite=#1 + |} +\smallbreak + |\def\endcodefile{ + | \message{Code written on \thecodefile.} + | \closeout\CODEwrite + |} +\endcode +%}}} code file name +%{{{ code sections + +\subsec{Code sections} + + Switching to `code mode' is easy, because most of the work is + really done by the "|" and "\|" commands. + +\code + |\def\code{ + | \smallskip + | \begingroup + | \let|\CODEline \let\|\CODElinex + | \let\{=\CODElb \let\}=\CODErb \let\\=\CODEbslash + | \def~{ } \let\~\CODEtilde + | \the\everycode + | \obeylines + |} +\smallbreak + |\def\endcode{ + | \smallbreak + | \endgroup + |} +\endcode +%}}} code sections +%{{{ code lines +\subsec{Code lines} + + This is the definition for unexpanded code lines. +\code + |\def\CODEline{% + | \begingroup % matched by \CODElinei + | \setupverbatim \catcode`\|\other + | \CODElinei + |} +\endcode + + In |\CODElinei|, We must redefine the characters (such as |`|) + that are active within verbatim text to expand to their + catcode-12 equivalents when they are written to the code file + currectly. + + Since one of these is |^|, we temporarily give |@| the meaning + of |^| so that we may safely change the catcode of |^|. +\code + |\begingroup\catcode`\'=\active \catcode`\`=\active + | \catcode\lq\@=\catcode\lq\^ \catcode\lq\^=\active + | \catcode\lq\@@M=\active \toksa={\endgroup % + | \def\CODElinei#1@@M{% + | \begingroup\let`\lq \let'\rq % + | \let^\CODEcircum \let~ \CODEtilde% + | \edef\tmp{#1}% + | \write\CODEwrite\expandafter{\tmp}% + | \endgroup % + | \indent\the\everycodeline #1\par % + | \endgroup % matches \CODEline + | }% + |}\the\toksa +\endcode + + The definition for |\CODElinex| (expanded code lines) is much + simpler: +\code + |\begingroup\catcode`\^^M=13 \toksa={\endgroup % + | \def\CODElinex#1^^M{% + | \edef\tmp{\write\CODEwrite{#1}}\tmp % + | {\indent\the\everycodeline #1\par}% + | }% + |} \the\toksa +\endcode +%}}} code lines +%{{{ catcode hacks +\subsec{Macros for making category-12 characters} + + For characters that are active in verbatim mode (like |`|), or + which must be specially generated in expanded code lines (such + as braces generated with {\tt\cs{\char123 }}), we have a + `|\CODE|-' macro that generates an explicit character token with + catcode~12. + +\code + |\begingroup\catcode`\/=0 \catcode`\\=\other /toksa={/endgroup + | /def/CODEbslash{\} + |}/the/toksa +\smallbreak + |\begingroup\catcode`\^=\other \toksa={\endgroup + | \def\CODEcircum{^} + |}\the\toksa +\smallbreak + |\begingroup\catcode`\~=\other \toksa={\endgroup + | \def\CODEtilde{~} + |}\the\toksa +\smallbreak + |\begingroup\catcode`\%=\other \toksa={\endgroup + | \def\%{%} + |}\the\toksa +\smallbreak + |\begingroup\catcode`\~=\other \toksa={\endgroup + | \def\CODEtilde{~} + |}\the\toksa +\smallbreak + |\begingroup\catcode`\[=1 \catcode`\]=2 + | \catcode`\{=\other \catcode`\}=\other + | \toksa=[\endgroup + | \def\CODElb[{] \def\CODErb[}] + |]\the\toksa +\endcode +%}}} catcode hacks +%{{{ customization +\subsec{Customization} + + The token list register |\everycode| is expanded at the start of + every code section, the token list register |\everycodeline| at + the start of every code line. The default definitions select + typewriter font for the code listings, with each line numbered. +\code + |\newtoks\everycode + |\newtoks\everycodeline +\smallbreak + |\everycode{\tt \baselineskip=0.8\baselineskip \lineskiplimit=0pt } +\smallbreak + |\newcount\lineno + |\everycodeline{\llap{$ \global\advance\lineno1 + | \scriptstyle\the\lineno $\enspace}% + | \mark\expandafter{\the\lineno}} +\endcode +%}}} customization +%}}} code sections +%{{{ formating +%{{{ intro +\section{Layout} + + The PDCCODE macros include enough basic formatting commands to + make a simple document---since this file needs to be + self-contained. The formatting is fairly primitive, so that + |pdccode.tex| will not be excessively long. + + The text is set in the default plain \TeX\ fonts: 10-point + Computer Modern Roman. Titles are in CM Sans Serif Bold + Extended, headings in CMSS Demibold Condensed, and subheadings + in CMSS Italic: all of these are standard fonts which should be + available on all \TeX\ systems. + + The line width is wide enough that code lines do not need to be + printed in a reduced font (which looks silly). + + the first tokenm of a document is |\relax| and everything except + the initial |\input| and final |\bye| in the document is + enclosed in |\document|\dots|\enddocument|. This is so that + documents using the PDCCODE conventions can be embedded within a + another document which by redefining these tokens. +\code + |\let\document\relax \let\enddocument\relax +\endcode + + I have to set some \TeX~3 parameters because we don't seem to + have definitions for them in the local version of |plain.tex|. +\code + |\lefthyphenmin=3 \righthyphenmin=2 \errorcontextlines10000 +\endcode + +%}}} intro +%{{{ layout +\subsec{Layout} + + The text width is wide enough for 72-character code lines. +\code + |\parindent=2em \hsize=36\fontdimen6\tentt \advance\hsize\parindent +\endcode + A largish left margin is used set---perhaps readers will find it + useful for writing comments. +\code + |\hoffset=210mm \advance\hoffset-\hsize \advance\hoffset-25mm + |\newdimen\leftmargin \leftmargin=\hoffset \advance\leftmargin-25mm + |\advance\hoffset-1in +\endcode + + The vertical margins are set so that if the file is formatted + for A4 ($297\mm$) paper and fed into a driver which thinks it is + formatted for American Letter ($11\inch$) paper no information + will be lost. We allow for $7\mm$ unprintable area at the edges + of paper (this is reasonable for a laser printer), and for the + headline being $24\pt + 6\pt - 10\pt = 20\pt$ above the top of + the text. (The $6\pt$ allows for the height of the headline, + which is in 7-pt type.) +\code + |\voffset=297mm \advance\voffset-11in + |\advance\voffset7mm \advance\voffset20pt + |\vsize=297mm \advance\vsize-2\voffset \advance\vsize-2\baselineskip + |\advance\voffset-1in +\endcode + + We use ragged-right (ranged-left) printing. (Readability + studies have indicated that ragged-right printing is, if + anything, easier to read than with both sides aligned.) To do + this we remove the stretch and shrink components of the font we + use, and make the right margin stretchable. +\code + |\def\do#1{\fontdimen3#1=0pt \fontdimen4#1=0pt } + |\do\tenrm \do\tenit \do\tenbf +\smallbreak + |\rightskip=0pt plus 2em minus 2pt \adjdemerits=0 \tolerance=500 + |\parfillskip=0pt plus 0.8\hsize +\endcode +%}}} layout +%{{{ title and headline +\subsec{Title and headline} + + The author and title info are printed at the top of the first + page---in lieu of a separate title page---and the title goes in + the headline of subsequent pages, followed by the version ID and + date as extracted from the RCS identification string. If the + file locker is non-empty (i.e., the file is being edited), an + `e' is appended to the version ID in the headline. +\code + |\def\author#1{\def\theauthor{#1}} \author{P. Damian Cugley} +\smallbreak + |\font\titlefont=cmssbx10 scaled \magstep3 +\smallbreak + |\def\title#1{ + | \vglue2\baselineskip + | \begingroup \parindent-\leftmargin \hyphenpenalty10000 \titlefont + | #1\smallskip + | \endgroup + | \leftline{Version \fileversion, + | last changed \fileauthor\space \mungedate\filedate} + | \ifx\filelocker\empty\else + | \leftline{Edited by \filelocker\unskip\ \today} + | \fi + | \medskip + | \hrule \vskip1pt \hrule \vskip1pt \hrule \vskip1pt \hrule + | \medskip + | \rightline{\theauthor} + | \bigskip + | \headline{\hfil\global\headline{% + | \sevenbf \hskip-\leftmargin \themarks \hfil #1 + | \fileversion + | \ifx\filelocker\empty + | \space\mungedate\filedate + | \else + | e\space\today + | \fi + | }} + |} +\smallbreak + |\def\themarks{% + | \ifx\firstmark\empty\else + | \firstmark + | \ifx\firstmark\botmark \else --\botmark \fi + | \fi + |} +\endcode + + Some macros for printing the date. The |\mungedate| macro + converts from RCS's format (using slashes) to ISO format (using + short dashes). +\code + |\def\today{\mungedate{\number\year/\twodigits\month/\twodigits\day}} + |\def\twodigits#1{\ifnum#1<10 0\fi \number#1} + |\def\mungedate#1{$ \textfont0=\font \mathcode`/="7B #1 $} +\endcode + +%}}} title and author +%{{{ sectioning +\subsec{Sectioning} + + The sectioning commands do no more than generate numbered + headings---there are no tables of contents or marks required. +\code + |\font\secfont=cmssdc10 at 12pt + |\font\subsecfont=cmssi10 +\smallbreak + |\newcount\seccount + |\newcount\subseccount +\smallbreak + |\def\section#1{% + | \advance\seccount1 \subseccount=0 + | \bigbreak + | \begingroup + | \secfont \hyphenpenalty=10000 \tolerance=1000 + | \rightskip=0pt plus 2em + | \noindent\llap{\number\seccount.\enspace}#1 + | \medskip + | \endgroup + | \noindenttrue + |} +\smallbreak + |\def\subsec#1{% + | \advance\subseccount1 + | \medbreak + | \begingroup + | \subsecfont \hyphenpenalty=10000 \tolerance=1000 + | \rightskip=0pt plus 2em + | \noindent\llap{\number\seccount.% + | \number\subseccount.\enspace}#1 + | \nobreak\smallskip + | \endgroup + | \noindenttrue + |} +\endcode + + Here's a simple hack to remove the indentation of the first + paragraph following a section heading. +\code + |\newif\ifnoindent +\smallbreak + |\everypar{% + | \ifnoindent + | {\setbox0=\lastbox}\global\noindentfalse + | \fi + |} +\endcode + +%}}} sectioning +%{{{ footnotes +\subsec{Footnotes} + + Plain \TeX's footnote command is adjusted to use a new parameter + to specify the value of |\rightskip| in footnotes.\footnote*{The + default definition sets |\rightskip| to $0\pt$, which is + moderately disastrous given that spaces cannot stretch or + shrink.} It was the trickiness involved in changing definitions + like this that persuaded me to not use `|@|' characters in macro + files. +\code + |\newskip\footnoterightskip \footnoterightskip=\rightskip +\smallbreak + |\catcode`@=11 + |\def\vfootnote#1{\insert\footins\bgroup + | \interlinepenalty\interfootnotelinepenalty + | \splittopskip\ht\strutbox % top baseline for broken footnotes + | \splitmaxdepth\dp\strutbox \floatingpenalty\@MM + | \leftskip\z@skip \rightskip\footnoterightskip + | \spaceskip\z@skip \xspaceskip\z@skip \rm + | \textindent{#1}\footstrut\futurelet\next\fo@t} + |\catcode`@=11 +\endcode + This definition is a drop-in replacement for the one in {\it\TeX + book} Appendix~B (p.\thinspace363 in my copy). + +%}}} footnotes +%{{{ abbrevs +\subsec{Miscellaneous abbreviations} + + The |\<| macro for writing the names of syntactic entities (as + \) is like in {\it\TeX book} Appendix~E. The |\cs| macro + prints a control sequence name; I use this where the easier + dodge of writing "|\foo|" won't work (e.g., in the argument to + another macro). Similarly |\arg| places its argument in + typewriter-style braces. The |\pt| macro works in maths mode. +\code + |\def\<#1>{\leavevmode\hbox{$\langle$\it#1\/$\rangle$}} + |\def\cs#1{\leavevmode\hbox{\tt\char`\\#1}} + |\def\arg#1{\leavevmode\hbox{{\tt\char`\{}#1{\tt\char`\}}}} + |\def\pt{\,{\rm pt}} \def\em{\,{\rm em}} \def\mm{\,{\rm mm}} + |\def\inch{''} +\endcode + + To make a version of the \LaTeX\ logo that should work + acceptably with a range of fonts ({\it\LaTeX}, {\bf\LaTeX}, + {\subsecfont\LaTeX}), I~first define a macro for raising letters + until they are flush with the prevailing cap height. I also + loosen up the `{\it\TeX}\/' logo (so that it also works with + sanserif fonts) and make it set the spacefactor to 1000 (to + override \TeX's assumption that a full stop following a capital + $X$ isn't the end of a sentence). +\code + |\def\flushtop#1{% + | \leavevmode + | \begingroup + | \setbox0=\hbox{#1}\setbox2=\hbox{X}% + | \dimen0=\ht2 \advance\dimen0-\ht0 + | \raise\dimen0 \box0 + | \endgroup + |} +\smallbreak + |\def\TeX{T\kern-0.1em \lower0.5ex \hbox{E}X\spacefactor1000 } + |\def\LaTeX{L\kern-0.1em \flushtop{a}\TeX} +\endcode + + Occasional paragraphs are written in italics and marked with + `note'. +\notepar + The command says `notepar' not just `note' because in my macro + files I~use \/|\note| for numbered footnotes (\/{\rm \TeX book}, + Exercise~15.12).\footnote*{Footnotes in |dtx| files are produced + with the plain |\footnote| command.} + + Notes may occasionally be more than one paragraph long. +\endnotepar +\code + |\def\notepar{ + | \smallskip + | \begingroup + | \leftskip2\parindent \advance\rightskip\parindent minus \parindent + | \noindent\kern-\parindent{\bf Note}\quad\it + | \ignorespaces + |} +\smallbreak + |\def\endnotepar{ + | \smallbreak + | \endgroup + |} +\endcode +%}}} abbrevs +%}}} formatting + +\bigskip\noindent + The file is finished with an |\endinput| command; this can be + used by other prgorams to check that this file hasn't been + truncated by \TeX\ coming to a halt part-way through processing + the |dtx| file. +\code + |\endinput +\endcode +\endcodefile +\enddocument +\bye +%}}} pdccode + +%Local variables: +%fill-prefix: " " +%fold-folded-p: t +%End: diff --git a/Master/texmf-dist/source/plain/pdcmac/pdccode.tex b/Master/texmf-dist/source/plain/pdcmac/pdccode.tex new file mode 100644 index 00000000000..aaeb25e3ea9 --- /dev/null +++ b/Master/texmf-dist/source/plain/pdcmac/pdccode.tex @@ -0,0 +1,263 @@ +% pdccode.tex 1.6 1995/03/30 -- self-documenting TeX macros + +%%%@TeX-definition-file { +%%% filename = "$texmf/tex/plain/pdcmac/pdccode.tex", +%%% version = "1.6", +%%% date = "1995/03/30", +%%% 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 documented TeX macros (DTX files). +%%% This file was generated by running +%%% plain TeX on pdccode.dtx", +%%% copyright = "Copyright (c) 1991-1995 P. Damian Cugley", +%%% copying = "DO NOT DISTRIBUTE THIS FILE. +%%% Distribute pdccode.dtx only as part of the +%%% package it came in.", +%%% dependencies = "", +%%% } + +\message{1.6 } + +\toksdef\toksa=0 +\def\rcs#1: #2,v #3 #4 #5 #6 #7 #8$#9\endrcs{ + \def\filename{#2} + \def\fileversion{#3} + \def\filedate{#4} + \def\fileauthor{#6} + \def\filelocker{#8} +} +\def\declareactivechar#1{% + \toksa\expandafter{\verbatimplains\do#1}% + \edef\verbatimplains{\the\toksa }% + \catcode`#1\active +} +\def\verbatimplains{\do\\\do\{\do\}\do\_\do\$\do\#\do\&\do\%} +\def\verbatimactives{\do\`\do\'\do\~\do\^\do\ } +\chardef\other=12 +\newtoks\everyverbatim +\bgroup \catcode`\^=13 \catcode`\'=13 \catcode`\`=13 \toksa={\egroup + \def\setupverbatim{% + \frenchspacing + \spaceskip0pt \xspaceskip0pt % use spacing of font + \def\do##1{\catcode\lq##112 }\verbatimplains + \def\do##1{\catcode\lq##1\active }\verbatimactives + \let`\ttlq \let'\ttrq + \let~\tttilde \let^\ttcircum + \the\everyverbatim + } +}\the\toksa +\def\ttlq{\lower0.125ex \hbox{\char18 }} +\def\ttrq{\lower0.125ex \hbox{\char19 }} +\def\tttilde{\lower0.5ex \hbox{\char`\~ }} +\def\ttcircum{\lower0.5ex \hbox{\char`\^ }} +\def\defverbatim#1{% + \ifcat\noexpand#1\noexpand~\else \declareactivechar#1 \fi + \begingroup \uccode`\~=`#1 \uppercase{\toksa={\endgroup + \def~{% + \leavevmode + \begingroup \tt \setupverbatim + \catcode`#1\active \let~\endgroup + }% + }}\the\toksa +} +\defverbatim\| +\hyphenchar\tentt=-1 +\newwrite\CODEwrite +\def\codefile#1{ + \ifeof\CODEwrite\else \endcodefile \fi + \def\thecodefile{#1} \openout\CODEwrite=#1 +} +\def\endcodefile{ + \message{Code written on \thecodefile.} + \closeout\CODEwrite +} +\def\code{ + \smallskip + \begingroup + \let|\CODEline \let\|\CODElinex + \let\{=\CODElb \let\}=\CODErb \let\\=\CODEbslash + \def~{ } \let\~\CODEtilde + \the\everycode + \obeylines +} +\def\endcode{ + \smallbreak + \endgroup +} +\def\CODEline{% + \begingroup % matched by \CODElinei + \setupverbatim \catcode`\|\other + \CODElinei +} +\begingroup\catcode`\'=\active \catcode`\`=\active + \catcode\lq\@=\catcode\lq\^ \catcode\lq\^=\active + \catcode\lq\@@M=\active \toksa={\endgroup % + \def\CODElinei#1@@M{% + \begingroup\let`\lq \let'\rq % + \let^\CODEcircum \let~ \CODEtilde% + \edef\tmp{#1}% + \write\CODEwrite\expandafter{\tmp}% + \endgroup % + \indent\the\everycodeline #1\par % + \endgroup % matches \CODEline + }% +}\the\toksa +\begingroup\catcode`\^^M=13 \toksa={\endgroup % + \def\CODElinex#1^^M{% + \edef\tmp{\write\CODEwrite{#1}}\tmp % + {\indent\the\everycodeline #1\par}% + }% +} \the\toksa +\begingroup\catcode`\/=0 \catcode`\\=\other /toksa={/endgroup + /def/CODEbslash{\} +}/the/toksa +\begingroup\catcode`\^=\other \toksa={\endgroup + \def\CODEcircum{^} +}\the\toksa +\begingroup\catcode`\~=\other \toksa={\endgroup + \def\CODEtilde{~} +}\the\toksa +\begingroup\catcode`\%=\other \toksa={\endgroup + \def\%{%} +}\the\toksa +\begingroup\catcode`\~=\other \toksa={\endgroup + \def\CODEtilde{~} +}\the\toksa +\begingroup\catcode`\[=1 \catcode`\]=2 + \catcode`\{=\other \catcode`\}=\other + \toksa=[\endgroup + \def\CODElb[{] \def\CODErb[}] +]\the\toksa +\newtoks\everycode +\newtoks\everycodeline +\everycode{\tt \baselineskip=0.8\baselineskip \lineskiplimit=0pt } +\newcount\lineno +\everycodeline{\llap{$ \global\advance\lineno1 + \scriptstyle\the\lineno $\enspace}% + \mark\expandafter{\the\lineno}} +\let\document\relax \let\enddocument\relax +\lefthyphenmin=3 \righthyphenmin=2 \errorcontextlines10000 +\parindent=2em \hsize=36\fontdimen6\tentt \advance\hsize\parindent +\hoffset=210mm \advance\hoffset-\hsize \advance\hoffset-25mm +\newdimen\leftmargin \leftmargin=\hoffset \advance\leftmargin-25mm +\advance\hoffset-1in +\voffset=297mm \advance\voffset-11in +\advance\voffset7mm \advance\voffset20pt +\vsize=297mm \advance\vsize-2\voffset \advance\vsize-2\baselineskip +\advance\voffset-1in +\def\do#1{\fontdimen3#1=0pt \fontdimen4#1=0pt } +\do\tenrm \do\tenit \do\tenbf +\rightskip=0pt plus 2em minus 2pt \adjdemerits=0 \tolerance=500 +\parfillskip=0pt plus 0.8\hsize +\def\author#1{\def\theauthor{#1}} \author{P. Damian Cugley} +\font\titlefont=cmssbx10 scaled \magstep3 +\def\title#1{ + \vglue2\baselineskip + \begingroup \parindent-\leftmargin \hyphenpenalty10000 \titlefont + #1\smallskip + \endgroup + \leftline{Version \fileversion, + last changed \fileauthor\space \mungedate\filedate} + \ifx\filelocker\empty\else + \leftline{Edited by \filelocker\unskip\ \today} + \fi + \medskip + \hrule \vskip1pt \hrule \vskip1pt \hrule \vskip1pt \hrule + \medskip + \rightline{\theauthor} + \bigskip + \headline{\hfil\global\headline{% + \sevenbf \hskip-\leftmargin \themarks \hfil #1 + \fileversion + \ifx\filelocker\empty + \space\mungedate\filedate + \else + e\space\today + \fi + }} +} +\def\themarks{% + \ifx\firstmark\empty\else + \firstmark + \ifx\firstmark\botmark \else --\botmark \fi + \fi +} +\def\today{\mungedate{\number\year/\twodigits\month/\twodigits\day}} +\def\twodigits#1{\ifnum#1<10 0\fi \number#1} +\def\mungedate#1{$ \textfont0=\font \mathcode`/="7B #1 $} +\font\secfont=cmssdc10 at 12pt +\font\subsecfont=cmssi10 +\newcount\seccount +\newcount\subseccount +\def\section#1{% + \advance\seccount1 \subseccount=0 + \bigbreak + \begingroup + \secfont \hyphenpenalty=10000 \tolerance=1000 + \rightskip=0pt plus 2em + \noindent\llap{\number\seccount.\enspace}#1 + \medskip + \endgroup + \noindenttrue +} +\def\subsec#1{% + \advance\subseccount1 + \medbreak + \begingroup + \subsecfont \hyphenpenalty=10000 \tolerance=1000 + \rightskip=0pt plus 2em + \noindent\llap{\number\seccount.% + \number\subseccount.\enspace}#1 + \nobreak\smallskip + \endgroup + \noindenttrue +} +\newif\ifnoindent +\everypar{% + \ifnoindent + {\setbox0=\lastbox}\global\noindentfalse + \fi +} +\newskip\footnoterightskip \footnoterightskip=\rightskip +\catcode`@=11 +\def\vfootnote#1{\insert\footins\bgroup + \interlinepenalty\interfootnotelinepenalty + \splittopskip\ht\strutbox % top baseline for broken footnotes + \splitmaxdepth\dp\strutbox \floatingpenalty\@MM + \leftskip\z@skip \rightskip\footnoterightskip + \spaceskip\z@skip \xspaceskip\z@skip \rm + \textindent{#1}\footstrut\futurelet\next\fo@t} +\catcode`@=11 +\def\<#1>{\leavevmode\hbox{$\langle$\it#1\/$\rangle$}} +\def\cs#1{\leavevmode\hbox{\tt\char`\\#1}} +\def\arg#1{\leavevmode\hbox{{\tt\char`\{}#1{\tt\char`\}}}} +\def\pt{\,{\rm pt}} \def\em{\,{\rm em}} \def\mm{\,{\rm mm}} +\def\inch{''} +\def\flushtop#1{% + \leavevmode + \begingroup + \setbox0=\hbox{#1}\setbox2=\hbox{X}% + \dimen0=\ht2 \advance\dimen0-\ht0 + \raise\dimen0 \box0 + \endgroup +} +\def\TeX{T\kern-0.1em \lower0.5ex \hbox{E}X\spacefactor1000 } +\def\LaTeX{L\kern-0.1em \flushtop{a}\TeX} +\def\notepar{ + \smallskip + \begingroup + \leftskip2\parindent \advance\rightskip\parindent minus \parindent + \noindent\kern-\parindent{\bf Note}\quad\it + \ignorespaces +} +\def\endnotepar{ + \smallbreak + \endgroup +} +\endinput diff --git a/Master/texmf-dist/source/plain/pdcmac/pdccode2.tex b/Master/texmf-dist/source/plain/pdcmac/pdccode2.tex new file mode 100644 index 00000000000..62bb283ff3f --- /dev/null +++ b/Master/texmf-dist/source/plain/pdcmac/pdccode2.tex @@ -0,0 +1,292 @@ +%{{{ pdccode.tex -- used to make self-documenting TeX code +%{{{ rcs + +%%% version: $Revision: 1.2 $ + +% A simpler and less featureful system than the LaTeX "doc" package is used. +% Lines between \code and \endcode are printed to a file +% set with the \codefile{xx} command. They are also listed +% "verbatim" + +\def\rcs#1: #2,v #3 #4 #5 #6 #7\endrcs{ + \def\filename{#2} + \def\fileversion{#3} + \def\filedate{#4} + \def\fileauthor{#6} +} + +\rcs$Id: pdccode.tex,v 1.2 1994/12/03 16:26:00 pdc Exp pdc $\endrcs +\message{\fileversion\space<\fileauthor\space\filedate>} +%}}} rcs +%{{{ misc macros + +\errorcontextlines10000 +\def\expcs#1#2{\expandafter#1\csname#2\endcsname} +\def\noexpcs{\expcs\noexpand} + +%}}} misc macros +%{{{ verbatim text + +%% Define verbatim text using |...| +% This is used in the commentary + +% Tell the verbatim macros that #1 is an active char; this +% makes sure that the character will be catcoded appropriately +% when in verbatim mode. #1 should be a somethign that will +% wortk after "`". +\def\declareactivechar#1{% + \toks0=\expandafter{\verbatimplains\do#1}% + \edef\verbatimplains{\the\toks0 }% + \catcode`#1=13 +} + +\def\verbatimplains{\do\\\do\{\do\}\do\_\do\$\do\#\do\&\do\%} % \{}_$#&% +\def\verbatimactives{\do\`\do\'\do\~\do\^\do\ } % `'~^ + +% \setupverbatim -- makes almost all special characters catcode 12 +% except for ` ' ~ ^, which produce slightly lowered glyphs +\bgroup \catcode`\^=13 \catcode`\'=13 \catcode`\`=13 \toks0={\egroup + \def\setupverbatim{% + \frenchspacing + \spaceskip0pt \xspaceskip0pt % use spacing of font + \def\do##1{\catcode\lq##1=12 }\verbatimplains + \def\do##1{\catcode\lq##1=13 }\verbatimactives + \let`=\ttlq \let'=\ttrq + \let~=\tttilde \let^=\ttcircum + \the\everyverbatim + \hyphenchar\font=-1 + } +}\the\toks0 + +\def\ttlq{\lower0.125ex \hbox{\char18 }} +\def\ttrq{\lower0.125ex \hbox{\char19 }} +\def\tttilde{\lower0.5ex \hbox{\char`\~ }} +\def\ttcircum{\lower0.5ex \hbox{\char`\^ }} + +\newtoks\everyverbatim % expanded at start of every verbatim text + + +% Define #1 as a self-matching verbatim character. +% #1 must be a one-char control-sequence +\def\defverbatim#1{% + \declareactivechar#1 + \begingroup \uccode`\~=`#1 \uppercase{\toks0={\endgroup + \def~{% + \leavevmode + \begingroup % matched by closing char + \tt + \setupverbatim + \catcode`#1=13 \let~=\endgroup + }% + }}\the\toks0 +} + +\declareactivechar\| \defverbatim\| +%}}} verbatim text +%{{{ writing code sections + +% \docodefiles is \do{xx}\do{yy} for a set of file identifiers +% Each file identifier xx has \ifxx, \xxfalse, \xxtrue, \xxwrite +% I am greatly hampered by the fact that \newwrite and \newif are \outer! +\def\docodefiles{} + +\def\codefile#1#2{ + \toks0=\expandafter{\docodefiles\do{#1}} + \edef\docodefiles{\the\toks0 } + \expcs\CODEnewwrite{#1write} + \CODEnewif{#1} \csname#1true\endcsname + \expcs\openout{#1write}=#2 + \expcs\def{filename#1}{#2} +} +\catcode`@=11 +\def\CODEnewwrite#1{\alloc@7\write\chardef\sixt@@n #1} +\catcode`@=12 +\def\CODEnewif#1{% + \expcs\edef{#1true}{\let\noexpcs{if#1}\noexpand\iftrue} + \expcs\edef{#1false}{\let\noexpcs{if#1}\noexpand\iffalse} + \csname#1false\endcsname +} + +\def\allfilesfalse{\begingroup + \def\do##1{\global\csname##1false\endcsname}\docodefiles + \endgroup +} +\def\allfilestrue{\begingroup + \def\do##1{\global\csname##1true\endcsname}\docodefiles + \endgroup +} + + +\def\endcodefile#1{ + \expcs\closeout{#1write} + \csname #1false\endcsname + \message{Code written to \csname filename#1\endcsname.} +} + +\def\code{ + \smallskip + \begingroup + \let|\CODEline % code line without expansion + \let\|\CODElinex % code line with expansion + \let\{=\CODElb \let\}=\CODErb \let\\=\CODEbslash \def~{ } + \the\everycode + \obeylines +} +\def\endcode{ + \smallbreak + \endgroup +} +\def\CODEline{% + \begingroup + \setupverbatim + \catcode`\|=12 + \CODElinei +} + + +% In \CODFElinei, We must redefine the characters that are active +% within verbatim text to expand to their catcode-12 equivalents when +% they are written to the code file. Since one of these is ^, we +% temporarily give @ the meaning of ^ so that we may safely munge the +% catcode of ^. + +\begingroup \catcode`\'=13 \catcode`\`=13 + \catcode\lq\@=\catcode\lq\^ \catcode\lq\^=13 + \catcode\lq\@@M=13 \toks0={\endgroup% + \def\CODElinei#1@@M{% + \begingroup\let`\lq \let'\rq \let^\CODEcircum \let~\CODEtilde % + \edef\tmp{{#1}}% + \def\do##1{\csname if##1\endcsname % + \expcs\write{##1write}\tmp \fi % + }\docodefiles % + \endgroup + \indent\the\everycodeline #1\par % + \endgroup % + }% + \def\CODElinex#1@@M{% + \def\do##1{\csname if##1\endcsname % + \edef\filename{\csname filename##1\endcsname} % + \edef\tmp{{#1}} % + \expcs\write{##1write}\tmp \fi % + }\docodefiles % + \def\filename{\}% + {\indent\the\everycodeline #1\par}% + }% +}\the\toks0 + +% Make macros which expand to various special characters, with catcode 12: +\begingroup\catcode`\/=0 \catcode`\\=12 /toks0={/endgroup + /def/CODEbslash{\} +}/the/toks0 +\begingroup\catcode`\^=12 \toks0={\endgroup + \def\CODEcircum{^} +}\the\toks0 +\begingroup\catcode`\~=12 \toks0={\endgroup + \def\CODEtilde{~} +}\the\toks0 +\begingroup\catcode`\%=12 \toks0={\endgroup + \def\%{%} +}\the\toks0 +\begingroup\catcode`\[=1 \catcode`\]=2 \catcode`\{=12 \catcode`\}=12 \toks0=[\endgroup + \def\CODElb[{] \def\CODErb[}] +]\the\toks0 +\newtoks\everycode +\newtoks\everycodeline + +\def\filenamesanssuffix{\expandafter\CODEsanssuffix\filename.\CODEsanssuffix} +\def\CODEsanssuffix#1.#2\CODEsanssuffix{#1} +%}}} writing code sections +%{{{ layout + + +\newcount\seccount +\newcount\subseccount +\font\secfont=cmssdc10 at 12pt +\font\subsecfont=cmssi10 + +\def\section#1{% + \advance\seccount1 \subseccount=0 + \bigbreak + \begingroup + \secfont \hyphenpenalty=10000 \tolerance=1000 + \parskip=0pt \parindent=0pt \rightskip=0pt plus 2em + \number\seccount. #1 + \medskip + \endgroup +} + +\def\subsec#1{% + \advance\subseccount1 + \medbreak + \begingroup + \subsecfont \hyphenpenalty=10000 \tolerance=1000 + \parskip=0pt \parindent=0pt \rightskip=0pt plus 2em + \number\seccount.\number\subseccount. #1 + \nobreak\smallskip + \endgroup +} + +\def\notepar{ + \smallskip + \begingroup + \narrower\noindent\hang + {\bf Note}\quad\it + \ignorespaces +} +\def\endnotepar{ + \smallbreak + \endgroup +} + +% Leave a largish right margin; eventually marginalia will go +% there. Allow enough line length for 80-character code lines. This +% makes the text lines a bit longer than I'd like but I don't want to +% have to resort to having code lines in a smaller font. +\hsize=40em \advance\hsize\parindent + +% (297mm-11in) is the strip of paper lost if printed on USA +% letter paper; allow another bit for some laserprinters that +% can't print to the edge of the paper. +\voffset=297mm \advance\voffset by -11in \advance\voffset by 0.25in +\vsize=297mm \advance\vsize-2\voffset \advance\vsize-2\baselineskip +\advance\voffset-1in + +\def\do#1{\fontdimen3#1=0pt \fontdimen4#1=0pt } +\do\tenrm \do\tenit \do\tenbf + +\rightskip=0pt plus 2em minus 2pt +\tolerance=500 +\lefthyphenmin=3 \righthyphenmin=2 + +%}}} layout +%{{{ abbrevs + +\def\<#1>{\leavevmode\hbox{$\langle$\it#1\/$\rangle$}} +\def\cs#1{\leavevmode\hbox{\tt\char`\\#1}} +\def\arg#1{\leavevmode\hbox{{\tt\char`\{}#1{\tt\char`\}}}} +\def\pt{\,{\rm pt}} +\def\flushtop#1{% + \leavevmode + {% + \setbox0=\hbox{#1}\setbox2=\hbox{X}% + \dimen0=\ht2 \advance\dimen0-\ht0 + \raise\dimen0 \box0 + }% +} +\def\TeX{T\kern-0.1em\lower0.5ex\hbox{E}X} +\def\LaTeX{L\kern-0.167em\flushtop{a}\TeX} + +%}}} abbrev +\newskip\footnoterightskip \footnoterightskip=\rightskip +\catcode`@=11 +\def\vfootnote#1{\insert\footins\bgroup + \interlinepenalty\interfootnotelinepenalty + \splittopskip\ht\strutbox % top baseline for broken footnotes + \splitmaxdepth\dp\strutbox \floatingpenalty\@MM + \leftskip\z@skip \rightskip\footnoterightskip + \spaceskip\z@skip \xspaceskip\z@skip \rm + \textindent{#1}\footstrut\futurelet\next\fo@t} +\catcode`@=11 + + +%}}} pdccode.tex diff --git a/Master/texmf-dist/source/plain/pdcmac/pdcdoc.def b/Master/texmf-dist/source/plain/pdcmac/pdcdoc.def new file mode 100644 index 00000000000..0061070fd79 --- /dev/null +++ b/Master/texmf-dist/source/plain/pdcmac/pdcdoc.def @@ -0,0 +1,232 @@ +% pdcdoc.def 1.2 1995/03/30 -- macros for short documents +%%%@TeX-definition-file { +%%% filename = "pdcdoc.def", +%%% version = "1.2", +%%% date = "1995/03/30", +%%% 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, style file", +%%% supported = "Maybe", +%%% abstract = "Sectioning macros for style files. +%%% This macro file was generated by running plain +%%% TeX on pdcsty.dtx", +%%% copyright = "Copyright (c) 1991-1995 P. Damian Cugley", +%%% copying = "DO NOT DISTRIBUTE THIS FILE. +%%% Distribute pdcsty.dtx only as part of the +%%% package it came in.", +%%% dependencies = "" +%%%} + +\message{1.2 } + +\topmg=297mm \advance\topmg-11in \advance\topmg7mm +\botmg=\topmg +\advance\topmg\ht\strutbox \advance\topmg\headlineskip +\ifdim \topmg<20mm \topmg=20mm \fi +\ifdim \botmg<27mm \botmg=27mm \fi +\setpaper{210mm}{297mm} +\setnkgrid{4}{3} +\colrule=0pt +\leftmargin=\gridwd \advance\leftmargin\colsep +\everypage={\ifdim\leftmargin>0pt + \setbox\leftbox=\hbox to \gridwd{}\fi} +\everyfootnote={\notefonts} +\everylinenum={\smallfonts} +\everylinenum={\smallfonts} +\everytag={\bf} +\newcount\partno +\def\thepartno{% + \ifcase\partno O\or I\or II\or III\or IV\or V\else + \expandafter\uppercase\expandafter{\romannumeral\partno}% + \fi +} +\newcount\secno \newcount\subsecno \newcount\subsubsecno +\def\thesecno{% + \n{% + \number\secno + \ifnum\subsecno>0 + .\number\subsecno + \ifnum\subsubsecno>0 + .\number\subsubsecno + \fi + \fi + }% +} +\newtoks\majorheadline +\expandafter\majorheadline + \expandafter{\expandafter\uppercase\expandafter{\jobname}} +\def\part#1{% + \global\advance\partno1 + \newpageheading{2\baselineskip}{\headingfonts} + {}{\thepartno.\quad#1} + \TOCwrite\TOCentrypart{\thepartno}{#1} +} +\newcount\sectionpenalty +\def\sectionheading#1{ + \par + \vskip 0pt plus 0.3\vsize + \penalty\sectionpenalty \sectionpenalty-200 + \vskip 1\bigskipamount plus -0.3\vsize + \begingroup \advance\leftskip-\leftmargin + \parskip=0pt \parindent=0pt + \hyphenpenalty=10000 \exhyphenpenalty=500 + \interlinepenalty=100 + \headingfonts \nointerlineskip + \hbox{\hskip-\leftmargin + \vrule height 2pt depth 0pt width \leftmargin + \vrule height 2pt depth 0pt width \hsize} + #1\par + \nobreak\smallskip + \endgroup + \global\noindenttrue +} +\newtoks\sectiontoks +\newif\ifsecno \secnotrue +\def\section#1{ + \ifsecno + \global\advance\secno1 \global\subsecno0 \global\subsubsecno0 + \fi + \toks0={#1} + \mark{{\the\sectiontoks}{\ifsecno\S\thesecno\space\fi\the\toks0 }} + \edef\tmp{\ifsecno\noexpand\S\the\secno\space\fi} + \global\sectiontoks\expandafter{\tmp#1} + \sectionheading{\ifsecno\thesecno\quad\fi #1} + \mark{{\the\sectiontoks}{\the\sectiontoks}} + \TOCwrite\TOCentrysection{\ifsecno\thesecno\fi}{#1} +} +\def\subsec#1{% + \ifsecno \global\advance\subsecno1 \global\subsubsecno0 \fi + \doheading\medskipamount{\subheadingfonts}{} + {\ifsecno\thesecno\quad\fi#1} + \TOCwrite\TOCentrysubsec{\ifsecno\thesecno\fi}{#1} +} +\def\subsubsec#1{% + \ifsecno \global\advance\subsubsecno+1 \fi + \doheading\smallskipamount{\rm}{}{\ifsecno\thesecno\quad\fi#1} + \TOCwrite\TOCentrysubsubsec{\ifsecno\thesecno\fi}{#1} +} +\newif\ifnoheadline +\newif\iftwosided +\footline={% + \ifnoheadline + \global\noheadlinefalse + \hfil\bodyfonts\n\folio\hfil + \else + \hfil + \fi +} +\headline={% + \ifnoheadline + \hfil + \else + \bodyfonts + \iftwosided + \ifodd\pageno + \hfil + \expandafter\firstoftwo\botmark\quad + {\bf\n\folio}% + \else + {\bf\n\folio}\quad + \the\majorheadline + \hfil + \fi + \else + \the\majorheadline + \hfil + \expandafter\secondoftwo\topmark\quad + {\bf\n\folio}% + \fi + \fi +} +\def\firstoftwo#1#2{#1} +\def\secondoftwo#1{} +\newwrite\TOCfile +\openout\TOCfile=\jobname.toc +\def\TOCwrite#1#2#3{% + \begingroup\def\n{\string\n} + \def\tmp{#3}% + \edef\tmp{\string#1{#2}{\expandafter\TOCtrim\meaning\tmp}} + \write\TOCfile\expandafter{\tmp{\folio}}\endgroup +} +\def\TOCtrim#1:->{} +\def\TOCentrypart#1#2#3{ + \smallskip + \dimen0=\hsize \advance\dimen0\leftmargin + \moveleft\leftmargin\hbox to\dimen0{\strut\bf #1. #2\hfil} + \smallskip +} +\def\TOCentrysection#1#2#3{ + \smallskip\noindent\llap{#1\kern1pc}% + {\bf \ignorespaces #2\quad\rm \n{#3}}\par +} +\def\TOCentrysubsec#1#2#3{ + \ifvmode \noindent \else \quad \fi + {#1}~{\ignorespaces #2} +} +\def\TOCentrysubsubsec#1#2#3{} +\def\frontmatter{ + \write\TOCfile{\string\endinput} + \write\TOCfile{\folio} + \closeout\TOCfile + \vfill\supereject + \ifvoid\partialpage\else \null\vfill\eject \fi + \beginthe{frontmatter} + \pageno=-1 \secnofalse \noheadlinetrue + \def\TOCwrite##1##2##3{} +} +\def\endfrontmatter{ + \section{Contents} + \input\jobname.toc + \vfill\supereject + \endthe{frontmatter} +} +\def\titlepage{ + \vfill\eject + \beginthe{titlepage} + \noheadlinetrue + \def\splittitlepage{ + \iftwosided \vfill\eject\null\vfill \else \vfill \fi + } +} +\def\endtitlepage{ + \eject + \endthe{titlepage} +} +\def\abstract{ + \smallskip + \beginthe{abstract} + \setbox\parbox\hbox to \gridwd{\subheadingfonts Abstract\hfil} + \noindenttrue \bodyfonts +} +\def\endabstract{ + \smallskip + \endthe{abstract} +} +\def\pt{\,{\rm pt}} +\def\mm{\,{\rm mm}} +\def\MF{{\ifdim\fontdimen1\font>0pt \mfi \else \mf \fi META}\-% + {\ifdim\fontdimen1\font>0pt \mfi \else \mf \fi FONT}} +\def\MSDOS{\leavevmode\hbox{MS-DOS}} +\def\TeX{T\kern-0.1em\lower0.5ex\hbox{E}X\spacefactor1000 } +\begingroup\catcode`\|=12 \toks0={\endgroup + \def\dfn#1{\ifx\index\UNDEFINED\else\index{#1|INDdfn}\fi{\bi #1}} +} \the\toks0 +\declareactivechar\* \def*#1*{{\it#1\/}} +\def\|{% + \relax\ifmmode + \Vert + \else + \begingroup + \ttb \setupverbatim + \catcode`\|=13 \let|\endgroup + \fi +} +\def\inputifexists#1{% + \openin15=#1 + \ifeof15 \else \input #1 \fi + \closein15 +} diff --git a/Master/texmf-dist/source/plain/pdcmac/pdcfmt2.dtx b/Master/texmf-dist/source/plain/pdcmac/pdcfmt2.dtx new file mode 100644 index 00000000000..6d8c5c78af2 --- /dev/null +++ b/Master/texmf-dist/source/plain/pdcmac/pdcfmt2.dtx @@ -0,0 +1,1194 @@ +% pdcfmt2.dtx -- documentation & source for pdcfmt2.tex -*-tex-*- + +%%%@TeX-document-file { +%%% title = "PDCFMT2 -- Formatting Macros", +%%% filename = "$texmf/doc/plain/pdcmac/pdcfmt2.dtx", +%%% version = "$Revision: 2.4 $", +%%% package = "pdcmac 1.0", +%%% date = "$Date: 1995/04/06 11:55:16 $", +%%% 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 file pdcfmt2.tex. +%%% Running plain TeX on this file produces both the +%%% definitions file 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" +%%%} + +%{{{ pdcfmt2 +%{{{ preamble + +\relax +\input pdccode +\document +\rcs$Id: pdcfmt2.dtx,v 2.4 1995/04/06 11:55:16 pdc Exp $\endrcs + +\def\example{ + \smallskip\hrule\nobreak\smallskip + \dimen0=\hsize \advance\dimen0-1pc \divide\dimen0 2 + \halign to \hsize\bgroup\vtop{\tt\def~{\hfil\break} \def\\{\char`\\\relax} \hsize=\dimen0 ##}\tabskip=0pt plus 1fil& + \vtop{\hsize=\dimen0 ##}\tabskip=0pt\cr +} +\def\endexample{ + \crcr\egroup + \nobreak\smallskip\hrule\smallskip +} + +\codefile{pdcfmt2.tex} +%}}} preamble +%{{{ introduction + +\author{P. Damian Cugley} +\title{PDCFMT2---Formatting Macros} +\section{Introduction} + + This document describes |pdcfmt2.tex|, a collection of + formatting macros for plain \TeX\ documents. For example, it + defines commands for making bulleted lists, verbatim text, and + generic headings. For longer documents, a higher-level `style + file' like |pdccmdoc.tex| will define commands to start sections + and generate a table of contents and so on. + + The definitions file and the printed documentation are both in + |pdcfmt2.dtx|, a `documented \TeX\ macros' file\footnote*{The + \LaTeX~2e distribution uses files with the `|dtx|' suffix for + similar purposes.} which, when processed by plain \TeX, + generates a fresh copy of |pdcfmt2.tex| in the current directory + in addition to the |dvi| file. This ensures that the printed + documentation and the code it describes are identical. The + |dtx| file uses the macros in |pdccode.tex|. + + The name of the macros file ends in `-|2|' to prevent confusion + with |pdcfmt.tex| version 1.1.10, with which it is slightly + incompatible. + +%}}} introduction +%{{{ File identification +\section{File identification} + + Nowadays, macro files start with some comments identifying the + file. + +\code + \|\% pdcfmt2.tex \fileversion~\filedate~-- macros for formatting + | + |%%%@TeX-definition-file { + |%%% filename = "$texmf/tex/plain/pdcmac/pdcfmt2.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 = "Formatting macros for plain TeX documents. + |%%% This file was generated by running + \|\%\%\%~~~~~~~~~~~~~~~~~~~plain TeX on \jobname.dtx", + |%%% copyright = "Copyright (c) 1991-1995 P. Damian Cugley", + |%%% copying = "DO NOT DISTRIBUTE THIS FILE. + \|\%\%\%~~~~~~~~~~~~~~~~~~~Distribute \jobname.dtx only as part of the + |%%% package it came in.", + |%%% dependencies = "", + |%%% } + | + \|\\message\{\fileversion~\} + | +\endcode + +%}}} getting started +%{{{ internal + +\section{Internal definitions} + + Most internal control sequence names will start with `|FMT|'. + Here are a few miscellaneous definitions used to save a token + here or there. + + I will often use |\toksa| to create definitions containing + characters with unusual catcodes. The idiom is +$$\halign{\indent#\hfil\cr + |\begingroup| \ |\toksa={\endgroup|\cr + \quad\\cr + |} \the\toksa|\cr +}$$ + When |\toksa| is expanded, it closes the group (undoing the + \) but then scans the \ using the + catcodes set by \. (In extreme cases, the + definition of |\toksa| might be enclosed in |\uppercase|, to get + strange characters into a definiton.) + + The advantage of this idiom over using |\gdef| in a group is + that the definitions need not be global. Avoiding global + assignments makes it more likely that the document will be + embeddable in other documents. + + Using |\toksa| instead of |\toks0| is more robust when using + |\uppercase|, because digits are be given |\uccode| values by + |maamac.tex|. +\code + |\toksdef\toksa=0 + |\chardef\other=12 +\endcode + +%}}} internal +%{{{ verbatim text + +\section{Verbatim text} + + `Verbatim' text means text designed to match the ASCII + characters in the manuscript file as closely as possible. It + kis most often used in computer manuals, where commands typed to + a computer or the contents of text files are to be presented. + Within verbatim text, most of \TeX's special characters are + temporarily disabled. + +\subsec{Lists of active chararcters} + + The verbatim text macros need to know if any characters have + been made special apart from the usual ones. This command tells + the verbatim macros that |#1| is an active char; in addition to + setting its catcode, this makes sure that the character will be + re-catcoded appropriately when in verbatim mode. |#1| should be + a something that will work after `|`|'; usually this means a + one-character control sequence. +\code + |\def\declareactivechar#1{% + | \toksa\expandafter{\verbatimplains\do#1}% + | \edef\verbatimplains{\the\toksa }% + | \catcode`#1\active + |} +\endcode + + Two list macros in the style of |\dospecials| are defined. The + first is for characters that must be set to catcode~12, such as + `|\|', `|{|', `|}|', `|_|', `|$|', `|#|', `|&|', and `|%|'. The + other is for a few characters that are given catcode~13, such as + `|`|', `|'|', `|~|', `|^|' and SP. +\code + |\def\verbatimplains{\do\\\do\{\do\}\do\_\do\$\do\#\do\&\do\%} + |\def\verbatimactives{\do\-\do\`\do\'\do\~\do\^\do\ } +\smallbreak + |\chardef\other=12 +\endcode + +\subsec{Setting up verbatim mode} + + This is a macro common to various verbatim text modes. The + default spacing of whatever font is used, without any + adjustments of spacefactor for punctuation. The characters + `|`|', `|'|', `|~|', and `|^|' are produce slightly lowered + glyphs. +\code + |\newtoks\everyverbatim +\smallbreak + |\bgroup \catcode`\-=13\catcode`\^=13 \catcode`\'=13 \catcode`\`=13 \toksa={\egroup + | \def\setupverbatim{% + | \frenchspacing + | \spaceskip0pt \xspaceskip0pt % use spacing of font + | \def\do##1{\catcode\lq##112 }\verbatimplains + | \def\do##1{\catcode\lq##1\active }\verbatimactives + | \let`\ttlq \let'\ttrq + | \let~\tttilde \let^\ttcircum \let-\ttminus + | \the\everyverbatim + | } + |}\the\toksa +\endcode + + Here are the definitions for the munged glyphs. These are only + necessary in CM Typewriter; when using a PostScript font, + different definitions would be necessary. + + The names `rq' and `lq' are based on the use of |\lq| and |\rq| + in plain \TeX. An alternative definition for |\ttrq| would be + |\chardef\ttrq="0D|, producing `{\tt\char"0D }'. +\code + |\def\ttlq{\lower0.125ex \hbox{\char18 }} + |\def\ttrq{\lower0.125ex \hbox{\char19 }} + |\def\tttilde{\lower0.5ex \hbox{\char`\~ }} + |\def\ttcircum{\lower0.5ex \hbox{\char`\^ }} + |\def\ttminus{-} +\endcode + This makes the difference between |`'^~| and + {\tt`'\char`\^\char`\~}. + + The macro |\ttminus| is included because it is needed for + PostScript font support. + +\subsec{Defining a self-matching character for verbatim text} + + A macro for defining a self-matching verbatim character (I~got + the idea of a macro for declaring verbatim characters from the + \LaTeX~2e documentation macros). |#1| must be a one-character + control sequence. If it isn't active already, then + |\declareactivechar| is applied to it first. +\code + |\def\defverbatim#1{% + | \ifcat\noexpand#1\noexpand~\else \declareactivechar#1 \fi + | \begingroup \uccode`\~=`#1 \uppercase{\toksa={\endgroup + | \def~{% + | \leavevmode + | \begingroup \tt \setupverbatim + | \catcode`#1\active \let~\endgroup + | }% + | }}\the\toksa + |} +\endcode + Note that there must be a font called |\tt| for it to switch to. + (The catcode of |#1| is set to 13 after calling |\setupverbatim| + because |#1| will be included in |\verbatimplains|.) + + Finally, we define vertical bar as the conventional + self-matching verbatim-mode character. +\code + |\defverbatim\| +\endcode + Both |\defverbatim| and |\defineactivechar| have local scope. + +\subsec{List a file verbatim} + + This does something similar to the |lines| environment (see + below), except here an external file is read in verbatim (see + {\it\TeX book} Appendix~D, Section~3). The + |\startlinenumbering| macro may be put in the |\everylisting| + token register to create a listing with numbered lines. +\code + |\newtoks\everylisting +\smallbreak + |\def\listfile#1{ + | \medskip + | \begingroup + | \parindent=0pt \parskip=0pt + | \def\par{\null\endgraf}\obeylines + | \setupverbatim \maketabstab + | \tt \the\everylisting + | \input#1 + | \endgroup + | \medskip\noindent\ignorespaces + |} +\endcode + This macro redefines character |^^I| (horizontal tab) to produce + the equivalent of eight spaces. This isn't quite the same as + what HTs are used for with UNIX files, but it works adequately + if all your tabs are at the start of the line (i.e., if tabs are + used only for indentation, not to make tables). +\code + |{\catcode`\^^I=\active + | \gdef\maketabstab{\catcode`\^^I\active \def^^I{\hskip 4em}} + |} +\endcode + +%}}} verbatim text +%{{{ everypar + +\section{Everypar hacks} + +\subsec{Parameters} + + The following may be set by higher-level macros to change the + apearance of the next paragraph. + + If the flag |\ifnoindent| is set, then the indentation of the + next paragraph will be removed (by deleting the box added by + \TeX's |\indent| primitive). Thus |\noindenttrue| works like + |\noindent|, except that there may be blank lines between + |\noindenttrue| and the paragraph it affects. +\code + |\newif\ifnoindent +\endcode + This flag is reset globally once it has had its effect. + + If the box |\parbox| is non-void, then its value is typeset in + the left margin of the next paragraph. (At present this does an + implicit |\noindenttrue| but later versions may allow the next + paragraph to be indented.) The righthand edge of the parbox + will be distance |\parboxsep| from the left edge of the text + area. +\code + |\newbox\parbox + |\newdimen\parboxsep \parboxsep=1pc +\endcode + +\subsec{Setting \cs{everypar}} +\code + |\everypar={% + | \ifvoid\parbox + | \ifnoindent {\setbox0=\lastbox}\global\noindentfalse \fi + | \else + | {\setbox0=\lastbox}\global\noindentfalse + | \dp\parbox=0pt + | \hbox to 0pt{\hss \box\parbox \hskip\parboxsep}% + | \fi + |} +\endcode +%}}} everypar +%{{{ environment intrinsics + +\section{Environment infrastructure} + + An environment is a structure used to typeset textual elements + consisting of several \TeX\ paragraphs (usually embedded within + one conceptual paragraph). It is a concept like \LaTeX\ + environments, but with the syntax changed to be more + plain-\TeX-like. + + Since environments have one argument that may span many lines in + the file we use more verbose brackets than |{|--|}| to make it + easier to spot where they begin and end. This is a structure in + a document looking like this: + $$ +\vbox{\halign{#\hfil\cr + |\|\\\cr + \quad\dots\cr + |\end|\\cr +}} + $$ + + A new environment is defined by defining macros called + |\|\ and |\end|\. Within the |\|\ and + |\end|\ macros, calls to |\beginthe| and |\endthe| are + used to check that environments are nested properly. +\code + |\def\beginthe#1{% + | \begingroup\def\PDCFMTblockname{#1}% + |} +\smallbreak + |\def\endthe#1{% + | \def\tmp{#1}% + | \ifx\tmp\PDCFMTblockname + | \endgroup + | \else + | \errmessage{You should have said \string\endthe{\blockname}}% + | \fi + |} +\endcode + +\subsec{A generic end-of-environment macro} + + This macro does a |\smallskip| (if there is not already a larger + skip on the current list), and sets the `noindent' flag so that + the following \TeX\ paragraph is not indented. +\code + |\def\PDCFMTendenv#1{ + | \smallskip + | \endthe{#1} + | \global\noindenttrue + |} +\endcode + + Where an environment describes text that should be indented, + usually |\parindent| should be used (for consistency). If + |\parindent| is zero we still want to indent the text, and we + use |\envindent| to describe how much to indent it by. +\code + |\newdimen\envindent \envindent=1pc +\smallskip + |\def\PDCFMTindent{% + | \ifdim\parindent>0pt + | \parindent + | \else + | \envindent + | \fi + |} +\endcode + +%}}} environment intrinsics +%{{{ quotations + +\section{Quotations} + + This is a simple environment, with the left margin indented and + the first paragraph in the quotetd text not indented. +\example + It is ... who said~ + \\quotation~ + \indent Shookum hip rallo dyne.~ + \\endquotation~ + Indeed, it burgle gurgler. +& + It is interesting to remember the words of + Spencone Tipeth, who said + \smallskip\leftskip\parindent \noindent + Shookum hip rallo + dyne.\smallskip\leftskip0pt \noindent Indeed, it burgle gurgler. +\endexample +The token + register |\everyquotation| might be used to arrange for all + quotations to be in smaller type with + $$\hbox{|\everyquotation={\smallfonts}|}$$ +\code + |\newtoks\everyquotation +\smallbreak + |\def\quotation{ + | \smallskip + | \beginthe{quotation} + | \advance\leftskip\PDCFMTindent + | \noindenttrue + | \the\everyquotation + |} +\smallbreak + |\def\endquotation{\PDCFMTendenv{quotation}} +\endcode + The differences from using |{\narrower|\dots|\par}| (apart from + how it looks in the source file) include (a)~the right margin + isn't indented; (b)~it indents by |\envindent| if there is no + |\parindent| and (c)~it is preceeded and followed by a + smallskip. +%}}} quotations +%{{{ textlists (bullets + numbered) + +\section{Textlists---bulleted or numbered lists} + + Here's a generic list-of-items environment, used to implemented + bulleted and numbered lists. Each item is started with the + convenient |\\| macro (and so may contain more than one + paragraph). It is called a `textlist' to distinguish it from + other meanings of the word `list'. Usually textlists will be + generated with higher-level macros like |\bullets| and + |\numbered|. + +\subsec{A generic textlist environment} + + The token register |\everytextlist| is expanded at the start + of every textlist. The level of nesting is recorded in + |\textlistdepth| (a to-level list is depth~0, a list inside + that is depth~1, and so on). The flag |\ifnumbered| controls + whether items are numbered (using |\numberfordepth|) or + bulleted (using |\bulletfordepth|). +\code + |\newtoks\everytextlist + |\newif\ifnumbered + |\newcount\textlistdepth \textlistdepth=-1 + |\newcount\textlistcount +\smallbreak + |\def\textlist{% + | \par + | \beginthe{textlist} + | \advance\textlistdepth 1 + | \textlistcount0 + | \def\\{ + | \smallskip\noindent + | \advance\textlistcount1 + | \llap{% + | \ifnumbered + | \numberfordepth\textlistdepth\textlistcount + | \else + | \bulletfordepth\textlistdepth + | \fi\enspace}% + | \ignorespaces + | } + | \advance\leftskip\PDCFMTindent + | \the\everytextlist + |} +\smallbreak + |\def\endtextlist{\PDCFMTendenv{textlist}} +\endcode + +\subsec{Bulleted lists} + + This describes a bulleted list, where each paragraph is indented + and preceeded by a mark in the margin. +\example + I would like to make...~\\bullets~\\\\ this point; and~\\\\ that + point~\\endbullets~And so on and so forth. +& I would like to make the following very important and relevant + itemized points:\smallskip\item{$\bullet$}this point; + and\smallskip\item{$\bullet$}that + point\smallskip\noindent And so on and so forth. +\endexample +Bullets environments may + be nested, in which case different marks are used. The sign is + chosen with |\bulletfordepth|. +\code + |\newtoks\everybullets +\smallbreak + |\def\bullets{\textlist \numberedfalse \the\everybullets} + |\let\endbullets=\endtextlist +\smallbreak + |\def\bulletfordepth#1{% + | \ifcase#1 $\bullet$\or --\or $\circ$\else $\cdot$\fi + |} +\endcode + + +\subsec{Numbered lists} + + The numbered list is similar. The style of numbering changes + with the listing depth; you can change this by redefining + |\numberfordepth|. + $$ +\centerline{\vbox{\halign{#\hfil&\qquad\hfil# &&\hfil# \cr + Depth 0&1.&2.&3.&\dots\cr + Depth 1&(1)&(2)&(3)&\dots\cr + Depth 2&({\it a\/})&({\it b\/})&({\it c\/})&\dots\cr + Depth 3+&(i)&(ii)&(iii)&\dots\cr +}}} + $$ + There is also a token regieter |\everynumbered| for any extra + customization. This is read after |\everytextlist|. +\code + |\newtoks\everynumbered +\smallbreak + |\def\numbered{\textlist \numberedtrue \the\everynumbered} + |\let\endnumbered=\endtextlist +\smallbreak + |\def\numberfordepth#1#2{% + | \ifcase#1 \n{\number#2}.\or (\n{\number#2})\or + | ({\it\alphabetletter#2\/})\else (\romannumeral#2)\fi + |} +\endcode + It turns out that sometimes it is useful to be able to impose a + format on numbers generated by formatting macros. For example, + I~occasionally find it useful to force all numbers to be + generated in maths mode. To do this, all numbers generated by + macros are enclosed in |\n{|--|}|. By default, |\n| is + equivalent to |\relax|. +\code + |\let\n\relax +\endcode + +\subsec{Picking a letter of the alphabet} + + This macro behaves as much like the primitives |\number| and + |\romannumeral| as it can: it expands entirely within \TeX's + mouth, and so may be used in |\edef|s and the like. It produces + |???| or |!!!| if its argument is not in the range 1--26. + The macro is defined so as to reduce the number of tokesn to be + skipped when |#1| is less than 6. +\code + |\def\alphabetletter#1{% + | \ifcase#1 ??? \or a\or b\or c\or d\or e\else + | \xxxalphabetletter#1\fi + |} + |\def\xxxalphabetletter#1{% + | \ifcase#1 \or\or\or\or\or\or f\or g\or h\or i\or j\or + | k\or l\or m\or n\or o\or p\or q\or r\or s\or t\or u\or + | v\or w\or x\or y\or z\else !!!\fi + |} +\endcode + +%}}} textlists (bullets + numbered) +%{{{ tagged list + +\section{Tagged lists} + + In other words, description lists. Each paragraph starts with + the `tag' set either in the left margin or sticking in to the + current line if it is too long to fit. The tag for each + paragraph is introduced with `|\\|\arg{\}'. + + The maximum width of tag labels (including the 1\thinspace en + space that goes between label and text) in is stored in + |\tagmaxwidth|. If there is not room, then the label is run on + in to the paragraph and separated from the text by a quad space. +\code + |\newdimen\tagmaxwidth +\endcode + As well as giving a new definition to the |\\| macro, the + |\tagged| command mast choose a value for |\tagmaxwidth|. If + there is a large left margin (signalled by giving |\leftmargin| + a positive value) then tags will go in there; otherwise the text + will be indented and the amount of indentation used as the + maximum label width. +\code + |\newtoks\everytagged +\smallbreak + |\def\tagged{% + | \par + | \beginthe{tagged} + | \let\\\TAG + | \ifdim\leftmargin=0pt + | \tagmaxwidth\PDCFMTindent + | \else + | \tagmaxwidth\leftmargin + | \fi + | \the\everytagged + | \ifdim\tagmaxwidth>\leftmargin + | \leftskip\tagmaxwidth \advance\leftskip-\leftmargin + | \fi + |} +\smallbreak + |\def\endtagged{\PDCFMTendenv{tagged}} +\endcode + The adjustment to |\leftmargin| comes after scanning + |\everytagged| so that it is possible to adjust |\tagmaxwidth| + inside |\everytagged|. + + Trickery with |\futurelet| and |\aftergroup| (like that used in + plain \TeX's |\footnote| command) is used to allow catcode + changes in \ to work. This allows macros that generate + `verbatim' text to work. +\code + |\newtoks\everytag +\smallbreak + |\def\TAG{% + | \smallskip\noindent + | \setbox0=\hbox\bgroup % matched by \TAGfinish + | \the\everytag\ignorespaces + | \futurelet\next\TAGtest + |} +\smallbreak + |\def\TAGtest{% + | \ifcat\bgroup\noexpand\next + | \let\next\TAGgotbrace + | \else + | \let\next\TAGnobrace + | \fi \next + |} +\smallbreak + |\def\TAGgotbrace{% + | \bgroup\aftergroup\TAGfinish + | \let\next + |} +\smallbreak + |\def\TAGnobrace#1{% + | #1\TAGfinish + |} +\smallbreak + |\def\TAGfinish{% + | \unskip\hskip0.5em\egroup % matches \TAG + | \ifdim \wd0 < \tagmaxwidth + | \wd0=\tagmaxwidth + | \llap{\box0}% + | \else + | \hskip-\tagmaxwidth + | \unhbox0 \unskip\quad + | \fi + | \ignorespaces + |} +\endcode + It might be interesting to generalize these macros so that new + macros with an argument scanned this way may be created more + easily. +%}}} tagged list +%{{{ lines + +\section{Lines environment (for program listings etc)} + + In the |lines| environment, each line in the manuscript file + becomes a new paragraph (i.e., a separate line on the printed + page). A |%| at the end of a line may be used to split a file + line in to several logical lines. In addition, the |lines| + environment is bracketed by horizontal rules. The effect is + similar to that produced by the |\beginlines|--|\endlines| + macros in {\it\TeX book} Appendix~E. + +\code + |\newtoks\everylines +\smallbreak + |\def\lines{ + | \par + | \beginthe{lines} + | \nobreak\smallskip\hrule\nobreak\smallskip + | \obeylines + | \parindent=0pt \parskip=0pt + | \parfillskip=0pt plus 1fil + | \the\everylines + | \nobreak + |} +\smallbreak + |\def\endlines{ + | \nobreak\smallskip + | \endthe{lines} + | \hrule\smallskip + | \global\noindenttrue + |} +\endcode + + For longer listings it may be nice to have the lines numbered + for later reference. The following two macros may be put in + |\everylines| to enable line numbering---the first starts from~1 + in each listing environment, the other continues the numbering + from where it left off. + + The line number is kept in |\linenumber| (which may be adjusted + by the user). Only every 5th line is numbered. The number of + lines until the next printed one is held in |\PDCFMTcount|. + Both these are always set globally (which means lines + environments cannot be nested!). +\code + |\newcount\linenumber + |\newcount\PDCFMTcount +\smallbreak + |\def\startlinenumbering{% + | \global\linenumber=0 \global\PDCFMTcount=5 + | \everypar{\numberthisline}% + |} +\smallbreak + |\def\continuelinenumbering{% + | \everypar{\numberthisline}% + |} +\endcode + + The |\numberthisline| macro is invoked at the beginning of every + paragraph. It increments |\linenumber|, and writes the line + number of every fifth line in the right margin. By default it + uses the same font as used in subscripts; this can be changed by + changing the token register |\everylinenum|. +\code + |\newtoks\everylinenum \everylinenum{\the\scriptfont0 } +\smallbreak + |\def\numberthisline{% + | \strut + | \global\advance\linenumber1 \global\advance\PDCFMTcount-1 + | \ifnum\PDCFMTcount>0 \else + | \global\advance\PDCFMTcount 5 + | \rlap{\the\everylinenum \kern\hsize\kern1em \the\linenumber}% + | \fi + |}% +\endcode + + Within the lines environment it can be useful to indicate where + lines have been skipped. This macro also adjusts the + |\linenumber| macro. +\code + |\def\linesskipped#1{% + | \strut \hskip20pt $\vdots$ \hskip20pt + | {\rm(\it #1 lines omitted\rm)}\par + | \advance\linenumber#1\relax + |} +\endcode + +%}}} lines +%{{{ display, table + +\section{Displays, Tables -- wrapper about \cs{halign}} + + The |display| environment does a generic (meaning not + necessarily mathematical) display, in a manner similar to the + |\begindisplay|--|\enddisplay| macros in {\it\TeX book} + Appendix~E. As with Knuth's macro, assignments may follow on + the same line as |\display|, and |\cr| and |&| may be used to + split the display into rows and columns. +\code + |\outer\def\display{\obeylines\startdisplay} + |\bgroup\obeylines \toksa={\egroup % + | \def\startdisplay#1^^M{% + | \catcode`\^^M=5 $$ #1 % matched by \enddisplay + | \displayindent\PDCFMTindent % + | \halign\bgroup##\hfil&&\quad##\hfil\cr % + | } % + |}\the\toksa % +\smallbreak + |\def\enddisplay{\crcr\egroup$$} +\endcode + + The |table| environment is similar, ecept that what follows + |\table| is an arbitrary |\halign| specification. +\code + |\def\table{% + | $$ % matching $$ is in \endtable + | \displayindent\PDCFMTindent + | \halign \bgroup + |} +\smallbreak + |\let\endtable=\enddisplay +\endcode + +\notepar + Both the {\tt table} and {\tt display} environments must go + within paragraphs. That is, there should not be blank lines + before |\table|, or after |\endtable| unless the table ends the + paragraph. +\endnotepar +%}}} display, table +%{{{ ebnf + +\section{(E)BNF} + + BNF is Bakus-Naur Formalism; EBNF is Extended BNF. The same + environment does either format. The style I~happen to like, has + non-terminal sumbols written like \, and terminal symbols + enclosed in `--'. Optional text is enclosed in brackets (I~like + to put spaces between the brackets and the enclosed text for + clarity) and repeatable text in braces. + + In the manuscript file, each production is a separate paragraph. + The macro |\>| goes between the left hand side and right hand + side of a production; by default, it expands to `$::=$'. + Alternatives are separated by |\\|; by default this expands to a + bar `$\mid$'. If the terminal symbols happen to be keyboard + characters, use the verbatim text character {\tt\char`\|} which + adds quotation marks around the text it produces. For example, + the following expression + $$ + \hbox{\\enspace$::=$\enspace`|f|' `|o|' `|o|' $\mid$ + \ [ \ `{\bf munge}' ].} + $$ + may be produced with + $$ + \defverbatim\~ + \hbox{~\ \> |f| |o| |o| \\ \ [ \ `{\bf munge}' ].~} + $$ + Braces are produced with |\{| and |\}|. + +\code + |\newtoks\everybnf +\smallbreak + |\def\bnf{ + | \nobreak\smallskip + | \beginthe{bnf} + | \advance\leftskip2\parindent \parindent=-\parindent + | \parskip0pt plus 1pt + | \rightskip=1\rightskip plus 3em + | \def\\{$\mid$} + | \def\>{\unskip\enspace$::=$\enspace\ignorespaces} + | \def|{`\begingroup\tt\setupverbatim\catcode`\|=13 + | \def|{\endgroup'}} + | \def\{{$\lbrace$} \def\}{$\rbrace$} + | \the\everybnf + |} +\smallbreak + |\def\endbnf{ + | \smallskip + | \endthe{bnf} + | \global\noindenttrue + |} +\endcode + + The macro |\<| is based on the one in Appendix~E of the {\it\TeX + book}. For example, |\| produces `\'. +\code + |\def\<#1>{\leavevmode\hbox{$\langle${\it#1\/}$\rangle$}} +\endcode + The difference is that the name is in italics: \ not + $\langle$name$\rangle$. + +\notepar + This macro is not intened for be used to generate character + names like Return and Tab; I suggest just saying `Return' and + `Tab' for these. + + There is a style of RFC-822 email addresses written in the form + `\/|Damian Cugley |'. I suggest that when + presenting email addresses in printed documents this be rendered + as something like `\/{\rm Damian Cugley (|pdc@alleged.co.uk|)}'. +\endnotepar +%}}} ebnf +%{{{ headings + +\section{Headings} + + Here are some macros for making headings for sections of a + document. There are two styles of layout supported by these + heading macros: the usual style~$N$, with headings above the + first paragraph of the section, and the `tab-indexed' style~$T$, + with headings in the left margin, aligned with the first line of + the paragraph. + + +\subsec{The left margin parameter} + For style~$T$ headings, this is the size of the extra margin at + the left side of the page (so $({\it hoffset}+1\,{\rm in})-{\it + leftmargin}$ is the margin between the left edge of headings and + the edge of the paper). Set this parameter to $0\pt$ for + style~$N$. + +\code + |\newdimen\leftmargin +\endcode + + +\subsec{Headings that don't start a new page} + + This macro is intended to be used by higher-level macro with + names like |\section|, which take care of numbering section + headings and so on. + $$ + \hbox{\tt\cs{doheading}\arg{\}\arg{\