Tick some things off the TODO list.
[ibg.git] / appendices / f.rst
index e1fd4b0e5edf89cbfe9bf3a49ba7e90ab203143e..0dc8e6449ad13efb9fd199a12cd4f0843316d8ff 100644 (file)
    .. image:: /images/picL.png
       :align: left
 
-.. raw:: latex
-
-   \dropcap{l}
-
-ibrary files define Inform's model world, turning a conventional
+|L|\ibrary files define Inform's model world, turning a conventional
 programming language into a text adventure development system.  Here are
 the library constants, variables and routines, the standard object
 properties and attributes, the verb grammars and actions.
@@ -33,25 +29,18 @@ Library objects
   If defined (between Includes of `Parser` and `VerbLib`), changes standard
   library messages:
 
-  .. only:: html
-
-    | `Object LibraryMessages`
-    |   `with before [;`
-    |        `{action}: "{string}";`
-    |        `{action}: "{string}";`
-    |        `{action}: switch (lm_n) {`
-    |                `{value}: "{string}";`
-    |                `{value}: "{string}",`
-    |                    `(a) lm_o,".";`
-    |                `...`
-    |                `}`
-    |            `...`
-    |        `];`
-
-  .. todo::
-
-     Get this to work properly in LaTeX.  Currently get a 'too deeply
-     nested' error.
+  | `Object LibraryMessages`
+  |   `with before [;`
+  |        `{action}: "{string}";`
+  |        `{action}: "{string}";`
+  |        `{action}: switch (lm_n) {`
+  |                `{value}: "{string}";`
+  |                `{value}: "{string}",`
+  |                    `(a) lm_o,".";`
+  |                `...`
+  |                `}`
+  |            `...`
+  |        `];`
 
 `selfobj`
   The default player object.  Avoid: use instead the `player` variable,
@@ -155,7 +144,8 @@ Library variables
   Used by `invent` and `list_together` properties.
 
 `keep_silent`
-  Normally `false`; `true` makes most group 2 actions silent.
+  Normally `false`; `true` makes most :ref:`group 2 actions
+  <group-2-actions>` silent.
 
 `location`
   The player's current room; unless that's dark, when it contains
@@ -198,6 +188,8 @@ Library variables
 `wn`
   The input stream word number, counting from 1.
 
+.. _library-routines:
+
 Library routines
 ================
 
@@ -205,7 +197,8 @@ Library routines
   A scored task has been achieved.
 
 `AfterRoutines()`
-  In a group 2 action, controls output of "after" messages.
+  In a :ref:`group 2 action <group-2-actions>`, controls output of "after"
+  messages.
 
 `AllowPushDir()`
   An object can be pushed from one location to another.
@@ -227,17 +220,17 @@ Library routines
 `DrawStatusLine()`
   Refreshes the status line; happens anyway at end of each turn.
 
-`GetGNAOfObject(obj_id)`
+`GetGNAOfObject({obj_id})`
   Returns gender-number-animation 0..11 of the `{obj_id}`.
 
-`HasLightSource(obj_id)`
+`HasLightSource({obj_id})`
   Returns `true` if the `{obj_id}` has light.
 
 `IndirectlyContains({parnt_obj_id,obj_id})`
   Returns `true` if `{obj_id}` is currently a child or grand-child or
   great-grand-child... of the `{parent_object}`.
 
-`IsSeeThrough(obj_id)`
+`IsSeeThrough({obj_id})`
   Returns `true` if light can pass through the `{obj_id}`.
 
 `Locale({obj_id,"string1","string2"})`
@@ -365,6 +358,8 @@ Library routines
   Returns the type of its `{arg}` : 3 for a string address, 2 for a routine
   address, 1 for an object number, or 0 otherwise.
 
+.. _object-props:
+
 Object properties
 =================
 
@@ -660,6 +655,8 @@ Object's value being considered first.
   For a `lockable` object: the `{obj_id}` (generally some kind of key)
   needed to lock and unlock the object, or `nothing` if no key fits.
 
+.. _object-attrs:
+
 Object attributes
 =================
 
@@ -760,6 +757,8 @@ Object attributes
 `worn`
      For a `clothing` object: is being worn.
 
+.. _entry-points:
+
 Optional entry points
 =====================
 
@@ -834,6 +833,8 @@ These routines, if you supply them, are called when shown.
 `UnknownVerb()`
   Called when an unusual verb is encountered.
 
+.. _group-1-actions:
+
 Group 1 actions
 ===============
 
@@ -889,11 +890,15 @@ and the debug tools.
 `XTree`           "`TREE`"
 ===============   ===================================================
 
+.. _group-2-actions:
+
 Group 2 actions
 ===============
 
 Group 2 actions usually work, given the right circumstances.
 
+.. tabularcolumns:: |l|p{5in}|
+
 =============   =============================================================
 `Close`         "`CLOSE [UP]`", "`COVER [UP]`", "`SHUT [UP]`"
 `Disrobe`       "`DISROBE`", "`DOFF`", "`REMOVE`", "`SHED`", "`TAKE OFF`"
@@ -951,12 +956,16 @@ Group 2 actions usually work, given the right circumstances.
 `Wear`          "`DON`", "`PUT ON`", "`WEAR`"
 =============   =============================================================
 
+.. _group-3-actions:
+
 Group 3 actions
 ===============
 
 Group 3 actions are by default stubs which output a message and stop at the
 "before" stage (so there is no "after" stage).
 
+.. tabularcolumns:: |l|p{5in}|
+
 =============   =============================================================
 `Answer`        "`ANSWER TO`", "`SAY TO`",
                 "`SHOUT TO`", "`SPEAK TO`"
@@ -1027,6 +1036,8 @@ Fake actions
 Fake actions handle some special cases, or represent "real" actions from
 the viewpoint of the second object.
 
+.. tabularcolumns:: |l|p{5in}|
+
 ================   ========================================================
 `LetGo`            Generated by `Remove`.
 `ListMiscellany`   Outputs a range of inventory messages.