29.05.2014 Views

The history of luaTEX 2006–2009 / v 0.50 - Pragma ADE

The history of luaTEX 2006–2009 / v 0.50 - Pragma ADE

The history of luaTEX 2006–2009 / v 0.50 - Pragma ADE

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

table can contain information about the xml root document so that associated ltering<br />

and handling can be reconstructed. With the section title we store information about the<br />

preceding label text (seldom used, think <strong>of</strong> ‘Part B’).<br />

This entry is used for lists as well as cross referencing. Actually, the stored information is<br />

also used for markings (running heads). This means that these mechanisms must be able<br />

to distinguish between where and how information is stored.<br />

<strong>The</strong>se tables look rather verbose and indeed they are. We end up with much larger multipass<br />

data les but fortunately loading them is quite efcient. Serializing on the other<br />

hand might cost some time which is compensated by the fact that we no longer store<br />

information in token lists associated with nodes in TEX's lists and in the future we might<br />

even move more data handling to the Lua end. Also, in future versions we will share<br />

similar data (like page number information) more efciently.<br />

Storing date at the Lua end also has consequences for the typesetting. When specic data<br />

is needed a call to Lua is necessary. In the future we might <strong>of</strong>fer both push and pull methods<br />

(Lua pushing information to the typesetting code versus Lua triggering typesetting<br />

code). For lists we pull, and for registers we currently push. Depending on our experiences<br />

we might change these strategies.<br />

A side effect <strong>of</strong> the rewrite is that we force more consistency. For instance, you see a conversion<br />

eld in the list. This is the old way <strong>of</strong> dening the way a number gets converted.<br />

<strong>The</strong> modern approach is to use sets. Because we now have a more stringent inheritance<br />

model at the user interface level, this might lead to incompatible conversions at lower<br />

levels (when unset). Instead <strong>of</strong> cooking up some nasty compatibility hacks, we accept<br />

some incompatibility, if only because users have to adapt their styles to new font technology<br />

anyway. And for older documents there is still MkII.<br />

Instead <strong>of</strong> introducing many extra conguration variables (for each level <strong>of</strong> sectioning)<br />

we introduce sets. <strong>The</strong>se replace some <strong>of</strong> the existing parameters and are the follow up<br />

on some (undocumented) precursor <strong>of</strong> sets. Examples <strong>of</strong> sets are:<br />

\definestructureseparatorset [default][][.]<br />

\definestructureconversionset[default][][numbers]<br />

\definestructureresetset [default][][0]<br />

\definestructureprefixset [default][section-2,section-3][]<br />

\definestructureseparatorset [appendix][][.]<br />

\definestructureconversionset[appendix][Romannumerals,Characters][]<br />

\definestructureresetset [appendix][][0]<br />

<strong>The</strong> third parameter is the default value. <strong>The</strong> sets that relate to typesetting can have a<br />

rendering specication:<br />

246 Everything structure

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!