LATEX-L Archives

Mailing list for the LaTeX3 project


Options: Use Forum View

Use Proportional Font
Show Text Part by Default
Show All Mail Headers

Message: [<< First] [< Prev] [Next >] [Last >>]
Topic: [<< First] [< Prev] [Next >] [Last >>]
Author: [<< First] [< Prev] [Next >] [Last >>]

Print Reply
Kelly Smith <[log in to unmask]>
Reply To:
Mailing list for the LaTeX3 project <[log in to unmask]>
Wed, 8 Jan 2020 10:23:52 +0100
text/plain (35 lines)

After resuming work on my experimental class, I’ve noticed some things:

— My past self made some dubious organizational and implementation decisions.
— Although xtemplate provides for hierarchical design, it isn’t as robust as, say, CSS.
— Importantly: xtemplate ends up being used for two distinct purposes:
    1. Document-level objects, e.g. titles, sections, &c. (xtemplate’s intended use)
    2. Typesetting-level objects, e.g. complex layouts, xgalley (an unintended use)

I think that the takeaway from this observation is that building a library of composable, parameterized “objects” works well at both the document content and the typesetting layers. That’s not much of a revelation, but it was interesting to see the parallels.

Although the ideas involved are similar, I suspect that the interfaces should not be the same at the document content and typesetting levels. I may try playing with some ideas to see what works better for each layer.

* * *

One thing that I dislike about xtemplate is that the typesetting and programming logic are combined in a single “implementation” block. It should be possible to specify separately the typesetting and the other code (e.g. integer changes, file operations, PDF tagging and links, &c.).

Of course, for this separated approach to work, careful consideration has to be paid to when/where code is executed. For example, numbering could be typeset with an off-by-one error, if a counter increment happens at the wrong time.

A simple solution would be that, for document-level objects, there are two code insertion points: before and after typesetting. Code that needs to be executed during typesetting would be part of the implementation of the high-level typesetting language and be independent of document-level code.

I think that this approach would work for most cases but I don’t know if that’s true. There’s also the question of how composition would work, with this approach. I’d need to consider some examples of complex composition.

* * *

I like that xtemplate allows me to structure things and compose pieces to make something bigger. That organizational aspect definitely helps when building things.

* * *

Make of these thought what you will; I hope that they’re of some use.