Thanks, Idris, for your interest. I don’t understand enough about typesetting and computer math to make an informed sugestion, but I’ll try my best. What about a Metapost-like main engine to define the general layout of pages? That engine would know about borders, floating spaces for pictures or text, and handle “global” information like main fonts or page numbers etc.; and even draw on the page. Plug-ins would render specific information. The main engine could also do Metapost-like operations on what comes from that rendering. That engine would call plug-ins to render anything, using a standard human-writable tag language. The engine will provide plug-ins a shape they should fill, as well as tips on how to fill it (“amount of ink”, how to deal with unconnected shapes, available fonts etc.); and share information with plug-ins so they can know, for instance, which symbols can be used for footnotes, and inform back which ones they have used. Plug-ins would respond rendered results, as well as indicators about how good is the result and what could be done to get it better (less or more to render, adjusts in their area shape etc.). Main engine and plug-ins would negociate good parameters, shapes and information set until they are both happy (enough). The reason for a standard tag language is that the main engine should be able to do some operations on data, like breaking it in pieces like words, paragraphs or staffs on music scores, sometimes without fully understanding what exactly those are. Possible outcomes: with a proper script language (Lua?), things like tables, multi-column text, and even a lot of crazy ideas could be really easy to write. Plug-ins results would be predictable, since they know nothing about the world except what the main engine has informed them. Best, Maurício
Hi Maurício,
Sorry to insist, but I would be really interested in approaches that are not just great things we could add to TeX.
For instance: would it be possible to have some kind of “layout engine” to which text processing would be just one among other plug-ins? I wonder what kind of information that engine should share with plug-ins. Do you think such system is possible? Or something else?
I would love to hear more of your thoughts on this. Don't hold back!
Best wishes Idris