Tag Info

Hot answers tagged

59

Will has written a couple of short answers, I'll add a bit of detail. There are several things that are wrong with LaTeX2e. Most obviously to end users, the kernel is rather inflexible. As a result, to get what you want you almost always need to load quite a number of packages, or do some low-level hacks of the kernel. That is not really ideal: I think ...


46

As I have tried to explain in answer to the question "LaTeX3 versus pure lua" my vision of LaTeX3 is really a system with multiple layers that provide interfaces for different kind of roles. These layers are the underlying engine (some TeX variant) the programming layer (the core language, i.e., expl3) the typesetting foundation layer (providing ...


45

(I guess I could be called a member of one of the teams ;-) this is my view) I thought of staying out of this debate, but perhaps some words of clarification or, let's say, some thoughts are in order after all. LaTeX3 versus pure Lua First of all this is the wrong question imho: LaTeX3 has different goals to LuaTeX and those goals may well be still a ...


38

I would recommend if you serious about learning about LaTeX and TeX to consider the learning stages of La(TeX), which I will describe in detail below, rather than just a selection of books. It is rather long and please excuse me if you find it boring, but by the end you will know why LaTeX3 will take a long time, before it becomes a standard! The rookie@ ...


31

If you want to publish in academic journals, you need to be sensitive to what new TeX related goodies their setup can handle. For instance, I've had to regress from BibLaTeX to BibTeX because a journal couldn't handle it. Likewise, I'd expect that LuaTeX or ConTeXt might not fit well into the workflow of a journal. I'm sure there are people here who know ...


30

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 ...


28

A full answer here has several parts. First, at the time of writing it's important to bear in mind that ConTeXt is not only available but works well, while LaTeX3 is a concept which is being developed. That means that it's not even 100% clear what shape LaTeX3 will take. It's also not clear that LaTeX3 will deliver, but for the purposes of answering the ...


28

I think the author having written a very nice book in LaTeX, is entitled to his views and has some valid points. I agree with some of them but disagree with most of them. He has valid points on ease of use and the lack of a GUI. However, he misses the point that to incorporate the 100s if not thousands of commands available to a user via the basic TeX ...


28

Both Patrick and Frank have provided good answers: I'd like to add a few complementary points which seem too long for comments. One aspect of expl3 that is important is that it can be used now to program LaTeX2e packages (the 'l3in2e' approach). That is seen for example in my own siunitx package, which I would not want to make LuaTeX-only. A particularly ...


28

Although these issues were discussed earlier here are some pointers, from someone that has been using TeX/LaTeX since the middle 80s. The knowledge you build with TeX/LaTeX and friends is additive. What you have used as plain TeX commands, your \defs and similar can be used today with all of the above variants. Similarly for all the LaTeX commands and yes ...


27

As a member of the LaTeX3 Project, my advice would be to totally ignore LaTeX3 when looking at books on LaTeX at the moment. There are two reasons. First, none of the books I know of cover anything about the new work of the LaTeX3 Project. Secondly, and really much more importantly, the 'user level' experience of LaTeX is not likely to change substantially ...


27

The LaTeX3 coding language, expl3, uses : and _ as 'letters' in function and variable names. This allows use of expl3 code-level material in a document \cs_new:Npn .... % fails: command \cs followed by characters '_', 'n', 'e', 'w', etc. \ExplSyntaxOn \cs_new:Npn .... % works here: command name \cs_new:Npn The \ExplSyntaxOn command activates this, and ...


26

For programming packages that implement new functionality for LaTeX2e what you mainly need is the programming layer of LaTeX3. xparse additionally offers you some help for defining user interfaces in 2e style with optional arguments or star forms etc, but you can think of this as the syntactic sugar on top of the functionality your package provides. And in ...


23

Developments in Lua and LaTeX3 are separate, but there is some convergence in the sense that both address issues for LaTeX programmers. It's also the case that the benefits you will see from these developments depend on the nature of your documents. LuaTeX adds to TeX functionality which is not available any other way, but also makes general programming a ...


22

(I am not a member of either team, this is my view.) LaTeX3 is not only about providing a better output routine, but also about providing programming tools such as the famous quicksort algorithm (see l3prg.sty). This is obviously nicer to write in Lua (for most of us). Or consider string manipulation / regular expressions. This could be handled in Lua as ...


21

