output: Add support for captions.
[pspp] / src / output / tab.h
index f0cffc17fdde48e1cdca4b9503fe659061749f35..9371d812c652292de4fb8e64032665be96a12ab6 100644 (file)
@@ -25,9 +25,9 @@
    Some of the features of this type of table are obsolete but have not yet
    been removed, because some code still uses them.  These features are:
 
-       - The title.  The title (or caption, actually) is a property of the
-         table_item (see output/table-item.h) in which a table is embedded,
-         not a property of the table itself.
+       - The title and caption.  These are properties of the table_item (see
+         output/table-item.h) in which a table is embedded, not properties of
+         the table itself.
 
        - Row and columns offsets (via tab_offset(), tab_next_row()).  This
          feature simply isn't used enough to justify keeping it.
@@ -57,10 +57,8 @@ struct tab_table
     struct table table;
     struct pool *container;
 
-    /* Table title, or a null pointer if no title has been set.
-
-       The table title is properly part of struct table_item, not struc*/
-    char *title;
+    /* Table title and caption, or null. */
+    char *title, *caption;
     int cf;                    /* Column factor for indexing purposes. */
 
     /* Table contents.
@@ -107,6 +105,8 @@ void tab_realloc (struct tab_table *, int nc, int nr);
 void tab_headers (struct tab_table *, int l, int r, int t, int b);
 void tab_title (struct tab_table *, const char *, ...)
      PRINTF_FORMAT (2, 3);
+void tab_caption (struct tab_table *, const char *, ...)
+     PRINTF_FORMAT (2, 3);
 void tab_submit (struct tab_table *);
 
 /* Rules. */
@@ -143,10 +143,13 @@ void tab_joint_text_format (struct tab_table *, int x1, int y1, int x2, int y2,
                             unsigned opt, const char *, ...)
      PRINTF_FORMAT (7, 8);
 
+void tab_footnote (struct tab_table *, int x, int y, const char *format, ...)
+  PRINTF_FORMAT (4, 5);
+
 void tab_subtable (struct tab_table *, int x1, int y1, int x2, int y2,
-                   unsigned opt, struct table *subtable);
+                   unsigned opt, struct table_item *subtable);
 void tab_subtable_bare (struct tab_table *, int x1, int y1, int x2, int y2,
-                        unsigned opt, struct table *subtable);
+                        unsigned opt, struct table_item *subtable);
 
 bool tab_cell_is_empty (const struct tab_table *, int c, int r);