The following restrictions apply:

  • It is essential that either the CALS or HTML table model are selected when creating the publication. If the publication uses custom tables exclusively, then choose CALS.

  • An empty cell must be mapped as <table-cell></table-cell>. Any attempt to use the empty tag notation <table-cell/> will result in a fatal error.

  • When using the CALS table model, the colnum attribute must be used to adjust the column number for cells that are affected by vertical spans.

  • The CN (column number) attribute can not be used if the underlying table model is HTML.

  • Declaring table commands in an unexpected order (e.g. defining the body before the head, or failing to specify any columns) will result in an immediate fatal error, and the typesetting run will stop at that point. It is your responsibility to ensure that all required commands are emitted in the correct sequence.

  • The maximum length of an assembled custom table row is 2,000,000 characters. This includes all markup, including any added by the system during processing.

Automatically generated table rows

A table-cell command will automatically generate a new table row if either of the following conditions applies:

  • colnum is explicitly supplied and is less than the current column number. In other words any attempt to place a new cell to the left of the current column will force a new row. In particular <table-cell colnum="1"> will always force a new row.

  • colnum is not supplied and the current row is full. Thus a rectangular grid can be filled by calling table-cell repeatedly, letting the cells "overflow" into new rows as required.

For rows affected by vertical spanning always use an explicit <table-nextrow/>.

Using a DTD

Note that if you are using a DTD, then any declarations of the components of the underlying table model will be used to determine the default content model for the custom table components. In particular, if your DTD defines the table cell as having element content (in the CALS table model, a table cell is defined using the <entry> element) , you should ensure that this is an appropriate content model for the custom table.

Custom tables generate their own internal <table> tag. So a table mapping (if present) will take precedence when setting table properties. In general, it is better not to declare your own table mappings if you are using custom tables.

Headers and Footers

You cannot declare a custom table within the context of a Header/Footer or Note if a custom table declared within the main text is still open.