summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/latex
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/source/latex')
-rw-r--r--Master/texmf-dist/source/latex/expl3/expl3.dtx33
-rw-r--r--Master/texmf-dist/source/latex/expl3/l3.ins238
-rw-r--r--Master/texmf-dist/source/latex/expl3/l3basics.dtx106
-rw-r--r--Master/texmf-dist/source/latex/expl3/l3doc.dtx13
-rw-r--r--Master/texmf-dist/source/latex/expl3/l3expan.dtx15
-rw-r--r--Master/texmf-dist/source/latex/expl3/l3final.dtx70
-rw-r--r--Master/texmf-dist/source/latex/expl3/l3format.ins151
-rw-r--r--Master/texmf-dist/source/latex/expl3/l3intexpr.dtx21
-rw-r--r--Master/texmf-dist/source/latex/expl3/l3keys.dtx87
-rw-r--r--Master/texmf-dist/source/latex/expl3/l3msg.dtx8
-rw-r--r--Master/texmf-dist/source/latex/expl3/l3names.dtx39
-rw-r--r--Master/texmf-dist/source/latex/expl3/l3num.dtx7
-rw-r--r--Master/texmf-dist/source/latex/expl3/l3precom.dtx21
-rw-r--r--Master/texmf-dist/source/latex/expl3/l3prg.dtx30
-rw-r--r--Master/texmf-dist/source/latex/expl3/l3prop.dtx10
-rw-r--r--Master/texmf-dist/source/latex/expl3/l3tl.dtx30
-rw-r--r--Master/texmf-dist/source/latex/expl3/l3vers.dtx99
-rw-r--r--Master/texmf-dist/source/latex/expl3/source3.tex20
18 files changed, 563 insertions, 435 deletions
diff --git a/Master/texmf-dist/source/latex/expl3/expl3.dtx b/Master/texmf-dist/source/latex/expl3/expl3.dtx
index 61672cc7228..ec89c31aea3 100644
--- a/Master/texmf-dist/source/latex/expl3/expl3.dtx
+++ b/Master/texmf-dist/source/latex/expl3/expl3.dtx
@@ -37,7 +37,7 @@
\RequirePackage{l3names}
%</driver|package>
%\fi
-\GetIdInfo$Id: expl3.dtx 1439 2009-08-05 19:05:55Z joseph $
+\GetIdInfo$Id: expl3.dtx 1458 2009-08-12 03:35:07Z will $
{L3 Experimental code bundle wrapper}%
%\iffalse
%<*driver>
@@ -199,16 +199,17 @@
% contrast to the plain \TeX\ format and the \LaTeXe\ kernel, these
% extra letters are used only between parts of a macro name (no
% strange vowel replacement).
-%
-% The naming conventions for this programming language distinguish
-% between \emph{functions} and \emph{variables}. Functions can have
-% arguments and they are executed. Variables can be assigned values
-% and they are used in arguments to functions; they are not directly
-% executed but are manipulated by functions. Functions and variables
-% with a related functionality (for example accessing counters, or
-% manipulating token lists, etc.)\ are collected together into a
+%
+% While \TeX\ is actually a macro processor, by
+% convention for the \pkg{expl3} programming language we distinguish between
+% \emph{functions} and \emph{variables}. Functions can have arguments and they
+% are either expanded or executed. Variables can be assigned values and they
+% are used in arguments to functions; they are not used directly but are
+% manipulated by functions (including getting and setting functions).
+% Functions and variables with a related functionality (for example accessing
+% counters, or manipulating token lists, etc.)\ are collected together into a
% \emph{module}.
-%
+%
%\subsection{Examples}
%
% Before giving the details of the naming scheme, here are a few typical
@@ -409,7 +410,7 @@
% we will not get the value of the variable pushed onto the stack,
% only the variable name itself. Instead a suitable number of
% "\exp_after:wN" would be necessary (together with extra braces) to
-% change the order of execution,\footnote{\cs{exp_after:wN} is
+% change the order of expansion,\footnote{\cs{exp_after:wN} is
% the \LaTeX3 name for the \TeX\ \cs{expandafter} primitive.} i.e.
% \begin{quote}
% "\exp_after:wN" \\
@@ -455,14 +456,14 @@
% "\seq_gpush:NV \g_file_name_stack \l_tmpa_tl".
% \end{quote}
% \item[V] Value of a variable.\\
-% This means that the register in question is returned, be it an
-% integer, a length-type register, a token list variable or
-% similar. The value is returned to the function as a braced token
-% list.
+% This means that the contents of the register in question is used as the
+% argument, be it an integer, a length-type register, a token list variable
+% or similar. The value is passed to the function as a braced token list.
% \item[v] Value of a register, constructed from a character string
% used as a command name.\\
% This is a combination of |c| and |V| which first constructs a
-% control sequence from the argument and then returns the value.
+% control sequence from the argument and then passes the value of the
+% resulting register to the function.
% \item[x] Fully-expanded token or braced token list.\\
% This means that the argument is expanded as in the replacement
% text of an~|\edef|, and the expansion is passed to the function as
diff --git a/Master/texmf-dist/source/latex/expl3/l3.ins b/Master/texmf-dist/source/latex/expl3/l3.ins
index d4b5bf9aeee..41fa0184129 100644
--- a/Master/texmf-dist/source/latex/expl3/l3.ins
+++ b/Master/texmf-dist/source/latex/expl3/l3.ins
@@ -1,119 +1,119 @@
-
-\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
-
-% wrapper package for the expl3 bundle
-\generate{\file{expl3.sty}{\from{expl3.dtx}{package}}}
-
-
-% l3names.sty sets up the naming scheme for TeX primitives.
-\generate{\file{l3names.sty}{\from{l3names.dtx}{package}}}
-
-
-
-% Define some basic commands to get us started with the new
-% programming style.
-\generate{\file{l3basics.sty}{\from{l3basics.dtx}{package,trace}}}
-
-
-% Define some basic commands that check various conditions
-% related to defining commands eg defined/undefined global/local
-% Not sure how much of this really makes sense as a package, but...
-\generate{\file{l3chk.sty}{\from{l3chk.dtx}{package,trace}}}
-
-
-%% toks register handling (can be compiled with check module)
-\generate{\file{l3toks.sty}{\from{l3toks.dtx}{package,trace}}}
-
-
-%% token lists
-\generate{\file{l3tl.sty}{\from{l3tl.dtx}{package,trace}}}
-
-
-%% LaTeX3 expansion module
-\generate{\file{l3expan.sty}{\from{l3expan.dtx}{package,trace}}}
-
-
-%% LaTeX3 quarks.
-\generate{\file{l3quark.sty}{\from{l3quark.dtx}{package,trace}}}
-
-
-%% LaTeX3 sequences.
-\generate{\file{l3seq.sty}{\from{l3seq.dtx}{package,trace}}}
-
-
-%% LaTeX3 clists.
-\generate{\file{l3clist.sty}{\from{l3clist.dtx}{package,trace}}}
-
-
-%% LaTeX3 property lists.
-\generate{\file{l3prop.sty}{\from{l3prop.dtx}{package,trace}}}
-
-
-%% LaTeX3 integer registers. (can be compiled with check module)
-\generate{\file{l3int.sty}{\from{l3int.dtx}{package,trace}}}
-
-
-%% LaTeX3 fake integer macros.
-\generate{\file{l3num.sty}{\from{l3num.dtx}{package,trace}}}
-
-%% LaTeX3 integer expressions.
-\generate{\file{l3intexpr.sty}{\from{l3intexpr.dtx}{package,trace}}}
-
-
-%% LaTeX3 skip registers.
-\generate{\file{l3skip.sty}{\from{l3skip.dtx}{package,trace}}}
-
-
-%% LaTeX3 precompilation
-\generate{\file{l3precom.sty}{\from{l3precom.dtx}{package,precompile,trace}}}
-
-%% LaTeX3 I/O module.
-\generate{\file{l3io.sty}{\from{l3io.dtx}{package,trace}}}
-
-%% LaTeX3 program control structures (loops, booleans, ...)
-\generate{\file{l3prg.sty}{\from{l3prg.dtx}{package}}}
-
-%% LaTeX3 box module
-\generate{\file{l3box.sty}{\from{l3box.dtx}{package}}}
-
-%% LaTeX3 messages
-\generate{\file{l3msg.sty}{\from{l3msg.dtx}{package}}}
-
-%% LaTeX3 tokens
-\generate{\file{l3token.sty}{\from{l3token.dtx}{package}}}
-
-%% LaTeX3 cross references
-\generate{\file{l3xref.sty}{\from{l3xref.dtx}{package}}}
-%%\generate{\file{l3xref-test.tex}{\from{l3xref.dtx}{testfile}}}
-
-%% LaTeX3 calc module
-\generate{\file{l3calc.sty}{\from{l3calc.dtx}{package}}}
-
-%% LaTeX3 keyval modules
-\generate{\file{l3keyval.sty}{\from{l3keyval.dtx}{package}}}
-\generate{\file{l3keys.sty}{\from{l3keys.dtx}{package}}}
-
-%% LaTeX3 file loading
-\generate{\file{l3file.sty}{\from{l3file.dtx}{package}}}
-
-
-\endbatchfile
+
+\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
+
+% wrapper package for the expl3 bundle
+\generate{\file{expl3.sty}{\from{expl3.dtx}{package}}}
+
+
+% l3names.sty sets up the naming scheme for TeX primitives.
+\generate{\file{l3names.sty}{\from{l3names.dtx}{package}}}
+
+
+
+% Define some basic commands to get us started with the new
+% programming style.
+\generate{\file{l3basics.sty}{\from{l3basics.dtx}{package,trace}}}
+
+
+% Define some basic commands that check various conditions
+% related to defining commands eg defined/undefined global/local
+% Not sure how much of this really makes sense as a package, but...
+\generate{\file{l3chk.sty}{\from{l3chk.dtx}{package,trace}}}
+
+
+%% toks register handling (can be compiled with check module)
+\generate{\file{l3toks.sty}{\from{l3toks.dtx}{package,trace}}}
+
+
+%% token lists
+\generate{\file{l3tl.sty}{\from{l3tl.dtx}{package,trace}}}
+
+
+%% LaTeX3 expansion module
+\generate{\file{l3expan.sty}{\from{l3expan.dtx}{package,trace}}}
+
+
+%% LaTeX3 quarks.
+\generate{\file{l3quark.sty}{\from{l3quark.dtx}{package,trace}}}
+
+
+%% LaTeX3 sequences.
+\generate{\file{l3seq.sty}{\from{l3seq.dtx}{package,trace}}}
+
+
+%% LaTeX3 clists.
+\generate{\file{l3clist.sty}{\from{l3clist.dtx}{package,trace}}}
+
+
+%% LaTeX3 property lists.
+\generate{\file{l3prop.sty}{\from{l3prop.dtx}{package,trace}}}
+
+
+%% LaTeX3 integer registers. (can be compiled with check module)
+\generate{\file{l3int.sty}{\from{l3int.dtx}{package,trace}}}
+
+
+%% LaTeX3 fake integer macros.
+\generate{\file{l3num.sty}{\from{l3num.dtx}{package,trace}}}
+
+%% LaTeX3 integer expressions.
+\generate{\file{l3intexpr.sty}{\from{l3intexpr.dtx}{package,trace}}}
+
+
+%% LaTeX3 skip registers.
+\generate{\file{l3skip.sty}{\from{l3skip.dtx}{package,trace}}}
+
+
+%% LaTeX3 precompilation
+\generate{\file{l3precom.sty}{\from{l3precom.dtx}{package,precompile,trace}}}
+
+%% LaTeX3 I/O module.
+\generate{\file{l3io.sty}{\from{l3io.dtx}{package,trace}}}
+
+%% LaTeX3 program control structures (loops, booleans, ...)
+\generate{\file{l3prg.sty}{\from{l3prg.dtx}{package}}}
+
+%% LaTeX3 box module
+\generate{\file{l3box.sty}{\from{l3box.dtx}{package}}}
+
+%% LaTeX3 messages
+\generate{\file{l3msg.sty}{\from{l3msg.dtx}{package}}}
+
+%% LaTeX3 tokens
+\generate{\file{l3token.sty}{\from{l3token.dtx}{package}}}
+
+%% LaTeX3 cross references
+\generate{\file{l3xref.sty}{\from{l3xref.dtx}{package}}}
+%%\generate{\file{l3xref-test.tex}{\from{l3xref.dtx}{testfile}}}
+
+%% LaTeX3 calc module
+\generate{\file{l3calc.sty}{\from{l3calc.dtx}{package}}}
+
+%% LaTeX3 keyval modules
+\generate{\file{l3keyval.sty}{\from{l3keyval.dtx}{package}}}
+\generate{\file{l3keys.sty}{\from{l3keys.dtx}{package}}}
+
+%% LaTeX3 file loading
+\generate{\file{l3file.sty}{\from{l3file.dtx}{package}}}
+
+
+\endbatchfile
diff --git a/Master/texmf-dist/source/latex/expl3/l3basics.dtx b/Master/texmf-dist/source/latex/expl3/l3basics.dtx
index 3604d0f2244..56132002658 100644
--- a/Master/texmf-dist/source/latex/expl3/l3basics.dtx
+++ b/Master/texmf-dist/source/latex/expl3/l3basics.dtx
@@ -35,7 +35,7 @@
\RequirePackage{l3names}
%</driver|package>
%\fi
-\GetIdInfo$Id: l3basics.dtx 1414 2009-06-16 07:34:57Z joseph $
+\GetIdInfo$Id: l3basics.dtx 1453 2009-08-08 14:38:49Z joseph $
{L3 Experimental basic definitions}
%\iffalse
%<*driver>
@@ -1750,12 +1750,18 @@
%
% \subsection{Expansion control from l3expan}
%
+%\ExplSyntaxOn
+% \cs_set_eq:NN \g_saved_doc_macros_seq \g_doc_macros_seq
+%\ExplSyntaxOff
% \begin{macro}{\exp_args:Nc}
% Moved here for now as it is going to be used right away.
% \begin{macrocode}
\cs_set:Npn \exp_args:Nc #1#2{\exp_after:wN#1\cs:w#2\cs_end:}
% \end{macrocode}
% \end{macro}
+%\ExplSyntaxOn
+% \cs_set_eq:NN \g_doc_macros_seq \g_saved_doc_macros_seq
+%\ExplSyntaxOff
%
% \subsection{Conditional processing and definitions}
%
@@ -1775,6 +1781,10 @@
% obscures the code and forces the \TeX\ programmer to prove that
% he/she knows the $2^{n}-1$ table. We therefore provide the simpler
% interface.
+%
+%\ExplSyntaxOn
+% \cs_set_eq:NN \g_saved_doc_macros_seq \g_doc_macros_seq
+%\ExplSyntaxOff
%
% \begin{macro}{\prg_return_true:}
% \begin{macro}{\prg_return_false:}
@@ -1875,6 +1885,22 @@
}
% \end{macrocode}
% \end{macro}
+%
+% \begin{macro}{\prg_set_eq_conditional:NNn,\prg_new_eq_conditional:NNn}
+% The obvious setting-equal functions.
+% \begin{macrocode}
+\cs_set:Npn \prg_set_eq_conditional:NNn #1#2#3 {
+ \prg_set_eq_conditional_aux:NNNn \cs_set_eq:cc #1#2 {#3}
+}
+\cs_set: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}
+%
+%\ExplSyntaxOn
+% \cs_set_eq:NN \g_doc_macros_seq \g_saved_doc_macros_seq
+%\ExplSyntaxOff
%
% \begin{macro}[aux]{\prg_get_parm_aux:nw,\prg_get_count_aux:nn}
% For the "Npnn" type we must grab the parameter text before
@@ -1984,6 +2010,35 @@
}
% \end{macrocode}
% \end{macro}
+%
+% \begin{macro}[aux]{\prg_set_eq_conditional_aux:NNNn,
+% \prg_set_eq_conditional_aux:NNNw}
+% \begin{macrocode}
+\cs_set: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}
+\cs_set:Npn \prg_set_eq_conditional_aux:NNNw #1#2#3#4, {
+ \if:w ? #4 \scan_stop:
+ \exp_after:wN \use_none_delimit_by_q_recursion_stop:w
+ \fi:
+ #1 {
+ \exp_args:NNc \cs_split_function:NN #2 {prg_conditional_form_#4:nnn}
+ }{
+ \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:#2TF}
+\cs_set:Npn \prg_conditional_form_T:nnn #1#2#3 {#1:#2T}
+\cs_set:Npn \prg_conditional_form_F:nnn #1#2#3 {#1:#2F}
+% \end{macrocode}
+% \end{macro}
%
% All that is left is to define the canonical boolean true and false.
% I think Michael originated the idea of expandable boolean tests. At
@@ -3226,55 +3281,6 @@
% \end{macro}
% \end{macro}
%
-% Finally some code that is needed as we do not distribute the file
-% module at the moment (so we simply define the needed function via an
-% existing \LaTeX{} command) and some other stuff which was set up
-% elsewhere, in undistributed modules.
-% \begin{macrocode}
-\cs_new_nopar:Npn\file_not_found:nTF #1#2#3{\IfFileExists{#1}{#3}{#2}}
-% \end{macrocode}
-%
-%
-%
-% \begin{macro}{\prg_set_eq_conditional:NNn,\prg_new_eq_conditional:NNn}
-% \begin{macrocode}
-\cs_set:Npn \prg_set_eq_conditional:NNn #1#2#3 {
- \prg_set_eq_conditional_aux:NNNn \cs_set_eq:cc #1#2 {#3}
-}
-\cs_set:Npn \prg_new_eq_conditional:NNn #1#2#3 {
- \prg_set_eq_conditional_aux:NNNn \cs_new_eq:cc #1#2 {#3}
-}
-% \end{macrocode}
-% \begin{macro}[aux]{\prg_set_eq_conditional_aux:NNNn,
-% \prg_set_eq_conditional_aux:NNNw}
-% \begin{macrocode}
-\cs_set: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}
-\cs_set:Npn \prg_set_eq_conditional_aux:NNNw #1#2#3#4, {
- \if:w ? #4 \scan_stop:
- \exp_after:wN \use_none_delimit_by_q_recursion_stop:w
- \fi:
- #1 {
- \exp_args:NNc \cs_split_function:NN #2 {prg_conditional_form_#4:nnn}
- }{
- \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:#2TF}
-\cs_set:Npn \prg_conditional_form_T:nnn #1#2#3 {#1:#2T}
-\cs_set:Npn \prg_conditional_form_F:nnn #1#2#3 {#1:#2F}
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
% \begin{macrocode}
%</initex|package>
% \end{macrocode}
diff --git a/Master/texmf-dist/source/latex/expl3/l3doc.dtx b/Master/texmf-dist/source/latex/expl3/l3doc.dtx
index d9674ee724e..e3802a53c91 100644
--- a/Master/texmf-dist/source/latex/expl3/l3doc.dtx
+++ b/Master/texmf-dist/source/latex/expl3/l3doc.dtx
@@ -77,7 +77,7 @@ Do not distribute a modified version of this file.
% \end{macrocode}
%
%<*driver|class>
-\GetIdInfo$Id: l3doc.dtx 1398 2009-06-08 15:53:26Z joseph $
+\GetIdInfo$Id: l3doc.dtx 1451 2009-08-08 06:33:34Z joseph $
{L3 Experimental documentation class}
%</driver|class>
%
@@ -629,7 +629,6 @@ Do not distribute a modified version of this file.
\group_begin:
\MakePrivateLetters
\char_make_other:N \|
- \char_make_other:N \^
\char_make_other:N \\
\char_make_space:N \~
\char_make_ignore:N \ % space
@@ -1599,11 +1598,6 @@ page_precedence "rnaA"
% \begin{macro}[TF]{ \foo_if:c }
% Testing.
% \end{macro}
-%
-%\ExplSyntaxOn
-%\cs_set_eq:NN\g_doc_functions_seq\g_saved_doc_functions_seq
-%\cs_set_eq:NN\g_doc_macros_seq\g_saved_doc_macros_seq
-%\ExplSyntaxOff
%
% \bigskip\bigskip
%
@@ -1654,6 +1648,11 @@ page_precedence "rnaA"
% \end{macro}
% \end{macro}
% \end{macro}
+%
+%\ExplSyntaxOn
+%\cs_set_eq:NN\g_doc_functions_seq\g_saved_doc_functions_seq
+%\cs_set_eq:NN\g_doc_macros_seq\g_saved_doc_macros_seq
+%\ExplSyntaxOff
%
%
% \subsection{Macros}
diff --git a/Master/texmf-dist/source/latex/expl3/l3expan.dtx b/Master/texmf-dist/source/latex/expl3/l3expan.dtx
index e0d0da73d38..a3f116a47a1 100644
--- a/Master/texmf-dist/source/latex/expl3/l3expan.dtx
+++ b/Master/texmf-dist/source/latex/expl3/l3expan.dtx
@@ -36,7 +36,7 @@
\RequirePackage{l3names}
%</driver|package>
%\fi
-\GetIdInfo$Id: l3expan.dtx 1418 2009-07-04 08:24:17Z joseph $
+\GetIdInfo$Id: l3expan.dtx 1464 2009-08-16 11:02:19Z joseph $
{L3 Experimental Argument Expansion module}
%\iffalse
%<*driver>
@@ -313,6 +313,7 @@
% \exp_args:NNV / (EXP) |
% \exp_args:NNf / (EXP) |
% \exp_args:Nno / (EXP) |
+% \exp_args:NnV / (EXP) |
% \exp_args:Nnf / (EXP) |
% \exp_args:Noo / (EXP) |
% \exp_args:Noc / (EXP) |
@@ -492,6 +493,15 @@
% one of two things: A parameter-less non-long, non-protected macro
% or a built-in \TeX\ register such as |\count|.
% \end{function}
+%
+% \begin{function}{\exp_eval_error_msg:w}
+% \begin{syntax}
+% "\exp_eval_error_msg:w" <register>
+% \end{syntax}
+% Used to generate an error message if a variable called as part of a
+% "v" or "V" expansion is defined as \cs{scan_stop:}. This typically
+% indicates that an incorrect cs name has been used.
+% \end{function}
%
% \begin{function}{\::n|\::N|\::c|\::o|\::f|\::x|\::v|\::V|\:::}
% \begin{syntax}
@@ -848,7 +858,7 @@
% \exp_args:Ncx,
% \exp_args:Nfo,\exp_args:Nff,
% \exp_args:Ncf,\exp_args:Nco,
-% \exp_args:Nnf,\exp_args:Nno,\exp_args:Nnx,
+% \exp_args:Nnf,\exp_args:Nno,\exp_args:NnV,\exp_args:Nnx,
% \exp_args:Noo,\exp_args:Noc,\exp_args:Nox,
% \exp_args:Nxo,\exp_args:Nxx}
% Here are the actual function definitions, using the helper functions
@@ -865,6 +875,7 @@
\cs_set_nopar:Npn \exp_args:Ncf {\::c\::f\:::}
\cs_set_nopar:Npn \exp_args:Nnf {\::n\::f\:::}
\cs_set_nopar:Npn \exp_args:Nno {\::n\::o\:::}
+\cs_set_nopar:Npn \exp_args:NnV {\::n\::V\:::}
\cs_set_nopar:Npn \exp_args:Nnx {\::n\::x\:::}
\cs_set_nopar:Npn \exp_args:Noc {\::o\::c\:::}
diff --git a/Master/texmf-dist/source/latex/expl3/l3final.dtx b/Master/texmf-dist/source/latex/expl3/l3final.dtx
index 65da64c7f7f..d4ece607fee 100644
--- a/Master/texmf-dist/source/latex/expl3/l3final.dtx
+++ b/Master/texmf-dist/source/latex/expl3/l3final.dtx
@@ -37,7 +37,7 @@
%</driver|package>
%<*-ini>
%\fi
-\GetIdInfo$Id: l3final.dtx 1362 2009-05-28 20:19:21Z joseph $
+\GetIdInfo$Id: l3final.dtx 1452 2009-08-08 14:09:32Z joseph $
{L3 Experimental final module}
%\iffalse
%</-ini>
@@ -53,28 +53,72 @@
%</driver>
%\fi
%
-% \section{Final Wrap-up}
+%\section{Final Wrap-up}
%
-% This module will contain all the last minute coding necessary to
-% round off the format.
+% This module will contain all the last minute coding necessary to round
+% off the format.
+%
+%\begin{function}{\par}
+% \begin{syntax}
+% "\par"
+% \end{syntax}
+% \cs{par} needs to be defined, as \TeX\ uses it in some runaway
+% situtations.
+%\end{function}
+%
+%\begin{function}{\latex_format_dump:}
+% \begin{syntax}
+% "\latex_format_dump:"
+% \end{syntax}
+% Dumps the format, settting category codes back to user space and
+% undefines itself (as it can only every be used once).
+%\end{function}
%
-% \subsection{Cleaning up}
-%
-% Some of the macros needed in creating the format are no longer
-% needed and will either be removed are modified to generate error
-% messages.
+%\subsection{Dumping the format}
%
+%\begin{macro}{\par}
+% \TeX\ has a nasty habit of inserting a command with the name \cs{par}
+% so we had better make sure that that command at least has a definition.
% \begin{macrocode}
%<*initex>
+\cs_set_eq:NN \par \tex_par:D
% \end{macrocode}
+%\end{macro}
%
-% \subsection{Dumping the format}
-%
-% The last action to take is to dump the format.
+%\begin{macro}{\ExplSyntaxOff}
+% We re-define \cs{ExplSyntaxOff} as the version that comes through
+% from \pkg{l3names} is defined using \TeX\ primitives, which we no
+% longer have! Here, we can also make a fixed decision about the
+% category codes to fix.
% \begin{macrocode}
-\tex_dump:D
+%<*initex>
+\cs_set_nopar:Npn \ExplSyntaxOff {
+ \intexpr_if_odd:nT { \ExplSyntaxStatus } {
+ \tl_set:Nn \ExplSyntaxStatus { 0 }
+ \char_set_catcode:nn { 126 } { 13 }
+ \char_set_catcode:nn { 32 } { 10 }
+ \char_set_catcode:nn { 9 } { 10 }
+ \char_set_catcode:nn { 95 } { 8 }
+ \char_set_catcode:nn { 58 } { 12 }
+ \tex_endlinechar:D = 13 \scan_stop:
+ }
+}
% \end{macrocode}
+%\end{macro}
%
+%\begin{macro}{\latex_format_dump:}
+% The last action to take is to dump the format. So that the document
+% starts with user category codes, \cs{ExplSyntaxOff} is called along
+% with tokenizing \cs{tex_dump:D} before actually calling it.
% \begin{macrocode}
+\cs_new_nopar:Nn \latex_format_dump: {
+ \ExplSyntaxOff
+ \cs_gundefine:N \latex_format_dump:
+ \tex_dump:D
+}
+\latex_format_dump:
%</initex>
% \end{macrocode}
+%\end{macro}
+%
+%\endinput
diff --git a/Master/texmf-dist/source/latex/expl3/l3format.ins b/Master/texmf-dist/source/latex/expl3/l3format.ins
index f42ea71724d..3a850a79ef7 100644
--- a/Master/texmf-dist/source/latex/expl3/l3format.ins
+++ b/Master/texmf-dist/source/latex/expl3/l3format.ins
@@ -1,75 +1,76 @@
-
-\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 the format file
-\generate{%
- \file{lbase.ltx}{%
- \from{l3names.dtx}{initex} % The naming conventions
- \from{l3basics.dtx}{initex} % Initialisations
- \from{l3expan.dtx}{initex} % Controlling expansion of arguments
- \from{l3tl.dtx}{initex} % token list variables
- \from{l3num.dtx}{initex} % Storing integers in macros
- \from{l3intexpr.dtx}{initex} %
- \from{l3quark.dtx}{initex} % quarks
- \from{l3seq.dtx}{initex} % Sequences and stacks
-%
- \from{l3alloc.dtx}{initex} % Register allocations
-%
- \from{l3toks.dtx}{initex} % dealing with token registers
- \from{l3int.dtx}{initex} % dealing with integer registers
- \from{l3prg.dtx}{initex} % Program control structures
- \from{l3clist.dtx}{initex} % Comma separated lists
- \from{l3token.dtx}{initex} % token investigation
- \from{l3io.dtx}{initex} % dealing with I/O
- \from{l3prop.dtx}{initex} % property lists
- \from{l3msg.dtx}{initex} % setting up for user communication
- \from{l3skip.dtx}{initex} % dealing with skip registers
- \from{l3box.dtx}{initex} % dealing with box registers
- \from{l3keyval.dtx}{initex} %
-%
-% \from{l3precom.dtx}{initex,precompile} %
-%
- \from{l3calc.dtx}{initex} %
- \from{l3xref.dtx}{initex} % Cross references
- \from{l3file.dtx}{initex} % file loading
-%
- \from{l3vers.dtx}{initex} % Version information
-%
-%
-% \from{l3chk.dtx}{initex} % Checking functions
-%
- \from{l3final.dtx}{initex} % Final wrap-up
- }
-}
-
-\Msg{}
-\Msg{*************************************}
-\Msg{*}
-\Msg{* Now run (PDF)INITEX on lbase.ltx}
-\Msg{*}
-\Msg{* On an up to date system, run }
-\Msg{* pdftex -ini *lbase.ltx }
-\Msg{*}
-\Msg{*************************************}
-\Msg{}
-
-\endbatchfile
+
+\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 the format file
+\generate{%
+ \file{latex3.ltx}{%
+ \from{l3names.dtx}{initex} % The naming conventions
+ \from{l3basics.dtx}{initex} % Initialisations
+ \from{l3expan.dtx}{initex} % Controlling expansion of arguments
+ \from{l3tl.dtx}{initex} % token list variables
+ \from{l3num.dtx}{initex} % Storing integers in macros
+ \from{l3intexpr.dtx}{initex} %
+ \from{l3quark.dtx}{initex} % quarks
+ \from{l3seq.dtx}{initex} % Sequences and stacks
+%
+ \from{l3alloc.dtx}{initex} % Register allocations
+%
+ \from{l3toks.dtx}{initex} % dealing with token registers
+ \from{l3int.dtx}{initex} % dealing with integer registers
+ \from{l3prg.dtx}{initex} % Program control structures
+ \from{l3clist.dtx}{initex} % Comma separated lists
+ \from{l3token.dtx}{initex} % token investigation
+ \from{l3io.dtx}{initex} % dealing with I/O
+ \from{l3prop.dtx}{initex} % property lists
+ \from{l3msg.dtx}{initex} % setting up for user communication
+ \from{l3skip.dtx}{initex} % dealing with skip registers
+ \from{l3box.dtx}{initex} % dealing with box registers
+ \from{l3keyval.dtx}{initex} %
+ \from{l3keys.dtx}{initex} %
+%
+% \from{l3precom.dtx}{initex,precompile} %
+%
+ \from{l3calc.dtx}{initex} %
+ \from{l3xref.dtx}{initex} % Cross references
+ \from{l3file.dtx}{initex} % file loading
+%
+ \from{l3vers.dtx}{initex} % Version information
+%
+%
+% \from{l3chk.dtx}{initex} % Checking functions
+%
+ \from{l3final.dtx}{initex} % Final wrap-up
+ }
+}
+
+\Msg{}
+\Msg{*************************************}
+\Msg{*}
+\Msg{* Now run (PDF)INITEX on lbase.ltx}
+\Msg{*}
+\Msg{* On an up to date system, run }
+\Msg{* pdftex -ini -etex *latex3.ltx }
+\Msg{*}
+\Msg{*************************************}
+\Msg{}
+
+\endbatchfile
diff --git a/Master/texmf-dist/source/latex/expl3/l3intexpr.dtx b/Master/texmf-dist/source/latex/expl3/l3intexpr.dtx
index 6b454a8ab80..25c95f8356a 100644
--- a/Master/texmf-dist/source/latex/expl3/l3intexpr.dtx
+++ b/Master/texmf-dist/source/latex/expl3/l3intexpr.dtx
@@ -270,7 +270,10 @@
% \end{texnote}
% \end{function}
%
-%
+%^^A Keep the documenation-checking happy
+%\ExplSyntaxOn
+%\seq_gput_right:Nx \g_doc_macros_seq { \token_to_str:N \or: }
+%\ExplSyntaxOff
%
% \begin{function}{%
% \intexpr_while_do:nn |
@@ -438,17 +441,16 @@
\prg_return_true: \else: \prg_return_false: \fi:
}
% \end{macrocode}
-% For the less than or equal operation, we simply add $1$ to the right
-% hand side and then use a less than test. A similar trick for the
-% greater than or equal test except there we subtract $1$.
+% The less than or equal operation is just the opposite of the greater
+% than operation. Vice versa for less than or equal.
% \begin{macrocode}
\cs_set:cpn {intexpr_compare_<=:w} #1<=#2\q_nil{
- \if_intexpr_compare:w #1<\intexpr_eval:w #2 +\c_one \intexpr_eval_end:
- \prg_return_true: \else: \prg_return_false: \fi:
+ \if_intexpr_compare:w #1>\intexpr_eval:w #2 \intexpr_eval_end:
+ \prg_return_false: \else: \prg_return_true: \fi:
}
\cs_set:cpn {intexpr_compare_>=:w} #1>=#2\q_nil{
- \if_intexpr_compare:w #1>\intexpr_eval:w #2 - \c_one \intexpr_eval_end:
- \prg_return_true: \else: \prg_return_false: \fi:
+ \if_intexpr_compare:w #1<\intexpr_eval:w #2 \intexpr_eval_end:
+ \prg_return_false: \else: \prg_return_true: \fi:
}
% \end{macrocode}
% \end{macro}
@@ -459,7 +461,8 @@
% More efficient but less natural in typing.
% \begin{macrocode}
\prg_set_conditional:Npnn \intexpr_compare:nNn #1#2#3{p,TF,T,F}{
- \if_intexpr_compare:w \intexpr_eval:w #1 #2 \intexpr_eval:w #3 \intexpr_eval_end:
+ \if_intexpr_compare:w \intexpr_eval:w #1 #2 \intexpr_eval:w #3
+ \intexpr_eval_end:
\prg_return_true: \else: \prg_return_false: \fi:
}
% \end{macrocode}
diff --git a/Master/texmf-dist/source/latex/expl3/l3keys.dtx b/Master/texmf-dist/source/latex/expl3/l3keys.dtx
index e606f91f0a1..2940e7a7842 100644
--- a/Master/texmf-dist/source/latex/expl3/l3keys.dtx
+++ b/Master/texmf-dist/source/latex/expl3/l3keys.dtx
@@ -35,7 +35,7 @@
\RequirePackage{l3names}
%</driver|package>
%\fi
-\GetIdInfo$Id: l3keys.dtx 1441 2009-08-05 19:23:23Z joseph $
+\GetIdInfo$Id: l3keys.dtx 1504 2009-09-03 20:29:00Z joseph $
{L3 Experimental key-value support}
%\iffalse
%<*driver>
@@ -152,7 +152,7 @@
%
%\begin{function}{\keys_define:nn}
% \begin{syntax}
-% "\keys_define:nn" <module> <keyval list>
+% "\keys_define:nn" \Arg{module} \Arg{keyval list}
% \end{syntax}
% Parses the <keyval list> and defines the keys listed there for
% <module>. This function is designed for use in code, and therefore
@@ -271,10 +271,13 @@
% <key> .initial:n = <initial>
% \end{syntax}
% Sets <key> using the <initial> value given. This can only be given
-% after the<key> is created.
+% after the <key> is created.
%\end{function}
%
-%\begin{function}{.meta:n}
+%\begin{function}{
+% .meta:n|
+% .meta:x
+%}
% \begin{syntax}
% <key> .meta:n = <keys>
% \end{syntax}
@@ -414,7 +417,7 @@
% \keys_set:nv
%}
% \begin{syntax}
-% "\keys_set:nn" <module> <keyval list>
+% "\keys_set:nn" \Arg{module} \Arg{keyval list}
% \end{syntax}
% Parses the <keyval list>, and sets those keys which are defined
% for <module>. The behaviour on finding an unknown key can be
@@ -443,9 +446,18 @@
%
%\subsection{Examining keys: internal representation}
%
+%\begin{function}{\keys_if_exist:nn / (TF)}
+% \begin{syntax}
+% "\keys_if_exist:nnTF" \Arg{module} \Arg{key} \Arg{true code}
+% ~~~~\Arg{false code}
+% \end{syntax}
+% Tests if <key> exists for <module>, by checking for the existence
+% of the internal function \cs{keys > <module>/<key>.cmd:w}.
+%\end{function}
+%
%\begin{function}{\keys_show:nn}
% \begin{syntax}
-% "\keys_show:nn" <module> <key>
+% "\keys_show:nn" \Arg{module} \Arg{key}
% \end{syntax}
% Shows the internal representation of a <key>. The function which
% executes a <key> is called \cs{keys > <module>/<key>.cmd:w}.
@@ -480,14 +492,14 @@
%
%\begin{function}{\keys_choices_generate:nx}
% \begin{syntax}
-% "\keys_choices_generate:nx" <comma list> <code>
+% "\keys_choices_generate:nx" \Arg{comma list} \Arg{code}
% \end{syntax}
% Makes <comma list> choices for <key>, each using <code>.
%\end{function}
%
%\begin{function}{\keys_choice_find:n}
% \begin{syntax}
-% "\keys_choice_find:n" <choice>
+% "\keys_choice_find:n" \Arg{choice}
% \end{syntax}
% Searches for <choice> as a sub-key of <key>.
%\end{function}
@@ -497,7 +509,7 @@
% \keys_cmd_set:nNx
%}
% \begin{syntax}
-% "\keys_cmd_set:nNn" <path> <num args> <code>
+% "\keys_cmd_set:nNn" \Arg{path} <num args> \Arg{code}
% \end{syntax}
% Creates a function for <path>, taking <num args> and using <code>.
%\end{function}
@@ -507,7 +519,7 @@
% \keys_default_set:V
%}
% \begin{syntax}
-% "\keys_default_set:n" <default>
+% "\keys_default_set:n" \Arg{default}
% \end{syntax}
% Sets <default> for <key>.
%\end{function}
@@ -517,14 +529,14 @@
% \keys_define_elt:nn
%}
% \begin{syntax}
-% "\keys_define_elt:n" <key> <value>
+% "\keys_define_elt:nn" \Arg{key} \Arg{value}
% \end{syntax}
% Processing functions for key--value pairs when defining keys.
%\end{function}
%
%\begin{function}{\keys_define_key:n}
% \begin{syntax}
-% "\keys_define_key:n" <key>
+% "\keys_define_key:n" \Arg{key}
% \end{syntax}
% Defines <key>.
%\end{function}
@@ -545,8 +557,8 @@
%
%\begin{function}{\keys_if_value_requirement:nTF}
% \begin{syntax}
-% "\keys_if_value_requirement:nTF" <requirement>
-% ~~~~<true code> <false code>
+% "\keys_if_value_requirement:nTF" \Arg{requirement}
+% ~~~~\Arg{true code} \Arg{false code}
% \end{syntax}
% Check if <requirement> applies to <key>.
%\end{function}
@@ -556,35 +568,38 @@
% \keys_initial_value:V
%}
% \begin{syntax}
-% "\keys_initial_value:n" <value>
+% "\keys_initial_value:n" \Arg{value}
% \end{syntax}
% Sets <value> as initial contents for <key>.
%\end{function}
%
-%\begin{function}{\keys_meta_make:n}
+%\begin{function}{
+% \keys_meta_make:n|
+% \keys_meta_make:x
+%}
% \begin{syntax}
-% "\keys_meta_make:n" <keys>
+% "\keys_meta_make:n" \Arg{keys}
% \end{syntax}
% Makes <key> a meta-key to set <keys>.
%\end{function}
%
%\begin{function}{\keys_property_find:n}
% \begin{syntax}
-% "\keys_property_find:n" <key>
+% "\keys_property_find:n" \Arg{key}
% \end{syntax}
% Separates <key> from <property>.
%\end{function}
%
%\begin{function}{\keys_property_new:nn}
% \begin{syntax}
-% "\keys_property_new:nn" <property> <code>
+% "\keys_property_new:nn" \Arg{property} \Arg{code}
% \end{syntax}
% Makes a new <property> expanding to <code>
%\end{function}
%
%\begin{function}{\keys_property_undefine:n}
% \begin{syntax}
-% "\keys_property_undefine:n" <property>
+% "\keys_property_undefine:n" \Arg{property}
% \end{syntax}
% Deletes <property> of <key>.
%\end{function}
@@ -594,7 +609,7 @@
% \keys_set_elt:nn
%}
% \begin{syntax}
-% "\keys_set_elt:n" <key> <value>
+% "\keys_set_elt:nn" \Arg{key} \Arg{value}
% \end{syntax}
% Processing functions for key--value pairs when setting keys.
%\end{function}
@@ -608,7 +623,7 @@
%
%\begin{function}{\keys_value_or_default:n}
% \begin{syntax}
-% "\keys_value_or_default:n" <value>
+% "\keys_value_or_default:n" \Arg{value}
% \end{syntax}
% Sets \cs{l_keys_value_toks} to <value>, or <default> if
% <value> was not given and if <default> is available.
@@ -616,7 +631,7 @@
%
%\begin{function}{\keys_value_requirement:n}
% \begin{syntax}
-% "\keys_value_requirement:nn" <requirement>
+% "\keys_value_requirement:n" \Arg{requirement}
% \end{syntax}
% Sets <key> to have <requirement> concerning <value>.
%\end{function}
@@ -1047,6 +1062,20 @@
%\end{macro}
%\end{macro}
%
+%\begin{macro}[TF]{\keys_if_exist:nn}
+% A check for the existance of a key. This works by looking for the
+% command function for the key (which ends \texttt{.cmd:w}).
+% \begin{macrocode}
+\prg_set_conditional:Nnn \keys_if_exist:nn {TF,T,F} {
+ \cs_if_exist:cTF { \c_keys_root_tl #1 / #2 .cmd:w } {
+ \prg_return_true:
+ }{
+ \prg_return_false:
+ }
+}
+% \end{macrocode}
+%\end{macro}
+%
%\begin{macro}{\keys_if_value_requirement:nTF}
% To test if a value is required or forbidden. Only one version is
% needed, so done by hand.
@@ -1076,6 +1105,7 @@
%\end{macro}
%
%\begin{macro}{\keys_meta_make:n}
+%\begin{macro}{\keys_meta_make:x}
% To create a met-key, simply set up to pass data through.
% \begin{macrocode}
\cs_new_nopar:Nn \keys_meta_make:n {
@@ -1083,8 +1113,10 @@
\exp_not:N \keys_set:nn { \l_keys_module_tl } {#1}
}
}
+\cs_generate_variant:Nn \keys_meta_make:n { x }
% \end{macrocode}
%\end{macro}
+%\end{macro}
%
%\begin{macro}{\keys_property_find:n}
%\begin{macro}[aux]{\keys_property_find_aux:n}
@@ -1192,7 +1224,7 @@
\keys_value_or_default:n {#2}
\keys_if_value_requirement:nTF { required } {
\bool_if:NTF \l_keys_no_value_bool {
- \msg_kernel_error:nx { key~value~required } { \l_keys_path_tl }
+ \msg_kernel_error:nx { key-value-required } { \l_keys_path_tl }
}{
\keys_set_elt_aux:
}
@@ -1441,13 +1473,18 @@
%\end{macro}
%
%\begin{macro}{.meta:n}
+%\begin{macro}{.meta:x}
% Making a meta is handled internally.
% \begin{macrocode}
\keys_property_new:nn { .meta:n } {
\keys_meta_make:n {#1}
}
+\keys_property_new:nn { .meta:x } {
+ \keys_meta_make:x {#1}
+}
% \end{macrocode}
%\end{macro}
+%\end{macro}
%
%\begin{macro}{.set:N}
%\begin{macro}{.set_x:N}
@@ -1496,7 +1533,7 @@
The key `#1' cannot taken a value:\\%
the given input `#2' is being ignored.%
}
-\msg_kernel_new:nn { key~value~required } {%
+\msg_kernel_new:nn { key-value-required } {%
The key `#1' requires a value\\%
and is being ignored.%
}
diff --git a/Master/texmf-dist/source/latex/expl3/l3msg.dtx b/Master/texmf-dist/source/latex/expl3/l3msg.dtx
index b0a8b3891eb..a06612865a2 100644
--- a/Master/texmf-dist/source/latex/expl3/l3msg.dtx
+++ b/Master/texmf-dist/source/latex/expl3/l3msg.dtx
@@ -37,7 +37,7 @@
\RequirePackage{l3names}
%</driver|package>
%\fi
-\GetIdInfo$Id: l3msg.dtx 1423 2009-07-12 20:23:53Z joseph $
+\GetIdInfo$Id: l3msg.dtx 1502 2009-09-01 16:23:32Z joseph $
{L3 Experimental LaTeX Messages module}
%\iffalse
%<*driver>
@@ -584,9 +584,9 @@
%\begin{macro}{\c_msg_code_prefix_tl}
% Prefixes for storage areas.
% \begin{macrocode}
-\tl_new:Nn \c_msg_text_prefix_tl { msg_text // }
-\tl_new:Nn \c_msg_more_text_prefix_tl { msg_text_more // }
-\tl_new:Nn \c_msg_code_prefix_tl { msg_code // }
+\tl_new:Nn \c_msg_text_prefix_tl { msg_text ~>~ }
+\tl_new:Nn \c_msg_more_text_prefix_tl { msg_text_more ~>~ }
+\tl_new:Nn \c_msg_code_prefix_tl { msg_code ~>~ }
% \end{macrocode}
%\end{macro}
%\end{macro}
diff --git a/Master/texmf-dist/source/latex/expl3/l3names.dtx b/Master/texmf-dist/source/latex/expl3/l3names.dtx
index 26148a4e7a2..777ccace59d 100644
--- a/Master/texmf-dist/source/latex/expl3/l3names.dtx
+++ b/Master/texmf-dist/source/latex/expl3/l3names.dtx
@@ -37,7 +37,7 @@
\catcode`\{=1 % left brace is begin-group character
\catcode`\}=2 % right brace is end-group character
\catcode`\#=6 % hash mark is macro parameter character
-\catcode`\^=7 %
+\catcode`\^=7 % circumflex is superscript character
\catcode`\^^I=10 % ascii tab is a blank space
%</initex>
%<package>\begingroup
@@ -46,10 +46,10 @@
\begingroup
\def\GetIdInfoString{#1}%
\def\IdInfoStringUnexp{Id}%
- \ifx \GetIdInfoString \IdInfoStringUnexp
- \def\next{\endgroup\GetIdInfoMissing}
+ \ifx\GetIdInfoString\IdInfoStringUnexp
+ \def\next{\endgroup\GetIdInfoMissing}%
\else
- \def\next{\endgroup\GetIdInfoFull$#1$}
+ \def\next{\endgroup\GetIdInfoFull$#1$}%
\fi
\next
}
@@ -102,7 +102,7 @@
\RequirePackage{l3names}
%</driver>
%\fi
-\GetIdInfo$Id: l3names.dtx 1362 2009-05-28 20:19:21Z joseph $
+\GetIdInfo$Id: l3names.dtx 1452 2009-08-08 14:09:32Z joseph $
{L3 Experimental Naming Scheme for TeX Primitives}
%
%
@@ -326,17 +326,18 @@
%
% To get things started, give a new name for |\let|.
% \begin{macrocode}
-\let\tex_let:D\let
+\let \tex_let:D \let
%</initex|package>
% \end{macrocode}
%
% and now an internal function to possibly
-% remove the old name.
+% remove the old name: for the moment.
%
% \begin{macrocode}
%<*initex>
-\long\def\name_undefine:N#1{
- \tex_let:D#1\c_undefined}
+\long \def \name_undefine:N #1 {
+ \tex_let:D #1 \c_undefined
+}
%</initex>
% \end{macrocode}
%
@@ -365,10 +366,10 @@
% the old name.
% \begin{macrocode}
%<*initex|package>
-\long\def\name_primitive:NN#1#2{
+\long \def \name_primitive:NN #1#2 {
\tex_let:D #2 #1
\name_undefine:N #1
- }
+}
% \end{macrocode}
%
% \subsection{Reassignment of primitives}
@@ -939,10 +940,10 @@
% \end{itemize}
%
% \begin{macrocode}
-\tex_def:D\ExplSyntaxOn{
+\tex_def:D \ExplSyntaxOn {
\tex_ifodd:D \ExplSyntaxStatus \tex_relax:D
\tex_else:D
- \tex_edef:D\ExplSyntaxOff{
+ \tex_edef:D \ExplSyntaxOff {
\etex_unexpanded:D{
\tex_ifodd:D \ExplSyntaxStatus \tex_relax:D
\tex_def:D \ExplSyntaxStatus{0}
@@ -955,7 +956,7 @@
\tex_catcode:D 58=\tex_the:D \tex_catcode:D 58 \tex_relax:D
\tex_noexpand:D \tex_fi:D
}
- \tex_def:D\ExplSyntaxStatus{1}
+ \tex_def:D \ExplSyntaxStatus { 1 }
\tex_catcode:D 126=10 \tex_relax:D % tilde is a space char.
\tex_catcode:D 32=9 \tex_relax:D % space is ignored
\tex_catcode:D 9=9 \tex_relax:D % tab also ignored
@@ -967,7 +968,7 @@
% \end{macrocode}
% At this point we better set the status.
% \begin{macrocode}
-\tex_def:D\ExplSyntaxStatus{1}
+\tex_def:D \ExplSyntaxStatus { 1 }
% \end{macrocode}
% \end{macro}
% \end{macro}
@@ -979,11 +980,11 @@
% \LaTeX3 without adhering it's conventions according to space
% characters. These macros provide the necessary settings.
% \begin{macrocode}
-\tex_def:D \ExplSyntaxNamesOn{
+\tex_def:D \ExplSyntaxNamesOn {
\tex_catcode:D `\_=11\tex_relax:D
\tex_catcode:D `\:=11\tex_relax:D
}
-\tex_def:D \ExplSyntaxNamesOff{
+\tex_def:D \ExplSyntaxNamesOff {
\tex_catcode:D `\_=8\tex_relax:D
\tex_catcode:D `\:=12\tex_relax:D
}
@@ -1013,7 +1014,7 @@
% else svn and we extract information. To be on the safe side we
% ensure that spaces in the argument are seen.
% \begin{macrocode}
-\tex_def:D\GetIdInfo{
+\tex_def:D \GetIdInfo {
\tex_begingroup:D
\tex_catcode:D 32=10 \tex_relax:D % needed? Probably for now.
\GetIdInfoMaybeMissing:w
@@ -1110,7 +1111,7 @@
% as the packages in this distribution do like this:
% \begin{verbatim}
% \RequirePackage{l3names}
-% \GetIdInfo$Id: l3names.dtx 1362 2009-05-28 20:19:21Z joseph $
+% \GetIdInfo$Id: l3names.dtx 1452 2009-08-08 14:09:32Z joseph $
% {L3 Experimental Box module}
% \ProvidesExplPackage
% {\filename}{\filedate}{\fileversion}{\filedescription}
diff --git a/Master/texmf-dist/source/latex/expl3/l3num.dtx b/Master/texmf-dist/source/latex/expl3/l3num.dtx
index 51281eaf7ac..138acc0f3cf 100644
--- a/Master/texmf-dist/source/latex/expl3/l3num.dtx
+++ b/Master/texmf-dist/source/latex/expl3/l3num.dtx
@@ -36,7 +36,7 @@
\RequirePackage{l3names}
%</driver|package>
%\fi
-\GetIdInfo$Id: l3num.dtx 1362 2009-05-28 20:19:21Z joseph $
+\GetIdInfo$Id: l3num.dtx 1451 2009-08-08 06:33:34Z joseph $
{L3 Experimental token numbers}
%\iffalse
%<*driver>
@@ -271,6 +271,11 @@
% These are the \TeX{} primitives \tn{ifcase} and \tn{or}.
% \end{texnote}
% \end{function}
+%
+%^^A Keep the documenation-checking happy
+%\ExplSyntaxOn
+%\seq_gput_right:Nx \g_doc_macros_seq { \token_to_str:N \or: }
+%\ExplSyntaxOff
%
% \end{documentation}
%
diff --git a/Master/texmf-dist/source/latex/expl3/l3precom.dtx b/Master/texmf-dist/source/latex/expl3/l3precom.dtx
index 6b681f1610e..d5b39b0b12e 100644
--- a/Master/texmf-dist/source/latex/expl3/l3precom.dtx
+++ b/Master/texmf-dist/source/latex/expl3/l3precom.dtx
@@ -36,7 +36,7 @@
\RequirePackage{l3names}
%</driver|package>
%\fi
-\GetIdInfo$Id: l3precom.dtx 1362 2009-05-28 20:19:21Z joseph $
+\GetIdInfo$Id: l3precom.dtx 1453 2009-08-08 14:38:49Z joseph $
{L3 Experimental precompilation module}
%\iffalse
%<*driver>
@@ -297,15 +297,20 @@
% continues and a subsequent |\cs_dump:| command will then create the
% dump file.
% \begin{macrocode}
-\cs_new_nopar:Npn\cs_load_dump:n#1{
-\file_not_found:nTF{#1.cmp}
+\cs_new_nopar:Npn \cs_load_dump:n #1 {
+ \file_if_exist:nTF { #1 .cmp } {
+ \file_input:n { #1 .cmp }
+ \cs_set_eq:NN \cs_dump: \fi:
+ \if_false:
+ }{
%<*precompile>
-{\tl_gset:Nn\g_cs_dump_name_tl{#1.cmp}}
+ \tl_gset:Nn \g_cs_dump_name_tl { #1 .cmp }
%</precompile>
-%<-precompile> {\tex_errmessage:D{Cannot~ dump~ with~ this~ format}}
-{\input{#1.cmp}
-\cs_set_eq:NN\cs_dump:\fi:
-\if_false:}}
+%<*!precompile>
+ \tex_errmessage:D { Cannot~ dump~ with~ this~ format }
+%</!precompile>
+ }
+}
% \end{macrocode}
% \end{macro}
%
diff --git a/Master/texmf-dist/source/latex/expl3/l3prg.dtx b/Master/texmf-dist/source/latex/expl3/l3prg.dtx
index ca50697fd0f..295016f5acd 100644
--- a/Master/texmf-dist/source/latex/expl3/l3prg.dtx
+++ b/Master/texmf-dist/source/latex/expl3/l3prg.dtx
@@ -36,7 +36,7 @@
\RequirePackage{l3names}
%</driver|package>
%\fi
-\GetIdInfo$Id: l3prg.dtx 1365 2009-05-31 17:26:17Z mittelba $
+\GetIdInfo$Id: l3prg.dtx 1451 2009-08-08 06:33:34Z joseph $
{L3 Experimental control structures}
%\iffalse
%<*driver>
@@ -111,6 +111,8 @@
% \prg_set_protected_conditional:Npnn |
% \prg_new_protected_conditional:Nnn |
% \prg_new_protected_conditional:Npnn |
+% \prg_set_eq_conditional:NNn |
+% \prg_new_eq_conditional:NNn
% }
% \begin{syntax}
% "\prg_set_conditional:Nnn" <test> <conds> <code>
@@ -627,6 +629,32 @@
%</package>
%<*initex|package>
% \end{macrocode}
+%
+% \begin{macro}{\prg_return_true:}
+% \begin{macro}{\prg_return_false:}
+% \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:Nnn,
+% \prg_new_conditional:Nnn,
+% \prg_set_protected_conditional:Nnn,
+% \prg_new_protected_conditional:Nnn
+%}
+% \begin{macro}{
+% \prg_set_eq_conditional:NNn,
+% \prg_new_eq_conditional:NNn
+%}
+% These are all defined in \pkg{l3basics}, as they are needed ``early''.
+% This is just a reminder that that is the case!
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
%
% \subsection{Choosing modes}
%
diff --git a/Master/texmf-dist/source/latex/expl3/l3prop.dtx b/Master/texmf-dist/source/latex/expl3/l3prop.dtx
index f136108719d..86ac5508276 100644
--- a/Master/texmf-dist/source/latex/expl3/l3prop.dtx
+++ b/Master/texmf-dist/source/latex/expl3/l3prop.dtx
@@ -36,7 +36,7 @@
\RequirePackage{l3names}
%</driver|package>
%\fi
-\GetIdInfo$Id: l3prop.dtx 1420 2009-07-08 19:07:14Z joseph $
+\GetIdInfo$Id: l3prop.dtx 1506 2009-09-04 21:52:12Z joseph $
{L3 Experimental Property Lists}
%\iffalse
%<*driver>
@@ -100,6 +100,8 @@
% \begin{function}{%
% \prop_put:Nnn |
% \prop_put:NnV |
+% \prop_put:NVn |
+% \prop_put:NVV |
% \prop_put:cnn |
% \prop_gput:Nnn |
% \prop_gput:Nno |
@@ -542,6 +544,8 @@
%
% \begin{macro}{\prop_put:Nnn}
% \begin{macro}{\prop_put:NnV}
+% \begin{macro}{\prop_put:NVn}
+% \begin{macro}{\prop_put:NVV}
% \begin{macro}{\prop_put:cnn}
% \begin{macro}{\prop_gput:Nnn}
% \begin{macro}{\prop_gput:NnV}
@@ -582,7 +586,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\cs_generate_variant:Nn \prop_put:Nnn { NnV, cnn }
+\cs_generate_variant:Nn \prop_put:Nnn { NnV, NVn, NVV, cnn }
% \end{macrocode}
%
% \begin{macrocode}
@@ -598,6 +602,8 @@
% \end{macro}
% \end{macro}
% \end{macro}
+% \end{macro}
+% \end{macro}
%
% \begin{macro}{\prop_del:Nn}
% \begin{macro}{\prop_gdel:Nn}
diff --git a/Master/texmf-dist/source/latex/expl3/l3tl.dtx b/Master/texmf-dist/source/latex/expl3/l3tl.dtx
index 011f99fc26a..24d4ba86672 100644
--- a/Master/texmf-dist/source/latex/expl3/l3tl.dtx
+++ b/Master/texmf-dist/source/latex/expl3/l3tl.dtx
@@ -36,7 +36,7 @@
\RequirePackage{l3names}
%</driver|package>
%\fi
-\GetIdInfo$Id: l3tl.dtx 1421 2009-07-10 21:10:59Z joseph $
+\GetIdInfo$Id: l3tl.dtx 1505 2009-09-03 20:29:19Z joseph $
{L3 Experimental Token Lists}
%\iffalse
%<*driver>
@@ -693,16 +693,18 @@
% list and perform some tests on it.
%
% \begin{function}{%
-% \tl_head:n |
-% \tl_tail:n |
-% \tl_tail:f |
-% \tl_head_i:n |
-% \tl_head_iii:n |
-% \tl_head_iii:f |
-% \tl_head:w |
-% \tl_tail:w |
-% \tl_head_i:w |
-% \tl_head_iii:w
+% \tl_head:n / (EXP) |
+% \tl_head:V / (EXP) |
+% \tl_tail:n / (EXP) |
+% \tl_tail:V / (EXP) |
+% \tl_tail:f / (EXP) |
+% \tl_head_i:n / (EXP) |
+% \tl_head_iii:n / (EXP) |
+% \tl_head_iii:f / (EXP) |
+% \tl_head:w / (EXP) |
+% \tl_tail:w / (EXP) |
+% \tl_head_i:w / (EXP) |
+% \tl_head_iii:w / (EXP)
% }
% \begin{syntax}
% "\tl_head:n" "{" <token1><token2>...<token\,$\sb n$> "}" \\
@@ -2146,8 +2148,10 @@
% \subsection{Heads or tails?}
%
% \begin{macro}{\tl_head:n}
+% \begin{macro}{\tl_head:V}
% \begin{macro}{\tl_head_i:n}
% \begin{macro}{\tl_tail:n}
+% \begin{macro}{\tl_tail:V}
% \begin{macro}{\tl_tail:f}
% \begin{macro}{\tl_head_iii:n}
% \begin{macro}{\tl_head_iii:f}
@@ -2168,6 +2172,8 @@
\cs_new_eq:NN \tl_head_i:w \tl_head:w
\cs_new:Npn \tl_tail:w #1#2\q_nil{#2}
\cs_new:Npn \tl_head_iii:w #1#2#3#4\q_nil{#1#2#3}
+\cs_generate_variant:Nn \tl_head:n { V }
+\cs_generate_variant:Nn \tl_tail:n { V }
% \end{macrocode}
% \end{macro}
% \end{macro}
@@ -2179,6 +2185,8 @@
% \end{macro}
% \end{macro}
% \end{macro}
+% \end{macro}
+% \end{macro}
%
% \begin{macro}{\tl_if_head_eq_meaning_p:nN}
% \begin{macro}[TF]{\tl_if_head_eq_meaning:nN}
diff --git a/Master/texmf-dist/source/latex/expl3/l3vers.dtx b/Master/texmf-dist/source/latex/expl3/l3vers.dtx
index c61d07ce94c..9b00d45380b 100644
--- a/Master/texmf-dist/source/latex/expl3/l3vers.dtx
+++ b/Master/texmf-dist/source/latex/expl3/l3vers.dtx
@@ -35,7 +35,7 @@
\RequirePackage{l3names}
%</driver|package>
%\fi
-\GetIdInfo$Id: l3vers.dtx 1378 2009-06-01 19:15:56Z joseph $
+\GetIdInfo$Id: l3vers.dtx 1452 2009-08-08 14:09:32Z joseph $
{L3 Experimental LaTeX format version}
%\iffalse
%<*driver>
@@ -45,7 +45,7 @@
%\iffalse
\documentclass[full]{l3doc}
\begin{document}
-\DocInput{\filename.\filenameext}
+ \DocInput{l3vers.dtx}
\end{document}
%</driver>
% \fi
@@ -53,90 +53,45 @@
% \begin{documentation}
%
% \section{Version Identification}
-% Here we identify the date and version number of this release of
-% \LaTeX3, and set |\tex_everyjob:D| so that it is printed at the start of
-% every \LaTeX3 run.
+% Here we identify the date and version number of this release of
+% \LaTeX3, and set \cs{tex_everyjob:D} so that it is printed at the
+% start of every \LaTeX3 run. This is a very simple file.
%
-% \begin{variable}{\c_format_name|\c_format_date}
-% Name and date.
+% \begin{variable}{
+% \c_format_name|
+% \c_format_date
+%}
+% Name and date of the format.
% \end{variable}
%
-% \begin{variable}{\c_fmt_too_old}
-% Age in months past "\c_format_date" after which an error is called
-% during format generation.
-% \end{variable}
-%
-% \begin{function}{\chk_format_age:w}
-% Function that calculates the age of the format and calls an error if it
-% is too old.
-% \end{function}
-%
% \end{documentation}
%
% \begin{implementation}
%
-% \begin{macro}{\c_format_name}
-% \begin{macro}{\c_format_date}
+%\begin{macro}{\c_format_name}
+%\begin{macro}{\c_format_date}
+% Just the information required: remember to update it.
% \begin{macrocode}
%<*initex>
-\cs_set_nopar:Npn\c_format_name{Experimental~ LaTeX3}
-\cs_set_nopar:Npn\c_format_date{2009/06/01}
-%^^A\cs_set_nopar:Npx\c_format_version{--release--date--goes--here--}
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\c_fmt_too_old}
-% \begin{macro}{\chk_format_age:w}
-% Check that the format being made is not too old. While in development
-% it should be a rather small number.
-% \begin{macrocode}
-\int_const:Nn \c_fmt_too_old{12}
-\cs_set_nopar:Npn\chk_format_age:w #1/#2/#3\q_stop{
-% \end{macrocode}
-% We just calculate the age of this file in months and give a warning
-% if deemed too old.
-% \begin{macrocode}
- \intexpr_compare:nNnT{(\tex_year:D-#1)*12+\tex_month:D-#2}>\c_fmt_too_old
- {\iow_term:x{^^J
- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!^^J
- !~~You~are~attempting~to~make~an~experimental~LaTeX3~format~from^^J
- !~~source~files~that~are~more~than~
- \intexpr_eval:n{\c_fmt_too_old}~months~old.^^J
- !^^J
- !~~If~you~enter~<return>~to~scroll~past~this~message~then~the~format^^J
- !~~will~be~built,~but~please~consider~obtaining~newer~source~files^^J
- !~~before~continuing~to~build~an~experimental~LaTeX3~format.^^J
- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!^^J
- }
- \tex_errhelp:D{
- To~avoid~this~error~message,~obtain~new~Experimental~LaTeX3~sources.}
- \tex_errmessage:D{
- Experimental~LaTeX3~source~files~are~more~than~
- \intexpr_eval:n{\c_fmt_too_old}~months~old!}
- }
-}
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% Then we execute it.
-% \begin{macrocode}
-\exp_after:wN\chk_format_age:w\c_format_date\q_stop
-% \end{macrocode}
-% And since it's no longer needed we remove it again.
-% \begin{macrocode}
-\cs_gundefine:N \chk_format_age:w
+\tl_new:Nn \c_format_name { Experimental~LaTeX3 }
+\tl_new:Nn \c_format_date { 2009/08/08 }
% \end{macrocode}
+%\end{macro}
+%\end{macro}
%
% This startup banner may be further modified by the code in
-% |ltfinal.dtx| if a patch file is present.
+% \texttt{ltfinal.dtx} if a patch file is present.
% \begin{macrocode}
-\tex_everyjob:D{\iow_term:x{\c_format_name,~<\c_format_date>}}
-\iow_term:x{\c_format_name,~<\c_format_date>}
+\tex_everyjob:D {
+ \iow_term:x { \c_format_name , ~ < \c_format_date > }
+}
+\iow_term:x { \c_format_name , ~ < \c_format_date > }
%</initex>
% \end{macrocode}
%
% \end{implementation}
-% \PrintIndex
-%
-% \endinput
+%
+%\PrintIndex
+%
+%\endinput
+
diff --git a/Master/texmf-dist/source/latex/expl3/source3.tex b/Master/texmf-dist/source/latex/expl3/source3.tex
index 2fd332f5563..8a3459a1d60 100644
--- a/Master/texmf-dist/source/latex/expl3/source3.tex
+++ b/Master/texmf-dist/source/latex/expl3/source3.tex
@@ -225,6 +225,24 @@ Variables end with a short identifier to show the variable type:
\item[\texttt{toks}] Token register.
\end{description}
+\subsubsection{Terminological inexactitude}
+
+A word of warning. In this document, and others referring to the \pkg{expl3}
+programming modules, we often refer to `variables' and `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 mayn't 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 `function'
+with no arguments and a `token list variable' are in truth one and the same.
+On the other hand, some `variables' are actually registers that must be initialised and their values set and retreived with specific functions.
+
+The conventions of the \pkg{expl3} code are designed to clearly separate the
+ideas of `macros that contain data' and `macros that contain code', and a consistent wrapper is applied to all forms of `data' whether they be macros or actually registers.
+This means that sometimes we will use phrases like `the function returns a value', when actually we just mean `the macro expands to something'. Similarly, the term `execute' might be used in place of `expand' or it might refer to the more specific case of `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;
@@ -238,7 +256,7 @@ a ``user'' name, this might read:
\ExplSyntaxOff
}
\begin{syntax}
- "\ExplSyntaxOn"
+ "\ExplSyntaxOn" \dots\ "\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