2.2.7 Table Settings

TableSettings =>
    count(
      v3(
        ib1[endian]
        be32[x5]
        be32[current-layer]
        bool[omit-empty]
        bool[show-row-labels-in-corner]
        bool[show-alphabetic-markers]
        bool[footnote-marker-superscripts]
        byte[x6]
        becount(
          Breakpoints[row-breaks] Breakpoints[column-breaks]
          Keeps[row-keeps] Keeps[column-keeps]
          PointKeeps[row-point-keeps] PointKeeps[column-point-keeps]
        )
        bestring[notes]
        bestring[table-look]
        )...)

Breakpoints => be32[n-breaks] be32*[n-breaks]

Keeps => be32[n-keeps] Keep*[n-keeps]
Keep => be32[offset] be32[n]

PointKeeps => be32[n-point-keeps] PointKeep*[n-point-keeps]
PointKeep => be32[offset] be32 be32

The TableSettings reflect display settings. The fixed value of endian can be used to validate the endianness.

current-layer is the displayed layer. Suppose there are d layers, numbered 1 through d in the order given in the Dimensions (see Dimensions), and that the displayed value of dimension i is d_i, 0 \le x_i < n_i, where n_i is the number of categories in dimension i. Then current-layer is calculated by the following algorithm:

let current-layer = 0
for each i from d downto 1:
    current-layer = (n_i \times current-layer) + x_i

If omit-empty is 1, empty rows or columns (ones with nothing in any cell) are hidden; otherwise, they are shown.

If show-row-labels-in-corner is 1, then row labels are shown in the upper left corner; otherwise, they are shown nested.

If show-alphabetic-markers is 1, markers are shown as letters (e.g. ‘a’, ‘b’, ‘c’, …); otherwise, they are shown as numbers starting from 1.

When footnote-marker-superscripts is 1, footnote markers are shown as superscripts, otherwise as subscripts.

The Breakpoints are rows or columns after which there is a page break; for example, a row break of 1 requests a page break after the second row. Usually no breakpoints are specified, indicating that page breaks should be selected automatically.

The Keeps are ranges of rows or columns to be kept together without a page break; for example, a row Keep with offset 1 and n 10 requests that the 10 rows starting with the second row be kept together. Usually no Keeps are specified.

The PointKeeps seem to be generated automatically based on user-specified Keeps. They seems to indicate a conversion from rows or columns to pixel or point offsets.

notes is a text string that contains user-specified notes. It is displayed when the user hovers the cursor over the table, like text in the title attribute in HTML. It is not printed. It is usually empty.

table-look is the name of a SPSS “TableLook” table style, such as “Default” or “Academic”; it is often empty.

TableSettings ends with an arbitrary number of null bytes. A writer may safely write 82 null bytes.

A writer may safely use 4 for x5 and 0 for x6.