LaTeX2e is the latest stable release of LaTeX. When people say LaTeX they usually mean LaTeX2e, not an earlier version. LaTeX3 is a massive refactoring of the LaTeX2e code base, which is currently in development. Some of the developers are frequent contributors here and will probably chime in. The difference to end users between LaTeX2e and LaTeX3 will ...


20

The two modules share a lot of features, and at there are many tasks which can in principal be tackled using either. To understand the reason for the existence of both, I'll first highlight what seq can do that clist cannot. A comma-separated list looks something like a,b,c,d,, which means that most obviously the items cannot contain a comma (without ...


20

In so far as the top level LaTeX3 code isn't written, I'm sure it will improve "freedom of package ordering", "freedom of speech" and generally move the world towards peace and harmony. To answer your implied comment about LaTeX2e (the main point of this answer:) Might it be possible, for example, to suppress option clash checks It is easy to suppress ...


19

When Don Knuth wrote TeX he wanted to create "just a typesetting language" but in response to use demand the macro language grew and grew. He also said that, if at the time he wrote TeX there was "a universal simple interpretive language that was common to other systems, naturally I would have latched onto that right away". The future in my view is to use ...


19

An expandable command is one which can be converted 'fully' into it's output inside a TeX \edef or \write (and a few other places). Thus for example \def\testa{\testb} \def\testb{\testc} \def\testc{d} \edef\teste{\testa} \show\teste will give > \teste=macro: ->d. i.e. all of the steps have been expanded, and we have just characters. For text, ...


16

At present, LaTeX3 is in development with some parts completed (a programming layer), other at least with some code written (for example the galley) and other more at the 'ideas' stage. This means that depending on what you are writing, you will need a varying amount of LaTeX2e code to write a 'LaTeX3 in LaTeX2e' package. For example, if most of what you ...


16

I believe that the killer features for LuaTeX will come. The first one (shared with XeTeX) is surely fontspec which lets you easily select any system font you have. There are a few rough edges (for example how to find the font name) though. More and more fonts will be OpenType fonts and the more OpenType fonts we have, the greater the need for XeTeX and ...


16

Currently, we don't have a Programming in LaTeX3 book, and even if we did there would be lots of gaps. So there is no 'complete' solution. However, there are some resources. First, I'd point to the introduction to LaTeX3 ideas which gives a broad-brush overview of the concepts. I have written a short series of blog posts on the topic. There is also the ...


15

In general I would claim that there is no good point in suppressing option clashes by default --- at least not if they indicate incompatible requests. If one load request says behave like "X" and the next one behave like "Y" and the two behaviors are incompatible then this needs to be resolved. And even if they are compatible (i.e., can be used together) it ...


15

Soln 1 This might be considered overkill, but I once wrote a function \group_after_set:NNn to provide an "abstraction" to handle this, used as in: \group_begin: \group_begin: \group_after_set:NNn \int_set:Nn \y {3} % \y == 3 \group_end: % \y == 3 \group_end: % \y == undefined I quite like it but I don't know if should be added to expl3 or ...


15

As I think the concept of "variant" in expl3 is one of the most fundamental concepts for LaTeX3 I like to expand a bit on the answer already given by Joseph. Naming convention The naming convention for commands in LaTeX3 (expl3) structures the command name into \module_description:arg-specifiers module identifies the (main) type of data the function ...


15

in \newcommand{\currentanswer}{} \newcommand{\setcurrentanswer}[1]{\renewcommand{\currentanswer}{#1}} your setting command is not expandable, it expands to \renewcommand which itself expands to some other things but ultimately it makes an assignment (with \def) it sets \currentanswer to the tokens passed in as #1. However the macro \currentanswer ise ...


14

What you probably have seen was a typeset version of all the l3kernel commands and their implementation (which actually is more than 500 pages) a document named source3.pdf. I would suggest to read through this only after being familiar with the programming language for LaTeX3 (if ever). Instead read the other documents in l3kernel, in particular ...


14

ConTeXt is a complete, self contained system which tries to have solutions for (almost) everything. LaTeX (all versions) on the other side is "only" a kernel. That you need to load packages to get some features is not a deficiency: LaTeX is meant to be extended by packages and classes. LaTeX3 will move some basic features which are currently in packages to ...


14

I think the only valid claim is the one about the lines not being in register. This is something you want to achieve if you print on both sides of a sheet of paper, e.g. books. The reason is that when you print on paper that has a low opacity you can see the shadow of the line printed on the other side through the paper. If the lines are in register this ...



Only top voted, non community-wiki answers of a minimum length are eligible