diff options
author | Karl Berry <karl@freefriends.org> | 2012-02-07 22:42:14 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2012-02-07 22:42:14 +0000 |
commit | 8b88d8570ac83e33a29938f8799ab728a94a6b70 (patch) | |
tree | 2389ca3bc088a4fe26c26bd2c0b01fa2d1b87600 /Master | |
parent | 7dd80542eb368ed18c1298c24250b409350a2059 (diff) |
l3kernel 3331 (7feb12)
git-svn-id: svn://tug.org/texlive/trunk@25329 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master')
32 files changed, 412 insertions, 1321 deletions
diff --git a/Master/texmf-dist/doc/latex/l3kernel/expl3.pdf b/Master/texmf-dist/doc/latex/l3kernel/expl3.pdf Binary files differindex c55f7095749..7b8da4440ff 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/expl3.pdf +++ b/Master/texmf-dist/doc/latex/l3kernel/expl3.pdf diff --git a/Master/texmf-dist/doc/latex/l3kernel/interface3.pdf b/Master/texmf-dist/doc/latex/l3kernel/interface3.pdf Binary files differindex 56506b03746..ab840c4a3d3 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/interface3.pdf +++ b/Master/texmf-dist/doc/latex/l3kernel/interface3.pdf diff --git a/Master/texmf-dist/doc/latex/l3kernel/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 Binary files differindex 203b3896df8..10cecf96683 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.pdf +++ b/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.pdf diff --git a/Master/texmf-dist/doc/latex/l3kernel/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 Binary files differindex d19a6e07d19..f8eec0523b8 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.pdf +++ b/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.pdf diff --git a/Master/texmf-dist/doc/latex/l3kernel/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 Binary files differindex 156c4baaf35..f4cbf6eaa9c 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/source3.pdf +++ b/Master/texmf-dist/doc/latex/l3kernel/source3.pdf diff --git a/Master/texmf-dist/doc/latex/l3kernel/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 119886c86cb..00000000000 --- a/Master/texmf-dist/doc/latex/l3kernel/source3body.tex +++ /dev/null @@ -1,421 +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 through exactly as - given. Usually, if you use a single token for an \texttt{n} argument, - all will be well. - \item[\texttt{c}] This means \emph{csname}, and indicates that the - argument will be turned into a csname before being used. So - So \cs{foo:c} |{ArgumentOne}| will act in the same way as \cs{foo:N} - \cs{ArgumentOne}. - \item[\texttt{V} and \texttt{v}] These mean \emph{value - of variable}. The \texttt{V} and \texttt{v} specifiers are used to - get the content of a variable without needing to worry about the - underlying \TeX{} structure containing the data. A \texttt{V} - argument will be a single token (similar to \texttt{N}), for example - \cs{foo:V} \cs{MyVariable}; on the other hand, using \texttt{v} a - csname is constructed first, and then the value is recovered, for - example \cs{foo:v} |{MyVariable}|. - \item[\texttt{o}] This means \emph{expansion once}. In general, the - \texttt{V} and \texttt{v} specifiers are favoured over \texttt{o} - for recovering stored information. However, \texttt{o} is useful - for correctly processing information with delimited arguments. - \item[\texttt{x}] The \texttt{x} specifier stands for \emph{exhaustive - expansion}: every token in the argument is fully expanded until only - unexpandable ones remain. The \TeX{} \tn{edef} primitive carries out - this type of expansion. Functions which feature an \texttt{x}-type - argument are in general \emph{not} expandable, unless specifically - noted. - \item[\texttt{f}] The \texttt{f} specifier stands for \emph{full - expansion}, and in contrast to \texttt{x} stops at the first - non-expandable item (reading the argument from left to right) without - trying to expand it. For example, when setting a token list - variable (a macro used for storage), the sequence - \begin{verbatim} - \tl_set:Nn \l_mya_tl { A } - \tl_set:Nn \l_myb_tl { B } - \tl_set:Nf \l_mya_tl { \l_mya_tl \l_myb_tl } - \end{verbatim} - will leave |\l_mya_tl| with the content |A\l_myb_tl|, as |A| cannot - be expanded and so terminates expansion before |\l_myb_tl| is considered. - \item[\texttt{T} and \texttt{F}] For logic tests, there are the branch - specifiers \texttt{T} (\emph{true}) and \texttt{F} (\emph{false}). - Both specifiers treat the input in the same way as \texttt{n} (no - change), but make the logic much easier to see. - \item[\texttt{p}] The letter \texttt{p} indicates \TeX{} - \emph{parameters}. Normally this will be used for delimited - functions as \pkg{expl3} provides better methods for creating simple - sequential arguments. - \item[\texttt{w}] Finally, there is the \texttt{w} specifier for - \emph{weird} arguments. This covers everything else, but mainly - applies to delimited values (where the argument must be terminated - by some arbitrary string). -\end{description} -Notice that the argument specifier describes how the argument is -processed prior to being passed to the underlying function. For example, -\cs{foo:c} will take its argument, convert it to a control sequence and -pass it to \cs{foo:N}. - -Variables are named in a similar manner to functions, but begin with -a single letter to define the type of variable: -\begin{description} - \item[\texttt{c}] Constant: global parameters whose value should not - be changed. - \item[\texttt{g}] Parameters whose value should only be set globally. - \item[\texttt{l}] Parameters whose value should only be set locally. -\end{description} -Each variable name is then build up in a similar way to that of a -function, typically starting with the module\footnote{The module names are - not used in case of generic scratch registers defined in the data - type modules, e.g., the - \texttt{int} module contains some scratch variables called \cs{l_tmpa_int}, - \cs{l_tmpb_int}, and so on. In such a case adding the module name up front - to denote the module - and in the back to indicate the type, as in - \cs{l_int_tmpa_int} would be very unreadable.} name -and then a descriptive part. -Variables end with a short identifier to show the variable type: -\begin{description} - \item[\texttt{bool}] Either true or false. - \item[\texttt{box}] Box register. - \item[\texttt{clist}] Comma separated list. - \item[\texttt{coffin}] a \enquote{box with handles} --- a higher-level data - type for carrying out |box| alignment operations. - \item[\texttt{dim}] \enquote{Rigid} lengths. - \item[\texttt{fp}] floating-point values; - \item[\texttt{int}] Integer-valued count register. - \item[\texttt{prop}] Property list. - \item[\texttt{seq}] \enquote{Sequence}: a data-type used to implement lists - (with access at both ends) and stacks. - \item[\texttt{skip}] \enquote{Rubber} lengths. - \item[\texttt{stream}] An input or output stream (for reading from or - writing to, respectively). - \item[\texttt{tl}] Token list variables: placeholder for a token list. -\end{description} - -\subsection{Terminological inexactitude} - -A word of warning. In this document, and others referring to the \pkg{expl3} -programming modules, we often refer to \enquote{variables} and -\enquote{functions} as if they -were actual constructs from a real programming language. In truth, \TeX{} -is a macro processor, and functions are simply macros that may or may not take -arguments and expand to their replacement text. Many of the common variables -are \emph{also} macros, and if placed into the input stream will simply expand -to their definition as well~--- a \enquote{function} with no arguments and a -\enquote{token list variable} are in truth one and the same. On the other -hand, some \enquote{variables} are actually registers that must be -initialised and their values set and retrieved with specific functions. - -The conventions of the \pkg{expl3} code are designed to clearly separate the -ideas of \enquote{macros that contain data} and -\enquote{macros that contain code}, and a -consistent wrapper is applied to all forms of \enquote{data} whether they be -macros or -actually registers. This means that sometimes we will use phrases like -\enquote{the function returns a value}, when actually we just mean -\enquote{the macro expands to something}. Similarly, the term -\enquote{execute} might be used in place of \enquote{expand} -or it might refer to the more specific case of -\enquote{processing in \TeX's stomach} -(if you are familiar with the \TeX{}book parlance). - -If in doubt, please ask; chances are we've been hasty in writing certain -definitions and need to be told to tighten up our terminology. - -\section{Documentation conventions} - -This document is typeset with the experimental \pkg{l3doc} class; -several conventions are used to help describe the features of the code. -A number of conventions are used here to make the documentation clearer. - -Each group of related functions is given in a box. For a function with -a \enquote{user} name, this might read: -\begin{function}{\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 c8f4fedeb38..dbd073eaa21 100644 --- a/Master/texmf-dist/source/latex/l3kernel/expl3.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/expl3.dtx @@ -48,8 +48,8 @@ %<package> } \def\ExplFileName{expl3} \def\ExplFileDescription{L3 Experimental code bundle wrapper} -\def\ExplFileDate{2012/01/31} -\def\ExplFileVersion{3287} +\def\ExplFileDate{2012/02/07} +\def\ExplFileVersion{3331} %</driver|package> %<*driver> \documentclass[full]{l3doc} 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 9a2b94c4a3e..d16781461b0 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx @@ -35,7 +35,7 @@ % %<*driver|package> \RequirePackage{l3names} -\GetIdInfo$Id: l3basics.dtx 3196 2012-01-15 09:44:05Z joseph $ +\GetIdInfo$Id: l3basics.dtx 3317 2012-02-06 12:26:40Z bruno $ {L3 Experimental basic definitions} %</driver|package> %<*driver> @@ -253,7 +253,7 @@ % Sets \meta{function} to expand to \meta{code} as replacement text. % Within the \meta{code}, the \meta{parameters} (|#1|, |#2|, % \emph{etc.}) will be replaced by those absorbed by the function. -% The assignment of a meaning to \meta{function} is restricted to +% The assignment of a meaning to the \meta{function} is restricted to % the current \TeX{} group level. % \end{function} % @@ -270,7 +270,7 @@ % \emph{etc.}) will be replaced by those absorbed by the function. % When the \meta{function} is used the \meta{parameters} absorbed % cannot contain \cs{par} tokens. The assignment of a meaning -% to \meta{function} is restricted to the current \TeX{} group +% to the \meta{function} is restricted to the current \TeX{} group % level. % \end{function} % @@ -285,7 +285,7 @@ % Sets \meta{function} to expand to \meta{code} as replacement text. % Within the \meta{code}, the \meta{parameters} (|#1|, |#2|, % \emph{etc.}) will be replaced by those absorbed by the function. -% The assignment of a meaning to \meta{function} is restricted to +% The assignment of a meaning to the \meta{function} is restricted to % the current \TeX{} group level. The \meta{function} will % not expand within an \texttt{x}-type argument. % \end{function} @@ -303,7 +303,7 @@ % \emph{etc.}) will be replaced by those absorbed by the function. % When the \meta{function} is used the \meta{parameters} absorbed % cannot contain \cs{par} tokens. The assignment of a meaning -% to \meta{function} is restricted to the current \TeX{} group +% to the \meta{function} is restricted to the current \TeX{} group % level. The \meta{function} will not expand within an % \texttt{x}-type argument. % \end{function} @@ -315,7 +315,7 @@ % Globally sets \meta{function} to expand to \meta{code} as replacement % text. Within the \meta{code}, the \meta{parameters} (|#1|, |#2|, % \emph{etc.}) will be replaced by those absorbed by the function. -% The assignment of a meaning to \meta{function} is \emph{not} +% The assignment of a meaning to the \meta{function} is \emph{not} % restricted to the current \TeX{} group level: the assignment is % global. % \end{function} @@ -332,7 +332,7 @@ % text. Within the \meta{code}, the \meta{parameters} (|#1|, |#2|, % \emph{etc.}) will be replaced by those absorbed by the function. % When the \meta{function} is used the \meta{parameters} absorbed -% cannot contain \cs{par} tokens. The assignment of a meaning to +% cannot contain \cs{par} tokens. The assignment of a meaning to the % \meta{function} is \emph{not} restricted to the current \TeX{} % group level: the assignment is global. % \end{function} @@ -348,7 +348,7 @@ % Globally sets \meta{function} to expand to \meta{code} as replacement % text. Within the \meta{code}, the \meta{parameters} (|#1|, |#2|, % \emph{etc.}) will be replaced by those absorbed by the function. -% The assignment of a meaning to \meta{function} is \emph{not} +% The assignment of a meaning to the \meta{function} is \emph{not} % restricted to the current \TeX{} group level: the assignment is % global. The \meta{function} will not expand within an % \texttt{x}-type argument. @@ -366,7 +366,7 @@ % text. Within the \meta{code}, the \meta{parameters} (|#1|, |#2|, % \emph{etc.}) will be replaced by those absorbed by the function. % When the \meta{function} is used the \meta{parameters} absorbed -% cannot contain \cs{par} tokens. The assignment of a meaning to +% cannot contain \cs{par} tokens. The assignment of a meaning to the % \meta{function} is \emph{not} restricted to the current \TeX{} % group level: the assignment is global. The \meta{function} will % not expand within an \texttt{x}-type argument. @@ -455,7 +455,7 @@ % automatically from the function signature. These \meta{parameters} % (|#1|, |#2|, \emph{etc.}) will be replaced by those absorbed by the % function. -% The assignment of a meaning to \meta{function} is restricted to +% The assignment of a meaning to the \meta{function} is restricted to % the current \TeX{} group level. % \end{function} % @@ -473,7 +473,7 @@ % (|#1|, |#2|, \emph{etc.}) will be replaced by those absorbed by the % function. When the \meta{function} is used the \meta{parameters} % absorbed cannot contain \cs{par} tokens. -% The assignment of a meaning to \meta{function} is restricted to +% The assignment of a meaning to the \meta{function} is restricted to % the current \TeX{} group level. % \end{function} % @@ -491,7 +491,7 @@ % (|#1|, |#2|, \emph{etc.}) will be replaced by those absorbed by the % function. The \meta{function} will not expand within an \texttt{x}-type % argument. -% The assignment of a meaning to \meta{function} is restricted to +% The assignment of a meaning to the \meta{function} is restricted to % the current \TeX{} group level. % \end{function} % @@ -510,7 +510,7 @@ % function. When the \meta{function} is used the \meta{parameters} % absorbed cannot contain \cs{par} tokens. The \meta{function} will not % expand within an \texttt{x}-type argument. -% The assignment of a meaning to \meta{function} is restricted to +% The assignment of a meaning to the \meta{function} is restricted to % the current \TeX{} group level. % \end{function} % @@ -527,7 +527,7 @@ % automatically from the function signature. These \meta{parameters} % (|#1|, |#2|, \emph{etc.}) will be replaced by those absorbed by the % function. -% The assignment of a meaning to \meta{function} is global. +% The assignment of a meaning to the \meta{function} is global. % \end{function} % % \begin{function} @@ -544,7 +544,7 @@ % (|#1|, |#2|, \emph{etc.}) will be replaced by those absorbed by the % function. When the \meta{function} is used the \meta{parameters} % absorbed cannot contain \cs{par} tokens. -% The assignment of a meaning to \meta{function} is global. +% The assignment of a meaning to the \meta{function} is global. % \end{function} % % \begin{function} @@ -561,7 +561,7 @@ % (|#1|, |#2|, \emph{etc.}) will be replaced by those absorbed by the % function. The \meta{function} will not expand within an \texttt{x}-type % argument. -% The assignment of a meaning to \meta{function} is global. +% The assignment of a meaning to the \meta{function} is global. % \end{function} % % \begin{function} @@ -579,7 +579,7 @@ % function. When the \meta{function} is used the \meta{parameters} % absorbed cannot contain \cs{par} tokens. The \meta{function} will not % expand within an \texttt{x}-type argument. -% The assignment of a meaning to \meta{function} is global. +% The assignment of a meaning to the \meta{function} is global. % \end{function} % % \begin{function}[updated = 2012-01-14] @@ -632,7 +632,7 @@ % \meta{control sequence 2} (or <token>). % The second control sequence may subsequently be % altered without affecting the copy. The assignment of a meaning -% to \meta{control sequence 1} is restricted to the current +% to the \meta{control sequence 1} is restricted to the current % \TeX{} group level. % \end{function} % @@ -646,7 +646,7 @@ % \meta{control sequence 2} (or <token>). % The second control sequence may subsequently be % altered without affecting the copy. The assignment of a meaning to -% \meta{control sequence 1} is \emph{not} restricted to the current +% the \meta{control sequence 1} is \emph{not} restricted to the current % \TeX{} group level: the assignment is global. % \end{function} % @@ -1768,92 +1768,78 @@ % \end{macro} % \end{macro} % -% \begin{macro}{\prg_set_conditional:Npnn,\prg_new_conditional:Npnn, -% \prg_set_protected_conditional:Npnn,\prg_new_protected_conditional:Npnn} +% \begin{macro} +% { +% \prg_set_conditional:Npnn , +% \prg_new_conditional:Npnn , +% \prg_set_protected_conditional:Npnn , +% \prg_new_protected_conditional:Npnn , +% } +% \begin{macro}[aux]{\prg_generate_conditional_parm_aux:NNpnn} % The user functions for the types using parameter text from the -% programmer. Call aux function to grab parameters, split the base -% function into name and signature and then use, \emph{e.g.}, |\cs_set:Npn| -% to define it with. -% \begin{macrocode} -\cs_set_protected:Npn \prg_set_conditional:Npnn #1 - { - \prg_get_parm_aux:nw - { - \cs_split_function:NN #1 \prg_generate_conditional_aux:nnNNnnnn - \cs_set:Npn { parm } - } - } -\cs_set_protected:Npn \prg_new_conditional:Npnn #1 - { - \prg_get_parm_aux:nw - { - \cs_split_function:NN #1 \prg_generate_conditional_aux:nnNNnnnn - \cs_new:Npn { parm } - } - } -\cs_set_protected:Npn \prg_set_protected_conditional:Npnn #1 - { - \prg_get_parm_aux:nw{ - \cs_split_function:NN #1 \prg_generate_conditional_aux:nnNNnnnn - \cs_set_protected:Npn { parm } - } - } -\cs_set_protected:Npn \prg_new_protected_conditional:Npnn #1 +% programmer. The various functions only differ by which function is +% used for the assignment. For those |Npnn| type functions, we must +% grab the parameter text, reading everything up to a left brace +% before continuing. Then split the base function into name and +% signature, and feed \Arg{name} \Arg{signature} \meta{boolean} +% \meta{defining~function} |{parm}| \Arg{parameters} |{TF,...}| +% \Arg{code} to the auxiliary function responsible for defining all +% conditionals. +% \begin{macrocode} +\cs_set_protected_nopar:Npn \prg_set_conditional:Npnn + { \prg_generate_conditional_parm_aux:NNpnn \cs_set:Npn } +\cs_set_protected_nopar:Npn \prg_new_conditional:Npnn + { \prg_generate_conditional_parm_aux:NNpnn \cs_new:Npn } +\cs_set_protected_nopar:Npn \prg_set_protected_conditional:Npnn + { \prg_generate_conditional_parm_aux:NNpnn \cs_set_protected:Npn } +\cs_set_protected_nopar:Npn \prg_new_protected_conditional:Npnn + { \prg_generate_conditional_parm_aux:NNpnn \cs_new_protected:Npn } +\cs_set_protected:Npn \prg_generate_conditional_parm_aux:NNpnn #1#2#3# { - \prg_get_parm_aux:nw - { - \cs_split_function:NN #1 \prg_generate_conditional_aux:nnNNnnnn - \cs_new_protected:Npn { parm } - } + \cs_split_function:NN #2 \prg_generate_conditional_aux:nnNNnnnn + #1 { parm } {#3} } % \end{macrocode} % \end{macro} +% \end{macro} % -% \begin{macro}{\prg_set_conditional:Nnn,\prg_new_conditional:Nnn, -% \prg_set_protected_conditional:Nnn,\prg_new_protected_conditional:Nnn} -% The user functions for the types automatically inserting the -% correct parameter text based on the signature. Call aux function -% after calculating number of arguments, split the base function -% into name and signature and then use, \emph{e.g.}, |\cs_set:Npn| to -% define it with. -% \begin{macrocode} -\cs_set_protected:Npn \prg_set_conditional:Nnn #1 - { - \exp_args:Nnf \prg_get_count_aux:nn - { - \cs_split_function:NN #1 \prg_generate_conditional_aux:nnNNnnnn - \cs_set:Npn { count } - } - { \cs_get_arg_count_from_signature:N #1 } - } -\cs_set_protected:Npn \prg_new_conditional:Nnn #1 - { - \exp_args:Nnf \prg_get_count_aux:nn - { - \cs_split_function:NN #1 \prg_generate_conditional_aux:nnNNnnnn - \cs_new:Npn { count} - } - { \cs_get_arg_count_from_signature:N #1 } - } - -\cs_set_protected:Npn \prg_set_protected_conditional:Nnn #1{ - \exp_args:Nnf \prg_get_count_aux:nn{ - \cs_split_function:NN #1 \prg_generate_conditional_aux:nnNNnnnn - \cs_set_protected:Npn {count} - }{\cs_get_arg_count_from_signature:N #1} -} - -\cs_set_protected:Npn \prg_new_protected_conditional:Nnn #1 +% \begin{macro} +% { +% \prg_set_conditional:Nnn , +% \prg_new_conditional:Nnn , +% \prg_set_protected_conditional:Nnn , +% \prg_new_protected_conditional:Nnn , +% } +% \begin{macro}[aux]{\prg_generate_conditional_count_aux:NNnn} +% The user functions for the types automatically inserting the correct +% parameter text based on the signature. The various functions only +% differ by which function is used for the assignment. For those |Nnn| +% type functions, we calculate the number of arguments. Then split the +% base function into name and signature, and feed \Arg{name} +% \Arg{signature} \meta{boolean} \meta{defining~function} |{count}| +% \Arg{arg~count} |{TF,...}| \Arg{code} to the auxiliary function +% responsible for defining all conditionals. +% \begin{macrocode} +\cs_set_protected_nopar:Npn \prg_set_conditional:Nnn + { \prg_generate_conditional_count_aux:NNnn \cs_set:Npn } +\cs_set_protected_nopar:Npn \prg_new_conditional:Nnn + { \prg_generate_conditional_count_aux:NNnn \cs_new:Npn } +\cs_set_protected_nopar:Npn \prg_set_protected_conditional:Nnn + { \prg_generate_conditional_count_aux:NNnn \cs_set_protected:Npn } +\cs_set_protected_nopar:Npn \prg_new_protected_conditional:Nnn + { \prg_generate_conditional_count_aux:NNnn \cs_new_protected:Npn } +\cs_set_protected:Npn \prg_generate_conditional_count_aux:NNnn #1#2 { - \exp_args:Nnf \prg_get_count_aux:nn + \exp_args:Nnf \use:n { - \cs_split_function:NN #1 \prg_generate_conditional_aux:nnNNnnnn - \cs_new_protected:Npn {count} + \cs_split_function:NN #2 \prg_generate_conditional_aux:nnNNnnnn + #1 { count } } - { \cs_get_arg_count_from_signature:N #1 } + { \cs_get_arg_count_from_signature:N #2 } } % \end{macrocode} % \end{macro} +% \end{macro} % % \begin{macro}{\prg_set_eq_conditional:NNn,\prg_new_eq_conditional:NNn} % The obvious setting-equal functions. @@ -1863,21 +1849,10 @@ \cs_set_protected:Npn \prg_new_eq_conditional:NNn #1#2#3 { \prg_set_eq_conditional_aux:NNNn \cs_new_eq:cc #1#2 {#3} } % \end{macrocode} -% \end{macro} -% -% \begin{macro}[aux]{\prg_get_parm_aux:nw,\prg_get_count_aux:nn} -% For the |Npnn| type we must grab the parameter text before -% continuing. We make this a very generic function that takes one -% argument before reading everything up to a left brace. Something -% similar for the |Nnn| type. -% \begin{macrocode} -\cs_set:Npn \prg_get_count_aux:nn #1#2 { #1 {#2} } -\cs_set:Npn \prg_get_parm_aux:nw #1#2# { #1 {#2} } -% \end{macrocode} % \end{macro} % -% \begin{macro}[aux]{\prg_generate_conditional_parm_aux:nnNNnnnn, -% \prg_generate_conditional_parm_aux:nw} +% \begin{macro}[aux]{\prg_generate_conditional_aux:nnNNnnnn, +% \prg_generate_conditional_aux:nnw} % The workhorse here is going through a list of desired forms, \emph{i.e.}, % |p|, |TF|, |T| and |F|. The first three arguments come from splitting up % the base form of the conditional, which gives the name, signature @@ -2003,14 +1978,12 @@ % \end{macrocode} % \end{macro} % -% \begin{macro}[aux]{\prg_set_eq_conditional_aux:NNNn, -% \prg_set_eq_conditional_aux:NNNw} +% \begin{macro}[aux] +% {\prg_set_eq_conditional_aux:NNNn, \prg_set_eq_conditional_aux:NNNw} +% Manual clist loop over argument |#4|. % \begin{macrocode} \cs_set_protected:Npn \prg_set_eq_conditional_aux:NNNn #1#2#3#4 - { \prg_set_eq_conditional_aux:NNNw #1#2#3#4 , ? , \q_recursion_stop } -% \end{macrocode} -% Manual clist loop over argument |#4|. -% \begin{macrocode} + { \prg_set_eq_conditional_aux:NNNw #1#2#3#4 , ? , \q_recursion_stop } \cs_set_protected:Npn \prg_set_eq_conditional_aux:NNNw #1#2#3#4 , { \if:w ? #4 \scan_stop: @@ -2021,8 +1994,6 @@ { \exp_args:NNc \cs_split_function:NN #3 { prg_conditional_form_#4:nnn } } \prg_set_eq_conditional_aux:NNNw #1 {#2} {#3} } -% \end{macrocode} -% \begin{macrocode} \cs_set:Npn \prg_conditional_form_p:nnn #1#2#3 { #1 _p : #2 } \cs_set:Npn \prg_conditional_form_TF:nnn #1#2#3 { #1 : #2 TF } \cs_set:Npn \prg_conditional_form_T:nnn #1#2#3 { #1 : #2 T } 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 35213537c69..ea947680f43 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx @@ -35,7 +35,7 @@ % %<*driver|package> \RequirePackage{l3names} -\GetIdInfo$Id: l3fp.dtx 3154 2012-01-08 22:46:28Z bruno $ +\GetIdInfo$Id: l3fp.dtx 3315 2012-02-06 11:17:04Z bruno $ {L3 Experimental floating-point operations} %</driver|package> %<*driver> @@ -110,7 +110,7 @@ % \cs{fp_new:N} \meta{floating point variable} % \end{syntax} % Creates a new \meta{floating point variable} or raises an error if -% the name is already taken. The declaration global. The +% the name is already taken. The declaration is global. The % \meta{floating point} will initially be set to |+0.000000000e0| % (the zero floating point). % \end{function} diff --git a/Master/texmf-dist/source/latex/l3kernel/l3int.dtx b/Master/texmf-dist/source/latex/l3kernel/l3int.dtx index 5b94e7ccef7..f977f49c9f8 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3int.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3int.dtx @@ -35,7 +35,7 @@ % %<*driver|package> \RequirePackage{l3names} -\GetIdInfo$Id: l3int.dtx 3216 2012-01-21 04:03:53Z bruno $ +\GetIdInfo$Id: l3int.dtx 3315 2012-02-06 11:17:04Z bruno $ {L3 Experimental integers} %</driver|package> %<*driver> @@ -379,7 +379,7 @@ % % \begin{function}[rEXP]{\int_do_while:nn} % \begin{syntax} -% \cs{int_do_while:nNnn} +% \cs{int_do_while:nn} % ~~\{ \meta{intexpr1} \meta{relation} \meta{intexpr2} \} \Arg{code} % \end{syntax} % Evaluates the relationship between the two \meta{integer expressions} @@ -1386,7 +1386,7 @@ { #2 \int_compare:nT {#1} - { \int_do_while:nNnn {#1} {#2} } + { \int_do_while:nn {#1} {#2} } } \cs_new:Npn \int_do_until:nn #1#2 { @@ -2069,7 +2069,7 @@ % % \begin{variable}{\l_tmpa_int, \l_tmpb_int, \l_tmpc_int} % \begin{variable}{\g_tmpa_int, \g_tmpb_int} -% We provide four local and two global scratch counters, maybe we +% We provide three local and two global scratch counters, maybe we % need more or less. % \begin{macrocode} \int_new:N \l_tmpa_int diff --git a/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx b/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx index 510747c1068..e0cb6029a79 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx @@ -35,7 +35,7 @@ % %<*driver|package> \RequirePackage{l3names} -\GetIdInfo$Id: l3msg.dtx 3153 2012-01-08 22:05:30Z bruno $ +\GetIdInfo$Id: l3msg.dtx 3316 2012-02-06 12:24:43Z bruno $ {L3 Experimental messages} %</driver|package> %<*driver> @@ -1076,7 +1076,7 @@ % A test to see if any more text is available, using a % permanently-empty text function. % \begin{macrocode} -\prg_set_conditional:Npnn \msg_if_more_text:N #1 { p , T , F , TF } +\prg_new_conditional:Npnn \msg_if_more_text:N #1 { p , T , F , TF } { \cs_if_eq:NNTF #1 \msg_no_more_text:xxxx { \prg_return_false: } diff --git a/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx b/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx index 6aa802d3ba4..8134b827bda 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 3250 2012-01-28 04:54:49Z bruno $ +\GetIdInfo$Id: l3prg.dtx 3317 2012-02-06 12:26:40Z bruno $ {L3 Experimental control structures} %</driver|package> %<*driver> @@ -91,128 +91,100 @@ % % \section{Defining a set of conditional functions} % -% \begin{function} +% \begin{function}[updated = 2012-02-06] % { % \prg_new_conditional:Npnn, \prg_set_conditional:Npnn, % \prg_new_conditional:Nnn, \prg_set_conditional:Nnn % } % \begin{syntax} -% \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} +% \cs{prg_new_conditional:Npnn} \cs{\meta{name}:\meta{arg spec}} \meta{parameters} \Arg{conditions} \Arg{code} \\ +% \cs{prg_new_conditional:Nnn} \cs{\meta{name}:\meta{arg spec}} \Arg{conditions} \Arg{code} % \end{syntax} % 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 -% conditionals created are dependent on the comma-separated list of -% \meta{conditions}, which should be one or more of \texttt{p}, +% \Arg{code} to perform the test created. Those conditionals are +% expandable if \meta{code} is. The \texttt{new} versions will check +% for existing definitions and perform assignments globally +% (\emph{cf.}~\cs{cs_new:Npn}) whereas the \texttt{set} versions do no +% check and perform assignments locally (\emph{cf.}~\cs{cs_set:Npn}). +% The conditionals created are dependent on the comma-separated list +% of \meta{conditions}, which should be one or more of \texttt{p}, % \texttt{T}, \texttt{F} and \texttt{TF}. % \end{function} % -% The conditionals are defined by \cs{prg_new_conditional:Npnn} and friends -% as: -% \begin{itemize} -% \item \cs{\meta{name}_p:\meta{arg spec}} --- a predicate function -% which will supply either a logical \texttt{true} or -% logical \texttt{false}. This function is intended for use -% in cases where one or more logical tests are combined to -% lead to a final outcome. -% \item \cs{\meta{name}:\meta{arg spec}T} --- a function with one -% more argument than the original \meta{arg spec} demands. The -% \meta{true branch} code in this additional argument will be -% left on the input stream only if the test is \texttt{true}. -% \item \cs{\meta{name}:\meta{arg spec}F} --- a function with one -% more argument than the original \meta{arg spec} demands. The -% \meta{false branch} code in this additional argument will be -% left on the input stream only if the test is \texttt{false}. -% \item \cs{\meta{name}:\meta{arg spec}TF} --- a function with two -% more argument than the original \meta{arg spec} demands. The -% \meta{true branch} code in the first additional argument will -% be left on the input stream if the test is \texttt{true}, while -% the \meta{false branch} code in the second argument will be -% left on the input stream if the test is \texttt{false}. -% \end{itemize} -% The \meta{code} of the test may use \meta{parameters} as specified -% by the second argument to \cs{prg_set_conditional:Npnn}: this should -% match the \meta{argument specification} but this is not enforced. -% The |Nnn| versions infer the number of arguments from the argument -% specification given (\emph{cf.}~\cs{cs_new:Nn}, \emph{etc.}). -% Within the \meta{code}, the functions \cs{prg_return_true:} and -% \cs{prg_return_false:} are used to indicate the logical outcomes of -% the test. If \meta{code} is expandable then -% \cs{prg_set_conditional:Npnn} will generate a family of conditionals -% which are also expandable. All of the functions are created globally. -% -% An example can easily clarify matters here: -% \begin{verbatim} -% \prg_set_conditional:Nnn \foo_if_bar:NN { p , T , TF } -% { -% \if_meaning:w \l_tmpa_tl #1 -% \prg_return_true: -% \else: -% \if_meaning:w \l_tmpa_tl #2 -% \prg_return_true: -% \else: -% \prg_return_false: -% \fi: -% \fi: -% } -% \end{verbatim} -% 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 -% returning the state. There must be a return statement for each -% branch, failing to do so will result in an error if that branch is -% executed. -% -% \begin{function} +% \begin{function}[updated = 2012-02-06] % { % \prg_new_protected_conditional:Npnn, \prg_set_protected_conditional:Npnn, % \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_new_protected_conditional:Npnn} \cs{\meta{name}:\meta{arg spec}} \meta{parameters} \Arg{conditions} \Arg{code} \\ +% \cs{prg_new_protected_conditional:Nnn} \cs{\meta{name}:\meta{arg spec}} \Arg{conditions} \Arg{code} % \end{syntax} -% 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 -% conditionals created are depended on the comma-separated list of -% \meta{conditions}, which should be one or more of \texttt{T}, -% \texttt{F} and \texttt{TF}. +% These functions create a family of protected conditionals using the +% same \Arg{code} to perform the test created. The \meta{code} does +% not need to be expandable. The \texttt{new} version will check for +% existing definitions and perform assignments globally +% (\emph{cf.}~\cs{cs_new:Npn}) whereas the \texttt{set} version will +% not (\emph{cf.}~\cs{cs_set:Npn}). The conditionals created are +% depended on the comma-separated list of \meta{conditions}, which +% should be one or more of \texttt{T}, \texttt{F} and \texttt{TF} (not +% \texttt{p}). % \end{function} % -% The conditionals are defined by \cs{prg_new_protected_conditional:Npnn} -% and friends as: -% \begin{itemize} -% \item \cs{\meta{name}:\meta{arg spec}T} --- a function with one -% more argument than the original \meta{arg spec} demands. The -% \meta{true branch} code in this additional argument will be -% left on the input stream only if the test is \texttt{true}. -% \item \cs{\meta{name}:\meta{arg spec}F} --- a function with one -% more argument than the original \meta{arg spec} demands. The -% \meta{false branch} code in this additional argument will be -% left on the input stream only if the test is \texttt{false}. -% \item \cs{\meta{name}:\meta{arg spec}TF} --- a function with two -% more argument than the original \meta{arg spec} demands. The -% \meta{true branch} code in the first additional argument will -% be left on the input stream if the test is \texttt{true}, while -% the \meta{false branch} code in the second argument will be -% left on the input stream if the test is \texttt{false}. -% \end{itemize} -% The \meta{code} of the test may use \meta{parameters} as specified -% by the second argument to \cs{prg_set_conditional:Npn}: this should -% match the \meta{argument specification} but this is not enforced. -% The |Nnn| versions infer the number of arguments from the argument -% specification given (\emph{cf.}~\cs{cs_new:Nn}, \emph{etc.}). -% Within the \meta{code}, the functions \cs{prg_return_true:} and -% \cs{prg_return_false:} are used to indicate the logical outcomes of -% the test. \cs{prg_set_protected_conditional:Npn} will generate -% a family of protected conditional functions, and so \meta{code} -% does not need to be expandable. All of the functions are created -% globally. +% The conditionals are defined by \cs{prg_new_conditional:Npnn} and +% friends as: +% \begin{itemize} +% \item \cs{\meta{name}_p:\meta{arg spec}} --- a predicate function +% which will supply either a logical \texttt{true} or logical +% \texttt{false}. This function is intended for use in cases where +% one or more logical tests are combined to lead to a final outcome. +% This function will not work properly for \texttt{protected} +% conditionals. +% \item \cs{\meta{name}:\meta{arg spec}T} --- a function with one more +% argument than the original \meta{arg spec} demands. The \meta{true +% branch} code in this additional argument will be left on the +% input stream only if the test is \texttt{true}. +% \item \cs{\meta{name}:\meta{arg spec}F} --- a function with one more +% argument than the original \meta{arg spec} demands. The +% \meta{false branch} code in this additional argument will be left +% on the input stream only if the test is \texttt{false}. +% \item \cs{\meta{name}:\meta{arg spec}TF} --- a function with two +% more argument than the original \meta{arg spec} demands. The +% \meta{true branch} code in the first additional argument will be +% left on the input stream if the test is \texttt{true}, while the +% \meta{false branch} code in the second argument will be left on +% the input stream if the test is \texttt{false}. +% \end{itemize} +% The \meta{code} of the test may use \meta{parameters} as specified by +% the second argument to \cs{prg_set_conditional:Npnn}: this should +% match the \meta{argument specification} but this is not enforced. The +% |Nnn| versions infer the number of arguments from the argument +% specification given (\emph{cf.}~\cs{cs_new:Nn}, \emph{etc.}). Within +% the \meta{code}, the functions \cs{prg_return_true:} and +% \cs{prg_return_false:} are used to indicate the logical outcomes of +% the test. +% +% An example can easily clarify matters here: +% \begin{verbatim} +% \prg_set_conditional:Nnn \foo_if_bar:NN { p , T , TF } +% { +% \if_meaning:w \l_tmpa_tl #1 +% \prg_return_true: +% \else: +% \if_meaning:w \l_tmpa_tl #2 +% \prg_return_true: +% \else: +% \prg_return_false: +% \fi: +% \fi: +% } +% \end{verbatim} +% 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{conditions} list). The return statements take care of +% resolving the remaining |\else:| and |\fi:| before returning the +% state. There must be a return statement for each branch, failing to do +% so will result in an error if that branch is executed. % % \begin{function}{\prg_new_eq_conditional:NNn, \prg_set_eq_conditional:NNn} % \begin{syntax} @@ -265,71 +237,47 @@ % \meta{boolean} will initially be \texttt{false}. % \end{function} % -% \begin{function}{\bool_set_false:N, \bool_set_false:c} +% \begin{function} +% { +% \bool_set_false:N , \bool_set_false:c , +% \bool_gset_false:N, \bool_gset_false:c +% } % \begin{syntax} % \cs{bool_set_false:N} \meta{boolean} % \end{syntax} -% Sets \meta{boolean} logically \texttt{false} within the current -% \TeX{} group. +% Sets \meta{boolean} logically \texttt{false}. % \end{function} % -% \begin{function}{\bool_gset_false:N, \bool_gset_false:c} -% \begin{syntax} -% \cs{bool_sget_false:N} \meta{boolean} -% \end{syntax} -% Sets \meta{boolean} logically \texttt{false} globally. -% \end{function} -% -% \begin{function}{\bool_set_true:N, \bool_set_true:c} +% \begin{function} +% { +% \bool_set_true:N , \bool_set_true:c , +% \bool_gset_true:N , \bool_gset_true:c +% } % \begin{syntax} % \cs{bool_set_true:N} \meta{boolean} % \end{syntax} -% Sets \meta{boolean} logically \texttt{true} within the current -% \TeX{} group. -% \end{function} -% -% \begin{function}{\bool_gset_true:N, \bool_gset_true:c} -% \begin{syntax} -% \cs{bool_gset_true:N} \meta{boolean} -% \end{syntax} -% Sets \meta{boolean} logically \texttt{true} globally. +% Sets \meta{boolean} logically \texttt{true}. % \end{function} % % \begin{function} -% {\bool_set_eq:NN, \bool_set_eq:cN, \bool_set_eq:Nc, \bool_set_eq:cc} +% { +% \bool_set_eq:NN , \bool_set_eq:cN , \bool_set_eq:Nc , \bool_set_eq:cc , +% \bool_gset_eq:NN, \bool_gset_eq:cN, \bool_gset_eq:Nc, \bool_gset_eq:cc +% } % \begin{syntax} % \cs{bool_set_eq:NN} \meta{boolean1} \meta{boolean2} % \end{syntax} % Sets the content of \meta{boolean1} equal to that of \meta{boolean2}. -% This assignment is restricted to the current \TeX{} group level. % \end{function} % % \begin{function} -% {\bool_gset_eq:NN, \bool_gset_eq:cN, \bool_gset_eq:Nc, \bool_gset_eq:cc} -% \begin{syntax} -% \cs{bool_gset_eq:NN} \meta{boolean1} \meta{boolean2} -% \end{syntax} -% Sets the content of \meta{boolean1} equal to that of \meta{boolean2}. -% This assignment is global and so is not limited by the current -% \TeX{} group level. -% \end{function} -% -% \begin{function}{\bool_set:Nn, \bool_set:cn} +% {\bool_set:Nn, \bool_set:cn, \bool_gset:Nn, \bool_gset:cn} % \begin{syntax} % \cs{bool_set:Nn} \meta{boolean} \Arg{boolexpr} % \end{syntax} % Evaluates the \meta{boolean expression} as described for % \cs{bool_if:n(TF)}, and sets the \meta{boolean} variable to -% the logical truth of this evaluation. This assignment is local. -% \end{function} -% -% \begin{function}{\bool_gset:Nn, \bool_gset:cn} -% \begin{syntax} -% \cs{bool_gset:Nn} \meta{boolean} \Arg{boolexpr} -% \end{syntax} -% Evaluates the \meta{boolean expression} as described for -% \cs{bool_if:n(TF)}, and sets the \meta{boolean} variable to -% the logical truth of this evaluation. This assignment is global. +% the logical truth of this evaluation. % \end{function} % % \begin{function}[EXP,pTF]{\bool_if:N, \bool_if:c} diff --git a/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx b/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx index 44e0bf5a45d..02cc54e90d3 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx @@ -36,7 +36,7 @@ % %<*driver|package> \RequirePackage{l3names} -\GetIdInfo$Id: l3skip.dtx 3139 2012-01-07 19:53:09Z bruno $ +\GetIdInfo$Id: l3skip.dtx 3313 2012-02-06 11:15:21Z bruno $ {L3 Experimental dimensions and skips} %</driver|package> %<*driver> @@ -138,7 +138,7 @@ % \meta{dimension2}. % \end{function} % -% \begin{function}[updated = 2011-10-22] +% \begin{function}[updated = 2012-02-06] % {\dim_set_max:Nn, \dim_set_max:cn, \dim_gset_max:Nn, \dim_gset_max:cn} % \begin{syntax} % \cs{dim_set_max:Nn} \meta{dimension} \Arg{dimension expression} @@ -148,7 +148,7 @@ % larger of these two value. % \end{function} % -% \begin{function}[updated = 2011-10-22] +% \begin{function}[updated = 2012-02-06] % {\dim_set_min:Nn, \dim_set_min:cn, \dim_gset_min:Nn, \dim_gset_min:cn} % \begin{syntax} % \cs{dim_set_min:Nn} \meta{dimension} \Arg{dimension expression} @@ -293,7 +293,7 @@ % % \begin{function}[rEXP]{\dim_do_while:nn} % \begin{syntax} -% \cs{dim_do_while:nNnn} \{ \meta{dimexpr1} \meta{relation} \meta{dimexpr2} \} \Arg{code} +% \cs{dim_do_while:nn} \{ \meta{dimexpr1} \meta{relation} \meta{dimexpr2} \} \Arg{code} % \end{syntax} % Evaluates the relationship between the two \meta{dimension expressions} % as described for \cs{dim_compare:nTF}, and then places the @@ -916,17 +916,20 @@ % \begin{macro}{\dim_set_min:Nn, \dim_set_min:cn} % \begin{macro}{\dim_gset_max:Nn, \dim_gset_max:cn} % \begin{macro}{\dim_gset_min:Nn, \dim_gset_min:cn} +% \begin{macro}[aux]{\dim_set_max_aux:NNNn} % Setting maximum and minimum values is simply a case of so build-in % comparison. This only applies to dimensions as skips are not ordered. % \begin{macrocode} -\cs_new_protected:Npn \dim_set_max:Nn #1#2 - { \dim_compare:nNnT {#1} < {#2} { \dim_set:Nn #1 {#2} } } -\cs_new_protected:Npn \dim_gset_max:Nn - { \tex_global:D \dim_set_max:Nn } -\cs_new_protected:Npn \dim_set_min:Nn #1#2 - { \dim_compare:nNnT {#1} > {#2} { \dim_set:Nn #1 {#2} } } -\cs_new_protected:Npn \dim_gset_min:Nn - { \tex_global:D \dim_set_min:Nn } +\cs_new_protected_nopar:Npn \dim_set_max:Nn + { \dim_set_max_aux:NNNn < \dim_set:Nn } +\cs_new_protected_nopar:Npn \dim_gset_max:Nn + { \dim_set_max_aux:NNNn < \dim_gset:Nn } +\cs_new_protected_nopar:Npn \dim_set_min:Nn + { \dim_set_max_aux:NNNn > \dim_set:Nn } +\cs_new_protected_nopar:Npn \dim_gset_min:Nn + { \dim_set_max_aux:NNNn > \dim_gset:Nn } +\cs_new_protected:Npn \dim_set_max_aux:NNNn #1#2#3#4 + { \dim_compare:nNnT {#3} #1 {#4} { #2 #3 {#4} } } \cs_generate_variant:Nn \dim_set_max:Nn { c } \cs_generate_variant:Nn \dim_gset_max:Nn { c } \cs_generate_variant:Nn \dim_set_min:Nn { c } @@ -936,6 +939,7 @@ % \end{macro} % \end{macro} % \end{macro} +% \end{macro} % % \begin{macro}{\dim_add:Nn, \dim_add:cn} % \begin{macro}{\dim_gadd:Nn, \dim_gadd:cn} @@ -1148,7 +1152,7 @@ { #2 \dim_compare:nT {#1} - { \dim_do_while:nNnn {#1} {#2} } + { \dim_do_while:nn {#1} {#2} } } \cs_set:Npn \dim_do_until:nn #1#2 { @@ -1673,7 +1677,7 @@ % |#3| and |#4| to the stretch and shrink component, resp. If it holds % infinite glue set |#3| and |#4| to zero and issue the special action % |#2| which is probably an error message. -% Assignments are global. +% Assignments are local. % \begin{macrocode} \cs_new:Npn \skip_split_finite_else_action:nnNN #1#2#3#4 { diff --git a/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx b/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx index 8fd54e3388a..f0279ff6bfc 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx @@ -35,7 +35,7 @@ % %<*driver|package> \RequirePackage{l3names} -\GetIdInfo$Id: l3tl.dtx 3286 2012-01-31 21:57:22Z joseph $ +\GetIdInfo$Id: l3tl.dtx 3316 2012-02-06 12:24:43Z bruno $ {L3 Experimental token lists} %</driver|package> %<*driver> @@ -1531,7 +1531,7 @@ % These functions check whether the token list in the argument is % empty and execute the proper code from their argument(s). % \begin{macrocode} -\prg_set_conditional:Npnn \tl_if_empty:N #1 { p , T , F , TF } +\prg_new_conditional:Npnn \tl_if_empty:N #1 { p , T , F , TF } { \if_meaning:w #1 \c_empty_tl \prg_return_true: diff --git a/Master/texmf-dist/source/latex/l3kernel/l3token.dtx b/Master/texmf-dist/source/latex/l3kernel/l3token.dtx index 107abc826ee..3c5ba351913 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 3234 2012-01-25 12:55:06Z joseph $ +\GetIdInfo$Id: l3token.dtx 3316 2012-02-06 12:24:43Z bruno $ {L3 Experimental token manipulation} %</driver|package> %<*driver> @@ -2087,7 +2087,7 @@ % \begin{macro}[aux]{\peek_def:nnnn} % \begin{macro}[aux]{\peek_def_aux:nnnnn} % The public functions themselves cannot be defined using -% \cs{prg_set_conditional:Npnn} and so a couple of auxiliary functions +% \cs{prg_new_conditional:Npnn} and so a couple of auxiliary functions % are used. As a result, everything is done inside a group. As a result % things are a bit complicated. % \begin{macrocode} diff --git a/Master/texmf-dist/tex/latex/l3kernel/expl3.sty b/Master/texmf-dist/tex/latex/l3kernel/expl3.sty index fd93024f965..1603a8728b3 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/expl3.sty +++ b/Master/texmf-dist/tex/latex/l3kernel/expl3.sty @@ -59,8 +59,8 @@ } \def\ExplFileName{expl3} \def\ExplFileDescription{L3 Experimental code bundle wrapper} -\def\ExplFileDate{2012/01/31} -\def\ExplFileVersion{3287} +\def\ExplFileDate{2012/02/07} +\def\ExplFileVersion{3331} \RequirePackage{etex} \reserveinserts{32} \ProvidesExplPackage diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3basics.sty b/Master/texmf-dist/tex/latex/l3kernel/l3basics.sty index 39a6bbaef22..4ea5a1ce780 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/l3basics.sty +++ b/Master/texmf-dist/tex/latex/l3kernel/l3basics.sty @@ -46,7 +46,7 @@ %% %% ----------------------------------------------------------------------- \RequirePackage{l3names} -\GetIdInfo$Id: l3basics.dtx 3196 2012-01-15 09:44:05Z joseph $ +\GetIdInfo$Id: l3basics.dtx 3317 2012-02-06 12:26:40Z bruno $ {L3 Experimental basic definitions} \ProvidesExplPackage {\ExplFileName}{\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription} @@ -177,78 +177,40 @@ { \exp_after:wN \use_i:nn \int_to_roman:w } \cs_set_nopar:Npn \prg_return_false: { \exp_after:wN \use_ii:nn \int_to_roman:w} -\cs_set_protected:Npn \prg_set_conditional:Npnn #1 - { - \prg_get_parm_aux:nw - { - \cs_split_function:NN #1 \prg_generate_conditional_aux:nnNNnnnn - \cs_set:Npn { parm } - } - } -\cs_set_protected:Npn \prg_new_conditional:Npnn #1 - { - \prg_get_parm_aux:nw - { - \cs_split_function:NN #1 \prg_generate_conditional_aux:nnNNnnnn - \cs_new:Npn { parm } - } - } -\cs_set_protected:Npn \prg_set_protected_conditional:Npnn #1 - { - \prg_get_parm_aux:nw{ - \cs_split_function:NN #1 \prg_generate_conditional_aux:nnNNnnnn - \cs_set_protected:Npn { parm } - } - } -\cs_set_protected:Npn \prg_new_protected_conditional:Npnn #1 - { - \prg_get_parm_aux:nw - { - \cs_split_function:NN #1 \prg_generate_conditional_aux:nnNNnnnn - \cs_new_protected:Npn { parm } - } - } -\cs_set_protected:Npn \prg_set_conditional:Nnn #1 - { - \exp_args:Nnf \prg_get_count_aux:nn - { - \cs_split_function:NN #1 \prg_generate_conditional_aux:nnNNnnnn - \cs_set:Npn { count } - } - { \cs_get_arg_count_from_signature:N #1 } - } -\cs_set_protected:Npn \prg_new_conditional:Nnn #1 - { - \exp_args:Nnf \prg_get_count_aux:nn - { - \cs_split_function:NN #1 \prg_generate_conditional_aux:nnNNnnnn - \cs_new:Npn { count} - } - { \cs_get_arg_count_from_signature:N #1 } - } - -\cs_set_protected:Npn \prg_set_protected_conditional:Nnn #1{ - \exp_args:Nnf \prg_get_count_aux:nn{ - \cs_split_function:NN #1 \prg_generate_conditional_aux:nnNNnnnn - \cs_set_protected:Npn {count} - }{\cs_get_arg_count_from_signature:N #1} -} - -\cs_set_protected:Npn \prg_new_protected_conditional:Nnn #1 - { - \exp_args:Nnf \prg_get_count_aux:nn +\cs_set_protected_nopar:Npn \prg_set_conditional:Npnn + { \prg_generate_conditional_parm_aux:NNpnn \cs_set:Npn } +\cs_set_protected_nopar:Npn \prg_new_conditional:Npnn + { \prg_generate_conditional_parm_aux:NNpnn \cs_new:Npn } +\cs_set_protected_nopar:Npn \prg_set_protected_conditional:Npnn + { \prg_generate_conditional_parm_aux:NNpnn \cs_set_protected:Npn } +\cs_set_protected_nopar:Npn \prg_new_protected_conditional:Npnn + { \prg_generate_conditional_parm_aux:NNpnn \cs_new_protected:Npn } +\cs_set_protected:Npn \prg_generate_conditional_parm_aux:NNpnn #1#2#3# + { + \cs_split_function:NN #2 \prg_generate_conditional_aux:nnNNnnnn + #1 { parm } {#3} + } +\cs_set_protected_nopar:Npn \prg_set_conditional:Nnn + { \prg_generate_conditional_count_aux:NNnn \cs_set:Npn } +\cs_set_protected_nopar:Npn \prg_new_conditional:Nnn + { \prg_generate_conditional_count_aux:NNnn \cs_new:Npn } +\cs_set_protected_nopar:Npn \prg_set_protected_conditional:Nnn + { \prg_generate_conditional_count_aux:NNnn \cs_set_protected:Npn } +\cs_set_protected_nopar:Npn \prg_new_protected_conditional:Nnn + { \prg_generate_conditional_count_aux:NNnn \cs_new_protected:Npn } +\cs_set_protected:Npn \prg_generate_conditional_count_aux:NNnn #1#2 + { + \exp_args:Nnf \use:n { - \cs_split_function:NN #1 \prg_generate_conditional_aux:nnNNnnnn - \cs_new_protected:Npn {count} + \cs_split_function:NN #2 \prg_generate_conditional_aux:nnNNnnnn + #1 { count } } - { \cs_get_arg_count_from_signature:N #1 } + { \cs_get_arg_count_from_signature:N #2 } } \cs_set_protected:Npn \prg_set_eq_conditional:NNn #1#2#3 { \prg_set_eq_conditional_aux:NNNn \cs_set_eq:cc #1#2 {#3} } \cs_set_protected:Npn \prg_new_eq_conditional:NNn #1#2#3 { \prg_set_eq_conditional_aux:NNNn \cs_new_eq:cc #1#2 {#3} } -\cs_set:Npn \prg_get_count_aux:nn #1#2 { #1 {#2} } -\cs_set:Npn \prg_get_parm_aux:nw #1#2# { #1 {#2} } \cs_set_protected:Npn \prg_generate_conditional_aux:nnNNnnnn #1#2#3#4#5#6#7#8 { \prg_generate_conditional_aux:nnw {#5} @@ -324,7 +286,7 @@ { #5 \c_zero } } \cs_set_protected:Npn \prg_set_eq_conditional_aux:NNNn #1#2#3#4 - { \prg_set_eq_conditional_aux:NNNw #1#2#3#4 , ? , \q_recursion_stop } + { \prg_set_eq_conditional_aux:NNNw #1#2#3#4 , ? , \q_recursion_stop } \cs_set_protected:Npn \prg_set_eq_conditional_aux:NNNw #1#2#3#4 , { \if:w ? #4 \scan_stop: diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3doc.cls b/Master/texmf-dist/tex/latex/l3kernel/l3doc.cls index 33821fa37f4..b1b9ac3c5c4 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/l3fp.sty b/Master/texmf-dist/tex/latex/l3kernel/l3fp.sty index e22994a4726..df321de33c9 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/l3fp.sty +++ b/Master/texmf-dist/tex/latex/l3kernel/l3fp.sty @@ -46,7 +46,7 @@ %% %% ----------------------------------------------------------------------- \RequirePackage{l3names} -\GetIdInfo$Id: l3fp.dtx 3154 2012-01-08 22:46:28Z bruno $ +\GetIdInfo$Id: l3fp.dtx 3315 2012-02-06 11:17:04Z bruno $ {L3 Experimental floating-point operations} \ProvidesExplPackage {\ExplFileName}{\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription} diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3int.sty b/Master/texmf-dist/tex/latex/l3kernel/l3int.sty index 492cc028025..2747a0afeeb 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/l3int.sty +++ b/Master/texmf-dist/tex/latex/l3kernel/l3int.sty @@ -46,7 +46,7 @@ %% %% ----------------------------------------------------------------------- \RequirePackage{l3names} -\GetIdInfo$Id: l3int.dtx 3216 2012-01-21 04:03:53Z bruno $ +\GetIdInfo$Id: l3int.dtx 3315 2012-02-06 11:17:04Z bruno $ {L3 Experimental integers} \ProvidesExplPackage {\ExplFileName}{\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription} @@ -317,7 +317,7 @@ { #2 \int_compare:nT {#1} - { \int_do_while:nNnn {#1} {#2} } + { \int_do_while:nn {#1} {#2} } } \cs_new:Npn \int_do_until:nn #1#2 { diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3msg.sty b/Master/texmf-dist/tex/latex/l3kernel/l3msg.sty index 90d70060297..1531c7a39b1 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/l3msg.sty +++ b/Master/texmf-dist/tex/latex/l3kernel/l3msg.sty @@ -46,7 +46,7 @@ %% %% ----------------------------------------------------------------------- \RequirePackage{l3names} -\GetIdInfo$Id: l3msg.dtx 3153 2012-01-08 22:05:30Z bruno $ +\GetIdInfo$Id: l3msg.dtx 3316 2012-02-06 12:24:43Z bruno $ {L3 Experimental messages} \ProvidesExplPackage {\ExplFileName}{\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription} @@ -229,7 +229,7 @@ \cs_set_protected:cpx { msg_ #1 :nn } ##1##2 { \exp_not:c { msg_ #1 :nnxxxx } {##1} {##2} { } { } { } { } } } -\prg_set_conditional:Npnn \msg_if_more_text:N #1 { p , T , F , TF } +\prg_new_conditional:Npnn \msg_if_more_text:N #1 { p , T , F , TF } { \cs_if_eq:NNTF #1 \msg_no_more_text:xxxx { \prg_return_false: } diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3prg.sty b/Master/texmf-dist/tex/latex/l3kernel/l3prg.sty index 8689a2970f1..6f4e81129bf 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 3250 2012-01-28 04:54:49Z bruno $ +\GetIdInfo$Id: l3prg.dtx 3317 2012-02-06 12:26:40Z bruno $ {L3 Experimental control structures} %% \ProvidesExplPackage diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3skip.sty b/Master/texmf-dist/tex/latex/l3kernel/l3skip.sty index 0250bedeb7c..8fdb538a031 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/l3skip.sty +++ b/Master/texmf-dist/tex/latex/l3kernel/l3skip.sty @@ -47,7 +47,7 @@ %% %% ----------------------------------------------------------------------- \RequirePackage{l3names} -\GetIdInfo$Id: l3skip.dtx 3139 2012-01-07 19:53:09Z bruno $ +\GetIdInfo$Id: l3skip.dtx 3313 2012-02-06 11:15:21Z bruno $ {L3 Experimental dimensions and skips} \ProvidesExplPackage {\ExplFileName}{\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription} @@ -82,14 +82,16 @@ \cs_new_protected:Npn \dim_gset_eq:NN #1#2 { \tex_global:D #1 = #2 } \cs_generate_variant:Nn \dim_gset_eq:NN { c } \cs_generate_variant:Nn \dim_gset_eq:NN { Nc , cc } -\cs_new_protected:Npn \dim_set_max:Nn #1#2 - { \dim_compare:nNnT {#1} < {#2} { \dim_set:Nn #1 {#2} } } -\cs_new_protected:Npn \dim_gset_max:Nn - { \tex_global:D \dim_set_max:Nn } -\cs_new_protected:Npn \dim_set_min:Nn #1#2 - { \dim_compare:nNnT {#1} > {#2} { \dim_set:Nn #1 {#2} } } -\cs_new_protected:Npn \dim_gset_min:Nn - { \tex_global:D \dim_set_min:Nn } +\cs_new_protected_nopar:Npn \dim_set_max:Nn + { \dim_set_max_aux:NNNn < \dim_set:Nn } +\cs_new_protected_nopar:Npn \dim_gset_max:Nn + { \dim_set_max_aux:NNNn < \dim_gset:Nn } +\cs_new_protected_nopar:Npn \dim_set_min:Nn + { \dim_set_max_aux:NNNn > \dim_set:Nn } +\cs_new_protected_nopar:Npn \dim_gset_min:Nn + { \dim_set_max_aux:NNNn > \dim_gset:Nn } +\cs_new_protected:Npn \dim_set_max_aux:NNNn #1#2#3#4 + { \dim_compare:nNnT {#3} #1 {#4} { #2 #3 {#4} } } \cs_generate_variant:Nn \dim_set_max:Nn { c } \cs_generate_variant:Nn \dim_gset_max:Nn { c } \cs_generate_variant:Nn \dim_set_min:Nn { c } @@ -172,7 +174,7 @@ { #2 \dim_compare:nT {#1} - { \dim_do_while:nNnn {#1} {#2} } + { \dim_do_while:nn {#1} {#2} } } \cs_set:Npn \dim_do_until:nn #1#2 { diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3tl.sty b/Master/texmf-dist/tex/latex/l3kernel/l3tl.sty index a3c773c37b4..95b2d84cd8a 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/l3tl.sty +++ b/Master/texmf-dist/tex/latex/l3kernel/l3tl.sty @@ -46,7 +46,7 @@ %% %% ----------------------------------------------------------------------- \RequirePackage{l3names} -\GetIdInfo$Id: l3tl.dtx 3286 2012-01-31 21:57:22Z joseph $ +\GetIdInfo$Id: l3tl.dtx 3316 2012-02-06 12:24:43Z bruno $ {L3 Experimental token lists} \ProvidesExplPackage {\ExplFileName}{\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription} @@ -274,7 +274,7 @@ \cs_generate_variant:Nn \tl_if_blank:nT { o } \cs_generate_variant:Nn \tl_if_blank:nF { o } \cs_generate_variant:Nn \tl_if_blank:nTF { o } -\prg_set_conditional:Npnn \tl_if_empty:N #1 { p , T , F , TF } +\prg_new_conditional:Npnn \tl_if_empty:N #1 { p , T , F , TF } { \if_meaning:w #1 \c_empty_tl \prg_return_true: diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3token.sty b/Master/texmf-dist/tex/latex/l3kernel/l3token.sty index 3a615eaef75..3bab1bd32dd 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 3234 2012-01-25 12:55:06Z joseph $ +\GetIdInfo$Id: l3token.dtx 3316 2012-02-06 12:24:43Z bruno $ {L3 Experimental token manipulation} \ProvidesExplPackage {\ExplFileName}{\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription} |