0% found this document useful (0 votes)
248 views22 pages

LaTex Architecture

This document discusses the history and development of TeX and LaTeX. It describes LaTeX2e being released in 1994 as an "intermediate" version to address burning issues while LaTeX3 was still too radical, experimental, and immature. It also discusses the ideas behind LaTeX3's context-based design from the early 1990s and updates on expl3 development in the 2010s, aiming for a stable kernel.

Uploaded by

Ammar Ajmal
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
248 views22 pages

LaTex Architecture

This document discusses the history and development of TeX and LaTeX. It describes LaTeX2e being released in 1994 as an "intermediate" version to address burning issues while LaTeX3 was still too radical, experimental, and immature. It also discusses the ideas behind LaTeX3's context-based design from the early 1990s and updates on expl3 development in the 2010s, aiming for a stable kernel.

Uploaded by

Ammar Ajmal
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 22

Frank Mittelbach

I presume this is one of several dozen bugs that would arise over the years if anyone were foolish enough to try allowing "_" in command names.

Leslie Lamport

1982 TeX2

4 years later
4 years later 4 years later 5 years later 5 years later

1986 LaTeX 2.09

1990 TeX3

1994 LaTeX2e

1991 expl3 (first attempt) 1992 LaTeX3 architecture and kernel

1997 LuaTeX beta

?
???

What happened with it

2012

LaTeX3 beta

Right Architecture (ideas) --- Wrong Time


Too radical Too experimental Too immature (and unexplained) Far too slow and far too huge (when built on TeX)

Burning Issues needed resolving first


intermediate version LaTeX2e was released

At the end of this message I attached the .log file for Frank's test file tparm4. This job crashes on 'pool size exceeded', for which I've been afraid since Frank sent his first proposal for the new kernel. The new font selection scheme, the new macronaming convention, the resource database, ... : they all eat truck-loads full of pool space!
I *do* like the interfaces of the modules I just mentioned, but I think this project is definitely going in the wrong direction: it's nice but impractical!

No consistent design model

A few generic support commands, e.g., \@startsection Limited flexibility, limited scope

Most design changes required programming

No (proper) management of logical or visual context

except for limited support of context for lists Some hardwired context settings, e.g., footnotes in minipages

A Typesetting Example
adjusted individually

Design A

Design B

offer

distill Abstract Design provide Generic Implementation Underlying support language

Design A

Design B

creates

Values A

Values B

define context
overwrite values in document has

select

select

Abstract Design

Parameters

Clear separation: UI, design, coding


Logical and visual context dependencies are managed
Needed for high-quality results
Supports reuse and flexibility

UI supports formatting adjustments


Perhaps strongest point of LaTeX

Comprehensive, orthogonal programming language


Now why would you need this?

Nesting and sequencing of structural elements in the document defines context Elements belong to one or more classes, e.g., list (generic), itemize (specific) Encountered elements update the context and applicable rules are carried out
Notation:
<list itemize> <note> !head * . !head<list start of environment of class list end of environment of class itemize completed environment of class note element of class head loose nesting tight nesting sequencing

Context !head<list <list*<list <list*<itemize

Explanation List immediately follows a heading List nested within list An itemize nested within some list

list><itemize
<float*<caption>*<caption

An itemize starts immediately after a list has ended


Second caption environment within a float

Live demo

Nothing in this architecture really requires TeX as a formatting engine. But


With todays advances in the processing power of the underlying engine the ideas now appear to be feasible (in xTeX).

Big Bang (documentation and code cleanup)

much more consistent documentation clarifying which functions are expandable or not restructuring code into l3kernel, l3packages, l3experimental and l3trial
faster \prg_return_...: conditional code, faster seq and prop by a factor at least 3 on sample documents (e.g., siunitx) for those parts that have been moved to l3kernel

significant speed improvements in the kernel

expl3 now mostly stable


GitHub mirror

work on stand-alone kernel

modules l3str and l3regex currently written


possible extensions to code high-lighting

module l3fp being reimplemented


fast expandable IEEE-854 compliant decimal floating point arithmetic and expression parsing

module xcoffins / l3coffins module xgalley initial work on font support (xfss)
first task converting the highly optimized NFSS to less optimal but more readable code

reinitiate work on LDB

Properly integrate template and LDB


Define a mechanism to overwrite template instance values on document level Define standard environment management Finish galley mechanism

Rework output routine concepts

There is nothing more difficult to take in hand, more perilous to conduct or more uncertain in its success than to take the lead in the introduction of a new order of things.

Machiavelli

You might also like