A cheat sheet is a simple XML file. Consider the following example:
<?xml version="1.0"?> <CheatSheet> <Tab name="Combat"> <Tab name="Actions"> <Content rows="10" columns="3"> <TextElement row="1" column="1"> <Text>This is a text.<br/>And more of it.</Text> <Hint>This is a very<br/>short hint. But with a line break.</Hint> </TextElement> <TextElement row="2" column="2"> <Text bold="true">This is also a text.</Text> </TextElement> <TableElement row="3" column="1" spanToRow="7" spanToColumn="2"> <Table rows="3" columns="2"> <Header>Column 1</Header> <Header>Column 2</Header> <Text>Row 1/ Column 1</Text> <Text>Row 1/ Column 2</Text> <Text>Row 2/ Column 1</Text> <Text>Row 2/ Column 2</Text> <Text>Row 3/ Column 1</Text> <Text bold="true">Row 3/ Column 2</Text> </Table> </TableElement> </Content> </Tab> </Tab> </CheatSheet>
As you can see, every cheat consists of an CheatSheet element which contains one or more Tab-Elements. Each tab is, not surprisingly, a tab in the GMTool's cheatsheet plugin. Every tab can itself contain more tabs (and these also can contain tabs, etc.etc.).
With tabs, you can separate your cheat sheet into different parts (for example a tab for combat, one for magic, etc.).
If a Tab has no sub-tabs, it should have a Content-Element. Each Content element can specify it's own “layout” by using the rows and columns attributes, which divide the Content into a table with the given amount of rows and colums.
In the Content element, you can have TextElements, which contain a text and an optional hint, both of which can be multi-lined by adding <br/> elements. The TextElements should always have a row and column attribute to tell the program, where they should be placed. Additionally, they can have a spanToRow and spanToColumn attribute, which tells the program that they should span over more columns and/or rows (to the given spanToRow and spanToColumn).
You can make a text bold by using the bold=“true” attribute in a <Text> element, as you can see in the 2nd TextElement above.
Additionally to TextElements, there can also be TableElements in the Content, which contain a table. As you can see in the example above, a table has a rows and a columns attribute, both must be given to define how big the table is.
There can be as many Header elements as there are columns, these will simply specify the headings: The first Header element for the first column, the 2nd for the 2nd column, etc.
Following the Headers there can be Text elements. The first Text element specifies the content of the cell in the first column of the first row, the 2nd. the content of the 2nd column of the first row, etc.
As you can see in the example, Texts in the table may also be bold.