[latex3-commits] [l3svn] branch master updated: First draft for l3new10

noreply at latex-project.org noreply at latex-project.org
Fri Sep 16 08:10:58 CEST 2016

This is an automated email from the git hooks/post-receive script.

joseph pushed a commit to branch master
in repository l3svn.

The following commit(s) were added to refs/heads/master by this push:
       new  1003972   First draft for l3new10
1003972 is described below

commit 10039720bf6bc2bf5172e1237af05c509da9eb0d
Author: Joseph Wright <joseph.wright at morningstar2.co.uk>
Date:   Fri Sep 16 07:09:51 2016 +0100

    First draft for l3new10
    The part of l3keys hasn't quite been finished yet but I expect to do it
    by the end of the month (and send to CTAN).
    A looking forward section is needed: probably the trickiest to write so
    not done yet!
 news/l3news10.tex |  169 +++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 169 insertions(+)

diff --git a/news/l3news10.tex b/news/l3news10.tex
new file mode 100644
index 0000000..83e9bcf
--- /dev/null
+++ b/news/l3news10.tex
@@ -0,0 +1,169 @@
+% Copyright 2014 The LaTeX3 Project
+  \renewcommand*{\LaTeXNews}{\LaTeX3~News}%
+  \RaggedRight
+  \setlength\parindent{1em}%
+There has been something of a gap since the last \LaTeX3 News, but this does
+not mean that work has not been going on. The Team have been working on a
+number of areas, many which reflect wider take-up of \pkg{expl3}. There have
+also been a number of significant new developments in the \LaTeX3
+\enquote{sphere} in the last two years.
+\section{\pkg{l3build}: Testing \LaTeX{} packages}
+Testing has been an important part of the work of the team since maintenance of
+\LaTeX{} over twenty years ago. Various scripts have been used over that time
+by the team for testing, but these have until recently not be set up for wider
+With the general availability of \hologo{LuaTeX} it is now possible to be sure
+that every \TeX{} user has a powerful general scripting language available:
+Lua. The team have used this to create a new general testing system for \TeX{}
+code, \pkg{l3build}. This \emph{is} designed to be used beyond the team, so is
+now available in \TeX{} Live and \hologo{MiKTeX} and is fully documented.
+Testing using \pkg{l3build} makes use of a normalised version of the
+\texttt{.log} file, so can test any aspect of \TeX{} output (using
+Part of the remit for creating \pkg{l3build} was to enable the team to work
+truly cross-platform and to allow testing using multiple \TeX{} engines
+(earlier systems were limited to a single engine, normally \eTeX{}). The new
+testing system means we are in a much stronger position to support a variety of
+engines (see below). It has also enabled us to give useful feedback to the
+\hologo{LuaTeX} team as they develop it further.
+As well as the core capability in testing, \pkg{l3build} also provides a
+\enquote{one stop} script for creating release bundles. The script is
+sufficiently flexible that for many common \LaTeX{} package structures, setting
+up for creating releases will require only a few lines of configuration.
+\section{Automating \pkg{expl3} testing}
+As well developing \pkg{l3build} for local use, the team have also set up
+integration testing for \pkg{expl3} using the Travis-CI system. This means that
+\emph{every} commit to the \LaTeX3 code base now results in a full set of tests
+being run. This has allowed us to significantly reduce the number of occasions
+where \pkg{expl3} needs attention before being released to CTAN.
+Automated testing has also enabled us to check that \pkg{expl3} updates do not
+break a number of key third-party packages which use the programming
+\section{Refining \pkg{expl3}}
+Work continues to improve \pkg{expl3} both in scope and robustness. Increased
+use of the programming environment means that code which has to-date been
+under-explored is being used, and this sometimes requires changes to the code.
+The team have extended formal support in \pkg{expl3} to cover the engines
+p\TeX{} and up\TeX{}, principally used by Japanese \TeX{} users. This has been
+possible in part due to the \pkg{l3build} system discussed above.
+Engine-dependent variations between \hologo{pdfTeX}, \hologo{XeTeX},
+\hologo{LuaTeX} and (u)p\TeX{} are now well-understood and documented. As part
+of this process, the \enquote{low-level} part of \pkg{expl3}, which saves all
+primitives, now covers essentially all primitives found in all of these
+The code in \pkg{expl3} is now entirely self-contained, loading no other
+third-party packages, and can also be loaded as a generic package with plain
+\TeX{}, \emph{etc.} These changes make it much easier to diagnose problems and
+make \pkg{expl3} more useful.
+The team have made a range of small refinements to both internals and
+\pkg{expl3} interfaces. Internal self-consistency has also been improved, for
+example removing almost all use of \texttt{nopar} functions. Performance
+enhancements to the \pkg{l3keys} part of \pkg{expl3} are ongoing and should
+result in significantly faster key setting. As keyval methods are increasingly
+widely used in defining behaviours, this will have an impact on compile times
+for end users.
+\section{Replacing \cs{lowercase} and \cs{uppercase}}
+As discussed in the last \LaTeX3 News, the team have for some time been keen
+to provide new interfaces which do not directly expose (or in some cases
+even use) the \TeX{} primitives \cs{lowercase} and \cs{uppercase}. We have
+now created a series of different interfaces that provide support for the
+different conceptual uses which may flow from the primitives:
+  \item For case changing text, \cs{tl_upper_case:n}, \cs{tl_lower_case:n},
+    \cs{tl_mixed_case:n} and related language-aware functions. These are
+    Unicode-aware and designed for text. At present some of the interface
+    decisions are not finalised so they are marked as experimental, but the team
+    expect the core concept to be stable.
+  \item For case changing programming strings, \cs{str_upper_case:n},
+    \cs{str_lower_case:n} and \cs{str_fold_case:n}. Again these are
+    Unicode-aware, but in contrast to the functions for text are not
+    context-dependent. They are intended for caseless comparisons, constructing
+    command names on-the-fly and so forth.
+  \item For creating arbitrary character tokens, \cs{char_generate:nn}. This
+    is based on the \cs{Ucharcat} primitive introduced by \hologo{XeTeX}, but
+    with the ideas extended to other engines. This function can be used to
+    create almost any reasonable token.
+  \item For defining active characters, \cs{char_set_active_eq:NN} and
+    related functions. The concept here is that active characters should be
+    equivalent to some named function, so one does not directly define the
+    active character.
+\section{Extending \pkg{xparse}}
+After discussions at TUG2015, the team have added a new argument type,
+\texttt{k} (\enquote{key}) to \pkg{xparse}. This allows arguments similar
+to \TeX{} primitive sub- and superscripts to be accepted. Thus
+  {\showtokens{"#1":"#2"}}
+\foo^{Hello} world
+will show
+At present, this argument type is experimental: there are a number of models
+which may make sense for this interface.
+\section{A new \cs{parshape} model}
+As part of development of \pkg{l3galley}, Joseph Wright has proposed a new
+model for splitting up the functions of the \cs{parshape} primitive into three
+logical elements
+  \item Margins between the edges of the galley and the paragraph (for example
+    an indented block)
+  \item Cut-out sections running over a fixed number of lines, to support
+    \enquote{in place} figures and so forth
+  \item Running or single-paragraph shape
+There are additional elements to consider here, for example whether lines are
+the best way to model the length of shaping, how to handle headings, cut-outs
+at page breaks, \emph{etc.}
+\section{Looking forward}

To stop receiving notification emails like this one, please contact
the administrator of this repository.

More information about the latex3-commits mailing list