LST records and the rglst
The LST structure is where most of the list appearance data is stored. An LST consists of two main parts: (1) an LSTF, which is stored on disk and contains formatting properties which apply to the entire list, such as whether the list is simple or multilevel, the list's unique list index and template code, the istd's (see Stylesheet above) of the styles (if any) that each level in the list is linked to, and a number of Word 6 compatilibity option; (2) an array of LVL structures, which describe the appearance of each individual level in the LST.
A LVL structure contains two parts to it: (1) an LVLF, which stores all static data such as the start-at value for the list level, the numbering type (arabic or roman), the alignment (left, right or centered) of the number, and several Word 6.0 compatibility options; and (2) a set of pointers to variable length data: (a) a grpprlChpx, which gives character formatting to the paragraph number text itself, (b) a grpprlPapx, which gives paragraph formatting to the paragraph containing the number, such as indenting and tab information, and (c) the number text itself.
Word writes out the rglst as the plcflst by writing out, first, a short integer containing the number of LST structures to be written. It then enumerates through the rglst, writing out each LSTF structure. It then enumerates through the rglst again, deciding, for each LST, whether it has one level (LSTF.fSimpleList) or nine levels (!LSTF.fSimpleList). It then writes the appropriate number of LVL structures as described below.
When Word writes out an LVL structure, it first writes out the LVLF, followed by the grpprlPapx (of LVLF.cbGrpprlPapx bytes in length), followed by the grpprlChpx (of length LVLF.cbGrpprlChpx), and an XCHAR string with the number text, preceded by an XCHAR containing the string's length.