diff options
author | Karl Berry <karl@freefriends.org> | 2006-01-11 23:49:22 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2006-01-11 23:49:22 +0000 |
commit | 465c3a91c12b03e3e44ed760e4356fa340f830b8 (patch) | |
tree | 9bb1431edccd3171136bb2efbba1a426e289ccd1 /Master/texmf-dist | |
parent | b3e91602f5c5c87db7d26bc4e2422697cbfefdb8 (diff) |
trunk/Master/texmf-dist/source/plain
git-svn-id: svn://tug.org/texlive/trunk@114 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist')
70 files changed, 15773 insertions, 0 deletions
diff --git a/Master/texmf-dist/source/plain/jsmisc/History b/Master/texmf-dist/source/plain/jsmisc/History new file mode 100644 index 00000000000..dfa7bbf787e --- /dev/null +++ b/Master/texmf-dist/source/plain/jsmisc/History @@ -0,0 +1,25 @@ +plain/js-misc/History 30 Jul 95 -*- Indented-Text -*- +--------------------------------------------------------------------------- + + + deutsch.tex uses german.sty. (With babel 3.5, germanb.sty + cannot be used with plain TeX any more.) [1] + + +Version 1.3 07 May 95 + + xfig.tex handles \SetFigFont variants (from transfig versions + 2.1 & 3.1) automatically. + + +Version 1.2 17 Apr 95 + + Typo in sperr.tex prevented it from working. + + Don't allocate registers in xfig.tex globally, to allow + reading it several times in a group. + + +Version 1.1 16 Mar 95 + + First public release. diff --git a/Master/texmf-dist/source/plain/jsmisc/INSTALL b/Master/texmf-dist/source/plain/jsmisc/INSTALL new file mode 100644 index 00000000000..540e67301ce --- /dev/null +++ b/Master/texmf-dist/source/plain/jsmisc/INSTALL @@ -0,0 +1,65 @@ +$Id: INSTALL,v 1.1 1995/03/16 01:18:22 schrod Exp $ +------------------------------------------------------------ + +These instructions are written for the installation of this package on +a TDS-compliant TeX system. (TDS is the forthcoming standard for TeX +installations, refer to ftp.th-darmstadt.de:/pub/tex/TDS-compliant/draft/ +for more information.) If you don't have such a system, you have to +figure out your directory names yourself. + +If you're on a Unix system and want to use make for installation, read +further. Otherwise skip forward to ``MANUAL INSTALLATION''. + + +------------------------------------------------------------ +INSTALLATION BY MAKE: + +Edit the Makefile and adapt the values of the following variables to +your system. Sorry, but the values are not collected at the top of the +Makefile, use your editor to locate them. (The Makefile is generated +by Imake, I don't touch it... :-) + + MAKEDIR [Default: mkdir -p] + A command to create a directory, including all + non-existent intermediate ones. + + DESTDIR [Default is empty] + This is a prefix that's prepended in front of all + destination directories, in case your installation + structure is somewhere else than your run-time + location. + + INSTALL [Default depends on the machine I generated the distribution] + A BSD install program. + If you have a System V Unix, and you have X11, you can + use a script named bsdinst.sh or bsdinst or + install.sh that's located your X11 bin directory. + If you don't have a BSD install program, you must use + the manual installation, described below. + + TEXMF [Default: /usr/local/lib/texmf] + The root of your (TDS) TeX tree. + +Now, type "make install" and everything should be OK. + + + +------------------------------------------------------------ +MANUAL INSTALLATION: + + +The Imakefile features definitions that look like +InstallTeX<category>(<package>,<files>). + +Copy all <files> to a directory that is appropriate for this +<category> and this <package>. (The <category> `Generic' denotes macro +files that can be used with many TeX formats, including plain TeX, +LaTeX, and AmS-TeX.) + The TDS directory names are $TEXMF/tex/<category>/<package>/, +where $TEXMF is your TDS root directory and <category> is +all-lowercase. + + +------------------------------------------------------------ +# LocalWords: tex MAKEDIR DESTDIR bsdinst sh usr lib texmf Imakefile AmS +# LocalWords: InstallTeX diff --git a/Master/texmf-dist/source/plain/jsmisc/Imakefile b/Master/texmf-dist/source/plain/jsmisc/Imakefile new file mode 100644 index 00000000000..4592d64acc9 --- /dev/null +++ b/Master/texmf-dist/source/plain/jsmisc/Imakefile @@ -0,0 +1,96 @@ +XCOMM $Id: Imakefile,v 1.5 1995/05/28 00:30:55 schrod Exp $ +/* ---------------------------------------------------------------------- */ + +/* + * Imakefile for plain TeX macro package `js-misc' + * + * (history at end) + */ + + +/* needed modules */ +#include <install/TeX.imk> +#include <makeprog.imk> +#include <TeX.imk> + +XCOMM ------------------------------------------------------------ +XCOMM continue in Imakefile + + +/* + * The plain TeX package `js-misc' consists of the following macro files: + * + * cassette -- Labels for audio cassettes + * deutsch -- German texts with plain TeX + * idverb -- Verbatim identifiers a la WEB + * names.sty -- Logos + * schild -- Make a label (for doors, books, etc.) + * sperr -- Letterspace text (but don't steel sheep...) + * xfig -- Incorporate xfig output in plain TeX documents + */ + +#ifdef ITI_Site + DESTDIR = /archives/tex/Install +#endif + +InstallTeXPlain(js-misc,cassette.tex deutsch.tex idverb.tex \ + schild.tex sperr.tex xfig.tex) +InstallTeXGeneric(misc,names.sty) +InstallTeXDoc(plain,js-misc.dvi) + + +MpDoc2TeXTarget(deutsch,tex) +MpDoc2TeXTarget(idverb,tex) + +TeXTarget(ftex,js-misc) + + +/* + * creating a source-distribution of this macro package + */ + +TeXFileTarget(tex,deutsch,doc) +TeXFileTarget(tex,idverb,doc) + +export:: deutsch.dvi idverb.dvi + $(MAKE) all + $(RM) *.log + +/* This will get a module, too. */ +export:: + touch site.imk + $(MAKE) Makefile IMAKE_INCLUDES=-I. + $(RM) -r site.imk Makefile.bak + cp $(HOME)/Notes/Copying.gpl License + pwd=`pwd` ; pwd=`suffix $$pwd /` ; cd .. ; \ @@\ + gtar -czvf $$pwd.tar.gz \ @@\ + --exclude=CVS --exclude=.cvsignore $$pwd ; \ @@\ + cp $$pwd/README $$pwd.README + + +/* ============================================================ + * + * $Log: Imakefile,v $ + * Revision 1.5 1995/05/28 00:30:55 schrod + * On export, exclude CVS files by gtar options, not be removing + * them. Do also export the README file. + * + * Revision 1.4 1995/04/16 23:21:04 schrod + * Moved itinames.sty & TH viscards to plain-iti package. + * + * Revision 1.3 1995/03/16 02:22:12 schrod + * Export also DVI versions of DOC files. + * + * Revision 1.2 1995/03/16 01:17:45 schrod + * Use TeX module. + * Add export target. + * + * Revision 1.1 1995/03/13 23:18:09 schrod + * Started to manage this package with CVS. Made minor code cleanup. + * + + * ------------------------------------------------------------ + * Local Variables: + * mode: Indented-Text + * End: + */ diff --git a/Master/texmf-dist/source/plain/jsmisc/License b/Master/texmf-dist/source/plain/jsmisc/License new file mode 100644 index 00000000000..a43ea2126fb --- /dev/null +++ b/Master/texmf-dist/source/plain/jsmisc/License @@ -0,0 +1,339 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 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. + + Preamble + + 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. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. 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. + + 1. 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. + + 2. 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: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) 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. + + c) 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.) + +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. + + 3. 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: + + a) 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, + + b) 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, + + c) 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.) + +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. + + 4. 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. + + 5. 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. + + 6. 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. + + 7. 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. + + 8. 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. + + 9. 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. + + 10. 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. + + NO WARRANTY + + 11. 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. + + 12. 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. + + END OF TERMS AND CONDITIONS + + Appendix: How to Apply These Terms to Your New Programs + + 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. + + <one line to give the program's name and a brief idea of what it does.> + Copyright (C) 19yy <name of author> + + 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. + + 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. + + 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. + +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: + + 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. + +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: + + 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 + +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. diff --git a/Master/texmf-dist/source/plain/jsmisc/Makefile b/Master/texmf-dist/source/plain/jsmisc/Makefile new file mode 100644 index 00000000000..492717b7700 --- /dev/null +++ b/Master/texmf-dist/source/plain/jsmisc/Makefile @@ -0,0 +1,288 @@ +# Makefile generated by imake - do not edit! +# $XConsortium: imake.c,v 1.91 95/01/12 16:15:47 kaleb Exp $ + +# $ITI: Imake.tmpl,v 1.5 1995/01/24 17:48:12 schrod Exp $ +#---------------------------------------------------------------------- +# Makefile generated from "Imake.tmpl" and <Imakefile> +# +# Top level imake template of `Imake module edition'. +# + +default: all + +# ====================================================================== +# MIT & XFree configuration files +# $ITI: MIT-config.imk,v 1.3 1994/12/19 19:16:35 schrod Exp $ + +# ------------------------------------------------------------------------- +# site-specific configuration parameters that need to come before +# the platform-specific parameters - edit site.def to change + +# $ITI: site.def,v 1.7 1995/03/27 14:41:35 herr Exp $ +# +# ITI site definitions +# +# starting from original MIT version + +# site: $XConsortium: site.def,v 1.2 91/07/30 20:26:44 rws Exp $ + +# ------------------------------------------------------------------------- +# platform-specific configuration parameters - edit x386.cf to change + +# $ITI: x386.cf,v 1.3 1994/06/30 17:03:54 schrod Exp $ +# $XFree86: mit/config/x386.cf,v 2.44 1994/04/16 04:20:56 dawes Exp $ +# platform: $XConsortium: x386.cf,v 1.7 91/08/16 19:30:10 gildea Exp $ + +# operating system: Linux + +# ------------------------------------------------------------------------- +# site-specific configuration parameters that go after +# the platform-specific parameters - edit site.def to change + +# $ITI: site.def,v 1.7 1995/03/27 14:41:35 herr Exp $ +# +# ITI site definitions +# +# starting from original MIT version + +# site: $XConsortium: site.def,v 1.2 91/07/30 20:26:44 rws Exp $ + + KMEMGROUP = kmem + +# ====================================================================== +# Imake template with basic definitions +# $ITI: Base.imk,v 1.5 1994/11/28 20:57:37 schrod Exp $ + + LOCALDIR = /usr/local + +# ------------------------------------------------------------ +# Imake template for operations on files +# $ITI: files.imk,v 1.5 1994/12/02 19:46:44 schrod Exp $ + + COPYIF = copyif + CPP = /lib/cpp + LN = ln -s + MAKEDIR = mkdir -p + MV = mv + RM = /bin/rm -f + + + +# ------------------------------------------------------------ +# Imake template for use of imake & makedepend +# $ITI: imake.imk,v 1.9 1995/06/30 16:29:13 schrod Exp $ + + + + IMAKE = imake + + IMAKE_STD_OPTIONS = + IMAKE_STD_INCLUDES = -I$(LOCALDIR)/lib/imake + IMAKE_STD_DEFINES = + + IMAKE_FLAGS = $(IMAKE_OPTIONS) $(IMAKE_EXTRA_OPTIONS) $(IMAKE_STD_OPTIONS) $(IMAKE_INCLUDES) $(IMAKE_EXTRA_INCLUDES) $(IMAKE_STD_INCLUDES) $(IMAKE_DEFINES) $(IMAKE_EXTRA_DEFINES) $(IMAKE_STD_DEFINES) + + + + MAKE = make + SHELL = /bin/sh + + + + TOPDIR = . + CURDIR = . + THISDIR = `basename $(CURDIR)` + + MAKEOVERRIDES = + + + +depend:: + touch .dependdummy + $(DEPEND) $(DEPENDFLAGS) -s "# DO NOT DELETE" .dependdummy + $(RM) .dependdummy + + DEPEND = makedepend + DEPENDFLAGS = + + + + SUBDIRS = + +########################################################################### +# start of Imakefile + +# $Id: Imakefile,v 1.5 1995/05/28 00:30:55 schrod Exp $ + +# ====================================================================== +# Imake template for installation of TeX files +# $ITI: TeX.imk,v 1.2 1995/03/14 12:55:51 schrod Exp $ + +# ====================================================================== +# Imake template for software installation +# $ITI: install.imk,v 1.2 1995/03/14 12:56:05 schrod Exp $ + + DESTDIR = + + INSTALL = install + INSTALL_OWNER = $(USER) + INSTALL_GROUP = `id -gn` + + INSTALL_DATA_RIGHTS = 644 + INSTALL_PROGRAM_RIGHTS = 755 + INSTALL_SCRIPT_RIGHTS = 755 + + TEXMF = /usr/local/lib/texmf + +# ====================================================================== +# Imake template for MAKEPROG, the Literate Documentation system +# $ITI: makeprog.imk,v 1.2 1995/03/14 12:55:29 schrod Exp $ + + MP_DOC2TEX = doc2tex + MP_TEX2DOC = tex2doc + +# ====================================================================== +# Imake template for TeX & friends +# $ITI: TeX.imk,v 1.1 1995/03/14 19:40:12 schrod Exp $ + + TEX_IT = tex-it + +# ------------------------------------------------------------ +# continue in Imakefile + +install:: + $(MAKEDIR) $(DESTDIR)/$(TEXMF)/tex/plain/js-misc + @test "cassette.tex deutsch.tex idverb.tex schild.tex sperr.tex xfig.tex" -o "cassette.tex deutsch.tex idverb.tex schild.tex sperr.tex xfig.tex" = "NullParameter" && \ + for file in cassette.tex deutsch.tex idverb.tex schild.tex sperr.tex xfig.tex '' ; \ + do if [ empty$$file != empty ] ; \ + then (set -x; $(INSTALL) -c -o $(INSTALL_OWNER) -g $(INSTALL_GROUP) -m $(INSTALL_DATA_RIGHTS) $$file $(DESTDIR)/$(TEXMF)/tex/plain/js-misc) ; \ + fi ; \ + done || \ + exit 0 + +install:: + $(MAKEDIR) $(DESTDIR)/$(TEXMF)/tex/generic/misc + @test "names.sty" -o "names.sty" = "NullParameter" && \ + for file in names.sty '' ; \ + do if [ empty$$file != empty ] ; \ + then (set -x; $(INSTALL) -c -o $(INSTALL_OWNER) -g $(INSTALL_GROUP) -m $(INSTALL_DATA_RIGHTS) $$file $(DESTDIR)/$(TEXMF)/tex/generic/misc) ; \ + fi ; \ + done || \ + exit 0 + +install:: + $(MAKEDIR) $(DESTDIR)/$(TEXMF)/doc/plain + @test "js-misc.dvi" -o "js-misc.dvi" = "NullParameter" && \ + for file in js-misc.dvi '' ; \ + do if [ empty$$file != empty ] ; \ + then (set -x; $(INSTALL) -c -o $(INSTALL_OWNER) -g $(INSTALL_GROUP) -m $(INSTALL_DATA_RIGHTS) $$file $(DESTDIR)/$(TEXMF)/doc/plain) ; \ + fi ; \ + done || \ + exit 0 + +deutsch.tex: deutsch.doc + $(MP_DOC2TEX) deutsch.doc deutsch.tex + +all:: deutsch.tex + +clean:: + $(RM) deutsch.tex + +idverb.tex: idverb.doc + $(MP_DOC2TEX) idverb.doc idverb.tex + +all:: idverb.tex + +clean:: + $(RM) idverb.tex + +all:: js-misc.dvi + +js-misc.dvi: js-misc.tex + $(TEX_IT) ftex js-misc.tex + +clean:: + $(RM) js-misc.dvi js-misc.log js-misc.aux js-misc.toc js-misc.blg + +realclean:: + $(RM) js-misc.bbl + +deutsch.dvi: deutsch.doc + $(TEX_IT) tex deutsch.doc + +clean:: + $(RM) deutsch.dvi deutsch.log deutsch.aux deutsch.toc deutsch.blg + +realclean:: + $(RM) deutsch.bbl + +idverb.dvi: idverb.doc + $(TEX_IT) tex idverb.doc + +clean:: + $(RM) idverb.dvi idverb.log idverb.aux idverb.toc idverb.blg + +realclean:: + $(RM) idverb.bbl + +export:: deutsch.dvi idverb.dvi + $(MAKE) all + $(RM) *.log + +export:: + touch site.imk + $(MAKE) Makefile IMAKE_INCLUDES=-I. + $(RM) -r site.imk Makefile.bak + cp $(HOME)/Notes/Copying.gpl License + pwd=`pwd` ; pwd=`suffix $$pwd /` ; cd .. ; \ + gtar -czvf $$pwd.tar.gz \ + --exclude=CVS --exclude=.cvsignore $$pwd ; \ + cp $$pwd/README $$pwd.README + +# ------------------------------------------------------------------------- +# common rules for all Makefiles - do not edit + +Makefile:: + @if [ -f Makefile ]; \ + then set -x; \ + $(RM) Makefile.bak; $(MV) Makefile Makefile.bak; \ + else set -x; fi ; \ + $(IMAKE) $(IMAKE_FLAGS) -DImakeTopDir=$(TOPDIR) -DImakeCurrentDir=$(CURDIR); \ + set +x + +Makefiles:: + @case "$(MAKEFLAGS)" in *[ik]*) set +e;; esac; \ + case "$(TOPDIR)" in \ + /?*) newtop=$(TOPDIR) ;; \ + *) newtop=../$(TOPDIR) ;; \ + esac; \ + test "$(SUBDIRS)" -o "$(SUBDIRS)" = "NullParameter" && \ + for d in $(SUBDIRS) '' ; \ + do if [ empty$$d != empty ] ; \ + then echo "making Makefiles in $(CURDIR)/$$d ..."; \ + $(MAKE) subdirMakefiles SUBDIR=$$d TOPDIR=$$newtop CURDIR=$(CURDIR)/$$d ; \ + fi ; \ + done || \ + exit 0 + +subdirMakefiles:: + @cd $(SUBDIR) ; \ + if [ -f Makefile ]; \ + then set -x; \ + $(RM) Makefile.bak; $(MV) Makefile Makefile.bak; \ + else set -x; fi ; \ + $(IMAKE) $(IMAKE_FLAGS) -DImakeTopDir=$(TOPDIR) -DImakeCurrentDir=$(CURDIR); \ + set +x ; \ + $(MAKE) Makefiles + +clean:: + $(RM) $(CLEAN_EXTRA_FILES) *.CKP *.ln *.BAK *.bak *.o core errs ,* *~ *.a .emacs_* tags TAGS make.log MakeOut "#"* + +# ------------------------------------------------------------------------- +# default rules for Imakefiles that do not generate them - do not edit + +all:: + +# ------------------------------------------------------------------------- +# dependencies generated by makedepend + diff --git a/Master/texmf-dist/source/plain/jsmisc/README b/Master/texmf-dist/source/plain/jsmisc/README new file mode 100644 index 00000000000..14e8bf3f5c8 --- /dev/null +++ b/Master/texmf-dist/source/plain/jsmisc/README @@ -0,0 +1,45 @@ +$Id: README,v 1.2 1995/05/07 16:58:21 schrod Exp $ +------------------------------------------------------------ + + +The plain/js-misc package collects some small miscellaneous plain TeX +macros I wrote and use quite regularly. You'll find a complete list of +the package's macro files at the start of Imakefile. + +In my opinion, of particular importance are + + idverb.tex Typesetting verbatim by |...| + xfig.tex Typeset figures created by xfig (transfig, actually) + +There does not exist a user manual for most macros. A German +description of two minor macro files (cassette.tex & schild.tex) is +available in js-misc.{tex,dvi}. Other DVI files in this distribution +feature explanations of specific macro files, typically with +implementation info as well. The rest has user documentation at the +top of the macro files, as comments. + +For installation instructions, check the file INSTALL. + + +Reference anonymous ftp site: + ftp.th-darmstadt.de [130.83.47.112] + directory pub/tex/plain + file js-misc-<version>.tar.gz + where <version> is the current version number + (a gzipped tar file) + +CTAN directory: + macros/plain/contrib/js-misc/ + version info is in file History + + +Enjoy, + Joachim + +-- +=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +Joachim Schrod Email: schrod@iti.informatik.th-darmstadt.de +Computer Science Department +Technical University of Darmstadt, Germany + + diff --git a/Master/texmf-dist/source/plain/jsmisc/TODO b/Master/texmf-dist/source/plain/jsmisc/TODO new file mode 100644 index 00000000000..dc42a352abf --- /dev/null +++ b/Master/texmf-dist/source/plain/jsmisc/TODO @@ -0,0 +1,2 @@ + +------------------------------------------------------------ diff --git a/Master/texmf-dist/source/plain/jsmisc/names.sty b/Master/texmf-dist/source/plain/jsmisc/names.sty new file mode 100644 index 00000000000..57452c17b52 --- /dev/null +++ b/Master/texmf-dist/source/plain/jsmisc/names.sty @@ -0,0 +1,95 @@ +% $Id: names.sty,v 1.2 1995/03/13 23:18:13 schrod Exp $ +%------------------------------------------------------------ + +% +% Verfuegbarkeit von haeufigen Abkuerzungen/Logos in +% LaTeX und Formate bei Grund-Schriftgroesse 10pt. +% +% alle Logos nur in Roman +% TeX related Logos: +% \TeX +% \INITeX +% \Plain Plain TeX +% \LaTeX +% \BibTeX +% \SliTeX +% \MakeIndex (kursiv) +% \AmSTeX AmS-TeX +% \LAMSTeX LAmS-TeX +% \MF METAFONT +% \INIMF +% \WEB +% \CWEB +% \TIE +% \stTeX +% \stMF +% Dateitypen (alle in teletype): +% \LOG +% \DVI +% \FMT +% \TFM +% \GF +% \PK +% \PXL +% andere Logos: +% \C++ + + +\font\tenlogo=logo10 +\let\logo=\tenlogo +\ifx \mc\undefined \let\mc=\small \fi % fuer LaTeX, `medium caps' + + +% FIXME: should the space factor be set to 1000 afterwards? +% is it a global value? otherwise it would be a faulty design within TeX... +\def\TeX{{\rm T\kern-.1667em\lower.5ex\hbox{E}\kern-.125emX}} +\def\INITeX{{\rm INI\TeX}} + +\def\Plain{{\rm Plain~\TeX}} + +% LaTeX-Definition mit Original-TeX-Logo! +% Entspricht nicht der Definition von L. Lamport, ist aber konsistenter +\def\LaTeX{{\rm L\kern-.36em\raise.3ex\hbox{\sc a}\kern-.15em\TeX}} +\def\BibTeX{{\rm B\kern-.05em{\sc i\kern-.025em b}\kern-.08em\TeX}} +\def\SliTeX{{\rm S\kern-.06em{\sc l\kern-.035em i}\kern-.06em\TeX}} +\def\MakeIndex{{\it MakeIndex\/}} + +\def\AmSTeX{% + $\cal A\kern-.1667em\lower.5ex\hbox{$\cal M$}\kern-.125em S$% + -\TeX + } +\def\LAMSTeX{% + L\raise.42ex\hbox{$\scriptstyle\kern-.3em\cal A$}\kern-.2em + \lower.376ex\hbox{$\cal M$}\kern-.125em $\cal S$% + -\TeX + } + + +\def\MF{{\logo META}\-{\logo FONT\/}} +\def\INIMF{{\mc INI}{\logo MF}} + + +\def\WEB{{\tt WEB\/}} +\def\CWEB{{\mc CWEB}} +\def\TIE{{\tt TIE\/}} + + +\def\stTeX{{\sc st\rm\kern-0.13em\TeX}} % unser stTeX (TeXsys) +\def\stMF{{\sc st}{\logo MF}} % unser stMF + + +\def\LOG{{\tt LOG\/}} +\def\DVI{{\tt DVI\/}} +\def\FMT{{\tt FMT\/}} +\def\TFM{{\tt TFM\/}} + +\def\GF{{\tt GF\/}} +\def\PK{{\tt PK\/}} +\def\PXL{{\tt PXL\/}} + + + +\def\C++{C\raise .4ex\hbox{$\scriptstyle +\!+$}} + + +\endinput diff --git a/Master/texmf-dist/source/plain/jsmisc/xfig/text-2.1-doc.tex b/Master/texmf-dist/source/plain/jsmisc/xfig/text-2.1-doc.tex new file mode 100644 index 00000000000..ed37a84508c --- /dev/null +++ b/Master/texmf-dist/source/plain/jsmisc/xfig/text-2.1-doc.tex @@ -0,0 +1,27 @@ +% $Id: text-2.1-doc.tex,v 1.1 1995/05/07 16:52:36 schrod Exp $ +%------------------------------------------------------------ + +% +% Test for xfig text typesetting of transfig 2.1 output +% + + +\input ../xfig.tex + +$$ +\hbox{\input text-2.1.latex } +$$ + + + +\bye + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +Local Variables: +mode: plain-TeX +TeX-parse-self: nil +TeX-auto-save: nil +TeX-master: t +End: diff --git a/Master/texmf-dist/source/plain/jsmisc/xfig/text-2.1.fig b/Master/texmf-dist/source/plain/jsmisc/xfig/text-2.1.fig new file mode 100644 index 00000000000..21c740e0675 --- /dev/null +++ b/Master/texmf-dist/source/plain/jsmisc/xfig/text-2.1.fig @@ -0,0 +1,3 @@ +#FIG 2.1 +80 2 +4 0 0 10 0 -1 0 0.00000 2 13 58 26 29 Hello, World diff --git a/Master/texmf-dist/source/plain/jsmisc/xfig/text-2.1.latex b/Master/texmf-dist/source/plain/jsmisc/xfig/text-2.1.latex new file mode 100644 index 00000000000..9eccd773f82 --- /dev/null +++ b/Master/texmf-dist/source/plain/jsmisc/xfig/text-2.1.latex @@ -0,0 +1,26 @@ +\setlength{\unitlength}{0.012500in}% +% +\begingroup\makeatletter\ifx\SetFigFont\undefined +% extract first six characters in \fmtname +\def\x#1#2#3#4#5#6#7\relax{\def\x{#1#2#3#4#5#6}}% +\expandafter\x\fmtname xxxxxx\relax \def\y{splain}% +\ifx\x\y % LaTeX or SliTeX? +\gdef\SetFigFont#1#2#3{% + \ifnum #1<17\tiny\else \ifnum #1<20\small\else + \ifnum #1<24\normalsize\else \ifnum #1<29\large\else + \ifnum #1<34\Large\else \ifnum #1<41\LARGE\else + \huge\fi\fi\fi\fi\fi\fi + \csname #3\endcsname}% +\else +\gdef\SetFigFont#1#2#3{\begingroup + \count@#1\relax \ifnum 25<\count@\count@25\fi + \def\x{\endgroup\@setsize\SetFigFont{#2pt}}% + \expandafter\x + \csname \romannumeral\the\count@ pt\expandafter\endcsname + \csname @\romannumeral\the\count@ pt\endcsname + \csname #3\endcsname}% +\fi +\fi\endgroup +\begin{picture}(0,13)(27,810) +\put( 27,810){\makebox(0,0)[lb]{\smash{\SetFigFont{10}{12.0}{rm}Hello, World}}} +\end{picture} diff --git a/Master/texmf-dist/source/plain/jsmisc/xfig/text-3.1-doc.tex b/Master/texmf-dist/source/plain/jsmisc/xfig/text-3.1-doc.tex new file mode 100644 index 00000000000..2bde7ee926c --- /dev/null +++ b/Master/texmf-dist/source/plain/jsmisc/xfig/text-3.1-doc.tex @@ -0,0 +1,27 @@ +% $Id: text-3.1-doc.tex,v 1.1 1995/05/07 16:52:38 schrod Exp $ +%------------------------------------------------------------ + +% +% Test for xfig text typesetting of transfig 3.1 output +% + + +\input ../xfig.tex + +$$ +\hbox{\input text-3.1.latex } +$$ + + + +\bye + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +Local Variables: +mode: plain-TeX +TeX-parse-self: nil +TeX-auto-save: nil +TeX-master: t +End: diff --git a/Master/texmf-dist/source/plain/jsmisc/xfig/text-3.1.latex b/Master/texmf-dist/source/plain/jsmisc/xfig/text-3.1.latex new file mode 100644 index 00000000000..c35c42a91a7 --- /dev/null +++ b/Master/texmf-dist/source/plain/jsmisc/xfig/text-3.1.latex @@ -0,0 +1,11 @@ +\setlength{\unitlength}{0.01250000in}% +% +\begingroup\makeatletter\ifx\SetFigFont\undefined% +\gdef\SetFigFont#1#2#3#4#5{% + \reset@font\fontsize{#1}{#2pt}% + \fontfamily{#3}\fontseries{#4}\fontshape{#5}% + \selectfont}% +\fi\endgroup% +\begin{picture}(0,13)(27,808) +\put( 27,810){\makebox(0,0)[lb]{\smash{\SetFigFont{10}{12.0}{\familydefault}{\mddefault}{\updefault}Hello, World}}} +\end{picture} 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 <pdc@booth35.ecs> + + * 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 <pdc@booth10.ecs> + + * 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 <pdc@boothp1.ecs> + + * 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 <pdc@boothp1.ecs> + + + * 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 <pdc@boothp1.ecs> + + * 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 <pdc@booth8.ecs> + + * pdcadobe.dtx: Corrected definition or rbrace. + +Thu Mar 9 16:42:07 1995 Damian Cugley <pdc@boothp1.ecs> + + * pdcmisc.dtx (pdccmsub.dtx): new name for pdcmasub.dtx. + \currency, \orda, \ordo, \florin, \brdecimal, \permille. + +Wed Mar 8 16:53:36 1995 Damian Cugley <pdc@boothp1.ecs> + + * 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 <pdc@boothp1.ecs> + + * pdcl1maa.dtx: New file + + * pdcsty.dtx: Chased down some overful hboxes. + +Fri Mar 3 18:12:02 1995 Damian Cugley <pdc@boothp1.ecs> + + * 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 <pdc@boothp1.ecs> + + * pdcsty.dtx: Added rudimentary support for PostScript fonts. + + * pdcadobe.dtx: New file!! + +Tue Feb 28 10:17:40 1995 Damian Cugley <pdc@boothp1.ecs> + + * 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 <pdc@boothp1.ecs> + + * 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 <pdc@boothp1.ecs> + + * pdcguide.tex: Removed use of PostScript fonts -- now does a + title using the circlew10 font! + +Thu Feb 23 16:50:33 1995 Damian Cugley <pdc@boothp1.ecs> + + * 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 <pdc@boothp1.ecs> + + * 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 <pdc@boothp1.ecs> + + * 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 <pdc@boothp1.ecs> + + * 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 <pdc@boothp1.ecs> + + * pdcoput.dtx (section{How to make one column}): Change to just + use vertical mode material to do illustrations insteasd of + separate <dimen> 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 <pdc@boothp1.ecs> + + * pdcoput.dtx: New file, made from pdcoput.tex 4.1.7. + +Fri Feb 10 13:46:10 1995 Damian Cugley <pdc@boothp1.ecs> + + * 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 <pdc@boothp1.ecs> + + * 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: <pdc 1995-03-24> < > +# 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: <pdc 1995-03-24>" + +# 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: <pdc 1995-04-06>" + +# 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: <pdc 1995-04-06>" "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: <pdc 1995-03-24>" + +# 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: <pdc 1995-03-27>" "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 <pdc 1995/03/30>} + +\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 <pdc 1995/03/30>} + +\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~<pdc \filedate>\} + | +\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 \<chardef tokens> 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 \<number>. +\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 + \<number> 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|\<character> |\then| \<true text> + |\else| \<false text> |\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\ \<factor>. +\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 \<factor> (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 + \<number>) 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 + \<number> 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 \<number>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 <pdc 1995/04/06>} + +\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|*, `_<a|_' makes `*<a|*', and so on. + + + As an example: `*>en >arq~h| >~hn <o l'ogos*' is generated with `_>en + >arq~h| >~hn <o l'ogos_'. + +% In old-style Greek, all vowels beginning a word require a breathing +% -- but *u* may only have an asper (rough). In diphthongs (*ai*, +% *ei*, *oi*, *ui*, *au*, *eu*, *hu*, *ou*, *wu*), breathings and +% accents stand over the second letter: *a<i*, *o>u*. Double *rr* +% used to be written *>r<r*. + +%\section{Apostrophe (sign of elision)} + +% The lenis is also used like an apostrophe, to mark the elision of +% vowels at the end of a word when the next word starts with a vowel. +% The Malvern-G fonts, like the Levy-derived fonts, also has a +% separate apostrophe glyph, which can be set with `|''|' (two quote +% characters) or `|'|' (one quote) at the end of a word. Thus you +% have a choice of `|d>|' 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| <esp'eran tin`a >exantl'hsas t`a murol'ogi'a tou + >ekoim~ato <o Froum'entios >ep`i t~hs >'ammou t~hs paral'ias, + katab`as >ex o>uran~wn <o >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 <iero`us dakt'ulous tou e>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 <hg'iasen prohgoum'enws. <H fl'egousa + >eke'inh kard'ia >'efrizen e>is t`o <'udwr <ws smap`is >ent`os + to~u thgan'iou, >afo~u d`e >ekr'uwsen, >'ejese p'alin a>ut`hn + <o <'agios e<is t`on t'opon ths ka`i kle'isas t`hn plhg`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 <idr'wsh|s ka`i >exupn'hsas + n`a e<urej~h|s >iatreum'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 e<ur'iskwn e>is t`on l'arugga + t`o >oqlhp`on jhr'ion! O<'utw <'ama >'hnoixe ka`i <o + Froum'entios to`us >ofjalmo'us, <htoim'asjn n`a prosf'erh| + e>is t`hn >aq'ariston >Iw'annan t`hn sun'hjh dakr'uwn + spond'hn, >all`a par`a p~asan prosdok'ian o<i >ofjalmo'i + tou e<ur'ejhsan xhro`i ka'i n`a progeumat'ish| m~allon >`h + n`a kla'ush| >h|sj'aneto >'orexin met`a polu'hmeron nhste'ian + <o kal`os Benedekt~inos. +\end twocolgr +\rightline{\csc{Emmanouil Ro\"{\i}dis}, `The Popess Johanna (1896)'} +\vskip 0pt plus \baselineskip + +%}}} Popess Johanna +\fi + + The following paragraph is set in 11-point Malvern~55 (11-point + Malvern has comprable x-height to 12-point Computer Modern). This + quotation is used as one of the examples in Levy's article + \citeLevy: +\twocolgr + >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, <ws o<i jeo`i <'apantes t`on + toio~uton j'anaton <hgo~untai >'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, <ws + >'eoiken, e>'in >'an; >all`a g`ar o>u to'utw| >ef'anh >'arti + <wrism'ena t`o <'osion ka`i m'h; t`o g`ar jeomis`es >`on ka`i + jeofil`es >ef'anh. <wste to'utou m`en >af'ihm'i se, >~w E>uj'ufron; + e>i bo'ulei, p'antes a>ut`o <hge'isjwn jeo`i >'adikon ka`i p'antes + miso'untwn. >all' >~ara to~uto n~un >epanorj'wmeja >en t~w| l'ogw|, + <ws <`o m`en p'antes o<i jeo`i mis~wsin, >an'osi'on >estin, <`o d' + >`an fil~wsin, <`osion; <`o d' >`an o<i m`en fil~wsin, o<i d`e + mis~wsin, o>ud'etera >`h amf'otera? >~ar' o<'utw bo'ulei <hm~in + <wr'isjai n~un per`i to~u <os'iou ka`i to~u >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. <Ws t'wra, kane`is d`en x'erei p~ws p'erasa t`a du`o + qr'onia mou st`o <'Agion >'Oros. O<i f'iloi mou jarro~un p`ws p~hga + n`a d~w buzantin`a kon'ismata >`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. O<i >astrap`es m' >'exwsan + <olo~uje ki >'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 <h mp'ora, >'epesen <o >'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, <h jro'umpa, t`o fask'omhlo, t`o flisko'uni, qtuphm'ena + >ap' t`o ner'o, t'inaxan t`is murwdi'es tous ki <'olh <h g~hs + m'urise. +\endtwocolgr +\rightline{\csc{Kazantzakis}, `Symposium'} +\vskip 0pt plus \baselineskip + +%}}} samples +\iffalse +%{{{ table + +*\ntable* +\smallskip \noindent + This is a working encoding, and will likely be different in future + versions. +%}}} table +\fi +%{{{ 24-pt sample + +\bigbreak +\moveleft\leftmargin \vbox{ \hsize=\bodywd +\hrule height 1pt \bigskip +\begingreek \biggr\baselineskip=30pt +\centerline{((ABGDEZHJIKLMNXOPRSCTUFVQYW))} +\centerline{](abgdezhjiklmnxoprss^^`ctuf\char92 vqyw)[} +\centerline{=0123456789---\%\char42 +/--''!,:;?.-} +\centerline{\char3 '@ `@ ~@ <@ <'@ <`@ <~@ >@ >'@ >`@ >~@ "@ "'@ "`@ "~@ + "\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 </dev/null +DVIPS = dvips +FIG2EPSF = $(srcdir)/fig2epsf +ETAGS = $(srcdir)/dtxtags +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +MKDIR = $(srcdir)/pmkdir $(MKDIRFLAGS) +MKDIRFLAGS = --mode=755 + +code_files = pdccode.tex pdccode2.tex + +# The macro files are divided according to whether they have their own +# DTX file, or come from pdcmisc.dtx or pdcsty.dtx +self_files = pdcfmt2.dtx pdcfsel.dtx magrmac.dtx pdcoput5.dtx \ + pdcadobe.dtx pdcl1maa.dtx maamac.dtx +misc_files = pdcmigr.tex pdcimth.tex pdchyex.tex pdccmsub.tex +sty_files = ma55lft.tex ma55doc.tex pdccmlft.tex pdccmdoc.tex\ + pdcpsdoc.tex pdcpslft.tex pdcdoc.def pdclft.def +macro_files = $(self_files:.dtx=.tex) $(misc_files) $(sty_files) + +misc_dtx = pdcmisc.dtx +sty_dtx = pdcsty.dtx +dtxfiles = $(self_files) $(sty_dtx) $(misc_dtx) pdccode.dtx +dvifiles = $(dtxfiles:.dtx=.dvi) pdcguide.dvi + +figures = oput01.eps oput02.eps +documents = pdcguide.tex magrman.tex copying.tex pdcmacvn.tex +config_files = makefile.in configure +miscscript = fig2epsf pmkdir pinstall dtxtags +miscdoc = 00readme.txt install.txt copying.txt version.txt + +distfiles = $(miscdoc) pdcguide.dvi pdcmondo.tex \ + $(code_files) $(dtxfiles) $(documents) $(config_files) \ + $(figures) $(figures:.eps=.fig) \ + $(miscscript) $(miscscript:=.1) + +######################################################################## +# Standard targets + +all: pdcguide.dvi $(macro_files) + +# Note. This target assumes either I can use GNU "install", or +# an "install" compatible with it, or the "pinstall" shellscript supplied. +install: all pdccode.dvi + test -d $(texdir) || $(MKDIR) $(texdir) + $(INSTALL_DATA) $(macro_files) $(texdir) + -test -d $(docdir) || $(MKDIR) $(docdir) + -$(INSTALL_DATA) $(dvifiles) $(figures) $(miscdoc) $(docdir) + -test -r news.txt && $(INSTALL_DATA) news.txt $(docdir) + +uninstall: + cd $(texdir); rm -f $(macro_files) + cd $(docdir) && rm -f $(dvifiles) $(figures) $(miscdoc) + +mostlyclean: + rm -f *.log *.ilg *.toc *.bak +clean: mostlyclean + rm -f *.dvi *.aux *.idx $(macro_files) .misc.flag .sty.flag +distclean: clean + rm -f makefile config.status TAGS +realclean: distclean + rm -f *.ind $(figures) version.txt + +dist: $(distfiles) + sed -n '/pdcmacv/s/.*[^0-9.]\([0-9.]*\)[^0-9.].*$$/$(package)-\1/p' \ + pdcmacvn.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~<pdc \filedate>\} + | +\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 <pdc 1995/03/30>} + +\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 <pdc 1995/03/30>} + +\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 <pdc 1995/03/30>} + +\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{|\<file name>|}| 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{|\<text>|}| (must precede |\title|) + + |\title{|\<heading>|}| + + |\section{|\<heading>|}| + + |\subsec{|\<heading>|}| + + |\noindenttrue| + + |\footnote| + + |\defverbatim|\<one-character control sequence> + + |$|\<number>|\mm$| |$|\<number>|\em$| |$|\<number>|\pt$| + |$|\<number>|\inch$| + + |\<|\<name>|>| |\cs{|\<name>|}| + |\arg{|\<argument name>|}| + + |\TeX| |\LaTeX| |\LaTeX~2e| + + |\notepar| \<paragraph> |\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~<pdc \filedate>\} + | +\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:~\<name>,v~\<version>~\<date>~\<ignored>\quad\cr + \hfill~\<author>~\<ignored>~{\rm[}\<locker>~{\rm]}\$\cs{endrcs}\cr +}}} $$ + The \<locker> 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{|\<file name>|}| + 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 + \<foo>) 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 <pdc 1995/03/30>} + +\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\ } % `'~^<space> + +% \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{\<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 <pdc 1995/03/30>} + +\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~<pdc \filedate>\} + | +\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| \<assignments> |\toksa={\endgroup|\cr + \quad\<definitions>\cr + |} \the\toksa|\cr +}$$ + When |\toksa| is expanded, it closes the group (undoing the + \<assignments>) but then scans the \<definition> using the + catcodes set by \<assignments>. (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 + |\|\<name>\<args>\cr + \quad\dots\cr + |\end|\<name>\cr +}} + $$ + + A new environment is defined by defining macros called + |\|\<name> and |\end|\<name>. Within the |\|\<name> and + |\end|\<name> 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{\<text>}'. + + 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 \<text> 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 \<this>, 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{\<foo>\enspace$::=$\enspace`|f|' `|o|' `|o|' $\mid$ + \<bar> [ \<mumble> `{\bf munge}' ].} + $$ + may be produced with + $$ + \defverbatim\~ + \hbox{~\<foo> \> |f| |o| |o| \\ \<bar> [ \<mumble> `{\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, |\<foo>| produces `\<foo>'. +\code + |\def\<#1>{\leavevmode\hbox{$\langle${\it#1\/}$\rangle$}} +\endcode + The difference is that the name is in italics: \<name> 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 <pdc@alleged.co.uk>|'. 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{\<skip>}\arg{\<style>}% + \arg{\<coda>}\arg{\<text>}} + $$ + Where \<skip> is the skip to put before the heading (for + example, a \<dimendef token> like like |\medskipamount| or + |\bigskipamount|, or a \<dimen> enclosed in braces); \<style> is + tokens to insert before the \<text> (such as assignments that + select the font); \<coda> is tokens that follow the \<text> + (which might produce a rule under the heading, for example; + usually this is empty); and \<text> is the text of the heading + supplied by the user. +\code + |\newskip\headingtemp + |\def\doheading#1#2#3#4{ + | \ifdim\lastskip<#1\relax \removelastskip \vskip#1\relax \fi + | \ifdim \leftmargin>0pt +\endcode + If the left margin is greater than zero then we generaten a + style~$T$ heading. This is done by putting the text in + |\parbox|, which will be used by the |\everypar|. +\code + | \global\setbox\parbox=\vtop{% + | \hsize=\leftmargin \advance\hsize-\parboxsep + | \parindent=0pt + | \leftskip=0pt \rightskip=0pt plus 3em + | \hyphenpenalty=10000 \exhyphenpenalty=5000 + | \strut#2#4#3 + | } + | \else +\endcode + Otherwise we typeset the heading as a separate paragraph. +\code + | \begingroup + | \parindent=0pt \parfillskip=0pt plus 1fil + | \leftskip=0pt \rightskip=0pt plus0.25\hsize + | \hyphenpenalty=10000 \exhyphenpenalty=5000 + | \strut#2#4#3 + | \global\headingtemp=\baselineskip + | \par + | \endgroup +\endcode + The vertical space between the heading and the following text is + calculated from the difference in baselineskips between the + fonts used in the heading and those used in body text, plus $\it + smallskipamount$. +\code + | \advance\headingtemp-\baselineskip + | \ifdim\headingtemp>0pt \nobreak \vskip 1.0\headingtemp \fi + | \smallskip + | \noindenttrue + | \fi + |} +\endcode + +\subsec{Headings that start a new page} + + Major divisions of a book start on a nw page. The parameters to + the macro are similar to those for |\doheading|: + $$ + \hbox{\tt\cs{newpageheading}\arg{\<skip>}\arg{\<style>}% + \arg{\<coda>}\arg{\<text>}} + $$ + Where here the \<skip> is the extra space at the top of the page. + +\code + |\def\newpageheading#1#2#3#4{ + | \vfill\supereject % ensure no insertions still floating + | \null\vskip#1\relax + | \moveleft\leftmargin\vbox{ + | \advance\hsize\leftmargin + | \parindent=0pt \parfillskip=0pt plus 1fil + | \leftskip=0pt \rightskip=0pt plus0.25\hsize + | \hyphenpenalty=10000 \exhyphenpenalty=5000 + | #2\strut#4#3 + | \global\headingtemp=\baselineskip + | \par + | } + | \advance\headingtemp-\baselineskip + | \advance\headingtemp\smallskipamount + | \vskip \headingtemp + | \noindenttrue + | \def\tmp{#4} + | \message{*\expandafter\TOCtrim\meaning\tmp. } + |} +\endcode +%}}} headings +%{{{ footnotes +\section{Footnotes} + + We define a new command |\note| that replaces use of the + |\footnote| command. This takes one parameter---the text of the + footnote---and supplies automatically-numbered footnote markers. + + The |\newcount| command implicitly sets the counter to~0. + +\code + |\newcount\notecount +\smallskip + |\def\note{% + | \global\advance\notecount+1 + | \footnote{\number\notecount}% + |} +\endcode + + We add a parameter for the indentation of footnote paragraphs. +\code + |\newdimen\footnoteparindent + |\footnoteparindent=\parindent +\endcode + + Now we modify the definition of |\footnote| in plain~\TeX\ (see + TeXbook p.\thinspace363). It has the same function as + plain~\TeX's |\footnote|, but uses extra parameters + (|\everyfootnote|, |\footnotetextmark|), and handles the case + ${\it parindent}=0\pt$. +\code + |\newtoks\everyfootnote +\smallbreak + |\catcode`\@=11 + |\def\footnote#1{\let\@sf\empty + | \ifhmode\edef\@sf{\spacefactor\the\spacefactor}\/\fi + | \footnotetextmark{#1}\@sf\vfootnote{#1}} +\smallbreak + |\def\vfootnote#1{\insert\footins\bgroup % matched by \@foot + | \interlinepenalty=\interfootnotelinepenalty + | \parindent=\footnoteparindent + | \leftskip=0pt + | \the\everyfootnote + | \splittopskip=\ht\strutbox \splitmaxdepth=\dp\strutbox + | \floatingpenalty=20000 + | \indent\footstrut + | \ifdim\parindent>1em + | \llap{\footnotenotemark{#1}\enspace}% + | \else + | \footnotenotemark{#1}\enspace + | \fi + | \futurelet\next\fo@t + |} +\smallbreak + |\def\@foot{\smallskip\egroup} +\smallskip + |\catcode`\@=12 +\endcode + These two parameters control the formatting of the footnote + marker in the text and in the note itself. They take one + parameter, a \<number>. The default definitions simply use a + superscript in maths mode. +\code + |\def\footnotetextmark#1{$^{#1}$} + |\def\footnotenotemark#1{$^{#1}$} +\endcode +%}}} footnotes +%{{{ in-paragraph commands + +\section{Miscellaneous in-paragraph commands} + + +\subsec{Writing the current date} + +\let\n=\relax +\def\today{\n{\number\day} \monthname\month\ \n{\number\year}} +\def\monthname#1{% + \ifcase#1\or + January\or February\or March\or April\or + May\or June\or July\or August\or + September\or October\or November\or December% + \fi +} + + We define a macro |\today| that prints today's date. I used to + have the option of the abbreviated date but decided this was an + unnecessary complication. The format `\today' is usual + in non-American countries, and is recommended by {\it Hart's + Rules}\footnote*{Horace Hart, {\it Hart's Rules for Compositors + and Readers at the University Press, Oxford}, 39th~ed., + completely revised (Oxford University Press, 1990), + p.\thinspace19.} and Strunk \& + White.\footnote\dag{William Strunk jun., and E.~B. White, {\it + The Elements of Style}, 3rd~ed.\ (Macmillan, 1979), + p.\thinspace3. The American format is given first but followed + by the observation that the day--month--year format is `an + excellent way to write that date; the figures are separated by a + word, and are, for that reason, quickly grasped'.} +\code + |\def\today{\n{\number\day} \monthname\month\ \n{\number\year}} +\smallbreak + |\def\monthname#1{% + | \ifcase#1\or + | January\or February\or March\or April\or + | May\or June\or July\or August\or + | September\or October\or November\or December% + | \fi + |} +\endcode + Redefine the |\monthname| macro if you want different names for + the months. + + +\def\isodate{\n{\number\year}--\twodigits\month--\twodigits\day} +\def\twodigits#1{% + \ifnum#1<10 0\fi \number#1% +} + + Here's a definition for the date in ISO~8601/BS~4795 + format,\footnote\ddag{{\it The Oxford Writers' Dictionary} + (Oxford University Press, 1990), under `date'. I~have not read + the relevant standards.} which puts the year first, giving + `\isodate': +\code + |\def\isodate{\n{\number\year}--\twodigits\month--\twodigits\day} +\smallbreak + |\def\twodigits#1{% + | \ifnum#1<10 0\fi \number#1% + |} +\endcode + + +\subsec{Raising things} + + The |\flushtop| macro prints its argument in a box raised so + that the its top is aligned with the top of a letter X in the + current font. +\code + |\def\flushtop#1{% + | \leavevmode + | \begingroup + | \setbox0\hbox{#1}\setbox2\hbox{X}% + | \dimen0\ht2 \advance\dimen0-\ht0 + | \raise\dimen0\box0 + | \endgroup + |} +\endcode + This allows us to define a fairly generic version of the \LaTeX\ + logo: +\code + |\def\La{L\negthinspace\flushtop{a}} + |\def\LaTeX{\La\TeX} +\endcode + I have not given a definition for the \LaTeX~2e logo, since + I~think that `|\LaTeX~2e|' (or `|\LaTeX2e|' if you prefer) is + adequate, whereas Addison--Wesley think it should be `|\LaTeX| + |\kern0.05em| |2$| |_{\textstyle| |\varepsilon}| |$|' in regular + text and something involving bold maths in boldface. SImilarly, + I do not include macros for Bib\TeX, Sli\TeX, AMS-\TeX, and so + on; the |texlogos.sty| file from the Eplain package has + definitions for these. + +\def\superiorletter#1{\flushtop{\the\scriptfont\fam + \vphantom{t}\smash{#1}}} + + Here's a variation which raises a scriptstyle letter so that + its {\it x}-height matches the cap-height of the body text, + thus making `M\superiorletter{\b c\kern0.1ex }Donald' and + `1\superiorletter{\b a}', `1\superiorletter{\b o}', + `1\superiorletter{er}', `2\superiorletter{\`eme}', + `1\superiorletter{st}', `2\superiorletter{nd}', + `3\superiorletter{rd}' and `659\superiorletter{th}' (which I + prefer to $659^{\rm th}$). +\code + |\def\superiorletter#1{% + | \flushtop{\the\scriptfont\fam \vphantom{x}\smash{#1}}% + |} +\smallbreak + |\def\Mc{M\flushtop{\the\scriptfont\fam \b{c}}} +\endcode + + +%}}} in-paragraph commands +\endcodefile +\enddocument +\bye +%}}} pdcfmt2 + +%Local variables: +%fill-prefix: " " +%fold-folded-p: t +%End: diff --git a/Master/texmf-dist/source/plain/pdcmac/pdcfmt2.tex b/Master/texmf-dist/source/plain/pdcmac/pdcfmt2.tex new file mode 100644 index 00000000000..a7d81d4b601 --- /dev/null +++ b/Master/texmf-dist/source/plain/pdcmac/pdcfmt2.tex @@ -0,0 +1,398 @@ +% pdcfmt2.tex 2.4 1995/04/06 -- macros for formatting + +%%%@TeX-definition-file { +%%% filename = "$texmf/tex/plain/pdcmac/pdcfmt2.tex", +%%% version = "2.4", +%%% 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 = "Formatting macros for plain TeX documents. +%%% This file was generated by running +%%% plain TeX on pdcfmt2.dtx", +%%% copyright = "Copyright (c) 1991-1995 P. Damian Cugley", +%%% copying = "DO NOT DISTRIBUTE THIS FILE. +%%% Distribute pdcfmt2.dtx only as part of the +%%% package it came in.", +%%% dependencies = "", +%%% } + +\message{2.4 <pdc 1995/04/06>} + +\toksdef\toksa=0 +\chardef\other=12 +\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\^\do\ } +\chardef\other=12 +\newtoks\everyverbatim +\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 +\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{-} +\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\| +\newtoks\everylisting +\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 +} +{\catcode`\^^I=\active + \gdef\maketabstab{\catcode`\^^I\active \def^^I{\hskip 4em}} +} +\newif\ifnoindent +\newbox\parbox +\newdimen\parboxsep \parboxsep=1pc +\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 +} +\def\beginthe#1{% + \begingroup\def\PDCFMTblockname{#1}% +} +\def\endthe#1{% + \def\tmp{#1}% + \ifx\tmp\PDCFMTblockname + \endgroup + \else + \errmessage{You should have said \string\endthe{\blockname}}% + \fi +} +\def\PDCFMTendenv#1{ + \smallskip + \endthe{#1} + \global\noindenttrue +} +\newdimen\envindent \envindent=1pc +\def\PDCFMTindent{% + \ifdim\parindent>0pt + \parindent + \else + \envindent + \fi +} +\newtoks\everyquotation +\def\quotation{ + \smallskip + \beginthe{quotation} + \advance\leftskip\PDCFMTindent + \noindenttrue + \the\everyquotation +} +\def\endquotation{\PDCFMTendenv{quotation}} +\newtoks\everytextlist +\newif\ifnumbered +\newcount\textlistdepth \textlistdepth=-1 +\newcount\textlistcount +\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 +} +\def\endtextlist{\PDCFMTendenv{textlist}} +\newtoks\everybullets +\def\bullets{\textlist \numberedfalse \the\everybullets} +\let\endbullets=\endtextlist +\def\bulletfordepth#1{% + \ifcase#1 $\bullet$\or --\or $\circ$\else $\cdot$\fi +} +\newtoks\everynumbered +\def\numbered{\textlist \numberedtrue \the\everynumbered} +\let\endnumbered=\endtextlist +\def\numberfordepth#1#2{% + \ifcase#1 \n{\number#2}.\or (\n{\number#2})\or + ({\it\alphabetletter#2\/})\else (\romannumeral#2)\fi +} +\let\n\relax +\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 +} +\newdimen\tagmaxwidth +\newtoks\everytagged +\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 +} +\def\endtagged{\PDCFMTendenv{tagged}} +\newtoks\everytag +\def\TAG{% + \smallskip\noindent + \setbox0=\hbox\bgroup % matched by \TAGfinish + \the\everytag\ignorespaces + \futurelet\next\TAGtest +} +\def\TAGtest{% + \ifcat\bgroup\noexpand\next + \let\next\TAGgotbrace + \else + \let\next\TAGnobrace + \fi \next +} +\def\TAGgotbrace{% + \bgroup\aftergroup\TAGfinish + \let\next +} +\def\TAGnobrace#1{% + #1\TAGfinish +} +\def\TAGfinish{% + \unskip\hskip0.5em\egroup % matches \TAG + \ifdim \wd0 < \tagmaxwidth + \wd0=\tagmaxwidth + \llap{\box0}% + \else + \hskip-\tagmaxwidth + \unhbox0 \unskip\quad + \fi + \ignorespaces +} +\newtoks\everylines +\def\lines{ + \par + \beginthe{lines} + \nobreak\smallskip\hrule\nobreak\smallskip + \obeylines + \parindent=0pt \parskip=0pt + \parfillskip=0pt plus 1fil + \the\everylines + \nobreak +} +\def\endlines{ + \nobreak\smallskip + \endthe{lines} + \hrule\smallskip + \global\noindenttrue +} +\newcount\linenumber +\newcount\PDCFMTcount +\def\startlinenumbering{% + \global\linenumber=0 \global\PDCFMTcount=5 + \everypar{\numberthisline}% +} +\def\continuelinenumbering{% + \everypar{\numberthisline}% +} +\newtoks\everylinenum \everylinenum{\the\scriptfont0 } +\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 +}% +\def\linesskipped#1{% + \strut \hskip20pt $\vdots$ \hskip20pt + {\rm(\it #1 lines omitted\rm)}\par + \advance\linenumber#1\relax +} +\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 % +\def\enddisplay{\crcr\egroup$$} +\def\table{% + $$ % matching $$ is in \endtable + \displayindent\PDCFMTindent + \halign \bgroup +} +\let\endtable=\enddisplay +\newtoks\everybnf +\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 +} +\def\endbnf{ + \smallskip + \endthe{bnf} + \global\noindenttrue +} +\def\<#1>{\leavevmode\hbox{$\langle${\it#1\/}$\rangle$}} +\newdimen\leftmargin +\newskip\headingtemp +\def\doheading#1#2#3#4{ + \ifdim\lastskip<#1\relax \removelastskip \vskip#1\relax \fi + \ifdim \leftmargin>0pt + \global\setbox\parbox=\vtop{% + \hsize=\leftmargin \advance\hsize-\parboxsep + \parindent=0pt + \leftskip=0pt \rightskip=0pt plus 3em + \hyphenpenalty=10000 \exhyphenpenalty=5000 + \strut#2#4#3 + } + \else + \begingroup + \parindent=0pt \parfillskip=0pt plus 1fil + \leftskip=0pt \rightskip=0pt plus0.25\hsize + \hyphenpenalty=10000 \exhyphenpenalty=5000 + \strut#2#4#3 + \global\headingtemp=\baselineskip + \par + \endgroup + \advance\headingtemp-\baselineskip + \ifdim\headingtemp>0pt \nobreak \vskip 1.0\headingtemp \fi + \smallskip + \noindenttrue + \fi +} +\def\newpageheading#1#2#3#4{ + \vfill\supereject % ensure no insertions still floating + \null\vskip#1\relax + \moveleft\leftmargin\vbox{ + \advance\hsize\leftmargin + \parindent=0pt \parfillskip=0pt plus 1fil + \leftskip=0pt \rightskip=0pt plus0.25\hsize + \hyphenpenalty=10000 \exhyphenpenalty=5000 + #2\strut#4#3 + \global\headingtemp=\baselineskip + \par + } + \advance\headingtemp-\baselineskip + \advance\headingtemp\smallskipamount + \vskip \headingtemp + \noindenttrue + \def\tmp{#4} + \message{*\expandafter\TOCtrim\meaning\tmp. } +} +\newcount\notecount +\def\note{% + \global\advance\notecount+1 + \footnote{\number\notecount}% +} +\newdimen\footnoteparindent +\footnoteparindent=\parindent +\newtoks\everyfootnote +\catcode`\@=11 +\def\footnote#1{\let\@sf\empty + \ifhmode\edef\@sf{\spacefactor\the\spacefactor}\/\fi + \footnotetextmark{#1}\@sf\vfootnote{#1}} +\def\vfootnote#1{\insert\footins\bgroup % matched by \@foot + \interlinepenalty=\interfootnotelinepenalty + \parindent=\footnoteparindent + \leftskip=0pt + \the\everyfootnote + \splittopskip=\ht\strutbox \splitmaxdepth=\dp\strutbox + \floatingpenalty=20000 + \indent\footstrut + \ifdim\parindent>1em + \llap{\footnotenotemark{#1}\enspace}% + \else + \footnotenotemark{#1}\enspace + \fi + \futurelet\next\fo@t +} +\def\@foot{\smallskip\egroup} +\catcode`\@=12 +\def\footnotetextmark#1{$^{#1}$} +\def\footnotenotemark#1{$^{#1}$} +\def\today{\n{\number\day} \monthname\month\ \n{\number\year}} +\def\monthname#1{% + \ifcase#1\or + January\or February\or March\or April\or + May\or June\or July\or August\or + September\or October\or November\or December% + \fi +} +\def\isodate{\n{\number\year}--\twodigits\month--\twodigits\day} +\def\twodigits#1{% + \ifnum#1<10 0\fi \number#1% +} +\def\flushtop#1{% + \leavevmode + \begingroup + \setbox0\hbox{#1}\setbox2\hbox{X}% + \dimen0\ht2 \advance\dimen0-\ht0 + \raise\dimen0\box0 + \endgroup +} +\def\La{L\negthinspace\flushtop{a}} +\def\LaTeX{\La\TeX} +\def\superiorletter#1{% + \flushtop{\the\scriptfont\fam \vphantom{x}\smash{#1}}% +} +\def\Mc{M\flushtop{\the\scriptfont\fam \b{c}}} diff --git a/Master/texmf-dist/source/plain/pdcmac/pdcfsel.dtx b/Master/texmf-dist/source/plain/pdcmac/pdcfsel.dtx new file mode 100644 index 00000000000..a7010f20a09 --- /dev/null +++ b/Master/texmf-dist/source/plain/pdcmac/pdcfsel.dtx @@ -0,0 +1,607 @@ +% pdcfsel.dtx -- documentation & source for pdcfsel.tex -*-tex-*- + +%%%@TeX-document-file { +%%% title = "PDCFSEL, a font selection scheme for TeX", +%%% filename = "$texmf/doc/plain/pdcmac/pdcfsel.dtx", +%%% version = "$Revision: 3.5 $", +%%% package = "pdcmac 1.0", +%%% date = "$Date: 1995/03/28 19:05:54 $", +%%% 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 defines pdcfsel.tex, +%%% a file of definitions for managing font selection in +%%% documents based on the plain TeX macros. +%%% 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" +%%%} + +%{{{ pdcfsel +%{{{ premable + +\relax +\input pdccode + +\document +\rcs$Id: pdcfsel.dtx,v 3.5 1995/03/28 19:05:54 pdc Exp $\endrcs + +\codefile{pdcfsel.tex} + +%}}} premable +%{{{ intro + +\author{P. Damian Cugley} +\title{PDCFSEL, a font-selection scheme for \TeX} +\section{Introduction} + + This document describes PDCFSEL, a file of font selection macros + designed to be used with documents using the plain \TeX\ format + (rather than \LaTeX, for example). + + The PDCFSEL macros perform a similar function to the so-called + New Font Selection Scheme~2 (used in \LaTeX~2e). PDCFSEL uses a + simpler model of font selection, and so is a smaller + package---about 110~lines of code---which is just as well as a + copy of it will probably need to be included with documents + using it. The description of which fonts are used in a document + can be relatively compact, despite not using any special + database files. + +\subsec{Organizing fonts into fontsets} + + We can arrange the fonts used in an imaginary \TeX\ document in + a table like so (with an asterisk marking fonts that have to be + scaled to fit): + $$\def\*{{\rm*}} +\vbox{\halign{\strut#\hfil&\quad\vrule#&&\quad\tt#\hfil\cr + && |\rm|&|\it|&|\bf|&|\bi|&|\mi|&|\sy|\cr +\noalign{\nointerlineskip}\omit& height \jot\cr +\noalign{\hrule}\omit& height 1\jot\cr +\noalign{\nointerlineskip}% + body text&& cmr10& cmti10& cmbx10& cmbxti10& cmmi10& cmsy10\cr + footnotes&& cmr8& cmti8& cmbx8& cmbxti10\*& cmmi8& cmsy8\cr + script&& cmr7& cmti7& cmbx7& cmbxti10\*& cmmi7& cmsy7\cr + scriptscript&& cmr5& cmti7\*& cmbx5& cmbxti10\*& cmmi5& cmsy5\cr +\noalign{\nointerlineskip}\omit& height\jot depth\jot&\multispan6\dotfill\cr +\noalign{\nointerlineskip}% + heading&& cmss12& cmssi12& -&-&-&-\cr + subheading&& cmss10& cmssi10& -&-&-&-\cr +}} + $$ + The column headings are {\it font nicknames}. These nicknames + are used as described in the {\it\TeX book} to switch between + fonts in the same row. Each has a corresponding {\it fam} + used in maths mode, with symbolic names like |\itfam| and + |\bffam| (we define $\hbox{|\rmfam|}=0 $ for consistency). + I~have added nicknames |\mi| and |\sy| for maths italic and + maths symbol respectively. + + Each row of the table is a {\it fontset}. Plain \TeX\ defines a + single fontset (which is like the `body text' row of this + table); in Appendix~E, Knuth discusses formats that switch + between different fontsets with macros like |\ninepoint| and + |\eightpoint|. \LaTeX~2.09 uses many fontsets, called + |\normalsize|, |\large|, and so on. (NFSS~2 uses a more complex + system, where size, weight, and slant may be changed + independently of each other.) + + In this table, subheadings and body text have different fontsets + in the above, even though the fonts are the same size. Also, + there are no |\sf| fonts; the headings are printed in sanserif + by using a fontset with |\rm| mapped on to a sanserif font. + This is more logical and flexible than the \LaTeX\ approach. + + We can call font families which allow this table to work tidily + `regular', and families (like Computer Modern) that require + exceptions `irregular'. The above table has one exception + (|\it| in scriptscript must use a scaled font); the CM Bold + Extended Text Italic fonts can be described as regular if we + think of the `body text' entry as being `|cmbxti10 at 10pt|', so + that the fonts in that column are scaled fonts without + exception. To make font specification compact, we want to take + advantage of regular families as much as possible, while not + making it difficult to include exceptions. + +\subsec{Introduction to using PCDFSEL} + + PDCFSEL uses no databases of font families, and loads no fonts + by default. This makes it more flexible, but also requires + document designers to write a `mini-database' of those fonts + used in the document. The above scheme might be defined as + follows: +\smallskip +\halign{\indent#\hfil\cr + |\input pdcfsel|\cr +\noalign{\smallbreak}% + |\newfam\bifam|\cr +\noalign{\smallbreak}% + |\def\texttemplate{%|\cr + | \m{rm}{cmr}\m{it}{cmti}\m{bf}{cmbx}\@\m{bi}{cmbxti10}%|\cr + | \M{mi}{cmmi}\M{sy}{cmsy}%|\cr + |}|\cr + |\loadfont\scriptscriptit{cmti7 at 5pt }|\cr + |\xfontset{scriptscript}\texttemplate{5}|\cr + |\xfontset{script}\texttemplate{7}|\cr + |\fontset{note}\texttemplate{8}{10pt}{scriptscript}{scriptscript}|\cr + |\fontset{body}\texttemplate{10}{12pt}{script}{scriptscript}|\cr +\noalign{\smallbreak}% + |\def\headingtemplate{%|\cr + | \f{rm}{cmss}\f{it}{cmssi}%|\cr + |}|\cr + |\fontset{subheading}\headingtemplate{10}{12pt}{subheading}{subheading}|\cr + |\fontset{heading}\headingtemplate{12}{14pt}{subheading}{subheading}|\cr +\noalign{\smallbreak}% + |\bodyfonts|\cr +} +\smallbreak +\noindent + This defines commands |\bodyfonts|, |\notefonts|, + |\headingfonts| and |\subheadingfonts| which switch between + fontsets. (The {\it script} and {\it scriptscript} fontsets, + which are defined with |\xfontset|, are used only in maths + mode and don't need `-|fonts|' commands.) These -|fonts| + commands are not usually used directly in documents; + |\notefonts| will be used in some |\footnote| command, + |\headingfonts| in some heading-generating command, and so on. + + Changes of fontset are accompanied by changes in parameters like + |\baselineskip| and pseudo-parameters like |\smallskipamount|, + and give definitions to the {\it maths font tables} + |\textfont\rmfam|, \dots, |\scriptscriptfont\syfam| (for those + fonts that will be used in maths mode). + + We want font nickname commands to be efficient, because they + are expected to be more common than changes between rows in + the table. In this implementation, after an invocation of + |\bodyfonts|, the macro |\rm| expands to exactly `|\fam\rmfam + \bodyrm|'. + +\subsec{How the rest of this document is organized} + + The remainder of this document is a description of all of + |pdcfsel.tex|, including more details of how the commands it + defines are used. + + Running this document (|pdcfsel.dtx|) through plain \TeX\ + creates the definitions file (|pdcfsel.tex|) in addition to + the usual |dvi| and |log| files. This way the macros and + their documentation may be kept together in one file. The + definition lines are numbered. + + The definitions start with macros for loading individual + fonts, followed by the macros used to group fonts into + fontsets. +%}}} intro +%{{{ getting started + +\section{Getting started} + +\subsec{File identification} + + We start with some comments indentifying the file. +\code + |% pdcfsel.tex -- macros for loading fonts -*-tex-*- + | + |%%%@TeX-document-file { + |%%% title = "PDC Font Selection Scheme", + |%%% filename = "$texmf/tex/plain/pdcmac/pdcfsel.tex", + \|\%\%\% version \space\space\space= "\fileversion", + \|\%\%\% Date \space\space\space\space\space\space= "\filedate", + \|\%\%\% creator\space\space\space\space= "\filename", + |%%% 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", + |%%% abstract = "A file of definitions for managing font + |%%% selection in documents based on the plain + |%%% TeX macros. + |%%% This file was generated by running + |%%% plain TeX on pdcfsel.dtx.", + |%%% dependencies = "" + |%%%} + | + \|\string\message\{\fileversion\space\string<% + \fileauthor\space\filedate\string>\} +\endcode + +\subsec{Private names} + + Macros internal to FSEL all have names starting `|\FSEL|'. + +\subsec{Macros for edefs} + + These save typing |\expandafter| a lot. The expression + `|\expcs|\<token>\arg{\<tokens>}', creates a csname from + \<tokens> and applies \<token> to the result. In the body of an + |\edef|, The expression `|\noexpcs|\arg{\<tokens>}' converts + \<tokens> to a csname without expanding the result. +\code + |\def\expcs#1#2{\expandafter#1\csname#2\endcsname} + |\def\noexpcs{\expcs\noexpand} +\endcode +%}}} getting started +%{{{ selecting demand-loading + +\section{Selecting auto-loading mode} + + The flag |\ifFSELautoload| is true, fonts are auto-loaded when + they first used instead of all at the start. This is useful + when not all the fonts described by the fontsets will be + needed. The flag is set with the user command + |\autoloadfonts|. + + When demand-loading, the fonts used + are written to a file named after the document with a |.fnt| + suffix. This checklist might + be used to decide which fonts need to be sent with the + document if it is being sent to someone to compile on a + different \TeX\ system. +\code + |\newif\ifFSELautoload + |\def\autoloadfonts{ + | \FSELautoloadtrue + | \csname newwrite\endcsname \FSELfile + | \immediate\openout\FSELfile=\jobname.fnt + |} +\endcode +%}}} selecting demand-loading +%{{{ making csname for one font + +\section{How to set up the csname for one font} + + The macro |\loadfont| is used to load individual fonts, defining + a control sequence name (csname) which may be used later to + switch to that font. When not demand-loading fonts, this is + just like |\global\font| followed by expanding the + |\everyloadfont| macro. + + If the csname is already defined, then this command does + nothing. This is so that irregularities in the font scheme for + the document can be allowed for. Parameter |#1| is the csname, + for example `|\bodyrm|', and |#2| is the external name, for + example `|cmr10|' or `|cmr10 at 12pt|'. +\code + |\def\loadfont#1#2{% + | \ifx#1\relax + | \FSELloadfont#1{#2}% + | \else\ifx#1\UNDEFINED + | \FSELloadfont#1{#2}% + | \fi\fi + |} +\endcode + (We have to compare |#1| against both |\relax|, which is + produced by |\csname|--|\endcsname|, and a completely undefined + csname.) The macro |\FSELloadfont| doesa the actual work of + loading the font. +\code + |\def\FSELloadfont#1#2{% + | \ifFSELautoload +\endcode +\begingroup \leftskip=\parindent \advance\leftskip4\fontdimen6\tentt +\noindent{\it Demand-loading}. We don't load the font, instead we + define a csname as a macro. When expanded this new macro will + (a)~write the font name to the |fnt| file; (b)~define the macro + |\subfont| to load |cmr10| instead (in case \TeX\ stops with a + `font not loadable' message); (c)~load the font for real (this + overwrites the macro); (d)~call |\everyloadfont| for per-font + customization and (e)~switch to the new font. +\par\endgroup +\code + | \edef#1{% + | \write\FSELfile{#2}% + | \def\noexpand\subfont{\global\font\noexpand#1cmr10 }% + | \global\font\noexpand#1#2\relax + | \noexpand\everyloadfont\noexpand#1{#2}% + | \noexpand#1% + | }% + | \else +\endcode +\leftline{\hskip4\fontdimen6\tentt \indent{\it Immediate loading}.} +\code + | \global\font#1#2\relax \everyloadfont#1{#2}% + | \fi + |} +\endcode + + The macro |\everyloadfont| is expanded immediately after + actually loading a font. (The definition used is that one + current when the font is actually loaded, not the one current + when |\loadfont| was executed.) Its |#1| parameter is always a + \<fontdef token>, i.e., it can be to used as a parameter to + |\fontdimen1|. The |#2| parameter is the external name of the + font. +\code + |\def\everyloadfont#1#2{} +\endcode + For example, in a document with a ragged-right margin, this + might be used to suppress the stretch and + shrink of interword spaces by being defined as follows + $$ +\vbox{\halign{#\hfil\cr + |\def\everyloadfont#1#2{%|\cr + | \fontdimen3#1=0pt \fontdimen4#1=0pt|\cr + |}|\cr +}} + $$ +%}}} making csname for one font +%{{{ making a fontset + +\section{How to set up a fontset} + + Now that we know how to define individual font csnames, we + need the mechanism for grouping them in to fontsets. A + fontset is defined by a template macro which says what font + nicknames are defined and gives part of the external font + name. The template macro takes no parameters and expands to + a list each of whose elements are of the form + $$ +\vbox{\halign{$#$\hfil&\quad#\hfil\cr + \<type> \arg{\<nickname>} \arg{\<partial name>}& + or\cr + \cs{@} \<type> \arg{\<nickname>} \arg{\<external name>}& + for a scaled font.\cr +}} + $$ + where a \<type> is one of the control sequences |\f|, |\m| or + |\M|, and \<nickname> is the two- or three-letter nickname + used for the font (without any leading backslash), for example + |rm|, |it|, |bf|. There must be a font fam called + |\|\<nickname>|fam| (|\rmfam|, |\itfam| etc.\ are already + defined). + + If there is no |\@|, then the \<partial name> is a font name + sans the size specification, such as |cmr|. The size in + points will be appended to this (|cmr| + $10\pt$ = |cmr10|). + If |\@| is included then the \<external name> is the complete + font name, such as |cmr10| or |ptmr|. This will be followed + by `{\tt\char32 at\char32 10pt\char32 }', say. + + The \<type> specifies how much support for mathematics this font + requires. This is because maths mode requires that all fonts + that might be used in a formula be loaded (because the font + tables |\textfont|, |\scriptfont| and |\scriptscriptfont| must + be set). The code |\f| means that the font is not used in + maths, |\m| means that |\textfont| and |\scriptfont| will be set + correctly for this fam, and |\M| means that |\scriptscriptfont| + will also be set. In these cases there must be a corresponding + token ending in `-|fam|' that expands to the fam number. + + The fontset name is a sequence of \<letter>s, like `|body|', + `|note|', `|script|', `|heading|'. This is turned into a + fontset selection macro by adding `|\|' to the front and + `|fonts|' to the end (e.g., |\bodyfonts|). The csnames for + loaded fonts are formed from the fontset name + the nickname + (e.g., |\bodyrm|). + +\subsec{Defining the csnames for a fontset} + + The macro |\xfontset| defines all the csnames for the fonts in a + fontset, without defining a `-|fonts|' macro. This is used to + define a fontset that is never selected in its own right (e.g., + its fonts are used only as subscripts and superscripts), and + also used internally by the |\fontset| command. Its arguments + are |#1| the fontset name, |#2| the csname of a template macro, + and |#3| a \<number> that specifies the font size (sans the + `|pt|'). +\code + |\def\xfontset#1#2#3{ + | \def\f##1##2{\expcs\loadfont{#1##1}{##2#3}} + | \let\m=\f \let\M=\f + | \def\@##1##2##3{\expcs\loadfont{#1##2}{##3 at #3pt }} + | #2 + |} +\endcode + +\subsec{Defining a complete fontset} + + The user command |\fontset| is used to define a complete + fontset. Its parameters are + |#1| (a string of letters) is the fontset name, + |#2| (a csname) is a template macro, + |#3| (a \<number>) is size in points, + |#4| (a \<skip>) is baseline skip, + |#5| (a fontset name) is the scriptstyle fontset, and + |#6| (a fontset name) is the scriptscriptstyle fontset. +\code + |% Set up a fontset -- define \#1fonts + |\def\fontset#1#2#3#4#5#6{% + | \xfontset{#1}{#2}{#3}% +\endcode +\begingroup\leftskip=\parindent \advance\leftskip2\fontdimen6\tentt +\noindent + Now to define the |\#1fonts| macro. When demand-loading, this + macro will call |\#1mathfonts| (to ensure the fonts needed for + maths are loaded). Then it will call |\FSELnicknames| to + define |\rm|, |\it|, etc., and to define |\textfont\rmfam|, etc. + Finally it will set the baseline skip and related parameters and + switch to the new |\rm| font. +\par\endgroup +\code + | \expcs\edef{#1fonts}{% + | \ifFSELautoload \noexpcs{#1mathsfonts}\fi + | \noexpand\FSELnicknames{#1}{#5}{#6}\noexpand#2% + | \noexpand\setbaselineskip{#4}% + | \noexpand\rm + | }% +\endcode +\begingroup\leftskip=\parindent \advance\leftskip2\fontdimen6\tentt +\noindent + If we are demand-loading, we must define |\#1mathsfonts| as well. +\par\endgroup +\code + | \ifFSELautoload + | \expcs\def{#1mathsfonts}{\FSELloadmaths{#1}{#5}{#6}#2}% + | \fi + |} +\endcode + +\subsec{Setting font nicknames} + + |\FSELnicknames| + gives definitions to |\f|, |\m| and |\M| so that expanding the + template macro defines |\rm| and the like. If the fontset name + is |ffff|, and a nickname |xx| is introduced with |\f|, the + macro |\xx| is defined to |\ffffxx|. If it is introduced with + |\m|, then the font table entries |\textfont\xxfam| and |\scriptfont\xxfam| are also + set, and |\xx| expands to `|\fam\xxfam \ffffxx|'. If it is + introduced with |\M| then |\scriptscriptfont\xxfam| is also set. + + The parameters are |#1| the fontset name, |#2| the fontset name + for scriptstyle, and |#3| the fontset name for + scriptscriptstyle. The implicit fourth parameter is the + template macro. +\code + |\def\FSELnicknames#1#2#3{% + | \let\@\relax + | \def\f##1##2{% + | \expcs\edef{##1}{\noexpcs{#1##1}}% + | }% + | \def\m##1##2{% + | \expcs\textfont{##1fam}\csname#1##1\endcsname + | \expcs\scriptfont{##1fam}\csname#2##1\endcsname + | \expcs\edef{##1}{% + | \fam\expcs\noexpand{##1fam}% + | \expcs\noexpand{#1##1}% + | }% + | }% + | \def\M##1{% + | \expcs\scriptscriptfont{##1fam}\csname#3##1\endcsname + | \m{##1}% + | }% + |} +\endcode + +\subsec{Setting the baseline skip} + The second helper macro, |\setbaselineskip|, sets + |\baselineskip| and a bunch of related paramaters and + pseudo-parameters like |\smallskipamount|. It takes one + parameter, a \<skip>. +\notepar + My definitions for the skips that go before and after displays + put less white\-space around displays than is set in plain \TeX. + This can be changed by redefining this macro in a style file. +\endnotepar +\code + |\def\setbaselineskip#1{% + | \baselineskip#1\relax \normalbaselineskip\baselineskip + | \jot0.25\baselineskip + | \smallskipamount 0.25\baselineskip plus 0.083\baselineskip + | minus 0.083\baselineskip + | \medskipamount 0.5\baselineskip plus 0.167\baselineskip + | minus 0.167\baselineskip + | \bigskipamount 1\baselineskip plus 0.333\baselineskip + | minus 0.333\baselineskip + | \abovedisplayskip\medskipamount + | \abovedisplayshortskip\abovedisplayskip + | \advance\abovedisplayshortskip-1\abovedisplayskip + | \belowdisplayskip\medskipamount + | \belowdisplayshortskip\smallskipamount + |} +\endcode + +\subsec{Loading maths fonts} + Finally, we need to force the fonts used in maths at a given + size to be loaded. for |\f| fonts this does nothing; for |\m| + fonts it loads the text and script fonts; for |\M| fonts it also + loads the scriptscript font. + + This is done the first time this fontset is selected, even if no + formulas are used (rather than trying to do something + complicated like use |\everymath|\dots). Because this macro + only needs to be used once for each fontset, it finishes by + redefining |\#1mathfonts| to be the same as |\relax|. + + Its parameters are |#1| the fontset name, |#2| the fontset name + for scriptstyle, and |#3| the fontset name for scriptscriptstyle. +\code + |\def\FSELloadmaths#1#2#3{% + | \let\@\relax \def\f##1##2{}% + | \def\m##1##2{\csname#1##1\endcsname \csname#2##1\endcsname}% + | \def\M##1{\csname#3##1\endcsname \m{##1}}% + | \global\expcs\let{#1mathsfonts}\relax + |} +\endcode + +%}}} making a fontset +%{{{ finishing up + +\section{Finishing up} + + We define |\rmfam|, |\mifam| and |\syfam| as aliases for the + numbers $0$, $1$ and $2$. This is so that the maths fonts may + be included in the font templates without any special + arrangements. The names |\itfam|, |\bffam|, |\ttfam|, and |\slfam| are set in |plain.tex|. +\code + |\chardef\rmfam=0 \chardef\mifam=1 \chardef\syfam=2 +\endcode + Note that we do not include an alias for the the maths + extension font's fam number. This is because there is only + one maths extension font---|cmex10|---used for all sizes, so it + does not belong in any fontset. + +\section{Summary of user commands} + + The following lists the user commands provided by FSEL. A + \<fontset name> is a sequence of letters like |note|; + \<points> is a \TeX\ \<number> representing size in points + (without any final |pt|); an \<external name> is the external + name for a font (e.g., `|cmr12|'). + +\medskip\hrule\medskip + +\begingroup \parindent=0pt + + |\autoloadfonts| + + |\loadfont|\<csname>\arg{\<external name>} + + |\xfontset|\arg{\<fontset name>}\<csname>\arg{\<points>} + + |\fontset|\arg{\<fontset + name>}\<csname>\arg{\<points>}\arg{\<skip>}\arg{\<fontset + name>}\arg{\<fontset name>} + + |\def\everyloadfont#1#2{| \dots\ |}| + + |\def\setbaselineskip#1{| \dots\ |}| + +\medskip\hrule\medskip + +\endgroup + +%}}} finishing up +%{{{ bugs + +\section{Bugs} + + FSEL clobbers the macros |\f|, |\m|, |\M| and |\@|. +%}}} bugs +\endcodefile +\enddocument +\bye + +%}}} pdcfsel + +%Local variables: +%fold-folded-p: t +%fill-prefix: " " +%End: diff --git a/Master/texmf-dist/source/plain/pdcmac/pdcfsel.tex b/Master/texmf-dist/source/plain/pdcmac/pdcfsel.tex new file mode 100644 index 00000000000..3b68aada1ab --- /dev/null +++ b/Master/texmf-dist/source/plain/pdcmac/pdcfsel.tex @@ -0,0 +1,110 @@ +% pdcfsel.tex -- macros for loading fonts -*-tex-*- + +%%%@TeX-document-file { +%%% title = "PDC Font Selection Scheme", +%%% filename = "$texmf/tex/plain/pdcmac/pdcfsel.tex", +%%% version = "3.5", +%%% Date = "1995/03/28", +%%% creator = "pdcfsel.dtx", +%%% 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", +%%% abstract = "A file of definitions for managing font +%%% selection in documents based on the plain +%%% TeX macros. +%%% This file was generated by running +%%% plain TeX on pdcfsel.dtx.", +%%% dependencies = "" +%%%} + +\message{3.5 <pdc 1995/03/28>} +\def\expcs#1#2{\expandafter#1\csname#2\endcsname} +\def\noexpcs{\expcs\noexpand} +\newif\ifFSELautoload +\def\autoloadfonts{ + \FSELautoloadtrue + \csname newwrite\endcsname \FSELfile + \immediate\openout\FSELfile=\jobname.fnt +} +\def\loadfont#1#2{% + \ifx#1\relax + \FSELloadfont#1{#2}% + \else\ifx#1\UNDEFINED + \FSELloadfont#1{#2}% + \fi\fi +} +\def\FSELloadfont#1#2{% + \ifFSELautoload + \edef#1{% + \write\FSELfile{#2}% + \def\noexpand\subfont{\global\font\noexpand#1cmr10 }% + \global\font\noexpand#1#2\relax + \noexpand\everyloadfont\noexpand#1{#2}% + \noexpand#1% + }% + \else + \global\font#1#2\relax \everyloadfont#1{#2}% + \fi +} +\def\everyloadfont#1#2{} +\def\xfontset#1#2#3{ + \def\f##1##2{\expcs\loadfont{#1##1}{##2#3}} + \let\m=\f \let\M=\f + \def\@##1##2##3{\expcs\loadfont{#1##2}{##3 at #3pt }} + #2 +} +% Set up a fontset -- define \#1fonts +\def\fontset#1#2#3#4#5#6{% + \xfontset{#1}{#2}{#3}% + \expcs\edef{#1fonts}{% + \ifFSELautoload \noexpcs{#1mathsfonts}\fi + \noexpand\FSELnicknames{#1}{#5}{#6}\noexpand#2% + \noexpand\setbaselineskip{#4}% + \noexpand\rm + }% + \ifFSELautoload + \expcs\def{#1mathsfonts}{\FSELloadmaths{#1}{#5}{#6}#2}% + \fi +} +\def\FSELnicknames#1#2#3{% + \let\@\relax + \def\f##1##2{% + \expcs\edef{##1}{\noexpcs{#1##1}}% + }% + \def\m##1##2{% + \expcs\textfont{##1fam}\csname#1##1\endcsname + \expcs\scriptfont{##1fam}\csname#2##1\endcsname + \expcs\edef{##1}{% + \fam\expcs\noexpand{##1fam}% + \expcs\noexpand{#1##1}% + }% + }% + \def\M##1{% + \expcs\scriptscriptfont{##1fam}\csname#3##1\endcsname + \m{##1}% + }% +} +\def\setbaselineskip#1{% + \baselineskip#1\relax \normalbaselineskip\baselineskip + \jot0.25\baselineskip + \smallskipamount 0.25\baselineskip plus 0.083\baselineskip + minus 0.083\baselineskip + \medskipamount 0.5\baselineskip plus 0.167\baselineskip + minus 0.167\baselineskip + \bigskipamount 1\baselineskip plus 0.333\baselineskip + minus 0.333\baselineskip + \abovedisplayskip\medskipamount + \abovedisplayshortskip\abovedisplayskip + \advance\abovedisplayshortskip-1\abovedisplayskip + \belowdisplayskip\medskipamount + \belowdisplayshortskip\smallskipamount +} +\def\FSELloadmaths#1#2#3{% + \let\@\relax \def\f##1##2{}% + \def\m##1##2{\csname#1##1\endcsname \csname#2##1\endcsname}% + \def\M##1{\csname#3##1\endcsname \m{##1}}% + \global\expcs\let{#1mathsfonts}\relax +} +\chardef\rmfam=0 \chardef\mifam=1 \chardef\syfam=2 diff --git a/Master/texmf-dist/source/plain/pdcmac/pdcguide.fnt b/Master/texmf-dist/source/plain/pdcmac/pdcguide.fnt new file mode 100644 index 00000000000..ac5aae10e59 --- /dev/null +++ b/Master/texmf-dist/source/plain/pdcmac/pdcguide.fnt @@ -0,0 +1,29 @@ +cmr12 +cmr9 +cmti12 +cmti9 +cmbx12 +cmbx9 +cmmi12 +cmmi9 +cmsy9 +cmtt12 +cmss10 scaled 1200 +cmmi10 scaled 1728 +cmmi10 scaled 1200 +cmsy10 scaled 1728 +cmsy10 scaled 1200 +cmr10 +cmr7 +cmti10 +cmti7 +cmbx10 +cmbx7 +cmmi10 +cmmi7 +cmsy10 +cmsy7 +cmtt10 +cmtt10 scaled 1200 +cmbxti10 at 12pt +cmbxti10 at 10pt diff --git a/Master/texmf-dist/source/plain/pdcmac/pdcguide.tex b/Master/texmf-dist/source/plain/pdcmac/pdcguide.tex new file mode 100644 index 00000000000..f2304296a7e --- /dev/null +++ b/Master/texmf-dist/source/plain/pdcmac/pdcguide.tex @@ -0,0 +1,942 @@ +% pdcguide.dtx -- user guide for PDCMAC -- Time-stamp: <pdc 1995-04-06> + +%%%@TeX-document-file { +%%% title = "The PDCMAC Package", +%%% filename = "$texmf/doc/plain/pdcmac/pdcguide.dtx", +%%% version = "$Revision$", +%%% package = "pdcmac 1.0", +%%% date = "$Date$", +%%% author = "P. Damian Cugley", +%%% email = "damian.cugley@comlab.ox.ac.uk", +%%% address = "Oxford University Computing Laboratory," +%%% Parks Road, Oxford OX1 3QD, UK", +%%% abstract = "A brief user guide for the PDCMAC package.", +%%% copyright = "Copyright (c) 1995 P. Damian Cugley", +%%% codetable = "USASCII", +%%% dependencies = "pdccmlft.tex, pdcmacvn.tex, ..." +%%%} + +%{{{ pdcguide +%{{{ preamble + +\errorcontextlines10000 + +\ifx\usepsfonts! + \def\bodyfontname{pplr} \def\bodyttfontname{phvr} + \def\headingttfontname{phvro} + \input pdcpsdoc + \mathcode`.=\gbdecimal \mathcode`/="202F +\else + \input pdccmdoc \mathcode`.="0201 \mathcode`/="213D +\fi + +\input pdcmacvn +\majorheadline{PDCMAC Release $\pdcmacversion$} \twosidedtrue +\noheadlinetrue + +\def\n#1{$ \textfont0=\font \mathcode`i=`i \mathcode`v=`v \mathcode`x=`x #1 $} + +\def\plainslash{/} \declareactivechar\/ \let/\plainslash +\def\texmf#1#2{{\tt\let/=\slash% $ for matching + \$texmf/#1% + \def\tmp{#2}\ifx\tmp\empty \plainslash \else /#2\fi}} +\def\url#1#2#3{{\tt#1:\penalty\exhyphenpenalty + \plainslash\plainslash \let/=\slash #2% + \def\tmp{#3}\ifx\tmp\empty \plainslash \else /#3\fi}} + +\newcount\tablecount \tablecount2 +\def\newtableid{\global\advance\tablecount1 \number\tablecount} + +%}}} preamble +%{{{ intro +\section{What is this thing you Earth people call PDCMAC?} +%{{{ intro +\subsec{Introduction} + + PDCMAC is collection of \TeX\ definition files (macro files) + which may be useful for setting documents using plain \TeX\ + (`plain' here meaning \TeX\ formats following similar + conventions to those of Appendix~B of the {\it\TeX book}, as + opposed to more complex formats like \LaTeX). This package is + much less powerful than \LaTeX~2e; it is intended to be a + simpler solution to simpler requirements. Because it is less + complex, the macro code should be more readily adapted by other + \TeX\ hackers. + + The package includes a font-selection system, an output routine, + general formatting macros, and `style files' which input the + other files and set the format for documents. + + The name `PDCMAC' is pronounced `{\it p-d-c}-mac'. In file + names where case matters it is always written in all-lower-case. + The fairly consistent use of a `|pdc|-' or `|ma|-' prefix in + this and other names is intended to prevent these files clashing + with files from other packages. (The `|ma|-' files are part of + the Malvern package.) +%}}} intro +%{{{ conventions +\subsec{Conventions in this guide} + + Contents and names of computer files, and commands to be typed + literally are printed in {\tt this distinctive font}. + Placeholders to be filled in with real file names etc.~are + written in {\it this italic font}. + +%}}} conventions +%{{{ copying + +\subsec{Copying} + The PDCMAC files are copyright \copyright\ 1990--1995 P. Damian + Cugley. They may be used in documents, and distributed as a + complete package as per the GNU General Public Licence + (reproduced at the end of this document). + + The |tex| files generated by the |dtx| files are like `object + files'; you should not distribute them without their source + files (the |dtx| files). + + Do not modify the generated |tex| files; if you must modify the + macros, do this by editing the |dtx| files and running them + through \TeX\ again. If you must distribute modified versions + (instead of persuading me to modify my copies), help reduce the + proliferation of incompatible versions by doing the following: +\bullets + \\describe the modifications clearly in the printed + documentation; + + \\say who modifed them in the header comments in the definition + files, and change the version identifier; + + \\use a different name for the modifed definition files. +\endbullets + The last point is so that documents using the unmodified + versions can coexist with the ones using modified ones. + + + +%}}} copying +%{{{ feedback + +\subsec{Feedback} + I am very interested to hear from people who find a use for this + package. Please send comments and suggestions, or reports of + bugs, to the address above. If you find PDCMAC useful or + amusing, please send me a pretty postcard. Thanks. + +%}}} feedback +%}}} intro +%{{{ unpack install +\section{Unpacking and installing the files} +%{{{ unpack + +\subsec{Unpacking} + + Two common formats for archives are +\bullets +\\ (on Unix) + |tar| files, compressed using GNU |zip| (|gzip|), and +\\ (on MS-DOS) PKZIP-style archives. +\endbullets + Compressed tarfiles will have names like |pdcmac-1.0.tar.gz| or + |pdcmac10.tgz| (the latter form is required by ISO-9660\note{ISO + 9660 is the standard for CD-ROM file systems. Its file names + are like MS-DOS file names: a sequence of 8-letter components + followed by a `|.|' and three-letter suffix. ISO~9660 names use + capital letters, but on case-sensitive operating systems these + are usually transliterated to lower-case.} file systems). + Unpack the package with something like +\display \defverbatim\" + "zcat pdcmac10.tgz | tar -xf -" +\enddisplay + This generates a new directory called |pdcmac-1.0|. + + PKZIP archives unpack files into the current directory, so they + are unpacked like this: +\display + |md pdcmac|\cr + |cd pdcmac|\cr + |unzip a:\pdcmac10.zip|\cr +\enddisplay + assuming the zipfile is so named. + + There is a list of the files in the release in the appendix. +%}}} unpack +%{{{ compile + +\subsec{Generating the macro files} + + The macro files are packaged with their documentation in + |dtx|\note{The \LaTeX~2e distribution uses the file name suffix + |dtx| for files with a similar function. Unlike the \LaTeX\ + system, the |dtx| files for PDCMAC produce the printed + documentation and unpack the macro files themselves using a + single macro file |pdccode.tex| and a single run through plain + \TeX; there are no |drv| or |ins| files.} files; run plain + \TeX\ on each of the |dtx| files in turn to generate the macro + files and the printed documentation. The resulting definition + files have almost no comments in them; instead you must read the + |dtx| files or the printed documentation. + + The macro files are written in the current working directory. + They are identical to the code lines in the printed + documentation (they are generated from the same text in the + |dtx| files). + + There is a file |pdcmondo.tex| which reads all of the |dtx| + files in turn except |pdcsty.dtx| and produces one large (70+ + pages) document as well as all their macro files. This is most + useful if you want to make a printed listing rather than keeping + |dvi| files for reading online. + +%}}} compile +%{{{ install +\subsec{Installing the files} + + The definition (|tex|) files belong in a directory where \TeX\ + can find them. In the new soon-to-be-standardized file name + conventions TWG-TDS~$0.61$\note{The TUG Working Group on a \TeX\ + Directory Structure, {\it A Directory Structure for + Implementation-Independent \TeX\ Files} Version~$0.61$ + (\url{ftp}{ftp.th-darmstadt.de/pub/tex/TDS-compliant/draft}{twg-tds.dvi}, + 10~February 1995).} this is the directory + \texmf{tex/plain/pdcmac}{}. On older systems, the files go with + all the other macro files. + + With TWG-TDS~$0.61$ the documentation goes in + \texmf{doc/plain/pdcmac}{}. If you do not have a directory for + documentation, the documentation files might as well go in the + \TeX\ inputs directory as well. +%}}} install +%{{{ configure + +\subsec{Configuration on Unix systems} + + There is a |configure| script and makefile template included, + which allows the process of unpacking to be run automatically on + Unix systems.\note{The configuration system is based on the GNU + Coding Standards, but was written by hand rather than using + Autoconf.} The remainder of this section assumes you are + installing PDCMAC on a Unix system. + +\subsec{Run\-ning |configure|} + + Start by running a Bourne Shell on the |configure| script, by + typing `|sh configure|'. This examines your file system and + attempts to guess suitable directories in which to put macro and + documentation files. The |configure| script understands options + listed in Table~1. + +\midinsert +\noindent{\bf Table 1}\quad Options for |configure|. Other + options are ignored.\smallskip +\moveleft\leftmargin\vbox{ + \def\,{{\rm,}} + \def\\#1\, #2&{\vbox to \ht\strutbox{\hbox{$ + \left. + \vcenter{\ialign{\strut##\hfil\cr#1 \cr#2 \cr}} + \right\rbrace + $}\vss}&} + \halign to \bodywd{\tt#\hfil\tabskip=0pt plus 1fil& + \vtop{\noindent#\smallskip}\tabskip=0pt\cr +\noalign{\hrule height 1pt \vskip1.5\jot}% +\it Option&\omit\it Meaning\hfil\cr +\noalign{\vskip1\jot \hrule \vskip1.5\jot}% + \ttminus h\, \ttminus \ttminus help& + Print a summary of options\cr + \ttminus n\, \ttminus \ttminus no\ttminus create& + Create |config.status| but don't run it to make |makefile|.\cr + \\\ttminus t$dir$\, \ttminus \ttminus texmf=$dir$& + Says where to find a \TeX\ directory hierarchy. For example, + `|-t|\allowbreak|/usr/texmf|' or `|-t|\allowbreak|/usr/local/lib/tex3.14/tex|'. The + |configure| script will often guess correctly without this + option.\cr + \\\ttminus p$dir$\, \ttminus \ttminus prefix=$dir$& + Specifies the parent of the \TeX\ directory, for example, + `|-p/usr|' or `|-p/usr/local/lib|'. This is for compatability + with the GNU coding standards.\cr + \\\ttminus wtds\, \ttminus \ttminus with\ttminus tds& Specify that the \TeX\ directory uses some + approximation to the TWG-TDS $0.61$ file name + conventions. This should not be necessary as + |configure| will usually guess correctly. + \cr +\noalign{\vskip\jot \hrule height 1pt}% +} } +\endinsert + + The configuration process creates a script |config.status| which + records the configuration; running |config.status| generates a + file |makefile|\note{Usually a makefile is called |Makefile|, + but I~wanted to make the package proof against file name munging + from being copied onto MS-DOS discs.} from the template + |makefile.in|. + + The |config.status| script has one option |-r| (or |--recheck|), + which re-runs |configure| with the same arguments as were used + to generate |config.status|; any options following |-r| are + passed to |configure|. + +%}}} configure +%{{{ make + +\subsec{Running |make|} + + Now you can use the |make| command to unpack and install all the + files. Do `|make|' to generate all the definition files and + documentation. Then `|make install|' to copy the macros into + \TeX's macros directory and the documentation into \TeX's + documentation area (assuming there is one). The standard + targets which the makefile understands are listed in Table~2. + +\midinsert +\noindent{\bf Table 2}\quad Conventional targets defined in |makefile|.\smallskip +\moveleft\leftmargin\vbox{ + \def\,{{\rm,}} + \def\\#1\, #2&{\vbox to \ht\strutbox{\hbox{$ + \left. + \vcenter{\ialign{\strut##\hfil\cr#1 \cr#2 \cr}} + \right\rbrace + $}\vss}&} + \halign to \bodywd{\tt make #\hfil\tabskip=0pt plus 1fil& + \vtop{\noindent\strut#\strut\smallskip}\tabskip=0pt\cr +\noalign{\hrule height 1pt \vskip1.5\jot}% +\omit\it Command&\omit\it Meaning\hfil\cr +\noalign{\vskip1\jot \hrule \vskip1.5\jot}% + all& + Generate all the definitions files and |dvi| files\cr + install& + Generate the definition files and copy them in to \TeX's + macro area. Also copy the |dvi| files into \TeX's documentation + area, if possible.\cr + uninstall& + Delete all the files that `|make install|' would install.\cr + mostlyclean& Delete some files but not as many as `|make clean|'.\cr + clean& Delete files from the current directory that are normally + created by `|make all|'. Don't delete files that could be built + using the makefile but which come with the distribution.\cr + distclean& Delete some more files, including those made by + configuration. If you have unpacked the files and generated the + macro files without creating any other files, this should leave + only the files in the distribution.\cr + realclean& Delete files deleted `|make distclean|' and any others + that can be rebuilt using the makefile.\cr + TAGS& Generate a tags table file for Emacs.\cr + dist& Make a tarfile and zipfile for the package.\cr +\noalign{\vskip\jot \hrule height 1pt}% +} } +\endinsert +%}}} make +%}}} unpack install +%{{{ using + +\section{Using PDCMAC style files for your documents} + + Normally a document will start by reading one of the style + files, which in turn load the various definition files. The + style files are intended to be more-or-less compatible with each + other. I have arbitrarily divided the style files into + `leaflets' and `docs'. +%{{{ leaflets + +\subsec{Leaflet styles} + + A leaflet is only a few pages, so does not need a table of + contents or division into large units. There is still a + |\section| command, but it is designed for smaller divisions + than the |\section| command used in `docs' (in a leaflet, + |\section| produces a heading with prominence similar to that + produced by |\subsec| in a doc). + + A leaflet-style document has no front matter, and so should + start with some sort of heading for the title. +\lines \it + |\input pdccmlft| + |\majorheadline{| title |} \noheadlinetrue| + \quad commands to generate the title at the top of the first page +\smallskip + \quad text of the document, perhaps using |\section| commands +\smallskip + |\bye| +\endlines +%}}} leaflets +%{{{ docs + +\subsec{Doc styles} + + A doc is something larger than a leaflet but smaller than a + book. It has a table of contents and numbered sections and + subsections, with section titles being reproduced in the + headline. There is no provision for cross-references and + automatic bibliography (which require an |aux| file and at least + two passes through \TeX). + + Sections may be grouped into larger divisions I have called + \dfn{part}s. Parts are numbered independently of sections, in + upper-case roman numerals. (There is no special reason for not + numbering sections within parts; I~just prefer to have fewer + levels of numbering, so we get `\S$12.6$' instead of + `Subsection~$4.1.6$'.) + +\lines\it + |\input pdccmdoc| + |\part{| title |}| ---or--- |\majorheadline{| title |}| + |\section{| title |}| + \quad contents of section +\smallbreak + more sections +\smallbreak + |\frontmatter| + \quad front matter + |\endfrontmatter| + |\bye| +\endlines + +\subsec{Front matter} + + The front matter of the document---the title page, preface, + forword, etc.---must be printed {\it last}, with the table of + contents at the end of the front matter; this is so that the + table of contents may be accumulated during the \TeX ing of the + file.\note{It has a benefit for people reading the document with + a browser: page~1 of the document is the first page of the DVI + file, which makes selecting a given page easy, and the table of + contents is at the very end, so the browser's `go to last page' + command can be used to find the table of contents quickly.} + The front matter starts with |\frontmatter| and may contain + |\section| commands. Such sections will be unnumbered and will + not appear in the table of contents. + + For a short document, a separate title page is probably + excessive, and an abstract may be preferable to a preface. In + this case the first page after |\frontmatter| could have the + title of the document (with author etc.)\ followed by an + abstract, any copyright information (or other small print), and + the contents (generated by |\endfrontmatter|). In other words, + something like this: +\lines\it + |\frontmatter| + \quad commands to print the title, etc. + \quad|\abstract| + \qquad the text of the abstract + \quad|\endabstract| + \quad copyright information, etc. + |\endfrontmatter| +\endlines + For a longer document, there will be a separate title page and + perhaps a preface. +\lines\it + |\frontmatter| + \quad|\titlepage| + \qquad commands to print the title, etc. + \quad|\splittitlepage| + \qquad print copyright information, etc. + \quad|\endtitlepage| + \quad|\section{Preface}| + \qquad text of preface, etc. + |\endfrontmatter| +\endlines + The macro |\splittitlepage| marks the division between the title + page (title recto, page~i) and the back of the title page (title + verso, page~ii), which is where copyright information goes. + When formatting for one-sided printing, the copyright + information belongs on the title recto, because the title verso + will be blank, so |\splittitle| instead does |\vfill|. +%}}} docs +%{{{ new syms +\subsec{New symbols} + + Several new symbols common to Malvern~A and PostScript fonts are + added (listed in Table~3). Approximations built from other + glyphs are available in Computer Modern documents. + + +\def\chartable#1{% + \midinsert + \leftline{{\bf Table \newtableid}\quad #1}\smallskip + \def\cs##1{\hbox to \gridwd{\hbox to2em{\csname##1\endcsname\hfil} + {\tt\char`\\##1}\hfil}} + \def\mcs##1{\hbox to \gridwd{\hbox to2em{$\csname##1\endcsname$\hfil} + {\tt\char`\\##1}\hfil}} + \def\mch##1{\hbox to \gridwd{\hbox to2em{$##1$\hfil} + {\tt##1}\hfil}} + \moveleft\leftmargin\vbox\bgroup + \hrule\medskip + \halign\bgroup ##\hfil&& \hskip\colsep##\hfil\cr +} +\def\endchartable{ + \egroup + \smallskip\hrule + \egroup + \endinsert +} + +\chartable{New symbols} + \cs{cents}& \cs{pounds}& \cs{yen}& \cs{florin}\cr + \cs{currency}& \cs{lguillemet}& \cs{rguillemet}& \cs{gbdecimal}\cr + \cs{permille}& \cs{registered}& \cs{orda}& \cs{ordo}\cr + \cs{S}& \cs{P}& \cs{dag}& \cs{ddag}\cr +\endchartable + + The symbols in the last row are `new' in the sense that they + will change according to the current font when using Malvern or + PostScript fonts. + + + The maths symbols in Table~4 will be in the current |\rm| font + (fam~0) in PostScript documents. +\begingroup\catcode`_=12 \catcode`\|=12 +\chartable{Maths symbols taken from Adobe's latin character set} + \mch{<}& \mch{>}& \mcs{_}& \mch{|}\cr + \mcs{backslash}& \mcs{setminus}& \mcs{sim}& \mcs{mid}\cr + \mcs{bullet} &\mcs{lbrace}& \mcs{rbrace}\cr +\endchartable +\endgroup + +%}}} new syms +%}}} using + +\section{Appendix} +%{{{ tagged-table intrinsics + +\def\taggedtable#1#2#3{ + \medskip + \noindent{\bf Table \newtableid}\quad#1 + \medskip + \moveleft\leftmargin\vbox{\hsize=\bodywd + \hrule height 1pt \medskip + \line{\it\strut\hbox to \leftmargin{#2\hfil}{\it #3}\hfil} + \smallskip \hrule + } + \tagged \everytag{\tt} +} +\def\endtaggedtable{ + \endtagged + \removelastskip \medskip \hrule height 1pt \bigskip +} + +%}}} tagged-table intrisnics +%{{{ file types +\subsec{File suffixes} + + In this document, `a |foo| file' refers to a file of the type + conventionally given a name ending in `-|.foo|' (using lower + case because \TeX\ file names are always given in lower case). + This table lists some conventional file name suffixes used for + files in this package. + +\taggedtable{File suffixes used in this package}{\hbox to + \gridwd{Suffix\hfil Origin}}{Meaning} +\def\\#1#2{\TAG{\hbox to \gridwd{\tt#1\hfil\rm#2}}} +\\{1}{Unix} + Manual page for a program, in |nroff| format. +\\{def}{\LaTeX~2e} + Definitions used by macro files but not expected to be referred + to directly in user documents. +\\{dtx}{\LaTeX~2e} + Documented \TeX\ macros---a file which combines macro + definitions with their printed documentation. +\\{eps}{Adobe} + An EPSF (Encapsulated PostScript Format) file. +\\{fig}{Fig} + A picture file in Fig's undocumented format. +\\{fnt}{PDCMAC} + Font list---a list of fonts used in a document, generated by the + PDCFSEL macros. +%\\{idx}{\LaTeX~$2.09$} +% Unsorted index file. (The lamentable convention of using |idx| +% and |ind|, both standing for `index' but representing different +% stages in the index-generation process, is for compatibility +% with \LaTeX.) +\\{in}{GNU} + Template for a configuration file---when using the |configure| + script, the file |foo| is generated from the template |foo.in|. +\\{tex}{\TeX} + (1)~A plain \TeX\ document. (2)~A plain \TeX\ definition file. +\\{tgz}{GNU} + A Unix |tar| archive, compressed with GNU |zip|. (Same as + |tar.gz|.) +\\{txt}{traditional} + Plain ASCII text, readable on the terminal. +\\{zip}{?PKZIP} + An MS-DOS PKZIP archive. +\endtaggedtable + +%}}} file types +%{{{ file list + +\subsec{List of files} + + Here is a list of files supplied with the package. A list of + the files generated from these---the definition files, used in + documents---form the next section. + + All the names are chosen so that they may be copied onto, say, + an ISO~9660\note{See note~1 on page 2.} or MS-DOS file system and + back to a sensible file system without the names being changed. + +\taggedtable{Files supplied in the package.}{File}{Contents} +\\{00readme.txt} + Brief description of the package. + +\\{configure} + A shell script used to automatically configure the makefile for + Unix systems. (This is an unavoidable exception to the rule + that names are ISO-9660-compatible.) + +\\{copying.tex} + A copy of the GNU General Public Licence, in \TeX able form. + +\\{copying.txt} + A copy of the GNU General Public Licence. + +\\{dtxtags} + Shellscript for making tag files in |etags|(1) format. + +\\{dtxtags.1} + A Unix manual entry for |dtxtags|.\note{This (and three more + shellscripts used in the makefile) are not intended to be + installed anywhere, but I~included manual pages just in case + they are---or in case the installer is curious as to what these + scripts do.} + +\\{fig2epsf} + A Unix shellscript that converts figures from Fig's format into + Encapsulated PostScript Format (EPSF) version~$3.0$ files. It + uses |fig2dev| (from the TransFig package) to do most of the + work. (It munges the PostScript code produced by |fig2dev| + 2.1.4.1 so that it will print and will work with Ghostview.) + +\\{fig2epsf.1} + A Unix manual page for |fig2epsf|. + +\\{install.txt} + Installation hints. + +\\{makefile.in} + Template from which the configuration process generates a + makefile, used by Unix's |make| command to automate compilation + and installation. Should be called |Makefile.in| but that's not + ISO-9660-compliant. + +\\{magrmac.dtx} + Documentation for Malvern Greek macros. This replaces the file + |magrmac.tex| included in Malvern release~$1.2$. + +\\{magrman.tex} + Brief user manual for |magrmac.tex|. This replaces the version + distributed with Malvern~$1.2$. It requires some Malvern~G + fonts. + +\\{oput01.eps oput02.eps} + Diagrams for |pdcoput5.dtx|.\note{The second edition of the {\it + PostScript Language Reference Manual} says these should be called + `-|.epsf|', but such names are not ISO-9660-compliant, so I~have + switched to `-|.eps|'.} + +\\{oput01.fig oput02.fig} + Source code for the above figures (Fig format). + +\\{pdcadobe.dtx} + Source code and documentation for |pdcadobe.tex|. + +\\{pdccode.dtx} + Source code and documentation for |pdccode.tex|. + +\\{pdccode.tex} + Macros used by |dtx| files. This file has to be included + because |pdccode.dtx| can't be \TeX ed without it. + +\\{pdccode2.tex} + An experimental variation allowing multiple simultaneous + code files. + +\\{pdcfmt2.dtx} + Source code and documentation for formatting macros. + +\\{pdcfsel.dtx} + Source code and documentation for font selection macros. + +\\{pdcguide.dvi} + A copy of the user guide, already run through \TeX. + +\\{pdcguide.tex} + This user guide for PDCMAC. + +\\{pdcl1maa.dtx} + Source code and documentation for |pdcl1maa.tex|. + +\\{pdcmacvn.tex} + Version number for the whole package. + +\\{pdcmisc.dtx} + Source code and documentation for some small macro files. + +\\{pdcmondo.tex} + Makes a combined listing of all the |dtx| files (except + |pdcsty.dtx|). + +\\{pdcoput5.dtx} + Source code and documentation for an output routine. + +\\{pdcsty.dtx} + Source code and documentation for style files (|pdccmdoc.tex|, + |ma55doc.tex|, etc.). + +\\{pinstall} + A Unix shellscript that substitutes for the |install| command on + systems which don't have GNU |install|.\note{I am not going to + bother trying to make a makefile that will work with all the + different versions of |install|, since there is no easy way to + tell them apart and they are mutually incompatible.} + +\\{pinstall.1} + A Unix manual page for |pinstall|. + +\\{pmkdir} + A Unix shellscript used to create a directory. Unlike plain + |mkdir|, it creates parent directories of the specified + directory if they do not exist. This would be called + |pmkdirhier| but that name is not ISO-9660-compliant. + +\\{pmkdir.1} + A Unix manual page for |pmkdir|. + +\\{version.txt} + List of the version identifiers of the |dtx| files and the + shellscripts that come with the package. +\endtaggedtable + +%}}} file list +%{{{ macro files + +\subsec{List of definition files} + + The following files are the ones that are intended to go in the + \TeX\ inputs area and to be used in documents. Here a + \dfn{macro file} is simply a file of \TeX\ definitions; a + \dfn{style file} is a higher-level definition file that + specifies most of the things that affect the style of a document + (layout, fonts, macros, etc.). Style files start by reading a + bunch of macro files. + +\taggedtable{Files generated from the |dtx| files.}{File}{Contents} +\\{ma55doc.tex} + Style file for short documents with Malvern~55 as the text font. + A table of contents and page headlines are generated + automatically. + +\\{ma55lft.tex} + Style file for very short documents with Malvern~55 as the text + font. `Leaflet'-class documents have no table of contents. + +\\{magrmac.tex} + Macros for typesetting in Greek with Malvern fonts (or any font + with the Malvern~G encoding). There is a brief user's guide in + |magrman.tex|. + +\\{pdcadobe.tex} + Support for fonts with the Adobe Standard Roman and Adobe Symbol + repertoires\note{The \dfn{repertoire} of an encoding scheme is + the set of characters/glyphs it includes. Since PostScript + fonts may be easily re-encoded, repertoire is more significant + then the actual encoding.} in the |dvi| file, and ISO~8859--1 + (Latin-1) conventions in the manuscript file. The output + encoding actually used is that variation on \TeX\ Text generated + by the |afm2tfm| that comes with DVIPS. Newer \TeX\ systems + should instead use PostScript fonts with (a subset of) the 1990 + Cork encoding.\note{Variously called `DC', `EC', `T1', and + `\TeX\ Extended Text---Latin', and described in {\it TUGboat} + 10\#4.} This file actually combines two functions: (1)~making + the various symbols availabe via commands like |\pounds| and + (2)~making Latin-1 characters in the manuscript produce + corresponding characters in the output. Described in + |pdcadobe.dtx|. + + +\\{pdccmdoc.tex} + Style file for short documents with Computer Modern Roman as the + text font. A table of contents and page headlines are generated + automatically. + +\\{pdccmlft.tex} + Style file for very short documents with Computer Modern Roman + as the text font. `Leaflet'-class documents have no table of + contents. + +\\{pdcfmt2.tex} + Macros for formatting text---bulleted and numbered lists, syntax + descriptions, verbatim text, headings, etc. Most of + the facilities used by the style files come from this file. + +\\{pdcfsel.tex} + Macros for selecting fonts. Fonts are organized into + \dfn{fontset}s (selected with macros with names like + |\bodyfonts|) in which fonts are selected with nicknames like + |\it|, |\bf| (specified at the start of the document using + template macros). + +\\{pdchyex.tex} + Some random British English hyphenation exceptions (developed + while I~was using American English hyphenation paterns). You + may not want to use this. Described in |pdcmisc.dtx|. + +\\{pdcimth.tex} + Make letters in maths formulas come out in text italic instead + of math italic. Useful if the body font isn't CMR, or if + multiple-letter identifiers are used. Described in + |pdcmisc.dtx|. + +\\{pdcl1maa.tex} + Support for documents with using the ISO~8859--1 (Latin-1) + character set in the manuscript file and fonts with Malvern~A + encoding in the |dvi| file. Described in |pdcl1maa.dtx|. + +\\{pdccmsub.tex} + Define some Malvern~A and PostScript glyphs (like \yen, + \registered) by overprinting CM glyphs. Described in + |pdcmisc.dtx|. + +\\{pdcmigr.tex} + Make Greek capitals in maths mode use math italic (fam~1) + letters instead of letters from the roman font. Especially + useful when there are no Greek caps in the roman font. + Described in |pdcmisc.dtx|. +\endtaggedtable +%}}} macro files +%{{{ old files +\subsec{Obselete files} + + The following macro files were included with the Malvern~$1.0$ + distribution, but were not intended to be installed. + Nevertheless they appear to have been copied into some older + versions of the Unix\TeX\ distribution. They are obselete, and + their successors have new names (intended to reduce the chance + of accidental clashes). I'd appreciate people removing them + from their \TeX\ systems. +\display + |formac.tex|& + |parmac.tex|& + |utils.tex|& + |ssoutput.tex|\cr + |ldfonts.tex|& + |malvern.tex|& + |cmdoc.tex|\cr +\enddisplay + The following documents are similarly obselete and should not be + in the macros directory anyway. +\display + |aboutmalvern.tex|& + |latexfmv.tex|\cr +\enddisplay + The following macro files have the new-style names, but are + superseded by PDCMAC~$1.0$ files. You are not required to + remove then if you have documents using them. Fortunately, they + appear not to have been absorbed by the Unix\TeX\ distribution + anyway. +\display + |pdcfmt.tex|& + |pdcpars.tex|& + |pdcutil.tex|& + |pdcoput.tex|\cr +\enddisplay + The new versions will have the major number of their version ID + appended to their names (e.g., |pdcfmt2.tex|), and this way new + and old versions may coexist, allowing older documents to still + be processed by \TeX. The functionality of |pdcpars.tex| and + |pdcfmt.tex| have been taken over by |pdcfmt2.tex|. + + +%}}} old files +%{{{ gpl + +\rigidbalancepartialpage{\bigskip} + +\begingroup \notefonts \setncolumns2 \everypage{} \leftmargin=0pt + \advance\textlistdepth2 \let\section=\subsec + \input copying.tex + \rigidbalancepartialpage{\bigskip} +\endgroup + + +%}}} gpl + +\frontmatter +%{{{ an absurd logo + +\ifx\asyfam\UNDEFINED +%{{{ CMSSDC logo + +\moveleft\leftmargin\vbox{ + +\font\titlefont=cmssdc10 at 24pt + +\leftline{\titlefont P D C M A C\quad User Guide} + +\bigskip +} % end of vbox +%}}} +\else +%{{{ PostScript logo + +\moveleft\leftmargin\vbox{\hsize=\bodywd + \font\thefont=pplr at 120pt + \input rotate + + \line{\thefont + \setbox0=\hbox{\lower0.975ex\hbox{pd}}\dp0=1ex \ht0=0pt \rotu0% + c% + \setbox0=\hbox{\lower0.95ex\hbox{vw}}\dp0=1ex \ht0=0pt \rotu0% + c\hfil + } +} +\medskip +\leftline{\font\thotherfont=pplri at 60pt \thotherfont + \kern-0.1em USER GUIDE} +\bigskip + +%}}} PostScript logo +\fi +%}}} an absurd logo +%{{{ titlepage + +\halign{#\hfil\cr + \headingfonts Edition 1 for Release + $\textfont0=\font \pdcmacversion$\cr +\noalign{\medskip}% + P. Damian Cugley\cr +\noalign{\smallskip}% + Oxford University Computing Laboratory\cr + Parks Road\cr + Oxford \sc{OX2~7HN}\cr + UK\cr +\noalign{\smallskip}% + |damian.cugley@comlab.ox.ac.uk|\cr +} + +\bigskip +\abstract + PDCMAC is a collection of macro files intended to be useful with + \TeX\ formats with similar conventions to those described in the + {\it\TeX book}. This document describes how to unpack the files + and use them in \TeX\ documents. +\endabstract + +\bigskip + +\global\setbox\botbox\vbox{\hsize=\bodywd \prevdepth=0pt +\noindent + {\it PDCMAC User Guide}. \copyright~1995 P. Damian Cugley. All + rights reserved. Verbatim copies of this document (including + this copyright message) may be freely distributed. This edition + first published March 1995. +} + +\let\section=\subsec +%}}} title page +\endfrontmatter + +\bye +%}}} +%Local Variables: +%fill-prefix: " " +%fold-folded-p: t +%End: diff --git a/Master/texmf-dist/source/plain/pdcmac/pdchyex.tex b/Master/texmf-dist/source/plain/pdcmac/pdchyex.tex new file mode 100644 index 00000000000..a83c61b95e6 --- /dev/null +++ b/Master/texmf-dist/source/plain/pdcmac/pdchyex.tex @@ -0,0 +1,56 @@ +% pdchyex.tex 1.4 1995/03/30 -- some British hyphenations +%%%@TeX-definition-file { +%%% filename = "$texmf/tex/plain/pdcmac/pdchyex.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 = "A non-exhaustive set of hyphenation exceptions +%%% designed to make TeX with American hyphenation +%%% tables produce some British hyphenations. +%%% This file was generated by running +%%% plain TeX on pdcmisc.dtx", +%%% copyright = "Copyright (c) 1991, 1995 P. Damian Cugley", +%%% copying = "DO NOT DISTRIBUTE THIS FILE. +%%% Distribute pdcmisc.dtx only as part of the +%%% package it came in.", +%%% dependencies = "", +%%%} + +\message{1.4 <pdc 1995/03/30>} + +\lefthyphenmin=2 \righthyphenmin=3 \uchyph=0 +\hyphenation{ + le-gend le-gends re-adjust re-appear exact-ing + abs-cess abs-cess-es abs-cessed ana-lyse ana-lyses + ana-lysis ana-lyses appear-ance appear-ances bio-graphy + celeb-rate celeb-rates celeb-rations cor-respond-ence + depend-ent des-pise des-pises dis-pised dimin-ish + dimin-ish-es dimin-ish-ed dis-connect dis-connect-ed + dis-connects forget-ting gener-ally haemor-rhage + illus-trate immedi-ate immedi-ately immport-ance + inexplic-able inter-pret inter-est inter-ested + inter-est-ing minis-ter origin-ally philo-sophy + philo-sophic philo-sophic-ally prim-ary prob-ably + semb-lance + calm-est debt-ors fea-ther fea-thers post-humous lamb-like + poingn-ant tough-ish ach-ing archaeo-logy etymo-logy + philo-logist psycho-logist tauto-logy zoolo-gist + art-iest cig-ar-ette bio-logy bio-chem-is-try boy-friend + brit-ain brit-ish com-ic com-ics cug-ley dogs-body + dor-mouse gai-man graph-ic immedie-ate immedi-ate + immedi-ately issue mckean mis-hap mis-haps news-letter + news-paper night-crawler origin-ally origin-ator phys-ique + phys-iques porn-o-graphy porn-o-graphic rec-om-mend-ation + Ser-geant ser-geant Sien-kie-wicz spon-tan-e-ous + spon-tan-e-ously stop-ped strip-ped teen-ager teen-agers + tem-per-men-tal Thatch-er-ism Thatch-er-ite under-ground + under-grounds var-i-able venge-ance warp-smith warp-smiths + whirl-pool +} diff --git a/Master/texmf-dist/source/plain/pdcmac/pdcimth.tex b/Master/texmf-dist/source/plain/pdcmac/pdcimth.tex new file mode 100644 index 00000000000..fc42eb8365a --- /dev/null +++ b/Master/texmf-dist/source/plain/pdcmac/pdcimth.tex @@ -0,0 +1,39 @@ +% pdcimth.tex 1.4 1995/03/30 - maths letters in text italic +\message{1.4 1995/03/30} + +\begingroup + \count0="7400 \count1=\count0 + \advance\count0 by`A \advance\count1 by`a + \count2=`A \count3=`a \count4=26 + \loop\ifnum\count4>0 + \advance\count4 by-1 + \global\mathcode\count2=\count0 + \global\mathcode\count3=\count1 + \advance\count0 by1 \advance\count1 by1 + \advance\count2 by1 \advance\count3 by1 + \repeat +\endgroup +\endinput +%%%@TeX-definition-file { +%%% filename = "$texmf/tex/plain/pdcmac/pdcimth.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 = "A definition file for TeX, which redefines +%%% mathcodes to use letters from the +%%% text italic font instead of math italic. +%%% This file was generated by running +%%% plain TeX on pdcmisc.dtx", +%%% copyright = "Copyright (c) 1991, 1995 P. Damian Cugley", +%%% copying = "DO NOT DISTRIBUTE THIS FILE. +%%% Distribute pdcmisc.dtx only as part of the +%%% package it came in.", +%%% dependencies = "", +%%% } diff --git a/Master/texmf-dist/source/plain/pdcmac/pdcl1maa.dtx b/Master/texmf-dist/source/plain/pdcmac/pdcl1maa.dtx new file mode 100644 index 00000000000..b7ec2dbe81a --- /dev/null +++ b/Master/texmf-dist/source/plain/pdcmac/pdcl1maa.dtx @@ -0,0 +1,248 @@ +% pdcl1maa.dtx -- documentation & source for pdcl1maa.tex -*-tex-*- + +%%%@TeX-document-file { +%%% title = "PDCL1MAA -- Formatting Macros", +%%% filename = "$texmf/doc/plain/pdcmac/pdcl1maa.dtx", +%%% version = "$Revision: 1.3 $", +%%% package = "pdcmac 1.0", +%%% date = "$Date: 1995/03/30 16:09:52 $", +%%% 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 pdcl1maa.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" +%%%} + +%{{{ pdcl1maa +%{{{ preamble + +\relax +\input pdccode + +\document +\rcs$Id: pdcl1maa.dtx,v 1.3 1995/03/30 16:09:52 pdc Exp $\endrcs +\codefile{pdcl1maa.tex} +%}}} preamble +%{{{ introduction + +\author{P. Damian Cugley} +\title{PDCL1MAA---Macros for using Latin-1 characters with Malvern~A} +\section{Introduction} + + This document describes |pdcl1maa.tex|, a collection of + definitions designed to make Malvern~A characters available + using the ISO~8859--1 input encoding (Latin-1). + + +\subsec{About this document} + + The definitions file and the printed documentation are both in + |pdcl1maa.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 |pdcl1maa.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 + \|\% pdcl1maa.tex \fileversion~\filedate~-- Latin-1 chars in Malvern-A + | + |%%%@TeX-definition-file { + |%%% filename = "$texmf/tex/plain/pdcmac/pdcl1maa.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 = "ISO 8859-1 characters using Malvern-A fonts. + |%%% This file was generated by running + \|\%\%\%~~~~~~~~~~~~~~~~~~~plain TeX on \jobname.dtx", + |%%% copyright = "Copyright (c) 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~<pdc \filedate>\} + | +\endcode +%}}} file id +%{{{ ISO 8859-1 support +\section{ISO 8859--1 input} + +\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|. Those with an equivalent standard + ligature use that ligature. + + 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=~ +% A1 +% A2 +% A3 +% A4 + |\catcode`^^a5\active \let^^a5=\yen +% A6 + |\catcode`^^a7\active \let^^a7=\S + |\catcode`^^a8\active \let^^a8=\" + |\catcode`^^a9\active \let^^a9=\copyright + |\catcode`^^aa\active \let^^aa=\orda + |\catcode`^^ab\active \def^^ab{<<} + |\catcode`^^ac\active \let^^ac=\lnot + |\catcode`^^ad\active \let^^ad=\- + |\catcode`^^ae\active \let^^ae=\registered + |\catcode`^^af\active \let^^af=\= +\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=\' + |\catcode`^^b5\active \let^^b5=\mu + |\catcode`^^b6\active \let^^b6=\P + |\catcode`^^b7\active \let^^b7=\gbdecimal + |\catcode`^^b8\active \let^^b8=\c + |\catcode`^^b9\active \def^^b9{^1} + |\catcode`^^ba\active \let^^ba=\ordo + |\catcode`^^bb\active \def^^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 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.} are |\let| to the + corresponding composite-letter-making command---one may write + `{\tt\char"7F u\char"18 c}' to get `\"u\c c'. +\code + |\catcode`^^c0\active \def^^c0{\`A} + |\catcode`^^c1\active \def^^c1{\'A} + |\catcode`^^c2\active \def^^c2{\^A} + |\catcode`^^c3\active \def^^c3{\~A} + |\catcode`^^c4\active \def^^c4{\"A} + |\catcode`^^c5\active \let^^c5=\AA + |\catcode`^^c6\active \let^^c6=\AE + |\catcode`^^c7\active \def^^c7{\c C} + |\catcode`^^c8\active \def^^c8{\`E} + |\catcode`^^c9\active \def^^c9{\'E} + |\catcode`^^ca\active \def^^ca{\^E} + |\catcode`^^cb\active \def^^cb{\"E} + |\catcode`^^cc\active \def^^cc{\`I} + |\catcode`^^cd\active \def^^cd{\'I} + |\catcode`^^ce\active \def^^ce{\^I} + |\catcode`^^cf\active \def^^cf{\"I} +\smallbreak + |\catcode`^^d0\active \let^^d0=\DH + |\catcode`^^d1\active \def^^d1{\~N} + |\catcode`^^d2\active \def^^d2{\`O} + |\catcode`^^d3\active \def^^d3{\'O} + |\catcode`^^d4\active \def^^d4{\^O} + |\catcode`^^d5\active \def^^d5{\~O} + |\catcode`^^d6\active \def^^d6{\"O} + |\catcode`^^d8\active \let^^d8=\O + |\catcode`^^d9\active \def^^d9{\`U} + |\catcode`^^da\active \def^^da{\'U} + |\catcode`^^db\active \def^^db{\^U} + |\catcode`^^dc\active \def^^dc{\"U} + |\catcode`^^dd\active \def^^dd{\'Y} + |\catcode`^^de\active \let^^de=\TH + |\catcode`^^df\active \let^^df=\ss +\smallbreak + |\catcode`^^e0\active \def^^e0{\'a} + |\catcode`^^e1\active \def^^e1{\`a} + |\catcode`^^e2\active \def^^e2{\^a} + |\catcode`^^e3\active \def^^e3{\~a} + |\catcode`^^e4\active \def^^e4{\"a} + |\catcode`^^e5\active \let^^e5=\aa + |\catcode`^^e6\active \let^^e6=\ae + |\catcode`^^e7\active \def^^e7{\c c} + |\catcode`^^e8\active \def^^e8{\`e} + |\catcode`^^e9\active \def^^e9{\'e} + |\catcode`^^ea\active \def^^ea{\^e} + |\catcode`^^eb\active \def^^eb{\"e} + |\catcode`^^ec\active \def^^ec{\`i} + |\catcode`^^ed\active \def^^ed{\'i} + |\catcode`^^ee\active \def^^ee{\^i} + |\catcode`^^ef\active \def^^ef{\"i} +\smallbreak + |\catcode`^^f0\active \let^^f0=\dh + |\catcode`^^f1\active \def^^f1{\~n} + |\catcode`^^f2\active \def^^f2{\`o} + |\catcode`^^f3\active \def^^f3{\'o} + |\catcode`^^f4\active \def^^f4{\^o} + |\catcode`^^f5\active \def^^f5{\~o} + |\catcode`^^f6\active \def^^f6{\"o} + |\catcode`^^f8\active \let^^f8=\o + |\catcode`^^f9\active \def^^f9{\`u} + |\catcode`^^fa\active \def^^fa{\'u} + |\catcode`^^fb\active \def^^fb{\^u} + |\catcode`^^fc\active \def^^fc{\"u} + |\catcode`^^fd\active \def^^fd{\'y} + |\catcode`^^fe\active \let^^fe=\th + |\catcode`^^ff\active \def^^ff{\"y} +\endcode + +%}}} ISO 8859-1 support +\endcodefile +\enddocument +\bye +%}}} pdcl1maa.dtx + +%Local variables: +%fill-prefix: "\t" +%fold-folded-p: t +%End: + diff --git a/Master/texmf-dist/source/plain/pdcmac/pdcl1maa.tex b/Master/texmf-dist/source/plain/pdcmac/pdcl1maa.tex new file mode 100644 index 00000000000..17f690c48d5 --- /dev/null +++ b/Master/texmf-dist/source/plain/pdcmac/pdcl1maa.tex @@ -0,0 +1,117 @@ +% pdcl1maa.tex 1.3 1995/03/30 -- Latin-1 chars in Malvern-A + +%%%@TeX-definition-file { +%%% filename = "$texmf/tex/plain/pdcmac/pdcl1maa.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 = "ISO 8859-1 characters using Malvern-A fonts. +%%% This file was generated by running +%%% plain TeX on pdcl1maa.dtx", +%%% copyright = "Copyright (c) 1995 P. Damian Cugley", +%%% copying = "DO NOT DISTRIBUTE THIS FILE. +%%% Distribute pdcl1maa.dtx only as part of the +%%% package it came in.", +%%% dependencies = "", +%%% } + +\message{1.3 <pdc 1995/03/30>} + +\catcode`^^a0\active \let^^a0=~ +\catcode`^^a5\active \let^^a5=\yen +\catcode`^^a7\active \let^^a7=\S +\catcode`^^a8\active \let^^a8=\" +\catcode`^^a9\active \let^^a9=\copyright +\catcode`^^aa\active \let^^aa=\orda +\catcode`^^ab\active \def^^ab{<<} +\catcode`^^ac\active \let^^ac=\lnot +\catcode`^^ad\active \let^^ad=\- +\catcode`^^ae\active \let^^ae=\registered +\catcode`^^af\active \let^^af=\= +\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=\' +\catcode`^^b5\active \let^^b5=\mu +\catcode`^^b6\active \let^^b6=\P +\catcode`^^b7\active \let^^b7=\gbdecimal +\catcode`^^b8\active \let^^b8=\c +\catcode`^^b9\active \def^^b9{^1} +\catcode`^^ba\active \let^^ba=\ordo +\catcode`^^bb\active \def^^bb{>>} +\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{\`A} +\catcode`^^c1\active \def^^c1{\'A} +\catcode`^^c2\active \def^^c2{\^A} +\catcode`^^c3\active \def^^c3{\~A} +\catcode`^^c4\active \def^^c4{\"A} +\catcode`^^c5\active \let^^c5=\AA +\catcode`^^c6\active \let^^c6=\AE +\catcode`^^c7\active \def^^c7{\c C} +\catcode`^^c8\active \def^^c8{\`E} +\catcode`^^c9\active \def^^c9{\'E} +\catcode`^^ca\active \def^^ca{\^E} +\catcode`^^cb\active \def^^cb{\"E} +\catcode`^^cc\active \def^^cc{\`I} +\catcode`^^cd\active \def^^cd{\'I} +\catcode`^^ce\active \def^^ce{\^I} +\catcode`^^cf\active \def^^cf{\"I} +\catcode`^^d0\active \let^^d0=\DH +\catcode`^^d1\active \def^^d1{\~N} +\catcode`^^d2\active \def^^d2{\`O} +\catcode`^^d3\active \def^^d3{\'O} +\catcode`^^d4\active \def^^d4{\^O} +\catcode`^^d5\active \def^^d5{\~O} +\catcode`^^d6\active \def^^d6{\"O} +\catcode`^^d8\active \let^^d8=\O +\catcode`^^d9\active \def^^d9{\`U} +\catcode`^^da\active \def^^da{\'U} +\catcode`^^db\active \def^^db{\^U} +\catcode`^^dc\active \def^^dc{\"U} +\catcode`^^dd\active \def^^dd{\'Y} +\catcode`^^de\active \let^^de=\TH +\catcode`^^df\active \let^^df=\ss +\catcode`^^e0\active \def^^e0{\'a} +\catcode`^^e1\active \def^^e1{\`a} +\catcode`^^e2\active \def^^e2{\^a} +\catcode`^^e3\active \def^^e3{\~a} +\catcode`^^e4\active \def^^e4{\"a} +\catcode`^^e5\active \let^^e5=\aa +\catcode`^^e6\active \let^^e6=\ae +\catcode`^^e7\active \def^^e7{\c c} +\catcode`^^e8\active \def^^e8{\`e} +\catcode`^^e9\active \def^^e9{\'e} +\catcode`^^ea\active \def^^ea{\^e} +\catcode`^^eb\active \def^^eb{\"e} +\catcode`^^ec\active \def^^ec{\`i} +\catcode`^^ed\active \def^^ed{\'i} +\catcode`^^ee\active \def^^ee{\^i} +\catcode`^^ef\active \def^^ef{\"i} +\catcode`^^f0\active \let^^f0=\dh +\catcode`^^f1\active \def^^f1{\~n} +\catcode`^^f2\active \def^^f2{\`o} +\catcode`^^f3\active \def^^f3{\'o} +\catcode`^^f4\active \def^^f4{\^o} +\catcode`^^f5\active \def^^f5{\~o} +\catcode`^^f6\active \def^^f6{\"o} +\catcode`^^f8\active \let^^f8=\o +\catcode`^^f9\active \def^^f9{\`u} +\catcode`^^fa\active \def^^fa{\'u} +\catcode`^^fb\active \def^^fb{\^u} +\catcode`^^fc\active \def^^fc{\"u} +\catcode`^^fd\active \def^^fd{\'y} +\catcode`^^fe\active \let^^fe=\th +\catcode`^^ff\active \def^^ff{\"y} diff --git a/Master/texmf-dist/source/plain/pdcmac/pdclft.def b/Master/texmf-dist/source/plain/pdcmac/pdclft.def new file mode 100644 index 00000000000..7ccd9172b55 --- /dev/null +++ b/Master/texmf-dist/source/plain/pdcmac/pdclft.def @@ -0,0 +1,106 @@ +% pdclft.def 1.2 1995/03/30 -- macros for short documents +%%%@TeX-definition-file { +%%% filename = "pdclft.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 <pdc 1995/03/30>} + +\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\secno \newcount\subsecno +\def\thesecno{% + \n{% + \number\secno + \ifnum\subsecno>0 + .\number\subsecno + \fi + }% +} +\def\section{ + \global\advance\secno1 \global\subsecno0 + \doheading\medskipamount{\subheadingfonts\thesecno\enspace}{} +} +\def\subsec{ + \global\advance\subsecno1 + \doheading\smallskipamount{\bodyfonts\thesecno\enspace}{} +} +\newtoks\majorheadline +\expandafter\majorheadline + \expandafter{\expandafter\uppercase\expandafter{\jobname}} +\newif\ifnoheadline \newif\iftwosided +\headline{% + \ifnoheadline + \hfil + \else\iftwosided + \ifodd\pageno + \hfil \the\majorheadline \quad{\bf\folio}% + \else + {\bf\folio}\quad \the\majorheadline\hfil + \fi + \else + \hfil \the\majorheadline \quad{\bf\folio}% + \fi\fi +} +\footline{% + \ifnoheadline + \global\noheadlinefalse + \hfil{\bf\folio}\hfil + \else + \hfil + \fi +} +\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/pdcmacvn.tex b/Master/texmf-dist/source/plain/pdcmac/pdcmacvn.tex new file mode 100644 index 00000000000..e8a114b16d7 --- /dev/null +++ b/Master/texmf-dist/source/plain/pdcmac/pdcmacvn.tex @@ -0,0 +1 @@ +\def\pdcmacversion{1.0.01} diff --git a/Master/texmf-dist/source/plain/pdcmac/pdcmigr.tex b/Master/texmf-dist/source/plain/pdcmac/pdcmigr.tex new file mode 100644 index 00000000000..a01860a53e3 --- /dev/null +++ b/Master/texmf-dist/source/plain/pdcmac/pdcmigr.tex @@ -0,0 +1,37 @@ +% pdcmigr.tex 1.4 1995/03/30-- see end of file for more info +\message{1.4 <pdc 1995/03/30>} +\mathchardef\Gamma = "7100 +\mathchardef\Delta = "7101 +\mathchardef\Theta = "7102 +\mathchardef\Lambda = "7103 +\mathchardef\Xi = "7104 +\mathchardef\Pi = "7105 +\mathchardef\Sigma = "7106 +\mathchardef\Upsilon = "7107 +\mathchardef\Phi = "7108 +\mathchardef\Psi = "7109 +\mathchardef\Omega = "710A +\endinput +%%%@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 = "A definition file for TeX, which redefines +%%% \Gamma, ..., \Omega to use letters from the +%%% maths italic font instead of the roman font. +%%% This file was generated by running +%%% plain TeX on pdcmisc.dtx", +%%% copyright = "Copyright (c) 1991, 1995 P. Damian Cugley", +%%% copying = "DO NOT DISTRIBUTE THIS FILE. +%%% Distribute pdcmisc.dtx only as part of the +%%% package it came in.", +%%% dependencies = "", +%%% } diff --git a/Master/texmf-dist/source/plain/pdcmac/pdcmisc.dtx b/Master/texmf-dist/source/plain/pdcmac/pdcmisc.dtx new file mode 100644 index 00000000000..4e73e2c8eda --- /dev/null +++ b/Master/texmf-dist/source/plain/pdcmac/pdcmisc.dtx @@ -0,0 +1,555 @@ +% pdcmisc.dtx -- documentation and source code for misc macro files -*-tex-*- + +%%%@TeX-document-file { +%%% title = "Miscellanous macro files", +%%% filename = "$texmf/doc/plain/pdcmac/pdcmisc.dtx", +%%% version = "$Revision: 1.4 $", +%%% package = "pdcmac 1.0", +%%% date = "$Date: 1995/03/30 16:13:08 $", +%%% author = "P. Damian Cugley", +%%% email = "damian.cugley@comlab.ox.ac.uk", +%%% address = "Oxford University Computing Laboratory," +%%% Parks Road, Oxford OX1 3QD, UK", +%%% abstract = "This document describes and is the source code for +%%% the TeX definitions files pdcmigr.tex, pdcimth.tex, +%%% pdchyex.tex, pdcmasyb.tex. +%%% Running plain TeX on this file produces both the +%%% definitions files and the printed documentation.", +%%% copyright = "Copyright (c) 1991-1995 P. Damian Cugley", +%%% copying = "This program is free software; you can redistribute +%%% it and/or modify it under the terms of the GNU +%%% General Public License as published by the Free +%%% Software Foundation; either version 2 of the License, +%%% or (at your option) any later version.", +%%% notice = "This program is distributed in the hope that it will +%%% be useful, but WITHOUT ANY WARRANTY; without even the +%%% implied warranty of MERCHANTABILITY or FITNESS FOR A +%%% PARTICULAR PURPOSE. See the GNU General Public +%%% License for more details.", +%%% notice = "You should have received a copy of the GNU General +%%% Public License along with this program; if not, write +%%% to the Free Software Foundation, Inc., 675 Mass Ave, +%%% Cambridge, MA 02139, USA.", +%%% codetable = "USASCII", +%%% dependencies = "pdccode.tex" +%%%} + +%{{{ pdcmisc.dtx +%{{{ preamble + +\relax +\input pdccode + +\document +\rcs$Id: pdcmisc.dtx,v 1.4 1995/03/30 16:13:08 pdc Exp $\endrcs + +\def\newfile{\lineno=0 } +%}}} preamble +%{{{ intro +\author{P. Damian Cugley} +\title{Miscellaneous macro files} + +%}}} intro +%{{{ pdcmigr + +\newfile +\section{PDCMIGR: Use math italic Greek capitals} + + Knuth notes that it is conventional to use unslanted Greek + capitals in maths, even though other letters are slanted + (I~personally think that it looks nicer to use slanted Greek + caps). Thus \TeX\ takes the Greek capitals from fam~0 by + default. + + If you are using a body text font that does not have the Greek + capitals---for example, almost any PostScript or Cork-style + font---then this no longer works. Better then to switch to + using the Greek capitals from the math italic font (fam~1). + That's what the file |pdcmigr.tex| does. The characters are + still in maths class~7, meaning that they will respect changes + to |\fam| made by font-switching commands. + +\codefile{pdcmigr.tex} + +\code + \|\% pdcmigr.tex \fileversion~\filedate -- see end of file % + for more info + \|\\message\{\fileversion~<\fileauthor~\filedate>\} +\smallbreak + |\mathchardef\Gamma = "7100 + |\mathchardef\Delta = "7101 + |\mathchardef\Theta = "7102 + |\mathchardef\Lambda = "7103 + |\mathchardef\Xi = "7104 + |\mathchardef\Pi = "7105 + |\mathchardef\Sigma = "7106 + |\mathchardef\Upsilon = "7107 + |\mathchardef\Phi = "7108 + |\mathchardef\Psi = "7109 + |\mathchardef\Omega = "710A +\endcode + + This file has more comments than code. Since the code is so + short I think I'll get away with putting the comments after an + |\endinput|. +\code + |\endinput +\smallskip + |%%%@TeX-definition-file { + |%%% filename = "$texmf/tex/plain/pdcmac/pdcmigr.tex", + \|\%\%\% version~~~~~~~~= "\fileversion", + \|\%\%\% date~~~~~~~~~~~= "\filedate", + |%%% package = "pdcmac 1.0", + |%%% author = "P. Damian Cugley", + |%%% email = "damian.cugley@comlab.ox.ac.uk", + |%%% address = "Oxford University Computing Laboratory, + |%%% Parks Road, Oxford OX1 3QD, UK", + |%%% codetable = "USASCII", + |%%% keywords = "TeX, plain TeX, macros", + |%%% supported = "Maybe", + |%%% abstract = "A definition file for TeX, which redefines + |%%% \Gamma, ..., \Omega to use letters from the + |%%% maths italic font instead of the roman font. + |%%% This file was generated by running + |%%% plain TeX on pdcmisc.dtx", + |%%% copyright = "Copyright (c) 1991, 1995 P. Damian Cugley", + |%%% copying = "DO NOT DISTRIBUTE THIS FILE. + |%%% Distribute pdcmisc.dtx only as part of the + |%%% package it came in.", + |%%% dependencies = "", + |%%% } +\endcode + +\endcodefile +%}}} pdcmigr +%{{{ pdcimth + +\newfile +\section{PDCIMTH: use text italic letters in maths mode} + + Very few existing font families have a separate math-italic font. When + using these fonts as body fonts, with the Computer Modern fonts as + maths fonts, it looks wrong to have the maths letters in a completely + different style form the text italic. Therefore it makes sense to + redefine maths mode so that the letters come from the text italic font. + + This is also useful when multiple-letter identifiers are used in maths + mode. We c an say |$difference:=height+depth$| and get `$\it + difference:=height+depth$' instead of `$difference:=height+depth$'. + + In the following, the counters |\count0| to |\count4| are used as + follows: +$$\centerline{\vbox{\halign{\tt\cs{#}\hfil&&\quad#\hfil\cr + count0&mathcode for current upper case char\cr + count1&mathcode for current lower case char\cr + count2&ASCII code of current upper case char\cr + count3&ASCII code of current lower case char\cr + count4&number of characters left to redefine\cr +}}}$$ + The grouping prevents this temporary use conflicting with \TeX's + use of these counters. + +\codefile{pdcimth.tex} +\code + \|\% pdcimth.tex \fileversion~\filedate~- maths letters in text italic + \|\\message\{\fileversion~\filedate\} + | + |\begingroup +\smallbreak + | \count0="7400 \count1=\count0 + | \advance\count0 by`A \advance\count1 by`a + | \count2=`A \count3=`a \count4=26 +\smallbreak + | \loop\ifnum\count4>0 + | \advance\count4 by-1 + | \global\mathcode\count2=\count0 + | \global\mathcode\count3=\count1 + | \advance\count0 by1 \advance\count1 by1 + | \advance\count2 by1 \advance\count3 by1 + | \repeat +\smallbreak + |\endgroup +\endcode +\noindent + The value $\hbox{\H{}\tt 7400} + c$ used above means mathcode~7, + fam~4 (|\itfam|), character~$c$. + + Once again, the code is short enough that I think I can get away + with putting the comments at the end: +\code + |\endinput +\smallskip + |%%%@TeX-definition-file { + |%%% filename = "$texmf/tex/plain/pdcmac/pdcimth.tex", + \|\%\%\% version~~~~~~~~= "\fileversion", + \|\%\%\% date~~~~~~~~~~~= "\filedate", + |%%% package = "pdcmac 1.0", + |%%% author = "P. Damian Cugley", + |%%% email = "damian.cugley@comlab.ox.ac.uk", + |%%% address = "Oxford University Computing Laboratory, + |%%% Parks Road, Oxford OX1 3QD, UK", + |%%% codetable = "USASCII", + |%%% keywords = "TeX, plain TeX, macros", + |%%% supported = "Maybe", + |%%% abstract = "A definition file for TeX, which redefines + |%%% mathcodes to use letters from the + |%%% text italic font instead of math italic. + |%%% This file was generated by running + |%%% plain TeX on pdcmisc.dtx", + |%%% copyright = "Copyright (c) 1991, 1995 P. Damian Cugley", + |%%% copying = "DO NOT DISTRIBUTE THIS FILE. + |%%% Distribute pdcmisc.dtx only as part of the + |%%% package it came in.", + |%%% dependencies = "", + |%%% } +\endcode +\endcodefile +%}}} pdcimth +%{{{ pdchyex + +\newfile +\section{PDCHYEX: Hyphenation exceptions} + + These hyphenation exceptions are ones I~use for must documents. + +\notepar + Of all the macro files in this package, this is the one you + should be most chary of using. These are written for a \TeX\ + system which uses American English hyphenation patterns, but are + intended to help it produce hyphenations suitable for British + English, and this peverse approach will probably lead to all + sorts of anomalies. Ideally separate hyphenation patterns will + be used for British English documents. +\endnotepar + +\codefile{pdchyex.tex} + +\subsec{File identification} + + The list of exceptions is expected to grow, so it seems best to + have the identification at the top of the file. + +\code + \|\% pdchyex.tex \fileversion~\filedate~-- some British hyphenations +\smallskip + |%%%@TeX-definition-file { + |%%% filename = "$texmf/tex/plain/pdcmac/pdchyex.tex", + \|\%\%\% version~~~~~~~~= "\fileversion", + \|\%\%\% date~~~~~~~~~~~= "\filedate", + |%%% package = "pdcmac 1.0", + |%%% author = "P. Damian Cugley", + |%%% email = "damian.cugley@comlab.ox.ac.uk", + |%%% address = "Oxford University Computing Laboratory, + |%%% Parks Road, Oxford OX1 3QD, UK", + |%%% codetable = "USASCII", + |%%% keywords = "TeX, plain TeX, macros", + |%%% supported = "Maybe", + |%%% abstract = "A non-exhaustive set of hyphenation exceptions + |%%% designed to make TeX with American hyphenation + |%%% tables produce some British hyphenations. + |%%% This file was generated by running + |%%% plain TeX on pdcmisc.dtx", + |%%% copyright = "Copyright (c) 1991, 1995 P. Damian Cugley", + |%%% copying = "DO NOT DISTRIBUTE THIS FILE. + |%%% Distribute pdcmisc.dtx only as part of the + |%%% package it came in.", + |%%% dependencies = "", + |%%%} + | + \|\\message\{\fileversion~<\fileauthor~\filedate>\} + | +\endcode + +\subsec{Setting parameters} + + These settings are from {\it Hart's Rules} p.\thinspace141. +\code + |\lefthyphenmin=2 \righthyphenmin=3 \uchyph=0 +\endcode + +\subsec{And finally, the hyphenation exceptions} + +\code + |\hyphenation{ +\endcode + First, some words from {\it Hart's Rules}\/ pp.\thinspace14--15. + I've taken the list on p.\thinspace14 and included here those + which were given wrong hyphenation by \TeX's default tables. +\code + | le-gend le-gends re-adjust re-appear exact-ing +\smallbreak + + | abs-cess abs-cess-es abs-cessed ana-lyse ana-lyses + | ana-lysis ana-lyses appear-ance appear-ances bio-graphy + | celeb-rate celeb-rates celeb-rations cor-respond-ence + | depend-ent des-pise des-pises dis-pised dimin-ish + | dimin-ish-es dimin-ish-ed dis-connect dis-connect-ed + | dis-connects forget-ting gener-ally haemor-rhage + | illus-trate immedi-ate immedi-ately immport-ance + | inexplic-able inter-pret inter-est inter-ested + | inter-est-ing minis-ter origin-ally philo-sophy + | philo-sophic philo-sophic-ally prim-ary prob-ably + | semb-lance +\smallbreak + | calm-est debt-ors fea-ther fea-thers post-humous lamb-like + | poingn-ant tough-ish ach-ing archaeo-logy etymo-logy + | philo-logist psycho-logist tauto-logy zoolo-gist +\endcode + Now some random hyphenations I~encountered in my own documents + at some point. I~haven't checked these in a spelling + dictionary, so don't use them in documents where your life + depends on correct hyphenation. +\code + + | art-iest cig-ar-ette bio-logy bio-chem-is-try boy-friend + | brit-ain brit-ish com-ic com-ics cug-ley dogs-body + | dor-mouse gai-man graph-ic immedie-ate immedi-ate + | immedi-ately issue mckean mis-hap mis-haps news-letter + | news-paper night-crawler origin-ally origin-ator phys-ique + | phys-iques porn-o-graphy porn-o-graphic rec-om-mend-ation + | Ser-geant ser-geant Sien-kie-wicz spon-tan-e-ous + | spon-tan-e-ously stop-ped strip-ped teen-ager teen-agers + | tem-per-men-tal Thatch-er-ism Thatch-er-ite under-ground + | under-grounds var-i-able venge-ance warp-smith warp-smiths + | whirl-pool + + |} +\endcode +\endcodefile + +%}}} pdchyex +%{{{ pdccmsub + +\newfile +\codefile{pdccmsub.tex} +\section{PDCCNSUB: Substitutions using Computer Modern glyphs} + + The Malvern and PostScript repertoire includes some characters + not included in the \TeX\ Text fonts used by plain \TeX. I~have + made macros for some of these that assemble symbols from + existing characters. This way documents can be switched between + the different font encoding schemes mroe easily. They won't + look very pretty though. + +\notepar + These work acceptably with ten-point Computer Modern but might + need adjustment with other fonts. +\endnotepar + +%{{{ indentification +\subsec{File dientification} + +\code + \|\% \filename~\fileversion~\filedate~-- CM subs for PS glyphs +\smallskip + |%%%@TeX-definition-file { + |%%% filename = "$texmf/tex/plain/pdcmac/pdcmigr.tex", + \|\%\%\% version~~~~~~~~= "\fileversion", + \|\%\%\% date~~~~~~~~~~~= "\filedate", + |%%% package = "pdcmac 1.0", + |%%% author = "P. Damian Cugley", + |%%% email = "damian.cugley@comlab.ox.ac.uk", + |%%% address = "Oxford University Computing Laboratory, + |%%% Parks Road, Oxford OX1 3QD, UK", + |%%% codetable = "USASCII", + |%%% keywords = "TeX, plain TeX, macros", + |%%% supported = "Maybe", + |%%% abstract = "Macros for simulating some PostScript characters + |%%% using glyphs form the Computer Modern family. + |%%% This file was generated by running + |%%% plain TeX on pdcmisc.dtx", + |%%% copyright = "Copyright (c) 1991-1995 P. Damian Cugley", + |%%% copying = "DO NOT DISTRIBUTE THIS FILE. + |%%% Distribute pdcmisc.dtx only as part of the + |%%% package it came in.", + |%%% dependencies = "", + |%%% } + | + \|\\message\{\fileversion~\filedate\} + | +\endcode + +%}}} indentification + + +\code + |\dimendef\dimena=0 +\endcode +\dimendef\dimena=0 + +%{{{ currency + +\subsec{Currency signs} + +\def\yen{{% + \ooalign{% + \hfil\raise0.25ex\hbox{$\scriptscriptstyle=$}\hfil\crcr + \hfil Y\hfil + }% +}} +\def\currency{{% + \ooalign{% + \dimena-0.10em + \hskip\dimena \raise0.2ex \hbox{\mathhexbox202}\hskip\dimena\crcr + \hfil \raise0.2ex \hbox{\mathhexbox20E}\hfil + }% +}} + + The Yen sign looks like `50\thinspace000\yen', the cents sign + like `37\rlap/c'. The pounds-sterling sign is always italic. +\code + |\def\pounds{{\it\char36 }} +\smallbreak + |\def\yen{{% + | \ooalign{% + | \hfil\raise0.25ex\hbox{$\scriptscriptstyle=$}\hfil\crcr + | \hfil Y\hfil + | }% + |}} +\smallbreak + |\def\cents{\leavevmode\hbox{\rm\rlap/c}} +\endcode + + The ISO~646 currency sign---originally created to replace the + dollar sign in the international reference version character + set---is supposed to be drawn as a circle with four `ears'; + we'll have to fake it rather crudely: `\currency', as in + `\currency100' or possibly `100\currency'. +\code + |\def\currency{{% + | \ooalign{% + | \hskip-0.1em + | \raise0.2ex \hbox{\mathhexbox202}\hskip-0.1em\crcr + | \hfil \raise0.2ex \hbox{\mathhexbox20E}\hfil + | }% + |}} +\endcode + + The florin sign `{\it f}' seems to have started life as a way of + getting an italic {\it f} on dot-matrix printers. In an italic + context it still has to be in itaics---switching to a roman + letter does not seem appropriate. +\code + |\def\florin{{\it f\/}} +\endcode + +%}}} currency +%{{{ circled letters + + +\subsec{Things in circles} + +\def\circledletter#1#2{{% + \ooalign{% + \hfil\kern#1\hbox{$\scriptstyle\rm #2$}\hfil\crcr + \mathhexbox20D% + }% +}} +\def\registered{\circledletter{0.02em}R} +\def\copyright{\circledletter{-0.045em}C} + Here's a general macro for making letters in circles---like + the registered trade mark sign `\registered', or the signs + `\circledletter{0.04em}P' and `\circledletter{0.02em}S' + (I~don't use them so I~haven't given them names) or even `\circledletter{0.05em}1'. A matching + copyright sing (using a small capital {\it c} instead of a + lower case {\it c}) looks like `\copyright'. Parameter |#1| + to the macro is the amount to shift the small letter relative + to the circle to get it optically centred. +\code + |\def\circledletter#1#2{{% + | \ooalign{% + | \hfil\kern#1\raise0.00ex \hbox{$\scriptstyle\rm #2$}\hfil\crcr + | \mathhexbox20D% + | }% + |}} +\smallbreak + |\def\registered{\circledletter{0.02em}R} + |\def\copyright{\circledletter{-0.045em}C} +\endcode +%}}} circled letters +%{{{ guillemets + +\subsec{Guillemets} + +\def\lguillemet{\leavevmode \raise0.5ex \hbox{$\scriptscriptstyle\langle\!\langle$}} +\def\rguillemet{\leavevmode \raise0.5ex \hbox{$\scriptscriptstyle\rangle\!\rangle$}} + + Ersatz guillemets look like \lguillemet this\rguillemet. +\code + |\def\lguillemet{% + | \leavevmode + | \raise0.5ex \hbox{$\scriptscriptstyle\langle\!\langle$}% + |} +\smallbreak + |\def\rguillemet{% + | \leavevmode + | \raise0.5ex \hbox{$\scriptscriptstyle\rangle\!\rangle$}% + |} +\endcode +%}}} guillemets +%{{{ misc +\subsec{Miscellaneous} + +\def\permille{{% + \setbox0 \hbox{/}% + \flushtop{$\scriptstyle0\!$}/% + \lower\dp0 \hbox{$\!\scriptstyle00$}% +}} +\def\orda{\flushtop{\the\scriptfont\ifnum\fam>0 \fam\else 0\fi \b a}} +\def\ordo{\flushtop{\the\scriptfont\ifnum\fam>0 \fam\else 0\fi \b o}} + + The per-mille sign `\permille' can't be made from `\%' sign because + matching the rings is impossible, so we use `0/00': +\code + |\def\permille{{% + | \setbox0 \hbox{/}% + | \flushtop{$\scriptstyle0\!$}/% + | \lower\dp0 \hbox{$\!\scriptstyle00$}% + |}} +\endcode + + The British decimal point is a raised dot: `3\mathhexbox201141' + instead of `3.141'. +\code + |\def\gbdecimal{\mathhexbox201} +\endcode + Unfortunately, this symbol has become a casualty of the `DTP + revolution', and the American use of a full stop as a decimal + point has become common. + + The glyphs `\orda' and `\ordo' are used in to abbreviate Spanish + ordinal numbers: the feminine {\it primera} becomes 1\orda, and + the masculine {\it primero} 1\ordo. +\code + |\def\orda{\flushtop{\the\scriptfont\ifnum\fam>0 \fam\else 0\fi \b a}} + |\def\ordo{\flushtop{\the\scriptfont\ifnum\fam>0 \fam\else 0\fi \b o}} +\endcode + + +%}}} misc +%{{{ sc and csc + +\subsec{Substitutions for Malvern's alphabet-switching commands} + + The macros used to select small capitals etc.\ in Malvern fonts + cannot work with Computer Modern, but might appear in documents + anyway. Instead they are all made equivalent to |\relax|. + +\code + |\let\sc=\relax + |\let\csc=\relax + |\let\mc=\relax +\endcode + +%}}} sc and csc + +\endcodefile + +%}}} pdcmasub +\enddocument +\bye +%}}} pdcmisc.dtx +%Local Variables: +%fill-prefix: " " +%fold-folded-p: t +%End: diff --git a/Master/texmf-dist/source/plain/pdcmac/pdcmondo.tex b/Master/texmf-dist/source/plain/pdcmac/pdcmondo.tex new file mode 100644 index 00000000000..5736cf2cbdc --- /dev/null +++ b/Master/texmf-dist/source/plain/pdcmac/pdcmondo.tex @@ -0,0 +1,189 @@ +% Combined listing of the PDCMAC macros +% hacked together pdc 1995-03-28 + +\relax +\input pdccode +\input epsf +\errorcontextlines10000 +\document + +\input pdcmacvn + +% Redefine the PDCCODE macros + +%\def\codefile#1{} +%\def\endcodefile{} +%\begingroup\obeylines \toksa={\endgroup % +% \def\CODElinei#1^^M{% +% \indent\the\everycodeline #1\par % +% \endgroup % matches \CODEline +% }% +% \def\CODElinex#1^^M{% +% {\indent\the\everycodeline #1\par}% +% }% +%} \the\toksa + + +% abbreviated TOC macros taken from pdcsty + +\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\TOCentryfile#1#2#3{ + \medbreak\noindent{\subsecfont #2}\smallskip +} +\def\TOCentrysection#1#2#3{ + \indent \llap{\S#1\enspace} + \ignorespaces #2\quad#3\par +} +\def\TOCentrysubsec#1#2#3{} + + +% Abbreviated fontmatter definitions from pdcsty: + +\def\frontmatter{ + \write\TOCfile{\string\endinput} + \closeout\TOCfile + \vfill\supereject + \pageno=-1 \secnofalse \headline{\hfil} + \def\TOCwrite##1##2##3{} +} +\def\endfrontmatter{ + \section{Contents} + \input\jobname.toc + \vfill\supereject +} +\newif\ifsecno \secnotrue + + +% sectioning taken from pdccode -- adapted to include TOC entries. + +\def\section#1{% + \advance\seccount1 \subseccount=0 + \bigbreak + \begingroup + \secfont \hyphenpenalty=10000 \tolerance=1000 + \rightskip=0pt plus 2em + \ifsecno \noindent\llap{\number\seccount.\enspace}\fi #1 + \TOCwrite\TOCentrysection{\number\seccount}{#1} + \nobreak\medskip + \endgroup + \noindenttrue +} +\def\subsec#1{% + \advance\subseccount1 + \medbreak + \begingroup + \subsecfont \hyphenpenalty=10000 \tolerance=1000 + \parskip=0pt \parindent=0pt \rightskip=0pt plus 2em + \ifsecno \noindent\llap{\number\seccount.% + \number\subseccount.\enspace}\fi #1 + \TOCwrite\TOCentrysubsec{\number\seccount.\number\subseccount}{#1} + \nobreak\smallskip + \endgroup + \noindenttrue +} +\def\title#1{ + \vglue2\baselineskip + \begingroup \titlefont \parindent-\leftmargin \hyphenpenalty10000 + #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{% + \hskip-\leftmargin \sevenbf \themarks \hfil #1 + \fileversion + \ifx\filelocker\empty + \space\mungedate\filedate + \else + e\space\today + \fi + }} + \TOCwrite\TOCentryfile{}{#1} +} + +% A command to include another complete document in this one. + +\def\includedocument#1{ + \begingroup + \let\RELAX\relax + \def\relax{\let\relax\RELAX \iffalse} + \let\document=\fi + \let\enddocument\endinput + \lineno=0 + \input #1 + \vfil\eject \mark{} + \endgroup +} + +\includedocument{maamac.dtx} +\includedocument{magrmac.dtx} +\includedocument{pdcadobe.dtx} +\includedocument{pdccode.dtx} +\includedocument{pdcfsel.dtx} +\includedocument{pdcfmt2.dtx} +\includedocument{pdcl1maa.dtx} +\includedocument{pdcmisc.dtx} +\includedocument{pdcoput5.dtx} + +\headline{\hfil} +\null +% need a blank page (unfortunate kludge) +% This is because each embedded document is followed by a page break +% but we need the a page break before the TOC to finish writing out +% the TOC file. Argh. +\frontmatter +\vfill +\leftline{\titlefont PDCMAC Mondo Combined Listing} +\leftline{\titlefont For release 1\kern-0.07em \raise0.5ex\hbox{.}0} + +\section{Preface} + + PDCMAC is a package of plain \TeX\ macro files. The macro files + are generated by running plain \TeX\ on |dtx| files, which + produces both a copy of the macros and printed documentation + (see the {\it PDCMAC User Guide}\/ for more information). This + `combined listing' is a compilation of most of the |dtx| files + in the PDCMAC distribution (|pdcsty.dtx|, which generates the + sample style files, is not included). + + This compilation document works as follows. First it reads + |pdcmac.tex| and then redefines some macros to write entries for + a table of contents, and then reads the |dtx| files one after + another. The results should be same as running \TeX\ on each of + the |dtx| files separately, except that the pages are numbered + continuously and there is a contents list. + + This is useful for two different purposes: (1)~to make a printed + copy of the macros for reference while using them, and (2)~to + generate all the macro files in one \TeX\ command instead of + several. This is useful when you cannot use the makefile + supplied with the package. If you do have the makefile, it will + probably be the more convenient way to keep the macro files + up-to-date. + + The files are included in alphabetical order. See the PDCCODE + chapter below for information on the PDCCODE system. + +\endfrontmatter +\enddocument +\bye + +%Local Variables: +%fill-prefix: " " +%tex-has-children: t +%End: diff --git a/Master/texmf-dist/source/plain/pdcmac/pdcoput5.dtx b/Master/texmf-dist/source/plain/pdcmac/pdcoput5.dtx new file mode 100644 index 00000000000..59930102a17 --- /dev/null +++ b/Master/texmf-dist/source/plain/pdcmac/pdcoput5.dtx @@ -0,0 +1,986 @@ +% pdcoput5.dtx -- documentation & source for outpout routine -*-tex-*- + +%%%@TeX-document-file { +%%% title = "PDCOPUT5 -- An output routine for zines", +%%% filename = "$texmf/doc/plain/pdcmac/pdcoput5.dtx", +%%% version = "$Revision: 5.3 $", +%%% package = "pdcmac 1.0", +%%% date = "$Date: 1995/04/06 11:51:03 $", +%%% 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 pdcoput5.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" +%%%} + +%{{{ pdcoput5.tex +%{{{ preamble + +\relax +\input pdccode +\input epsf + +\document +\rcs$Id: pdcoput5.dtx,v 5.3 1995/04/06 11:51:03 pdc Exp $\endrcs + +\codefile{pdcoput5.tex} + +\countdef\counta=255 \newcount\countb +\counta=`a \countb="7461 +\loop \ifnum\counta<"7B + \mathcode\counta\countb + \advance\counta1 \advance\countb1 +\repeat +\counta=`A \countb="7441 +\loop \ifnum\counta<"5B + \mathcode\counta\countb + \advance\counta1 \advance\countb1 +\repeat + +%}}} preamble +%{{{ introduction + +\title{PDCOPUT5---an output routine for zines} + +\section{Introduction} + + This document describes |pdcoput5.tex|, a \TeX\ definition file + that defines an output routine for \TeX\ documents. The + complete text of the macros is reproduced, with brief + descriptions of how to exploit them. + + In fact, running plain \TeX\ on the file |pdcoput5.dtx| + generates a copy of the macros in a file called |pdcoput5.tex| + in the current directory, as well as the printed + documentation.\footnote*{The \LaTeX~2e distribution uses files + with the suffix |dtx| for similar purposes.} This should help + ensure that the printed documentation matches the file it + describes. + + The name ends with `-|5|' to distinguish this file from its + predecessor (version 4.1.7), so that documents based on the old + macros can still be printed. + +%{{{ output routines +\subsec{Output routines} + + In a \TeX\ document, there is a special sequence of \TeX\ + commands called the {\it output routine} which controls the + assembly of pages for output to the |dvi| file. + Plain \TeX\ comes with an output routine that handles simple + documents (with footnotes and topinserts); \LaTeX\ has a more + complex output routine that has many extra features (margin + paragraphs, \LaTeX's floats). +%}}} output routines +%{{{ backgorund + +\subsec{Background to this output routine} + + I have been using \TeX\ to typeset fanzines\footnote\dag{The + word {\it fanzine} comes from science fiction fans' jargon: {\it + fan} for amateur (in the sense of unpaid, not necessarily + amateurish) + {\it magazine}. (They call professional magazines + {\it prozines}.) Thus a fanzine (or zine for short) is a small + magazine, often produced by photocopying or cheap printing by + its editor. The word {\it zine} rhymes with {\it scene} not + {\it sign}, and isn't spelled with an apostrophe (unless you are + the sort of person who spells {\it phone}, {\it cello} and {\it + bus} with an apostrophe).} for some years. Unfortunately, for + magazine layouts, the `floating' insertions provided by plain + \TeX\ and \LaTeX\ do exactly the wrong thing---in a magazine, + the designer wants to lay out the components of the page + (illustrations, text, headings) exactly where he or she wants + them, whereas the standard \TeX\ formats are designed to let the + formatter place components according to its own complex rules. + + Originally I~tried browbeating \LaTeX\ into doing the zine + layouts I~wanted. I realized eventually that by the time I~had + redefined enough of \LaTeX's kernel to get the effects I~wanted + I~would more or less have written everything from scratch. The + sort of typesetting I~wanted is so unlike what \LaTeX\ is + designed for that \LaTeX\ was getting in the way. + + Thus I~developed a set of \TeX\ definition files,\footnote\ddag{We + can ignore the intermediate stage, which involved writing a + `user-friendly' format in the style of \LaTeX\ and Texinfo, with + structures very different from plain \TeX's syntax. In the end + I realized that a format that requires disguising or renaming + plain \TeX\ constructs makes using and modifying the macros + harder, not easier, because the user has to understand the new + conventions in addition to plain \TeX\ syntax.} with an output + routine that allowed a page to be peppered with inserts with the + text flowing in between them (with a more restricted class of + inserts than, say, a DTP program, but still flexible enough to + be useful). The output routine also does multi-column text---in + this respect it is very similar to the |multicol| package in + \LaTeX~2e. The routine presented here has been rewritten from + scratch a few times, each time shedding some cruft as I~have a + better understanding of \TeX. +%}}} backgorund +%{{{ layout model + +\subsec{The layout model} + +\topinsert + \line{\vbox{\advance\hsize-1pc \hsize=0.333\hsize + \noindent{\bf Figure 1}\quad Page layout. This shows a + page without the optional extra boxes. In this example, + text columns each span two grid cells. The left-hand + column has an illo (space for an illustration) with caption. + }% + \epsfxsize=\hsize \advance\epsfxsize-1pc + \epsfxsize=0.667\epsfxsize \epsffile{oput01.eps}\hfil +} +\medskip\hrule\medskip +\endinsert + +\topinsert + \line{\epsfxsize=\hsize \advance\epsfxsize-1pc + \epsfxsize=0.667\epsfxsize \epsffile{oput02.eps}\hfil + \vbox{\advance\hsize-1pc \hsize=0.333\hsize + \noindent{\bf Figure 2}\quad Page layout parameters. + This page has with + all the optional boxes (shown with dashed lines). One text + column has a space left for artwork. Text columns are the same + width as grid cells. + }} +\medskip\hrule\medskip +\endinsert + + The main part of the page (everything except the headline and + footline) is called the {\it body}. The body is divided into a + grid of cells. The cells are conceptually the framework on + which page components like text columns and illustrations are + hung. For example, text columns may span two cells. Figure~1 + shows a simple layout. Fitting on the grid usually means the + width of the object is $N\times gridwd + (N-1)\times colsep$ and + its left edge is $K\times(gridwd + colsep)$ from the left edge + of the page body. + + The aim of using a grid layout is to combine flexibility with + enough structure that the result is not a chaotic mess. The + example grid is 5~cells wide, so that text columns can probably + be 2 or 3 cells wide without being too narrow or too wide. + Illustrations may be anything from 1 to 5 cells wide, or may + bleed off the page. + + + + +%}}} layout model +%}}} introduction +%{{{ identification +\section{File identification} + + Macro files nowadays tend to start with a whole slew of header + comments designed to be useful to people comign across the file + in some archive and unaware of what it is for. + +\code + \|\% \filename~\fileversion~\filedate~-- output routine for zines + | + |%%%@TeX-definition-file { + |%%% filename = "$texmf/tex/plain/pdcmac/pdcoput5.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 = "TeX output routine for magazine-style layout. + |%%% 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~<pdc \filedate>\} + | +\endcode +%}}} identification +%{{{ internals +\section{Miscellaneous internal definitions} +\subsec{Scratch registers} + + These are one-token names for some handy non-global temporary + registers (in plain \TeX\ these are given names with |@| in + them; these definitions give them names I can use). +\code + |\countdef\counta=255 + |\dimendef\dimena=0 \dimendef\dimenb=2 + |\toksdef\toksa=0 \toksdef\toksb=2 +\endcode + I~don't use |\dimen1| and |\toks1| because they are supposed to + be used only globally (as discussed in {\it\TeX book} + Appendix~B). + +\subsec{Queues} + + These macros manipulate queues of instructions for the ouytput + routine, represented as list macros of a form similar to those + described in {\it\TeX book} Appendix~D Section~2 (the parameters + in different order). + +\notepar + All of these work by making assignments and so will not work in + \TeX's mouth. +\endnotepar + + We can describe these briefly using letters like $x$ to stand + for elements (enclosed in braces) and $xs$ to stand for a list + macro of $x$s. Each macr has a duplicate starting with `|g|-' + which does the same operation globally. + +% |\prepend| $xs$ $x$ --- $xs:=\langle x\rangle + xs$ +%\code +% |\long\def\prepend#1#2{% +% | \toksa={\\{#2}}\toksb=\expandafter{#1}% +% | \edef#1{\the\toksa\the\toksb}% +% |} +%\smallbreak +% |\long\def\gprepend#1#2{% +% | \toksa={\\{#2}}\toksb=\expandafter{#1}% +% | \xdef#1{\the\toksa\the\toksb}% +% |} +%\endcode + |\qappend| $xs$ $x$ --- $xs:= xs + \langle x\rangle $ +\code + |\long\def\qappend#1#2{% + | \toksa={\\{#2}}\toksb=\expandafter{#1}% + | \xdef#1{\the\toksb\the\toksa}% + |} +\endcode +% |\catenate| $xs$ $ys$ $zs$ --- $xs:=ys + zs$ +%\code +% |\def\catenate#1#2#3{% +% | \toksa=\expandafter{#2}\toksb=\expandafter{#3}% +% | \edef#1{\the\toksa\the\toksb}% +% |} +%\smallbreak +% |\def\gcatenate#1#2#3{% +% | \toksa=\expandafter{#2}\toksb=\expandafter{#3}% +% | \xdef#1{\the\toksa\the\toksb}% +% |} +%\endcode + |\qremove| $x$ $xs$ --- $x, xs := hd(xs), tl(xs)$ + (where $xs = \langle hd(xs)\rangle + tl(xs)$) +\code + |\def\qremove#1#2{% + | \expandafter\glopoff#2\glopoff#1#2% + |} + |\long\def\glopoff\\#1#2\glopoff#3#4{% + | \gdef#3{#1}\gdef#4{#2}% + |} +\endcode + +%}}} internals +%{{{ parameters +\section{Parameters} + + We collect here definitions for parameters that customizate the + layout. In documents, many of these are set in using + higher-level macros. + + The abbreviations |mg| (margin), |wd| (width) and |ht| (height) + are used a lot in dimen names. + +\subsec{Heights and depths} + The physical size of the paper is $paperwd\times paperwd$. The + area which will be filled with text columns is $bodywd\times + bodyht$. This area is divided in to a grid of cells each + $gridwd\times gridht$, with cells separated by $colsep$ + horizontally but butting vertically (there are $n$ cells, so + $n\times gridwd + (n-1)\times colsep = bodywd$). Finally, + $colwd$ is the width of text columns ($colwd = k\times gridwd + + (k-1)\times colsep$) and $colht$ is the height of text columns + on the current page (it is equal to $bodyht$ iff therte is no + topbox or botbox). +\code + |\newdimen\paperwd \newdimen\paperht + |\newdimen\bodywd \newdimen\bodyht + |\newdimen\gridwd \newdimen\gridht + |\newdimen\colwd \newdimen\colht +\endcode + + +\subsec{Margins and separators} + These margins measure from the edge of the paper as defined by + |\paperwd| and |\paperht|. The inner margin (|\innermg|) is on + the left on odd pages and on the right for even pages. + + The bottom margin will be increased slightly later on to make + $$vsize=N\times baselineskip + topskip\quad.$$ + +\code + |\newdimen\topmg \topmg=20mm + |\newdimen\outermg \outermg=20mm + |\newdimen\innermg \innermg=20mm + |\newdimen\botmg \botmg=27mm +\endcode + + Parameters for the distance between the baselines of the + headline and the first line of text the corresponding distance + for footlines. +\code + |\newskip\headlineskip \headlineskip=10mm + |\newskip\footlineskip \footlineskip=10mm +\endcode + + + The parameters |\caprule| and |\capsep| specify the separation + between captions and the adjacent text column. The vertical + displacement is $capsep$, with a horizontal rule of thickness + $caprule$ is drawn in the middle (set this to $0\pt$ to have no + rule). + +\code + |\newdimen\caprule \caprule=0.4pt + |\newskip\capsep \capsep=5mm +\endcode + + The corresponding parameters for column separators---this time + it is a vertical rule. +\code + |\newdimen\colrule \colrule=0.4pt + |\newdimen\colsep \colsep=5mm +\endcode + + The number of text columns on a page. +\code + |\newcount\ncols \ncols=1 +\endcode + +\subsec{Boxes} + To switch the number of columns in mid page, the first text is + run through the output routine and the resultant partial page is + stored in |\partialpage| to be placed at the top of the next + output. + +\code + |\newbox\partialpage +\endcode + + The special boxes |\topbox| and |\botbox|, if non-void, are + placed at the top and bottom of the page, going inside the + headline and footline but outside the body text area (which is + reduced correspondingly). These are often useful in + multi-column text to put titles that span the page. +\code + |\newbox\topbox \newbox\botbox +\endcode + + These boxes, if not void, go at the left and right of the body + text. The amount of space for columns of text is reduced by the + width of the boxes. +\code + |\newbox\leftbox \newbox\rightbox +\endcode + + The output routine is passed the current page contents in + box~255. +\code + |\chardef\pagebox=255 +\endcode + +\subsec{Hooks} + + These two list macros are used to override the output routine + with customized layouts. + + One item is removed from |\pagelist| to generate each page body + (the page body is everything except the headline, footline, + topbox, botbox amd partial page). If the list is empty, then + the default action is `|\makebody\pagebox|'. The commands + should make a box with width |\bodywd|m and heght |\colht|. +\code + |\let\pagelist\empty +\endcode + An item is removed from |\collist| each time a column is to be + created by |\makebody|. Each item should be \TeX\ commands that + generate a box with width |\colwd| and height |\colht|. +\code + |\let\collist\empty +\endcode + + Finally, token registers that may be used to customize pages and + captions. For example, |\everypage| is used in |pdccmdoc.tex| + to create an empty |\leftbox| on each page. +\code + |\newtoks\everypage + |\newtoks\everycaption +\endcode +%}}} parameters +%{{{ make a column (vbox) +\section{How to make one column} + + This is the default way to generate a column of text---this will + normally be invoked $k$ times if there are $k$ columns. + + A column is a vbox of height $colht$ and width $colwd$. It + contains, in order from top to bottom, an illustration (vertical + mode material, normally white space for artwork to be pasted + into), caption separator, text (from the page), caption + separator, and bottom illustration. The illustrations are + usually omitted. When there is no illustration, the caption + separators are omitted too. + The macro takes the following parameters: +$$\halign{\indent\tt\##\hfil&\quad#\hfil&\quad#\hfil\cr + 1& vertical mode material& illustration at top of column\cr + 2& \<8-bit number>& box to make middle out of\cr + 3& vertical mode material& illustration for bottom of column\cr +}$$ + To make baselines line up, $capsep=baselineskip$ and the height + of a top illustration must be $N\times baselineskip + topskip$ + and of a bottom illustration must be $N\times baselineskip$ + (|\prevdepth| is set to $0\pt$ at the start of the bottom + illustration, so if it starts with a box, baselineskip glue will + be inserted to make the baseline of the box align correctly.) +\code + |\newdimen\toptotal \newdimen\bottotal +\smallbreak + |\def\xxxmakecolumn#1#2#3#4#5{\xmakecolumn + | {\ifdim#1=0pt\else \kern#1 \fi + | \def\tmp{#2}\ifx\tmp\empty\else #2 \fi} + | {#3} + | {\def\tmp{#2}\ifx\tmp\empty\else #2 \fi + | \ifdim#1=0pt\else \kern#1 \fi}% + |} +\smallbreak + |\def\xmakecolumn#1#2#3{% + | \vbox to \colht{ +\endcode + Calculate in |\dimena| how much of the text box will be needed + once we have allowed for any illustrations, footnotes or + topinserts: +\code + | \dimena\colht + | \setbox0=\vbox{#1}\advance\dimena-\ht0 + | \ifdim\ht0>0pt + | \advance\dimena-\capsep + | \advance\dimena\topskip \advance\dimena-\baselineskip + | \fi + | \setbox4=\vbox{\prevdepth=0pt #3}% + | \advance\dimena-\ht4 + | \ifdim\ht4>0pt \advance\dimena-\capsep \fi + | \ifvoid\footins\else + | \advance\dimena-\ht\footins + | \advance\dimena-\skip\footins + | \fi + | \ifvoid\topins\else + | \advance\dimena-\ht\topins + | \advance\dimena-\skip\topins + | \fi +\endcode + Split that much text off the top of the box: +\code + | \splittopskip\topskip \splitmaxdepth\maxdepth + | \setbox2=\vsplit#2to\dimena +\endcode + Now to sandwich it all together. +\code + | \dimena=\ht0 \dimenb=\dp0 \unvbox0 + | \ifdim\dimena>0pt + | \prevdepth=\dimenb + | \capseparator + | \dimena\baselineskip \advance\dimena-\topskip + | \kern\dimena + | \nointerlineskip + | \fi + | \ifvoid\topins\else \unvbox\topins \vskip\skip\topins \fi + | \dimena\dp2 + | \ifvoid2 \vfil \else \unvbox2 \fi + | \ifvoid\footins \else + | \vskip\skip\footins \footnoterule + | \dimena=\dp\footins \unvbox\footins + | \fi + | \ifdim\ht4>0pt + | \prevdepth=\dimena + | \capseparator \kern-\prevdepth \prevdepth0pt + | \fi + | \unvbox4 + | }% + |} +\endcode + The caption separator is in an hbox so that + baselineskip glue will be added appropriately. +\code + |\def\capseparator{% + | \hbox to \colwd{% + | \dimena=0.5ex \advance\dimena-0.5\caprule + | \dimenb=\dimena \advance\dimenb\caprule + | \vrule height \dimenb depth-\dimena width\colwd + | }% + |} +\endcode + + Here's a macro for making an illustration (blank space) with + caption, suitable for top of page. |#1| is the cation, |#2| is + vertical mode material commands to make the illustration (often + this will be something like `|\kern|$n$|\baselineskip|' to leave + $n$ lines of blank space). The whitespace between illustration + and caption is adjusted to make the whole shebang line up. +\code + |\def\topillustration#1#2{% + | \setbox0=\vbox{#2}% + | \dimena\ht0 \dimenb\dp0 \unvbox0 + | \counta\dimena \divide\counta\baselineskip + | \advance\dimena-\counta\baselineskip \advance\dimena-\topskip + | \kern-\dimena \prevdepth\dimenb + | \hsize=\colwd \vskip-\parskip \noindent#1\par + |} +\endcode + + Similar for bottom of column. +\code + |\def\botillustration#1#2{% + | \setbox0\vbox{\hsize=\colwd \vskip-\parskip \prevdepth=0pt #1} + | \setbox2=\vbox{\prevdepth=\dp0 #2}% + | \dimena=\ht0 \advance\dimena\dp0 \advance\dimena\ht2 + | \unvbox0 + | \counta\dimena \divide\counta\baselineskip + | \advance\dimena-\counta\baselineskip + | \advance\dimena-\baselineskip + | \kern-\dimena + | \unvbox2 + |} +\endcode + +%}}} make a column +%{{{ make body part of page (hbox) +\section{Making the page body hbox} + + The page body is everything except the footline, headline, + topbox and botbox. It should be a box of height |\bodywd| + (which is normally fixed) and height |\colht| (which is + |\bodyht| minus the top and bot boxes). + + The default macro for making the body is |\makebody| which takes + as its parameter the box number (usually |\pagebox|). (This may + be replaced by adding items to the list macro |\pagelist|.) +\code + |\def\makebody#1{% + | \hbox to \bodywd{% + | \ifvoid\leftbox\else + | \box\leftbox + | \colseparator + | \fi + | \makecolumnfromcollist{#1}% + | \counta\ncols + | \loop \ifnum\counta>1 + | \colseparator + | \makecolumnfromcollist{#1}% + | \advance\counta -1 + | \repeat + | \ifvoid\rightbox\else + | \colseparator + | \box\rightbox + | \fi + | }% + |} +\smallbreak + |\def\colseparator{% + | \hfil \vrule width\colrule depth0pt \hfil + |} +\endcode + + The macro |\makecolumnfromcollist| is used to generate columns + (which must be boxes of height |\colht| and width |\colwd|). It + uses the next item on |\collist| if there is one, otherwise it + just uses |\xmakecolumn|. +\code + |\def\makecolumnfromcollist#1{% + | \ifx\collist\empty + | \xmakecolumn{}{#1}{}% + | \else + | \qremove\temp\collist + | \temp + | \fi + |} + | +\endcode +%}}} make insides of page (hbox) +%{{{ make a page (vbox) +\section{Making a page vbox} + + The macro generates a new page---a vbox to be `shipped out'. + The first page includes a |papersize| special; this is because + if the macros used to change the paper size also generated the + |\special| then there might be conflicting |\special|s which + would confuse the printer driver. This way the paper size may + be changed a few times before the first page. + + The |\colht| register is set to the height of text columns on + this page (which is $bodyht$ minus the height of any partial + page, top or bottom boxes). +\code + |\def\makepage{% + | \vbox{ + | \papersizespecial + | \colht\bodyht \advance\colht-\ht\partialpage + | \advance\colht-\ht\topbox \advance\colht-\ht\botbox + | \advance\colht-\dp\partialpage + | \advance\colht-\dp\topbox + | \the\everypage + | \makeheadline \nointerlineskip + | \box\partialpage \nointerlineskip + | \box\topbox \nointerlineskip + | \ifx\pagelist\empty + | \makebody\pagebox + | \else + | \qremove\temp\pagelist + | \temp + | \fi + | \unvbox\botbox + | \makefootline + | }% + |} +\endcode + + The |\makeheadline| macro generates the headline in the form of + vertical mode material with zero height. It is expanded after + |\everypage| has been expanded, at the very top of the page's + vbox. +\code + |\def\makeheadline{ + | \vbox to 0pt { + | \skip0=\topskip \advance\skip0-2\ht\strutbox + | \advance\skip0-\headlineskip + | \vskip\skip0 + | \hbox to \bodywd{\the\headline} + | \vss + | } + |} +\endcode + + The footline is, naturally, generated with |\makefootline|. + This time there is no requirement for it to be zero height. It + is the last thing in the box being shipped out. +\code + |\def\makefootline{{ + | \baselineskip=\footlineskip + | \hbox to \bodywd{\the\footline} + |}} +\endcode + + The |papersize| special is specified in the manual for DVIPS. + It specifies the physical size of the medium---and so must be + multiplied by the current magnification. +\code + |\def\papersizespecial{{% + | \dimena=0.001\paperwd \multiply\dimena\mag + | \dimenb=0.001\paperht \multiply\dimenb\mag + | \special{papersize=\the\dimena,\the\dimenb}% + | \global\let\papersizespecial=\relax + |}} + | +\endcode +%}}} make a page (vbox) +%{{{ output +\section{The output routine} + + The output routine sets |\hoffset| appropiately (subtracting + $1{\scriptstyle''}$ to allow for \TeX's peculiar origin point + one inch from the top left of the page. +\code + |\def\pdcoutput{% + | \ifodd\pageno \hoffset=\innermg \else \hoffset=\outermg \fi + | \advance\hoffset-1 true in + | \voffset=\topmg + | \advance\voffset-1truein + | \shipout\makepage \advancepageno + | \ifnum\outputpenalty>-20000 \else \dosupereject \fi + | \unvbox\pagebox + |} +\smallbreak + |\output={\pdcoutput} +\endcode +%}}} output +%{{{ automated column setting +\section{Specifying a grid} + + These macros for setting the paper size ought to be invoked + after the base font and baseline skip have been set but before + the numebr of columns is chosen. + +\subsec{Specifiying the paper size} + + This is a macro that might be used in documents. It takes two + parameters, \<dimen>s for the width and height of the paper. +\code + |\def\setpaper#1#2{% + | \paperwd=#1\relax + | \paperht=#2\relax + | \OPUTcalcbodywdht + | \OPUTcalctopskip + |} +\endcode + Calculate the page body width |\bodywd| from the paper size and + the size of the margins: +\code + |\def\OPUTcalcbodywdht{ + | \bodywd=\paperwd \advance\bodywd-\outermg \advance\bodywd-\innermg + | \bodyht=\paperht \advance\bodyht-\topmg \advance\bodyht-\botmg + | \OPUTcalctopskip + |} +\endcode + + To avoid having to write `Aiv' or `afour' for specifying + international standard A4 paper, I~use an + |\ifcase|.\footnote*{Note for Americans: A4 corresponds to + American Letter size, and A3 to Ledger size.} This macro + handles A0 to A5. +\code + |\def\setpaperA#1{ + | \ifcase#1 + | \setpaper{841mm}{1189mm}\or + | \setpaper{594mm}{841mm}\or + | \setpaper{420mm}{594mm}\or + | \setpaper{297mm}{420mm}\or + | \setpaper{210mm}{297mm}\or + | \setpaper{148mm}{210mm} + | \else + | \errmessage{Dunno how big DIN A#1 paper is, sorry.} + | \fi + |} +\endcode + +\subsec{Adjusting the body height and top skip} + + Plain \TeX\ sets |\topskip| to $10\pt$, which means there is a + gap between the top of the letters of the top line of text and + the top of the pages's vbox (i.e., $vsize$ is measured from the + baseline of the last line to a line $topskip$ above the baseline + of the first line). For magazine-style setting, it is more + usual to have $topskip$ set to the cap-height of the font + (assuming there are no strange tall characters in use). + + To have an exactly $N$ lines to a page, + $$ + bodyht = (N-1)\times baselineskip + topskip \quad. + $$ + This macro increases the bottom margin in order to set $bodyht$ + to such a value. +\code + |\def\OPUTcalctopskip{ + | \setbox0=\hbox{AXbl()!gyJQ,} + | \topskip=\ht0 \maxdepth=\dp0 + | \advance\bodyht-\topskip \divide\bodyht\baselineskip + | \multiply\bodyht\baselineskip \advance\bodyht\topskip + |} +\endcode + + Give this value for $bodyht$, we can set $hsize$ and $vsize$ + according to the number of columns to a page. For $N$ lines to + a column, we need $N\times ncols$ lines to make a whole page, so + $$ + \eqalign{vsize + &= (ncols \times N - 1) \times baselineskip + topskip\cr + &= (bodyht + \delta) \times ncols - \delta\cr + } + $$ + where $\delta=baselineskip-topskip$. +\code + |\def\OPUTcalchsizevsize{ + | \hsize=\colwd + | \vsize=\bodyht + | \advance\vsize-\topskip \advance\vsize\baselineskip + | \multiply\vsize\ncols + | \advance\vsize-\baselineskip \advance\vsize\topskip + |} +\endcode + + +\subsec{Setting the number of columns} + + Now some macros used in documents for setting the number of + coumns. In the general case we have a grid of $n$ cells with + text columnns spanning $k$ cells. This macro takes two number + parameters, $n$ and $k$. It sets |\ncols| to as many columns + fit on the page. + $$ + \eqalign{colwd &= k \times gridwd + (k - 1) \times colsep\cr + ncols &= \lfloor n \mathbin/ k \rfloor\cr} + $$ + Often $n$ is not a multiple of $k$, which leaves some grid cells + `spare' for illustrations or extra margins and so on. +\code + |\def\setnkgrid#1#2{% + | \gridwd=\bodywd + | \advance\gridwd-#1\colsep \advance\gridwd\colsep \divide\gridwd#1 + | \colwd#2\gridwd \advance\colwd#2\colsep \advance\colwd-\colsep + | \ncols#1 \divide\ncols#2 + | \gridht=\baselineskip + | \capsep=\gridht + | \OPUTcalchsizevsize + |} +\endcode + + For simpler layouts, we just set the number of columns and set + the grid and column widths to be the same. +\code + |\def\setncolumns#1{% + | \colwd=\bodywd + | \advance\colwd-#1\colsep \advance\colwd\colsep \divide\colwd #1 + | \gridwd=\colwd + | \ncols=#1 + | \OPUTcalchsizevsize + |} +\endcode + +\subsec{Setting default values} + + We give all the parameters default values by assuming A4 paper + and a single-column layout in \TeX's default fonts. +\code + |\setpaperA4 + |\setncolumns1 +\endcode + +%}}} automated column setting +%{{{ balancing columns +\section{Routines for balanced columns} + +\subsec{Balanced columns from a rigid vbox} + + This is the routine discussed in {\it\TeX book}, Appendix~D, + Section~7 (pp.\thinspace396--397). It takes a rigid, regular + vbox (rigid meaning there is no stretchable glue between lines, + and regular meaning that baselines are all the same distance + apart). Its parameters are + $$\centerline{\vbox{\halign{\tt\char`\##\hfil&&\quad#\hfil\cr + 1&\<8-bit number>& box to chop\cr + 2&\<number>& how many columns to make (${}>0$)\cr + 3&\<dimen>& the value of \cs{topskip} for the box\cr + 4&tokens& what to put between columns\cr + }}}$$ + the last parameter will usually be |\hfil| or |\colseparator|. + Usually this command will be used like +$$\hbox{|\hbox to \bodywd{\rigidbalance...}|}$$ + + +\code + |\newcount\RGDncols +\smallbreak + |\def\rigidbalance#1#2#3#4{% + | \setbox0=\box#1\relax \RGDncols=#2\relax \toksa={#4}% + | \begingroup\splittopskip#3\relax \vbadness=10000 + | \valign{##\vfil\cr \RGDdosplits}% + | \endgroup + |} +\endcode + The helper function that produces the insides of the valign is + recursive. +\code + |\def\RGDdosplits{ + | \dimena\ht0 \divide\dimena\RGDncols + | \advance\dimena\splittopskip + | \setbox1=\vsplit0 to\dimena + | \unvbox1 + | \global\advance\RGDncols-1 + | \cr + | \ifnum\RGDncols>0 + | \noalign{\the\toksa} + | \RGDdosplits + | \fi + |} +\endcode + +\subsec{Balance partial page} + + Occasionally it is useful to switch between different grids or + numbers of columns within one page. This macro does this, + creating a shorter-than-usual page body (including topbox and + botbox) and then putting the result in |\partialpage| Its + parameters are |#1| the \TeX\ code used to generate the text + columns and |#2| what to put between the partial page and the + rest of the page. + +\code + |\def\makepartialpage#1#2{ + | \maybepagebreak + | \begingroup + | \output{% + | \message{[partial} + | \setbox0=\vbox{\unvbox\pagebox}% + | \global\setbox\partialpage\vbox{ + | \box\partialpage \nointerlineskip + | \the\everypage + | \box\topbox \nointerlineskip + | \hbox to \bodywd{% + | \ifvoid\leftbox\else + | \box\leftbox \colseparator + | \fi + | #1% + | \ifvoid\rightbox\else + | \colseparator \box\rightbox + | \fi + | }% \nointerlineskip + | \box\botbox + | #2 + | \dimena\baselineskip \advance\dimena-\topskip + | \kern\dimena + | }% + | \message{page]} + | } + | \eject + | \endgroup + |} +\smallbreak + |\def\rigidbalancepartialpage{ + | \makepartialpage{\rigidbalance0\ncols\topskip\colseparator} + |} +\endcode + Occasionally \TeX\ might have just over a pageful of text when + this command is used (since the page break calculations do not + take into account the space subtracted by + illustrations\footnote*{This is probably a bug.}). In this case + we have to force out a complete page. +\code + |\def\maybepagebreak{% + | \vskip0pt plus\baselineskip \penalty-100 + | \loop + | \dimena\vsize \advance\dimena-\ncols\ht\partialpage + | \advance\dimena-\ncols\ht\topbox + | \advance\dimena-\ncols\ht\botbox + | \ifdim\pagetotal>\dimena + | \eject\null + | \repeat + |} +\endcode +%}}} balancing columns +\endcodefile +\enddocument +\bye +%}}} pdcoput5.tex + +%Local variables: +%fold-folded-p: t +%fill-prefix: " " +%End: diff --git a/Master/texmf-dist/source/plain/pdcmac/pdcoput5.tex b/Master/texmf-dist/source/plain/pdcmac/pdcoput5.tex new file mode 100644 index 00000000000..30828ac9358 --- /dev/null +++ b/Master/texmf-dist/source/plain/pdcmac/pdcoput5.tex @@ -0,0 +1,336 @@ +% pdcoput5.dtx 5.3 1995/04/06 -- output routine for zines + +%%%@TeX-definition-file { +%%% filename = "$texmf/tex/plain/pdcmac/pdcoput5.tex", +%%% version = "5.3", +%%% 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 = "TeX output routine for magazine-style layout. +%%% This file was generated by running +%%% plain TeX on pdcoput5.dtx", +%%% copyright = "Copyright (c) 1991-1995 P. Damian Cugley", +%%% copying = "DO NOT DISTRIBUTE THIS FILE. +%%% Distribute pdcoput5.dtx only as part of the +%%% package it came in.", +%%% dependencies = "", +%%% } + +\message{5.3 <pdc 1995/04/06>} + +\countdef\counta=255 +\dimendef\dimena=0 \dimendef\dimenb=2 +\toksdef\toksa=0 \toksdef\toksb=2 +\long\def\qappend#1#2{% + \toksa={\\{#2}}\toksb=\expandafter{#1}% + \xdef#1{\the\toksb\the\toksa}% +} +\def\qremove#1#2{% + \expandafter\glopoff#2\glopoff#1#2% +} +\long\def\glopoff\\#1#2\glopoff#3#4{% + \gdef#3{#1}\gdef#4{#2}% +} +\newdimen\paperwd \newdimen\paperht +\newdimen\bodywd \newdimen\bodyht +\newdimen\gridwd \newdimen\gridht +\newdimen\colwd \newdimen\colht +\newdimen\topmg \topmg=20mm +\newdimen\outermg \outermg=20mm +\newdimen\innermg \innermg=20mm +\newdimen\botmg \botmg=27mm +\newskip\headlineskip \headlineskip=10mm +\newskip\footlineskip \footlineskip=10mm +\newdimen\caprule \caprule=0.4pt +\newskip\capsep \capsep=5mm +\newdimen\colrule \colrule=0.4pt +\newdimen\colsep \colsep=5mm +\newcount\ncols \ncols=1 +\newbox\partialpage +\newbox\topbox \newbox\botbox +\newbox\leftbox \newbox\rightbox +\chardef\pagebox=255 +\let\pagelist\empty +\let\collist\empty +\newtoks\everypage +\newtoks\everycaption +\newdimen\toptotal \newdimen\bottotal +\def\xxxmakecolumn#1#2#3#4#5{\xmakecolumn + {\ifdim#1=0pt\else \kern#1 \fi + \def\tmp{#2}\ifx\tmp\empty\else #2 \fi} + {#3} + {\def\tmp{#2}\ifx\tmp\empty\else #2 \fi + \ifdim#1=0pt\else \kern#1 \fi}% +} +\def\xmakecolumn#1#2#3{% + \vbox to \colht{ + \dimena\colht + \setbox0=\vbox{#1}\advance\dimena-\ht0 + \ifdim\ht0>0pt + \advance\dimena-\capsep + \advance\dimena\topskip \advance\dimena-\baselineskip + \fi + \setbox4=\vbox{\prevdepth=0pt #3}% + \advance\dimena-\ht4 + \ifdim\ht4>0pt \advance\dimena-\capsep \fi + \ifvoid\footins\else + \advance\dimena-\ht\footins + \advance\dimena-\skip\footins + \fi + \ifvoid\topins\else + \advance\dimena-\ht\topins + \advance\dimena-\skip\topins + \fi + \splittopskip\topskip \splitmaxdepth\maxdepth + \setbox2=\vsplit#2to\dimena + \dimena=\ht0 \dimenb=\dp0 \unvbox0 + \ifdim\dimena>0pt + \prevdepth=\dimenb + \capseparator + \dimena\baselineskip \advance\dimena-\topskip + \kern\dimena + \nointerlineskip + \fi + \ifvoid\topins\else \unvbox\topins \vskip\skip\topins \fi + \dimena\dp2 + \ifvoid2 \vfil \else \unvbox2 \fi + \ifvoid\footins \else + \vskip\skip\footins \footnoterule + \dimena=\dp\footins \unvbox\footins + \fi + \ifdim\ht4>0pt + \prevdepth=\dimena + \capseparator \kern-\prevdepth \prevdepth0pt + \fi + \unvbox4 + }% +} +\def\capseparator{% + \hbox to \colwd{% + \dimena=0.5ex \advance\dimena-0.5\caprule + \dimenb=\dimena \advance\dimenb\caprule + \vrule height \dimenb depth-\dimena width\colwd + }% +} +\def\topillustration#1#2{% + \setbox0=\vbox{#2}% + \dimena\ht0 \dimenb\dp0 \unvbox0 + \counta\dimena \divide\counta\baselineskip + \advance\dimena-\counta\baselineskip \advance\dimena-\topskip + \kern-\dimena \prevdepth\dimenb + \hsize=\colwd \vskip-\parskip \noindent#1\par +} +\def\botillustration#1#2{% + \setbox0\vbox{\hsize=\colwd \vskip-\parskip \prevdepth=0pt #1} + \setbox2=\vbox{\prevdepth=\dp0 #2}% + \dimena=\ht0 \advance\dimena\dp0 \advance\dimena\ht2 + \unvbox0 + \counta\dimena \divide\counta\baselineskip + \advance\dimena-\counta\baselineskip + \advance\dimena-\baselineskip + \kern-\dimena + \unvbox2 +} +\def\makebody#1{% + \hbox to \bodywd{% + \ifvoid\leftbox\else + \box\leftbox + \colseparator + \fi + \makecolumnfromcollist{#1}% + \counta\ncols + \loop \ifnum\counta>1 + \colseparator + \makecolumnfromcollist{#1}% + \advance\counta -1 + \repeat + \ifvoid\rightbox\else + \colseparator + \box\rightbox + \fi + }% +} +\def\colseparator{% + \hfil \vrule width\colrule depth0pt \hfil +} +\def\makecolumnfromcollist#1{% + \ifx\collist\empty + \xmakecolumn{}{#1}{}% + \else + \qremove\temp\collist + \temp + \fi +} + +\def\makepage{% + \vbox{ + \papersizespecial + \colht\bodyht \advance\colht-\ht\partialpage + \advance\colht-\ht\topbox \advance\colht-\ht\botbox + \advance\colht-\dp\partialpage + \advance\colht-\dp\topbox + \the\everypage + \makeheadline \nointerlineskip + \box\partialpage \nointerlineskip + \box\topbox \nointerlineskip + \ifx\pagelist\empty + \makebody\pagebox + \else + \qremove\temp\pagelist + \temp + \fi + \unvbox\botbox + \makefootline + }% +} +\def\makeheadline{ + \vbox to 0pt { + \skip0=\topskip \advance\skip0-2\ht\strutbox + \advance\skip0-\headlineskip + \vskip\skip0 + \hbox to \bodywd{\the\headline} + \vss + } +} +\def\makefootline{{ + \baselineskip=\footlineskip + \hbox to \bodywd{\the\footline} +}} +\def\papersizespecial{{% + \dimena=0.001\paperwd \multiply\dimena\mag + \dimenb=0.001\paperht \multiply\dimenb\mag + \special{papersize=\the\dimena,\the\dimenb}% + \global\let\papersizespecial=\relax +}} + +\def\pdcoutput{% + \ifodd\pageno \hoffset=\innermg \else \hoffset=\outermg \fi + \advance\hoffset-1 true in + \voffset=\topmg + \advance\voffset-1truein + \shipout\makepage \advancepageno + \ifnum\outputpenalty>-20000 \else \dosupereject \fi + \unvbox\pagebox +} +\output={\pdcoutput} +\def\setpaper#1#2{% + \paperwd=#1\relax + \paperht=#2\relax + \OPUTcalcbodywdht + \OPUTcalctopskip +} +\def\OPUTcalcbodywdht{ + \bodywd=\paperwd \advance\bodywd-\outermg \advance\bodywd-\innermg + \bodyht=\paperht \advance\bodyht-\topmg \advance\bodyht-\botmg + \OPUTcalctopskip +} +\def\setpaperA#1{ + \ifcase#1 + \setpaper{841mm}{1189mm}\or + \setpaper{594mm}{841mm}\or + \setpaper{420mm}{594mm}\or + \setpaper{297mm}{420mm}\or + \setpaper{210mm}{297mm}\or + \setpaper{148mm}{210mm} + \else + \errmessage{Dunno how big DIN A#1 paper is, sorry.} + \fi +} +\def\OPUTcalctopskip{ + \setbox0=\hbox{AXbl()!gyJQ,} + \topskip=\ht0 \maxdepth=\dp0 + \advance\bodyht-\topskip \divide\bodyht\baselineskip + \multiply\bodyht\baselineskip \advance\bodyht\topskip +} +\def\OPUTcalchsizevsize{ + \hsize=\colwd + \vsize=\bodyht + \advance\vsize-\topskip \advance\vsize\baselineskip + \multiply\vsize\ncols + \advance\vsize-\baselineskip \advance\vsize\topskip +} +\def\setnkgrid#1#2{% + \gridwd=\bodywd + \advance\gridwd-#1\colsep \advance\gridwd\colsep \divide\gridwd#1 + \colwd#2\gridwd \advance\colwd#2\colsep \advance\colwd-\colsep + \ncols#1 \divide\ncols#2 + \gridht=\baselineskip + \capsep=\gridht + \OPUTcalchsizevsize +} +\def\setncolumns#1{% + \colwd=\bodywd + \advance\colwd-#1\colsep \advance\colwd\colsep \divide\colwd #1 + \gridwd=\colwd + \ncols=#1 + \OPUTcalchsizevsize +} +\setpaperA4 +\setncolumns1 +\newcount\RGDncols +\def\rigidbalance#1#2#3#4{% + \setbox0=\box#1\relax \RGDncols=#2\relax \toksa={#4}% + \begingroup\splittopskip#3\relax \vbadness=10000 + \valign{##\vfil\cr \RGDdosplits}% + \endgroup +} +\def\RGDdosplits{ + \dimena\ht0 \divide\dimena\RGDncols + \advance\dimena\splittopskip + \setbox1=\vsplit0 to\dimena + \unvbox1 + \global\advance\RGDncols-1 + \cr + \ifnum\RGDncols>0 + \noalign{\the\toksa} + \RGDdosplits + \fi +} +\def\makepartialpage#1#2{ + \maybepagebreak + \begingroup + \output{% + \message{[partial} + \setbox0=\vbox{\unvbox\pagebox}% + \global\setbox\partialpage\vbox{ + \box\partialpage \nointerlineskip + \the\everypage + \box\topbox \nointerlineskip + \hbox to \bodywd{% + \ifvoid\leftbox\else + \box\leftbox \colseparator + \fi + #1% + \ifvoid\rightbox\else + \colseparator \box\rightbox + \fi + }% \nointerlineskip + \box\botbox + #2 + \dimena\baselineskip \advance\dimena-\topskip + \kern\dimena + }% + \message{page]} + } + \eject + \endgroup +} +\def\rigidbalancepartialpage{ + \makepartialpage{\rigidbalance0\ncols\topskip\colseparator} +} +\def\maybepagebreak{% + \vskip0pt plus\baselineskip \penalty-100 + \loop + \dimena\vsize \advance\dimena-\ncols\ht\partialpage + \advance\dimena-\ncols\ht\topbox + \advance\dimena-\ncols\ht\botbox + \ifdim\pagetotal>\dimena + \eject\null + \repeat +} diff --git a/Master/texmf-dist/source/plain/pdcmac/pdcpsdoc.tex b/Master/texmf-dist/source/plain/pdcmac/pdcpsdoc.tex new file mode 100644 index 00000000000..59d64508a5e --- /dev/null +++ b/Master/texmf-dist/source/plain/pdcmac/pdcpsdoc.tex @@ -0,0 +1,81 @@ +% pdcpsdoc.tex 1.2 1995/03/30 -- macros for short documents +%%%@TeX-definition-file { +%%% filename = "pdcpsdoc.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", +%%% 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 = "pdcadobe.tex, pdcfmt2.tex, pdcfsel.tex, +%%% pdchyex.tex, pdcimth.tex, pdcmigr.tex, +%%% pdcoput5.tex, pdcdoc.def", +%%%} + +\message{1.2 <pdc 1995/03/30>} + +\input pdcimth +\input pdcmigr +\input pdcfmt2 +\input pdchyex +\input pdcoput5 +\input pdcfsel +\input pdcadobe +\autoloadfonts +\def\KBcanonical#1{% + \expcs\ifx{KB#1}\relax #1\else\csname KB#1\endcsname \fi +} +\ifx\KBadobe\UNDEFINED \def\KBadobe#1{\KBcanonical{#10}} \fi +\def\KBit#1{\KBcanonical{#1i}} +\def\KBbi#1{\KBbf{#1i}} +\def\KBbf#1{\expandafter\KBbfx#1.} +\def\KBbfx#1#2#3#4#5.{\KBcanonical{#1#2#3b#5}} +\def\KBpagbr{pagdr} \def\KBpagbri{pagdro} +\def\KBpbkbr{pbkdr} \def\KBpbkbri{pbkdri} +\def\KBpagri{pagro} \def\KBpagbi{pagbo} +\def\KBphvri{phvro} \def\KBphvbi{phvbo} +\def\KBpcrri{pcrro} \def\KBpcrbi{pcrbo} +\def\KBphvrrni{phvron} \def\KBphvbrni{phvbon} +\def\KBphvrrn0{phvr0n} \def\KBphvbrn0{phvb0n} +\def\KBphvrrni0{phvro0n} \def\KBphvbrni0{phvbo0n} +\ifx\headingfontname\UNDEFINED \def\headingfontname{phvr} \fi +\ifx\headingttfontname\UNDEFINED \def\headingttfontname{pcrb} \fi +\def\STYheadingT{% + \@\f{rm}{\headingfontname}\@\m{mi}{cmmi10}\@\m{sy}{cmsy10}% + \@\f{asy}{psyr}% + \@\f{it}{\KBit\headingfontname}% + \@\f{tt}{\headingttfontname}\@\f{mf}{logo10}\@\f{mfi}{logosl10}% +} +\loadfont\bodysy{cmsy10 at 12pt} +\fontset{subheading}\STYheadingT{12}{14pt}{subheading}{subheading} +\fontset{heading}\STYheadingT{18}{20pt}{subheading}{subheading} +\ifx\bodyfontname\UNDEFINED \def\bodyfontname{ptmr} \fi +\ifx\bodyttfontname\UNDEFINED \def\bodyttfontname{pcrr} \fi +\def\STYbodyT{% + \@\m{rm}{\bodyfontname}\@\m{it}{\KBit\bodyfontname}% + \@\m{bf}{\KBbf\bodyfontname}\@\f{bi}{\KBbi\bodyfontname}% + \@\m{asy}{psyr}\m{mi}{cmmi}\m{sy}{cmsy}% + \@\f{mf}{logo10}\@\f{mfi}{logosl10}% + \@\f{tt}{\bodyttfontname}\@\f{tb}{\KBit\bodyttfontname}% +} +\let\sc=\relax \let\mc=\relax \let\csc=\relax +\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 } +\input pdcdoc.def +\inputifexists{pdcpsdoc.cfg} diff --git a/Master/texmf-dist/source/plain/pdcmac/pdcpslft.tex b/Master/texmf-dist/source/plain/pdcmac/pdcpslft.tex new file mode 100644 index 00000000000..9912b2544fb --- /dev/null +++ b/Master/texmf-dist/source/plain/pdcmac/pdcpslft.tex @@ -0,0 +1,81 @@ +% pdcpslft.tex 1.2 1995/03/30 -- macros for short documents +%%%@TeX-definition-file { +%%% filename = "pdcpslft.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", +%%% 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 = "pdcadobe.tex, pdcfmt2.tex, pdcfsel.tex, +%%% pdchyex.tex, pdcimth.tex, pdcmigr.tex, +%%% pdcoput5.tex, pdclft.def", +%%%} + +\message{1.2 <pdc 1995/03/30>} + +\input pdcimth +\input pdcmigr +\input pdcfmt2 +\input pdchyex +\input pdcoput5 +\input pdcfsel +\input pdcadobe +\autoloadfonts +\def\KBcanonical#1{% + \expcs\ifx{KB#1}\relax #1\else\csname KB#1\endcsname \fi +} +\ifx\KBadobe\UNDEFINED \def\KBadobe#1{\KBcanonical{#10}} \fi +\def\KBit#1{\KBcanonical{#1i}} +\def\KBbi#1{\KBbf{#1i}} +\def\KBbf#1{\expandafter\KBbfx#1.} +\def\KBbfx#1#2#3#4#5.{\KBcanonical{#1#2#3b#5}} +\def\KBpagbr{pagdr} \def\KBpagbri{pagdro} +\def\KBpbkbr{pbkdr} \def\KBpbkbri{pbkdri} +\def\KBpagri{pagro} \def\KBpagbi{pagbo} +\def\KBphvri{phvro} \def\KBphvbi{phvbo} +\def\KBpcrri{pcrro} \def\KBpcrbi{pcrbo} +\def\KBphvrrni{phvron} \def\KBphvbrni{phvbon} +\def\KBphvrrn0{phvr0n} \def\KBphvbrn0{phvb0n} +\def\KBphvrrni0{phvro0n} \def\KBphvbrni0{phvbo0n} +\ifx\headingfontname\UNDEFINED \def\headingfontname{phvr} \fi +\ifx\headingttfontname\UNDEFINED \def\headingttfontname{pcrb} \fi +\def\STYheadingT{% + \@\f{rm}{\headingfontname}\@\m{mi}{cmmi10}\@\m{sy}{cmsy10}% + \@\f{asy}{psyr}% + \@\f{it}{\KBit\headingfontname}% + \@\f{tt}{\headingttfontname}\@\f{mf}{logo10}\@\f{mfi}{logosl10}% +} +\loadfont\bodysy{cmsy10 at 12pt} +\fontset{subheading}\STYheadingT{12}{14pt}{subheading}{subheading} +\fontset{heading}\STYheadingT{18}{20pt}{subheading}{subheading} +\ifx\bodyfontname\UNDEFINED \def\bodyfontname{ptmr} \fi +\ifx\bodyttfontname\UNDEFINED \def\bodyttfontname{pcrr} \fi +\def\STYbodyT{% + \@\m{rm}{\bodyfontname}\@\m{it}{\KBit\bodyfontname}% + \@\m{bf}{\KBbf\bodyfontname}\@\f{bi}{\KBbi\bodyfontname}% + \@\m{asy}{psyr}\m{mi}{cmmi}\m{sy}{cmsy}% + \@\f{mf}{logo10}\@\f{mfi}{logosl10}% + \@\f{tt}{\bodyttfontname}\@\f{tb}{\KBit\bodyttfontname}% +} +\let\sc=\relax \let\mc=\relax \let\csc=\relax +\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 } +\input pdclft.def +\inputifexists{pdcpslft.cfg} diff --git a/Master/texmf-dist/source/plain/pdcmac/pdcsty.dtx b/Master/texmf-dist/source/plain/pdcmac/pdcsty.dtx new file mode 100644 index 00000000000..58c5ac76808 --- /dev/null +++ b/Master/texmf-dist/source/plain/pdcmac/pdcsty.dtx @@ -0,0 +1,1153 @@ +% pdcsty -- documentation and source code for several style files -*-tex-*- + +%%%@TeX-document-file { +%%% title = "Damian's random style files", +%%% filename = "$texmf/doc/plain/pdcmac/pdcsty.dtx", +%%% version = "$Revision: 1.2 $", +%%% package = "pdcmac 1.0", +%%% date = "$Date: 1995/03/30 16:12:17 $", +%%% 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 style files pdccmdoc.tex, ma55doc.tex, +%%% etc. and definitioon files pdcdoc1.tex and pdclft1.tex. +%%% Running plain TeX on this file produces both the +%%% definitions files and the printed documentation.", +%%% copyright = "Copyright (c) 1991-1995 P. Damian Cugley", +%%% copying = "This program is free software; you can redistribute +%%% it and/or modify it under the terms of the GNU +%%% General Public License as published by the Free +%%% Software Foundation; either version 2 of the License, +%%% or (at your option) any later version.", +%%% notice = "This program is distributed in the hope that it will +%%% be useful, but WITHOUT ANY WARRANTY; without even the +%%% implied warranty of MERCHANTABILITY or FITNESS FOR A +%%% PARTICULAR PURPOSE. See the GNU General Public +%%% License for more details.", +%%% notice = "You should have received a copy of the GNU General +%%% Public License along with this program; if not, write +%%% to the Free Software Foundation, Inc., 675 Mass Ave, +%%% Cambridge, MA 02139, USA.", +%%% codetable = "USASCII", +%%% dependencies = "pdccode2.tex" +%%%} + + +%{{{ pdcsty.dtx +%{{{ preamble + +\input pdccode2 +\rcs$Id: pdcsty.dtx,v 1.2 1995/03/30 16:12:17 pdc Exp $\endrcs + +\everycode{\tt \baselineskip=0.8\baselineskip \lineskiplimit=0pt } +\newcount\lineno +\everycodeline{\llap{$ \global\advance\lineno1 + \scriptstyle\the\lineno $\enspace}} + + +\codefile{cmX}{pdccmlft.tex} \codefile{cmT}{pdccmdoc.tex} +\codefile{maX}{ma55lft.tex} \codefile{maT}{ma55doc.tex} +\codefile{psX}{pdcpslft.tex} \codefile{psT}{pdcpsdoc.tex} +\codefile{X}{pdclft.def} \codefile{T}{pdcdoc.def} + +\def\maonly{\global\maXtrue \global\maTtrue + \global\cmXfalse \global\cmTfalse + \global\psXfalse \global\psTfalse + \global\Xfalse \global\Tfalse + \banner{Malvern}} +\def\cmonly{\global\maXfalse \global\maTfalse + \global\cmXtrue \global\cmTtrue + \global\psXfalse \global\psTfalse + \global\Xfalse \global\Tfalse + \banner{Computer Modern}} +\def\psonly{\global\maXfalse \global\maTfalse + \global\cmXfalse \global\cmTfalse + \global\psXtrue \global\psTtrue + \global\Xfalse \global\Tfalse + \banner{PostScript fonts}} + +\def\styonly {\global\maXtrue \global\maTtrue + \global\cmXtrue \global\cmTtrue + \global\psXtrue \global\psTtrue + \global\Xfalse \global\Tfalse + \banner{Style files}} +\def\Tstyonly{\global\maXfalse \global\maTtrue + \global\cmXfalse \global\cmTtrue + \global\psXfalse \global\psTtrue + \global\Xfalse \global\Tfalse + \banner{Doc style files}} +\def\Xstyonly{\global\maXtrue \global\maTfalse + \global\cmXtrue \global\cmTfalse + \global\psXtrue \global\psTfalse + \global\Xfalse \global\Tfalse + \banner{Lft style files}} + +\def\Tonly {\global\maXfalse \global\maTfalse + \global\cmXfalse \global\cmTfalse + \global\psXfalse \global\psTfalse + \global\Xfalse \global\Ttrue + \banner{Sectioning macros for Docs}} +\def\Xonly {\global\maXfalse \global\maTfalse + \global\cmXfalse \global\cmTfalse + \global\psXfalse \global\psTfalse + \global\Xtrue \global\Tfalse + \banner{Sectioning macros for Lfts}} + +\def\banner#1{ + \par + \line{% + \vrule height 1ex width 0.2ex + \leaders\vrule height 1ex depth -0.8ex \hskip2em + \enspace{\it \strut #1\/}\enspace + \leaders\vrule height 1ex depth -0.8ex \hfil + } +} + +\def\onlyone#1{ + \allfilesfalse \global\csname#1true\endcsname + \banner{{\tt\csname filename#1\endcsname}} +} +\def\onlytwo#1#2{ + \allfilesfalse \global\csname#1true\endcsname + \global\csname#2true\endcsname + \banner{{\tt\csname filename#1\endcsname}, + {\tt\csname filename#2\endcsname}} +} + +\def\common{ + \par + \allfilesfalse \global\Xtrue \global\Ttrue + \closebanner +} + +\def\closebanner{ + \line{% + \vrule height 1.8ex depth -0.5ex width 0.2ex + \leaders\vrule height 0.7ex depth -0.5ex \hfil + } +} + + + +%}}} preamble +%{{{ introduction + +\null\vskip2\baselineskip\hrule\bigskip +\leftline{Style files for the pdc- macros \fileversion\space(\filedate)} +\bigskip\hrule\bigskip +\headline{\hfil\global\headline={\hfil + \sevenbf Style files for the pdc- macros + \fileversion\space(\filedate)}} + +\section{Introduction} + +\subsec{About the style files} + + This document describes a family of plain \TeX\ style files for + typesetting documents which are short enough not to need any + fancy indexing or cross-references, but long enough to want + numbered section headings and a table of contents. + + A {\it style file} in this context means a definitions file that + specifies the formatting of for a document: layout, choice of + fonts, instructions for how to format lists, and so on. The + style files use the macros defined in other definition files to + supply most of the features they need. The document only needs + one `|\input|' command to set up most of the commands it needs. + +\subsec{No cross-references} + + Omitting cross-references is important because it means we can + avoid having documents that have to be run through \TeX\ more + than once (the first time to generate a raw index or + cross-reference file, the second to incorporate the references + into the document). This greatly simplifies the macros. + + So that the table of contents may be generated automatically + without requiring a second pass, it is printed {\it last\/} in + the file. It follows that the table of contents belongs at the + end of the front matter of the document (on pages numbered in + roman numerals), immediately before page~1. It is easiest if + all the front matter is printed last. After the end of the + document proper, put the front matter enclosed in |\frontmatter| + \dots |\endfrontmatter|; this automatically switches to page + numbering in roman numerals, and puts the table of contents at + the end. + + The file |pdccmdoc.tex| does documents using the Computer Modern + fonts. There is a variant called |pdccmlft.tex| intended for + `leaflets' that are even shorter than the `docs' produced with + |pdccmdoc.tex|. Leaflets have no front matter section, no table + of contents, and section headings are much less prominent---they + should only be a few pages long at most. The Malvern versions + are called |ma55doc.tex| and |ma55lft.tex|. + +\subsec{About this document} + + The file that generates this printed documentation, |pdcsty.dtx| + is a `documented \TeX' file. As well as briefly describing what + the macros are for and how they work, it includes a complete + listing of their definitions. The text of the definitions is + also written to files in the current directory, generating fresh + copies of the style files. This way this documentation and the + files it describes are guaranteed to match. + + The lines of all definitions are numbered continuously, even + though only a subset of all the definition lines will go in each + file. + +%}}} introduction +%{{{ starting up + +\section{Starting up} + +\subsec{File identification} + + Nowadays, macro files start with some comments identifying the + file, for the benefit of people wondering what the file is for. + The macro file otherwise has no other comments, in the hope that + this will let \TeX\ read it in faster. (It should be possible + for the identification comments to go {\it after} an |\endinput| + at the close of the file, but the convention is to have them at + the start.) + + The following segment is common to the style files and the + definiton files. + +\code + \|\% \filename~\fileversion~\filedate~-- macros for short documents +\smallbreak + |%%%@TeX-definition-file { + \|\%\%\% filename~~~~~~~= "\filename", + \|\%\%\% 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, style file", + |%%% supported = "Maybe", +\cmonly |%%% abstract = "Top-level macro file for documents set in + |%%% Computer Modern fonts. +\maonly |%%% abstract = "Top-level macro file for documents set in + |%%% Malvern 55, 56 and 75 fonts. +\onlytwo{X}{T} + |%%% abstract = "Sectioning macros for style files. +\allfilestrue\closebanner + |%%% This macro 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.", +\onlytwo{X}{T} + |%%% dependencies = "" +\cmonly |%%% dependencies = "pdcfmt2.tex, pdcfsel.tex, pdchyex.tex, + |%%% pdcimth.tex, pdccmsub.tex, pdcmigr.tex, +\maonly |%%% dependencies = "maamac.tex, pdcfmt2.tex, pdcfsel.tex, + |%%% pdchyex.tex, pdcimth.tex, pdcmigr.tex, +\psonly |%%% dependencies = "pdcadobe.tex, pdcfmt2.tex, pdcfsel.tex, + |%%% pdchyex.tex, pdcimth.tex, pdcmigr.tex, +\Tstyonly + |%%% pdcoput5.tex, pdcdoc.def", +\Xstyonly + |%%% pdcoput5.tex, pdclft.def", +\allfilestrue\closebanner + |%%%} + | + \|\\message\{\fileversion~<\fileauthor~\filedate>\} + | +\endcode + + This is followed immediately by a list of the macro files + included by this format: +\code +\styonly + |\input pdcimth + |\input pdcmigr + |\input pdcfmt2 + |\input pdchyex + |\input pdcoput5 + |\input pdcfsel +\cmonly + |\input pdccmsub +\maonly + |\input maamac +\psonly + |\input pdcadobe +\common +\endcode + + +%}}} starting up +%{{{ layout + +\section{Layout} + +\subsec{Paper sizes} + + The section defining the paper size is at the very top of the + file to make it easy for someone adapting the macros to American + Letter size paper to find them. + + Nevertheless, we set the top and bottom margins to be large + enough that even if it is printed on American paper, nothing + important will be cut off. This requires decent-sized margins + at the top and bottom of pages (since the end of the page that + will be lost depends on whether the printer driver has its real + origin at top-left or bottom-left). The edge of the printing + area is guessed at as being $7\,{\rm mm}$ from the edge of the + paper. +\code + |\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 +\smallbreak + |\setpaper{210mm}{297mm} +\endcode + + The document has `tab-index' headings, that is, headings go in a + wide left margin to the left of the body text. The underlying + structure is a grid is 4~cells wide, with the text spanning + across the rightmost 3~cells. Definitions in the fonts section + below specify that the text will be set ragged-right. +\code + |\setnkgrid{4}{3} + |\colrule=0pt + |\leftmargin=\gridwd \advance\leftmargin\colsep +\endcode + The output routine's |\leftbox| is set at the start of each page + to make space for the left margin. +\code + |\everypage={\ifdim\leftmargin>0pt + | \setbox\leftbox=\hbox to \gridwd{}\fi} +\endcode + + While we're here, we customize some of the environments supplied + by pdcFMT2: +\code + |\everyfootnote={\notefonts} + |\everylinenum={\smallfonts} +\maonly + |\def\footnotetextmark#1{{\rmsy#1}} + |\def\footnotenotemark#1{{\rmsy#1}} +\common + |\everylinenum={\smallfonts} + |\everytag={\bf} +\endcode + +%}}} layout +%{{{ fonts +\section{Fonts} + + This section describes the fonts available in the document. + + We introduce extra nicknames |\bi| for bold italic (used for the + first mention of new techical terms), |\mf| for the METAFONT + logo, |\mfi| for the METAFONT logo in italic (Something of an + affectation) and |\ttb| for an `emphasized' typewriter (usually + it is best if this is slanted, not bold). +\code +\styonly + |\autoloadfonts +\endcode + + The style files differ because of encoding schemes more than + because of the particular fonts. For example, a style for Times + Roman will work for Palatino too,if we change the names of the + fonts used. To do this, a macro |\basefontname| may be defined + before the style file is read in; if it isn't defined it is + given a default value. + +%{{{ cmr + +\subsec{Fonts for Computer Modern documents} +\cmonly + We use Computer Modern Sans Serif for the headings in CM + documents. I have not put much effort into making formulas + work in headings. +\code + |\def\STYheadingT{% + | \m{rm}{cmss}\m{mi}{cmmi}\m{sy}{cmsy}% + | \f{it}{cmssi}\f{tt}{cmtt}\f{mf}{logo}\f{mfi}{logosl}% + |} +\smallbreak + |\font\headingrm=cmss17 \font\headingit=cmssi17 + |\fontset{subheading}\STYheadingT{10 scaled 1200}{14pt} + | {small}{tiny} + |\fontset{heading}\STYheadingT{10 scaled 1728}{20pt} + | {subheading}{small} +\endcode + + We use Computer Modern for body text. +\code + |\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}% + |} +\smallbreak + |\font\tinytt=cmtt8 at 7pt + |\font\bodysy=cmsy10 at 12pt +\endcode + +%}}} cmr +%{{{ malvern + +\subsec{Fonts for Malvern documents} +\maonly + + Headings are in Malvern~75. The maths fonts are scaled for + expediency; I~do not make much effort to make formulas work in + headings. +\code + |\def\STYheadingT{% + | \m{rm}{ma75a}\@\m{mi}{cmmi10}\@\m{sy}{cmsy10}% + | \f{it}{ma76a}\@\f{tt}{cmtt10}\@\f{mf}{logo10}\@\f{mfi}{logosl10}% + |} +\smallbreak + |\fontset{subheading}\STYheadingT{12}{14pt}{subheading}{subheading} + |\fontset{heading}\STYheadingT{18}{20pt}{subheading}{subheading} +\endcode + + + We use Malvern~55 for body text. The supplementary font with + encoding~B is added, with font nickname |\rmsy|. +\code + |\newfam\rmsyfam +\smallbreak + |\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}% + |} +\endcode +% The main problem with defining the body fonts is that the +% $x$-height of Malvern is larger then Computer Modern. This makes +% in necessary to load the maths fonts at a larger size to match. +% (A better solution might be to make a parameter file for +% Computer Modern so that maths fonts may be generated with +% compatible proportions.) +%\code +% |\loadfont\bodytt{cmtt10 scaled \magstep2} +% |\loadfont\notett{cmtt10 scaled \magstep1} +% |\loadfont\smalltt{cmtt10 scaled \magstephalf} +% |\loadfont\bodytb{cmsltt10 scaled \magstep2} +% |\loadfont\smalltb{cmsltt10 scaled \magstep1} +% |\loadfont\notetb{cmsltt10 scaled \magstephalf} +%\endcode + There is no point using |\loadfont| on the maths symbol fonts, + since they have to be loaded anyway the first time |\bodyfonts| + is called. +\code + |\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 +\endcode +%}}} malvern +%{{{ PostScript + +\subsec{Fonts for Times documents} +\psonly + The big problem with PostScript fonts is what they are called; + I~shall be assuming that Fontname~$1.6$\footnote*{Karl Berry, + {\it File Names for \TeX\ Fonts} $1.6$ ({\tt + ftp:\penalty\exhyphenpenalty //ftp.umb.edu\slash pub\slash + tex\slash fontname/}).} applies: fonts with |afm2tfm|'s + variation on the \TeX\ Text encoding are called |ptmr| and fonts + with Adobe's StandardRoman encoding are called |ptmr0| (rather + than |rptmr|). + + This macro attempts to make it possible to guess the standard + name for the italic variant of a given font. + |\KBcanonical{|\<tentative font name>|}| takes a font name which + is formed from an upright name optionally followed by `|i|' + representing an italic variation. It returns the corresponding + standard name. For example, |ptmri| is left unchanged, but + |phvri| is changed to |phvro| and |phvrrni| is changed to + |phvron|. +\code + |\def\KBcanonical#1{% + | \expcs\ifx{KB#1}\relax #1\else\csname KB#1\endcsname \fi + |} +\smallbreak + |\ifx\KBadobe\UNDEFINED \def\KBadobe#1{\KBcanonical{#10}} \fi + |\def\KBit#1{\KBcanonical{#1i}} + |\def\KBbi#1{\KBbf{#1i}} + |\def\KBbf#1{\expandafter\KBbfx#1.} + |\def\KBbfx#1#2#3#4#5.{\KBcanonical{#1#2#3b#5}} +\smallbreak + |\def\KBpagbr{pagdr} \def\KBpagbri{pagdro} + |\def\KBpbkbr{pbkdr} \def\KBpbkbri{pbkdri} + |\def\KBpagri{pagro} \def\KBpagbi{pagbo} + |\def\KBphvri{phvro} \def\KBphvbi{phvbo} + |\def\KBpcrri{pcrro} \def\KBpcrbi{pcrbo} + |\def\KBphvrrni{phvron} \def\KBphvbrni{phvbon} + |\def\KBphvrrn0{phvr0n} \def\KBphvbrn0{phvb0n} + |\def\KBphvrrni0{phvro0n} \def\KBphvbrni0{phvbo0n} +\endcode + + Headings are in Helvetica. The maths fonts are scaled for + expediency; I~do not make much effort to make formulas work in + headings. +\code + + |\ifx\headingfontname\UNDEFINED \def\headingfontname{phvr} \fi + |\ifx\headingttfontname\UNDEFINED \def\headingttfontname{pcrb} \fi +\smallbreak + |\def\STYheadingT{% + | \@\f{rm}{\headingfontname}\@\m{mi}{cmmi10}\@\m{sy}{cmsy10}% + | \@\f{asy}{psyr}% + | \@\f{it}{\KBit\headingfontname}% + | \@\f{tt}{\headingttfontname}\@\f{mf}{logo10}\@\f{mfi}{logosl10}% + |} +\smallbreak + |\loadfont\bodysy{cmsy10 at 12pt} +\smallbreak + |\fontset{subheading}\STYheadingT{12}{14pt}{subheading}{subheading} + |\fontset{heading}\STYheadingT{18}{20pt}{subheading}{subheading} +\endcode + + + We use Times Roman by default for body text, and Courier for + typewriter text. Adobe's Symbol font is included, with font + nickname |\asy|; a family called |\asyfam| has already been + created by |pdcadobe.tex|. +\code + |\ifx\bodyfontname\UNDEFINED \def\bodyfontname{ptmr} \fi + |\ifx\bodyttfontname\UNDEFINED \def\bodyttfontname{pcrr} \fi +\smallbreak + |\def\STYbodyT{% + | \@\m{rm}{\bodyfontname}\@\m{it}{\KBit\bodyfontname}% + | \@\m{bf}{\KBbf\bodyfontname}\@\f{bi}{\KBbi\bodyfontname}% + | \@\m{asy}{psyr}\m{mi}{cmmi}\m{sy}{cmsy}% + | \@\f{mf}{logo10}\@\f{mfi}{logosl10}% + | \@\f{tt}{\bodyttfontname}\@\f{tb}{\KBit\bodyttfontname}% + |} +\endcode + + + Finally the alphabet-switching commands defined for Malvern + fonts are given dummy definitions. +\code + |\let\sc=\relax \let\mc=\relax \let\csc=\relax +\endcode + +%}}} malvern + +\common +\subsec{Definitions common to all formats} + +\code +\styonly + |\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} +\endcode + + The text is set left-justified (ragged-right). To make this + work, the fontdimens that control word spacing are set to force + interword spaces to all be the same width. +\code + |\def\everyloadfont#1#2{\fontdimen3#1=0pt \fontdimen4#1=0pt} + |\rightskip=0pt plus 2em \tolerance=1000 +\smallbreak + |\bodyfonts + |{\tt \hyphenchar\font=-1 } +\common +\endcode + +%}}} fonts +%{{{ minimal section headings +\section{Simple sectioning} + +\onlyone{X} + A `leaflet' is divided into short sections, which may contain + subsections (but usually will not). There may well be more than + one section on a page. + + The section number is held in two count registers, and printed + (enclosed in |\n{|\dots|}|) with the macro |\thesecno|: + +\code + |\newcount\secno \newcount\subsecno +\smallbreak + |\def\thesecno{% + | \n{% + | \number\secno + | \ifnum\subsecno>0 + | .\number\subsecno + | \fi + | }% + |} +\endcode + + The section and subsection commands are implemented + straightforwardly with macros from |pdcfmt2.tex|, since there is + no need for marks or fiddling with table-of-contents files. +\code + |\def\section{ + | \global\advance\secno1 \global\subsecno0 + | \doheading\medskipamount{\subheadingfonts\thesecno\enspace}{} + |} +\smallbreak + |\def\subsec{ + | \global\advance\subsecno1 + | \doheading\smallskipamount{\bodyfonts\thesecno\enspace}{} + |} +\endcode + + The page header includes only the title of the file, which the + user sets with the command |\majorheadline{|\<text>|}| +\code + |\newtoks\majorheadline + |\expandafter\majorheadline + | \expandafter{\expandafter\uppercase\expandafter{\jobname}} +\endcode + All those |\expandafter|s are to get the initial value in upper + case. + + The flag |noheadline| signals that the headline is to be omitted + on this page (e.g., the title page). The |twosided| flag is set + for two-sided binding. +\code + |\newif\ifnoheadline \newif\iftwosided +\smallbreak + |\headline{% + | \ifnoheadline + | \hfil + | \else\iftwosided + | \ifodd\pageno + | \hfil \the\majorheadline \quad{\bf\folio}% + | \else + | {\bf\folio}\quad \the\majorheadline\hfil + | \fi + | \else + | \hfil \the\majorheadline \quad{\bf\folio}% + | \fi\fi + |} +\smallbreak + |\footline{% + | \ifnoheadline + | \global\noheadlinefalse + | \hfil{\bf\folio}\hfil + | \else + | \hfil + | \fi + |} +\endcode + +%}}} minimal section headings +%{{{ sectioning +\section{Sectioning in PDCCMDOC documents} + +\onlyone{T} + Now a document is divided into {\it sections}, which are further + divided into so-called {\it subsecs} and {\it subsubsecs}. + (Division into subsubsecs should be done sparingly.) + + The sections may be grouped into {\it parts}---or, to look at it + another way, parts are a larger division of the document than + sections, but sections are not numbered within part numbers. + Each |\part| command should be almost immediately followed by + |\section|. + +\subsec{Macros for section numbers} + + The part and section numbers are kept in \TeX\ number registers, + with corresponding `|\the|-' macros to print the value + formatted. +\code + |\newcount\partno +\smallbreak + |\def\thepartno{% + | \ifcase\partno O\or I\or II\or III\or IV\or V\else + | \expandafter\uppercase\expandafter{\romannumeral\partno}% + | \fi + |} +\endcode + Formatted section and subsec numbers are generated by one macro + |\thesecno|. It automatically omits (sub)subsec numbers if they + are zero. The whole number is enclosed in |\n{|\dots|}| so that + the formatting of numbers may be customized. +\code + |\newcount\secno \newcount\subsecno \newcount\subsubsecno +\smallbreak + |\def\thesecno{% + | \n{% + | \number\secno + | \ifnum\subsecno>0 + | .\number\subsecno + | \ifnum\subsubsecno>0 + | .\number\subsubsecno + | \fi + | \fi + | }% + |} +\endcode + +\subsec{Parts} + + The |\part| macro takes one argument, the title. It sets a + token register |\majorheadline| which is printed on the left + page of two-sided documents. + + The |\majorheadline{|\<text>|}| command may be used immediately + after a |\part| command if the part title is not suitable to go + in the headline. This should also be used at the start of the + document to the title of the document, if division into parts is + not used. +\code + |\newtoks\majorheadline + |\expandafter\majorheadline + | \expandafter{\expandafter\uppercase\expandafter{\jobname}} +\smallbreak + |\def\part#1{% + | \global\advance\partno1 + | \newpageheading{2\baselineskip}{\headingfonts} + | {}{\thepartno.\quad#1} + | \TOCwrite\TOCentrypart{\thepartno}{#1} + |} +\endcode + +\subsec{Section headings} + + Section headings will start on a new page if the current page is + almost finished. The section heading is set across the full + width of the page, including the margin usually used for + tab-indexed headings. + + To force the next section to start a new page, do + |\sectionpenalty-10000| immediately before it. +\code + |\newcount\sectionpenalty +\smallbreak + |\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} +% | \nobreak\medskip + | #1\par + | \nobreak\smallskip + | \endgroup + | \global\noindenttrue + |} +\endcode + As well as generating a heading, the section macro generates + marks used for the page headings and a TOC entry. The marks are + of the form in a way similar to that discussed in Chapter~23 of + the {\it\TeX book}. More precisely, a mark is placed on either + side of the section heading of the form +$$\hbox{\tt\arg{\<rhs>}\arg{\<lhs>}}$$ where \<rhs> is the section + number that belongs on the right-hand page, reflecting the + situation at the bottom of the page, whereas \<lhs> is what + belongs on following left-hand pages. +\code + |\newtoks\sectiontoks + |\newif\ifsecno \secnotrue +\smallbreak + |\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} + |} +\endcode + Subsecs and subsubsecs use the |\doheading| macro defined in + |pdcfmt.tex|. They do not appear in page headings, but may + appear in the TOC. +\code + |\def\subsec#1{% + | \ifsecno \global\advance\subsecno1 \global\subsubsecno0 \fi + | \doheading\medskipamount{\subheadingfonts}{} + | {\ifsecno\thesecno\quad\fi#1} + | \TOCwrite\TOCentrysubsec{\ifsecno\thesecno\fi}{#1} + |} +\smallbreak + |\def\subsubsec#1{% + | \ifsecno \global\advance\subsubsecno+1 \fi + | \doheading\smallskipamount{\rm}{}{\ifsecno\thesecno\quad\fi#1} + | \TOCwrite\TOCentrysubsubsec{\ifsecno\thesecno\fi}{#1} + |} +\endcode + + The headline and footline are controlled by two flags. The + command |\noheadlinetrue| suppresses the headline for this page + (e.g., a title page). The |twosided| flag says whether the + document should be formatted for two-sided printing. +\code + |\newif\ifnoheadline + |\newif\iftwosided +\smallbreak + |\footline={% + | \ifnoheadline + | \global\noheadlinefalse + | \hfil\bodyfonts\n\folio\hfil + | \else + | \hfil + | \fi + |} +\endcode + The headline varies according to whether it is a one-sided page, + a left-hand page or a right-hand page. On a one-sided page, it + has the major headline (part or document title) at the left, and + the section title of the {\it first} section on the page on the + right with the folio. On a left-hand page, there is the folio + and the major headline, and on a right-hand page there is the + section title for the {\it last} section on the page, and the + folio. +\code + |\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 + |} +\smallbreak + |\def\firstoftwo#1#2{#1} + |\def\secondoftwo#1{} +\endcode +%}}} sectioning +%{{{ table of contents +\section{Table of contents intrinsics} + + This section defines the macros used to generate a table of + contents. The entries are written to a file \<jobname>|.toc| in + the current directory. At the end of the manuscript this files + is closed and then read to generate the table of contents. + + Macros special to the TOC-generating section have names starting + with `|\TOC|-'. +\code + |\newwrite\TOCfile + |\openout\TOCfile=\jobname.toc +\endcode + + Entries in the TOC file are of the form +$$\hbox{\tt\cs{TOCentry}\<foo>\arg{\<secno>}\arg{\<title>}\arg{\<folio>}}$$ + where |\TOCentry|\<foo> is a csname, \<secno> is some + automatically-generated section number like `|1.2|', \<title> is + the section title as supplied by the user, and \<folio> is the + folio for this page, in arabic or lower-case roman numeral form. + + They are generated with calls to |\TOCwrite| like this +$$\hbox{\tt\cs{TOCwrite}\cs{TOCentry}\<foo>\arg{\<secno>}\arg{\<title>}}$$ + The \<secno> is evaluated when |\TOCwrite| is called, whereas + the \<title> is carefully written without being expanded so that + its expansion happens when the TOC file is read in. The + \<folio> is automatically appended when it is written. +\code + |\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 + |} +\smallbreak + |\def\TOCtrim#1:->{} +\endcode + + + Now we define all the `|\TOCentry|-' macros. +\code + |\def\TOCentrypart#1#2#3{ + | \smallskip + | \dimen0=\hsize \advance\dimen0\leftmargin + | \moveleft\leftmargin\hbox to\dimen0{\strut\bf #1. #2\hfil} + | \smallskip + |} +\smallbreak + |\def\TOCentrysection#1#2#3{ + | \smallskip\noindent\llap{#1\kern1pc}% + | {\bf \ignorespaces #2\quad\rm \n{#3}}\par + |} +\smallbreak + |\def\TOCentrysubsec#1#2#3{ + | \ifvmode \noindent \else \quad \fi + | {#1}~{\ignorespaces #2} + |} +\smallbreak + |\def\TOCentrysubsubsec#1#2#3{} +\endcode +%}}} table of contents +%{{{ front matter +\section{Printing the front matter} + + The front matter of the document---the title page, preface, + forword, etc.---must be printed {\it last}, with the table of + contents at the end of the front matter; this is so that the + table of contents may be accumulated during the \TeX ing of the + file.\footnote*{It has a benefit for people reading the document + with a browser: page~1 of the document is the first page of the + DVI file, which makes selecting a given page easy, and the table + of contents is at the very end, so the browsers `go to last + page' command can be used to find the table of contents + quickly.} + The front matter starts with the command |\frontmatter| and may + contain |\section| commands. Such sections will be unnumbered + and will not appear in the table of contents. + + For a short document, a separate title page is probably + excessive, and an abstract may be preferable to a preface. In + this case the first page after |\frontmatter| could have the + title of the document (with author etc.)\ followed by an + abstract, any copyright information (or other small print), and + the contents (generated by |\endfrontmatter|). In other words, + something like this: +$$\halign{\indent#\hfil\cr + |\frontmatter|\cr + \quad\it commands to print the title, etc.\cr + \quad|\abstract|\cr + \qquad\it the text of the abstract\cr + \quad|\endabstract|\cr + \quad\it copyright information, etc.\cr + |\endfrontmatter|\cr +}$$ + For a longer document, there will be a separate title page and + perhaps a preface. +$$\halign{\indent#\hfil\cr + |\frontmatter|\cr + \quad|\titlepage|\cr + \qquad\it commands to print the title, etc.\cr + \quad|\splittitlepage|\cr + \qquad\it print copyright information, etc.\cr + \quad|\endtitlepage|\cr + \quad|\section{Preface}|\cr + \qquad\it text of preface, etc.\cr + |\endfrontmatter|\cr +}$$ + The macro |\splittitlepage| marks the division between the title + page (title recto, page~i) and the back of the title page (title + verso, page~ii), which is where copyright information goes. On + a one-sided document, the copyright information belongs on the + title recto, because the title verso will be blank, so + |\splittitle| instead does |\vfill|. + + Setting |\pageno| nagative makes it print in roman numerals. + Calling |\secnofalse| suppresses section numbering. The first + page has no headline. +\code + |\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{} + |} +\endcode + The front matter is finshed off with the contents list, + generated by |\endfrontmatter|. This reads the TOC file, which + was closed at the end of the last page of the body of the + document. +\code + |\def\endfrontmatter{ + | \section{Contents} + | \input\jobname.toc + | \vfill\supereject + | \endthe{frontmatter} + |} +\endcode + + Here's macros for generating the titlepage---it shoul;d enclose + commands to generate the title, author and publisher information + for the document. If it is used, it goes immediately after + |\frontmatter|, so that the title page is page~i. +\code + |\def\titlepage{ + | \vfill\eject + | \beginthe{titlepage} + | \noheadlinetrue + | \def\splittitlepage{ + | \iftwosided \vfill\eject\null\vfill \else \vfill \fi + | } + |} +\smallbreak + |\def\endtitlepage{ + | \eject + | \endthe{titlepage} + |} +\endcode + + This |abstract| environment doesn't do anything fancy. +\code + |\def\abstract{ + | \smallskip + | \beginthe{abstract} + | \setbox\parbox\hbox to \gridwd{\subheadingfonts Abstract\hfil} + | \noindenttrue \bodyfonts + |} +\smallbreak + |\def\endabstract{ + | \smallskip + | \endthe{abstract} + |} +\endcode +%}}} front matter + This concludes the code that is included only in documents with TOC. +\common + +%{{{ abbreviations + +\section{abbrevs} + + + The definitions of |\pt| and |\mm| work only in maths mode. +\code + |\def\pt{\,{\rm pt}} + |\def\mm{\,{\rm mm}} +\smallbreak + |\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}} +\endcode + +\subsec{Program names with small caps} + + Some program names use small capitals in their names. For + normal fonts there is no point trying to duplicate this, since + small capitals aren't common to all fonts. But small capitals + come `for free' with Malvern, so we might as well use them. The + following definitions apply to Malvern~A fonts. +\code +\maonly + |\def\PS{\csc{PostScript}} + |\def\La{L\negthinspace\flushtop{\char"C1 }} +\cmonly + |\def\PS{PostScript} +\common +\endcode + +\font\sf=cmss10 + Here's a redefinition of |\TeX|. This adds a spacefactor 1000 + to the end (so that \TeX\ doesn't apply its usual heuristic that + a full stop following a capoital {\it X} isn't a sentence end). + It also loosens up the logo, producing `\TeX' rather than the + usual `T\negthinspace\lower0.5ex\hbox{E}\kern-0.125emX'. This + design is more forgiving of changes in font (for example, in + sanserif it makes `{\sf\TeX}' instead of `{\sf + T\negthinspace\lower0.5ex\hbox{E}\kern-0.125emX}'). +\code + |\def\TeX{T\kern-0.1em\lower0.5ex\hbox{E}X\spacefactor1000 } +\endcode + + The macro |\dfn{...}| formats a defining instance of a word or + phrase (usually used the first time a new technical term is + introduced). When generating an index with a command |\index|, + this also adds the phrase to the index. +\code + |\begingroup\catcode`\|=12 \toks0={\endgroup + | \def\dfn#1{\ifx\index\UNDEFINED\else\index{#1|INDdfn}\fi{\bi #1}} + |} \the\toks0 +\endcode + + Here's a hack for using email-style emphasis using + `asterisking'. Text enclosed in matching asterisks is + emphasized. +\code + |\declareactivechar\* \def*#1*{{\it#1\/}} +\endcode + + +\begingroup\defverbatim\~ + When documenting computer progams it is useful to be able to + present dialogues between the user and the computer, with the + user's commands distinguished by a slightly different font. + Here we define ~\|~\<text>~|~ so that it behaves like + ~|~\<text>~|~ except that |\ttb| is used instead of |\tt|. In + maths mode it is still equivalent to |\Vert|. +\code + |\def\|{% + | \relax\ifmmode + | \Vert + | \else + | \begingroup + | \ttb \setupverbatim + | \catcode`\|=13 \let|\endgroup + | \fi + |} +\endcode +\endgroup +%}}} abbreviations +%{{{ postamble +\section{Finally} + + The definitions common to all style files are read last, so that + they can take account of changes to |\baselineskip|. +\code +\Tstyonly + |\input pdcdoc.def +\Xstyonly + |\input pdclft.def +\common +\endcode + + And, at last, a file {\tt\<filename>.cfg} is read, if it exists. +\code + |\def\inputifexists#1{% + | \openin15=#1 + | \ifeof15 \else \input #1 \fi + | \closein15 + |} +\styonly + \|\\inputifexists\{\filenamesanssuffix.cfg\} +\common +\endcode + +\endcodefile{cmX} \endcodefile{cmT} \endcodefile{maX} \endcodefile{maT} +\endcodefile{psX} \endcodefile{psT} \endcodefile{X} \endcodefile{T} +\bye +%}}} postamble +%}}} pdccmcode.dtx + +%Local variables: +%fold-folded-p: t +%fill-prefix: " " +%End: diff --git a/Master/texmf-dist/source/plain/pdcmac/pinstall b/Master/texmf-dist/source/plain/pdcmac/pinstall new file mode 100644 index 00000000000..0bcb9be0459 --- /dev/null +++ b/Master/texmf-dist/source/plain/pdcmac/pinstall @@ -0,0 +1,86 @@ +#!/bin/sh + +# I can't figure out how I'm supposed to use a builtin "install" +# program in a makefile given that every Unix has an incompatible version! + +# This script shall behave similarly to GNU "install". + +version="1.1 Time-stamp: <pdc 1995-03-24>" + +echo= +strip=: + +while test $# -gt 0; do + case $1 in + -c) ;; + -n|--no-create) + echo=echo ;; + --g*=*) + group=`expr $1 : '.*=\(.*\)$'` ;; + -g|--g*) + group=$2; shift ;; + -g*) + group=`expr $1 : '-.\(.*\)$'` ;; + --o*=*) + owner=`expr $1 : '.*=\(.*\)$'` ;; + -o|--o*) + owner=$2; shift ;; + -o*) + owner=`expr $1 : '-.\(.*\)$'` ;; + --m*=*) + mode=`expr $1 : '.*=\(.*\)$'` ;; + -m|--m*) + mode=$2; shift ;; + -m*) + mode=`expr $1 : '-.\(.*\)$'` ;; + -s|--strip) + strip=strip ;; + -h|--help) + cat <<@EOF +$0 -- install files +usage: + $0 [ OPTION ]... FILE1 FILE2 + $0 [ OPTION ]... FILE1...FILEn DIR + $0 --help | --version +options: + -c ignored + --group=GROUP --owner=USER --mode=MODE -g GROUP -o USER -m MODE + --strip -s +@EOF + exit 0 ;; + -V|--version) + echo "PDCMAC install ($0) version $version" + exit 0 ;; + -*) + echo >&2 $0: $1: not understood -- try $0 --help + exit 2 ;; + *) + files="$files $lastfile" + lastfile=$1 ;; + esac + shift +done + +#echo group=$group owner=$owner mode=$mode lastfile=$lastfile files=$files + +$echo cp -p $files $lastfile || exit 1 +if test -d "$lastfile"; then + $echo cd $lastfile +else + files="$lastfile" +fi + +if test -n "$group"; then + $echo chgrp $group $files || exit 1 +fi + +if test -n "$owner"; then + $echo chown $owner $files || exit 1 +fi + +if test -n "$mode"; then + $echo chmod $mode $files || exit 1 +fi +$echo $strip $files + +exit 0 diff --git a/Master/texmf-dist/source/plain/pdcmac/pinstall.1 b/Master/texmf-dist/source/plain/pdcmac/pinstall.1 new file mode 100644 index 00000000000..4b405f35ace --- /dev/null +++ b/Master/texmf-dist/source/plain/pdcmac/pinstall.1 @@ -0,0 +1,108 @@ +.TH PINSTALL 1 "Time-stamp: <pdc 1995-03-27>" "PDCMAC 1.0" "CONTRIBUTED SOFTWARE" +.SH NAME +pinstall \- shellscript for copying programs into system directories, +compatible with install +.SH SYNOPSIS +.na +.B pinstall +[ +.B \-c +] [ +.I options +] +.I file1 +.I file2 +.br +.B pinstall +[ +.B \-c +] [ +.I options +] +.I file\|.\|.\|. +.I dir +.br +.BR pinstall +.B \-\-help +| +.B \-\-version +.PP +.I options += [ +.B \-\-no\-create +] [ +.BI \-\-group= groupname +] [ +.BI \-\-owner= username +] [ +.BI \-\-mode= mode +] [ +.B \-\-strip +] +.SH DESCRIPTION +.na +This documents the +.SM PDCMAC +version of +.IR install (1), +called +.IR pinstall . +It is only used if +.SM GNU +.I install +is not available. +.PP +This copies +.I file1 +(which must exist) +to the name +.IR file2 , +or +the +.I files +into the directory called +.IR dir , +preserving the last-modified times +(just like +.BR "cp \-p" ). +.PP +This command is implemented as a shellscript. +.SH OPTIONS +.TP +.B \-c +Ignored. +.TP +.BI \-\-group= "groupname, " "\-g " groupname +.PD 0v +.TP +.BI \-\-owner= "username, " "\-o " username +.TP +.BI \-\-mode= "mode, " "\-m " mode +.PD +Set the group, owner or mode for the new files (using the same +conventions as +.IR chgrp (1), +.IR chown (1), +and +.IR chmod (1) +respectively). +Only root can combine changes of mode and group. +.TP +.BR \-\-help ", " \-h +Print a usage message and exit. +.TP +.BR \-\-no\-create ", " \-n +Do not copy files; instead print the commands that would have been performed. +.TP +.BR \-\-strip ", " \-s +Apply +.IR strip (1) +to the files after copying them. +.TP +.BR \-\-version ", " \-V +Print a version identification message and exit. +.SH AUTHOR +P. Damian Cugley +.I damian.cugley@comlab.ox.ac.uk +.SH "SEE ALSO" +pmkdir(1), chgrp(1), chown(1), chmod(1), cp(1), strip(1), install(1) diff --git a/Master/texmf-dist/source/plain/pdcmac/pmkdir b/Master/texmf-dist/source/plain/pdcmac/pmkdir new file mode 100644 index 00000000000..b0b5862cc3b --- /dev/null +++ b/Master/texmf-dist/source/plain/pdcmac/pmkdir @@ -0,0 +1,67 @@ +#!/bin/sh + +version="1.0 Time-stamp: <pdc 1995-03-27>" + +# pmkdir [ -m MODE | -g GROUP | -o OWNER | -n ] DIR +# -- create a directory DIR, including any necessary +# intervening directories. +# Also takes note of 3 enbvironment variables: +# GROUP -- group to give to new directories +# OWNER -- owner for new directories +# MODE -- mode for new directories +# If called with the name of an existing directory, this will still +# change group, mode, owner (if they are set). + +me=`basename $0` + +while test $# -gt 0; do + case $1 in + --m*=*) + MODE=`expr $1 : '.*=\(.*\)$'` ; export MODE ;; + -m|--m*) + MODE=$2 ; export MODE; shift ;; + --g*=*) + GROUP=`expr $1 : '.*=\(.*\)$'` ; export GROUP ;; + -g|--g*) + GROUP=$2; export GROUP; shift ;; + --o*=*) + OWNER=`expr $1 : '.*=\(.*\)$'` ; export OWNER ;; + -o|--o*) + OWNER=$2; export OWNER; shift ;; + -n*|--n*) + echo=echo ;; + -h|--h*) + cat <<'@EOF' +$me -- make directory and any parent directories necessary + +$me [--no-create] [--mode=MODE] [--group=GROUP] [--owner=OWNER] DIR... +$me --help | --version + +MODE is a mode for the new directory(s); see chmod(1). +GROUP and OWNER are the group and owner; see chown(1) and chgrp(1). + +The --no-create option means don't do anything, print the commands instead. + +If not specified on the command line, the environment variables MODE, +GROUP and OWNER are used. If there are no environment variables, the +defaults used by mkdir(1) apply. +@EOF + exit 0 + ;; + -V|--v*) + echo $me for PDCMAC $version + exit 0 ;; + -*) + echo >&2 `basename $0`: $1: not understood + exit 2 ;; + *) + p=`dirname $1` + test -d $p || $0 $p || exit 1 + $echo mkdir $1 || exit 1 + test -n "$OWNER" && { $echo chgrp $OWNER $1 || exit 1; } + test -n "$GROUP" && { $echo chgrp $GROUP $1 || exit 1; } + test -n "$MODE" && { $echo chmod $MODE $1 || exit 1; } + ;; + esac + shift +done diff --git a/Master/texmf-dist/source/plain/pdcmac/pmkdir.1 b/Master/texmf-dist/source/plain/pdcmac/pmkdir.1 new file mode 100644 index 00000000000..c9a5981cb21 --- /dev/null +++ b/Master/texmf-dist/source/plain/pdcmac/pmkdir.1 @@ -0,0 +1,81 @@ +.TH PMKDIR 1 "Time-stamp: <pdc 1995-03-27>" "PDCMAC 1.0" "CONTRIBUTED SOFTWARE" +.SH NAME +pmkdir \- make a directory and possibly its parents as well +.SH SYNOPSIS +.na +.B pmkdir +[ +.B \-\-no\-create +] [ +.BI \-\-group= groupname +] [ +.BI \-\-owner= username +] [ +.BI \-\-mode= mode +] +.I dir\|.\|.\|. +.br +.BR pmkdir +.B \-\-help +| +.B \-\-version +.SH DESCRIPTION +.na +This documents the +.SM PDCMAC +version of +.IR mkdirhier (1), +called +.IR pmkdir . +.PP +For each +.I dir +this creates a directory with that file name. +Unlike +.IR mkdir (1), +any intermediate directories required will also be +created. +.PP +This command is implemented as a shellscript. +.SH OPTIONS +.TP +.BI \-\-group= "groupname, " "\-g " groupname +.PD 0v +.TP +.BI \-\-owner= "username, " "\-o " username +.TP +.BI \-\-mode= "mode, " "\-m " mode +.PD +Set the group, owner or mode for the new files (using the same +conventions as +.IR chgrp (1), +.IR chown (1), +and +.IR chmod (1) +respectively). +Only root can combine changes of mode and group. +.TP +.BR \-\-help ", " \-h +Print a usage message and exit. +.TP +.BR \-\-no\-create ", " \-n +Do not copy files; instead print the commands that would have been performed. +.TP +.BR \-\-version ", " \-V +Print a version identification message and exit. +.SH ENVIRONMENT +.TP +.SM GROUP +.PD 0v +.TP +.SM OWNER +.TP +.SM MODE +.PD +The values of these variables are used if the corresponding command-line +options are omitted. +.SH AUTHOR +P. Damian Cugley +.I damian.cugley@comlab.ox.ac.uk +.SH "SEE ALSO" +pinstall(1), chgrp(1), chown(1), chmod(1), mkdir(1), mkdirhier(1) diff --git a/Master/texmf-dist/source/plain/plgraph/autopict.ins b/Master/texmf-dist/source/plain/plgraph/autopict.ins new file mode 100644 index 00000000000..f6cc2fc7814 --- /dev/null +++ b/Master/texmf-dist/source/plain/plgraph/autopict.ins @@ -0,0 +1,102 @@ +%% +%% docstrip install file for autopict.sty (only) +%% based on autoload.ins in the LaTeX distribution. + +%% +\def\batchfile{autopict.ins} +\input docstrip + +\let\interactive\relax + +{\ifx\generate\undefined +\Msg{**********************************************} +\Msg{*} +\Msg{* This installation requires docstrip} +\Msg{* version 2.3c or later.} +\Msg{*} +\Msg{* An older version of docstrip has been input} +\Msg{*} +\Msg{**********************************************} +\errhelp{Move or rename old docstrip.tex.} +\errmessage{Old docstrip in input path} +\batchmode +\csname @@end\endcsname +\fi} + +\keepsilent +\declarepreamble\mainpreamble + +This is a generated file. + +Copyright 1993 1994 1995 1996 +The LaTeX3 Project and any individual authors listed elsewhere +in this file. + +For further copyright information, and conditions for modification +and distribution, see the file legal.txt, and any other copyright +notices in this file. + +This file is part of the LaTeX2e system. +---------------------------------------- + This system 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. + + For error reports concerning UNCHANGED versions of this file no + more than one year old, see bugs.txt. + + Please do not request updates from us directly. Primary + distribution is through the CTAN archives. + + +IMPORTANT COPYRIGHT NOTICE: + +You are NOT ALLOWED to distribute this file alone. + +You are allowed to distribute this file under the condition that it +is distributed together with all the files listed in manifest.txt. + +If you receive only some of these files from someone, complain! + + +Permission is granted to copy this file to another file with a +clearly different name and to customize the declarations in that +copy to serve the needs of your installation, provided that you +comply with the conditions in the file legal.txt. + +However, NO PERMISSION is granted to generate or to distribute a +modified version of this file under its original name. + +You are NOT ALLOWED to change this file. + + +MODIFICATION ADVICE: + +If you want to customize this file, it is best to make a copy of +the source file(s) from which it was produced. Use a different +name for your copy(ies) and modify the copy(ies); this will ensure +that your modifications do not get overwritten when you install a +new release of the standard system. You should also ensure that +your modified source file does not generate any modified file with +the same name as a standard file. + +You can then easily distribute your modifications by distributing +the modified and renamed copy of the source file, taking care to +observe the conditions in legal.txt; this will ensure that other +users can safely use your modifications. + +You will also need to produce your own, suitably named, .ins file to +control the generation of files from your source file; this file +should contain your own preambles for the files it generates, not +those in the standard .ins files. + +The names of the source files used are shown above. + + + +\endpreamble +\usepreamble\mainpreamble + +\generate{\file{autopict.sty}{\from{ltpictur.dtx}{def}}} + + diff --git a/Master/texmf-dist/source/plain/vertex/READ.ME b/Master/texmf-dist/source/plain/vertex/READ.ME new file mode 100644 index 00000000000..848e523ce39 --- /dev/null +++ b/Master/texmf-dist/source/plain/vertex/READ.ME @@ -0,0 +1,24 @@ +About 5 years ago I developed some TeX files for economics working papers and journals. My model at the time was AMSTeX. I use a variant of these files for my own working papers, but I've supplemented my files with various additional macros. + +These files really aren't fit for public distribution but I've had so many requests for them that I will release them anyway. One of these days I might find time to get back to this package and do it right. + +If I were starting over I would probably use LaTeX and bibtex, but perhaps it would make sense to wait for LaTeX 3.0. + +Have fun with the files. Note that they are completely unsupported; don't ask me any questions about them. However, if you make significant enhancements or bug fixes I would like to see them. + + Hal.Varian@umich.edu + July 25, 1992 + +-----------original readme file + +Here is release 1.0 of VerTeX. Please note that there are two sets of +"standard" TeX fonts, the "Computer Modern" (CM) versions and the "Almost +Modern" (AM) versions. Users are encouraged to switch to the final +release of the CM fonts, rather than stick with the outmoded AM +fonts. + +In VerTeX I have \font loading statements for both the CM and the AM +fonts. You should comment out the font definitions that you are not using. +The \font statements are at the start of vertex.tex, ppt.sty, etc. + +Good luck.
\ No newline at end of file diff --git a/Master/texmf-dist/source/plain/vertex/files.lst b/Master/texmf-dist/source/plain/vertex/files.lst new file mode 100644 index 00000000000..350b50fbf44 --- /dev/null +++ b/Master/texmf-dist/source/plain/vertex/files.lst @@ -0,0 +1,19 @@ +!!!!READ !ME Information about TeX fonts +VERTEX DOC Documentation +VERTEX HST History of revisions +FILES LST This file +USERS LST List of users on mailing list +AER STY Armenian Economic Review +ECNMET STY Economagica +JEP STY Journal of Economic Perspectives +JET STY Journal of Economic Theorems +JPE STY Journal of Polemical Economy +PPT STY Preprint +QJE STY Quartered Journal of Economics +RESTUD STY Review of Economic Students +FNTEST TEX Torture test for footnotes +JEPCONT TEX Table of Contents for JEP +TEST TEX Test file +TWOCOL TEX Two columns (for AER.STY) +VERTEST TEX Runs TEST.TEX through all of the styles +VERTEX TEX Main set of TeX macros diff --git a/Master/texmf-dist/source/plain/vertex/users.lst b/Master/texmf-dist/source/plain/vertex/users.lst new file mode 100644 index 00000000000..4aa97e300d1 --- /dev/null +++ b/Master/texmf-dist/source/plain/vertex/users.lst @@ -0,0 +1,170 @@ +Professor +Carl +Carl + +Shapiro + +Woodrow Wilson School +Princeton University +Princeton, NJ 08540 +* +Professor +Robert +Bob + +Wilson + +Graduate School of Business +Stanford University +Stanford, CA 94305 +* +Professor +Chi-Fu +Chi-Fu + +Huang + +Sloan School of Management +MIT +Cambridge, MA 02139 +* +Professor +Barry +Barry + +Nalebuff + +Department of Economics +Princeton University +Princeton, NJ 08540 +* +Professor +In-Koo +In-Koo + +Chu + +Graduate School of Business +University of Chicago +Chicago, Illinois 60637 +* +Professor +Tom +Tom + +Russell + +774 Cragmont Avenue +Berkeley, CA 94707 +* +Dr. +Lee +Lee + +Lillard + +The Rand Corporation +1700 Main Street, PO Box 2138 +Santa Monica, CA 90406-2138 +* +Professor +Joseph +Joe + +Stiglitz + +Hoover Institute +Stanford University +Stanford, CA 94305 +* +Professor +Carl +Carl + +Shapiro + +Woodrow Wilson School +Princeton University +Princeton, NJ 08540 +* +Professor +Robert +Bob + +Wilson + +Graduate School of Business +Stanford University +Stanford, CA 94305 +* +Professor +Chi-Fu +Chi-Fu + +Huang + +Sloan School of Management +MIT +Cambridge, MA 02139 +* +Professor +Barry +Barry + +Nalebuff + +Department of Economics +Princeton University +Princeton, NJ 08540 +* +Professor +In-Koo +In-Koo + +Chu + +Graduate School of Business +University of Chicago +Chicago, Illinois 60637 +* +Professor +Tom +Tom + +Russell + +774 Cragmont Avenue +Berkeley, CA 94707 +* +Dr. +Lee +Lee + +Lillard + +The Rand Corporation +1700 Main Street, PO Box 2138 +Santa Monica, CA 90406-2138 +* +Professor +Joseph +Joe + +Stiglitz + +Department of Economics +Princeton University +Princeton, NJ 08540 +* +Professor +Alan +Alan + +Harrison + +Department of Economics +McMaster University +1280 Main Street West +Hamilton, Ontario +Canada, L8S 4M4 +* diff --git a/Master/texmf-dist/source/plain/vertex/vertex.hst b/Master/texmf-dist/source/plain/vertex/vertex.hst new file mode 100644 index 00000000000..ae6873b92ec --- /dev/null +++ b/Master/texmf-dist/source/plain/vertex/vertex.hst @@ -0,0 +1,64 @@ +********************VarTeX Revision History************************** + +As of October 1986, VarTeX should be considered to be in its +pre-release, beta testing stage. This file will record updates +and fixes to VarTeX. + +-------------------------------------------------------------------- +October 2, 1986 + +\doublespace -- works, but footnotes aren't spaced quite right. +\refs -- still need more \if statements +footnote rule now defined in ppt.sty +\thanks now works in ppt.sty +qje.sty defined. +-------------------------------------------------------------------- +October 6, 1986 + +\baselineskip is correct in footnotes now, except for long ones. +\skipins is probably still wrong, but it will do for now. + +-------------------------------------------------------------------- +October 15, 1986 + +Cleaned up the footnote stuff mentioned above. Should have correct +spacing now in both single and double mode. + +-------------------------------------------------------------------- +November 9, 1986 + +Cleaned up some of the style formats. For some reason \Romannumeral +doesn't work in \DoCenteredSection. Fixed several of the bibliographys +in the style files. aer.sty gives "\overfull vboxs", but the output looks +good. + +Have Kari's endnote macro to do endnotes as inserts, but I have not yet +implemented them. That's the next thing to do. + +---------------------------------------------------------------------- +June 13, 1987 + +Fixed problem with \big, due to failure to define \tenbig, \ninebig, etc. + on p. 415 of TeXbook. + +Made \tenpointbaselineskip equal to 12 points. + +Added \ProduceEndNotes to print footnotes at end of paper by using +the \insert macro. (Thanks to Kari Gluski for suggesting this.) + +Fixed the footnotes to always be single spaced, even when paper is +doublespaced. + +Changed \enddocument to do nothing; its previous function is replaced +by \ProduceEndNotes. + +The \thanks footnote in ppt.sty now looks nicer in doublespaced mode. + +---------------------------------------------------------------------- +August 9, 1987 + +Some fixes to ecnmet.sty +Added \quote and \singlespace +Change \bigbreak to \BigBreak to avoid more widows with \section and + \subsection +Added \halign to \DoCoverAuthor to allow for multiple authors
\ No newline at end of file |