summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2015-06-19 22:34:54 +0000
committerKarl Berry <karl@freefriends.org>2015-06-19 22:34:54 +0000
commit8ec6f52457309f1e1152d881c29acc8f8c775442 (patch)
tree3b3247c79f170cc40a286743fb4e1265255cbb06
parent487de9cd41f430fd78e869079c420f36a8ff051a (diff)
l3 (19jun15)
git-svn-id: svn://tug.org/texlive/trunk@37621 c570f23f-e606-0410-a88d-b1316a301751
-rw-r--r--Master/texmf-dist/doc/latex/l3experimental/l3sort/l3sort.pdfbin377200 -> 377513 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3experimental/l3str/l3flag.pdfbin320106 -> 320425 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3experimental/l3str/l3regex.pdfbin457221 -> 457545 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3experimental/l3str/l3str-convert.pdfbin449630 -> 449639 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3experimental/l3str/l3str-expl.pdfbin416735 -> 417047 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3experimental/l3str/l3str-format.pdfbin380153 -> 380160 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3experimental/l3str/l3tl-analysis.pdfbin353293 -> 353300 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3experimental/l3str/l3tl-build.pdfbin386013 -> 385505 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3experimental/xcoffins/xcoffins.pdfbin397005 -> 397010 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3experimental/xgalley/l3galley.pdfbin398555 -> 398656 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3experimental/xgalley/xgalley.pdfbin291807 -> 291817 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/expl3.pdfbin584619 -> 584939 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/interface3.pdfbin1489631 -> 1491587 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/l3docstrip.pdfbin268222 -> 268241 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/l3styleguide.pdfbin273228 -> 273247 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.pdfbin220209 -> 220227 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/source3.pdfbin4693662 -> 4698194 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/source3body.tex458
-rw-r--r--Master/texmf-dist/doc/latex/l3packages/l3keys2e/l3keys2e.pdfbin333535 -> 333905 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3packages/xfrac/xfrac.pdfbin479119 -> 479136 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3packages/xparse/xparse.pdfbin461532 -> 461875 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3packages/xtemplate/xtemplate.pdfbin424230 -> 424572 bytes
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3sort/l3sort.dtx8
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3str/l3flag.dtx8
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3str/l3regex.dtx8
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3str/l3str-expl.dtx8
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3str/l3tl-build.dtx8
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/xgalley/l3galley.dtx7
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/expl3.dtx4
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx73
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx204
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3file.dtx44
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3keys.dtx8
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3prg.dtx12
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3skip.dtx27
-rw-r--r--Master/texmf-dist/source/latex/l3packages/l3keys2e/l3keys2e.dtx10
-rw-r--r--Master/texmf-dist/source/latex/l3packages/xparse/xparse.dtx8
-rw-r--r--Master/texmf-dist/source/latex/l3packages/xtemplate/xtemplate.dtx8
-rw-r--r--Master/texmf-dist/tex/latex/l3experimental/l3sort/l3sort.sty8
-rw-r--r--Master/texmf-dist/tex/latex/l3experimental/l3str/l3flag.sty8
-rw-r--r--Master/texmf-dist/tex/latex/l3experimental/l3str/l3regex-trace.sty8
-rw-r--r--Master/texmf-dist/tex/latex/l3experimental/l3str/l3regex.sty8
-rw-r--r--Master/texmf-dist/tex/latex/l3experimental/l3str/l3str.sty8
-rw-r--r--Master/texmf-dist/tex/latex/l3experimental/l3str/l3tl-build.sty8
-rw-r--r--Master/texmf-dist/tex/latex/l3experimental/xgalley/l3galley.sty7
-rw-r--r--Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex242
-rw-r--r--Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex4
-rw-r--r--Master/texmf-dist/tex/latex/l3kernel/expl3.sty4
-rw-r--r--Master/texmf-dist/tex/latex/l3packages/l3keys2e/l3keys2e.sty8
-rw-r--r--Master/texmf-dist/tex/latex/l3packages/xparse/xparse.sty8
-rw-r--r--Master/texmf-dist/tex/latex/l3packages/xtemplate/xtemplate.sty8
51 files changed, 897 insertions, 335 deletions
diff --git a/Master/texmf-dist/doc/latex/l3experimental/l3sort/l3sort.pdf b/Master/texmf-dist/doc/latex/l3experimental/l3sort/l3sort.pdf
index 790384bc87e..080927cef13 100644
--- a/Master/texmf-dist/doc/latex/l3experimental/l3sort/l3sort.pdf
+++ b/Master/texmf-dist/doc/latex/l3experimental/l3sort/l3sort.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3experimental/l3str/l3flag.pdf b/Master/texmf-dist/doc/latex/l3experimental/l3str/l3flag.pdf
index 2f75ee377d0..6cab8f84c5c 100644
--- a/Master/texmf-dist/doc/latex/l3experimental/l3str/l3flag.pdf
+++ b/Master/texmf-dist/doc/latex/l3experimental/l3str/l3flag.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3experimental/l3str/l3regex.pdf b/Master/texmf-dist/doc/latex/l3experimental/l3str/l3regex.pdf
index 2179655fa56..ad50345aa43 100644
--- a/Master/texmf-dist/doc/latex/l3experimental/l3str/l3regex.pdf
+++ b/Master/texmf-dist/doc/latex/l3experimental/l3str/l3regex.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3experimental/l3str/l3str-convert.pdf b/Master/texmf-dist/doc/latex/l3experimental/l3str/l3str-convert.pdf
index cc63c7784af..1da898cff3b 100644
--- a/Master/texmf-dist/doc/latex/l3experimental/l3str/l3str-convert.pdf
+++ b/Master/texmf-dist/doc/latex/l3experimental/l3str/l3str-convert.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3experimental/l3str/l3str-expl.pdf b/Master/texmf-dist/doc/latex/l3experimental/l3str/l3str-expl.pdf
index 31b3b6f08d3..4fe0bd13a09 100644
--- a/Master/texmf-dist/doc/latex/l3experimental/l3str/l3str-expl.pdf
+++ b/Master/texmf-dist/doc/latex/l3experimental/l3str/l3str-expl.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3experimental/l3str/l3str-format.pdf b/Master/texmf-dist/doc/latex/l3experimental/l3str/l3str-format.pdf
index 82107f38351..d8adcb78f03 100644
--- a/Master/texmf-dist/doc/latex/l3experimental/l3str/l3str-format.pdf
+++ b/Master/texmf-dist/doc/latex/l3experimental/l3str/l3str-format.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3experimental/l3str/l3tl-analysis.pdf b/Master/texmf-dist/doc/latex/l3experimental/l3str/l3tl-analysis.pdf
index 3ae0e965087..f41761fb567 100644
--- a/Master/texmf-dist/doc/latex/l3experimental/l3str/l3tl-analysis.pdf
+++ b/Master/texmf-dist/doc/latex/l3experimental/l3str/l3tl-analysis.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3experimental/l3str/l3tl-build.pdf b/Master/texmf-dist/doc/latex/l3experimental/l3str/l3tl-build.pdf
index 37e4947be1d..7ea4e2b9100 100644
--- a/Master/texmf-dist/doc/latex/l3experimental/l3str/l3tl-build.pdf
+++ b/Master/texmf-dist/doc/latex/l3experimental/l3str/l3tl-build.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3experimental/xcoffins/xcoffins.pdf b/Master/texmf-dist/doc/latex/l3experimental/xcoffins/xcoffins.pdf
index 1e129931009..95e6bf66805 100644
--- a/Master/texmf-dist/doc/latex/l3experimental/xcoffins/xcoffins.pdf
+++ b/Master/texmf-dist/doc/latex/l3experimental/xcoffins/xcoffins.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3experimental/xgalley/l3galley.pdf b/Master/texmf-dist/doc/latex/l3experimental/xgalley/l3galley.pdf
index 8220544f705..c8cfb4556d2 100644
--- a/Master/texmf-dist/doc/latex/l3experimental/xgalley/l3galley.pdf
+++ b/Master/texmf-dist/doc/latex/l3experimental/xgalley/l3galley.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3experimental/xgalley/xgalley.pdf b/Master/texmf-dist/doc/latex/l3experimental/xgalley/xgalley.pdf
index e2b6944734f..d11151b5027 100644
--- a/Master/texmf-dist/doc/latex/l3experimental/xgalley/xgalley.pdf
+++ b/Master/texmf-dist/doc/latex/l3experimental/xgalley/xgalley.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3kernel/expl3.pdf b/Master/texmf-dist/doc/latex/l3kernel/expl3.pdf
index d30a7c36dd6..1ca6c16c1f7 100644
--- a/Master/texmf-dist/doc/latex/l3kernel/expl3.pdf
+++ b/Master/texmf-dist/doc/latex/l3kernel/expl3.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3kernel/interface3.pdf b/Master/texmf-dist/doc/latex/l3kernel/interface3.pdf
index 807cce8a3ac..24c9feb428b 100644
--- a/Master/texmf-dist/doc/latex/l3kernel/interface3.pdf
+++ b/Master/texmf-dist/doc/latex/l3kernel/interface3.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3docstrip.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3docstrip.pdf
index a463c33dbd2..928d82e8b01 100644
--- a/Master/texmf-dist/doc/latex/l3kernel/l3docstrip.pdf
+++ b/Master/texmf-dist/doc/latex/l3kernel/l3docstrip.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.pdf
index b2d4e58ded8..69fd42d7b68 100644
--- a/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.pdf
+++ b/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.pdf
index 4b02ec0e6c8..1017f718c78 100644
--- a/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.pdf
+++ b/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3kernel/source3.pdf b/Master/texmf-dist/doc/latex/l3kernel/source3.pdf
index f4d15ad01ad..33dc2873c2f 100644
--- a/Master/texmf-dist/doc/latex/l3kernel/source3.pdf
+++ b/Master/texmf-dist/doc/latex/l3kernel/source3.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3kernel/source3body.tex b/Master/texmf-dist/doc/latex/l3kernel/source3body.tex
new file mode 100644
index 00000000000..70b0776a439
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/l3kernel/source3body.tex
@@ -0,0 +1,458 @@
+% \iffalse meta-comment
+%
+%% File: source3body.tex Copyright (C) 1990-2012,2014,2015 The LaTeX3 Project
+%%
+%% It may be distributed and/or modified under the conditions of the
+%% LaTeX Project Public License (LPPL), either version 1.3c of this
+%% license or (at your option) any later version. The latest version
+%% of this license is in the file
+%%
+%% http://www.latex-project.org/lppl.txt
+%%
+%% This file is part of the "l3kernel bundle" (The Work in LPPL)
+%% and all files in that bundle must be distributed together.
+%%
+%% The released version of this bundle is available from CTAN.
+%%
+%% -----------------------------------------------------------------------
+%%
+%% The development version of the bundle can be found at
+%%
+%% http://www.latex-project.org/svnroot/experimental/trunk/
+%%
+%% for those people who are interested.
+%%
+%%%%%%%%%%%
+%% NOTE: %%
+%%%%%%%%%%%
+%%
+%% Snapshots taken from the repository represent work in progress and may
+%% not work or may contain conflicting material! We therefore ask
+%% people _not_ to put them into distributions, archives, etc. without
+%% prior consultation with the LaTeX3 Project.
+%%
+%% -----------------------------------------------------------------------
+%
+% \fi
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% This file is used by
+%
+% source3.tex % documentation including implementation
+%
+% interface3.tex % only interface documentation
+%
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+\begin{abstract}
+
+\setlength\parindent{0pt}
+\setlength\parskip{\baselineskip}
+
+\noindent
+This is the reference documentation for the \pkg{expl3}
+programming environment. The \pkg{expl3} modules set up an experimental
+naming scheme for \LaTeX{} commands, which allow the \LaTeX{} programmer
+to systematically name functions and variables, and specify the argument
+types of functions.
+
+The \TeX{} and \eTeX{} primitives are all given a new name according to
+these conventions. However, in the main direct use of the primitives is
+not required or encouraged: the \pkg{expl3} modules define an
+independent low-level \LaTeX3 programming language.
+
+At present, the \pkg{expl3} modules are designed to be loaded on top of
+\LaTeXe{}. In time, a \LaTeX3 format will be produced based on this code.
+This allows the code to be used in \LaTeXe{} packages \emph{now} while a
+stand-alone \LaTeX3 is developed.
+
+\begin{bfseries}
+ While \pkg{expl3} is still experimental, the bundle is now regarded as
+ broadly stable. The syntax conventions and functions provided are now
+ ready for wider use. There may still be changes to some functions, but
+ these will be minor when compared to the scope of \pkg{expl3}.
+
+ New modules will be added to the distributed version of \pkg{expl3} as
+ they reach maturity.
+\end{bfseries}
+
+\end{abstract}
+
+\clearpage
+
+{%
+ \def\\{:}% fix "newlines" in the ToC
+ \tableofcontents
+}
+
+\clearpage
+\pagenumbering{arabic}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% Each of the following \DocInput lines includes a file with extension
+% .dtx. Each of these files may be typeset separately. For instance
+% pdflatex l3box.dtx
+% will typeset the source of the LaTeX3 box commands. If you use the
+% Makefile, the index will be generated automatically; e.g.,
+% make doc F=l3box
+%
+% If this file is processed, each of these separate dtx files will be
+% contained as a part of a single document.
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\makeatletter
+\def\partname{Part}
+\def\maketitle{\clearpage\part{\@title}}
+\let\thanks\@gobble
+\let\DelayPrintIndex\PrintIndex
+\let\PrintIndex\@empty
+\makeatother
+
+\part{Introduction to \pkg{expl3} and this document}
+
+This document is intended to act as a comprehensive reference manual
+for the \pkg{expl3} language. A general guide to the \LaTeX3
+programming language is found in \href{expl3.pdf}{expl3.pdf}.
+
+\section{Naming functions and variables}
+
+\LaTeX3 does not use \texttt{@} as a \enquote{letter} for defining
+internal macros. Instead, the symbols |_| and \texttt{:}
+are used in internal macro names to provide structure. The name of
+each \emph{function} is divided into logical units using \texttt{_},
+while \texttt{:} separates the \emph{name} of the function from the
+\emph{argument specifier} (\enquote{arg-spec}). This describes the arguments
+expected by the function. In most cases, each argument is represented
+by a single letter. The complete list of arg-spec letters for a function
+is referred to as the \emph{signature} of the function.
+
+Each function name starts with the \emph{module} to which it belongs.
+Thus apart from a small number of very basic functions, all \pkg{expl3}
+function names contain at least one underscore to divide the module
+name from the descriptive name of the function. For example, all
+functions concerned with comma lists are in module \texttt{clist} and
+begin \cs{clist_}.
+
+Every function must include an argument specifier. For functions which
+take no arguments, this will be blank and the function name will end
+\texttt{:}. Most functions take one or more arguments, and use the
+following argument specifiers:
+\begin{description}
+ \item[\texttt{D}] The \texttt{D} specifier means \emph{do not use}.
+ All of the \TeX{} primitives are initially \cs{let} to a \texttt{D}
+ name, and some are then given a second name. Only the kernel
+ team should use anything with a \texttt{D} specifier!
+ \item[\texttt{N} and \texttt{n}] These mean \emph{no manipulation},
+ of a single token for \texttt{N} and of a set of tokens given in
+ braces for \texttt{n}. Both pass the argument through exactly as
+ given. Usually, if you use a single token for an \texttt{n} argument,
+ all will be well.
+ \item[\texttt{c}] This means \emph{csname}, and indicates that the
+ argument will be turned into a csname before being used. So
+ \cs{foo:c} |{ArgumentOne}| will act in the same way as \cs{foo:N}
+ \cs{ArgumentOne}.
+ \item[\texttt{V} and \texttt{v}] These mean \emph{value
+ of variable}. The \texttt{V} and \texttt{v} specifiers are used to
+ get the content of a variable without needing to worry about the
+ underlying \TeX{} structure containing the data. A \texttt{V}
+ argument will be a single token (similar to \texttt{N}), for example
+ \cs{foo:V} \cs{MyVariable}; on the other hand, using \texttt{v} a
+ csname is constructed first, and then the value is recovered, for
+ example \cs{foo:v} |{MyVariable}|.
+ \item[\texttt{o}] This means \emph{expansion once}. In general, the
+ \texttt{V} and \texttt{v} specifiers are favoured over \texttt{o}
+ for recovering stored information. However, \texttt{o} is useful
+ for correctly processing information with delimited arguments.
+ \item[\texttt{x}] The \texttt{x} specifier stands for \emph{exhaustive
+ expansion}: every token in the argument is fully expanded until only
+ unexpandable ones remain. The \TeX{} \tn{edef} primitive carries out
+ this type of expansion. Functions which feature an \texttt{x}-type
+ argument are in general \emph{not} expandable, unless specifically
+ noted.
+ \item[\texttt{f}] The \texttt{f} specifier stands for \emph{full
+ expansion}, and in contrast to \texttt{x} stops at the first
+ non-expandable item (reading the argument from left to right) without
+ trying to expand it. For example, when setting a token list
+ variable (a macro used for storage), the sequence
+ \begin{verbatim}
+ \tl_set:Nn \l_mya_tl { A }
+ \tl_set:Nn \l_myb_tl { B }
+ \tl_set:Nf \l_mya_tl { \l_mya_tl \l_myb_tl }
+ \end{verbatim}
+ will leave |\l_mya_tl| with the content |A\l_myb_tl|, as |A| cannot
+ be expanded and so terminates expansion before |\l_myb_tl| is considered.
+ \item[\texttt{T} and \texttt{F}] For logic tests, there are the branch
+ specifiers \texttt{T} (\emph{true}) and \texttt{F} (\emph{false}).
+ Both specifiers treat the input in the same way as \texttt{n} (no
+ change), but make the logic much easier to see.
+ \item[\texttt{p}] The letter \texttt{p} indicates \TeX{}
+ \emph{parameters}. Normally this will be used for delimited
+ functions as \pkg{expl3} provides better methods for creating simple
+ sequential arguments.
+ \item[\texttt{w}] Finally, there is the \texttt{w} specifier for
+ \emph{weird} arguments. This covers everything else, but mainly
+ applies to delimited values (where the argument must be terminated
+ by some arbitrary string).
+\end{description}
+Notice that the argument specifier describes how the argument is
+processed prior to being passed to the underlying function. For example,
+\cs{foo:c} will take its argument, convert it to a control sequence and
+pass it to \cs{foo:N}.
+
+Variables are named in a similar manner to functions, but begin with
+a single letter to define the type of variable:
+\begin{description}
+ \item[\texttt{c}] Constant: global parameters whose value should not
+ be changed.
+ \item[\texttt{g}] Parameters whose value should only be set globally.
+ \item[\texttt{l}] Parameters whose value should only be set locally.
+\end{description}
+Each variable name is then build up in a similar way to that of a
+function, typically starting with the module\footnote{The module names are
+ not used in case of generic scratch registers defined in the data
+ type modules, e.g., the
+ \texttt{int} module contains some scratch variables called \cs{l_tmpa_int},
+ \cs{l_tmpb_int}, and so on. In such a case adding the module name up front
+ to denote the module
+ and in the back to indicate the type, as in
+ \cs{l_int_tmpa_int} would be very unreadable.} name
+and then a descriptive part.
+Variables end with a short identifier to show the variable type:
+\begin{description}
+ \item[\texttt{bool}] Either true or false.
+ \item[\texttt{box}] Box register.
+ \item[\texttt{clist}] Comma separated list.
+ \item[\texttt{coffin}] a \enquote{box with handles} --- a higher-level data
+ type for carrying out |box| alignment operations.
+ \item[\texttt{dim}] \enquote{Rigid} lengths.
+ \item[\texttt{fp}] floating-point values;
+ \item[\texttt{int}] Integer-valued count register.
+ \item[\texttt{prop}] Property list.
+ \item[\texttt{seq}] \enquote{Sequence}: a data-type used to implement lists
+ (with access at both ends) and stacks.
+ \item[\texttt{skip}] \enquote{Rubber} lengths.
+ \item[\texttt{stream}] An input or output stream (for reading from or
+ writing to, respectively).
+ \item[\texttt{tl}] Token list variables: placeholder for a token list.
+\end{description}
+
+\subsection{Terminological inexactitude}
+
+A word of warning. In this document, and others referring to the \pkg{expl3}
+programming modules, we often refer to \enquote{variables} and
+\enquote{functions} as if they
+were actual constructs from a real programming language. In truth, \TeX{}
+is a macro processor, and functions are simply macros that may or may not take
+arguments and expand to their replacement text. Many of the common variables
+are \emph{also} macros, and if placed into the input stream will simply expand
+to their definition as well~--- a \enquote{function} with no arguments and a
+\enquote{token list variable} are in truth one and the same. On the other
+hand, some \enquote{variables} are actually registers that must be
+initialised and their values set and retrieved with specific functions.
+
+The conventions of the \pkg{expl3} code are designed to clearly separate the
+ideas of \enquote{macros that contain data} and
+\enquote{macros that contain code}, and a
+consistent wrapper is applied to all forms of \enquote{data} whether they be
+macros or
+actually registers. This means that sometimes we will use phrases like
+\enquote{the function returns a value}, when actually we just mean
+\enquote{the macro expands to something}. Similarly, the term
+\enquote{execute} might be used in place of \enquote{expand}
+or it might refer to the more specific case of
+\enquote{processing in \TeX's stomach}
+(if you are familiar with the \TeX{}book parlance).
+
+If in doubt, please ask; chances are we've been hasty in writing certain
+definitions and need to be told to tighten up our terminology.
+
+\section{Documentation conventions}
+
+This document is typeset with the experimental \pkg{l3doc} class;
+several conventions are used to help describe the features of the code.
+A number of conventions are used here to make the documentation clearer.
+
+Each group of related functions is given in a box. For a function with
+a \enquote{user} name, this might read:
+\begin{function}[no-label]{\ExplSyntaxOn, \ExplSyntaxOff}
+ \begin{syntax}
+ \cs{ExplSyntaxOn} \dots{} \cs{ExplSyntaxOff}
+ \end{syntax}
+ The textual description of how the function works would appear here. The
+ syntax of the function is shown in mono-spaced text to the right of
+ the box. In this example, the function takes no arguments and so the
+ name of the function is simply reprinted.
+\end{function}
+
+For programming functions, which use \texttt{_} and \texttt{:} in their name
+there are a few additional conventions: If two related functions are given
+with identical names but different argument specifiers, these are termed
+\emph{variants} of each other, and the latter functions are printed in grey to
+show this more clearly. They will carry out the same function but will take
+different types of argument:
+\begin{function}[no-label]{\seq_new:N, \seq_new:c}
+ \begin{syntax}
+ \cs{seq_new:N} \meta{sequence}
+ \end{syntax}
+ When a number of variants are described, the arguments are usually
+ illustrated only for the base function. Here, \meta{sequence} indicates
+ that \cs{seq_new:N} expects the name of a sequence. From the argument
+ specifier, \cs{seq_new:c} also expects a sequence name, but as a
+ name rather than as a control sequence. Each argument given in the
+ illustration should be described in the following text.
+\end{function}
+
+\paragraph{Fully expandable functions}
+\hypertarget{expstar}{Some functions are fully expandable},
+which allows it to be used within
+an \texttt{x}-type argument (in plain \TeX{} terms, inside an \cs{edef}),
+as well as within an \texttt{f}-type argument.
+These fully expandable functions are indicated in the documentation by
+a star:
+\begin{function}[EXP,no-label]{\cs_to_str:N}
+ \begin{syntax}
+ \cs{cs_to_str:N} \meta{cs}
+ \end{syntax}
+ As with other functions, some text should follow which explains how
+ the function works. Usually, only the star will indicate that the
+ function is expandable. In this case, the function expects a \meta{cs},
+ shorthand for a \meta{control sequence}.
+\end{function}
+
+\paragraph{Restricted expandable functions}
+\hypertarget{rexpstar}{A few functions are fully expandable} but cannot be fully expanded within
+an \texttt{f}-type argument. In this case a hollow star is used to indicate
+this:
+\begin{function}[rEXP,no-label]{\seq_map_function:NN}
+ \begin{syntax}
+ \cs{seq_map_function:NN} \meta{seq} \meta{function}
+ \end{syntax}
+\end{function}
+
+\paragraph{Conditional functions}
+\hypertarget{explTF}{Conditional (\texttt{if}) functions}
+are normally defined in three variants, with
+\texttt{T}, \texttt{F} and \texttt{TF} argument specifiers. This allows
+them to be used for different \enquote{true}/\enquote{false} branches,
+depending on
+which outcome the conditional is being used to test. To indicate this
+without repetition, this information is given in a shortened form:
+\begin{function}[EXP,TF,no-label]{\xetex_if_engine:}
+ \begin{syntax}
+ \cs{xetex_if_engine:TF} \Arg{true code} \Arg{false code}
+ \end{syntax}
+ The underlining and italic of \texttt{TF} indicates that
+ \cs{xetex_if_engine:T}, \cs{xetex_if_engine:F} and
+ \cs{xetex_if_engine:TF} are all available. Usually, the illustration
+ will use the \texttt{TF} variant, and so both \meta{true code}
+ and \meta{false code} will be shown. The two variant forms \texttt{T} and
+ \texttt{F} take only \meta{true code} and \meta{false code}, respectively.
+ Here, the star also shows that this function is expandable.
+ With some minor exceptions, \emph{all} conditional functions in the
+ \pkg{expl3} modules should be defined in this way.
+\end{function}
+
+Variables, constants and so on are described in a similar manner:
+\begin{variable}[no-label]{\l_tmpa_tl}
+ A short piece of text will describe the variable: there is no
+ syntax illustration in this case.
+\end{variable}
+
+In some cases, the function is similar to one in \LaTeXe{} or plain \TeX{}.
+In these cases, the text will include an extra \enquote{\textbf{\TeX{}hackers
+note}} section:
+\begin{function}[EXP,no-label]{\token_to_str:N}
+ \begin{syntax}
+ \cs{token_to_str:N} \meta{token}
+ \end{syntax}
+ The normal description text.
+ \begin{texnote}
+ Detail for the experienced \TeX{} or \LaTeXe\ programmer. In this
+ case, it would point out that this function is the \TeX{} primitive
+ \cs{string}.
+ \end{texnote}
+\end{function}
+
+\paragraph{Changes to behaviour}
+When new functions are added to \pkg{expl3}, the date of first inclusion is
+given in the documentation. Where the documented behaviour of a function
+changes after it is first introduced, the date of the update will also be
+given. This means that the programmer can be sure that any release of
+\pkg{expl3} after the date given will contain the function of interest with
+expected behaviour as described. Note that changes to code internals, including
+bug fixes, are not recorded in this way \emph{unless} they impact on the
+expected behaviour.
+
+\section{Formal language conventions which apply generally}
+
+As this is a formal reference guide for \LaTeX3 programming, the descriptions
+of functions are intended to be reasonably \enquote{complete}. However, there
+is also a need to avoid repetition. Formal ideas which apply to general
+classes of function are therefore summarised here.
+
+For tests which have a \texttt{TF} argument specification, the test if
+evaluated to give a logically \texttt{TRUE} or \texttt{FALSE} result.
+Depending on this result, either the \meta{true code} or the \meta{false code}
+will be left in the input stream. In the case where the test is expandable,
+and a predicate (|_p|) variant is available, the logical value determined by
+the test is left in the input stream: this will typically be part of a larger
+logical construct.
+
+\section{\TeX{} concepts not supported by \LaTeX3{}}
+
+The \TeX{} concept of an \enquote{\cs{outer}} macro is \emph{not supported}
+at all by \LaTeX3{}. As such, the functions provided here may break when
+used on top of \LaTeXe{} if \cs{outer} tokens are used in the arguments.
+
+\DisableImplementation
+
+\DocInput{l3bootstrap.dtx}
+\DocInput{l3names.dtx}
+\DocInput{l3basics.dtx}
+\DocInput{l3expan.dtx}
+\DocInput{l3prg.dtx}
+\DocInput{l3quark.dtx}
+\DocInput{l3token.dtx}
+\DocInput{l3int.dtx}
+\DocInput{l3skip.dtx}
+\DocInput{l3tl.dtx}
+\DocInput{l3str.dtx}
+\DocInput{l3seq.dtx}
+\DocInput{l3clist.dtx}
+\DocInput{l3prop.dtx}
+\DocInput{l3box.dtx}
+\DocInput{l3coffins.dtx}
+\DocInput{l3color.dtx}
+\DocInput{l3msg.dtx}
+\DocInput{l3keys.dtx}
+\DocInput{l3file.dtx}
+\DocInput{l3fp.dtx}
+% To get the various submodules of l3fp to appear in the implementation
+% part only, they have to be added to the documentation list after typesetting
+% the 'user' part just for the main module.
+\ExplSyntaxOn
+\clist_gput_right:Nn \g_docinput_clist
+ {
+ l3fp-aux.dtx ,
+ l3fp-traps.dtx ,
+ l3fp-round.dtx ,
+ l3fp-parse.dtx ,
+ l3fp-logic.dtx ,
+ l3fp-basics.dtx ,
+ l3fp-extended.dtx ,
+ l3fp-expo.dtx ,
+ l3fp-trig.dtx ,
+ l3fp-convert.dtx ,
+ l3fp-assign.dtx ,
+ }
+\ExplSyntaxOff
+
+\DocInput{l3candidates.dtx}
+\DocInput{l3drivers.dtx}
+
+\endinput
diff --git a/Master/texmf-dist/doc/latex/l3packages/l3keys2e/l3keys2e.pdf b/Master/texmf-dist/doc/latex/l3packages/l3keys2e/l3keys2e.pdf
index e963057d836..630a6b30367 100644
--- a/Master/texmf-dist/doc/latex/l3packages/l3keys2e/l3keys2e.pdf
+++ b/Master/texmf-dist/doc/latex/l3packages/l3keys2e/l3keys2e.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3packages/xfrac/xfrac.pdf b/Master/texmf-dist/doc/latex/l3packages/xfrac/xfrac.pdf
index 38ccd7401d6..e76ec8ded22 100644
--- a/Master/texmf-dist/doc/latex/l3packages/xfrac/xfrac.pdf
+++ b/Master/texmf-dist/doc/latex/l3packages/xfrac/xfrac.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3packages/xparse/xparse.pdf b/Master/texmf-dist/doc/latex/l3packages/xparse/xparse.pdf
index 0898a1165bd..ebf9ca5f740 100644
--- a/Master/texmf-dist/doc/latex/l3packages/xparse/xparse.pdf
+++ b/Master/texmf-dist/doc/latex/l3packages/xparse/xparse.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3packages/xtemplate/xtemplate.pdf b/Master/texmf-dist/doc/latex/l3packages/xtemplate/xtemplate.pdf
index 3fbd3936077..be97392df9f 100644
--- a/Master/texmf-dist/doc/latex/l3packages/xtemplate/xtemplate.pdf
+++ b/Master/texmf-dist/doc/latex/l3packages/xtemplate/xtemplate.pdf
Binary files differ
diff --git a/Master/texmf-dist/source/latex/l3experimental/l3sort/l3sort.dtx b/Master/texmf-dist/source/latex/l3experimental/l3sort/l3sort.dtx
index 142fd3b5502..ce29740e490 100644
--- a/Master/texmf-dist/source/latex/l3experimental/l3sort/l3sort.dtx
+++ b/Master/texmf-dist/source/latex/l3experimental/l3sort/l3sort.dtx
@@ -1,6 +1,6 @@
% \iffalse
%
-%% File l3sort.dtx (C) Copyright 2012,2014 The LaTeX3 Project
+%% File l3sort.dtx (C) Copyright 2012,2014,2015 The LaTeX3 Project
%%
%% It may be distributed and/or modified under the conditions of the
%% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -37,8 +37,8 @@
%<*driver|package>
% The version of expl3 required is tested as early as possible, as
% some really old versions do not define \ProvidesExplPackage.
-\RequirePackage{expl3}[2014/11/25]
-%<package>\@ifpackagelater{expl3}{2014/11/25}
+\RequirePackage{expl3}[2015/06/15]
+%<package>\@ifpackagelater{expl3}{2015/06/15}
%<package> {}
%<package> {%
%<package> \PackageError{l3sort}{Support package l3kernel too old}
@@ -50,7 +50,7 @@
%<package> }%
%<package> \endinput
%<package> }
-\GetIdInfo$Id: l3sort.dtx 5471 2014-11-25 20:11:29Z joseph $
+\GetIdInfo$Id: l3sort.dtx 5630 2015-06-15 08:49:02Z joseph $
{L3 Experimental sorting functions}
%</driver|package>
%<*driver>
diff --git a/Master/texmf-dist/source/latex/l3experimental/l3str/l3flag.dtx b/Master/texmf-dist/source/latex/l3experimental/l3str/l3flag.dtx
index 6c2ee148cd4..c9b9144ab3e 100644
--- a/Master/texmf-dist/source/latex/l3experimental/l3str/l3flag.dtx
+++ b/Master/texmf-dist/source/latex/l3experimental/l3str/l3flag.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-%% File: l3flag.dtx Copyright (C) 2011-2012,2104 The LaTeX3 Project
+%% File: l3flag.dtx Copyright (C) 2011-2012,2014,2015 The LaTeX3 Project
%%
%% It may be distributed and/or modified under the conditions of the
%% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -36,8 +36,8 @@
%<*driver|package>
% The version of expl3 required is tested as early as possible, as
% some really old versions do not define \ProvidesExplPackage.
-\RequirePackage{expl3}[2014/11/25]
-%<package>\@ifpackagelater{expl3}{2014/11/25}
+\RequirePackage{expl3}[2015/06/15]
+%<package>\@ifpackagelater{expl3}{2015/06/15}
%<package> {}
%<package> {%
%<package> \PackageError{l3flag}{Support package l3kernel too old}
@@ -49,7 +49,7 @@
%<package> }%
%<package> \endinput
%<package> }
-\GetIdInfo$Id: l3flag.dtx 5471 2014-11-25 20:11:29Z joseph $
+\GetIdInfo$Id: l3flag.dtx 5630 2015-06-15 08:49:02Z joseph $
{L3 Experimental flags}
%</driver|package>
%<*driver>
diff --git a/Master/texmf-dist/source/latex/l3experimental/l3str/l3regex.dtx b/Master/texmf-dist/source/latex/l3experimental/l3str/l3regex.dtx
index 37225d80243..5224683cfa2 100644
--- a/Master/texmf-dist/source/latex/l3experimental/l3str/l3regex.dtx
+++ b/Master/texmf-dist/source/latex/l3experimental/l3str/l3regex.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-%% File: l3regex.dtx Copyright (C) 2011-2014 The LaTeX3 Project
+%% File: l3regex.dtx Copyright (C) 2011-2015 The LaTeX3 Project
%%
%% It may be distributed and/or modified under the conditions of the
%% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -36,8 +36,8 @@
%<*driver|package>
% The version of expl3 required is tested as early as possible, as
% some really old versions do not define \ProvidesExplPackage.
-\RequirePackage{expl3}[2014/11/25]
-%<package>\@ifpackagelater{expl3}{2014/11/25}
+\RequirePackage{expl3}[2015/06/15]
+%<package>\@ifpackagelater{expl3}{2015/06/15}
%<package> {}
%<package> {%
%<package> \PackageError{l3regex}{Support package l3kernel too old}
@@ -49,7 +49,7 @@
%<package> }%
%<package> \endinput
%<package> }
-\GetIdInfo$Id: l3regex.dtx 5471 2014-11-25 20:11:29Z joseph $
+\GetIdInfo$Id: l3regex.dtx 5630 2015-06-15 08:49:02Z joseph $
{L3 Experimental regular expressions}
%</driver|package>
%<*driver>
diff --git a/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-expl.dtx b/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-expl.dtx
index cb8060eb0ea..5b7cd44bb6b 100644
--- a/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-expl.dtx
+++ b/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-expl.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-%% File: l3str.dtx Copyright (C) 2011-2014 The LaTeX3 Project
+%% File: l3str.dtx Copyright (C) 2011-2015 The LaTeX3 Project
%%
%% It may be distributed and/or modified under the conditions of the
%% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -36,8 +36,8 @@
%<*driver|package>
% The version of expl3 required is tested as early as possible, as
% some really old versions do not define \ProvidesExplPackage.
-\RequirePackage{expl3}[2014/11/25]
-%<package>\@ifpackagelater{expl3}{2014/11/25}
+\RequirePackage{expl3}[2015/06/15]
+%<package>\@ifpackagelater{expl3}{2015/06/15}
%<package> {}
%<package> {%
%<package> \PackageError{l3str}{Support package l3kernel too old}
@@ -49,7 +49,7 @@
%<package> }%
%<package> \endinput
%<package> }
-\GetIdInfo$Id: l3str-expl.dtx 5471 2014-11-25 20:11:29Z joseph $
+\GetIdInfo$Id: l3str-expl.dtx 5630 2015-06-15 08:49:02Z joseph $
{L3 Experimental strings}
\def\ExplFileName{l3str}
%</driver|package>
diff --git a/Master/texmf-dist/source/latex/l3experimental/l3str/l3tl-build.dtx b/Master/texmf-dist/source/latex/l3experimental/l3str/l3tl-build.dtx
index 7f4504cb2de..e0607072810 100644
--- a/Master/texmf-dist/source/latex/l3experimental/l3str/l3tl-build.dtx
+++ b/Master/texmf-dist/source/latex/l3experimental/l3str/l3tl-build.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-%% File: l3tl-build.dtx Copyright (C) 2011-2012 The LaTeX3 Project
+%% File: l3tl-build.dtx Copyright (C) 2011-2015 The LaTeX3 Project
%%
%% It may be distributed and/or modified under the conditions of the
%% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -36,8 +36,8 @@
%<*driver|package>
% The version of expl3 required is tested as early as possible, as
% some really old versions do not define \ProvidesExplPackage.
-\RequirePackage{expl3}[2014/08/25]
-%<package>\@ifpackagelater{expl3}{2014/08/25}
+\RequirePackage{expl3}[2015/06/15]
+%<package>\@ifpackagelater{expl3}{2015/06/15}
%<package> {}
%<package> {%
%<package> \PackageError{l3tl-build}{Support package l3kernel too old}
@@ -49,7 +49,7 @@
%<package> }%
%<package> \endinput
%<package> }
-\GetIdInfo$Id: l3tl-build.dtx 5378 2014-08-25 10:59:48Z joseph $
+\GetIdInfo$Id: l3tl-build.dtx 5630 2015-06-15 08:49:02Z joseph $
{L3 Experimental token list construction}
%</driver|package>
%<*driver>
diff --git a/Master/texmf-dist/source/latex/l3experimental/xgalley/l3galley.dtx b/Master/texmf-dist/source/latex/l3experimental/xgalley/l3galley.dtx
index 4d011689ef6..cb254691135 100644
--- a/Master/texmf-dist/source/latex/l3experimental/xgalley/l3galley.dtx
+++ b/Master/texmf-dist/source/latex/l3experimental/xgalley/l3galley.dtx
@@ -38,8 +38,8 @@
%<*driver|package>
% The version of expl3 required is tested as early as possible, as
% some really old versions do not define \ProvidesExplPackage.
-\RequirePackage{expl3}[2014/09/15]
-%<package>\@ifpackagelater{expl3}{2014/09/15}
+\RequirePackage{expl3}[2015/06/15]
+%<package>\@ifpackagelater{expl3}{2015/06/15}
%<package> {}
%<package> {%
%<package> \PackageError{l3galley}{Support package l3kernel too old}
@@ -51,7 +51,7 @@
%<package> }%
%<package> \endinput
%<package> }
-\GetIdInfo$Id: l3galley.dtx 5624 2015-05-31 19:22:46Z joseph $
+\GetIdInfo$Id: l3galley.dtx 5630 2015-06-15 08:49:02Z joseph $
{L3 Experimental galley code}
%</driver|package>
%<*driver>
@@ -1242,6 +1242,7 @@
\seq_gpop_left:NN \g_@@_cutout_left_seq \l_@@_tmp_tl
\seq_gpop_left:NN \g_@@_cutout_right_seq \l_@@_tmp_tl
}
+ \@@_parshape_set:
}
}
% \end{macrocode}
diff --git a/Master/texmf-dist/source/latex/l3kernel/expl3.dtx b/Master/texmf-dist/source/latex/l3kernel/expl3.dtx
index 85507e91d25..3c0a4035cd8 100644
--- a/Master/texmf-dist/source/latex/l3kernel/expl3.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/expl3.dtx
@@ -36,8 +36,8 @@
%<*driver|generic|package>
\def\ExplFileName{expl3}
\def\ExplFileDescription{L3 programming layer}
-\def\ExplFileDate{2015/03/01}
-\def\ExplFileVersion{5547}
+\def\ExplFileDate{2015/06/15}
+\def\ExplFileVersion{5630}
%</driver|generic|package>
%<*driver>
\documentclass[full]{l3doc}
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx b/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx
index b5fc71e1438..f15f704a2c9 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx
@@ -145,7 +145,7 @@
% \end{macro}
% \end{macro}
% \end{macro}
-\GetIdInfo$Id: l3bootstrap.dtx 5542 2015-02-28 22:47:53Z joseph $
+\GetIdInfo$Id: l3bootstrap.dtx 5608 2015-05-20 15:29:10Z joseph $
{L3 Bootstrap code}
%</driver|package>
%<*driver>
@@ -373,7 +373,7 @@
% primitive or a version of \LuaTeX{} capable of emulating it.
% \begin{macrocode}
\begingroup
- \def\next{\endgroup}
+ \def\next{\endgroup}%
\def\ShortText{Required primitives not found}%
\def\LongText%
{%
@@ -386,48 +386,49 @@
or later.\LineBreak
\LineBreak
}%
- \expandafter\ifx\csname pdfstrcmp\endcsname\relax
+ \ifnum0%
+ \expandafter\ifx\csname pdfstrcmp\endcsname\relax\else 1\fi
\expandafter\ifx\csname directlua\endcsname\relax
\else
- \ifnum\luatexversion<36 %
- \newlinechar`\^^J\relax
+ \ifnum\luatexversion<36 \else 1\fi
+ \fi
+ =0 %
+ \newlinechar`\^^J %
%<*initex>
- \def\LineBreak{^^J}%
- \edef\next
- {%
- \errhelp
- {%
- \LongText
- For pdfTeX and XeTeX the '-etex' command-line switch is also
- needed.\LineBreak
- \LineBreak
- Format building will abort!\LineBreak
- }%
- \errmessage{\ShortText}%
- \endgroup
- \noexpand\end
- }%
-%</initex>
-%<*package>
- \def\LineBreak{\noexpand\MessageBreak}%
- \expandafter\ifx\csname PackageError\endcsname\relax
- \def\LineBreak{^^J}%
- \def\PackageError#1#2#3%
+ \def\LineBreak{^^J}%
+ \edef\next
+ {%
+ \errhelp
{%
- \errhelp{#3}%
- \errmessage{#1 Error: #2!}
+ \LongText
+ For pdfTeX and XeTeX the '-etex' command-line switch is also
+ needed.\LineBreak
+ \LineBreak
+ Format building will abort!\LineBreak
}%
- \fi
- \edef\next
+ \errmessage{\ShortText}%
+ \endgroup
+ \noexpand\end
+ }%
+%</initex>
+%<*package>
+ \def\LineBreak{\noexpand\MessageBreak}%
+ \expandafter\ifx\csname PackageError\endcsname\relax
+ \def\LineBreak{^^J}%
+ \def\PackageError#1#2#3%
{%
- \noexpand\PackageError{expl3}{\ShortText}
- {\LongText Loading of expl3 will abort!}%
- \endgroup
- \noexpand\endinput
+ \errhelp{#3}%
+ \errmessage{#1 Error: #2}
}%
-%</package>
\fi
- \fi
+ \edef\next
+ {%
+ \noexpand\PackageError{expl3}{\ShortText}
+ {\LongText Loading of expl3 will abort!}%
+ \endgroup
+ \noexpand\endinput
+ }%
+%</package>
\fi
\next
% \end{macrocode}
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx b/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx
index 41e883c9397..abc040a20d0 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx
@@ -38,7 +38,7 @@
\documentclass[full]{l3doc}
%</driver>
%<*driver|package>
-\GetIdInfo$Id: l3candidates.dtx 5544 2015-03-01 18:30:00Z joseph $
+\GetIdInfo$Id: l3candidates.dtx 5613 2015-05-21 11:59:04Z joseph $
{L3 Experimental additions to l3kernel}
%</driver|package>
%<*driver>
@@ -806,7 +806,7 @@
% \end{texnote}
% \end{function}
%
-% \begin{function}[EXP, added = 2014-06-30, updated = 2015-02-18]^^A
+% \begin{function}[EXP, added = 2014-06-30, updated = 2015-05-07]^^A
% {
% \tl_lower_case:n, \tl_upper_case:n, \tl_mixed_case:n,
% \tl_lower_case:nn, \tl_upper_case:nn, \tl_mixed_case:nn
@@ -867,6 +867,14 @@
% \begin{verbatim}
% $ $ \( \)
% \end{verbatim}
+%
+% Note that while expansion occurs when searching the text it does not
+% apply to math mode material (which should be unaffected by case changing).
+% As such, whilst the opening token for math mode may be \enquote{hidden}
+% inside a command/macro, the closing one cannot be as this is being
+% searched for in math mode. Typically, in the types of \enquote{text}
+% the case changing functions are intended to apply to this should not be
+% an issue.
% \end{variable}
%
% \begin{variable}{\l_tl_case_change_exclude_tl}
@@ -948,22 +956,8 @@
% input is left unchanged.
%
% Context-sensitive mappings are enabled: language-dependent cases are
-% discussed below. All context detection works before any expansion of
-% following tokens and thus any control sequences are taken as the end of
-% the current \enquote{word}/character context.
-%
-% \begin{variable}{\l_tl_change_case_after_final_sigma_tl}
-% The \enquote{final sigma} rule for Greek letters is enabled and active for
-% all inputs. It is implemented here in a modified form which takes account
-% of the requirements of the likely real use cases, performance and
-% expandability. A capital sigma will map to a final-sigma if it is followed
-% by a space, the end of the input or one of the characters listed in
-% \cs{l_tl_change_case_after_final_sigma_tl}, which has standard setting
-% \begin{verbatim}
-% ) ] } . : ; , ! ? ' "
-% \end{verbatim}
-% with comparisons are made on a character basis.
-% \end{variable}
+% discussed below. Context detection will expand input but treats any
+% unexpandable control sequences as \enquote{failures} to match a context.
%
% Language-sensitive conversions are enabled using the \meta{language}
% argument, and follow Unicode Consortium guidelines. Currently, the
@@ -3138,9 +3132,9 @@
% \begin{macro}[aux, EXP]{\@@_change_case_cs:N}
% \begin{macro}[aux, EXP]{\@@_change_case_cs:NN}
% \begin{macro}[aux, EXP]{\@@_change_case_cs:NNn}
+% \begin{macro}[aux, EXP]{\@@_change_case_if_expandable:NTF}
% \begin{macro}[aux, EXP]{\@@_change_case_cs_expand:Nnw}
% \begin{macro}[aux, EXP]{\@@_change_case_cs_expand:NN}
-% \begin{macro}[aux, EXP]{\@@_change_case_cs_expand:NNnw}
% The mechanism for the core conversion of case is based on the idea that
% we can use a loop to grab the entire token list plus a quark: the latter is
% used as an end marker and to avoid any brace stripping. Depending on the
@@ -3494,23 +3488,34 @@
% When a control sequence is not on the exclude list the other test if
% to see if it is expandable. Once again, if there is a hit then the loop
% function is grabbed as part of the clean-up and reinserted before the
-% now expanded material.
+% now expanded material. The test for expandablity has to check for
+% end-of-recursion as it is needed by the look-ahead code which might hit
+% the end of the input. The test is done in two parts as \cs{bool_if:nTF}
+% will choke if |#1| is |(|!
% \begin{macrocode}
-\cs_new:Npn \@@_change_case_cs_expand:Nnw #1#2
+\cs_new:Npn \@@_change_case_if_expandable:NTF #1
{
- \bool_if:nTF
+ \token_if_expandable:NTF #1
{
- \token_if_expandable_p:N #1
- && ! \token_if_protected_macro_p:N #1
- && ! \token_if_protected_long_macro_p:N #1
+ \bool_if:nTF
+ {
+ \token_if_protected_macro_p:N #1
+ || \token_if_protected_long_macro_p:N #1
+ || \token_if_eq_meaning_p:NN \q_recursion_tail #1
+ }
+ { \use_ii:nn }
+ { \use_i:nn }
}
+ { \use_ii:nn }
+ }
+\cs_new:Npn \@@_change_case_cs_expand:Nnw #1#2
+ {
+ \@@_change_case_if_expandable:NTF #1
{ \@@_change_case_cs_expand:NN #1 }
{ #2 }
}
\cs_new:Npn \@@_change_case_cs_expand:NN #1#2
{ \exp_after:wN #2 #1 }
-\cs_new:Npn \@@_change_case_cs_expand:NNnw #1#2#3
- { \@@_change_case_cs_expand:Nnw #2 {#3} #1 }
% \end{macrocode}
% \end{macro}
% \end{macro}
@@ -3547,7 +3552,6 @@
% \begin{macro}[aux, EXP]{\@@_change_case_lower_sigma:Nnw}
% \begin{macro}[aux, EXP]{\@@_change_case_lower_sigma:w}
% \begin{macro}[aux, EXP]{\@@_change_case_lower_sigma:Nw}
-% \begin{macro}[aux, EXP]{\@@_change_case_lower_sigma_loop:NN}
% \begin{macro}[aux, EXP]{\@@_change_case_upper_sigma:Nnw}
% If the current char is an upper case sigma, the a check is made on the next
% item in the input. If it is \texttt{N}-type and not a control sequence
@@ -3565,34 +3569,22 @@
}
\cs_new:Npn \@@_change_case_lower_sigma:w #1 \q_recursion_stop
{
- \tl_if_head_is_N_type:nTF {#1}
- { \@@_change_case_lower_sigma:Nw #1 \q_recursion_stop }
- { \c__unicode_final_sigma_tl }
+ \tl_if_head_is_N_type:nTF {#1}
+ { \@@_change_case_lower_sigma:Nw #1 \q_recursion_stop }
+ { \c__unicode_final_sigma_tl }
}
\cs_new:Npn \@@_change_case_lower_sigma:Nw #1#2 \q_recursion_stop
{
- \token_if_cs:NTF #1
- { \c__unicode_final_sigma_tl }
+ \@@_change_case_if_expandable:NTF #1
{
- \exp_after:wN \@@_change_case_lower_sigma_loop:NN
- \exp_after:wN #1 \l_tl_case_change_after_final_sigma_tl
- \q_recursion_tail \q_recursion_stop
+ \exp_after:wN \@@_change_case_lower_sigma:w #1
+ #2 \q_recursion_stop
+ }
+ {
+ \token_if_letter:NTF #1
+ { \c__unicode_std_sigma_tl }
+ { \c__unicode_final_sigma_tl }
}
- }
-% \end{macrocode}
-% Assuming the next token is not a control sequence, a loop is used to test
-% if the next char is something that can be interpreted as the end of a word.
-% Rather than use all of the Unicode data for this, the simplifying
-% assumption is made that in real text the end of a word will be indicated by
-% a small number of chars.
-% \begin{macrocode}
-\cs_new:Npn \@@_change_case_lower_sigma_loop:NN #1#2
- {
- \quark_if_recursion_tail_stop_do:Nn #2
- { \c__unicode_std_sigma_tl }
- \int_compare:nNnT { `#1 } = { `#2 }
- { \use_i_delimit_by_q_recursion_stop:nw { \c__unicode_final_sigma_tl } }
- \@@_change_case_lower_sigma_loop:NN #1
}
% \end{macrocode}
% Simply skip to the final step for upper casing.
@@ -3603,7 +3595,6 @@
% \end{macro}
% \end{macro}
% \end{macro}
-% \end{macro}
%
% \begin{macro}[aux, EXP]{\@@_change_case_lower_tr:Nnw}
% \begin{macro}[aux, EXP]{\@@_change_case_lower_tr_auxi:Nw}
@@ -3643,15 +3634,22 @@
}
\cs_new:Npn \@@_change_case_lower_tr_auxii:Nw #1#2 \q_recursion_stop
{
- \bool_if:nTF
+ \@@_change_case_if_expandable:NTF #1
{
- \token_if_cs_p:N #1
- || ! ( \int_compare_p:nNn { `#1 } = { "0307 } )
+ \exp_after:wN \@@_change_case_lower_tr_auxi:Nw #1
+ #2 \q_recursion_stop
}
- { \@@_change_case_output:Vwn \c__unicode_dotless_i_tl }
{
- \@@_change_case_output:nwn { i }
- \use_i:nn
+ \bool_if:nTF
+ {
+ \token_if_cs_p:N #1
+ || ! ( \int_compare_p:nNn { `#1 } = { "0307 } )
+ }
+ { \@@_change_case_output:Vwn \c__unicode_dotless_i_tl }
+ {
+ \@@_change_case_output:nwn { i }
+ \use_i:nn
+ }
}
}
% \end{macrocode}
@@ -3742,18 +3740,25 @@
}
\cs_new:Npn \@@_change_case_lower_lt:NNw #1#2#3 \q_recursion_stop
{
- \bool_if:nT
+ \@@_change_case_if_expandable:NTF #2
{
- ! \token_if_cs_p:N #2
- &&
- (
- \int_compare_p:nNn { `#2 } = { "0300 }
- || \int_compare_p:nNn { `#2 } = { "0301 }
- || \int_compare_p:nNn { `#2 } = { "0303 }
- )
+ \exp_after:wN \@@_change_case_lower_lt:Nw \exp_after:wN #1 #2
+ #3 \q_recursion_stop
+ }
+ {
+ \bool_if:nT
+ {
+ ! \token_if_cs_p:N #2
+ &&
+ (
+ \int_compare_p:nNn { `#2 } = { "0300 }
+ || \int_compare_p:nNn { `#2 } = { "0301 }
+ || \int_compare_p:nNn { `#2 } = { "0303 }
+ )
+ }
+ { \@@_change_case_output:Vwn \c__unicode_dot_above_tl }
+ #1 #2#3 \q_recursion_stop
}
- { \@@_change_case_output:Vwn \c__unicode_dot_above_tl }
- #1 #2#3 \q_recursion_stop
}
% \end{macrocode}
% For upper casing, the test required is for a dot-above char after an I,
@@ -3790,14 +3795,21 @@
}
\cs_new:Npn \@@_change_case_upper_lt:NNw #1#2#3 \q_recursion_stop
{
- \bool_if:nTF
+ \@@_change_case_if_expandable:NTF #2
+ {
+ \exp_after:wN \@@_change_case_upper_lt:Nw \exp_after:wN #1 #2
+ #3 \q_recursion_stop
+ }
{
- ! \token_if_cs_p:N #2
- && \int_compare_p:nNn { `#2 } = { "0307 }
+ \bool_if:nTF
+ {
+ ! \token_if_cs_p:N #2
+ && \int_compare_p:nNn { `#2 } = { "0307 }
+ }
+ { #1 }
+ { #1 #2 }
+ #3 \q_recursion_stop
}
- { #1 }
- { #1 #2 }
- #3 \q_recursion_stop
}
% \end{macrocode}
% \end{macro}
@@ -4028,21 +4040,28 @@
}
\cs_new:Npn \@@_change_case_mixed_nl:NNw #1#2#3 \q_recursion_stop
{
- \bool_if:nTF
+ \@@_change_case_if_expandable:NTF #2
{
- ! ( \token_if_cs_p:N #2 )
- &&
- (
- \int_compare_p:nNn { `#2 } = { `j }
- || \int_compare_p:nNn { `#2 } = { `J }
- )
+ \exp_after:wN \@@_change_case_mixed_nl:Nw \exp_after:wN #1 #2
+ #3 \q_recursion_stop
}
{
- \@@_change_case_output:nwn { J }
- #1
+ \bool_if:nTF
+ {
+ ! ( \token_if_cs_p:N #2 )
+ &&
+ (
+ \int_compare_p:nNn { `#2 } = { `j }
+ || \int_compare_p:nNn { `#2 } = { `J }
+ )
+ }
+ {
+ \@@_change_case_output:nwn { J }
+ #1
+ }
+ { #1 #2 }
+ #3 \q_recursion_stop
}
- { #1 #2 }
- #3 \q_recursion_stop
}
% \end{macrocode}
% \end{macro}
@@ -4071,21 +4090,6 @@
%</package>
% \end{macrocode}
% \end{variable}
-%
-% \begin{variable}{\l_tl_case_change_after_final_sigma_tl}
-% Characters coming after a final sigma.
-% \begin{macrocode}
-\tl_new:N \l_tl_case_change_after_final_sigma_tl
-\tl_set:Nx \l_tl_case_change_after_final_sigma_tl
- { % (
- ) % [
- ] % \{
- \cs_to_str:N \}
- . : ; ,
- ! ? ' "
- }
-% \end{macrocode}
-% \end{variable}
%
% \begin{variable}{\l_tl_mixed_case_ignore_tl}
% Characters to skip over when finding the first letter in a word to be
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3file.dtx b/Master/texmf-dist/source/latex/l3kernel/l3file.dtx
index bded1318cdc..b057b04dc80 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3file.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3file.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-%% File: l3file.dtx Copyright (C) 1990-2014 The LaTeX3 Project
+%% File: l3file.dtx Copyright (C) 1990-2015 The LaTeX3 Project
%%
%% It may be distributed and/or modified under the conditions of the
%% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -37,7 +37,7 @@
\documentclass[full]{l3doc}
%</driver>
%<*driver|package>
-\GetIdInfo$Id: l3file.dtx 5369 2014-08-24 22:41:47Z bruno $
+\GetIdInfo$Id: l3file.dtx 5627 2015-06-07 09:26:26Z bruno $
{L3 File and I/O operations}
%</driver|package>
%<*driver>
@@ -432,7 +432,7 @@
% \item |\#|, |\%|, |\{|, |\}|, |\~| may be used to represent
% the corresponding character,
% \item \cs{iow_indent:n} may be used to indent a part of the
-% message.
+% \meta{text} (not the \meta{run-on text}).
% \end{itemize}
% Additional functions may be added to the wrapping by using the
% \meta{set up}, which is executed before the wrapping takes place: this
@@ -464,7 +464,7 @@
% \begin{syntax}
% \cs{iow_indent:n} \Arg{text}
% \end{syntax}
-% In the context of \cs{iow_wrap:nnnN} (for instance in messages),
+% In the first argument of \cs{iow_wrap:nnnN} (for instance in messages),
% indents \meta{text} by four spaces. This function will not cause
% a line break, and only affects lines which start within the scope
% of the \meta{text}. In case the indented \meta{text} should appear
@@ -975,7 +975,10 @@
{
\cs_if_exist:NTF \normalend
{ \tex_count:D 38 \scan_stop: }
- { \tex_count:D 16 \scan_stop: - \c_one }
+ {
+ \tex_count:D 16 \scan_stop:
+ \cs_if_exist:NT \loccount { - \c_one }
+ }
}
{
\prop_gput:Nnn \g_@@_streams_prop {#1} { Reserved~by~format }
@@ -1239,7 +1242,10 @@
{
\cs_if_exist:NTF \normalend
{ \tex_count:D 39 \scan_stop: }
- { \tex_count:D 17 \scan_stop: - \c_one }
+ {
+ \tex_count:D 17 \scan_stop:
+ \cs_if_exist:NT \loccount { - \c_one }
+ }
}
{
\prop_gput:Nnn \g_@@_streams_prop {#1} { Reserved~by~format }
@@ -1554,21 +1560,26 @@
% \end{macro}
%
% \begin{macro}{\iow_indent:n}
-% \begin{macro}[aux]{\@@_indent:n}
-% We give a dummy (protected) definition to \cs{iow_indent:n}
+% \begin{macro}[aux]{\@@_indent:n, \@@_indent_error:n}
+% We give a (protected) error definition to \cs{iow_indent:n}
% when outside messages. Within wrapped message, it places
% the instruction for increasing the indentation before its
% argument, and the instruction for unindenting afterwards.
% Note that there will be no forced line-break, so the indentation
% only changes when the next line is started.
% \begin{macrocode}
-\cs_new_protected:Npn \iow_indent:n #1 { }
\cs_new:Npx \@@_indent:n #1
{
\c_@@_wrap_indent_marker_tl
#1
\c_@@_wrap_unindent_marker_tl
}
+\cs_new:Npn \@@_indent_error:n #1
+ {
+ \__msg_kernel_expandable_error:nn { kernel } { indent-outside-wrapping-code }
+ #1
+ }
+\cs_new_protected_nopar:Npn \iow_indent:n { \@@_indent_error:n }
% \end{macrocode}
% \end{macro}
% \end{macro}
@@ -1612,11 +1623,14 @@
\@@_wrap_set:Nx \l_@@_wrap_tl {#1}
%</package>
% \end{macrocode}
+% To warn users that \cs{iow_indent:n} only works in the first argument
+% of \cs{iow_wrap:nnnN} reset \cs{iow_indent:n} to its error definition.
% This is a bit of a hack to measure the string length of the run on text
% without the \pkg{l3str} module (which is still experimental). This should
% be replaced once the string module is finalised with something a little
% cleaner.
% \begin{macrocode}
+ \cs_set_eq:NN \iow_indent:n \@@_indent_error:n
\tl_set:Nx \l_@@_newline_tl { \iow_newline: #2 }
\tl_set:Nx \l_@@_newline_tl { \tl_to_str:N \l_@@_newline_tl }
\tl_replace_all:Nnn \l_@@_newline_tl { ~ } { \c_space_tl }
@@ -1625,12 +1639,20 @@
\int_zero:N \l_@@_current_indentation_int
\tl_clear:N \l_@@_current_indentation_tl
\int_zero:N \l_@@_current_line_int
- \tl_clear:N \l_@@_current_line_tl
+ \tl_set:Nn \l_@@_current_line_tl { \use_none:n }
\bool_set_true:N \l_@@_line_start_bool
+% \end{macrocode}
+% After some setup above (in particular the odd setting of the current line
+% to \cs{use_none:n}), a loop goes through space-delimited words in the
+% message, recognizing special markers. To make sure that the first line
+% behaves identically to others, start with a newline marker: the
+% \cs{use_none:n} above avoids actually getting a new line in the output.
+% \begin{macrocode}
\use:x
{
\exp_not:n { \tl_clear:N \l_@@_wrap_tl }
\@@_wrap_loop:w
+ \tl_to_str:N \c_@@_wrap_newline_marker_tl
\tl_to_str:N \l_@@_wrap_tl
\tl_to_str:N \c_@@_wrap_end_marker_tl
\c_space_tl \c_space_tl
@@ -1836,6 +1858,8 @@
{
File~names~must~contain~balanced~numbers~of~quotes~(").
}
+\__msg_kernel_new:nnn { kernel } { indent-outside-wrapping-code }
+ { Only~\iow_wrap:nnnN~(arg~1)~allows~\iow_indent:n }
% \end{macrocode}
%
% \begin{macrocode}
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx b/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx
index c64d2a7dd3a..8797006f6b4 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx
@@ -37,7 +37,7 @@
\documentclass[full]{l3doc}
%</driver>
%<*driver|package>
-\GetIdInfo$Id: l3keys.dtx 5500 2015-01-27 14:37:04Z joseph $
+\GetIdInfo$Id: l3keys.dtx 5629 2015-06-14 08:38:04Z joseph $
{L3 Key-value interfaces}
%</driver|package>
%<*driver>
@@ -1391,7 +1391,7 @@
\clist_map_inline:nn {#2}
{
\int_incr:N \l_keys_choice_int
- \@@_cmd_set:nx { \l_keys_path_tl / ##1 }
+ \@@_cmd_set:nx { \l_keys_path_tl / \tl_to_str:n {##1} }
{
\tl_set:Nn \exp_not:N \l_keys_choice_tl {##1}
\int_set:Nn \exp_not:N \l_keys_choice_int
@@ -2127,7 +2127,7 @@
% \begin{macrocode}
\prg_new_conditional:Npnn \keys_if_exist:nn #1#2 { p , T , F , TF }
{
- \cs_if_exist:cTF { \c_@@_code_root_tl #1 / #2 }
+ \cs_if_exist:cTF { \c_@@_code_root_tl \tl_to_str:n { #1 / #2 } }
{ \prg_return_true: }
{ \prg_return_false: }
}
@@ -2140,7 +2140,7 @@
\prg_new_conditional:Npnn \keys_if_choice_exist:nnn #1#2#3
{ p , T , F , TF }
{
- \cs_if_exist:cTF { \c_@@_code_root_tl #1 / #2 / #3 }
+ \cs_if_exist:cTF { \c_@@_code_root_tl \tl_to_str:n { #1 / #2 / #3 } }
{ \prg_return_true: }
{ \prg_return_false: }
}
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx b/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx
index 92881b93abf..81c1a12b0ca 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-%% File: l3prg.dtx Copyright (C) 2005-2014 The LaTeX3 Project
+%% File: l3prg.dtx Copyright (C) 2005-2015 The LaTeX3 Project
%%
%% It may be distributed and/or modified under the conditions of the
%% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -37,7 +37,7 @@
\documentclass[full]{l3doc}
%</driver>
%<*driver|package>
-\GetIdInfo$Id: l3prg.dtx 5354 2014-08-23 01:35:39Z bruno $
+\GetIdInfo$Id: l3prg.dtx 5566 2015-04-13 08:24:56Z joseph $
{L3 Control structures}
%</driver|package>
%<*driver>
@@ -238,6 +238,14 @@
% All conditional |\bool_| functions except assignments are expandable
% and expect the input to also be fully expandable (which will generally
% mean being constructed from predicate functions, possibly nested).
+%
+% \begin{texnote}
+% The \texttt{bool} data type is not implemented using the
+% \tn{iffalse}/\tn{iftrue} primitives, in contrast to \tn{newif},
+% \emph{etc.}, in plain \TeX{}, \LaTeXe{} and so on. Programmers should
+% not base use of \texttt{bool} switches on any particular expectation
+% of the implementation.
+% \end{texnote}
%
% \begin{function}{\bool_new:N, \bool_new:c}
% \begin{syntax}
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx b/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx
index d82f85327f8..dadd33bfa23 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx
@@ -38,7 +38,7 @@
\documentclass[full]{l3doc}
%</driver>
%<*driver|package>
-\GetIdInfo$Id: l3skip.dtx 5354 2014-08-23 01:35:39Z bruno $
+\GetIdInfo$Id: l3skip.dtx 5607 2015-05-18 12:25:06Z joseph $
{L3 Dimensions and skips}
%</driver|package>
%<*driver>
@@ -473,6 +473,15 @@
% one (\TeX{}) point when converted to big points.
% \end{function}
%
+% \begin{function}[added = 2015-05-18, EXP]{\dim_to_decimal_in_sp:n}
+% \begin{syntax}
+% \cs{dim_to_decimal_in_sp:n} \Arg{dimexpr}
+% \end{syntax}
+% Evaluates the \meta{dimension expression}, and leaves the result,
+% expressed in scaled points (\texttt{sp}) in the input stream, with \emph{no
+% units}. The result will necessarily be an integer.
+% \end{function}
+%
% \begin{function}[added = 2014-07-15, EXP]
% {\dim_to_decimal_in_unit:nn}
% \begin{syntax}
@@ -490,6 +499,13 @@
% \end{verbatim}
% leaves |0.35277| in the input stream, \emph{i.e.}~the magnitude of
% one big point when converted to millimetres.
+%
+% Note that this function is not optimised for any particular output
+% and as such may give different results to \cs{dim_to_decimal_in_bp:n}
+% or \cs{dim_to_decimal_in_sp:n}. In particular, the latter is able to
+% take a wider range of input values as it is not limited by the ability
+% to calculate a ratio using \eTeX{} primitives, which is required
+% internally by \cs{dim_to_decimal_in_unit:nn}.
% \end{function}
%
% \begin{function}[EXP, added = 2012-05-08, tested = m3fp-convert002]
@@ -1435,6 +1451,15 @@
{ \dim_to_decimal:n { ( #1 ) * 800 / 803 } }
% \end{macrocode}
% \end{macro}
+%
+% \begin{macro}[EXP]{\dim_to_decimal_in_sp:n}
+% Another hard-coded conversion: this one is necessary to avoid things going
+% off-scale.
+% \begin{macrocode}
+\cs_new:Npn \dim_to_decimal_in_sp:n #1
+ { \int_eval:n { \@@_eval:w #1 \@@_eval_end: } }
+% \end{macrocode}
+% \end{macro}
%
% \begin{macro}[EXP]{\dim_to_decimal_in_unit:nn}
% An analogue of \cs{dim_ratio:nn} that produces a decimal number as its
diff --git a/Master/texmf-dist/source/latex/l3packages/l3keys2e/l3keys2e.dtx b/Master/texmf-dist/source/latex/l3packages/l3keys2e/l3keys2e.dtx
index 4dfce684b9c..13dd7cc48b2 100644
--- a/Master/texmf-dist/source/latex/l3packages/l3keys2e/l3keys2e.dtx
+++ b/Master/texmf-dist/source/latex/l3packages/l3keys2e/l3keys2e.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-%% File: l3keys2e.dtx (C) Copyright 2009,2011-2014 The LaTeX3 Project
+%% File: l3keys2e.dtx (C) Copyright 2009,2011-2015 The LaTeX3 Project
%%
%% It may be distributed and/or modified under the conditions of the
%% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -37,8 +37,8 @@
%<*driver|package>
% The version of expl3 required is tested as early as possible, as
% some really old versions do not define \ProvidesExplPackage.
-\RequirePackage{expl3}[2014/11/25]
-%<package>\@ifpackagelater{expl3}{2014/11/25}
+\RequirePackage{expl3}[2015/06/15]
+%<package>\@ifpackagelater{expl3}{2015/06/15}
%<package> {}
%<package> {%
%<package> \PackageError{l3keys2e}{Support package l3kernel too old}
@@ -50,7 +50,7 @@
%<package> }%
%<package> \endinput
%<package> }
-\GetIdInfo$Id: l3keys2e.dtx 5471 2014-11-25 20:11:29Z joseph $
+\GetIdInfo$Id: l3keys2e.dtx 5630 2015-06-15 08:49:02Z joseph $
{LaTeX2e option processing using LaTeX3 keys}
%</driver|package>
%<*driver>
@@ -312,7 +312,7 @@
% \end{macro}
%
% \begin{macro}{\ProcessKeysOptions}
-% \begin{macro}{\ProcessKeysOptions}
+% \begin{macro}{\ProcessKeysPackageOptions}
% The user macro are simply wrappers around the internal process. In
% contrast to other similar packages, the module name is always required
% here.
diff --git a/Master/texmf-dist/source/latex/l3packages/xparse/xparse.dtx b/Master/texmf-dist/source/latex/l3packages/xparse/xparse.dtx
index 36a13537312..1ff44c20a25 100644
--- a/Master/texmf-dist/source/latex/l3packages/xparse/xparse.dtx
+++ b/Master/texmf-dist/source/latex/l3packages/xparse/xparse.dtx
@@ -4,7 +4,7 @@
%% David Carlisle
%% (C) Copyright 2004-2008 Frank Mittelbach,
%% The LaTeX3 Project
-%% (C) Copyright 2009-2014 The LaTeX3 Project
+%% (C) Copyright 2009-2015 The LaTeX3 Project
%%
%% It may be distributed and/or modified under the conditions of the
%% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -41,8 +41,8 @@
%<*driver|package>
% The version of expl3 required is tested as early as possible, as
% some really old versions do not define \ProvidesExplPackage.
-\RequirePackage{expl3}[2014/11/25]
-%<package>\@ifpackagelater{expl3}{2014/11/25}
+\RequirePackage{expl3}[2015/06/15]
+%<package>\@ifpackagelater{expl3}{2015/06/15}
%<package> {}
%<package> {%
%<package> \PackageError{xparse}{Support package l3kernel too old}
@@ -54,7 +54,7 @@
%<package> }%
%<package> \endinput
%<package> }
-\GetIdInfo$Id: xparse.dtx 5471 2014-11-25 20:11:29Z joseph $
+\GetIdInfo$Id: xparse.dtx 5630 2015-06-15 08:49:02Z joseph $
{L3 Experimental document command parser}
%</driver|package>
%<*driver>
diff --git a/Master/texmf-dist/source/latex/l3packages/xtemplate/xtemplate.dtx b/Master/texmf-dist/source/latex/l3packages/xtemplate/xtemplate.dtx
index 47ad1f1c74b..b17b685da34 100644
--- a/Master/texmf-dist/source/latex/l3packages/xtemplate/xtemplate.dtx
+++ b/Master/texmf-dist/source/latex/l3packages/xtemplate/xtemplate.dtx
@@ -4,7 +4,7 @@
%% David Carlisle
%% (C) Copyright 2004-2010 Frank Mittelbach,
%% The LaTeX3 Project
-%% (C) Copyright 2011-2014 The LaTeX3 Project
+%% (C) Copyright 2011-2015 The LaTeX3 Project
%%
%% It may be distributed and/or modified under the conditions of the
%% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -41,8 +41,8 @@
%<*driver|package>
% The version of expl3 required is tested as early as possible, as
% some really old versions do not define \ProvidesExplPackage.
-\RequirePackage{expl3}[2014/11/25]
-%<package>\@ifpackagelater{expl3}{2014/11/25}
+\RequirePackage{expl3}[2015/06/15]
+%<package>\@ifpackagelater{expl3}{2015/06/15}
%<package> {}
%<package> {%
%<package> \PackageError{xtemplate}{Support package l3kernel too old}
@@ -54,7 +54,7 @@
%<package> }%
%<package> \endinput
%<package> }
-\GetIdInfo$Id: xtemplate.dtx 5471 2014-11-25 20:11:29Z joseph $
+\GetIdInfo$Id: xtemplate.dtx 5630 2015-06-15 08:49:02Z joseph $
{L3 Experimental prototype document functions}
%</driver|package>
%<*driver>
diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3sort/l3sort.sty b/Master/texmf-dist/tex/latex/l3experimental/l3sort/l3sort.sty
index 626fb98a3c0..62f05087b94 100644
--- a/Master/texmf-dist/tex/latex/l3experimental/l3sort/l3sort.sty
+++ b/Master/texmf-dist/tex/latex/l3experimental/l3sort/l3sort.sty
@@ -13,7 +13,7 @@
%%
%% Do not distribute a modified version of this file.
%%
-%% File l3sort.dtx (C) Copyright 2012,2014 The LaTeX3 Project
+%% File l3sort.dtx (C) Copyright 2012,2014,2015 The LaTeX3 Project
%%
%% It may be distributed and/or modified under the conditions of the
%% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -46,8 +46,8 @@
%%
%% -----------------------------------------------------------------------
%%
-\RequirePackage{expl3}[2014/11/25]
-\@ifpackagelater{expl3}{2014/11/25}
+\RequirePackage{expl3}[2015/06/15]
+\@ifpackagelater{expl3}{2015/06/15}
{}
{%
\PackageError{l3sort}{Support package l3kernel too old}
@@ -59,7 +59,7 @@
}%
\endinput
}
-\GetIdInfo$Id: l3sort.dtx 5471 2014-11-25 20:11:29Z joseph $
+\GetIdInfo$Id: l3sort.dtx 5630 2015-06-15 08:49:02Z joseph $
{L3 Experimental sorting functions}
\ProvidesExplPackage
{\ExplFileName}{\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription}
diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3flag.sty b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3flag.sty
index 45260c09f87..3dad3c21bfe 100644
--- a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3flag.sty
+++ b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3flag.sty
@@ -13,7 +13,7 @@
%%
%% Do not distribute a modified version of this file.
%%
-%% File: l3flag.dtx Copyright (C) 2011-2012,2104 The LaTeX3 Project
+%% File: l3flag.dtx Copyright (C) 2011-2012,2014,2015 The LaTeX3 Project
%%
%% It may be distributed and/or modified under the conditions of the
%% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -45,8 +45,8 @@
%% prior consultation with the LaTeX3 Project.
%%
%% -----------------------------------------------------------------------
-\RequirePackage{expl3}[2014/11/25]
-\@ifpackagelater{expl3}{2014/11/25}
+\RequirePackage{expl3}[2015/06/15]
+\@ifpackagelater{expl3}{2015/06/15}
{}
{%
\PackageError{l3flag}{Support package l3kernel too old}
@@ -58,7 +58,7 @@
}%
\endinput
}
-\GetIdInfo$Id: l3flag.dtx 5471 2014-11-25 20:11:29Z joseph $
+\GetIdInfo$Id: l3flag.dtx 5630 2015-06-15 08:49:02Z joseph $
{L3 Experimental flags}
\ProvidesExplPackage
{\ExplFileName}{\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription}
diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3regex-trace.sty b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3regex-trace.sty
index becb142c763..6d6be77a1cc 100644
--- a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3regex-trace.sty
+++ b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3regex-trace.sty
@@ -13,7 +13,7 @@
%%
%% Do not distribute a modified version of this file.
%%
-%% File: l3regex.dtx Copyright (C) 2011-2014 The LaTeX3 Project
+%% File: l3regex.dtx Copyright (C) 2011-2015 The LaTeX3 Project
%%
%% It may be distributed and/or modified under the conditions of the
%% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -45,8 +45,8 @@
%% prior consultation with the LaTeX3 Project.
%%
%% -----------------------------------------------------------------------
-\RequirePackage{expl3}[2014/11/25]
-\@ifpackagelater{expl3}{2014/11/25}
+\RequirePackage{expl3}[2015/06/15]
+\@ifpackagelater{expl3}{2015/06/15}
{}
{%
\PackageError{l3regex}{Support package l3kernel too old}
@@ -58,7 +58,7 @@
}%
\endinput
}
-\GetIdInfo$Id: l3regex.dtx 5471 2014-11-25 20:11:29Z joseph $
+\GetIdInfo$Id: l3regex.dtx 5630 2015-06-15 08:49:02Z joseph $
{L3 Experimental regular expressions}
\ProvidesExplPackage
{\ExplFileName}{\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription}
diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3regex.sty b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3regex.sty
index b2839ed61f1..4b322b68ba1 100644
--- a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3regex.sty
+++ b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3regex.sty
@@ -13,7 +13,7 @@
%%
%% Do not distribute a modified version of this file.
%%
-%% File: l3regex.dtx Copyright (C) 2011-2014 The LaTeX3 Project
+%% File: l3regex.dtx Copyright (C) 2011-2015 The LaTeX3 Project
%%
%% It may be distributed and/or modified under the conditions of the
%% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -45,8 +45,8 @@
%% prior consultation with the LaTeX3 Project.
%%
%% -----------------------------------------------------------------------
-\RequirePackage{expl3}[2014/11/25]
-\@ifpackagelater{expl3}{2014/11/25}
+\RequirePackage{expl3}[2015/06/15]
+\@ifpackagelater{expl3}{2015/06/15}
{}
{%
\PackageError{l3regex}{Support package l3kernel too old}
@@ -58,7 +58,7 @@
}%
\endinput
}
-\GetIdInfo$Id: l3regex.dtx 5471 2014-11-25 20:11:29Z joseph $
+\GetIdInfo$Id: l3regex.dtx 5630 2015-06-15 08:49:02Z joseph $
{L3 Experimental regular expressions}
\ProvidesExplPackage
{\ExplFileName}{\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription}
diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str.sty b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str.sty
index cb419358e4d..35b91ae711e 100644
--- a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str.sty
+++ b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str.sty
@@ -13,7 +13,7 @@
%%
%% Do not distribute a modified version of this file.
%%
-%% File: l3str.dtx Copyright (C) 2011-2014 The LaTeX3 Project
+%% File: l3str.dtx Copyright (C) 2011-2015 The LaTeX3 Project
%%
%% It may be distributed and/or modified under the conditions of the
%% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -45,8 +45,8 @@
%% prior consultation with the LaTeX3 Project.
%%
%% -----------------------------------------------------------------------
-\RequirePackage{expl3}[2014/11/25]
-\@ifpackagelater{expl3}{2014/11/25}
+\RequirePackage{expl3}[2015/06/15]
+\@ifpackagelater{expl3}{2015/06/15}
{}
{%
\PackageError{l3str}{Support package l3kernel too old}
@@ -58,7 +58,7 @@
}%
\endinput
}
-\GetIdInfo$Id: l3str-expl.dtx 5471 2014-11-25 20:11:29Z joseph $
+\GetIdInfo$Id: l3str-expl.dtx 5630 2015-06-15 08:49:02Z joseph $
{L3 Experimental strings}
\def\ExplFileName{l3str}
\ProvidesExplPackage
diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3tl-build.sty b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3tl-build.sty
index c2f1b05c180..244d6164930 100644
--- a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3tl-build.sty
+++ b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3tl-build.sty
@@ -13,7 +13,7 @@
%%
%% Do not distribute a modified version of this file.
%%
-%% File: l3tl-build.dtx Copyright (C) 2011-2012 The LaTeX3 Project
+%% File: l3tl-build.dtx Copyright (C) 2011-2015 The LaTeX3 Project
%%
%% It may be distributed and/or modified under the conditions of the
%% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -45,8 +45,8 @@
%% prior consultation with the LaTeX3 Project.
%%
%% -----------------------------------------------------------------------
-\RequirePackage{expl3}[2014/08/25]
-\@ifpackagelater{expl3}{2014/08/25}
+\RequirePackage{expl3}[2015/06/15]
+\@ifpackagelater{expl3}{2015/06/15}
{}
{%
\PackageError{l3tl-build}{Support package l3kernel too old}
@@ -58,7 +58,7 @@
}%
\endinput
}
-\GetIdInfo$Id: l3tl-build.dtx 5378 2014-08-25 10:59:48Z joseph $
+\GetIdInfo$Id: l3tl-build.dtx 5630 2015-06-15 08:49:02Z joseph $
{L3 Experimental token list construction}
\ProvidesExplPackage
{\ExplFileName}{\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription}
diff --git a/Master/texmf-dist/tex/latex/l3experimental/xgalley/l3galley.sty b/Master/texmf-dist/tex/latex/l3experimental/xgalley/l3galley.sty
index b18798c22a8..3d4b1b1582b 100644
--- a/Master/texmf-dist/tex/latex/l3experimental/xgalley/l3galley.sty
+++ b/Master/texmf-dist/tex/latex/l3experimental/xgalley/l3galley.sty
@@ -47,8 +47,8 @@
%%
%% -----------------------------------------------------------------------
%%
-\RequirePackage{expl3}[2014/09/15]
-\@ifpackagelater{expl3}{2014/09/15}
+\RequirePackage{expl3}[2015/06/15]
+\@ifpackagelater{expl3}{2015/06/15}
{}
{%
\PackageError{l3galley}{Support package l3kernel too old}
@@ -60,7 +60,7 @@
}%
\endinput
}
-\GetIdInfo$Id: l3galley.dtx 5624 2015-05-31 19:22:46Z joseph $
+\GetIdInfo$Id: l3galley.dtx 5630 2015-06-15 08:49:02Z joseph $
{L3 Experimental galley code}
\ProvidesExplPackage
{\ExplFileName}{\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription}
@@ -290,6 +290,7 @@
\seq_gpop_left:NN \g__galley_cutout_left_seq \l__galley_tmp_tl
\seq_gpop_left:NN \g__galley_cutout_right_seq \l__galley_tmp_tl
}
+ \__galley_parshape_set:
}
}
\cs_new_protected:Npn \galley_par:n #1
diff --git a/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex b/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex
index dffedf539df..ba0cfff670a 100644
--- a/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex
+++ b/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex
@@ -80,8 +80,8 @@
%% -----------------------------------------------------------------------
\def\ExplFileName{expl3}
\def\ExplFileDescription{L3 programming layer}
-\def\ExplFileDate{2015/03/01}
-\def\ExplFileVersion{5547}
+\def\ExplFileDate{2015/06/15}
+\def\ExplFileVersion{5630}
\begingroup
\def\next{\endgroup}
\expandafter\ifx\csname PackageError\endcsname\relax
@@ -240,7 +240,7 @@
}
}
\endgroup
-\GetIdInfo$Id: l3bootstrap.dtx 5542 2015-02-28 22:47:53Z joseph $
+\GetIdInfo$Id: l3bootstrap.dtx 5608 2015-05-20 15:29:10Z joseph $
{L3 Bootstrap code}
\begingroup\expandafter\expandafter\expandafter\endgroup
\expandafter\ifx\csname pdfstrcmp\endcsname\relax
@@ -284,7 +284,7 @@
\fi
\endgroup
\begingroup
- \def\next{\endgroup}
+ \def\next{\endgroup}%
\def\ShortText{Required primitives not found}%
\def\LongText%
{%
@@ -297,29 +297,30 @@
or later.\LineBreak
\LineBreak
}%
- \expandafter\ifx\csname pdfstrcmp\endcsname\relax
+ \ifnum0%
+ \expandafter\ifx\csname pdfstrcmp\endcsname\relax\else 1\fi
\expandafter\ifx\csname directlua\endcsname\relax
\else
- \ifnum\luatexversion<36 %
- \newlinechar`\^^J\relax
- \def\LineBreak{\noexpand\MessageBreak}%
- \expandafter\ifx\csname PackageError\endcsname\relax
- \def\LineBreak{^^J}%
- \def\PackageError#1#2#3%
- {%
- \errhelp{#3}%
- \errmessage{#1 Error: #2!}
- }%
- \fi
- \edef\next
+ \ifnum\luatexversion<36 \else 1\fi
+ \fi
+ =0 %
+ \newlinechar`\^^J %
+ \def\LineBreak{\noexpand\MessageBreak}%
+ \expandafter\ifx\csname PackageError\endcsname\relax
+ \def\LineBreak{^^J}%
+ \def\PackageError#1#2#3%
{%
- \noexpand\PackageError{expl3}{\ShortText}
- {\LongText Loading of expl3 will abort!}%
- \endgroup
- \noexpand\endinput
+ \errhelp{#3}%
+ \errmessage{#1 Error: #2}
}%
\fi
- \fi
+ \edef\next
+ {%
+ \noexpand\PackageError{expl3}{\ShortText}
+ {\LongText Loading of expl3 will abort!}%
+ \endgroup
+ \noexpand\endinput
+ }%
\fi
\next
\begingroup
@@ -4770,7 +4771,7 @@
{ \__quark_if_recursion_tail_break:NN #1 \prg_break: }
\cs_new:Npn \quark_if_recursion_tail_break:n #1
{ \__quark_if_recursion_tail_break:nN {#1} \prg_break: }
-%% File: l3prg.dtx Copyright (C) 2005-2014 The LaTeX3 Project
+%% File: l3prg.dtx Copyright (C) 2005-2015 The LaTeX3 Project
%%
%% It may be distributed and/or modified under the conditions of the
%% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -4802,7 +4803,7 @@
%% prior consultation with the LaTeX3 Project.
%%
%% -----------------------------------------------------------------------
-\GetIdInfo$Id: l3prg.dtx 5354 2014-08-23 01:35:39Z bruno $
+\GetIdInfo$Id: l3prg.dtx 5566 2015-04-13 08:24:56Z joseph $
{L3 Control structures}
%%
\tex_let:D \if_bool:N \tex_ifodd:D
@@ -7508,7 +7509,7 @@
\\ > \ \ \tl_to_str:n {#1}
\ \ => \ \ \tl_to_str:n {#2}
}
-%% File: l3file.dtx Copyright (C) 1990-2014 The LaTeX3 Project
+%% File: l3file.dtx Copyright (C) 1990-2015 The LaTeX3 Project
%%
%% It may be distributed and/or modified under the conditions of the
%% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -7540,7 +7541,7 @@
%% prior consultation with the LaTeX3 Project.
%%
%% -----------------------------------------------------------------------
-\GetIdInfo$Id: l3file.dtx 5369 2014-08-24 22:41:47Z bruno $
+\GetIdInfo$Id: l3file.dtx 5627 2015-06-07 09:26:26Z bruno $
{L3 File and I/O operations}
\tl_new:N \g_file_current_name_tl
\tl_gset_eq:NN \g_file_current_name_tl \@currname
@@ -7712,7 +7713,10 @@
{
\cs_if_exist:NTF \normalend
{ \tex_count:D 38 \scan_stop: }
- { \tex_count:D 16 \scan_stop: - \c_one }
+ {
+ \tex_count:D 16 \scan_stop:
+ \cs_if_exist:NT \loccount { - \c_one }
+ }
}
{
\prop_gput:Nnn \g__ior_streams_prop {#1} { Reserved~by~format }
@@ -7824,7 +7828,10 @@
{
\cs_if_exist:NTF \normalend
{ \tex_count:D 39 \scan_stop: }
- { \tex_count:D 17 \scan_stop: - \c_one }
+ {
+ \tex_count:D 17 \scan_stop:
+ \cs_if_exist:NT \loccount { - \c_one }
+ }
}
{
\prop_gput:Nnn \g__iow_streams_prop {#1} { Reserved~by~format }
@@ -7931,13 +7938,18 @@
\c_catcode_other_space_tl
}
}
-\cs_new_protected:Npn \iow_indent:n #1 { }
\cs_new:Npx \__iow_indent:n #1
{
\c__iow_wrap_indent_marker_tl
#1
\c__iow_wrap_unindent_marker_tl
}
+\cs_new:Npn \__iow_indent_error:n #1
+ {
+ \__msg_kernel_expandable_error:nn { kernel } { indent-outside-wrapping-code }
+ #1
+ }
+\cs_new_protected_nopar:Npn \iow_indent:n { \__iow_indent_error:n }
\cs_new_protected:Npn \iow_wrap:nnnN #1#2#3#4
{
\group_begin:
@@ -7953,6 +7965,7 @@
\cs_set_eq:NN \iow_indent:n \__iow_indent:n
#3
\__iow_wrap_set:Nx \l__iow_wrap_tl {#1}
+ \cs_set_eq:NN \iow_indent:n \__iow_indent_error:n
\tl_set:Nx \l__iow_newline_tl { \iow_newline: #2 }
\tl_set:Nx \l__iow_newline_tl { \tl_to_str:N \l__iow_newline_tl }
\tl_replace_all:Nnn \l__iow_newline_tl { ~ } { \c_space_tl }
@@ -7961,12 +7974,13 @@
\int_zero:N \l__iow_current_indentation_int
\tl_clear:N \l__iow_current_indentation_tl
\int_zero:N \l__iow_current_line_int
- \tl_clear:N \l__iow_current_line_tl
+ \tl_set:Nn \l__iow_current_line_tl { \use_none:n }
\bool_set_true:N \l__iow_line_start_bool
\use:x
{
\exp_not:n { \tl_clear:N \l__iow_wrap_tl }
\__iow_wrap_loop:w
+ \tl_to_str:N \c__iow_wrap_newline_marker_tl
\tl_to_str:N \l__iow_wrap_tl
\tl_to_str:N \c__iow_wrap_end_marker_tl
\c_space_tl \c_space_tl
@@ -8098,6 +8112,8 @@
{
File~names~must~contain~balanced~numbers~of~quotes~(").
}
+\__msg_kernel_new:nnn { kernel } { indent-outside-wrapping-code }
+ { Only~\iow_wrap:nnnN~(arg~1)~allows~\iow_indent:n }
%% File: l3skip.dtx Copyright (C) 2004-2011 Frank Mittelbach, The LaTeX3 Project
%% (C) 2012-2014 The LaTeX3 Project
%%
@@ -8131,7 +8147,7 @@
%% prior consultation with the LaTeX3 Project.
%%
%% -----------------------------------------------------------------------
-\GetIdInfo$Id: l3skip.dtx 5354 2014-08-23 01:35:39Z bruno $
+\GetIdInfo$Id: l3skip.dtx 5607 2015-05-18 12:25:06Z joseph $
{L3 Dimensions and skips}
\cs_new_eq:NN \if_dim:w \tex_ifdim:D
\cs_new_eq:NN \__dim_eval:w \etex_dimexpr:D
@@ -8365,6 +8381,8 @@
}
\cs_new:Npn \dim_to_decimal_in_bp:n #1
{ \dim_to_decimal:n { ( #1 ) * 800 / 803 } }
+\cs_new:Npn \dim_to_decimal_in_sp:n #1
+ { \int_eval:n { \__dim_eval:w #1 \__dim_eval_end: } }
\cs_new:Npn \dim_to_decimal_in_unit:nn #1#2
{
\dim_to_decimal:n
@@ -8570,7 +8588,7 @@
%% prior consultation with the LaTeX3 Project.
%%
%% -----------------------------------------------------------------------
-\GetIdInfo$Id: l3keys.dtx 5500 2015-01-27 14:37:04Z joseph $
+\GetIdInfo$Id: l3keys.dtx 5629 2015-06-14 08:38:04Z joseph $
{L3 Key-value interfaces}
\int_new:N \g__keyval_level_int
\tl_new:N \l__keyval_key_tl
@@ -8839,7 +8857,7 @@
\clist_map_inline:nn {#2}
{
\int_incr:N \l_keys_choice_int
- \__keys_cmd_set:nx { \l_keys_path_tl / ##1 }
+ \__keys_cmd_set:nx { \l_keys_path_tl / \tl_to_str:n {##1} }
{
\tl_set:Nn \exp_not:N \l_keys_choice_tl {##1}
\int_set:Nn \exp_not:N \l_keys_choice_int
@@ -9234,14 +9252,14 @@
{ \clist_map_function:nN {#1} \__keys_choice_find:n }
\prg_new_conditional:Npnn \keys_if_exist:nn #1#2 { p , T , F , TF }
{
- \cs_if_exist:cTF { \c__keys_code_root_tl #1 / #2 }
+ \cs_if_exist:cTF { \c__keys_code_root_tl \tl_to_str:n { #1 / #2 } }
{ \prg_return_true: }
{ \prg_return_false: }
}
\prg_new_conditional:Npnn \keys_if_choice_exist:nnn #1#2#3
{ p , T , F , TF }
{
- \cs_if_exist:cTF { \c__keys_code_root_tl #1 / #2 / #3 }
+ \cs_if_exist:cTF { \c__keys_code_root_tl \tl_to_str:n { #1 / #2 / #3 } }
{ \prg_return_true: }
{ \prg_return_false: }
}
@@ -15999,7 +16017,7 @@
%%
%% -----------------------------------------------------------------------
%%
-\GetIdInfo$Id: l3candidates.dtx 5544 2015-03-01 18:30:00Z joseph $
+\GetIdInfo$Id: l3candidates.dtx 5613 2015-05-21 11:59:04Z joseph $
{L3 Experimental additions to l3kernel}
\group_begin:
\tex_lccode:D `? = `: \scan_stop:
@@ -17292,21 +17310,29 @@
\__tl_change_case_output:nwn { #1 {#3} }
#2
}
-\cs_new:Npn \__tl_change_case_cs_expand:Nnw #1#2
+\cs_new:Npn \__tl_change_case_if_expandable:NTF #1
{
- \bool_if:nTF
+ \token_if_expandable:NTF #1
{
- \token_if_expandable_p:N #1
- && ! \token_if_protected_macro_p:N #1
- && ! \token_if_protected_long_macro_p:N #1
+ \bool_if:nTF
+ {
+ \token_if_protected_macro_p:N #1
+ || \token_if_protected_long_macro_p:N #1
+ || \token_if_eq_meaning_p:NN \q_recursion_tail #1
+ }
+ { \use_ii:nn }
+ { \use_i:nn }
}
+ { \use_ii:nn }
+ }
+\cs_new:Npn \__tl_change_case_cs_expand:Nnw #1#2
+ {
+ \__tl_change_case_if_expandable:NTF #1
{ \__tl_change_case_cs_expand:NN #1 }
{ #2 }
}
\cs_new:Npn \__tl_change_case_cs_expand:NN #1#2
{ \exp_after:wN #2 #1 }
-\cs_new:Npn \__tl_change_case_cs_expand:NNnw #1#2#3
- { \__tl_change_case_cs_expand:Nnw #2 {#3} #1 }
\cs_new:Npn \__tl_change_case_lower_sigma:Nnw #1#2#3#4 \q_recursion_stop
{
\int_compare:nNnTF { `#1 } = { "03A3 }
@@ -17319,27 +17345,22 @@
}
\cs_new:Npn \__tl_change_case_lower_sigma:w #1 \q_recursion_stop
{
- \tl_if_head_is_N_type:nTF {#1}
- { \__tl_change_case_lower_sigma:Nw #1 \q_recursion_stop }
- { \c__unicode_final_sigma_tl }
+ \tl_if_head_is_N_type:nTF {#1}
+ { \__tl_change_case_lower_sigma:Nw #1 \q_recursion_stop }
+ { \c__unicode_final_sigma_tl }
}
\cs_new:Npn \__tl_change_case_lower_sigma:Nw #1#2 \q_recursion_stop
{
- \token_if_cs:NTF #1
- { \c__unicode_final_sigma_tl }
+ \__tl_change_case_if_expandable:NTF #1
{
- \exp_after:wN \__tl_change_case_lower_sigma_loop:NN
- \exp_after:wN #1 \l_tl_case_change_after_final_sigma_tl
- \q_recursion_tail \q_recursion_stop
+ \exp_after:wN \__tl_change_case_lower_sigma:w #1
+ #2 \q_recursion_stop
+ }
+ {
+ \token_if_letter:NTF #1
+ { \c__unicode_std_sigma_tl }
+ { \c__unicode_final_sigma_tl }
}
- }
-\cs_new:Npn \__tl_change_case_lower_sigma_loop:NN #1#2
- {
- \quark_if_recursion_tail_stop_do:Nn #2
- { \c__unicode_std_sigma_tl }
- \int_compare:nNnT { `#1 } = { `#2 }
- { \use_i_delimit_by_q_recursion_stop:nw { \c__unicode_final_sigma_tl } }
- \__tl_change_case_lower_sigma_loop:NN #1
}
\cs_new_eq:NN \__tl_change_case_upper_sigma:Nnw \use_ii:nn
\cs_new:Npn \__tl_change_case_lower_tr:Nnw #1#2
@@ -17361,15 +17382,22 @@
}
\cs_new:Npn \__tl_change_case_lower_tr_auxii:Nw #1#2 \q_recursion_stop
{
- \bool_if:nTF
+ \__tl_change_case_if_expandable:NTF #1
{
- \token_if_cs_p:N #1
- || ! ( \int_compare_p:nNn { `#1 } = { "0307 } )
+ \exp_after:wN \__tl_change_case_lower_tr_auxi:Nw #1
+ #2 \q_recursion_stop
}
- { \__tl_change_case_output:Vwn \c__unicode_dotless_i_tl }
{
- \__tl_change_case_output:nwn { i }
- \use_i:nn
+ \bool_if:nTF
+ {
+ \token_if_cs_p:N #1
+ || ! ( \int_compare_p:nNn { `#1 } = { "0307 } )
+ }
+ { \__tl_change_case_output:Vwn \c__unicode_dotless_i_tl }
+ {
+ \__tl_change_case_output:nwn { i }
+ \use_i:nn
+ }
}
}
\cs_new:Npn \__tl_change_case_upper_tr:Nnw #1#2
@@ -17423,18 +17451,25 @@
}
\cs_new:Npn \__tl_change_case_lower_lt:NNw #1#2#3 \q_recursion_stop
{
- \bool_if:nT
+ \__tl_change_case_if_expandable:NTF #2
{
- ! \token_if_cs_p:N #2
- &&
- (
- \int_compare_p:nNn { `#2 } = { "0300 }
- || \int_compare_p:nNn { `#2 } = { "0301 }
- || \int_compare_p:nNn { `#2 } = { "0303 }
- )
+ \exp_after:wN \__tl_change_case_lower_lt:Nw \exp_after:wN #1 #2
+ #3 \q_recursion_stop
+ }
+ {
+ \bool_if:nT
+ {
+ ! \token_if_cs_p:N #2
+ &&
+ (
+ \int_compare_p:nNn { `#2 } = { "0300 }
+ || \int_compare_p:nNn { `#2 } = { "0301 }
+ || \int_compare_p:nNn { `#2 } = { "0303 }
+ )
+ }
+ { \__tl_change_case_output:Vwn \c__unicode_dot_above_tl }
+ #1 #2#3 \q_recursion_stop
}
- { \__tl_change_case_output:Vwn \c__unicode_dot_above_tl }
- #1 #2#3 \q_recursion_stop
}
\cs_new:Npn \__tl_change_case_upper_lt:Nnw #1
{
@@ -17466,14 +17501,21 @@
}
\cs_new:Npn \__tl_change_case_upper_lt:NNw #1#2#3 \q_recursion_stop
{
- \bool_if:nTF
+ \__tl_change_case_if_expandable:NTF #2
+ {
+ \exp_after:wN \__tl_change_case_upper_lt:Nw \exp_after:wN #1 #2
+ #3 \q_recursion_stop
+ }
{
- ! \token_if_cs_p:N #2
- && \int_compare_p:nNn { `#2 } = { "0307 }
+ \bool_if:nTF
+ {
+ ! \token_if_cs_p:N #2
+ && \int_compare_p:nNn { `#2 } = { "0307 }
+ }
+ { #1 }
+ { #1 #2 }
+ #3 \q_recursion_stop
}
- { #1 }
- { #1 #2 }
- #3 \q_recursion_stop
}
\cs_new:Npn \__tl_mixed_case:nn #1#2
{
@@ -17623,21 +17665,28 @@
}
\cs_new:Npn \__tl_change_case_mixed_nl:NNw #1#2#3 \q_recursion_stop
{
- \bool_if:nTF
+ \__tl_change_case_if_expandable:NTF #2
{
- ! ( \token_if_cs_p:N #2 )
- &&
- (
- \int_compare_p:nNn { `#2 } = { `j }
- || \int_compare_p:nNn { `#2 } = { `J }
- )
+ \exp_after:wN \__tl_change_case_mixed_nl:Nw \exp_after:wN #1 #2
+ #3 \q_recursion_stop
}
{
- \__tl_change_case_output:nwn { J }
- #1
+ \bool_if:nTF
+ {
+ ! ( \token_if_cs_p:N #2 )
+ &&
+ (
+ \int_compare_p:nNn { `#2 } = { `j }
+ || \int_compare_p:nNn { `#2 } = { `J }
+ )
+ }
+ {
+ \__tl_change_case_output:nwn { J }
+ #1
+ }
+ { #1 #2 }
+ #3 \q_recursion_stop
}
- { #1 #2 }
- #3 \q_recursion_stop
}
\tl_new:N \l_tl_case_change_math_tl
\tl_set:Nn \l_tl_case_change_math_tl
@@ -17645,15 +17694,6 @@
\tl_new:N \l_tl_case_change_exclude_tl
\tl_set:Nn \l_tl_case_change_exclude_tl
{ \cite \ensuremath \label \ref }
-\tl_new:N \l_tl_case_change_after_final_sigma_tl
-\tl_set:Nx \l_tl_case_change_after_final_sigma_tl
- { % (
- ) % [
- ] % \{
- \cs_to_str:N \}
- . : ; ,
- ! ? ' "
- }
\tl_new:N \l_tl_mixed_case_ignore_tl
\tl_set:Nx \l_tl_mixed_case_ignore_tl
{
diff --git a/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex b/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex
index 1e8738ee241..800066f06ec 100644
--- a/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex
+++ b/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex
@@ -47,8 +47,8 @@
%% -----------------------------------------------------------------------
\def\ExplFileName{expl3}
\def\ExplFileDescription{L3 programming layer}
-\def\ExplFileDate{2015/03/01}
-\def\ExplFileVersion{5547}
+\def\ExplFileDate{2015/06/15}
+\def\ExplFileVersion{5630}
\let\ExplLoaderFileVersion\ExplFileVersion
\begingroup
\def\tempa{LaTeX2e}
diff --git a/Master/texmf-dist/tex/latex/l3kernel/expl3.sty b/Master/texmf-dist/tex/latex/l3kernel/expl3.sty
index a9718fe6985..ce5dc6c34dc 100644
--- a/Master/texmf-dist/tex/latex/l3kernel/expl3.sty
+++ b/Master/texmf-dist/tex/latex/l3kernel/expl3.sty
@@ -47,8 +47,8 @@
%% -----------------------------------------------------------------------
\def\ExplFileName{expl3}
\def\ExplFileDescription{L3 programming layer}
-\def\ExplFileDate{2015/03/01}
-\def\ExplFileVersion{5547}
+\def\ExplFileDate{2015/06/15}
+\def\ExplFileVersion{5630}
\let\ExplLoaderFileVersion\ExplFileVersion
\ProvidesPackage{\ExplFileName}
[%
diff --git a/Master/texmf-dist/tex/latex/l3packages/l3keys2e/l3keys2e.sty b/Master/texmf-dist/tex/latex/l3packages/l3keys2e/l3keys2e.sty
index fa9edcdc7fd..bf54335e6fe 100644
--- a/Master/texmf-dist/tex/latex/l3packages/l3keys2e/l3keys2e.sty
+++ b/Master/texmf-dist/tex/latex/l3packages/l3keys2e/l3keys2e.sty
@@ -13,7 +13,7 @@
%%
%% Do not distribute a modified version of this file.
%%
-%% File: l3keys2e.dtx (C) Copyright 2009,2011-2014 The LaTeX3 Project
+%% File: l3keys2e.dtx (C) Copyright 2009,2011-2015 The LaTeX3 Project
%%
%% It may be distributed and/or modified under the conditions of the
%% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -46,8 +46,8 @@
%%
%% -----------------------------------------------------------------------
%%
-\RequirePackage{expl3}[2014/11/25]
-\@ifpackagelater{expl3}{2014/11/25}
+\RequirePackage{expl3}[2015/06/15]
+\@ifpackagelater{expl3}{2015/06/15}
{}
{%
\PackageError{l3keys2e}{Support package l3kernel too old}
@@ -59,7 +59,7 @@
}%
\endinput
}
-\GetIdInfo$Id: l3keys2e.dtx 5471 2014-11-25 20:11:29Z joseph $
+\GetIdInfo$Id: l3keys2e.dtx 5630 2015-06-15 08:49:02Z joseph $
{LaTeX2e option processing using LaTeX3 keys}
\ProvidesExplPackage
{\ExplFileName}{\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription}
diff --git a/Master/texmf-dist/tex/latex/l3packages/xparse/xparse.sty b/Master/texmf-dist/tex/latex/l3packages/xparse/xparse.sty
index c61f429ac41..14a6ae0329c 100644
--- a/Master/texmf-dist/tex/latex/l3packages/xparse/xparse.sty
+++ b/Master/texmf-dist/tex/latex/l3packages/xparse/xparse.sty
@@ -17,7 +17,7 @@
%% David Carlisle
%% (C) Copyright 2004-2008 Frank Mittelbach,
%% The LaTeX3 Project
-%% (C) Copyright 2009-2014 The LaTeX3 Project
+%% (C) Copyright 2009-2015 The LaTeX3 Project
%%
%% It may be distributed and/or modified under the conditions of the
%% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -50,8 +50,8 @@
%%
%% -----------------------------------------------------------------------
%%
-\RequirePackage{expl3}[2014/11/25]
-\@ifpackagelater{expl3}{2014/11/25}
+\RequirePackage{expl3}[2015/06/15]
+\@ifpackagelater{expl3}{2015/06/15}
{}
{%
\PackageError{xparse}{Support package l3kernel too old}
@@ -63,7 +63,7 @@
}%
\endinput
}
-\GetIdInfo$Id: xparse.dtx 5471 2014-11-25 20:11:29Z joseph $
+\GetIdInfo$Id: xparse.dtx 5630 2015-06-15 08:49:02Z joseph $
{L3 Experimental document command parser}
\ProvidesExplPackage
{\ExplFileName}{\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription}
diff --git a/Master/texmf-dist/tex/latex/l3packages/xtemplate/xtemplate.sty b/Master/texmf-dist/tex/latex/l3packages/xtemplate/xtemplate.sty
index 08e521220b6..880ef38681d 100644
--- a/Master/texmf-dist/tex/latex/l3packages/xtemplate/xtemplate.sty
+++ b/Master/texmf-dist/tex/latex/l3packages/xtemplate/xtemplate.sty
@@ -17,7 +17,7 @@
%% David Carlisle
%% (C) Copyright 2004-2010 Frank Mittelbach,
%% The LaTeX3 Project
-%% (C) Copyright 2011-2014 The LaTeX3 Project
+%% (C) Copyright 2011-2015 The LaTeX3 Project
%%
%% It may be distributed and/or modified under the conditions of the
%% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -50,8 +50,8 @@
%%
%% -----------------------------------------------------------------------
%%
-\RequirePackage{expl3}[2014/11/25]
-\@ifpackagelater{expl3}{2014/11/25}
+\RequirePackage{expl3}[2015/06/15]
+\@ifpackagelater{expl3}{2015/06/15}
{}
{%
\PackageError{xtemplate}{Support package l3kernel too old}
@@ -63,7 +63,7 @@
}%
\endinput
}
-\GetIdInfo$Id: xtemplate.dtx 5471 2014-11-25 20:11:29Z joseph $
+\GetIdInfo$Id: xtemplate.dtx 5630 2015-06-15 08:49:02Z joseph $
{L3 Experimental prototype document functions}
\ProvidesExplPackage
{\ExplFileName}{\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription}