# HG changeset patch # User Eli Zaretskii # Date 1005989894 0 # Node ID 1377d461b09c920d4270173e1c8c6fe9c70eca44 # Parent 1daffd332bcdab462093cf9e9bff0f57c71e2d2b *** empty log message *** diff -r 1daffd332bcd -r 1377d461b09c ChangeLog --- a/ChangeLog Sat Nov 17 09:36:58 2001 +0000 +++ b/ChangeLog Sat Nov 17 09:38:14 2001 +0000 @@ -1,3 +1,8 @@ +2001-11-17 Eli Zaretskii + + * make-dist (lispref): Add *.txt, *.el, permute-index, and + tindex.pl to the list of those being put into the distribution. + 2001-11-16 Eli Zaretskii * configure.in: Add coff.h to the list in AC_CHECK_HEADERS. diff -r 1daffd332bcd -r 1377d461b09c lispref/ChangeLog --- a/lispref/ChangeLog Sat Nov 17 09:36:58 2001 +0000 +++ b/lispref/ChangeLog Sat Nov 17 09:38:14 2001 +0000 @@ -1,3 +1,9 @@ +2001-11-17 Eli Zaretskii + + * two-volume-cross-refs.txt: New file. + * two.el: New file. + * spellfile: New file. + 2001-11-16 Eli Zaretskii * permute-index: New file. diff -r 1daffd332bcd -r 1377d461b09c lispref/spellfile --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lispref/spellfile Sat Nov 17 09:38:14 2001 +0000 @@ -0,0 +1,738 @@ +ARPA +Abbrev +Acknowledgements +Alan +Arnold +Autoloading +BAppend +Backquote +Beeping +Beverly +Boyes +Brian +CL +CSWKg +Carl +Carroll +Chris +Cleanups +DEC +DStandard +Dan +Dired's +Disassembly +Duff +EMAC +EMACSLOADPATH +Eckelkamp +Edward +Eirik +Emacses +Eric +Erlebacher +Fcar +Fcdr +Fcons +Fcoordinates +Feval +Frazzle +Frederick +Fri +Gardiner +Gentlemen +HAL +HATTED +HS +HU +Hanchrow +Hartzell +Hess +Hewlett +IBM +ISBN +Impl +Interning +Ithought +J's +Jacobson +Jak +Joe +Jones +Jr +Jul +Keymaps +Kimmo +Kirman +Knighten +Korz +Krawitz +LTsHm +LaLiberte +LaTeX +Lammens +Local' +MAC +MONIES +MSS +Maclisp +Magill +Marick +Matthew +Minibuf +Misc +Miscellany +Mocklisp +Montanaro +Myers +NFS +Nathan +Nope +OS +OSITIONS +Oct +Ovwrt +PURESIZE +Packard +Qlistp +Qnil +RMAIL +Raul +Resizing +Robbins +Rockwell +SCO +SIGCONT +SIGHUP +SIGINT +SIGKILL +SIGQUIT +SIGTSTP +SLOAD +Scoordinates +Set' +Setcar +Setcdr +Shinichirou +Snarf +Sor +SourceFile +Stops' +Subprocess +Sugou +Sunview +Suominen +T's +TCP +ThXs +Tharp +Thu +Trost +UCB +UNEVALLED +UNGCPRO +UniPlus +UniSoft's +VMS +Vip +Void' +Warren +Welty +Wethought +Wilding +Worley +Wright +XDVI +XFASTINT +XINT +XWINDOW +Xs +Yo +Zuhn +aB +aa +aaa +abbrevname +abbrevs +abc +abcdefg +abcxyz +abd +above' +abracadabra +address' +after' +alist +alists +anchored' +and' +ar +aref +arg'th +argdecl +arith +arrayp +arrow' +asa +asdZasfd +asdf +asdfasfd +aset +assoc +assq +at' +aug +autoload +automatic' +automatically' +avector +bBuffer +bFrobnicate +ba +back' +bananana +barfoo +barx +bballs +before' +beforep +bfoo +bil +binding's +bish +bobp +bolp +bottommost +boundp +brief' +buf +buffer' +bufferp +buttercup +ca +caaaar +caaar +caddaar +cadr +callable +cbreak +ce +cell' +cells' +cf +chaprm +character' +childp +chistory +ck +column' +commandp +concat +cond +conses +consing +consp +constant' +contains' +continuable +convert' +copyleft +correct' +counterintuitive +cr +creatable +customie +deactivate +deactivated +deassigns +decrement' +deffnx +definition' +defmacro +defsubr +deletable +deletion' +delq +depiction +descendents +deselecting +destructive' +destructively' +diffs +ding +directory' +dired +dirname +disassembler +dland +docfile +docstring +doesnt +dont +down' +downcasing +downloadable +dribble +dup +ef +efg +electric' +elided +elt +enablement +endkeyfun +endrecfun +environment' +eobp +eof +eol +eolp +eq +eqlsign +erminal +erste +etags +eval +evalled +evals +evaluate' +excess' +exec +exitcode +expression' +extendible +extra' +fails' +fascist +fboundp +featurep +ff +fg +fi +file' +filespec +filesystems +fillarray +firstchar +firstonly +fixedcase +fixit +fixup +floatp +fmakunbound +fns +fo +fol +folded' +following' +fooba +foobaz +foox +for' +formfeed +forms' +forw +forwa +found' +frob +from' +front' +fset +fstab +ftp +fu +funtions +garbles +gc +gcpro +gd +getenv +getprv +gid +gnuemacs +gp +grep +gtr +halves' +hand' +hashes' +hd +hexadecimal +hf +hfil +hookvar +horsechestnut +hostname +hpux +hscroll +ibmapa +ick +id +idiom +ii +indrm +inode +input' +inputinput +inserting' +integerp +intermixed +ints +inturned +irreversibly +jum +keymapp +kill' +killed' +killp +kludge +kolstad +language' +lastchar +lcl +ledit +leif +lessp +level' +lewis +library' +link' +lisplib +listexp +loadable +loadst +loadup +logand +logior +lognot +logxor +long' +loop's +lru +lrwxrwxrwx +ls +lsh +m's +macroexpand +makunbound +malloc +mapatoms +mapconcat +mapvar +mark' +marker's +markerp +mathsurround +medit +memq +mh +mim +mini +minibuffer's +minibuffers +misalignment +misnamed +mode's +modename +modes' +mods +modtime +mqueue +msg +multicharacter +myfile +nCount +nXExpression +na +name's +natnump +nb +nbBuffer +nconc +newdef +newelt +newname +nextrecfun +nfsusr +ninett +nlines +nlinks +nlistp +noconfirm +nodigits +noerror +noforce +nomessage +nominees +nomsg +nonblank +nonconstant +nondestructive +nondirectory +nonidentical +noninteractive +noninteractively +nonletter +nonletters +nonlocally +nonoverlapping +nonprinting +nonselected +nonsequentially +nonvoid +nonwarranty +nonwritable +noop +noprint +norecord +normal' +noselect +nosuffix +nots +noundo +nr +nreverse +ns +nsRename +nth +nthcdr +num +number' +numberp +nums +obarray +obarrays +object' +oldbuf +olddef +oldname +oo +oops +op +or' +otl +out' +over' +overful +overfullrule +overstrike +overstriking +overstruck +p' +paren +part' +passwd +pe +ped +perverse +pid +plist +pnt +pointer' +pointm +pos +preallocate +predicale +preload +prepend +prepended +prepends +pretty' +prin +princ +print' +printenv +printer' +proc +process' +processp +programmer' +prolog +protect' +ps +psf +psychotherapy +pty +purecopy +qu +quux +rassq +reader' +readin +rebind +rec +rechecking +recursively' +recycler' +redo +redrawing +redraws +redump +reenabled +reexposed +reg +region' +reindent +reindents +reinitialization +reinitialize +reinitialized +reinstall +reinstalled +resize +resized +resizes +reversibly +reworded +rhetorical +right' +ring' +risky +rmailedit +rms +rplaca +rplacd +rtu +runnable +rw +rwxrwxrwx +sDescribe +sans +se +searching' +section' +seed' +sequence' +sequencep +setp +setplist +setprv +settable +setuid +sexp +sexps +shape' +shell's +sideline +special' +specpdl +st +stanford +startkeyfun +str +stringp +stty +subcategories +subcommands +subexp +subform +subforms +subjob +submap +subprocesses +subr +subr' +subroutine' +subrp +subrs +subwindows +sugar' +suid +supersession +suspension' +symbolp +symlink +syms +syntatic +tabname +temacs +temporarily' +tempvar +tenths +termcap +termcaps +terminfo +termscript +termtype +terpri +text' +textrm +textsl +texttt +than' +the' +tildes +time's +to' +towars +transportable +txt +types' +uid +unbind +unbinding +unbinds +unchanged' +unclutters +undefine +undefines +underfull +undo's +undodata +unevaluated' +unexec +unexpand +unhesitatingly +uninterned +unisoft +unpaired +unread +unreadable +unreading +unsaved +untyped +ununderline +up' +uptime +usecount +used' +user' +userlock +usg +val +varbind +varname +varref +vars +varset +vb +vconcat +vectorp +vfil +vi +vn +voidness +vrs +vt +window' +windowing +windowp +wrapped' +xSpecify +xcoord +xcssun +xemacs +xenix +xf +xfirst +xoff +xon +xx +xxxxx +xxxxxxxxx +xy +xyz +ycoord +yes' +zA +zap +zerop diff -r 1daffd332bcd -r 1377d461b09c lispref/two-volume-cross-refs.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lispref/two-volume-cross-refs.txt Sat Nov 17 09:38:14 2001 +0000 @@ -0,0 +1,322 @@ +Two Volume Cross References +=========================== + +18 March 1992 + +This enables you to create manuals in *two* volumes, with tables of +contents, cross references, and indices in each volume referring to +*both* volumes. + +The procedure is tedious. However, the resulting two volumes are +conveniently organized. Each has an index of the whole two volumes. +Each volume starts with page 1. (I don't like multi-volume works +where each volume starts with a higher page number since I find it +harder to go to the right place in the volume.) + +References to the same volume are just the page number; references to +the other volume are a volumne number (in Roman numerals) preceding +the page number. + +For example, in Volume I: + + list length ......... 90 + list motion ......II:117 + +and in Volume II: + + list length ....... I:90 + list motion .........117 + +All other references and the table of contents work the same way. I +find this *very* helpful. + + +In brief: you run tex on a .texi file with + + a. redefined @contents and @summarycontents inputting elisp-toc-2vol.toc file + b. redone .aux file + c. redone .fns file + + +Here are the steps in detail: + +% tex elisp-vol1.texi +% texindex elisp-vol1.?? +% tex elisp-vol1.texi + +% tex elisp-vol2.texi +% texindex elisp-vol2.?? +% tex elisp-vol2.texi + +### Create .aux files with volume numbers for other volume. + +% cp elisp-vol1.aux elisp1-aux +% cp elisp-vol2.aux elisp2-aux + +% cp elisp-vol1.aux elisp1-aux-vol-number-added +% cp elisp-vol2.aux elisp2-aux-vol-number-added + +on elisp1-aux-vol-number-added +(volume-aux-markup 1) see defun for volum-aux-markup below. +to create elisp1-aux-vol-number-added + +on elisp2-aux-vol-number-added +(volume-aux-markup 2) +to create elisp2-aux-vol-number-added + +insert elisp2-aux-vol-number-added into elisp-vol1.aux (append) +insert elisp1-aux-vol-number-added into elisp-vol2.aux (prepend) + +(so you dont have to do it again) +% cp elisp-vol1.aux elisp1-aux-2vol-ready +% cp elisp-vol2.aux elisp2-aux-2vol-ready + + +### Create .fn files with volume numbers for other volume. + +% cp elisp-vol1.fn elisp1-fn +% cp elisp-vol2.fn elisp2-fn + +% cp elisp-vol1.fn elisp1-fn-vol-number-added +% cp elisp-vol2.fn elisp2-fn-vol-number-added + +on elisp1-fn-vol-number-added +(volume-index-markup "I") +to create elisp1-fn-vol-number-added + +on elisp2-fn-vol-number-added +(volume-index-markup "II") +to create elisp2-fn-vol-number-added + +insert elisp2-fn-vol-number-added into elisp-vol1.fn: do following `cat' +insert elisp1-fn-vol-number-added into elisp-vol2.fn: do following `cat' + +% cat elisp2-fn-vol-number-added >> elisp-vol1.fn +% cat elisp1-fn-vol-number-added >> elisp-vol2.fn + +Be sure to handle special case entries by hand. +Be sure that .fn file has no blank lines. + +% texindex elisp-vol1.fn +% texindex elisp-vol2.fn + +(so you dont have to do it again) +% cp elisp-vol1.fns elisp1-fns-2vol-ready +% cp elisp-vol2.fns elisp2-fns-2vol-ready + +### Create merged .toc file with volume number headings. + +append elisp-vol2.toc to elisp-vol1.toc with following `cat' + +% cat elisp-vol1.toc elisp-vol2.toc > elisp-toc-2vol.toc + +and edit in Volume titles + +\unnumbchapentry {Volume 1}{} +\unnumbchapentry {}{} + +\unnumbchapentry {Index}{295} +\unnumbchapentry {}{} +\unnumbchapentry {Volume 2}{} +\unnumbchapentry {}{} + +If you want to put in volume numbers for TOC, then do this: +Create volume specific .toc files with volume numbers in them. + +% cp elisp-toc-2vol.toc elisp1-toc.toc +% cp elisp-toc-2vol.toc elisp2-toc.toc + +Use keyboard macro to put I: in first half of elisp1-toc.toc and +II: in first half of elisp2-toc.toc + +Copy the tocs to something you can remember more easily + +% cp elisp2-toc.toc elisp1-toc-ready.toc +% cp elisp1-toc.toc elisp2-toc-ready.toc + +Then, edit elisp-vol1.texi to input elisp1-toc-ready.toc +and elisp-vol2.texi to input elisp2-toc-ready.toc + + +### Now format the two volumes: + +% cp elisp1-aux-2vol-ready elisp-vol1.aux +% cp elisp2-aux-2vol-ready elisp-vol2.aux + +% tex elisp-vol1.texi +% tex elisp-vol2.texi + + + +For every additional run: + +### recopy aux files so the correct ones are read: +% cp elisp1-aux-2vol-ready elisp-vol1.aux +% cp elisp2-aux-2vol-ready elisp-vol2.aux + +Do not run texindex. Then proper sorted index will stay. + else do: % cp elisp2-fns-2vol-ready elisp-vol2.fns + +Do not change the .texi files; they will call the elisp-toc-2vol.toc file. + +% tex elisp-vol1.texi +% tex elisp-vol2.texi + +================================================================ + +@c ================================================================ +@tex +% Special @contents command +% This inputs fixed up table of contents file rather than create new one. +\global\def\contents{% + \startcontents{Table of Contents}% + \input elisp-toc-2vol.toc + \endgroup + \vfill \eject +} + +% Special @summarycontents command +% This inputs fixed up table of contents file rather than create new one. +\outer\def\summarycontents{% + \startcontents{Short Contents}% + % + \let\chapentry = \shortchapentry + \let\unnumbchapentry = \shortunnumberedentry + % We want a true roman here for the page numbers. + \secfonts + \let\rm=\shortcontrm \let\bf=\shortcontbf \let\sl=\shortcontsl + \rm + \advance\baselineskip by 1pt % Open it up a little. + \def\secentry ##1##2##3##4{} + \def\unnumbsecentry ##1##2{} + \def\subsecentry ##1##2##3##4##5{} + \def\unnumbsubsecentry ##1##2{} + \def\subsubsecentry ##1##2##3##4##5##6{} + \def\unnumbsubsubsecentry ##1##2{} + \input elisp-toc-2vol.toc + \endgroup + \vfill \eject +} +@end tex +@c ================================================================ + + +================================================================ + + +(defun volume-aux-markup (arg) + "Append `vol. NUMBER' to page number. +Apply to aux file that you save. +Then insert marked file into other volume's .aux file." + (interactive "sType volume number, 1 or 2: " ) + (goto-char (point-min)) + (while (search-forward "-pg" nil t) + (end-of-line 1) + (delete-backward-char 1 nil) + (insert ", vol.'tie" arg "}"))) + +(defun volume-index-markup (arg) + "Prepend `NUMBER:' to page number. Use Roman Numeral. +Apply only to unsorted index file, +Then insert marked file into other volume's unsorted index file. +Then run texindex on that file and save." + (interactive + "sType volume number, roman number I or II: " ) + (goto-char (point-min)) + (while (search-forward "\\entry" nil t) + (search-forward "}{" (save-excursion (end-of-line) (point)) nil) + (insert arg ":"))) + + +================================================================ + + +The steps: + +1. Run TeX, texindex and TeX on file1. +2. Run TeX, texindex and TeX on file2. + +3. Copy both .aux files into specially named files + +4. In the case of the elisp ref manual, + + copy the *unsorted* function index files into specially named files + (no other index used in elisp ref manual) + + +5. For aux files: + + Run a function on the specially named .aux files to label each + entry according to volume. Save these files. + + i.e., convert + 'xrdef {Special-pg}{7} to 'xrdef {Special-pg}{7, vol.'tie1} + +5a.Insert each specially named .aux file into the regular .aux file of + the other volume. + +6. For index files: + + Run a function on the specially named unsorted index files to label + each entry according to volume. Save these files. + +6b.Insert each specially named marked unsorted index file into the + regular unsorted file of the other volume. Run texindex on this + +7. Insert the other volumes .toc file into the .toc, edit, and rename to + elisp-toc-2vol.toc + +7a. insert special @contents and @summarycontents defs into .texi files. + +8. Run TeX on each .texi file. + +================ + + + +Here is the discursive commentary: + +I've been running some small test files, called test1.texi and +test2.texi. As far as I can see, if we run tex on the two test files, +tex creates a .aux for each that includes the names of all the nodes +in that file. The node names are used for cross references. + +If you insert the .aux file for the second test file, test2.aux, into +the .aux file for the first test file, test1.aux, then when you next +run TeX on the first test file, test1.texi, the second volume cross +references are inserted. + +You can edit the text of the cross reference in test2.aux to include +the volume number. + +For example, you can take the following two lines from test1.texi and +insert them into test2.texi: + + 'xrdef {Special-pg}{7} + 'xrdef {Special-snt}{Section'tie1.6} + +You can re-edit this to show that the page is in volume 1: + + 'xrdef {Special-pg}{7, vol.'tie1} + 'xrdef {Special-snt}{Section'tie1.6} + +(The 'tie is a TeX special command to keep the number tied on one +line to the previous word. I don't know if it works after a period in +the "vol." but figure it is worth trying. {The ' is the @ of .aux files.} +Apparently 'tie is like the tilde in plain tex; in texinfo.tex, the +definition for 'tie is the following: + + \def\tie{\penalty 10000\ } % Save plain tex definition of ~. + +) + +After running tex on the test2.texi file with the augmented test2.aux +file, you can see the following in the resulting DVI file: + + See Section 1.6 [Special], page 7, vol. 1 + +Note that TeX rewrites the .aux file each time TeX is run, so after +running Tex using an .aux file augmented with the .aux file from the +other volume, the new .aux file will *lack* the other volumes cross +references. Save your augmented .aux file in some other name for +another run! diff -r 1daffd332bcd -r 1377d461b09c lispref/two.el --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lispref/two.el Sat Nov 17 09:38:14 2001 +0000 @@ -0,0 +1,59 @@ +;; Auxilary functions for preparing a two volume manual. +;; --rjc 30mar92 + +(defun volume-aux-markup (arg) + "Append `vol. NUMBER' to page number. +Apply to aux file that you save. +Then insert marked file into other volume's .aux file." + (interactive "sType volume number, 1 or 2: " ) + (goto-char (point-min)) + (while (search-forward "-pg" nil t) + (end-of-line 1) + (delete-backward-char 1 nil) + (insert ", vol.'tie" arg "}"))) + +(defun volume-index-markup (arg) + "Prepend `NUMBER:' to page number. Use Roman Numeral. +Apply only to unsorted index file, +Then insert marked file into other volume's unsorted index file. +Then run texindex on that file and save." + (interactive + "sType volume number, roman number I or II: " ) + (goto-char (point-min)) + (while (search-forward "\\entry" nil t) + (search-forward "}{" (save-excursion (end-of-line) (point)) nil) + (insert arg ":"))) + +(defun volume-numbers-toc-markup (arg) + (interactive + "sType volume number, roman number I or II: " ) + (goto-char (point-min)) + (while (search-forward "chapentry" nil t) + (end-of-line) + (search-backward "{" nil t) + (forward-char 1) + (insert arg ":"))) + +(defun volume-header-toc-markup () + "Insert Volume I and Volume II text into .toc file. +NOTE: this auxilary function is file specific. +This is for the *Elisp Ref Manual*" + (interactive) + (goto-char (point-min)) + (insert "\\unnumbchapentry {Volume 1}{}\n\\unnumbchapentry {}{}\n") + (search-forward "\\unnumbchapentry {Index}") + (forward-line 1) + (insert + "\\unnumbchapentry {}{}\n\\unnumbchapentry {}{}\n\\unnumbchapentry {}{}\n\\unnumbchapentry {}{}\n\\unnumbchapentry {Volume 2}{}\n\\unnumbchapentry {}{}\n")) + + +;;; In batch mode, you cannot call functions with args; hence this kludge: + +(defun volume-aux-markup-1 () (volume-aux-markup "1")) +(defun volume-aux-markup-2 () (volume-aux-markup "2")) + +(defun volume-index-markup-I () (volume-index-markup "I")) +(defun volume-index-markup-II () (volume-index-markup "II")) + +(defun volume-numbers-toc-markup-I () (volume-numbers-toc-markup "I")) +(defun volume-numbers-toc-markup-II () (volume-numbers-toc-markup "II"))