summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/l3kernel/l3news04.tex
blob: a0fc82f3dedb6499c87e21803ba2840ed16582b5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
% Copyright 2009,2010 The LaTeX Project
\documentclass{ltnews}
\PassOptionsToPackage{colorlinks}{hyperref}

\usepackage{metalogo,ragged2e}

\AtBeginDocument{
  \renewcommand{\LaTeXNews}{\LaTeX3~News}
  \RaggedRight
}

\usepackage{url,hologo}

\publicationmonth{July}
\publicationyear{2010}
\publicationissue{4}

\begin{document}
\maketitle

\noindent
Now that we're back from the \TeX\ Users Group conference in San
Francisco, it's time to discuss what's been going on over the last six months.
Due to some extra travel plans after the conference, this issue is slightly
late in coming out.


\section{\textsf{expl3} in practice}

Joseph Wright and Will Robertson have both released significant new versions
of their packages, resp., \textsf{siunitx} and \textsf{fontspec}. These have
been re-written in the \LaTeX3 programming language \textsf{expl3}, which we
have discussed here previously. Using \textsf{expl3} for production code has
been very successful, both in demonstrating that the concepts are sound and
highlighting areas that still need some attention.
% The \textsf{expl3}
% code will continue to evolve as more people use it for their work.

In the case of \textsf{fontspec}, \textsf{expl3} programming is being used to
target \LaTeX\ running on either \XeTeX\ and \hologo{LuaTeX}. In the latter
case, the package is a mixture of Lua code and \pkg{expl3} code; Will
presented the \pkg{unicode-math} package at TUG~2010, which is developed in
the same style.


\section{New \textsf{xpackages}}

Frank Mittelbach has started to work on a new experimental \LaTeX3 package
\textsf{xhead} that provides templates for one of the most complex areas of
document design: section headings and document divisions. This
is the beginning of an ambitious idea to map out the requirements for
typesetting most documents currently processed with \LaTeX.

One of the challenges here is providing a ``natural'' design language for
describing the two-dimensional spatial relationships of objects participating
in the design, e.g., the placement of a heading number in relation to the
heading title, a possible sub-title, etc. In answer to this challenge Frank
developed the \textsf{xcoffin} package, which he presented at TUG~2010. It is
designed as a high-level interface for placing and aligning boxes on a page,
allowing a `designer's approach' for indicating the positional relationship
between boxes. (A `coffin' is a box with handles.) As an example, it is
possible to represent ideas such as `align the lower-left corner of box A with
the upper-right corner of box B after rotating it ninety degrees', without
having to calculate the intermediate positions.

We expect a future version of \textsf{xcoffin} (after some further work on its
interface layer and its internal implementation) to play a major role in all
packages providing layout templates for higher-level document objects, such as
table of contents designs, floats, etc.

Finally,
Joseph Wright has begun work with the current `galley' packages, producing the
new, minimal, \textsf{xgalley} based on \textsf{xfm-galley} as a testbed for
what we need and what will work.


\section{Developments with \textsf{expl3}}

Meanwhile, Joseph's \emph{also} been writing a new floating-point calculation
module, called \textsf{l3fp}, for \pkg{expl3}. This module allows manipulation
and calculation of numbers with a much larger range than \TeX\ allows
naturally. The \textsf{l3fp} module has already been utilised in the
\pkg{xcoffin} code for calculatations such as coordinate rotations and
intersection points of vectors.

The modules \pkg{l3io} and \pkg{l3file} have been revised, rethinking the way
that read and write streams are dealt with. \TeX\ has a hard limit of sixteen
input and output streams open at any one time, and the new implementation for
\pkg{expl3} provides more flexibility in how they are allocated; there's now
much less chance of running into a `\verb|No room for a new \read|' (or
\verb|\write|) error.

Sometimes we discuss ideas for \textsf{expl3} that \emph{don't} end up making
it into the final code. One example of this is the concept of having `local
registers' for integers, boxes, and so on, that do not survive outside of the
group they are defined in (in contrast to Plain \TeX\ and \LaTeX, where
allocators such as \verb|\newcount| and \verb|\newbox| are always global).
Despite the scope for some small benefit, we decided that the extra complexity
that the additional functions required, in both syntax and documentation, was
not justified.


\section{TUG 2010 reflections}

% added most of it back in: -fmi

%% Most of the active \LaTeX3 Project team were able to attend the TUG~2010
%% conference and (for Will) meet everyone in person for the first time.

Our interpretation of the broad themes discussed at the conference are that
\TeX-based systems are still thriving and there are some big problems to solve
with robust solutions to transform \LaTeX\ source, including mathematics, into
a form such as HTML. While there are big pushes for standardising various aspects
of the \LaTeX\ syntax, we also believe that it is \LaTeX's very
flexibility---its inherently non-standardised markup---that has allowed it to
survive for so many years. There is a delicate trade-off here between moving
forward into more standards-based territory while also retaining the
extensibility of the third-party package system.

\end{document}