! notes.h ! Release 1 ! Copyright 2004 Anson Turner. ! ! To use, invoke the (note) print specifier with a string (or routine): ! ! "This is an example.",(note) "This is the footnote."; ! ! Footnotes will be numbered automatically from 1 onwards. Players can view ! the footnotes with the NOTE (or FOOTNOTE) command: ! ! This is an example. [1] ! ! >NOTE 1 ! This is the footnote. ! ! Before including this file, set the constant MAX_FOOTNOTES to the number ! of footnotes that will appear in your implementation: ! ! Constant MAX_FOOTNOTES = 42; ! ! If you don't set it high enough and the system runs out of room to store ! the referenced notes, it will simply start over, numbering the next note ! [1]. ! ! And that's it. I made it any easier, you'd be insulted. System_file; Default MAX_FOOTNOTES = 20; Array footnotes_mentioned --> (MAX_FOOTNOTES + 1); [ note str n; n = footnotenumber(str); if (n == 0) { if (++(footnotes_mentioned-->0) >= MAX_FOOTNOTES) footnotes_mentioned-->0 = 1; n = footnotes_mentioned-->0; footnotes_mentioned-->n = str; } print " [",n,"]"; ]; [ footnotenumber str c; for (c = 1 : c <= footnotes_mentioned-->0 : c++) if (footnotes_mentioned-->c == str) return c; return 0; ]; [ FootnoteSub ; if (footnotes_mentioned-->0 == 0) "No footnotes have been mentioned."; if (noun < 1 || noun > footnotes_mentioned-->0) "No footnote ",noun," has been mentioned."; PrintOrRunVar(footnotes_mentioned-->noun); ]; Verb meta 'note' 'footnote' * number -> Footnote;