diff options
Diffstat (limited to 'Master')
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 Binary files differindex 790384bc87e..080927cef13 100644 --- a/Master/texmf-dist/doc/latex/l3experimental/l3sort/l3sort.pdf +++ b/Master/texmf-dist/doc/latex/l3experimental/l3sort/l3sort.pdf diff --git a/Master/texmf-dist/doc/latex/l3experimental/l3str/l3flag.pdf b/Master/texmf-dist/doc/latex/l3experimental/l3str/l3flag.pdf Binary files differindex 2f75ee377d0..6cab8f84c5c 100644 --- a/Master/texmf-dist/doc/latex/l3experimental/l3str/l3flag.pdf +++ b/Master/texmf-dist/doc/latex/l3experimental/l3str/l3flag.pdf diff --git a/Master/texmf-dist/doc/latex/l3experimental/l3str/l3regex.pdf b/Master/texmf-dist/doc/latex/l3experimental/l3str/l3regex.pdf Binary files differindex 2179655fa56..ad50345aa43 100644 --- a/Master/texmf-dist/doc/latex/l3experimental/l3str/l3regex.pdf +++ b/Master/texmf-dist/doc/latex/l3experimental/l3str/l3regex.pdf diff --git a/Master/texmf-dist/doc/latex/l3experimental/l3str/l3str-convert.pdf b/Master/texmf-dist/doc/latex/l3experimental/l3str/l3str-convert.pdf Binary files differindex 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 diff --git a/Master/texmf-dist/doc/latex/l3experimental/l3str/l3str-expl.pdf b/Master/texmf-dist/doc/latex/l3experimental/l3str/l3str-expl.pdf Binary files differindex 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 diff --git a/Master/texmf-dist/doc/latex/l3experimental/l3str/l3str-format.pdf b/Master/texmf-dist/doc/latex/l3experimental/l3str/l3str-format.pdf Binary files differindex 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 diff --git a/Master/texmf-dist/doc/latex/l3experimental/l3str/l3tl-analysis.pdf b/Master/texmf-dist/doc/latex/l3experimental/l3str/l3tl-analysis.pdf Binary files differindex 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 diff --git a/Master/texmf-dist/doc/latex/l3experimental/l3str/l3tl-build.pdf b/Master/texmf-dist/doc/latex/l3experimental/l3str/l3tl-build.pdf Binary files differindex 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 diff --git a/Master/texmf-dist/doc/latex/l3experimental/xcoffins/xcoffins.pdf b/Master/texmf-dist/doc/latex/l3experimental/xcoffins/xcoffins.pdf Binary files differindex 1e129931009..95e6bf66805 100644 --- a/Master/texmf-dist/doc/latex/l3experimental/xcoffins/xcoffins.pdf +++ b/Master/texmf-dist/doc/latex/l3experimental/xcoffins/xcoffins.pdf diff --git a/Master/texmf-dist/doc/latex/l3experimental/xgalley/l3galley.pdf b/Master/texmf-dist/doc/latex/l3experimental/xgalley/l3galley.pdf Binary files differindex 8220544f705..c8cfb4556d2 100644 --- a/Master/texmf-dist/doc/latex/l3experimental/xgalley/l3galley.pdf +++ b/Master/texmf-dist/doc/latex/l3experimental/xgalley/l3galley.pdf diff --git a/Master/texmf-dist/doc/latex/l3experimental/xgalley/xgalley.pdf b/Master/texmf-dist/doc/latex/l3experimental/xgalley/xgalley.pdf Binary files differindex e2b6944734f..d11151b5027 100644 --- a/Master/texmf-dist/doc/latex/l3experimental/xgalley/xgalley.pdf +++ b/Master/texmf-dist/doc/latex/l3experimental/xgalley/xgalley.pdf diff --git a/Master/texmf-dist/doc/latex/l3kernel/expl3.pdf b/Master/texmf-dist/doc/latex/l3kernel/expl3.pdf Binary files differindex d30a7c36dd6..1ca6c16c1f7 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/expl3.pdf +++ b/Master/texmf-dist/doc/latex/l3kernel/expl3.pdf diff --git a/Master/texmf-dist/doc/latex/l3kernel/interface3.pdf b/Master/texmf-dist/doc/latex/l3kernel/interface3.pdf Binary files differindex 807cce8a3ac..24c9feb428b 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/interface3.pdf +++ b/Master/texmf-dist/doc/latex/l3kernel/interface3.pdf diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3docstrip.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3docstrip.pdf Binary files differindex a463c33dbd2..928d82e8b01 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/l3docstrip.pdf +++ b/Master/texmf-dist/doc/latex/l3kernel/l3docstrip.pdf diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.pdf Binary files differindex b2d4e58ded8..69fd42d7b68 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.pdf +++ b/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.pdf diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.pdf Binary files differindex 4b02ec0e6c8..1017f718c78 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.pdf +++ b/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.pdf diff --git a/Master/texmf-dist/doc/latex/l3kernel/source3.pdf b/Master/texmf-dist/doc/latex/l3kernel/source3.pdf Binary files differindex f4d15ad01ad..33dc2873c2f 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/source3.pdf +++ b/Master/texmf-dist/doc/latex/l3kernel/source3.pdf 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 Binary files differindex e963057d836..630a6b30367 100644 --- a/Master/texmf-dist/doc/latex/l3packages/l3keys2e/l3keys2e.pdf +++ b/Master/texmf-dist/doc/latex/l3packages/l3keys2e/l3keys2e.pdf diff --git a/Master/texmf-dist/doc/latex/l3packages/xfrac/xfrac.pdf b/Master/texmf-dist/doc/latex/l3packages/xfrac/xfrac.pdf Binary files differindex 38ccd7401d6..e76ec8ded22 100644 --- a/Master/texmf-dist/doc/latex/l3packages/xfrac/xfrac.pdf +++ b/Master/texmf-dist/doc/latex/l3packages/xfrac/xfrac.pdf diff --git a/Master/texmf-dist/doc/latex/l3packages/xparse/xparse.pdf b/Master/texmf-dist/doc/latex/l3packages/xparse/xparse.pdf Binary files differindex 0898a1165bd..ebf9ca5f740 100644 --- a/Master/texmf-dist/doc/latex/l3packages/xparse/xparse.pdf +++ b/Master/texmf-dist/doc/latex/l3packages/xparse/xparse.pdf diff --git a/Master/texmf-dist/doc/latex/l3packages/xtemplate/xtemplate.pdf b/Master/texmf-dist/doc/latex/l3packages/xtemplate/xtemplate.pdf Binary files differindex 3fbd3936077..be97392df9f 100644 --- a/Master/texmf-dist/doc/latex/l3packages/xtemplate/xtemplate.pdf +++ b/Master/texmf-dist/doc/latex/l3packages/xtemplate/xtemplate.pdf 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} |