From 2b8eb47b09b2d853b8243d0fb61b408edb3d04a7 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Sun, 6 Sep 2009 23:20:13 +0000 Subject: expl3 1509 (5sep09) git-svn-id: svn://tug.org/texlive/trunk@15163 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/source/latex/expl3/expl3.dtx | 33 +-- Master/texmf-dist/source/latex/expl3/l3.ins | 238 ++++++++++----------- Master/texmf-dist/source/latex/expl3/l3basics.dtx | 106 ++++----- Master/texmf-dist/source/latex/expl3/l3doc.dtx | 13 +- Master/texmf-dist/source/latex/expl3/l3expan.dtx | 15 +- Master/texmf-dist/source/latex/expl3/l3final.dtx | 70 ++++-- Master/texmf-dist/source/latex/expl3/l3format.ins | 151 ++++++------- Master/texmf-dist/source/latex/expl3/l3intexpr.dtx | 21 +- Master/texmf-dist/source/latex/expl3/l3keys.dtx | 87 +++++--- Master/texmf-dist/source/latex/expl3/l3msg.dtx | 8 +- Master/texmf-dist/source/latex/expl3/l3names.dtx | 39 ++-- Master/texmf-dist/source/latex/expl3/l3num.dtx | 7 +- Master/texmf-dist/source/latex/expl3/l3precom.dtx | 21 +- Master/texmf-dist/source/latex/expl3/l3prg.dtx | 30 ++- Master/texmf-dist/source/latex/expl3/l3prop.dtx | 10 +- Master/texmf-dist/source/latex/expl3/l3tl.dtx | 30 ++- Master/texmf-dist/source/latex/expl3/l3vers.dtx | 99 +++------ Master/texmf-dist/source/latex/expl3/source3.tex | 20 +- 18 files changed, 563 insertions(+), 435 deletions(-) (limited to 'Master/texmf-dist/source') 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} % %\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} % %\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} % % \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} % % @@ -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} % %\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" +% \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 @@ % %<*-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 % @@ -53,28 +53,72 @@ % %\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: % % \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} % %\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" +% "\keys_define:nn" \Arg{module} \Arg{keyval list} % \end{syntax} % Parses the and defines the keys listed there for % . This function is designed for use in code, and therefore @@ -271,10 +271,13 @@ % .initial:n = % \end{syntax} % Sets using the value given. This can only be given -% after the is created. +% after the is created. %\end{function} % -%\begin{function}{.meta:n} +%\begin{function}{ +% .meta:n| +% .meta:x +%} % \begin{syntax} % .meta:n = % \end{syntax} @@ -414,7 +417,7 @@ % \keys_set:nv %} % \begin{syntax} -% "\keys_set:nn" +% "\keys_set:nn" \Arg{module} \Arg{keyval list} % \end{syntax} % Parses the , and sets those keys which are defined % for . 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 exists for , by checking for the existence +% of the internal function \cs{keys > /.cmd:w}. +%\end{function} +% %\begin{function}{\keys_show:nn} % \begin{syntax} -% "\keys_show:nn" +% "\keys_show:nn" \Arg{module} \Arg{key} % \end{syntax} % Shows the internal representation of a . The function which % executes a is called \cs{keys > /.cmd:w}. @@ -480,14 +492,14 @@ % %\begin{function}{\keys_choices_generate:nx} % \begin{syntax} -% "\keys_choices_generate:nx" +% "\keys_choices_generate:nx" \Arg{comma list} \Arg{code} % \end{syntax} % Makes choices for , each using . %\end{function} % %\begin{function}{\keys_choice_find:n} % \begin{syntax} -% "\keys_choice_find:n" +% "\keys_choice_find:n" \Arg{choice} % \end{syntax} % Searches for as a sub-key of . %\end{function} @@ -497,7 +509,7 @@ % \keys_cmd_set:nNx %} % \begin{syntax} -% "\keys_cmd_set:nNn" +% "\keys_cmd_set:nNn" \Arg{path} \Arg{code} % \end{syntax} % Creates a function for , taking and using . %\end{function} @@ -507,7 +519,7 @@ % \keys_default_set:V %} % \begin{syntax} -% "\keys_default_set:n" +% "\keys_default_set:n" \Arg{default} % \end{syntax} % Sets for . %\end{function} @@ -517,14 +529,14 @@ % \keys_define_elt:nn %} % \begin{syntax} -% "\keys_define_elt:n" +% "\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" +% "\keys_define_key:n" \Arg{key} % \end{syntax} % Defines . %\end{function} @@ -545,8 +557,8 @@ % %\begin{function}{\keys_if_value_requirement:nTF} % \begin{syntax} -% "\keys_if_value_requirement:nTF" -% ~~~~ +% "\keys_if_value_requirement:nTF" \Arg{requirement} +% ~~~~\Arg{true code} \Arg{false code} % \end{syntax} % Check if applies to . %\end{function} @@ -556,35 +568,38 @@ % \keys_initial_value:V %} % \begin{syntax} -% "\keys_initial_value:n" +% "\keys_initial_value:n" \Arg{value} % \end{syntax} % Sets as initial contents for . %\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_meta_make:n" \Arg{keys} % \end{syntax} % Makes a meta-key to set . %\end{function} % %\begin{function}{\keys_property_find:n} % \begin{syntax} -% "\keys_property_find:n" +% "\keys_property_find:n" \Arg{key} % \end{syntax} % Separates from . %\end{function} % %\begin{function}{\keys_property_new:nn} % \begin{syntax} -% "\keys_property_new:nn" +% "\keys_property_new:nn" \Arg{property} \Arg{code} % \end{syntax} % Makes a new expanding to %\end{function} % %\begin{function}{\keys_property_undefine:n} % \begin{syntax} -% "\keys_property_undefine:n" +% "\keys_property_undefine:n" \Arg{property} % \end{syntax} % Deletes of . %\end{function} @@ -594,7 +609,7 @@ % \keys_set_elt:nn %} % \begin{syntax} -% "\keys_set_elt:n" +% "\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" +% "\keys_value_or_default:n" \Arg{value} % \end{syntax} % Sets \cs{l_keys_value_toks} to , or if % was not given and if is available. @@ -616,7 +631,7 @@ % %\begin{function}{\keys_value_requirement:n} % \begin{syntax} -% "\keys_value_requirement:nn" +% "\keys_value_requirement:n" \Arg{requirement} % \end{syntax} % Sets to have concerning . %\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} % %\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 % %\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} % %\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 % % \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 +} % % \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} % %\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} % %\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> {\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 } +% + } +} % \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} % %\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" @@ -627,6 +629,32 @@ % %<*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} % %\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} % %\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" "{" ... "}" \\ @@ -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} % %\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} % % \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~~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 > } % % \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 -- cgit v1.2.3