summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/expl3.pdfbin633438 -> 635678 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/interface3.pdfbin1091513 -> 1100694 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/interface3.tex89
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/l3styleguide.pdfbin265601 -> 265597 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/l3styleguide.tex174
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.pdfbin200418 -> 200416 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.tex80
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/source3.pdfbin2682730 -> 2700007 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/source3.tex106
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/source3body.tex408
-rw-r--r--Master/texmf-dist/makeindex/l3kernel/l3doc.ist72
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/expl3.dtx103
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3.ins71
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3basics.dtx199
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx5
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3box.dtx74
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3clist.dtx93
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx192
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3drivers.dtx20
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3expan.dtx274
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3file.dtx59
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3format.ins77
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp.dtx164
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3int.dtx10
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3io.dtx177
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx14
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3msg.dtx41
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3names.dtx4
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3prg.dtx36
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3prop.dtx14
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3quark.dtx5
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3seq.dtx54
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3skip.dtx83
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3tl.dtx160
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3token.dtx8
-rw-r--r--Master/texmf-dist/tex/latex/l3kernel/expl3.sty90
-rw-r--r--Master/texmf-dist/tex/latex/l3kernel/l3basics.sty28
-rw-r--r--Master/texmf-dist/tex/latex/l3kernel/l3bootstrap.sty2
-rw-r--r--Master/texmf-dist/tex/latex/l3kernel/l3box.sty72
-rw-r--r--Master/texmf-dist/tex/latex/l3kernel/l3clist.sty67
-rw-r--r--Master/texmf-dist/tex/latex/l3kernel/l3coffins.sty170
-rw-r--r--Master/texmf-dist/tex/latex/l3kernel/l3doc.cls2
-rw-r--r--Master/texmf-dist/tex/latex/l3kernel/l3expan.sty33
-rw-r--r--Master/texmf-dist/tex/latex/l3kernel/l3file.sty45
-rw-r--r--Master/texmf-dist/tex/latex/l3kernel/l3fp.sty138
-rw-r--r--Master/texmf-dist/tex/latex/l3kernel/l3int.sty4
-rw-r--r--Master/texmf-dist/tex/latex/l3kernel/l3io.sty51
-rw-r--r--Master/texmf-dist/tex/latex/l3kernel/l3luatex.sty12
-rw-r--r--Master/texmf-dist/tex/latex/l3kernel/l3msg.sty30
-rw-r--r--Master/texmf-dist/tex/latex/l3kernel/l3names.sty4
-rw-r--r--Master/texmf-dist/tex/latex/l3kernel/l3prg.sty6
-rw-r--r--Master/texmf-dist/tex/latex/l3kernel/l3prop.sty8
-rw-r--r--Master/texmf-dist/tex/latex/l3kernel/l3quark.sty4
-rw-r--r--Master/texmf-dist/tex/latex/l3kernel/l3seq.sty40
-rw-r--r--Master/texmf-dist/tex/latex/l3kernel/l3skip.sty22
-rw-r--r--Master/texmf-dist/tex/latex/l3kernel/l3tl.sty86
-rw-r--r--Master/texmf-dist/tex/latex/l3kernel/l3token.sty2
57 files changed, 1730 insertions, 2052 deletions
diff --git a/Master/texmf-dist/doc/latex/l3kernel/expl3.pdf b/Master/texmf-dist/doc/latex/l3kernel/expl3.pdf
index e1a52595ed1..b035b7dda5a 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 8946bdc4320..daacfdf41d7 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/interface3.tex b/Master/texmf-dist/doc/latex/l3kernel/interface3.tex
deleted file mode 100644
index 4c0a2761e92..00000000000
--- a/Master/texmf-dist/doc/latex/l3kernel/interface3.tex
+++ /dev/null
@@ -1,89 +0,0 @@
-% \iffalse meta-comment
-%
-%% File: interfaces3.tex Copyright (C) 1990-2011 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 document will typeset the LaTeX3 interface descriptions a single
-% document. This will produce quite a large file (more than 170 pages
-% currently).
-%
-% There is also a full version of the sources (source3.tex) which additionally
-% also typesets the command implementations.
-%
-% Do not forget to generate the index (as explained on the terminal output
-% near the end of the run)!
-%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-
-\documentclass{l3doc}
-\listfiles
-
-\begin{document}
-
-\title{The \LaTeX3 Interfaces}
-\author{%
- The \LaTeX3 Project\thanks
- {%
- E-mail:
- \href{mailto:latex-team@latex-project.org}
- {latex-team@latex-project.org}%
- }%
-}
-
-\pagenumbering{roman}
-\maketitle
-
-%
-% First load all modules and typeset the documentation parts
-%
-
-\input{source3body} % all the individual modules
-
-\clearpage
-
-\begingroup
- \def\endash{--}
- \catcode`\-\active
- \def-{\futurelet\temp\indexdash}
- \def\indexdash{\ifx\temp-\endash\fi}
- \DelayPrintIndex
-\endgroup
-
-\end{document}
-
-
diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.pdf
index 95e249665b2..0596bde09a5 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/l3styleguide.tex b/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.tex
deleted file mode 100644
index c14d7d8eefd..00000000000
--- a/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.tex
+++ /dev/null
@@ -1,174 +0,0 @@
-\iffalse meta-comment
-
-File l3styleguide.tex Copyright (C) 2011 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.
-
-\fi
-
-\documentclass{l3doc}
-\usepackage{svn-multi}
-
-\svnid{$Id: l3styleguide.tex 2772 2011-09-07 15:07:41Z joseph $}
-\def\filedate{\svnfileyear/\svnfilemonth/\svnfileday}
-
-\title{%
- The \LaTeX3 kernel: style guide for code authors%
- \thanks
- {%
- This file describes v\svnfilerev,
- last revised \filedate.
- }%
-}
-\author{%
- The \LaTeX3 Project\thanks
- {%
- E-mail:
- \href{mailto:latex-team@latex-project.org}%
- {latex-team@latex-project.org}%
- }%
-}
-\date{Released \filedate}
-
-\begin{document}
-
-\maketitle
-
-\tableofcontents
-
-\section{Introduction}
-
-This document is intended as a style guide for authors of code and
-documentation for the \LaTeX3 kernel. It covers both aspects of coding
-style and the formatting of the sources. The aim of providing these
-guidelines is help ensure consistency of the code and sources from
-different authors. Experience suggests that in the long-term this helps
-with maintenance. There will of course be places where there are
-exceptions to these guidelines: common sense should always be
-applied!
-
-\section{Documentation style}
-
-\LaTeX3 source and documentation should be written using the document
-class \cls{l3doc} in \file{dtx} format. This class provides a number
-of logical mark up elements, which should be used where possible.
-In the main, this is standard \LaTeX{} practice, but there are a
-few points to highlight:
-\begin{itemize}
- \item
- Where possible, use \cs{cs} to mark up control sequences
- rather than using a verbatim environment.
- \item
- Arguments which are given in braces should be marked using
- \cs{Arg} when code-level functions are discussed, but using
- \cs{marg} for document functions.
- \item
- The names \TeX{}, \LaTeX{}, \emph{etc}.\ use the normal logical mark
- up followed by an empty group (|{}|), with the exception of |\LaTeX3|,
- where the number should follow directly.
- \item
- Where in line verbatim text is used, it should be marked up
- using the \verb=|...|= construct (\emph{i.e.}~vertical bars delimit
- the verbatim text).
- \item In line quotes should be marked up using the \cs{enquote}
- function.
- \item
- Where numbers in the source have a mathematical meaning,
- they should be included in math mode. Such in-line math mode
- material should be marked up using |$...$| and \emph{not}
- |\(...\)|.
-\end{itemize}
-
-Line length in the source files should to be under $80$
-characters where possible, as this helps keep everything on the screen
-when editing files. In the \file{dtx} format, documentation lines start
-with a \texttt{\%}, which is usually followed by a space to leave a
-\enquote{comment margin} at the start of each line.
-
-As with code indenting (see later), nested environments and arguments
-should be indented by (at least) two spaces to make the nature of the nesting
-clear. Thus for example a typical arrangement for the \env{function}
-environment might be
-\begin{verbatim*}
-\begin{function}{\seq_gclear:N, \seq_gclear:c}
- \begin{syntax}
- \cs{seq_gclear:N} \meta{sequence}
- \end{syntax}
- Clears all entries from the \meta{sequence} globally.
-\end{function}
-\end{verbatim*}
-The \enquote{outer} \verb*|% \begin{function}| should have the customary
-space after the |%| character at the start of the line.
-
-In general, a single \env{function} or \env{macro} environment should be
-used for a group of closely-related functions, for example argument
-specification variants. In such cases, a comma-separated list should be
-used, as shown in the preceding example.
-
-\section{Format of the code itself}
-
-The requirement for less than $80$ characters per line applies to the code
-itself as well as the surrounding documentation. A number of the general
-style principals for \LaTeX3 code apply: these are described in the following
-paragraph and an example is then given.
-
-With the exception of simple runs of parameter (|{#1}|, |#1#2|,
-\emph{etc.}), everything should divided up using spaces to make the code
-more readable. In general, these will be single spaces, but in some
-places it makes more sense to align parts of the code to emphasise
-similarity. (Tabs should not be used for introducing white space.)
-
-Each conceptually-separate step in a function should be on a separate
-line, to make the meaning clearer. Hence the \texttt{false} branch
-in the example uses two lines for the two auxiliary function uses.
-
-Within the definition, a two-space indent should be used to show each
-\enquote{level} of code. Thus in the example \cs{tl_if_empty:nTF} is
-indented by two spaces, but the two branches are indented by four
-spaces. Within the \texttt{false} branch, the need for multiple lines
-means that an additional two-space indent should be used to show that
-these lines are all part of the brace group.
-
-The result of these lay-out conventions is code which will in general
-look like the example:
-\begin{verbatim*}
-\cs_new:Npn \module_foo:nn #1#2
- {
- \tl_if_empty:nTF {#1}
- { \module_foo_aux:n { X #2 } }
- {
- \module_foo_aux:nn {#1} {#2}
- \module_foo_aux:n {#1#2}
- }
- }
-\end{verbatim*}
-
-\section{Code conventions}
-
-When using \cs{cs_generate_variant:Nn}, group related variants together
-to make the pattern clearer. A common example is variants of a function
-which has an \texttt{N}-type first argument:
-\begin{verbatim*}
-\cs_generate_variant:Nn \foo:Nn { NV , No }
-\cs_generate_variant:Nn \foo:Nn { c , cV , co }
-\end{verbatim*}
-
-There are cases where omitting braces from \texttt{o}-type arguments
-is desirable for performance reasons. This should only be done if the
-argument is a single token, thus for example
-\begin{verbatim}
-\tl_set:No \l_some_tl \l_some_other_tl
-\end{verbatim}
-remains clear and can be used where appropriate.
-
-\end{document}
diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.pdf
index fd085d096e0..76a69eaba14 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/l3syntax-changes.tex b/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.tex
deleted file mode 100644
index 31b07550060..00000000000
--- a/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.tex
+++ /dev/null
@@ -1,80 +0,0 @@
-\iffalse meta-comment
-
-File l3syntax-changes.tex Copyright (C) 2011 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.
-
-\fi
-
-\documentclass{l3doc}
-
-\usepackage{svn-multi}
-
-\svnid{$Id: l3syntax-changes.tex 2772 2011-09-07 15:07:41Z joseph $}
-\def\filedate{\svnfileyear/\svnfilemonth/\svnfileday}
-
-\title{%
- Syntax changes in \LaTeX3 functions
- \thanks
- {%
- This file describes v\svnfilerev,
- last revised \filedate.
- }%
-}
-\author{%
- The \LaTeX3 Project\thanks
- {%
- E-mail:
- \href{mailto:latex-team@latex-project.org}%
- {latex-team@latex-project.org}%
- }%
-}
-\date{Released \filedate}
-
-\newcommand{\TF}{\textit{(TF)}}
-
-\begin{document}
-
-\maketitle
-
-This file lists functions whose syntax has changed after August 2011,
-with an approximate date.
-
-\section{August 2011}
-
-\begin{itemize}
- \item \cs{tl_if_single:n\TF} recognized any non-zero number of
- explicit spaces as \meta{true}, and did not ignore trailing spaces.
- Now it is \meta{true} for
- \[
- \meta{optional spaces}
- \meta{normal token or brace group}
- \meta{optional spaces}.
- \]
- \item \cs{tl_reverse:n} stripped outer braces and lost unprotected spaces.
- Now it keeps spaces, leaves unbraced single tokens unbraced, and
- braced groups braced.
- \item \cs{tl_trim_spaces:n} only removed one leading and trailing space.
- Now removes recursively. Also, on the left it used to strip implicit
- and explicit spaces with any character code. Now it strips only explicit
- space characters $(32,10)$.
-\end{itemize}
-
-\section{September 2011}
-
-\begin{itemize}
-\item clist functions which receive an \texttt{n}-type comma list argument
- now trim spaces from each item in the argument.
-\end{itemize}
-
-\end{document} \ No newline at end of file
diff --git a/Master/texmf-dist/doc/latex/l3kernel/source3.pdf b/Master/texmf-dist/doc/latex/l3kernel/source3.pdf
index 021ed067d6f..5cbda1eb6e7 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/source3.tex b/Master/texmf-dist/doc/latex/l3kernel/source3.tex
deleted file mode 100644
index e8b76f8701e..00000000000
--- a/Master/texmf-dist/doc/latex/l3kernel/source3.tex
+++ /dev/null
@@ -1,106 +0,0 @@
-% \iffalse meta-comment
-%
-%% File: source3.tex Copyright (C) 1990-2011 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 document will typeset the LaTeX3 sources as a single document.
-% This will produce quite a large file (more than 400 pages).
-%
-% There is also a shorter version (interface3.tex) that only typesets the
-% command % interface descriptions.
-%
-% Do not forget to generate the index (as explained on the terminal output
-% near the end of the run)!
-%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-\documentclass{l3doc}
-\listfiles
-
-\begin{document}
-
-\title{The \LaTeX3 Sources}
-\author{%
- The \LaTeX3 Project\thanks
- {%
- E-mail:
- \href{mailto:latex-team@latex-project.org}
- {latex-team@latex-project.org}%
- }%
-}
-
-\pagenumbering{roman}
-\maketitle
-
-%
-% First load all modules and typeset the documentation parts
-%
-
-\input{source3body} % all the individual modules
-
-%
-% Now reload all modules and typeset the implementation parts
-%
-
-\part{Implementation}
-
-\def\maketitle{}
-\EnableImplementation
-\DisableDocumentation
-\DocInputAgain
-
-\clearpage
-\pagestyle{headings}
-
-% Make TeX shut up.
-\hbadness=10000
-\newcount\hbadness
-\hfuzz=\maxdimen
-
-\PrintChanges
-\clearpage
-
-\begingroup
- \def\endash{--}
- \catcode`\-\active
- \def-{\futurelet\temp\indexdash}
- \def\indexdash{\ifx\temp-\endash\fi}
-
- \DelayPrintIndex
-\endgroup
-
-\end{document} \ No newline at end of file
diff --git a/Master/texmf-dist/doc/latex/l3kernel/source3body.tex b/Master/texmf-dist/doc/latex/l3kernel/source3body.tex
deleted file mode 100644
index 1c4a797023b..00000000000
--- a/Master/texmf-dist/doc/latex/l3kernel/source3body.tex
+++ /dev/null
@@ -1,408 +0,0 @@
-% \iffalse meta-comment
-%
-%% File: source3body.tex Copyright (C) 1990-2011 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 though 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
- 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}: the plain \TeX{} \cs{edef}.
- \item[\texttt{f}] The \texttt{f} specifier stands for \emph{full
- expansion}, and in contrast to \emph{x} stops at the first
- non-expandable item without trying to execute it.
- \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}{\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}{\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]{\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]{\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]{\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}{\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]{\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}
-
-\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.
-
-\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{l3seq.dtx}
-\DocInput{l3clist.dtx}
-\DocInput{l3prop.dtx}
-\DocInput{l3box.dtx}
-\DocInput{l3coffins.dtx}
-\DocInput{l3color.dtx}
-\DocInput{l3io.dtx}
-\DocInput{l3msg.dtx}
-\DocInput{l3keys.dtx}
-\DocInput{l3file.dtx}
-\DocInput{l3fp.dtx}
-\DocInput{l3luatex.dtx}
-
-\endinput
diff --git a/Master/texmf-dist/makeindex/l3kernel/l3doc.ist b/Master/texmf-dist/makeindex/l3kernel/l3doc.ist
deleted file mode 100644
index 464dc931e12..00000000000
--- a/Master/texmf-dist/makeindex/l3kernel/l3doc.ist
+++ /dev/null
@@ -1,72 +0,0 @@
-%%
-%% This is file `l3doc.ist',
-%% generated with the docstrip utility.
-%%
-%% The original source files were:
-%%
-%% l3doc.dtx (with options: `docist')
-%%
-%%
-%% EXPERIMENTAL CODE
-%%
-%% Do not distribute this file without also distributing the
-%% source files specified above.
-%%
-%% Do not distribute a modified version of this file.
-%%
-%%
-%% File: l3doc.dtx Copyright (C) 1990-2011 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.
-%%
-%% -----------------------------------------------------------------------
-actual '='
-quote '!'
-level '#'
-preamble
-"\n \\begin{theindex} \n \\makeatletter\\scan@allowedfalse\n"
-postamble
-"\n\n \\end{theindex}\n"
-item_x1 "\\efill \n \\subitem "
-item_x2 "\\efill \n \\subsubitem "
-delim_0 "\\pfill "
-delim_1 "\\pfill "
-delim_2 "\\pfill "
-lethead_prefix "{\\bfseries\\hfil "
-lethead_suffix "\\hfil}\\nopagebreak\n"
-lethead_flag 1
-heading_prefix "{\\bfseries\\hfil "
-heading_suffix "\\hfil}\\nopagebreak\n"
-headings_flag 1
-
-page_precedence "rnaA"
-%%
-%%
-%% End of file `l3doc.ist'.
diff --git a/Master/texmf-dist/source/latex/l3kernel/expl3.dtx b/Master/texmf-dist/source/latex/l3kernel/expl3.dtx
index cbdbe3f76ba..0e0e24dbb60 100644
--- a/Master/texmf-dist/source/latex/l3kernel/expl3.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/expl3.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-%% File: expl3.dtx Copyright (C) 1990-2011 The LaTeX3 Project
+%% File: expl3.dtx Copyright (C) 1990-2012 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
@@ -34,11 +34,22 @@
%% -----------------------------------------------------------------------
%
%<*driver|package>
-\RequirePackage{l3names}
+\RequirePackage{l3names}[2011/12/30]
+%<package>\@ifpackagelater{l3names}{2011/12/30}
+%<package> {}
+%<package> {
+%<package> \PackageError{expl3}{Mismatched LaTeX3 packages detected.}
+%<package> {
+%<package> Please install an up to date~version of l3kernel
+%<package> using your TeX package manager or from CTAN.\\ \\
+%<package> Loading expl3 will abort!
+%<package> }
+%<package> \endinput
+%<package> }
\def\ExplFileName{expl3}
\def\ExplFileDescription{L3 Experimental code bundle wrapper}
-\def\ExplFileDate{2011/12/29}
-\def\ExplFileVersion{3109}
+\def\ExplFileDate{2012/01/19}
+\def\ExplFileVersion{3209}
%</driver|package>
%<*driver>
\documentclass[full]{l3doc}
@@ -952,15 +963,14 @@
\RequirePackage{ l3basics, l3expan, l3tl }
% \end{macrocode}
%
-% \begin{macro}{\tl_check_exists:N}
+% \begin{macro}{\cs_check_exists:N}
% When used as a package, there is an option to be picky and to
% check definitions exist. This part of the process is done now, so that
% variable types based on |tl| (for example |clist|, |seq| and |prop|) will
-% inherit
-% the appropriate definitions.
+% inherit the appropriate definitions.
% \begin{macrocode}
\ifodd \l@expl@check@declarations@bool \relax
- \cs_new_protected:Npn \tl_check_exists:N #1
+ \cs_new_protected:Npn \cs_check_exists:N #1
{
\cs_if_exist:NF #1
{
@@ -970,34 +980,34 @@
}
\cs_set_protected:Npn \tl_set:Nn #1#2
{
- \tl_check_exists:N #1
+ \cs_check_exists:N #1
\cs_set_nopar:Npx #1 { \exp_not:n {#2} }
}
\cs_set_protected:Npn \tl_set:Nx #1#2
{
- \tl_check_exists:N #1
+ \cs_check_exists:N #1
\cs_set_nopar:Npx #1 {#2}
}
\cs_set_protected:Npn \tl_gset:Nn #1#2
{
- \tl_check_exists:N #1
+ \cs_check_exists:N #1
\cs_gset_nopar:Npx #1 { \exp_not:n {#2} }
}
\cs_set_protected:Npn \tl_gset:Nx #1#2
{
- \tl_check_exists:N #1
+ \cs_check_exists:N #1
\cs_gset_nopar:Npx #1 {#2}
}
\cs_set_protected:Npn \tl_set_eq:NN #1#2
{
- \tl_check_exists:N #1
- \tl_check_exists:N #2
+ \cs_check_exists:N #1
+ \cs_check_exists:N #2
\cs_set_eq:NN #1 #2
}
\cs_set_protected:Npn \tl_gset_eq:NN #1#2
{
- \tl_check_exists:N #1
- \tl_check_exists:N #2
+ \cs_check_exists:N #1
+ \cs_check_exists:N #2
\cs_gset_eq:NN #1 #2
}
\fi
@@ -1010,7 +1020,66 @@
l3seq,
l3int,
l3quark,
- l3prg,
+ l3prg}
+% \end{macrocode}
+%
+% Booleans are not based on token lists but do need checking: another
+% block of code.
+% \begin{macrocode}
+\ifodd \l@expl@check@declarations@bool \relax
+ \cs_set_protected:Npn \bool_set_true:N #1
+ {
+ \cs_check_exists:N #1
+ \cs_set_eq:NN #1 \c_true_bool
+ }
+ \cs_set_protected:Npn \bool_set_false:N #1
+ {
+ \cs_check_exists:N #1
+ \cs_set_eq:NN #1 \c_false_bool
+ }
+ \cs_set_protected:Npn \bool_gset_true:N #1
+ {
+ \cs_check_exists:N #1
+ \cs_gset_eq:NN #1 \c_true_bool
+ }
+ \cs_set_protected:Npn \bool_gset_false:N #1
+ {
+ \cs_check_exists:N #1
+ \cs_gset_eq:NN #1 \c_false_bool
+ }
+ \cs_set_protected:Npn \bool_set_eq:NN #1
+ {
+ \cs_check_exists:N #1
+ \cs_set_eq:NN #1
+ }
+ \cs_undefine:N \bool_set_eq:cN
+ \cs_undefine:N \bool_set_eq:Nc
+ \cs_undefine:N \bool_set_eq:cc
+ \cs_generate_variant:Nn \bool_set_eq:NN { c , Nc , cc }
+ \cs_set_protected:Npn \bool_gset_eq:NN #1
+ {
+ \cs_check_exists:N #1
+ \cs_set_eq:NN #1
+ }
+ \cs_undefine:N \bool_gset_eq:cN
+ \cs_undefine:N \bool_gset_eq:Nc
+ \cs_undefine:N \bool_gset_eq:cc
+ \cs_generate_variant:Nn \bool_gset_eq:NN { c , Nc , cc }
+ \cs_set_protected:Npn \bool_set:Nn #1#2
+ {
+ \cs_check_exists:N #1
+ \tex_chardef:D #1 = \bool_if_p:n {#2}
+ }
+ \cs_set_protected:Npn \bool_gset:Nn #1#2
+ {
+ \cs_check_exists:N #1
+ \tex_global:D \tex_chardef:D #1 = \bool_if_p:n {#2}
+ }
+\fi
+% \end{macrocode}
+%
+% \begin{macrocode}
+\RequirePackage{
l3clist,
l3token,
l3prop,
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3.ins b/Master/texmf-dist/source/latex/l3kernel/l3.ins
new file mode 100644
index 00000000000..b4048d009e5
--- /dev/null
+++ b/Master/texmf-dist/source/latex/l3kernel/l3.ins
@@ -0,0 +1,71 @@
+\iffalse meta-comment
+
+File l3.ins Copyright (C) 2011 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.
+
+\fi
+
+\input docstrip.tex
+\askforoverwritefalse
+
+\preamble
+
+EXPERIMENTAL CODE
+
+Do not distribute this file without also distributing the
+source files specified above.
+
+Do not distribute a modified version of this file.
+
+\endpreamble
+% stop docstrip adding \endinput
+\postamble
+\endpostamble
+
+\keepsilent
+
+% ===== PACKAGE ONLY ======
+\generate{\file{expl3.sty} {\from{expl3.dtx} {package}}}
+% ========================
+\generate{\file{l3bootstrap.sty}{\from{l3bootstrap.dtx}{package}}}
+\generate{\file{l3names.sty} {\from{l3names.dtx} {package}}}
+\generate{\file{l3basics.sty} {\from{l3basics.dtx} {package}}}
+\generate{\file{l3expan.sty} {\from{l3expan.dtx} {package}}}
+\generate{\file{l3tl.sty} {\from{l3tl.dtx} {package}}}
+\generate{\file{l3seq.sty} {\from{l3seq.dtx} {package}}}
+\generate{\file{l3int.sty} {\from{l3int.dtx} {package}}}
+\generate{\file{l3quark.sty} {\from{l3quark.dtx} {package}}}
+\generate{\file{l3prg.sty} {\from{l3prg.dtx} {package}}}
+\generate{\file{l3clist.sty} {\from{l3clist.dtx} {package}}}
+\generate{\file{l3token.sty} {\from{l3token.dtx} {package}}}
+\generate{\file{l3prop.sty} {\from{l3prop.dtx} {package}}}
+\generate{\file{l3msg.sty} {\from{l3msg.dtx} {package}}}
+\generate{\file{l3io.sty} {\from{l3io.dtx} {package}}}
+\generate{\file{l3file.sty} {\from{l3file.dtx} {package}}}
+\generate{\file{l3skip.sty} {\from{l3skip.dtx} {package}}}
+\generate{\file{l3keys.sty} {\from{l3keys.dtx} {package}}}
+\generate{\file{l3fp.sty} {\from{l3fp.dtx} {package}}}
+\generate{\file{l3box.sty} {\from{l3box.dtx} {package}}}
+\generate{\file{l3coffins.sty} {\from{l3coffins.dtx} {package}}}
+\generate{\file{l3color.sty} {\from{l3color.dtx} {package}}}
+\generate{\file{l3luatex.sty} {\from{l3luatex.dtx} {package}}}
+
+\generate{\file{l3doc.cls} {\from{l3doc.dtx} {class}}}
+\generate{\file{l3doc.ist} {\from{l3doc.dtx} {docist}}}
+
+\generate{\file{l3dvips.def} {\from{l3drivers.dtx}{package,dvips} }}
+\generate{\file{l3pdfmode.def} {\from{l3drivers.dtx}{package,pdfmode} }}
+\generate{\file{l3xdvipdfmx.def}{\from{l3drivers.dtx}{package,xdvipdfmx}}}
+
+\endbatchfile
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx b/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx
index c6f643eb75a..9a2b94c4a3e 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-%% File: l3basics.dtx Copyright (C) 1990-2011 The LaTeX3 project
+%% File: l3basics.dtx Copyright (C) 1990-2012 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
@@ -35,7 +35,7 @@
%
%<*driver|package>
\RequirePackage{l3names}
-\GetIdInfo$Id: l3basics.dtx 3090 2011-12-23 03:12:53Z bruno $
+\GetIdInfo$Id: l3basics.dtx 3196 2012-01-15 09:44:05Z joseph $
{L3 Experimental basic definitions}
%</driver|package>
%<*driver>
@@ -148,6 +148,41 @@
% The name of a function can be checked at the point of definition using
% the \cs{cs_new\ldots} functions: this is recommended for all
% functions which are defined for the first time.
+%
+% There are three ways to define new functions.
+% All classes define a function to expand to the substitution text.
+% Within the substitution text the actual parameters are substituted
+% for the formal parameters (|#1|, |#2|, \ldots).
+% \begin{description}
+% \item[\texttt{new}]
+% Create a new function with the \texttt{new} primitives,
+% such as \cs{cs_new:Npn}. The definition is global and will result in
+% an error if it is already defined.
+% \item[\texttt{set}]
+% Create a new function with the \texttt{set} primitives,
+% such as \cs{cs_set:Npn}. The definition is restricted to the current
+% \TeX{} group and will not result in an error if the function is already
+% defined.
+% \item[\texttt{gset}]
+% Create a new function with the \texttt{gset} primitives,
+% such as \cs{cs_gset:Npn}. The definition is global and
+% will not result in an error if the function is already defined.
+% \end{description}
+%
+% Within each set of primitives there are different ways to define a function.
+% The differences depend on restrictions on the actual parameters and
+% the expandability of the resulting function.
+% \begin{description}
+% \item[\texttt{nopar}]
+% Create a new function with the \texttt{nopar} primitives,
+% such as \cs{cs_set_nopar:Npn}. The parameter may not contain
+% \cs{par} tokens.
+% \item[\texttt{protected}]
+% Create a new function with the \texttt{protected} primitives,
+% such as \cs{cs_set_protected:Npn}. The parameter may contain
+% \cs{par} tokens but the function will not expand within an
+% \texttt{x}-type expansion.
+% \end{description}
%
% \subsection{Defining new functions using primitive parameter text}
%
@@ -184,8 +219,7 @@
% \cs_new_protected:Npx, \cs_new_protected:cpx
% }
% \begin{syntax}
-% \cs{cs_new_protected:Npn} \meta{function} \meta{parameters}
-% ~~\Arg{code}
+% \cs{cs_new_protected:Npn} \meta{function} \meta{parameters} \Arg{code}
% \end{syntax}
% Creates \meta{function} to expand to \meta{code} as replacement text.
% Within the \meta{code}, the \meta{parameters} (|#1|, |#2|,
@@ -548,8 +582,12 @@
% The assignment of a meaning to \meta{function} is global.
% \end{function}
%
-% \begin{function}[updated = 2011-09-05]
-% {\cs_generate_from_arg_count:NNnn, \cs_generate_from_arg_count:cNnn}
+% \begin{function}[updated = 2012-01-14]
+% {
+% \cs_generate_from_arg_count:NNnn,
+% \cs_generate_from_arg_count:cNnn,
+% \cs_generate_from_arg_count:Ncnn
+% }
% \begin{syntax}
% \cs{cs_generate_from_arg_count:NNnn} \meta{function} \meta{creator} \meta{number} \meta{code}
% \end{syntax}
@@ -567,7 +605,7 @@
% here. Making two control sequences equivalent means that the
% second control sequence is a \emph{copy} of the first (rather than
% a pointer to it). Thus the old and new control sequence are not
-% tided together: changes to one are not reflected in the other.
+% tied together: changes to one are not reflected in the other.
%
% In the following text \enquote{cs} is used as an abbreviation for
% \enquote{control sequence}.
@@ -767,11 +805,14 @@
%
% \begin{function}[EXP]{\use_i:nn, \use_ii:nn}
% \begin{syntax}
-% \cs{use_i:nn} \Arg{group1} \Arg{group2}
-% \end{syntax}
-% These functions will absorb two groups and leave only the
-% first or the second in the input stream. The braces surrounding the
-% arguments will be removed as part of this process. The category code
+% \cs{use_i:nn} \Arg{arg1} \Arg{arg2}
+% \end{syntax}
+% These functions absorb two arguments from the input stream. The function
+% \cs{use_i:nn} discards the second argument, and leaves the content
+% of the first argument in the input stream. \cs{use_ii:nn} discards
+% the first argument and leaves the content of the second argument in
+% the input stream.
+% The category code
% of these tokens will also be fixed (if it has not already been by
% some other absorption). A single expansion is needed for the
% functions to take effect.
@@ -779,36 +820,42 @@
%
% \begin{function}[EXP]{\use_i:nnn, \use_ii:nnn, \use_iii:nnn}
% \begin{syntax}
-% \cs{use_i:nnn} \Arg{group1} \Arg{group2} \Arg{group3}
+% \cs{use_i:nnn} \Arg{arg1} \Arg{arg2} \Arg{arg3}
% \end{syntax}
-% These functions will absorb three groups and leave only of these
-% in the input stream. The braces surrounding the arguments will be
-% removed as part of this process. The category code of these tokens
-% will also be fixed (if it has not already been by some other
-% absorption). A single expansion is needed for the functions to take
-% effect.
+% These functions absorb three arguments from the input stream. The
+% function \cs{use_i:nnn} discards the second and third arguments, and
+% leaves the content of the first argument in the input stream.
+% \cs{use_ii:nnn} and \cs{use_iii:nnn} work similarly, leaving the
+% content of second or third arguments in the input stream, respectively.
+% The category code
+% of these tokens will also be fixed (if it has not already been by
+% some other absorption). A single expansion is needed for the
+% functions to take effect.
% \end{function}
%
% \begin{function}[EXP]
% {\use_i:nnnn, \use_ii:nnnn, \use_iii:nnnn, \use_iv:nnnn}
% \begin{syntax}
-% \cs{use_i:nnnn} \Arg{group1} \Arg{group2} \Arg{group3} \Arg{group4}
+% \cs{use_i:nnnn} \Arg{arg1} \Arg{arg2} \Arg{arg3} \Arg{arg4}
% \end{syntax}
-% These functions will absorb four groups and leave only of these
-% in the input stream. The braces surrounding the arguments will be
-% removed as part of this process. The category code of these tokens
-% will also be fixed (if it has not already been by some other
-% absorption). A single expansion is needed for the functions to take
-% effect.
+% These functions absorb four arguments from the input stream. The
+% function \cs{use_i:nnnn} discards the second, third and fourth
+% arguments, and leaves the content of the first argument in the input
+% stream.
+% \cs{use_ii:nnnn}, \cs{use_iii:nnnn} and \cs{use_iv:nnnn} work similarly,
+% leaving the content of second, third or fourth arguments in the input
+% stream, respectively. The category code
+% of these tokens will also be fixed (if it has not already been by
+% some other absorption). A single expansion is needed for the
+% functions to take effect.
% \end{function}
%
% \begin{function}[EXP]{\use_i_ii:nnn}
% \begin{syntax}
-% \cs{use_i_ii:nnn} \Arg{group1} \Arg{group2} \Arg{group3}
+% \cs{use_i_ii:nnn} \Arg{arg1} \Arg{arg2} \Arg{arg3}
% \end{syntax}
-% This functions will absorb three groups and leave the first and
-% second in the input stream. The braces surrounding the arguments
-% will be removed as part of this process. The category code of
+% This functions will absorb three arguments and leave the content of the
+% first and second in the input stream. The category code of
% these tokens will also be fixed (if it has not already been by
% some other absorption). A single expansion is needed for the
% functions to take effect. An example:
@@ -845,13 +892,13 @@
% (\emph{i.e.}~an \texttt{N} argument).
% \end{function}
%
-% \begin{function}{\use:x}
+% \begin{function}[updated = 2011-12-31]{\use:x}
% \begin{syntax}
% \cs{use:x} \Arg{expandable tokens}
% \end{syntax}
% Fully expands the \meta{expandable tokens} and inserts the
% result into the input stream at the current location.
-% Any hash characters ("#") in the argument must be doubled.
+% Any hash characters (|#|) in the argument must be doubled.
% \end{function}
%
% \subsection{Selecting tokens from delimited arguments}
@@ -867,8 +914,10 @@
% }
% \begin{syntax}
% \cs{use_none_delimit_by_q_nil:w} \meta{balanced text} \cs{q_nil}
+% \cs{use_none_delimit_by_q_stop:w} \meta{balanced text} \cs{q_stop}
+% \cs{use_none_delimit_by_q_recursion_stop:w} \meta{balanced text} \cs{q_recursion_stop}
% \end{syntax}
-% Absorb the \meta{balanced} text form the input stream delimited by
+% Absorb the \meta{balanced text} form the input stream delimited by
% the marker given in the function name, leaving nothing in the
% input stream.
% \end{function}
@@ -880,10 +929,11 @@
% \use_i_delimit_by_q_recursion_stop:nw
% }
% \begin{syntax}
-% \cs{use_i_delimit_by_q_nil:nw} \Arg{inserted tokens}
-% ~~\meta{balanced text} \cs{q_nil}
+% \cs{use_i_delimit_by_q_nil:nw} \Arg{inserted tokens} \meta{balanced text} \cs{q_nil}
+% \cs{use_i_delimit_by_q_stop:nw} \Arg{inserted tokens} \meta{balanced text} \cs{q_stop}
+% \cs{use_i_delimit_by_q_recursion_stop:nw} \Arg{inserted tokens} \meta{balanced text} \cs{q_recursion_stop}
% \end{syntax}
-% Absorb the \meta{balanced} text form the input stream delimited by
+% Absorb the \meta{balanced text} form the input stream delimited by
% the marker given in the function name, leaving \meta{inserted tokens}
% in the input stream for further processing.
% \end{function}
@@ -894,8 +944,8 @@
% \begin{syntax}
% \cs{cs_get_arg_count_from_signature:N} \meta{function}
% \end{syntax}
-% Splits the \meta{function} into the name (\emph{i.e.}~the part
-% before the colon) and the signature (\emph{i.e.}~after the colon).
+% Splits the \meta{function} into the \meta{name} (\emph{i.e.}~the part
+% before the colon) and the \meta{signature} (\emph{i.e.}~after the colon).
% The \meta{number} of tokens in the \meta{signature} is then left in
% the input stream. If there was no \meta{signature} then the result is
% the marker value $-1$.
@@ -905,8 +955,8 @@
% \begin{syntax}
% \cs{cs_get_function_name:N} \meta{function}
% \end{syntax}
-% Splits the \meta{function} into the name (\emph{i.e.}~the part
-% before the colon) and the signature (\emph{i.e.}~after the colon).
+% Splits the \meta{function} into the \meta{name} (\emph{i.e.}~the part
+% before the colon) and the \meta{signature} (\emph{i.e.}~after the colon).
% The \meta{name} is then left in the input stream without the escape
% character present made up of tokens with category code $12$
% (other).
@@ -916,8 +966,8 @@
% \begin{syntax}
% \cs{cs_get_function_signature:N} \meta{function}
% \end{syntax}
-% Splits the \meta{function} into the name (\emph{i.e.}~the part
-% before the colon) and the signature (\emph{i.e.}~after the colon).
+% Splits the \meta{function} into the \meta{name} (\emph{i.e.}~the part
+% before the colon) and the \meta{signature} (\emph{i.e.}~after the colon).
% The \meta{signature} is then left in the input stream made up of
% tokens with category code $12$ (other).
% \end{function}
@@ -926,8 +976,8 @@
% \begin{syntax}
% \cs{cs_split_function:NN} \meta{function} \meta{processor}
% \end{syntax}
-% Splits the \meta{function} into the name (\emph{i.e.}~the part
-% before the colon) and the signature (\emph{i.e.}~after the colon).
+% Splits the \meta{function} into the \meta{name} (\emph{i.e.}~the part
+% before the colon) and the \meta{signature} (\emph{i.e.}~after the colon).
% This information is then placed in the input stream after the
% \meta{processor} function in three parts: the \meta{name}, the
% \meta{signature} and a logic token indicating if a colon was found
@@ -945,12 +995,12 @@
% \begin{description}
% \item[Branching conditionals]
% Functions that carry out a test and then execute, depending on its
-% result, either the code supplied in the \meta{true arg} or the
-% \meta{false arg}.
+% result, either the code supplied as the \meta{true code} or the
+% \meta{false code}.
% These arguments are denoted with |T| and |F|, respectively. An
% example would be
% \begin{quote}
-% |\cs_if_free:cTF{abc}| \Arg{true code} \Arg{false code}
+% |\cs_if_free:cTF {abc}| \Arg{true code} \Arg{false code}
% \end{quote}
% a function that will turn the first argument into a control sequence
% (since it's marked as |c|) then checks whether this control sequence
@@ -1019,7 +1069,8 @@
% \cs{cs_if_eq:NNTF} \Arg{cs1} \Arg{cs2} \Arg{true code} \Arg{false code}
% \end{syntax}
% Compares the definition of two \meta{control sequences} and
-% is logically \texttt{true} if the two are the same.
+% is logically \texttt{true} the same, \emph{i.e.}~if the have exactly
+% the same definition when examined with \cs{cs_show:N}.
% \end{function}
%
% \begin{function}[EXP,pTF]{\cs_if_exist:N, \cs_if_exist:c}
@@ -1129,7 +1180,7 @@
% <arg1> and <arg2> could be functions, variables, tokens; in all cases the
% \emph{unexpanded} definitions are compared.
% \begin{texnote}
-% This is \TeX's |\ifx|.
+% This is \TeX{}'s |\ifx|.
% \end{texnote}
% \end{function}
%
@@ -1197,11 +1248,6 @@
% \begin{syntax}
% \cs{cs_if_exist_use:NTF} \meta{control sequence} \Arg{true code} \Arg{false code}
% \end{syntax}
-% \begin{function}[EXP,added=2011-10-10]
-% {\cs_if_exist_use:N, \cs_if_exist_use:c}
-% \begin{syntax}
-% \cs{cs_if_exist_use:N} \meta{control sequence}
-% \end{syntax}
% If the \meta{control sequence} exists, leave it in the input stream,
% followed by the \meta{true code} (unbraced). Otherwise, leave the
% \meta{false} code in the input stream. For example,
@@ -1217,7 +1263,6 @@
% in the hash table if it is not there.
% \end{texnote}
% \end{function}
-% \end{function}
%
% \end{documentation}
%
@@ -1548,19 +1593,14 @@
% \end{macro}
%
% \begin{macro}{\use:x}
-% \begin{macro}[aux]{\cs_tmp:w}
-% Fully expands its argument and passes it to the input stream.
-% Uses |\cs_tmp:w| as a scratch register but does not affect it.
+% Fully expands its argument and passes it to the input stream. Uses
+% the reserved \cs{l_exp_internal_tl} which will be set up in \pkg{l3expan}.
% \begin{macrocode}
\cs_set_protected:Npn \use:x #1
{
- \group_begin:
- \cs_set_nopar:Npx \cs_tmp:w {#1}
- \exp_after:wN
- \group_end:
- \cs_tmp:w
+ \cs_set_nopar:Npx \l_exp_internal_tl {#1}
+ \l_exp_internal_tl
}
-\cs_set:Npn \cs_tmp:w { }
% \end{macrocode}
% \end{macro}
%
@@ -2194,7 +2234,6 @@
}
% \end{macrocode}
% \end{macro}
-% \end{macro}
%
% \begin{macro}[pTF]{\cs_if_free:N,\cs_if_free:c}
% The logical reversal of the above.
@@ -2642,7 +2681,12 @@
% \end{macro}
% \end{macro}
%
-% \begin{macro}[aux]{\cs_generate_from_arg_count:NNnn}
+% \begin{macro}[aux]
+% {
+% \cs_generate_from_arg_count:NNnn,
+% \cs_generate_from_arg_count:cNnn,
+% \cs_generate_from_arg_count:Ncnn
+% }
% \begin{macro}[aux]{\cs_generate_from_arg_count_error_msg:Nn}
% \begin{macro}[aux]{\cs_generate_from_arg_count_aux:nwn}
% We provide a constructor function for defining functions with a
@@ -2680,15 +2724,18 @@
\cs_generate_from_arg_count_aux:nwn #1 #2 \fi: #3
{ \fi: #3 #1 }
% \end{macrocode}
-% A variant form we need right away.
+% A variant form we need right away, plus one which is used elsewhere but
+% which is most logically created here.
% \begin{macrocode}
-\cs_new_nopar:Npn \cs_generate_from_arg_count:cNnn
+\cs_new_protected_nopar:Npn \cs_generate_from_arg_count:cNnn
{ \exp_args:Nc \cs_generate_from_arg_count:NNnn }
+\cs_new_protected_nopar:Npn \cs_generate_from_arg_count:Ncnn
+ { \exp_args:NNc \cs_generate_from_arg_count:NNnn }
% \end{macrocode}
% The error message. Elsewhere we use the value of $-1$ to signal a
% missing colon in a function, so provide a hint for help on this.
% \begin{macrocode}
-\cs_new:Npn \cs_generate_from_arg_count_error_msg:Nn #1#2
+\cs_new_protected:Npn \cs_generate_from_arg_count_error_msg:Nn #1#2
{
\msg_kernel_error:nnxx { kernel } { bad-number-of-arguments }
{ \token_to_str:N #1 } { \int_eval:n {#2} }
@@ -2936,7 +2983,7 @@
\cs_new:Npn \kernel_register_show:N #1
{
\cs_if_exist:NTF #1
- { \tex_showthe:D #1 }
+ { \tex_showthe:D \use:n #1 }
{
\msg_kernel_error:nnx { kernel } { variable-not-defined }
{ \token_to_str:N #1 }
@@ -3092,7 +3139,7 @@
%</deprecated>
% \end{macrocode}
%
-% Deprecated 2011-09-06, for removal by 2012-09-05.
+% Deprecated 2011-09-06, for removal by 2011-12-31.
%
% \begin{macro}
% {
@@ -3101,14 +3148,14 @@
% }
% Predicates are better
% \begin{macrocode}
+%<*deprecated>
\cs_new_eq:NN \c_luatex_is_engine_bool \luatex_if_engine_p:
\cs_new_eq:NN \c_pdftex_is_engine_bool \pdftex_if_engine_p:
\cs_new_eq:NN \c_xetex_is_engine_bool \xetex_if_engine_p:
+%</deprecated>
% \end{macrocode}
% \end{macro}
%
-% Deprecated 2011-09-06, for removal by 2012-10-06.
-%
% \begin{macro}{\use_i_after_fi:nw}
% \begin{macro}{\use_i_after_else:nw}
% \begin{macro}{\use_i_after_or:nw}
@@ -3117,21 +3164,25 @@
% This is rather specialized, and we want to de-emphasize the use of
% primitive \TeX{} conditionals.
% \begin{macrocode}
+%<*deprecated>
\cs_set:Npn \use_i_after_fi:nw #1 \fi: { \fi: #1 }
\cs_set:Npn \use_i_after_else:nw #1 \else: #2 \fi: { \fi: #1 }
\cs_set:Npn \use_i_after_or:nw #1 \or: #2 \fi: { \fi: #1 }
\cs_set:Npn \use_i_after_orelse:nw #1#2#3 \fi: { \fi: #1 }
+%</deprecated>
% \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
%
-% Deprecated 2011-09-07, for removal by 2011-10-07.
+% Deprecated 2011-09-07, for removal by 2011-12-31.
%
% \begin{macro}{\cs_set_eq:NwN}
% \begin{macrocode}
+%<*deprecated>
\tex_let:D \cs_set_eq:NwN \tex_let:D
+%</deprecated>
% \end{macrocode}
% \end{macro}
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx b/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx
index ad4f1d1eb69..43b2d11689f 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx
@@ -83,7 +83,7 @@
{\def\ExplFileDate{#2}}
\protected\def\GetIdInfoAuxSVN#1\relax#2-#3-#4\relax#5Z\relax
{\def\ExplFileDate{#2/#3/#4}}
-\GetIdInfo$Id: l3bootstrap.dtx 3006 2011-11-25 13:29:59Z joseph $
+\GetIdInfo$Id: l3bootstrap.dtx 3110 2011-12-29 14:23:48Z joseph $
{L3 experimental bootstrap code}
%</package>
%<*driver>
@@ -186,7 +186,8 @@
% details. If you use the \cs{GetIdInfo} command you can use the
% information when loading a package with
% \begin{verbatim}
-% \ProvidesExplPackage{\ExplFileName}{\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription}
+% \ProvidesExplPackage{\ExplFileName}
+% {\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription}
% \end{verbatim}
%
% \end{documentation}
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3box.dtx b/Master/texmf-dist/source/latex/l3kernel/l3box.dtx
index 89e41ce8b8b..d00cad8139b 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3box.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3box.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-%% File: l3box.dtx Copyright (C) 2005-2011 The LaTeX3 Project
+%% File: l3box.dtx Copyright (C) 2005-2012 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
@@ -35,7 +35,7 @@
%
%<*driver|package>
\RequirePackage{l3names}
-\GetIdInfo$Id: l3box.dtx 3086 2011-12-22 17:55:46Z bruno $
+\GetIdInfo$Id: l3box.dtx 3158 2012-01-09 00:47:42Z bruno $
{L3 Experimental boxes}
%</driver|package>
%<*driver>
@@ -1403,11 +1403,11 @@
% \end{macrocode}
% \end{variable}
%
-% \begin{variable}{\l_box_tmp_box, \l_box_tmp_fp}
+% \begin{variable}{\l_box_internal_box, \l_box_internal_fp}
% Scratch space.
% \begin{macrocode}
-\box_new:N \l_box_tmp_box
-\fp_new:N \l_box_tmp_fp
+\box_new:N \l_box_internal_box
+\fp_new:N \l_box_internal_fp
% \end{macrocode}
% \end{variable}
%
@@ -1521,14 +1521,14 @@
% content of the box is moved such that the reference point of the
% rotated box will be in the same place as the original.
% \begin{macrocode}
- \hbox_set:Nn \l_box_tmp_box { \box_use:N #1 }
- \hbox_set:Nn \l_box_tmp_box
+ \hbox_set:Nn \l_box_internal_box { \box_use:N #1 }
+ \hbox_set:Nn \l_box_internal_box
{
\tex_kern:D -\l_box_left_new_dim
\hbox:n
{
\driver_box_rotate_begin:
- \box_use:N \l_box_tmp_box
+ \box_use:N \l_box_internal_box
\driver_box_rotate_end:
}
}
@@ -1537,11 +1537,11 @@
% the bounding box. The result can then be used to reset the original
% box.
% \begin{macrocode}
- \box_set_ht:Nn \l_box_tmp_box { \l_box_top_new_dim }
- \box_set_dp:Nn \l_box_tmp_box { -\l_box_bottom_new_dim }
- \box_set_wd:Nn \l_box_tmp_box
+ \box_set_ht:Nn \l_box_internal_box { \l_box_top_new_dim }
+ \box_set_dp:Nn \l_box_internal_box { -\l_box_bottom_new_dim }
+ \box_set_wd:Nn \l_box_internal_box
{ \l_box_right_new_dim - \l_box_left_new_dim }
- \box_use:N \l_box_tmp_box
+ \box_use:N \l_box_internal_box
}
% \end{macrocode}
% \end{macro}
@@ -1551,11 +1551,11 @@
% \begin{macrocode}
\cs_new_protected:Npn \box_rotate_set_sin_cos:
{
- \fp_set_eq:NN \l_box_tmp_fp \l_box_angle_fp
- \fp_div:Nn \l_box_tmp_fp { 180 }
- \fp_mul:Nn \l_box_tmp_fp { \c_pi_fp }
- \fp_sin:Nn \l_box_sin_fp { \l_box_tmp_fp }
- \fp_cos:Nn \l_box_cos_fp { \l_box_tmp_fp }
+ \fp_set_eq:NN \l_box_internal_fp \l_box_angle_fp
+ \fp_div:Nn \l_box_internal_fp { 180 }
+ \fp_mul:Nn \l_box_internal_fp { \c_pi_fp }
+ \fp_sin:Nn \l_box_sin_fp { \l_box_internal_fp }
+ \fp_cos:Nn \l_box_cos_fp { \l_box_internal_fp }
}
% \end{macrocode}
% These functions take a general point $(|#1|, |#2|)$ and rotate its
@@ -1572,10 +1572,10 @@
\fp_set_from_dim:Nn \l_box_x_fp {#1}
\fp_set_from_dim:Nn \l_box_y_fp {#2}
\fp_set_eq:NN \l_box_x_new_fp \l_box_x_fp
- \fp_set_eq:NN \l_box_tmp_fp \l_box_y_fp
+ \fp_set_eq:NN \l_box_internal_fp \l_box_y_fp
\fp_mul:Nn \l_box_x_new_fp { \l_box_cos_fp }
- \fp_mul:Nn \l_box_tmp_fp { \l_box_sin_fp }
- \fp_sub:Nn \l_box_x_new_fp { \l_box_tmp_fp }
+ \fp_mul:Nn \l_box_internal_fp { \l_box_sin_fp }
+ \fp_sub:Nn \l_box_x_new_fp { \l_box_internal_fp }
\dim_set:Nn #3 { \fp_to_dim:N \l_box_x_new_fp }
}
\cs_new_protected:Npn \box_rotate_y:nnN #1#2#3
@@ -1583,10 +1583,10 @@
\fp_set_from_dim:Nn \l_box_x_fp {#1}
\fp_set_from_dim:Nn \l_box_y_fp {#2}
\fp_set_eq:NN \l_box_y_new_fp \l_box_y_fp
- \fp_set_eq:NN \l_box_tmp_fp \l_box_x_fp
+ \fp_set_eq:NN \l_box_internal_fp \l_box_x_fp
\fp_mul:Nn \l_box_y_new_fp { \l_box_cos_fp }
- \fp_mul:Nn \l_box_tmp_fp { \l_box_sin_fp }
- \fp_add:Nn \l_box_y_new_fp { \l_box_tmp_fp }
+ \fp_mul:Nn \l_box_internal_fp { \l_box_sin_fp }
+ \fp_add:Nn \l_box_y_new_fp { \l_box_internal_fp }
\dim_set:Nn #3 { \fp_to_dim:N \l_box_y_new_fp }
}
% \end{macrocode}
@@ -1675,15 +1675,15 @@
% new width divided by the old one.
% \begin{macrocode}
\fp_set_from_dim:Nn \l_box_scale_x_fp {#2}
- \fp_set_from_dim:Nn \l_box_tmp_fp { \l_box_right_dim }
- \fp_div:Nn \l_box_scale_x_fp { \l_box_tmp_fp }
+ \fp_set_from_dim:Nn \l_box_internal_fp { \l_box_right_dim }
+ \fp_div:Nn \l_box_scale_x_fp { \l_box_internal_fp }
% \end{macrocode}
% The $y$-scaling needs both the height and the depth of the current box.
% \begin{macrocode}
\fp_set_from_dim:Nn \l_box_scale_y_fp {#3}
- \fp_set_from_dim:Nn \l_box_tmp_fp
+ \fp_set_from_dim:Nn \l_box_internal_fp
{ \l_box_top_dim - \l_box_bottom_dim }
- \fp_div:Nn \l_box_scale_y_fp { \l_box_tmp_fp }
+ \fp_div:Nn \l_box_scale_y_fp { \l_box_internal_fp }
% \end{macrocode}
% At this stage, check for trivial scaling. If both scalings are unity, then
% the code does nothing. Otherwise, pass on to the auxiliary function to
@@ -1751,9 +1751,9 @@
\dim_set:Nn \l_box_right_dim { \box_wd:N #1 }
\dim_zero:N \l_box_left_dim
\fp_set_from_dim:Nn \l_box_scale_y_fp {#2}
- \fp_set_from_dim:Nn \l_box_tmp_fp
+ \fp_set_from_dim:Nn \l_box_internal_fp
{ \l_box_top_dim - \l_box_bottom_dim }
- \fp_div:Nn \l_box_scale_y_fp { \l_box_tmp_fp }
+ \fp_div:Nn \l_box_scale_y_fp { \l_box_internal_fp }
\fp_set_eq:NN \l_box_scale_x_fp \l_box_scale_y_fp
\fp_compare:NNNTF \l_box_scale_y_fp = \c_one_fp
{ \box_use:N #1 }
@@ -1772,8 +1772,8 @@
\dim_set:Nn \l_box_right_dim { \box_wd:N #1 }
\dim_zero:N \l_box_left_dim
\fp_set_from_dim:Nn \l_box_scale_x_fp {#2}
- \fp_set_from_dim:Nn \l_box_tmp_fp { \l_box_right_dim }
- \fp_div:Nn \l_box_scale_x_fp { \l_box_tmp_fp }
+ \fp_set_from_dim:Nn \l_box_internal_fp { \l_box_right_dim }
+ \fp_div:Nn \l_box_scale_x_fp { \l_box_internal_fp }
\fp_set_eq:NN \l_box_scale_y_fp \l_box_scale_x_fp
\fp_compare:NNNTF \l_box_scale_x_fp = \c_one_fp
{ \box_use:N #1 }
@@ -1844,7 +1844,7 @@
% \begin{macrocode}
\cs_new_protected:Npn \box_resize_common:N #1
{
- \hbox_set:Nn \l_box_tmp_box
+ \hbox_set:Nn \l_box_internal_box
{
\driver_box_scale_begin:
\hbox_overlap_right:n { \box_use:N #1 }
@@ -1853,8 +1853,8 @@
% \end{macrocode}
% The new height and depth can be applied directly.
% \begin{macrocode}
- \box_set_ht:Nn \l_box_tmp_box { \l_box_top_new_dim }
- \box_set_dp:Nn \l_box_tmp_box { \l_box_bottom_new_dim }
+ \box_set_ht:Nn \l_box_internal_box { \l_box_top_new_dim }
+ \box_set_dp:Nn \l_box_internal_box { \l_box_bottom_new_dim }
% \end{macrocode}
% Things are not quite as obvious for the width, as the reference point
% needs to remain unchanged. For positive scaling factors resizing the
@@ -1867,13 +1867,13 @@
\hbox_to_wd:nn { \l_box_right_new_dim }
{
\tex_kern:D \l_box_right_new_dim
- \box_use:N \l_box_tmp_box
+ \box_use:N \l_box_internal_box
\tex_hss:D
}
}
{
- \box_set_wd:Nn \l_box_tmp_box { \l_box_right_new_dim }
- \box_use:N \l_box_tmp_box
+ \box_set_wd:Nn \l_box_internal_box { \l_box_right_new_dim }
+ \box_use:N \l_box_internal_box
}
}
% \end{macrocode}
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3clist.dtx b/Master/texmf-dist/source/latex/l3kernel/l3clist.dtx
index e04b2227944..ade1e0cedc4 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3clist.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3clist.dtx
@@ -2,6 +2,7 @@
%
%% File: l3clist.dtx Copyright (C) 2004-2011 Frank Mittelbach,
%% The LaTeX3 project
+%% (C) 2012 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,7 +37,7 @@
%
%<*driver|package>
\RequirePackage{l3names}
-\GetIdInfo$Id: l3clist.dtx 3086 2011-12-22 17:55:46Z bruno $
+\GetIdInfo$Id: l3clist.dtx 3157 2012-01-09 00:42:07Z bruno $
{L3 Experimental comma separated lists}
%</driver|package>
%<*driver>
@@ -211,8 +212,8 @@
% \begin{syntax}
% \cs{clist_use:N} \meta{comma list}
% \end{syntax}
-% Places the \meta{comma list} directly into the input stream, thus
-% treating it as a \meta{token list}.
+% Places the \meta{comma list} directly into the input stream,
+% including the commas, thus treating it as a \meta{token list}.
% \end{function}
%
% \section{Modifying comma lists}
@@ -527,7 +528,7 @@
% \emph{i.e.}~every item in a \meta{comma list} is unique.
% \end{function}
%
-% \begin{function}[updated = 2011-09-06, EXP]
+% \begin{function}[updated = 2012-01-08, EXP]
% {\clist_item:Nn, \clist_item:cn, \clist_item:nn}
% \begin{syntax}
% \cs{clist_item:Nn} \meta{comma list} \Arg{integer expression}
@@ -540,6 +541,12 @@
% is larger than the number of items in the \meta{comma list} (as
% calculated by \cs{clist_length:N}) then the function will expand to
% nothing.
+% \begin{texnote}
+% The result is returned within the \tn{unexpanded}
+% primitive (\cs{exp_not:n}), which means that the \meta{item}
+% will not expand further when appearing in an x-type
+% argument expansion.
+% \end{texnote}
% \end{function}
%
% \begin{function}[updated = 2011-08-31]
@@ -616,11 +623,11 @@
%</package>
% \end{macrocode}
%
-% \begin{variable}{\l_clist_tmpa_clist}
+% \begin{variable}{\l_clist_internal_clist}
% Scratch space for various internal uses. This comma list variable
% cannot be declared as such because it comes before \cs{clist_new:N}
% \begin{macrocode}
-\tl_new:N \l_clist_tmpa_clist
+\tl_new:N \l_clist_internal_clist
% \end{macrocode}
% \end{variable}
%
@@ -850,8 +857,8 @@
{ \clist_put_left_aux:NNNn \clist_gconcat:NNN \clist_set:Nn }
\cs_new_protected:Npn \clist_put_left_aux:NNNn #1#2#3#4
{
- #2 \l_clist_tmpa_clist {#4}
- #1 #3 \l_clist_tmpa_clist #3
+ #2 \l_clist_internal_clist {#4}
+ #1 #3 \l_clist_internal_clist #3
}
\cs_generate_variant:Nn \clist_put_left:Nn { NV , No , Nx }
\cs_generate_variant:Nn \clist_put_left:Nn { c , cV , co , cx }
@@ -886,8 +893,8 @@
{ \clist_put_right_aux:NNNn \clist_gconcat:NNN \clist_gset:Nn }
\cs_new_protected:Npn \clist_put_right_aux:NNNn #1#2#3#4
{
- #2 \l_clist_tmpa_clist {#4}
- #1 #3 #3 \l_clist_tmpa_clist
+ #2 \l_clist_internal_clist {#4}
+ #1 #3 #3 \l_clist_internal_clist
}
\cs_generate_variant:Nn \clist_put_right:Nn { NV , No , Nx }
\cs_generate_variant:Nn \clist_put_right:Nn { c , cV , co , cx }
@@ -994,10 +1001,10 @@
%
% \subsection{Modifying comma lists}
%
-% \begin{variable}{\l_clist_remove_clist}
+% \begin{variable}{\l_clist_internal_remove_clist}
% An internal comma list for the removal routines.
% \begin{macrocode}
-\clist_new:N \l_clist_remove_clist
+\clist_new:N \l_clist_internal_remove_clist
% \end{macrocode}
% \end{variable}
%
@@ -1014,13 +1021,13 @@
{ \clist_remove_duplicates_aux:NN \clist_gset_eq:NN }
\cs_new_protected:Npn \clist_remove_duplicates_aux:NN #1#2
{
- \clist_clear:N \l_clist_remove_clist
+ \clist_clear:N \l_clist_internal_remove_clist
\clist_map_inline:Nn #2
{
- \clist_if_in:NnF \l_clist_remove_clist {##1}
- { \clist_put_right:Nn \l_clist_remove_clist {##1} }
+ \clist_if_in:NnF \l_clist_internal_remove_clist {##1}
+ { \clist_put_right:Nn \l_clist_internal_remove_clist {##1} }
}
- #1 #2 \l_clist_remove_clist
+ #1 #2 \l_clist_internal_remove_clist
}
\cs_generate_variant:Nn \clist_remove_duplicates:N { c }
\cs_generate_variant:Nn \clist_gremove_duplicates:N { c }
@@ -1098,13 +1105,6 @@
%
% \subsection{Comma list conditionals}
%
-% \begin{variable}{\l_clist_if_in_clist}
-% An internal comma list for \cs{clist_if_in:nn} conditionals.
-% \begin{macrocode}
-\clist_new:N \l_clist_if_in_clist
-% \end{macrocode}
-% \end{variable}
-%
% \begin{macro}[pTF]{\clist_if_empty:N, \clist_if_empty:c}
% \UnitTested
% Simple copies from the token list variable material.
@@ -1143,8 +1143,8 @@
}
\prg_new_protected_conditional:Npnn \clist_if_in:nn #1#2 { T , F , TF }
{
- \clist_set:Nn \l_clist_if_in_clist {#1}
- \exp_args:No \clist_if_in_return:nn \l_clist_if_in_clist {#2}
+ \clist_set:Nn \l_clist_internal_clist {#1}
+ \exp_args:No \clist_if_in_return:nn \l_clist_internal_clist {#2}
}
\cs_new_protected:Npn \clist_if_in_return:nn #1#2
{
@@ -1260,8 +1260,8 @@
}
\cs_new_protected:Npn \clist_map_inline:nn #1
{
- \clist_set:Nn \l_clist_tmpa_clist {#1}
- \clist_map_inline:Nn \l_clist_tmpa_clist
+ \clist_set:Nn \l_clist_internal_clist {#1}
+ \clist_map_inline:Nn \l_clist_internal_clist
}
\cs_generate_variant:Nn \clist_map_inline:Nn { c }
% \end{macrocode}
@@ -1291,8 +1291,8 @@
}
\cs_new_protected:Npn \clist_map_variable:nNn #1
{
- \clist_set:Nn \l_clist_tmpa_clist {#1}
- \clist_map_variable:NNn \l_clist_tmpa_clist
+ \clist_set:Nn \l_clist_internal_clist {#1}
+ \clist_map_variable:NNn \l_clist_internal_clist
}
\cs_new_protected:Npn \clist_map_variable_aux:Nnw #1#2#3,
{
@@ -1335,11 +1335,11 @@
}
\cs_new_protected:Npn \clist_show:n #1
{
- \clist_set:Nn \l_clist_tmpa_clist {#1}
+ \clist_set:Nn \l_clist_internal_clist {#1}
\msg_aux_show:Nnx
- \l_clist_tmpa_clist
+ \l_clist_internal_clist
{ clist }
- { \clist_map_function:NN \l_clist_tmpa_clist \msg_aux_show:n }
+ { \clist_map_function:NN \l_clist_internal_clist \msg_aux_show:n }
}
\cs_generate_variant:Nn \clist_show:N { c }
% \end{macrocode}
@@ -1440,7 +1440,7 @@
\cs_new:Npn \clist_item_N_loop:nw #1 #2,
{
\int_compare:nNnTF {#1} = \c_zero
- { \use_i_delimit_by_q_stop:nw {#2} }
+ { \use_i_delimit_by_q_stop:nw { \exp_not:n {#2} } }
{ \exp_args:Nf \clist_item_N_loop:nw { \int_eval:n { #1 - 1 } } }
}
\cs_generate_variant:Nn \clist_item:Nn { c }
@@ -1489,7 +1489,7 @@
\exp_after:wN \exp_after:wN \exp_after:wN \clist_item_n_strip:w
\tl_trim_spaces:n {#1} ,
}
-\cs_new:Npn \clist_item_n_strip:w #1 , {#1}
+\cs_new:Npn \clist_item_n_strip:w #1 , { \exp_not:n {#1} }
% \end{macrocode}
% \end{macro}
% \end{macro}
@@ -1506,6 +1506,8 @@
% \clist_gset_from_seq:Nc, \clist_gset_from_seq:cc
% }
% \UnitTested
+% \begin{macro}[aux]{\clist_set_from_seq_aux:NNNN}
+% \begin{macro}[aux]{\clist_wrap_item:n}
% Setting a comma list from a comma-separated list is done using a simple
% mapping. We wrap most items with \cs{exp_not:n}, and a comma. Items which
% contain a comma or a space are surrounded by an extra set of braces. The
@@ -1520,17 +1522,20 @@
\seq_if_empty:NTF #4
{ #1 #3 }
{
- \seq_push_item_def:n
+ #2 #3
{
- ,
- \tl_if_empty:oTF { \clist_set_from_seq_aux:w ##1 ~ , ##1 ~ }
- { \exp_not:n {##1} }
- { \exp_not:n { {##1} } }
+ \exp_last_unbraced:Nf \use_none:n
+ { \seq_map_function:NN #4 \clist_wrap_item:n }
}
- #2 #3 { \exp_last_unbraced:Nf \use_none:n #4 }
- \seq_pop_item_def:
}
}
+\cs_new:Npn \clist_wrap_item:n #1
+ {
+ ,
+ \tl_if_empty:oTF { \clist_set_from_seq_aux:w #1 ~ , #1 ~ }
+ { \exp_not:n {#1} }
+ { \exp_not:n { {#1} } }
+ }
\cs_new:Npn \clist_set_from_seq_aux:w #1 , #2 ~ { }
\cs_generate_variant:Nn \clist_set_from_seq:NN { Nc }
\cs_generate_variant:Nn \clist_set_from_seq:NN { c , cc }
@@ -1539,6 +1544,8 @@
% \end{macrocode}
% \end{macro}
% \end{macro}
+% \end{macro}
+% \end{macro}
%
% \begin{macro}
% {
@@ -1624,7 +1631,7 @@
% \end{macrocode}
% \end{macro}
%
-% Deprecated on 2011-09-05, for removal by 2011-12-32.
+% Deprecated on 2011-09-05, for removal by 2011-12-31.
%
% \begin{macro}
% {
@@ -1636,10 +1643,12 @@
% The \cs{clist_trim_spaces:n} function is now internal,
% deprecated for use outside the kernel.
% \begin{macrocode}
+%<*deprecated>
\cs_new_protected:Npn \clist_trim_spaces:N #1 { \clist_set:No #1 {#1} }
\cs_new_protected:Npn \clist_gtrim_spaces:N #1 { \clist_gset:No #1 {#1} }
\cs_generate_variant:Nn \clist_trim_spaces:N { c }
\cs_generate_variant:Nn \clist_gtrim_spaces:N { c }
+%</deprecated>
% \end{macrocode}
% \end{macro}
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx b/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx
index 75d48a6becb..21aae4e614e 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-%% File: l3coffins.dtx Copyright(C) 2010,2011 The LaTeX3 Project
+%% File: l3coffins.dtx Copyright(C) 2010-2012 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,7 +36,7 @@
%
%<*driver|package>
\RequirePackage{l3names}
-\GetIdInfo$Id: l3coffins.dtx 3086 2011-12-22 17:55:46Z bruno $
+\GetIdInfo$Id: l3coffins.dtx 3155 2012-01-08 22:53:03Z bruno $
{L3 Experimental coffin code layer}
%</driver|package>
%<*driver>
@@ -336,7 +336,8 @@
% both printed in the \meta{colour} specified.
% \end{function}
%
-% \begin{function}{\coffin_show_structure:N, \coffin_show_structure:c}
+% \begin{function}[updated = 2012-01-01]
+% {\coffin_show_structure:N, \coffin_show_structure:c}
% \begin{syntax}
% \cs{coffin_show_structure:N} \meta{coffin}
% \end{syntax}
@@ -373,16 +374,16 @@
%
% \subsection{Coffins: data structures and general variables}
%
-% \begin{variable}{\l_coffin_tmp_box}
-% \begin{variable}{\l_coffin_tmp_dim}
-% \begin{variable}{\l_coffin_tmp_fp}
-% \begin{variable}{\l_coffin_tmp_tl}
+% \begin{variable}{\l_coffin_internal_box}
+% \begin{variable}{\l_coffin_internal_dim}
+% \begin{variable}{\l_coffin_internal_fp}
+% \begin{variable}{\l_coffin_internal_tl}
% Scratch variables.
% \begin{macrocode}
-\box_new:N \l_coffin_tmp_box
-\dim_new:N \l_coffin_tmp_dim
-\fp_new:N \l_coffin_tmp_fp
-\tl_new:N \l_coffin_tmp_tl
+\box_new:N \l_coffin_internal_box
+\dim_new:N \l_coffin_internal_dim
+\fp_new:N \l_coffin_internal_fp
+\tl_new:N \l_coffin_internal_tl
% \end{macrocode}
% \end{variable}
% \end{variable}
@@ -407,17 +408,17 @@
% based values.
% \begin{macrocode}
\prop_new:N \c_coffin_poles_prop
-\tl_set:Nn \l_coffin_tmp_tl { { 0 pt } { 0 pt } { 0 pt } { 1000 pt } }
-\prop_put:Nno \c_coffin_poles_prop { l } { \l_coffin_tmp_tl }
-\prop_put:Nno \c_coffin_poles_prop { hc } { \l_coffin_tmp_tl }
-\prop_put:Nno \c_coffin_poles_prop { r } { \l_coffin_tmp_tl }
-\tl_set:Nn \l_coffin_tmp_tl { { 0 pt } { 0 pt } { 1000 pt } { 0 pt } }
-\prop_put:Nno \c_coffin_poles_prop { b } { \l_coffin_tmp_tl }
-\prop_put:Nno \c_coffin_poles_prop { vc } { \l_coffin_tmp_tl }
-\prop_put:Nno \c_coffin_poles_prop { t } { \l_coffin_tmp_tl }
-\prop_put:Nno \c_coffin_poles_prop { B } { \l_coffin_tmp_tl }
-\prop_put:Nno \c_coffin_poles_prop { H } { \l_coffin_tmp_tl }
-\prop_put:Nno \c_coffin_poles_prop { T } { \l_coffin_tmp_tl }
+\tl_set:Nn \l_coffin_internal_tl { { 0 pt } { 0 pt } { 0 pt } { 1000 pt } }
+\prop_put:Nno \c_coffin_poles_prop { l } { \l_coffin_internal_tl }
+\prop_put:Nno \c_coffin_poles_prop { hc } { \l_coffin_internal_tl }
+\prop_put:Nno \c_coffin_poles_prop { r } { \l_coffin_internal_tl }
+\tl_set:Nn \l_coffin_internal_tl { { 0 pt } { 0 pt } { 1000 pt } { 0 pt } }
+\prop_put:Nno \c_coffin_poles_prop { b } { \l_coffin_internal_tl }
+\prop_put:Nno \c_coffin_poles_prop { vc } { \l_coffin_internal_tl }
+\prop_put:Nno \c_coffin_poles_prop { t } { \l_coffin_internal_tl }
+\prop_put:Nno \c_coffin_poles_prop { B } { \l_coffin_internal_tl }
+\prop_put:Nno \c_coffin_poles_prop { H } { \l_coffin_internal_tl }
+\prop_put:Nno \c_coffin_poles_prop { T } { \l_coffin_internal_tl }
% \end{macrocode}
% \end{variable}
%
@@ -658,15 +659,15 @@
\coffin_reset_structure:N #1
\coffin_update_poles:N #1
\coffin_update_corners:N #1
- \vbox_set_top:Nn \l_coffin_tmp_box { \vbox_unpack:N #1 }
+ \vbox_set_top:Nn \l_coffin_internal_box { \vbox_unpack:N #1 }
\coffin_set_pole:Nnx #1 { T }
{
{ 0 pt }
- { \dim_eval:n { \box_ht:N #1 - \box_ht:N \l_coffin_tmp_box } }
+ { \dim_eval:n { \box_ht:N #1 - \box_ht:N \l_coffin_internal_box } }
{ 1000 pt }
{ 0 pt }
}
- \box_clear:N \l_coffin_tmp_box
+ \box_clear:N \l_coffin_internal_box
}
}
\cs_generate_variant:Nn \vcoffin_set:Nnn { c }
@@ -717,17 +718,17 @@
\coffin_reset_structure:N #1
\coffin_update_poles:N #1
\coffin_update_corners:N #1
- \vbox_set_top:Nn \l_coffin_tmp_box { \vbox_unpack:N #1 }
+ \vbox_set_top:Nn \l_coffin_internal_box { \vbox_unpack:N #1 }
\coffin_set_pole:Nnx #1 { T }
{
{ 0 pt }
{
- \dim_eval:n { \box_ht:N #1 - \box_ht:N \l_coffin_tmp_box }
+ \dim_eval:n { \box_ht:N #1 - \box_ht:N \l_coffin_internal_box }
}
{ 1000 pt }
{ 0 pt }
}
- \box_clear:N \l_coffin_tmp_box
+ \box_clear:N \l_coffin_internal_box
}
}
}
@@ -1223,10 +1224,10 @@
\dim_compare:nNnT { \l_coffin_offset_x_dim } < \c_zero_dim
{ \tex_kern:D -\l_coffin_offset_x_dim }
\hbox_unpack:N \l_coffin_aligned_coffin
- \dim_set:Nn \l_coffin_tmp_dim
+ \dim_set:Nn \l_coffin_internal_dim
{ \l_coffin_offset_x_dim - \box_wd:N #1 + \box_wd:N #4 }
- \dim_compare:nNnT \l_coffin_tmp_dim < \c_zero_dim
- { \tex_kern:D -\l_coffin_tmp_dim }
+ \dim_compare:nNnT \l_coffin_internal_dim < \c_zero_dim
+ { \tex_kern:D -\l_coffin_internal_dim }
}
% \end{macrocode}
% The coffin structure is reset, and the corners are cleared: only
@@ -1362,10 +1363,10 @@
\dim_set:Nn \l_coffin_x_dim { #3 + #7 }
\dim_set:Nn \l_coffin_y_dim { #4 + #8 }
\tl_if_in:nnTF {#2} { - }
- { \tl_set:Nn \l_coffin_tmp_tl { {#2} } }
- { \tl_set:Nn \l_coffin_tmp_tl { { #1 - #2 } } }
+ { \tl_set:Nn \l_coffin_internal_tl { {#2} } }
+ { \tl_set:Nn \l_coffin_internal_tl { { #1 - #2 } } }
\exp_last_unbraced:NNo \coffin_set_pole:Nnx \l_coffin_aligned_coffin
- { \l_coffin_tmp_tl }
+ { \l_coffin_internal_tl }
{
{ \dim_use:N \l_coffin_x_dim } { \dim_use:N \l_coffin_y_dim }
{#5} {#6}
@@ -1507,11 +1508,11 @@
% \begin{macrocode}
\cs_new_protected:Npn \coffin_rotate:Nn #1#2
{
- \fp_set:Nn \l_coffin_tmp_fp {#2}
- \fp_div:Nn \l_coffin_tmp_fp { 180 }
- \fp_mul:Nn \l_coffin_tmp_fp { \c_pi_fp }
- \fp_sin:Nn \l_coffin_sin_fp { \l_coffin_tmp_fp }
- \fp_cos:Nn \l_coffin_cos_fp { \l_coffin_tmp_fp }
+ \fp_set:Nn \l_coffin_internal_fp {#2}
+ \fp_div:Nn \l_coffin_internal_fp { 180 }
+ \fp_mul:Nn \l_coffin_internal_fp { \c_pi_fp }
+ \fp_sin:Nn \l_coffin_sin_fp { \l_coffin_internal_fp }
+ \fp_cos:Nn \l_coffin_cos_fp { \l_coffin_internal_fp }
% \end{macrocode}
% The corners and poles of the coffin can now be rotated around the
% origin. This is best achieved using mapping functions.
@@ -1585,11 +1586,11 @@
{ { 0 pt } { \dim_use:N \box_ht:N #1 } }
\prop_put:Nnx \l_coffin_bounding_prop { tr }
{ { \dim_use:N \box_wd:N #1 } { \dim_use:N \box_ht:N #1 } }
- \dim_set:Nn \l_coffin_tmp_dim { - \box_dp:N #1 }
+ \dim_set:Nn \l_coffin_internal_dim { - \box_dp:N #1 }
\prop_put:Nnx \l_coffin_bounding_prop { bl }
- { { 0 pt } { \dim_use:N \l_coffin_tmp_dim } }
+ { { 0 pt } { \dim_use:N \l_coffin_internal_dim } }
\prop_put:Nnx \l_coffin_bounding_prop { br }
- { { \dim_use:N \box_wd:N #1 } { \dim_use:N \l_coffin_tmp_dim } }
+ { { \dim_use:N \box_wd:N #1 } { \dim_use:N \l_coffin_internal_dim } }
}
% \end{macrocode}
% \end{macro}
@@ -1650,15 +1651,15 @@
\fp_set_from_dim:Nn \l_coffin_x_fp {#1}
\fp_set_from_dim:Nn \l_coffin_y_fp {#2}
\fp_set_eq:NN \l_coffin_x_prime_fp \l_coffin_x_fp
- \fp_set_eq:NN \l_coffin_tmp_fp \l_coffin_y_fp
+ \fp_set_eq:NN \l_coffin_internal_fp \l_coffin_y_fp
\fp_mul:Nn \l_coffin_x_prime_fp { \l_coffin_cos_fp }
- \fp_mul:Nn \l_coffin_tmp_fp { \l_coffin_sin_fp }
- \fp_sub:Nn \l_coffin_x_prime_fp { \l_coffin_tmp_fp }
+ \fp_mul:Nn \l_coffin_internal_fp { \l_coffin_sin_fp }
+ \fp_sub:Nn \l_coffin_x_prime_fp { \l_coffin_internal_fp }
\fp_set_eq:NN \l_coffin_y_prime_fp \l_coffin_y_fp
- \fp_set_eq:NN \l_coffin_tmp_fp \l_coffin_x_fp
+ \fp_set_eq:NN \l_coffin_internal_fp \l_coffin_x_fp
\fp_mul:Nn \l_coffin_y_prime_fp { \l_coffin_cos_fp }
- \fp_mul:Nn \l_coffin_tmp_fp { \l_coffin_sin_fp }
- \fp_add:Nn \l_coffin_y_prime_fp { \l_coffin_tmp_fp }
+ \fp_mul:Nn \l_coffin_internal_fp { \l_coffin_sin_fp }
+ \fp_add:Nn \l_coffin_y_prime_fp { \l_coffin_internal_fp }
\dim_set:Nn #3 { \fp_to_dim:N \l_coffin_x_prime_fp }
\dim_set:Nn #4 { \fp_to_dim:N \l_coffin_y_prime_fp }
}
@@ -1772,11 +1773,11 @@
\coffin_set_user_dimensions:N #1
\box_resize:Nnn #1 {#2} {#3}
\fp_set_from_dim:Nn \l_coffin_scale_x_fp {#2}
- \fp_set_from_dim:Nn \l_coffin_tmp_fp { \Width }
- \fp_div:Nn \l_coffin_scale_x_fp { \l_coffin_tmp_fp }
+ \fp_set_from_dim:Nn \l_coffin_internal_fp { \Width }
+ \fp_div:Nn \l_coffin_scale_x_fp { \l_coffin_internal_fp }
\fp_set_from_dim:Nn \l_coffin_scale_y_fp {#3}
- \fp_set_from_dim:Nn \l_coffin_tmp_fp { \TotalHeight }
- \fp_div:Nn \l_coffin_scale_y_fp { \l_coffin_tmp_fp }
+ \fp_set_from_dim:Nn \l_coffin_internal_fp { \TotalHeight }
+ \fp_div:Nn \l_coffin_scale_y_fp { \l_coffin_internal_fp }
\coffin_resize_common:Nnn #1 {#2} {#3}
}
\cs_generate_variant:Nn \coffin_resize:Nnn { c }
@@ -1842,12 +1843,12 @@
% \begin{macrocode}
\cs_new_protected:Npn \coffin_scale_vector:nnNN #1#2#3#4
{
- \fp_set_from_dim:Nn \l_coffin_tmp_fp {#1}
- \fp_mul:Nn \l_coffin_tmp_fp { \l_coffin_scale_x_fp }
- \dim_set:Nn #3 { \fp_to_dim:N \l_coffin_tmp_fp }
- \fp_set_from_dim:Nn \l_coffin_tmp_fp {#2}
- \fp_mul:Nn \l_coffin_tmp_fp { \l_coffin_scale_y_fp }
- \dim_set:Nn #4 { \fp_to_dim:N \l_coffin_tmp_fp }
+ \fp_set_from_dim:Nn \l_coffin_internal_fp {#1}
+ \fp_mul:Nn \l_coffin_internal_fp { \l_coffin_scale_x_fp }
+ \dim_set:Nn #3 { \fp_to_dim:N \l_coffin_internal_fp }
+ \fp_set_from_dim:Nn \l_coffin_internal_fp {#2}
+ \fp_mul:Nn \l_coffin_internal_fp { \l_coffin_scale_y_fp }
+ \dim_set:Nn #4 { \fp_to_dim:N \l_coffin_internal_fp }
}
% \end{macrocode}
% \end{macro}
@@ -2003,14 +2004,6 @@
% \end{macrocode}
% \end{variable}
%
-% \begin{variable}{\l_coffin_handles_tmp_prop}
-% Used for displaying coffins, as the handles need to be stored in this
-% case, at least temporarily.
-% \begin{macrocode}
-\prop_new:N \l_coffin_handles_tmp_prop
-% \end{macrocode}
-% \end{variable}
-%
% \begin{macro}{\coffin_mark_handle:Nnnn, \coffin_mark_handle:cnnn}
% \begin{macro}[aux]{\coffin_mark_handle_aux:nnnnNnn}
% Marking a single handle is relatively easy. The standard attachment
@@ -2045,12 +2038,12 @@
( \tl_to_str:n { #2 , #3 } )
}
\prop_get:NnN \l_coffin_display_handles_prop
- { #2 #3 } \l_coffin_tmp_tl
- \quark_if_no_value:NTF \l_coffin_tmp_tl
+ { #2 #3 } \l_coffin_internal_tl
+ \quark_if_no_value:NTF \l_coffin_internal_tl
{
\prop_get:NnN \l_coffin_display_handles_prop
- { #3 #2 } \l_coffin_tmp_tl
- \quark_if_no_value:NTF \l_coffin_tmp_tl
+ { #3 #2 } \l_coffin_internal_tl
+ \quark_if_no_value:NTF \l_coffin_internal_tl
{
\coffin_attach_mark:NnnNnnnn #1 {#2} {#3}
\l_coffin_display_coord_coffin { l } { vc }
@@ -2058,12 +2051,12 @@
}
{
\exp_last_unbraced:No \coffin_mark_handle_aux:nnnnNnn
- \l_coffin_tmp_tl #1 {#2} {#3}
+ \l_coffin_internal_tl #1 {#2} {#3}
}
}
{
\exp_last_unbraced:No \coffin_mark_handle_aux:nnnnNnn
- \l_coffin_tmp_tl #1 {#2} {#3}
+ \l_coffin_internal_tl #1 {#2} {#3}
}
}
\cs_new_protected:Npn \coffin_mark_handle_aux:nnnnNnn #1#2#3#4#5#6#7
@@ -2110,7 +2103,6 @@
\tl_if_eq:NNT \l_coffin_pole_a_tl \l_coffin_pole_b_tl
{ \prop_del:Nn \l_coffin_display_poles_prop { B } }
\coffin_set_eq:NN \l_coffin_display_coffin #1
- \prop_clear:N \l_coffin_handles_tmp_prop
\prop_map_inline:Nn \l_coffin_display_poles_prop
{
\prop_del:Nn \l_coffin_display_poles_prop {##1}
@@ -2149,12 +2141,12 @@
( \tl_to_str:n { #1 , ##1 } )
}
\prop_get:NnN \l_coffin_display_handles_prop
- { #1 ##1 } \l_coffin_tmp_tl
- \quark_if_no_value:NTF \l_coffin_tmp_tl
+ { #1 ##1 } \l_coffin_internal_tl
+ \quark_if_no_value:NTF \l_coffin_internal_tl
{
\prop_get:NnN \l_coffin_display_handles_prop
- { ##1 #1 } \l_coffin_tmp_tl
- \quark_if_no_value:NTF \l_coffin_tmp_tl
+ { ##1 #1 } \l_coffin_internal_tl
+ \quark_if_no_value:NTF \l_coffin_internal_tl
{
\coffin_display_attach:Nnnnn
\l_coffin_display_coord_coffin { l } { vc }
@@ -2163,12 +2155,12 @@
{
\exp_last_unbraced:No
\coffin_display_handles_aux:nnnn
- \l_coffin_tmp_tl
+ \l_coffin_internal_tl
}
}
{
\exp_last_unbraced:No \coffin_display_handles_aux:nnnn
- \l_coffin_tmp_tl
+ \l_coffin_internal_tl
}
}
}
@@ -2218,8 +2210,6 @@
% \end{macro}
%
% \begin{macro}{\coffin_show_structure:N, \coffin_show_structure:c}
-% \begin{macro}[aux]{\coffin_show_aux:n}
-% \begin{macro}[aux]{\coffin_show_aux:w}
% For showing the various internal structures attached to a coffin in
% a way that keeps things relatively readable. If there is no apparent
% structure then the code complains.
@@ -2228,40 +2218,21 @@
{
\cs_if_exist:cTF { l_coffin_poles_ \int_value:w #1 _prop }
{
- \iow_term:x
- {
- \iow_newline:
- Size~of~coffin~\token_to_str:N #1 : \iow_newline:
- > ~ ht~=~\dim_use:N \box_ht:N #1 \iow_newline:
- > ~ dp~=~\dim_use:N \box_dp:N #1 \iow_newline:
- > ~ wd~=~\dim_use:N \box_wd:N #1 \iow_newline:
- }
- \iow_term:x { Poles~of~coffin~\token_to_str:N #1 : }
- \tl_set:Nx \l_coffin_tmp_tl
+ \msg_aux_show:Nnx #1 { coffins }
{
\prop_map_function:cN
{ l_coffin_poles_ \int_value:w #1 _prop }
- \coffin_show_aux:nn
+ \msg_aux_show_unbraced:nn
}
- \etex_showtokens:D \exp_after:wN \exp_after:wN \exp_after:wN
- { \exp_after:wN \coffin_show_aux:w \l_coffin_tmp_tl }
}
{
- \iow_term:x { ---~No~poles~found~--- }
- \tl_show:n { Is~this~really~a~coffin? }
+ \msg_aux_use:nn { LaTeX / coffins } { no-pole }
+ \msg_aux_show:x { }
}
}
-\cs_new:Npn \coffin_show_aux:nn #1#2
- {
- \iow_newline: > \c_space_tl \c_space_tl
- #1 \c_space_tl \c_space_tl => \c_space_tl \c_space_tl \exp_not:n {#2}
- }
-\cs_new:Npn \coffin_show_aux:w #1 > ~ { }
\cs_generate_variant:Nn \coffin_show_structure:N { c }
% \end{macrocode}
% \end{macro}
-% \end{macro}
-% \end{macro}
%
% \subsection{Messages}
%
@@ -2284,6 +2255,19 @@
LaTeX~was~asked~to~find~a~typesetting~pole~for~a~coffin,~
but~either~the~coffin~does~not~exist~or~the~pole~name~is~wrong.
}
+\msg_kernel_new:nnn { coffins } { show }
+ {
+ Size~of~coffin~\token_to_str:N #1 : \\
+ > ~ ht~=~\dim_use:N \box_ht:N #1 \\
+ > ~ dp~=~\dim_use:N \box_dp:N #1 \\
+ > ~ wd~=~\dim_use:N \box_wd:N #1 \\
+ Poles~of~coffin~\token_to_str:N #1 :
+ }
+\msg_kernel_new:nnn { coffins } { no-pole }
+ {
+ ---~No~poles~found~--- \\
+ Is~this~really~a~coffin?
+ }
% \end{macrocode}
%
% \begin{macrocode}
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3drivers.dtx b/Master/texmf-dist/source/latex/l3kernel/l3drivers.dtx
index 3ea31aac59d..2729cad13ca 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3drivers.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3drivers.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-%% File: l3drivers.dtx Copyright(C) 2011 The LaTeX3 Project
+%% File: l3drivers.dtx Copyright(C) 2011-2012 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,7 +36,7 @@
%
%<*driver|package>
\RequirePackage{l3names}
-\GetIdInfo$Id: l3drivers.dtx 3086 2011-12-22 17:55:46Z bruno $
+\GetIdInfo$Id: l3drivers.dtx 3158 2012-01-09 00:47:42Z bruno $
{L3 Experimental drivers}
%</driver|package>
%<*driver>
@@ -105,7 +105,7 @@
% {\driver_box_rotate_begin:, \driver_box_rotate_end:}
% \begin{syntax}
% \cs{driver_box_rotate_begin:}
-% \cs{box_use:N} \cs{l_box_tmp_box}
+% \cs{box_use:N} \cs{l_box_internal_box}
% \cs{driver_box_rotate_end:}
% \end{syntax}
% Rotates the \meta{box material} anti-clockwise around the current
@@ -113,7 +113,7 @@
% and the sine and cosine of this angle should be stored in
% \cs{l_box_angle_fp}, \cs{l_box_sin_fp} and \cs{l_box_cos_fp},
% respectively. Typically, the box material inserted between the beginning
-% and end markers will be stored in \cs{l_box_tmp_box}: this fact is
+% and end markers will be stored in \cs{l_box_internal_box}: this fact is
% required by some drivers to obtain the correct output.
% \end{function}
%
@@ -345,11 +345,11 @@
%
% \subsection{Box rotation and scaling}
%
-% \begin{variable}{\l_driver_tmp_fp}
+% \begin{variable}{\l_driver_internal_fp}
% Needed for a safe sign inversion in PDF mode.
% \begin{macrocode}
%<*pdfmode|xdvipdfmx>
-\fp_new:N \l_driver_tmp_fp
+\fp_new:N \l_driver_internal_fp
%</pdfmode|xdvipdfmx>
% \end{macrocode}
% \end{variable}
@@ -376,9 +376,9 @@
}
%</dvips>
%<*pdfmode|xdvipdfmx>
- \box_set_wd:Nn \l_box_tmp_box \c_zero_dim
- \fp_set_eq:NN \l_driver_tmp_fp \l_box_sin_fp
- \fp_neg:N \l_driver_tmp_fp
+ \box_set_wd:Nn \l_box_internal_box \c_zero_dim
+ \fp_set_eq:NN \l_driver_internal_fp \l_box_sin_fp
+ \fp_neg:N \l_driver_internal_fp
%<*pdfmode>
\pdftex_pdfsetmatrix:D
%</pdfmode>
@@ -388,7 +388,7 @@
{
\fp_use:N \l_box_cos_fp \c_space_tl
\fp_use:N \l_box_sin_fp \c_space_tl
- \fp_use:N \l_driver_tmp_fp \c_space_tl
+ \fp_use:N \l_driver_internal_fp \c_space_tl
\fp_use:N \l_box_cos_fp
%<*xdvipdfmx>
\c_space_tl 0~0~cm
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3expan.dtx b/Master/texmf-dist/source/latex/l3kernel/l3expan.dtx
index be9c3ea942e..863413fa019 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3expan.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3expan.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-%% File: l3expan.dtx Copyright (C) 1990-2011 The LaTeX3 project
+%% File: l3expan.dtx Copyright (C) 1990-2012 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
@@ -35,7 +35,7 @@
%
%<*driver|package>
\RequirePackage{l3names}
-\GetIdInfo$Id: l3expan.dtx 3086 2011-12-22 17:55:46Z bruno $
+\GetIdInfo$Id: l3expan.dtx 3196 2012-01-15 09:44:05Z joseph $
{L3 Experimental argument expansion}
%</driver|package>
%<*driver>
@@ -86,9 +86,10 @@
% Internally preprocessing of arguments is done with functions from the
% |\exp_| module. They all look alike, an example would be
% |\exp_args:NNo|. This function has three arguments, the first and the
-% second are a single tokens the third argument gets
-% expanded once. If |\seq_gpush:No| was not defined the example
-% above could be coded in the following way:
+% second are a single tokens, while the third argument should be given
+% in braces. Applying |\exp_args:NNo| will expand the content of third
+% argument once before any expansion of the first and second arguments.
+% If |\seq_gpush:No| was not define it could be coded in the following way:
% \begin{verbatim}
% \exp_args:NNo \seq_gpush:Nn
% \g_file_name_stack
@@ -224,7 +225,7 @@
%
% \begin{function}[EXP]{\exp_args:No}
% \begin{syntax}
-% \cs{exp_args:No} \meta{function} \Arg{tokens} \Arg{tokens2} ...
+% \cs{exp_args:No} \meta{function} \Arg{tokens} ...
% \end{syntax}
% This function absorbs two arguments (the \meta{function} name and
% the \meta{tokens}). The \meta{tokens} are expanded once, and the result
@@ -235,7 +236,7 @@
%
% \begin{function}[EXP]{\exp_args:Nc, \exp_args:cc}
% \begin{syntax}
-% \cs{exp_args:Nc} \meta{function} \Arg{tokens} \Arg{tokens2} ...
+% \cs{exp_args:Nc} \meta{function} \Arg{tokens}
% \end{syntax}
% This function absorbs two arguments (the \meta{function} name and
% the \meta{tokens}). The \meta{tokens} are expanded until only characters
@@ -251,7 +252,7 @@
%
% \begin{function}[EXP]{\exp_args:NV}
% \begin{syntax}
-% \cs{exp_args:NV} \meta{function} \meta{variable} \Arg{tokens2} ...
+% \cs{exp_args:NV} \meta{function} \meta{variable}
% \end{syntax}
% This function absorbs two arguments (the names of the \meta{function} and
% the the \meta{variable}). The content of the \meta{variable} are recovered
@@ -262,7 +263,7 @@
%
% \begin{function}[EXP]{\exp_args:Nv}
% \begin{syntax}
-% \cs{exp_args:Nv} \meta{function} \Arg{tokens} \Arg{tokens2} ...
+% \cs{exp_args:Nv} \meta{function} \Arg{tokens}
% \end{syntax}
% This function absorbs two arguments (the \meta{function} name and
% the \meta{tokens}). The \meta{tokens} are expanded until only characters
@@ -277,7 +278,7 @@
%
% \begin{function}[EXP]{\exp_args:Nf}
% \begin{syntax}
-% \cs{exp_args:Nf} \meta{function} \Arg{tokens} \Arg{tokens2} ...
+% \cs{exp_args:Nf} \meta{function} \Arg{tokens}
% \end{syntax}
% This function absorbs two arguments (the \meta{function} name and
% the \meta{tokens}). The \meta{tokens} are fully expanded until the
@@ -289,7 +290,7 @@
%
% \begin{function}{\exp_args:Nx}
% \begin{syntax}
-% \cs{exp_args:Nx} \meta{function} \Arg{tokens} \Arg{tokens2} ...
+% \cs{exp_args:Nx} \meta{function} \Arg{tokens}
% \end{syntax}
% This function absorbs two arguments (the \meta{function} name and
% the \meta{tokens}) and exhaustively expands the \meta{tokens}
@@ -322,12 +323,13 @@
% by the expansion of the second and third arguments.
% \end{function}
%
-% \begin{function}[EXP]
+% \begin{function}[EXP, updated = 2012-01-14]
% {
% \exp_args:Nno,
% \exp_args:NnV,
% \exp_args:Nnf,
% \exp_args:Noo,
+% \exp_args:Nof,
% \exp_args:Noc,
% \exp_args:Nff,
% \exp_args:Nfo,
@@ -485,7 +487,7 @@
% expansion (for example, if it is a character) then it will be left
% unchanged. It is important to notice that \meta{token1} may be
% \emph{any} single token, including group-opening and -closing
-% tokens (|{| or |}"| assuming normal \TeX{} category codes). Unless
+% tokens (|{| or |}| assuming normal \TeX{} category codes). Unless
% specifically required, expansion should be carried out using an
% appropriate argument specifier variant or the appropriate
% \cs{exp_arg:N} function.
@@ -538,7 +540,7 @@
% \cs{exp_not:V} \meta{variable}
% \end{syntax}
% Recovers the content of the \meta{variable}, then prevents expansion
-% of the this material in a context where it would otherwise
+% of this material in a context where it would otherwise
% be expanded, for example an |x|-type argument.
% \end{function}
%
@@ -587,7 +589,7 @@
%
% \section{Internal functions and variables}
%
-% \begin{variable}{\l_exp_tl}
+% \begin{variable}{\l_exp_internal_tl}
% The |\exp_| module has its private variables to temporarily store
% results of the argument expansion. This is done to avoid interference
% with other functions using temporary variables.
@@ -598,7 +600,7 @@
% \cs{exp_eval_register:N} \meta{variable}
% \end{syntax}
% These functions evaluates a \meta{variable} as part of a |V| or |v|
-% expansion (respectively), preceeded by \cs{c_zero} which stops
+% expansion (respectively), preceded by \cs{c_zero} which stops
% the expansion of a previous \tn{romannumeral}.
% A \meta{variable} might exist as
% one of two things: a parameter-less non-long, non-protected macro
@@ -667,11 +669,11 @@
% In section~\ref{sec:handtune} some common cases are coded by a more direct
% method for efficiency, typically using calls to |\exp_after:wN|.
%
-% \begin{variable}{\l_exp_tl}
+% \begin{variable}{\l_exp_internal_tl}
% We need a scratch token list variable.
% We don't use |tl| methods so that \pkg{l3expan} can be loaded earlier.
% \begin{macrocode}
-\cs_new_nopar:Npn \l_exp_tl { }
+\cs_new_nopar:Npn \l_exp_internal_tl { }
% \end{macrocode}
% \end{variable}
%
@@ -686,8 +688,8 @@
% is the carried over result of the previous expansion steps and |#3| is
% the argument about to be processed.
%
-% \begin{macro}[aux]{\exp_arg_next:nnn}
-% \begin{macro}[aux]{\exp_arg_next_nobrace:nnn}
+% \begin{macro}[aux, EXP]{\exp_arg_next:nnn}
+% \begin{macro}[aux, EXP]{\exp_arg_next:Nnn}
% |#1| is the result of an expansion step, |#2| is the remaining
% argument manipulations and |#3| is the current result of the
% expansion chain. This auxiliary function moves |#1| back after
@@ -699,7 +701,7 @@
% require a set of braces.
% \begin{macrocode}
\cs_new:Npn \exp_arg_next:nnn #1#2#3 { #2 \::: { #3 {#1} } }
-\cs_new:Npn \exp_arg_next_nobrace:nnn #1#2#3 { #2 \::: { #3 #1 } }
+\cs_new:Npn \exp_arg_next:Nnn #1#2#3 { #2 \::: { #3 #1 } }
% \end{macrocode}
% \end{macro}
% \end{macro}
@@ -711,7 +713,7 @@
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}[int]{\::n}
+% \begin{macro}[int, EXP]{\::n}
% This function is used to skip an argument that doesn't need to
% be expanded.
% \begin{macrocode}
@@ -719,7 +721,7 @@
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}[int]{\::N}
+% \begin{macro}[int, EXP]{\::N}
% This function is used to skip an argument that consists of a
% single token and doesn't need to be expanded.
% \begin{macrocode}
@@ -727,16 +729,16 @@
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}[int]{\::c}
+% \begin{macro}[int, EXP]{\::c}
% This function is used to skip an argument that is turned into
% as control sequence without expansion.
% \begin{macrocode}
\cs_new:Npn \::c #1 \::: #2#3
- { \exp_after:wN \exp_arg_next_nobrace:nnn \cs:w #3 \cs_end: {#1} {#2} }
+ { \exp_after:wN \exp_arg_next:Nnn \cs:w #3 \cs_end: {#1} {#2} }
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}[int]{\::o}
+% \begin{macro}[int, EXP]{\::o}
% This function is used to expand an argument once.
% \begin{macrocode}
\cs_new:Npn \::o #1 \::: #2#3
@@ -744,7 +746,7 @@
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{\::f}
+% \begin{macro}[int, EXP]{\::f}
% \begin{macro}{\exp_stop_f:}
% This function is used to expand a token list until the first
% unexpandable token is found. The underlying \tn{romannumeral} |-`0|
@@ -779,16 +781,16 @@
% \begin{macrocode}
\cs_new_protected:Npn \::x #1 \::: #2#3
{
- \cs_set_nopar:Npx \l_exp_tl { {#3} }
- \exp_after:wN \exp_arg_next:nnn \l_exp_tl {#1} {#2}
+ \cs_set_nopar:Npx \l_exp_internal_tl { {#3} }
+ \exp_after:wN \exp_arg_next:nnn \l_exp_internal_tl {#1} {#2}
}
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}[int]{\::v}
-% \begin{macro}[int]{\::V}
+% \begin{macro}[int, EXP]{\::v}
+% \begin{macro}[int, EXP]{\::V}
% These functions return the value of a register, i.e., one of
-% |tl|, |num|, |int|, |skip|, |dim| and |muskip|. The |V| version
+% |tl|, |clist|, |int|, |skip|, |dim| and |muskip|. The |V| version
% expects a single token whereas |v| like |c| creates a csname from
% its argument given in braces and then evaluates it as if it was a
% |V|. The primitive \tn{romannumeral} sets off an expansion
@@ -811,20 +813,20 @@
% \end{macro}
% \end{macro}
%
-% \begin{macro}[int]{\exp_eval_register:N, \exp_eval_register:c}
-% \begin{macro}[aux]{\exp_eval_error_msg:w}
-% This function evaluates a register. Now a register might exist as
-% one of two things: A parameter-less macro or a built-in \TeX{}
-% register such as |\count|. For the \TeX{} registers we have to
-% utilize a \tn{the} whereas for the macros we merely have to
-% expand them once. The trick is to find out when to use
-% \tn{the} and when not to. What we do here is try to find out
-% whether the token will expand to something else when hit with
-% |\exp_after:wN|. The technique is to compare the meaning of the
-% register in question when it has been prefixed with |\exp_not:N|
-% and the register itself. If it is a macro, the prefixed
-% |\exp_not:N| will temporarily turn it into the primitive
-% |\scan_stop:|.
+% \begin{macro}[int, EXP]{\exp_eval_register:N, \exp_eval_register:c}
+% \begin{macro}[aux, EXP]{\exp_eval_error_msg:w}
+% This function evaluates a register. Now a register might exist as
+% one of two things: A parameter-less macro or a built-in \TeX{}
+% register such as |\count|. For the \TeX{} registers we have to
+% utilize a \tn{the} whereas for the macros we merely have to
+% expand them once. The trick is to find out when to use
+% \tn{the} and when not to. What we do here is try to find out
+% whether the token will expand to something else when hit with
+% |\exp_after:wN|. The technique is to compare the meaning of the
+% register in question when it has been prefixed with |\exp_not:N|
+% and the register itself. If it is a macro, the prefixed
+% |\exp_not:N| will temporarily turn it into the primitive
+% |\scan_stop:|.
% \begin{macrocode}
\cs_new:Npn \exp_eval_register:N #1
{
@@ -889,9 +891,9 @@
% are fully expandable and therefore allow to prefix them with
% |\tex_global:D| for example.
%
-% \begin{macro}{\exp_args:No}
-% \begin{macro}{\exp_args:NNo}
-% \begin{macro}{\exp_args:NNNo}
+% \begin{macro}[EXP]{\exp_args:No}
+% \begin{macro}[EXP]{\exp_args:NNo}
+% \begin{macro}[EXP]{\exp_args:NNNo}
% Those lovely runs of expansion!
% \begin{macrocode}
\cs_new:Npn \exp_args:No #1#2 { \exp_after:wN #1 \exp_after:wN {#2} }
@@ -904,11 +906,12 @@
% \end{macro}
% \end{macro}
%
-% \begin{macro}{\exp_args:Nc}
+% \begin{macro}[EXP]{\exp_args:Nc}
% In \pkg{l3basics}
%\end{macro}
%
-% \begin{macro}{\exp_args:cc, \exp_args:NNc, \exp_args:Ncc, \exp_args:Nccc}
+% \begin{macro}[EXP]
+% {\exp_args:cc, \exp_args:NNc, \exp_args:Ncc, \exp_args:Nccc}
% Here are the functions that turn their argument into csnames but
% are expandable.
% \begin{macrocode}
@@ -928,7 +931,7 @@
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{\exp_args:Nf, \exp_args:NV, \exp_args:Nv, \exp_args:Nx}
+% \begin{macro}[EXP]{\exp_args:Nf, \exp_args:NV, \exp_args:Nv}
% \begin{macrocode}
\cs_new:Npn \exp_args:Nf #1#2
{ \exp_after:wN #1 \exp_after:wN { \tex_romannumeral:D -`0 #2 } }
@@ -945,13 +948,16 @@
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{\exp_args:NNV,\exp_args:NNv,\exp_args:NNf,
-% \exp_args:NVV,
-% \exp_args:Ncf,\exp_args:Nco}
-% Some more hand-tuned function with three arguments.
-% If we force that an |o| argument always has braces,
-% we could implement \cs{exp_args:Nco} with less tokens
-% and only two arguments.
+% \begin{macro}[EXP]
+% {
+% \exp_args:NNV,\exp_args:NNv,\exp_args:NNf,
+% \exp_args:NVV,
+% \exp_args:Ncf,\exp_args:Nco
+% }
+% Some more hand-tuned function with three arguments.
+% If we forced that an |o| argument always has braces,
+% we could implement \cs{exp_args:Nco} with less tokens
+% and only two arguments.
% \begin{macrocode}
\cs_new:Npn \exp_args:NNf #1#2#3
{
@@ -991,12 +997,13 @@
\exp_after:wN { \tex_romannumeral:D \exp_eval_register:N #3 }
}
% \end{macrocode}
-% \end{macro}
+% \end{macro}
%
-% \begin{macro}{\exp_args:Ncco,
-% \exp_args:NcNc,
-% \exp_args:NcNo,
-% \exp_args:NNNV}
+% \begin{macro}[EXP]
+% {
+% \exp_args:Ncco, \exp_args:NcNc, \exp_args:NcNo,
+% \exp_args:NNNV
+% }
% A few more that we can hand-tune.
% \begin{macrocode}
\cs_new:Npn \exp_args:NNNV #1#2#3#4
@@ -1028,7 +1035,7 @@
\exp_after:wN {#4}
}
% \end{macrocode}
-% \end{macro}
+% \end{macro}
%
% \subsection{Definitions with the automated technique}
% \label{sec:gendef}
@@ -1037,21 +1044,25 @@
% coding then becomes an issue. Notice that the auto-generated functions
% are all not long: they don't actually take any arguments themselves.
%
-% \begin{macro}{\exp_args:Nx}
+% \begin{macro}{\exp_args:Nx}
% \begin{macrocode}
\cs_new_protected_nopar:Npn \exp_args:Nx { \::x \::: }
% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\exp_args:NNx,
-% \exp_args:Nnc,
-% \exp_args:Ncx,
-% \exp_args:Nfo,\exp_args:Nff,
-% \exp_args:Nnf,\exp_args:Nno,\exp_args:NnV,\exp_args:Nnx,
-% \exp_args:Noo,\exp_args:Noc,\exp_args:Nox,
-% \exp_args:Nxo,\exp_args:Nxx}
-% Here are the actual function definitions, using the helper functions
-% above.
+% \end{macro}
+%
+% \begin{macro}[EXP]
+% {
+% \exp_args:Nnc,\exp_args:Nfo,\exp_args:Nff,\exp_args:Nnf,
+% \exp_args:Nno,\exp_args:NnV,\exp_args:Noo,\exp_args:Nof,
+% \exp_args:Noc
+% }
+% \begin{macro}
+% {
+% \exp_args:NNx,\exp_args:Ncx,\exp_args:Nnx,
+% \exp_args:Nox,\exp_args:Nxo,\exp_args:Nxx,
+% }
+% Here are the actual function definitions, using the helper functions
+% above.
% \begin{macrocode}
\cs_new_nopar:Npn \exp_args:Nnc { \::n \::c \::: }
\cs_new_nopar:Npn \exp_args:Nfo { \::f \::o \::: }
@@ -1059,8 +1070,9 @@
\cs_new_nopar:Npn \exp_args:Nnf { \::n \::f \::: }
\cs_new_nopar:Npn \exp_args:Nno { \::n \::o \::: }
\cs_new_nopar:Npn \exp_args:NnV { \::n \::V \::: }
-\cs_new_nopar:Npn \exp_args:Noc { \::o \::c \::: }
\cs_new_nopar:Npn \exp_args:Noo { \::o \::o \::: }
+\cs_new_nopar:Npn \exp_args:Nof { \::o \::f \::: }
+\cs_new_nopar:Npn \exp_args:Noc { \::o \::c \::: }
\cs_new_protected_nopar:Npn \exp_args:NNx { \::N \::x \::: }
\cs_new_protected_nopar:Npn \exp_args:Ncx { \::c \::x \::: }
\cs_new_protected_nopar:Npn \exp_args:Nnx { \::n \::x \::: }
@@ -1068,20 +1080,19 @@
\cs_new_protected_nopar:Npn \exp_args:Nxo { \::x \::o \::: }
\cs_new_protected_nopar:Npn \exp_args:Nxx { \::x \::x \::: }
% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\exp_args:Nccx,
-% \exp_args:Ncnx,
-% \exp_args:NNno,
-% \exp_args:Nnno,
-% \exp_args:Nnnx,
-% \exp_args:Nnox,
-% \exp_args:Nooo,
-% \exp_args:Noox,
-% \exp_args:Nnnc,
-% \exp_args:NNnx,
-% \exp_args:NNoo,
-% \exp_args:NNox}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}[EXP]
+% {
+% \exp_args:NNno,\exp_args:NNoo,
+% \exp_args:Nnnc,\exp_args:Nnno,\exp_args:Nooo,
+% }
+% \begin{macro}
+% {
+% \exp_args:NNnx,\exp_args:NNox,\exp_args:Nnnx,\exp_args:Nnox,
+% \exp_args:Nccx,\exp_args:Ncnx,\exp_args:Noox,
+% }
% \begin{macrocode}
\cs_new_nopar:Npn \exp_args:NNno { \::N \::n \::o \::: }
\cs_new_nopar:Npn \exp_args:NNoo { \::N \::o \::o \::: }
@@ -1096,16 +1107,17 @@
\cs_new_protected_nopar:Npn \exp_args:Ncnx { \::c \::n \::x \::: }
\cs_new_protected_nopar:Npn \exp_args:Noox { \::o \::o \::x \::: }
% \end{macrocode}
-% \end{macro}
+% \end{macro}
+% \end{macro}
%
% \subsection{Last-unbraced versions}
%
-% \begin{macro}[aux]{\exp_arg_last_unbraced:nn}
-% \begin{macro}[aux]{\::f_unbraced}
-% \begin{macro}[aux]{\::o_unbraced}
-% \begin{macro}[aux]{\::V_unbraced}
-% \begin{macro}[aux]{\::v_unbraced}
-% \begin{macro}[aux]{\::x_unbraced}
+% \begin{macro}[aux, EXP]{\exp_arg_last_unbraced:nn}
+% \begin{macro}[aux, EXP]{\::f_unbraced}
+% \begin{macro}[aux, EXP]{\::o_unbraced}
+% \begin{macro}[aux, EXP]{\::V_unbraced}
+% \begin{macro}[aux, EXP]{\::v_unbraced}
+% \begin{macro}[aux, EXP]{\::x_unbraced}
% There are a few places where the last argument needs to be available
% unbraced. First some helper macros.
% \begin{macrocode}
@@ -1129,8 +1141,8 @@
}
\cs_new_protected:Npn \::x_unbraced \::: #1#2
{
- \cs_set_nopar:Npx \l_exp_tl { \exp_not:n {#1} #2 }
- \l_exp_tl
+ \cs_set_nopar:Npx \l_exp_internal_tl { \exp_not:n {#1} #2 }
+ \l_exp_internal_tl
}
% \end{macrocode}
% \end{macro}
@@ -1140,19 +1152,19 @@
% \end{macro}
% \end{macro}
%
-% \begin{macro}{\exp_last_unbraced:NV}
-% \begin{macro}{\exp_last_unbraced:Nv}
-% \begin{macro}{\exp_last_unbraced:Nf}
-% \begin{macro}{\exp_last_unbraced:No}
-% \begin{macro}{\exp_last_unbraced:Nco}
-% \begin{macro}{\exp_last_unbraced:NcV}
-% \begin{macro}{\exp_last_unbraced:NNV}
-% \begin{macro}{\exp_last_unbraced:NNo}
-% \begin{macro}{\exp_last_unbraced:NNNV}
-% \begin{macro}{\exp_last_unbraced:NNNo}
-% \begin{macro}{\exp_last_unbraced:Nno}
-% \begin{macro}{\exp_last_unbraced:Noo}
-% \begin{macro}{\exp_last_unbraced:Nfo}
+% \begin{macro}[EXP]{\exp_last_unbraced:NV}
+% \begin{macro}[EXP]{\exp_last_unbraced:Nv}
+% \begin{macro}[EXP]{\exp_last_unbraced:Nf}
+% \begin{macro}[EXP]{\exp_last_unbraced:No}
+% \begin{macro}[EXP]{\exp_last_unbraced:Nco}
+% \begin{macro}[EXP]{\exp_last_unbraced:NcV}
+% \begin{macro}[EXP]{\exp_last_unbraced:NNV}
+% \begin{macro}[EXP]{\exp_last_unbraced:NNo}
+% \begin{macro}[EXP]{\exp_last_unbraced:NNNV}
+% \begin{macro}[EXP]{\exp_last_unbraced:NNNo}
+% \begin{macro}[EXP]{\exp_last_unbraced:Nno}
+% \begin{macro}[EXP]{\exp_last_unbraced:Noo}
+% \begin{macro}[EXP]{\exp_last_unbraced:Nfo}
% \begin{macro}{\exp_last_unbraced:Nx}
% Now the business end: most of these are hand-tuned for speed, but the
% general system is in place.
@@ -1209,7 +1221,7 @@
% \end{macro}
% \end{macro}
%
-% \begin{macro}{\exp_last_two_unbraced:Noo}
+% \begin{macro}[EXP]{\exp_last_two_unbraced:Noo}
% If |#2| is a single token then this can be implemented as
% \begin{verbatim}
% \cs_new:Npn \exp_last_two_unbraced:Noo #1 #2 #3
@@ -1227,12 +1239,14 @@
%
% \subsection{Preventing expansion}
%
-% \begin{macro}{\exp_not:o}
-% \begin{macro}{\exp_not:f}
-% \begin{macro}{\exp_not:V}
-% \begin{macro}{\exp_not:v}
+% \begin{macro}[EXP]{\exp_not:o}
+% \begin{macro}[EXP]{\exp_not:c}
+% \begin{macro}[EXP]{\exp_not:f}
+% \begin{macro}[EXP]{\exp_not:V}
+% \begin{macro}[EXP]{\exp_not:v}
% \begin{macrocode}
\cs_new:Npn \exp_not:o #1 { \etex_unexpanded:D \exp_after:wN {#1} }
+\cs_new:Npn \exp_not:c #1 { \exp_after:wN \exp_not:N \cs:w #1 \cs_end: }
\cs_new:Npn \exp_not:f #1
{ \etex_unexpanded:D \exp_after:wN { \tex_romannumeral:D -`0 #1 } }
\cs_new:Npn \exp_not:V #1
@@ -1250,13 +1264,7 @@
% \end{macro}
% \end{macro}
% \end{macro}
-%
-% \begin{macro}{\exp_not:c}
-% A helper function.
-% \begin{macrocode}
-\cs_new:Npn \exp_not:c #1 { \exp_after:wN \exp_not:N \cs:w #1 \cs_end: }
-% \end{macrocode}
-% \end{macro}
+% \end{macro}
%
% \subsection{Defining function variants}
%
@@ -1291,7 +1299,7 @@
% We discard the boolean |#3| and then set off a loop through the desired
% variant forms. The original function is retained as |#4| for efficiency.
% \begin{macrocode}
-\cs_new:Npn \cs_generate_variant_aux:nnNNn #1#2#3#4#5
+\cs_new_protected:Npn \cs_generate_variant_aux:nnNNn #1#2#3#4#5
{ \cs_generate_variant_aux:Nnnw #4 {#1}{#2} #5 , ? , \q_recursion_stop }
% \end{macrocode}
% Next is the real work to be done. We now have 1: original function,
@@ -1309,7 +1317,7 @@
% Then build the variant function once, to avoid repeating this
% relatively expensive operation. Then recurse.
% \begin{macrocode}
-\cs_new:Npn \cs_generate_variant_aux:Nnnw #1#2#3#4 ,
+\cs_new_protected:Npn \cs_generate_variant_aux:Nnnw #1#2#3#4 ,
{
\if:w ? #4
\exp_after:wN \use_none_delimit_by_q_recursion_stop:w
@@ -1342,7 +1350,7 @@
% the |\exp_args:N| form needed is defined.
% Otherwise tell that it was already defined.
% \begin{macrocode}
-\cs_new:Npn \cs_generate_variant_aux:NNn #1 #2 #3
+\cs_new_protected:Npn \cs_generate_variant_aux:NNn #1 #2 #3
{
\cs_if_free:NTF #2
{
@@ -1385,7 +1393,7 @@
\tex_lowercase:D
{
\group_end:
- \cs_new:Npn \cs_generate_variant_aux:N #1
+ \cs_new_protected:Npn \cs_generate_variant_aux:N #1
{
\exp_after:wN \cs_generate_variant_aux:w
\token_to_meaning:N #1
@@ -1394,7 +1402,7 @@
\q_mark \cs_new_nopar:Npx
\q_stop
}
- \cs_new:Npn \cs_generate_variant_aux:w
+ \cs_new_protected:Npn \cs_generate_variant_aux:w
#1 ? PROTECTEZ #2 \q_mark #3 #4 \q_stop
{
\cs_set_eq:NN \cs_tmp:w #3
@@ -1405,7 +1413,7 @@
% \end{macro}
%
% \begin{macro}[int]{\cs_generate_internal_variant:n}
-% \begin{macro}[aux]{\cs_generate_internal_variant_aux:N}
+% \begin{macro}[aux, rEXP]{\cs_generate_internal_variant_aux:N}
% Test if |exp_args:N #1| is already defined
% and if not define it via the
% |\::| commands using the chars in |#1|
@@ -1438,7 +1446,7 @@
%
%\subsection{Variants which cannot be created earlier}
%
-% \begin{macro}[pTF]
+% \begin{macro}[EXP,pTF]
% {\str_if_eq:Vn, \str_if_eq:on, \str_if_eq:nV, \str_if_eq:no, \str_if_eq:VV}
% These cannot come earlier as they need \cs{cs_generate_variant:Nn}.
% \begin{macrocode}
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3file.dtx b/Master/texmf-dist/source/latex/l3kernel/l3file.dtx
index 30c212d3015..b60d534c225 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) 2009-2011 The LaTeX3 Project
+%% File: l3file.dtx Copyright (C) 2009-2012 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
@@ -35,7 +35,7 @@
%
%<*driver|package>
\RequirePackage{l3names}
-\GetIdInfo$Id: l3file.dtx 3095 2011-12-26 22:33:23Z joseph $
+\GetIdInfo$Id: l3file.dtx 3158 2012-01-09 00:47:42Z bruno $
{L3 Experimental file operations}
%</driver|package>
%<*driver>
@@ -173,7 +173,7 @@
% sequence.
% \end{variable}
%
-% \begin{variable}{\l_file_name_tl}
+% \begin{variable}{\l_file_internal_name_tl}
% Used to return the full name of a file for internal use.
% \end{variable}
%
@@ -181,12 +181,12 @@
% The sequence of file paths to search when loading a file.
% \end{variable}
%
-% \begin{variable}{\l_file_search_path_saved_seq}
+% \begin{variable}{\l_file_internal_saved_path_seq}
% When loaded on top of \LaTeXe{}, there is a need to save the search
% path so that \tn{input@path} can be used as appropriate.
% \end{variable}
%
-% \begin{variable}[added = 2011-09-06]{\l_file_tmpa_seq}
+% \begin{variable}[added = 2011-09-06]{\l_file_internal_seq}
% When loaded on top of \LaTeXe{}, there is a need to convert
% the comma lists \tn{input@path} and \tn{@filelist} to sequences.
% \end{variable}
@@ -257,10 +257,10 @@
% \end{macrocode}
% \end{variable}
%
-% \begin{variable}{\l_file_name_tl}
+% \begin{variable}{\l_file_internal_name_tl}
% Used to return the fully-qualified name of a file.
% \begin{macrocode}
-\tl_new:N \l_file_name_tl
+\tl_new:N \l_file_internal_name_tl
% \end{macrocode}
% \end{variable}
%
@@ -271,26 +271,26 @@
% \end{macrocode}
% \end{variable}
%
-% \begin{variable}{\l_file_search_path_saved_seq}
+% \begin{variable}{\l_file_internal_saved_path_seq}
% The current search path has to be saved for package use.
% \begin{macrocode}
%<*package>
-\seq_new:N \l_file_search_path_saved_seq
+\seq_new:N \l_file_internal_saved_path_seq
%</package>
% \end{macrocode}
% \end{variable}
%
-% \begin{variable}{\l_file_tmpa_seq}
+% \begin{variable}{\l_file_internal_seq}
% Scratch space for comma list conversion in package mode.
% \begin{macrocode}
%<*package>
-\seq_new:N \l_file_tmpa_seq
+\seq_new:N \l_file_internal_seq
%</package>
% \end{macrocode}
% \end{variable}
%
% \begin{macro}{\file_add_path:nN}
-% \begin{variable}{\g_file_test_ior}
+% \begin{variable}{\g_file_internal_ior}
% \begin{macro}[aux]{\file_add_path_search:nN}
% The way to test if a file exists is to try to open it: if it does not
% exist then \TeX{} will report end-of-file. For files which are in the
@@ -299,13 +299,14 @@
% location is of course treated as the correct one. If nothing is found,
% |#2| is returned empty.
% \begin{macrocode}
+\ior_new:N \g_file_internal_ior
\cs_new_protected:Npn \file_add_path:nN #1#2
{
- \ior_open:Nn \g_file_test_ior {#1}
- \ior_if_eof:NTF \g_file_test_ior
+ \ior_open:Nn \g_file_internal_ior {#1}
+ \ior_if_eof:NTF \g_file_internal_ior
{ \file_add_path_search:nN {#1} #2 }
{
- \ior_close:N \g_file_test_ior
+ \ior_close:N \g_file_internal_ior
\tl_set:Nx #2 {#1}
}
}
@@ -315,16 +316,16 @@
%<*package>
\cs_if_exist:NT \input@path
{
- \seq_set_eq:NN \l_file_search_path_saved_seq \l_file_search_path_seq
- \seq_set_from_clist:NN \l_file_tmpa_seq \input@path
+ \seq_set_eq:NN \l_file_internal_saved_path_seq \l_file_search_path_seq
+ \seq_set_from_clist:NN \l_file_internal_seq \input@path
\seq_concat:NNN \l_file_search_path_seq
- \l_file_search_path_seq \l_file_tmpa_seq
+ \l_file_search_path_seq \l_file_internal_seq
}
%</package>
\seq_map_inline:Nn \l_file_search_path_seq
{
- \ior_open:Nn \g_file_test_ior { ##1 #1 }
- \ior_if_eof:NF \g_file_test_ior
+ \ior_open:Nn \g_file_internal_ior { ##1 #1 }
+ \ior_if_eof:NF \g_file_internal_ior
{
\tl_set:Nx #2 { ##1 #1 }
\seq_map_break:
@@ -332,9 +333,9 @@
}
%<*package>
\cs_if_exist:NT \input@path
- { \seq_set_eq:NN \l_file_search_path_seq \l_file_search_path_saved_seq }
+ { \seq_set_eq:NN \l_file_search_path_seq \l_file_internal_saved_path_seq }
%</package>
- \ior_close:N \g_file_test_ior
+ \ior_close:N \g_file_internal_ior
}
% \end{macrocode}
% \end{macro}
@@ -349,8 +350,8 @@
% \begin{macrocode}
\prg_new_protected_conditional:Nnn \file_if_exist:n { T , F , TF }
{
- \file_add_path:nN {#1} \l_file_name_tl
- \tl_if_empty:NTF \l_file_name_tl
+ \file_add_path:nN {#1} \l_file_internal_name_tl
+ \tl_if_empty:NTF \l_file_internal_name_tl
{ \prg_return_false: }
{ \prg_return_true: }
}
@@ -363,8 +364,8 @@
% \begin{macrocode}
\cs_new_protected:Npn \file_input:n #1
{
- \file_add_path:nN {#1} \l_file_name_tl
- \tl_if_empty:NF \l_file_name_tl
+ \file_add_path:nN {#1} \l_file_internal_name_tl
+ \tl_if_empty:NF \l_file_internal_name_tl
{
%<*initex>
\seq_gput_right:Nx \g_file_record_seq {#1}
@@ -374,7 +375,7 @@
%</package>
\seq_gpush:NV \g_file_stack_seq \g_file_current_name_tl
\tl_gset:Nn \g_file_current_name_tl {#1}
- \exp_after:wN \tex_input:D \l_file_name_tl \c_space_tl
+ \exp_after:wN \tex_input:D \l_file_internal_name_tl \c_space_tl
\seq_gpop:NN \g_file_stack_seq \g_file_current_name_tl
}
}
@@ -415,8 +416,8 @@
%<*package>
\AtBeginDocument
{
- \seq_set_from_clist:NN \l_file_tmpa_seq \@filelist
- \seq_gconcat:NNN \g_file_record_seq \g_file_record_seq \l_file_tmpa_seq
+ \seq_set_from_clist:NN \l_file_internal_seq \@filelist
+ \seq_gconcat:NNN \g_file_record_seq \g_file_record_seq \l_file_internal_seq
}
%</package>
% \end{macrocode}
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3format.ins b/Master/texmf-dist/source/latex/l3kernel/l3format.ins
new file mode 100644
index 00000000000..ef01ceff9c7
--- /dev/null
+++ b/Master/texmf-dist/source/latex/l3kernel/l3format.ins
@@ -0,0 +1,77 @@
+\iffalse meta-comment
+
+File l3format.ins Copyright (C) 2011 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.
+
+\fi
+
+\input docstrip.tex
+\askforoverwritefalse
+
+\preamble
+
+EXPERIMENTAL CODE
+
+Do not distribute this file without also distributing the
+source files specified above.
+
+Do not distribute a modified version of this file.
+
+\endpreamble
+% stop docstrip adding \endinput
+\postamble
+\endpostamble
+
+\keepsilent
+
+\generate
+ {
+ \file{l3format.ltx}
+ {
+ \from{l3bootstrap.dtx}{initex}
+ \from{l3names.dtx} {initex}
+ \from{l3basics.dtx} {initex}
+ \from{l3expan.dtx} {initex}
+ \from{l3tl.dtx} {initex}
+ \from{l3seq.dtx} {initex}
+ % ===== FORMAT ONLY ======
+ \from{l3alloc.dtx} {initex}
+ % ========================
+ \from{l3int.dtx} {initex}
+ \from{l3quark.dtx} {initex}
+ \from{l3prg.dtx} {initex}
+ \from{l3clist.dtx} {initex}
+ \from{l3token.dtx} {initex}
+ \from{l3prop.dtx} {initex}
+ \from{l3msg.dtx} {initex}
+ \from{l3io.dtx} {initex}
+ \from{l3file.dtx} {initex}
+ \from{l3skip.dtx} {initex}
+ \from{l3keys.dtx} {initex}
+ \from{l3fp.dtx} {initex}
+ \from{l3box.dtx} {initex}
+ \from{l3coffins.dtx} {initex}
+ \from{l3color.dtx} {initex}
+ \from{l3luatex.dtx} {initex}
+ % ===== FORMAT ONLY ======
+ \from{l3final.dtx} {initex}
+ % ========================
+ }
+ }
+
+\generate{\file{l3dvips.ltx} {\from{l3drivers.dtx}{initex,dvips} }}
+\generate{\file{l3pdfmode.ltx} {\from{l3drivers.dtx}{initex,pdfmode} }}
+\generate{\file{l3xdvipdfmx.ltx}{\from{l3drivers.dtx}{initex,xdvipdfmx}}}
+
+\endbatchfile \ No newline at end of file
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx
index 82c1a9f6f59..35213537c69 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-%% File: l3fp.dtx Copyright (C) 2010,2011 The LaTeX3 Project
+%% File: l3fp.dtx Copyright (C) 2010-2012 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
@@ -35,7 +35,7 @@
%
%<*driver|package>
\RequirePackage{l3names}
-\GetIdInfo$Id: l3fp.dtx 3086 2011-12-22 17:55:46Z bruno $
+\GetIdInfo$Id: l3fp.dtx 3154 2012-01-08 22:46:28Z bruno $
{L3 Experimental floating-point operations}
%</driver|package>
%<*driver>
@@ -144,6 +144,17 @@
% Sets the \meta{floating point variable} to |+0.000000000e0|.
% \end{function}
%
+% \begin{function}[added = 2012-01-07]
+% {\fp_zero_new:N, \fp_zero_new:c, \fp_gzero_new:N, \fp_gzero_new:c}
+% \begin{syntax}
+% \cs{fp_zero_new:N} \meta{floating point variable}
+% \end{syntax}
+% Ensures that the \meta{floating point variable} exists globally
+% by applying \cs{fp_new:N} if necessary, then applies
+% \cs{fp_(g)zero:N} to leave the \meta{floating point variable}
+% set to zero.
+% \end{function}
+%
% \begin{function}{\fp_set:Nn, \fp_set:cn, \fp_gset:Nn, \fp_gset:cn}
% \begin{syntax}
% \cs{fp_set:Nn} \meta{floating point variable} \Arg{value}
@@ -815,18 +826,18 @@
% \end{macrocode}
% \end{variable}
%
-% \begin{variable}{\l_fp_tmp_int}
+% \begin{variable}{\l_fp_internal_int}
% A scratch \texttt{int}: used only where the value is not carried
% forward.
% \begin{macrocode}
-\int_new:N \l_fp_tmp_int
+\int_new:N \l_fp_internal_int
% \end{macrocode}
% \end{variable}
%
-% \begin{variable}{\l_fp_tmp_tl}
+% \begin{variable}{\l_fp_internal_tl}
% A scratch token list variable for expanding material.
% \begin{macrocode}
-\tl_new:N \l_fp_tmp_tl
+\tl_new:N \l_fp_internal_tl
% \end{macrocode}
% \end{variable}
%
@@ -895,34 +906,34 @@
% \begin{macrocode}
\cs_new_protected:Npn \fp_split:Nn #1#2
{
- \tl_set:Nx \l_fp_tmp_tl {#2}
- \tl_set_rescan:Nno \l_fp_tmp_tl { \char_set_catcode_ignore:n { 32 } }
- { \l_fp_tmp_tl }
+ \tl_set:Nx \l_fp_internal_tl {#2}
+ \tl_set_rescan:Nno \l_fp_internal_tl { \char_set_catcode_ignore:n { 32 } }
+ { \l_fp_internal_tl }
\l_fp_split_sign_int \c_one
\fp_split_sign:
\use:c { l_fp_input_ #1 _sign_int } \l_fp_split_sign_int
- \exp_after:wN \fp_split_exponent:w \l_fp_tmp_tl e e \q_stop #1
+ \exp_after:wN \fp_split_exponent:w \l_fp_internal_tl e e \q_stop #1
}
\cs_new_protected_nopar:Npn \fp_split_sign:
{
\if_int_compare:w \pdftex_strcmp:D
- { \exp_after:wN \tl_head:w \l_fp_tmp_tl ? \q_stop } { - }
+ { \exp_after:wN \tl_head:w \l_fp_internal_tl ? \q_stop } { - }
= \c_zero
- \tl_set:Nx \l_fp_tmp_tl
+ \tl_set:Nx \l_fp_internal_tl
{
\exp_after:wN
- \tl_tail:w \l_fp_tmp_tl \prg_do_nothing: \q_stop
+ \tl_tail:w \l_fp_internal_tl \prg_do_nothing: \q_stop
}
\l_fp_split_sign_int -\l_fp_split_sign_int
\exp_after:wN \fp_split_sign:
\else:
\if_int_compare:w \pdftex_strcmp:D
- { \exp_after:wN \tl_head:w \l_fp_tmp_tl ? \q_stop } { + }
+ { \exp_after:wN \tl_head:w \l_fp_internal_tl ? \q_stop } { + }
= \c_zero
- \tl_set:Nx \l_fp_tmp_tl
+ \tl_set:Nx \l_fp_internal_tl
{
\exp_after:wN
- \tl_tail:w \l_fp_tmp_tl \prg_do_nothing: \q_stop
+ \tl_tail:w \l_fp_internal_tl \prg_do_nothing: \q_stop
}
\exp_after:wN \exp_after:wN \exp_after:wN \fp_split_sign:
\fi:
@@ -942,9 +953,9 @@
{ \fp_split_aux_iii:w {#1#2#3#4#5#6#7#8#9} }
\cs_new_protected:Npn \fp_split_aux_iii:w #1#2 \q_stop
{
- \l_fp_tmp_int 1 #1 \scan_stop:
+ \l_fp_internal_int 1 #1 \scan_stop:
\exp_after:wN \fp_split_decimal:w
- \int_use:N \l_fp_tmp_int 000000000 \q_stop
+ \int_use:N \l_fp_internal_int 000000000 \q_stop
}
\cs_new_protected:Npn \fp_split_decimal:w #1#2#3#4#5#6#7#8#9
{ \fp_split_decimal_aux:w {#2#3#4#5#6#7#8#9} }
@@ -1029,12 +1040,12 @@
#2 ##1##2##3##4##5##6##7##8 \scan_stop:
\tex_advance:D #3 \c_one_thousand_million
\tex_divide:D #3 \c_ten
- \tl_set:Nx \l_fp_tmp_tl
+ \tl_set:Nx \l_fp_internal_tl
{
##9
\exp_after:wN \use_none:n \int_use:N #3
}
- #3 \l_fp_tmp_tl \scan_stop:
+ #3 \l_fp_internal_tl \scan_stop:
\tex_advance:D #4 \c_one
}
\fp_standardise_aux:
@@ -1093,13 +1104,13 @@
\l_fp_input_b_integer_int #1#2#3#4#5#6#7#8 \scan_stop:
\tex_advance:D \l_fp_input_b_decimal_int \c_one_thousand_million
\tex_divide:D \l_fp_input_b_decimal_int \c_ten
- \tl_set:Nx \l_fp_tmp_tl
+ \tl_set:Nx \l_fp_internal_tl
{
#9
\exp_after:wN \use_none:n
\int_use:N \l_fp_input_b_decimal_int
}
- \l_fp_input_b_decimal_int \l_fp_tmp_tl \scan_stop:
+ \l_fp_input_b_decimal_int \l_fp_internal_tl \scan_stop:
\tex_advance:D \l_fp_input_b_exponent_int \c_one
}
\cs_new_protected_nopar:Npn \fp_level_input_exponents_b:
@@ -1118,13 +1129,13 @@
\l_fp_input_a_integer_int #1#2#3#4#5#6#7#8 \scan_stop:
\tex_advance:D \l_fp_input_a_decimal_int \c_one_thousand_million
\tex_divide:D \l_fp_input_a_decimal_int \c_ten
- \tl_set:Nx \l_fp_tmp_tl
+ \tl_set:Nx \l_fp_internal_tl
{
#9
\exp_after:wN \use_none:n
\int_use:N \l_fp_input_a_decimal_int
}
- \l_fp_input_a_decimal_int \l_fp_tmp_tl \scan_stop:
+ \l_fp_input_a_decimal_int \l_fp_internal_tl \scan_stop:
\tex_advance:D \l_fp_input_a_exponent_int \c_one
}
% \end{macrocode}
@@ -1193,6 +1204,19 @@
% \end{macro}
% \end{macro}
%
+% \begin{macro}
+% {\fp_zero_new:N, \fp_zero_new:c, \fp_gzero_new:N, \fp_gzero_new:c}
+% Create a floating point if needed, otherwise clear it.
+% \begin{macrocode}
+\cs_new_protected:Npn \fp_zero_new:N #1
+ { \cs_if_exist:NTF #1 { \fp_zero:N #1 } { \fp_new:N #1 } }
+\cs_new_protected:Npn \fp_gzero_new:N #1
+ { \cs_if_exist:NTF #1 { \fp_gzero:N #1 } { \fp_new:N #1 } }
+\cs_generate_variant:Nn \fp_zero_new:N { c }
+\cs_generate_variant:Nn \fp_gzero_new:N { c }
+% \end{macrocode}
+% \end{macro}
+%
% \begin{macro}{\fp_set:Nn, \fp_set:cn}
% \UnitTested
% \begin{macro}{\fp_gset:Nn, \fp_gset:cn}
@@ -1250,8 +1274,8 @@
% \UnitTested
% \begin{macro}[aux]{\fp_set_from_dim_aux:NNn}
% \begin{macro}[aux]{\fp_set_from_dim_aux:w}
-% \begin{variable}{\l_fp_tmp_dim}
-% \begin{variable}{\l_fp_tmp_skip}
+% \begin{variable}{\l_fp_internal_dim}
+% \begin{variable}{\l_fp_internal_skip}
% Here, dimensions are converted to fixed-points \emph{via} a
% temporary variable. This ensures that they always convert as points.
% The code is then essentially the same as for \cs{fp_set:Nn}, but with
@@ -1266,12 +1290,12 @@
\cs_new_protected:Npn \fp_set_from_dim_aux:NNn #1#2#3
{
\group_begin:
- \l_fp_tmp_skip \etex_glueexpr:D #3 \scan_stop:
- \l_fp_tmp_dim \l_fp_tmp_skip
+ \l_fp_internal_skip \etex_glueexpr:D #3 \scan_stop:
+ \l_fp_internal_dim \l_fp_internal_skip
\fp_split:Nn a
{
\exp_after:wN \fp_set_from_dim_aux:w
- \dim_use:N \l_fp_tmp_dim
+ \dim_use:N \l_fp_internal_dim
}
\fp_standardise:NNNN
\l_fp_input_a_sign_int
@@ -1307,8 +1331,8 @@
\fp_set_from_dim_aux:w
\cs_generate_variant:Nn \fp_set_from_dim:Nn { c }
\cs_generate_variant:Nn \fp_gset_from_dim:Nn { c }
-\dim_new:N \l_fp_tmp_dim
-\skip_new:N \l_fp_tmp_skip
+\dim_new:N \l_fp_internal_dim
+\skip_new:N \l_fp_internal_skip
% \end{macrocode}
% \end{variable}
% \end{variable}
@@ -2030,15 +2054,15 @@
{
\if_int_compare:w \l_fp_round_position_int < \l_fp_round_target_int
\bool_if:NTF \l_fp_round_carry_bool
- { \l_fp_tmp_int \int_eval:w #1 + \c_one \scan_stop: }
- { \l_fp_tmp_int \int_eval:w #1 \scan_stop: }
- \if_int_compare:w \l_fp_tmp_int = \c_ten
- \l_fp_tmp_int \c_zero
+ { \l_fp_internal_int \int_eval:w #1 + \c_one \scan_stop: }
+ { \l_fp_internal_int \int_eval:w #1 \scan_stop: }
+ \if_int_compare:w \l_fp_internal_int = \c_ten
+ \l_fp_internal_int \c_zero
\else:
\bool_set_false:N \l_fp_round_carry_bool
\fi:
\tl_set:Nx \l_fp_round_decimal_tl
- { \int_use:N \l_fp_tmp_int \l_fp_round_decimal_tl }
+ { \int_use:N \l_fp_internal_int \l_fp_round_decimal_tl }
\else:
\tl_set:Nx \l_fp_round_decimal_tl { 0 \l_fp_round_decimal_tl }
\if_int_compare:w \l_fp_round_position_int = \l_fp_round_target_int
@@ -2114,7 +2138,7 @@
\group_begin:
\fp_read:N #2
\tex_advance:D \l_fp_input_a_decimal_int \c_one_thousand_million
- \tl_set:Nx \l_fp_tmp_tl
+ \tl_set:Nx \l_fp_internal_tl
{
\if_int_compare:w \l_fp_input_a_sign_int < \c_zero
+
@@ -2129,7 +2153,7 @@
\int_use:N \l_fp_input_a_exponent_int
}
\exp_after:wN \group_end: \exp_after:wN
- #1 \exp_after:wN #2 \exp_after:wN { \l_fp_tmp_tl }
+ #1 \exp_after:wN #2 \exp_after:wN { \l_fp_internal_tl }
}
% \end{macrocode}
% \end{macro}
@@ -2883,16 +2907,16 @@
% \begin{macrocode}
\cs_new_protected:Npn \fp_div_integer:NNNNN #1#2#3#4#5
{
- \l_fp_tmp_int #1
- \tex_divide:D \l_fp_tmp_int #3
- \l_fp_tmp_int \int_eval:w #1 - \l_fp_tmp_int * #3 \int_eval_end:
+ \l_fp_internal_int #1
+ \tex_divide:D \l_fp_internal_int #3
+ \l_fp_internal_int \int_eval:w #1 - \l_fp_internal_int * #3 \int_eval_end:
#4 #1
\tex_divide:D #4 #3
#5 #2
\tex_divide:D #5 #3
- \tex_multiply:D \l_fp_tmp_int \c_one_thousand
- \tex_divide:D \l_fp_tmp_int #3
- #5 \int_eval:w #5 + \l_fp_tmp_int * \c_one_million \int_eval_end:
+ \tex_multiply:D \l_fp_internal_int \c_one_thousand
+ \tex_divide:D \l_fp_internal_int #3
+ #5 \int_eval:w #5 + \l_fp_internal_int * \c_one_million \int_eval_end:
\if_int_compare:w #5 > \c_one_thousand_million
\tex_advance:D #4 \c_one
\tex_advance:D #5 -\c_one_thousand_million
@@ -2962,21 +2986,21 @@
\if_int_compare:w \l_fp_input_a_integer_int = \c_zero
\l_fp_input_a_decimal_int #1#2#3#4#5#6#7#8 \scan_stop:
\else:
- \tl_set:Nx \l_fp_tmp_tl
+ \tl_set:Nx \l_fp_internal_tl
{
\int_use:N \l_fp_input_a_integer_int
#1#2#3#4#5#6#7#8
}
\l_fp_input_a_integer_int \c_zero
- \l_fp_input_a_decimal_int \l_fp_tmp_tl \scan_stop:
+ \l_fp_input_a_decimal_int \l_fp_internal_tl \scan_stop:
\fi:
\tex_divide:D \l_fp_input_a_extended_int \c_ten
- \tl_set:Nx \l_fp_tmp_tl
+ \tl_set:Nx \l_fp_internal_tl
{
#9
\int_use:N \l_fp_input_a_extended_int
}
- \l_fp_input_a_extended_int \l_fp_tmp_tl \scan_stop:
+ \l_fp_input_a_extended_int \l_fp_internal_tl \scan_stop:
\tex_advance:D \l_fp_input_a_exponent_int \c_one
}
% \end{macrocode}
@@ -3010,14 +3034,14 @@
{
\l_fp_output_integer_int #1#2#3#4#5#6#7#8 \scan_stop:
\tex_advance:D \l_fp_output_decimal_int \c_one_thousand_million
- \tl_set:Nx \l_fp_tmp_tl
+ \tl_set:Nx \l_fp_internal_tl
{
#9
\exp_after:wN \use_none:n
\int_use:N \l_fp_output_decimal_int
}
\exp_after:wN \fp_extended_normalise_output_aux_ii:NNNNNNNNN
- \l_fp_tmp_tl
+ \l_fp_internal_tl
}
\cs_new_protected:Npn \fp_extended_normalise_output_aux_ii:NNNNNNNNN
#1#2#3#4#5#6#7#8#9
@@ -3029,13 +3053,13 @@
{
\tex_advance:D \l_fp_output_extended_int \c_one_thousand_million
\tex_divide:D \l_fp_output_extended_int \c_ten
- \tl_set:Nx \l_fp_tmp_tl
+ \tl_set:Nx \l_fp_internal_tl
{
#1
\exp_after:wN \use_none:n
\int_use:N \l_fp_output_extended_int
}
- \l_fp_output_extended_int \l_fp_tmp_tl \scan_stop:
+ \l_fp_output_extended_int \l_fp_internal_tl \scan_stop:
\tex_advance:D \l_fp_output_exponent_int \c_one
}
% \end{macrocode}
@@ -4043,27 +4067,27 @@
\l_fp_exp_exponent_int \c_zero
\exp_after:wN \fp_exp_integer_tens:
\else:
- \tl_set:Nx \l_fp_tmp_tl
+ \tl_set:Nx \l_fp_internal_tl
{
\exp_after:wN \use_i:nnn
\int_use:N \l_fp_input_a_integer_int
}
\l_fp_input_a_integer_int
\int_eval:w
- \l_fp_input_a_integer_int - \l_fp_tmp_tl 00
+ \l_fp_input_a_integer_int - \l_fp_internal_tl 00
\int_eval_end:
\if_int_compare:w \l_fp_input_a_sign_int < \c_zero
\if_int_compare:w \l_fp_output_integer_int > 200 \scan_stop:
\fp_exp_const:cx { c_fp_exp ( \l_fp_arg_tl ) _fp }
{ \c_zero_fp }
\else:
- \fp_exp_integer_const:n { - \l_fp_tmp_tl 00 }
+ \fp_exp_integer_const:n { - \l_fp_internal_tl 00 }
\exp_after:wN \exp_after:wN \exp_after:wN
\exp_after:wN \exp_after:wN \exp_after:wN
\exp_after:wN \fp_exp_integer_tens:
\fi:
\else:
- \fp_exp_integer_const:n { \l_fp_tmp_tl 00 }
+ \fp_exp_integer_const:n { \l_fp_internal_tl 00 }
\exp_after:wN \exp_after:wN \exp_after:wN
\exp_after:wN \fp_exp_integer_tens:
\fi:
@@ -4081,19 +4105,19 @@
\l_fp_output_extended_int \l_fp_exp_extended_int
\l_fp_output_exponent_int \l_fp_exp_exponent_int
\if_int_compare:w \l_fp_input_a_integer_int > \c_nine
- \tl_set:Nx \l_fp_tmp_tl
+ \tl_set:Nx \l_fp_internal_tl
{
\exp_after:wN \use_i:nn
\int_use:N \l_fp_input_a_integer_int
}
\l_fp_input_a_integer_int
\int_eval:w
- \l_fp_input_a_integer_int - \l_fp_tmp_tl 0
+ \l_fp_input_a_integer_int - \l_fp_internal_tl 0
\int_eval_end:
\if_int_compare:w \l_fp_input_a_sign_int > \c_zero
- \fp_exp_integer_const:n { \l_fp_tmp_tl 0 }
+ \fp_exp_integer_const:n { \l_fp_internal_tl 0 }
\else:
- \fp_exp_integer_const:n { - \l_fp_tmp_tl 0 }
+ \fp_exp_integer_const:n { - \l_fp_internal_tl 0 }
\fi:
\fp_mul:NNNNNNNNN
\l_fp_exp_integer_int \l_fp_exp_decimal_int \l_fp_exp_extended_int
@@ -4562,21 +4586,21 @@
\if_int_compare:w \l_fp_exp_integer_int = \c_zero
\l_fp_exp_decimal_int #1#2#3#4#5#6#7#8 \scan_stop:
\else:
- \tl_set:Nx \l_fp_tmp_tl
+ \tl_set:Nx \l_fp_internal_tl
{
\int_use:N \l_fp_exp_integer_int
#1#2#3#4#5#6#7#8
}
\l_fp_exp_integer_int \c_zero
- \l_fp_exp_decimal_int \l_fp_tmp_tl \scan_stop:
+ \l_fp_exp_decimal_int \l_fp_internal_tl \scan_stop:
\fi:
\tex_divide:D \l_fp_exp_extended_int \c_ten
- \tl_set:Nx \l_fp_tmp_tl
+ \tl_set:Nx \l_fp_internal_tl
{
#9
\int_use:N \l_fp_exp_extended_int
}
- \l_fp_exp_extended_int \l_fp_tmp_tl \scan_stop:
+ \l_fp_exp_extended_int \l_fp_internal_tl \scan_stop:
\tex_advance:D \l_fp_exp_exponent_int \c_one
}
% \end{macrocode}
@@ -4769,13 +4793,13 @@
\if_int_compare:w \l_fp_output_integer_int = \c_zero
\l_fp_output_decimal_int #1#2#3#4#5#6#7#8 \scan_stop:
\else:
- \tl_set:Nx \l_fp_tmp_tl
+ \tl_set:Nx \l_fp_internal_tl
{
\int_use:N \l_fp_output_integer_int
#1#2#3#4#5#6#7#8
}
\l_fp_output_integer_int \c_zero
- \l_fp_output_decimal_int \l_fp_tmp_tl \scan_stop:
+ \l_fp_output_decimal_int \l_fp_internal_tl \scan_stop:
\fi:
\tex_advance:D \l_fp_output_exponent_int \c_one
}
@@ -5350,7 +5374,7 @@
% \begin{macrocode}
\cs_new_protected_nopar:cpn { fp_compare_<: }
{
- \tl_set:Nx \l_fp_tmp_tl
+ \tl_set:Nx \l_fp_internal_tl
{
\int_set:Nn \exp_not:N \l_fp_input_a_sign_int
{ \int_use:N \l_fp_input_b_sign_int }
@@ -5369,7 +5393,7 @@
\int_set:Nn \exp_not:N \l_fp_input_b_exponent_int
{ \int_use:N \l_fp_input_a_exponent_int }
}
- \l_fp_tmp_tl
+ \l_fp_internal_tl
\use:c { fp_compare_>: }
}
% \end{macrocode}
@@ -5397,12 +5421,12 @@
\prg_new_protected_conditional:Npnn \fp_compare:n #1 { T , F , TF }
{
\group_begin:
- \tl_set:Nx \l_fp_tmp_tl
+ \tl_set:Nx \l_fp_internal_tl
{
\group_end:
\fp_compare_aux_i:w #1 \exp_not:n { == \q_nil == \q_stop }
}
- \l_fp_tmp_tl
+ \l_fp_internal_tl
}
\cs_new_protected:Npn \fp_compare_aux_i:w #1 == #2 == #3 \q_stop
{
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3int.dtx b/Master/texmf-dist/source/latex/l3kernel/l3int.dtx
index 2d5be22ab66..db82e1993a1 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3int.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3int.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-%% File: l3int.dtx Copyright (C) 1990-2011 The LaTeX3 Project
+%% File: l3int.dtx Copyright (C) 1990-2012 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
@@ -35,7 +35,7 @@
%
%<*driver|package>
\RequirePackage{l3names}
-\GetIdInfo$Id: l3int.dtx 3086 2011-12-22 17:55:46Z bruno $
+\GetIdInfo$Id: l3int.dtx 3139 2012-01-07 19:53:09Z bruno $
{L3 Experimental integers}
%</driver|package>
%<*driver>
@@ -192,7 +192,7 @@
% \end{syntax}
% Ensures that the \meta{integer} exists globally by applying
% \cs{int_new:N} if necessary, then applies \cs{int_(g)zero:N} to leave
-% the \meta{integer} is set to zero.
+% the \meta{integer} set to zero.
% \end{function}
%
% \begin{function}
@@ -302,9 +302,9 @@
% \begin{center}
% \begin{tabular}{ll}
% Equal & |=| or |==| \\
-% Greater than or equal to & |=>| \\
+% Greater than or equal to & |>=| \\
% Greater than & |>| \\
-% Less than or equal to & |=<| \\
+% Less than or equal to & |<=| \\
% Less than & |<| \\
% Not equal & |!=| \\
% \end{tabular}
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3io.dtx b/Master/texmf-dist/source/latex/l3kernel/l3io.dtx
index 4eb4829b4df..da17b8f5efb 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3io.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3io.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-%% File: l3io.dtx Copyright (C) 1990-2011 The LaTeX3 Project
+%% File: l3io.dtx Copyright (C) 1990-2012 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
@@ -35,7 +35,7 @@
%
%<*driver|package>
\RequirePackage{l3names}
-\GetIdInfo$Id: l3io.dtx 3096 2011-12-27 09:09:18Z joseph $
+\GetIdInfo$Id: l3io.dtx 3160 2012-01-09 02:33:23Z bruno $
{L3 Experimental input-output operations}
%</driver|package>
%<*driver>
@@ -305,71 +305,36 @@
%
% \section{Reading from files}
%
-% \begin{function}{\ior_to:NN}
+% \begin{function}{\ior_to:NN,\ior_gto:NN}
% \begin{syntax}
% \cs{ior_to:NN} \meta{stream} \meta{token list variable}
% \end{syntax}
% Functions that reads one or more lines (until an equal number of left
% and right braces are found) from the input \meta{stream} and stores
-% the result locally in the \meta{token list} variable. If the
+% the result in the \meta{token list} variable, locally or globally. If the
% \meta{stream} is not open, input is requested from the terminal.
% The material read from the \meta{stream} will be tokenized by
% \TeX{} according to the category codes in force when the function
% is used.
% \begin{texnote}
-% The is protected macro which expands to the \TeX{} primitive \tn{read}
-% along with the |to| keyword.
+% This protected macro expands to the \TeX{} primitives \tn{read}
+% or \tn{global}\tn{read} along with the |to| keyword.
% \end{texnote}
% \end{function}
%
-% \begin{function}{\ior_gto:NN}
-% \begin{syntax}
-% \cs{ior_gto:NN} \meta{stream} \meta{token list variable}
-% \end{syntax}
-% Functions that reads one or more lines (until an equal number of left
-% and right braces are found) from the input \meta{stream} and stores
-% the result globally in the \meta{token list} variable. If the
-% \meta{stream} is not open, input is requested from the terminal.
-% The material read from the \meta{stream} will be tokenized by
-% \TeX{} according to the category codes in force when the function
-% is used.
-% \begin{texnote}
-% The is protected macro which expands to the \TeX{} primitives
-% \tn{global}\tn{read} along with the |to| keyword.
-% \end{texnote}
-% \end{function}
-%
-% \begin{function}{\ior_str_to:NN}
+% \begin{function}{\ior_str_to:NN,\ior_str_gto:NN}
% \begin{syntax}
% \cs{ior_str_to:NN} \meta{stream} \meta{token list variable}
% \end{syntax}
-% Functions that reads one or more lines (until an equal number of left
-% and right braces are found) from the input \meta{stream} and stores
-% the result locally in the \meta{token list} variable. If the
-% \meta{stream} is not open, input is requested from the terminal.
-% The material read from the \meta{stream} as a series of tokens with
-% category code $12$ (other), with the exception of space
-% characters which are given category code $10$ (space).
-% \begin{texnote}
-% The is protected macro which expands to the \eTeX{} primitive
-% \tn{readline} along with the |to| keyword.
-% \end{texnote}
-% \end{function}
-%
-% \begin{function}{\ior_str_gto:NN}
-% \begin{syntax}
-% \cs{ior_str_gto:NN} \meta{stream} \meta{token list variable}
-% \end{syntax}
-% Functions that reads one or more lines (until an equal number of left
-% and right braces are found) from the input \meta{stream} and stores
-% the result globally in the \meta{token list} variable. If the
+% Functions that reads one line from the input \meta{stream} and stores
+% the result in the \meta{token list} variable, locally or globally. If the
% \meta{stream} is not open, input is requested from the terminal.
% The material read from the \meta{stream} as a series of tokens with
% category code $12$ (other), with the exception of space
% characters which are given category code $10$ (space).
% \begin{texnote}
-% The is protected macro which expands to the primitives
-% \tn{global}\tn{readline} along with the |to| keyword.
+% This protected macro expands to the \eTeX{} primitives \tn{readline}
+% or \tn{global}\tn{readline} along with the |to| keyword.
% \end{texnote}
% \end{function}
%
@@ -385,8 +350,8 @@
%\end{function}
%
% \section{Constants}
-%
-% \begin{variable}{\c_ior_term_ior}
+%
+% \begin{variable}{\c_term_ior}
% Constant input stream for reading from the terminal. Reading from this
% stream using \cs{ior_to:NN} or similar will result in a prompt from
% \TeX{} of the form
@@ -394,12 +359,40 @@
% <tl>=
% \end{verbatim}
% \end{variable}
-%
-% \begin{variable}{\c_iow_log_iow, \c_iow_term_iow}
+%
+% \begin{variable}{\c_log_iow, \c_term_iow}
% Constant output streams for writing to the log and to the terminal
% (plus the log), respectively.
% \end{variable}
%
+% \section{Experimental functions}
+%
+% \begin{function}{\ior_map_inline:nn}
+% \begin{syntax}
+% \cs{ior_map_inline:nn} \Arg{file name} \Arg{inline function}
+% \end{syntax}
+% Applies the \meta{inline function} to \meta{items} obtained by
+% reading one or more lines (until an equal number of left and right
+% braces are found) from the \meta{file}. The \meta{inline function}
+% should consist of code which will receive the \meta{line} as |#1|.
+% One in line mapping can be nested inside another.
+% If the file is not found, the \meta{inline function} is never called.
+% \end{function}
+%
+% \begin{function}{\ior_str_map_inline:nn}
+% \begin{syntax}
+% \cs{ior_str_map_inline:nn} \Arg{file name} \Arg{inline function}
+% \end{syntax}
+% Applies the \meta{inline function} to every \meta{line}
+% in the \meta{file}. The material is read from the \meta{file}
+% as a series of tokens with category code $12$ (other), with the
+% exception of space characters which are given category code $10$
+% (space). The \meta{inline function} should consist of code which
+% will receive the \meta{line} as |#1|.
+% One in line mapping can be nested inside another.
+% If the file is not found, the \meta{inline function} is never called.
+% \end{function}
+%
% \section{Internal input--output functions}
%
% \begin{function}[EXP]{\if_eof:w}
@@ -463,7 +456,7 @@
% \end{macro}
%
% \subsection{Variables and constants}
-%
+%
% \begin{variable}{\c_term_ior}
% Reading from the terminal (with a prompt) is done using a positive
% but non-existent stream number. Unlike writing, there is no concept
@@ -642,8 +635,8 @@
% \begin{macro}[aux]{\ior_stream_alloc:N}
% \begin{macro}[aux]{\iow_stream_alloc_aux:}
% \begin{macro}[aux]{\ior_stream_alloc_aux:}
-% \begin{variable}{\g_iow_tmp_stream}
-% \begin{variable}{\g_ior_tmp_stream}
+% \begin{variable}{\g_iow_internal_iow}
+% \begin{variable}{\g_ior_internal_ior}
% Allocating a raw stream is much easier in \IniTeX{} mode than for
% the package. For the format, all streams will be allocated by
% \pkg{l3io} and so there is a simple check to see if a raw
@@ -654,6 +647,8 @@
% one is needed, we get the number allocated by \LaTeXe{} to get
% \enquote{back on track} with allocation.
% \begin{macrocode}
+\iow_new:N \g_iow_internal_iow
+\ior_new:N \g_ior_internal_ior
\cs_new_protected:Npn \iow_stream_alloc:N #1
{
\cs_if_exist:cTF { g_iow_ \int_use:N \l_iow_stream_int _iow }
@@ -663,10 +658,10 @@
\iow_stream_alloc_aux:
\int_compare:nNnT \l_iow_stream_int = \c_sixteen
{
- \iow_raw_new:N \g_iow_tmp_iow
- \int_set:Nn \l_iow_stream_int { \g_iow_tmp_iow }
+ \iow_raw_new:N \g_iow_internal_iow
+ \int_set:Nn \l_iow_stream_int { \g_iow_internal_iow }
\cs_gset_eq:cN
- { g_iow_ \int_use:N \l_iow_stream_int _iow } \g_iow_tmp_iow
+ { g_iow_ \int_use:N \l_iow_stream_int _iow } \g_iow_internal_iow
}
%</package>
%<*initex>
@@ -699,10 +694,10 @@
\ior_stream_alloc_aux:
\int_compare:nNnT \l_ior_stream_int = \c_sixteen
{
- \ior_raw_new:N \g_ior_tmp_ior
- \int_set:Nn \l_ior_stream_int { \g_ior_tmp_ior }
+ \ior_raw_new:N \g_ior_internal_ior
+ \int_set:Nn \l_ior_stream_int { \g_ior_internal_ior }
\cs_gset_eq:cN
- { g_ior_ \int_use:N \l_iow_stream_int _ior } \g_ior_tmp_ior
+ { g_ior_ \int_use:N \l_iow_stream_int _ior } \g_ior_internal_ior
}
%</package>
%<*initex>
@@ -899,7 +894,7 @@
% available for other uses.
%
% \begin{macro}{\l_iow_line_length_int}
-% The is the \enquote{raw} length of a line which can be written to a
+% This is the \enquote{raw} length of a line which can be written to a
% file. The standard value is the line length typically used by
% \TeX{}Live and Mik\TeX{}.
% \begin{macrocode}
@@ -1300,6 +1295,68 @@
% \end{macro}
% \end{macro}
%
+% \subsection{Experimental functions}
+%
+% \begin{macro}{\ior_map_inline:nn}
+% \begin{macro}{\ior_str_map_inline:nn}
+% \begin{macro}[aux]{\ior_str_map_inline_aux:Nnn}
+% \begin{macro}[aux]{\ior_str_map_inline_aux:NNNnn}
+% \begin{macro}[aux]{\ior_str_map_inline_loop:NNN}
+% \begin{variable}{\l_ior_internal_tl}
+% The five arguments of \cs{ior_str_map_inline_aux:NNNnn} are:
+% the read stream used at this level of map nesting;
+% the control sequence which will hold the function to map;
+% either \cs{ior_to:NN} or \cs{ior_str_to:NN}; the file name;
+% and finally the inline function. We make sure to decrease
+% \cs{g_prg_map_int} and close the file after the mapping,
+% even if the mapping exits prematurely because of a
+% \cs{prg_map_break:} instruction. The \cs{ior_if_eof:nF}
+% tests are a little bit tricky to get right: if the file
+% does not exist, we should do nothing, hence the preliminary
+% test. Then the end-of-file test must be done after reading
+% each line.
+% \begin{macrocode}
+\tl_new:N \l_ior_internal_tl
+\cs_new_protected_nopar:Npn \ior_map_inline:nn
+ { \ior_map_inline_aux:Nnn \ior_to:NN }
+\cs_new_protected_nopar:Npn \ior_str_map_inline:nn
+ { \ior_map_inline_aux:Nnn \ior_str_to:NN }
+\cs_new_protected_nopar:Npn \ior_map_inline_aux:Nnn
+ {
+ \exp_args:Ncc \ior_map_inline_aux:NNNnn
+ { g_ior_map_ \int_use:N \g_prg_map_int _ior }
+ { ior_map_ \int_use:N \g_prg_map_int :n }
+ }
+\cs_new_protected:Npn \ior_map_inline_aux:NNNnn #1#2#3#4#5
+ {
+ \cs_if_exist:NF #1 { \ior_new:N #1 }
+ \cs_set:Npn #2 ##1 {#5}
+ \ior_open:Nn #1 {#4}
+ \int_gincr:N \g_prg_map_int
+ \ior_if_eof:NF #1 { \ior_map_inline_loop:NNN #1#2#3 }
+ \prg_break_point:n
+ {
+ \int_gdecr:N \g_prg_map_int
+ \ior_close:N #1
+ }
+ }
+\cs_new_protected:Npn \ior_map_inline_loop:NNN #1#2#3
+ {
+ #3 #1 \l_ior_internal_tl
+ \ior_if_eof:NF #1
+ {
+ \exp_args:No #2 \l_ior_internal_tl
+ \ior_map_inline_loop:NNN #1#2#3
+ }
+ }
+% \end{macrocode}
+% \end{variable}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
% \subsection{Deprecated functions}
%
% Deprecated on 2011-05-27, for removal by 2011-08-31.
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx b/Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx
index baf21f14990..15e6c362d75 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-%% File: l3luatex.dtx Copyright (C) 2010,2011 The LaTeX3 Project
+%% File: l3luatex.dtx Copyright (C) 2010-2012 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
@@ -35,7 +35,7 @@
%
%<*driver|package>
\RequirePackage{l3names}
-\GetIdInfo$Id: l3luatex.dtx 3086 2011-12-22 17:55:46Z bruno $
+\GetIdInfo$Id: l3luatex.dtx 3158 2012-01-09 00:47:42Z bruno $
{L3 Experimental LuaTeX-specific functions}
%</driver|package>
%<*driver>
@@ -340,7 +340,7 @@
%
% \begin{macro}{\cctab_begin:N}
% \begin{macro}{\cctab_end:}
-% \begin{variable}{\l_cctab_tmp_tl}
+% \begin{variable}{\l_cctab_internal_tl}
% The aim here is to ensure that the saved tables are read-only. This is
% done by using a stack of tables which are not read only, and actually
% having them as \enquote{in use} copies.
@@ -359,9 +359,9 @@
{
\int_gsub:Nn \g_cctab_stack_int { \c_two }
\seq_if_empty:NTF \g_cctab_stack_seq
- { \tl_set:Nn \l_cctab_tmp_tl { 0 } }
- { \seq_gpop:NN \g_cctab_stack_seq \l_cctab_tmp_tl }
- \luatex_catcodetable:D \l_cctab_tmp_tl \scan_stop:
+ { \tl_set:Nn \l_cctab_internal_tl { 0 } }
+ { \seq_gpop:NN \g_cctab_stack_seq \l_cctab_internal_tl }
+ \luatex_catcodetable:D \l_cctab_internal_tl \scan_stop:
}
\luatex_if_engine:F
{
@@ -383,7 +383,7 @@
\cs_set_protected_nopar:Npn \cctab_end: { \EndCatcodeRegime }
}
%</package>
-\tl_new:N \l_cctab_tmp_tl
+\tl_new:N \l_cctab_internal_tl
% \end{macrocode}
% \end{variable}
% \end{macro}
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx b/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx
index 89b6953da83..510747c1068 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-%% File: l3msg.dtx Copyright (C) 2009-2011 The LaTeX3 Project
+%% File: l3msg.dtx Copyright (C) 2009-2012 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
@@ -35,7 +35,7 @@
%
%<*driver|package>
\RequirePackage{l3names}
-\GetIdInfo$Id: l3msg.dtx 3086 2011-12-22 17:55:46Z bruno $
+\GetIdInfo$Id: l3msg.dtx 3153 2012-01-08 22:05:30Z bruno $
{L3 Experimental messages}
%</driver|package>
%<*driver>
@@ -719,10 +719,10 @@
%</package>
% \end{macrocode}
%
-% \begin{variable}{\l_msg_tmp_tl}
+% \begin{variable}{\l_msg_internal_tl}
% A general scratch for the module.
% \begin{macrocode}
-\tl_new:N \l_msg_tmp_tl
+\tl_new:N \l_msg_internal_tl
% \end{macrocode}
% \end{variable}
%
@@ -932,10 +932,10 @@
\cs_new_protected:Npn \msg_interrupt_more_text:n #1
{
%<*initex>
- \tl_set:Nx \l_msg_tmp_tl
+ \tl_set:Nx \l_msg_internal_tl
%</initex>
%<*package>
- \protected@edef \l_msg_tmp_tl
+ \protected@edef \l_msg_internal_tl
%</package>
{
|'''''''''''''''''''''''''''''''''''''''''''''''
@@ -943,7 +943,7 @@
\msg_newline:
|...............................................
}
- \tex_errhelp:D \exp_after:wN { \l_msg_tmp_tl }
+ \tex_errhelp:D \exp_after:wN { \l_msg_internal_tl }
}
% \end{macrocode}
% The business end of the process starts by producing some visual
@@ -1661,22 +1661,22 @@
% \begin{macrocode}
\msg_kernel_new:nnn { seq } { show }
{
- Sequence~\token_to_str:N #1~
+ The~sequence~\token_to_str:N #1~
\seq_if_empty:NTF #1
{ is~empty }
{ contains~the~items~(without~outer~braces): }
}
\msg_kernel_new:nnn { prop } { show }
{
- Property~list~\token_to_str:N #1~
+ The~property~list~\token_to_str:N #1~
\prop_if_empty:NTF #1
{ is~empty }
{ contains~the~pairs~(without~outer~braces): }
}
\msg_kernel_new:nnn { clist } { show }
{
- Comma~list~
- \str_if_eq:nnF {#1} { \l_clist_tmpa_clist } { \token_to_str:N #1~}
+ The~comma~list~
+ \str_if_eq:nnF {#1} { \l_clist_internal_clist } { \token_to_str:N #1~}
\clist_if_empty:NTF #1
{ is~empty }
{ contains~the~items~(without~outer~braces): }
@@ -1788,14 +1788,6 @@
% Functions defined in this section are used for diagnostic functions
% in \pkg{l3clist}, \pkg{l3io}, \pkg{l3prop}, \pkg{l3seq}, \pkg{xtemplate}
%
-% \begin{variable}{\l_msg_show_tl}
-% Used to store the material for the diagnostic functions
-% of various modules.
-% \begin{macrocode}
-\tl_new:N \l_msg_show_tl
-% \end{macrocode}
-% \end{variable}
-%
% \begin{macro}[aux]{\msg_aux_use:nn}
% \begin{macro}[aux]{\msg_aux_use:nnxxxx}
% Print the text of a message to the terminal, without formatting.
@@ -1804,11 +1796,12 @@
{ \msg_aux_use:nnxxxx {#1} {#2} { } { } { } { } }
\cs_new_protected:Npn \msg_aux_use:nnxxxx #1#2#3#4#5#6
{
- \iow_term:x
+ \iow_wrap:xnnnN
{
\use:c { \c_msg_text_prefix_tl #1 / #2 }
{#3} {#4} {#5} {#6}
}
+ { } \c_zero { } \iow_term:x
}
% \end{macrocode}
% \end{macro}
@@ -1846,14 +1839,14 @@
}
\cs_new_protected:Npn \msg_aux_show:x #1
{
- \tl_set:Nx \l_msg_show_tl {#1}
- \tl_if_empty:NT \l_msg_show_tl
- { \tl_set:Nx \l_msg_show_tl { > } }
+ \tl_set:Nx \l_msg_internal_tl {#1}
+ \tl_if_empty:NT \l_msg_internal_tl
+ { \tl_set:Nx \l_msg_internal_tl { > } }
\exp_args:Nf \etex_showtokens:D
{
\exp_after:wN \exp_after:wN
\exp_after:wN \msg_aux_show:w
- \exp_after:wN \l_msg_show_tl
+ \exp_after:wN \l_msg_internal_tl
\exp_after:wN
}
\prg_do_nothing:
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3names.dtx b/Master/texmf-dist/source/latex/l3kernel/l3names.dtx
index e38406714c5..dc6ff4ba9b6 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3names.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3names.dtx
@@ -34,8 +34,8 @@
%% -----------------------------------------------------------------------
%
%<*package>
-\RequirePackage{l3bootstrap}
-\GetIdInfo$Id: l3names.dtx 2944 2011-11-11 07:10:26Z joseph $
+\RequirePackage{l3bootstrap}[2011-12-29]
+\GetIdInfo$Id: l3names.dtx 3113 2011-12-30 09:05:11Z joseph $
{L3 Experimental namespace for primitives}
%</package>
%<*driver>
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx b/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx
index c849e21ab77..ccd95eb2d6f 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx
@@ -35,7 +35,7 @@
%
%<*driver|package>
\RequirePackage{l3names}
-\GetIdInfo$Id: l3prg.dtx 3086 2011-12-22 17:55:46Z bruno $
+\GetIdInfo$Id: l3prg.dtx 3122 2011-12-31 20:57:36Z joseph $
{L3 Experimental control structures}
%</driver|package>
%<*driver>
@@ -75,17 +75,17 @@
% states are possible, say an \meta{error} state for erroneous
% input, \emph{e.g.}, text as input in a function comparing integers.
%
-% \LaTeX3 has two primary forms of conditional flow processing based
-% on these states. One type is predicate functions that turn the
+% \LaTeX3 has two forms of conditional flow processing based
+% on these states. The firs form is predicate functions that turn the
% returned state into a boolean \meta{true} or \meta{false}. For
% example, the function |\cs_if_free_p:N| checks whether the control
% sequence given as its argument is free and then returns the boolean
% \meta{true} or \meta{false} values to be used in testing with
-% |\if_predicate:w| or in functions to be described below. The other type
+% |\if_predicate:w| or in functions to be described below. The second form
% is the kind of functions choosing a particular argument from the
% input stream based on the result of the testing as in
% |\cs_if_free:NTF| which also takes one argument (the |N|) and then
-% executes either \meta{true} or \meta{false} depending on the
+% executes either \texttt{true} or \texttt{false} depending on the
% result. Important to note here is that the arguments are executed
% after exiting the underlying |\if...\fi:| structure.
%
@@ -100,7 +100,7 @@
% \cs{prg_set_conditional:Npnn} \cs{\meta{name}:\meta{arg spec}} \meta{parameters} \Arg{conditions} \Arg{code} \\
% \cs{prg_set_conditional:Nnn} \cs{\meta{name}:\meta{arg spec}} \Arg{conditions} \Arg{code}
% \end{syntax}
-% These functions creates a family of conditionals using the same
+% These functions create a family of conditionals using the same
% \Arg{code} to perform the test created. The \texttt{new} version will
% check for existing definitions (\emph{cf.}~\cs{cs_new:Npn}) whereas
% the \texttt{set} version will not (\emph{cf.}~\cs{cs_set:Npn}). The
@@ -154,11 +154,11 @@
% \prg_return_true:
% \else:
% \prg_return_false:
-% \fi:
-% \fi:
-% }
+% \fi:
+% \fi:
+% }
% \end{verbatim}
-% This defines the function |\foo_if_bar_p:NN|, |\foo_if_bar:NNTF|,
+% This defines the function |\foo_if_bar_p:NN|, |\foo_if_bar:NNTF| and
% |\foo_if_bar:NNT| but not |\foo_if_bar:NNF| (because |F| is missing from
% the \meta{conds} list). The return statements
% take care of resolving the remaining |\else:| and |\fi:| before
@@ -172,12 +172,10 @@
% \prg_new_protected_conditional:Nnn, \prg_set_protected_conditional:Nnn
% }
% \begin{syntax}
-% \cs{prg_set_protected_conditional:Npnn}
-% ~~\cs{\meta{name}:\meta{arg spec}} \meta{parameters} \Arg{conditions} \Arg{code} \\
-% \cs{prg_set_protected_conditional:Nnn}
-% ~~\cs{\meta{name}:\meta{arg spec}} \Arg{conditions} \Arg{code}
+% \cs{prg_set_protected_conditional:Npnn} \cs{\meta{name}:\meta{arg spec}} \meta{parameters} \Arg{conditions} \Arg{code} \\
+% \cs{prg_set_protected_conditional:Nnn} \cs{\meta{name}:\meta{arg spec}} \Arg{conditions} \Arg{code}
% \end{syntax}
-% These functions creates a family of conditionals using the same
+% These functions create a family of conditionals using the same
% \Arg{code} to perform the test created. The \texttt{new} version will
% check for existing definitions (\emph{cf.}~\cs{cs_new:Npn}) whereas
% the \texttt{set} version will not (\emph{cf.}~\cs{cs_set:Npn}). The
@@ -605,8 +603,8 @@
% (using \meta{step} between each \meta{value}). Thus \meta{function}
% should absorb one numerical argument. For example
% \begin{verbatim}
-% \cs_set_nopar:Npn \my_func:n #1 { [I~saw~#1] \quad }
-% \prg_stepwise_function:nnnN { 1 } { 5 } { 1 } \my_func:n
+% \cs_set:Npn \my_func:n #1 { [I~saw~#1] \quad }
+% \prg_stepwise_function:nnnN { 1 } { 1 } { 5 } \my_func:n
% \end{verbatim}
% would print
% \begin{quote}
@@ -941,9 +939,9 @@
% This function evaluates a boolean expression and assigns the first
% argument the meaning |\c_true_bool| or |\c_false_bool|.
% \begin{macrocode}
-\cs_new:Npn \bool_set:Nn #1#2
+\cs_new_protected:Npn \bool_set:Nn #1#2
{ \tex_chardef:D #1 = \bool_if_p:n {#2} }
-\cs_new:Npn \bool_gset:Nn #1#2
+\cs_new_protected:Npn \bool_gset:Nn #1#2
{ \tex_global:D \tex_chardef:D #1 = \bool_if_p:n {#2} }
\cs_generate_variant:Nn \bool_set:Nn { c }
\cs_generate_variant:Nn \bool_gset:Nn { c }
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3prop.dtx b/Master/texmf-dist/source/latex/l3kernel/l3prop.dtx
index 273e2d102eb..ac7dc25183d 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3prop.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3prop.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-%% File: l3prop.dtx Copyright (C) 1990-2011 The LaTeX3 Project
+%% File: l3prop.dtx Copyright (C) 1990-2012 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
@@ -35,7 +35,7 @@
%
%<*driver|package>
\RequirePackage{l3names}
-\GetIdInfo$Id: l3prop.dtx 3086 2011-12-22 17:55:46Z bruno $
+\GetIdInfo$Id: l3prop.dtx 3158 2012-01-09 00:47:42Z bruno $
{L3 Experimental property lists}
%</driver|package>
%<*driver>
@@ -407,7 +407,7 @@
% property list while keeping track of a given key.
% \end{function}
%
-% \begin{function}[updated = 2011-09-15,EXP]{\prop_get:Nn, \prop_get:cn}
+% \begin{function}[updated = 2012-01-08,EXP]{\prop_get:Nn, \prop_get:cn}
% \begin{syntax}
% \cs{prop_get:Nn} \meta{property list} \Arg{key}
% \end{syntax}
@@ -417,6 +417,10 @@
% \begin{texnote}
% This function is slower than the non-expandable analogue
% \cs{prop_get:NnN}.
+% The result is returned within the \tn{unexpanded}
+% primitive (\cs{exp_not:n}), which means that the \meta{value}
+% will not expand further when appearing in an x-type
+% argument expansion.
% \end{texnote}
% \end{function}
%
@@ -1073,12 +1077,12 @@
\exp_last_unbraced:Noo \prop_get_Nn_aux:nwn
{ \tl_to_str:n {#2} } #1
\tl_to_str:n {#2} \q_prop { }
- \q_recursion_stop
+ \prg_break_point:n { }
}
\cs_new:Npn \prop_get_Nn_aux:nwn #1 \q_prop #2 \q_prop #3
{
\str_if_eq:xxTF {#1} {#2}
- { \use_i_delimit_by_q_recursion_stop:nw {#3} }
+ { \prg_map_break:n { \exp_not:n {#3} } }
{ \prop_get_Nn_aux:nwn {#1} }
}
\cs_generate_variant:Nn \prop_get:Nn { c }
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3quark.dtx b/Master/texmf-dist/source/latex/l3kernel/l3quark.dtx
index cc865cccb6c..a87d1065c61 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3quark.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3quark.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-%% File: l3quark.dtx Copyright (C) 1990-2011 The LaTeX3 Project
+%% File: l3quark.dtx Copyright (C) 1990-2012 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
@@ -35,7 +35,7 @@
%
%<*driver|package>
\RequirePackage{l3names}
-\GetIdInfo$Id: l3quark.dtx 3086 2011-12-22 17:55:46Z bruno $
+\GetIdInfo$Id: l3quark.dtx 3148 2012-01-08 15:42:18Z bruno $
{L3 Experimental quarks}
%</driver|package>
%<*driver>
@@ -89,6 +89,7 @@
% Scan marks are control sequences set equal to \cs{scan_stop:},
% hence will never expand.
%
+% Like quarks, they can be used as delimiters in weird functions.
% Since they are harmless when executed by \TeX{} in non-expandable
% contexts, they can be used to mark the end of a set of instructions.
% This allows to skip to that point if the end of the instructions
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3seq.dtx b/Master/texmf-dist/source/latex/l3kernel/l3seq.dtx
index 72e6250c070..6d1e8c71991 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3seq.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3seq.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-%% File: l3seq.dtx Copyright (C) 1990-2011 The LaTeX3 Project
+%% File: l3seq.dtx Copyright (C) 1990-2012 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
@@ -35,7 +35,7 @@
%
%<*driver|package>
\RequirePackage{l3names}
-\GetIdInfo$Id: l3seq.dtx 3085 2011-12-22 16:29:26Z bruno $
+\GetIdInfo$Id: l3seq.dtx 3158 2012-01-09 00:47:42Z bruno $
{L3 Experimental sequences and stacks}
%</driver|package>
%<*driver>
@@ -564,7 +564,7 @@
% \emph{i.e.}~every item in a \meta{sequence} is unique.
% \end{function}
%
-% \begin{function}[EXP]{\seq_item:Nn, \seq_item:cn}
+% \begin{function}[EXP, updated = 2012-01-08]{\seq_item:Nn, \seq_item:cn}
% \begin{syntax}
% \cs{seq_item:Nn} \meta{sequence} \Arg{integer expression}
% \end{syntax}
@@ -576,6 +576,12 @@
% is larger than the number of items in the \meta{sequence} (as
% calculated by \cs{seq_length:N}) then the function will expand to
% nothing.
+% \begin{texnote}
+% The result is returned within the \tn{unexpanded}
+% primitive (\cs{exp_not:n}), which means that the \meta{item}
+% will not expand further when appearing in an x-type
+% argument expansion.
+% \end{texnote}
% \end{function}
%
% \begin{function}[rEXP]{\seq_use:N, \seq_use:c}
@@ -771,11 +777,11 @@
% \end{macrocode}
% \end{macro}
%
-% \begin{variable}{\l_seq_tmpa_tl, \l_seq_tmpb_tl}
+% \begin{variable}{\l_seq_internal_a_tl, \l_seq_internal_b_tl}
% Scratch space for various internal uses.
% \begin{macrocode}
-\tl_new:N \l_seq_tmpa_tl
-\tl_new:N \l_seq_tmpb_tl
+\tl_new:N \l_seq_internal_a_tl
+\tl_new:N \l_seq_internal_b_tl
% \end{macrocode}
% \end{variable}
%
@@ -848,7 +854,7 @@
% strip spaces from each item, and remove one set of
% outer braces if after removing leading and trailing
% spaces the item is enclosed within braces. After
-% \cs{tl_replace_all:Nnn}, the token list \cs{l_seq_tmpa_tl}
+% \cs{tl_replace_all:Nnn}, the token list \cs{l_seq_internal_a_tl}
% is a repetition of the pattern
% \cs{seq_set_split_aux_i:w} \cs{prg_do_nothing:}
% \meta{item with spaces} \cs{seq_set_split_aux_end:}.
@@ -872,19 +878,19 @@
\tl_if_empty:nTF {#3}
{ #1 #2 { \tl_map_function:nN {#4} \seq_wrap_item:n } }
{
- \tl_set:Nn \l_seq_tmpa_tl
+ \tl_set:Nn \l_seq_internal_a_tl
{
\seq_set_split_aux_i:w \prg_do_nothing:
#4
\seq_set_split_aux_end:
}
- \tl_replace_all:Nnn \l_seq_tmpa_tl { #3 }
+ \tl_replace_all:Nnn \l_seq_internal_a_tl { #3 }
{
\seq_set_split_aux_end:
\seq_set_split_aux_i:w \prg_do_nothing:
}
- \tl_set:Nx \l_seq_tmpa_tl { \l_seq_tmpa_tl }
- #1 #2 { \l_seq_tmpa_tl }
+ \tl_set:Nx \l_seq_internal_a_tl { \l_seq_internal_a_tl }
+ #1 #2 { \l_seq_internal_a_tl }
}
}
\cs_new:Npn \seq_set_split_aux_i:w #1 \seq_set_split_aux_end:
@@ -982,10 +988,10 @@
% \end{macrocode}
% \end{macro}
%
-% \begin{variable}{\l_seq_remove_seq}
+% \begin{variable}{\l_seq_internal_remove_seq}
% An internal sequence for the removal routines.
% \begin{macrocode}
-\seq_new:N \l_seq_remove_seq
+\seq_new:N \l_seq_internal_remove_seq
% \end{macrocode}
% \end{variable}
%
@@ -1002,13 +1008,13 @@
{ \seq_remove_duplicates_aux:NN \seq_gset_eq:NN }
\cs_new_protected:Npn \seq_remove_duplicates_aux:NN #1#2
{
- \seq_clear:N \l_seq_remove_seq
+ \seq_clear:N \l_seq_internal_remove_seq
\seq_map_inline:Nn #2
{
- \seq_if_in:NnF \l_seq_remove_seq {##1}
- { \seq_put_right:Nn \l_seq_remove_seq {##1} }
+ \seq_if_in:NnF \l_seq_internal_remove_seq {##1}
+ { \seq_put_right:Nn \l_seq_internal_remove_seq {##1} }
}
- #1 #2 \l_seq_remove_seq
+ #1 #2 \l_seq_internal_remove_seq
}
\cs_generate_variant:Nn \seq_remove_duplicates:N { c }
\cs_generate_variant:Nn \seq_gremove_duplicates:N { c }
@@ -1048,16 +1054,16 @@
\str_if_eq:nnT {##1} {#3}
{
\if_false: { \fi: }
- \tl_set:Nn \l_seq_tmpb_tl {##1}
+ \tl_set:Nn \l_seq_internal_b_tl {##1}
#1 #2
{ \if_false: } \fi:
\exp_not:o {#2}
- \tl_if_eq:NNT \l_seq_tmpa_tl \l_seq_tmpb_tl
+ \tl_if_eq:NNT \l_seq_internal_a_tl \l_seq_internal_b_tl
{ \use_none:nn }
}
\seq_wrap_item:n {##1}
}
- \tl_set:Nn \l_seq_tmpa_tl {#3}
+ \tl_set:Nn \l_seq_internal_a_tl {#3}
#1 #2 {#2}
\seq_pop_item_def:
}
@@ -1101,11 +1107,11 @@
{ T , F , TF }
{
\group_begin:
- \tl_set:Nn \l_seq_tmpa_tl {#2}
+ \tl_set:Nn \l_seq_internal_a_tl {#2}
\cs_set_protected:Npn \seq_item:n ##1
{
- \tl_set:Nn \l_seq_tmpb_tl {##1}
- \if_meaning:w \l_seq_tmpa_tl \l_seq_tmpb_tl
+ \tl_set:Nn \l_seq_internal_b_tl {##1}
+ \if_meaning:w \l_seq_internal_a_tl \l_seq_internal_b_tl
\exp_after:wN \seq_if_in_aux:
\fi:
}
@@ -1635,7 +1641,7 @@
{
\use_none:n #2
\int_compare:nNnTF {#1} = \c_zero
- { \seq_break:n {#3} }
+ { \seq_break:n { \exp_not:n {#3} } }
{ \exp_args:Nf \seq_item_aux:nnn { \int_eval:n { #1 - 1 } } }
}
\cs_generate_variant:Nn \seq_item:Nn { c }
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx b/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx
index 419cb6398f6..44e0bf5a45d 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx
@@ -1,6 +1,7 @@
% \iffalse meta-comment
%
%% File: l3skip.dtx Copyright (C) 2004-2011 Frank Mittelbach, The LaTeX3 Project
+%% (C) 2012 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
@@ -35,7 +36,7 @@
%
%<*driver|package>
\RequirePackage{l3names}
-\GetIdInfo$Id: l3skip.dtx 3086 2011-12-22 17:55:46Z bruno $
+\GetIdInfo$Id: l3skip.dtx 3139 2012-01-07 19:53:09Z bruno $
{L3 Experimental dimensions and skips}
%</driver|package>
%<*driver>
@@ -95,6 +96,16 @@
% Sets \meta{dimension} to $0$\,pt.
% \end{function}
%
+% \begin{function}[added = 2012-01-07]
+% {\dim_zero_new:N, \dim_zero_new:c, \dim_gzero_new:N, \dim_gzero_new:c}
+% \begin{syntax}
+% \cs{dim_zero_new:N} \meta{dimension}
+% \end{syntax}
+% Ensures that the \meta{dimension} exists globally by applying
+% \cs{dim_new:N} if necessary, then applies \cs{dim_(g)zero:N} to leave
+% the \meta{dimension} set to zero.
+% \end{function}
+%
% \section{Setting \texttt{dim} variables}
%
% \begin{function}[updated = 2011-10-22]
@@ -221,9 +232,9 @@
% \begin{center}
% \begin{tabular}{ll}
% Equal & |=| or |==| \\
-% Greater than or equal to & |=>| \\
+% Greater than or equal to & |>=| \\
% Greater than & |>| \\
-% Less than or equal to & |=<| \\
+% Less than or equal to & |<=| \\
% Less than & |<| \\
% Not equal & |!=| \\
% \end{tabular}
@@ -421,7 +432,16 @@
% \end{syntax}
% Sets \meta{skip} to $0$\,pt.
% \end{function}
-
+%
+% \begin{function}[added = 2012-01-07]
+% {\skip_zero_new:N, \skip_zero_new:c, \skip_gzero_new:N, \skip_gzero_new:c}
+% \begin{syntax}
+% \cs{skip_zero_new:N} \meta{skip}
+% \end{syntax}
+% Ensures that the \meta{skip} exists globally by applying
+% \cs{skip_new:N} if necessary, then applies \cs{skip_(g)zero:N} to leave
+% the \meta{skip} set to zero.
+% \end{function}
%
% \section{Setting \texttt{skip} variables}
%
@@ -584,6 +604,19 @@
% Sets \meta{muskip} to $0$\,mu.
% \end{function}
%
+% \begin{function}[added = 2012-01-07]
+% {
+% \muskip_zero_new:N, \muskip_zero_new:c,
+% \muskip_gzero_new:N, \muskip_gzero_new:c
+% }
+% \begin{syntax}
+% \cs{muskip_zero_new:N} \meta{muskip}
+% \end{syntax}
+% Ensures that the \meta{muskip} exists globally by applying
+% \cs{muskip_new:N} if necessary, then applies \cs{muskip_(g)zero:N}
+% to leave the \meta{muskip} set to zero.
+% \end{function}
+%
% \section{Setting \texttt{muskip} variables}
%
% \begin{function}[updated = 2011-10-22]
@@ -836,6 +869,19 @@
% \end{macro}
% \end{macro}
%
+% \begin{macro}
+% {\dim_zero_new:N, \dim_zero_new:c, \dim_gzero_new:N, \dim_gzero_new:c}
+% Create a register if needed, otherwise clear it.
+% \begin{macrocode}
+\cs_new_protected:Npn \dim_zero_new:N #1
+ { \cs_if_exist:NTF #1 { \dim_zero:N #1 } { \dim_new:N #1 } }
+\cs_new_protected:Npn \dim_gzero_new:N #1
+ { \cs_if_exist:NTF #1 { \dim_gzero:N #1 } { \dim_new:N #1 } }
+\cs_generate_variant:Nn \dim_zero_new:N { c }
+\cs_generate_variant:Nn \dim_gzero_new:N { c }
+% \end{macrocode}
+% \end{macro}
+%
% \subsection{Setting \texttt{dim} variables}
%
% \begin{macro}{\dim_set:Nn, \dim_set:cn}
@@ -1290,6 +1336,19 @@
% \end{macro}
% \end{macro}
%
+% \begin{macro}
+% {\skip_zero_new:N, \skip_zero_new:c, \skip_gzero_new:N, \skip_gzero_new:c}
+% Create a register if needed, otherwise clear it.
+% \begin{macrocode}
+\cs_new_protected:Npn \skip_zero_new:N #1
+ { \cs_if_exist:NTF #1 { \skip_zero:N #1 } { \skip_new:N #1 } }
+\cs_new_protected:Npn \skip_gzero_new:N #1
+ { \cs_if_exist:NTF #1 { \skip_gzero:N #1 } { \skip_new:N #1 } }
+\cs_generate_variant:Nn \skip_zero_new:N { c }
+\cs_generate_variant:Nn \skip_gzero_new:N { c }
+% \end{macrocode}
+% \end{macro}
+%
% \subsection{Setting \texttt{skip} variables}
%
% \begin{macro}{\skip_set:Nn, \skip_set:cn}
@@ -1495,6 +1554,22 @@
% \end{macro}
% \end{macro}
%
+% \begin{macro}
+% {
+% \muskip_zero_new:N, \muskip_zero_new:c,
+% \muskip_gzero_new:N, \muskip_gzero_new:c
+% }
+% Create a register if needed, otherwise clear it.
+% \begin{macrocode}
+\cs_new_protected:Npn \muskip_zero_new:N #1
+ { \cs_if_exist:NTF #1 { \muskip_zero:N #1 } { \muskip_new:N #1 } }
+\cs_new_protected:Npn \muskip_gzero_new:N #1
+ { \cs_if_exist:NTF #1 { \muskip_gzero:N #1 } { \muskip_new:N #1 } }
+\cs_generate_variant:Nn \muskip_zero_new:N { c }
+\cs_generate_variant:Nn \muskip_gzero_new:N { c }
+% \end{macrocode}
+% \end{macro}
+%
% \subsection{Setting \texttt{muskip} variables}
%
% \begin{macro}{\muskip_set:Nn, \muskip_set:cn}
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx b/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx
index 1424199ecd6..42e16e29c9e 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-%% File: l3tl.dtx Copyright (C) 1990-2011 The LaTeX3 Project
+%% File: l3tl.dtx Copyright (C) 1990-2012 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
@@ -35,7 +35,7 @@
%
%<*driver|package>
\RequirePackage{l3names}
-\GetIdInfo$Id: l3tl.dtx 3091 2011-12-25 16:22:59Z bruno $
+\GetIdInfo$Id: l3tl.dtx 3158 2012-01-09 00:47:42Z bruno $
{L3 Experimental token lists}
%</driver|package>
%<*driver>
@@ -596,7 +596,7 @@
% giving an \meta{integer denotation}.
% \end{function}
%
-% \begin{function}[updated = 2011-08-13, EXP]
+% \begin{function}[updated = 2012-01-08, EXP]
% {\tl_reverse:n, \tl_reverse:V, \tl_reverse:o}
% \begin{syntax}
% \cs{tl_reverse:n} \Arg{token list}
@@ -610,9 +610,15 @@
% In situations where performance is important,
% consider \cs{tl_reverse_items:n}.
% See also \cs{tl_reverse:N}.
+% \begin{texnote}
+% The result is returned within the \tn{unexpanded}
+% primitive (\cs{exp_not:n}), which means that the token
+% list will not expand further when appearing in an x-type
+% argument expansion.
+% \end{texnote}
% \end{function}
%
-% \begin{function}[updated = 2011-11-22]
+% \begin{function}[updated = 2012-01-08]
% {\tl_reverse:N, \tl_reverse:c, \tl_greverse:N, \tl_greverse:c}
% \begin{syntax}
% \cs{tl_reverse:N} \Arg{tl~var}
@@ -626,7 +632,7 @@
% See also \cs{tl_reverse:n}.
% \end{function}
%
-% \begin{function}[added = 2011-08-13, EXP]{\tl_reverse_items:n}
+% \begin{function}[added = 2012-01-08, EXP]{\tl_reverse_items:n}
% \begin{syntax}
% \cs{tl_reverse_items:n} \Arg{token list}
% \end{syntax}
@@ -639,6 +645,12 @@
% Items which are initially not braced are copied with braces in
% the result. In cases where preserving spaces is important,
% consider \cs{tl_reverse:n} or \cs{tl_reverse_tokens:n}.
+% \begin{texnote}
+% The result is returned within the \tn{unexpanded}
+% primitive (\cs{exp_not:n}), which means that the token
+% list will not expand further when appearing in an x-type
+% argument expansion.
+% \end{texnote}
% \end{function}
%
% \begin{function}[added = 2011-07-09, updated = 2011-08-13, EXP]
@@ -650,7 +662,7 @@
% from the \meta{token list} and leaves the result in the input
% stream. This process requires two expansions.
% \begin{texnote}
-% The result is return within the \tn{unexpanded}
+% The result is returned within the \tn{unexpanded}
% primitive (\cs{exp_not:n}), which means that the token
% list will not expand further when appearing in an x-type
% argument expansion.
@@ -674,7 +686,7 @@
% Functions which deal with either only the very first token of a
% token list or everything except the first token.
%
-% \begin{function}[updated = 2011-08-09, EXP]
+% \begin{function}[updated = 2012-01-08, EXP]
% {\tl_head:n, \tl_head:V, \tl_head:v, \tl_head:f}
% \begin{syntax}
% \cs{tl_head:n} \Arg{tokens}
@@ -693,6 +705,12 @@
% An empty list of \meta{tokens} or one which consists
% only of space (category code $10$) tokens will result in \cs{tl_head:n}
% leaving nothing in the input stream.
+% \begin{texnote}
+% The result is returned within the \tn{unexpanded}
+% primitive (\cs{exp_not:n}), which means that the token
+% list will not expand further when appearing in an x-type
+% argument expansion.
+% \end{texnote}
% \end{function}
%
% \begin{function}[EXP]{\tl_head:w}
@@ -709,7 +727,7 @@
% is not critical.
% \end{function}
%
-% \begin{function}[updated = 2011-08-09, EXP]
+% \begin{function}[updated = 2012-01-08, EXP]
% {\tl_tail:n, \tl_tail:V, \tl_tail:v, \tl_tail:f}
% \begin{syntax}
% \cs{tl_tail:n} \Arg{tokens}
@@ -728,6 +746,12 @@
% An empty list of \meta{tokens} or one which consists
% only of space (category code $10$) tokens will result in \cs{tl_tail:n}
% leaving nothing in the input stream.
+% \begin{texnote}
+% The result is returned within the \tn{unexpanded}
+% primitive (\cs{exp_not:n}), which means that the token
+% list will not expand further when appearing in an x-type
+% argument expansion.
+% \end{texnote}
% \end{function}
%
% \begin{function}[EXP]{\tl_tail:w}
@@ -911,7 +935,7 @@
%
% \section{Experimental token list functions}
%
-% \begin{function}[added = 2011-08-11, EXP]{\tl_reverse_tokens:n}
+% \begin{function}[added = 2012-01-08, EXP]{\tl_reverse_tokens:n}
% \begin{syntax}
% \cs{tl_reverse_tokens:n} \Arg{tokens}
% \end{syntax}
@@ -923,6 +947,12 @@
% list. For instance, \cs{tl_reverse_tokens:n} |{a~{b()}}|
% leaves |{)(b}~a| in the input stream. This function requires
% two steps of expansion.
+% \begin{texnote}
+% The result is returned within the \tn{unexpanded}
+% primitive (\cs{exp_not:n}), which means that the token
+% list will not expand further when appearing in an x-type
+% argument expansion.
+% \end{texnote}
% \end{function}
%
% \begin{function}[added = 2011-08-11, EXP]{\tl_length_tokens:n}
@@ -937,7 +967,7 @@
% giving an \meta{integer denotation}.
% \end{function}
%
-% \begin{function}[added = 2011-08-13, EXP]
+% \begin{function}[added = 2012-01-08, EXP]
% {\tl_expandable_uppercase:n,\tl_expandable_lowercase:n}
% \begin{syntax}
% \cs{tl_expandable_uppercase:n} \Arg{tokens}
@@ -953,10 +983,14 @@
% \begin{texnote}
% Begin-group and end-group characters are normalized and become
% |{| and |}|, respectively.
+% The result is returned within the \tn{unexpanded}
+% primitive (\cs{exp_not:n}), which means that the token
+% list will not expand further when appearing in an x-type
+% argument expansion.
% \end{texnote}
% \end{function}
%
-% \begin{function}[added = 2011-11-21, EXP]
+% \begin{function}[added = 2011-11-21, updated = 2012-01-08, EXP]
% {\tl_item:nn, \tl_item:Nn, \tl_item:cn}
% \begin{syntax}
% \cs{tl_item:nn} \Arg{token list} \Arg{integer expression}
@@ -965,8 +999,14 @@
% function will evaluate the \meta{integer expression} and leave the
% appropriate item from the \meta{token list} in the input stream.
% If the \meta{integer expression} is negative, indexing occurs from
-% the right of the sequence, starting at $-1$ for the right-most item.
+% the right of the token list, starting at $-1$ for the right-most item.
% If the index is out of bounds, then thr function expands to nothing.
+% \begin{texnote}
+% The result is returned within the \tn{unexpanded}
+% primitive (\cs{exp_not:n}), which means that the \meta{item}
+% will not expand further when appearing in an x-type
+% argument expansion.
+% \end{texnote}
% \end{function}
%
% \section{Internal functions}
@@ -1313,14 +1353,6 @@
%
% \subsection{Modifying token list variables}
%
-% \begin{variable}{\l_tl_replace_tl}
-% A scratch variable for doing token replacement.
-% \begin{macrocode}
-\tl_new:N \l_tl_replace_tl
-% \end{macrocode}
-% \end{variable}
-%
-%
% \begin{macro}{\tl_replace_all:Nnn, \tl_replace_all:cnn}
% \begin{macro}{\tl_greplace_all:Nnn, \tl_greplace_all:cnn}
% \begin{macro}{\tl_replace_once:Nnn, \tl_replace_once:cnn}
@@ -1578,15 +1610,15 @@
% \end{macro}
%
% \begin{macro}[TF]{\tl_if_eq:nn}
-% \begin{variable}{\l_tl_tmpa_tl, \l_tl_tmpb_tl}
+% \begin{variable}{\l_tl_internal_a_tl, \l_tl_internal_b_tl}
% A simple store and compare routine.
% \begin{macrocode}
\prg_new_protected_conditional:Npnn \tl_if_eq:nn #1#2 { T , F , TF }
{
\group_begin:
- \tl_set:Nn \l_tl_tmpa_tl {#1}
- \tl_set:Nn \l_tl_tmpb_tl {#2}
- \if_meaning:w \l_tl_tmpa_tl \l_tl_tmpb_tl
+ \tl_set:Nn \l_tl_internal_a_tl {#1}
+ \tl_set:Nn \l_tl_internal_b_tl {#2}
+ \if_meaning:w \l_tl_internal_a_tl \l_tl_internal_b_tl
\group_end:
\prg_return_true:
\else:
@@ -1594,8 +1626,8 @@
\prg_return_false:
\fi:
}
-\tl_new:N \l_tl_tmpa_tl
-\tl_new:N \l_tl_tmpb_tl
+\tl_new:N \l_tl_internal_a_tl
+\tl_new:N \l_tl_internal_b_tl
% \end{macrocode}
% \end{variable}
% \end{macro}
@@ -1795,7 +1827,7 @@
% \begin{macro}[aux]{\tl_reverse_items_aux:nwNwn}
% \begin{macro}[aux]{\tl_reverse_items_aux:wn}
% Reversal of a token list is done by taking one item at a time
-% and putting it after \cs{q_recursion_stop}.
+% and putting it after \cs{q_stop}.
% \begin{macrocode}
\cs_new:Npn \tl_reverse_items:n #1
{
@@ -1811,7 +1843,8 @@
\q_mark \tl_reverse_items_aux:wn
\q_stop { {#1} #5 }
}
-\cs_new:Npn \tl_reverse_items_aux:wn #1 \q_stop #2 { \use_none:nn #2 }
+\cs_new:Npn \tl_reverse_items_aux:wn #1 \q_stop #2
+ { \exp_not:o { \use_none:nn #2 } }
% \end{macrocode}
% \end{macro}
% \end{macro}
@@ -1905,15 +1938,16 @@
% \begin{macro}{\tl_tail:w}
% These functions pick up either the head or the tail of a list. The
% empty brace groups in \cs{tl_head:n} and \cs{tl_tail:n} ensure that
-% a blank argument gives an empty result.
+% a blank argument gives an empty result. The result is returned within
+% the \tn{unexpanded} primitive.
% \begin{macrocode}
\cs_new:Npn \tl_head:w #1#2 \q_stop {#1}
\cs_new:Npn \tl_tail:w #1#2 \q_stop {#2}
\cs_new:Npn \tl_head:n #1
- { \tl_head:w #1 { } \q_stop }
+ { \etex_unexpanded:D \exp_after:wN { \tl_head:w #1 { } \q_stop } }
\cs_new:Npn \tl_tail:n #1
- { \tl_tail_aux:w #1 \q_mark { } \q_mark \q_stop }
-\cs_new:Npn \tl_tail_aux:w #1 #2 \q_mark #3 \q_stop { #2 }
+ { \etex_unexpanded:D \tl_tail_aux:w #1 \q_mark { } \q_mark \q_stop }
+\cs_new:Npn \tl_tail_aux:w #1 #2 \q_mark #3 \q_stop { {#2} }
\cs_generate_variant:Nn \tl_head:n { V , v , f }
\cs_generate_variant:Nn \tl_tail:n { V , v , f }
% \end{macrocode}
@@ -2397,14 +2431,18 @@
% upper/lowercasing action stores the information of whether it
% is uppercasing or lowercasing.
% \begin{macrocode}
-\cs_new:Npn \tl_reverse_tokens:n
+\cs_new:Npn \tl_reverse_tokens:n #1
{
- \tex_romannumeral:D
- \tl_act_aux:NNNnn
- \tl_act_reverse_normal:nN
- \tl_act_reverse_group:nn
- \tl_act_reverse_space:n
- { }
+ \etex_unexpanded:D \exp_after:wN
+ {
+ \tex_romannumeral:D
+ \tl_act_aux:NNNnn
+ \tl_act_reverse_normal:nN
+ \tl_act_reverse_group:nn
+ \tl_act_reverse_space:n
+ { }
+ {#1}
+ }
}
\cs_new:Npn \tl_act_reverse_space:n #1
{ \tl_act_reverse_output:n {~} }
@@ -2426,14 +2464,18 @@
% The only difference with \cs{tl_reverse_tokens:n} is that
% we now simply output groups without entering them.
% \begin{macrocode}
-\cs_new:Npn \tl_reverse:n
+\cs_new:Npn \tl_reverse:n #1
{
- \tex_romannumeral:D
- \tl_act_aux:NNNnn
- \tl_act_reverse_normal:nN
- \tl_act_reverse_group_preserve:nn
- \tl_act_reverse_space:n
- { }
+ \etex_unexpanded:D \exp_after:wN
+ {
+ \tex_romannumeral:D
+ \tl_act_aux:NNNnn
+ \tl_act_reverse_normal:nN
+ \tl_act_reverse_group_preserve:nn
+ \tl_act_reverse_space:n
+ { }
+ {#1}
+ }
}
\cs_new:Npn \tl_act_reverse_group_preserve:nn #1 #2
{ \tl_act_reverse_output:n { {#2} } }
@@ -2447,9 +2489,9 @@
% which stops the \texttt{f}-expansion.
% \begin{macrocode}
\cs_new_protected:Npn \tl_reverse:N #1
- { \tl_set:Nf #1 { \tl_reverse:o { #1 \exp_stop_f: } } }
+ { \tl_set:Nx #1 { \exp_args:No \tl_reverse:n { #1 } } }
\cs_new_protected:Npn \tl_greverse:N #1
- { \tl_gset:Nf #1 { \tl_reverse:o { #1 \exp_stop_f: } } }
+ { \tl_gset:Nx #1 { \exp_args:No \tl_reverse:n { #1 } } }
\cs_generate_variant:Nn \tl_reverse:N { c }
\cs_generate_variant:Nn \tl_greverse:N { c }
% \end{macrocode}
@@ -2517,10 +2559,22 @@
% \tn{romannumeral}, which expands fully to give the
% converted group), then output.
% \begin{macrocode}
-\cs_new:Npn \tl_expandable_uppercase:n
- { \tex_romannumeral:D \tl_act_case_aux:nn { \c_tl_act_uppercase_tl } }
-\cs_new:Npn \tl_expandable_lowercase:n
- { \tex_romannumeral:D \tl_act_case_aux:nn { \c_tl_act_lowercase_tl } }
+\cs_new:Npn \tl_expandable_uppercase:n #1
+ {
+ \etex_unexpanded:D \exp_after:wN
+ {
+ \tex_romannumeral:D
+ \tl_act_case_aux:nn { \c_tl_act_uppercase_tl } {#1}
+ }
+ }
+\cs_new:Npn \tl_expandable_lowercase:n #1
+ {
+ \etex_unexpanded:D \exp_after:wN
+ {
+ \tex_romannumeral:D
+ \tl_act_case_aux:nn { \c_tl_act_lowercase_tl } {#1}
+ }
+ }
\cs_new:Npn \tl_act_case_aux:nn
{
\tl_act_aux:NNNnn
@@ -2572,7 +2626,7 @@
{
\quark_if_recursion_tail_break:n {#2}
\int_compare:nNnTF {#1} = \c_zero
- { \tl_map_break:n {#2} }
+ { \tl_map_break:n { \exp_not:n {#2} } }
{ \exp_args:Nf \tl_item_aux:nn { \int_eval:n { #1 - 1 } } }
}
\cs_new_nopar:Npn \tl_item:Nn { \exp_args:No \tl_item:nn }
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3token.dtx b/Master/texmf-dist/source/latex/l3kernel/l3token.dtx
index 2dcccabbb4e..0c145dd47ea 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3token.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3token.dtx
@@ -35,7 +35,7 @@
%
%<*driver|package>
\RequirePackage{l3names}
-\GetIdInfo$Id: l3token.dtx 3099 2011-12-27 21:41:02Z joseph $
+\GetIdInfo$Id: l3token.dtx 3123 2011-12-31 21:51:51Z joseph $
{L3 Experimental token manipulation}
%</driver|package>
%<*driver>
@@ -243,7 +243,7 @@
% \cs{char_set_uccode:nn} \Arg{intexpr1} \Arg{intexpr2}
% \end{syntax}
% This function set up the behaviour of \meta{character} when
-% found inside \cs{tl_to_uppeercase:n}, such that \meta{character1}
+% found inside \cs{tl_to_uppercase:n}, such that \meta{character1}
% will be converted into \meta{character2}. The two \meta{characters}
% may be specified using an \meta{integer expression} for the character code
% concerned. This may include the \TeX{} |`|\meta{character}
@@ -878,9 +878,9 @@
% \end{texnote}
% \end{function}
%
-% \begin{function}[EXP]{\token_get_replacement_text:N}
+% \begin{function}[EXP]{\token_get_replacement_spec:N}
% \begin{syntax}
-% \cs{token_get_replacement_text:N} \meta{token}
+% \cs{token_get_replacement_spec:N} \meta{token}
% \end{syntax}
% If the \meta{token} is a macro, this function will leave
% the replacement text in input stream as
diff --git a/Master/texmf-dist/tex/latex/l3kernel/expl3.sty b/Master/texmf-dist/tex/latex/l3kernel/expl3.sty
index 906b5d1fc9f..4c96696adb5 100644
--- a/Master/texmf-dist/tex/latex/l3kernel/expl3.sty
+++ b/Master/texmf-dist/tex/latex/l3kernel/expl3.sty
@@ -13,7 +13,7 @@
%%
%% Do not distribute a modified version of this file.
%%
-%% File: expl3.dtx Copyright (C) 1990-2011 The LaTeX3 Project
+%% File: expl3.dtx Copyright (C) 1990-2012 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,11 +45,22 @@
%% prior consultation with the LaTeX3 Project.
%%
%% -----------------------------------------------------------------------
-\RequirePackage{l3names}
+\RequirePackage{l3names}[2011/12/30]
+\@ifpackagelater{l3names}{2011/12/30}
+ {}
+ {
+ \PackageError{expl3}{Mismatched LaTeX3 packages detected.}
+ {
+ Please install an up to date~version of l3kernel
+ using your TeX package manager or from CTAN.\\ \\
+ Loading expl3 will abort!
+ }
+ \endinput
+ }
\def\ExplFileName{expl3}
\def\ExplFileDescription{L3 Experimental code bundle wrapper}
-\def\ExplFileDate{2011/12/29}
-\def\ExplFileVersion{3109}
+\def\ExplFileDate{2012/01/19}
+\def\ExplFileVersion{3209}
\RequirePackage{etex}
\reserveinserts{32}
\RequirePackage{calc}
@@ -71,7 +82,7 @@
\fi
\RequirePackage{ l3basics, l3expan, l3tl }
\ifodd \l@expl@check@declarations@bool \relax
- \cs_new_protected:Npn \tl_check_exists:N #1
+ \cs_new_protected:Npn \cs_check_exists:N #1
{
\cs_if_exist:NF #1
{
@@ -81,34 +92,34 @@
}
\cs_set_protected:Npn \tl_set:Nn #1#2
{
- \tl_check_exists:N #1
+ \cs_check_exists:N #1
\cs_set_nopar:Npx #1 { \exp_not:n {#2} }
}
\cs_set_protected:Npn \tl_set:Nx #1#2
{
- \tl_check_exists:N #1
+ \cs_check_exists:N #1
\cs_set_nopar:Npx #1 {#2}
}
\cs_set_protected:Npn \tl_gset:Nn #1#2
{
- \tl_check_exists:N #1
+ \cs_check_exists:N #1
\cs_gset_nopar:Npx #1 { \exp_not:n {#2} }
}
\cs_set_protected:Npn \tl_gset:Nx #1#2
{
- \tl_check_exists:N #1
+ \cs_check_exists:N #1
\cs_gset_nopar:Npx #1 {#2}
}
\cs_set_protected:Npn \tl_set_eq:NN #1#2
{
- \tl_check_exists:N #1
- \tl_check_exists:N #2
+ \cs_check_exists:N #1
+ \cs_check_exists:N #2
\cs_set_eq:NN #1 #2
}
\cs_set_protected:Npn \tl_gset_eq:NN #1#2
{
- \tl_check_exists:N #1
- \tl_check_exists:N #2
+ \cs_check_exists:N #1
+ \cs_check_exists:N #2
\cs_gset_eq:NN #1 #2
}
\fi
@@ -116,7 +127,58 @@
l3seq,
l3int,
l3quark,
- l3prg,
+ l3prg}
+\ifodd \l@expl@check@declarations@bool \relax
+ \cs_set_protected:Npn \bool_set_true:N #1
+ {
+ \cs_check_exists:N #1
+ \cs_set_eq:NN #1 \c_true_bool
+ }
+ \cs_set_protected:Npn \bool_set_false:N #1
+ {
+ \cs_check_exists:N #1
+ \cs_set_eq:NN #1 \c_false_bool
+ }
+ \cs_set_protected:Npn \bool_gset_true:N #1
+ {
+ \cs_check_exists:N #1
+ \cs_gset_eq:NN #1 \c_true_bool
+ }
+ \cs_set_protected:Npn \bool_gset_false:N #1
+ {
+ \cs_check_exists:N #1
+ \cs_gset_eq:NN #1 \c_false_bool
+ }
+ \cs_set_protected:Npn \bool_set_eq:NN #1
+ {
+ \cs_check_exists:N #1
+ \cs_set_eq:NN #1
+ }
+ \cs_undefine:N \bool_set_eq:cN
+ \cs_undefine:N \bool_set_eq:Nc
+ \cs_undefine:N \bool_set_eq:cc
+ \cs_generate_variant:Nn \bool_set_eq:NN { c , Nc , cc }
+ \cs_set_protected:Npn \bool_gset_eq:NN #1
+ {
+ \cs_check_exists:N #1
+ \cs_set_eq:NN #1
+ }
+ \cs_undefine:N \bool_gset_eq:cN
+ \cs_undefine:N \bool_gset_eq:Nc
+ \cs_undefine:N \bool_gset_eq:cc
+ \cs_generate_variant:Nn \bool_gset_eq:NN { c , Nc , cc }
+ \cs_set_protected:Npn \bool_set:Nn #1#2
+ {
+ \cs_check_exists:N #1
+ \tex_chardef:D #1 = \bool_if_p:n {#2}
+ }
+ \cs_set_protected:Npn \bool_gset:Nn #1#2
+ {
+ \cs_check_exists:N #1
+ \tex_global:D \tex_chardef:D #1 = \bool_if_p:n {#2}
+ }
+\fi
+\RequirePackage{
l3clist,
l3token,
l3prop,
diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3basics.sty b/Master/texmf-dist/tex/latex/l3kernel/l3basics.sty
index 6faa1110ad1..39a6bbaef22 100644
--- a/Master/texmf-dist/tex/latex/l3kernel/l3basics.sty
+++ b/Master/texmf-dist/tex/latex/l3kernel/l3basics.sty
@@ -13,7 +13,7 @@
%%
%% Do not distribute a modified version of this file.
%%
-%% File: l3basics.dtx Copyright (C) 1990-2011 The LaTeX3 project
+%% File: l3basics.dtx Copyright (C) 1990-2012 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,7 +46,7 @@
%%
%% -----------------------------------------------------------------------
\RequirePackage{l3names}
-\GetIdInfo$Id: l3basics.dtx 3090 2011-12-23 03:12:53Z bruno $
+\GetIdInfo$Id: l3basics.dtx 3196 2012-01-15 09:44:05Z joseph $
{L3 Experimental basic definitions}
\ProvidesExplPackage
{\ExplFileName}{\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription}
@@ -141,13 +141,9 @@
\cs_set:Npn \use:c #1 { \cs:w #1 \cs_end: }
\cs_set_protected:Npn \use:x #1
{
- \group_begin:
- \cs_set_nopar:Npx \cs_tmp:w {#1}
- \exp_after:wN
- \group_end:
- \cs_tmp:w
+ \cs_set_nopar:Npx \l_exp_internal_tl {#1}
+ \l_exp_internal_tl
}
-\cs_set:Npn \cs_tmp:w { }
\cs_set:Npn \use:n #1 {#1}
\cs_set:Npn \use:nn #1#2 {#1#2}
\cs_set:Npn \use:nnn #1#2#3 {#1#2#3}
@@ -618,9 +614,11 @@
\cs_new_protected:Npn
\cs_generate_from_arg_count_aux:nwn #1 #2 \fi: #3
{ \fi: #3 #1 }
-\cs_new_nopar:Npn \cs_generate_from_arg_count:cNnn
+\cs_new_protected_nopar:Npn \cs_generate_from_arg_count:cNnn
{ \exp_args:Nc \cs_generate_from_arg_count:NNnn }
-\cs_new:Npn \cs_generate_from_arg_count_error_msg:Nn #1#2
+\cs_new_protected_nopar:Npn \cs_generate_from_arg_count:Ncnn
+ { \exp_args:NNc \cs_generate_from_arg_count:NNnn }
+\cs_new_protected:Npn \cs_generate_from_arg_count_error_msg:Nn #1#2
{
\msg_kernel_error:nnxx { kernel } { bad-number-of-arguments }
{ \token_to_str:N #1 } { \int_eval:n {#2} }
@@ -710,7 +708,7 @@
\cs_new:Npn \kernel_register_show:N #1
{
\cs_if_exist:NTF #1
- { \tex_showthe:D #1 }
+ { \tex_showthe:D \use:n #1 }
{
\msg_kernel_error:nnx { kernel } { variable-not-defined }
{ \token_to_str:N #1 }
@@ -767,14 +765,6 @@
\cs_new_eq:NN \prg_break_point:n \use:n
\cs_new:Npn \prg_map_break: #1 \prg_break_point:n #2 { #2 }
\cs_new:Npn \prg_map_break:n #1 #2 \prg_break_point:n #3 { #3 #1 }
-\cs_new_eq:NN \c_luatex_is_engine_bool \luatex_if_engine_p:
-\cs_new_eq:NN \c_pdftex_is_engine_bool \pdftex_if_engine_p:
-\cs_new_eq:NN \c_xetex_is_engine_bool \xetex_if_engine_p:
-\cs_set:Npn \use_i_after_fi:nw #1 \fi: { \fi: #1 }
-\cs_set:Npn \use_i_after_else:nw #1 \else: #2 \fi: { \fi: #1 }
-\cs_set:Npn \use_i_after_or:nw #1 \or: #2 \fi: { \fi: #1 }
-\cs_set:Npn \use_i_after_orelse:nw #1#2#3 \fi: { \fi: #1 }
-\tex_let:D \cs_set_eq:NwN \tex_let:D
%%
%%
%% End of file `l3basics.sty'.
diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3bootstrap.sty b/Master/texmf-dist/tex/latex/l3kernel/l3bootstrap.sty
index 9c0033a0958..f5320078a78 100644
--- a/Master/texmf-dist/tex/latex/l3kernel/l3bootstrap.sty
+++ b/Master/texmf-dist/tex/latex/l3kernel/l3bootstrap.sty
@@ -94,7 +94,7 @@
{\def\ExplFileDate{#2}}
\protected\def\GetIdInfoAuxSVN#1\relax#2-#3-#4\relax#5Z\relax
{\def\ExplFileDate{#2/#3/#4}}
-\GetIdInfo$Id: l3bootstrap.dtx 3006 2011-11-25 13:29:59Z joseph $
+\GetIdInfo$Id: l3bootstrap.dtx 3110 2011-12-29 14:23:48Z joseph $
{L3 experimental bootstrap code}
\ProvidesPackage{l3bootstrap}
[%
diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3box.sty b/Master/texmf-dist/tex/latex/l3kernel/l3box.sty
index 14f032e0ea5..9176a912928 100644
--- a/Master/texmf-dist/tex/latex/l3kernel/l3box.sty
+++ b/Master/texmf-dist/tex/latex/l3kernel/l3box.sty
@@ -13,7 +13,7 @@
%%
%% Do not distribute a modified version of this file.
%%
-%% File: l3box.dtx Copyright (C) 2005-2011 The LaTeX3 Project
+%% File: l3box.dtx Copyright (C) 2005-2012 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,7 +46,7 @@
%%
%% -----------------------------------------------------------------------
\RequirePackage{l3names}
-\GetIdInfo$Id: l3box.dtx 3086 2011-12-22 17:55:46Z bruno $
+\GetIdInfo$Id: l3box.dtx 3158 2012-01-09 00:47:42Z bruno $
{L3 Experimental boxes}
\ProvidesExplPackage
{\ExplFileName}{\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription}
@@ -263,8 +263,8 @@
\dim_new:N \l_box_bottom_new_dim
\dim_new:N \l_box_left_new_dim
\dim_new:N \l_box_right_new_dim
-\box_new:N \l_box_tmp_box
-\fp_new:N \l_box_tmp_fp
+\box_new:N \l_box_internal_box
+\fp_new:N \l_box_internal_fp
\fp_new:N \l_box_x_fp
\fp_new:N \l_box_y_fp
\fp_new:N \l_box_x_new_fp
@@ -303,40 +303,40 @@
{ \box_rotate_quadrant_three: }
{ \box_rotate_quadrant_four: }
}
- \hbox_set:Nn \l_box_tmp_box { \box_use:N #1 }
- \hbox_set:Nn \l_box_tmp_box
+ \hbox_set:Nn \l_box_internal_box { \box_use:N #1 }
+ \hbox_set:Nn \l_box_internal_box
{
\tex_kern:D -\l_box_left_new_dim
\hbox:n
{
\driver_box_rotate_begin:
- \box_use:N \l_box_tmp_box
+ \box_use:N \l_box_internal_box
\driver_box_rotate_end:
}
}
- \box_set_ht:Nn \l_box_tmp_box { \l_box_top_new_dim }
- \box_set_dp:Nn \l_box_tmp_box { -\l_box_bottom_new_dim }
- \box_set_wd:Nn \l_box_tmp_box
+ \box_set_ht:Nn \l_box_internal_box { \l_box_top_new_dim }
+ \box_set_dp:Nn \l_box_internal_box { -\l_box_bottom_new_dim }
+ \box_set_wd:Nn \l_box_internal_box
{ \l_box_right_new_dim - \l_box_left_new_dim }
- \box_use:N \l_box_tmp_box
+ \box_use:N \l_box_internal_box
}
\cs_new_protected:Npn \box_rotate_set_sin_cos:
{
- \fp_set_eq:NN \l_box_tmp_fp \l_box_angle_fp
- \fp_div:Nn \l_box_tmp_fp { 180 }
- \fp_mul:Nn \l_box_tmp_fp { \c_pi_fp }
- \fp_sin:Nn \l_box_sin_fp { \l_box_tmp_fp }
- \fp_cos:Nn \l_box_cos_fp { \l_box_tmp_fp }
+ \fp_set_eq:NN \l_box_internal_fp \l_box_angle_fp
+ \fp_div:Nn \l_box_internal_fp { 180 }
+ \fp_mul:Nn \l_box_internal_fp { \c_pi_fp }
+ \fp_sin:Nn \l_box_sin_fp { \l_box_internal_fp }
+ \fp_cos:Nn \l_box_cos_fp { \l_box_internal_fp }
}
\cs_new_protected:Npn \box_rotate_x:nnN #1#2#3
{
\fp_set_from_dim:Nn \l_box_x_fp {#1}
\fp_set_from_dim:Nn \l_box_y_fp {#2}
\fp_set_eq:NN \l_box_x_new_fp \l_box_x_fp
- \fp_set_eq:NN \l_box_tmp_fp \l_box_y_fp
+ \fp_set_eq:NN \l_box_internal_fp \l_box_y_fp
\fp_mul:Nn \l_box_x_new_fp { \l_box_cos_fp }
- \fp_mul:Nn \l_box_tmp_fp { \l_box_sin_fp }
- \fp_sub:Nn \l_box_x_new_fp { \l_box_tmp_fp }
+ \fp_mul:Nn \l_box_internal_fp { \l_box_sin_fp }
+ \fp_sub:Nn \l_box_x_new_fp { \l_box_internal_fp }
\dim_set:Nn #3 { \fp_to_dim:N \l_box_x_new_fp }
}
\cs_new_protected:Npn \box_rotate_y:nnN #1#2#3
@@ -344,10 +344,10 @@
\fp_set_from_dim:Nn \l_box_x_fp {#1}
\fp_set_from_dim:Nn \l_box_y_fp {#2}
\fp_set_eq:NN \l_box_y_new_fp \l_box_y_fp
- \fp_set_eq:NN \l_box_tmp_fp \l_box_x_fp
+ \fp_set_eq:NN \l_box_internal_fp \l_box_x_fp
\fp_mul:Nn \l_box_y_new_fp { \l_box_cos_fp }
- \fp_mul:Nn \l_box_tmp_fp { \l_box_sin_fp }
- \fp_add:Nn \l_box_y_new_fp { \l_box_tmp_fp }
+ \fp_mul:Nn \l_box_internal_fp { \l_box_sin_fp }
+ \fp_add:Nn \l_box_y_new_fp { \l_box_internal_fp }
\dim_set:Nn #3 { \fp_to_dim:N \l_box_y_new_fp }
}
\cs_new_protected:Npn \box_rotate_quadrant_one:
@@ -406,12 +406,12 @@
\dim_set:Nn \l_box_right_dim { \box_wd:N #1 }
\dim_zero:N \l_box_left_dim
\fp_set_from_dim:Nn \l_box_scale_x_fp {#2}
- \fp_set_from_dim:Nn \l_box_tmp_fp { \l_box_right_dim }
- \fp_div:Nn \l_box_scale_x_fp { \l_box_tmp_fp }
+ \fp_set_from_dim:Nn \l_box_internal_fp { \l_box_right_dim }
+ \fp_div:Nn \l_box_scale_x_fp { \l_box_internal_fp }
\fp_set_from_dim:Nn \l_box_scale_y_fp {#3}
- \fp_set_from_dim:Nn \l_box_tmp_fp
+ \fp_set_from_dim:Nn \l_box_internal_fp
{ \l_box_top_dim - \l_box_bottom_dim }
- \fp_div:Nn \l_box_scale_y_fp { \l_box_tmp_fp }
+ \fp_div:Nn \l_box_scale_y_fp { \l_box_internal_fp }
\fp_compare:NNNTF \l_box_scale_x_fp = \c_one_fp
{
\fp_compare:NNNTF \l_box_scale_y_fp = \c_one_fp
@@ -453,9 +453,9 @@
\dim_set:Nn \l_box_right_dim { \box_wd:N #1 }
\dim_zero:N \l_box_left_dim
\fp_set_from_dim:Nn \l_box_scale_y_fp {#2}
- \fp_set_from_dim:Nn \l_box_tmp_fp
+ \fp_set_from_dim:Nn \l_box_internal_fp
{ \l_box_top_dim - \l_box_bottom_dim }
- \fp_div:Nn \l_box_scale_y_fp { \l_box_tmp_fp }
+ \fp_div:Nn \l_box_scale_y_fp { \l_box_internal_fp }
\fp_set_eq:NN \l_box_scale_x_fp \l_box_scale_y_fp
\fp_compare:NNNTF \l_box_scale_y_fp = \c_one_fp
{ \box_use:N #1 }
@@ -474,8 +474,8 @@
\dim_set:Nn \l_box_right_dim { \box_wd:N #1 }
\dim_zero:N \l_box_left_dim
\fp_set_from_dim:Nn \l_box_scale_x_fp {#2}
- \fp_set_from_dim:Nn \l_box_tmp_fp { \l_box_right_dim }
- \fp_div:Nn \l_box_scale_x_fp { \l_box_tmp_fp }
+ \fp_set_from_dim:Nn \l_box_internal_fp { \l_box_right_dim }
+ \fp_div:Nn \l_box_scale_x_fp { \l_box_internal_fp }
\fp_set_eq:NN \l_box_scale_y_fp \l_box_scale_x_fp
\fp_compare:NNNTF \l_box_scale_x_fp = \c_one_fp
{ \box_use:N #1 }
@@ -524,26 +524,26 @@
}
\cs_new_protected:Npn \box_resize_common:N #1
{
- \hbox_set:Nn \l_box_tmp_box
+ \hbox_set:Nn \l_box_internal_box
{
\driver_box_scale_begin:
\hbox_overlap_right:n { \box_use:N #1 }
\driver_box_scale_end:
}
- \box_set_ht:Nn \l_box_tmp_box { \l_box_top_new_dim }
- \box_set_dp:Nn \l_box_tmp_box { \l_box_bottom_new_dim }
+ \box_set_ht:Nn \l_box_internal_box { \l_box_top_new_dim }
+ \box_set_dp:Nn \l_box_internal_box { \l_box_bottom_new_dim }
\fp_compare:NNNTF \l_box_scale_x_fp < \c_zero_fp
{
\hbox_to_wd:nn { \l_box_right_new_dim }
{
\tex_kern:D \l_box_right_new_dim
- \box_use:N \l_box_tmp_box
+ \box_use:N \l_box_internal_box
\tex_hss:D
}
}
{
- \box_set_wd:Nn \l_box_tmp_box { \l_box_right_new_dim }
- \box_use:N \l_box_tmp_box
+ \box_set_wd:Nn \l_box_internal_box { \l_box_right_new_dim }
+ \box_use:N \l_box_internal_box
}
}
\cs_new_protected:Npn \box_clip:N #1
diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3clist.sty b/Master/texmf-dist/tex/latex/l3kernel/l3clist.sty
index 611599be6bd..bf523e186e1 100644
--- a/Master/texmf-dist/tex/latex/l3kernel/l3clist.sty
+++ b/Master/texmf-dist/tex/latex/l3kernel/l3clist.sty
@@ -15,6 +15,7 @@
%%
%% File: l3clist.dtx Copyright (C) 2004-2011 Frank Mittelbach,
%% The LaTeX3 project
+%% (C) 2012 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
@@ -47,12 +48,12 @@
%%
%% -----------------------------------------------------------------------
\RequirePackage{l3names}
-\GetIdInfo$Id: l3clist.dtx 3086 2011-12-22 17:55:46Z bruno $
+\GetIdInfo$Id: l3clist.dtx 3157 2012-01-09 00:42:07Z bruno $
{L3 Experimental comma separated lists}
\ProvidesExplPackage
{\ExplFileName}{\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription}
\package_check_loaded_expl:
-\tl_new:N \l_clist_tmpa_clist
+\tl_new:N \l_clist_internal_clist
\cs_new_protected:Npn \clist_tmp:w { }
\cs_new_eq:NN \clist_new:N \tl_new:N
\cs_new_eq:NN \clist_new:c \tl_new:c
@@ -140,8 +141,8 @@
{ \clist_put_left_aux:NNNn \clist_gconcat:NNN \clist_set:Nn }
\cs_new_protected:Npn \clist_put_left_aux:NNNn #1#2#3#4
{
- #2 \l_clist_tmpa_clist {#4}
- #1 #3 \l_clist_tmpa_clist #3
+ #2 \l_clist_internal_clist {#4}
+ #1 #3 \l_clist_internal_clist #3
}
\cs_generate_variant:Nn \clist_put_left:Nn { NV , No , Nx }
\cs_generate_variant:Nn \clist_put_left:Nn { c , cV , co , cx }
@@ -153,8 +154,8 @@
{ \clist_put_right_aux:NNNn \clist_gconcat:NNN \clist_gset:Nn }
\cs_new_protected:Npn \clist_put_right_aux:NNNn #1#2#3#4
{
- #2 \l_clist_tmpa_clist {#4}
- #1 #3 #3 \l_clist_tmpa_clist
+ #2 \l_clist_internal_clist {#4}
+ #1 #3 #3 \l_clist_internal_clist
}
\cs_generate_variant:Nn \clist_put_right:Nn { NV , No , Nx }
\cs_generate_variant:Nn \clist_put_right:Nn { c , cV , co , cx }
@@ -201,20 +202,20 @@
\cs_new_eq:NN \clist_gpush:cx \clist_gput_left:cx
\cs_new_eq:NN \clist_use:N \tl_use:N
\cs_new_eq:NN \clist_use:c \tl_use:c
-\clist_new:N \l_clist_remove_clist
+\clist_new:N \l_clist_internal_remove_clist
\cs_new_protected:Npn \clist_remove_duplicates:N
{ \clist_remove_duplicates_aux:NN \clist_set_eq:NN }
\cs_new_protected:Npn \clist_gremove_duplicates:N
{ \clist_remove_duplicates_aux:NN \clist_gset_eq:NN }
\cs_new_protected:Npn \clist_remove_duplicates_aux:NN #1#2
{
- \clist_clear:N \l_clist_remove_clist
+ \clist_clear:N \l_clist_internal_remove_clist
\clist_map_inline:Nn #2
{
- \clist_if_in:NnF \l_clist_remove_clist {##1}
- { \clist_put_right:Nn \l_clist_remove_clist {##1} }
+ \clist_if_in:NnF \l_clist_internal_remove_clist {##1}
+ { \clist_put_right:Nn \l_clist_internal_remove_clist {##1} }
}
- #1 #2 \l_clist_remove_clist
+ #1 #2 \l_clist_internal_remove_clist
}
\cs_generate_variant:Nn \clist_remove_duplicates:N { c }
\cs_generate_variant:Nn \clist_gremove_duplicates:N { c }
@@ -249,7 +250,6 @@
\cs_new:Npn \clist_remove_all_aux:w #1 , \q_mark , #2 , { \exp_not:n {#1} }
\cs_generate_variant:Nn \clist_remove_all:Nn { c }
\cs_generate_variant:Nn \clist_gremove_all:Nn { c }
-\clist_new:N \l_clist_if_in_clist
\prg_new_eq_conditional:NNn \clist_if_empty:N \tl_if_empty:N { p , T , F , TF }
\prg_new_eq_conditional:NNn \clist_if_empty:c \tl_if_empty:c { p , T , F , TF }
\prg_new_eq_conditional:NNn \clist_if_eq:NN \tl_if_eq:NN { p , T , F , TF }
@@ -262,8 +262,8 @@
}
\prg_new_protected_conditional:Npnn \clist_if_in:nn #1#2 { T , F , TF }
{
- \clist_set:Nn \l_clist_if_in_clist {#1}
- \exp_args:No \clist_if_in_return:nn \l_clist_if_in_clist {#2}
+ \clist_set:Nn \l_clist_internal_clist {#1}
+ \exp_args:No \clist_if_in_return:nn \l_clist_internal_clist {#2}
}
\cs_new_protected:Npn \clist_if_in_return:nn #1#2
{
@@ -325,8 +325,8 @@
}
\cs_new_protected:Npn \clist_map_inline:nn #1
{
- \clist_set:Nn \l_clist_tmpa_clist {#1}
- \clist_map_inline:Nn \l_clist_tmpa_clist
+ \clist_set:Nn \l_clist_internal_clist {#1}
+ \clist_map_inline:Nn \l_clist_internal_clist
}
\cs_generate_variant:Nn \clist_map_inline:Nn { c }
\cs_new_protected:Npn \clist_map_variable:NNn #1#2#3
@@ -342,8 +342,8 @@
}
\cs_new_protected:Npn \clist_map_variable:nNn #1
{
- \clist_set:Nn \l_clist_tmpa_clist {#1}
- \clist_map_variable:NNn \l_clist_tmpa_clist
+ \clist_set:Nn \l_clist_internal_clist {#1}
+ \clist_map_variable:NNn \l_clist_internal_clist
}
\cs_new_protected:Npn \clist_map_variable_aux:Nnw #1#2#3,
{
@@ -364,11 +364,11 @@
}
\cs_new_protected:Npn \clist_show:n #1
{
- \clist_set:Nn \l_clist_tmpa_clist {#1}
+ \clist_set:Nn \l_clist_internal_clist {#1}
\msg_aux_show:Nnx
- \l_clist_tmpa_clist
+ \l_clist_internal_clist
{ clist }
- { \clist_map_function:NN \l_clist_tmpa_clist \msg_aux_show:n }
+ { \clist_map_function:NN \l_clist_internal_clist \msg_aux_show:n }
}
\cs_generate_variant:Nn \clist_show:N { c }
\clist_new:N \l_tmpa_clist
@@ -426,7 +426,7 @@
\cs_new:Npn \clist_item_N_loop:nw #1 #2,
{
\int_compare:nNnTF {#1} = \c_zero
- { \use_i_delimit_by_q_stop:nw {#2} }
+ { \use_i_delimit_by_q_stop:nw { \exp_not:n {#2} } }
{ \exp_args:Nf \clist_item_N_loop:nw { \int_eval:n { #1 - 1 } } }
}
\cs_generate_variant:Nn \clist_item:Nn { c }
@@ -459,7 +459,7 @@
\exp_after:wN \exp_after:wN \exp_after:wN \clist_item_n_strip:w
\tl_trim_spaces:n {#1} ,
}
-\cs_new:Npn \clist_item_n_strip:w #1 , {#1}
+\cs_new:Npn \clist_item_n_strip:w #1 , { \exp_not:n {#1} }
\cs_new_protected:Npn \clist_set_from_seq:NN
{ \clist_set_from_seq_aux:NNNN \clist_clear:N \tl_set:Nx }
\cs_new_protected:Npn \clist_gset_from_seq:NN
@@ -469,17 +469,20 @@
\seq_if_empty:NTF #4
{ #1 #3 }
{
- \seq_push_item_def:n
+ #2 #3
{
- ,
- \tl_if_empty:oTF { \clist_set_from_seq_aux:w ##1 ~ , ##1 ~ }
- { \exp_not:n {##1} }
- { \exp_not:n { {##1} } }
+ \exp_last_unbraced:Nf \use_none:n
+ { \seq_map_function:NN #4 \clist_wrap_item:n }
}
- #2 #3 { \exp_last_unbraced:Nf \use_none:n #4 }
- \seq_pop_item_def:
}
}
+\cs_new:Npn \clist_wrap_item:n #1
+ {
+ ,
+ \tl_if_empty:oTF { \clist_set_from_seq_aux:w #1 ~ , #1 ~ }
+ { \exp_not:n {#1} }
+ { \exp_not:n { {#1} } }
+ }
\cs_new:Npn \clist_set_from_seq_aux:w #1 , #2 ~ { }
\cs_generate_variant:Nn \clist_set_from_seq:NN { Nc }
\cs_generate_variant:Nn \clist_set_from_seq:NN { c , cc }
@@ -502,10 +505,6 @@
{ \clist_if_empty_n_aux:wNw }
}
\cs_new:Npn \clist_if_empty_n_aux:wNw #1 \q_mark #2#3 \q_stop {#2}
-\cs_new_protected:Npn \clist_trim_spaces:N #1 { \clist_set:No #1 {#1} }
-\cs_new_protected:Npn \clist_gtrim_spaces:N #1 { \clist_gset:No #1 {#1} }
-\cs_generate_variant:Nn \clist_trim_spaces:N { c }
-\cs_generate_variant:Nn \clist_gtrim_spaces:N { c }
%%
%%
%% End of file `l3clist.sty'.
diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3coffins.sty b/Master/texmf-dist/tex/latex/l3kernel/l3coffins.sty
index 5edde5b4de8..c13164ef700 100644
--- a/Master/texmf-dist/tex/latex/l3kernel/l3coffins.sty
+++ b/Master/texmf-dist/tex/latex/l3kernel/l3coffins.sty
@@ -13,7 +13,7 @@
%%
%% Do not distribute a modified version of this file.
%%
-%% File: l3coffins.dtx Copyright(C) 2010,2011 The LaTeX3 Project
+%% File: l3coffins.dtx Copyright(C) 2010-2012 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
@@ -47,32 +47,32 @@
%% -----------------------------------------------------------------------
%%
\RequirePackage{l3names}
-\GetIdInfo$Id: l3coffins.dtx 3086 2011-12-22 17:55:46Z bruno $
+\GetIdInfo$Id: l3coffins.dtx 3155 2012-01-08 22:53:03Z bruno $
{L3 Experimental coffin code layer}
\ProvidesExplPackage
{\ExplFileName}{\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription}
\package_check_loaded_expl:
-\box_new:N \l_coffin_tmp_box
-\dim_new:N \l_coffin_tmp_dim
-\fp_new:N \l_coffin_tmp_fp
-\tl_new:N \l_coffin_tmp_tl
+\box_new:N \l_coffin_internal_box
+\dim_new:N \l_coffin_internal_dim
+\fp_new:N \l_coffin_internal_fp
+\tl_new:N \l_coffin_internal_tl
\prop_new:N \c_coffin_corners_prop
\prop_put:Nnn \c_coffin_corners_prop { tl } { { 0 pt } { 0 pt } }
\prop_put:Nnn \c_coffin_corners_prop { tr } { { 0 pt } { 0 pt } }
\prop_put:Nnn \c_coffin_corners_prop { bl } { { 0 pt } { 0 pt } }
\prop_put:Nnn \c_coffin_corners_prop { br } { { 0 pt } { 0 pt } }
\prop_new:N \c_coffin_poles_prop
-\tl_set:Nn \l_coffin_tmp_tl { { 0 pt } { 0 pt } { 0 pt } { 1000 pt } }
-\prop_put:Nno \c_coffin_poles_prop { l } { \l_coffin_tmp_tl }
-\prop_put:Nno \c_coffin_poles_prop { hc } { \l_coffin_tmp_tl }
-\prop_put:Nno \c_coffin_poles_prop { r } { \l_coffin_tmp_tl }
-\tl_set:Nn \l_coffin_tmp_tl { { 0 pt } { 0 pt } { 1000 pt } { 0 pt } }
-\prop_put:Nno \c_coffin_poles_prop { b } { \l_coffin_tmp_tl }
-\prop_put:Nno \c_coffin_poles_prop { vc } { \l_coffin_tmp_tl }
-\prop_put:Nno \c_coffin_poles_prop { t } { \l_coffin_tmp_tl }
-\prop_put:Nno \c_coffin_poles_prop { B } { \l_coffin_tmp_tl }
-\prop_put:Nno \c_coffin_poles_prop { H } { \l_coffin_tmp_tl }
-\prop_put:Nno \c_coffin_poles_prop { T } { \l_coffin_tmp_tl }
+\tl_set:Nn \l_coffin_internal_tl { { 0 pt } { 0 pt } { 0 pt } { 1000 pt } }
+\prop_put:Nno \c_coffin_poles_prop { l } { \l_coffin_internal_tl }
+\prop_put:Nno \c_coffin_poles_prop { hc } { \l_coffin_internal_tl }
+\prop_put:Nno \c_coffin_poles_prop { r } { \l_coffin_internal_tl }
+\tl_set:Nn \l_coffin_internal_tl { { 0 pt } { 0 pt } { 1000 pt } { 0 pt } }
+\prop_put:Nno \c_coffin_poles_prop { b } { \l_coffin_internal_tl }
+\prop_put:Nno \c_coffin_poles_prop { vc } { \l_coffin_internal_tl }
+\prop_put:Nno \c_coffin_poles_prop { t } { \l_coffin_internal_tl }
+\prop_put:Nno \c_coffin_poles_prop { B } { \l_coffin_internal_tl }
+\prop_put:Nno \c_coffin_poles_prop { H } { \l_coffin_internal_tl }
+\prop_put:Nno \c_coffin_poles_prop { T } { \l_coffin_internal_tl }
\fp_new:N \l_coffin_calc_a_fp
\fp_new:N \l_coffin_calc_b_fp
\fp_new:N \l_coffin_calc_c_fp
@@ -169,15 +169,15 @@
\coffin_reset_structure:N #1
\coffin_update_poles:N #1
\coffin_update_corners:N #1
- \vbox_set_top:Nn \l_coffin_tmp_box { \vbox_unpack:N #1 }
+ \vbox_set_top:Nn \l_coffin_internal_box { \vbox_unpack:N #1 }
\coffin_set_pole:Nnx #1 { T }
{
{ 0 pt }
- { \dim_eval:n { \box_ht:N #1 - \box_ht:N \l_coffin_tmp_box } }
+ { \dim_eval:n { \box_ht:N #1 - \box_ht:N \l_coffin_internal_box } }
{ 1000 pt }
{ 0 pt }
}
- \box_clear:N \l_coffin_tmp_box
+ \box_clear:N \l_coffin_internal_box
}
}
\cs_generate_variant:Nn \vcoffin_set:Nnn { c }
@@ -212,17 +212,17 @@
\coffin_reset_structure:N #1
\coffin_update_poles:N #1
\coffin_update_corners:N #1
- \vbox_set_top:Nn \l_coffin_tmp_box { \vbox_unpack:N #1 }
+ \vbox_set_top:Nn \l_coffin_internal_box { \vbox_unpack:N #1 }
\coffin_set_pole:Nnx #1 { T }
{
{ 0 pt }
{
- \dim_eval:n { \box_ht:N #1 - \box_ht:N \l_coffin_tmp_box }
+ \dim_eval:n { \box_ht:N #1 - \box_ht:N \l_coffin_internal_box }
}
{ 1000 pt }
{ 0 pt }
}
- \box_clear:N \l_coffin_tmp_box
+ \box_clear:N \l_coffin_internal_box
}
}
}
@@ -500,10 +500,10 @@
\dim_compare:nNnT { \l_coffin_offset_x_dim } < \c_zero_dim
{ \tex_kern:D -\l_coffin_offset_x_dim }
\hbox_unpack:N \l_coffin_aligned_coffin
- \dim_set:Nn \l_coffin_tmp_dim
+ \dim_set:Nn \l_coffin_internal_dim
{ \l_coffin_offset_x_dim - \box_wd:N #1 + \box_wd:N #4 }
- \dim_compare:nNnT \l_coffin_tmp_dim < \c_zero_dim
- { \tex_kern:D -\l_coffin_tmp_dim }
+ \dim_compare:nNnT \l_coffin_internal_dim < \c_zero_dim
+ { \tex_kern:D -\l_coffin_internal_dim }
}
\coffin_reset_structure:N \l_coffin_aligned_coffin
\prop_clear:c
@@ -585,10 +585,10 @@
\dim_set:Nn \l_coffin_x_dim { #3 + #7 }
\dim_set:Nn \l_coffin_y_dim { #4 + #8 }
\tl_if_in:nnTF {#2} { - }
- { \tl_set:Nn \l_coffin_tmp_tl { {#2} } }
- { \tl_set:Nn \l_coffin_tmp_tl { { #1 - #2 } } }
+ { \tl_set:Nn \l_coffin_internal_tl { {#2} } }
+ { \tl_set:Nn \l_coffin_internal_tl { { #1 - #2 } } }
\exp_last_unbraced:NNo \coffin_set_pole:Nnx \l_coffin_aligned_coffin
- { \l_coffin_tmp_tl }
+ { \l_coffin_internal_tl }
{
{ \dim_use:N \l_coffin_x_dim } { \dim_use:N \l_coffin_y_dim }
{#5} {#6}
@@ -660,11 +660,11 @@
\dim_new:N \l_coffin_top_corner_dim
\cs_new_protected:Npn \coffin_rotate:Nn #1#2
{
- \fp_set:Nn \l_coffin_tmp_fp {#2}
- \fp_div:Nn \l_coffin_tmp_fp { 180 }
- \fp_mul:Nn \l_coffin_tmp_fp { \c_pi_fp }
- \fp_sin:Nn \l_coffin_sin_fp { \l_coffin_tmp_fp }
- \fp_cos:Nn \l_coffin_cos_fp { \l_coffin_tmp_fp }
+ \fp_set:Nn \l_coffin_internal_fp {#2}
+ \fp_div:Nn \l_coffin_internal_fp { 180 }
+ \fp_mul:Nn \l_coffin_internal_fp { \c_pi_fp }
+ \fp_sin:Nn \l_coffin_sin_fp { \l_coffin_internal_fp }
+ \fp_cos:Nn \l_coffin_cos_fp { \l_coffin_internal_fp }
\prop_map_inline:cn { l_coffin_corners_ \int_value:w #1 _prop }
{ \coffin_rotate_corner:Nnnn #1 {##1} ##2 }
\prop_map_inline:cn { l_coffin_poles_ \int_value:w #1 _prop }
@@ -699,11 +699,11 @@
{ { 0 pt } { \dim_use:N \box_ht:N #1 } }
\prop_put:Nnx \l_coffin_bounding_prop { tr }
{ { \dim_use:N \box_wd:N #1 } { \dim_use:N \box_ht:N #1 } }
- \dim_set:Nn \l_coffin_tmp_dim { - \box_dp:N #1 }
+ \dim_set:Nn \l_coffin_internal_dim { - \box_dp:N #1 }
\prop_put:Nnx \l_coffin_bounding_prop { bl }
- { { 0 pt } { \dim_use:N \l_coffin_tmp_dim } }
+ { { 0 pt } { \dim_use:N \l_coffin_internal_dim } }
\prop_put:Nnx \l_coffin_bounding_prop { br }
- { { \dim_use:N \box_wd:N #1 } { \dim_use:N \l_coffin_tmp_dim } }
+ { { \dim_use:N \box_wd:N #1 } { \dim_use:N \l_coffin_internal_dim } }
}
\cs_new_protected:Npn \coffin_rotate_bounding:nnn #1#2#3
{
@@ -734,15 +734,15 @@
\fp_set_from_dim:Nn \l_coffin_x_fp {#1}
\fp_set_from_dim:Nn \l_coffin_y_fp {#2}
\fp_set_eq:NN \l_coffin_x_prime_fp \l_coffin_x_fp
- \fp_set_eq:NN \l_coffin_tmp_fp \l_coffin_y_fp
+ \fp_set_eq:NN \l_coffin_internal_fp \l_coffin_y_fp
\fp_mul:Nn \l_coffin_x_prime_fp { \l_coffin_cos_fp }
- \fp_mul:Nn \l_coffin_tmp_fp { \l_coffin_sin_fp }
- \fp_sub:Nn \l_coffin_x_prime_fp { \l_coffin_tmp_fp }
+ \fp_mul:Nn \l_coffin_internal_fp { \l_coffin_sin_fp }
+ \fp_sub:Nn \l_coffin_x_prime_fp { \l_coffin_internal_fp }
\fp_set_eq:NN \l_coffin_y_prime_fp \l_coffin_y_fp
- \fp_set_eq:NN \l_coffin_tmp_fp \l_coffin_x_fp
+ \fp_set_eq:NN \l_coffin_internal_fp \l_coffin_x_fp
\fp_mul:Nn \l_coffin_y_prime_fp { \l_coffin_cos_fp }
- \fp_mul:Nn \l_coffin_tmp_fp { \l_coffin_sin_fp }
- \fp_add:Nn \l_coffin_y_prime_fp { \l_coffin_tmp_fp }
+ \fp_mul:Nn \l_coffin_internal_fp { \l_coffin_sin_fp }
+ \fp_add:Nn \l_coffin_y_prime_fp { \l_coffin_internal_fp }
\dim_set:Nn #3 { \fp_to_dim:N \l_coffin_x_prime_fp }
\dim_set:Nn #4 { \fp_to_dim:N \l_coffin_y_prime_fp }
}
@@ -796,11 +796,11 @@
\coffin_set_user_dimensions:N #1
\box_resize:Nnn #1 {#2} {#3}
\fp_set_from_dim:Nn \l_coffin_scale_x_fp {#2}
- \fp_set_from_dim:Nn \l_coffin_tmp_fp { \Width }
- \fp_div:Nn \l_coffin_scale_x_fp { \l_coffin_tmp_fp }
+ \fp_set_from_dim:Nn \l_coffin_internal_fp { \Width }
+ \fp_div:Nn \l_coffin_scale_x_fp { \l_coffin_internal_fp }
\fp_set_from_dim:Nn \l_coffin_scale_y_fp {#3}
- \fp_set_from_dim:Nn \l_coffin_tmp_fp { \TotalHeight }
- \fp_div:Nn \l_coffin_scale_y_fp { \l_coffin_tmp_fp }
+ \fp_set_from_dim:Nn \l_coffin_internal_fp { \TotalHeight }
+ \fp_div:Nn \l_coffin_scale_y_fp { \l_coffin_internal_fp }
\coffin_resize_common:Nnn #1 {#2} {#3}
}
\cs_generate_variant:Nn \coffin_resize:Nnn { c }
@@ -837,12 +837,12 @@
\cs_generate_variant:Nn \coffin_scale:Nnn { c }
\cs_new_protected:Npn \coffin_scale_vector:nnNN #1#2#3#4
{
- \fp_set_from_dim:Nn \l_coffin_tmp_fp {#1}
- \fp_mul:Nn \l_coffin_tmp_fp { \l_coffin_scale_x_fp }
- \dim_set:Nn #3 { \fp_to_dim:N \l_coffin_tmp_fp }
- \fp_set_from_dim:Nn \l_coffin_tmp_fp {#2}
- \fp_mul:Nn \l_coffin_tmp_fp { \l_coffin_scale_y_fp }
- \dim_set:Nn #4 { \fp_to_dim:N \l_coffin_tmp_fp }
+ \fp_set_from_dim:Nn \l_coffin_internal_fp {#1}
+ \fp_mul:Nn \l_coffin_internal_fp { \l_coffin_scale_x_fp }
+ \dim_set:Nn #3 { \fp_to_dim:N \l_coffin_internal_fp }
+ \fp_set_from_dim:Nn \l_coffin_internal_fp {#2}
+ \fp_mul:Nn \l_coffin_internal_fp { \l_coffin_scale_y_fp }
+ \dim_set:Nn #4 { \fp_to_dim:N \l_coffin_internal_fp }
}
\cs_new_protected:Npn \coffin_scale_corner:Nnnn #1#2#3#4
{
@@ -921,7 +921,6 @@
\prop_new:N \l_coffin_display_poles_prop
\tl_new:N \l_coffin_display_font_tl
\tl_set:Nn \l_coffin_display_font_tl { \sffamily \tiny }
-\prop_new:N \l_coffin_handles_tmp_prop
\cs_new_protected:Npn \coffin_mark_handle:Nnnn #1#2#3#4
{
\hcoffin_set:Nn \l_coffin_display_pole_coffin
@@ -938,12 +937,12 @@
( \tl_to_str:n { #2 , #3 } )
}
\prop_get:NnN \l_coffin_display_handles_prop
- { #2 #3 } \l_coffin_tmp_tl
- \quark_if_no_value:NTF \l_coffin_tmp_tl
+ { #2 #3 } \l_coffin_internal_tl
+ \quark_if_no_value:NTF \l_coffin_internal_tl
{
\prop_get:NnN \l_coffin_display_handles_prop
- { #3 #2 } \l_coffin_tmp_tl
- \quark_if_no_value:NTF \l_coffin_tmp_tl
+ { #3 #2 } \l_coffin_internal_tl
+ \quark_if_no_value:NTF \l_coffin_internal_tl
{
\coffin_attach_mark:NnnNnnnn #1 {#2} {#3}
\l_coffin_display_coord_coffin { l } { vc }
@@ -951,12 +950,12 @@
}
{
\exp_last_unbraced:No \coffin_mark_handle_aux:nnnnNnn
- \l_coffin_tmp_tl #1 {#2} {#3}
+ \l_coffin_internal_tl #1 {#2} {#3}
}
}
{
\exp_last_unbraced:No \coffin_mark_handle_aux:nnnnNnn
- \l_coffin_tmp_tl #1 {#2} {#3}
+ \l_coffin_internal_tl #1 {#2} {#3}
}
}
\cs_new_protected:Npn \coffin_mark_handle_aux:nnnnNnn #1#2#3#4#5#6#7
@@ -984,7 +983,6 @@
\tl_if_eq:NNT \l_coffin_pole_a_tl \l_coffin_pole_b_tl
{ \prop_del:Nn \l_coffin_display_poles_prop { B } }
\coffin_set_eq:NN \l_coffin_display_coffin #1
- \prop_clear:N \l_coffin_handles_tmp_prop
\prop_map_inline:Nn \l_coffin_display_poles_prop
{
\prop_del:Nn \l_coffin_display_poles_prop {##1}
@@ -1012,12 +1010,12 @@
( \tl_to_str:n { #1 , ##1 } )
}
\prop_get:NnN \l_coffin_display_handles_prop
- { #1 ##1 } \l_coffin_tmp_tl
- \quark_if_no_value:NTF \l_coffin_tmp_tl
+ { #1 ##1 } \l_coffin_internal_tl
+ \quark_if_no_value:NTF \l_coffin_internal_tl
{
\prop_get:NnN \l_coffin_display_handles_prop
- { ##1 #1 } \l_coffin_tmp_tl
- \quark_if_no_value:NTF \l_coffin_tmp_tl
+ { ##1 #1 } \l_coffin_internal_tl
+ \quark_if_no_value:NTF \l_coffin_internal_tl
{
\coffin_display_attach:Nnnnn
\l_coffin_display_coord_coffin { l } { vc }
@@ -1026,12 +1024,12 @@
{
\exp_last_unbraced:No
\coffin_display_handles_aux:nnnn
- \l_coffin_tmp_tl
+ \l_coffin_internal_tl
}
}
{
\exp_last_unbraced:No \coffin_display_handles_aux:nnnn
- \l_coffin_tmp_tl
+ \l_coffin_internal_tl
}
}
}
@@ -1072,35 +1070,18 @@
{
\cs_if_exist:cTF { l_coffin_poles_ \int_value:w #1 _prop }
{
- \iow_term:x
- {
- \iow_newline:
- Size~of~coffin~\token_to_str:N #1 : \iow_newline:
- > ~ ht~=~\dim_use:N \box_ht:N #1 \iow_newline:
- > ~ dp~=~\dim_use:N \box_dp:N #1 \iow_newline:
- > ~ wd~=~\dim_use:N \box_wd:N #1 \iow_newline:
- }
- \iow_term:x { Poles~of~coffin~\token_to_str:N #1 : }
- \tl_set:Nx \l_coffin_tmp_tl
+ \msg_aux_show:Nnx #1 { coffins }
{
\prop_map_function:cN
{ l_coffin_poles_ \int_value:w #1 _prop }
- \coffin_show_aux:nn
+ \msg_aux_show_unbraced:nn
}
- \etex_showtokens:D \exp_after:wN \exp_after:wN \exp_after:wN
- { \exp_after:wN \coffin_show_aux:w \l_coffin_tmp_tl }
}
{
- \iow_term:x { ---~No~poles~found~--- }
- \tl_show:n { Is~this~really~a~coffin? }
+ \msg_aux_use:nn { LaTeX / coffins } { no-pole }
+ \msg_aux_show:x { }
}
}
-\cs_new:Npn \coffin_show_aux:nn #1#2
- {
- \iow_newline: > \c_space_tl \c_space_tl
- #1 \c_space_tl \c_space_tl => \c_space_tl \c_space_tl \exp_not:n {#2}
- }
-\cs_new:Npn \coffin_show_aux:w #1 > ~ { }
\cs_generate_variant:Nn \coffin_show_structure:N { c }
\msg_kernel_new:nnnn { coffins } { no-pole-intersection }
{ No~intersection~between~coffin~poles. }
@@ -1120,6 +1101,19 @@
LaTeX~was~asked~to~find~a~typesetting~pole~for~a~coffin,~
but~either~the~coffin~does~not~exist~or~the~pole~name~is~wrong.
}
+\msg_kernel_new:nnn { coffins } { show }
+ {
+ Size~of~coffin~\token_to_str:N #1 : \\
+ > ~ ht~=~\dim_use:N \box_ht:N #1 \\
+ > ~ dp~=~\dim_use:N \box_dp:N #1 \\
+ > ~ wd~=~\dim_use:N \box_wd:N #1 \\
+ Poles~of~coffin~\token_to_str:N #1 :
+ }
+\msg_kernel_new:nnn { coffins } { no-pole }
+ {
+ ---~No~poles~found~--- \\
+ Is~this~really~a~coffin?
+ }
%%
%%
%% End of file `l3coffins.sty'.
diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3doc.cls b/Master/texmf-dist/tex/latex/l3kernel/l3doc.cls
index a79e13d795e..d27ec84831e 100644
--- a/Master/texmf-dist/tex/latex/l3kernel/l3doc.cls
+++ b/Master/texmf-dist/tex/latex/l3kernel/l3doc.cls
@@ -6,7 +6,6 @@
%%
%% l3doc.dtx (with options: `class')
%%
-%%
%% EXPERIMENTAL CODE
%%
%% Do not distribute this file without also distributing the
@@ -14,7 +13,6 @@
%%
%% Do not distribute a modified version of this file.
%%
-%%
%% File: l3doc.dtx Copyright (C) 1990-2011 The LaTeX3 project
%%
%% It may be distributed and/or modified under the conditions of the
diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3expan.sty b/Master/texmf-dist/tex/latex/l3kernel/l3expan.sty
index b0fded9bb79..f3bf00e9997 100644
--- a/Master/texmf-dist/tex/latex/l3kernel/l3expan.sty
+++ b/Master/texmf-dist/tex/latex/l3kernel/l3expan.sty
@@ -13,7 +13,7 @@
%%
%% Do not distribute a modified version of this file.
%%
-%% File: l3expan.dtx Copyright (C) 1990-2011 The LaTeX3 project
+%% File: l3expan.dtx Copyright (C) 1990-2012 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,19 +46,19 @@
%%
%% -----------------------------------------------------------------------
\RequirePackage{l3names}
-\GetIdInfo$Id: l3expan.dtx 3086 2011-12-22 17:55:46Z bruno $
+\GetIdInfo$Id: l3expan.dtx 3196 2012-01-15 09:44:05Z joseph $
{L3 Experimental argument expansion}
\ProvidesExplPackage
{\ExplFileName}{\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription}
\package_check_loaded_expl:
-\cs_new_nopar:Npn \l_exp_tl { }
+\cs_new_nopar:Npn \l_exp_internal_tl { }
\cs_new:Npn \exp_arg_next:nnn #1#2#3 { #2 \::: { #3 {#1} } }
-\cs_new:Npn \exp_arg_next_nobrace:nnn #1#2#3 { #2 \::: { #3 #1 } }
+\cs_new:Npn \exp_arg_next:Nnn #1#2#3 { #2 \::: { #3 #1 } }
\cs_new:Npn \::: #1 {#1}
\cs_new:Npn \::n #1 \::: #2#3 { #1 \::: { #2 {#3} } }
\cs_new:Npn \::N #1 \::: #2#3 { #1 \::: {#2#3} }
\cs_new:Npn \::c #1 \::: #2#3
- { \exp_after:wN \exp_arg_next_nobrace:nnn \cs:w #3 \cs_end: {#1} {#2} }
+ { \exp_after:wN \exp_arg_next:Nnn \cs:w #3 \cs_end: {#1} {#2} }
\cs_new:Npn \::o #1 \::: #2#3
{ \exp_after:wN \exp_arg_next:nnn \exp_after:wN {#3} {#1} {#2} }
\cs_new:Npn \::f #1 \::: #2#3
@@ -70,8 +70,8 @@
\use:nn { \cs_new_eq:NN \exp_stop_f: } { ~ }
\cs_new_protected:Npn \::x #1 \::: #2#3
{
- \cs_set_nopar:Npx \l_exp_tl { {#3} }
- \exp_after:wN \exp_arg_next:nnn \l_exp_tl {#1} {#2}
+ \cs_set_nopar:Npx \l_exp_internal_tl { {#3} }
+ \exp_after:wN \exp_arg_next:nnn \l_exp_internal_tl {#1} {#2}
}
\cs_new:Npn \::V #1 \::: #2#3
{
@@ -207,8 +207,9 @@
\cs_new_nopar:Npn \exp_args:Nnf { \::n \::f \::: }
\cs_new_nopar:Npn \exp_args:Nno { \::n \::o \::: }
\cs_new_nopar:Npn \exp_args:NnV { \::n \::V \::: }
-\cs_new_nopar:Npn \exp_args:Noc { \::o \::c \::: }
\cs_new_nopar:Npn \exp_args:Noo { \::o \::o \::: }
+\cs_new_nopar:Npn \exp_args:Nof { \::o \::f \::: }
+\cs_new_nopar:Npn \exp_args:Noc { \::o \::c \::: }
\cs_new_protected_nopar:Npn \exp_args:NNx { \::N \::x \::: }
\cs_new_protected_nopar:Npn \exp_args:Ncx { \::c \::x \::: }
\cs_new_protected_nopar:Npn \exp_args:Nnx { \::n \::x \::: }
@@ -247,8 +248,8 @@
}
\cs_new_protected:Npn \::x_unbraced \::: #1#2
{
- \cs_set_nopar:Npx \l_exp_tl { \exp_not:n {#1} #2 }
- \l_exp_tl
+ \cs_set_nopar:Npx \l_exp_internal_tl { \exp_not:n {#1} #2 }
+ \l_exp_internal_tl
}
\cs_new:Npn \exp_last_unbraced:NV #1#2
{ \exp_after:wN #1 \tex_romannumeral:D \exp_eval_register:N #2 }
@@ -291,6 +292,7 @@
\cs_new:Npn \exp_last_two_unbraced_aux:noN #1#2#3
{ \exp_after:wN #3 #2 #1 }
\cs_new:Npn \exp_not:o #1 { \etex_unexpanded:D \exp_after:wN {#1} }
+\cs_new:Npn \exp_not:c #1 { \exp_after:wN \exp_not:N \cs:w #1 \cs_end: }
\cs_new:Npn \exp_not:f #1
{ \etex_unexpanded:D \exp_after:wN { \tex_romannumeral:D -`0 #1 } }
\cs_new:Npn \exp_not:V #1
@@ -303,7 +305,6 @@
\etex_unexpanded:D \exp_after:wN
{ \tex_romannumeral:D \exp_eval_register:c {#1} }
}
-\cs_new:Npn \exp_not:c #1 { \exp_after:wN \exp_not:N \cs:w #1 \cs_end: }
\cs_new_protected:Npn \cs_generate_variant:Nn #1
{
\chk_if_exist_cs:N #1
@@ -311,9 +312,9 @@
\cs_split_function:NN #1 \cs_generate_variant_aux:nnNNn
#1
}
-\cs_new:Npn \cs_generate_variant_aux:nnNNn #1#2#3#4#5
+\cs_new_protected:Npn \cs_generate_variant_aux:nnNNn #1#2#3#4#5
{ \cs_generate_variant_aux:Nnnw #4 {#1}{#2} #5 , ? , \q_recursion_stop }
-\cs_new:Npn \cs_generate_variant_aux:Nnnw #1#2#3#4 ,
+\cs_new_protected:Npn \cs_generate_variant_aux:Nnnw #1#2#3#4 ,
{
\if:w ? #4
\exp_after:wN \use_none_delimit_by_q_recursion_stop:w
@@ -340,7 +341,7 @@
{#4}
\cs_generate_variant_aux:Nnnw #1 {#2} {#3}
}
-\cs_new:Npn \cs_generate_variant_aux:NNn #1 #2 #3
+\cs_new_protected:Npn \cs_generate_variant_aux:NNn #1 #2 #3
{
\cs_if_free:NTF #2
{
@@ -369,7 +370,7 @@
\tex_lowercase:D
{
\group_end:
- \cs_new:Npn \cs_generate_variant_aux:N #1
+ \cs_new_protected:Npn \cs_generate_variant_aux:N #1
{
\exp_after:wN \cs_generate_variant_aux:w
\token_to_meaning:N #1
@@ -378,7 +379,7 @@
\q_mark \cs_new_nopar:Npx
\q_stop
}
- \cs_new:Npn \cs_generate_variant_aux:w
+ \cs_new_protected:Npn \cs_generate_variant_aux:w
#1 ? PROTECTEZ #2 \q_mark #3 #4 \q_stop
{
\cs_set_eq:NN \cs_tmp:w #3
diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3file.sty b/Master/texmf-dist/tex/latex/l3kernel/l3file.sty
index 5ee45083280..2ae16bd987d 100644
--- a/Master/texmf-dist/tex/latex/l3kernel/l3file.sty
+++ b/Master/texmf-dist/tex/latex/l3kernel/l3file.sty
@@ -13,7 +13,7 @@
%%
%% Do not distribute a modified version of this file.
%%
-%% File: l3file.dtx Copyright (C) 2009-2011 The LaTeX3 Project
+%% File: l3file.dtx Copyright (C) 2009-2012 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,7 +46,7 @@
%%
%% -----------------------------------------------------------------------
\RequirePackage{l3names}
-\GetIdInfo$Id: l3file.dtx 3095 2011-12-26 22:33:23Z joseph $
+\GetIdInfo$Id: l3file.dtx 3158 2012-01-09 00:47:42Z bruno $
{L3 Experimental file operations}
\ProvidesExplPackage
{\ExplFileName}{\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription}
@@ -55,17 +55,18 @@
\tl_gset_eq:NN \g_file_current_name_tl \@currname
\seq_new:N \g_file_stack_seq
\seq_new:N \g_file_record_seq
-\tl_new:N \l_file_name_tl
+\tl_new:N \l_file_internal_name_tl
\seq_new:N \l_file_search_path_seq
-\seq_new:N \l_file_search_path_saved_seq
-\seq_new:N \l_file_tmpa_seq
+\seq_new:N \l_file_internal_saved_path_seq
+\seq_new:N \l_file_internal_seq
+\ior_new:N \g_file_internal_ior
\cs_new_protected:Npn \file_add_path:nN #1#2
{
- \ior_open:Nn \g_file_test_ior {#1}
- \ior_if_eof:NTF \g_file_test_ior
+ \ior_open:Nn \g_file_internal_ior {#1}
+ \ior_if_eof:NTF \g_file_internal_ior
{ \file_add_path_search:nN {#1} #2 }
{
- \ior_close:N \g_file_test_ior
+ \ior_close:N \g_file_internal_ior
\tl_set:Nx #2 {#1}
}
}
@@ -74,40 +75,40 @@
\tl_clear:N #2
\cs_if_exist:NT \input@path
{
- \seq_set_eq:NN \l_file_search_path_saved_seq \l_file_search_path_seq
- \seq_set_from_clist:NN \l_file_tmpa_seq \input@path
+ \seq_set_eq:NN \l_file_internal_saved_path_seq \l_file_search_path_seq
+ \seq_set_from_clist:NN \l_file_internal_seq \input@path
\seq_concat:NNN \l_file_search_path_seq
- \l_file_search_path_seq \l_file_tmpa_seq
+ \l_file_search_path_seq \l_file_internal_seq
}
\seq_map_inline:Nn \l_file_search_path_seq
{
- \ior_open:Nn \g_file_test_ior { ##1 #1 }
- \ior_if_eof:NF \g_file_test_ior
+ \ior_open:Nn \g_file_internal_ior { ##1 #1 }
+ \ior_if_eof:NF \g_file_internal_ior
{
\tl_set:Nx #2 { ##1 #1 }
\seq_map_break:
}
}
\cs_if_exist:NT \input@path
- { \seq_set_eq:NN \l_file_search_path_seq \l_file_search_path_saved_seq }
- \ior_close:N \g_file_test_ior
+ { \seq_set_eq:NN \l_file_search_path_seq \l_file_internal_saved_path_seq }
+ \ior_close:N \g_file_internal_ior
}
\prg_new_protected_conditional:Nnn \file_if_exist:n { T , F , TF }
{
- \file_add_path:nN {#1} \l_file_name_tl
- \tl_if_empty:NTF \l_file_name_tl
+ \file_add_path:nN {#1} \l_file_internal_name_tl
+ \tl_if_empty:NTF \l_file_internal_name_tl
{ \prg_return_false: }
{ \prg_return_true: }
}
\cs_new_protected:Npn \file_input:n #1
{
- \file_add_path:nN {#1} \l_file_name_tl
- \tl_if_empty:NF \l_file_name_tl
+ \file_add_path:nN {#1} \l_file_internal_name_tl
+ \tl_if_empty:NF \l_file_internal_name_tl
{
\@addtofilelist {#1}
\seq_gpush:NV \g_file_stack_seq \g_file_current_name_tl
\tl_gset:Nn \g_file_current_name_tl {#1}
- \exp_after:wN \tex_input:D \l_file_name_tl \c_space_tl
+ \exp_after:wN \tex_input:D \l_file_internal_name_tl \c_space_tl
\seq_gpop:NN \g_file_stack_seq \g_file_current_name_tl
}
}
@@ -127,8 +128,8 @@
}
\AtBeginDocument
{
- \seq_set_from_clist:NN \l_file_tmpa_seq \@filelist
- \seq_gconcat:NNN \g_file_record_seq \g_file_record_seq \l_file_tmpa_seq
+ \seq_set_from_clist:NN \l_file_internal_seq \@filelist
+ \seq_gconcat:NNN \g_file_record_seq \g_file_record_seq \l_file_internal_seq
}
%%
%%
diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3fp.sty b/Master/texmf-dist/tex/latex/l3kernel/l3fp.sty
index 00d73728018..e22994a4726 100644
--- a/Master/texmf-dist/tex/latex/l3kernel/l3fp.sty
+++ b/Master/texmf-dist/tex/latex/l3kernel/l3fp.sty
@@ -13,7 +13,7 @@
%%
%% Do not distribute a modified version of this file.
%%
-%% File: l3fp.dtx Copyright (C) 2010,2011 The LaTeX3 Project
+%% File: l3fp.dtx Copyright (C) 2010-2012 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,7 +46,7 @@
%%
%% -----------------------------------------------------------------------
\RequirePackage{l3names}
-\GetIdInfo$Id: l3fp.dtx 3086 2011-12-22 17:55:46Z bruno $
+\GetIdInfo$Id: l3fp.dtx 3154 2012-01-08 22:46:28Z bruno $
{L3 Experimental floating-point operations}
\ProvidesExplPackage
{\ExplFileName}{\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription}
@@ -115,8 +115,8 @@
\int_new:N \l_fp_round_target_int
\tl_new:N \l_fp_sign_tl
\int_new:N \l_fp_split_sign_int
-\int_new:N \l_fp_tmp_int
-\tl_new:N \l_fp_tmp_tl
+\int_new:N \l_fp_internal_int
+\tl_new:N \l_fp_internal_tl
\int_new:N \l_fp_trig_octant_int
\int_new:N \l_fp_trig_sign_int
\int_new:N \l_fp_trig_decimal_int
@@ -136,34 +136,34 @@
}
\cs_new_protected:Npn \fp_split:Nn #1#2
{
- \tl_set:Nx \l_fp_tmp_tl {#2}
- \tl_set_rescan:Nno \l_fp_tmp_tl { \char_set_catcode_ignore:n { 32 } }
- { \l_fp_tmp_tl }
+ \tl_set:Nx \l_fp_internal_tl {#2}
+ \tl_set_rescan:Nno \l_fp_internal_tl { \char_set_catcode_ignore:n { 32 } }
+ { \l_fp_internal_tl }
\l_fp_split_sign_int \c_one
\fp_split_sign:
\use:c { l_fp_input_ #1 _sign_int } \l_fp_split_sign_int
- \exp_after:wN \fp_split_exponent:w \l_fp_tmp_tl e e \q_stop #1
+ \exp_after:wN \fp_split_exponent:w \l_fp_internal_tl e e \q_stop #1
}
\cs_new_protected_nopar:Npn \fp_split_sign:
{
\if_int_compare:w \pdftex_strcmp:D
- { \exp_after:wN \tl_head:w \l_fp_tmp_tl ? \q_stop } { - }
+ { \exp_after:wN \tl_head:w \l_fp_internal_tl ? \q_stop } { - }
= \c_zero
- \tl_set:Nx \l_fp_tmp_tl
+ \tl_set:Nx \l_fp_internal_tl
{
\exp_after:wN
- \tl_tail:w \l_fp_tmp_tl \prg_do_nothing: \q_stop
+ \tl_tail:w \l_fp_internal_tl \prg_do_nothing: \q_stop
}
\l_fp_split_sign_int -\l_fp_split_sign_int
\exp_after:wN \fp_split_sign:
\else:
\if_int_compare:w \pdftex_strcmp:D
- { \exp_after:wN \tl_head:w \l_fp_tmp_tl ? \q_stop } { + }
+ { \exp_after:wN \tl_head:w \l_fp_internal_tl ? \q_stop } { + }
= \c_zero
- \tl_set:Nx \l_fp_tmp_tl
+ \tl_set:Nx \l_fp_internal_tl
{
\exp_after:wN
- \tl_tail:w \l_fp_tmp_tl \prg_do_nothing: \q_stop
+ \tl_tail:w \l_fp_internal_tl \prg_do_nothing: \q_stop
}
\exp_after:wN \exp_after:wN \exp_after:wN \fp_split_sign:
\fi:
@@ -183,9 +183,9 @@
{ \fp_split_aux_iii:w {#1#2#3#4#5#6#7#8#9} }
\cs_new_protected:Npn \fp_split_aux_iii:w #1#2 \q_stop
{
- \l_fp_tmp_int 1 #1 \scan_stop:
+ \l_fp_internal_int 1 #1 \scan_stop:
\exp_after:wN \fp_split_decimal:w
- \int_use:N \l_fp_tmp_int 000000000 \q_stop
+ \int_use:N \l_fp_internal_int 000000000 \q_stop
}
\cs_new_protected:Npn \fp_split_decimal:w #1#2#3#4#5#6#7#8#9
{ \fp_split_decimal_aux:w {#2#3#4#5#6#7#8#9} }
@@ -252,12 +252,12 @@
#2 ##1##2##3##4##5##6##7##8 \scan_stop:
\tex_advance:D #3 \c_one_thousand_million
\tex_divide:D #3 \c_ten
- \tl_set:Nx \l_fp_tmp_tl
+ \tl_set:Nx \l_fp_internal_tl
{
##9
\exp_after:wN \use_none:n \int_use:N #3
}
- #3 \l_fp_tmp_tl \scan_stop:
+ #3 \l_fp_internal_tl \scan_stop:
\tex_advance:D #4 \c_one
}
\fp_standardise_aux:
@@ -299,13 +299,13 @@
\l_fp_input_b_integer_int #1#2#3#4#5#6#7#8 \scan_stop:
\tex_advance:D \l_fp_input_b_decimal_int \c_one_thousand_million
\tex_divide:D \l_fp_input_b_decimal_int \c_ten
- \tl_set:Nx \l_fp_tmp_tl
+ \tl_set:Nx \l_fp_internal_tl
{
#9
\exp_after:wN \use_none:n
\int_use:N \l_fp_input_b_decimal_int
}
- \l_fp_input_b_decimal_int \l_fp_tmp_tl \scan_stop:
+ \l_fp_input_b_decimal_int \l_fp_internal_tl \scan_stop:
\tex_advance:D \l_fp_input_b_exponent_int \c_one
}
\cs_new_protected_nopar:Npn \fp_level_input_exponents_b:
@@ -324,13 +324,13 @@
\l_fp_input_a_integer_int #1#2#3#4#5#6#7#8 \scan_stop:
\tex_advance:D \l_fp_input_a_decimal_int \c_one_thousand_million
\tex_divide:D \l_fp_input_a_decimal_int \c_ten
- \tl_set:Nx \l_fp_tmp_tl
+ \tl_set:Nx \l_fp_internal_tl
{
#9
\exp_after:wN \use_none:n
\int_use:N \l_fp_input_a_decimal_int
}
- \l_fp_input_a_decimal_int \l_fp_tmp_tl \scan_stop:
+ \l_fp_input_a_decimal_int \l_fp_internal_tl \scan_stop:
\tex_advance:D \l_fp_input_a_exponent_int \c_one
}
\cs_new_protected:Npn \fp_tmp:w #1#2 { }
@@ -352,6 +352,12 @@
{ \tl_gset_eq:NN #1 \c_zero_fp }
\cs_generate_variant:Nn \fp_zero:N { c }
\cs_generate_variant:Nn \fp_gzero:N { c }
+\cs_new_protected:Npn \fp_zero_new:N #1
+ { \cs_if_exist:NTF #1 { \fp_zero:N #1 } { \fp_new:N #1 } }
+\cs_new_protected:Npn \fp_gzero_new:N #1
+ { \cs_if_exist:NTF #1 { \fp_gzero:N #1 } { \fp_new:N #1 } }
+\cs_generate_variant:Nn \fp_zero_new:N { c }
+\cs_generate_variant:Nn \fp_gzero_new:N { c }
\cs_new_protected_nopar:Npn \fp_set:Nn { \fp_set_aux:NNn \tl_set:Nn }
\cs_new_protected_nopar:Npn \fp_gset:Nn { \fp_set_aux:NNn \tl_gset:Nn }
\cs_new_protected:Npn \fp_set_aux:NNn #1#2#3
@@ -393,12 +399,12 @@
\cs_new_protected:Npn \fp_set_from_dim_aux:NNn #1#2#3
{
\group_begin:
- \l_fp_tmp_skip \etex_glueexpr:D #3 \scan_stop:
- \l_fp_tmp_dim \l_fp_tmp_skip
+ \l_fp_internal_skip \etex_glueexpr:D #3 \scan_stop:
+ \l_fp_internal_dim \l_fp_internal_skip
\fp_split:Nn a
{
\exp_after:wN \fp_set_from_dim_aux:w
- \dim_use:N \l_fp_tmp_dim
+ \dim_use:N \l_fp_internal_dim
}
\fp_standardise:NNNN
\l_fp_input_a_sign_int
@@ -434,8 +440,8 @@
\fp_set_from_dim_aux:w
\cs_generate_variant:Nn \fp_set_from_dim:Nn { c }
\cs_generate_variant:Nn \fp_gset_from_dim:Nn { c }
-\dim_new:N \l_fp_tmp_dim
-\skip_new:N \l_fp_tmp_skip
+\dim_new:N \l_fp_internal_dim
+\skip_new:N \l_fp_internal_skip
\cs_new_eq:NN \fp_set_eq:NN \tl_set_eq:NN
\cs_new_eq:NN \fp_set_eq:cN \tl_set_eq:cN
\cs_new_eq:NN \fp_set_eq:Nc \tl_set_eq:Nc
@@ -900,15 +906,15 @@
{
\if_int_compare:w \l_fp_round_position_int < \l_fp_round_target_int
\bool_if:NTF \l_fp_round_carry_bool
- { \l_fp_tmp_int \int_eval:w #1 + \c_one \scan_stop: }
- { \l_fp_tmp_int \int_eval:w #1 \scan_stop: }
- \if_int_compare:w \l_fp_tmp_int = \c_ten
- \l_fp_tmp_int \c_zero
+ { \l_fp_internal_int \int_eval:w #1 + \c_one \scan_stop: }
+ { \l_fp_internal_int \int_eval:w #1 \scan_stop: }
+ \if_int_compare:w \l_fp_internal_int = \c_ten
+ \l_fp_internal_int \c_zero
\else:
\bool_set_false:N \l_fp_round_carry_bool
\fi:
\tl_set:Nx \l_fp_round_decimal_tl
- { \int_use:N \l_fp_tmp_int \l_fp_round_decimal_tl }
+ { \int_use:N \l_fp_internal_int \l_fp_round_decimal_tl }
\else:
\tl_set:Nx \l_fp_round_decimal_tl { 0 \l_fp_round_decimal_tl }
\if_int_compare:w \l_fp_round_position_int = \l_fp_round_target_int
@@ -956,7 +962,7 @@
\group_begin:
\fp_read:N #2
\tex_advance:D \l_fp_input_a_decimal_int \c_one_thousand_million
- \tl_set:Nx \l_fp_tmp_tl
+ \tl_set:Nx \l_fp_internal_tl
{
\if_int_compare:w \l_fp_input_a_sign_int < \c_zero
+
@@ -971,7 +977,7 @@
\int_use:N \l_fp_input_a_exponent_int
}
\exp_after:wN \group_end: \exp_after:wN
- #1 \exp_after:wN #2 \exp_after:wN { \l_fp_tmp_tl }
+ #1 \exp_after:wN #2 \exp_after:wN { \l_fp_internal_tl }
}
\cs_new_protected_nopar:Npn \fp_add:Nn { \fp_add_aux:NNn \tl_set:Nn }
\cs_new_protected_nopar:Npn \fp_gadd:Nn { \fp_add_aux:NNn \tl_gset:Nn }
@@ -1504,16 +1510,16 @@
}
\cs_new_protected:Npn \fp_div_integer:NNNNN #1#2#3#4#5
{
- \l_fp_tmp_int #1
- \tex_divide:D \l_fp_tmp_int #3
- \l_fp_tmp_int \int_eval:w #1 - \l_fp_tmp_int * #3 \int_eval_end:
+ \l_fp_internal_int #1
+ \tex_divide:D \l_fp_internal_int #3
+ \l_fp_internal_int \int_eval:w #1 - \l_fp_internal_int * #3 \int_eval_end:
#4 #1
\tex_divide:D #4 #3
#5 #2
\tex_divide:D #5 #3
- \tex_multiply:D \l_fp_tmp_int \c_one_thousand
- \tex_divide:D \l_fp_tmp_int #3
- #5 \int_eval:w #5 + \l_fp_tmp_int * \c_one_million \int_eval_end:
+ \tex_multiply:D \l_fp_internal_int \c_one_thousand
+ \tex_divide:D \l_fp_internal_int #3
+ #5 \int_eval:w #5 + \l_fp_internal_int * \c_one_million \int_eval_end:
\if_int_compare:w #5 > \c_one_thousand_million
\tex_advance:D #4 \c_one
\tex_advance:D #5 -\c_one_thousand_million
@@ -1568,21 +1574,21 @@
\if_int_compare:w \l_fp_input_a_integer_int = \c_zero
\l_fp_input_a_decimal_int #1#2#3#4#5#6#7#8 \scan_stop:
\else:
- \tl_set:Nx \l_fp_tmp_tl
+ \tl_set:Nx \l_fp_internal_tl
{
\int_use:N \l_fp_input_a_integer_int
#1#2#3#4#5#6#7#8
}
\l_fp_input_a_integer_int \c_zero
- \l_fp_input_a_decimal_int \l_fp_tmp_tl \scan_stop:
+ \l_fp_input_a_decimal_int \l_fp_internal_tl \scan_stop:
\fi:
\tex_divide:D \l_fp_input_a_extended_int \c_ten
- \tl_set:Nx \l_fp_tmp_tl
+ \tl_set:Nx \l_fp_internal_tl
{
#9
\int_use:N \l_fp_input_a_extended_int
}
- \l_fp_input_a_extended_int \l_fp_tmp_tl \scan_stop:
+ \l_fp_input_a_extended_int \l_fp_internal_tl \scan_stop:
\tex_advance:D \l_fp_input_a_exponent_int \c_one
}
\cs_new_protected_nopar:Npn \fp_extended_normalise_output:
@@ -1600,14 +1606,14 @@
{
\l_fp_output_integer_int #1#2#3#4#5#6#7#8 \scan_stop:
\tex_advance:D \l_fp_output_decimal_int \c_one_thousand_million
- \tl_set:Nx \l_fp_tmp_tl
+ \tl_set:Nx \l_fp_internal_tl
{
#9
\exp_after:wN \use_none:n
\int_use:N \l_fp_output_decimal_int
}
\exp_after:wN \fp_extended_normalise_output_aux_ii:NNNNNNNNN
- \l_fp_tmp_tl
+ \l_fp_internal_tl
}
\cs_new_protected:Npn \fp_extended_normalise_output_aux_ii:NNNNNNNNN
#1#2#3#4#5#6#7#8#9
@@ -1619,13 +1625,13 @@
{
\tex_advance:D \l_fp_output_extended_int \c_one_thousand_million
\tex_divide:D \l_fp_output_extended_int \c_ten
- \tl_set:Nx \l_fp_tmp_tl
+ \tl_set:Nx \l_fp_internal_tl
{
#1
\exp_after:wN \use_none:n
\int_use:N \l_fp_output_extended_int
}
- \l_fp_output_extended_int \l_fp_tmp_tl \scan_stop:
+ \l_fp_output_extended_int \l_fp_internal_tl \scan_stop:
\tex_advance:D \l_fp_output_exponent_int \c_one
}
\cs_new_protected_nopar:Npn \fp_trig_normalise:
@@ -2347,27 +2353,27 @@
\l_fp_exp_exponent_int \c_zero
\exp_after:wN \fp_exp_integer_tens:
\else:
- \tl_set:Nx \l_fp_tmp_tl
+ \tl_set:Nx \l_fp_internal_tl
{
\exp_after:wN \use_i:nnn
\int_use:N \l_fp_input_a_integer_int
}
\l_fp_input_a_integer_int
\int_eval:w
- \l_fp_input_a_integer_int - \l_fp_tmp_tl 00
+ \l_fp_input_a_integer_int - \l_fp_internal_tl 00
\int_eval_end:
\if_int_compare:w \l_fp_input_a_sign_int < \c_zero
\if_int_compare:w \l_fp_output_integer_int > 200 \scan_stop:
\fp_exp_const:cx { c_fp_exp ( \l_fp_arg_tl ) _fp }
{ \c_zero_fp }
\else:
- \fp_exp_integer_const:n { - \l_fp_tmp_tl 00 }
+ \fp_exp_integer_const:n { - \l_fp_internal_tl 00 }
\exp_after:wN \exp_after:wN \exp_after:wN
\exp_after:wN \exp_after:wN \exp_after:wN
\exp_after:wN \fp_exp_integer_tens:
\fi:
\else:
- \fp_exp_integer_const:n { \l_fp_tmp_tl 00 }
+ \fp_exp_integer_const:n { \l_fp_internal_tl 00 }
\exp_after:wN \exp_after:wN \exp_after:wN
\exp_after:wN \fp_exp_integer_tens:
\fi:
@@ -2380,19 +2386,19 @@
\l_fp_output_extended_int \l_fp_exp_extended_int
\l_fp_output_exponent_int \l_fp_exp_exponent_int
\if_int_compare:w \l_fp_input_a_integer_int > \c_nine
- \tl_set:Nx \l_fp_tmp_tl
+ \tl_set:Nx \l_fp_internal_tl
{
\exp_after:wN \use_i:nn
\int_use:N \l_fp_input_a_integer_int
}
\l_fp_input_a_integer_int
\int_eval:w
- \l_fp_input_a_integer_int - \l_fp_tmp_tl 0
+ \l_fp_input_a_integer_int - \l_fp_internal_tl 0
\int_eval_end:
\if_int_compare:w \l_fp_input_a_sign_int > \c_zero
- \fp_exp_integer_const:n { \l_fp_tmp_tl 0 }
+ \fp_exp_integer_const:n { \l_fp_internal_tl 0 }
\else:
- \fp_exp_integer_const:n { - \l_fp_tmp_tl 0 }
+ \fp_exp_integer_const:n { - \l_fp_internal_tl 0 }
\fi:
\fp_mul:NNNNNNNNN
\l_fp_exp_integer_int \l_fp_exp_decimal_int \l_fp_exp_extended_int
@@ -2723,21 +2729,21 @@
\if_int_compare:w \l_fp_exp_integer_int = \c_zero
\l_fp_exp_decimal_int #1#2#3#4#5#6#7#8 \scan_stop:
\else:
- \tl_set:Nx \l_fp_tmp_tl
+ \tl_set:Nx \l_fp_internal_tl
{
\int_use:N \l_fp_exp_integer_int
#1#2#3#4#5#6#7#8
}
\l_fp_exp_integer_int \c_zero
- \l_fp_exp_decimal_int \l_fp_tmp_tl \scan_stop:
+ \l_fp_exp_decimal_int \l_fp_internal_tl \scan_stop:
\fi:
\tex_divide:D \l_fp_exp_extended_int \c_ten
- \tl_set:Nx \l_fp_tmp_tl
+ \tl_set:Nx \l_fp_internal_tl
{
#9
\int_use:N \l_fp_exp_extended_int
}
- \l_fp_exp_extended_int \l_fp_tmp_tl \scan_stop:
+ \l_fp_exp_extended_int \l_fp_internal_tl \scan_stop:
\tex_advance:D \l_fp_exp_exponent_int \c_one
}
\cs_new_protected_nopar:Npn \fp_ln_mantissa:
@@ -2860,13 +2866,13 @@
\if_int_compare:w \l_fp_output_integer_int = \c_zero
\l_fp_output_decimal_int #1#2#3#4#5#6#7#8 \scan_stop:
\else:
- \tl_set:Nx \l_fp_tmp_tl
+ \tl_set:Nx \l_fp_internal_tl
{
\int_use:N \l_fp_output_integer_int
#1#2#3#4#5#6#7#8
}
\l_fp_output_integer_int \c_zero
- \l_fp_output_decimal_int \l_fp_tmp_tl \scan_stop:
+ \l_fp_output_decimal_int \l_fp_internal_tl \scan_stop:
\fi:
\tex_advance:D \l_fp_output_exponent_int \c_one
}
@@ -3304,7 +3310,7 @@
}
\cs_new_protected_nopar:cpn { fp_compare_<: }
{
- \tl_set:Nx \l_fp_tmp_tl
+ \tl_set:Nx \l_fp_internal_tl
{
\int_set:Nn \exp_not:N \l_fp_input_a_sign_int
{ \int_use:N \l_fp_input_b_sign_int }
@@ -3323,18 +3329,18 @@
\int_set:Nn \exp_not:N \l_fp_input_b_exponent_int
{ \int_use:N \l_fp_input_a_exponent_int }
}
- \l_fp_tmp_tl
+ \l_fp_internal_tl
\use:c { fp_compare_>: }
}
\prg_new_protected_conditional:Npnn \fp_compare:n #1 { T , F , TF }
{
\group_begin:
- \tl_set:Nx \l_fp_tmp_tl
+ \tl_set:Nx \l_fp_internal_tl
{
\group_end:
\fp_compare_aux_i:w #1 \exp_not:n { == \q_nil == \q_stop }
}
- \l_fp_tmp_tl
+ \l_fp_internal_tl
}
\cs_new_protected:Npn \fp_compare_aux_i:w #1 == #2 == #3 \q_stop
{
diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3int.sty b/Master/texmf-dist/tex/latex/l3kernel/l3int.sty
index eaf62805f81..9f85bb04e58 100644
--- a/Master/texmf-dist/tex/latex/l3kernel/l3int.sty
+++ b/Master/texmf-dist/tex/latex/l3kernel/l3int.sty
@@ -13,7 +13,7 @@
%%
%% Do not distribute a modified version of this file.
%%
-%% File: l3int.dtx Copyright (C) 1990-2011 The LaTeX3 Project
+%% File: l3int.dtx Copyright (C) 1990-2012 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,7 +46,7 @@
%%
%% -----------------------------------------------------------------------
\RequirePackage{l3names}
-\GetIdInfo$Id: l3int.dtx 3086 2011-12-22 17:55:46Z bruno $
+\GetIdInfo$Id: l3int.dtx 3139 2012-01-07 19:53:09Z bruno $
{L3 Experimental integers}
\ProvidesExplPackage
{\ExplFileName}{\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription}
diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3io.sty b/Master/texmf-dist/tex/latex/l3kernel/l3io.sty
index 685dd7ca945..16312914578 100644
--- a/Master/texmf-dist/tex/latex/l3kernel/l3io.sty
+++ b/Master/texmf-dist/tex/latex/l3kernel/l3io.sty
@@ -13,7 +13,7 @@
%%
%% Do not distribute a modified version of this file.
%%
-%% File: l3io.dtx Copyright (C) 1990-2011 The LaTeX3 Project
+%% File: l3io.dtx Copyright (C) 1990-2012 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,7 +46,7 @@
%%
%% -----------------------------------------------------------------------
\RequirePackage{l3names}
-\GetIdInfo$Id: l3io.dtx 3096 2011-12-27 09:09:18Z joseph $
+\GetIdInfo$Id: l3io.dtx 3160 2012-01-09 02:33:23Z bruno $
{L3 Experimental input-output operations}
\ProvidesExplPackage
{\ExplFileName}{\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription}
@@ -135,6 +135,8 @@
\tl_map_break:
}
}
+\iow_new:N \g_iow_internal_iow
+\ior_new:N \g_ior_internal_ior
\cs_new_protected:Npn \iow_stream_alloc:N #1
{
\cs_if_exist:cTF { g_iow_ \int_use:N \l_iow_stream_int _iow }
@@ -143,10 +145,10 @@
\iow_stream_alloc_aux:
\int_compare:nNnT \l_iow_stream_int = \c_sixteen
{
- \iow_raw_new:N \g_iow_tmp_iow
- \int_set:Nn \l_iow_stream_int { \g_iow_tmp_iow }
+ \iow_raw_new:N \g_iow_internal_iow
+ \int_set:Nn \l_iow_stream_int { \g_iow_internal_iow }
\cs_gset_eq:cN
- { g_iow_ \int_use:N \l_iow_stream_int _iow } \g_iow_tmp_iow
+ { g_iow_ \int_use:N \l_iow_stream_int _iow } \g_iow_internal_iow
}
\cs_gset_eq:Nc #1 { g_iow_ \int_use:N \l_iow_stream_int _iow }
}
@@ -172,10 +174,10 @@
\ior_stream_alloc_aux:
\int_compare:nNnT \l_ior_stream_int = \c_sixteen
{
- \ior_raw_new:N \g_ior_tmp_ior
- \int_set:Nn \l_ior_stream_int { \g_ior_tmp_ior }
+ \ior_raw_new:N \g_ior_internal_ior
+ \int_set:Nn \l_ior_stream_int { \g_ior_internal_ior }
\cs_gset_eq:cN
- { g_ior_ \int_use:N \l_iow_stream_int _ior } \g_ior_tmp_ior
+ { g_ior_ \int_use:N \l_iow_stream_int _ior } \g_ior_internal_ior
}
\cs_gset_eq:Nc #1 { g_ior_ \int_use:N \l_ior_stream_int _ior }
}
@@ -462,6 +464,39 @@
{ \etex_readline:D #1 to #2 }
\cs_new_protected:Npn \ior_str_gto:NN #1#2
{ \tex_global:D \etex_readline:D #1 to #2 }
+\tl_new:N \l_ior_internal_tl
+\cs_new_protected_nopar:Npn \ior_map_inline:nn
+ { \ior_map_inline_aux:Nnn \ior_to:NN }
+\cs_new_protected_nopar:Npn \ior_str_map_inline:nn
+ { \ior_map_inline_aux:Nnn \ior_str_to:NN }
+\cs_new_protected_nopar:Npn \ior_map_inline_aux:Nnn
+ {
+ \exp_args:Ncc \ior_map_inline_aux:NNNnn
+ { g_ior_map_ \int_use:N \g_prg_map_int _ior }
+ { ior_map_ \int_use:N \g_prg_map_int :n }
+ }
+\cs_new_protected:Npn \ior_map_inline_aux:NNNnn #1#2#3#4#5
+ {
+ \cs_if_exist:NF #1 { \ior_new:N #1 }
+ \cs_set:Npn #2 ##1 {#5}
+ \ior_open:Nn #1 {#4}
+ \int_gincr:N \g_prg_map_int
+ \ior_if_eof:NF #1 { \ior_map_inline_loop:NNN #1#2#3 }
+ \prg_break_point:n
+ {
+ \int_gdecr:N \g_prg_map_int
+ \ior_close:N #1
+ }
+ }
+\cs_new_protected:Npn \ior_map_inline_loop:NNN #1#2#3
+ {
+ #3 #1 \l_ior_internal_tl
+ \ior_if_eof:NF #1
+ {
+ \exp_args:No #2 \l_ior_internal_tl
+ \ior_map_inline_loop:NNN #1#2#3
+ }
+ }
%%
%%
%% End of file `l3io.sty'.
diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3luatex.sty b/Master/texmf-dist/tex/latex/l3kernel/l3luatex.sty
index 2328dda0623..9643cba784c 100644
--- a/Master/texmf-dist/tex/latex/l3kernel/l3luatex.sty
+++ b/Master/texmf-dist/tex/latex/l3kernel/l3luatex.sty
@@ -13,7 +13,7 @@
%%
%% Do not distribute a modified version of this file.
%%
-%% File: l3luatex.dtx Copyright (C) 2010,2011 The LaTeX3 Project
+%% File: l3luatex.dtx Copyright (C) 2010-2012 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,7 +46,7 @@
%%
%% -----------------------------------------------------------------------
\RequirePackage{l3names}
-\GetIdInfo$Id: l3luatex.dtx 3086 2011-12-22 17:55:46Z bruno $
+\GetIdInfo$Id: l3luatex.dtx 3158 2012-01-09 00:47:42Z bruno $
{L3 Experimental LuaTeX-specific functions}
\ProvidesExplPackage
{\ExplFileName}{\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription}
@@ -127,9 +127,9 @@
{
\int_gsub:Nn \g_cctab_stack_int { \c_two }
\seq_if_empty:NTF \g_cctab_stack_seq
- { \tl_set:Nn \l_cctab_tmp_tl { 0 } }
- { \seq_gpop:NN \g_cctab_stack_seq \l_cctab_tmp_tl }
- \luatex_catcodetable:D \l_cctab_tmp_tl \scan_stop:
+ { \tl_set:Nn \l_cctab_internal_tl { 0 } }
+ { \seq_gpop:NN \g_cctab_stack_seq \l_cctab_internal_tl }
+ \luatex_catcodetable:D \l_cctab_internal_tl \scan_stop:
}
\luatex_if_engine:F
{
@@ -149,7 +149,7 @@
\cs_set_protected:Npn \cctab_begin:N #1 { \BeginCatcodeRegime #1 }
\cs_set_protected_nopar:Npn \cctab_end: { \EndCatcodeRegime }
}
-\tl_new:N \l_cctab_tmp_tl
+\tl_new:N \l_cctab_internal_tl
\cs_new_protected:Npn \cctab_gset:Nn #1#2
{
\group_begin:
diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3msg.sty b/Master/texmf-dist/tex/latex/l3kernel/l3msg.sty
index 7090d10d2a5..90d70060297 100644
--- a/Master/texmf-dist/tex/latex/l3kernel/l3msg.sty
+++ b/Master/texmf-dist/tex/latex/l3kernel/l3msg.sty
@@ -13,7 +13,7 @@
%%
%% Do not distribute a modified version of this file.
%%
-%% File: l3msg.dtx Copyright (C) 2009-2011 The LaTeX3 Project
+%% File: l3msg.dtx Copyright (C) 2009-2012 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,12 +46,12 @@
%%
%% -----------------------------------------------------------------------
\RequirePackage{l3names}
-\GetIdInfo$Id: l3msg.dtx 3086 2011-12-22 17:55:46Z bruno $
+\GetIdInfo$Id: l3msg.dtx 3153 2012-01-08 22:05:30Z bruno $
{L3 Experimental messages}
\ProvidesExplPackage
{\ExplFileName}{\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription}
\package_check_loaded_expl:
-\tl_new:N \l_msg_tmp_tl
+\tl_new:N \l_msg_internal_tl
\tl_const:Nn \c_msg_text_prefix_tl { msg~text~>~ }
\tl_const:Nn \c_msg_more_text_prefix_tl { msg~extra~text~>~ }
\cs_new_protected:Npn \msg_new:nnnn #1#2
@@ -160,14 +160,14 @@
{ \tl_set:Nn \l_msg_text_tl {#1} }
\cs_new_protected:Npn \msg_interrupt_more_text:n #1
{
- \protected@edef \l_msg_tmp_tl
+ \protected@edef \l_msg_internal_tl
{
|'''''''''''''''''''''''''''''''''''''''''''''''
#1
\msg_newline:
|...............................................
}
- \tex_errhelp:D \exp_after:wN { \l_msg_tmp_tl }
+ \tex_errhelp:D \exp_after:wN { \l_msg_internal_tl }
}
\group_begin: % {
\char_set_lccode:nn {`\}} {`\ }
@@ -572,22 +572,22 @@
{ Negative~argument~for~\prg_replicate:nn. }
\msg_kernel_new:nnn { seq } { show }
{
- Sequence~\token_to_str:N #1~
+ The~sequence~\token_to_str:N #1~
\seq_if_empty:NTF #1
{ is~empty }
{ contains~the~items~(without~outer~braces): }
}
\msg_kernel_new:nnn { prop } { show }
{
- Property~list~\token_to_str:N #1~
+ The~property~list~\token_to_str:N #1~
\prop_if_empty:NTF #1
{ is~empty }
{ contains~the~pairs~(without~outer~braces): }
}
\msg_kernel_new:nnn { clist } { show }
{
- Comma~list~
- \str_if_eq:nnF {#1} { \l_clist_tmpa_clist } { \token_to_str:N #1~}
+ The~comma~list~
+ \str_if_eq:nnF {#1} { \l_clist_internal_clist } { \token_to_str:N #1~}
\clist_if_empty:NTF #1
{ is~empty }
{ contains~the~items~(without~outer~braces): }
@@ -652,16 +652,16 @@
\msg_expandable_kernel_error:nnnnnn
{#1} {#2} { } { } { } { }
}
-\tl_new:N \l_msg_show_tl
\cs_new_protected:Npn \msg_aux_use:nn #1#2
{ \msg_aux_use:nnxxxx {#1} {#2} { } { } { } { } }
\cs_new_protected:Npn \msg_aux_use:nnxxxx #1#2#3#4#5#6
{
- \iow_term:x
+ \iow_wrap:xnnnN
{
\use:c { \c_msg_text_prefix_tl #1 / #2 }
{#3} {#4} {#5} {#6}
}
+ { } \c_zero { } \iow_term:x
}
\cs_new_protected:Npn \msg_aux_show:Nnx #1#2#3
{
@@ -677,14 +677,14 @@
}
\cs_new_protected:Npn \msg_aux_show:x #1
{
- \tl_set:Nx \l_msg_show_tl {#1}
- \tl_if_empty:NT \l_msg_show_tl
- { \tl_set:Nx \l_msg_show_tl { > } }
+ \tl_set:Nx \l_msg_internal_tl {#1}
+ \tl_if_empty:NT \l_msg_internal_tl
+ { \tl_set:Nx \l_msg_internal_tl { > } }
\exp_args:Nf \etex_showtokens:D
{
\exp_after:wN \exp_after:wN
\exp_after:wN \msg_aux_show:w
- \exp_after:wN \l_msg_show_tl
+ \exp_after:wN \l_msg_internal_tl
\exp_after:wN
}
\prg_do_nothing:
diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3names.sty b/Master/texmf-dist/tex/latex/l3kernel/l3names.sty
index aa3e05244c3..6532d0d0c7d 100644
--- a/Master/texmf-dist/tex/latex/l3kernel/l3names.sty
+++ b/Master/texmf-dist/tex/latex/l3kernel/l3names.sty
@@ -45,8 +45,8 @@
%% prior consultation with the LaTeX3 Project.
%%
%% -----------------------------------------------------------------------
-\RequirePackage{l3bootstrap}
-\GetIdInfo$Id: l3names.dtx 2944 2011-11-11 07:10:26Z joseph $
+\RequirePackage{l3bootstrap}[2011-12-29]
+\GetIdInfo$Id: l3names.dtx 3113 2011-12-30 09:05:11Z joseph $
{L3 Experimental namespace for primitives}
\ProvidesExplPackage
{\ExplFileName}{\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription}
diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3prg.sty b/Master/texmf-dist/tex/latex/l3kernel/l3prg.sty
index 69475b6617b..c0dc6c71502 100644
--- a/Master/texmf-dist/tex/latex/l3kernel/l3prg.sty
+++ b/Master/texmf-dist/tex/latex/l3kernel/l3prg.sty
@@ -46,7 +46,7 @@
%%
%% -----------------------------------------------------------------------
\RequirePackage{l3names}
-\GetIdInfo$Id: l3prg.dtx 3086 2011-12-22 17:55:46Z bruno $
+\GetIdInfo$Id: l3prg.dtx 3122 2011-12-31 20:57:36Z joseph $
{L3 Experimental control structures}
%%
\ProvidesExplPackage
@@ -76,9 +76,9 @@
\cs_new_eq:NN \bool_gset_eq:Nc \cs_gset_eq:Nc
\cs_new_eq:NN \bool_gset_eq:cN \cs_gset_eq:cN
\cs_new_eq:NN \bool_gset_eq:cc \cs_gset_eq:cc
-\cs_new:Npn \bool_set:Nn #1#2
+\cs_new_protected:Npn \bool_set:Nn #1#2
{ \tex_chardef:D #1 = \bool_if_p:n {#2} }
-\cs_new:Npn \bool_gset:Nn #1#2
+\cs_new_protected:Npn \bool_gset:Nn #1#2
{ \tex_global:D \tex_chardef:D #1 = \bool_if_p:n {#2} }
\cs_generate_variant:Nn \bool_set:Nn { c }
\cs_generate_variant:Nn \bool_gset:Nn { c }
diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3prop.sty b/Master/texmf-dist/tex/latex/l3kernel/l3prop.sty
index 869c381a1bb..c58cff46737 100644
--- a/Master/texmf-dist/tex/latex/l3kernel/l3prop.sty
+++ b/Master/texmf-dist/tex/latex/l3kernel/l3prop.sty
@@ -13,7 +13,7 @@
%%
%% Do not distribute a modified version of this file.
%%
-%% File: l3prop.dtx Copyright (C) 1990-2011 The LaTeX3 Project
+%% File: l3prop.dtx Copyright (C) 1990-2012 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,7 +46,7 @@
%%
%% -----------------------------------------------------------------------
\RequirePackage{l3names}
-\GetIdInfo$Id: l3prop.dtx 3086 2011-12-22 17:55:46Z bruno $
+\GetIdInfo$Id: l3prop.dtx 3158 2012-01-09 00:47:42Z bruno $
{L3 Experimental property lists}
%%
\ProvidesExplPackage
@@ -312,12 +312,12 @@
\exp_last_unbraced:Noo \prop_get_Nn_aux:nwn
{ \tl_to_str:n {#2} } #1
\tl_to_str:n {#2} \q_prop { }
- \q_recursion_stop
+ \prg_break_point:n { }
}
\cs_new:Npn \prop_get_Nn_aux:nwn #1 \q_prop #2 \q_prop #3
{
\str_if_eq:xxTF {#1} {#2}
- { \use_i_delimit_by_q_recursion_stop:nw {#3} }
+ { \prg_map_break:n { \exp_not:n {#3} } }
{ \prop_get_Nn_aux:nwn {#1} }
}
\cs_generate_variant:Nn \prop_get:Nn { c }
diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3quark.sty b/Master/texmf-dist/tex/latex/l3kernel/l3quark.sty
index 3a9a6489663..344873f2405 100644
--- a/Master/texmf-dist/tex/latex/l3kernel/l3quark.sty
+++ b/Master/texmf-dist/tex/latex/l3kernel/l3quark.sty
@@ -13,7 +13,7 @@
%%
%% Do not distribute a modified version of this file.
%%
-%% File: l3quark.dtx Copyright (C) 1990-2011 The LaTeX3 Project
+%% File: l3quark.dtx Copyright (C) 1990-2012 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,7 +46,7 @@
%%
%% -----------------------------------------------------------------------
\RequirePackage{l3names}
-\GetIdInfo$Id: l3quark.dtx 3086 2011-12-22 17:55:46Z bruno $
+\GetIdInfo$Id: l3quark.dtx 3148 2012-01-08 15:42:18Z bruno $
{L3 Experimental quarks}
\ProvidesExplPackage
{\ExplFileName}{\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription}
diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3seq.sty b/Master/texmf-dist/tex/latex/l3kernel/l3seq.sty
index 743e17ed121..2b47a5c01d8 100644
--- a/Master/texmf-dist/tex/latex/l3kernel/l3seq.sty
+++ b/Master/texmf-dist/tex/latex/l3kernel/l3seq.sty
@@ -13,7 +13,7 @@
%%
%% Do not distribute a modified version of this file.
%%
-%% File: l3seq.dtx Copyright (C) 1990-2011 The LaTeX3 Project
+%% File: l3seq.dtx Copyright (C) 1990-2012 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,7 +46,7 @@
%%
%% -----------------------------------------------------------------------
\RequirePackage{l3names}
-\GetIdInfo$Id: l3seq.dtx 3085 2011-12-22 16:29:26Z bruno $
+\GetIdInfo$Id: l3seq.dtx 3158 2012-01-09 00:47:42Z bruno $
{L3 Experimental sequences and stacks}
\ProvidesExplPackage
{\ExplFileName}{\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription}
@@ -56,8 +56,8 @@
\msg_expandable_kernel_error:nn { seq } { misused }
\use_none:n
}
-\tl_new:N \l_seq_tmpa_tl
-\tl_new:N \l_seq_tmpb_tl
+\tl_new:N \l_seq_internal_a_tl
+\tl_new:N \l_seq_internal_b_tl
\cs_new_eq:NN \seq_new:N \tl_new:N
\cs_new_eq:NN \seq_new:c \tl_new:c
\cs_new_eq:NN \seq_clear:N \tl_clear:N
@@ -85,19 +85,19 @@
\tl_if_empty:nTF {#3}
{ #1 #2 { \tl_map_function:nN {#4} \seq_wrap_item:n } }
{
- \tl_set:Nn \l_seq_tmpa_tl
+ \tl_set:Nn \l_seq_internal_a_tl
{
\seq_set_split_aux_i:w \prg_do_nothing:
#4
\seq_set_split_aux_end:
}
- \tl_replace_all:Nnn \l_seq_tmpa_tl { #3 }
+ \tl_replace_all:Nnn \l_seq_internal_a_tl { #3 }
{
\seq_set_split_aux_end:
\seq_set_split_aux_i:w \prg_do_nothing:
}
- \tl_set:Nx \l_seq_tmpa_tl { \l_seq_tmpa_tl }
- #1 #2 { \l_seq_tmpa_tl }
+ \tl_set:Nx \l_seq_internal_a_tl { \l_seq_internal_a_tl }
+ #1 #2 { \l_seq_internal_a_tl }
}
}
\cs_new:Npn \seq_set_split_aux_i:w #1 \seq_set_split_aux_end:
@@ -131,20 +131,20 @@
\cs_generate_variant:Nn \seq_gput_right:Nn { NV , Nv , No , Nx }
\cs_generate_variant:Nn \seq_gput_right:Nn { c , cV , cv , co , cx }
\cs_new:Npn \seq_wrap_item:n #1 { \exp_not:n { \seq_item:n {#1} } }
-\seq_new:N \l_seq_remove_seq
+\seq_new:N \l_seq_internal_remove_seq
\cs_new_protected:Npn \seq_remove_duplicates:N
{ \seq_remove_duplicates_aux:NN \seq_set_eq:NN }
\cs_new_protected:Npn \seq_gremove_duplicates:N
{ \seq_remove_duplicates_aux:NN \seq_gset_eq:NN }
\cs_new_protected:Npn \seq_remove_duplicates_aux:NN #1#2
{
- \seq_clear:N \l_seq_remove_seq
+ \seq_clear:N \l_seq_internal_remove_seq
\seq_map_inline:Nn #2
{
- \seq_if_in:NnF \l_seq_remove_seq {##1}
- { \seq_put_right:Nn \l_seq_remove_seq {##1} }
+ \seq_if_in:NnF \l_seq_internal_remove_seq {##1}
+ { \seq_put_right:Nn \l_seq_internal_remove_seq {##1} }
}
- #1 #2 \l_seq_remove_seq
+ #1 #2 \l_seq_internal_remove_seq
}
\cs_generate_variant:Nn \seq_remove_duplicates:N { c }
\cs_generate_variant:Nn \seq_gremove_duplicates:N { c }
@@ -159,16 +159,16 @@
\str_if_eq:nnT {##1} {#3}
{
\if_false: { \fi: }
- \tl_set:Nn \l_seq_tmpb_tl {##1}
+ \tl_set:Nn \l_seq_internal_b_tl {##1}
#1 #2
{ \if_false: } \fi:
\exp_not:o {#2}
- \tl_if_eq:NNT \l_seq_tmpa_tl \l_seq_tmpb_tl
+ \tl_if_eq:NNT \l_seq_internal_a_tl \l_seq_internal_b_tl
{ \use_none:nn }
}
\seq_wrap_item:n {##1}
}
- \tl_set:Nn \l_seq_tmpa_tl {#3}
+ \tl_set:Nn \l_seq_internal_a_tl {#3}
#1 #2 {#2}
\seq_pop_item_def:
}
@@ -182,11 +182,11 @@
{ T , F , TF }
{
\group_begin:
- \tl_set:Nn \l_seq_tmpa_tl {#2}
+ \tl_set:Nn \l_seq_internal_a_tl {#2}
\cs_set_protected:Npn \seq_item:n ##1
{
- \tl_set:Nn \l_seq_tmpb_tl {##1}
- \if_meaning:w \l_seq_tmpa_tl \l_seq_tmpb_tl
+ \tl_set:Nn \l_seq_internal_b_tl {##1}
+ \if_meaning:w \l_seq_internal_a_tl \l_seq_internal_b_tl
\exp_after:wN \seq_if_in_aux:
\fi:
}
@@ -476,7 +476,7 @@
{
\use_none:n #2
\int_compare:nNnTF {#1} = \c_zero
- { \seq_break:n {#3} }
+ { \seq_break:n { \exp_not:n {#3} } }
{ \exp_args:Nf \seq_item_aux:nnn { \int_eval:n { #1 - 1 } } }
}
\cs_generate_variant:Nn \seq_item:Nn { c }
diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3skip.sty b/Master/texmf-dist/tex/latex/l3kernel/l3skip.sty
index 62cbdf92adb..0250bedeb7c 100644
--- a/Master/texmf-dist/tex/latex/l3kernel/l3skip.sty
+++ b/Master/texmf-dist/tex/latex/l3kernel/l3skip.sty
@@ -14,6 +14,7 @@
%% Do not distribute a modified version of this file.
%%
%% File: l3skip.dtx Copyright (C) 2004-2011 Frank Mittelbach, The LaTeX3 Project
+%% (C) 2012 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,9 +47,8 @@
%%
%% -----------------------------------------------------------------------
\RequirePackage{l3names}
-\GetIdInfo$Id: l3skip.dtx 3086 2011-12-22 17:55:46Z bruno $
+\GetIdInfo$Id: l3skip.dtx 3139 2012-01-07 19:53:09Z bruno $
{L3 Experimental dimensions and skips}
-
\ProvidesExplPackage
{\ExplFileName}{\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription}
\package_check_loaded_expl:
@@ -65,6 +65,12 @@
\cs_new_protected:Npn \dim_gzero:N { \tex_global:D \dim_zero:N }
\cs_generate_variant:Nn \dim_zero:N { c }
\cs_generate_variant:Nn \dim_gzero:N { c }
+\cs_new_protected:Npn \dim_zero_new:N #1
+ { \cs_if_exist:NTF #1 { \dim_zero:N #1 } { \dim_new:N #1 } }
+\cs_new_protected:Npn \dim_gzero_new:N #1
+ { \cs_if_exist:NTF #1 { \dim_gzero:N #1 } { \dim_new:N #1 } }
+\cs_generate_variant:Nn \dim_zero_new:N { c }
+\cs_generate_variant:Nn \dim_gzero_new:N { c }
\cs_new_protected:Npn \dim_set:Nn #1#2
{ #1 ~ \dim_eval:w #2 \dim_eval_end: }
\cs_new_protected:Npn \dim_gset:Nn { \tex_global:D \dim_set:Nn }
@@ -244,6 +250,12 @@
\cs_new_protected:Npn \skip_gzero:N { \tex_global:D \skip_zero:N }
\cs_generate_variant:Nn \skip_zero:N { c }
\cs_generate_variant:Nn \skip_gzero:N { c }
+\cs_new_protected:Npn \skip_zero_new:N #1
+ { \cs_if_exist:NTF #1 { \skip_zero:N #1 } { \skip_new:N #1 } }
+\cs_new_protected:Npn \skip_gzero_new:N #1
+ { \cs_if_exist:NTF #1 { \skip_gzero:N #1 } { \skip_new:N #1 } }
+\cs_generate_variant:Nn \skip_zero_new:N { c }
+\cs_generate_variant:Nn \skip_gzero_new:N { c }
\cs_new_protected:Npn \skip_set:Nn #1#2
{ #1 ~ \etex_glueexpr:D #2 \scan_stop: }
\cs_new_protected:Npn \skip_gset:Nn { \tex_global:D \skip_set:Nn }
@@ -319,6 +331,12 @@
\cs_new_protected:Npn \muskip_gzero:N { \tex_global:D \muskip_zero:N }
\cs_generate_variant:Nn \muskip_zero:N { c }
\cs_generate_variant:Nn \muskip_gzero:N { c }
+\cs_new_protected:Npn \muskip_zero_new:N #1
+ { \cs_if_exist:NTF #1 { \muskip_zero:N #1 } { \muskip_new:N #1 } }
+\cs_new_protected:Npn \muskip_gzero_new:N #1
+ { \cs_if_exist:NTF #1 { \muskip_gzero:N #1 } { \muskip_new:N #1 } }
+\cs_generate_variant:Nn \muskip_zero_new:N { c }
+\cs_generate_variant:Nn \muskip_gzero_new:N { c }
\cs_new_protected:Npn \muskip_set:Nn #1#2
{ #1 ~ \etex_muexpr:D #2 \scan_stop: }
\cs_new_protected:Npn \muskip_gset:Nn { \tex_global:D \muskip_set:Nn }
diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3tl.sty b/Master/texmf-dist/tex/latex/l3kernel/l3tl.sty
index 413c68fd926..4dc5ec2b65a 100644
--- a/Master/texmf-dist/tex/latex/l3kernel/l3tl.sty
+++ b/Master/texmf-dist/tex/latex/l3kernel/l3tl.sty
@@ -13,7 +13,7 @@
%%
%% Do not distribute a modified version of this file.
%%
-%% File: l3tl.dtx Copyright (C) 1990-2011 The LaTeX3 Project
+%% File: l3tl.dtx Copyright (C) 1990-2012 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,7 +46,7 @@
%%
%% -----------------------------------------------------------------------
\RequirePackage{l3names}
-\GetIdInfo$Id: l3tl.dtx 3091 2011-12-25 16:22:59Z bruno $
+\GetIdInfo$Id: l3tl.dtx 3158 2012-01-09 00:47:42Z bruno $
{L3 Experimental token lists}
\ProvidesExplPackage
{\ExplFileName}{\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription}
@@ -202,7 +202,6 @@
\cs_generate_variant:Nn \tl_gset_rescan:Nnn { c , cno }
\cs_new_eq:NN \tl_to_lowercase:n \tex_lowercase:D
\cs_new_eq:NN \tl_to_uppercase:n \tex_uppercase:D
-\tl_new:N \l_tl_replace_tl
\cs_new_protected_nopar:Npn \tl_replace_once:Nnn
{ \tl_replace_aux:NNNnn \tl_replace_once_aux: \tl_set:Nx }
\cs_new_protected_nopar:Npn \tl_greplace_once:Nnn
@@ -325,9 +324,9 @@
\prg_new_protected_conditional:Npnn \tl_if_eq:nn #1#2 { T , F , TF }
{
\group_begin:
- \tl_set:Nn \l_tl_tmpa_tl {#1}
- \tl_set:Nn \l_tl_tmpb_tl {#2}
- \if_meaning:w \l_tl_tmpa_tl \l_tl_tmpb_tl
+ \tl_set:Nn \l_tl_internal_a_tl {#1}
+ \tl_set:Nn \l_tl_internal_b_tl {#2}
+ \if_meaning:w \l_tl_internal_a_tl \l_tl_internal_b_tl
\group_end:
\prg_return_true:
\else:
@@ -335,8 +334,8 @@
\prg_return_false:
\fi:
}
-\tl_new:N \l_tl_tmpa_tl
-\tl_new:N \l_tl_tmpb_tl
+\tl_new:N \l_tl_internal_a_tl
+\tl_new:N \l_tl_internal_b_tl
\cs_new_protected_nopar:Npn \tl_if_in:NnT { \exp_args:No \tl_if_in:nnT }
\cs_new_protected_nopar:Npn \tl_if_in:NnF { \exp_args:No \tl_if_in:nnF }
\cs_new_protected_nopar:Npn \tl_if_in:NnTF { \exp_args:No \tl_if_in:nnTF }
@@ -433,7 +432,8 @@
\q_mark \tl_reverse_items_aux:wn
\q_stop { {#1} #5 }
}
-\cs_new:Npn \tl_reverse_items_aux:wn #1 \q_stop #2 { \use_none:nn #2 }
+\cs_new:Npn \tl_reverse_items_aux:wn #1 \q_stop #2
+ { \exp_not:o { \use_none:nn #2 } }
\cs_set:Npn \tl_tmp:w #1
{
\cs_new:Npn \tl_trim_spaces:n ##1
@@ -482,10 +482,10 @@
\cs_new:Npn \tl_head:w #1#2 \q_stop {#1}
\cs_new:Npn \tl_tail:w #1#2 \q_stop {#2}
\cs_new:Npn \tl_head:n #1
- { \tl_head:w #1 { } \q_stop }
+ { \etex_unexpanded:D \exp_after:wN { \tl_head:w #1 { } \q_stop } }
\cs_new:Npn \tl_tail:n #1
- { \tl_tail_aux:w #1 \q_mark { } \q_mark \q_stop }
-\cs_new:Npn \tl_tail_aux:w #1 #2 \q_mark #3 \q_stop { #2 }
+ { \etex_unexpanded:D \tl_tail_aux:w #1 \q_mark { } \q_mark \q_stop }
+\cs_new:Npn \tl_tail_aux:w #1 #2 \q_mark #3 \q_stop { {#2} }
\cs_generate_variant:Nn \tl_head:n { V , v , f }
\cs_generate_variant:Nn \tl_tail:n { V , v , f }
\cs_new:Npn \str_head:n #1
@@ -683,14 +683,18 @@
\exp_args:Nf #1
{ \exp_after:wN \exp_after:wN \exp_after:wN { #2 {#3} } }
}
-\cs_new:Npn \tl_reverse_tokens:n
+\cs_new:Npn \tl_reverse_tokens:n #1
{
- \tex_romannumeral:D
- \tl_act_aux:NNNnn
- \tl_act_reverse_normal:nN
- \tl_act_reverse_group:nn
- \tl_act_reverse_space:n
- { }
+ \etex_unexpanded:D \exp_after:wN
+ {
+ \tex_romannumeral:D
+ \tl_act_aux:NNNnn
+ \tl_act_reverse_normal:nN
+ \tl_act_reverse_group:nn
+ \tl_act_reverse_space:n
+ { }
+ {#1}
+ }
}
\cs_new:Npn \tl_act_reverse_space:n #1
{ \tl_act_reverse_output:n {~} }
@@ -702,22 +706,26 @@
\tl_act_reverse_output:n
{ \tl_reverse_tokens:n }
}
-\cs_new:Npn \tl_reverse:n
+\cs_new:Npn \tl_reverse:n #1
{
- \tex_romannumeral:D
- \tl_act_aux:NNNnn
- \tl_act_reverse_normal:nN
- \tl_act_reverse_group_preserve:nn
- \tl_act_reverse_space:n
- { }
+ \etex_unexpanded:D \exp_after:wN
+ {
+ \tex_romannumeral:D
+ \tl_act_aux:NNNnn
+ \tl_act_reverse_normal:nN
+ \tl_act_reverse_group_preserve:nn
+ \tl_act_reverse_space:n
+ { }
+ {#1}
+ }
}
\cs_new:Npn \tl_act_reverse_group_preserve:nn #1 #2
{ \tl_act_reverse_output:n { {#2} } }
\cs_generate_variant:Nn \tl_reverse:n { o , V }
\cs_new_protected:Npn \tl_reverse:N #1
- { \tl_set:Nf #1 { \tl_reverse:o { #1 \exp_stop_f: } } }
+ { \tl_set:Nx #1 { \exp_args:No \tl_reverse:n { #1 } } }
\cs_new_protected:Npn \tl_greverse:N #1
- { \tl_gset:Nf #1 { \tl_reverse:o { #1 \exp_stop_f: } } }
+ { \tl_gset:Nx #1 { \exp_args:No \tl_reverse:n { #1 } } }
\cs_generate_variant:Nn \tl_reverse:N { c }
\cs_generate_variant:Nn \tl_greverse:N { c }
\cs_new:Npn \tl_length_tokens:n #1
@@ -746,10 +754,22 @@
Aa Bb Cc Dd Ee Ff Gg Hh Ii Jj Kk Ll Mm
Nn Oo Pp Qq Rr Ss Tt Uu Vv Ww Xx Yy Zz
}
-\cs_new:Npn \tl_expandable_uppercase:n
- { \tex_romannumeral:D \tl_act_case_aux:nn { \c_tl_act_uppercase_tl } }
-\cs_new:Npn \tl_expandable_lowercase:n
- { \tex_romannumeral:D \tl_act_case_aux:nn { \c_tl_act_lowercase_tl } }
+\cs_new:Npn \tl_expandable_uppercase:n #1
+ {
+ \etex_unexpanded:D \exp_after:wN
+ {
+ \tex_romannumeral:D
+ \tl_act_case_aux:nn { \c_tl_act_uppercase_tl } {#1}
+ }
+ }
+\cs_new:Npn \tl_expandable_lowercase:n #1
+ {
+ \etex_unexpanded:D \exp_after:wN
+ {
+ \tex_romannumeral:D
+ \tl_act_case_aux:nn { \c_tl_act_lowercase_tl } {#1}
+ }
+ }
\cs_new:Npn \tl_act_case_aux:nn
{
\tl_act_aux:NNNnn
@@ -790,7 +810,7 @@
{
\quark_if_recursion_tail_break:n {#2}
\int_compare:nNnTF {#1} = \c_zero
- { \tl_map_break:n {#2} }
+ { \tl_map_break:n { \exp_not:n {#2} } }
{ \exp_args:Nf \tl_item_aux:nn { \int_eval:n { #1 - 1 } } }
}
\cs_new_nopar:Npn \tl_item:Nn { \exp_args:No \tl_item:nn }
diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3token.sty b/Master/texmf-dist/tex/latex/l3kernel/l3token.sty
index 1a744a15610..e634c9d27c8 100644
--- a/Master/texmf-dist/tex/latex/l3kernel/l3token.sty
+++ b/Master/texmf-dist/tex/latex/l3kernel/l3token.sty
@@ -46,7 +46,7 @@
%%
%% -----------------------------------------------------------------------
\RequirePackage{l3names}
-\GetIdInfo$Id: l3token.dtx 3099 2011-12-27 21:41:02Z joseph $
+\GetIdInfo$Id: l3token.dtx 3123 2011-12-31 21:51:51Z joseph $
{L3 Experimental token manipulation}
%% \begin{function}[EXP,pTF]{\token_if_protected_long_macro:N}
\ProvidesExplPackage