Hi, I've been meaning to thank you, Frank, for the clear and insightful basis for discussion with the language layers. It's very helpful to be able to refer to these ideas in more concrete terms. I also see that you've now answered Joel's questions as well, but I figured another viewpoint could hurt (much). Interesting to see if what I write makes sense to you :) On 24/08/2009, at 10:47 AM, Joel C. Salomon wrote: > Frank Mittelbach wrote: >> As a short summary: >> >> layer -1 = user interface definition for layer 0 >> layer 0 = DTD document type definition (no layout aspects) >> layer 1 = layout/design definition for given DTD from layer 0 >> layer 2 = predefined, customizable templates for use in layer 1 >> (applicable >> to more than one DTD) >> layer 3 = programming constructs to build objects of layer 2 > > De-lurking to clarify a point: > > In other words, an author will only (yeah, right) use layer -1, while > the designer who customizes the layout for the book series will use > layer 0. > > Who uses layer 1? I’d guess it’ll be the guy who decides how to > logically divide the book—into Parts, Chapters, &c. Is that right? > > Then who uses layers 2 & 3? I'd like to draw a nice info-graphic to illustrate these layers, but for now I'll just try and answer your questions as I see the situation. (Please chime in with alternative interpretations.) - Yes, the document author writes in Layer -1. - Layer 0 defines the structure of the document sufficiently to be able to write the document in terms of abstract "content", separate from the "presentation". This layer doesn't define \part, \chapter, {figure}, and so on, it simply defines that those elements exist and can be used. (Perhaps also with an loose understanding of the way they interact.) - Layer 0 is also the layer than an automated system could output. In LaTeX2e, there is no difference between layer 0 and layer -1 (hence the odd numbering scheme, perhaps). - Layer 1 is used by the author who wishes to adjust the design of the document (different spacing, different fonts, etc.) and for the designer who sets up a local modification of a class (say, a university thesis style for others to use). In LaTeX2e, this could be thought of as loading a package such as geometry and then using its methods to change the page size. - Layer 2 is a set of document styles that each fulfil certain generic design elements. There might be a set of templates that can be used to generate an "article-like" class that allows everything in LaTeX2e's article, but with a keyval interface (through template) for all of the design parameters. - Layer 3 is the code that turns the source itself plus the design parameters into a typeset document. In LaTeX2e terms, this is simply what exists inside the standard classes, since they offer no (or few) options for direct modification. Layer 3 is the mechanics that performs the (a) typesetting algorithms of paragraphs and lists, (b) automatic numbering, (c) page layout with footnotes and floats, (d) resolving cross-references, and so on and so on. I hope, like Frank, that this explains *my* thinking and that it correlates with his explanations as well. If not, then I've got some more pondering to do. Will