1
0
mirror of synced 2026-05-17 11:52:23 +00:00

Fix index and table of contents

This commit is contained in:
rmkaplan
2026-05-16 09:28:46 -07:00
parent 991257a223
commit b029571d44
4 changed files with 78 additions and 72 deletions

View File

@@ -1,12 +1,12 @@
(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "XCL" BASE 10)
(DEFINE-FILE-INFO :PACKAGE "INTERLISP" :READTABLE "XCL" :BASE 10)
(FILECREATED "28-Feb-2025 23:36:19" |{WMEDLEY}<lispusers>tmax>TMAX-INDEX.;22| 46719
(FILECREATED "16-May-2026 09:19:48" |{MEDLEY}<lispusers>tmax>TMAX-INDEX.;24| 46972
:EDIT-BY |rmk|
:CHANGES-TO (FNS INDEX.MANUAL.DELIMITER RESET.INDEX.PAGENUMBERS)
:CHANGES-TO (FNS CREATE.INDEX.FILE GET.INDEX.FILE)
:PREVIOUS-DATE "23-Feb-2025 11:55:07" |{WMEDLEY}<lispusers>tmax>TMAX-INDEX.;20|)
:PREVIOUS-DATE "28-Feb-2025 23:36:19" |{MEDLEY}<lispusers>tmax>TMAX-INDEX.;22|)
(PRETTYCOMPRINT TMAX-INDEXCOMS)
@@ -587,24 +587,26 @@
(DEFINEQ
(CREATE.INDEX.FILE
(LAMBDA (TSTREAM INDEX.FILE INDEX.FONT NOTITLE) (* \; "Edited 23-Feb-2025 11:55 by rmk")
(LAMBDA (TSTREAM INDEX.FILE INDEX.FONT NOTITLE) (* \; "Edited 16-May-2026 09:18 by rmk")
(* \; "Edited 23-Feb-2025 11:55 by rmk")
(* \; "Edited 21-Feb-2025 10:17 by rmk")
(* \; "Edited 14-Feb-97 11:10 by rmk:")
(* |fsg| "13-Aug-87 09:05")
(SETQ INDEX.FILE (OR (OUTFILEP (OR INDEX.FILE (GET.INDEX.FILE (TMAXPROP TSTREAM 'IMAGEOBJ.MENUW))
))
(ERROR (CONCAT "Can't open " INDEX.FILE " as a index file"))))
(TEDIT.PROMPTPRINT TSTREAM (CONCAT "Writing index on " INDEX.FILE)
(ERROR (CONCAT "Can't open index file" INDEX.FILE))))
(TEDIT.PROMPTPRINT TSTREAM (CONCAT "Writing index on " INDEX.FILE "...")
T)
(LET ((IMAGESTREAM (OPENIMAGESTREAM '{NULL}))
(LET ((DUMMYSTREAM (OPENIMAGESTREAM (UNIX-TMP-FILE-NAME '|tmax-index| '|pdf|)
'PDF))
INDEX.ARRAY INDEX.LIST INDEX.STREAM)
(* |;;|
 "Make sure we have the page numbers, written in the image stream. Why not in TSTREAM?")
(* |;;| "Collect the index-term page numbers in the array")
(TEDIT.FORMAT.HARDCOPY TSTREAM IMAGESTREAM NIL NIL NIL NIL NIL NIL NIL NIL T)
(SETQ INDEX.ARRAY (TMAXPROP IMAGESTREAM 'TSP.INDEX.ARRAY))
(SETQ INDEX.LIST (INDEX.LIST.REFS IMAGESTREAM))
(TEDIT.TO.IMAGEFILE TSTREAM DUMMYSTREAM)
(SETQ INDEX.ARRAY (TMAXPROP DUMMYSTREAM 'TSP.INDEX.ARRAY))
(SETQ INDEX.LIST (INDEX.LIST.REFS DUMMYSTREAM))
(DELFILE (CLOSEF? DUMMYSTREAM))
(COND
((AND INDEX.LIST INDEX.FILE)
(SETQ INDEX.STREAM (OPENTEXTSTREAM))
@@ -614,6 +616,7 @@
(PRINTOUT INDEX.STREAM "Index" T T))
(WRITE.INDEX.FILE INDEX.STREAM INDEX.LIST INDEX.ARRAY INDEX.FONT)
(CLOSEF? (TEDIT.PUT INDEX.STREAM INDEX.FILE))
(TEDIT.PROMPTPRINT TSTREAM "done")
INDEX.FILE)
(INDEX.LIST (TEDIT.PROMPTPRINT TSTREAM "Please specify a name for the index file" T)
NIL)
@@ -664,15 +667,16 @@
))
INDEX.FILE)))
(get.index.file
(lambda (menuw) (* \; "Edited 29-Sep-87 14:34 by fsg")
(GET.INDEX.FILE
(LAMBDA (MENUW) (* \; "Edited 16-May-2026 09:17 by rmk")
(* \; "Edited 29-Sep-87 14:34 by fsg")
(* * |Return| |the| |user| |specified| |index| |file| |name.|)
(* |;;;| "Return the user specified index file name.")
(let ((filename (fm.itemprop (fm.getitem 'index.file nil menuw)
'label)))
(and (not (strequal filename ""))
(mkatom filename)))))
(LET ((FILENAME (FM.ITEMPROP (FM.GETITEM 'INDEX.FILE NIL MENUW)
'LABEL)))
(CL:UNLESS (STREQUAL FILENAME "")
(MKATOM FILENAME)))))
(WRITE.INDEX.FILE
(LAMBDA (INDEX.STREAM INDEX.LIST INDEX.ARRAY INDEX.FONT PAGE.FONT)
@@ -865,17 +869,17 @@
(* |;;;| "IMAGE OBJECT for causing the index to be written, without using the menu")
(DECLARE\: DONTCOPY
(FILEMAP (NIL (3107 11080 (INDEXOBJ 3117 . 4140) (INDEXOBJP 4142 . 4590) (INDEX.DISPLAYFN 4592 . 6451)
(INDEX.IMAGEBOXFN 6453 . 7999) (INDEX.PUTFN 8001 . 8431) (INDEX.GETFN 8433 . 8824) (INDEX.COPYFN 8826
. 9469) (INDEX.BUTTONEVENTINFN 9471 . 11078)) (11119 19220 (INSERT.INDEX 11129 . 11716) (
INSERT.INDEXENTRY 11718 . 14501) (INSERT.KNOWN.INDEX 14503 . 16687) (SUBITEM.SELECTFN 16689 . 17683) (
ADD.NEW.INDEX 17685 . 19218)) (19286 23217 (CHANGE.INDEX 19296 . 19864) (CHANGE.INDEXENTRY 19866 .
20616) (CHANGE.XINDEX.KEY 20618 . 21176) (CHANGE.XINDEX.ENTRY 21178 . 21811) (CHANGE.XINDEX.FONT 21813
. 22682) (CHANGE.XINDEX.NUMBER 22684 . 23215)) (23259 31132 (GETHASH.INDEX 23269 . 24045) (
INDEX.PAGE.NUMBER 24047 . 25700) (INDEX.MANUAL.DELIMITER 25702 . 26334) (INDEX.STRING 26336 . 27346) (
GET.INDEXENTRY.NUMBER 27348 . 28368) (INDEX.LIST.REFS 28370 . 29888) (LIST.OF.INDEXENTRIES 29890 .
31130)) (31174 40965 (CREATE.INDEX.FILE 31184 . 33079) (DUMP.INDEX 33081 . 34931) (VIEW.INDEX.FILE
34933 . 35993) (GET.INDEX.FILE 35995 . 36385) (WRITE.INDEX.FILE 36387 . 38788) (
WRITE.INDEX.PAGENUMBERS 38790 . 39990) (RESET.INDEX.PAGENUMBERS 39992 . 40963)) (41163 45188 (
SELECTION.TO.STRING 41173 . 44005) (SELECTION.TO.INDEX 44007 . 45186)))))
(FILEMAP (NIL (3091 11064 (INDEXOBJ 3101 . 4124) (INDEXOBJP 4126 . 4574) (INDEX.DISPLAYFN 4576 . 6435)
(INDEX.IMAGEBOXFN 6437 . 7983) (INDEX.PUTFN 7985 . 8415) (INDEX.GETFN 8417 . 8808) (INDEX.COPYFN 8810
. 9453) (INDEX.BUTTONEVENTINFN 9455 . 11062)) (11103 19204 (INSERT.INDEX 11113 . 11700) (
INSERT.INDEXENTRY 11702 . 14485) (INSERT.KNOWN.INDEX 14487 . 16671) (SUBITEM.SELECTFN 16673 . 17667) (
ADD.NEW.INDEX 17669 . 19202)) (19270 23201 (CHANGE.INDEX 19280 . 19848) (CHANGE.INDEXENTRY 19850 .
20600) (CHANGE.XINDEX.KEY 20602 . 21160) (CHANGE.XINDEX.ENTRY 21162 . 21795) (CHANGE.XINDEX.FONT 21797
. 22666) (CHANGE.XINDEX.NUMBER 22668 . 23199)) (23243 31116 (GETHASH.INDEX 23253 . 24029) (
INDEX.PAGE.NUMBER 24031 . 25684) (INDEX.MANUAL.DELIMITER 25686 . 26318) (INDEX.STRING 26320 . 27330) (
GET.INDEXENTRY.NUMBER 27332 . 28352) (INDEX.LIST.REFS 28354 . 29872) (LIST.OF.INDEXENTRIES 29874 .
31114)) (31158 41218 (CREATE.INDEX.FILE 31168 . 33239) (DUMP.INDEX 33241 . 35091) (VIEW.INDEX.FILE
35093 . 36153) (GET.INDEX.FILE 36155 . 36638) (WRITE.INDEX.FILE 36640 . 39041) (
WRITE.INDEX.PAGENUMBERS 39043 . 40243) (RESET.INDEX.PAGENUMBERS 40245 . 41216)) (41416 45441 (
SELECTION.TO.STRING 41426 . 44258) (SELECTION.TO.INDEX 44260 . 45439)))))
STOP

Binary file not shown.

View File

@@ -1,19 +1,12 @@
(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "XCL" BASE 10)
(DEFINE-FILE-INFO :PACKAGE "INTERLISP" :READTABLE "XCL" :BASE 10)
(FILECREATED "28-Feb-2025 23:58:44" |{WMEDLEY}<lispusers>tmax>TMAX-NGROUP.;54| 51157
(FILECREATED "16-May-2026 09:27:29" |{MEDLEY}<lispusers>tmax>TMAX-NGROUP.;58| 51129
:EDIT-BY |rmk|
:CHANGES-TO (FNS CHANGE.NGROUP.FORMAT CHANGE.NGROUP.FORMAT.ABBREV CHANGE.NGROUP.FORMAT.START
WRITE.TOC.ENTRY MAP.NGROUP.LOOKS GET.PREVIOUS.NGROUPS NGROUP.TOC.ENTRIES
CHANGE.NGROUP CHANGE.NGROUP.FONT CHANGE.NGROUP.FORMAT.TXTBEFORE
CHANGE.NGROUP.FORMAT.DELIMBEFORE CHANGE.NGROUP.FORMAT.DELIMAFTER
GET.NGROUP.TEMPLATE ADD.NUMBER.GROUP CHANGE.NGROUP.FORMAT.TOC
CHANGE.NGROUP.FORMAT.MANINDEX CHANGE.NGROUP.FORMAT.DISPLAY
UPDATE.NGROUP.MANINDEX GET.NGROUP.START SHOW.NGROUP.FONT NGROUP.GETFONT
NGROUP.FIXUP.RECORDS)
:CHANGES-TO (FNS WRITE.TOC.ENTRY CREATE.TOC.FILE WRITE.TOC.FILE)
:PREVIOUS-DATE "24-Feb-2025 09:25:39" |{WMEDLEY}<lispusers>tmax>TMAX-NGROUP.;49|)
:PREVIOUS-DATE "28-Feb-2025 23:58:44" |{MEDLEY}<lispusers>tmax>TMAX-NGROUP.;54|)
(PRETTYCOMPRINT TMAX-NGROUPCOMS)
@@ -704,25 +697,27 @@
CHAR)))))))
(CREATE.TOC.FILE
(LAMBDA (TSTREAM TOC.FILE) (* \; "Edited 23-Feb-2025 11:49 by rmk")
(LAMBDA (TSTREAM TOC.FILE) (* \; "Edited 16-May-2026 09:18 by rmk")
(* \; "Edited 23-Feb-2025 11:49 by rmk")
(* \; "Edited 21-Feb-2025 10:17 by rmk")
(* |fsg| "16-Jul-87 11:46")
(* |;;;| "Here to print the Table Of Contents. Each Line of the TOC consists of the NGroup, the corresponding text, followed by the current listing page number.")
(SETQ TOC.FILE (OR (OUTFILEP (OR TOC.FILE (GET.INDEX.FILE (TMAXPROP TSTREAM 'IMAGEOBJ.MENUW))))
(ERROR (CONCAT "Can't open " TOC.FILE " as a index file"))))
(TEDIT.PROMPTPRINT TSTREAM (CONCAT "Writing table of contents on " TOC.FILE)
(SETQ TOC.FILE (OR (OUTFILEP (OR TOC.FILE (GET.TOC.FILE (TMAXPROP TSTREAM 'IMAGEOBJ.MENUW))))
(ERROR (CONCAT "Can't open table of contents file " TOC.FILE))))
(TEDIT.PROMPTPRINT TSTREAM (CONCAT "Writing contents on " TOC.FILE "...")
T)
(LET ((IMAGESTREAM (OPENIMAGESTREAM '{NULL}))
(LET ((DUMMYSTREAM (OPENIMAGESTREAM (UNIX-TMP-FILE-NAME '|tmax-toc| '|pdf|)
'PDF))
(TOC.LIST (TSP.LIST.OF.OBJECTS TSTREAM (FUNCTION NGROUP.TOC.ENTRIES)))
(TOC.TABSTOP `(PARALOOKS (TABS ((,(FIXR (TIMES 72.27 6.125)) . DOTTEDLEFT)))))
TOC.STREAM)
(* |;;|
 "Make sure we have the page numbers, written in the image stream. Why not in TSTREAM?")
(* |;;| "Collect page numbers in the image objects")
(TEDIT.FORMAT.HARDCOPY TSTREAM IMAGESTREAM NIL NIL NIL NIL NIL NIL NIL NIL T)
(TEDIT.TO.IMAGEFILE TSTREAM DUMMYSTREAM)
(DELFILE DUMMYSTREAM)
(COND
((AND TOC.LIST TOC.FILE)
(SETQ TOC.STREAM (OPENTEXTSTREAM NIL NIL NIL NIL TOC.TABSTOP))
@@ -730,6 +725,7 @@
(SETQ TOC.FILE (TEDIT.PUT TOC.STREAM TOC.FILE NIL NIL NIL T))
(CLOSEF? TOC.FILE)
(SETQ TOC.FILE (FULLNAME TOC.FILE))
(TEDIT.PROMPTPRINT TSTREAM "done")
TOC.FILE)
(TOC.LIST (TEDIT.PROMPTPRINT TSTREAM
"Please specify a file name for the table of contents" T)
@@ -777,7 +773,8 @@
(MKATOM FILENAME)))))
(WRITE.TOC.FILE
(LAMBDA (TOC.STREAM TOC.LIST TSTREAM) (* \; "Edited 21-Feb-2025 00:55 by rmk")
(LAMBDA (TOC.STREAM TOC.LIST TSTREAM) (* \; "Edited 16-May-2026 07:58 by rmk")
(* \; "Edited 21-Feb-2025 00:55 by rmk")
(* |fsg| "26-Aug-87 15:37")
(* |;;;| "Here to speficy the order of the Table-Of-Contents. The TOC is ordered by the top-level sister nodes.")
@@ -788,20 +785,21 @@
(|for| TOC.MOTHER |in| (TOPLEVEL.SISTERS TSTREAM)
|do| (DSPFONT |GP.DefaultFont| TOC.STREAM)
(PRINTOUT TOC.STREAM T)
(|for| TOC.ITEM |in| TOC.LIST |when| (|with| NUMBEROBJ (|fetch| OBJECTDATUM
|of| (CAR TOC.ITEM))
(|for| TOC.ITEM |in| TOC.LIST |when| (|with| NUMBEROBJ (|fetch| OBJECTDATUM |of| TOC.ITEM
)
(EQ (GET.NGROUP.MOTHER REF.TYPE TSTREAM)
TOC.MOTHER))
|do| (WRITE.TOC.ENTRY TOC.ITEM TOC.STREAM TSTREAM)))))
(WRITE.TOC.ENTRY
(LAMBDA (TOC.ITEM TOC.STREAM TSTREAM) (* \; "Edited 25-Feb-2025 10:35 by rmk")
(LAMBDA (TOC.ITEM TOC.STREAM TSTREAM) (* \; "Edited 16-May-2026 09:27 by rmk")
(* \; "Edited 25-Feb-2025 10:35 by rmk")
(* \; "Edited 21-Feb-2025 00:55 by rmk")
(* |fsg| "27-Jul-87 14:55")
(* |;;;| "Write one line to the Table-Of-Contents file.")
(LET* ((DATUM (|fetch| OBJECTDATUM |of| (CAR TOC.ITEM)))
(LET* ((DATUM (|fetch| OBJECTDATUM |of| TOC.ITEM))
(ITEM.LEVEL (LENGTH (LIST.ANCESTORS (|fetch| (NUMBEROBJ REF.TYPE) |of| DATUM)
NIL TSTREAM))))
(DSPFONT |GP.DefaultFont| TOC.STREAM)
@@ -811,25 +809,29 @@
(T (RPTQ ITEM.LEVEL (PRINTOUT TOC.STREAM " "))))
(DSPFONT (|fetch| (NUMBEROBJ FONT) |of| DATUM)
TOC.STREAM)
(PRINTOUT TOC.STREAM (|fetch| (NUMBEROBJ NUMSTRING) |of| DATUM))
(PRINTOUT TOC.STREAM (OR (|fetch| (NUMBEROBJ TEXT.BEFORE#) |of| DATUM)
"")
(|fetch| (NUMBEROBJ NUMSTRING) |of| DATUM)
(OR (|fetch| (NUMBEROBJ TEXT.AFTER#) |of| DATUM)
""))
(DSPFONT |GP.DefaultFont| TOC.STREAM)
(PRINTOUT TOC.STREAM (CHARACTER (CHARCODE TAB))
(|fetch| (NUMBEROBJ PAGE.NUMBER) |of| DATUM)
T))))
)
(DECLARE\: DONTCOPY
(FILEMAP (NIL (2291 42669 (INSERT.NGROUP 2301 . 3781) (VERIFY.NGROUP.ORDER 3783 . 5571) (
GET.PREVIOUS.NGROUPS 5573 . 6114) (ADD.NUMBER.GROUP 6116 . 8217) (ADD.NGROUP.TO.DBASE 8219 . 9128) (
COLLECT.NGROUPS 9130 . 9830) (LIST.FONT.PROPS 9832 . 10096) (MAP.NGROUP.LOOKS 10098 . 12009) (
NGROUP.GETFONT 12011 . 13286) (CHANGE.NGROUP 13288 . 14515) (CHANGE.NGROUP.FONT 14517 . 16876) (
SHOW.NGROUP.FONT 16878 . 17607) (CHANGE.NGROUP.FORMAT 17609 . 20941) (SHOW.NGROUP.FORMAT 20943 . 21516
) (GET.NGROUP.TEMPLATE 21518 . 22978) (CHANGE.NGROUP.FORMAT.DELIMBEFORE 22980 . 23962) (
CHANGE.NGROUP.FORMAT.DISPLAY 23964 . 25654) (CHANGE.NGROUP.FORMAT.DELIMAFTER 25656 . 26634) (
GET.NGROUP.DELIMITER 26636 . 28370) (CHANGE.NGROUP.FORMAT.ABBREV 28372 . 30663) (
CHANGE.NGROUP.FORMAT.START 30665 . 31546) (GET.NGROUP.START 31548 . 33364) (CHANGE.NGROUP.FORMAT.TOC
33366 . 35382) (CHANGE.NGROUP.FORMAT.MANINDEX 35384 . 37819) (UPDATE.NGROUP.MANINDEX 37821 . 39359) (
NGROUP.FIXUP.RECORDS 39361 . 42667)) (42718 51134 (GET.NGROUP.TEXTSTRING 42728 . 44110) (
CONVERT.TABS.TO.SPACES 44112 . 44910) (CREATE.TOC.FILE 44912 . 46827) (NGROUP.TOC.ENTRIES 46829 .
47478) (VIEW.TOC.FILE 47480 . 48379) (GET.TOC.FILE 48381 . 48875) (WRITE.TOC.FILE 48877 . 49939) (
WRITE.TOC.ENTRY 49941 . 51132)))))
(FILEMAP (NIL (1676 42054 (INSERT.NGROUP 1686 . 3166) (VERIFY.NGROUP.ORDER 3168 . 4956) (
GET.PREVIOUS.NGROUPS 4958 . 5499) (ADD.NUMBER.GROUP 5501 . 7602) (ADD.NGROUP.TO.DBASE 7604 . 8513) (
COLLECT.NGROUPS 8515 . 9215) (LIST.FONT.PROPS 9217 . 9481) (MAP.NGROUP.LOOKS 9483 . 11394) (
NGROUP.GETFONT 11396 . 12671) (CHANGE.NGROUP 12673 . 13900) (CHANGE.NGROUP.FONT 13902 . 16261) (
SHOW.NGROUP.FONT 16263 . 16992) (CHANGE.NGROUP.FORMAT 16994 . 20326) (SHOW.NGROUP.FORMAT 20328 . 20901
) (GET.NGROUP.TEMPLATE 20903 . 22363) (CHANGE.NGROUP.FORMAT.DELIMBEFORE 22365 . 23347) (
CHANGE.NGROUP.FORMAT.DISPLAY 23349 . 25039) (CHANGE.NGROUP.FORMAT.DELIMAFTER 25041 . 26019) (
GET.NGROUP.DELIMITER 26021 . 27755) (CHANGE.NGROUP.FORMAT.ABBREV 27757 . 30048) (
CHANGE.NGROUP.FORMAT.START 30050 . 30931) (GET.NGROUP.START 30933 . 32749) (CHANGE.NGROUP.FORMAT.TOC
32751 . 34767) (CHANGE.NGROUP.FORMAT.MANINDEX 34769 . 37204) (UPDATE.NGROUP.MANINDEX 37206 . 38744) (
NGROUP.FIXUP.RECORDS 38746 . 42052)) (42103 51106 (GET.NGROUP.TEXTSTRING 42113 . 43495) (
CONVERT.TABS.TO.SPACES 43497 . 44295) (CREATE.TOC.FILE 44297 . 46375) (NGROUP.TOC.ENTRIES 46377 .
47026) (VIEW.TOC.FILE 47028 . 47927) (GET.TOC.FILE 47929 . 48423) (WRITE.TOC.FILE 48425 . 49595) (
WRITE.TOC.ENTRY 49597 . 51104)))))
STOP

Binary file not shown.