From 2e6b6d51f565a1d1aafaa05a7289f9140cf3b266 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Fri, 18 May 2007 16:33:56 +0000 Subject: install longstanding and complicated package frankenstein git-svn-id: svn://tug.org/texlive/trunk@4311 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/doc/latex/frankenstein/ChangeLog | 404 ++++ .../texmf-dist/doc/latex/frankenstein/Frankenfile | 1532 +++++++++++++++ Master/texmf-dist/doc/latex/frankenstein/INSTALL | 321 ++++ Master/texmf-dist/doc/latex/frankenstein/README | 243 +++ .../texmf-dist/doc/latex/frankenstein/abbrevs.pdf | Bin 0 -> 212833 bytes .../texmf-dist/doc/latex/frankenstein/abbrevs.tex | 67 + .../doc/latex/frankenstein/achicago-bst.pdf | Bin 0 -> 412506 bytes .../doc/latex/frankenstein/achicago-bst.tex | 67 + .../doc/latex/frankenstein/achicago-bst.ver | 18 + .../texmf-dist/doc/latex/frankenstein/achicago.bsq | 2001 ++++++++++++++++++++ .../texmf-dist/doc/latex/frankenstein/achicago.pdf | Bin 0 -> 134780 bytes .../texmf-dist/doc/latex/frankenstein/achicago.tex | 67 + .../texmf-dist/doc/latex/frankenstein/attrib.pdf | Bin 0 -> 137127 bytes .../texmf-dist/doc/latex/frankenstein/attrib.tex | 67 + .../texmf-dist/doc/latex/frankenstein/blkcntrl.pdf | Bin 0 -> 76903 bytes .../texmf-dist/doc/latex/frankenstein/blkcntrl.tex | 67 + .../texmf-dist/doc/latex/frankenstein/compsci.pdf | Bin 0 -> 170938 bytes .../texmf-dist/doc/latex/frankenstein/compsci.tex | 67 + .../texmf-dist/doc/latex/frankenstein/dialogue.pdf | Bin 0 -> 98763 bytes .../texmf-dist/doc/latex/frankenstein/dialogue.tex | 67 + Master/texmf-dist/doc/latex/frankenstein/lips.pdf | Bin 0 -> 115576 bytes Master/texmf-dist/doc/latex/frankenstein/lips.tex | 67 + .../texmf-dist/doc/latex/frankenstein/moredefs.pdf | Bin 0 -> 171823 bytes .../texmf-dist/doc/latex/frankenstein/moredefs.tex | 67 + .../texmf-dist/doc/latex/frankenstein/newclude.pdf | Bin 0 -> 227643 bytes .../texmf-dist/doc/latex/frankenstein/newclude.tex | 67 + .../texmf-dist/doc/latex/frankenstein/slemph.pdf | Bin 0 -> 75976 bytes .../texmf-dist/doc/latex/frankenstein/slemph.tex | 67 + .../texmf-dist/doc/latex/frankenstein/titles.pdf | Bin 0 -> 199455 bytes .../texmf-dist/doc/latex/frankenstein/titles.tex | 67 + .../frankenstein/unsupported/README-unsupported | 150 ++ .../doc/latex/frankenstein/unsupported/bits.cfg | 20 + .../doc/latex/frankenstein/unsupported/bits.ins | 64 + .../doc/latex/frankenstein/unsupported/bits.pdf | Bin 0 -> 134601 bytes .../doc/latex/frankenstein/unsupported/bits.sty | 1070 +++++++++++ .../doc/latex/frankenstein/unsupported/bits.tex | 67 + .../doc/latex/frankenstein/unsupported/drama.ins | 64 + .../doc/latex/frankenstein/unsupported/drama.pdf | Bin 0 -> 93998 bytes .../doc/latex/frankenstein/unsupported/drama.sty | 488 +++++ .../doc/latex/frankenstein/unsupported/drama.tex | 67 + .../frankenstein/unsupported/includex-test.tex | 206 ++ .../latex/frankenstein/unsupported/includex.ins | 64 + .../latex/frankenstein/unsupported/includex.pdf | Bin 0 -> 95848 bytes .../latex/frankenstein/unsupported/includex.sty | 492 +++++ .../latex/frankenstein/unsupported/includex.tex | 67 + 45 files changed, 8142 insertions(+) create mode 100644 Master/texmf-dist/doc/latex/frankenstein/ChangeLog create mode 100644 Master/texmf-dist/doc/latex/frankenstein/Frankenfile create mode 100644 Master/texmf-dist/doc/latex/frankenstein/INSTALL create mode 100644 Master/texmf-dist/doc/latex/frankenstein/README create mode 100755 Master/texmf-dist/doc/latex/frankenstein/abbrevs.pdf create mode 100644 Master/texmf-dist/doc/latex/frankenstein/abbrevs.tex create mode 100644 Master/texmf-dist/doc/latex/frankenstein/achicago-bst.pdf create mode 100644 Master/texmf-dist/doc/latex/frankenstein/achicago-bst.tex create mode 100644 Master/texmf-dist/doc/latex/frankenstein/achicago-bst.ver create mode 100644 Master/texmf-dist/doc/latex/frankenstein/achicago.bsq create mode 100644 Master/texmf-dist/doc/latex/frankenstein/achicago.pdf create mode 100644 Master/texmf-dist/doc/latex/frankenstein/achicago.tex create mode 100755 Master/texmf-dist/doc/latex/frankenstein/attrib.pdf create mode 100644 Master/texmf-dist/doc/latex/frankenstein/attrib.tex create mode 100755 Master/texmf-dist/doc/latex/frankenstein/blkcntrl.pdf create mode 100644 Master/texmf-dist/doc/latex/frankenstein/blkcntrl.tex create mode 100755 Master/texmf-dist/doc/latex/frankenstein/compsci.pdf create mode 100644 Master/texmf-dist/doc/latex/frankenstein/compsci.tex create mode 100755 Master/texmf-dist/doc/latex/frankenstein/dialogue.pdf create mode 100644 Master/texmf-dist/doc/latex/frankenstein/dialogue.tex create mode 100755 Master/texmf-dist/doc/latex/frankenstein/lips.pdf create mode 100644 Master/texmf-dist/doc/latex/frankenstein/lips.tex create mode 100755 Master/texmf-dist/doc/latex/frankenstein/moredefs.pdf create mode 100644 Master/texmf-dist/doc/latex/frankenstein/moredefs.tex create mode 100755 Master/texmf-dist/doc/latex/frankenstein/newclude.pdf create mode 100644 Master/texmf-dist/doc/latex/frankenstein/newclude.tex create mode 100755 Master/texmf-dist/doc/latex/frankenstein/slemph.pdf create mode 100644 Master/texmf-dist/doc/latex/frankenstein/slemph.tex create mode 100755 Master/texmf-dist/doc/latex/frankenstein/titles.pdf create mode 100644 Master/texmf-dist/doc/latex/frankenstein/titles.tex create mode 100644 Master/texmf-dist/doc/latex/frankenstein/unsupported/README-unsupported create mode 100644 Master/texmf-dist/doc/latex/frankenstein/unsupported/bits.cfg create mode 100644 Master/texmf-dist/doc/latex/frankenstein/unsupported/bits.ins create mode 100644 Master/texmf-dist/doc/latex/frankenstein/unsupported/bits.pdf create mode 100644 Master/texmf-dist/doc/latex/frankenstein/unsupported/bits.sty create mode 100644 Master/texmf-dist/doc/latex/frankenstein/unsupported/bits.tex create mode 100644 Master/texmf-dist/doc/latex/frankenstein/unsupported/drama.ins create mode 100644 Master/texmf-dist/doc/latex/frankenstein/unsupported/drama.pdf create mode 100644 Master/texmf-dist/doc/latex/frankenstein/unsupported/drama.sty create mode 100644 Master/texmf-dist/doc/latex/frankenstein/unsupported/drama.tex create mode 100644 Master/texmf-dist/doc/latex/frankenstein/unsupported/includex-test.tex create mode 100644 Master/texmf-dist/doc/latex/frankenstein/unsupported/includex.ins create mode 100644 Master/texmf-dist/doc/latex/frankenstein/unsupported/includex.pdf create mode 100644 Master/texmf-dist/doc/latex/frankenstein/unsupported/includex.sty create mode 100644 Master/texmf-dist/doc/latex/frankenstein/unsupported/includex.tex (limited to 'Master/texmf-dist/doc/latex/frankenstein') diff --git a/Master/texmf-dist/doc/latex/frankenstein/ChangeLog b/Master/texmf-dist/doc/latex/frankenstein/ChangeLog new file mode 100644 index 00000000000..f1e0e1b5969 --- /dev/null +++ b/Master/texmf-dist/doc/latex/frankenstein/ChangeLog @@ -0,0 +1,404 @@ +2001-09-08 Matt Swift + + * abbrevs.cfg: Add testing for Acromake category. + + * abbrevs.dtx: Added (messy!) acromake emulation. Removed + \TMCurrentMacro for the plain abbrevs -- will deal with that + later. + + * moredefs.dtx: Fixed broken \SaveName. + + * moredefs.dtx: Extend \EExpand...\In examples. + + * Makefile: Remove acromake -- abbrevs now emulates it. + +2001-09-05 Matt Swift + + * titles.dtx: Add \slash to \nospacelist. + +2001-08-31 Matt Swift + + * abbrevs.dtx: Added to \nospacelist the following between bars: + |/\slash\@sptoken\ \space\/\@xobeysp|. Added \TMCurrentMacro. + + * abbrevs.cfg: Add test with \slash. + + * newclude.dtx: Extensive documentation revisions. Incorporation + of includex package. Revision and extension of hooks mechanisms. + Remove "group" option, which seemed inferior in all cases to the + others. + + * titles.dtx: Changed: \booktitle -> \book, \journaltitle -> + \journal, \musictitle -> \music, \articletitle -> \article, + \playtitle -> \play, \crafttitle -> \craft. Compatibility easily + retained in configuration file. New: \species, \WrapquotesSN, + \WrapquotesDN, \WrapquotesSK, \nospacelist (abstraction of what + was hard-coded). Dox revisions. Some code cleanup. + + * titles.cfg: New: \newlet\longpoem\textitswitch + \newlet\film\textitswitch \newlet\essaytitle\Wrapquotes + \newlet\chaptertitle\Wrapquotes. Revise and expand testing to + accommodate changes in titles.dtx. + + * tag.sto: Add 2d optional argument to \include. Revise + documentation. + + * lips.dtx: New: \BracketedLips, \olips, \Lips, mla package + option. + + * group.sto: This file is not distributed any more; it proved + inferior to other newclude solutions in all applications. + + * footnote.dtx: Dox changes only. + + * epigraph.dtx: Remove call to \normalcitations. Remove \EPBox. + Add \@afterheading. + + * compsci.dtx: New: \file \email. Changed: \booktitle -> \book. + Add hyperlatex package option. Make \code not \long. + + * compsci.cfg: Define \ALaTeX instead of \require it (or something + like that). + + * blkcntrl.dtx: Implementation and documentation revisions. + + * bits.dtx: Requires letterhead package -- which I don't think I + distribute. Aha, that's why this is "unsupported"! It may be + usable with a dummy letterhead package. Call scheme-components + tasks now. + + * attrib.dtx: Add \attribcitations. Some dox revisions. + + * allocate.sto: Slight dox revisions. + + * achicago.dtx: Depends on slemph and verbatim too now, but not + relsize. Some code cleanup. Bumped minor version number to + differentiate from what I had up there on my FTP site. + + * achicago-bst.dtx: Extensive revisions to documentation. Thanks + to Panagiotis Louridas for pointing out a significant bug that + would indicate authors with the same last name as the same with a + 3-em dash in the bibliography. More cleanup of code. Major + version to 1; reflects non-beta state. + + * README-unsupported: Remove entry for newclude; revise entry for + includex. + + * README: Add section for newclude. + + * Makefile: bundle-license = LPPL. Newclude moves to supported, + but remove group.sto. Includex remains for now. Alpha-bibstyle + mla: comment out for now, needs work in Frankenfile. + Alpha-configs: add letterhead remove myletter. Dox-requirements: + add attrib. + + * moredefs.dtx: Many documentation changes. Change implementation + of \provideboolean and \newboolean to be compatible with ifthen + package. Fix \prependto@macro \g@prependto@macro so they work. + Fix check for defined macro in \SaveName. Fix \GobbleO \GobbleMO + so they work. Bump \docdate and minor version to distinguish from + limited release on FTP site. + + +1999-03-22 Matthew Swift + + * Makefile: Moved dialogue from alph to stable (was a mistake). + Added ifndefs around HAVE_WEB2C definition. + +1999-03-08 Matthew Swift + + * abbrevs.cfg: Moved basic categories and datemarks to .dtx. + Changed \AbbrevInitialSuffix, \AbbrevSubsequentSuffix back to + \TM.... + + * INSTALL: Added relsize to abbrevs deps. + + * Makefile: Added relsize to abbrevs-deps. + + * abbrevs.dtx: Some dox. Require slemph. Changed + \Abbrev{Initial,Subsequent}Suffix back to \TM... Added basic + categories and datemarks from .cfg to main .dtx. + + * achicago-bst.dtx: Revised some dox, adding the table of entry + types, defining \field, \entry, etc. + + * titles.dtx: Tiny bit of dox. Fixed some mistakes in + commented-out \DTypeouts. + + * compsci.dtx: Fix a bit of dox. + + * README-unsupported: Tidied a bit, and mentioned dependences on + relsize.sty. + + * Makefile: Removed non-bundle fileset rules, dependencies, and + variables. Removed symlinks. + + * INSTALL: Revised handling of non-Frankenstein packages. + Mentioned dox-building requirements. + + * README: Eliminated reference to non-Frankenstein links. + +1999-03-01 Matthew Swift + + * compsci.dtx: Lotso doxo. The whole version-control system + revamped. Also began to kick some butt in my verbatim skills with + a revamp of bothexample that got the kinks out and eliminated + dependence on moreverb. Bracket \email with angle brackets. + + * dialogue.dtx: Updated version to 1.1. + + * achicago-bst.dtx: Lotso doxo. + + * titles.cfg: Added Question-or-Exclamation testing. + + * titles.dtx: Major revision. Lots of dox. Implemented four + complementary \WrapquotesXX and two package options. Implemented + \IfQuestionOrExclamation. Package now requires package slemph. + Added \word \phrase etc. (Were they in the cfg?) Changed some + names from old \sc@ to \ti@. Moved from an \if to an \ifx so + titles don't break before funny command sequences. + + * abbrevs.dtx: Just documentation. + + * achicago.dtx: Dox. + + * lips.dtx: Major revision. Revised most dox. + + \lips will insert nonbreakable space when followed by the chars in + \LPNobreakList and normally-breakable space for everything else. + Previously, \lips inserted nonbreakable space for all following + punctuation, and minimally breakable space for everything else. + The space that follows a period + ellipsis is now + normally-breakable when it was nonbreakable. + + We use \ifx instead of \ifcat to look ahead. This fixes \lips + breaking before command sequences. + + If \lips occurs before a tie, don't insert post-ellipsis space, + let the tie insert it. + + Fixed \PackageError bug. Changed internal \sc@ macros to \lp@ + except for scratch. + +1999-02-27 Matthew Swift + + * includex.dtx: Revised dox a bit. Redid titling. Added counters + sc@count and bit. + + * includex-test.tex: Changed titles of provided files. Redid + document titling. + +1999-02-26 Matthew Swift + + * moredefs.dtx: Revised some dox. Added \GVerboseErrors, \GDebug, + \D*Typeout, \DGobbleM, and dox. Revised \Debug to deal with them. + + * bits.dtx: A tiny bit of dox. + + * newclude.dtx: Changed abstract. Changed (reverted) to + \nc@endofpackage instead of \AtEndOfPackage because of some sort + of problem. + + * INSTALL: Removed mention of moreverb. + + * Makefile: Added some dox. Removed moreverbs dependency and + rules. + + * dialogue.dtx: Attributed the example. Added a bit of user + documentation. + + * attrib.dtx: Added user documentation. Changed \AttribInit to + \at@init and gave user a hook \AttribInit. Added footnote hack to + \at@init. Added \normalcitations, and added it to \attribstar. + Added \nobreak to \attrib. + +1999-02-25 Matthew Swift + + * Makefile: Added blkcntrl.sty to dox-requirements. + + * blkcntrl.dtx: Added warning when \smallblocks called twice. + Changed \item[]\hook to \item\relax hook following latest + classes.dtx (did it change there?). + + * slemph.dtx: Significant change: \itswitch (and \slswitch) now + switches iff the current font is italic (slanted), rather than + switching when the current font is sloped + (i.e., either slanted OR italic). + + * lips.dtx: Revise documentation. + +1999-02-23 Matthew Swift + + * README: Thorough revision. + * Makefile: Thorough revision. + * INSTALL: Thorough revision. + +1999-02-18 Matthew Swift + + * install-lsr: Changed [ -n "$addlsr" ] to [ $addlsr ]; revised + comments. Moving to Frankenbundle directory. + +1998-08-27 Matthew Swift + + * epigraph.dtx: Added \normalcitations (see attrib.dtx) to + \PreEpigraph. + +1998-08-24 Matthew Swift + + * achicago-bst.dtx: I changed all `new.sentence' back to + `new.block' because \newblock was adding a tiny bit of horiz + space, and that seemed like a good idea. + + * achicago-bst.dtx: Removed `second.presort' function. Removed + superfluous variables `sort.label' and `year.and.extra.label'. + Renamed several variables and functions for clarity. Added much + documentation. Streamlined and debugged + `make.short.label.names.q'. Handled duplicate items in the + bibliography better: now handles duplicate organizations in the + `manual' entry type. + +1998-08-22 Matthew Swift + + * achicago-bst.dtx: Added `make.vol.series.num.month.pages', which + seems to work for half the cases, namely, where |series| is empty. + Haven't written the other cases yet. + +1998-08-20 Matthew Swift + + * moredefs.dtx: *prepend macros were not prepending, they were + adding. + + * epigraph.dtx: Changed \parbox argument from [c] default to [b]. + +1998-08-15 Matthew Swift + + * abbrevs.cfg: Added example in comments about changing + \PreFootnote. + +1997-11-11 Matthew Swift + + * titles.cfg: Moved all the definitions to the main file. The + config file should be expendable. + + * moredefs.dtx: Added \ReserveCS* and \ReserveName* and changed + related dox. + + * titles.dtx: Changed @ti@double@ to @doublequotes@ by using + \DeclareBooleanOptions to define it. + + Moved the contents of the cfg file into the main file. + + Added \term, \word, \defn, \foreign, \foreignword, \phrase. + + * abbrevs.cfg: Added backwards compatibility of \TMNewCategory, + \TMDefineAbbrevPlain. + + * compsci.dtx: removed \word \term \defn and put them in + titles package, which compsci requires. + + v0.91 (beta) -> v0.92 (beta): changed the redefinition of the + moreverb command to recognize a variable change in the new + moreverb.sty. Released to CTAN 4 Oct 96. Is there a version of + the moreverb package I should be checking for? + + * lips.dtx: 1.1 -> 1.2 + + 1.1 used \newlet but did not require moredefs (bug). I changed to + use \newcommand and \let, rather than require moredefs. + + Removed the \expandafters expanding \sc@t@a in + \sc@lips@check@punct. This was a bug, it shouldn't have been + expanded. + + Added more testing material. + + + * abbrevs.dtx: \TMLongSuffix and \TMShortSuffix changed to + \TMInitialSuffix and \TMSubsequentSuffix. + + \TMNewCategory changed to \NewAbbrevCategory; backward compatible + \let is in the config file. + + \TMDefineAbbrevPlain changed to \TMDefineAbbrevStandard; + \tm@defineabbrevplain changed to \tm@defineabbrevstandard. + backward compatible \let for the former in the config file. + + Added documentation for programmer interface commands + \NewUserAbbrevDefiner, \NewAbbrevCategory. + + Actually implemented \TMHookAll, \TMFontAll (oops!). + + Added note about using with CJK. + +1997-11-07 Matthew Swift + + * moredefs.dtx: \NewUserInfo should use \ReserveCS to initialize + the variable, not \InitCS. + + Fixed documentation of \NewUserCommand: order of arguments was + wrong; mention how the variable is initialized. + +1997-10-20 Matthew Swift + + * compsci.dtx, titles.dtx, abbrevs.dtx, moredefs.dtx: + Changed \Monster* to \Franken*. + + * lips.dtx, abbrevs.dtx: Revised abstract. + +1997-10-19 Matthew Swift + + * compsci.dtx: Fixed problem with \char`\\ producing a " in + non-typewriter fonts, that is, in the definition of \meta. I'm + lost on the current LaTeX font situation. I'm using teTeX 0.4, + which bombs when I try to use T1 encoding. + + Fixed some documentation, including ^^A comments which were + showing up in the codexample examples. + +1997-10-18 Matthew Swift + + * titles.cfg: Added \musictitle on 5 Aug 96; just making new + version now. + + * lips.dtx, abbrevs.dtx, moredefs.dtx, slemph.dtx, titles.dtx: + Revised documentation. + + * compsci.dtx, abbrevs.cfg: Corrected typos in dox. + + Use \NewRobustCommand for \cname instead of \DeclareRobustCommand. + + * abbrevs.cfg: Corrected typos in testing. + + * abbrevs.dtx: Added caveat about CJK and 8-bit input. + + Changed \TMNewAbbrevPlain to use \NewRobustCommand instead of + \@ifdefinable. + + * moredefs.dtx: Either added or fixed \NewRobustCommand and + \NewTextFontCommand. + + In 1.02 (beta), which this version supercedes, I think I did the + following: + + fixed bug in \InitName + added \DeclareBooleanOptions, \DeclareBooleanUserOptions + \SaveCS, \SaveName, \RestoreCS, \RestoreName + \UndefineCS + + * INSTALL: Revised to reflect new CTANs and new distribution + package format. + + * slemph.dtx: Changed \DeclareTextFontCommand to + \NewTextFontCommand. + + Changed \DeclareRobustCommand to \NewRobustCommand. + + * titles.dtx: Fixed infinite loop bug that occurred with + 1996/12/01 and 1997/06/01 kernels with revised lookahead macros. + + Changed some legacy macro names from \sc@ to \ti@. + +Wed Dec 11 12:12:50 1996 Matthew Swift + + * README: Added pointer to INSTALL. + diff --git a/Master/texmf-dist/doc/latex/frankenstein/Frankenfile b/Master/texmf-dist/doc/latex/frankenstein/Frankenfile new file mode 100644 index 00000000000..18da2b3b9bb --- /dev/null +++ b/Master/texmf-dist/doc/latex/frankenstein/Frankenfile @@ -0,0 +1,1532 @@ +## Frankenfile -- common part of a Makefile for LaTeX and BibTeX bundles +# +# Author: Matt Swift +# +# This file is given into the public domain. +# Please acknowledge my work when appropriate. +# Such reflected glory is all I get from releasing this work to you. +# +# Version: $Revision: 1.10 $ $Date: 2001/08/31 01:27:17 $ +# See the file ChangeLog-Frankenbundle for revision history. +# +# This file is distributed in two ways: +# +# 1) With LaTeX filesets. In normal circumstances, you do not need +# to read this file or alter it See the README or INSTALL file that +# came with this file instead. +# +# 2) As part of the Frankenbundle suite, which helps developers make and +# distribute LaTeX and BibTeX filesets. In normal circumstances, you +# should not need to alter this file. Please see the README file +# in the suite for further documentation. + +# +## Basic variable definitions +# + +# NOTE: to override these definitions, use environment variables or the Make +# command line. The values here should be the most common ones in general, so +# that the least number of users have to override them. If you think I could +# choose better values, please write me. + +# NOTE: I use the $(...) construct for command substitution, supported by +# POSIX, ksh, bash. I can rewrite with nested backquotes if someone insists. + +# NOTE: ?= is broken in Make 3.77, so we use the more verbose ifndef +# construction. + +# NOTE: We don't bother to abstract the 'kpsewhich', 'echo', 'cd', 'pwd', +# 'test', or '[' commands. Any reason to? + +# Eliminating built-in implicit rules speeds up Make and makes debugging output +# much briefer. Recusive Making turns on -w which traces what directory we're +# in, but we're always in this directory, so we turn off those messages. +MAKEFLAGS += --no-builtin-rules --no-print-directory + +# We don't need all the old-fashioned suffix rules -- removing them makes +# things more efficient. +.SUFFIXES: + +# Make debugging option. Uncomment to use. +# MAKEFLAGS += --warn-undefined-variables + +# Hmm, this doesn't seem to work when defined in this way. Seems to work only +# on the command line. +# MAKEFLAGS += --print-database + +# ifeq ($(OS),WIN32) +# variant defs +# endif + +# RM is defined by Make as 'rm -f'. You could redefine it. +# ls is often aliased, so use /bin/ls +ifndef LS +LS = /bin/ls +endif +ifndef TAR +TAR = tar +endif +ifndef LN +LN = ln +endif +ifndef M4 +M4 = m4 +endif +ifndef SYMLINK +SYMLINK = $(LN) -f -s +endif +ifndef SED +SED = sed +endif +ifndef AWK +AWK = awk +endif +ifndef FGREP +FGREP = fgrep +endif +ifndef TEE +TEE = tee +endif +ifndef XARGS +XARGS = xargs +endif +ifndef EXPR +EXPR = expr +endif +ifndef HEAD +HEAD = head +endif +ifndef TR +TR = tr +endif +ifndef GREP +GREP = grep +endif +ifndef CAT +CAT = cat +endif +ifndef TOUCH +TOUCH = touch +endif +ifndef REHASH +REHASH = texconfig rehash +endif +ifndef DIRNAME +DIRNAME = dirname +endif +ifndef BASENAME +BASENAME = basename +endif +ifndef INSTALL +INSTALL = install +endif +# -p = preserve timestamps +ifndef INSTALLOPTS +INSTALLOPTS = -p -m $(MKFILEMODE) +endif +ifndef CHMOD +CHMOD = chmod +endif +ifndef MKFILEMODE +# mode rw-rw-r--, i.e. 664 +MKFILEMODE = 664 +endif +ifndef MKDIRP +MKDIRP = $(INSTALL) -d -m $(MKDIRMODE) +endif +ifndef MKDIRMODE +MKDIRMODE = 755 +endif +ifndef LATEX +LATEX = latex +endif +ifndef TEX +TEX = tex +endif +ifndef BIBTEX +BIBTEX = bibtex +endif +ifndef BIBTOOL +BIBTOOL = bibtool +endif +ifndef MAKEINDEX +MAKEINDEX = makeindex $(MAKEINDEXOPTS) +endif +ifndef MAKEINDEXOPTS +MAKEINDEXOPTS = -s gind.ist +endif +# Subdirectory of the main directory in which to build the distribution: +# don't call it "distrib" or the name of any other target! +ifndef distribution-dir +distribution-dir = distribution +endif + +# +## internal variables naming files +# + +# FIX: I suppose we could make this faster for the end user by figuring out +# which of these many definitions are only used by the developer. + +dist-extra-files = $(stable-extra-files) +ifeq ($(USER),$(DEVELOPER)) +dist-extra-files += $(beta-extra-files) +else +ifdef USE_UNSUP +dist-extra-files += $(beta-extra-files) +endif +endif + +# may not exist +bundle-bib.bib = $(bundle-bib).bib + +packages.sty = $(addsuffix .sty, $(packages)) +packages.stq = $(addsuffix .stq, $(packages)) +packages.ins = $(addsuffix .ins, $(packages)) +packages.dvi = $(addsuffix .dvi, $(packages)) +packages.tex = $(addsuffix .tex, $(packages)) +stos.sto = $(addsuffix .sto, $(stos)) +stos.sqo = $(addsuffix .sqo, $(stos)) + +classes.cls = $(addsuffix .cls, $(classes)) +classes.clq = $(addsuffix .clq, $(classes)) +classes.ins = $(addsuffix .ins, $(classes)) +classes.dvi = $(addsuffix .dvi, $(classes)) +classes.tex = $(addsuffix .tex, $(classes)) +clos.clo = $(addsuffix .clo, $(clos)) +clos.cqo = $(addsuffix .cqo, $(clos)) + +bibstyles-bst = $(addsuffix -bst, $(bibstyles)) +bibstyles.bst = $(addsuffix .bst, $(bibstyles)) +bibstyles.bsq = $(addsuffix .bsq, $(bibstyles)) +bibstyles.ins = $(addsuffix .ins, $(bibstyles-bst)) +bibstyles.dvi = $(addsuffix .dvi, $(bibstyles-bst)) +bibstyles.tex = $(addsuffix .tex, $(bibstyles-bst)) +bibstyles.ver = $(addsuffix .ver, $(bibstyles-bst)) + +# everything depends on the makefiles +# the "Frankenfile" in the next line is intended to refer to this file +makefiles = Frankenfile $(calling-makefile) +stable-extra-files += $(makefiles) $(bundle-bib.bib) + +stable-packages.sty = $(addsuffix .sty, $(stable-packages)) +stable-packages.ins = $(addsuffix .ins, $(stable-packages)) +stable-packages.dvi = $(addsuffix .dvi, $(stable-packages)) +stable-packages.tex = $(addsuffix .tex, $(stable-packages)) + +stable-classes.cls = $(addsuffix .cls, $(stable-classes)) +stable-classes.ins = $(addsuffix .ins, $(stable-classes)) +stable-classes.dvi = $(addsuffix .dvi, $(stable-classes)) +stable-classes.tex = $(addsuffix .tex, $(stable-classes)) + +stable-bibstyles-bst = $(addsuffix -bst, $(stable-bibstyles)) +stable-bibstyles.bst = $(addsuffix .bst, $(stable-bibstyles)) +stable-bibstyles.ins = $(addsuffix .ins, $(stable-bibstyles-bst)) +stable-bibstyles.dvi = $(addsuffix .dvi, $(stable-bibstyles-bst)) +stable-bibstyles.tex = $(addsuffix .tex, $(dist-bibstyles-bst)) +stable-bibstyles.ver = $(addsuffix .ver, $(dist-bibstyles-bst)) + +stable-configs.cfg = $(addsuffix .cfg, $(stable-configs)) + +stable-filesets.ins = $(addsuffix .ins, $(stable-filesets)) +stable-filesets.tex = $(addsuffix .tex, $(stable-filesets)) +stable-filesets.dvi = $(addsuffix .dvi, $(stable-filesets)) + +beta-packages.sty = $(addsuffix .sty, $(beta-packages)) +beta-packages.dvi = $(addsuffix .dvi, $(beta-packages)) + +beta-classes.cls = $(addsuffix .cls, $(beta-classes)) +beta-classes.dvi = $(addsuffix .dvi, $(beta-classes)) + +beta-bibstyles-bst = $(addsuffix -bst, $(beta-bibstyles)) +beta-bibstyles.bst = $(addsuffix .bst, $(beta-bibstyles)) +beta-bibstyles.dvi = $(addsuffix .dvi, $(beta-bibstyles-bst)) +beta-bibstyles.ver = $(addsuffix .ver, $(beta-bibstyles-bst)) + +beta-configs.cfg = $(addsuffix .cfg, $(beta-configs)) + +beta-filesets.ins = $(addsuffix .ins, $(beta-filesets)) +beta-filesets.tex = $(addsuffix .tex, $(beta-filesets)) +beta-filesets.dvi = $(addsuffix .dvi, $(beta-filesets)) + +filesets.tex = $(addsuffix .tex, $(filesets)) +filesets.dvi = $(addsuffix .dvi, $(filesets)) +filesets.ins = $(addsuffix .ins, $(filesets)) +filesets.aux = $(addsuffix .aux, $(filesets)) +filesets.t1 = $(addsuffix .t1, $(filesets)) +filesets.t2 = $(addsuffix .t2, $(filesets)) +filesets.t3 = $(addsuffix .t3, $(filesets)) + +dist-filesets.aux = $(addsuffix .aux, $(dist-filesets)) +# cits for "have citations" +dist-filesets-cits.aux = $(addsuffix .aux, $(dist-filesets-cits)) + +stable-stos.sto = $(addsuffix .sto, $(stable-stos)) +beta-stos.sto = $(addsuffix .sto, $(beta-stos)) + +# We treat "X.cfg" as if it was a root name. +configs.cfg = $(addsuffix .cfg, $(configs)) +configs.cfg.install = $(addsuffix .cfg.install, $(configs)) +configs.cfq = $(addsuffix .cfq, $(configs)) +configs.cfq.install = $(addsuffix .cfq.install, $(configs)) + +# These files are part of the building process. +part-1 = $(make-dir)/part-1.dtx +part-2 = $(make-dir)/part-2.dtx +part-3 = $(make-dir)/part-3.dtx +parts = $(part-1) $(part-2) $(part-3) +extractor = $(make-dir)/extractor.ins +driver = $(make-dir)/driver.tex +# +## internal variables for phony targets +# + +dist-bibstyles-bst = $(addsuffix -bst, $(stable-bibstyles)) +dist-packages = $(stable-packages) +dist-classes = $(stable-classes) +dist-bibstyles = $(stable-bibstyles) +dist-filesets = $(dist-packages) $(dist-classes) $(dist-bibstyles-bst) +filesets = $(packages) $(classes) $(bibstyles-bst) +ifeq ($(USER),$(DEVELOPER)) +dist-bibstyles-bst += $(addsuffix -bst, $(beta-bibstyles)) +dist-packages += $(beta-packages) +dist-classes += $(beta-classes) +dist-bibstyles += $(beta-bibstyles) +# cits for "have citations" +dist-filesets-cits = $(basename $(shell $(GREP) -l '\initelyHavECitationS' \ + $(addsuffix .dtx, $(dist-filesets)))) +else +ifdef USE_UNSUP +dist-bibstyles-bst += $(addsuffix -bst, $(beta-bibstyles)) +dist-packages += $(beta-packages) +dist-classes += $(beta-classes) +dist-bibstyles += $(beta-bibstyles) +endif +endif + + +# nondc = "non-dist-cits" +nondc-filesets = $(filter-out $(dist-filesets-cits), $(filesets)) + +packages = $(dist-packages) $(alpha-packages) +packages.clean = $(addsuffix .clean, $(packages)) +packages.dev.clean = $(addsuffix .dev.clean, $(packages)) +packages.macros = $(addsuffix .macros, $(packages)) +packages.macros.q = $(addsuffix .macros.q, $(packages)) +packages.install = $(addsuffix .install, $(packages)) +packages.install.q = $(addsuffix .install.q, $(packages)) +packages.doc.install= $(addsuffix .doc.install, $(packages)) +packages.sty.install= $(addsuffix .sty.install, $(packages)) +packages.stq.install= $(addsuffix .stq.install, $(packages)) +packages.sto.install= $(addsuffix .sto.install, $(packages)) +packages.sqo.install= $(addsuffix .sqo.install, $(packages)) +packages.src.install= $(addsuffix .src.install, $(packages)) +stable-stos = $(foreach f, $(stable-filesets), $($(f)-stos)) +beta-stos = $(foreach f, $(beta-filesets), $($(f)-stos)) +alpha-stos = $(foreach f, $(alpha-filesets), $($(f)-stos)) +stos = $(stable-stos) $(beta-stos) $(alpha-stos) +classes = $(dist-classes) $(alpha-classes) +classes.clean = $(addsuffix .clean, $(classes)) +classes.dev.clean = $(addsuffix .dev.clean, $(classes)) +classes.macros = $(addsuffix .macros, $(classes)) +classes.macros.q = $(addsuffix .macros.q, $(classes)) +classes.install = $(addsuffix .install, $(classes)) +classes.install.q = $(addsuffix .install.q, $(classes)) +classes.doc.install = $(addsuffix .doc.install, $(classes)) +classes.cls.install = $(addsuffix .cls.install, $(classes)) +classes.clq.install = $(addsuffix .clq.install, $(classes)) +classes.clo.install = $(addsuffix .clo.install, $(classes)) +classes.cqo.install = $(addsuffix .cqo.install, $(classes)) +classes.src.install = $(addsuffix .src.install, $(classes)) +stable-clos = $(foreach f, $(stable-filesets), $($(f)-clos)) +beta-clos = $(foreach f, $(beta-filesets), $($(f)-clos)) +alpha-clos = $(foreach f, $(alpha-filesets), $($(f)-clos)) +clos = $(stable-clos) $(beta-clos) $(alpha-clos) +bibstyles = $(dist-bibstyles) $(alpha-bibstyles) +bibstyles.clean = $(addsuffix .clean, $(bibstyles-bst)) +bibstyles.dev.clean = $(addsuffix .dev.clean, $(bibstyles-bst)) +bibstyles.macros = $(addsuffix .macros, $(bibstyles-bst)) +bibstyles.macros.q = $(addsuffix .macros.q, $(bibstyles-bst)) +bibstyles.install = $(addsuffix .install, $(bibstyles-bst)) +bibstyles.bst.install= $(addsuffix .bst.install, $(bibstyles-bst)) +bibstyles.bsq.install= $(addsuffix .bsq.install, $(bibstyles-bst)) +bibstyles.install.q = $(addsuffix .install.q, $(bibstyles-bst)) +bibstyles.doc.install = $(addsuffix .doc.install, $(bibstyles-bst)) +bibstyles.src.install = $(addsuffix .src.install, $(bibstyles-bst)) +configs = $(stable-configs) $(beta-configs) $(alpha-configs) + +# $(filesets-*) are NOT going to include $(bibstyles), but rather +# $(bibstyles-bst). This is what we want. +filesets.macros = $(addsuffix .macros, $(filesets)) +filesets.macros.q = $(addsuffix .macros.q, $(filesets)) +filesets.q = $(addsuffix .q, $(filesets)) +filesets.dep = $(addsuffix .dep, $(filesets)) +filesets.dep.q = $(addsuffix .dep.q, $(filesets)) +filesets.dep.macros = $(addsuffix .dep.macros, $(filesets)) +filesets.dep.macros.q= $(addsuffix .dep.macros.q, $(filesets)) +filesets.dep.install = $(addsuffix .dep.install, $(filesets)) +filesets.dep.install.q= $(addsuffix .dep.install.q, $(filesets)) +filesets.cfg = $(addsuffix .cfg, $(filesets)) +filesets.cfg.install = $(addsuffix .cfg.install, $(filesets)) +filesets.cfq = $(addsuffix .cfq, $(filesets)) +filesets.cfq.install = $(addsuffix .cfq.install, $(filesets)) +filesets.install = $(addsuffix .install, $(filesets)) +filesets.install.q = $(addsuffix .install.q, $(filesets)) +filesets.doc = $(addsuffix .doc, $(filesets)) +filesets.doc.install = $(addsuffix .doc.install, $(filesets)) +filesets.src.install = $(addsuffix .src.install, $(filesets)) +filesets.clean = $(addsuffix .clean, $(filesets)) +filesets.dev.clean = $(addsuffix .dev.clean, $(filesets)) +dist-filesets.clean = $(addsuffix .clean, $(dist-filesets)) +dist-filesets.q = $(addsuffix .q, $(dist-filesets)) +dist-filesets.macros = $(addsuffix .macros, $(dist-filesets)) +dist-filesets.macros.q=$(addsuffix .macros.q, $(dist-filesets)) +dist-filesets.install= $(addsuffix .install, $(dist-filesets)) +dist-filesets.install.q = $(addsuffix .install.q, $(dist-filesets)) +stable-filesets = $(stable-packages) $(stable-classes) \ + $(stable-bibstyles-bst) +beta-filesets = $(beta-packages) $(beta-classes) $(beta-bibstyles-bst) +alpha-filesets = $(filter-out $(dist-filesets), $(filesets)) + +# +## perc variables +# + +# NOTE: This is some pretty backhanded Makefile programming. Doing things this +# way avoids recursive invocations of Make. We still have to recurse to make +# stos and clos because we cannot expand variable names with % in them in the +# list of dependencies. This is unlikely to change in GNU Make. + +# "Perc" stands for "percent", that is, "%". The perc variables are used in +# dependencies and expand to what they name with "%" for "perc"; or they expand +# to nothing, a null dependency. The % if it's there will then get substituted +# in the pattern rule. We handle NODEP and NODOC differently than the NOSRC +# and NOMAC flags because they need to avoid building files as well as +# installing them and. We could actually treat NOMAC the same way, because +# right now NOMAC doesn't avoid building the macros, it just avoids installing +# them. But the only circumstance where this would save time is when you just +# want to install the sources and no macros and no dox. That seems like too +# weird a case to bother to accommodate. + +# Notice we still have to use conditionals like "[ $(NODEP) ] ||" in rules +# because NODEP might be set by a target-specific assignment, and therefore +# these conditionals won't work. In those cases, we can't avoid building +# dependencies, but those cases are exactly the ones where all the dependencies +# are built anyway (e.g., "all:"). For NODOC, NOSRC, and NOMAC, we can use +# ifeq constructions, which are determined when the Makefile is read in. +ifeq ($(NODEP),) + perc.dep = %.dep + perc.dep.q = %.dep.q + perc.dep.macros = %.dep.macros + perc.dep.macros.q = %.dep.macros.q + perc.dep.install = %.dep.install + perc.dep.install.q = %.dep.install.q +else + perc.dep = + perc.dep.q = + perc.dep.macros = + perc.dep.macros.q = + perc.dep.install = + perc.dep.install.q = +endif +ifeq ($(NODOC),) + perc.doc = %.doc + perc.doc.install = %.doc.install +else + perc.doc = + perc.doc.install = +endif + +# +## definitions +# + +# ROOT-NAME is the stem of the macro package, e.g., "foo" from +# foo.{sty,cls,bst} + +ifeq ($(USER),$(DEVELOPER)) +define transform-common + -e 's/__ROOT-NAME__/$*/g' \ + -e 's/__BUNDLE__/$(bundle-title)/g' \ + -e 's/__BUNDLE-BIB__/$(bundle-bib)/g' +endef +define transform-cls + $(SED) $(transform-common) \ + -e 's/__POSTAMBLE__//g' \ + -e 's/__NAME__/$*/g' \ + -e 's/__SUFFIX__/cls/g' \ + -e 's/__VERSION-INFO-SUFFIX__/cls/g' \ + -e 's/__QSUFFIX__/clq/g' \ + -e 's/__OSUFFIX__/clo/g' \ + -e 's/__TYPE__/LaTeX class/g' \ + -e 's/__PROG__/LaTeX/g' \ + -e 's/__PROVIDES__/Class/g' +endef +define transform-sty + $(SED) $(transform-common) \ + -e 's/__POSTAMBLE__//g' \ + -e 's/__NAME__/$*/g' \ + -e 's/__SUFFIX__/sty/g' \ + -e 's/__VERSION-INFO-SUFFIX__/sty/g' \ + -e 's/__QSUFFIX__/stq/g' \ + -e 's/__OSUFFIX__/sto/g' \ + -e 's/__TYPE__/LaTeX package/g' \ + -e 's/__PROG__/LaTeX/g' \ + -e 's/__PROVIDES__/Package/g' +endef +define transform-bst + $(SED) $(transform-common) \ + -e 's/__POSTAMBLE__/\\nopostamble/g' \ + -e 's/__NAME__/$*-bst/g' \ + -e 's/__SUFFIX__/bst/g' \ + -e 's/__VERSION-INFO-SUFFIX__/ver/g' \ + -e 's/__QSUFFIX__/bsq/g' \ + -e 's/__TYPE__/BibTeX style/g' \ + -e 's/__PROG__/BibTeX/g' \ + -e 's/__PROVIDES__/BibTeXstyle/g' +endef +endif # user ?= developer + + +ifneq ($(HAVE_WEB2C),) + +# install-lsr = ./install-lsr --add +# install-plain = ./install-lsr + +install-lsr = $(install-lsr-internal) --add +install-plain = $(install-lsr-internal) + +# Usage: +# +# $progname [--add] [...] | +# +# This emulates install(1) with two differences. +# If --add is given, also add the files to web2c ls-R database. +# If the source file has execute permission, the destination will be given +# u+x. + +define install-lsr-internal + function mbuna () { \ + if [ "$$1" = "--add" ]; then \ + addlsr=true; \ + shift; \ + else \ + unset addlsr; \ + fi; \ + if [ $$addlsr ]; then \ + : $${MT_TEXMFMAIN=$$(kpsewhich --expand-path='$$TEXMFMAIN')}; \ + : $${MT_MKTEX_OPT=$$(kpsewhich --format='web2c files' mktex.opt)};\ + test -n "$$MT_MKTEX_OPT" || \ + MT_MKTEX_OPT="$$MT_TEXMFMAIN/web2c/mktex.opt"; \ + if [ ! -f "$$MT_MKTEX_OPT" ]; then \ + echo "Cannot find mktex.opt; check your installation."; \ + return 1; \ + fi; \ + mt_min_args=2; \ + mt_max_args=1000; \ + old=`pwd`; \ + source "$$MT_MKTEX_OPT"; \ + cd $$old; \ + fi; \ + lastarg=$$(eval echo '$$'{$$#}); \ + echo $(INSTALL) $(INSTALLOPTS) "$$@"; \ + if ! $(INSTALL) $(INSTALLOPTS) "$$@"; then \ + echo "Install failed."; \ + return 2; \ + fi; \ + if [ -d "$$lastarg" ]; then \ + until [ "$$1" = "$$lastarg" ]; do \ + if [ -x "$$1" ]; then \ + echo -n adding user execute permission to $$lastarg/$$1...; \ + $(CHMOD) u+x $$lastarg/$$1; \ + echo . Done.; \ + fi; \ + if [ $$addlsr ]; then \ + echo -n adding $$lastarg/$$1 to the ls-R database...; \ + if ! "$$MT_MKTEXUPD" "$$lastarg" "$$1"; then \ + echo "Problem updating the ls-R database."; \ + return 3; \ + fi; \ + echo . Done.; \ + fi; \ + shift; \ + done; \ + else \ + if [ $$# -ne 2 ]; then \ + echo "Malformed arguments."; \ + return 4; \ + fi; \ + if [ -x "$$1" ]; then \ + echo -n adding user execute permission to $$2...; \ + $(CHMOD) u+x $$2; \ + echo . Done.; \ + fi; \ + if [ $$addlsr ]; then \ + dir=`$(DIRNAME) $$lastarg`; \ + file=`$(BASENAME) $$lastarg`; \ + echo -n adding $$dir/$$file to the ls-R database...; \ + if ! "$$MT_MKTEXUPD" $$dir $$file; then \ + echo "Problem updating the ls-R database."; \ + return 5; \ + fi; \ + echo . Done.; \ + fi; \ + fi; \ + }; mbuna +endef +else + +# NOTE: this is going to fail if the dest is a directory that doesn't exist (it +# will consider it a filename). So, install-plain and install-lsr must never +# be called with a dest directory that doesn't exist. + +# We define these as functions and echo a message to the user, because in +# the web2c case we have to use a big function that we definitely want to +# suppress with @. + +define install-lsr + function wicker () { \ + echo $(INSTALL) $(INSTALL-OPTS) "$$@"; \ + $(INSTALL) $(INSTALL-OPTS) "$$@"; \ + }; wicker +endef +install-plain = $(install-lsr) +endif + +# We check whether the file ACTUALLY has citations, and warn the developer if +# he has failed to include an appropriate \def\initelyHavECitationS in the .dtx +# file. +# +# There may be other or better ways to do the echoing and checking on the +# bibtex process. You want bibtex's output to go out with all the usual Make +# output, but you also want to pipe it to fgrep. Can use gawk and a rule of +# {print; print > "/dev/stderr"}. I just don't think you can redirect stderr +# to a pipe with sh like you can with csh. +# +# BibTeX doesn't put anything on stderr. +# +# args: [] +# +# If is nonempty, then force inclusion of an index. +# +ifeq ($(USER),$(DEVELOPER)) +define checkdtx + if ! $(FGREP) -q '\def\initelyHavECitationS' $$root.dtx; then \ + echo $(DEVELOPER), PUT \\def\\initelyHavECitationS \{\} IN $$root.dtx\!;\ + $(RM) $$root.dvi; \ + return 1; \ + fi +endef +else +define checkdtx + : +endef +endif + +define latex-libll + function bozo () { \ + echo "Processing $$1 with LaTeX, BibTeX, & Makeindex as necessary.";\ + root=$$($(EXPR) $$1 : '\([^\.]*\)\(\.[A-z]\+\)\?'); \ + if [ $$2 ]; then \ + echo "Forcing an index."; \ + arg='\AtBeginDocument{\CodelineIndex\EnableCrossrefs} \ + \AtEndDocument{\clearpage\PrintIndex}\input{'$$1'}'; \ + else \ + arg="$$1"; \ + fi; \ + $(TOUCH) $$root.aux $$root.ind; \ + $(LATEX) $$arg; \ + if $(FGREP) -q '\citation{' $$root.aux; then \ + $(checkdtx); \ + if $(BIBTEX) $$root | $(TEE) /dev/stderr | $(FGREP) -q \ + 'Warning--I didn'\''t find a database entry for'; then \ + echo BIBTEX FAILED; \ + $(RM) $$root.dvi; \ + return 2; \ + fi; \ + $(LATEX) $$arg; \ + fi; \ + $(MAKEINDEX) $$root.idx; \ + $(LATEX) $$arg; \ + }; bozo +endef + +define make-this-if-nonempty + function bobo () { \ + unset turtle; \ + turtle="$$@"; \ + if [ "$$turtle" ]; then \ + echo "Starting recursive make on targets: $$turtle"; \ + $(MAKE) $$turtle; \ + else \ + true; \ + fi; \ + }; bobo +endef + +# args: +# +# example: +# X.clq $(MACRODIR) X.cls +# means "if the remote-file $(MACRODIR)/X.cls is NOT a quickmacro, then +# install X.clq as the remote-file." +# +# example: +# X.sty $(MACRODIR) X.sty +# means "if the remote-file IS a quickmacro, then install X.sty as the +# remote-file." +# +# If arguments $1 and $3 are different, we are installing a quickmacro, +# otherwise we are installing a regular macro. To get the name of the +# quickmacro version when we are installing a regular version, we change the +# last letter of the 3-letter extension to q. +# +# The file is ALWAYS installed if the remote-file is older than the local +# file. +# +define maybe-install-macro + function pliers () { \ + installp=true; \ + if [ "$$1" = "$$3" ]; then \ + quickp=; \ + else \ + quickp=true; \ + fi; \ + if [ -e $$2/$$3 ]; then \ + if [ $$1 -nt $$2/$$3 ]; then \ + echo "File $$1 is newer than $$2/$$3; installing $$1.";\ + elif [ $$quickp ]; then \ + if ! $(HEAD) -2 $$2/$$3 \ + | $(GREP) -q '^%% This is file '\`$$1\'',$$'; then \ + echo "File $$2/$$3 is not a quickmacro; installing $$1."; \ + else \ + echo "Quickfile $$2/$$3 is up to date; not installing $$1.";\ + installp=; \ + fi; \ + else \ + if $(HEAD) -2 $$2/$$3 | $(GREP) -q \ + '^%% This is file '\`"$$($(EXPR) $$1 : '\(.\+\.[A-z][A-z]\)[A-z]')q"\'',$$'; then\ + echo "File $$2/$$3 is a quickmacro; installing $$1."; \ + else \ + echo "File $$2/$$3 is up to date; not installing $$1.";\ + installp=; \ + fi; \ + fi; \ + else \ + echo "File $$2/$$3 does not exist; installing $$1."; \ + fi; \ + if [ $$installp ]; then \ + test -d $$2 || $(MKDIRP) $$2; \ + $(install-lsr) $$1 $$2/$$3; \ + fi; \ + }; pliers +endef + +# +## help target (the default) +# + +.PHONY: default help +default help: + @echo ;\ + echo -----------------------;\ + echo The $(bundle-title) bundle;\ + echo -----------------------;\ + echo ;\ + echo A \"fileset\" is a LaTeX package, LaTeX class, or BibTeX;\ + echo bibliography style together with its supporting files.;\ + echo ;\ + echo The $(bundle-title) bundle contains the following stable, supported filesets:;\ + echo ;\ + echo " $(sort $(stable-filesets))";\ + echo +ifneq ($(beta-filesets),) + @echo and the following beta, unsupported filesets:;\ + echo ;\ + echo " $(sort $(beta-filesets))";\ + echo ;\ + echo The unsupported filesets are in the \"unsupported\" subdirectory.;\ + echo You must copy them to the main directory and set a variable in; \ + echo $(calling-makefile) before make can operate properly on them.; \ + echo +endif + @echo Destinations for installed files may be set in the file \"$(calling-makefile)\".;\ + echo They are currently:;\ + echo ;\ + echo " LaTeX macros go into $(MACRODIR)";\ + echo " LaTeX config files go into $(CONFIGDIR)";\ + echo " BibTeX macros go into $(BIBDIR)";\ + echo " LaTeX DVI dox go into $(MDVIDIR)";\ + echo " BibTeX DVI dox go into $(BDVIDIR)";\ + echo " Sources go into $(SRCDIR)";\ + echo +ifdef HAVE_WEB2C + @echo I think your TeX installation is based on web2c.;\ + echo If this is wrong, change the setting in the file \"$(calling-makefile)\". +else + @echo I think your TeX installation is NOT based on web2c.;\ + echo If this is wrong, change the setting in the file \"$(calling-makefile)\".;\ + echo Installation will be easier if you make this change. +endif + @echo ;\ + echo ------------------------;\ + echo Targets for the end user;\ + echo ------------------------;\ + echo ;\ + echo For each fileset X, there are the following targets:;\ + echo ;\ + echo " X means make X's documentation and macros";\ + echo " X.q means make X's documentation and quick macros";\ + echo " X.install means install X's documentation, sources, and macros";\ + echo " X.install.q means install X's documentation and sources and create";\ + echo " and install X's quick macros.";\ + echo " X.clean means delete X's non-distributed files";\ + echo ;\ + echo There are also the following general targets:;\ + echo ;\ + echo " all means do X for all X's.";\ + echo " all.q means do X.q for all X's.";\ + echo " install means do X.install for all X's.";\ + echo " install.q means do X.install.q for all X's.";\ + echo " clean means do X.clean for all X's";\ + echo ;\ + echo " help means display this help.";\ + echo ;\ + echo All individual files \(e.g., X.dvi, X.ins, X.clq\) are also valid targets.;\ + echo ;\ + echo To avoid installing certain components, set the following variables;\ + echo in the environment or on the Make command line to something nonempty:;\ + echo ;\ + echo " \$$NOMAC nonempty means do not install macro files";\ + echo " \$$NOSRC nonempty means do not install source files";\ + echo " \$$NODOC nonempty means do not build or install documentation files";\ + echo " \$$NODEP nonempty means do not consider fileset-fileset-dependencies";\ + echo ;\ + echo \$$NODEP is automatically set for the general targets.;\ + echo ;\ + echo Quick \(\"q\"\) macros are functionally identical to normal macros;\ + echo but are stripped of comments and are therefore processed faster.;\ + echo ;\ + echo Invoking Make with the \"-s\" option will give you briefer output.;\ + echo ;\ + echo Example: % make -s NODOC=t install.q;\ + echo +ifeq ($(USER),$(DEVELOPER)) + @echo ------------------------------------------; \ + echo Targets for the you, the developer \($(DEVELOPER)\); \ + echo ------------------------------------------; \ + echo +ifneq ($(alpha-filesets),) + @echo Collective targets build both undistributed and distributed filesets.;\ + echo Undistributed filesets are:;\ + echo ;\ + echo " $(sort $(alpha-filesets))";\ + echo +endif + @echo Developer targets include the end user targets above plus, for each fileset X:;\ + echo ;\ + echo " X.dev.clean means delete X"\'"s non-regeneratable files";\ + echo ;\ + echo There are also the following general targets:;\ + echo ;\ + echo " dev.clean means do X.dev.clean for all X's";\ + echo ;\ + echo " distrib" ;\ + echo " ctan means make an archive of the distribution files";\ + echo " ctan.clean means delete the archive and its auxiliary tree";\ + echo " install.clean means delete all files that could have been installed.";\ + echo ;\ + echo " all.clean means do dev.clean ctan.clean install.clean";\ + echo " fresh means do dev.clean all.q ctan";\ + echo +endif + +# +## select from multiple bundle licenses +# + +# $(bundle-license) is e.g. GPL or LPPL + +# Use the convention that if foo.ext is license-dependent, assemble it by +# inserting file foo-$(bundle-license).txt into foo.txt where the directive +# __INCLUDE_LICENSE__ appears. Other licenses and files may require a +# different scheme. + +license-dependent-files = $(part-1) $(extractor) $(driver) + +# NOTE: these files are assumed to be generated and will be deleted by dev.clean +.PHONY: license-dependent-files.clean +license-dependent-files.clean: + $(RM) $(license-dependent-files) + +# The following rule should work, but does not because $(basename ...) is not +# doing anything to its argument. But in make 3.79 reported to Debian 01-08-30. +# +# NOTE: this should work with the files having an initial directory part since +# m4 should work from the pwd but this aspect might need tweaking. +#$(license-dependent-files): %: $(basename %).txt $(basename %)-$(bundle-license).txt +# $(M4) --define=__INCLUDE_LICENSE__="include($(word 2, $^))m4exit(0)" $< > $@ + +# Workaround: be explicit: + +$(license-dependent-files): $(makefiles) + +# Things in the source file (especially $(part-1)) are going to look like quotes +# to m4 and confuse it, so we disable the quoting mechanism and rely on the +# uniqueness of our string. +# Make sure you put "-" for stdin as the first input file. +M4-nq = echo 'changequote(,)dnl' | $(M4) +$(make-dir)/part-1.dtx: $(make-dir)/part-1.txt $(make-dir)/part-1-$(bundle-license).txt + $(M4-nq) --define=__INCLUDE_LICENSE__="include($(make-dir)/part-1-$(bundle-license).txt)dnl" - $< > $@ + +$(make-dir)/extractor.ins: $(make-dir)/extractor.txt $(make-dir)/extractor-$(bundle-license).txt + $(M4-nq) --define=__INCLUDE_LICENSE__="include($(make-dir)/extractor-$(bundle-license).txt)dnl" - $< > $@ + +$(make-dir)/driver.tex: $(make-dir)/driver.txt $(make-dir)/driver-$(bundle-license).txt + $(M4-nq) --define=__INCLUDE_LICENSE__="include($(make-dir)/driver-$(bundle-license).txt)dnl" - $< > $@ + +# +## user/developer file targets +# + +$(packages.stq): %.stq: %.ins %.sty + @echo "Building $@." + $(TEX) $< + +# FIX: sqo not implemented yet; same as sto for now. +$(stos.sqo): %.sqo: %.sto + @echo "Building $@." + $(TOUCH) $@ + +$(classes.clq): %.clq: %.ins %.cls + @echo "Building $@." + $(TEX) $< + +# FIX: cqo not implemented yet; same as clo for now. +$(clos.cqo): %.cqo: %.clo + @echo "Building $@." + $(TOUCH) $@ + +# FIX: cfq not implemented yet; same as cfg for now. +$(configs.cfq): %.cfq: %.cfg + @echo "Building $@." + $(TOUCH) $@ +# $(configs.cfq): %.cfq: %.ins %.cfg +# $(TEX) $< + +$(bibstyles.bsq): %.bsq: %-bst.ins %.bst + @echo "Building $@." + $(TEX) $< + +# dependencies common to all filesets.dvi +$(filesets.dvi): $(dox-requirements) $(bundle-bib.bib) + +# NOTE: The targets listed here are X.dvi for each X which has an X.cfg. The +# DVI dox need to be remade when X.cfg changes, so we add a extra-dependency +# rule here for that. +$(addsuffix .dvi, $(configs)): %.dvi: %.cfg + +$(packages.dvi): %.dvi: %.tex %.sty + @echo "Building $@." + @$(latex-libll) $* + +$(classes.dvi): %.dvi: %.tex %.cls + @echo "Building $@." + @$(latex-libll) $* + +$(bibstyles.dvi): %-bst.dvi: %-bst.tex %.bst %-bst.ver + @echo "Building $@." + @$(latex-libll) $*-bst + +# +## user/developer phony declarations, target-specific vars, etc. +# + +.PHONY: install install.q \ + all all.q \ + clean dev.clean install.clean fresh \ + $(filesets) $(filesets.q) \ + $(filesets.macros) $(filesets.macros.q) \ + $(filesets.dep) $(filesets.dep.q) \ + $(filesets.dep.macros) $(filesets.dep.macros.q) \ + $(filesets.doc) \ + $(filesets.clean) $(filesets.dev.clean) + + +# We get to exercise a lot of the features of Make in this file! Below are +# some target-specific variable values. When we're building these targets, +# there is no need to consider fileset-fileset-dependencies, since all filesets +# are being built. By not considering them, we make things much more +# efficient. +# +# NOTE: target-specific variables are locally set for the COMMANDS of the +# target and the COMMANDS of all its dependencies, and NOT in the dependency +# lists of any of those targets. +all all.q install install.q: NODEP = true + +# Targets declared intermediate will not be remade simply because they do not +# exist and are an intermediate stage on the way to the requested file. If +# intermediate targets existed before the make, they will be kept around, and +# will be removed if not. This way we can have a "clean:" development +# directory without making Make any less efficient. Secondary files are like +# intermediate files, but are not deleted even when they didn't exist before +# the make. We want the intermediate files that are going to go into the +# distribution to be declared secondary so they remain around even when they +# aren't needed by the target called at the time. +.INTERMEDIATE: $(filesets.t1) $(filesets.t2) $(filesets.t3) \ + $(filter-out $(dist-filesets-cits.aux), $(filesets.aux)) +.SECONDARY: $(filesets.tex) $(filesets.ins) \ + $(packages.sty) $(classes.cls) \ + $(bibstyles.bst) $(bibstyles.ver) \ + $(dist-filesets-cits.aux) + +# If Make encounters an error while building a file, the file is probably +# corrupt, but in many cases it is up to date, so we must delete it to ensure +# that Make doesn't think it is OK. +.DELETE_ON_ERROR: + +# +## user/developer phony targets +# + +# don't assume that building dox automatically builds macros + +$(filesets): %: %.macros $(perc.doc) $(perc.dep) +$(filesets.q): %.q: %.macros.q $(perc.doc) $(perc.dep.q) + +# These are extra dependencies. +$(filesets.macros): %.macros: $(perc.dep.macros) +$(filesets.macros.q): %.macros.q: $(perc.dep.macros.q) + +$(packages.macros): %.macros: %.sty $(perc.dep.macros) +$(packages.macros.q): %.macros.q: %.stq $(perc.dep.macros.q) + @$(make-this-if-nonempty) $(addsuffix .sqo, $($*-stos)) + +$(classes.macros): %.macros: %.cls $(perc.dep.macros) +$(classes.macros.q): %.macros.q: %.clq $(perc.dep.macros.q) + @$(make-this-if-nonempty) $(addsuffix .cqo, $($*-clos)) + +$(bibstyles.macros): %-bst.macros: %.bst $(perc.dep.macros) +$(bibstyles.macros.q): %-bst.macros.q: %.bsq $(perc.dep.macros.q) + +$(filesets.dep): %.dep: + @[ $(NODEP) ] || \ + { $(make-this-if-nonempty) $($*-deps); } +$(filesets.dep.q): %.dep.q: + @[ $(NODEP) ] || \ + { $(make-this-if-nonempty) $(addsuffix .q, $($*-deps)); } +$(filesets.dep.macros): %.dep.macros: + @[ $(NODEP) ] || \ + { $(make-this-if-nonempty) $(addsuffix .macros, $($*-deps)); } +$(filesets.dep.macros.q): %.dep.macros.q: + @[ $(NODEP) ] || \ + { $(make-this-if-nonempty) $(addsuffix .macros.q, $($*-deps)); } + +# This would be changed if there were additional forms of documentation. +# filesets are only called by user with .install or .install.q. +# For developer, only filesets.macros and filesets.macros.q call %.doc. +# So until there are other forms of dox, we just need to build %.dvi. +$(filesets.doc): %.doc: %.dvi + +# $(findstring) isn't good enough here, it doesn't look for word boundaries, so +# you have a problem when any fileset name is a subset of another one. + +# GNU expr 1.16 seems broken in that it can't deal with [ $] or [ ^] I can't +# figure what's up. So we insert an extra space at beginning and end in case +# our string is at the beginning or end of nondc-filesets. +$(packages.clean): %.clean: + $(RM) $*.{log,ilg,idx,ind,toc,vrb,stq,cfq,bbl,blg,t1,t2,t3} \ + $(addsuffix .sqo, $($*-stos)) + @auxp=`$(EXPR) " $(nondc-filesets) " : '.* \($*\) '`; \ + if [ $$auxp ]; then \ + echo rm -f $$auxp.aux; \ + $(RM) $$auxp.aux; \ + fi +$(classes.clean): %.clean: + $(RM) $*.{log,ilg,idx,ind,toc,vrb,cfq,,clq,bbl,blg,t1,t2,t3} \ + $(addsuffix .cqo, $($*-clos)) + @auxp=`$(EXPR) " $(nondc-filesets) " : '.* \($*\) '`; \ + if [ $$auxp ]; then \ + echo rm -f $$auxp.aux; \ + $(RM) $$auxp.aux; \ + fi +$(bibstyles.clean): %-bst.clean: + $(RM) $*-bst.{log,ilg,idx,ind,toc,vrb,bbl,blg,t1,t2,t3} $*.bsq + @auxp=`$(EXPR) " $(nondc-filesets) " : '.* \($*-bst\) '`; \ + if [ $$auxp ]; then \ + echo rm -f $$auxp.aux; \ + $(RM) $$auxp.aux; \ + fi + +# +## user/developer *.install* targets (both phony and file) +# +### phony declarations and install targets + +.PHONY: $(filesets.install) \ + $(filesets.install.q) \ + $(filesets.dep.install) \ + $(filesets.dep.install.q) \ + $(filesets.cfg.install) \ + $(filesets.cfq.install) \ + $(filesets.doc.install) \ + $(filesets.src.install) \ + $(packages.sty.install) \ + $(packages.stq.install) \ + $(packages.sto.install) \ + $(packages.sqo.install) \ + $(classes.cls.install) \ + $(classes.clq.install) \ + $(classes.clo.install) \ + $(classes.cqo.install) \ + $(bibstyles.bst.install) \ + $(bibstyles.bsq.install) + +# setting NOMAC will prevent macros from being installed +# setting NOSRC will prevent sources from being installed +# setting NODOC will prevent documentation from being built and installed +# setting NODEP will inhibit consideration of fileset-fileset-dependencies +### X.install + +$(packages.install): %.install: %.sty.install %.sto.install %.cfg.install \ + %.src.install $(perc.doc.install) \ + $(perc.dep.install) + +$(classes.install): %.install: %.cls.install %.clo.install %.cfg.install \ + %.src.install $(perc.doc.install) \ + $(perc.dep.install) +$(bibstyles.install): %.install: %.bst.install %.src.install \ + $(perc.doc.install) $(perc.dep.install) +### X.install.q + +$(packages.install.q): %.install.q: %.stq.install %.sqo.install \ + %.cfq.install %.src.install \ + $(perc.doc.install) $(perc.dep.install.q) + +$(classes.install.q): %.install.q: %.clq.install %.cqo.install \ + %.cfq.install %.src.install \ + $(perc.doc.install) $(perc.dep.install.q) +$(bibstyles.install.q): %.install.q: %.bsq.install %.src.install \ + $(perc.doc.install) $(perc.dep.install.q) +### macros + +$(packages.sty.install) \ +$(classes.cls.install): %.install: % +ifeq ($(NOMAC),) + @$(maybe-install-macro) $< $(MACRODIR) $< +endif +$(bibstyles.bst.install): %-bst.bst.install: %.bst +ifeq ($(NOMAC),) + @$(maybe-install-macro) $< $(BIBDIR) $< +endif +### quickmacros + +$(packages.stq.install): %.stq.install: %.stq +ifeq ($(NOMAC),) + @$(maybe-install-macro) $< $(MACRODIR) $*.sty +endif +$(classes.clq.install): %.clq.install: %.clq +ifeq ($(NOMAC),) + @$(maybe-install-macro) $< $(MACRODIR) $*.cls +endif +$(bibstyles.bsq.install): %-bst.bsq.install: %.bsq +ifeq ($(NOMAC),) + @$(maybe-install-macro) $< $(BIBDIR) $*.bst +endif +### deps + +$(filesets.dep.install): %.dep.install: + @[ $(NODEP) ] || \ + { $(make-this-if-nonempty) $(addsuffix .install, $($*-deps)); } +$(filesets.dep.install.q): %.dep.install.q: + @[ $(NODEP) ] || \ + { $(make-this-if-nonempty) $(addsuffix .install.q, $($*-deps)); } +### option files + +# Should technically depend on $(%-stos) but that is not a legal idea. +$(packages.sto.install): %.sto.install: +ifeq ($(NOMAC),) + @$(foreach x, $($*-stos), \ + $(maybe-install-macro) $(x).sto $(MACRODIR) $(x).sto;) +endif + +# FIX: sqo not implemented yet, same as sto +$(packages.sqo.install): %.sqo.install: %.sto.install + +# Should technically depend on $(%-clos) but that is not a legal idea. +$(classes.clo.install): %.clo.install: +ifeq ($(NOMAC),) + @$(foreach x, $($*-clos), \ + $(maybe-install-macro) $(x).clo $(MACRODIR) $(x).clo;) +endif +# FIX: cqo not implemented yet, same as clo +$(classes.cqo.install): %.cqo.install: %.clo.install +### dox + +# NOTE: If there were ever additional (i.e. non-DVI) formats, this would be a +# rule that depended on %.doc.dvi.install $.doc.foo.install, etc. +$(packages.doc.install) \ +$(classes.doc.install): %.doc.install: $(MDVIDIR)/%.dvi +$(addprefix $(MDVIDIR)/, $(packages.dvi) $(classes.dvi)): $(MDVIDIR)/%: % +ifeq ($(NODOC),) + test -d $(MDVIDIR) || $(MKDIRP) $(MDVIDIR) + @$(install-lsr) $< $(MDVIDIR) +endif + +$(bibstyles.doc.install): %.doc.install: $(BDVIDIR)/%.dvi +$(addprefix $(BDVIDIR)/, $(bibstyles.dvi)): $(BDVIDIR)/%: % +ifeq ($(NODOC),) + test -d $(BDVIDIR) || $(MKDIRP) $(BDVIDIR) + @$(install-lsr) $< $(BDVIDIR) +endif +### sources + +$(addprefix $(SRCDIR)/, $(filesets.ins) $(filesets.tex) \ + $(bibstyles.ver) $(dist-extra-files)): $(SRCDIR)/%: % +ifeq ($(NOSRC),) + test -d $(SRCDIR) || $(MKDIRP) $(SRCDIR) + @$(install-lsr) $< $(SRCDIR) +endif + +$(packages.src.install) \ +$(classes.src.install): %.src.install: \ + $(addprefix $(SRCDIR)/, %.ins %.tex $(dist-extra-files)) + +$(bibstyles.src.install): %.src.install: \ + $(addprefix $(SRCDIR)/, %.ins %.tex %.ver $(dist-extra-files)) +### configs + +$(configs.cfg.install): %.install: $(CONFIGDIR)/% + +$(addprefix $(CONFIGDIR)/, $(configs.cfg)): $(CONFIGDIR)/%: % +ifeq ($(NOMAC),) + test -d $(CONFIGDIR) || $(MKDIRP) $(CONFIGDIR) + @$(install-lsr) $< $(CONFIGDIR) +endif + +# NOTE: X.cfg.install and X.cfq.install when there is no X.cfg is an empty +# rule. We do this so we can simply list those things as dependencies without +# having to know whether an X.cfg exists for that X. +$(filter-out $(configs.cfg.install), $(filesets.cfg.install)) \ +$(filter-out $(configs.cfq.install), $(filesets.cfq.install)): + +# FIX: cfq not implemented, is same as cfg +$(configs.cfq.install): %.cfq.install: %.cfg.install + +# +## user phony declarations and targets +# + +ifneq ($(USER),$(DEVELOPER)) + +# For the end user, 'install' and 'install.q' targets are limited to +# distributed filesets. +all: $(dist-filesets) +all.q: $(dist-filesets.q) +install: $(dist-filesets.install) +install.q: $(dist-filesets.install.q) + +# *.clean leaves only what is distributed +clean: $(dist-filesets.clean) + +# +## developer phony declarations and targets +# +else + +all: $(filesets) +all.q: $(filesets.q) +install: $(filesets.install) +install.q: $(filesets.install.q) + +# *.clean leaves only what is distributed +clean: $(filesets.clean) + +# *.dev.clean leaves only what cannot be regenerated +dev.clean: $(filesets.dev.clean) license-dependent-files.clean bundle-bib.clean + +# Not all .aux files are removed by X.clean. +$(packages.dev.clean) \ +$(classes.dev.clean): %.dev.clean: %.clean + $(RM) $*.{dvi,tex,ins,sty,cls,aux} +$(bibstyles.dev.clean): %-bst.dev.clean: %-bst.clean + $(RM) $*-bst.{ver,dvi,tex,ins,aux} $*.bst + +# NOTE Hmm, doesn't work as intended, because once dev.clean is made, it +# assumes it doesn't have to remake clean (if you put clean before/after +# ctan).... I don't think this should be true for PHONY targets. Anyway, may +# want to do "make clean" after "make fresh". + +# hmm, all.q is not made by all? ctan is not made by either? + +fresh: dev.clean all.q ctan + +# FIX: also should remove the directories and their parents too, but only if +# they're empty. +install.clean: + $(RM) -r $(addprefix $(BIBDIR)/, $(bibstyles.bst)) \ + $(addprefix $(MACRODIR)/, \ + $(packages.sty) $(classes.cls) \ + $(configs.cfg) \ + $(stos.sto) $(clos.clo)) \ + $(addprefix $(SRCDIR)/, \ + $(dist-extra-files) \ + $(filesets.tex) $(filesets.ins) \ + $(bibstyles.ver)) \ + $(addprefix $(MDVIDIR)/, $(filesets.dvi)) \ + $(addprefix $(BDVIDIR)/, $(bibstyles.dvi)) + +# +## developer file targets +# + +# this handles adding this dependency for all the rules in this section: +$(parts) $(driver) $(extractor) \ +$(filesets.t1) $(filesets.t2) $(filesets.t3): $(makefiles) + +$(packages.sty): %.sty: %.t1 %.t2 %.t3 $(parts) + @echo "Building $@." + $(CAT) $(part-1) $*.t1 $(part-2) $*.t2 $(part-3) $*.t3 \ + | $(transform-sty) > $@ + +$(classes.cls): %.cls: %.t1 %.t2 %.t3 $(parts) + @echo "Building $@." + $(CAT) $(part-1) $*.t1 $(part-2) $*.t2 $(part-3) $*.t3 \ + | $(transform-cls) > $@ + +# We want to get version control information and a command into the -bst.ver +# file. We read the .ver file specially when we build the -bst.dvi file. +# +# We quote curly braces in the awk regexps in case we are using gawk and +# $POSIXLY_CORRECT is set in the environment so that we can't really do +# anything about it. It is this way when running subshells from Emacs +# sometimes, in my experience. +# +# FIX: not sure we need transform-bst here. +$(bibstyles.ver): %-bst.ver: %.bst %-bst.t1 %-bst.t2 %-bst.t3 $(parts) + @echo "Building $@." + $(CAT) $(part-1) $*-bst.t1 $(part-2) $*-bst.t2 $(part-3) $*-bst.t3 \ + | $(transform-bst) \ + | $(AWK) '/^ %% \\def\\fileinfo/,/^ %% \\def\\docdate/ \ + { $$1 = ""; print } \ + { next }' \ + > $@ + $(CAT) $(part-3) \ + | $(AWK) '/^\\makeatletter% A special comment to help create bst files/, \ + /^\}% A special comment to help create bst files/ \ + { print } \ + { next }' \ + >> $@ + +$(bibstyles.bst): %.bst: %-bst.t1 %-bst.t2 %-bst.t3 $(parts) + @echo "Building $@." + $(CAT) $(part-1) $*-bst.t1 $(part-2) $*-bst.t2 $(part-3) $*-bst.t3 \ + | $(transform-bst) \ + | $(AWK) '/^% \\begin\{macro\}\{\\fileinfo\}/, \ + /^% \\end\{macrocode\}\^\^A special comment to help create bst files/ \ + { next } \ + { print }' \ + > $@ + +# bundle-bib may be undefined. If bundle-bib is defined, master-bib.bib must +# be defined and the file it names must exist. +ifneq ($(bundle-bib),) +$(bundle-bib.bib): $(master-bib.bib) $(makefiles) + $(SYMLINK) $(master-bib.bib) $@ +endif + +# t is for temporary + +# We quote curly braces in the awk regexps in case we are using gawk and +# $POSIXLY_CORRECT is set in the environment so that we can't really do +# anything about it. It is this way when running subshells from Emacs +# sometimes, in my experience. +$(filesets.t1): %.t1: %.dtx + @echo "Building $@." + $(AWK) '/^% \\CheckSum\{[0-9]+\}/,/^% \\part\{Implementation\}/' $*.dtx > $@ + +$(filesets.t2): %.t2: %.dtx + @echo "Building $@." + $(SED) -n '/^\\def\\fileinfo{.*}/,/^\\def\\docdate{.*}/p' $*.dtx > $@ + +$(filesets.t3): %.t3: %.dtx + @echo "Building $@." + $(AWK) '/^% \\part\{Implementation\}/,/^% \\Finale/ \ + {if ($$0 !~ /^% \\part\{Implementation\}/) print}' $*.dtx \ + | $(SED) '/^\\def\\fileinfo{.*}/,/^\\def\\docdate{.*}/d' > $@ + +# transform-* defs require $* to be the root name +$(packages.tex): %.tex: $(driver) + @echo "Building $@." + $(transform-sty) $(driver) > $@ + +$(classes.tex): %.tex: $(driver) + @echo "Building $@." + $(transform-cls) $(driver) > $@ + +$(bibstyles.tex): %-bst.tex: $(driver) + @echo "Building $@." + $(transform-bst) $(driver) > $@ + +$(packages.ins): %.ins: $(extractor) + @echo "Building $@." + $(transform-sty) $(extractor) > $@ + +$(classes.ins): %.ins: $(extractor) + @echo "Building $@." + $(transform-cls) $(extractor) > $@ + +$(bibstyles.ins): %-bst.ins: $(extractor) + @echo "Building $@." + $(transform-bst) $(extractor) > $@ + +Frankenfile: $(make-dir)/Frankenfile + $(SYMLINK) $< $@ + +# +## distribution archive: variables, definitions, phony and file targets +# + +# NOTE this is all still within the developer-only conditional. + +stable-files = $(stable-filesets.dvi) \ + $(stable-filesets.ins) \ + $(stable-filesets.tex) \ + $(stable-packages.sty) \ + $(stable-stos.sto) \ + $(stable-classes.cls) \ + $(stable-clos.clo) \ + $(stable-bibstyles.bst) \ + $(stable-bibstyles.ver) \ + $(stable-configs.cfg) \ + $(stable-extra-files) +beta-files = $(beta-filesets.dvi) \ + $(beta-filesets.ins) \ + $(beta-filesets.tex) \ + $(beta-packages.sty) \ + $(beta-stos.sto) \ + $(beta-classes.cls) \ + $(beta-clos.clo) \ + $(beta-bibstyles.bst) \ + $(beta-bibstyles.ver) \ + $(beta-configs.cfg) \ + $(beta-extra-files) + +# where we copy distributed files in order to archive them +stable-archive-dir = $(distribution-dir)/$(stable-dir) +beta-archive-dir = $(distribution-dir)/$(beta-dir) + +stable-archive-files = $(addprefix $(stable-archive-dir)/, $(stable-files)) +beta-archive-files = $(addprefix $(beta-archive-dir)/, $(beta-files)) +dist-archive-files = $(stable-archive-files) $(beta-archive-files) + +.PHONY: ctan ctan.clean \ + distrib distrib.clean \ + all.clean + +ctan.clean distrib.clean: + $(RM) -r $(distribution-dir) + +all.clean: dev.clean distrib.clean install.clean + +# clean before building +ctan distrib: distrib.clean $(stable-archive-dir) \ + $(beta-archive-dir) $(dist-archive-files) + $(TAR) -C $(distribution-dir) -c -z \ + -f $(distribution-dir)/$(bundle-filename).tgz \ + $(filter-out $(bundle-filename).tgz, \ + $(shell $(LS) $(distribution-dir))) + +$(stable-archive-dir) $(beta-archive-dir): $(makefiles) + $(MKDIRP) $@ + +# target is all stable-archive-files except for the bundle-bib.bib if it exists +$(filter-out $(stable-archive-dir)/$(bundle-bib.bib), \ + $(stable-archive-files)): $(stable-archive-dir)/%: \ + % $(stable-archive-dir) + @$(install-plain) $< $(stable-archive-dir) + +# rule for the bundle-bib.bib if it exists. +ifneq ($(bundle-bib),) +$(dist-filesets.aux): %.aux: %.dvi + +# bibtool -v verbose; -q suppress warnings (huge number of them); +# -d don't include double entries +# -s sort (needed to identify double entries) +# +# We want to keep the modification time the same as the master-bib so that the +# end user's Make process won't think it needs to remake all the dvi files. +# +# FIX: bibtool is having a problem getting the right crossreffed entries in +# when dealing with the master-bib. It did OK on a very short test bib I made. +# +# So we do a very patchy workaround: +# - first make the target normally; it will lack crossreffed entries. +# - combine the relevant .aux files into frankentemp.aux and change the +# \bibdata command to use the bundle-bib.dist database. +# - frankentemp.aux is nonempty or we wouldn't be doing this rule. +# - we process frankentemp.aux with bibtex and look at the output. +# - extract lines that say we've got a missing crossref. +# - remove the difficult apostrophe's from those lines, and save in +# frankentemp.1. +# - frankentemp.1 will be empty if we have no missing crossrefs. if it's +# empty, we're OK, so stop. +# - take the error lines about missing crossrefs and extract just the key. +# - frob each key K into the string "-X \'^K$\'" (without the enclosing +# double quotes). +# - combine all lines into one line. now we have a series of one or more +# strings just described all concatenated on one line. save this into +# frankentemp.2. While combining them, the backslashes before the single +# quotes got used up. +# - feed this fabricated string to bibtool. bibtool will extract each key's +# entry from bundle-bib.bib along with relevant string definitions, and put +# it on stdout. +# - append the output to bundle-bib.dist, making it complete. +# - clean up temp files. + +# FIX: we've got potential problems if any keys have regexp chars in them. + +.PHONY: bundle-bib.clean +bundle-bib.clean: + $(RM) $(bundle-bib.bib) $(bundle-bib.bib).dist + +$(bundle-bib.bib).dist: $(bundle-bib.bib) $(dist-filesets-cits.aux) + $(BIBTOOL) -q -d -s $(addprefix -x , $(dist-filesets-cits.aux)) -o $@ + $(CAT) $(dist-filesets-cits.aux) \ + | $(SED) 's/^\\bibdata{$(bundle-bib)}/\\bibdata{$(bundle-bib)\.bib\.dist}/' \ + > $(TMPDIR)/frankentemp.aux + $(BIBTEX) $(TMPDIR)/frankentemp \ + | $(GREP) '^refers to entry ".*", which doesn'\''t exist$$' \ + | $(SED) -e s/\'//g \ + > $(TMPDIR)/frankentemp.1; \ + if [ -s $(TMPDIR)/frankentemp.1 ]; then \ + $(CAT) $(TMPDIR)/frankentemp.1 \ + | $(XARGS) -i $(EXPR) {} : 'refers to entry \(.*\), which doesn' \ + | $(XARGS) -i echo -X \\\'^'{}'\$$\\\' \ + | $(XARGS) \ + > $(TMPDIR)/frankentemp.2; \ + eval $$(echo $(BIBTOOL) -q $$($(CAT) $(TMPDIR)/frankentemp.2) \ + $<) \ + >> $@; \ + fi; \ + $(RM) $(TMPDIR)/frankentemp.{aux,1,2,bbl,blg} + $(TOUCH) -r $(master-bib.bib) $@ + +$(stable-archive-dir)/$(bundle-bib.bib): $(bundle-bib.bib).dist \ + $(stable-archive-dir) + @$(install-plain) $< $(stable-archive-dir)/$(bundle-bib.bib) +endif + +$(beta-archive-files): $(beta-archive-dir)/%: % $(beta-archive-dir) + @$(install-plain) $< $(beta-archive-dir) + +endif # developer-only + +# +## Emacs file variables +# +# Local Variables: +# mode: makefile +# eval: (outline-minor-mode 1) +# outline-regexp: "##+" +# End: diff --git a/Master/texmf-dist/doc/latex/frankenstein/INSTALL b/Master/texmf-dist/doc/latex/frankenstein/INSTALL new file mode 100644 index 00000000000..b1eec22fc70 --- /dev/null +++ b/Master/texmf-dist/doc/latex/frankenstein/INSTALL @@ -0,0 +1,321 @@ + + INSTRUCTIONS + for + BUILDING AND INSTALLING + FRANKENSTEIN + +---------------------------------------------------------------------- + CONTENTS + + NOTE + QUICK AND DIRTY + THE BEST WAY: USING THE MAKEFILE + NON-FRANKENSTEIN PACKAGES + DOING IT BY HAND + basics + configuration files + generating quick versions + regenerating DVI documentation + fileset dependencies + FILE LOCATIONS + TDS locations + CTAN locations + MAKEFILE TECHNICAL NOTES + Frankenbundle + TERMINOLOGY + AUTHOR + +---------------------------------------------------------------------- + NOTE + +If you are reading this file in a TeX installation, you probably don't +need to install anything at all. Simply try using one of the +Frankenstein packages in your document and see if it works. If LaTeX +can't find the package, you need to install it, so read on. + +Since you're reading on, I'll assume from here on that you are reading +this file in a directory with other Frankenstein files as you found +them on CTAN. + +---------------------------------------------------------------------- + QUICK AND DIRTY + +You can simply put this entire directory (or just the .sty files) +somewhere in LaTeX's search path for input files, e.g., +TDS:/texmf/tex/latex/frankenstein. You will then be able to use all +the Frankenstein packages, with the following qualifications: + + 1. The documentation won't be in the standard place. + 2. To use the achicago bibstyle, you must also put the file + "achicago.bst" where BibTeX can find it. + 3. With a web2c-based installation you _may_ also need to take the + extra step of rebuilding your ls-R databases with a command like + "texconfig rehash". + 4. To use the abbrevs, achicago, blkcntrl, and dialogue packages, + you must have the relsize package on your system; to use the + compsci package, you must have the the relsize, url and verbatim + packages on your system. For how to obtain and install these + non-Frankenstein packages on your system, see the section on + non-Frankenstein packages below. + +---------------------------------------------------------------------- + THE BEST WAY: + USING THE MAKEFILE + +If you have the GNU Make program on your system, using the Makefile is +the easiest way to do everything described in this document and more. +Simply run "make" and you will see a help message describing the +things you can do. You probably won't need to read anything else in +this file except the section NON-FRANKENSTEIN PACKAGES below. + +To use the Makefile on the unsupported filesets, you must do two +things. + + 1. Copy all the files in the "unsupported" subdirectory into its + parent directory ("frankenstein"). + + 2. Set the variable USE_UNSUP to something nonempty either by: + a. uncommenting the line in the file Makefile, or + b. setting it in your environment, or + c. set the variable on the Make command line, e.g., "make + USE_UNSUP=t all". + +---------------------------------------------------------------------- + NON-FRANKENSTEIN PACKAGES + +Certain Frankenstein packages depend on packages that are not part of +Frankenstein or the official LaTeX distribution: + + abbrevs, + achicago, + blkcntrl, + and dialogue depend on "relsize.sty". + compsci depends on "relsize.sty", "url.sty", and "verbatim.sty". + +If you wish to use one of those four Frankenstein packages, I suggest +you follow these steps: + +First check if you already have them on your system: + + If you have a TeX installation based on web2c (e.g., UN*X + installations derived from teTeX or TeXLive), you can type: + + % kpsewhich X.sty + + (where X is relsize, url, or verbatim) and if you get a response, + you already have that file on your system. If you don't have web2c + but do have a TDS-compliant texmf tree, see the section FILE + LOCATIONS below to see where to look. If you have neither web2c + nor a TDS-compliant texmf tree, you can simply try to use the + Frankenstein package, and if LaTeX tells you one of the + non-Frankenstein packages is missing, well then you have to install + it. + +If you don't already have the files you need, download them from CTAN. + + The locations are given in the section FILE LOCATIONS below. + + To install relsize.sty and url.sty, simply put them where LaTeX can + find them. + + To install verbatim, I recommend you install the entire "tools" + distribution, following the directions in the file readme.txt. + +---------------------------------------------------------------------- + DOING IT BY HAND + + basics + +Each package fileset X in the Frankenstein bundle contains either four +or five files: + + X.sty the package macros + X.dvi package documentation + X.tex may be used to regenerate X.dvi from X.sty + X.ins may be used to generate a fast-loading version of X.sty + +A standard configuration file is included in the abbrevs, compsci, +slemph, and titles package filesets: + + X.cfg package configuration file (not in all packages) + +The file X.sty may be used as it is; simply put it where LaTeX can +find it. TDS locations are given below. To use the package, put +\usepackage{X} in the preamble of your LaTeX source document. If a +configuration file exists for the package, you must also put it where +LaTeX can find it. + +The following files compose the achicago bibstyle fileset: + + achicago.bst the bibstyle macros + achicago-bst.dvi bibstyle documentation + achicago-bst.tex may be used to regenerate achicago-bst.dvi from + achicago.bst and achicago-bst.ver + achicago-bst.ins may be used to generate a fast-loading version + of achicago.bst (see below) + achicago-bst.ver a file needed by achicago-bst.tex + +The file achicago.bst may be used as it is; simply put it where BibTeX +can find it. To use the bibstyle, you must load the achicago PACKAGE +by putting \usepackage{achicago} in the preamble of your LaTeX source +document. + + + configuration files + +If you want to alter a configuration file, make a copy of it, put it +the copy in the LaTeX search path prior to the distributed +configuration file, and alter the copy. + + + generating fast-loading or "quick" versions + +Running TeX or LaTeX on X.ins will produce a file called either X.stq +(for packages) or X.bsq (for bibstyles). For packages X, the file +X.sty must be in the LaTeX search path (usually the current +directory); for bibstyles Y-bst, the files Y.bst and Y-bst.ver must be +in the same directory. The new file is functionally identical to the +X.sty or X.bst file, but is stripped of comments and will therefore be +processed faster by TeX or BibTeX. I am unable to tell you how much +faster! To use X.stq (X.bsq), you must rename it to X.sty (X.bst) and +put it where LaTeX (BibTeX) can find it. DO NOT DELETE THE ORIGINAL +X.sty (X.bst) because it contains the documentation which X.tex +(X-bst.tex) transforms into the file X.dvi (X-bst.dvi). + + + regenerating DVI documentation + +To regenerate the file X.dvi, run LaTeX on X.tex. For packages X, the +file X.sty must be in the LaTeX search path as well as X.cfg if it +exists; for bibstyles Y-bst, the files Y.bst and Y-bst.ver must be in +the LaTeX search path. + +Generating documentation requires the following Frankenstein packages: + + abbrevs.sty, blkcntrl.sty, compsci.sty, lips.sty, moredefs.sty, + slemph.sty, titles.sty, and achicago.sty, + +and the achicago.bst bibstyle. + +You also need all 3 non-Frankenstein packages (see the section +NON-FRANKENSTEIN PACKAGES above). + +Documentation for dialogue furthermore requires the attrib package. +Documentation for attrib furthermore requires the dialogue package. +Documentation for achicago-bst furthermore requires the longtable package, + which is in the "tools" bundle with "verbatim" (see the section + NON-FRANKENSTEIN PACKAGES above). + + + fileset dependencies + +If you install the macro files of one fileset, you should also install +all the macro files of the filesets it depends on: + + Fileset Depends on (directly or indirectly) + .................................................................... + abbrevs moredefs,relsize,slemph + achicago blkcntrl,moredefs,relsize,slemph,titles + achicago-bst achicago,blkcntrl,moredefs,relsize,slemph,titles + attrib moredefs + blkcntrl moredefs,relsize + compsci abbrevs,alltt,lips,moredefs,relsize,slemph, + titles,url,verbatim + dialogue blkcntrl,moredefs,relsize + lips + moredefs + slemph + titles moredefs,slemph + +---------------------------------------------------------------------- + FILE LOCATIONS + + TDS locations + +Relevant non-Frankenstein files: + + File Location: TDS:/texmf/... + ........................................................... + url.sty ...tex/latex/misc/url.sty + relsize.sty ...tex/latex/misc/relsize.sty + longtable.dtx ...source/latex/tools/longtable.dtx + verbatim.dtx ...source/latex/tools/verbatim.dtx + + longtable.sty ...tex/latex/tools/longtable.sty + longtable.dvi ...doc/latex/tools/longtable.dvi + verbatim.sty ...tex/latex/tools/verbatim.sty + verbatim.dvi ...doc/latex/tools/verbatim.dvi + +Frankenstein files: + + File Location: TDS:/texmf/... + ........................................................... + achicago.bst .../bibtex/bst/achicago + achicago-bst.dvi .../doc/bibtex + *.cfg *.sty .../tex/latex/frankenstein + *.dvi .../doc/latex/frankenstein + .../source/latex/frankenstein + + CTAN locations + +Frankenstein: + + CTAN:/macros/latex/contrib/supported/frankenstein/* + +Relevant non-Frankenstein packages: + + Package Location: CTAN:/macros/latex/... + ........................................................... + relsize ...contrib/other/misc/relsize.sty + url ...contrib/other/misc/url.sty + verbatim ...packages/tools/* + longtable ...packages/tools/* + +The LaTeX base distribution: + + CTAN:/macros/latex/base/* + +---------------------------------------------------------------------- + MAKEFILE TECHNICAL NOTES + +I have tested the Make system with Debian GNU/Linux and Make v3.77. +If certain commands or options need to be altered to work with your +setup, check the top of Frankenfile where a lot of commands are +abstracted in variables. It's best to reset the variables at the top +of Makefile, on the Make command line, or in your environment rather +than changing Frankenfile. Please write me describing any problems +you encounter. GNU Make is available at ftp://gnu.mit.edu/pub/gnu/. + + + Frankenbundle + +The Frankenstein Makefiles also make a great way for you to maintain +and distribute your own LaTeX packages and classes and BibTeX +bibstyles. I distribute them with some documentation and necessary +additional files as the Frankenbundle suite on +CTAN:/support/frankenbundle. + +---------------------------------------------------------------------- + TERMINOLOGY + + fileset: A group of files related to a single LaTeX package, LaTeX + class, or BibTeX bibliography style and any accompanying + option or configuration files. The files in a package or + class fileset have the same root name but different + filename extensions. In bibstyle filesets, some root names + differ by a "-bst" suffix. + + CTAN: Comprehensive TeX Archive Network: a system of TeX-related + file archives available via FTP (see + ftp://ctan.tug.org/tex-archive/CTAN.sites) and often + reproduced on CDROMs. + + TDS: TeX Directory Structure: a recommended directory structure + for TeX installations. See + ftp://ctan.tug.org/tex-archive/tds. + +---------------------------------------------------------------------- + AUTHOR + + Matt Swift + diff --git a/Master/texmf-dist/doc/latex/frankenstein/README b/Master/texmf-dist/doc/latex/frankenstein/README new file mode 100644 index 00000000000..313bcb3afa2 --- /dev/null +++ b/Master/texmf-dist/doc/latex/frankenstein/README @@ -0,0 +1,243 @@ + + FRANKENSTEIN + + A Collection of Macros for LaTeX and BibTeX + + available at + + CTAN:/macros/latex/contrib/supported/frankenstein/* + +------------------------------------------------------------------------ + CONTENTS + + OVERVIEW + DOCUMENTATION + PACKAGE DESCRIPTIONS + abbrevs + compsci + dialogue + achicago + titles + attrib + lips + moredefs + slemph + blkcntrl + NOTES + configuration files + unsupported packages + DISTRIBUTION CONDITIONS + TERMINOLOGY + AUTHOR + +------------------------------------------------------------------------ + OVERVIEW + + "Frankenstein" is the whimsical name for a collection of 14 LaTeX + packages and a BibTeX bibliography style that I have written. + Frankenstein helps you do a variety of things with LaTeX. You can + use just a part of Frankenstein if you want, or you can use all the + parts together. You should download this whole directory, however, + to make sure you will have all the parts you might need. To use + certain packages, you will also need the non-Frankenstein packages + "relsize.sty", "url.sty", and/or "verbatim.sty". See the file + INSTALL for full details. + + The package descriptions below will tell you briefly what they can + help you do. Happy TeXing! + +------------------------------------------------------------------------ + DOCUMENTATION + + This file contains general information on the Frankenstein bundle + and brief descriptions of its packages and bibstyle. + + Installation instructions are in the file INSTALL. + + Full documentation of each LaTeX package X is in the file X.dvi: + CTAN:/macros/latex/contrib/supported/frankenstein/X.dvi + TDS:/texmf/doc/latex/frankenstein/X.dvi + + Full documentation of the achicago BibTeX bibliography style is in + the file achicago-bst.dvi: + CTAN:/macros/latex/contrib/supported/frankenstein/achicago-bst.dvi + TDS:/texmf/doc/bibtex/achicago-bst.dvi + +------------------------------------------------------------------------ + PACKAGE DESCRIPTIONS + +------------------------------------------------------------------------ + abbrevs + abbreviation macros + (Frankenstein's briefs) + + "Abbreviation macros" expand to defined text and insert following + space intelligently, based on context. They can also expand to one + thing the first time they are used and another thing on subsequent + invocations. Thus they can be abbreviations in two senses, in the + source and in the document. Useful applications include the + abstraction of textual elements such as names without fussing over + spacing and the automatic expansion of abbreviations and acronyms at + their first use. The initial and subsequent expansions of an + abbreviation macro are available at any time via explicit commands. + Abbreviation macros are grouped into categories; there are hooks + applicable to each category. Categories can be reset so that + subsequent abbreviation macros in that category behave as if used + for the first time again. + + A generic facility is also provided for suffixes like 1900 B.C. and + 6:00 P.M., which correctly handles following periods. + +------------------------------------------------------------------------ + compsci + macros for writing about macros + (Frankenstein's conscience) + + Compsci is useful whenever writing about programming, but especially + when writing about TeX and especially when used as a supplement to + the ltxdoc class to document LaTeX macros in a literate programming + style with .dtx files. + +------------------------------------------------------------------------ + dialogue + dialogue environment + (Frankenstein's mouth) + + The dialogue environment is for citing short passages of scripted + dialogue. It is not for typsetting a long script. + +------------------------------------------------------------------------ + achicago + Chicago Manual A-style (but author-date) citations + (Frankenstein's references) + + A bibliography style based on _The Chicago Manual of Style_. The + style is mostly style A, but borrows the author-date reference + system from style B. Requires accompanying BibTeX bibliography + style "achicago". + +------------------------------------------------------------------------ + titles + titling macros + (Frankenstein's pedigree) + + Macros that typeset the titles of books, journals, etc. and handle + following spacing and punctuation intelligently, based on context. + Useful for bibliographic databases. Also includes other markup like + \word, \defn, \phrase, etc. + +------------------------------------------------------------------------ + attrib + attribution of block elements + (Frankenstein's hat) + + \attrib attributes block elements, for example when citing a + reference after a block quotation. + +------------------------------------------------------------------------ + lips + text ellipses + (Frankenstein's lips) + + The \lips command generates text ellipses that are closer to what + _The Chicago Manual of Style_ suggests than what \dots produces. It + does the right thing in most circumstances, and so is easy to use. + +------------------------------------------------------------------------ + moredefs + more defining commands + (Frankenstein's brain) + + A collection of defining, expansion, and debugging commands for + programming in LaTeX and writing LaTeX packages and classes. + +------------------------------------------------------------------------ + newclude + a new system for including files + (Frankenstein's backbone) + + Provides a backwards-compatible reimplementation of \include and + \includeonly. The principal new features are: (1) the restriction + that \clearpage's must surround an included file is removed, (2) the + restriction that \include's cannot be nested is removed, and (3) the + provision of hooks executed before and after the contents of an + included file. Newclude accomplishes the first two by using a + single .aux file instead of many. Newclude also provides the + experimental functionality of the former package includex, which + allows you to include partial contents of independent LaTeX files + that can also be processed on their own (that is, files that contain + \documentclass, \begin{document}, etc.). + +------------------------------------------------------------------------ + slemph + slanted emphasis + (Frankenstein's gait) + + Defines \itswitch, \slswitch, \textitswitch, and \textslswitch, + which switch between slanted or italic type and upright type. Can + be used to represent emphasis with slanted type. + +------------------------------------------------------------------------ + blkcntrl + block element hooks + + Inserts hooks into certain block elements and footnotes. Also + provides a command to set block quotations one size smaller than the + main text. + +------------------------------------------------------------------------ + NOTES + + configuration files + + A standard configuration file .cfg is included in the + abbrevs, compsci, slemph, and titles package filesets. If you want + to alter a configuration file, make a copy of it, put it the copy in + the LaTeX search path prior to the distributed configuration file, + and alter the copy. + + + unsupported packages + + Several additional unsupported Frankenstein package filesets are in + the subdirectory: + + CTAN:/macros/latex/contrib/supported/frankenstein/unsupported + + See the file README-unsupported in that directory for further + information. + +------------------------------------------------------------------------ + DISTRIBUTION CONDITIONS + + All Frankenstein filesets are copyrighted by Matthew Swift and + released under the conditions of the GNU General Public License + contained in the file COPYING. + + I am willing to specially license this code; please simply contact + me with your proposal. + +------------------------------------------------------------------------ + TERMINOLOGY + + fileset: A group of files related to a single LaTeX package, LaTeX + class, or BibTeX bibliography style and any accompanying + option or configuration files. The files in a package or + class fileset have the same root name but different + filename extensions. In bibstyle filesets, some root names + differ by a "-bst" suffix. + + CTAN: Comprehensive TeX Archive Network: a system of TeX-related + file archives available via FTP (see + ftp://ctan.tug.org/tex-archive/CTAN.sites) and often + reproduced on CDROMs. + + TDS: TeX Directory Structure: a recommended directory structure + for TeX installations. See + ftp://ctan.tug.org/tex-archive/tds. + +------------------------------------------------------------------------ + AUTHOR + + Matt Swift + diff --git a/Master/texmf-dist/doc/latex/frankenstein/abbrevs.pdf b/Master/texmf-dist/doc/latex/frankenstein/abbrevs.pdf new file mode 100755 index 00000000000..5c04d864a9e Binary files /dev/null and b/Master/texmf-dist/doc/latex/frankenstein/abbrevs.pdf differ diff --git a/Master/texmf-dist/doc/latex/frankenstein/abbrevs.tex b/Master/texmf-dist/doc/latex/frankenstein/abbrevs.tex new file mode 100644 index 00000000000..1551e437725 --- /dev/null +++ b/Master/texmf-dist/doc/latex/frankenstein/abbrevs.tex @@ -0,0 +1,67 @@ +% abbrevs.tex -- documentation for the abbrevs LaTeX package. +% +% This program is part of the Frankenstein bundle for LaTeX2e. +% +% Copyright (C) 1995-2001 Matt Swift +% +% This program is free software; you may redistribute it and/or +% modify it under the conditions of the LaTeX Project Public +% License, either version 1.2 or (at your option) any later +% version. The latest version of this license is in +% http://www.latex-project.org/lppl.txt, and version 1.2 or later +% is part of all distributions of LaTeX version 1999/12/01 or +% later. +% +% 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 +% LaTeX Project Public License for more details. +% +\documentclass{ltxdoc} +\makeatletter +\def\part {% + \clearpage + \@afterindentfalse + \secdef\@part\@spart +} +\def\StripV #1{\E@cdr #1\@nil} +\makeatother +\usepackage{attrib,compsci} +\newbook\manual {Chicago\nocite{chicago:14} Manual of Style}[Chicago Manual] +\newbook\MLAman {The\nocite{mlaman} MLA Style Manual and Guide to Scholarly Publishing} + [The MLA Style Manual] +\newtheorem{lessoninternal}{Lesson} +\newenvironment{lesson} {% + \let\AttribInit\sffamily + \let\PreTrib\textsection + \let\PostTrib\ShortEmpty + \lessoninternal + } {% + \endlessoninternal + } +\newcommand\manualref [1] {\textsf{\S #1}} +\ProcessDTXFile{abbrevs.sty} +\newlet\MaybeABib\relax +\IfCitations { + \def\MaybeABib {% + \newpage + \bibliographystyle{achicago}% + \bibliography{frankenstein}% + } + \SaveDoXVarS + \usepackage{achicago} + \RestoreDoXVarS +} +\CodelineIndex +\EnableCrossrefs +\begin{document} +\date{Version: \StripV\fileversion \qquad Date: \filedate\\ + \relsize{-2}Documentation revision: \docdate} +\author{Matt Swift \email{swift@alum.mit.edu}} +\title{The \textsf{abbrevs} LaTeX package \\\smaller \fileinfo} +\maketitle +\DocInput{abbrevs.sty} +\MaybeABib +\newpage +\PrintIndex +\end{document} diff --git a/Master/texmf-dist/doc/latex/frankenstein/achicago-bst.pdf b/Master/texmf-dist/doc/latex/frankenstein/achicago-bst.pdf new file mode 100644 index 00000000000..8de77e1dd3d Binary files /dev/null and b/Master/texmf-dist/doc/latex/frankenstein/achicago-bst.pdf differ diff --git a/Master/texmf-dist/doc/latex/frankenstein/achicago-bst.tex b/Master/texmf-dist/doc/latex/frankenstein/achicago-bst.tex new file mode 100644 index 00000000000..bd0c55faa64 --- /dev/null +++ b/Master/texmf-dist/doc/latex/frankenstein/achicago-bst.tex @@ -0,0 +1,67 @@ +% achicago-bst.tex -- documentation for the achicago BibTeX style. +% +% This program is part of the Frankenstein bundle for LaTeX2e. +% +% Copyright (C) 1995-2001 Matt Swift +% +% This program is free software; you may redistribute it and/or +% modify it under the conditions of the LaTeX Project Public +% License, either version 1.2 or (at your option) any later +% version. The latest version of this license is in +% http://www.latex-project.org/lppl.txt, and version 1.2 or later +% is part of all distributions of LaTeX version 1999/12/01 or +% later. +% +% 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 +% LaTeX Project Public License for more details. +% +\documentclass{ltxdoc} +\makeatletter +\def\part {% + \clearpage + \@afterindentfalse + \secdef\@part\@spart +} +\def\StripV #1{\E@cdr #1\@nil} +\makeatother +\usepackage{attrib,compsci} +\newbook\manual {Chicago\nocite{chicago:14} Manual of Style}[Chicago Manual] +\newbook\MLAman {The\nocite{mlaman} MLA Style Manual and Guide to Scholarly Publishing} + [The MLA Style Manual] +\newtheorem{lessoninternal}{Lesson} +\newenvironment{lesson} {% + \let\AttribInit\sffamily + \let\PreTrib\textsection + \let\PostTrib\ShortEmpty + \lessoninternal + } {% + \endlessoninternal + } +\newcommand\manualref [1] {\textsf{\S #1}} +\ProcessDTXFile{achicago-bst.ver} +\newlet\MaybeABib\relax +\IfCitations { + \def\MaybeABib {% + \newpage + \bibliographystyle{achicago}% + \bibliography{frankenstein}% + } + \SaveDoXVarS + \usepackage{achicago} + \RestoreDoXVarS +} +\CodelineIndex +\EnableCrossrefs +\begin{document} +\date{Version: \StripV\fileversion \qquad Date: \filedate\\ + \relsize{-2}Documentation revision: \docdate} +\author{Matt Swift \email{swift@alum.mit.edu}} +\title{The \textsf{achicago} BibTeX style \\\smaller \fileinfo} +\maketitle +\DocInput{achicago.bst} +\MaybeABib +\newpage +\PrintIndex +\end{document} diff --git a/Master/texmf-dist/doc/latex/frankenstein/achicago-bst.ver b/Master/texmf-dist/doc/latex/frankenstein/achicago-bst.ver new file mode 100644 index 00000000000..239544360f2 --- /dev/null +++ b/Master/texmf-dist/doc/latex/frankenstein/achicago-bst.ver @@ -0,0 +1,18 @@ + \def\fileinfo{A Chicago Manual BibTeX style} + \def\DoXPackageS {longtable} + \def\initelyHavECitationS {} + \def\fileversion{v1} + \def\filedate{2001/08/31} + \def\docdate{2001/08/31} +\makeatletter% A special comment to help create bst files. Don't change! +\@ifundefined{JusTLoaDInformatioN} {% + }{% ELSE (we know the compsci package is already loaded, too) + \UndefineCS\JusTLoaDInformatioN + \SaveDoXVarS + \eExpand\csname DoXPackageS\endcsname\In {%use \csname in case it's undefined + \usepackage{#1}% + }% + \RestoreDoXVarS + \makeatother + \endinput +}% A special comment to help create bst files. Don't change! diff --git a/Master/texmf-dist/doc/latex/frankenstein/achicago.bsq b/Master/texmf-dist/doc/latex/frankenstein/achicago.bsq new file mode 100644 index 00000000000..eb6257966d0 --- /dev/null +++ b/Master/texmf-dist/doc/latex/frankenstein/achicago.bsq @@ -0,0 +1,2001 @@ +%% +%% This is file `achicago.bsq', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% achicago.bst +%% +%% This program is part of the Frankenstein bundle for LaTeX. +%% +%% Copyright (C) 1995-2001 Matthew Swift +%% +%% This file may have one of TWO names, either +%% achicago.bst or achicago.bsq. This +%% BibTeX style will work ONLY if it is called achicago.bst +%% and placed in a proper directory. This file should have been +%% distributed to you with a DIFFERENT file (also) called +%% achicago.bst which functions identically to this one +%% but contains documentation in comments. This file works faster, +%% but the other should be kept because it contains the documentation +%% for this BibTeX style. Files called README and INSTALL should have +%% also been distributed to you with this file; see them for more +%% information. +%% +%% This program is free software; you may redistribute it and/or +%% modify it under the conditions of the LaTeX Project Public +%% License, either version 1.2 or (at your option) any later version. +%% The latest version of this license is in +%% http://www.latex-project.org/lppl.txt, and version 1.2 or later is +%% part of all distributions of LaTeX version 1999/12/01 or later. +%% +%% 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 +%% LaTeX Project Public License for more details. +%% +%% \CharacterTable +%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z +%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z +%% Digits \0\1\2\3\4\5\6\7\8\9 +%% Exclamation \! Double quote \" Hash (number) \# +%% Dollar \$ Percent \% Ampersand \& +%% Acute accent \' Left paren \( Right paren \) +%% Asterisk \* Plus \+ Comma \, +%% Minus \- Point \. Solidus \/ +%% Colon \: Semicolon \; Less than \< +%% Equals \= Greater than \> Question mark \? +%% Commercial at \@ Left bracket \[ Backslash \\ +%% Right bracket \] Circumflex \^ Underscore \_ +%% Grave accent \` Left brace \{ Vertical bar \| +%% Right brace \} Tilde \~} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +%% + + %% A BibTeX bibliography style + %% conforming to the Chicago Manual's A style + %% but with B style author-date citations + %% by Matt Swift + %% + %% \def\fileinfo{A Chicago Manual BibTeX style} + %% \def\DoXPackageS {longtable} + %% \def\initelyHavECitationS {} + %% \def\fileversion{v1} + %% \def\filedate{2001/08/31} + %% \def\docdate{2001/08/31} + %% + +INTEGERS { output.state before.all mid.sentence after.sentence after.block } +INTEGERS { author.ptype editor.ptype organization.ptype key.ptype + emergency.ptype } +INTEGERS { last.year.tag.num } +STRINGS { last.leaditem last.label.and.year following.year.label.tag } +INTEGERS { j nameptr namesleft numnames len } +STRINGS { s t u v w } +ENTRY + { address + annotation + author + bookauthor + booktitle + chapter + edition + editor + faddress + flanguage + fpublisher + ftitle + fyear + howpublished + illustrator + institution + journal + key + month + note + number + oaddress + opublisher + organization + oyear + pages + publisher + school + series + seriesedition + title + translator + type + volume + year + yearcomp + } + { principal-type } + { label + year.label year.label.tag + principal-field + leaditem +} +MACRO {jan} {"January"} +MACRO {feb} {"February"} +MACRO {mar} {"March"} +MACRO {apr} {"April"} +MACRO {may} {"May"} +MACRO {jun} {"June"} +MACRO {jul} {"July"} +MACRO {aug} {"August"} +MACRO {sep} {"September"} +MACRO {oct} {"October"} +MACRO {nov} {"November"} +MACRO {dec} {"December"} +FUNCTION {debugval} +{ ": [" * + swap$ * %$ + "] in " * cite$ * %$ + top$ %$ +} + +FUNCTION {debugmsg} +{ " in " * cite$ * top$ +} +FUNCTION {init.scalars} +{ #0 'before.all := + #1 'mid.sentence := + #2 'after.sentence := + #3 'after.block := + + #0 'author.ptype := + #1 'editor.ptype := + #2 'organization.ptype := + #3 'key.ptype := + #4 'emergency.ptype := +} +FUNCTION {not} +{ { #0 + } + { #1 + } + if$ %$ +} + +FUNCTION {and} +{ 'skip$ %$ + { pop$ %$ + #0 + } + if$ %$ +} + +FUNCTION {or} +{ { pop$ %$ + #1 + } + 'skip$ %$ + if$ %$ +} +FUNCTION {comma} +{ "," +} + +FUNCTION {period} +{ "." +} + +FUNCTION {hyphen} +{ "-" +} + +FUNCTION {colon} +{ ":" +} + +FUNCTION {space} +{ " " +} + +FUNCTION {delimiter.name-part} +{ " " +} + +FUNCTION {delimiter.name} +{ " " +} + +FUNCTION {delimiter.sub-sortkey} +{ " " +} + +FUNCTION {tie} +{ "~" +} + +FUNCTION {etal} +{ " et~al." +} +FUNCTION {unidentified} +{ "HiGHlY*Peco@lIEr" +} +FUNCTION{output.begin} +{ "" + before.all 'output.state := +} +FUNCTION {output.end} +{ write$ %$ +} +FUNCTION {new.block} +{ output.state before.all = + 'skip$ %$ + { after.block 'output.state := + } + if$ %$ +} +FUNCTION {new.sentence} +{ output.state before.all = output.state after.block = or + 'skip$ %$ + { after.sentence 'output.state := + } + if$ %$ +} +FUNCTION {output.internal} +{ 's := % s := string/entry(nonnull) + space * 't := % t := punctuation + space + output.state mid.sentence = + { t * write$ %$ + } + { output.state after.block = + { add.period$ write$ + newline$ %$ + "\newblock " write$ %$ + } + { output.state before.all = + 'write$ %$ + { add.period$ space * write$ + } + if$ %$ + } + if$ %$ + mid.sentence 'output.state := + } + if$ %$ + s +} +FUNCTION {output} +{ swap$ duplicate$ empty$ + { pop$ + pop$ %$ + } + 'output.internal + if$ %$ +} +FUNCTION {output.bibitem} +{ newline$ %$ + "\bibitem[\UnexpandableProtect\SCcite{" write$ %$ + label write$ %$ + "}{" write$ %$ + year.label year.label.tag * write$ %$ + "}]{" write$ %$ + cite$ write$ + "}" write$ %$ + newline$ %$ +} +FUNCTION {field.or.null} +{ duplicate$ empty$ + { pop$ %$ + "" + } + 'skip$ %$ + if$ %$ +} +FUNCTION {italicize} +{ duplicate$ empty$ + { pop$ %$ + "" + } + { "\textitswitch{" swap$ * "}" * %$ + } + if$ %$ +} +FUNCTION {parenthesize} +{ duplicate$ empty$ + { pop$ %$ + "" + } + { "(" swap$ * ")" * %$ + } + if$ %$ +} +FUNCTION {format.clip} +{ #1 entry.max$ substring$ + #1 global.max$ substring$ +} +FUNCTION {format.sortify.clip} +{ % duplicate$ "sinful" debugval %$ + purify$ %$ + "l" change.case$ %$ + format.clip +} +FUNCTION {check.empty} +{ 't := + duplicate$ empty$ + { "empty " t * " in " * cite$ * warning$ + } + 'skip$ %$ + if$ %$ +} +FUNCTION {multipage.p} +{ pages 't := + #0 'j := + % WHILE + { j not + t empty$ not %$ + and + } + { t #1 #1 substring$ %$ + duplicate$ hyphen = %$ + swap$ duplicate$ comma = + swap$ "+" = %$ + or + or + { #1 'j := + } + { t #2 global.max$ substring$ 't := + } + if$ + } + while$ + j +} +FUNCTION {format.n.dashify} +{ 't := + "" + % WHILE + { t empty$ not } %$ + { t #1 #1 substring$ hyphen = %$ + { t #1 #2 substring$ "--" = not %$ + { "--" * + t #2 global.max$ substring$ 't := + } + { % WHILE + { t #1 #1 substring$ hyphen = } %$ +{ hyphen * + t #2 global.max$ substring$ 't := +} + while$ %$ + } + if$ %$ + } + { t #1 #1 substring$ * %$ + t #2 global.max$ substring$ 't := + } + if$ %$ + } + while$ %$ +} +FUNCTION {tie.or.space.connect} +{ duplicate$ text.length$ #5 < + { tie + } + { space + } + if$ + swap$ * * +} +FUNCTION {either.or.check} +{ empty$ + 'pop$ + { "can't use both " swap$ * " fields in " * cite$ * warning$ + } + if$ +} +FUNCTION {start.a.q} +{ #-1 'j := + "" +} +FUNCTION {inc.j} +{ j #1 + 'j := +} + +FUNCTION {key.q} +{ duplicate$ empty$ + { pop$ %$ + key field.or.null + inc.j + } + 'skip$ %$ + if$ %$ +} + +FUNCTION {organization.q} +{ duplicate$ empty$ + { pop$ %$ + organization field.or.null + inc.j + } + 'skip$ %$ + if$ %$ +} + +FUNCTION {editor.q} +{ duplicate$ empty$ + { pop$ %$ + editor field.or.null + inc.j + } + 'skip$ %$ + if$ %$ +} + +FUNCTION {author.q} +{ duplicate$ empty$ + { pop$ %$ + author field.or.null + inc.j + } + 'skip$ %$ + if$ %$ +} + +FUNCTION {blank.q} +{ duplicate$ empty$ + 'inc.j + 'skip$ %$ + if$ %$ +} +FUNCTION {check.q} +{ 't := + duplicate$ empty$ + { pop$ %$ + cite$ format.clip 'u := %$ + "Need " t * " in " * cite$ * "; using: " * u * warning$ + u + inc.j + } + 'skip$ %$ + if$ %$ +} +FUNCTION {format.names.for.label} +{ 's := + s num.names$ 'numnames := %$ + s #1 "{vv~}{ll}" format.name$ %$ + s numnames "{ff}{vv}{ll}{jj}" format.name$ "others" = %$ + numnames #3 > + or + % more than 3 names, or final name is "others" + { etal * + } + { numnames #1 - 'namesleft := + #2 'nameptr := +{ namesleft #0 > } +{ nameptr numnames = + % we're on the final name (and it's not "others") + { numnames #2 > +{ comma * +} +'skip$ %$ + if$ %$ + " and " * s nameptr "{vv~}{ll}" format.name$ * %$ + } + % we're not on the final name (in this case: 2d of 3 names) + { comma * space * + s nameptr "{vv~}{ll}" format.name$ * %$ + } + if$ %$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := +} + while$ %$ + } + if$ %$ +} +FUNCTION {format.names.lastfirst} +{ 's := + s num.names$ 'numnames := % numnames = num.name$(s); + numnames 'namesleft := + #1 'nameptr := % nameptr = 1; + % WHILE + { namesleft #0 > } + { nameptr #1 = + { s nameptr "{vv~}{ll}{, jj}{, ff}" format.name$ %$ + } + { comma * + s nameptr "{ff~}{vv~}{ll}{, jj}" format.name$ 't := %$ + nameptr numnames = + % final name + { t "others" = + { etal * + } + { " and " * t * + } + if$ %$ + } + % names both precede and follow this name + { space * t * + } + if$ %$ + } + if$ %$ + nameptr #1 + 'nameptr := % nameptr += 1; + namesleft #1 - 'namesleft := % namesleft =- 1; + } + while$ %$ +} +FUNCTION {format.names.firstfirst} +{ 's := + s num.names$ 'numnames := % numnames = num.name$(s); + numnames 'namesleft := + #1 'nameptr := % nameptr = 1; + % WHILE + { namesleft #0 > } + { s nameptr "{ff~}{vv~}{ll}{, jj}" format.name$ 't := %$ + nameptr #1 = + 't + { nameptr numnames = + % final name + { numnames #2 > + { comma * + } + 'skip$ %$ + if$ %$ + t "others" = + { etal * + } + { " and " * t * + } + if$ %$ + } + % names both precede and follow this name + { comma * space * t * + } + if$ %$ + } + if$ %$ + nameptr #1 + 'nameptr := % nameptr += 1; + namesleft #1 - 'namesleft := % namesleft =- 1; + } + while$ %$ +} +FUNCTION {make.annotation} +{ annotation empty$ %$ + { "" + } + { "\begin{SCannotation}" + annotation * + "\end{SCannotation}" * + } + if$ %$ +} +FUNCTION {make.edition} +{ edition empty$ %$ + { seriesedition empty$ not series field.or.null title field.or.null = and %$ + { seriesedition + } + { "" + } + if$ %$ + } + { edition + } + if$ %$ +} +FUNCTION {make.year.month} + { year empty$ %$ + { "" + } + { year year.label.tag * +month empty$ %$ + 'skip$ %$ + { comma * space * month * + } +if$ %$ + } + if$ %$ +} +FUNCTION {make.year.nomonth} +{ year empty$ %$ + { "" + } + { year year.label.tag * + } + if$ %$ +} +FUNCTION {make.year.or.oyear.month} +{ oyear empty$ %$ + { make.year.month + } + { year empty$ %$ + { "oyear without year in " cite$ * warning$ + } + 'skip$ %$ + if$ %$ + oyear year.label.tag * + month empty$ %$ + 'skip$ %$ +{ comma * space * month * + } + if$ %$ + } + if$ %$ +} +FUNCTION {make.leaditem.with.tags} +{ leaditem + principal-type editor.ptype = + { editor num.names$ #1 > %$ +{ ",~eds." * +} +{ ",~ed." * +} + if$ %$ + } + 'skip$ %$ + if$ %$ +} +FUNCTION {make.editors.secondary} +{ editor empty$ %$ + { "" + } + { output.state after.sentence = + output.state after.block = or + { "E" + } + { "e" + } + if$ %$ + "dited by " * editor format.names.firstfirst * + } + if$ %$ +} +FUNCTION {make.bookauthors.secondary} +{ bookauthor empty$ %$ + { "" + } + { output.state after.sentence = + output.state after.block = + or + { "B" + } + { "b" + } + if$ %$ + "y " * bookauthor format.names.firstfirst * + } + if$ %$ +} +FUNCTION {make.translators} +{ translator empty$ %$ + { "" + } + { output.state after.sentence = + output.state after.block = + or + { "T" + } + { "t" + } + if$ %$ + "ranslated " * + flanguage empty$ %$ + 'skip$ %$ + { "from the " * flanguage * space * + } + if$ %$ + "by " * translator format.names.firstfirst * + } + if$ %$ +} + +FUNCTION {make.illustrators} +{ illustrator empty$ %$ + { "" + } + { output.state after.sentence = + output.state after.block = + or + { "I" + } + { "i" + } + if$ %$ + "llustrated by " * illustrator format.names.firstfirst * + } + if$ %$ +} +FUNCTION {make.title.ital} +{ title field.or.null italicize +} + +FUNCTION {make.booktitle.ital} +{ booktitle field.or.null italicize +} + +FUNCTION {make.as.ftitle.ital} +{ ftitle empty$ %$ + { "" + } + { "as " ftitle italicize * + } + if$ %$ +} +FUNCTION {make.title.inquotes} +{ title empty$ %$ + { "" + } + { + "\Wrapquotes{" title * "}" * + } + if$ %$ +} +FUNCTION {make.pages} +{ pages empty$ %$ + { "" + } + { pages format.n.dashify + } + if$ %$ +} +FUNCTION {make.vol.series.num.month.pages} +{ volume empty$ %$ + { series empty$ %$ + { number empty$ %$ + { month empty$ %$ +{ pages empty$ %$ + % none of VSNMP + { space 'u := + "" + } + % P + { comma 'u := + multipage.p + { "pp." pages format.n.dashify +} + { "p." pages +} + if$ %$ + tie.or.space.connect + } + if$ %$ +} +{ pages empty$ %$ + % M + { comma 'u := + month + } + % MP + { comma 'u := + month comma * space * make.pages * + } + if$ %$ +} + if$ %$ + } + { month empty$ %$ +{ pages empty$ %$ + % N + { comma 'u := + "no." number tie.or.space.connect + } + % NP + { comma 'u := + "no." number colon * make.pages * tie.or.space.connect + } + if$ %$ +} +{ pages empty$ %$ + % NM + { comma 'u := + "no." number tie.or.space.connect + space * month parenthesize * + } + % NMP + { comma 'u := + "no." number tie.or.space.connect + space * month parenthesize * + colon * space * make.pages * + } + if$ %$ +} + if$ %$ + } + if$ %$ + } + { number empty$ %$ + { month empty$ %$ +{ pages empty$ %$ + % S + { + } + % SP + { + } + if$ %$ +} +{ pages empty$ %$ + % SM + { + } + % SMP + { + } + if$ %$ +} + if$ %$ + } + { month empty$ %$ +{ pages empty$ %$ + % SN + { + } + % SNP + { + } + if$ %$ +} +{ pages empty$ %$ + % SNP + { + } + % SNMP + { + } + if$ %$ +} + if$ %$ + } + if$ %$ + } + if$ %$ + } + { series empty$ %$ + { number empty$ %$ + { month empty$ %$ +{ pages empty$ %$ + % V + { comma 'u := + "vol." volume tie.or.space.connect + } + % VP + { space 'u := + volume colon * make.pages * + } + if$ %$ +} +{ pages empty$ %$ + % VM + { comma 'u := + "vol." volume tie.or.space.connect + space * month parenthesize * + } + % VMP + { space 'u := + volume space * + month parenthesize * colon * space * make.pages * + } + if$ %$ +} + if$ %$ + } + { month empty$ %$ +{ pages empty$ %$ + % VN + { space 'u := + volume ", no." number tie.or.space.connect * + } + % VNP + { space 'u := + volume space * + number parenthesize * colon * space * make.pages * + } + if$ %$ +} +{ pages empty$ %$ + % VNM + { space 'u := + volume ", no." number tie.or.space.connect * + space * month parenthesize * + } + % VNMP + { space 'u := + volume space * number parenthesize * colon * space * + make.pages * space * month parenthesize * + } + if$ %$ +} + if$ %$ + } + if$ %$ + } + { number empty$ %$ + { month empty$ %$ +{ pages empty$ %$ + % VS + { + } + % VSP + { + } + if$ %$ +} +{ pages empty$ %$ + % VSM + { + } + % VSMP + { + } + if$ %$ +} + if$ %$ + } + { month empty$ %$ +{ pages empty$ %$ + % VSN + { + } + % VSNP + { + } + if$ %$ +} +{ pages empty$ %$ + % VSNM + { + } + % VSNMP + { + } + if$ %$ +} + if$ %$ + } + if$ %$ + } + if$ %$ + } + if$ %$ +} +FUNCTION {make.crossref} +{ "\citeNP{" crossref * "}" * +} +FUNCTION {output.series.number} +{ series empty$ %$ + { number empty$ %$ + { "" + } + { "Can't use `number' without `series' in " cite$ * warning$ + "" + } + if$ %$ + } + { number empty$ %$ +{ series + seriesedition empty$ %$ + 'skip$ %$ + { comma output + new.block + seriesedition + } + if$ %$ +} +{ series space * + "no." * + number tie.or.space.connect + "number and seriesedition" seriesedition either.or.check +} + if$ %$ + } + if$ %$ + comma output +} +FUNCTION {output.volume.series} +{ volume empty$ %$ + { "" + } + { "Volume" volume tie.or.space.connect + series empty$ %$ + 'skip$ %$ + { " of " * series italicize * + seriesedition empty$ %$ + 'skip$ %$ + { comma output + new.block + seriesedition + } + if$ %$ + } + if$ %$ + "volume and number" number either.or.check + } + if$ %$ + comma output +} +FUNCTION {make.chapter.of} +{ chapter empty$ %$ + { "" + } + { type empty$ %$ + { "Chapter" + } + { type "t" change.case$ %$ + } + if$ %$ + chapter tie.or.space.connect + " of " * + } + if$ %$ +} +FUNCTION {make.chapter} +{ chapter empty$ %$ + { "" + } + { type empty$ %$ + { "Chapter" + } + { type "t" change.case$ %$ + } + if$ %$ + chapter tie.or.space.connect + } + if$ %$ +} +FUNCTION {make.number.tr} +{ type empty$ %$ + { "Technical Report" + } + { type "t" change.case$ %$ + } + if$ %$ + number empty$ %$ + 'skip$ %$ + { number tie.or.space.connect + } + if$ %$ +} +%% +%% FIX: new idea, start using it +FUNCTION {set.principal-field.principal-type} +{ type$ "book" = %$ + type$ "inbook" = %$ + or + { start.a.q + author.q + editor.q + blank.q + key.q + "author, editor, or key for entry type " type$ * check.q %$ + } + { type$ "proceedings" = %$ + { start.a.q + blank.q + editor.q + organization.q + key.q + "editor, organization, or key for entry type " type$ * check.q %$ + } + { type$ "manual" = %$ + { start.a.q + author.q + blank.q + organization.q + key.q + "author, organization, or key for entry type " type$ * check.q %$ + } + % for all other entry types + { start.a.q + author.q + blank.q + blank.q + key.q + "author or key for entry type " type$ * check.q %$ + } + if$ %$ + } + if$ %$ + } + if$ %$ + 'principal-field := + j 'principal-type := +} + +FUNCTION {key.special.p} +{ type$ "manual" = %$ +type$ "proceedings" = %$ + or + principal-type organization.ptype = + and + key empty$ not %$ + and +} + +FUNCTION {make.leaditem} +{ key.special.p + % is \field{key} all-caps? + { key duplicate$ "u" change.case$ = + % if so, key is assumed to be an acronym FIX; should I warn what we're doing? + { key " (" * organization * ")" * + } + % if not, key is assumed to be an initial prefix (abbreviation) of organization + % for use only in the label + { organization + } + if$ %$ + } + { principal-field +principal-type author.ptype = +principal-type editor.ptype = + or +{ format.names.lastfirst +} +'skip$ %$ + if$ %$ + } + if$ %$ +} + +FUNCTION {make.label.from.principal-field} +{ principal-field + principal-type author.ptype = + principal-type editor.ptype = + or + { format.names.for.label + } + % organization, key, or emergency + 'skip$ %$ + if$ %$ +} + +FUNCTION {make.label} +{ key.special.p + { key + } + { make.label.from.principal-field + } + if$ %$ +} + + +FUNCTION {length} +{ 'u := + #0 'len := + % WHILE + { u "" = not } + { len #1 + 'len := + u #2 global.max$ substring$ 'u := + } + while$ %$ + len +} + + +FUNCTION {head} +{ 'w := + w #1 #1 substring$ %$ + duplicate$ "{" = %$ + { w #2 #1 substring$ "\" = %$ + { pop$ %$ + w #1 text.prefix$ %$ + } + 'skip$ %$ + if$ %$ + } + 'skip$ %$ + if$ %$ +} + + +FUNCTION {behead} +{ 'u := + u + u head length #1 + + global.max$ %$ + substring$ %$ +} + +FUNCTION {behead.t} +{ t behead 't := +} + +FUNCTION {format.dehyphen} +{ 't := + "" + % WHILE + { t "" = not } + { t head + duplicate$ hyphen = %$ + { pop$ %$ + } + { * + } + if$ %$ + behead.t + } + while$ %$ +} + + + + +FUNCTION {format.dehyphen.dewhitespace} +{ 't := + "" + % WHILE + { t "" = not } + { t head + duplicate$ %$ + duplicate$ hyphen = %$ + swap$ empty$ + or + { pop$ %$ + } + { * + } + if$ %$ + behead.t + } + while$ %$ +} + +FUNCTION {format.names.for.sort} +{ 's := + #1 'nameptr := + s num.names$ 'numnames := %$ + numnames 'namesleft := + % WHILE + { namesleft #0 > } + { + % NOTE: order or name-parts ought to follow that used for leaditem + % word-by-word alphabetization: + % letter-by-letter alphabetization, no attention to initials: + + % letter-by-letter alphabetization, with first initials exception: + + s nameptr "{vv{}}{ll{}}{ jj{}}" format.name$ %$ + + % Each first-name token of the form of an initial ("L.") will be followed by a + % space but other spaces will be removed. + + % Algorithm: step through looking for space, which terminates name tokens, + % adding non-spaces to an accumulator on the stack as we go. + % When we find a space, look at the accumulator (a whole name token). + % If it's length is 2 and 2d char is a period, we've got an initial, so + % add the space to the accumulator. If not, throw away the space + % and step on looking for another name. + + % FIX: would it be simpler to replace periods with spaces? + % would a period ever appear in a first-name when not an initial? + % Rev.? Col.? These should be alphabetized as spelled out, prob. + % but need to check \manual + + + s nameptr "{ff{ } }" format.name$ 't := %$ + % t is "F1 F2 F3 ... FN " or empty + + + t empty$ %$ + 'skip$ %$ + { delimiter.name-part * + "" % accumulator + % WHILE + { t "" = not } + { t head + duplicate$ empty$ + % last char will always be a space + % accumulator contains whole name token + { pop$ %$ throw space away for now; top of stack is now accumulator + duplicate$ %$ + duplicate$ text.length$ #2 = % 2 chars long + swap$ behead head period = %$ 2d char is period + and + % name token in accumulator is an initial, so add a space to it + { space * + } + % name token in accumulator is not an initial + 'skip$ %$ + if$ %$ + % in either case, concatenate the accumulator the name on the + % stack and initialize it again + * "" + } + % accumulator contains partial name token + % add t's head (not a space) to accumulator + { * + } + if$ %$ + behead.t + } + while$ %$ + % we always end up with an empty string on the stack + pop$ %$ + } + if$ %$ + + format.dehyphen + 't := + % t now contains one name of a namelist + nameptr #1 = + { t + } + { delimiter.name * + nameptr numnames = + t "others" = + and + { "zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz" * + } + { t * + } + if$ %$ + } + if$ %$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ %$ +} +FUNCTION {make.principal-field.for.sort} % FIX: note: leaditem must already be set +{ principal-type author.ptype = + principal-type editor.ptype = + or + { principal-field format.names.for.sort + } + { principal-type emergency.ptype = + { principal-field + } + % organization.ptype, key.ptype, including both key.special cases + % leaditem is the same as principal-field except in the key.special + % cases, when we do want the leaditem not the principal-field +{ leaditem + % letter-by-letter alphabetization: + format.dehyphen.dewhitespace + } + if$ %$ + } + if$ %$ +} +FUNCTION {begin.entry} +{ output.begin + output.bibitem +} +FUNCTION {finish.entry} +{ add.period$ %$ + output.end + newline$ %$ + make.annotation write$ %$ +} +FUNCTION {article} +{ begin.entry + make.leaditem.with.tags space output + new.block + make.year.nomonth "year" check.empty space output + new.block + make.title.inquotes "title" check.empty space output + new.block + crossref empty$ %$ + { journal italicize "journal" check.empty space output + series empty$ %$ + 'skip$ %$ + { "Achicago can not yet handle nonempty series! in " cite$ * warning$ + } + if$ %$ + volume empty$ number empty$ month empty$ pages empty$ and and and + { "empty volume, number, month, and pages in " cite$ * warning$ + } + 'skip$ %$ + if$ %$ + make.vol.series.num.month.pages u output + } + { "In " make.crossref * space output + make.pages "pages" check.empty comma output + } + if$ %$ + new.block + note space output + finish.entry +} +FUNCTION {book} +{ begin.entry + make.leaditem.with.tags comma output + new.block + make.year.or.oyear.month "year" check.empty comma output + new.block + make.title.ital "title" check.empty comma output + new.block + make.edition comma output + new.block + crossref empty$ %$ + { volume empty$ %$ + { output.series.number + } + { output.volume.series + } + if$ %$ + editor empty$ author empty$ or + 'skip$ %$ + { new.block + make.editors.secondary comma output + } + if$ %$ + new.block + make.translators comma output + new.block + make.illustrators comma output + new.block + oyear empty$ %$ + { address comma output + publisher "publisher" check.empty colon output + } + { oaddress comma output + opublisher "opublisher" check.empty colon output + new.block + "Reprint" comma output + address field.or.null comma output + publisher "publisher" check.empty + address empty$ %$ + { comma + } + { colon + } + if$ %$ + output + year "year" check.empty comma output + } + if$ %$ + } + { volume empty$ %$ + { "In " + } + { "Volume" volume tie.or.space.connect + " of " * + } + if$ %$ + make.crossref * comma output + } + if$ %$ + new.block + yearcomp empty$ %$ + 'skip$ %$ + { "Composed in " yearcomp * + comma output + new.block + } + if$ %$ + fyear empty$ + 'skip$ + { "First published " + translator empty$ flanguage empty$ not and + { "in " * flanguage * space * + } + 'skip$ + if$ + make.as.ftitle.ital * space output + faddress empty$ fpublisher empty$ not and + { "by " + } + { "in " + } + if$ %$ + space output + faddress space output + fpublisher + faddress empty$ %$ + { space + } + { colon + } + if$ %$ + output + fyear + faddress empty$ fpublisher empty$ and + { space + } + { comma + } + if$ output %$ + new.block + } + if$ %$ + note comma output + finish.entry +} +FUNCTION {inbook} +{ begin.entry + make.leaditem.with.tags comma output + new.block + make.year.or.oyear.month "year" check.empty comma output + new.block + crossref empty$ %$ + { make.chapter.of + duplicate$ 'u := %$ + duplicate$ empty$ + { pop$ %$ + pages empty$ %$ + { "empty chapter, type, and pages in " cite$ * warning$ + "In " + } + { "Pages " make.pages * " in " * + } + if$ %$ + } + 'skip$ %$ + if$ %$ + comma output + make.title.ital "title" check.empty space output + make.bookauthors.secondary comma output + make.editors.secondary comma output + volume empty$ %$ + { output.series.number + } + { output.volume.series + } + if$ %$ + make.edition comma output + u empty$ %$ + 'skip$ %$ + { make.pages comma output + } + if$ %$ + new.block + make.translators comma output + new.block + make.illustrators comma output + new.block + oyear empty$ %$ + { address comma output + publisher "publisher" check.empty colon output + } + { oaddress comma output + opublisher "opublisher" check.empty colon output + new.block + "Reprint" comma output + address field.or.null comma output + publisher "publisher" check.empty + address empty$ %$ + { comma + } + { colon + } + if$ %$ + output + year "year" check.empty comma output + } + if$ %$ + } + % crossref not empty + { "In " make.crossref * comma output + make.chapter comma output + make.pages comma output + chapter empty$ pages empty$ and + { "empty chapter and pages in " cite$ * warning$ + } + 'skip$ %$ + if$ %$ + } + if$ %$ + new.block + note comma output + finish.entry +} +FUNCTION {incollection} +{ begin.entry + make.leaditem.with.tags comma output + new.block + make.year.or.oyear.month "year" check.empty space output + new.block + make.title.inquotes "title" check.empty space output + new.block + crossref empty$ %$ + { make.chapter.of duplicate$ empty$ + { pop$ %$ + "In " + } + 'skip$ %$ + if$ %$ + space output + make.booktitle.ital "booktitle" check.empty space output + make.bookauthors.secondary comma output + make.editors.secondary comma output + volume empty$ %$ + { output.series.number + } + { output.volume.series + } + if$ %$ + make.edition comma output + make.pages comma output + chapter empty$ type empty$ and pages empty$ and %$ + { "empty chapter, type, and pages in " cite$ * warning$ + } + 'skip$ %$ + if$ %$ + new.block + make.translators space output + new.block + make.illustrators space output + new.block + oyear empty$ %$ + { address space output + publisher "publisher" check.empty colon output + } + { oaddress space output + opublisher "opublisher" check.empty colon output + new.block + "Reprint" comma output + address comma output + publisher "publisher" check.empty + address empty$ %$ + { comma + } + { colon + } + if$ %$ + output + year comma output + } + if$ %$ + } + % crossref not empty + { new.block + "In " make.crossref * space output + make.chapter comma output + make.pages comma output + chapter empty$ pages empty$ and + { "empty chapter and pages in " cite$ * warning$ + } + 'skip$ %$ + if$ %$ + } + if$ %$ + new.block + note space output + finish.entry +} +FUNCTION {format.thesis} +{ 'v := + begin.entry + make.leaditem.with.tags comma output + new.block + make.year.month "year" check.empty space output + new.block + make.title.inquotes "title" check.empty space output + new.block + v "type" check.empty space output + school "school" check.empty comma output + address comma output + new.block + note space output + finish.entry +} +FUNCTION {thesis} +{ type field.or.null format.thesis +} +FUNCTION{mastersthesis} +{ type empty$ %$ + { "Master's thesis" + } + { type + } + if$ %$ + format.thesis +} +FUNCTION {minorthesis} +{ mastersthesis +} +FUNCTION {phdthesis} +{ type empty$ %$ + { "Ph.D.~diss." + } + { type + } + if$ %$ + format.thesis +} +FUNCTION {majorthesis} +{ phdthesis +} +FUNCTION {manual} +{ begin.entry + make.leaditem.with.tags space output + new.block + make.year.month space output + new.block + make.title.ital "title" check.empty comma output + new.block + make.edition comma output + new.block + address space output + organization colon output + new.block + note space output + finish.entry +} +FUNCTION {booklet} +{ begin.entry + make.leaditem.with.tags comma output + new.block + make.year.month space output + new.block + make.title.inquotes "title" check.empty comma output + new.block + howpublished space output + address comma output + new.block + note space output + finish.entry +} +FUNCTION {inproceedings} +{ begin.entry + make.leaditem.with.tags comma output + new.block + make.year.month "year" check.empty space output + new.block + make.title.inquotes "title" check.empty space output + new.block + crossref empty$ %$ + { make.editors.secondary space output + make.booktitle.ital "booktitle" check.empty comma output + volume empty$ %$ + { output.series.number + } + { output.volume.series + } + if$ %$ + make.edition comma output + new.block + organization space output + address comma output + publisher colon output + make.pages comma output + } + { "In " make.crossref * space output + make.chapter comma output + make.pages comma output + chapter empty$ pages empty$ and + { "empty chapter and pages in " cite$ * warning$ + } + 'skip$ %$ + if$ %$ + } + if$ %$ + new.block + note space output + finish.entry +} +FUNCTION {conference} +{ inproceedings +} +FUNCTION {proceedings} +{ begin.entry + make.leaditem.with.tags space output + new.block + make.year.month "year" check.empty space output + new.block + make.title.ital "title" check.empty comma output + new.block + make.edition comma output + new.block + volume empty$ %$ + { output.series.number + } + { output.volume.series + } + if$ %$ + new.block + organization space output + address comma output + publisher colon output + new.block + note comma output + finish.entry +} +FUNCTION {misc} +{ begin.entry + make.leaditem.with.tags comma output + new.block + make.year.month space output + new.block + title space output + new.block + howpublished comma output + new.block + note space output + finish.entry +} +FUNCTION {techreport} +{ begin.entry + make.leaditem.with.tags comma output + new.block + make.year.month "year" check.empty comma output + new.block + make.title.inquotes "title" check.empty comma output + new.block + make.number.tr comma output + institution "institution" check.empty comma output + address comma output + new.block + note comma output + finish.entry +} +FUNCTION {unpublished} +{ begin.entry + make.leaditem.with.tags comma output + new.block + make.year.month space output + new.block + make.title.inquotes "title" check.empty space output + new.block + note "note" check.empty space output + finish.entry +} +FUNCTION {default.type} +{ misc } +FUNCTION {chop.word} +{ 't := + 'len := + t #1 len substring$ = %$ + { t len #1 + global.max$ substring$ + } + { t + } + if$ %$ +} +FUNCTION {make.title.for.sort} +{ title field.or.null + 't := + "A " #2 + "An " #3 + "The " #4 t chop.word + chop.word + chop.word + format.dehyphen.dewhitespace +} +FUNCTION {presort} +{ set.principal-field.principal-type + + make.leaditem + 'leaditem := + + make.label + 'label := + + oyear empty$ %$ + { year + } + { oyear + } + if$ %$ + field.or.null purify$ #-1 #4 substring$ + 'year.label := +} + +FUNCTION {sortkey<-label+year+principal+title} +{ label + delimiter.sub-sortkey * + year.label * + delimiter.sub-sortkey * + make.principal-field.for.sort * + delimiter.sub-sortkey * + make.title.for.sort * + format.sortify.clip + 'sort.key$ := %$ +} + +FUNCTION {sortkey<-principal+year+year-tag} +{ make.principal-field.for.sort + delimiter.sub-sortkey * + year.label * + year.label.tag * + format.sortify.clip + 'sort.key$ := %$ +} + +FUNCTION {presort.&.sortkey<-label+year+principal+title} +{ presort + sortkey<-label+year+principal+title +} +FUNCTION {initialize.sorting-gvars} +{ unidentified 'last.leaditem := + unidentified 'last.label.and.year := + "" 'following.year.label.tag := + #0 'last.year.tag.num := +} +FUNCTION {forward.pass.wrap.dupe.leaditems} +{ leaditem + duplicate$ last.leaditem = %$ + % we add the brace pair at the end because this forces add.period$ to add a %$ + % period after it. FIX: if we ever want \SCdup to actually print its + % argument, we must get it to print its argument minus any final period. + { "\SCduplicate{" swap$ * "{}}" * 'leaditem := %$ + } + { 'last.leaditem := + } + if$ %$ +} +FUNCTION {forward.pass.add.bcds} +{ label year.label * format.clip + duplicate$ last.label.and.year = %$ + % same as previous entry + { pop$ %$ + last.year.tag.num #1 + 'last.year.tag.num := + last.year.tag.num int.to.chr$ 'year.label.tag := %$ + } + % different from previous entry + { "a" chr.to.int$ 'last.year.tag.num := %$ + "" 'year.label.tag := + 'last.label.and.year := + } + if$ %$ +} + +FUNCTION {reverse.pass.add.as} +{ following.year.label.tag "b" = + { "a" 'year.label.tag := + } + 'skip$ %$ + if$ %$ + year.label.tag 'following.year.label.tag := +} +FUNCTION {begin.bib} +{ preamble$ empty$ + 'skip$ %$ + { preamble$ write$ newline$ %$ + } + if$ %$ + "\begin{thebibliography}{}" write$ newline$ +} +FUNCTION {end.bib} +{ newline$ %$ + "\end{thebibliography}" write$ newline$ +} +READ + +EXECUTE {init.scalars} + +ITERATE {presort.&.sortkey<-label+year+principal+title} +SORT + +EXECUTE {initialize.sorting-gvars} + +ITERATE {forward.pass.add.bcds} +REVERSE {reverse.pass.add.as} + +ITERATE{sortkey<-principal+year+year-tag} +SORT + +EXECUTE {initialize.sorting-gvars} +ITERATE {forward.pass.wrap.dupe.leaditems} + +EXECUTE {begin.bib} +ITERATE {call.type$} %$ +EXECUTE {end.bib} diff --git a/Master/texmf-dist/doc/latex/frankenstein/achicago.pdf b/Master/texmf-dist/doc/latex/frankenstein/achicago.pdf new file mode 100644 index 00000000000..9ad8fc89e4b Binary files /dev/null and b/Master/texmf-dist/doc/latex/frankenstein/achicago.pdf differ diff --git a/Master/texmf-dist/doc/latex/frankenstein/achicago.tex b/Master/texmf-dist/doc/latex/frankenstein/achicago.tex new file mode 100644 index 00000000000..bc4b339b438 --- /dev/null +++ b/Master/texmf-dist/doc/latex/frankenstein/achicago.tex @@ -0,0 +1,67 @@ +% achicago.tex -- documentation for the achicago LaTeX package. +% +% This program is part of the Frankenstein bundle for LaTeX2e. +% +% Copyright (C) 1995-2001 Matt Swift +% +% This program is free software; you may redistribute it and/or +% modify it under the conditions of the LaTeX Project Public +% License, either version 1.2 or (at your option) any later +% version. The latest version of this license is in +% http://www.latex-project.org/lppl.txt, and version 1.2 or later +% is part of all distributions of LaTeX version 1999/12/01 or +% later. +% +% 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 +% LaTeX Project Public License for more details. +% +\documentclass{ltxdoc} +\makeatletter +\def\part {% + \clearpage + \@afterindentfalse + \secdef\@part\@spart +} +\def\StripV #1{\E@cdr #1\@nil} +\makeatother +\usepackage{attrib,compsci} +\newbook\manual {Chicago\nocite{chicago:14} Manual of Style}[Chicago Manual] +\newbook\MLAman {The\nocite{mlaman} MLA Style Manual and Guide to Scholarly Publishing} + [The MLA Style Manual] +\newtheorem{lessoninternal}{Lesson} +\newenvironment{lesson} {% + \let\AttribInit\sffamily + \let\PreTrib\textsection + \let\PostTrib\ShortEmpty + \lessoninternal + } {% + \endlessoninternal + } +\newcommand\manualref [1] {\textsf{\S #1}} +\ProcessDTXFile{achicago.sty} +\newlet\MaybeABib\relax +\IfCitations { + \def\MaybeABib {% + \newpage + \bibliographystyle{achicago}% + \bibliography{frankenstein}% + } + \SaveDoXVarS + \usepackage{achicago} + \RestoreDoXVarS +} +\CodelineIndex +\EnableCrossrefs +\begin{document} +\date{Version: \StripV\fileversion \qquad Date: \filedate\\ + \relsize{-2}Documentation revision: \docdate} +\author{Matt Swift \email{swift@alum.mit.edu}} +\title{The \textsf{achicago} LaTeX package \\\smaller \fileinfo} +\maketitle +\DocInput{achicago.sty} +\MaybeABib +\newpage +\PrintIndex +\end{document} diff --git a/Master/texmf-dist/doc/latex/frankenstein/attrib.pdf b/Master/texmf-dist/doc/latex/frankenstein/attrib.pdf new file mode 100755 index 00000000000..4da19d03a2a Binary files /dev/null and b/Master/texmf-dist/doc/latex/frankenstein/attrib.pdf differ diff --git a/Master/texmf-dist/doc/latex/frankenstein/attrib.tex b/Master/texmf-dist/doc/latex/frankenstein/attrib.tex new file mode 100644 index 00000000000..80300c7b1d7 --- /dev/null +++ b/Master/texmf-dist/doc/latex/frankenstein/attrib.tex @@ -0,0 +1,67 @@ +% attrib.tex -- documentation for the attrib LaTeX package. +% +% This program is part of the Frankenstein bundle for LaTeX2e. +% +% Copyright (C) 1995-2001 Matt Swift +% +% This program is free software; you may redistribute it and/or +% modify it under the conditions of the LaTeX Project Public +% License, either version 1.2 or (at your option) any later +% version. The latest version of this license is in +% http://www.latex-project.org/lppl.txt, and version 1.2 or later +% is part of all distributions of LaTeX version 1999/12/01 or +% later. +% +% 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 +% LaTeX Project Public License for more details. +% +\documentclass{ltxdoc} +\makeatletter +\def\part {% + \clearpage + \@afterindentfalse + \secdef\@part\@spart +} +\def\StripV #1{\E@cdr #1\@nil} +\makeatother +\usepackage{attrib,compsci} +\newbook\manual {Chicago\nocite{chicago:14} Manual of Style}[Chicago Manual] +\newbook\MLAman {The\nocite{mlaman} MLA Style Manual and Guide to Scholarly Publishing} + [The MLA Style Manual] +\newtheorem{lessoninternal}{Lesson} +\newenvironment{lesson} {% + \let\AttribInit\sffamily + \let\PreTrib\textsection + \let\PostTrib\ShortEmpty + \lessoninternal + } {% + \endlessoninternal + } +\newcommand\manualref [1] {\textsf{\S #1}} +\ProcessDTXFile{attrib.sty} +\newlet\MaybeABib\relax +\IfCitations { + \def\MaybeABib {% + \newpage + \bibliographystyle{achicago}% + \bibliography{frankenstein}% + } + \SaveDoXVarS + \usepackage{achicago} + \RestoreDoXVarS +} +\CodelineIndex +\EnableCrossrefs +\begin{document} +\date{Version: \StripV\fileversion \qquad Date: \filedate\\ + \relsize{-2}Documentation revision: \docdate} +\author{Matt Swift \email{swift@alum.mit.edu}} +\title{The \textsf{attrib} LaTeX package \\\smaller \fileinfo} +\maketitle +\DocInput{attrib.sty} +\MaybeABib +\newpage +\PrintIndex +\end{document} diff --git a/Master/texmf-dist/doc/latex/frankenstein/blkcntrl.pdf b/Master/texmf-dist/doc/latex/frankenstein/blkcntrl.pdf new file mode 100755 index 00000000000..4aff99f658d Binary files /dev/null and b/Master/texmf-dist/doc/latex/frankenstein/blkcntrl.pdf differ diff --git a/Master/texmf-dist/doc/latex/frankenstein/blkcntrl.tex b/Master/texmf-dist/doc/latex/frankenstein/blkcntrl.tex new file mode 100644 index 00000000000..19e31d3da4d --- /dev/null +++ b/Master/texmf-dist/doc/latex/frankenstein/blkcntrl.tex @@ -0,0 +1,67 @@ +% blkcntrl.tex -- documentation for the blkcntrl LaTeX package. +% +% This program is part of the Frankenstein bundle for LaTeX2e. +% +% Copyright (C) 1995-2001 Matt Swift +% +% This program is free software; you may redistribute it and/or +% modify it under the conditions of the LaTeX Project Public +% License, either version 1.2 or (at your option) any later +% version. The latest version of this license is in +% http://www.latex-project.org/lppl.txt, and version 1.2 or later +% is part of all distributions of LaTeX version 1999/12/01 or +% later. +% +% 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 +% LaTeX Project Public License for more details. +% +\documentclass{ltxdoc} +\makeatletter +\def\part {% + \clearpage + \@afterindentfalse + \secdef\@part\@spart +} +\def\StripV #1{\E@cdr #1\@nil} +\makeatother +\usepackage{attrib,compsci} +\newbook\manual {Chicago\nocite{chicago:14} Manual of Style}[Chicago Manual] +\newbook\MLAman {The\nocite{mlaman} MLA Style Manual and Guide to Scholarly Publishing} + [The MLA Style Manual] +\newtheorem{lessoninternal}{Lesson} +\newenvironment{lesson} {% + \let\AttribInit\sffamily + \let\PreTrib\textsection + \let\PostTrib\ShortEmpty + \lessoninternal + } {% + \endlessoninternal + } +\newcommand\manualref [1] {\textsf{\S #1}} +\ProcessDTXFile{blkcntrl.sty} +\newlet\MaybeABib\relax +\IfCitations { + \def\MaybeABib {% + \newpage + \bibliographystyle{achicago}% + \bibliography{frankenstein}% + } + \SaveDoXVarS + \usepackage{achicago} + \RestoreDoXVarS +} +\CodelineIndex +\EnableCrossrefs +\begin{document} +\date{Version: \StripV\fileversion \qquad Date: \filedate\\ + \relsize{-2}Documentation revision: \docdate} +\author{Matt Swift \email{swift@alum.mit.edu}} +\title{The \textsf{blkcntrl} LaTeX package \\\smaller \fileinfo} +\maketitle +\DocInput{blkcntrl.sty} +\MaybeABib +\newpage +\PrintIndex +\end{document} diff --git a/Master/texmf-dist/doc/latex/frankenstein/compsci.pdf b/Master/texmf-dist/doc/latex/frankenstein/compsci.pdf new file mode 100755 index 00000000000..745cae40086 Binary files /dev/null and b/Master/texmf-dist/doc/latex/frankenstein/compsci.pdf differ diff --git a/Master/texmf-dist/doc/latex/frankenstein/compsci.tex b/Master/texmf-dist/doc/latex/frankenstein/compsci.tex new file mode 100644 index 00000000000..15c25b106f0 --- /dev/null +++ b/Master/texmf-dist/doc/latex/frankenstein/compsci.tex @@ -0,0 +1,67 @@ +% compsci.tex -- documentation for the compsci LaTeX package. +% +% This program is part of the Frankenstein bundle for LaTeX2e. +% +% Copyright (C) 1995-2001 Matt Swift +% +% This program is free software; you may redistribute it and/or +% modify it under the conditions of the LaTeX Project Public +% License, either version 1.2 or (at your option) any later +% version. The latest version of this license is in +% http://www.latex-project.org/lppl.txt, and version 1.2 or later +% is part of all distributions of LaTeX version 1999/12/01 or +% later. +% +% 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 +% LaTeX Project Public License for more details. +% +\documentclass{ltxdoc} +\makeatletter +\def\part {% + \clearpage + \@afterindentfalse + \secdef\@part\@spart +} +\def\StripV #1{\E@cdr #1\@nil} +\makeatother +\usepackage{attrib,compsci} +\newbook\manual {Chicago\nocite{chicago:14} Manual of Style}[Chicago Manual] +\newbook\MLAman {The\nocite{mlaman} MLA Style Manual and Guide to Scholarly Publishing} + [The MLA Style Manual] +\newtheorem{lessoninternal}{Lesson} +\newenvironment{lesson} {% + \let\AttribInit\sffamily + \let\PreTrib\textsection + \let\PostTrib\ShortEmpty + \lessoninternal + } {% + \endlessoninternal + } +\newcommand\manualref [1] {\textsf{\S #1}} +\ProcessDTXFile{compsci.sty} +\newlet\MaybeABib\relax +\IfCitations { + \def\MaybeABib {% + \newpage + \bibliographystyle{achicago}% + \bibliography{frankenstein}% + } + \SaveDoXVarS + \usepackage{achicago} + \RestoreDoXVarS +} +\CodelineIndex +\EnableCrossrefs +\begin{document} +\date{Version: \StripV\fileversion \qquad Date: \filedate\\ + \relsize{-2}Documentation revision: \docdate} +\author{Matt Swift \email{swift@alum.mit.edu}} +\title{The \textsf{compsci} LaTeX package \\\smaller \fileinfo} +\maketitle +\DocInput{compsci.sty} +\MaybeABib +\newpage +\PrintIndex +\end{document} diff --git a/Master/texmf-dist/doc/latex/frankenstein/dialogue.pdf b/Master/texmf-dist/doc/latex/frankenstein/dialogue.pdf new file mode 100755 index 00000000000..4a4f86828ae Binary files /dev/null and b/Master/texmf-dist/doc/latex/frankenstein/dialogue.pdf differ diff --git a/Master/texmf-dist/doc/latex/frankenstein/dialogue.tex b/Master/texmf-dist/doc/latex/frankenstein/dialogue.tex new file mode 100644 index 00000000000..947cb0ee1ac --- /dev/null +++ b/Master/texmf-dist/doc/latex/frankenstein/dialogue.tex @@ -0,0 +1,67 @@ +% dialogue.tex -- documentation for the dialogue LaTeX package. +% +% This program is part of the Frankenstein bundle for LaTeX2e. +% +% Copyright (C) 1995-2001 Matt Swift +% +% This program is free software; you may redistribute it and/or +% modify it under the conditions of the LaTeX Project Public +% License, either version 1.2 or (at your option) any later +% version. The latest version of this license is in +% http://www.latex-project.org/lppl.txt, and version 1.2 or later +% is part of all distributions of LaTeX version 1999/12/01 or +% later. +% +% 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 +% LaTeX Project Public License for more details. +% +\documentclass{ltxdoc} +\makeatletter +\def\part {% + \clearpage + \@afterindentfalse + \secdef\@part\@spart +} +\def\StripV #1{\E@cdr #1\@nil} +\makeatother +\usepackage{attrib,compsci} +\newbook\manual {Chicago\nocite{chicago:14} Manual of Style}[Chicago Manual] +\newbook\MLAman {The\nocite{mlaman} MLA Style Manual and Guide to Scholarly Publishing} + [The MLA Style Manual] +\newtheorem{lessoninternal}{Lesson} +\newenvironment{lesson} {% + \let\AttribInit\sffamily + \let\PreTrib\textsection + \let\PostTrib\ShortEmpty + \lessoninternal + } {% + \endlessoninternal + } +\newcommand\manualref [1] {\textsf{\S #1}} +\ProcessDTXFile{dialogue.sty} +\newlet\MaybeABib\relax +\IfCitations { + \def\MaybeABib {% + \newpage + \bibliographystyle{achicago}% + \bibliography{frankenstein}% + } + \SaveDoXVarS + \usepackage{achicago} + \RestoreDoXVarS +} +\CodelineIndex +\EnableCrossrefs +\begin{document} +\date{Version: \StripV\fileversion \qquad Date: \filedate\\ + \relsize{-2}Documentation revision: \docdate} +\author{Matt Swift \email{swift@alum.mit.edu}} +\title{The \textsf{dialogue} LaTeX package \\\smaller \fileinfo} +\maketitle +\DocInput{dialogue.sty} +\MaybeABib +\newpage +\PrintIndex +\end{document} diff --git a/Master/texmf-dist/doc/latex/frankenstein/lips.pdf b/Master/texmf-dist/doc/latex/frankenstein/lips.pdf new file mode 100755 index 00000000000..4a8a36ea777 Binary files /dev/null and b/Master/texmf-dist/doc/latex/frankenstein/lips.pdf differ diff --git a/Master/texmf-dist/doc/latex/frankenstein/lips.tex b/Master/texmf-dist/doc/latex/frankenstein/lips.tex new file mode 100644 index 00000000000..2c60ab165ba --- /dev/null +++ b/Master/texmf-dist/doc/latex/frankenstein/lips.tex @@ -0,0 +1,67 @@ +% lips.tex -- documentation for the lips LaTeX package. +% +% This program is part of the Frankenstein bundle for LaTeX2e. +% +% Copyright (C) 1995-2001 Matt Swift +% +% This program is free software; you may redistribute it and/or +% modify it under the conditions of the LaTeX Project Public +% License, either version 1.2 or (at your option) any later +% version. The latest version of this license is in +% http://www.latex-project.org/lppl.txt, and version 1.2 or later +% is part of all distributions of LaTeX version 1999/12/01 or +% later. +% +% 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 +% LaTeX Project Public License for more details. +% +\documentclass{ltxdoc} +\makeatletter +\def\part {% + \clearpage + \@afterindentfalse + \secdef\@part\@spart +} +\def\StripV #1{\E@cdr #1\@nil} +\makeatother +\usepackage{attrib,compsci} +\newbook\manual {Chicago\nocite{chicago:14} Manual of Style}[Chicago Manual] +\newbook\MLAman {The\nocite{mlaman} MLA Style Manual and Guide to Scholarly Publishing} + [The MLA Style Manual] +\newtheorem{lessoninternal}{Lesson} +\newenvironment{lesson} {% + \let\AttribInit\sffamily + \let\PreTrib\textsection + \let\PostTrib\ShortEmpty + \lessoninternal + } {% + \endlessoninternal + } +\newcommand\manualref [1] {\textsf{\S #1}} +\ProcessDTXFile{lips.sty} +\newlet\MaybeABib\relax +\IfCitations { + \def\MaybeABib {% + \newpage + \bibliographystyle{achicago}% + \bibliography{frankenstein}% + } + \SaveDoXVarS + \usepackage{achicago} + \RestoreDoXVarS +} +\CodelineIndex +\EnableCrossrefs +\begin{document} +\date{Version: \StripV\fileversion \qquad Date: \filedate\\ + \relsize{-2}Documentation revision: \docdate} +\author{Matt Swift \email{swift@alum.mit.edu}} +\title{The \textsf{lips} LaTeX package \\\smaller \fileinfo} +\maketitle +\DocInput{lips.sty} +\MaybeABib +\newpage +\PrintIndex +\end{document} diff --git a/Master/texmf-dist/doc/latex/frankenstein/moredefs.pdf b/Master/texmf-dist/doc/latex/frankenstein/moredefs.pdf new file mode 100755 index 00000000000..5555d69f384 Binary files /dev/null and b/Master/texmf-dist/doc/latex/frankenstein/moredefs.pdf differ diff --git a/Master/texmf-dist/doc/latex/frankenstein/moredefs.tex b/Master/texmf-dist/doc/latex/frankenstein/moredefs.tex new file mode 100644 index 00000000000..fa2fcdbed74 --- /dev/null +++ b/Master/texmf-dist/doc/latex/frankenstein/moredefs.tex @@ -0,0 +1,67 @@ +% moredefs.tex -- documentation for the moredefs LaTeX package. +% +% This program is part of the Frankenstein bundle for LaTeX2e. +% +% Copyright (C) 1995-2001 Matt Swift +% +% This program is free software; you may redistribute it and/or +% modify it under the conditions of the LaTeX Project Public +% License, either version 1.2 or (at your option) any later +% version. The latest version of this license is in +% http://www.latex-project.org/lppl.txt, and version 1.2 or later +% is part of all distributions of LaTeX version 1999/12/01 or +% later. +% +% 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 +% LaTeX Project Public License for more details. +% +\documentclass{ltxdoc} +\makeatletter +\def\part {% + \clearpage + \@afterindentfalse + \secdef\@part\@spart +} +\def\StripV #1{\E@cdr #1\@nil} +\makeatother +\usepackage{attrib,compsci} +\newbook\manual {Chicago\nocite{chicago:14} Manual of Style}[Chicago Manual] +\newbook\MLAman {The\nocite{mlaman} MLA Style Manual and Guide to Scholarly Publishing} + [The MLA Style Manual] +\newtheorem{lessoninternal}{Lesson} +\newenvironment{lesson} {% + \let\AttribInit\sffamily + \let\PreTrib\textsection + \let\PostTrib\ShortEmpty + \lessoninternal + } {% + \endlessoninternal + } +\newcommand\manualref [1] {\textsf{\S #1}} +\ProcessDTXFile{moredefs.sty} +\newlet\MaybeABib\relax +\IfCitations { + \def\MaybeABib {% + \newpage + \bibliographystyle{achicago}% + \bibliography{frankenstein}% + } + \SaveDoXVarS + \usepackage{achicago} + \RestoreDoXVarS +} +\CodelineIndex +\EnableCrossrefs +\begin{document} +\date{Version: \StripV\fileversion \qquad Date: \filedate\\ + \relsize{-2}Documentation revision: \docdate} +\author{Matt Swift \email{swift@alum.mit.edu}} +\title{The \textsf{moredefs} LaTeX package \\\smaller \fileinfo} +\maketitle +\DocInput{moredefs.sty} +\MaybeABib +\newpage +\PrintIndex +\end{document} diff --git a/Master/texmf-dist/doc/latex/frankenstein/newclude.pdf b/Master/texmf-dist/doc/latex/frankenstein/newclude.pdf new file mode 100755 index 00000000000..5d32223e97d Binary files /dev/null and b/Master/texmf-dist/doc/latex/frankenstein/newclude.pdf differ diff --git a/Master/texmf-dist/doc/latex/frankenstein/newclude.tex b/Master/texmf-dist/doc/latex/frankenstein/newclude.tex new file mode 100644 index 00000000000..aeaab9f1c70 --- /dev/null +++ b/Master/texmf-dist/doc/latex/frankenstein/newclude.tex @@ -0,0 +1,67 @@ +% newclude.tex -- documentation for the newclude LaTeX package. +% +% This program is part of the Frankenstein bundle for LaTeX2e. +% +% Copyright (C) 1995-2001 Matt Swift +% +% This program is free software; you may redistribute it and/or +% modify it under the conditions of the LaTeX Project Public +% License, either version 1.2 or (at your option) any later +% version. The latest version of this license is in +% http://www.latex-project.org/lppl.txt, and version 1.2 or later +% is part of all distributions of LaTeX version 1999/12/01 or +% later. +% +% 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 +% LaTeX Project Public License for more details. +% +\documentclass{ltxdoc} +\makeatletter +\def\part {% + \clearpage + \@afterindentfalse + \secdef\@part\@spart +} +\def\StripV #1{\E@cdr #1\@nil} +\makeatother +\usepackage{attrib,compsci} +\newbook\manual {Chicago\nocite{chicago:14} Manual of Style}[Chicago Manual] +\newbook\MLAman {The\nocite{mlaman} MLA Style Manual and Guide to Scholarly Publishing} + [The MLA Style Manual] +\newtheorem{lessoninternal}{Lesson} +\newenvironment{lesson} {% + \let\AttribInit\sffamily + \let\PreTrib\textsection + \let\PostTrib\ShortEmpty + \lessoninternal + } {% + \endlessoninternal + } +\newcommand\manualref [1] {\textsf{\S #1}} +\ProcessDTXFile{newclude.sty} +\newlet\MaybeABib\relax +\IfCitations { + \def\MaybeABib {% + \newpage + \bibliographystyle{achicago}% + \bibliography{frankenstein}% + } + \SaveDoXVarS + \usepackage{achicago} + \RestoreDoXVarS +} +\CodelineIndex +\EnableCrossrefs +\begin{document} +\date{Version: \StripV\fileversion \qquad Date: \filedate\\ + \relsize{-2}Documentation revision: \docdate} +\author{Matt Swift \email{swift@alum.mit.edu}} +\title{The \textsf{newclude} LaTeX package \\\smaller \fileinfo} +\maketitle +\DocInput{newclude.sty} +\MaybeABib +\newpage +\PrintIndex +\end{document} diff --git a/Master/texmf-dist/doc/latex/frankenstein/slemph.pdf b/Master/texmf-dist/doc/latex/frankenstein/slemph.pdf new file mode 100755 index 00000000000..49955c90551 Binary files /dev/null and b/Master/texmf-dist/doc/latex/frankenstein/slemph.pdf differ diff --git a/Master/texmf-dist/doc/latex/frankenstein/slemph.tex b/Master/texmf-dist/doc/latex/frankenstein/slemph.tex new file mode 100644 index 00000000000..8a4230cff81 --- /dev/null +++ b/Master/texmf-dist/doc/latex/frankenstein/slemph.tex @@ -0,0 +1,67 @@ +% slemph.tex -- documentation for the slemph LaTeX package. +% +% This program is part of the Frankenstein bundle for LaTeX2e. +% +% Copyright (C) 1995-2001 Matt Swift +% +% This program is free software; you may redistribute it and/or +% modify it under the conditions of the LaTeX Project Public +% License, either version 1.2 or (at your option) any later +% version. The latest version of this license is in +% http://www.latex-project.org/lppl.txt, and version 1.2 or later +% is part of all distributions of LaTeX version 1999/12/01 or +% later. +% +% 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 +% LaTeX Project Public License for more details. +% +\documentclass{ltxdoc} +\makeatletter +\def\part {% + \clearpage + \@afterindentfalse + \secdef\@part\@spart +} +\def\StripV #1{\E@cdr #1\@nil} +\makeatother +\usepackage{attrib,compsci} +\newbook\manual {Chicago\nocite{chicago:14} Manual of Style}[Chicago Manual] +\newbook\MLAman {The\nocite{mlaman} MLA Style Manual and Guide to Scholarly Publishing} + [The MLA Style Manual] +\newtheorem{lessoninternal}{Lesson} +\newenvironment{lesson} {% + \let\AttribInit\sffamily + \let\PreTrib\textsection + \let\PostTrib\ShortEmpty + \lessoninternal + } {% + \endlessoninternal + } +\newcommand\manualref [1] {\textsf{\S #1}} +\ProcessDTXFile{slemph.sty} +\newlet\MaybeABib\relax +\IfCitations { + \def\MaybeABib {% + \newpage + \bibliographystyle{achicago}% + \bibliography{frankenstein}% + } + \SaveDoXVarS + \usepackage{achicago} + \RestoreDoXVarS +} +\CodelineIndex +\EnableCrossrefs +\begin{document} +\date{Version: \StripV\fileversion \qquad Date: \filedate\\ + \relsize{-2}Documentation revision: \docdate} +\author{Matt Swift \email{swift@alum.mit.edu}} +\title{The \textsf{slemph} LaTeX package \\\smaller \fileinfo} +\maketitle +\DocInput{slemph.sty} +\MaybeABib +\newpage +\PrintIndex +\end{document} diff --git a/Master/texmf-dist/doc/latex/frankenstein/titles.pdf b/Master/texmf-dist/doc/latex/frankenstein/titles.pdf new file mode 100755 index 00000000000..6dbd5359022 Binary files /dev/null and b/Master/texmf-dist/doc/latex/frankenstein/titles.pdf differ diff --git a/Master/texmf-dist/doc/latex/frankenstein/titles.tex b/Master/texmf-dist/doc/latex/frankenstein/titles.tex new file mode 100644 index 00000000000..2039ca27dc0 --- /dev/null +++ b/Master/texmf-dist/doc/latex/frankenstein/titles.tex @@ -0,0 +1,67 @@ +% titles.tex -- documentation for the titles LaTeX package. +% +% This program is part of the Frankenstein bundle for LaTeX2e. +% +% Copyright (C) 1995-2001 Matt Swift +% +% This program is free software; you may redistribute it and/or +% modify it under the conditions of the LaTeX Project Public +% License, either version 1.2 or (at your option) any later +% version. The latest version of this license is in +% http://www.latex-project.org/lppl.txt, and version 1.2 or later +% is part of all distributions of LaTeX version 1999/12/01 or +% later. +% +% 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 +% LaTeX Project Public License for more details. +% +\documentclass{ltxdoc} +\makeatletter +\def\part {% + \clearpage + \@afterindentfalse + \secdef\@part\@spart +} +\def\StripV #1{\E@cdr #1\@nil} +\makeatother +\usepackage{attrib,compsci} +\newbook\manual {Chicago\nocite{chicago:14} Manual of Style}[Chicago Manual] +\newbook\MLAman {The\nocite{mlaman} MLA Style Manual and Guide to Scholarly Publishing} + [The MLA Style Manual] +\newtheorem{lessoninternal}{Lesson} +\newenvironment{lesson} {% + \let\AttribInit\sffamily + \let\PreTrib\textsection + \let\PostTrib\ShortEmpty + \lessoninternal + } {% + \endlessoninternal + } +\newcommand\manualref [1] {\textsf{\S #1}} +\ProcessDTXFile{titles.sty} +\newlet\MaybeABib\relax +\IfCitations { + \def\MaybeABib {% + \newpage + \bibliographystyle{achicago}% + \bibliography{frankenstein}% + } + \SaveDoXVarS + \usepackage{achicago} + \RestoreDoXVarS +} +\CodelineIndex +\EnableCrossrefs +\begin{document} +\date{Version: \StripV\fileversion \qquad Date: \filedate\\ + \relsize{-2}Documentation revision: \docdate} +\author{Matt Swift \email{swift@alum.mit.edu}} +\title{The \textsf{titles} LaTeX package \\\smaller \fileinfo} +\maketitle +\DocInput{titles.sty} +\MaybeABib +\newpage +\PrintIndex +\end{document} diff --git a/Master/texmf-dist/doc/latex/frankenstein/unsupported/README-unsupported b/Master/texmf-dist/doc/latex/frankenstein/unsupported/README-unsupported new file mode 100644 index 00000000000..aadf532c276 --- /dev/null +++ b/Master/texmf-dist/doc/latex/frankenstein/unsupported/README-unsupported @@ -0,0 +1,150 @@ + + SOME UNSUPPORTED PARTS OF: + + FRANKENSTEIN + + A Collection of Macros for LaTeX and BibTeX + +------------------------------------------------------------------------ + CONTENTS + + NOTES + general + non-support + PACKAGE DESCRIPTIONS + includex + bits + drama + DISTRIBUTION CONDITIONS + TERMINOLOGY + AUTHOR + +------------------------------------------------------------------------ + NOTES + + general + + Three LaTeX packages are part of the Frankenstein bundle but are + unsupported. They are distributed on CTAN in a subdirectory of the + directory containing the supported Frankenstein filesets (i.e., + CTAN:/macros/latex/contrib/supported/frankenstein/unsupported/). In + a TeX installation, however, supported and unsupported macros, + sources, and documentation should be placed together, (e.g., in + TDS:/texmf/{doc,source,tex}/latex/frankenstein). + + If you wish to use the unsupported packages, download the entire + "frankenstein" directory from CTAN (which will include the + "unsupported" subdirectory). + + To use the Makefile on the unsupported filesets, you must do two + things. + + 1. Copy all the files in the "unsupported" subdirectory into its + parent directory ("frankenstein"). + + 2. Set the variable USE_UNSUP to something nonempty either by: + a. uncommenting the line in the file Makefile, or + b. setting it in your environment, or + c. set the variable on the Make command line, e.g., "make + USE_UNSUP=t all". + + Descriptions of the four unsupported packages are below. + Further important information about the Frankenstein bundle may be + found in the file README. + + Installation instructions are in the file INSTALL. + The bits and drama packages depend on the non-Frankenstein package + "relsize.sty". Please see INSTALL for further information. + + Both the README and INSTALL files are located in the parent + directory of this file (on CTAN) or in the same directory as this + file (in a TeX installation). + + + non-support + + The package filesets in this directory are UNSUPPORTED. They are + furthermore possibly INCOMPLETE and NOT fully DOCUMENTED. + + I hope one day to complete these packages, document them, and + support them. I will gladly listen to feedback on them, but I do + not take the same level of responsibility for them as for the + packages I call "supported". In the meantime, they are made public + under the conditions stated below so that I can refer interested + individuals to them. + + These packages are indeed valuable in certain ways, such as + sometimes working as advertised, but of course I offer no + guarantees. + + +------------------------------------------------------------------------ + PACKAGE DESCRIPTIONS + +------------------------------------------------------------------------ + bits + (Frankenstein's guts) + + Bits provides a programmer's interface for a new idea called a + "bit", which is like an environment but has a title, author, and + other attributes usually only associated with the "document" + environment. + +------------------------------------------------------------------------ + drama + production-format stage script + (Frankenstein's heart) + + Drama defines macros for typesetting a basic production-style stage + script. + +------------------------------------------------------------------------ + includex + extra ways to include files + + Includex allows you to include just the contents of one source file + into another, ignoring the text outside the \begin{document} + ... \end{document} in the included file. See also the supported + "newclude" package, which is intended to supersede includex, though + until I ensure that it is a satisfactory replacement I will keep + includex around. + +------------------------------------------------------------------------ + DISTRIBUTION CONDITIONS + + All Frankenstein files are copyrighted by Matthew Swift and released + under the conditions of the GNU General Public License contained in + the file COPYING, which should be in the parent directory or the + same directory as this file. + + The unsupported filesets in the same directory as this file ought to + be distributed WITH the supported ones. They are useless without + the supported ones. + + I am willing to specially license this code; please simply contact + me with your proposal. + +------------------------------------------------------------------------ + TERMINOLOGY + + fileset: A group of files related to a single LaTeX package, LaTeX + class, or BibTeX bibliography style and any accompanying + option or configuration files. The files in a package or + class fileset have the same root name but different + filename extensions. In bibstyle filesets, some root names + differ by a "-bst" suffix. + + CTAN: Comprehensive TeX Archive Network: a system of TeX-related + file archives available via FTP (see + ftp://ctan.tug.org/tex-archive/CTAN.sites) and often + reproduced on CDROMs. + + TDS: TeX Directory Structure: a recommended directory structure + for TeX installations. See + ftp://ctan.tug.org/tex-archive/tds. + +------------------------------------------------------------------------ + AUTHOR + + Matt Swift + diff --git a/Master/texmf-dist/doc/latex/frankenstein/unsupported/bits.cfg b/Master/texmf-dist/doc/latex/frankenstein/unsupported/bits.cfg new file mode 100644 index 00000000000..c25a476ff1a --- /dev/null +++ b/Master/texmf-dist/doc/latex/frankenstein/unsupported/bits.cfg @@ -0,0 +1,20 @@ +% \iffalse +%% +% Even if you don't want any code in this file, leave the empty file, or else +% loading the \package{bits} package will consume extra time as it searches +% for this file. +%% +% \fi +% \begin{macrocode} +\def\fileinfo{Bits package configuration} +\def\fileversion{v1} +\def\filedate{1996/01/24} +\def\docdate{1996/01/24} +% \end{macrocode} +% +% \AddToCheckSum{10} +% +% \begin{macrocode} +\ProvidesFile{bits.cfg} +\InputIfFileExists{monster.cfg}{}{} +% \end{macrocode} diff --git a/Master/texmf-dist/doc/latex/frankenstein/unsupported/bits.ins b/Master/texmf-dist/doc/latex/frankenstein/unsupported/bits.ins new file mode 100644 index 00000000000..f61f9054c55 --- /dev/null +++ b/Master/texmf-dist/doc/latex/frankenstein/unsupported/bits.ins @@ -0,0 +1,64 @@ +% bits.ins -- docstrip driver for the bits LaTeX package +% +% Copyright (C) 1995-2001 Matthew Swift +% Please see the copyright notice in \preamble below. + +% This file, when run through TeX or LaTeX, will generate fast loadable files +% from the .sty, .cls, or .bst files mentioned below. + +\input docstrip +\keepsilent + +\preamble + + This program is part of the Frankenstein bundle for LaTeX. + + Copyright (C) 1995-2001 Matthew Swift + + This file may have one of TWO names, either + bits.sty or bits.stq. This + LaTeX package will work ONLY if it is called bits.sty + and placed in a proper directory. This file should have been + distributed to you with a DIFFERENT file (also) called + bits.sty which functions identically to this one + but contains documentation in comments. This file works faster, + but the other should be kept because it contains the documentation + for this LaTeX package. Files called README and INSTALL should have + also been distributed to you with this file; see them for more + information. + + This program is free software; you may redistribute it and/or + modify it under the conditions of the LaTeX Project Public + License, either version 1.2 or (at your option) any later version. + The latest version of this license is in + http://www.latex-project.org/lppl.txt, and version 1.2 or later is + part of all distributions of LaTeX version 1999/12/01 or later. + + 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 + LaTeX Project Public License for more details. + +\endpreamble + +\askforoverwritefalse + +% This will get changed to either nothing or \nopostamble. + + +\generate{\file{bits.stq}{\from{bits.sty}{}}} + +\Msg{} +\Msg{***********************************************************************} +\Msg{*} +\Msg{* The file bits.stq is a faster replacement for the file} +\Msg{* bits.sty.} +\Msg{*} +\Msg{* bits.stq is stripped of comments (documentation) and must be} +\Msg{* renamed bits.sty and placed where LaTeX can find it} +\Msg{* before it may be used.} +\Msg{*} +\Msg{***********************************************************************} +\Msg{} + +\endbatchfile diff --git a/Master/texmf-dist/doc/latex/frankenstein/unsupported/bits.pdf b/Master/texmf-dist/doc/latex/frankenstein/unsupported/bits.pdf new file mode 100644 index 00000000000..bd635a1d872 Binary files /dev/null and b/Master/texmf-dist/doc/latex/frankenstein/unsupported/bits.pdf differ diff --git a/Master/texmf-dist/doc/latex/frankenstein/unsupported/bits.sty b/Master/texmf-dist/doc/latex/frankenstein/unsupported/bits.sty new file mode 100644 index 00000000000..630fa00409c --- /dev/null +++ b/Master/texmf-dist/doc/latex/frankenstein/unsupported/bits.sty @@ -0,0 +1,1070 @@ +%^^A* legal notices +% \iffalse +% +% This program is part of the Frankenstein bundle for LaTeX. +% +% Copyright 1995-2001 Matt Swift . +% +% This file contains both the code and documentation for the +% bits LaTeX package. It will work ONLY if it is placed in a +% proper directory. Files called README, INSTALL, bits.tex +% and bits.ins should have also been distributed to you +% with this file. See them for more information on how to typeset +% the documentation with LaTeX and how to generate a version of this +% file that will work faster than this one. +% +% This program is free software; you may redistribute it and/or +% modify it under the conditions of the LaTeX Project Public +% License, either version 1.2 or (at your option) any later version. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt, and version 1.2 or later is +% part of all distributions of LaTeX version 1999/12/01 or later. +% +% 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 +% LaTeX Project Public License for more details. +% +% \fi +% +%^^A* checks +% +%^^A NOTE: The character table, with two %'s, will get written to all files. +%% \CharacterTable +%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z +%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z +%% Digits \0\1\2\3\4\5\6\7\8\9 +%% Exclamation \! Double quote \" Hash (number) \# +%% Dollar \$ Percent \% Ampersand \& +%% Acute accent \' Left paren \( Right paren \) +%% Asterisk \* Plus \+ Comma \, +%% Minus \- Point \. Solidus \/ +%% Colon \: Semicolon \; Less than \< +%% Equals \= Greater than \> Question mark \? +%% Commercial at \@ Left bracket \[ Backslash \\ +%% Right bracket \] Circumflex \^ Underscore \_ +%% Grave accent \` Left brace \{ Vertical bar \| +%% Right brace \} Tilde \~} +% +% \CheckSum{602} +% +% \newcommand\scheme [2] {\ensuremath{\frac{#1}{#2}}} +% +%^^A** abstract +% \begin{abstract} +% Bits provides a programmer's interface for a new idea called a +% \term{bit}, which is like an environment but has a title, author, and +% other attributes usually only associated with the \env{document} +% environment. +% +% This package is useful but may have problems and is unsupported. +% \end{abstract} +% \tableofcontents +% +% \part{Discussion} +% +% This documentation is spotty, but should be accurate. Please feel free to +% write me if you can't figure something out. +% +% \section{Basic concepts and terminology} +% \subsection{Users' interface} +% +% A \term{bit} is the smallest part of a document treated as an independent +% unit. Each \term{bit} has an explicit type called a \term{bitstyle}. +% (Examples: generic, story, poem, recipe, letter.) A bit's bitstyle +% determines the markup that is legal within the bit. (Additional declarations +% can be made on a per-bit basis, also; see below.) A bit's formatting is +% determined by both its bitstyle and the copystyle (see below) of the +% document. New bitstyles can be added. +% +% A \term{copystyle} is one of an explicit list of ways to present a collection +% of bits together in a single document. It might well be called a +% ``documentstyle'' and be implemented as a \LaTeX{} documentclass, but if they +% are kept separate, copystyles and documentclasses can coexist with each +% other, and this leads to a greater flexibility when dealing with existing +% documents. The relationship between copystyles and documentclasses is +% discussed further below. New copystyles can be added. +% +% \subsection{Programmers' interface} +% +% The formatting of a bit is considered to involve a fixed number of +% \term{tasks}. Examples of tasks performed near the beginning of formatting a +% bit are inserting some space after the preceding bit, and formatting the +% title of the current bit. Each task must be assigned a \term{procedure} that +% accomplishes that task. (Notice that the null procedure might be a suitable +% procedure for some tasks in some situations.) We call a mapping of some +% tasks to suitable procedures a \term{profile}. We call a profile that maps +% the \emph{complete} set of tasks a \term{scheme}. You need a scheme to +% format a bit, and the scheme to use for a given bit is determined by its +% bitstyle and copystyle. +% +% Now we are in a position to try to visualize the variable space established +% by the \term{bits} package. It's not simple, and if you think of a better +% way, please let me know. +% +% As just explained, to format a bit, you need a scheme, which is a series of +% procedures suitable for a series of certain tasks. To be concrete, let's +% assume there are 4 tasks. Identify each task with a general color. In our +% example, let's use red, blue, green, and yellow. Think of a scheme as a +% stack of colored blocks, each representing a procedure. The top block, +% corresponding to the first task, is red, the second block is blue, the third +% green, and the bottom block, corresponding to the final task, is yellow. +% +% Suppose I create a new scheme, the same as the original except for a slight +% change in the first task. This would be represented by changing the color of +% the red, or top, block to a different shade of red. The precise color of a +% block represents the specific procedure. A general color is associated with +% a task because it is expected that no procedure suitable for one task is +% going to be suitable for another task. The redness of a block represents its +% suitability for the the first task. +% +% (If we wanted to be exact, we would observe that some procedures, such as the +% null procedure, might be suitable for more than one task. OK, let such +% procedures be a shade of grey, with the null task, let us say, being white. +% Then the colored block at each task's position will have either the +% associated color of the task or a shade of grey.) +% +% I have drawn in your mind the picture of two stacks of 4 colored blocks, +% differing only in the shade of the top (red) block. Let's give them the +% names Jack and Jill. Let Jack and Jill represent two bitstyles. You can +% imagine as many bitstyles as you like---Jack, Jill, Hank, Wendy, and +% Beauregard; all are stacks of four colored blocks arranged next to each other +% in a line, a red block on top, a blue block, a green block, and a yellow +% block. Some of the stacks might even have identical blocks. This would mean +% that two bitstyles have the same scheme. You refer to bitstyles by their +% name, so in the future, you could change one bitstyle and make it different +% from the other. In fact, when you create a new bitstyle, it is initially +% simply a copy of an existing bitstyle. Then you can modify the new one if +% you want to. +% +% bitclass? bittype? bitstyle best describes a scheme. bitscheme? +% +% You've almost got the whole picture now. We need to consider copystyles. +% Suppose Jack, Jill, Hank, Wendy, and little Beauregard are all siblings. +% They have the same last name, Grimm. Grimm is the name of a copystyle. +% Across town, or in a parallel universe, there is another set of siblings +% Jack, Jill, etc.\ with a different last name, Beedle. They, too, are +% represented by a line of stacks of colored blocks. Line up the Beedle +% siblings behind the Grimm siblings, and you now have a pile of colored blocks +% 4 high (4 tasks), 5 wide (the 5 bitstyles Jack, Jill, etc.), and 2 deep (the +% 2 copystyles Grimm and Beedle). +% +% That's it. Given a bitstyle (e.g., Hank) and a copystyle (e.g., Beedle), you +% have a particular scheme for formatting a bit. +% +% As you may notice, there is so far no justification for the metaphor of +% family. Nothing I've said yet about tasks and procedures corresponds to the +% metaphor's suggestion that Hank Beedle is probably more similar to Wendy +% Beedle than he is to Hank Grimm; or that when putting together the Beedles in +% a family photograph, there is a certain pleasing aesthetic unity that would +% be lacking if any of those odd-looking Grimms were to stray into the picture. +% In fact, technically, each scheme can be completely different from every +% other scheme, Hank Beedle being as different from Wendy Beedle as he is from +% Hank Grimm. +% +% These metaphors are justified when you consider the way in which new +% copystyles and bistyles are added, and the expected purposes for bitstyles +% and copystyles. +% +% OR: family of Poems, family of recipes. First name is the copystyle. Then a +% document would consist of Hank Poem, Hank Recipe, etc. = Standard Poem, +% Standard Recipe; Fancy Poem, Fancy Recipe. +% +% Or, each family has one Poem, one Recipe, etc. So a document puts together +% members of a family, Poem, Recipe, etc. +% +% \section{Usage} +% +% Bits look like \LaTeX{} environments that take two arguments. (Surprise +% surprise that's exactly what they are.) Here's an example of a bit with +% hypothetical bitstyle ``poem'': +% +% \begin{codeexample} +% \begin{poem}{Butterflies}{\subtitle{An Address to My Stomach}} +% O jittery one, quavering tub, \\ +% Rumble not your complaints so violently! \\ +% Remember your jollitude just last Sunday, \\ +% The pound of bovine ambrosia \\ +% I filled you to the gills with \\ +% To silence you, on this, my wedding day. +% \end{poem} +% \end{codeexample} +% +% \section{Extension and customization} +% \subsection{Customizing an instance of a bit} +% +% Fat little Hank Beedle might come with a note tied around his neck on a piece +% of yarn, with special instructions on his care and feeding from his mother. +% ``Peanuts will give him hives,'' it might say. And ``A quart of sour cream +% is always welcome.'' +% +% \subsection{Adding bitstyles, copystyles, and tasks} +% +% When you add a new bitstyle $B'$, you create a new scheme for each of the +% existing copystyles. You name an existing bitstyle $B$ and zero or more +% profiles. For each existing copystyle $C$, the profiles will be composed +% with the \scheme{B}{C} scheme to obtain the new scheme \scheme{B'}{C}. +% (Notice that if any of the profiles you name are schemes, the choice of $B$ +% is irrelevant, and that if you name no profiles, $B' = B$.) +% +% The procedure is identical when you add a new copystyle. Just swap +% references to copystyles and bibstyles in the last paragraph. +% +% You can add to list of tasks. When you do this, you must assign a default +% procedure for it (part of the \cat{Z} scheme, the universal default). All +% existing bitstyles and copystyles will inherit the same procedure for this +% task. This makes sense because they've presumably all done the task the same +% way before, if they've done it at all. You can promulgate changes with +% \cs\Promulgate etc. +% +% \section{Notes} +% +% FIX; bit type determines its markup; bitstyle is a mapping of tasks to +% procedures. +% +% \StopEventually{} +% +% \part{Implementation} +% +% \section{Version control} +% +% \begin{macro}{\fileinfo} +% \begin{macro}{\DoXUsepackagE} +% \begin{macro}{\HaveECitationS} +% \begin{macro}{\fileversion} +% \begin{macro}{\filedate} +% \begin{macro}{\docdate} +% \begin{macro}{\PPOptArg} +% These definitions must be the first ones in the file. +% \begin{macrocode} +\def\fileinfo{basic bits (Frankenstein's guts)} +\def\DoXPackageS {} +\def\fileversion{v1.2} +\def\filedate{2001/08/31} +\def\docdate{2001/08/31} +\edef\PPOptArg {% + \filedate\space \fileversion\space \fileinfo +} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% If we're loading this file from a \cs\ProcessDTXFile command (see the +% \package{compsci} package), then \cs\JusTLoaDInformatioN will be defined; +% othewise we assume it is not (that's why the FunkY NamE). +% +% If we're loading from \cs\ProcessDTXFile, we want to load the packages listed +% in \cs\DoXPackageS (needed to typeset the documentation for this file) and +% then bail out. Otherwise, we're using this file in a normal way as a +% package, so do nothing. \cs\DoXPackageS, if there are any, are declared in +% the \ext{dtx} file, and, if you're reading the typeset documentation of this +% package, would appear just above. (It's OK to call \cs\usepackage with an +% empty argument or \cs\relax, by the way.) +% \begin{macrocode} +\makeatletter% A special comment to help create bst files. Don't change! +\@ifundefined{JusTLoaDInformatioN} {% + }{% ELSE (we know the compsci package is already loaded, too) + \UndefineCS\JusTLoaDInformatioN + \SaveDoXVarS + \eExpand\csname DoXPackageS\endcsname\In {%use \csname in case it's undefined + \usepackage{#1}% + }% + \RestoreDoXVarS + \makeatother + \endinput +}% A special comment to help create bst files. Don't change! +% \end{macrocode} +% +% Now we check for \LaTeX2e and declare the LaTeX package. +% \begin{macrocode} +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{bits}[\PPOptArg] +% \end{macrocode}^^A special comment to help create bst files. Don't change! +% +% ^^A NOTE: We have to compensate for the above backslashes, which are not +% ^^A actually in the .dtx file the author works on, by adding to the +% ^^A CheckSum. +%% +% \AddToCheckSum{17}^^A `dtx-update-checksum' automatically handles this. +% \AddToCheckSum{7}^^A The half a macrocode env. at the top is missed, however... +% \AddToCheckSum{10}^^A ... and so are the 5 \defs from the .dtx file +% ^^A that precede it. +% \IfCitations {% +% \AddToCheckSum{2}^^A When \initelyHavECitationS is defined in +% } ^^A the .dtx file, we need 2 more in the CheckSum. +% +% +% \section{Preliminaries} +% +% \subsection{Requirements} +% +% \begin{macrocode} +\RequirePackage{blkcntrl,letterhead,moredefs,relsize} +% \end{macrocode} +% +% \subsection{Option processing} +% +% \begin{macrocode} +\DeclareOption{poetica} {% + \RequirePackage{poetica} + \newcommand\FullTitlePoetica {% + \begin{Poetica} + \fontshape{t}\selectfont + \BitTitle\\% + \ifx\BitSubtitle\ShortEmpty \else + \BitSubtitle\\% + \fi + \end{Poetica} + } + \AtBeginDocument {% + \let\FullTitle\FullTitlePoetica + } +} +% \end{macrocode} +% FIX: hmm, I think I always want user options so that I can have two different +% packages require a package, and they don't have to match up on their options. +% What about options that can only be used in preamble, that would be the right +% thing for many cases I think. Aak, \cname{ends} can't be defined without +% special handling? Hmm, seems like it can. +% \begin{macrocode} +\DeclareBooleanUserOptions{ends}{noends} +\DeclareBooleanUserOptions{signed}{anonymous} + +\DeclareBooleanOptions{titlepage}{notitlepage} + +\ExecuteOptions{ends,notitlepage,signed} +\ProcessOptions +% \end{macrocode} +% +% \section{Making new copy and bit styles} +% +% \subsection{General stuff} +% +% \begin{macro}{\bt@a} +% \begin{macro}{\bt@b} +% \begin{macro}{\bt@c} +% \begin{macro}{\bt@d} +% \begin{macro}{\bt@e} +% \mbox{} +% \begin{macrocode} +\ReserveCS\bt@a +\ReserveCS\bt@b +\ReserveCS\bt@c +\ReserveCS\bt@d +\ReserveCS\bt@e +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\bt@tasks} +% \begin{macro}{\bt@bitstyle@list} +% \begin{macro}{\bt@copystyle@list} +% Comma-separated lists of valid bitstyles, copystyles, and tasks. We start +% them off non-null to bootstrap the system of adding new ones, which adds +% them preceded by a comma. +% \begin{macrocode} +\newcommand\bt@tasks {% + environment,end@bit,begin@bit,interbits,firstbit% + ,settitle,setfirsttitle% +} +\newcommand\bt@bitstyle@list {% + generic% +} +\newcommand\bt@copystyle@list {% + standard% +} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\if@bt@trymoreschemes@} +% \begin{macro}{\@bt@trymoreschemes@true} +% \begin{macro}{\@bt@trymoreschemes@false} +% \begin{macro}{\bt@list@car} +% \begin{macro}{\bt@list@cdr} +% \cname{bt@list@car} and \cname{bt@list@cdr} expand to the car and cdr of a +% comma-separated list, respectively. +% \begin{macrocode} +\provideboolean{@bt@trymoreschemes@} + +\NewName{bt@list@car}{#1,#2\@nil} {% + #1% +} +\NewName{bt@list@cdr}{#1,#2\@nil} {% + #2% +} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\NewCopystyle} +% \begin{macro}{\NewBitstyle} +% \begin{macro}{\bt@assign@task} +% To define a new style, you specify a base style and a list of profiles. +% Each of these can be empty. If no base style is specified, the root style +% is used (i.e., standard copystyle or generic bitstyle). See discussion +% above. +% \begin{macrocode} +\newcommand\NewCopystyle [2][Z] {% args: [profile-list] new-copystyle + \addto@macro\bt@copystyle@list{,#2}% + \@for\bt@a:=\bt@bitstyle@list \do {% + \@for\bt@b:=\bt@tasks \do {% + \eExpand\bt@b\In {% + \expandafter\bt@assign@task + \expandafter{\bt@a}{#2}{##1}{#1}% + }% + }% + }% +} +\newcommand\NewBitstyle [2][Z] {% args: [scheme-list] new-bitstyle + \addto@macro\bt@bitstyle@list{,#2}% + \@for\bt@a:=\bt@copystyle@list \do {% + \@for\bt@b:=\bt@tasks \do {% + \eExpand\bt@a\In {% + \eExpand\bt@b\In {% +% \eExpandNest\bt@b\In {% FIX? + \bt@assign@task{#2}{##1}{####1}{#1}% + }% + }% + }% + }% +} +\newcommand\bt@assign@task [4] {% args: bitstyle copystyle + % task scheme-list + \@bt@trymoreschemes@true + \edef\bt@d{#4}% scheme-list that diminishes; edef not necessary + \@whilesw\if@bt@trymoreschemes@\fi {% +% \end{macrocode} +% There's at least one element to start; and the last scheme (\cat{Z}) is always +% defined. +% \begin{macrocode} + \edef\bt@c{% + \bt@list@car\bt@d,\@nil + } + \@ifundefined{bt@make@#3@\bt@c} {% + \edef\bt@d{\bt@list@cdr\bt@d,\@nil}% + }{% ELSE + \@nameuse{bt@make@#3@\bt@c}{#1}{#2}% + \@bt@trymoreschemes@false + }% + }% +} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\PromulgateTaskAcrossCopystyles} +% \begin{macro}{\PromulgateTaskAcrossBitstyles} +% \mbox{} +% \begin{macrocode} +\newcommand\PromulgateTaskAcrossCopystyles [3] {% args: task scheme bitstyle + \@for\bt@a:=\bt@copystyle@list \do {% + \@nameuse{bt@make@#1@#2}{#3}{\bt@a}% + }% +} +\newcommand\PromulgateTaskAcrossBitstyles [3] {% args: task scheme copystyle + \@for\bt@a:=\bt@bitstyle@list \do {% + \@nameuse{bt@make@#1@#2}{\bt@a}{#3}% + }% +} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\bt@begin@bit@common} +% \begin{macro}{\BitStyle} +% \begin{macro}{\PreBitAll} +% \cname{bt@begin@bit@common} should be called early in the sequence of +% beginning a bit. +% \begin{macrocode} +\providesavebox\sc@box@a +\newcommand\bt@begin@bit@common [2] {% + \title{#1}% +% \end{macrocode} +% We want to clear all optional attributes here, such as subtitle. FIX: should +% be a list of attributes and perhaps even abstract clearing functions on them, etc. +% \begin{macrocode} + \subtitle{}% +% \end{macrocode} +% Execute stuff: FIXME: nice hooks can be set here to execute things later +% We introduce the \par so that extra spaces in the argument are not going to +% mean anything. It would be complicated but possible by means perhaps of +% \cs\nullfont to avoid starting a paragraph here. Arg, the kernel is so +% opaque on how it handles ignoring spaces and what it's doing with everypar. +% \begin{macrocode} + \par #2% + \refstepcounter{bit}% + \ifnum\value{bit} = \@ne + \@nameuse{bt@firstbit@\CopyStyle}% + \else + \@nameuse{bt@interbits@\CopyStyle}% + \fi +} +\ReserveCS\BitStyle +\ReserveCS\PreBitAll +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \subsection{Schemes} +% +% \subsubsection{The \cat{Z} scheme} +% +% \begin{macro}{\FullTitle} +% The \cat{Z} scheme is always the last resort deafult, and it corresponds to +% the standard copystyle and the generic bitstyle. +% +% FIXME: whenever we have a dummy we have to use DefName or else we error +% FIXME: Aak, when Promulgating we need defnames for everyting! +% \begin{macrocode} +\newcommand\bt@make@environment@Z [2] {% args: bitstyle dummy + \DefName{end#1}{}{}% + \DefName{#1}{##1##2} {% + \DefName{end#1}{} {% + \@nameuse{bt@end@bit@#1@\CopyStyle}{##1}% + }% + \@nameuse{bt@begin@bit@#1@\CopyStyle}{##1}{##2}% + }% +} +\newcommand\bt@make@interbits@Z [2] {% args: dummy copystyle + \DefName{bt@interbits@#2}{} {% + \relax + \par\pagebreak[2]\bigskip\bigskip + \@nameuse{bt@settitle@\BitStyle @#2}% + }% +} +\newcommand\bt@make@firstbit@Z [2] {% args: dummy copystyle + \DefName{bt@firstbit@#2}{} {% + \relax + \par\pagebreak[2]% + \thispagestyle{empty}% + \@nameuse{bt@setfirsttitle@\BitStyle @#2}% + }% +} +\newcommand\bt@make@begin@bit@Z [2] {% args: bitstyle copystyle + \DefName{PreBit#1}{}{}% + \DefName{bt@begin@bit@#1@#2}{##1##2} {% + \def\BitStyle{#1}% + \bt@begin@bit@common{##1}{##2}% + \PreBitAll + \@nameuse{PreBit#1}% + }% +} +\newcommand\bt@make@end@bit@Z [2] {% args: bitstyle copystyle + \DefName{bt@end@bit@#1@#2}{##1} {% + \TheEnd + }% +} +\newcommand\bt@make@settitle@Z [2] {% args: bitstyle copystyle + \DefName{bt@settitle@#1@#2}{} {% + \relax + \begin{center}\FullTitle\end{center} + }% +} +\newcommand\bt@make@setfirsttitle@Z [2] {% args: bitstyle copystyle + \DefName{bt@setfirsttitle@#1@#2}{} {% + \relax + \begin{center}\FullTitle\end{center} + \DTypeout{FIXME setfirsttitle in Z scheme}% + }% +} +% \end{macrocode} +% When there is no subtitle, it sometimes seems better for the title to be set +% one size larger than the copy; but when you have a subtitle, you need the +% title two sizes larger so that the subtitle can be an intermediate size. +% With CM fonts, because their boldface is extended, a bold subtitle at the +% same size as the copy looks good, and larger is too larger. So this is a +% tricky issue. A basic kludge that would work for me, given the font families +% I have an use, would be to check for CM fonts here, or on the other hand +% specifically for an extended boldface, or for Dante/Bulmer, or set a flag in +% my dante.sty or bulmer.sty. +% \begin{macrocode} +\newcommand\FullTitle {% + \relsize{2}\bfseries +% \relsize{1}\bfseries + \BitTitle\\% + \ifx\BitSubtitle\ShortEmpty + \else + \csname sbseries\endcsname % this way it's harmless if undefined + \relsize{-1}\BitSubtitle\\% + \fi +} +% \end{macrocode} +% \end{macro} +% +% \subsubsection{The \cat{P} scheme} +% +% \begin{macro}{\bt@make@setfirsttitle@P} +% \begin{macro}{\bt@make@settitle@P} +% \begin{macro}{\bt@make@end@bit@P} +% \begin{macro}{\bt@make@begin@bit@P} +% The \cat{P} scheme was created for the poem bitstyle. +% \begin{macrocode} +\newcommand\bt@make@begin@bit@P [2] {% args: bitstyle copystyle + \DefName{bt@begin@bit@#1@#2}{##1##2} {% + \def\BitStyle{#1}% + \bt@begin@bit@common{##1}{##2}% + \PreBitAll + \verse % FIX: why does the PreBitAll hook come before \verse and the + % BitHook come after? Why doesn't the PreBitAll come in + % @common@ -- well, so that a bit can put stuff before the hooks. + \@nameuse{PreBit#1}% + }% +} +\newcommand\bt@make@end@bit@P [2] {% args: bitstyle copystyle + \DefName{bt@end@bit@#1@#2}{##1} {% + \relax + \endverse + \TheEnd + }% +} +\newcommand\bt@make@settitle@P [2] {% args: bitstyle copystyle + \DefName{bt@settitle@#1@#2}{} {% + \relax + \begin{verse}\FullTitle\end{verse} + }% +} +\newcommand\bt@make@setfirsttitle@P [2] {% args: bitstyle copystyle + \DefName{bt@setfirsttitle@#1@#2}{} {% + \relax + \begin{verse}\FullTitle\end{verse} + \DTypeout{this is setfirsttitle in P scheme}% + }% +} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \subsubsection{The \cat{R} scheme} +% For the prose bitstyle. +% \begin{macrocode} +\newcommand\bt@make@settitle@R [2] {% + \DefName{bt@settitle@#1@#2}{} {% + \relax + \ifx\BitTitle\ShortEmpty\else + \noindent + \begingroup + \relsize{1}% + \bfseries + \BitTitle + \endgroup + \par\smallskip + \fi + }% +} +% \end{macrocode} +% +% \subsubsection{The \cat{T} scheme} FIX: for what? +% +% \section{The standard copystyle and generic bitstyle} +% +% \begin{macrocode} +\@for\bt@e:=\bt@tasks \do {% + \PromulgateTaskAcrossBitstyles{\bt@e}{Z}{standard} +} +% \end{macrocode} +% +% \section{Bit Styles} +% +% \subsection{Story} +% This is the same as generic. +% \begin{macrocode} +\NewBitstyle{generic} +\NewBitstyle{story} +% \end{macrocode} +% +% \subsection{Poem} +% +% \begin{macrocode} +\NewBitstyle{poem} +\PromulgateTaskAcrossCopystyles{begin@bit}{P}{poem} +\PromulgateTaskAcrossCopystyles{end@bit}{P}{poem} +\PromulgateTaskAcrossCopystyles{settitle}{P}{poem} +\PromulgateTaskAcrossCopystyles{setfirsttitle}{P}{poem} +% \end{macrocode} +% +% \subsection{Prose} +% +% \begin{macrocode} +\NewBitstyle{prose} +\PromulgateTaskAcrossCopystyles{settitle}{R}{prose} +% \end{macrocode} +% +% \section{Copy Styles} +% +% \begin{macrocode} +\NewCopystyle{titlepage} + +\newcommand\bt@make@setfirsttitle@T [2] {% args: bitstyle copystyle + \DefName{bt@setfirsttitle@#1@#2}{} {% + \thispagestyle{empty}% + \vspace*{\fill}% + \begin{center} + {\relsize{5}\BitTitle \\}% + \ifx\BitSubtitle\ShortEmpty\else + {\relsize{3}\BitSubtitle \\}% + \fi + \end{center} + \vfill +% \CoverNotes +% \vfill + \par + \begingroup + \sffamily + \hfill + \begin{tabular}{r@{\hspace{\@ne em}}r} + Copy of:&\todayabbrev \\% + Version of:&\Lastchange \\% + Date:&\Date \\% + \end{tabular} + \par\bigskip\bigskip + \begin{raggedleft} + \def\and{\\}% + \larger\scshape\Author +% \end{macrocode} +% A final |\par| is needed to close the paragraph in raggedleft mode. +% \begin{macrocode} + \par + \end{raggedleft} + \endgroup + \newpage + \setcounter{page}{\@ne}% + }% +} +\PromulgateTaskAcrossBitstyles{setfirsttitle}{T}{titlepage} +% \end{macrocode} +% +% \section{Bit counters and interbit skips} +% +% \begin{macro}{\c@bit} +% \begin{macro}{\c@bitbit} +% \begin{macro}{\c@bitbitbit} +% \mbox{} +% \begin{macrocode} +\providecounter{bit} +\providecounter{bitbit}[bit] +\providecounter{bitbitbit}[bitbit] +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\bt@bitskip} +% \begin{macro}{\InterBitBreak} +% \begin{macro}{\InterBitBitBreak} +% \begin{macro}{\InterBitBitBitBreak} +% \cs\medbreak is penalty -100; \cs\smallbreak is 50. FIXME: what's going on +% here? +% \begin{macrocode} +\newcommand\bt@bitskip[1] {% + \par + \ifdim \lastskip < \bigskipamount + \removelastskip + \penalty -500% + #1% + \fi +} +\newcommand\InterBitBreak {% + \bt@bitskip + \bigskip +} +\newcommand\InterBitBitBreak {% + \bt@bitskip + \medskip +} +\newcommand\InterBitBitBitBreak {% + \bt@bitskip + \smallskip +} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\bitbit} +% \begin{macro}{\bitbitbit} +% \begin{macro}{\bt@bitbit} +% \begin{macro}{\bt@bitbitbit} +% FIXME: These should be made attributes of the Generic Bit Style. +% \begin{macrocode} +\newcommand\bitbit {% + \@ifstar {% + \bt@bitbit{}% + }{% ELSE + \refstepcounter{bitbit}% + \bt@bitbit{\thebitbit\ }% + }% +} +\newcommand{\bt@bitbit} [2] {% + \ifnum\value{bitbit}=\@ne \else + \InterBitBitBreak + \fi + \noindent #1{\relsize{-1}\bfseries #2}% + \par\nobreak + \smallskip +} +\newcommand\bitbitbit {% + \@ifstar {% + \bt@bitbitbit{}% + }{% ELSE + \refstepcounter{bitbitbit}% + \bt@bitbitbit{\thebitbitbit\ }% + }% +} +\newcommand\bt@bitbitbit [2] {% + \ifnum\value{bitbitbit}=\@ne \else + \InterBitBitBitBreak + \fi + \noindent #1{\relsize{-1}\bfseries #2}% + \par\nobreak + \smallskip +} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \section{Userinfos} +% +% \begin{macro}{\Author} +% \begin{macro}{\author} +% \begin{macro}{\Lastchange} +% \begin{macro}{\lastchange} +% \begin{macro}{\Date} +% \begin{macro}{\date} +% \begin{macro}{\title} +% \begin{macro}{\BitTitle} +% \begin{macro}{\BitSubtitle} +% \begin{macro}{\Subtitle} +% \begin{macro}{\subtitle} +% When we redefine \cs\author, \cs\date, and \cs\title, we add a new action to +% the original meaning. This means that standard commands like \cs\maketitle +% will still perform as expected, if someone prefers to use that instead of the +% \Frankenstein commands. +% \begin{macrocode} +\SaveCS\date + +\newcommand*\Date {% + \todayabbrev +} +\defcommand\date [1] {% + \MDSaveddate{#1}% + \def\Date{#1}% +} +\SaveCS\title +\ReserveCS\BitTitle + +\defcommand\title [1] {% + \MDSavedtitle{#1}% + \def\BitTitle{#1}% +} +% \end{macrocode} +% Why did I originally want \cs\Subtitle to be a user command instead of \cs\subtitle? +% \begin{macrocode} +\NewUserInfo*[\subtitle]\BitSubtitle +%\NewUserInfo*[\Subtitle]\BitSubtitle +%\newlet\subtitle\Subtitle +\NewUserInfo*\Lastchange +\lastchange{\todayabbrev} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\Copystyle} +% \begin{macro}{\copystyle} +% \mbox{} +% \begin{macrocode} +\NewUserInfo*\CopyStyle +\copystyle{standard} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \section{Dates} +% +% \begin{macro}{\today} +% \begin{macro}{\todayabbrev} +% \mbox{} +% \begin{macrocode} +\def\today {% + \number\day\space\ifcase\month\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\space\number\year +} +\newcommand\todayabbrev {% + \number\day\space\ifcase\month\or + Jan\or Feb\or + Mar\or Apr\or May\or Jun\or Jul\or Aug\or Sep\or + Oct\or Nov\or Dec\fi\space\number\year +} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\copywrite} +% This adds a copyright message to the beginning of \cs\Notes. Its single +% argument should be a year. +% \begin{macrocode} +\newcommand\copywrite [1] {% + \edef\Notes {% + \copyright#1 All rights reserved. \Notes + }% +} +% \end{macrocode} +% \end{macro} +% +% \section{Ends} +% +% \begin{macro}{\EndSign} +% It's very hard to attach this thing without allowing a page break before it. FIX. +% \begin{macrocode} +\newcommand\EndSign {% + \par\nobreak + \vspace{2\bigskipamount}% multiplication turns glue into dimen. + \hfill +% \end{macrocode} +% We do this so that |\Author| can have |\\|s in it. +% \begin{macrocode} + \begingroup + \scshape + \let\and\@tabularcr + \begin{tabular}{c} + \Author \\% + \relsize{-1}\itshape\Date + \end{tabular}% + \endgroup +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\theend} +% User command which (almost) always makes an \cs\EndSign: +% \begin{macrocode} +\newcommand\theend {% + \if@signed@ + \EndSign + \fi +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\TheEnd} +% The end of a bit calls \cs\TheEnd. The default definition is either +% nothing or \cs\EndSign, depending on some condition. +% \begin{macrocode} +\newcommand\TheEnd {% + \def\sc@t@c {% + prizes% + }% + \let\sc@t@a\EndSign + \ifx\CopyStyle\sc@t@c + \InitCS*\sc@t@a + \else + \if@signed@ + \if@ends@ +% FIX: when you get the footer going... +% \ifnum\value{page} < 2% +% \InitCS*\sc@t@a +% \fi + \else + \InitCS*\sc@t@a + \fi + \else + \InitCS*\sc@t@a + \fi + \fi + \sc@t@a +} +% \end{macrocode} +% \end{macro} +% +% \section{Version control} +% +% We use macros instead of boxes, because at this point some of the macros in +% the boxes may change their meaning. +% +% Algorithm: We will maintain two \cs\hbox es |to \textwidth| each time +% \cs\MakeCover is called. Set the footboxes to |\v@idbox| here. Whenever +% |\MakeCover| is called, it should stack another |\vbox| with the right +% information in it into both boxes. The information is expanded, and thus the +% macro contents can change between calls to |\MakeCover|, but the box being +% built inserts two different |\vboxes| with their value at the moment. +% +% \begin{macro}{\bt@vcbox} +% \begin{macro}{\VersionControlString} +% \begin{macro}{\VersionControlAuthorString} +% \mbox{} +% \begin{macrocode} +\newcommand\BTVersionWord {Version} +\newcommand\BTCopyWord {Copy} +\newcommand\bt@vcbox {% + \footnotesize + \ifx\Lastchange\ShortEmpty\else + {\bfseries \BTVersionWord:} {\slshape \Lastchange}% + \fi + \hspace{\@ne em}% + {\bfseries \BTCopyWord:} {\slshape \todayabbrev}% +} +\newcommand\VersionControlString {% + \hfill \bt@vcbox \hfill +} +% \end{macrocode} +% I should assign some names to the various meanings of and, like protect. +% \begin{macrocode} +\newcommand\VersionControlAuthorString {% + \bt@vcbox \hfill {\scshape\def\and{\unskip, \ignorespaces}\Author}% +} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\whitespace} +% \mbox{} +% \begin{macrocode} +\requirecommand\whitespace {% + \bigbreak +} +% \end{macrocode} +% \end{macro} +% +% \part{Configuration} +% +% We leave the rest to a configuration file. +% \begin{macrocode} +\InputIfFileExists{bits.cfg}{}{} +% \end{macrocode} +% +% The contents of the distributed configuration file are below. +% +% \InputIfFileExists{bits.cfg}{}{} +% +% \Finale diff --git a/Master/texmf-dist/doc/latex/frankenstein/unsupported/bits.tex b/Master/texmf-dist/doc/latex/frankenstein/unsupported/bits.tex new file mode 100644 index 00000000000..dca970a548c --- /dev/null +++ b/Master/texmf-dist/doc/latex/frankenstein/unsupported/bits.tex @@ -0,0 +1,67 @@ +% bits.tex -- documentation for the bits LaTeX package. +% +% This program is part of the Frankenstein bundle for LaTeX2e. +% +% Copyright (C) 1995-2001 Matt Swift +% +% This program is free software; you may redistribute it and/or +% modify it under the conditions of the LaTeX Project Public +% License, either version 1.2 or (at your option) any later +% version. The latest version of this license is in +% http://www.latex-project.org/lppl.txt, and version 1.2 or later +% is part of all distributions of LaTeX version 1999/12/01 or +% later. +% +% 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 +% LaTeX Project Public License for more details. +% +\documentclass{ltxdoc} +\makeatletter +\def\part {% + \clearpage + \@afterindentfalse + \secdef\@part\@spart +} +\def\StripV #1{\E@cdr #1\@nil} +\makeatother +\usepackage{attrib,compsci} +\newbook\manual {Chicago\nocite{chicago:14} Manual of Style}[Chicago Manual] +\newbook\MLAman {The\nocite{mlaman} MLA Style Manual and Guide to Scholarly Publishing} + [The MLA Style Manual] +\newtheorem{lessoninternal}{Lesson} +\newenvironment{lesson} {% + \let\AttribInit\sffamily + \let\PreTrib\textsection + \let\PostTrib\ShortEmpty + \lessoninternal + } {% + \endlessoninternal + } +\newcommand\manualref [1] {\textsf{\S #1}} +\ProcessDTXFile{bits.sty} +\newlet\MaybeABib\relax +\IfCitations { + \def\MaybeABib {% + \newpage + \bibliographystyle{achicago}% + \bibliography{frankenstein}% + } + \SaveDoXVarS + \usepackage{achicago} + \RestoreDoXVarS +} +\CodelineIndex +\EnableCrossrefs +\begin{document} +\date{Version: \StripV\fileversion \qquad Date: \filedate\\ + \relsize{-2}Documentation revision: \docdate} +\author{Matt Swift \email{swift@alum.mit.edu}} +\title{The \textsf{bits} LaTeX package \\\smaller \fileinfo} +\maketitle +\DocInput{bits.sty} +\MaybeABib +\newpage +\PrintIndex +\end{document} diff --git a/Master/texmf-dist/doc/latex/frankenstein/unsupported/drama.ins b/Master/texmf-dist/doc/latex/frankenstein/unsupported/drama.ins new file mode 100644 index 00000000000..d2fb3087545 --- /dev/null +++ b/Master/texmf-dist/doc/latex/frankenstein/unsupported/drama.ins @@ -0,0 +1,64 @@ +% drama.ins -- docstrip driver for the drama LaTeX package +% +% Copyright (C) 1995-2001 Matthew Swift +% Please see the copyright notice in \preamble below. + +% This file, when run through TeX or LaTeX, will generate fast loadable files +% from the .sty, .cls, or .bst files mentioned below. + +\input docstrip +\keepsilent + +\preamble + + This program is part of the Frankenstein bundle for LaTeX. + + Copyright (C) 1995-2001 Matthew Swift + + This file may have one of TWO names, either + drama.sty or drama.stq. This + LaTeX package will work ONLY if it is called drama.sty + and placed in a proper directory. This file should have been + distributed to you with a DIFFERENT file (also) called + drama.sty which functions identically to this one + but contains documentation in comments. This file works faster, + but the other should be kept because it contains the documentation + for this LaTeX package. Files called README and INSTALL should have + also been distributed to you with this file; see them for more + information. + + This program is free software; you may redistribute it and/or + modify it under the conditions of the LaTeX Project Public + License, either version 1.2 or (at your option) any later version. + The latest version of this license is in + http://www.latex-project.org/lppl.txt, and version 1.2 or later is + part of all distributions of LaTeX version 1999/12/01 or later. + + 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 + LaTeX Project Public License for more details. + +\endpreamble + +\askforoverwritefalse + +% This will get changed to either nothing or \nopostamble. + + +\generate{\file{drama.stq}{\from{drama.sty}{}}} + +\Msg{} +\Msg{***********************************************************************} +\Msg{*} +\Msg{* The file drama.stq is a faster replacement for the file} +\Msg{* drama.sty.} +\Msg{*} +\Msg{* drama.stq is stripped of comments (documentation) and must be} +\Msg{* renamed drama.sty and placed where LaTeX can find it} +\Msg{* before it may be used.} +\Msg{*} +\Msg{***********************************************************************} +\Msg{} + +\endbatchfile diff --git a/Master/texmf-dist/doc/latex/frankenstein/unsupported/drama.pdf b/Master/texmf-dist/doc/latex/frankenstein/unsupported/drama.pdf new file mode 100644 index 00000000000..ccc6013db57 Binary files /dev/null and b/Master/texmf-dist/doc/latex/frankenstein/unsupported/drama.pdf differ diff --git a/Master/texmf-dist/doc/latex/frankenstein/unsupported/drama.sty b/Master/texmf-dist/doc/latex/frankenstein/unsupported/drama.sty new file mode 100644 index 00000000000..b74e90f9742 --- /dev/null +++ b/Master/texmf-dist/doc/latex/frankenstein/unsupported/drama.sty @@ -0,0 +1,488 @@ +%^^A* legal notices +% \iffalse +% +% This program is part of the Frankenstein bundle for LaTeX. +% +% Copyright 1995-2001 Matt Swift . +% +% This file contains both the code and documentation for the +% drama LaTeX package. It will work ONLY if it is placed in a +% proper directory. Files called README, INSTALL, drama.tex +% and drama.ins should have also been distributed to you +% with this file. See them for more information on how to typeset +% the documentation with LaTeX and how to generate a version of this +% file that will work faster than this one. +% +% This program is free software; you may redistribute it and/or +% modify it under the conditions of the LaTeX Project Public +% License, either version 1.2 or (at your option) any later version. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt, and version 1.2 or later is +% part of all distributions of LaTeX version 1999/12/01 or later. +% +% 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 +% LaTeX Project Public License for more details. +% +% \fi +% +%^^A* checks +% +%^^A NOTE: The character table, with two %'s, will get written to all files. +%% \CharacterTable +%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z +%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z +%% Digits \0\1\2\3\4\5\6\7\8\9 +%% Exclamation \! Double quote \" Hash (number) \# +%% Dollar \$ Percent \% Ampersand \& +%% Acute accent \' Left paren \( Right paren \) +%% Asterisk \* Plus \+ Comma \, +%% Minus \- Point \. Solidus \/ +%% Colon \: Semicolon \; Less than \< +%% Equals \= Greater than \> Question mark \? +%% Commercial at \@ Left bracket \[ Backslash \\ +%% Right bracket \] Circumflex \^ Underscore \_ +%% Grave accent \` Left brace \{ Vertical bar \| +%% Right brace \} Tilde \~} +% +% \CheckSum{314} +% +%^^A** abstract +% \begin{abstract} +% Defines macros for typesetting a basic production-style stage script. +% +% This package is useful but may have problems and is unsupported. +% \end{abstract} +% \tableofcontents +% +% \part{Discussion} +% +% I am close to handling the insertion of a ``continued'' message at the top +% of the page when a speech is broken across the page. But it's not there +% yet. +% +% \DescribeEnv{script} +% This is the only environment so far, for a basic production-style stage +% script. It is implemented as a bitstyle: see the \package{bits} package +% for details of use. I think you only need to issue an +% \cs\author\marg{author's name} and \cs\date\marg{date} command. Also, +% create an empty file called \file{bits.cfg} on your system (or put the +% \cs\author declaration in it). +% +% Options come in pairs (boldface is default): +% \begin{description} +% \item[\textmd{oneact}/multiact] Multiact scripts use act numbers; oneacts +% just have scenes. +% \end{description} +% +% \DescribeMacro\character +% \cs\character\marg{full description}\marg{name}\marg{csname} defines a new +% character. \meta{full description} is used in the dramatis personae +% listing. \meta{name} is the name to use to refer to the character in stage +% directions, and to introduce their speeches. \cs\character defines a +% command |\|\meta{csname} which prints \meta{name} in the font given in +% \cs\DirectStyle. Use this in stage directions. It is an abbreviation +% macro of category \cat{Character}; following spacing is handled +% automatically for you. See the \package{abbrevs} package for details. Also +% defined is the command +% \DescribeMacro\SpeakAppend +% |\|\meta{csname}|says|, which is used to introduce the character's +% speeches. The suffix ``says'' can be changed by redefining \cs\SpeakAppend +% before using \cs\character. You can also define it before loading the +% \package{drama} package. +% +% \DescribeMacro\scene +% \DescribeMacro\act +% Use \cs\scene and \cs\act to start acts and scenes. +% +% \DescribeMacro\direct +% \DescribeMacro\setstage +% \cs\direct\marg{stage directions}. Use \cs\setstage\marg{stage directions} +% at the beginning of scenes and acts. +% +% \StopEventually{} +% +% \part{Implementation} +% +% \section{Version control} +% +% \begin{macro}{\fileinfo} +% \begin{macro}{\DoXUsepackagE} +% \begin{macro}{\HaveECitationS} +% \begin{macro}{\fileversion} +% \begin{macro}{\filedate} +% \begin{macro}{\docdate} +% \begin{macro}{\PPOptArg} +% These definitions must be the first ones in the file. +% \begin{macrocode} +\def\fileinfo{drama package (Frankenstein's heart)} +\def\DoXPackageS {} +\def\initelyHavECitationS {} +\def\fileversion{v0.2} +\def\filedate{1996/05/05} +\def\docdate{1996/05/05} +\edef\PPOptArg {% + \filedate\space \fileversion\space \fileinfo +} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% If we're loading this file from a \cs\ProcessDTXFile command (see the +% \package{compsci} package), then \cs\JusTLoaDInformatioN will be defined; +% othewise we assume it is not (that's why the FunkY NamE). +% +% If we're loading from \cs\ProcessDTXFile, we want to load the packages listed +% in \cs\DoXPackageS (needed to typeset the documentation for this file) and +% then bail out. Otherwise, we're using this file in a normal way as a +% package, so do nothing. \cs\DoXPackageS, if there are any, are declared in +% the \ext{dtx} file, and, if you're reading the typeset documentation of this +% package, would appear just above. (It's OK to call \cs\usepackage with an +% empty argument or \cs\relax, by the way.) +% \begin{macrocode} +\makeatletter% A special comment to help create bst files. Don't change! +\@ifundefined{JusTLoaDInformatioN} {% + }{% ELSE (we know the compsci package is already loaded, too) + \UndefineCS\JusTLoaDInformatioN + \SaveDoXVarS + \eExpand\csname DoXPackageS\endcsname\In {%use \csname in case it's undefined + \usepackage{#1}% + }% + \RestoreDoXVarS + \makeatother + \endinput +}% A special comment to help create bst files. Don't change! +% \end{macrocode} +% +% Now we check for \LaTeX2e and declare the LaTeX package. +% \begin{macrocode} +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{drama}[\PPOptArg] +% \end{macrocode}^^A special comment to help create bst files. Don't change! +% +% ^^A NOTE: We have to compensate for the above backslashes, which are not +% ^^A actually in the .dtx file the author works on, by adding to the +% ^^A CheckSum. +%% +% \AddToCheckSum{17}^^A `dtx-update-checksum' automatically handles this. +% \AddToCheckSum{7}^^A The half a macrocode env. at the top is missed, however... +% \AddToCheckSum{10}^^A ... and so are the 5 \defs from the .dtx file +% ^^A that precede it. +% \IfCitations {% +% \AddToCheckSum{2}^^A When \initelyHavECitationS is defined in +% } ^^A the .dtx file, we need 2 more in the CheckSum. +% +% +% \begin{macrocode} +\RequirePackage{abbrevs,bits,dialogue,moredefs,relsize} +%\RequirePackage{xmark} +\let\sc@mark\Gobble +\VerboseErrors + +\DeclareBooleanOptions{oneact}{multiact} +\ProcessOptions +% \end{macrocode} +% +% \section{characters} +% +% \begin{macro}{\SpeakAppend} +% \begin{macro}{\sc@cast} +% \begin{macro}{\character} +% +% \begin{macrocode} +\providecommand\SpeakAppend {says} +\ReserveCS\sc@cast +\NewUserAbbrevDefiner\NewCharacterAbbrev{Character} +\let\TMFontCharacter\scshape +\newcommand*\character [3] {% args: dramper name csname + \expandafter\NewCharacterAbbrev\csname #3\endcsname{#2}% + \NewName* {#3\SpeakAppend} {} {% + \speak{#2}% + }% + \addto@macro\sc@cast{,#1}% +} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% The |\@cdr| gets rid of the first silly comma. +% \begin{macrocode} +\newcommand\DramPer {% + \ifx\sc@cast\LongEmpty\else + {\larger\scshape Cast}% + \relax\begin{verse} + \edef\sc@t@a{\E@cdr\sc@cast\@nil}% + \@for\sc@t@b:=\sc@t@a \do {% + \sc@t@b\\% + }% + \relax\end{verse}% +% \end{macrocode} +% Prepare for another set of characters. +% \begin{macrocode} + \InitCS\sc@cast + \bigbreak + \fi +} +% \end{macrocode} +% +% \subsubsection{sectioning} +% +% \begin{macro}{\sc@toks@saved@output} +% We pull some fancy stuff with the output routine here. The algorithm is a +% simpler version of Knuth's \cite[260ff]{knuth:texbook}. +% \begin{macrocode} +\newtokens\sc@toks@saved@output +\sc@toks@saved@output=\output +% \end{macrocode} +% \end{macro} +% +% The |\sc@botmark|, if not empty, will contain text to be inserted at the top +% of the next page. It must contain vertical not horizontal material. +% +% We actually need to communicate the boolean |sc@directing| via the mark, +% because only the information in the marks is guaranteed to reflect the state +% at the end of the page, and not several lines later. +% \begin{macrocode} +\providelength\sc@len + +\newcommand\sc@outputwrapper {% + \setlength{\sc@len}{\dp255}% + \the\sc@toks@saved@output + \def\sc@t@b {% + \sc@botmark + \addtolength{\sc@len}{-\prevdepth}% + \kern\sc@len + }% + \InitCS\sc@t@a + \ifx\sc@botmark\ShortEmpty + \let\sc@t@a\sc@t@b + \else + \ifsc@directing + \let\sc@t@a\sc@t@b + \fi + \fi + \sc@t@a +} +\newcommand\script {% + \MakeDirectTakeArg + \relax\begin{Script}% +} +\NewName{endscript} {} {% + \relax\end{Script}% +} +\NewName{script*} {} {% + \MakeDirectTakeNoArg + \relax\begin{Script}% +} +\NewName{endscript*} {} {% + \relax\end{Script}% +} +\newcommand\sc@make@begin@bit@D [2] {% args: bitstyle copystyle + \DefName{sc@begin@bit@#1@#2}{##1##2} {% + \def\BitStyle{#1}% + \sc@begin@bit@common{##1}{##2}% + \PreBitAll +% +% \ClaimXMarkTwo +% \FrankenInfo{drama}{The script environment is changing \protect\output.}% +% \output={\sc@outputwrapper}% +% \let\maxdepth\maxdimen +% \let\@maxdepth\maxdimen + \if@oneact@ + \def\thepage {% + \arabic{bitbitbit}\hspace{\@ne em}\arabic{page}% + }% + \else + \def\thepage {% + \arabic{bitbit}--\arabic{bitbitbit}\hspace{\@ne em}\arabic{page}% + }% + \fi + \DramPer +% + \@nameuse{PreBit#1}% + }% +} +\newcommand\sc@make@end@bit@D [2] {% args: bitstyle copystyle + \DefName{sc@end@bit@#1@#2}{##1} {% + \sc@possiblyfinishdirecting + \TheEnd + \FrankenInfo{drama}{\protect\output is back to normal now.}% + }% +} +\NewBitstyle{Script} +\PromulgateComponentAcrossCopystyles{end@bit}{D}{Script} +\PromulgateComponentAcrossCopystyles{begin@bit}{D}{Script} + +\newcommand\act {% + \sc@possiblyfinishdirecting + \sc@mark{\ShortEmpty}% + \stepcounter{bitbit}% + \pagebreak[3]% + \bigskip + \centerline{\relsize{2}Act \thebitbit}% + \par + \nobreak + \smallskip +} +\newcommand\scene {% + \sc@possiblyfinishdirecting + \sc@mark{\ShortEmpty}% + \stepcounter{bitbitbit}% + \pagebreak[3]% + \bigskip + \centerline{\relsize{1}Scene \thebitbitbit}% + \par + \nobreak + \smallskip +} +% \end{macrocode} +% +% \subsubsection{speakers and stage directions} +% +% \begin{macrocode} +\newlength{\halfacross} + \setlength{\halfacross}{\textwidth} + \divide\halfacross by 2 +\newlength{\quarteracross} + \setlength{\quarteracross}{\textwidth} + \divide\quarteracross by 4 + +\newenvironment{DramaTab} [1] {% + \relax\begin{list}{} {% + \setlength{\leftmargin}{#1}% + \setlength{\listparindent}{\z@}% + \sloppy + }% + \item\relax + }{% + \relax\end{list}% +} +\newcommand\setstage [1] {% + \relax\begin{DramaTab}{\halfacross}% + \DirectStyle + \DirectOpen + \ignorespaces + #1% + \unskip + \DirectClose + \relax\end{DramaTab}% +} +% \end{macrocode} +% +% It is a question of style whether to announce the speaker's name a second +% time, if his speech continues after a stage direction in a paragraph by +% itself. If the page breaks immediately before the stage direction, or +% duringit, no continuation message will be given. If it breaks after the +% stage direction, and before the next speaker is announced with the |\speak| +% command, a continuation message appropriate to the speaker \emph{before} the +% stage direction is given. Of course, sectioning commands will cancel any +% continuation messages. +% +% Communicating via the mark is giving me a problem. I need to solve this +% problem and replace @sc@bool with mark information. +% +% Also, when using the no-argument form on a source with arguments, you cannot +% swallow the spaces with |\ignorespaces|, because the open brace shields them. +% +% There are problems with certain combinations of taking arguments and +% reannouncing speakers after a stage direction. I should draw a chart, and +% see how I can handle things. +% \begin{macro}{\DirectOpen} +% \begin{macro}{\DirectClose} +% \mbox{} +% \begin{macrocode} +\newcommand\DirectOpen {\textrm{(}} +\newcommand\DirectClose {\textrm{)}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macrocode} +\newboolean{sc@directing} + +\newcommand*\DirectNoArg {% + \sc@noargs@finishdirecting + \sc@direct +} +\newcommand\DirectWithArg [1] {% + \sc@args@finishdirecting + \sc@direct + #1% + \sc@really@finishdirecting +} +\newcommand\sc@direct {% + \global\let\sc@lastmark\sc@themark + \sc@mark{\ShortEmpty}% + \sc@directingtrue + \pagebreak[0]% mild encouragement + \relax\begin{DramaTab}{\quarteracross}% + \DirectStyle + \DirectOpen + \ignorespaces +} +\newcommand\sc@really@finishdirecting {% + \unskip + \DirectClose + \relax\end{DramaTab} + \sc@directingfalse +% \sc@mark\expandafter{\sc@lastmark}% FIXME: +} +% \end{macrocode} +% Looks like args version is null. +% \begin{macrocode} +\ReserveCS\sc@args@finishdirecting +\newcommand\sc@noargs@finishdirecting {% + \ifsc@directing + \sc@really@finishdirecting + \fi +} +\ReserveCS\sc@possiblyfinishdirecting +\newcommand\MakeDirectTakeArg {% + \let\sc@possiblyfinishdirecting\sc@args@finishdirecting + \let\direct\DirectWithArg +} +\newcommand\MakeDirectTakeNoArg {% + \let\sc@possiblyfinishdirecting\sc@noargs@finishdirecting + \let\direct\DirectNoArg +} +% \end{macrocode} +% +% \todo{Do penalties better?} +% +% \begin{macro}{\GiveSpeaker} +% \begin{macrocode} +\newcommand\GiveSpeaker [1] {% + \par + \centerline{\textsc{#1}}% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\GiveSpeakerContinued} +% The space is explicit for clarity. +% \begin{macrocode} +\newcommand\GiveSpeakerContinued [1] {% + \GiveSpeaker{#1\space\rlap{\textsl{(continued)}}}% +} +\newcommand\speak [1] {% + \sc@possiblyfinishdirecting + \sc@mark{\ShortEmpty}% + \pagebreak[2]% + \smallskip + \sc@mark{\GiveSpeakerContinued{#1}}% + \GiveSpeaker{#1}% + \par + \nopagebreak + \noindent +} +% \end{macrocode} +% \end{macro} +% +% \Finale diff --git a/Master/texmf-dist/doc/latex/frankenstein/unsupported/drama.tex b/Master/texmf-dist/doc/latex/frankenstein/unsupported/drama.tex new file mode 100644 index 00000000000..99b7c8c2e0a --- /dev/null +++ b/Master/texmf-dist/doc/latex/frankenstein/unsupported/drama.tex @@ -0,0 +1,67 @@ +% drama.tex -- documentation for the drama LaTeX package. +% +% This program is part of the Frankenstein bundle for LaTeX2e. +% +% Copyright (C) 1995-2001 Matt Swift +% +% This program is free software; you may redistribute it and/or +% modify it under the conditions of the LaTeX Project Public +% License, either version 1.2 or (at your option) any later +% version. The latest version of this license is in +% http://www.latex-project.org/lppl.txt, and version 1.2 or later +% is part of all distributions of LaTeX version 1999/12/01 or +% later. +% +% 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 +% LaTeX Project Public License for more details. +% +\documentclass{ltxdoc} +\makeatletter +\def\part {% + \clearpage + \@afterindentfalse + \secdef\@part\@spart +} +\def\StripV #1{\E@cdr #1\@nil} +\makeatother +\usepackage{attrib,compsci} +\newbook\manual {Chicago\nocite{chicago:14} Manual of Style}[Chicago Manual] +\newbook\MLAman {The\nocite{mlaman} MLA Style Manual and Guide to Scholarly Publishing} + [The MLA Style Manual] +\newtheorem{lessoninternal}{Lesson} +\newenvironment{lesson} {% + \let\AttribInit\sffamily + \let\PreTrib\textsection + \let\PostTrib\ShortEmpty + \lessoninternal + } {% + \endlessoninternal + } +\newcommand\manualref [1] {\textsf{\S #1}} +\ProcessDTXFile{drama.sty} +\newlet\MaybeABib\relax +\IfCitations { + \def\MaybeABib {% + \newpage + \bibliographystyle{achicago}% + \bibliography{frankenstein}% + } + \SaveDoXVarS + \usepackage{achicago} + \RestoreDoXVarS +} +\CodelineIndex +\EnableCrossrefs +\begin{document} +\date{Version: \StripV\fileversion \qquad Date: \filedate\\ + \relsize{-2}Documentation revision: \docdate} +\author{Matt Swift \email{swift@alum.mit.edu}} +\title{The \textsf{drama} LaTeX package \\\smaller \fileinfo} +\maketitle +\DocInput{drama.sty} +\MaybeABib +\newpage +\PrintIndex +\end{document} diff --git a/Master/texmf-dist/doc/latex/frankenstein/unsupported/includex-test.tex b/Master/texmf-dist/doc/latex/frankenstein/unsupported/includex-test.tex new file mode 100644 index 00000000000..4539bd840b6 --- /dev/null +++ b/Master/texmf-dist/doc/latex/frankenstein/unsupported/includex-test.tex @@ -0,0 +1,206 @@ +%* filecontents +% $Id: includex-test.tex,v 1.2 1999/02/27 05:09:26 swift Exp $ + +%** includex-test-aux.tex +\begin{filecontents}{includex-test-aux.tex} +This text is in a separate file that just contains text, and some \LaTeX\ code. +For a change, let's quote \emph{Moby Dick}, chapter~94: +\begin{quotation} % + Squeeze!\ squeeze!\ squeeze!\ all the morning long; I squeezed that sperm + till I myself almost melted into it; I squeezed that sperm till a strange + sort of insanity came over me; and I found myself unwittingly squeezing my + co-laborers' hands in it, mistaking their hands for the gentle globules. + Such an abounding, affectionate, friendly, loving feeling did this avocation + beget; that at last I was continually squeezing their hands, and looking up + into their eyes sentimentally; as much as to say,---Oh!\ my dear fellow + beings, why should we longer cherish any social acerbities, or know the + slightest ill-humor or envy! Come; let us squeeze hands all round; nay, let + us all squeeze ourselves into each other; let us squeeze ourselves + universally into the very milk and sperm of kindness. + + Would that I could keep squeezing that sperm for ever! For now, since by many + prolonged, repeated experiences, I have perceived that in all cases man must + eventually lower, or at least shift, his conceit of attainable felicity; not + placing it anywhere in the intellect or the fancy; but in the wife, the + heart, the bed, the table, the saddle, the fire-side, the country; now that I + have perceived all this, I am ready to squeeze case eternally. In thoughts + of the visions of the night, I saw long rows of angels in paradise, each with + his hands in a jar of spermaceti. +\end{quotation} +\end{filecontents} +%** includex-test-aux1.tex +\begin{filecontents}{includex-test-aux1.tex} +\documentclass{article} + +\usepackage{alltt} + +\newcommand\preamblecmd + {This line is due to the preamble of the included file.} + +\tdisable +\tdisableone{flue} +\tdisableopt[glue]{shoe} +\tdisabletwo{blue}{grue} + +\begin{document} + +\tdisable +\tdisableone{flue} +\tdisableopt[glue]{shoe} +\tdisabletwo{blue}{grue} + +\preamblecmd + +This file could be compiled on its own. + +\begin{alltt} +Here is yet another quotation from Beckett, this time from \emph{Watt} +(45--46). +\end{alltt} + +\begin{quotation} + The crocuses and the larch turning green every year a week before the others + and the pastures red with uneaten sheep's placentas and the long summer days + and the new-mown hay and the wood-pigeon in the morning and the cuckoo in the + afternoon and the corncrake in the evening and the wasps in the jam and the + smell of the gorse and the look of the gorse and the apples falling and the + children walking in the dead leaves and the larch turning brown a week before + the others and the chestnuts falling and the howling winds and the sea + breaking over the pier and the first fires and the hooves on the road and the + consumptive postman whistling \emph{The Roses Are Blooming in Picardy} and + the standard oil-lamp and of course the snow and to be sure the sleet and + bless your heart the slush and every fourth year the February d\`eb\^acle and + the endless April showers and the crocuses and then the whole bloody business + starting all over again. +\end{quotation} + +Notice, just as one single thing among dozens, that ``crocus'' +sounds like ``croak us.'' + +\end{document}Error 1 in radical shutdown! +Error 2 in radical shutdown! + +None of this text should ever be set. + +\end{filecontents} +%** includex-test-aux.sty +\begin{filecontents}{includex-test-aux.sty} +\renewcommand\autotest {% + This text is coming from the definition of $\backslash$\texttt{autotest} that + is in the auxiliary file. +} + +\typeout{Autoload file being loaded!} + +\newcommand\madbomber {% + \emph{I am the mad bomber!}% +} + +\end{filecontents} + +%* main document + +\documentclass{article} +\usepackage{includex,compsci} + +\begin{document} +%* Intro +\def\fileversion{v1} +\def\filedate{1999/02/26} + +\makeatletter +\def\StripV #1{\E@cdr #1\@nil} +\makeatother + +\date{Version: \StripV\fileversion \qquad Date: \filedate} +\author{Matt Swift \email{swift@alum.mit.edu}} +\title{Testing the \package{includex} package} +\maketitle + +\section{New ways to include} + +This will take several pages. + +First, check that we can |\include| as usual, so the rest of this page should +be blank, and the Melville quote should be alone on the next page. + +\include{includex-test-aux} + +This should be on a new page. Now we include the same thing, but it should +come immediately here because we use |\include*|: + +\include*{includex-test-aux} + +And this paragraph should immediately follow the Melville. Now, we check +|\includedoc| and |\includedoc*| in a similar manner. The included file is +going to use the |alltt| environment. We have loaded the package in the parent +file. The |\usepackage| command in the included file should be disabled; if +not, there will be an error when it tries to redefine the environment. Also, +we disable several commands that will produce an error if they are not. This +should be the last text on this page. + +\newcommand\tdisable{\typeout{Error with \protect\tdisable.}} +\newcommand\tdisableone[1]{\typeout{Error with \protect\tdisableone.}} +\newcommand\tdisableopt[2][]{\typeout{Error with \protect\tdisableopt.}} +\newcommand\tdisabletwo[2]{\typeout{Error with \protect\tdisabletwo.}} + +\disable{\let\tdisable\relax} +\disable{\let\tdisableone\Gobble} +\disable{\let\tdisableopt\GobbleOM} +\disable{\let\tdisabletwo\GobbleMM} + +\makeatletter +\newcommand\checkp {% + \@ifundefined{preamblecmd} {% + \DTypeout{Preamblecmd undefined.}% + }{% ELSE + \DTypeout{Preamblecmd is: (\preamblecmd).}% +% \let\preamblecmd\relax + }% +} +\makeatother +\checkp + +\includedoc{includex-test-aux1} + +\checkp + +And this should be on a new page. The first line should have said it +comes from the preamble. + +The |\includedoc| family of commands puts the included file into a group. So +|\preamblecmd| is not defined now. + +Now we do the same thing over, but the file should appear immediately. + +\includedoc*{includex-test-aux1} + +\checkp + +And this paragraph should immediately follow the Beckett. Finally, we have to +check |\includedocskip| and |\includedocskip*|. The difference will be that +the first line will say it comes from the parent. This should be the last text +on the page. + +\newcommand\preamblecmd {% + This def of preamblecmd comes from the parent. +} + +\includedocskip{includex-test-aux1} + +\checkp +This should be on a new page. And once again, the quote should follow +immediately here: + +\includedocskip*{includex-test-aux1} + +\checkp + +And this text should immediately follow the quote. + +%* end + +END OF TEST + +\end{document} + diff --git a/Master/texmf-dist/doc/latex/frankenstein/unsupported/includex.ins b/Master/texmf-dist/doc/latex/frankenstein/unsupported/includex.ins new file mode 100644 index 00000000000..87907d4bd6c --- /dev/null +++ b/Master/texmf-dist/doc/latex/frankenstein/unsupported/includex.ins @@ -0,0 +1,64 @@ +% includex.ins -- docstrip driver for the includex LaTeX package +% +% Copyright (C) 1995-2001 Matthew Swift +% Please see the copyright notice in \preamble below. + +% This file, when run through TeX or LaTeX, will generate fast loadable files +% from the .sty, .cls, or .bst files mentioned below. + +\input docstrip +\keepsilent + +\preamble + + This program is part of the Frankenstein bundle for LaTeX. + + Copyright (C) 1995-2001 Matthew Swift + + This file may have one of TWO names, either + includex.sty or includex.stq. This + LaTeX package will work ONLY if it is called includex.sty + and placed in a proper directory. This file should have been + distributed to you with a DIFFERENT file (also) called + includex.sty which functions identically to this one + but contains documentation in comments. This file works faster, + but the other should be kept because it contains the documentation + for this LaTeX package. Files called README and INSTALL should have + also been distributed to you with this file; see them for more + information. + + This program is free software; you may redistribute it and/or + modify it under the conditions of the LaTeX Project Public + License, either version 1.2 or (at your option) any later version. + The latest version of this license is in + http://www.latex-project.org/lppl.txt, and version 1.2 or later is + part of all distributions of LaTeX version 1999/12/01 or later. + + 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 + LaTeX Project Public License for more details. + +\endpreamble + +\askforoverwritefalse + +% This will get changed to either nothing or \nopostamble. + + +\generate{\file{includex.stq}{\from{includex.sty}{}}} + +\Msg{} +\Msg{***********************************************************************} +\Msg{*} +\Msg{* The file includex.stq is a faster replacement for the file} +\Msg{* includex.sty.} +\Msg{*} +\Msg{* includex.stq is stripped of comments (documentation) and must be} +\Msg{* renamed includex.sty and placed where LaTeX can find it} +\Msg{* before it may be used.} +\Msg{*} +\Msg{***********************************************************************} +\Msg{} + +\endbatchfile diff --git a/Master/texmf-dist/doc/latex/frankenstein/unsupported/includex.pdf b/Master/texmf-dist/doc/latex/frankenstein/unsupported/includex.pdf new file mode 100644 index 00000000000..e452557a80a Binary files /dev/null and b/Master/texmf-dist/doc/latex/frankenstein/unsupported/includex.pdf differ diff --git a/Master/texmf-dist/doc/latex/frankenstein/unsupported/includex.sty b/Master/texmf-dist/doc/latex/frankenstein/unsupported/includex.sty new file mode 100644 index 00000000000..0d0c58a8f66 --- /dev/null +++ b/Master/texmf-dist/doc/latex/frankenstein/unsupported/includex.sty @@ -0,0 +1,492 @@ +%^^A* legal notices +% \iffalse +% +% This file is part of the Frankenstein bundle, comprising the +% files listed in the file Manifest.txt. You should have +% received the complete bundle when you received this file. +% +% Copyright 1995-2001 Matt Swift . +% +% This file contains both the code and documentation for the +% includex LaTeX package. It will work ONLY if it is placed in +% a proper directory. Files called README, INSTALL, +% includex.tex includex.ins, and includex.dvi +% should have also been distributed to you with this file. See +% README for more information on how to generate a version of +% this file that will work faster than this one. +% +% This program is free software; you may redistribute it and/or +% modify it under the conditions of the LaTeX Project Public +% License, either version 1.2 or (at your option) any later version. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt, and version 1.2 or later is +% part of all distributions of LaTeX version 1999/12/01 or later. +% +% 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 +% LaTeX Project Public License for more details. +% +% \fi +% +%^^A* checks +% +%^^A NOTE: The character table, with two %'s, will get written to all files. +%% \CharacterTable +%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z +%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z +%% Digits \0\1\2\3\4\5\6\7\8\9 +%% Exclamation \! Double quote \" Hash (number) \# +%% Dollar \$ Percent \% Ampersand \& +%% Acute accent \' Left paren \( Right paren \) +%% Asterisk \* Plus \+ Comma \, +%% Minus \- Point \. Solidus \/ +%% Colon \: Semicolon \; Less than \< +%% Equals \= Greater than \> Question mark \? +%% Commercial at \@ Left bracket \[ Backslash \\ +%% Right bracket \] Circumflex \^ Underscore \_ +%% Grave accent \` Left brace \{ Vertical bar \| +%% Right brace \} Tilde \~} +% +% \CheckSum{227} +% +% \begin{abstract} +% Includex allows you to include just the contents of one source file into +% another, ignoring the text outside the +% \code{\begin{document}}\lips\code{\end{document}} in the included file. +% +% This package is useful but may have problems and is unsupported. +% +% See also the \package{newclude} package. +% \end{abstract} +% \tableofcontents +% +% \part{Discussion} +% \section{Including Files} +% +% \DescribeMacro{\include*} +% \cs\include was always pretty useless to me because it did a \cs\clearpage +% before and after the \cs\input. The macro |\include*| is defined below to be +% like \cs\include but without the \cs\clearpage s. +% +% The other thing we do is define a command \cs\includedoc, which includes a +% file which is allowed to have its own \cs\documentclass and |\begin{document}| +% and |\end{document}| and \cs\usepackage commands. +% +% This opens up a whole new world of truly modular \LaTeX{} files. There is +% even nothing special about extracting the |document| environment, we can +% extract \emph{any} environment, or perhaps even other things. +% +% There are some problems, however. Maybe the \cs\usepackage is necessary, +% maybe it would conflict. Same with other commands like the \cs\newcommand +% family. It is simply not (yet) an issue in \LaTeX{} design to consider the +% implications of parent files. The problems are not insurmountable. We can +% begin by working with a convention, and ultimately maybe make some changes in +% certain macros. I will be getting to all this. I admit I have not looked +% carefully to see whether the design specifications of \LaTeX3{} address these +% important issues. +% +% The macros here will be useful in many circumstances, when the included files +% are themselves simple. +% +% \DescribeMacro{\includedoc} +% \DescribeMacro{\includedoc*} +% \DescribeMacro{\includedocskip} +% \DescribeMacro{\includedocskip*} +% There are now two main commands, \cs\includedoc and \cs\includedocskip, +% each with a |*| version analogous to the new \cmd{include*}. Each take a +% filename as an argument just like \cs\include. +% +% \cs\includedoc\marg{filename} reads everything in the file except for +% \cs\documentclass, \cs\usepackage, |\begin{document}|, |\end{document}| +% (and whatever follows it). +% +% \cs\includedocskip\marg{filename} does the same except it also skips +% everything between \cs\documentclass and |\begin{document}|. +% +% \DescribeMacro{\disable} +% At present there is a makeshift way to ignore additional commands when +% using \cs\includedoc and \cs\includedocskip. If you want to cause \cs\foo +% which takes no arguments to be disabled, say |\disable{\let\foo\relax}|. If +% \cs\foo takes one mandatory argument, say |\let\foo\Gobble| instead. If +% \cs\foo takes one optional and one mandatory, say |\let\foo\GobbleOM|. If +% \cs\foo takes two mandatory arguments, say |\let\foo\GobbleMM|. For other +% permutations of arguments, you can extrapolate from the macros defined +% below. +% +% \StopEventually{} +% +% \part{Implementation} +% +% \section{Version control} +% +% \begin{macro}{\fileinfo} +% \begin{macro}{\DoXUsepackagE} +% \begin{macro}{\HaveECitationS} +% \begin{macro}{\fileversion} +% \begin{macro}{\filedate} +% \begin{macro}{\docdate} +% \begin{macro}{\PPOptArg} +% These definitions must be the first ones in the file. +% \begin{macrocode} +\def\fileinfo{extra ways to include files} +\def\DoXPackageS {} +\def\fileversion{v0.6a} +\def\filedate{1999/02/23} +\def\docdate{1999/02/23} +\edef\PPOptArg {% + \filedate\space \fileversion\space \fileinfo +} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% If we're loading this file from a \cs\ProcessDTXFile command (see the +% \package{compsci} package), then \cs\JusTLoaDInformatioN will be defined; +% othewise we assume it is not (that's why the FunkY NamE). +% +% If we're loading from \cs\ProcessDTXFile, we want to load the packages listed +% in \cs\DoXPackageS (needed to typeset the documentation for this file) and +% then bail out. Otherwise, we're using this file in a normal way as a +% package, so do nothing. \cs\DoXPackageS, if there are any, are declared in +% the \ext{dtx} file, and, if you're reading the typeset documentation of this +% package, would appear just above. (It's OK to call \cs\usepackage with an +% empty argument or \cs\relax, by the way.) +% \begin{macrocode} +\makeatletter% A special comment to help create bst files. Don't change! +\@ifundefined{JusTLoaDInformatioN} {% + }{% ELSE (we know the compsci package is already loaded, too) + \UndefineCS\JusTLoaDInformatioN + \SaveDoXVarS + \eExpand\csname DoXPackageS\endcsname\In {%use \csname in case it's undefined + \usepackage{#1}% + }% + \RestoreDoXVarS + \makeatother + \endinput +}% A special comment to help create bst files. Don't change! +% \end{macrocode} +% +% Now we check for \LaTeX2e and declare the LaTeX package. +% \begin{macrocode} +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{includex}[\PPOptArg] +% \end{macrocode}^^A special comment to help create bst files. Don't change! +% +% ^^A NOTE: We have to compensate for the above backslashes, which are not +% ^^A actually in the .dtx file the author works on, by adding to the +% ^^A CheckSum. +%% +% \AddToCheckSum{17}^^A `dtx-update-checksum' automatically handles this. +% \AddToCheckSum{7}^^A The half a macrocode env. at the top is missed, however... +% \AddToCheckSum{10}^^A ... and so are the 5 \defs from the .dtx file +% ^^A that precede it. +% \IfCitations {% +% \AddToCheckSum{2}^^A When \initelyHavECitationS is defined in +% } ^^A the .dtx file, we need 2 more in the CheckSum. +% +% +% \section{Requirements} +% +% Now we declare the package, check for \LaTeX2e, and load the other packages +% needed. +% \begin{macrocode} +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{includex} +\RequirePackage{moredefs} +% \end{macrocode} +% +% \section{Disabling things} +% +% \begin{macro}{\disable} +% This allows the disabling hacks. +% \begin{macrocode} +\ReserveCS\DisableMonster % This line is elsewhere for main package +\newcommand\disable[1] {% + \g@addto@macro\DisableMonster{#1}% +} +% \end{macrocode} +% \end{macro} +% +% \section{New things} +% +% \begin{macro}{\sc@saved@include} +% \begin{macro}{\include} +% \begin{macro}{\sc@include} +% \begin{macro}{\sc@@include} +% This is a simple redefinition of \cs\include without the \cs\clearpage +% commands. Nothing tricky going on. +% \begin{macrocode} +\newlet\sc@saved@include\include +\renewcommand\include {% + \@ifstar + \sc@include + \sc@saved@include +} +\newcommand\sc@include {% + \relax + \ifnum\@auxout=\@partaux + \@latex@error{\string\include\space cannot be nested}\@eha + \else + \expandafter\sc@@include + \fi +} +\newcommand\sc@@include[1] {% + \if@filesw + \immediate\write\@mainaux{\string\@input{#1.aux}}% + \fi + \@tempswatrue + \if@partsw + \@tempswafalse + \edef\@tempb{#1}% + \@for \@tempa:=\@partlist + \do{\ifx\@tempa + \@tempb + \@tempswatrue + \fi}% + \fi + \if@tempswa + \let\@auxout\@partaux + \if@filesw + \immediate\openout\@partaux #1.aux% + \immediate\write\@partaux{\relax}% + \fi + \@input@{#1.tex}% + \@writeckpt{#1}% + \if@filesw +% NOTE: Robin took out the \immediate here. +% \immediate\closeout\@partaux + \closeout\@partaux + \fi + \else + \@nameuse{cp@#1}% + \fi + \let\@auxout\@mainaux +} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% Now we start dealing with the much more tricky extraction of the |document| +% environment. +% +% We start with considering how to quit inputting a file. The idea is to make +% the |\end{document}| command of the included file call \cs\endinput. But +% there is a hitch that characters on the line after the |\end{document}| get +% inserted when you don't want them to. To beat that limitation, we have to do +% some work. +% +% \begin{macro}{\sc@radical@shutdown} +% We will add a bunch of commands to this macro, with the idea of \cs\catcode ing +% everything and its brother to a comment. This would be a brute force +% method! +% \begin{macrocode} +\ReserveCS\sc@radical@shutdown +% \end{macrocode} +% First log a message that we're about to do some crazy things. In case +% something ever goes wrong, this might help. +% \begin{macrocode} +\addto@macro\sc@radical@shutdown {% + \PackageInfo{includex}{\protect\sc@radical@shutdown\space beginning}% +} +% \end{macrocode} +% Now we start adding \cs\catcode commands. These first two should be +% redundant; but just in case someone changed things\lips. +% \begin{macrocode} +\addto@macro\sc@radical@shutdown{\catcode`\%=14} % 14 = comment +\addto@macro\sc@radical@shutdown{\catcode`\^=7} % 7 = superscript +% \end{macrocode} +% \begin{macro}{\sc@disable@char} +% Next, we define a command we weill use in a loop in a moment. +% \begin{macrocode} +\newcommand\sc@disable@char[1] {% + \addto@macro\sc@radical@shutdown + {\catcode`#1=14}} % 14 = comment +% \end{macrocode} +% \end{macro} +% The following list contains every keyboard char except these three, which are +% treated specially: |%#|. +% The first is already a comment, and we handle the second in a moment. Each +% character in the following list is \cs\catcode d to a comment: +% \begin{macrocode} +\@tfor\sc@t@a:=abcdefghijklmnopqrstuvwxyz% + ABCDEFGHIJKLMNOPQRSTUVWXYZ% + ~!@$&*()_+-=[]|/?.,<>% + 1234567890% + `'";:% + \^\\\{\}\ % this is really the chars "^\{}" and space + \do {\expandafter\sc@disable@char\sc@t@a} +% \end{macrocode} +% We add |#| separately, because it's tricky or impossible to put it into the +% list we just used. +% \begin{macrocode} +\sc@disable@char\# +% \end{macrocode} +% We end the macro with \cs\endinput. This has to come after all the previous, +% otherwise, \TeX{} goes ahead and reads to the end of the line immediately, +% with regular catcodes. This is a good theory, I'm not sure it's necessary. +% \begin{macrocode} +\addto@macro\sc@radical@shutdown{\endinput} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\sc@radical@shutdown@aftergroup} +% We need to use |\sc@radical@shutdown| this way. +% \begin{macrocode} +\newcommand\sc@radical@shutdown@aftergroup {% + \aftergroup\sc@radical@shutdown +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\sc@begindoc@toks} +% \begin{macro}{\sc@enddoc@toks} +% These are for \cs\AtBeginIncludedDocument and \cs\AtEndIncludedDocument. +% \begin{macrocode} +\newtoks\sc@begindoc@toks +\sc@begindoc@toks{} +\newtoks\sc@enddoc@toks +\sc@enddoc@toks{} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\AtBeginIncludedDocument} +% The analogue of \cs\AtBeginDocument. +% \begin{macrocode} +\newcommand\AtBeginIncludedDocument[1] {% + \sc@begindoc@toks\expandafter{\the\sc@begindoc@toks#1}% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\AtEndIncludedDocument} +% The analogue of \cs\AtEndDocument +% \begin{macrocode} +\newcommand\AtEndIncludedDocument[1] {% + \sc@enddoc@toks\expandafter{\the\sc@enddoc@toks#1}% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\includedoc} +% \begin{macro}{\includedoc*} +% Now we start from the other end, defining the user command. +% \begin{macrocode} +\newcommand\includedoc {% +% Robin's new: + \@ifstar {% + \def\sc@includebit@cmd{\include*}\sc@includebit + }{% ELSE + \let\sc@includebit@cmd\include\sc@includebit + }% +} + +% My old: +% {\sc@includebit} +% {\clearpage +% \sc@includebit[\clearpage]}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\sc@includebit} +% The commented-out code is for some eventual extensions. +% +% Interface is \cmd{sc@includebit}\oarg{postlude}\marg{file} (where +% \oarg{postlude} is command(s) to be executed after the inclusion is +% complete); it is assumed that \cmd{sc@includebit@cmd} is either \cs\include +% or \cmd{include*} +% \begin{macrocode} +\newcounter{sc@count} +\newcounter{bit} +\newcommand\sc@includebit [2] [] {% + \setcounter{sc@count}{\thebit}% + \begingroup + \DisableMonster + \let\usepackage\GobbleOM +% Robin's new: + \def\enddocument {% + \makeatletter + \the\sc@enddoc@toks + \sc@radical@shutdown@aftergroup + } +% My old: +% \let\enddocument\sc@radical@shutdown@aftergroup + \let\documentclass\GobbleOM + \let\documentstyle\GobbleOM % why worry about branching if 2.09.. + \def\document {% + \the\sc@begindoc@toks + }% + \def\IncludedJobname {#2}% + \sc@includebit@cmd{#2}% + \endgroup + \par + #1 +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\includedocskip} +% \begin{macro}{\includedocskip*} +% Now we make a similar command that \emph{entirely} skips the preamble, +% whereas \cs\includedoc only skipped those commands that we specifically +% disabled. Obviously this whole business of the preamble needs to be +% radically reconceived if convenient modularity of documents is to be had. At +% the moment, no distinction is made between things like \cs\newcommand and +% \cs\usepackage that should be exported to a parent file, and those things that +% should not. +% \begin{macrocode} +\newcommand\includedocskip {% + \@ifstar {% + \sc@includebitskip + }{% ELSE + \clearpage + \sc@includebitskip[\clearpage]% + }% +} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% I tried combining |\sc@includebitskip| and |\sc@includebit| but something +% changed when I used a conditional to do this. I'm sure the problem could be +% figured out and the two combined. +% +% \begin{macro}{\sc@includebitskip} +% We begin skipping with the \cs\documentclass or \cs\documentstyle command, and +% stop with the |\begin{document}| command. With some hacking to the new +% |verbatim| environment, this could be done. I haven't done this yet, so this +% is implemented by stuffing everything into a macro argument. I can't think +% of a \cs\begin occurring between \cs\documentclass the \cs\begin document, but +% that will screw things up if it does. +% +% The commented lines here are once again for a future extension. +% \begin{macrocode} +\newcommand\sc@includebitskip [2] [] {% + \setcounter{sc@count}{\thebit}% + \begingroup + \DisableMonster + \let\enddocument\sc@radical@shutdown@aftergroup + \long\def\documentclass ##1\begin{% + \begingroup + \def\@currenvir{document}% + \GobbleM + }% "{document}" is still to be read. + \let\documentstyle\documentclass + \include*{#2}% + \endgroup + \par + #1\relax +} +% \end{macrocode} +% \end{macro} +% +% \Finale diff --git a/Master/texmf-dist/doc/latex/frankenstein/unsupported/includex.tex b/Master/texmf-dist/doc/latex/frankenstein/unsupported/includex.tex new file mode 100644 index 00000000000..b2072b08084 --- /dev/null +++ b/Master/texmf-dist/doc/latex/frankenstein/unsupported/includex.tex @@ -0,0 +1,67 @@ +% includex.tex -- documentation for the includex LaTeX package. +% +% This program is part of the Frankenstein bundle for LaTeX2e. +% +% Copyright (C) 1995-2001 Matt Swift +% +% This program is free software; you may redistribute it and/or +% modify it under the conditions of the LaTeX Project Public +% License, either version 1.2 or (at your option) any later +% version. The latest version of this license is in +% http://www.latex-project.org/lppl.txt, and version 1.2 or later +% is part of all distributions of LaTeX version 1999/12/01 or +% later. +% +% 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 +% LaTeX Project Public License for more details. +% +\documentclass{ltxdoc} +\makeatletter +\def\part {% + \clearpage + \@afterindentfalse + \secdef\@part\@spart +} +\def\StripV #1{\E@cdr #1\@nil} +\makeatother +\usepackage{attrib,compsci} +\newbook\manual {Chicago\nocite{chicago:14} Manual of Style}[Chicago Manual] +\newbook\MLAman {The\nocite{mlaman} MLA Style Manual and Guide to Scholarly Publishing} + [The MLA Style Manual] +\newtheorem{lessoninternal}{Lesson} +\newenvironment{lesson} {% + \let\AttribInit\sffamily + \let\PreTrib\textsection + \let\PostTrib\ShortEmpty + \lessoninternal + } {% + \endlessoninternal + } +\newcommand\manualref [1] {\textsf{\S #1}} +\ProcessDTXFile{includex.sty} +\newlet\MaybeABib\relax +\IfCitations { + \def\MaybeABib {% + \newpage + \bibliographystyle{achicago}% + \bibliography{frankenstein}% + } + \SaveDoXVarS + \usepackage{achicago} + \RestoreDoXVarS +} +\CodelineIndex +\EnableCrossrefs +\begin{document} +\date{Version: \StripV\fileversion \qquad Date: \filedate\\ + \relsize{-2}Documentation revision: \docdate} +\author{Matt Swift \email{swift@alum.mit.edu}} +\title{The \textsf{includex} LaTeX package \\\smaller \fileinfo} +\maketitle +\DocInput{includex.sty} +\MaybeABib +\newpage +\PrintIndex +\end{document} -- cgit v1.2.3