# What new bits have already been implemented in Latex3? Will my current documents (with many packages) still compile with Latex3?

I do know that LaTeX3 is a long term project, but I'm interested to find out what's new in LaTeX3 and have there already been any big advancements and backwards incompatible changes.

-

At present, the 'usable' bits of LaTeX3 are:

• The expl3 language. This provides a much more 'programming-like' language than using TeX primitives plus LaTeX internals. The language is still fluid (I have some changes I'm pushing, but the rest of the team are not so sure), but the general shape is there. The idea is to continue to extend expl3 to add more features. For example, I'm currently working out what type of real number arithmetic we need.
• xparse. This is a package to define document commands in a much more robust way than \newcommand does. I mention xparse a lot as I like it :-) For me, it works very well (Note: I wrote most of the current implementation, although the ideas are not really mine.) With xparse you can quickly define all sorts of input syntax that are a pain in LaTeX2e. It also generates robust commands (using e-TeX), and lets you automatically have access to the arguments to an environment at the end of the environment.
• xtemplate. This is intended to allow the separation of design and implementation by giving a proper structure to design decisions. The template concept is not easy to explain in a few lines: I can only recommend you read the documentation.

None of the above alter any existing parts of LaTeX: this is deliberate. What we are working on at the moment is things like the galley (where boxes are on the page) and the output routine. Those packages (which are not currently on CTAN, but are available from the public SVN) do alter the behaviour of LaTeX (particularly the output routine one).

The advantage of the current modules is that you can use them and know you have documented stuff. Unlike programming in LaTeX2e, we're aiming to explain all of the expl3 functions that are 'public' so that you don't need to use bits of TeX, bits of documented LaTeX and bits of undocumented LaTeX to get things to work. I've written siunitx in expl3, and it makes programming LaTeX a lot easier. (Compare the code for siunitx v2 with that for v1 to see this!)

What is not yet formalised is how LaTeX3 will look for the end user. I think, however, that we can be confident that the current basic model

\documentclass{<something>}
\begin{document}
Some text \emph{with italics}.
\end{document}


will survive (the project will fail if it does not).

I know that LaTeX3 is 'long term', but the aim with things like expl3 and xparse is to bring new ideas to users now. As I say, siunitx (a LaTeX2e package) is written almost entirely in expl3, and fontspec is moving that way too. This means that without needing to know about LaTeX3 users of these packages get the benefits that come from a clearer programming approach. I keep pushing xparse as it lets you easily do things that \newcommand does not

\NewDocumentCommand\foo{omom}{%
% Mandatory #2 and #4
% Optional #1 and #3
}

-
And how does LuaTeX fit in with LaTeX3 and expl3? – Roman Plášil Aug 8 '10 at 12:05
At present, the feeling is that requiring LuaTeX is not likely. The number of people who have a recent LuaTeX available is much smaller than the number who have pdfTeX available. Looking at the potential of going LuaTeX-only, it doesn't solve a lot of the issues that LaTeX3 is trying to address (simply using Lua doesn't make problems go away). – Joseph Wright Aug 10 '10 at 9:11